{"version":3,"file":"static/js/main.9ac06cfc.js","mappings":"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CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAIN0pK,IAAK,CACHX,IAAK,EACL/oK,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,0FAAA5X,EAAAC,EAAA2B,GCvwBR,aAEA,IAAIE,EAAQF,EACR1B,EAAKF,EAAQ,SACbe,EAAYf,EAAQ,uBACpBM,EAAWN,EAAQ,6BAEvB8B,EAAMy9K,OAASx+K,EACfe,EAAMs5J,QAAU96J,EAAS86J,QACzBt5J,EAAM2lL,MAAQnnL,EAASmnL,MACvB3lL,EAAM+xD,MAAQvzD,EAASuzD,MACvB/xD,EAAMyiI,OAASjkI,EAASikI,OA6BxBziI,EAAMu9K,OA1BN,SAAgBr/K,EAAKC,EAAG2B,G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AAytK,EAAA4pJ,EAAAhkV,OAAAo6L,IAGjB,IAHG,IAAM7iH,EAAIysQ,EAAA5pJ,GAGKC,EAAA,EAAA4pJ,EAFL7hV,MAAMC,QAAQk1E,GAAQA,EAAOj4E,OAAOC,KAAKg4E,GAEpC8iH,EAAA4pJ,EAAAjkV,OAAAq6L,IAAM,CACtB/7K,EADY2lU,EAAA5pJ,IACE,EAIlB,OAAO/7K,CACT,EAOa4lU,GAAoBH,GAAY,CAC3C,SACA,QACA,UACA,mBACA,qBACA,sBACA,UACA,iBACA,SACA,gBACA,WACA,UACA,WACA,SACA,UACA,YACA,mBACA,aACA,UACA,UACA,YACA,mBACA,mBACA,YACA,cACA,UACA,eACA,mBACA,cACA,UACA,SACA,YACA,aACA,eACA,WACA,YACA,YACA,YACA,eACA,iBACA,YACA,UACA,iBACA,gBACA,gBACA,SACA,YACA,cACA,aACA,cACA,aACA,cACA,SACA,cACA,qBACA,eACA,eACA,cACA,aACA,cACA,YACA,mBACA,WACA,gBACA,aACA,cACA,eACA,WACA,UACA,kBACA,gBACA,iBACA,iBACA,gBACA,eACA,gBACA,cACA,sBACA,yBAQWI,GAAwBJ,GAAY,CAC/C,YACA,WACA,YACA,kBACA,MACA,YACA,SACA,UACA,KACA,OACA,MACA,OACA,QACA,WACA,QACA,YACA,aACA,SAQWK,GAAwBL,GAAYI,GAAuBD,IAO3DG,GAAkBN,GAAYK,GAAuB,CAChE,SAQWE,GAAkBP,GAAYK,GAAuB,CAChE,SACA,OACA,QACA,UACA,MACA,UAQWG,GAAkBR,GAAYO,GAAiB,CAC1D,WAQWE,GAAeT,GAAYK,GAAuB,CAC7D,UAQWK,GAAeV,GAAYK,GAAuB,CAC7D,UAQWM,GAAmBX,GAAYK,GAAuB,CACjE,WACA,OACA,WACA,QACA,MACA,SACA,SAQWO,GAAmBZ,GAAYK,GAAuB,CACjE,YACA,WACA,OACA,aACA,cACA,aACA,iBACA,aACA,OACA,UAQWQ,GAAkBb,GAAYY,GAAkB,CAC3D,SACA,MACA,iBACA,eACA,UACA,UACA,OACA,SACA,YACA,OACA,MACA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CvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO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CtD/mf,KAAKknf,SAASppf,OAAS,GACvBkC,KAAKknf,SAASlnf,KAAKknf,SAASppf,OAAS,GAAGqG,UAAU0C,OAAOq+e,IAEjE,EACA73L,GAAW,CACP63K,GAAS,SACVshB,EAASjof,UAAW,cAAU,GACjC8uT,GAAW,CACP63K,IAAS,IACVshB,EAASjof,UAAW,0BAAsB,GAC7C8uT,GAAW,CACP63K,GAAS,SACVshB,EAASjof,UAAW,aAAS,GAChC8uT,GAAW,CACP63K,IAAS,IACVshB,EAASjof,UAAW,yBAAqB,GAC5C8uT,GAAW,CACPi4K,GAAW,GAAIihB,KAChBC,EAASjof,UAAW,oBAAgB,GACvC8uT,GAAW,CACP63K,GAAS,eACVshB,EAASjof,UAAW,mBAAe,GACtC8uT,GAAW,CACP63K,GAAS,KACVshB,EAASjof,UAAW,gBAAY,GACnC8uT,GAAW,CACP63K,IAAS,IACVshB,EAASjof,UAAW,eAAW,GAClC8uT,GAAW,CACP63K,IAAS,IACVshB,EAASjof,UAAW,2BAAuB,GAC9C8uT,GAAW,CACP63K,GAAS,OACVshB,EAASjof,UAAW,qBAAiB,GACxC8uT,GAAW,CACPv0P,MACD0tb,EAASjof,UAAW,0BAAsB,GAC7C8uT,GAAW,CACPv0P,MACD0tb,EAASjof,UAAW,eAAW,GAClC8uT,GAAW,CACPv0P,MACD0tb,EAASjof,UAAW,mBAAe,GACtC8uT,GAAW,CACPv0P,MACD0tb,EAASjof,UAAW,gBAAY,GACnC8uT,GAAW,CACPv0P,MACD0tb,EAASjof,UAAW,kBAAc,GACrC8uT,GAAW,CACPv0P,MACD0tb,EAASjof,UAAW,sBAAkB,GACzC8uT,GAAW,CACPv0P,MACD0tb,EAASjof,UAAW,oBAAgB,GACvC8uT,GAAW,CACPv0P,MACD0tb,EAASjof,UAAW,iBAAa,GACpC8uT,GAAW,CACPv0P,MACD0tb,EAASjof,UAAW,gBAAY,GACnCiof,EAAWn5L,GAAW,CAClBq4K,IACD8gB,EAEP,CAptE8B,CAotE5B9kO,ICn0EExgC,GAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAA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IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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31B,IAAS451B,GAG9D141B,KAAKormB,WAAW,QAAS,IAAIpzlB,KAAKhY,KAAKk21B,WAAWp31B,IAAS451B,GAGvE,EACAj8Z,EAAal+b,UAAUs61B,cAAgB,WACnC741B,KAAK+01B,iBAAmB10X,GAAOrge,KAAK+01B,iBACpC/01B,KAAKm31B,kBAAoB92X,GAAOrge,KAAKm31B,kBACrCn31B,KAAK8oH,OAASu3W,GAAOrge,KAAK8oH,OAC1B9oH,KAAK031B,kBAAoBr3X,GAAOrge,KAAK031B,kBACrC131B,KAAKy21B,UAAYp2X,GAAOrge,KAAKy21B,UAC7Bz21B,KAAKw21B,cAAgBn2X,GAAOrge,KAAKw21B,cACjCx21B,KAAKihG,QAAUo/X,GAAOrge,KAAKihG,QAC3BjhG,KAAKk41B,aAAe,KACpBl41B,KAAK841B,kBAAoB,KACzB941B,KAAK+01B,gBAAkB/01B,KAAKm31B,iBAAmBn31B,KAAKihG,OAASjhG,KAAK031B,iBAC9D131B,KAAKy21B,SAAWz21B,KAAKw21B,aAAex21B,KAAK8oH,MAAQ,IACzD,EACA2zU,EAAal+b,UAAUg61B,gBAAkB,SAAUr71B,EAAG4B,EAAOi61B,GACzD,IACIppa,EADAuna,EAAcl31B,KAAKm31B,iBAAiBhi1B,cAAc,wBAO9Cw6a,EALJopa,EACK/nrB,GAAkBkmrB,KAAiBp41B,IAAUmC,SAASi21B,EAAY9m1B,aAAa,MAAMpP,MAAM,KAAK,GAAI,IAItFhB,KAAKm31B,iBAAiBhi1B,cAAc,oBAHpC+h1B,EAOJl31B,KAAKm31B,iBAAiBhi1B,cAAc,oBAEvD,IAAIgoE,EAAOn9E,KAAK441B,cAAc541B,KAAK241B,eAC/BK,EAAah51B,KAAK441B,cAAc541B,KAAKmgM,OACrC84pB,EAAiB97wB,IAAS67wB,GAAch51B,KAAK441B,cAAc541B,KAAKguB,QAAUgr0B,EAE9E,OADAh51B,KAAK4pqB,OAAS,GACN1sqB,EAAE8kN,QACN,IAAK,WAC2B,mBAAxBhiN,KAAKgje,kBAAyChyT,GAAkB9zK,EAAEilB,SAAWjlB,EAAEi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GLn91B,KAAKm61B,cAAciD,sBAEnBjgxB,IAASn9E,KAAK441B,cAAc541B,KAAK241B,gBAA4B,IAATx7wB,GAAcA,IAASn9E,KAAK441B,cAAc541B,KAAK241B,iBACnG341B,KAAK451B,gBAAgB181B,GAEzB8C,KAAKq91B,yBACT,EACA5ga,EAAal+b,UAAUsyf,aAAe,SAAU3zf,EAAG4B,GAC/CkB,KAAKs91B,kBAAkBpg2B,GACvB,IAAI2/pB,EAAM3/pB,EAAEkjS,cACRjjN,EAAOn9E,KAAK441B,cAAc541B,KAAK241B,eAC/B97L,EAAI14pB,UAAUC,SAASkv1B,IACvBtz1B,KAAKs51B,aAAap81B,EAAG,EAAG,KAAM4B,GAEzBq+E,IAASn9E,KAAK441B,cAAc541B,KAAKmgM,QAAUngM,KAAK441B,cAAc541B,KAAKguB,QAAUhuB,KAAK441B,cAAc541B,KAAKmgM,QAGrG,IAAMhjH,EAFXn9E,KAAKs51B,aAAap81B,EAAG,EAAG,KAAM4B,GAKxB+9pB,EAAI14pB,UAAUC,SAASkv1B,KAAwB,IAATn2wB,EAI5Cn9E,KAAKs51B,aAAap81B,EAAG,EAAG2/pB,EAAK/9pB,GAH7BkB,KAAKq51B,WAAWn81B,EAAG8C,KAAKu91B,WAAWrg2B,EAAG,MAAO,MAKpB,aAAzB8C,KAAKgje,iBACLhje,KAAK8oH,MAAM8lJ,OAEnB,EAEA6tL,EAAal+b,UAAU++1B,kBAAoB,SAAUpg2B,GACjDA,EAAEijE,gBACN,EAEAs8X,EAAal+b,UAAU+61B,aAAe,SAAUp81B,EAAGigF,EAAM1jB,EAAS36D,GAC9D,IAAI651B,EAAc341B,KAAK441B,cAAc541B,KAAK241B,eACtCn51B,EAAIQ,KAAKu91B,WAAWrg2B,EAAGu8D,GAC3B,OAAQ0jB,GACJ,KAAK,EACGw7wB,IAAgB341B,KAAK441B,cAAc541B,KAAKmgM,QAAUngM,KAAK441B,cAAc541B,KAAKguB,QAAUhuB,KAAK441B,cAAc541B,KAAKmgM,QAC5GkgS,GAAOrge,KAAKm31B,kBACZn31B,KAAK+qD,YAAcvrD,EACnBQ,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,KAAK491B,eAAe7E,EAAgBhnzB,IAEX,eAAzB/xC,KAAKgje,iBAGAhje,KAAK+01B,kBAFV/01B,KAAK621B,qBAKJ721B,KAAK801B,UAAY901B,KAAKqK,KAAOrK,KAAK6E,IAAM7E,KAAK801B,YAAe901B,KAAKihG,QAAYjhG,KAAKk41B,cACnF73X,GAAOrge,KAAKk41B,cACZ73X,GAAOrge,KAAKihG,QACZjhG,KAAKk41B,aAAel41B,KAAKihG,OAAS,KAClCjhG,KAAK+21B,uBAGA/21B,KAAKihG,QAAYjhG,KAAKk41B,cAAiBl41B,KAAKk41B,aAAa/z1B,UAAUC,SAAS,gBAC7EsuD,GAAY,CAAC1yD,KAAKk41B,cAAezyW,IACjCplB,GAAOrge,KAAKk41B,cACZ73X,GAAOrge,KAAKihG,QACZjhG,KAAKk41B,aAAel41B,KAAKihG,OAAS,KAClCjhG,KAAK+21B,uBAGb,MACJ,IAAK,QACL,IAAK,QACL,IAAK,aACL,IAAK,iBACL,IAAK,WACD/21B,KAAK691B,aACwB,eAAzB791B,KAAKgje,iBAIAhje,KAAK+01B,mBAHV/01B,KAAK421B,sBACL521B,KAAK621B,qBAMT,MACJ,IAAK,SAUD,GATA721B,KAAKy1wB,UAAY,IAAIxgT,GAAqBj1d,KAAKwY,SAClB,eAAzBxY,KAAKgje,iBAIAhje,KAAK+01B,mBAHV/01B,KAAK421B,sBACL521B,KAAK621B,qBAMoB,aAAzB721B,KAAKgje,gBAAgC,CAErChje,KAAKm41B,IAAM,IAAI78W,GAAKt7e,KAAKgje,gBADR,CAAErrO,MAAO,SAC4B33P,KAAKwY,OAC/D,CACAxY,KAAKm41B,IAAI9zxB,UAAUrkE,KAAKwY,QACpBxY,KAAK821B,iBACL921B,KAAKi41B,eAET,MACJ,IAAK,kBACGrwX,EAAQkvX,gBACR921B,KAAK+21B,sBAGA/lrB,GAAkBhxK,KAAKk41B,eAAkBlnrB,GAAkBhxK,KAAKihG,UACjEo/X,GAAOrge,KAAKk41B,cACZ73X,GAAOrge,KAAKihG,QACZjhG,KAAKk41B,aAAel41B,KAAKihG,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ACAtia,EAAal+b,UAAU+51B,cAAgB,SAAUp71B,GAC7CA,EAAEijE,iBACFngE,KAAKsgB,MAAMpjB,GACkB,aAAzB8C,KAAKgje,iBACLhje,KAAK8oH,MAAM8lJ,OAEnB,EACA6tL,EAAal+b,UAAU22E,SAAW,WAC9Bl1E,KAAK4pqB,OAAS,GACd,IAAI+uL,EAAc341B,KAAK441B,cAAc541B,KAAK241B,eAC1C,OAAQ341B,KAAK241B,eACT,IAAK,QACD341B,KAAKwnb,UAAUxnb,KAAK+qD,aAAc,GAClC/qD,KAAK291B,WAAWhF,GAChB,MACJ,IAAK,OACD341B,KAAK0nb,SAAS1nb,KAAK+qD,aAAc,GACjC/qD,KAAK291B,WAAWhF,GAChB,MACJ,IAAK,SACD341B,KAAK0nb,SAAS1nb,KAAK+qD,aAAc,IACjC/qD,KAAK291B,WAAWhF,GAG5B,EACAl8Z,EAAal+b,UAAU461B,iBAAmB,SAAUj81B,IAC/Cgge,GAAQK,UAAYrge,EAAEijE,iBACG,cAAtBngE,KAAK401B,aACL501B,KAAKk1E,WAGLl1E,KAAKm61B,cAAc6E,kBAEvBh/1B,KAAK651B,gBAAgB381B,GACQ,aAAzB8C,KAAKgje,iBACLhje,KAAK8oH,MAAM8lJ,OAEnB,EACA6tL,EAAal+b,UAAU6B,KAAO,WAC1BJ,KAAK4pqB,OAAS,GACd,IAAI+uL,EAAc341B,KAAK441B,cAAc541B,KAAK241B,eAC1C,OAAQ341B,KAAK241B,eACT,IAAK,QACD341B,KAAKwnb,UAAUxnb,KAAK+qD,YAAa,GACjC/qD,KAAK291B,WAAWhF,GAChB,MACJ,IAAK,OACD341B,KAAK0nb,SAAS1nb,KAAK+qD,YAAa,GAChC/qD,KAAK291B,WAAWhF,GAChB,MACJ,IAAK,SACD341B,KAAK0nb,SAAS1nb,KAAK+qD,YAAa,IAChC/qD,KAAK291B,WAAWhF,GAG5B,EACAl8Z,EAAal+b,UAAU661B,aAAe,SAAUv8L,IAC3C3/L,GAAQK,UAAYs/L,EAAI18lB,iBACC,cAAtBngE,KAAK401B,aACL501B,KAAKI,OAGLJ,KAAKm61B,cAAc8E,cAEvBj/1B,KAAK651B,gBAAgBh9L,GACQ,aAAzB78pB,KAAKgje,iBACLhje,KAAK8oH,MAAM8lJ,OAEnB,EASA6tL,EAAal+b,UAAU6smB,WAAa,SAAUjuhB,EAAM1wB,EAAMisyB,IACjDjsyB,IAASzsD,KAAKqK,MAAQoiD,IAASzsD,KAAK6E,MACrC7E,KAAK+qD,YAAc0B,IAElBA,IAASzsD,KAAKqK,MACfrK,KAAK+qD,YAAc,IAAI/yC,KAAKhY,KAAKk21B,WAAWl21B,KAAKqK,QAEhDoiD,IAASzsD,KAAK6E,MACf7E,KAAK+qD,YAAc,IAAI/yC,KAAKhY,KAAKk21B,WAAWl21B,KAAK6E,OAEhD7E,KAAK441B,cAAc541B,KAAKmgM,QAAUngM,KAAK441B,cAAcz7wB,KACjDn9E,KAAK441B,cAAc541B,KAAKmgM,QAAUngM,KAAK441B,cAAc541B,KAAKguB,QACxDhuB,KAAK441B,cAAc541B,KAAKmgM,SAAWngM,KAAK441B,cAAcz7wB,MACzDA,EAAOn9E,KAAKmgM,OAGpBngM,KAAK291B,WAAW391B,KAAK441B,cAAcz7wB,GAAO,KAAM,KAAMu7wB,EAC1D,EAOAj8Z,EAAal+b,UAAUo61B,YAAc,WACjC,OAAK3nrB,GAAkBhxK,KAAK6yxB,iBAAmB7yxB,KAAK6yxB,eAAe1uxB,UAAUC,SAAS89N,IAC3E,QAEDlxD,GAAkBhxK,KAAK6yxB,iBAAmB7yxB,KAAK6yxB,eAAe1uxB,UAAUC,SAASqv1B,IAChF,SAGA,OAEf,EAEAh3Z,EAAal+b,UAAU+81B,WAAa,SAAU7uyB,EAAM3tD,GAChD,OAASkyK,GAAkBlyK,IAAU2tD,EAAKvzC,YAAepa,EAAOoa,WACzDuzC,EAAKzzC,aAAgBla,EAAOka,YAAcyzC,EAAK3zC,gBAAmBha,EAAOga,aACpF,EAEA2jb,EAAal+b,UAAUi51B,kBAAoB,SAAU93jB,EAAIpgS,GACrD,IAAI4/1B,EAAkB,0CAA4Cl/1B,KAAKu31B,gBAAgB9y1B,cACnF061B,EAAgB,wCAA0Cn/1B,KAAKu31B,gBAAgB9y1B,cAEnF,MAA0B,cAAtBzE,KAAK401B,aACE7moB,GAFG,QAEqB/tN,KAAKwY,OAAS0m1B,EAAiBx/jB,GAGvD3xE,GAAS,QAAe/tN,KAAKwY,OAAS2m1B,EAAez/jB,EAEpE,EACA+8J,EAAal+b,UAAUs81B,QAAU,SAAUr71B,GACvC,IAAIurD,EAAc,IAAI/yC,KAAKhY,KAAKk21B,WAAW121B,IAAIM,UAC3C2sD,EAAO,IAAIz0C,KAAKxY,EAAEsZ,cAAe,EAAG,GAAGhZ,UAC3C,OAAOoB,KAAK4hC,MAAQioB,EAAc0B,EAAQ4nyB,IAAmBA,GAAmB,EACpF,EACA53Z,EAAal+b,UAAUkkxB,aAAe,SAAUh2tB,EAAMg8D,GAClD,IAAI22uB,EAAW3yyB,EAAK7yC,oBAChBpa,EAAI,IAAIwY,KAAKy0C,EAAKp0C,UAAYowG,GAC9B42uB,EAAe7/1B,EAAEoa,oBAAsBwl1B,EAC3C3yyB,EAAK8mL,QAAQ/zO,EAAE6Y,UApnDG,IAonDSgn1B,EAC/B,EACA5ia,EAAal+b,UAAUipb,UAAY,SAAU/6X,EAAMtvD,GAC/C,GAA0B,cAAtB6C,KAAK401B,aAA8B,CACnC,IAAIxp0B,EAAMqhC,EAAKvzC,UACfuzC,EAAK7nB,QAAQ,GACb6nB,EAAK03K,SAAS13K,EAAKzzC,WAAa7b,GAChCsvD,EAAK7nB,QAAQ1jC,KAAKmJ,IAAI+gB,EAAKprB,KAAKs/1B,WAAW7yyB,IAC/C,KACK,CACD,IAAIgxyB,EAAcz91B,KAAKm61B,cAAcuD,eAAejxyB,GACpDzsD,KAAK+qD,YAAc/qD,KAAKm61B,cAAcv7oB,YAAY6+oB,EAAYvy0B,KAAOuy0B,EAAYty0B,MAAShuB,EAAG,EACjG,CACJ,EACAs/b,EAAal+b,UAAUmpb,SAAW,SAAUj7X,EAAMtvD,GAC9C,GAA0B,cAAtB6C,KAAK401B,aAA8B,CACnC,IAAIxp0B,EAAMqhC,EAAKvzC,UACfuzC,EAAK7nB,QAAQ,GACb6nB,EAAK44K,YAAY54K,EAAK3zC,cAAgB3b,GACtCsvD,EAAK7nB,QAAQ1jC,KAAKmJ,IAAI+gB,EAAKprB,KAAKs/1B,WAAW7yyB,IAC/C,KACK,CACD,IAAIgxyB,EAAcz91B,KAAKm61B,cAAcuD,eAAejxyB,GACpDzsD,KAAK+qD,YAAc/qD,KAAKm61B,cAAcv7oB,YAAY6+oB,EAAYvy0B,KAAO/tB,EAAIsg2B,EAAYty0B,MAAQ,EACjG,CACJ,EACAsxa,EAAal+b,UAAUg/1B,WAAa,SAAUrg2B,EAAGu8D,GAC7C,IAAIojmB,EAEAA,EADA3/pB,EACMA,EAAEkjS,cAGF3mO,EAEV,IACIqhyB,EAAoB,CAAEr01B,KAAM,WAAYyid,SAAU,OAAQttP,SAD5B,cAAtB57N,KAAK401B,aAAgC,YAAc,WAG3DhoyB,EAAa5sD,KAAKy1wB,UAAU17vB,WAAW,IAAI/B,KAAK/W,SAAS,GAAK47pB,EAAIzspB,aAAa,MAAO,IAAK0q1B,GAC3FruyB,EAAOzsD,KAAKy1wB,UAAU19vB,UAAU60C,EAAYkuyB,GAC5Ch81B,EAAQ2tD,EAAK3sD,UAAY2sD,EAAK3sD,UAAY,IAC9C,OAAO,IAAIkY,KAAKlZ,EAEpB,EACA29b,EAAal+b,UAAUo41B,qBAAuB,WAC1CjkyB,GAAY,CAAC1yD,KAAKy5D,SAAU26xB,IACC,SAAzBp01B,KAAKu31B,iBACL9kyB,GAAS,CAA0B,aAAzBzyD,KAAKgje,gBAAiChje,KAAKy5D,QAAUz5D,KAAK+01B,iBAAkBX,GAE9F,EACA33Z,EAAal+b,UAAU861B,WAAa,SAAUn81B,EAAGuvD,EAAMrkD,EAAM2w1B,EAAgBhnzB,GACzE,IAAI0nB,EAAUrxD,GAAQlL,EAAEkjS,cAExB,GADApgS,KAAKu01B,gBAAiB,EACK,WAAvBv01B,KAAK241B,cACL341B,KAAKu/1B,cAAcv/1B,KAAK+qD,YAAa0B,EAAK3zC,oBAEzC,GAA2B,SAAvB9Y,KAAK241B,cACV341B,KAAKw/1B,YAAYx/1B,KAAK+qD,YAAa0B,OAElC,CACD,GAAIssyB,IAAmB/41B,KAAKy/1B,iBAAiBhzyB,EAAM1a,GAAS,CACxD,IAAIwpzB,EAAav71B,KAAKu71B,WAAWxpzB,IAC5Bi/H,GAAkBj/H,IAAWwpzB,EAAWz91B,OAAS,GAClDy91B,EAAW591B,KAAK,IAAIqa,KAAKhY,KAAKk21B,WAAWzpyB,KACzCzsD,KAAKiie,cAAc,CAAElwb,OAAQwpzB,IAAc,GAC3Cv71B,KAAKiie,cAAc,CAAEnje,MAAOizC,EAAOA,EAAOj0C,OAAS,KAAM,IAGzDkC,KAAKiie,cAAc,CAAElwb,OAAQ,CAAC,IAAI/5B,KAAKhY,KAAKk21B,WAAWzpyB,OAAW,EAE1E,MAEIzsD,KAAKiie,cAAc,CAAEnje,MAAO,IAAIkZ,KAAKhY,KAAKk21B,WAAWzpyB,MAAU,GAEnEzsD,KAAK+qD,YAAc,IAAI/yC,KAAKhY,KAAKk21B,WAAWzpyB,GAChD,CACA,IAAI0qyB,EAAmBr2X,GAAQrna,EAAS,IAAMgrb,IAU9C,GATIzzU,GAAkBmmrB,KAClBA,EAAmBn31B,KAAKm31B,kBAEvB4B,GAAmB/nrB,GAAkBmmrB,EAAiBhi1B,cAAc,IAAMy+0B,MAC3ElhyB,GAAY,CAACykyB,EAAiBhi1B,cAAc,IAAMy+0B,KAAYA,IAE7DmF,GAAmB/nrB,GAAkBmmrB,EAAiBhi1B,cAAc,IAAM0+0B,MAC3EnhyB,GAAY,CAACykyB,EAAiBhi1B,cAAc,IAAM0+0B,KAAeA,IAEjEkF,EAAgB,CACZwC,EAAav71B,KAAKu71B,WAAWxpzB,GAEjC,IAFA,IACIk8D,EAAa/tG,MAAM3B,UAAUqC,MAAMb,KAAKC,KAAKm31B,iBAAiB1p0B,iBAAiB,OAC1Ed,EAAQ,EAAGA,EAAQshF,EAAWnwG,OAAQ6uB,IAAS,CACpD,IAAI22d,EAAc6zW,EAAiB1p0B,iBAAiB,MAAaom0B,IAAa,GAC1E12L,EAAkBg6L,EAAiB1p0B,iBAAiB,MAAamm0B,IAAU,GAC3E3lvB,EAAWthF,KAAW22d,GACtB5wb,GAAY,CAACu7C,EAAWthF,IAASkn0B,IAEjC5lvB,EAAWthF,KAAWwwoB,GACrBn9pB,KAAKy/1B,iBAAiB,IAAIzn1B,KAAK/W,SAASk8pB,EAAgB/spB,aAAa,MAAMpP,MAAM,KAAK,GAAI,KAAM+wC,IACjG2gB,GAAY,CAACu7C,EAAWthF,IAASin0B,GAEzC,CACA,GAAIn6xB,EAAQt1D,UAAUC,SAASwv1B,IAAW,CACtClhyB,GAAY,CAAC+G,GAAUm6xB,IACvB,IAAK,IAAIz21B,EAAI,EAAGA,EAAIo+1B,EAAWz91B,OAAQX,IAAK,CACxC,IACIwrd,EAAgB,CAAExtc,OAAQ,KAAM1U,KAAM,OAAQyid,SAAU,QAASttP,SADnC,cAAtB57N,KAAK401B,aAAgC,YAAc,WAI/D,GAFsB501B,KAAKy1wB,UAAU17vB,WAAW0yC,EAAMk8Z,KACjC3od,KAAKy1wB,UAAU17vB,WAAWwh1B,EAAWp+1B,GAAIwrd,GACtB,CAChCh8b,EAAQ4u0B,EAAW721B,QAAQ621B,EAAWp+1B,IAC1Co+1B,EAAWt31B,OAAO0oB,EAAO,GACzB8lC,GAAS,CAACgH,GAAUo6xB,GACxB,CACJ,CACA7z1B,KAAKiie,cAAc,CAAElwb,OAAQwpzB,IAAc,EAC/C,MAEI9oyB,GAAS,CAACgH,GAAUm6xB,GAE5B,MAEInhyB,GAAS,CAACgH,GAAUm6xB,IAExB5z1B,KAAKu01B,gBAAiB,CAC1B,EACA93Z,EAAal+b,UAAUkh2B,iBAAmB,SAAU5inB,EAAO9qM,GACvD,IAAI0+X,GAAgB,EACpB,IAAKz/P,GAAkBj/H,GACnB,IAAK,IAAI2tzB,EAAgB,EAAGA,EAAgB3tzB,EAAOj0C,OAAQ4h2B,IAAiB,CACxE,IAAIj51B,EAA8B,cAAtBzG,KAAK401B,aAAgC,YAAc,UACzC501B,KAAKy1wB,UAAU17vB,WAAW8iO,EAAO,CACnD1hO,OAAQ,KAAM1U,KAAM,OAAQyid,SAAU,QAASttP,SAAUn1N,MAExCzG,KAAKy1wB,UAAU17vB,WAAWg4B,EAAO2tzB,GAAgB,CAClEvk1B,OAAQ,KAAM1U,KAAM,OAAQyid,SAAU,QAASttP,SAAUn1N,MAGzDgqa,GAAgB,EAExB,CAEJ,OAAOA,CACX,EACAgsB,EAAal+b,UAAU8+1B,wBAA0B,WAC7ChmyB,GAAWr3D,KAAK8oH,MAAO,CACnB,wBAAyB,GAAK9oH,KAAKu+1B,uBAE3C,EACA9ha,EAAal+b,UAAUkg2B,oBAAsB,SAAUzpkB,GAC/CA,EACKhkH,GAAkBhxK,KAAKw21B,gBACxB93X,GAAa73d,OAAO7G,KAAKw21B,aAAc,QAASx21B,KAAK051B,yBACrDjnyB,GAAS,CAACzyD,KAAKw21B,cAAe,GAAK/wW,IACnChzb,GAAS,CAACzyD,KAAKw21B,cAAe,GAAK9C,IACnC1z1B,KAAKw21B,aAAa5t1B,aAAa,gBAAiB,UAIpD81d,GAAa53d,IAAI9G,KAAKw21B,aAAc,QAASx21B,KAAK051B,yBAClDhnyB,GAAY,CAAC1yD,KAAKw21B,cAAe,GAAK/wW,IACtC/yb,GAAY,CAAC1yD,KAAKw21B,cAAe,GAAK9C,IACtC1z1B,KAAKw21B,aAAa5t1B,aAAa,gBAAiB,SAExD,EACA6zb,EAAal+b,UAAU281B,mBAAqB,SAAU9vxB,GAClD1pE,GAAO1B,KAAK841B,kBAAmB,CAAEj41B,KAAM,kBACvCb,KAAKo/d,QAAQ,gBAAiBh0Z,EAClC,EACAqxX,EAAal+b,UAAUoh2B,eAAiB,SAAU9iM,GAC9Cn7pB,GAAO1B,KAAK4/1B,cAAe,CAAE/+1B,KAAM,YAAaq4D,MAAO2jmB,IACvD78pB,KAAKo/d,QAAQ,YAAap/d,KAAK4/1B,cACnC,EACAnja,EAAal+b,UAAUs71B,gBAAkB,SAAU3gyB,GAC/Cl5D,KAAK4/1B,cAAgB,CAAEzixB,KAAMn9E,KAAK241B,cAAelsyB,KAAMzsD,KAAK+qD,aAC5D/qD,KAAK2/1B,eAAezmyB,EACxB,EACAujY,EAAal+b,UAAUog2B,gBAAkB,SAAU3pkB,GAC3CA,EACKhkH,GAAkBhxK,KAAKw21B,gBACxB93X,GAAa73d,OAAO7G,KAAKy21B,SAAU,QAASz21B,KAAK251B,qBACjDlnyB,GAAS,CAACzyD,KAAKy21B,UAAWhxW,IAC1Bhzb,GAAS,CAACzyD,KAAKy21B,UAAW/C,IAC1B1z1B,KAAKy21B,SAAS7t1B,aAAa,gBAAiB,UAIhD81d,GAAa53d,IAAI9G,KAAKy21B,SAAU,QAASz21B,KAAK251B,qBAC9CjnyB,GAAY,CAAC1yD,KAAKy21B,UAAWhxW,IAC7B/yb,GAAY,CAAC1yD,KAAKy21B,UAAW/C,IAC7B1z1B,KAAKy21B,SAAS7t1B,aAAa,gBAAiB,SAEpD,EACA6zb,EAAal+b,UAAU+rK,QAAU,SAAUg+Q,EAAWE,EAASriI,GAC3D,IACIl4R,EACA7R,EAFA4R,EAAQw6Z,EAAQ1va,cAepB,OAZAmV,EAAMD,EACN5R,EAAS,EACL+pS,IAEAl4R,GADAD,GAAgBA,EAAQm4R,GACVn4R,EAAQm4R,EAAWA,EAAW,GAE5CmiI,EAAUxva,cAAgBmV,EAC1B7R,EAAS,EAEJksa,EAAUxva,cAAgBkV,IAC/B5R,GAAU,GAEPA,CACX,EACAqgb,EAAal+b,UAAUk71B,cAAgB,SAAUhtyB,GAC7C,OAAQA,IAASzsD,KAAKqK,MAAQoiD,IAASzsD,KAAK6E,GAChD,EACA43b,EAAal+b,UAAUg71B,iBAAmB,SAAU9syB,GAChD,GAA0B,cAAtBzsD,KAAK401B,aACL,OAAOnoyB,EAAKzzC,YAAchZ,KAAKqK,IAAI2O,YAC5ByzC,EAAK3zC,eAAiB9Y,KAAKqK,IAAIyO,eAC/B2zC,EAAKzzC,YAAchZ,KAAK6E,IAAImU,YAC5ByzC,EAAK3zC,eAAiB9Y,KAAK6E,IAAIiU,cAGtC,IAAI2k1B,EAAcz91B,KAAKm61B,cAAcuD,eAAejxyB,GACpD,OAAOgxyB,EAAYty0B,OAAUnrB,KAAKm61B,cAAcuD,eAAe,IAAI1l1B,KAAK,KAAM,EAAG,KAAMmT,OAChFsy0B,EAAYvy0B,MAASlrB,KAAKm61B,cAAcuD,eAAe,IAAI1l1B,KAAK,KAAM,EAAG,KAAMkT,MAC/Euy0B,EAAYty0B,OAAUnrB,KAAKm61B,cAAcuD,eAAe,IAAI1l1B,KAAK,KAAM,EAAG,KAAMmT,OAChFsy0B,EAAYvy0B,MAASlrB,KAAKm61B,cAAcuD,eAAe,IAAI1l1B,KAAK,KAAM,EAAG,KAAMkT,IAE9F,EACAuxa,EAAal+b,UAAUqg2B,YAAc,SAAU5w0B,EAAOC,GAClD,OAAOjuB,KAAKsqK,QAAQt8I,EAAOC,EAAK,EACpC,EACAwua,EAAal+b,UAAUsg2B,cAAgB,SAAU7w0B,EAAOC,GACpD,OAAOjuB,KAAKsqK,QAAQt8I,EAAOC,EAAK,GACpC,EACAwua,EAAal+b,UAAUs51B,WAAa,SAAU79xB,EAAO78D,GACjD,OAAO68D,EAAMp5D,MAAMzD,GAAGgK,OAAO6yD,EAAMp5D,MAAM,EAAGzD,GAChD,EACAs/b,EAAal+b,UAAUi71B,OAAS,SAAU/syB,EAAMtvD,EAAGD,EAAG2H,EAAKwF,GACvD,IAAIwe,EAAS1rB,EACT2B,EAAQ,IAAIkZ,MAAMy0C,GACtB,IAAKukH,GAAkBhxK,KAAKm31B,oBAAsBnmrB,GAAkB9zK,GAAI,CACpE,KAAO8C,KAAK6/1B,WAAW,IAAI7n1B,MAAMy0C,GAAO5jC,EAAQhkB,EAAKwF,IACjDwe,GAAU1rB,EAEd,IAAI2i2B,EAAa,IAAI9n1B,KAAKlZ,EAAM8lC,QAAQ9lC,EAAMoa,UAAY2P,IAC1DA,GAAWi30B,GAAcj71B,IAAQi71B,GAAcz11B,EAAOwe,IAAW1rB,EAAIA,EAAIA,EAAIA,EAAI0rB,CACrF,CACA4jC,EAAK7nB,QAAQ6nB,EAAKvzC,UAAY2P,EAClC,EACA4za,EAAal+b,UAAUsh2B,WAAa,SAAUpzyB,EAAM5jC,EAAQhkB,EAAKwF,GAC7D,IAAIvL,EAAQ,IAAIkZ,KAAKy0C,EAAK7nB,QAAQ6nB,EAAKvzC,UAAY2P,IAC/ColF,EAAa,GACbw1M,GAAa,EACjB,KAAMzyI,GAAkBlyK,IAAUA,EAAMka,gBAAkBg4J,GAAkBhxK,KAAK+qD,cAAgB/qD,KAAK+qD,YAAY/xC,YAAa,CAQ3Hi1F,GAN0B,cAAtBjuG,KAAK401B,aACI501B,KAAKk61B,WAAWp71B,GAGhBkB,KAAKm61B,cAAcC,kBAAkBp61B,KAAK+qD,YAAajsD,IAEhDtB,QAAO,SAAUi8D,GACjC,OAAOA,EAAQt1D,UAAUC,SAASqhf,GACtC,GACJ,MAEIx3Y,EAAajuG,KAAKm31B,iBAAiB1p0B,iBAAiB,MAAQg4d,IAEhE,IAAK3mf,IAAY+F,IAAU/F,IAAYuL,GAC/B4jG,EAAWnwG,OACX,IAAK,IAAIX,EAAI,EAAGA,EAAI8wG,EAAWnwG,UAE3B2lT,GAAe3kT,KAAW,IAAIkZ,KAAK/W,SAASgtG,EAAW9wG,GAAG2Y,GAAI,KAF3B3Y,KAS/C,OAAOsmT,CACX,EACAg5I,EAAal+b,UAAU+g2B,WAAa,SAAU9/1B,GAC1C,IAAIitD,EACAszyB,EAAU,IAAI/n1B,KAAKhY,KAAKk21B,WAAW121B,IACvCitD,EAAO,GAEP,IADA,IAAIthC,EAAQ400B,EAAQ/m1B,WACb+m1B,EAAQ/m1B,aAAemS,KACxBshC,EACFszyB,EAAQn7zB,QAAQ6nB,GAEpB,OAAOA,EAAO,CAClB,EACAgwY,EAAal+b,UAAUgh2B,cAAgB,SAAU9yyB,EAAMvhC,GACnDuhC,EAAK44K,YAAYn6M,GACjBlrB,KAAKiie,cAAc,CAAEnje,MAAO,IAAIkZ,KAAKhY,KAAKk21B,WAAWzpyB,MAAU,EACnE,EACAgwY,EAAal+b,UAAUih2B,YAAc,SAAU/yyB,EAAM3tD,GACjD2tD,EAAK44K,YAAYvmO,EAAMga,cAAeha,EAAMka,WAAYyzC,EAAKvzC,WACzDpa,EAAMka,aAAeyzC,EAAKzzC,aAC1ByzC,EAAK7nB,QAAQ,GACb5kC,KAAK+qD,YAAc,IAAI/yC,KAAKhY,KAAKk21B,WAAWp31B,KAEhDkB,KAAKiie,cAAc,CAAEnje,MAAO,IAAIkZ,KAAKhY,KAAKk21B,WAAWzpyB,MAAU,EACnE,EACAgwY,EAAal+b,UAAUmg2B,aAAe,SAAU1w0B,EAAOC,GAWnD,OATID,EAAMlV,cAAgBmV,EAAInV,cACjB,EAEJkV,EAAMlV,cAAgBmV,EAAInV,eACrB,EAGDkV,EAAMhV,aAAeiV,EAAIjV,WAAa,EAAIgV,EAAMhV,WAAaiV,EAAIjV,WAAa,GAAK,CAGpG,EACAyjb,EAAal+b,UAAU231B,WAAa,SAAU8J,GAC1C,OAAIA,aAAmBho1B,KACXgo1B,EAAQ1n1B,cAGR,GAAK0n1B,CAErB,EACAvja,EAAal+b,UAAUs/1B,UAAY,WACZ,WAAf791B,KAAKguB,OAAqC,SAAfhuB,KAAKguB,OAChChuB,KAAKiie,cAAc,CAAEj0c,MAAO,UAAW,GAExB,WAAfhuB,KAAKmgM,OAAqC,SAAfngM,KAAKmgM,OAChCngM,KAAKiie,cAAc,CAAE9hS,MAAO,UAAW,GAEvCngM,KAAK441B,cAAc541B,KAAKmgM,OAASngM,KAAK441B,cAAc541B,KAAKguB,QACzDhuB,KAAKiie,cAAc,CAAE9hS,MAAO,UAAW,EAE/C,EACAs8P,EAAal+b,UAAU2a,QAAU,SAAUuzC,EAAMg+Z,GAI7C,OAHIA,IACAh+Z,EAAO,IAAIz0C,KAAKy0C,EAAKi+G,eAAe,QAAS,CAAE4pD,SAAUm2P,MAEtDh+Z,CACX,EACA4gQ,GAAW,CACP63K,GAAS,IAAIltd,KAAK,KAAM,EAAG,KAC5Bykb,EAAal+b,UAAW,WAAO,GAClC8uT,GAAW,CACP63K,IAAS,IACVzoC,EAAal+b,UAAW,eAAW,GACtC8uT,GAAW,CACP63K,GAAS,OACVzoC,EAAal+b,UAAW,gBAAY,GACvC8uT,GAAW,CACP63K,GAAS,IAAIltd,KAAK,KAAM,GAAI,MAC7Bykb,EAAal+b,UAAW,WAAO,GAClC8uT,GAAW,CACP63K,GAAS,OACVzoC,EAAal+b,UAAW,sBAAkB,GAC7C8uT,GAAW,CACP63K,GAAS,cACVzoC,EAAal+b,UAAW,oBAAgB,GAC3C8uT,GAAW,CACP63K,GAAS,UACVzoC,EAAal+b,UAAW,aAAS,GACpC8uT,GAAW,CACP63K,GAAS,UACVzoC,EAAal+b,UAAW,aAAS,GACpC8uT,GAAW,CACP63K,IAAS,IACVzoC,EAAal+b,UAAW,kBAAc,GACzC8uT,GAAW,CACP63K,GAAS,aACVzoC,EAAal+b,UAAW,gBAAY,GACvC8uT,GAAW,CACP63K,IAAS,IACVzoC,EAAal+b,UAAW,uBAAmB,GAC9C8uT,GAAW,CACP63K,GAAS,UACVzoC,EAAal+b,UAAW,uBAAmB,GAC9C8uT,GAAW,CACP63K,IAAS,IACVzoC,EAAal+b,UAAW,yBAAqB,GAChD8uT,GAAW,CACP63K,GAAS,OACVzoC,EAAal+b,UAAW,kBAAc,GACzC8uT,GAAW,CACP63K,GAAS,OACVzoC,EAAal+b,UAAW,4BAAwB,GACnD8uT,GAAW,CACPv0P,MACD2jY,EAAal+b,UAAW,eAAW,GACtC8uT,GAAW,CACPv0P,MACD2jY,EAAal+b,UAAW,iBAAa,GACxC8uT,GAAW,CACPv0P,MACD2jY,EAAal+b,UAAW,iBAAa,GACxC8uT,GAAW,CACPv0P,MACD2jY,EAAal+b,UAAW,qBAAiB,GAC5Ck+b,EAAepvI,GAAW,CACtBq4K,IACDjpC,EAEP,CAhgEkC,CAggEhC/6K,IAcEk9K,GAA0B,SAAUp6O,GAUpC,SAASo6O,EAAS5/a,EAASy6C,GACvB,OAAO+qJ,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,IAClD,CA4hBA,OAviBAkhP,GAAU09M,EAAUp6O,GAkBpBo6O,EAASrgc,UAAUupE,OAAS,WAIxB,GAH0B,YAAtB9nE,KAAK401B,mBAAqD3nxB,IAAvBjtE,KAAKm61B,eACxC12Y,GAAW,8EAEXzjd,KAAK+7tB,kBAA2C,kBAAhB/7tB,KAAK+xC,SAAwBi/H,GAAkBhxK,KAAK+xC,SAAW/xC,KAAK+xC,OAAOj0C,OAAS,EAAG,CAGvH,IAFA,IAAImi2B,EAAa,GACb1E,EAAa,GACR37mB,EAAQ,EAAGA,EAAQ5/O,KAAK+xC,OAAOj0C,OAAQ8hP,KACK,IAA7CqgnB,EAAWv71B,SAAS1E,KAAK+xC,OAAO6tM,MAChCqgnB,EAAWti2B,MAAMqC,KAAK+xC,OAAO6tM,IAC7B27mB,EAAW591B,KAAKqC,KAAK+xC,OAAO6tM,KAGpC5/O,KAAKiie,cAAc,CAAElwb,OAAQwpzB,IAAc,GAC3C,IAAK,IAAI5u0B,EAAQ,EAAGA,EAAQ3sB,KAAK+xC,OAAOj0C,OAAQ6uB,IAC5C,IAAK3sB,KAAKi21B,eAAej21B,KAAK+xC,OAAOplB,IACjC,GAAoC,kBAAxB3sB,KAAK+xC,OAAOplB,IAAwB3sB,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKk21B,WAAWl21B,KAAK+xC,OAAOplB,MAAW,CAChH,IAAIuz0B,EAAW,IAAIlo1B,KAAKhY,KAAKk21B,WAAWl21B,KAAK+xC,OAAOplB,KACpD3sB,KAAK+xC,OAAO9tC,OAAO0oB,EAAO,GAC1B3sB,KAAK+xC,OAAO9tC,OAAO0oB,EAAO,EAAGuz0B,EACjC,MAEIlg2B,KAAK+xC,OAAO9tC,OAAO0oB,EAAO,GAItC3sB,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAK+xC,OAAO/xC,KAAK+xC,OAAOj0C,OAAS,KAAM,GACnEkC,KAAK8zuB,eAAiB9zuB,KAAK+xC,OAAOj0C,MACtC,CAQA,GAPAkC,KAAKg21B,eACLh21B,KAAKs21B,eACwB,aAAzBt21B,KAAKgje,kBACLhje,KAAKi3pB,UAAUj3pB,KAAKsG,SACpBtG,KAAKmg2B,SAASng2B,KAAK6O,WAEvB21M,EAAOjmN,UAAUupE,OAAO/nE,KAAKC,MACA,aAAzBA,KAAKgje,gBAAgC,CACrC,IAAIlhL,EAAOg/K,GAAQ9ge,KAAKy5D,QAAS,QAC7BqoP,GACA48K,GAAa53d,IAAIg7S,EAAM,QAAS9hT,KAAKi+0B,iBAAiB1w0B,KAAKvN,OAE/DA,KAAKog2B,YAAYpg2B,KAAKm6oB,qBAC1B,CACAn6oB,KAAK6ve,gBACT,EACAjxC,EAASrgc,UAAU04pB,UAAY,SAAUqK,GAChCA,EAID5umB,GAAY,CAAC1yD,KAAKy5D,SAAUgsb,IAH5Bhzb,GAAS,CAACzyD,KAAKy5D,SAAUgsb,GAKjC,EACA7mD,EAASrgc,UAAU4h2B,SAAW,SAAUE,EAAaC,GAC5CtvrB,GAAkBsvrB,KACnBA,EAAeA,EAAY591B,QAAQ,OAAQ,KAAM6S,QAEhDy7J,GAAkBqvrB,KACnBA,EAAeA,EAAY391B,QAAQ,OAAQ,KAAM6S,QAEhDy7J,GAAkBsvrB,IAAgC,KAAhBA,GACnC5tyB,GAAY,CAAC1yD,KAAKy5D,SAAU6myB,EAAYt/1B,MAAM,MAE7CgwK,GAAkBqvrB,IACnB5tyB,GAAS,CAACzyD,KAAKy5D,SAAU4myB,EAAYr/1B,MAAM,KAEnD,EACA49b,EAASrgc,UAAUgi2B,iBAAmB,WAClC,IAAIC,EAAe,IAAIxo1B,KAAKhY,KAAKlB,MAAMga,cAAe,EAAG,GAAGc,oBACxD6m1B,EAAc,IAAIzo1B,KAAKhY,KAAKlB,MAAMga,cAAe,EAAG,GAAGc,oBAC3D,OAAQ5Z,KAAKlB,MAAM8a,oBAAsB1Y,KAAK2D,IAAI471B,EAAaD,EACnE,EACA5ha,EAASrgc,UAAU6h2B,YAAc,SAAU1rW,GACvC,IAAK1jV,GAAkBhxK,KAAKm6oB,uBAAyBn6oB,KAAKlB,MAAO,CAC7D,IAEI4h2B,EAFqBhsW,GACA,IAAI18e,MAAO4B,oBAAsB,GAE1D8m1B,EAAe1g2B,KAAKug2B,mBAAqBG,IAAiBA,EAC1D1g2B,KAAKlB,MAAQ,IAAIkZ,KAAKhY,KAAKlB,MAAMuZ,UAA4B,GAAfqo1B,EAAoB,GAAK,IAC3E,CACJ,EACA9ha,EAASrgc,UAAU0/0B,iBAAmB,WAClCj+0B,KAAKiie,cAAc,CAAEnje,MAAO,OAAQ,EACxC,EACA8/b,EAASrgc,UAAUy31B,aAAe,WACJ,kBAAfh21B,KAAKlB,OACZkB,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKk21B,WAAWl21B,KAAKlB,WAAY,GAE9F0lN,EAAOjmN,UAAUy31B,aAAaj21B,KAAKC,KAAMA,KAAKlB,QACzCkyK,GAAkBhxK,KAAKlB,QAAUkB,KAAKqK,KAAOrK,KAAK6E,KAAO7E,KAAKlB,OAASkB,KAAKqK,KAAOrK,KAAKlB,OAASkB,KAAK6E,MACvG7E,KAAK+qD,YAAc,IAAI/yC,KAAKhY,KAAKk21B,WAAWl21B,KAAKlB,SAEjDwF,OAAOtE,KAAKlB,QACZkB,KAAKiie,cAAc,CAAEnje,MAAO,OAAQ,EAE5C,EACA8/b,EAASrgc,UAAU+31B,aAAe,WACD,aAAzBt21B,KAAKgje,mBACAhyT,GAAkBhxK,KAAKlB,QAAUkB,KAAKlB,OAASkB,KAAKqK,KAAOrK,KAAKqK,KAAOrK,KAAK6E,KAC7E7E,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAKqK,MAAO,GACxCrK,KAAK2g2B,YAAc,CAAE7h2B,MAAOkB,KAAKlB,SAG5BkyK,GAAkBhxK,KAAKlB,QAAUkB,KAAKlB,OAASkB,KAAK6E,KAAO7E,KAAKqK,KAAOrK,KAAK6E,MAC7E7E,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAK6E,MAAO,GACxC7E,KAAK2g2B,YAAc,CAAE7h2B,MAAOkB,KAAKlB,SAIhB,aAAzBkB,KAAKgje,iBAAmChyT,GAAkBhxK,KAAKlB,OAW/D0lN,EAAOjmN,UAAU+31B,aAAav21B,KAAKC,KAAMA,KAAKlB,QAVzCkyK,GAAkBhxK,KAAKlB,QAAUkB,KAAKlB,MAAQkB,KAAKqK,KAAOrK,KAAKqK,KAAOrK,KAAK6E,IAC5E2/M,EAAOjmN,UAAU+31B,aAAav21B,KAAKC,KAAMA,KAAKqK,MAGzC2mK,GAAkBhxK,KAAKlB,QAAUkB,KAAKlB,MAAQkB,KAAK6E,KAAO7E,KAAKqK,KAAOrK,KAAK6E,KAC5E2/M,EAAOjmN,UAAU+31B,aAAav21B,KAAKC,KAAMA,KAAK6E,IAO9D,EACA+5b,EAASrgc,UAAUqi2B,iBAAmB,SAAU9h2B,GAC5C,IAAIw0d,EAAY,IAAIt7c,KAapB,OAZKg5J,GAAkBhxK,KAAKyqd,YACxB6I,EAAY9uQ,EAAOjmN,UAAU2a,QAAQnZ,KAAKC,KAAMszd,EAAWtzd,KAAKyqd,WAEhE3rd,GAASkyK,GAAkBhxK,KAAKyqd,WAChC6I,EAAUpB,SAASpzd,EAAMsa,YACzBk6c,EAAUlB,WAAWtzd,EAAMwa,cAC3Bg6c,EAAUmgH,WAAW30kB,EAAM0a,cAC3B85c,EAAUzB,gBAAgB/yd,EAAM4a,oBAGhC45c,EAAY,IAAIt7c,KAAKs7c,EAAUx6c,cAAew6c,EAAUt6c,WAAYs6c,EAAUp6c,UAAW,EAAG,EAAG,EAAG,GAE/Fo6c,CACX,EACA10B,EAASrgc,UAAU851B,iBAAmB,SAAUn71B,GAC5C,GAAI8C,KAAK821B,gBAAiB,CACtB,IAAIxjY,EAAYtzd,KAAK4g2B,iBAAiB5g2B,KAAKlB,OAI3C,GAHAkB,KAAKiie,cAAc,CAAEnje,MAAOw0d,IAAa,GACzCtzd,KAAKw01B,gBAAiB,EACtBx01B,KAAK8+1B,iBAAmB5h2B,EACpB8C,KAAK+7tB,iBAAkB,CACvB,IAAIw/H,EAAav71B,KAAKu71B,WAAWv71B,KAAK+xC,QACjCyyK,EAAOjmN,UAAUkh2B,iBAAiB1/1B,KAAKC,KAAMszd,EAAWtzd,KAAK+xC,UAC9DwpzB,EAAW591B,KAAK21d,GAChBtzd,KAAKiie,cAAc,CAAElwb,OAAQwpzB,IAErC,CACA/2oB,EAAOjmN,UAAU851B,iBAAiBt41B,KAAKC,KAAM9C,EAAG,IAAI8a,MAAMhY,KAAKlB,OACnE,CACJ,EACA8/b,EAASrgc,UAAUg61B,gBAAkB,SAAUr71B,GAC3CsnN,EAAOjmN,UAAUg61B,gBAAgBx41B,KAAKC,KAAM9C,EAAG8C,KAAKlB,MAAOkB,KAAK+7tB,iBACpE,EAOAn9R,EAASrgc,UAAUgwe,UAAY,WAC3B,IAAI3tR,EAAQ5gN,KACZA,KAAKg+0B,cAAgB,SAAU9g1B,GAC3B0jN,EAAMigpB,cAAc3j2B,EACxB,EACA8C,KAAK691B,YACLr5oB,EAAOjmN,UAAUgwe,UAAUxue,KAAKC,KAAMA,KAAKlB,MAC/C,EAKA8/b,EAASrgc,UAAUy21B,cAAgB,WAC/Bh11B,KAAK8g2B,aAAe9g2B,KAAKlB,MACzBkB,KAAK+g2B,iBAAmB/g2B,KAAKlB,MAC7B0lN,EAAOjmN,UAAUy21B,cAAcj11B,KAAKC,KACxC,EACA4+b,EAASrgc,UAAUu71B,WAAa,SAAUC,GACtC,OAAOv1oB,EAAOjmN,UAAUu71B,WAAW/51B,KAAKC,KAAM+51B,EAClD,EACAn7Z,EAASrgc,UAAUy51B,aAAe,SAAU961B,EAAG4B,EAAO451B,GAClDl0oB,EAAOjmN,UAAUy51B,aAAaj41B,KAAKC,KAAM9C,EAAG8C,KAAKlB,MAAO451B,EAC5D,EACA95Z,EAASrgc,UAAU271B,WAAa,SAAUnvyB,EAAajsD,EAAOki2B,EAAejvzB,EAAQ2mzB,EAAcx71B,GAC/F,IAAI+j2B,EAAWz8oB,EAAOjmN,UAAU271B,WAAWn61B,KAAKC,KAAM+qD,EAAa/qD,KAAKlB,MAAOkB,KAAK+7tB,iBAAkB/7tB,KAAK+xC,OAAQ2mzB,EAAcx71B,GAIjI,OAHI8C,KAAK+7tB,kBACLv3gB,EAAOjmN,UAAUq/1B,eAAe791B,KAAKC,KAAMA,KAAK+7tB,iBAAkB/7tB,KAAK+xC,QAEpEkvzB,CACX,EACAria,EAASrgc,UAAUu51B,YAAc,SAAU561B,GACb,cAAtB8C,KAAK401B,aACLpwoB,EAAOjmN,UAAUu51B,YAAY/31B,KAAKC,KAAM9C,EAAG8C,KAAKlB,OAGhDkB,KAAKm61B,cAAc+G,mBAAmBhk2B,EAAG8C,KAAKlB,MAEtD,EACA8/b,EAASrgc,UAAUw51B,cAAgB,SAAU761B,GACf,cAAtB8C,KAAK401B,aACLpwoB,EAAOjmN,UAAUw51B,cAAch41B,KAAKC,KAAM9C,EAAG8C,KAAKlB,OAGlDkB,KAAKm61B,cAAcgH,oBAAoBjk2B,EAAG8C,KAAKlB,MAEvD,EACA8/b,EAASrgc,UAAU871B,eAAiB,SAAU13wB,EAAUl6D,EAAOu00B,EAAS9/1B,GAC1C,cAAtB8C,KAAK401B,aACLpwoB,EAAOjmN,UAAU871B,eAAet61B,KAAKC,KAAM2iF,EAAUl6D,EAAOu00B,EAAS9/1B,EAAG8C,KAAKlB,OAG7EkB,KAAKm61B,cAAcG,sBAAsB33wB,EAAUl6D,EAAOu00B,EAAS9/1B,EAAG8C,KAAKlB,OAE/EkB,KAAK2g2B,YAAc,CAAE7h2B,MAAOkB,KAAKlB,MAAOizC,OAAQ/xC,KAAK+xC,QACrD70C,GAAgB,UAAXA,EAAEuJ,MAAoBvJ,EAAEkjS,cAAcj8R,UAAUC,SAASkv1B,IAActz1B,KAAKg+0B,cAAc9g1B,GAAK8C,KAAKg+0B,eAC7G,EACAp/Y,EAASrgc,UAAUsyf,aAAe,SAAU3zf,GACxC,IAAI2/pB,EAAM3/pB,EAAEkjS,cAEZ,GADApgS,KAAKs01B,gBAAiB,EAClBz3L,EAAI14pB,UAAUC,SAASkv1B,IACvB,GAAItz1B,KAAK+7tB,iBAAkB,CACvB,IAAIw/H,EAAav71B,KAAKu71B,WAAWv71B,KAAK+xC,SACsC,IAAxEwpzB,EAAW561B,WAAW+D,QAAQ1E,KAAKu91B,WAAWrg2B,EAAG,MAAMyD,aACvD461B,EAAW591B,KAAKqC,KAAKu91B,WAAWrg2B,EAAG,OACnC8C,KAAKiie,cAAc,CAAElwb,OAAQwpzB,IAAc,GAC3Cv71B,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAK+xC,OAAO/xC,KAAK+xC,OAAOj0C,OAAS,KAAM,IAGnEkC,KAAKy01B,eAAgB,CAE7B,MAEIz01B,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAKu91B,WAAWrg2B,EAAG,QAAS,GAGhE,IAAIkk2B,EAAYph2B,KAAK241B,cACrBn0oB,EAAOjmN,UAAUsyf,aAAa9wf,KAAKC,KAAM9C,EAAG8C,KAAKlB,OAC7CkB,KAAK+7tB,kBAAoB/7tB,KAAK+qD,cAAgB/qD,KAAKlB,QAClDkyK,GAAkBhxK,KAAKm31B,iBAAiB1p0B,iBAAiB,IAAMom0B,IAAa,KAAqB,SAAduN,GACpFph2B,KAAKm31B,iBAAiB1p0B,iBAAiB,IAAMom0B,IAAa,GAAG1v1B,UAAU0C,OAAOgt1B,GAEtF,EACAj1Z,EAASrgc,UAAUo/1B,WAAa,SAAUxgxB,EAAMjgF,EAAG6+tB,EAAkB28H,GACjEl0oB,EAAOjmN,UAAUo/1B,WAAW591B,KAAKC,KAAMm9E,EAAMjgF,EAAG8C,KAAK+7tB,iBAAkB28H,EAC3E,EAOA95Z,EAASrgc,UAAUyke,cAAgB,WAE/B,OADAx+Q,EAAOjmN,UAAUyke,cAAcjje,KAAKC,MAC7B,UACX,EAOA4+b,EAASrgc,UAAUgye,eAAiB,WAChC/rR,EAAOjmN,UAAUgye,eAAexwe,KAAKC,MAErC,OAAOA,KAAK6we,aADI,CAAC,QAAS,UAE9B,EAUAjyC,EAASrgc,UAAUoke,kBAAoB,SAAUiF,EAASC,GACtD7ne,KAAK4pqB,OAAS,GACd5pqB,KAAK001B,gBAAgB101B,KAAKqK,IAAKrK,KAAK6E,KACpC,IAAK,IAAIs1N,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAE9D,OADWjiC,EAAGiiC,IAEV,IAAK,QACGn6N,KAAKu01B,iBACwB,kBAAlB3sX,EAAQ9oe,MACfkB,KAAKiie,cAAc,CAAEnje,MAAO,IAAIkZ,KAAKhY,KAAKk21B,WAAWtuX,EAAQ9oe,UAAW,GAGxE8oe,EAAQ9oe,MAAQ,IAAIkZ,KAAKhY,KAAKk21B,WAAWtuX,EAAQ9oe,QAEjDwF,OAAOtE,KAAKlB,QACZkB,KAAKiie,cAAc,CAAEnje,MAAO+oe,EAAQ/oe,QAAS,GAEjDkB,KAAK4tD,UAET,MACJ,IAAK,SACD,GAAI5tD,KAAKu01B,eAAgB,CACrB,GAA8B,kBAAnB3sX,EAAQ71b,QAAiD,kBAAnB61b,EAAQ71b,OACrD/xC,KAAKiie,cAAc,CAAElwb,OAAQ,OAAQ,OAEpC,CAED,IADA,IAAIwpzB,EAAav71B,KAAKu71B,WAAWv71B,KAAK+xC,QAC7BplB,EAAQ,EAAGA,EAAQ4u0B,EAAWz91B,OAAQ6uB,IAAS,CACpD,IAAIuhvB,EAAWqtF,EAAW5u0B,GACtB3sB,KAAKi21B,eAAe/nF,KAAc1pjB,EAAOjmN,UAAUkh2B,iBAAiB1/1B,KAAKC,KAAMkuwB,EAAUqtF,IACzFA,EAAW591B,KAAKuwwB,EAExB,CACAluwB,KAAKiie,cAAc,CAAElwb,OAAQwpzB,IAAc,GACvCv71B,KAAK+xC,OAAOj0C,OAAS,GACrBkC,KAAKiie,cAAc,CAAEnje,MAAO8oe,EAAQ71b,OAAO61b,EAAQ71b,OAAOj0C,OAAS,KAAM,EAEjF,CACAkC,KAAK491B,eAAe591B,KAAK+7tB,iBAAkB/7tB,KAAK+xC,QAChD/xC,KAAK4tD,QACT,CACA,MACJ,IAAK,mBACG5tD,KAAKu01B,iBACLv01B,KAAKiie,cAAc,CAAE85P,iBAAkBn0P,EAAQm0P,mBAAoB,GACnE/7tB,KAAK4tD,UAET,MACJ,IAAK,UACD5tD,KAAKi3pB,UAAUj3pB,KAAKsG,SACpB,MACJ,IAAK,WAC4B,aAAzBtG,KAAKgje,iBACLhje,KAAKmg2B,SAASv4X,EAAQ/4d,SAAUg5d,EAAQh5d,UAE5C,MACJ,QACI21M,EAAOjmN,UAAUoke,kBAAkB5ie,KAAKC,KAAM4ne,EAASC,EAAS7ne,KAAK+7tB,iBAAkB/7tB,KAAK+xC,QAExG,CACA/xC,KAAKykpB,cAAgBzkpB,KAAK+iQ,WAAa/iQ,KAAKykpB,eAAiBzkpB,KAAKykpB,cAAgBzkpB,KAAKykpB,aAC3F,EAMA7lN,EAASrgc,UAAUklE,QAAU,WAEzB,GADA+gJ,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,MACD,aAAzBA,KAAKgje,gBAAgC,CACrChje,KAAK2g2B,YAAc,KACnB,IAAI7+iB,EAAOg/K,GAAQ9ge,KAAKy5D,QAAS,QAC7BqoP,GACA48K,GAAa73d,OAAOi7S,EAAM,QAAS9hT,KAAKi+0B,iBAAiB1w0B,KAAKvN,MAEtE,CACJ,EAUA4+b,EAASrgc,UAAU6smB,WAAa,SAAUjuhB,EAAM1wB,EAAMisyB,GAClD141B,KAAKs21B,eACL9xoB,EAAOjmN,UAAU6smB,WAAWrrmB,KAAKC,KAAMm9E,EAAM1wB,EAAMisyB,EACvD,EAQA95Z,EAASrgc,UAAUo61B,YAAc,WAC7B,OAAOn0oB,EAAOjmN,UAAUo61B,YAAY541B,KAAKC,KAC7C,EASA4+b,EAASrgc,UAAU8i2B,QAAU,SAAUxknB,GACnC,GAAqB,kBAAVA,GAAuC,kBAAVA,EAAoB,CACxD,IAAI0+mB,EAAav71B,KAAKu71B,WAAWv71B,KAAK+xC,QACtC,GAAqB,kBAAV8qM,GAAuBA,EAAO/+O,OAAS,EAE9C,IADA,IAAIwj2B,EAAYzknB,EACP1/O,EAAI,EAAGA,EAAImk2B,EAAUxj2B,OAAQX,IAC9B6C,KAAKi21B,eAAeqL,EAAUnk2B,MAAQqnN,EAAOjmN,UAAUkh2B,iBAAiB1/1B,KAAKC,KAAMsh2B,EAAUnk2B,GAAIo+1B,MAC5FvqrB,GAAkBuqrB,IAAeA,EAAWz91B,OAAS,EACtDy91B,EAAW591B,KAAK2j2B,EAAUnk2B,IAG1Bo+1B,EAAa,CAAC,IAAIvj1B,MAAMsp1B,EAAUnk2B,WAM1C6C,KAAKi21B,eAAep5mB,KAAWr4B,EAAOjmN,UAAUkh2B,iBAAiB1/1B,KAAKC,KAAM68O,EAAO0+mB,MAC9EvqrB,GAAkBuqrB,IAAeA,EAAWz91B,OAAS,EACtDy91B,EAAW591B,KAAMk/O,GAGjB0+mB,EAAa,CAAC,IAAIvj1B,MAAM6kO,KAIpC78O,KAAKiie,cAAc,CAAElwb,OAAQwpzB,IAAc,GACvCv71B,KAAK+7tB,kBACL/7tB,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAK+xC,OAAO/xC,KAAK+xC,OAAOj0C,OAAS,KAAM,GAEvEkC,KAAK491B,eAAe591B,KAAK+7tB,iBAAkBw/H,GAC3Cv71B,KAAK4tD,SACL5tD,KAAK2g2B,YAAc,CAAE7h2B,MAAOkB,KAAKlB,MAAOizC,OAAQ/xC,KAAK+xC,QACrD/xC,KAAKg+0B,eACT,CACJ,EAQAp/Y,EAASrgc,UAAUgj2B,WAAa,SAAU1knB,GACtC,GAAqB,kBAAVA,GAAuC,kBAAVA,IAAuB7rE,GAAkBhxK,KAAK+xC,SAAW/xC,KAAK+xC,OAAOj0C,OAAS,EAAG,CACrH,IAAIy91B,EAAav71B,KAAKu71B,WAAWv71B,KAAK+xC,QACtC,GAAqB,kBAAV8qM,GAAwBA,EAAO/+O,OAAS,EAE/C,IADA,IAAIwj2B,EAAYzknB,EACPlwN,EAAQ,EAAGA,EAAQ200B,EAAUxj2B,OAAQ6uB,IAC1C,IAAK,IAAIxvB,EAAI,EAAGA,EAAIo+1B,EAAWz91B,OAAQX,KAC9Bo+1B,EAAWp+1B,MAAQmk2B,EAAU300B,IAC9B4u0B,EAAWt31B,OAAO9G,EAAG,QAMjC,IAASA,EAAI,EAAGA,EAAIo+1B,EAAWz91B,OAAQX,KAC9Bo+1B,EAAWp+1B,MAAQ0/O,GACpB0+mB,EAAWt31B,OAAO9G,EAAG,GAIjC6C,KAAKiie,cAAc,CAAElwb,OAAQwpzB,IAAc,GAC3Cv71B,KAAK4tD,SACD5tD,KAAK+7tB,kBACL/7tB,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAK+xC,OAAO/xC,KAAK+xC,OAAOj0C,OAAS,KAAM,GAEvEkC,KAAK2g2B,YAAc,CAAE7h2B,MAAOkB,KAAKlB,MAAOizC,OAAQ/xC,KAAK+xC,QACrD/xC,KAAKg+0B,eACT,CACJ,EAQAp/Y,EAASrgc,UAAUij2B,aAAe,SAAU/0yB,GACxC,IAAIqoyB,EAAY,IAAI980B,MAAMy0C,GAC1BzsD,KAAKiie,cAAc,CAAEnje,MAAOg21B,IAAa,GACzCtwoB,EAAOjmN,UAAU851B,iBAAiBt41B,KAAKC,KAAM,KAAM801B,GAAW,EAClE,EACAl2Z,EAASrgc,UAAUqvD,OAAS,WACxB5tD,KAAKg21B,eACLh21B,KAAKs21B,eACL9xoB,EAAOjmN,UAAU6/1B,eAAer+1B,KAAKC,KACzC,EACA4+b,EAASrgc,UAAU861B,WAAa,SAAUn81B,EAAGuvD,EAAMgN,GAC/C+qJ,EAAOjmN,UAAU861B,WAAWt51B,KAAKC,KAAM9C,EAAGuvD,EAAMgN,EAASz5D,KAAK+7tB,iBAAkB/7tB,KAAK+xC,QACjF/xC,KAAK+7tB,mBAAqB/qjB,GAAkBhxK,KAAK+xC,SAAW/xC,KAAK+xC,OAAOj0C,OAAS,GACjFkC,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAK+xC,OAAO/xC,KAAK+xC,OAAOj0C,OAAS,KAAM,GAEvEkC,KAAK2g2B,YAAc,CAAE7h2B,MAAOkB,KAAKlB,MAAOizC,OAAQ/xC,KAAK+xC,QACrD/xC,KAAKg+0B,cAAc9g1B,EACvB,EAEA0hc,EAASrgc,UAAUkj2B,YAAc,SAAUvk2B,KAClC8C,KAAKlB,OAASkB,KAAKlB,MAAMgB,cAAgBE,KAAK8g2B,eAAiB9g2B,KAAK8g2B,aAAahh2B,YAC/EE,KAAK+7tB,oBACJ/7tB,KAAK+iQ,WAAa/iQ,KAAKykpB,cACvBzkpB,KAAKykpB,eAAgB,EAGrBzkpB,KAAKo/d,QAAQ,SAAUp/d,KAAK2g2B,aAEhC3g2B,KAAK8g2B,aAAe,IAAI9o1B,MAAMhY,KAAKlB,OAE3C,EACA8/b,EAASrgc,UAAUsi2B,cAAgB,SAAU3j2B,IACpC8zK,GAAkBhxK,KAAK8+1B,mBAAqB9+1B,KAAKw01B,iBAClDt31B,EAAI8C,KAAK8+1B,iBACT9+1B,KAAKw01B,gBAAiB,GAE1Bx01B,KAAK2g2B,YAAYznyB,MAAQh8D,GAAK,KAC9B8C,KAAK2g2B,YAAY1sM,cAAgBjjf,GAAkB9zK,GAC9C8zK,GAAkBhxK,KAAKlB,QACxBkB,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAKlB,QAAS,GAGzCkB,KAAK+7tB,mBAAqB/7tB,KAAKlB,QAAUsD,OAAOwrF,MAASojF,GAAkBhxK,KAAKlB,QAChFkyK,GAAkBhxK,KAAK8g2B,iBAAuC,OAAtB9g2B,KAAK8g2B,cAC1Cx81B,OAAOtE,KAAKlB,QAGVkyK,GAAkBhxK,KAAK+xC,SAAW/xC,KAAK8zuB,iBAAmB9zuB,KAAK+xC,OAAOj0C,SAC5EkC,KAAKyh2B,YAAYvk2B,GACjB8C,KAAK8zuB,eAAiB9zuB,KAAK+xC,OAAOj0C,QAJlCkC,KAAKyh2B,YAAYvk2B,EAMzB,EACAmwT,GAAW,CACP63K,GAAS,OACVtmC,EAASrgc,UAAW,aAAS,GAChC8uT,GAAW,CACP63K,GAAS,OACVtmC,EAASrgc,UAAW,cAAU,GACjC8uT,GAAW,CACP63K,IAAS,IACVtmC,EAASrgc,UAAW,wBAAoB,GAC3C8uT,GAAW,CACPv0P,MACD8lY,EAASrgc,UAAW,cAAU,GACjCqgc,EAAWvxI,GAAW,CAClBq4K,IACD9mC,EAEP,CAziB8B,CAyiB5BnC,IC9nFEv7M,GAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAYI4lf,IAAO,eAGPi9W,IAAe,kBAIfC,IAAa,gBAEbvzmB,IAAQ,UACRwzmB,IAAS,WACTC,IAAW,kBAMXjO,IAAW,aAEXkO,IAAU,aACVnlB,IAAgB,CAAC,QAAS,QAAS,SAcnC56Y,IAA4B,SAAUv9O,GAStC,SAASu9O,EAAW/ib,EAASy6C,GACzB,IAAImnJ,EAAQ4D,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,KAgBnD,OAfA4gN,EAAMmhpB,mBAAoB,EAC1BnhpB,EAAMohpB,iBAAkB,EACxBphpB,EAAMqzc,cAAe,EACrBrzc,EAAMqhpB,mBAAqB,KAC3BrhpB,EAAMshpB,mBAAqB,KAC3BthpB,EAAMuhpB,gBAAkB,GACxBvhpB,EAAMmiD,WAAY,EAClBniD,EAAM6jc,eAAgB,EACtB7jc,EAAMwhpB,eAAgB,EACtBxhpB,EAAMyhpB,uBAAwB,EAC9BzhpB,EAAM8uR,WAAa9uR,EAAMoiR,gBACzBpiR,EAAMovN,WAAY,EAClBpvN,EAAM0hpB,QAAS,EACf1hpB,EAAMu7gB,aAAc,EACpBv7gB,EAAM2hpB,kBAAoBvj1B,EACnB4hM,CACX,CA89DA,OAx/DAsgC,GAAU6gN,EAAYv9O,GAiCtBu9O,EAAWxjc,UAAUupE,OAAS,WAC1B9nE,KAAKy9E,aACLz9E,KAAKupG,aACuB,UAAxBvpG,KAAKo+nB,gBACLN,GAAMS,eAAev+nB,KAAK0kc,aAAc1kc,KAAK61pB,aAAaz5jB,WAEzD40E,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAAQgxG,GAAkBhxK,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,KAA+B,UAAxBr5B,KAAKo+nB,gBAC/Jp+nB,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,GAAGl1B,UAAU2C,IAAI,WAE5FkqK,GAAkB8vT,GAAQ9ge,KAAKy5D,QAAS,cAAgBqna,GAAQ9ge,KAAKy5D,QAAS,YAAYu7N,WAC3Fh1R,KAAKsG,SAAU,GAEnBtG,KAAK6ve,iBACL7ve,KAAKog2B,YAAYpg2B,KAAKm6oB,qBAC1B,EACAp4M,EAAWxjc,UAAU6h2B,YAAc,SAAU1rW,GACzC,IAAK1jV,GAAkBhxK,KAAKm6oB,uBAAyBn6oB,KAAKlB,MAAO,CAC7D,IAEI4h2B,EADqBhsW,GADA,IAAI18e,MAAO4B,oBAAsB,GAG1D8m1B,EAAe1g2B,KAAKug2B,mBAAqBG,IAAiBA,EAC1D1g2B,KAAKlB,MAAQ,IAAIkZ,KAAMhY,KAAKlB,MAAOuZ,UAA4B,GAAfqo1B,EAAoB,GAAK,KACzE1g2B,KAAKwi2B,aACT,CACJ,EACAzga,EAAWxjc,UAAUgi2B,iBAAmB,WACpC,IAAIE,EAAc,IAAIzo1B,KAAKhY,KAAKlB,MAAMga,cAAe,EAAG,GAAGc,oBACvD4m1B,EAAe,IAAIxo1B,KAAKhY,KAAKlB,MAAMga,cAAe,EAAG,GAAGc,oBAC5D,OAAQ5Z,KAAKlB,MAAM8a,oBAAsB1Y,KAAK2D,IAAI471B,EAAaD,EACnE,EACAz+Z,EAAWxjc,UAAUkk2B,aAAe,WAC5Bzi2B,KAAK0i2B,UACA1i2B,KAAKw3c,UACNx3c,KAAK0kc,aAAanxY,gBAAgB,YAItC8D,GAAWr3D,KAAK0kc,aAAc,CAAE,SAAY,KAEhD1kc,KAAKmgoB,iBACT,EACAp+L,EAAWxjc,UAAU4hoB,gBAAkB,WAC9BngoB,KAAK0i2B,YAAa1i2B,KAAK61pB,cAAiB71pB,KAAKw3c,SAQzCx3c,KAAK61pB,cACVnjmB,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAY,CAAC0lwB,MARZ,KAA5B9h2B,KAAK0kc,aAAa5lc,MAClB4zD,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAY,CAAC0lwB,MAG5CrvyB,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAY,CAAC0lwB,KAMrD,EACA//Z,EAAWxjc,UAAUk/E,WAAa,WAC9Bz9E,KAAK2i2B,kBAAkB3i2B,KAAKlB,OACxBkB,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAGhB/nE,KAAKyioB,cACLzioB,KAAK+90B,+BACL/90B,KAAKyi2B,gBACDzi2B,KAAK4i2B,YAAe5i2B,KAAKlB,QAASkB,KAAKmi2B,iBAA4C,WAAxBni2B,KAAKo+nB,gBAAgCp+nB,KAAKo+nB,gBAAmBp+nB,KAAKgoX,YAIvHhoX,KAAK4i2B,YACX5i2B,KAAKwi2B,aAAY,IAJjBxi2B,KAAKwi2B,aAAY,GACjBxi2B,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,kBAK/Bni2B,KAAK8i2B,qBAAuB9i2B,KAAK0kc,aAAa5lc,MAC9CkB,KAAK8g2B,aAAgB9vrB,GAAkBhxK,KAAKlB,OAAiC,KAAxB,IAAIkZ,MAAMhY,KAAKlB,OACpEkB,KAAK0kc,aAAa97b,aAAa,QAAS5I,KAAK0kc,aAAa5lc,OAC1DkB,KAAK+i2B,eAAiB/i2B,KAAKlB,KAC/B,EACAijc,EAAWxjc,UAAUkkoB,YAAc,WAC/B,IAAIugO,EAAY,CACZ,cAAe,OAAQ,gBAAiB,QACxC,KAAQ,WAAY,aAAgB,MAAO,YAAe,MAC1D,eAAkB,MAAO,WAAc,QAAS,eAAgB,QAAS,aAAchj2B,KAAKgje,iBAEhG,GAA6B,eAAzBhje,KAAKgje,gBAAkC,CACvC,IAAIigY,EAAa,CAAEj7e,YAAahoX,KAAKgoX,aACrChoX,KAAKy1wB,UAAY,IAAIxgT,GAAqBj1d,KAAKwY,QAC/CxY,KAAKoppB,KAAO,IAAI9tK,GAAK,aAAc2nX,EAAYjj2B,KAAKwY,QACpDxY,KAAKiie,cAAc,CAAEj6G,YAAahoX,KAAKgoX,aAAehoX,KAAKoppB,KAAKvtK,YAAY,iBAAkB,EAClG,CACI77e,KAAKkj2B,gBAAkBhmY,GAAQK,WAC/Bv9d,KAAK6O,UAAY,mBAErB,IAAIs0pB,EAAwBnjqB,KAAK6O,SAC5BmiK,GAAkBhxK,KAAK6O,WAA+B,KAAlB7O,KAAK6O,WAC1Cs0pB,EAAyBnjqB,KAAK6O,SAASnM,QAAQ,OAAQ,KAAM6S,QAEjE,IAAI0onB,GAAoBj+nB,KAAK4i2B,WAC7B5i2B,KAAK61pB,aAAe/3B,GAAM2E,YAAY,CAClChpkB,QAASz5D,KAAK0kc,aACd05L,eAAgBp+nB,KAAKo+nB,eACrBsE,gBAAiBzE,EACjBxhgB,WAAY,CACR+6U,SAAUx3c,KAAKw3c,SACfxvF,YAAahoX,KAAKgoX,YAClBn5W,SAAUs0pB,EACV78pB,QAAStG,KAAKsG,QACdyne,UAAW/te,KAAK+te,UAChB40J,gBAAiB3ioB,KAAK2ioB,iBAE1B3ikB,QAAS,CAACmjyB,2CACXnj2B,KAAKg+B,eACRh+B,KAAKg8E,SAASh8E,KAAKuD,OACY,KAA3BvD,KAAK0kc,aAAa7jc,KAClBb,KAAK0kc,aAAa97b,aAAa,OAAQ,GAAK5I,KAAK0kc,aAAat0b,aAAa,SAG3EpQ,KAAK0kc,aAAa97b,aAAa,OAAQ,GAAK5I,KAAKy5D,QAAQ3jD,IAE7DuhD,GAAWr3D,KAAK0kc,aAAcs+Z,GACzBhj2B,KAAKsG,SAKNtG,KAAK0kc,aAAa97b,aAAa,gBAAiB,SAChD5I,KAAK0kc,aAAa97b,aAAa,WAAY5I,KAAKmnV,YALhDnnV,KAAK0kc,aAAa97b,aAAa,gBAAiB,QAChD5I,KAAK0kc,aAAav9G,UAAY,GAMlC22S,GAAMn9e,cAAc,CAAE,aAAc,SAAU,KAAQ,UAAY3gJ,KAAK61pB,aAAa71lB,QAAQ,IAC5FvN,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WApMlB,iBAqMd,EACA2lW,EAAWxjc,UAAUik2B,YAAc,SAAUtgB,EAAWogB,GAGpD,IAAI35Y,EAaJ,QAfkB,IAAdu5X,IAAwBA,GAAY,QACzB,IAAXogB,IAAqBA,GAAS,GAE9Bti2B,KAAKlB,QAAUkB,KAAKoj2B,cACpBpj2B,KAAKqj2B,cAAcnhB,EAAWogB,GAE9Bh+1B,OAAO,IAAI0T,KAAKhY,KAAKk21B,WAAWl21B,KAAKlB,UACrCkB,KAAKiie,cAAc,CAAEnje,MAAO,OAAQ,GAEpCkB,KAAK4h1B,aAELp9nB,EAAOjmN,UAAUy31B,aAAaj21B,KAAKC,MACnCA,KAAKsj2B,gBACL9+oB,EAAOjmN,UAAU+31B,aAAav21B,KAAKC,QAElCgxK,GAAkBhxK,KAAKlB,OAAQ,CAChC,IAAIyt0B,EAAYvs0B,KAAKlB,MACjB8tD,OAAa,EACb22yB,EAAcvyrB,GAAkBhxK,KAAKwj2B,cAAoCxj2B,KAAKyj2B,eAAzBzj2B,KAAKwj2B,aAsB9D,GArB6B,mBAAzBxj2B,KAAKgje,gBAEDp2a,EADsB,cAAtB5sD,KAAK401B,aACQ501B,KAAKy1wB,UAAU17vB,WAAW/Z,KAAKlB,MAAO,CAC/Cqc,OAAQoo1B,EAAY981B,KAAM,WAAYyid,SAAU,QAIvClpd,KAAKy1wB,UAAU17vB,WAAW/Z,KAAKlB,MAAO,CAC/Cqc,OAAQoo1B,EAAY981B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,aAMrE+sP,EADsB,cAAtB3od,KAAK401B,aACW,CAAEz50B,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,OAGzD,CAAE/tc,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAE9FhvK,EAAa5sD,KAAKy1wB,UAAU17vB,WAAW/Z,KAAKlB,MAAO6pd,KAEjD4jX,IAAcvs0B,KAAK6E,MAAU0n0B,IAAcvs0B,KAAKqK,IAClDrK,KAAK6i2B,iBAAiBj2yB,OAErB,CACD,IAAI9tD,GAAUyt0B,IAAcvs0B,KAAK6E,OAAS7E,KAAKlB,SAAakB,KAAKlB,QAAUyt0B,IAAcvs0B,KAAKqK,KACzFrK,KAAK4h1B,YAAc9i1B,GACpBkB,KAAK6i2B,iBAAiBj2yB,EAE9B,CACJ,CACIokH,GAAkBhxK,KAAKlB,QAAUkB,KAAK4h1B,aACjC5h1B,KAAK4i2B,YAIN5i2B,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAC3Bni2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,oBALZ/nE,KAAK6i2B,iBAAiB,MASzB7i2B,KAAK4h1B,YAAc5wqB,GAAkBhxK,KAAKlB,QAAUkB,KAAKii2B,oBAC1Dji2B,KAAK6i2B,iBAAiB7i2B,KAAKii2B,oBAE/Bji2B,KAAK2g2B,YAAc,CAAE7h2B,MAAOkB,KAAKlB,OACjCkB,KAAK0w1B,aACL1w1B,KAAKmgoB,iBACT,EACAp+L,EAAWxjc,UAAU+k2B,cAAgB,YAC5BtyrB,GAAkBhxK,KAAKlB,QAAUkB,KAAKlB,MAAQkB,KAAKqK,KAAOrK,KAAKqK,KAAOrK,KAAK6E,KAAO7E,KAAK4h1B,YACxF5h1B,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAKqK,MAAO,GACxCrK,KAAK2g2B,YAAc,CAAE7h2B,MAAOkB,KAAKlB,SAG5BkyK,GAAkBhxK,KAAKlB,QAAUkB,KAAKlB,MAAQkB,KAAK6E,KAAO7E,KAAKqK,KAAOrK,KAAK6E,KAAO7E,KAAK4h1B,aACxF5h1B,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAK6E,MAAO,GACxC7E,KAAK2g2B,YAAc,CAAE7h2B,MAAOkB,KAAKlB,OAG7C,EACAijc,EAAWxjc,UAAUml2B,iBAAmB,SAAU/wzB,GAC9C,IAAIgxzB,EAAa,KACbh7Y,EAAgB,KAChBi7Y,EAAiB,KACrB,GAA6B,mBAAzB5j2B,KAAKgje,gBAAsC,CAC3C,IAAI3a,EAAU,IAAI4M,GAAqBj1d,KAAKwY,QAClB,cAAtBxY,KAAK401B,cACLjsY,EAAgB,CAAExtc,OAAQnb,KAAKyj2B,eAAgBh91B,KAAM,WAAYyid,SAAU,OAC3E06Y,EAAiB,CAAEzo1B,OAAQktc,EAAQoN,eAAe,CAAEvM,SAAU,QAAUzid,KAAM,cAG9Ekid,EAAgB,CAAExtc,OAAQnb,KAAKyj2B,eAAgBh91B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAC5FgooB,EAAiB,CAAEzo1B,OAAQktc,EAAQoN,eAAe,CAAEvM,SAAU,QAAUzid,KAAM,WAAYm1N,SAAU,WAE5G,MAGQ+sP,EADsB,cAAtB3od,KAAK401B,aACW,CAAEz50B,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,OAGzD,CAAE/tc,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAOlG,OAHI5qD,GADJ2yrB,EAAa3j2B,KAAKi21B,eAAej21B,KAAKy1wB,UAAU19vB,UAAU46B,EAAKg2a,MACA,mBAAzB3od,KAAKgje,kBACvC2gY,EAAa3j2B,KAAKi21B,eAAej21B,KAAKy1wB,UAAU19vB,UAAU46B,EAAKixzB,KAE5DD,CACX,EACA5ha,EAAWxjc,UAAUok2B,kBAAoB,SAAU7j2B,GAC/C,KAAMA,aAAiBkZ,QAAUg5J,GAAkBlyK,GAAQ,CACvD,IAAI+k2B,EAAY,KACZze,EAActm1B,EACG,kBAAVA,IACPsm1B,EAActm1B,EAAM6B,YAIxB,GAA6B,mBAAzBX,KAAKgje,gBAAsC,CAC3C,IAAI3a,EAAU,IAAI4M,GAAqBj1d,KAAKwY,QAClB,cAAtBxY,KAAK401B,cACW,CAAEz50B,OAAQnb,KAAKyj2B,eAAgBh91B,KAAM,WAAYyid,SAAU,OAC1D,CAAE/tc,OAAQktc,EAAQoN,eAAe,CAAEvM,SAAU,QAAUzid,KAAM,cAG9D,CAAE0U,OAAQnb,KAAKyj2B,eAAgBh91B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAE3E,CAAEzgN,OAAQktc,EAAQoN,eAAe,CAAEvM,SAAU,QAAUzid,KAAM,WAAYm1N,SAAU,WAE5G,KAE8B,cAAtB57N,KAAK401B,aACW,CAAEz50B,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,OAIzD,CAAE/tc,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAGlG,IAAIyZ,GAAU,EACd,GAA2B,kBAAhB+vmB,EACPA,EAAc,KACd/vmB,GAAU,OAOV,GAJ2B,kBAAhB+vmB,IACPA,EAAcA,EAAY7v0B,UAE9Bsu1B,EAAY7j2B,KAAK0j2B,iBAAiBte,IAClB,CACZ,IACI0e,EAAiB,KAIrBA,EAAiB,8IAFF,kJAGIhj2B,KAAKsk1B,KAAiB0e,EAAehj2B,KAAKsk1B,IACrD,mBAAoBtk1B,KAAKsk1B,IAAgB9g1B,OAAO,IAAI0T,KAAKhY,KAAKk21B,WAAW9Q,KAC7E/vmB,GAAU,EAGVwunB,EAAY,IAAI7r1B,KAAKot0B,EAE7B,CAEA/vmB,GACKr1O,KAAK4h1B,aACN5h1B,KAAKii2B,mBAAqB7c,GAE9Bpl1B,KAAKiie,cAAc,CAAEnje,MAAO,OAAQ,IAGpCkB,KAAKiie,cAAc,CAAEnje,MAAO+k2B,IAAa,EAEjD,CACJ,EACA9ha,EAAWxjc,UAAUwl2B,eAAiB,WAC7B/yrB,GAAkBhxK,KAAKwj2B,gBAAiBxj2B,KAAK4i2B,aAC1C5i2B,KAAK4i2B,aAAkD,IAApC5i2B,KAAKwj2B,aAAa9+1B,QAAQ,KAC7Cg6d,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAK2+nB,aAAc3+nB,MAGhE0+d,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAK2+nB,cAGjE,EACA58L,EAAWxjc,UAAUgrG,WAAa,WAC9Bm1X,GAAa53d,IAAI9G,KAAK61pB,aAAa71lB,QAAQ,GAAI,YAAahgE,KAAKgk2B,gBAAiBhk2B,MAClF0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,UAAW1kc,KAAKgruB,eAAgBhruB,MACpE0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAKik2B,kBAAmBjk2B,MACrE0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,OAAQ1kc,KAAKkk2B,iBAAkBlk2B,MACnE0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAK+rrB,aAAc/rrB,MAC5DA,KAAK4i2B,YACLlkY,GAAa53d,IAAI9G,KAAK0kc,aAAc,UAAW1kc,KAAKsn1B,eAAgBtn1B,MAExEA,KAAK+j2B,iBAELrlY,GAAa53d,IAAI9G,KAAK0kc,aAAc,SAAU1kc,KAAKmk2B,mBAAoBnk2B,MACnEA,KAAK2ioB,iBAAmB3ioB,KAAK61pB,aAAav0B,aAC1C5iK,GAAa53d,IAAI9G,KAAK61pB,aAAav0B,YAAa,uBAAwBthoB,KAAK81pB,aAAc91pB,MAE3FA,KAAKo4pB,aACL15L,GAAa53d,IAAI9G,KAAKo4pB,YAAa,QAASp4pB,KAAKqj1B,iBAAkBrj1B,MAEvEA,KAAKk11B,kBAAoBxz1B,GAAO1B,KAAKk11B,kBAAmBl11B,KAAK06e,YAC7D16e,KAAKok2B,gBAAkB,IAAIhqX,GAAep6e,KAAK0kc,aAAc,CACzD5/L,UAAW,UACXk2O,UAAWh7e,KAAKqk2B,qBAAqB921B,KAAKvN,MAC1C06e,WAAY16e,KAAKk11B,mBAEzB,EACAnzZ,EAAWxjc,UAAU+o1B,eAAiB,SAAUpq1B,GAC5C,OAAQA,EAAE03H,MACN,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,YACL,IAAK,OACL,IAAK,MACL,IAAK,UACG50H,KAAK4i2B,YAAe5i2B,KAAKu1pB,UAAav1pB,KAAKw3c,WAC5B,WAAXt6c,EAAE03H,MACF13H,EAAEijE,iBAENngE,KAAKg+F,OAAO,iBAAkB,CAC1Bj2B,OAAQ,iBACR7qE,EAAGA,KAOvB,EACA6kc,EAAWxjc,UAAU+l2B,aAAe,WAC3BtzrB,GAAkBhxK,KAAK61pB,eACxBn3L,GAAa73d,OAAO7G,KAAK61pB,aAAa71lB,QAAQ,GAAI,YAAahgE,KAAKgk2B,iBAExEtlY,GAAa73d,OAAO7G,KAAK0kc,aAAc,UAAW1kc,KAAKgruB,gBACvDtsQ,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAKik2B,mBACrDvlY,GAAa73d,OAAO7G,KAAK0kc,aAAc,OAAQ1kc,KAAKkk2B,kBACpDxlY,GAAa73d,OAAO7G,KAAK0kc,aAAc,SAAU1kc,KAAKmk2B,oBACtDzlY,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAK+rrB,cACjD/rrB,KAAK4i2B,YACLlkY,GAAa73d,OAAO7G,KAAK0kc,aAAc,UAAW1kc,KAAKsn1B,gBAEvDtn1B,KAAK2ioB,iBAAmB3ioB,KAAK61pB,aAAav0B,aAC1C5iK,GAAa73d,OAAO7G,KAAK61pB,aAAav0B,YAAa,uBAAwBthoB,KAAK81pB,cAEhF91pB,KAAKo4pB,aACL15L,GAAa73d,OAAO7G,KAAKo4pB,YAAa,QAASp4pB,KAAKqj1B,iBAE5D,EACAthZ,EAAWxjc,UAAU8k1B,iBAAmB,WACpC,GAAKrj1B,KAAKsG,UAGLtG,KAAK0kc,aAAa1vK,SAAU,CAC7B,IAAIl2R,EAAQkB,KAAK0kc,aAAat0b,aAAa,SACd,mBAAzBpQ,KAAKy5D,QAAQ2nF,SAAyD,uBAAzBphJ,KAAKy5D,QAAQ2nF,UAC1DtiJ,EAAQ,GACRkB,KAAK+i2B,eAAiB,KACtB/i2B,KAAK0kc,aAAa97b,aAAa,QAAS,KAE5C5I,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAK+i2B,iBAAkB,GACnD/i2B,KAAKuk2B,eACDvk2B,KAAK0kc,eACL1kc,KAAK6i2B,iBAAiB/j2B,GACtBkB,KAAK0w1B,aAEb,CACJ,EACA3uZ,EAAWxjc,UAAUgm2B,aAAe,WAChCvk2B,KAAK+qD,YAAc/qD,KAAKlB,MAAQkB,KAAKlB,MAAQ,IAAIkZ,KACjDhY,KAAK8g2B,aAAe9g2B,KAAKlB,MACzBkB,KAAK8i2B,qBAAwB9xrB,GAAkBhxK,KAAK+i2B,gBAAmB,GACnE/i2B,KAAKy1wB,UAAU17vB,WAAW/Z,KAAK+i2B,eAAgB,CAC3C5n1B,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,OAEnE,EACAnnB,EAAWxjc,UAAU4l2B,mBAAqB,SAAUjn2B,GAC3C8C,KAAKsG,SAGVpJ,EAAEkjE,iBACN,EACA2hY,EAAWxjc,UAAUs6pB,eAAiB,WAC9B74pB,KAAK2ioB,iBAAmB3ioB,KAAK61pB,aAAav0B,aAC1C5iK,GAAa53d,IAAI9G,KAAK61pB,aAAav0B,YAAa,uBAAwBthoB,KAAK81pB,aAAc91pB,KAEnG,EACA+hc,EAAWxjc,UAAUu3pB,aAAe,SAAU54pB,GACrC8C,KAAKsG,UAGVpJ,EAAEijE,iBACFngE,KAAKk4D,MAAMh7D,GACf,EACA6kc,EAAWxjc,UAAUysuB,eAAiB,SAAU9tuB,GACxC8C,KAAK4i2B,aACL1l2B,EAAEijE,iBACFngE,KAAKg+F,OAAO,mBAAoB,CAC5Bj2B,OAAQ,mBAGpB,EACAg6X,EAAWxjc,UAAU25D,MAAQ,SAAUgB,GACnCl5D,KAAKiie,cAAc,CAAEnje,MAAO,OAAQ,GAC/BkB,KAAK4i2B,YACN5i2B,KAAK6i2B,iBAAiB,IAE1B,IAAI2B,EAAc,CACdtryB,MAAOA,GAYX,GAVAl5D,KAAKo/d,QAAQ,UAAWolY,GACxBxk2B,KAAKii2B,mBAAqB,GAC1Bji2B,KAAKwi2B,cACLxi2B,KAAKyk2B,cACLzk2B,KAAKyh2B,YAAYvoyB,GACbl5D,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,eAAgB,CACxBj2B,OAAQ,mBAGZ+4Z,GAAQ9ge,KAAKy5D,QAAS,QAAS,CAC/B,IAAIA,EAAUz5D,KAAKy5D,QACf2pxB,EAAa7tzB,SAASymC,YAAY,iBACtConxB,EAAW/yqB,UAAU,SAAS,GAAO,GACrC52G,EAAQV,cAAcqqxB,EAC1B,CACJ,EACArhZ,EAAWxjc,UAAUmm2B,qBAAuB,SAAUxn2B,GAClDA,EAAEijE,iBAEFngE,KAAK2k2B,eAAeC,kBAAkB,kBAC1C,EACA7ia,EAAWxjc,UAAUsk2B,iBAAmB,SAAU/j2B,GAC9Cg/nB,GAAMnqW,SAAS70R,EAAOkB,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,gBACvE,EACA5gM,EAAWxjc,UAAUyl2B,gBAAkB,SAAU9m2B,GACxC8C,KAAKsG,UAGVtG,KAAKoi2B,eAAgB,EACjBllY,GAAQK,WACRv9d,KAAK0kc,aAAa97b,aAAa,WAAY,IAC3C5I,KAAK0kc,aAAaz7b,QAEtB/L,EAAEijE,iBACGngE,KAAKw3c,WACFx3c,KAAKoj2B,aACLpj2B,KAAKuiC,KAAKrlC,IAGV8C,KAAK+h2B,mBAAoB,EACzB/h2B,KAAKwd,KAAK,KAAMtgB,GACa,mBAAzB8C,KAAKgje,iBACLhje,KAAK0kc,aAAa91L,QAEtB5uQ,KAAK0kc,aAAa91L,QAClBn8M,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAY,CAACulwB,MACzClvyB,GAASzyD,KAAK61pB,aAAa71lB,QAAS4hyB,OAG5C5h2B,KAAKoi2B,eAAgB,EACzB,EACArga,EAAWxjc,UAAUw/0B,6BAA+B,WAChD,IAAK/sqB,GAAkBhxK,KAAK+joB,gBACxB,IAAK,IAAI5pa,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAK2C,KAAK+joB,gBAAiB5pa,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAC1E,IAAIv7N,EAAMs5L,EAAGiiC,GACb,IAAKnpD,GAAkBhxK,KAAK+joB,eAAe,GAAKnloB,KACxC+90B,IAAcj40B,QAAQ9F,IAAQ,EAC9B,GAAY,UAARA,EAAiB,CACjB,IAAIuloB,EAAsBnkoB,KAAK+joB,eAAe,GAAKnloB,GAAK8D,QAAQ,OAAQ,KAAM6S,OACnD,KAAvB4unB,GACA1xkB,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAY+niB,EAAmBnjoB,MAAM,KAEzE,MACK,GAAY,UAARpC,EAAiB,CACtB,IAAIwloB,EAAWpkoB,KAAK61pB,aAAaz5jB,UAAUhsF,aAAaxR,GACnDoyK,GAAkBozd,GASnBA,EAAWpkoB,KAAK+joB,eAAe,GAAKnloB,GARS,MAAzCwloB,EAASzqnB,OAAOyqnB,EAAStmoB,OAAS,GAClCsmoB,GAAsBpkoB,KAAK+joB,eAAe,GAAKnloB,GAG/CwloB,EAAWA,EAAW,IAAMpkoB,KAAK+joB,eAAe,GAAKnloB,GAM7DoB,KAAK61pB,aAAaz5jB,UAAUxzF,aAAahK,EAAKwloB,EAClD,MAEIpkoB,KAAK61pB,aAAaz5jB,UAAUxzF,aAAahK,EAAKoB,KAAK+joB,eAAe,GAAKnloB,GAIvF,CAER,EACAmjc,EAAWxjc,UAAUsm2B,6BAA+B,WAChD,IAAK7zrB,GAAkBhxK,KAAK+joB,gBACxB,IAAK,IAAI5pa,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAK2C,KAAK+joB,gBAAiB5pa,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAC1E,IAAIv7N,EAAMs5L,EAAGiiC,GACTwinB,IAAcj40B,QAAQ9F,GAAO,GAC7BoB,KAAK0kc,aAAa97b,aAAahK,EAAKoB,KAAK+joB,eAAe,GAAKnloB,GAErE,CAER,EACAmjc,EAAWxjc,UAAUyloB,eAAiB,SAAUq8N,EAAaC,GACpDtvrB,GAAkBsvrB,KACnBA,EAAeA,EAAY591B,QAAQ,OAAQ,KAAM6S,QAEhDy7J,GAAkBqvrB,KACnBA,EAAeA,EAAY391B,QAAQ,OAAQ,KAAM6S,QAErDuonB,GAAMp3I,YAAY25W,EAAa,CAACrg2B,KAAK61pB,aAAaz5jB,WAAYkkwB,GAC1Dtg2B,KAAKo21B,cACLt4N,GAAMp3I,YAAY25W,EAAa,CAACrg2B,KAAKo21B,cAAekK,EAE5D,EACAv+Z,EAAWxjc,UAAUum2B,wBAA0B,SAAU5n2B,GACrD,OAAQA,EAAE8kN,QACN,IAAK,SACGhiN,KAAKoj2B,aACLpj2B,KAAKuiC,KAAKrlC,GAGV8C,KAAK61pB,aAAaz5jB,UAAU91D,SAAStmC,KAAK2sB,OAAO1jB,OAErD,MACJ,IAAK,QACIjJ,KAAKoj2B,cAIDpj2B,KAAKlB,SAAWkB,KAAK+qD,aAAgB/qD,KAAKoj2B,cAC3Cpj2B,KAAK61pB,aAAaz5jB,UAAU91D,SAAStmC,KAAK2sB,OAAOiiP,QAJrD5uQ,KAAKwd,KAAK,KAAMtgB,GAOS,mBAAzB8C,KAAKgje,iBACLhje,KAAK0kc,aAAa91L,QAIlC,EACAmzL,EAAWxjc,UAAU0l2B,kBAAoB,WAErC,GADAjk2B,KAAKgwa,WAAY,EACZhwa,KAAKsG,QAAV,CAGItG,KAAK4i2B,aAAe5i2B,KAAK0kc,aAAa5lc,OAASkB,KAAKgoX,eAChDhoX,KAAKmi2B,iBAAoBni2B,KAAKlB,OAAkC,SAAxBkB,KAAKo+nB,gBAAqD,UAAxBp+nB,KAAKo+nB,iBAA8Bp+nB,KAAKgoX,cAClHhoX,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAC3Bni2B,KAAK0kc,aAAar2K,eAAiB,EACnCruR,KAAK0kc,aAAap2K,aAAetuR,KAAK0kc,aAAa5lc,MAAMhB,SAGjE,IAAIin2B,EAAiB,CACjBn7xB,MAAO5pE,MAEXA,KAAK+h2B,mBAAoB,EACzB/h2B,KAAKo/d,QAAQ,QAAS2lY,GACtB/k2B,KAAKmgoB,kBACDngoB,KAAKgl2B,cAAgBhl2B,KAAKoi2B,eAC1Bpi2B,KAAKwd,MAfT,CAiBJ,EACAukb,EAAWxjc,UAAUogoB,aAAe,WAChC3+nB,KAAKs01B,gBAAiB,EAClBt01B,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,eAAgB,CACxBj2B,OAAQ,kBAGpB,EACAg6X,EAAWxjc,UAAU2l2B,iBAAmB,SAAUhn2B,GAC9C,GAAK8C,KAAKsG,QAAV,CAsBA,GAnBAtG,KAAKil2B,mBAC2B,KAA5Bjl2B,KAAK0kc,aAAa5lc,OAAgBkyK,GAAkBhxK,KAAKlB,SACzDkB,KAAKii2B,mBAAqB,KAC1Bji2B,KAAK6i2B,iBAAiB,KAE1B7i2B,KAAKsi2B,QAAS,EACdti2B,KAAKwi2B,aAAY,GAAO,GACxBxi2B,KAAKsi2B,QAAS,EACdti2B,KAAKyk2B,cACLzk2B,KAAKkl2B,cAAcho2B,GACf8C,KAAK4i2B,YAAc5i2B,KAAKmi2B,iBAAmBni2B,KAAKgoX,aAAuC,WAAxBhoX,KAAKo+nB,iBAChEp+nB,KAAK0kc,aAAa5lc,QAAUkB,KAAKmi2B,iBAAoBni2B,KAAKlB,OAAkC,SAAxBkB,KAAKo+nB,gBAAqD,UAAxBp+nB,KAAKo+nB,iBAA8Bp+nB,KAAKgoX,aAC9IhoX,KAAK6i2B,iBAAiB,KAG9B7i2B,KAAK0w1B,aACD1w1B,KAAKoj2B,cAAgB7t0B,SAAS0+P,gBAAkBj0R,KAAK0kc,cACrD1kc,KAAKuiC,KAAKrlC,GAEe,eAAzB8C,KAAKgje,gBAAkC,CACvC,IAAImiY,EAAgB,CAChBv7xB,MAAO5pE,MAEXA,KAAKo/d,QAAQ,OAAQ+lY,EACzB,CACInl2B,KAAKoj2B,eACLpj2B,KAAKk11B,kBAAoBxz1B,GAAO1B,KAAKk11B,kBAAmBl11B,KAAK06e,YAC7D16e,KAAKol2B,wBAA0B,IAAIhrX,GAAep6e,KAAK+01B,gBAAgBzuzB,SAAS,GAAGwgT,kBAAmB,CAClGhiF,UAAW,UACXk2O,UAAWh7e,KAAK8k2B,wBAAwBv31B,KAAKvN,MAC7C06e,WAAY16e,KAAKk11B,qBAGzBl11B,KAAKs01B,gBAAiB,CAlCtB,CAmCJ,EACAvyZ,EAAWxjc,UAAU8m2B,gBAAkB,SAAUno2B,GACvC8zK,GAAkBhxK,KAAKu1pB,WAAcvkf,GAAkBhxK,KAAK61pB,iBAAkB71pB,KAAK61pB,aAAaz5jB,UAAUh4F,SAASlH,EAAEilB,SAAsB,cAAXjlB,EAAEuJ,MACnIzG,KAAKu1pB,SAAS97lB,SAAWz5D,KAAKu1pB,SAAS97lB,QAAQr1D,SAASlH,EAAEilB,UAAyB,eAAXjlB,EAAEuJ,MAC3EvJ,EAAEijE,iBAEN,IAAIh+C,EAASjlB,EAAEilB,OACT2+c,GAAQ3+c,EAAQ,kCAAsC6uJ,GAAkBhxK,KAAK61pB,eAC1E/0L,GAAQ3+c,EAAQ,oBAA0BniB,KAAK61pB,aAAaz5jB,WAC5Dj6E,EAAOhe,UAAUC,SAAS,UAC1B+d,EAAOhe,UAAUC,SAAS,iBAI1B08d,GAAQ3+c,EAAQ,mCAEjBA,EAAOhe,UAAUC,SAAS,WACtB4sK,GAAkB9zK,EAAEilB,OAAOje,gBAC5BhH,EAAEilB,OAAOje,cAAcC,UAAUC,SAAS,eAC1C08d,GAAQ3+c,EAAQ,eAChB2+c,GAAQ3+c,EAAQ,cAAche,UAAUC,SAAS,KAAOpE,KAAKmgM,MAAM17L,gBAGjEq8d,GAAQ3+c,EAAQ,wBAClBA,EAAOhe,UAAUC,SAAS,YAC1B+d,EAAOhe,UAAUC,SAAS,WACxB,IAAI4T,MAAMhY,KAAKlB,UAAY0lN,EAAOjmN,UAAUqi2B,iBAAiB7g2B,KAAKC,KAAMA,KAAKlB,SALlFkB,KAAKuiC,KAAKrlC,IAVd8C,KAAKuiC,KAAKrlC,GACV8C,KAAKi4pB,WAkBb,EACAl2N,EAAWxjc,UAAU8l2B,qBAAuB,SAAUnn2B,GAClD,IAAIoo2B,EAActl2B,KAAK241B,cACvB,OAAQz71B,EAAE8kN,QACN,IAAK,aACDhiN,KAAKgi2B,iBAAkB,EACvBhi2B,KAAKuiC,KAAKrlC,GACV8C,KAAK0kc,aAAa91L,QAClB,MACJ,IAAK,eACD5uQ,KAAKgi2B,iBAAkB,EACvBhi2B,KAAKil2B,mBACLjl2B,KAAKwi2B,cACLxi2B,KAAKkl2B,cAAcho2B,GACU,eAAzB8C,KAAKgje,iBACLhje,KAAKwd,KAAK,KAAMtgB,GAEpB,MACJ,IAAK,SACD8C,KAAKuiC,KAAKrlC,GACV,MACJ,IAAK,QACD8C,KAAKil2B,mBACLjl2B,KAAKwi2B,cACLxi2B,KAAKyk2B,cACLzk2B,KAAKkl2B,cAAcho2B,GACnB8C,KAAK0w1B,aACA1w1B,KAAKoj2B,cAAgB7t0B,SAAS0+P,gBAAkBj0R,KAAK0kc,cACtD1kc,KAAKuiC,KAAKrlC,GAEV8C,KAAKoj2B,eACLlm2B,EAAEijE,iBACFjjE,EAAEkjE,mBAEN,MACJ,IAAK,MACL,IAAK,WAEG,IAAIpyC,EAAQhuB,KAAK0kc,aAAar2K,eAC1BpgQ,EAAMjuB,KAAK0kc,aAAap2K,aAC5B,GAAItuR,KAAK4i2B,aAAe5i2B,KAAKu1pB,WAAav1pB,KAAKw3c,SAAU,CACrD,IAAIwS,EAAWhqd,KAAK0kc,aAAa5lc,MAAMhB,QACxB,IAAVkwB,GAAeC,IAAQ+7b,GAAc/7b,IAAQ+7b,GAAyB,QAAb9sd,EAAE8kN,QAAgC,IAAVh0L,GAA4B,aAAb9wB,EAAE8kN,SACnG9kN,EAAEijE,iBAENngE,KAAKg+F,OAAO,iBAAkB,CAC1Bj2B,OAAQ,iBACR7qE,EAAGA,IAEP8wB,EAAQhuB,KAAK0kc,aAAar2K,eAC1BpgQ,EAAMjuB,KAAK0kc,aAAap2K,YAC5B,CACAtuR,KAAKil2B,mBACLjl2B,KAAKwi2B,cACLxi2B,KAAKyk2B,cACLzk2B,KAAKkl2B,cAAcho2B,GACnB8C,KAAK0w1B,aACD1w1B,KAAK4i2B,aACL5i2B,KAAK0kc,aAAar2K,eAAiBrgQ,EACnChuB,KAAK0kc,aAAap2K,aAAergQ,GAEpB,QAAb/wB,EAAE8kN,QAAoB9kN,EAAEilB,SAAWniB,KAAK0kc,cAAgB1kc,KAAKoj2B,cAAgB7t0B,SAAS0+P,gBAAkBj0R,KAAK0kc,eAC7Gxnc,EAAEijE,iBACFngE,KAAK021B,mBAAmB9nlB,SAEX,aAAb1xQ,EAAE8kN,QAAyB9kN,EAAEilB,SAAWniB,KAAK0kc,cAAgB1kc,KAAKoj2B,cAAgB7t0B,SAAS0+P,gBAAkBj0R,KAAK0kc,cAClH1kc,KAAKuiC,KAAKrlC,GAEd,MAER,QACI8C,KAAKul2B,cAAcro2B,GAEF,WAAbA,EAAE8kN,QAAuBsjpB,IAAgBtl2B,KAAKmgM,OAC9CngM,KAAKuiC,KAAKrlC,GAG1B,EACA6kc,EAAWxjc,UAAUgn2B,cAAgB,SAAUro2B,GAC3C8C,KAAK8g2B,cAAkB9vrB,GAAkBhxK,KAAKlB,QAAU,IAAIkZ,MAAMhY,KAAKlB,QAAW,KAC9EkB,KAAKoj2B,eACL5+oB,EAAOjmN,UAAUg61B,gBAAgBx41B,KAAKC,KAAM9C,GACxC8C,KAAKoj2B,cACL/ryB,GAAWr3D,KAAK0kc,aAAc,CAC1B,wBAAyB,GAAK1kc,KAAKu+1B,wBAInD,EACAx8Z,EAAWxjc,UAAUkm2B,YAAc,WAC/B,IAAKzzrB,GAAkBhxK,KAAKlB,SAAakyK,GAAkBhxK,KAAK8g2B,eAChC,mBAAzB9g2B,KAAKgje,kBAA2Chje,KAAKlB,SAAWkB,KAAK8g2B,cAA6C,mBAAzB9g2B,KAAKgje,kBAA2Chje,KAAKlB,SAAWkB,KAAK+g2B,oBAC7J/g2B,KAAKu1pB,UACDv1pB,KAAKu1pB,SAAS97lB,QAAQhsC,iBAAiB,IAAMmm0B,KAAU911B,OAAS,GAChE40D,GAAY1yD,KAAKu1pB,SAAS97lB,QAAQhsC,iBAAiB,IAAMmm0B,KAAW,CAACA,OAGxE5irB,GAAkBhxK,KAAKlB,SAClBkB,KAAKlB,QAAUkB,KAAKqK,MAAUrK,KAAKlB,QAAUkB,KAAK6E,KAAM,CAC1D,IAAI2g2B,EAAa,IAAIxt1B,KAAKhY,KAAKk21B,WAAWl21B,KAAKlB,QAC/C0lN,EAAOjmN,UAAU6smB,WAAWrrmB,KAAKC,KAAM,QAASwl2B,EACpD,CAGZ,EACAzja,EAAWxjc,UAAU0m2B,iBAAmB,WACpC,IAAI9p1B,EAGAwtc,EAgBAwqY,EAwBA1myB,GAvCyB,mBAAzBzsD,KAAKgje,gBACL7nd,EAAU61J,GAAkBhxK,KAAKwj2B,cAAoCxj2B,KAAKyj2B,eAAzBzj2B,KAAKwj2B,aAJ5C,KAMI1i2B,KAAKd,KAAKwj2B,gBALV,YAKuC1i2B,KAAKd,KAAKwj2B,gBAC/Dro1B,EAAS61J,GAAkBhxK,KAAKwj2B,cAAgBxj2B,KAAKwj2B,aAAexj2B,KAAKwj2B,aAAa9g2B,QAAQ,KAAM,MAEnGsuK,GAAkB71J,IAOnBA,EAASnb,KAAKwj2B,aANJro1B,EAAOna,MAAM,KAAKlD,OAAS,EAC3B,IACNqd,EAASA,EAAOzY,QAAQ,KAAM,MAkCtC,GAzBQyw1B,EAFqB,mBAAzBnz1B,KAAKgje,gBACqB,cAAtBhje,KAAK401B,aACS,CACVz50B,OAAS61J,GAAkBhxK,KAAKwj2B,cAAoCxj2B,KAAKyj2B,eAAzBzj2B,KAAKwj2B,aACrD/81B,KAAM,WAAYyid,SAAU,OAIlB,CACV/tc,OAAS61J,GAAkBhxK,KAAKwj2B,cAAoCxj2B,KAAKyj2B,eAAzBzj2B,KAAKwj2B,aACrD/81B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAMjD+sP,EADsB,cAAtB3od,KAAK401B,aACW,CAAEz50B,OAAQA,EAAQ1U,KAAM,WAAYyid,SAAU,OAG9C,CAAE/tc,OAAQA,EAAQ1U,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAKhD,kBAA5B57N,KAAK0kc,aAAa5lc,QACzBkB,KAAK0kc,aAAa5lc,MAAQkB,KAAK0kc,aAAa5lc,MAAMyW,QAExB,mBAAzBvV,KAAKgje,gBACN,GAAIhje,KAAKi21B,eAAej21B,KAAKy1wB,UAAU19vB,UAAU/X,KAAK0kc,aAAa5lc,MAAOq01B,IAAe,CACrF,IAAIsS,EAAgBzl2B,KAAK0kc,aAAa5lc,MAAM4D,QAAQ,wBAAwB,SAAUiB,GAAS,OAAOA,EAAM+h2B,mBAAqB,IACjIj5yB,EAAOzsD,KAAKy1wB,UAAU19vB,UAAU0t1B,EAAetS,EACnD,MAGQxqY,EADsB,cAAtB3od,KAAK401B,aACW,CAAEz50B,OAAQA,EAAQ1U,KAAM,WAAYyid,SAAU,OAG9C,CAAE/tc,OAAQA,EAAQ1U,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAEnFnvK,EAAOzsD,KAAKy1wB,UAAU19vB,UAAU/X,KAAK0kc,aAAa5lc,MAAO6pd,QAK7Dl8Z,GAASukH,GADTvkH,EAAOzsD,KAAKy1wB,UAAU19vB,UAAU/X,KAAK0kc,aAAa5lc,MAAOq01B,KACrB7u1B,OAAOmoD,GAAS,KAAOA,GACtDukH,GAAkBhxK,KAAKwj2B,eAA6C,KAA5Bxj2B,KAAK0kc,aAAa5lc,OAAgBkB,KAAK4h1B,aAC3E5h1B,KAAKs01B,iBAAoBt01B,KAAKs01B,gBAAkBt01B,KAAK0kc,aAAa5lc,QAAUkB,KAAK8i2B,wBAC3C,IAApC9i2B,KAAKwj2B,aAAa9+1B,QAAQ,MAC7B+nD,EAAK44K,YAAYrlO,KAAKlB,MAAMga,eAKV,eAAzB9Y,KAAKgje,iBAAsChje,KAAKlB,QAAUwF,OAAOtE,KAAKlB,QAAW2tD,GAClFA,EAAKyla,SAASlyd,KAAKlB,MAAMsa,WAAYpZ,KAAKlB,MAAMwa,aAActZ,KAAKlB,MAAM0a,aAAcxZ,KAAKlB,MAAM4a,mBAElG1Z,KAAK4h1B,YAAcn1xB,GACnBzsD,KAAK6i2B,iBAAiB7i2B,KAAKy1wB,UAAU17vB,WAAW0yC,EAAM0myB,IAClDnz1B,KAAK0kc,aAAa5lc,QAAUkB,KAAK8i2B,sBACjC9i2B,KAAKiie,cAAc,CAAEnje,MAAO2tD,IAAQ,IAGlCzsD,KAAK4h1B,YACP5h1B,KAAK0kc,aAAa5lc,QAAUkB,KAAK8i2B,sBACjC9i2B,KAAKiie,cAAc,CAAEnje,MAAO2tD,IAAQ,GAGxCzsD,KAAK4h1B,aAAen1xB,GAAQzsD,KAAK0kc,aAAa5lc,SAAWkB,KAAK4i2B,WAAa5i2B,KAAKmi2B,gBAAkB,KAClGni2B,KAAKiie,cAAc,CAAEnje,MAAO,OAAQ,GAEpCwF,OAAOtE,KAAKlB,QACZkB,KAAKiie,cAAc,CAAEnje,MAAO,OAAQ,GAEpCkyK,GAAkBhxK,KAAKlB,SACvBkB,KAAK+qD,YAAc,IAAI/yC,MAAK,IAAIA,MAAOk6c,SAAS,EAAG,EAAG,EAAG,IAEjE,EACAnwB,EAAWxjc,UAAUon2B,eAAiB,WAClC,IAAI/kpB,EAAQ5gN,KACZA,KAAKo21B,aAAep21B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAgBu4e,IAAO,IAAMi9W,IAAc5r1B,GAAI9V,KAAK0kc,aAAa5ub,GAAK,aACtH9V,KAAKo21B,aAAaxt1B,aAAa,aAAc5I,KAAKy5D,QAAQ3jD,IAC1D9V,KAAKo21B,aAAaxt1B,aAAa,OAAQ,UAClCooK,GAAkBhxK,KAAK6O,YACxB7O,KAAKo21B,aAAalq1B,WAAa,IAAMlM,KAAK6O,UAE1Cqud,GAAQK,WACRv9d,KAAK4l2B,cACL5l2B,KAAKq21B,MAAQr21B,KAAKg+B,cAAc,OAChCh+B,KAAKq21B,MAAMnq1B,UAAiBu4e,IAAO,gBACnClvd,SAASwK,KAAK7zB,WAAa,IAAM211B,IACjC7h2B,KAAKq21B,MAAMhy1B,MAAMqmB,QAAU,QAC3B6K,SAASwK,KAAKxoB,YAAYvX,KAAKq21B,QAGnCr21B,KAAK+01B,gBAAgB5/0B,cAAc,eAAejJ,UAAY,GAC9DlM,KAAKu1pB,SAAW,IAAI18Y,GAAM74Q,KAAKo21B,aAAc,CACzC5xhB,QAASxkU,KAAK+01B,gBACd95N,SAAU/9J,GAAQK,SAAWhoc,SAASwK,KAAO//B,KAAK61pB,aAAaz5jB,UAC/DhnF,SAAU8nd,GAAQK,SAAW,CAAEnwd,EAAG,SAAU6hB,EAAG,UAAcjvB,KAAK+te,UAAY,CAAE3ge,EAAG,QAAS6hB,EAAG,UAAa,CAAE7hB,EAAG,OAAQ6hB,EAAG,UAC5H3X,QAz7BM,EA07BNqlnB,WAAY,YACZ5uJ,UAAW/te,KAAK+te,UAChBvlb,OAAQxoD,KAAKwoD,OACb4zkB,UAAWl/J,GAAQK,SAAW,CAAEnwd,EAAG,MAAO6hB,EAAG,OAAWjvB,KAAK+te,UAAY,CAAE3ge,EAAG,MAAO6hB,EAAG,QAAW,CAAE7hB,EAAG,OAAQ6hB,EAAG,QACnH0/G,KAAM,WACEuuV,GAAQK,UAAY38Q,EAAMsipB,iBAC1BtipB,EAAMilpB,UAAY5k2B,SAAS0D,OAAOhC,iBAAiBi+M,EAAMm0oB,gBAAgB5/0B,cAAc,8BAA8ByzX,YAAa,IAAM,GACxIhoL,EAAMgxd,YAAc,IAAI51L,GAAMp7R,EAAMm0oB,gBAAgB5/0B,cAAc,sBAAuB,CACrF2w1B,MAAOllpB,EAAMmlpB,qBAAqBx41B,KAAKqzM,KAE3C89Q,GAAa53d,IAAI85M,EAAMm0oB,gBAAgB5/0B,cAAc,sBAAuB,aAAcyrM,EAAMolpB,kBAAmBplpB,IAEzF,mBAA1BA,EAAMoiR,iBACFztc,SAAS0+P,gBAAkBrzE,EAAM8jP,eACjC9jP,EAAMs0oB,kBAAoBxz1B,GAAOk/M,EAAMs0oB,kBAAmBt0oB,EAAM85R,YAChE95R,EAAMm0oB,gBAAgBzuzB,SAAS,GAAGwgT,kBAAkBl4E,QACpDhuD,EAAMwkpB,wBAA0B,IAAIhrX,GAAex5R,EAAMm0oB,gBAAgBzuzB,SAAS,GAAGwgT,kBAAmB,CACpGhiF,UAAW,UACXk2O,UAAWp6R,EAAMkkpB,wBAAwBv31B,KAAKqzM,GAC9C85R,WAAY95R,EAAMs0oB,oBAEtBt0oB,EAAMwkpB,wBAA0B,IAAIhrX,GAAex5R,EAAMi1c,aAAaz5jB,UAAU91D,SAASs6K,EAAMj0L,OAAQ,CACnGm4O,UAAW,UACXk2O,UAAWp6R,EAAMkkpB,wBAAwBv31B,KAAKqzM,GAC9C85R,WAAY95R,EAAMs0oB,oBAIlC,EAAGz/tB,MAAO,WACFmrF,EAAMmhpB,mBACNnhpB,EAAMi1c,aAAaz5jB,UAAU91D,SAASs6K,EAAMj0L,OAAOiiP,QAEnDhuD,EAAM9hN,OACN8hN,EAAMyipB,gBAENzipB,EAAM20c,UACN30c,EAAM20c,SAAS9xlB,UAEnBm9I,EAAMi4oB,gBACNx4X,GAAOz/Q,EAAMw1oB,cACbx1oB,EAAM20c,SAAW30c,EAAMw1oB,aAAe,KACtCx1oB,EAAMqlpB,YAAc,KACpBrlpB,EAAMwkpB,wBAA0B,KAChCxkpB,EAAMslpB,mBACV,EAAGvkM,mBAAoB,WACdzkM,GAAQK,UACT38Q,EAAMr+K,MAEd,IAEJviC,KAAKu1pB,SAAS97lB,QAAQvtD,WAAa,IAAMlM,KAAK6O,SAC9C7O,KAAKkm2B,mBACT,EACAnka,EAAWxjc,UAAUwn2B,qBAAuB,SAAU7o2B,GAClD,IAAI0/E,EAAY,EAChB,GAAI58E,KAAK6l2B,UACL,OAAQ3o2B,EAAEghf,gBACN,IAAK,OACDtha,EAAY,EACZ,MACJ,IAAK,QACDA,GAAa,OAOrB,OAAQ1/E,EAAEghf,gBACN,IAAK,KACDtha,EAAY,EACZ,MACJ,IAAK,OACDA,GAAa,EAMrB58E,KAAKmm2B,aACa,IAAdvpxB,EACA58E,KAAKo51B,aAAal81B,IAEE,IAAf0/E,GACL58E,KAAKm51B,iBAAiBj81B,GAE1B8C,KAAKmm2B,YAAa,EAE1B,EACApka,EAAWxjc,UAAUyn2B,kBAAoB,SAAU9o2B,GAC/C8C,KAAKmm2B,YAAa,CACtB,EACApka,EAAWxjc,UAAU6n2B,gBAAkB,WAC9Bpm2B,KAAKsG,SAKNtG,KAAK0kc,aAAa97b,aAAa,gBAAiB,SAChD5I,KAAK0kc,aAAa97b,aAAa,WAAY5I,KAAKmnV,YALhDnnV,KAAK0kc,aAAa97b,aAAa,gBAAiB,QAChD5I,KAAK0kc,aAAav9G,UAAY,EAMtC,EACA46G,EAAWxjc,UAAUqn2B,YAAc,WAC/B,IAAIzS,EACAyS,EAAc5l2B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW,mBACrDm61B,EAAcrm2B,KAAKg+B,cAAc,KAAM,CAAE9xB,UAAW,iBACpDo61B,EAAKtm2B,KAAKg+B,cAAc,OACxBuo0B,EAAUvm2B,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAW,gBAClDs61B,EAAYxm2B,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAW,kBAsBxD,GApBIin1B,EADsB,cAAtBnz1B,KAAK401B,aACS,CAAEz50B,OAAQ,IAAK+tc,SAAU,YAGzB,CAAE/tc,OAAQ,IAAK+tc,SAAU,WAAYttP,SAAU,WAEjEyqoB,EAAYj11B,YAAc,GAAKpR,KAAKy1wB,UAAU17vB,WAAW/Z,KAAKlB,OAAS,IAAIkZ,KAAQm70B,GAE/EA,EADsB,cAAtBnz1B,KAAK401B,aACS,CAAEz50B,OAAQ,IAAK+tc,SAAU,YAGzB,CAAE/tc,OAAQ,IAAK+tc,SAAU,WAAYttP,SAAU,WAEjE2qoB,EAAQn11B,YAAmBpR,KAAKy1wB,UAAU17vB,WAAW/Z,KAAKlB,OAAS,IAAIkZ,KAAQm70B,GAAe,KAE1FA,EADsB,cAAtBnz1B,KAAK401B,aACS,CAAEz50B,OAAQ,QAAS+tc,SAAU,YAG7B,CAAE/tc,OAAQ,QAAS+tc,SAAU,WAAYttP,SAAU,WAErE4qoB,EAAUp11B,YAAc,GAAKpR,KAAKy1wB,UAAU17vB,WAAW/Z,KAAKlB,OAAS,IAAIkZ,KAAQm70B,GAC7Enz1B,KAAKkj2B,eAAgB,CACrB,IAAIuD,EAAiBzm2B,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAW,kBAC7Dwyd,GAAa53d,IAAI2/1B,EAAgB,uBAAwBzm2B,KAAK0m2B,kBAAmB1m2B,MACjF,IAAI2m2B,EAAmB3m2B,KAAK+01B,gBAAgB5/0B,cAAc,kBAC1Dmx1B,EAAGni2B,UAAU2C,IAAI,iBACjB6/1B,EAAiBxi2B,UAAU2C,IAAI,aAC/B8+1B,EAAYru1B,YAAYkv1B,GACxBb,EAAYru1B,YAAYov1B,EAC5B,CACK3m2B,KAAKkj2B,gBACN0C,EAAYru1B,YAAY8u1B,GAC5BC,EAAG/u1B,YAAYgv1B,GACfD,EAAG/u1B,YAAYiv1B,GACfZ,EAAYru1B,YAAY+u1B,GACxBtm2B,KAAK+01B,gBAAgB9+0B,aAAa2v1B,EAAa5l2B,KAAK+01B,gBAAgBjugB,kBACxE,EACAi7G,EAAWxjc,UAAUmo2B,kBAAoB,SAAUxp2B,GAC/C8C,KAAKuiC,MACT,EACAw/Z,EAAWxjc,UAAU2m2B,cAAgB,SAAUhsyB,GACvCl5D,KAAK0kc,aAAa5lc,QAAUkB,KAAK8i2B,uBAC3B9i2B,KAAK8g2B,cAAgB9g2B,KAAK8g2B,aAAahh2B,cAAgBE,KAAKlB,OAASkB,KAAKlB,MAAMgB,aAC9EE,KAAKqi2B,uBAAyBri2B,KAAKoj2B,cACnCpj2B,KAAKyk2B,cAETzk2B,KAAK2g2B,YAAY7h2B,MAAQkB,KAAKlB,MAC9BkB,KAAK2g2B,YAAYznyB,MAAQA,GAAS,KAClCl5D,KAAK2g2B,YAAYlnyB,QAAUz5D,KAAKy5D,QAChCz5D,KAAK2g2B,YAAY1sM,cAAgBjjf,GAAkB93G,GAC/Cl5D,KAAK+iQ,WAAa/iQ,KAAKykpB,cACvBzkpB,KAAKykpB,eAAgB,EAGrBzkpB,KAAKo/d,QAAQ,SAAUp/d,KAAK2g2B,aAEhC3g2B,KAAK8i2B,qBAAuB9i2B,KAAK0kc,aAAa5lc,MAC9CkB,KAAK8g2B,aAAgBx81B,OAAO,IAAI0T,KAAKhY,KAAKk21B,WAAWl21B,KAAKlB,SAAmD,KAAxC,IAAIkZ,KAAKhY,KAAKk21B,WAAWl21B,KAAKlB,QACnGkB,KAAKi0pB,cAAe,GAG5Bj0pB,KAAKm8tB,aAAc,CACvB,EACAp6R,EAAWxjc,UAAUoh2B,eAAiB,WAClC3/1B,KAAKo/d,QAAQ,YAAap/d,KAAK4/1B,cACnC,EACA79Z,EAAWxjc,UAAUwtrB,aAAe,SAAU7urB,GAC1C8C,KAAKm8tB,YAAen8tB,KAAK0kc,aAAa5lc,QAAUkB,KAAK8i2B,oBACzD,EACA/ga,EAAWxjc,UAAUkj2B,YAAc,SAAUvoyB,GACpCl5D,KAAKoi2B,eAAmBpi2B,KAAKsi2B,QAAUti2B,KAAKm8tB,aAC7Cn8tB,KAAK4m2B,eAAe1tyB,IAElBl5D,KAAK8g2B,cAAgB9g2B,KAAK8g2B,aAAahh2B,cAAgBE,KAAKlB,OAASkB,KAAKlB,MAAMgB,YAClFE,KAAK2g2B,YAAYznyB,MAAQA,GAAgB,KACzCl5D,KAAK2g2B,YAAYlnyB,QAAUz5D,KAAKy5D,QAChCz5D,KAAK2g2B,YAAY1sM,aAAej0pB,KAAKi0pB,aAChCj0pB,KAAKqi2B,uBACNri2B,KAAKo/d,QAAQ,SAAUp/d,KAAK2g2B,aAEhC3g2B,KAAK8g2B,aAAe9g2B,KAAKlB,OAAS,IAAIkZ,MAAMhY,KAAKlB,OAC5CkB,KAAKqi2B,uBACNri2B,KAAKuiC,KAAK22B,GAEdl5D,KAAK8i2B,qBAAuB9i2B,KAAK0kc,aAAa5lc,MAC9CkB,KAAK0w1B,cAEAx3xB,GACLl5D,KAAKuiC,KAAK22B,GAEdl5D,KAAKm8tB,aAAc,CACvB,EACAp6R,EAAWxjc,UAAUwqe,gBAAkB,WACnC,IAAIe,EAAU,GAOd,MAN0B,YAAtB9pe,KAAK401B,cACL9qX,EAAQnse,KAAK,CAAEytE,KAAM,CAACprE,MAAOspe,OAAQ,UAAWzoe,KAAM,YAEtDb,KAAK4i2B,YACL94X,EAAQnse,KAAK,CAAEytE,KAAM,CAACprE,MAAOspe,OAAQ,mBAElCQ,CACX,EACA/nC,EAAWxjc,UAAUqo2B,eAAiB,SAAU1p2B,GAC5C,IAAIuvD,EACA82yB,EACA56Y,EAEA46Y,EADyB,mBAAzBvj2B,KAAKgje,iBACShyT,GAAkBhxK,KAAKwj2B,cAAoCxj2B,KAAKyj2B,eAGjEzj2B,KAAKwj2B,aAElBxj2B,KAAKlB,QACwB,mBAAzBkB,KAAKgje,iBAEDra,EADsB,cAAtB3od,KAAK401B,aACW,CAAEz50B,OAAQoo1B,EAAY981B,KAAM,WAAYyid,SAAU,OAGlD,CAAE/tc,OAAQoo1B,EAAY981B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAEvFnvK,EAAOzsD,KAAKy1wB,UAAU17vB,WAAW/Z,KAAK2g2B,YAAY7h2B,MAAO6pd,KAIrDA,EADsB,cAAtB3od,KAAK401B,aACW,CAAEz50B,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,OAGzD,CAAE/tc,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAE9FnvK,EAAOzsD,KAAKy1wB,UAAU17vB,WAAW/Z,KAAK2g2B,YAAY7h2B,MAAO6pd,IAEzD3od,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,oBAIfipG,GAAkBvkH,KACnBzsD,KAAK6i2B,iBAAiBp2yB,GAClBzsD,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,mBAAoB,CAC5Bj2B,OAAQ,mBAIxB,EACAg6X,EAAWxjc,UAAU6k2B,WAAa,WAC9B,SAAIpj2B,KAAKo21B,eAAgBp21B,KAAKo21B,aAAajy1B,UAAUC,SAAS,GAAKs91B,KAIvE,EACA3/Z,EAAWxjc,UAAUy9E,SAAW,SAAUz4E,GAElCvD,KAAK61pB,aAAaz5jB,UAAU/3F,MAAMd,MADjB,kBAAVA,EACmCsgd,GAAW7jd,KAAKuD,OAEpC,kBAAVA,EAC+BA,EAAMI,MAAM,WAAe3D,KAAKuD,MAAUsgd,GAAW7jd,KAAKuD,OAG3D,MAElD,EAQAw+b,EAAWxjc,UAAUif,KAAO,SAAU/W,EAAMvJ,GACxC,IAAI0jN,EAAQ5gN,KACZ,KAAKA,KAAKsG,SAAWtG,KAAKw3c,WAAcx3c,KAAKsG,SAAWtG,KAAKu1pB,UAA7D,CAII,IAAIsxM,GAAY,EACZC,OAAa,EACZ91rB,GAAkBhxK,KAAKlB,SAAakB,KAAKlB,QAAU,IAAIkZ,KAAKhY,KAAKk21B,WAAWl21B,KAAKqK,QAC9ErK,KAAKlB,QAAU,IAAIkZ,KAAKhY,KAAKk21B,WAAWl21B,KAAK6E,MAKjDii2B,EAAa9m2B,KAAKlB,OAAS,MAJ3Bgo2B,EAAa,IAAI9u1B,KAAKhY,KAAKk21B,WAAWl21B,KAAKlB,QAC3CkB,KAAKiie,cAAc,CAAE,MAAS,OAAQ,IAKrCjie,KAAKoj2B,eACN5+oB,EAAOjmN,UAAUupE,OAAO/nE,KAAKC,MAC7BA,KAAKiie,cAAc,CAAE,MAAS6kY,GAAc,OAAQ,GACpD9m2B,KAAK8g2B,aAAegG,EACpB9m2B,KAAK2l2B,kBAELzoY,GAAQK,WACRv9d,KAAK+m2B,mBAAqB/m2B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW,8BACjEqpB,SAASwK,KAAKxoB,YAAYvX,KAAK+m2B,qBAEnC/m2B,KAAKim2B,YAAc,CACf9lyB,eAAgB,WACZ0myB,GAAY,CAChB,EACArnmB,MAAOx/P,KAAKu1pB,SACZr8lB,MAAOh8D,GAAK,KACZ4jV,QAAQ,EACRhiU,SAAUo+c,GAAQK,SAAWv9d,KAAK+m2B,mBAAqBxx0B,SAASwK,MAEpE,IAAI4vU,EAAY3vW,KAAKim2B,YAiCrB,GAhCAjm2B,KAAKo/d,QAAQ,OAAQzvH,GAAW,SAAUA,GAEtC,GADA/uJ,EAAMqlpB,YAAct2f,EAChBk3f,IAAcjmpB,EAAMqlpB,YAAYnlhB,OAAQ,CACxCruR,GAASmuJ,EAAMi1c,aAAa71lB,QAAS4hyB,KACrChhpB,EAAMqlpB,YAAYnn1B,SAASvH,YAAYqpM,EAAMw1oB,cAC7Cx1oB,EAAM20c,SAAS76B,gBAAgB95a,EAAM8jP,cACrC,IAAIqkP,EAAgB,CAChBlorB,KAAM,SACN8yD,SAAUupa,GAAQK,SAAW,EA9vClC,KAgwCsB,MAAjB38Q,EAAMp4J,OACNo4J,EAAM20c,SAAS/3oB,KAAK,IAAI80G,GAAUy2jB,GAAgBnoe,EAAMnnJ,SAGxDmnJ,EAAM20c,SAAS/3oB,KAAK,IAAI80G,GAAUy2jB,GAAgB,MAGtDvke,EAAOjmN,UAAU431B,gBAAgBp21B,KAAK6gN,EAAOA,EAAMmmpB,mBAAoBnmpB,EAAM20c,SAAS97lB,QAASmnJ,EAAMy1oB,MAAOn5X,GAAQK,UACpH38Q,EAAMslpB,mBACV,MAEItlpB,EAAM20c,SAAS9xlB,UACfm9I,EAAMw1oB,aAAex1oB,EAAM20c,SAAW,KAErCvkf,GAAkB4vC,EAAM8jP,eAA8C,KAA7B9jP,EAAM8jP,aAAa5lc,QACxDkyK,GAAkB4vC,EAAMu2oB,mBAAqBv2oB,EAAMu2oB,iBAAiB1p0B,iBAAiB,iBAAiB3vB,OAAS,IAChH20D,GAAS,CAACmuJ,EAAMu2oB,iBAAiBhi1B,cAAc,kBA7wCrD,kBA8wCMu9C,GAAYkuJ,EAAMu2oB,iBAAiB1p0B,iBAAiB,iBAAkBmm0B,MAG9El1X,GAAa53d,IAAIyuB,SAAU,uBAAwBqrL,EAAMykpB,gBAAiBzkpB,EAC9E,IACIs8Q,GAAQK,SAAU,CAClB,IAAIioN,EAAaxlrB,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW,kBACxDs5qB,EAAWnhrB,MAAMmkD,QAAUxoD,KAAKwoD,OAAS,GAAG7nD,WAC5CX,KAAK+m2B,mBAAmBxv1B,YAAYiuqB,EACxC,CACJ,CACJ,EAOAzjP,EAAWxjc,UAAUgkC,KAAO,SAAU22B,GAClC,IAAI0nJ,EAAQ5gN,KACZ,GAAKgxK,GAAkBhxK,KAAKo21B,cAuBpBl5X,GAAQK,UAAYv9d,KAAK0i2B,YAAc1i2B,KAAKw3c,UAC5Cx3c,KAAK0kc,aAAanxY,gBAAgB,YAEtCvzD,KAAKyi2B,mBA1BkC,CACvC,IAAIuE,GAAY,EAChBhn2B,KAAKim2B,YAAc,CACf9lyB,eAAgB,WACZ6myB,GAAY,CAChB,EACAxnmB,MAAOx/P,KAAKu1pB,SACZr8lB,MAAOA,GAAS,KAChB4nR,QAAQ,GAEZpuR,GAAY1yD,KAAK61pB,aAAa71lB,QAAS4hyB,KACvClvyB,GAAY,CAACn9B,SAASwK,MAAO8h0B,KAC7B,IAAIlyf,EAAY3vW,KAAKim2B,YACjBjm2B,KAAKoj2B,aACLpj2B,KAAKo/d,QAAQ,QAASzvH,GAAW,SAAUA,GACvC/uJ,EAAMqmpB,mBAAmBD,EAAWr3f,EACxC,IAGA3vW,KAAKin2B,mBAAmBD,EAAWr3f,EAE3C,CAOJ,EAEAoyF,EAAWxjc,UAAU0o2B,mBAAqB,SAAUxe,EAAS94e,GACzD3vW,KAAKim2B,YAAct2f,EACf3vW,KAAKoj2B,cAAiB3a,IAAYzo1B,KAAKim2B,YAAYnlhB,SACnD9gV,KAAKu1pB,SAAShznB,OACdviC,KAAKgi2B,iBAAkB,EACvBhi2B,KAAK04pB,eAAej1lB,UACpB/Q,GAAY1yD,KAAK61pB,aAAa71lB,QAAS4hyB,MAE3C5h2B,KAAKkm2B,oBACDhpY,GAAQK,UAAYv9d,KAAKq21B,QACzBr21B,KAAKq21B,MAAMhy1B,MAAMqmB,QAAU,OAC3B1qB,KAAKq21B,MAAM9nwB,UAAY,GACvBvuF,KAAKq21B,MAAQ,MAEbn5X,GAAQK,WACHvsT,GAAkBhxK,KAAK+m2B,sBAAwBte,IAAYz3qB,GAAkBhxK,KAAKim2B,cAAiBjm2B,KAAKim2B,YAAYnlhB,SACrH9gV,KAAK+m2B,mBAAmBlg2B,SACxB7G,KAAK+m2B,mBAAqB,OAGlCroY,GAAa73d,OAAO0uB,SAAU,uBAAwBv1B,KAAKql2B,iBACvDnoY,GAAQK,UAAYv9d,KAAK0i2B,YAAc1i2B,KAAKw3c,UAC5Cx3c,KAAK0kc,aAAanxY,gBAAgB,YAEtCvzD,KAAKyi2B,cACT,EAQA1ga,EAAWxjc,UAAUg6pB,QAAU,SAAU18L,GACjCtmc,SAAS0+P,gBAAkBj0R,KAAK0kc,cAAgB1kc,KAAKsG,UACrDtG,KAAK0kc,aAAa91L,QAClBn8M,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAY,CAACulwB,MAEjD,EAOA5/Z,EAAWxjc,UAAU05pB,SAAW,WACxB1ioB,SAAS0+P,gBAAkBj0R,KAAK0kc,eAChChyY,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAY,CAACulwB,MAC5C3h2B,KAAK0kc,aAAaz7b,OAE1B,EAQA84b,EAAWxjc,UAAUo61B,YAAc,WAC/B,IAAIA,EAKJ,OAJI341B,KAAK+01B,kBAEL4D,EAAcn0oB,EAAOjmN,UAAUo61B,YAAY541B,KAAKC,OAE7C241B,CACX,EAUA52Z,EAAWxjc,UAAU6smB,WAAa,SAAUjuhB,EAAM1wB,GAC1CzsD,KAAK+01B,iBAELvwoB,EAAOjmN,UAAU6smB,WAAWrrmB,KAAKC,KAAMm9E,EAAM1wB,EAErD,EAMAs1Y,EAAWxjc,UAAUklE,QAAU,WAC3BzjE,KAAKsk2B,eACDtk2B,KAAK2ioB,kBACL3ioB,KAAKshoB,YAAc/rmB,SAAS8D,uBAAuB,gBAAgB,IAEvEmrL,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,MAC9B89nB,GAAMr6jB,QAAQ,CACVhK,QAASz5D,KAAK0kc,aACd05L,eAAgBp+nB,KAAKo+nB,eACrB3hgB,WAAYz8H,KAAKy8H,YAClBz8H,KAAKshoB,aACHtwd,GAAkBhxK,KAAKok2B,kBACxBpk2B,KAAKok2B,gBAAgB3gyB,UAErBzjE,KAAKu1pB,UAAYv1pB,KAAKu1pB,SAAS97lB,QAAQt1D,UAAUC,SAj7CjD,YAk7CAogN,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,MAElC,IAAIgj2B,EAAY,CACZ,cAAe,OAAQ,gBAAiB,OACxC,gBAAiB,QAAS,KAAQ,WAAY,aAAgB,MAC9D,YAAe,MAAO,eAAkB,MAAO,WAAc,QAAS,aAAchj2B,KAAKgje,iBAEzFhje,KAAK0kc,eACLo5L,GAAMqD,iBAAiB6hO,EAAWhj2B,KAAK0kc,cAClC1zR,GAAkBhxK,KAAKkn2B,iBAAiB921B,aAAa,aAItDpQ,KAAK0kc,aAAanxY,gBAAgB,YAHlCvzD,KAAK0kc,aAAa97b,aAAa,WAAY5I,KAAKmnV,UAKpDu3I,GAAa73d,OAAO7G,KAAK0kc,aAAc,OAAQ1kc,KAAKkk2B,kBACpDxlY,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAKik2B,mBACrDjk2B,KAAKmn2B,wBAELnn2B,KAAKoj2B,eACDpj2B,KAAKo21B,cACL/1X,GAAOrge,KAAKo21B,cAEhBp21B,KAAKu1pB,SAAWv1pB,KAAKo21B,aAAe,KACpCp21B,KAAK04pB,eAAej1lB,WAEL,OAAfzjE,KAAKon2B,QACDpn2B,KAAK0kc,eACA1zR,GAAkBhxK,KAAK61pB,eACxB71pB,KAAK61pB,aAAaz5jB,UAAUmliB,sBAAsB,WAAYvhoB,KAAK0kc,cAEvEhyY,GAAY,CAAC1yD,KAAK0kc,cAAe,CA98CjC,aAg9CJhyY,GAAY,CAAC1yD,KAAKy5D,SAAU,CAACgrb,MACxBzzU,GAAkBhxK,KAAK61pB,eACxBx1L,GAAOrge,KAAK61pB,aAAaz5jB,YAG7Bp8F,KAAKo4pB,aACL15L,GAAa73d,OAAO7G,KAAKo4pB,YAAa,QAASp4pB,KAAKqj1B,kBAExDrj1B,KAAK61pB,aAAe,KACpB71pB,KAAKok2B,gBAAkB,IAC3B,EACAria,EAAWxjc,UAAU4o2B,qBAAuB,WAExC,IADA,IAAI70xB,EAAO,GACFn1E,EAAI,EAAGA,EAAI6C,KAAK0kc,aAAartY,WAAWv5D,OAAQX,IACrDm1E,EAAKn1E,GAAK6C,KAAK0kc,aAAartY,WAAWl6D,GAAG0D,KAE9C,IAAS1D,EAAI,EAAGA,EAAIm1E,EAAKx0E,OAAQX,IACzB6zK,GAAkBhxK,KAAKkn2B,iBAAiB921B,aAAakiE,EAAKn1E,MAC5B,UAA1Bm1E,EAAKn1E,GAAGsH,gBACRzE,KAAK0kc,aAAa5lc,MAAQ,IAE9BkB,KAAK0kc,aAAanxY,gBAAgB+e,EAAKn1E,MAGT,UAA1Bm1E,EAAKn1E,GAAGsH,gBACRzE,KAAK0kc,aAAa5lc,MAAQkB,KAAKkn2B,iBAAiB921B,aAAakiE,EAAKn1E,KAEtE6C,KAAK0kc,aAAa97b,aAAa0pE,EAAKn1E,GAAI6C,KAAKkn2B,iBAAiB921B,aAAakiE,EAAKn1E,KAG5F,EAOA4kc,EAAWxjc,UAAUgwe,UAAY,WAC7Bvue,KAAKkn2B,iBAAmBln2B,KAAKy5D,QAAQr8B,WAAU,GAC/Cs1B,GAAY,CAAC1yD,KAAKkn2B,kBAAmB,CAACziX,IA7/ChC,YADA,UA+/CNzkf,KAAK0kc,aAAe1kc,KAAKy5D,QACzBz5D,KAAKo4pB,YAAct3L,GAAQ9ge,KAAK0kc,aAAc,QAC9C1kc,KAAK2sB,MAAQ3sB,KAAK2ioB,gBAAkB,EAAI,EACxC3ioB,KAAKon2B,MAAQ,KACgB,mBAAzBpn2B,KAAKy5D,QAAQ2nF,SAAyD,uBAAzBphJ,KAAKy5D,QAAQ2nF,UAC1DphJ,KAAKon2B,MAAQpn2B,KAAKy5D,QAAQ2nF,QAC1BphJ,KAAK0kc,aAAe1kc,KAAKg+B,cAAc,SACvCh+B,KAAKy5D,QAAQliD,YAAYvX,KAAK0kc,eAE9B1kc,KAAKy5D,QAAQrpD,aAAa,MACP,OAAfpQ,KAAKon2B,QACLpn2B,KAAK0kc,aAAa5ub,GAAK9V,KAAKy5D,QAAQrpD,aAAa,MAAQ,UAIhC,mBAAzBpQ,KAAKgje,iBACLhje,KAAKy5D,QAAQ3jD,GAAKutc,GAAY,sBACX,OAAfrjd,KAAKon2B,OACL/vyB,GAAWr3D,KAAK0kc,aAAc,CAAE,GAAM1kc,KAAKy5D,QAAQ3jD,GAAK,aAI5D9V,KAAKy5D,QAAQ3jD,GAAKutc,GAAY,kBACX,OAAfrjd,KAAKon2B,OACL/vyB,GAAWr3D,KAAK0kc,aAAc,CAAE,GAAM1kc,KAAKy5D,QAAQ3jD,GAAK,YAIjD,OAAf9V,KAAKon2B,OACLpn2B,KAAKsypB,oBAAoBtypB,KAAKy5D,QAASz5D,KAAK0kc,cAEhD1kc,KAAK6k2B,+BACL7k2B,KAAKk11B,kBAAoBl11B,KAAKi11B,sBAC9Bj11B,KAAKqn2B,qBAAoB,GACzBrn2B,KAAKmnV,SAAWnnV,KAAKy5D,QAAQz/B,aAAa,YAAch6B,KAAKy5D,QAAQrpD,aAAa,YAAc,IAChGpQ,KAAKy5D,QAAQlG,gBAAgB,YAC7BixJ,EAAOjmN,UAAUgwe,UAAUxue,KAAKC,KACpC,EACA+hc,EAAWxjc,UAAU021B,oBAAsB,WAwBvC,OAvBAj11B,KAAKk11B,kBAAoB,CACrB5rG,WAAY,cACZD,aAAc,gBACd9+lB,OAAQ,SACRgkB,MAAO,QACP4mrB,UAAW,UACXC,YAAa,UACbC,SAAU,YACVC,OAAQ,UACRC,SAAU,YACVC,UAAW,aACX3k1B,OAAQ,QACRipU,KAAM,OACN7rT,IAAK,MACL2rT,OAAQ,SACRC,SAAU,WACV47gB,YAAa,eACbC,cAAe,iBACfC,YAAa,YACbC,WAAY,WACZhsG,SAAU,YACVrwa,IAAK,OAEFv5U,KAAKk11B,iBAChB,EACAnzZ,EAAWxjc,UAAU+zpB,oBAAsB,SAAUnwoB,EAAQuib,GACzD,IAAI4ia,EAAgBnl1B,EAAO/R,aAAa,QAAU+R,EAAO/R,aAAa,QAAU+R,EAAO/R,aAAa,MACpGs0b,EAAa97b,aAAa,OAAQ0+1B,GAClCnl1B,EAAOoxC,gBAAgB,QAEvB,IADA,IAAIy7I,EAAY,CAAC,WAAY,gBAAiB,QACrC7xM,EAAI,EAAGA,EAAI6xM,EAAUlxM,OAAQX,IAClC,IAAI6zK,GAAkB7uJ,EAAO/R,aAAa4+L,EAAU7xM,KAApD,CAGA,IAAIqI,EAAO2c,EAAO/R,aAAa4+L,EAAU7xM,IACzCunc,EAAa97b,aAAaomM,EAAU7xM,GAAIqI,GACxC2c,EAAOoxC,gBAAgBy7I,EAAU7xM,GAHjC,CAKR,EACA4kc,EAAWxjc,UAAUgp2B,YAAc,WAC/B,IAAIl/Y,EAAU,IAAI4M,GAAqBj1d,KAAKwY,QAC5C,GAAIxY,KAAKmb,OACL,GAA2B,kBAAhBnb,KAAKmb,OACZnb,KAAKwj2B,aAAexj2B,KAAKmb,YAExB,GAA6B,KAAzBnb,KAAKmb,OAAO+tc,UAAoBl4S,GAAkBhxK,KAAKmb,OAAO+tc,UAUtC,mBAAzBlpd,KAAKgje,gBACLhje,KAAKwj2B,aAAexj2B,KAAKyj2B,eAGzBzj2B,KAAKwj2B,aAAe,SAdsD,CAC9E,IAAIgE,EAAiBxn2B,KAAKmb,OAAO+tc,SACJ,mBAAzBlpd,KAAKgje,gBACLhje,KAAKwj2B,aAAen7Y,EAAQoN,eAAe,CAAEvM,SAAUs+Y,EAAgB/g2B,KAAM,aAG7EzG,KAAKwj2B,aAAen7Y,EAAQoN,eAAe,CAAEvM,SAAUs+Y,EAAgB/g2B,KAAM,QAErF,MAWAzG,KAAKwj2B,aAAe,IAE5B,EACAzha,EAAWxjc,UAAU8o2B,oBAAsB,SAAUI,GACjDzn2B,KAAKy1wB,UAAY,IAAIxgT,GAAqBj1d,KAAKwY,QAC/CxY,KAAKun2B,cACLvn2B,KAAK691B,YACL,IAEI7+0B,EAFAq4C,EAAaowyB,EAAUz2rB,GAAkBhxK,KAAK+joB,gBAAkB,GAAK3moB,OAAOC,KAAK2C,KAAK+joB,gBACtF,CAAC,QAAS,MAAO,MAAO,WAAY,WAAY,QAAS,OAAQ,cAAe,QAI5E/knB,EAFqB,mBAAzBhf,KAAKgje,gBACqB,cAAtBhje,KAAK401B,aACK,CACNz50B,OAAS61J,GAAkBhxK,KAAKwj2B,cAAoCxj2B,KAAKyj2B,eAAzBzj2B,KAAKwj2B,aACrD/81B,KAAM,WAAYyid,SAAU,OAItB,CACN/tc,OAAS61J,GAAkBhxK,KAAKwj2B,cAAoCxj2B,KAAKyj2B,eAAzBzj2B,KAAKwj2B,aACrD/81B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAK3B,cAAtB57N,KAAK401B,aACK,CAAEz50B,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,OAGzD,CAAE/tc,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAG5F,IAAK,IAAIzB,EAAK,EAAGkob,EAAehrlB,EAAY8iK,EAAKkob,EAAavkpB,OAAQq8N,IAAM,CACxE,IAAI7nJ,EAAO+vkB,EAAalob,GACxB,IAAKnpD,GAAkBhxK,KAAK0kc,aAAat0b,aAAakiE,IAClD,OAAQA,GACJ,IAAK,WACD,GAAM0+F,GAAkBhxK,KAAKui2B,yBAA6Dt1xB,IAAtCjtE,KAAKui2B,kBAA2B,SAAqBkF,EAAU,CAC/G,IAAInh2B,EAAmD,aAAzCtG,KAAK0kc,aAAat0b,aAAakiE,IACA,KAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,IACU,SAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,GACnCtyE,KAAKiie,cAAc,CAAE37d,QAASA,IAAYmh2B,EAC9C,CACA,MACJ,IAAK,WACD,GAAMz2rB,GAAkBhxK,KAAKui2B,yBAA8Dt1xB,IAAvCjtE,KAAKui2B,kBAA4B,UAAqBkF,EAAU,CAChH,IAAIjwZ,EAAoD,aAAzCx3c,KAAK0kc,aAAat0b,aAAakiE,IACD,KAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,IAAyD,SAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,GAClFtyE,KAAKiie,cAAc,CAAEzqB,SAAUA,IAAaiwZ,EAChD,CACA,MACJ,IAAK,eACKz2rB,GAAkBhxK,KAAKui2B,yBAAiEt1xB,IAA1CjtE,KAAKui2B,kBAA+B,aAAqBkF,IACzGzn2B,KAAKiie,cAAc,CAAEj6G,YAAahoX,KAAK0kc,aAAat0b,aAAakiE,KAAUm1xB,GAE/E,MACJ,IAAK,QACDzn2B,KAAK0kc,aAAa97b,aAAa,QAAS,GAAK5I,KAAK0kc,aAAat0b,aAAakiE,IAC5E,MACJ,IAAK,OACDtyE,KAAK0kc,aAAa97b,aAAa,OAAQ,GAAK5I,KAAK0kc,aAAat0b,aAAakiE,IAC3E,MACJ,IAAK,QACD,GAAM0+F,GAAkBhxK,KAAKui2B,yBAA2Dt1xB,IAApCjtE,KAAKui2B,kBAAyB,OAAqBkF,EAAU,CAC7G,IAAI3o2B,EAAQkB,KAAK0kc,aAAat0b,aAAakiE,GAC3CtyE,KAAKiie,cAActuM,GAASrhN,EAAMtyE,KAAKy1wB,UAAU19vB,UAAUjZ,EAAOkgB,GAAU,CAAC,IAAKyo1B,EACtF,CACA,MACJ,IAAK,MACD,IAAMzn2B,KAAKqK,OAAS,IAAI2N,KAAK,KAAM,EAAG,IAAOyv1B,EAAS,CAClD,IAAIp91B,EAAMrK,KAAK0kc,aAAat0b,aAAakiE,GACzCtyE,KAAKiie,cAActuM,GAASrhN,EAAMtyE,KAAKy1wB,UAAU19vB,UAAU1N,GAAM,CAAC,IAAKo91B,EAC3E,CACA,MACJ,IAAK,MACD,IAAMzn2B,KAAK6E,OAAS,IAAImT,KAAK,KAAM,GAAI,KAAQyv1B,EAAS,CACpD,IAAI5i2B,EAAM7E,KAAK0kc,aAAat0b,aAAakiE,GACzCtyE,KAAKiie,cAActuM,GAASrhN,EAAMtyE,KAAKy1wB,UAAU19vB,UAAUlT,GAAM,CAAC,IAAK4i2B,EAC3E,CACA,MACJ,IAAK,OAC4C,SAAzCzn2B,KAAK0kc,aAAat0b,aAAakiE,IAC/BtyE,KAAK0kc,aAAa97b,aAAa,OAAQ,QAK3D,CACJ,EAOAm5b,EAAWxjc,UAAUyke,cAAgB,WACjC,MAAO,YACX,EACAjhC,EAAWxjc,UAAU8k2B,cAAgB,SAAUnhB,EAAWogB,GAGtD,IAAI35Y,OAFc,IAAdu5X,IAAwBA,GAAY,QACzB,IAAXogB,IAAqBA,GAAS,GAGlC,IAAIoF,EAAY1n2B,KAAKi21B,eAAej21B,KAAKlB,OAAS,IAAIkZ,MAAMhY,KAAKlB,OAAS,IAAIkZ,KAAKhY,KAAKk21B,WAAWl21B,KAAKlB,QACpG6o2B,EAAkB3n2B,KAAK8g2B,aAE3B9g2B,KAAKsj2B,kBACAphB,GAAcA,IAAclxqB,GAAkBhxK,KAAK69yB,iBACpDr5lB,EAAOjmN,UAAUupE,OAAO/nE,KAAKC,MAEjCA,KAAK8g2B,aAAe6G,EACpB,IAcI1iO,EAbA2iO,EAAe,eAAell2B,QAAQ,MAAO,IADtCgl2B,IAAeA,IAErB1n2B,KAAK4h1B,aACoB,kBAAf5h1B,KAAKlB,OAA8C,kBAAfkB,KAAKlB,QAAyBkB,KAAKlB,SAAa4o2B,IAC3F1n2B,KAAKiie,cAAc,CAAEnje,MAAO4o2B,IAAa,GAG5C12rB,GAAkBhxK,KAAK+01B,kBAAqB/jrB,GAAkBhxK,KAAK+01B,gBAAgBtn0B,iBAAiBm60B,GAAc,KAC/G5n2B,KAAK+01B,gBAAgBtn0B,iBAAiBm60B,GAAc,GAAGzj2B,UAAUC,SAAS,gBACrEpE,KAAK4h1B,aACN5h1B,KAAK+qD,YAAc,IAAI/yC,MAAK,IAAIA,MAAOk6c,SAAS,EAAG,EAAG,EAAG,MAKxC,mBAAzBlyd,KAAKgje,gBAaLiiK,EAZ0B,cAAtBjloB,KAAK401B,aACO501B,KAAKy1wB,UAAU17vB,WAAW2t1B,EAAW,CAC7Cvs1B,OAAS61J,GAAkBhxK,KAAKwj2B,cAAoCxj2B,KAAKyj2B,eAAzBzj2B,KAAKwj2B,aACrD/81B,KAAM,WAAYyid,SAAU,QAIpBlpd,KAAKy1wB,UAAU17vB,WAAW2t1B,EAAW,CAC7Cvs1B,OAAS61J,GAAkBhxK,KAAKwj2B,cAAoCxj2B,KAAKyj2B,eAAzBzj2B,KAAKwj2B,aACrD/81B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,aAOjD+sP,EADsB,cAAtB3od,KAAK401B,aACW,CAAEz50B,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,OAGzD,CAAE/tc,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAE9Fqpa,EAAWjloB,KAAKy1wB,UAAU17vB,WAAW2t1B,EAAW/+Y,IAE/C3od,KAAKu1pB,WACNv1pB,KAAK6i2B,iBAAiB59N,GAClBjloB,KAAK4i2B,aACL5i2B,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAC3Bni2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,iBAAkBu6xB,OAAQA,KAIlD,EACAvga,EAAWxjc,UAAU2n2B,kBAAoB,WACjClm2B,KAAKoj2B,cACLtlO,GAAMn9e,cAAc,CAAE,gBAAiB,QAAU3gJ,KAAK0kc,cACtDrtY,GAAWr3D,KAAK0kc,aAAc,CAAE,YAAa1kc,KAAK0kc,aAAa5ub,GAAK,aACpEuhD,GAAWr3D,KAAK0kc,aAAc,CAAE,gBAAiB1kc,KAAK0kc,aAAa5ub,KAC/D9V,KAAKlB,OACLu4D,GAAWr3D,KAAK0kc,aAAc,CAAE,wBAAyB,GAAK1kc,KAAKu+1B,0BAIvEzgO,GAAMn9e,cAAc,CAAE,gBAAiB,SAAW3gJ,KAAK0kc,cACvD1kc,KAAK0kc,aAAanxY,gBAAgB,aAClCvzD,KAAK0kc,aAAanxY,gBAAgB,iBAClCvzD,KAAK0kc,aAAanxY,gBAAgB,yBAE1C,EACAwuY,EAAWxjc,UAAUmy1B,WAAa,WAC9B,IAAIkX,EAAe,eAAell2B,QAAQ,MAAO,KAAO1C,KAAKlB,OACzD+o2B,EAAiB7n2B,KAAK+01B,iBACtB/01B,KAAK+01B,gBAAgBtn0B,iBAAiBm60B,GAAc,IACpD5n2B,KAAK+01B,gBAAgBtn0B,iBAAiBm60B,GAAc,GAAGzj2B,UAAUC,SAAS,gBACxE4sK,GAAkBhxK,KAAKlB,QAAWkyK,GAAkBhxK,KAAKqK,MAE1D2mK,GAAkBhxK,KAAK6E,MAAU,IAAImT,KAAKhY,KAAKlB,OAAO+yd,gBAAgB,IAAM,IAAI75c,KAAKhY,KAAKqK,KAAKwnd,gBAAgB,IAE7G,IAAI75c,KAAKhY,KAAKlB,OAAO+yd,gBAAgB,IAAM,IAAI75c,KAAKhY,KAAK6E,KAAKgtd,gBAAgB,MAC5E7xd,KAAK4h1B,YAA0C,KAA5B5h1B,KAAK0kc,aAAa5lc,OAAgBkB,KAAK0kc,aAAa5lc,QAAUkB,KAAKmi2B,iBAAmBnxrB,GAAkBhxK,KAAKlB,QAAU+o2B,GAC/Ip1yB,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAYgyJ,KACxC/2L,GAAWr3D,KAAK0kc,aAAc,CAAE,eAAgB,UAE1C1zR,GAAkBhxK,KAAK61pB,gBAC7BnjmB,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAYgyJ,KAC3C/2L,GAAWr3D,KAAK0kc,aAAc,CAAE,eAAgB,UAExD,EASA3C,EAAWxjc,UAAUoke,kBAAoB,SAAUiF,EAASC,GACxD,IAAK,IAAI1tQ,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAE9D,OADWjiC,EAAGiiC,IAEV,IAAK,QACDn6N,KAAKqi2B,uBAAwB,EAC7Bri2B,KAAKi0pB,cAAe,EACpBj0pB,KAAKii2B,mBAAqB,KAC1Bji2B,KAAK2i2B,kBAAkB/6X,EAAQ9oe,OAC/B8oe,EAAQ9oe,MAAQkB,KAAKlB,MACrBkB,KAAK8i2B,qBAAuB9i2B,KAAK0kc,aAAa5lc,MAC1CkyK,GAAkBhxK,KAAKlB,SACnBkB,KAAK4i2B,WACL5i2B,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAG3Bni2B,KAAK6i2B,iBAAiB,IAE1B7i2B,KAAK+qD,YAAc,IAAI/yC,MAAK,IAAIA,MAAOk6c,SAAS,EAAG,EAAG,EAAG,KAE7Dlyd,KAAKwi2B,aAAY,IACZxi2B,KAAK8g2B,gBAAkB9g2B,KAAKlB,OAC7BkB,KAAKkl2B,cAAc,MAEvBll2B,KAAKi0pB,cAAe,EACpBj0pB,KAAKykpB,cAAgBzkpB,KAAK+iQ,WAAa/iQ,KAAKykpB,eAAiBzkpB,KAAKykpB,cAAgBzkpB,KAAKykpB,cACnFzkpB,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAGhB,MACJ,IAAK,SACD/nE,KAAKun2B,cACLvn2B,KAAK+j2B,iBACL/j2B,KAAKwi2B,cACDxi2B,KAAK4i2B,aACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAEP/nE,KAAKlB,OACNkB,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,kBAGnC,MACJ,IAAK,YACDni2B,KAAKyi2B,eACL,MACJ,IAAK,cACD3kO,GAAM8C,eAAe5goB,KAAKgoX,YAAahoX,KAAK0kc,cAC5C,MACJ,IAAK,WACDo5L,GAAM+C,YAAY7goB,KAAKw3c,SAAUx3c,KAAK0kc,cACtC,MACJ,IAAK,UACDo5L,GAAMgD,WAAW9goB,KAAKsG,QAAStG,KAAK0kc,cACpC1kc,KAAKom2B,kBACL,MACJ,IAAK,iBACDpm2B,KAAK6k2B,+BACL7k2B,KAAK+90B,+BACL/90B,KAAKqn2B,qBAAoB,GACzB,MACJ,IAAK,SACDrn2B,KAAKy1wB,UAAY,IAAIxgT,GAAqBj1d,KAAKwY,QAC/CxY,KAAKoppB,KAAK/klB,UAAUrkE,KAAKwY,QACrBxY,KAAKui2B,mBAA2D,MAAtCvi2B,KAAKui2B,kBAAkBv6e,cACjDhoX,KAAKiie,cAAc,CAAEj6G,YAAahoX,KAAKoppB,KAAKvtK,YAAY,iBAAkB,GAC1EiiJ,GAAM8C,eAAe5goB,KAAKgoX,YAAahoX,KAAK0kc,eAEhD1kc,KAAKwi2B,cACDxi2B,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAGhB,MACJ,IAAK,YACD+1jB,GAAMrD,aAAaz6nB,KAAK+te,UAAW,CAAC/te,KAAK61pB,aAAaz5jB,YACtD,MACJ,IAAK,QACL,IAAK,QACDp8F,KAAK691B,YACD791B,KAAK+01B,iBACLvwoB,EAAOjmN,UAAUoke,kBAAkB5ie,KAAKC,KAAM4ne,EAASC,GAE3D,MACJ,IAAK,SACD7ne,KAAKiie,cAAc,CAAEz5a,OAAQo/a,EAAQp/a,SAAU,GAC/C,MACJ,IAAK,WACDxoD,KAAKgkoB,eAAep8J,EAAQ/4d,SAAUg5d,EAAQh5d,UAC9C,MACJ,IAAK,kBACDivnB,GAAMsD,eAAephoB,KAAK2ioB,gBAAiB3ioB,KAAK0kc,aAAc1kc,KAAK61pB,cACnE71pB,KAAK64pB,iBACL74pB,KAAK2sB,MAAQ3sB,KAAK2ioB,gBAAkB,EAAI,EACxC,MACJ,IAAK,aACD3ioB,KAAKii2B,mBAAqB,KAC1Bji2B,KAAKwi2B,cACL,MACJ,IAAK,QACDxi2B,KAAKg8E,SAAS4rZ,EAAQrke,OACtBu6nB,GAAMS,eAAev+nB,KAAK0kc,aAAc1kc,KAAK61pB,aAAaz5jB,WACrD40E,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAAQgxG,GAAkBhxK,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,KAA+B,UAAxBr5B,KAAKo+nB,gBAC/Jp+nB,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,GAAGl1B,UAAU2C,IAAI,UAEjG,MACJ,IAAK,iBACD9G,KAAKo+nB,eAAiBx2J,EAAQw2J,eAC9BN,GAAMoF,eAAeljoB,KAAK61pB,cAC1B/3B,GAAMsF,YAAYpjoB,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAKgoX,aAC1Dh3M,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAAQgxG,GAAkBhxK,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,KAA+B,UAAxBr5B,KAAKo+nB,gBAC/Jp+nB,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,GAAGl1B,UAAU2C,IAAI,UAEjG,MACJ,IAAK,aACG9G,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAEZ/nE,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAC3Bni2B,KAAK+j2B,kBAGD/j2B,KAAK0kc,aAAa5lc,QAAUkB,KAAKmi2B,iBACjCni2B,KAAK6i2B,iBAAiB,IAG9B,MACJ,QACQ7i2B,KAAK+01B,iBAAmB/01B,KAAKoj2B,cAC7B5+oB,EAAOjmN,UAAUoke,kBAAkB5ie,KAAKC,KAAM4ne,EAASC,GAI9D7ne,KAAKqi2B,uBACNri2B,KAAKuiC,KAAK,MAEdviC,KAAKqi2B,uBAAwB,CACjC,CACJ,EACAh1iB,IAAW,CACP63K,GAAS,OACVnjC,EAAWxjc,UAAW,aAAS,GAClC8uT,IAAW,CACP63K,GAAS,OACVnjC,EAAWxjc,UAAW,aAAS,GAClC8uT,IAAW,CACP63K,GAAS,OACVnjC,EAAWxjc,UAAW,gBAAY,GACrC8uT,IAAW,CACP63K,IAAS,IACVnjC,EAAWxjc,UAAW,kBAAc,GACvC8uT,IAAW,CACP63K,GAAS,OACVnjC,EAAWxjc,UAAW,cAAU,GACnC8uT,IAAW,CACP63K,IAAS,IACVnjC,EAAWxjc,UAAW,eAAW,GACpC8uT,IAAW,CACP63K,IAAS,IACVnjC,EAAWxjc,UAAW,sBAAkB,GAC3C8uT,IAAW,CACP63K,GAAS,CAAC,IACXnjC,EAAWxjc,UAAW,sBAAkB,GAC3C8uT,IAAW,CACP63K,GAAS,OACVnjC,EAAWxjc,UAAW,cAAU,GACnC8uT,IAAW,CACP63K,IAAS,IACVnjC,EAAWxjc,UAAW,wBAAoB,GAC7C8uT,IAAW,CACP63K,IAAS,IACVnjC,EAAWxjc,UAAW,uBAAmB,GAC5C8uT,IAAW,CACP63K,IAAS,IACVnjC,EAAWxjc,UAAW,iBAAa,GACtC8uT,IAAW,CACP63K,GAAS,OACVnjC,EAAWxjc,UAAW,kBAAc,GACvC8uT,IAAW,CACP63K,IAAS,IACVnjC,EAAWxjc,UAAW,yBAAqB,GAC9C8uT,IAAW,CACP63K,GAAS,MACVnjC,EAAWxjc,UAAW,cAAU,GACnC8uT,IAAW,CACP63K,IAAS,IACVnjC,EAAWxjc,UAAW,gBAAY,GACrC8uT,IAAW,CACP63K,GAAS,OACVnjC,EAAWxjc,UAAW,mBAAe,GACxC8uT,IAAW,CACP63K,GAAS,UACVnjC,EAAWxjc,UAAW,sBAAkB,GAC3C8uT,IAAW,CACP63K,GAAS,OACVnjC,EAAWxjc,UAAW,4BAAwB,GACjD8uT,IAAW,CACP63K,IAAS,IACVnjC,EAAWxjc,UAAW,mBAAe,GACxC8uT,IAAW,CACP63K,IAAS,IACVnjC,EAAWxjc,UAAW,kBAAc,GACvC8uT,IAAW,CACP63K,GAAS,CAAE95c,IAAK,MAAOD,MAAO,QAASD,KAAM,OAAQG,KAAM,OAAQC,OAAQ,SAAUC,OAAQ,SAAUu80B,aAAc,qBACtH/la,EAAWxjc,UAAW,uBAAmB,GAC5C8uT,IAAW,CACPv0P,MACDipY,EAAWxjc,UAAW,YAAQ,GACjC8uT,IAAW,CACPv0P,MACDipY,EAAWxjc,UAAW,eAAW,GACpC8uT,IAAW,CACPv0P,MACDipY,EAAWxjc,UAAW,aAAS,GAClC8uT,IAAW,CACPv0P,MACDipY,EAAWxjc,UAAW,YAAQ,GACjC8uT,IAAW,CACPv0P,MACDipY,EAAWxjc,UAAW,aAAS,GAClC8uT,IAAW,CACPv0P,MACDipY,EAAWxjc,UAAW,eAAW,GACpC8uT,IAAW,CACPv0P,MACDipY,EAAWxjc,UAAW,iBAAa,GACtCwjc,EAAa10I,IAAW,CACpBq4K,IACD3jC,EAEP,CA1/DgC,CA0/D9BnD,ICzjEEmpa,IAAY,YAGZC,IAAY,YAEZC,IAAW,WACXC,IAAM,MACNC,IAAO,OACPC,IAAgC,WAChC,SAASA,EAAexv0B,GACpB54B,KAAKioR,KAAO,GACZjoR,KAAKqo2B,gBAAkB,CACnBj90B,IAAK,MACLD,MAAO,QACPD,KAAM,OACNG,KAAM,OACNC,OAAQ,SACRC,OAAQ,SACRu80B,aAAc,mBAElB9n2B,KAAKso2B,WAAa,GAClBto2B,KAAKuo2B,gBAAkB,aACvBvo2B,KAAKwo2B,WAAY,EACjBxo2B,KAAKyo2B,aAAc,EACnBzo2B,KAAK0o2B,YAAa,EAClB1o2B,KAAK2o2B,YAAa,EAClB3o2B,KAAK4o2B,cAAe,EACpB5o2B,KAAK6o2B,eAAgB,EACrB7o2B,KAAK8o2B,oBAAqB,EAC1B9o2B,KAAK+o2B,eAAiB,GACtB/o2B,KAAKgp2B,gBAAkB,GACvBhp2B,KAAKip2B,cAAe,EACpBjp2B,KAAKkp2B,YAAa,EAClBlp2B,KAAKmp2B,YAAa,EAClBnp2B,KAAKop2B,WAAY,EACjBpp2B,KAAKsi2B,QAAS,EACdti2B,KAAKqsd,YAAc,iIACnBrsd,KAAKqp2B,YAAa,EAClBrp2B,KAAKsp2B,aAAc,EACnBtp2B,KAAKup2B,aAAc,EACnBvp2B,KAAKwp2B,YAAa,EAClBxp2B,KAAKyp2B,aAAc,EACnBzp2B,KAAK0p2B,YAAa,EAClB1p2B,KAAK2p2B,eAAgB,EACrB3p2B,KAAK4p2B,aAAe,EACpB5p2B,KAAK6p2B,eAAiB,EACtB7p2B,KAAK8p2B,cAAgB,EACrB9p2B,KAAK+p2B,gBAAkB,EACvB/p2B,KAAKgq2B,gBAAkB,EACvBhq2B,KAAK44B,OAASA,EACd54B,KAAKiq2B,WAAajq2B,KAAKkq2B,oBACvBlq2B,KAAKmq2B,cAAqC,MAArBnq2B,KAAK44B,OAAO95B,MAAgB,IAAIkZ,MAAMhY,KAAK44B,OAAO95B,OAAS,IAAIkZ,KACpFhY,KAAKmq2B,cAAchmoB,SAAS,GAC5BnkO,KAAKmq2B,cAAcj4Y,SAAS,GAC5Blyd,KAAKmq2B,cAAc/3Y,WAAW,GAC9Bpyd,KAAKmq2B,cAAc12R,WAAW,GAC9BzzkB,KAAK8g2B,aAAe,IAAI9o1B,KAAKhY,KAAKmq2B,cAAcrx1B,cAAe9Y,KAAKmq2B,cAAcnx1B,WAAYhZ,KAAKmq2B,cAAcjx1B,UAAWlZ,KAAKmq2B,cAAc/w1B,WAAYpZ,KAAKmq2B,cAAc7w1B,aAActZ,KAAKmq2B,cAAc3w1B,cAC/MxZ,KAAK64D,sBACL74D,KAAKqN,kBACT,CAkxBA,OAjxBA+61B,EAAe7p2B,UAAUyke,cAAgB,WACrC,MAAO,gBACX,EACAolY,EAAe7p2B,UAAU8O,iBAAmB,WACpCrN,KAAK44B,OAAOspc,cAGhBlie,KAAK44B,OAAOsI,GAAG,aAAclhC,KAAKoq2B,WAAYpq2B,MAC9CA,KAAK44B,OAAOsI,GAAG,mBAAoBlhC,KAAKqq2B,oBAAqBrq2B,MAC7DA,KAAK44B,OAAOsI,GAAG,eAAgBlhC,KAAKsq2B,iBAAkBtq2B,MACtDA,KAAK44B,OAAOsI,GAAG,iBAAkBlhC,KAAKuq2B,mBAAoBvq2B,MAC1DA,KAAK44B,OAAOsI,GAAG,eAAgBlhC,KAAKwq2B,aAAcxq2B,MACtD,EACAoo2B,EAAe7p2B,UAAUs6D,oBAAsB,WACvC74D,KAAK44B,OAAOspc,cAGhBlie,KAAK44B,OAAOyW,IAAI,aAAcrvC,KAAKoq2B,YACnCpq2B,KAAK44B,OAAOyW,IAAI,mBAAoBrvC,KAAKqq2B,qBACzCrq2B,KAAK44B,OAAOyW,IAAI,eAAgBrvC,KAAKsq2B,kBACrCtq2B,KAAK44B,OAAOyW,IAAI,iBAAkBrvC,KAAKuq2B,oBACvCvq2B,KAAK44B,OAAOyW,IAAI,eAAgBrvC,KAAKwq2B,cACzC,EACApC,EAAe7p2B,UAAU6r2B,WAAa,SAAUnilB,GAC5CjoR,KAAKwo2B,UAAYxo2B,KAAKyo2B,YAAczo2B,KAAK0o2B,WAAa1o2B,KAAK2o2B,WAAa3o2B,KAAK4o2B,aAAe5o2B,KAAK6o2B,eAAgB,EACjH7o2B,KAAKiq2B,WAAajq2B,KAAKkq2B,oBACnBlq2B,KAAK44B,OAAO6x0B,gBAAgBr/0B,MAC5BprB,KAAKqo2B,gBAAqB,IAAIro2B,KAAK44B,OAAO6x0B,gBAAgBr/0B,KAE1DprB,KAAK44B,OAAO6x0B,gBAAgBt/0B,QAC5BnrB,KAAKqo2B,gBAAuB,MAAIro2B,KAAK44B,OAAO6x0B,gBAAgBt/0B,OAE5DnrB,KAAK44B,OAAO6x0B,gBAAgBv/0B,OAC5BlrB,KAAKqo2B,gBAAsB,KAAIro2B,KAAK44B,OAAO6x0B,gBAAgBv/0B,MAE3DlrB,KAAK44B,OAAO6x0B,gBAAgBp/0B,OAC5BrrB,KAAKqo2B,gBAAsB,KAAIro2B,KAAK44B,OAAO6x0B,gBAAgBp/0B,MAE3DrrB,KAAK44B,OAAO6x0B,gBAAgBn/0B,SAC5BtrB,KAAKqo2B,gBAAwB,OAAIro2B,KAAK44B,OAAO6x0B,gBAAgBn/0B,QAE7DtrB,KAAK44B,OAAO6x0B,gBAAgBl/0B,SAC5BvrB,KAAKqo2B,gBAAwB,OAAIro2B,KAAK44B,OAAO6x0B,gBAAgBl/0B,QAE7DvrB,KAAK44B,OAAO6x0B,gBAAgB3C,eAC5B9n2B,KAAKqo2B,gBAA8B,aAAIro2B,KAAK44B,OAAO6x0B,gBAAgB3C,aAAann2B,YAEpFX,KAAK0q2B,uBACL,IAAIz/kB,EAAajrR,KAAKiq2B,WAAWvn2B,QAAQ1C,KAAKqsd,YAAarsd,KAAK2q2B,eAChE3q2B,KAAKip2B,cAAe,EACpBjp2B,KAAKso2B,WAAato2B,KAAKiq2B,WAAWvn2B,QAAQ1C,KAAKqsd,YAAarsd,KAAK2q2B,eACjE3q2B,KAAKip2B,cAAe,EACpBjp2B,KAAK4q2B,mBAAqB5q2B,KAAKso2B,WAC/Bto2B,KAAKioR,KAAOjoR,KAAKywa,cAAgBxlJ,EACjCjrR,KAAK44B,OAAOup0B,gBAAkBni2B,KAAKioR,KAC/BjoR,KAAK44B,OAAO95B,QACZkB,KAAKop2B,WAAY,EACjBpp2B,KAAKsi2B,OAASr6kB,EAAKq6kB,OACnBti2B,KAAK6q2B,kBAEb,EACAzC,EAAe7p2B,UAAUms2B,qBAAuB,WAC5C1q2B,KAAKoppB,KAAO,IAAI9tK,GAAKt7e,KAAK44B,OAAO82c,WAAY1ve,KAAKqo2B,gBAAiBro2B,KAAK44B,OAAOpgB,QAC/ExY,KAAK8q2B,aAAe1t2B,OAAOC,KAAK2C,KAAKqo2B,iBACrC,IAAK,IAAIlr2B,EAAI,EAAGA,EAAI6C,KAAK8q2B,aAAaht2B,OAAQX,IAC1C6C,KAAKqo2B,gBAAgBro2B,KAAK8q2B,aAAa3t2B,GAAGwD,YACtCX,KAAKoppB,KAAKvtK,YAAY77e,KAAK8q2B,aAAa3t2B,GAAGwD,WAEvD,EACAyn2B,EAAe7p2B,UAAU8r2B,oBAAsB,WAC3C,IAAIr80B,EAAQhuB,KAAK44B,OAAO8ra,aAAar2K,eACN,eAA3BruR,KAAK44B,OAAO82c,YACR1hd,IAAUhuB,KAAKso2B,WAAWxq2B,QAAUkC,KAAKioR,OAASjoR,KAAK44B,OAAO8ra,aAAa5lc,QAC3EkvB,EAAQ,GAGhB,IAAK,IAAI7wB,EAAI6wB,EAAOjoB,EAAIioB,EAAQ,EAAG7wB,EAAI6C,KAAKso2B,WAAWxq2B,QAAUiI,GAAK,EAAG5I,IAAK4I,IAAK,CAC/E,GAAI5I,EAAI6C,KAAKso2B,WAAWxq2B,SAAgE,IAAtDkC,KAAKuo2B,gBAAgB7j2B,QAAQ1E,KAAKso2B,WAAWnr2B,IAE3E,YADA6C,KAAK42pB,aAAa52pB,KAAKso2B,WAAWnr2B,IAGtC,GAAI4I,GAAK,IAA2D,IAAtD/F,KAAKuo2B,gBAAgB7j2B,QAAQ1E,KAAKso2B,WAAWvi2B,IAEvD,YADA/F,KAAK42pB,aAAa52pB,KAAKso2B,WAAWvi2B,GAG1C,CACJ,EACAqi2B,EAAe7p2B,UAAUss2B,gBAAkB,WACvC7q2B,KAAKmq2B,cAAgB,IAAIny1B,MAAMhY,KAAK44B,OAAO95B,OAC3CkB,KAAKwo2B,UAAYxo2B,KAAKyo2B,YAAczo2B,KAAK0o2B,WAAa1o2B,KAAK2o2B,WAAa3o2B,KAAK4o2B,aAAe5o2B,KAAK6o2B,eAAgB,EACjH7o2B,KAAKmquB,cACAnquB,KAAKsi2B,QACNti2B,KAAKqq2B,qBAEb,EACAjC,EAAe7p2B,UAAUq4pB,aAAe,SAAUm0M,GAG9C,IAFA,IAAI/80B,GAAS,EACTC,EAAM,EACD9wB,EAAI,EAAGA,EAAI6C,KAAKso2B,WAAWxq2B,OAAQX,IACpC6C,KAAKso2B,WAAWnr2B,KAAO4t2B,IACvB980B,EAAM9wB,EAAI,GACK,IAAX6wB,IACAA,EAAQ7wB,IAIhB6wB,EAAQ,IACRA,EAAQ,GAEZhuB,KAAK44B,OAAO8ra,aAAaz0K,kBAAkBjiQ,EAAOC,EACtD,EACAm60B,EAAe7p2B,UAAUgs2B,mBAAqB,SAAUn/xB,GAEpD,GADAprE,KAAK4p2B,aAAe5p2B,KAAK6p2B,eAAiB7p2B,KAAK8p2B,cAAgB9p2B,KAAK+p2B,gBAAkB/p2B,KAAKgq2B,gBAAkB,EAC1F,WAAf5+xB,EAAKluE,EAAE0B,IAAX,CAIA,IAAMwsE,EAAKluE,EAAEmkS,SAAWj2N,EAAKluE,EAAEkkS,UAAah2N,EAAKluE,EAAE0B,MAAQmp2B,KAhLlD,eAgL+D38xB,EAAKluE,EAAE0B,KACxEwsE,EAAKluE,EAAE0B,MAAQqp2B,KA9KpB,QA8KgC78xB,EAAKluE,EAAE0B,KAAewsE,EAAKluE,EAAE8kN,SAAWimpB,KACtE78xB,EAAKluE,EAAE0B,MAAQsp2B,KAAO98xB,EAAKluE,EAAE0B,MAAQup2B,KAAO,CAC5C,IAAIn60B,EAAQhuB,KAAK44B,OAAO8ra,aAAar2K,eACjCpgQ,EAAMjuB,KAAK44B,OAAO8ra,aAAap2K,aAC/B07L,EAAWhqd,KAAK44B,OAAO8ra,aAAa5lc,MAAMhB,OAC9C,GAAe,IAAVkwB,GAAeC,IAAQ+7b,IAnL9B,QAmL4C5+Y,EAAKluE,EAAE0B,KAAewsE,EAAKluE,EAAE8kN,SAAWimpB,KAAW,CACzF,IAAIt70B,EAAQy+C,EAAKluE,EAAE8kN,SAAWimpB,IAAWh60B,EAAM,EAC/CjuB,KAAK44B,OAAO8ra,aAAar2K,eAAiBruR,KAAK44B,OAAO8ra,aAAap2K,aAAe3hQ,CACtF,CACA,GAAIy+C,EAAKluE,EAAE0B,MAAQsp2B,KAAO98xB,EAAKluE,EAAE0B,MAAQup2B,IAAM,CAC3C,IAAIz80B,EAAQ0/C,EAAKluE,EAAE0B,MAAQsp2B,IAAMl+Y,EAAW,EAC5Chqd,KAAK44B,OAAO8ra,aAAar2K,eAAiBruR,KAAK44B,OAAO8ra,aAAap2K,aAAe5iQ,CACtF,CACA1rB,KAAKgr2B,kBAAkB5/xB,EAAKluE,EAAE0B,MAAQmp2B,KAAa38xB,EAAKluE,EAAE8kN,SAAWimpB,KAAY78xB,EAAKluE,EAAE0B,MAAQsp2B,IACpG,CACA,IAAM98xB,EAAKluE,EAAEmkS,SAAWj2N,EAAKluE,EAAEkkS,UA/LzB,YA+LsCh2N,EAAKluE,EAAE0B,KAAmBwsE,EAAKluE,EAAE0B,MAAQop2B,KAAY,CACzFh60B,EAAQhuB,KAAK44B,OAAO8ra,aAAar2K,eAArC,IACI48kB,EAAa,IAC6C,IAA1Djr2B,KAAKuo2B,gBAAgB7j2B,QAAQ1E,KAAKso2B,WAAWt60B,MAC7Ci90B,EAAajr2B,KAAKso2B,WAAWt60B,IAEjChuB,KAAKkr2B,eAAe9/xB,EAAKluE,EAAE0B,MAAQop2B,KACnC,IAAI/8kB,EAAajrR,KAAKiq2B,WAAWvn2B,QAAQ1C,KAAKqsd,YAAarsd,KAAK2q2B,eAChE3q2B,KAAKip2B,cAAe,EACpBjp2B,KAAKso2B,WAAato2B,KAAKiq2B,WAAWvn2B,QAAQ1C,KAAKqsd,YAAarsd,KAAK2q2B,eACjE3q2B,KAAKip2B,cAAe,EACpBjp2B,KAAK4q2B,mBAAqB5q2B,KAAKso2B,WAC/Bto2B,KAAKywa,cAAgBxlJ,EACrBjrR,KAAK44B,OAAO8ra,aAAa5lc,MAAQmsR,EACjC,IAAK,IAAI9tR,EAAI,EAAGA,EAAI6C,KAAKso2B,WAAWxq2B,OAAQX,IACxC,GAAI8t2B,IAAejr2B,KAAKso2B,WAAWnr2B,GAAI,CACnC6wB,EAAQ7wB,EACR,KACJ,CAEJ6C,KAAK44B,OAAO8ra,aAAar2K,eAAiBrgQ,EAC1ChuB,KAAKqq2B,qBACT,CAvCA,MAFIrq2B,KAAKup2B,aAAc,CA0C3B,EACAnB,EAAe7p2B,UAAU4s2B,UAAY,WAEjC,OADgBnr2B,KAAK44B,OAAOo3Y,WAAahwa,KAAKop2B,SAElD,EACAhB,EAAe7p2B,UAAU6s2B,gBAAkB,WACvC,IAAIp90B,EAAQhuB,KAAK44B,OAAO8ra,aAAar2K,eACjCpD,EAAajrR,KAAK44B,OAAO8ra,aAAa5lc,MACtCus2B,EAAcrr2B,KAAKywa,cAAcjua,UAAU,EAAGwrB,EAAQhuB,KAAKywa,cAAc3ya,OAASmtR,EAAWntR,QAC7F8pf,EAAS38N,EAAWzoR,UAAU,EAAGwrB,GACjCs90B,EAAe,IAAItz1B,MAAMhY,KAAKmq2B,eAC9B1v1B,EAAU,IAAIzC,KAAKsz1B,EAAaxy1B,cAAewy1B,EAAaty1B,WAAa,EAAG,GAAGE,UACnF,GAAoC,IAAhCmy1B,EAAY3m2B,QAAQkjf,KAAoC,IAAlBA,EAAO9pf,QAC7CkC,KAAK4q2B,mBAAmBhjX,EAAO9pf,OAAS,KAAOkC,KAAK4q2B,mBAAmBhjX,EAAO9pf,SAAU,CACxF,IAAK,IAAIX,EAAIyqf,EAAO9pf,OAAQX,EAAIku2B,EAAYvt2B,OAAQX,IACb,KAA/B6C,KAAK4q2B,mBAAmBzt2B,IAAa6C,KAAKuo2B,gBAAgB7j2B,QAAQ1E,KAAK4q2B,mBAAmBzt2B,KAAO,IACjG6C,KAAKqp2B,WAAarp2B,KAAKur2B,eAAevr2B,KAAK4q2B,mBAAmBzt2B,IAAI,IAG1E,GAAI6C,KAAKqp2B,WACL,MAER,CACA,OAAQrp2B,KAAK4q2B,mBAAmB580B,EAAQ,IACpC,IAAK,IAEG,IAAIy+B,GAAQzsD,KAAKwo2B,WAAa8C,EAAapy1B,UAAUvY,WAAW7C,OAAS,IACpEkC,KAAKmr2B,YAAuC,GAAzBG,EAAapy1B,UAAiB,GAAKjY,SAAS2mf,EAAO55d,EAAQ,GAAI,IAIvF,GAHAhuB,KAAKwp2B,WAAoC,MAAtB5hX,EAAO55d,EAAQ,GAClChuB,KAAK44B,OAAOo3Y,WAAYhwa,KAAK44B,OAAOo3Y,WAAoBhwa,KAAK44B,OAAOo3Y,UACpEhwa,KAAKop2B,WAAYpp2B,KAAKop2B,WAAoBpp2B,KAAKop2B,UAC3C9k2B,MAAMmoD,GACN,OAEJ,IAAStvD,EAAI,EAAGsvD,EAAOhyC,EAAStd,IAC5BsvD,EAAOxrD,SAASwrD,EAAK9rD,WAAWC,MAAM,GAAI,IAE9C,GAAI6rD,GAAQ,EAAG,CAIX,GAHA6+yB,EAAa1m0B,QAAQ6nB,GACrBzsD,KAAKmp2B,WAAwC,IAA3B18yB,EAAK9rD,WAAW7C,OAClCkC,KAAK8g2B,aAAe,IAAI9o1B,KAAKsz1B,EAAaxy1B,cAAewy1B,EAAaty1B,WAAYsy1B,EAAapy1B,WAC3Foy1B,EAAaty1B,aAAehZ,KAAKmq2B,cAAcnx1B,WAC/C,OAEJhZ,KAAKwo2B,WAAY,EACjBxo2B,KAAK4p2B,aAAe5p2B,KAAK4p2B,aAAe,CAC5C,MAEI5p2B,KAAKwo2B,WAAY,EACjBxo2B,KAAK4p2B,aAAe5p2B,KAAKwp2B,WAAaxp2B,KAAK4p2B,aAAe,EAAI5p2B,KAAK4p2B,aAEvE,MAER,IAAK,IAEG,IAAIz+0B,OAAQ,EAUZ,GARIA,EADAmg1B,EAAaty1B,WAAWrY,WAAW7C,OAAS,IAAMkC,KAAKmr2B,aAC9Cnr2B,KAAKyo2B,YAA8C,IAA/B6C,EAAaty1B,WAAa,GAAU,GAAK/X,SAAS2mf,EAAO55d,EAAQ,GAAI,IAG1F/sB,SAAS2mf,EAAO55d,EAAQ,GAAI,IAExChuB,KAAK44B,OAAOo3Y,WAAYhwa,KAAK44B,OAAOo3Y,WAAoBhwa,KAAK44B,OAAOo3Y,UACpEhwa,KAAKop2B,WAAYpp2B,KAAKop2B,WAAoBpp2B,KAAKop2B,UAC/Cpp2B,KAAKyp2B,YAAqC,MAAtB7hX,EAAO55d,EAAQ,GAC9B1pB,MAAM6mB,GAwCN,CACD,IAAIqg1B,EAAexr2B,KAAKyr2B,iBAAiB,4BACrCC,EAAatu2B,OAAOC,KAAKmu2B,GAE7B,IADAxr2B,KAAK+o2B,gBAAkBnhX,EAAO55d,EAAQ,GAAGvpB,cAClCzE,KAAK+o2B,eAAejr2B,OAAS,GAAG,CAC/BX,EAAI,EACR,IADA,IACSg9N,EAAK,EAAGwxoB,EAAeD,EAAYvxoB,EAAKwxoB,EAAa7t2B,OAAQq8N,IAAM,CAC3DwxoB,EAAaxxoB,GAC1B,GAAkE,IAA9DqxoB,EAAYru2B,GAAGsH,cAAcC,QAAQ1E,KAAK+o2B,gBAI1C,OAHAuC,EAAannoB,SAAShnO,EAAI,GAC1B6C,KAAKyo2B,aAAc,OACnBzo2B,KAAKmq2B,cAAgBmB,GAGzBnu2B,GACJ,CACA6C,KAAK+o2B,eAAiB/o2B,KAAK+o2B,eAAevm2B,UAAU,EAAGxC,KAAK+o2B,eAAejr2B,OAC/E,CACJ,KA1DmB,CACf,KAAOqtB,EAAQ,IACXA,EAAQlqB,SAASkqB,EAAMxqB,WAAWC,MAAM,GAAI,IAEhD,GAAIuqB,GAAS,EAAG,CAkBZ,GAjBAmg1B,EAAannoB,SAASh5M,EAAQ,GAC1BA,GAAS,IAAe,GAATA,EACXnrB,KAAK2p2B,eAA0B,GAATx+0B,GACtBnrB,KAAKmp2B,WAAyC,IAA5Bh+0B,EAAMxqB,WAAW7C,OACnCkC,KAAK2p2B,eAAgB,GAGrB3p2B,KAAKmp2B,WAAyC,IAA5Bh+0B,EAAMxqB,WAAW7C,OAIvCkC,KAAKmp2B,WAAyC,IAA5Bh+0B,EAAMxqB,WAAW7C,OAEnCwt2B,EAAaty1B,aAAemS,EAAQ,IACpCmg1B,EAAa1m0B,QAAQ,GACrB0m0B,EAAannoB,SAASh5M,EAAQ,IAE9BnrB,KAAKwo2B,UAAW,CAChB,IAAIoD,EAAkB,IAAI5z1B,KAAKhY,KAAK8g2B,aAAaho1B,cAAe9Y,KAAK8g2B,aAAa9n1B,WAAa,EAAG,GAAGE,UACjG2y1B,EAAiB,IAAI7z1B,KAAKsz1B,EAAaxy1B,cAAewy1B,EAAaty1B,WAAa,EAAG,GAAGE,UACtFlZ,KAAK8g2B,aAAa5n1B,YAAc0y1B,GAAmBC,GAAkBD,GACrEN,EAAa1m0B,QAAQin0B,EAE7B,CACA7r2B,KAAK8g2B,aAAe,IAAI9o1B,KAAKsz1B,EAAaxy1B,cAAewy1B,EAAaty1B,WAAYsy1B,EAAapy1B,WAC/FlZ,KAAKyo2B,aAAc,EACnBzo2B,KAAK6p2B,eAAiB7p2B,KAAK6p2B,eAAiB,CAChD,MAEIyB,EAAannoB,SAAS,GACtBnkO,KAAK2p2B,eAAgB,EACrB3p2B,KAAKyo2B,aAAc,EACnBzo2B,KAAK6p2B,eAAiB7p2B,KAAKyp2B,YAAczp2B,KAAK6p2B,eAAiB,EAAI7p2B,KAAK6p2B,cAEhF,CAoBA,MAER,IAAK,IAEG,IAAI3+0B,GAAQlrB,KAAK0o2B,YAAe4C,EAAaxy1B,cAAcnY,WAAW7C,OAAS,IACvEkC,KAAKsp2B,YAA4C,GAA7BgC,EAAaxy1B,cAAqB,GAAK7X,SAAS2mf,EAAO55d,EAAQ,GAAI,IAC3F890B,GAAa9r2B,KAAKiq2B,WAAWtm2B,MAAM,OAAS,IAAI7F,OAIpD,GAHAgu2B,EAA0B,IAAdA,EAAkB,EAAIA,EAClC9r2B,KAAKsp2B,aAAc,EACnBtp2B,KAAK0p2B,WAAoC,MAAtB9hX,EAAO55d,EAAQ,GAC9B1pB,MAAM4mB,GACN,OAEJ,KAAOA,EAAO,MACVA,EAAOjqB,SAASiqB,EAAKvqB,WAAWC,MAAM,GAAI,IAE1CsqB,EAAO,EACPlrB,KAAK0o2B,YAAa,GAGlB4C,EAAajmoB,YAAYn6M,GACrBA,EAAKvqB,WAAW7C,SAAWgu2B,IAC3B9r2B,KAAKmp2B,YAAa,GAEtBnp2B,KAAK8g2B,aAAe,IAAI9o1B,KAAKsz1B,EAAaxy1B,cAAewy1B,EAAaty1B,WAAYsy1B,EAAapy1B,WAC/FlZ,KAAK0o2B,YAAa,GAEtB,MAER,IAAK,IAKD,GAJA1o2B,KAAKqrB,MAAQrrB,KAAK2o2B,aAAe2C,EAAaly1B,WAAa,IAAM,IAAIzY,WAAW7C,OAAS,IACjFkC,KAAKmr2B,YAAqD,IAAtCG,EAAaly1B,WAAa,IAAM,IAAW,GAAKnY,SAAS2mf,EAAO55d,EAAQ,GAAI,IACxGhuB,KAAK44B,OAAOo3Y,WAAYhwa,KAAK44B,OAAOo3Y,WAAoBhwa,KAAK44B,OAAOo3Y,UACpEhwa,KAAKop2B,WAAYpp2B,KAAKop2B,WAAoBpp2B,KAAKop2B,UAC3C9k2B,MAAMtE,KAAKqrB,MACX,OAEJ,KAAOrrB,KAAKqrB,KAAO,IACfrrB,KAAKqrB,KAAOpqB,SAASjB,KAAKqrB,KAAK1qB,WAAWC,MAAM,GAAI,IAExD0q2B,EAAap5Y,SAAoD,GAA3Chxd,KAAKe,MAAMqp2B,EAAaly1B,WAAa,IAAYpZ,KAAKqrB,KAAO,IACnFrrB,KAAKmp2B,WAA6C,IAAhCnp2B,KAAKqrB,KAAK1qB,WAAW7C,OACvCkC,KAAK2o2B,YAAa,EAClB3o2B,KAAK8p2B,cAAgB9p2B,KAAK8p2B,cAAgB,EAC1C,MACJ,IAAK,IAKD,GAJA9p2B,KAAKqrB,MAAQrrB,KAAK2o2B,YAAc2C,EAAaly1B,WAAWzY,WAAW7C,OAAS,IACvEkC,KAAKmr2B,YAAwC,GAA1BG,EAAaly1B,WAAkB,GAAKnY,SAAS2mf,EAAO55d,EAAQ,GAAI,IACxFhuB,KAAK44B,OAAOo3Y,WAAYhwa,KAAK44B,OAAOo3Y,WAAoBhwa,KAAK44B,OAAOo3Y,UACpEhwa,KAAKop2B,WAAYpp2B,KAAKop2B,WAAoBpp2B,KAAKop2B,UAC3C9k2B,MAAMtE,KAAKqrB,MACX,OAEJ,IAASluB,EAAI,EAAG6C,KAAKqrB,KAAO,GAAIluB,IAC5B6C,KAAKqrB,KAAOpqB,SAASjB,KAAKqrB,KAAK1qB,WAAWC,MAAM,GAAI,IAExD0q2B,EAAap5Y,SAASlyd,KAAKqrB,MAC3BrrB,KAAKmp2B,WAA6C,IAAhCnp2B,KAAKqrB,KAAK1qB,WAAW7C,OACvCkC,KAAK2o2B,YAAa,EAClB3o2B,KAAK8p2B,cAAgB9p2B,KAAK8p2B,cAAgB,EAC1C,MACJ,IAAK,IAEG,IAAI7wrB,GAAWj5K,KAAK4o2B,cAAgB0C,EAAahy1B,aAAa3Y,WAAW7C,OAAS,IAC1EkC,KAAKmr2B,YAA0C,GAA5BG,EAAahy1B,aAAoB,GAAKrY,SAAS2mf,EAAO55d,EAAQ,GAAI,IAG7F,GAFAhuB,KAAK44B,OAAOo3Y,WAAYhwa,KAAK44B,OAAOo3Y,WAAoBhwa,KAAK44B,OAAOo3Y,UACpEhwa,KAAKop2B,WAAYpp2B,KAAKop2B,WAAoBpp2B,KAAKop2B,UAC3C9k2B,MAAM20K,GACN,OAEJ,IAAS97K,EAAI,EAAG87K,EAAU,GAAI97K,IAC1B87K,EAAUh4K,SAASg4K,EAAQt4K,WAAWC,MAAM,GAAI,IAEpD0q2B,EAAal5Y,WAAWn5S,GACxBj5K,KAAKmp2B,WAA2C,IAA9BlwrB,EAAQt4K,WAAW7C,OACrCkC,KAAK4o2B,cAAe,EACpB5o2B,KAAK+p2B,gBAAkB/p2B,KAAK+p2B,gBAAkB,EAC9C,MAER,IAAK,IAEG,IAAI7wrB,GAAWl5K,KAAK6o2B,eAAiByC,EAAa9x1B,aAAa7Y,WAAW7C,OAAS,IAC9EkC,KAAKmr2B,YAA0C,GAA5BG,EAAa9x1B,aAAoB,GAAKvY,SAAS2mf,EAAO55d,EAAQ,GAAI,IAG1F,GAFAhuB,KAAK44B,OAAOo3Y,WAAYhwa,KAAK44B,OAAOo3Y,WAAoBhwa,KAAK44B,OAAOo3Y,UACpEhwa,KAAKop2B,WAAYpp2B,KAAKop2B,WAAoBpp2B,KAAKop2B,UAC3C9k2B,MAAM40K,GACN,OAEJ,IAAS/7K,EAAI,EAAG+7K,EAAU,GAAI/7K,IAC1B+7K,EAAUj4K,SAASi4K,EAAQv4K,WAAWC,MAAM,GAAI,IAEpD0q2B,EAAa73R,WAAWv6Z,GACxBl5K,KAAKmp2B,WAA2C,IAA9BjwrB,EAAQv4K,WAAW7C,OACrCkC,KAAK6o2B,eAAgB,EACrB7o2B,KAAKgq2B,gBAAkBhq2B,KAAKgq2B,gBAAkB,EAC9C,MAER,IAAK,IAEGhq2B,KAAKgp2B,iBAAmBphX,EAAO55d,EAAQ,GAAGvpB,cAE1C,IAAIsn2B,EAAgB/r2B,KAAKyr2B,iBAAiB,0BACtCO,EAAa5u2B,OAAOC,KAAK0u2B,GAC7B,IAAS5u2B,EAAI,EAAG6C,KAAKgp2B,gBAAgBlr2B,OAAS,EAAGX,KACoC,IAA5E4u2B,EAAaC,EAAW,IAAIvn2B,cAAcC,QAAQ1E,KAAKgp2B,kBACrDsC,EAAaly1B,YAAc,IACI,IADI2y1B,EAAaC,EAAW,IAAIvn2B,cAClEC,QAAQ1E,KAAKgp2B,kBAA0BsC,EAAaly1B,WAAa,MACjEky1B,EAAap5Y,UAAUo5Y,EAAaly1B,WAAa,IAAM,IACvDpZ,KAAKmq2B,cAAgBmB,GAEzBtr2B,KAAKgp2B,gBAAkBhp2B,KAAKgp2B,gBAAgBxm2B,UAAU,EAAGxC,KAAKgp2B,gBAAgBlr2B,QAO9FkC,KAAKmq2B,cAAgBmB,CACzB,EAEAlD,EAAe7p2B,UAAUos2B,YAAc,WAEnC,IAAI9uwB,EAAQ77F,KAiLZ,OAhLA,SAA8Bis2B,GAC1B,IAAI7v1B,EAeAu8J,EACAw6qB,EAdA+Y,EAAkBrwwB,EAAM4vwB,iBAAiB,iCACzCU,EAAoB/u2B,OAAOC,KAAK6u2B,GAEhCE,EAAYvwwB,EAAM4vwB,iBAAiB,0BACnCY,EAAajv2B,OAAOC,KAAK+u2B,GAEzBE,EAAczwwB,EAAM4vwB,iBAAiB,4BACrCc,EAAenv2B,OAAOC,KAAKiv2B,GAC3BE,EAAoB3wwB,EAAM4vwB,iBAAiB,mCAC3CgB,EAAa5wwB,EAAM4vwB,iBAAiB,4BAEpCM,EAAgBlwwB,EAAM4vwB,iBAAiB,0BACvCO,EAAa5u2B,OAAOC,KAAK0u2B,GAG7B,OAAQE,GACJ,IAAK,MACL,IAAK,OACL,IAAK,IACD7v1B,EAASy/E,EAAM2swB,UAAY3swB,EAAMsuwB,cAAcjx1B,UAAUvY,WAAak7F,EAAMwswB,gBAAqB,IAAE1n2B,WACnGyb,EAASy/E,EAAM6wwB,UAAU7wwB,EAAM2twB,WAAY3twB,EAAM2swB,UAAWps1B,GACjC,IAAvBy/E,EAAM+twB,eACN/twB,EAAMstwB,YAAa,EACnBttwB,EAAM+twB,aAAe,GAEzB,MACJ,IAAK,KACDxt1B,EAASy/E,EAAM2swB,UAAY3swB,EAAM8wwB,SAAS9wwB,EAAMsuwB,cAAcjx1B,UAAW,GAAK2iF,EAAMwswB,gBAAqB,IAAE1n2B,WAC3Gyb,EAASy/E,EAAM6wwB,UAAU7wwB,EAAM2twB,WAAY3twB,EAAM2swB,UAAWps1B,GACjC,IAAvBy/E,EAAM+twB,eACN/twB,EAAMstwB,YAAa,EACnBttwB,EAAM+twB,aAAe,GAEzB,MACJ,IAAK,IACL,IAAK,KACL,IAAK,MACDxt1B,EAASy/E,EAAM2swB,WAAa3swB,EAAM4swB,aAAe5swB,EAAM6swB,WAAawD,EAAgBC,EAAkBtwwB,EAAMsuwB,cAAcrw1B,WAAWnZ,WAAak7F,EAAMwswB,gBAA8B,aAAE1n2B,WACxL,MACJ,IAAK,OACDyb,EAASy/E,EAAM2swB,WAAa3swB,EAAM4swB,aAAe5swB,EAAM6swB,WAAa0D,EAASC,EAAWxwwB,EAAMsuwB,cAAcrw1B,WAAWnZ,WAAak7F,EAAMwswB,gBAA8B,aAAE1n2B,WAC1K,MACJ,IAAK,QACDyb,EAASy/E,EAAM2swB,WAAa3swB,EAAM4swB,aAAe5swB,EAAM6swB,WAAa4D,EAAWC,EAAa1wwB,EAAMsuwB,cAAcrw1B,WAAWnZ,WAAak7F,EAAMwswB,gBAA8B,aAAE1n2B,WAC9K,MACJ,IAAK,IACDyb,EAASy/E,EAAM4swB,aAAe5swB,EAAMsuwB,cAAcnx1B,WAAa,GAAGrY,WAAak7F,EAAMwswB,gBAAuB,MAAE1n2B,WAC9Gyb,EAASy/E,EAAM6wwB,UAAU7wwB,EAAM4twB,YAAa5twB,EAAM4swB,YAAars1B,GAClC,IAAzBy/E,EAAMguwB,iBACNhuwB,EAAMstwB,YAAa,EACnBttwB,EAAMguwB,eAAiB,GAE3B,MACJ,IAAK,KACDzt1B,EAASy/E,EAAM4swB,YAAc5swB,EAAM8wwB,SAAS9wwB,EAAMsuwB,cAAcnx1B,WAAa,EAAG,GAAK6iF,EAAMwswB,gBAAuB,MAAE1n2B,WACpHyb,EAASy/E,EAAM6wwB,UAAU7wwB,EAAM4twB,YAAa5twB,EAAM4swB,YAAars1B,GAClC,IAAzBy/E,EAAMguwB,iBACNhuwB,EAAMstwB,YAAa,EACnBttwB,EAAMguwB,eAAiB,GAE3B,MACJ,IAAK,MACDzt1B,EAASy/E,EAAM4swB,YAAc+D,EAAiB3wwB,EAAMsuwB,cAAcnx1B,WAAa,GAAK6iF,EAAMwswB,gBAAuB,MAAE1n2B,WACnH,MACJ,IAAK,OACDyb,EAASy/E,EAAM4swB,YAAcgE,EAAU5wwB,EAAMsuwB,cAAcnx1B,WAAa,GAAK6iF,EAAMwswB,gBAAuB,MAAE1n2B,WAC5G,MACJ,IAAK,KACDyb,EAASy/E,EAAM6swB,WAAa7swB,EAAM8wwB,SAAS9wwB,EAAMsuwB,cAAcrx1B,cAAgB,IAAK,GAAK+iF,EAAMwswB,gBAAsB,KAAE1n2B,WACvHyb,EAASy/E,EAAM6wwB,UAAU7wwB,EAAM6twB,WAAY7twB,EAAM6swB,WAAYts1B,GAC7D,MACJ,IAAK,IACL,IAAK,MACL,IAAK,OACDA,EAASy/E,EAAM6swB,WAAa7swB,EAAM8wwB,SAAS9wwB,EAAMsuwB,cAAcrx1B,cAAe,GAAK+iF,EAAMwswB,gBAAsB,KAAE1n2B,WACjHyb,EAASy/E,EAAM6wwB,UAAU7wwB,EAAM6twB,WAAY7twB,EAAM6swB,WAAYts1B,GAC7D,MACJ,IAAK,IACDA,EAASy/E,EAAM8swB,YAAc9swB,EAAMsuwB,cAAc/w1B,WAAa,IAAM,IAAIzY,WAAak7F,EAAMwswB,gBAAsB,KAAE1n2B,WACvF,IAAxBk7F,EAAMiuwB,gBACNjuwB,EAAMstwB,YAAa,EACnBttwB,EAAMiuwB,cAAgB,GAE1B,MACJ,IAAK,KACD1t1B,EAASy/E,EAAM8swB,WAAa9swB,EAAM8wwB,SAAS9wwB,EAAMsuwB,cAAc/w1B,WAAa,IAAM,GAAI,GAAKyiF,EAAMwswB,gBAAsB,KAAE1n2B,WAC7F,IAAxBk7F,EAAMiuwB,gBACNjuwB,EAAMstwB,YAAa,EACnBttwB,EAAMiuwB,cAAgB,GAE1B,MACJ,IAAK,IACD1t1B,EAASy/E,EAAM8swB,WAAa9swB,EAAMsuwB,cAAc/w1B,WAAWzY,WAAak7F,EAAMwswB,gBAAsB,KAAE1n2B,WAC1E,IAAxBk7F,EAAMiuwB,gBACNjuwB,EAAMstwB,YAAa,EACnBttwB,EAAMiuwB,cAAgB,GAE1B,MACJ,IAAK,KACD1t1B,EAASy/E,EAAM8swB,WAAa9swB,EAAM8wwB,SAAS9wwB,EAAMsuwB,cAAc/w1B,WAAY,GAAKyiF,EAAMwswB,gBAAsB,KAAE1n2B,WAClF,IAAxBk7F,EAAMiuwB,gBACNjuwB,EAAMstwB,YAAa,EACnBttwB,EAAMiuwB,cAAgB,GAE1B,MACJ,IAAK,IACD1t1B,EAASy/E,EAAM+swB,aAAe/swB,EAAMsuwB,cAAc7w1B,aAAa3Y,WAAak7F,EAAMwswB,gBAAwB,OAAE1n2B,WAC9E,IAA1Bk7F,EAAMkuwB,kBACNluwB,EAAMstwB,YAAa,EACnBttwB,EAAMkuwB,gBAAkB,GAE5B,MACJ,IAAK,KACD3t1B,EAASy/E,EAAM+swB,aAAe/swB,EAAM8wwB,SAAS9wwB,EAAMsuwB,cAAc7w1B,aAAc,GAAKuiF,EAAMwswB,gBAAwB,OAAE1n2B,WACtF,IAA1Bk7F,EAAMkuwB,kBACNluwB,EAAMstwB,YAAa,EACnBttwB,EAAMkuwB,gBAAkB,GAE5B,MACJ,IAAK,IACD3t1B,EAASy/E,EAAMgtwB,cAAgBhtwB,EAAMsuwB,cAAc3w1B,aAAa7Y,WAAak7F,EAAMwswB,gBAAwB,OAAE1n2B,WAC/E,IAA1Bk7F,EAAMmuwB,kBACNnuwB,EAAMstwB,YAAa,EACnBttwB,EAAMmuwB,gBAAkB,GAE5B,MACJ,IAAK,KACD5t1B,EAASy/E,EAAMgtwB,cAAgBhtwB,EAAM8wwB,SAAS9wwB,EAAMsuwB,cAAc3w1B,aAAc,GAAKqiF,EAAMwswB,gBAAwB,OAAE1n2B,WACvF,IAA1Bk7F,EAAMmuwB,kBACNnuwB,EAAMstwB,YAAa,EACnBttwB,EAAMmuwB,gBAAkB,GAE5B,MACJ,IAAK,IACD5t1B,EAASlb,KAAKe,MAAM45F,EAAMsuwB,cAAczw1B,kBAAoB,KAAK/Y,WACjE,MACJ,IAAK,KACDg4K,EAAe98E,EAAMsuwB,cAAczw1B,kBAC/BmiF,EAAMsuwB,cAAczw1B,kBAAoB,KACxCi/J,EAAez3K,KAAKe,MAAM45F,EAAMsuwB,cAAczw1B,kBAAoB,KAEtE0C,EAASy/E,EAAM8wwB,SAASh0rB,EAAc,GACtC,MACJ,IAAK,MACDv8J,EAASy/E,EAAM8wwB,SAAS9wwB,EAAMsuwB,cAAczw1B,kBAAmB,GAC/D,MACJ,IAAK,IACL,IAAK,KACD0C,EAASy/E,EAAMsuwB,cAAc/w1B,WAAa,GAAK2y1B,EAAaC,EAAW,IAAMD,EAAaC,EAAW,IACrG,MACJ,IAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACD7Y,EAAc,CACVh40B,OAAQ8w1B,EACRxl2B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU//H,EAAMjjE,OAAOg8zB,cAE9Dx40B,EAASy/E,EAAMjjE,OAAO68uB,UAAU17vB,WAAW8hF,EAAMsuwB,cAAehX,GAIxE,GADA/20B,OAAoB6wD,IAAX7wD,EAAuBA,EAAS6v1B,EAAWrr2B,MAAM,EAAGqr2B,EAAWnu2B,OAAS,GAC7E+9F,EAAMotwB,aAAc,CAEpB,IADA,IAAI2D,EAAa,GACRzv2B,EAAI,EAAGA,EAAIif,EAAOte,OAAQX,IAC/Byv2B,GAAcX,EAAW,GAE7B,OAAOW,CACX,CAEI,OAAOxw1B,CAEf,CAEJ,EACAgs1B,EAAe7p2B,UAAU+r2B,iBAAmB,WACxC,IAAIt80B,EAAQhuB,KAAK44B,OAAO8ra,aAAar2K,eACjC48kB,EAAa,IAC6C,IAA1Djr2B,KAAKuo2B,gBAAgB7j2B,QAAQ1E,KAAKso2B,WAAWt60B,MAC7Ci90B,EAAajr2B,KAAKso2B,WAAWt60B,IAEjChuB,KAAKor2B,kBACL,IAAInglB,EAAajrR,KAAKiq2B,WAAWvn2B,QAAQ1C,KAAKqsd,YAAarsd,KAAK2q2B,eAChE3q2B,KAAKip2B,cAAe,EACpBjp2B,KAAKso2B,WAAato2B,KAAKiq2B,WAAWvn2B,QAAQ1C,KAAKqsd,YAAarsd,KAAK2q2B,eACjE3q2B,KAAKwp2B,WAAaxp2B,KAAKyp2B,YAAczp2B,KAAK0p2B,YAAa,EACvD1p2B,KAAKip2B,cAAe,EACpBjp2B,KAAK4q2B,mBAAqB5q2B,KAAKso2B,WAC/Bto2B,KAAKywa,cAAgBxlJ,EACrBjrR,KAAK44B,OAAO8ra,aAAa5lc,MAAQmsR,EACjCjrR,KAAK44B,OAAO8ra,aAAa5lc,MAAQmsR,EACjC,IAAK,IAAI9tR,EAAI,EAAGA,EAAI6C,KAAKso2B,WAAWxq2B,OAAQX,IACxC,GAAI8t2B,IAAejr2B,KAAKso2B,WAAWnr2B,GAAI,CACnC6wB,EAAQ7wB,EACR,KACJ,CAIJ,GAFA6C,KAAK44B,OAAO8ra,aAAar2K,eAAiBrgQ,EAC1ChuB,KAAKqq2B,uBACArq2B,KAAKmp2B,YAAcnp2B,KAAKqp2B,cAAgBrp2B,KAAKup2B,YAAa,CAC3D,IAAIsD,GAAa7s2B,KAAKmp2B,WACtBnp2B,KAAKmp2B,WAAanp2B,KAAKqp2B,YAAa,EACpCrp2B,KAAKgr2B,kBAAkB6B,EAC3B,CACI7s2B,KAAKup2B,cACLvp2B,KAAKqp2B,YAAa,GAEtBrp2B,KAAKup2B,aAAc,CACvB,EACAnB,EAAe7p2B,UAAUys2B,kBAAoB,SAAU6B,GACnD,IAAI7+0B,EAAQhuB,KAAK44B,OAAO8ra,aAAar2K,eACjCpgQ,EAAMjuB,KAAK44B,OAAO8ra,aAAap2K,aAC/Bw+kB,EAAcD,EAAa7+0B,EAAQ,EAAIC,EAE3C,IADAjuB,KAAKop2B,WAAY,EACV0D,EAAc9s2B,KAAKso2B,WAAWxq2B,QAAUgv2B,GAAe,GAAG,CAC7D,GAAI9s2B,KAAKuo2B,gBAAgB7j2B,QAAQ1E,KAAKso2B,WAAWwE,KAAiB,EAAG,CACjE9s2B,KAAK42pB,aAAa52pB,KAAKso2B,WAAWwE,IAClC,KACJ,CACAA,GAA6BD,GAAc,EAAI,CACnD,CACJ,EACAzE,EAAe7p2B,UAAUou2B,SAAW,SAAUh6zB,EAAKlqB,GAI/C,IAHA,IAAIsk1B,EAAYp6zB,EAAIhyC,WAChB7C,EAAS2qB,EAAQsk1B,EAAUjv2B,OAC3Bse,EAAS,GACJjf,EAAI,EAAGA,EAAIW,EAAQX,IACxBif,GAAU,IAEd,OAAOA,EAAS2w1B,CACpB,EACA3E,EAAe7p2B,UAAUmu2B,UAAY,SAAUnzsB,EAAQivsB,EAAWwE,GAC9D,IAAI5w1B,EAAS4w1B,EAIb,OAHIzzsB,IAAWivsB,IACXps1B,EAAS,KAENA,CACX,EACAgs1B,EAAe7p2B,UAAUgt2B,eAAiB,SAAUpw1B,EAAQ8x1B,GACxD,OAAQ9x1B,GACJ,IAAK,IACDnb,KAAKwo2B,UAAYyE,EACjB,MACJ,IAAK,IACDjt2B,KAAKyo2B,YAAcwE,EACdA,IACDjt2B,KAAKmq2B,cAAchmoB,SAAS,GAC5BnkO,KAAK+o2B,eAAiB,IAE1B,MACJ,IAAK,IACD/o2B,KAAK0o2B,WAAauE,EAClB,MACJ,IAAK,IACL,IAAK,IACDjt2B,KAAK2o2B,WAAasE,EACbA,IACDjt2B,KAAKgp2B,gBAAkB,IAE3B,MACJ,IAAK,IACDhp2B,KAAK4o2B,aAAeqE,EACpB,MACJ,IAAK,IACDjt2B,KAAK6o2B,cAAgBoE,EACrB,MACJ,QACI,OAAO,EAEf,OAAO,CACX,EACA7E,EAAe7p2B,UAAU2s2B,eAAiB,SAAUgC,GAChD,IAAIl/0B,EAAQhuB,KAAK44B,OAAO8ra,aAAar2K,eACjC48kB,EAAa,GACjB,IAA8D,IAA1Djr2B,KAAKuo2B,gBAAgB7j2B,QAAQ1E,KAAKso2B,WAAWt60B,IAAjD,CACIi90B,EAAajr2B,KAAKso2B,WAAWt60B,GAKjC,IAAIs90B,EAAe,IAAItz1B,KAAKhY,KAAKmq2B,cAAcrx1B,cAAe9Y,KAAKmq2B,cAAcnx1B,WAAYhZ,KAAKmq2B,cAAcjx1B,UAAWlZ,KAAKmq2B,cAAc/w1B,WAAYpZ,KAAKmq2B,cAAc7w1B,aAActZ,KAAKmq2B,cAAc3w1B,cAC9MxZ,KAAK8g2B,aAAe,IAAI9o1B,KAAKhY,KAAKmq2B,cAAcrx1B,cAAe9Y,KAAKmq2B,cAAcnx1B,WAAYhZ,KAAKmq2B,cAAcjx1B,UAAWlZ,KAAKmq2B,cAAc/w1B,WAAYpZ,KAAKmq2B,cAAc7w1B,aAActZ,KAAKmq2B,cAAc3w1B,cAC/M,IAAI2z1B,EAAiBD,GAAe,EAAI,EACxC,OAAQjC,GACJ,IAAK,IACDK,EAAa1m0B,QAAQ0m0B,EAAapy1B,UAAYi01B,GAC9C,MACJ,IAAK,IAEG,IAAI1lb,EAAW6jb,EAAaty1B,WAAam01B,EAGzC,GAFA7B,EAAa1m0B,QAAQ,GACrB0m0B,EAAannoB,SAASsjN,GAClBznb,KAAKwo2B,UAAW,CAChB,IAAIoD,EAAkB,IAAI5z1B,KAAKhY,KAAK8g2B,aAAaho1B,cAAe9Y,KAAK8g2B,aAAa9n1B,WAAa,EAAG,GAAGE,UACjG2y1B,EAAiB,IAAI7z1B,KAAKsz1B,EAAaxy1B,cAAewy1B,EAAaty1B,WAAa,EAAG,GAAGE,UACtFlZ,KAAK8g2B,aAAa5n1B,YAAc0y1B,GAAmBC,GAAkBD,EACrEN,EAAa1m0B,QAAQin0B,GAGrBP,EAAa1m0B,QAAQ5kC,KAAK8g2B,aAAa5n1B,UAE/C,MAEIoy1B,EAAa1m0B,QAAQ5kC,KAAK8g2B,aAAa5n1B,WAE3ClZ,KAAK8g2B,aAAe,IAAI9o1B,KAAKsz1B,EAAaxy1B,cAAewy1B,EAAaty1B,WAAYsy1B,EAAapy1B,WAC/F,MAER,IAAK,IACDoy1B,EAAajmoB,YAAYimoB,EAAaxy1B,cAAgBq01B,GACtD,MACJ,IAAK,IACL,IAAK,IACD7B,EAAap5Y,SAASo5Y,EAAaly1B,WAAa+z1B,GAChD,MACJ,IAAK,IACD7B,EAAal5Y,WAAWk5Y,EAAahy1B,aAAe6z1B,GACpD,MACJ,IAAK,IACD7B,EAAa73R,WAAW63R,EAAa9x1B,aAAe2z1B,GACpD,MACJ,IAAK,IACD7B,EAAap5Y,UAAUo5Y,EAAaly1B,WAAa,IAAM,IAK/DpZ,KAAKmq2B,cAAgBmB,EAAaxy1B,cAAgB,EAAIwy1B,EAAetr2B,KAAKmq2B,eACZ,IAA1Dnq2B,KAAKuo2B,gBAAgB7j2B,QAAQ1E,KAAKso2B,WAAWt60B,KAC7ChuB,KAAKur2B,eAAevr2B,KAAKso2B,WAAWt60B,IAAQ,EAlDhD,CAoDJ,EACAo60B,EAAe7p2B,UAAUkt2B,iBAAmB,SAAUtw1B,GAClD,IAAI3C,EAASxY,KAAK44B,OAAOpgB,OAQzB,MANe,OAAXA,GAA8B,UAAXA,EACVu1M,GAAS5yM,EAAQk7c,MAGjBtoQ,GAAS,QAAev1M,EAAU,8BAAgC2C,EAAS45c,GAG5F,EACAqzY,EAAe7p2B,UAAU2r2B,kBAAoB,WACzC,IAAI1G,EAAgBxj2B,KAAKyr2B,iBAAiB,yCAA0C9q2B,WAgBpF,MAf+B,eAA3BX,KAAK44B,OAAO82c,aACZ8zX,EAAgBxj2B,KAAKyr2B,iBAAiB,yCAA0C9q2B,WAC5EX,KAAK44B,OAAOzd,QAAUnb,KAAK44B,OAAO4q0B,eAClCA,EAAexj2B,KAAK44B,OAAO4q0B,eAGJ,mBAA3Bxj2B,KAAK44B,OAAO82c,aACZ8zX,EAAgBxj2B,KAAKyr2B,iBAAiB,yCAA0C9q2B,WAC5EX,KAAK44B,OAAO6q0B,iBACZD,EAAexj2B,KAAK44B,OAAO6q0B,iBAGJ,eAA3Bzj2B,KAAK44B,OAAO82c,aACZ8zX,EAAexj2B,KAAK44B,OAAOw00B,kBAExB5J,CACX,EACA4E,EAAe7p2B,UAAUis2B,aAAe,WACpCxq2B,KAAKwo2B,UAAYxo2B,KAAKyo2B,YAAczo2B,KAAK0o2B,WAAa1o2B,KAAK2o2B,WAAa3o2B,KAAK4o2B,aAAe5o2B,KAAK6o2B,eAAgB,EACjH7o2B,KAAKmquB,aACT,EACAi+H,EAAe7p2B,UAAU4ruB,YAAc,WACnCnquB,KAAK+o2B,eAAiB/o2B,KAAKgp2B,gBAAkB,GAC7C,IAAI/9kB,EAAajrR,KAAKiq2B,WAAWvn2B,QAAQ1C,KAAKqsd,YAAarsd,KAAK2q2B,eAChE3q2B,KAAKip2B,cAAe,EACpBjp2B,KAAKso2B,WAAato2B,KAAKiq2B,WAAWvn2B,QAAQ1C,KAAKqsd,YAAarsd,KAAK2q2B,eACjE3q2B,KAAKip2B,cAAe,EACpBjp2B,KAAK4q2B,mBAAqB5q2B,KAAKso2B,WAC/Bto2B,KAAKywa,cAAgBxlJ,EACrBjrR,KAAK44B,OAAOiq0B,iBAAiB53kB,EACjC,EACAm9kB,EAAe7p2B,UAAUklE,QAAU,WAC/BzjE,KAAK64D,qBACT,EACOuvyB,CACX,CAt0BoC,GHThClnnB,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAYIuvP,IAAQ,UACRi/mB,IAAiB,QACjBC,KAAM,IAAIt11B,MAAOkB,UACjBipN,KAAQ,IAAInqN,MAAOgB,WACnBkpN,KAAO,IAAIlqN,MAAOc,cAClB2re,IAAO,eAIPmvW,IAAW,WACX2Z,IAAQ,UACRC,IAAa,eACb/nX,IAAW,aAIXgoX,IAAQ,gBACRC,IAAY,cAGZ7L,IAAW,kBAEX8L,IAAW,aACX7tB,IAAoB,CAAC,QAAS,QAAS,UAG3C,SAAWsP,GAyBPA,EAAergM,gBAvBf,SAAyB6+M,EAAWvj2B,EAAKxF,EAAK4wwB,EAAWroiB,EAAYn4K,GACjE,IAQIjnC,EAPAhuB,KAAK401B,aAQT,IAAI7quB,EAAkB,IAAP90D,EACX4vkB,EAAY,GACZgpO,EAAkB,GACtB7/0B,GAAU3jB,EAAIwnd,gBAAgB,GAE9B,IADA,IAAI5jc,GAAQppB,EAAIgtd,gBAAgB,GACzB5jc,GAAOD,GACV6/0B,EAAgBlw2B,KAAKqwB,GACrB62mB,EAAUlnoB,KAAK83wB,EAAU17vB,WAAW,IAAI/B,KAAKgW,GAAQ,CAAE7S,OAAQiyN,EAAY3mO,KAAM,UACjFunB,GAAS+7F,EAGb,MAAO,CAAE9b,WAAY4/vB,EAAiBv/wB,KADxBm3iB,GAAS4b,WAAWusN,EAAW/oO,EAAW,MAAM,GAElE,CAEH,CA1BD,CA0BGuqN,KAAmBA,GAAiB,CAAC,KACC,SAAU5qoB,GAE/C,SAASsppB,IACL,OAAkB,OAAXtppB,GAAmBA,EAAO5mN,MAAMoC,KAAMnC,YAAcmC,IAC/D,CAHAkhP,IAAU4snB,EAAqBtppB,GAI/B6oG,IAAW,CACP63K,GAAS,QACV4oY,EAAoBvv2B,UAAW,WAAO,GACzC8uT,IAAW,CACP63K,GAAS,UACV4oY,EAAoBvv2B,UAAW,aAAS,GAC3C8uT,IAAW,CACP63K,GAAS,SACV4oY,EAAoBvv2B,UAAW,YAAQ,GAC1C8uT,IAAW,CACP63K,GAAS,oBACV4oY,EAAoBvv2B,UAAW,oBAAgB,GAClD8uT,IAAW,CACP63K,GAAS,SACV4oY,EAAoBvv2B,UAAW,YAAQ,GAC1C8uT,IAAW,CACP63K,GAAS,WACV4oY,EAAoBvv2B,UAAW,cAAU,GAC5C8uT,IAAW,CACP63K,GAAS,WACV4oY,EAAoBvv2B,UAAW,cAAU,EAEhD,EA3ByC,CA2BvC2re,IAa8B,SAAU1lR,GAStC,SAASuppB,EAAW/u1B,EAASy6C,GACzB,IAAImnJ,EAAQ4D,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,KAUnD,OATA4gN,EAAM8gc,cAAgB,GACtB9gc,EAAMitpB,gBAAkB,GACxBjtpB,EAAMotpB,sBAAwB,GAC9BptpB,EAAMqhpB,mBAAqB,KAC3BrhpB,EAAMmiD,WAAY,EAClBniD,EAAM6jc,eAAgB,EACtB7jc,EAAMuhpB,gBAAkB,GACxBvhpB,EAAM8uR,WAAa9uR,EAAMoiR,gBACzBpiR,EAAMqtpB,YAAcjv1B,EACb4hM,CACX,CApBAsgC,IAAU6snB,EAAYvppB,GA2BtBuppB,EAAWxv2B,UAAUgwe,UAAY,WAC7Bvue,KAAKs1pB,aAAe,CAChB/mf,MAAO,QACPhkB,OAAQ,SACRt8H,IAAK,MACLsrT,IAAK,MACLO,KAAM,OACNt3L,KAAM,YACND,GAAI,UACJj/I,KAAM,YACNF,MAAO,aACPurI,KAAM,gBACNlZ,MAAO,eAEXz1H,KAAKynT,aAAeznT,KAAKy5D,QAAQr8B,WAAU,GAC3Cs1B,GAAY,CAAC1yD,KAAKynT,cAAe,CAACg9L,IAjI5B,YADA,UAmINzkf,KAAK0kc,aAAe1kc,KAAKy5D,QACzBz5D,KAAKku2B,WAAa,KAClBlu2B,KAAKo4pB,YAAct3L,GAAQ9ge,KAAKy5D,QAAS,QACZ,mBAAzBz5D,KAAKy5D,QAAQ2nF,UACbphJ,KAAKku2B,WAAalu2B,KAAKy5D,QAAQ2nF,QAC/BphJ,KAAK0kc,aAAe1kc,KAAKg+B,cAAc,SACvCh+B,KAAKy5D,QAAQliD,YAAYvX,KAAK0kc,eAElC1kc,KAAKmnV,SAAWnnV,KAAKy5D,QAAQz/B,aAAa,YAAch6B,KAAKy5D,QAAQrpD,aAAa,YAAc,IAChGpQ,KAAKy5D,QAAQlG,gBAAgB,YAC7BvzD,KAAKmu2B,mBAAqB,CACtBrv1B,SAAUyW,SAASwK,KAE3B,EAEAgu0B,EAAWxv2B,UAAUupE,OAAS,WAC1B9nE,KAAKy9E,aACLz9E,KAAKou2B,qBACLpu2B,KAAK+90B,+BACL/90B,KAAKqu2B,mBACLru2B,KAAKi3pB,YACLj3pB,KAAKsu2B,mBACLtu2B,KAAKupG,aACLvpG,KAAKuu2B,kBACLvu2B,KAAKog2B,cACLpg2B,KAAK2zR,SAAS3zR,KAAKqopB,kBAAkBropB,KAAKlB,SACtCkB,KAAK4i2B,YAAe5i2B,KAAKlB,QAASkB,KAAKmi2B,iBAA4C,WAAxBni2B,KAAKo+nB,gBAAgCp+nB,KAAKo+nB,gBAAmBp+nB,KAAKgoX,cAC7HhoX,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAC3Bni2B,KAAKwu2B,gBAAgBxu2B,KAAKmi2B,kBAE9Bni2B,KAAKmzI,OAASnzI,KAAK0kc,aACnB1kc,KAAK0kc,aAAa97b,aAAa,QAAS5I,KAAK0kc,aAAa5lc,OAC1DkB,KAAKmh1B,cAAgBnh1B,KAAK4xd,cAAc5xd,KAAK0kc,aAAa5lc,OACrDkyK,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAAQgxG,GAAkBhxK,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,KAA+B,UAAxBr5B,KAAKo+nB,gBAC/Jp+nB,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,GAAGl1B,UAAU2C,IAAI,WAE5FkqK,GAAkB8vT,GAAQ9ge,KAAKy5D,QAAS,cAAgBqna,GAAQ9ge,KAAKy5D,QAAS,YAAYu7N,WAC3Fh1R,KAAKsG,SAAU,GAEnBtG,KAAK6ve,gBACT,EACAk+X,EAAWxv2B,UAAU6h2B,YAAc,WAC/B,IAAKpvrB,GAAkBhxK,KAAKm6oB,uBAAyBn6oB,KAAKlB,MAAO,CAC7D,IAAI2v2B,GAAqB,IAAIz21B,MAAO4B,oBAAsB,GAEtD8m1B,EADqB1g2B,KAAKm6oB,qBACUs0N,EACxC/N,EAAe1g2B,KAAKug2B,mBAAqBG,IAAiBA,EAC1D1g2B,KAAKlB,MAAQ,IAAIkZ,KAAMhY,KAAKlB,MAAOuZ,UAA4B,GAAfqo1B,EAAoB,GAAK,IAC7E,CACJ,EACAqN,EAAWxv2B,UAAUgi2B,iBAAmB,WACpC,IAAIE,EAAc,IAAIzo1B,KAAKhY,KAAKlB,MAAMga,cAAe,EAAG,GAAGc,oBACvD4m1B,EAAe,IAAIxo1B,KAAKhY,KAAKlB,MAAMga,cAAe,EAAG,GAAGc,oBAC5D,OAAQ5Z,KAAKlB,MAAM8a,oBAAsB1Y,KAAK2D,IAAI471B,EAAaD,EACnE,EACAuN,EAAWxv2B,UAAU8v2B,iBAAmB,WAChCru2B,KAAK0i2B,UACA1i2B,KAAKw3c,UACNx3c,KAAK0kc,aAAanxY,gBAAgB,YAItC8D,GAAWr3D,KAAK0kc,aAAc,CAAE,SAAY,KAEhD1kc,KAAK0u2B,gBACT,EACAX,EAAWxv2B,UAAUmw2B,eAAiB,WAC7B1u2B,KAAK0i2B,YAAa1i2B,KAAK61pB,cAAiB71pB,KAAKw3c,SAQzCx3c,KAAK61pB,cACVnjmB,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAY,CAACuxwB,MARZ,KAA5B3t2B,KAAK0kc,aAAa5lc,MAClB4zD,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAY,CAACuxwB,MAG5Cl7yB,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAY,CAACuxwB,KAMrD,EACAI,EAAWxv2B,UAAUgw2B,gBAAkB,WACnCvu2B,KAAK2u2B,UAAU3u2B,KAAK4u2B,QAAS5u2B,KAAK6u2B,SAC7B79rB,GAAkBhxK,KAAKlB,SACxBkB,KAAK8u2B,gBACL9u2B,KAAKu1pB,SAAS9xlB,UACdzjE,KAAKo21B,aAAep21B,KAAKu1pB,SAAW,MAElCjxpB,OAAOtE,KAAKlB,QAAyB,OAAfkB,KAAKlB,OACxBkB,KAAK+u2B,eAAe/u2B,KAAKlB,SAEtBkB,KAAK4h1B,YACL5h1B,KAAKgv2B,aAEThv2B,KAAK23pB,UAAY,KACjB33pB,KAAK6u2B,QAAU7u2B,KAAK4xd,cAAc5xd,KAAK6u2B,SACvC7u2B,KAAK4u2B,QAAU5u2B,KAAK4xd,cAAc5xd,KAAK4u2B,SACvC5u2B,KAAK6t2B,gBAAkB7t2B,KAAK0hpB,cAAgB,GAC5C1hpB,KAAK2u2B,UAAU3u2B,KAAK4u2B,QAAS5u2B,KAAK6u2B,SAG9C,EACAd,EAAWxv2B,UAAU+zpB,oBAAsB,SAAUnwoB,EAAQsnG,GACzD,IAAI5oH,EAAOshB,EAAO/R,aAAa,QAAU+R,EAAO/R,aAAa,QAAU+R,EAAO/R,aAAa,MAC3Fq5G,EAAM7gH,aAAa,OAAQ/H,GAC3BshB,EAAOoxC,gBAAgB,QAEvB,IADA,IAAI8D,EAAa,CAAC,WAAY,gBAAiB,QACtCl6D,EAAI,EAAGA,EAAIk6D,EAAWv5D,OAAQX,IACnC,IAAI6zK,GAAkB7uJ,EAAO/R,aAAainD,EAAWl6D,KAArD,CAGA,IAAIqI,EAAO2c,EAAO/R,aAAainD,EAAWl6D,IAC1CssH,EAAM7gH,aAAayuD,EAAWl6D,GAAIqI,GAClC2c,EAAOoxC,gBAAgB8D,EAAWl6D,GAHlC,CAKR,EACA4w2B,EAAWxv2B,UAAUk/E,WAAa,WAC9Bz9E,KAAKy1wB,UAAY,IAAIxgT,GAAqBj1d,KAAKwY,QAC/CxY,KAAKg1d,eAAiB,IAAIC,GAAqB,MAC/Cj1d,KAAKiv2B,kBACLjv2B,KAAK2i2B,kBAAkB3i2B,KAAKlB,OAE5BkB,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKkv2B,aAAalv2B,KAAKlB,WAAY,GAC5FkB,KAAKiie,cAAc,CAAE53d,IAAKrK,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKkv2B,aAAalv2B,KAAKqK,SAAU,GACxFrK,KAAKiie,cAAc,CAAEp9d,IAAK7E,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKkv2B,aAAalv2B,KAAK6E,SAAU,GACxF7E,KAAKiie,cAAc,CAAE3wE,SAAUtxZ,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKkv2B,aAAalv2B,KAAKsxZ,cAAe,GAC1E,OAApBtxZ,KAAKku2B,YACLlu2B,KAAKsypB,oBAAoBtypB,KAAKy5D,QAASz5D,KAAK0kc,cAEhD1kc,KAAK6k2B,+BACL7k2B,KAAKkh1B,iBAAgB,GACrB,IAAIV,EAAa,CAAEx4d,YAAahoX,KAAKgoX,aACrChoX,KAAKoppB,KAAO,IAAI9tK,GAAK,aAAcklW,EAAYxg1B,KAAKwY,QACpDxY,KAAKiie,cAAc,CAAEj6G,YAAahoX,KAAKgoX,aAAehoX,KAAKoppB,KAAKvtK,YAAY,iBAAkB,GAC9F77e,KAAK23pB,UAAY33pB,KAAKi21B,eAAej21B,KAAKlB,OAC1CkB,KAAK4u2B,QAAU5u2B,KAAKi21B,eAAej21B,KAAKqK,KACxCrK,KAAK6u2B,QAAU7u2B,KAAKi21B,eAAej21B,KAAK6E,KACxC7E,KAAKmp2B,WAAanp2B,KAAK20pB,cAAgB30pB,KAAKmv2B,gBAAiB,EAC7Dnv2B,KAAK8zpB,YAAc9zpB,KAAKov2B,iBAAmBpv2B,KAAK4owB,SAAW,KACtD53lB,GAAkBhxK,KAAKy5D,QAAQrpD,aAAa,QAO7CpQ,KAAKy5D,QAAQ3jD,GAAKutc,GAAY,kBACN,OAApBrjd,KAAKku2B,YACL72yB,GAAWr3D,KAAK0kc,aAAc,CAAE,GAAM1kc,KAAKy5D,QAAQ3jD,GAAK,YARpC,OAApB9V,KAAKku2B,aACLlu2B,KAAK0kc,aAAa5ub,GAAK9V,KAAKy5D,QAAQrpD,aAAa,MAAQ,UAU7D4gK,GAAkBhxK,KAAK0kc,aAAat0b,aAAa,UACjDinD,GAAWr3D,KAAK0kc,aAAc,CAAE,KAAQ1kc,KAAKy5D,QAAQ3jD,KAErD9V,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,kBAGpB,EACAgmyB,EAAWxv2B,UAAU0w2B,gBAAkB,WACnC,GAAIjv2B,KAAKmb,OACL,GAA2B,kBAAhBnb,KAAKmb,OACZnb,KAAKwj2B,aAAexj2B,KAAKmb,YAExB,GAAK61J,GAAkBhxK,KAAKmb,OAAO+tc,WAAsC,KAAzBlpd,KAAKmb,OAAO+tc,SAK7Dlpd,KAAKwj2B,aAAexj2B,KAAKy1wB,UAAUhgT,eAAe,CAAEhvd,KAAM,OAAQyid,SAAU,cALE,CAC9E,IAAIs+Y,EAAiBxn2B,KAAKmb,OAAO+tc,SACjClpd,KAAKwj2B,aAAexj2B,KAAKy1wB,UAAUhgT,eAAe,CAAEhvd,KAAM,OAAQyid,SAAUs+Y,GAChF,MAMAxn2B,KAAKwj2B,aAAe,IAE5B,EACAuK,EAAWxv2B,UAAU031B,eAAiB,SAAUn31B,GAC5C,OAASkyK,GAAkBlyK,IAAUA,aAAiBkZ,OAAS1T,OAAOxF,GAAUA,EAAQ,IAC5F,EACAiv2B,EAAWxv2B,UAAU6v2B,mBAAqB,WAClCpu2B,KAAKkj2B,gBAAkBhmY,GAAQK,WAC/Bv9d,KAAK6O,UAAY,mBAErB,IAAIwg2B,EAAyBrv2B,KAAK6O,SAC9BovnB,GAAoBj+nB,KAAK4i2B,WACxB5xrB,GAAkBhxK,KAAK6O,WAA+B,KAAlB7O,KAAK6O,WAC1Cwg2B,EAA0Brv2B,KAAK6O,SAASnM,QAAQ,OAAQ,KAAM6S,QAElEvV,KAAK61pB,aAAe/3B,GAAM2E,YAAY,CAClChpkB,QAASz5D,KAAK0kc,aACdg+L,gBAAiBzE,EACjBG,eAAgBp+nB,KAAKo+nB,eACrB3hgB,WAAY,CACR+6U,SAAUx3c,KAAKw3c,SACfxvF,YAAahoX,KAAKgoX,YAClBn5W,SAAUwg2B,EACV/o2B,QAAStG,KAAKsG,QACdyne,UAAW/te,KAAK+te,UAChB40J,gBAAiB3ioB,KAAK2ioB,iBAE1B3ikB,QAAS,CAAC,4CACXhgE,KAAKg+B,eACRh+B,KAAK61pB,aAAaz5jB,UAAU/3F,MAAMd,MAAQvD,KAAKg8E,SAASh8E,KAAKuD,OAC7D8zD,GAAWr3D,KAAK0kc,aAAc,CAC1B,oBAAqB,OAAQ,SAAY,IACzC,gBAAiB,QAAS,KAAQ,WAAY,aAAgB,MAC9D,YAAe,MAAO,eAAkB,MAAO,WAAc,QAC7D,gBAAiB,QAAS,eAAgB,UAEzC1kc,KAAKwjW,cAAcxjW,KAAK4g1B,aACzB9iN,GAAMn9e,cAAc,CAAE,MAAS3gJ,KAAK4g1B,YAAc5g1B,KAAK0kc,cAE3DjyY,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WA9VjB,iBA+Vf,EACA2xwB,EAAWxv2B,UAAU+w2B,sBAAwB,WACzC,IAEIj5uB,EAFU,IAAI4+V,GAAqBj1d,KAAKwY,QAEnBi9c,eAAe,CAAEvM,SAAU,QAOpD,OANIlpd,KAAKwjW,cAAcxjW,KAAKwj2B,cACbntuB,EAAa,IAAMr2H,KAAKuv2B,WAAW,QAGnCvv2B,KAAKwj2B,YAGxB,EACAuK,EAAWxv2B,UAAUok2B,kBAAoB,SAAU7j2B,GAC/C,IAAIyza,GAAY,EAChB,GAAqB,kBAAVzza,IAAuBkyK,GAAkBlyK,GAAQ,CACxD,IAAIsm1B,EAActm1B,EACS,kBAAhBsm1B,IACPA,EAAcA,EAAY7v0B,QAE9B,IACIi61B,EADAC,EAAkB,KAwBtB,GAtBqB,kBAAV3w2B,EACPsm1B,EAActm1B,EAAM6B,WAEE,kBAAV7B,IACN,mBAAoBgC,KAAKhC,IAEvBkyK,GADJy+rB,EAAkBzv2B,KAAK0v2B,eAAe1v2B,KAAK4xd,cAAc9yd,MAKjDkyK,GAHJy+rB,EAAkBzv2B,KAAKi21B,eAAej21B,KAAKy1wB,UAAU19vB,UAAUqt0B,EAAa,CACxEjq0B,OAAQnb,KAAKsv2B,wBAAyB7o2B,KAAM,iBAG5Cgp2B,EAAkBzv2B,KAAKi21B,eAAej21B,KAAKy1wB,UAAU19vB,UAAUqt0B,EAAa,CACxEjq0B,OAAQnb,KAAKwj2B,aAAc/81B,KAAM,WAAYyid,SAAU,WAS3EumZ,GAAoBz+rB,GAHpBw+rB,EAAWxv2B,KAAKy1wB,UAAU19vB,UAAUqt0B,EAAa,CAC7Cjq0B,OAAQnb,KAAKsv2B,wBAAyB7o2B,KAAM,eAEG+o2B,aAAoBx31B,OAAS1T,OAAOkr2B,GAAaA,EAAW,KAC3Gx+rB,GAAkBy+rB,IAAoBrqB,EAAY1i1B,QAAQ,MAAO,IAAI5E,OAAQ,CAC7E,IACIgm2B,EAAiB,KAIrBA,EAAiB,8IAFF,kJAGIhj2B,KAAKsk1B,KAAiB0e,EAAehj2B,KAAKsk1B,IACpD,mBAAoBtk1B,KAAKhC,IAAWwF,OAAO,IAAI0T,KAAK,GAAKot0B,IAC9D7ya,GAAY,EAGZk9b,EAAkB,IAAIz31B,KAAK,GAAKot0B,EAExC,CACI7ya,GACKvya,KAAK4h1B,aACN5h1B,KAAKii2B,mBAAqB7c,GAE9Bpl1B,KAAKiie,cAAc,CAAEnje,MAAO,OAAQ,GACpCkB,KAAK23pB,UAAY,OAGjB33pB,KAAKiie,cAAc,CAAEnje,MAAO2w2B,IAAmB,GAC/Czv2B,KAAK23pB,UAAY33pB,KAAKlB,MAE9B,CACJ,EACAiv2B,EAAWxv2B,UAAUwqe,gBAAkB,WACnC,IAAIe,EAAU,GAId,OAHI9pe,KAAK4i2B,YACL94X,EAAQnse,KAAK,CAAEytE,KAAM,CAACprE,MAAOspe,OAAQ,mBAElCQ,CACX,EAEAikY,EAAWxv2B,UAAUgx2B,WAAa,SAAU9o2B,GAQxC,MANoB,OAAhBzG,KAAKwY,QAAmC,UAAhBxY,KAAKwY,OACPu1M,GAAS,oBAAqBsoQ,MAG9Br2d,KAAK2v2B,qBAAqB56Y,GAAU,GAAK/0d,KAAKwY,OAG5E,EAEAu11B,EAAWxv2B,UAAUklE,QAAU,WAC3BzjE,KAAKuiC,OACDviC,KAAK2ioB,kBACL3ioB,KAAKshoB,YAAc/rmB,SAAS8D,uBAAuB,gBAAgB,IAEvEr5B,KAAKsk2B,eAODtk2B,KAAK0kc,eACLo5L,GAAMqD,iBAPU,CAChB,oBAAqB,OAAQ,SAAY,IACzC,gBAAiB,QAAS,KAAQ,WAAY,aAAgB,MAC9D,YAAe,MAAO,eAAkB,MAAO,WAAc,QAC7D,gBAAiB,OAAQ,eAAgB,SAGHnhoB,KAAK0kc,cACnB,OAApB1kc,KAAKku2B,YACLlu2B,KAAK61pB,aAAaz5jB,UAAUl4F,cAAcqT,YAAYvX,KAAK0kc,cAE1D1zR,GAAkBhxK,KAAKynT,aAAar3S,aAAa,aAIlDpQ,KAAK0kc,aAAanxY,gBAAgB,YAHlCvzD,KAAK0kc,aAAa97b,aAAa,WAAY5I,KAAKmnV,UAKpDnnV,KAAKmn2B,uBACLnn2B,KAAK4v2B,cAAc,CAAC5v2B,KAAK0kc,eACzB1kc,KAAK0kc,aAAavgc,UAAU0C,OAAO,WAC/BmqK,GAAkBhxK,KAAKynT,aAAar3S,aAAa,cACjD0tnB,GAAMgD,YAAW,EAAM9goB,KAAK0kc,aAAc1kc,KAAKo+nB,iBAGnDp+nB,KAAK61pB,aAAaz5jB,WAClBikY,GAAOrge,KAAK61pB,aAAaz5jB,WAE7Bp8F,KAAK61pB,aAAe71pB,KAAKo21B,aAAep21B,KAAKynT,kBAAex6O,EAC5DjtE,KAAK0hpB,cAAgB1hpB,KAAK6t2B,gBAAkB7t2B,KAAKgu2B,sBAAwB,GACpEh9rB,GAAkBhxK,KAAK6v2B,WACxB7v2B,KAAK6v2B,WAET/xO,GAAMr6jB,QAAQ,CACVhK,QAASz5D,KAAK0kc,aACd05L,eAAgBp+nB,KAAKo+nB,eACrB3hgB,WAAYz8H,KAAKy8H,YAClBz8H,KAAKshoB,aACR98a,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,MAC1BA,KAAKo4pB,aACL15L,GAAa73d,OAAO7G,KAAKo4pB,YAAa,QAASp4pB,KAAKi+0B,kBAExDj+0B,KAAK6v2B,SAAW,KAChB7v2B,KAAKmu2B,mBAAqB,KAC1Bnu2B,KAAKm9pB,gBAAkB,KACvBn9pB,KAAK8v2B,QAAU,KACf9v2B,KAAK0hpB,cAAgB,IACzB,EACAqsN,EAAWxv2B,UAAU4o2B,qBAAuB,WAExC,IADA,IAAI4I,EAAe,GACV5y2B,EAAI,EAAGA,EAAI6C,KAAK0kc,aAAartY,WAAWv5D,OAAQX,IACrD4y2B,EAAa5y2B,GAAK6C,KAAK0kc,aAAartY,WAAWl6D,GAAG0D,KAEtD,IAAS1D,EAAI,EAAGA,EAAI4y2B,EAAajy2B,OAAQX,IAChC6zK,GAAkBhxK,KAAKynT,aAAar3S,aAAa2/1B,EAAa5y2B,MAO/D6C,KAAK0kc,aAAanxY,gBAAgBw8yB,EAAa5y2B,IACT,UAAlC4y2B,EAAa5y2B,GAAGsH,gBAChBzE,KAAK0kc,aAAa5lc,MAAQ,MAR9BkB,KAAK0kc,aAAa97b,aAAamn2B,EAAa5y2B,GAAI6C,KAAKynT,aAAar3S,aAAa2/1B,EAAa5y2B,KACtD,UAAlC4y2B,EAAa5y2B,GAAGsH,gBAChBzE,KAAK0kc,aAAa5lc,MAAQkB,KAAKynT,aAAar3S,aAAa2/1B,EAAa5y2B,KAUtF,EAEA4w2B,EAAWxv2B,UAAUuw2B,cAAgB,WACjC9u2B,KAAKo21B,aAAep21B,KAAKg+B,cAAc,MAAO,CAC1C9xB,UAAWu4e,eACX/xc,MAAO,CAAE,GAAM1yC,KAAKy5D,QAAQ3jD,GAAK,SAAU,MAAS,uBAExD9V,KAAKo21B,aAAaxt1B,aAAa,aAAc5I,KAAKy5D,QAAQ3jD,IAC1D9V,KAAKo21B,aAAaxt1B,aAAa,OAAQ,UAClCooK,GAAkBhxK,KAAK6O,YACxB7O,KAAKo21B,aAAalq1B,WAAa,IAAMlM,KAAK6O,WAEzCmiK,GAAkBhxK,KAAKi1D,OAASj1D,KAAKi1D,KAAO,IAC7Cj1D,KAAKgw2B,eACL1ntB,GAAO,CAACtoJ,KAAKiw2B,aAAcjw2B,KAAKo21B,eAEpCp21B,KAAKkw2B,eACLlw2B,KAAKk/pB,cACL7+L,GAAOrge,KAAKo21B,aAChB,EACA2X,EAAWxv2B,UAAU4x2B,eAAiB,WAClC,IAAI3s2B,EAASvC,SAASos2B,IAAgB,IAClC/sM,EAActgqB,KAAKo21B,aAAalz1B,wBAAwBM,OAC5D,OAAO88pB,EAAc98pB,EAASA,EAAS88pB,CAC3C,EACAytM,EAAWxv2B,UAAUyx2B,aAAe,WAChChw2B,KAAK+upB,kBACL/upB,KAAK01pB,iBACL,IAAI1tL,EAAc,CAAEr0a,SAAU,IAAKuvJ,SAAU,IAAMwqpB,KACnD1t2B,KAAK6v2B,SAAW/nY,GAAa9ne,KAAKiw2B,YAAajoY,GAC/Choe,KAAK0hpB,cAAgB1hpB,KAAKiw2B,YAAYxi1B,iBAAiB,IAAMig1B,IACjE,EACAK,EAAWxv2B,UAAU2gqB,YAAc,WAC/B,IAAIt+c,EAAQ5gN,KAsCZ,GArCAA,KAAKow2B,eAAiBpw2B,KAAK61pB,aAAaz5jB,UAAUl5F,wBAClDlD,KAAKu1pB,SAAW,IAAI18Y,GAAM74Q,KAAKo21B,aAAc,CACzC7y1B,MAAOvD,KAAKqw2B,cAAcrw2B,KAAKuD,OAC/BilD,OAAQxoD,KAAKwoD,OACbm0kB,WAAY,WACZvnnB,SAAU8nd,GAAQK,SAAW,CAAEnwd,EAAG,SAAU6hB,EAAG,UAAa,CAAE7hB,EAAG,OAAQ6hB,EAAG,UAC5EmtmB,UAAWl/J,GAAQK,SAAW,CAAEnwd,EAAG,MAAO6hB,EAAG,OAAU,CAAE7hB,EAAG,OAAQ6hB,EAAG,QACvE8+c,UAAW/te,KAAK+te,UAChBktJ,SAAU/9J,GAAQK,SAAWhoc,SAASwK,KAAO//B,KAAK61pB,aAAaz5jB,UAC/D9kF,QAthBI,EAuhBJq3H,KAAM,WACFiyE,EAAMw1oB,aAAa/x1B,MAAMotI,WAAa,UACtCh/E,GAAS,CAACmuJ,EAAMi1c,aAAa71lB,QAAQ,IAAK4zxB,IAC9C,EAAGn+tB,MAAO,WACN/iE,GAAY,CAACkuJ,EAAMi1c,aAAa71lB,QAAQ,IAAK4zxB,KAC7ChzoB,EAAM60c,mBACN70c,EAAM8jP,aAAanxY,gBAAgB,yBACnC1sD,GAAO+5M,EAAM20c,SAAS97lB,SACtBmnJ,EAAM20c,SAAS9xlB,UACfm9I,EAAMw1oB,aAAaz30B,UAAY,GAC/BiiM,EAAMqvpB,YAAcrvpB,EAAMw1oB,aAAex1oB,EAAMkvpB,aAAU7iyB,CAC7D,EAAG00lB,mBAAoB,WACdzkM,GAAQK,UACT38Q,EAAMr+K,MAEd,IAEC26b,GAAQK,WACTv9d,KAAKu1pB,SAASn5B,UAAY,CAAEhvnB,EAAG,OAAQ6hB,EAAG,SAE1Ciuc,GAAQK,UAAYv9d,KAAKkj2B,gBACzBlj2B,KAAKu1pB,SAAS97lB,QAAQp1D,MAAM2mB,UAAY,OACxChrB,KAAKu1pB,SAAS97lB,QAAQp1D,MAAMd,MAAQ,QAGpCvD,KAAKu1pB,SAAS97lB,QAAQp1D,MAAM2mB,UAAYqi1B,IAExCnwY,GAAQK,UAAYv9d,KAAKkj2B,eAAgB,CACzC,IAAI0C,EAAc5l2B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW,mBACrDok2B,EAAiBtw2B,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAW,kBAC7Dok2B,EAAel/1B,YAAc,cAC7B,IAAIq11B,EAAiBzm2B,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAW,kBAC7Dwyd,GAAa53d,IAAI2/1B,EAAgB,uBAAwBzm2B,KAAKuw2B,sBAAuBvw2B,MACrF4l2B,EAAYru1B,YAAYkv1B,GACxBb,EAAYru1B,YAAY+41B,GACxBtw2B,KAAKo21B,aAAang1B,aAAa2v1B,EAAa5l2B,KAAKo21B,aAAatvgB,kBAClE,CACJ,EACAinhB,EAAWxv2B,UAAUgy2B,sBAAwB,SAAUrz2B,GACnD8C,KAAKuiC,MACT,EAEAwr0B,EAAWxv2B,UAAU8ppB,kBAAoB,SAAUvppB,GAC/C,OAAIkyK,GAAkBhxK,KAAKi21B,eAAen31B,IAC/B,KAGAkB,KAAKy1wB,UAAU17vB,WAAWjb,EAAO,CAAEoqd,SAAU,SAAUzid,KAAM,QAE5E,EACAsn2B,EAAWxv2B,UAAUqzd,cAAgB,SAAUvjd,GAC3C,IAAKrO,KAAKwjW,cAAcn1V,GAAO,CAC3B,IAAIk+zB,EAAYvs0B,KAAKww2B,cAAcni2B,GAC/BvP,GAASkB,KAAKwjW,cAAcxjW,KAAK23pB,WACrC,GAAI33pB,KAAKi21B,eAAe1pB,GAAY,CAChC,IAAI9/wB,EAAO3tD,EAAQkB,KAAK23pB,UAAUz+oB,UAAYo01B,IAC1Cni1B,EAAQrsB,EAAQkB,KAAK23pB,UAAU3+oB,WAAampN,IAC5Cj3M,EAAOpsB,EAAQkB,KAAK23pB,UAAU7+oB,cAAgBopN,IAClD,OAAO,IAAIlqN,KAAKkT,EAAMC,EAAOshC,EAAM8/wB,EAAUnzzB,WAAYmzzB,EAAUjzzB,aAAcizzB,EAAU/yzB,aAC/F,CACJ,CACA,OAAO,IACX,EACAu01B,EAAWxv2B,UAAUw/0B,6BAA+B,WAChD,IAAK/sqB,GAAkBhxK,KAAK+joB,gBACxB,IAAK,IAAI5pa,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAK2C,KAAK+joB,gBAAiB5pa,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAC1E,IAAIv7N,EAAMs5L,EAAGiiC,GACb,GAAI2lnB,IAAkBp70B,QAAQ9F,IAAQ,EAClC,GAAY,UAARA,EAAiB,CACjB,IAAI6x2B,EAAuBzw2B,KAAK+joB,eAAe,GAAKnloB,GAAK8D,QAAQ,OAAQ,KAAM6S,OACnD,KAAxBk71B,GACAh+yB,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAYq0wB,EAAoBzv2B,MAAM,KAE1E,MACK,GAAY,UAARpC,EAAiB,CACtB,IAAI8x2B,EAAY1w2B,KAAK61pB,aAAaz5jB,UAAUhsF,aAAaxR,GACzD8x2B,EAAa1/rB,GAAkB0/rB,GAC3B1w2B,KAAK+joB,eAAe,GAAKnloB,GADgB8x2B,EAAY1w2B,KAAK+joB,eAAe,GAAKnloB,GAElFoB,KAAK61pB,aAAaz5jB,UAAUxzF,aAAahK,EAAK8x2B,EAClD,MAEI1w2B,KAAK61pB,aAAaz5jB,UAAUxzF,aAAahK,EAAKoB,KAAK+joB,eAAe,GAAKnloB,GAGnF,CAER,EACAmv2B,EAAWxv2B,UAAUsm2B,6BAA+B,WAChD,IAAK7zrB,GAAkBhxK,KAAK+joB,gBACxB,IAAK,IAAI5pa,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAK2C,KAAK+joB,gBAAiB5pa,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAC1E,IAAIv7N,EAAMs5L,EAAGiiC,GACT2lnB,IAAkBp70B,QAAQ9F,GAAO,GACjCoB,KAAK0kc,aAAa97b,aAAahK,EAAKoB,KAAK+joB,eAAe,GAAKnloB,GAErE,CAER,EACAmv2B,EAAWxv2B,UAAUyloB,eAAiB,SAAU2sO,EAAaC,GACpD5/rB,GAAkB4/rB,KACnBA,EAAeA,EAAYlu2B,QAAQ,OAAQ,KAAM6S,QAEhDy7J,GAAkB2/rB,KACnBA,EAAeA,EAAYju2B,QAAQ,OAAQ,KAAM6S,QAErDuonB,GAAMp3I,YAAYiqX,EAAa,CAAC3w2B,KAAK61pB,aAAaz5jB,WAAYw0wB,GAC1D5w2B,KAAKo21B,cACLt4N,GAAMp3I,YAAYiqX,EAAa,CAAC3w2B,KAAKo21B,cAAewa,EAE5D,EACA7C,EAAWxv2B,UAAUsy2B,iBAAmB,WACpCn+yB,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAYgyJ,KAC3C/2L,GAAWr3D,KAAK0kc,aAAc,CAAE,eAAgB,SACpD,EACAqpa,EAAWxv2B,UAAUiw2B,gBAAkB,SAAU77zB,GAC7C,IAAI7zC,EAAQkB,KAAK4xd,cAAcj/a,GAC1B3yC,KAAKgl1B,cAAclm1B,KAAWkB,KAAKii2B,oBACnCji2B,KAAK4i2B,YAAc5i2B,KAAK0kc,aAAa5lc,QAAUkB,KAAKmi2B,gBACrDni2B,KAAK6w2B,oBAGLp+yB,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAYgyJ,KACxC/2L,GAAWr3D,KAAK0kc,aAAc,CAAE,eAAgB,SAExD,EACAqpa,EAAWxv2B,UAAU+v2B,iBAAmB,YAC/Bt9rB,GAAkBhxK,KAAKi1D,OAASj1D,KAAKi1D,KAAO,EAC7Cj1D,KAAK4v2B,cAAc,CAAC5v2B,KAAK61pB,aAAa71lB,QAAQ,KAG9ChgE,KAAK8w2B,iBAEb,EACA/C,EAAWxv2B,UAAUuy2B,gBAAkB,WACnC9w2B,KAAK4nrB,eAAe,CAAC5nrB,KAAK61pB,aAAa71lB,QAAQ,KAC/ChgE,KAAKuiC,MACT,EACAwr0B,EAAWxv2B,UAAUqprB,eAAiB,SAAUnunB,GAC5ChH,GAASgH,EAASgsb,IACtB,EACAsoX,EAAWxv2B,UAAUqx2B,cAAgB,SAAUn2yB,GAC3C/G,GAAY+G,EAASgsb,IACzB,EACAsoX,EAAWxv2B,UAAUwy2B,gBAAkB,WACnC/w2B,KAAK0kc,aAAaz0K,kBAAkB,EAAIjwR,KAAK0kc,aAAc5lc,MAAMhB,OACrE,EACAiw2B,EAAWxv2B,UAAUyy2B,eAAiB,WAClChx2B,KAAK0kc,aAAaz0K,kBAAmBjwR,KAAK0kc,aAAc5lc,MAAMhB,OAASkC,KAAK0kc,aAAc5lc,MAAMhB,OACpG,EACAiw2B,EAAWxv2B,UAAU0y2B,gBAAkB,WACnC,IAAIC,EACJ,GAAoB,OAAhBlx2B,KAAKwY,QAAmC,UAAhBxY,KAAKwY,OAC7B041B,EAAWnjpB,GAAS,yBAA0BsoQ,UAE7C,CAGD66Y,EAAWnjpB,GADG,QACqB/tN,KAAKwY,OAFlB,2DAE4Cu8c,GACtE,CACA,OAAOm8Y,CACX,EACAnD,EAAWxv2B,UAAU4y2B,mBAAqB,WACtC,IAAI1nvB,EAASzpH,KAAK0kc,aACd12a,EAAQ,EACRC,EAAM,EAKV,OAJK3pB,MAAMmlH,EAAM4kK,kBACbrgQ,EAAQy7F,EAAM4kK,eACdpgQ,EAAMw7F,EAAM6kK,cAET,CAAEtgQ,MAAO9sB,KAAK4D,IAAIkpB,GAAQC,IAAK/sB,KAAK4D,IAAImpB,GACnD,EACA8/0B,EAAWxv2B,UAAU4u0B,iBAAmB,WACpC,OAAKn8pB,GAAkBhxK,KAAKo21B,cAIjB,KAHAp21B,KAAKo21B,aAAa3o0B,iBAAiB,IAAMmm0B,IAKxD,EACAma,EAAWxv2B,UAAUilW,cAAgB,SAAU1kW,GAC3C,SAAIkyK,GAAkBlyK,IAA4B,kBAAVA,GAAuC,KAAjBA,EAAMyW,OAMxE,EACAw41B,EAAWxv2B,UAAUy9E,SAAW,SAAUz4E,GAUtC,OARIA,EADiB,kBAAVA,EACCsgd,GAAWtgd,GAEG,kBAAVA,EACHA,EAAMI,MAAM,WAAcJ,EAAQsgd,GAAWtgd,GAG9C,MAGhB,EACAwq2B,EAAWxv2B,UAAU8x2B,cAAgB,SAAU9s2B,IAC3CA,EAAQvD,KAAKg8E,SAASz4E,IACZmB,QAAQ,MAAQ,IAEtBnB,GADiBvD,KAAKow2B,eAAe7s2B,MAAQpB,WAAWoB,GAAS,KAC9C5C,WAAa,MAEpC,OAAO4C,CACX,EACAwq2B,EAAWxv2B,UAAUi7pB,kBAAoB,WACrC,IAAI//lB,EAAUz5D,KAAKm9pB,gBACdnsf,GAAkBv3G,GAGdz5D,KAAKo21B,cAAgBp21B,KAAKi21B,eAAej21B,KAAKsxZ,WACnDtxZ,KAAKox2B,cAHLpx2B,KAAKqx2B,cAAc53yB,EAK3B,EACAs0yB,EAAWxv2B,UAAU8y2B,cAAgB,SAAU53yB,GAC3C,IAAIqomB,EAAa9hqB,KAAKmw2B,iBAClBjsB,EAAUzqxB,EAAQ27P,mBAClB5xT,EAAS0g1B,EAAUA,EAAQ3tY,UAAY98Y,EAAQ88Y,UAC/C+4M,EAAW71lB,EAAQv2D,wBAAwBM,OAC1CA,EAASi2D,EAAQ88Y,UAAaurN,EAC/B9hqB,KAAKo21B,aAAa36vB,UAAYyovB,EAAW1g1B,GAAUs+pB,EAvvB5C,EAuvBwExS,EAvvBxE,GAuvBoG9rpB,EAG3GxD,KAAKo21B,aAAa36vB,UAAY,CAEtC,EACAsywB,EAAWxv2B,UAAU6y2B,YAAc,WAC/B,IAAI33yB,EACJ,GAAKu3G,GAAkBhxK,KAAKo21B,cASxBp21B,KAAKo21B,aAAa36vB,UAAY,MATS,CACvC,IAAIhxE,EAAQzqB,KAAKo21B,aAAa3o0B,iBAAiB,IAAMig1B,KACrD,GAAIjj1B,EAAM3sB,OAAQ,CACd,IAAIwz2B,EAActx2B,KAAK6t2B,gBAAgB,GACnC0D,EAAavx2B,KAAK4xd,cAAc5xd,KAAKi21B,eAAej21B,KAAKsxZ,WAAWj5Y,UACxEohD,EAAUhvC,EAAMvpB,KAAKC,OAAOow2B,EAAaD,IAA4B,IAAZtx2B,KAAKi1D,OAClE,CACJ,CAIK+7G,GAAkBv3G,GAInBz5D,KAAKo21B,aAAa36vB,UAAY,EAH9Bz7F,KAAKqx2B,cAAc53yB,EAK3B,EACAs0yB,EAAWxv2B,UAAUiklB,QAAU,WAC3B,OAAQxxa,GAAkBhxK,KAAKi21B,eAAej21B,KAAKlB,QAAW,GAAKkB,KAAK+tN,SAAS/tN,KAAKlB,MAC1F,EACAiv2B,EAAWxv2B,UAAUwvN,SAAW,SAAUjvN,GACtC,OAAQkyK,GAAkBhxK,KAAKi21B,eAAen31B,IAAW,KAAOkB,KAAKy1wB,UAAU17vB,WAAWjb,EAAO,CAC7Fqc,OAAQnb,KAAKot2B,iBAAkB3m2B,KAAM,QAE7C,EACAsn2B,EAAWxv2B,UAAUiz2B,eAAiB,WAQlC,MANoB,OAAhBxx2B,KAAKwY,QAAmC,UAAhBxY,KAAKwY,OACjBu1M,GAAS,oBAAqBsoQ,MAG9Br2d,KAAKyx2B,qBAAqB18Y,GAAU,GAAK/0d,KAAKwY,OAGlE,EACAu11B,EAAWxv2B,UAAU6u2B,eAAiB,WAalC,OAXIpt2B,KAAKwjW,cAAcxjW,KAAKwj2B,cACJ,OAAhBxj2B,KAAKwY,QAAmC,UAAhBxY,KAAKwY,OACjBu1M,GAAS,oBAAqBsoQ,MAG9Br2d,KAAK2v2B,qBAAqB56Y,GAAU,GAAK/0d,KAAKwY,QAInDxY,KAAKwj2B,YAGxB,EACAuK,EAAWxv2B,UAAUmz2B,cAAgB,WAQjC,MANoB,OAAhB1x2B,KAAKwY,QAAmC,UAAhBxY,KAAKwY,OACjBu1M,GAAS,qBAAsBsoQ,MAG/BtoQ,GAAS,QAAe/tN,KAAKwY,OAAS,gDAAiDu8c,GAG3G,EACAg5Y,EAAWxv2B,UAAUoz2B,iBAAmB,SAAU7y2B,GAC9C,OAAIkyK,GAAkBhxK,KAAKi21B,eAAen31B,IAC/B,KAGAkB,KAAKy1wB,UAAU17vB,WAAWjb,EAAO,CAAEqc,OAAQnb,KAAK0x2B,gBAAiBjr2B,KAAM,QAEtF,EACAsn2B,EAAWxv2B,UAAUo1R,SAAW,SAAU70R,GACtC,IAAI2pH,EAAOzoH,KAAKk21B,WAAWp31B,GACtBkB,KAAK4h1B,YAAe5h1B,KAAKgl1B,cAAcv8tB,GAOpCzoH,KAAKwjW,cAAc/6O,IACnBzoH,KAAK23pB,UAAY,KACjB33pB,KAAKoh1B,eAAeph1B,KAAKlB,MAAOkB,KAAKqK,IAAKrK,KAAK6E,MAG/C7E,KAAK23pB,UAAY33pB,KAAK4x2B,oBAAoBnpvB,IAXK,OAA/CzoH,KAAKi21B,eAAej21B,KAAKov2B,oBACzBpv2B,KAAK23pB,UAAY33pB,KAAKov2B,iBAAmB,MAE7Cpv2B,KAAKoh1B,eAAeph1B,KAAKlB,MAAOkB,KAAKqK,IAAKrK,KAAK6E,MAWnD7E,KAAKwi2B,aAAY,EAAMxi2B,KAAK23pB,UAChC,EACAo2M,EAAWxv2B,UAAUqz2B,oBAAsB,SAAU9y2B,GACjD,OAAIkyK,GAAkBlyK,GACX,KAEHA,IAAUkB,KAAKwilB,UAAaxilB,KAAK4xd,cAAc9yd,GAASkB,KAAK4xd,cAAc5xd,KAAKlB,MAC5F,EACAiv2B,EAAWxv2B,UAAUsz2B,kBAAoB,WACrC/zO,GAAM8C,eAAe5goB,KAAKoppB,KAAKvtK,YAAY,eAAgB77e,KAAK0kc,aACpE,EAEAqpa,EAAWxv2B,UAAUsk2B,iBAAmB,SAAU/j2B,GAC9Cg/nB,GAAMnqW,SAAS70R,EAAOkB,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,gBACvE,EACAorO,EAAWxv2B,UAAUmm2B,qBAAuB,SAAUxn2B,GAClDA,EAAEijE,iBACFngE,KAAK2k2B,eAAeC,kBAAkB,kBAC1C,EACAmJ,EAAWxv2B,UAAUuz2B,aAAe,SAAU502B,GACrC8C,KAAKsG,UAGN42d,GAAQK,UACRv9d,KAAK0kc,aAAa97b,aAAa,WAAY,IAE/C1L,EAAEijE,iBACEngE,KAAK+zpB,cACL/zpB,KAAKm5pB,WAAW,EAAGj8pB,IAGnB8C,KAAK0kc,aAAa91L,QAClB5uQ,KAAKwd,KAAKtgB,IAElB,EACA6w2B,EAAWxv2B,UAAUi/tB,iBAAmB,WAC/Bx9tB,KAAKsG,UAGLtG,KAAKw3c,WACNx3c,KAAK0kc,aAAaz0K,kBAAkB,EAAG,GACvCyuM,GAAa53d,IAAI9G,KAAK0kc,aAAc,UAAW1kc,KAAKgruB,eAAgBhruB,OAE5E,EACA+t2B,EAAWxv2B,UAAUysuB,eAAiB,SAAU9xqB,GAC5C,IAAKl5D,KAAKw3c,SAAU,CAEhB,GADAt+Y,EAAMiH,iBACFngE,KAAK4i2B,WAKL,OAJA1pyB,EAAMiH,sBACNngE,KAAKg+F,OAAO,mBAAoB,CAC5Bj2B,OAAQ,mBAKZ22Z,GAAa73d,OAAO7G,KAAK0kc,aAAc,UAAW1kc,KAAKgruB,gBACvD,IAAI+mI,EAAS/x2B,KAAKmx2B,qBACK,IAAjBY,EAAO/j1B,OAAe+j1B,EAAO9j1B,MAAQjuB,KAAK0kc,aAAa5lc,MAAMhB,SAC3DkC,KAAK0kc,aAAa5lc,MAAMhB,OAAS,IACjCkC,KAAKgy2B,cAAgBhy2B,KAAKiy2B,kBAE9Bjy2B,KAAK0kc,aAAaz0K,kBAAkBjwR,KAAKgy2B,cAAchk1B,MAAOhuB,KAAKgy2B,cAAc/j1B,KAG7F,CACJ,EACA8/0B,EAAWxv2B,UAAU0z2B,eAAiB,WAClC,IAAI1izB,EAAQ,IAAI3rD,OAAO,kBACnB5C,EAAQhB,KAAK0kc,aAAa5lc,MAAMkC,MAAM,IAC1CA,EAAMrD,KAAK,KACX,IAAIo02B,EAAS/x2B,KAAKmx2B,qBACdnj1B,EAAQ,EACRC,EAAM,EACN2he,GAAc,EAClB,GAAK5vf,KAAKmv2B,eAqBNnh1B,EAAQ+j1B,EAAO/j1B,MACfC,EAAM8j1B,EAAO9j1B,IACbjuB,KAAKmv2B,gBAAiB,OAtBtB,IAAK,IAAIhy2B,EAAI,EAAGA,EAAI6D,EAAMlD,OAAQX,IAK9B,GAJKoyD,EAAMzuD,KAAKE,EAAM7D,MAClB8wB,EAAM9wB,EACNyyf,GAAc,GAEdA,EAAa,CACb,GAAImiX,EAAO/j1B,OAASA,GAAS+j1B,EAAO9j1B,KAAOA,EAAK,CAG5CjuB,KAAKmv2B,gBAAiB,EACtB,KACJ,CAEInh1B,EAAQ7wB,EAAI,EACZyyf,GAAc,CAEtB,CAQR,MAAO,CAAE5he,MAAOA,EAAOC,IAAKA,EAChC,EACA8/0B,EAAWxv2B,UAAUogoB,aAAe,SAAUzlkB,GAC1C,IAAKl5D,KAAKw3c,UAAYx3c,KAAKsG,QAIvB,OAHuB,SAAhB4yD,EAAM8oJ,QAAqC,QAAhB9oJ,EAAM8oJ,QAAoC,OAAhB9oJ,EAAM8oJ,SAAsC,QAAhB9oJ,EAAM8oJ,QAAoC,OAAhB9oJ,EAAM8oJ,QAAmC,MAAhB9oJ,EAAM8oJ,QAAkC,QAAhB9oJ,EAAM8oJ,QAAsBhiN,KAAK+zpB,eAAkB/zpB,KAAK4i2B,aACvN1pyB,EAAMiH,iBAEFjH,EAAM8oJ,QACV,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,OACIhiN,KAAK+zpB,gBACN/zpB,KAAK8u2B,gBACL9u2B,KAAKu1pB,SAAS9xlB,UACdzjE,KAAKu1pB,SAAWv1pB,KAAKo21B,aAAe,OAEpCp21B,KAAK4i2B,YAAe5i2B,KAAKw3c,UAAax3c,KAAK+zpB,gBAC3C76lB,EAAMiH,iBACNngE,KAAKg+F,OAAO,iBAAkB,CAC1Bj2B,OAAQ,iBACR7qE,EAAGg8D,KAGPl5D,KAAK+zpB,eACL/zpB,KAAKo3X,WAAWl+T,GAEpB,MACJ,IAAK,QACGl5D,KAAKmp2B,YACLnp2B,KAAKm9pB,gBAAkBn9pB,KAAK0hpB,cAAc1hpB,KAAK8zpB,aAC/C9zpB,KAAKov2B,iBAAmB,IAAIp31B,KAAKhY,KAAK6t2B,gBAAgB7t2B,KAAK8zpB,cAC3D9zpB,KAAKmquB,YAAYnquB,KAAKov2B,iBAAkBl2yB,IAGxCl5D,KAAKmquB,YAAYnquB,KAAK0kc,aAAa5lc,MAAOo6D,GAE9Cl5D,KAAKuiC,OACLviC,KAAKmp2B,YAAa,EACdnp2B,KAAK+zpB,eACL76lB,EAAMkH,kBAEV,MACJ,IAAK,OACDpgE,KAAKwd,KAAK07C,GACV,MACJ,IAAK,SACDl5D,KAAK6i2B,iBAAiB7i2B,KAAKky2B,YAAYly2B,KAAKlB,QACxCkB,KAAK4i2B,aACA5i2B,KAAKlB,OACNkB,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAE/Bni2B,KAAKoq2B,cAETpq2B,KAAK+kZ,cAAc/kZ,KAAKlB,OACxBkB,KAAKuiC,OACL,MACJ,IAAK,QACDviC,KAAKuiC,OACL,MACJ,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,WACIviC,KAAK+zpB,gBAAiB/zpB,KAAK4i2B,YAAe5i2B,KAAKw3c,YACN,IAArCx3c,KAAK0kc,aAAar2K,gBAAwBruR,KAAK0kc,aAAap2K,eAAiBtuR,KAAK0kc,aAAa5lc,MAAMhB,QACrGkC,KAAK0kc,aAAap2K,eAAiBtuR,KAAK0kc,aAAa5lc,MAAMhB,QAA2B,QAAjBo7D,EAAM8oJ,QACtC,IAArChiN,KAAK0kc,aAAar2K,gBAAyC,aAAjBn1N,EAAM8oJ,QAA4C,SAAjB9oJ,EAAM8oJ,QAAsC,UAAjB9oJ,EAAM8oJ,SAC7G9oJ,EAAMiH,iBAEVngE,KAAKg+F,OAAO,iBAAkB,CAAEj2B,OAAQ,iBACpC7qE,EAAGg8D,KAGX,MACJ,QACIl5D,KAAKmp2B,YAAa,EAIlC,EACA4E,EAAWxv2B,UAAUw6pB,aAAe,SAAU7/lB,GAC1C,IAAI/2C,EAAS+2C,EAAM/2C,OACfy1R,EAAK53S,KAAKm9pB,gBAAkBr8L,GAAQ3+c,EAAQ,IAAMur1B,KACtD1t2B,KAAK42pB,aAAah/W,EAAI1+O,GAClB0+O,GAAMA,EAAGzzS,UAAUC,SAASsp2B,MAC5B1t2B,KAAKuiC,MAEb,EACAwr0B,EAAWxv2B,UAAU46pB,WAAa,SAAU/ypB,EAAOlJ,GAC/C,IAAI0jN,EAAQ5gN,KACZ,GAAIA,KAAK+zpB,eAAiB/zpB,KAAKo21B,aAAc,CACzC,IAAIhrxB,EAAO,CACPo0L,MAAOx/P,KAAKu1pB,SACZr8lB,MAAOh8D,GAAK,KACZ4jV,QAAQ,EACRjgV,KAAM,QAEV6xD,GAAY,CAACn9B,SAASwK,MAAO8h0B,KAC7B7h2B,KAAKo/d,QAAQ,QAASh0Z,GAAM,SAAUA,GAClC,IAAKA,EAAK01Q,OAAQ,CACd,IAAIiiV,EAAY,CACZliqB,KAAM,UACN8yD,SA9hCA,GA+hCAvtD,MAAOA,GAAgB,GAE3Bw6M,EAAM20c,SAAShznB,KAAK,IAAI+vF,GAAUywiB,IAClCrwmB,GAAY,CAACkuJ,EAAMi1c,aAAaz5jB,WAAY,CAxiC5C,gBAyiCA/kC,GAAWupJ,EAAM8jP,aAAc,CAAE,gBAAiB,UAClD9jP,EAAM8jP,aAAanxY,gBAAgB,aACnCqtJ,EAAM8jP,aAAanxY,gBAAgB,iBACnCqtJ,EAAM8jP,aAAanxY,gBAAgB,yBACnCmra,GAAa73d,OAAO0uB,SAAU,uBAAwBqrL,EAAMuxpB,qBAChE,CACIj1Y,GAAQK,UAAY38Q,EAAMy1oB,QAC1Bz1oB,EAAMy1oB,MAAMhy1B,MAAMqmB,QAAU,OAC5Bk2L,EAAMy1oB,MAAM9nwB,UAAY,GACxBqyH,EAAMy1oB,MAAQ,MAEdn5X,GAAQK,WACHvsT,GAAkB4vC,EAAMwxpB,uBACzBxxpB,EAAMwxpB,oBAAoBvr2B,SAC1B+5M,EAAMwxpB,oBAAsB,OAGhCl1Y,GAAQK,UAAY38Q,EAAM8hpB,YAAc9hpB,EAAM42P,UAC9C52P,EAAM8jP,aAAanxY,gBAAgB,WAE3C,GACJ,MAEQ2pa,GAAQK,UAAYv9d,KAAK0i2B,YAAc1i2B,KAAKw3c,UAC5Cx3c,KAAK0kc,aAAanxY,gBAAgB,WAG9C,EACAw6yB,EAAWxv2B,UAAU8z2B,mBAAqB,WAClCry2B,KAAKo21B,eACLp21B,KAAKo21B,aAAa/x1B,MAAMotI,WAAa,SACrCzxI,KAAKo21B,aAAa/x1B,MAAMlB,IAAM,UAC9BnD,KAAKo21B,aAAa/x1B,MAAMf,KAAO,UAC/BtD,KAAKo21B,aAAa/x1B,MAAMd,MAAQ,MAChCvD,KAAKo21B,aAAa/x1B,MAAMb,OAAS,MAEzC,EACAuq2B,EAAWxv2B,UAAU+z2B,iBAAmB,SAAUp5yB,EAAO4gmB,GACrD,GAAK95pB,KAAK4h1B,YAAe5h1B,KAAKgl1B,cAAchl1B,KAAKov2B,kBAY7C,GAAKt1M,EAKA,CACD,IAAIh7pB,EAAQkB,KAAK4xd,cAAc,IAAI55c,KAAKhY,KAAK6t2B,gBAAgB7t2B,KAAK8zpB,gBAC7D9zpB,KAAK4owB,YAAc9pwB,GACpBkB,KAAKuy2B,aAAar5yB,EAAOp6D,EAEjC,MATSkB,KAAKkwX,YAAclwX,KAAK0kc,aAAa5lc,OAAUkyK,GAAkBhxK,KAAKi21B,eAAej21B,KAAKlB,UAC3FkB,KAAKuy2B,aAAar5yB,EAAOl5D,KAAK4x2B,oBAAoB5x2B,KAAK0kc,aAAa5lc,aAbzB,OAA/CkB,KAAKi21B,eAAej21B,KAAKov2B,oBACzBpv2B,KAAK23pB,UAAY33pB,KAAKov2B,iBAAmB,MAE7Cpv2B,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAK4x2B,oBAAoB5x2B,KAAK0kc,aAAa5lc,SAAU,GACjFkB,KAAK23pB,UAAY33pB,KAAKov2B,iBAAmBpv2B,KAAK4x2B,oBAAoB5x2B,KAAK0kc,aAAa5lc,OACpFkB,KAAKkwX,UAAYlwX,KAAK0kc,aAAa5lc,OAC9BkB,KAAK4owB,YAAc5owB,KAAKlB,OACzBkB,KAAKyh2B,YAAYvoyB,EAgB7B,EACA60yB,EAAWxv2B,UAAU0vb,YAAc,SAAU/0X,GACzC,IAAIkgmB,EAAYt4L,GAAQ5na,EAAM/2C,OAAQ,IAAMur1B,KAC5C1t2B,KAAKq5pB,SAASD,EAAWm0M,IAC7B,EACAQ,EAAWxv2B,UAAU86pB,SAAW,SAAUzhX,EAAI1rS,GACtClM,KAAKsG,SAAWtG,KAAKk5pB,UAAUthX,KAAQA,EAAGzzS,UAAUC,SAAS8H,KAC7DlM,KAAKi2pB,YAAY/ppB,GACjBumD,GAAS,CAACmlP,GAAK1rS,GACXA,IAAcsh2B,KACd51jB,EAAGhvS,aAAa,gBAAiB,QAG7C,EACAml2B,EAAWxv2B,UAAUq4pB,aAAe,SAAUh/W,EAAI1+O,GAC1Cl5D,KAAKk5pB,UAAUthX,KACf53S,KAAKk21B,WAAWt+iB,EAAGxnS,aAAa,eAC5BpQ,KAAK4i2B,YACL5i2B,KAAKoq2B,aAETpq2B,KAAKm9pB,gBAAkBvlX,EACvB53S,KAAK8zpB,YAAc5zpB,MAAM3B,UAAUqC,MAAMb,KAAKC,KAAK0hpB,eAAeh9oB,QAAQkzS,GAC1E53S,KAAKov2B,iBAAmB,IAAIp31B,KAAKhY,KAAK6t2B,gBAAgB7t2B,KAAK8zpB,cAC3DrhmB,GAAS,CAACzyD,KAAKm9pB,iBAAkBy2L,KACjC5z1B,KAAKm9pB,gBAAgBv0pB,aAAa,gBAAiB,QACnD5I,KAAKsy2B,iBAAiBp5yB,GAAO,GAErC,EACA60yB,EAAWxv2B,UAAU+hW,aAAe,WAChCtgW,KAAKi2pB,YAAYs3M,IACrB,EACAQ,EAAWxv2B,UAAU6iqB,cAAgB,WACJ,eAAzBphqB,KAAKgje,iBAAoC9F,GAAQK,UAIjDv9d,KAAKuiC,MAEb,EACAwr0B,EAAWxv2B,UAAUow2B,UAAY,SAAUrrvB,EAAQC,GAC3CytD,GAAkBhxK,KAAKi21B,eAAe3yuB,MACtCtjH,KAAK4u2B,QAAU5u2B,KAAK4xd,cAAc,gBAElC5gT,GAAkBhxK,KAAKi21B,eAAe1yuB,MACtCvjH,KAAK6u2B,QAAU7u2B,KAAK4xd,cAAc,eAE1C,EAEAm8Y,EAAWxv2B,UAAU6i1B,eAAiB,SAAUoxB,EAASlvvB,EAAQC,GAC7D,IAAIzkH,EAAQ0z2B,aAAmBx61B,KAAOw61B,EAAUxy2B,KAAK4xd,cAAc4gZ,GAYnE,OAXKxhsB,GAAkBhxK,KAAKi21B,eAAen31B,KAGhCkB,KAAKww2B,cAAcxw2B,KAAKqopB,kBAAkBropB,KAAK4u2B,WACpD5u2B,KAAKww2B,cAAcxw2B,KAAKqopB,kBAAkBropB,KAAK6u2B,WACjD7u2B,KAAK8w2B,kBAJL0B,EAAUxy2B,KAAKyy2B,gBAAgBzy2B,KAAK4u2B,QAAS5u2B,KAAK6u2B,QAAS2D,EAAS1z2B,GAMpEkB,KAAK4h1B,aACL4wB,EAAUxy2B,KAAK+u2B,eAAeyD,GAAWA,EAAU,MAEvDxy2B,KAAKwu2B,gBAAgBgE,GACdA,CACX,EACAzE,EAAWxv2B,UAAUww2B,eAAiB,SAAUjw2B,GAC5C,GAAIkB,KAAKgu2B,sBAAsBlw2B,OAAS,EAAG,CACvC,GAAIkC,KAAKgu2B,sBAAsBlw2B,SAAWkC,KAAK6t2B,gBAAgB/v2B,OAC3D,OAAO,EAGX,IADA,IAAI2qH,EAAO3pH,aAAiBkZ,KAAOhY,KAAKky2B,YAAYpz2B,GAASA,EACpD6tB,EAAQ,EAAGA,EAAQ3sB,KAAKgu2B,sBAAsBlw2B,OAAQ6uB,IAC3D,GAAI87F,IAASzoH,KAAKgu2B,sBAAsBrh1B,GACpC,OAAO,CAGnB,CACA,OAAO,CACX,EACAoh1B,EAAWxv2B,UAAUym1B,cAAgB,SAAUryyB,GAC3C,IAAK3yC,KAAK4h1B,WAAY,CAClB,IAAI5h1B,KAAK+u2B,eAAep8zB,GAiBpB,OAAO,EAhBP,IAAI7zC,EAAkCkB,KAAK0v2B,eAAe1v2B,KAAK4xd,cAAcj/a,IAEzEgR,EAAW3jD,KAAK0v2B,eAAe1v2B,KAAK4xd,cAAc5xd,KAAK6u2B,UACvDjrzB,EAAW5jD,KAAK0v2B,eAAe1v2B,KAAK4xd,cAAc5xd,KAAK4u2B,UAC3D,GAAK59rB,GAAkBhxK,KAAKi21B,eAAen31B,KAMvC,IAAO6kD,GAAcC,GAA0C,KAA5B5jD,KAAK0kc,aAAa5lc,MACjD,OAAO,OANX,IAAOA,GAAW6kD,IAAiB7kD,GAAW8kD,EAC1C,OAAO,CAYvB,CACA,OAAO,CACX,EACAmqzB,EAAWxv2B,UAAUk02B,gBAAkB,SAAU9qC,EAASywB,EAASoa,EAAS7/zB,GACxE,IAAIgR,EAAW3jD,KAAKww2B,cAAcxw2B,KAAKqopB,kBAAkB+vM,IACrDx0yB,EAAW5jD,KAAKww2B,cAAcxw2B,KAAKqopB,kBAAkBs/K,IACrD7o0B,EAAQkB,KAAKww2B,cAAcxw2B,KAAKqopB,kBAAkB11mB,IACtD,GAAI3yC,KAAK4h1B,WAAY,CACjB,IAAKh+xB,GAAYD,EAOb,OANA3jD,KAAK8w2B,kBACL9w2B,KAAK23pB,UAAY33pB,KAAK4xd,cAAcjua,GACpC3jD,KAAK6i2B,iBAAiB7i2B,KAAK+tN,SAAS/tN,KAAK23pB,YACrC33pB,KAAK4i2B,YACL5i2B,KAAKoq2B,aAEFpq2B,KAAK0kc,aAAa5lc,MAExB,IAAK8kD,IAAa9kD,EACnB,OAAOkB,KAAK4xd,cAAchua,GAEzB,IAAK9kD,IAAU6kD,IAAaC,KAAcD,EAC3C,OAAO3jD,KAAK4xd,cAAcjua,EAElC,MAEI,IAAKC,GAAYD,IACb3jD,KAAK8w2B,mBACAxs2B,OAAOtE,KAAKww2B,cAAcgC,KAC3B,OAAOA,EAInB,OAAOA,CACX,EACAzE,EAAWxv2B,UAAUgrG,WAAa,WAC9Bm1X,GAAa53d,IAAI9G,KAAK61pB,aAAa71lB,QAAQ,GAAI,YAAahgE,KAAK8x2B,aAAc9x2B,MAC/E0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,OAAQ1kc,KAAKkk2B,iBAAkBlk2B,MACnE0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAKik2B,kBAAmBjk2B,MACrE0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,SAAU1kc,KAAKmk2B,mBAAoBnk2B,MACvE0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAK8/nB,kBAAmB9/nB,MACjEA,KAAK4i2B,YACLlkY,GAAa53d,IAAI9G,KAAK0kc,aAAc,UAAW1kc,KAAKsn1B,eAAgBtn1B,MAEpEA,KAAK2ioB,iBAAmB3ioB,KAAK61pB,aAAav0B,aAC1C5iK,GAAa53d,IAAI9G,KAAK61pB,aAAav0B,YAAa,YAAathoB,KAAKwq2B,aAAcxq2B,MAEhFA,KAAKo4pB,aACL15L,GAAa53d,IAAI9G,KAAKo4pB,YAAa,QAASp4pB,KAAKi+0B,iBAAkBj+0B,MAElEk9d,GAAQK,WACTv9d,KAAKs1pB,aAAe5zpB,GAAO1B,KAAKs1pB,aAAct1pB,KAAK06e,YACnD16e,KAAK0y2B,WAAa,IAAIt4X,GAAep6e,KAAK61pB,aAAaz5jB,UAAW,CAC9D4+Y,UAAWh7e,KAAK2+nB,aAAapxnB,KAAKvN,MAClC06e,WAAY16e,KAAKs1pB,aACjBxwZ,UAAW,YAEX9kQ,KAAK2ioB,iBAAmB3ioB,KAAK0kc,cAC7Bg6B,GAAa53d,IAAI9G,KAAK0kc,aAAc,YAAa1kc,KAAKw9tB,iBAAkBx9tB,MAGpF,EACA+t2B,EAAWxv2B,UAAU+o1B,eAAiB,SAAUpq1B,GAC5C,GACS,WADDA,EAAE03H,MAEE50H,KAAK4i2B,YAAe5i2B,KAAKu1pB,UAAav1pB,KAAKw3c,UAC3Cx3c,KAAKg+F,OAAO,iBAAkB,CAC1Bj2B,OAAQ,iBACR7qE,EAAGA,GAOvB,EACA6w2B,EAAWxv2B,UAAU0/0B,iBAAmB,WACpC,GAAKj+0B,KAAKsG,UAGLtG,KAAK0kc,aAAa1vK,SAAU,CAC7B,IAAI29kB,EAAY3y2B,KAAK0kc,aAAat0b,aAAa,SAC3CuiC,EAAM3yC,KAAKi21B,eAAej21B,KAAKmh1B,eACN,mBAAzBnh1B,KAAKy5D,QAAQ2nF,UACbzuG,EAAM,KACNgg0B,EAAY,GACZ3y2B,KAAK0kc,aAAa97b,aAAa,QAAS,KAE5C5I,KAAKiie,cAAc,CAAEnje,MAAO6zC,IAAO,GACnC3yC,KAAK4owB,SAAW5owB,KAAKlB,MACrBkB,KAAKov2B,iBAAmBpv2B,KAAKlB,MAC7BkB,KAAK23pB,UAAY33pB,KAAKlB,MAClBkB,KAAK0kc,eACL1kc,KAAK6i2B,iBAAiB8P,GAClB3y2B,KAAK4i2B,aACA+P,GACD3y2B,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAE/Bni2B,KAAKoq2B,cAETpq2B,KAAKwu2B,gBAAgBmE,GACrB3y2B,KAAKkwX,UAAYlwX,KAAK0kc,aAAa5lc,MAE3C,CACJ,EACAiv2B,EAAWxv2B,UAAU4l2B,mBAAqB,SAAUjn2B,GAC3C8C,KAAKsG,SAGVpJ,EAAEkjE,iBACN,EACA2tyB,EAAWxv2B,UAAUuhoB,kBAAoB,WACjC9/nB,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,eAAgB,CACxBj2B,OAAQ,kBAGpB,EACAgmyB,EAAWxv2B,UAAU+l2B,aAAe,WAC5Btk2B,KAAK61pB,cACLn3L,GAAa73d,OAAO7G,KAAK61pB,aAAa71lB,QAAQ,GAAI,uBAAwBhgE,KAAK8x2B,cAEnFpzY,GAAa73d,OAAO7G,KAAK0kc,aAAc,OAAQ1kc,KAAKkk2B,kBACpDxlY,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAKik2B,mBACrDvlY,GAAa73d,OAAO7G,KAAK0kc,aAAc,SAAU1kc,KAAKmk2B,oBACtDzlY,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAK8/nB,mBACjD9/nB,KAAK0y2B,YACL1y2B,KAAK0y2B,WAAWjvyB,UAEpBi7Z,GAAa73d,OAAO7G,KAAK0kc,aAAc,uBAAwB1kc,KAAKw9tB,mBAChEx9tB,KAAK2ioB,iBAAoB3xd,GAAkBhxK,KAAK61pB,eAAkB7kf,GAAkBhxK,KAAK61pB,aAAav0B,cACtG5iK,GAAa73d,OAAO7G,KAAK61pB,aAAav0B,YAAa,uBAAwBthoB,KAAKwq2B,cAEhFxq2B,KAAKo4pB,aACL15L,GAAa73d,OAAO7G,KAAKo4pB,YAAa,QAASp4pB,KAAKi+0B,iBAE5D,EACA8vB,EAAWxv2B,UAAUs6pB,eAAiB,WAC9B74pB,KAAK2ioB,iBAAmB3ioB,KAAK61pB,aAAav0B,aAC1C5iK,GAAa53d,IAAI9G,KAAK61pB,aAAav0B,YAAa,YAAathoB,KAAKwq2B,aAAcxq2B,KAExF,EACA+t2B,EAAWxv2B,UAAUq02B,kBAAoB,SAAU112B,GAC/C,IAAIsn2B,EAAc,CACdtryB,MAAOh8D,GAEX8C,KAAKo/d,QAAQ,UAAWolY,EAC5B,EACAuJ,EAAWxv2B,UAAUis2B,aAAe,SAAUtt2B,GAC1C,GAAK8C,KAAKsG,UAGVpJ,EAAEijE,iBACG6wG,GAAkBhxK,KAAKlB,QAIxBkB,KAAKgv2B,aACLhv2B,KAAK4y2B,kBAAkB112B,IAJvB8C,KAAKk4D,MAAMh7D,GAMX8C,KAAKo21B,eACLp21B,KAAKo21B,aAAa36vB,UAAY,GAE9Bz7F,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,eAAgB,CACxBj2B,OAAQ,mBAGZ+4Z,GAAQ9ge,KAAKy5D,QAAS,SAAS,CAC/B,IAAIA,EAAUz5D,KAAKy5D,QACf2pxB,EAAa7tzB,SAASymC,YAAY,iBACtConxB,EAAW/yqB,UAAU,SAAS,GAAO,GACrC52G,EAAQV,cAAcqqxB,EAC1B,CACJ,EACA2qB,EAAWxv2B,UAAU25D,MAAQ,SAAUgB,GACnCl5D,KAAKiie,cAAc,CAAEnje,MAAO,OAAQ,GACpCkB,KAAK23pB,UAAY,KACjB33pB,KAAKgv2B,aACLhv2B,KAAK4y2B,kBAAkB15yB,GACvBl5D,KAAKyh2B,YAAYvoyB,EACrB,EACA60yB,EAAWxv2B,UAAUizpB,UAAY,WACzBxxpB,KAAKu1pB,WACLv1pB,KAAKu1pB,SAAS/smB,OAASxoD,KAAKwoD,OAC5BxoD,KAAKu1pB,SAASlzL,WAEtB,EACA0rY,EAAWxv2B,UAAU2i1B,gBAAkB,SAAUgB,GAI7C,IAHA,IAEIpj1B,EACKq7N,EAAK,EAAGkob,EAHA6/L,EAAYlxqB,GAAkBhxK,KAAK+joB,gBAAkB,GAAK3moB,OAAOC,KAAK2C,KAAK+joB,gBACxF,CAAC,OAAQ,WAAY,WAAY,QAAS,OAAQ,QAAS,MAAO,MAAO,eAEjC5pa,EAAKkob,EAAavkpB,OAAQq8N,IAAM,CACxE,IAAI7nJ,EAAO+vkB,EAAalob,GACxB,IAAKnpD,GAAkBhxK,KAAK0kc,aAAat0b,aAAakiE,IAClD,OAAQA,GACJ,IAAK,WACD,GAAK0+F,GAAkBhxK,KAAKiu2B,mBAAiDhhyB,IAAhCjtE,KAAKiu2B,YAAqB,SAAqB/rB,EAAW,CACnG,IAAI570B,EAAmD,aAAzCtG,KAAK0kc,aAAat0b,aAAakiE,IACA,KAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,IAAyD,SAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,GAClFtyE,KAAKiie,cAAc,CAAE37d,QAASA,IAAY470B,EAC9C,CACA,MACJ,IAAK,QACDli1B,KAAK4g1B,WAAa5g1B,KAAK0kc,aAAat0b,aAAakiE,GACjD,MACJ,IAAK,WACD,GAAK0+F,GAAkBhxK,KAAKiu2B,mBAAkDhhyB,IAAjCjtE,KAAKiu2B,YAAsB,UAAqB/rB,EAAW,CACpG,IAAI1qY,EAAoD,aAAzCx3c,KAAK0kc,aAAat0b,aAAakiE,IACD,KAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,IAAyD,SAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,GAClFtyE,KAAKiie,cAAc,CAAEzqB,SAAUA,IAAa0qY,EAChD,CACA,MACJ,IAAK,OACDli1B,KAAK0kc,aAAa97b,aAAa,OAAQ5I,KAAK0kc,aAAat0b,aAAakiE,IACtE,MACJ,IAAK,OACDtyE,KAAKi1D,KAAOh0D,SAASjB,KAAK0kc,aAAat0b,aAAakiE,GAAO,IAC3D,MACJ,IAAK,eACI0+F,GAAkBhxK,KAAKiu2B,mBAAqDhhyB,IAApCjtE,KAAKiu2B,YAAyB,aAAqB/rB,IAC5Fli1B,KAAKiie,cAAc,CAAEj6G,YAAahoX,KAAK0kc,aAAat0b,aAAakiE,KAAU4vwB,GAE/E,MACJ,IAAK,OACIlxqB,GAAkBhxK,KAAKiu2B,mBAA6ChhyB,IAA5BjtE,KAAKiu2B,YAAiB,KAAqB/rB,KACpFpj1B,EAAQ,IAAIkZ,KAAKhY,KAAK0kc,aAAat0b,aAAakiE,IAC3C0+F,GAAkBhxK,KAAKi21B,eAAen31B,KACvCkB,KAAKiie,cAAc,CAAE53d,IAAKvL,IAAUoj1B,IAG5C,MACJ,IAAK,OACIlxqB,GAAkBhxK,KAAKiu2B,mBAA6ChhyB,IAA5BjtE,KAAKiu2B,YAAiB,KAAqB/rB,KACpFpj1B,EAAQ,IAAIkZ,KAAKhY,KAAK0kc,aAAat0b,aAAakiE,IAC3C0+F,GAAkBhxK,KAAKi21B,eAAen31B,KACvCkB,KAAKiie,cAAc,CAAEp9d,IAAK/F,IAAUoj1B,IAG5C,MACJ,IAAK,SACIlxqB,GAAkBhxK,KAAKiu2B,mBAA+ChhyB,IAA9BjtE,KAAKiu2B,YAAmB,OAAqB/rB,KACtFpj1B,EAAQ,IAAIkZ,KAAKhY,KAAK0kc,aAAat0b,aAAakiE,IAC3C0+F,GAAkBhxK,KAAKi21B,eAAen31B,MACvCkB,KAAK23pB,UAAY74pB,EACjBkB,KAAKwi2B,aAAY,EAAOxi2B,KAAK23pB,WAC7B33pB,KAAKiie,cAAc,CAAEnje,MAAOA,IAAUoj1B,KAM9D,CACJ,EACA6rB,EAAWxv2B,UAAUmx2B,eAAiB,SAAU5w2B,GAC5C,OAAIkyK,GAAkBhxK,KAAKi21B,eAAen31B,IAC/B,KAEJ,IAAIkZ,KAAKkqN,IAAMC,IAAOmroB,IAAKxu2B,EAAMsa,WAAYta,EAAMwa,aAAcxa,EAAM0a,aAClF,EACAu01B,EAAWxv2B,UAAUs02B,cAAgB,WACjC,IAAIpqvB,EAAO,EACX,GAA4C,MAAxCzoH,KAAKot2B,iBAAiBps2B,MAAM,KAAK,IAAqD,IAAvChB,KAAKot2B,iBAAiB1o2B,QAAQ,KAC7E+jH,EAAO,OAEN,GAAIzoH,KAAKot2B,iBAAiB1o2B,QAAQ,KAAO,EAE1C,IADA,IAAIou2B,EAAW9y2B,KAAKot2B,iBAAiBps2B,MAAM,KAClC7D,EAAI,EAAGA,EAAI212B,EAASh12B,OAAQX,IACjC,GAAI212B,EAAS312B,GAAGsH,cAAcC,QAAQ,MAAQ,EAAG,CAC7C+jH,EAAOtrH,EACP,KACJ,CAGR,OAAOsrH,CACX,EACAslvB,EAAWxv2B,UAAU4ruB,YAAc,SAAUrruB,EAAOo6D,GAChD,IAAIvmB,EACJ,GAAI3yC,KAAKwjW,cAAc1kW,GACnBkB,KAAKgv2B,kBAIL,GADAr8zB,EAAM3yC,KAAKk21B,WAAWp31B,GAClBkB,KAAK4h1B,WAAY,CAEjB,IAAI38M,EAAoB,OAARtylB,GAAgB7zC,EAAMyW,OAAOzX,OAAS,EAClDkC,KAAK+kZ,cAAc/kZ,KAAK4owB,UAAY5owB,KAAK0kc,aAAa5lc,MAC1DkB,KAAK6i2B,iBAAiB59N,GAClBjloB,KAAK4i2B,aACA39N,GACDjloB,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAE3BnxrB,GAAkBr+H,IAAQ7zC,IAAUkB,KAAKmi2B,iBACzCni2B,KAAKoq2B,aAELp5rB,GAAkBr+H,IAAQ7zC,IAAUkB,KAAKmi2B,iBACzCni2B,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAGvC,CAEJni2B,KAAKsy2B,iBAAiBp5yB,EAAwB,kBAAVp6D,EACxC,EACAiv2B,EAAWxv2B,UAAUwmZ,cAAgB,SAAUt4V,GAE3C,IADA,IAAI3tD,EAAQkB,KAAK4xd,cAAcnla,GACtBtvD,EAAI,EAAGA,EAAI6C,KAAK6t2B,gBAAgB/v2B,OAAQX,IAC7C,IAAK2B,IAAUkB,KAAK6t2B,gBAAgB1w2B,GAAI,CACpC6C,KAAK8zpB,YAAc32pB,EACnB6C,KAAKm9pB,gBAAkBn9pB,KAAK0hpB,cAAcvkpB,GAC1C6C,KAAKov2B,iBAAmB,IAAIp31B,KAAKhY,KAAK6t2B,gBAAgB1w2B,IACtD,KACJ,CAEJ,OAAO6C,KAAKkwX,SAChB,EACA69e,EAAWxv2B,UAAUyw2B,WAAa,WAC9Bhv2B,KAAKk2pB,kBACLp4B,GAAMnqW,SAAS,GAAI3zR,KAAK0kc,aAAc1kc,KAAKo+nB,gBAAgB,GAC3Dp+nB,KAAKov2B,iBAAmBpv2B,KAAK8zpB,YAAc,KACtC9zpB,KAAK4h1B,YACN5h1B,KAAKwu2B,gBAAgB,KAE7B,EACAT,EAAWxv2B,UAAU2z2B,YAAc,SAAUv/zB,GACzC,OAAIq+H,GAAkBhxK,KAAKi21B,eAAetjzB,IAC/B,KAGA3yC,KAAKy1wB,UAAU17vB,WAAW44B,EAAK,CAAEx3B,OAAQnb,KAAKot2B,iBAAkB3m2B,KAAM,QAErF,EACAsn2B,EAAWxv2B,UAAU231B,WAAa,SAAUp31B,GACxC,IAAKkB,KAAKwjW,cAAc1kW,GAAQ,CAC5B,IAAI2tD,EAAO3tD,aAAiBkZ,KAAOlZ,EAAQkB,KAAK4xd,cAAc9yd,GAC9D,OAAOkB,KAAK+y2B,cAActmzB,EAAM3tD,EACpC,CAEA,OADAkB,KAAKgv2B,aACEhv2B,KAAKov2B,iBAAmB,IACnC,EACArB,EAAWxv2B,UAAUw02B,cAAgB,SAAUtmzB,EAAM3tD,GACjD,IAAI2pH,EACA91E,EAAM3yC,KAAKoh1B,eAAeti1B,EAAOkB,KAAKqK,IAAKrK,KAAK6E,KAChDmu2B,EAAShz2B,KAAK4xd,cAAcj/a,GAahC,GAZI3yC,KAAKqopB,kBAAkB2qN,KAAYhz2B,KAAKqopB,kBAAkBropB,KAAKlB,QAC/DkB,KAAKov2B,iBAAmBp+rB,GAAkBgisB,GAAU,KAAOA,EAC3DvqvB,EAAOzoH,KAAKky2B,YAAYly2B,KAAKov2B,oBAGzBpv2B,KAAK4h1B,aAELn1xB,EAAOumzB,GAEXhz2B,KAAKov2B,iBAAmBpv2B,KAAKi21B,eAAexpyB,GAC5Cg8D,EAAOzoH,KAAKky2B,YAAYly2B,KAAKov2B,oBAE5Bpv2B,KAAK4h1B,YAAc5wqB,GAAkBvoD,GAAO,CAC7C,IAAIiyiB,EAAU/nnB,EAAIp9B,OAAOzX,OAAS,EAAI60C,EAAM,GAC5C3yC,KAAK6i2B,iBAAiBnoM,GAClB16pB,KAAK4i2B,aACAloM,GACD16pB,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAGvC,MAEIni2B,KAAK6i2B,iBAAiBp6uB,GAClBzoH,KAAK4i2B,aACQ,KAATn6uB,GACAzoH,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAE3BnxrB,GAAkBvoD,IAAS3pH,IAAUkB,KAAKmi2B,iBAC1Cni2B,KAAKoq2B,aAELp5rB,GAAkBvoD,IAAS3pH,IAAUkB,KAAKmi2B,iBAC1Cni2B,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,kBAIvC,OAAO15uB,CACX,EACAslvB,EAAWxv2B,UAAU6r2B,WAAa,WAC9Bpq2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,kBAEhB,EACAgmyB,EAAWxv2B,UAAU002B,gBAAkB,SAAU/5yB,GAC7C,IAAIg6yB,EAAWlz2B,KAAK0kc,aAAc5lc,MAC9BA,EAAQkyK,GAAkBhxK,KAAKov2B,kBAAoBpv2B,KAAKww2B,cAAc0C,GACtElz2B,KAAK4xd,cAAc5xd,KAAKov2B,kBACxB+D,EAAU,KACV1q1B,EAAQzoB,KAAK0hpB,cAAc5jpB,OAC3Bw+xB,EAAct8xB,KAAK6t2B,gBACvB,GAAK78rB,GAAkBhxK,KAAKi21B,eAAen31B,KAAYkyK,GAAkBhxK,KAAK8zpB,aAiD1E9zpB,KAAKoz2B,eAAel6yB,OAjDoE,CACxF,GAAqB,SAAjBA,EAAM8oJ,OAAmB,CACzB,IAAIr1L,EAAQ3sB,KAAKqz2B,eAAe,GAChCF,GAAYnz2B,KAAKww2B,cAAc,IAAIx41B,KAAKhY,KAAK6t2B,gBAAgBlh1B,KAC7D3sB,KAAK8zpB,YAAcnnoB,CACvB,MACK,GAAqB,QAAjBusC,EAAM8oJ,OAAkB,CACzBr1L,EAAQ3sB,KAAKqz2B,eAAe/2E,EAAYx+xB,OAAS,GAAG,GACxDq12B,GAAYnz2B,KAAKww2B,cAAc,IAAIx41B,KAAKhY,KAAK6t2B,gBAAgBlh1B,KAC7D3sB,KAAK8zpB,YAAcnnoB,CACvB,MAEI,GAAqB,SAAjBusC,EAAM8oJ,OACN,IAAK,IAAI7kN,EAAI,EAAGA,EAAIsrB,EAAOtrB,IAAK,CAC5B,IAAK2B,EAAQkB,KAAK6t2B,gBAAgB1w2B,GAAI,CAC9BwvB,EAAQ3sB,KAAKqz2B,eAAel22B,GAChCg22B,GAAYnz2B,KAAKww2B,cAAc,IAAIx41B,KAAKhY,KAAK6t2B,gBAAgBlh1B,KAC7D3sB,KAAK8zpB,YAAcnnoB,EACnB,KACJ,CACK,GAAIxvB,IAAMsrB,EAAQ,EAAG,CAClBkE,EAAQ3sB,KAAKqz2B,eAAe,GAChCF,GAAYnz2B,KAAKww2B,cAAc,IAAIx41B,KAAKhY,KAAK6t2B,gBAAgBlh1B,KAC7D3sB,KAAK8zpB,YAAcnnoB,EACnB,KACJ,CACJ,MAGA,IAASxvB,EAAIsrB,EAAQ,EAAGtrB,GAAK,EAAGA,IAAK,CACjC,IAAK2B,EAAQkB,KAAK6t2B,gBAAgB1w2B,GAAI,CAC9BwvB,EAAQ3sB,KAAKqz2B,eAAel22B,GAAG,GACnCg22B,GAAYnz2B,KAAKww2B,cAAc,IAAIx41B,KAAKhY,KAAK6t2B,gBAAgBlh1B,KAC7D3sB,KAAK8zpB,YAAcnnoB,EACnB,KACJ,CACK,GAAU,IAANxvB,EAAS,CACVwvB,EAAQ3sB,KAAKqz2B,eAAe5q1B,EAAQ,GACxC0q1B,GAAYnz2B,KAAKww2B,cAAc,IAAIx41B,KAAKhY,KAAK6t2B,gBAAgBlh1B,KAC7D3sB,KAAK8zpB,YAAcnnoB,EACnB,KACJ,CACJ,CAGR3sB,KAAKm9pB,gBAAkBn9pB,KAAK0hpB,cAAc1hpB,KAAK8zpB,aAC/C9zpB,KAAKil1B,aAAaj0qB,GAAkBmisB,GAAW,KAAO,IAAIn71B,KAAKm71B,GACnE,CAIJ,EACApF,EAAWxv2B,UAAU602B,eAAiB,SAAUl6yB,GAC5C,IAAIvsC,EAAQ3sB,KAAKqz2B,eAAe,EAAoB,SAAjBn6yB,EAAM8oJ,QACzChiN,KAAK8zpB,YAAcnnoB,EACnB3sB,KAAKm9pB,gBAAkBn9pB,KAAK0hpB,cAAc/0nB,GAC1C3sB,KAAKil1B,aAAa,IAAIjt0B,KAAKhY,KAAK6t2B,gBAAgBlh1B,IACpD,EACAoh1B,EAAWxv2B,UAAU0m1B,aAAe,SAAUnm1B,GACrCkyK,GAAkBhxK,KAAKi21B,eAAen31B,KACvCkB,KAAKk21B,WAAWp31B,EAExB,EACAiv2B,EAAWxv2B,UAAU802B,eAAiB,SAAU1m1B,EAAOumb,GACnD,IAAIg7C,EAAe,KACfzje,EAAQumJ,GAAkBhxK,KAAKo21B,cAAgBp21B,KAAK0hpB,cACpD1hpB,KAAKo21B,aAAa3o0B,iBAAiB,IAAMig1B,KACzC4F,GAAU,EACd,GAAI7o1B,EAAM3sB,OACN,GAAIo1c,EACA,IAAK,IAAI/1c,EAAIwvB,EAAOxvB,GAAK,EAAGA,IAAK,CAC7B,IAAKstB,EAAMttB,GAAGgH,UAAUC,SAASqhf,KAAW,CACxCyI,EAAe/wf,EACf,KACJ,CACe,IAANA,GACDm22B,IACA3m1B,EAAQxvB,EAAIstB,EAAM3sB,OAClBw12B,GAAU,EAGtB,MAGA,IAASn22B,EAAIwvB,EAAOxvB,GAAKstB,EAAM3sB,OAAS,EAAGX,IAAK,CAC5C,IAAKstB,EAAMttB,GAAGgH,UAAUC,SAASqhf,KAAW,CACxCyI,EAAe/wf,EACf,KACJ,CACSA,IAAMstB,EAAM3sB,OAAS,GACtBw12B,IACA3m1B,EAAQxvB,GAAK,EACbm22B,GAAU,EAGtB,CAGR,OAAOplX,CACX,EACA6/W,EAAWxv2B,UAAU64X,WAAa,SAAUl+T,GACxC,KAAI83G,GAAkBhxK,KAAKi1D,OAASj1D,KAAKi1D,MAAQ,IAAM+7G,GAAkBhxK,KAAK61pB,eACvE71pB,KAAK61pB,aAAa71lB,QAAQ,GAAG77D,UAAUC,SAASqhf,MADvD,CAIA,IAAIh9d,EAAQzoB,KAAK6t2B,gBAAgB/v2B,OACjC,GAAIkzK,GAAkBhxK,KAAKmt0B,qBAA0D,IAAnCnt0B,KAAKmt0B,mBAAmBrv0B,OACtE,GAAIkC,KAAK0hpB,cAAc5jpB,OAAS,EAC5B,GAAIkzK,GAAkBhxK,KAAKlB,QAAUkyK,GAAkBhxK,KAAK8zpB,aAAc,CACtE,IAAInnoB,EAAQ3sB,KAAKqz2B,eAAe,EAAoB,SAAjBn6yB,EAAM8oJ,QACzChiN,KAAK8zpB,YAAcnnoB,EACnB3sB,KAAKm9pB,gBAAkBn9pB,KAAK0hpB,cAAc/0nB,GAC1C3sB,KAAKil1B,aAAa,IAAIjt0B,KAAKhY,KAAK6t2B,gBAAgBlh1B,IACpD,MAEI3sB,KAAKiz2B,gBAAgB/5yB,QAIzBl5D,KAAKiz2B,gBAAgB/5yB,OAGxB,CACD,IAAIq5B,OAAW,EACf,GAAKr5B,EAAM4mO,SAAW,IAAQ5mO,EAAM4mO,SAAW,GAAK,CAC5CnzQ,EAA2B,KAAlBusC,EAAM4mO,SAAoC,KAAlB5mO,EAAM4mO,UAAoB9/R,KAAK8zpB,cAAgB9zpB,KAAK8zpB,YACzF9zpB,KAAK8zpB,YAAcnnoB,EAAQ3sB,KAAK8zpB,cAAiBrroB,EAAS,EAAIzoB,KAAK8zpB,YACnE9zpB,KAAK8zpB,YAAcnnoB,EAAQ3sB,KAAK8zpB,YAAc,EAAKrroB,EAAQ,EAAKzoB,KAAK8zpB,YACrE9zpB,KAAK8zpB,YAAcnnoB,EAAQ3sB,KAAKqz2B,eAAerz2B,KAAK8zpB,YAAgC,KAAlB56lB,EAAM4mO,SAAoC,KAAlB5mO,EAAM4mO,SAEhGvtM,EAAWy+E,GAAkBhxK,KAAK6t2B,gBAAgBlh1B,IAC9C3sB,KAAK6t2B,gBAAgB,GAAK7t2B,KAAK6t2B,gBAAgBlh1B,EACvD,MACK,GAAqB,SAAjBusC,EAAM8oJ,OAAmB,CAC1Br1L,EAAQ3sB,KAAKqz2B,eAAe,GAChCrz2B,KAAK8zpB,YAAcnnoB,EACnB4lE,EAAWvyF,KAAK6t2B,gBAAgBlh1B,EACpC,MACK,GAAqB,QAAjBusC,EAAM8oJ,OAAkB,CACzBr1L,EAAQ3sB,KAAKqz2B,eAAe5q1B,EAAQ,GAAG,GAC3CzoB,KAAK8zpB,YAAcnnoB,EACnB4lE,EAAWvyF,KAAK6t2B,gBAAgBlh1B,EACpC,CACA3sB,KAAKm9pB,gBAAkBn9pB,KAAK0hpB,cAAc1hpB,KAAK8zpB,aAC/C9zpB,KAAKil1B,aAAa,IAAIjt0B,KAAKu6E,GAC/B,CACAvyF,KAAKmp2B,YAAa,EAClBnp2B,KAAKq5pB,SAASr5pB,KAAKm9pB,gBAAiBqwM,KACpCxt2B,KAAKu+1B,sBACDv+1B,KAAK4i2B,YACL5i2B,KAAK+w2B,mBAEL/w2B,KAAK+zpB,eAA0C,OAAzB/zpB,KAAKm9pB,iBAA8BjkmB,GAAwB,UAAfA,EAAMzyD,MACxEzG,KAAKw5pB,mBAjDT,CAmDJ,EACAu0M,EAAWxv2B,UAAUox2B,qBAAuB,SAAUjwkB,EAAIpgS,GACtD,OAAOyuN,GAAS,QAAUzuN,EAAI,+CAAgDogS,EAClF,EACAqukB,EAAWxv2B,UAAUkz2B,qBAAuB,SAAU/xkB,EAAIpgS,GACtD,OAAOyuN,GAAS,QAAUzuN,EAAI,+CAAgDogS,EAClF,EACAqukB,EAAWxv2B,UAAUm3pB,eAAiB,WAClCh3L,GAAa53d,IAAI9G,KAAKiw2B,YAAa,QAASjw2B,KAAK+4pB,aAAc/4pB,MAC1Dk9d,GAAQK,WACTmB,GAAa53d,IAAI9G,KAAKiw2B,YAAa,YAAajw2B,KAAKiub,YAAajub,MAClE0+d,GAAa53d,IAAI9G,KAAKiw2B,YAAa,WAAYjw2B,KAAKsgW,aAActgW,MAE1E,EACA+t2B,EAAWxv2B,UAAUk3pB,iBAAmB,WAChCz1pB,KAAKiw2B,cACLvxY,GAAa73d,OAAO7G,KAAKiw2B,YAAa,QAASjw2B,KAAK+4pB,cAC/C77L,GAAQK,WACTmB,GAAa73d,OAAO7G,KAAKiw2B,YAAa,YAAajw2B,KAAKiub,aACxDywC,GAAa73d,OAAO7G,KAAKiw2B,YAAa,WAAYjw2B,KAAKsgW,eAGnE,EACAytgB,EAAWxv2B,UAAUg02B,aAAe,SAAUr5yB,EAAOp6D,GACjD,IAAIsd,EAAU40J,GAAkBhxK,KAAKi21B,eAAen31B,IAAW,KAAOA,GACjEkB,KAAK4owB,YAAcxsvB,IACpBpc,KAAK23pB,UAAYv7oB,EACjBpc,KAAKyh2B,YAAYvoyB,GAEzB,EACA60yB,EAAWxv2B,UAAUkj2B,YAAc,SAAUvk2B,GACzC8C,KAAKkw2B,eACLlw2B,KAAKwi2B,aAAY,EAAMxi2B,KAAK23pB,WAC5B,IAAIhoT,EAAY,CACZz2S,MAAQh8D,GAAK,KACb4B,MAAOkB,KAAKlB,MACZuP,KAAOrO,KAAK0kc,aAAc5lc,MAC1Bm1pB,cAAejjf,GAAkB9zK,GACjCu8D,QAASz5D,KAAKy5D,SAElBk2S,EAAU7wW,MAAQkB,KAAKov2B,kBAAoBpv2B,KAAK4xd,cAAc5xd,KAAK0kc,aAAa5lc,OAChFkB,KAAK4owB,SAAW5owB,KAAKov2B,kBAAoBpv2B,KAAK4xd,cAAc5xd,KAAK0kc,aAAa5lc,OAC1EkB,KAAK+iQ,WAAa/iQ,KAAKykpB,cACvBzkpB,KAAKykpB,eAAgB,EAGrBzkpB,KAAKo/d,QAAQ,SAAUzvH,GAE3B3vW,KAAKii2B,mBAAqB,KAC1Bji2B,KAAKwu2B,gBAAgBxu2B,KAAKlB,MAC9B,EACAiv2B,EAAWxv2B,UAAUik2B,YAAc,SAAU55Q,EAAUn8hB,GAC/Cm8hB,IACA5olB,KAAKkwX,UAAYlwX,KAAK+tN,SAASthK,IAEnCzsD,KAAK4owB,SAAW5owB,KAAKov2B,iBAAmB3izB,EACnB,kBAATA,IAAuBzsD,KAAKlB,QAAU,IAAIkZ,MAAMhY,KAAKlB,OAAO+yd,gBAAgB,OAASpla,IAC7FzsD,KAAKiie,cAAc,CAAEnje,MAAO2tD,IAAQ,GAChCzsD,KAAK4i2B,YAAc5i2B,KAAKlB,OACxBkB,KAAKoq2B,eAGRpq2B,KAAK4h1B,YAAc5wqB,GAAkBhxK,KAAKlB,QAAUkB,KAAKii2B,qBAC1Dji2B,KAAKwu2B,gBAAgBxu2B,KAAKii2B,oBAC1Bji2B,KAAK6i2B,iBAAiB7i2B,KAAKii2B,qBAE/Bji2B,KAAK0u2B,gBACT,EACAX,EAAWxv2B,UAAUgg2B,oBAAsB,YAClCvtrB,GAAkBhxK,KAAKm9pB,kBAAoBn9pB,KAAKlB,MACjDu4D,GAAWr3D,KAAK0kc,aAAc,CAAE,wBAAyB1kc,KAAKm9pB,gBAAgB/spB,aAAa,QAG3FpQ,KAAK0kc,aAAanxY,gBAAgB,wBAE1C,EACAw6yB,EAAWxv2B,UAAU23pB,gBAAkB,WAEnC,GADAl2pB,KAAKi2pB,YAAYs3M,MACZv8rB,GAAkBhxK,KAAKo21B,cAAe,CACvC,IAAI3r0B,EAAQzqB,KAAKo21B,aAAa3o0B,iBAAiB,IAAMmm0B,KACjDnp0B,EAAM3sB,SACN40D,GAAYjoC,EAAOmp0B,KACnBnp0B,EAAM,GAAG8oC,gBAAgB,iBAEjC,CACJ,EACAw6yB,EAAWxv2B,UAAU03pB,YAAc,SAAU/ppB,GACzC,IAAIolH,EAActxH,KAAKuz2B,aAAarn2B,GAChColH,GAAeA,EAAYxzH,SAC3B40D,GAAY4+D,EAAaplH,GACrBA,IAAcsh2B,KACdl8uB,EAAY,GAAG/9D,gBAAgB,iBAG3C,EACAw6yB,EAAWxv2B,UAAUg12B,aAAe,SAAUrn2B,GAC1C,IAAIolH,EAIJ,OAHK0/C,GAAkBhxK,KAAKo21B,gBACxB9kuB,EAActxH,KAAKo21B,aAAa3o0B,iBAAiB,IAAMvhB,IAEpDolH,CACX,EACAy8uB,EAAWxv2B,UAAUi12B,eAAiB,WAClC,IAAKxisB,GAAkBhxK,KAAKo21B,cAAe,CACvC,IAAI3r0B,EAAQzqB,KAAKo21B,aAAa3o0B,iBAAiB,IAAMig1B,KACrD,GAAIjj1B,EAAM3sB,OACN,IAAK,IAAIX,EAAI,EAAGA,EAAIstB,EAAM3sB,OAAQX,IAC9B,GAAK6C,KAAK6t2B,gBAAgB1w2B,MAAQ6C,KAAK4xd,cAAc5xd,KAAKov2B,kBAAoB,CAC1E3k1B,EAAMttB,GAAGyL,aAAa,gBAAiB,QACvC5I,KAAKm9pB,gBAAkB1yoB,EAAMttB,GAC7B6C,KAAK8zpB,YAAc32pB,EACnB,KACJ,CAGZ,CACJ,EACA4w2B,EAAWxv2B,UAAU2x2B,aAAe,WAChClw2B,KAAKm9pB,gBAAkB,KACvBn9pB,KAAKk2pB,kBACLl2pB,KAAKwz2B,iBACAxisB,GAAkBhxK,KAAKm9pB,mBACxB1qmB,GAAS,CAACzyD,KAAKm9pB,iBAAkBy2L,KACjC5z1B,KAAKm9pB,gBAAgBv0pB,aAAa,gBAAiB,QAE3D,EACAml2B,EAAWxv2B,UAAU26pB,UAAY,SAAUthX,GACvC,OAAQA,GAAMA,EAAGzzS,UAAUC,SAASsp2B,OAAe91jB,EAAGzzS,UAAUC,SAASqhf,IAC7E,EACAsoX,EAAWxv2B,UAAUiy2B,cAAgB,SAAU79zB,GAC3C,IACIglN,EAAQ33P,KAAKy1wB,UAAU17vB,WAAW,IAAI/B,KAAQ,CAAEmD,OADpC,KACuD+tc,SAAU,QAASzid,KAAM,SAC5F3H,EAAQ,KAgBZ,MAfmB,kBAAR6zC,EACHA,EAAI0e,cAAc3sD,QAAQ,OAAS,GAAKiuC,EAAI0e,cAAc3sD,QAAQ,OAAS,GAC3EizP,EAAQ33P,KAAKg1d,eAAej7c,WAAW,IAAI/B,KAAQ,CAAEmD,OAL7C,KAKgE+tc,SAAU,QAASzid,KAAM,SAE7FuqK,GADJlyK,EAAQwF,OAAO,IAAI0T,KAAK2/O,EAAQ,IAAMhlN,IAAQ,KAAO,IAAI36B,KAAK,IAAIA,KAAK2/O,EAAQ,IAAMhlN,GAAKk/a,gBAAgB,OAEtG/yd,EAAQkB,KAAKyz2B,UAAU97mB,EAAOhlN,KAIlC7zC,EAAQkB,KAAKyz2B,UAAU97mB,EAAOhlN,GAG7BA,aAAe36B,OACpBlZ,EAAQ6zC,GAEL7zC,CACX,EACAiv2B,EAAWxv2B,UAAUk12B,UAAY,SAAU97mB,EAAOhlN,GAC9C,IAAI7zC,EAQJ,OAJAA,EAAQkyK,GAHRlyK,EAAQkB,KAAKy1wB,UAAU19vB,UAAU4/O,EAAQ,IAAMhlN,EAAK,CAChDx3B,OAAQnb,KAAKwx2B,iBAAmB,IAAMxx2B,KAAKot2B,iBAAkB3m2B,KAAM,cAEpCzG,KAAKy1wB,UAAU19vB,UAAU4/O,EAAQ,IAAMhlN,EAAK,CAC3Ex3B,OAAQnb,KAAKwx2B,iBAAmB,IAAMxx2B,KAAK0x2B,gBAAiBjr2B,KAAM,aACjE3H,EACLA,EAAQkyK,GAAkBlyK,GAASA,EAAQ,IAAIkZ,KAAKlZ,EAAM+yd,gBAAgB,GAE9E,EACAk8Y,EAAWxv2B,UAAUwwpB,gBAAkB,WACnC,IAEI/goB,EAFA4yL,EAAQ5gN,KACZA,KAAKiw2B,YAAcjw2B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAn5DzC,YAm5D6DwmC,MAAO,CAAE,SAAY,QAExF,IAAIq3E,EAAuB,IAAZ/pH,KAAKi1D,KAChB4vkB,EAAY,GAChB7koB,KAAK6t2B,gBAAkB,GACvB7t2B,KAAKgu2B,sBAAwB,GAC7Bhg1B,GAAUhuB,KAAK4xd,cAAc5xd,KAAK4u2B,SAAS/8Y,gBAAgB,GAE3D,IADA,IAAI5jc,GAAQjuB,KAAK4xd,cAAc5xd,KAAK6u2B,SAASh9Y,gBAAgB,GACtD5jc,GAAOD,GACVhuB,KAAK6t2B,gBAAgBlw2B,KAAKqwB,GAC1B62mB,EAAUlnoB,KAAKqC,KAAKy1wB,UAAU17vB,WAAW,IAAI/B,KAAKgW,GAAQ,CAAE7S,OAAQnb,KAAKot2B,iBAAkB3m2B,KAAM,UACjGunB,GAAS+7F,EAEb,IAAI2pvB,EAAkB,CAClBv0N,YAAa,SAAU/zkB,GACnB,IAAIukS,EAAY,CACZl2S,QAAS2R,EAAKiK,KACdhnE,KAAM+8D,EAAK/8D,KAAMvP,MAAO8hN,EAAMgxQ,cAAcxmZ,EAAK/8D,MAAOo1S,YAAY,GAExE7iG,EAAMw+Q,QAAQ,aAAczvH,GAAW,SAAUA,GACzCA,EAAUlsD,YACVksD,EAAUl2S,QAAQt1D,UAAU2C,IAAI2+e,KAEhC91I,EAAUl2S,QAAQt1D,UAAUC,SAASqhf,MACrC7kS,EAAMotpB,sBAAsBrw2B,KAAKgyW,EAAUl2S,QAAQrpD,aAAa,cAExE,GACJ,GAEJpQ,KAAK8v2B,QAAUrqO,GAAS4b,WAAWrhpB,KAAKg+B,cAAe6mmB,EAAW6uO,GAAiB,GACnFr8yB,GAAWr3D,KAAK8v2B,QAAS,CAAE,KAAQ,UAAW,cAAe,QAAS,GAAM9v2B,KAAKy5D,QAAQ3jD,GAAK,WAAY,SAAY,MACtHwyI,GAAO,CAACtoJ,KAAK8v2B,SAAU9v2B,KAAKiw2B,YAChC,EACAlC,EAAWxv2B,UAAU4z2B,qBAAuB,SAAUj5yB,GAClD,IAAI/2C,EAAS+2C,EAAM/2C,OACb6uJ,GAAkBhxK,KAAKu1pB,WAAcvkf,GAAkBhxK,KAAK61pB,iBAAkB71pB,KAAK61pB,aAAaz5jB,UAAUh4F,SAAS+d,IAA0B,cAAf+2C,EAAMzyD,MACrIzG,KAAKu1pB,SAAS97lB,SAAWz5D,KAAKu1pB,SAAS97lB,QAAQr1D,SAAS+d,KAA6B,eAAf+2C,EAAMzyD,MAC7EyyD,EAAMiH,iBAEJ2ga,GAAQ3+c,EAAQ,QAAUniB,KAAKu1pB,SAAS97lB,QAAQ3jD,GAAK,OAAUqM,IAAWniB,KAAK0kc,cAC9Evib,KAAYniB,KAAK61pB,cAAgB71pB,KAAK61pB,aAAa71lB,QAAQ,KAC9D79C,KAAYniB,KAAK61pB,cAAgB71pB,KAAK61pB,aAAav0B,cACnDn/mB,KAAYniB,KAAK61pB,cAAgB71pB,KAAK61pB,aAAaz5jB,YAC9Cj6E,EAAOhe,UAAUC,SAAS,iBAM1B+d,IAAWniB,KAAK0kc,eAChBw4B,GAAQK,WACTv9d,KAAK20pB,eAAiBz3L,GAAQpzd,MAA8B,SAAtBozd,GAAQ5hZ,KAAKz6E,OAAqB00B,SAAS0+P,gBAAkBj0R,KAAK0kc,cAChGvib,IAAWniB,KAAKo21B,eARxBp21B,KAAK+zpB,gBACL/zpB,KAAKuiC,OACLviC,KAAKi4pB,WASjB,EACA81M,EAAWxv2B,UAAUk8nB,aAAe,WAChCqD,GAAMrD,aAAaz6nB,KAAK+te,UAAW,CAAC/te,KAAK61pB,aAAaz5jB,YAClDp8F,KAAKu1pB,WACLv1pB,KAAKu1pB,SAASxnL,UAAY/te,KAAK+te,UAC/B/te,KAAKu1pB,SAASlzL,WAEtB,EACA0rY,EAAWxv2B,UAAU04pB,UAAY,WAC7Bn5B,GAAMgD,WAAW9goB,KAAKsG,QAAStG,KAAK0kc,aAAc1kc,KAAKo+nB,gBACnDp+nB,KAAKsG,SACLosD,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAYqpZ,KAC3Cpub,GAAWr3D,KAAK0kc,aAAc,CAAE,gBAAiB,UACjD1kc,KAAK0kc,aAAa97b,aAAa,WAAY5I,KAAKmnV,YAGhDnnV,KAAKuiC,OACLkwB,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAYqpZ,KACxCpub,GAAWr3D,KAAK0kc,aAAc,CAAE,gBAAiB,SACjD1kc,KAAK0kc,aAAav9G,UAAY,EAEtC,EACA4mhB,EAAWxv2B,UAAUo12B,YAAc,SAAUlnzB,EAAM9Z,GACnC,QAARA,GACA3yC,KAAK4u2B,QAAU5u2B,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKkv2B,aAAazizB,EAAKpiD,OACnErK,KAAKiie,cAAc,CAAE53d,IAAKrK,KAAK4u2B,UAAW,KAG1C5u2B,KAAK6u2B,QAAU7u2B,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKkv2B,aAAazizB,EAAK5nD,OACnE7E,KAAKiie,cAAc,CAAEp9d,IAAK7E,KAAK6u2B,UAAW,IAEd,KAA5B7u2B,KAAK0kc,aAAa5lc,MAClBkB,KAAKoh1B,eAAeph1B,KAAKlB,MAAOkB,KAAKqK,IAAKrK,KAAK6E,KAG/C7E,KAAKk21B,WAAWl21B,KAAK0kc,aAAa5lc,OAEtCkB,KAAKsy2B,iBAAiB,MAAM,EAChC,EACAvE,EAAWxv2B,UAAU2l2B,iBAAmB,SAAUhn2B,GAC9C,GAAK8C,KAAKsG,QAIV,GAAItG,KAAK20pB,eAAiB30pB,KAAK+zpB,cAC3B/zpB,KAAK0kc,aAAa91L,YADtB,CAIA5uQ,KAAKm5pB,WAAW,EAAGj8pB,GACf8C,KAAK4i2B,YAAc5i2B,KAAKmi2B,iBAAmBni2B,KAAKgoX,aAAuC,WAAxBhoX,KAAKo+nB,iBAChEp+nB,KAAK0kc,aAAa5lc,QAAUkB,KAAKmi2B,iBAAoBni2B,KAAKlB,OAAkC,SAAxBkB,KAAKo+nB,gBAAqD,UAAxBp+nB,KAAKo+nB,iBAA8Bp+nB,KAAKgoX,aAC9IhoX,KAAK6i2B,iBAAiB,KAG9BnwyB,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAY,CAACqxwB,MACxCzt2B,KAAKwilB,YAAcxilB,KAAK0kc,aAAa5lc,MACrCkB,KAAKmquB,YAAanquB,KAAK0kc,aAAc5lc,MAAO5B,GAEG,IAA1C8C,KAAK0kc,aAAa5lc,MAAMyW,OAAOzX,QACpCkC,KAAKgv2B,aAEThv2B,KAAKgy2B,cAAgB,KACrBhy2B,KAAKmp2B,YAAa,EACc,KAA5Bnp2B,KAAK0kc,aAAa5lc,QAClBkB,KAAKii2B,mBAAqB,MAE9B,IAAIkD,EAAgB,CAChBv7xB,MAAO5pE,MAEXA,KAAKo/d,QAAQ,OAAQ+lY,EAtBrB,CAuBJ,EAMA4I,EAAWxv2B,UAAU05pB,SAAW,WAC5B,GAAI1ioB,SAAS0+P,gBAAkBj0R,KAAK0kc,aAAc,CAC9C1kc,KAAK0kc,aAAaz7b,OAClBypD,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAY,CAACqxwB,MAC5C,IAAItI,EAAgB,CAChBv7xB,MAAO5pE,MAEXA,KAAKo/d,QAAQ,OAAQ+lY,EACzB,CACJ,EACA4I,EAAWxv2B,UAAUw1pB,YAAc,WAC/B,SAAI/zpB,KAAKo21B,eAAgBp21B,KAAKo21B,aAAajy1B,UAAUC,SAAS,GAAKqgf,KAIvE,EACAspX,EAAWxv2B,UAAU0l2B,kBAAoB,WACrC,GAAKjk2B,KAAKsG,QAAV,CAGA,IAAIy+1B,EAAiB,CACjBn7xB,MAAO5pE,MAENA,KAAKw3c,UAAa0lB,GAAQK,UAAav9d,KAAK4i2B,YAC7C5i2B,KAAK+w2B,kBAEL/w2B,KAAK4i2B,aAAe5i2B,KAAK0kc,aAAa5lc,OAASkB,KAAKgoX,eAChDhoX,KAAKmi2B,iBAAoBni2B,KAAKlB,OAAkC,SAAxBkB,KAAKo+nB,gBAAqD,UAAxBp+nB,KAAKo+nB,iBAA8Bp+nB,KAAKgoX,cAClHhoX,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAC3Bni2B,KAAK0kc,aAAar2K,eAAiB,EACnCruR,KAAK0kc,aAAap2K,aAAetuR,KAAK0kc,aAAa5lc,MAAMhB,SAGjEkC,KAAKo/d,QAAQ,QAAS2lY,GACtB/k2B,KAAK0u2B,iBACD1u2B,KAAKgl2B,aACLhl2B,KAAKwd,MAjBT,CAmBJ,EAMAuw1B,EAAWxv2B,UAAUg6pB,QAAU,WACvBhjoB,SAAS0+P,gBAAkBj0R,KAAK0kc,cAAgB1kc,KAAKsG,SACrDtG,KAAK0kc,aAAa91L,OAE1B,EAOAm/lB,EAAWxv2B,UAAUgkC,KAAO,WACxBviC,KAAKm5pB,WAAW,IAAK,MACrBn5pB,KAAK0u2B,gBACT,EAQAX,EAAWxv2B,UAAUif,KAAO,SAAU07C,GAClC,IAAI0nJ,EAAQ5gN,KACZ,KAAKA,KAAKsG,SAAWtG,KAAKw3c,WAAcx3c,KAAKsG,SAAWtG,KAAKo21B,cAA7D,CAIIp21B,KAAK8u2B,gBACD5xY,GAAQK,UAAYv9d,KAAKiw2B,cACzBjw2B,KAAKq21B,MAAQr21B,KAAKg+B,cAAc,OAChCh+B,KAAKq21B,MAAMnq1B,UAAiBu4e,IAAO,gBACnClvd,SAASwK,KAAK7zB,WAAa,IAAM211B,IACjCts0B,SAASwK,KAAKxoB,YAAYvX,KAAKq21B,QAE/Bn5X,GAAQK,WACRv9d,KAAKoy2B,oBAAsBpy2B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW,gCAClEqpB,SAASwK,KAAKxoB,YAAYvX,KAAKoy2B,sBAEnCpy2B,KAAKmu2B,mBAAqB,CACtB3umB,MAAOx/P,KAAKu1pB,UAAY,KACxBz0U,QAAQ,EACR5nR,MAAOA,GAAS,KAChBr4D,KAAM,OACNie,SAAUo+c,GAAQK,SAAWv9d,KAAKoy2B,oBAAsB780B,SAASwK,MAErE,IAAI4vU,EAAY3vW,KAAKmu2B,mBAoCrB,GAnCAnu2B,KAAKo/d,QAAQ,OAAQzvH,GAAW,SAAUA,GAEtC,GADA/uJ,EAAMutpB,mBAAqBx+f,EACtB/uJ,EAAMutpB,mBAAmBrthB,QAAWlgI,EAAMi1c,aAAa71lB,QAAQ,GAAG77D,UAAUC,SAASqhf,KA2BtF7kS,EAAM20c,SAAS9xlB,UACfm9I,EAAMw1oB,aAAex1oB,EAAMkvpB,aAAU7iyB,EACrC2zI,EAAM8gc,cAAgB9gc,EAAMitpB,gBAAkBjtpB,EAAMotpB,sBAAwB,GAC5EptpB,EAAM20c,SAAW,SA9BgF,CACjG30c,EAAMutpB,mBAAmBrv1B,SAASvH,YAAYqpM,EAAMw1oB,cACpDx1oB,EAAMgzpB,eAAehzpB,EAAMutpB,oBAC3BvtpB,EAAM44c,oBACDt8L,GAAQK,UACT38Q,EAAM8jP,aAAa91L,QAEvB,IAAIm6a,EAAgB,CAChBlorB,KAAM,SACN8yD,SAjnEA,IAmnEJitJ,EAAM20c,SAAS76B,gBAAgB95a,EAAMztE,QAChB,MAAjBytE,EAAMp4J,OACNo4J,EAAM20c,SAAS/3oB,KAAK,IAAI80G,GAAUy2jB,GAAgBnoe,EAAMnnJ,SAGxDmnJ,EAAM20c,SAAS/3oB,KAAK,IAAI80G,GAAUy2jB,GAAgB,MAEtDnoe,EAAM29oB,sBACNlnyB,GAAWupJ,EAAM8jP,aAAc,CAAE,gBAAiB,SAClDrtY,GAAWupJ,EAAM8jP,aAAc,CAAE,YAAa9jP,EAAM8jP,aAAa5ub,GAAK,aACtEuhD,GAAWupJ,EAAM8jP,aAAc,CAAE,gBAAiB9jP,EAAM8jP,aAAa5ub,KACrE28C,GAAS,CAACmuJ,EAAMi1c,aAAaz5jB,WAAYqxwB,KACzC/uY,GAAa53d,IAAIyuB,SAAU,uBAAwBqrL,EAAMuxpB,qBAAsBvxpB,GAC/EA,EAAMu1oB,gBAAgBv1oB,EAAMwxpB,oBAAqBxxpB,EAAM20c,SAAS97lB,QAASmnJ,EAAMy1oB,MAAOn5X,GAAQK,SAClG,CAOJ,IACIL,GAAQK,SAAU,CAClB,IAAIioN,EAAaxlrB,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW,kBACxDs5qB,EAAWnhrB,MAAMmkD,QAAUxoD,KAAKwoD,OAAS,GAAG7nD,WAC5CX,KAAKoy2B,oBAAoB761B,YAAYiuqB,EACzC,CACJ,CACJ,EAEAuoL,EAAWxv2B,UAAU431B,gBAAkB,SAAUC,EAAcyd,EAAkBxd,EAAO94X,GACpF,GAAIA,IAAavsT,GAAkB6isB,KAAsB7isB,GAAkBqlrB,KAAWrlrB,GAAkBolrB,GAAe,CACnH,IAAIzp0B,EAAQ1rB,SAAS4y2B,EAAiBxv2B,MAAMmkD,OAAQ,IAAMvnD,SAAS4y2B,EAAiBxv2B,MAAMmkD,OAAQ,IAAM,IACxG6tyB,EAAMhy1B,MAAMmkD,QAAU77B,EAAQ,GAAGhsB,WACjCy11B,EAAa/x1B,MAAMmkD,OAAS77B,EAAMhsB,UACtC,CACJ,EACAot2B,EAAWxv2B,UAAUu12B,aAAe,SAAUrt2B,GAC1C,IAAI3H,EAOJ,MANoB,kBAAT2H,EACP3H,EAAQ+kd,GAAWp9c,GAEE,kBAATA,IACZ3H,EAAS2H,EAAK9C,MAAM,YAAqBW,MAAMrD,SAASwF,EAAM,KAA5BA,EAA0Co9c,GAAWp9c,IAEpF3H,CACX,EACAiv2B,EAAWxv2B,UAAUq12B,eAAiB,SAAUxoyB,GAa5C,GAZAA,EAAKo0L,MAAMpqP,SAAShI,EAAIpN,KAAK8z2B,aAAa1oyB,EAAKo0L,MAAMpqP,SAAShI,GAC9Dg+D,EAAKo0L,MAAMpqP,SAAS6Z,EAAIjvB,KAAK8z2B,aAAa1oyB,EAAKo0L,MAAMpqP,SAAS6Z,GACzD3qB,MAAMnC,WAAWipE,EAAKo0L,MAAMpqP,SAAShI,KAAQ9I,MAAMnC,WAAWipE,EAAKo0L,MAAMpqP,SAAS6Z,MACnFjvB,KAAKu1pB,SAASt6B,SAAWj7nB,KAAKmzI,OAAS59G,SAASwK,KAChD//B,KAAKu1pB,SAAS54B,WAAa,aAE1Br4nB,MAAMnC,WAAWipE,EAAKo0L,MAAMpqP,SAAShI,MACtCpN,KAAKu1pB,SAASl+oB,QAAUlV,WAAWipE,EAAKo0L,MAAMpqP,SAAShI,IAEtD9I,MAAMnC,WAAWipE,EAAKo0L,MAAMpqP,SAAS6Z,MACtCjvB,KAAKu1pB,SAASj+oB,QAAUnV,WAAWipE,EAAKo0L,MAAMpqP,SAAS6Z,IAEtDiuc,GAAQK,SA2BqB,WAA1BnyZ,EAAKo0L,MAAMpqP,SAAShI,GAA4C,WAA1Bg+D,EAAKo0L,MAAMpqP,SAAS6Z,IAC1DjvB,KAAKu1pB,SAASt6B,SAAWj7nB,KAAKmzI,OAAS59G,SAASwK,KAChD//B,KAAKu1pB,SAASj+oB,QAAU,EACxBtX,KAAKu1pB,SAAS54B,WAAa,YAC3B38nB,KAAKu1pB,SAASn5B,UAAY,CAAEhvnB,EAAG,MAAO6hB,EAAG,YA/B1B,CACnB,OAAQm8C,EAAKo0L,MAAMpqP,SAAShI,GACxB,IAAK,OACD,MACJ,IAAK,QACDg+D,EAAKo0L,MAAMnoP,QAAUrX,KAAKow2B,eAAe7s2B,MACzC,MACJ,IAAK,SACD6nE,EAAKo0L,MAAMnoP,SAAYrX,KAAKow2B,eAAe7s2B,MAAQ,EAG3D,OAAQ6nE,EAAKo0L,MAAMpqP,SAAS6Z,GACxB,IAAK,MAEL,IAAK,SACD,MACJ,IAAK,SACDm8C,EAAKo0L,MAAMloP,SAAYtX,KAAKow2B,eAAe5s2B,OAAS,EAG9B,WAA1B4nE,EAAKo0L,MAAMpqP,SAAShI,GAA4C,WAA1Bg+D,EAAKo0L,MAAMpqP,SAAS6Z,IAC1DjvB,KAAKu1pB,SAASt6B,SAAWj7nB,KAAK61pB,aAAaz5jB,UAC3Cp8F,KAAKmzI,OAASnzI,KAAK0kc,aACnB1kc,KAAKu1pB,SAAS54B,WAAa,WAEnC,CASJ,EAOAoxO,EAAWxv2B,UAAUgye,eAAiB,WAElC,OAAOvwe,KAAK6we,aADI,CAAC,SAErB,EAQAk9X,EAAWxv2B,UAAUyke,cAAgB,WACjC,MAAO,YACX,EASA+qY,EAAWxv2B,UAAUoke,kBAAoB,SAAUiF,EAASC,GACxD,IAAK,IAAI1tQ,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAC9D,IAAI7nJ,EAAO4lH,EAAGiiC,GACd,OAAQ7nJ,GACJ,IAAK,cACDwrjB,GAAM8C,eAAeh5J,EAAQ5/G,YAAahoX,KAAK0kc,cAC/C,MACJ,IAAK,WACDo5L,GAAM+C,YAAY7goB,KAAKw3c,SAAUx3c,KAAK0kc,aAAc1kc,KAAKo+nB,gBACrDp+nB,KAAKw3c,UACLx3c,KAAKuiC,OAETviC,KAAKqu2B,mBACL,MACJ,IAAK,UACDru2B,KAAKiie,cAAc,CAAE37d,QAASshe,EAAQthe,UAAW,GACjDtG,KAAKi3pB,YACL,MACJ,IAAK,YACDj3pB,KAAKqu2B,mBACL,MACJ,IAAK,YACDru2B,KAAKiie,cAAc,CAAE8L,UAAWnG,EAAQmG,YAAa,GACrD/te,KAAKy6nB,eACL,MACJ,IAAK,WACDz6nB,KAAKgkoB,eAAep8J,EAAQ/4d,SAAUg5d,EAAQh5d,UAC9C,MACJ,IAAK,SACD7O,KAAKiie,cAAc,CAAEz5a,OAAQo/a,EAAQp/a,SAAU,GAC/CxoD,KAAKwxpB,YACL,MACJ,IAAK,iBACDxxpB,KAAK6k2B,+BACL7k2B,KAAK+90B,+BACL/90B,KAAKkh1B,iBAAgB,GACrB,MACJ,IAAK,MACL,IAAK,MACDlh1B,KAAK2z2B,YAAY/rY,EAASt1Z,GAC1B,MACJ,IAAK,kBACDwrjB,GAAMsD,eAAephoB,KAAK2ioB,gBAAiB3ioB,KAAK0kc,aAAc1kc,KAAK61pB,cACnE71pB,KAAK64pB,iBACL,MACJ,IAAK,SACD74pB,KAAKiie,cAAc,CAAEzpd,OAAQovd,EAAQpvd,SAAU,GAC/CxY,KAAKy1wB,UAAY,IAAIxgT,GAAqBj1d,KAAKwY,QAC/CxY,KAAKoppB,KAAK/klB,UAAUrkE,KAAKwY,QACrBxY,KAAKiu2B,aAA+C,MAAhCju2B,KAAKiu2B,YAAYjmf,aACrChoX,KAAK6x2B,oBAET7x2B,KAAK2zR,SAAS3zR,KAAKlB,OACfkB,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAGhB,MACJ,IAAK,QACDg5Z,GAAkB/ge,KAAK61pB,aAAaz5jB,UAAW,CAAE,MAASp8F,KAAKg8E,SAAS4rZ,EAAQrke,SAChFvD,KAAKow2B,eAAiBpw2B,KAAK61pB,aAAaz5jB,UAAUl5F,wBAClD46nB,GAAMS,eAAev+nB,KAAK0kc,aAAc1kc,KAAK61pB,aAAaz5jB,WACrD40E,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAAQgxG,GAAkBhxK,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,KAA+B,UAAxBr5B,KAAKo+nB,gBAC/Jp+nB,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,GAAGl1B,UAAU2C,IAAI,UAEjG,MACJ,IAAK,SACD9G,KAAKiie,cAAc,CAAE9md,OAAQysd,EAAQzsd,SAAU,GAC/Cnb,KAAKiv2B,kBACLjv2B,KAAK2zR,SAAS3zR,KAAKlB,OACfkB,KAAK4i2B,aACL5i2B,KAAKoq2B,aACApq2B,KAAKlB,OACNkB,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,kBAGnC,MACJ,IAAK,QACDni2B,KAAKii2B,mBAAqB,KAC1Bji2B,KAAK2i2B,kBAAkB/6X,EAAQ9oe,OAC/B8oe,EAAQ9oe,MAAQkB,KAAKlB,MAChBkB,KAAKii2B,oBAcNji2B,KAAK6i2B,iBAAiB7i2B,KAAKii2B,oBAC3Bji2B,KAAKwu2B,gBAAgBxu2B,KAAKii2B,sBAdG,kBAAlBr6X,EAAQ9oe,OACfkB,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAKi21B,eAAe,IAAIj+0B,KAAK4vd,EAAQ9oe,UAAW,GAC5E8oe,EAAQ9oe,MAAQkB,KAAKlB,QAGhB8oe,EAAQ9oe,QAAU,IAAIkZ,MAAM4vd,EAAQ9oe,OAAO+yd,gBAAgB,OAAS7xd,KAAKlB,QAC1E8oe,EAAQ9oe,MAAQkB,KAAKi21B,eAAe,IAAIj+0B,KAAK,GAAK4vd,EAAQ9oe,SAGlEkB,KAAK23pB,UAAY/vL,EAAQ9oe,MACzB8oe,EAAQ9oe,MAAQkB,KAAK4x2B,oBAAoB5x2B,KAAKk21B,WAAWtuX,EAAQ9oe,SAMjEkB,KAAK4i2B,YAAc5xrB,GAAkB42T,EAAQ9oe,SAC7CkB,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,iBAC3Bni2B,KAAKwu2B,gBAAgBxu2B,KAAKmi2B,kBAE9Bni2B,KAAKsy2B,iBAAiB,MAAM,GACxBty2B,KAAK+zpB,eACL/zpB,KAAKw5pB,oBAELx5pB,KAAK+iQ,WAAa/iQ,KAAKykpB,gBACvBzkpB,KAAKykpB,eAAgB,GAErBzkpB,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAGhB,MACJ,IAAK,iBACD/nE,KAAKo+nB,eAAiBx2J,EAAQw2J,eAC9BN,GAAMoF,eAAeljoB,KAAK61pB,cAC1B/3B,GAAMsF,YAAYpjoB,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAKgoX,aAC1Dh3M,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAAQgxG,GAAkBhxK,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,KAA+B,UAAxBr5B,KAAKo+nB,gBAC/Jp+nB,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,GAAGl1B,UAAU2C,IAAI,UAEjG,MACJ,IAAK,aACD9G,KAAKii2B,mBAAqB,KACtBr6X,EAAQg6W,YACR5h1B,KAAKwu2B,gBAAgB,MAEzBxu2B,KAAKiie,cAAc,CAAE2/W,WAAYh6W,EAAQg6W,aAAc,GACvD5h1B,KAAKk21B,WAAYl21B,KAAK0kc,aAAc5lc,OACpCkB,KAAKsy2B,iBAAiB,MAAM,GAC5B,MACJ,IAAK,WACGty2B,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKkv2B,aAAatnY,EAAQt2E,aACnDtxZ,KAAKo21B,cACLp21B,KAAKox2B,cAETpx2B,KAAKiie,cAAc,CAAE3wE,SAAUtxZ,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKkv2B,aAAatnY,EAAQt2E,cAAe,IAGrGtxZ,KAAKiie,cAAc,CAAE3wE,SAAU,OAAQ,GAE3C,MACJ,IAAK,aACGtxZ,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAEZ/nE,KAAK6i2B,iBAAiB7i2B,KAAKmi2B,kBAGvBni2B,KAAK0kc,aAAa5lc,QAAUkB,KAAKmi2B,iBACjCni2B,KAAK6i2B,iBAAiB,IAK1C,CACJ,EACAkL,EAAWxv2B,UAAU2w2B,aAAe,SAAUlP,GAC1C,OAAIA,aAAmBho1B,KACXgo1B,EAAQ1n1B,cAGR,GAAK0n1B,CAErB,EACA3yiB,IAAW,CACP63K,GAAS,OACV6oY,EAAWxv2B,UAAW,aAAS,GAClC8uT,IAAW,CACP63K,GAAS,OACV6oY,EAAWxv2B,UAAW,gBAAY,GACrC8uT,IAAW,CACP63K,IAAS,IACV6oY,EAAWxv2B,UAAW,kBAAc,GACvC8uT,IAAW,CACP63K,GAAS,OACV6oY,EAAWxv2B,UAAW,kBAAc,GACvC8uT,IAAW,CACP63K,GAAS,OACV6oY,EAAWxv2B,UAAW,cAAU,GACnC8uT,IAAW,CACP63K,IAAS,IACV6oY,EAAWxv2B,UAAW,eAAW,GACpC8uT,IAAW,CACP63K,IAAS,IACV6oY,EAAWxv2B,UAAW,sBAAkB,GAC3C8uT,IAAW,CACP63K,IAAS,IACV6oY,EAAWxv2B,UAAW,gBAAY,GACrC8uT,IAAW,CACP63K,GAAS,CAAC,IACX6oY,EAAWxv2B,UAAW,sBAAkB,GAC3C8uT,IAAW,CACP63K,GAAS,UACV6oY,EAAWxv2B,UAAW,sBAAkB,GAC3C8uT,IAAW,CACP63K,GAAS,OACV6oY,EAAWxv2B,UAAW,mBAAe,GACxC8uT,IAAW,CACP63K,GAAS,MACV6oY,EAAWxv2B,UAAW,cAAU,GACnC8uT,IAAW,CACP63K,IAAS,IACV6oY,EAAWxv2B,UAAW,yBAAqB,GAC9C8uT,IAAW,CACP63K,IAAS,IACV6oY,EAAWxv2B,UAAW,uBAAmB,GAC5C8uT,IAAW,CACP63K,GAAS,KACV6oY,EAAWxv2B,UAAW,YAAQ,GACjC8uT,IAAW,CACP63K,GAAS,OACV6oY,EAAWxv2B,UAAW,gBAAY,GACrC8uT,IAAW,CACP63K,GAAS,OACV6oY,EAAWxv2B,UAAW,aAAS,GAClC8uT,IAAW,CACP63K,GAAS,OACV6oY,EAAWxv2B,UAAW,WAAO,GAChC8uT,IAAW,CACP63K,GAAS,OACV6oY,EAAWxv2B,UAAW,WAAO,GAChC8uT,IAAW,CACP63K,IAAS,IACV6oY,EAAWxv2B,UAAW,iBAAa,GACtC8uT,IAAW,CACP63K,IAAS,IACV6oY,EAAWxv2B,UAAW,mBAAe,GACxC8uT,IAAW,CACP63K,IAAS,IACV6oY,EAAWxv2B,UAAW,kBAAc,GACvC8uT,IAAW,CACP63K,GAAS,CAAE95c,IAAK,MAAOD,MAAO,QAASD,KAAM,OAAQG,KAAM,OAAQC,OAAQ,SAAUC,OAAQ,SAAUu80B,aAAc,qBACtHiG,EAAWxv2B,UAAW,uBAAmB,GAC5C8uT,IAAW,CACP63K,GAAS,OACV6oY,EAAWxv2B,UAAW,4BAAwB,GACjD8uT,IAAW,CACPv0P,MACDi1yB,EAAWxv2B,UAAW,cAAU,GACnC8uT,IAAW,CACPv0P,MACDi1yB,EAAWxv2B,UAAW,eAAW,GACpC8uT,IAAW,CACPv0P,MACDi1yB,EAAWxv2B,UAAW,iBAAa,GACtC8uT,IAAW,CACPv0P,MACDi1yB,EAAWxv2B,UAAW,YAAQ,GACjC8uT,IAAW,CACPv0P,MACDi1yB,EAAWxv2B,UAAW,kBAAc,GACvC8uT,IAAW,CACPv0P,MACDi1yB,EAAWxv2B,UAAW,aAAS,GAClC8uT,IAAW,CACPv0P,MACDi1yB,EAAWxv2B,UAAW,eAAW,GACpC8uT,IAAW,CACPv0P,MACDi1yB,EAAWxv2B,UAAW,YAAQ,GACjC8uT,IAAW,CACPv0P,MACDi1yB,EAAWxv2B,UAAW,aAAS,GAClCwv2B,EAAa1gjB,IAAW,CACpBq4K,IACDqoY,EAEP,CAn7EgC,CAm7E9BrslB,IA39EF,IInFIxgC,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAgBIyu2B,KAAM,IAAIt11B,MAAOkB,UACjBipN,KAAQ,IAAInqN,MAAOgB,WACnBkpN,KAAO,IAAIlqN,MAAOc,cAClBupN,KAAO,IAAIrqN,MAAOoB,WAClBkpN,KAAS,IAAItqN,MAAOsB,aACpBipN,KAAS,IAAIvqN,MAAOwB,aACpBgpN,KAAc,IAAIxqN,MAAO0B,kBACzB+qe,IAAO,mBACPsvX,IAAuB,0BAEvBC,IAAQ,UAERrS,IAAa,gBACb0L,IAAiB,QACjB4G,IAAgB,cAChBxuX,IAAW,aACXr3P,IAAQ,UAGRwzmB,IAAS,WACT2L,IAAQ,UAGRG,IAAY,cAEZ7L,IAAW,kBAcXqS,IAAgC,SAAU1vpB,GAS1C,SAAS0vpB,EAAel11B,EAASy6C,GAC7B,IAAImnJ,EAAQ4D,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,KAOnD,OANA4gN,EAAMwupB,iBAAmB,KACzBxupB,EAAMuzpB,eAAgB,EACtBvzpB,EAAM8uR,WAAa9uR,EAAMoiR,gBACzBpiR,EAAMyrQ,YAAc,6DACpBzrQ,EAAMwzpB,iBAAmB,GACzBxzpB,EAAMyzpB,gBAAkBr11B,EACjB4hM,CACX,CAslDA,OAvmDAsgC,IAAUgznB,EAAgB1vpB,GAkB1B0vpB,EAAe312B,UAAU8/nB,aAAe,WAC/Br+nB,KAAKsG,SAGVmsD,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAYulwB,IAC5C,EAMAuS,EAAe312B,UAAUg6pB,QAAU,WAC/B/zc,EAAOjmN,UAAUg6pB,QAAQx4pB,KAAKC,KAClC,EAMAk02B,EAAe312B,UAAU05pB,SAAW,WAC5B1ioB,SAAS0+P,gBAAkBj0R,KAAK0kc,eAChC1kc,KAAK0kc,aAAaz7b,OAClBypD,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAY,CAACulwB,MAEpD,EACAuS,EAAe312B,UAAUkgoB,YAAc,SAAUvhoB,GAC7C,GAAK8C,KAAKsG,QAIV,GAAItG,KAAKs02B,mBAAqBt02B,KAAK20pB,cAC/B30pB,KAAK0kc,aAAa91L,YADtB,CAIAl8M,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAYulwB,KAC3C,IAAIwD,EAAgB,CAChBv7xB,MAAO5pE,MAEPA,KAAKs02B,mBACLt02B,KAAKuiC,KAAKrlC,GAEd8C,KAAKo/d,QAAQ,OAAQ+lY,EARrB,CASJ,EAMA+O,EAAe312B,UAAUklE,QAAU,WAC3BzjE,KAAK2ioB,kBACL3ioB,KAAKshoB,YAAc/rmB,SAAS8D,uBAAuB,gBAAgB,IAEnEr5B,KAAKu02B,aAAev02B,KAAKu02B,YAAY96yB,QAAQt1D,UAAUC,SAAS4v2B,OAChEh02B,KAAKu02B,YAAY9wyB,UACjB48Z,GAAOrge,KAAKw02B,iBACZx02B,KAAKw02B,qBAAkBvnyB,EACvBjtE,KAAK0hpB,cAAgB1hpB,KAAK6t2B,gBAAkB,GACvC78rB,GAAkBhxK,KAAK6v2B,WACxB7v2B,KAAK6v2B,YAQT7v2B,KAAK0kc,cACLo5L,GAAMqD,iBANU,CAChB,YAAa,YAAa,cAAe,OAAQ,eAAgB,QACjE,YAAe,MAAO,eAAkB,MAAO,WAAc,QAC7D,gBAAiB,QAAS,KAAQ,WAAY,aAAgB,OAGxBnhoB,KAAK0kc,cAE3C1kc,KAAKoj2B,eACDpj2B,KAAKo21B,cACL/1X,GAAOrge,KAAKo21B,cAEhBp21B,KAAKu02B,YAAcv02B,KAAKo21B,aAAe,KACvCp21B,KAAKy02B,gBAAgBhxyB,WAEzBzjE,KAAK002B,oBACL102B,KAAK0hpB,cAAgB,KACrB1hpB,KAAK6v2B,SAAW,KAChB7v2B,KAAKm9pB,gBAAkB,KACvBn9pB,KAAK8v2B,QAAU,KACf9v2B,KAAK202B,SAAW,KAChB302B,KAAKu02B,YAAc,KACnBv02B,KAAKim2B,YAAc,KACnBjm2B,KAAK04pB,eAAiB,KACtB56B,GAAMr6jB,QAAQ,CACVhK,QAASz5D,KAAK0kc,aACd05L,eAAgBp+nB,KAAKo+nB,eACrB3hgB,WAAYz8H,KAAKy8H,YAClBz8H,KAAKshoB,aACR98a,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,KAClC,EAOAk02B,EAAe312B,UAAUupE,OAAS,WAC9B9nE,KAAK402B,iBAAmB,CACpBrmsB,MAAO,QACPhkB,OAAQ,SACRt8H,IAAK,MACLsrT,IAAK,MACLO,KAAM,OACNt3L,KAAM,YACND,GAAI,UACJj/I,KAAM,YACNF,MAAO,aACPurI,KAAM,gBACNlZ,MAAO,eAEXz1H,KAAKov2B,iBAAmB,KACxBpv2B,KAAK+g2B,iBAAmB,KACxB/g2B,KAAK20pB,eAAgB,EACrB30pB,KAAKynT,aAAeznT,KAAKy5D,QAAQr8B,WAAU,GAC3Cp9B,KAAKyj2B,eAAiBzj2B,KAAK602B,qBAC3B702B,KAAK23pB,UAAY33pB,KAAKlB,MACI,kBAAdkB,KAAKqK,MACbrK,KAAKqK,IAAMrK,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKqK,OAEvB,kBAAdrK,KAAK6E,MACb7E,KAAK6E,IAAM7E,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAK6E,QAE5CmsK,GAAkB8vT,GAAQ9ge,KAAKy5D,QAAS,cAAgBqna,GAAQ9ge,KAAKy5D,QAAS,YAAYu7N,WAC3Fh1R,KAAKsG,SAAU,GAEnBk+M,EAAOjmN,UAAUsm2B,6BAA6B9k2B,KAAKC,MACnDA,KAAKkh1B,iBAAgB,GACrB,IAAIV,EAAa,CAAEx4d,YAAahoX,KAAKgoX,aACrChoX,KAAKoppB,KAAO,IAAI9tK,GAAK,iBAAkBklW,EAAYxg1B,KAAKwY,QACxDxY,KAAKiie,cAAc,CAAEj6G,YAAahoX,KAAKgoX,aAAehoX,KAAKoppB,KAAKvtK,YAAY,iBAAkB,GAC9Fr3R,EAAOjmN,UAAUupE,OAAO/nE,KAAKC,MAC7BA,KAAKou2B,qBACL5ppB,EAAOjmN,UAAUw/0B,6BAA6Bh+0B,KAAKC,MACnDA,KAAK802B,kBACD902B,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAGhB/nE,KAAK2zR,UAAS,IACV3zR,KAAK4i2B,YAAe5i2B,KAAKlB,QAASkB,KAAKmi2B,iBAA4C,WAAxBni2B,KAAKo+nB,gBAAgCp+nB,KAAKo+nB,gBAAmBp+nB,KAAKgoX,aAC7H81Q,GAAMnqW,SAAS3zR,KAAKmi2B,gBAAiBni2B,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBAEtF3ioB,KAAKiie,cAAc,CAAE3wE,SAAUtxZ,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKk21B,WAAWl21B,KAAKsxZ,cAAe,GAChGtxZ,KAAK+g2B,iBAAmB/g2B,KAAKlB,OAAS,IAAIkZ,MAAMhY,KAAKlB,OACxB,uBAAzBkB,KAAKy5D,QAAQ2nF,UACbphJ,KAAKmnV,SAAWnnV,KAAKy5D,QAAQz/B,aAAa,YAAch6B,KAAKy5D,QAAQrpD,aAAa,YAAc,IAChGpQ,KAAKy5D,QAAQlG,gBAAgB,YACxBvzD,KAAKsG,UACNtG,KAAK0kc,aAAav9G,UAAY,IAGV,UAAxBnnV,KAAKo+nB,gBACLN,GAAMS,eAAev+nB,KAAK0kc,aAAc1kc,KAAK61pB,aAAaz5jB,WAEzD40E,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAAQgxG,GAAkBhxK,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,KAA+B,UAAxBr5B,KAAKo+nB,gBAC/Jp+nB,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,GAAGl1B,UAAU2C,IAAI,oBAEjG9G,KAAK6ve,gBACT,EACAqkY,EAAe312B,UAAUo1R,SAAW,SAAUuujB,GAG1C,QAFkB,IAAdA,IAAwBA,GAAY,GACxCli1B,KAAK23pB,UAAY33pB,KAAK+02B,oBAAoB/02B,KAAKlB,QAC1CkB,KAAK4h1B,YAAc5h1B,KAAKg12B,aAAah12B,KAAK23pB,WAAY,CACvD,IAAI74pB,EAAQkB,KAAK+02B,oBAAoB/02B,KAAK23pB,WAC1C75B,GAAMnqW,SAAS3zR,KAAKqopB,kBAAkBvppB,GAAQkB,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBAC3F3ioB,KAAKiie,cAAc,CAAEnje,MAAOA,IAAS,EACzC,MAEQkyK,GAAkBhxK,KAAKlB,SACvBkB,KAAK23pB,UAAY,KACjB33pB,KAAKiie,cAAc,CAAEnje,MAAO,OAAQ,IAG5CkB,KAAKov2B,iBAAmBpv2B,KAAKlB,MAC7B0lN,EAAOjmN,UAAUik2B,YAAYzi2B,KAAKC,KAAMki1B,EAC5C,EACAgyB,EAAe312B,UAAUw22B,oBAAsB,SAAUj22B,GACrD,IAAIsd,EAAStd,EAUb,OATIkB,KAAKg12B,aAAal22B,GAClBsd,EAASpc,KAAK+y2B,cAAcj02B,IAGvBkB,KAAKqK,KAAOrK,KAAK6E,KAClB7E,KAAKi12B,oBAAmB,GAGhCj12B,KAAKk12B,gBAAgB941B,GACdA,CACX,EACA831B,EAAe312B,UAAU222B,gBAAkB,SAAUp22B,GACjDkB,KAAK2g1B,cAAe,EACf3g1B,KAAK4h1B,cACC9i1B,GAAWkB,KAAK6E,MAAY/F,GAAWkB,KAAKqK,OAC/CrK,KAAK2g1B,cAAe,GAG5B3g1B,KAAKwu2B,iBACT,EACA0F,EAAe312B,UAAUiw2B,gBAAkB,WACnCxu2B,KAAK2g1B,aACLjuxB,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAAYgyJ,KAG3C37L,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAYgyJ,KAE5C/2L,GAAWr3D,KAAK0kc,aAAc,CAAE,eAAgB1kc,KAAK2g1B,aAAe,QAAU,QAClF,EACAuzB,EAAe312B,UAAUw02B,cAAgB,SAAUj02B,GAC/C,IAAI0z2B,EAAU1z2B,EAmBd,OAlBIkB,KAAK4h1B,YACA5h1B,KAAKqK,KAAOrK,KAAK6E,KAClB7E,KAAKi12B,oBAAmB,GACxBzC,EAAUxy2B,KAAK6E,MAET/F,GAASkB,KAAKqK,IACpBmo2B,EAAUxy2B,KAAKqK,KAETvL,GAASkB,KAAK6E,MACpB2t2B,EAAUxy2B,KAAK6E,MAId7E,KAAKqK,KAAOrK,KAAK6E,MAClB7E,KAAKi12B,oBAAmB,GACxBzC,EAAU1z2B,GAGX0z2B,CACX,EACA0B,EAAe312B,UAAU022B,mBAAqB,SAAUE,GAChDA,GACA1izB,GAAS,CAACzyD,KAAK61pB,aAAa71lB,QAAQ,GAAIhgE,KAAK202B,UAAWlvX,KACxDzlf,KAAKuiC,QAGLmwB,GAAY,CAAC1yD,KAAK61pB,aAAa71lB,QAAQ,GAAIhgE,KAAK202B,UAAWlvX,IAEnE,EACAyuX,EAAe312B,UAAU8ppB,kBAAoB,SAAUvppB,GACnD,IAAIq01B,EACJ,OAAKnirB,GAAkBlyK,GAUZ,MARHq01B,EADsB,cAAtBnz1B,KAAK401B,aACS,CAAEz50B,OAAQnb,KAAK602B,qBAAsBpu2B,KAAM,WAAYyid,SAAU,OAGjE,CAAE/tc,OAAQnb,KAAK602B,qBAAsBpu2B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,WAE7F57N,KAAKy1wB,UAAU17vB,WAAWjb,EAAOq01B,GAKhD,EACA+gB,EAAe312B,UAAUy22B,aAAe,SAAUl22B,GAC9C,OAASkyK,GAAkBlyK,KAAWwF,OAAOxF,EACjD,EACAo12B,EAAe312B,UAAU6v2B,mBAAqB,WAC1C17yB,GAAY,CAAC1yD,KAAK0kc,cAhUL,gBAiUbhyY,GAAY,CAAC1yD,KAAK61pB,aAAaz5jB,WAlUrB,kBAmUV3pC,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAjUd,sBAkUd3pC,GAAS,CAACzyD,KAAK0kc,cAAe+/C,KAC9Bzkf,KAAKo12B,gBACT,EACAlB,EAAe312B,UAAU622B,eAAiB,WACtCp12B,KAAK202B,SAAW72O,GAAMuE,WAAW8gO,yCAA6Cnj2B,KAAK61pB,aAAaz5jB,UACpG,EACA83wB,EAAe312B,UAAUu22B,gBAAkB,WACvCp2Y,GAAa53d,IAAI9G,KAAK202B,SAAU,YAAa302B,KAAKq12B,YAAar12B,MAC/D0+d,GAAa53d,IAAI9G,KAAK61pB,aAAa71lB,QAAQ,GAAI,YAAahgE,KAAKs12B,YAAat12B,MAC9E0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,OAAQ1kc,KAAKy+nB,YAAaz+nB,MAC9D0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAKq+nB,aAAcr+nB,MAChEA,KAAKk11B,kBAAoBxz1B,GAAO1B,KAAKk11B,kBAAmBl11B,KAAK06e,YAC7D16e,KAAKy02B,gBAAkB,IAAIr6X,GAAep6e,KAAK0kc,aAAc,CACzD5/L,UAAW,UACXk2O,UAAWh7e,KAAKu12B,eAAeho2B,KAAKvN,MACpC06e,WAAY16e,KAAKk11B,mBAEzB,EACAgf,EAAe312B,UAAUm22B,kBAAoB,WACzCh2Y,GAAa73d,OAAO7G,KAAK202B,SAAU,uBAAwB302B,KAAKq12B,aAChE32Y,GAAa73d,OAAO7G,KAAK61pB,aAAa71lB,QAAQ,GAAI,uBAAwBhgE,KAAKs12B,aAC3Et12B,KAAK0kc,eACLg6B,GAAa73d,OAAO7G,KAAK0kc,aAAc,OAAQ1kc,KAAKy+nB,aACpD//J,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAKq+nB,eAErDr+nB,KAAKy02B,iBACLz02B,KAAKy02B,gBAAgBhxyB,SAE7B,EACAywyB,EAAe312B,UAAU6u2B,eAAiB,WAatC,OAXIpt2B,KAAKwjW,cAAcxjW,KAAKotO,YACJ,OAAhBptO,KAAKwY,QAAmC,UAAhBxY,KAAKwY,OACjBu1M,GAAS,oBAAqBsoQ,MAG9Br2d,KAAK2v2B,qBAAqB56Y,GAAU,GAAK/0d,KAAKwY,QAInDxY,KAAKotO,UAGxB,EACA8moB,EAAe312B,UAAUs22B,mBAAqB,WAC1C,IAEIx+uB,EADU,IAAI4+V,GAAqBj1d,KAAKwY,QACnBi9c,eAAe,CAAEvM,SAAU,QAOpD,OANIlpd,KAAKwjW,cAAcxjW,KAAKwj2B,cACbntuB,EAAa,IAAMr2H,KAAKw12B,cAAc,QAGtCx12B,KAAKwj2B,YAGxB,EACA0Q,EAAe312B,UAAUi32B,cAAgB,SAAU/u2B,GAQ/C,MANoB,OAAhBzG,KAAKwY,QAAmC,UAAhBxY,KAAKwY,OACbu1M,GAAS,oBAAqBsoQ,MAG9Br2d,KAAK2v2B,qBAAqB56Y,GAAU,GAAK/0d,KAAKwY,OAGtE,EACA071B,EAAe312B,UAAUilW,cAAgB,SAAU1kW,GAC/C,SAAIkyK,GAAkBlyK,IAA4B,kBAAVA,GAAuC,KAAjBA,EAAMyW,OAMxE,EACA2+1B,EAAe312B,UAAUox2B,qBAAuB,SAAUjwkB,EAAIpgS,GAC1D,MAA0B,cAAtBU,KAAK401B,aACE7moB,GAAS,QAAe/tN,KAAKwY,OAAS,+CAAgDknR,GAGtF3xE,GAAS,QAAe/tN,KAAKwY,OAAS,6CAA8CknR,EAEnG,EACAw0kB,EAAe312B,UAAU822B,YAAc,SAAUn42B,GACxC8C,KAAKsG,UAGVtG,KAAKoi2B,eAAgB,EACjBllY,GAAQK,UACRv9d,KAAK0kc,aAAa97b,aAAa,WAAY,IAE3C1L,EAAEkjS,gBAAkBpgS,KAAK202B,UACzBz32B,EAAEijE,iBAEFngE,KAAKsG,UAAYtG,KAAKw3c,WAClBx3c,KAAKy12B,mBACLjxpB,EAAOjmN,UAAUgkC,KAAKxiC,KAAKC,KAAM9C,GAEjC8C,KAAKs02B,kBACLt02B,KAAKm5pB,WAAWj8pB,IAGhB8C,KAAK0kc,aAAa91L,QAClB5uQ,KAAK8u2B,cAAc,OAAQ5x2B,GAC3Bu1D,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAY,CAACulwB,QAGjD3h2B,KAAKoi2B,eAAgB,EACzB,EACA8R,EAAe312B,UAAU+22B,YAAc,SAAUp42B,GACxC8C,KAAKsG,UAGNpJ,EAAEkjS,gBAAkBpgS,KAAK61pB,aAAa71lB,QAAQ,IAC9C9iE,EAAEijE,iBAEFngE,KAAKsG,UAAYtG,KAAKw3c,WAClBx3c,KAAKs02B,mBACLt02B,KAAKm5pB,WAAWj8pB,GAEf8zK,GAAkBhxK,KAAKo21B,eACxBp21B,KAAK8u2B,cAAc,OAAQ5x2B,IAGvC,EACAg32B,EAAe312B,UAAUif,KAAO,SAAU/W,EAAMvJ,GACvC8C,KAAKsG,SAAWtG,KAAKw3c,WAAcx3c,KAAKsG,UAI5B,SAATG,GAAoBzG,KAAKw02B,gBAMnBx02B,KAAKu1pB,WACPv1pB,KAAKs02B,mBACLt02B,KAAKuiC,KAAKrlC,GAEdsnN,EAAOjmN,UAAUif,KAAKzd,KAAKC,MAC3BA,KAAK8u2B,cAAc,OAAQ5x2B,KAVvB8C,KAAKy12B,mBACLz12B,KAAKuiC,KAAKrlC,GAEd8C,KAAK8u2B,cAAc,OAAQ5x2B,IAUvC,EACAg32B,EAAe312B,UAAUymY,OAAS,SAAU9nY,GACpC8C,KAAKy12B,mBACLjxpB,EAAOjmN,UAAUgkC,KAAKxiC,KAAKC,KAAM9C,GACjC8C,KAAKwd,KAAK,OAAQ,OAEbxd,KAAKs02B,mBACVt02B,KAAKuiC,KAAKrlC,GACVsnN,EAAOjmN,UAAUif,KAAKzd,KAAKC,KAAM,KAAM9C,GACvC8C,KAAK8u2B,cAAc,OAAQ,OAG3B9u2B,KAAKwd,KAAK,KAAMtgB,EAExB,EACAg32B,EAAe312B,UAAUm32B,aAAe,WACpC,IAAIhtZ,EACsB,cAAtB1od,KAAK401B,cACL501B,KAAK602B,qBAAqBny2B,QAAQ1C,KAAKqsd,YAAarsd,KAAK212B,mBAC3B,KAA1B312B,KAAKo02B,mBACLp02B,KAAKo02B,iBAAmBp02B,KAAK602B,sBAEjCnsZ,EAAa1od,KAAKy1wB,UAAU19vB,UAAU/X,KAAK0kc,aAAa5lc,MAAO,CAC3Dqc,OAAQnb,KAAKo02B,iBAAkB3t2B,KAAM,cAIzCiid,EAAa1od,KAAKy1wB,UAAU19vB,UAAU/X,KAAK0kc,aAAa5lc,MAAO,CAC3Dqc,OAAQnb,KAAK602B,qBAAsBpu2B,KAAM,WAAYm1N,SAAU,YAGvE,IAAI98N,EAAQkyK,GAAkBhxK,KAAKlB,OAAqC,KAA5BkB,KAAK0kc,aAAa5lc,MAC1D4pd,EAAa,IAAI1wc,KAAShY,KAAKlB,MACnCkB,KAAKov2B,iBAAmBtw2B,EACxBkB,KAAKiw2B,YAAcjy0B,GAAc,MAAO,CAAE9xB,UAjepC,YAiewDwmC,MAAO,CAAE,SAAY,OACnF,IAAIroC,EAAMrK,KAAKg/E,UAAUlgF,GACrB+F,EAAM7E,KAAK412B,QAAQ922B,GACnB+22B,EAAczmB,GAAergM,gBAAgB/upB,KAAKg+B,cAAe3zB,EAAKxF,EAAK7E,KAAKy1wB,UAAWz1wB,KAAKot2B,iBAAkBpt2B,KAAKi1D,MAC3Hj1D,KAAK6t2B,gBAAkBgI,EAAY5nwB,WACnCjuG,KAAK8v2B,QAAU+F,EAAYvnxB,KAC3Bj3B,GAAWr3D,KAAK8v2B,QAAS,CAAE,KAAQ,UAAW,cAAe,QAAS,GAAM9v2B,KAAKy5D,QAAQ3jD,GAAK,aAC9FwyI,GAAO,CAACuttB,EAAYvnxB,MAAOtuF,KAAKiw2B,aAChCjw2B,KAAK812B,qBACL,IAAI9tY,EAAc,CAAEr0a,SAAU,IAAKuvJ,SAAU,IAAMwqpB,KACnD1t2B,KAAK6v2B,SAAW/nY,GAAa9ne,KAAKiw2B,YAAajoY,GAC/Choe,KAAK0hpB,cAAgB1hpB,KAAKiw2B,YAAYxi1B,iBAAiB,IAAMig1B,IACjE,EACAwG,EAAe312B,UAAUuw2B,cAAgB,SAAUro2B,EAAMvJ,GAIrD,GAHIgge,GAAQK,UACRv9d,KAAKy5D,QAAQ7wD,aAAa,WAAY,YAE7B,SAATnC,GACKzG,KAAKw3c,UAAYx3c,KAAKo21B,eACvB3jyB,GAAS,CAACzyD,KAAKo21B,cAAe2d,KAC9B18yB,GAAWr3D,KAAKo21B,aAAc,CAAE,GAAMp21B,KAAKy5D,QAAQ3jD,GAAK,mBAI5D,IAAK9V,KAAKw3c,WACNx3c,KAAKw02B,gBAAkBx20B,GAAc,MAAO,CACxC9xB,UAAWu4e,IAAO,IAAMuvX,IACxBth0B,MAAO,CAAE,GAAM1yC,KAAKy5D,QAAQ3jD,GAAK,aAAc,MAAS,uCAEvDk7J,GAAkBhxK,KAAK6O,YACxB7O,KAAKw02B,gBAAgBto2B,WAAa,IAAMlM,KAAK6O,WAE5CmiK,GAAkBhxK,KAAKi1D,OAASj1D,KAAKi1D,KAAO,IAC7Cj1D,KAAK012B,eACLpttB,GAAO,CAACtoJ,KAAKiw2B,aAAcjw2B,KAAKw02B,kBAEpCj/0B,SAASwK,KAAKxoB,YAAYvX,KAAKw02B,iBAC/Bx02B,KAAK+12B,mBACL/12B,KAAKk/pB,cACLl/pB,KAAKg22B,wBACLh22B,KAAKktQ,UAAUhwQ,KACVgge,GAAQK,UAAaL,GAAQK,WAAav9d,KAAKkj2B,iBAChDlj2B,KAAKu02B,YAAY75O,gBAAgB16nB,KAAK0kc,cAEtCw4B,GAAQK,UAAYv9d,KAAKkj2B,iBACzBlj2B,KAAKw02B,gBAAgBnw2B,MAAMf,KAAO,OAElC45d,GAAQK,UAAU,CAClB,IAAIioN,EAAaxlrB,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW,kBACxDs5qB,EAAWnhrB,MAAMmkD,QAAUxoD,KAAKwoD,OAAS,GAAG7nD,WAC5CX,KAAKi22B,UAAU1+1B,YAAYiuqB,EAC/B,CAGZ,EACA0uL,EAAe312B,UAAU2uQ,UAAY,SAAUhwQ,GAC3C,IAAI0jN,EAAQ5gN,KACZA,KAAKim2B,YAAc,CACfnlhB,QAAQ,EACRthF,MAAOx/P,KAAKu02B,YACZr7yB,MAAOh8D,GAAK,MAEhB,IAAIyyW,EAAY3vW,KAAKim2B,YACrBjm2B,KAAKo/d,QAAQ,OAAQzvH,GAAW,SAAUA,GAEtC,GADA/uJ,EAAMqlpB,YAAct2f,GACf/uJ,EAAMqlpB,YAAYnlhB,SAAWlgI,EAAM42P,SAAU,CAC9C,IAAIuxO,EAAgB,CAChBlorB,KAAM,SACN8yD,SA9hBI,KAgiBa,MAAjBitJ,EAAMp4J,OACNo4J,EAAM2zpB,YAAY/21B,KAAK,IAAI80G,GAAUy2jB,GAAgBnoe,EAAMnnJ,SAG3DmnJ,EAAM2zpB,YAAY/21B,KAAK,IAAI80G,GAAUy2jB,GAAgB,MAEzDt2nB,GAAS,CAACmuJ,EAAMi1c,aAAaz5jB,WAAY,CAAC63wB,MAC1C58yB,GAAWupJ,EAAM8jP,aAAc,CAAE,gBAAiB,SAClDrtY,GAAWupJ,EAAM8jP,aAAc,CAAE,YAAa9jP,EAAM8jP,aAAa5ub,GAAK,aACtEuhD,GAAWupJ,EAAM8jP,aAAc,CAAE,gBAAiB9jP,EAAM8jP,aAAa5ub,KACrE4od,GAAa53d,IAAIyuB,SAAU,uBAAwBqrL,EAAMuxpB,qBAAsBvxpB,EACnF,CACJ,GACJ,EACAszpB,EAAe312B,UAAU4z2B,qBAAuB,SAAUj5yB,GACtD,IAAI/2C,EAAS+2C,EAAM/2C,QACb6uJ,GAAkBhxK,KAAKu02B,eAAiBv02B,KAAK61pB,aAAaz5jB,UAAUh4F,SAAS+d,IAA0B,cAAf+2C,EAAMzyD,MAC/FzG,KAAKu02B,YAAY96yB,SAAWz5D,KAAKu02B,YAAY96yB,QAAQr1D,SAAS+d,KAA6B,eAAf+2C,EAAMzyD,MACnFyyD,EAAMiH,iBAEJ2ga,GAAQ3+c,EAAQ,SAAWniB,KAAKu02B,aAAev02B,KAAKu02B,YAAY96yB,QAAQ3jD,GAAK,QAAWqM,IAAWniB,KAAK0kc,cACvGvib,IAAWniB,KAAK202B,UAAa3jsB,GAAkBhxK,KAAK61pB,eAAiB1zoB,IAAWniB,KAAK61pB,aAAaz5jB,WAAcj6E,EAAOhe,UAAUC,SAAS,iBAMxI+d,IAAWniB,KAAK0kc,eAChBw4B,GAAQK,WACTv9d,KAAK20pB,cAAkBp/nB,SAAS0+P,gBAAkBj0R,KAAK0kc,eAAkBw4B,GAAQpzd,MAA8B,SAAtBozd,GAAQ5hZ,KAAKz6E,OAC/FshB,IAAWniB,KAAKu02B,YAAY96yB,UARnCz5D,KAAKs02B,oBACLt02B,KAAKuiC,KAAK22B,GACVl5D,KAAKi4pB,WASjB,EACAi8M,EAAe312B,UAAU+12B,gBAAkB,WACvC,SAAQt02B,KAAKw02B,kBAAmBx02B,KAAKw02B,gBAAgBrw2B,UAAUC,SAAS,GAAKqgf,KACjF,EACAyvX,EAAe312B,UAAUk32B,gBAAkB,WACvC,SAAQz12B,KAAKo21B,eAAgBp21B,KAAKo21B,aAAajy1B,UAAUC,SAAS,GAAK2v2B,KAC3E,EACAG,EAAe312B,UAAU2gqB,YAAc,WACnC,IAAIt+c,EAAQ5gN,KACZA,KAAKow2B,eAAiBpw2B,KAAK61pB,aAAaz5jB,UAAUl5F,wBAC9Cg6d,GAAQK,WACRv9d,KAAKi22B,UAAYj40B,GAAc,OAC/Bh+B,KAAKi22B,UAAU/p2B,UAAiBu4e,IAAO,gBACvClvd,SAASwK,KAAK7zB,WAAa,IAAM211B,IACjC7h2B,KAAKi22B,UAAU5x2B,MAAMqmB,QAAU,QAC/B6K,SAASwK,KAAKxoB,YAAYvX,KAAKi22B,YAgDnC,GA7CAj22B,KAAKu02B,YAAc,IAAI17lB,GAAM74Q,KAAKw02B,gBAAiB,CAC/Cjx2B,MAAOvD,KAAKqw2B,gBACZ7nzB,OAAQxoD,KAAKwoD,OACbm0kB,WAAY,YACZP,UAAWl/J,GAAQK,SAAW,CAAEnwd,EAAG,MAAO6hB,EAAG,OAAU,CAAE7hB,EAAG,OAAQ6hB,EAAG,QACvEgsmB,SAAU/9J,GAAQK,SAAWhoc,SAASwK,KAAO//B,KAAK61pB,aAAaz5jB,UAC/DhnF,SAAU8nd,GAAQK,SAAW,CAAEnwd,EAAG,SAAU6hB,EAAG,UAAa,CAAE7hB,EAAG,OAAQ6hB,EAAG,UAC5E8+c,UAAW/te,KAAK+te,UAChBz2d,QATS,EAUTq3H,KAAM,WACFiyE,EAAM4zpB,gBAAgBnw2B,MAAMotI,WAAa,UACzCh/E,GAAS,CAACmuJ,EAAM+zpB,UAAW/S,KACtB1kY,GAAQK,WACT38Q,EAAMg0pB,iBAAmBlz2B,GAAOk/M,EAAMg0pB,iBAAkBh0pB,EAAM85R,YAC9D95R,EAAM8xpB,WAAa,IAAIt4X,GAAex5R,EAAMi1c,aAAaz5jB,UAAW,CAChE4+Y,UAAWp6R,EAAMs1pB,oBAAoB3o2B,KAAKqzM,GAC1C85R,WAAY95R,EAAMg0pB,iBAClB9vmB,UAAW,YAGvB,EAAGrvI,MAAO,WACN/iE,GAAY,CAACkuJ,EAAM+zpB,UAAW/S,KAC9BhhpB,EAAMu1pB,uBACNv1pB,EAAM8jP,aAAanxY,gBAAgB,yBACnC1sD,GAAO+5M,EAAM2zpB,YAAY96yB,SACzBmnJ,EAAM2zpB,YAAY9wyB,UAClBm9I,EAAM4zpB,gBAAgB711B,UAAY,GAClCiiM,EAAMqvpB,YAAcrvpB,EAAM4zpB,qBAAkBvnyB,EACxC2zI,EAAM8xpB,YACN9xpB,EAAM8xpB,WAAWjvyB,SAEzB,EAAGk+lB,mBAAoB,WACdzkM,GAAQK,UACT38Q,EAAMr+K,MAEd,IAEA26b,GAAQK,UAAYv9d,KAAKkj2B,gBACzBlj2B,KAAKu02B,YAAY96yB,QAAQp1D,MAAMqmB,QAAU,OACzC1qB,KAAKu02B,YAAY96yB,QAAQp1D,MAAM2mB,UAAY,OAC3ChrB,KAAKu02B,YAAY96yB,QAAQp1D,MAAMd,MAAQ,QAGvCvD,KAAKu02B,YAAY96yB,QAAQp1D,MAAM2mB,UAAYqi1B,IAE3CnwY,GAAQK,UAAYv9d,KAAKkj2B,eAAgB,CACzC,IAAIkT,EAAep40B,GAAc,MAAO,CAAE9xB,UAAW,8BACjD051B,EAAc5l2B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW,mBACrDok2B,EAAiBtw2B,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAW,kBAC7Dok2B,EAAel/1B,YAAc,cAC7B,IAAIq11B,EAAiBzm2B,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAW,kBAC7Dwyd,GAAa53d,IAAI2/1B,EAAgB,uBAAwBzm2B,KAAKq22B,qBAAsBr22B,MACpF,IAAIs22B,EAAct22B,KAAKw02B,gBAAgBr/1B,cAAc,cACrDyw1B,EAAYru1B,YAAYkv1B,GACxBb,EAAYru1B,YAAY+41B,GACxB8F,EAAa7+1B,YAAYqu1B,GACzBwQ,EAAa7+1B,YAAY++1B,GACzBt22B,KAAKw02B,gBAAgBv+1B,aAAamg2B,EAAcp22B,KAAKw02B,gBAAgB1thB,kBACzE,CACJ,EACAothB,EAAe312B,UAAU832B,qBAAuB,SAAUn52B,GACtD8C,KAAKuiC,MACT,EACA2x0B,EAAe312B,UAAUqrf,aAAe,SAAUrmf,GAW9C,MAVqB,kBAAVA,EACPA,EAAQsgd,GAAWtgd,GAEG,kBAAVA,IAKZA,EAAQ,QAELA,CACX,EACA2w2B,EAAe312B,UAAU8x2B,cAAgB,WACrC,IAAI9s2B,EAAQvD,KAAK4pf,aAAa5pf,KAAKuD,OAC/BA,EAAMmB,QAAQ,MAAQ,IAEtBnB,GADiBvD,KAAKow2B,eAAe7s2B,MAAQpB,WAAWoB,GAAS,KAC9C5C,WAAa,MAEpC,OAAO4C,CACX,EACA2w2B,EAAe312B,UAAUu32B,mBAAqB,WAC1Cp3Y,GAAa53d,IAAI9G,KAAKiw2B,YAAa,QAASjw2B,KAAK+4pB,aAAc/4pB,MAC1Dk9d,GAAQK,WACTmB,GAAa53d,IAAI9G,KAAKiw2B,YAAa,YAAajw2B,KAAKiub,YAAajub,MAClE0+d,GAAa53d,IAAI9G,KAAKiw2B,YAAa,WAAYjw2B,KAAKsgW,aAActgW,MAE1E,EACAk02B,EAAe312B,UAAU432B,qBAAuB,WACxCn22B,KAAKiw2B,cACLvxY,GAAa73d,OAAO7G,KAAKiw2B,YAAa,QAASjw2B,KAAK+4pB,cACpDr6L,GAAa73d,OAAO0uB,SAAU,uBAAwBv1B,KAAKmy2B,sBACtDj1Y,GAAQK,WACTmB,GAAa53d,IAAI9G,KAAKiw2B,YAAa,YAAajw2B,KAAKiub,YAAajub,MAClE0+d,GAAa53d,IAAI9G,KAAKiw2B,YAAa,WAAYjw2B,KAAKsgW,aAActgW,OAG9E,EACAk02B,EAAe312B,UAAU0vb,YAAc,SAAU/0X,GAC7C,IAAIkgmB,EAAYt4L,GAAQ5na,EAAM/2C,OAAQ,IAAMur1B,KAC5C1t2B,KAAKu22B,aAAan9M,EAAWm0M,IACjC,EACA2G,EAAe312B,UAAU+hW,aAAe,WACpCtgW,KAAKw22B,gBAAgBjJ,IACzB,EACA2G,EAAe312B,UAAUg42B,aAAe,SAAU3+jB,EAAI1rS,GAC9ClM,KAAKsG,SAAWtG,KAAKk5pB,UAAUthX,KAAQA,EAAGzzS,UAAUC,SAAS8H,KAC7DlM,KAAKw22B,gBAAgBtq2B,GACrBumD,GAAS,CAACmlP,GAAK1rS,GAEvB,EACAgo2B,EAAe312B,UAAU4x2B,eAAiB,WACtC,IAAI3s2B,EAASvC,SAASos2B,IAAgB,IAClC/sM,EAActgqB,KAAKw02B,gBAAgBtx2B,wBAAwBM,OAC/D,OAAI05d,GAAQK,UAAYv9d,KAAKkj2B,eAClB5iM,EAGAA,EAAc98pB,EAASA,EAAS88pB,CAE/C,EACA4zM,EAAe312B,UAAUkj2B,YAAc,SAAUvk2B,GAC7CsnN,EAAOjmN,UAAUkj2B,YAAY1h2B,KAAKC,KAAM9C,IACnC8C,KAAKlB,OAASkB,KAAKlB,MAAMgB,cAAgBE,KAAK+g2B,mBAAqB/g2B,KAAK+g2B,iBAAiBjh2B,aAC1FE,KAAKov2B,iBAAmBpv2B,KAAKlB,MAC7BkB,KAAKu/pB,cAAc,QACnBv/pB,KAAK+g2B,iBAAmB/g2B,KAAKlB,OAAS,IAAIkZ,MAAMhY,KAAKlB,OAE7D,EACAo12B,EAAe312B,UAAU4ruB,YAAc,SAAUjtuB,GAC7C8C,KAAKu/pB,cAAc,SACdv/pB,KAAK+g2B,oBAAsB/g2B,KAAKlB,QACjCkB,KAAK2g2B,YAAc,CACf7h2B,MAAOkB,KAAKlB,MAAOo6D,MAAOh8D,GAAK,KAC/B+2pB,cAAejjf,GAAkB9zK,GACjCu8D,QAASz5D,KAAKy5D,SAElBz5D,KAAK+12B,mBACL/12B,KAAKo/d,QAAQ,SAAUp/d,KAAK2g2B,aAC5B3g2B,KAAK+g2B,iBAAmB/g2B,KAAK8g2B,aAAe9g2B,KAAKlB,MAEzD,EACAo12B,EAAe312B,UAAUy32B,sBAAwB,WAC7C,IAAIp3M,EAAe5+pB,KAAKm9pB,gBACnBnsf,GAAkB4tf,GAGd5+pB,KAAKw02B,iBAAmBx02B,KAAKi21B,eAAej21B,KAAKsxZ,WACtDtxZ,KAAKox2B,cAHLpx2B,KAAKqx2B,cAAczyM,EAK3B,EACAs1M,EAAe312B,UAAU8y2B,cAAgB,SAAU53yB,GAC/C,IAAIqomB,EAAa9hqB,KAAKmw2B,iBAClBx6K,EAAcl8nB,EAAQ27P,mBACtB5xT,EAASmyrB,EAAcA,EAAYp/O,UAAY98Y,EAAQ88Y,UACvDr7X,EAAazhB,EAAQv2D,wBAAwBM,OAC5CA,EAASi2D,EAAQ88Y,UAAaurN,EAC3B5kM,GAAQK,UAAYv9d,KAAKkj2B,eACPlj2B,KAAKw02B,gBAAgBr/1B,cAAc,cACzCsmF,UAAYk6lB,EAAenyrB,GAAUs+pB,EAvvB9C,EAuvB0E5mlB,EAvvB1E,GAuvBwG13E,EAG3GxD,KAAKw02B,gBAAgB/4wB,UAAYk6lB,EAAenyrB,GAAUs+pB,EA1vBvD,EA0vBmF5mlB,EA1vBnF,GA0vBiH13E,EAIxHxD,KAAKw02B,gBAAgB/4wB,UAAY,CAEzC,EACAy4wB,EAAe312B,UAAU6y2B,YAAc,WACnC,IAAI33yB,EACAhvC,EAAQzqB,KAAKw02B,gBAAgB/m1B,iBAAiB,IAAMig1B,KACxD,GAAIjj1B,EAAM3sB,QAAU,EAAG,CACnBkC,KAAKm02B,eAAgB,EACrB,IAAI7C,EAActx2B,KAAK6t2B,gBAAgB,GACnC0D,EAAavx2B,KAAK4xd,cAAc5xd,KAAKi21B,eAAej21B,KAAKsxZ,WAAWj5Y,UACxEohD,EAAUhvC,EAAMvpB,KAAKC,OAAOow2B,EAAaD,IAA4B,IAAZtx2B,KAAKi1D,OAClE,MAEIj1D,KAAKw02B,gBAAgB/4wB,UAAY,EAEhCu1E,GAAkBv3G,GAInBz5D,KAAKw02B,gBAAgB/4wB,UAAY,EAHjCz7F,KAAKqx2B,cAAc53yB,EAK3B,EACAy6yB,EAAe312B,UAAUghqB,cAAgB,SAAU94pB,GAC/C,GAAa,SAATA,EACAzG,KAAK0kc,aAAa5lc,MAAQkB,KAAK8i2B,qBAAuB9i2B,KAAKqopB,kBAAkBropB,KAAKy22B,mBAClFz22B,KAAKiie,cAAc,CAAEnje,MAAOkB,KAAKy22B,oBAAqB,OAErD,CACD,IAAIl7W,EAAUv7f,KAAKqopB,kBAAkB,IAAIrwoB,KAAKhY,KAAK6t2B,gBAAgB7t2B,KAAK8zpB,eACxEh2B,GAAMnqW,SAAS4nO,EAASv7f,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBACrE3ioB,KAAK8i2B,qBAAuB9i2B,KAAK0kc,aAAa5lc,MAC9CkB,KAAKiie,cAAc,CAAEnje,MAAO,IAAIkZ,KAAKhY,KAAK6t2B,gBAAgB7t2B,KAAK8zpB,gBAAiB,GAC5E9zpB,KAAK4i2B,YACL5i2B,KAAKoq2B,YAEb,CACApq2B,KAAKmgoB,iBACT,EACA+zO,EAAe312B,UAAUk42B,gBAAkB,WACvC,IAAI332B,EAAQ,KAOZ,OALIA,EADAkB,KAAKg12B,aAAah12B,KAAKov2B,kBACfpv2B,KAAK022B,gBAAgB122B,KAAKov2B,kBAG1Bpv2B,KAAK8g2B,aAEV9g2B,KAAK+02B,oBAAoBj22B,EACpC,EACAo12B,EAAe312B,UAAU6r2B,WAAa,WAClCpq2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,kBAEhB,EACAmsyB,EAAe312B,UAAUm42B,gBAAkB,SAAU532B,GACjD,GAAIkB,KAAKg12B,aAAal22B,GAAQ,CAC1B,IAAIssB,EAAMprB,KAAK8g2B,aAAa5n1B,UACxBiS,EAAQnrB,KAAK8g2B,aAAa9n1B,WAC1BkS,EAAOlrB,KAAK8g2B,aAAaho1B,cACzBuS,EAAOvsB,EAAMsa,WACb6/J,EAAUn6K,EAAMwa,aAChB4/J,EAAUp6K,EAAM0a,aACpB,OAAO,IAAIxB,KAAKkT,EAAMC,EAAOC,EAAKC,EAAM4tJ,EAASC,EACrD,CAEI,OAAOl5K,KAAK8g2B,YAEpB,EACAoT,EAAe312B,UAAUw6pB,aAAe,SAAU7/lB,GAC9C,IAAI/2C,EAAS+2C,EAAM/2C,OACfy1R,EAAK53S,KAAKm9pB,gBAAkBr8L,GAAQ3+c,EAAQ,IAAMur1B,KAClD91jB,GAAMA,EAAGzzS,UAAUC,SAASsp2B,OAC5B1t2B,KAAK2y2B,UAAY/6jB,EAAGxnS,aAAa,cACjCpQ,KAAKuiC,KAAK22B,IAEdl5D,KAAK42pB,aAAah/W,EAAI1+O,EAC1B,EACAg7yB,EAAe312B,UAAUq4pB,aAAe,SAAUh/W,EAAI1+O,GAClD,GAAIl5D,KAAKk5pB,UAAUthX,KAAQA,EAAGzzS,UAAUC,SAASw91B,KAAS,CACtD5h2B,KAAKm9pB,gBAAkBvlX,EACvB,IAAIjrR,EAAQzsB,MAAM3B,UAAUqC,MAAMb,KAAKC,KAAK0hpB,eAAeh9oB,QAAQkzS,GACnE53S,KAAK8zpB,YAAcnnoB,EACnB3sB,KAAKov2B,iBAAmB,IAAIp31B,KAAKhY,KAAK6t2B,gBAAgB7t2B,KAAK8zpB,cAC3DrhmB,GAAS,CAACzyD,KAAKm9pB,iBAAkBykM,KACjC5h2B,KAAKm9pB,gBAAgBv0pB,aAAa,gBAAiB,QACnD5I,KAAKmquB,YAAYjxqB,EACrB,CACJ,EACAg7yB,EAAe312B,UAAUo42B,mBAAqB,WAC1C,IAAIr6E,EAActrnB,GAAkBhxK,KAAKw02B,iBAAmBx02B,KAAKiw2B,YAAcjw2B,KAAKw02B,gBACpF,IAAKxjsB,GAAkBsrnB,GAAc,CACjC,IAAI7xwB,EAAQ6xwB,EAAY7uwB,iBAAiB,IAAMig1B,KAC/C,GAAIjj1B,EAAM3sB,OACN,IAAK,IAAIX,EAAI,EAAGA,EAAIstB,EAAM3sB,OAAQX,IAC9B,GAAI6C,KAAK6t2B,gBAAgB1w2B,MAAS6C,KAAKov2B,iBAAmB,CACtD3k1B,EAAMttB,GAAGyL,aAAa,gBAAiB,QACvC5I,KAAKm9pB,gBAAkB1yoB,EAAMttB,GAC7B6C,KAAK8zpB,YAAc32pB,EACnB6C,KAAK422B,0BACL,KACJ,CAGZ,CACJ,EACA1C,EAAe312B,UAAUq42B,wBAA0B,YAC1C5lsB,GAAkBhxK,KAAKm9pB,kBAAoBn9pB,KAAKlB,MACjDu4D,GAAWr3D,KAAK0kc,aAAc,CAAE,wBAAyB1kc,KAAKm9pB,gBAAgB/spB,aAAa,QAG3FpQ,KAAK0kc,aAAanxY,gBAAgB,wBAE1C,EACA2gzB,EAAe312B,UAAUw32B,iBAAmB,WACxC/12B,KAAKm9pB,gBAAkB,KACvBn9pB,KAAK622B,sBACL722B,KAAK222B,qBACA3lsB,GAAkBhxK,KAAKm9pB,mBACxB1qmB,GAAS,CAACzyD,KAAKm9pB,iBAAkBykM,KACjC5h2B,KAAKm9pB,gBAAgBv0pB,aAAa,gBAAiB,QAE3D,EACAsr2B,EAAe312B,UAAUs42B,oBAAsB,WAE3C,GADA722B,KAAKw22B,gBAAgBjJ,MAChBv8rB,GAAkBhxK,KAAKw02B,iBAAkB,CAC1C,IAAI/p1B,EAAQzqB,KAAKw02B,gBAAgB/m1B,iBAAiB,IAAMm00B,KACpDn30B,EAAM3sB,SACN40D,GAAYjoC,EAAOm30B,KACnBn30B,EAAM,GAAG8oC,gBAAgB,iBAEjC,CACJ,EACA2gzB,EAAe312B,UAAUi42B,gBAAkB,SAAUtq2B,GACjD,IAAIolH,EAActxH,KAAK822B,iBAAiB5q2B,GACpColH,GAAeA,EAAYxzH,QAC3B40D,GAAY4+D,EAAaplH,EAEjC,EACAgo2B,EAAe312B,UAAUu42B,iBAAmB,SAAU5q2B,GAClD,IACIolH,EADAgrqB,EAActrnB,GAAkBhxK,KAAKw02B,iBAAmBx02B,KAAKiw2B,YAAcjw2B,KAAKw02B,gBAKpF,OAHKxjsB,GAAkBsrnB,KACnBhrqB,EAAcgrqB,EAAY7uwB,iBAAiB,IAAMvhB,IAE9ColH,CACX,EACA4ivB,EAAe312B,UAAU26pB,UAAY,SAAUthX,GAC3C,OAAQA,GAAMA,EAAGzzS,UAAUC,SAASsp2B,OAAe91jB,EAAGzzS,UAAUC,SAASqhf,IAC7E,EACAyuX,EAAe312B,UAAUw42B,kBAAoB,SAAUj42B,EAAO4sB,EAAO8B,GACjE,IAAIpC,EAAMtsB,EAAMoa,UACZiS,EAAQrsB,EAAMka,WACdkS,EAAOpsB,EAAMga,cACbkgK,EAAQl6K,EAAMsa,WACd6/J,EAAUn6K,EAAMwa,aAChB4/J,EAAUp6K,EAAM0a,aAChBm/J,EAAe75K,EAAM4a,kBACzB,OAAIgS,EACe,cAAX8B,EACO,IAAIxV,KAAKkT,EAAMC,EAAOC,EAAK,EAAG,EAAG,GAGjC,IAAIpT,KAAKkT,EAAMC,EAAOC,EAAK,GAAI,GAAI,IAIvC,IAAIpT,KAAKkT,EAAMC,EAAOC,EAAK4tJ,EAAOC,EAASC,EAASP,EAEnE,EACAu7rB,EAAe312B,UAAUygF,UAAY,SAAUvyB,GAC3C,IAAIuqzB,EACAhp1B,EACAip1B,EAAUj32B,KAAKqK,IACfvL,EAAiB,OAAT2tD,EAAgB,IAAIz0C,KAASy0C,EAezC,OAdM3tD,EAAMoa,aAAe+91B,EAAQ/91B,YAAcpa,EAAMka,cAAgBi+1B,EAAQj+1B,aAC1Ela,EAAMga,iBAAmBm+1B,EAAQn+1B,gBAAqB,IAAId,KAAKlZ,EAAMga,cAAeha,EAAMka,WAAYla,EAAMoa,aAC5G,IAAIlB,KAAKi/1B,EAAQn+1B,cAAem+1B,EAAQj+1B,WAAYi+1B,EAAQ/91B,YAC7D8U,GAAQ,EACRgp1B,EAAiBh32B,KAAKqK,MAEhBvL,GAASkB,KAAK6E,MAAQ/F,GAASkB,KAAKqK,KAC1C2jB,GAAQ,EACRgp1B,EAAiBl42B,IAEXA,IAAUkB,KAAK6E,MACrBmpB,GAAQ,EACRgp1B,EAAiBh32B,KAAK6E,KAEnB7E,KAAK+22B,kBAAkBC,EAAgBhp1B,EAAO,YACzD,EACAkm1B,EAAe312B,UAAUo32B,gBAAkB,WACvC,IAAIx61B,EAAS,GACT+71B,EAAc,EACdr7wB,EAAQ77F,KA6BZ,OA5BA,SAA8Bis2B,GAC1B,OAAQA,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACL,IAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACL,IAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACa,IAAV9w1B,EACAA,GAAkB8w1B,EAGlB9w1B,EAASA,EAAS,IAAM8w1B,EAE5BiL,GAA4B,EAMpC,OAHIA,EAAc,IACdr7wB,EAAMu4wB,iBAAmBj51B,GAEtBA,CACX,CAEJ,EACA+41B,EAAe312B,UAAUq32B,QAAU,SAAUnpzB,GACzC,IAAI0qzB,EACAlp1B,EACAmp1B,EAAUp32B,KAAK6E,IACf/F,EAAiB,OAAT2tD,EAAgB,IAAIz0C,KAASy0C,EAezC,OAdM3tD,EAAMoa,aAAek+1B,EAAQl+1B,YAAcpa,EAAMka,cAAgBo+1B,EAAQp+1B,aAC1Ela,EAAMga,iBAAmBs+1B,EAAQt+1B,gBAAoB,IAAId,KAAKlZ,EAAM+Z,iBAAkB/Z,EAAMka,WAAYla,EAAMoa,aAC9G,IAAIlB,KAAKo/1B,EAAQt+1B,cAAes+1B,EAAQp+1B,WAAYo+1B,EAAQl+1B,YAC7D+U,GAAM,EACNkp1B,EAAen32B,KAAK6E,MAEd/F,GAASkB,KAAK6E,MAAQ/F,GAASkB,KAAKqK,KAC1C4jB,GAAM,EACNkp1B,EAAer42B,IAETA,IAAUkB,KAAKqK,MACrB4jB,GAAM,EACNkp1B,EAAen32B,KAAKqK,KAEjBrK,KAAK+22B,kBAAkBI,EAAclp1B,EAAK,UACrD,EACAim1B,EAAe312B,UAAUgkC,KAAO,SAAUrlC,GACtC,IAAI0jN,EAAQ5gN,KACZ,GAAIA,KAAKu1pB,UAAYv1pB,KAAKw02B,gBAAiB,CACvCx02B,KAAKim2B,YAAc,CACfnlhB,QAAQ,EACRthF,MAAOx/P,KAAKu1pB,UAAYv1pB,KAAKu02B,YAC7Br7yB,MAAOh8D,GAAK,MAEhB,IAAIyyW,EAAY3vW,KAAKim2B,YACjBj1rB,GAAkBhxK,KAAKu1pB,UACvBv1pB,KAAKo/d,QAAQ,QAASzvH,GAAW,SAAUA,GACvC/uJ,EAAMy2pB,2BAA2Bn62B,EAAGyyW,EACxC,IAGA3vW,KAAKq32B,2BAA2Bn62B,EAAGyyW,EAE3C,MAEQutH,GAAQK,UAAYv9d,KAAK0i2B,YAAc1i2B,KAAKw3c,UAC5Cx3c,KAAK0kc,aAAanxY,gBAAgB,YAEtCvzD,KAAKyi2B,cAEb,EACAyR,EAAe312B,UAAU842B,2BAA6B,SAAUn62B,EAAGyyW,GAC/D3vW,KAAKim2B,YAAct2f,EACd3vW,KAAKim2B,YAAYnlhB,SACd9gV,KAAKy12B,kBACLjxpB,EAAOjmN,UAAUgkC,KAAKxiC,KAAKC,KAAM9C,GAE5B8C,KAAKs02B,oBACVt02B,KAAKm5pB,WAAWj8pB,GAChBw1D,GAAY,CAACn9B,SAASwK,MAAO8h0B,KACzB3kY,GAAQK,UAAYv9d,KAAKi22B,YACzBj22B,KAAKi22B,UAAU5x2B,MAAMqmB,QAAU,OAC/B1qB,KAAKi22B,UAAU1nxB,UAAY,GAC3BvuF,KAAKi22B,UAAY,MAErBj22B,KAAK422B,4BAGT15Y,GAAQK,UAAYv9d,KAAK0i2B,YAAc1i2B,KAAKw3c,UAC5Cx3c,KAAK0kc,aAAanxY,gBAAgB,YAEtCvzD,KAAKyi2B,cACT,EAEAyR,EAAe312B,UAAU46pB,WAAa,SAAUj8pB,GAC5C,GAAI8C,KAAKs02B,mBAAqBt02B,KAAKu02B,YAAa,CAC5C,IAAIxxM,EAAY,CACZliqB,KAAM,UACN8yD,SApiCQ,IAqiCRvtD,MAAO,GAEXpG,KAAKu02B,YAAYhy0B,KAAK,IAAI+vF,GAAUywiB,IACpC/iqB,KAAK61pB,aAAaz5jB,UAAUj4F,UAAU0C,OAAOot2B,KAC7C58yB,GAAWr3D,KAAK0kc,aAAc,CAAE,gBAAiB,UACjD1kc,KAAK0kc,aAAanxY,gBAAgB,aAClCvzD,KAAK0kc,aAAanxY,gBAAgB,iBAClCmra,GAAa73d,OAAO0uB,SAAU,uBAAwBv1B,KAAKmy2B,qBAC/D,CACJ,EACA+B,EAAe312B,UAAUgwe,UAAY,WACjCvue,KAAKun2B,cACLvn2B,KAAKyj2B,eAAiBzj2B,KAAK602B,qBAC3BrwpB,EAAOjmN,UAAUgwe,UAAUxue,KAAKC,MAChC0yD,GAAY,CAAC1yD,KAAKkn2B,kBAAmB,CAACziX,KAC1C,EACAyvX,EAAe312B,UAAUo12B,YAAc,SAAUlnzB,EAAM9Z,GACvC,QAARA,EACA3yC,KAAKiie,cAAc,CAAE53d,IAAKrK,KAAK+y2B,cAActmzB,EAAKpiD,OAAQ,GAG1DrK,KAAKiie,cAAc,CAAEp9d,IAAK7E,KAAK+y2B,cAActmzB,EAAK5nD,OAAQ,EAElE,EACAqv2B,EAAe312B,UAAU2i1B,gBAAkB,SAAUgB,GAIjD,IAHA,IAEIpj1B,EACKq7N,EAAK,EAAGkob,EAHA6/L,EAAYlxqB,GAAkBhxK,KAAK+joB,gBAAkB,GAAK3moB,OAAOC,KAAK2C,KAAK+joB,gBACxF,CAAC,QAAS,OAAQ,OAAQ,WAAY,WAAY,QAAS,MAAO,MAAO,cAAe,QAEhD5pa,EAAKkob,EAAavkpB,OAAQq8N,IAAM,CACxE,IAAI7nJ,EAAO+vkB,EAAalob,GACxB,IAAKnpD,GAAkBhxK,KAAK0kc,aAAat0b,aAAakiE,IAClD,OAAQA,GACJ,IAAK,OACDtyE,KAAK0kc,aAAa97b,aAAa,OAAQ5I,KAAK0kc,aAAat0b,aAAakiE,IACtE,MACJ,IAAK,OACDtyE,KAAKi1D,KAAOh0D,SAASjB,KAAK0kc,aAAat0b,aAAakiE,GAAO,IAC3D,MACJ,IAAK,WACD,GAAK0+F,GAAkBhxK,KAAKq02B,uBAA0DpnyB,IAArCjtE,KAAKq02B,gBAA0B,UAAqBnyB,EAAW,CAC5G,IAAI1qY,EAAoD,aAAzCx3c,KAAK0kc,aAAat0b,aAAakiE,IACD,KAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,IACU,SAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,GACnCtyE,KAAKiie,cAAc,CAAEzqB,SAAUA,IAAa0qY,EAChD,CACA,MACJ,IAAK,eACIlxqB,GAAkBhxK,KAAKq02B,uBAA6DpnyB,IAAxCjtE,KAAKq02B,gBAA6B,aAAqBnyB,IACpGli1B,KAAKiie,cAAc,CAAEj6G,YAAahoX,KAAK0kc,aAAat0b,aAAakiE,KAAU4vwB,GAE/E,MACJ,IAAK,OACIlxqB,GAAkBhxK,KAAKq02B,uBAAqDpnyB,IAAhCjtE,KAAKq02B,gBAAqB,KAAqBnyB,KAC5Fpj1B,EAAQ,IAAIkZ,KAAKhY,KAAK0kc,aAAat0b,aAAakiE,IAC3CtyE,KAAKwjW,cAAc1kW,IAAWwF,OAAOxF,IACtCkB,KAAKiie,cAAc,CAAE53d,IAAKvL,IAAUoj1B,IAG5C,MACJ,IAAK,WACD,GAAKlxqB,GAAkBhxK,KAAKq02B,uBAAyDpnyB,IAApCjtE,KAAKq02B,gBAAyB,SAAqBnyB,EAAW,CAC3G,IAAI570B,EAAmD,aAAzCtG,KAAK0kc,aAAat0b,aAAakiE,IACA,SAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,IACU,KAAzCtyE,KAAK0kc,aAAat0b,aAAakiE,GACnCtyE,KAAKiie,cAAc,CAAE37d,QAASA,IAAY470B,EAC9C,CACA,MACJ,IAAK,SACIlxqB,GAAkBhxK,KAAKq02B,uBAAuDpnyB,IAAlCjtE,KAAKq02B,gBAAuB,OAAqBnyB,KAC9Fpj1B,EAAQ,IAAIkZ,KAAKhY,KAAK0kc,aAAat0b,aAAakiE,IAC3CtyE,KAAKwjW,cAAc1kW,IAAWwF,OAAOxF,IACtCkB,KAAKiie,cAAc,CAAEnje,MAAOA,IAAUoj1B,IAG9C,MACJ,IAAK,OACIlxqB,GAAkBhxK,KAAKq02B,uBAAqDpnyB,IAAhCjtE,KAAKq02B,gBAAqB,KAAqBnyB,KAC5Fpj1B,EAAQ,IAAIkZ,KAAKhY,KAAK0kc,aAAat0b,aAAakiE,IAC3CtyE,KAAKwjW,cAAc1kW,IAAWwF,OAAOxF,IACtCkB,KAAKiie,cAAc,CAAEp9d,IAAK/F,IAAUoj1B,IAM5D,CACJ,EACAgyB,EAAe312B,UAAUwqe,gBAAkB,WACvC,IAAIe,EAAU,GAOd,MAN0B,YAAtB9pe,KAAK401B,cACL9qX,EAAQnse,KAAK,CAAEytE,KAAM,CAACprE,MAAOspe,OAAQ,UAAWzoe,KAAM,YAEtDb,KAAK4i2B,YACL94X,EAAQnse,KAAKqC,KAAKs32B,oBAEfxtY,CACX,EACAoqY,EAAe312B,UAAU+42B,iBAAmB,WAExC,MADc,CAAElsyB,KAAM,CAACprE,MAAOspe,OAAQ,iBAE1C,EACA4qY,EAAe312B,UAAUg52B,qBAAuB,WAC5C,OAAKvmsB,GAAkBhxK,KAAKw02B,iBAIjB,KAHAx02B,KAAKw02B,gBAAgB/m1B,iBAAiB,IAAMm00B,IAK3D,EACAsS,EAAe312B,UAAUiy2B,cAAgB,SAAU79zB,GAC/C,OAAOA,aAAe36B,KAAO26B,EAAM,IACvC,EACAuh0B,EAAe312B,UAAUqzd,cAAgB,SAAUvjd,GAC/C,IAAKrO,KAAKwjW,cAAcn1V,GAAO,CAC3B,IAAIk+zB,EAAYvs0B,KAAKww2B,cAAcni2B,GAC/BvP,EAAQkB,KAAKov2B,iBACboI,GAAYxmsB,GAAkBlyK,GAClC,GAAIkB,KAAKi21B,eAAe1pB,GAAY,CAChC,IAAI9/wB,EAAO+qzB,EAAW142B,EAAMoa,UAAYo01B,IACpCni1B,EAAQqs1B,EAAW142B,EAAMka,WAAampN,IACtCj3M,EAAOss1B,EAAW142B,EAAMga,cAAgBopN,IACxC72M,EAAOms1B,EAAW142B,EAAMsa,WAAaipN,IACrC/2M,EAASks1B,EAAW142B,EAAMwa,aAAegpN,IACzC/2M,EAASis1B,EAAW142B,EAAM0a,aAAe+oN,IACzCz6G,EAAc0vvB,EAAW142B,EAAM4a,kBAAoB8oN,IACvD,OAAKxiO,KAAKm02B,eAINn02B,KAAKm02B,eAAgB,EACd,IAAIn81B,KAAKkT,EAAMC,EAAOshC,EAAM8/wB,EAAUnzzB,WAAYmzzB,EAAUjzzB,aAAcizzB,EAAU/yzB,aAAc+yzB,EAAU7yzB,oBAJ5G,IAAI1B,KAAKkT,EAAMC,EAAOshC,EAAMphC,EAAMC,EAAQC,EAAQu8F,EAMjE,CACJ,CACA,OAAO,IACX,EACAosvB,EAAe312B,UAAUk52B,oBAAsB,SAAUv+yB,GACrD,IAAIg6yB,EAAWlz2B,KAAK0kc,aAAc5lc,MAC9BA,EAAQkyK,GAAkBhxK,KAAKov2B,kBAAoBpv2B,KAAKww2B,cAAc0C,GACtElz2B,KAAK4xd,cAAc5xd,KAAKov2B,kBACxBsI,EAAc,KACdC,EAAY332B,KAAK0hpB,cAAc5jpB,OACnC,IAAKkzK,GAAkBhxK,KAAK8zpB,eAAiB9if,GAAkBhxK,KAAKi21B,eAAen31B,IAAS,CACxF,GAAqB,SAAjBo6D,EAAM8oJ,OACN01pB,GAAgB132B,KAAKww2B,cAAc,IAAIx41B,KAAKhY,KAAK6t2B,gBAAgB,KACjE7t2B,KAAK8zpB,YAAc,OAElB,GAAqB,QAAjB56lB,EAAM8oJ,OACX01pB,GAAgB132B,KAAKww2B,cAAc,IAAIx41B,KAAKhY,KAAK6t2B,gBAAgB7t2B,KAAK6t2B,gBAAgB/v2B,OAAS,KAC/FkC,KAAK8zpB,YAAc9zpB,KAAK6t2B,gBAAgB/v2B,OAAS,OAGjD,GAAqB,SAAjBo7D,EAAM8oJ,QACN,IAAK,IAAI7kN,EAAI,EAAGA,EAAIw62B,EAAWx62B,IAC3B,IAAK2B,EAAQkB,KAAK6t2B,gBAAgB1w2B,GAAI,CAClCu62B,GAAgB132B,KAAKww2B,cAAc,IAAIx41B,KAAKhY,KAAK6t2B,gBAAgB1w2B,KACjE6C,KAAK8zpB,YAAc32pB,EACnB,KACJ,OAIJ,IAASA,EAAIw62B,EAAY,EAAGx62B,GAAK,EAAGA,IAChC,IAAK2B,EAAQkB,KAAK6t2B,gBAAgB1w2B,GAAI,CAClCu62B,GAAgB132B,KAAKww2B,cAAc,IAAIx41B,KAAKhY,KAAK6t2B,gBAAgB1w2B,KACjE6C,KAAK8zpB,YAAc32pB,EACnB,KACJ,CAIZ6C,KAAKm9pB,gBAAkBn9pB,KAAK0hpB,cAAc1hpB,KAAK8zpB,aAC/C9zpB,KAAK432B,iBAAiB5msB,GAAkB0msB,GAAe,KAAO,IAAI1/1B,KAAK0/1B,GAC3E,CACJ,EACAxD,EAAe312B,UAAUs52B,aAAe,SAAUprzB,EAAM3tD,GACpD,IAAI8tD,EACA67D,EACA91E,EAAM3yC,KAAK+02B,oBAAoBj22B,GAC/Bk02B,EAAShz2B,KAAKww2B,cAAc79zB,GA+BhC,OA9BI3yC,KAAKqopB,kBAAkB2qN,MAAchisB,GAAkBhxK,KAAKlB,OAA8C,KAArCkB,KAAKqopB,kBAAkBropB,KAAKlB,SACjGkB,KAAKov2B,iBAAmBp+rB,GAAkBgisB,GAAU,KAAOA,EAC3DvqvB,EAAO,IAAIzwG,MAAMhY,KAAKov2B,oBAGlBpv2B,KAAK4h1B,aAELn1xB,EAAOumzB,GAEXhz2B,KAAKov2B,iBAAmBpv2B,KAAKi21B,eAAexpyB,GAC5Cg8D,EAAO,IAAIzwG,MAAMhY,KAAKov2B,mBAGtBxizB,EADsB,cAAtB5sD,KAAK401B,aACQ501B,KAAKy1wB,UAAU17vB,WAAW0uG,EAAM,CACzCttG,OAAS61J,GAAkBhxK,KAAKwj2B,cAAoCxj2B,KAAK602B,qBAAzB702B,KAAKwj2B,aACrD/81B,KAAM,WAAYyid,SAAU,QAInBlpd,KAAKy1wB,UAAU17vB,WAAW0uG,EAAM,CACzCttG,OAAS61J,GAAkBhxK,KAAKwj2B,cAAoCxj2B,KAAK602B,qBAAzB702B,KAAKwj2B,aACrD/81B,KAAM,WAAYyid,SAAU,MAAOttP,SAAU,aAGhD57N,KAAK4h1B,YAAc5wqB,GAAkBvoD,GACtCq1gB,GAAMnqW,SAAS/mO,EAAY5sD,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBAKrEl6gB,CACX,EACAyrvB,EAAe312B,UAAUq52B,iBAAmB,SAAU942B,GAClD,IAAKkyK,GAAkBhxK,KAAKi21B,eAAen31B,MAAYkB,KAAKwjW,cAAc1kW,GAAQ,CAC9E,IAAI2tD,EAAO3tD,aAAiBkZ,KAAOlZ,EAAQkB,KAAK4xd,cAAc9yd,GAC9D,OAAOkB,KAAK632B,aAAaprzB,EAAM3tD,EACnC,CACA,OAAO,IACX,EACAo12B,EAAe312B,UAAUu52B,eAAiB,SAAU5+yB,GAChD,KAAI83G,GAAkBhxK,KAAKi1D,OAASj1D,KAAKi1D,MAAQ,GAAjD,CAGA,IAAI0izB,EAAY332B,KAAK6t2B,gBAAgB/v2B,OACrC,GAAIkzK,GAAkBhxK,KAAKu32B,yBAAkE,IAAvCv32B,KAAKu32B,uBAAuBz52B,OAC1EkC,KAAK0hpB,cAAc5jpB,OAAS,IACxBkzK,GAAkBhxK,KAAKlB,QAAUkyK,GAAkBhxK,KAAK8zpB,cACxD9zpB,KAAK8zpB,YAAc,EACnB9zpB,KAAKm9pB,gBAAkBn9pB,KAAK0hpB,cAAc,GAC1C1hpB,KAAK432B,iBAAiB,IAAI5/1B,KAAKhY,KAAK6t2B,gBAAgB,MAGpD7t2B,KAAKy32B,oBAAoBv+yB,QAIhC,CACD,IAAI6+yB,OAAgB,EACpB,GAAK7+yB,EAAM4mO,SAAW,IAAQ5mO,EAAM4mO,SAAW,GAAK,CAChD,IAAInzQ,EAA2B,KAAlBusC,EAAM4mO,SAAoC,KAAlB5mO,EAAM4mO,UAAoB9/R,KAAK8zpB,cAAgB9zpB,KAAK8zpB,YACzF9zpB,KAAK8zpB,YAAsB9zpB,KAAK8zpB,cAAiB6jN,EAAa,EAAI332B,KAAK8zpB,YACvE9zpB,KAAK8zpB,YAAcnnoB,EAAQ3sB,KAAK8zpB,YAAc,EAAK6jN,EAAY,EAAK332B,KAAK8zpB,YACzEikN,EAAgB/msB,GAAkBhxK,KAAK6t2B,gBAAgBlh1B,IACnD3sB,KAAK6t2B,gBAAgB,GAAK7t2B,KAAK6t2B,gBAAgBlh1B,EACvD,KAC0B,SAAjBusC,EAAM8oJ,QACXhiN,KAAK8zpB,YAAc,EACnBikN,EAAgB/32B,KAAK6t2B,gBAAgB,IAEf,QAAjB30yB,EAAM8oJ,SACXhiN,KAAK8zpB,YAAc6jN,EAAY,EAC/BI,EAAgB/32B,KAAK6t2B,gBAAgB8J,EAAY,IAErD332B,KAAKm9pB,gBAAkBn9pB,KAAK0hpB,cAAc1hpB,KAAK8zpB,aAC/C9zpB,KAAK432B,iBAAiB,IAAI5/1B,KAAK+/1B,GACnC,CACA/32B,KAAKmp2B,YAAa,EAClBnp2B,KAAKu22B,aAAav22B,KAAKm9pB,gBA5yCd,gBA6yCTn9pB,KAAK422B,2BACD522B,KAAKs02B,mBAA8C,OAAzBt02B,KAAKm9pB,iBAA8BjkmB,GAAwB,UAAfA,EAAMzyD,MAC5EzG,KAAKg22B,uBAtCT,CAwCJ,EACA9B,EAAe312B,UAAU232B,oBAAsB,SAAUh9yB,GACrD,GAAIl5D,KAAKsG,QAIL,OAHqB,UAAjB4yD,EAAM8oJ,QAAuC,SAAjB9oJ,EAAM8oJ,QAAsC,QAAjB9oJ,EAAM8oJ,QAC7D9oJ,EAAMiH,iBAEFjH,EAAM8oJ,QACV,IAAK,KACL,IAAK,OACL,IAAK,OACL,IAAK,MACDhiN,KAAK832B,eAAe5+yB,GACpB,MACJ,IAAK,QACGl5D,KAAKmp2B,YACLnp2B,KAAKm9pB,gBAAkBn9pB,KAAK0hpB,cAAc1hpB,KAAK8zpB,aAC/C9zpB,KAAKov2B,iBAAmB,IAAIp31B,KAAKhY,KAAK6t2B,gBAAgB7t2B,KAAK8zpB,cAC3D9zpB,KAAKu/pB,cAAc,SACdv/pB,KAAK+g2B,oBAAsB/g2B,KAAKlB,QACjCkB,KAAK2g2B,YAAY7h2B,MAAQkB,KAAKlB,MAC9BkB,KAAK+12B,mBACL/12B,KAAK+g2B,iBAAmB/g2B,KAAKlB,QAIjCkB,KAAKmquB,YAAYjxqB,GAErBl5D,KAAKuiC,KAAK22B,GACVzG,GAAS,CAACzyD,KAAK61pB,aAAaz5jB,WAAYulwB,KACxC3h2B,KAAKmp2B,YAAa,EAClBjwyB,EAAMkH,kBACN,MACJ,IAAK,SACDpgE,KAAKuiC,KAAK22B,GACV,MACJ,QACIl5D,KAAKmp2B,YAAa,EAIlC,EACA+K,EAAe312B,UAAUg32B,eAAiB,SAAUr8yB,GAChD,GACS,iBADDA,EAAM8oJ,OAENhiN,KAAKil2B,mBACLjl2B,KAAKwi2B,cACLxi2B,KAAKglY,OAAO9rU,EAGxB,EASAg7yB,EAAe312B,UAAUoke,kBAAoB,SAAUiF,EAASC,GAC5D,IAAK,IAAI1tQ,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAC9D,IAAI7nJ,EAAO4lH,EAAGiiC,GACd,OAAQ7nJ,GACJ,IAAK,QACDtyE,KAAKqi2B,uBAAwB,EAC7Bri2B,KAAKii2B,mBAAqB,KAC1Bji2B,KAAK2i2B,kBAAkB/6X,EAAQ9oe,OAC/B8oe,EAAQ9oe,MAAQkB,KAAKlB,MACrB8oe,EAAQ9oe,MAAQkB,KAAK+y2B,cAAcnrY,EAAQ9oe,OACvCkB,KAAK4i2B,WACL9kO,GAAMnqW,SAAS3zR,KAAKmi2B,gBAAiBni2B,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBAGlF7E,GAAMnqW,SAAS3zR,KAAKqopB,kBAAkBzgL,EAAQ9oe,OAAQkB,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBAEvG3ioB,KAAKov2B,iBAAmBxnY,EAAQ9oe,MAChCkB,KAAKiie,cAAc,CAAEnje,MAAO8oe,EAAQ9oe,QAAS,GACzCkB,KAAKu1pB,UACLv1pB,KAAKyk2B,cAETzk2B,KAAK+g2B,iBAAmB,IAAI/o1B,KAAKhY,KAAK0kc,aAAa5lc,OACnDkB,KAAKwi2B,cACLxi2B,KAAKkl2B,cAAc,MACnBll2B,KAAKykpB,cAAgBzkpB,KAAK+iQ,WAAa/iQ,KAAKykpB,eAAiBzkpB,KAAKykpB,cAAgBzkpB,KAAKykpB,cACnFzkpB,KAAK4i2B,YAAc5i2B,KAAKlB,OACxBkB,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAGhB,MACJ,IAAK,MACL,IAAK,MACD/nE,KAAK2z2B,YAAY/rY,EAASt1Z,GAC1BtyE,KAAKwi2B,cACL,MACJ,IAAK,YACD1kO,GAAMrD,aAAaz6nB,KAAK+te,UAAW,CAAC/te,KAAK61pB,aAAaz5jB,YACtD,MACJ,IAAK,WACI40E,GAAkB62T,EAAQh5d,YAC3Bg5d,EAAQh5d,SAAYg5d,EAAQh5d,SAASnM,QAAQ,OAAQ,KAAM6S,QAE1Dy7J,GAAkB42T,EAAQ/4d,YAC3B+4d,EAAQ/4d,SAAY+4d,EAAQ/4d,SAASnM,QAAQ,OAAQ,KAAM6S,QAE/DuonB,GAAMp3I,YAAY9e,EAAQ/4d,SAAU,CAAC7O,KAAK61pB,aAAaz5jB,WAAYyrY,EAAQh5d,UACvE7O,KAAKw02B,iBACL12O,GAAMp3I,YAAY9e,EAAQ/4d,SAAU,CAAC7O,KAAKw02B,iBAAkB3sY,EAAQh5d,UAExE,MACJ,IAAK,SACD7O,KAAKy1wB,UAAY,IAAIxgT,GAAqBj1d,KAAKwY,QAC/CxY,KAAKoppB,KAAK/klB,UAAUrkE,KAAKwY,QACrBxY,KAAKq02B,iBAAuD,MAApCr02B,KAAKq02B,gBAAgBrsf,cAC7ChoX,KAAKiie,cAAc,CAAEj6G,YAAahoX,KAAKoppB,KAAKvtK,YAAY,iBAAkB,GAC1EiiJ,GAAM8C,eAAe5goB,KAAKoppB,KAAKvtK,YAAY,eAAgB77e,KAAK0kc,eAEpE1kc,KAAKyj2B,eAAiBzj2B,KAAK602B,qBAC3BrwpB,EAAOjmN,UAAUik2B,YAAYzi2B,KAAKC,MAClC,MACJ,IAAK,iBACDA,KAAK6k2B,+BACL7k2B,KAAK+90B,+BACL/90B,KAAKkh1B,iBAAgB,GACrB,MACJ,IAAK,SACDlh1B,KAAKiie,cAAc,CAAE9md,OAAQysd,EAAQzsd,SAAU,GAC/Cnb,KAAKun2B,cACLvn2B,KAAKyj2B,eAAiBzj2B,KAAKwj2B,aAC3Bxj2B,KAAK2zR,WACD3zR,KAAK4i2B,aACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAEP/nE,KAAKlB,OACNg/nB,GAAMnqW,SAAS3zR,KAAKmi2B,gBAAiBni2B,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,kBAG1F,MACJ,IAAK,cACD7E,GAAM8C,eAAeh5J,EAAQ5/G,YAAahoX,KAAK0kc,cAC/C,MACJ,IAAK,UACDo5L,GAAMgD,WAAW9goB,KAAKsG,QAAStG,KAAK0kc,cAChC1kc,KAAKsG,QACLtG,KAAK0kc,aAAa97b,aAAa,WAAY5I,KAAKmnV,UAGhDnnV,KAAK0kc,aAAav9G,UAAY,EAElC,MACJ,IAAK,aACDnnV,KAAKii2B,mBAAqB,KAC1Bji2B,KAAKwi2B,cACL,MACJ,IAAK,QACDxi2B,KAAKg8E,SAAS4rZ,EAAQrke,OACtBu6nB,GAAMS,eAAev+nB,KAAK0kc,aAAc1kc,KAAK61pB,aAAaz5jB,WACrD40E,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAAQgxG,GAAkBhxK,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,KAA+B,UAAxBr5B,KAAKo+nB,gBAC/Jp+nB,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,GAAGl1B,UAAU2C,IAAI,oBAEjG,MACJ,IAAK,WACDg3nB,GAAM+C,YAAY7goB,KAAKw3c,SAAUx3c,KAAK0kc,cACtC,MACJ,IAAK,iBACD1kc,KAAKo+nB,eAAiBx2J,EAAQw2J,eAC9BN,GAAMoF,eAAeljoB,KAAK61pB,cAC1B/3B,GAAMsF,YAAYpjoB,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAKgoX,aAC1Dh3M,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAAQgxG,GAAkBhxK,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,KAA+B,UAAxBr5B,KAAKo+nB,gBAC/Jp+nB,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,GAAGl1B,UAAU2C,IAAI,oBAEjG,MACJ,IAAK,WACG9G,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKk21B,WAAWtuX,EAAQt2E,aACjDtxZ,KAAKw02B,iBACLx02B,KAAKox2B,cAETpx2B,KAAKiie,cAAc,CAAE3wE,SAAUtxZ,KAAKi21B,eAAe,IAAIj+0B,KAAKhY,KAAKk21B,WAAWtuX,EAAQt2E,cAAe,IAGnGtxZ,KAAKiie,cAAc,CAAE3wE,SAAU,OAAQ,GAE3C,MACJ,IAAK,aACGtxZ,KAAK4i2B,YACL5i2B,KAAKg+F,OAAO,aAAc,CACtBj2B,OAAQ,mBAEZ+1jB,GAAMnqW,SAAS3zR,KAAKmi2B,gBAAiBni2B,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,kBAG9E3ioB,KAAK0kc,aAAa5lc,QAAUkB,KAAKmi2B,kBACjCni2B,KAAKmi2B,gBAAkB,GACvBrkO,GAAMnqW,SAAS3zR,KAAKmi2B,gBAAiBni2B,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,kBAG1F,MACJ,QACIn+a,EAAOjmN,UAAUoke,kBAAkB5ie,KAAKC,KAAM4ne,EAASC,GAG1D7ne,KAAKqi2B,uBACNri2B,KAAKuiC,KAAK,MAEdviC,KAAKqi2B,uBAAwB,CACjC,CACJ,EAOA6R,EAAe312B,UAAUyke,cAAgB,WACrC,MAAO,gBACX,EACAkxY,EAAe312B,UAAUgm2B,aAAe,WACpCvk2B,KAAK+g2B,iBAAmB/g2B,KAAK8g2B,aAC7B9g2B,KAAK+qD,YAAc/qD,KAAKlB,MAAQkB,KAAKlB,MAAQ,IAAIkZ,KACjDhY,KAAKov2B,iBAAmBpv2B,KAAKlB,MAC7BkB,KAAK8g2B,aAAe9g2B,KAAKlB,MACzBkB,KAAK8i2B,qBAAuB9i2B,KAAK8i2B,qBAAwB9xrB,GAAkBhxK,KAAK+i2B,gBAAmB,GAC/F/i2B,KAAKqopB,kBAAkBropB,KAAK+i2B,eACpC,EACA11iB,IAAW,CACP63K,GAAS,OACVgvY,EAAe312B,UAAW,kBAAc,GAC3C8uT,IAAW,CACP63K,GAAS,KACVgvY,EAAe312B,UAAW,YAAQ,GACrC8uT,IAAW,CACP63K,GAAS,OACVgvY,EAAe312B,UAAW,gBAAY,GACzC8uT,IAAW,CACP63K,GAAS,MACVgvY,EAAe312B,UAAW,cAAU,GACvC8uT,IAAW,CACP63K,GAAS,OACVgvY,EAAe312B,UAAW,aAAS,GACtC8uT,IAAW,CACP63K,GAAS,OACVgvY,EAAe312B,UAAW,kBAAc,GAC3C8uT,IAAW,CACP63K,GAAS,CAAC,IACXgvY,EAAe312B,UAAW,sBAAkB,GAC/C8uT,IAAW,CACP63K,IAAS,IACVgvY,EAAe312B,UAAW,yBAAqB,GAClD8uT,IAAW,CACP63K,IAAS,IACVgvY,EAAe312B,UAAW,iBAAa,GAC1C8uT,IAAW,CACP63K,IAAS,IACVgvY,EAAe312B,UAAW,wBAAoB,GACjD8uT,IAAW,CACP63K,GAAS,OACVgvY,EAAe312B,UAAW,cAAU,GACvC8uT,IAAW,CACP63K,IAAS,IACVgvY,EAAe312B,UAAW,uBAAmB,GAChD8uT,IAAW,CACP63K,GAAS,OACVgvY,EAAe312B,UAAW,mBAAe,GAC5C8uT,IAAW,CACP63K,IAAS,IACVgvY,EAAe312B,UAAW,kBAAc,GAC3C8uT,IAAW,CACP63K,IAAS,IACVgvY,EAAe312B,UAAW,sBAAkB,GAC/C8uT,IAAW,CACP63K,GAAS,OACVgvY,EAAe312B,UAAW,4BAAwB,GACrD8uT,IAAW,CACP63K,GAAS,IAAIltd,KAAK,KAAM,EAAG,KAC5Bk81B,EAAe312B,UAAW,WAAO,GACpC8uT,IAAW,CACP63K,GAAS,IAAIltd,KAAK,KAAM,GAAI,MAC7Bk81B,EAAe312B,UAAW,WAAO,GACpC8uT,IAAW,CACP63K,GAAS,OACVgvY,EAAe312B,UAAW,sBAAkB,GAC/C8uT,IAAW,CACP63K,GAAS,cACVgvY,EAAe312B,UAAW,oBAAgB,GAC7C8uT,IAAW,CACP63K,GAAS,UACVgvY,EAAe312B,UAAW,aAAS,GACtC8uT,IAAW,CACP63K,GAAS,UACVgvY,EAAe312B,UAAW,aAAS,GACtC8uT,IAAW,CACP63K,IAAS,IACVgvY,EAAe312B,UAAW,kBAAc,GAC3C8uT,IAAW,CACP63K,IAAS,IACVgvY,EAAe312B,UAAW,uBAAmB,GAChD8uT,IAAW,CACP63K,GAAS,UACVgvY,EAAe312B,UAAW,uBAAmB,GAChD8uT,IAAW,CACP63K,IAAS,IACVgvY,EAAe312B,UAAW,mBAAe,GAC5C8uT,IAAW,CACP63K,IAAS,IACVgvY,EAAe312B,UAAW,kBAAc,GAC3C8uT,IAAW,CACP63K,GAAS,CAAE95c,IAAK,MAAOD,MAAO,QAASD,KAAM,OAAQG,KAAM,OAAQC,OAAQ,SAAUC,OAAQ,SAAUu80B,aAAc,qBACtHoM,EAAe312B,UAAW,uBAAmB,GAChD8uT,IAAW,CACPv0P,MACDo7yB,EAAe312B,UAAW,YAAQ,GACrC8uT,IAAW,CACPv0P,MACDo7yB,EAAe312B,UAAW,aAAS,GACtC8uT,IAAW,CACPv0P,MACDo7yB,EAAe312B,UAAW,eAAW,GACxC8uT,IAAW,CACPv0P,MACDo7yB,EAAe312B,UAAW,YAAQ,GACrC8uT,IAAW,CACPv0P,MACDo7yB,EAAe312B,UAAW,aAAS,GACtC8uT,IAAW,CACPv0P,MACDo7yB,EAAe312B,UAAW,eAAW,GACxC8uT,IAAW,CACPv0P,MACDo7yB,EAAe312B,UAAW,iBAAa,GAC1C212B,EAAiB7mjB,IAAW,CACxBq4K,IACDwuY,EAEP,CAzmDoC,CAymDlCnya,KClrDE7gN,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAiB7C4gN,IAAWmuC,OAAOk4X,KAMlB,IAAI4P,IAAoC,SAAUxzpB,GAE9C,SAASwzpB,IACL,OAAkB,OAAXxzpB,GAAmBA,EAAO5mN,MAAMoC,KAAMnC,YAAcmC,IAC/D,CAWA,OAdAkhP,IAAU82nB,EAAoBxzpB,GAI9BwzpB,EAAmBz52B,UAAUo4H,MAAQ,SAAUvrD,GAC3CprE,KAAKgmqB,KAAOhmqB,KAAK44B,OAAO02qB,WACK,mBAAzBlkoB,EAAKviD,OAAO09oB,SACZvmqB,KAAKgvE,IAAM,IAAI+yX,IAAWrgc,GAAOu22B,IAAsB7syB,EAAMprE,KAAK44B,OAAOg0qB,aAAa/grB,KAAM7rB,KAAK44B,OAAOm1c,UAAW/te,KAAK44B,OAAO/pB,SAAU7O,MAAOorE,EAAKviD,OAAOm9oB,KAAKh5oB,SAEnI,uBAAzBo+C,EAAKviD,OAAO09oB,WACjBvmqB,KAAKgvE,IAAM,IAAIklyB,IAAexy2B,GAAOu22B,IAAsB7syB,EAAMprE,KAAK44B,OAAOg0qB,aAAa/grB,KAAM7rB,KAAK44B,OAAOm1c,UAAW/te,KAAK44B,OAAO/pB,SAAU7O,MAAOorE,EAAKviD,OAAOm9oB,KAAKh5oB,UAEzKhtB,KAAKgvE,IAAIlwD,SAASssD,EAAK3R,QAC3B,EACOu+yB,CACX,CAhBwC,CAgBtC75B,IAGF,SAAS85B,IAAsB7syB,EAAMv/C,EAAM6wD,EAAK+f,EAAKy7wB,GACjD,IAAIv5B,EAAoB,WAAT9yzB,EACX1Q,EAAS+tvB,GAAoB99rB,EAAKviD,OAAO1N,OAAQiwD,EAAKviD,OAAOpiB,MAC7D3H,EAAQske,GAAUh4Z,EAAKviD,OAAOo0N,MAAO7xK,EAAKqnrB,SAE9C,MAAO,CACHr0H,eAAgBugN,EAAW,QAAU,SACrC7/0B,MAHJA,EAAQA,EAAQ,IAAIkZ,KAAKlZ,GAAS,KAI9Bqc,OAAQA,EACR6sW,YAAa22d,EACT,GAAKvzwB,EAAKviD,OAAOs4Z,WAAY4sD,UAAWrxZ,EAC5Cp2E,QAASyhwB,GAAW38rB,EAAKviD,OAAQuiD,EAAKyhM,YAAazhM,EAAK3R,SACxD5qD,SAAU4tF,GAAY,KACtBg5B,MAAO0ivB,IAAgB5q2B,KAAK2q2B,GAEpC,CAEA,SAASC,IAAgB/syB,GACjBA,EAAKlS,OAA+B,WAAtBkS,EAAKlS,MAAM8oJ,SACzBhiN,KAAKgmqB,KAAK64K,qBAAsB,EAExC,CC1DA,IAAIu5B,IAAkC,WAClC,SAASA,EAAiBx/0B,GACtB54B,KAAK44B,OAASA,CAClB,CAUA,OATAw/0B,EAAiB752B,UAAUi3H,KAAO,SAAU/7D,EAAS36D,GACjD,OAAOA,CACX,EACAs52B,EAAiB752B,UAAUo4H,MAAQ,WAC/B,EAEJyhvB,EAAiB752B,UAAUklE,QAAU,WACjC,EAEG20yB,CACX,CAdsC,GCoBlC/2H,IAAsB,WAQtB,SAASA,EAAKzotB,EAAQs/pB,GAElBl4rB,KAAKu9vB,wBAAyB,EAC9Bv9vB,KAAKumqB,SAAW,CAAE,OAAU6kL,GAAY,OAAUA,GAAY,MAASC,GAAW,OAAUnjG,IAC5FlovB,KAAKi5vB,UAAY,GACjBj5vB,KAAKyR,KAAO,CAAC,EAEbzR,KAAK6+0B,qBAAsB,EAC3B7+0B,KAAK44B,OAASA,EACd54B,KAAKk4rB,eAAiBA,EACtBl4rB,KAAKoppB,KAAOpppB,KAAKk4rB,eAAewF,WAAW,gBAC3C19rB,KAAKqN,mBACLrN,KAAKq42B,gBACLr42B,KAAKs42B,iBACLt42B,KAAKu42B,kBACT,CA4pCA,OA3pCAl3H,EAAK9ivB,UAAUi62B,iBAAmB,WAE9B,IADA,IAAI330B,EAAO7gC,KAAK44B,OAAOkjqB,YACd3+rB,EAAI,EAAGA,EAAI0jC,EAAK/iC,OAAQX,IAC7B,GAAI6C,KAAK44B,OAAOg0qB,aAAa7jkB,UAAYloG,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKomqB,aAAc,CAEpFlmoB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKqlqB,KAAOtkqB,GAAO,IAAI2/uB,EAAKo3H,aAA6B,aAAEz42B,KAAK44B,QAASiI,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKqlqB,MAAQ,CAAC,EACnJ,MAEInloB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKqlqB,KAAOtkqB,GAAO,IAAI2/uB,EAAKo3H,aAAa530B,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAK4lqB,UAC/F86E,EAAKo3H,aAAa530B,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAK4lqB,UACtD1loB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAK4lqB,SAAW,gBAAevmqB,KAAK44B,OAAQ54B,KAAKk4rB,gBAAiBr3pB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKqlqB,MAAQ,CAAC,GAGpJhmqB,KAAK44B,OAAO92B,IAAI,yBACpB,EAOAu/uB,EAAK9ivB,UAAUyke,cAAgB,WAC3B,MAAO,MACX,EAMAq+Q,EAAK9ivB,UAAUoke,kBAAoB,SAAUzle,GACzC,GAAIA,EAAE6qE,SAAW/nE,KAAKgje,gBAItB,IADA,IAAI41N,EAAO54rB,KAAK44B,OACPuhM,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKH,EAAEu/H,YAAa09F,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAEnE,OADWjiC,EAAGiiC,IAEV,IAAK,cACL,IAAK,gBACL,IAAK,gBACGy+d,EAAKgU,aAAainB,aAAej7B,EAAKgU,aAAa9mC,cAAgB8yB,EAAKgU,aAAagzC,gBACrF5/uB,KAAKy0qB,aAET,MACJ,IAAK,OACDz0qB,KAAKq42B,gBACLz/K,EAAKoI,SAASpI,EAAKgU,aAAaC,cAChCjU,EAAKtqN,UAGjB,CACJ,EACA+yQ,EAAK9ivB,UAAU852B,cAAgB,WACvBr42B,KAAKsvsB,YACLtvsB,KAAKsvsB,WAAW7roB,UAEpBzjE,KAAKyhtB,SAAW,IAAIo6H,GAAW770B,KAAK44B,OAAQ54B,KAAKk4rB,gBACjDl4rB,KAAKsvsB,WAAa,IAAItvsB,KAAKumqB,SAASvmqB,KAAK44B,OAAOg0qB,aAAa/grB,MAAM7rB,KAAK44B,OAAQ54B,KAAKk4rB,eAAgBl4rB,KAAKyhtB,SAC9G,EACA4/B,EAAK9ivB,UAAUk2qB,WAAa,WACxBz0qB,KAAKw42B,kBACT,EAOAn3H,EAAK9ivB,UAAU26vB,UAAY,SAAUhsb,GACjC,IAAI0rX,EAAO54rB,KAAK44B,OAChB,GAAKggqB,EAAKgU,aAAa9mC,gBAAiB8yB,EAAKoI,QAAYpI,EAAKgU,aAAaC,iBACtEjU,EAAKgU,aAAaC,eAAkB77hB,GAAkB4nhB,EAAKn/nB,QAAQtkD,cAAc,IAAMkwrB,QAC1D,UAA3BzM,EAAKgU,aAAa/grB,KAFzB,CAMA,GADA7rB,KAAK44B,OAAO6gC,QAAQt1D,UAAU2C,IAAI,cAC7B8xrB,EAAK40C,kBAAkB1vuB,QAAUkzK,GAAkBhxK,KAAK44B,OAAOm9qB,cAAc90sB,SAASjB,KAAK44B,OAAO40sB,kBAAkB,GAAGp9tB,aAAa,iBAAkB,OACvJ,IAAK88T,EAED,YADAltU,KAAKmurB,WAAW,qBAAsBnurB,KAAK042B,gBAIzCxriB,IACNA,EAAK0rX,EAAK40C,kBAAkB,IAEhC,GAAIxtuB,KAAK44B,OAAO48nB,sBAA0D,WAAlCx1pB,KAAK44B,OAAOg0qB,aAAa/grB,KAAmB,CAChF,IAAIiyE,EAAM78F,SAASisU,EAAG98T,aAAa,iBAAkB,IACrD88T,EAAKltU,KAAK44B,OAAOm9qB,cAAcj4mB,EACnC,CACA,IAAI66wB,EAAS//K,EAAKwU,aAAaj4rB,cAAc,iBACzC46rB,EAAWnX,EAAKoW,mBAAmB75rB,cAAc,SACjDyjrB,EAAK0J,YAActxhB,GAAkB2nsB,IAAW5oK,GAAYA,EAAS56rB,cAAc,iBACnFnV,KAAKmouB,UAAYj7Z,EAAG23X,WAAa5jsB,SAAS23rB,EAAKoW,mBAAmB75rB,cAAc,SAASA,cAAc,iBAAiB/E,aAAa,iBAAkB,IAElJuo2B,IACL342B,KAAKmouB,UAAYj7Z,EAAG23X,WAAa8zK,EAAO9zK,UAEnB,SAArB33X,EAAG7oU,MAAMqmB,UAGb1qB,KAAKsvsB,WAAW4pD,UAAUhsb,GAC1BltU,KAAK442B,iBACLhgL,EAAKn/nB,QAAQtkD,cAAc,gBAAgB9Q,MAAMqmB,QAAU,OAC3D1qB,KAAK44B,OAAOolE,OAAO,aAAc,CAAC,GAC9B46lB,EAAKgU,aAAaC,eAClB7ssB,KAAK642B,iBA/BT,CAiCJ,EASAx3H,EAAK9ivB,UAAUq80B,aAAe,SAAU1tgB,EAAI9hQ,GACxC,IAAIwvwB,EAAe560B,KAAKmouB,UACG,SAAvBnouB,KAAK44B,OAAOp1B,QAAiE,WAA5CxD,KAAK44B,OAAOg0qB,aAAa0K,gBAA+BlsoB,GAA6B,QAArBA,EAAKyhM,aACtG7sQ,KAAK44B,OAAOw0qB,aAAatmX,kBAAkBE,aAAehnV,KAAK44B,OAAOu0qB,kBAAkBlrW,aACxFxvS,GAAS,GAAG7xD,MAAMb,KAAKmtU,EAAG7zS,uBAAuBgsqB,KAAoB,kBAEhEu1I,GAAgB1tgB,GAAMA,EAAG/oU,WAC9BsuD,GAAS,GAAG7xD,MAAMb,KAAKmtU,EAAG7zS,uBAAuBgsqB,KAAoB,gBAE7E,EAMAg8C,EAAK9ivB,UAAU68qB,UAAY,WACe,UAAlCp7qB,KAAK44B,OAAOg0qB,aAAa/grB,MAAoB7rB,KAAK44B,OAAOg0qB,aAAa4C,mBACnExvsB,KAAK44B,OAAO6gC,QAAQpgC,uBAAuB,eAAev7B,OAC7DkC,KAAKmurB,WAAW,aAAcnurB,KAAKojrB,YAGvCpjrB,KAAK44B,OAAO6gC,QAAQt1D,UAAU0C,OAAO,aACrC7G,KAAKsvsB,WAAWl0B,YAChBp7qB,KAAK442B,iBACL542B,KAAK44B,OAAOolE,OAAO/2F,GAAkB,CAAC,GAClCjH,KAAK44B,OAAOg0qB,aAAaC,eACzB7ssB,KAAK642B,iBAEb,EACAx3H,EAAK9ivB,UAAUq62B,eAAiB,WAC5B542B,KAAK44B,OAAOolE,OAAO/2F,GAAuB,CAAC,EAC/C,EASAo6uB,EAAK9ivB,UAAUg0oB,UAAY,SAAU9goB,EAAMkb,GACvC,GAAK3sB,KAAK44B,OAAOg0qB,aAAainB,YAA9B,CAGA,IAAIzopB,EAAO,CAAE8trB,WAAW,GACnBznvB,GACDzR,KAAK44B,OAAOolE,OAAO/2F,GAAoCmkE,GAEvDA,EAAK8trB,YACLl5vB,KAAK44B,OAAO6gC,QAAQt1D,UAAU2C,IAAI,aAClC9G,KAAKsvsB,WAAW/8D,UAAU9goB,EAAMkb,GAChC3sB,KAAK442B,iBACL542B,KAAK44B,OAAOolE,OAAO,YAAa,CAAC,GATrC,CAWJ,EASAqjpB,EAAK9ivB,UAAUk0oB,aAAe,SAAUwmH,EAAWxnvB,GAC/C,IAAImnrB,EAAO54rB,KAAK44B,OAChB,GAAKggqB,EAAKgU,aAAagzC,cAAvB,CAGA,GAAKnuuB,GACImnrB,EAAKylC,qBAAqBvguB,SAAUkzK,GAAkB4nhB,EAAKimD,iBAKpE,OAAIjmD,EAAKgU,aAAawpG,yBAClBp2yB,KAAKi5vB,UAAYA,EACjBj5vB,KAAKyR,KAAOA,OACZzR,KAAKmurB,WAAW,gBAAiBnurB,KAAKojrB,iBAG1CpjrB,KAAKsvsB,WAAW78D,aAAawmH,EAAWxnvB,GAVhCzR,KAAKmurB,WAAW,uBAAwBnurB,KAAK042B,UAHrD,CAcJ,EAOAr3H,EAAK9ivB,UAAU46vB,UAAY,SAAUjsb,GACjCltU,KAAKgt1B,aAAe9/gB,EAAG98T,aAAa,YACpC,IAAI05rB,EAAS9psB,KAAK44B,OAAOulsB,oBAAoBn+tB,KAAKgt1B,cAC7Ch8qB,GAAkB84hB,IACnB9psB,KAAKyyoB,aAAa,KAAMq3D,EAAOr4rB,KAEvC,EAMA4vuB,EAAK9ivB,UAAUs9rB,QAAU,WACiB,UAAlC77rB,KAAK44B,OAAOg0qB,aAAa/grB,MAAoB7rB,KAAK44B,OAAOg0qB,aAAa4C,oBACrEx+hB,GAAkBhxK,KAAKuvsB,UAAYvvsB,KAAKuvsB,QAAQtukB,cACjDjhI,KAAK44B,OAAO02qB,WAAW+pD,WACvBr5vB,KAAK44B,OAAOolE,OAAO/2F,GAAwB,CAAC,GACxC+pK,GAAkBhxK,KAAKuvsB,UAAYvvsB,KAAKuvsB,QAAQtukB,YAChDjhI,KAAKmurB,WAAW,mBAAoBnurB,KAAKojrB,WAIjDpjrB,KAAK842B,YACT,EASAz3H,EAAK9ivB,UAAU8ruB,WAAa,SAAUxlC,EAAU5nd,EAAOn+O,GACnDkB,KAAKsvsB,WAAW+6B,WAAWxlC,EAAU5nd,EAAOn+O,EAChD,EAQAuivB,EAAK9ivB,UAAUsimB,UAAY,SAAUl0kB,EAAOlb,GACxCzR,KAAKsvsB,WAAWzuG,UAAUl0kB,EAAOlb,EACrC,EAMA4vuB,EAAK9ivB,UAAUu1qB,YAAc,WACzB9zqB,KAAKo7qB,WACT,EAMAimE,EAAK9ivB,UAAUmlyB,UAAY,WACvB1jyB,KAAK67rB,SACT,EAQAwlD,EAAK9ivB,UAAU66vB,SAAW,SAAUzsuB,EAAOswN,GACvCj9O,KAAKsvsB,WAAW8pD,SAASzsuB,EAAOswN,EACpC,EAMAokgB,EAAK9ivB,UAAU++vB,iBAAmB,WAC9B,IAAIy7G,GAAQ/42B,KAAKuvsB,SAAUvvsB,KAAKuvsB,QAAQtukB,WACpC+3uB,GAAQh52B,KAAKi52B,UAAWj52B,KAAKi52B,SAASh4uB,WACtCi4uB,GAAQl52B,KAAKm52B,WAAYn52B,KAAKm52B,UAAUl4uB,WAC5C,OAAO83uB,GAASC,GAASE,CAC7B,EAMA73H,EAAK9ivB,UAAU84sB,gBAAkB,WAC7B,OAAOr3sB,KAAKsvsB,WAAW+H,gBAAkBr3sB,KAAKsvsB,WAAW+H,kBAAoB,CAAC,CAClF,EAMAgqC,EAAK9ivB,UAAU662B,uBAAyB,WACpC,IAAIpqyB,EAAMhvE,KAAKmp1B,qBAAqBnp1B,KAAKuvsB,QAAQ91oB,QAAS,CAAC,GAC3D,OAAOuV,EAAI5xE,OAAOC,KAAK2xE,GAAK,GAChC,EAMAqyqB,EAAK9ivB,UAAU86vB,SAAW,WACtBr5vB,KAAKsvsB,WAAW+pD,UACpB,EACAhY,EAAK9ivB,UAAUu62B,WAAa,WACnB942B,KAAK44B,OAAOg0qB,aAAaC,eAC1B7ssB,KAAK44B,OAAO6gC,QAAQt1D,UAAU0C,OAAO,aAEzC7G,KAAKsvsB,WAAWzT,UAChB77rB,KAAKu9vB,wBAAyB,EAC9Bv9vB,KAAK442B,gBACT,EACAv3H,EAAK9ivB,UAAU4vrB,WAAa,SAAU3pX,EAASx1P,GAC3CA,EAAIw1P,QAAU,QAAUxkU,KAAKoppB,KAAKvtK,YAAYr3K,GAAW,SACzDx1P,EAAIqzZ,WACJrzZ,EAAIxxD,OACAxd,KAAK44B,OAAOm1c,WACZ/+Z,EAAIs/Z,SAEZ,EACA+yQ,EAAK9ivB,UAAU862B,iBAAmB,SAAUpivB,EAAKn4H,GAC7C,IAAI6zC,EAAM7zC,EACV,OAAQm4H,EAAIxwH,MACR,IAAK,SACDksC,EAAOruC,MAAMnC,WAAWrD,IAA8B,KAApBqD,WAAWrD,GAC7C,MACJ,IAAK,UACoB,gBAAjBm4H,EAAIsviB,WACJ5znB,EAAM7zC,IAAUkB,KAAKoppB,KAAKvtK,YAAY,UAAqB,IAAV/8e,GAErD,MACJ,IAAK,OACL,IAAK,WACoB,mBAAjBm4H,EAAIsviB,UAAkD,uBAAjBtviB,EAAIsviB,UACtCznqB,GAASA,EAAMhB,OAClB60C,EAAM,IAAI36B,KAAKlZ,GAEA,KAAVA,IACL6zC,EAAM,MAEV,MACJ,IAAK,WAEDA,EAAM7zC,IAAUA,EAAQ,IAAIkZ,KAAKlZ,IAC7BA,EAAMga,cAAgB,IAAMq4qB,GAAQryrB,EAAMka,WAAa,GAAK,IAAMm4qB,GAAQryrB,EAAMoa,WAAa,KAGzG,OAAOy5B,CACX,EACA0usB,EAAK9ivB,UAAUs62B,eAAiB,WAE5B,IADA,IACS1+oB,EAAK,EAAGysQ,EADF,GAAGhme,MAAMb,KAAKC,KAAK44B,OAAO6gC,QAAQpgC,uBAAuB,gBAChC8gM,EAAKysQ,EAAW9oe,OAAQq8N,IAAM,CAElEtzN,GADW+/d,EAAWzsQ,GAE1B,CACAn6N,KAAK44B,OAAOw0qB,aAAatmX,kBAAkBziV,MAAM+Q,SAAW,WACxDpV,KAAK44B,OAAOuoqB,iBACRnhsB,KAAK44B,OAAO6gC,QAAQtkD,cAAc,mBAClCnV,KAAK44B,OAAO6gC,QAAQtkD,cAAc,iBAAiB9Q,MAAM+Q,SAAW,IAExEpV,KAAK44B,OAAO6gC,QAAQtkD,cAAc,kBAAkB9Q,MAAM+Q,SAAW,GAE7E,EACAisuB,EAAK9ivB,UAAUg62B,iBAAmB,WAC9Bv42B,KAAKojrB,UAAYpjrB,KAAKs52B,UAAU,CAC5B,CACIlj2B,MAAOpW,KAAKu52B,MAAMhs2B,KAAKvN,MACvB6krB,YAAa,CAAErgX,QAASxkU,KAAKoppB,KAAKvtK,YAAY,YAC1Chte,SAAU7O,KAAK44B,OAAO/pB,SAAW,aAAoB7O,KAAK44B,OAAO/pB,SAAW,YAC5E01R,WAAW,IAEnB,CACInuR,MAAOpW,KAAKw52B,UAAUjs2B,KAAKvN,MAC3B6krB,YAAa,CAAEh2qB,SAAU7O,KAAK44B,OAAO/pB,SAAW,UAAiB7O,KAAK44B,OAAO/pB,SAAW,SACpF21T,QAASxkU,KAAKoppB,KAAKvtK,YAAY,mBAExC,cACP,EACAwlQ,EAAK9ivB,UAAU+52B,eAAiB,WAC5Bt42B,KAAK042B,UAAY142B,KAAKs52B,UAAU,CAC5B,CACIlj2B,MAAOpW,KAAKy52B,WAAWls2B,KAAKvN,MAC5B6krB,YAAa,CAAErgX,QAASxkU,KAAKoppB,KAAKvtK,YAAY,YAC1Chte,SAAU7O,KAAK44B,OAAO/pB,SAAW,UAAiB7O,KAAK44B,OAAO/pB,SAAW,SACzE01R,WAAW,KAEpB,YACP,EACA88c,EAAK9ivB,UAAUk72B,WAAa,WACxBz52B,KAAK042B,UAAUn20B,MACnB,EACA8+sB,EAAK9ivB,UAAU+62B,UAAY,SAAUI,EAAY742B,GAC7C,IAAI68J,EAAM19J,KAAK44B,OAAOoF,cAAc,MAAO,CAAEloB,GAAI9V,KAAK44B,OAAO6gC,QAAQ3jD,GAAKjV,IAC1Eb,KAAK44B,OAAO6gC,QAAQliD,YAAYmmJ,GAChC,IAAI1+I,EAAU,CACVuoqB,eAAe,EACfn5S,SAAS,EACT77U,SAAS,EACTkynB,eAAe,EACftiqB,OAAQniB,KAAK44B,OAAO6gC,QACpBl2D,MAAO,QACPs+qB,kBAAmB,CAAEjY,OAAQ,QAC7B/6pB,SAAU7O,KAAK44B,OAAO/pB,SAAW7O,KAAK44B,OAAO/pB,SAAW,IAE5DmQ,EAAQghD,QAAU05yB,EAClB,IAAI1qyB,EAAM,IAAIyymB,GAAOziqB,GAIrB,OAFAgwD,EAAyB,kBAAI,EAC7BA,EAAIlwD,SAAS4+I,GACN1uF,CACX,EACAqyqB,EAAK9ivB,UAAUi72B,UAAY,WACnBx52B,KAAK44B,OAAO+gqB,cACZ35rB,KAAK44B,OAAO+gqB,YAAYggL,eAAgB,GAE5C352B,KAAK44B,OAAOo0qB,YAAY8lB,iBACxB9ytB,KAAK44B,OAAOo0qB,YAAY5zB,eACxBp5qB,KAAKojrB,UAAU7gpB,OACfviC,KAAK44B,OAAOolE,OAAO,iBAAkB,CAAC,EAC1C,EACAqjpB,EAAK9ivB,UAAUg72B,MAAQ,WACnB,OAAQv52B,KAAKojrB,UAAU3pnB,QAAQtkD,cAAc,kBAAkB2xU,kBAAkB1qI,WAC7E,KAAKp8M,KAAKoppB,KAAKvtK,YAAY,iBACvB77e,KAAKsvsB,WAAW78D,aAAazyoB,KAAKi5vB,UAAWj5vB,KAAKyR,MAClD,MACJ,KAAKzR,KAAKoppB,KAAKvtK,YAAY,cACvB77e,KAAKsvsB,WAAWl0B,YAChB,MACJ,KAAKp7qB,KAAKoppB,KAAKvtK,YAAY,oBACvB77e,KAAK842B,aACL,MACJ,KAAK942B,KAAKoppB,KAAKvtK,YAAY,wBACe,UAAlC77e,KAAK44B,OAAOg0qB,aAAa/grB,MACzB7rB,KAAKsvsB,WAAWw/I,uBAEhB9u1B,KAAK44B,OAAO+gqB,cACZ35rB,KAAK44B,OAAO+gqB,YAAYggL,eAAgB,GAE5C352B,KAAK452B,gBAGb552B,KAAKw52B,WACT,EACAn4H,EAAK9ivB,UAAUs72B,sBAAwB,WAC/B752B,KAAK44B,OAAOooqB,SACZhhsB,KAAKup1B,iBACLvp1B,KAAKo3qB,eAETp3qB,KAAKyjE,SACT,EAKA49qB,EAAK9ivB,UAAU8O,iBAAmB,WAC1BrN,KAAK44B,OAAOspc,cAGhBlie,KAAK852B,aAAe,CAAC,CAAE5gzB,MAAOjyD,GAA4Bg5D,QAASjgE,KAAK2ie,mBACpE,CAAEzpa,MAAOjyD,GAAmBg5D,QAASjgE,KAAKy0qB,YAC1C,CAAEv7mB,MAAOjyD,GAAmBg5D,QAASjgE,KAAKq6e,iBAC1C,CAAEnhb,MAAOjyD,GAAgBg5D,QAASjgE,KAAKw42B,kBACvC,CAAEt/yB,MAAOjyD,GAAuBg5D,QAASjgE,KAAK642B,gBAC9C,CAAE3/yB,MAAOjyD,GAAqBg5D,QAASjgE,KAAKg3qB,cAC5C,CAAE99mB,MAAOjyD,GAAoBg5D,QAASjgE,KAAKo3qB,aAC3C,CAAEl+mB,MAAOjyD,GAAgBg5D,QAASjgE,KAAK652B,wBAC3CpyJ,GAAuBzntB,KAAK44B,OAAQ54B,KAAK852B,cAAc,EAAM952B,MAC7DA,KAAK+ruB,oBAAsB/ruB,KAAKm9tB,cAAc5vtB,KAAKvN,MACnDA,KAAKgsuB,uBAAyBhsuB,KAAK0yqB,eAAenlqB,KAAKvN,MACvDA,KAAK44B,OAAOvrB,iBAAiBpG,GAAoBjH,KAAK+ruB,qBACtD/ruB,KAAK44B,OAAOvrB,iBAAiBpG,GAAuBjH,KAAKgsuB,wBAC7D,EAKAqV,EAAK9ivB,UAAUs6D,oBAAsB,WAC7B74D,KAAK44B,OAAOspc,cAGhBulP,GAAuBzntB,KAAK44B,OAAQ54B,KAAK852B,cAAc,GACvD952B,KAAK44B,OAAOigC,oBAAoB5xD,GAAuBjH,KAAKgsuB,wBAC5DhsuB,KAAK44B,OAAOigC,oBAAoB5xD,GAAoBjH,KAAK+ruB,qBAC7D,EACAsV,EAAK9ivB,UAAUm0qB,eAAiB,SAAUx1qB,GACxB,CAAC,MAAO,YAAa,OAAQ,SAAU,SAAU,kBAAmB,uBACtEwH,QAAQxH,EAAE2vQ,aAAe,IACjC7sQ,KAAK44B,OAAOooqB,SAAShhsB,KAAK44B,OAAOg0qB,aAAaC,eAE5B,cAAlB3vsB,EAAE2vQ,aACF7sQ,KAAK44B,OAAOo0qB,YAAY5zB,eAE5Bp5qB,KAAK442B,gBACT,EAOAv3H,EAAK9ivB,UAAU4q1B,qBAAuB,SAAUrniB,EAAMktf,GAClD,IAAIp2G,EAAO54rB,KAAK44B,OAChB,GAAIggqB,EAAKgU,aAAa7jkB,SAAU,CAE5B,IADA,IAAIpmD,EAAW,GAAG/hF,MAAMb,KAAK+hT,EAAKn/N,UACzBp4E,EAAI,EAAGA,EAAIo4E,EAAS7kF,OAAQyM,IACjC,IAAMo4E,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKq5B,aAAa,SAA+D,mBAAnD2oD,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKuL,WACrGy2E,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKwD,UAAUC,SAAS,oBAAqE,WAA9Cu+E,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAK8F,OACnH6nrB,GAAa3rmB,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAM,sBAAuB2trB,GAAa3rmB,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAM,uBAAyB,CACvJ,IAAIs8O,EAASt6J,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKq5B,aAAa,QAAW8tuB,GAAkBnlrB,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKyP,aAAa,SAC1I03vB,GAAkBnlrB,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKyP,aAAa,OACpEyY,EAAS+vqB,EAAKxG,iBAAiBn1c,IAAU,CAAEA,MAAOA,EAAOx2O,KAAMk8E,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKyP,aAAa,SACjHtR,OAAQ,EACQ,aAAhB+pB,EAAOpiB,MAAuC,YAAhBoiB,EAAOpiB,KACrC3H,EAAQ6jF,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKozR,QAExCpxM,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAK7B,OAC1CA,EAAQ6jF,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAK7B,MACzC6jF,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKsie,eACrCtgZ,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKsie,cAAcnle,SAClDkzK,GAAkBruF,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKsie,cAAc,GAAGnke,SACzE6jF,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKsI,OACrCnK,EAAQ6jF,EAAS1hF,SAASsJ,EAAE5J,WAAY,KACnCsie,cAAc,GAAGnke,QAGrB6jF,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKsie,gBAC1Cnke,EAAQ6jF,EAAS1hF,SAASsJ,EAAE5J,WAAY,KACnCsie,cAAc,GAAGnke,OAEtB+pB,EAAOm9oB,MAAoC,kBAArBn9oB,EAAOm9oB,KAAKxwiB,KAClC12H,EAAQivN,GAASllM,EAAOm9oB,KAAKxwiB,KAAM7wH,OAA3BopN,CAAmCprI,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAM7B,GAE5E+pB,EAAOm9oB,MAAQn9oB,EAAOm9oB,KAAKxwiB,OAChC12H,EAAQ+pB,EAAOm9oB,KAAKxwiB,KAAK7yC,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAM7B,IAEnEA,EAAQ85rB,EAAK0W,WAAW+pK,iBAAiBxw1B,EAAQ/pB,GACC,UAA9C6jF,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAK8F,KACjCk8E,EAAS1hF,SAASsJ,EAAE5J,WAAY,KAAKozR,SACrC0yW,GAAS9yW,SAAS9qQ,EAAOo0N,MAAOn+O,EAAOkwyB,IAItB,kBAAVlwyB,GACPkB,KAAK44B,OAAOord,SAASllf,GAEzB2noB,GAAS9yW,SAAS9qQ,EAAOo0N,MAAOn+O,EAAOkwyB,GAE/C,CAEJ,OAAOA,CACX,CAEA,IADA,IAAI/3qB,EAAM2hkB,EAAKkD,YAAYt+rB,QAAO,SAAUy5H,GAAO,OAAOA,EAAI8viB,YAAc,IACnEhhqB,EAAI,EAAGA,EAAIkxH,EAAIn5H,OAAQiI,IAC5B,GAAI+7S,EAAK8ld,GAAkB3woB,EAAIh2H,SAAS8E,EAAEpF,WAAY,KAAKs8O,QAAS,CAChE,IAAIg3e,EAAgB,GAAGrztB,MAAMb,KAAK+hT,EAAK8ld,GAAkB3woB,EAAIh2H,SAAS8E,EAAEpF,WAAY,KAAKs8O,SAErFxN,GADJwkf,EAAgBA,EAAcn2tB,OAASm2tB,EAAgB,CAACnya,EAAK8ld,GAAkB3woB,EAAIh2H,SAAS8E,EAAEpF,WAAY,KAAKs8O,UACtFz/O,QAAO,SAAUN,GACtC,OAAQ8zK,GAAmB9zK,EAAE+le,cACjC,IACoB,IAAhBxzP,EAAK3xO,SACL2xO,EAAOwkf,EAAcz2tB,QAAO,SAAUN,GAAK,OAAOA,EAAE88B,aAAa,OAAS,KAE9E,IAASzvB,EAAI,EAAGA,EAAIklO,EAAK3xO,OAAQyM,IAAK,CAC9BzL,EAAQkB,KAAK+tN,SAAS92F,EAAIh2H,SAAS8E,EAAEpF,WAAY,KAAM8uO,EAAKxuO,SAASsJ,EAAE5J,WAAY,KAAMquyB,GAChD,WAAzC/3qB,EAAIh2H,SAAS8E,EAAEpF,WAAY,KAAK8F,OAChC3H,EAAQkB,KAAK44B,OAAOord,SAASllf,IAEjC2noB,GAAS9yW,SAAS18J,EAAIh2H,SAAS8E,EAAEpF,WAAY,KAAKs8O,MAAOn+O,EAAOkwyB,EACpE,CACJ,CAGJ,IADA,IAAI3ztB,EAAS,GAAGz6E,MAAMb,KAAK+hT,EAAKzoR,uBAAuB,YAC9Cl8B,EAAI,EAAGgvE,EAAMkP,EAAOv9E,OAAQX,EAAIgvE,EAAKhvE,IAAK,CAC/C,IAAI482B,EAAQnhL,EAAKqC,eAAe5/mB,EAAOp6E,SAAS9D,EAAEwD,WAAY,KAAKyP,aAAa,iBAChF,GAAI2p2B,GAASA,EAAM98nB,MAAO,CAClBn+O,EAAQkB,KAAK+tN,SAASgspB,EAAO1+xB,EAAOp6E,SAAS9D,EAAEwD,WAAY,KAAMquyB,GAClD,WAAf+qE,EAAMtz2B,MAAuBsz2B,EAAM9yM,mBAAsC,kBAAVnoqB,IAC/DA,EAAQkB,KAAK44B,OAAOord,SAASllf,IAEjC2noB,GAAS9yW,SAASomlB,EAAM98nB,MAAOn+O,EAAOkwyB,EAC1C,CACJ,CACA,OAAOA,CACX,EACA3tD,EAAK9ivB,UAAUwvN,SAAW,SAAU92F,EAAKxN,EAAOulrB,GAC5C,IAAIlwyB,EAAQ2qH,EAAMw5W,cACdx5W,EAAMw5W,cAAc,GAAGnke,MAAQ2qH,EAAM3qH,MACrC85rB,EAAO54rB,KAAK44B,OACZ62M,EAAOx4G,EAAI+uiB,KAAKxwiB,KAcpB,MAbiB,aAAbyB,EAAIxwH,MAAoC,YAAbwwH,EAAIxwH,OAC/B3H,EAAQ2qH,EAAMsqK,SAEE,kBAATtkD,GACPA,EAAO1hB,GAAS0hB,EAAM9qO,QACtB7F,EAAQ85rB,EAAK0W,WAAW+pK,iBAAiBpivB,EAAMw4G,EAAMhmH,EAAO3qH,KAG5DA,EAAQ85rB,EAAK0W,WAAW+pK,iBAAiBpivB,EAAKA,EAAI+uiB,KAAKxwiB,KAAK/L,EAAO3qH,IAEnEkyK,GAAkBg+nB,EAAW/3qB,EAAIgmH,SAAqB,KAAVn+O,IAC5CA,EAAQkwyB,EAAW/3qB,EAAIgmH,QAEpBn+O,CACX,EAMAuivB,EAAK9ivB,UAAU4+tB,cAAgB,SAAUjguB,GACrC,IAAuB,gBAAlBA,EAAE2vQ,aAAkC7sQ,KAAK44B,OAAO+0pB,yBAA2B3trB,KAAK44B,OAAO0zqB,uBAAuBC,aAC1F,YAAlBrvsB,EAAE2vQ,cAA+B7sQ,KAAK44B,OAAOooqB,QAA4C,UAAlChhsB,KAAK44B,OAAOg0qB,aAAa/grB,KACnF7rB,KAAKo7qB,gBAEJ,CACD,IAAIojK,EAAUx+0B,KAAK44B,OAAO6gC,QAAQtkD,cAAc,IAAMkwrB,IAClDtvkB,EAAS/1H,KAAK44B,OAAO6gC,QAAQtkD,cAAc,IAAMkwrB,IACrD,GAAIm5I,GAAWx+0B,KAAK44B,OAAO0pqB,YAAgC,kBAAlBplsB,EAAE2vQ,aACpC5rQ,SAASqtrB,GAAakwJ,EAASn5I,IAAcj1rB,aAAai1rB,IAAwB,IAAMrlsB,KAAK44B,OAAO0pqB,WACvG,OAEJ,IACI03K,GAAgE,IADvC,CAAC,kBAAmB,mBAAoB,sBAAuB,oBAAqB,OAAQ,iBAAkB,iBACnGt12B,QAAQxH,EAAE2vQ,aAC9C++b,GAAa5rsB,KAAK44B,OAAOg0qB,aAAaC,eAAkB7ssB,KAAK44B,OAAOg0qB,aAAaC,gBAChF77hB,GAAkBhxK,KAAK44B,OAAO6gC,QAAQtkD,cAAc,iBACrD8k2B,GAAwBj62B,KAAK44B,OAAO48nB,sBAAwBx1pB,KAAK44B,OAAO+0pB,0BAA4B3trB,KAAKuvsB,SACtG3D,IAAc5rsB,KAAKuvsB,QAAQrtO,cAAgBs8W,GAAWzotB,GAA4B,WAAlB74H,EAAE2vQ,cAA6BmtmB,IAChGh62B,KAAK44B,OAAO48nB,sBAAwBo2C,GAA+C,UAAlC5rsB,KAAK44B,OAAOg0qB,aAAa/grB,MAAoB7rB,KAAKuvsB,UAAYvvsB,KAAKuvsB,QAAQrtO,aAC3H83Y,IAAe982B,EAAE4jV,QAAWm5hB,KAC/Bj62B,KAAKup1B,iBACLvp1B,KAAKo3qB,cAEb,CACJ,EAMAiqE,EAAK9ivB,UAAUgr1B,eAAiB,SAAU1ozB,GAC3B7gC,KAAK44B,OACPg0qB,aAAa7jkB,WAClB/oI,KAAK44B,OAAOu2pB,gBAAgB,CAAC,yBACzBnvrB,KAAK44B,OAAO4ud,SACZxnf,KAAK44B,OAAO49pB,oBAGpB31pB,EAAOA,GAAc7gC,KAAK44B,OAAO+4tB,yBAAyB3xvB,KAAK44B,OAAO+jqB,6BAC7Dt/qB,MAAK,SAAUwL,GAAU,OAAQmoJ,GAAkBnoJ,EAAOk+oB,aAAe,MAC9E/mqB,KAAK44B,OAAOu2pB,gBAAgB,CAAC,iBACzBnvrB,KAAK44B,OAAO4ud,SACZxnf,KAAK44B,OAAO49pB,mBAGpB,IAAK,IAAIr8d,EAAK,EAAG2tc,EAASjnoB,EAAMs5L,EAAK2tc,EAAOhqqB,OAAQq8N,IAAM,CACtD,IAAIljG,EAAM6wiB,EAAO3tc,GACbsV,EAAOx4G,EAAI+uiB,KAAKvimB,QAChBwzD,EAAI+uiB,KAAKvimB,UACW,kBAATgsK,GACPA,EAAO1hB,GAAS0hB,EAAM9qO,WAItBsyH,EAAI+uiB,KAAKvimB,UAGrB,CAEA,IADA,IAAIkf,EAAW,GAAG/hF,MAAMb,KAAKC,KAAKuvsB,QAAQ91oB,QAAQkpB,UACzCxlF,EAAI,EAAGA,EAAIwlF,EAAS7kF,OAAQX,IACjC,GAAIwlF,EAAS1hF,SAAS9D,EAAEwD,WAAY,KAAKq5B,aAAa,QAAS,CAC3D,IAAIkg1B,EAAkBv3xB,EAAS1hF,SAAS9D,EAAEwD,WAAY,KAAKuD,cAAcC,UAAUC,SAAS,SACxFu+E,EAAS1hF,SAAS9D,EAAEwD,WAAY,KAAKuD,cAAciR,cAAc,SAAWwtE,EAAS1hF,SAAS9D,EAAEwD,WAAY,KAC5Gu52B,EAAgBj3Y,eAChBi3Y,EAAgBj3Y,cAAcnle,SAC7Bo82B,EAAgBj3Y,cAAc,GAAGf,aAClCg4Y,EAAgBj3Y,cAAc,GAAGx/Z,SAEzC,CAER,EAKA49qB,EAAK9ivB,UAAU64qB,YAAc,WACzBp3qB,KAAK642B,iBAEL,IADA,IAAIsB,EAAc,CAACn62B,KAAKuvsB,QAASvvsB,KAAKi52B,SAAUj52B,KAAKm52B,UAAWn52B,KAAKo62B,gBAC5Dj92B,EAAI,EAAGA,EAAIg92B,EAAYr82B,OAAQX,IAChCg92B,EAAYl52B,SAAS9D,EAAEwD,WAAY,MAAQw52B,EAAYl52B,SAAS9D,EAAEwD,WAAY,KAAK84D,UAC/E0gzB,EAAYl52B,SAAS9D,EAAEwD,WAAY,KAAKuhe,cAC5Ci4Y,EAAYl52B,SAAS9D,EAAEwD,WAAY,KAAK8iE,UACpCzjE,KAAK44B,OAAO4ud,SAA6C,WAAlCxnf,KAAK44B,OAAOg0qB,aAAa/grB,OAC5CmlJ,GAAkBhxK,KAAK44B,OAAOg0qB,aAAa7jkB,WAC/CoxuB,EAAYl52B,SAAS9D,EAAEwD,WAAY,KAAK84D,QAAQ5yD,UAI5D7G,KAAK642B,gBACT,EAOAx3H,EAAK9ivB,UAAUklE,QAAU,WACrB,IAAI65pB,EAAct9tB,KAAK44B,OAAO6gC,QAC9B,GAAK6jqB,EAAL,CAGA,IAAI2wB,KAAe3wB,EAAYnotB,cAAc,IAAMkwrB,MAC/Ci4B,EAAYnotB,cAAc,IAAMkwrB,KAChC4oD,GACAjuvB,KAAKo3qB,cAETp3qB,KAAK64D,sBACL,IAAI8lS,EAAO3+V,KAAKojrB,UAAU3pnB,QACtBklS,EAAKuuT,kBAAoB,IACzBltpB,KAAKojrB,UAAU3/mB,UACf58D,GAAO83V,KAEXA,EAAO3+V,KAAK042B,UAAUj/yB,SACbyzlB,kBAAoB,IACzBltpB,KAAK042B,UAAUj1yB,UACf58D,GAAO83V,IAENsvZ,GAGDjuvB,KAAKsvsB,YACLtvsB,KAAKsvsB,WAAW7roB,SArBpB,CAuBJ,EACA49qB,EAAK9ivB,UAAU87e,gBAAkB,SAAUn9e,GAKvC,OAJgB,SAAS4D,KAAKyD,UAAU+4F,WACvBpgG,EAAEokS,SAAwB,cAAbpkS,EAAE8kN,SAC5B9kN,EAAE8kN,OAAS,UAEP9kN,EAAE8kN,QACN,IAAK,SACDhiN,KAAKuyoB,YACL,MACJ,IAAK,SACyB,UAArBr1oB,EAAEilB,OAAOi/H,UAAuBlkJ,EAAEilB,OAAOhe,UAAUC,SAAS,kBACzDmxB,SAASpgB,cAAc,gCAC3BnV,KAAKyyoB,eAET,MACJ,IAAK,KACDzyoB,KAAKk5vB,YACL,MACJ,IAAK,QACI5qE,GAAapxrB,EAAEilB,OAAQ,qBAAyD,UAAlCniB,KAAK44B,OAAOg0qB,aAAa/grB,QACvEyiqB,GAAapxrB,EAAEilB,OAAQkjrB,MAA2BrlsB,KAAK44B,OAAO0pqB,YAC1DtisB,KAAK44B,OAAOg0qB,aAAaC,gBAAkB7ssB,KAAK44B,OAAO48nB,sBAAwBx1pB,KAAK44B,OAAO+0pB,2BACzFW,GAAapxrB,EAAEilB,OAAQkjrB,MAC1B9vqB,SAAS8D,uBAAuB,gBAAgBv7B,SACpDZ,EAAEijE,iBACFngE,KAAK67rB,WAET,MACJ,IAAK,SACG77rB,KAAK44B,OAAOooqB,SAAWhhsB,KAAK6+0B,sBACU,UAAlC7+0B,KAAK44B,OAAOg0qB,aAAa/grB,KACzB7rB,KAAKsvsB,WAAWg/I,iBAGhBtu1B,KAAKq62B,eAAen92B,IAGxB8C,KAAK6+0B,sBACL7+0B,KAAK6+0B,qBAAsB,GAE/B,MACJ,IAAK,MACL,IAAK,WACD7+0B,KAAKq62B,eAAen92B,GAGhC,EACAmkvB,EAAK9ivB,UAAU872B,eAAiB,SAAUn92B,GACtC,GAAI8C,KAAK44B,OAAOooqB,QAA4C,UAAlChhsB,KAAK44B,OAAOg0qB,aAAa/grB,KAAkB,CACjE,IAAIi0qB,EAAYxR,GAAapxrB,EAAEilB,OAAQ,gBAAkBmsqB,GAAapxrB,EAAEilB,OAAQ,cAChF,GAAI29qB,EAAW,CACX,IAAIw6K,EAAqB,GAAG152B,MAAMb,KAAK+/rB,EAAUryqB,iBAAiB,8BAC9D8s1B,EAAiB,GAAG352B,MAAMb,KAAK+/rB,EAAUryqB,iBAAiB,mBAC9D,GAAI8s1B,EACA,IAAK,IAAIp92B,EAAI,EAAGA,EAAIo92B,EAAez82B,OAAQX,IACvCm92B,EAAqBA,EAAmBnz2B,OAAO,GAAGvG,MAC7Cb,KAAKw62B,EAAet52B,SAAS9D,EAAEwD,WAAY,KAAK8sB,iBAAiB,yBAG9E,IAAI8xqB,EAAUjR,GAAapxrB,EAAEilB,OAAQ,aACrC,GAAKo9qB,IAAYjR,GAAagsL,EAAmBA,EAAmBx82B,OAAS,GAAI,cAC7D,QAAbZ,EAAE8kN,SAAqBu9e,EAAQp7rB,UAAUC,SAAS,kBACjDm7rB,IAAYjR,GAAagsL,EAAmB,GAAI,cAA6B,aAAbp92B,EAAE8kN,SACjEhiN,KAAK44B,OAAOg0qB,aAAaC,eAA+B,WAAb3vsB,EAAE8kN,OAAqB,CACvE,IAAI9uI,EAAM4snB,EAAU1vrB,aAAa,YAE7By0rB,EADO7ksB,KAAK44B,OAAOouG,UACHrlI,KAAI,SAAUwI,GAAK,OAAOA,EAAEiG,aAAa,WAAa,IAAG1L,QAAQwuE,GACjFlzE,KAAK44B,OAAO0pqB,YAAchU,GAAawR,EAAW,eAClD+E,GAAsB7ksB,KAAK44B,OAAO0pqB,YAElCxC,EAAU37rB,UAAUC,SAAS,gBAC7BygsB,EAAW,GAEE,WAAb3nsB,EAAE8kN,OACFhiN,KAAKo7qB,aAGLp7qB,KAAKu9vB,wBAAyB,EAC9Bv9vB,KAAK67rB,UACL77rB,KAAKu9vB,wBAAyB,GAE9Bv9vB,KAAK44B,OAAOo0qB,YAAY9isB,UAAYlK,KAAK44B,OAAOg0qB,aAAaC,eAC7D/M,EAAU37rB,UAAUC,SAAS,gBAAmBpE,KAAK44B,OAAOg0qB,aAAaC,eACxE/M,EAAU37rB,UAAUC,SAAS,eAAiB4sK,GAAkBhxK,KAAK44B,OAAO6gC,QAAQtkD,cAAc,kDACnGnV,KAAK44B,OAAOo0qB,YAAY9isB,OAAOksD,OAAOkW,QAAU,CAACu4nB,EAAU,GAEnE,CACI7ksB,KAAK44B,OAAOg0qB,aAAaC,eAA8B,QAAb3vsB,EAAE8kN,QAAoBsse,GAAapxrB,EAAEilB,OAAQ,gBACvFniB,KAAKu9vB,wBAAyB,EAEtC,CACJ,CACJ,EACAlc,EAAK9ivB,UAAUy4qB,aAAe,SAAU5rmB,GACpCprE,KAAKw62B,WAAapvyB,EAClBprE,KAAKmurB,WAAW,uBAAwBnurB,KAAKojrB,UACjD,EACAi+D,EAAK9ivB,UAAUq72B,cAAgB,WAC3B552B,KAAKw62B,WAAWv6yB,QAAQlgE,KAAKC,KAAKw62B,WAAW9rzB,SAAU1uD,KAAKw62B,WAAW7pL,KAAM3wrB,KAAKw62B,WAAW5pL,KAAM5wrB,KAAKw62B,WAAW3pL,KAAM7wrB,KAAKw62B,WAAW1pL,KAAM9wrB,KAAKw62B,WAAWzpL,KAAM/wrB,KAAKw62B,WAAWxpL,KAAMhxrB,KAAKw62B,WAAWC,KAAMz62B,KAAKw62B,WAAWE,KACrO,EAOAr5H,EAAK9ivB,UAAUmq1B,oBAAsB,SAAU7nzB,EAAM850B,GACjD,IAAI/hL,EAAO54rB,KAAK44B,OAEZkpR,EAAyC,WAAlC9hT,KAAK44B,OAAOg0qB,aAAa/grB,KAChC+sqB,EAAKgU,aAAaC,eAAiBjU,EAAKn/nB,QAAQtkD,cAAc,IAAMkwrB,IAChEzM,EAAKn/nB,QAAQtkD,cAAc,IAAMkwrB,IAAoBhsqB,uBAAuB,cAAcp4B,UAHxF,GAGqGN,WAAY,KACnHi4rB,EAAKn/nB,QAAQpgC,uBAAuB,cAAcp4B,UAJhD,GAI6DN,WAAY,KAC/EkQ,GAAO,IAAM+nrB,EAAKn/nB,QAAQ3jD,GAAK,kCAAmCyf,UAElEmjH,EAAQ,CAAC,EACTsynB,EAAS,CAAC,EACVC,EAAU,CAAC,EACfpquB,EAAOA,GAAc+3pB,EAAKK,aAC1B,IAAK,IAAI97rB,EAAI,EAAGA,EAAI0jC,EAAK/iC,OAAQX,KACxB0jC,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAK4xD,SAAuC,WAA3BqmoB,EAAKgU,aAAa/grB,QAAsG,IAAhF+sqB,EAAKmB,cAAc54jB,QAAQz8H,QAAQm8B,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,QAC5H,WAA3B27c,EAAKgU,aAAa/grB,QAGrBgV,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKqktB,iBAAmBh0iB,GAAkB2psB,IACtE5vG,GAAmBlquB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAX3C,EAWwD+3I,EAAOsynB,EAAQC,EAASpquB,EAAK/iC,QAGjG46I,EAAQh3I,GAAOg3I,EAAOsynB,EAAQC,GAC9BjrwB,KAAK44B,OAAO02qB,WAAWC,QAAUvvsB,KAAK462B,cAAc94jB,EAAM64jB,GAAoBjiuB,EAClF,EAOA2omB,EAAK9ivB,UAAUq82B,cAAgB,SAAU94jB,EAAMppK,GAC3C,IAAIkoE,EAAQ5gN,KACZ,OAAO,IAAIqv1B,GAAcvtiB,EAAM,CAC3BppK,MAAOA,EACPlgI,OAAQxY,KAAK44B,OAAOpgB,OACpBqi2B,mBAAoB,SAAUzvyB,GAC1Bw1I,EAAMi6pB,mBAAmBzvyB,EAC7B,EACA4nxB,gBAAiB,SAAUtuZ,EAAcjpa,GACrC,IAAIy3C,EAAMwxX,EAAat0b,aAAa,gBAChCg7D,EAAO,CACPviD,OAAQ+3L,EAAMhoL,OAAOqiqB,eAAe/nnB,GACpCz3C,MAAOA,EACPipa,aAAcA,EACd5lc,MAAO4lc,EAAa5lc,UAEjBo6D,OAASA,MAAqB,eAAKA,MAAqB,cAAE/0D,UAAUC,SAAS,qBAC/Ew8M,EAAMhoL,OAAOg0qB,aAAaC,eAAmBjsf,EAAMhoL,OAAOg0qB,aAAaC,eAAiB3zoB,OAASA,MAAM/2C,SACvGmsqB,GAAap1nB,MAAM/2C,OAAQy+L,EAAMhoL,OAAO6gC,QAAQ3jD,GAAK,WAAW,IAC5Dw4qB,GAAap1nB,MAAM/2C,OAAQ,iBAAmB+2C,MAAM/2C,OAAOhe,UAAUC,SAAS,WAC3E80D,MAAM/2C,OAAOhN,cAAc,aAAgByrM,EAAM28iB,wBACpDjvE,GAAap1nB,MAAM/2C,OAAQ,kBAAoBmsqB,GAAap1nB,MAAM/2C,OAAQ,aACtD,UAApB+2C,MAAc,SAAkBo1nB,GAAap1nB,MAAM/2C,OAAQ,cAAgBmsqB,GAAap1nB,MAAM/2C,OAAQ,iBAC1Gy+L,EAAMhoL,OAAOg0qB,aAAaC,gBAAkB77hB,GAAkB4vC,EAAMhoL,OAAO6gC,QAAQtkD,cAAc,IAAMkwrB,OACxGzkf,EAAMk6pB,kBAAkBp2a,EAAcjpa,GAE1CmlL,EAAM28iB,wBAAyB,EAC/B38iB,EAAMhoL,OAAOolE,OvInjBG,8BuImjB+B5yB,EACnD,GAER,EACAi2qB,EAAK9ivB,UAAUu82B,kBAAoB,SAAUp2a,EAAcjpa,GACvD,GAAIz7B,KAAK44B,OAAOooqB,OAAQ,CACpB,IAAIlrrB,EAAK2lB,EAAMrrB,aAAa,OACxBuuV,EAAO3+V,KAAK+62B,aAAar2a,GAAcvvb,cAAc,IAAM0yvB,GAAiB/xvB,GAAM,UACjF6oV,EAIDA,EAAKxpV,cAAc,kBAAkBwJ,UAAY8c,EAAM8yD,UAHvDvuF,KAAKg8vB,cAAct3T,EAAcjpa,EAAO3lB,EAAI,GAKpD,CACJ,EACAuruB,EAAK9ivB,UAAUw82B,aAAe,SAAUr2a,GACpC,IAAIs2a,EAEAlyvB,EADA8vkB,EAAO54rB,KAAK44B,OAWhB,MAT+B,WAA3BggqB,EAAKgU,aAAa/grB,MAClBmv1B,EAAepiL,EAAK0J,YAAcxhO,GAAQp8B,EAAc,IAAM2gQ,KAAiBzM,EAAK0J,YAC7ErhsB,SAAS6/d,GAAQp8B,EAAc,IAAM2gQ,IAAcj1rB,aAAai1rB,IAAwB,KAAO,GACtGv8kB,EAAQ9oH,KAAK44B,OAAOuoqB,eAAiBvI,EAAKn/nB,QAAUuhzB,GAAgBpiL,EAAKgU,aAAaC,gBACjFjU,EAAKpjC,sBAAwBojC,EAAKjL,yBAA4BiL,EAAKwW,iBAAmBxW,EAAKuU,mBAGhGrklB,EAAQj4G,GAAO,IAAM+nrB,EAAKn/nB,QAAQ3jD,GAAK,sBAAuByf,UAE3DuzF,CACX,EACAu4nB,EAAK9ivB,UAAU082B,kBAAoB,SAAUt8gB,EAAMvzR,GAC/C,IAAI41N,EAAKstZ,GAAaljnB,EAAK3R,QAAS4roB,IACpC,GAAIrka,EAAI,CACJ,IAAIk6kB,EAAUl6kB,EAAG99R,wBAAwBE,MACrC+32B,EAAYx8gB,EAAKz7V,wBAAwBE,MAC7C,GAAI+32B,EAAYD,EAAS,CACrB,IAAInmX,EAASomX,EAAYD,EACzBv8gB,EAAKt6V,MAAMf,KAAQq7V,EAAKxiP,WAAa44Y,EAAU,IACnD,CACJ,CACJ,EACAssP,EAAK9ivB,UAAUs82B,mBAAqB,SAAUzvyB,GAC1C,GAAIprE,KAAK44B,OAAOooqB,OAAQ,CACpB,IAAIriW,EAAO3+V,KAAK+62B,aAAa3vyB,EAAK3R,SAAStkD,cAAc,IAAM0yvB,GAAiBz8rB,EAAKy1wB,WAAa,UAClG,GAAI7g1B,KAAK44B,OAAOg0qB,aAAaC,gBAAkBluW,GAAQvzR,EAAK3R,QAAS,CACjE,IAAIh+B,EAAQ6ypB,GAAaljnB,EAAK3R,QAAS,aAAatkD,cAAc,YAC9DsmB,GACAA,EAAMt3B,UAAU0C,OAAO,UAE/B,CACI83V,IACoB,YAAhBvzR,EAAKisH,QACLsnK,EAAKt6V,MAAMqmB,QAAU,GACrB1qB,KAAKi72B,kBAAkBt8gB,EAAMvzR,IAG7BuzR,EAAKt6V,MAAMqmB,QAAU,OAGjC,CACJ,EACA22tB,EAAK9ivB,UAAUy9vB,cAAgB,SAAUvisB,EAASh+B,EAAO56B,EAAM6pB,GAC3D,IAAI6krB,EAAUvvsB,KAAKuvsB,QAAQ91oB,QACvB2hzB,EAAa9sL,GAAa70nB,EAAS,wBACnC2hzB,IACA7rK,EAAUvvsB,KAAKo62B,eAAe3gzB,SAElC,IAKI4hzB,EAEAC,EAPAC,EAAWv72B,KAAK44B,OAAOw0qB,aAAatmX,kBACpCkvY,EAAWulJ,EAASt5gB,aAAes5gB,EAAS342B,cAAgB242B,EAASx5gB,YAAcw5gB,EAAS142B,YAC5F870B,EAA6C,WAAlC3+0B,KAAK44B,OAAOg0qB,aAAa/grB,KACpCm1Q,EAAK8/L,GAAQrna,EAAS,IAAM4roB,IAC5Bz8qB,EAAMk4c,GAAQrna,EAAS,IAAM4roB,IAE7Bm2K,GAAgB,EAEhBC,GAAqB,EACrBxoK,EAAcjzsB,KAAK44B,OAAOg0qB,aAAaC,gBAAkB77hB,GAAkBs9gB,GAAa70nB,EAAS4roB,OAC7FrlsB,KAAK44B,OAAO48nB,sBAAwBx1pB,KAAK44B,OAAO+0pB,yBACpD+tL,EAAmBx62B,KAAKC,MAAMnB,KAAK44B,OAAOw0qB,aAAaxqsB,aAAe5C,KAAK44B,OAAO2tsB,gBAAkB,EACpGnlmB,EAAO,GAAGxgI,MAAMb,KAAKC,KAAK44B,OAAOw0qB,aAAa/zqB,uBAAuBgsqB,KAQzE,GAPsC,UAAlCrlsB,KAAK44B,OAAOg0qB,aAAa/grB,OACzBu1G,EAAO,GAAGxgI,MAAMb,KAAKC,KAAK44B,OAAOw0qB,aAAa3/qB,iBAAiB,6BAC3Diu1B,GAAoB,GAAKt6uB,EAAKtjI,QAAU492B,GACrCt6uB,EAAKA,EAAKtjI,OAAS,GAAGsS,aAAai1rB,MAA2Bz8qB,EAAIxY,aAAai1rB,MAClFo2K,GAAqB,IAGzB98B,EAAU,CACV,GAAI3+0B,KAAK44B,OAAO0pqB,YAAc2Q,EAAa,CACvC,IAAIsnD,EAAav6vB,KAAK44B,OAAOg0qB,aAAaC,cAAgB,sCACtD,2BACA8uK,EAAe,GAAG/62B,MAAMb,KAAKC,KAAK44B,OAAOw2qB,iBAAiBj6rB,cAAckwrB,IAAgB53qB,iBAAiB8suB,IAE7GihH,GADAH,EAASM,EAAa792B,QAAUmD,SAAS2nB,EAAIxY,aAAai1rB,IAAwB,KAAO,KAC/DpksB,SAAS2nB,EAAIxY,aAAai1rB,IAAwB,MAAQs2K,EAAa792B,OAAS,EAC1G,IAAI892B,EAAY,GAAGh72B,MAAMb,KAAKC,KAAK44B,OAAOw2qB,iBAAiBj6rB,cAAckwrB,IAAgB53qB,iBAAiB,6BACjF,IAArBmu1B,EAAU992B,SAAiB892B,EAAU,GAAGz32B,UAAUC,SAAS,eAAiBw32B,EAAU,GAAGz32B,UAAUC,SAAS,oBAC5Go32B,GAAgB,EAExB,EACIA,GAAkBE,GAAoB,GAAKt6uB,EAAKtjI,QAAU492B,IACT,WAA5C172B,KAAK44B,OAAOg0qB,aAAa0K,gBAAgCt3sB,KAAKsvsB,WAAWlkoB,MAClC,QAArCprE,KAAKsvsB,WAAWlkoB,KAAKyhM,aAA4Bm0B,EAAG78R,UAAUC,SAAS,mBACtEwkB,EAAIzkB,UAAUC,SAASihsB,MAAyBo2K,KACxDH,GAA4B,EAEpC,CACA,IAAIxyvB,EAAQ61tB,EACP08B,EAASr72B,KAAK44B,OAAOw2qB,iBAAmBpvsB,KAAK44B,OAAOu0qB,kBACrDt8rB,GAAO,IAAM7Q,KAAK44B,OAAO6gC,QAAQ3jD,GAAK,qCAAsCyf,UAC5Ew8N,EAASjpI,EAAM5lH,wBACfI,EAAOq70B,EACP3+0B,KAAK44B,OAAO6gC,QAAQv2D,wBAAwBI,KAAOyuP,EAAOzuP,KAC1DmmH,EAAQq3W,GAAQrna,EAAS,MACzBoizB,EAAcpyvB,EAAQA,EAAMvmH,wBAA0Bu2D,EAAQv1D,cAAchB,wBAC5Ew6J,EAAM19J,KAAK44B,OAAOoF,cAAc,MAAO,CACvC9xB,UAAW,qDACX4J,GAAIjV,EAAO,SACXmzD,OAAQ,WAAatpC,EAAU,UACzB2w1B,EAASQ,EAAY142B,IAAM042B,EAAYr42B,OAASq42B,EAAYx42B,OAAS0uP,EAAO5uP,KAAO2lH,EAAMrtB,UAAY,GAAK,YAC3GogxB,EAAYv42B,KAAOA,EAAOwlH,EAAMttB,WAAaqgxB,EAAYt42B,MAAQ,GAF9D,gBAGWs42B,EAAYt42B,MAAQ,0BAEvCvD,KAAK44B,OAAO/pB,UACZ6uJ,EAAIv5J,UAAU2C,IAAI9G,KAAK44B,OAAO/pB,UAE9B8v0B,GAAY5slB,EAAOzuP,KAAOA,IAC1Bo6J,EAAIr5J,MAAMf,KAAOrC,SAASy8J,EAAIr5J,MAAMf,KAAM,IAAMyuP,EAAOzuP,KAAOA,EAAO,MAEzE,IAEI4pf,EA2BgBvuJ,EA7BhBn6B,EAAUxkU,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,mBAC5Ds4T,EAAQjtT,YAAYkkB,GAEhB6/0B,IACApuX,EAAQltf,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,8BAChDqL,YAAYvX,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,oCAChEghf,EAAM31e,YAAYvX,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,uCAGhEghf,EAAQltf,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,2BAChDqL,YAAYvX,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,iCAChEghf,EAAM31e,YAAYvX,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,kCAEpEwxJ,EAAInmJ,YAAYitT,GAChB9mK,EAAInmJ,YAAY21e,GACXkuX,IAAep72B,KAAK44B,OAAO0pqB,aAAc2Q,GAAkD,WAAlCjzsB,KAAK44B,OAAOg0qB,aAAa/grB,MA8B/Euv1B,EACAp72B,KAAKo62B,eAAe3gzB,QAAQliD,YAAYmmJ,GAGF,WAAlC19J,KAAK44B,OAAOg0qB,aAAa/grB,MAAqB7rB,KAAK44B,OAAOuoqB,eACtDnga,EAAG78R,UAAUC,SAAS,eACtBquD,GAAS,CAACirG,GAAM,cAChB19J,KAAKuvsB,QAAQ91oB,QAAQliD,YAAYmmJ,MAG7BihM,EAAOmiI,GAAQ9/L,EAAI,iBAAmBhhS,KAAK44B,OAAO6gC,QAAQtkD,cAAc,iBACxD,IAAhBisH,EAAKtjI,OAAekC,KAAK44B,OAAO6gC,QAAQtkD,cAAc,kBAAkBA,cAAc,cAClFnV,KAAK44B,OAAO6gC,QAAQtkD,cAAc,mBACrCoC,YAAYmmJ,GACjBihM,EAAKt6V,MAAM+Q,SAAW,YAI1BpV,KAAKuvsB,QAAQ91oB,QAAQliD,YAAYmmJ,KA/CW,WAAlC19J,KAAK44B,OAAOg0qB,aAAa/grB,KACvCi1c,GAAQrna,EAAS,eAAiBqna,GAAQrna,EAAS,IAAM4roB,KACjDhhsB,MAAM+Q,SAAW,WAC7BsoJ,EAAIr5J,MAAM+Q,SAAW,WACiB,UAAlCpV,KAAK44B,OAAOg0qB,aAAa/grB,MACxBi1c,GAAQrna,EAAS,qBAAiCqna,GAAQrna,EAAS,oBAChEz5D,KAAK44B,OAAO0pqB,YAAc2Q,EAC1BjzsB,KAAK44B,OAAOuoqB,eACRnga,EAAG78R,UAAUC,SAAS,eACtBquD,GAAS,CAACirG,GAAM,cAChB6xiB,EAAQh4rB,YAAYmmJ,MAGhBihM,EAAOmiI,GAAQ9/L,EAAI,iBAAmBhhS,KAAK44B,OAAO6gC,QAAQtkD,cAAc,iBACxD,IAAhBisH,EAAKtjI,OAAekC,KAAK44B,OAAO6gC,QAAQtkD,cAAc,kBAAkBA,cAAc,cAClFnV,KAAK44B,OAAO6gC,QAAQtkD,cAAc,mBACrCoC,YAAYmmJ,GACjBihM,EAAKt6V,MAAM+Q,SAAW,YAI1Bm6rB,EAAQh4rB,YAAYmmJ,GAIxB19J,KAAKi52B,SAASx/yB,QAAQliD,YAAYmmJ,IAkC1C,GARKsT,GAAkBgwH,KACfA,EAAG78R,UAAUC,SAAS,iBACtBs5J,EAAIv5J,UAAU2C,IAAI,iBAEbk6R,EAAG78R,UAAUC,SAAS,iBAAmB48R,EAAG78R,UAAUC,SAAS,mBACpEs5J,EAAIv5J,UAAU2C,IAAI,mBAGrBw02B,GAA6B38B,GAAY48B,EAASr42B,wBAAwBG,OAASw42B,EAAYx42B,OAASw42B,EAAYr42B,OAAQ,CAC7H,IAAIirsB,EAAazusB,KAAK44B,OAAOw0qB,aAAaj4rB,cAAc,cACb,IAAvCnV,KAAK44B,OAAO2pqB,gBAAgBzksB,QAAyC,IAAzB2wsB,EAAWhzmB,UACvDgzmB,EAAWhzmB,UAAYiiE,EAAIspL,aAAekmK,EAAMjrJ,aAGhDs5gB,EAAS9/wB,UAAY8/wB,EAAS9/wB,UAAYiiE,EAAIspL,aAAekmK,EAAMjrJ,YAE3E,CACA,IAAI/mR,EAAaj6E,SAASs0B,SAASm4E,YAAY/qG,iBAAiB+6J,EAAK,MAAM5gF,iBAAiB,aAAc,IAW1G,GAVI4gF,EAAIx6J,wBAAwBK,MAAQs42B,EAAYt42B,OAChDm6J,EAAIvoJ,cAAc,SAASjS,wBAAwBM,QAAuB,IAAb03E,IAAqB,IAClFwiF,EAAIr5J,MAAMd,MAAQm6J,EAAIr5J,MAAMiK,WAE3BtO,KAAK44B,OAAO0pqB,YAAc2Q,IAAkD,WAAlCjzsB,KAAK44B,OAAOg0qB,aAAa/grB,KACpE6xI,EAAIr5J,MAAMf,KAAOmmH,EAAMtN,YAAcsN,EAAM6lO,YAAc,EAAI5xL,EAAI4xL,YAAc,GAAK,KAGpF5xL,EAAIr5J,MAAMf,KAAQrC,SAASy8J,EAAIr5J,MAAMf,KAAM,IAAMo6J,EAAI4xL,YAAc,EAAK,KAExEqvf,IAAa3oH,IAAah2tB,KAAK44B,OAAO4gqB,aAAgBx5rB,KAAK44B,OAAO0pqB,YAAc2Q,EAAc,CAE9F,IAAIz6qB,EAAMw9lB,GAA+BvsgB,EAAOi0C,GAChDA,EAAIr5J,MAAMlB,IAAMq1B,EAAIr1B,IAAM042B,EAAYr42B,OAAS,EAAI,IACvD,CACA,GAAI832B,EAA2B,CAC3B,IAAItlJ,GAAmC,SAAvBh2tB,KAAK44B,OAAOp1B,QAAuBxD,KAAK44B,OAAO0pqB,YAAe2Q,GACtEjzsB,KAAK44B,OAAO48nB,sBAAyBx1pB,KAAK44B,OAAO+0pB,yBAA6BjwhB,EAAIv5J,UAAUC,SAAS,kBACtGs5J,EAAIv5J,UAAUC,SAAS,gBAQ1Bs5J,EAAIr5J,MAAMhB,OAASw42B,EAAYr42B,OAAS,EAAI,SARA,CAC5C,IAAIu+V,EAAcw5gB,EAASx5gB,YAAcw5gB,EAASjshB,YAAci/W,KAAsB,EAClFutK,GAA0D,IAAhD972B,KAAK44B,OAAOp1B,OAAO7C,WAAW+D,QAAQ,KAChDzD,SAASjB,KAAK44B,OAAOp1B,OAAQ,IAAM+32B,EAASv0hB,aAChDtpL,EAAIr5J,MAAMhB,OAAUy42B,EAAUP,EAASpm2B,cAAc,SAAS6xU,aACxD+a,EAAe85gB,EAAYr42B,OAAS,EAAI,IAClD,CAIA,GAAI49H,EAAKtjI,OAAS492B,GAAgE,WAA5C172B,KAAK44B,OAAOg0qB,aAAa0K,gBAAgCt3sB,KAAKsvsB,WAAWlkoB,MACnE,QAArCprE,KAAKsvsB,WAAWlkoB,KAAKyhM,YAAwB,CAChD,IAEIkvmB,GAFY/72B,KAAK44B,OAAO0pqB,YAAc2Q,EAAcjzsB,KAAK44B,OAAO0pqB,WAAa,EAAItisB,KAAK44B,OAAO0pqB,aAC5FlhkB,EAAKtjI,OAAS,GAAKsjI,EAAKtjI,OAAS,GACTkC,KAAK44B,OAAO2tsB,eACrCnxtB,EAAWpV,KAAK44B,OAAOw0qB,aAAaxqsB,aAAem52B,EACvDr+sB,EAAIr5J,MAAMhB,OAAS+R,EAAW,EAAI,IACtC,CACAsoJ,EAAIr5J,MAAMlB,IAAM,IACpB,CACJ,EAMAk+uB,EAAK9ivB,UAAUo90B,qBAAuB,SAAU1ktB,GAC5C,OAAQA,EAAI1kE,WAAavyD,KAAK44B,OAAOmhqB,cAAc54jB,QAAQz8H,QAAQuyH,EAAIgmH,QAAU,EACrF,EAMAokgB,EAAK26H,WAAa,SAAUC,GACxB56H,EAAKo3H,aAAe/22B,GAAO2/uB,EAAKo3H,aAAcwD,EAClD,EACA56H,EAAKo3H,aAAe,CAChB,aAAgB/5B,GAAkB,YAAe8H,GACjD,eAAkBwxB,IAAoB,mBAAsBA,IAC5D,YAAe35B,GAAiB,YAAeuJ,GAC/C,aAAgBwwB,KAEb/2H,CACX,CAprC0B,GCbtBgqG,IAA2B,WAC3B,SAASA,EAAUzyzB,GACf54B,KAAKk82B,gBAAkB,EACvBl82B,KAAK2qoB,aAAe,eACpB3qoB,KAAK0qoB,eAAiB,iBACtB1qoB,KAAKm82B,kBAAoB,GACzBn82B,KAAKo82B,oBAAsB,GAC3Bp82B,KAAKq82B,kBAAoB,GACzBr82B,KAAK44B,OAASA,EACd54B,KAAKqqyB,iBAAmBr5nB,GAAkBp4I,EAAOmgvB,iBACjD/4wB,KAAKs82B,aAAe,GACpBt82B,KAAK2uyB,mBAAqB,GAC1B3uyB,KAAK6rtB,OAAQ,EACb7rtB,KAAKqN,kBACT,CA2kBA,OA1kBAg+0B,EAAU9s1B,UAAU8O,iBAAmB,WACnCrN,KAAK44B,OAAOsI,GAAGj6B,GAAkBjH,KAAKg0qB,UAAWh0qB,MACjDA,KAAK44B,OAAOsI,GAAGj6B,GAAiBjH,KAAK6zqB,SAAU7zqB,MAC/CA,KAAK44B,OAAOsI,GAAGj6B,GAAuBjH,KAAKwjyB,eAAgBxjyB,MAC3DA,KAAK44B,OAAOsI,GAAGj6B,GAAkBjH,KAAK0jyB,UAAW1jyB,MACjDA,KAAK44B,OAAOsI,GAAGj6B,GAA0BjH,KAAKujyB,kBAAmBvjyB,MACjEA,KAAK44B,OAAOsI,GAAGj6B,GAAwBjH,KAAKyjyB,gBAAiBzjyB,MAC7DA,KAAK44B,OAAOsI,GAAG,kBAAmBlhC,KAAKu82B,gBAAiBv82B,MACxDA,KAAK44B,OAAOsI,GAAG,oBAAqBlhC,KAAKw82B,kBAAmBx82B,MAC5DA,KAAK44B,OAAOlQ,KAAKwY,GAAG,yBAA0BlhC,KAAKy82B,qBAAsBz82B,MACzEA,KAAK44B,OAAOlQ,KAAKwY,GAAG,kBAAmBlhC,KAAK082B,cAAe182B,KAC/D,EAKAqr1B,EAAU9s1B,UAAUs6D,oBAAsB,WAClC74D,KAAK44B,OAAOspc,cAGhBlie,KAAK44B,OAAOyW,IAAIpoC,GAAkBjH,KAAKg0qB,WACvCh0qB,KAAK44B,OAAOyW,IAAIpoC,GAAiBjH,KAAK6zqB,UACtC7zqB,KAAK44B,OAAOyW,IAAIpoC,GAAkBjH,KAAK0jyB,WACvC1jyB,KAAK44B,OAAOyW,IAAIpoC,GAAuBjH,KAAKwjyB,gBAC5CxjyB,KAAK44B,OAAOyW,IAAIpoC,GAA0BjH,KAAKujyB,mBAC/CvjyB,KAAK44B,OAAOyW,IAAIpoC,GAAwBjH,KAAKyjyB,iBAC7CzjyB,KAAK44B,OAAOyW,IAAI,kBAAmBrvC,KAAKu82B,iBACxCv82B,KAAK44B,OAAOyW,IAAI,oBAAqBrvC,KAAKw82B,mBAC1Cx82B,KAAK44B,OAAOlQ,KAAK2mB,IAAI,yBAA0BrvC,KAAKy82B,sBACpDz82B,KAAK44B,OAAOlQ,KAAK2mB,IAAI,kBAAmBrvC,KAAK082B,eACjD,EAOArxB,EAAU9s1B,UAAUklE,QAAU,WAC1BzjE,KAAK64D,qBACT,EAKAwyxB,EAAU9s1B,UAAUo+2B,gBAAkB,WAClC,OAAO382B,KAAKs82B,YAChB,EAKAjxB,EAAU9s1B,UAAUq+2B,eAAiB,WACjC,OAAO582B,KAAKquyB,WAChB,EAKAg9C,EAAU9s1B,UAAUs+2B,iBAAmB,WACnC,OAAO782B,KAAK22c,aAChB,EAKA00Y,EAAU9s1B,UAAUu+2B,mBAAqB,WACrC,OAAO982B,KAAKk82B,eAChB,EACA7wB,EAAU9s1B,UAAUg+2B,gBAAkB,WAClC,IAGI5v1B,EAHAlb,EAAQzR,KAAK44B,OAAOlQ,KAAKg6jB,sBAAsByxD,GAC/Cn0oB,KAAK44B,OAAOlQ,KAAKg6jB,WAAWA,WAAWl9C,KAAOxliB,KAAK44B,OAAOlQ,KAAKg6jB,WAC/DsB,EAAahklB,KAAK44B,OAAOlQ,KAAK6yqB,0BAA0B,GAE5D,IAAKvqhB,GAAkBhxK,KAAKm82B,oBAAsBn82B,KAAKm82B,kBAAkBr+2B,OACrE,IAAK,IAAIX,EAAI,EAAGA,EAAI6C,KAAKm82B,kBAAkBr+2B,OAAQX,IAC/CwvB,EAAQlb,EAAK9P,KAAI,SAAUzE,GAAK,OAAOA,EAAE,GAAK8mlB,EAAa,IAAGt/kB,QAAQ1E,KAAKm82B,kBAAkBl72B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKqjlB,IAC9HvykB,EAAKxN,OAAO0oB,EAAO,GAG3B3sB,KAAKm82B,kBAAoBn82B,KAAKs82B,aAAet82B,KAAKq82B,kBAAoBr82B,KAAKo82B,oBAAsBp82B,KAAK2uyB,mBAAqB,EAC/H,EACA08C,EAAU9s1B,UAAUy1qB,UAAY,SAAU5omB,GAOtC,GANsBA,EAAKviD,OAAO8D,QACV3sB,KAAK44B,OAAOywwB,iBAChCrpyB,KAAK44B,OAAOsxtB,aAAa8+C,WAAW,CAAEv3xB,KAAM25D,EAAKqnrB,QAASn4nB,KAAMlvD,EAAKkvD,KACjEzxG,OAAQ7oB,KAAK44B,OAAOlQ,KAAK4ssB,iBAAiBlqpB,EAAKviD,OAAO8D,SAG1D3sB,KAAK6rtB,OAA2C,UAAlC7rtB,KAAK44B,OAAOg0qB,aAAa/grB,MAAgE,WAA5C7rB,KAAK44B,OAAOg0qB,aAAa0K,eAA6B,CACjH,IAAI7lsB,EAAQzR,KAAK44B,OAAOlQ,KAAKg6jB,sBAAsByxD,GAC/Cn0oB,KAAK44B,OAAOlQ,KAAKg6jB,WAAWA,WAAWl9C,KAAOxliB,KAAK44B,OAAOlQ,KAAKg6jB,WAC/DuqD,OAAQ,EAER+2D,EAAehksB,KAAK44B,OAAOlQ,KAAK6yqB,0BAA0B,GAC1DwhL,OAAmB,EACnBjgE,OAAa,EACbliC,EAAa,aAEbuqB,EAAenlyB,KAAK22c,eAAiB,EAAI32c,KAAKs82B,aAAar72B,SAASjB,KAAKquyB,YAAY1tyB,WAAY,KAAK,GAAKi6wB,GAAc,KACzH4nB,OAAY,EACZ6J,OAAiB,EACjBtzB,OAAkB,EAClBikG,EAA6D,QAA5Ch92B,KAAK44B,OAAOg0qB,aAAa0K,iBAAoD,IAAxBt3sB,KAAK22c,cAAuB,EACtD,UAA5C32c,KAAK44B,OAAOg0qB,aAAa0K,eAA6Bt3sB,KAAKquyB,YACrDruyB,KAAKquyB,YAAc,EAE7B,GADA2uE,EAAiBh92B,KAAKi92B,wBAAwBD,GAC1Ch92B,KAAKk92B,iBAAkB,CAcvB,GAbIl92B,KAAKs82B,aAAax+2B,SAClB0kyB,EAAYxiyB,KAAKs82B,aAAat82B,KAAKquyB,aAAaruyB,KAAK44B,OAAO4pwB,WAC5DzpB,EAAkB/4wB,KAAKs82B,aAAat82B,KAAKquyB,aAAaruyB,KAAK44B,OAAOmgvB,iBAC9D/4wB,KAAKs82B,aAAar72B,SAASjB,KAAKquyB,YAAY1tyB,WAAY,KAAK,GAAKi6wB,KAClEyxB,EAAiBrsyB,KAAKs82B,aAAar72B,SAASjB,KAAKquyB,YAAY1tyB,WAAY,KAAK,GAAKi6wB,GAAyB,WAGpH56wB,KAAKm82B,kBAAoBps1B,GAAY/vB,KAAKm82B,mBAC1Cn82B,KAAKq82B,kBAAoBts1B,GAAY/vB,KAAKq82B,mBAC1Cr82B,KAAKq82B,kBAAkB1+2B,KAAKqC,KAAKs82B,aAAat82B,KAAKquyB,eACnDphK,EAAQjtoB,KAAK44B,OAAOlQ,KAAKu1qB,gBAAgBh9rB,SAAS+72B,EAAer82B,WAAY,KAAKk8f,SAC5E7nJ,SAAWwxT,GAAOxmqB,KAAK44B,OAAO6gC,QAAQ3jD,GAAK,UACjD69Q,GAAS,sBAAwBs5W,EAAMj4R,SAAUi4R,EAAOjtoB,KAAK44B,SACxDx7B,OAAOmB,UAAUiD,eAAezB,KAAKktoB,EAAO,SAAU,CAEvD,GADAjtoB,KAAKm92B,YAAqC,IAAxBn92B,KAAK22c,cAAuB,EAAI32c,KAAKm92B,WACP,UAA5Cn92B,KAAK44B,OAAOg0qB,aAAa0K,gBAEzB,GADArqE,EAAMmwO,cAAgBj4E,EAClBnlyB,KAAK22c,eAAiB,EAAG,CACzBs2L,EAAM2tI,WAAal5wB,GAAO,CAAC,EAAG1B,KAAKs82B,aAAat82B,KAAKquyB,cACrDphK,EAAMo/J,eAAiBp/J,EAAM2tI,WAAW5la,gBACjCi4R,EAAM2tI,WAAWwC,oBACjBnwI,EAAM2tI,WAAW56wB,KAAK44B,OAAO6pwB,cACpCx1J,EAAMh8jB,MAAQg8jB,EAAM2tI,WAAW3psB,MAAQ,EACvCg8jB,EAAMtgnB,MAAQ3sB,KAAKm92B,WACnB,IAAIE,EAAmBh4E,GAAoBrlyB,KAAKs82B,aAAat82B,KAAKquyB,cAAcvwyB,OAEhF0sT,EAASx5I,GADLw5I,EAAS66e,GAAoBrlyB,KAAKs82B,aAAat82B,KAAKquyB,cAAcgvE,EAAmB,IACpDr92B,KAAKs82B,aAAat82B,KAAKquyB,aAAe7jf,EAC3EuyjB,EAAmBtr2B,EAAK9P,KAAI,SAAUzE,GAAK,OAAOA,EAAE,GAAK8msB,EAAe,IAAGt/rB,QAAQ8lT,EAAO,GAAKw5Y,IAC3FhksB,KAAKqqyB,kBACLp9J,EAAMjtoB,KAAK44B,OAAOmgvB,iBAAmBypB,GAEzCyM,GAAgBjrG,EAAc/2D,EAAM2tI,WAAY,MAAO56wB,KAAK44B,OAAQ54B,KAAKqqyB,gBAAiBp9J,EAC9F,OAEC,IAAiD,UAA5CjtoB,KAAK44B,OAAOg0qB,aAAa0K,gBAA0E,UAA5Ct3sB,KAAK44B,OAAOg0qB,aAAa0K,kBAClFtmiB,GAAkBhxK,KAAKs82B,aAAat82B,KAAKquyB,cAAe,CAS5D,GARAphK,EAAMh8jB,MAAQjxE,KAAKs82B,aAAar72B,SAASjB,KAAKquyB,YAAY1tyB,WAAY,KAAe,MACjFssoB,EAAMh8jB,OAASjxE,KAAK22c,eAAiB,IACrCs2L,EAAM2tI,WAAauqB,EACnBl4J,EAAMo/J,eAAiBA,SAChBp/J,EAAM2tI,WAAWwC,oBACjBnwI,EAAM2tI,WAAW56wB,KAAK44B,OAAO6pwB,eAExCx1J,EAAMtgnB,MAAoD,UAA5C3sB,KAAK44B,OAAOg0qB,aAAa0K,eAA6Bt3sB,KAAKm92B,WAAan92B,KAAKm92B,WAAa,EACxD,UAA5Cn92B,KAAK44B,OAAOg0qB,aAAa0K,gBAA8Bt3sB,KAAK22c,eAAiB,EAAG,CAC5E0ma,EAAmBh4E,GAAoBrlyB,KAAKs82B,aAAat82B,KAAKquyB,cAAcvwyB,OAEhF0sT,EAASx5I,GADLw5I,EAAS66e,GAAoBrlyB,KAAKs82B,aAAat82B,KAAKquyB,cAAcgvE,EAAmB,IACpDr92B,KAAKs82B,aAAat82B,KAAKquyB,aAAe7jf,EAC3EuyjB,EAAmBtr2B,EAAK9P,KAAI,SAAUzE,GAAK,OAAOA,EAAE,GAAK8msB,EAAe,IAAGt/rB,QAAQ8lT,EAAO,GAAKw5Y,GACnG,CACA,GAAgD,UAA5ChksB,KAAK44B,OAAOg0qB,aAAa0K,gBAA8Bt3sB,KAAK22c,eAAiB,EAAG,CAChF,IAAInsJ,EAASxqT,KAAKs82B,aAAat82B,KAAKquyB,aACpC0uE,EAAmBtr2B,EAAK9P,KAAI,SAAUzE,GAAK,OAAOA,EAAE,GAAK8msB,EAAe,IAAGt/rB,QAAQ8lT,EAAO,GAAKw5Y,GACnG,CACIhksB,KAAKqqyB,kBACLp9J,EAAMjtoB,KAAK44B,OAAOmgvB,iBAAmBA,EAE7C,CACA9rI,EAAMtgnB,OAAyB,IAAjBsgnB,EAAMtgnB,MAAe,EAAIsgnB,EAAMtgnB,MAC7CsgnB,EAAM4vI,iBAAkB,EACxB5vI,EAAMmwI,aAAe,GACrBp9wB,KAAKs82B,aAAar42B,OAAOgpoB,EAAMtgnB,MAAO,EAAGsgnB,GACzCjtoB,KAAK2uyB,mBAAmB1qyB,OAAOgpoB,EAAMtgnB,MAAO,EAAGsgnB,GAE3C6vK,EADAigE,GAIa9vO,EAAMtgnB,MAEyB,UAA5C3sB,KAAK44B,OAAOg0qB,aAAa0K,iBACzBwlG,EAA6B,IAAhB7vK,EAAMtgnB,MAAcmwxB,EAAaA,EAAa,GAE/DrryB,EAAKxN,OAAO64yB,EAAY,EAAG7vK,GAC3BjtoB,KAAKm82B,kBAAkBx+2B,KAAKsvoB,EAChC,CACAjtoB,KAAK44B,OAAOlQ,KAAKu1qB,gBAAgBh9rB,SAAS+72B,EAAer82B,WAAY,KAAK8Q,KAAOw7nB,EACjFjtoB,KAAKk92B,kBAAmB,CAC5B,CACJ,CACJ,EACA7xB,EAAU9s1B,UAAUilyB,eAAiB,SAAUtmyB,GAC3C,IAAIog3B,EAAe,eACnB,GAAsC,SAAlCt92B,KAAK44B,OAAOg0qB,aAAa/grB,MAAmB7rB,KAAK44B,OAAO02qB,WAAW,GAAKguK,GAGxE,OAFApg3B,EAAE4jV,QAAS,OACX9gV,KAAK44B,OAAO02qB,WAAW,GAAKguK,IAAgB,IAG5Ct92B,KAAK44B,OAAO02qB,WAA+B,oBAAMt+hB,GAAkBhxK,KAAK44B,OAAO02qB,WAAwB,cACtGtvsB,KAAK44B,OAAO02qB,WAAoC,0BAA6C,IAAvCtvsB,KAAK44B,OAAOlQ,KAAK8rsB,mBAA2Bx0tB,KAAK44B,OAAO02qB,WAA4B,gBAAEuc,OAO7I7rtB,KAAK22c,cAAgB32c,KAAK44B,OAAOlQ,KAAK8rsB,iBACtCx0tB,KAAKquyB,YAAcruyB,KAAK44B,OAAOlQ,KAAK8rsB,kBAAoB,EAAIx0tB,KAAK44B,OAAOlQ,KAAK8rsB,iBAAmB,EAChGx0tB,KAAK44B,OAAO02qB,WAAwB,YAAItvsB,KAAK44B,OAAOlQ,KAAK8rsB,kBAAoB,EAAIx0tB,KAAK44B,OAAOlQ,KAAK8rsB,iBAAmB,EACrHx0tB,KAAKsuyB,aAAetuyB,KAAK44B,OAAOylsB,qBAAqB,KATrDr+tB,KAAK22c,cAAgB32c,KAAK44B,OAAO02qB,WAA0B,cAC3DtvsB,KAAKquyB,YAAcruyB,KAAK44B,OAAO02qB,WAAwB,YACvDtvsB,KAAKsuyB,aAAetuyB,KAAKs82B,aAAax+2B,OAASkC,KAAKs82B,aAAat82B,KAAK22c,eAChE32c,KAAK44B,OAAOkqrB,wBAAwB9itB,KAAK22c,eAQvD,EACA00Y,EAAU9s1B,UAAUs1qB,SAAW,SAAU32qB,GACrC,GAAgD,WAA5C8C,KAAK44B,OAAOg0qB,aAAa0K,eAA6B,CACtDt3sB,KAAK6rtB,OAAQ,EACb7rtB,KAAKk92B,kBAAmB,EACxB,IAAI1nK,EAAc,EASlB,GARKx1sB,KAAKs82B,aAAax+2B,SACnBkC,KAAKm82B,kBAAoB,GACzBn82B,KAAKs82B,aAAevs1B,GAAY/vB,KAAK44B,OAAOlQ,KAAKo6rB,yBACjD9itB,KAAK2uyB,mBAAqB5+wB,GAAY/vB,KAAK44B,OAAOlQ,KAAKo6rB,0BAEvD9itB,KAAK44B,OAAO02qB,WAA+B,qBAAMt+hB,GAAkBhxK,KAAK44B,OAAO02qB,WAAwB,cACvGnrsB,GAAUnE,KAAK44B,OAAOlQ,KAAK+rrB,cAAc,GAAI,CAAC,cAAe,IAEjB,QAA5Cz0sB,KAAK44B,OAAOg0qB,aAAa0K,eAA0B,CACnD,IAAI5uY,EAAU1oU,KAAK44B,OAAOlQ,KAAKo6rB,wBACO,UAAlC9itB,KAAK44B,OAAOg0qB,aAAa/grB,OAAqB7rB,KAAK44B,OAAOy+qB,kBAAkBr3sB,KAAK2qoB,cAAc7soB,OAAS,GACrGkC,KAAK44B,OAAOy+qB,kBAAkBr3sB,KAAK0qoB,gBAAgB5soB,UACtD4qU,EAAU1oU,KAAKs82B,cAEnBt82B,KAAKu92B,iBAAiB70iB,GACtB1oU,KAAK44B,OAAOolE,OAAO/2F,GAAiB,CAAC,GACrCjH,KAAKk82B,gBAAkB,CAC3B,CACAl82B,KAAKw92B,iBAEL,IAAIxwK,EAAcj/e,GAAS,cAAe/tN,KAAK44B,OAAOlQ,MAClDogG,EAAQ9oH,KAAK44B,OAAOu0qB,kBAYxB,GAXIntsB,KAAK44B,OAAOy+qB,kBAAkBr3sB,KAAK0qoB,gBAAgB5soB,QAAsD,UAA5CkC,KAAK44B,OAAOg0qB,aAAa0K,gBACtF9B,EAAct4sB,EAAE0rB,IAAIi8qB,SACpBmI,EAAYI,aAAah3oB,OAAOA,OAASp2D,KAAKo2D,QAG9Co/oB,EAAc1slB,EAAMzvF,uBAAuB,cAAc,GAAGwrqB,SAKhEmI,EAAYI,aAAah3oB,OAAOkW,QAAU,CAACkpoB,EAAaxI,EAAYI,aAAah3oB,OAAOkW,QAAQ,IAC5FtsE,KAAK44B,OAAO02qB,WAA+B,qBAAMt+hB,GAAkBhxK,KAAK44B,OAAO02qB,WAAwB,eAAOtvsB,KAAK44B,OAAO02qB,WAAoC,wBAAG,CACjK,IAAImuK,EAAoBz92B,KAAK44B,OAAOy+qB,kBAAgC,aAChE1qrB,EAAQ1rB,SAASjB,KAAK44B,OAAOu0qB,kBAAkB9zqB,uBAAuB,iBAAiBok1B,EAAkB3/2B,OAAS,GAAGsS,aAAa,iBAAkB,IACxJpQ,KAAKs82B,aAAar42B,OAAO0oB,EAAO,EAAG8w1B,EAAkBA,EAAkB3/2B,OAAS,GACpF,CACJ,CACJ,EACAut1B,EAAU9s1B,UAAUglyB,kBAAoB,SAAUn4tB,GACzCprE,KAAKs82B,aAAax+2B,SACnBkC,KAAKs82B,aAAevs1B,GAAY/vB,KAAK44B,OAAOlQ,KAAKo6rB,yBACjD9itB,KAAK2uyB,mBAAqB5+wB,GAAY/vB,KAAK44B,OAAOlQ,KAAKo6rB,0BAE3D,IAAI9V,EAAcj/e,GAAS,cAAe/tN,KAAK44B,OAAOlQ,MACtD1oB,KAAKo2D,OAAS42oB,EAAYI,aAAah3oB,OAAOA,OAC9C,IACIsyQ,EAEAj3T,EACA2woB,EACAlvkB,EALAtqD,EAAM,GAEN801B,EAAa192B,KAAK44B,OAAOlQ,KAAK6yqB,0BAA0B,GAIvDvqhB,GAAkB5lG,EAAKxiD,OAA6D,IAArD5oB,KAAK44B,OAAO40sB,kBAAkB9ouB,QAAQ0mE,EAAKxiD,MAO3Ew5nB,EAASijJ,GADT5zxB,EAAOzR,KAAK44B,OAAOlQ,KAAK21sB,qBAAqBr+tB,KAAK44B,OAAOlQ,KAAK21sB,qBAAqBvguB,OAAS,IAE5Fo1E,EAAMlzE,KAAK44B,OAAO40sB,kBAAkB,GAAGp9tB,aAAa,cANpDgyoB,EAASijJ,GADT5zxB,EAAO25D,EAAKqnrB,SAEZv/qB,EAAM9H,EAAKxiD,IAAIxY,aAAa,aAOhC,IAAIsjtB,EAAiBzytB,SAASjB,KAAK44B,OAAOlQ,KAAKg4uB,mBAAmBxtrB,GAAK9iE,aAAa,iBAAkB,IACtG,GAAIgyoB,EAAOtkpB,OAGP,IAFA,IAAIkqa,EAAa0rT,EAAiBtxE,EAAOtkpB,OAEhCX,EADau2tB,EAAiB,EACTv2tB,GAAK6qa,EAAY7qa,IAC3CyrB,EAAIjrB,KAAKqC,KAAK44B,OAAOlQ,KAAK+rrB,cAAcxzsB,SAAS9D,EAAEwD,WAAY,OAC3DX,KAAK44B,OAAO0pqB,YAActisB,KAAK44B,OAAOqirB,eAAiBj7sB,KAAK44B,OAAOg1rB,qBACnEhlsB,EAAIjrB,KAAKqC,KAAK44B,OAAOlQ,KAAKsmrB,mBAAmB/tsB,SAAS9D,EAAEwD,WAAY,MAIhF,IAAKqwK,GAAkBv/J,EAAKmpwB,YAAa,CACrC,IAAIA,EAAawqB,GAAcplyB,KAAK44B,OAAQnnB,EAAKmpwB,WAAW5la,UAC5D,IAAKhkM,GAAkB4pmB,IAAeA,EAAWiC,gBAAiB,CAC9D,IAAI54Z,EAAa22Z,EAAWwC,aAAa14wB,QAAQ+M,GACjDmpwB,EAAWwC,aAAan5wB,OAAOggX,EAAY,EAC/C,CACAjkX,KAAKo82B,oBAAsBrs1B,GAAY/vB,KAAKo82B,qBAC5Cp82B,KAAKo82B,oBAAoBz+2B,KAAK8T,EAClC,CACA2woB,EAAOzkpB,KAAK8T,GACZi3T,EAAU05U,EACV,IAASjlpB,EAAI,EAAGA,EAAIurU,EAAQ5qU,OAAQX,IAAK,CACrC,IAAI2/yB,EAAa98yB,KAAKs82B,aAAa362B,KAAI,SAAUzE,GAAK,OAAOA,EAAE,GAAKwg3B,EAAa,IAAGh52B,QAAQgkU,EAAQznU,SAAS9D,EAAEwD,WAAY,KAAK,GAAK+82B,KACjH,IAAhB5gE,GACA98yB,KAAKs82B,aAAar42B,OAAO64yB,EAAY,EAE7C,CACA,IAAS3/yB,EAAI,EAAGA,EAAIyrB,EAAI9qB,OAAQX,IACvB6zK,GAAkBpoJ,EAAI3nB,SAAS9D,EAAEwD,WAAY,OAC9CX,KAAK44B,OAAOlQ,KAAKs8qB,gBAAgBw1B,gBAAgB78tB,KAAKirB,EAAI3nB,SAAS9D,EAAEwD,WAAY,KAG7F,EACA0q1B,EAAU9s1B,UAAUi/2B,eAAiB,WAEjC,IADA,IAAIp8uB,EAAOphI,KAAK44B,OAAOlQ,KAAK+rrB,cACnBt3sB,EAAI,EAAGA,EAAIikI,EAAKtjI,OAAQX,IAC7BikI,EAAKngI,SAAS9D,EAAEwD,WAAY,KAAKiI,aAAa,gBAAiBzL,EAAEwD,WAEzE,EACA0q1B,EAAU9s1B,UAAUg/2B,iBAAmB,SAAU70iB,GAI7C,IAHA,IAAIs7Q,EAAahklB,KAAK44B,OAAOlQ,KAAK6yqB,0BAA0B,GACxD5wD,EAAe,eACfiwI,EAAyD,UAA5C56wB,KAAK44B,OAAOg0qB,aAAa0K,eAA6B,gBAAkB,aAChFn6sB,EAAI,EAAGA,EAAI6C,KAAK44B,OAAOy+qB,kBAAkB,GAAK1sE,GAAc7soB,OAAQX,IACpE6zK,GAAkBhxK,KAAK44B,OAAOy+qB,kBAAkB,GAAK1sE,GAAc1poB,SAAS9D,EAAEwD,WAAY,KAAK,GAAKi6wB,KACjG56wB,KAAK44B,OAAOy+qB,kBAAkB,GAAK1sE,GAAc1poB,SAAS9D,EAAEwD,WAAY,KAAK,GAAKi6wB,GAAY,GAAK52L,KAAgBt7Q,EAAQznU,SAASjB,KAAKquyB,YAAY1tyB,WAAY,KAAK,GAAKqjlB,KAC3KhklB,KAAKk82B,gBAAkBl82B,KAAKk82B,gBAAkB,EAI9D,EACA7wB,EAAU9s1B,UAAUklyB,gBAAkB,SAAUvmyB,GAC5C,IAAIyg3B,EAAgB,iBAChBC,EAAgB,iBAChBhzO,EAAiB1toB,EAAE81uB,aAAa,GAAK2qI,GACzC,GAAIzg3B,EAAE81uB,aAAa,GAAK2qI,GAAe7/2B,OAEnC,IADA,IACSX,EAAI,EAAGA,EAAIytoB,EAAe9soB,OAAQX,IACvCq2xB,GAAW,CAAE10xB,MAAO8roB,EAAe3poB,SAAS9D,EAAEwD,WAAY,KAAMqhN,OAAQ,QAAUhiN,KAAK44B,OAAQ54B,KAAKqqyB,gBAAiBrqyB,KAAKquyB,YAAaruyB,KAAK22c,cAF/H,WAKrB,GAAIz5c,EAAE81uB,aAAa,GAAK4qI,GAAe9/2B,OACnC,KACI0sT,EADiBttT,EAAE81uB,aAAa,GAAK4qI,GAEzC,IAASzg3B,EAAI,EAAGA,EAAIqtT,EAAO1sT,OAAQX,IAAK,CACpC6C,KAAK692B,eAAerzjB,EAAOvpT,SAAS9D,EAAEwD,WAAY,KAAKq0W,UAEvD,IADA,IAAIotS,EAASijJ,GAAoB76e,EAAOvpT,SAAS9D,EAAEwD,WAAY,MACtDrB,EAAI,EAAGA,EAAI8ipB,EAAOtkpB,OAAQwB,IAC/BU,KAAK692B,eAAez7N,EAAOnhpB,SAAS3B,EAAEqB,WAAY,KAAKq0W,UAE3D93W,EAAE81uB,aAAa,GAAK4qI,GAAiB1g3B,EAAE81uB,aAAa,GAAK4qI,GAAez22B,OAAOi7oB,EACnF,CATuD,CAW3DpipB,KAAK6rtB,OAAQ,CACjB,EACAw/H,EAAU9s1B,UAAUs/2B,eAAiB,SAAU/+2B,UAEpCkB,KAAK44B,OAAoB,yBAAE,GAAK95B,UAEhCkB,KAAK44B,OAAc,mBAAE,GAAK95B,EACrC,EACAus1B,EAAU9s1B,UAAUi+2B,kBAAoB,WACpC,IACI7v1B,EADAszT,EAAgB,gBAEhB26b,EAAa,aACbkiC,EAAa,QACbnO,EAAqB3uyB,KAAK44B,OAAOlQ,KAAKo6rB,wBACtCs6D,EAAe,eACf3rwB,EAAQzR,KAAK44B,OAAOlQ,KAAKg6jB,sBAAsByxD,GAC/Cn0oB,KAAK44B,OAAOlQ,KAAKg6jB,WAAWA,WAAWl9C,KAAOxliB,KAAK44B,OAAOlQ,KAAKg6jB,WAC/DsB,EAAahklB,KAAK44B,OAAOlQ,KAAK6yqB,0BAA0B,GAC5D,IAAKvqhB,GAAkBhxK,KAAKm82B,mBACxB,IAAK,IAAIh/2B,EAAI,EAAGA,EAAI6C,KAAKm82B,kBAAkBr+2B,OAAQX,IAK/C,GAJAwvB,EAAQlb,EAAK9P,KAAI,SAAUzE,GAAK,OAAOA,EAAE,GAAK8mlB,EAAa,IAAGt/kB,QAAQ1E,KAAKm82B,kBAAkBl72B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKqjlB,KAC/G,IAAXr3jB,GACAlb,EAAKxN,OAAO0oB,EAAO,GAEyB,UAA5C3sB,KAAK44B,OAAOg0qB,aAAa0K,iBACzB3qrB,EAAQgixB,EAAmBhtyB,KAAI,SAAUzE,GAAK,OAAOA,EAAE,GAAK8mlB,EAAa,IACpEt/kB,QAAQ1E,KAAKm82B,kBAAkBl72B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKi6wB,GAAc56wB,KAAKm82B,kBAAkBl72B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKi6wB,GAAY,GAAK52L,GACtJhklB,KAAKm82B,kBAAkBl72B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKqjlB,KACzDhza,GAAkB29nB,EAAmB1tyB,SAAS0rB,EAAMhsB,WAAY,OAEjE,IADA,IAAI2lC,EAAWqowB,EAAmB1tyB,SAAS0rB,EAAMhsB,WAAY,KAAK,GAAKy8wB,GAC9Dr3wB,EAAI,EAAGugC,GAAYvgC,EAAIugC,EAASxoC,OAAQiI,IACzCugC,EAASrlC,SAAS8E,EAAEpF,WAAY,KAAK,GAAKqjlB,KAAgBhklB,KAAKm82B,kBAAkBl72B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKqjlB,IAClH2qN,EAAmB1tyB,SAAS0rB,EAAMhsB,WAAY,KAAK,GAAKy8wB,GAAcn5wB,OAAO8B,EAAG,GAOxG,IAAKirK,GAAkBhxK,KAAK44B,OAAO,GAAKqnT,IAAiB,CACrD,IAAIr3T,EAAM5oB,KAAK44B,OAAO,GAAKqnT,GAAe6gJ,QAAQ,MAClD9ge,KAAK44B,OAAOq9vB,YAAYrtwB,GACxB5oB,KAAK44B,OAAO,GAAKqnT,GAAiB,IACtC,CACA,IAAKjvK,GAAkBhxK,KAAKo82B,qBACxB,IAASj/2B,EAAI,EAAGA,EAAI6C,KAAKo82B,oBAAoBt+2B,OAAQX,IACjD,IAAK6zK,GAAkBhxK,KAAKo82B,oBAAoBn72B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKi6wB,IAAc,CAC3FjuvB,EAAQgixB,EAAmBhtyB,KAAI,SAAUzE,GAAK,OAAOA,EAAE,GAAK8mlB,EAAa,IACpEt/kB,QAAQ1E,KAAKo82B,oBAAoBn72B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKi6wB,GAAY,GAAK52L,IACxF,IAAI85R,EAA0F,IAA1E992B,KAAKo82B,oBAAoBn72B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKm8yB,GAAoB98yB,KAAKo82B,oBAAoBn72B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKm8yB,GACxJ98yB,KAAKo82B,oBAAoBn72B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKm8yB,GAAc,EACvE9roB,GAAkB29nB,EAAmB1tyB,SAAS0rB,EAAMhsB,WAAY,OACjEguyB,EAAmB1tyB,SAAS0rB,EAAMhsB,WAAY,KAAK,GAAKy8wB,GAAcn5wB,OAAO652B,EAAe,EAAG992B,KAAKo82B,oBAAoBn72B,SAAS9D,EAAEwD,WAAY,KAEvJ,CAGRX,KAAKm82B,kBAAoBn82B,KAAKs82B,aAAet82B,KAAKq82B,kBAAoBr82B,KAAK2uyB,mBAAqB,GAChG3uyB,KAAKs82B,aAAevs1B,GAAY/vB,KAAK44B,OAAOlQ,KAAKo6rB,yBACjD9itB,KAAKm92B,WAAa,EAClBn92B,KAAK2uyB,mBAAqB5+wB,GAAY/vB,KAAK44B,OAAOlQ,KAAKo6rB,yBACvD9itB,KAAKo82B,oBAAsB,GAC3Bp82B,KAAK44B,OAAOlQ,KAAKwhuB,aAAa57Q,SAClC,EACA+8W,EAAU9s1B,UAAUmlyB,UAAY,SAAUt4tB,GACtC,GAAsC,UAAlCprE,KAAK44B,OAAOg0qB,aAAa/grB,KAAkB,CAC3C,IAAI1uB,OAAI,EACJ61uB,EAAe51uB,OAAOoE,eAAezB,KAAKqrE,EAAM,kBAAoBA,EAAKussB,eAAiB33wB,KAAK44B,OAAOy+qB,kBACtG3sE,EAAiB,iBAIjBj5nB,EAAQzR,KAAK44B,OAAOlQ,KAAKg6jB,sBAAsByxD,GAC/Cn0oB,KAAK44B,OAAOlQ,KAAKg6jB,WAAWA,WAAWl9C,KAAOxliB,KAAK44B,OAAOlQ,KAAKg6jB,WAC/DisN,EAAqB3uyB,KAAK44B,OAAOlQ,KAAKo6rB,wBACtCi7J,EAAe/92B,KAAK44B,OAAOlQ,KAAK6yqB,0BAA0B,GAE1DyiL,EAAahrI,EAA8B,aAC3C4nC,EAAa,aACbjkU,OAAgB,EAChB03V,OAAc,EACdjgH,OAAa,EACbkgH,OAAe,EACflxB,EAAe,eAInB,GAHI4gG,EAAWlg3B,OAAS,GAAiD,WAA5CkC,KAAK44B,OAAOg0qB,aAAa0K,gBAClD0mK,EAAW5g2B,UAEiC,WAA5Cpd,KAAK44B,OAAOg0qB,aAAa0K,iBAAgCl6sB,OAAOoE,eAAezB,KAAKqrE,EAAM,kBAAmB,CAE7G,GADA35D,EAAKxN,OAAOwN,EAAK3T,OAASkg3B,EAAWlg3B,OAAQkg3B,EAAWlg3B,QACpDkC,KAAK44B,OAAO02qB,WAA+B,oBAAK0uK,EAAWlg3B,SAAWkzK,GAAkBhxK,KAAK44B,OAAO02qB,WAAwB,eAAOtvsB,KAAK44B,OAAO02qB,WAAoC,wBAAG,CACtL0uK,EAAW5g2B,UACX,IAAK,IAAI4nnB,EAAM,EAAGA,EAAMg5O,EAAWlg3B,OAAQknoB,IAAO,CAC9C,IAAIqxF,EAAUp1tB,SAASjB,KAAK44B,OAAOu0qB,kBAAkB9zqB,uBAAuB,iBAAiBp4B,SAAS+joB,EAAIrkoB,WAAY,KAAKyP,aAAa,iBAAkB,IAC1JqB,EAAKxN,OAAOoytB,EAAS,EAAG2nJ,EAAW/82B,SAAS+joB,EAAIrkoB,WAAY,KAChE,CACJ,CACA,GAAKX,KAAK44B,OAAO4gqB,aAAe/nrB,EAAK3T,SAAW6wyB,EAAmB7wyB,OAK9D,CACD,IAAIoykB,EAAengjB,GAAYte,GAC/B,GAAIy+jB,EAAapykB,OAAQ,CACrB,IAAIwwG,EAAa4he,EAAavukB,KAAI,SAAUzE,GAAK,OAAOA,EAAE,GAAK6g3B,EAAe,IACzEr52B,QAAQiqyB,EAAmB,GAAG,GAAKovE,IACpClue,EAAWvhS,EAAatuG,KAAK44B,OAAOlQ,KAAK+wqB,aAAa1xD,SAC1D4mK,EAAqBz+N,EAAajskB,OAAOqqG,EAAYuhS,EACzD,CACJ,MAZQ8+Z,EAAmB7wyB,OAASkg3B,EAAWlg3B,QACvC6wyB,EAAmB1qyB,OAAO0qyB,EAAmB7wyB,OAASkg3B,EAAWlg3B,OAAQkg3B,EAAWlg3B,OAYhG,CAOA,IANsC,IAAlCkC,KAAKq82B,kBAAkBv+2B,QACvBkC,KAAKq82B,kBAAkB1+2B,KAAKqC,KAAK44B,OAAOs5uB,SAAS9msB,EAAKz+C,QAEtD3sB,KAAK44B,OAAO02qB,WAAoC,yBAChD0uK,EAAW5g2B,UAEVjgB,EAAI,EAAGA,EAAI6g3B,EAAWlg3B,OAAQX,IAAK,CACpC,IAAIsvwB,EAAW/qwB,GAAO,CAAC,EAAGs82B,EAAW/82B,SAAS9D,EAAEwD,WAAY,MAW5D,UAVO8rwB,EAASmO,kBACTnO,EAASz3Z,gBACTy3Z,EAAS9/uB,aACT8/uB,EAASx7rB,aACTw7rB,EAASoQ,uBACTpQ,EAAS2Q,oBACT3Q,EAAS4/B,eACXr7nB,GAAkBy7lB,EAAS2wG,uBACrB3wG,EAAS2wG,cAEhBY,EAAWlg3B,OAAS,GAAKkC,KAAK44B,OAAO02qB,WAAoC,wBAAG,CAC5E,IAAI4oI,EAAcl40B,KAAK44B,OAAOg0qB,aAAa0K,eAC3Ct3sB,KAAK44B,OAAOg0qB,aAAa0K,eAAiBt3sB,KAAK44B,OAAO02qB,WAAmC,uBACzFtvsB,KAAK44B,OAAO02qB,WAAmC,uBAAI4oI,CACvD,CAsBA,GArBA8lC,EAAW/82B,SAAS9D,EAAEwD,WAAY,KAAK8rwB,SAAWA,EAE9Cz7lB,GADJs9nB,EAAetuyB,KAAKq82B,kBAAkBp72B,SAAS9D,EAAEwD,WAAY,QAEzD2tyB,EAAetuyB,KAAKq82B,kBAAkBl/2B,EAAI,IAE1C6C,KAAKqqyB,kBACAr5nB,GAAkBgtsB,EAAW/82B,SAAS9D,EAAEwD,WAAY,KAAKi6wB,aAC1Dq0B,GAAgB8uE,EAAcC,EAAW/82B,SAAS9D,EAAEwD,WAAY,KAAKi6wB,WAAY,MAAO56wB,KAAK44B,OAAQ54B,KAAKqqyB,gBAAiB2zE,EAAW/82B,SAAS9D,EAAEwD,WAAY,OAGhKqwK,GAAkBs9nB,KACnBD,EAAcC,EAAa3hxB,OAEiB,QAA5C3sB,KAAK44B,OAAOg0qB,aAAa0K,gBAAwE,WAA5Ct3sB,KAAK44B,OAAOg0qB,aAAa0K,gBAC1EtmiB,GAAkBgtsB,EAAW/82B,SAAS9D,EAAEwD,WAAY,KAAKi6wB,cAAuC,IAAxB56wB,KAAK22c,gBAC7EA,GAAiB,EACjB23V,EAAe,MAGvB9a,GAAW,CAAE10xB,MAAOk/2B,EAAW/82B,SAAS9D,EAAEwD,WAAY,KAAMqhN,OAAQ,OAAShiN,KAAK44B,OAAQ54B,KAAKqqyB,gBAAiBgE,EAAa13V,EAAey3O,EAAYkgH,GACxJ33V,EAAgB,KACgC,UAA5C32c,KAAK44B,OAAOg0qB,aAAa0K,iBAA+BtmiB,GAAkBgtsB,EAAW/82B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKi6wB,MACrH5pmB,GAAkBhxK,KAAK44B,OAAO02qB,WAAwB,cAAMtvsB,KAAKqqyB,iBAIlE,IAHA,IAAIj+Y,EAAauiZ,EAAmBhtyB,KAAI,SAAUzE,GAAK,OAAOA,EAAE,GAAK6g3B,EAAe,IAC/Er52B,QAAQs52B,EAAW/82B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKi6wB,GAAY,GAAKmjG,IACtEz30B,EAAWqowB,EAAmB1tyB,SAASmrZ,EAAWzrZ,WAAY,KAAK,GAAKy8wB,GACnEr3wB,EAAI,EAAGA,EAAIugC,EAASxoC,OAAQiI,IAC7BugC,EAASrlC,SAAS8E,EAAEpF,WAAY,KAAK,GAAKo92B,KAAkBC,EAAW/82B,SAAS9D,EAAEwD,WAAY,KAAK,GAAKo92B,IACxGpvE,EAAmB1tyB,SAASmrZ,EAAWzrZ,WAAY,KAAK,GAAKy8wB,GAAcn5wB,OAAO8B,EAAG,EAIrG,CACA,GAAIituB,EAAa,GAAKtoG,GAAgB5soB,OAClC,IAAKX,EAAI,EAAGA,EAAI61uB,EAAa,GAAKtoG,GAAgB5soB,OAAQX,IACtDq2xB,GAAW,CAAE10xB,MAAOk0uB,EAAa,GAAKtoG,GAAgBzpoB,SAAS9D,EAAEwD,WAAY,KAAMqhN,OAAQ,UAAYhiN,KAAK44B,OAAQ54B,KAAKqqyB,gBAAiBgE,EAAa13V,EAAey3O,EAAYkgH,GAG1LtuyB,KAAK44B,OAAOm/uB,WAAa,GACzB,IAAK,IAAIkmG,EAAM,EAAGA,EAAMxs2B,EAAK3T,OAAQmg3B,IACjCxs2B,EAAKxQ,SAASg92B,EAAIt92B,WAAY,KAAe,MAAIs92B,EACjDtqlB,GAAS,sBAAwBliR,EAAKxQ,SAASg92B,EAAIt92B,WAAY,KAAkB,SAAI,SAAUs92B,EAAKj+2B,KAAK44B,QACpGnnB,EAAKxQ,SAASg92B,EAAIt92B,WAAY,KAAe,OAC9CX,KAAK44B,OAAOm/uB,WAAWp6wB,KAAK8T,EAAKxQ,SAASg92B,EAAIt92B,WAAY,KAGtE,CACAX,KAAKq82B,kBAAoBr82B,KAAKm82B,kBAAoBn82B,KAAKs82B,aAAet82B,KAAKo82B,oBAAsBp82B,KAAK2uyB,mBAAqB,GACvH3uyB,KAAK44B,OAAO02qB,WAAoC,0BAChDtvsB,KAAK44B,OAAO02qB,WAAoC,yBAAI,EAE5D,EACA+7I,EAAU9s1B,UAAU0+2B,wBAA0B,SAAUtw1B,GACpD,IAAIy0G,EAAOphI,KAAK44B,OAAOlQ,KAAK+rrB,cAC5B,IAAiD,UAA5Cz0sB,KAAK44B,OAAOg0qB,aAAa0K,gBAA0E,UAA5Ct3sB,KAAK44B,OAAOg0qB,aAAa0K,iBAC9Et3sB,KAAK22c,eAAiB,EAAG,CAC5B,IAAK3lS,GAAkBhxK,KAAKs82B,aAAat82B,KAAKquyB,eAAiBruyB,KAAKs82B,aAAat82B,KAAKquyB,aAAa5/a,SAC/F,GAAIzuX,KAAK44B,OAAOy+qB,kBAAkBr3sB,KAAK2qoB,cAAc7soB,OAAS,GACvDkC,KAAK44B,OAAOy+qB,kBAAkBr3sB,KAAK0qoB,gBAAgB5soB,QAEtD,GADA6uB,GAAS04wB,GAAoBrlyB,KAAKs82B,aAAat82B,KAAKquyB,cAAcvwyB,OAClB,UAA5CkC,KAAK44B,OAAOg0qB,aAAa0K,eAEzB3qrB,GADsB3sB,KAAK882B,0BAK/Bnw1B,GAAS04wB,GAAoBrlyB,KAAKs82B,aAAat82B,KAAKquyB,cAAcvwyB,OAGtE6uB,GAASy0G,EAAKtjI,SACd6uB,EAAQy0G,EAAKtjI,OAAS,GAE1BkC,KAAKu92B,iBAAiBv92B,KAAK44B,OAAOlQ,KAAKo6rB,yBACnC9itB,KAAKk82B,kBACLvv1B,GAAS3sB,KAAKk82B,iBAElBl82B,KAAKk82B,gBAAkB,CAC3B,CACA,OAAOvv1B,CACX,EACA0+zB,EAAU9s1B,UAAUk+2B,qBAAuB,SAAUv/2B,GACjDA,EAAEkuE,KAAK01Q,QAAS,EAChB,IAAI+7K,EAAU78f,KAAK44B,OAAOlQ,KAAK2urB,kBAC3B1sE,EAAe,GAEfvtoB,OAAOC,KAAKw/f,GAAS/+f,SACrB6soB,EAAe9tI,EAAQ8tI,cAE3B,IAAK,IAAIxtoB,EAAI,EAAGA,EAAIwtoB,EAAa7soB,OAAQX,IACrCD,EAAEkkI,KAAKn9H,OAAO0moB,EAAa1poB,SAAS9D,EAAEwD,WAAY,KAAe,MAAG,EAE5E,EACA0q1B,EAAU9s1B,UAAUm+2B,cAAgB,SAAUtxyB,GAC1C,IAAIz+C,EAAQ,QAER3sB,KAAK44B,OAAO40sB,kBAAkB1vuB,OAC9BstE,EAAK,GAAKz+C,GAAS3sB,KAAK44B,OAAO40sB,kBAAkB,GAAgB,SAGjEpiqB,EAAK,GAAKz+C,GAAS3sB,KAAKm92B,UAEhC,EACO9xB,CACX,CA1lB+B,GCA3BhqG,IAAsB,WAMtB,SAASA,EAAKzotB,GACV54B,KAAK2qoB,aAAe,eACpB3qoB,KAAK0qoB,eAAiB,iBACtB1qoB,KAAKk+2B,iBAAmB,KACxBl+2B,KAAKm+2B,oBAAqB,EAC1Bn+2B,KAAKo+2B,yBAA0B,EAC/B3hc,GAAKyzD,OAAOmuY,KACZr+2B,KAAK44B,OAASA,EACd54B,KAAKqqyB,iBAAmBr5nB,GAAkBp4I,EAAOmgvB,iBACjD/4wB,KAAKs+2B,uBAAyB,KAC9Bt+2B,KAAKu+2B,mBAAqB,CAAC,EAC3Bv+2B,KAAKw+2B,gBAAkB,IAAInzB,IAAUrr1B,KAAK44B,QAC1C54B,KAAKqN,kBACT,CA6/BA,OAt/BAg0uB,EAAK9ivB,UAAUyke,cAAgB,WAC3B,MAAO,MACX,EAKAq+Q,EAAK9ivB,UAAU8O,iBAAmB,WAC9BrN,KAAK44B,OAAOsI,GAAGj6B,GAAmBjH,KAAKk3qB,WAAYl3qB,MACnDA,KAAK44B,OAAOsI,GAAGj6B,GAAkBjH,KAAKmjyB,UAAWnjyB,MACjDA,KAAK44B,OAAOsI,GAAGj6B,GAAiBjH,KAAKojyB,SAAUpjyB,MAC/CA,KAAK44B,OAAOsI,GAAGj6B,GAA0BjH,KAAKw1xB,kBAAmBx1xB,MACjEA,KAAK44B,OAAOsI,GAAGj6B,GAAiBjH,KAAKqjyB,SAAUrjyB,MAC/CA,KAAK44B,OAAOsI,GAAGj6B,GAAoBjH,KAAK8zqB,YAAa9zqB,MACrDA,KAAK44B,OAAOlQ,KAAKwY,GAAGj6B,GAAmBjH,KAAKg2qB,WAAYh2qB,MACxDA,KAAK44B,OAAOlQ,KAAKwY,GAAG,iBAAkBlhC,KAAKy+2B,YAAaz+2B,MACxDA,KAAK44B,OAAOlQ,KAAKwY,GAAG,gBAAiBlhC,KAAK0+2B,aAAc1+2B,MACxDA,KAAK44B,OAAOsI,GAAGj6B,GAAiBjH,KAAKsjyB,SAAUtjyB,MAC/CA,KAAK44B,OAAOsI,GAAG,cAAelhC,KAAK2+2B,iBAAkB3+2B,MACrDA,KAAK44B,OAAOsI,GAAG,iBAAkBlhC,KAAK2+2B,iBAAkB3+2B,MACxDA,KAAK44B,OAAOlQ,KAAKwY,GAAGj6B,GAAkBjH,KAAKw1xB,kBAAmBx1xB,MAC9DA,KAAK44B,OAAOlQ,KAAKwY,GAAG,WAAYlhC,KAAK4+2B,aAAc5+2B,MACnDA,KAAK44B,OAAOlQ,KAAKwY,GAAG,cAAelhC,KAAK6+2B,eAAgB7+2B,MACxDA,KAAK44B,OAAOsI,GAAG,0BAA2BlhC,KAAK8+2B,wBAAyB9+2B,MAExEA,KAAK44B,OAAOlQ,KAAKwY,GAAGj6B,GAAwBjH,KAAK8jyB,gBAAiB9jyB,MAClEA,KAAK44B,OAAOlQ,KAAKwY,GAAGj6B,GAA0BjH,KAAK+jyB,kBAAmB/jyB,MACtEA,KAAK44B,OAAOlQ,KAAKwY,GAAG,mBAAoBlhC,KAAK++2B,eAAgB/+2B,MAC7DA,KAAK44B,OAAOlQ,KAAKwY,GAAG,mBAAoBlhC,KAAKg/2B,eAAgBh/2B,KACjE,EACAqhvB,EAAK9ivB,UAAUqg3B,aAAe,SAAU1h3B,GAKpC,GAJA8C,KAAKi/2B,kBAAoB/h3B,EAAEilB,OACvBjlB,EAAEilB,OAAOhe,UAAUC,SAAS,YAA6D,IAA/CpE,KAAK44B,OAAOkqrB,wBAAwBhltB,SAC9EkC,KAAKi/2B,kBAAoB,MAEzB/h3B,EAAEilB,OAAOhe,UAAUC,SAAS,uBAAyBlH,EAAEilB,OAAOhe,UAAUC,SAAS,oBAAqB,CACtG,IAAI8oU,EAAKohX,GAAapxrB,EAAEilB,OAAQ,SAC5B0irB,EAAW33X,GAAMjsU,SAASisU,EAAG98T,aAAa,iBAAkB,KAC3D4gK,GAAkB6zhB,IAAaA,GAAY,GAAK7ksB,KAAK44B,OAAO4gqB,cAE7Dx5rB,KAAK44B,OAAOlQ,KAAK+rrB,cAAc5P,GAAUlknB,QAAQzN,IAAMlzE,KAAK44B,OAAOlQ,KAAKworB,cAAclqkB,UAAU69jB,GAAU3xnB,IAElH,CACJ,EACAmuqB,EAAK9ivB,UAAUyg3B,eAAiB,SAAUj0B,GACtCA,EAAQzzI,eAAiBt3sB,KAAK44B,OAAOg0qB,aAAa0K,eAClDyzI,EAAQ18C,YAAcruyB,KAAKquyB,YAC3B08C,EAAQ3qJ,cAAgBpgsB,KAAKk+2B,gBACjC,EACA78H,EAAK9ivB,UAAUulyB,gBAAkB,SAAU14tB,GACD,SAAlCprE,KAAK44B,OAAOg0qB,aAAa/grB,MACzB7rB,KAAK44B,OAAOwmc,QAAQn4d,GAAoBmkE,EAEhD,EACAi2qB,EAAK9ivB,UAAUwlyB,kBAAoB,SAAU34tB,GACH,SAAlCprE,KAAK44B,OAAOg0qB,aAAa/grB,OACzBu/C,EAAkB,YAAI,SACtBprE,KAAK44B,OAAOwmc,QAAQn4d,GAAuBmkE,GAEnD,EAKAi2qB,EAAK9ivB,UAAUs6D,oBAAsB,WAC7B74D,KAAK44B,OAAOspc,cAGhBlie,KAAK44B,OAAOyW,IAAIpoC,GAAmBjH,KAAKk3qB,YACxCl3qB,KAAK44B,OAAOyW,IAAIpoC,GAAkBjH,KAAKmjyB,WACvCnjyB,KAAK44B,OAAOyW,IAAIpoC,GAAiBjH,KAAKojyB,UACtCpjyB,KAAK44B,OAAOyW,IAAIpoC,GAA0BjH,KAAKw1xB,mBAC/Cx1xB,KAAK44B,OAAOyW,IAAIpoC,GAAoBjH,KAAK8zqB,aACzC9zqB,KAAK44B,OAAOlQ,KAAK2mB,IAAIpoC,GAAmBjH,KAAKg2qB,YAC7Ch2qB,KAAK44B,OAAOlQ,KAAK2mB,IAAI,iBAAkBrvC,KAAKy+2B,aAC5Cz+2B,KAAK44B,OAAOlQ,KAAK2mB,IAAI,gBAAiBrvC,KAAK0+2B,cAC3C1+2B,KAAK44B,OAAOyW,IAAIpoC,GAAiBjH,KAAKsjyB,UACtCtjyB,KAAK44B,OAAOyW,IAAI,cAAervC,KAAK2+2B,kBACpC3+2B,KAAK44B,OAAOyW,IAAI,iBAAkBrvC,KAAK2+2B,kBACvC3+2B,KAAK44B,OAAOlQ,KAAK2mB,IAAI,cAAervC,KAAK6+2B,gBACzC7+2B,KAAK44B,OAAOlQ,KAAK2mB,IAAIpoC,GAAkBjH,KAAKw1xB,mBAC5Cx1xB,KAAK44B,OAAOyW,IAAI,0BAA2BrvC,KAAK8+2B,yBAChD9+2B,KAAK44B,OAAOlQ,KAAK2mB,IAAIpoC,GAAwBjH,KAAK8jyB,iBAClD9jyB,KAAK44B,OAAOlQ,KAAK2mB,IAAIpoC,GAA0BjH,KAAK+jyB,mBACpD/jyB,KAAK44B,OAAOlQ,KAAK2mB,IAAI,WAAYrvC,KAAK4+2B,cACtC5+2B,KAAK44B,OAAOlQ,KAAK2mB,IAAI,mBAAoBrvC,KAAK++2B,gBAC9C/+2B,KAAK44B,OAAOlQ,KAAK2mB,IAAI,mBAAoBrvC,KAAKg/2B,gBAElD,EAOA39H,EAAK9ivB,UAAUklE,QAAU,WACrBzjE,KAAK64D,qBACT,EAMAworB,EAAK9ivB,UAAUmq1B,oBAAsB,SAAU7nzB,GAC3C7gC,KAAK44B,OAAOlQ,KAAK4mrB,WAAWo5I,oBAAoB7nzB,EACpD,EACAwgtB,EAAK9ivB,UAAUog3B,iBAAmB,SAAUvzyB,GACxC,IAAIukS,EAAYyzH,GAAU,aAAch4Z,GACpC05L,EAAYs+N,GAAU,OAAQzzH,GAC9BuvgB,EAAUl/2B,KAAK44B,OACf46mB,EAAU0rO,EAAQx8R,WAAW8wD,QACjC,IAAK84H,GAAa4yG,IAAY1rO,aAAmBrB,KAClB,SAA1BxiS,EAAU9iG,aAA+C,QAArB8iG,EAAU3tJ,SACN,UAAxCk9pB,EAAQtyK,aAAa0K,gBAAsE,UAAxC4nK,EAAQtyK,aAAa0K,gBAC1B,UAAxC4nK,EAAQtyK,aAAa0K,gBAC5B,GAAkB,gBAAdxyc,EAA6B,CAC7B,IAAI+/b,EAAW7zhB,GAAkB2+L,EAAU/mV,OAASxrB,OAAOC,KAAKsyW,EAAU/mV,KAAK9qB,OAASkC,KAAK22c,cACzFhnG,EAAU/mV,IAAIi8qB,SAAW,EACzB1pN,EAAYnqU,GAAkB6zhB,KAA2B,IAAdA,GACiE,EAA5Gq6K,EAAQp8J,wBAAwB7htB,SAAS4jsB,EAASlksB,WAAY,KAAKu+2B,EAAQ3jL,0BAA0B,IACzG2jL,EAAQx21B,KAAKu6N,MAAM6jZ,UAAU,gBAAiB3rJ,EAClD,MACK,GAAkB,mBAAdr2O,EAEL,IADA,IAAIq6mB,EAAeD,EAAQx21B,KAAKu6N,MAAMj2N,OAAOlvB,OACpCX,EAAI,EAAGA,EAAIgi3B,EAAchi3B,IACoC,kBAA9D+h3B,EAAQx21B,KAAKu6N,MAAMj2N,OAAO/rB,SAAS9D,EAAEwD,WAAY,KAAK/B,KACtDsg3B,EAAQx21B,KAAKu6N,MAAMj2N,OAAO/oB,OAAO9G,GAK7C6C,KAAK44B,OAAO+0pB,yBAAyC,mBAAd7ob,GACvC9kQ,KAAKo/2B,kBAAkBzvgB,GAEW,UAAlC3vW,KAAK44B,OAAOg0qB,aAAa/grB,MAA8C,WAA1B8jV,EAAU9iG,aACvD7sQ,KAAK44B,OAAOolE,OAAO,kBAAmB,CAAC,EAE/C,EACAqjpB,EAAK9ivB,UAAU6g3B,kBAAoB,SAAUh0yB,GACzC,GAA0B,SAArBA,EAAKyhM,aAA0C,QAAhBzhM,EAAK42I,QAA0C,WAArB52I,EAAKyhM,YAA0B,CACzF,GAAgD,QAA5C7sQ,KAAK44B,OAAOg0qB,aAAa0K,iBAAoD,IAAxBt3sB,KAAK22c,eACjC,SAArBvrY,EAAKyhM,aAA0C,QAAhBzhM,EAAK42I,OAAmB,CAC3D,IAAIsyiB,EAAat0vB,KAAK44B,OAAOlQ,KAAKu1qB,gBAC9BohL,EAAe/qH,EAAWrwvB,OAAO,EAAG,GAAG,GACvCq72B,EAAoBt/2B,KAAKquyB,YACzBprI,EAAcjjqB,KAAK44B,OAAOkqrB,wBACkB,UAA5C9itB,KAAK44B,OAAOg0qB,aAAa0K,gBAA0E,UAA5Ct3sB,KAAK44B,OAAOg0qB,aAAa0K,iBAChFgoK,GAAqBj6E,GAAoBpiI,EAAYq8M,EAAoB,IAAIxh3B,QAEjFwh3B,EAAgE,UAA5Ct/2B,KAAK44B,OAAOg0qB,aAAa0K,eAA6BgoK,EAAoB,EAAIA,EAClGhrH,EAAWrwvB,OAAOq72B,EAAmB,EAAGD,GACxC,IAAIE,EAAYt8M,EAAYh/pB,OAAO,EAAG,GAAG,GACzCg/pB,EAAYh/pB,OAAOq72B,EAAmB,EAAGC,GACzCv/2B,KAAKw/2B,8BAA8BD,EAAWv/2B,KAAKquyB,YACvD,CACA,IAAIjjG,EAAcprsB,KAAK44B,OAAOlQ,KAAKs+G,UAC/By4uB,EAAoBz/2B,KAAK44B,OAAOlQ,KAAKu1qB,gBACrCyhL,EAAU1/2B,KAAK44B,OAAO0zqB,uBAAuBC,YAC5CmzK,IACDr8G,GAAcrjwB,KAAK44B,OAAOlQ,KAAM1oB,KAAK44B,OAAOlQ,KAAKu1qB,gBAAiBj+rB,KAAK44B,OAAOlQ,KAAKs+G,UAAW,GAC9FhnI,KAAKygF,YAAYzgF,KAAK44B,OAAOlQ,KAAKg6jB,WAAY1ilB,KAAK44B,OAAOouG,UAAWhnI,KAAK44B,OAAOkqrB,2BAEhF48J,GAAW1/2B,KAAK44B,OAAOg1rB,mBAAqB,IAC7Cy1C,GAAcrjwB,KAAK44B,OAAOlQ,KAAM+21B,EAAmBr0K,EAAa,GAChEprsB,KAAKygF,YAAYzgF,KAAK44B,OAAOlQ,KAAKg6jB,WAAY0oH,EAAaprsB,KAAK44B,OAAOkqrB,yBAE/E,CACJ,EACAu+B,EAAK9ivB,UAAUih3B,8BAAgC,SAAUD,EAAWI,GAChE,IAAI/+pB,EAAQ5gN,KAGR+H,EAAO7G,KAAK4hC,KAAK680B,EAAc3/2B,KAAK44B,OAAOlQ,KAAK+wqB,aAAa1xD,UAC7D90O,EAAOlrZ,EAAO,EAAIA,EAAO,EACzBo7E,EAAYw8xB,GAAgB1sd,EAAO,GAAKjzZ,KAAK44B,OAAO6gqB,aAAa1xD,SACjE63O,EAA0B5/2B,KAAK44B,OAAOlQ,KAAKgxqB,qBAAsC,wBACrFkmL,EAAwB,GAAG372B,OAAO,EAAG,GACrC,IAAIwN,EAAOmu2B,EAAwB3+2B,SAASgyZ,EAAKtyZ,WAAY,KACxDqwK,GAAkBhxK,KAAKsuyB,gBACxB78xB,EAAKjU,QAAO,SAAUN,EAAGyvB,GACjBzvB,EAAE83W,WAAap0J,EAAM0tlB,aAAat5b,WAClC7xR,EAAYx2D,EAEpB,KACI3sB,KAAKsuyB,aAAazxB,iBAAmB78wB,KAAKsuyB,aAAalxB,aAAat/wB,QACxB,UAA5CkC,KAAK44B,OAAOg0qB,aAAa0K,gBAA0E,UAA5Ct3sB,KAAK44B,OAAOg0qB,aAAa0K,kBAChFn0nB,GAAakitB,GAAoBrlyB,KAAKsuyB,cAAcxwyB,SAGxDqlF,GAAanjF,KAAK44B,OAAO6gqB,aAAa1xD,WACtC90O,GAAQ,EACRxhZ,EAAOmu2B,EAAwB3+2B,SAASgyZ,EAAKtyZ,WAAY,KACzDwiF,EAAYA,EAAYnjF,KAAK44B,OAAO6gqB,aAAa1xD,UAAY,EAAI5kjB,EAAYnjF,KAAK44B,OAAO6gqB,aAAa1xD,SAAW,GAErH5kjB,EAAwD,UAA5CnjF,KAAK44B,OAAOg0qB,aAAa0K,eAA6Bn0nB,EAAY,EAAIA,EAClF1xE,EAAKxN,OAAOk/E,EAAW,EAAGo8xB,GAC1Bv/2B,KAAK44B,OAAOlQ,KAAKgxqB,qBAA+C,uBACpE,EACA2nD,EAAK9ivB,UAAUi3xB,kBAAoB,SAAUpqtB,GACzC,IAAIjpD,EAASipD,EAAKjpD,OAClB,IAAI6uJ,GAAkB7uJ,EAAO2+c,QAAQ,kBAG/B9ge,KAAK44B,OAAOlQ,KAAKkkrB,aAAa9mC,eAAiB9lqB,KAAK44B,OAAOlQ,KAAKs4qB,OAAtE,CAGA,IAAIn4qB,EAAS7oB,KAAK44B,OAAOlQ,KAAK4ssB,kBAAkBnzsB,EAAO2+c,QAAQ,gBAAgB1wd,aAAa,kBAC5F,GAAsC,SAAlCpQ,KAAK44B,OAAOg0qB,aAAa/grB,OAAoB7rB,KAAK6/2B,WAAah31B,IAAWA,EAAOu6jB,cACjFpjlB,KAAK44B,OAAOg0qB,aAAa9mC,cAAgBj9oB,EAAOi9oB,eAAkB3jpB,EAAOhe,UAAUC,SAAS,sBAC5F+d,EAAOhe,UAAUC,SAAS,uBAA0BpE,KAAK44B,OAAOg0qB,aAAaupG,oBAAqB,CAGlG,GAFAn2yB,KAAK6/2B,WAAY,EACjB7/2B,KAAK44B,OAAOlQ,KAAKu5c,cAAc,CAAEuyP,iBAAkBpppB,EAAKy5nB,WAAY,GAChE7ksB,KAAK44B,OAAO48nB,qBAAsB,CAClC,IAAItoV,EAAKohX,GAAaljnB,EAAKjpD,OAAQ,SACnCniB,KAAKk+2B,iBAAmBhxiB,EAAG98T,aAAa,iBACxC88T,EAAGtkU,aAAa,gBAAiBskU,EAAG23X,SAAW,GACnD,CACA7ksB,KAAK8/2B,mBAAmB,QAC5B,KAC2C,SAAlC9/2B,KAAK44B,OAAOg0qB,aAAa/grB,MAAqBhD,EAAOi9oB,eAAgBj9oB,EAAOu6jB,eACjFpjlB,KAAK6/2B,WAAY,EACjB7/2B,KAAK8/2B,mBAAmB,SAhB5B,CAkBJ,EACAz+H,EAAK9ivB,UAAUuh3B,mBAAqB,SAAUj01B,GAC1C7rB,KAAK44B,OAAOlQ,KAAKu5c,cAAc,CAAE2qO,aAAc,CAAE/grB,KAAMA,KAAU,GAC9Cu3c,GAAU,gBAAiBpje,KAAK44B,OAAOlQ,KAAK4mrB,YAClD1xsB,MAAMoC,KAAK44B,OAAOlQ,KAAK4mrB,YACpCtvsB,KAAK44B,OAAOlQ,KAAKs4qB,QAAS,CAC9B,EACAqgD,EAAK9ivB,UAAUwg3B,eAAiB,WACxB/+2B,KAAK44B,OAAO48nB,sBAA0D,SAAlCx1pB,KAAK44B,OAAOg0qB,aAAa/grB,OAC7D7rB,KAAK6/2B,WAAY,EACjB7/2B,KAAK8/2B,mBAAmB,UAEhC,EACAz+H,EAAK9ivB,UAAUy3qB,WAAa,SAAU5qmB,GAC9BprE,KAAK6/2B,YACL7/2B,KAAKq9vB,SAAWjyrB,EAAK42I,QAEL,OAAhB52I,EAAK42I,QACLhiN,KAAKw1xB,kBAAkBpqtB,GAEP,WAAhBA,EAAK42I,QACLhiN,KAAK44B,OAAOwipB,WAEpB,EACAimE,EAAK9ivB,UAAUs/2B,eAAiB,SAAU/+2B,UAE/BkB,KAAK44B,OAAoB,yBAAE,GAAK95B,UAEhCkB,KAAK44B,OAAc,mBAAE,GAAK95B,EACrC,EACAuivB,EAAK9ivB,UAAU+kyB,SAAW,SAAUl4tB,GAChC,IAAIw1I,EAAQ5gN,KACRyuK,EAAU,UACVsxsB,EAAO30yB,EAAK,GAAKqjG,GAoBrB,UAnBOrjG,EAAK,GAAKqjG,GACbzuK,KAAK44B,OAAO48nB,uBAAyBxkf,GAAkBhxK,KAAKk+2B,mBAA+C,OAA1Bl+2B,KAAKk+2B,mBACtF9yyB,EAAKxiD,IAAIhgB,aAAa,gBAAiB5I,KAAKk+2B,kBAC5Cl+2B,KAAKk+2B,sBAAmBjxyB,GAEN,UAAlBjtE,KAAKq9vB,UACLr9vB,KAAK44B,OAAOwmc,QAAQn4d,GAAiBmkE,GAAM,SAAU40yB,GAC5CA,EAAal/hB,QAA6C,SAAnClgI,EAAMhoL,OAAOg0qB,aAAa/grB,KAG7Cm01B,EAAal/hB,QAA6C,SAAnClgI,EAAMhoL,OAAOg0qB,aAAa/grB,OACtD+0L,EAAMi/pB,WAAY,EAClBj/pB,EAAMk/pB,mBAAmB,WAJzBl/pB,EAAM04iB,mBAAmB,QAMxBtolB,GAAkB+usB,IACnBA,EAAK3kyB,QAAQ4kyB,EAErB,IAEAhg3B,KAAKi/2B,oBAAsBj/2B,KAAKi/2B,kBAAkB962B,UAAUC,SAAS,qBACrEpE,KAAKi/2B,kBAAkB962B,UAAUC,SAAS,uBAAyBpE,KAAKi/2B,kBAAkB962B,UAAUC,SAAS,kBAG7G,OAFAgnE,EAAK01Q,QAAS,OACd9gV,KAAKi/2B,kBAAoB,MAGS,SAAlCj/2B,KAAK44B,OAAOg0qB,aAAa/grB,OACH,QAAlB7rB,KAAKq9vB,UAAwC,aAAlBr9vB,KAAKq9vB,SAChCr9vB,KAAKq9vB,SAAW,KAEO,UAAlBr9vB,KAAKq9vB,WACVjyrB,EAAK01Q,QAAS,EACd9gV,KAAKq9vB,SAAW,KAChB1pe,GAAS,kBAAkB,EAAO3zR,KAAK44B,SAEtCwyC,EAAK8vwB,aAAap1K,eACnB16lB,EAAK01Q,QAAS,IAGlB9gV,KAAK44B,OAAO48nB,uBACZx1pB,KAAK44B,OAAOlQ,KAAKworB,cAA8B,eAAIlxsB,KAAK44B,OAAOlQ,KAAK4mrB,WAAWA,WAAkB,MAKzG,EACA+xC,EAAK9ivB,UAAU+6vB,mBAAqB,SAAUz6qB,GAC1C,IAAKmyF,GAAkBhxK,KAAK44B,OAAOlQ,KAAKwnsB,eAAgB,CACpD,IAAI+vJ,EAAYjg3B,KAAK44B,OAAO6gC,QAAQ3jD,GAAK,gBACzC9V,KAAK44B,OAAOlQ,KAAKwnsB,cAAcqpC,YAAY,CAAC0mH,EAAY,MAAOA,EAAY,OAAQA,EAAY,UAAuB,SAAZphyB,GAC1G7+E,KAAK44B,OAAOlQ,KAAKwnsB,cAAcqpC,YAAY,CAAC0mH,EAAY,SAAUA,EAAY,UAAuB,SAAZphyB,EAC7F,CACJ,EACAwiqB,EAAK9ivB,UAAUu1qB,YAAc,WACzB,GAAsC,SAAlC9zqB,KAAK44B,OAAOg0qB,aAAa/grB,KAAiB,CAC1C,IAAIy/zB,EAAcv9nB,GAAS,yBAA0B/tN,KAAK44B,OAAOlQ,KAAK4mrB,YAClE4wK,EAAWlg3B,KAAK44B,OAAOm8rB,iBAAiBu2H,EAAYzmJ,SAAU7ksB,KAAK44B,OAAOywwB,iBAC9ErpyB,KAAK44B,OAAOsxtB,aAAa8+C,WAAW,CAChCv3xB,KAAM650B,EAAY74F,QAClBn4nB,KAAM4lvB,EACNr31B,OAAQ7oB,KAAK44B,OAAOlQ,KAAKuwqB,aAAaj5rB,KAAK44B,OAAOywwB,mBAEtDrpyB,KAAK8/2B,mBAAmB,UACxB9/2B,KAAK6/2B,WAAY,CACrB,CACsC,UAAlC7/2B,KAAK44B,OAAOg0qB,aAAa/grB,MACzB7rB,KAAK44B,OAAOolE,OAAO,oBAAqB,CAAC,EAEjD,EACAqjpB,EAAK9ivB,UAAUsg3B,eAAiB,SAAUzzyB,GAClCy7jB,GAAgB7moB,KAAK44B,SAA6C,SAAlC54B,KAAK44B,OAAOg0qB,aAAa/grB,MAAmC,SAAhBu/C,EAAK42I,SACjFhiN,KAAKqquB,WAAWj/pB,EAAMA,EAAKy5nB,UAC3B7ksB,KAAKmg3B,cAAc/0yB,EAAMA,EAAKxiD,IAAKwiD,EAAKy5nB,UAEhD,EACAw8C,EAAK9ivB,UAAU8kyB,SAAW,SAAUj4tB,GAChC,IAAIw1I,EAAQ5gN,KACZ,GAAsC,SAAlCA,KAAK44B,OAAOg0qB,aAAa/grB,MAAmB7rB,KAAK44B,OAAO6gC,QAAQtkD,cAAc,QAAS,CACvFi2D,EAAK01Q,QAAS,EACd,IAGIohZ,EAOAC,EATJxuc,GAAS,kBAAkB,EAAM3zR,KAAK44B,QACtCwyC,EAAKqnrB,QAAQrnrB,EAAKgjnB,YAAchjnB,EAAKtsE,MAGjCojuB,EADAlxjB,GAAkB5lG,EAAKkvD,MACft6H,KAAK44B,OAAOlQ,KAAK4mrB,WAA0B,WAAExtZ,KAAK59S,cAAc6R,WAGhEq1D,EAAKkvD,KAAKvkH,WAGtB,IAAIqq2B,EAAgBpg3B,KAAK44B,OAAO2iqB,0BAChC,GAAIvqhB,GAAkBkxjB,GAClBliuB,KAAK44B,OAAOlQ,KAAKo6rB,wBAAwBtltB,QAAO,SAAUN,EAAGC,GACrDD,EAAEkj3B,EAAc,MAAQh1yB,EAAKqnrB,QAAQ2tH,EAAc,MACnDj+I,EAAahluB,EAGrB,QAEC,CACD,IAAIimF,EAAUpjF,KAAK44B,OAAOoqqB,4BAA8B,GACpDhjsB,KAAK44B,OAAO4pqB,6BAA+B,EAGvC2/B,EAFJ/+oB,GACIpjF,KAAK44B,OAAOouG,UAAUtiI,QAAQw9tB,GACjBliuB,KAAK44B,OAAOouG,UAAUtiI,QAAQw9tB,KAOS,IAA1CliuB,KAAK44B,OAAOouG,UAAUtiI,QAAQw9tB,IAAkBliuB,KAAK44B,OAAOg1rB,mBAAqB,EAC3F5ttB,KAAK44B,OAAOlQ,KAAKs+G,UAAUtiI,QAAQw9tB,GAASliuB,KAAK44B,OAAOouG,UAAUtiI,QAAQw9tB,EAEtF,CACA,IAAI73lB,EAAM,CAAC,EAMX,GALA3oI,GAAO2oI,EAAKj/D,GACZi/D,EAAIy2M,QAAS,EACbz2M,EAAI5jI,KAAO,OACXy7tB,EAAQliuB,KAAK44B,OAAOlQ,KAAKs+G,UAAUk7lB,EAAMr9B,UACzC7ksB,KAAK44B,OAAOwmc,QAAQn4d,GAAoBojI,GACnCA,EAAIy2M,OA0CL9gV,KAAK44B,OAAOlQ,KAAKs4qB,QAAS,OAtC1B,GAHKkhC,EAAMr9B,WAAa7ksB,KAAK44B,OAAOkqrB,wBAAwBhltB,OAAS,GAAwB,QAAlBkC,KAAKq9vB,WAC5Er9vB,KAAKs92B,cAAe,GAEnBhxG,GAAatswB,KAAK44B,SACjB54B,KAAK44B,OAAO8pjB,sBAAsByxD,IAAen0oB,KAAK44B,OAAO8pjB,WAAW8wD,mBAAmBrB,IAc5F,GAAIm6H,GAAatswB,KAAK44B,SACtB54B,KAAK44B,OAAO8pjB,sBAAsByxD,IAAen0oB,KAAK44B,OAAO8pjB,WAAW8wD,mBAAmBrB,GAAoB,CAChH,IAAIlvZ,EAAQjjP,KAAK44B,OAAOlQ,KAAKu6N,MAC7B,GAAIjjP,KAAK44B,OAAgB,UAAM54B,KAAK44B,OAAO4/uB,kBACvCx4wB,KAAKqquB,WAAWj/pB,EAAM+2pB,GACtBxuc,GAAS,UAAU,EAAO3zR,KAAK44B,OAAOlQ,MACtC1oB,KAAKmg3B,cAAc/0yB,EAAM82pB,EAAOC,OAE/B,CAEMniuB,KAAK44B,OAAOlQ,KAAKg6jB,WAAW90hB,OAAOwyzB,EAAc,GAAIh1yB,EAAKqnrB,QAASxvgB,EAAM+iZ,UAAW/iZ,EAAO73K,EAAKqlW,eAClGlxY,MAAK,SAAUriC,GACX8zK,GAAkB9zK,KACnBkuE,EAAKqnrB,QAAQrnrB,EAAKgjnB,YAAclxrB,EAAEkuE,EAAKgjnB,aAE3Cxte,EAAMyphB,WAAWj/pB,EAAM+2pB,GACvBxuc,GAAS,UAAU,EAAO/yE,EAAMhoL,OAAOlQ,MACvCk4L,EAAMu/pB,cAAc/0yB,EAAM82pB,EAAOC,EACrC,GACJ,CACJ,OAjCI,GAAIt7F,GAAgB7moB,KAAK44B,QAAS,CAC9B,IACIm9uB,EAAW,CAAElpgB,YAAa,OAAQp7P,KAAM25D,EAAKqnrB,QAASzwiB,OAAQ,OAAQp5L,IAAKs5sB,EAC3Er9B,SAAUs9B,EAAYswB,QAASrnrB,EAAKqnrB,QAASrkE,WAAYhjnB,EAAKgjnB,WAC9DkD,kBAAmB,KAAM+uL,oBAAqB,MAClDrg3B,KAAK44B,OAAOlQ,KAAKmsqB,gBAAiC,aAAEkhF,EAAU/1wB,KAAK44B,OAAOlQ,KAAKu6N,MACnF,MAEIjjP,KAAKqquB,WAAWj/pB,EAAM+2pB,GACtBxuc,GAAS,UAAU,EAAO3zR,KAAK44B,OAAOlQ,MACtC1oB,KAAKmg3B,cAAc/0yB,EAAM82pB,EAAOC,EA4BhD,CACIniuB,KAAK44B,OAAO48nB,uBACZx1pB,KAAK44B,OAAOlQ,KAAKworB,cAA2B,YAAI,CAAC,EAEzD,EACAmwC,EAAK9ivB,UAAU4h3B,cAAgB,SAAU/0yB,EAAMxiD,EAAKi8qB,GAC5C7ksB,KAAK44B,OAAOlQ,KAAK0h0B,iBACjBpq1B,KAAK44B,OAAOlQ,KAAK0h0B,gBAAgB97W,QAAQlja,EAAKqnrB,SAElDzyvB,KAAK44B,OAAOlQ,KAAK4mrB,WAAWi6I,eAAe,CAACvp1B,KAAK44B,OAAOlQ,KAAK0pqB,iBAAiBhnnB,EAAKgjnB,cACnFpurB,KAAK44B,OAAOlQ,KAAK4mrB,WAAWC,QAAQ9roB,UACd,QAAlBzjE,KAAKq9vB,UAAwC,aAAlBr9vB,KAAKq9vB,WAChCr9vB,KAAK8/2B,mBAAmB,UACxB9/2B,KAAK6/2B,WAAY,GAErB7/2B,KAAKs5vB,mBAAmB,QACxB5msB,GAAY,CAAC9pC,GAAM,CAAC,cAAe,eACnC8pC,GAAY9pC,EAAI6E,iBAAiB,cAAe,CAAC,oBAAqB,iBAC/B,IAAnCztB,KAAK44B,OAAwB,iBAC7B54B,KAAK44B,OAAOlQ,KAAKskrB,YAAY5zB,eAEjCo6G,GAAW,CAAE10xB,MAAOssE,EAAKqnrB,QAASzwiB,OAAQ,QAAUhiN,KAAK44B,OAAQ54B,KAAKqqyB,gBAAiBrqyB,KAAKquyB,YAAaruyB,KAAK22c,cAAevrY,EAAKgjnB,YAC7HxlqB,EAAIi8qB,WAAa7ksB,KAAK44B,OAAOkqrB,wBAAwBhltB,OAAS,GAAwB,UAAlBkC,KAAKq9vB,WAC1Er9vB,KAAKq9vB,SAAW,MAEpB,IAAIijH,EAAW,CACX752B,KAAM,OAAQoiB,OAAQ7oB,KAAK44B,OAAOw5pB,iBAAiBhnnB,EAAKgjnB,YAAa38qB,KAAM25D,EAAKqnrB,QAChF92D,aAAcvwnB,EAAKqlW,cAAe7nZ,IAAKA,EAAKzG,OAAQipD,EAAKkvD,MAEzDt6H,KAAK44B,OAAO0wmB,WAAW3noB,KAAI,SAAUwrS,GAAM,OAA+B,IAAxBA,EAAGwogB,gBAA2B,IAAG73yB,QACnFkC,KAAK44B,OAAOlQ,KAAK4ld,UAErBtue,KAAK44B,OAAOwmc,QAAQn4d,GAAuBq52B,EAC/C,EACAj/H,EAAK9ivB,UAAUkg3B,YAAc,YACpBz+2B,KAAK44B,OAAOlQ,KAAKs4qB,QAAUhhsB,KAAK6/2B,WAA+B,QAAlB7/2B,KAAKq9vB,UAAwD,SAAlCr9vB,KAAK44B,OAAOg0qB,aAAa/grB,OAC7F7rB,KAAK44B,OAAOg0qB,aAAa0rB,iBAM1Bt4tB,KAAKs5vB,mBAAmB,SALxBt5vB,KAAK8/2B,mBAAmB,UACxB9/2B,KAAK6/2B,WAAY,EACjB7/2B,KAAKq9vB,SAAW,MAM5B,EACAhc,EAAK9ivB,UAAU8ruB,WAAa,SAAUj/pB,EAAMy5nB,GACxC7ksB,KAAK44B,OAAOlQ,KAAK4mrB,WAAW+6B,WAAWxlC,EAAUz5nB,EAAKgjnB,WAAYhjnB,EAAKqnrB,QAAQrnrB,EAAKgjnB,aACpFpurB,KAAK44B,OAAOlQ,KAAKu1qB,gBAAgBh9rB,SAAS4jsB,EAASlksB,WAAY,KAAK8Q,KAAO25D,EAAKqnrB,OACpF,EACApR,EAAK9ivB,UAAU24qB,WAAa,SAAUl9I,EAASo0J,GAC3ColG,GAAWx5P,EAASh6hB,KAAK44B,OAAQ54B,KAAKqqyB,gBAAiBrqyB,KAAKquyB,YAAaruyB,KAAK22c,cAAey3O,EAAYpurB,KAAKsuyB,cAC9GtuyB,KAAK44B,OAAOm/uB,WAAa,GAGzB,IAFA,IAAItmwB,EAAOzR,KAAK44B,OAAOlQ,KAAKg6jB,sBAAsByxD,GAC9Cn0oB,KAAK44B,OAAOlQ,KAAKg6jB,WAAWA,WAAWl9C,KAAOxliB,KAAK44B,OAAOlQ,KAAKg6jB,WAC1DvllB,EAAI,EAAGA,EAAIsU,EAAK3T,OAAQX,IAAK,CAClCsU,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAKgsB,MAAQxvB,EACzC,IAAIyB,EAAMoB,KAAK44B,OAAOlQ,KAAK6yqB,0BAA0B,GACjDvhK,EAAQl7hB,MAAM,GAAKF,KAAS6S,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAK,GAAK/B,IAC3C,QAAnBo7hB,EAAQh4U,SACRvwM,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAKswE,MAAQjxE,KAAKu+2B,mBAAmBttyB,MACjEx/D,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAK8rwB,SAAWzswB,KAAKu+2B,mBAAmB9xG,SACpEh7vB,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAKq0W,SAAWh1W,KAAKu+2B,mBAAmBvpgB,SAC/DhkM,GAAkBhxK,KAAKu+2B,mBAAmB3jG,cAC3CnpwB,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAKi6wB,WAAa56wB,KAAKu+2B,mBAAmB3jG,WACtEnpwB,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAK0ryB,eAAiBrsyB,KAAKu+2B,mBAAmBlyE,gBAE9E56xB,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAKy8wB,aAAep9wB,KAAKu+2B,mBAAmBnhG,cAGhFzpf,GAAS,sBAAwBliR,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAKq0W,SAAW,SAAU73W,EAAG6C,KAAK44B,QAC/F,IAAI46mB,EAAUxzoB,KAAK44B,OAAO8pjB,WAAW8wD,SAChC84H,GAAatswB,KAAK44B,SAAW46mB,aAAmBrB,KACjDx+W,GAAS,sBAAwBliR,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAKq0W,SAAUvjW,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAMX,KAAK44B,QAElHnnB,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAAKswE,OAClCjxE,KAAK44B,OAAOm/uB,WAAWp6wB,KAAK8T,EAAKxQ,SAAS9D,EAAEwD,WAAY,KAEhE,CACKX,KAAK44B,OAAO+0pB,yBACU,QAAnB3zJ,EAAQh4U,QAAmD,MAA/BhiN,KAAKs+2B,yBACjCt+2B,KAAK44B,OAAOqpc,cAAc,CAAE2qO,aAAc,CAAE0K,eAAgBt3sB,KAAKs+2B,0BAA4B,GAC7Ft+2B,KAAKs+2B,uBAAyB,KAG1C,EACAj9H,EAAK9ivB,UAAUkiF,YAAc,SAAUhvE,EAAM2vH,EAAMsnM,GAC/C,IAAK,IAAI3iU,EAAI,EAAGA,EAAI/F,KAAK44B,OAAO67qB,cAAc32sB,OAAQiI,IAAK,CACvD,IAAIw62B,EAAQ73iB,EAAQznU,SAAS8E,EAAEpF,WAAY,KAC3C,IAAKqwK,GAAkBuvsB,GAAQ,CAC3B,IAAI5z1B,EAAQohM,GAAS,sBAAwBwypB,EAAMvrgB,SAAW,SAAUh1W,KAAK44B,QAE7E,GADA2n1B,EAAM5z1B,MAAQA,GACTqkJ,GAAkBuvsB,EAAM3lG,YAAa,CACtC,IAAIuoD,EAAcp1mB,GAAS,sBAAwBwypB,EAAM3lG,WAAW5la,SAAW,SAAUh1W,KAAK44B,QAC9F2n1B,EAAM3lG,WAAWjuvB,MAAQw2yB,CAC7B,CACJ,CACJ,CACA,IAAI16yB,GAAS,EACT+31B,EAAexg3B,KAAK44B,OAAOywwB,gBAC/B,GAAIrpyB,KAAK44B,OAAOg1rB,mBAAqB,EAEjC,IADA,IAAI9ylB,EAAQsG,EAAK,GAAG3zG,iBAAiB,cAC5BvuB,EAAI,EAAGA,EAAI47H,EAAMh9H,OAAQoB,IAC9B,GAAI47H,EAAM75H,SAAS/B,EAAEyB,WAAY,KAAKwD,UAAUC,SAAS,yBAA0B,CAC/Eo82B,EAAeth3B,EACf,KACJ,CAGR,IAAK,IAAIqL,EAAI,EAAGA,EAAIvK,KAAK44B,OAAOouG,UAAUlpI,OAAQyM,IAAK,CAC9C62H,EAAKngI,SAASsJ,EAAE5J,WAAY,KAAKwD,UAAUC,SAAS,gBACrDqkB,IAEJ,IAAIg41B,EAAQ/3iB,EAAQznU,SAASwnB,EAAM9nB,WAAY,KAC/C,IAAKqwK,GAAkByvsB,GAAQ,CACvB9z1B,EAAQ8z1B,EAAM9z1B,MAAlB,IACIskD,EAAQwvyB,EAAMxvyB,MACdroD,EAAMw4G,EAAKngI,SAASsJ,EAAE5J,WAAY,KACjCqwK,GAAkByvsB,EAAM7lG,cACzBjuvB,EAAQohM,GAAS,sBAAwB0ypB,EAAM7lG,WAAW5la,SAAW,SAAUh1W,KAAK44B,SAExF,IAAImxwB,EAAWnhxB,EAAIkyG,MAAM75H,SAASu/2B,EAAa7/2B,WAAY,KAC3D,IAAKqwK,GAAkB+4nB,GAAW,CAC9B,IAAS7qyB,EAAI,EAAGA,EAAI6qyB,EAAS5lyB,UAAUrG,OAAQoB,IAAK,CAChD,IAAIJ,EAAQiryB,EAAS5lyB,UAAUlD,SAAS/B,EAAEyB,WAAY,KAGlDyb,EAAStd,EAAM6E,MAFN,mBAGTguW,EAAU7yW,EAAM6E,MAFN,yBAGA,MAAVyY,GACAs2C,GAAY,CAACq3uB,GAAWjryB,GAEb,MAAX6yW,GACAj/S,GAAY,CAACq3uB,GAAWjryB,EAEhC,CACKsiI,EAAKngI,SAASsJ,EAAE5J,WAAY,KAAKwD,UAAUC,SAAS,eAIrDquD,GAAS,CAACs3uB,GAAW,uBAAyBp9wB,EAAQ,QAAUskD,GAHhExe,GAAS,CAACs3uB,GAAW,iBAAmBp9wB,EAAQ,QAAUskD,EAKlE,CACJ,CACJ,CACJ,EACAowqB,EAAK9ivB,UAAU6kyB,SAAW,WACtB,IAAIhuxB,EACAuX,EAAQ3sB,KAAKquyB,YACb3le,EAAU1oU,KAAK44B,OAAOlQ,KAAKo6rB,wBACO,UAAlC9itB,KAAK44B,OAAOg0qB,aAAa/grB,OACzBc,EAAQ3sB,KAAKw+2B,gBAAgB5B,iBAC7B582B,KAAK22c,cAAgB32c,KAAKw+2B,gBAAgB3B,oBACtC782B,KAAK44B,OAAOy+qB,kBAAkBr3sB,KAAK2qoB,cAAc7soB,OAAS,GACvDkC,KAAK44B,OAAOy+qB,kBAAkBr3sB,KAAK0qoB,gBAAgB5soB,UACtD4qU,EAAU1oU,KAAKw+2B,gBAAgB7B,oBAGvC,IAAIv7uB,EAAOphI,KAAK44B,OAAOlQ,KAAK+rrB,cACxBisK,EAAiBt/uB,EAAKtjI,QAAUsjI,EAAK,GAAGhxH,aAAa,iBAAmB,EACxEuw2B,EAAgBv/uB,EAAKtjI,QAAUsjI,EAAKA,EAAKtjI,OAAS,GAAGsS,aAAa,iBAAmB,EACrFww2B,EAAc5g3B,KAAK22c,eAAiB+pa,GAAkB1g3B,KAAK22c,eAAiBgqa,EAC5EE,EAAmB7g3B,KAAK44B,OAAO48nB,sBAAwBx1pB,KAAKquyB,aAAe,GAA+B,OAA1BruyB,KAAKk+2B,iBACzF,GAAsC,WAAlCl+2B,KAAK44B,OAAOg0qB,aAAa/grB,KAAmB,CAC5C,GAAgD,UAA5C7rB,KAAK44B,OAAOg0qB,aAAa0K,eACzBlisB,EAAW,cAEV,IAAiD,UAA5CpV,KAAK44B,OAAOg0qB,aAAa0K,gBAA0E,UAA5Ct3sB,KAAK44B,OAAOg0qB,aAAa0K,kBAClFt3sB,KAAK22c,eAAiB,GAAKkqa,IAAqBD,EAAa,CAEjE,GADAxr2B,EAAW,SACN47J,GAAkB03J,EAAQznU,SAAS0rB,EAAMhsB,WAAY,OACtD+nU,EAAQznU,SAAS0rB,EAAMhsB,WAAY,KAAK8tX,SACxC,GAAsC,UAAlCzuX,KAAK44B,OAAOg0qB,aAAa/grB,OAAqB7rB,KAAK44B,OAAOy+qB,kBAAkBr3sB,KAAK2qoB,cAAc7soB,OAAS,GACrGkC,KAAK44B,OAAOy+qB,kBAAkBr3sB,KAAK0qoB,gBAAgB5soB,SAEtD,GADA6uB,GAAS04wB,GAAoB38d,EAAQznU,SAAS0rB,EAAMhsB,WAAY,MAAM7C,OACtB,UAA5CkC,KAAK44B,OAAOg0qB,aAAa0K,eAEzB3qrB,GADsB3sB,KAAKw+2B,gBAAgB1B,0BAIzC982B,KAAK44B,OAAO48nB,uBAClB7ooB,GAAS04wB,GAAoB38d,EAAQznU,SAAS0rB,EAAMhsB,WAAY,MAAM7C,OAGlF,CACA,IAAKkC,KAAK22c,eAAiB,GAAKkqa,IAAqBD,IAC7Cj01B,GAAsD,UAA5C3sB,KAAK44B,OAAOg0qB,aAAa0K,gBACY,UAA5Ct3sB,KAAK44B,OAAOg0qB,aAAa0K,gBAA8B,CAC1D3qrB,GAASy0G,EAAKtjI,OAAS,IACvB6uB,EAAQy0G,EAAKtjI,OAAS,GAE1B,IAAIe,EAAI,OACJwg3B,EAAer/2B,KAAK44B,OAAOlQ,KAAKworB,cAAc,GAAKrysB,GAAG,GACtDsv0B,EAAkB54yB,SAAS0+P,cAC/B7yJ,EAAKz0G,EAAQ,GAAG,GAAKvX,GAAUgsH,EAAK,IACpCuyJ,GAAS,aAAchnQ,EAAQ,EAAG3sB,KAAKw+2B,iBACvC,IAAIxB,EAA6D,UAA5Ch92B,KAAK44B,OAAOg0qB,aAAa0K,eAA6B3qrB,EAAQA,EAAQ,EAK3F,GAJsC,UAAlC3sB,KAAK44B,OAAOg0qB,aAAa/grB,OACzB7rB,KAAK44B,OAAOlQ,KAAKworB,cAAc,GAAKrysB,GAAGoF,OAAO,EAAG,GACjDjE,KAAK44B,OAAOlQ,KAAKworB,cAAc,GAAKrysB,GAAGoF,OAAO+42B,EAAgB,EAAGqC,IAE/B,QAAlCr/2B,KAAK44B,OAAOg0qB,aAAa/grB,MAAoD,SAAlC7rB,KAAK44B,OAAOg0qB,aAAa/grB,KAAiB,CAErF,IADA,IAAIw5G,EAASrlI,KAAK44B,OAAOlQ,KAAKykrB,kBAAkB1/qB,iBAAiB,gBACxDtwB,EAAI,EAAGA,EAAIkoI,EAAOvnI,OAAQX,IAC/BkoI,EAAOpkI,SAAS9D,EAAEwD,WAAY,KAAKkG,SAEvC8sR,GAAS,aAAc,GAAI3zR,KAAK44B,OAAOlQ,KAAK4mrB,WAAWC,QAC3D,CACIsxK,IACA7g3B,KAAKk+2B,iBAAmB,QAEvBl+2B,KAAK44B,OAAO48nB,sBAAwBx1pB,KAAK44B,OAAO48nB,uBAAyBp4pB,OAAOC,KAAK2C,KAAK44B,OAAOlQ,KAAKworB,cAA4B,cAAGpzsB,SACtIqw0B,EAAgBv/jB,QAEhB5uQ,KAAK44B,OAAO48nB,uBAAyBp4pB,OAAOC,KAAK2C,KAAK44B,OAAOlQ,KAAKworB,cAA4B,cAAGpzsB,QACjGkC,KAAK44B,OAAOlQ,KAAKworB,cAAkC,oBAE3D,CACJ,CACA,GAAsC,UAAlClxsB,KAAK44B,OAAOg0qB,aAAa/grB,OAAqBmlJ,GAAkBhxK,KAAKquyB,eAAsC,IAAtBruyB,KAAKquyB,aAAsBruyB,KAAyB,qBAAMA,KAAKo+2B,wBAAyB,CAC7Kzx1B,EAAQ3sB,KAAKw+2B,gBAAgB5B,iBAC7B582B,KAAK22c,cAAgB32c,KAAKw+2B,gBAAgB3B,mBAC1C,IAAIV,EAAoBn82B,KAAK44B,OAAOy+qB,kBAAgC,aAChEypK,OAAmB,EACvB,GAAI3E,EAAkBr+2B,OAClB,IAASX,EAAI,EAAGA,EAAIg/2B,EAAkBr+2B,OAAQX,IACtC6zK,GAAkBmrsB,EAAkBl72B,SAAS9D,EAAEwD,WAAY,KAAKq0W,YAChE8rgB,EAAmB3E,EAAkBl72B,SAAS9D,EAAEwD,WAAY,MAIxE,IAAIyqE,EAAO,CACP42I,OAAQ,MACRvwM,KAAMqv2B,EACNn01B,MAAOA,EACPo01B,WAAY,GAEhB/g3B,KAAKgh3B,aAAa51yB,GAClBprE,KAAKw+2B,gBAAmC,kBAAE7g3B,KAAKqC,KAAKw+2B,gBAA8B,cAClFx+2B,KAAKw+2B,gBAAmC,kBAAE7g3B,KAAKytE,EAAW,KAC9D,CACJ,EAmBAi2qB,EAAK9ivB,UAAU4kyB,UAAY,SAAU/3tB,GACjC,GAAyB,YAArBA,EAAKyhM,aAA6B7sQ,KAAK6/2B,UACvCz0yB,EAAK01Q,QAAS,OAGlB,GAAsC,SAAlC9gV,KAAK44B,OAAOg0qB,aAAa/grB,MAAwC,cAArBu/C,EAAKyhM,YAArD,CAIA,GAAI7sQ,KAAKi/2B,oBAAsBj/2B,KAAKi/2B,kBAAkB962B,UAAUC,SAAS,qBACrEpE,KAAKi/2B,kBAAkB962B,UAAUC,SAAS,uBAAyBpE,KAAKi/2B,kBAAkB962B,UAAUC,SAAS,YAG7G,OAFAgnE,EAAK01Q,QAAS,OACd9gV,KAAKi/2B,kBAAoB,MAG7B,GAAyB,WAArB7zyB,EAAKyhM,YAA0B,CAC/B,IAAI+5c,EAASx7oB,EAAK35D,KAClB,GAAIu/J,GAAkB5lG,EAAK35D,KAAK,GAAGujW,UAU/B,IATA,IAAIisgB,EAAgBjh3B,KAAK44B,OAAO2iqB,0BAC5Bx4O,EAAU,SAAU5ld,GACpBq8Z,EAAO5gY,OAAOs5uB,SAAS10wB,QAAO,SAAUN,GAChCA,EAAE,GAAK+j3B,EAAc,MAAQ71yB,EAAK35D,KAAKxQ,SAAS9D,EAAEwD,WAAY,KAAKsg3B,EAAc,MACjFr6J,EAAO3ltB,SAAS9D,EAAEwD,WAAY,KAAOzD,EAE7C,GACJ,EACIs8Z,EAASx5Z,KACJ7C,EAAI,EAAGA,EAAIyptB,EAAO9otB,OAAQX,IAC/B4ld,EAAQ5ld,GAGhB,IAASA,EAAI,EAAGA,EAAIyptB,EAAO9otB,OAAQX,IAAK,CACpC6C,KAAK692B,eAAej3J,EAAO3ltB,SAAS9D,EAAEwD,WAAY,KAAKq0W,UAEvD,IADA,IAAIotS,EAASijJ,GAAoBz+E,EAAO3ltB,SAAS9D,EAAEwD,WAAY,MACtDrB,EAAI,EAAGA,EAAI8ipB,EAAOtkpB,OAAQwB,IAC/BU,KAAK692B,eAAez7N,EAAOnhpB,SAAS3B,EAAEqB,WAAY,KAAKq0W,UAE3D5pS,EAAK35D,KAAO25D,EAAK35D,KAAKtK,OAAOi7oB,EACjC,CACJ,CACA,GAAyB,QAArBh3kB,EAAKyhM,aAA0B7sQ,KAAKm+2B,qBAAuBn+2B,KAAK44B,OAAO48nB,sBAAwBx1pB,KAAK44B,OAAO+0pB,yBAA2B,CAKtI,KAJ6C,IAAvC3trB,KAAK44B,OAAOlQ,KAAK8rsB,kBAA2Bx0tB,KAAKm+2B,oBAChD/yyB,EAAKz+C,QAAU3sB,KAAK44B,OAAOlQ,KAAK8rsB,mBAAmC,IAAfpppB,EAAKz+C,QAC5D3sB,KAAK22c,cAAgB32c,KAAK44B,OAAOlQ,KAAK8rsB,kBAEtCx0tB,KAAK44B,OAAO48nB,qBAAsB,CAClC,IAAItyc,EAAW,yBAA2BljN,KAAK22c,cAAgB,KAC3D/tb,OAAM,EACN5oB,KAAK22c,eAAiB,GAAiD,QAA5C32c,KAAK44B,OAAOg0qB,aAAa0K,gBACR,WAA5Ct3sB,KAAK44B,OAAOg0qB,aAAa0K,gBACzBt3sB,KAAKk+2B,iBAAmBl+2B,KAAK22c,cAAch2c,WAC3CioB,EAAM5oB,KAAK44B,OAAOw0qB,aAAaj4rB,cAAc+tM,GAC7CljN,KAAKquyB,YAAczlxB,EAAMA,EAAIi8qB,SAAW,GAGpC7ksB,KAAKk+2B,kBAA8C,OAA1Bl+2B,KAAKk+2B,kBAC9Bh7pB,EAAW,yBAA2BljN,KAAKk+2B,iBAAmB,KAC9Dt11B,EAAM5oB,KAAK44B,OAAOw0qB,aAAaj4rB,cAAc+tM,GAC7CljN,KAAKquyB,YAAczlxB,EAAMA,EAAIi8qB,SAAW,GAGxC7ksB,KAAKquyB,YAAc,CAG/B,MAEQruyB,KAAKm+2B,qBAAuBn+2B,KAAK44B,OAAO48nB,sBAAwBx1pB,KAAK44B,OAAO+0pB,yBACzD,IAAfvinB,EAAKz+C,MACL3sB,KAAKquyB,YAAcjjuB,EAAKz+C,MAGxB3sB,KAAKquyB,YAAcruyB,KAAK44B,OAAOlQ,KAAK8rsB,iBAIxCx0tB,KAAKquyB,YAAcruyB,KAAK44B,OAAOlQ,KAAK8rsB,kBAAoB,EAAIx0tB,KAAK44B,OAAOlQ,KAAK8rsB,iBAAmB,GAGnGx0tB,KAAKm+2B,oBAAuBn+2B,KAAKo+2B,0BAAkE,IAAvCp+2B,KAAK44B,OAAOlQ,KAAK8rsB,oBAC7Ex0tB,KAAK44B,OAAO48nB,sBAAwBx1pB,KAAK44B,OAAO+0pB,0BACjD3trB,KAAKsuyB,aAAetuyB,KAAK44B,OAAOs5uB,SAASlywB,KAAK44B,OAAOlQ,KAAK8rsB,kBACtDx0tB,KAAK44B,OAAO48nB,sBAAwBx1pB,KAAKo+2B,0BACzCp+2B,KAAKsuyB,aAAetuyB,KAAK44B,OAAOkqrB,wBAAwB9itB,KAAKquyB,eAIjEruyB,KAAKsuyB,aAAetuyB,KAAK44B,OAAOylsB,qBAAqB,EAE7D,CACIr+tB,KAAKm+2B,oBAAqC,IAAf/yyB,EAAKz+C,QAChC3sB,KAAKsuyB,aAAetuyB,KAAK44B,OAAOs5uB,SAAS9msB,EAAKz+C,OAC9C3sB,KAAKquyB,YAAcjjuB,EAAKz+C,OAEoB,UAA5C3sB,KAAK44B,OAAOg0qB,aAAa0K,gBACxBtmiB,GAAkBhxK,KAAK44B,OAAOylsB,qBAAqB,MACpDr+tB,KAAKsuyB,aAAetuyB,KAAK44B,OAAOylsB,qBAAqB,IAErDrtjB,GAAkBhxK,KAAKsuyB,eAAiBtuyB,KAAK44B,OAAOkqrB,wBAAwBhltB,OAASkC,KAAKquyB,aACrE,SAArBjjuB,EAAKyhM,aAAsE,IAA5C7sQ,KAAK44B,OAAOylsB,qBAAqBvguB,SAChEkC,KAAKsuyB,aAAetuyB,KAAK44B,OAAOkqrB,wBAAwB9itB,KAAKquyB,cAEjEruyB,KAAKm+2B,oBAAqB,EAC1B/yyB,EAAOprE,KAAKgh3B,aAAa51yB,EA9FzB,MAFIA,EAAK01Q,QAAS,CAyGtB,EACAuga,EAAK9ivB,UAAUug3B,wBAA0B,WACD,OAAhC9+2B,KAAKs+2B,yBACLt+2B,KAAKs+2B,uBAAyBt+2B,KAAK44B,OAAOg0qB,aAAa0K,eAE/D,EACA+pC,EAAK9ivB,UAAUyi3B,aAAe,SAAU51yB,GACpC,IAAItsE,EAAQssE,EAAK35D,KACjB,GAAoB,QAAhB25D,EAAK42I,OAAkB,CACvB,IAAIpjN,EAAMoB,KAAK44B,OAAOlQ,KAAK6yqB,0BAA0B,GACjDnmrB,EAAW,KACftW,EAAM2twB,SAAWz7lB,GAAkBlyK,EAAM2twB,UAAY/qwB,GAAO,CAAC,EAAG0pE,EAAK35D,MAAQ3S,EAAM2twB,SACnF,IAAIxpG,OAAc,EAEdA,EADAjjqB,KAAK44B,OAAO48nB,sBAAuC,IAAfpqlB,EAAKz+C,MAC3B3sB,KAAK44B,OAAOs5uB,SAEa,UAAlClywB,KAAK44B,OAAOg0qB,aAAa/grB,MAAoB7rB,KAAyB,qBAAMgxK,GAAkBhxK,KAAKquyB,aAC1FruyB,KAAKw+2B,gBAA8B,aAGnCx+2B,KAAK44B,OAAOlQ,KAAKo6rB,wBAE/B9itB,KAAK44B,OAAO48nB,sBAAuC,IAAfpqlB,EAAKz+C,QACzC3sB,KAAKquyB,YAAcruyB,KAAK44B,OAAOs5uB,SAASxtwB,QAAQ1E,KAAKsuyB,cACrDtuyB,KAAK22c,cAAgB32c,KAAKquyB,aAE9B,IAAI1hxB,EAAQ3sB,KAAKquyB,YACjBvvyB,EAAMk2W,SAAWwxT,GAAOxmqB,KAAK44B,OAAO6gC,QAAQ3jD,GAAK,UACjD69Q,GAAS,sBAAwB70R,EAAMk2W,SAAUl2W,EAAOkB,KAAK44B,QAC7D,IAAIq4C,EAAQ,EACRuxtB,OAAY,EACZ6J,OAAiB,EACjBzxB,OAAa,EACb7B,OAAkB,EAClB8nG,EAAmB7g3B,KAAK44B,OAAO48nB,sBAAwBx1pB,KAAKquyB,aAAe,GAA+B,OAA1BruyB,KAAKk+2B,iBACrF98uB,EAAOphI,KAAK44B,OAAOouG,UACnB05uB,EAAiBt/uB,EAAKtjI,OAASmlqB,EAAYv+pB,QAAQu+pB,EAAY,IAAM,EACrE09M,EAAgBv/uB,EAAKtjI,QAAUsjI,EAAKA,EAAKtjI,OAAS,GAAGsS,aAAa,iBAAmB,EACrFww2B,KAAc5g3B,KAAK44B,OAAO48nB,sBAAuC,IAAfpqlB,EAAKz+C,QACvD3sB,KAAK22c,eAAiB+pa,GAAkB1g3B,KAAK22c,eAAiBgqa,EASlE,GARI19M,EAAYnlqB,SACZ0kyB,EAAYv/H,EAAYjjqB,KAAKquyB,aAAaruyB,KAAK44B,OAAO4pwB,WACtDzpB,EAAkB91G,EAAYjjqB,KAAKquyB,aAAaruyB,KAAK44B,OAAOmgvB,iBACxD91G,EAAYjjqB,KAAKquyB,aAAazzB,aAC9ByxB,EAAiBppI,EAAYjjqB,KAAKquyB,aAAazzB,WAAW5la,UAE9D4la,EAAa33G,EAAYjjqB,KAAKquyB,aAAazzB,YAEC,QAA5C56wB,KAAK44B,OAAOg0qB,aAAa0K,gBAA4Br0C,EAAYnlqB,OAAQ,CAEzE,GADAmzE,EAAQgylB,EAAYjjqB,KAAKquyB,aAAap9tB,MACU,UAA5CjxE,KAAK44B,OAAOg0qB,aAAa0K,eACzBlisB,EAAW,SACXuX,EAAQs2oB,EAAYjjqB,KAAKquyB,aAAa1hxB,WAErC,GAAgD,UAA5C3sB,KAAK44B,OAAOg0qB,aAAa0K,eAA4B,CAC1DlisB,EAAW,QACX,IAAIio2B,EAAmBh4E,GAAoBpiI,EAAYjjqB,KAAKquyB,cAAcvwyB,OACtEi/2B,EAAmB95M,EAAYjjqB,KAAKquyB,aAAa1hxB,MACrDA,EAAS0w1B,EAAmB,EAAMN,EAAmBM,EAAqBN,CAC9E,MACK,GAAgD,UAA5C/82B,KAAK44B,OAAOg0qB,aAAa0K,eAA4B,CAC1DlisB,EAAW,SACNpV,KAAK22c,eAAiB,GAAKkqa,IAAqBD,IACjD9h3B,EAAM87wB,WAAal5wB,GAAO,CAAC,EAAGuhqB,EAAYjjqB,KAAKquyB,cAC/CvvyB,EAAMutyB,eAAiBvtyB,EAAM87wB,WAAW5la,gBACjCl2W,EAAM87wB,WAAWwC,oBACjBt+wB,EAAM87wB,WAAW56wB,KAAK44B,OAAO6pwB,eAExC,IAAIy+E,EAAoB77E,GAAoBpiI,EAAYjjqB,KAAKquyB,cAAcvwyB,OACvEqj3B,EAAoBl+M,EAAYjjqB,KAAKquyB,aAAa1hxB,MAClD3sB,KAAK22c,eAAiB,IACtB73c,EAAMmyE,MAAQA,EAAQ,GAE1BtkD,EAASu01B,EAAoB,EAAMC,EAAoBD,EAAsBC,EACzEnh3B,KAAKqqyB,kBACArqyB,KAAK44B,OAAOw0wB,cAAyD,IAA1CptyB,KAAK44B,OAAO02qB,WAAW34P,cAInD73c,EAAM2twB,SAASzswB,KAAK44B,OAAOmgvB,iBAAmBj6wB,EAAMkB,KAAK44B,OAAOmgvB,iBAAmBypB,EAHnF1jyB,EAAM2twB,SAASzswB,KAAK44B,OAAOmgvB,iBAAmBj6wB,EAAMkB,KAAK44B,OAAOmgvB,iBAAmB,KAKlF/nmB,GAAkBlyK,EAAM87wB,aACzBq0B,GAAgBrwyB,EAAKE,EAAM87wB,WAAY,MAAO56wB,KAAK44B,OAAQ54B,KAAKqqyB,gBAAiBvryB,GAG7F,CAmBA,GAlBgD,UAA5CkB,KAAK44B,OAAOg0qB,aAAa0K,gBAA0E,UAA5Ct3sB,KAAK44B,OAAOg0qB,aAAa0K,kBAC3Et3sB,KAAK22c,eAAiB,GAAKkqa,IAAqB5vyB,GAAS2vyB,IAC1D9h3B,EAAMutyB,eAAiBA,EACvBvtyB,EAAM87wB,WAAal5wB,GAAO,CAAC,EAAGk5wB,UACvB97wB,EAAM87wB,WAAWwC,oBACjBt+wB,EAAM87wB,WAAW56wB,KAAK44B,OAAO6pwB,eAExC3jyB,EAAMmyE,MAAQA,EACVjxE,KAAKqqyB,kBACLvryB,EAAM2twB,SAASzswB,KAAK44B,OAAOmgvB,iBAAmBj6wB,EAAMkB,KAAK44B,OAAOmgvB,iBAAmBA,EAC9E/nmB,GAAkBlyK,EAAM87wB,aACzBq0B,GAAgBrwyB,EAAKE,EAAM87wB,WAAY,MAAO56wB,KAAK44B,OAAQ54B,KAAKqqyB,gBAAiBvryB,KAI7E,MAAZsW,IAAqBpV,KAAK22c,eAAiB,GAAKkqa,IAAqBD,IACrEx1yB,EAAKz+C,MAAqB,WAAbvX,EAAwBuX,EAAQA,EAAQ,GAET,WAA5C3sB,KAAK44B,OAAOg0qB,aAAa0K,eAA6B,CACtD,IAAI50H,EAAc1ilB,KAAK44B,OAAOlQ,KAAKg6jB,sBAAsByxD,GACrDn0oB,KAAK44B,OAAOlQ,KAAKg6jB,WAAWA,WAAWl9C,KAAOxliB,KAAK44B,OAAOlQ,KAAKg6jB,WACnEt3gB,EAAKz+C,MAAQ+1jB,EAAW5klB,MAC5B,CACJ,CACIkzK,GAAkBlyK,EAAMmyE,SACxBnyE,EAAMmyE,MAAQA,GAElBnyE,EAAM+9wB,iBAAkB,EACxB/9wB,EAAMs+wB,aAAe,GACrBt+wB,EAAM6tB,MAAQ,CAClB,CAMA,GALoB,QAAhBy+C,EAAK42I,SACLhiN,KAAKu+2B,mBAAqB,CAAEttyB,MAAOnyE,EAAMmyE,MAAO2psB,WAAY97wB,EAAM87wB,WAAY5la,SAAUl2W,EAAMk2W,SAC1Fy3Z,SAAU3twB,EAAM2twB,SAAU4/B,eAAgBr7nB,GAAkBlyK,EAAM87wB,iBAAc3tsB,EAAYnuE,EAAM87wB,WAAW5la,SAC7Gooa,aAAct+wB,EAAMs+wB,eAEH,WAArBhysB,EAAKyhM,YAEL,IADA,IAAIu0mB,EAAgBh2yB,EAAK35D,KAChBtU,EAAI,EAAGA,EAAIik3B,EAActj3B,OAAQX,IAAK,CAC3C,GAAIik3B,EAAcng3B,SAAS9D,EAAEwD,WAAY,KAAKi6wB,WAE1C,IAAK5pmB,GADD4pmB,EAAawqB,GAAcplyB,KAAK44B,OAAQwo1B,EAAcng3B,SAAS9D,EAAEwD,WAAY,KAAKi6wB,WAAW5la,YAC3D4la,EAAWiC,gBAAiB,CAC9D,IAAI54Z,EAAa22Z,EAAWwC,aAAa14wB,QAAQ082B,EAAcng3B,SAAS9D,EAAEwD,WAAY,MACtFi6wB,EAAWwC,aAAan5wB,OAAOggX,EAAY,EAC/C,CAER,CAEJ,OAAO74S,CACX,EAMAi2qB,EAAK9ivB,UAAUg0oB,UAAY,SAAU9goB,EAAMkb,EAAOvX,GAI9C,GAHIpV,KAAK44B,OAAOg0qB,aAAa0K,iBAAmBt3sB,KAAKs+2B,wBAA0D,OAAhCt+2B,KAAKs+2B,yBAChFt+2B,KAAKs+2B,uBAAyBt+2B,KAAK44B,OAAOg0qB,aAAa0K,gBAEtDt3sB,KAAKqqyB,iBAAoBr5nB,GAAkBv/J,KAASrU,OAAOoE,eAAezB,KAAK0R,EAAMzR,KAAK44B,OAAO6pwB,cAiB9FhxxB,GACIkb,GAAS,GACT3sB,KAAK22c,cAAgBhqb,EACrB3sB,KAAKquyB,YAAc1hxB,IAGnB3sB,KAAK22c,cAAgB32c,KAAK44B,OAAO47rB,iBACjCx0tB,KAAKquyB,YAAcruyB,KAAK44B,OAAO47rB,kBAE/Bp/sB,GACApV,KAAK44B,OAAOqpc,cAAc,CAAE2qO,aAAc,CAAE0K,eAAgBlisB,KAAc,GAE9EpV,KAAK44B,OAAOlQ,KAAK4mrB,WAAW/8D,UAAU9goB,EAAMkb,IAG5C3sB,KAAK44B,OAAOlQ,KAAK4mrB,WAAW/8D,UAAU9goB,EAAMkb,OAhCiE,CACjH,IAAIqx1B,EAAa,GACbqD,EAAmBrh3B,KAAK44B,OAAOg0qB,aAAa/grB,KAC5Cy11B,EAAuBth3B,KAAK44B,OAAOlQ,KAAKkkrB,aAAa/grB,KACzDmy1B,EAAWrg3B,KAAK8T,GAChBzR,KAAK44B,OAAOqpc,cAAc,CAAE2qO,aAAc,CAAE/grB,KAAM,WAAa,GAC/D7rB,KAAK44B,OAAOlQ,KAAKu5c,cAAc,CAAE2qO,aAAc,CAAE/grB,KAAM,WAAa,GAC/DmlJ,GAAkB57J,IACnBpV,KAAK44B,OAAOqpc,cAAc,CAAE2qO,aAAc,CAAE0K,eAAgBlisB,KAAc,GAE9E,IAAIuiwB,EAAiB,CAAEhtI,aAAcqzO,EAAYpzO,eAAgB,GAAIF,eAAgB,IACrF1qoB,KAAK44B,OAAOolE,OAAO/2F,GAAkB,CAAE0wwB,eAAgBA,EAAgBhrvB,MAAOA,IAC9E3sB,KAAK44B,OAAOqpc,cAAc,CAAE2qO,aAAc,CAAE/grB,KAAMw11B,KAAsB,GACxErh3B,KAAK44B,OAAOlQ,KAAKu5c,cAAc,CAAE2qO,aAAc,CAAE/grB,KAAMy11B,KAA0B,GACjFth3B,KAAK44B,OAAO01c,SAChB,CAoBJ,EAMA+yQ,EAAK9ivB,UAAU++vB,iBAAmB,WAC9B,OAAOt9vB,KAAK44B,OAAOlQ,KAAK4mrB,WAAWguD,kBACvC,EAKAjc,EAAK9ivB,UAAU64qB,YAAc,WACzBp3qB,KAAK44B,OAAOlQ,KAAK4mrB,WAAWl4B,aAChC,EACAiqE,EAAK9ivB,UAAUmg3B,aAAe,SAAUxh3B,GAC/B8zK,GAAkB9zK,EAAEkuE,KAAKyhM,cACY,WAAlC3vQ,EAAEkuE,KAAKyhM,YAAYlsQ,YAA6D,SAAlCzD,EAAEkuE,KAAKyhM,YAAYlsQ,aAC3B,UAAlCX,KAAK44B,OAAOg0qB,aAAa/grB,MAAsD,cAAlC3uB,EAAEkuE,KAAKyhM,YAAYlsQ,cACxEX,KAAKygF,YAAYzgF,KAAK44B,OAAOlQ,KAAKg6jB,WAAY1ilB,KAAK44B,OAAOouG,UAAWhnI,KAAK44B,OAAOkqrB,0BAC7E9itB,KAAK44B,OAAO0pqB,YAActisB,KAAK44B,OAAOg1rB,oBAAsB5ttB,KAAK44B,OAAOqirB,gBACpEj7sB,KAAK44B,OAAOlQ,KAAKg6jB,WAAW5klB,SAAWkC,KAAK44B,OAAO67qB,cAAc32sB,QACjEkC,KAAKygF,YAAYzgF,KAAK44B,OAAOlQ,KAAKg6jB,WAAY1ilB,KAAK44B,OAAO67qB,cAAez0sB,KAAK44B,OAAOkqrB,yBAIrG,EAMAu+B,EAAK9ivB,UAAU66vB,SAAW,SAAUv0D,EAAU5nd,GACJ,SAAlCj9O,KAAK44B,OAAOg0qB,aAAa/grB,MAAqD,UAAlC7rB,KAAK44B,OAAOg0qB,aAAa/grB,OAC/B,UAAlC7rB,KAAK44B,OAAOg0qB,aAAa/grB,OACzB7rB,KAAK6/2B,WAAY,EACjB7/2B,KAAK8/2B,mBAAmB,UAE5B9/2B,KAAK44B,OAAOlQ,KAAK4mrB,WAAW8pD,SAASv0D,EAAU5nd,GAEvD,EACOokgB,CACX,CAjhC0B,GCNtBkgI,IAA0B,WAC1B,SAASA,EAAS9oF,GAIdz4xB,KAAKswwB,YAAa,EAClBtwwB,KAAKwh3B,sBAAuB,EAC5Bxh3B,KAAK44B,OAAS6/vB,EACdz4xB,KAAKyh3B,wBACT,CAqkBA,OA/jBAF,EAAShj3B,UAAUkj3B,uBAAyB,WACxCzh3B,KAAK44B,OAAO+9uB,SAAS/pE,aAAa9mC,aAAe9lqB,KAAK44B,OAAOg0qB,aAAa9mC,aAC1E9lqB,KAAK44B,OAAO+9uB,SAAS/pE,aAAa0rB,iBAAmBt4tB,KAAK44B,OAAOg0qB,aAAa0rB,iBAC9Et4tB,KAAK44B,OAAO+9uB,SAAS/pE,aAAa/grB,KAAO,OACzC7rB,KAAK44B,OAAO+9uB,SAAS2sB,SAAWtjyB,KAAK0h3B,eAAen02B,KAAKvN,MACrDA,KAAK44B,OAAOg0qB,aAAa9mC,cACzB4pI,GAASx/T,OAAOmxQ,IAExB,EAOAkgI,EAAShj3B,UAAUmj3B,eAAiB,SAAUt2yB,GAC1C,IAAIw1I,EAAQ5gN,KACRyR,EAAO25D,EAAKqnrB,QACZx1gB,EAAQ7xK,EAAKgjnB,WACjBpurB,KAAK63xB,aAAe73xB,KAAK44B,OAAOw5pB,iBAAiBn1c,EAAOj9O,KAAK44B,OAAOgjvB,cACpE,IAAIC,EAAe77wB,KAAK44B,OAAOg0uB,WAC/B,GAAI5swB,KAAK44B,OAAOwrV,SACZh5S,EAAK01Q,QAAS,OAGlB,GAAsC,WAAlC9gV,KAAK44B,OAAOg0qB,aAAa/grB,KAA7B,CAIA,IAAIpa,EAAKorwB,iBAAoB78wB,KAAK44B,OAAO0ivB,wBAA2Br+hB,IAAU4+hB,EAAarzV,UAAcx3Q,GAAkBv/J,EAAe,YACjH,IAArBA,EAAe,WAAyC,SAAzBzR,KAAK44B,OAAOqjvB,WAAyBh/hB,IAAU4+hB,EAAalotB,UACxFspL,IAAU4+hB,EAAa1B,YAAcl9hB,IAAU4+hB,EAAal0S,UAAY1qP,IAAU4+hB,EAAal5kB,MAAkB,aAAVs6C,EAKzG,CACD,IAAI63jB,EAAoB,IAAIp/J,GACxBisO,EAAoB3h3B,KAAK44B,OAqB7B,OApBA54B,KAAK44B,OAAOwmc,QAAQ,WAAYh0Z,GAAM,SAAUi/D,GACxCA,EAAI+jjB,YAAcuzL,EAAkB/0G,WAAWjlS,UAAYt9V,EAAIoonB,QAAQoqB,kBACvExyoB,EAAIy2M,QAAS,GAEE,IAAfrvU,EAAKw/D,OAAyC,iBAA1B2vI,EAAMhoL,OAAOygvB,WACjChvoB,EAAIy2M,QAAS,GAEjBg0d,EAAkB15tB,QAAQivD,GACrBA,EAAIy2M,SACDz2M,EAAI+jjB,aAAexte,EAAMhoL,OAAOg0uB,WAAWkP,MAC3Cl7jB,EAAMghqB,gBAAgBv3uB,IAGtBu2E,EAAM0vjB,YAAa,EACd70S,GAAM76Q,EAAMhoL,OAAOs3rB,gBACpBtvgB,EAAMhoL,OAAOs3rB,cAAcoiF,uBAI3C,IACOwC,CACX,EA5BS73jB,IAAU4+hB,EAAa1B,aAAen6wB,KAAK44B,OAAO0ivB,uBAA0Br+hB,IAAU4+hB,EAAa1B,cACpG/usB,EAAK01Q,QAAS,EALtB,MAFI11Q,EAAK01Q,QAAS,CAmCtB,EAOAygiB,EAAShj3B,UAAUqj3B,gBAAkB,SAAUx2yB,GAC3C,IAAIywsB,EAAe77wB,KAAK44B,OAAOg0uB,WAC3Bn7vB,EAAO25D,EAAKqnrB,QACZx1gB,EAAQ7xK,EAAKgjnB,WACjB,GAAKnxc,IAAU4+hB,EAAaC,QAAU97wB,KAAK44B,OAAOqlxB,gBAAkB,CAChE7yuB,EAAK01Q,QAAS,EACd,IAAI+giB,EAAc7h3B,KAAK44B,OAAO02qB,WAAWihE,aAAauxG,kBAAkBng3B,KAAI,SAAUZ,GAAK,OAAOA,EAAE0F,IAAM,IACtGkmB,EAAQk11B,EAAYn92B,QAAQ,SAChC,IAAe,IAAXioB,EACA3sB,KAAK44B,OAAO02qB,WAAWihE,aAAa6oE,eAAe3n0B,EAAKk7vB,gBAAgB+N,aAC3DnlvB,SAAS4jC,eAAen5D,KAAK44B,OAAO6gC,QAAQ3jD,GAAK,QAAQmtd,cAAc,GAC7EvkB,aAAe/xb,CAE9B,CACIswN,IAAU4+hB,EAAaC,QAAyC,IAAhC97wB,KAAK44B,OAAOqlxB,kBAC5Cj+yB,KAAKswwB,YAAa,EAE1B,EACAixG,EAAShj3B,UAAUwj3B,cAAgB,SAAU32yB,EAAM6xK,GAC/C,IAAIxrO,EAAOs8M,GAAS,OAAQ3iJ,GACxB42yB,EAAcvw2B,EAAK,GAAKwrO,GACxBwzL,EAAgB1iN,GAAS,eAAgB3iJ,GAC7C,GAAKqwZ,GAAMumZ,KAAiBvmZ,GAAMhrD,KAAqBgrD,GAAMumZ,IAAgBvmZ,GAAMhrD,GAC/E,OAAO,EAEN,IAAKgrD,GAAMumZ,KAAiBvmZ,GAAMhrD,GAAgB,CACnD,GAAIuxc,aAAuBhq2B,KACvB,OAAOgq2B,EAAY3p2B,YAAc5G,EAAKg7vB,SAASxvhB,GAAO5kO,UAErD,GAAI4kO,IAAUj9O,KAAK44B,OAAOg0uB,WAAWgN,aACtC,OAAOooG,IAAgBvxc,EAEtB,GAAIuxc,IAAgBvw2B,EAAKg7vB,SAASxvhB,GACnC,OAAO,CAEf,CACA,OAAO,CACX,EASAskoB,EAAShj3B,UAAUm+yB,iBAAmB,SAAUtxuB,EAAM62yB,GAClD,IAAI1yyB,GAAU,EAId,GAHoB,kBAAhBnE,EAAW,MAAyBA,EAAmB,cAAKA,EAAW,KAAEA,EAAa,OAAE6xK,SACxF1tK,GAAU,GAEVvvE,KAAK44B,OAAOwjvB,gBAAkBp8wB,KAAK44B,OAA8B,sBAAE,SAC/D22C,EAAS,CACLvvE,KAAK44B,OAAOwjvB,eAA4B,aACxCp8wB,KAAK44B,OAAOwjvB,eAA4B,cAE5Cp8wB,KAAK44B,OAAOwjvB,eAAqC,uBACjD,IAAIp6jB,EAAS,CACbA,OAAmB,eACnBA,EAAqB,aAAI52I,EAAa,OAAE6xK,MACxCj7B,EAAwB,gBAAI,GAC5BhiN,KAAK44B,OAAOwjvB,eAAkC,kBAAEp8wB,KAAK44B,OAAOwjvB,eAAkC,kBAAEt+wB,OAAS,GAAKkkN,CAClH,CAEJ,IAAIn5L,EAASklM,GAAS,SAAU3iJ,GAC5B35D,EAAOs8M,GAAS,OAAQ3iJ,GACxB82yB,EAAa,CACjBA,OAAoB,eACpBA,EAAWzw2B,KAAOzR,KAAK44B,OAAO6jxB,kBAAkBhryB,EAAKujW,UACrD,IAAIy7D,EAAgB1iN,GAAS,eAAgB3iJ,GACzC42yB,EAAchi3B,KAAK44B,OAAOykvB,wBAA+CrsmB,GAAkBv/J,EAAKoX,EAAOo0N,SAC7E,KAAvBxrO,EAAKoX,EAAOo0N,QAAmBj9O,KAAK44B,OAAOg0uB,WAAWj5sB,WAAa9qC,EAAOo0N,OAC7Ej9O,KAAK44B,OAAOg0uB,WAAWtkV,YAAcz/Z,EAAOo0N,OAASj9O,KAAK44B,OAAOg0uB,WAAWpkV,UAAY3/Z,EAAOo0N,MAF7CxrO,EAAKoX,EAAOo0N,OAE2CwzL,EAExGgrD,GAAMhqd,GAgDPzR,KAAK44B,OAAO02qB,WAAW6yK,cAAc/2yB,IA/CrC35D,EAAKoX,EAAOo0N,OAASwzL,EACrByxc,EAAWzw2B,KAAKoX,EAAOo0N,OAASwzL,EAChCzwa,KAAK44B,OAAOs+yB,oBAAmB,GAC/Bl30B,KAAK44B,OAAOy2uB,eAAexmvB,EAAOo0N,MAAO+koB,EAAaE,EAAWzw2B,MAC7DoX,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAW/rwB,KACxCb,KAAKoi3B,eAAeF,GAEfr51B,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAWtkV,UAC7Ctob,KAAKqi3B,gBAAgBH,GAEhBr51B,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAWpkV,QAC7Cxob,KAAKsi3B,cAAcJ,GAEdr51B,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAWj5sB,SAC7C3zD,KAAKui3B,eAAeL,GAEfr51B,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAWgN,aAC7C55wB,KAAKwi3B,eAAeN,EAAYD,EAAWxw2B,GAEtCoX,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAWjlS,SAC7C3ne,KAAKyi3B,eAAeP,GAEfr51B,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAWG,mBAC1ClkvB,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAWE,gBAC3C9swB,KAAK0i3B,eAAeR,GAEfr51B,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAWuN,WAC7Cn6wB,KAAK2i3B,iBAAiBT,EAAYzxc,GAE7B5nZ,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAWkP,MAC7C97wB,KAAK4i3B,YAAYV,GAEZr51B,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAWjqkB,KAC7C3iM,KAAK6i3B,WAAWX,GAEM,aAAjBr51B,EAAOo0N,OAAyBw+O,GAAMz7d,KAAK44B,OAAOg0uB,WAAWjqkB,MAG7D95K,EAAOo0N,QAAUj9O,KAAK44B,OAAOg0uB,WAAWsP,OAC7Cl8wB,KAAK8i3B,eAAeZ,IAGpBli3B,KAAK44B,OAAOy2uB,eAAe,YAAcxmvB,EAAOo0N,MAAOiloB,EAAWzw2B,KAAKoX,EAAOo0N,OAAQiloB,EAAWzw2B,MACjGzR,KAAK44B,OAAO02qB,WAAWyzK,mBAAmBb,IAP1Cli3B,KAAKgj3B,WAAWd,EAAYD,IAapCji3B,KAAKswwB,YAAa,EACbt/lB,GAAkBhxK,KAAK44B,OAAO02qB,WAAW+gE,eAAewnB,gBACzD73xB,KAAK44B,OAAO02qB,WAAW+gE,eAAewnB,aAAe,MAEpDp8T,GAAMz7d,KAAK44B,OAAOs3rB,gBACnBlwtB,KAAK44B,OAAOs3rB,cAAcoiF,qBAElC,EAOAivE,EAAShj3B,UAAU6j3B,eAAiB,SAAUh3yB,GAC1CprE,KAAK44B,OAAOy2uB,eAAe,YAAcrvwB,KAAK44B,OAAOg0uB,WAAW/rwB,KAAMuqE,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAW/rwB,MAAOuqE,EAAK35D,MACnHzR,KAAK44B,OAAOy2uB,eAAe,WAAYjksB,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAW/rwB,MAAOuqE,EAAK35D,KAAKk7vB,iBAAiB,GAC1G3swB,KAAKij3B,mBAAmB73yB,EAC5B,EAOAm2yB,EAAShj3B,UAAUqk3B,YAAc,SAAUx3yB,GACvCprE,KAAK44B,OAAOy2uB,eAAe,YAAcrvwB,KAAK44B,OAAOg0uB,WAAWkP,MAAO1wsB,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAWkP,OAAQ1wsB,EAAK35D,MACrHzR,KAAK44B,OAAOy2uB,eAAe,QAASjksB,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAWkP,OAAQ1wsB,EAAK35D,KAAKk7vB,iBAAiB,GACxG3swB,KAAKij3B,mBAAmB73yB,EAC5B,EAOAm2yB,EAAShj3B,UAAUuk3B,eAAiB,SAAU13yB,GAC1CprE,KAAK44B,OAAOy2uB,eAAe,kBAAmBjksB,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAWsP,QAAS9wsB,EAAK35D,KAAKk7vB,iBAAiB,GACnH3swB,KAAK44B,OAAO02qB,WAAWyqI,wBAAwB3uwB,EAAK35D,MACpDzR,KAAKij3B,mBAAmB73yB,EAC5B,EAOAm2yB,EAAShj3B,UAAU8j3B,gBAAkB,SAAUj3yB,GAC3C,IAAI6jsB,EAAY7jsB,EAAK35D,KACjByx2B,EAAY93yB,EAAK35D,KAAKk7vB,gBACtBnif,EAAep/M,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAWtkV,WACpD99J,EAAeA,EAAe,IAAIxyQ,KAAKwyQ,EAAanyQ,WAAa,KAE7Dojd,GADJjxM,EAAexqR,KAAK44B,OAAOi0uB,qBAAqBS,eAAe9if,EAAcykf,EAAUtC,gBAAiBsC,EAAUtC,gBAAgBiB,cAEzHqB,EAAU4N,kBACX78wB,KAAK44B,OAAOy2uB,eAAe,YAAa,KAAM6zG,GAAW,GACzDlj3B,KAAK44B,OAAOy2uB,eAAe,WAAY,KAAM6zG,GAAW,GACxDlj3B,KAAK44B,OAAOy2uB,eAAe,eAAe,EAAO6zG,GAAW,IAM3DA,EAAU16b,UAAYizC,GAAMynZ,EAAUvvzB,WAC3C3zD,KAAK44B,OAAOy2uB,eAAe,YAAa,IAAIr3vB,KAAKwyQ,EAAanyQ,WAAY6q2B,GAAW,GACrFlj3B,KAAK44B,OAAOi0uB,qBAAqB2C,iBAAiBP,IAE7CxzS,GAAMynZ,EAAU16b,UAAYizC,GAAMynZ,EAAUvvzB,WACjD3zD,KAAK44B,OAAOy2uB,eAAe,YAAa,IAAIr3vB,KAAKwyQ,EAAanyQ,WAAY6q2B,GAAW,GAEzFlj3B,KAAK44B,OAAOy2uB,eAAe,cAAsC,IAAvB6zG,EAAUvvzB,SAA+BuvzB,GAAW,GAC9Flj3B,KAAK44B,OAAO02uB,cAAckM,gBAAgBpwsB,EAAK35D,MAC/CzR,KAAK44B,OAAO02uB,cAAcC,kBAAkBN,EAAW,aACvDjvwB,KAAK44B,OAAO02uB,cAAcC,kBAAkBN,EAAW,WACvDjvwB,KAAK44B,OAAO02uB,cAAcC,kBAAkBN,EAAW,YACvDjvwB,KAAKij3B,mBAAmB73yB,EAC5B,EACAm2yB,EAAShj3B,UAAU4k3B,4BAA8B,SAAU92G,GAGvD,IAFA,IAAImR,EAAgB,GAChBhob,EAAW62a,EAAU72a,SAChBr4V,EAAI,EAAGA,EAAIq4V,EAAS13V,OAAQX,IAAK,CACtC,IAAIqpT,EAAUgvC,EAASv0V,SAAS9D,EAAEwD,WAAY,KAC1C6nb,EAAUhiI,EAAQgiI,QACtBA,GAAYx3Q,GAAkBq7lB,EAAU7jV,UAAaA,EAAQnwa,UACzDg0vB,EAAU7jV,QAAQnwa,WAAalb,IAAMq4V,EAAS13V,OAAS,EAAI0qb,EAAU6jV,EAAU7jV,QACnFhiI,EAAQ7yP,SAAW3zD,KAAK44B,OAAO02uB,cAAcY,YAAY1pd,EAAQ8hI,UAAWE,EAAS6jV,EAAU+C,aAAc/C,EAAUc,eAAgBd,EAAUuB,aAC7Ip4a,EAAS13V,OAAS,GAAK0qb,EAAQnwa,UAAYmuS,EAAQ8hI,UAAUjwa,WAC1Dmwa,EAAQnwa,WAAag0vB,EAAU7jV,QAAQnwa,UAC1Cm9U,EAASr4V,EAAI,GAAGw2D,SAAW3zD,KAAK44B,OAAO02uB,cAAcY,YAAY16a,EAASr4V,EAAI,GAAGmrb,UAAW+jV,EAAU7jV,QAAS6jV,EAAU+C,aAAc/C,EAAUc,eAAgBd,EAAUuB,aAG/K4P,EAAc7/wB,KAAK6oT,EACvB,CACA,OAAOg3d,CACX,EAOA+jG,EAAShj3B,UAAU+j3B,cAAgB,SAAUl3yB,GACzC,IAAI83yB,EAAY93yB,EAAK35D,KAAKk7vB,gBACtBnif,EAAep/M,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAWpkV,SAEhDizC,GADJjxM,EAAeA,EAAe,IAAIxyQ,KAAKwyQ,EAAanyQ,WAAa,OAE7DrY,KAAK44B,OAAOy2uB,eAAe,UAAW7kf,EAAc04lB,GAAW,GAC/Dlj3B,KAAK44B,OAAOy2uB,eAAe,WAAY,KAAM6zG,GAAW,GACxDlj3B,KAAK44B,OAAOy2uB,eAAe,eAAe,EAAO6zG,GAAW,KAG3B,IAA5B14lB,EAAapxQ,YAAmD,QAA/BpZ,KAAK44B,OAAOk1uB,gBAC9C9twB,KAAK44B,OAAOi0uB,qBAAqBt5hB,QAAQvzO,KAAK44B,OAAOk1uB,eAAgBtjf,GAEzEA,EAAexqR,KAAK44B,OAAOi0uB,qBAAqB0B,aAAa/jf,EAAc04lB,GAC3Elj3B,KAAK44B,OAAOy2uB,eAAe,UAAW7kf,EAAc04lB,GAAW,IAC1DznZ,GAAMynZ,EAAU56b,YAAcmzC,GAAMynZ,EAAUvvzB,WACgD,IAA3F3zD,KAAK44B,OAAOi0uB,qBAAqBhlV,aAAaq7b,EAAU16b,QAAS06b,EAAU56b,aAC3Etob,KAAK44B,OAAOy2uB,eAAe,UAAW,IAAIr3vB,KAAKkr2B,EAAU56b,UAAUjwa,WAAY6q2B,GAAW,GAC1Flj3B,KAAK44B,OAAOi0uB,qBAAqBt5hB,QAAQvzO,KAAK44B,OAAOk1uB,eAAgBo1G,EAAU16b,WAG7EizC,GAAMynZ,EAAUvvzB,WAAa8na,GAAMynZ,EAAU56b,YACnDtob,KAAK44B,OAAOy2uB,eAAe,YAAarvwB,KAAK44B,OAAOi0uB,qBAAqBsC,aAAa+zG,EAAU16b,QAAS06b,EAAUvvzB,SAAUuvzB,EAAU9zG,aAAc8zG,GAAYA,GAAW,GAE3KlysB,GAAkBkysB,EAAU1thB,YAC7B0thB,EAAU1thB,SAAWx1V,KAAKmj3B,4BAA4BD,KAEV,IAA5Clj3B,KAAKoj3B,uBAAuBF,GAC5Blj3B,KAAK44B,OAAOi0uB,qBAAqB6C,kBAAkBtksB,EAAK35D,MAGxDzR,KAAK44B,OAAO02qB,WAAW+zK,eAAej4yB,GAE1CprE,KAAK44B,OAAOy2uB,eAAe,cAAuC,IAAvB6zG,EAAUvvzB,SAAgCuvzB,GAAW,GAC5FA,EAAUt1G,aACV5twB,KAAK44B,OAAOy2uB,eAAe,YAAarvwB,KAAK44B,OAAOi0uB,qBAAqBS,eAAe41G,EAAU56b,UAAW46b,GAAYA,GAAW,KAGvIlysB,GAAkB5lG,EAAK35D,KAAKk7vB,gBAAgBn3a,WAAapqR,EAAK35D,KAAKk7vB,gBAAgBn3a,SAAS13V,OAAS,IACtGkC,KAAK44B,OAAOy2uB,eAAe,WAAYrvwB,KAAK44B,OAAO02uB,cAAcgO,gBAAgBlysB,EAAK35D,MAAM,GAAQ25D,EAAK35D,KAAKk7vB,iBAAiB,GAC/H3swB,KAAK44B,OAAO02uB,cAAcC,kBAAkBnksB,EAAK35D,KAAM,aAE3DzR,KAAK44B,OAAO02uB,cAAckM,gBAAgBpwsB,EAAK35D,MAC/CzR,KAAK44B,OAAO02uB,cAAcC,kBAAkBnksB,EAAK35D,KAAM,aACvDzR,KAAK44B,OAAO02uB,cAAcC,kBAAkBnksB,EAAK35D,KAAM,WACvDzR,KAAK44B,OAAO02uB,cAAcC,kBAAkBnksB,EAAK35D,KAAM,YACvDzR,KAAK44B,OAAO02qB,WAAWg0K,4BAA4Bl4yB,EAAK35D,KAAM,WAC9DzR,KAAKij3B,mBAAmB73yB,EAC5B,EAOAm2yB,EAAShj3B,UAAUgk3B,eAAiB,SAAUn3yB,GACtCnqE,SAASmqE,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAWj5sB,WAAa,IACvDyX,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAWj5sB,UAAY,GAEjD,IAAIuvzB,EAAY93yB,EAAK35D,KAAKk7vB,gBACtB42G,EAAiBn4yB,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAWj5sB,UACtD3zD,KAAK44B,OAAO02uB,cAAcsP,oBAAoB2kG,EAAgBL,GAC9Dlj3B,KAAK0swB,YAAYthsB,GACjBprE,KAAK44B,OAAO02qB,WAAWg0K,4BAA4Bl4yB,EAAK35D,KAAM,YAC9DzR,KAAKij3B,mBAAmB73yB,EAC5B,EAOAm2yB,EAAShj3B,UAAUmuwB,YAAc,SAAUthsB,GACvC,IAAI83yB,EAAY93yB,EAAK35D,KAAKk7vB,gBACtBnkV,EAAUxob,KAAK44B,OAAOi0uB,qBAAqBwB,kBAAkB60G,EAAU16b,SACvEF,EAAYtob,KAAK44B,OAAOi0uB,qBAAqBwB,kBAAkB60G,EAAU56b,WACzEk7b,EAAkBN,EAAUvvzB,SAC5B8na,GAAM+nZ,IACNxj3B,KAAK44B,OAAOy2uB,eAAe,eAAe,EAAO6zG,GAAW,GACV,MAA9C93yB,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAWj5sB,WACjC3zD,KAAK44B,OAAOy2uB,eAAe,UAAW,KAAM6zG,GAAW,KAIvDznZ,GAAMnzC,KAAemzC,GAAMjzC,IAC3Bxob,KAAK44B,OAAOy2uB,eAAe,YAAarvwB,KAAK44B,OAAOi0uB,qBAAqBsC,aAAa3mV,EAASg7b,EAAiBN,EAAU9zG,aAAc8zG,GAAYA,GAAW,GAE3I,IAApBM,GAAyBN,EAAUt1G,cACnC5twB,KAAK44B,OAAOy2uB,eAAe,eAAe,EAAO6zG,GAAW,GAC5Dlj3B,KAAK44B,OAAOy2uB,eAAe,YAAarvwB,KAAK44B,OAAOi0uB,qBAAqBS,eAAe41G,EAAU56b,UAAW46b,GAAYA,GAAW,KAEnIlysB,GAAkBkysB,EAAU1thB,WAAa0thB,EAAU1thB,SAAS13V,OAAS,IACtEkC,KAAK44B,OAAOy2uB,eAAe,WAAYrvwB,KAAK44B,OAAO02uB,cAAcgO,gBAAgBlysB,EAAK35D,MAAM,GAAQyx2B,GAAW,GAC/Glj3B,KAAK44B,OAAO02uB,cAAcC,kBAAkBnksB,EAAK35D,KAAM,aAE3DzR,KAAK44B,OAAOy2uB,eAAe,cAAuC,IAAvB6zG,EAAUvvzB,SAAgCuvzB,GAAW,GAChGlj3B,KAAK44B,OAAOi0uB,qBAAqB2C,iBAAiBpksB,EAAK35D,OAE3DzR,KAAK44B,OAAO02uB,cAAckM,gBAAgBpwsB,EAAK35D,MAC/CzR,KAAK44B,OAAO02uB,cAAcC,kBAAkBnksB,EAAK35D,KAAM,WACvDzR,KAAK44B,OAAO02uB,cAAcC,kBAAkBnksB,EAAK35D,KAAM,aACvDzR,KAAK44B,OAAO02uB,cAAcC,kBAAkBnksB,EAAK35D,KAAM,WAC3D,EAOA8v2B,EAAShj3B,UAAUkk3B,eAAiB,SAAUr3yB,GAC1C,IAAIuwsB,EAAcvwsB,EAAK35D,KAUvB,GATAzR,KAAK44B,OAAOy2uB,eAAe,WAAasM,EAAY37wB,KAAK44B,OAAOg0uB,WAAWjlS,UAAY,IAAM,IAAMg0S,EAAY37wB,KAAK44B,OAAOg0uB,WAAWjlS,UAAYg0S,EAAYhP,iBAAiB,GAC/K3swB,KAAK44B,OAAOy2uB,eAAe,YAAcrvwB,KAAK44B,OAAOg0uB,WAAWjlS,SAAWg0S,EAAY37wB,KAAK44B,OAAOg0uB,WAAWjlS,UAAY,IAAM,IAAMg0S,EAAY37wB,KAAK44B,OAAOg0uB,WAAWjlS,UAAYv8Z,EAAK35D,MACrLkqwB,EAAYhP,gBAAgBQ,gBAC7BntwB,KAAK44B,OAAOy2uB,eAAe,YAAarvwB,KAAK44B,OAAO02uB,cAAc/wI,eAAeo9I,GAAa,GAAQA,EAAYhP,iBAAiB,IAElI37lB,GAAkB5lG,EAAK35D,KAAKk7vB,gBAAgBn3a,WAAapqR,EAAK35D,KAAKk7vB,gBAAgBn3a,SAAS13V,OAAS,IACrGkzK,GAAkBhxK,KAAK44B,OAAO02qB,WAAWygE,oBAC1C/vwB,KAAK44B,OAAO02qB,WAAWygE,kBAAkB0zG,sBAAsBr4yB,EAAK35D,KAAKk7vB,kBAExEvhsB,EAAK35D,KAAKorwB,gBAAiB,CAC5B,IAAIt5wB,EAAQo4wB,EAAYhP,gBAAgBQ,eAAiBwO,EAAYhP,gBAAgBppwB,MACjFo4wB,EAAYhP,gBAAgB1F,UAChCjnwB,KAAK44B,OAAOy2uB,eAAe,gBAAiBrvwB,KAAK44B,OAAO02uB,cAAc2N,iBAAiB15wB,EAAOo4wB,EAAYhP,gBAAgBhlS,UAAWg0S,EAAYhP,iBAAiB,EACtK,CACA3swB,KAAKij3B,mBAAmB73yB,EAC5B,EAOAm2yB,EAAShj3B,UAAUmk3B,eAAiB,SAAUt3yB,GAC1C,IAAIuwsB,EAAcvwsB,EAAK35D,KAAKk7vB,gBACxB+2G,EAAoBt4yB,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAWG,mBACrD42G,EAAkBv4yB,EAAK35D,KAAKzR,KAAK44B,OAAOg0uB,WAAWE,iBACnD62G,GAAkD,IAA/BA,EAAgBvq2B,YAAmD,QAA/BpZ,KAAK44B,OAAOk1uB,gBACnE9twB,KAAK44B,OAAOi0uB,qBAAqBt5hB,QAAQvzO,KAAK44B,OAAOk1uB,eAAgB61G,GAEzE3j3B,KAAK44B,OAAOy2uB,eAAe,oBAAqBrvwB,KAAK44B,OAAOi0uB,qBAAqBgC,uBAAuB60G,GAAoB/nG,GAAa,GACzI37wB,KAAK44B,OAAOy2uB,eAAe,kBAAmBrvwB,KAAK44B,OAAOi0uB,qBAAqBkC,qBAAqB40G,GAAkBhoG,GAAa,GAC/HA,EAAY5O,mBAAqB4O,EAAY7O,kBAC7C9swB,KAAK44B,OAAOy2uB,eAAe,eAAgBrvwB,KAAK44B,OAAO02uB,cAAc4N,sBAAsBvB,GAAcA,GAAa,GACtH37wB,KAAK44B,OAAOy2uB,eAAe,gBAAiBrvwB,KAAK44B,OAAO02uB,cAAc6N,uBAAuBxB,GAAcA,GAAa,IAE5H37wB,KAAKij3B,mBAAmB73yB,EAC5B,EASAm2yB,EAAShj3B,UAAUik3B,eAAiB,SAAUp3yB,EAAM62yB,EAAWtmL,GAC3D,IAAIgmF,EAAmB3hxB,KAAK44B,OAAO6gvB,eAC/BmqG,EAAmB3B,EAAUji3B,KAAK44B,OAAOg0uB,WAAWgN,cACxD,GAAIgqG,EAAkB,CAClB5j3B,KAAKwh3B,sBAAuB,EAiC5B,IAhCA,IACIqC,EADmB7j3B,KAAK44B,OAAO02uB,cAAcgN,gBAAgB2lG,GACtBnk3B,OACvCgm3B,EAAmBnoL,EAAagxE,gBAAgBiN,aAChDjtvB,OAAQ,EACRo31B,EAAkB,GAClBpqG,EAAe35wB,KAAK44B,OAAO04jB,UAC3BniN,OAAW,EACX4zE,EAAU,SAAUt6b,GACpB,GAAIq71B,EAAkB,CAClB,IAAIE,EAAyBF,EAAiBhm3B,OAC9C,IAAKqxY,EAAW,EAAGA,EAAW60e,EAAwB70e,IAAY,CAC9D,GAAI20e,EAAiB30e,GAAUwyY,EAAiB7rwB,MAAQ8t2B,EAAiBn71B,GAAQ,CAC7EkE,EAAQwiX,EACR,KACJ,CAEIxiX,GAAS,CAEjB,CACJ,CACA,GAAK8uc,GAAM9uc,KAAqB,IAAXA,EAGhB,CACD,IAGIw2vB,EAAoBzhxB,GAAO,CAAC,EAHjBi4wB,EAAan8wB,QAAO,SAAUo8wB,GACzC,OAAQgqG,EAAiBn71B,KAAWmxvB,EAAa+H,EAAiB7rwB,GACtE,IAC4C,IAC5CqtwB,EAAkBxB,EAAiBllwB,MAAQ,IAC3Csn2B,EAAgBpm3B,KAAKwlxB,EACzB,MATI4gG,EAAgBpm3B,KAAKmm3B,EAAiB7i3B,SAAS0rB,EAAMhsB,WAAY,KAUzE,EACS8nB,EAAQ,EAAGA,EAAQo71B,EAAqBp71B,IAC7Cs6b,EAAQt6b,GAEZ2iD,EAAK35D,KAAKk7vB,gBAAgBiN,aAAemqG,EACzC/j3B,KAAK44B,OAAO02uB,cAAcC,kBAAkBnksB,EAAK35D,KAAM,gBACvDzR,KAAK44B,OAAO02qB,WAAWg0K,4BAA4Bl4yB,EAAK35D,KAAM,YACjC,iBAAzBzR,KAAK44B,OAAOygvB,WACZr5wB,KAAK44B,OAAO02qB,WAAWihE,aAAa0zG,kBAAmB,EACvDjk3B,KAAK44B,OAAO02qB,WAAWihE,aAAauzG,iBAAmBA,GAE3D9j3B,KAAK0swB,YAAYthsB,GACjBprE,KAAKij3B,mBAAmB73yB,EAC5B,CACJ,EAQAm2yB,EAAShj3B,UAAUok3B,iBAAmB,SAAUT,EAAYp0B,GACxD9t1B,KAAK44B,OAAOwhvB,kBAAkBk1C,4BAA4B4yD,EAAWzw2B,MAChEzR,KAAK44B,OAAOk8vB,wBAAwBqkD,kBAAkB+oC,EAAWzw2B,KAAMyw2B,EAAWzw2B,KAAKzR,KAAK44B,OAAOg0uB,WAAWuN,YAAa+nG,IAC5Hli3B,KAAK44B,OAAO02qB,WAAW+zK,eAAev1B,EAE9C,EAOAyzB,EAAShj3B,UAAUsk3B,WAAa,SAAUX,GACtC,IAAIgB,EAAYhB,EAAWzw2B,KAAKk7vB,gBAC5Bu1G,EAAWzw2B,KAAKzR,KAAK44B,OAAOg0uB,WAAWjqkB,MAAQ,IAC/Cu/qB,EAAWzw2B,KAAKzR,KAAK44B,OAAOg0uB,WAAWjqkB,MAAQ,GAEnD,IAAIuhrB,EAAYhC,EAAWzw2B,KAAKzR,KAAK44B,OAAOg0uB,WAAWjqkB,MACvD3iM,KAAK44B,OAAOy2uB,eAAe,OAAQ60G,EAAWhB,GAAW,GACzDlj3B,KAAK44B,OAAO02qB,WAAWg0K,4BAA4BpB,EAAWzw2B,KAAM,QACpEzR,KAAK0swB,YAAYw1G,GACjBli3B,KAAKij3B,mBAAmBf,EAC5B,EAQAX,EAAShj3B,UAAUyk3B,WAAa,SAAU53yB,EAAM62yB,GAC5C,IACIiB,EAAY93yB,EAAK35D,KAAKk7vB,gBACtB2S,EAAW2iG,EAAkB,SACjCji3B,KAAK44B,OAAOy2uB,eAAe,WAAYiQ,EAAU4jG,GAAW,GAE5Dlj3B,KAAKij3B,mBAAmB73yB,EAC5B,EAOAm2yB,EAAShj3B,UAAU6k3B,uBAAyB,SAAUznG,GAClD,IAAIjL,EAAQ1wwB,KAAK44B,OAAOi0uB,qBAAqBuF,kBAAkBuJ,GAC3DhL,EAAQ3wwB,KAAK44B,OAAOi0uB,qBAAqB2F,gBAAgBmJ,GAC7D,OAAO37wB,KAAK44B,OAAOi0uB,qBAAqBhlV,aAAa6oV,EAAOC,EAChE,EAOA4wG,EAAShj3B,UAAU0k3B,mBAAqB,SAAU73yB,GAC9CprE,KAAK44B,OAAO02qB,WAAW0qI,qBAAqB5uwB,EAChD,EAOAm2yB,EAAShj3B,UAAUklE,QAAU,WAEzBzjE,KAAK44B,OAAO02qB,WAAW+gE,oBAAiBpjsB,CAC5C,EACOs0yB,CACX,CA/kB8B,GCA1B4C,IAA6B,WAC7B,SAASA,EAAY50Y,EAAO60Y,GACxBpk3B,KAAK44B,OAAS22c,EACdvve,KAAKok3B,YAAcA,CACvB,CAkOA,OAxNAD,EAAY5l3B,UAAUy9vB,cAAgB,SAAUpwF,EAASnB,EAAYtopB,GACjE,IAAIy+L,EAAQ5gN,KACZA,KAAKmuvB,WAAa,IAAIx7nB,GAAQ,CAC1Bi5iB,QAASA,EACTx2pB,SAAU,WACV24d,UAAW/te,KAAK44B,OAAOm1c,UACvB08L,WAAYA,EACZ57pB,SAAUosF,GACV94E,OAAQA,GAAkB,KAC1Bs8D,UAAW,CAAEkwD,KAAM,CAAEi7hB,OAAQ,QAAUn0iB,MAAO,CAAEm0iB,OAAQ,WAE5D5pqB,KAAKmuvB,WAAW26E,aAAe,SAAU19vB,GACrC,IAAI6wvB,EAAW,CACXxqzB,KAAMmvM,EAAMwjqB,YAAYvwD,kBACxBzovB,KAAMA,EACNo5P,QAAS5jH,EAAMutiB,WAAW3pb,SAE9B5jH,EAAMhoL,OAAOwmc,QAAQ,sBAAuB68V,EAChD,EACAj8zB,KAAKmuvB,WAAWy6E,UAAY,SAAUx9vB,GAClCw1I,EAAMionB,sBAAsBz9vB,EAChC,EACAprE,KAAKmuvB,WAAWvgR,kBAAmB,EACnC5te,KAAKmuvB,WAAWrvuB,SAAS9e,KAAK44B,OAAO43vB,UACzC,EAOA2zF,EAAY5l3B,UAAUsq0B,sBAAwB,SAAUz9vB,GAGpD,GAFAA,EAAK3R,QAAQp1D,MAAMotI,WAAa,UAE5Bu/B,GADsBhxK,KAAK44B,OAAO6gC,QAAQqna,QAAQ,oBACV,CACxC,IACIipW,EADoB/p0B,KAAK44B,OAAOi8vB,cAAc70xB,KAAK44B,OAAO43vB,WAC9BltxB,KAAOtD,KAAK44B,OAAO43vB,UAAUlhc,YACzD46U,EAAmB9+lB,EAAK3R,QAAQ0iD,WAChC4ttB,EAAW7/J,EAAmB9+lB,EAAK3R,QAAQ61R,cAC3C46U,GAAoB6/J,GAAW7/J,EAAmB9+lB,EAAK3R,QAAQ61R,cAEnElkR,EAAK3R,QAAQp1D,MAAMf,KAAO4mqB,EAAmB,KAC7C9+lB,EAAK3R,QAAQp1D,MAAMotI,WAAa,SACpC,CACJ,EASA0yuB,EAAY5l3B,UAAU8l3B,2BAA6B,SAAUh/qB,EAAMq4kB,GAC3Dr4kB,GAAQrlM,KAAK44B,OAAOswyB,gBAAgB/le,aACpCnjW,KAAKg8vB,cAAc,UAAU,GAC7Bh8vB,KAAK44B,OAAOw8vB,cAAcjnC,WAAW14nB,QACrCz1H,KAAKsk3B,cAAc5mG,GAC4B,2BAA3C19wB,KAAKok3B,YAAYG,sBACjBvk3B,KAAKmuvB,WAAWx/mB,KAAK3uI,KAAKok3B,YAAYI,uBAAuBrv2B,cAAc,IAAM8lF,KAEjC,4BAA3Cj7F,KAAKok3B,YAAYG,sBACtBvk3B,KAAKmuvB,WAAWx/mB,KAAK3uI,KAAKok3B,YAAYI,uBAAuBrv2B,cAAc,IAAM8lF,KAGjFj7F,KAAKmuvB,WAAWx/mB,KAAK3uI,KAAKok3B,YAAYK,qBAGpCzzsB,GAAkBhxK,KAAKmuvB,cAC7BnuvB,KAAKmuvB,WAAW1qrB,UAChBzjE,KAAKmuvB,WAAa,KAE1B,EAQAg2H,EAAY5l3B,UAAU+l3B,cAAgB,SAAU5mG,GAC5C,IAAIrR,EAAYrswB,KAAKok3B,YAAYvwD,kBAAkBlnD,gBAC/C+3G,GAA8B,IAAlBhnG,EAAsBrR,EAAU9owB,MAC5C8owB,EAAU72a,SAASkob,GAAcn6wB,MACjCwjxB,GAAkC,IAAlBrJ,EAAsBrR,EAAU0a,cAChD1a,EAAU72a,SAASkob,GAAcqJ,cACjCzjxB,GAAyB,IAAlBo6wB,EAAsBrR,EAAU/owB,KAAO+owB,EAAU/owB,KAAO+owB,EAAU72a,SAASkob,GAAcp6wB,KAC/F0tK,GAAkBhxK,KAAKmuvB,cACmB,2BAAvCnuvB,KAAKok3B,YAAYtjG,mBACsB,4BAAvC9gxB,KAAKok3B,YAAYtjG,mBACjB9gxB,KAAKmuvB,WAAW3pb,QAAUxkU,KAAK2k3B,eAAejnG,GAC9C19wB,KAAKmuvB,WAAW72uB,SAAW,IAG3BtX,KAAKmuvB,WAAW3pb,QAAUxkU,KAAK2k3B,eAAejnG,GAC9C19wB,KAAKmuvB,WAAW7/Q,QAAQtue,KAAKok3B,YAAYK,oBACrCzk3B,KAAK44B,OAAOm1c,WAAa/te,KAAKmuvB,WAAuB,aACrDnuvB,KAAKmuvB,WAAuB,WAAE9pvB,MAAMf,KAAOtD,KAAK44B,OAAO02qB,WAAWygE,kBAAgC,aAAI,GAAK,MAEpE,iBAAvC/vwB,KAAKok3B,YAAYtjG,kBACb9gxB,KAAK44B,OAAOm1c,UACZ/te,KAAKmuvB,WAAW92uB,QAAU,EAG1BrX,KAAKmuvB,WAAW92uB,SAAWqt2B,EAGa,kBAAvC1k3B,KAAKok3B,YAAYtjG,mBACiB,mBAAvC9gxB,KAAKok3B,YAAYtjG,kBACb9gxB,KAAK44B,OAAOm1c,UACZ/te,KAAKmuvB,WAAW92uB,SAAWqt2B,EAG3B1k3B,KAAKmuvB,WAAW92uB,QAAU,EAGc,qBAAvCrX,KAAKok3B,YAAYtjG,kBAClB9gxB,KAAK44B,OAAOm1c,UACZ/te,KAAKmuvB,WAAW92uB,SAAY0vwB,EAG5B/mxB,KAAKmuvB,WAAW92uB,UAAYqt2B,EAAY39F,GAGA,kBAAvC/mxB,KAAKok3B,YAAYtjG,kBACtB9gxB,KAAKmuvB,WAAW92uB,SAAYrX,KAAK44B,OAAOguvB,gBAAgB84B,gBAAkB,EAErEglE,EAAY,IACjB1k3B,KAAKmuvB,WAAW92uB,UAAYqt2B,EAAYph3B,EAAOtD,KAAKok3B,YAAYl6M,oBAIhF,EAQAi6M,EAAY5l3B,UAAUom3B,eAAiB,SAAUjnG,GAC7C,IAAIknG,EAAgB,GAChBl2zB,EAAW1uD,KAAK44B,OAAO68uB,UACvBovG,EAAa7k3B,KAAKok3B,YAAYvwD,kBAAkBlnD,gBAKpD,IAJK37lB,GAAkB6zsB,EAAWrvhB,WAAaqvhB,EAAWrvhB,SAAS13V,OAAS,IAAuB,IAAlB4/wB,GACnC,qBAAvC19wB,KAAKok3B,YAAYtjG,oBACpB+jG,EAAaA,EAAWrvhB,SAASkob,IAEjC19wB,KAAK44B,OAAOswyB,gBAAgB47C,QAAS,CACrC,IAAIC,EAAe/k3B,KAAK44B,OAAOw8vB,cAAc9sI,iBAAiBtopB,KAAK44B,OAAOswyB,gBAAgB47C,QAAS9k3B,KAAK44B,OAAQ54B,KAAKok3B,YAAYvwD,kBAAmB,0BAChJ9lmB,GAAS,aAAc/tN,KAAKmuvB,aAC5BnuvB,KAAK44B,OAAO49pB,kBAEhBouL,EAAgBG,EAAa,EACjC,KACK,CACD,IAAIz8b,OAAY,EACZE,OAAU,EACV70X,OAAW,EAgBf,OAfKq9G,GAAkB6zsB,EAAWv8b,aAC9BA,EAAY,2CAA6Ctob,KAAK44B,OAAOy0pB,UAAUxxM,YAAY,aACvF,4EACAntb,EAAS30C,WAAW8q2B,EAAWv8b,UAAW,CAAEnta,OAAQnb,KAAK44B,OAAOu8b,kBAAqB,cAExFnkT,GAAkB6zsB,EAAWr8b,WAC9BA,EAAU,2CAA6Cxob,KAAK44B,OAAOy0pB,UAAUxxM,YAAY,WACrF,4EACAntb,EAAS30C,WAAW8q2B,EAAWr8b,QAAS,CAAErta,OAAQnb,KAAK44B,OAAOu8b,kBAAqB,cAEtFnkT,GAAkB6zsB,EAAWlxzB,YAC9BA,EAAW,2CAA6C3zD,KAAK44B,OAAOy0pB,UAAUxxM,YAAY,YACtF,4EACA77e,KAAK44B,OAAO88uB,kBAAkBmvG,EAAWlxzB,SAAUkxzB,EAAWz1G,cAAgB,cAE9EpvwB,KAAKok3B,YAAYtjG,mBACrB,IAAK,mBAGD8jG,EAAgB,iDAFD,2CAA6C5k3B,KAAK44B,OAAOy0pB,UAAUxxM,YAAY,YAC1F,4EAA8EgpY,EAAWl9Y,SAAW,cAEzF,mBACf,MACJ,IAAK,eACDi9Y,EAAgB,gDACZt8b,EAAY30X,EAAW,mBAC3B,MACJ,IAAK,gBACL,IAAK,iBACDixzB,EAAgB,gDACZp8b,EAAU70X,EAAW,mBACzB,MACJ,IAAK,YACL,IAAK,aACL,IAAK,gBACL,IAAK,mBACD,IAAI+8sB,EAAQ,GACRC,EAAQ,GACP3/lB,GAAkBhxK,KAAKok3B,YAAYvwD,kBAAkBlnD,gBAAgBrkV,aACtEooV,EAAQpoV,GAEPt3Q,GAAkBhxK,KAAKok3B,YAAYvwD,kBAAkBlnD,gBAAgBnkV,WACtEmoV,EAAQnoV,GAEZo8b,EAAgB,gDAAkDl0G,EAAQC,EAAQ,mBAClF,MACJ,IAAK,yBACL,IAAK,0BACDi0G,EAAgB5k3B,KAAK44B,OAAOk1vB,oBAAoBs4C,aAC5Cp1pB,GAAkBhxK,KAAKmuvB,cACvBnuvB,KAAK44B,OAAOk1vB,oBAAoBs4C,aAAaznzB,UACzC3e,KAAK44B,OAAOk1vB,oBAAoBw4C,+BAA+Btm0B,KAAK44B,OAAO02qB,WAAWygE,kBAAkB8jD,kBAAkBlnD,gBAAgBgW,SAAU3ixB,KAAK44B,OAAO02qB,WAAWygE,kBAAkBy2D,oBAAqB,GAAI,KAI1O,CACA,OAAOo+C,CACX,EACOT,CACX,CAvOiC,GCN7BjjoB,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCC,IAAsC,WAStC,OARAA,IAAWhkP,OAAOmE,QAAU,SAAStE,GACjC,IAAK,IAAIwB,EAAGtB,EAAI,EAAG4B,EAAIlB,UAAUC,OAAQX,EAAI4B,EAAG5B,IAE5C,IAAK,IAAIoD,KADT9B,EAAIZ,UAAUV,GACOC,OAAOmB,UAAUiD,eAAezB,KAAKtB,EAAG8B,KACzDtD,EAAEsD,GAAK9B,EAAE8B,IAEjB,OAAOtD,CACX,EACOmkP,IAASxjP,MAAMoC,KAAMnC,UAChC,EASImn3B,IAA6B,SAAUxgqB,GAEvC,SAASwgqB,EAAYvsF,GACjB,IAAI73kB,EAAQ4D,EAAOzkN,KAAKC,KAAMy4xB,IAAaz4xB,KAsB3C,OArBA4gN,EAAMisd,UAAY,EAClBjsd,EAAMqkqB,kBAAoB,EAC1BrkqB,EAAMskqB,gBAAiB,EACvBtkqB,EAAMukqB,kBAAmB,EACzBvkqB,EAAMwkqB,YAAc,KACpBxkqB,EAAMykqB,kBAAoB,EAC1BzkqB,EAAM0kqB,iBAAmB,EACzB1kqB,EAAM2kqB,mBAAqB,EAC3B3kqB,EAAM4kqB,oBAAsB,EAC5B5kqB,EAAM88jB,cAAgB,EACtB98jB,EAAM6kqB,eAAiB,EACvB7kqB,EAAM8kqB,mBAAqB,EAC3B9kqB,EAAMksd,SAAW,EACjBlsd,EAAMksmB,uBAAyB,MAC/BlsmB,EAAM+kqB,iBAAkB,EACxB/kqB,EAAMs2a,gBAAiB,EACvBt2a,EAAMglqB,aAAe,EACrBhlqB,EAAMhoL,OAAS6/vB,EACf73kB,EAAMw/lB,iBACNx/lB,EAAMk5R,aACNl5R,EAAMilqB,YAAc,IAAI1B,IAAYvjqB,EAAMhoL,OAAQgoL,GAC3CA,CACX,CAunFA,OAhpFAsgC,IAAU8joB,EAAaxgqB,GA0BvBwgqB,EAAYzm3B,UAAUu7e,WAAa,WAC/B95e,KAAK44B,OAAOsI,GAAG,iBAAkBlhC,KAAKw9tB,iBAAkBx9tB,MACxDA,KAAK44B,OAAOsI,GAAG,eAAgBlhC,KAAKgruB,eAAgBhruB,MACpDA,KAAK44B,OAAOsI,GAAG,kBAAmBlhC,KAAK8l3B,kBAAmB9l3B,MAC1DA,KAAK44B,OAAOsI,GAAG,iBAAkBlhC,KAAK+l3B,gBAAiB/l3B,MACvDA,KAAK44B,OAAOsI,GAAG,kBAAmBlhC,KAAK68vB,kBAAmB78vB,KAC9D,EAOAgl3B,EAAYzm3B,UAAU6hzB,eAAiB,WACnCpgzB,KAAKyk3B,mBAAqB,KAC1Bzk3B,KAAK6zzB,kBAAoB,KACzB7zzB,KAAK8gxB,kBAAoB,KACzB9gxB,KAAKwk3B,uBAAyB,KAC9Bxk3B,KAAKgm3B,sBAAwB,KAC7Bhm3B,KAAKuk3B,sBAAwB,KAC7Bvk3B,KAAKim3B,yBAA2B,KAChCjm3B,KAAKwm0B,oBAAsB,KAC3Bxm0B,KAAK0m0B,kBAAoB,KACzB1m0B,KAAKkm3B,iBAAmB,KACxBlm3B,KAAKmm3B,iBAAkB,EACvBnm3B,KAAKom3B,kBAAmB,EACxBpm3B,KAAKqm3B,gBAAiB,EACtBrm3B,KAAKkl3B,gBAAiB,EACtBll3B,KAAKsm3B,qBAAuB,CAAC,OAAQ,WAAY,WAAY,cAAe,YAAa,UAAW,QAAS,gBACzG,WAAY,eAAgB,gBAAiB,cAAe,YAAa,YAC7Etm3B,KAAKum3B,iBAAkB,EACvBvm3B,KAAK4t0B,WAAY,CACrB,EACAo3C,EAAYzm3B,UAAUi/tB,iBAAmB,SAAUtguB,GAC/C,GAAI8C,KAAK44B,OAAOg0qB,aAAa2mF,sBAAwBvzxB,KAAK44B,OAAOwrV,SAE7D,GADApkX,KAAKo3Y,SAAU,EACXp3Y,KAAKyk3B,mBAAoB,CACzB,IACIhrzB,EAAU60nB,GADMturB,KAAKwm3B,qBAAqBtp3B,GACJ+9F,KACrCxhC,GAAWA,EAAQ96C,YAAc3e,KAAKyk3B,mBAAmB9l2B,WAAa3e,KAAKyk3B,mBAAmBtg3B,UAAUC,SAAS,wBAA0BpE,KAAKyk3B,mBAAmBtg3B,UAAUC,SAAS,4BACvLpE,KAAKym3B,yBAAyBvp3B,GAC9B8C,KAAKo3Y,SAAU,EACfl6Y,EAAEijE,iBAEV,MACUngE,KAAK44B,OAAOo+vB,YAClBh3xB,KAAKym3B,yBAAyBvp3B,EAG1C,EACA8n3B,EAAYzm3B,UAAUs+vB,kBAAoB,SAAU3/vB,GAChD,GAAK8C,KAAK44B,OAAOg0qB,aAAa2mF,oBAA9B,CAGA,IAAItzc,EAAgBjgV,KAAKwm3B,qBAAqBtp3B,GAC1Cu8D,EAAU60nB,GAAaruW,EAAehlP,IACtCj7F,KAAK44B,OAAOosqB,iBAAmBhlsB,KAAK44B,OAAOosqB,gBAAgB81B,uBACvD96tB,KAAKum3B,iBACLvm3B,KAAKym3B,yBAAyBvp3B,GAIlC8C,KAAKum3B,kBAAoBv1sB,GAAkBhxK,KAAKyk3B,qBAAuBhrzB,GAAWA,EAAQ96C,YAAc3e,KAAKyk3B,mBAAmB9l2B,WAChI3e,KAAKgm3B,sBAAwBhm3B,KAAK44B,OAAOmovB,iBAAiB0S,mBAAmBh6tB,GAC7Ez5D,KAAKuk3B,sBAAwB,yBAC7Bvk3B,KAAKwk3B,uBAAyB/qzB,EAC9Bz5D,KAAKwm0B,oBAAsB,SACvBxm0B,KAAK0m3B,0BACL1m3B,KAAK2m3B,qBAAqBzp3B,GAAG,GAEjC8C,KAAK4m3B,4BAA2B,GAChC5m3B,KAAKogzB,kBAEAnge,EAAc97U,UAAUC,SAAS62F,KACtCj7F,KAAKo3Y,SAAU,EACfp3Y,KAAK6m3B,2BACL7m3B,KAAK8m3B,+BAA+B7miB,EAAejgV,KAAKyk3B,oBACxDzk3B,KAAKum3B,iBAAkB,EACvBvm3B,KAAK8gxB,kBAAoB,yBACzB9gxB,KAAKgm3B,sBAAwBhm3B,KAAK6zzB,kBAClC7zzB,KAAK2m3B,qBAAqBzp3B,GAAG,IAExB+iV,EAAc97U,UAAUC,SAAS62F,KACtCj7F,KAAKo3Y,SAAU,EACfp3Y,KAAK6m3B,2BACL7m3B,KAAK8m3B,+BAA+B7miB,EAAejgV,KAAKyk3B,oBACxDzk3B,KAAKum3B,iBAAkB,EACvBvm3B,KAAK8gxB,kBAAoB,0BACzB9gxB,KAAKgm3B,sBAAwBhm3B,KAAK6zzB,kBAClC7zzB,KAAK2m3B,qBAAqBzp3B,GAAG,KAGzB8C,KAAKum3B,kBACLvm3B,KAAK4m3B,4BAA2B,GAChC5m3B,KAAK8m3B,+BAA+BrtzB,EAASz5D,KAAKyk3B,qBAEtDzk3B,KAAKym3B,yBAAyBvp3B,GA3ClC,CA6CJ,EACA8n3B,EAAYzm3B,UAAUqo3B,2BAA6B,SAAUpp2B,GACzD,IAAI6uvB,EAAYrswB,KAAK6zzB,kBAAkBlnD,gBACnCoP,EAAe1P,EAAU8P,YACzBrmwB,EAA8B,iBAAzB9V,KAAK44B,OAAOygvB,SAA8BhN,EAAUoO,OAASpO,EAAUqO,YAChF,GAAIqB,EACA,IAAK,IAAI5+wB,EAAI,EAAGA,EAAI4+wB,EAAaj+wB,OAAQX,IAAK,CAC1C,IAAIg/wB,EAAcJ,EAAa5+wB,GAC3B2Y,EAAGnV,aAAew7wB,EAAYz7wB,MAAQoV,EAAGnV,aAAew7wB,EAAY/twB,IACpEpO,KAAK+m3B,iBAAiB5qG,EAAYz7wB,KAAMy7wB,EAAY/twB,GAAIoP,EAEhE,CAEJ,IAAIwp2B,EAAehn3B,KAAK44B,OAAOmovB,iBAAiBqH,mBAC5C5qwB,GACAi1C,GAAS,CAACzyD,KAAKyk3B,oBAAqB,CAACxpxB,KACrCxoC,GAAS,CAACu0zB,GAAe,CAAC/rxB,OAG1BvoC,GAAY,CAAC1yD,KAAKyk3B,oBAAqB,CAACxpxB,KACxCvoC,GAAY,CAACs0zB,GAAe,CAAC/rxB,MAEjCj7F,KAAK4t0B,UAAYpwzB,EACZwzJ,GAAkBhxK,KAAK44B,OAAOs3rB,gBAC/BlwtB,KAAK44B,OAAOs3rB,cAAcoiF,qBAElC,EACA0yE,EAAYzm3B,UAAUwo3B,iBAAmB,SAAUrm3B,EAAM0N,EAAIkzpB,GACzD,IAEIq6G,GAFkC,gBAAzB37wB,KAAK44B,OAAOygvB,SAA6Br5wB,KAAK6zzB,kBAAkBlnD,gBAAgB8N,OAAO95wB,WAChGX,KAAK6zzB,kBAAkBlnD,gBAAgB+N,YAAY/5wB,cACzBD,EAAQV,KAAK44B,OAAOk1vB,oBAAoBqE,cAAc/jxB,GAChFpO,KAAK44B,OAAOk1vB,oBAAoBqE,cAAczxxB,GAC9Cum3B,EAAMjn3B,KAAK44B,OAAOmovB,iBAAiB0U,eAAez1xB,KAAK44B,OAAO2pqB,gBAAgB79rB,QAAQi3wB,IAC1F,IAAK3qmB,GAAkBi2sB,GAAM,CACzB,IAAIC,EAAWD,EAAI9x2B,cAAc,IAAM8lF,IACnCksxB,EAAoBnn3B,KAAK44B,OAAO6gC,QAAQtkD,cAAc,uBAAyBzU,EAAO,QAAU0N,GAChGkzpB,GACA7umB,GAAS,CAACy0zB,GAAW,CAACjsxB,KAClBksxB,GACA10zB,GAAS,CAAC00zB,GAAoB,CAAClsxB,OAInCvoC,GAAY,CAACw0zB,GAAW,CAACjsxB,KACrBksxB,GACAz0zB,GAAY,CAACy0zB,GAAoB,CAAClsxB,KAG9C,CACJ,EACA+pxB,EAAYzm3B,UAAUmo3B,uBAAyB,WAC3C,IAAIvhF,EAAenlyB,KAAK6zzB,kBAAkBlnD,gBACtC6+B,EAAcxryB,KAAKgm3B,sBAAsBr5G,gBACzCp9rB,GAAU,EACVqpU,EAAoC,iBAAzB54Y,KAAK44B,OAAOygvB,SAA8B8rB,EAAa1qB,OAAS0qB,EAAazqB,YACxFvxE,EAAmC,iBAAzBnpsB,KAAK44B,OAAOygvB,SAA8BmyB,EAAY/wB,OAAS+wB,EAAY9wB,YACzF,GAAI16wB,KAAKgm3B,sBAAsBnpG,gBAC3BttsB,GAAU,OAET,GAAIi8tB,EAAYrvB,YACjB,IAAK,IAAIh/wB,EAAI,EAAGA,EAAIquyB,EAAYrvB,YAAYr+wB,OAAQX,IAAK,CACrD,IAAIg/wB,EAAcqvB,EAAYrvB,YAAYh/wB,GAC1C,GAAIg/wB,EAAYz7wB,OAASk4Y,EAASj4Y,YAC9Bw7wB,EAAY/twB,KAAO+6rB,EAAQxosB,WAAY,CACvCX,KAAK44B,OAAOk8vB,wBAAwB0W,YAAcxryB,KAAKgm3B,sBACvDhm3B,KAAK44B,OAAOk8vB,wBAAwBsyF,iBAAmBjq3B,EACvD6C,KAAK44B,OAAOk8vB,wBAAwBuyF,uCACpC93yB,GAAU,EACV,KACJ,CACK,GAAI4ssB,EAAYz7wB,OAASyosB,EAAQxosB,YAClCw7wB,EAAY/twB,KAAOwqY,EAASj4Y,WAAY,CACxCX,KAAK44B,OAAOk8vB,wBAAwB0W,YAAcxryB,KAAK6zzB,kBACvD7zzB,KAAK44B,OAAOk8vB,wBAAwBsyF,iBAAmBjq3B,EACvD6C,KAAK44B,OAAOk8vB,wBAAwBuyF,uCACpC93yB,GAAU,EACV,KACJ,CACJ,CAEJ,OAAOA,CACX,EAEAy1yB,EAAYzm3B,UAAUun3B,kBAAoB,SAAU5o3B,GACjB,cAA3B8C,KAAK8gxB,mBAAgE,eAA3B9gxB,KAAK8gxB,mBAAiE,qBAA3B9gxB,KAAK8gxB,mBAAuE,iBAA3B9gxB,KAAK8gxB,mBAAmE,kBAA3B9gxB,KAAK8gxB,kBACxL9gxB,KAAKqm3B,gBAAiB,EAGtBrm3B,KAAKqm3B,gBAAiB,CAE9B,EAQArB,EAAYzm3B,UAAUko3B,yBAA2B,SAAUvp3B,GACvD,IACIu8D,EADAt3C,EAASniB,KAAKwm3B,qBAAqBtp3B,GAEvC,GAAIilB,EAAOhe,UAAUC,SAAS62F,KAAiC94E,EAAOhe,UAAUC,SAAS62F,KAClF94E,EAAOhe,UAAUC,SAAS62F,IAC7BxhC,EAAU60nB,GAAansqB,EAAQ84E,SAE9B,GAAI94E,EAAOhe,UAAUC,SAAS62F,IAC/BxhC,EAAU60nB,GAAansqB,EAAQ84E,QAE9B,CAED,IAAK+1E,GADLv3G,EAAU60nB,GAAansqB,EAAQ84E,OACK94E,EAAOhe,UAAUC,SAAS,2BACzD+d,EAAOhe,UAAUC,SAAS,2BAEtB4sK,IADDghnB,EAAgBhyxB,KAAK44B,OAAOmovB,iBAAiB0S,mBAAmBh6tB,IAC/BkzsB,gBAAgBn3a,WAAaw8b,EAAcrlB,gBAAgBn3a,SAAS13V,OAAS,IAC9G27D,EAAU60nB,GAAansqB,EAAQ84E,IAG3C,CACA,GAAIj7F,KAAK44B,OAAOg0qB,aAAa2mF,qBAAuB95tB,EAAS,CACzDz5D,KAAK8m3B,+BAA+BrtzB,EAASz5D,KAAKol3B,aAClDpl3B,KAAKol3B,YAAc3rzB,EACnBz5D,KAAKsn3B,mBAAqBtn3B,KAAKol3B,YAC/B,IAAIz41B,EAAQ3sB,KAAKol3B,YAAYh12B,aAAa,sBAQ1C,GAPK4gK,GAAkBrkJ,GAInB3sB,KAAK09wB,cAAgB,EAHrB19wB,KAAK09wB,aAAet7wB,OAAOuqB,GAK/B3sB,KAAK6zzB,kBAAoB7zzB,KAAK44B,OAAOmovB,iBAAiB0S,mBAAmBzzxB,KAAKol3B,aAC/D,cAAXlo3B,EAAEuJ,MAAmC,eAAXvJ,EAAEuJ,MAAoC,UAAXvJ,EAAEuJ,KAAkB,CACzEzG,KAAK8gxB,kBAAoB9gxB,KAAKun3B,iBAAiBrq3B,GAC/C,IACI80xB,EADA37D,EAAUr2tB,KAAKol3B,YAAYh12B,aAAa,sBAExCo32B,GADAx1F,EAAgBhyxB,KAAK44B,OAAOmovB,iBAAiB0S,mBAAmBh6tB,IACtCkzsB,gBAC1B86G,EAAazn3B,KAAKol3B,YAAYlh3B,cAAci4G,WAChDn8G,KAAKijqB,YAAc+uH,EACnB,IAAI01F,EAAgB1p1B,GAAc,MAAO,CAAEg2B,OAAQ,wHACnDvB,GAAS,CAACi1zB,GAAgB,wBAC1BA,EAAcrj3B,MAAMknC,YAAY,QAASi80B,EAAUjk3B,MAAQ,MAC3D,IAAIok3B,EAAe3n3B,KAAKol3B,YAAYh12B,aAAa,uBAC5C4gK,GAAkBw2sB,EAAUhyhB,WAAax1V,KAAK44B,OAAO06vB,yBAAsD,iBAA3BtzxB,KAAK8gxB,mBAAmE,kBAA3B9gxB,KAAK8gxB,mBAAoE,qBAA3B9gxB,KAAK8gxB,kBACjL4mG,EAAcrj3B,MAAMknC,YAAY,OAAWylI,GAAkBw2sB,EAAUhyhB,UAAiCgyhB,EAAUlk3B,KAAQ,KAAvCmk3B,EAAa,MAGhGC,EAAcrj3B,MAAMknC,YAAY,OAAYylI,GAAkBw2sB,EAAUhyhB,WAA2C,IAA9BgyhB,EAAUhyhB,SAAS13V,OAAqF0p3B,EAAUlk3B,KAAQ,KAAvFmk3B,EAAaD,EAAUhyhB,SAASpzV,OAAOul3B,IAAerk3B,KAAO,MAEzL,IAAIsk3B,EAAc5n3B,KAAK44B,OAAOoF,cAAc,SACxC6p1B,EAAkB7n3B,KAAK44B,OAAOoF,cAAc,SAChD6p1B,EAAgBtw2B,YAAYmw2B,GAC5BE,EAAYrw2B,YAAYsw2B,GACxB,IAAI91e,EAAQ/xY,KAAK44B,OAAOmovB,iBAAiBqH,mBAAmBjzwB,cAAc,oBACtE4jsB,EAAc,KAClB,GAAgC,cAA3B/4sB,KAAK8gxB,mBAAgE,iBAA3B9gxB,KAAK8gxB,mBAA0C9vmB,GAAkBqljB,IAAarljB,GAAkBqljB,IAA+B,IAApBj0tB,OAAOi0tB,GAI7J,IAA2B,IAAvBr2tB,KAAK09wB,cAAuB19wB,KAAK44B,OAAO06vB,yBAAsD,iBAA3BtzxB,KAAK8gxB,mBAAmE,kBAA3B9gxB,KAAK8gxB,mBAAoE,qBAA3B9gxB,KAAK8gxB,kBAC/JgnG,EAAe9n3B,KAAKol3B,YAAYlh3B,cAAck5B,WAAU,QAGxD0q1B,EAAe9n3B,KAAKol3B,YAAYho1B,WAAU,QAPlD,IAAI0q1B,EAAe9n3B,KAAKol3B,YAAYlh3B,cAAck5B,WAAU,GAUhE,IAAK20W,EAAO,CAGR,GAFAt/U,GAAS,CAACq1zB,GAAe,mBACzBA,EAAazj3B,MAAMknC,YAAY,WAAY,YACvCymvB,EAAcnV,kBAAoBmV,EAAcrlB,gBAAgBQ,eAAgB,CAChF,IAAI08D,EAAoB7p0B,KAAK44B,OAAOi8vB,cAAc70xB,KAAK44B,OAAOmovB,iBAAiBqH,oBAC3E2/F,EAAkB/n3B,KAAK44B,OAAOi8vB,cAAc70xB,KAAKol3B,aACrD0C,EAAazj3B,MAAMknC,YAAYvrC,KAAK44B,OAAOm1c,UAAY,QAAU,OAAQ7se,KAAK4D,IAAIij3B,EAAgBzk3B,KAAOum0B,EAAkBvm0B,KAAOpC,KAAK4D,IAAI9E,KAAK44B,OAAOmovB,iBAAiBplJ,cAAcngiB,aAAe,KACzM,CACAssxB,EAAazj3B,MAAMknC,YAAY,MAAO,OACtCwtqB,EAAc/4sB,KAAK44B,OAAOoF,cAAc,SACxC,IAAIgq1B,EAAYho3B,KAAK44B,OAAOoF,cAAc,SAC1Cgq1B,EAAUzw2B,YAAYuw2B,GACtB/uK,EAAYxhsB,YAAYyw2B,EAC5B,CACA,GAAgC,cAA3Bho3B,KAAK8gxB,mBAAgE,iBAA3B9gxB,KAAK8gxB,mBAA0C9vmB,GAAkBqljB,IAAarljB,GAAkBqljB,IAA+B,IAApBj0tB,OAAOi0tB,GAK7Jr2tB,KAAKio3B,oBAAsBH,MAL0J,CACrL,IAAIv6D,EAAiBu6D,EAAazu1B,uBAAuB,uBACzDr5B,KAAKio3B,oBAAsB16D,EAAenrzB,OAAOi0tB,GACrD,CAcA,GAVAr2tB,KAAKyk3B,mBAAqBzk3B,KAAKio3B,oBAC/Bjo3B,KAAKy0xB,eAAiB17E,EACtB/4sB,KAAKko3B,eAAiBN,EACtB5n3B,KAAK6+Y,aAAew3U,EACpBr2tB,KAAKom3B,kBAAmB,EACQ,2BAA3Bpm3B,KAAK8gxB,mBAA6E,4BAA3B9gxB,KAAK8gxB,oBAC7D9vmB,GAAkBhxK,KAAK44B,OAAOg0uB,WAAWuN,cACzCn6wB,KAAK8gxB,kBAAoB,MAE7B9gxB,KAAKmo3B,0BAA0Bjr3B,GACF,iBAAzB8C,KAAK44B,OAAOygvB,UAAwD,gBAAzBr5wB,KAAK44B,OAAOygvB,SAA4B,CACnF,GAAqC,IAAjCr5wB,KAAK6zzB,kBAAkB5ivB,MACvB,OAEC,GAAIjxE,KAAK44B,OAAOy5vB,mBAAoB,CACrC,IAAI8S,EAAenlyB,KAAK44B,OAAO6jxB,kBAAkBz8yB,KAAK6zzB,kBAAkBj5C,WAAW5la,UAC9EhkM,GAAkBm0nB,IAAkBA,EAAa12a,WAClDzuX,KAAKoo3B,WAAcpo3B,KAAKyk3B,mBAAoBpg3B,MAAMmkD,OACjDxoD,KAAKyk3B,mBAAoBpg3B,MAAMmkD,OAAS,OACrCxoD,KAAKyk3B,mBAAmBtv2B,cAAc,2BACtCs9C,GAAS,CAACzyD,KAAKyk3B,mBAAmBtv2B,cAAc,2BAA4B,4BAGxF,CACJ,CACJ,CACJ,MAEQnV,KAAK44B,OAAOo+vB,YACRh3xB,KAAKyk3B,oBACLzk3B,KAAK8m3B,+BAA+BrtzB,EAASz5D,KAAKol3B,aAEtDpl3B,KAAKogzB,kBAGLpgzB,KAAK8m3B,+BAA+BrtzB,EAASz5D,KAAKol3B,YAG9D,EAUAJ,EAAYzm3B,UAAUuo3B,+BAAiC,SAAUrtzB,EAAS4uzB,EAAeC,GACrFD,EAAgBA,GAAgCro3B,KAAKol3B,YACrD,IAAImD,IAAwBvo3B,KAAK44B,OAAOg0uB,WAAWjlS,SAC/C6gZ,GAAwB,EAC5B,IAAIxo3B,KAAK44B,OAAOwrV,SAAhB,CAGA,GAAIpkX,KAAK44B,OAAOy5vB,oBAAsB54tB,EAAS,CAC3C,IAAI+wP,EAASxqT,KAAK44B,OAAOmovB,iBAAiB0S,mBAAmBh6tB,GACzD0ruB,EAAenlyB,KAAK44B,OAAOutvB,cAAc37d,EAAOowd,YAC/C5pmB,GAAkBm0nB,IACdA,EAAa12a,WACd85f,GAAwB,EACxBC,GAAwB,EAGpC,CACA,GAAI/uzB,EAAS,CACT,GAAIA,EAAQtkD,cAAc,IAAM8lF,KAG5B,GAFAxoC,GAAS,CAACgH,EAAQtkD,cAAc,IAAM8lF,KAA0B,CAACA,KACjExoC,GAAS,CAACgH,EAAQtkD,cAAc,IAAM8lF,KAA2B,CAACA,KAC9DstxB,EAAuB,CACvB,IAAIE,EAAkBhvzB,EAAQtkD,cAAc,IAAM8lF,IAC7C+1E,GAAkBy3sB,KACnBh2zB,GAAS,CAACg2zB,GAAkB,CAACxtxB,KAC7BwtxB,EAAgBpk3B,MAAMlB,IAAM,MAEpC,OAEC,GAAInD,KAAK44B,OAAOo+vB,YAAcuxF,EAAuB,EAClD/9jB,EAASxqT,KAAK44B,OAAOmovB,iBAAiB0S,mBAAmBh6tB,IAClDojtB,iBACPpqtB,GAAS,CAACgH,GAAU,CAACwhC,IAE7B,CAEA,GADAxoC,GAASzyD,KAAK44B,OAAOmovB,iBAAiBplJ,cAAclumB,iBAAiB,IAAMwtE,IAA6B,CAACA,MACpG+1E,GAAkBhxK,KAAK44B,OAAOg0uB,WAAWuN,cACtC1gtB,EAAQtkD,cAAc,IAAM8lF,KACzBxhC,EAAQv1D,cAAciR,cAAc,IAAM8lF,MAC9CutxB,EAAuB,CAC1B,IAAIE,EAAoB13sB,GAAkBv3G,EAAQtkD,cAAc,IAAM8lF,KACxDxhC,EAAQv1D,cAAlBu1D,EACCu3G,GAAkB03sB,EAAiBvz2B,cAAc,IAAM8lF,MACxDxoC,GAAS,CAACi2zB,EAAiBvz2B,cAAc,IAAM8lF,KAA0B,CAACA,KAEzE+1E,GAAkB03sB,EAAiBvz2B,cAAc,IAAM8lF,MACxDxoC,GAAS,CAACi2zB,EAAiBvz2B,cAAc,IAAM8lF,KAA2B,CAACA,IAEnF,CACJ,MACUqtxB,GACN51zB,GAAY1yD,KAAK44B,OAAOmovB,iBAAiBplJ,cAAclumB,iBAAiB,IAAMwtE,IAA6B,CAACA,KAEhH,GAAIotxB,GAAiB5uzB,IAAY4uzB,EAAe,CAQ5C,GAPIA,EAAclz2B,cAAc,IAAM8lF,MAClCvoC,GAAY,CAAC21zB,EAAclz2B,cAAc,IAAM8lF,KAA0B,CAACA,KAC1EvoC,GAAY,CAAC21zB,EAAclz2B,cAAc,IAAM8lF,KAA2B,CAACA,KACvEotxB,EAAclz2B,cAAc,IAAM8lF,KAClCvoC,GAAY,CAAC21zB,EAAclz2B,cAAc,IAAM8lF,KAA4B,CAACA,MAG/E+1E,GAAkBhxK,KAAK44B,OAAOg0uB,WAAWuN,cACtCkuG,EAAclz2B,cAAc,IAAM8lF,MAC/BotxB,EAAcnk3B,cAAciR,cAAc,IAAM8lF,KAMtD,GAAIj7F,KAAK44B,OAAOo+vB,WAAY,EACzBxse,EAASxqT,KAAK44B,OAAOmovB,iBAAiB0S,mBAAmB40F,KAC/C79jB,EAAOqyd,iBACjBnqtB,GAAY,CAAC21zB,GAAgB,CAACptxB,IAEtC,OARIvoC,GAAY,EAFRg2zB,EAAoB13sB,GAAkBq3sB,EAAclz2B,cAAc,IAAM8lF,KACxDotxB,EAAcnk3B,cAA9Bmk3B,GAC0Blz2B,cAAc,IAAM8lF,KAA0B,CAACA,KAC7EvoC,GAAY,CAACg2zB,EAAiBvz2B,cAAc,IAAM8lF,KAA2B,CAACA,KAQlFj7F,KAAKol3B,YAAc,IACvB,CAtEA,CAuEJ,EAQAJ,EAAYzm3B,UAAUgp3B,iBAAmB,SAAUrq3B,GAC/C,IAAI6u1B,EAAmB/r1B,KAAKwm3B,qBAAqBtp3B,GAC7CuU,EAAOzR,KAAK6zzB,kBACZ7xmB,EAAS,GA6Bb,OA5BI+poB,EAAiB5n1B,UAAUC,SAAS62F,IACpC+mH,EAAS,eAEJ+poB,EAAiB5n1B,UAAUC,SAAS62F,IACzC+mH,EAAS,iBAEH+poB,EAAiB5n1B,UAAUC,SAAS62F,KAC1C6lY,GAAQirX,EAAkB,IAAM9wvB,MAA+Bj7F,KAAK44B,OAAOg0uB,WAAWjlS,SACtF3lR,EAAS,mBAEJ+poB,EAAiB5n1B,UAAUC,SAAS62F,IACzC+mH,EAAS,yBAEJ+poB,EAAiB5n1B,UAAUC,SAAS62F,IACzC+mH,EAAS,0BAEJ+poB,EAAiB5n1B,UAAUC,SAAS62F,IACzC+mH,EAAS,iBAEJ+poB,EAAiB5n1B,UAAUC,SAAS62F,KACzC8wvB,EAAiB5n1B,UAAUC,SAAS62F,KACpC8wvB,EAAiB5n1B,UAAUC,SAAS62F,IACpC+mH,EAAS,mBAEJvwM,IACLuwM,EAASvwM,EAAKorwB,gBAAkB,aAC1BprwB,EAAKk7vB,gBAAgBiB,YAAc,gBAAkB,aAExD5rjB,CACX,EAQAgjqB,EAAYzm3B,UAAU4p3B,0BAA4B,SAAUjvzB,GACxD,IAAIh8D,EAAI8C,KAAK2o3B,cAAczvzB,GACvB+xmB,EAAsBjrqB,KAAK44B,OAAO6gC,QAAQqna,QAAQ,mBACtD,GAAImqM,EAAqB,CACrB,IAAI29M,EAAQzm3B,WAAWQ,iBAAiBsoqB,GAAqBvopB,MAC7DxlB,EAAEwkE,MAAQxkE,EAAEwkE,MAAQknzB,EACpB1r3B,EAAEykE,MAAQzkE,EAAEykE,MAAQinzB,CACxB,CACA,GAAI1r3B,EAAEwkE,OAASxkE,EAAEykE,MAAO,CACpB,IAAIkowB,EAAoB7p0B,KAAK44B,OAAOi8vB,cAAc70xB,KAAK44B,OAAOmovB,iBAAiBqH,oBAC3EpoxB,KAAK44B,OAAOm1c,UACZ/te,KAAK6o3B,WAAa3n3B,KAAK4D,IAAI5H,EAAEwkE,OAASmowB,EAAkBvm0B,KACpDpC,KAAK4D,IAAI9E,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,QAGtEtD,KAAK6o3B,WAAc3r3B,EAAEwkE,MAAQmowB,EAAkBvm0B,KAC3CtD,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,KAEjEtD,KAAKkqqB,iBAAmBlqqB,KAAK6o3B,WAC7B7o3B,KAAK8o3B,WAAa9o3B,KAAK+o3B,UAAY7r3B,EAAEykE,MAAQkowB,EAAkB1m0B,IAC3DnD,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAelpxB,GACjE,CAC+B,2BAA3BnD,KAAK8gxB,mBAA6E,4BAA3B9gxB,KAAK8gxB,oBAC5D9gxB,KAAKwm0B,oBAAiD,2BAA3Bxm0B,KAAK8gxB,kBAAiD,QAAU,SAC3F9gxB,KAAK44B,OAAOk1vB,oBAAoBs4C,aAAaznzB,UAAY3e,KAAK44B,OAAOk1vB,oBAAoBw4C,+BAA+Btm0B,KAAK6zzB,kBAAkBlnD,gBAAgBgW,SAAU3ixB,KAAKwm0B,oBAAqB,GAAI,IAE/M,EACAw+C,EAAYzm3B,UAAUyq3B,iBAAmB,WACrC,IAAKhp3B,KAAKkl3B,gBAAkBll3B,KAAK8gxB,oBAAuB9gxB,KAAK6o3B,aAAe7o3B,KAAKip3B,aAC3Ejp3B,KAAK6o3B,WAAa,EAAK7o3B,KAAKip3B,YAAejp3B,KAAK6o3B,WAAa,EAAK7o3B,KAAKip3B,aACrEjp3B,KAAK8o3B,aAAe9o3B,KAAKkp3B,aACvBlp3B,KAAK8o3B,WAAa,EAAK9o3B,KAAKkp3B,YAAelp3B,KAAK8o3B,WAAa,EAAK9o3B,KAAKkp3B,aAAc,CAC3Flp3B,KAAKkl3B,gBAAiB,EACtBll3B,KAAK44B,OAAOs+yB,oBAAmB,GAC/B,IAAI7hwB,EAAOr1E,KAAK6zzB,kBAAkBlnD,gBAClC3swB,KAAKunF,aAAevnF,KAAK44B,OAAOy9uB,eAAe0lB,eAAe1mtB,EAAMr1E,KAAKsm3B,sBAC1C,2BAA3Btm3B,KAAK8gxB,mBACsB,4BAA3B9gxB,KAAK8gxB,mBACqB,gBAAxB9gxB,KAAK44B,OAAOygvB,UAAwD,cAA1Br5wB,KAAK8gxB,mBACjD9gxB,KAAK6l3B,YAAYxB,4BAA2B,EAAMrk3B,KAAK09wB,cAE3D19wB,KAAKyk3B,mBAAmB772B,aAAa,eAAgB,OACzD,CACJ,EACAo82B,EAAYzm3B,UAAU4q3B,kBAAoB,SAAU1vzB,GAChD,IAAI2vzB,EAAiE,kBAArDpp3B,KAAK44B,OAAOwhuB,qBAAmC,aAC3Dp6vB,KAAK44B,OAAO6gC,QAAQpgC,uBAAuB,qBAAqBv7B,OAAS,GAAK27D,IACnC,IAA1CA,EAAQrpD,aAAa,kBAA0Bg52B,IAChDpp3B,KAAK44B,OAAO6gC,QAAQpgC,uBAAuB,qBAAqB,GAAGxyB,QAE3E,EAEAm+2B,EAAYzm3B,UAAU8q3B,iBAAmB,SAAU5vzB,GAC/C,IAEI6vzB,EAFAC,EAAa9vzB,IAAYA,EAAQt1D,UAAUC,SAAS,eAAiBq1D,EAAQt1D,UAAUC,SAAS,mBAC7Fq1D,EAAQt1D,UAAUC,SAAS,gBAY9Bgl3B,GATAE,EADAtp3B,KAAK44B,OAAO48nB,qBACK/7lB,IAAY8vzB,GACzBvp3B,KAAK44B,OAAO+9uB,SAAS3voB,UAAUhnI,KAAK44B,OAAO+9uB,SAAS7zD,wBAAwBhltB,OAAS,GAAGsS,aAAa,cACjGqpD,EAAQrpD,aAAa,YAGZqpD,IAAY8vzB,GACzBvp3B,KAAK44B,OAAO+9uB,SAAS5gE,cAAc/1sB,KAAK44B,OAAO+9uB,SAAS7zD,wBAAwBhltB,OAAS,GAAGsS,aAAa,cACrGqpD,EAAQrpD,aAAa,cAEsD,eAArDpQ,KAAK44B,OAAOwhuB,qBAAmC,aAC7Ep6vB,KAAK44B,OAAO6gC,QAAQpgC,uBAAuB,oBAAoBv7B,OAAS,GAAK27D,IAAY6vzB,GAAkBF,IAC3Gpp3B,KAAK44B,OAAO6gC,QAAQpgC,uBAAuB,oBAAoB,GAAGxyB,QAE1E,EAEAm+2B,EAAYzm3B,UAAUir3B,wBAA0B,WAC5C,IAAIrgyB,GACJA,EAAS,GAAGvoF,MAAMb,KAAKC,KAAK44B,OAAO6gC,QAAQhsC,iBAAiB,+BACjD3vB,SACPkC,KAAKyp3B,iBAAiBtgyB,GAAQ,EAAO,gBACrCnpF,KAAKyp3B,iBAAiBtgyB,GAAQ,EAAO,aAE7C,EAEA67xB,EAAYzm3B,UAAUmr3B,kBAAoB,SAAUvn2B,GAChD,IAAIgovB,EACJ,GAAInqwB,KAAK44B,OAAO48nB,qBAAsB,CAClC,IAAI8nE,EAAct9tB,KAAK44B,OAAO+9uB,SAAS3voB,UAAUxpI,QAAO,SAAUiU,GAC9D,OAAOA,EAAKrB,aAAa,mBAAqB+R,EAAO/R,aAAa,gBACtE,IAAG,GACCuc,EAAQ3sB,KAAK44B,OAAO+9uB,SAAS3voB,UAAUtiI,QAAQ44tB,GACnD6sC,EAAanqwB,KAAK44B,OAAOm9qB,cAAcpprB,GAAO2Z,QAClD,MAEI6juB,EAAanqwB,KAAK44B,OAAOm9qB,cAAc90sB,SAASkhB,EAAO/R,aAAa,mBAAmBk2B,SAEvF6juB,IACyD,UAArDnqwB,KAAK44B,OAAOwhuB,qBAAmC,eAC/Cp6vB,KAAKyp3B,iBAAiBt/G,GAAY,EAAM,aACpCnqwB,KAAK44B,OAAO6gC,QAAQpgC,uBAAuB,wBAAwBv7B,OAAS,GAC5EkC,KAAK44B,OAAO6gC,QAAQpgC,uBAAuB,wBAAwB,GAAGxyB,UAGrB,UAArD7G,KAAK44B,OAAOwhuB,qBAAmC,cAC/Cp6vB,KAAKyp3B,iBAAiBt/G,GAAY,EAAM,gBAGpD,EAEA66G,EAAYzm3B,UAAUor3B,kBAAoB,WACtC,IAAIC,GACJA,EAAa,GAAGhp3B,MAAMb,KAAKC,KAAK44B,OAAO6gC,QAAQhsC,iBAAiB,oBACjD3vB,OAAS,GACpBkC,KAAKyp3B,iBAAiBG,GAAY,EAAO,gBAEjD,EAEA5E,EAAYzm3B,UAAUkr3B,iBAAmB,SAAU3uvB,EAAOh0H,EAAKoF,GAC3D,IAAK,IAAI/O,EAAI,EAAGgvE,EAAM2uD,EAAMh9H,OAAQX,EAAIgvE,EAAKhvE,IACrC2J,EACAg0H,EAAM75H,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU2C,IAAIoF,GAGhD4uH,EAAM75H,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU0C,OAAOqF,EAG/D,EAEA842B,EAAYzm3B,UAAUsr3B,aAAe,WACjC,IAAIC,EAAWv01B,SAAS8D,uBAAuB,mBAAmB,GAElE,IADgB9D,SAAS9H,iBAAiB,gBAAgB3vB,OAC1C,CACZ,IAAI2he,EAAMlqc,SAASyI,cAAc,OACjC75B,GAAUs7d,EAAK,CAAC,oBAAqB,IACrCt7d,GAAUs7d,EAAK,CAAC,UAAW,eAAgB,IACvCz/d,KAAK6zzB,kBAAkBlnD,gBAAgBn3a,UAAYx1V,KAAK6zzB,kBAAkBlnD,gBAAgBn3a,SAAS13V,OAAS,IAC5G2he,EAAIp7d,MAAMvB,WAAa9C,KAAK44B,OAAOunvB,cAAgB,MAEvD2pG,EAASvy2B,YAAYkod,EACzB,CACJ,EACAulZ,EAAYzm3B,UAAUwr3B,gBAAkB,WACpC,IAAIC,EAAYz01B,SAASpgB,cAAc,gBACnC602B,GACAA,EAAUnj3B,QAElB,EAEAm+2B,EAAYzm3B,UAAU0r3B,eAAiB,SAAUC,EAAgBl4F,GAC7D,IAAIpxkB,EAAQ5gN,KACZkq3B,EAAe1s3B,QAAO,SAAU2s3B,GAC5B,GAAIA,EAActtG,kBAAoB7rmB,GAAkBm5sB,EAAc/sG,cAAe,CAEjF,IAAe,IADH+sG,EAAc/sG,aAAa14wB,QAAQstxB,GAO3C,OAFApxkB,EAAMhoL,OAAOwhuB,qBAAmC,aAAI,eACpDx5iB,EAAMipqB,eAJNjpqB,EAAMqpqB,eAAeE,EAAc/sG,aAAc4U,EAOzD,CACJ,GACJ,EASAgzF,EAAYzm3B,UAAUwn3B,gBAAkB,SAAU7szB,GAC9C,IAAI0nJ,EAAQ5gN,KACZ,GAAIA,KAAK44B,OAAOo+vB,WAAY,CACxB,IAAKh3xB,KAAKo3Y,QACN,OAGAp3Y,KAAK6m3B,0BAEb,CACA,IAAIh9C,EAAoB7p0B,KAAK44B,OAAOi8vB,cAAc70xB,KAAK44B,OAAOmovB,iBAAiBqH,oBAC3ElrxB,EAAI8C,KAAK2o3B,cAAczvzB,GACvBl5D,KAAK44B,OAAOm1c,UACZ/te,KAAKip3B,WAAa/n3B,KAAK4D,IAAI5H,EAAEwkE,OAASmowB,EAAkBvm0B,KACpDpC,KAAK4D,IAAI9E,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,QAGtEtD,KAAKip3B,WAAa/r3B,EAAEwkE,MAAQmowB,EAAkBvm0B,KAC1CtD,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,KAEjEtD,KAAKkp3B,WAAahs3B,EAAEykE,MAAQkowB,EAAkB1m0B,IAC1CnD,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAelpxB,IAC7DnD,KAAKqm3B,gBAAiB,EACtB,IAAIvliB,GAAS,EACb,GAA+B,cAA3B9gV,KAAK8gxB,mBAAgE,eAA3B9gxB,KAAK8gxB,mBAAiE,qBAA3B9gxB,KAAK8gxB,mBAAuE,kBAA3B9gxB,KAAK8gxB,kBAAuC,CAClL,IAAIspG,OAAkB,EACtB,GAAIpq3B,KAAK44B,OAAO48nB,qBAAsB,CAClC,IAAI7ooB,EAAQ3sB,KAAK44B,OAAO2pqB,gBAAgB79rB,QAAQ1E,KAAK6zzB,mBACrDu2D,EAAkBpq3B,KAAK44B,OAAOm9qB,cAAcpprB,EAChD,MAEIy91B,EAAkBpq3B,KAAK44B,OAAOm9qB,cAAc/1sB,KAAK6zzB,kBAAkBlnyB,OAEvE,IAAIgjV,EAAY,CACZ7uB,OAAQA,EACRr5B,aAAcznT,KAAKy0xB,eACnBhjxB,KAAMzR,KAAK6zzB,kBACX1xyB,OAAQ+2C,EAAM/2C,OACdi/G,KAAMgpvB,GAEVpq3B,KAAK44B,OAAOwmc,QAAQ,UAAWzvH,GAC/B7uB,EAAS6uB,EAAkB,MAC/B,CAIA,GAHK7uB,GACD9gV,KAAKgp3B,mBAELhp3B,KAAKkl3B,gBAAkBll3B,KAAK8gxB,kBAAmB,CAE/C,GADA5ntB,EAAMiH,kBACD6wG,GAAkBhxK,KAAKy0xB,kBAAoBzjnB,GAAkBhxK,KAAKol3B,cAA4C,4BAA3Bpl3B,KAAK8gxB,mBAA8E,2BAA3B9gxB,KAAK8gxB,oBAA8E,iBAAzB9gxB,KAAK44B,OAAOygvB,WAA+Br5wB,KAAKijqB,YAAY45G,iBAoBlQ,IAnBI13b,EAAiBnlV,KAAKol3B,YAAYlh3B,eACvBG,MAAMknC,YAAY,WAAY,YACb,cAA3BvrC,KAAK8gxB,mBAAgE,iBAA3B9gxB,KAAK8gxB,mBAA0C9vmB,GAAkBhxK,KAAK6+Y,eAAkB7tO,GAAkBhxK,KAAK6+Y,eAA8C,IAA9Bz8Y,OAAOpC,KAAK6+Y,cAUlL7+Y,KAAK44B,OAAO06vB,yBAAsD,iBAA3BtzxB,KAAK8gxB,mBAAmE,kBAA3B9gxB,KAAK8gxB,mBAAoE,qBAA3B9gxB,KAAK8gxB,kBACvI9gxB,KAAK44B,OAAO43vB,UAAUn3vB,uBAAuB,iBAAiB,GAAG9hB,YAAYvX,KAAKy0xB,gBAGlFtvc,EAAe5tU,YAAYvX,KAAKy0xB,iBAbpCz0xB,KAAKy0xB,eAAernwB,WAAW,GAAGA,WAAW,GAAG/oB,MAAMknC,YAAY,MAAO45S,EAAejhV,cAAcqyc,UAAY,MAC9Gv2c,KAAK44B,OAAO06vB,yBAAsD,iBAA3BtzxB,KAAK8gxB,mBAAmE,kBAA3B9gxB,KAAK8gxB,mBAAoE,qBAA3B9gxB,KAAK8gxB,kBACvI9gxB,KAAK44B,OAAO43vB,UAAUn3vB,uBAAuB,iBAAiB,GAAG9hB,YAAYvX,KAAKy0xB,gBAGlFtvc,EAAejhV,cAAcqT,YAAYvX,KAAKy0xB,iBAWvB,qBAA3Bz0xB,KAAK8gxB,kBACa9gxB,KAAK44B,OAAOmovB,iBAAiBqH,mBAAmB36vB,iBAAiB,2BACvE,GAAGlW,YAAYvX,KAAKko3B,gBAGxC,GAAIlo3B,KAAK44B,OAAO06vB,0BAAuD,cAA3BtzxB,KAAK8gxB,mBAAgE,eAA3B9gxB,KAAK8gxB,mBAC5D,kBAA3B9gxB,KAAK8gxB,mBAAoE,qBAA3B9gxB,KAAK8gxB,mBAA2C,CAC9F,IAAIinG,EAAkB/n3B,KAAK44B,OAAOi8vB,cAAc70xB,KAAKyk3B,oBACjDnh3B,GAAS0tK,GAAkBz7I,SAASwK,KAAK7zB,YAAcqpB,SAASwK,KAAK7zB,UAAUisC,SAAS,YAAe,GAAK,EAC5G6vwB,EAAe,EAAIhozB,KAAK44B,OAAOguvB,gBAAgBqhC,oBAAsB3kzB,EACrE22zB,OAAS,EAETA,EADAj6zB,KAAK44B,OAAOm1c,UACH7se,KAAK4D,IAAIij3B,EAAgBzk3B,KAAO0kzB,EAAc,GAG9C9mzB,KAAK4D,IAAIij3B,EAAgBzk3B,KAAO0kzB,EAAc,GAEtDhozB,KAAK2l3B,iBAAoB3l3B,KAAK44B,OAAOm1c,YACtCksV,GAAkBj6zB,KAAK44B,OAAOmovB,iBAAiBplJ,cAAcngiB,WAC7Dx7F,KAAK2l3B,iBAAkB,GAE3B,IAAI9gD,EAAoB,EACxB7k0B,KAAK44B,OAAOwhuB,qBAAmC,kBAAIntrB,EACnD,IAAI9qD,OAAS,EACT+3yB,OAAS,EAETA,EADe,cAAfhhwB,EAAMzyD,MAAuC,eAAfyyD,EAAMzyD,MAAwC,aAAfyyD,EAAMzyD,KAC1DyyD,EAAsB,eAAE,GAAGyI,MAG3BzI,EAAMz1D,EAEfzD,KAAK44B,OAAOm1c,WACZ5rd,EAASoT,SAASujd,iBAAiB94e,KAAK44B,OAAOmovB,iBAAiBqH,mBAAmB94b,YAAa4qe,IACrF/1zB,UAAUC,SAAS,0BAC1B+d,EAASoT,SAASujd,iBAAiB94e,KAAK44B,OAAOmovB,iBAAiBqH,mBAAmB94b,YAAcntU,EAAoB,YAAG+3yB,IAI5H/3yB,EAASoT,SAASujd,iBAAiBmhV,EAAQC,GAE/C,IAiCImwD,EAjCAC,OAA4B,EAChC,GAAItq3B,KAAK44B,OAAO48nB,sBACZ,IAAKx1pB,KAAKsq3B,0BAENA,GADInliB,EAAiBnlV,KAAKol3B,YAAYlh3B,eACKA,cAC3ClE,KAAKsq3B,0BAA4BA,EACjCtq3B,KAAKuq3B,yBAA2Bvq3B,KAAKsq3B,0BAA0BtjiB,kBAMnE,GAFAsjiB,EAA4Btq3B,KAAK44B,OAAO+9uB,SAAS3voB,UAAUhnI,KAAK44B,OAAOs5uB,SAASxtwB,QAAQ1E,KAAK6zzB,oBAC7F7zzB,KAAKsq3B,0BAA4BA,EAC7Btq3B,KAAK44B,OAAOy5vB,mBACZ,GAAIryxB,KAAK6zzB,kBAAkBj5C,aAAe5pmB,GAAkBhxK,KAAK44B,OAAOygzB,WAAWr50B,KAAK6zzB,kBAAkBj5C,WAAWH,UAEjH,GADAz6wB,KAAKuq3B,yBAA2Bvq3B,KAAK44B,OAAOygzB,WAAWr50B,KAAK6zzB,kBAAkBj5C,WAAWH,QAAQzzb,aACpE,gBAAzBhnV,KAAK44B,OAAOygvB,UAAgE,IAAlCr5wB,KAAKuq3B,yBAE/C,IADA,IAAIr4F,EAAelyxB,KAAK44B,OAAOu5vB,cAAcnyxB,KAAK6zzB,kBAAkBj5C,WAAWH,QACxEyX,EAAatX,YAChBsX,EAAelyxB,KAAK44B,OAAOu5vB,cAAcD,EAAatX,WAAWH,QACjEz6wB,KAAKuq3B,yBAA2Bvq3B,KAAK44B,OAAOygzB,WAAWnnD,EAAqB,QAAGlrc,iBAItF,CACD,IAAI7B,EAAiBnlV,KAAKol3B,YAAYlh3B,cACtClE,KAAKsq3B,0BAA4BnliB,EAAejhV,cAChDlE,KAAKuq3B,yBAA2Bvq3B,KAAKsq3B,0BAA0BtjiB,YACnE,MAGAhnV,KAAKuq3B,yBAA2Bvq3B,KAAKsq3B,0BAA0BtjiB,aAOvE,GAHI7kU,IACAko2B,EAAoBvpZ,GAAQ3+c,EAAQ,MAAQ84E,KAE5CovxB,EAAmB,CACnB,IAAIG,OAA4B,EAE5BA,EADAxq3B,KAAK44B,OAAO48nB,qBACgBx1pB,KAAK44B,OAAO+9uB,SAAS3voB,UAAUxpI,QAAO,SAAUiU,GACxE,OAAOA,EAAKrB,aAAa,mBAAqBi62B,EAAkBj62B,aAAa,gBACjF,IAAG,GAGyBpQ,KAAK44B,OAAO+9uB,SAAS3voB,UAAU/lI,SAASop3B,EAAkBj62B,aAAa,mBAEvGpQ,KAAKmp3B,kBAAkBqB,GACvBxq3B,KAAKqp3B,iBAAiBmB,IACjBx5sB,GAAkBw5sB,IAA8BA,EAA0Bp62B,aAAa,cAAgBpQ,KAAKsq3B,0BAA0Bl62B,aAAa,cAChJk+qB,GAAansqB,EAAQ,4BACzBniB,KAAK44B,OAAOwhuB,qBAAmC,aAAI,UACnDp6vB,KAAK6p3B,gBAET,IAAIY,EAAOzq3B,KAAK44B,OACZ8x1B,EAAS,EACTC,EAAaF,EAAKv6J,cAClBlwtB,KAAK44B,OAAOs3rB,cAAcz2pB,QAAQutR,aAAe,EACjD4jiB,EAAiB5q3B,KAAK44B,OAAOi8vB,cAAc41F,EAAKhxzB,SAChDsxrB,EAAgB0/H,EAAK9zG,SAAS3nE,mBAAmBhoX,aAAe4jiB,EAAezn3B,IAAMwn3B,EACrFlvxB,EAAYgvxB,EAAK9zG,SAASvpE,aAAatmX,kBAAkBrrP,UACxDu1E,GAAkBw5sB,KACnB3lD,EAAoB2lD,EAA0Bj0a,UAAY96W,GAQ9D,IAEI7pC,IAPA84zB,EADA1q3B,KAAK44B,OAAO48nB,qBACHx1pB,KAAK44B,OAAOi8vB,cAAc21F,GAA2Brn3B,IAGrD0h0B,EAAoB95E,GAER/qvB,KAAKuq3B,yBACDG,GACH,EACtBG,EAAgBH,EAAS94zB,EACzBk5zB,EAAmBD,EAAgBj5zB,EACnCm5zB,EAAmBD,EAAmBl5zB,EACtCo5zB,EAAuB,cAAf9xzB,EAAMzyD,KAAwByyD,EAAMyI,MAAWqvG,GAAkB93G,EAAsB,gBAAyC,KAAnCA,EAAsB,eAAE,GAAGyI,MAChIspzB,EAAeD,GAAQH,EACvBK,EAAsBF,EAAOH,GAAiBG,GAAQF,EACtDK,EAAsBH,EAAOF,GAAoBE,GAAQD,EAC7D,GAAIE,GAAgBC,GAAsBC,EAAoB,CAC1D,IAAIhhH,OAAa,EACjB,GAAInqwB,KAAK44B,OAAO48nB,qBAAsB,CAC9B7ooB,EAAQ3sB,KAAK44B,OAAO+9uB,SAAS3voB,UAAUtiI,QAAQ8l3B,GACnDrgH,EAAanqwB,KAAK44B,OAAOm9qB,cAAcpprB,EAC3C,MAEIw9uB,EAAanqwB,KAAK44B,OAAOm9qB,cAAc90sB,SAASup3B,EAA0Bp62B,aAAa,mBAE3F,IAAIy0rB,EAAW92e,GAAS,WAAYo8iB,GAChCihH,EAAwBpr3B,KAAK44B,OAAOs5uB,SAASrtE,GAC7Ct1nB,GAAU,EACe,iBAAzBvvE,KAAK44B,OAAOygvB,UAAgCr5wB,KAAK6zzB,kBAAkBh3C,iBAAoBuuG,EAAsBvuG,iBAAoB7rmB,GAAkBo6sB,EAAsBxwG,aAAe56wB,KAAK6zzB,kBAAkBj5C,WAAWH,SAAW2wG,EAAsBxwG,WAAWH,SACtQlrsB,GAAU,GAEV67yB,GACApr3B,KAAKiq3B,eAAe,CAACjq3B,KAAK6zzB,mBAAoBu3D,GAE9C77yB,IACI07yB,GAAqE,YAArDjr3B,KAAK44B,OAAOwhuB,qBAAmC,eAC/Dp6vB,KAAK44B,OAAOwhuB,qBAAmC,aAAI,QACnDp6vB,KAAK2p3B,oBACL3p3B,KAAK+p3B,kBACL/p3B,KAAKwp3B,0BACLxp3B,KAAK0p3B,kBAAkBv/G,IAEvB+gH,GAA2E,YAArDlr3B,KAAK44B,OAAOwhuB,qBAAmC,eACrEp6vB,KAAK44B,OAAOwhuB,qBAAmC,aAAI,QACnDp6vB,KAAKwp3B,0BACLxp3B,KAAKyp3B,iBAAiBt/G,EAAW7juB,UAAU,EAAM,kBAEjD6k1B,GAA2E,YAArDnr3B,KAAK44B,OAAOwhuB,qBAAmC,eACrEp6vB,KAAK44B,OAAOwhuB,qBAAmC,aAAI,QACnDp6vB,KAAKwp3B,0BACLxp3B,KAAK+p3B,kBACL/p3B,KAAK2p3B,oBACL3p3B,KAAKmp3B,kBAAkBqB,GACvBxq3B,KAAK0p3B,kBAAkBc,IAGnC,CACJ,CACJ,CACA,IAAI5xjB,EAAS,CACTkoB,QAAQ,EACRj0E,YAAa,iBACbi0gB,kBAAmB9gxB,KAAK8gxB,kBACxBrvwB,KAAMzR,KAAK6zzB,oBAEY,IAAvB7zzB,KAAK09wB,eACL9kd,EAAO/rD,YAAc,gBAEzB7sQ,KAAK44B,OAAOwmc,QAAQ,cAAexmK,GAAQ,SAAUvuL,GACjD,IAAiC,4BAA7BuuL,EAAOkod,mBAAgF,2BAA7Blod,EAAOkod,mBACjC,iBAA7Blod,EAAOkod,mBAAqE,kBAA7Blod,EAAOkod,mBACzB,qBAA7Blod,EAAOkod,mBAAyE,cAA7Blod,EAAOkod,mBAAkE,eAA7Blod,EAAOkod,mBAAmE,kBAA7Blod,EAAOkod,mBAAsE,qBAA7Blod,EAAOkod,qBACtMlgkB,EAAMhoL,OAAO02vB,eAAgB,EACzB1ukB,EAAMhoL,OAAOwjvB,gBAAkBx7jB,EAAMhoL,OAA8B,sBAAE,SAAS,CAC1EgoL,EAAMhoL,OAAOwjvB,eAA4B,aACzCx7jB,EAAMhoL,OAAOwjvB,eAA4B,cAE7C,IAAIp6jB,EAAS,CAAC,GACkD,IAA5DpB,EAAMhoL,OAAOwjvB,eAAkC,kBAAEt+wB,QAQ5C8iN,EAAMhoL,OAAO02qB,WAAwB,eAP1Cttf,EAAwB,gBAAI,GAC5BA,EAAe,OAAI42G,EAAOkod,kBAC1BlgkB,EAAMhoL,OAAOwjvB,eAAqC,uBAClDx7jB,EAAMhoL,OAAOwjvB,eAAkC,kBAAEx7jB,EAAMhoL,OAAOwjvB,eAAkC,kBAAEt+wB,OAAS,GAAKkkN,EAChHpB,EAAMhoL,OAAO02qB,WAAwB,aAAI,EACzC1uf,EAAMhoL,OAAOwjvB,eAA+B,eAAI,GAUxD,EAECprmB,GAAkB4vC,EAAMhoL,OAAOq0pB,mBAAqE,YAAhDrse,EAAMhoL,OAAOq0pB,iBAAiBC,eAA+Btse,EAAMhoL,OAAO02vB,cAC/H1ukB,EAAMhoL,OAAOu0pB,cAERvse,EAAMhoL,OAAO02vB,eAClB1ukB,EAAMhoL,OAAOo8lB,eAEE,IAAf3qf,EAAIy2M,QACJlgI,EAAM+lqB,qBAAqBztzB,GAAO,EAE1C,GACJ,MACUl5D,KAAK44B,OAAOo+vB,YAAeh3xB,KAAK8gxB,mBACtC9gxB,KAAKym3B,yBAAyBvtzB,EAEtC,EASA8rzB,EAAYzm3B,UAAUoo3B,qBAAuB,SAAUzp3B,EAAG2/0B,GACtD,IAAIj8nB,EAAQ5gN,KACRorE,EAAO,CAAC,EACRkssB,EAAct3wB,KAAK44B,OAAOmovB,iBAAiBkW,kBAAkBj3xB,KAAKyk3B,oBACtE,GAA+B,OAA3Bzk3B,KAAK6zzB,kBAA4B,CAGjC,GAFAzovB,EAAKigzB,cAAgBrr3B,KAAK6zzB,kBAAkBlnD,gBAC5CvhsB,EAAK35D,KAAOzR,KAAK6zzB,kBACY,iBAAzB7zzB,KAAK44B,OAAOygvB,UAAmD,IAApBjusB,EAAK35D,KAAKw/D,MACrD,OAiCJ,GA/BA7F,EAAKkssB,YAAcA,EACnBlssB,EAAK01sB,kBAAoB9gxB,KAAK8gxB,kBAC9B11sB,EAAKg7yB,iBAAmBpm3B,KAAKom3B,iBAC7Bh7yB,EAAK01Q,QAAS,EACd11Q,EAAKuwnB,aAAe37rB,KAAKunF,aACzBnc,EAAKsysB,aAAe19wB,KAAK09wB,aACzB19wB,KAAKom3B,iBAAmBh7yB,EAAKg7yB,iBAC7Bpm3B,KAAKigV,cAAgB70Q,EAAKjpD,OAAS2+c,GAAQ5je,EAAEilB,OAAQ,0BACrDniB,KAAKsr3B,0BAA0Bpu3B,GAC1B8C,KAAKur3B,UACNvr3B,KAAKur3B,QAAU7p3B,GAAO,GAAI,GAAI,CAAC1B,KAAK6zzB,oBAAoB,GAAM,IAEnC,qBAA3B7zzB,KAAK8gxB,kBACL9gxB,KAAKwr3B,sBAAsBtu3B,GAEK,iBAA3B8C,KAAK8gxB,kBACV9gxB,KAAKyr3B,mBAAmBvu3B,GAEQ,kBAA3B8C,KAAK8gxB,mBAAoE,mBAA3B9gxB,KAAK8gxB,kBACxD9gxB,KAAK0r3B,oBAAoBxu3B,GAEO,eAA3B8C,KAAK8gxB,mBAAiE,cAA3B9gxB,KAAK8gxB,mBAC1B,kBAA3B9gxB,KAAK8gxB,mBAAoE,qBAA3B9gxB,KAAK8gxB,kBACnD9gxB,KAAK2r3B,eAAezu3B,GAEY,2BAA3B8C,KAAK8gxB,mBACiB,4BAA3B9gxB,KAAK8gxB,oBACL9gxB,KAAK4r3B,oCAAoC1u3B,GACzC8C,KAAK6r3B,uBAAuB3u3B,GAC5B8C,KAAK8r3B,iBAEL9r3B,KAAK44B,OAAO06vB,yBAAsD,iBAA3BtzxB,KAAK8gxB,mBAAmE,kBAA3B9gxB,KAAK8gxB,mBAAoE,qBAA3B9gxB,KAAK8gxB,kBAA0C,CACjL,IAAItsS,EAAmBx0e,KAAK44B,OAAOi8vB,cAAc70xB,KAAK44B,OAAO43vB,WACzDvgS,EAAcjwf,KAAK2o3B,cAAczr3B,GACjCkY,EAAW,CAAEjS,IAAK8sf,EAAYtub,MAAOr+D,KAAM2sf,EAAYvub,OACvDlpC,EAAM,CAAEl1B,KAAMpC,KAAK4D,IAAIsQ,EAAS9R,KAAOkxe,EAAiBlxe,MAAOH,IAAKiS,EAASjS,IAAMqxe,EAAiBrxe,KACxG,GAA6B,iBAAzBnD,KAAK44B,OAAOygvB,UAA+Br5wB,KAAK44B,OAAOy5vB,mBAAoB,CAC3E,IAAI8S,EAAenlyB,KAAK44B,OAAOu5vB,cAAcnyxB,KAAK6zzB,kBAAkBj5C,WAAWH,QAC/E,IAAKz6wB,KAAK44B,OAAO81vB,qBAAuB1uxB,KAAK6zzB,kBAAkBj5C,aAAeuqB,EAAa12a,SAAU,CACjG,IAAIwoU,EAAe,EACnB,GAAIh2rB,SAASjB,KAAKol3B,YAAmB,MAAEz8e,WAAa3oY,KAAK44B,OAAO0+F,UAAW,CACvE,IAAK,IAAIn6H,EAAI,EAAGA,EAAIgoyB,EAAa/nB,aAAat/wB,QACtCqnyB,EAAa/nB,aAAajgxB,GAAGwvwB,gBAAgB8N,SAAWz6wB,KAAK6zzB,kBAAkBlnD,gBAAgB8N,OADjDt9wB,IAE9C85rB,GAA8Bj3rB,KAAK44B,OAAO0+F,UAMlD9+F,EAAIr1B,IAAMq1B,EAAIr1B,IAAM8zrB,CACxB,CACJ,CACJ,CACAj3rB,KAAK8sqB,SAAWt0oB,EAAIr1B,IACpB,IAAI82zB,OAAS,EAEE,cAAX/8zB,EAAEuJ,MAAmC,eAAXvJ,EAAEuJ,MAAoC,aAAXvJ,EAAEuJ,MACvDwzzB,EAAS/8zB,EAAkB,eAAE,GAAGwkE,MACvBxkE,EAAkB,eAAE,GAAGykE,QAGhCs4vB,EAAS/8zB,EAAEwkE,MACFxkE,EAAEykE,OAEX3hE,KAAK44B,OAAOm1c,UACZ/te,KAAK6sqB,UAAYr0oB,EAAIl1B,KAAOpC,KAAK4D,IAAIm1zB,EAAUj6zB,KAAK44B,OAAOi8vB,cAAc70xB,KAAKyk3B,oBAAoBnh3B,OAAqC,IAA3BtD,KAAKil3B,kBAA0BhrD,EAASj6zB,KAAKil3B,kBAAoB,GAG7Kjl3B,KAAK6sqB,UAAYr0oB,EAAIl1B,MAAQ22zB,EAASj6zB,KAAK44B,OAAOi8vB,cAAc70xB,KAAKyk3B,oBAAoBnh3B,OAAoC,IAA3BtD,KAAKil3B,kBAA0BhrD,EAASj6zB,KAAKil3B,kBAAoB,GAEzI,GAA1Bjl3B,KAAKil3B,oBACAjl3B,KAAK44B,OAAOm1c,WAIb/te,KAAK6sqB,UAAY7sqB,KAAK6sqB,UAAa7sqB,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,KACvB,GAAjEtD,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,OACzDtD,KAAK6sqB,UAAY7sqB,KAAK6sqB,UAAY,KALtC7sqB,KAAK6sqB,UAAY7sqB,KAAK6sqB,UAAY7sqB,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,MASnGtD,KAAKil3B,kBAAoBhrD,CAC7B,MAEIj6zB,KAAK6sqB,UAAY7sqB,KAAK6zzB,kBAAkBlnD,gBAAgBrpwB,KAE5DtD,KAAK+r3B,kBACL/r3B,KAAKgs3B,mBACLhs3B,KAAK4l3B,aAA2B,cAAX1o3B,EAAEuJ,MAAmC,eAAXvJ,EAAEuJ,MAAoC,aAAXvJ,EAAEuJ,KAAuBvJ,EAAkB,eAAE,GAAGwkE,MAAQxkE,EAAEwkE,MACpI1hE,KAAK6l3B,YAAYvB,cAActk3B,KAAK09wB,cAChCm/D,GACA780B,KAAKis3B,oBAAoB/u3B,GAE7B8C,KAAK44B,OAAOwmc,QAAQ,iBAAkBh0Z,GAAM,SAAUi/D,GAC9CA,EAAIy2M,QAAsC,OAA5BlgI,EAAMizmB,oBACpBjzmB,EAAM2lqB,iBAAkB,EACxB782B,GAAMk3M,EAAMizmB,kBAAkBlnD,gBAAiBtioB,EAAIsxjB,cAE3D,GACJ,CACJ,EAQAqpL,EAAYzm3B,UAAU+s3B,0BAA4B,SAAUpyzB,GACxD,IAAI2wwB,EAAoB7p0B,KAAK44B,OAAOi8vB,cAAc70xB,KAAK44B,OAAOmovB,iBAAiBqH,oBAC3ElrxB,EAAI8C,KAAK2o3B,cAAczvzB,GACvB+xmB,EAAsBjrqB,KAAK44B,OAAO6gC,QAAQqna,QAAQ,mBACtD,GAAImqM,EAAqB,CACrB,IAAI29M,EAAQzm3B,WAAWQ,iBAAiBsoqB,GAAqBvopB,MAC7DxlB,EAAEwkE,MAAQxkE,EAAEwkE,MAAQknzB,EACpB1r3B,EAAEykE,MAAQzkE,EAAEykE,MAAQinzB,CACxB,EACI1r3B,EAAEwkE,OAASxkE,EAAEykE,SACT3hE,KAAK44B,OAAOm1c,UACZ/te,KAAKip3B,WAAa/n3B,KAAK4D,IAAI5H,EAAEwkE,OAASmowB,EAAkBvm0B,KACpDpC,KAAK4D,IAAI9E,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,QAGtEtD,KAAKip3B,WAAa/r3B,EAAEwkE,MAAQmowB,EAAkBvm0B,KAC1CtD,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,KAEjEtD,KAAKkqqB,iBAAmBlqqB,KAAKip3B,WAC7Bjp3B,KAAKkp3B,WAAahs3B,EAAEykE,MAAQkowB,EAAkB1m0B,IAC1CnD,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAelpxB,KAEjE,IAAI+o3B,EAAkD,2BAA3Bls3B,KAAK8gxB,mBACD,4BAA3B9gxB,KAAK8gxB,kBAET,IAAM9gxB,KAAK6zzB,kBAAkBlnD,gBAAgBppwB,MAAQ,GAAKvD,KAAK6zzB,kBAAkBlnD,gBAAgBiB,eAA6C,qBAA3B5twB,KAAK8gxB,mBAC/D,IAApD9gxB,KAAK6zzB,kBAAkBlnD,gBAAgBhlS,UAAsE,MAApD3ne,KAAK6zzB,kBAAkBlnD,gBAAgBhlS,WACjGukZ,EAAqB,CACrB,IAAIzmyB,EAAS,EAETA,EADAzlF,KAAK44B,OAAOm1c,UACH7se,KAAK4D,IAAI5D,KAAK4D,IAAI9E,KAAKip3B,YAAc/n3B,KAAK4D,IAAI9E,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,MAC5Gum0B,EAAkBvm0B,MAGbtD,KAAKip3B,WAAajp3B,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,KAChFum0B,EAAkBvm0B,KAE1B,IAAIwkF,EAAS9nF,KAAKkp3B,WAAalp3B,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAelpxB,IACpF0m0B,EAAkB1m0B,IACjBsiF,EAAS,GACVokvB,EAAkBvm0B,KAAOtD,KAAK44B,OAAOmovB,iBAAiBqH,mBAAmB94b,aACzEtvV,KAAKms3B,WAAans3B,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,KAC3EtD,KAAKos3B,iBAAiB,UAEhB3myB,EAAS,GACfokvB,EAAkBvm0B,KAAOtD,KAAK44B,OAAOmovB,iBAAiBqH,mBAAmB94b,aAAetvV,KAAK44B,OAAOm1c,WAA8E,GAAjE/te,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,MAC1KtD,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,MAAQ,EACjEtD,KAAKms3B,WAAans3B,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,KAC3EtD,KAAKos3B,iBAAiB,UAEhB3myB,EAAS,GAAMokvB,EAAkBvm0B,MACvCtD,KAAKms3B,WAAans3B,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,KAC3EtD,KAAKos3B,iBAAiB,SAEftkyB,EAAS,GAChB+hvB,EAAkB1m0B,IAAMnD,KAAK44B,OAAOmovB,iBAAiBqH,mBAAmBphc,cACxEhnV,KAAKms3B,WAAans3B,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAelpxB,IAC3EnD,KAAKos3B,iBAAiB,WAEftkyB,EAAS,GAAM+hvB,EAAkB1m0B,KACxCnD,KAAKms3B,WAAans3B,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAelpxB,IAC3EnD,KAAKos3B,iBAAiB,QAGtBps3B,KAAKqs3B,iBAEb,MAEIrs3B,KAAKqs3B,iBAEb,EAQArH,EAAYzm3B,UAAU6t3B,iBAAmB,SAAUxvyB,GAC/C,IAAIgkI,EAAQ5gN,KACZA,KAAKqs3B,kBACL,IAAI78F,EAAW,EACfxvxB,KAAK2rpB,YAAchnpB,OAAO6zM,aAAY,WAKlC,IAJoC,GAAhCt3M,KAAK2tG,KAAK+xG,EAAMurqB,cAChB38F,GAAY,EACZ5ukB,EAAMurqB,WAAajr3B,KAAK4D,IAAI87M,EAAMurqB,aAEpB,UAAdvvyB,EAAuB,CACvB,IAAI0vyB,EAAgB1rqB,EAAMhoL,OAAOqovB,6BAA+BrgkB,EAAMhoL,OAAOy9uB,eAAeoX,mBAAqB7skB,EAAMhoL,OAAOy9uB,eAAe8Y,mBAC7IvukB,EAAMurqB,WAAcvrqB,EAAMurqB,WAAa,GAAMG,EACzCA,EAAiB1rqB,EAAMurqB,WAAa,CAC5C,MAEIvrqB,EAAMurqB,WADa,WAAdvvyB,EACcgkI,EAAMurqB,WAAa,EAGlBvrqB,EAAMurqB,WAAa,EAAK,EAAI,EAAKvrqB,EAAMurqB,WAAa,EAE1D,WAAdvvyB,GAAwC,QAAdA,EAC1BgkI,EAAMhoL,OAAOmovB,iBAAiBC,aAAauO,aAAa3ukB,EAAMurqB,YAG9DvrqB,EAAMhoL,OAAOmovB,iBAAiBC,aAAa7rC,cAAcv0hB,EAAMurqB,WAAY38F,GAE/C,2BAA5B5ukB,EAAMkgkB,mBACyB,4BAA5BlgkB,EAAMkgkB,mBACTlgkB,EAAMkrqB,eAEd,GAAG,EACP,EAOA9G,EAAYzm3B,UAAU8t3B,gBAAkB,WACpC1n3B,OAAO8zM,cAAcz4M,KAAK2rpB,aAC1B3rpB,KAAK2rpB,YAAc,IACvB,EASAq5N,EAAYzm3B,UAAUot3B,eAAiB,SAAUzu3B,GAC7C,IAAIm4E,EAAOr1E,KAAK6zzB,kBAAkBlnD,gBAC9B2/G,EAAgBts3B,KAAK44B,OAAOqovB,6BAA+BjhxB,KAAK44B,OAAOy9uB,eAAeoX,mBAAqBztxB,KAAK44B,OAAOy9uB,eAAe8Y,mBACtIo9F,EAAkB,EACtB,GAAIvs3B,KAAKyk3B,mBAAmBtg3B,UAAUC,SAAS,yBAC1CpE,KAAKyk3B,mBAAmBtg3B,UAAUC,SAAS,mBAAoB,CAChE,IAAIoxV,EAAWx1V,KAAK6zzB,kBAAkBlnD,gBAAgBn3a,SAAS7zV,KAAI,SAAUzE,GAAK,OAAQkkP,IAAS,CAAC,EAAGlkP,EAAK,IACxGspT,EAAUgvC,EAASx1V,KAAK09wB,cACxB19wB,KAAK6o3B,WAAa7o3B,KAAKip3B,YACvBsD,EAAkBv7sB,GAAkBhxK,KAAKws3B,mBACpCxs3B,KAAK6o3B,WAAa7o3B,KAAKip3B,WAAejp3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WACzEjp3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WAC9BzikB,EAAQljT,KAAOkjT,EAAQljT,KAAOip3B,IAG9BA,EAAkBv7sB,GAAkBhxK,KAAKws3B,mBACpCxs3B,KAAKip3B,WAAajp3B,KAAK6o3B,WAAe7o3B,KAAKip3B,WAAajp3B,KAAKws3B,kBAClExs3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WAC9BzikB,EAAQljT,KAAOkjT,EAAQljT,KAAOip3B,GAElC,IAAIE,EAAkBj3hB,EAASx1V,KAAK09wB,aAAe,GAC/CgvG,EAAcl3hB,EAASx1V,KAAK09wB,aAAe,GAC3Cp6wB,OAAO,EAEPA,EADAtD,KAAKyk3B,mBAAmBtg3B,UAAUC,SAAS,wBACpCoiT,EAAQljT,KAAQmp3B,EAAgBnp3B,KAAOmp3B,EAAgBlp3B,MAAUkp3B,EAAgBnp3B,KAAOmp3B,EAAgBlp3B,MACzGijT,EAAQjjT,MAAQijT,EAAQljT,KAASop3B,EAAYpp3B,KAASop3B,EAAYpp3B,KAAOkjT,EAAQjjT,MAAQijT,EAAQljT,KAGhGkjT,EAAQljT,KAAQmp3B,EAAgBnp3B,KAAOmp3B,EAAgBlp3B,MAAUkp3B,EAAgBnp3B,KAAOmp3B,EAAgBlp3B,MAC1G8xE,EAAK/xE,KAAOkjT,EAAQjjT,MAAQijT,EAAQljT,MAASgp3B,EACzCA,EAAgB9lkB,EAAQjjT,MAASijT,EAAQljT,KAEtDkjT,EAAQljT,KAAOA,EACftD,KAAK44B,OAAOy2uB,eAAe,WAAY75a,EAAUngR,GAAM,GACvDr1E,KAAK44B,OAAO02uB,cAAcC,kBAAkBvvwB,KAAK6zzB,kBAAmB,WACxE,KACK,CACG7zzB,KAAK6o3B,WAAa7o3B,KAAKip3B,YACvBsD,EAAkBvs3B,KAAK6o3B,WAAa7o3B,KAAKip3B,YACnB,GAClBjp3B,KAAK44B,OAAOy2uB,eAAe,OAAQrvwB,KAAKunF,aAAajkF,KAAOip3B,EAAiBl3yB,GAAM,IAIvFk3yB,EAAkBvs3B,KAAKip3B,WAAajp3B,KAAK6o3B,WACzC7o3B,KAAK44B,OAAOy2uB,eAAe,OAAQrvwB,KAAKunF,aAAajkF,KAAOip3B,EAAiBl3yB,GAAM,IAEnF/xE,EAAO+xE,EAAK/xE,KAAO,EAAI,EAAK+xE,EAAK/xE,KAAO+xE,EAAK9xE,OAAU+o3B,EACtDA,EAAgBj3yB,EAAK9xE,MAAS8xE,EAAK/xE,KACxCtD,KAAK44B,OAAOy2uB,eAAe,OAAQ/rwB,EAAM+xE,GAAM,EACnD,CACJ,EASA2vyB,EAAYzm3B,UAAUit3B,sBAAwB,SAAUtu3B,GACpD,IAAIm4E,EAAOr1E,KAAK6zzB,kBAAkBlnD,gBAC9BggH,EAAiB,EACjB3s3B,KAAK6o3B,WAAa7o3B,KAAKip3B,WACnBjp3B,KAAKip3B,WAAa5zyB,EAAK/xE,MACtBtD,KAAKip3B,WAAc5zyB,EAAK/xE,KAAO+xE,EAAK9xE,OAAW8xE,EAAK/xE,KAAO,GAC5Dqp3B,EAAiB3s3B,KAAKip3B,WAAa5zyB,EAAK/xE,KACxCtD,KAAK44B,OAAOy2uB,eAAe,gBAAiBs9G,EAAgBt3yB,GAAM,IAG9Dr1E,KAAKip3B,YAAe5zyB,EAAK/xE,KAAO+xE,EAAK9xE,MACrCvD,KAAK44B,OAAOy2uB,eAAe,gBAAiBh6rB,EAAK9xE,MAAO8xE,GAAM,GAG9Dr1E,KAAK44B,OAAOy2uB,eAAe,gBAAiB,EAAGh6rB,GAAM,GAKzDr1E,KAAKip3B,WAAa5zyB,EAAK/xE,MACtBtD,KAAKip3B,WAAc5zyB,EAAK/xE,KAAO+xE,EAAK9xE,OACrCop3B,EAAiB3s3B,KAAKip3B,WAAa5zyB,EAAK/xE,KACxCtD,KAAK44B,OAAOy2uB,eAAe,gBAAiBs9G,EAAgBt3yB,GAAM,IAG9Dr1E,KAAKip3B,YAAc5zyB,EAAK/xE,KACxBtD,KAAK44B,OAAOy2uB,eAAe,gBAAiB,EAAGh6rB,GAAM,GAGrDr1E,KAAK44B,OAAOy2uB,eAAe,gBAAiBh6rB,EAAK9xE,MAAO8xE,GAAM,GAI1E,IAAIu3yB,EAAav3yB,EAAK0xsB,cAAgB1xsB,EAAK9xE,MACvC8xE,EAAK9xE,MAAQ8xE,EAAK0xsB,cACtB6lG,EAAav3yB,EAAK0xsB,cAAgB,EAAI,EAAI1xsB,EAAK0xsB,cAC/C/mxB,KAAK44B,OAAOy2uB,eAAe,gBAAiBu9G,EAAYv3yB,GAAM,GAC9D,IAAInL,EAAOmL,EAAK9xE,MAAQ8xE,EAAK0xsB,cAEzB/mxB,KAAK6s3B,qBADL3izB,GAAQ,EACoB,EAAIA,EAGJ,CAEpC,EAQA86yB,EAAYzm3B,UAAUkt3B,mBAAqB,SAAUvu3B,GACjD,IAAIm4E,EAAOr1E,KAAK6zzB,kBAAkBlnD,gBAC9B4/G,EAAkB,EAClBvs3B,KAAKyk3B,mBAAmBtg3B,UAAUC,SAAS,uBAC3CpE,KAAK8s3B,0BAA0Bz3yB,IAG3Br1E,KAAK6o3B,WAAa7o3B,KAAKip3B,WACnBjp3B,KAAKip3B,WAAc5zyB,EAAK/xE,KAAO+xE,EAAK9xE,OACpCgp3B,EAAkBvs3B,KAAK6o3B,WAAa7o3B,KAAKip3B,WACrC5zyB,EAAK/xE,KAAO,IACZtD,KAAK44B,OAAOy2uB,eAAe,OAAQrvwB,KAAKunF,aAAajkF,KAAOip3B,EAAiBl3yB,GAAM,GACnFr1E,KAAK44B,OAAOy2uB,eAAe,QAASrvwB,KAAKunF,aAAahkF,MAAQgp3B,EAAiBl3yB,GAAM,KAIrFr1E,KAAKip3B,WAAc5zyB,EAAK/xE,KAAO+xE,EAAK9xE,QACpCgp3B,EAAkBvs3B,KAAK6o3B,WAAa7o3B,KAAKip3B,WACzCjp3B,KAAK44B,OAAOy2uB,eAAe,OAAQrvwB,KAAKunF,aAAajkF,KAAOip3B,EAAiBl3yB,GAAM,GACnFr1E,KAAK44B,OAAOy2uB,eAAe,QAAS,EAAGh6rB,GAAM,IAKjDr1E,KAAKip3B,WAAc5zyB,EAAK/xE,KAAO+xE,EAAK9xE,OACpCgp3B,EAAkBvs3B,KAAKip3B,WAAajp3B,KAAK6o3B,WACpCxzyB,EAAK/xE,KAAS+xE,EAAK/xE,KAAO+xE,EAAK9xE,OAC9BvD,KAAKunF,aAAajkF,KAAOip3B,GAAqBvs3B,KAAKunF,aAAajkF,KAAOtD,KAAKunF,aAAahkF,QAC3FvD,KAAK44B,OAAOy2uB,eAAe,OAAQrvwB,KAAKunF,aAAajkF,KAAOip3B,EAAiBl3yB,GAAM,GACnFr1E,KAAK44B,OAAOy2uB,eAAe,QAASrvwB,KAAKunF,aAAahkF,MAAQgp3B,EAAiBl3yB,GAAM,MAIzFk3yB,EAAkBvs3B,KAAKip3B,WAAajp3B,KAAK6o3B,WACzC7o3B,KAAK44B,OAAOy2uB,eAAe,OAAQrvwB,KAAKunF,aAAajkF,KAAOip3B,EAAiBl3yB,GAAM,GACnFr1E,KAAK44B,OAAOy2uB,eAAe,QAAS,EAAGh6rB,GAAM,IAGrDr1E,KAAK+s3B,mBAAmB7v3B,EAAGm4E,GAC3Br1E,KAAK44B,OAAOy2uB,eAAe,OAASrvwB,KAAKunF,aAAajkF,KAAOtD,KAAKunF,aAAahkF,MAAQ8xE,EAAK9xE,MAAQ8xE,GAAM,GAElH,EACA2vyB,EAAYzm3B,UAAUuu3B,0BAA4B,SAAUz3yB,GACxD,IAAImgR,EAAWx1V,KAAK6zzB,kBAAkBlnD,gBAAgBn3a,SAAS7zV,KAAI,SAAUzE,GAAK,OAAQkkP,IAAS,CAAC,EAAGlkP,EAAK,IACxGspT,EAAUgvC,EAASx1V,KAAK09wB,cACxB6uG,EAAkB,EAEtB,GAAIvs3B,KAAK6o3B,WAAa7o3B,KAAKip3B,WACvB,GAAIjp3B,KAAKip3B,WAAc5zyB,EAAK/xE,KAAOkjT,EAAQjjT,MAAQijT,EAAQljT,MAKvD,GAJAip3B,EAAkBv7sB,GAAkBhxK,KAAKws3B,mBACpCxs3B,KAAK6o3B,WAAa7o3B,KAAKip3B,WAAejp3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WACzEjp3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WAE1BzikB,EAAQljT,KAAO,GAGf,GAFAkjT,EAAQljT,KAAOkjT,EAAQljT,KAAOip3B,EAC9B/lkB,EAAQjjT,MAAQijT,EAAQjjT,MAAQgp3B,EACN,IAAtBvs3B,KAAK09wB,aAAoB,CACzB,IAAI+uG,EAAkBj3hB,EAASx1V,KAAK09wB,aAAe,GACnD,GAAKrosB,EAAK/xE,KAAOkjT,EAAQljT,KAAS+xE,EAAK/xE,KAAOmp3B,EAAgBnp3B,KAAOmp3B,EAAgBlp3B,MAAQ,CACzF,IAAIumV,EAAcz0Q,EAAK/xE,KAAOmp3B,EAAgBnp3B,KAAOmp3B,EAAgBlp3B,OAAU8xE,EAAK/xE,KAAOkjT,EAAQljT,MACnGkjT,EAAQjjT,OAASumV,EACjBtjC,EAAQljT,KAAOkjT,EAAQljT,KAAOwmV,CAClC,CACJ,OAEC,GAAItjC,EAAQljT,MAAQ,GAA2B,IAAtBtD,KAAK09wB,aAAoB,CACnD19wB,KAAK44B,OAAOy2uB,eAAe,OAAQh6rB,EAAK/xE,KAAOip3B,EAAiBl3yB,GAAM,GACtEr1E,KAAK44B,OAAOy2uB,eAAe,QAASh6rB,EAAK9xE,MAAQgp3B,EAAiBl3yB,GAAM,GACxEmxO,EAAQjjT,MAAQijT,EAAQjjT,MAAQgp3B,EAChC,IAAK,IAAIpv3B,EAAI,EAAGA,EAAIk4E,EAAKmgR,SAAS13V,OAAQX,IAAK,CAC3C,IAAI6v3B,EAAYx3hB,EAASr4V,GACzB6v3B,EAAU1p3B,KAAO0p3B,EAAU1p3B,KAAOip3B,CACtC,CACJ,OAGIvs3B,KAAKip3B,WAAc5zyB,EAAK/xE,KAAOkjT,EAAQjjT,MAAQijT,EAAQljT,OACvDip3B,EAAkBv7sB,GAAkBhxK,KAAKws3B,mBACpCxs3B,KAAK6o3B,WAAa7o3B,KAAKip3B,WAAejp3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WACzEjp3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WAC9BzikB,EAAQljT,KAAOkjT,EAAQljT,KAAOip3B,EAC9B/lkB,EAAQjjT,MAAQvD,KAAK44B,OAAO+nvB,kBAMpC,GAAI3gxB,KAAKip3B,WAAc5zyB,EAAK/xE,KAAOkjT,EAAQjjT,MAAQijT,EAAQljT,KAAOtD,KAAK44B,OAAO+nvB,YAK1E,GAJA4rG,EAAkBv7sB,GAAkBhxK,KAAKws3B,mBACpCxs3B,KAAKip3B,WAAajp3B,KAAK6o3B,WAAe7o3B,KAAKip3B,WAAajp3B,KAAKws3B,kBAClExs3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WAEJ,IAAtBjp3B,KAAK09wB,cAAsBl3d,EAAQljT,MAAQ,EAAG,CAC9CtD,KAAK44B,OAAOy2uB,eAAe,OAAQh6rB,EAAK/xE,KAAOip3B,EAAiBl3yB,GAAM,GACtEr1E,KAAK44B,OAAOy2uB,eAAe,QAASh6rB,EAAK9xE,MAAQgp3B,EAAiBl3yB,GAAM,GACxEmxO,EAAQjjT,MAAQijT,EAAQjjT,MAAQgp3B,EAChC,IAASpv3B,EAAI,EAAGA,EAAIk4E,EAAKmgR,SAAS13V,OAAQX,IAAK,CAC3C,IAAI8v3B,EAAYz3hB,EAASr4V,GACzB8v3B,EAAU3p3B,KAAO2p3B,EAAU3p3B,KAAOip3B,CACtC,CAEJ,MACU/lkB,EAAQljT,KAASkjT,EAAQljT,KAAOkjT,EAAQjjT,OAC5CijT,EAAQljT,KAAOip3B,GAAqB/lkB,EAAQljT,KAAOkjT,EAAQjjT,QAC7DijT,EAAQljT,KAAOkjT,EAAQljT,KAAOip3B,EAC9B/lkB,EAAQjjT,MAAQijT,EAAQjjT,MAAQgp3B,QAKpC,GAAIvs3B,KAAKip3B,WAAc5zyB,EAAK/xE,KAAOkjT,EAAQljT,KAAOkjT,EAAQjjT,OAClDijT,EAAQjjT,MAAQvD,KAAK44B,OAAO+nvB,YAQ5B,GAPA4rG,EAAkBv7sB,GAAkBhxK,KAAKws3B,mBACpCxs3B,KAAKip3B,WAAajp3B,KAAK6o3B,WAAe7o3B,KAAKip3B,WAAajp3B,KAAKws3B,kBAClExs3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WAI9BsD,GAH2B/lkB,EAAQjjT,MAAQgp3B,EAAmBvs3B,KAAK44B,OAAO+nvB,YACtE3gxB,KAAK44B,OAAO+nvB,YAAcn6d,EAAQjjT,MAC9BvD,KAAK44B,OAAO+nvB,YAAcn6d,EAAQjjT,MAAQijT,EAAQjjT,MAAQvD,KAAK44B,OAAO+nvB,YAAc,EAElE,IAAtB3gxB,KAAK09wB,aAAoB,CACzB19wB,KAAK44B,OAAOy2uB,eAAe,QAASh6rB,EAAK9xE,MAAQgp3B,EAAiBl3yB,GAAM,GACxEr1E,KAAK44B,OAAOy2uB,eAAe,OAAQh6rB,EAAK/xE,KAAOip3B,EAAiBl3yB,GAAM,GACtEmxO,EAAQjjT,MAAQijT,EAAQjjT,MAAQgp3B,EAChC,IAASpv3B,EAAI,EAAGA,EAAIk4E,EAAKmgR,SAAS13V,OAAQX,IAAK,CAC3C,IAAI+v3B,EAAY13hB,EAASr4V,GACzB+v3B,EAAU5p3B,KAAO4p3B,EAAU5p3B,KAAOip3B,CACtC,CACJ,MAEI/lkB,EAAQljT,KAAOkjT,EAAQljT,KAAOip3B,EAC9B/lkB,EAAQjjT,MAAQijT,EAAQjjT,MAAQgp3B,EAMpDvs3B,KAAK44B,OAAOy2uB,eAAe,WAAY75a,EAAUngR,GAAM,GACvDr1E,KAAK44B,OAAO02uB,cAAcC,kBAAkBvvwB,KAAK6zzB,kBAAmB,WACxE,EAQAmxD,EAAYzm3B,UAAUwu3B,mBAAqB,SAAU7v3B,EAAGm4E,GACpDr1E,KAAKmt3B,kBAAkB93yB,GACvBr1E,KAAK44B,OAAOy2uB,eAAe,gBAAiBrvwB,KAAK44B,OAAO02uB,cAAc2N,iBAAiB5nsB,EAAK9xE,MAAO8xE,EAAKsyZ,UAAWtyZ,GAAM,EAC7H,EAQA2vyB,EAAYzm3B,UAAU4u3B,kBAAoB,SAAU93yB,GAC5CA,EAAK9xE,OAAS,GACdvD,KAAK44B,OAAOy2uB,eAAe,QAAS,EAAGh6rB,GAAM,GAC7Cr1E,KAAK44B,OAAOy2uB,eAAe,eAAe,EAAMh6rB,GAAM,KAGtDr1E,KAAK44B,OAAOy2uB,eAAe,QAASh6rB,EAAK9xE,MAAO8xE,GAAM,GACtDr1E,KAAK44B,OAAOy2uB,eAAe,eAAe,EAAOh6rB,GAAM,GAE/D,EAQA2vyB,EAAYzm3B,UAAUmt3B,oBAAsB,SAAUxu3B,GAClD,IAAIm4E,EAAOr1E,KAAK6zzB,kBAAkBlnD,gBAC9B4/G,EAAkB,EACtB,GAAIvs3B,KAAKyk3B,mBAAmBtg3B,UAAUC,SAAS,uBAAwB,CACnE,IAAIoxV,EAAWx1V,KAAK6zzB,kBAAkBlnD,gBAAgBn3a,SAAS7zV,KAAI,SAAUzE,GAAK,OAAQkkP,IAAS,CAAC,EAAGlkP,EAAK,IACxGspT,EAAUgvC,EAASx1V,KAAK09wB,cAC5B,GAAI19wB,KAAK6o3B,WAAa7o3B,KAAKip3B,YACvB,GAAIjp3B,KAAKip3B,WAAc5zyB,EAAK/xE,KAAOkjT,EAAQljT,MAAUtD,KAAK6o3B,WAAa7o3B,KAAKip3B,WAAc,EACtFsD,EAAkBv7sB,GAAkBhxK,KAAKws3B,mBACpCxs3B,KAAK6o3B,WAAa7o3B,KAAKip3B,WAAejp3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WACzEjp3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WAC9BzikB,EAAQjjT,MAAQijT,EAAQjjT,MAAQgp3B,OAGhC,GAAIvs3B,KAAKip3B,WAAc5zyB,EAAK/xE,KAAOkjT,EAAQljT,KAAO,CAC9C,IAAI8p3B,EAAgBpt3B,KAAK44B,OAAOy9uB,eAAekP,eAC4B,SAAtEvlxB,KAAK44B,OAAOy9uB,eAAe8iB,uBAAuB/hB,WAAW36vB,MACS,SAAnEzc,KAAK44B,OAAOy9uB,eAAe8iB,uBAAuB3Y,QAAQ/jwB,MACY,YAAtEzc,KAAK44B,OAAOy9uB,eAAe8iB,uBAAuB/hB,WAAW36vB,MACM,YAAnEzc,KAAK44B,OAAOy9uB,eAAe8iB,uBAAuB3Y,QAAQ/jwB,OACS,SAAtEzc,KAAK44B,OAAOy9uB,eAAe8iB,uBAAuB/hB,WAAW36vB,MACY,YAAtEzc,KAAK44B,OAAOy9uB,eAAe8iB,uBAAuB/hB,WAAW36vB,KACjEzc,KAAK44B,OAAOy9uB,eAAe8iB,uBAAuB7X,iBAClDthxB,KAAK44B,OAAO+nvB,YAChBn6d,EAAQjjT,MAAQ6p3B,CACpB,OAIApt3B,KAAKip3B,WAAazikB,EAAQljT,OAC1Bip3B,EAAkBv7sB,GAAkBhxK,KAAKws3B,mBACpCxs3B,KAAKip3B,WAAajp3B,KAAK6o3B,WAAe7o3B,KAAKip3B,WAAajp3B,KAAKws3B,kBAClExs3B,KAAKws3B,kBAAoBxs3B,KAAKip3B,WAC9BzikB,EAAQjjT,MAAQijT,EAAQjjT,MAAQgp3B,GAGxC,IAAIhp3B,OAAQ,EACRmp3B,EAAc1s3B,KAAK09wB,eAAiBlob,EAAS13V,OAAS,EAAI03V,EAASx1V,KAAK09wB,aAAe,GAAK,KAC3F1smB,GAAkB07sB,KACd1s3B,KAAKyk3B,mBAAmBtg3B,UAAUC,SAAS,oBAC5Cb,EAASijT,EAAQljT,KAAOkjT,EAAQjjT,MAASmp3B,EAAYpp3B,KAAQop3B,EAAYpp3B,KAAOkjT,EAAQljT,KAAQkjT,EAAQjjT,OAE5GijT,EAAQjjT,MAAQA,GAEhBvD,KAAK09wB,eAAiBrosB,EAAKmgR,SAAS13V,OAAS,GACnB,IAAtBkC,KAAK09wB,cACL19wB,KAAK44B,OAAOy2uB,eAAe,QAAS7od,EAAQjjT,MAAO8xE,GAAM,GAGjEr1E,KAAK44B,OAAOy2uB,eAAe,WAAY75a,EAAUngR,GAAM,GACvDr1E,KAAK44B,OAAO02uB,cAAcC,kBAAkBvvwB,KAAK6zzB,kBAAmB,WACxE,MAEQ7zzB,KAAK6o3B,WAAa7o3B,KAAKip3B,WACnBjp3B,KAAKip3B,WAAa5zyB,EAAK/xE,MAAStD,KAAK6o3B,WAAa7o3B,KAAKip3B,WAAc,GACrEsD,EAAkBvs3B,KAAK6o3B,WAAa7o3B,KAAKip3B,WACzCjp3B,KAAK44B,OAAOy2uB,eAAe,QAASrvwB,KAAKunF,aAAahkF,MAAQgp3B,EAAiBl3yB,GAAM,IAGjFr1E,KAAKip3B,WAAa5zyB,EAAK/xE,MACvBtD,KAAK44B,OAAOy2uB,eAAe,QAAS,EAAGh6rB,GAAM,GAKjDr1E,KAAKip3B,WAAa5zyB,EAAK/xE,OACvBip3B,EAAkBvs3B,KAAKip3B,WAAajp3B,KAAK6o3B,WACzC7o3B,KAAK44B,OAAOy2uB,eAAe,QAASrvwB,KAAKunF,aAAahkF,MAAQgp3B,EAAiBl3yB,GAAM,IAG7Fr1E,KAAK+s3B,mBAAmB7v3B,EAAGm4E,EAEnC,EAOA2vyB,EAAYzm3B,UAAUyt3B,iBAAmB,WACrC,IACI1o3B,EACA8tlB,EACA5oK,EACAF,EAJAjzW,EAAOr1E,KAAK6zzB,kBAAkBlnD,gBAKlC,OAAQ3swB,KAAK8gxB,mBACT,IAAK,mBACD9gxB,KAAK44B,OAAOy2uB,eAAe,WAAYrvwB,KAAKqt3B,mBAAmBh4yB,EAAK9xE,MAAO8xE,EAAK0xsB,eAAgB1xsB,GAAM,GACtG,MACJ,IAAK,gBAC0B,IAAvBr1E,KAAK09wB,cACLp6wB,EAAOtD,KAAKst3B,qBAAqBj4yB,EAAMr1E,KAAKom3B,kBAC5Ch1R,EAAmBpxlB,KAAKut3B,cAAcjq3B,GAClC0tK,GAAkB37F,EAAKmzW,WACvBA,EAAUxob,KAAK44B,OAAOi0uB,qBAAqB2F,gBAAgBn9rB,GAC3Dr1E,KAAK44B,OAAOy2uB,eAAe,UAAW7mV,EAASnzW,GAAM,IAEzDizW,EAAYtob,KAAK44B,OAAOi0uB,qBAAqBS,eAAel8K,EAAkB/7gB,EAAM,MACpFr1E,KAAK44B,OAAOy2uB,eAAe,YAAa,IAAIr3vB,KAAKswa,EAAUjwa,WAAYg9D,GAAM,GACO,IAAhFr1E,KAAK44B,OAAOi0uB,qBAAqBhlV,aAAaxyW,EAAKizW,UAAWjzW,EAAKmzW,UAChEx3Q,GAAkB37F,EAAKu4rB,eAAqC,IAArBv4rB,EAAKu4rB,aAA2C,IAAlBv4rB,EAAK1hB,UAC7E3zD,KAAK44B,OAAOy2uB,eAAe,WAAY,EAAGh6rB,GAAM,GAEhDA,EAAKu4rB,aACL5twB,KAAK44B,OAAOy2uB,eAAe,UAAW,IAAIr3vB,KAAKswa,EAAUjwa,WAAYg9D,GAAM,GAE/Er1E,KAAK44B,OAAOi0uB,qBAAqB6C,kBAAkB1vwB,KAAK6zzB,mBACxD7zzB,KAAK44B,OAAO02qB,WAAWg0K,4BAA4Btj3B,KAAK6zzB,kBAAmB,aAG3E7zzB,KAAKwt3B,sBAAsBn4yB,GAE/B,MACJ,IAAK,gBACL,IAAK,iBACD,IAA2B,IAAvBr1E,KAAK09wB,aAAqB,CAC1Bp6wB,EAAOtD,KAAKyt3B,mBAAmBp4yB,EAAMr1E,KAAKom3B,kBAC1C,IAAI32G,EAAczvwB,KAAKut3B,cAAcjq3B,GACjC0tK,GAAkB37F,EAAKizW,aACvBA,EAAYtob,KAAK44B,OAAOi0uB,qBAAqBuF,kBAAkB/8rB,GAC/Dr1E,KAAK44B,OAAOy2uB,eAAe,YAAa/mV,EAAWjzW,GAAM,IAE7D,IAAIq4yB,EAAW18sB,GAAkB37F,EAAKizW,WAAaA,EAAYjzW,EAAKizW,UACpEE,EAAUnzW,EAAKu4rB,YAAc8/G,EACzB1t3B,KAAK44B,OAAOi0uB,qBAAqB0B,aAAakB,EAAazvwB,KAAK6zzB,kBAAkBlnD,iBACtF3swB,KAAK44B,OAAOy2uB,eAAe,UAAW,IAAIr3vB,KAAKwwa,EAAQnwa,WAAYg9D,GAAM,GACzEr1E,KAAK44B,OAAOi0uB,qBAAqB6C,kBAAkB1vwB,KAAK6zzB,mBACxD7zzB,KAAK44B,OAAO02qB,WAAWg0K,4BAA4Btj3B,KAAK6zzB,kBAAmB,WAC/E,MAEI7zzB,KAAK2t3B,yBAAyBt4yB,GAElC,MACJ,IAAK,aACL,IAAK,YACL,IAAK,gBACL,IAAK,oBAC0B,IAAvBr1E,KAAK09wB,cAA6C,IAAtB19wB,KAAK09wB,eAA6C,GAAtB19wB,KAAK09wB,cAAsB19wB,KAAK44B,OAAO06vB,wBAC/FtzxB,KAAK4t3B,gBAAgBv4yB,GAGrBr1E,KAAK6t3B,iBAAiBx4yB,GAItC,EACA2vyB,EAAYzm3B,UAAUqv3B,gBAAkB,SAAUv4yB,GAC9C,IAEImzW,EAFAllb,EAAOtD,KAAKst3B,qBAAqBj4yB,EAAMr1E,KAAKom3B,kBAC5Ch1R,EAAmBpxlB,KAAKut3B,cAAcjq3B,EAAM+xE,EAAKu4rB,YAAav4rB,GAExC,IAAtBr1E,KAAK09wB,cACL19wB,KAAK44B,OAAOy2uB,eAAe,YAAarvwB,KAAK44B,OAAOi0uB,qBAAqBS,eAAel8K,EAAkB/7gB,EAAM,MAAOA,GAAM,GAC7HA,EAAKmgR,SAAS,GAAG8yF,UAAY8oK,EAC7B/7gB,EAAKmgR,SAAS,GAAGgzF,QAAUxob,KAAK44B,OAAO02uB,cAAcM,WAAWv6rB,EAAKmgR,SAAS,GAAG8yF,UAAWjzW,EAAKmgR,SAAS,GAAG7hS,SAAU0hB,EAAK+5rB,aAAc/5rB,GAAM,GAChJr1E,KAAK44B,OAAOy2uB,eAAe,WAAYh6rB,EAAKmgR,SAAUngR,GAAM,GAC5Dr1E,KAAK44B,OAAO02uB,cAAcC,kBAAkBvvwB,KAAK6zzB,kBAAmB,YACpE7zzB,KAAK44B,OAAOguvB,gBAAgBC,kBAAkBxxsB,EAAKmgR,SAAU,EAAGx1V,KAAK6zzB,mBACrE7zzB,KAAK44B,OAAOy2uB,eAAe,UAAWh6rB,EAAKmgR,SAASngR,EAAKmgR,SAAS13V,OAAS,GAAG0qb,QAASnzW,GAAM,GAC7Fr1E,KAAK44B,OAAOy2uB,eAAe,YAAcrvwB,KAAK44B,OAAOg0uB,WAAWp3a,SAAUngR,EAAKmgR,SAAUx1V,KAAK6zzB,mBAAmB,KAG5G7ipB,GAAkB37F,EAAKmzW,UAAYx3Q,GAAkB37F,EAAKizW,YAC3DE,EAAUxob,KAAK44B,OAAOi0uB,qBAAqBS,eAAel8K,EAAkB/7gB,EAAM,MAClFmzW,EAAUxob,KAAK44B,OAAOi0uB,qBAAqB0B,aAAa/lV,EAASxob,KAAK6zzB,kBAAkBlnD,iBACxF3swB,KAAK44B,OAAOy2uB,eAAe,UAAW7mV,EAASnzW,GAAM,KAGrDr1E,KAAK44B,OAAOy2uB,eAAe,YAAarvwB,KAAK44B,OAAOi0uB,qBAAqBS,eAAel8K,EAAkB/7gB,EAAM,MAAOA,GAAM,GACxH27F,GAAkB37F,EAAK1hB,WACxB3zD,KAAK44B,OAAOi0uB,qBAAqB2C,iBAAiBxvwB,KAAK6zzB,mBAIvE,EACAmxD,EAAYzm3B,UAAUiv3B,sBAAwB,SAAUn4yB,GACpD,IAAImxO,EAAUnxO,EAAKmgR,SAASx1V,KAAK09wB,cAC7Bp6wB,EAA6B,IAAtBtD,KAAK09wB,aAAqB19wB,KAAKst3B,qBAAqBj4yB,EAAMr1E,KAAKom3B,kBACtEpm3B,KAAKst3B,qBAAqB9mkB,EAASxmT,KAAKom3B,kBACxCh1R,EAAyC,IAAtBpxlB,KAAK09wB,aAAqB19wB,KAAKut3B,cAAcjq3B,GAAQtD,KAAKut3B,cAAcl4yB,EAAK/xE,KAAOA,GACvGglb,EAAYtob,KAAK44B,OAAO02uB,cAAchC,eAAel8K,EAAkB/7gB,GAAM,GAC7E1hB,EAAW3zD,KAAK44B,OAAO02uB,cAAcY,YAAY5nV,EAAW9hI,EAAQgiI,QAASnzW,EAAK+5rB,aAAc/5rB,EAAK83rB,eAAgB93rB,EAAKu4rB,aAQ9H,GAPApnd,EAAQ8hI,UAAY,IAAItwa,KAAKswa,EAAUjwa,WACvCmuS,EAAQ7yP,SAAWA,EACnB3zD,KAAK44B,OAAOy2uB,eAAe,WAAYrvwB,KAAKgwwB,cAAc36rB,EAAKmgR,UAAWngR,GAAM,GACtD,IAAtBr1E,KAAK09wB,cACL19wB,KAAK44B,OAAOy2uB,eAAe,YAAa7od,EAAQ8hI,UAAWjzW,GAAM,GAErEr1E,KAAK44B,OAAO02qB,WAAWg0K,4BAA4Btj3B,KAAK6zzB,kBAAmB,aACtE7ipB,GAAkB37F,EAAKmgR,SAASx1V,KAAK09wB,aAAe,IAAK,CAC1D,IAAIowG,EAAwB9t3B,KAAK44B,OAAO02uB,cAAcY,YAAY76rB,EAAKmgR,SAASx1V,KAAK09wB,aAAe,GAAGl1V,QAASnzW,EAAKmgR,SAASx1V,KAAK09wB,cAAcp1V,UAAWjzW,EAAK+5rB,aAAc/5rB,EAAK83rB,eAAgB93rB,EAAKu4rB,aACzMpnd,EAAQqpd,eAAiBi+G,CAC7B,CACA9t3B,KAAK44B,OAAOy2uB,eAAe,WAAYh6rB,EAAKmgR,SAAUngR,GAAM,GAC5Dr1E,KAAK44B,OAAO02uB,cAAcC,kBAAkBvvwB,KAAK6zzB,kBAAmB,WACxE,EACAmxD,EAAYzm3B,UAAUov3B,yBAA2B,SAAUt4yB,GACvD,IAAImxO,EAAUnxO,EAAKmgR,SAASx1V,KAAK09wB,cAC7Bp6wB,EAAOtD,KAAKyt3B,mBAAmBp4yB,EAAMr1E,KAAKom3B,kBAC1C32G,EAAczvwB,KAAKut3B,cAAcjq3B,GACjCklb,EAAUxob,KAAK44B,OAAO02uB,cAAcf,aAAakB,EAAap6rB,GAAM,GACpE1hB,EAAW3zD,KAAK44B,OAAO02uB,cAAcY,YAAY1pd,EAAQ8hI,UAAWE,EAASnzW,EAAK+5rB,aAAc/5rB,EAAK83rB,eAAgB93rB,EAAKu4rB,aAI9H,GAHApnd,EAAQgiI,QAAU,IAAIxwa,KAAKwwa,EAAQnwa,WACnCmuS,EAAQ7yP,SAAWA,GAEdq9G,GAAkB37F,EAAKmgR,SAASx1V,KAAK09wB,aAAe,IAAK,CAC1D,IAAIgvG,EAAcr3yB,EAAKmgR,SAASx1V,KAAK09wB,aAAe,GAChDqwG,EAAgB/t3B,KAAK44B,OAAO02uB,cAAcY,YAAY76rB,EAAKmgR,SAASx1V,KAAK09wB,cAAcl1V,QAASkkc,EAAYpkc,UAAWjzW,EAAK+5rB,aAAc/5rB,EAAK83rB,eAAgB93rB,EAAKu4rB,aACxKpnd,EAAQqpd,eAAiBk+G,CAC7B,CACA/t3B,KAAK44B,OAAOy2uB,eAAe,WAAYh6rB,EAAKmgR,SAAUngR,GAAM,GAC5Dr1E,KAAK44B,OAAO02uB,cAAcC,kBAAkBvvwB,KAAK6zzB,kBAAmB,YACpE7zzB,KAAK44B,OAAOy2uB,eAAe,WAAYrvwB,KAAKgwwB,cAAc36rB,EAAKmgR,UAAWngR,GAAM,GAChFr1E,KAAK44B,OAAOy2uB,eAAe,UAAWh6rB,EAAKmgR,SAASngR,EAAKmgR,SAAS13V,OAAS,GAAG0qb,QAASnzW,GAAM,GAC7Fr1E,KAAK44B,OAAO02qB,WAAWg0K,4BAA4Btj3B,KAAK6zzB,kBAAmB,WAC/E,EACAmxD,EAAYzm3B,UAAUyxwB,cAAgB,SAAUx6a,GAE5C,IADA,IAAI7hS,EAAW,EACNx2D,EAAI,EAAGA,EAAIq4V,EAAS13V,OAAQX,IAAK,CAEtCw2D,GADc6hS,EAASr4V,GACHw2D,QACxB,CACA,OAAOA,CACX,EACAqxzB,EAAYzm3B,UAAUsv3B,iBAAmB,SAAUx4yB,GAC/C,IAAImxO,EAAUnxO,EAAKmgR,SAASx1V,KAAK09wB,cAC7Bp6wB,EAAOtD,KAAKst3B,qBAAqB9mkB,EAASxmT,KAAKom3B,kBAC/Ch1R,EAAmBpxlB,KAAKut3B,cAAcl4yB,EAAK/xE,KAAOA,GAWtD,GAVA8tlB,EAAmBpxlB,KAAK44B,OAAOi0uB,qBAAqBS,eAAel8K,EAAkB/7gB,EAAM,MAC3FmxO,EAAQ8hI,UAAY8oK,EACpB5qS,EAAQgiI,QAAUxob,KAAK44B,OAAO02uB,cAAcM,WAAWppd,EAAQ8hI,UAAW9hI,EAAQ7yP,SAAU0hB,EAAK+5rB,aAAc/5rB,GAAM,GACrHmxO,EAAQ7yP,SAAW3zD,KAAK44B,OAAO02uB,cAAcY,YAAY1pd,EAAQ8hI,UAAW9hI,EAAQgiI,QAASnzW,EAAK+5rB,aAAc/5rB,EAAK83rB,eAAgB93rB,EAAKu4rB,aAC1I5twB,KAAK44B,OAAOy2uB,eAAe,WAAYrvwB,KAAKgwwB,cAAc36rB,EAAKmgR,UAAWngR,GAAM,GAChFr1E,KAAK44B,OAAOy2uB,eAAe,UAAWh6rB,EAAKmgR,SAASngR,EAAKmgR,SAAS13V,OAAS,GAAG0qb,QAASnzW,GAAM,GACxF27F,GAAkBhxK,KAAK44B,OAAOg0uB,WAAWpkV,UAC1Cxob,KAAK44B,OAAO02uB,cAAcC,kBAAkBvvwB,KAAK6zzB,kBAAmB,YAGnE7ipB,GAAkB37F,EAAKmgR,SAASx1V,KAAK09wB,aAAe,IAAK,CAC1D,IAAI7N,EAAiB7vwB,KAAK44B,OAAO02uB,cAAcY,YAAY76rB,EAAKmgR,SAASx1V,KAAK09wB,aAAe,GAAGl1V,QAASnzW,EAAKmgR,SAASx1V,KAAK09wB,cAAcp1V,UAAWjzW,EAAK+5rB,aAAc/5rB,EAAK83rB,eAAgB93rB,EAAKu4rB,aAC/J,IAA/Bpnd,EAAQ8hI,UAAUxua,UAAqC,IAAnB+1vB,GAAyB7vwB,KAAK44B,OAAOw0uB,iBACzEyC,EAAiB,GAErBrpd,EAAQqpd,eAAiBA,CAC7B,CAEA,IAAK7+lB,GAAkB37F,EAAKmgR,SAASx1V,KAAK09wB,aAAe,IAAK,CAC1D,IAAIgvG,EAAcr3yB,EAAKmgR,SAASx1V,KAAK09wB,aAAe,GAChD7N,EAAiB7vwB,KAAK44B,OAAO02uB,cAAcY,YAAY76rB,EAAKmgR,SAASx1V,KAAK09wB,cAAcl1V,QAASkkc,EAAYpkc,UAAWjzW,EAAK+5rB,aAAc/5rB,EAAK83rB,eAAgB93rB,EAAKu4rB,aAClI,IAAnC8+G,EAAYpkc,UAAUxua,UAAqC,IAAnB+1vB,GAAyB7vwB,KAAK44B,OAAOw0uB,iBAC7EyC,EAAiB,GAErB68G,EAAY78G,eAAiBA,CACjC,CACA7vwB,KAAK44B,OAAOy2uB,eAAe,WAAYh6rB,EAAKmgR,SAAUngR,GAAM,GAC5Dr1E,KAAK44B,OAAO02uB,cAAcC,kBAAkBvvwB,KAAK6zzB,kBAAmB,WACxE,EASAmxD,EAAYzm3B,UAAUkv3B,mBAAqB,SAAU9xG,EAAaqyG,GAC9D,IAAIztG,EAAqD,SAA1CvgxB,KAAK44B,OAAOy9uB,eAAee,WAAwBp3wB,KAAK44B,OAAOy9uB,eAAee,WACzFp3wB,KAAK44B,OAAOy9uB,eAAemK,QAC3BytG,EAAYtyG,EAAYp4wB,MAAQo4wB,EAAYr4wB,KAChD,IAA2B,IAAvBtD,KAAK09wB,aAAqB,CAC1B,IAAIl3d,EAAUm1d,EAAYnmb,SAASx1V,KAAK09wB,cACxCuwG,EAAYA,EAAYtyG,EAAYp4wB,MAAQijT,EAAQjjT,MAAQijT,EAAQljT,IACxE,CACA,IAAI4q3B,EAAyB,GAAKlu3B,KAAK44B,OAAOy9uB,eAAekpB,aAAav/xB,KAAKut3B,cAAcU,GAAY,EAAG,OAAS,OACjHE,EAAgBnu3B,KAAK44B,OAAO+nvB,YAAe3gxB,KAAK44B,OAAO+nvB,YAAcutG,EACrEE,EAAgBD,EAAgBnu3B,KAAK44B,OAAO+nvB,YAKhD,QAJmB1zsB,IAAf+gzB,IACAA,GAAa,GAGZA,GAUA,GAAIA,EACL,GAAiB,SAAbztG,EAAqB,CACrB,IAAI8tG,EAAUru3B,KAAK44B,OAAO+nvB,YAAc,GACxCutG,EACK,GAAKlu3B,KAAK44B,OAAOy9uB,eAAekpB,aAAav/xB,KAAKut3B,cAAcU,GAAY,EAAG,QAAU,MAExE,KADtBE,EAAiBnu3B,KAAK44B,OAAO+nvB,YAAc,GAAQ3gxB,KAAK44B,OAAO+nvB,YAAc,GAAMutG,KAE/ED,EAAaA,EAAYE,EAAiBE,EAElD,MACK,GAAiB,YAAb9tG,EAAwB,CAC7B,IAAI+tG,EAAatu3B,KAAK44B,OAAO+nvB,YAAc,KAC3CutG,EACK,GAAKlu3B,KAAK44B,OAAOy9uB,eAAekpB,aAAav/xB,KAAKut3B,cAAcU,GAAY,EAAG,WAAa,KAE3E,KADtBE,EAAiBnu3B,KAAK44B,OAAO+nvB,YAAc,KAAe3gxB,KAAK44B,OAAO+nvB,YAAc,KAAautG,KAE7FD,EAAaA,EAAYE,EAAiBG,EAElD,MAE0B,IAAlBH,IACAF,EAAaA,EAAYE,EAAiBnu3B,KAAK44B,OAAO+nvB,iBA9B5C,SAAbJ,GAAoC,YAAbA,IACpB6tG,EAAgB,GAChBH,EAAYA,EAAYE,EAAgBnu3B,KAAK44B,OAAO+nvB,YAE/CytG,EAAgB,KACrBH,EAAaA,EAAYE,EAAkBnu3B,KAAK44B,OAAO+nvB,YAAc,IA6BjF,OAAOstG,CACX,EASAjJ,EAAYzm3B,UAAU+u3B,qBAAuB,SAAU3xG,EAAaqyG,GAChE,IAAI1q3B,GAAO0tK,GAAkB2qmB,GAAeA,EAAYr4wB,MAEpDi9wB,EAAqD,SAA1CvgxB,KAAK44B,OAAOy9uB,eAAee,WAAwBp3wB,KAAK44B,OAAOy9uB,eAAee,WACzFp3wB,KAAK44B,OAAOy9uB,eAAemK,QAC3B0tG,EAAyB,GAAKlu3B,KAAK44B,OAAOy9uB,eAAekpB,aAAav/xB,KAAKut3B,cAAcjq3B,EAAM0tK,GAAkB2qmB,GAAeA,EAAY/N,YAAc,KAAM+N,GAAc,EAAG,OAAS,OAC1L4yG,EAAavu3B,KAAK44B,OAAO+nvB,YAAe3gxB,KAAK44B,OAAO+nvB,YAAcutG,EAClEM,EAAsBD,EAAavu3B,KAAK44B,OAAO+nvB,YAgCnD,YA/BmB1zsB,IAAf+gzB,IACAA,GAAa,GAGZA,EAUIA,IACY,SAAbztG,GACA2tG,EACK,GAAKlu3B,KAAK44B,OAAOy9uB,eAAekpB,aAAav/xB,KAAKut3B,cAAcjq3B,GAAO,EAAG,QAAU,MAEzFA,GADAir3B,EAAcvu3B,KAAK44B,OAAO+nvB,YAAc,GAAQ3gxB,KAAK44B,OAAO+nvB,YAAc,GAAMutG,GAG9D,YAAb3tG,GACL2tG,EACK,GAAKlu3B,KAAK44B,OAAOy9uB,eAAekpB,aAAav/xB,KAAKut3B,cAAcjq3B,GAAO,EAAG,WAAa,KAE5FA,GADAir3B,EAAcvu3B,KAAK44B,OAAO+nvB,YAAc,KAAe3gxB,KAAK44B,OAAO+nvB,YAAc,KAAautG,GAI9F5q3B,GAAcir3B,GAvBA,SAAbhuG,GAAoC,YAAbA,IACpBiuG,GAAuB,GACvBlr3B,GAAcir3B,EAETC,EAAsB,KAC3Blr3B,EAAQA,EAAOir3B,EAAcvu3B,KAAK44B,OAAO+nvB,YAAc,IAqB5Dr9wB,CACX,EAQA0h3B,EAAYzm3B,UAAUgv3B,cAAgB,SAAUjq3B,EAAMsqwB,EAAa5zqB,GAC/D,IAAIgtrB,EAAa,IAAIhvwB,KAAKhY,KAAK44B,OAAOy9uB,eAAe8K,kBAAkBxgxB,YACnE88xB,EAAwB,MAAuBz9xB,KAAK44B,OAAO+nvB,YAC/DqG,EAAWzziB,QAAQyziB,EAAW3uwB,UAAa/U,EAAOm6xB,GAE9C7vB,IAAgB58lB,GAAkBh3E,EAAS0irB,mBAAmD,KAA9B1irB,EAAS0irB,mBAEzE18wB,KAAK44B,OAAOi0uB,qBAAqBt5hB,QAAQvzO,KAAK44B,OAAOk1uB,eAAgBkZ,GACrEA,EAAahnxB,KAAK44B,OAAOi0uB,qBAAqBS,eAAe0Z,EAAYhtrB,GAAU,IAEvF,IAAIumrB,EAAqD,SAA1CvgxB,KAAK44B,OAAOy9uB,eAAee,WAAwBp3wB,KAAK44B,OAAOy9uB,eAAemK,QACzFxgxB,KAAK44B,OAAOy9uB,eAAee,WAS/B,MARiB,SAAbmJ,GAAoC,YAAbA,GACnBvgxB,KAAK44B,OAAOwovB,QAAQ,IAAIppwB,KAAKhY,KAAK44B,OAAOy9uB,eAAe8K,kBAAkBxgxB,eAAiBX,KAAK44B,OAAOwovB,QAAQ4F,IAC/GA,EAAWzziB,QAAQyziB,EAAW3uwB,UAAa,MAM5C2uwB,CACX,EAOAg+F,EAAYzm3B,UAAUwt3B,gBAAkB,WACpC,IAAK/6sB,GAAkBhxK,KAAKol3B,aAAc,CACtC,IAAIjgiB,EAAiBnlV,KAAKol3B,YAAYlh3B,cAClClE,KAAK44B,OAAO06vB,yBAAsD,cAA3BtzxB,KAAK8gxB,kBAC5C37b,EAAe9gV,MAAM+Q,SAAW,KAGhC+vU,EAAe9gV,MAAMknC,YAAY,WAAY,WAErD,CACA,IAUIy9uB,EAVA3zsB,EAAOr1E,KAAK6zzB,kBAAkBlnD,gBAC9Bv3vB,EAAWpV,KAAK44B,OAAOm1c,UAAY,QAAU,OAC7CvnL,EAAWx1I,GAAkB37F,EAAKmgR,UAA+C,KAAnCngR,EAAKmgR,SAASx1V,KAAK09wB,cACjEn6wB,EAAmC,kBAA3BvD,KAAK8gxB,mBAAyCzrsB,EAAKu4rB,YAC3D5twB,KAAK44B,OAAOguvB,gBAAgB84B,gBAAkBrquB,EAAK9xE,MACnDkr3B,EAAezu3B,KAAK44B,OAAOo+vB,WAAczzxB,EAAQ,EAAMA,EAAQ,GAC9DytK,GAAkBw1I,KACnBiokB,EAAezu3B,KAAK44B,OAAOo+vB,WAAcxwe,EAAQjjT,MAAQ,EAAMijT,EAAQjjT,MAAQ,IAEnFvD,KAAKyk3B,mBAAmBpg3B,MAAMknC,YAAY,UAAW,OAGjDy9uB,EADAhpxB,KAAK44B,OAAO06vB,0BAA4Bj+sB,EAAK83rB,gBAAkBntwB,KAAK6zzB,kBAAkBh3C,iBAI7D78wB,KAAKyk3B,mBAAmBtg3B,UAAUC,SAAS62F,IAH7Cj7F,KAAKyk3B,mBAGkG,cAA3Bzk3B,KAAK8gxB,mBACzE,iBAA3B9gxB,KAAK8gxB,mBAA+D,IAAtB9gxB,KAAK09wB,aAA8D58S,GAAQ9ge,KAAKyk3B,mBAAoB,MAAQxpxB,IACzJ9lF,cAAc,IAAM8lF,IADoDj7F,KAAKyk3B,mBAAmBvg3B,cAGzG,IAAIwq3B,KAA6B1u3B,KAAKyk3B,mBAAmBtg3B,UAAUC,SAAS,yBACxEpE,KAAKyk3B,mBAAmBtv2B,cAAc,yBACtC60wB,EAAwBhqxB,KAAKyk3B,mBAAmBtv2B,cAAc,IAAM8lF,IACpE8urB,EAAoB/pxB,KAAKyk3B,mBAAmBtv2B,cAAc,IAAM8lF,IAChEyurB,EAAuB1pxB,KAAKyk3B,mBAAmBtv2B,cAAc,IAAM8lF,IACnEwurB,EAAsBzpxB,KAAKyk3B,mBAAmBtv2B,cAAc,IAAM8lF,IAClEqvrB,EAAqBtqxB,KAAKyk3B,mBAAmBtv2B,cAAc,IAAM8lF,IACjEsvrB,EAAyBvqxB,KAAKyk3B,mBAAmBtv2B,cAAc,IAAM8lF,IACrE0zxB,EAA2B3u3B,KAAKyk3B,mBAAmBtv2B,cAAc,IAAM8lF,IACvE2zxB,EAA6B5lG,EAAqB7zwB,cAAc,IAAM8lF,IACtE4zxB,EAAsB7u3B,KAAKyk3B,mBAC3Bt6D,EAAgBnqzB,KAAKyk3B,mBAAmBtv2B,cAAc,IAAM8lF,IAC5D6zxB,EAAoB9u3B,KAAKyk3B,mBAAmBtv2B,cAAc,IAAM8lF,IAChE8zxB,EAAmB/u3B,KAAKyk3B,mBAAmBtv2B,cAAc,qCACzD652B,EAAahv3B,KAAK44B,OAAOmovB,iBAAiBqH,mBAAmBjzwB,cAAc,yBAK/E,GAJInV,KAAK44B,OAAO06vB,0BAA4BtzxB,KAAKk3nB,iBAC7Cl3nB,KAAK6sqB,UAAY7sqB,KAAK6sqB,UAAY,GAClC7sqB,KAAKk3nB,gBAAiB,GAEK,4BAA3Bl3nB,KAAK8gxB,mBACsB,2BAA3B9gxB,KAAK8gxB,kBAAgD,CACrD,GAA+B,mBAA3B9gxB,KAAK8gxB,mBAAqE,qBAA3B9gxB,KAAK8gxB,kBAA0C,CA4B9F,IA3BI4tG,GAA8B19sB,GAAkB37F,EAAKmgR,WACtB,kBAA3Bx1V,KAAK8gxB,mBAA+D,IAAtB9gxB,KAAK09wB,eAClD1smB,GAAkBg+sB,MACdhv3B,KAAK44B,OAAO06vB,yBAA4BtzxB,KAAK44B,OAAO06vB,yBAA2BtzxB,KAAK44B,OAAOwhuB,sBAAmD,cAA3Bp6vB,KAAK8gxB,mBAC9F,eAA3B9gxB,KAAK8gxB,qBACLkuG,EAAW3q3B,MAAMd,MAASijT,EAAQjjT,MAAS,MAGnDvD,KAAKyk3B,mBAAmBpg3B,MAAMd,MAASijT,EAAQjjT,MAAS,KACpDvD,KAAK44B,OAAOm1c,UACZ/te,KAAKyk3B,mBAAmBpg3B,MAAMjB,MAASojT,EAAQljT,KAAQ,MAGvDtD,KAAKyk3B,mBAAmBpg3B,MAAMf,KAAQkjT,EAAQljT,KAAQ,KACjD0tK,GAAkBg+sB,MACdhv3B,KAAK44B,OAAO06vB,yBAA4BtzxB,KAAK44B,OAAO06vB,yBAA2BtzxB,KAAK44B,OAAOwhuB,sBAAmD,cAA3Bp6vB,KAAK8gxB,mBAC3F,eAA3B9gxB,KAAK8gxB,qBACRkuG,EAAW3q3B,MAAMf,KAAQkjT,EAAQljT,KAAOtD,KAAKol3B,YAAYlh3B,cAAci4G,WAAc,QAKrG6sqB,EAAqB3kxB,MAAMknC,YAAYn2B,GAAWpV,KAAK44B,OAAO06vB,wBAA0BtzxB,KAAK6sqB,UAAax3lB,EAAK/xE,MAAS,MACxH0lxB,EAAqB3kxB,MAAMd,MAASA,EAAS,KACzCmr3B,GAA6BE,IAC7BA,EAA2Bvq3B,MAAMf,MAAQtD,KAAK44B,OAAOo+vB,WAAczzxB,EAAQ,GAAOA,EAAQ,GAAM,MAEhGvD,KAAK44B,OAAO06vB,yBAA2BtzxB,KAAK44B,OAAOwhuB,sBAAmD,iBAA3Bp6vB,KAAK8gxB,mBACrD,kBAA3B9gxB,KAAK8gxB,mBAAoE,qBAA3B9gxB,KAAK8gxB,kBAA0C,CAC7F,IAAIkkD,EAAShl0B,KAAK44B,OAAOunvB,cAAgB,EACzC6I,EAAqB3kxB,MAAMknC,YAAY,MAAQvrC,KAAK8sqB,SAAWk4J,EAAU,MACzEh8C,EAAqB3kxB,MAAMmkD,OAAS,GACxC,CACA,GAA+B,iBAA3BxoD,KAAK8gxB,mBAA8D,IAAtB9gxB,KAAK09wB,aAAoB,CACtE19wB,KAAKyk3B,mBAAmBpg3B,MAAMknC,YAAY,UAAW,OAGrD,IAFA,IACIgixB,EADWvtzB,KAAKyk3B,mBAAmBvg3B,cACTm1B,uBAAuB,uBAC5Cl8B,EAAI,EAAGA,EAAIk4E,EAAKmgR,SAAS13V,OAAQX,IAAK,CAC3C,IAAI8x3B,EAAY55yB,EAAKmgR,SAASr4V,GAC1BytzB,EAAiB2C,EAAepwzB,GACpCytzB,EAAevmzB,MAAMd,MAAS0r3B,EAAU1r3B,MAAS,KACvC,IAANpG,IACA6x3B,EAAW3q3B,MAAMd,MAAS0r3B,EAAU1r3B,MAAS,KAC7Cyr3B,EAAW3q3B,MAAMknC,YAAYn2B,EAAW652B,EAAU3r3B,KAAO+xE,EAAK/xE,KAAQ,OAEtEtD,KAAK44B,OAAOm1c,UACZ68U,EAAevmzB,MAAMjB,MAAS6r3B,EAAU3r3B,KAAQ,KAGhDsnzB,EAAevmzB,MAAMf,KAAQ2r3B,EAAU3r3B,KAAQ,IAEvD,CACJ,CAC+B,cAA3BtD,KAAK8gxB,oBAA4D,IAAtB9gxB,KAAK09wB,eAA8C,IAAvB19wB,KAAK09wB,cAAuB19wB,KAAK44B,OAAO06vB,2BAC/G07F,EAAW3q3B,MAAMd,MAASA,EAAS,KACnCyr3B,EAAW3q3B,MAAMknC,YAAYn2B,EAAUigE,EAAK/xE,KAAO,MACnD0lxB,EAAqB3kxB,MAAMknC,YAAY,UAAW,OAE1D,CASA,GARIoj1B,IACI3u3B,KAAK44B,OAAOm1c,UACZ4gZ,EAAyBtq3B,MAAMf,MAAQtD,KAAK44B,OAAOo+vB,WAAczzxB,EAAQ,GAAOA,EAAQ,GAAM,KAG9For3B,EAAyBtq3B,MAAMf,MAAQtD,KAAK44B,OAAOo+vB,WAAczzxB,EAAQ,GAAOA,EAAQ,GAAM,MAGvE,kBAA3BvD,KAAK8gxB,mBAAyCzrsB,EAAKu4rB,YACnDob,EAAqB3kxB,MAAMknC,YAAYn2B,GAAWpV,KAAK44B,OAAO06vB,wBAA0BtzxB,KAAK6sqB,UAAax3lB,EAAK/xE,KAAQC,EAAQ,GAAO,MACtIyr3B,EAAW3q3B,MAAMknC,YAAYn2B,EAAWigE,EAAK/xE,KAAQC,EAAQ,EAAM,MACnEyr3B,EAAW3q3B,MAAMd,MAASA,EAAS,UAElC,GAA+B,qBAA3BvD,KAAK8gxB,kBACV,IAA2B,IAAvB9gxB,KAAK09wB,cAEL,GADAqM,EAAkB1lxB,MAAMknC,YAAYn2B,EAAWigE,EAAK/xE,KAAO+xE,EAAK0xsB,cAAgB,GAAM,OACjF/1mB,GAAkBg5mB,GAAwB,CAC3CA,EAAsB3lxB,MAAMd,MAAQ8xE,EAAK0xsB,cAAgB,KACzDiD,EAAsB3lxB,MAAMgkY,wBAA0BroY,KAAK6s3B,qBAAuB,KAClF7iG,EAAsB3lxB,MAAM+jY,qBAAuBpoY,KAAK6s3B,qBAAuB,KAC/E,IAAIpsD,EAAUzg0B,KAAK44B,OAAOm1c,UAAY14Z,EAAK0xsB,cAAgB,EAAI1xsB,EAAK0xsB,cAAgB,EACpF2C,EAAqBrlxB,MAAMknC,YAAYn2B,EAAUqrzB,EAAU,KAC/D,MAEC,CACDzg0B,KAAKyj3B,sBAAsBzj3B,KAAK6zzB,kBAAkBlnD,iBAClDqd,EAAsB3lxB,MAAMd,MAAQ8xE,EAAKmgR,SAASx1V,KAAK09wB,cAAcqJ,cAAgB,KACrFiD,EAAsB3lxB,MAAMgkY,wBAA0BroY,KAAK6s3B,qBAAuB,KAClF7iG,EAAsB3lxB,MAAM+jY,qBAAuBpoY,KAAK6s3B,qBAAuB,KAC/E,IAAIqC,EAAUlv3B,KAAK44B,OAAOm1c,UAAY14Z,EAAKmgR,SAASx1V,KAAK09wB,cAAcqJ,cAAgB,EAAI1xsB,EAAKmgR,SAASx1V,KAAK09wB,cAAcqJ,cAAgB,EAC5I2C,EAAqBrlxB,MAAMknC,YAAYn2B,EAAU852B,EAAU,KAC/D,KAEgC,kBAA3Blv3B,KAAK8gxB,mBAA0C9vmB,GAAkB+4mB,GAWtC,eAA3B/pxB,KAAK8gxB,mBACVkuG,EAAW3q3B,MAAMknC,YAAYn2B,EAAUigE,EAAK/xE,KAAO,MACnD0r3B,EAAW3q3B,MAAMd,MAASA,EAAS,KACnCyr3B,EAAW3q3B,MAAMd,MAAS8xE,EAAK9xE,MAAS,KACnCytK,GAAkBs5mB,KACnBA,EAAmBjmxB,MAAMd,MAASA,EAAS,KAC3Cyr3B,EAAW3q3B,MAAMd,MAAS8xE,EAAK9xE,MAAS,MAEvCytK,GAAkBg5mB,KACnBO,EAAuBlmxB,MAAMd,MAAS8xE,EAAK0xsB,cAAiB,OAGhC,mBAA3B/mxB,KAAK8gxB,mBACVkuG,EAAW3q3B,MAAMd,MAAS8xE,EAAK9xE,MAAS,KACxCyr3B,EAAW3q3B,MAAMknC,YAAYn2B,EAAUigE,EAAK/xE,KAAO,MACnDur3B,EAAoBxq3B,MAAMd,MAAQ4mzB,EAAc9lzB,MAAMd,MAAS8xE,EAAK9xE,MAAS,KAC7Eur3B,EAAkBzq3B,MAAMknC,YAAYn2B,EAAUigE,EAAK9xE,MAAQwr3B,EAAiB5ywB,WAAa,OAEzD,qBAA3Bn8G,KAAK8gxB,mBACVkuG,EAAW3q3B,MAAMd,MAAS8xE,EAAK9xE,MAAS,KACxCyr3B,EAAW3q3B,MAAMknC,YAAYn2B,EAAUigE,EAAK/xE,KAAO,MACnDur3B,EAAoBxq3B,MAAMknC,YAAYn2B,EAAUigE,EAAK/xE,KAAO+xE,EAAKgxuB,SAAW,MACxErmzB,KAAK44B,OAAO06vB,0BACZu7F,EAAoBxq3B,MAAMknC,YAAYn2B,EAAUpV,KAAK6sqB,UAAY,MACjEgiN,EAAoBxq3B,MAAMknC,YAAY,MAAQvrC,KAAK8sqB,SAAY,MAC/D+hN,EAAoBxq3B,MAAMmkD,OAAS,OAIlCwoH,GAAkB+4mB,IAAuB2kG,IAC1C3kG,EAAkB1lxB,MAAMd,MAAS8xE,EAAK9xE,MAAS,KAC/CwmxB,EAAkB1lxB,MAAMf,KAAQ+xE,EAAK/xE,KAAQ,KAC7CtD,KAAKyk3B,mBAAmBpg3B,MAAMd,MAAS8xE,EAAK9xE,MAAS,KACrDvD,KAAKyk3B,mBAAmBpg3B,MAAMf,MAAStD,KAAK44B,OAAO06vB,wBAA0BtzxB,KAAK6sqB,UAAax3lB,EAAK/xE,MAAU,KAC9G0r3B,EAAW3q3B,MAAMknC,YAAYn2B,EAAUigE,EAAK/xE,KAAO,MACnD0r3B,EAAW3q3B,MAAMd,MAAS8xE,EAAK9xE,MAAS,MAEvCytK,GAAkBg5mB,KACnBP,EAAoBplxB,MAAMknC,YAAYn2B,EAAUq52B,EAAe,MAC/DzkG,EAAsB3lxB,MAAMd,MAAS8xE,EAAK0xsB,cAAiB,KACtD/1mB,GAAkB04mB,IACnBA,EAAqBrlxB,MAAMknC,YAAYn2B,EAAUigE,EAAK0xsB,cAAgB,GAAK,OAG/E2nG,IACAjlG,EAAoBplxB,MAAMknC,YAAYn2B,EAAUq52B,EAAe,MAC/DzkG,EAAsB3lxB,MAAMd,MAASijT,EAAQjjT,MAAS,KACjDytK,GAAkB04mB,IACnBA,EAAqBrlxB,MAAMknC,YAAYn2B,EAAUoxS,EAAQjjT,MAAQ,GAAK,SA1D9Eyr3B,EAAW3q3B,MAAMd,MAASA,EAAS,KACnCwmxB,EAAkB1lxB,MAAMd,MAASA,EAAS,KACrCytK,GAAkBg5mB,KACnBA,EAAsB3lxB,MAAMd,MAAS8xE,EAAK0xsB,cAAiB,KAC3D0C,EAAoBplxB,MAAMknC,YAAYn2B,EAAUq52B,EAAe,MAC1Dz9sB,GAAkB04mB,IACnBA,EAAqBrlxB,MAAMknC,YAAYn2B,EAAUigE,EAAK0xsB,cAAgB,GAAK,OAwD3F,CACA,GAAI/mxB,KAAK44B,OAAO06vB,0BAAuD,cAA3BtzxB,KAAK8gxB,mBAAgE,eAA3B9gxB,KAAK8gxB,mBAAiE,qBAA3B9gxB,KAAK8gxB,mBAAuE,kBAA3B9gxB,KAAK8gxB,mBAAwC,CAC3N,IAAIquG,EAAcnv3B,KAAK44B,OAAOm1c,UAAY9se,SAAS+t3B,EAAW3q3B,MAAMjB,OAASnC,SAAS+t3B,EAAW3q3B,MAAMf,MACnGtD,KAAK44B,OAAOm1c,UACZihZ,EAAW3q3B,MAAMjB,MAAS+r3B,EAAc,GAAM,KAG9CH,EAAW3q3B,MAAMf,KAAQ6r3B,EAAc,GAAM,IAErD,CACJ,EAQAnK,EAAYzm3B,UAAUysuB,eAAiB,SAAU9tuB,GAC7C,IAAIky3B,EAAepv3B,KAAKkl3B,eAGxB,GAFAll3B,KAAKws3B,kBAAoB,KACzBxs3B,KAAK6l3B,YAAYxB,4BAA2B,EAAOrk3B,KAAK09wB,cACpD19wB,KAAK8gxB,mBAAqB9gxB,KAAKkl3B,eAC/B,IAAMll3B,KAAKqm3B,gBAAkBrm3B,KAAKis3B,qBAAyBjs3B,KAAK44B,OAAO06vB,wBAA0B,CAC7F,GAAe,cAAXp2xB,EAAEuJ,MAAmC,eAAXvJ,EAAEuJ,MAAoC,aAAXvJ,EAAEuJ,KAAqB,CAC5E,IAAIwpf,EAAcjwf,KAAK2o3B,cAAczr3B,GACrC8C,KAAoB,cAAIu1B,SAASujd,iBAAiBmX,EAAYvub,MAAOuub,EAAYtub,MACrF,KACK,CACD,GAAI3hE,KAAK6zzB,kBAAkBh3C,kBAAoB78wB,KAAK6zzB,kBAAkBlnD,gBAAgBQ,eAAgB,CAClG,IAAI46G,EAAkB/n3B,KAAK44B,OAAOi8vB,cAAc70xB,KAAKyk3B,oBACjDnh3B,GAAS0tK,GAAkBz7I,SAASwK,KAAK7zB,YAAcqpB,SAASwK,KAAK7zB,UAAUisC,SAAS,YAAe,GAAK,EAC5G6vwB,EAAe,EAAIhozB,KAAK44B,OAAOguvB,gBAAgBqhC,oBAAsB3kzB,EACrE22zB,OAAS,EAETA,EADAj6zB,KAAK44B,OAAOm1c,UACH7se,KAAK4D,IAAIij3B,EAAgBzk3B,KAAO0kzB,EAAc,GAG9C9mzB,KAAK4D,IAAI5D,KAAK4D,IAAIij3B,EAAgBzk3B,KAAO0kzB,EAAc,GAAKhozB,KAAK44B,OAAOmovB,iBAAiBplJ,cAAcngiB,YAEpHx7F,KAAoB,cAAIu1B,SAASujd,iBAAiBmhV,EAAQ/8zB,EAAEuG,EAChE,MAEIzD,KAAoB,cAAIu1B,SAASujd,iBAAiB57e,EAAE6D,EAAG7D,EAAEuG,GAEzDzD,KAAoB,eAAKA,KAAoB,cAAEmE,UAAUC,SAAS,kBAClEpE,KAAoB,cAAIu1B,SAASujd,iBAAiB57e,EAAE6D,EAAIf,KAAoB,cAAe,YAAG9C,EAAEuG,GAExG,CACAzD,KAAKgyzB,YAAchyzB,KAAK44B,OAAOi/uB,IAAIj3wB,QACnCZ,KAAKitzB,iBAAmBjtzB,KAAK44B,OAAOs5uB,SAAStxwB,QAC7CZ,KAAKis3B,oBAAoB/u3B,GACzB8C,KAAKkl3B,gBAAiB,CAC1B,MAII,GAFAll3B,KAAK44B,OAAOslvB,UAAW,EACvBl+wB,KAAKqv3B,sCACDrv3B,KAAK44B,OAAO24vB,oBAAsBvxxB,KAAK44B,OAAO04vB,mBAAoB,CAClE,IAAID,EAAiBrxxB,KAAK44B,OAAO04vB,mBACjCD,EAAeI,sBAAsBJ,EAAeG,uBAAwBH,EAAeK,6BAA6B,EAAML,EAAeM,6BACjJ,CAGJ3xxB,KAAK44B,OAAOy5vB,qBAAuBrhnB,GAAkBhxK,KAAKyk3B,sBACrDzzsB,GAAkBhxK,KAAKyk3B,mBAAmBtv2B,cAAc,4BACrDnV,KAAKyk3B,mBAAmBtv2B,cAAc,0BAA0BhR,UAAUC,SAAS,8BACnFsuD,GAAY,CAAC1yD,KAAKyk3B,mBAAmBtv2B,cAAc,2BAA4B,4BAC/EnV,KAAKyk3B,mBAAmBpg3B,MAAMmkD,OAASxoD,KAAKoo3B,WAC5Cpo3B,KAAKoo3B,WAAa,KAIzBpo3B,KAAK44B,OAAOo+vB,aAAco4F,GAC3Bpv3B,KAAKogzB,iBAETpgzB,KAAKqs3B,iBACT,EAQArH,EAAYzm3B,UAAU0t3B,oBAAsB,SAAU/yzB,GAClD,IAAIkS,EAAO,CAAC,EACRzgE,EAAK3K,KAAK6o3B,WACVj+2B,EAAK5K,KAAK8o3B,WACVzzyB,EAAOr1E,KAAK6zzB,kBACZv8C,EAAct3wB,KAAK44B,OAAOmovB,iBAAiBkW,kBAAkBj3xB,KAAKyk3B,oBAClE552B,EAAK7K,KAAKip3B,WAEVqG,EADItv3B,KAAK2o3B,cAAczvzB,GACTyI,MAAQ3hE,KAAK44B,OAAOmovB,iBAAiBqH,mBAAmB7xU,UAC1C,2BAA3Bv2c,KAAK8gxB,mBACqB,4BAA3B9gxB,KAAK8gxB,mBAAqD9gxB,KAAKmm3B,kBAC/Dnm3B,KAAKml3B,kBAAmB,GAE5B,IAAIhgF,EAAe,IACa,2BAA3BnlyB,KAAK8gxB,mBACqB,4BAA3B9gxB,KAAK8gxB,oBAAoD9gxB,KAAKmm3B,mBAAqBnm3B,KAAKgm3B,sBAAsBnpG,iBAC9G78wB,KAAKgm3B,sBAAsBnpG,iBAAmB78wB,KAAK44B,OAAO0ivB,wBAC1D6pB,EAAaxnyB,KAAK+D,GAAO,GAAI,GAAI,CAAC1B,KAAK6zzB,oBAAoB,GAAM,IAC7D7zzB,KAAK44B,OAAOwjvB,iBACZp8wB,KAAK44B,OAAOwjvB,eAAkC,kBAAEp8wB,KAAK44B,OAAOwjvB,eAAkC,kBAAEt+wB,OAAS,GAAqB,iBAAIqnyB,EAC9HnlyB,KAAK44B,OAAOs3rB,eACZlwtB,KAAK44B,OAAOs3rB,cAAcqpC,YAAY,CAACv5vB,KAAK44B,OAAO4hwB,UAAY,UAAU,IAGjFx6xB,KAAK44B,OAAOk8vB,wBAAwBqkD,kBAAkBn50B,KAAKgm3B,sBAAuBhm3B,KAAKkm3B,oBAGvD,2BAA3Blm3B,KAAK8gxB,mBACqB,4BAA3B9gxB,KAAK8gxB,mBAAqD9gxB,KAAKur3B,SAAWxv1B,KAAKC,UAAUq5C,EAAKs3rB,kBAAoB5wuB,KAAKC,UAAUh8B,KAAKur3B,QAAQ5+G,iBAC1I3swB,KAAK44B,OAAOwjvB,gBAAkBp8wB,KAAK44B,OAAOwjvB,eAAkC,kBAAEt+wB,OAAS,IACvFkC,KAAK44B,OAAwB,kBAC7B54B,KAAK44B,OAAOwjvB,eAAkC,kBAAEn4wB,OAAOjE,KAAK44B,OAAOwjvB,eAAkC,kBAAEt+wB,OAAS,EAAG,GAC/GkC,KAAK44B,OAAOs3rB,eACZlwtB,KAAK44B,OAAOs3rB,cAAcqpC,YAAY,CAACv5vB,KAAK44B,OAAO4hwB,UAAY,UAAU,IAK7Ex6xB,KAAK44B,OAAOwjvB,gBAAkBp8wB,KAAK44B,OAAOs3rB,eAAiBlwtB,KAAK44B,OAAOwjvB,eAAkC,kBAAEt+wB,OAAS,GACpHkC,KAAK44B,OAAOs3rB,cAAcqpC,YAAY,CAACv5vB,KAAK44B,OAAO4hwB,UAAY,UAAU,IAG7E7vxB,IAAOE,GAAO3J,KAAK4D,IAAI8F,EAAK0k3B,KAAetv3B,KAAK44B,OAAO0+F,UAAYt3H,KAAK44B,OAAOunvB,eAAiB,IACnF,OAAT9qsB,IACAjK,EAAKigzB,cAAgBh2yB,EAAKs3rB,gBAC1BvhsB,EAAK35D,KAAO4jE,EACZjK,EAAKkssB,YAAcA,EACnBlssB,EAAKuwnB,aAAe37rB,KAAKunF,aACzBnc,EAAK01sB,kBAAoB9gxB,KAAK8gxB,kBAC9B11sB,EAAK42I,OAAS,iBACd52I,EAAKg7yB,iBAAmBpm3B,KAAKom3B,iBAC7Bh7yB,EAAKjpD,OAASniB,KAAKigV,cACnBjgV,KAAKmoxB,kBAAoB/8sB,EACzBprE,KAAKuv3B,cAAcnkzB,KAI/BprE,KAAK44B,OAA6B,sBAAI,CAC1C,EAOAos1B,EAAYzm3B,UAAU8w3B,oCAAsC,WACxDrv3B,KAAK44B,OAAO02qB,WAAWkgL,yBAAwB,EACnD,EACAxK,EAAYzm3B,UAAUkl3B,sBAAwB,SAAUh3G,GAKpD,IAJA,IAAIj3a,EAAWi3a,EAASj3a,SACpBi6hB,GAAa,EACbC,EAAiB1v3B,KAAKm3wB,mBAAmB3hb,GAAYx1V,KAAK44B,OAAO+nvB,YACjEgvG,EAAqB3v3B,KAAK44B,OAAO02uB,cAAc2N,iBAAiByyG,EAAgBjjH,EAAS9kS,UACpFxqe,EAAI,EAAGA,EAAIq4V,EAAS13V,OAAQX,IAAK,CACtC,IAAIqpT,EAAUgvC,EAASr4V,UAChBqpT,EAAQuge,cACX4oG,EAAqB,GAAKA,EAAqBnpkB,EAAQjjT,OACvDos3B,GAA0CnpkB,EAAQjjT,MAClDijT,EAAQuge,cAAgBvge,EAAQjjT,MAChCijT,EAAQsge,cAAe,GAElB2oG,IACLjpkB,EAAQuge,cAAgB4oG,EACxBnpkB,EAAQsge,cAAe,EACvB6oG,GAA0CnpkB,EAAQjjT,MAClDks3B,GAAa,EAErB,CACJ,EAQAzK,EAAYzm3B,UAAUgx3B,cAAgB,SAAUllvB,GAC5C,IAAIj/D,EAAO1pE,GAAO,CAAC,EAAG2oI,GAClBsxoB,EAAcvwsB,EAAK35D,KACnBg7vB,EAAWkP,EAAYhP,gBACvBijH,EAAkB5v3B,KAAK44B,OAAOs5uB,SAASxtwB,QAAQi3wB,GACnD,GAAI37wB,KAAK44B,OAAO06vB,yBAA2BtzxB,KAAK+o3B,UAAY,IAAgC,iBAAzB/o3B,KAAK44B,OAAOygvB,WAAgCsC,EAAYkB,iBAA6C,gBAAzB78wB,KAAK44B,OAAOygvB,UAA6B,CACpL,GAAIr5wB,KAAK44B,OAAOwhuB,qBAAsB,CAClC,IAAIy1H,EAAgB7v3B,KAAK44B,OAAO2pqB,gBAC5BvisB,KAAK6zzB,kBAAkBj5C,YAAci1G,EAAc7v3B,KAAK6zzB,kBAAkBj5C,WAAWjuvB,SAA2G,IAA/F3sB,KAAK44B,OAAO60yB,cAAc/o0B,QAAQmr3B,EAAc7v3B,KAAK6zzB,kBAAkBj5C,WAAWjuvB,SACnL3sB,KAAK44B,OAAO60yB,cAAc9v0B,KAAKky3B,EAAc7v3B,KAAK6zzB,kBAAkBj5C,WAAWjuvB,QAEnF3sB,KAAK2p3B,oBACL3p3B,KAAK+p3B,kBACL/p3B,KAAKwp3B,0BACL,IAAIsG,OAAgB,EACpB9v3B,KAAKk3nB,gBAAiB,EACtBl3nB,KAAK8szB,uBAAyB9szB,KAAKyk3B,mBAAmBpg3B,MAAMskY,UAC5D,IAAI//W,EAAMk4c,GAAQ9ge,KAAK+v3B,cAAe,MAAQ90xB,IAC9C,GAAIryE,EAAK,CACL,IAAI0uvB,EAAcr2wB,SAAS2nB,EAAIxY,aAAa,kBAC5C0/2B,EAAgB9v3B,KAAK44B,OAAOs5uB,SAASoF,GACrC,IAAI04G,EAA2Bhw3B,KAAK44B,OAAOi+yB,cAAci5C,EAAe,GAAGnj2B,MACvEsj2B,EAA2Bjw3B,KAAK44B,OAAOi+yB,cAAc720B,KAAK6zzB,kBAAmB,GAAGlnyB,MAChFzvB,EAAI,CACJ4jV,QAAQ,EACRrvU,KAAMzR,KAAK6zzB,kBACXv+uB,UAAWt1E,KAAK6zzB,kBAAkBlnyB,MAClCg+uB,UAAWmlH,EAAcnj2B,MACzBkpxB,aAAc71yB,KAAK44B,OAAOwhuB,qBAAmC,aAC7D81H,WAAYJ,GAGhB,GADA9v3B,KAAK44B,OAAOwmc,QAAQ,UAAWlie,IAC1BA,EAAU,QAAK4y3B,GAAiBx4G,IAAgBs4G,IAAqBI,IAA6BC,GAA6Bjw3B,KAAK6zzB,kBAAkBh3C,iBAAmBizG,EAAcjzG,kBAAsB78wB,KAAK6zzB,kBAAkBh3C,iBAAkB,CACvP,IAAIszG,EAAqBnw3B,KAAK44B,OAAOs5uB,SAASxtwB,QAAQor3B,GAClD162B,OAAW,EAKXA,GAJyB,gBAAzBpV,KAAK44B,OAAOygvB,UAA+BromB,GAAkBhxK,KAAK44B,OAAOwhuB,qBAAmC,iBAIhG01H,EAAcjzG,kBAAqBizG,EAAcl1G,YACpB,GAArCk1G,EAAc1yG,aAAat/wB,QAAgB,QAJpCkC,KAAK44B,OAAOwhuB,qBAAmC,aAM1Dp6vB,KAAK44B,OAAOwhuB,uBACiB,iBAAzBp6vB,KAAK44B,OAAOygvB,UAA6C,UAAbjkwB,GAAyB062B,EAAcjzG,iBAAqB7rmB,GAAkB8+sB,EAAcl1G,cACxIxlwB,EAAW,UACXpV,KAAK44B,OAAOwhuB,qBAAmC,aAAI,WAEnDhlvB,GACApV,KAAK44B,OAAOwhuB,qBAAqB7hE,YAAY,CAACq3L,GAAkBO,EAAoB/62B,IAG5FpV,KAAK+o3B,UAAY,CACrB,CACJ,CACA/o3B,KAAK2l3B,iBAAkB,CAC3B,CACI3l3B,KAAK44B,OAAO+1vB,oBACZ3uxB,KAAK44B,OAAOmovB,iBAAiB4P,+BAErC,CACA,GAA+B,qBAA3BvltB,EAAK01sB,kBACD11sB,EAAKuwnB,aAAah0N,WAAa8kS,EAAS9kS,WACxC3ne,KAAK44B,OAAOy2uB,eAAe,WAAYrvwB,KAAKqt3B,mBAAmB5gH,EAASlpwB,MAAOkpwB,EAASsa,eAAgBta,GAAU,GAC9GkP,EAAYf,YACZ56wB,KAAK44B,OAAO02qB,WAAW8gL,qBAAqBz0G,EAAYf,YAEvD5pmB,GAAkBy7lB,EAASj3a,WAC5Bx1V,KAAKyj3B,sBAAsBh3G,QAIlC,CACD,IAAIj3a,EAAWpqR,EAAK35D,KAAKk7vB,gBAAgBn3a,SACzC,IAAKxkL,GAAkBwkL,IAAaA,EAAS13V,OAAS,IAClB,iBAA3BkC,KAAK8gxB,mBAA8D,IAAtB9gxB,KAAK09wB,cACpB,cAA3B19wB,KAAK8gxB,mBAA2D,IAAtB9gxB,KAAK09wB,cACpB,kBAA3B19wB,KAAK8gxB,mBAAyC,CACtD,IAAIt6d,EAAUgvC,EAASx1V,KAAK09wB,cACxBrR,EAAYrswB,KAAK6zzB,kBAAkBlnD,gBACnC8/G,EAAwC,IAAtBzs3B,KAAK09wB,aAAqB,KAC1Clob,EAASx1V,KAAK09wB,aAAe,GAC/BgvG,EAAc1s3B,KAAK09wB,eAAiBlob,EAAS13V,OAAS,EAAI,KACxD03V,EAASx1V,KAAK09wB,aAAe,GAC/BhN,EAAS1/lB,GAAkB07sB,GACiB1s3B,KAAK44B,OAAOu9uB,oBAAxD,IAAIn+vB,KAAK002B,EAAYpkc,UAAUjwa,WAC/Bs4vB,EAAS3/lB,GAAkBy7sB,GACmBzs3B,KAAK44B,OAAOq5uB,sBAA1D,IAAIj6vB,KAAKy02B,EAAgBjkc,QAAQnwa,WACjCmswB,EAAa,IAAIxswB,KAAKwuS,EAAQ8hI,UAAUjwa,WACxCoswB,EAAW,IAAIzswB,KAAKwuS,EAAQgiI,QAAQnwa,WASxC,GAR2C,QAAvCrY,KAAK44B,OAAOy9uB,eAAemK,SAA+D,SAA1CxgxB,KAAK44B,OAAOy9uB,eAAee,YAC3EoN,EAAWtyT,SAASsyT,EAAWprwB,WAAa,GAC5CqrwB,EAASvyT,SAASuyT,EAASrrwB,WAAa,KAGxCorwB,EAAW5/uB,QAAQ4/uB,EAAWtrwB,WAC9BurwB,EAAS7/uB,QAAQ6/uB,EAASvrwB,YAE1BlZ,KAAK44B,OAAOw0uB,gBAOZ,GANAsD,EAAMx+S,SAAS,EAAG,EAAG,EAAG,GACxBy+S,EAAMz+S,SAAS,EAAG,EAAG,EAAG,GACxBsyT,EAAW5/uB,QAAQ4/uB,EAAWtrwB,UAAY,GAC1CurwB,EAAS7/uB,QAAQ6/uB,EAASvrwB,UAAY,GACtCsrwB,EAAWtyT,SAAS,EAAG,EAAG,EAAG,GAC7BuyT,EAASvyT,SAAS,EAAG,EAAG,EAAG,GACvBsyT,EAAWnswB,WAAas4vB,EAAMt4vB,YAAc24J,GAAkBy7sB,KAAqBz7sB,GAAkBw1I,GAAU,CAC/G,IAAI6pkB,EAAmB,CACnB,CAAE,kBAAqB5D,EAAgB/uG,aAAc,mBAAsBl3d,EAAQk3d,eAEvF19wB,KAAK44B,OAAOguvB,gBAAgB87B,UAAUr2C,EAAUoO,OAAQ41G,EAC5D,MACK,GAAI5rG,EAASpswB,WAAaq4vB,EAAMr4vB,WAAarY,KAAK09wB,eAAiBlob,EAAS13V,OAAS,EAAG,CACzF,IAAIwy3B,EAAmB,CACnB,CAAE,kBAAqB9pkB,EAAQk3d,aAAc,mBAAsBgvG,EAAYhvG,eAEnF19wB,KAAK44B,OAAOguvB,gBAAgB87B,UAAUr2C,EAAUoO,OAAQ61G,EAC5D,MACK,GAAI7rG,EAASpswB,WAAaq4vB,EAAMr4vB,UAAW,CAC5CmuS,EAAQgiI,QAAQ5jZ,QAAQ5kC,KAAK44B,OAAOu9uB,oBAAoBj9vB,UAAY,GACpEstS,EAAQ8hI,UAAYtob,KAAK44B,OAAO02uB,cAAcH,aAAa3od,EAAQgiI,QAAShiI,EAAQ7yP,SAAU04sB,EAAU+C,aAAc/C,GAEtH,IAAK,IAAIlvwB,EAAIq4V,EAAS13V,OAAS,EAAGX,GAAK,EAAGA,IAAK,CAC3C,IAAIoz3B,EAAY/6hB,EAASr4V,GACrBqz3B,EAAUD,EAAU/nc,QACxBgoc,EAAQ5r1B,QAAQ4r1B,EAAQt32B,UAAYq32B,EAAU1gH,gBAC9C0gH,EAAU/nc,QAAUgoc,EACpBD,EAAUjoc,UAAYtob,KAAK44B,OAAO02uB,cAAcH,aAAaohH,EAAU/nc,QAAS+nc,EAAU58zB,SAAU04sB,EAAU+C,aAAc/C,EAChI,CACJ,OAIA,GAAIoY,EAASpswB,WAAaq4vB,EAAMr4vB,WAAarY,KAAK09wB,eAAiBlob,EAAS13V,OAAS,IAAMkC,KAAK44B,OAAOw0uB,gBAA+K,IAA7JptwB,KAAK44B,OAAO02uB,cAAcY,YAAalwwB,KAAK44B,OAAO02uB,cAAchC,eAAemX,EAAUhY,GAAU,GAASiE,EAAOjE,EAAS2C,cAAc,GAAO,GAAc,CACrR,IAAIuzC,EAAiB,CACjB,CAAE,kBAAqBn8f,EAAQk3d,aAAc,mBAAsBgvG,EAAYhvG,eAEnF19wB,KAAK44B,OAAOguvB,gBAAgB87B,UAAUr2C,EAAUoO,OAAQkoC,EAC5D,MAEK,GAAIn+B,EAAWnswB,WAAas4vB,EAAMt4vB,YAAc24J,GAAkBy7sB,KAAqBz7sB,GAAkBw1I,KAAaxmT,KAAK44B,OAAOw0uB,gBAA+K,IAA7JptwB,KAAK44B,OAAO02uB,cAAcY,YAAalwwB,KAAK44B,OAAO02uB,cAAcf,aAAaiW,EAAY/X,GAAU,GAASkE,EAAOlE,EAAS2C,cAAc,GAAO,GAAc,CACjTuzC,EAAiB,CACjB,CAAE,kBAAqB8pE,EAAgB/uG,aAAc,mBAAsBl3d,EAAQk3d,eAEvF19wB,KAAK44B,OAAOguvB,gBAAgB87B,UAAUr2C,EAAUoO,OAAQkoC,EAC5D,CAER,CACA3izB,KAAK44B,OAAO02uB,cAAckM,gBAAgBpwsB,EAAK35D,KACnD,CACAzR,KAAK44B,OAAO02uB,cAAcmM,eAAeE,GACzC37wB,KAAK44B,OAAO02qB,WAAW0qI,qBAAqB5uwB,EAChD,EASA45yB,EAAYzm3B,UAAU8u3B,mBAAqB,SAAUoD,EAAaC,GAC9D,OAAOxv3B,KAAK4hC,KAAO4t1B,EAAgBD,EAAe,IACtD,EAOAzL,EAAYzm3B,UAAUut3B,cAAgB,WAClC,IAOIxo3B,EAPAqH,EAAK3K,KAAK6o3B,WACVj+2B,EAAK5K,KAAK8o3B,WACVj+2B,EAAK7K,KAAKip3B,WACVn+2B,EAAK9K,KAAKkp3B,WACVpr3B,EAASoD,KAAKkJ,MAAMO,EAAKE,IAAOF,EAAKE,IAAOD,EAAKE,IAAOF,EAAKE,IAC7Dm4C,EAAuC,IAA/B/hD,KAAKw1D,MAAM5rD,EAAKF,EAAIC,EAAKF,GAAYzJ,KAAK4C,GAClD4a,EAAY,WAAa1e,KAAK44B,OAAOm1c,WAAa9qb,EAAQA,GAAS,OAEnE1/C,EAAQ,EACPytK,GAAkBz7I,SAAS9H,iBAAiB,gBAAgB,MAC7DlqB,EAAQgyB,SAAS9H,iBAAiB,gBAAgB,GAAG6hU,aAE1B,2BAA3BtvV,KAAK8gxB,oBAEDx9wB,EADAtD,KAAK44B,OAAOm1c,UACHxqe,GAASvD,KAAKql3B,kBAAqBrl3B,KAAK44B,OAAOguvB,gBAAgBqhC,oBAAsB,GAC1F/mzB,KAAK4D,IAAI9E,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,MAG9DtD,KAAKql3B,kBAAqBrl3B,KAAK44B,OAAOguvB,gBAAgBqhC,oBAAsB,EAChFjozB,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,MAGtC,4BAA3BtD,KAAK8gxB,oBAEDx9wB,EADAtD,KAAK44B,OAAOm1c,UACJxqe,GAASvD,KAAKql3B,kBAAoBrl3B,KAAKul3B,mBAC1Cvl3B,KAAK44B,OAAOguvB,gBAAgBqhC,oBAAsB,GAAO/mzB,KAAK4D,IAAI9E,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,MAGxHtD,KAAKql3B,kBAAoBrl3B,KAAKul3B,mBACjCvl3B,KAAK44B,OAAOguvB,gBAAgBqhC,oBAAsB,EAAK/mzB,KAAK4D,IAAI9E,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAe/oxB,OAGtI,IAAIH,EAAQnD,KAAKsl3B,iBAAqBtl3B,KAAKwl3B,oBAAsB,EAC7Dxl3B,KAAK44B,OAAOmovB,iBAAiBqH,mBAAmB7xU,UAAav2c,KAAK44B,OAAOmovB,iBAAiBC,aAAaqL,eAAelpxB,IAC1HnD,KAAK+zxB,iBAAgB,GACrB/zxB,KAAK2w3B,UAAY3y1B,GAAc,MAAO,CAClC9xB,UzFt0EW,qByFs0Ee4J,GAAI,iBAAmB9V,KAAK44B,OAAO6gC,QAAQ3jD,GACrEk+C,OAAQ,gCAAkCt1C,EAAlC,qEACkE5gB,EAAS,GAD3E,UAEKqF,EAAM,QAEnBnD,KAAK44B,OAAOm1c,WACZ/te,KAAK2w3B,UAAUts3B,MAAMf,KAAO,OAC5BtD,KAAK2w3B,UAAUts3B,MAAMjB,MAAQE,EAAO,KACpCtD,KAAK2w3B,UAAUts3B,MAAMu+Y,gBAAkB,YAGvC5iZ,KAAK2w3B,UAAUts3B,MAAMjB,MAAQ,OAC7BpD,KAAK2w3B,UAAUts3B,MAAMf,KAAOA,EAAO,KACnCtD,KAAK2w3B,UAAUts3B,MAAMu+Y,gBAAkB,WAE3C5iZ,KAAK44B,OAAOmovB,iBAAiBqH,mBAAmB7wwB,YAAYvX,KAAK2w3B,UACrE,EAOA3L,EAAYzm3B,UAAUw1xB,gBAAkB,SAAU68F,GAC1C5w3B,KAAK2w3B,YACL9p3B,GAAO7G,KAAK2w3B,WACZ3w3B,KAAK2w3B,UAAY,KACbC,IACA5w3B,KAAKql3B,kBAAoB,EACzBrl3B,KAAKsl3B,iBAAmB,EACxBtl3B,KAAKul3B,mBAAqB,EAC1Bvl3B,KAAKwl3B,oBAAsB,EAC3B9yzB,GAAY1yD,KAAK44B,OAAOmovB,iBAAiBplJ,cAAclumB,iBAAiB,IAAMwtE,IAA6B,CAACA,MAGxH,EAOA+pxB,EAAYzm3B,UAAUqt3B,oCAAsC,SAAU1u3B,GAClE,IAAIilB,EAASniB,KAAKwm3B,qBAAqBtp3B,GACnCu8D,EAAU60nB,GAAansqB,EAAQ84E,IAC/B41xB,EAAWt71B,SAASwK,KAAK7zB,UAAUisC,SAAS,YAChDn4C,KAAKuk3B,sBAAwB,KAC7B,IAAI9oxB,EAAY,EAahB,GAZI6ylB,GAAansqB,EAAQ84E,KACrBj7F,KAAKuk3B,sBAAwB,yBAC7Bvk3B,KAAK0m0B,kBAAoB,SAEpBp4I,GAAansqB,EAAQ84E,KAC1Bj7F,KAAKuk3B,sBAAwB,0BAC7Bvk3B,KAAK0m0B,kBAAoB,WAGzB1m0B,KAAKuk3B,sBAAwB,KAC7Bvk3B,KAAK0m0B,kBAAoB,MAEzB1m0B,KAAKyk3B,qBAAuBhrzB,GAAWz5D,KAAKyk3B,qBAAuBzk3B,KAAKim3B,yBAA0B,CAClG,GAAIjm3B,KAAK44B,OAAOu1vB,qBAAuBnuxB,KAAK44B,OAAO48nB,qBAE/C/5jB,EADYz7F,KAAK44B,OAAOu1vB,oBAAoBC,kBAG3CpuxB,KAAK44B,OAAOu1vB,qBAAuBnuxB,KAAK44B,OAAO48nB,uBAC/Cx1pB,KAAKql3B,oBAAuBrl3B,KAAK44B,OAAO48nB,wBACpCx1pB,KAAK44B,OAAO0ivB,uBAKTt7wB,KAAKyk3B,mBAAmBn+0B,SAAS,GAAGniC,UAAUC,SAAS,kCACvDpE,KAAKql3B,kBAAoBrl3B,KAAKsn3B,mBAAmBhh1B,SAAS,GAAe,WAAItmC,KAAKsn3B,mBAAmBnrwB,YAAe00wB,EAAY,GAAK,GACrI7w3B,KAAKsl3B,iBAAqBtl3B,KAAKsn3B,mBAAmBpj3B,cAAcqyc,UAAYv2c,KAAKsn3B,mBAAmBtgiB,aAAe,EAAI,EAAKhnV,KAAKyk3B,mBAAmBn+0B,SAAS,GAAc,UAAKm1D,IANpLz7F,KAAKql3B,kBAAoBrl3B,KAAKsn3B,mBAAmBnrwB,YAAe00wB,EAAY,GAAK,GACjF7w3B,KAAKsl3B,iBAAmBtl3B,KAAKsn3B,mBAAmBpj3B,cAAcqyc,UAAYv2c,KAAKsn3B,mBAAmBtgiB,aAAe,EAAIvrP,GAYzHz7F,KAAKul3B,mBAAqBvl3B,KAAKsn3B,mBAAmBh4hB,aAAgBuhiB,EAAY,GAAK,GACnF7w3B,KAAKwl3B,oBAAsBxl3B,KAAKsn3B,mBAAmBtgiB,cAEvDhnV,KAAK8m3B,+BAA+BrtzB,EAASz5D,KAAKim3B,0BAA0B,EAChF,CACIj1sB,GAAkBhxK,KAAKuk3B,yBAA2BvzsB,GAAkBhxK,KAAKwk3B,2BACvExk3B,KAAKgm3B,sBAAsBnpG,iBAAmB78wB,KAAKgm3B,sBAAsBnpG,iBACvE78wB,KAAK44B,OAAO0ivB,yBAChBt7wB,KAAK6l3B,YAAYxB,4BAA2B,EAAOrk3B,KAAK09wB,cACxDhrtB,GAAY,CAAC1yD,KAAKwk3B,uBAAuBrv2B,cAAc,IAAM8lF,KAA0B,CAACA,KACxFvoC,GAAY,CAAC1yD,KAAKwk3B,uBAAuBrv2B,cAAc,IAAM8lF,KAA2B,CAACA,MAE7Fj7F,KAAKwk3B,uBAAyBxk3B,KAAKuk3B,sBAAwB9qzB,EAAU,KACrEz5D,KAAKim3B,yBAA2BxszB,EAChCz5D,KAAKgm3B,sBAAwBh1sB,GAAkBhxK,KAAKwk3B,wBAChD,KAAOxk3B,KAAK44B,OAAOmovB,iBAAiB0S,mBAAmBzzxB,KAAKwk3B,uBACpE,EAEAQ,EAAYzm3B,UAAUst3B,uBAAyB,SAAU3u3B,EAAGk3xB,GACxD,IACI08F,EADA7lN,EAAsBjrqB,KAAK44B,OAAO6gC,QAAQqna,QAAQ,mBAEtD,GAAImqM,EAAqB,CACrB,IAAI29M,EAAQzm3B,WAAWQ,iBAAiBsoqB,GAAqBvopB,MAC7Dou2B,EAAc5z3B,EAAEykE,MAAQinzB,CAC5B,CACA,IAEIzsG,EACA/7e,EAHA2wlB,EAAW/w3B,KAAK6zzB,kBAAkBlnD,gBAClCqkH,EAAShx3B,KAAKgm3B,sBAAwBhm3B,KAAKgm3B,sBAAsBr5G,gBAAkB,KAGnFxqvB,EAASniB,KAAKwm3B,qBAAqBtp3B,GACnCu8D,EAAUt3C,EACVq+O,EAAoC,iBAAzBxgQ,KAAK44B,OAAOygvB,SAA8B03G,EAASt2G,OAASs2G,EAASr2G,YAiBpF,GAhB+B,2BAA3B16wB,KAAK8gxB,kBACL3E,EAAc37gB,GAAYxgQ,KAAK44B,OAAOm1c,UAAY,IAAM,KAExB,4BAA3B/te,KAAK8gxB,oBACV3E,EAAc37gB,GAAYxgQ,KAAK44B,OAAOm1c,UAAY,IAAM,MAExD/te,KAAKuk3B,wBAC8B,2BAA/Bvk3B,KAAKuk3B,uBACLpoG,GAAen8wB,KAAK44B,OAAOm1c,UAAY,IAAM,IAC7C3tM,EAAgBpgS,KAAK44B,OAAOm1c,UAAY,SAAW,SAEf,4BAA/B/te,KAAKuk3B,wBACVpoG,GAAen8wB,KAAK44B,OAAOm1c,UAAY,IAAM,IAC7C3tM,EAAgBpgS,KAAK44B,OAAOm1c,UAAY,QAAU,WAGtD/8T,GAAkBggtB,GAClBhx3B,KAAKmm3B,iBAAkB,MAD3B,CAII6K,EAAOt0G,iBACP18wB,KAAKkm3B,iBAAmB8K,EAAOt0G,iBAAmB,IAAMP,EAGxDn8wB,KAAKkm3B,iBAAmB/pG,EAE5B,IAAI80G,EAAcjx3B,KAAK44B,OAAOk8vB,wBAAwBo8F,4BAA4Blx3B,KAAKgm3B,sBAAuBhm3B,KAAKkm3B,kBAE/GiL,EAAmBnx3B,KAAK44B,OAAOwhvB,kBAAkBg1C,qBAAqBjzC,EAAan8wB,KAAKgm3B,uBACxF56yB,EAAO,CAAC,EAeZ,GAdAA,EAAK2lzB,SAAWA,EAChB3lzB,EAAK4lzB,OAASA,EACd5lzB,EAAKgmzB,qBAAuBpx3B,KAAKkm3B,iBACjC96yB,EAAK+wsB,YAAcg1G,GAAoBA,EAAiB,GACxD/lzB,EAAK6lzB,YAAcA,EACnB7lzB,EAAKyhM,YAAc,qBACnB7sQ,KAAK44B,OAAOwmc,QAAQ,cAAeh0Z,GAC9B4lG,GAAkBhxK,KAAK44B,OAAOq0pB,mBAAoE,YAA/CjtrB,KAAK44B,OAAOq0pB,iBAAiBC,eAAmD,sBAApB9hnB,EAAKyhM,YAG5F,sBAApBzhM,EAAKyhM,aACV7sQ,KAAK44B,OAAOo8lB,cAHZh1nB,KAAK44B,OAAOu0pB,cAKhB/hnB,EAAK6lzB,eAAeA,GAAe7lzB,EAAK6lzB,cAAsB7lzB,EAAK6lzB,YAC/D7lzB,EAAK6lzB,YAAa,CAIlB,GAHKjx3B,KAAK6l3B,YAAY13H,YAAenuvB,KAAK44B,OAAOo+vB,YAC7Ch3xB,KAAK6l3B,YAAYxB,4BAA2B,EAAMrk3B,KAAK09wB,cAEvD19wB,KAAK6l3B,YAAY13H,WAAY,CAC7BnuvB,KAAK44B,OAAOk1vB,oBAAoBs4C,aAAaznzB,UAAY3e,KAAK44B,OAAOk1vB,oBAAoBw4C,+BAA+Btm0B,KAAK44B,OAAO02qB,WAAWygE,kBAAkB8jD,kBAAkBlnD,gBAAgBgW,SAAU3ixB,KAAK44B,OAAO02qB,WAAWygE,kBAAkBy2D,oBAAqB,GAAI,IAC/Q,IAAI19sB,EAAQ9oH,KAAK44B,OAAOk1vB,oBAAoBs4C,aAAajxzB,cAAc,kBAAkBsY,iBAAiB,MAC1Gq7F,EAAM,GAAGszF,UAAY40qB,EAAOruG,SAC5B75pB,EAAM,GAAGszF,UAAYp8M,KAAK44B,OAAOy0pB,UAAUxxM,YAAYz7M,GACvD,IAAI4hiB,EAAiBhi0B,KAAK44B,OAAOk1vB,oBAAoBs4C,aAAali0B,cAAcA,cAC5E89zB,EAAezrX,UAAYyrX,EAAeh7e,aAAe8piB,IACzD9uD,EAAe39zB,MAAMlB,IAAOjG,EAAEykE,MAAQqgwB,EAAeh7e,aAAe,GAAM,KAElF,CACAhnV,KAAKmm3B,iBAAkB,CAC3B,MAEQnm3B,KAAK44B,OAAOo+vB,YACR70wB,EAAOhe,UAAUC,SAAS62F,KAC1B94E,EAAOhe,UAAUC,SAAS62F,MAC1Bj7F,KAAK4m3B,4BAA2B,GAIpCn0zB,GAAS,CAACgH,GAAU,CAACwhC,KAEzBj7F,KAAKmm3B,iBAAkB,CAnD3B,CAqDJ,EAEAnB,EAAYzm3B,UAAUoq3B,cAAgB,SAAUzvzB,GAC5C,IAAI+2b,EAAc,CAAC,EACf/yf,EAAIg8D,EAGR,GAFA+2b,EAAYvub,MAAQxkE,EAAEwkE,MACtBuub,EAAYtub,MAAQzkE,EAAEykE,MAClBzI,GAAwB,UAAfA,EAAMzyD,KAAkB,CACjC,IAAI4lhB,EAAMnzd,EACO,cAAbmzd,EAAI5lhB,MAAqC,eAAb4lhB,EAAI5lhB,MAAsC,aAAb4lhB,EAAI5lhB,OAC7Dwpf,EAAYvub,MAAQ2qd,EAAI58e,eAAe,GAAGiyB,MAC1Cuub,EAAYtub,MAAQ0qd,EAAI58e,eAAe,GAAGkyB,MAElD,CACA,OAAOsub,CACX,EAGA+0X,EAAYzm3B,UAAUio3B,qBAAuB,SAAUttzB,GACnD,GAAKl5D,KAAK44B,OAAOo+vB,WAGZ,CACD,IAAI95xB,EAAI8C,KAAK2o3B,cAAczvzB,GAC3B,OAAO3jC,SAASujd,iBAAkB57e,EAAEwkE,MAAQ/8D,OAAO29D,YAAeplE,EAAEykE,MAAQh9D,OAAO49D,YACvF,CALI,OAAOrJ,EAAM/2C,MAMrB,EACA6i2B,EAAYzm3B,UAAUso3B,yBAA2B,WACzC7m3B,KAAK44B,OAAOosqB,iBAC2B,SAAvChlsB,KAAK44B,OAAOkrqB,kBAAkBj4qB,MACY,aAAvC7rB,KAAK44B,OAAOkrqB,kBAAkBr9rB,MACjCzG,KAAK44B,OAAOosqB,gBAAgBu4B,WAEpC,EACAynJ,EAAYzm3B,UAAUg/qB,aAAe,WAC7Bv9qB,KAAK44B,OAAOspc,cAGhBlie,KAAK44B,OAAOyW,IAAI,iBAAkBrvC,KAAKw9tB,kBACvCx9tB,KAAK44B,OAAOyW,IAAI,eAAgBrvC,KAAKgruB,gBACrChruB,KAAK44B,OAAOyW,IAAI,kBAAmBrvC,KAAK8l3B,mBACxC9l3B,KAAK44B,OAAOyW,IAAI,iBAAkBrvC,KAAK+l3B,iBACvC/l3B,KAAK44B,OAAOyW,IAAI,kBAAmBrvC,KAAK68vB,mBAC5C,EAKAmoH,EAAYzm3B,UAAUklE,QAAU,WAC5BzjE,KAAKu9qB,eACLv9qB,KAAKqs3B,kBACLrs3B,KAAK44B,OAAO02qB,WAAWygE,uBAAoB9isB,CAC/C,EACO+3yB,CACX,CAlpFiC,CAkpF/B/3G,IClrFE/rhB,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAKIwy3B,IAAU,QACVC,IAAc,YAGdC,IAAe,cACfC,IAAoB,oBACpBC,IAAmB,mBACnBC,IAAiB,eACjBC,IAAsB,qBACtBC,IAAqB,oBACrBC,IAAa,kBACbC,IAAc,mBACdC,IAAmB,yBACnBC,IAAkB,wBAclBC,IAAyB,SAAUztqB,GAQnC,SAASytqB,EAAQjz2B,EAASy6C,GACtB,OAAO+qJ,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,IAClD,CAobA,OA7bAkhP,IAAU+woB,EAASztqB,GAgBnBytqB,EAAQ1z3B,UAAUgwe,UAAY,WAC1Bvue,KAAKwvI,QAAU0tV,GAAQ5hZ,KAAKz6E,KAC5Bb,KAAKky3B,aAAgC,YAAjBly3B,KAAKwvI,QACzBxvI,KAAKu9d,SAAWL,GAAQK,SACxBv9d,KAAKmy3B,YAAa,EAClB,IAAI14zB,EAAUz5D,KAAKy5D,QACnBz5D,KAAKoy3B,QAA2B,SAAjBpy3B,KAAKwvI,SAAuC,SAAjBxvI,KAAKwvI,QAC/CxvI,KAAKy9E,aACc,KAAfhkB,EAAQ3jD,KACR2jD,EAAQ3jD,GAAKutc,GAAY,WACzBrjd,KAAKwgQ,UAAW,GAEpB/mM,EAAQp1D,MAAMqmB,QAAU,QACpB1qB,KAAK+te,WACLt0a,EAAQt1D,UAAU2C,IAAIuq3B,IAE9B,EAOAY,EAAQ1z3B,UAAUupE,OAAS,WACvB9nE,KAAK4xqB,YAAc,IAAI51L,GAAMh8e,KAAKy5D,QAAS,CAAEy8mB,OAAQl2qB,KAAKqy3B,aAAa9k3B,KAAKvN,MAAO8l2B,MAAO9l2B,KAAKsy3B,aAAa/k3B,KAAKvN,QACjH0+d,GAAa53d,IAAI9G,KAAKuy3B,UAAW,SAAUvy3B,KAAKohqB,cAAephqB,MAC1DA,KAAKu9d,UAINv9d,KAAKy5D,QAAQt1D,UAAU2C,IAAI+q3B,KAC3B7x3B,KAAKwy3B,cAAcxy3B,KAAKy5D,UAJxBz5D,KAAKyy3B,cAAczy3B,KAAKy5D,SAM5Bz5D,KAAK0y3B,gBACT,EACAT,EAAQ1z3B,UAAUm03B,eAAiB,WAC3B1htB,GAAkBhxK,KAAK2y3B,aAAe3y3B,KAAK2y3B,WAAa,GACxD3y3B,KAAK2y3B,WAAa3y3B,KAAKuy3B,UAAUjjiB,YACjCtvV,KAAKmy3B,YAAa,GAGlBny3B,KAAKmy3B,YAAa,CAE1B,EACAF,EAAQ1z3B,UAAUk/E,WAAa,WAC3B,IAAI80yB,EAAYvy3B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAtF/B,sBAuFTmjV,EAAYrvV,KAAKg+B,cAAc,MAAO,CAAE9xB,UAxF/B,kBAyFbmjV,EAAUzmV,aAAa,WAAY,MAGnC,IAFA,IAAI62d,EAAMz/d,KAAKy5D,QAEN0gK,EAAK,EAAGy4pB,EADF,GAAGhy3B,MAAMb,KAAK0/d,EAAIn5b,UACO6zL,EAAKy4pB,EAAW903B,OAAQq8N,IAAM,CAClE,IAAI4rnB,EAAQ6sC,EAAWz4pB,GACvBo4pB,EAAUh72B,YAAYwu0B,EAC1B,CACA12f,EAAU93U,YAAYg72B,GACtB9yZ,EAAIlod,YAAY83U,GAChBA,EAAUhrV,MAAMy0V,UAAY,SAC5B94V,KAAKuy3B,UAAYljiB,EACjBrvV,KAAK6y3B,YAAcN,CACvB,EACAN,EAAQ1z3B,UAAUgye,eAAiB,WAE/B,OAAOvwe,KAAK6we,aADI,CAAC,cAErB,EAOAohZ,EAAQ1z3B,UAAUyke,cAAgB,WAC9B,MAAO,SACX,EAMAivZ,EAAQ1z3B,UAAUklE,QAAU,WACxB,IAAIg8Z,EAAMz/d,KAAKy5D,QACfgma,EAAIp7d,MAAMqmB,QAAU,GACpB+0c,EAAIt7d,UAAU0C,OA9HP,aA+HP44d,EAAIt7d,UAAU0C,OAAOgr3B,KACrBpyZ,EAAIt7d,UAAU0C,OAAOwq3B,KACrB,IAAI/6jB,EAAMmqK,GAAU,MAAQhB,EAAI3pd,GAAK,QAAU472B,IAAgBjyZ,GAC3Dh8C,EAAUg9C,GAAU,IAAMqxZ,IAAaryZ,GAC3C,GAAG7+d,MAAMb,KAAK0jb,GAAS1lb,SAAQ,SAAU0he,GACrCY,GAAOZ,EACX,IACA,IAAK,IAAItlQ,EAAK,EAAGjiC,EAAK,GAAGt3L,MAAMb,KAAKC,KAAK6y3B,YAAYvs1B,UAAW6zL,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAClF,IAAIwkI,EAAOzmK,EAAGiiC,GACdslQ,EAAIlod,YAAYonV,EACpB,CACI3+V,KAAKwgQ,UACLxgQ,KAAKy5D,QAAQlG,gBAAgB,MAEjC8sa,GAAOrge,KAAKuy3B,WACRj8jB,EAAIx4T,OAAS,IACbuie,GAAO/pK,EAAI,IACNtlJ,GAAkBslJ,EAAI,KACvB+pK,GAAO/pK,EAAI,KAGnBooK,GAAa73d,OAAO7G,KAAKuy3B,UAAW,SAAUvy3B,KAAKohqB,eACnDphqB,KAAK4xqB,YAAYnumB,UACjBzjE,KAAK4xqB,YAAc,KACnBptd,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,KAClC,EAQAiy3B,EAAQ1z3B,UAAUk0pB,QAAU,SAAU3zpB,GAClC,IAAIg03B,EAAUryZ,GAAU,sBAAwB6wZ,IAAc,IAAKtx3B,KAAKy5D,SACpE36D,EACAkB,KAAKy5D,QAAQt1D,UAAU2C,IAAIwq3B,KAG3Btx3B,KAAKy5D,QAAQt1D,UAAU0C,OAAOyq3B,KAElC,GAAG1w3B,MAAMb,KAAK+y3B,GAAS/03B,SAAQ,SAAU8H,GACrCA,EAAG+C,aAAa,WAAa9J,EAAc,KAAN,IACzC,GACJ,EACAmz3B,EAAQ1z3B,UAAUi03B,cAAgB,SAAU/4zB,GACxC,IAAI3jD,EAAK2jD,EAAQ3jD,GAAG3O,OAAO,QACvB4r3B,EAAkB/y3B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW4l3B,IAAc,IAAMC,MAC7EiB,EAAW,KAAOv5zB,EAAQ3jD,GAAG3O,OAAO,QAAUuq3B,IAAiB,IAAMC,KACrEsB,EAAWjz3B,KAAKg+B,cAAc,MAAO,CAAEloB,GAAIA,EAAG3O,OAAO,UAAW+E,UAAW8m3B,IAC3E1hX,EAAUtxgB,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWsl3B,IAAoB,IAAMD,IAAe,aAC9F0B,EAAS172B,YAAY+5f,GACrB,IAAI4hX,EAAUlz3B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW4l3B,IAAc,IAAME,MACrEhy3B,KAAKoy3B,SACLa,EAAS9u3B,UAAU2C,IAAI,cAE3B2yD,EAAQliD,YAAYw72B,GACpBt5zB,EAAQliD,YAAY072B,GACpBx5zB,EAAQxjD,aAAai92B,EAASz5zB,EAAQ9rC,YACtC3tB,KAAKmz3B,aAAa,CAACF,GACvB,EACAhB,EAAQ1z3B,UAAUk03B,cAAgB,SAAUh5zB,GACxC,IAAI3jD,EAAK2jD,EAAQ3jD,GAAG3O,OAAO,QACvB6r3B,EAAW,KAAOv5zB,EAAQ3jD,GAAG3O,OAAO,QAAUuq3B,IAAiB,IAAMC,KACrEyB,EAAkB,CAAE,KAAQ,SAAU,GAAMt92B,EAAG3O,OAAO,UAAW,aAAc,gBAC/EmvT,EAAMt2T,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW8m3B,EAAUtg1B,MAAO0g1B,IAClE98jB,EAAI1tT,aAAa,gBAAiB,SAClC,IAAI0ogB,EAAUtxgB,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWsl3B,IAAoB,IAAMD,IAAe,aAC1F8B,EAAU,KAAO55zB,EAAQ3jD,GAAG3O,OAAO,QAAUuq3B,IAAiB,IAAME,KACpE0B,EAAiB,CAAE,KAAQ,SAAU,GAAMx92B,EAAG3O,OAAO,SAAU,aAAc,eAC7Eos3B,EAASvz3B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWmn3B,EAAU,IAAM/B,IAAa5+0B,MAAO4g1B,IACxFC,EAAO3q3B,aAAa,gBAAiB,QACrC,IAAI4q3B,EAAcxz3B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWul3B,IAAmB,IAAMF,IAAe,aACjGgC,EAAOh82B,YAAYi82B,GACnBl9jB,EAAI/+S,YAAY+5f,GAChB73c,EAAQliD,YAAY++S,GACpB78P,EAAQxjD,aAAas92B,EAAQ95zB,EAAQ9rC,YACjC3tB,KAAKoy3B,UACL97jB,EAAInyT,UAAU2C,IAAI,cAClBys3B,EAAOpv3B,UAAU2C,IAAI,eAEzB9G,KAAKmz3B,aAAa,CAAC78jB,EAAKi9jB,GAC5B,EACAtB,EAAQ1z3B,UAAUimY,WAAa,SAAUtnY,GACrC,IAAI0jN,EAAQ5gN,KACZ,GAAc,UAAV9C,EAAE0B,IAAiB,CAKnBoB,KAAKyz3B,SAAW9u3B,OAAOwzB,YAAW,WAH9ByoL,EAAM8yqB,YAAa,EACnB9yqB,EAAM+yqB,aAAa,GAAIz23B,EAAEilB,QAAQ,EAIrC,GAAG,IACP,CACJ,EACA8v2B,EAAQ1z3B,UAAUq7V,QAAU,SAAU18V,GACpB,UAAVA,EAAE0B,MAGFoB,KAAK0z3B,WACL1z3B,KAAK0z3B,YAAa,EAGlBx23B,EAAEilB,OAAO/L,QAEbm6B,aAAavwC,KAAKyz3B,UACtB,EACAxB,EAAQ1z3B,UAAU403B,aAAe,SAAU1zZ,GACvC,IAAI7+Q,EAAQ5gN,KACZ,GAAGY,MAAMb,KAAK0/d,GAAK1he,SAAQ,SAAU8H,GACjC,IAAIm2e,GAAMn2e,EAAI,CAAEgsqB,QAASjxd,EAAMgzqB,eAAerm3B,KAAKqzM,GAAQgyR,iBAAkB,MAC7E/se,EAAGwH,iBAAiB,UAAWuzM,EAAM4jL,WAAWj3X,KAAKqzM,IACrD/6M,EAAGwH,iBAAiB,QAASuzM,EAAMg5I,QAAQrsV,KAAKqzM,IAChD/6M,EAAGwH,iBAAiB,UAAWuzM,EAAMizqB,aAAatm3B,KAAKqzM,IACvD/6M,EAAGwH,iBAAiB,WAAYuzM,EAAMizqB,aAAatm3B,KAAKqzM,IACxD/6M,EAAGwH,iBAAiB,eAAe,SAAUnQ,GACzCA,EAAEijE,gBACN,IACAu+Z,GAAa53d,IAAIjB,EAAI,QAAS+6M,EAAMkzqB,kBAAmBlzqB,EAC3D,GACJ,EACAqxqB,EAAQ1z3B,UAAUs13B,aAAe,WAC7Bp7qB,cAAcz4M,KAAK69P,QACvB,EACAo0nB,EAAQ1z3B,UAAUq13B,eAAiB,SAAU123B,GACzC,IAAI0jN,EAAQ5gN,KACR+z3B,EAAO723B,EAAEw0G,cAAcvvF,OAC3B4x2B,EAAO/z3B,KAAKoE,SAAS2v3B,EAAMrC,KAAkBqC,EAAKjtiB,kBAAoBitiB,EAKtE/z3B,KAAK69P,QAAUl5P,OAAO6zM,aAAY,WAF9BoI,EAAM+yqB,aAFM,GAEkBI,GAAM,EAIxC,GAAG,GACP,EACA9B,EAAQ1z3B,UAAU6F,SAAW,SAAUq7d,EAAKvzd,GACxC,OAAOuzd,EAAIt7d,UAAUC,SAAS8H,EAClC,EACA+l3B,EAAQ1z3B,UAAUo13B,aAAe,SAAUK,EAAWD,EAAME,GACxD,IAAIC,EAAUl03B,KAAKy5D,QACft1D,EAAY4v3B,EAAK5v3B,UACjBA,EAAUC,SAASst3B,OACnBvt3B,EAAY4v3B,EAAK5+2B,cAAc,IAAMo82B,KAAcpt3B,WAEnDnE,KAAKoE,SAAS8v3B,EAAS7C,MAAYrx3B,KAAKky3B,eACxC8B,GAAaA,IAEXh03B,KAAKoE,SAAS8v3B,EAAS7C,MAAYrx3B,KAAKky3B,cAAiBly3B,KAAKoy3B,QAC5Dju3B,EAAUC,SAASot3B,KACnBxx3B,KAAKm03B,mBAAmBH,EAAW,MAAOC,GAG1Cj03B,KAAKm03B,mBAAmBH,EAAW,GAAIC,GAIvC9v3B,EAAUC,SAASqt3B,KACnBzx3B,KAAKm03B,mBAAmBH,EAAW,MAAOC,GAG1Cj03B,KAAKm03B,mBAAmBH,EAAW,GAAIC,EAGnD,EACAhC,EAAQ1z3B,UAAUu13B,kBAAoB,SAAU523B,GAC5C8C,KAAK2z3B,aAAa3z3B,KAAK2y3B,WAAYz13B,EAAEilB,QAAQ,EACjD,EACA8v2B,EAAQ1z3B,UAAU+z3B,aAAe,SAAUp13B,GACvC,IACIqtE,EADA6pzB,EAAWp03B,KAAKuy3B,UAGhBhozB,EADArtE,EAAEsgf,UAAY,EACHtgf,EAAEmgf,WAA0B,GAAbngf,EAAEsgf,UAGjBtgf,EAAEmgf,UAAYngf,EAAEsgf,SAE/B,IAAIxvd,EAAQ,IACE,SAAVvoB,IACA,IAAIwvD,EAAO/zD,KAAK6C,IAAIiqB,GAChBinC,GAAQ,EACRtwD,OAAOuwD,qBAAqBD,IAGH,SAArB/3D,EAAEghf,eACFk2Y,EAAS54xB,YAAcjxB,EAAWtV,EAER,UAArB/3D,EAAEghf,iBACPk2Y,EAAS54xB,YAAcjxB,EAAWtV,GAEtCjnC,GAAS,GACTrpB,OAAOqwD,sBAAsBvvD,GAErC,CACAA,EACJ,EACAws3B,EAAQ1z3B,UAAU813B,eAAiB,SAAUC,EAAWtyqB,GACrC,QAAXA,EACAhiN,KAAKuy3B,UAAU/2xB,YAAc84xB,EAG7Bt03B,KAAKuy3B,UAAU/2xB,YAAc84xB,EAE7Bt03B,KAAK+te,WAAa/te,KAAKuy3B,UAAU/2xB,WAAa,IAC9Cx7F,KAAKuy3B,UAAU/2xB,WAAa,EAEpC,EACAy2xB,EAAQ1z3B,UAAU413B,mBAAqB,SAAUG,EAAWtyqB,EAAQiyqB,GAChE,IAAIrzqB,EAAQ5gN,KAEZ,GAAIi03B,EACAj03B,KAAKq03B,eAAeC,EAAWtyqB,OADnC,CAIKhiN,KAAKmy3B,YACN,GAAGvx3B,MAAMb,KAAK0ge,GAAU,IAAMqxZ,IAAa9x3B,KAAKy5D,UAAU17D,SAAQ,SAAU8H,GACxEyu3B,GAAazu3B,EAAGypV,WACpB,KAEU,SAAV7pV,IACA,IAAI8u3B,EACA5B,EACA/xqB,EAAMx8M,SAASw8M,EAAMnnJ,QAAS43zB,MAAYzwqB,EAAMsxqB,cAChDqC,GAAeD,EACf3B,GAfG,KAkBH4B,EAAcD,EACd3B,EAnBG,IAqBH4B,EArBG,GAsBH5v3B,OAAOuwD,qBAAqBy9zB,IAG5B/xqB,EAAMyzqB,eAAe1B,EAAY3wqB,GACjCsyqB,GAAa3B,EACbhu3B,OAAOqwD,sBAAsBvvD,GAErC,CACAA,EA1BA,CA2BJ,EACAws3B,EAAQ1z3B,UAAU8z3B,aAAe,SAAUn13B,GACvC,IAAIuie,EAAMz/d,KAAKuy3B,UACXhozB,EAAWrtE,EAAEmgf,UACZr9e,KAAKoy3B,SAAYpy3B,KAAKoE,SAASpE,KAAKy5D,QAAS43zB,OAC9C9mzB,GAAYA,GAEU,SAAtBrtE,EAAEqgf,gBACF9d,EAAIjkY,WAAaikY,EAAIjkY,WAAajxB,EAEP,UAAtBrtE,EAAEqgf,kBACP9d,EAAIjkY,WAAaikY,EAAIjkY,WAAajxB,EAE1C,EACA0nzB,EAAQ1z3B,UAAUi23B,eAAiB,SAAUC,EAAYC,GACrD,GAAI103B,KAAKu9d,SAAU,CACf,IACIo3Z,GADW3jtB,GAAkByjtB,GAAcC,EAAgBD,GACtCt/2B,cAAc,IAAMo82B,KACzCvgtB,GAAkByjtB,GAClBtw3B,GAAUww3B,EAAW,CAACnD,KAAoB,CAACC,MAG3Ctt3B,GAAUww3B,EAAW,CAAClD,KAAmB,CAACD,KAElD,MACSiD,GAAcC,IACnBD,EAAWtw3B,UAAU2C,IAAIwq3B,KACzBmD,EAAW7r3B,aAAa,gBAAiB,QACzC6r3B,EAAWlh0B,gBAAgB,YAC3Bmh0B,EAAcvw3B,UAAU0C,OAAOyq3B,KAC/BoD,EAAc9r3B,aAAa,gBAAiB,SAC5C8r3B,EAAc9r3B,aAAa,WAAY,MAE3C5I,KAAK6z3B,cACT,EACA5B,EAAQ1z3B,UAAU6iqB,cAAgB,SAAUlkqB,GACxC,IAAIilB,EAASjlB,EAAEilB,OACX5e,EAAQ4e,EAAOmtU,YAEfsliB,GADU503B,KAAKy5D,QACFz5D,KAAKy5D,QAAQtkD,cAAc,IAAMy82B,MAC9CiD,EAAc703B,KAAKy5D,QAAQtkD,cAAc,IAAMw82B,KAC/CmD,EAAc903B,KAAKy5D,QAAQtkD,cAAc,IAAM682B,KAC/C+C,EAAe/03B,KAAKy5D,QAAQtkD,cAAc,IAAM482B,KAChDv2xB,EAAar5E,EAAOq5E,WAsBxB,GArBIA,GAAc,IACdA,GAAcA,GAEdx7F,KAAKu9d,YACDv9d,KAAK+te,WAAe/te,KAAKky3B,cAAgBly3B,KAAKoy3B,UAC9C0C,EAAc903B,KAAKy5D,QAAQtkD,cAAc,IAAM482B,KAC/CgD,EAAe/03B,KAAKy5D,QAAQtkD,cAAc,IAAM682B,MAGhD8C,EAAYzw3B,MAAMd,MADlBi4F,EApZK,GAqZqBA,EAAa,KAGb,OAEzBr5E,EAAO4/U,YAAc7gW,KAAK4hC,KAAKv/B,EAAQi4F,GA1ZnC,GA2ZLu5xB,EAAa1w3B,MAAMd,MAAS4e,EAAO4/U,YAAc7gW,KAAK4hC,KAAKv/B,EAAQi4F,GAAe,KAGlFu5xB,EAAa1w3B,MAAMd,MAAQ,QAGhB,IAAfi4F,EACAx7F,KAAKw03B,eAAeI,EAAYC,QAE/B,GAAI3z3B,KAAK4hC,KAAKv/B,EAAQi4F,EAAa,KAAOr5E,EAAO4/U,YAClD/hW,KAAKw03B,eAAeK,EAAaD,OAEhC,CACD,IAAII,EAASh13B,KAAKy5D,QAAQtkD,cAAc,IAAMu82B,IAAiB,IAAMJ,KACjE0D,IACAA,EAAO7w3B,UAAU0C,OAAOyq3B,KACxB0D,EAAOps3B,aAAa,gBAAiB,SACrCos3B,EAAOps3B,aAAa,WAAY,KAExC,CACJ,EASAqp3B,EAAQ1z3B,UAAUoke,kBAAoB,SAAUiF,EAASC,GACrD,IAAK,IAAI1tQ,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAE9D,OADWjiC,EAAGiiC,IAEV,IAAK,aACDn6N,KAAK0y3B,iBACL,MACJ,IAAK,YACD9qZ,EAAQmG,UAAY/te,KAAKy5D,QAAQt1D,UAAU2C,IAAIuq3B,KAAWrx3B,KAAKy5D,QAAQt1D,UAAU0C,OAAOwq3B,KAGpG,CACJ,EACAhkkB,IAAW,CACP63K,GAAS,OACV+sZ,EAAQ1z3B,UAAW,kBAAc,GACpC0z3B,EAAU5kkB,IAAW,CACjBq4K,IACDusZ,EAEP,CA/b6B,CA+b3BvwmB,ICjfExgC,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAKIwy3B,IAAU,QACVC,IAAc,YAGdC,IAAe,cACf0D,IAAiB,iBACjBC,IAAmB,mBACnBC,IAAiB,eACjBC,IAAmB,kBACnBC,IAAqB,oBACrBxD,IAAa,kBACbC,IAAc,mBACdwD,IAAgB,sBAChBC,IAAkB,wBAclBC,IAAyB,SAAUhxqB,GAQnC,SAASgxqB,EAAQx22B,EAASy6C,GACtB,OAAO+qJ,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,IAClD,CAwZA,OAjaAkhP,IAAUs0oB,EAAShxqB,GAgBnBgxqB,EAAQj33B,UAAUgwe,UAAY,WAC1Bvue,KAAKwvI,QAAU0tV,GAAQ5hZ,KAAKz6E,KAC5Bb,KAAKky3B,aAAgC,YAAjBly3B,KAAKwvI,QACzBxvI,KAAKu9d,SAAWL,GAAQK,SACxBv9d,KAAKmy3B,YAAa,EAClB,IAAI1yZ,EAAMz/d,KAAKy5D,QACfz5D,KAAKoy3B,QAA2B,SAAjBpy3B,KAAKwvI,SAAuC,SAAjBxvI,KAAKwvI,QAC/CxvI,KAAKy9E,aACU,KAAXgiZ,EAAI3pd,KACJ2pd,EAAI3pd,GAAKutc,GAAY,WACrBrjd,KAAKwgQ,UAAW,GAEpBi/N,EAAIp7d,MAAMqmB,QAAU,QAChB1qB,KAAK+te,WACLtO,EAAIt7d,UAAU2C,IAAIuq3B,IAE1B,EAOAmE,EAAQj33B,UAAUupE,OAAS,WACvB9nE,KAAK4xqB,YAAc,IAAI51L,GAAMh8e,KAAKy5D,QAAS,CAAEy8mB,OAAQl2qB,KAAKqy3B,aAAa9k3B,KAAKvN,MAAO8l2B,MAAO9l2B,KAAKsy3B,aAAa/k3B,KAAKvN,QACjH0+d,GAAa53d,IAAI9G,KAAKuy3B,UAAW,SAAUvy3B,KAAKy13B,mBAAoBz13B,MAC/DA,KAAKu9d,UAINv9d,KAAKy5D,QAAQt1D,UAAU2C,IAAI+q3B,KAC3B7x3B,KAAK013B,qBAAqB113B,KAAKy5D,UAJ/Bz5D,KAAKyy3B,cAAczy3B,KAAKy5D,SAM5Bz5D,KAAK0y3B,iBACLh0Z,GAAa53d,IAAI9G,KAAKy5D,QAAS,QAASz5D,KAAK213B,kBAAmB313B,KACpE,EACAw13B,EAAQj33B,UAAUm03B,eAAiB,WAC3B1htB,GAAkBhxK,KAAK2y3B,aAAe3y3B,KAAK2y3B,WAAa,GACxD3y3B,KAAK2y3B,WAAa3y3B,KAAKuy3B,UAAUvriB,aACjChnV,KAAKmy3B,YAAa,GAGlBny3B,KAAKmy3B,YAAa,CAE1B,EACAqD,EAAQj33B,UAAUk/E,WAAa,WAC3B,IAAIm4yB,EAAYC,GAAS,MAAO,CAAE3p3B,UAvFrB,sBAwFT4p3B,EAAYD,GAAS,MAAO,CAAE3p3B,UAzFrB,kBA0Fb4p3B,EAAUlt3B,aAAa,WAAY,MAGnC,IAFA,IAAI62d,EAAMz/d,KAAKy5D,QAEN0gK,EAAK,EAAGy4pB,EADF,GAAGhy3B,MAAMb,KAAK0/d,EAAIn5b,UACO6zL,EAAKy4pB,EAAW903B,OAAQq8N,IAAM,CAClE,IAAI4rnB,EAAQ6sC,EAAWz4pB,GACvBy7pB,EAAUr+2B,YAAYwu0B,EAC1B,CACA+vC,EAAUv+2B,YAAYq+2B,GACtBn2Z,EAAIlod,YAAYu+2B,GAChBA,EAAUzx3B,MAAMo0N,SAAW,SAC3Bz4N,KAAKuy3B,UAAYuD,EACjB913B,KAAK6y3B,YAAc+C,CACvB,EACAJ,EAAQj33B,UAAUgye,eAAiB,WAE/B,OAAOvwe,KAAK6we,aADI,CAAC,cAErB,EAOA2kZ,EAAQj33B,UAAUyke,cAAgB,WAC9B,MAAO,SACX,EAMAwyZ,EAAQj33B,UAAUklE,QAAU,WACxB,IAAI59D,EAAK7F,KAAKy5D,QACd5zD,EAAGxB,MAAMqmB,QAAU,GACnBgoC,GAAY,CAAC1yD,KAAKy5D,SAAU,CA/HrB,YA+HgCo4zB,IAAYR,MACnD,IAAI0E,EAAOt1Z,GAAU,MAAQ56d,EAAGiQ,GAAK,QAAUq/2B,IAAgBtv3B,GAC3Dmw3B,EAAWv1Z,GAAU,IAAMqxZ,IAAajs3B,GAC5C,GAAGjF,MAAMb,KAAKi23B,GAAUj43B,SAAQ,SAAU0he,GACtCY,GAAOZ,EACX,IACA,IAAK,IAAItlQ,EAAK,EAAGjiC,EAAK,GAAGt3L,MAAMb,KAAKC,KAAK6y3B,YAAYvs1B,UAAW6zL,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAClF,IAAIwkI,EAAOzmK,EAAGiiC,GACdt0N,EAAG0R,YAAYonV,EACnB,CACI3+V,KAAKwgQ,UACLxgQ,KAAKy5D,QAAQlG,gBAAgB,MAEjC8sa,GAAOrge,KAAKuy3B,WACRwD,EAAKj43B,OAAS,IACduie,GAAO01Z,EAAK,IACP/ktB,GAAkB+ktB,EAAK,KACxB11Z,GAAO01Z,EAAK,KAGpBr3Z,GAAa73d,OAAO7G,KAAKuy3B,UAAW,SAAUvy3B,KAAKy13B,oBACnDz13B,KAAK4xqB,YAAYnumB,UACjBzjE,KAAK4xqB,YAAc,KACnBptd,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,KAClC,EAQAw13B,EAAQj33B,UAAUk0pB,QAAU,SAAU3zpB,GAClC,IAAIy03B,EAAS9yZ,GAAU,sBAAwB6wZ,IAAc,IAAKtx3B,KAAKy5D,SACnE36D,EACAkB,KAAKy5D,QAAQt1D,UAAU2C,IAAIwq3B,KAG3Btx3B,KAAKy5D,QAAQt1D,UAAU0C,OAAOyq3B,KAElC,GAAG1w3B,MAAMb,KAAKwz3B,GAAQx13B,SAAQ,SAAU8H,GACpCA,EAAG+C,aAAa,WAAa9J,EAAc,KAAN,IACzC,GACJ,EACA023B,EAAQj33B,UAAUm33B,qBAAuB,SAAUj8zB,GAC/C,IAAI3jD,EAAK2jD,EAAQ3jD,GAAG3O,OAAO,QACvB8u3B,EAAiBJ,GAAS,MAAO,CAAE3p3B,UAAW4l3B,IAAc,IAAMyD,MAClEW,EAAU,KAAOz8zB,EAAQ3jD,GAAG3O,OAAO,QAAUgu3B,IAAiB,IAAME,KACpEc,EAAUN,GAAS,MAAO,CAAE//2B,GAAIA,EAAG3O,OAAO,QAAS+E,UAAWgq3B,IAC9D5kX,EAAUukX,GAAS,MAAO,CAAE3p3B,UAAWgp3B,IAAmB,IAAM3D,IAAe,aACnF4E,EAAQ5+2B,YAAY+5f,GACpB,IAAI8kX,EAAQP,GAAS,MAAO,CAAE3p3B,UAAW4l3B,IAAc,IAAMwD,MACzDt13B,KAAKoy3B,SACL+D,EAAQhy3B,UAAU2C,IAAI,cAE1B2yD,EAAQliD,YAAY0+2B,GACpBx8zB,EAAQliD,YAAY4+2B,GACpB18zB,EAAQxjD,aAAamg3B,EAAO38zB,EAAQ9rC,YACpC3tB,KAAKmz3B,aAAa,CAACgD,GACvB,EACAX,EAAQj33B,UAAUk03B,cAAgB,SAAUh5zB,GACxC,IAAI3jD,EAAK2jD,EAAQ3jD,GAAG3O,OAAO,QACvB+u3B,EAAU,KAAOz8zB,EAAQ3jD,GAAG3O,OAAO,QAAUgu3B,IAAiB,IAAME,KACpE/+jB,EAAMu/jB,GAAS,MAAO,CAAE//2B,GAAIA,EAAG3O,OAAO,SAAU+E,UAAWgq3B,IAC/D5/jB,EAAI1tT,aAAa,gBAAiB,SAClC,IAAI0ogB,EAAUukX,GAAS,MAAO,CAAE3p3B,UAAWgp3B,IAAmB,IAAM3D,IAAe,aAC/E8E,EAAQ,KAAO58zB,EAAQ3jD,GAAG3O,OAAO,QAAUgu3B,IAAiB,IAAMC,KAClEkB,EAAaT,GAAS,MAAO,CAAE//2B,GAAIA,EAAG3O,OAAO,OAAQ+E,UAAWmq3B,EAAQ,IAAM/E,MAClFgF,EAAW1t3B,aAAa,gBAAiB,QACzC,IAAI2t3B,EAAYV,GAAS,MAAO,CAAE3p3B,UAAW+o3B,IAAiB,IAAM1D,IAAe,aACnF+E,EAAW/+2B,YAAYg/2B,GACvBjgkB,EAAI/+S,YAAY+5f,GAChBh7M,EAAI1tT,aAAa,WAAY,KAC7B6wD,EAAQliD,YAAY++S,GACpB78P,EAAQxjD,aAAaqg3B,EAAY78zB,EAAQ9rC,YACrC3tB,KAAKoy3B,UACL97jB,EAAInyT,UAAU2C,IAAI,cAClBwv3B,EAAWny3B,UAAU2C,IAAI,eAE7B9G,KAAKmz3B,aAAa,CAAC78jB,EAAKggkB,GAC5B,EACAd,EAAQj33B,UAAUimY,WAAa,SAAUz4V,GACrC,IAAI60K,EAAQ5gN,KACZ,GAAe,UAAX+rC,EAAGntC,IAAiB,CAKpBoB,KAAKyz3B,SAAW9u3B,OAAOwzB,YAAW,WAH9ByoL,EAAM8yqB,YAAa,EACnB9yqB,EAAM+yqB,aAAa,GAAI5n1B,EAAG5pB,QAAQ,EAItC,GAAG,IACP,CACJ,EACAqz2B,EAAQj33B,UAAUq7V,QAAU,SAAU7tT,GACnB,UAAXA,EAAGntC,MAGHoB,KAAK0z3B,WACL1z3B,KAAK0z3B,YAAa,EAGlB3n1B,EAAG5pB,OAAO/L,QAEdm6B,aAAavwC,KAAKyz3B,UACtB,EACA+B,EAAQj33B,UAAU403B,aAAe,SAAU15zB,GACvC,IAAImnJ,EAAQ5gN,KACZ,GAAGY,MAAMb,KAAK05D,GAAS17D,SAAQ,SAAU0he,GACrC,IAAIuc,GAAMvc,EAAK,CAAEoyM,QAASjxd,EAAMgzqB,eAAerm3B,KAAKqzM,GAAQgyR,iBAAkB,MAC9EnT,EAAIpyd,iBAAiB,UAAWuzM,EAAM4jL,WAAWj3X,KAAKqzM,IACtD6+Q,EAAIpyd,iBAAiB,QAASuzM,EAAMg5I,QAAQrsV,KAAKqzM,IACjD6+Q,EAAIpyd,iBAAiB,UAAWuzM,EAAMizqB,aAAatm3B,KAAKqzM,IACxD6+Q,EAAIpyd,iBAAiB,WAAYuzM,EAAMizqB,aAAatm3B,KAAKqzM,IACzD6+Q,EAAIpyd,iBAAiB,eAAe,SAAUnQ,GAC1CA,EAAEijE,gBACN,IACAu+Z,GAAa53d,IAAI24d,EAAK,QAAS7+Q,EAAMkzqB,kBAAmBlzqB,EAC5D,GACJ,EACA40qB,EAAQj33B,UAAUs13B,aAAe,WAC7Bp7qB,cAAcz4M,KAAK69P,QACvB,EACA23nB,EAAQj33B,UAAUq13B,eAAiB,SAAU7n1B,GACzC,IAAI60K,EAAQ5gN,KACR+z3B,EAAOho1B,EAAG2lE,cAAcvvF,OAC5B4x2B,EAAO/z3B,KAAKoE,SAAS2v3B,EAAMoB,KAAkBpB,EAAKjtiB,kBAAoBitiB,EAKtE/z3B,KAAK69P,QAAUl5P,OAAO6zM,aAAY,WAF9BoI,EAAM+yqB,aAFW,GAEkBI,GAAM,EAI7C,GAAG,GACP,EACAyB,EAAQj33B,UAAU6F,SAAW,SAAUq1D,EAASvtD,GAC5C,OAAOutD,EAAQt1D,UAAUC,SAAS8H,EACtC,EACAsp3B,EAAQj33B,UAAUo13B,aAAe,SAAUK,EAAWD,EAAME,GACxD,IAAI9v3B,EAAY4v3B,EAAK5v3B,UACjBA,EAAUC,SAAS+w3B,OACnBhx3B,EAAY4v3B,EAAK5+2B,cAAc,IAAMo82B,KAAcpt3B,WAEnDA,EAAUC,SAAS8w3B,KACnBl13B,KAAKm03B,mBAAmBH,EAAW,MAAOC,GAErC9v3B,EAAUC,SAAS6w3B,MACxBj13B,KAAKm03B,mBAAmBH,EAAW,GAAIC,EAE/C,EACAuB,EAAQj33B,UAAUu13B,kBAAoB,SAAU56zB,GAC5Cl5D,KAAK2z3B,aAAa3z3B,KAAK2y3B,WAAYz5zB,EAAM/2C,QAAQ,EACrD,EACAqz2B,EAAQj33B,UAAUo33B,kBAAoB,SAAUz43B,GAC5CA,EAAEijE,iBACFngE,KAAKm03B,mBAAmBn03B,KAAK2y3B,WAAaz13B,EAAEi4F,OAAS,EAAI,MAAQ,IAAK,EAC1E,EACAqgyB,EAAQj33B,UAAU+z3B,aAAe,SAAUp13B,GACvC,IACIqtE,EADAiszB,EAAex23B,KAAKuy3B,UAGpBhozB,EADArtE,EAAEsgf,UAAY,EACHtgf,EAAEogf,WAA0B,GAAbpgf,EAAEsgf,UAGjBtgf,EAAEogf,UAAYpgf,EAAEsgf,SAE/B,IAAIxvd,EAAQ,IACE,SAAVvoB,IACA,IAAIwvD,EAAO/zD,KAAK6C,IAAIiqB,GAChBinC,GAAQ,EACRtwD,OAAOuwD,qBAAqBD,IAGH,OAArB/3D,EAAEghf,eACFs4Y,EAAa/6xB,WAAalxB,EAAWtV,EAEX,SAArB/3D,EAAEghf,iBACPs4Y,EAAa/6xB,WAAalxB,EAAWtV,GAEzCjnC,GAAS,IACTrpB,OAAOqwD,sBAAsBvvD,GAErC,CACAA,EACJ,EACA+v3B,EAAQj33B,UAAU813B,eAAiB,SAAUC,EAAWtyqB,GACrC,QAAXA,EACAhiN,KAAKuy3B,UAAU92xB,WAAa64xB,EAG5Bt03B,KAAKuy3B,UAAU92xB,WAAa64xB,CAEpC,EACAkB,EAAQj33B,UAAU413B,mBAAqB,SAAUI,EAAavyqB,EAAQiyqB,GAClE,IAAIrzqB,EAAQ5gN,KAEZ,GAAIi03B,EACAj03B,KAAKq03B,eAAeE,EAAavyqB,OADrC,CAIKhiN,KAAKmy3B,YACN,GAAGvx3B,MAAMb,KAAK0ge,GAAU,IAAMqxZ,IAAa9x3B,KAAKy5D,UAAU17D,SAAQ,SAAU8H,GACxE0u3B,GAAe1u3B,EAAGmhV,YACtB,KAEU,SAAVvhV,IACI8u3B,EAXG,GAYH5v3B,OAAOuwD,qBAZJ,KAeH0rJ,EAAMyzqB,eAfH,GAewBryqB,GAC3BuyqB,GAhBG,GAiBH5v3B,OAAOqwD,sBAAsBvvD,GAErC,CACAA,EAhBA,CAiBJ,EACA+v3B,EAAQj33B,UAAU8z3B,aAAe,SAAUn13B,GACvC,IAAI2I,EAAK7F,KAAKuy3B,UACVhozB,EAAWrtE,EAAEogf,UACS,OAAtBpgf,EAAEqgf,gBACF13e,EAAG41F,UAAY51F,EAAG41F,UAAYlxB,EAEH,SAAtBrtE,EAAEqgf,kBACP13e,EAAG41F,UAAY51F,EAAG41F,UAAYlxB,EAEtC,EACAirzB,EAAQj33B,UAAUi23B,eAAiB,SAAUiC,EAAeC,GACxD,GAAI123B,KAAKu9d,SAAU,CACf,IACIo3Z,GADW3jtB,GAAkByltB,GAAiBC,EAAmBD,GAC5Cth3B,cAAc,IAAMo82B,KACzCvgtB,GAAkByltB,GAClBty3B,GAAUww3B,EAAW,CAACO,KAAmB,CAACD,MAG1C9w3B,GAAUww3B,EAAW,CAACM,KAAiB,CAACC,KAEhD,MAEIuB,EAActy3B,UAAU2C,IAAIwq3B,KAC5BmF,EAAc7t3B,aAAa,gBAAiB,QAC5C6t3B,EAAclj0B,gBAAgB,YAC9Bmj0B,EAAiBvy3B,UAAU0C,OAAOyq3B,KAClCoF,EAAiB9t3B,aAAa,gBAAiB,SAC/C8t3B,EAAiB9t3B,aAAa,WAAY,KAE9C5I,KAAK6z3B,cACT,EACA2B,EAAQj33B,UAAUk33B,mBAAqB,SAAUv43B,GAC7C,IAAIilB,EAASjlB,EAAEilB,OACX3e,EAAS2e,EAAO6kU,aAChB2viB,EAAW323B,KAAKy5D,QAAQtkD,cAAc,IAAMig3B,KAC5CwB,EAAa523B,KAAKy5D,QAAQtkD,cAAc,IAAMkg3B,KAC9CwB,EAAY723B,KAAKy5D,QAAQtkD,cAAc,IAAMmg3B,KAC7CwB,EAAc923B,KAAKy5D,QAAQtkD,cAAc,IAAMog3B,KAC/C95xB,EAAYt5E,EAAOs5E,UAkBvB,GAjBIA,GAAa,IACbA,GAAaA,GAEbz7F,KAAKu9d,WAEDs5Z,EAAUxy3B,MAAMb,OADhBi4F,EAnXK,GAoXoBA,EAAY,KAGZ,OAExBt5E,EAAO8/U,aAAe/gW,KAAK4hC,KAAKt/B,EAASi4F,GAzXrC,GA0XLq7xB,EAAYzy3B,MAAMb,OAAU2e,EAAO8/U,aAAe/gW,KAAK4hC,KAAKt/B,EAASi4F,GAAc,KAGnFq7xB,EAAYzy3B,MAAMb,OAAS,QAGjB,IAAdi4F,EACAz7F,KAAKw03B,eAAemC,EAAUC,QAE7B,GAAI113B,KAAK4hC,KAAKt/B,EAASi4F,EAAY,KAAOt5E,EAAO8/U,aAClDjiW,KAAKw03B,eAAeoC,EAAYD,OAE/B,CACD,IAAI3B,EAASh13B,KAAKy5D,QAAQtkD,cAAc,IAAMgg3B,IAAiB,IAAM7D,KACjE0D,IACAA,EAAO7w3B,UAAU0C,OAAOyq3B,KACxB0D,EAAOps3B,aAAa,gBAAiB,SACrCos3B,EAAOps3B,aAAa,WAAY,KAExC,CACJ,EASA4s3B,EAAQj33B,UAAUoke,kBAAoB,SAAUiF,EAASC,GACrD,IAAK,IAAI1tQ,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAE9D,OADWjiC,EAAGiiC,IAEV,IAAK,aACDn6N,KAAK0y3B,iBACL,MACJ,IAAK,YACG9qZ,EAAQmG,UACR/te,KAAKy5D,QAAQt1D,UAAU2C,IAAIuq3B,KAG3Brx3B,KAAKy5D,QAAQt1D,UAAU0C,OAAOwq3B,KAI9C,CACJ,EACAhkkB,IAAW,CACP63K,GAAS,OACVswZ,EAAQj33B,UAAW,kBAAc,GACpCi33B,EAAUnokB,IAAW,CACjBq4K,IACD8vZ,EAEP,CAna6B,CAma3B9zmB,ICrdExgC,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAYIk43B,IAAe,aACfC,IAAY,kBACZC,IAAW,iBACX5F,IAAU,QACV6F,IAAgB,cAChBC,IAAgB,kBAChBC,IAAgB,oBAChBC,IAAgB,eAChBC,IAAe,aACfhG,IAAc,YACdiG,IAAgB,iBAChBC,IAAe,eACfC,IAAmB,kBACnBC,IAAkB,kBAElBC,IAAc,YACdC,IAAkB,eAGlBC,IAAiB,mBACjBC,IAAc,aAGdC,IAAiB,gBAEjBC,IAAiB,gBACjBC,IAAY,kBAEZC,IAAiB,eACjBC,IAAiB,WACjBC,IAAa,gBACbC,IAAa,WACbC,IAAe,qBACfC,IAAkB,iBAClBC,IAAyB,uBACzBC,IAA2B,uBAC3BC,IAA0B,qBAC1BC,IAAsB,qBAEtBC,IAAsB,kBAItBr/c,IAAsB,SAAU/0N,GAEhC,SAAS+0N,IACL,OAAkB,OAAX/0N,GAAmBA,EAAO5mN,MAAMoC,KAAMnC,YAAcmC,IAC/D,CAuDA,OA1DAkhP,IAAUq4L,EAAM/0N,GAIhB6oG,IAAW,CACP63K,GAAS,KACV3rD,EAAKh7a,UAAW,UAAM,GACzB8uT,IAAW,CACP63K,GAAS,KACV3rD,EAAKh7a,UAAW,YAAQ,GAC3B8uT,IAAW,CACP63K,GAAS,SACV3rD,EAAKh7a,UAAW,aAAS,GAC5B8uT,IAAW,CACP63K,GAAS,KACV3rD,EAAKh7a,UAAW,gBAAY,GAC/B8uT,IAAW,CACP63K,IAAS,IACV3rD,EAAKh7a,UAAW,yBAAqB,GACxC8uT,IAAW,CACP63K,IAAS,IACV3rD,EAAKh7a,UAAW,gBAAY,GAC/B8uT,IAAW,CACP63K,GAAS,KACV3rD,EAAKh7a,UAAW,kBAAc,GACjC8uT,IAAW,CACP63K,GAAS,KACV3rD,EAAKh7a,UAAW,kBAAc,GACjC8uT,IAAW,CACP63K,IAAS,IACV3rD,EAAKh7a,UAAW,eAAW,GAC9B8uT,IAAW,CACP63K,GAAS,SACV3rD,EAAKh7a,UAAW,gBAAY,GAC/B8uT,IAAW,CACP63K,GAAS,KACV3rD,EAAKh7a,UAAW,gBAAY,GAC/B8uT,IAAW,CACP63K,GAAS,WACV3rD,EAAKh7a,UAAW,YAAQ,GAC3B8uT,IAAW,CACP63K,GAAS,SACV3rD,EAAKh7a,UAAW,kBAAc,GACjC8uT,IAAW,CACP63K,GAAS,OACV3rD,EAAKh7a,UAAW,sBAAkB,GACrC8uT,IAAW,CACP63K,GAAS,KACV3rD,EAAKh7a,UAAW,mBAAe,GAClC8uT,IAAW,CACP63K,GAAS,SACV3rD,EAAKh7a,UAAW,aAAS,GAC5B8uT,IAAW,CACPv0P,MACDygX,EAAKh7a,UAAW,aAAS,GAC5B8uT,IAAW,CACP63K,IAAU,IACX3rD,EAAKh7a,UAAW,gBAAY,GACxBg7a,CACX,CA5D0B,CA4DxB2wD,IAYE2uZ,IAAyB,SAAUr0qB,GAQnC,SAASq0qB,EAAQ752B,EAASy6C,GACtB,IAAImnJ,EAAQ4D,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,KAiBnD,OAhBA4gN,EAAMk4qB,cAAgBl4qB,EAAMxwK,OAAO7iC,KAAKqzM,GACxCA,EAAMm4qB,yBAA2Bn4qB,EAAMo4qB,kBAAkBzr3B,KAAKqzM,GAI9DA,EAAM85R,WAAa,CACf66W,SAAU,YACVC,UAAW,aACXF,OAAQ,UACRD,SAAU,YACV4jC,UAAW,QACXC,WAAY,SACZ3/iB,IAAK,MACLO,KAAM,OACN7rT,IAAK,OAEF2yL,CACX,CAirEA,OA3sEAsgC,IAAU23oB,EAASr0qB,GAgCnBq0qB,EAAQt63B,UAAUklE,QAAU,WACxB,IAAIm9I,EAAQ5gN,MACRA,KAAKwnf,SAAWxnf,KAAK+iQ,YACrB/iQ,KAAKywe,gBAET,IAAI0oZ,EAAWn53B,KAAKy5D,QAAQhsC,iBAAiB,oBAa7C,IAZA,GAAG7sB,MAAMb,KAAKo53B,GAAUp73B,SAAQ,SAAU8H,GACjC41d,GAAM51d,IAAQ41d,GAAM51d,EAAGo9d,gBAAmBxH,GAAM51d,EAAGo9d,cAAc,KAASp9d,EAAGo9d,cAAc,GAAGf,aAC/Fr8d,EAAGo9d,cAAc,GAAGx/Z,SAE5B,IACAzjE,KAAKi7e,eACLj7e,KAAKqjf,OAAOtlf,SAAQ,SAAU0he,GACrBhE,GAAM76Q,EAAMnnJ,QAAQtkD,cAAcsqd,MACnClqc,SAASwK,KAAKxoB,YAAYqpM,EAAMnnJ,QAAQtkD,cAAcsqd,IAAMp7d,MAAMqmB,QAAU,OAEpF,IACA1qB,KAAKo53B,eACEp53B,KAAKy5D,QAAQ4sR,kBAChBrmV,KAAKy5D,QAAQ7rC,YAAY5tB,KAAKy5D,QAAQ4sR,kBAEtCrmV,KAAKq53B,UACLr53B,KAAKy5D,QAAQliD,YAAYvX,KAAKs53B,SAC9Bt53B,KAAKq53B,QAAU,KACfr53B,KAAKs53B,QAAU,MAEft53B,KAAKu53B,SACLv53B,KAAKu53B,OAAO91zB,UACZ48Z,GAAOrge,KAAKu53B,OAAO9/zB,UAEnBz5D,KAAK8lrB,YACL9lrB,KAAK8lrB,UAAY,MAErB9lrB,KAAKu53B,OAAS,KACdv53B,KAAKw53B,UAAY,KACjBx53B,KAAKy53B,aAAe,GACpBz53B,KAAK6G,OAAO7G,KAAKy5D,QAAS,aACtBz5D,KAAK6O,UACL6jD,GAAY,CAAC1yD,KAAKy5D,SAAUz5D,KAAK6O,SAAS7N,MAAM,MAEpDhB,KAAKy5D,QAAQlG,gBAAgB,SAC7B,CAAC,gBAAiB,mBAAoB,QAAQx1D,SAAQ,SAAU273B,GAC5D,OAAO94qB,EAAMnnJ,QAAQlG,gBAAgBmm0B,EACzC,IACAl1qB,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,KAClC,EAOA643B,EAAQt63B,UAAUgwe,UAAY,WAC1B,IAAI5+H,EAAY,CAAEgqhB,gBAAiB353B,KAAK253B,gBAAiBhH,WAAY3y3B,KAAK2y3B,YAC1E3y3B,KAAKo/d,QAAQ,eAAgBzvH,GAC7B3vW,KAAK253B,gBAAkBhqhB,EAAUgqhB,gBACjC353B,KAAK2y3B,WAAahjhB,EAAUgjhB,WAC5B3y3B,KAAKqtsB,aAAe,KACpBrtsB,KAAKu53B,OAAS,KACdv53B,KAAKqjf,OAAS,GACdrjf,KAAKy53B,aAAez53B,KAAKyqB,MACzBzqB,KAAKqoF,aAAaroF,KAAKy5D,QAAQt1D,UAAUC,SAAS2y3B,KAClD/23B,KAAK453B,gBAAiB,EACtB553B,KAAK653B,cAAgB,EACjB753B,KAAK+te,WACL/te,KAAK8G,IAAI9G,KAAKy5D,QAAS43zB,IAE/B,EACAwH,EAAQt63B,UAAUu7e,WAAa,WAC3Bpb,GAAa53d,IAAI9G,KAAKy5D,QAAS,QAASz5D,KAAK6wf,aAAc7wf,MAC3D2E,OAAO0I,iBAAiB,SAAUrN,KAAK843B,eACvCn03B,OAAO0I,iBAAiB,oBAAqBrN,KAAK+43B,0BAC9C/43B,KAAKssuB,eACLtsuB,KAAK853B,mBAEb,EACAjB,EAAQt63B,UAAUu73B,kBAAoB,WAClC953B,KAAK+53B,UAAY,IAAI3/Y,GAAep6e,KAAKy5D,QAAS,CAC9Cuhb,UAAWh7e,KAAK44pB,iBAAiBrrpB,KAAKvN,MACtC06e,WAAY16e,KAAK06e,aAErBhc,GAAa53d,IAAI9G,KAAKy5D,QAAS,UAAWz5D,KAAKg63B,WAAYh63B,MAC3DA,KAAKi63B,eAAe,IACxB,EACApB,EAAQt63B,UAAU073B,eAAiB,SAAU9yiB,GACzC,IAAIs4I,EAAMz/d,KAAKy5D,QAAQtkD,cAAc,IAAM8h3B,IAAW,SAAW3F,IAAc,WAAa4F,IAAgB,WAAamB,IAAa,MACtI,IAAK58Z,GAAMgE,KAAShE,GAAMgE,EAAI34I,mBAAoB,CAC9C,IAAIoziB,EAAez6Z,EAAI34I,kBAAkB12U,aAAa,iBAClD8p3B,GAAiC,OAAjBA,GAA2D,UAAlCz6Z,EAAI34I,kBAAkB1lM,SAC/Dq+U,EAAI34I,kBAAkBl+U,aAAa,WAAYu+U,EAEvD,CACJ,EACA0xiB,EAAQt63B,UAAU473B,oBAAsB,WAChCn63B,KAAK+53B,YACLr7Z,GAAa73d,OAAO7G,KAAKy5D,QAAS,UAAWz5D,KAAKg63B,YAClDh63B,KAAK+53B,UAAUt2zB,UACfzjE,KAAK+53B,UAAY,KAEzB,EACAlB,EAAQt63B,UAAUy73B,WAAa,SAAU983B,GACrC,GAAyB,UAArBA,EAAEilB,OAAOi/H,QAAb,CAGA,IAAIg5uB,GAAY3+Z,GAAMz7d,KAAKu53B,SAAWtyiB,GAAUjnV,KAAKu53B,OAAO9/zB,UAAkC,aAAtBz5D,KAAKkhW,aAC3D,IAAdhkW,EAAE4iS,UAA8D,IAA7C5iS,EAAEilB,OAAOhe,UAAUC,SAAS,cAAyBg23B,GACxEp63B,KAAKu53B,OAAOh31B,KAAK,CAAE1hC,KAAM,UAAW8yD,SAAU,OAEpB,KAAdz2D,EAAE4iS,SAAgC,KAAd5iS,EAAE4iS,SAAgC,KAAd5iS,EAAE4iS,SAAgC,KAAd5iS,EAAE4iS,UAE1E5iS,EAAEijE,gBAPN,CASJ,EACA04zB,EAAQt63B,UAAU08e,aAAe,WAC7Bvc,GAAa73d,OAAO7G,KAAKy5D,QAAS,QAASz5D,KAAK6wf,cAChD7wf,KAAKq63B,gBACLr63B,KAAKm63B,sBACLx13B,OAAOk0D,oBAAoB,SAAU74D,KAAK843B,eAC1Cn03B,OAAOk0D,oBAAoB,oBAAqB74D,KAAK+43B,0BACrDr6Z,GAAa73d,OAAO0uB,SAAU,SAAUv1B,KAAKs63B,UAC7C57Z,GAAa73d,OAAO0uB,SAAU,QAASv1B,KAAKs63B,SAChD,EACAzB,EAAQt63B,UAAUg83B,cAAgB,WAC9Bv63B,KAAKw63B,QAAU,GACfx63B,KAAKy63B,WAAa,CAAEC,MAAO,GAAIC,QAAS,GAAIC,OAAQ,GACxD,EACA/B,EAAQt63B,UAAU+73B,SAAW,SAAUp93B,GACnC,IAAI293B,EAAS/5Z,GAAQ5je,EAAEilB,OAAQ,YAC3BniB,KAAKu53B,QAAUtyiB,GAAUjnV,KAAKu53B,OAAO9/zB,WAAaoh0B,GAAgC,UAAtB763B,KAAKkhW,cACjElhW,KAAKu53B,OAAOh31B,KAAK,CAAE1hC,KAAM,UAAW8yD,SAAU,KAEtD,EACAkl0B,EAAQt63B,UAAU873B,cAAgB,WAC1Br63B,KAAKqtsB,eACDrtsB,KAAKw53B,WACLx53B,KAAK8G,IAAI9G,KAAKqtsB,aAAa5zoB,QAASq+zB,KAExC933B,KAAKqtsB,aAAa5poB,UAClBzjE,KAAKqtsB,aAAe,KAE5B,EACAwrL,EAAQt63B,UAAU663B,aAAe,WAI7B,GAHIp53B,KAAKy5D,SACL,GAAG74D,MAAMb,KAAKC,KAAKy5D,QAAQhsC,iBAAiB,IAAMwp2B,MAAWl53B,SAAQ,SAAU8H,GAAMw6d,GAAOx6d,EAAK,IAEjG7F,KAAKw53B,UAAW,CAChB,IAAIsB,EAAY963B,KAAKy5D,QAAQtkD,cAAc,IAAM6h3B,KACjD,GAAGp23B,MAAMb,KAAK+63B,EAAUx01B,UAAUvoC,SAAQ,SAAU8H,GAChDw6d,GAAOx6d,EACX,IACA7F,KAAKw53B,WAAY,EACjBx53B,KAAK6G,OAAOi03B,EAAWhD,IAC3B,CACA933B,KAAKu63B,eACT,EACA1B,EAAQt63B,UAAUw83B,YAAc,WACxB/63B,KAAKqtsB,eACLrtsB,KAAK6G,OAAO7G,KAAKqtsB,aAAa5zoB,QAAS43zB,KACvCrx3B,KAAKq63B,iBAETr63B,KAAK6G,OAAO7G,KAAKy5D,QAASm/zB,KAC1B543B,KAAK6G,OAAO7G,KAAKy5D,QAASi/zB,KAC1B,IAAI9gY,EAAU53f,KAAKy5D,QAAQtkD,cAAc,uBACrCyif,GACA53f,KAAK6G,OAAO+wf,EAAS0gY,KAErBt43B,KAAKu53B,QACLv53B,KAAKg73B,aAAah73B,KAAKu53B,OAAO9/zB,SAAS,EAE/C,EACAo/zB,EAAQt63B,UAAUuI,IAAM,SAAU24d,EAAK9sb,GACnC8sb,EAAIt7d,UAAU2C,IAAI6rC,EACtB,EACAkm1B,EAAQt63B,UAAUsI,OAAS,SAAU44d,EAAK9sb,GACtC8sb,EAAIt7d,UAAU0C,OAAO8rC,EACzB,EACAkm1B,EAAQt63B,UAAU083B,aAAe,SAAUx7Z,GACvC,IAAIy7Z,EAASz7Z,EAAI34I,kBACbo0iB,GACAA,EAAOtsnB,QACP5uQ,KAAKm73B,gBAAgB17Z,IAGrBA,EAAI7wN,OAEZ,EACAiqnB,EAAQt63B,UAAU683B,YAAc,SAAUC,EAAWtH,GAWjD,OATIsH,GAAar73B,KAAKu53B,QAAUtyiB,GAAUjnV,KAAKu53B,OAAO9/zB,SAC3Cz5D,KAAKu53B,OAAO9/zB,QAAQtkD,cAAc,IAAM8h3B,KAE1Cj33B,KAAKy5D,UAAYs6zB,GAAQsH,EACvBr73B,KAAKy5D,QAAQtkD,cAAc,IAAM8h3B,IAAW,SAAW3F,IAAc,WAAa4F,IAAgB,WAAamB,IAAa,MAG5Hv3Z,GAAQizZ,EAAM,IAAMkD,IAGnC,EACA4B,EAAQt63B,UAAU+83B,YAAc,SAAUC,EAAMr+3B,EAAG623B,EAAMyH,EAAQC,GAC7D,IAIIh8Z,EACA8kB,EALAg1Y,EAASv53B,KAAKu53B,OACdrF,EAAUl03B,KAAKy5D,QACfii0B,EAAa,CAAE763B,KAAM,UAAW8yD,SAAU,KAC1C70D,EAAqB,WAAb5B,EAAE8kN,OAAsB,WAAa,OAGjD,OAAQ9kN,EAAE8kN,QACN,IAAK,YACD,GAAIhiN,KAAKqoF,WACL,OAEA6ryB,IAAYH,EACZ/z3B,KAAKi73B,aAAaM,GAEZC,GACNx73B,KAAK273B,SAASJ,EAAM,QAExB,MACJ,IAAK,WACD,GAAIv73B,KAAKqoF,WACL,OAECmzyB,GACDx73B,KAAK273B,SAASJ,EAAM,YAExB,MACJ,IAAK,OACL,IAAK,MACD,GAAIA,EAAM,CACN,IAAIK,EAAa96Z,GAAQy6Z,EAAM,YAC3BM,EAAgB773B,KAAKy5D,QAAQtkD,cAAc,IAAMwj3B,KAC3B,aAAtB343B,KAAKkhW,cAA+B26hB,GAAiBA,EAAc133B,UAAUC,SAAS,kBACtFw33B,EAA0B,QAAb1+3B,EAAE8kN,OAAmB65qB,EAAgB,MAElDD,EACI30iB,GAAUjnV,KAAKu53B,OAAO9/zB,WACtB8qb,EAAQ,GAAG3jf,MAAMb,KAAK673B,EAAWt11B,UAE7Bm5b,EADa,SAAbvie,EAAE8kN,OACIhiN,KAAK873B,qBAAqBv3Y,GAG1Bvkf,KAAK+73B,oBAAoBx3Y,KAKvCA,EAAQvkf,KAAKy5D,QAAQhsC,iBAAiB,IAAMup2B,IAAY,KAAOC,IAAW,SAAWC,IAAgB,KAEjGz3Z,EADa,SAAbvie,EAAE8kN,OACIhiN,KAAK873B,qBAAqBv3Y,GAG1Bvkf,KAAK+73B,oBAAoBx3Y,IAGnC9kB,GACAz/d,KAAKi73B,aAAax7Z,EAE1B,CACA,MACJ,IAAK,SACL,IAAK,WACD,GAAKz/d,KAAKqoF,WAmBW,WAAbnrF,EAAE8kN,OACFhiN,KAAK273B,SAASJ,EAAM,YAGpBv73B,KAAK273B,SAASJ,EAAM,aAtBxB,GAAIhC,GAAUz4Z,GAAQizZ,EAAM,YAAa,CACrC,IAAI8G,EAAStB,EAAO9/zB,QAChBui0B,EAAanB,EAAO/ziB,kBACT,aAAVhoV,GAAwBk93B,IAAeT,EACxCV,EAAOx0iB,iBAAiB14T,WAAWihP,QAEpB,SAAV9vQ,GAAoB+73B,EAAOx0iB,mBAAqBk1iB,EACrDS,EAAWru2B,WAAWihP,QAGtB5uQ,KAAK273B,SAASJ,EAAMz83B,EAE5B,KACsB,aAAb5B,EAAE8kN,QAAyBu3qB,GAAUtyiB,GAAUsyiB,EAAO9/zB,UAC3Dz5D,KAAKi73B,aAAaM,GAW1B,MACJ,IAAK,MACD,IAAKE,IAAcD,EAAQ,CACvB,IAAIz1C,EAAQw1C,EAAKz0iB,kBACbotiB,IAAYH,IACR/z3B,KAAK8lrB,UACL9lrB,KAAK8lrB,UAAUl3a,SAGf5uQ,KAAKi83B,gBAAgBl2C,GACrBA,EAAMn3kB,SAGlB,CACA,MACJ,IAAK,aACG2qnB,GAAgC,aAAtBv53B,KAAKkhW,cACfq4hB,EAAOh31B,KAAKm51B,GAEhB,MACJ,IAAK,YACD,IAAKF,EACD,OAEAjC,IAAWtyiB,GAAUsyiB,EAAO9/zB,UAC5B8/zB,EAAO9/zB,QAAQp1D,MAAMlB,IAAM+w3B,EAAQltiB,aAAe,KAClDuyiB,EAAO/72B,KAAK,CAAE3c,KAAM,SAAU8yD,SAAU,OAGxC4l0B,EAAOh31B,KAAKm51B,GAI5B,EACA7C,EAAQt63B,UAAUq6pB,iBAAmB,SAAU17pB,GAC3C,IAAI623B,EAAO723B,EAAEilB,OACb,GAAqB,UAAjB4x2B,EAAK3yuB,SAAwC,aAAjB2yuB,EAAK3yuB,UAA0BphJ,KAAKy5D,QAAQt1D,UAAUC,SAASkt3B,KAA/F,CAGAp03B,EAAEijE,iBACF,IAAIk7zB,EAAYtH,EAAK5v3B,UAAUC,SAASuz3B,KACpCuE,EAAgBnI,EAAK5v3B,UAAUC,SAASwz3B,KACxC2D,EAAOv73B,KAAKo73B,YAAYC,EAAWtH,IACnCwH,GAAQW,IACRl83B,KAAKs73B,YAAYC,EAAMr+3B,EAAG623B,EAAMsH,EAAWa,EAN/C,CAQJ,EAQArD,EAAQt63B,UAAUk0pB,QAAU,SAAU3zpB,GAClC,IAAIo13B,EAAUl03B,KAAKy5D,QACf36D,EACAo13B,EAAQ/v3B,UAAU2C,IAAIwq3B,KAGtB4C,EAAQ/v3B,UAAU0C,OAAOyq3B,KAEzBtx3B,KAAK8lrB,WACL9lrB,KAAK8lrB,UAAUl9qB,aAAa,WAAY5I,KAAK8lrB,UAAU11qB,aAAa,kBAEpEpQ,KAAKqtsB,cACLrtsB,KAAKqtsB,aAAa56C,QAAQ3zpB,GAE1BkB,KAAKu53B,SACDtyiB,GAAUjnV,KAAKu53B,OAAO9/zB,UAAkC,aAAtBz5D,KAAKkhW,cACvClhW,KAAKu53B,OAAOh31B,OAEhB2x1B,EAAQ/+2B,cAAc,IAAM++2B,EAAQp+2B,GAAK,QAAQlN,aAAa,WAAa9J,EAAc,KAAN,KAE3F,EACA+53B,EAAQt63B,UAAU493B,YAAc,SAAUt23B,GACtC,OAAOA,EAAG1B,UAAUC,SAAS8y3B,MAAkBrx3B,EAAG1B,UAAUC,SAASkt3B,MAAgBzr3B,EAAGuK,aAAa,aAAevK,EAAG1B,UAAUC,SAASi03B,OAAgBpxiB,GAAUphV,KAAQA,EAAG1B,UAAUC,SAAS6y3B,IACtM,EACA4B,EAAQt63B,UAAUu93B,qBAAuB,SAAUv3Y,GAG/C,IAFA,IACI53d,EAAQ,EACLA,EAAQ43d,EAAMzmf,QAAQ,CACzB,IAAI2he,EAAM8kB,EAAMtjf,SAAS0rB,EAAMhsB,WAAY,KAC3C,IAAK8+d,EAAIt7d,UAAUC,SAASi03B,OAAgB54Z,EAAIt7d,UAAUC,SAASkt3B,KAC/D,OAAO7xZ,EAEX9yc,GACJ,CAEJ,EACAks2B,EAAQt63B,UAAUw93B,oBAAsB,SAAUx3Y,GAG9C,IAFA,IACI53d,EAAQ43d,EAAMzmf,OAAS,EACpB6uB,GAAS,GAAG,CACf,IAAI8yc,EAAM8kB,EAAMtjf,SAAS0rB,EAAMhsB,WAAY,KAC3C,IAAK8+d,EAAIt7d,UAAUC,SAASi03B,OAAgB54Z,EAAIt7d,UAAUC,SAASkt3B,KAC/D,OAAO7xZ,EAEX9yc,GACJ,CAEJ,EACAks2B,EAAQt63B,UAAUo93B,SAAW,SAAU76Z,EAAStoc,GAC5C,IAAI4j2B,EAAMh/3B,OAAO0je,GAAStoc,EAAM,kBAChC,GAAI4j2B,EAAK,CAEL,GADcp83B,KAAKm83B,YAAYC,GAG3B,YADAp83B,KAAK273B,SAASS,EAAK5j2B,GAGvBx4B,KAAKi73B,aAAamB,EACtB,MACK,GAAIp83B,KAAKw53B,UAAW,CACrB,IAAI76hB,EAAOvhW,OAAO0je,EAAQ58d,eAAes0B,EAAM,kBAI/C,GAHKijc,GAAM98H,IAAkC,IAAzBA,EAAKr4T,SAASxoC,SAC9B6gW,EAAOvhW,OAAOuhW,GAAMnmU,EAAM,oBAEzBijc,GAAM98H,IAASA,EAAKr4T,SAASxoC,OAAS,EACvC,GAAY,SAAR06B,EAAgB,CAChB,IAAI3yB,EAAK84V,EAAKxpV,cAAc,IAAM8h3B,KAC9Bj33B,KAAKm83B,YAAYt23B,GACjB7F,KAAK273B,SAAS913B,EAAI2yB,IAGlB3yB,EAAGihV,kBAAkBl4E,QACrB5uQ,KAAKm73B,gBAAgBt13B,GAE7B,KACK,CACGA,EAAK84V,EAAKtY,iBACVrmV,KAAKm83B,YAAYt23B,GACjB7F,KAAK273B,SAAS913B,EAAI2yB,GAGlBx4B,KAAKi73B,aAAap13B,EAE1B,CAER,MACK,IAAK41d,GAAMqF,GAAU,CACtB,IAAIu7Z,EAAWr83B,KAAKy5D,QAAQhsC,iBAAiB,IAAMup2B,IAAY,KAAOC,IAAW,SAAWC,IAA/C,UAAgF5F,IAAhF,UAA+G+G,IAAa,KAC7J,SAAR7/1B,GAAkB6j2B,EAClBr83B,KAAKi73B,aAAaoB,EAAS,IAEd,aAAR7j2B,GAAsB6j2B,GAC3Br83B,KAAKi73B,aAAaoB,EAASA,EAASv+3B,OAAS,GAErD,CACJ,EACA+63B,EAAQt63B,UAAUsyf,aAAe,SAAU3zf,GACvC,IAgBI4kpB,EAhBAlhc,EAAQ5gN,KACR+z3B,EAAO723B,EAAEilB,OACTs9c,EAAMz/d,KAAKy5D,QACX6i0B,GAAkB7ga,GAAMqF,GAAQizZ,EAAM,IAAMiE,MAC5C78X,EAAU44X,EAAK5v3B,UACfo43B,EAAWz7Z,GAAQizZ,EAAO,IAAM4D,KAC/B4E,IACDA,EAAWxI,GAEVt0Z,EAAIn5b,SAAS,GAAGniC,UAAUC,SAAS,cAAiBq7d,EAAIn5b,SAAS,GAAGniC,UAAUC,SAAS,eACpF+2f,EAAQ/2f,SAASuz3B,OACrBx8X,EAAU44X,EAAK5+2B,cAAc,YAAYhR,YAEzCg3f,EAAQ/2f,SAAS+y3B,MAAkBh8X,EAAQ/2f,SAASgz3B,OACpDp33B,KAAKw83B,kBAAkB/8Z,EAAK88Z,EAAUlL,KAG1C,IAAIkK,EAAOz6Z,GAAQ5je,EAAEilB,OAAQ,IAAM802B,KACnC,IAAKx7Z,GAAM8/Z,KAASA,EAAKp33B,UAAUC,SAASkt3B,MAAkBiL,EAASp43B,UAAUC,SAASuz3B,KAA1F,CAGA,GAAI4D,EAEAz5O,EADe9hpB,KAAKyqB,MAAMzqB,KAAKw63B,QAAQ913B,QAAQ623B,IAGnD,IAAI5rhB,EAAY,CAAEj+P,cAAex0G,EAAGm4E,KAAMyskB,IACtBA,IAAYrmL,GAAMqmL,EAAQ1roB,QAAkC,iBAAjB0roB,EAAQ1roB,OAAqBqld,GAAMqmL,EAAQ1roB,MAAMqm3B,YAAc36O,EAAQ1roB,MAAMqm3B,UAAU3+3B,OAAS,GAAK29d,GAAMqmL,KAAarmL,GAAMqmL,EAAQ1roB,SAEjMpW,KAAKo/d,QAAQ,SAAWp/d,KAAKw63B,QAAQ913B,QAAQ623B,GAAQ,UAAW5rhB,GAE/DA,EAAU7uB,QACX9gV,KAAKo/d,QAAQ,UAAWzvH,GAAW,SAAU+shB,IACpCjha,GAAM76Q,EAAM24qB,SAAW+C,IAAmBI,EAAY57iB,QAAiC,UAAvBlgI,EAAMsgJ,cACvEw7hB,EAAYrnzB,MAAkC,UAA1BqnzB,EAAYrnzB,KAAK5uE,MACrCm6M,EAAM24qB,OAAOh31B,KAAK,CAAE1hC,KAAM,UAAW8yD,SAAU,KAEvD,GAhBJ,CAkBJ,EACAkl0B,EAAQt63B,UAAUi+3B,kBAAoB,SAAU/8Z,EAAK88Z,EAAUlL,GAC3D,IAAIkI,EAASv53B,KAAKu53B,OACdtyiB,GAAUsyiB,EAAO9/zB,UACjB8i0B,EAASp43B,UAAU0C,OAAOqx3B,KAC1BqB,EAAOh31B,KAAK,CAAE1hC,KAAM,UAAW8yD,SAAU,QAGrC8ra,EAAIt7d,UAAUC,SAASit3B,KACvBkI,EAAOxrZ,WAAY,EACnBwrZ,EAAOnk3B,SAAW,CAAEhI,EAAG,OAAQ6hB,EAAG,QAEf,IAAnBsq2B,EAAOli3B,SAAkBood,EAAIt7d,UAAUC,SAASit3B,KAChDkI,EAAOxrZ,WAAY,EACnBwrZ,EAAOnk3B,SAAW,CAAEhI,EAAG,QAAS6hB,EAAG,QAEb,aAAtBjvB,KAAKkhW,eACLq4hB,EAAO9/zB,QAAQp1D,MAAM0mB,UAAY,MACjCwu2B,EAAOh23B,MAAQvD,KAAK283B,qBAAqB383B,KAAKy5D,UAElD8/zB,EAAOl3Z,WACPk3Z,EAAO7+P,kBACP6+P,EAAO9/zB,QAAQp1D,MAAMlB,IAAMnD,KAAK483B,oBAAsB,KACtDL,EAASp43B,UAAU2C,IAAIox3B,KACvBqB,EAAO/72B,KAAK,CAAE3c,KAAM,SAAU8yD,SAAU,MAEhD,EACAkl0B,EAAQt63B,UAAUo+3B,qBAAuB,SAAUl9Z,GAC/C,IAAIo9Z,EAAYl43B,OAAOhC,iBAAiB88d,GACxC,OAAOt9d,WAAW063B,EAAUt53B,OAAqD,EAA1CpB,WAAW063B,EAAUt0f,iBAChE,EAOAswf,EAAQt63B,UAAUupE,OAAS,WACvB,IAAI84I,EAAQ5gN,KACZA,KAAKy9E,aACLz9E,KAAK883B,gBACL983B,KAAK85e,aACL95e,KAAK6ve,iBACD7ve,KAAKwnf,SAAWxnf,KAAK65f,SAAW75f,KAAK65f,QAAQ/7f,OAAS,GACtDkC,KAAKwwe,sBAAqB,WACtB5vR,EAAM+zhB,iBACV,GAER,EACAkkJ,EAAQt63B,UAAUk/E,WAAa,WAC3B,IAAIl6E,EAAQsgd,GAAW7jd,KAAKuD,OACxBC,EAASqgd,GAAW7jd,KAAKwD,QACH,SAAtB05d,GAAQ5hZ,KAAKz6E,MAAmC,SAAhBb,KAAKwD,QAA2C,aAAtBxD,KAAKkhW,cAC/DkjS,GAASpkoB,KAAKy5D,QAAS,CAAE,OAAUj2D,IAEvC4goB,GAASpkoB,KAAKy5D,QAAS,CAAE,MAASl2D,IAClC,IAAI0+rB,EAAW,CACX,KAAQ,UAAW,gBAAiB,QACpC,mBAAqBjisB,KAAKqoF,WAA4B,WAAf,cAE3ChxB,GAAWr3D,KAAKy5D,QAASwooB,GACrBjisB,KAAK6O,UACL4jD,GAAS,CAACzyD,KAAKy5D,SAAUz5D,KAAK6O,SAAS7N,MAAM,KAErD,EACA633B,EAAQt63B,UAAUu+3B,cAAgB,WAC9B,IAAIr9Z,EAAMz/d,KAAKy5D,QACfz5D,KAAKq53B,QAAW55Z,EAAIn5b,SAASxoC,OAAS,EAAK2he,EAAItqd,cAAc,OAAS,KACtEnV,KAAKy63B,WAAa,CAAEC,MAAO,GAAIC,QAAS,GAAIC,OAAQ,IACpD563B,KAAKyspB,cACLzspB,KAAK+83B,cACT,EACAlE,EAAQt63B,UAAUw+3B,aAAe,WAC7B/83B,KAAKg93B,qBACDh93B,KAAKw53B,WACLx53B,KAAKi93B,kBAELj93B,KAAKu53B,QAAUv53B,KAAKu53B,OAAO9/zB,QAAQyzlB,kBAAoB,GAAKltpB,KAAKk93B,kBAAkBl93B,KAAKy5D,QAASz5D,KAAKu53B,OAAO9/zB,UAC7Gz5D,KAAKg73B,aAAah73B,KAAKu53B,OAAO9/zB,SAAS,GAE3Cz5D,KAAKkzO,WACT,EACA2lpB,EAAQt63B,UAAU4+3B,WAAa,SAAU1y2B,EAAO2y2B,GAC5C,IAAIC,EACAC,EACCt93B,KAAKw63B,UACNx63B,KAAKw63B,QAAU,IAEnB,IAAK,IAAIr93B,EAAI,EAAGA,EAAIstB,EAAM3sB,OAAQX,IAC9Bkg4B,EAAYr93B,KAAKu93B,mBAAmB9y2B,EAAMxpB,SAAS9D,EAAEwD,WAAY,KAAMxD,IAC9B,IAArC6C,KAAKw63B,QAAQ913B,QAAQ243B,IACrBr93B,KAAKw63B,QAAQ783B,KAAK0/3B,GAEjBr93B,KAAKw53B,WACNx53B,KAAKw93B,cAAc/y2B,EAAMxpB,SAAS9D,EAAEwD,WAAY,KAAMy83B,EAAYjg4B,IAEtEmg4B,EAAWF,EAAWjo3B,cAAc,cAAgBsV,EAAMxpB,SAAS9D,EAAEwD,WAAY,KAAKuf,MAAMzb,iBAElFgmB,EAAMxpB,SAAS9D,EAAEwD,WAAY,KAAK883B,mBAAoE,SAA/Chz2B,EAAMxpB,SAAS9D,EAAEwD,WAAY,KAAK83N,UAC3Fz4N,KAAKy63B,YAAYhw2B,EAAMxpB,SAAS9D,EAAEwD,WAAY,KAAKuf,MAAQ,KAAKzb,eAAe9G,KAAK0/3B,GAExFC,EAAS/l3B,YAAY8l3B,IAGrBD,EAAW7l3B,YAAY8l3B,GAG/B,GAAIr93B,KAAKwnf,QAAS,CAEdxnf,KAAKg+F,OAAO,gCAAiCh+F,KAAiB,SAC9DA,KAAKwwe,sBACT,CACJ,EAKAqoZ,EAAQt63B,UAAUuof,kBAAoB,WAClC,IAAIrnB,EAAMz/d,KAAKy5D,QACXz5D,KAAKqoF,YACLo3Y,EAAIt7d,UAAU0C,OAAOkw3B,KACrB/23B,KAAKqoF,YAAa,EACE,SAAhBroF,KAAKwD,QAAqC,SAAhBxD,KAAKwD,SAC/Bi8d,EAAIp7d,MAAMb,OAASxD,KAAKwD,QAE5Bi8d,EAAI72d,aAAa,mBAAoB,gBAGrC62d,EAAIt7d,UAAU2C,IAAIiw3B,KAClB/23B,KAAKqoF,YAAa,EAClBo3Y,EAAI72d,aAAa,mBAAoB,YACrCw7nB,GAASpkoB,KAAKy5D,QAAS,CAAE,OAAUoqZ,GAAW7jd,KAAKwD,QAAS,MAASqgd,GAAW7jd,KAAKuD,UAEzFvD,KAAK+63B,cACL/63B,KAAK20uB,iBACT,EACAkkJ,EAAQt63B,UAAUm/3B,WAAa,SAAUjk0B,EAASkk0B,GAC9C,IAAK393B,KAAKqtsB,cAAgBrtsB,KAAK6rO,cAAcpyK,EAASkk0B,EAAW,IAAK,CAC9D393B,KAAKw53B,WACLx53B,KAAKy5D,QAAQtkD,cAAc,IAAM6h3B,IAAY,KAAOa,KAAgBtk0B,gBAAgB,SAEpFvzD,KAAKqoF,WACLroF,KAAKqtsB,aAAe,IAAImoL,IAAQ,CAAE7C,WAAY3y3B,KAAK2y3B,WAAY5kZ,UAAW/te,KAAK+te,WAAa4vZ,EAAW,IAGvG393B,KAAKqtsB,aAAe,IAAI4kL,IAAQ,CAAEU,WAAY3y3B,KAAK2y3B,WAAY5kZ,UAAW/te,KAAK+te,WAAa4vZ,EAAW,IAEvG393B,KAAK6O,UACL4jD,GAAS,CAACkr0B,EAAW,IAAK393B,KAAK6O,SAAS7N,MAAM,MAElD,IAAIux3B,EAAYvy3B,KAAKqtsB,aAAa5zoB,QAAQtkD,cAAc,IAAM4i3B,IAAN,oBACpDxF,GACAA,EAAUh/zB,gBAAgB,YAE9BvzD,KAAK6G,OAAO7G,KAAKqtsB,aAAa5zoB,QAASq+zB,KACvC1zP,GAASpkoB,KAAKy5D,QAAS,CAAEg/J,SAAU,UACvC,CACJ,EACAogqB,EAAQt63B,UAAUq/3B,aAAe,SAAUnz2B,GACvC,IAEIpmB,EAFAu8M,EAAQ5gN,KACRuD,EAAQ,EAUZ,MARA,GAAG3C,MAAMb,KAAK0ge,GAAU,IAAMw2Z,IAAUxs2B,IAAQ1sB,SAAQ,SAAU8H,GAC1DohV,GAAUphV,KACVxB,EAAQM,OAAOhC,iBAAiBkD,GAChCtC,GAASq9M,EAAMv4H,WAAaxiF,EAAGmhV,aAAenhV,EAAGypV,YACjD/rV,GAASpB,WAAWy+M,EAAMv4H,WAAahkF,EAAMskY,UAAYtkY,EAAMukY,aAC/DrlY,GAASpB,WAAWy+M,EAAMv4H,WAAahkF,EAAMwkY,aAAexkY,EAAMqkY,YAE1E,IACOnlY,CACX,EACAs13B,EAAQt63B,UAAUs/3B,gBAAkB,SAAUR,GAC1C,IAAIzoQ,EAAY50nB,KAAKqoF,WAAc,qBAAuB,qBAC1D,OAAOg1yB,EAAUlo3B,cAAcy/mB,EACnC,EACAikQ,EAAQt63B,UAAUstO,cAAgB,SAAUpyK,EAAS4j0B,GACjD,GAAI5ha,GAAMhia,IAAYgia,GAAM4ha,KAAep2iB,GAAUxtR,GACjD,OAAO,EAEX,IAAIqk0B,EAAW993B,KAAKqoF,WAAa5uB,EAAQutR,aAAevtR,EAAQ61R,YAC5DlzQ,EAAYp8E,KAAKqoF,WAAag1yB,EAAUr2iB,aAAeq2iB,EAAU/tiB,aACjEtvV,KAAKw53B,WAAax53B,KAAKqtsB,cAAiBywL,IAAa1hzB,KACrDA,EAAYp8E,KAAK493B,aAAa593B,KAAKqtsB,aAAertsB,KAAK693B,gBAAgBR,GAAaA,IAExF,IAAIU,EAAStk0B,EAAQtkD,cAAc,IAAMwi3B,KACrCqG,EAAYvk0B,EAAQtkD,cAAc,IAAMyi3B,KACxCqG,EAAc,EAOlB,OANIF,EACAE,EAAcj+3B,KAAKqoF,WAAa01yB,EAAO/2iB,aAAe+2iB,EAAOzuiB,YAExD0uiB,IACLC,EAAcj+3B,KAAKqoF,WAAwC,EAA1B21yB,EAAUh3iB,aAA+C,EAAxBg3iB,EAAU1uiB,aAE5ElzQ,EAAY0hzB,EAAWG,CAM/B,EAQApF,EAAQt63B,UAAUo2uB,gBAAkB,WAChC30uB,KAAKowC,QACT,EACAyo1B,EAAQt63B,UAAU2/3B,aAAe,SAAUP,GACnC393B,KAAKw53B,YACLx53B,KAAK8G,IAAI623B,EAAY7F,KACrB933B,KAAKi93B,kBAEb,EACApE,EAAQt63B,UAAUy+3B,mBAAqB,WACnC,IAAIv9Z,EAAMz/d,KAAKy5D,QACXkk0B,EAAal+Z,EAAItqd,cAAc,IAAM6h3B,KACrCmH,EAAgBn+3B,KAAK653B,cAAgB,EACzC,GAAIp6Z,GAAOA,EAAIn5b,SAASxoC,OAAS,EAM7B,OALAkC,KAAKo+3B,UAAY3+Z,EAAInwI,YACrBtvV,KAAK6G,OAAO7G,KAAKy5D,QAAS,aACA,SAAtByja,GAAQ5hZ,KAAKz6E,MAAmC,SAAhBb,KAAKwD,SACrCi8d,EAAIp7d,MAAMb,OAAS,IAEfxD,KAAKkhW,cACT,IAAK,aACGu6H,GAAMz7d,KAAKqtsB,eACXrtsB,KAAK093B,WAAWj+Z,EAAK,GAAG7+d,MAAMb,KAAK0/d,EAAIpmc,uBAAuB291B,OAElE,MACJ,IAAK,QACDh33B,KAAK8G,IAAI9G,KAAKy5D,QAAS,aACnBz5D,KAAKw53B,WACLx53B,KAAKq+3B,qBAELr+3B,KAAK6rO,cAAc4zP,EAAKk+Z,IAAeQ,IACvCn+3B,KAAKs+3B,sBAAsB7+Z,GAE/Bz/d,KAAKk+3B,aAAaP,GAClB,MACJ,IAAK,WACD393B,KAAK8G,IAAI623B,EAAYrF,KACjBt43B,KAAK6rO,cAAc4zP,EAAKk+Z,IAAe393B,KAAKw53B,YAC5Cx53B,KAAKq+3B,oBACLr+3B,KAAK8G,IAAI623B,EAAYpF,MAEE,WAAvB94Z,EAAIp7d,MAAMo0N,WACVgnQ,EAAIp7d,MAAMo0N,SAAW,IAEC,SAAtBykQ,GAAQ5hZ,KAAKz6E,MAAwC,SAArB4+d,EAAIp7d,MAAMb,SAC1Ci8d,EAAIp7d,MAAMb,OAAS,QAEvB,MACJ,IAAK,WACDxD,KAAK8G,IAAI9G,KAAKy5D,QAASi/zB,MACnB143B,KAAK6rO,cAAc4zP,EAAKk+Z,IAAeQ,KACnCn+3B,KAAKw53B,WACLx53B,KAAKq+3B,oBAETr+3B,KAAKs+3B,sBAAsB7+Z,IAE/Bz/d,KAAKk+3B,aAAaP,GAGlC,EACA9E,EAAQt63B,UAAU+/3B,sBAAwB,SAAU7+Z,GAChDz/d,KAAKu+3B,eAAe9+Z,EAAK,GAAG7+d,MAAMb,KAAK0ge,GAAU,IAAMu2Z,IAAY,KAAOC,IAAUx3Z,KAKpFpoa,GAAWr3D,KAAKy5D,QAAQtkD,cAAc,IAAMwi3B,KAJ7B,CACX,SAAY,IAAK,KAAQ,SAAU,gBAAiB,OACpD,aAAc,YAGtB,EACAkB,EAAQt63B,UAAU20O,UAAY,WAC1B,IAAIz5K,EAAUz5D,KAAKy5D,QACf+k0B,EAAU,GAAG593B,MAAMb,KAAK05D,EAAQhsC,iBAAiB,IAAMyp2B,MACvDuH,EAAWhl0B,EAAQtkD,cAAc,IAAMqj3B,KACvCkG,EAAYjl0B,EAAQtkD,cAAc,IAAMsj3B,KACxCkG,EAAsC,aAAtB3+3B,KAAKkhW,aAA8Bu9hB,EAAWC,EAC5C,OAAlBC,IAC0B,aAAtB3+3B,KAAKkhW,aACLy9hB,EAAcx63B,UAAU0C,OAAO2x3B,KAEJ,aAAtBx43B,KAAKkhW,cACVy9hB,EAAcx63B,UAAU0C,OAAO4x3B,MAGvC,IAAK,IAAIt73B,EAAI,EAAGA,GAAKqh4B,EAAQ1g4B,OAAS,EAAGX,IACjCqh4B,EAAQv93B,SAAS9D,EAAEwD,WAAY,KAAKw7G,WAAa,IAAyD,IAAnDqixB,EAAQv93B,SAAS9D,EAAEwD,WAAY,KAAKw7G,aACjE,aAAtBn8G,KAAKkhW,aACLs9hB,EAAQv93B,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU2C,IAAI0x3B,KAEvB,aAAtBx43B,KAAKkhW,cACVs9hB,EAAQv93B,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU2C,IAAI2x3B,KAIlE,EACAI,EAAQt63B,UAAUgg4B,eAAiB,SAAU9+Z,EAAKggL,GAC9C,IAAIm/O,EAAWn/Z,EAAItqd,cAAc,IAAMwi3B,KACnCru2B,EAAWtpB,KAAKqoF,WACfu2yB,GACD5+3B,KAAK6+3B,gBAAgBp/Z,GAEzBm/Z,EAAWn/Z,EAAItqd,cAAc,IAAMwi3B,KACnC,IAAImH,EAAex12B,EAAWs12B,EAAS53iB,aAAe43iB,EAAStviB,YAC3DwuiB,GAAax02B,EAAWm2c,EAAIz4I,aAAey4I,EAAInwI,aAAgBwviB,EACnE9+3B,KAAKy5D,QAAQt1D,UAAU0C,OAAO,SAC9Bu9nB,GAASpkoB,KAAKy5D,QAAS,CAAEmjB,UAAW,YACpC58E,KAAK++3B,cAAct/Z,EAAKggL,EAAUq+O,GAAU,GACxC993B,KAAK+te,WACL/te,KAAKy5D,QAAQt1D,UAAU2C,IAAI,SAE/B9G,KAAKy5D,QAAQp1D,MAAM6zf,eAAe,aAClCl4f,KAAK8gqB,aACT,EACA+3N,EAAQt63B,UAAUyg4B,iBAAmB,SAAUC,EAASC,EAAUz/Z,EAAK0/Z,EAAWC,GAC9E,IAAI3l0B,EAAUwl0B,EAAQxl0B,QAClB4l0B,EAAY,GAAGz+3B,MAAMb,KAAK0ge,GAAU,IAAMw3Z,IAAWx+zB,EAAQtkD,cAAc,IAAM6h3B,OACjFzyY,EAAQ9jB,GAAU,IAAMg3Z,IAAkBh4Z,GAC1C6/Z,EAAY,EACZC,EAAU,EACdF,EAAUth4B,SAAQ,SAAU8H,EAAI8mB,GAC5B43d,EAAQ9jB,GAAU,IAAMg3Z,IAAkBh4Z,GACtC55d,EAAG1B,UAAUC,SAASqz3B,MAAqBlzY,EAAMzmf,OAAS,EACtDmh4B,EAAQO,UAAYj7Y,EAAMzmf,OAAS6uB,GACnC8yc,EAAIxpd,aAAapQ,EAAI0+e,EAAMtjf,SAAS0rB,EAAMhsB,WAAY,QACpD4+3B,IAGF9/Z,EAAIxpd,aAAapQ,EAAI45d,EAAIn5b,SAASi+c,EAAMzmf,WACtCyh4B,GAGD153B,EAAG1B,UAAUC,SAASqz3B,MAItBwH,EAAQO,UAAY353B,EAAG1B,UAAUC,SAASsz3B,MAAoBj4Z,EAAIn5b,SAASxoC,OAAS,GAAsB,IAAjBymf,EAAMzmf,QAHpG2he,EAAIxpd,aAAapQ,EAAI45d,EAAI9xc,cACvB4x2B,GAMG153B,EAAG1B,UAAUC,SAASsz3B,KAC3BwH,EAASvh4B,KAAKkI,GAETo53B,EAAQO,UACb//Z,EAAIxpd,aAAapQ,EAAI45d,EAAIryc,WAAWky2B,EAAYC,MAC9CD,GAGF7/Z,EAAIlod,YAAY1R,GAEhBA,EAAG1B,UAAUC,SAAS8y3B,KACtB9yP,GAASv+nB,EAAI,CAAE6kB,QAAS,GAAIlnB,OAAQ473B,EAAY,OAGhDh7P,GAASv+nB,EAAI,CAAE6kB,QAAS,GAAIlnB,OAAQ273B,EAAY,MAExD,IACAD,EAASnh4B,SAAQ,SAAU8H,GACvB45d,EAAIlod,YAAY1R,EACpB,IAEA,IADA,IAAI203B,EAAU/5Z,GAAU,IAAMw2Z,IAAUx9zB,EAAQtkD,cAAc,IAAM6h3B,MAC3D753B,EAAIq93B,EAAQ183B,OAAS,EAAGX,GAAK,EAAGA,IAAK,CAC1C,IAAIsi4B,EAAcjF,EAAQv53B,SAAS9D,EAAEwD,WAAY,KACjD,IAAI8+3B,EAAYt73B,UAAUC,SAAS8y3B,MAAwC,aAAtBl33B,KAAKkhW,aAItD,MAHAkjS,GAASq7P,EAAa,CAAE/02B,QAAS,QAKzC,CACJ,EACAmu2B,EAAQt63B,UAAUuiqB,YAAc,WAC5B,IACIs+N,EACAM,EAFAjm0B,EAAUz5D,KAAKy5D,QAGO,aAAtBz5D,KAAKkhW,eACLw+hB,EAAUjm0B,EAAQtkD,cAAc,IAAM+h3B,KACtCkI,EAC8B,SAAzB3l0B,EAAQp1D,MAAMb,QAA8C,KAAzBi2D,EAAQp1D,MAAMb,OAAiB,KAAQk83B,GAAWA,EAAQ14iB,cAEtG,IAEIy4I,EAFA++Z,EAAU/k0B,EAAQtkD,cAAc,IAAM8h3B,IAAW,SAAWC,IAAgB,UAAYe,IAAY,KACpGkH,EAAsC,SAAzB1l0B,EAAQp1D,MAAMb,QAA8C,KAAzBi2D,EAAQp1D,MAAMb,OAAiB,KAAQg73B,GAAWA,EAAQx3iB,aAG9G,GAAIn2U,GAAO,IAAM4oD,EAAQ3jD,GAAK,UAAYki3B,IAAgBv+zB,GACtDgma,EAAM5ud,GAAO,IAAM4oD,EAAQ3jD,GAAK,UAAYki3B,IAAgBv+zB,OAE3D,CACD,IAAIkm0B,EAAY3/3B,KAAKg+B,cAAc,MAAO,CACtCloB,GAAI2jD,EAAQ3jD,GAAK,SAAU5J,UAAW8r3B,IAAiB,IAAMW,MAE7Dv4N,EAAWpgqB,KAAKg+B,cAAc,MAAO,CAAEloB,GAAI2jD,EAAQ3jD,GAAK,SAAU5J,UAAW8r3B,MACjFv4Z,EAA4B,aAAtBz/d,KAAKkhW,aAA8By+hB,EAAYv/N,CACzD,CACApgqB,KAAKg/3B,iBAAiBh/3B,KAXP,GAWuBy/d,EAAK0/Z,EAAWC,GACtDp/3B,KAAK4/3B,UAAUnm0B,EAASgma,EAC5B,EACAo5Z,EAAQt63B,UAAUq+3B,kBAAoB,WAClC,MAA8B,aAAtB583B,KAAKkhW,cAAwG,eAAzEv8V,OAAOhC,iBAAiB3C,KAAKy5D,SAASqjB,iBAAiB,cAC/F98E,KAAKy5D,QAAQ72D,aAAe5C,KAAKy5D,QAAQutR,YACjD,EACA6xiB,EAAQt63B,UAAUqh4B,UAAY,SAAUnm0B,EAASgma,GAC7C,GAAKz/d,KAAKu53B,QAwCL,GAA0B,aAAtBv53B,KAAKkhW,aAA6B,CACvC,IAAIk/T,EAAWpgqB,KAAKu53B,OAAO9/zB,QAC3B2qkB,GAASg8B,EAAU,CAAEp1oB,UAAW,GAAIN,QAAS,UAC7C05mB,GAASg8B,EAAU,CAAEp1oB,UAAWo1oB,EAASp5U,aAAe,KAAMt8T,QAAS,IAC3E,MA5CkB,CACd+uC,EAAQliD,YAAYkod,GAChBz/d,KAAK6O,UACL4jD,GAAS,CAACgta,GAAMz/d,KAAK6O,SAAS7N,MAAM,MAExCojoB,GAASpkoB,KAAKy5D,QAAS,CAAEg/J,SAAU,KACnB9zN,OAAOhC,iBAAiB3C,KAAKy5D,SAA7C,IACI+lM,EAAQ,IAAIqZ,GAAM,KAAM,CACxBoiX,SAAUj7nB,KAAKy5D,QACfniD,QAAUtX,KAAKqoF,WAAc,EAAIroF,KAAK483B,oBACtC7uZ,UAAW/te,KAAK+te,UAChBp/V,KAAM3uI,KAAKi53B,UAAU1r3B,KAAKvN,MAC1By1H,MAAOz1H,KAAKk53B,WAAW3r3B,KAAKvN,MAC5Bo8nB,UAAW,CAAEntmB,EAAGjvB,KAAK253B,gBAAkB,OAAS,QAChDvk3B,SAAUpV,KAAK+te,UAAY,CAAE3ge,EAAG,OAAQ6hB,EAAG,OAAU,CAAE7hB,EAAG,QAAS6hB,EAAG,SAe1E,GAb0B,aAAtBjvB,KAAKkhW,eACL1hG,EAAMj8P,MAAQvD,KAAK283B,qBAAqB383B,KAAKy5D,SAC7C+lM,EAAMnoP,QAAU,GAEpBmoP,EAAM1gP,SAAS2gd,GACff,GAAa53d,IAAIyuB,SAAU,SAAUv1B,KAAKs63B,SAAS/s3B,KAAKvN,OACxD0+d,GAAa53d,IAAIyuB,SAAU,SAAUv1B,KAAKs63B,SAAS/s3B,KAAKvN,OAC9B,aAAtBA,KAAKkhW,eACL1hG,EAAM/lM,QAAQp1D,MAAM2mB,UAAYw0O,EAAM/lM,QAAQutR,aAAe,MAE7DhnV,KAAKqoF,aACLm3K,EAAM/lM,QAAQp1D,MAAMotI,WAAa,UAEjCzxI,KAAK453B,eAAgB,CACrB,IAAI2C,EAAWv83B,KAAKy5D,QAAQtkD,cAAc,IAAMwi3B,KAChD4E,EAASp43B,UAAU2C,IAAIox3B,KACvB/z3B,GAAUo43B,EAASz1iB,kBAAmB,CAACqwiB,KAAgB,CAACC,MACxDp33B,KAAKy5D,QAAQtkD,cAAc,IAAMwj3B,KAAqBx03B,UAAU2C,IAAIuw3B,IACxE,MAEI73nB,EAAMj9N,OAEVviC,KAAKu53B,OAAS/5nB,CAClB,CAMJ,EACAq5nB,EAAQt63B,UAAUsh4B,iBAAmB,SAAU39c,GACjB,aAAtBlib,KAAKkhW,eACDghF,EACAlib,KAAK8G,IAAI9G,KAAKy5D,QAASm/zB,KAGvB543B,KAAK6G,OAAO7G,KAAKy5D,QAASm/zB,KAGtC,EAEAC,EAAQt63B,UAAU063B,UAAY,SAAU/73B,GACpC,IAAIq83B,EAASv53B,KAAKu53B,OACbv53B,KAAKqoF,aACNkxyB,EAAOji3B,QAAUtX,KAAK483B,oBACtBrD,EAAOl3Z,YAEX,IAAI+9L,EAAWpgqB,KAAKu53B,OAAO9/zB,QACvBqm0B,EAAU9/3B,KAAKu53B,OAAO9/zB,QAAQv1D,cAC9Bq43B,EAAWuD,EAAQ3q3B,cAAc,IAAMwi3B,KAC3C4E,EAAS3z3B,aAAa,gBAAiB,QACb,aAAtB5I,KAAKkhW,aACLq4hB,EAAO9/zB,QAAQp1D,MAAM0mB,UAAY,IAGjCq5mB,GAASm1P,EAAO9/zB,QAAS,CAAEj2D,OAAQ,OAAQwnB,UAAW,KACtDuu2B,EAAO9/zB,QAAQp1D,MAAM2mB,UAAYuu2B,EAAO9/zB,QAAQutR,aAAe,MAEnE,IAAI+4iB,EAAc3/N,EAAS7pN,UAAY6pN,EAASp5U,aAAeovS,GAAkB0pQ,GAAS383B,IACtF683B,EAAUzD,EAASz1iB,kBACvBy1iB,EAASp43B,UAAU2C,IAAIox3B,KACvB/z3B,GAAU673B,EAAS,CAAC7I,KAAgB,CAACC,MACrCp33B,KAAK6/3B,kBAAiB,GACtB,IAAIvL,EAAY74Z,GAAM92d,OAAOysZ,SAAW,EAAIzsZ,OAAOysZ,QACnD,IAAKpxZ,KAAKqoF,YAAgB1jF,OAAO8pQ,YAAc6lnB,EAAayL,GAAiB//3B,KAAKy5D,QAAQ88Y,UAAY6pN,EAASp5U,aAAe,CAC1H,IAAIi5iB,EAAkB7/N,EAASp5U,cAAiB+4iB,EAAcp73B,OAAO8pQ,YAAc6lnB,EAAa,GAChGiF,EAAO/13B,OAASy83B,EAAiB,KACjC,IAAK,IAAI9i4B,EAAI,EAAGA,GAAKijqB,EAASlT,kBAAmB/vpB,IAAK,CAClD,IAAIsie,EAAM2gM,EAAS95nB,SAASrlC,SAAS9D,EAAEwD,WAAY,KACnD,GAAI8+d,EAAIlpB,UAAYkpB,EAAIz4I,aAAei5iB,EAAgB,CACnDA,EAAiBxga,EAAIlpB,UACrB,KACJ,CACJ,CAC0B,aAAtBv2c,KAAKkhW,cACLkjS,GAASm1P,EAAO9/zB,QAAS,CAAEzuC,UAAWi12B,EAAiB,MAE/D,MACK,GAAIjg4B,KAAKqoF,YAAoC,aAAtBroF,KAAKkhW,aAA6B,CAC1D,IAAIg/hB,EAAYlg4B,KAAKy5D,QAAQv2D,wBAC7BkhoB,GAASm1P,EAAO9/zB,QAAS,CAAEzuC,UAAYk12B,EAAU/83B,IAAMnD,KAAKy5D,QAAQutR,aAAgB,KAAM3jV,OAAQ,EAAGouI,WAAY,IACrH,CACA,GAAI8nvB,EAAQ,CACR,IAAI13N,EAAczB,EAASl9pB,wBACvB2+pB,EAAYz+pB,MAAQmyB,SAAS25B,gBAAgBrsD,aAAeg/pB,EAAYt+pB,MAAQu83B,EAAQ583B,wBAAwBK,QAChHg23B,EAAOn9P,UAAY,CAAEntmB,EAAG,QACxBsq2B,EAAOl3Z,YAEXk3Z,EAAO7+P,iBACX,CACJ,EAEAm+P,EAAQt63B,UAAU263B,WAAa,SAAUh83B,GACrC,IACIq/3B,EADUv83B,KAAKy5D,QACItkD,cAAc,IAAMwi3B,KAC3C4E,EAAS3z3B,aAAa,gBAAiB,SACvC,IAAIo33B,EAAUzD,EAASz1iB,kBACvBy1iB,EAASp43B,UAAU0C,OAAOqx3B,KAC1B/z3B,GAAU673B,EAAS,CAAC5I,KAAgB,CAACD,MACrCn33B,KAAK6/3B,kBAAiB,EAC1B,EACAhH,EAAQt63B,UAAUwg4B,cAAgB,SAAUt/Z,EAAK0ga,EAAOrC,EAAU/2D,GAkB9D,IAjBA,IAGI32J,EAHAgwN,EAAcpg4B,KAAK653B,cAAgB,EAEnCwG,EAASvC,EAGTwC,EAAW,EACXligB,EAAY,EACZmigB,EAAe,EACfC,EAAa,SAAU/ga,EAAK9sb,GAC5B,IAAI8t1B,GAAO,EAMX,OALA9t1B,EAAI50C,SAAQ,SAAUk9F,GACdwkY,EAAIt7d,UAAUC,SAAS62F,KACvBwlyB,GAAO,EAEf,IACOA,CACX,EACStj4B,EAhBCgj4B,EAAMri4B,OAgBG,EAAGX,GAAK,EAAGA,IAAK,CAC/B,IAAIuj4B,OAAO,EACPC,EAAah83B,OAAOhC,iBAAiBw93B,EAAMl/3B,SAAS9D,EAAEwD,WAAY,MAClEX,KAAKqoF,YACLq4yB,EAAOv+3B,WAAYw+3B,EAAYh4f,WAC/B+3f,GAAQv+3B,WAAYw+3B,EAAY93f,gBAGhC63f,EAAOv+3B,WAAYw+3B,EAAY/3f,aAC/B83f,GAAQv+3B,WAAYw+3B,EAAYj4f,aAEpC,IAAIk4f,EAAcT,EAAMl/3B,SAAS9D,EAAEwD,WAAY,OAASX,KAAKw63B,QAAQ,GACjEoG,IACA5g4B,KAAK6g4B,YAAcH,GAEvBtwN,EAAYpwqB,KAAKqoF,WAAa83yB,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAKqmV,aAAem5iB,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAK2uV,YACjH,IAAIwxiB,EAAWF,EAAexwN,EAAYswN,EAAQtwN,EAmBlD,GAlBIowN,EAAWL,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAM,CAACy33B,OAAgBgI,IAC/DD,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU2C,IAAImx3B,KAC5Cj43B,KAAKqoF,WACL+7iB,GAAS+7P,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAM,CAAE+pB,QAAS,OAAQK,UAAW+12B,EAAW,OAGrF18P,GAAS+7P,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAM,CAAE+pB,QAAS,OAAQzK,SAAU6g3B,EAAW,OAExFP,KAEAvg4B,KAAKqoF,WAEA83yB,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAK41c,UAAY4pb,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAKqmV,aAAe05iB,EAAQ5C,EAIvGqC,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAKw7G,WAAagkxB,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAK2uV,YAAcoxiB,EAAQ5C,EAE/F,CACb,GAAIqC,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAUC,SAAS8y3B,MACrD,GAA0B,aAAtBl33B,KAAKkhW,aAEDs/hB,EADAO,EAASZ,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KACnB,CAACu23B,IAAeiB,QACnCgI,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU2C,IAAImx3B,KAChDsI,KAEJnigB,SAEC,GAA0B,UAAtBp+X,KAAKkhW,aAA0B,CAEhC,IAAI6/hB,EADR,GAAIT,EAAW,GAAKligB,IAAcmigB,EAE1BC,EADAO,EAASZ,EAAMhj4B,EAAIihY,GAAakigB,EAAW,IACxB,CAACpJ,IAAeiB,OACnC/zP,GAAS28P,EAAQ,CAAEr22B,QAAS,SAGpC412B,IACAligB,EAAY,EACZmigB,EAAe,CACnB,OAGAnigB,IAEA+hgB,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAUC,SAASqz3B,MAAqB1wD,GAIpEy5D,EAAWL,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAM,CAACu23B,IAAeiB,MAHpE2F,IAAc993B,KAAKqoF,WAAa83yB,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAKqmV,aAC9Dm5iB,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAK2uV,aAAgBoxiB,GAGtDP,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU2C,IAAImx3B,KAC5Cj43B,KAAKqoF,WACL+7iB,GAAS+7P,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAM,CAAE+pB,QAAS,OAAQK,UAAW+12B,EAAW,OAGrF18P,GAAS+7P,EAAMl/3B,SAAS9D,EAAEwD,WAAY,KAAM,CAAE+pB,QAAS,OAAQzK,SAAU6g3B,EAAW,OAExFP,IAMR,CACJ,CACA,GAAIx5D,EAAK,CACL,IAAIi6D,EAAWvga,GAAU,IAAMw2Z,IAAW,SAAWgB,IAAY,IAAKj43B,KAAKy5D,SAC3Ez5D,KAAK++3B,cAAct/Z,EAAKuha,EAAUX,GAAQ,EAC9C,CACJ,EACAxH,EAAQt63B,UAAUsg4B,gBAAkB,SAAUpl0B,GAC1C,IAAI3jD,EAAK2jD,EAAQ3jD,GAAG3O,OAAO,QACvB+E,EAAY,KAAOutD,EAAQ3jD,GAAG3O,OAAO,kBACzC+E,EAAkC,aAAtBlM,KAAKkhW,aAA8Bh1V,oBAAoCA,EACnF,IAAIoqT,EAAMt2T,KAAKg+B,cAAc,MAAO,CAAEloB,GAAIA,EAAI5J,UAAWA,IAC/B,SAAtBgxd,GAAQ5hZ,KAAKz6E,MAAyC,SAAtBq8d,GAAQ5hZ,KAAKz6E,MAC7Cy1T,EAAInyT,UAAU2C,IAAI,cAEtB,IAAIwqgB,EAAUtxgB,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWkr3B,IAAgB,aACrE9gkB,EAAI/+S,YAAY+5f,GAChBh7M,EAAI1tT,aAAa,WAAY,KAC7B0tT,EAAI1tT,aAAa,OAAQ,UACzB6wD,EAAQliD,YAAY++S,EACxB,EACAuikB,EAAQt63B,UAAU0i4B,WAAa,SAAUd,EAAOjoP,EAAMgpP,EAAQr73B,EAAI6gK,EAAKy6tB,EAAOC,EAAK1zlB,EAAImvlB,GACnF,IAAIwE,EAAc3zlB,EACdmtlB,EAAS763B,KAAKu53B,OAAO9/zB,QACrBwpL,EAAQ,IAAMg0oB,IAAW,SAAWC,IAAgB,UAAYO,IAAmB,IACnF6J,EAAY7ga,GAAU,IAAMw3Z,IAAY,SAAWR,IAAmB,IAAKoD,GAAQ/83B,OACnF0i4B,EAAa,SAAU/ga,EAAK9sb,GAC5B,OAAO8sb,EAAIt7d,UAAUC,SAASuuC,EAClC,EACA,GAAuC,IAAnC8tb,GAAUx9O,EAAOk9oB,GAAOri4B,OAAc,CACtC,IAAIyj4B,EAASpB,EAAM751B,SAAS4xmB,GAAQA,EAAOgpP,GAAU,GACjDM,GAAgB/la,GAAM8la,IAAWf,EAAWe,EAAQpJ,KACxD,IAAM18Z,GAAM8la,IAAWf,EAAWe,EAAQrK,OAAmBjwiB,GAAUs6iB,IAAYC,EAAa,CAC5FD,EAAOl93B,MAAMqmB,QAAU,QACvB,IAAI+22B,EAAcF,EAAOjyiB,YAAyE,EAA1DntV,WAAWwC,OAAOhC,iBAAiB4+3B,GAAQ34f,aAC/E84f,EAAUH,EAAO/6iB,uBAChB26iB,EAAQM,EAAeL,GAAO16tB,GAC/By5tB,EAAMlq3B,aAAapQ,EAAIs63B,EAAM751B,SAAU4xmB,EAAOmpP,GAAgBnpP,EAAOgpP,KAChEzla,GAAMima,KACPA,EAAQr93B,MAAMqmB,QAAU,MAI5B05mB,GAASv+nB,EAAIg33B,GACT6E,EAAQv93B,UAAUC,SAAS8y3B,OAC3BwK,EAAQr93B,MAAMqmB,QAAU,SAGhC622B,EAAOl93B,MAAMqmB,QAAU,EAC3B,MAEIy12B,EAAMlq3B,aAAapQ,EAAIs63B,EAAM751B,SAAU4xmB,EAAOmpP,GAAgBnpP,EAAOgpP,IAE7E,MAEIf,EAAMlq3B,aAAapQ,EAAIs63B,EAAM751B,SAAU4xmB,EAAOmpP,EAAeC,GAErE,EACAzI,EAAQt63B,UAAUy83B,aAAe,SAAU56N,EAAU38lB,GACjD,IAAIm9I,EAAQ5gN,KACRy/d,EAAMz/d,KAAKy5D,QACXko0B,EAAQ3h4B,KAAKqoF,WACbo3jB,EAAWhgL,EAAItqd,cAAc,IAAM6h3B,KACnC+G,EAASt+Z,EAAItqd,cAAc,IAAMwi3B,KACrC,IAAIl8Z,GAAMsia,GAAV,CAKA,IAAIhtwB,EAFJ0uhB,EAASlslB,gBAAgB,SACzB6smB,EAAS/7pB,MAAMqmB,QAAU,QAGrBqmG,EADA4wwB,EACYlia,EAAIz4I,cAAgB+2iB,EAAO/2iB,aAAey4T,EAASz4T,cAGnDy4I,EAAInwI,aAAeyuiB,EAAOzuiB,YAAcmwT,EAASnwT,aAEjE,IAAIsyiB,EAAgB,EACpB,GAAGhh4B,MAAMb,KAAKqgqB,EAAS95nB,UAAUvoC,SAAQ,SAAU8H,GAC/C+73B,GAAiBhhrB,EAAMghrB,cAAc/73B,GACrCu+nB,GAASv+nB,EAAI,CAAE,SAAY,IAC/B,IACKkrH,GAAa4wwB,EAAQ5D,EAAO/2iB,aAAe+2iB,EAAOzuiB,aAAiBsyiB,GAAyC,IAAvB5h4B,KAAK653B,gBAC3Fp2zB,GAAU,GAEdzjE,KAAK6h4B,gBAAgB9wwB,EAAWqviB,EAAU38lB,GAC1C28lB,EAAS/7pB,MAAMqmB,QAAU,GACQ,IAA7B01oB,EAAS95nB,SAASxoC,QAAgBig4B,GAAU/93B,KAAKu53B,SACjDl5Z,GAAO09Z,GACPA,EAAS,KACT/93B,KAAKu53B,OAAO91zB,UACZ48Z,GAAOrge,KAAKu53B,OAAO9/zB,SACnBz5D,KAAKu53B,OAAS,KAzBlB,CA2BJ,EACAV,EAAQt63B,UAAUuj4B,eAAiB,SAAUn12B,EAAO8ynB,GAChD,IAAIsiP,EAAY,GAAGnh4B,MAAMb,KAAK0/oB,EAAShynB,iBAAiB,IAAM0q2B,MAC1D6J,EAAY,GACZv52B,EAAQ,EACZ,OAAIs52B,EAAUjk4B,OAAS,GACnBik4B,EAAUhk4B,SAAQ,SAAU0he,GACxBuia,EAAUrk4B,KAAK,GAAGiD,MAAMb,KAAK0/oB,EAASn5mB,UAAU5hC,QAAQ+6d,GAC5D,IAKJuia,EAAUjk4B,SAAQ,SAAU40C,GACpBA,GAAOhmB,GACPlE,GAER,IACOA,GAPI,CAQf,EACAow2B,EAAQt63B,UAAU2+3B,kBAAoB,SAAUngyB,EAAM89xB,GAClDA,EAAOx23B,MAAMqmB,QAAU,QACvB,IAAIy22B,EAAQnh4B,KAAK4h4B,cAAc/G,EAAO/ziB,mBACtC+ziB,EAAO/ziB,kBAAkBziV,MAAM6zf,eAAe,YAC9C,IAAI+pY,EAAYllyB,EAAKuyP,YAAcvyP,EAAK5nF,cAAc,IAAMwi3B,KAAaroiB,YACrE4yiB,EAAenlyB,EAAK5nF,cAAc,IAAM6h3B,KAAW1niB,YAEvD,OADAuriB,EAAOx23B,MAAM6zf,eAAe,WACxB+pY,EAAad,EAAQe,CAI7B,EACArJ,EAAQt63B,UAAUqj4B,cAAgB,SAAU/73B,GACxCA,EAAGxB,MAAM+Q,SAAW,WACpB,IAAI+s3B,EAAUni4B,KAAKqoF,WAAaxiF,EAAGmhV,aAAenhV,EAAGypV,YACjD8yiB,EAAUv83B,EAAGsP,cAAc,oBAC/B,GAAItP,EAAG1B,UAAUC,SAAS,iBAAmByB,EAAG1B,UAAUC,SAASoz3B,KAAe,CAC9E,IAAI5wM,EAAM/grB,EAAGygC,SAAS,IACjBm1b,GAAM2ma,IAAYv83B,EAAG1B,UAAUC,SAASoz3B,KACzC4K,EAAQ/93B,MAAMqmB,QAAU,QAElB+wc,GAAM2ma,IAAYv83B,EAAG1B,UAAUC,SAASmz3B,OAC9C6K,EAAQ/93B,MAAMqmB,QAAU,SAE5Bk8pB,EAAIvirB,MAAM4b,SAAW,KACrBki3B,EAAUhg4B,WAAYnC,KAAKqoF,WAAiCxiF,EAAGxB,MAAM0mB,UAA7BllB,EAAGxB,MAAM4b,UACjD2mqB,EAAIvirB,MAAM4b,SAAW,GACrB2mqB,EAAIvirB,MAAM0mB,UAAY,GACjB0wc,GAAM2ma,KACPA,EAAQ/93B,MAAMqmB,QAAU,GAEhC,CACA,OAAOy32B,CACX,EACAtJ,EAAQt63B,UAAUsj4B,gBAAkB,SAAUt+3B,EAAO68pB,EAAU38lB,GA8D3D,IA7DA,IAEI69zB,EACA302B,EAHAyz2B,EAAcpg4B,KAAK653B,cAAgB,EACnCwI,EAAYri4B,KAAKw63B,QAGjB/6O,EAAWz/oB,KAAKy5D,QAAQtkD,cAAc,IAAM6h3B,KAC5CqK,EAAc,EACdt+a,EAAU,SAAUl9c,GACpB,GAAIA,EAAG1B,UAAUC,SAASg03B,MAAegI,IAAgB38zB,EACrD,MAAO,WAEX,IAAI0+zB,EAAU3oe,EAAOooe,cAAc/73B,GAKnC,GAJIA,IAAO2zZ,EAAOghe,QAAQ,KACtB2H,GAAW3oe,EAAOqne,aAEtBh73B,EAAGxB,MAAM+Q,SAAW,KAChB+s3B,EAAU5+3B,GAASkgE,GA0CnB,MAAO,QAzCP,IAAI6+zB,EAAe,CAAEri3B,SAAUpa,EAAGxB,MAAM4b,SAAUzc,OAAQqC,EAAGxB,MAAMb,OAAQunB,UAAWllB,EAAGxB,MAAM0mB,WAM/F,GALAq5mB,GAASv+nB,EAAI,CAAEoa,SAAU,GAAIzc,OAAQ,GAAIunB,UAAW,KAC/CllB,EAAG1B,UAAUC,SAASsz3B,MACvB7x3B,EAAG1B,UAAU0C,OAAOox3B,KAExBtr2B,EAAQ6sY,EAAOghe,QAAQ913B,QAAQmB,GAC3B2zZ,EAAOgge,UAAW,CAClB,IAAIhh2B,EAAMghY,EAAO/uY,MAAMxpB,SAAS0rB,EAAMhsB,WAAY,KAAKuf,MACvDyM,EAAQ6sY,EAAOihe,YAAYji2B,EAAM,KAAK/zB,eAAeC,QAAQmB,GAC7Dw83B,EAAY7oe,EAAOihe,YAAYji2B,EAAM,KAAK/zB,eAC1Cg7oB,EAAWjmP,EAAO//V,QAAQtkD,cAAc,IAAM6h3B,IAAN,eAAwCx+1B,EAAI/zB,cACxF,CACA,IAAI893B,EAAiB,EACO,aAAxB/oe,EAAOt4D,cACPmhiB,EAAUzh4B,MAAM,EAAG+rB,GAAO5uB,SAAQ,SAAU8H,IACpCA,EAAG1B,UAAUC,SAASqz3B,MAAqB5x3B,EAAG1B,UAAUC,SAAS8y3B,QAC7Drx3B,EAAG1B,UAAUC,SAAS8y3B,OACtBrx3B,EAAGxB,MAAMqmB,QAAU,GACnBnnB,GAASsC,EAAGypV,aAEhBiziB,IAER,IAEJlB,EAAc7ne,EAAOsoe,eAAen12B,EAAO8ynB,GACvC55oB,EAAG1B,UAAUC,SAASqz3B,MACtBj+d,EAAOyne,WAAWxhP,EAAU9ynB,EAAO412B,EAAgB183B,EAAI49D,EAAS0+zB,EAAS5+3B,EAAO893B,EAAaiB,GAC7F/+3B,GAASsC,EAAGypV,aAEG,IAAV3iU,GACL8ynB,EAASxpoB,aAAapQ,EAAI45oB,EAAS9xnB,YACnCpqB,GAASsC,EAAGypV,cAGZgyiB,EAAY7ga,GAAU,IAAMg3Z,IAAkBj+d,EAAO+/d,OAAO9/zB,SAAS37D,OACrE2hpB,EAASxpoB,aAAapQ,EAAI45oB,EAASn5mB,SAAU3Z,EAAQ002B,EAAeC,IACpE/93B,GAASsC,EAAGypV,aAEhBzpV,EAAGxB,MAAMb,OAAS,EAK1B,EACIg2Z,EAASx5Z,KACJm6N,EAAK,EAAGjiC,EAAK,GAAGt3L,MAAMb,KAAKqgqB,EAAS95nB,UAAW6zL,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAG1E,GAAgB,UADF4oP,EADL7qR,EAAGiiC,IAGR,KACR,CACoBn6N,KAAK6rO,cAAc7rO,KAAKy5D,QAASz5D,KAAKy5D,QAAQpgC,uBAAuB291B,KAAW,MAC9EvzzB,GAClBzjE,KAAKg93B,oBAEb,EACAnE,EAAQt63B,UAAU8/3B,kBAAoB,WAClC,IAAIhpzB,EAAOr1E,KAAKy5D,QAAQtkD,cAAc,IAAM6h3B,KAC5C,IAAIv7Z,GAAMpmZ,IAAUA,EAAKlxE,UAAUC,SAAS0z3B,KAA5C,CAGA933B,KAAK6G,OAAOwuE,EAAMyizB,KAClB,IAAIuF,EAAY,GAAGz83B,MAAMb,KAAKs1E,EAAKjoD,YACnCiw2B,EAAU,GAAG9p0B,gBAAgB,SAC7B8p0B,EAAU,GAAG9p0B,gBAAgB,QAJ7B,CAKJ,EACAsl0B,EAAQt63B,UAAUik4B,mBAAqB,WACnC,IAAIntzB,EAAOr1E,KAAKy5D,QAAQtkD,cAAc,IAAM6h3B,KAC5Ch33B,KAAK8G,IAAIuuE,EAAMyizB,KACf933B,KAAKi93B,iBACT,EACApE,EAAQt63B,UAAU0+3B,gBAAkB,WAChC,IACIv22B,EADA2uD,EAAOr1E,KAAKy5D,QAAQtkD,cAAc,IAAM6h3B,KAE5C,IAAIv7Z,GAAMpmZ,IAAUA,EAAKlxE,UAAUC,SAAS0z3B,KAA5C,CAGA,IACIuF,EADAd,EAAWv83B,KAAKy5D,QAAQtkD,cAAc,IAAMwi3B,KAEhD,GAAI333B,KAAKqtsB,aAAc,CACnB,IAAIz4E,EAAY50nB,KAAKqoF,WAz7CZ,oBADA,oBA27CTg1yB,EAAY,GAAGz83B,MAAMb,KAAKs1E,EAAKlgE,cAAc,IAAMy/mB,GAAUtulB,SACjE,MAEI+21B,EAAY,GAAGz83B,MAAMb,KAAKs1E,EAAKjoD,YAG/B1G,EADA1mB,KAAKqoF,WACIg1yB,EAAU,GAAGr2iB,aAAeq2iB,EAAU,GAAGr2iB,aAGzCq2iB,EAAU,GAAG/tiB,YAAc+tiB,EAAU,GAAG/tiB,YAErD,IAAImziB,EAAUzi4B,KAAKqoF,WAAaroF,KAAKy5D,QAAQutR,aAAehnV,KAAKy5D,QAAQ61R,YACzE,GAAIitiB,EAAU,CACVkG,GAAYzi4B,KAAKqoF,WAAak0yB,EAASv1iB,aAAeu1iB,EAASjtiB,YAC/D,IAAIoziB,GAAU1i4B,KAAKqoF,WAAak0yB,EAASv1iB,aAAeu1iB,EAASjtiB,aAAe,KAChF+tiB,EAAU,GAAG9p0B,gBAAgB,SACzBvzD,KAAKqoF,WACDroF,KAAK+te,UACLsvZ,EAAU,GAAGh53B,MAAMlB,IAAMu/3B,EAGzBrF,EAAU,GAAGh53B,MAAMhB,OAASq/3B,EAI5B1i4B,KAAK+te,UACLsvZ,EAAU,GAAGh53B,MAAMf,KAAOo/3B,EAG1BrF,EAAU,GAAGh53B,MAAMjB,MAAQs/3B,CAGvC,CACA,KAAID,GAAW/72B,GAAf,CAGA,IAAI5nB,GAAW2j4B,EAAU/72B,GAAa1mB,KAAKqoF,WAAwCg1yB,EAAU,GAAGr2iB,aAAxCq2iB,EAAU,GAAG/tiB,cAA4C,EACjH+tiB,EAAU,GAAG9p0B,gBAAgB,SAC7B,IAAImt0B,GAAU1g4B,KAAKqoF,WAAwCg1yB,EAAU,GAAGr2iB,aAAxCq2iB,EAAU,GAAG/tiB,aAA2CxwV,EAAS,KAC7FkB,KAAKqoF,WACDroF,KAAK+te,UACLsvZ,EAAU,GAAGh53B,MAAMwkY,aAAe63f,EAGlCrD,EAAU,GAAGh53B,MAAMskY,UAAY+3f,EAI/B1g4B,KAAK+te,UACLsvZ,EAAU,GAAGh53B,MAAMukY,YAAc83f,EAGjCrD,EAAU,GAAGh53B,MAAMqkY,WAAag4f,CAjBxC,CAxCA,CA4DJ,EACA7H,EAAQt63B,UAAUi/3B,cAAgB,SAAUnozB,EAAMstzB,EAASnq2B,GACvD,IAAIooL,EAAQ5gN,KACZ,IAAIq1E,EAAKoozB,mBAAuC,SAAlBpozB,EAAKojJ,SAAnC,CAGA,IAAImqqB,EAAW,GAIf,GAHAA,EAASjl4B,KAAKqC,KAAKg+B,cAAc,MAAO,CAAE9xB,UA5/C/B,oBA6/CX023B,EAASjl4B,KAAKqC,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW2r3B,OACrD+K,EAASjl4B,KAAKqC,KAAKg+B,cAAc,MAAO,CAAE9xB,UA//C9B,qBAggDA,IAARssB,GAA4B,SAAf68C,EAAKn1D,MAClB0i3B,EAAS7k4B,SAAQ,SAAU0he,GACvBkja,EAAQpr3B,YAAYkod,EACxB,IACAz/d,KAAKw53B,WAAY,EACjBx53B,KAAK8G,IAAI673B,EAAS7K,UAEjB,GAAmB,SAAfzizB,EAAKn1D,MAAkB,CAC5B,IAAI2i3B,EAAWF,EAAQv12B,WACnB012B,EAAcF,EAAS,GAC3B,GAAGhi4B,MAAMb,KAAK8i4B,GAAU9k4B,SAAQ,SAAU8H,GACtC+6M,EAAM65qB,WAAWC,MAAM/83B,KAAKkI,GAC5Bi93B,EAAYvr3B,YAAY1R,EAC5B,IACA883B,EAAQpr3B,YAAYur3B,GACpBH,EAAQpr3B,YAAYqr3B,EAAS,IAC7BD,EAAQpr3B,YAAYqr3B,EAAS,IAC7B5i4B,KAAKw53B,WAAY,EACjBx53B,KAAK8G,IAAI673B,EAAS7K,IACtB,CAxBA,CAyBJ,EACAe,EAAQt63B,UAAUwk4B,aAAe,WAC7B,IAAInirB,EAAQ5gN,KACZA,KAAKs53B,QAAUt53B,KAAKq53B,QAAQj81B,WAAU,GACtCp9B,KAAK8G,IAAI9G,KAAKq53B,QAASrC,KACvBh33B,KAAKw63B,QAAU,GACA,GAAG553B,MAAMb,KAAKC,KAAKq53B,QAAQ/y1B,UACjCvoC,SAAQ,SAAU0he,GACH,QAAhBA,EAAIr+U,UACJw/D,EAAM45qB,QAAQ783B,KAAK8he,GACdhE,GAAMgE,EAAI34I,oBACX24I,EAAI34I,kBAAkBl+U,aAAa,gBAAiB,SAExDg4M,EAAM95M,IAAI24d,EAAKw3Z,KAEvB,GACJ,EACA4B,EAAQt63B,UAAUkupB,YAAc,WAC5B,IAAIhtL,EAAMz/d,KAAKy5D,QACXhvC,EAAQzqB,KAAKyqB,MACjB,GAAoB,MAAhBzqB,KAAKq53B,QACLr53B,KAAK+i4B,oBAEJ,GAAItja,GAAOh1c,EAAM3sB,OAAS,EAAG,CAC9B,IAAIs/3B,OAAa,EACb39Z,GAAOA,EAAIn5b,SAASxoC,OAAS,IAC7Bs/3B,EAAa39Z,EAAItqd,cAAc,IAAM6h3B,MAEpCoG,IACDA,EAAap93B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW8q3B,OAExDh33B,KAAKm93B,WAAW1y2B,EAAO2y2B,GACvB39Z,EAAIlod,YAAY6l3B,EACpB,CACJ,EACAvE,EAAQt63B,UAAUyk4B,QAAU,SAAUx93B,EAAMi0D,GAGxC,IAFA,IACI4hb,EADAz8e,EAAMxB,OAAOC,KAAKmI,GAEbrI,EAAI,EAAGA,EAAIyB,EAAId,OAAQX,IAEb,WADfk+e,EAASz8e,EAAIqC,SAAS9D,EAAEwD,WAAY,MAEhCX,KAAK8G,IAAI2yD,EAASj0D,EAAK,GAAK61e,IAG5B5hb,EAAQ7wD,aAAayye,EAAQ71e,EAAK,GAAK61e,GAGnD,EASAw9Y,EAAQt63B,UAAUg7vB,YAAc,SAAU9uuB,EAAOs2mB,GAC7C,IAEIthK,EAFA98Y,EAAWl4D,EACX0hD,EAAMwW,EAAS7kF,OAEf29d,GAAMslK,KACNA,GAAW,GAEf,IAAIugC,EAAS,SAAUvgC,EAAUthK,GACzBshK,GACAthK,EAAIt7d,UAAU0C,OAAOyq3B,KAChB71Z,GAAMgE,EAAI34I,oBACX24I,EAAI34I,kBAAkBl+U,aAAa,gBAAiB,WAIxD62d,EAAIt7d,UAAU2C,IAAIwq3B,KACb71Z,GAAMgE,EAAI34I,oBACX24I,EAAI34I,kBAAkBl+U,aAAa,gBAAiB,QAGhE,EACA,IAAK6yd,GAAMtvZ,IAAQA,GAAO,EAAG,CACzB,IAAK,IAAI5uE,EAAI,EAAGk8D,EAAU,GAAG74D,MAAMb,KAAK4iF,GAAWplF,EAAI4uE,EAAK5uE,IAAK,CAC7D,IAAI0l4B,EAAcxp0B,EAAQx4D,SAAS1D,EAAEoD,WAAY,KACjD,GAA6B,kBAAjBsi4B,EAA2B,CAEnC,GAAIxna,GADJgE,EAAMz/d,KAAKkj4B,kBAAkBD,IAEzB,OAGAtgzB,EAAS1hF,SAAS1D,EAAEoD,WAAY,KAAO8+d,CAE/C,MAEIA,EAAMwja,EAEV3hO,EAAOvgC,EAAUthK,EACrB,CACIshK,EACArukB,GAAYiwB,EAAU2uyB,KAGtB7+zB,GAASkwB,EAAU2uyB,IAE3B,KACK,CACD,GAA0B,kBAAd3uyB,GAER,GAAI84Y,GADJgE,EAAMz/d,KAAKkj4B,kBAAkBvgzB,IAEzB,YAIJ88Y,EAAMh1c,EAEV62oB,EAAOvgC,EAAUthK,EACrB,CACJ,EACAo5Z,EAAQt63B,UAAU2k4B,kBAAoB,SAAUv22B,GAC5C,OAAI3sB,KAAKw63B,QAAQv53B,SAAS0rB,EAAMhsB,WAAY,KACjCX,KAAKw63B,QAAQv53B,SAAS0rB,EAAMhsB,WAAY,KAE5C,IACX,EAQAk43B,EAAQt63B,UAAU4k4B,SAAW,SAAU142B,EAAOkC,GAC1C,IAAIgx2B,EACJ393B,KAAKoj4B,eACL,IAAIC,EAAWrj4B,KAAKy5D,QAAQtkD,cAAc,IAAM6h3B,KAChD,GAAIv7Z,GAAM4na,GACNrj4B,KAAKsj4B,cAAc742B,OADvB,CAIA,IAAIg1nB,EACA8jP,EAAU,OACV9na,GAAM9uc,KACNA,EAAQ,GAEZlC,EAAM1sB,SAAQ,SAAUb,GACfu+d,GAAMv+d,EAAEgjB,QAAsB,SAAZhjB,EAAEgjB,OAAgC,SAAZqj3B,IACzCA,EAAUrm4B,EAAEgjB,MAEpB,IACA,IAAK,IAAIi6M,EAAK,EAAG2nH,EAAUr3T,EAAO0vM,EAAK2nH,EAAQhkV,OAAQq8N,IAAM,CACzD,IAAI9kJ,EAAOysQ,EAAQ3nH,GAOnB,GANIshQ,GAAMpmZ,EAAK5uE,QACX4uE,EAAK5uE,KAAO,UAEhBk33B,EAAal9Z,GAAU,IAAMw2Z,IAAUj33B,KAAKy5D,SAC5C4b,EAAKn1D,MAAQqj3B,EACb9jP,EAAWz/oB,KAAKu93B,mBAAmBlozB,EAAM1oD,GACrC3sB,KAAKw63B,QAAQ183B,QAAU6uB,GAASgx2B,EAAW7/3B,QAAU,EAAG,CACpD29d,GAAMz7d,KAAKqtsB,eACXrtsB,KAAK+63B,cAET,IAAIyI,EAA6B,MAAlBnuzB,EAAKn1D,MAAM,GAAa,EAAsB,MAAlBm1D,EAAKn1D,MAAM,GAAa,EAAI,EACnEu/c,OAAM,EACLz/d,KAAKw53B,WAAyB,SAAZ+J,EAQdvj4B,KAAKw53B,YACV/5Z,EAAMqB,GAAQ68Z,EAAW,GAAI,IAAM3G,KAAW1w1B,SAASrlC,SAASui4B,EAAS7i4B,WAAY,MACjFsV,aAAawpoB,EAAUhgL,EAAIn5b,SAASrlC,SAAS0rB,EAAMhsB,WAAY,MACnEX,KAAKy63B,YAAYplzB,EAAKn1D,MAAQ,KAAKzb,eAAeR,OAAO0oB,EAAO,EAAG8ynB,GACnEz/oB,KAAKwi4B,sBAEsB,IAAtB7E,EAAW7/3B,QAChB6/3B,EAAal9Z,GAAU,IAAMu2Z,IAAWh33B,KAAKy5D,UAClC,GAAGliD,YAAYkooB,GAG1Bk+O,EAAW,GAAG5n3B,WAAWE,aAAawpoB,EAAUk+O,EAAW183B,SAAS0rB,EAAMhsB,WAAY,OAlBtFX,KAAKw93B,cAAcnozB,EAAMguzB,EAAU,GACnCrj4B,KAAKw53B,WAAY,GACjB/5Z,EAAMqB,GAAQ68Z,EAAW,GAAI,IAAM3G,KAAW1w1B,SAASrlC,SAASui4B,EAAS7i4B,WAAY,MACjF4W,YAAYkooB,GAChBz/oB,KAAKy63B,YAAYplzB,EAAKn1D,MAAQ,KAAKzb,eAAe9G,KAAK8hpB,GACvDz/oB,KAAKwi4B,sBAeTxi4B,KAAKyqB,MAAMxmB,OAAO0oB,EAAO,EAAG0oD,GACxBA,EAAK0zD,UACL/oI,KAAKw63B,QAAQv23B,OAAOjE,KAAKw63B,QAAQ183B,OAAS,EAAG,GAEjDkC,KAAKw63B,QAAQv23B,OAAO0oB,EAAO,EAAG8ynB,GAC9B9ynB,IACA3sB,KAAKo+3B,UAAYiF,EAAS/ziB,WAC9B,CACJ,CACA+ziB,EAASh/3B,MAAMd,MAAQ,GACvBvD,KAAKg93B,qBACDh93B,KAAKwnf,SACLxnf,KAAKwwe,sBA1DT,CA4DJ,EAQAqoZ,EAAQt63B,UAAUkl4B,YAAc,SAAUr4zB,GACtC,IACIz+C,EADAg2D,EAAWvX,EAEXuyzB,EAAa,GAAG/83B,MAAMb,KAAK0ge,GAAU,IAAMw2Z,IAAUj33B,KAAKy5D,UAC9D,GAA0B,kBAAdkpB,EACRh2D,EAAQ1rB,SAASmqE,EAAKzqE,WAAY,IAClCX,KAAK0j4B,kBAAkB/22B,EAAOgx2B,QAG9B,GAAIh7yB,GAAYA,EAAS7kF,OAAS,EAC9B,IAAK,IAAIq8N,EAAK,EAAGjiC,EAAK,GAAGt3L,MAAMb,KAAK4iF,GAAWw3I,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CACjE,IAAIslQ,EAAMvnS,EAAGiiC,GACbxtM,EAAQ3sB,KAAKw63B,QAAQ913B,QAAQ+6d,GAC7Bz/d,KAAK0j4B,kBAAkB/22B,EAAOgx2B,GAC9BA,EAAal9Z,GAAU,IAAMw2Z,IAAUj33B,KAAKy5D,QAChD,KAEC,CACGgma,EAAO98Y,GAAYA,EAAS7kF,QAA8B,IAApB6kF,EAAS7kF,OAAgB6kF,EAAS,GAAKvX,EACjFz+C,EAAQgx2B,EAAWj53B,QAAQ+6d,GAC3Bz/d,KAAK0j4B,kBAAkB/22B,EAAOgx2B,EAClC,CAEJ393B,KAAKowC,QACT,EACAyo1B,EAAQt63B,UAAUml4B,kBAAoB,SAAU/22B,EAAOgx2B,GACnD,GAAI393B,KAAKw63B,QAAQv53B,SAAS0rB,EAAMhsB,WAAY,MAAQg93B,EAAW183B,SAAS0rB,EAAMhsB,WAAY,KAAM,CAC5F,IAAIgj4B,EAAS3j4B,KAAKw63B,QAAQ913B,QAAQi53B,EAAW183B,SAAS0rB,EAAMhsB,WAAY,MACxE,GAAIX,KAAKw53B,UAAW,CAChB,IAAIoK,EAAW5j4B,KAAKy63B,YAAYz63B,KAAKyqB,MAAMxpB,SAAS0i4B,EAAOhj4B,WAAY,KAAKuf,MAAQ,KAAKzb,eAAeC,QAAQ1E,KAAKw63B,QAAQv53B,SAAS0i4B,EAAOhj4B,WAAY,MACzJX,KAAKy63B,YAAYz63B,KAAKyqB,MAAMxpB,SAAS0i4B,EAAOhj4B,WAAY,KAAKuf,MAAQ,KAAKzb,eAAeR,OAAOhD,SAAS2i4B,EAASjj4B,WAAY,IAAK,EACvI,CACIX,KAAKwnf,SACLxnf,KAAK6j4B,qBAAqBlG,EAAW183B,SAAS0rB,EAAMhsB,WAAY,MAEpE,IAAImj4B,EAAUnG,EAAW183B,SAAS0rB,EAAMhsB,WAAY,KAAKwU,cAAc,oBAClEsmd,GAAMqoa,IAAaroa,GAAMqoa,EAAQ7ga,cAAc,KAAS6ga,EAAQ7ga,cAAc,GAAGf,aAClF4ha,EAAQ7ga,cAAc,GAAGx/Z,UAE7B48Z,GAAOs9Z,EAAW183B,SAAS0rB,EAAMhsB,WAAY,MAC7CX,KAAKyqB,MAAMxmB,OAAO0/3B,EAAQ,GAC1B3j4B,KAAKw63B,QAAQv23B,OAAO0/3B,EAAQ,EAChC,CACJ,EACA9K,EAAQt63B,UAAUwl4B,eAAiB,SAAUC,EAAcvkP,EAAUpqkB,EAAM1oD,GACvE,IAEIs32B,EAFAhpgB,EAAW5lT,EAAK5uE,KAChBove,EAASmuZ,EAKb,GAH8B,kBAAlBA,IACRC,EAA2C,oBAArBpuZ,EAAO/2d,UAEH,kBAAlBkl3B,GAA+BC,GA0CtC,GAAiB,UAAbhpgB,EAAsB,CACvBwkG,EAAMz/d,KAAKg+B,cAAc,SACzBq3C,EAAKv/D,GACL2pd,EAAI3pd,GAAKu/D,EAAKv/D,GAGd2pd,EAAI3pd,GAAKutc,GAAY,WAEzBo8L,EAASlooB,YAAYkod,GACrBoW,EAAO/2d,SAAS2gd,EACpB,MApDwD,CACpD,IACI9sb,EADAold,OAAa,EAEbzqQ,EAAQ,IAAI1pP,OAAO,uEACvB+uC,EAAiC,kBAAlBqx1B,EAA8BA,EAAazu3B,OAASyu3B,EACnE,IACI,GAA8B,kBAAlBA,GAA+Bvoa,GAAMuoa,EAAa5ivB,SAGzD,GAA8B,kBAAlB4ivB,GAA8B12oB,EAAMxsP,KAAK6xC,GACtD8smB,EAAS9goB,UAAYg0B,OAEpB,GAAIpd,SAAS9H,iBAAiBklB,GAAK70C,OAAQ,CAC5C,IAAI2he,EACAwiB,GADAxiB,EAAMlqc,SAASpgB,cAAcw9B,IACf47C,UAAUh5E,OAC5BkqoB,EAASlooB,YAAYkod,GACrBA,EAAIp7d,MAAMqmB,QAAU,GACf+wc,GAAMwmB,IACPjif,KAAKqjf,OAAO1lf,KAAKg1C,EAEzB,MAEIold,EAAauwJ,GAAiB31mB,QAf9B8smB,EAASlooB,YAAYys3B,EAiB7B,CACA,MAAO9m4B,KACH66f,EAAauwJ,GAAiB31mB,EAClC,CACA,IAAIsuvB,OAAY,EAChB,IAAKxlU,GAAMs8B,GAEPkpS,EAAYlpS,EAAW,CAAC,EAAG/3f,KAAM,WADTA,KAAKy5D,QAAQ3jD,GAAK6W,EAAQ,YACc3sB,KAAK4te,sBAAkB3ga,OAAWA,EAAWjtE,KAAK+8F,OAEjH0+X,GAAMwlU,IAAcA,EAAUnjyB,OAAS,GACxC,GAAG8C,MAAMb,KAAKkhyB,GAAWljyB,SAAQ,SAAU0he,GAClChE,GAAMgE,EAAIr+U,WACXq+U,EAAIp7d,MAAMqmB,QAAU,IAExB+0nB,EAASlooB,YAAYkod,EACzB,GAER,CAYAz/d,KAAK8G,IAAI24oB,EAAU63O,KACnB,IAAI3p2B,EAAa8xnB,EAAS34T,kBACrB20I,GAAM9tc,KACPA,EAAW/kB,aAAa,WAAY6yd,GAAM9tc,EAAWvd,aAAa,aAAe,KAAOpQ,KAAKkk4B,gBAAgBv22B,IAC7GA,EAAW/kB,aAAa,gBAAiB6yd,GAAM9tc,EAAWvd,aAAa,aAAe,KAAOpQ,KAAKkk4B,gBAAgBv22B,KAEtH3tB,KAAKw63B,QAAQ783B,KAAK8hpB,EACtB,EACAo5O,EAAQt63B,UAAU4l4B,gBAAkB,SAAU9uzB,EAAMoqkB,GAChD,IAAIj1oB,EAAMxK,KAAKg+B,cAAc,SAAU,CAAE9xB,UAl1D/B,eAm1DV1B,EAAI5B,aAAa,OAAQ,UACzB,IACIw0oB,EACAgnP,EAFAC,EAAUhvzB,EAAKhnE,KAGfgnE,EAAKv/D,GACLtL,EAAIsL,GAAKu/D,EAAKv/D,GAGdtL,EAAIsL,GAAKutc,GAAY,aAEzB,IAAIihb,EAAStk4B,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAW,oBACjDm43B,GACAC,EAAO3l3B,UAAY3e,KAAK6rf,oBAAsB/H,GAAmBE,SAASqgZ,GAAWA,EACrF753B,EAAI+M,YAAY+s3B,GAChB953B,EAAIrG,UAAU2C,IAAI,eAGlB9G,KAAK8G,IAAI24oB,EAAU,iBAEnBpqkB,EAAKghuB,YAAchhuB,EAAKkvzB,cACnBlvzB,EAAKghuB,YAAchhuB,EAAKkvzB,YAAelvzB,EAAKghuB,YAC7Cj5J,EAAU/nkB,EAAKghuB,WAAa,WAC5B+tF,EAAU,SAGVhnP,EAAU/nkB,EAAKkvzB,WAAa,WAC5BH,EAAU,UAGlB,IAAIhgN,EAAS,IAAIr+S,GAAO,CAAEq3Q,QAASA,EAASigC,aAAc+mN,IAM1D,OALAhgN,EAAOpmpB,cAAgBh+B,KAAKg+B,cAC5BompB,EAAOtlqB,SAAStU,GACZ6qE,EAAK9xE,OACL6goB,GAAS55nB,EAAK,CAAE,MAASq5c,GAAWxuY,EAAK9xE,SAEtCiH,CACX,EACAqu3B,EAAQt63B,UAAUg/3B,mBAAqB,SAAUlozB,EAAM1oD,GACnD,IAAIniB,EACAi1oB,EAAWz/oB,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW+q3B,MAClDuN,EAAUxk4B,KAAKg+B,cAAc,MAAO,CACpCrf,UAAW3e,KAAK6rf,sBAAwBpwB,GAAMpmZ,EAAKqqkB,aAC/C57J,GAAmBE,SAAS3ua,EAAKqqkB,aAAerqkB,EAAKqqkB,cAc7D,GAZK1/oB,KAAKw63B,UACNx63B,KAAKw63B,QAAU,IAEfnlzB,EAAK0ujB,gBACL/joB,KAAKgj4B,QAAQ3tzB,EAAK0ujB,eAAgB0b,GAElCpqkB,EAAKqqkB,aACLD,EAAS72oB,aAAa,QAAS473B,EAAQpz3B,aAEvCikE,EAAKxmE,WACL4woB,EAASvzoB,UAAYuzoB,EAASvzoB,UAAY,IAAMmpE,EAAKxmE,UAErDwmE,EAAK0zD,SACL/oI,KAAK+j4B,eAAe1uzB,EAAK0zD,SAAU02gB,EAAUpqkB,EAAM1oD,QAGnD,OAAQ0oD,EAAK5uE,MACT,IAAK,UACD+D,EAAMxK,KAAKmk4B,gBAAgB9uzB,EAAMoqkB,IAC7B72oB,aAAa,WAAY6yd,GAAMpmZ,EAAK8xQ,UAAY,KAAO9xQ,EAAK8xQ,SAASxmV,YACzE6J,EAAI5B,aAAa,gBAAiB6yd,GAAMpmZ,EAAK8xQ,UAAY,KAAO9xQ,EAAK8xQ,SAASxmV,YAC9E6J,EAAI5B,aAAa,aAAeysE,EAAKhnE,MAAQgnE,EAAKqqkB,aAClDl1oB,EAAI5B,aAAa,gBAAiB,SAClC62oB,EAASlooB,YAAY/M,GACrBi1oB,EAASpyoB,iBAAiB,QAASrN,KAAKyk4B,UAAUl33B,KAAKvN,OACvD,MACJ,IAAK,YACDA,KAAK8G,IAAI24oB,EAAUy3O,KAI/B,GAAI7hzB,EAAKqvzB,WAAY,CACjB,IAAIC,EAAOtvzB,EAAKqvzB,WACH,YAATC,GACA3k4B,KAAK8G,IAAI24oB,EAAU83O,KACnBv33B,KAAK8G,IAAI24oB,EAAU,iBAEL,aAATklP,GACL3k4B,KAAK8G,IAAI24oB,EAAU+3O,IAE3B,CACA,GAAInizB,EAAKojJ,SAAU,CACf,IAAIA,EAAWpjJ,EAAKojJ,SACH,SAAbA,EACAz4N,KAAK8G,IAAI24oB,EAAUg4O,KAED,SAAbh/pB,IACAgnb,EAASt7oB,UAAUC,SAAS8y3B,MAC7Bl33B,KAAK8G,IAAI24oB,EAAUi4O,KAG/B,CAWA,MAVsB,SAAlBrizB,EAAKojJ,UAAuBpjJ,EAAKoozB,oBAAsBh+O,EAASt7oB,UAAUC,SAAS8y3B,OACnFl33B,KAAK8G,IAAI24oB,EAAU24O,KACnBp43B,KAAK653B,iBAELxkzB,EAAK2/M,UACLh1R,KAAK8G,IAAI24oB,EAAU6xO,MAEF,IAAjBj8yB,EAAK9iB,SACLvyD,KAAK8G,IAAI24oB,EAAU44O,KAEhB54O,CACX,EACAo5O,EAAQt63B,UAAU2l4B,gBAAkB,SAAUzka,GAC1C,OAAOhE,GAAMgE,EAAIrvd,aAAa,kBAAoB,KAAOqvd,EAAIrvd,aAAa,gBAC9E,EACAyo3B,EAAQt63B,UAAUkm4B,UAAY,SAAUvn4B,GACpC8C,KAAKm73B,gBAAgBj+3B,EAAEkjS,cAC3B,EACAy4lB,EAAQt63B,UAAU483B,gBAAkB,SAAU17Z,GAC1Cz/d,KAAKi83B,gBAAgBx8Z,EAAI34I,mBACzB9mV,KAAK8lrB,UAAUl3a,OACnB,EACAiqnB,EAAQt63B,UAAU093B,gBAAkB,SAAU/5O,GAC1C,IAAI0iP,EAAc5k4B,KAAKy5D,QAAQtkD,cAAc,IAAM8h3B,IAAW,SAAW3F,IAAc,WAAa4F,IAAgB,WAAamB,IAAa,MAS9I,GARK58Z,GAAMz7d,KAAK8lrB,aACZ9lrB,KAAK8lrB,UAAUl9qB,aAAa,WAAY5I,KAAKkk4B,gBAAgBlk4B,KAAK8lrB,YAC9D8+M,GACAA,EAAYrx0B,gBAAgB,YAEhCqx0B,EAAc5k4B,KAAK8lrB,WAEvB9lrB,KAAK8lrB,UAAY5jC,EAC4B,OAAzClipB,KAAKkk4B,gBAAgBlk4B,KAAK8lrB,WAC1B,GAAIrqN,GAAMz7d,KAAKq53B,WAAan3O,EAAOh+oB,cAAcC,UAAUC,SAASkz3B,MAC3D77Z,GAAMz7d,KAAKy5D,QAAQtkD,cAAc,gBAAkBnV,KAAKy5D,QAAQtkD,cAAc,cAAchR,UAAUC,SAAS,iBAChHpE,KAAKi63B,eAAe,KACkB,OAAtCj63B,KAAKkk4B,gBAAgBU,GAAwBA,EAAYh83B,aAAa,WAAY,KAC9Eg83B,EAAYh83B,aAAa,WAAY5I,KAAKkk4B,gBAAgBU,KAG9D5k4B,KAAKi63B,eAAe,MAExB/3O,EAAO3ulB,gBAAgB,gBAEtB,CACD,IAAI4zR,EAAWlmV,SAASjB,KAAKkk4B,gBAAgBlk4B,KAAK8lrB,YAAc,EAChE9lrB,KAAK8lrB,UAAUl9qB,aAAa,WAAYu+U,EAASxmV,WACrD,CAER,EACAk43B,EAAQt63B,UAAUgye,eAAiB,WAC/B,OAAOvwe,KAAK6we,aAAa,GAC7B,EAOAgoZ,EAAQt63B,UAAUyke,cAAgB,WAC9B,MAAO,SACX,EACA61Z,EAAQt63B,UAAU+k4B,cAAgB,SAAU17Z,GACxC5ne,KAAKyqB,MAAQzqB,KAAKy53B,cACdz53B,KAAKwnf,SAAWxnf,KAAK+iQ,YACrB/iQ,KAAKywe,gBAETzwe,KAAK+63B,cACL/63B,KAAKo53B,eACLp53B,KAAKyqB,MAAQm9c,EACb5ne,KAAKy53B,aAAez53B,KAAKyqB,MACzBzqB,KAAKyspB,cACLzspB,KAAKg93B,qBACDh93B,KAAKwnf,SACLxnf,KAAKwwe,sBAEb,EACAqoZ,EAAQt63B,UAAU6xC,OAAS,WACvB,IAAIqvb,EAAMz/d,KAAKy5D,QACfz5D,KAAKw/3B,UAAW,EACZx/3B,KAAKw53B,WACLx53B,KAAKi93B,kBAELj93B,KAAKu53B,QAAgC,UAAtBv53B,KAAKkhW,cACpBlhW,KAAKu53B,OAAOh31B,OAEhB,IAAIspM,EAAgB7rO,KAAK6rO,cAAc4zP,EAAKA,EAAIpmc,uBAAuB291B,KAAW,IAClF,IAAKnrpB,EAAe,CAChB7rO,KAAKq63B,gBACL,IAAIwK,EAAcpla,EAAItqd,cAAc,IAAM6h3B,KACrCv7Z,GAAMopa,KACP7k4B,KAAK6G,OAAOg+3B,EAAatM,KACrBv43B,KAAKw53B,WACLx53B,KAAK8G,IAAI+93B,EAAa/M,KAGlC,CACIjspB,GAAiB7rO,KAAKqtsB,cAAiBrtsB,KAAKo+3B,YAAc3+Z,EAAInwI,eAG9DtvV,KAAKo+3B,UAAY3+Z,EAAInwI,aAAezjH,IACpC7rO,KAAKg93B,qBAELh93B,KAAKu53B,SACqB,aAAtBv53B,KAAKkhW,eACLlhW,KAAKu53B,OAAOh23B,MAAQvD,KAAK283B,qBAAqB383B,KAAKy5D,UAEnDz5D,KAAKw53B,WACLx53B,KAAKq+3B,oBAETr+3B,KAAKg73B,aAAah73B,KAAKu53B,OAAO9/zB,SAAS,GACnCz5D,KAAKw53B,WACLx53B,KAAKwi4B,sBAGTxi4B,KAAKy5D,QAAQtkD,cAAc,IAAM4i3B,OACjC/33B,KAAK2y3B,WAAa3y3B,KAAKy5D,QAAQtkD,cAAc,IAAM4i3B,KAAgBzoiB,aAEvEtvV,KAAKo+3B,UAAY3+Z,EAAInwI,YACrBtvV,KAAKw/3B,UAAW,EAChBx/3B,KAAKkzO,YACT,EACA2lpB,EAAQt63B,UAAUy63B,kBAAoB,WAClC,IAAIp4qB,EAAQ5gN,KACZm4B,YAAW,WACPyoL,EAAMxwK,QACV,GAAG,IACP,EACAyo1B,EAAQt63B,UAAU6k4B,aAAe,WAC7B,IAAIhH,EAAMp83B,KAAKy5D,QAAQtkD,cAAc,IAAMwj3B,KACjB,aAAtB343B,KAAKkhW,cAA+Bk7hB,IACpCp83B,KAAK453B,eAAiBwC,EAAIj43B,UAAUC,SAASiz3B,KAErD,EACAwB,EAAQt63B,UAAUum4B,sBAAwB,SAAUrla,EAAKjmc,EAAU0rR,EAAW6/kB,EAAUpH,GAChFz4kB,IACA6/kB,EAAWpH,EAAWj53B,QAAQ+6d,IAGlC,IADA,IAAIykX,EAAUy5C,IAAaoH,GACpB7gD,GAAS,CAEZ,IADclk1B,KAAKm83B,YAAYj4C,GACjB,CACV,IAAIg2C,EAAeh2C,EAAQp9f,kBAAkB12U,aAAa,iBACtDopB,GAA6B,OAAjB0g2B,EACZh2C,EAAQp9f,kBAAkBl+U,aAAa,WAAY,KAE9Csx3B,IAAiBh2C,EAAQp9f,kBAAkB12U,aAAa,aAC7D8z0B,EAAQp9f,kBAAkBl+U,aAAa,WAAYsx3B,GAEvD,KACJ,CACAh2C,EAAUy5C,IAAaoH,EAC3B,CACJ,EACAlM,EAAQt63B,UAAUsl4B,qBAAuB,SAAUmB,GAC/C,GAAIhl4B,KAAKivrB,oBAAsBjvrB,KAAKivrB,mBAAkC,SAElE,IADA,IAAIuhB,EAAsBxwsB,KAAKivrB,mBACtBtiqB,EAAQ,EAAGA,EAAQ6jrB,EAAmC,SAAE1ysB,OAAQ6uB,IAAS,CAG9E,IAAK8uc,GADDwpa,EAAcnka,GADG0vO,EAAmC,SAAEvvsB,SAAS0rB,EAAMhsB,WAAY,KAAK+vsB,UAAU,GAC1D,IAAMumL,OACrBgO,IAAgBD,EAAa,CACpDhl4B,KAAKywe,cAAc,CAAC,YAAa,CAAC+/N,EAAmC,SAAEvvsB,SAAS0rB,EAAMhsB,WAAY,OAClG,KACJ,CACJ,MAEC,GAAIX,KAAK65f,SAAW75f,KAAK65f,QAAQ/7f,OAAS,EAC3C,KAAI+7f,EAAU75f,KAAK65f,QACnB,IAASlte,EAAQ,EAAGA,EAAQkte,EAAQ/7f,OAAQ6uB,IAAS,CACjD,IACIs42B,EACJ,IAAKxpa,GADDwpa,EAAcnka,GADD+4B,EAAQ54f,SAAS0rB,EAAMhsB,WAAY,KACf47R,cAAe,IAAM06lB,OAC/BgO,IAAgBD,EAAa,CACpDhl4B,KAAKywe,cAAc,CAAC,YAAa9jd,GACjC,KACJ,CACJ,CAR0B,CAUlC,EASAks2B,EAAQt63B,UAAUoke,kBAAoB,SAAUiF,EAASC,GACrD,IAAIq9Z,EAAOll4B,KAAKy5D,QACNyr0B,EAAK51iB,YACftvV,KAAKoj4B,eACL,IAAK,IAAIjpqB,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAE9D,OADWjiC,EAAGiiC,IAEV,IAAK,QACD,GAAMytQ,EAAQn9c,iBAAiBvqB,OAAS2ne,EAAQp9c,iBAAiBvqB,MAiC7DF,KAAKsj4B,cAAc17Z,EAAQn9c,YA/B3B,IADA,IAAI062B,EAAc/n4B,OAAOC,KAAKuqe,EAAQn9c,OAC7BttB,EAAI,EAAGA,EAAIgo4B,EAAYrn4B,OAAQX,IAAK,CACzC,IAAIwvB,EAAQ1rB,SAAS7D,OAAOC,KAAKuqe,EAAQn9c,OAAOxpB,SAAS9D,EAAEwD,WAAY,KAAM,IACzEq5F,EAAW58F,OAAOC,KAAKuqe,EAAQn9c,MAAMxpB,SAAS0rB,EAAMhsB,WAAY,MAAM,GACtE0mpB,EAAcjqpB,OAAOwqe,EAAQn9c,MAAMxpB,SAAS0rB,EAAMhsB,WAAY,MAAM,GAAKq5F,GAC7E,GAAIh6F,KAAKw53B,WAA0B,UAAbx/xB,EAAsB,CACxCh6F,KAAKsue,UACLtue,KAAKo/d,QAAQ,WACb,KACJ,CACA,IAAIgma,EAA6B,sBAAbpryB,IAAqCqtjB,EACrDg+O,EAA4B,aAAbrryB,GAAkD,IAAvBh6F,KAAK653B,eAC9CuL,GAAmBpl4B,KAAKyqB,MAAMxpB,SAAS0rB,EAAMhsB,WAAY,KAAK883B,mBAAsB4H,MACnFrl4B,KAAK653B,cAEPp+Z,GAAMz7d,KAAKqtsB,eACXrtsB,KAAK+63B,cAET,IAAIuK,EAAU,GAAG1k4B,MAAMb,KAAK0ge,GAAU,IAAMu2Z,IAAY,KAAOC,IAAUiO,IACrEll4B,KAAKwnf,SAAWxnf,KAAKyqB,MAAMxpB,SAAS0rB,EAAMhsB,WAAY,KAAKooI,UAC3D/oI,KAAK6j4B,qBAAqByB,EAAQrk4B,SAAS0rB,EAAMhsB,WAAY,MAEjE0/d,GAAOila,EAAQrk4B,SAAS0rB,EAAMhsB,WAAY,MAC1CX,KAAKw63B,QAAQv23B,OAAO0oB,EAAO,GAC3B3sB,KAAKmj4B,SAAS,CAACnj4B,KAAKyqB,MAAMxpB,SAAS0rB,EAAMhsB,WAAY,MAAOgsB,GAC5D3sB,KAAKyqB,MAAMxmB,OAAO0oB,EAAO,GACrB3sB,KAAKyqB,MAAMxpB,SAAS0rB,EAAMhsB,WAAY,KAAKooI,UAC3C/oI,KAAKw63B,QAAQv23B,OAAOjE,KAAKyqB,MAAM3sB,OAAQ,EAE/C,CAKJ,MACJ,IAAK,QACDsmoB,GAAS8gQ,EAAM,CAAE,MAASrhb,GAAW+jB,EAAQrke,SAC7CvD,KAAK20uB,kBACL,MACJ,IAAK,SACDvwG,GAASpkoB,KAAKy5D,QAAS,CAAE,OAAUoqZ,GAAW+jB,EAAQpke,UACtD,MACJ,IAAK,eACDxD,KAAK+63B,cACL/63B,KAAKg93B,qBACDh93B,KAAK+te,WACL/te,KAAK8G,IAAIo+3B,EAAM7T,KAEnBrx3B,KAAK20uB,kBACL,MACJ,IAAK,YACG/sQ,EAAQmG,UACR/te,KAAK8G,IAAIo+3B,EAAM7T,KAGfrx3B,KAAK6G,OAAOq+3B,EAAM7T,KAEjB51Z,GAAMz7d,KAAKqtsB,gBACRzlO,EAAQmG,UACR/te,KAAK8G,IAAI9G,KAAKqtsB,aAAa5zoB,QAAS43zB,KAGpCrx3B,KAAK6G,OAAO7G,KAAKqtsB,aAAa5zoB,QAAS43zB,MAG1C51Z,GAAMz7d,KAAKu53B,UACR3xZ,EAAQmG,UACR/te,KAAK8G,IAAI9G,KAAKu53B,OAAO9/zB,QAAS43zB,KAG9Brx3B,KAAK6G,OAAO7G,KAAKu53B,OAAO9/zB,QAAS43zB,MAGrCrx3B,KAAKw53B,WACLx53B,KAAKi93B,kBAET,MACJ,IAAK,aACGj93B,KAAKqtsB,eACLrtsB,KAAKqtsB,aAAaslL,WAAa3y3B,KAAK2y3B,YAExC,MACJ,IAAK,kBACG3y3B,KAAKu53B,SACLv53B,KAAKu53B,OAAOn9P,UAAY,CAAEntmB,EAAGjvB,KAAK253B,gBAAkB,OAAS,SAEjE,MACJ,IAAK,WACG9xZ,EAAQh5d,UACR6jD,GAAY,CAAC1yD,KAAKy5D,SAAUoua,EAAQh5d,SAAS7N,MAAM,MAEnD4me,EAAQ/4d,UACR4jD,GAAS,CAACzyD,KAAKy5D,SAAUmua,EAAQ/4d,SAAS7N,MAAM,MAEpD,MACJ,IAAK,gBACDhB,KAAKm63B,sBACDvyZ,EAAQ0kQ,eACRtsuB,KAAK853B,oBAIrB,CACJ,EAQAjB,EAAQt63B,UAAUgn4B,SAAW,SAAU542B,EAAO7tB,GAC1C,IAEI2ge,EAFAv6K,EAAgC,kBAAXv4R,EACrBo42B,EAAWp42B,EAEf,GAAKu4R,IAAau2K,GAAMspa,GAAxB,CAGA,IAAIpH,EAAa,GAAG/83B,MAAMb,KAAK0ge,GAAU,IAAMw2Z,IAAUj33B,KAAKy5D,UAC9D,GAAIyrP,EACAu6K,EAAM9yc,OAEL,GAAI3sB,KAAKw63B,QAAQv53B,SAAS8j4B,EAASpk4B,WAAY,KAAM,CAEtD8+d,EADmB,GAAG7+d,MAAMb,KAAK0ge,GAAU,IAAMw2Z,IAAUj33B,KAAKy5D,UAC7Cx4D,SAAS8j4B,EAASpk4B,WAAY,IACrD,CACI8+d,IACI3ge,GACA2ge,EAAIt7d,UAAU2C,IAAIux3B,KACb54Z,EAAIt7d,UAAUC,SAAS8y3B,OACpBz7Z,GAAMgE,EAAI34I,kBAAkB12U,aAAa,cACU,OAAnDqvd,EAAI34I,kBAAkB12U,aAAa,cACnCpQ,KAAK8k4B,sBAAsBrla,EAAK3ge,EAAOomT,EAAW6/kB,EAAUpH,KAKpEl+Z,EAAIt7d,UAAU0C,OAAOwx3B,KAChB54Z,EAAIt7d,UAAUC,SAAS8y3B,MACxBl33B,KAAK8k4B,sBAAsBrla,EAAK3ge,EAAOomT,EAAW6/kB,EAAUpH,IAGpE393B,KAAK20uB,kBAzBT,CA2BJ,EACAtnb,IAAW,CACPi4K,GAAW,GAAI/rD,MAChBs/c,EAAQt63B,UAAW,aAAS,GAC/B8uT,IAAW,CACP63K,GAAS,SACV2zZ,EAAQt63B,UAAW,aAAS,GAC/B8uT,IAAW,CACP63K,GAAS,SACV2zZ,EAAQt63B,UAAW,cAAU,GAChC8uT,IAAW,CACP63K,GAAS,KACV2zZ,EAAQt63B,UAAW,gBAAY,GAClC8uT,IAAW,CACP63K,GAAS,eACV2zZ,EAAQt63B,UAAW,oBAAgB,GACtC8uT,IAAW,CACP63K,MACD2zZ,EAAQt63B,UAAW,kBAAc,GACpC8uT,IAAW,CACP63K,IAAS,IACV2zZ,EAAQt63B,UAAW,uBAAmB,GACzC8uT,IAAW,CACP63K,IAAS,IACV2zZ,EAAQt63B,UAAW,2BAAuB,GAC7C8uT,IAAW,CACP63K,IAAS,IACV2zZ,EAAQt63B,UAAW,qBAAiB,GACvC8uT,IAAW,CACPv0P,MACD+/zB,EAAQt63B,UAAW,eAAW,GACjC8uT,IAAW,CACPv0P,MACD+/zB,EAAQt63B,UAAW,eAAW,GACjC8uT,IAAW,CACPv0P,MACD+/zB,EAAQt63B,UAAW,iBAAa,GACnC8uT,IAAW,CACPv0P,MACD+/zB,EAAQt63B,UAAW,oBAAgB,GACtCs63B,EAAUxrkB,IAAW,CACjBq4K,IACDmzZ,EAEP,CA7sE6B,CA6sE3Bn3mB,IC91EExgC,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAQI2m4B,IAAU,QACVC,IAAa,eAEbC,IAAc,YACdC,IAAW,WAEX1O,IAAW,SACXK,IAAe,aACfjG,IAAU,QACVuU,IAAa,WACbtU,IAAc,YACd+G,IAAa,WACbwN,IAAY,YACZC,IAAY,UACZC,IAAW,SACXC,IAAe,aACfC,IAAiB,eACjBC,IAAiB,eACjBC,IAAW,aACXC,IAAgB,cAChBC,IAAW,aACXC,IAAgB,cAChBC,IAAe,aACfC,IAAe,kBACfC,IAAc,iBACdC,IAAa,gBACbC,IAAe,kBAIfC,IAAe,aAEf9U,IAAc,YAGd+U,IAAW,iBACX9P,IAAe,aACf+P,IAAY,kBACZC,IAAa,mBACbC,IAAc,sBACdC,IAAW,cACXC,IAAgB,WAChBC,IAA0B,wBAI1BC,IAAmC,SAAU5irB,GAE7C,SAAS4irB,IACL,OAAkB,OAAX5irB,GAAmBA,EAAO5mN,MAAMoC,KAAMnC,YAAcmC,IAC/D,CAUA,OAbAkhP,IAAUkmpB,EAAmB5irB,GAI7B6oG,IAAW,CACP63K,GAAS,gBACVkia,EAAkB7o4B,UAAW,cAAU,GAC1C8uT,IAAW,CACP63K,GAAS,MACVkia,EAAkB7o4B,UAAW,gBAAY,GAC5C8uT,IAAW,CACP63K,GAAS,SACVkia,EAAkB7o4B,UAAW,cAAU,GACnC6o4B,CACX,CAfuC,CAerCl9Z,IAKEm9Z,IAAsC,SAAU7irB,GAEhD,SAAS6irB,IACL,OAAkB,OAAX7irB,GAAmBA,EAAO5mN,MAAMoC,KAAMnC,YAAcmC,IAC/D,CAOA,OAVAkhP,IAAUmmpB,EAAsB7irB,GAIhC6oG,IAAW,CACPg4K,GAAQ,CAAEukM,OAAQ,cAAej2mB,SAAU,IAAKvuD,OAAQ,QAAUgi4B,MACnEC,EAAqB9o4B,UAAW,gBAAY,GAC/C8uT,IAAW,CACPg4K,GAAQ,CAAEukM,OAAQ,eAAgBj2mB,SAAU,IAAKvuD,OAAQ,QAAUgi4B,MACpEC,EAAqB9o4B,UAAW,YAAQ,GACpC8o4B,CACX,CAZ0C,CAYxCn9Z,IAKE/uG,IAAwB,SAAU32K,GAElC,SAAS22K,IACL,OAAkB,OAAX32K,GAAmBA,EAAO5mN,MAAMoC,KAAMnC,YAAcmC,IAC/D,CAUA,OAbAkhP,IAAUi6I,EAAQ32K,GAIlB6oG,IAAW,CACP63K,GAAS,KACV/pG,EAAO58X,UAAW,YAAQ,GAC7B8uT,IAAW,CACP63K,GAAS,KACV/pG,EAAO58X,UAAW,eAAW,GAChC8uT,IAAW,CACP63K,GAAS,SACV/pG,EAAO58X,UAAW,oBAAgB,GAC9B48X,CACX,CAf4B,CAe1B+uG,IAKEo9Z,IAAyB,SAAU9irB,GAEnC,SAAS8irB,IACL,OAAkB,OAAX9irB,GAAmBA,EAAO5mN,MAAMoC,KAAMnC,YAAcmC,IAC/D,CAyBA,OA5BAkhP,IAAUompB,EAAS9irB,GAInB6oG,IAAW,CACPg4K,GAAQ,CAAC,EAAGlqG,MACbmsgB,EAAQ/o4B,UAAW,cAAU,GAChC8uT,IAAW,CACP63K,GAAS,OACVoia,EAAQ/o4B,UAAW,sBAAkB,GACxC8uT,IAAW,CACP63K,GAAS,KACVoia,EAAQ/o4B,UAAW,eAAW,GACjC8uT,IAAW,CACP63K,GAAS,KACVoia,EAAQ/o4B,UAAW,gBAAY,GAClC8uT,IAAW,CACP63K,IAAS,IACVoia,EAAQ/o4B,UAAW,gBAAY,GAClC8uT,IAAW,CACP63K,IAAS,IACVoia,EAAQ/o4B,UAAW,eAAW,GACjC8uT,IAAW,CACP63K,MACDoia,EAAQ/o4B,UAAW,UAAM,GAC5B8uT,IAAW,CACP63K,IAAU,IACXoia,EAAQ/o4B,UAAW,gBAAY,GAC3B+o4B,CACX,CA9B6B,CA8B3Bp9Z,IAaEq9Z,IAAqB,SAAU/irB,GAQ/B,SAAS+irB,EAAIvo3B,EAASy6C,GAClB,IAAImnJ,EAAQ4D,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,KA0BnD,OAzBA4gN,EAAMpjM,KAAO,CAAC,EACdojM,EAAMr+K,KAAO,CAAC,EACdq+K,EAAM51L,UAAY,EAClB41L,EAAMtgM,MAAQ,QACdsgM,EAAMqzc,cAAe,EACrBrzc,EAAMqc,UAAY,EAClBrc,EAAMirgB,OAAQ,EACdjrgB,EAAM4mrB,aAAc,EACpB5mrB,EAAM6mrB,eAAiB,GACvB7mrB,EAAMk4qB,cAAgBl4qB,EAAM8mrB,uBAAuBn63B,KAAKqzM,GAIxDA,EAAM85R,WAAa,CACfnhK,IAAK,MACLO,KAAM,OACN7rT,IAAK,MACLsgJ,MAAO,QACP77F,MAAO,QACP7L,OAAQ,SACR0uxB,SAAU,YACVC,UAAW,aACXF,OAAQ,UACRD,SAAU,aAEPz0oB,CACX,CAgsEA,OAnuEAsgC,IAAUqmpB,EAAK/irB,GAyCf+irB,EAAIhp4B,UAAUklE,QAAU,WAWpB,IAVIzjE,KAAKwnf,SAAWxnf,KAAK+iQ,YACrB/iQ,KAAKywe,gBAEJhV,GAAMz7d,KAAK2n4B,SACZ3n4B,KAAK2n4B,MAAMlk0B,UACXzjE,KAAK2n4B,MAAQ,MAEjB3n4B,KAAKu9qB,eACLv9qB,KAAKy5D,QAAQlG,gBAAgB,iBAC7BvzD,KAAK4n4B,qBACA5n4B,KAAK+hsB,WAKL,CACD,IAAI8lM,EAASh33B,GAAO,aAAyB603B,IAAa1l4B,KAAKy5D,SAC/Dz5D,KAAKy5D,QAAQt1D,UAAU0C,OAAOyw3B,KACzB77Z,GAAMosa,KACPA,EAAOlp3B,UAAY3e,KAAK+gf,IAEhC,MAVI,KAAO/gf,KAAKy5D,QAAQqtR,mBAChBjgV,GAAO7G,KAAKy5D,QAAQqtR,mBAyB5B,GAfI9mV,KAAK8n4B,SACL9n4B,KAAK8n4B,OAAS,MAElB9n4B,KAAK+n4B,OAAS,KACd/n4B,KAAK6n4B,OAAS,KACd7n4B,KAAKgo4B,QAAU,KACfho4B,KAAKio4B,OAAS,KACdjo4B,KAAKko4B,MAAQ,KACblo4B,KAAKmo4B,SAAW,KAChBno4B,KAAK663B,OAAS,KACd763B,KAAKoo4B,QAAU,KACfpo4B,KAAKwkU,QAAU,KACfxkU,KAAKqo4B,SAAW,KAChBro4B,KAAKynT,aAAe,KACpBznT,KAAKso4B,cAAgB,GACjBto4B,KAAKyn4B,gBAAkBzn4B,KAAKyn4B,eAAe3p4B,OAAS,EAAG,CACvD,IAAK,IAAIX,EAAI,EAAGA,EAAI6C,KAAKyn4B,eAAe3p4B,OAAQX,IAC5C6C,KAAKyn4B,eAAetq4B,GAAGsmE,UACvBzjE,KAAKyn4B,eAAetq4B,GAAK,KAE7B6C,KAAKyn4B,eAAiB,EAC1B,CACAjjrB,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,MAC9BA,KAAKo/d,QAAQ,YACjB,EAMAmoa,EAAIhp4B,UAAU+ve,QAAU,WAChBtue,KAAKwnf,SACLxnf,KAAKywe,gBAETjsR,EAAOjmN,UAAU+ve,QAAQvue,KAAKC,MAC1BA,KAAKwnf,SACLxnf,KAAKwwe,sBAEb,EAOA+2Z,EAAIhp4B,UAAUgwe,UAAY,WACtB,IAAIp/a,EAAS2xa,GAAQ9ge,KAAKy5D,QAAS,IAAMis0B,KACzC1l4B,KAAKuo4B,UAAY,EACjBvo4B,KAAKwo4B,UAAW,EAChBxo4B,KAAKyo4B,SAAU,EACfzo4B,KAAK0hrB,YAAa,EAClB1hrB,KAAK0o4B,UAAW,EAChB1o4B,KAAK2o4B,eAAiB,GACtB3o4B,KAAKgl4B,YAAc,GACfhl4B,KAAKwimB,mBACLximB,KAAK60e,SAAYpZ,GAAMz7d,KAAK60e,UAA4B,IAAM70e,KAAKy5D,QAAQ3jD,GAAnB,KAAqC2v3B,IAArDzl4B,KAAK60e,UAE5CpZ,GAAMtsa,KACPA,EAAOjrD,cAAcC,UAAU2C,IAAI6+3B,KACnC3l4B,KAAKwo4B,UAAW,GAEpB,IAAI3n4B,EAAOq8d,GAAQ5hZ,KAAKz6E,KACpB47F,EAAgB,SAAT57F,EAAmB,OAAmB,SAATA,EAAmB,SAAqB,WAATA,EAAqB,WAAa,GACzGujoB,GAASpkoB,KAAKy5D,QAAS,CAAE,MAASoqZ,GAAW7jd,KAAKuD,OAAQ,OAAUsgd,GAAW7jd,KAAKwD,UACpFxD,KAAK0mf,YAAY1mf,KAAKy5D,QAASz5D,KAAK6O,UAAU,GAC9CwoD,GAAWr3D,KAAKy5D,QAAS,CAAE,gBAAiB,UAC5Cz5D,KAAK0mf,YAAY1mf,KAAKy5D,QAASgjC,GAAK,GACpCz8F,KAAK4o4B,0BACT,EAOArB,EAAIhp4B,UAAUupE,OAAS,WACnB,IAAI84I,EAAQ5gN,KACZA,KAAK8n4B,OAAS9n4B,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAW453B,IAAY,IAAMG,IAAgBvz1B,MAAO,CAAEpyB,MAAOtgB,KAAKsgB,SAC7GtgB,KAAKo8lB,MAAQp8lB,KAAKy5D,QAAQ3jD,GAAGhY,OAAS,EAAK,IAAMkC,KAAKy5D,QAAQ3jD,GAAM0se,KACpExif,KAAK6o4B,kBACL7o4B,KAAK85e,aACL95e,KAAK0hrB,YAAa,EACd1hrB,KAAKwnf,SAAWxnf,KAAK65f,SAAW75f,KAAK65f,QAAQ/7f,OAAS,GACtDkC,KAAKwwe,sBAAqB,WACjB/U,GAAM76Q,EAAM+mrB,QACb/mrB,EAAM+mrB,MAAMhzJ,kBAEhB/zhB,EAAMkorB,qBACV,GAER,EACAvB,EAAIhp4B,UAAUsq4B,gBAAkB,WAC5B,IAAIppa,EAAMz/d,KAAKy5D,QAMf,GALAz5D,KAAKyqB,MAAM1sB,SAAQ,SAAUs3E,EAAM1oD,GAC3B8uc,GAAMpmZ,EAAKv/D,MAAQ2ld,GAAMpmZ,EAAK4sZ,gBAC9B5sZ,EAAK4sZ,cAAc,CAAEnsd,GAAIox3B,IAAgBv62B,EAAMhsB,aAAc,EAErE,IACIX,KAAKyqB,MAAM3sB,OAAS,GAA6B,IAAxB2he,EAAIn5b,SAASxoC,OACtC2he,EAAIlod,YAAYvX,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWw53B,OACvD1l4B,KAAK+o4B,eAAe/o4B,KAAKgp4B,gBAAiBhp4B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWu53B,OACjFzl4B,KAAK+hsB,YAAa,OAEjB,GAAI/hsB,KAAKy5D,QAAQnzB,SAASxoC,OAAS,EAAG,CACvCkC,KAAK+hsB,YAAa,EAClBtiO,EAAIt7d,UAAU2C,IAAIww3B,KAClB,IAAIr7vB,EAASwjW,EAAItqd,cAAc,IAAMsw3B,KACjCxpwB,GAAmC,WAAzBj8H,KAAKgp4B,iBACfhp4B,KAAK+o4B,eAAe/o4B,KAAKgp4B,gBAAiB/swB,EAElD,CACA,IAAKw/V,GAAM5qd,GAAO,IAAM403B,IAAYzl4B,KAAKy5D,YAAcgia,GAAM5qd,GAAO,IAAM603B,IAAa1l4B,KAAKy5D,UAAW,CAOnG,GANAz5D,KAAKip4B,eACLjp4B,KAAKgo4B,QAAUn33B,GAAO,IAAM403B,IAAa,KAAOe,IAAcxm4B,KAAKy5D,SAC9Dgia,GAAMz7d,KAAKgo4B,UACZlga,GAAa9ne,KAAKgo4B,QAAS,CAAE9krB,SAAU,gBAE3CljN,KAAK8rX,gBACD20G,GAAU,IAAMgma,IAAazm4B,KAAKy5D,SAAS37D,OAAS,EAAG,CACvDkC,KAAKgo4B,QAAUn33B,GAAO,IAAM403B,IAAa,KAAOe,IAAcxm4B,KAAKy5D,SACnEz5D,KAAKoo4B,QAAUpo4B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWk63B,IAAgB,IAAM/N,IAAtB+N,cACtD,IAAI8C,EAASr43B,GAAO,IAAM7Q,KAAKmp4B,YAAanp4B,KAAKgo4B,SAC5Cvsa,GAAMyta,GAIPlp4B,KAAKgo4B,QAAQ/x3B,aAAajW,KAAKoo4B,QAASpo4B,KAAKgo4B,QAAQr62B,YAHrDu72B,EAAOjz3B,aAAajW,KAAKoo4B,QAASc,EAAOv72B,YAK7C3tB,KAAKop4B,kBAAiB,GACtBpp4B,KAAK6Q,OAAO7Q,KAAK0+c,aACrB,CACA1+c,KAAK41T,OAAO51T,KAAK+te,UACrB,CACJ,EACAw5Z,EAAIhp4B,UAAU0q4B,aAAe,WACzB,IAAIrorB,EAAQ5gN,KACRqp4B,EAAWrp4B,KAAKgp4B,gBAChBM,EAAW,GAGf,GAFAtp4B,KAAK+n4B,OAAS/n4B,KAAKup4B,eACnBvp4B,KAAKwp4B,mBACAxp4B,KAAK+hsB,WAGL,CACG/hsB,KAAKy5D,QAAQnzB,SAASxoC,OAAS,GAAKkC,KAAKy5D,QAAQnzB,SAAS,GAAGniC,UAAUC,SAASqh4B,MAChFzl4B,KAAKiie,cAAc,CAAE+ma,gBAAiB,WAAY,GAItD,IAFA,IAAIvg3B,EAAQzoB,KAAK+n4B,OAAOzh2B,SAASxoC,OAC7B2r4B,EAAW,GACNts4B,EAAI,EAAGA,EAAIsrB,EAAOtrB,IACvBss4B,EAAS9r4B,KAAKqC,KAAK+n4B,OAAOzh2B,SAAS+uC,KAAKl4E,IAE5C,GAAIsrB,EAAQ,EAAG,CACX,IAAIih3B,EAAa1p4B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAvW7C,YAwWAlM,KAAK+n4B,OAAOxw3B,YAAYmy3B,GACxBD,EAAS1r4B,SAAQ,SAAUs3E,EAAM1oD,GAC7Bi0L,EAAMqc,UAAYtwM,EAClB,IAAInnB,EAAO,CACP0G,UAAW+q3B,IAAUnh3B,GAAImh3B,IAAWr2qB,EAAMw7Y,MAAQ,IAAMzvkB,GAExD+0b,EAAM9gQ,EAAM5iL,cAAc,OAAQ,CAClC9xB,UAAWi63B,IAAUzz1B,MAAO,CAAE,KAAQ,kBACvC67C,UACC0npB,EAAOr1hB,EAAM5iL,cAAc,MAAO,CAClC9xB,UAAWo63B,IAAe3n3B,UAAW+ic,EAAM9gQ,EAAMknrB,OAAOv5yB,YACzDA,UACC8mC,EAAOurF,EAAM5iL,cAAc,MAAO,CAClC9xB,UAAWm63B,IAAU1n3B,UAAWs3tB,EAChCvjsB,MAAO,CAAEk/S,KAAM,MAAOzK,SAAU,KAAM,gBAAiB,QAAS,gBAAiBu+iB,IAAc9krB,EAAMw7Y,MAAQ,IAAMzvkB,EAAO,gBAAiB,WAE/I0oG,EAAKlgH,cAAc,IAAMgx3B,KAAU5u3B,YAAY89D,GAC/Cq0zB,EAAWny3B,YAAYqpM,EAAM5iL,cAAc,MAAOx4B,IAClDi7d,GAAU,IAAMw2Z,IAAUyS,GAAY/82B,GAAOpV,YAAY89G,EAC7D,GACJ,CACJ,MAlCIi0wB,EAAWtp4B,KAAK2p4B,YAAY3p4B,KAAKyqB,MAAO,GAmC5CzqB,KAAK2n4B,MAAQ,IAAI9O,IAAQ,CACrBt13B,MAAqB,SAAb8l4B,GAAoC,UAAbA,EAAwB,OAAS,OAChE7l4B,OAAsB,SAAb6l4B,GAAoC,UAAbA,EAAwB,OAAS,OACjEnoiB,aAAclhW,KAAKkhW,aACnBz2U,MAA4B,IAApB6+2B,EAASxr4B,OAAgBwr4B,EAAW,GAC5Cr32B,QAASjyB,KAAK6wf,aAAatjf,KAAKvN,MAChC2y3B,WAAY3y3B,KAAK2y3B,WACjB9mY,oBAAqB7rf,KAAK6rf,oBAC1Bh9e,SAAU7O,KAAK6O,WAEnB7O,KAAK2n4B,MAAM/5Z,kBAAmB,EAC9B5te,KAAK2n4B,MAAM3p2B,cAAgBh+B,KAAKg+B,cAChCh+B,KAAK2n4B,MAAM7o3B,SAAS9e,KAAK+n4B,QACzB1w0B,GAAWr3D,KAAK+n4B,OAAQ,CAAEn2iB,KAAM,YAC3B6pI,GAAMz7d,KAAKy5D,QAAQrpD,aAAa,eAI3Bqrd,GAAMz7d,KAAKy5D,QAAQrpD,aAAa,sBACtCpQ,KAAK+n4B,OAAOn/3B,aAAa,kBAAmB5I,KAAKy5D,QAAQrpD,aAAa,oBACtEpQ,KAAKy5D,QAAQlG,gBAAgB,qBAL7BvzD,KAAK+n4B,OAAOn/3B,aAAa,aAAc5I,KAAKy5D,QAAQrpD,aAAa,eACjEpQ,KAAKy5D,QAAQlG,gBAAgB,eAMjCvzD,KAAK4p4B,eAAe5p4B,KAAK00b,iBACzB,IAAIm1c,EAAgB7p4B,KAAK2n4B,MAAMlu0B,QAAQtkD,cAAc,IAAMqx3B,KACtD/qa,GAAMoua,KACHpua,GAAMoua,EAAc/z3B,KAA4B,KAArB+z3B,EAAc/z3B,MACzC+z3B,EAAc/z3B,GAAK9V,KAAKy5D,QAAQ3jD,GAAb9V,oBAG/B,EACAun4B,EAAIhp4B,UAAUutX,cAAgB,WAC1B9rX,KAAK6n4B,OAASh33B,GAAO,IAAM603B,IAAa1l4B,KAAKy5D,SAC7C,IAAIqw0B,EAAUrpa,GAAU,IAAMgma,IAAazm4B,KAAKy5D,SAChD,GAAIz5D,KAAK+hsB,WAAY,CACjB/hsB,KAAK+gf,IAAO/gf,KAAK6n4B,OAAOvh2B,SAASxoC,OAAS,EAAKkC,KAAK6n4B,OAAOlp3B,UAAY,GAEvE,IADA,IAAIor3B,EAAW/p4B,KAAK6n4B,OAAOvh2B,SAClBnpC,EAAI,EAAGA,EAAI2s4B,EAAQhs4B,OAAQX,IAC5B4s4B,EAASjs4B,OAAS,GAAKX,IACvBs1D,GAAS,CAACs30B,EAAS10zB,KAAKl4E,IAAK853B,KAC7B5/zB,GAAW0y0B,EAAS10zB,KAAKl4E,GAAI,CAAE,KAAQ,WAAY,kBAAmB853B,IAAWj33B,KAAKo8lB,MAAQ,IAAMj/lB,IACpG4s4B,EAAS10zB,KAAKl4E,GAAG2Y,GAAK4v3B,IAAc1l4B,KAAKo8lB,MAAQ,IAAMj/lB,EAGnE,CACJ,EACAoq4B,EAAIhp4B,UAAUyr4B,cAAgB,WAC1Bhq4B,KAAK6o4B,kBACApta,GAAMz7d,KAAK6n4B,UACZ7n4B,KAAK4xqB,YAAc,IAAI51L,GAAMh8e,KAAK6n4B,OAAQ,CAAE/hC,MAAO9l2B,KAAKsy3B,aAAa/k3B,KAAKvN,QAElF,EACAun4B,EAAIhp4B,UAAUor4B,YAAc,SAAUl/2B,EAAOkC,GACzC,IAAIi0L,EAAQ5gN,KACRgo4B,EAAU9n4B,MAAM3B,UAAUqC,MAAMb,KAAK0ge,GAAU,kBAAoBgma,IAAazm4B,KAAKy5D,UACrFww0B,EAAQjq4B,KAAKi9N,UACjB,IAAKj9N,KAAKkq4B,WAAalC,EAAQlq4B,OAAS,EAAG,CACvC,IAAIqs4B,EAAW,GACfnC,EAAQjq4B,SAAQ,SAAUs3E,GACtB80zB,EAASxs4B,KAAKijN,EAAMwprB,gBAAgB/0zB,EAAKv/D,IAC7C,IACAm03B,EAAQ/o4B,KAAK2D,IAAIjH,MAAMsD,KAAMip4B,EACjC,CACA,IACIE,EADAC,EAAS,GAETC,EAAc,GAyFlB,OAvFA9/2B,EAAM1sB,SAAQ,SAAUs3E,EAAMl4E,GAC1B,IAAIq7B,EAAOijc,GAAMpmZ,EAAK4mD,SAAWw/V,GAAMpmZ,EAAK4mD,OAAOohjB,cAAiB,GAAKhomB,EAAK4mD,OAAOohjB,aACjF5glB,EAAOg/X,GAAMpmZ,EAAK4mD,SAAWw/V,GAAMpmZ,EAAK4mD,OAAOmhhB,SAAY,GAAK/nkB,EAAK4mD,OAAOmhhB,QAChF,GAAK3hL,GAAMpmZ,EAAKgpkB,kBAAqB5iL,GAAMpmZ,EAAK4mD,SAAWw/V,GAAMpmZ,EAAK4mD,OAAO5tH,OAC3C,IAA5BgnE,EAAK4mD,OAAO5tH,KAAKvQ,QAA2B,KAAR2+F,GACtC8tyB,EAAY5s4B,KAAKR,OAFrB,CAKA,IAII+6Y,EAJAwpE,EAAMrsY,EAAKgpkB,gBAAkBhpkB,EAAK4mD,OAAO5tH,KAC1B,kBAARqzc,GAAoB9gQ,EAAMirS,sBACjCnqC,EAAMoiC,GAAmBE,SAAStiC,IAGlC9gQ,EAAMsprB,YAAczua,GAAM76Q,EAAM4prB,OAAwB,KAAf5prB,EAAM4prB,MAC/Ctyf,EAAYj3Y,SAAS2/M,EAAM4prB,KAAKho4B,UAAUo+M,EAAM4prB,KAAK/8vB,YAAY,KAAO,GAAI,IAC5EmzE,EAAM4prB,KAAO,IAGbtyf,EAAYvrX,EAAQxvB,EAExByjN,EAAMqc,UAAiC,IAAnB+qqB,EAAQlq4B,OAAgBX,EAAMyjN,EAAMsprB,UAAchyf,EAAc+xf,EAAQ,EAAI9s4B,EAChG,IAAI63R,EAAY3/M,EAAK2/M,SAAY,IAAMs8lB,IAAc,IAAMQ,IAAc,GACrEn0yB,GAA2B,IAAjBtI,EAAK9iB,QAAqB,IAAM8l0B,IAAa,GAC3DgS,EAAazprB,EAAM5iL,cAAc,MAAO,CAAE9xB,UAAWi63B,IAAUzz1B,MAAO,CAAE,KAAQ,kBAChF,IAAI+31B,EAAU/ob,aAAetkd,OAAUskd,EAAInzX,UAAYmzX,EACnDgpb,GAAajva,GAAMgva,IAAoB,KAAVA,EAC5Bhva,GAAM/Z,EAAItgU,SAIXw/D,EAAM+prB,kBAAkBN,EAAY3ob,EAAKvkd,GAHzCkt4B,EAAW9y3B,YAAYmqc,GAM3B,IAAI/0a,EAAOi0K,EAAM5iL,cAAc,OAAQ,CACnC9xB,UAAW453B,IAAY,IAAMS,IAAe,IAAMR,IAAW,IAAMvt2B,EAAM,IAAMikE,IAE/EmuyB,EAAQhqrB,EAAM5iL,cAAc,MAAO,CAAE9xB,UAAWo63B,MACpDsE,EAAMrz3B,YAAY8y3B,GACL,KAAR3ob,QAAsBz0Y,IAARy0Y,GAA8B,KAARjlX,GACxB,SAARjkE,GAA0B,QAARA,EACnBoy2B,EAAM303B,aAAa02B,EAAMi+1B,EAAM9jjB,mBAG/B8jjB,EAAMrz3B,YAAYo1B,GAEf091B,EACPzprB,EAAM4mrB,aAAc,IAGH,KAAR/qyB,EAAc4tyB,EAAa191B,KACvBA,IACT0zb,GAAOgqa,GACPO,EAAMrz3B,YAAYo1B,GAClBi0K,EAAM4mrB,aAAc,GAG5B,IAAIrgjB,EAAWs0I,GAAMpmZ,EAAK8xQ,UAAY,KAAO9xQ,EAAK8xQ,SAASxmV,WACvDkq4B,EAAax1zB,EAAK2/M,SAAY,CAAC,EAAI,CAAEmyD,SAAUA,EAAU,gBAAiBA,EAAUyK,KAAM,MAAO,gBAAiB,QAAS,gBAAiB,SAChJg5iB,EAAMrz3B,YAAYqpM,EAAMknrB,OAAO1q2B,WAAU,IACzC,IAAIi4F,EAAOurF,EAAM5iL,cAAc,MAAO,CAAE9xB,UAAWm63B,IAAU3z1B,MAAOm41B,IACpEx1wB,EAAK99G,YAAYqz3B,GACbhqrB,EAAM+nrB,0BAA0Bzo4B,OAChC0gN,EAAM+nrB,eAAe1k4B,OAAQ0oB,EAAQxvB,EAAI,EAAG853B,IAAWr2qB,EAAMw7Y,MAAQ,IAAMx7Y,EAAMqc,WAErF,IAGI6tqB,EAAQ,CAAE/mQ,eAHA,CACVjunB,GAAImh3B,IAAWr2qB,EAAMw7Y,MAAQ,IAAMx7Y,EAAMqc,UAAW,UAAW5nJ,EAAKv/D,IAEjCizH,SAAU1T,GACjDy1wB,EAAMj83B,eAA+Bo+D,IAAlBoI,EAAKxmE,SAA0BwmE,EAAKxmE,SAAW,KAAO,IAAMmmR,EAAW,IAAMr3M,EAAS,KACzF,KAAR8e,EAAc,MAAQjkE,EAAM,IAAM,KAASky2B,EAAuB,GAAX3E,KACnD,QAARvt2B,GAAyB,WAARA,GACjBooL,EAAMnnJ,QAAQt1D,UAAU2C,IAAI,mBAEhCwj4B,EAAO3s4B,KAAKmt4B,GACZ3t4B,GAnEA,CAoEJ,IACK6C,KAAK6rtB,OACN0+K,EAAYxs4B,SAAQ,SAAUgt4B,GAC1BnqrB,EAAMn2L,MAAMxmB,OAAO8m4B,EAAiB,EACxC,IAEA/q4B,KAAKwn4B,YACLxn4B,KAAKy5D,QAAQt1D,UAAU2C,IAAIk/3B,KAG3Bhm4B,KAAKy5D,QAAQt1D,UAAU0C,OAAOm/3B,KAE3BsE,CACX,EACA/C,EAAIhp4B,UAAUys4B,kBAAoB,WAC9B,IAAIC,EAAYjr4B,KAAKup4B,eACrB,GAAI0B,EAAW,CACX,IAAI3B,EAAW7oa,GAAU,IAAMgma,IAAc,IAAMb,IAAYqF,GAC/D,GAAGrq4B,MAAMb,KAAKup4B,GAAUvr4B,SAAQ,SAAUqK,GAAQ,OAAOA,EAAKjE,UAAU0C,OAAO++3B,IAAa,IAC5F,GAAGhl4B,MAAMb,KAAKup4B,GAAUvr4B,SAAQ,SAAUqK,GAAQ,OAAOA,EAAK0+U,kBAAkBl+U,aAAa,gBAAiB,QAAU,GAC5H,CACJ,EACA2+3B,EAAIhp4B,UAAU2s4B,mBAAqB,SAAUzra,GACzCz/d,KAAKko4B,MAAQr33B,GAAO,IAAM613B,IAAY1m4B,KAAKy5D,SAC3C,IAAIum0B,EAAUnv3B,GAAO,aAAc7Q,KAAKy5D,SACpC4i0B,EAAWxr3B,GAAO,IAAM213B,IAAcxm4B,KAAKy5D,SAC3C/kB,EAAY2n1B,EAAS3n1B,UACrBy21B,GAAa,EAYjB,QAXKnr4B,KAAKqoF,eAAkBroF,KAAK+te,WAAeiyZ,EAAQ7jxB,WAAa6jxB,EAAQ1wiB,YAAe+siB,EAASlgxB,aAC5Fn8G,KAAK+te,WAAaiyZ,EAAQ7jxB,WAAakgxB,EAAS/siB,cAGhDtvV,KAAKqoF,cAAiB23yB,EAAQzpb,UAAY7ha,EAAU6ha,UAAY7ha,EAAUsyS,gBAF/EmkjB,GAAa,GAKbA,IACA1ra,EAAIt7d,UAAU2C,IAAI6/3B,KAClB3m4B,KAAKko4B,MAAMjy3B,aAAawpd,EAAKgB,GAAU,IAAMkma,IAAc3m4B,KAAKko4B,OAAO,MAEpE,CACX,EACAX,EAAIhp4B,UAAUuz2B,aAAe,SAAU3v1B,GACnC,IAAIip3B,EAASjp3B,EAAOhN,cAAc,qBAC7Bsmd,GAAM2va,KACPA,EAAO78yB,UAAY,GACnBpsE,EAAOhN,cAAc,IAAMkx3B,KAAUli4B,UAAU0C,OAAO,aAE1D7G,KAAKio4B,OAASxna,GAAU,IAAM+la,IAAe,KAAOC,IAAazm4B,KAAK+n4B,QACtE,IAAIrz1B,EAAY10C,KAAKio4B,OAAOjo4B,KAAKio4B,OAAOnq4B,OAAS,GACjD,GAA2B,IAAvBkC,KAAKio4B,OAAOnq4B,OAAc,CAK1B,GAJAqkB,EAAOhe,UAAU0C,OAAO8/3B,KACxBxk3B,EAAOoxC,gBAAgB,SACvBvzD,KAAKgo4B,QAAQzw3B,YAAY4K,GACzBniB,KAAKqr4B,SAAWlp3B,EAAOrM,GACnB9V,KAAKkr4B,mBAAmBx21B,GAAY,CACpC,IAAI421B,EAAUtr4B,KAAKgo4B,QAAQtz1B,UAAU8xS,uBACrCxmV,KAAKkr4B,mBAAmBI,EAC5B,CACAtr4B,KAAKyo4B,SAAU,CACnB,CACA,OAAOhoa,GAAU,IAAMgma,IAAazm4B,KAAKgo4B,SAASlq4B,OAAS,CAC/D,EACAyp4B,EAAIhp4B,UAAUqr4B,eAAiB,SAAUj31B,GACrC,IAAI441B,EAAM163B,GAAO,IAAM403B,IAAYzl4B,KAAKy5D,UAC5B,IAAR9mB,EACA441B,EAAIpn4B,UAAU2C,IAAIo/3B,KAGlBqF,EAAIpn4B,UAAU0C,OAAOq/3B,KAEzBlm4B,KAAK2n4B,MAAMhzJ,kBACX30uB,KAAK0n4B,wBACT,EACAH,EAAIhp4B,UAAUit4B,iBAAmB,SAAUznzB,EAAMzX,GAE9BtsE,KAAK+te,WAAa/te,KAAKy5D,QAAQt1D,UAAUC,SAASit3B,KAuBjE,OAtBIrx3B,KAAKyo4B,SAAW1kzB,GAAQzX,EACe,gBAAnCtsE,KAAKy+E,UAAUvJ,SAAS00lB,OACZ,CACR/oqB,KAAM,eACN8yD,SAAU3zD,KAAKy+E,UAAUvJ,SAASvhB,SAAU+za,eAAgB1ne,KAAKy+E,UAAUvJ,SAAS9vE,QAI5E,KAImB,iBAA/BpF,KAAKy+E,UAAUr+E,KAAKwpqB,OACR,CACR/oqB,KAAM,gBACN8yD,SAAU3zD,KAAKy+E,UAAUr+E,KAAKuzD,SAAU+za,eAAgB1ne,KAAKy+E,UAAUr+E,KAAKgF,QAIpE,IAIxB,EACAmi4B,EAAIhp4B,UAAUkt4B,qBAAuB,SAAUC,EAAQnD,GACnD,IAAI3nrB,EAAQ5gN,KACR2r4B,EAAa3r4B,KAAKwr4B,iBAAiBjD,EAAWvo4B,KAAK0+c,cAClD+c,GAAMkwa,GAmBPD,EAAOvn4B,UAAU0C,OAAO++3B,MAlBxB+F,EAAWvka,MAAQ,WACfg9J,GAASsnQ,EAAQ,CAAE,SAAY,aAC/BA,EAAOvn4B,UAAU2C,IAAI8/3B,KACrB8E,EAAOvn4B,UAAU2C,IAAI,SACzB,EACA6k4B,EAAW192B,IAAM,WACby92B,EAAOrn4B,MAAMqmB,QAAU,OACvBgh3B,EAAOvn4B,UAAU0C,OAAO++3B,KACxB8F,EAAOvn4B,UAAU0C,OAAO+/3B,KACxB8E,EAAOvn4B,UAAU0C,OAAO,UACxBu9nB,GAASsnQ,EAAQ,CAAE,QAAW,GAAI,SAAY,KACb,IAA7BA,EAAOt+2B,WAAWtvB,QAAiB8iN,EAAMmhf,YACzC1hO,GAAOqra,EAEf,EACA,IAAIp5wB,GAAUq5wB,GAAYlm4B,QAAQim4B,GAK1C,EACAnE,EAAIhp4B,UAAUqt4B,iBAAmB,SAAU913B,EAAIhX,GAC3C,IAEI4s4B,EAFA9qrB,EAAQ5gN,KACRuo4B,EAAYvo4B,KAAKuo4B,UAEA,GAAG3n4B,MAAMb,KAAKC,KAAKy5D,QAAQtkD,cAAc,IAAMuw3B,KAAap/1B,UAClEvoC,SAAQ,SAAUs3E,GACzBA,EAAKv/D,KAAO8qM,EAAMirrB,gBAClBH,EAASr2zB,EAEjB,IACA,IAAIi2zB,EAAUtr4B,KAAKio4B,OAAOM,GACtBuD,EAAS9r4B,KAAK+r4B,cAAc/r4B,KAAK6n4B,OAAQ7n4B,KAAKgs4B,SAASl23B,IAC3D,GAAI2ld,GAAMiwa,KAAYjwa,GAAM6va,GAAU,CAClC,IAAIW,EAAOjs4B,KAAKgs4B,SAASV,EAAQx13B,IACjC413B,EAAS1r4B,KAAK+r4B,cAAc/r4B,KAAK6n4B,OAAQoE,EAC7C,CACKxwa,GAAMqwa,KACP9r4B,KAAK6r4B,cAAgBC,EAAOh23B,IAEhC,IAAIo23B,EAAYzwa,GAAMz7d,KAAKy+E,YAAcg9Y,GAAMz7d,KAAKy+E,UAAUr+E,KAAKwpqB,SAAWnuM,GAAMz7d,KAAKy+E,UAAUvJ,SAAS00lB,SAClE,SAAnC5pqB,KAAKy+E,UAAUvJ,SAAS00lB,QAAoD,SAA/B5pqB,KAAKy+E,UAAUr+E,KAAKwpqB,OACxE,GAAI5pqB,KAAK0hrB,aAAwB,IAAV5irB,GAAmBot4B,EAClCR,GAAUA,IAAWI,GACrBJ,EAAOvn4B,UAAU0C,OAAO++3B,SAFhC,CAMA,IACI+F,EADA5qZ,EAAMlwe,GAAO,IAAM603B,IAAa1l4B,KAAKy5D,SAEzC,GAAIz5D,KAAKuo4B,UAAYvo4B,KAAK0+c,eAAiB1+c,KAAKyo4B,QAAS,CACrD,IAAI0D,EAAUns4B,KAAKy+E,UAAUvJ,SAAS00lB,OACtC+hO,EAAa,CACT9q4B,KAAoB,SAAZsr4B,EAAsB,GAAmB,gBAAZA,EAA6BA,EAAU,cAC5Ex40B,SAAgD,IAArC3zD,KAAKy+E,UAAUvJ,SAASvhB,UAAoC,WAAlBsza,GAA8B,IAAMjne,KAAKy+E,UAAUvJ,SAASvhB,SACjH+za,eAAgB1ne,KAAKy+E,UAAUvJ,SAAS9vE,OAEhD,MACK,GAAIpF,KAAKyo4B,SAAWzo4B,KAAKuo4B,UAAYvo4B,KAAK0+c,cAAgB1+c,KAAKuo4B,YAAcvo4B,KAAK0+c,aAAc,CACjG,IAAI0tb,EAASps4B,KAAKy+E,UAAUr+E,KAAKwpqB,OACjC+hO,EAAa,CACT9q4B,KAAmB,SAAXur4B,EAAqB,GAAkB,iBAAXA,EAA6BA,EAAS,eAC1Ez40B,SAA4C,IAAjC3zD,KAAKy+E,UAAUr+E,KAAKuzD,UAAoC,WAAlBsza,GAA8B,IAAMjne,KAAKy+E,UAAUr+E,KAAKuzD,SACzG+za,eAAgB1ne,KAAKy+E,UAAUr+E,KAAKgF,OAE5C,CACAum4B,EAAWhka,SAAW,WAClBoZ,EAAI58e,UAAU2C,IAAI8/3B,KAClBhmrB,EAAMyrrB,iBACV,EACAV,EAAW192B,IAAM,WACb8yd,EAAI58e,UAAU0C,OAAO+/3B,KACrBkF,EAAO3n4B,UAAU2C,IAAI8+3B,IACzB,EACK5l4B,KAAK0hrB,YAAejmN,GAAMiwa,IAC3B1r4B,KAAKyr4B,qBAAqBC,EAAQnD,GAEtCvo4B,KAAKyo4B,SAAU,EACS,KAApBkD,EAAW9q4B,KACXir4B,EAAO3n4B,UAAU2C,IAAI8+3B,KAGrB,IAAItzwB,GAAUq5wB,GAAYlm4B,QAAQqm4B,EAnCtC,CAqCJ,EACAvE,EAAIhp4B,UAAUy3qB,WAAa,SAAUu1N,GACjC,IAAIe,EAAYxra,GAAQyqa,EAAK,IAAM9F,IAAa,KAAOgB,KACnD8F,EAAWvs4B,KAAKws4B,YAAYF,IAC3B7wa,GAAMz7d,KAAK663B,SAAW0Q,EAAIpn4B,UAAUC,SAAS,aAC7CpE,KAAK663B,OAAO123B,UAAUC,SArrBd,gBAqrB0CpE,KAAKu53B,OAAOh31B,KAAKviC,KAAKuiC,MAAQviC,KAAKu53B,OAAO/72B,KAAKxd,KAAKwd,MAElG+t3B,EAAIpn4B,UAAUC,SAAS,gBAC5Bmn4B,EAAIn13B,QAGCqld,GAAM6wa,KAA2D,IAA7CA,EAAUno4B,UAAUC,SAASwh4B,OAClD5l4B,KAAKys4B,UAAUF,EAAU,MAAM,GAC1B9wa,GAAMz7d,KAAK663B,SACZ763B,KAAKu53B,OAAOh31B,KAAKviC,KAAKuiC,MAItC,EACAgl2B,EAAIhp4B,UAAUgr4B,aAAe,WACzB,IAAI9ta,GAAMz7d,KAAKy5D,SAAf,CAGA,IAAImiE,EAAU,GAAGh7H,MAAMb,KAAKC,KAAKy5D,QAAQnzB,UAAU9oC,QAAO,SAAUN,GAAK,OAAOA,EAAEiH,UAAUC,SAASqh4B,IAAa,IAClH,GAAI7pwB,EAAQ99H,OAAS,EACjB,OAAO89H,EAAQ,GAGf,IAAIvG,EAAO,GAAGz0H,MAAMb,KAAKC,KAAKy5D,QAAQnzB,UAAU9oC,QAAO,SAAUN,GAAK,OAAQA,EAAEiH,UAAUC,SAtuBpF,kBAsuB2G,IAAG,GACpH,GAAKixH,EAGL,MAAO,GAAGz0H,MAAMb,KAAKs1H,EAAK/uF,UAAU9oC,QAAO,SAAUN,GAAK,OAAOA,EAAEiH,UAAUC,SAASqh4B,IAAa,IAAG,EAV1G,CAYJ,EACA8B,EAAIhp4B,UAAUiu4B,YAAc,SAAUn3zB,GAClC,OAAOn1E,MAAM3B,UAAUmG,QAAQ3E,KAAK0ge,GAAU,IAAMgma,IAAazm4B,KAAKup4B,gBAAiBl0zB,EAC3F,EACAkyzB,EAAIhp4B,UAAUyt4B,SAAW,SAAUl23B,GAC/B,OAAOA,EAAGpT,QAAQu03B,IAAWj33B,KAAKo8lB,MAAQ,IAAK,GACnD,EACAmrS,EAAIhp4B,UAAUqp4B,mBAAqB,WAC/B,IAAIhnrB,EAAQ5gN,KACZA,KAAKgl4B,YAAYjn4B,SAAQ,SAAU2u4B,GAC1Bjxa,GAAM76Q,EAAMnnJ,QAAQtkD,cAAcu33B,MACnCn32B,SAASwK,KAAKxoB,YAAYqpM,EAAMnnJ,QAAQtkD,cAAcu33B,IAASro4B,MAAMqmB,QAAU,OAEvF,GACJ,EACA682B,EAAIhp4B,UAAUo5f,gBAAkB,SAAUl4B,EAAKshB,EAAKp0d,GAChD,IAAIire,EAAU53f,KAAKg+B,cAAc,OACjCh+B,KAAK63f,eAAeD,EAAS7W,EAAK,UAAWp0d,GACX,IAA9Bire,EAAQxqe,WAAWtvB,QACnB2he,EAAIlod,YAAYqgf,GAEhB53f,KAAKwnf,SACLxnf,KAAKwwe,sBAEb,EACA+2Z,EAAIhp4B,UAAUs5f,eAAiB,SAAUp4B,EAAK9sb,EAAK2/B,EAAM3lD,GACrD,IAAIore,EAaAC,EAZe,kBAARrld,GACPA,EAAMA,EAAIp9B,OACNvV,KAAKmnrB,MACLpvL,EAAalyM,GAAQ7lT,KAAK6rf,oBAAsB/H,GAAmBE,SAASrxc,GAAOA,GAGnF8sb,EAAI9gd,UAAY3e,KAAK6rf,oBAAsB/H,GAAmBE,SAASrxc,GAAOA,GAIlFold,EAAalyM,GAAQlzQ,GAGpB8ob,GAAMs8B,KACPC,EAAcD,EAAW,CAAC,EAAG/3f,KAAMsyE,KAElCmpZ,GAAMs8B,IAAeC,EAAYl6f,OAAS,GAC3C,GAAG8C,MAAMb,KAAKi4f,GAAaj6f,SAAQ,SAAU8H,GACzC45d,EAAIlod,YAAY1R,EACpB,GAER,EACA0h4B,EAAIhp4B,UAAUos4B,kBAAoB,SAAUlx0B,EAASprD,EAAMse,GACvD3sB,KAAK63f,eAAep+b,EAASprD,EAAM,iBAAkBse,EACzD,EACA462B,EAAIhp4B,UAAU6usB,WAAa,SAAU3tO,EAAKshB,EAAK4rZ,EAAUhg3B,GACrD,IAAI+/2B,EAEJ,GAAmB,kBADnB3rZ,EAAMtlB,GAAMslB,GAAO,GAAKA,IACOtlB,GAAMslB,EAAIpie,WAIrC,GAHmB,kBAARoie,GAAoB/gf,KAAK6rf,sBAChC9K,EAAM+C,GAAmBE,SAASjD,IAEvB,MAAXA,EAAI,IAAyB,MAAXA,EAAI,GACtB,GAAIxrd,SAAS9H,iBAAiBszd,GAAKjjf,OAAQ,CACvC,IAAIm6f,EAAS1ie,SAASpgB,cAAc4re,GACpC2rZ,EAASz0Y,EAAO1pa,UAAUh5E,OACT,UAAbo33B,EACAlta,EAAIlod,YAAY0gf,EAAO76d,WAAU,KAGjCqic,EAAIlod,YAAY0gf,GAChBA,EAAO5zf,MAAMqmB,QAAU,GAE/B,MAEI1qB,KAAK23f,gBAAgBl4B,EAAKshB,EAAKp0d,QAInC3sB,KAAK23f,gBAAgBl4B,EAAKshB,EAAKp0d,QAInC8yc,EAAIlod,YAAYwpe,GAEftlB,GAAMixa,KAC2C,IAA9C1s4B,KAAKgl4B,YAAYtg4B,QAAQq8e,EAAIpgf,aAC7BX,KAAKgl4B,YAAYrn4B,KAAKojf,EAAIpgf,WAGtC,EACA4m4B,EAAIhp4B,UAAUwt4B,cAAgB,SAAUlE,EAAQz8a,GAQ5C,OANIprd,KAAKy5D,QAAQt1D,UAAUC,SAASuh4B,KAC1B903B,GAAO,IAAM803B,IAAW,MAAQD,IAAc,OAASA,IAAc1l4B,KAAKo8lB,MAAQ,IAAMhxI,EAAIprd,KAAKy5D,SAGjGz5D,KAAKigqB,QAAQ4nO,EAAOvh2B,SAAUo/1B,IAAc1l4B,KAAKo8lB,MAAQ,IAAMhxI,EAG7E,EACAm8a,EAAIhp4B,UAAU0hqB,QAAU,SAAUx1oB,EAAO7rB,GAErC,IADA,IAAI6ge,EACKtie,EAAI,EAAGA,EAAIstB,EAAM3sB,OAAQX,IAC9B,GAAIstB,EAAMttB,GAAG2Y,KAAOlX,EAAK,CACrB6ge,EAAMh1c,EAAMttB,GACZ,KACJ,CAEJ,OAAOsie,CACX,EACA8na,EAAIhp4B,UAAU8pF,WAAa,WACvB,IAAIA,EAAuC,SAAzBroF,KAAKgp4B,iBAAuD,UAAzBhp4B,KAAKgp4B,gBAE1D,OADAhp4B,KAAKmp4B,YAAe9gzB,EA1zBV,oBADA,oBA4zBHA,CACX,EACAk/yB,EAAIhp4B,UAAUir4B,iBAAmB,WAC7B,GAAIxp4B,KAAKqoF,aAAc,CACnB,IAAIukzB,EAAkC,SAAzB5s4B,KAAKgp4B,gBAA8BlC,IAAYC,IAC5Dt00B,GAAS,CAACzyD,KAAK+n4B,QAAS,CAAChR,IAAc6V,IAClC5s4B,KAAKy5D,QAAQt1D,UAAUC,SAASuh4B,KAIjClz0B,GAAS,CAACzyD,KAAK+n4B,QAAS,CAAClB,IAAU+F,IAHnCn60B,GAAS,CAACzyD,KAAKy5D,SAAU,CAACot0B,IAAU+F,GAK5C,CAC6B,WAAzB5s4B,KAAKgp4B,iBACLv20B,GAAS,CAACzyD,KAAK+n4B,QAAS,CAACf,KAEjC,EACAO,EAAIhp4B,UAAUqq4B,yBAA2B,WACrC5o4B,KAAKwd,KAAO,CAAE3c,KAAOb,KAAKqoF,aAAe,SAAW,YAAc10B,SAAU,KAC5E3zD,KAAKuiC,KAAO,CAAE1hC,KAAOb,KAAKqoF,aAAe,UAAY,UAAY10B,SAAU,IAC/E,EACA4z0B,EAAIhp4B,UAAUuof,kBAAoB,SAAUjkU,GACxC7iL,KAAK+o4B,eAAelmtB,EAAO7iL,KAAK+n4B,QAChC,IAAIv2vB,EAAYxxI,KAAK+n4B,OAAO5y3B,cAAc,IAAMyw3B,KAC5Cv9yB,IAAaroF,KAAK+n4B,OAAO5j4B,UAAUC,SAAS2y3B,KAChDrk0B,GAAY,CAAC1yD,KAAKy5D,SAAU,CAACot0B,MAC7Bn00B,GAAY,CAAC1yD,KAAK+n4B,QAAS,CAAChR,IAAc+P,IAAWC,MACjD1+yB,IAAeroF,KAAKqoF,eACpBroF,KAAK6s4B,4BACApxa,GAAMjqV,IAAcA,EAAUrtI,UAAUC,SAASui4B,MAClD3m4B,KAAK8x2B,aAAatguB,IAG1BxxI,KAAKwp4B,mBACLxp4B,KAAKqs4B,kBACLrs4B,KAAKsupB,WACT,EACAi5O,EAAIhp4B,UAAU+vpB,UAAY,WACtB,IAAIw+O,EAAaj83B,GAAO,KAAOom3B,IAAWj33B,KAAKo8lB,MAAQ,IAAMp8lB,KAAK0+c,aAAc1+c,KAAK+n4B,QAChFtsa,GAAMqxa,IACPA,EAAWhmjB,kBAAkBl4E,OAErC,EACA24nB,EAAIhp4B,UAAUsu4B,yBAA2B,WACrC7s4B,KAAK2n4B,MAAM1la,cAAc,CAAEz+d,OAASxD,KAAKqoF,aAAe,OAAS,OAAS9kF,MAAQvD,KAAKqoF,aAAe,OAAS,SAAW,GAC1HroF,KAAK2n4B,MAAM7gZ,oBACX9mf,KAAK4o4B,0BACT,EACArB,EAAIhp4B,UAAUwq4B,eAAiB,SAAUlmtB,EAAO48S,GAC5C,IAAIsta,EAAY7s4B,MAAM3B,UAAUmG,QAAQ3E,KAAKC,KAAKy5D,QAAQnzB,SAAUm5b,GAChEuta,EAAa9s4B,MAAM3B,UAAUmG,QAAQ3E,KAAKC,KAAKy5D,QAAQnzB,SAAUtmC,KAAKy5D,QAAQtkD,cAAc,IAAMuw3B,MACxF,WAAV7itB,GAAuBmqtB,EAAaD,EACpC/s4B,KAAKy5D,QAAQliD,YAAYkod,IAGzB/sa,GAAY,CAAC+sa,GAAM,CAACuna,MACpBhn4B,KAAKy5D,QAAQxjD,aAAawpd,EAAK5ud,GAAO,IAAM603B,IAAa1l4B,KAAKy5D,UAEtE,EACA8t0B,EAAIhp4B,UAAUmof,YAAc,SAAUjnB,EAAKxkY,EAAKtoD,GAC5C,GAAY,KAARsoD,EAIJ,IADA,IAAI3M,EAAO2M,EAAIj6F,MAAM,KACZ7D,EAAI,EAAGA,EAAImxF,EAAKxwF,OAAQX,IACzBw1C,EACA8sb,EAAIt7d,UAAU2C,IAAIwnF,EAAKnxF,IAGvBsie,EAAIt7d,UAAU0C,OAAOynF,EAAKnxF,GAGtC,EACAoq4B,EAAIhp4B,UAAU6q4B,iBAAmB,SAAUz21B,GAIvC,GAHI3yC,KAAKy5D,QAAQt1D,UAAUC,SAAS6i4B,MAChCv00B,GAAY,CAAC1yD,KAAKy5D,SAAU,CAACwt0B,OAE7Bxra,GAAMz7d,KAAK6n4B,QAAf,CAGA,IAAIE,EAAS/n4B,KAAKup4B,eAClB,GAA8B,SAA1Bvp4B,KAAKit4B,iBAA6B,CAClC,GAAoB,SAAhBjt4B,KAAKwD,OACL,OAGKxD,KAAKqoF,cACN+7iB,GAASpkoB,KAAK6n4B,OAAQ,CAAE,OAAW7n4B,KAAKy5D,QAAQ72D,aAAeml4B,EAAO/gjB,aAAgB,MAGlG,MACK,GAA8B,SAA1BhnV,KAAKit4B,iBACVx60B,GAAS,CAACzyD,KAAKy5D,SAAU,CAACwt0B,MAC1B7iQ,GAASpkoB,KAAKy5D,QAAS,CAAE,OAAU,SACnCz5D,KAAK6n4B,OAAOxj4B,MAAMb,OAAS,eAAiBxD,KAAK+n4B,OAAO/gjB,aAAe,WAEtE,GAA8B,SAA1BhnV,KAAKit4B,iBAA6B,CACvC,IAAwB,IAApBjt4B,KAAK+hsB,WAEL,IADA,IAAIhhN,EAAMtgB,GAAU,IAAMila,IAAc,OAASzO,IAAUj33B,KAAKy5D,SACvDt8D,EAAI,EAAGA,EAAI4jf,EAAIjjf,OAAQX,IAC5B4jf,EAAI5jf,GAAGyL,aAAa,QAAS,sCAC7B5I,KAAKgrB,UAAY9pB,KAAK2D,IAAI7E,KAAKgrB,UAAWhrB,KAAK6pf,UAAU9I,EAAI5jf,KAC7D4jf,EAAI5jf,GAAGkH,MAAM6zf,eAAe,WAC5BnX,EAAI5jf,GAAGkH,MAAM6zf,eAAe,kBAG/B,CACDl4f,KAAK6n4B,OAASh33B,GAAO,IAAM603B,IAAa1l4B,KAAKy5D,UACjC,IAAR9mB,GACA3yC,KAAK6n4B,OAAOtw3B,YAAYvX,KAAKg+B,cAAc,MAAO,CAC9CloB,GAAK4v3B,IAAc1l4B,KAAKo8lB,MAAnBspS,KAAqCx53B,UAAW+q3B,IAAW,IAAM2O,IACtElz1B,MAAO,CAAE,KAAQ,WAAY,kBAAmBuk1B,IAAWj33B,KAAKo8lB,MAAhB66R,SAGxD,IAAIx3Z,EAAMz/d,KAAK6n4B,OAAOvh2B,SAAS+uC,KAAK,GACpC,IAASl4E,EAAI,EAAGA,EAAI6C,KAAKyqB,MAAM3sB,OAAQX,IAGnC,IAFA6C,KAAKotsB,WAAW3tO,EAAKz/d,KAAKyqB,MAAMttB,GAAGqnU,QAAS,QAASrnU,GACrD6C,KAAKgrB,UAAY9pB,KAAK2D,IAAI7E,KAAKgrB,UAAWhrB,KAAK6pf,UAAUpqB,IAClDA,EAAI9xc,YACP8xc,EAAI7xc,YAAY6xc,EAAI9xc,aAGxB3tB,KAAKwnf,SAAWxnf,KAAK+iQ,WAAa/iQ,KAAKmnrB,QACvCnnrB,KAAKywe,cAAc,CAAC,YAExBzwe,KAAKgl4B,YAAc,GACnBhl4B,KAAKotsB,WAAW3tO,EAAKz/d,KAAKyqB,MAAM,GAAG+5S,QAAS,SAAU,GAClDxkU,KAAKuo4B,YAAcvo4B,KAAK0+c,cACxB+gB,EAAIt7d,UAAU0C,OAAO++3B,IAE7B,CACAxhQ,GAASpkoB,KAAK6n4B,OAAQ,CAAE,OAAU7n4B,KAAKgrB,UAAY,MACvD,MAEIo5mB,GAASpkoB,KAAK6n4B,OAAQ,CAAE,OAAU,QAvDtC,CAyDJ,EACAN,EAAIhp4B,UAAUsrf,UAAY,SAAUpqB,GAChC,IAAIp1b,EAAK1lC,OAAOhC,iBAAiB88d,GACjC,OAAOA,EAAIz4I,aAAe7kV,WAAWkoC,EAAGyyC,iBAAiB,gBAAkB36E,WAAWkoC,EAAGyyC,iBAAiB,mBACtG36E,WAAWkoC,EAAGyyC,iBAAiB,eAAiB36E,WAAWkoC,EAAGyyC,iBAAiB,iBACvF,EACAyqzB,EAAIhp4B,UAAU8t4B,gBAAkB,WAC5B,IAAIa,EAAYlt4B,KAAKup4B,eACjBgC,EAAM163B,GAAO,IAAM413B,IAAc,IAAMb,IAAYsH,GACvD,IAAIzxa,GAAM8va,GAAV,CAGKvr4B,KAAKmt4B,iBAQDD,GACLA,EAAU/o4B,UAAU0C,OAAOsg4B,MARvBoE,EAAIpn4B,UAAUC,SAASui4B,OAAkB3m4B,KAAKoo4B,QAAQjk4B,UAAUC,SAASi03B,MACzEr43B,KAAKoo4B,QAAQjk4B,UAAU2C,IAAIux3B,KAE3B6U,IAAcA,EAAU/o4B,UAAUC,SAAS+i4B,MAC3C+F,EAAU/o4B,UAAU2C,IAAIqg4B,MAMhC,IAAIpqyB,EAAO+jY,GAAQyqa,EAAK,IAAM/F,KAC9B,GAAIxl4B,KAAKy5D,UAAYsjC,EAArB,CAGA/8F,KAAKgo4B,QAAUn33B,GAAO,IAAM213B,IAAc0G,GAC1C,IAAItp3B,EAAM/S,GAAO,IAAMu13B,IAAe8G,GAClCtX,EAAY/k3B,GAAO,IAAM213B,IAAe,KAAOxm4B,KAAKmp4B,YAAa+D,GACrE,GAAIlt4B,KAAKqoF,aAAc,CACnB+7iB,GAASxgnB,EAAK,CAAE,KAAQ,GAAI,MAAS,KAGjCwgnB,GAASxgnB,EADI,KADD63c,GAAMm6Z,GAAc513B,KAAKgo4B,QAAQhhjB,aAAe4uiB,EAAU5uiB,cAExD,CAAE,IAAOukjB,EAAIh1b,UAAY,KAAM,OAAUg1b,EAAIvkjB,aAAe,MAG5D,CAAE,IAAO,EAAG,OAAU,GAE5C,KACK,CACD,GAA0B,aAAtBhnV,KAAKkhW,aAELkjS,GAASxgnB,EAAK,CAAE,KADqB,WAAzB5jB,KAAKgp4B,gBAA+BuC,EAAIh1b,UAAYg1b,EAAIvkjB,aAAeukjB,EAAIh1b,WACxD,KAAM,OAAU,UAG/C6tL,GAASxgnB,EAAK,CAAE,IAAO,GAAI,OAAU,KAEzC,IAAIwp3B,EAAW3xa,GAAMm6Z,GAAc513B,KAAKgo4B,QAAQ14iB,YAAcsmiB,EAAUtmiB,YAEpE80S,GAASxgnB,EADG,IAAZwp3B,EACc,CAAE,KAAQ7B,EAAIpvxB,WAAa,KAAM,MAASixxB,GAAW7B,EAAIpvxB,WAAaovxB,EAAIj8iB,aAAe,MAGzF,CAAE,KAAQ,OAAQ,MAAS,QAEjD,CACKmsI,GAAMz7d,KAAKoo4B,UAAamD,EAAIpn4B,UAAUC,SAASui4B,MAChD3m4B,KAAKoo4B,QAAQjk4B,UAAU0C,OAAOwx3B,IA/BlC,CAfA,CAgDJ,EACAkP,EAAIhp4B,UAAU87X,UAAY,SAAUv7X,EAAOuu4B,EAAcp5O,QAChC,IAAjBo5O,IAA2BA,GAAe,QACzB,IAAjBp5O,IAA2BA,GAAe,GAC9Cj0pB,KAAKio4B,OAASxna,GAAU,IAAMgma,IAAazm4B,KAAKup4B,gBAChD,IAAIgC,EAAMvr4B,KAAKio4B,OAAOnp4B,GACtB,KAAIA,EAAQ,GAAKwF,MAAMxF,IAAiC,IAAvBkB,KAAKio4B,OAAOnq4B,SAAiB29d,GAAM8va,IAAQA,EAAIpn4B,UAAUC,SAASkt3B,MAWnG,GARIxy3B,GAAS,IAAMuu4B,IACfrt4B,KAAKshe,wBAAyB,EAC9Bthe,KAAKiie,cAAc,CAAEvjB,aAAc5/c,IAAS,GAC5CkB,KAAKshe,wBAAyB,EACzBthe,KAAK0hrB,YACN1hrB,KAAKsie,kBAGTipa,EAAIpn4B,UAAUC,SAASwh4B,KACvB5l4B,KAAKqs4B,sBADT,CAIKrs4B,KAAK+hsB,YACN1qoB,GAAWk00B,EAAIzkjB,kBAAmB,CAAE,gBAAiB4+iB,IAAc1l4B,KAAKo8lB,MAAQ,IAAMt9lB,IAE1F,IAAIgX,EAAKy13B,EAAIz13B,GACb9V,KAAKgr4B,oBACLO,EAAIpn4B,UAAU2C,IAAI8+3B,KAClB2F,EAAIzkjB,kBAAkBl+U,aAAa,gBAAiB,QACpD,IAAIwid,EAAKhpd,OAAOpC,KAAKgs4B,SAASl23B,IAI9B,GAHI2ld,GAAMz7d,KAAK6r4B,iBACX7r4B,KAAK6r4B,cAAgBnG,IAAc1l4B,KAAKo8lB,MAAQ,IAAMhxI,GAEtDprd,KAAK+hsB,YACL,GAAIlxrB,GAAO,IAAM603B,IAAa1l4B,KAAKy5D,SAASnzB,SAASxoC,OAAS,EAAG,CAC7D,IAAIwv4B,EAAQtt4B,KAAKigqB,QAAQpvpB,GAAO,IAAM603B,IAAa1l4B,KAAKy5D,SAASnzB,SAAUo/1B,IAAc1l4B,KAAKo8lB,MAAQ,IAAMhxI,GACvGqQ,GAAM6xa,IACPA,EAAMnp4B,UAAU2C,IAAI8+3B,KAExB5l4B,KAAK4r4B,iBAAiB913B,EAAI9V,KAAK+9zB,gBACnC,MAEC,CACD/9zB,KAAK6n4B,OAASh33B,GAAO,aAAyB603B,IAAa1l4B,KAAKy5D,SAChE,IAAI4b,EAAOr1E,KAAK+r4B,cAAc/r4B,KAAK6n4B,OAAQ7n4B,KAAKgs4B,SAASl23B,IACzD,GAAI2ld,GAAMpmZ,GAAO,CACbr1E,KAAK6n4B,OAAOtw3B,YAAYvX,KAAKg+B,cAAc,MAAO,CAC9CloB,GAAI4v3B,IAAc1l4B,KAAKo8lB,MAAQ,IAAMp8lB,KAAKgs4B,SAASl23B,GAAK5J,UAAW+q3B,IAAW,IAAM2O,IACpFlz1B,MAAO,CAAEk/S,KAAM,WAAY,kBAAmBqliB,IAAWj33B,KAAKo8lB,MAAQ,IAAMp8lB,KAAKgs4B,SAASl23B,OAE9F,IAAIy33B,EAASvt4B,KAAK+r4B,cAAc/r4B,KAAK6n4B,OAAQ7n4B,KAAKgs4B,SAASl23B,IACvDoiY,EAAYh4Y,MAAM3B,UAAUmG,QAAQ3E,KAAKC,KAAK2o4B,eAAgB7y3B,GAClE9V,KAAKotsB,WAAWmgM,EAAQvt4B,KAAKyqB,MAAMytX,GAAW1zE,QAAS,SAAU0zE,EACrE,MAEI7iU,EAAKlxE,UAAU2C,IAAI8+3B,KAEvB5l4B,KAAK4r4B,iBAAiB913B,EAAI9V,KAAK+9zB,gBACnC,CAGA,GAFA/9zB,KAAKqs4B,kBACLrs4B,KAAKwt4B,sBAAsBjC,IACtBvr4B,KAAK0hrB,aAAe2rN,EAAc,CACnC,IAAItoM,EAAW,CACXx9mB,aAAcvnF,KAAKmo4B,SACnB9zH,cAAer0wB,KAAKuo4B,UACpB7pb,aAAc6sb,EACd50b,cAAe73c,EACf2u4B,gBAAiB583B,GAAO,IAAM603B,IAAc1l4B,KAAKo8lB,MAAQ,IAAMp8lB,KAAK0t4B,YAAa1t4B,KAAKwkU,SACtFkkkB,SAAU1o4B,KAAK0o4B,SACfz0O,aAAcA,EACdM,cAAc,GAElBv0pB,KAAKo/d,QAAQ,WAAY2lO,GAAU,SAAU4oM,GACpCA,EAAgBp5O,cACjBg3O,EAAIzkjB,kBAAkBl4E,OAE9B,GACJ,CAxDA,CAyDJ,EACA24nB,EAAIhp4B,UAAUsvY,SAAW,SAAUpjX,GAC/BzqB,KAAKkq4B,WAAY,EACjBlq4B,KAAKgo4B,QAAUn33B,GAAO,IAAM213B,IAAcxm4B,KAAKup4B,gBAC/Cvp4B,KAAK2n4B,MAAMl92B,MAAQzqB,KAAK2p4B,YAAYl/2B,EAAO,GAC3CzqB,KAAK2n4B,MAAMtla,WACXrie,KAAKkq4B,WAAY,CACrB,EACA3C,EAAIhp4B,UAAUq3T,OAAS,SAAU92T,GAC7BkB,KAAK2n4B,MAAM55Z,UAAYjve,EACvBkB,KAAK2n4B,MAAMtla,WACXrie,KAAK0mf,YAAY1mf,KAAKy5D,QAAS43zB,IAASvy3B,GACxCkB,KAAK8o4B,qBACT,EACAvB,EAAIhp4B,UAAUuq4B,oBAAsB,WAC3Brta,GAAMz7d,KAAKoo4B,UACZpo4B,KAAKoo4B,QAAQjk4B,UAAU2C,IAAIux3B,KAE/Br43B,KAAKqs4B,iBACT,EACA9E,EAAIhp4B,UAAU87pB,UAAY,SAAUh1pB,GAChC,IAAI6i4B,EAAQr33B,GAAO,yBAA0B7Q,KAAK+n4B,QAClD,GAAIG,GAASA,EAAM/j4B,UAAUC,SAAS,iBAAkB,CACpD,IAAIwp4B,EAAY1F,GAASA,EAAMjla,cAAc,GAC7C2qa,EAASx43B,SAAShI,EAA8B,SAAzBpN,KAAKgp4B,iBAA8Bhp4B,KAAKy5D,QAAQt1D,UAAUC,SAASit3B,KAAY,OAAS,QAC/Guc,EAASvra,WACTura,EAASpw3B,KAAKnY,EAClB,CACJ,EACAki4B,EAAIhp4B,UAAUsv4B,cAAgB,WAC1B,IAAIjtrB,EAAQ5gN,KACZ,GAAIA,KAAKwimB,iBAAkB,CACvB,IAAIyoS,EAAYjr4B,KAAKy5D,QAAQtkD,cAAc,IAAMsw3B,KACjD,GAAIwF,EACY/q4B,MAAM3B,UAAUqC,MAAMb,KAAKkr4B,EAAUx92B,iBAAiB,IAAMg52B,MAClE1o4B,SAAQ,SAAU07D,GACpBmnJ,EAAMktrB,eAAer00B,EACzB,GAER,CACJ,EACA8t0B,EAAIhp4B,UAAUu7e,WAAa,WACvB95e,KAAK6t4B,gBACLlp4B,OAAO0I,iBAAiB,SAAUrN,KAAK843B,eACvCp6Z,GAAa53d,IAAI9G,KAAKy5D,QAAS,YAAaz5D,KAAK+t4B,aAAc/t4B,MAC/D0+d,GAAa53d,IAAI9G,KAAKy5D,QAAS,UAAWz5D,KAAKgu4B,aAAchu4B,MACxDy7d,GAAMz7d,KAAK6n4B,UACZ7n4B,KAAK4xqB,YAAc,IAAI51L,GAAMh8e,KAAK6n4B,OAAQ,CAAE/hC,MAAO9l2B,KAAKsy3B,aAAa/k3B,KAAKvN,SAE9EA,KAAK+53B,UAAY,IAAI3/Y,GAAep6e,KAAKy5D,QAAS,CAAEuhb,UAAWh7e,KAAKo3X,WAAW7pX,KAAKvN,MAAO06e,WAAY16e,KAAK06e,aAC5G16e,KAAKiu4B,aAAe,IAAI7zZ,GAAep6e,KAAKy5D,QAAS,CACjDuhb,UAAWh7e,KAAKo3X,WAAW7pX,KAAKvN,MAChC06e,WAAY,CAAExtO,UAAW,YAAaqsE,IAAK,MAAOqwa,SAAU,aAC5D9kf,UAAW,WAEnB,EACAyioB,EAAIhp4B,UAAUg/qB,aAAe,WACpB9hN,GAAMz7d,KAAK+53B,YACZ/53B,KAAK+53B,UAAUt2zB,UAEdg4Z,GAAMz7d,KAAKiu4B,eACZju4B,KAAKiu4B,aAAaxq0B,UAEjBg4Z,GAAMz7d,KAAK6n4B,SAAYpsa,GAAMz7d,KAAK4xqB,eACnC5xqB,KAAK4xqB,YAAYnumB,UACjBzjE,KAAK4xqB,YAAc,MAEvBjtqB,OAAOk0D,oBAAoB,SAAU74D,KAAK843B,eAC1Cp6Z,GAAa73d,OAAO7G,KAAKy5D,QAAS,YAAaz5D,KAAK+t4B,cACpDrva,GAAa73d,OAAO7G,KAAKy5D,QAAS,UAAWz5D,KAAKgu4B,cAClDhu4B,KAAKy5D,QAAQt1D,UAAU0C,OAAOwq3B,KAC9Brx3B,KAAKy5D,QAAQt1D,UAAU0C,OAAOg/3B,IAClC,EACA0B,EAAIhp4B,UAAUsyf,aAAe,SAAUzlb,GACnCprE,KAAKy5D,QAAQt1D,UAAU0C,OAAOg/3B,KAC9B,IAAI0F,EAAMng0B,EAAKsmC,cAAcvvF,OACzBmq3B,EAAYxra,GAAQyqa,EAAK,IAAM9E,KAC/B8F,EAAWvs4B,KAAKws4B,YAAYF,GAC5Bf,EAAIpn4B,UAAUC,SAAS6h4B,KACvBjm4B,KAAKku4B,UAAU3B,GAEVvs4B,KAAKqoF,cAAgBy4Y,GAAQyqa,EAAK,cACvCvr4B,KAAKq6pB,UAAUr6pB,KAAKwd,OAGpBxd,KAAKyo4B,SAAU,EACVhta,GAAM6wa,IAAeC,IAAavs4B,KAAK0+c,cACxC1+c,KAAKys4B,UAAUF,EAAUnh0B,EAAKsmC,eAAe,GAGzD,EACA61xB,EAAIhp4B,UAAU+z3B,aAAe,SAAUp13B,GACnC,KAAIA,EAAEsgf,SAAW,GAAK/hB,GAAMv+d,EAAEw0G,cAAcjiE,iBAA5C,CAGIzvC,KAAKwo4B,UACLxo4B,KAAKy5D,QAAQ7wD,aAAa,aAAc,QAE5C,IAAIul4B,EAAYnu4B,KAAKy5D,QAAQtkD,cAAc,uBAC3C,GAAIg53B,EACAA,EAAU560B,gBAAgB,kBAD9B,CAKA,GADAvzD,KAAK0o4B,UAAW,EACS,UAArBxr4B,EAAEghf,gBAAoD,IAAtBl+e,KAAK0+c,cACrC,IAAK,IAAIn0c,EAAIvK,KAAK0+c,aAAe,EAAGn0c,GAAK,EAAGA,IACxC,IAAKvK,KAAKio4B,OAAO193B,GAAGpG,UAAUC,SAASi03B,KAAa,CAChDr43B,KAAKys4B,UAAUli4B,EAAG,MAAM,GACxB,KACJ,OAGH,GAAyB,SAArBrN,EAAEghf,gBAA8Bl+e,KAAK0+c,eAAiB+hB,GAAU,IAAMgma,IAAazm4B,KAAKy5D,SAAS37D,OAAS,EAC/G,IAAK,IAAIX,EAAI6C,KAAK0+c,aAAe,EAAGvhd,EAAI6C,KAAKio4B,OAAOnq4B,OAAQX,IACxD,IAAK6C,KAAKio4B,OAAO9q4B,GAAGgH,UAAUC,SAASi03B,KAAa,CAChDr43B,KAAKys4B,UAAUtv4B,EAAG,MAAM,GACxB,KACJ,CAGR6C,KAAK0o4B,UAAW,CAlBhB,CARA,CA2BJ,EACAnB,EAAIhp4B,UAAUyv4B,aAAe,SAAU9w4B,IAChB,KAAdA,EAAE4iS,SAA8B,KAAZ5iS,EAAE0oC,OAAgC,KAAd1oC,EAAE4iS,SAA8B,KAAZ5iS,EAAE0oC,SAE1D61b,GADUqF,GAAQ5je,EAAEilB,OAAQ,IAAMsj3B,OAEnCvo4B,EAAEijE,iBAGd,EACAon0B,EAAIhp4B,UAAU64X,WAAa,SAAUl6X,GACjC,IAAI8C,KAAKy5D,QAAQt1D,UAAUC,SAASkt3B,KAApC,CAGAtx3B,KAAKy5D,QAAQt1D,UAAU2C,IAAI++3B,KAC3B,IAAI0F,EAAMru4B,EAAEilB,OACR8o3B,EAAYjr4B,KAAKup4B,eACjB6E,EAASv93B,GAAO,IAAM+03B,IAAYqF,GACtCjr4B,KAAK663B,OAAShq3B,GAAO,IAAM613B,IAAYuE,GAClCxva,GAAMz7d,KAAK663B,UACZ763B,KAAKu53B,OAASv53B,KAAK663B,OAAO53Z,cAAc,IAE5C,IAAI5tZ,EAAOyrZ,GAAQvrc,SAAS0+P,cAAe,IAAMwymB,KAC7C6F,EAAYxra,GAAQyqa,EAAK,IAAM9E,KACnC,OAAQvp4B,EAAE8kN,QACN,IAAK,QACL,IAAK,QACD,GAAIuprB,EAAIrn4B,cAAcC,UAAUC,SAASkt3B,KACrC,OAEJ,GAAiB,UAAbp03B,EAAE8kN,QAAsBuprB,EAAIpn4B,UAAUC,SAAS,aAAc,CAC7DpE,KAAKq6pB,UAAUr6pB,KAAKwd,MACpB,KACJ,CACAxd,KAAKg2qB,WAAWu1N,GAChB,MACJ,IAAK,MACL,IAAK,WACGA,EAAIpn4B,UAAUC,SAASii4B,OAC+C,IAAnEvla,GAAQyqa,EAAK,IAAM9E,KAAati4B,UAAUC,SAASwh4B,MACtD2F,EAAI3i4B,aAAa,WAAY2i4B,EAAIn73B,aAAa,kBAE9CpQ,KAAKu53B,QAAUtyiB,GAAUjnV,KAAKu53B,OAAO9/zB,UACrCz5D,KAAKu53B,OAAOh31B,KAAKviC,KAAKuiC,MAErBk5b,GAAM2ya,IAAgE,OAArDA,EAAO9n2B,SAAS+uC,KAAK,GAAGjlE,aAAa,aACvDg+3B,EAAO9n2B,SAAS+uC,KAAK,GAAGzsE,aAAa,WAAY,KAErD,MACJ,IAAK,WACL,IAAK,YACI6yd,GAAMpmZ,IACPr1E,KAAKwt4B,sBAAsBn4zB,GAE/B,MACJ,IAAK,YACDn4E,EAAEijE,kBACGs7Z,GAAMz7d,KAAK663B,SAAW763B,KAAK663B,OAAO123B,UAAUC,SAjwC3C,kBAkwCFpE,KAAKu53B,OAAO/72B,KAAKxd,KAAKwd,MAE1B,MACJ,IAAK,SACD,IAA6B,IAAzBxd,KAAK00b,kBAA6B+mC,GAAM6wa,GAAY,CACpD,IAAI+B,EAAS/B,EAAUpz2B,aAClBuic,GAAM4ya,IAAWA,EAAOlq4B,UAAUC,SAASqi4B,MAC5C4H,EAAOvnjB,kBAAkBl4E,QAE7B5uQ,KAAKku4B,UAAUlu4B,KAAKws4B,YAAYF,GACpC,CACAts4B,KAAKqs4B,kBAxDb,CA2DJ,EACA9E,EAAIhp4B,UAAUiv4B,sBAAwB,SAAUrr3B,GAC5C,IAAI+m3B,EAASr43B,GAAO,IAAM7Q,KAAKmp4B,YAAanp4B,KAAKgo4B,SACjD,IAAKho4B,KAAKqoF,eAAiBozY,GAAMyta,GAAjC,CACI,IAAIoF,EAASz93B,GAAO,iBAAkB7Q,KAAKgo4B,SACvCuG,EAAWD,EAAO9yyB,WAClBgzyB,EAASD,EAAWD,EAAOh/iB,YAC3Bm/iB,EAAWts3B,EAAOg6F,WAClB2hxB,EAAW372B,EAAOmtU,YAClBo/iB,EAASvs3B,EAAOg6F,WAAah6F,EAAOmtU,YACxC,GAAKi/iB,EAAWE,GAAcD,EAASE,EAAS,CAC5C,IAAIC,EAAeH,EAASC,EAC5BH,EAAO9yyB,WAAa+yyB,GAAYzQ,EAAW6Q,EAC/C,MAEI,GAAKJ,EAAWE,GAAcD,EAASE,EAAS,CACxCC,EAAeD,EAASH,EAC5BD,EAAO9yyB,WAAa+yyB,GAAYzQ,EAAW6Q,EAC/C,CAKR,CACJ,EACApH,EAAIhp4B,UAAU6r4B,gBAAkB,SAAUt03B,GACtC,OAAO7U,SAAS6U,EAAGtT,UAAUsT,EAAG23H,YAAY,KAAO,GAAI,GAC3D,EACA85vB,EAAIhp4B,UAAUwv4B,aAAe,SAAU7w4B,GACnC,IAAIqu4B,EAAMru4B,EAAEilB,QACPs5c,GAAM8va,EAAIpn4B,YAAcon4B,EAAIpn4B,UAAUC,SAAS6h4B,MAChDsF,EAAI3i4B,aAAa,QAAS,IAAI0ye,GAAK,MAAO,CAAEszZ,iBAAkB5u4B,KAAKsgB,OAAStgB,KAAKwY,QAAQqje,YAAY,oBAE7G,EACA0rZ,EAAIhp4B,UAAUsw4B,0BAA4B,SAAUjna,EAASC,GACzD,IAAIjnR,EAAQ5gN,KACZ,GAAM4ne,EAAQn9c,iBAAiBvqB,OAAS2ne,EAAQp9c,iBAAiBvqB,MA2F7D,GADAF,KAAKi9N,UAAY,EACbw+P,GAAMz7d,KAAK2n4B,OACX3n4B,KAAKgq4B,oBAEJ,EACGhq4B,KAAKwnf,SAAWxnf,KAAK+iQ,YACrB/iQ,KAAKywe,gBAETzwe,KAAK6tY,SAAS+5F,EAAQn9c,OAClBzqB,KAAKgl4B,YAAYln4B,OAAS,GAC1BkC,KAAK4n4B,qBAET5n4B,KAAKgl4B,YAAc,GAEnB,IADA,IAAI1hO,EAAgBzypB,GAAO,aAAyB603B,IAAa1l4B,KAAKy5D,SAC/D6pmB,EAAcx8U,mBACjBu5I,GAAOijM,EAAcx8U,mBAEzB9mV,KAAK6Q,OAAO7Q,KAAK0+c,cACjB1+c,KAAKyn4B,eAAiB,GACtBzn4B,KAAK6t4B,eACT,KA9GqE,CAErE,IADA,IAAIiB,EAAc1x4B,OAAOC,KAAKuqe,EAAQn9c,OAC7BttB,EAAI,EAAGA,EAAI2x4B,EAAYhx4B,OAAQX,IAGpC,IAFA,IAAIwvB,EAAQ1rB,SAAS7D,OAAOC,KAAKuqe,EAAQn9c,OAAOttB,GAAI,IAChDs/H,EAAar/H,OAAOC,KAAKuqe,EAAQn9c,MAAMkC,IAClC5mB,EAAI,EAAGA,EAAI02H,EAAW3+H,OAAQiI,IAAK,CACxC,IAAI69d,EAASxme,OAAOyqe,EAAQp9c,MAAMkC,IAAQ8vG,EAAW12H,IACjD6hf,EAASxqf,OAAOwqe,EAAQn9c,MAAMkC,IAAQ8vG,EAAW12H,IACjDmwuB,EAAMl2uB,KAAKy5D,QAAQhsC,iBAAiB,IAAMg52B,KAAa952B,GACvDurX,OAAY,EAEZA,EADAg+V,IAAQz6Q,GAAMy6Q,EAAIpguB,KAAkB,KAAXoguB,EAAIpguB,GACjB9V,KAAKoq4B,gBAAgBl0J,EAAIpguB,IAGzB6W,EAEhB,IAAIm92B,EAAUj53B,GAAO,IAAM213B,IAAe,KAAOvP,IAAWj33B,KAAKo8lB,MAAQ,IAAMlkN,EAAWl4Y,KAAKy5D,SAC3Fs10B,EAAUl+3B,GAAO,IAAM603B,IAAc,KAAOA,IAAc1l4B,KAAKo8lB,MAAQ,IAAMlkN,EAAWl4Y,KAAKy5D,SACjG,GAAsB,WAAlBgjE,EAAW12H,IAAqC,mBAAlB02H,EAAW12H,GAAyB,CAClE,IAAI4mC,EAAQ8ub,GAAMz7d,KAAKyqB,MAAMkC,GAAOsvG,SAChCw/V,GAAMz7d,KAAKyqB,MAAMkC,GAAOsvG,OAAOmhhB,SAAY,GAAKp9oB,KAAKyqB,MAAMkC,GAAOsvG,OAAOmhhB,QACzE81N,EAAUlz2B,KAAKyqB,MAAMkC,GAAO0xnB,gBAAkBr+oB,KAAKyqB,MAAMkC,GAAOsvG,OAAO5tH,KAI3E,GAHsB,mBAAlBouH,EAAW12H,IACX/F,KAAKgv4B,iBAAiBlF,EAASrtwB,EAAW12H,GAAI0g4B,KAEjC,KAAZvzB,GAA6B,KAATvm0B,EACrB3sC,KAAKku4B,UAAUvh3B,OAEd,CACD3sB,KAAKwq4B,KAAOt0J,EAAIpguB,GAChB,IAAI2+F,EAAM,GACVA,EAAI92G,KAAKqC,KAAKyqB,MAAMkC,IACpB3sB,KAAKyqB,MAAMxmB,OAAO0oB,EAAO,GACzB3sB,KAAK2o4B,eAAe1k4B,OAAO0oB,EAAO,GAClC3sB,KAAK2n4B,MAAMl92B,MAAMxmB,OAAO0oB,EAAO,GAC/B,IAAIsi3B,EAAcnF,EAAQ3l4B,UAAUC,SAASi03B,KAC7Ch4Z,GAAOypa,GACP9p4B,KAAKkq4B,WAAY,EACjBlq4B,KAAKkv4B,OAAOz6xB,EAAK9nF,GACbsi3B,GACAjv4B,KAAKmv4B,QAAQxi3B,GAEjB3sB,KAAKkq4B,WAAY,CACrB,CACJ,CACA,GAAsB,YAAlBztwB,EAAW12H,KAAqB01d,GAAMsza,GAEtC,IAD+B,kBAAXnnZ,GAAuBnsB,GAAMmsB,EAAOjpe,cAC3B,MAAdipe,EAAO,IAA4B,MAAdA,EAAO,KAAeA,EAAO9pf,OAAQ,CACrE,IAAIm6f,EAAS1ie,SAASpgB,cAAcyye,GACpCmnZ,EAAQx33B,YAAY0gf,GACpBA,EAAO5zf,MAAMqmB,QAAU,EAC3B,KACoB,KAAXk9d,GAA+B,MAAdhkB,EAAO,IAC7Bruc,SAASwK,KAAKxoB,YAAYvX,KAAKy5D,QAAQtkD,cAAcyud,IAASv/d,MAAMqmB,QAAU,OAC9Eqk3B,EAAQpw3B,UAAYipe,GAEf5nf,KAAK+iQ,WAAa/iQ,KAAKwnf,SAC5Bxnf,KAAKgv4B,iBAAiBD,EAAStywB,EAAW12H,GAAIkx3B,KAC9C8X,EAAQpw3B,UAAY,GACpB3e,KAAK23f,gBAAgBo3Y,EAASnnZ,EAAQj7d,IAEf,oBAAXi7d,IACZmnZ,EAAQpw3B,UAAYipe,GAGN,aAAlBnrX,EAAW12H,KACN01d,GAAMqua,KACPA,EAAQ3l4B,UAAU0C,OAAO+8d,GACzBkma,EAAQ3l4B,UAAU2C,IAAI8gf,IAErBnsB,GAAMsza,KACPA,EAAQ5q4B,UAAU0C,OAAO+8d,GACzBmra,EAAQ5q4B,UAAU2C,IAAI8gf,KAGR,aAAlBnrX,EAAW12H,IACX/F,KAAKov4B,UAAUzi3B,GAAoB,IAAXi7d,GAEN,YAAlBnrX,EAAW12H,IACX/F,KAAKmv4B,QAAQxi3B,GAAoB,IAAXi7d,EAE9B,CAEA5nf,KAAKwnf,SAAWxnf,KAAK65f,SAAW75f,KAAK65f,QAAQ/7f,OAAS,GACtDkC,KAAKwwe,sBAAqB,WACtB5vR,EAAM8mrB,wBACV,GAER,CAwBJ,EACAH,EAAIhp4B,UAAUyw4B,iBAAmB,SAAUhK,EAAat0Z,EAAcxke,GAClE,GAAKlM,KAAKqv4B,eAGV,GAAIrv4B,KAAKivrB,oBAAsBjvrB,KAAKivrB,mBAAmBv+M,GAEnD,IADA,IAAI8/N,EAAsBxwsB,KAAKivrB,mBACtBtiqB,EAAQ,EAAGA,EAAQ6jrB,EAAoB9/N,GAAc5ye,OAAQ6uB,IAAS,CAG3E,IAAKqkJ,GADDi0tB,EAAcnka,GADG0vO,EAAoB9/N,GAAc/jd,GAAO+jrB,UAAU,GAC9B,IAAMxksB,KACT+43B,IAAgBD,EAAa,CAChEhl4B,KAAKywe,cAAc,CAACC,GAAe,CAAC8/N,EAAoB9/N,GAAc/jd,KACtE,KACJ,CACJ,MAEC,GAAI3sB,KAAK65f,SAAW75f,KAAK65f,QAAQ/7f,OAAS,EAC3C,KAAI+7f,EAAU75f,KAAK65f,QACnB,IAASlte,EAAQ,EAAGA,EAAQkte,EAAQ/7f,OAAQ6uB,IAAS,CACjD,IACIs42B,EACJ,IAAKj0tB,GADDi0tB,EAAcnka,GADD+4B,EAAQlte,GACY4vQ,cAAe,IAAMrwR,KACnB+43B,IAAgBD,EAAa,CAChEhl4B,KAAKywe,cAAc,CAACC,GAAe/jd,GACnC,KACJ,CACJ,CAR0B,CAUlC,EACA462B,EAAIhp4B,UAAUuv4B,eAAiB,SAAU3r3B,GACrC,IAAIy+L,EAAQ5gN,KACR0irB,EAAU,IAAIlxM,GAAUrvd,EAAQ,CAChC0yd,SAAU70e,KAAK60e,SACf19F,WAAY,IAAMsvf,IAClB5k4B,OAAO,EACPs0e,OAAQn2e,KAAKm2e,OAAO5oe,KAAKvN,MACzBy0e,UAAWz0e,KAAKsv4B,cAAc/h4B,KAAKvN,MACnCwgE,KAAM,SAAUtjE,GACZ,IACIytwB,EACA4kI,EAFAC,EAAY5urB,EAAM4rrB,YAAY5rrB,EAAMynrB,UAGpCoH,EAAW,CACXC,YAAa9urB,EAAMynrB,SACnBnv0B,MAAOh8D,EAAEg8D,MACT/2C,OAAQjlB,EAAEilB,OACVwt3B,YAAazy4B,EAAEilB,OAAO2+c,QAAQ,IAAM2la,KACpCmJ,cAAehvrB,EAAM6mG,aACrB96R,MAAO6i3B,GAEX,GAAK/za,GAAMv+d,EAAEilB,OAAO2+c,QAAQ,IAAM0ka,OAActo4B,EAAEilB,OAAO2+c,QAAQ,IAAM0ka,KAAS9nQ,YAAY98a,EAAMnnJ,UAC9FmnJ,EAAMi0R,WAAa,IAAM4wZ,IAGxB,CAgBD,GAfMvo4B,EAAEilB,OAAO2+c,QAAQlgR,EAAMi0R,WAAqC,UAAvBj0R,EAAMsgJ,cAS7C3rU,SAASwK,KAAK17B,MAAMmsH,OAAS,GAC7BowF,EAAMynrB,SAASlz3B,cAAc,IAAMkx3B,KAAUhi4B,MAAMotI,WAAa,SAC5DmvE,EAAM6mG,aAAatjT,UAAUC,SAASi03B,MACtC3l0B,GAAY,CAACkuJ,EAAM6mG,cAAe4wkB,OAXtC9i2B,SAASwK,KAAK17B,MAAMmsH,OAAS,cAC7B/9D,GAAS,CAACmuJ,EAAM6mG,cAAe4wkB,KAC3Bz3qB,EAAMynrB,SAASlk4B,UAAUC,SAASi03B,MAClC3l0B,GAAY,CAACkuJ,EAAMynrB,UAAWhQ,KAElCz3qB,EAAMynrB,SAASlz3B,cAAc,IAAMkx3B,KAAUhi4B,MAAMotI,WAAa,WASzC,eAAvBmvE,EAAMsgJ,eAAkCu6H,GAAM76Q,EAAMnnJ,QAAQtkD,cAAc,eAAgB,CAC1F,IAAI063B,EAAoBjvrB,EAAMnnJ,QAAQtkD,cAAc,uBAChD263B,EAAmBlvrB,EAAMnnJ,QAAQtkD,cAAc,sBAC/C463B,EAAanvrB,EAAMnnJ,QAAQtkD,cAAc,mBACxCsmd,GAAMo0a,IAAsB3u4B,KAAK4D,IAAK+q4B,EAAkBvgjB,YAAc,EACvEugjB,EAAkB1zxB,YAAcykG,EAAM6mG,aAAatrM,WAAaykG,EAAM6mG,aAAa6nC,cACnFygjB,EAAWv0yB,YAAc,KAExBigY,GAAMq0a,IAAqB5u4B,KAAK4D,IAAKgr4B,EAAiB3zxB,WAAa2zxB,EAAiBxgjB,YACrF1uI,EAAM6mG,aAAatrM,YAAe2zxB,EAAiBxgjB,YAAc,IACjEygjB,EAAWv0yB,YAAc,GAEjC,CACAolH,EAAM6mG,aAAapjT,MAAM07T,cAAgB,OACzCwvkB,EAAWzua,GAAQ5je,EAAEilB,OAAQ,IAAMsk3B,IAAc,gBACjD,IAAIuJ,EAAqB,EACE,eAAvBpvrB,EAAMsgJ,cAAkCu6H,GAAM76Q,EAAMnnJ,QAAQtkD,cAAc,iBAC1E663B,EAAqBpvrB,EAAMnnJ,QAAQtkD,cAAc,sBAAsBm6U,aAE3D,MAAZigjB,IAAqBA,EAASU,WAAWrvrB,EAAMynrB,WAC/CkH,EAASzua,QAAQ,IAAM0ka,KAASyK,WAAWrvrB,EAAMynrB,SAASvna,QAAQ,IAAM0ka,SACxE76H,EAAY/pjB,EAAM4rrB,YAAY+C,IACdC,GACXtu4B,KAAK4D,IAAKyq4B,EAASpzxB,WAAaozxB,EAASjgjB,YACtC1uI,EAAM6mG,aAAatrM,YAAeozxB,EAASjgjB,YAAc,GAC7D1uI,EAAMsvrB,WAAWX,EAAUC,EAAW7kI,GAEtCA,EAAY6kI,GACXtu4B,KAAK4D,IAAIyq4B,EAASjgjB,YAAc,GAAKigjB,EAASpzxB,WAC3C6zxB,EAAsBpvrB,EAAM6mG,aAAatrM,WAAaykG,EAAM6mG,aAAa6nC,aAC7E1uI,EAAMsvrB,WAAWX,EAAUC,EAAW7kI,IAG9C/pjB,EAAMuvrB,aAAevvrB,EAAM4rrB,YAAY5rrB,EAAMynrB,UAC7CznrB,EAAMw+Q,QAAQ,WAAYqwa,EAC9B,MArDI7urB,EAAMw+Q,QAAQ,WAAYqwa,EAsDlC,EACAr3Z,SAAUp4e,KAAKow4B,aAAa7i4B,KAAKvN,QAErCA,KAAKyn4B,eAAe9p4B,KAAK+krB,EAC7B,EACA6kN,EAAIhp4B,UAAU43e,OAAS,SAAUj5e,GAc7B,OAbA8C,KAAKynT,aAAeznT,KAAKg+B,cAAc,OACnC9gC,EAAEu8D,UACFz5D,KAAKynT,aAAgBvqT,EAAEu8D,QAAQr8B,WAAU,GACzCq1B,GAAS,CAACzyD,KAAKynT,cAAe,uBAC1BznT,KAAKy5D,QAAQtkD,cAAc,IAAMsw3B,KAAYth4B,UAAUC,SAAS8h4B,MAChEzz0B,GAAS,CAACzyD,KAAKynT,cAAey+kB,KAElCxz0B,GAAY,CAAC1yD,KAAKynT,aAAatyS,cAAc,IAAMkx3B,MAAY,YAC1D5qa,GAAMz7d,KAAKynT,aAAatyS,cAAc,uBACvCtO,GAAO7G,KAAKynT,aAAatyS,cAAc,sBAE3CogB,SAASwK,KAAKxoB,YAAYvX,KAAKynT,eAE5BznT,KAAKynT,YAChB,EACA8/kB,EAAIhp4B,UAAU+w4B,cAAgB,SAAUpy4B,GACpC,IAAI0jN,EAAQ5gN,KACZA,KAAKso4B,cAAgBto4B,KAAKyqB,MAAM9oB,KAAI,SAAUZ,GAAK,OAAOA,CAAG,IAC7Df,KAAKqo4B,SAAWnr4B,EAAEu8D,QAClB,IAAIg20B,EAAW,CACXC,YAAaxy4B,EAAEu8D,QACfP,MAAOh8D,EAAEg8D,MACT/2C,OAAQjlB,EAAEilB,OACVwt3B,YAAa,KACbhj3B,MAAO3sB,KAAKws4B,YAAYxs4B,KAAKqo4B,UAC7BuH,cAAe5v4B,KAAKynT,aACpBq5B,QAAQ,GAEZ9gV,KAAKo/d,QAAQ,cAAeqwa,GAAU,SAAUY,GAC5C,GAAIA,EAAgBvvjB,OAAQ,CACxB,IAAI4hW,EAAUxlrB,EAAEu8D,QAAQwpa,cAAc,GACjCjyT,GAAkB0xgB,IACnBA,EAAQhvM,WAAWx2e,EAAEg8D,OAEzBmna,GAAOz/Q,EAAM6mG,aACjB,MAEI7mG,EAAMoqrB,oBACNv40B,GAAS,CAACmuJ,EAAMonrB,QAAQ7y3B,cAAc,IAAMix3B,MAAiB/N,KAC7Dz3qB,EAAMynrB,SAASlz3B,cAAc,IAAMkx3B,KAAUhi4B,MAAMotI,WAAa,QAExE,GACJ,EACA81vB,EAAIhp4B,UAAU2x4B,WAAa,SAAUX,EAAUe,EAAY3lI,GACvD,GAAI3qwB,KAAKyqB,MAAM3sB,OAAS,EAAG,CACvB,IAAIu3E,EAAOr1E,KAAKso4B,cAAcgI,GAC9Btw4B,KAAKso4B,cAAcrk4B,OAAOqs4B,EAAY,GACtCtw4B,KAAKso4B,cAAcrk4B,OAAO0mwB,EAAW,EAAGt1rB,EAC5C,CAIA,GAH0B,aAAtBr1E,KAAKkhW,cACLquiB,EAASx53B,WAAWE,aAAajW,KAAKqo4B,SAAUkH,EAASn6kB,oBAEzDk7kB,EAAa3lI,EACb,GAAM3qwB,KAAKqo4B,SAASnk4B,cAAe+r4B,WAAWV,EAASrr4B,eA0BnDlE,KAAKqo4B,SAASty3B,WAAWE,aAAajW,KAAKqo4B,SAAUkH,QAzBrD,GAA0B,aAAtBvv4B,KAAKkhW,aACL,GAAIquiB,EAASU,WAAWV,EAASrr4B,cAAcwwC,WAAY,CACvD,IAAI671B,EAAiBvw4B,KAAKqo4B,SAASty3B,WACnCw53B,EAASx53B,WAAWE,aAAajW,KAAKqo4B,SAAUkH,GAChDgB,EAAet63B,aAAas53B,EAASrr4B,cAAcwwC,UAAW671B,EAAenj3B,WAAW,GAC5F,MAEIptB,KAAKqo4B,SAASty3B,WAAWE,aAAcs53B,EAASrr4B,cAAcwwC,UAAY10C,KAAKqo4B,SAASnk4B,cAAckpB,WAAW,IACjHmi3B,EAASx53B,WAAWE,aAAajW,KAAKqo4B,SAAUkH,OAGnD,CACD,IAAIiB,EAAWjB,EAASrr4B,cAAewwC,UACvC,GAAI661B,EAASU,WAAWO,GAAU,CAC1BD,EAAiBvw4B,KAAKqo4B,SAASty3B,WACnCw53B,EAASx53B,WAAWE,aAAajW,KAAKqo4B,SAAUkH,GAChDgB,EAAet63B,aAAau63B,EAASD,EAAenj3B,WAAW,GACnE,MAEIptB,KAAKqo4B,SAASty3B,WAAWE,aAAcs53B,EAASrr4B,cAAewwC,UAAW10C,KAAKqo4B,SAASnk4B,cAAckpB,WAAW,IACjHmi3B,EAASx53B,WAAWE,aAAajW,KAAKqo4B,SAAUkH,EAExD,CAMJe,EAAa3lI,IACP3qwB,KAAKqo4B,SAASnk4B,cAAe+r4B,WAAWV,EAASrr4B,eAWnDlE,KAAKqo4B,SAASty3B,WAAWE,aAAajW,KAAKqo4B,SAAUkH,EAASn6kB,oBAVpC,aAAtBp1T,KAAKkhW,cACLlhW,KAAKqo4B,SAASnk4B,cAAcqT,YAAYg43B,EAASrr4B,cAAc4iV,mBAC/DyojB,EAASx53B,WAAWE,aAAajW,KAAKqo4B,SAAUkH,EAASr22B,eAGzDl5B,KAAKqo4B,SAASty3B,WAAWE,aAAcs53B,EAASrr4B,cAAewwC,UAAW10C,KAAKqo4B,SAASnk4B,cAAckpB,WAAW,IACjHmi3B,EAASx53B,WAAWE,aAAajW,KAAKqo4B,SAAUkH,IAOhE,EACAhI,EAAIhp4B,UAAU6x4B,aAAe,SAAUlz4B,GACnC,IAAI0jN,EAAQ5gN,KACZqge,GAAOrge,KAAKynT,cACZznT,KAAKynT,aAAe,KACpBznT,KAAKqo4B,SAASlz3B,cAAc,IAAMkx3B,KAAUhi4B,MAAMotI,WAAa,UAC/Dl8G,SAASwK,KAAK17B,MAAMmsH,OAAS,GAC7B,IAAIigxB,EAAe,CACff,YAAa1v4B,KAAKqo4B,SAClBnv0B,MAAOh8D,EAAEg8D,MACT/2C,OAAQjlB,EAAEilB,OACVwt3B,YAAa3v4B,KAAKio4B,OAAOjo4B,KAAKmw4B,cAC9BP,cAAe,KACfjj3B,MAAO3sB,KAAKmw4B,aACZrvjB,QAAQ,GAEZ9gV,KAAKo/d,QAAQ,UAAWqxa,GAAc,SAAUC,GACxCA,EAAgB5vjB,OAChBlgI,EAAM0tR,UAGF1tR,EAAMn2L,MAAM3sB,OAAS,GAAK8iN,EAAM0nrB,cAAcxq4B,OAAS,GACvD8iN,EAAMn2L,MAAQm2L,EAAM0nrB,cACpB1nrB,EAAM89P,aAAe99P,EAAMuvrB,aAC3BvvrB,EAAM0tR,YAGN1tR,EAAMynrB,SAASlz3B,cAAc,IAAMkx3B,KAAUhi4B,MAAMotI,WAAa,GAChE/+E,GAAY,CAACkuJ,EAAMonrB,QAAQ7y3B,cAAc,IAAMix3B,MAAiB/N,KAChEz3qB,EAAM6rrB,UAAU7rrB,EAAMuvrB,aAAc,MAAM,GAGtD,IACAnw4B,KAAKqo4B,SAAW,IACpB,EASAd,EAAIhp4B,UAAU6w4B,UAAY,SAAUzi3B,EAAO7tB,GACvC,IAAIkp4B,EAAUvna,GAAU,IAAMgma,IAAazm4B,KAAKy5D,SAAS9sC,GACrD8uc,GAAMusa,MAGI,IAAVlp4B,GACAkp4B,EAAQ7j4B,UAAU0C,OAAOyq3B,IAAaQ,KACtCkW,EAAQlhjB,kBAAkBl+U,aAAa,WAAYo/3B,EAAQlhjB,kBAAkB12U,aAAa,oBAG1F433B,EAAQ7j4B,UAAU2C,IAAIwq3B,IAAaQ,KACnCkW,EAAQlhjB,kBAAkBvzR,gBAAgB,YACtCy00B,EAAQ7j4B,UAAUC,SAASwh4B,MAC3B5l4B,KAAK6Q,OAAO8b,EAAQ,IAGvB8uc,GAAMz7d,KAAKyqB,MAAMkC,MAClB3sB,KAAKyqB,MAAMkC,GAAOqoQ,UAAYl2R,EAC9BkB,KAAKqie,YAET2la,EAAQlhjB,kBAAkBl+U,aAAa,iBAA4B,IAAV9J,EAAkB,QAAU,QACzF,EAQAyo4B,EAAIhp4B,UAAU2w4B,OAAS,SAAUzk3B,EAAOkC,GACpC,IAAIi0L,EAAQ5gN,KACR+q1B,EAAU,CAAE4lD,WAAYlm3B,EAAOq2T,QAAQ,GACtC9gV,KAAKkq4B,UAQNlq4B,KAAK4w4B,iBAAiBnm3B,EAAOkC,GAP7B3sB,KAAKo/d,QAAQ,SAAU2rX,GAAS,SAAU8lD,GACjCA,EAAc/vjB,QACflgI,EAAMgwrB,iBAAiBnm3B,EAAOkC,EAEtC,IAKA3sB,KAAKwnf,SACLxnf,KAAKwwe,sBAEb,EACA+2Z,EAAIhp4B,UAAUqy4B,iBAAmB,SAAUnm3B,EAAOkC,GAC9C,IAAIi0L,EAAQ5gN,KACR8w4B,EAAe,EAEnB,GADA9w4B,KAAK+n4B,OAASl33B,GAAO,IAAM403B,IAAYzl4B,KAAKy5D,SACxCgia,GAAMz7d,KAAK+n4B,QACX/n4B,KAAKyqB,MAAQA,EACbzqB,KAAKgq4B,gBACLhq4B,KAAK6t4B,oBAEJ,CACD,IAAIh8O,EAAapxL,GAAU,kBAAoBgma,IAAazm4B,KAAKy5D,SAAS37D,OAO1E,GANmB,IAAf+zpB,IACAi/O,EAAe9w4B,KAAKi9N,UAAY,GAEhCw+P,GAAM9uc,KACNA,EAAQkloB,EAAa,GAErBA,EAAalloB,GAASA,EAAQ,GAAKroB,MAAMqoB,GACzC,OAEe,IAAfkloB,GAAqBp2L,GAAMz7d,KAAK+n4B,UAChC/n4B,KAAK+n4B,OAAO1j4B,MAAMqmB,QAAU,IAE3B+wc,GAAMz7d,KAAKoo4B,UACZpo4B,KAAKoo4B,QAAQjk4B,UAAU2C,IAAIux3B,KAE/Br43B,KAAKgo4B,QAAUn33B,GAAO,IAAM213B,IAAcxm4B,KAAKup4B,gBAC/Cvp4B,KAAK6rtB,OAAQ,EACb,IAAIklL,EAAa/w4B,KAAK2p4B,YAAYl/2B,EAAOkC,GACzC3sB,KAAK6rtB,OAAQ,EACb,IACImlL,EADAhsQ,EAAM,EAEVv6mB,EAAM1sB,SAAQ,SAAUs3E,EAAMwtG,GAa1B,GAZAmutB,EAAc37zB,EAAKgpkB,gBAAkBhpkB,EAAK4mD,OAAO5tH,KAC3Cotd,GAAMpmZ,EAAKgpkB,gBAAkBhpkB,EAAK4mD,SAAWw/V,GAAMu1a,IAC7B,IAAvBA,EAAYlz4B,SAAkB29d,GAAMpmZ,EAAK4mD,SAAWw/V,GAAMpmZ,EAAK4mD,OAAOmhhB,WACnE2zP,EAAWlutB,KACP44S,GAAMpmZ,EAAKv/D,MACXu/D,EAAKv/D,GAAKmh3B,IAAWr2qB,EAAMw7Y,MAAQ,IAAM8qS,KAAiB4J,EAAejutB,GAAOliL,YAEpFow4B,EAAWlutB,GAAOkhd,eAAe,WAAa1ujB,EAAKv/D,IAEvD8qM,EAAMn2L,MAAMxmB,OAAQ0oB,EAAQq4mB,EAAM,EAAG3vjB,GACrC2vjB,KAEApkb,EAAMmhf,aAAetmO,GAAMpmZ,EAAK4mD,UAAYw/V,GAAMpmZ,EAAK4mD,OAAO5tH,MAAO,CACrE,IAAI+8c,EAAK0lb,EAAejutB,EACpB48S,EAAM7+Q,EAAM5iL,cAAc,MAAO,CACjCloB,GAAI4v3B,IAAc9krB,EAAMw7Y,MAAQ,IAAMhxI,EAAIl/c,UAAW+q3B,IACrDvk1B,MAAO,CAAEk/S,KAAM,WAAY,kBAAmBqliB,IAAW,IAAM7ra,KAEnExqQ,EAAMinrB,OAAO5x3B,aAAawpd,EAAK7+Q,EAAMinrB,OAAOvh2B,SAAU3Z,EAAQk2J,IAC9D,IAAI0qtB,EAAS3srB,EAAMmrrB,cAAcnrrB,EAAMinrB,OAAQz8a,EAAGzqd,YAClDigN,EAAMwsf,WAAWmgM,EAAQl4zB,EAAKmvP,QAAS,SAAU73S,EACrD,CACJ,IACA3sB,KAAK2n4B,MAAMxE,SAAS4N,EAAYpk3B,GAC3B3sB,KAAKkq4B,WACNlq4B,KAAKo/d,QAAQ,QAAS,CAAEuxa,WAAYlm3B,IAEpCzqB,KAAK0+c,eAAiB/xb,EACtB3sB,KAAK6Q,OAAO8b,IAGZ3sB,KAAKqs4B,kBACLrs4B,KAAKio4B,OAASxna,GAAU,IAAMgma,IAAazm4B,KAAKup4B,iBAEpDvp4B,KAAK6t4B,eACT,CACJ,EAOAtG,EAAIhp4B,UAAU2v4B,UAAY,SAAUvh3B,GAChC,IAAIi0L,EAAQ5gN,KACRur4B,EAAM9qa,GAAU,IAAMgma,IAAazm4B,KAAKy5D,SAAS9sC,GACrD,IAAI8uc,GAAM8va,GAAV,CAGA,IAAI0F,EAAa,CAAEC,YAAa3F,EAAK4F,aAAcxk3B,EAAOm0T,QAAQ,GAClE9gV,KAAKo/d,QAAQ,WAAY6xa,GAAY,SAAUG,GAC3C,IAAKA,EAAgBtwjB,OAAQ,CACzB,IAAI7kN,EAASprH,GAAO,IAAMom3B,IAAWr2qB,EAAMw7Y,MAAQ,IAAMx7Y,EAAMorrB,SAAST,EAAIz13B,IAAKjF,GAAO,IAAM213B,IAAc5lrB,EAAMnnJ,UAC7Ggia,GAAMx/V,IACP2kF,EAAMourB,iBAAiB/ywB,EAAQ,iBAAkBwqwB,KAErD7lrB,EAAM+mrB,MAAMlE,YAAY922B,GACpBi0L,EAAM4hZ,kBAAqB71kB,IAAUzsB,MAAM3B,UAAUmG,QAAQ3E,KAAK6gN,EAAM+nrB,eAAgB4C,EAAIz13B,MAC5F6W,EAAQzsB,MAAM3B,UAAUmG,QAAQ3E,KAAK6gN,EAAM+nrB,eAAgB4C,EAAIz13B,KAEnE,IAAIu73B,EAAiBzwrB,EAAM+nrB,eAAejk4B,QAAQ6m4B,EAAIz13B,IACtD8qM,EAAMn2L,MAAMxmB,OAAOot4B,EAAgB,GACnCzwrB,EAAM+nrB,eAAe1k4B,OAAOot4B,EAAgB,GAC5CzwrB,EAAMkorB,sBACN,IAAIwI,EAASzg4B,GAAO,IAAM603B,IAAc9krB,EAAMw7Y,MAAQ,IAAMx7Y,EAAMorrB,SAAST,EAAIz13B,IAAKjF,GAAO,IAAM603B,IAAa9krB,EAAMnnJ,UAC/Ggia,GAAM61a,KACP1wrB,EAAMourB,iBAAiBsC,EAAQ,UAAWra,KAC1C52Z,GAAOixa,IAEX1wrB,EAAMw+Q,QAAQ,UAAWgya,GACrBxwrB,EAAM6mrB,gBAAkB7mrB,EAAM6mrB,eAAe3p4B,OAAS,IACtD8iN,EAAM6mrB,eAAe962B,GAAO82C,UAC5Bm9I,EAAM6mrB,eAAe962B,GAAS,KAC9Bi0L,EAAM6mrB,eAAexj4B,OAAO0oB,EAAO,IAEnC4+2B,EAAIpn4B,UAAUC,SAASwh4B,MACvBj52B,EAASA,EAAQ8zc,GAAU,IAAMgma,IAAc,SAAWE,IAAe,IAAK/lrB,EAAMnnJ,SAAS37D,OAAS,EAAK6uB,EAAQ,EAAIA,EACvHi0L,EAAMm9mB,iBAAkB,EACxBn9mB,EAAM89P,aAAe/xb,EACrBi0L,EAAM/vM,OAAO8b,IAERA,IAAUi0L,EAAM89P,eACjB/xb,EAAQi0L,EAAM89P,eACd/xb,EAAQi0L,EAAM+nrB,eAAejk4B,QAAQk8M,EAAMqnrB,OAAOrnrB,EAAM89P,cAAc5oc,IACtE8qM,EAAMqhR,cAAc,CAAEvjB,aAAc/xb,GAAS,EAAIA,EAAQi0L,EAAM89P,eAAgB,GAC/E99P,EAAM2nrB,UAAY3nrB,EAAM89P,cAE5B99P,EAAMqnrB,OAASxna,GAAU,IAAMgma,IAAa7lrB,EAAM2orB,iBAEK,IAAvD9oa,GAAU,IAAMgma,IAAa7lrB,EAAMnnJ,SAAS37D,SAC5C8iN,EAAMmnrB,OAAO1j4B,MAAMqmB,QAAU,QAEjCk2L,EAAMm9mB,iBAAkB,CAC5B,CACJ,GA9CA,CA+CJ,EAQAwpE,EAAIhp4B,UAAU4w4B,QAAU,SAAUxi3B,EAAO7tB,GACrC,IAAI2rB,EACA4qD,EAAOorZ,GAAU,IAAMgma,IAAazm4B,KAAKy5D,SAAS9sC,GACtD,IAAI8uc,GAAMpmZ,GAAV,CAOA,GAJIomZ,GAAM38d,KACNA,GAAQ,GAEZkB,KAAKoo4B,QAAQjk4B,UAAU2C,IAAIux3B,MACb,IAAVv53B,EAGA,GAFAu2E,EAAKlxE,UAAU2C,IAAIux3B,KAEE,KADrB5t2B,EAAQg2c,GAAU,IAAMgma,IAAc,SAAWpO,IAAa,IAAKr43B,KAAKgo4B,UAC9Dlq4B,QAAgBu3E,EAAKlxE,UAAUC,SAASwh4B,MAC9C,GAAc,IAAVj52B,EACA,IAAK,IAAIxvB,EAAIwvB,EAAQ,EAAGxvB,GAAK,EAAGA,IAAK,CACjC,IAAK6C,KAAKio4B,OAAO9q4B,GAAGgH,UAAUC,SAASi03B,KAAa,CAChDr43B,KAAK6Q,OAAO1T,GACZ,KACJ,CACK,GAAU,IAANA,EACL,IAAK,IAAIoN,EAAIoiB,EAAQ,EAAGpiB,EAAIvK,KAAKio4B,OAAOnq4B,OAAQyM,IAC5C,IAAKvK,KAAKio4B,OAAO193B,GAAGpG,UAAUC,SAASi03B,KAAa,CAChDr43B,KAAK6Q,OAAOtG,GACZ,KACJ,CAGZ,MAGA,IAASA,EAAIoiB,EAAQ,EAAGpiB,EAAIvK,KAAKio4B,OAAOnq4B,OAAQyM,IAC5C,IAAKvK,KAAKio4B,OAAO193B,GAAGpG,UAAUC,SAASi03B,KAAa,CAChDr43B,KAAK6Q,OAAOtG,GACZ,KACJ,OAIc,IAAjBkgB,EAAM3sB,QACXkC,KAAKy5D,QAAQt1D,UAAU2C,IAAIux3B,UAI/Br43B,KAAKy5D,QAAQt1D,UAAU0C,OAAOwx3B,KAC9B5t2B,EAAQg2c,GAAU,IAAMgma,IAAc,SAAWpO,IAAa,IAAKr43B,KAAKgo4B,SACxE3yzB,EAAKlxE,UAAU0C,OAAOwx3B,KACD,IAAjB5t2B,EAAM3sB,QACNkC,KAAK6Q,OAAO8b,GAGpB3sB,KAAKqs4B,kBACAr7tB,GAAkB37F,EAAKyxQ,oBACxBzxQ,EAAKyxQ,kBAAkBl+U,aAAa,cAAe,GAAK9J,GAElC,UAAtBkB,KAAKkhW,cAA4BlhW,KAAK2n4B,OACtC3n4B,KAAK2n4B,MAAMhzJ,iBAnDf,CAqDJ,EACA4yJ,EAAIhp4B,UAAUku4B,UAAY,SAAUrh0B,EAAMlS,EAAO+6lB,QAC/B,IAAV/6lB,IAAoBA,EAAQ,WACX,IAAjB+6lB,IAA2BA,GAAe,GAC9Cj0pB,KAAKi0pB,aAAeA,EACpBj0pB,KAAK6Q,OAAOu6D,EAAMlS,EACtB,EAQAqu0B,EAAIhp4B,UAAUsS,OAAS,SAAUu6D,EAAMlS,GACnC,IAAI0nJ,EAAQ5gN,KACRir4B,EAAYjr4B,KAAKup4B,eACrBvp4B,KAAKgo4B,QAAUn33B,GAAO,IAAM213B,IAAcyE,GAC1Cjr4B,KAAKio4B,OAASxna,GAAU,IAAMgma,IAAawE,GAC3Cjr4B,KAAKwkU,QAAU3zT,GAAO,IAAM603B,IAAa1l4B,KAAKy5D,SAC9Cz5D,KAAKmo4B,SAAWno4B,KAAKio4B,OAAOjo4B,KAAKuo4B,WAC7B9sa,GAAMz7d,KAAK0+c,eAAkB1+c,KAAK0+c,aAAe,GAAO1+c,KAAKio4B,OAAOnq4B,QAAUkC,KAAK0+c,cAAiBp6c,MAAMtE,KAAK0+c,cAC/G1+c,KAAK0+c,aAAe,EAGpB1+c,KAAKux4B,WAAavx4B,KAAKgs4B,SAAShs4B,KAAKio4B,OAAOjo4B,KAAK0+c,cAAc5oc,IAEnE,IAAIy13B,EAAMvr4B,KAAKio4B,OAAO78zB,GAClBqwZ,GAAM8va,GACNvr4B,KAAKux4B,WAAa,IAGlBvx4B,KAAK0t4B,YAAc1t4B,KAAKgs4B,SAAST,EAAIz13B,IAEpC2ld,GAAMz7d,KAAKmo4B,WAAcno4B,KAAKmo4B,SAAShk4B,UAAUC,SAASkt3B,MAC3Dtx3B,KAAKmo4B,SAAS7h2B,SAAS+uC,KAAK,GAAGzsE,aAAa,WAAY5I,KAAKmo4B,SAASrhjB,kBAAkB12U,aAAa,aAEzG,IAAI20rB,EAAW,CACX7roB,MAAOA,EACPquB,aAAcvnF,KAAKmo4B,SACnB9zH,cAAer0wB,KAAKuo4B,UACpB7pb,aAAc1+c,KAAKio4B,OAAOjo4B,KAAK0+c,cAC/B/H,cAAe32c,KAAK0+c,aACpB+ub,gBAAkBhya,GAAMz7d,KAAKwkU,SACsD,KAA/E3zT,GAAO,IAAM603B,IAAc1l4B,KAAKo8lB,MAAQ,IAAMp8lB,KAAKux4B,WAAYvx4B,KAAKwkU,SACxEgtkB,cAAejG,EACfkG,eAAgBrm0B,EAChBsm0B,iBAAmBj2a,GAAMz7d,KAAKwkU,SACsD,KAAhF3zT,GAAO,IAAM603B,IAAc1l4B,KAAKo8lB,MAAQ,IAAMp8lB,KAAK0t4B,YAAa1t4B,KAAKwkU,SACzEkkkB,SAAU1o4B,KAAK0o4B,SACfz0O,aAAcj0pB,KAAKi0pB,aACnBnzU,QAAQ,GAEP9gV,KAAK0hrB,WAQN1hrB,KAAK0x4B,iBAAiBtm0B,EAAMprE,KAAKi0pB,cAPjCj0pB,KAAKo/d,QAAQ,YAAa2lO,GAAU,SAAU4sM,GACrCA,EAAW7wjB,QACZlgI,EAAM8wrB,iBAAiBtm0B,EAAMw1I,EAAMqzc,aAE3C,IAKJj0pB,KAAKi0pB,cAAe,CACxB,EACAszO,EAAIhp4B,UAAUmz4B,iBAAmB,SAAUtm0B,EAAM6olB,GAC7C,GAAoB,kBAAT7olB,EAAmB,CAC1B,IAAKqwZ,GAAMz7d,KAAKio4B,OAAO78zB,MAAWprE,KAAKio4B,OAAO78zB,GAAMjnE,UAAUC,SAASkt3B,MACnEtx3B,KAAKio4B,OAAO78zB,GAAMjnE,UAAUC,SAASi03B,MACrC,IAAK,IAAIl73B,EAAIiuE,EAAO,EAAGjuE,EAAI6C,KAAKyqB,MAAM3sB,OAAQX,IAAK,CAC/C,IAA+B,IAA3B6C,KAAKyqB,MAAMttB,GAAG63R,WAAgD,IAA1Bh1R,KAAKyqB,MAAMttB,GAAGo1D,QAAkB,CACpE6Y,EAAOjuE,EACP,KACJ,CAEIiuE,EAAO,CAEf,CAEJ,GAAIprE,KAAKio4B,OAAOnq4B,OAASstE,GAAQA,GAAQ,IAAM9mE,MAAM8mE,GAGjD,GAFAprE,KAAKuo4B,UAAYvo4B,KAAK0+c,aACtB1+c,KAAKmo4B,SAAWno4B,KAAKio4B,OAAOjo4B,KAAKuo4B,WAC7Bvo4B,KAAKio4B,OAAO78zB,GAAMjnE,UAAUC,SAASui4B,MAAiB3m4B,KAAKmt4B,kBAE3D,GADAnt4B,KAAKq6X,UAAUr6X,KAAK8x2B,aAAa9x2B,KAAKio4B,OAAO78zB,IAAQ,KAAM6olB,IACrDx4L,GAAMz7d,KAAKyqB,QAAUzqB,KAAKyqB,MAAM3sB,OAAS,GAAMkC,KAAKwimB,iBAAkB,CACxEximB,KAAKio4B,OAASxna,GAAU,IAAM+la,IAAe,KAAOC,IAAazm4B,KAAK+n4B,QACtE,IAAI1yzB,EAAOr1E,KAAKyqB,MAAM2gD,GACtBprE,KAAKyqB,MAAMxmB,OAAOmnE,EAAM,GACxBprE,KAAKyqB,MAAMxmB,OAAOjE,KAAKio4B,OAAOnq4B,OAAS,EAAG,EAAGu3E,GAC7C,IAAIk7gB,EAASvwlB,KAAK2o4B,eAAev9zB,GACjCprE,KAAK2o4B,eAAe1k4B,OAAOmnE,EAAM,GACjCprE,KAAK2o4B,eAAe1k4B,OAAOjE,KAAKio4B,OAAOnq4B,OAAS,EAAG,EAAGyylB,EAC1D,OAGAvwlB,KAAKq6X,UAAUjvT,EAAM,KAAM6olB,QAI/Bj0pB,KAAKq6X,UAAU,EAAG,KAAM45R,EAEhC,MACS7olB,aAAiBixI,aACtBr8M,KAAKq6X,UAAUr6X,KAAKws4B,YAAYph0B,GAAO,KAAM6olB,EAErD,EAOAszO,EAAIhp4B,UAAUqxY,aAAe,SAAUgigB,GAEnC,IADA,IAAIzqjB,EACKhqV,EAAI,EAAGA,EAAI6C,KAAKio4B,OAAOnq4B,OAAQX,IAAK,CAEzC,GAAIy04B,IADQ5x4B,KAAKio4B,OAAO9q4B,GAAGiT,aAAa,WACf,CACrB+2U,EAAWhqV,EACX,KACJ,CACJ,CACA,OAAOgqV,CACX,EAQAogjB,EAAIhp4B,UAAUk0pB,QAAU,SAAU3zpB,GAC9BkB,KAAK0mf,YAAY1mf,KAAKy5D,QAAS63zB,IAAaxy3B,GAC5CkB,KAAKy5D,QAAQ7wD,aAAa,gBAAiB,GAAK9J,EACpD,EAMAyo4B,EAAIhp4B,UAAUgye,eAAiB,WAC3B,OAAOvwe,KAAK6we,aAAa,CAAC,eAAgB,YAC9C,EAOA02Z,EAAIhp4B,UAAUyke,cAAgB,WAC1B,MAAO,KACX,EASAuka,EAAIhp4B,UAAUoke,kBAAoB,SAAUiF,EAASC,GAEjD,IADA,IAAIjnR,EAAQ5gN,KACHm6N,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAE9D,OADWjiC,EAAGiiC,IAEV,IAAK,QACDiqa,GAASpkoB,KAAKy5D,QAAS,CAAEl2D,MAAOsgd,GAAW+jB,EAAQrke,SACnD,MACJ,IAAK,SACD6goB,GAASpkoB,KAAKy5D,QAAS,CAAEj2D,OAAQqgd,GAAW+jB,EAAQpke,UACpDxD,KAAKop4B,kBAAiB,GACtB,MACJ,IAAK,WACD,IAAIpiN,EAAYhnrB,KAAKy5D,QAAQtkD,cAAc,IAAMsw3B,KACxB,KAArB59Z,EAAQh5d,UAAoBmiK,GAAkB62T,EAAQh5d,WAStD7O,KAAK0mf,YAAY1mf,KAAKy5D,QAASmua,EAAQ/4d,UAAU,GAC5CmiK,GAAkBg2gB,IACnBhnrB,KAAK0mf,YAAYsgM,EAAWp/M,EAAQ/4d,UAAU,KAVlD7O,KAAK0mf,YAAY1mf,KAAKy5D,QAASoua,EAAQh5d,UAAU,GACjD7O,KAAK0mf,YAAY1mf,KAAKy5D,QAASmua,EAAQ/4d,UAAU,GAC5CmiK,GAAkBg2gB,KACnBhnrB,KAAK0mf,YAAYsgM,EAAWn/M,EAAQh5d,UAAU,GAC9C7O,KAAK0mf,YAAYsgM,EAAWp/M,EAAQ/4d,UAAU,KAStD,MACJ,IAAK,QACD7O,KAAK6u4B,0BAA0Bjna,EAASC,GACxC,MACJ,IAAK,kBACD7ne,KAAK4p4B,eAAehia,EAAQlzC,iBAC5B,MACJ,IAAK,mBACD10b,KAAK0n4B,yBACL,MACJ,IAAK,eACD1n4B,KAAK0+c,aAAempB,EAAQnpB,aAC5B1+c,KAAK6Q,OAAO+2d,EAAQlpB,cACpB,MACJ,IAAK,kBACD1+c,KAAK8mf,kBAAkBlf,EAAQoha,iBAC/B,MACJ,IAAK,YACDhp4B,KAAK41T,OAAOgyK,EAAQmG,WACpB,MACJ,IAAK,eACD/te,KAAK2n4B,MAAMzmiB,aAAe0mI,EAAQ1mI,aAClClhW,KAAK2n4B,MAAMtla,WACXrie,KAAK0n4B,yBACL,MACJ,IAAK,mBACD1n4B,KAAKop4B,kBAAiB,GACtBpp4B,KAAK6Q,OAAO7Q,KAAK0+c,cACjB,MACJ,IAAK,aACG1+c,KAAK2n4B,QACL3n4B,KAAK2n4B,MAAMhV,WAAa3y3B,KAAK2y3B,YAEjC,MACJ,IAAK,mBACD3y3B,KAAK6t4B,gBACL,MACJ,IAAK,WACG7t4B,KAAKwimB,mBACLximB,KAAKyn4B,eAAe1p4B,SAAQ,SAAUs3E,GAClCA,EAAKw/Z,SAAWj0R,EAAMi0R,QAC1B,IACA70e,KAAKsue,WAIrB,CACJ,EAMAi5Z,EAAIhp4B,UAAUsz4B,iBAAmB,WAI7B,GAHI7x4B,KAAKwnf,SAAWxnf,KAAK+hsB,YACrB/hsB,KAAKywe,gBAEJzwe,KAAK+hsB,WAiFL,CACD,IAAIunM,EAAWtp4B,KAAKy5D,QAAQtkD,cAAc,IAAMqx3B,KAC5C/s0B,EAAUz5D,KAAKy5D,QAAQtkD,cAAc,IAAMsx3B,IAAc,IAAMb,KAC/Dj52B,EAAQ3sB,KAAKoq4B,gBAAgB3w0B,EAAQ3jD,IACrCmmH,EAASxiE,EAAQ2iJ,UACjB01rB,EAAgB9x4B,KAAKy5D,QAAQtkD,cAAc,IAAMuw3B,KAAavw3B,cAAc,IAAMyw3B,KAAYt/1B,SAAS,GACvGyr2B,EAAeD,EAAcnz3B,UACjC0hd,GAAO5ma,GACP4ma,GAAOyxa,GACP,IAAIts4B,EAAO,CACP0G,UAAWu63B,IAAc,IAAMnP,IAAe,IAAMsO,IAAY9v3B,GAAImh3B,IAAWj33B,KAAKo8lB,MAAQ,IAAMzvkB,GAElGql3B,EAAYhy4B,KAAKg+B,cAAc,OAAQ,CACvC9xB,UAAWi63B,IAAUxn3B,UAAWs9G,EAAQvpF,MAAO,CAAE,KAAQ,kBAC1D67C,UACC0jzB,EAAQjy4B,KAAKg+B,cAAc,MAAO,CAClC9xB,UAAWo63B,IAAe3n3B,UAAWqz3B,EAAYhy4B,KAAK8n4B,OAAOv5yB,YAC9DA,UAEC8mC,GADA8xN,EAAW1tR,EAAQqtR,kBAAkB12U,aAAa,iBAC3CpQ,KAAKg+B,cAAc,MAAO,CACjC9xB,UAAWm63B,IAAU1n3B,UAAWsz3B,EAChCv/1B,MAAO,CAAEy0S,SAAUA,EAAU,gBAAiBA,EAAUyK,KAAM,MAAO,gBAAiB8ziB,IAAc1l4B,KAAKo8lB,MAAQ,IAAMzvkB,EAAO,gBAAiB,OAAQ,gBAAiB,YAE5K282B,EAASrz3B,aAAajW,KAAKg+B,cAAc,MAAOx4B,GAAO8j4B,EAAShj2B,SAAS3Z,EAAQ,IACjF3sB,KAAKy5D,QAAQtkD,cAAc,IAAMsx3B,IAAc,IAAMb,KAAYru3B,YAAY89G,GACzE68wB,EAASly4B,KAAKg+B,cAAc,MAAO,CAAErf,UAAWoz3B,IACpD/x4B,KAAKy5D,QAAQtkD,cAAc,IAAMuw3B,KAAavw3B,cAAc,IAAMyw3B,KAAYru3B,YAAY263B,EAC9F,MA3GI,GAAIly4B,KAAKy5D,QAAQtkD,cAAc,IAAMsx3B,IAAc,IAAMb,KAAa,CAClEvla,GAAOrge,KAAKy5D,QAAQtkD,cAAc,IAAMsx3B,IAAc,IAAMb,KAAYt/1B,SAAS,IACjF+5b,GAAOrge,KAAKy5D,QAAQtkD,cAAc,IAAMuw3B,KAAavw3B,cAAc,IAAMyw3B,KAAYt/1B,SAAS,IAC9F,IAAI+uC,EAAOr1E,KAAKyqB,MAAMzqB,KAAK0+c,cACvBlmb,EAAOijc,GAAMpmZ,EAAK4mD,SAAWw/V,GAAMpmZ,EAAK4mD,OAAOohjB,cAAiB,GAAKhomB,EAAK4mD,OAAOohjB,aACjF5glB,EAAOg/X,GAAMpmZ,EAAK4mD,SAAWw/V,GAAMpmZ,EAAK4mD,OAAOmhhB,SAAY,GAAK/nkB,EAAK4mD,OAAOmhhB,QAC5E/uoB,EAAOgnE,EAAKgpkB,gBAAkBhpkB,EAAK4mD,OAAO5tH,KAC1C8j4B,EAAUny4B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWi63B,IAAUzz1B,MAAO,CAAE,KAAQ,kBAC3E+ob,GAAMptd,EAAK+yI,SAIZphJ,KAAK2q4B,kBAAkBwH,EAAS9j4B,EAAMrO,KAAK0+c,cAH3Cyzb,EAAQ563B,YAAYlJ,GAKxB,IACIs+B,EAAO3sC,KAAKg+B,cAAc,OAAQ,CAClC9xB,UAAW453B,IAAY,IAAMS,IAAe,IAAMR,IAAW,IAAMvt2B,EAAM,IAAMikE,IAE/E21yB,EAASpy4B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWo63B,MACpD8L,EAAO763B,YAAY463B,GACL,KAAT9j4B,QAAwB4+D,IAAT5+D,GAA+B,KAARouF,GAC1B,SAARjkE,GAA0B,QAARA,EACnB452B,EAAOn83B,aAAa02B,EAAMyl2B,EAAOtrjB,mBAGjCsrjB,EAAO763B,YAAYo1B,GAEhBwl2B,EACPny4B,KAAKwn4B,aAAc,IAGF,KAAR/qyB,EAAc01yB,EAAUxl2B,KACpBA,IACT0zb,GAAO8xa,GACPC,EAAO763B,YAAYo1B,GACnB3sC,KAAKwn4B,aAAc,GAG3B,IAAIrgjB,EAAWs0I,GAAMpmZ,EAAK8xQ,UAAY,KAAO9xQ,EAAK8xQ,SAASxmV,WACvD0x4B,EAAWh9zB,EAAK2/M,SAAY,CAAC,EAAI,CAAEmyD,SAAUA,EAAU,gBAAiBA,EAAUyK,KAAM,MAAO,gBAAiB,OAAQ,gBAAiB,SAC7IwgjB,EAAO763B,YAAYvX,KAAK8n4B,OAAO1q2B,WAAU,IACzC,IAAIk12B,EAASty4B,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWm63B,IAAU3z1B,MAAO2/1B,IACrEC,EAAO/63B,YAAY663B,GACP,QAAR552B,GAAyB,WAARA,GACjBx4B,KAAKy5D,QAAQt1D,UAAU2C,IAAI,mBAE/B9G,KAAKy5D,QAAQtkD,cAAc,IAAMsx3B,IAAc,IAAMb,KAAYru3B,YAAY+63B,GAC7E,IAAIJ,EAASly4B,KAAKg+B,cAAc,OAC5B+id,EAAM1ra,EAAKmvP,QACXkokB,OAAS,EACb,GAAmB,kBAAR3rZ,GAAoBtlB,GAAMslB,EAAIpie,WAIrC,GAHmB,kBAARoie,GAAoB/gf,KAAK6rf,sBAChC9K,EAAM+C,GAAmBE,SAASjD,IAEvB,MAAXA,EAAI,IAAyB,MAAXA,EAAI,GACtB,GAAIxrd,SAAS9H,iBAAiBszd,GAAKjjf,OAAQ,CACvC,IAAIm6f,EAAS1ie,SAASpgB,cAAc4re,GACpC2rZ,EAASz0Y,EAAO1pa,UAAUh5E,OAC1B283B,EAAO363B,YAAY0gf,GACnBA,EAAO5zf,MAAMqmB,QAAU,EAC3B,MAEI1qB,KAAK63f,eAAeq6Y,EAAQnxZ,EAAK,UAAW/gf,KAAK0+c,mBAIrD1+c,KAAK63f,eAAeq6Y,EAAQnxZ,EAAK,UAAW/gf,KAAK0+c,mBAIrDwzb,EAAO363B,YAAYwpe,GAElBtlB,GAAMixa,KAC2C,IAA9C1s4B,KAAKgl4B,YAAYtg4B,QAAQq8e,EAAIpgf,aAC7BX,KAAKgl4B,YAAYrn4B,KAAKojf,EAAIpgf,YAGlCX,KAAKy5D,QAAQtkD,cAAc,IAAM8h3B,IAAW,IAAM2O,KAAYru3B,YAAY263B,EAC9E,CA8BAly4B,KAAKwnf,SACLxnf,KAAKwwe,sBAEb,EAMA+2Z,EAAIhp4B,UAAUmp4B,uBAAyB,WACnC,IAAI5hN,EAAYj1qB,GAAO,IAAM413B,IAAc,IAAME,IAAe,IAAMf,IAAY5l4B,KAAKy5D,UAClFgia,GAAMqqN,IAAc9lrB,KAAKmt4B,kBAC1Bnt4B,KAAK6Q,OAAO7Q,KAAKws4B,YAAY1mN,IAEjC9lrB,KAAK8o4B,qBACT,EACAz7kB,IAAW,CACPi4K,GAAW,GAAIgia,MAChBC,EAAIhp4B,UAAW,aAAS,GAC3B8uT,IAAW,CACP63K,GAAS,SACVqia,EAAIhp4B,UAAW,aAAS,GAC3B8uT,IAAW,CACP63K,GAAS,SACVqia,EAAIhp4B,UAAW,cAAU,GAC5B8uT,IAAW,CACP63K,GAAS,KACVqia,EAAIhp4B,UAAW,gBAAY,GAC9B8uT,IAAW,CACP63K,GAAS,IACVqia,EAAIhp4B,UAAW,oBAAgB,GAClC8uT,IAAW,CACP63K,GAAS,QACVqia,EAAIhp4B,UAAW,uBAAmB,GACrC8uT,IAAW,CACP63K,GAAS,YACVqia,EAAIhp4B,UAAW,wBAAoB,GACtC8uT,IAAW,CACP63K,GAAS,eACVqia,EAAIhp4B,UAAW,oBAAgB,GAClC8uT,IAAW,CACP63K,GAAS,YACVqia,EAAIhp4B,UAAW,cAAU,GAC5B8uT,IAAW,CACP63K,IAAS,IACVqia,EAAIhp4B,UAAW,yBAAqB,GACvC8uT,IAAW,CACP63K,IAAS,IACVqia,EAAIhp4B,UAAW,2BAAuB,GACzC8uT,IAAW,CACP63K,IAAS,IACVqia,EAAIhp4B,UAAW,uBAAmB,GACrC8uT,IAAW,CACP63K,IAAS,IACVqia,EAAIhp4B,UAAW,wBAAoB,GACtC8uT,IAAW,CACP63K,MACDqia,EAAIhp4B,UAAW,kBAAc,GAChC8uT,IAAW,CACP63K,MACDqia,EAAIhp4B,UAAW,gBAAY,GAC9B8uT,IAAW,CACP63K,IAAS,IACVqia,EAAIhp4B,UAAW,wBAAoB,GACtC8uT,IAAW,CACP63K,IAAS,IACVqia,EAAIhp4B,UAAW,sBAAkB,GACpC8uT,IAAW,CACPg4K,GAAQ,CAAC,EAAGgia,MACbE,EAAIhp4B,UAAW,iBAAa,GAC/B8uT,IAAW,CACPv0P,MACDyu0B,EAAIhp4B,UAAW,eAAW,GAC7B8uT,IAAW,CACPv0P,MACDyu0B,EAAIhp4B,UAAW,cAAU,GAC5B8uT,IAAW,CACPv0P,MACDyu0B,EAAIhp4B,UAAW,aAAS,GAC3B8uT,IAAW,CACPv0P,MACDyu0B,EAAIhp4B,UAAW,iBAAa,GAC/B8uT,IAAW,CACPv0P,MACDyu0B,EAAIhp4B,UAAW,gBAAY,GAC9B8uT,IAAW,CACPv0P,MACDyu0B,EAAIhp4B,UAAW,gBAAY,GAC9B8uT,IAAW,CACPv0P,MACDyu0B,EAAIhp4B,UAAW,eAAW,GAC7B8uT,IAAW,CACPv0P,MACDyu0B,EAAIhp4B,UAAW,mBAAe,GACjC8uT,IAAW,CACPv0P,MACDyu0B,EAAIhp4B,UAAW,gBAAY,GAC9B8uT,IAAW,CACPv0P,MACDyu0B,EAAIhp4B,UAAW,eAAW,GAC7B8uT,IAAW,CACPv0P,MACDyu0B,EAAIhp4B,UAAW,iBAAa,GAC/Bgp4B,EAAMl6kB,IAAW,CACbq4K,IACD6ha,EAEP,CAruEyB,CAquEvB7lnB,ICj5EExgC,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAyBzCoxpB,IAAoC,SAAU/trB,GAE9C,SAAS+trB,IACL,IAAI3xrB,EAAmB,OAAX4D,GAAmBA,EAAO5mN,MAAMoC,KAAMnC,YAAcmC,KAEhE,OADA4gN,EAAMnnJ,QAAUmnJ,EAAMhoL,OAAOoF,cAAc,KAAM,CAAE9xB,UAAW,kBAAmBwmC,MAAO,CAAEk/S,KAAM,kBACzFhxI,CACX,CAiNA,OAtNAsgC,IAAUqxpB,EAAoB/trB,GAW9B+trB,EAAmBh04B,UAAU+9sB,OAAS,WAClC,OAAOt8sB,KAAK44B,OAAOoF,cAAc,MACrC,EAQAu02B,EAAmBh04B,UAAUupE,OAAS,SAAUwyD,EAAM7oH,GAClD,IAGIg4G,EAHAyjN,EAAKltU,KAAK44B,OAAO6gC,QAAQtkD,cAAc,gBACvC/M,EAAOpI,KAAKy5D,QAAQr8B,YACpBiirB,EAAWr/sB,KAAKs8sB,SAEhBzzrB,EAASyxG,EAAKzxG,OAGlB,GAFAqkT,EAAG31T,YAAYnP,GACfA,EAAKQ,aAAa,eAAgBigB,EAAOqqD,KACrCrqD,EAAOm+oB,eAAgB,CACvB,IAAIwrO,EAAW,CAAC,EACZ/g4B,IACA+g4B,EAAS3p3B,EAAOo0N,OAASxrO,EAAKoX,EAAOo0N,QAIzC,GADAu1pB,EAAiB,OAAI3p3B,EACjBA,EAAO0pC,QAAS,CAChB,IAAI6joB,EAAkBp2rB,KAAK44B,OAAO4ud,SAA8C,kBAA3B3+d,EAAOm+oB,eACxDqvB,EAAer2rB,KAAK44B,OAAO09pB,eAAiBt2rB,KAAK44B,OAAO09pB,cAAcC,eACtEv2rB,KAAK44B,OAAO09pB,cAAcC,cAAc/uM,QACxCs5N,EAAS9gtB,KAAK44B,OAAO6gC,QAAQ3jD,GAAK+S,EAAOqqD,IAAM,iBACnD,GAAIkjnB,GAAmBC,EACnBxtqB,EAAOw9oB,mBAAPx9oB,CAA2B2p3B,EAAUxy4B,KAAK44B,OAAQ,iBAAkBkorB,EAAQ,KAAM,KAAM14sB,GACxFpI,KAAK44B,OAAO49pB,uBAIZjH,GAAennrB,EADDygB,EAAOw9oB,mBAAPx9oB,CAA2B2p3B,EAAUxy4B,KAAK44B,OAAQ,iBAAkBkorB,GAG1F,MAEI14sB,EAAKjE,UAAU2C,IAAI,SAE3B,MAEI,GAAoB,aAAhB+hB,EAAOpiB,KAAqB,CAC5B,IAAKuqK,GAAkBnoJ,EAAOgpkB,kBAAmBhpkB,EAAOgpkB,gBAAoB7gb,GAAkBnoJ,EAAO4p3B,mBAgChG,CACDp70B,GAAWgopB,EAAU,CACjB,MAAS,+BAEb51lB,EAAQzpH,KAAK44B,OAAOoF,cAAc,QAAS,CACvCloB,GAAI+S,EAAOo0N,MAAQ,iBAAkB/wO,UAAW,eAChDwmC,MAAO,CACHjsC,KAAM,SAAU6Z,MAAOuI,EAAOs4Z,WAAa7mT,EAAKjjE,WAAW/2C,MAC3DxhB,MAAO2S,EAAK6oH,EAAKzxG,OAAOo0N,OAASxrO,EAAK6oH,EAAKzxG,OAAOo0N,OAAS,MAGnEoie,EAAS9nsB,YAAYkyG,GACjBr+C,EAAO,CACP3R,QAASgwD,EAAO20gB,eAAgB,QAChC3hgB,WAAY,CACRsxW,UAAW/te,KAAK44B,OAAOm1c,UAAW40J,iBAAiB,EAAM9znB,SAAU7O,KAAK44B,OAAO/pB,WAGvFivnB,GAAM2E,YAAYr3jB,EAAMprE,KAAK44B,OAAOoF,cACxC,MA9CI,GAJA51B,EAAKjE,UAAU2C,IAAI,cACnBuwD,GAAWgopB,EAAU,CACjB,MAAS,kBAETruiB,GAAkBnoJ,EAAO4p3B,kBAAkBzz4B,QAC3CyqH,EAAQzpH,KAAK44B,OAAOoF,cAAc,QAAS,CACvCloB,GAAI+S,EAAOo0N,MAAQ,iBAAkB/wO,UAAW,2CAChDwmC,MAAO,CAAEjsC,KAAM,SAAU6Z,MAAOuI,EAAOs4Z,cAE3Ck+R,EAAS9nsB,YAAYkyG,OAEpB,CACD,IAAIr+C,EAAO,CAAEviD,OAAQA,EAAQzgB,KAAM2mD,SAC/B0gL,EAAO5mN,EAAO4p3B,kBAAkBzz4B,OAKpC,GAJoB,kBAATywO,IACPA,EAAO1hB,GAAS0hB,EAAM9qO,SAGL,kBADrB8kH,EAAQgmH,EAAKrkK,IACkB,CAC3B,IAAIsyF,EAAM19J,KAAK44B,OAAOoF,cAAc,OACpC0/H,EAAI/+I,UAAY8qG,EAChBA,EAAQi0C,EAAI/vI,UAChB,CACA0pC,GAAWgopB,EAAU,CACjBxzsB,MAAO,2CACPyU,MAAOuI,EAAOs4Z,WACdrra,GAAI+S,EAAOo0N,MAAQ,mBAEvBoie,EAAS9nsB,YAAYkyG,EACzB,GAuB0B,IAA1B5gG,EAAOgpkB,gBAA6C,KAAjBhpkB,EAAOo0N,OAAgBjsE,GAAkBnoJ,EAAOo0N,UACnFxzH,EAAM7gH,aAAa,WAAY,QAC/B6gH,EAAMtlH,UAAU2C,IAAI,cAExB,IAAI4r4B,EAAgBrzL,EAASlqsB,cAAc,iBAa3C,GAZIu93B,GACAA,EAAc9p4B,aAAa,QAAS5I,KAAK44B,OAAOy0pB,UAAUxxM,YAAY,gBAErEhzd,EAAO0pC,SACRnqD,EAAKjE,UAAU2C,IAAI,UAEvB9G,KAAKq9sB,WAAWj1sB,EAAMi3sB,GAElBr/sB,KAAK44B,OAAO60pB,eAAeoiE,uBAA6D,cAApC7vvB,KAAK44B,OAAO60pB,eAAehnrB,OAC9EzG,KAAK44B,OAAOgpqB,YAAc5whB,GAAkBnoJ,EAAOm+oB,iBAAmBh2f,GAAkBnoJ,EAAO4p3B,oBAChGzy4B,KAAK2y4B,mBAAmBtzL,EAAUx2rB,EAAQyxG,IAEzC02C,GAAkBnoJ,EAAOgpkB,iBAAmBhpkB,EAAOgpkB,kBAAoB7gb,GAAkBnoJ,EAAO4p3B,mBAAoB,CACrH,IAAIG,EAAgB/p3B,EAAO4p3B,kBAAkB97wB,MACzCvrD,EAAO,CAAE3R,QAASgwD,EAAO5gG,OAAQA,GACR,kBAAlB+p3B,IACPA,EAAgB7krB,GAAS6krB,EAAeju4B,SAE5Ciu4B,EAAc7y4B,KAAKC,KAAMorE,EAC7B,CACJ,CAKJ,OAHIprE,KAAK44B,OAAOuoqB,gBACZsc,GAAwBz9sB,KAAK44B,OAAQ/P,EAAQzgB,GAE1CA,CACX,EAQAmq4B,EAAmBh04B,UAAU8+sB,WAAa,SAAUj1sB,EAAM60sB,GAEtD,OADA70sB,EAAKmP,YAAY0lsB,GACV70sB,CACX,EACAmq4B,EAAmBh04B,UAAUo04B,mBAAqB,SAAUtzL,EAAUx2rB,EAAQyxG,GAC1E,IACIu4wB,EADAj6M,EAAO54rB,KAAK44B,OAEZk62B,EAAS9y4B,KAAK44B,OAAOoF,cAAc,QAAS,CAC5C9xB,UAAW,6CACX4J,GAAIwkH,EAAKzxG,OAAOqqD,MAGpB,GADAmsoB,EAASlqsB,cAAc,QAAQoC,YAAYu73B,GACvCjq3B,EAAOrrB,QAAUqrB,EAAOrrB,OAAO2gE,SAC/B000B,EAAYhq3B,EAAOrrB,OAAO2gE,cAEzB,GAAIy6nB,EAAKnL,eAAetsjB,QAAQrjI,OACjC,IAAK,IAAIX,EAAI,EAAGI,EAAIq7rB,EAAKnL,eAAetsjB,QAAShkI,EAAII,EAAEO,OAAQX,IAAK,CAChE,IAAI85H,EAAM15H,EAAE0D,SAAS9D,EAAEwD,WAAY,KACnC,GAAIs2H,EAAIgmH,QAAUp0N,EAAOo0N,MAAO,CAC5B41pB,EAAY57wB,EAAI94D,SAChB,KACJ,CAEI000B,EAAY,OAEpB,MAGAA,EAAY,QAEX7huB,GAAkB4nhB,EAAKopB,aAAa6wL,UAAUhq3B,EAAOo0N,UACtD41pB,EAAYj6M,EAAKopB,aAAa6wL,UAAUhq3B,EAAOo0N,QAEnDj9O,KAAK+y4B,SAAW,IAAIv/O,GAAa,CAC7B/hW,OAAQ,CAAEpjT,KAAM,OAAQvP,MAAO,SAC/BwhqB,YAAa,OACbxhqB,MAAO+z4B,EACPtv4B,MAAO,MACP+C,QAASuiB,EAAOgpkB,eAChBwlC,WAAY,OACZtpJ,UAAW/te,KAAK44B,OAAOm1c,UACvBz2Y,OAAQt3F,KAAKgz4B,cAAczl4B,KAAKvN,MAChCsgsB,WAAY,WACR,IAAInioB,EAAWy6nB,EAAKopB,aAAaixL,gBACjCjz4B,KAAK0ilB,WAAavkhB,EAASy6nB,EAAKqC,eAAej7rB,KAAKy5D,QAAQ3jD,IAAIrP,KAAO,YACvE,IAAK,IAAItJ,EAAI,EAAGA,EAAI6C,KAAK0ilB,WAAW5klB,OAAQX,IACpC0rB,EAAOrrB,QAAUqrB,EAAOrrB,OAAO2gE,UAAY6yG,GAAkB4nhB,EAAKopB,aAAa6wL,UAAUhq3B,EAAOo0N,SAChGj9O,KAAK0ilB,WAAWzhlB,SAAS9D,EAAEwD,WAAY,KAAK7B,QAAU+pB,EAAOrrB,OAAO2gE,WACpEn+D,KAAKlB,MAAQ+pB,EAAOrrB,OAAO2gE,SAGvC,EACAtvD,SAAU7O,KAAK44B,OAAO/pB,SAAW,iBAAwB7O,KAAK44B,OAAO/pB,SAAW,kBAEpF7O,KAAK+y4B,SAASj03B,SAASg03B,GACvB,IAAII,EAAWpya,GAAQ9ge,KAAK+y4B,SAASt50B,QAAS,QAC9Cy50B,EAAS/u4B,UAAU2C,IAAI,uBACvBos4B,EAAS3/0B,gBAAgB,WAC7B,EACAg/0B,EAAmBh04B,UAAUy04B,cAAgB,SAAU914B,GACnD,IAAI07rB,EAAO54rB,KAAK44B,OACZq+F,EAAM2hkB,EAAKqC,eAAe/9rB,EAAEu8D,QAAQrpD,aAAa,OACrDlT,EAAE2rB,OAASouG,EACX2hkB,EAAKopB,aAAa6wL,UAAU57wB,EAAIgmH,OAAS//O,EAAE4B,MAC3C85rB,EAAK56lB,OjJkNqB,yBiJlNe9gG,EAC7C,EACOq14B,CACX,CAxNwC,CAwNtCr2L,ICvOEi3L,IAA8B,WAC9B,SAASA,EAAav62B,EAAQw62B,EAAqBl7M,EAAgBzK,GAC/DztrB,KAAKg/0B,OAASh/0B,KAAKi/0B,aAAa1x0B,KAAKvN,MACrCA,KAAK44B,OAASA,EACd54B,KAAKk4rB,eAAiBA,EACtBl4rB,KAAKytrB,eAAiBA,EACtBztrB,KAAKqz4B,sBAAwBD,EACzBpz4B,KAAK44B,SACL54B,KAAK44B,OAAOsI,GAAGj6B,GAAwBjH,KAAKsz4B,oBAAqBtz4B,MACjEA,KAAK44B,OAAOsI,GAAGj6B,GAAgBjH,KAAKsz4B,oBAAqBtz4B,MAEjE,CA+FA,OApFAmz4B,EAAa504B,UAAUg14B,iBAAmB,SAAUC,EAAerx3B,EAAQ0G,EAAQ02zB,EAAQphxB,GACvFn+D,KAAKojrB,UAAYm8J,EACjB,IAAI9vJ,EAAO5mqB,EAAOpiB,KAAO,WACzBzG,KAAKyz4B,SAAWzz4B,KAAK0z4B,WAAc1iuB,GAAkB7yG,GAC/C6yG,GAAkBhxK,KAAK44B,OAAO60pB,eAAeolN,YAAe7huB,GAAkBhxK,KAAK44B,OAAO60pB,eAAeolN,UAAU,GAAKpjN,IACpEzvrB,KAAKqz4B,sBAAsB,GAAK5jN,GAAlFzvrB,KAAK44B,OAAO60pB,eAAeolN,UAAU,GAAKpjN,GAFetxnB,EAGjE,IAAIw10B,EAAiB3z4B,KAAK0z4B,WACtBE,EAAgB5z4B,KAAK6z4B,gBAAgBhr3B,EAAQ4mqB,GAC7CqkN,EAAU9z4B,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,kBAC5Dsn4B,EAAcj83B,YAAYu83B,GAC1B,IAAIC,EAAY/z4B,KAAK44B,OAAOoF,cAAc,QAAS,CAAEloB,GAAI+S,EAAOqqD,IAAM,YACtE4g0B,EAAQv83B,YAAYw83B,GACpB/z4B,KAAK+y4B,SAAW,IAAIv/O,GAAa,CAC7B9wE,WAAYixT,EACZlilB,OAAQ,CAAEpjT,KAAM,OAAQvP,MAAO,SAC/B+P,SAAU7O,KAAK44B,OAAO/pB,SAAW,kBAAyB7O,KAAK44B,OAAO/pB,SAAW,iBACjFk/d,UAAW/te,KAAK44B,OAAOm1c,UACvB1/d,KAAMul4B,EAENt8yB,OAAQ,WACJ,IAAI08yB,EAAWz+2B,SAASpgB,cAAc,sBAAsBA,cAAc,SACvD,YAAfnV,KAAKlB,OAAsC,eAAfkB,KAAKlB,OAClB,WAAfkB,KAAKlB,OAAqC,cAAfkB,KAAKlB,MAChCk14B,EAAwB,cAAE,GAAY,SAAI,EAEpChjuB,GAAkBgjuB,EAAS5j4B,aAAa,eAC9C4j4B,EAAwB,cAAE,GAAY,SAAI,EAElD,IAEJh04B,KAAK+y4B,SAAS1l4B,iBAAiBg4rB,GAAkBrlsB,KAAKg/0B,QACtDh/0B,KAAK+y4B,SAASj03B,SAAS,IAAM+J,EAAOqqD,IAAM,UAC9C,EACAig0B,EAAa504B,UAAU014B,6BAA+B,SAAU7o0B,GAC5DA,EAAKo0L,MAAM/lM,QAAQp1D,MAAMd,MAAQ,MACrC,EACA4v4B,EAAa504B,UAAU0g1B,aAAe,SAAU7zwB,GAC5CA,EAAKo0L,MAAM/lM,QAAQp1D,MAAMmkD,QAAUxoD,KAAKojrB,UAAU56nB,OAAS,GAAG7nD,WAC1DX,KAAK44B,OAAOojrB,kBACZh8sB,KAAKi04B,6BAA6B7o0B,EAE1C,EAEA+n0B,EAAa504B,UAAUs14B,gBAAkB,SAAU58wB,EAAKw4jB,GAGpD,IAFA,IAAIykN,EAAW,GAEN/5qB,EAAK,EAAG6ge,EADHh7rB,KAAK44B,OAAO60pB,eAAetsjB,QACHg5F,EAAK6ge,EAAUl9rB,OAAQq8N,IAAM,CAC/D,IAAItxM,EAASmyqB,EAAU7ge,GACvB,GAAIljG,EAAIgmH,QAAUp0N,EAAOo0N,OAAUhmH,EAAIgwiB,mBAAqBhwiB,EAAImwiB,kBAAoBv+oB,EAAOo0N,MAAQ,CAC/F,IAAIk3pB,EAAgB,IAAIhgQ,GAAYn0oB,KAAKyz4B,UAAU/sQ,cAAa,IAAIhB,IAAQ/viB,MAAM,QAAS,QAAS9sE,EAAOs1C,WAC3G+10B,EAAYljuB,GAAkBmjuB,EAAc,IAA8B,GAAxBA,EAAc,GAAG9l4B,IACvE,CACJ,CACA,GAAiB,KAAb6l4B,EACA,GAAIj9wB,EAAIz5H,OAAO2gE,SAEX,IADA,IAAIi20B,EAAUh34B,OAAOC,KAAK2C,KAAKyz4B,UAAU314B,OAChCX,EAAI,EAAGA,EAAIi34B,EAASj34B,IACrB6C,KAAKyz4B,SAASxy4B,SAAS9D,EAAEwD,WAAY,KAAK7B,QAAUm4H,EAAIz5H,OAAO2gE,WAC/D+10B,EAAWl04B,KAAKyz4B,SAASxy4B,SAAS9D,EAAEwD,WAAY,KAAK0N,WAK7D6l4B,EAAWl04B,KAAKyz4B,SAAS,GAAGpl4B,KAGpC,OAAO6l4B,CACX,EAKAf,EAAa504B,UAAU814B,cAAgB,WACnC,OAAOr04B,KAAK+y4B,SAASj04B,KACzB,EACAq04B,EAAa504B,UAAU+04B,oBAAsB,WACrCtz4B,KAAK+y4B,SAAS7wa,cAGlBlie,KAAK+y4B,SAASl60B,oBAAoBwsoB,GAAkBrlsB,KAAKg/0B,QACzDh/0B,KAAK+y4B,SAAStv0B,UACdzjE,KAAK44B,OAAOyW,IAAIpoC,GAAwBjH,KAAKsz4B,qBAC7Ctz4B,KAAK44B,OAAOyW,IAAIpoC,GAAgBjH,KAAKsz4B,qBACzC,EACOH,CACX,CA3GkC,GCV9BjypB,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAUIy14B,IAAgB,qBACpB9hP,GAAoBz1jB,KAAO,aAC3B,IAAIiiI,IAAc,CACd5iI,UAAW,KACXp8B,QAAS,IAkBTssY,IAA0B,SAAU9nP,GASpC,SAAS8nP,EAASttb,EAASy6C,GACvB,OAAO+qJ,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,IAClD,CAs6BA,OAh7BAkhP,IAAUorN,EAAU9nP,GAiBpB8nP,EAAS/tc,UAAUgwe,UAAY,WAC3B/pR,EAAOjmN,UAAUgwe,UAAUxue,KAAKC,KACpC,EACAssc,EAAS/tc,UAAU4qpB,cAAgB,WAC/B,MAAO,WACX,EACA78M,EAAS/tc,UAAU85pB,UAAY,WACE,aAAzBr4pB,KAAKgje,kBACLtE,GAAa53d,IAAI9G,KAAK61pB,aAAa71lB,QAAQ,GAAI,YAAahgE,KAAKu04B,YAAav04B,MAC9E0+d,GAAa53d,IAAI9G,KAAK61pB,aAAaz5jB,UAAW,OAAQp8F,KAAK83pB,cAAe93pB,OAEzEgxK,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAC7C0+Z,GAAa53d,IAAI9G,KAAK61pB,aAAa71lB,QAAQ,GAAI,YAAahgE,KAAKs4pB,cAAet4pB,MAEpF0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAKw04B,YAAax04B,MAC1DA,KAAKw3c,WACNknB,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAK4za,QAAS5za,MAC3D0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAKo9pB,WAAYp9pB,MAC9D0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,UAAW1kc,KAAKs9pB,aAAct9pB,MAClE0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAKi/pB,aAAcj/pB,MAChE0+d,GAAa53d,IAAInC,OAAQ,SAAU3E,KAAKw4pB,aAAcx4pB,OAE1DA,KAAKy4pB,iBACT,EACAnsN,EAAS/tc,UAAUg24B,YAAc,SAAUr34B,IACjC8C,KAAK6xlB,gBAAkBt8jB,SAAS0+P,gBAAkBj0R,KAAK0kc,cACxDnva,SAAS0+P,cAAc9vR,UAAUC,SAASoupB,GAAoB/oiB,SAAUyzW,GAAQK,WAAaL,GAAQK,UACtGrge,EAAEijE,gBAEV,EACAmsY,EAAS/tc,UAAUu5pB,cAAgB,SAAU56pB,GACzC,IAAI+tR,EAAajrR,KAAK0kc,cAA4C,KAA5B1kc,KAAK0kc,aAAa5lc,MACpD,KAAOkB,KAAK0kc,cAAgB1kc,KAAK0kc,aAAa5lc,MAC7CkyK,GAAkBhxK,KAAKwnpB,WAAcx2e,GAAkBi6G,IAAeA,IAAejrR,KAAKqO,MAC3FrO,KAAKwolB,YAAYtrlB,GAErBsnN,EAAOjmN,UAAUu5pB,cAAc/3pB,KAAKC,KAAM9C,EAC9C,EACAovc,EAAS/tc,UAAU0hV,cAAgB,WAC/B,OAAOjgV,KAAK0kc,YAChB,EAEA4H,EAAS/tc,UAAUwlqB,WAAa,SAAU11pB,GACtCyvnB,GAAMnqW,SAAS3zR,KAAKqO,KAAMrO,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBACvE3ioB,KAAKwolB,cACLxolB,KAAKk2pB,iBACT,EAEA5pN,EAAS/tc,UAAUylqB,YAAc,SAAUllqB,GACnCkB,KAAKw2pB,YACLx2pB,KAAKy04B,gBAAgBz04B,KAAKlB,OAG1BkB,KAAKy04B,gBAAgB,MAEzBz04B,KAAKk2pB,kBACLl2pB,KAAK63pB,gBACT,EACAvrN,EAAS/tc,UAAUk24B,gBAAkB,SAAU314B,GAC3CA,EAAQkB,KAAKu2pB,qBAAuBvlf,GAAkBlyK,GAASivN,GAAU/tN,KAAKyxT,OAAO3yT,MAASkB,KAAKyxT,OAAO3yT,MAAQ,GAAIA,GAASA,EAC/H,IAAImsR,EAAaj6G,GAAkBlyK,GAAS,KAAOA,EAAM6B,WACzDm9nB,GAAMnqW,SAAS1I,EAAYjrR,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBACpE3ioB,KAAKu2pB,qBACLz3pB,EAAQkB,KAAKuypB,eAAezzpB,IAEhCkB,KAAKiie,cAAc,CAAEnje,MAAOA,EAAOuP,KAAMvP,EAAO6tB,MAAO,OAAQ,GAC/D3sB,KAAK8zpB,YAAc9zpB,KAAK2sB,MACxB,IAAI8kS,EAASzxT,KAAKyxT,OACdsrV,EAAW,CAAC,EAChBA,EAAStrV,EAAOpjT,MAAQ2iK,GAAkBlyK,GAAS,KAAOA,EAAM6B,WAChEo8oB,EAAStrV,EAAO3yT,OAASkyK,GAAkBlyK,GAAS,KAAOA,EAAM6B,WACjEX,KAAKkloB,SAAW6X,EAChB/8oB,KAAKq1E,KAAO,OACNr1E,KAAKu2pB,oBAAuBv2pB,KAAKywa,gBAAkBzwa,KAAKlB,OAAYkB,KAAKu2pB,oBAAsBv2pB,KAAKywa,eAAiBzwa,KAAKlB,QAAUkB,KAAK0tpB,gBAAgB1tpB,KAAKywa,cAAe,CAACzwa,KAAKlB,UACrLkB,KAAKi9pB,kBAAkB,KAE/B,EACA3wN,EAAS/tc,UAAUq5pB,aAAe,WAC9B,GAAK5mf,GAAkBhxK,KAAKlB,OA0CvB,GAAIkB,KAAKqO,MAAQ2iK,GAAkBhxK,KAAKlB,OAAQ,EAC7C84S,EAAK53S,KAAKu3pB,iBAAiBv3pB,KAAKqO,OAEhCrO,KAAK42pB,aAAah/W,EAAI,OAGtBkmV,GAAMnqW,SAAS3zR,KAAKqO,KAAMrO,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBACvE3ioB,KAAKwolB,cAEb,MAEIxolB,KAAK42pB,aAAa52pB,KAAK0hpB,cAAc1hpB,KAAK8zpB,aAAc,UArDxB,CAChC,IACIl8W,EADAptB,EAAexqR,KAAKu2pB,qBAAuBvlf,GAAkBhxK,KAAKlB,OAASivN,GAAU/tN,KAAKyxT,OAAO3yT,MAASkB,KAAKyxT,OAAO3yT,MAAQ,GAAIkB,KAAKlB,OAASkB,KAAKlB,MAErJ414B,GAAiB1juB,GADjB4mI,EAAK53S,KAAKw3pB,kBAAkBhtY,IAEhC,GAAIxqR,KAAKw1pB,sBAAwBx1pB,KAAKlB,MAAO,CACzC,IAeQi4P,EAfJ06D,EAAUzxT,KAAKyxT,OAAO3yT,MAASkB,KAAKyxT,OAAO3yT,MAAQ,GACnD614B,EAAiB304B,KAAKu2pB,qBAAuBvlf,GAAkBhxK,KAAKlB,OAASivN,GAAU/tN,KAAKyxT,OAAO3yT,MAASkB,KAAKyxT,OAAO3yT,MAAQ,GAAIkB,KAAKlB,OAASkB,KAAKlB,MAC3J,GAAIkB,KAAK0ilB,sBAAsByxD,IAE3B,IADIp9Y,EAAU,IAAIo9Y,GAAYn0oB,KAAKgtpB,wBAAwBtmB,cAAa,IAAIhB,IAAQ/viB,MAAM,IAAIuxiB,GAAUz1U,EAAQ,QAASkjlB,OAC1G59oB,EAAQj5P,OAAS,EAAG,CAC/BkC,KAAKkloB,SAAWnuY,EAAQ,GACxB29oB,GAAgB,EAChB,IAAI33P,EAAW/8oB,KAAKs2pB,cAChBx3pB,EAAQkB,KAAKu2pB,mBAAqBv2pB,KAAKuypB,eAAexV,EAASj+oB,OAASi+oB,EAASj+oB,OAChFkB,KAAKlB,QAAUi+oB,EAASj+oB,OAASkB,KAAKqO,OAAS0uoB,EAAS1uoB,MAAUrO,KAAKlB,QAAUi+oB,EAASj+oB,OAASkB,KAAKqO,OAAS0uoB,EAAS1uoB,OAC3HrO,KAAKiie,cAAc,CAAE,KAAQ86K,EAAS1uoB,KAAM,MAASvP,GAE7D,OAIA,IADIi4P,EAAU,IAAIo9Y,GAAYn0oB,KAAK0ilB,YAAYgkD,cAAa,IAAIhB,IAAQ/viB,MAAM,IAAIuxiB,GAAUz1U,EAAQ,QAASkjlB,OAC9F59oB,EAAQj5P,OAAS,EAAG,CAC/BkC,KAAKkloB,SAAWnuY,EAAQ,GACxB29oB,GAAgB,EACZ33P,EAAW/8oB,KAAKs2pB,cAChBx3pB,EAAQkB,KAAKu2pB,mBAAqBv2pB,KAAKuypB,eAAexV,EAASj+oB,OAASi+oB,EAASj+oB,OAChFkB,KAAKlB,QAAUi+oB,EAASj+oB,OAASkB,KAAKqO,OAAS0uoB,EAAS1uoB,MAAUrO,KAAKlB,QAAUi+oB,EAASj+oB,OAASkB,KAAKqO,OAAS0uoB,EAAS1uoB,OAC3HrO,KAAKiie,cAAc,CAAE,KAAQ86K,EAAS1uoB,KAAM,MAASvP,GAE7D,CAER,CACI84S,EACA53S,KAAK42pB,aAAah/W,EAAI,OAEf53S,KAAKw1pB,sBAAwBx1pB,KAAKw2pB,aAAiBx2pB,KAAKw2pB,aAAex2pB,KAAKw1pB,uBAAyBk/O,EAC5G104B,KAAKy04B,gBAAgBz04B,KAAKlB,SAEpBkB,KAAKw1pB,sBAAyBx1pB,KAAKw1pB,uBAAyBk/O,IAClE104B,KAAKy04B,gBAAgB,KAE7B,CAcAz04B,KAAK63pB,iBACL/5B,GAAMnqW,SAAS3zR,KAAKqO,KAAMrO,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,gBAC3E,EACAr2L,EAAS/tc,UAAU4hoB,gBAAkB,WAC7BngoB,KAAK2ioB,kBACD3ioB,KAAK0kc,cAA4C,KAA5B1kc,KAAK0kc,aAAa5lc,QAAiBkB,KAAKw3c,SAC7D9kZ,GAAY,CAAC1yD,KAAK61pB,aAAav0B,aAAckxB,GAAoBW,eAGjE1gmB,GAAS,CAACzyD,KAAK61pB,aAAav0B,aAAckxB,GAAoBW,eAG1E,EACA7mN,EAAS/tc,UAAU44pB,kBAAoB,WAWnC,MAVqB,CACjB,KAAQ,WACR,oBAAqB,OACrB,kBAAmBn3pB,KAAKszpB,cAAcx9oB,GACtC,gBAAiB,QACjB,gBAAiB9V,KAAKw3c,SAAS72c,WAC/B,aAAgB,MAChB,eAAkB,MAClB,WAAc,QAGtB,EACA2rc,EAAS/tc,UAAU8+pB,YAAc,SAAUngqB,GACvC8C,KAAKs0pB,SAAU,EACXt0pB,KAAKkxpB,eACL1sc,EAAOjmN,UAAU8+pB,YAAYt9pB,KAAKC,KAAM9C,GACpC8C,KAAKohpB,WAA+C,KAAlCphpB,KAAK+ypB,YAAYj0pB,MAAMyW,QACzCvV,KAAK404B,aAAa504B,KAAKohpB,UAAUjsoB,cAAc,IAAMq9oB,GAAoB56W,OAIzE53S,KAAKohpB,WAAyC,KAA5BphpB,KAAK0kc,aAAa5lc,OAAgBkB,KAAKw0pB,iBACzDx0pB,KAAK404B,aAAa504B,KAAKohpB,UAAUjsoB,cAAc,IAAMq9oB,GAAoB56W,KAE7E53S,KAAKwkoB,kBAAkBtnoB,GAE/B,EACAovc,EAAS/tc,UAAU+4pB,eAAiB,WAChC,MAAO,cACX,EACAhrN,EAAS/tc,UAAUogqB,aAAe,WAG9B,OAFA3+pB,KAAK+ypB,YAAc/ypB,KAAK0kc,aACE1kc,KAAKkxpB,eAAkBlxpB,KAAKwnf,SAAoC,aAAzBxnf,KAAKgje,gBAAmChje,KAAK61pB,aAAe72b,GAEjI,EAEAstO,EAAS/tc,UAAUmupB,iBAAmB,SAAUtL,EAAW9yjB,EAAMpxF,EAAG43pB,GAChE,IAAIl0c,EAAQ5gN,KACZwkN,EAAOjmN,UAAUmupB,iBAAiB3spB,KAAKC,KAAMohpB,EAAW9yjB,EAAMpxF,GAC1D8C,KAAKi1pB,gBACLj1pB,KAAKk2pB,kBAEJl2pB,KAAKw0pB,iBAA4C,aAAzBx0pB,KAAKgje,kBAAkChje,KAAKs0pB,SAAYt0pB,KAAKw1pB,sBACtFr9nB,YAAW,WACPyoL,EAAMi0rB,cACV,GAER,EACAvoc,EAAS/tc,UAAUwiqB,gBAAkB,WACjC,IAAIhkB,EAAW/8oB,KAAKi1pB,eAAiB,CAAE5mpB,KAAM,IAAOrO,KAAKs2pB,cACrDxhY,EAAY9jH,GAAkBhxK,KAAKsuF,MAAsEtuF,KAAKsuF,KAAnEtuF,KAAKsuF,KAAKn5E,cAAc,IAAMq9oB,GAAoB19X,UAEjG,GADiBioX,EAAS1uoB,MAAQ0uoB,EAAS1uoB,KAAK1N,aAAeX,KAAK0kc,aAAa5lc,QAAUkyK,GAAkB8jH,GAEzG,OAAOA,EAEX,IAAKooM,GAAQK,WAAav9d,KAAKk1pB,kBAAoBh4L,GAAQK,YACtDvsT,GAAkBhxK,KAAK0hpB,gBAAkB1hpB,KAAK0hpB,cAAc5jpB,OAAS,EAAG,CACzE,IAAImtR,EAAajrR,KAAK0kc,aAAa5lc,MAC/B4jlB,EAAa1ilB,KAAKutpB,WAClB9mpB,EAAOzG,KAAK2npB,WAAWjlE,GAAYw9D,OACnCgc,EAAaxua,GAAOu9B,EAAYjrR,KAAK0hpB,cAAe1hpB,KAAK09pB,YAAY,EAAMh7E,EAAY1ilB,KAAKyxT,OAAQhrT,GACxG,GAAIzG,KAAKw1pB,sBAAuC,KAAfvqY,GAA8C,iBAAzBjrR,KAAKgje,iBAAsChje,KAAKs0pB,UAAYt0pB,KAAK6xlB,eAAgB,CACnI,IAAI0nE,GAA2B,EAiB/B,KAhBKv5pB,KAAKknpB,aAAar3Q,UAAY7vY,KAAKympB,qBAAuBzmpB,KAAKympB,qBAAuBzmpB,KAAK0xX,gBAA+C,GAA5B1xX,KAAKympB,uBACpH8S,GAA2B,EAC3Bv5pB,KAAK0mpB,sBAAwB1mpB,KAAKympB,oBACF,GAA5BzmpB,KAAKympB,oBACLzmpB,KAAKympB,oBAAsB,IAAMzmpB,KAAK0xX,eAAiB1xX,KAAK0xX,eAAiB,IAG7E1xX,KAAKympB,oBAAsBzmpB,KAAKympB,oBAAsB,IAAMzmpB,KAAK0xX,eAAiB1xX,KAAK0xX,eAAiB1xX,KAAKympB,oBAAsB,IAEvIzmpB,KAAKwppB,sBAAsBxppB,KAAK0mpB,sBAAuB1mpB,KAAKympB,qBAC5D8S,GAA2B,IAEM,IAAjCv5pB,KAAKknpB,aAAa54iB,YAAoBirjB,IACtCv5pB,KAAK2ppB,sBAAsB,EAAG3ppB,KAAKo+X,WAEvC89R,EAAaxua,GAAOu9B,EAAYjrR,KAAKuwpB,yBAA0BvwpB,KAAK09pB,YAAY,EAAMh7E,EAAY1ilB,KAAKyxT,OAAQhrT,GACxGuqK,GAAkBkrf,EAAW7mlB,OAASr1E,KAAKympB,oBAAsBzmpB,KAAK0xX,gBAAgB,CASzF,GARA1xX,KAAK0mpB,sBAAwB1mpB,KAAKympB,oBAClCzmpB,KAAKympB,oBAAsBzmpB,KAAKympB,oBAAsB,IAAMzmpB,KAAK0xX,eAAiB1xX,KAAK0xX,eAAiB1xX,KAAKympB,oBAAsB,IACnIzmpB,KAAKwppB,sBAAsBxppB,KAAK0mpB,sBAAuB1mpB,KAAKympB,qBAC5D8S,GAA2B,GACU,IAAjCv5pB,KAAKknpB,aAAa54iB,YAAoBirjB,IACtCv5pB,KAAK2ppB,sBAAsB,EAAG3ppB,KAAKo+X,YAGlCptN,GADLkrf,EAAaxua,GAAOu9B,EAAYjrR,KAAKuwpB,yBAA0BvwpB,KAAK09pB,YAAY,EAAMh7E,EAAY1ilB,KAAKyxT,OAAQhrT,IAC3E,CAChCy1pB,EAAWvvoB,MAAQuvoB,EAAWvvoB,MAAQ3sB,KAAK0mpB,sBAC3C,KACJ,CACA,GAAI11e,GAAkBkrf,IAAel8pB,KAAKympB,qBAAuBzmpB,KAAK0xX,eAAgB,CAClF1xX,KAAK0mpB,sBAAwB,EAC7B1mpB,KAAKympB,oBAAsB,IAAMzmpB,KAAK0xX,eAAiB1xX,KAAK0xX,eAAiB,IAC7E,KACJ,CACJ,CACA,GAAIwqS,EAAWvvoB,UACJ3sB,KAAKknpB,aAAa54iB,YAAc4tjB,EAAWvvoB,UAAcuvoB,EAAWvvoB,OAAS3sB,KAAKknpB,aAAar3Q,WAAY,CAC9G,IAAIvhS,EAAa4tjB,EAAWvvoB,OAAU3sB,KAAKo+X,UAAY,EAAK,GAAK,EAAI89R,EAAWvvoB,OAAU3sB,KAAKo+X,UAAY,EAAK,GAAK,EACjHyR,EAAW7vY,KAAKknpB,aAAa54iB,WAAatuG,KAAKo+X,UAAYp+X,KAAK0xX,eAAiB1xX,KAAK0xX,eAAiB1xX,KAAKknpB,aAAa54iB,WAAatuG,KAAKo+X,UAC3I9vR,GAActuG,KAAKknpB,aAAa54iB,YAChCtuG,KAAK2ppB,sBAAsBr7iB,EAAYuhS,EAE/C,CAEJ,GAAK7+N,GAAkBkrf,EAAW7mlB,MAU9Br1E,KAAK2ppB,sBAAsB,EAAG3ppB,KAAKo+X,WAEnCp+X,KAAKsuF,KAAKj1D,uBAAuB,yBAAyB,GAAGh1B,MAAQrE,KAAKmqpB,qBAC1EnqpB,KAAKsuF,KAAKmN,UAAY,MAbe,CAErC,GADcz7F,KAAK6wpB,gBAAgBqL,EAAW7mlB,KAAKjlE,aAAa,eAAiBpQ,KAAKqmpB,cACxErmpB,KAAKo+X,UAAY,EAAG,CAC1B9vR,EAAatuG,KAAKknpB,aAAa54iB,YAAetuG,KAAKo+X,UAAY,EAAK,GAAKp+X,KAAK0xX,eAAiB1xX,KAAKknpB,aAAa54iB,YAAetuG,KAAKo+X,UAAY,EAAK,GAAKp+X,KAAK0xX,eAChKme,EAAW7vY,KAAKknpB,aAAa54iB,WAAatuG,KAAKo+X,UAAYp+X,KAAK0xX,eAAiB1xX,KAAK0xX,eAAiB1xX,KAAKknpB,aAAa54iB,WAAatuG,KAAKo+X,UAC/Ip+X,KAAK2ppB,sBAAsBr7iB,EAAYuhS,EAC3C,CACAqsR,EAAW7mlB,KAAOr1E,KAAKw3pB,kBAAkB0E,EAAW7mlB,KAAKjlE,aAAa,cAC1E,CAOI8rpB,GAAcA,EAAW7mlB,OACzB6mlB,EAAW7mlB,KAAOr1E,KAAKw3pB,kBAAkB0E,EAAW7mlB,KAAKjlE,aAAa,eAE9E,CACA,IAAI6jR,EAAgBioY,EAAW7mlB,KAC/B,GAAK27F,GAAkBijH,GAqBfj0R,KAAKi1pB,gBAAqD,KAAnCj1pB,KAAK0kc,aAAa5lc,MAAMyW,SAC/CvV,KAAKm2pB,cACAn2pB,KAAKw1pB,uBACNx1pB,KAAKsuF,KAAKmN,UAAY,QAxBK,CACnC,IAAIhzE,EAAQzoB,KAAK6wpB,gBAAgB58X,EAAc7jR,aAAa,eAAiB,EACzE5M,EAASvC,SAAS0B,iBAAiB3C,KAAK0hpB,cAAc,GAAI,MAAM5kkB,iBAAiB,UAAW,IAChG,IAAKx4E,MAAMd,IAAoC,iBAAzBxD,KAAKgje,gBAAoC,CAC3Dhje,KAAKm2pB,cACL,IAAI2+O,EAAY904B,KAAKyxT,OAAO+rV,QAAUx9oB,KAAK0hpB,cAAc,GAAG16T,aAAe,EAC3E,GAAKhnV,KAAKw1pB,sBAMN,GADAx1pB,KAAKsuF,KAAKj1D,uBAAuB,yBAAyB,GAAGh1B,MAAQrE,KAAKmqpB,qBACtEnqpB,KAAKw1pB,uBAAyBx1pB,KAAKyxT,OAAO+rV,QAAS,CACnD,IAAIic,EAAsBz5pB,KAAKgnpB,iBAAmBhnpB,KAAKgnpB,gBAAgB14iB,WAAa2lL,EAAcsiL,UAAav2c,KAAKgnpB,gBAAgB14iB,WAAa2lL,EAAc+yD,aAAgB/yD,EAAcsiL,UAC7Lv2c,KAAKsuF,KAAKmN,UAAYg+jB,EAAuBz5pB,KAAKsuF,KAAK7gE,iBAAiB,mBAAmB3vB,OAASm2R,EAAc+yD,YACtH,OARAhnV,KAAKsuF,KAAKmN,UAAYhzE,EAAQjlB,EAASsx4B,EAU3Cri1B,GAAS,CAACwhO,GAAgBu+X,GAAoB5jZ,MAClD,CACJ,CASA,OAAOqlB,CACX,CAEI,OAAO,IAEf,EACAq4K,EAAS/tc,UAAUo1R,SAAW,SAAUz2R,GAIpC,OAHKA,GAAgB,YAAXA,EAAEuJ,MAAmC,UAAbvJ,EAAE8kN,QAAwB9kN,GAAgB,UAAXA,EAAEuJ,OAC/DzG,KAAKw9pB,sBAELx9pB,KAAK6tc,UAAqC,aAAzB7tc,KAAKgje,iBAAkC9le,GAAgB,YAAXA,EAAEuJ,MAAmC,UAAbvJ,EAAE8kN,QACvFhiN,KAAKw0pB,iBAAkB,EACvBx0pB,KAAK604B,aAAa334B,IACX,GAGAsnN,EAAOjmN,UAAUo1R,SAAS5zR,KAAKC,KAAM9C,EAEpD,EACAovc,EAAS/tc,UAAU6lqB,iBAAmB,WAClC,IAAItlqB,EAAQkB,KAAKu2pB,qBAAuBvlf,GAAkBhxK,KAAKlB,OAASivN,GAAU/tN,KAAKyxT,OAAO3yT,MAASkB,KAAKyxT,OAAO3yT,MAAQ,GAAIkB,KAAKlB,OAASkB,KAAKlB,MAClJkB,KAAKkloB,SAAWlloB,KAAKuypB,eAAezzpB,GACpC,IAAIi+oB,EAAW/8oB,KAAKs2pB,cAChB3iY,EAAW3zR,KAAKu2pB,mBAAqBv2pB,KAAKkloB,SAAW6X,EAASj+oB,MAC5DkB,KAAKw2pB,aAAexlf,GAAkB+re,EAASj+oB,QAAUkyK,GAAkB+re,EAAS1uoB,OACtFrO,KAAKiie,cAAc,CAAE,MAAStuM,IAAa3zR,KAAKw2pB,YAExD,EAOAlqN,EAAS/tc,UAAUy2nB,YAAc,WACzBhkd,GAAkBhxK,KAAK05pB,kBACvB15pB,KAAK05pB,eAA2C,iBAAzB15pB,KAAKgje,gBAAuChje,KAAK61pB,aAAa71lB,QAAQ,IACzFhgE,KAAK61pB,aAAav0B,aAClBxD,GAAMuE,WAAW,sBAAwBiyQ,IAAet04B,KAAK61pB,aAAaz5jB,UAAWp8F,KAAKg+B,eACzFh+B,KAAK61pB,aAAa71lB,QAAQ,IAAMhgE,KAAK61pB,aAAav0B,YACvD7ukB,GAAS,CAACzyD,KAAK05pB,gBAAiBlH,GAAoBa,aACpDziC,GAAc,CACVzumB,OAAQniB,KAAK05pB,eACbn2pB,MAAO25d,GAAQK,SAAW,OAAS,QACpCv9d,KAAKg+B,eACRg3lB,GAAYh1nB,KAAK05pB,gBAEzB,EAOAptN,EAAS/tc,UAAUs3nB,YAAc,WACxB7kd,GAAkBhxK,KAAK05pB,kBACxB7jC,GAAY71nB,KAAK05pB,gBACjBhnmB,GAAY,CAAC1yD,KAAK05pB,gBAAiBlH,GAAoBa,aACnDrzpB,KAAK05pB,eAAev1pB,UAAUC,SAASkw4B,KACvCj0a,GAAOrge,KAAK05pB,gBAGZ15pB,KAAK05pB,eAAe/6oB,UAAY,GAEpC3e,KAAK05pB,eAAiB,KAE9B,EACAptN,EAAS/tc,UAAUw24B,YAAc,SAAU9gnB,EAAe+gnB,GAItD,GAHKA,GACDh14B,KAAK404B,aAAa3gnB,GAElBj0R,KAAK6tc,WAAa7tc,KAAKw0pB,gBAAiB,CACxC,IAAIhqY,EAAexqR,KAAK+qpB,eAAe92X,EAAc7jR,aAAa,eAAezP,WAC7Es04B,EAAmBj14B,KAAKqopB,kBAAkBp0X,EAAc7jR,aAAa,eAC5C,aAAzBpQ,KAAKgje,mBACAhje,KAAK2gE,aAAiB3gE,KAAKu2pB,oBAAsBv2pB,KAAKywa,gBAAkBwke,GAAuBj14B,KAAKu2pB,oBAAsBv2pB,KAAKywa,eAAiBwke,IAAqBj14B,KAAK0tpB,gBAAgB1tpB,KAAKywa,cAAe,CAACzwa,KAAKuypB,eAAe0iP,MACpOj14B,KAAK07pB,mBAAmBznY,EAAe,MACvCj0R,KAAK2gE,YAAa,EAClB3gE,KAAKywa,cAAgBzwa,KAAKu2pB,mBAAqBv2pB,KAAKuypB,eAAevypB,KAAKqopB,kBAAkBp0X,EAAc7jR,aAAa,gBAAkBpQ,KAAKqopB,kBAAkBp0X,EAAc7jR,aAAa,gBAGzLpQ,KAAK07pB,mBAAmBznY,EAAe,MAAM,IAGhDj0R,KAAKk14B,kBAAkB1qnB,IACxBxqR,KAAKm14B,qBAAqB3qnB,EAAcwqnB,EAEhD,CACJ,EACA1oc,EAAS/tc,UAAU224B,kBAAoB,SAAUp24B,GAC7C,GAAIo+d,GAAQk4a,UAAW,CACnB,IAAIC,EAAgBr14B,KAAKu9pB,qBACrB+3O,EAAUt14B,KAAKg1pB,iBAAiB/moB,IAChCsn3B,EAASF,EAAcpn3B,IACvBun3B,EAAYx14B,KAAKg1pB,iBAAiBhnoB,MAClCyn3B,EAAWJ,EAAcrn3B,MAC7B,OAAgB,IAAZsn3B,IAAmBA,IAAYx24B,EAAMhB,QAAU034B,IAAc124B,EAAMhB,QAClE034B,EAAYC,GAAYH,EAAUC,GAAYD,IAAYC,GAAUC,IAAcC,EAM3F,CAEI,OAAO,CAEf,EACAnpc,EAAS/tc,UAAUy0c,SAAW,SAAU91c,EAAG88F,IACnCg3E,GAAkBh3E,KAAeg3E,GAAkBh3E,IAAag3E,GAAkBh3E,EAAS0of,cAC3Fl+X,EAAOjmN,UAAUy0c,SAASjzc,KAAKC,KAAM9C,GAErC8C,KAAKkxpB,gBAAkBlgf,GAAkB9zK,IAAMA,EAAEilB,SAAWniB,KAAK61pB,aAAav0B,aAC9EthoB,KAAKq9pB,YAAYngqB,EAEzB,EACAovc,EAAS/tc,UAAUs8pB,kBAAoB,SAAUphmB,GAC7C,OAAQu3G,GAAkBv3G,EAC9B,EACA6yY,EAAS/tc,UAAUs24B,aAAe,SAAU334B,GACxC,IAAIw44B,EAAiBx44B,IAAmB,SAAbA,EAAE8kN,QAAkC,OAAb9kN,EAAE8kN,QACnC,SAAb9kN,EAAE8kN,QAAkC,QAAb9kN,EAAE8kN,QAAiC,WAAb9kN,EAAE8kN,QAAoC,aAAb9kN,EAAE8kN,QACxEiyE,EAAgByhnB,EAAgB114B,KAAK0hpB,cAAc1hpB,KAAK8zpB,aAAe9zpB,KAAK+gqB,kBAChF,GAAK/vf,GAAkBijH,IASlB,GAAKjjH,GAAkBhxK,KAAK0kc,eAA6C,KAA5B1kc,KAAK0kc,aAAa5lc,MAWhEkB,KAAK8zpB,YAAc,KACnB9zpB,KAAKk2pB,kBACDl2pB,KAAK0hpB,eAAiB1hpB,KAAK0hpB,cAAc5jpB,OAAS,IAAMkC,KAAKo1pB,gBAC7Dp1pB,KAAKm2pB,mBAZT,GADAn2pB,KAAK8zpB,YAAc,MACd9if,GAAkBhxK,KAAKsuF,MAAO,CAC1BtuF,KAAKw1pB,uBACNx1pB,KAAKsuF,KAAKmN,UAAY,GAE1B,IAAI6yjB,EAAYtupB,KAAKsuF,KAAKn5E,cAAc,IAAMq9oB,GAAoB56W,IAClE53S,KAAK404B,aAAatmP,EACtB,MAjBmC,CACnC,IAAKonP,EAAe,CAChB,IAAI524B,EAAQkB,KAAKqopB,kBAAkBp0X,EAAc7jR,aAAa,eAC9DpQ,KAAK8zpB,YAAc9zpB,KAAK6wpB,gBAAgB/xpB,GACxCkB,KAAK8zpB,YAAe9if,GAAkBhxK,KAAK8zpB,aAAkC,KAAnB9zpB,KAAK8zpB,WACnE,CACA9zpB,KAAKw0pB,gBAA8C,KAA5Bx0pB,KAAK0kc,aAAa5lc,OAAuBkB,KAAKw0pB,gBACrEx0pB,KAAK+04B,YAAY9gnB,EAAeyhnB,EACpC,CAkBJ,EACAppc,EAAS/tc,UAAUimoB,kBAAoB,SAAUtnoB,GAC7C8C,KAAKq6pB,UAAUn9pB,GACV8zK,GAAkBhxK,KAAKwnpB,YACxBxnpB,KAAK604B,aAAa334B,GAClBA,EAAEijE,iBAEV,EACAmsY,EAAS/tc,UAAU424B,qBAAuB,SAAU3qnB,EAAckrnB,QACxC,IAAlBA,IAA4BA,GAAgB,GAChD,IAAIp23B,EAAYtf,KAAKu9pB,qBACjBz+pB,EAAQkB,KAAK0kc,aAAa5lc,MAAMsZ,OAAO,EAAGkH,EAAU0O,OACxD,GAAIlvB,GAAUA,EAAM2F,gBAAkB+lR,EAAapyQ,OAAO,EAAGkH,EAAU0O,OAAOvpB,cAAgB,CAC1F,IAAIwmR,EAAansR,EAAQ0rR,EAAapyQ,OAAOtZ,EAAMhB,OAAQ0sR,EAAa1sR,QACxEggoB,GAAMnqW,SAAS1I,EAAYjrR,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBACxE3ioB,KAAK0kc,aAAaz0K,kBAAkB3wQ,EAAU0O,MAAOhuB,KAAK0kc,aAAa5lc,MAAMhB,OACjF,MACS434B,IACL53Q,GAAMnqW,SAASnJ,EAAcxqR,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBAC1E3ioB,KAAK0kc,aAAaz0K,kBAAkB,EAAGjwR,KAAK0kc,aAAa5lc,MAAMhB,QAEvE,EACAwuc,EAAS/tc,UAAUgppB,eAAiB,SAAUl5oB,GAC1C,OAAOm2M,EAAOjmN,UAAUgppB,eAAexnpB,KAAKC,KAAMqO,GAAM,EAAMrO,KAAKgnoB,aACvE,EACA16L,EAAS/tc,UAAU+8pB,YAAc,WACA,aAAzBt7pB,KAAKgje,kBACLtE,GAAa73d,OAAO7G,KAAK61pB,aAAa71lB,QAAQ,GAAI,YAAahgE,KAAKu04B,aACpE71a,GAAa73d,OAAO7G,KAAK61pB,aAAaz5jB,UAAW,OAAQp8F,KAAK83pB,gBAE7D9mf,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAC7C0+Z,GAAa73d,OAAO7G,KAAK61pB,aAAa71lB,QAAQ,GAAI,YAAahgE,KAAKs4pB,eAEpEt4pB,KAAK0kc,eACLg6B,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAKw04B,aAChDx04B,KAAKw3c,WACNknB,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAK4za,SACrD8qD,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAKo9pB,YACrD1+L,GAAa73d,OAAO7G,KAAK0kc,aAAc,UAAW1kc,KAAKs9pB,cACvD5+L,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAKi/pB,cACrDvgM,GAAa73d,OAAOlC,OAAQ,SAAU3E,KAAKw4pB,gBAGnDx4pB,KAAK84pB,mBACT,EACAxsN,EAAS/tc,UAAUq4pB,aAAe,SAAUh/W,EAAI16S,GAC5CsnN,EAAOjmN,UAAUq4pB,aAAa72pB,KAAKC,KAAM43S,EAAI16S,GACxC8zK,GAAkB4mI,IAAQ53S,KAAK6tc,UAAa7tc,KAAKk1pB,iBAClDl1pB,KAAKm2pB,aAEb,EACA7pN,EAAS/tc,UAAUg8pB,kBAAoB,SAAUr9pB,GAC7C,IAAI06S,EACA53S,KAAK+zpB,eAEDn8W,EADA53S,KAAK2gE,WACA3gE,KAAKsuF,KAAKn5E,cAAc,IAAMq9oB,GAAoB19X,UAGlD90R,KAAKsuF,KAAKn5E,cAAc,IAAMq9oB,GAAoB5jZ,UAGvD5uQ,KAAK42pB,aAAah/W,EAAI16S,GACtB8C,KAAKs0pB,SAAU,GAEft0pB,KAAK2gE,aACL3gE,KAAKi1pB,gBAAiB,EACtBj1pB,KAAKy2pB,cAAcv5pB,KAGV,UAAbA,EAAE8kN,QAAyD,KAAnChiN,KAAK0kc,aAAa5lc,MAAMyW,OAChDvV,KAAKgzc,SAAS91c,GAET8C,KAAKs0pB,UAAYt0pB,KAAK2gE,YAAcqwG,GAAkB4mI,IAC3D53S,KAAKwolB,YAAYtrlB,GAErB8C,KAAKo3pB,UAAUl6pB,EACnB,EACAovc,EAAS/tc,UAAUq24B,aAAe,SAAUh9lB,GACxC53S,KAAKk2pB,kBACDl2pB,KAAKk5pB,UAAUthX,KAAQA,EAAGzzS,UAAUC,SAASoupB,GAAoB19X,YACjE90R,KAAKm2pB,cACLv+W,EAAGzzS,UAAU2C,IAAI0rpB,GAAoB5jZ,OAE7C,EACA09L,EAAS/tc,UAAUi24B,YAAc,SAAUt34B,GACnCgge,GAAQK,WAAav9d,KAAK6xlB,iBAC1B7xlB,KAAKu0pB,cAAe,GAExBv0pB,KAAKyoR,QAAQvrR,GACb4goB,GAAMS,eAAev+nB,KAAK0kc,aAAc1kc,KAAK61pB,aAAaz5jB,UAC9D,EACAkwW,EAAS/tc,UAAU+5pB,cAAgB,SAAUp7pB,GACzCA,EAAEijE,iBACE+8Z,GAAQK,WAAav9d,KAAKkxpB,gBAC1BlxpB,KAAKu0pB,cAAe,GAExB/vc,EAAOjmN,UAAU+5pB,cAAcv4pB,KAAKC,KAAM9C,EAC9C,EACAovc,EAAS/tc,UAAUiqlB,YAAc,SAAUtrlB,GACvC,IAAI0jN,EAAQ5gN,KACRlB,EAAQkB,KAAKunpB,eAAevnpB,KAAK0kc,aAAa5lc,OAClD,GAAKkB,KAAKw2pB,aAA2C,KAA5Bx2pB,KAAK0kc,aAAa5lc,MAatC,GAAuC,KAAnCkB,KAAK0kc,aAAa5lc,MAAMyW,OAAe,CAC5C,IAAIog4B,EAAkB314B,KAAKlB,MAC3B,GAAIkyK,GAAkBlyK,GAAQ,CAC1B,IAAI47pB,EAAsC,KAA5B16pB,KAAK0kc,aAAa5lc,MAAe,KAAOkB,KAAK0kc,aAAa5lc,MAEpE6wW,EAAY,CAAEthW,KAAMqspB,EAASrllB,KAAM,CAAC,GACxCr1E,KAAK4mpB,qBAAsB,EACtB5mpB,KAAKo6F,QAMNp6F,KAAK414B,0BAA0Bl7O,EAAS/qT,EAAWgmiB,GALnD314B,KAAKo/d,QAAQ,uBAAwBzvH,GAAW,SAAUA,GACtD/uJ,EAAMg1rB,0BAA0Bl7O,EAAS/qT,EAAWgmiB,EAAiBz44B,EACzE,GAKR,MAEI8C,KAAKi1pB,gBAAiB,EACtBn2pB,EAAQkB,KAAKu2pB,mBAAqBv2pB,KAAKuypB,eAAezzpB,GAASA,EAC/DkB,KAAKiie,cAAc,CAAEnje,MAAOA,MACtBkB,KAAKu2pB,oBAAsBo/O,IAAoB314B,KAAKlB,OAAWkB,KAAKu2pB,oBAAsBo/O,GAAmB314B,KAAKlB,QAAUkB,KAAK0tpB,gBAAgBioP,EAAiB,CAAC314B,KAAKlB,UAC1KkB,KAAKy2pB,cAAcv5pB,EAG/B,MACS8C,KAAKw2pB,cACVx2pB,KAAKi1pB,gBAAiB,OAvC+B,CACrD,IAAIxkP,EAAgBzwa,KAAKywa,cACrBjmJ,EAAexqR,KAAKlB,MACxBA,EAAQkB,KAAKu2pB,mBAAqBv2pB,KAAKuypB,eAAezzpB,GAASA,EAC/DkB,KAAKiie,cAAc,CAAEnje,MAAOA,IACxBkyK,GAAkBhxK,KAAKlB,QACvBg/nB,GAAMnqW,SAAS,GAAI3zR,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBAErD3ioB,KAAKu2pB,qBAAuBvlf,GAAkBhxK,KAAKlB,OAASivN,GAAU/tN,KAAKyxT,OAAO3yT,MAASkB,KAAKyxT,OAAO3yT,MAAQ,GAAIkB,KAAKlB,OAASkB,KAAKlB,MACjJkB,KAAK6tc,YAAe7tc,KAAKu2pB,oBAAsB9lP,IAAkBzwa,KAAKlB,OAAWkB,KAAKu2pB,oBAAsB9lP,GAAiBzwa,KAAK0tpB,gBAAgBj9O,EAAe,CAACzwa,KAAKlB,YAAgBkB,KAAKu2pB,oBAAsB/rY,IAAiBxqR,KAAKlB,OAAWkB,KAAKu2pB,oBAAsB/rY,IAAiBxqR,KAAK0tpB,gBAAgBljY,EAAc,CAACxqR,KAAKlB,UACxUkB,KAAKy2pB,cAAc,KAE3B,CA6BJ,EACAnqN,EAAS/tc,UAAUq34B,0BAA4B,SAAU924B,EAAO6wW,EAAW8gE,EAAevza,GACtF,IAAI0jN,EAAQ5gN,KACRyxT,EAASzxT,KAAKyxT,OACdp8O,EAAOs6R,EAAUt6R,KACjB0nkB,EAAW,CAAC,EACZ1nkB,GAAQ04I,GAAS0jG,EAAOpjT,KAAMgnE,IAAS04I,GAAS0jG,EAAO3yT,MAAOu2E,GAC9D0nkB,EAAW1nkB,GAGXs+M,GAAS89B,EAAOpjT,KAAMvP,EAAOi+oB,GAC7BppX,GAAS89B,EAAO3yT,MAAOA,EAAOi+oB,IAElC/8oB,KAAKkloB,SAAW6X,EAChB,IAAI84P,EAAc,CAAC,EACnB,GAAI714B,KAAKu2pB,mBAAoB,CACzB,IAAIl5pB,EAAO2C,KAAKwnpB,UAAYxnpB,KAAKwnpB,SAAS1ppB,OAAS,EAAIV,OAAOC,KAAK2C,KAAKwnpB,SAAS,IAAMpqpB,OAAOC,KAAK2C,KAAKkloB,UACjGlloB,KAAKwnpB,UAAYxnpB,KAAKwnpB,SAAS1ppB,OAAS,KAAiC,iBAAzBkC,KAAKgje,iBAAgE,aAAzBhje,KAAKgje,iBAAkChje,KAAK6xlB,kBAC3Ix0lB,EAAO2C,KAAKqpa,UAAYjsa,OAAOC,KAAK2C,KAAKqpa,WAAajsa,OAAOC,KAAK2C,KAAKkloB,WAG3E7noB,EAAKU,SAAQ,SAAUa,GACnBi34B,EAAYj34B,GAASA,IAAQ6yT,EAAO3yT,OAAWF,IAAQ6yT,EAAOpjT,KAAS0/M,GAAS0jG,EAAO3yT,MAAO8hN,EAAMskb,UAAY,IACpH,GACJ,CACA,IAAI4wQ,EAAa,CACbzn4B,KAAM0/M,GAAS0jG,EAAOpjT,KAAMrO,KAAKkloB,UACjCpmoB,MAAOkB,KAAKu2pB,mBAAqBs/O,EAAc9nrB,GAAS0jG,EAAO3yT,MAAOkB,KAAKkloB,UAC3Ev4mB,MAAO,MAEX3sB,KAAKiie,cAAc6za,GAAY,GAC/B914B,KAAK42pB,aAAa,KAAM,MACxB52pB,KAAKi1pB,gBAAiB,EACtBj1pB,KAAK4mpB,qBAAsB,IACrB5mpB,KAAKu2pB,oBAAuB9lP,IAAkBzwa,KAAKlB,OAAYkB,KAAKu2pB,qBAAyC,MAAjB9lP,GAAwC,OAAfzwa,KAAKlB,OAAoB2xa,IAAkBzwa,KAAK0tpB,gBAAgBj9O,EAAe,CAACzwa,KAAKlB,WAC5MkB,KAAKy2pB,cAAcv5pB,GAAG,EAE9B,EASAovc,EAAS/tc,UAAUoke,kBAAoB,SAAUiF,EAASC,GACzB,aAAzB7ne,KAAKgje,kBACLhje,KAAKikqB,UAAUr8L,GACf5ne,KAAKsxpB,iBAAiB,CAAC,SAAU,QAAS,cAAe1pL,EAASC,IAEtE,IAAK,IAAI1tQ,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAC9D,IAAI7nJ,EAAO4lH,EAAGiiC,GACd,OAAQ7nJ,GACJ,IAAK,WACDwrjB,GAAM+C,YAAY7goB,KAAKw3c,SAAUx3c,KAAK0kc,cAClC1kc,KAAKw3c,UACLknB,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAK4za,SACrD8qD,GAAa73d,OAAO7G,KAAK0kc,aAAc,QAAS1kc,KAAKo9pB,YACrD1+L,GAAa73d,OAAO7G,KAAK0kc,aAAc,UAAW1kc,KAAKs9pB,gBAGvD5+L,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAK4za,QAAS5za,MAC3D0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,QAAS1kc,KAAKo9pB,WAAYp9pB,MAC9D0+d,GAAa53d,IAAI9G,KAAK0kc,aAAc,UAAW1kc,KAAKs9pB,aAAct9pB,OAEtEA,KAAKojqB,cACL,MACJ,IAAK,iBACDpjqB,KAAK2+pB,eACD3+pB,KAAKkxpB,eAA0C,aAAzBlxpB,KAAKgje,iBAAkChyT,GAAkBhxK,KAAKsuF,OACpFk2H,EAAOjmN,UAAU6ypB,WAAWrxpB,KAAKC,MAErC,MACJ,IAAK,cACD,MACJ,QAEI,IAAI+14B,EAAa/14B,KAAKonpB,cAAc90kB,EAAMs1Z,EAASC,GACnDrjR,EAAOjmN,UAAUoke,kBAAkB5ie,KAAKC,KAAM+14B,EAAW1uP,YAAa0uP,EAAWzuP,aAC7EtnpB,KAAKkxpB,eAA0B,eAAT5+kB,GAAyB0+F,GAAkBhxK,KAAKsuF,OAAStuF,KAAK8qpB,cAC3D,aAAzB9qpB,KAAKgje,iBACLx+Q,EAAOjmN,UAAU6ypB,WAAWrxpB,KAAKC,MAKjD,CACJ,EAOAssc,EAAS/tc,UAAUupE,OAAS,WACxB08I,EAAOjmN,UAAUupE,OAAO/nE,KAAKC,MAC7BA,KAAK2+pB,eACL3+pB,KAAK6ve,gBACT,EAOAvjC,EAAS/tc,UAAUyke,cAAgB,WAC/B,MAAO,UACX,EAUA12B,EAAS/tc,UAAUqzpB,QAAU,SAAUnnoB,EAAOytX,GAC1C1zL,EAAOjmN,UAAUqzpB,QAAQ7xpB,KAAKC,KAAMyqB,EAAOytX,EAC/C,EAUAo0D,EAAS/tc,UAAUf,OAAS,SAAUkllB,EAAYz/V,EAAOwuE,GACrDjtG,EAAOjmN,UAAUf,OAAOuC,KAAKC,KAAM0ilB,EAAYz/V,EAAOwuE,EAC1D,EAQA66I,EAAS/tc,UAAU87pB,UAAY,SAAUn9pB,GAErCsnN,EAAOjmN,UAAU87pB,UAAUt6pB,KAAKC,KAAM9C,EAC1C,EAQAovc,EAAS/tc,UAAU64pB,UAAY,SAAUl6pB,GAErC,IAAI+tR,EAAajrR,KAAK0kc,cAA4C,KAA5B1kc,KAAK0kc,aAAa5lc,MAAe,KACjEkB,KAAK0kc,cAAgB1kc,KAAK0kc,aAAa5lc,MAC7C,IAAKkyK,GAAkBhxK,KAAKwnpB,UAAW,CACnC,IAAIwuP,EAAWh24B,KAAK00pB,YAChB10pB,KAAK00pB,cACL52B,GAAMnqW,SAAS3zR,KAAKy0pB,YAAaz0pB,KAAK0kc,aAAc1kc,KAAKo+nB,eAAgBp+nB,KAAK2ioB,iBAC9E3ioB,KAAK00pB,aAAc,GAEnB10pB,KAAK6tc,UACL7tc,KAAKw9pB,sBAET,IAAIzgB,EAAW/8oB,KAAKi1pB,eAAiB,CAAE5mpB,KAAM,IAAOrO,KAAKs2pB,cACrDxhY,EAAY9jH,GAAkBhxK,KAAKsuF,MAAsE,KAA9DtuF,KAAKsuF,KAAKn5E,cAAc,IAAMq9oB,GAAoB19X,UACjG,GAAI90R,KAAK0kc,cAAgBq4M,EAAS1uoB,OAASrO,KAAK0kc,aAAa5lc,QAAUkyK,GAAkB8jH,GAMrF,OALI90R,KAAK2gE,aACL3gE,KAAKy2pB,cAAcv5pB,GACnB8C,KAAKi1pB,gBAAiB,QAE1Bzwc,EAAOjmN,UAAU64pB,UAAUr3pB,KAAKC,KAAM9C,GAG1C,GAA6B,aAAzB8C,KAAKgje,iBAAqE,KAAnChje,KAAK0kc,aAAa5lc,MAAMyW,OAAe,CAC9E,IAAImtkB,EAAa1ilB,KAAKutpB,WAClB9mpB,EAAOzG,KAAK2npB,WAAWjlE,GAAYw9D,OACnC+1P,EAAavopB,GAAO1tP,KAAK0kc,aAAa5lc,MAAOkB,KAAK0hpB,cAAe,SAAS,EAAMh/D,EAAY1ilB,KAAKyxT,OAAQhrT,GAC7GzG,KAAK22pB,WAAas/O,EAAW5g0B,KACzB27F,GAAkBiluB,EAAWtp3B,SAC7Bsp3B,EAAWtp3B,MAAQ+gO,GAAO1tP,KAAK0kc,aAAa5lc,MAAOkB,KAAK0hpB,cAAe,cAAc,EAAMh/D,EAAY1ilB,KAAKyxT,OAAQhrT,GAAMkmB,OAE9H3sB,KAAK8zpB,YAAcmiP,EAAWtp3B,MACzBqkJ,GAAkBhxK,KAAK22pB,YAGnBq/O,IACLh24B,KAAKi1pB,gBAAiB,EACtBj1pB,KAAKk2pB,mBAJLl2pB,KAAK07pB,mBAAmB17pB,KAAK22pB,WAAY,MAAM,EAMvD,CACK32pB,KAAK00pB,cAAe10pB,KAAKs0pB,SAAYt0pB,KAAKi0pB,cAC3Cj0pB,KAAKwolB,YAAYtrlB,EAEzB,CACA,IAAI4B,EAAQkB,KAAKu2pB,qBAAuBvlf,GAAkBhxK,KAAKlB,OAASivN,GAAU/tN,KAAKyxT,OAAO3yT,MAASkB,KAAKyxT,OAAO3yT,MAAQ,GAAIkB,KAAKlB,OAASkB,KAAKlB,MAC9IkyK,GAAkBhxK,KAAKwnpB,WAAaxnpB,KAAKw2pB,cAAgBxlf,GAAkBi6G,IAAeA,IAAensR,GACzGkB,KAAKwolB,cAEThkY,EAAOjmN,UAAU64pB,UAAUr3pB,KAAKC,KAAM9C,EAC1C,EAMAovc,EAAS/tc,UAAUg6pB,QAAU,WACpBv4pB,KAAKsG,UAGN42d,GAAQK,WAAav9d,KAAKkxpB,gBAC1BlxpB,KAAKu0pB,cAAe,GAExB/vc,EAAOjmN,UAAUg6pB,QAAQx4pB,KAAKC,MAClC,EAOAssc,EAAS/tc,UAAU25D,MAAQ,WACvBl4D,KAAKlB,MAAQ,IACjB,EAQAwtc,EAAS/tc,UAAU05pB,SAAW,SAAU/6pB,GAEpCsnN,EAAOjmN,UAAU05pB,SAASl4pB,KAAKC,KAAM9C,EACzC,EAQAovc,EAAS/tc,UAAUixY,SAAW,WAC1B,OAAOhrL,EAAOjmN,UAAUixY,SAASzvY,KAAKC,KAC1C,EAQAssc,EAAS/tc,UAAUg0pB,eAAiB,SAAUzzpB,GAC1C,OAAO0lN,EAAOjmN,UAAUg0pB,eAAexypB,KAAKC,KAAMlB,EACtD,EAEAwtc,EAAS/tc,UAAUymqB,kBAAoB,WACnC,EAEJ33W,IAAW,CACP63K,IAAS,IACV54B,EAAS/tc,UAAW,gBAAY,GACnC8uT,IAAW,CACP63K,IAAS,IACV54B,EAAS/tc,UAAW,mBAAe,GACtC8uT,IAAW,CACP63K,GAAS,CAAC,IACX54B,EAAS/tc,UAAW,sBAAkB,GACzC8uT,IAAW,CACP63K,IAAS,IACV54B,EAAS/tc,UAAW,sBAAkB,GACzC8uT,IAAW,CACP63K,GAAS,OACV54B,EAAS/tc,UAAW,aAAS,GAChC8uT,IAAW,CACP63K,GAAS,OACV54B,EAAS/tc,UAAW,aAAS,GAChC8uT,IAAW,CACP63K,IAAS,IACV54B,EAAS/tc,UAAW,uBAAmB,GAC1C8uT,IAAW,CACP63K,IAAS,IACV54B,EAAS/tc,UAAW,iBAAa,GACpC8uT,IAAW,CACPv0P,MACDwzY,EAAS/tc,UAAW,4BAAwB,GAC/C8uT,IAAW,CACPv0P,MACDwzY,EAAS/tc,UAAW,iBAAa,GACpC8uT,IAAW,CACP63K,GAAS,OACV54B,EAAS/tc,UAAW,qBAAiB,GACxC8uT,IAAW,CACP63K,GAAS,UACV54B,EAAS/tc,UAAW,sBAAkB,GACzC8uT,IAAW,CACP63K,GAAS,OACV54B,EAAS/tc,UAAW,4BAAwB,GAC/C8uT,IAAW,CACP63K,GAAS,OACV54B,EAAS/tc,UAAW,gBAAY,GACnC8uT,IAAW,CACP63K,GAAS,OACV54B,EAAS/tc,UAAW,sBAAkB,GACzC8uT,IAAW,CACP63K,GAAS,OACV54B,EAAS/tc,UAAW,sBAAkB,GACzC8uT,IAAW,CACP63K,GAAS,OACV54B,EAAS/tc,UAAW,mBAAe,GACtC8uT,IAAW,CACP63K,GAAS,SACV54B,EAAS/tc,UAAW,aAAS,GAChC8uT,IAAW,CACP63K,GAAS,UACV54B,EAAS/tc,UAAW,mBAAe,GACtC8uT,IAAW,CACP63K,GAAS,SACV54B,EAAS/tc,UAAW,kBAAc,GACrC8uT,IAAW,CACP63K,IAAS,IACV54B,EAAS/tc,UAAW,gBAAY,GACnC8uT,IAAW,CACP63K,GAAS,OACV54B,EAAS/tc,UAAW,YAAQ,GAC/B8uT,IAAW,CACP63K,GAAS,OACV54B,EAAS/tc,UAAW,aAAS,GAChC8uT,IAAW,CACP63K,IAAS,IACV54B,EAAS/tc,UAAW,0BAAsB,GAC7C+tc,EAAWj/I,IAAW,CAClBq4K,IACDp5B,EAEP,CAl7B8B,CAk7B5BknN,IC39BK,SAAS0iP,IAAgBz80B,EAASwpL,EAAOwhZ,EAAYh+nB,GAKxD,GAJoB,WAAW3F,KAAK24D,EAAQ2iJ,aAExC3iJ,EAAQ2iJ,UAAY3iJ,EAAQ2iJ,UAAU15M,QAAQ,uBAAuB,SAAUiB,GAAS,MAAO,KAAOA,EAAMgmI,WAAW,GAAK,GAAK,KAEvH,KAAVs5G,EAAJ,CAII,IAAIkzpB,EAAc1xQ,EAAa,MAAQ,KAEvCxhZ,EAAQ,mBAAmBniP,KAAKmiP,GAASA,EAAQA,EAAMvgP,QAAQ,sCAAuC,QAItG0z4B,IAAa380B,EAAS,IAAI71D,OAHE,eAAT6C,EAAwB,KAAOw8O,EAAQ,IAAe,aAATx8O,EAC5D,IAAMw8O,EAAQ,KAAO,IAAMA,EAAQ,IAEQkzpB,GACnD,CACJ,CAQA,SAASC,IAAa380B,EAAS7rD,GAC3B,IAAK,IAAI+e,EAAQ,EAAG8sC,EAAQrsC,YAAeT,EAAQ8sC,EAAQrsC,WAAWtvB,OAAS6uB,IAAS,CACpF,GAA2C,IAAvC8sC,EAAQrsC,WAAWT,GAAOouC,UAAmE,KAAjDtB,EAAQrsC,WAAWT,GAAOvb,YAAYmE,OAAe,CACjG,IAAIzW,EAAQ26D,EAAQrsC,WAAWT,GAAO2qC,UAAU/hD,OAAO7S,QAAQkL,EAAS,uCACxE6rD,EAAQrsC,WAAWT,GAAO2qC,UAAY,GACtCmC,EAAQ96C,UAAY86C,EAAQ96C,UAAUpJ,OAASzW,EAC/C,KACJ,CAEIs34B,IAAa380B,EAAQrsC,WAAWT,GAAQ/e,EAEhD,CACJ,CAOO,SAASyo4B,IAAsB7xkB,GAElC,IADA,IAAIqud,EAAiBrud,EAAQ/2S,iBAAiB,gBACrCtwB,EAAI01xB,EAAe/0xB,OAAS,EAAGX,GAAK,EAAGA,IAAK,CACjD,IAAIuzW,EAAWmib,EAAe11xB,GAAG4Y,WAC7B1H,EAAOknB,SAASyU,eAAe6ovB,EAAe11xB,GAAGiU,aACrDs/V,EAASw/S,aAAa7hpB,EAAMwkxB,EAAe11xB,GAC/C,CACJ,CC5DA,IAAI+jP,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAaA2zpB,GAAoBz1jB,KAAO,iBAC3By1jB,GAAoB7lnB,KAAO,8CAY3B,IAAI2p2B,IAA8B,SAAU9xrB,GASxC,SAAS8xrB,EAAat33B,EAASy6C,GAC3B,IAAI4irB,EAAU73hB,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,KAGrD,OAFAq8uB,EAAQljW,YAAa,EACrBkjW,EAAQk6J,YAAa,EACdl6J,CACX,CAgeA,OA7eAn7f,IAAUo1pB,EAAc9xrB,GAoBxB8xrB,EAAa/34B,UAAUgwe,UAAY,WAC/B/pR,EAAOjmN,UAAUgwe,UAAUxue,KAAKC,KACpC,EACAs24B,EAAa/34B,UAAU4qpB,cAAgB,WACnC,MAAO,eACX,EACAmtP,EAAa/34B,UAAU+4pB,eAAiB,WACpC,MAAO,kBACX,EACAg/O,EAAa/34B,UAAUu0oB,SAAW,SAAU7vZ,GACxC,IAAIw6a,EAAcx6a,EAAQA,EAAMphP,QAAU7B,KAAKijP,MAAQjjP,KAAKijP,MAAMphP,QAAU,IAAI6joB,GAC5E5moB,EAAQkB,KAAKu2pB,qBAAuBvlf,GAAkBhxK,KAAKlB,OAASivN,GAAU/tN,KAAKyxT,OAAO3yT,MAASkB,KAAKyxT,OAAO3yT,MAAQ,GAAIkB,KAAKlB,OAASkB,KAAKlB,MAC9I4+pB,EAAmC,KAArB19pB,KAAKoqiB,aAAuBp5X,GAAkBlyK,GAAoBkB,KAAK09pB,WAAf,QACtEtzH,EAAoC,KAArBpqiB,KAAKoqiB,aAAuBp5X,GAAkBlyK,GAAkBkB,KAAKoqiB,YAAbtriB,EAC3E,GAAIkB,KAAKm5Y,WACL,GAAKn5Y,KAAKw1pB,uBAAyBxkf,GAAkBhxK,KAAK29pB,mBACtDF,EAAcz9pB,KAAK29pB,kBAAkB97pB,aAEpC,IAAK7B,KAAKw1pB,qBACX,OAAOiI,EAGf,GAAyB,OAArBz9pB,KAAKoqiB,aAA6C,KAArBpqiB,KAAKoqiB,YAAoB,CACtD,IAAIjvE,EAAWn7d,KAAK2npB,WAAW3npB,KAAK0ilB,YAAYw9D,OAChD,IAAMlgpB,KAAK0ilB,sBAAsByxD,IAA6B,WAAbh5K,IAAsC,WAAbA,EAGrE,CACD,IAAIknT,EAAWrxmB,GAAkBhxK,KAAKyxT,OAAO3yT,OAA6B,GAApBkB,KAAKyxT,OAAO3yT,MAClE2+pB,EAAY9nkB,MAAM0srB,EAAS3kH,EAAYtzH,EAAapqiB,KAAKykoB,WAAYzkoB,KAAKgnoB,aAC9E,MALIy2B,EAAY9nkB,MAAM,GAAI+nkB,EAAYtzH,EAAapqiB,KAAKykoB,WAAYzkoB,KAAKgnoB,aAM7E,CACA,IAAKh2d,GAAkBhxK,KAAKw24B,mBAAqBx24B,KAAKw1pB,qBAAsB,CAExE,GAA6B,KAAzBx1pB,KAAKw24B,gBACL,IAAK,IAAIhqP,EAAgB,EAAGA,EAAgBiR,EAAY33B,QAAQhooB,OAAQ0upB,IACtB,WAA1CiR,EAAY33B,QAAQ0mB,GAAeh6mB,IACnCirnB,EAAY33B,QAAQ7hoB,OAAOuopB,EAAe,GAItDiR,EAAYz1B,KAAKhooB,KAAKw24B,gBAC1B,CACA,GAAIx24B,KAAKw1pB,qBAAsB,CAC3B,IAAIuI,EAAiB,EACjBC,EAAiB,EACjBJ,EAAY59pB,KAAK69pB,eACrB,GAAIJ,GAAeA,EAAY33B,QAAQhooB,OAAS,EAC5C,IAAS0upB,EAAgB,EAAGA,EAAgBiR,EAAY33B,QAAQhooB,OAAQ0upB,IACtB,WAA1CiR,EAAY33B,QAAQ0mB,GAAeh6mB,KACnCwrnB,EAAiBP,EAAY33B,QAAQ0mB,GAAetvpB,EAAE+qoB,KAEZ,WAA1Cw1B,EAAY33B,QAAQ0mB,GAAeh6mB,KACnCurnB,EAAiBH,GAAaH,EAAY33B,QAAQ0mB,GAAetvpB,EAAE+qoB,IAAMw1B,EAAY33B,QAAQ0mB,GAAetvpB,EAAE+qoB,IAAM21B,GAIhI,GAAIG,GAAkB,GAAK/9pB,KAAKijP,OAASjjP,KAAKijP,MAAM6iZ,QAAQhooB,OAAS,EACjE,IAAS0upB,EAAgB,EAAGA,EAAgBxspB,KAAKijP,MAAM6iZ,QAAQhooB,OAAQ0upB,IACtB,WAAzCxspB,KAAKijP,MAAM6iZ,QAAQ0mB,GAAeh6mB,KAClCurnB,EAAiBH,GAAa59pB,KAAKijP,MAAM6iZ,QAAQ0mB,GAAetvpB,EAAE+qoB,IAAMjooB,KAAKijP,MAAM6iZ,QAAQ0mB,GAAetvpB,EAAE+qoB,IAAM21B,GAI9H,GAAIH,GAAeA,EAAY33B,QAAQhooB,OAAS,EAC5C,IAAS0upB,EAAgB,EAAGA,EAAgBiR,EAAY33B,QAAQhooB,OAAQ0upB,IACtB,WAA1CiR,EAAY33B,QAAQ0mB,GAAeh6mB,GAMO,WAA1CirnB,EAAY33B,QAAQ0mB,GAAeh6mB,KACnCurnB,EAAiBN,EAAY33B,QAAQ0mB,GAAetvpB,EAAE+qoB,KAAO81B,EAAiBA,EAAiBN,EAAY33B,QAAQ0mB,GAAetvpB,EAAE+qoB,IACpIw1B,EAAY33B,QAAQ7hoB,OAAOuopB,EAAe,KACxCA,IARFwR,EAAiBP,EAAY33B,QAAQ0mB,GAAetvpB,EAAE+qoB,IACtDw1B,EAAY33B,QAAQ7hoB,OAAOuopB,EAAe,KACxCA,GAUVwR,EAAiB,GAAKh+pB,KAAKsppB,uBAAyB0U,EACpDP,EAAYj2kB,KAAKw2kB,GAGjBP,EAAYj2kB,KAAKxnF,KAAKsppB,uBAEtByU,EAAiB,GAAKH,GAAaG,EACnCN,EAAYz1B,KAAK+1B,GAGjBN,EAAYz1B,KAAK41B,GAErBH,EAAYp1B,eAChB,CACA,OAAOo1B,CACX,EACA64O,EAAa/34B,UAAU8+pB,YAAc,SAAUngqB,GAC3C,IAAIm/uB,EAAUr8uB,KASd,GARAA,KAAKs0pB,SAAU,EACft0pB,KAAK6rpB,cAAgB7rpB,KAAKi1pB,gBAAiB,EAC3Cj1pB,KAAKqpa,UAAYrpa,KAAK0ilB,YAAc1ilB,KAAK0ilB,WAAW5klB,OAAS,EAAIkC,KAAK0ilB,WAAW,GAAK,KACtF1ilB,KAAKqppB,qBACDr4e,GAAkBhxK,KAAKsuF,OACvBk2H,EAAOjmN,UAAU6ypB,WAAWrxpB,KAAKC,KAAM9C,GAAG,GAE9C8C,KAAKoqiB,YAAcpqiB,KAAK+ypB,YAAYj0pB,MACrB,cAAX5B,EAAEuJ,OAAuC,KAAdvJ,EAAE4iS,SAAgC,KAAd5iS,EAAE4iS,SAIjD,OAHA9/R,KAAKoqiB,YAAmC,KAArBpqiB,KAAKoqiB,YAAqB,KAAOpqiB,KAAKoqiB,YACzDpqiB,KAAKm0pB,iBAAkB,OACvBn0pB,KAAK0ppB,UAAU1ppB,KAAK0ilB,WAAY1ilB,KAAKyxT,OAAQ,KAAMv0T,GAGvD8C,KAAK2gE,YAAa,EAClB3gE,KAAK8zpB,YAAc,KACnB,IAAInkT,EAAY,CACZ0uT,sBAAsB,EACtBhwpB,KAAMrO,KAAK+ypB,YAAYj0pB,MACvByypB,WAAY,SAAU7uE,EAAYz/V,EAAOwuE,GACjCk+C,EAAU7uB,SAGdu7Z,EAAQljW,YAAa,EACrBkjW,EAAQ1+E,kBAAoB16a,EAC5Bo5f,EAAQo6J,aAAa/zT,EAAYz/V,EAAOwuE,GAC5C,EACAqvB,QAAQ,GAEZ9gV,KAAKo/d,QAAQ,YAAazvH,GAAW,SAAUA,GACtCA,EAAU7uB,QAAWu7Z,EAAQljW,YAAexpC,EAAU0uT,uBACvDg+E,EAAQk6J,YAAa,EACrBl6J,EAAQo6J,aAAap6J,EAAQ35J,WAAY,KAAM25J,EAAQ5qb,OAAQv0T,GAEvE,GACJ,EAUAo54B,EAAa/34B,UAAUf,OAAS,SAAUkllB,EAAYz/V,EAAOwuE,GACzDzxT,KAAKm5Y,YAAa,EAClBn5Y,KAAKy24B,aAAa/zT,EAAYz/V,EAAOwuE,EACzC,EACA6klB,EAAa/34B,UAAUk44B,aAAe,SAAU/zT,EAAYz/V,EAAOwuE,EAAQv0T,GACvE8C,KAAKm0pB,iBAAkB,EACvB,IAAIuiP,EAAkB124B,KAAKsuF,KAAKnqF,UAAUC,SAAS,YACnD,GAAyB,KAArBpE,KAAKoqiB,aAAuBpqiB,KAAKoqiB,YAAYtsiB,QAAUkC,KAAKm5I,UAAY,CAQxE,GAPIn5I,KAAKw1pB,sBAAwBx1pB,KAAKkxpB,eAAiBlxpB,KAAKs0pB,UACxDt0pB,KAAKylpB,uBAAwB,EAC7BzlpB,KAAKsuF,KAAKmN,UAAY,EACtBz7F,KAAK4lpB,mBAAqB,EAC1B5lpB,KAAKgnpB,gBAAkB,MAE3BhnpB,KAAK0ppB,UAAUhnE,EAAYjxR,EAAQxuE,EAAO/lP,GACtC8C,KAAKw1pB,sBAAwBkhP,IAAoB124B,KAAKsuF,KAAKnqF,UAAUC,SAAS,cACzEpE,KAAKsuF,KAAKn5E,cAAc,2BACzBnV,KAAKsuF,KAAK/2E,YAAYvX,KAAKg+B,cAAc,MAAO,CAC5C9xB,UAAW,wBACX8nD,OAAQh0D,KAAKmqpB,wBACb5yoB,YAAYvX,KAAKsuF,KAAKn5E,cAAc,oBAEvCnV,KAAKsuF,KAAKn5E,cAAc,mBAAmB,CAC5C,IAAI+0oB,EAAgBlqpB,KAAKg+B,cAAc,MAAO,CAC1CloB,GAAI9V,KAAKy5D,QAAQ3jD,GAAK,SAAU5J,UAAW,gBAAiB8nD,OAAQh0D,KAAKiqpB,0BAE7E10nB,SAAS8D,uBAAuB,WAAW,GAAGlkB,cAAc,mBAAmBoC,YAAY2yoB,EAC/F,EAE0B,iBAAzBlqpB,KAAKgje,mBAAwChje,KAAK0ilB,sBAAsByxD,KAA2C,iBAAzBn0oB,KAAKgje,iBAAuChje,KAAK0ilB,sBAAsByxD,IAAuC,GAAvBn0oB,KAAK0xX,iBACvL1xX,KAAK6ppB,2BAEb,MAEI7ppB,KAAKo3pB,UAAUl6pB,GACf8C,KAAKm0pB,iBAAkB,EAE3Bn0pB,KAAKwwe,sBACT,EACA8la,EAAa/34B,UAAUy0c,SAAW,SAAU91c,EAAG88F,IACvCg3E,GAAkBh3E,KAAeg3E,GAAkBh3E,IAAag3E,GAAkBh3E,EAAS0of,eAC3Fl+X,EAAOjmN,UAAUy0c,SAASjzc,KAAKC,KAAM9C,GACrC8C,KAAKqppB,sBAELrppB,KAAKm0pB,iBACLn0pB,KAAKo3pB,WAEb,EAEAk/O,EAAa/34B,UAAUmupB,iBAAmB,SAAUtL,EAAW9yjB,EAAMpxF,EAAG43pB,GAC/D90pB,KAAKw1pB,uBACNx1pB,KAAKmupB,mBAAqB,OAEA,iBAAzBnupB,KAAKgje,mBAAwChje,KAAK0ilB,sBAAsByxD,KAA2C,iBAAzBn0oB,KAAKgje,iBAAuChje,KAAK0ilB,sBAAsByxD,IAAuC,GAAvBn0oB,KAAK0xX,iBACvL1xX,KAAK6ppB,4BAETrlc,EAAOjmN,UAAUmupB,iBAAiB3spB,KAAKC,KAAMohpB,EAAW9yjB,EAAMpxF,GAC9D,IAAIm4E,EAAOr1E,KAAKsuF,KAAKn5E,cAAc,IAAMq9oB,GAAoB56W,IACxD5mI,GAAkB37F,IACnB3iB,GAAY,CAAC2iB,GAAOm9kB,GAAoB5jZ,OAE5C5uQ,KAAK224B,gBACT,EACAL,EAAa/34B,UAAUo44B,eAAiB,WACpC,GAAI324B,KAAK6tc,WAAa78R,GAAkBhxK,KAAK0hpB,cAAc,KAAO1hpB,KAAKu24B,WAAY,CAC/E,IAAI9r3B,EAAQ,CAACzqB,KAAK0hpB,cAAc,IAC5Bh/D,EAAa1ilB,KAAKwnpB,SAClB/gpB,EAAOzG,KAAK2npB,WAAWjlE,GAAYw9D,OACnC+1P,EAAavopB,GAAO1tP,KAAK0kc,aAAa5lc,MAAO2rB,EAAO,aAAczqB,KAAKykoB,WAAY/hD,EAAY1ilB,KAAKyxT,OAAQhrT,GAChHzG,KAAKu24B,YAAa,EACbvluB,GAAkBiluB,EAAW5g0B,OAC9BmvI,EAAOjmN,UAAUw24B,YAAYh14B,KAAKC,KAAMA,KAAK0hpB,cAAc,IAAI,EAEvE,CACJ,EACA40P,EAAa/34B,UAAUq4pB,aAAe,SAAUh/W,EAAI16S,GAChD,GAAK8C,KAAKk5pB,UAAUthX,GAIpB,IAAK5mI,GAAkB9zK,IAAiB,YAAXA,EAAEuJ,MAAmC,UAAbvJ,EAAE8kN,QACnC,QAAb9kN,EAAE8kN,QAAoBhiN,KAAKk5pB,UAAUthX,GAAK,CAC7C,IAAI94S,EAAQkB,KAAKqopB,kBAAkBzwW,EAAGxnS,aAAa,eAKnD,GAJApQ,KAAK8zpB,YAAc9zpB,KAAK6wpB,gBAAgB/xpB,GACxCkB,KAAK404B,aAAah9lB,GAClB53S,KAAK22pB,WAAa/+W,EAClB53S,KAAKw5pB,kBAAkBt8pB,GACnB8C,KAAK6tc,UAAY7tc,KAAK+zpB,YAAa,CACnC/zpB,KAAKw0pB,iBAAkB,EACvB,IAAIkhP,EAAiBx44B,GAAkB,SAAbA,EAAE8kN,QAAkC,OAAb9kN,EAAE8kN,QAClC,SAAb9kN,EAAE8kN,QAAkC,QAAb9kN,EAAE8kN,QAAiC,WAAb9kN,EAAE8kN,QAAoC,aAAb9kN,EAAE8kN,OAC5EwC,EAAOjmN,UAAUw24B,YAAYh14B,KAAKC,KAAM43S,EAAI89lB,EAChD,CACJ,MAEIlxrB,EAAOjmN,UAAUq4pB,aAAa72pB,KAAKC,KAAM43S,EAAI16S,QAlB7C8C,KAAK22pB,WAAa/+W,CAoB1B,EACA0+lB,EAAa/34B,UAAU2vpB,WAAa,SAAUxrE,EAAYk0T,GACtD,IAAIv6J,EAAUr8uB,KACVyxT,EAASjtG,EAAOjmN,UAAU2vpB,WAAWnupB,KAAKC,KAAM0ilB,EAAYk0T,GAChE,GAAI5luB,GAAkBygJ,EAAO0tV,aACzB1tV,EAAO0tV,YAAc,SAAUjipB,GACvBm/uB,EAAQw6J,YACJx6J,EAAQ5irB,QAAQ2nF,UAAYi7lB,EAAQ/kF,kBAAoB+kF,EAAQvxF,aAChE3ynB,YAAW,WACP+92B,IAAgBh54B,EAAEm4E,KAAMgnqB,EAAQjyM,YAAaiyM,EAAQ53G,WAAY43G,EAAQ3+E,WAC7E,GAAG,GAGHw4O,IAAgBh54B,EAAEm4E,KAAMgnqB,EAAQjyM,YAAaiyM,EAAQ53G,WAAY43G,EAAQ3+E,YAGrF,MAEC,CACD,IAAIo5O,EAAgBrllB,EAAO0tV,YAC3B1tV,EAAO0tV,YAAc,SAAUjipB,GACvBm/uB,EAAQw6J,WACRX,IAAgBh54B,EAAEm4E,KAAMgnqB,EAAQjyM,YAAaiyM,EAAQ53G,WAAY43G,EAAQ3+E,YAE7Eo5O,EAAcl54B,MAAMy+uB,EAAS,CAACn/uB,GAClC,CACJ,CACA,OAAOu0T,CACX,EACA6klB,EAAa/34B,UAAU2ypB,YAAc,WACjC,OAAO,CACX,EACAolP,EAAa/34B,UAAU2gqB,YAAc,SAAUhiqB,GACtC8C,KAAKw1pB,uBACNx1pB,KAAKsuF,KAAKmN,UAAY,GAE1B+oH,EAAOjmN,UAAU2gqB,YAAYn/pB,KAAKC,KAAM9C,EAC5C,EACAo54B,EAAa/34B,UAAUw7pB,cAAgB,WACnC,OAAO,CACX,EACAu8O,EAAa/34B,UAAUmkqB,cAAgB,WACnC,OAAO1iqB,KAAK+24B,eAChB,EAEAT,EAAa/34B,UAAUs8pB,kBAAoB,SAAUphmB,GACjD,OAAO,CACX,EACA680B,EAAa/34B,UAAUghqB,cAAgB,SAAU33L,EAASC,GACtD,IAAIv4K,EAAWu4K,GAAWA,EAAQx5d,KAAOw5d,EAAQx5d,KAAOw5d,EAAUA,EAAQ/oe,MAAQ+oe,EAC9E/oe,EAAQ8oe,GAAWA,EAAQv5d,KAAOu5d,EAAQv5d,KAAOu5d,GAAWA,EAAQ9oe,MAAQ8oe,EAAQ9oe,MAAQkB,KAAKlB,MAKrG,GAJIkB,KAAKu2pB,qBACLjnW,EAAYt+I,GAAkBs+I,GAA+EA,EAAnEvhG,GAAU/tN,KAAKyxT,OAAO3yT,MAASkB,KAAKyxT,OAAO3yT,MAAQ,GAAIwwT,GACjGxwT,EAASkyK,GAAkBlyK,GAAyEA,EAAhEivN,GAAU/tN,KAAKyxT,OAAO3yT,MAASkB,KAAKyxT,OAAO3yT,MAAQ,GAAIA,KAE3FA,GAA8B,KAArBkB,KAAKy0pB,aAAuBz0pB,KAAKw2pB,aAAiBx2pB,KAAK0ilB,sBAAsByxD,GAiBjFvsK,IACLA,EAAQv5d,KAAOrO,KAAK+jqB,WAAWz0W,GAAYtvT,KAAKgkqB,YAAY10W,QAlBwC,CACpG,IAAI0nlB,EAA8D,WAA5Ch34B,KAAK2npB,WAAW3npB,KAAK0ilB,YAAYw9D,OAAsB,GAAKlgpB,KAAKyxT,OAAO3yT,MAC1F0lqB,EAAexkqB,KAAKwvY,WAAW1xY,OAC/BmlP,EAAQ,IAAIyiZ,GACZuxQ,EAAUj34B,KACd,IAAIm0oB,GAAYn0oB,KAAK0ilB,YAAY8jD,aAAavjZ,EAAMttJ,MAAM,IAAIuxiB,GAAU8vQ,EAAiB,QAASl44B,KAC7FygC,MAAK,SAAUriC,GACZA,EAAEkf,OAAOte,OAAS,GAClBm54B,EAAQn44B,MAA4B,KAApBk44B,EAAyBC,EAAQ1gP,mBAAqBr5pB,EAAEkf,OAAO,GAAKlf,EAAEkf,OAAO,GAAG663B,EAAQxllB,OAAO3yT,OAAO6B,WAAazD,EAAEkf,OAAO,GAAGzb,WAC/Is24B,EAAQrlP,QAAQ10pB,EAAEkf,OAAQoopB,GAC1ByyO,EAAQr/O,gBAGRhwL,GAAWA,EAAQv5d,KAAO4o4B,EAAQlzO,WAAWz0W,GAAYs4K,GAAWA,EAAQ9oe,MAAQm44B,EAAQjzO,YAAY10W,GAAY2nlB,EAAQr/O,cAEpI,GACJ,CAIJ,EAOA0+O,EAAa/34B,UAAU87pB,UAAY,SAAUn9pB,GACpC8C,KAAKsG,UAGNtG,KAAKm0pB,gBACLn0pB,KAAKmgqB,gBAGTngqB,KAAKm0pB,iBAAkB,EACvBn0pB,KAAKw0pB,iBAAkB,EACnBxjf,GAAkBhxK,KAAKsuF,MACvBtuF,KAAKoxpB,WAAWl0pB,GAGhB8C,KAAK0ppB,UAAU1ppB,KAAK0ilB,WAAY1ilB,KAAKyxT,OAAQ,KAAMv0T,IAE3D,EAMAo54B,EAAa/34B,UAAU64pB,UAAY,SAAUl6pB,GACzCsnN,EAAOjmN,UAAU64pB,UAAUr3pB,KAAKC,KAAM9C,GACtC8C,KAAK8zpB,YAAc,KACnB9zpB,KAAKgnpB,gBAAkBhnpB,KAAKknpB,aAC5BlnpB,KAAK4lpB,mBAAqB5lpB,KAAKknpB,aAAa54iB,WAC5CtuG,KAAKsuG,WAAatuG,KAAKknpB,aAAa54iB,WACpCtuG,KAAK+1pB,iBAAmB/1pB,KAAKknpB,aAAar3Q,QAC9C,EASAymgB,EAAa/34B,UAAUoke,kBAAoB,SAAUiF,EAASC,GAC7B,iBAAzB7ne,KAAKgje,iBACLhje,KAAKsxpB,iBAAiB,CAAC,SAAU,QAAS,cAAe1pL,GAE7D,IAAK,IAAIztQ,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAC9D,IAAI7nJ,EAAO4lH,EAAGiiC,GACd,GACS,oBADD7nJ,EAEA,GAAItyE,KAAK+24B,gBAAiB,CACtB,IAAIt1mB,EAASq8V,GAAMuE,WAAWmwB,GAAoB7lnB,KAAM3sC,KAAK61pB,aAAaz5jB,UAAWp8F,KAAKg+B,eAC1Fh+B,KAAK61pB,aAAa71lB,QAAQ,GAAKyhO,EAC/Bq8V,GAAMS,eAAev+nB,KAAK0kc,aAAc1kc,KAAK61pB,aAAaz5jB,WACrD40E,GAAkBhxK,KAAK61pB,aAAa71lB,QAAQ,KAAQgxG,GAAkBhxK,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,KAA+B,UAAxBr5B,KAAKo+nB,gBAC/Jp+nB,KAAK61pB,aAAaz5jB,UAAU/iE,uBAAuB,yBAAyB,GAAGl1B,UAAU2C,IAAI,UAE7F9G,KAAK61pB,cAAgB71pB,KAAK61pB,aAAa71lB,SAAWhgE,KAAK61pB,aAAa71lB,QAAQ,IAC5E0+Z,GAAa53d,IAAI9G,KAAK61pB,aAAa71lB,QAAQ,GAAI,QAAShgE,KAAKs4pB,cAAet4pB,KAEpF,MAEIqge,GAAOrge,KAAK61pB,aAAa71lB,QAAQ,IACjChgE,KAAK61pB,aAAa71lB,QAAQ,GAAK,SAGvC,CAEI,IAAIk30B,EAAWl34B,KAAKonpB,cAAc90kB,EAAMs1Z,EAASC,GACjDrjR,EAAOjmN,UAAUoke,kBAAkB5ie,KAAKC,KAAMk34B,EAAS7vP,YAAa6vP,EAAS5vP,YAEjF,CAER,CACJ,EACAgvP,EAAa/34B,UAAUymqB,kBAAoB,WACvC,GAAIhlqB,KAAK624B,UACL,IAAK,IAAI154B,EAAI,EAAGA,EAAI6C,KAAK0hpB,cAAc5jpB,OAAQX,IAAK,CAChD,IAAIg64B,EAAcn34B,KAAKohpB,UAAUjsoB,cAAc,aAC1Cgi4B,IACDd,IAAsBr24B,KAAK0hpB,cAAcvkpB,IACzC+44B,IAAgBl24B,KAAK0hpB,cAAcvkpB,GAAI6C,KAAKoqiB,YAAapqiB,KAAKykoB,WAAYzkoB,KAAK09pB,aAEnFy5O,EAAc,IAClB,CAER,EAOAb,EAAa/34B,UAAUyke,cAAgB,WACnC,MAAO,cACX,EAOAsza,EAAa/34B,UAAUupE,OAAS,WAC5B08I,EAAOjmN,UAAUupE,OAAO/nE,KAAKC,KACjC,EACAqtT,IAAW,CACPg4K,GAAQ,CAAEvme,MAAO,KAAMs+oB,QAAS,KAAMI,QAAS,MAAQ8G,KACxDgyP,EAAa/34B,UAAW,cAAU,GACrC8uT,IAAW,CACP63K,IAAS,IACVoxa,EAAa/34B,UAAW,kBAAc,GACzC8uT,IAAW,CACP63K,IAAS,IACVoxa,EAAa/34B,UAAW,uBAAmB,GAC9C8uT,IAAW,CACP63K,IAAS,IACVoxa,EAAa/34B,UAAW,iBAAa,GACxC8uT,IAAW,CACP63K,GAAS,KACVoxa,EAAa/34B,UAAW,uBAAmB,GAC9C8uT,IAAW,CACP63K,GAAS,CAAC,IACXoxa,EAAa/34B,UAAW,sBAAkB,GAC7C8uT,IAAW,CACP63K,GAAS,OACVoxa,EAAa/34B,UAAW,aAAS,GACpC8uT,IAAW,CACP63K,GAAS,IACVoxa,EAAa/34B,UAAW,iBAAa,GACxC8uT,IAAW,CACP63K,GAAS,aACVoxa,EAAa/34B,UAAW,kBAAc,GACzC8uT,IAAW,CACPv0P,MACDw90B,EAAa/34B,UAAW,iBAAa,GACxC8uT,IAAW,CACP63K,GAAS,OACVoxa,EAAa/34B,UAAW,aAAS,GACpC8uT,IAAW,CACP63K,GAAS,UACVoxa,EAAa/34B,UAAW,sBAAkB,GAC7C8uT,IAAW,CACP63K,GAAS,OACVoxa,EAAa/34B,UAAW,qBAAiB,GAC5C8uT,IAAW,CACP63K,GAAS,OACVoxa,EAAa/34B,UAAW,4BAAwB,GACnD8uT,IAAW,CACP63K,IAAS,IACVoxa,EAAa/34B,UAAW,sBAAkB,GAC7C8uT,IAAW,CACP63K,GAAS,OACVoxa,EAAa/34B,UAAW,YAAQ,GACnC+34B,EAAejplB,IAAW,CACtBq4K,IACD4wa,EAEP,CA/ekC,CA+ehChqc,KC/gBE8qc,IAAgC,WAChC,SAASA,EAAex+2B,EAAQs/pB,EAAgBzK,GAC5CztrB,KAAK44B,OAASA,EACd54B,KAAKq34B,WAAan/M,EAClBl4rB,KAAKytrB,eAAiBA,EAClBztrB,KAAK44B,SACL54B,KAAK44B,OAAOsI,GAAGj6B,GAAwBjH,KAAKyjE,QAASzjE,MACrDA,KAAK44B,OAAOsI,GAAGj6B,GAAgBjH,KAAKyjE,QAASzjE,MAErD,CAkIA,OAjIAo34B,EAAe744B,UAAUS,OAAS,SAAUosE,GACxCprE,KAAK0uD,SAAW1uD,KAAK44B,OAAOoF,cAAc,QAAS,CAAE9xB,UAAW,iBAAkB4J,GAAI,SAAWs1D,EAAKviD,OAAOqqD,MAC7G9H,EAAKjpD,OAAO5K,YAAYvX,KAAK0uD,UAC7B1uD,KAAKojrB,UAAYh4mB,EAAKg4mB,UACtBpjrB,KAAKwyrB,qBAAqBpnnB,EAC9B,EACAgs0B,EAAe744B,UAAUi0rB,qBAAuB,SAAUpnnB,GACtD,IAAIw1I,EAAQ5gN,KACRorE,EAAKviD,OAAOo+oB,kBACZjnqB,KAAK44B,OAAOi8pB,gBAAgBtuD,YAAYC,aAAaxmoB,KAAK44B,OAAOi8pB,gBAAgB9c,eAAc,IAC1Fx4oB,MAAK,SAAUnjB,GAAUwkM,EAAM02rB,uBAAuBls0B,EAAMhvD,EAAS,IAG9Epc,KAAKs34B,uBAAuBls0B,EAChC,EACAgs0B,EAAe744B,UAAU+44B,uBAAyB,SAAUls0B,EAAMhvD,GAC9D,IACIm73B,EADAtwO,EAAkB77lB,EAAKviD,OAAOo+oB,kBAElC,GAAIA,EAAiB,CAIjB,IAHA,IAAIwtB,EAAelK,GAAmBmK,YAAYt4qB,EAAOA,OAAQgvD,EAAKviD,OAAOo0N,OACxEyrF,SAAW,GACZ+0V,OAAc,EACTtgqB,EAAI,EAAGA,EAAIs3rB,EAAa32rB,OAAQX,IAEjCsgqB,EADAA,EACcA,EAAY5igB,GAAGzvF,EAAKviD,OAAOo0N,MAAO,WAAYw3c,EAAaxzrB,SAAS9D,EAAEwD,WAAY,KAAKyqE,EAAKviD,OAAOo0N,OAAQj9O,KAAK44B,OACzH60pB,eAAeoK,sBAAuB73rB,KAAK44B,OAAO60pB,eAAezmD,cAGxD,IAAIE,GAAU97jB,EAAKviD,OAAOo0N,MAAO,WAAYw3c,EAAaxzrB,SAAS9D,EAAEwD,WAAY,KAAKyqE,EAAKviD,OAAOo0N,OAAQj9O,KAAK44B,OACxH60pB,eAAeoK,sBAAuB73rB,KAAK44B,OAAO60pB,eAAezmD,eAG9EuwQ,GAAqB,IAAI7xQ,IAAQ/viB,MAAM8nkB,IACpBzwoB,OAAShtB,KAAK44B,OAAOqqN,MAAMj2N,MAClD,CACA,IAAI01jB,EAAaukF,EAAkB77lB,EAAKviD,OAAO65jB,WAAa1ilB,KAAK44B,OAAO8pjB,WACpEjxR,EAAS,CAAE3yT,MAAOmoqB,EAAkB77lB,EAAKviD,OAAOu+oB,gBAAkBh8lB,EAAKviD,OAAOo0N,OAC9EmoN,EAAe,IAAIkxc,IAAa504B,GAAO,CACvCghlB,WAAYA,aAAsByxD,GAAczxD,EAAa,IAAIyxD,GAAYzxD,GAC7EjxR,OAAQA,EACRj5S,OAAQxY,KAAK44B,OAAOpgB,OACpBu1d,UAAW/te,KAAK44B,OAAOm1c,UACvB9qP,MAAOgkb,EAAkBswO,EAAqBv34B,KAAK44B,OAAOi8pB,gBAAgB9c,eAAc,GAAM,GAC9F55B,UAAW,YACXtvoB,SAAU7O,KAAK44B,OAAO/pB,SAAW,kBAAyB7O,KAAK44B,OAAO/pB,SAAW,iBACjFg/b,UAAU,EACV7lF,YAAa58S,EAAKos0B,aAAa37Z,YAAY,cAC3C42L,YAAa,WACT,GAAIzyqB,KAAKijP,MAAM6iZ,QAAQhooB,QAAuC,YAA7BkC,KAAKijP,MAAM6iZ,QAAQ,GAAGtzlB,IAAoBxyC,KAAKijP,MAAM6iZ,QAAQ,GAAG5ooB,GAC1F8C,KAAKijP,MAAM6iZ,QAAQ,GAAG5ooB,EAAEwroB,WAAY,CACvC,IAAK,IAAIvroB,EAAI,EAAGA,EAAI6C,KAAKijP,MAAM6iZ,QAAQ,GAAG5ooB,EAAEwroB,WAAW5qoB,OAAQX,IACvD6C,KAAKy8H,WAAWg1L,OAAO3yT,QAAUkB,KAAKijP,MAAM6iZ,QAAQ,GAAG5ooB,EAAEwroB,WAAW,GAAKvroB,GAAG8/O,QAC5Ej9O,KAAKijP,MAAM6iZ,QAAQ,GAAG5ooB,EAAEwroB,WAAWzkoB,OAAO9G,EAAG,GAC7CA,GAAQ,GAGX6C,KAAKijP,MAAM6iZ,QAAQ,GAAG5ooB,EAAEwroB,WAAW5qoB,QACpCkC,KAAKijP,MAAM6iZ,QAAQ7hoB,OAAO,EAAG,EAErC,CACJ,GACDmnE,EAAKviD,OAAOrrB,OAAOwvB,SAOtB,GANAhtB,KAAKy34B,QAAUz34B,KAAK4uQ,MAAMw2L,EAAch6X,GACxCprE,KAAK034B,WAAa134B,KAAK0yqB,eAAettO,GACtCplc,KAAK234B,OAAS334B,KAAKktQ,UAAU3/P,KAAKvN,MAClColc,EAAa/3b,iBAAiBg4rB,GAAgBrlsB,KAAKy34B,SACnDryc,EAAa/3b,iBAAiBg4rB,GAAkBrlsB,KAAK234B,QACrDvyc,EAAa/3b,iBAAiBpG,GAAuBjH,KAAK034B,YACtDh1T,GAAc,WAAYA,EAAY,CACtC,IACIiwG,EAASC,GAAa,CAAE/lb,YAAa,uBAD7B7sQ,KAAK44B,OAAOk6mB,SAAW9yoB,KAAK44B,OAAOk6mB,WAAWjxoB,QAAU,IAAI6joB,IAExE1loB,KAAK44B,OAAOwmc,QAAQn4d,GAAwB0rrB,EAAOxujB,OACzCwujB,EAAOl9C,SACbhne,QAAQlvI,MAAK,SAAUriC,GACvBkoc,EAAas9I,WAAa,IAAIyxD,GAAYj3oB,EAC9C,GACJ,CACA8C,KAAK434B,OAASxyc,EACdplc,KAAK434B,OAAO943B,SAAS9e,KAAK0uD,UACtBu4mB,GACAjnqB,KAAK44B,OAAOoprB,aAAaA,aAAa61L,qBAE9C,EACAT,EAAe744B,UAAUo4H,MAAQ,SAAUvrD,GACZ,KAAvBA,EAAK0s0B,eAAyB9muB,GAAkB5lG,EAAK0s0B,iBACtCvi3B,SAASpgB,cAAc,UAAYi2D,EAAKviD,OAAOqqD,KAAK+vZ,cAAc,GACxEnke,MAAQssE,EAAK0s0B,cAE9B,EACAV,EAAe744B,UAAUi3H,KAAO,SAAU/7D,EAAS5wC,EAAQkv3B,EAAYvmN,GACnE,IAAIwmN,EAAWzi3B,SAASpgB,cAAc,UAAY0T,EAAOqqD,KAAK+vZ,cAAc,GACxE/F,GAAQK,WACRy6a,EAAS5gP,YACT4gP,EAAS//O,YAEb,IAAI3yB,EAAc0yQ,EAASl54B,OACvBkyK,GAAkBs0d,IAAgC,KAAhBA,KAClCA,EAAc,MAElBksD,EAAUmnE,eAAe9vuB,EAAOo0N,MAAO86pB,EAAYzyQ,EAAa,MAAOtloB,KAAK44B,OAAO60pB,eAAeoK,sBACtG,EACAu/M,EAAe744B,UAAU2uQ,UAAY,SAAU9hM,GAC3Ck9rB,GAAqBl9rB,EAAMprE,KAAKojrB,UACpC,EACAg0N,EAAe744B,UAAUqwQ,MAAQ,SAAUgpoB,EAAQxs0B,GAC/C,OAAO,WACHws0B,EAAOl6O,WAAatylB,EAAK6s0B,gBAAgB5D,eAC7C,CACJ,EACA+C,EAAe744B,UAAUm0qB,eAAiB,SAAUklO,GAChD,OAAO,SAAU164B,GACbA,EAAEkf,OAASlf,EAAEkf,OAAO5e,QAAO,SAAUwxE,EAAKriD,EAAO8nF,GAC7C,OAAOA,EAAI9yG,KAAI,SAAUu24B,GACrB,OAAQnqrB,GAAS6prB,EAAOnmlB,OAAO3yT,MAAOo54B,EAC1C,IAAGxz4B,QAAQqpN,GAAU6prB,EAAOnmlB,OAAO3yT,MAAQkwE,MAAUriD,CACzD,GACJ,CACJ,EACAyq3B,EAAe744B,UAAUklE,QAAU,WAC1BzjE,KAAK434B,SAAU534B,KAAK434B,OAAO11a,cAGhClie,KAAK434B,OAAO/+0B,oBAAoBwsoB,GAAgBrlsB,KAAKy34B,SACrDz34B,KAAK434B,OAAO/+0B,oBAAoBwsoB,GAAkBrlsB,KAAK234B,QACvD334B,KAAK434B,OAAO/+0B,oBAAoB5xD,GAAuBjH,KAAK034B,YAC5D134B,KAAK434B,OAAOn00B,UACZzjE,KAAK44B,OAAOyW,IAAIpoC,GAAwBjH,KAAKyjE,SAC7CzjE,KAAK44B,OAAOyW,IAAIpoC,GAAgBjH,KAAKyjE,SACzC,EACO2z0B,CACX,CA5IoC,GCJhCe,IAAgC,WAChC,SAASA,EAAev/2B,EAAQs/pB,EAAgBzK,GAC5CztrB,KAAKytrB,eAAiBA,EACtBztrB,KAAK44B,OAASA,EACd54B,KAAKk4rB,eAAiBA,EAClBl4rB,KAAK44B,SACL54B,KAAK44B,OAAOsI,GAAGj6B,GAAwBjH,KAAKyjE,QAASzjE,MACrDA,KAAK44B,OAAOsI,GAAGj6B,GAAgBjH,KAAKyjE,QAASzjE,MAErD,CAwCA,OAvCAm44B,EAAe554B,UAAUko1B,gBAAkB,SAAUr7wB,GACjD,GAAqB,KAAjBA,EAAK00N,SAAmC,IAAjB10N,EAAK00N,QAAe,CAC3C,IAAIruL,EAAMl8E,SAASymC,YAAY,cAC/By1C,EAAI4+D,UAAU,UAAU,GAAO,GAE/BrwK,KAAK+4D,cAAc04C,EACvB,CACJ,EACA0myB,EAAe554B,UAAUS,OAAS,SAAUosE,GACxCprE,KAAK0uD,SAAW1uD,KAAK44B,OAAOoF,cAAc,QAAS,CAAE9xB,UAAW,iBAAkB4J,GAAI,YAAcs1D,EAAKviD,OAAOqqD,MAChH9H,EAAKjpD,OAAO5K,YAAYvX,KAAK0uD,UAC7B1uD,KAAKo44B,cAAgB,IAAIp4D,GAAet+0B,GAAO,CAC3CyZ,OAAwC,kBAAxBiwD,EAAKviD,OAAO1N,QAAwB+xH,GAAY9hE,EAAKviD,OAAO1N,QAAUiwD,EAAKviD,OAAO1N,OAC9FiwD,EAAKviD,OAAO1N,OAAOA,OACvB3C,OAAQxY,KAAK44B,OAAOpgB,OACpB3J,SAAU7O,KAAK44B,OAAO/pB,SAAW,kBAAyB7O,KAAK44B,OAAO/pB,SAAW,iBACjFm5W,YAAa58S,EAAKos0B,aAAa37Z,YAAY,cAC3C9N,UAAW/te,KAAK44B,OAAOm1c,WACxB3ia,EAAKviD,OAAOrrB,OAAOwvB,SACtBhtB,KAAKo44B,cAAct53B,SAAS9e,KAAK0uD,SACrC,EACAyp1B,EAAe554B,UAAUo4H,MAAQ,SAAUvrD,GACvC,IAAIit0B,EAAc9i3B,SAASpgB,cAAc,aAAei2D,EAAKviD,OAAOqqD,KAAK+vZ,cAAc,GACvFo1a,EAAY5+0B,QAAQpsD,iBAAiB,UAAWrN,KAAKym1B,iBACrD4xD,EAAYv54B,MAAQssE,EAAK0s0B,aAC7B,EACAK,EAAe554B,UAAUi3H,KAAO,SAAU/7D,EAAS5wC,EAAQkv3B,EAAYvmN,GACnE,IACIlsD,EADc/vmB,SAASpgB,cAAc,aAAe0T,EAAOqqD,KAAK+vZ,cAAc,GACpDnke,MAC9B0yrB,EAAUmnE,eAAe9vuB,EAAOo0N,MAAO86pB,EAAYzyQ,EAAa,OAAO,EAC3E,EACA6yQ,EAAe554B,UAAUklE,QAAU,WAC1BzjE,KAAKo44B,gBAAiBp44B,KAAKo44B,cAAcl2a,cAG9Clie,KAAKo44B,cAAc300B,UACnBzjE,KAAK44B,OAAOyW,IAAIpoC,GAAwBjH,KAAKyjE,SAC7CzjE,KAAK44B,OAAOyW,IAAIpoC,GAAgBjH,KAAKyjE,SACzC,EACO000B,CACX,CAlDoC,GCGhCG,IAAiC,WACjC,SAASA,EAAgB1/2B,EAAQs/pB,EAAgBzK,GAC7CztrB,KAAK44B,OAASA,EACd54B,KAAKk4rB,eAAiBA,EACtBl4rB,KAAKytrB,eAAiBA,EAClBztrB,KAAK44B,SACL54B,KAAK44B,OAAOsI,GAAGj6B,GAAwBjH,KAAKyjE,QAASzjE,MACrDA,KAAK44B,OAAOsI,GAAGj6B,GAAgBjH,KAAKyjE,QAASzjE,MAErD,CAqDA,OApDAs44B,EAAgB/54B,UAAUS,OAAS,SAAUosE,GACzC,IAAI67lB,EAAkB77lB,EAAKviD,OAAOo+oB,kBAC9BvkF,EAAaukF,EAAkB77lB,EAAKviD,OAAO65jB,WAAa1ilB,KAAK44B,OAAO8pjB,WACpEjxR,EAASw1W,EAAkB77lB,EAAKviD,OAAOu+oB,gBAAkBh8lB,EAAKviD,OAAOo0N,MACzEj9O,KAAK2+V,KAAO3+V,KAAK44B,OAAOoF,cAAc,QAAS,CAAE9xB,UAAW,iBAAkB4J,GAAI,WAAas1D,EAAKviD,OAAOqqD,MAC3G9H,EAAKjpD,OAAO5K,YAAYvX,KAAK2+V,MAC7B3+V,KAAKojrB,UAAYh4mB,EAAKg4mB,UACtBpjrB,KAAKu44B,aAAe,IAAI/kP,GAAa9xpB,GAAO,CACxCghlB,WAAYA,aAAsByxD,GAC9BzxD,EAAa,IAAIyxD,GAAYzxD,GACjCz/V,OAAO,IAAIyiZ,IAAQ70nB,OAAO4gT,GAC1BA,OAAQ,CAAEpjT,KAAMojT,EAAQ3yT,MAAO2yT,GAC/Bu2D,YAAa58S,EAAKos0B,aAAa37Z,YAAY,eAC3Chte,SAAU7O,KAAK44B,OAAO/pB,SAAW,kBAAyB7O,KAAK44B,OAAO/pB,SAAW,iBACjF2J,OAAQxY,KAAK44B,OAAOpgB,OACpBu1d,UAAW/te,KAAK44B,OAAOm1c,WACxB3ia,EAAKviD,OAAOrrB,OAAOwvB,SACtBhtB,KAAKg/0B,OAASh/0B,KAAKktQ,UAAU3/P,KAAKvN,MAClCA,KAAKo/0B,WAAap/0B,KAAK0yqB,eAAejhX,GACtCzxT,KAAKu44B,aAAalr4B,iBAAiBg4rB,GAAkBrlsB,KAAKg/0B,QAC1Dh/0B,KAAKu44B,aAAalr4B,iBAAiBpG,GAAuBjH,KAAKo/0B,YAC/Dp/0B,KAAKu44B,aAAaz53B,SAAS9e,KAAK2+V,KACpC,EACA25iB,EAAgB/54B,UAAUo4H,MAAQ,SAAUvrD,GACxC,IAAIot0B,EAAWjj3B,SAASpgB,cAAc,YAAci2D,EAAKviD,OAAOqqD,KAAK+vZ,cAAc,GAC9EjyT,GAAkB5lG,EAAK0s0B,iBACxBU,EAAS154B,MAAQssE,EAAK0s0B,cAE9B,EACAQ,EAAgB/54B,UAAUi3H,KAAO,SAAU/7D,EAAS5wC,EAAQkv3B,EAAYvmN,GACpE,IACIlsD,EADW/vmB,SAASpgB,cAAc,YAAc0T,EAAOqqD,KAAK+vZ,cAAc,GAClDnke,MAC5B0yrB,EAAUmnE,eAAe9vuB,EAAOo0N,MAAO86pB,EAAYzyQ,EAAa,OAAO,EAC3E,EACAgzQ,EAAgB/54B,UAAU2uQ,UAAY,SAAU9hM,GAC5Ck9rB,GAAqBl9rB,EAAMprE,KAAKojrB,UACpC,EACAk1N,EAAgB/54B,UAAUm0qB,eAAiB,SAAUjhX,GACjD,OAAO,SAAUv0T,GACbA,EAAEkf,OAASqqnB,GAASM,SAAS7poB,EAAEkf,OAAQq1S,GAAQ,EACnD,CACJ,EACA6mlB,EAAgB/54B,UAAUklE,QAAU,WAC3BzjE,KAAKu44B,eAAgBv44B,KAAKu44B,aAAar2a,cAG5Clie,KAAKu44B,aAAa1/0B,oBAAoBwsoB,GAAkBrlsB,KAAKg/0B,QAC7Dh/0B,KAAKu44B,aAAa1/0B,oBAAoB5xD,GAAuBjH,KAAKo/0B,YAClEp/0B,KAAKu44B,aAAa900B,UAClBzjE,KAAK44B,OAAOyW,IAAIpoC,GAAwBjH,KAAKyjE,SAC7CzjE,KAAK44B,OAAOyW,IAAIpoC,GAAgBjH,KAAKyjE,SACzC,EACO600B,CACX,CA/DqC,GCDjCG,IAA8B,WAC9B,SAASA,EAAa7/2B,EAAQs/pB,EAAgBzK,GAC1CztrB,KAAK044B,OAAS144B,KAAKktQ,UAAU3/P,KAAKvN,MAClCA,KAAK44B,OAASA,EACd54B,KAAKm8sB,QAAUjkB,EACfl4rB,KAAK244B,aAAelrN,EAChBztrB,KAAK44B,SACL54B,KAAK44B,OAAOsI,GAAGj6B,GAAwBjH,KAAKyjE,QAASzjE,MACrDA,KAAK44B,OAAOsI,GAAGj6B,GAAgBjH,KAAKyjE,QAASzjE,MAErD,CAmDA,OAlDAy44B,EAAal64B,UAAUS,OAAS,SAAUosE,GACtC,IAAIjwD,EAAS+tvB,GAAoB99rB,EAAKviD,OAAO1N,OAAQiwD,EAAKviD,OAAOpiB,MACjEzG,KAAKojrB,UAAYh4mB,EAAKg4mB,UACtBpjrB,KAAK444B,UAAY544B,KAAK44B,OAAOoF,cAAc,QAAS,CAAE9xB,UAAW,iBAAkB4J,GAAI,UAAYs1D,EAAKviD,OAAOqqD,MAC/G9H,EAAKjpD,OAAO5K,YAAYvX,KAAK444B,WACJ,SAArBxt0B,EAAKviD,OAAOpiB,MAAwC,aAArB2kE,EAAKviD,OAAOpiB,KAC3CzG,KAAK644B,cAAgB,IAAI92c,IAAWrgc,GAAO,CACvCyZ,OAAQA,EACRtM,SAAU7O,KAAK44B,OAAO/pB,SAAW,kBAAyB7O,KAAK44B,OAAO/pB,SAAW,iBACjFm5W,YAAa58S,EAAKos0B,aAAa37Z,YAAY,cAC3Ct4e,MAAO,OACPiV,OAAQxY,KAAK44B,OAAOpgB,OACpBu1d,UAAW/te,KAAK44B,OAAOm1c,WACxB3ia,EAAKviD,OAAOrrB,OAAOwvB,SAEI,aAArBo+C,EAAKviD,OAAOpiB,OACjBzG,KAAK644B,cAAgB,IAAI3kC,IAAexy2B,GAAO,CAC3CyZ,OAAQA,EACRtM,SAAU7O,KAAK44B,OAAO/pB,SAAW,kBAAyB7O,KAAK44B,OAAO/pB,SAAW,iBACjFm5W,YAAa58S,EAAKos0B,aAAa37Z,YAAY,cAC3Ct4e,MAAO,OACPiV,OAAQxY,KAAK44B,OAAOpgB,OACpBu1d,UAAW/te,KAAK44B,OAAOm1c,WACxB3ia,EAAKviD,OAAOrrB,OAAOwvB,UAE1BhtB,KAAK644B,cAAcxr4B,iBAAiBg4rB,GAAkBrlsB,KAAK044B,QAC3D144B,KAAK644B,cAAc/53B,SAAS9e,KAAK444B,UACrC,EACAH,EAAal64B,UAAUo4H,MAAQ,SAAUvrD,GACrB71C,SAASpgB,cAAc,WAAai2D,EAAKviD,OAAOqqD,KAAK+vZ,cAAc,GACzEnke,MAASkyK,GAAkB5lG,EAAK0s0B,eAAgD,KAA/B,IAAI9/3B,KAAKozD,EAAK0s0B,cAC7E,EACAW,EAAal64B,UAAUi3H,KAAO,SAAU/7D,EAAS5wC,EAAQkv3B,EAAYvmN,GACjE,IACIlsD,EADY/vmB,SAASpgB,cAAc,WAAa0T,EAAOqqD,KAAK+vZ,cAAc,GAClDnke,MAC5BwmoB,EAAct0d,GAAkBs0d,GAAe,KAAOA,EACtDksD,EAAUmnE,eAAe9vuB,EAAOo0N,MAAO86pB,EAAYzyQ,EAAa,OAAO,EAC3E,EACAmzQ,EAAal64B,UAAU2uQ,UAAY,SAAU9hM,GACzCA,EAAKo0L,MAAM/lM,QAAQp1D,MAAMmkD,QAAUxoD,KAAKojrB,UAAU56nB,OAAS,GAAG7nD,UAClE,EACA834B,EAAal64B,UAAUklE,QAAU,WAC7BzjE,KAAK44B,OAAOyW,IAAIpoC,GAAwBjH,KAAKyjE,SAC7CzjE,KAAK44B,OAAOyW,IAAIpoC,GAAgBjH,KAAKyjE,SACjCutG,GAAkBhxK,KAAK644B,gBAAkB744B,KAAK644B,cAAc32a,cAGhElie,KAAK644B,cAAchg1B,oBAAoBwsoB,GAAkBrlsB,KAAK044B,QAC9D144B,KAAK644B,cAAcp10B,UACvB,EACOg10B,CACX,CA9DkC,GCM9BK,IAAoC,WACpC,SAASA,EAAmBlg3B,EAAQ60pB,EAAgByK,EAAgBk7M,EAAqB2F,GACrF/44B,KAAKg54B,cAAe,EACpBh54B,KAAKgrB,UAAY,QACjBhrB,KAAKi54B,aAAc,EACnBj54B,KAAKk54B,SAAW,CACZ,OAAU9B,IAAgB,OAAUe,IAAgB,KAAQM,IAAc,SAAYA,IAAc,QAAWH,IAAiB,SAAYG,KAEhJz44B,KAAK44B,OAASA,EACd54B,KAAKytrB,eAAiBA,EACtBztrB,KAAKk4rB,eAAiBA,EACtBl4rB,KAAKqz4B,sBAAwBD,EAC7Bpz4B,KAAKwxrB,UAAYunN,EACjB/44B,KAAKm54B,SAAW,IAAIhG,IAAanz4B,KAAK44B,OAAQ54B,KAAKqz4B,sBAAuBrz4B,KAAKk4rB,gBAC/El4rB,KAAKoppB,KAAOpppB,KAAKk4rB,eAAewF,WAAW,gBAC3C19rB,KAAKo54B,eAAiB,IAAI7uN,GAAmB3xpB,EACjD,CAiVA,OAhVAkg3B,EAAmBv64B,UAAUkstB,kBAAoB,SAAUxzlB,GACvDj3H,KAAKq54B,cAAcpixB,EACvB,EACA6hxB,EAAmBv64B,UAAUgutB,kBAAoB,SAAUnhpB,GACvDprE,KAAKs54B,eAAelu0B,EAAK6rD,IAC7B,EACA6hxB,EAAmBv64B,UAAU8ulB,WAAa,SAAUjihB,GAChDprE,KAAKgf,QAAUosD,EACfprE,KAAKi3H,IAAMj3H,KAAK44B,OAAOw5pB,iBAAiBhnnB,EAAK6xK,QACzCjsE,GAAkBhxK,KAAKi3H,IAAIz5H,SAAYwzK,GAAkBhxK,KAAKi3H,IAAIz5H,OAAOiJ,OAAkC,SAAzBzG,KAAKi3H,IAAIz5H,OAAOiJ,OAClGzG,KAAKu54B,iBAAiBnu0B,EAAKjpD,OAAQniB,KAAKi3H,IAEhD,EACA6hxB,EAAmBv64B,UAAU2smB,YAAc,SAAU/olB,GACjD,GAAKniB,KAAKu/0B,OAAV,EAGIv/0B,KAAK44B,OAAO4ud,SAAWxnf,KAAK44B,OAAOuupB,QACnCiI,GAAuBpvrB,KAAK44B,OAAQ,CAAC,mBAEzC,IAAI+lU,EAAOppU,SAAS4jC,eAAen5D,KAAKu/0B,OAAO9lxB,QAAQ3jD,IACvD,GAAI9V,KAAKu/0B,SAAWv/0B,KAAKu/0B,OAAOr9W,aAAevjI,EAAM,CACjD,IAAIq1H,EAAW,CAAElzI,QAAQ,EAAOj4T,OAAQ7oB,KAAKi3H,IAAK90G,OAAQA,EAAQs3C,QAASklS,GAE3E,GADA3+V,KAAK44B,OAAOolE,OAAO/2F,GAAwB+sd,GACvCA,EAASlzI,OACT,OAEJ9gV,KAAKg54B,cAAe,EAChBh54B,KAAKi54B,cACLj54B,KAAKo54B,eAAe77N,eACpBv9qB,KAAK44B,OAAOyW,IAAIpoC,GAAyBjH,KAAK0yqB,gBAC9C1yqB,KAAKi54B,aAAc,GAEvBj54B,KAAKu/0B,OAAO97wB,UACZ58D,GAAO83V,EACX,CACA3+V,KAAK44B,OAAOolE,OAAO/2F,GAA0B,CAAC,EApB9C,CAqBJ,EACA6x4B,EAAmBv64B,UAAUg74B,iBAAmB,SAAUp33B,EAAQ0G,GAC9D,IAAIuiD,EAAO,CACPyhM,YAAa5lQ,GACbmnrB,WAAYvlqB,EAAOo0N,MAAOoxc,WAAYxlqB,EAAOpiB,MAGjD2kE,EAAqB,YAAIprE,KACzBA,KAAK44B,OAAOwmc,QAAQn4d,GAAoBmkE,GACxC,IAAIou0B,EAAUx54B,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,mBAAoB4J,GAAI+S,EAAOqqD,IAAM,aACjGlzE,KAAKy54B,OAASz54B,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,WAAY4J,GAAI+S,EAAOqqD,IAAM,YACzFlzE,KAAKy54B,OAAO7w4B,aAAa,aAAc5I,KAAKoppB,KAAKvtK,YAAY,yBACzD77e,KAAK44B,OAAOojrB,kBACQzmrB,SAASpgB,cAAc,oDAC7BoC,YAAYvX,KAAKy54B,QAG/Bz54B,KAAK44B,OAAO6gC,QAAQliD,YAAYvX,KAAKy54B,QAEzCz54B,KAAKu/0B,OAAS,IAAI99J,GAAO,CACrB8F,eAAe,EACf9C,eAAe,EACfjsqB,OAAQxY,KAAK44B,OAAOpgB,OACpB+5C,SAAS,EACTw7a,UAAW/te,KAAK44B,OAAOm1c,UACvBzrW,QAAStiI,KAAKwurB,cAAcjhrB,KAAKvN,KAAMmiB,EAAQ0G,GAC/CzT,SAAUpV,KAAK44B,OAAO6gC,QAAQt1D,UAAUC,SAAS,YAAc,CAAEgJ,EAAG,SAAU6hB,EAAG,UAAa,CAAE7hB,EAAG,GAAI6hB,EAAG,IAC1G9M,OAAQniB,KAAK44B,OAAO6gC,QAAQt1D,UAAUC,SAAS,YAAcmxB,SAASwK,KAAO//B,KAAK44B,OAAO6gC,QACzFuG,QAAS,CAAC,CACF5pD,MAAOpW,KAAKs54B,eAAe/r4B,KAAKvN,KAAM6oB,GACtCg8pB,YAAa,CACTrgX,QAASxkU,KAAKoppB,KAAKvtK,YAAY,gBAAiBt3M,WAAW,EAC3D11R,SAAU7O,KAAK44B,OAAO/pB,SAAW,kBAAyB7O,KAAK44B,OAAO/pB,SAAW,mBAGzF,CACIuH,MAAOpW,KAAKq54B,cAAc9r4B,KAAKvN,KAAM6oB,GACrCg8pB,YAAa,CAAErgX,QAASxkU,KAAKoppB,KAAKvtK,YAAY,eAC1Chte,SAAU7O,KAAK44B,OAAO/pB,SAAW,sBAA6B7O,KAAK44B,OAAO/pB,SAAW,wBAEjG21T,QAASg1kB,EACTj24B,OAASytK,GAAkBs9gB,GAAansqB,EAAQ,cAAiBniB,KAAK44B,OAAO6gC,QAAQt1D,UAAUC,SAAS,YAAc,IAAM,IAC5Hy9qB,kBAAmB,CAAEjY,OAAQ,QAC7B/6pB,SAAU7O,KAAK44B,OAAO/pB,SAAW,kBAAyB7O,KAAK44B,OAAO/pB,SAAW,mBAGrF7O,KAAKu/0B,OAA4B,kBAAI,EACrCv/0B,KAAK4qtB,yBACL5qtB,KAAKu/0B,OAAOzg0B,SAAS9e,KAAKy54B,OAC9B,EACAX,EAAmBv64B,UAAUqstB,uBAAyB,WACvC5qtB,KAAK44B,OACPojrB,mBACLh8sB,KAAKu/0B,OAAOnq0B,SAAW,CAAEhI,EAAG,GAAI6hB,EAAG,IACnCjvB,KAAKu/0B,OAAOp9zB,OAASoT,SAASpgB,cAAc,oDAC5CnV,KAAKu/0B,OAAOh80B,MAAQ,OACpBvD,KAAKu/0B,OAAOnxc,SAAU,EACtBpuY,KAAKu/0B,OAAOv/wB,QAAU,CAAC,CAAC,GAEhC,EACA840B,EAAmBv64B,UAAUiwrB,cAAgB,SAAUrsqB,EAAQ0G,IACtDq0c,GAAQK,UAAYp7c,GACrB2sqB,GAAqB3sqB,EAAQniB,KAAKu/0B,QAEtCv/0B,KAAK054B,2BAA6B7w3B,EAClC7oB,KAAK254B,eAAex33B,EAAQ0G,GACtBA,EAAOo+oB,oBAAwBj2f,GAAkBnoJ,EAAOrrB,SAAYwzK,GAAkBnoJ,EAAOrrB,OAAOw7S,KAClGhoI,GAAkBnoJ,EAAOrrB,OAAOw7S,GAAGh6S,UACvCgB,KAAK634B,sBAEJ7muB,GAAkBnoJ,EAAOm+oB,gBAIpBh2f,GAAkBhxK,KAAKy54B,OAAOtk4B,cAAc,sBAClDnV,KAAKy54B,OAAOtk4B,cAAc,mBAAmBy5P,QAC7C5uQ,KAAKy54B,OAAOtk4B,cAAc,mBAAmBjR,cAAcC,UAAU2C,IAAI,mBALzE9G,KAAKy54B,OAAOtk4B,cAAc,sBAAsB2xU,kBAAkBl4E,QAClE5uQ,KAAKy54B,OAAOtk4B,cAAc,sBAAsB2xU,kBAAkB3iV,UAAU2C,IAAI,iBAMxF,EAOAgy4B,EAAmBv64B,UAAUs54B,oBAAsB,WAC/C,IAAIhv3B,EAAS7oB,KAAK054B,2BACd7w3B,EAAOmpkB,gBACPhylB,KAAK44B,OAAOolE,OAAO/2F,GAA4B,CAAC,GAEhDjH,KAAK44B,OAAOojrB,kBACZh8sB,KAAKu/0B,OAAO9lxB,QAAQp1D,MAAMf,KAAO,MACjCtD,KAAKu/0B,OAAO9lxB,QAAQp1D,MAAM2mB,UAAY,QAGtChrB,KAAKu/0B,OAAO9lxB,QAAQp1D,MAAM2mB,UAAYhrB,KAAKgrB,UAE/ChrB,KAAKu/0B,OAAO/h0B,OACZ,IAAIu23B,EAAY/z4B,KAAKu/0B,OAAO9lxB,QAAQtkD,cAAc,kBAAkBA,cAAc,SAC9E6+3B,EAAWh04B,KAAKu/0B,OAAO9lxB,QAAQtkD,cAAc,sBAAsBA,cAAc,SAC7D,UAApB4+3B,EAAUj14B,OAAyC,cAApBi14B,EAAUj14B,OACrB,SAApBi14B,EAAUj14B,OAAwC,aAApBi14B,EAAUj14B,MACxCk14B,EAAwB,cAAE,GAAY,SAAI,EAEpChjuB,GAAkBgjuB,GAAYA,EAAS5j4B,aAAa,eAC1D4j4B,EAAwB,cAAE,GAAY,SAAI,GAEzCnr3B,EAAOm+oB,gBACRhnqB,KAAK454B,YAAY/w3B,EAAQ7oB,KAAKu/0B,OAAO9lxB,QAAQtkD,cAAc,IAAM0T,EAAOqqD,IAAM,YAElF,IAAI9H,EAAO,CACPyhM,YAAa5lQ,GACbmnrB,WAAYvlqB,EAAOo0N,MAAOoxc,WAAYxlqB,EAAOpiB,MAGjD2kE,EAAqB,YAAIprE,KACzBA,KAAKg54B,cAAe,EACfh54B,KAAKi54B,aACNj54B,KAAK44B,OAAOwmc,QAAQn4d,GAAuBmkE,EAEnD,EACA0t0B,EAAmBv64B,UAAUo74B,eAAiB,SAAUx33B,EAAQ80G,GAC5D,IAAIu8wB,EAAgBxz4B,KAAKu/0B,OAAO9lxB,QAAQtkD,cAAc,qBACtDnV,KAAK44B,OAAO92B,IAAI,sBAAuB,CAAE+mB,OAAQouG,IACjDj3H,KAAKuz4B,iBAAiBC,EAAerx3B,EAAQ80G,GAC7Cj3H,KAAK654B,gBAAgBrG,EAAerx3B,EAAQ80G,EAChD,EACA6hxB,EAAmBv64B,UAAUg14B,iBAAmB,SAAUC,EAAerx3B,EAAQ0G,GAC7E7oB,KAAKm54B,SAAS5F,iBAAiBC,EAAerx3B,EAAQ0G,EAAQ7oB,KAAKu/0B,OAAQv/0B,KAAKwxrB,UAAUsoN,aAC9F,EACAhB,EAAmBv64B,UAAUs74B,gBAAkB,SAAUrG,EAAerx3B,EAAQ0G,GAC5E,IAAIkx3B,EAAW/54B,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,sBACzD0jrB,EAAO5vrB,KAAKwxrB,UAChBgiN,EAAcj83B,YAAYwi4B,GAC1B,IAAIC,EAAqB,IAAIh64B,KAAKk54B,SAASrw3B,EAAOpiB,MAAMzG,KAAK44B,OAAQ54B,KAAKk4rB,eAAgBl4rB,KAAK44B,OAAO60pB,gBACtG,GAAI5kqB,EAAOm+oB,eAAgB,CACvB,IAAIwrO,EAAW,CAAC,EAEhBA,EAAS3p3B,EAAOo0N,OAASu1pB,EAA2B,MAAI5iN,EAAK79oB,OAAOlpB,EAAOo0N,OACvEp0N,EAAOu+oB,kBACPorO,EAAS3p3B,EAAOu+oB,iBAAmBwoB,EAAK79oB,OAAOlpB,EAAOo0N,OACtDu1pB,EAAS3p3B,EAAOo0N,YAAShwK,GAG7Bul0B,EAAiB,OAAI3p3B,EACrB,IAAIutqB,EAAkBp2rB,KAAK44B,OAAO4ud,SAA8C,kBAA3B3+d,EAAOm+oB,eACxDqvB,EAAer2rB,KAAK44B,OAAO09pB,eAAiBt2rB,KAAK44B,OAAO09pB,cAAcC,eACtEv2rB,KAAK44B,OAAO09pB,cAAcC,cAAc/uM,QACxCs5N,EAAS9gtB,KAAK44B,OAAO6gC,QAAQ3jD,GAAK+S,EAAOqqD,IAAM,iBACnD,GAAIkjnB,GAAmBC,EACnBxtqB,EAAOw9oB,mBAAPx9oB,CAA2B2p3B,EAAUxy4B,KAAK44B,OAAQ,iBAAkBkorB,EAAQ,KAAM,KAAMi5L,GACxF/54B,KAAK44B,OAAO49pB,uBAIZjH,GAAewqN,EADGlx3B,EAAOw9oB,mBAAPx9oB,CAA2B2p3B,EAAUxy4B,KAAK44B,OAAQ,iBAAkBkorB,IAGtF9gtB,KAAKi54B,cACLj54B,KAAKo54B,eAAelrN,KAAOlurB,KAAKu/0B,OAAO9lxB,QAAQtkD,cAAc,4BAC7DnV,KAAKo54B,eAAet/Z,aACpB95e,KAAK44B,OAAOsI,GAAGj6B,GAAyBjH,KAAK0yqB,eAAgB1yqB,MAC7DA,KAAKo54B,eAAevqN,aAE5B,MAEI,GAAK79gB,GAAkBnoJ,EAAOrrB,SAAYwzK,GAAkBnoJ,EAAOrrB,OAAOw7S,KAClEhoI,GAAkBnoJ,EAAOrrB,OAAOw7S,GAAGh6S,QAWvCg74B,EAAmBh74B,OAAO,CACtB6pB,OAAQA,EAAQ1G,OAAQ433B,EACxB9B,gBAAiBj44B,KAAKm54B,SAAU3B,aAAcx34B,KAAKoppB,KAAMg6B,UAAWpjrB,KAAKu/0B,aAb7B,CAChD,IAAI9vmB,EAAO5mN,EAAOrrB,OAAOw7S,GAAGh6S,OACR,kBAATywO,IACPA,EAAO1hB,GAAS0hB,EAAM9qO,SAE1B8qO,EAAK,CACD5mN,OAAQA,EAAQ1G,OAAQ433B,EACxB9B,gBAAiBj44B,KAAKm54B,SAAU/1N,UAAWpjrB,KAAKu/0B,QAExD,CAQR,EACAu5D,EAAmBv64B,UAAUq74B,YAAc,SAAU3ixB,EAAKgjxB,GAKtD,IAJA,IAAIC,EACA/33B,EAAS833B,EAAc9k4B,cAAc,sBACrC6k4B,EAAqB,IAAIh64B,KAAKk54B,SAASjixB,EAAIxwH,MAAMzG,KAAK44B,OAAQ54B,KAAKk4rB,eAAgBl4rB,KAAK44B,OAAO60pB,gBAE1Ftzd,EAAK,EAAG6ge,EADHh7rB,KAAKytrB,eAAetsjB,QACIg5F,EAAK6ge,EAAUl9rB,OAAQq8N,IAAM,CAC/D,IAAItxM,EAASmyqB,EAAU7ge,GACnBljG,EAAI/jD,MAAQrqD,EAAOqqD,MACnBgn0B,EAAUrx3B,EAAO/pB,MAEzB,CACA,GAAKkyK,GAAkB/5C,EAAIz5H,SAAYwzK,GAAkB/5C,EAAIz5H,OAAOw7S,KAC5DhoI,GAAkB/5C,EAAIz5H,OAAOw7S,GAAGriL,OAQpCqjxB,EAAmBrjxB,MAAM,CAAE9tG,OAAQouG,EAAK90G,OAAQA,EAAQyW,OAAQ54B,KAAK44B,OAAQk/2B,cAAeoC,QARhD,CAC5C,IAAIzqqB,EAAOx4G,EAAIz5H,OAAOw7S,GAAGriL,MACL,kBAAT84G,IACPA,EAAO1hB,GAAS0hB,EAAM9qO,SAE1B8qO,EAAK,CAAE5mN,OAAQouG,EAAK90G,OAAQA,EAAQyW,OAAQ54B,KAAK44B,OAAQk/2B,cAAeoC,GAC5E,CAIJ,EACApB,EAAmBv64B,UAAU+64B,eAAiB,SAAUrixB,GACpD,IACIkjxB,EAAOn64B,KAAKu/0B,OAAO9lxB,QAAQtkD,cAAc,4BACzCil4B,EAAcp64B,KAAKm54B,SAAS9E,gBAC5B2F,EAAqB,IAAIh64B,KAAKk54B,SAASjixB,EAAIxwH,MAAMzG,KAAK44B,OAAQ54B,KAAKk4rB,eAAgBl4rB,KAAK44B,OAAO60pB,gBACnG,GAAIx2jB,EAAI+viB,eAAgB,CACpB,IAAIvtmB,EAAUz5D,KAAKy54B,OAAOtk4B,cAAc,sBACpCkl4B,OAAY,EAChB,GAAI5g1B,EAAQnzB,SAAS,GAAGxnC,MACpBu74B,EAAY5g1B,EAAQnzB,SAAS,GAAGxnC,WAGhC,GAAKkyK,GAAkBv3G,EAAQnzB,SAAS,GAAG28b,eAKtC,CACD,IAAIq3a,EAAW7g1B,EAAQtkD,cAAc,cAChC67J,GAAkBspuB,KACnBD,EAAyB,YAAbpjxB,EAAIxwH,KAAqB6z4B,EAASvmnB,QACzC/iH,GAAkBspuB,EAASr3a,eAExBq3a,EAASx74B,MADTw74B,EAASr3a,cAAc,GAAGnke,MAG1C,MAXIu74B,GAAar64B,KAAK44B,OAAOmqO,UAAYtpM,EAAQnzB,SAAS,GAClDmzB,EAAQtkD,cAAc,UAAU8td,cAAc,GAAGnke,MAY7DkB,KAAKwxrB,UAAUmnE,eAAe1hoB,EAAIgmH,MAAOm9pB,EAAaC,EAC1D,MAEI,GAAKrpuB,GAAkB/5C,EAAIz5H,SACtBwzK,GAAkB/5C,EAAIz5H,OAAOw7S,KAAQhoI,GAAkB/5C,EAAIz5H,OAAOw7S,GAAGxjL,MAStEwkxB,EAAmBxkxB,KAAK2kxB,EAAMljxB,EAAKmjxB,EAAap64B,KAAKwxrB,eATwB,CAC7E,IAAI/hd,EAAOx4G,EAAIz5H,OAAOw7S,GAAGxjL,KACL,kBAATi6G,IACPA,EAAO1hB,GAAS0hB,EAAM9qO,SAGhB8qO,EAAK,CAAEh2K,QAAS0g1B,EAAMtx3B,OAAQouG,EAAK94D,SAAUi80B,EAAarB,QAAS/44B,KAAKwxrB,WACtF,CAKJxxrB,KAAKkrmB,cACDlrmB,KAAK44B,OAAOo5jB,gBACZhylB,KAAK44B,OAAOolE,OAAO/2F,GAAmC,CAAC,EAE/D,EACA6x4B,EAAmBv64B,UAAUmttB,sBAAwB,WACjD1rtB,KAAKkrmB,aACT,EACA4tS,EAAmBv64B,UAAU864B,cAAgB,SAAUxw3B,GACnD7oB,KAAKwxrB,UAAUunE,0BAA0BlwuB,EAAOo0N,OAChDj9O,KAAKkrmB,aACT,EACA4tS,EAAmBv64B,UAAUklE,QAAU,WACnCzjE,KAAKkrmB,aACT,EAKA4tS,EAAmBv64B,UAAU05vB,gBAAkB,WAC3C,MAAO,CAAEh7gB,MAAOj9O,KAAKi3H,IAAIgmH,MAAO9+K,SAAUn+D,KAAKm54B,SAAS9E,gBAC5D,EACAyE,EAAmBv64B,UAAUg84B,mBAAqB,WAoB9C,OAnBAv64B,KAAKi54B,aAAc,EACnBj54B,KAAKo54B,eAAev2a,YAAY7ie,KAAKgf,SACrChf,KAAKo54B,eAAevrN,iBAAiB7trB,KAAKgf,SAC1Chf,KAAKu/0B,OAAOv/wB,QAAU,CAAC,CACf5pD,MAAOpW,KAAKo54B,eAAe7qN,SAAShhrB,KAAKvN,KAAKo54B,gBAC9Cv0N,YAAa,CACTrgX,QAASxkU,KAAKo54B,eAAe9rN,kBAAkB,gBAC/Cz+qB,SAAU,YAAa01R,WAAW,IAG1C,CACInuR,MAAOpW,KAAKo54B,eAAe7qN,SAAShhrB,KAAKvN,KAAKo54B,gBAC9Cv0N,YAAa,CAAEh2qB,SAAU,SAAU21T,QAASxkU,KAAKo54B,eAAe9rN,kBAAkB,kBAE1FttrB,KAAKo54B,eAAeh2N,UAAYpjrB,KAAKu/0B,OACrCv/0B,KAAKo54B,eAAettN,IAAM9rrB,KAAKu/0B,OAAO9lxB,QACtCz5D,KAAKo54B,eAAettN,IAAI3nrB,UAAU2C,IAAI,kBACtC9G,KAAKo54B,eAAettN,IAAI3nrB,UAAU0C,OAAO,oBACzC7G,KAAKgrB,UAAY,QACVhrB,KAAKo54B,eAAetrN,KAAKnvqB,SACpC,EACAm63B,EAAmBv64B,UAAUm0qB,eAAiB,SAAUtnmB,GAChDprE,KAAKi54B,aACLj54B,KAAK44B,OAAOwmc,QAAQn4d,GAAuBmkE,EAEnD,EACO0t0B,CACX,CAlWwC,GCTpC0B,IAAgC,WAUhC,SAASA,EAAe5h3B,EAAQ60pB,EAAgByK,GAC5Cl4rB,KAAK44B,OAASA,EACd54B,KAAKy64B,cAAe,EACpBz64B,KAAK064B,aAAe,IAAInwN,GAAmB3xpB,GAC3C54B,KAAKqN,kBACT,CAoEA,OA7DAmt4B,EAAej84B,UAAUklE,QAAU,WAC/BzjE,KAAK64D,sBACL74D,KAAK064B,aAAaxvS,aACtB,EACAsvS,EAAej84B,UAAU8ulB,WAAa,SAAUrukB,GAC5Chf,KAAK064B,aAAartT,WAAWrukB,GAC7Bhf,KAAK44B,OAAO92B,IAAI,sBAAuB,CAAE+mB,OAAQ7J,EAAQ6J,QAC7D,EACA2x3B,EAAej84B,UAAU2smB,YAAc,WACnClrmB,KAAKyjE,UACDzjE,KAAKy64B,cACLz64B,KAAK44B,OAAOolE,OAAO/2F,GAAqB,CAAC,EAEjD,EACAuz4B,EAAej84B,UAAUmttB,sBAAwB,WAC7C1rtB,KAAK064B,aAAaxvS,aACtB,EAOAsvS,EAAej84B,UAAUyke,cAAgB,WACrC,MAAO,gBACX,EACAw3a,EAAej84B,UAAUk0qB,YAAc,SAAUrnmB,GAC7CprE,KAAK44B,OAAOwmc,QAAQn4d,GAAoBmkE,EAC5C,EACAov0B,EAAej84B,UAAUm0qB,eAAiB,SAAUtnmB,GAChDprE,KAAK44B,OAAOwmc,QAAQn4d,GAAuBmkE,EAC/C,EACAov0B,EAAej84B,UAAUo84B,cAAgB,SAAUvv0B,GAC3CqnqB,GAAgBzyuB,KAAK44B,UACrB54B,KAAK44B,OAAOolE,OAAO/2F,GAAqBmkE,GACxCA,EAAK01Q,QAAS,EAEtB,EACA05jB,EAAej84B,UAAUkstB,kBAAoB,SAAUxzlB,GACnDj3H,KAAK064B,aAAarrN,YAAYp4jB,EAClC,EACAujxB,EAAej84B,UAAUgutB,kBAAoB,WACzCvstB,KAAK064B,aAAaprN,iBAClBtvrB,KAAK064B,aAAaxvS,aACtB,EACAsvS,EAAej84B,UAAU8O,iBAAmB,WACpCrN,KAAK44B,OAAOspc,cAGhBlie,KAAK44B,OAAOsI,GAAGj6B,GAAsBjH,KAAKyyqB,YAAazyqB,MACvDA,KAAK44B,OAAOsI,GAAGj6B,GAAyBjH,KAAK0yqB,eAAgB1yqB,MAC7DA,KAAK44B,OAAOsI,GAAGj6B,GAAoBjH,KAAK264B,cAAe364B,MAC3D,EACAw64B,EAAej84B,UAAUs6D,oBAAsB,WACvC74D,KAAK44B,OAAOspc,cAGhBlie,KAAK44B,OAAOyW,IAAIpoC,GAAsBjH,KAAKyyqB,aAC3CzyqB,KAAK44B,OAAOyW,IAAIpoC,GAAyBjH,KAAK0yqB,gBAC9C1yqB,KAAK44B,OAAOyW,IAAIpoC,GAAoBjH,KAAK264B,eAC7C,EACOH,CACX,CApFoC,GCPhCt5pB,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAKI090B,IAAQ,UACRC,IAAS,qBACT92V,IAAM,QACN02L,IAAU,kBACVw+N,IAAa,CAAC,QAAS,QAAS,QAAS,WAAY,WAAY,OAAQ,QAAS,MAYlFC,IAA6B,SAAUr2rB,GASvC,SAASq2rB,EAAY773B,EAASy6C,GAC1B,IAAImnJ,EAAQ4D,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,KAEnD,OADA4gN,EAAMovN,WAAY,EACXpvN,CACX,CA0aA,IAAIk6rB,EAqCJ,OA3dA55pB,IAAU25pB,EAAar2rB,GAavBs2rB,EAAgBD,EAChBA,EAAYt84B,UAAUy/0B,cAAgB,SAAU9kxB,GAC5Cl5D,KAAK+zR,SAAU,EACf/zR,KAAKqie,WACL,IAAIvje,EAAQkB,KAAKy5D,QAAQrpD,aAAa,SACtCtR,EAAQkB,KAAKmnrB,OAASrorB,EAAQkB,KAAKy5D,QAAQ36D,MAAQkB,KAAKlB,MACxD,IAAI2H,SAAczG,KAAKlB,MACnBkB,KAAKmnrB,OAAkB,YAAT1grB,IACd3H,EAAkB,SAAVA,GAEZkB,KAAKo/d,QAAQ,SAAU,CAAEtge,MAAOA,EAAOo6D,MAAOA,IAE1Cl5D,KAAK+iQ,WACL7pM,EAAMkH,iBAEd,EACAy60B,EAAYt84B,UAAU8re,aAAe,WAIjC,IAHA,IAAI5gX,EACA/6D,EACAqs1B,EAAW/64B,KAAKg74B,gBACX794B,EAAI,EAAGA,EAAI494B,EAASj94B,OAAQX,KACjCssH,EAAQsxxB,EAAS594B,MACH6C,KAAKy5D,WACf/K,EAAW+kQ,GAAYhqM,EAAOqxxB,IACrB/mnB,SAAU,EACE,oBAAjB/zR,KAAKohJ,UACL1yF,EAASus1B,aAAej74B,KAAKlB,OAI7C,EAMA+74B,EAAYt84B,UAAUklE,QAAU,WAC5B,IAAIm9I,EAAQ5gN,KACRk74B,EAAYl74B,KAAKosX,QACrB5nK,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,MAC1Bk74B,IACKl74B,KAAKg1R,UACNh1R,KAAKu9qB,eAEY,UAAjBv9qB,KAAKohJ,SACD85vB,EAAUnl4B,YACVml4B,EAAUnl4B,WAAWE,aAAajW,KAAKy5D,QAASyh1B,GAEpD76a,GAAO66a,GACPl74B,KAAKy5D,QAAQs6N,SAAU,EACvB,CAAC,OAAQ,QAAS,YAAYh2R,SAAQ,SAAUa,GAC5CgiN,EAAMnnJ,QAAQlG,gBAAgB30D,EAClC,MAGA,CAAC,OAAQ,eAAgB,SAASb,SAAQ,SAAUa,GAChDs84B,EAAU3n1B,gBAAgB30D,EAC9B,IACAs84B,EAAUv83B,UAAY,GACtB3e,KAAKy5D,QAAUz5D,KAAKosX,QAChBpsX,KAAK2he,aACL,CAAC,YAAa,UAAW,SAAS5je,SAAQ,SAAUa,GAChDgiN,EAAMnnJ,QAAQt1D,UAAU2C,IAAIlI,EAChC,IACA+0R,GAAS,gBAAiB,CAAC3zR,MAAOA,KAAKy5D,WAIvD,EACAoh1B,EAAYt84B,UAAU8/nB,aAAe,WACjCr+nB,KAAKgwa,WAAY,CACrB,EACA6qe,EAAYt84B,UAAUu+vB,gBAAkB,WACpC,IAAI9nvB,EAAQhV,KAAK2/B,WACb3qB,GACAA,EAAM7Q,UAAU0C,OAAO,UAE/B,EACAg04B,EAAYt84B,UAAUyke,cAAgB,WAClC,MAAO,OACX,EAOA63a,EAAYt84B,UAAU484B,iBAAmB,WAGrC,IAFA,IAAI1xxB,EACAsxxB,EAAW/64B,KAAKg74B,gBACX794B,EAAI,EAAGgvE,EAAM4u0B,EAASj94B,OAAQX,EAAIgvE,EAAKhvE,IAE5C,IADAssH,EAAQsxxB,EAAS594B,IACP42R,QACN,OAAOtqK,EAAM3qH,MAGrB,MAAO,EACX,EACA+74B,EAAYt84B,UAAUy84B,cAAgB,WAClC,OAAOzl3B,SAAS9H,iBAAiB,uBAAyBztB,KAAKy5D,QAAQrpD,aAAa,QAAU,KAClG,EAOAyq4B,EAAYt84B,UAAUgye,eAAiB,WACnC,OAAOvwe,KAAK6we,aAAa,CAAC,WAC9B,EACAgqa,EAAYt84B,UAAU2+0B,WAAa,WAC/B,OAAIl90B,KAAKy5D,QAAQv1D,cACNlE,KAAKy5D,QAAQv1D,cAGb,IAEf,EACA224B,EAAYt84B,UAAUohC,SAAW,WAC7B,OAAI3/B,KAAKy5D,QAAQ27P,mBACNp1T,KAAKy5D,QAAQ27P,mBAGb,IAEf,EACAyllB,EAAYt84B,UAAUk/E,WAAa,WAC3BuzF,GAAkBhxK,KAAKq90B,uBACvBr90B,KAAKq90B,oBAAsBr90B,KAAK+zR,SAEpC/zR,KAAKu90B,cACLv90B,KAAKo74B,sBACDp74B,KAAKa,MACLb,KAAKy5D,QAAQ7wD,aAAa,OAAQ5I,KAAKa,MAE3C,IAAI/B,EAAQkB,KAAKy5D,QAAQrpD,aAAa,SAClC3J,SAAczG,KAAKlB,MACnBkB,KAAKmnrB,OAAkB,YAAT1grB,IACd3H,EAAkB,SAAVA,IAERkB,KAAKmnrB,MAAQnnrB,KAAKlB,OAAkB,YAAT2H,IAAuB3H,EAAQkB,KAAKlB,QAC/DkB,KAAKy5D,QAAQ7wD,aAAa,QAAS5I,KAAKlB,OAExCkB,KAAK+zR,UACL/zR,KAAKy5D,QAAQs6N,SAAU,GAEvB/zR,KAAKg1R,UACLh1R,KAAKs90B,aAEb,EACAu9D,EAAYt84B,UAAUg/0B,YAAc,WAChC,IAAI7gK,EACAtwT,EAAUpsX,KAAKy5D,QAAQv1D,cACtBkoX,EAAQjoX,UAAUC,SAASg4qB,OAC5BhwT,EAAUpsX,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAWkwqB,MAC7Cp8qB,KAAKy5D,QAAQ1jD,YACb/V,KAAKy5D,QAAQ1jD,WAAWE,aAAam2W,EAASpsX,KAAKy5D,UAG3D,IAAIzkD,EAAQhV,KAAKg+B,cAAc,QAAS,CAAE0U,MAAO,CAAEkhF,IAAK5zH,KAAKy5D,QAAQ3jD,MACrEs2W,EAAQ70W,YAAYvX,KAAKy5D,SACzB2yT,EAAQ70W,YAAYvC,GAChBozd,KACAs0M,EAAa18qB,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAYsw0B,MACtDxn0B,EAAMuC,YAAYmlqB,GAClB50M,GAAa40M,EAAY,CACrB/onB,SAAU,IACVu0a,gBAAgB,KAGxB97G,EAAQjoX,UAAU2C,IAAI,aAClB9G,KAAK+te,WACL/4d,EAAM7Q,UAAU2C,IAAI4+e,KAEpB1lf,KAAK6O,UACL4jD,GAAS,CAAC25T,GAAUpsX,KAAK6O,SAASnM,QAAQ,OAAQ,KAAK6S,OAAOvU,MAAM,MAEpEhB,KAAKgV,OACLhV,KAAKy90B,QAAQz90B,KAAKgV,MAE1B,EACA6l4B,EAAYt84B,UAAU8tuB,aAAe,WAC7BrsuB,KAAKgwa,WACLhwa,KAAK2/B,WAAWx7B,UAAU2C,IAAI,UAEtC,EACA+z4B,EAAYt84B,UAAUm/0B,sBAAwB,SAAUxg1B,GAEpD2/qB,GAAmB3/qB,EADF8C,KAAK2/B,WAAWtG,uBAAuBmjzB,KAAQ,GAEpE,EACAq+D,EAAYt84B,UAAUo/0B,uBAAyB,SAAUzg1B,GACrD,IAAIw/qB,EAAa18qB,KAAK2/B,WAAWtG,uBAAuBmjzB,KAAQ,GAChE,GAAI9/J,EAAY,CAEZ,IADA,IACSv/qB,EADQu/qB,EAAWjvpB,iBAAiB,qBACrB3vB,OAAS,EAAGX,EAAI,EAAGA,IACvCu/qB,EAAW9upB,YAAY8upB,EAAWtvpB,WAAWjwB,IAEjD0/qB,GAAmB3/qB,EAAGw/qB,EAC1B,CACJ,EACAm+N,EAAYt84B,UAAUq/0B,oBAAsB,SAAU1g1B,GAClD,IAAIw/qB,EAAa18qB,KAAK2/B,WAAWtG,uBAAuBmjzB,KAAQ,GAChE,GAAI9/J,EAAY,CAEZ,IADA,IACSv/qB,EADQu/qB,EAAWjvpB,iBAAiB,qBACrB3vB,OAAS,EAAGX,EAAI,EAAGA,IACvCu/qB,EAAW9upB,YAAY8upB,EAAWtvpB,WAAWjwB,IAEjD0/qB,GAAmB3/qB,EAAGw/qB,EAC1B,CACJ,EACAm+N,EAAYt84B,UAAU0/0B,iBAAmB,WACrCj+0B,KAAK+zR,QAAU/zR,KAAKq90B,oBAChBr90B,KAAKq90B,qBACLhmxB,GAAWr3D,KAAKy5D,QAAS,CAAE,QAAW,QAE9C,EASAoh1B,EAAYt84B,UAAUoke,kBAAoB,SAAUiF,EAASC,GAGzD,IAFA,IAAIxyW,EAAOr1H,KAAKk90B,aACZlo0B,EAAQhV,KAAK2/B,WACRw6L,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAE9D,OADWjiC,EAAGiiC,IAEV,IAAK,UACGytQ,EAAQ7zM,SACR/zR,KAAKqqe,eAETrqe,KAAKy5D,QAAQs6N,QAAU6zM,EAAQ7zM,QAC/B,MACJ,IAAK,WACG6zM,EAAQ5yM,UACRh1R,KAAKs90B,cACLt90B,KAAKu9qB,iBAGLv9qB,KAAKy5D,QAAQu7N,UAAW,EACxBh1R,KAAK85e,cAET,MACJ,IAAK,WACGjS,EAAQh5d,UACR6jD,GAAY,CAAC2iE,GAAOwyW,EAAQh5d,SAAS7N,MAAM,MAE3C4me,EAAQ/4d,UACR4jD,GAAS,CAAC4iE,GAAOuyW,EAAQ/4d,SAASnM,QAAQ,OAAQ,KAAK6S,OAAOvU,MAAM,MAExE,MACJ,IAAK,YACG4me,EAAQmG,UACR/4d,EAAM7Q,UAAU2C,IAAI4+e,KAGpB1we,EAAM7Q,UAAU0C,OAAO6+e,KAE3B,MACJ,IAAK,QACD1lf,KAAKy90B,QAAQ71W,EAAQ5yd,OACrB,MACJ,IAAK,gBAC6B,WAA1B4yd,EAAQz6E,cACRn4Y,EAAM7Q,UAAU2C,IAAI,WAGpBkO,EAAM7Q,UAAU0C,OAAO,WAE3B,MACJ,IAAK,OACD7G,KAAKy5D,QAAQ7wD,aAAa,OAAQg/d,EAAQ/me,MAC1C,MACJ,IAAK,QACD,IAAI4F,SAAczG,KAAK+joB,eAAejloB,MACtC,IAAKkyK,GAAkBhxK,KAAK+joB,kBAAoB/joB,KAAK+joB,eAAejloB,OAAkB,YAAT2H,IAAuBzG,KAAK+joB,eAAejloB,OACpH,MAEJkB,KAAKy5D,QAAQ7wD,aAAa,QAASg/d,EAAQ9oe,OAC3C,MACJ,IAAK,iBACDkB,KAAKo74B,sBAGjB,CACJ,EAOAP,EAAYt84B,UAAUgwe,UAAY,WAC9B,IAAI90a,EAAUz5D,KAAKy5D,QAWnB,GAVAz5D,KAAKo4pB,YAAct3L,GAAQ9ge,KAAKy5D,QAAS,QACzCz5D,KAAKohJ,QAAUphJ,KAAKy5D,QAAQ2nF,QAC5B3nF,EAAU0inB,GAAkBn8qB,KAAKg+B,cAAe,kBAAmB,QAASy7B,EAAS2inB,KACrFp8qB,KAAKy5D,QAAUA,EAC2B,UAAtCz5D,KAAKy5D,QAAQrpD,aAAa,SAC1BpQ,KAAKy5D,QAAQ7wD,aAAa,OAAQ,SAEjC5I,KAAKy5D,QAAQ3jD,KACd9V,KAAKy5D,QAAQ3jD,GAAKutc,GAAY,KAAOrjd,KAAKgje,kBAEzB,oBAAjBhje,KAAKohJ,QAA+B,CACpC,IAAIi6vB,EAAkBr74B,KAAKy5D,QAAQrpD,aAAa,mBAC5Cir4B,IACAr74B,KAAKiie,cAAc,CAAE,KAAQo5a,IAAmB,GAChDr74B,KAAKy5D,QAAQ7wD,aAAa,OAAQyy4B,GAE1C,CACJ,EAOAR,EAAYt84B,UAAUupE,OAAS,WAC3B9nE,KAAKy9E,aACAz9E,KAAKg1R,UACNh1R,KAAK85e,aAET95e,KAAK6ve,iBACL7ve,KAAKosX,QAAUpsX,KAAKk90B,YACxB,EACA29D,EAAYt84B,UAAU++0B,YAAc,WAChCt90B,KAAKy5D,QAAQu7N,UAAW,CAC5B,EAEA6lnB,EAAYt84B,UAAUk/0B,QAAU,SAAUpv0B,GACtC,IAAI2G,EAAQhV,KAAK2/B,WACb272B,EAAYtm4B,EAAMqkB,uBAAuBkjzB,KAAO,GAChD++D,EACAA,EAAUlq4B,YAAc/C,GAGxBA,EAAQrO,KAAK6rf,oBAAuB/H,GAAmBE,SAAS31e,GAAQA,EACxEit4B,EAAYt74B,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAWqw0B,IAAO59zB,UAAWtQ,IACtE2G,EAAMuC,YAAY+j4B,IAEK,WAAvBt74B,KAAKmtZ,cACLntZ,KAAK2/B,WAAWx7B,UAAU2C,IAAI,WAG9B9G,KAAK2/B,WAAWx7B,UAAU0C,OAAO,UAEzC,EACAg04B,EAAYt84B,UAAU684B,oBAAsB,WACxC,IAAKpquB,GAAkBhxK,KAAK+joB,gBACxB,IAAK,IAAI5pa,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAK2C,KAAK+joB,gBAAiB5pa,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAC1E,IAAIv7N,EAAMs5L,EAAGiiC,GACTiyJ,EAAUpsX,KAAKy5D,QAAQv1D,cACvB024B,IAAWl24B,QAAQ9F,IAAQ,EACf,UAARA,EACA6zD,GAAS,CAAC25T,GAAUpsX,KAAK+joB,eAAe,GAAKnloB,GAAK8D,QAAQ,OAAQ,KAAK6S,OAAOvU,MAAM,MAEvE,UAARpC,GAA2B,UAARA,EACxBwtX,EAAQxjX,aAAahK,EAAKoB,KAAK+joB,eAAe,GAAKnloB,IAGnDoB,KAAKy5D,QAAQ7wD,aAAahK,EAAKoB,KAAK+joB,eAAe,GAAKnloB,IAI5DwtX,EAAQxjX,aAAahK,EAAKoB,KAAK+joB,eAAe,GAAKnloB,GAE3D,CAER,EACAi84B,EAAYt84B,UAAUg/qB,aAAe,WACjC,IAAIvoqB,EAAQhV,KAAKosX,QACjBsyG,GAAa73d,OAAO7G,KAAKy5D,QAAS,SAAUz5D,KAAKg+0B,eACjDt/W,GAAa73d,OAAO7G,KAAKy5D,QAAS,QAASz5D,KAAKq+nB,cAChD3/J,GAAa73d,OAAO7G,KAAKy5D,QAAS,WAAYz5D,KAAK88vB,iBACnDp+R,GAAa73d,OAAO7G,KAAKy5D,QAAS,QAASz5D,KAAKqsuB,cAChD,IAAIkvK,EAAcvm4B,EAAMm2B,qBAAqB,SAAS,GAClDow2B,IACA78a,GAAa73d,OAAO004B,EAAa,YAAav74B,KAAK090B,uBACnDh/W,GAAa73d,OAAO004B,EAAa,UAAWv74B,KAAK490B,qBACjDl/W,GAAa73d,OAAO004B,EAAa,aAAcv74B,KAAK290B,yBAEpD390B,KAAKo4pB,aACL15L,GAAa73d,OAAO7G,KAAKo4pB,YAAa,QAASp4pB,KAAKi+0B,iBAE5D,EACA48D,EAAYt84B,UAAUu7e,WAAa,WAC/B,IAAI9ke,EAAQhV,KAAK2/B,WACjB++b,GAAa53d,IAAI9G,KAAKy5D,QAAS,SAAUz5D,KAAKg+0B,cAAeh+0B,MAC7D0+d,GAAa53d,IAAI9G,KAAKy5D,QAAS,QAASz5D,KAAKqsuB,aAAcrsuB,MAC3D0+d,GAAa53d,IAAI9G,KAAKy5D,QAAS,QAASz5D,KAAKq+nB,aAAcr+nB,MAC3D0+d,GAAa53d,IAAI9G,KAAKy5D,QAAS,WAAYz5D,KAAK88vB,gBAAiB98vB,MACjE,IAAIu74B,EAAcvm4B,EAAMqkB,uBAAuBkjzB,KAAO,GAClDg/D,IACA78a,GAAa53d,IAAIy04B,EAAa,YAAav74B,KAAK090B,sBAAuB190B,MACvE0+d,GAAa53d,IAAIy04B,EAAa,UAAWv74B,KAAK490B,oBAAqB590B,MACnE0+d,GAAa53d,IAAIy04B,EAAa,aAAcv74B,KAAK290B,uBAAwB390B,OAEzEA,KAAKo4pB,aACL15L,GAAa53d,IAAI9G,KAAKo4pB,YAAa,QAASp4pB,KAAKi+0B,iBAAkBj+0B,KAE3E,EAQA664B,EAAYt84B,UAAU6X,MAAQ,WAC1BpW,KAAKy5D,QAAQrjD,OACjB,EAQAyk4B,EAAYt84B,UAAUg6pB,QAAU,WAC5Bv4pB,KAAKy5D,QAAQm1M,OACjB,EAEAy+C,IAAW,CACPv0P,MACD+h1B,EAAYt84B,UAAW,cAAU,GACpC8uT,IAAW,CACPv0P,MACD+h1B,EAAYt84B,UAAW,eAAW,GACrC8uT,IAAW,CACP63K,IAAS,IACV21a,EAAYt84B,UAAW,eAAW,GACrC8uT,IAAW,CACP63K,GAAS,KACV21a,EAAYt84B,UAAW,gBAAY,GACtC8uT,IAAW,CACP63K,IAAS,IACV21a,EAAYt84B,UAAW,gBAAY,GACtC8uT,IAAW,CACP63K,GAAS,KACV21a,EAAYt84B,UAAW,aAAS,GACnC8uT,IAAW,CACP63K,GAAS,UACV21a,EAAYt84B,UAAW,qBAAiB,GAC3C8uT,IAAW,CACP63K,GAAS,KACV21a,EAAYt84B,UAAW,YAAQ,GAClC8uT,IAAW,CACP63K,GAAS,KACV21a,EAAYt84B,UAAW,aAAS,GACnC8uT,IAAW,CACP63K,IAAS,IACV21a,EAAYt84B,UAAW,2BAAuB,GACjD8uT,IAAW,CACP63K,GAAS,CAAC,IACX21a,EAAYt84B,UAAW,sBAAkB,GAC5Cs84B,EAAcC,EAAgBztlB,IAAW,CACrCq4K,IACDm1a,EAEP,CA7diC,CA6d/Bn5nB,ICrfK,SAAS85nB,IAAax92B,EAAeo+D,EAAWooO,EAASi3kB,EAAY1ta,EAAWvke,GACnF,IAAIky4B,EACAC,EACAC,EAAax/yB,EAAUl4F,cAS3B,GARmB,YAAfu34B,GACAC,EAAkBly4B,GAAU4yF,EAAUl5F,wBAAwBM,OAC9Dm44B,EAAgBn3kB,EAAQthU,wBAAwBM,SAGhDk44B,EAAkBt/yB,EAAUl5F,wBAAwBK,MACpDo44B,EAAgBn3kB,EAAQthU,wBAAwBK,OAEhDm44B,EAAkBC,EAClB,OAAOE,IAAgB792B,EAAeo+D,EAAWooO,EAASi3kB,EAAY1ta,EAAWvke,GAEhF,GAAIoy4B,EAAY,CACjB,IAAIr44B,EAAQq44B,EAAW144B,wBAAwBK,MAC/C,OAAIA,EAAQm44B,GAAkC,YAAfD,GAC3BE,EAAgBp44B,EAChB64F,EAAU/3F,MAAMiK,SAAW/K,EAAQ,KAC5Bs44B,IAAgB792B,EAAeo+D,EAAWooO,EAASi3kB,EAAY1ta,EAAWvke,IAE9Eg7T,CACX,CAEI,OAAOA,CAEf,CAaA,SAASq3kB,IAAgB792B,EAAeo+D,EAAWooO,EAASi3kB,EAAY1ta,EAAWvke,GAC/E,IAAI+o3B,EAAYv01B,EAAc,MAAO,CAAE9xB,UAAW,UAAYuv4B,IAoB9D,OAnBAr/yB,EAAU7kF,YAAYg72B,GACtBA,EAAUh72B,YAAYitT,GAClBh7T,GACA+o3B,EAAUlu3B,MAAMo0N,SAAW,SAC3B85pB,EAAUlu3B,MAAMb,OAASgG,EAAS,OAGlC+o3B,EAAUlu3B,MAAM2mB,UAAYoxE,EAAU/3F,MAAM2mB,UAC5CoxE,EAAU/3F,MAAMo0N,SAAW,UAGZ,YAAfgjrB,EACY,IAAIjmB,IAAQ,CAAEznZ,UAAWA,GAAawkZ,GACxCI,WAAa9h3B,GAAO,MAAQ4q4B,EAAa,OAAQr/yB,GAAW4qP,aAAe,EAGzE,IAAIiriB,IAAQ,CAAElkZ,UAAWA,GAAawkZ,GACxCI,WAAa9h3B,GAAO,MAAQ4q4B,EAAa,OAAQr/yB,GAAWkzP,YAEnEijiB,CACX,CAUO,SAAS8H,IAAcyhB,EAAWri1B,EAASsi1B,GAC9C,GAAID,EAAW,CACX,IAAIz83B,EAAOxO,GAAO,iBAAkB4oD,GAChCp6C,EACK083B,GAAWA,IAAY183B,IACxBy83B,EAAUr40B,UACVhK,EAAQv1D,cAAcqT,YAAY8H,GAClCghd,GAAO5ma,KAIXqi1B,EAAUr40B,UACV48Z,GAAO5ma,GAEf,CACJ,CCtGA,IAAIynL,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAaIm94B,IAAQ,QACRC,IAAS,SACTC,IAAU,YACVC,IAAS,gBACTvoD,IAAW,aACXwoD,IAAY,cACZC,IAAU,UACVC,IAAY,YACZC,IAAY,YACZC,IAAa,aACbr0C,IAAO,OACPD,IAAM,MACNu0C,IAAM,MACNC,IAAQ,UACRC,IAAO,cACPl3Z,IAAW,aACXm3Z,IAAO,cACPC,IAAQ,UACRn3Z,IAAM,QACNsuX,IAAQ,eAKR1vN,IAA+B,SAAU9/b,GAEzC,SAAS8/b,IACL,OAAkB,OAAX9/b,GAAmBA,EAAO5mN,MAAMoC,KAAMnC,YAAcmC,IAC/D,CAsBA,OAzBAkhP,IAAUoja,EAAe9/b,GAIzB6oG,IAAW,CACP63K,GAAS,OACVo/K,EAAc/lpB,UAAW,cAAU,GACtC8uT,IAAW,CACP63K,GAAS,aACVo/K,EAAc/lpB,UAAW,gBAAY,GACxC8uT,IAAW,CACP63K,GAAS,SACVo/K,EAAc/lpB,UAAW,YAAQ,GACpC8uT,IAAW,CACP63K,GAAS,YACVo/K,EAAc/lpB,UAAW,eAAW,GACvC8uT,IAAW,CACP63K,GAAS,QACVo/K,EAAc/lpB,UAAW,WAAO,GACnC8uT,IAAW,CACP63K,GAAS,cACVo/K,EAAc/lpB,UAAW,iBAAa,GACzC8uT,IAAW,CACP63K,GAAS,UACVo/K,EAAc/lpB,UAAW,gBAAY,GACjC+lpB,CACX,CA3BmC,CA2BjCp6K,IAKE4ya,IAA0B,SAAUt4rB,GAEpC,SAASs4rB,IACL,OAAkB,OAAXt4rB,GAAmBA,EAAO5mN,MAAMoC,KAAMnC,YAAcmC,IAC/D,CAmBA,OAtBAkhP,IAAU47pB,EAAUt4rB,GAIpB6oG,IAAW,CACP63K,GAAS,OACV43a,EAASv+4B,UAAW,eAAW,GAClC8uT,IAAW,CACP63K,GAAS,KACV43a,EAASv+4B,UAAW,UAAM,GAC7B8uT,IAAW,CACP63K,IAAS,IACV43a,EAASv+4B,UAAW,iBAAa,GACpC8uT,IAAW,CACPi4K,GAAW,GAAIw3a,IAChBA,EAASv+4B,UAAW,aAAS,GAChC8uT,IAAW,CACP63K,GAAS,KACV43a,EAASv+4B,UAAW,YAAQ,GAC/B8uT,IAAW,CACP63K,GAAS,KACV43a,EAASv+4B,UAAW,WAAO,GACvBu+4B,CACX,CAxB8B,CAwB5B5ya,IAKE6ya,IAAuC,SAAUv4rB,GAEjD,SAASu4rB,IACL,OAAkB,OAAXv4rB,GAAmBA,EAAO5mN,MAAMoC,KAAMnC,YAAcmC,IAC/D,CAUA,OAbAkhP,IAAU67pB,EAAuBv4rB,GAIjC6oG,IAAW,CACP63K,GAAS,cACV63a,EAAsBx+4B,UAAW,cAAU,GAC9C8uT,IAAW,CACP63K,GAAS,MACV63a,EAAsBx+4B,UAAW,gBAAY,GAChD8uT,IAAW,CACP63K,GAAS,SACV63a,EAAsBx+4B,UAAW,cAAU,GACvCw+4B,CACX,CAf2C,CAezC7ya,IAOE8ya,IAA0B,SAAUx4rB,GASpC,SAASw4rB,EAASh+3B,EAASy6C,GACvB,IAAImnJ,EAAQ4D,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,KAMnD,OALA4gN,EAAMq8rB,OAAS,GACfr8rB,EAAMniI,UAAY,IAAI6zC,GAAU,CAAC,GACjCsuF,EAAMs8rB,WAAY,EAClBt8rB,EAAMu8rB,SAAW,GACjBv8rB,EAAMw8rB,cAAgB,OACfx8rB,CACX,CAkqEA,OAlrEAsgC,IAAU87pB,EAAUx4rB,GAuBpBw4rB,EAASz+4B,UAAUgwe,UAAY,WAC3B,IAAKvue,KAAKq94B,OAAQ,CACd,IAAI5gQ,OAAK,EACT,GAA6B,oBAAzBz8oB,KAAKy5D,QAAQ2nF,QAA+B,CAC5Cq7f,EAAKz8oB,KAAKg+B,cAAc,KAAM,CAC1BloB,GAAIutc,GAAYrjd,KAAKgje,iBAAkB92d,UAAW,qBAAuBlM,KAAKgje,kBAElF,IAAIs6a,EAASvvrB,GAAS,gBAAiB/tN,KAAKy5D,SAC5C/G,GAAY,CAAC1yD,KAAKy5D,SAAU,CAAC,YAAa,QAAS,KAAOz5D,KAAKgje,kBAC/Dhje,KAAK4v4B,cAAgB5v4B,KAAKy5D,QAC1Bz5D,KAAKy5D,QAAUgjlB,EACf9oX,GAAS,gBAAiB2pnB,EAAQt94B,KAAKy5D,QAC3C,KACK,CACDgjlB,EAAKz8oB,KAAKg+B,cAAc,KAAM,CAAEloB,GAAIutc,GAAYrjd,KAAKgje,mBACrD16U,GAAO,GAAG1nJ,MAAMb,KAAKC,KAAKy5D,QAAQr8B,WAAU,GAAMkJ,UAAWm2mB,GAC7D,IAAI8gQ,EAASv94B,KAAKy5D,QAAQ27P,mBACtBmolB,EACAv94B,KAAKy5D,QAAQv1D,cAAc+R,aAAawmoB,EAAI8gQ,GAG5Cv94B,KAAKy5D,QAAQv1D,cAAcqT,YAAYkloB,GAE3Cz8oB,KAAK4v4B,cAAgBnzP,CACzB,CACAz8oB,KAAK4v4B,cAAcvr4B,MAAMqmB,QAAU,MACvC,CACA,GAA6B,aAAzB1qB,KAAKy5D,QAAQ2nF,QAAwB,CAKrC,IAJA,IAAIq+U,EAAMz/d,KAAKy5D,QACX4inB,EAAatud,GAAS,gBAAiB0xQ,GAEvCrzG,GADAqwR,EAAKz8oB,KAAKg+B,cAAc,MACdh+B,KAAKg+B,cAAc,WAAY,CAAE9xB,UAAW,KAAOlM,KAAKgje,gBAAkB,cAC/EllY,EAAM,EAAG3xB,EAAMszZ,EAAIpoa,WAAWv5D,OAAQggG,EAAM3xB,EAAK2xB,IACtD2+iB,EAAG7zoB,aAAa62d,EAAIpoa,WAAWymC,GAAKnvC,SAAU8wa,EAAIpoa,WAAWymC,GAAKxmC,WAEtEmoa,EAAI1pd,WAAWE,aAAam2W,EAASqzG,GACrCY,GAAOZ,GACPA,EAAMg9K,EACNrwR,EAAQ70W,YAAYkod,GACpB9rM,GAAS,gBAAiB0oZ,EAAY58M,GACtCz/d,KAAK4v4B,cAAgBxjhB,EACrBpsX,KAAKy5D,QAAUgma,EACVz/d,KAAKy5D,QAAQ3jD,KACd9V,KAAKy5D,QAAQ3jD,GAAKutc,GAAYrjd,KAAKgje,iBAE3C,CACJ,EAOAg6a,EAASz+4B,UAAUupE,OAAS,WACxB,IAAI84I,EAAQ5gN,KACZA,KAAKy9E,aACLz9E,KAAKyspB,cACLzspB,KAAK85e,aACL95e,KAAK6ve,iBACL,IAAIzjH,EAAUpsX,KAAKk90B,aAEfl90B,KAAK+oI,UAAY/oI,KAAKw94B,kBAAoBx94B,KAAKwnf,SAAWxnf,KAAK+iQ,YAC/D/tM,uBAAsB,WAClBwm1B,IAAa56rB,EAAM5iL,cAAeouV,EAASxrK,EAAMnnJ,QAAS,UAAWmnJ,EAAMmtR,UAC/E,GAER,EACAiva,EAASz+4B,UAAUk/E,WAAa,WAC5B,IAAI2uS,EAAUpsX,KAAKk90B,aACd9wd,IACDA,EAAUpsX,KAAKg+B,cAAc,MAAO,CAAE9xB,UAAW,KAAOlM,KAAKgje,gBAAkB,aAC3Ehje,KAAKq94B,OACLr94B,KAAKy5D,QAAQv1D,cAAc+R,aAAam2W,EAASpsX,KAAKy5D,SAGtDlkC,SAASwK,KAAKxoB,YAAY60W,IAG9BpsX,KAAK6O,UACL4jD,GAAS,CAAC25T,GAAUpsX,KAAK6O,SAASnM,QAAQ,OAAQ,KAAK6S,OAAOvU,MAAM,MAEpEhB,KAAK+te,WACL3hH,EAAQjoX,UAAU2C,IAAI4+e,KAE1Bt5H,EAAQ70W,YAAYvX,KAAKy5D,SACrBz5D,KAAKq94B,QAAUr94B,KAAKy94B,gBACfz94B,KAAKmiB,QACNniB,KAAK094B,sBAAsBtxhB,IAGnCpsX,KAAK294B,cAAgB394B,KAAK494B,eAC9B,EACAZ,EAASz+4B,UAAUkupB,YAAc,WAC7B,IAAKzspB,KAAKyqB,MAAM3sB,OAAQ,CACpB,IAAI2sB,EAAQg7mB,GAASwc,sBAAsBjipB,KAAKy5D,QAAS,CAAEg4P,OAAQ,CAAE72B,MAAO,WAC5E56R,KAAKiie,cAAc,CAAEx3c,MAAOA,IAAS,GACjC24b,OAAepjd,KAAKq94B,OACpBr94B,KAAKy5D,QAAUz5D,KAAK694B,mBAAmB794B,KAAKy5D,SAG5Cz5D,KAAKy5D,QAAQ96C,UAAY,EAEjC,CACA,IAAI89nB,EAAKz8oB,KAAK894B,YAAY994B,KAAKyqB,OAG/B,GAFA69H,GAAOpoJ,MAAM3B,UAAUqC,MAAMb,KAAK08oB,EAAGn2mB,UAAWtmC,KAAKy5D,SACrDz5D,KAAKy5D,QAAQt1D,UAAU2C,IAAI,iBACvB9G,KAAKq94B,QAIL,IAHKr94B,KAAKy94B,eAAiBz94B,KAAKy5D,QAAQt1D,UAAUC,SAAS,eACvDpE,KAAK+94B,kBAAkB/94B,KAAKy5D,SAE5Bz5D,KAAKw94B,gBAAiB,CACtB,IAAIpxhB,EAAUpsX,KAAKk90B,aACfl90B,KAAKy5D,QAAQt1D,UAAUC,SAAS,cAChCo34B,IAAax74B,KAAKg+B,cAAeouV,EAASpsX,KAAKy5D,QAAS,UAAWz5D,KAAK+te,WAGxEyta,IAAax74B,KAAKg+B,cAAeouV,EAASpsX,KAAKy5D,QAAS,UAAWz5D,KAAK+te,UAEhF,OAGA/te,KAAKy5D,QAAQv1D,cAAc0E,aAAa,OAAQ,UAChD5I,KAAKy5D,QAAQv1D,cAAc0E,aAAa,aAAc,eAE9D,EACAo04B,EAASz+4B,UAAUu7e,WAAa,WAC5B,IAAI1tH,EAAUpsX,KAAKk90B,aACnB,GAAIl90B,KAAKmiB,OAAQ,CAGb,IAFA,IAAIA,OAAS,EACT673B,EAAcv9a,GAAUzge,KAAKmiB,QACxBhlB,EAAI,EAAGgvE,EAAM6x0B,EAAYlg5B,OAAQX,EAAIgvE,EAAKhvE,IAC/CglB,EAAS673B,EAAY7g5B,GACjB6C,KAAKq94B,OACL3+a,GAAa53d,IAAIqb,EAAQ,QAASniB,KAAKi+4B,uBAAwBj+4B,MAG3Dk9d,GAAQU,MACR,IAAIoe,GAAM75d,EAAQ,CAAE0vpB,QAAS7xqB,KAAKqy3B,aAAa9k3B,KAAKvN,QAGpD0+d,GAAa53d,IAAIqb,EAAQ,cAAeniB,KAAKk+4B,aAAcl+4B,MAKvE,GADAA,KAAKigV,cAAgB99T,GAChBniB,KAAKq94B,OAAQ,CACd3+a,GAAa53d,IAAI9G,KAAKigV,cAAe,SAAUjgV,KAAKohqB,cAAephqB,MACnE,IAAK,IAAIm6N,EAAK,EAAGjiC,EAAK26S,GAAoB7ye,KAAKigV,eAAgB9lH,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CACjF,IAAIu2I,EAAWx4K,EAAGiiC,GAClBukQ,GAAa53d,IAAI4pW,EAAU,SAAU1wW,KAAKohqB,cAAephqB,KAC7D,CACJ,CACJ,CACKk9d,GAAQK,WACTv9d,KAAKm+4B,qBAAuBn+4B,KAAKo+4B,aAAa7w4B,KAAKvN,MACnDA,KAAKq+4B,yBAA2Br+4B,KAAKw9tB,iBAAiBjwtB,KAAKvN,MAC3D0+d,GAAa53d,IAAI9G,KAAKq94B,OAAS9n3B,SAAW62V,EAAS,YAAapsX,KAAKm+4B,qBAAsBn+4B,MAC3F0+d,GAAa53d,IAAIyuB,SAAU,YAAav1B,KAAKq+4B,yBAA0Br+4B,OAE3EA,KAAKs+4B,qBAAuBt+4B,KAAK6wf,aAAatjf,KAAKvN,MACnD0+d,GAAa53d,IAAIyuB,SAAU,QAASv1B,KAAKs+4B,qBAAsBt+4B,MAC/DA,KAAK853B,kBAAkB1tgB,GACvBpsX,KAAK6v2B,SAAW/nY,GAAa17G,EAAS,CAAElpK,SAAU,IAAMy5rB,KAC5D,EACAK,EAASz+4B,UAAUu73B,kBAAoB,SAAUrg0B,GAC7C,IAAIihb,EAAa,CACb6ja,UAAWjC,IACXkC,QAASnC,IACT9tuB,MAAOytuB,IACPyC,UAAWlC,IACXmC,WAAYlC,IACZjyvB,OAAQ0xvB,KAERj84B,KAAKq94B,SACL3ia,EAAW5gK,KAAOquhB,IAClBztX,EAAWzsd,IAAMi60B,IACjBxtX,EAAWnhK,IAAMkjkB,KAErB,IAAIria,GAAe3gb,EAAS,CACxBuhb,UAAWh7e,KAAK2+4B,gBAAgBpx4B,KAAKvN,MACrC06e,WAAYA,GAEpB,EACAsia,EAASz+4B,UAAUi/tB,iBAAmB,SAAUtguB,GACxC4je,GAAQ5je,EAAEilB,OAAQ,MAAQniB,KAAKgje,gBAAkB,cAAgBhje,KAAKk90B,cACjEp8W,GAAQ5je,EAAEilB,OAAQ,MAAQniB,KAAKgje,gBAAkB,WACtDhje,KAAK4+4B,UAAU5+4B,KAAKq94B,OAAS,KAAOr94B,KAAKi94B,OAAOn/4B,OAAQZ,EAEhE,EACA8/4B,EAASz+4B,UAAU64X,WAAa,SAAUl6X,GACpB,KAAdA,EAAE4iS,SAAgC,KAAd5iS,EAAE4iS,SAClB5iS,EAAEilB,SAAWjlB,EAAEilB,OAAOhe,UAAUC,SAAS,kBAAoBlH,EAAEilB,OAAOhe,UAAUC,SAAS,iBACzFlH,EAAEijE,gBAGd,EACA680B,EAASz+4B,UAAUog5B,gBAAkB,SAAUzh5B,GAC3C,IAAI2h5B,EAAa,GACb9qB,EAAO723B,EAAEilB,OACT283B,EAAe9+4B,KAAKq94B,SAAWr94B,KAAKy94B,gBAAkBz94B,KAAKy5D,QAAQt1D,UAAUC,SAAS,eACnFpE,KAAKi94B,OAAOn/4B,OAAS,EAK5B,GAJAZ,EAAEijE,iBACEngE,KAAKw94B,iBAAiC,KAAdtg5B,EAAE4iS,SAAkBi0lB,EAAK5v3B,UAAUC,SAAS,iBACpEpE,KAAK++4B,qBAAqB,CAAC7C,IAAStoD,KAAW,CAAC9yX,GAAQizZ,EAAM,MAAQ/z3B,KAAKgje,gBAAkB,cAE7F87a,EACA,OAAQ5h5B,EAAE8kN,QACN,KAAKw6rB,IACDqC,EAAarC,IACbt/4B,EAAE8kN,OAASs6rB,IACX,MACJ,KAAKC,IACDsC,EAAatC,IACbr/4B,EAAE8kN,OAASq6rB,IACX,MACJ,KAAKC,IACDuC,EAAavC,IACbp/4B,EAAE8kN,OAASw6rB,IACX,MACJ,KAAKH,IACDwC,EAAaxC,IACbn/4B,EAAE8kN,OAAS,QAIlB,GAAIhiN,KAAK+te,UACV,OAAQ7we,EAAE8kN,QACN,KAAKu6rB,IACDuC,GAAe,EACfD,EAAatC,IACbr/4B,EAAE8kN,OAASw6rB,IACX,MACJ,KAAKA,IACDsC,GAAe,EACfD,EAAarC,IACbt/4B,EAAE8kN,OAASu6rB,IAIvB,OAAQr/4B,EAAE8kN,QACN,KAAKs6rB,IACL,KAAKD,IACL,KAAKn0C,IACL,KAAKC,IACL,KAAKs0C,IACDz84B,KAAKg/4B,iBAAiB9h5B,GACtB,MACJ,KAAKs/4B,IACDx84B,KAAKi/4B,qBAAqB/h5B,GAC1B,MACJ,KAAKq/4B,IACDv84B,KAAKk/4B,kBAAkBhi5B,GACvB,MACJ,KAAK8+4B,IACGh84B,KAAKy94B,eAAkC,SAAjB1pB,EAAK3yuB,SAAsB2yuB,EAAK5v3B,UAAUC,SAAS,eACzEpE,KAAKi+4B,uBAAuB/g5B,GAG5B8C,KAAKi/4B,qBAAqB/h5B,GAE9B,MACJ,KAAK++4B,IACDj84B,KAAKk/4B,kBAAkBhi5B,GAG3B4h5B,IACA5h5B,EAAE8kN,OAAS68rB,EAEnB,EACA7B,EAASz+4B,UAAUyg5B,iBAAmB,SAAU9h5B,GAC5C,IAAIii5B,EAAMn/4B,KAAKo/4B,gBACXC,EAAcni5B,EAAE8kN,SAAWs6rB,KAAap/4B,EAAE8kN,SAAWmmpB,KAAQjr2B,EAAE8kN,SAAWy6rB,IAAO,EAAI0C,EAAIjyP,kBAAoB,EAC7GoyP,EAASD,EACTE,EAAMv/4B,KAAKw/4B,aAAaL,EAAKjD,KAC7BqD,IACIri5B,EAAE8kN,SAAWkmpB,KAAOhr2B,EAAE8kN,SAAWmmpB,MACjCm3C,EAASt/4B,KAAKy/4B,OAAON,EAAKI,IAE9BA,EAAIp74B,UAAU0C,OAAOq14B,KACjBh/4B,EAAE8kN,SAAWkmpB,KAAOhr2B,EAAE8kN,SAAWmmpB,MAC7Bjr2B,EAAE8kN,SAAWs6rB,IACbgD,IAGAA,IAEAA,KAAYpi5B,EAAE8kN,SAAWs6rB,IAAY6C,EAAIjyP,mBAAqB,KAC9DoyP,EAASD,KAIrB,IAAIK,EAAMP,EAAI742B,SAASg52B,GACvBA,EAASt/4B,KAAKk5pB,UAAUwmP,EAAKJ,EAAQpi5B,EAAE8kN,QACvCm9rB,EAAI742B,SAASg52B,GAAQn74B,UAAU2C,IAAIo14B,KACnCiD,EAAI742B,SAASg52B,GAAQ1woB,OACzB,EACAouoB,EAASz+4B,UAAU26pB,UAAY,SAAUwmP,EAAK/y3B,EAAOq1L,GACjD,IAAIm9rB,EAAMn/4B,KAAKo/4B,gBACXC,EAAcr9rB,IAAWs6rB,KAAat6rB,IAAWmmpB,KAAQnmpB,IAAWy6rB,IAAO,EAAI0C,EAAIjyP,kBAAoB,EAsB3G,OArBIwyP,EAAIv74B,UAAUC,SAASg44B,MAAcsD,EAAIv74B,UAAUC,SAASqhf,MAAai6Z,EAAIv74B,UAAUC,SAASw44B,QAC5F56rB,IAAWs6rB,KAAa3v3B,IAAUwy3B,EAAIjyP,kBAAoB,GAGrDlrc,IAAWq6rB,KAAqB,IAAV1v3B,EAF3BA,EAAQ0y3B,EAKFr9rB,IAAWs6rB,KAAet6rB,IAAWw6rB,KAG3B,QAAXx6rB,GAAoB09rB,EAAIv74B,UAAUC,SAASg44B,KAFhDzv3B,IAMAA,MAGR+y3B,EAAMP,EAAI742B,SAAS3Z,MACP+y3B,EAAIv74B,UAAUC,SAASg44B,MAAcsD,EAAIv74B,UAAUC,SAASqhf,MAAai6Z,EAAIv74B,UAAUC,SAASw44B,QACxGjw3B,EAAQ3sB,KAAKk5pB,UAAUwmP,EAAK/y3B,EAAOq1L,IAEhCr1L,CACX,EACAqw3B,EAASz+4B,UAAU6g5B,cAAgB,SAAUO,GACzC,IAAI/+rB,EAAQ5gN,KAEZ,QADkB,IAAd2/4B,IAAwBA,EAAY3/4B,KAAKi94B,OAAOn/4B,QAChDkC,KAAKq94B,OAAQ,CACb,IAAI79oB,EAAQ,CAACx/P,KAAKk90B,cAAc/10B,OAAO,GAAGvG,MAAMb,KAAK0ge,GAAU,IAAMuzY,OAAS2rC,GAC1EC,EAAW,GAQf,OAPen/a,GAAU,IAAMuzY,KACtBj22B,SAAQ,SAAU4gW,IACnB/9I,EAAMnnJ,QAAQ3jD,KAAO6oV,EAAK7oV,GAAG9U,MAAM,KAAK,IAAM29V,EAAK7oV,GAAG9U,MAAM,KAAK,GAAK,IAAM29V,EAAK7oV,GAAG9U,MAAM,KAAK,KAC/F4+4B,EAASji5B,KAAKghW,EAEtB,IAEO3tL,GADPwuF,EAAQ,CAACx/P,KAAKk90B,cAAc/10B,OAAO,GAAGvG,MAAMb,KAAK6/4B,IAAWD,IAC1B,KAAO9u4B,GAAO,iBAAkB2uP,EACtE,CAEI,OAAOx/P,KAAKk90B,aAAa52yB,SAASq52B,EAE1C,EACA3C,EAASz+4B,UAAU0g5B,qBAAuB,SAAU/h5B,GAChD,IAAIyyW,EACAwviB,EAAMn/4B,KAAKo/4B,gBACXG,EAAMv/4B,KAAKw/4B,aAAaL,EAAKjD,KACjC,GAAIqD,EAAK,CACL,IAAID,EAASt/4B,KAAKy/4B,OAAON,EAAKI,GAC1BtC,EAASj94B,KAAKi94B,OAAO914B,OAAOm44B,GAC5Bjq0B,EAAOr1E,KAAK+2P,QAAQkmpB,GACxB,GAAI5n0B,EAAK5qD,MAAM3sB,OACXkC,KAAKi94B,OAAOt/4B,KAAK2h5B,GACjBt/4B,KAAK6/4B,QAAU,QACf7/4B,KAAKgiN,OAAS9kN,EAAE8kN,OAChBhiN,KAAK0lY,SAAS65gB,EAAKlq0B,GAAO,GAAI,EAAGn4E,QAGjC,GAAIA,EAAE8kN,SAAWg6rB,IAAO,CAChBh84B,KAAKq94B,QAAiC,IAAvBr94B,KAAKi94B,OAAOn/4B,OAC3BkC,KAAK++4B,qBAAqB,CAACnrD,KAAW,CAAC5z1B,KAAKk90B,eAG5CqiE,EAAIp74B,UAAU0C,OAAOq14B,KAEzBqD,EAAIp74B,UAAU2C,IAAI8s1B,KAClBjkf,EAAY,CAAEl2S,QAAS8l1B,EAAKlq0B,KAAMA,EAAMnc,MAAOh8D,GAC/C8C,KAAKo/d,QAAQ,SAAUzvH,GACvB,IAAImwiB,EAAOP,EAAIpq4B,cAAc,eAC7B,GAAIkgE,EAAK3a,KAAOol1B,EACZ,OAAQA,EAAK1v4B,aAAa,WACtB,IAAK,SACDzL,OAAOgqI,KAAKt5D,EAAK3a,IAAK,UACtB,MACJ,IAAK,UACD/1D,OAAOi0B,OAAOo2I,SAASlvI,KAAOu1C,EAAK3a,IACnC,MACJ,QACI/1D,OAAOqqK,SAASlvI,KAAOu1C,EAAK3a,IAGxC16D,KAAK4+4B,UAAU,KAAM1h5B,GACrB,IAAI6i5B,EAAM//4B,KAAKw/4B,aAAax/4B,KAAKo/4B,gBAAiBxrD,KAC9CmsD,IACAA,EAAI574B,UAAU2C,IAAIo14B,KAClB6D,EAAInxoB,QAEZ,CAER,CACJ,EACAouoB,EAASz+4B,UAAU2g5B,kBAAoB,SAAUhi5B,GACzC8C,KAAKi94B,OAAOn/4B,QACZkC,KAAK6/4B,QAAU,OACf7/4B,KAAK4+4B,UAAU5+4B,KAAKi94B,OAAOn/4B,OAAQZ,IAG/BA,EAAE8kN,SAAWi6rB,KACbj84B,KAAK4+4B,UAAU,KAAM1h5B,EAGjC,EACA8/4B,EAASz+4B,UAAU6iqB,cAAgB,SAAUlkqB,GACzC8C,KAAK4+4B,UAAU,KAAM1h5B,EACzB,EACA8/4B,EAASz+4B,UAAU8z3B,aAAe,SAAUn13B,GACxC8C,KAAKk94B,WAAY,EACjBl94B,KAAKk+4B,aAAahh5B,EAAEw0G,cACxB,EACAsryB,EAASz+4B,UAAU2/4B,aAAe,SAAUhh5B,GACxCA,EAAEijE,iBACFngE,KAAKogS,cAAgBljS,EAAEilB,OACvBniB,KAAKgg5B,SAAU,EACfhg5B,KAAK0hE,MAAQxkE,EAAEuyC,eAAiBvyC,EAAEuyC,eAAe,GAAGiyB,MAAQ,EAAIxkE,EAAEwkE,MAAQ,EAC1E1hE,KAAK2hE,MAAQzkE,EAAEuyC,eAAiBvyC,EAAEuyC,eAAe,GAAGkyB,MAAQ,EAAIzkE,EAAEykE,MAAQ,EAC1E3hE,KAAK4+4B,UAAU,KAAM1h5B,GACjB8C,KAAKgg5B,UACDhg5B,KAAKig5B,QAAQ/i5B,EAAEilB,SACfniB,KAAK0lY,SAAS,KAAM,KAAM1lY,KAAK2hE,MAAO3hE,KAAK0hE,MAAOxkE,GAEtD8C,KAAKgg5B,SAAU,EAEvB,EAEAhD,EAASz+4B,UAAUqg5B,UAAY,SAAUsB,EAAShj5B,EAAGij5B,GACjD,IAAIv/rB,EAAQ5gN,KAGZ,QAFgB,IAAZkg5B,IAAsBA,EAAU,QAC1B,IAANhj5B,IAAgBA,EAAI,MACpB8C,KAAKog5B,gBAAiB,CACtB,IACIC,EAGAv+jB,EAJAi+jB,OAAM,EAENO,EAAYtg5B,KAAKk90B,aACjBh0J,OAAkB,EAElBq3N,EAASvg5B,KAAKq/P,YACdmhpB,GAAU,EACVz/Z,EAAM/gf,KAAKq94B,OAASkD,EAAOzi5B,OAAS,EAAIwi5B,EAAUpzP,kBAClDuzP,EAAOzg5B,KAAKq94B,QAAkB,IAARt8Z,EAAYlwe,GAAO,QAAS0v4B,EAAOx/Z,EAAM,IAC7DtgB,GAAU,iBAAkB6/a,GAAWv/Z,EAAM,GAQnD,GAPI/gf,KAAKq94B,QAAUoD,EAAKt84B,UAAUC,SAAS,aACvC274B,EAAM//4B,KAAKw/4B,aAAaiB,EAAM7sD,OAE1BmsD,EAAI574B,UAAU0C,OAAO+s1B,KAEzB4sD,GAAU,IAETA,EAAS,CACV,IAAIE,EAAWxj5B,GAAKA,EAAEilB,QAAUniB,KAAK2g5B,MAAMzj5B,EAAEilB,QAEzCniB,KAAK0/4B,IADLgB,GAIWD,EAAKn62B,SAAS,GAE7B+52B,EAASrg5B,KAAKi94B,OAAOn/4B,OAASkC,KAAK+2P,QAAQ/2P,KAAKi94B,QAAU,KAC1Dn7jB,EAAUu+jB,EAASA,EAAO513B,MAAQzqB,KAAKyqB,MACvCy+pB,EAAkB,CAAEzvnB,QAASgn1B,EAAM7lI,WAAYylI,EAAQ513B,MAAOq3T,EAAS5oR,MAAOh8D,EAAG4jV,QAAQ,EAAOkvF,WAAW,GAC3Ghwa,KAAKo/d,QAAQ,cAAe8pN,GAAiB,SAAU03N,GACnD,IAAIxgP,EACAylB,EAEAtwB,EAkCAsrP,EACAC,EACAC,EArCAC,EAAU,GAEV9+d,GAAU0+d,EAAkB9/jB,QAC5BohG,GAAUthO,EAAMo/rB,WACZp/rB,EAAMy8rB,QACNj9O,EAAWt/L,GAAQ2/a,EAAM,IAAMzsC,KAC3BpzpB,EAAM68rB,gBACNr9O,EAASl8pB,cAAcG,MAAM0mB,UAAY,GACzC+1c,GAAQ2/a,EAAM,gBAAgB734B,aAAa,gBAAiB,UAEhEg4M,EAAMqgsB,oBAAoB7gP,GAC1Bi6N,IAAc5mkB,GAAY2sW,EAAS95nB,SAAS,GAAIkv1B,KAAUp1N,EAAS95nB,SAAS,KAC5EivnB,EAAW9hW,GAAY2sW,EAAUvnZ,KACxBt2O,OACTy+2B,EAAU5gP,EAAStqpB,GACnBy/oB,EAAS9xlB,UACT48Z,GAAO+/L,IAGPx/c,EAAMsgsB,gBAAgBT,GAAM,GAEhC56N,EAAY,CAAEpsnB,QAASgn1B,EAAM7lI,WAAYylI,EAAQ513B,MAAOq3T,GACxDlhI,EAAMw+Q,QAAQ,UAAWymN,GACzBjle,EAAMq8rB,OAAOr92B,MACe,IAAxBghL,EAAMq8rB,OAAOn/4B,QAAgBZ,GAAgB,UAAXA,EAAEuJ,OACpCm6M,EAAMugsB,aAAc,GAEnBvgsB,EAAMy8rB,SACP3+a,GAAa73d,OAAO454B,EAAM,UAAW7/rB,EAAMw2K,YACrB,UAAlBx2K,EAAMi/rB,UACNj/rB,EAAMi/rB,QAAU,MAI5Bj/rB,EAAMwgsB,sBAIN,IAAIC,EAAYzgsB,EAAMs8nB,cAAgBt8nB,EAAMw+rB,gBACxCx+rB,EAAMo/rB,UACFp/rB,EAAMq/rB,QAAQ/i5B,EAAEilB,SAChBy+L,EAAM8kL,SAAS,KAAM,KAAM9kL,EAAMj/I,MAAOi/I,EAAMl/I,MAAOxkE,GAEzD0jN,EAAMo/rB,SAAU,GAEhBp/rB,EAAMy8rB,QAAUgE,GAAaL,EAAQlj5B,QAErC+i5B,EAAW,IAAIj94B,OAAO,gBAAkBg9M,EAAMnnJ,QAAQ3jD,GAAK,UAAU+6C,KAAKmw1B,GAAS,GACnFF,EAAWO,EAAUls4B,cAAc,QAAU0r4B,EAAW,MACxDE,EAAUL,GAAYW,EAAUls4B,cAAc,QAAUur4B,EAAS5q4B,GAAK,OAEjEur4B,IACLP,EAAWO,EAAUls4B,cAAc,2BACnC4r4B,EAAUL,GAAYW,EAAUls4B,cAAc,QAAUur4B,EAAS5q4B,GAAK,OAE1E,IAAIwr4B,EAAWZ,GAAYA,EAASjz3B,iBAAiB,gBACrD,GAAIy0Z,GAAUthO,EAAM68rB,eAAiByC,IAAaoB,EAASxj5B,OACvD8iN,EAAM2gsB,eAAerk5B,QAEpB,GAAIglb,IAAWthO,EAAM68rB,eAAiBqD,IAAaC,GAA4B,SAAlBngsB,EAAMi/rB,UAAuBj/rB,EAAMq8rB,OAAOn/4B,SAAW8iN,EAAMy8rB,QAAkC,IAAxBz8rB,EAAMq8rB,OAAOn/4B,QAAe,CAC/J,IAAI2he,EAAOvie,IAAMA,EAAEilB,OAAOhe,UAAUC,SAAS,cAAgBlH,EAAEilB,OAAOhe,UAAUC,SAAS,iBACnF08d,GAAQ5je,EAAEilB,OAAQ,mBAAqB,KACzCs9c,GACAA,EAAMA,EAAItqd,cAAc,iBACpByrM,EAAMg9rB,iBAAoBn+a,GAAO7+Q,EAAMosjB,SAASvtS,EAAI3pd,IAAI,GAAMhY,QAAU8iN,EAAMq8rB,OAAOn/4B,SACrF8iN,EAAMg+rB,UAAUh+rB,EAAMq8rB,OAAOr8rB,EAAMq8rB,OAAOn/4B,OAAS,GAAIZ,GAAG,IAIxDA,GAAKA,EAAEilB,OAAOhe,UAAUC,SAAS,gBACnCw8M,EAAMg+rB,UAAUh+rB,EAAMq8rB,OAAOr8rB,EAAMq8rB,OAAOn/4B,OAAS,GAAIZ,EAGnE,MACK,GAAIglb,IAAWi+d,IAAeD,IAAat/rB,EAAM68rB,eAAiB78rB,EAAMq8rB,OAAOn/4B,QACxD,IAAxB8iN,EAAMq8rB,OAAOn/4B,QAAgB4i5B,GAAYW,IAAcX,EAASx84B,eAChE08M,EAAMg+rB,UAAU,KAAM1h5B,QAErB,GAAIglb,GAAUlxQ,GAAkBkvuB,IAAYt/rB,EAAMq8rB,OAAOn/4B,OAC1D8iN,EAAMg+rB,UAAU,KAAM1h5B,QAErB,IAAIglb,GAAWthO,EAAMy8rB,QAAW6C,GAAmC,IAAxBt/rB,EAAMq8rB,OAAOn/4B,QAAiB8iN,EAAM4gsB,cAI/E,GAAIt/d,GAAUthO,EAAMy8rB,QAAUng5B,GAAKA,EAAEilB,QACd,IAAxBy+L,EAAMq8rB,OAAOn/4B,QAAgBgje,GAAQ5je,EAAEilB,OAAQ,4BAC/Cy+L,EAAMg+rB,UAAU,EAAG1h5B,QAElB,GAAIglb,IAAWthO,EAAMy8rB,QAAU58a,GAAU,iBAAkB6/a,GAAWJ,EAAU,IAAkB,IAAZhj5B,EAAE0oC,MACzFg7K,EAAMg+rB,UAAU,KAAM1h5B,OAErB,CACD,IAAIglb,GAA6B,UAAlBthO,EAAMi/rB,SAAyC,UAAlBj/rB,EAAMi/rB,QAG7C,CACD,IAAIV,EAAMv+rB,EAAMw+rB,gBACZqC,EAAQ7gsB,EAAM4+rB,aAAaL,EAAKvrD,KAWpC,GAVI6tD,IACAA,EAAM744B,aAAa,gBAAiB,SACpC644B,EAAMt94B,UAAU0C,OAAO+s1B,MACnBgtD,EAAkB5we,WAAa0we,GAA8B,SAAlB9/rB,EAAMi/rB,WACjD4B,EAAMt94B,UAAU2C,IAAIo14B,KACfh/4B,EAAEilB,QAAWjlB,EAAEilB,OAAOhe,UAAUC,SAAS,oBAC1Cq94B,EAAM7yoB,WAIbszK,GAAUthO,EAAM68rB,eAAiBiD,GAAuD,UAA3CA,EAAStw4B,aAAa,kBACzB,SAA3Csw4B,EAAStw4B,aAAa,iBAA6B,CAC/C0wd,GAAQ4/a,EAAU,4BAClB9/rB,EAAMq8rB,OAAS,GAGfr8rB,EAAMq8rB,OAAOr92B,MAEjBghL,EAAMq8rB,OAAOt/4B,KAAKijN,EAAM8gsB,QACxB,IAAIC,EAAS/gsB,EAAMm2C,QAAQn2C,EAAMq8rB,QACjCyD,EAAS934B,aAAa,gBAAiB,QACvCg4M,EAAM8kL,SAASg7gB,EAAUiB,GAAS,GAAI,EAAGzk5B,EAC7C,CACJ,MA5BI0jN,EAAM2gsB,eAAerk5B,GA6BrB0jN,EAAMq8rB,OAAOn/4B,OAAS,IACM,UAAxB8iN,EAAMw8rB,eAAqD,UAAxBx8rB,EAAMw8rB,gBACzCx8rB,EAAMg9rB,gBAAkBh9rB,EAAM+8rB,cAC9B/8rB,EAAMw8rB,cAAgB,QAGlC,MA/CIx8rB,EAAM4gsB,eAAgB,EACtB5gsB,EAAMg+rB,UAAU,EAAG1h5B,GA+CvB0jN,EAAMghsB,oBACV,GACJ,CACJ,CACJ,EACA5E,EAASz+4B,UAAU6i5B,oBAAsB,WAErC,GAAIph5B,KAAKwnf,SAAWxnf,KAAK+oI,UAAmC,IAAvB/oI,KAAKi94B,OAAOn/4B,OAAc,CAE3D,IAAI+7f,EAAU75f,KAAK65f,QAAQ51f,OAAO,EAAGjE,KAAKyqB,MAAM3sB,QAChDkC,KAAKywe,cAAc,CAAC,aAEpBzwe,KAAK65f,QAAUA,EACf75f,KAAKwwe,sBACT,CACJ,EACAwsa,EAASz+4B,UAAUsj5B,iBAAmB,SAAUxs0B,EAAMpE,GAClD,GAAI+/F,GAAkB37F,GAClB,OAAO,KAEP27F,GAAkB//F,KAClBA,EAAQ,GAEZ,IAAIwgP,EAASzxT,KAAK8h5B,UAAU7w0B,GAC5B,MAAO,CAAE5iE,KAAMgnE,EAAKo8O,EAAOpjT,MAAOyH,GAAIu/D,EAAKo8O,EAAO37S,IAAK2U,MAAO4qD,EAAKo8O,EAAO72B,OAAQ1nD,UAAW79J,EAAKo8O,EAAOv+E,WACrGkqa,QAAS/nkB,EAAKo8O,EAAO2rV,SAAU1ilB,IAAK2a,EAAKo8O,EAAO/2P,KACxD,EACAsi1B,EAASz+4B,UAAU8gQ,UAAY,WAC3B,IAAIz+C,EAAQ5gN,KACRug5B,EAAS,GAMb,MALA,GAAG3/4B,MAAMb,KAAKw1B,SAAS9H,iBAAiB,IAAMum1B,MAAQj22B,SAAQ,SAAU4gW,IAC/D3tL,GAAkB2tL,EAAKxpV,cAAc,IAAMwn4B,OAAU/7rB,EAAMosjB,SAASrua,EAAKxpV,cAAc,IAAMwn4B,KAAM7m4B,IAAI,GAAMhY,QAC9Gyi5B,EAAO5i5B,KAAKghW,EAEpB,IACO4hjB,CACX,EACAvD,EAASz+4B,UAAU6h5B,cAAgB,WAC/B,OAAQpg5B,KAAKi94B,OAAOn/4B,OAAS,GAAMkC,KAAKy5D,QAAQt1D,UAAUC,SAAS,kBAAoB6iV,GAAUjnV,KAAKy5D,SAAS35D,SACnH,EACAk94B,EAASz+4B,UAAU0h5B,QAAU,SAAU993B,GACnC,IAAI893B,GAAU,EACd,GAAIjg5B,KAAKxC,OAAQ,CACbyi5B,GAAU,EAEV,IADA,IAAIzi5B,EAASwC,KAAKxC,OAAOwD,MAAM,KACtB7D,EAAI,EAAGgvE,EAAM3uE,EAAOM,OAAQX,EAAIgvE,EAAKhvE,IAC1C,GAAI2je,GAAQ3+c,EAAQ,IAAM3kB,EAAOL,IAAK,CAClC8i5B,GAAU,EACV,KACJ,CAER,CACA,OAAOA,CACX,EACAjD,EAASz+4B,UAAUmnY,SAAW,SAAU9tF,EAAIviO,EAAMlyE,EAAKG,EAAMpG,EAAGilB,GAC5D,IAAIy+L,EAAQ5gN,UACA,IAARmD,IAAkBA,EAAM,QACf,IAATG,IAAmBA,EAAO,QACpB,IAANpG,IAAgBA,EAAI,WACT,IAAXilB,IAAqBA,EAASniB,KAAKigV,eACvC,IAAImsC,EAAUpsX,KAAKk90B,aACnBl90B,KAAK+h5B,MAAQnqmB,EACb,IAAIoqmB,EAA6B,KAApBhi5B,KAAKy5D,QAAQ3jD,GAAY9V,KAAKy5D,QAAQ3jD,GAAK,OAQxD,GAPA9V,KAAKwh5B,eAAgB,EACjBxwuB,GAAkB7tK,KAClBA,GAAO,GAEP6tK,GAAkB1tK,KAClBA,GAAQ,GAERs0S,EAAI,CAEJ,GADA53S,KAAKii5B,MAAQji5B,KAAK894B,YAAYzo0B,EAAKr1E,KAAK2nlB,SAAS,WAAY3nlB,KAAKi94B,OAAOn/4B,OAAS,MAC7EkC,KAAKq94B,QAAUngb,GAAQK,SAAU,CAClCnxG,EAAQ13U,UAAUrwC,MAAMqmB,QAAU,OAClC,IAAIjZ,EAAO,CACPpD,KAAMgnE,EAAKr1E,KAAK2nlB,SAAS,SAAShnlB,WAAYy8oB,QAASy/P,IAAQ,eAE/DqF,EAAQ,IAAIpF,IAAS984B,KAAKyqB,MAAM,GAAI,QAAShZ,GAAM,GACnD0w4B,EAAMni5B,KAAK894B,YAAY,CAACoE,IAAQ572B,SAAS,GAC7C672B,EAAIh+4B,UAAU2C,IAAIq14B,KAClBn84B,KAAKii5B,MAAMhs4B,aAAaks4B,EAAKni5B,KAAKii5B,MAAM372B,SAAS,GACrD,CACItmC,KAAKq94B,QACLr94B,KAAKo21B,aAAep21B,KAAKg+B,cAAc,MAAO,CAC1C9xB,UAAW,KAAOlM,KAAKgje,gBAAkB,YAAcgxY,IAAOl+1B,GAAI8hS,EAAG9hS,GAAK,YAAcks4B,EAAS,WAEjGhi5B,KAAKy94B,eACLt64B,EAAMy0S,EAAGovC,aACTpvC,EAAGrgS,YAAYvX,KAAKo21B,eAGpB7g0B,SAASwK,KAAKxoB,YAAYvX,KAAKo21B,cAEnCp21B,KAAKoi5B,mBAAqBpi5B,KAAKy5D,QAAQt1D,UAAUC,SAAS,eAAwC,IAAvBpE,KAAKi94B,OAAOn/4B,OACvFkC,KAAKu1pB,SAAWv1pB,KAAKqi5B,cAAcri5B,KAAKo21B,aAAcp21B,KAAKii5B,MAAOrqmB,EAAI53S,KAAKoi5B,oBACvEpi5B,KAAK+oI,UACL/oI,KAAKwwe,uBAELxwe,KAAKy94B,cACLz94B,KAAKsi5B,oBAAoBti5B,KAAKii5B,MAAOrqmB,IAGjC53S,KAAK6O,UACL4jD,GAAS,CAACzyD,KAAKo21B,cAAep21B,KAAK6O,SAASnM,QAAQ,OAAQ,KAAK6S,OAAOvU,MAAM,MAElFhB,KAAKu1pB,SAAShznB,QAEbviC,KAAKy94B,eAAkBz94B,KAAK494B,kBAAmB594B,KAAKui5B,WAKrDvi5B,KAAKwi5B,kBAAkB5qmB,EAAI53S,KAAKii5B,MAAO5s0B,EAAMn4E,EAAG,EAAG,EAAG,SAJtDyH,OAAO8zM,cAAcz4M,KAAKkzrB,OAC1BlzrB,KAAKkzrB,MAAQvurB,OAAOwzB,YAAW,WAAcyoL,EAAM4hsB,kBAAkB5qmB,EAAIh3F,EAAMqhsB,MAAO5s0B,EAAMn4E,EAAG,EAAG,EAAG,OAAS,GAAG8C,KAAKui5B,eAO1Hvi5B,KAAKii5B,MAAM594B,MAAMmkD,OAASxoD,KAAKy5D,QAAQp1D,MAAMmkD,OAC7C4jU,EAAQ70W,YAAYvX,KAAKii5B,QACpBji5B,KAAK494B,iBAAmB594B,KAAKui5B,YAC9B594B,OAAO8zM,cAAcz4M,KAAKkzrB,OAC1BlzrB,KAAKkzrB,MAAQvurB,OAAOwzB,YAAW,WAAcyoL,EAAM4hsB,kBAAkB5qmB,EAAIh3F,EAAMqhsB,MAAO5s0B,EAAMn4E,EAAGiG,EAAKG,EAAM,OAAS,GAAGtD,KAAKui5B,aAG3Hvi5B,KAAKwi5B,kBAAkB5qmB,EAAI53S,KAAKii5B,MAAO5s0B,EAAMn4E,EAAGiG,EAAKG,EAAM,QAGvE,MAII,GAFAtD,KAAKii5B,MAAQji5B,KAAKy5D,QAClBz5D,KAAKii5B,MAAM594B,MAAMmkD,OAAS40kB,GAAiBj7mB,GAAkBniB,KAAKy5D,SAAS94D,WACvEqwK,GAAkB9zK,GAAI,CAEtB,IAAI6uC,EAAKxW,SAASymC,YAAY,eAC9BjwB,EAAGskI,UAAU,SAAS,GAAM,GAE5B,IAAIoyuB,EAAczi5B,KAAK0i5B,WAAW322B,EAAI,CAAC,GACvC022B,EAAYtg4B,OAASsg4B,EAAY9wyB,WAAaxvF,EAC9Csg4B,EAAYrinB,cAAgBj+Q,EAE5BniB,KAAKwi5B,kBAAkB5qmB,EAAI53S,KAAKii5B,MAAO5s0B,EAAMot0B,EAAat/4B,EAAKG,EAAM,OACzE,MAEItD,KAAKwi5B,kBAAkB5qmB,EAAI53S,KAAKii5B,MAAO5s0B,EAAMn4E,EAAGiG,EAAKG,EAAM,OAGvE,EAEA054B,EAASz+4B,UAAUmk5B,WAAa,SAAU/44B,EAAQunD,GAC9C,IAAK,IAAIohB,KAAQ3oE,EACbunD,EAAY,GAAKohB,GAAQ3oE,EAAO,GAAK2oE,GAEzC,OAAOphB,CACX,EACA8r1B,EAASz+4B,UAAU+j5B,oBAAsB,SAAU7lQ,EAAI7kW,GACnD,IAAI+qmB,EAAUhg5B,iBAAiBi1S,GAC3BgrmB,EAAW3h5B,SAAS0h5B,EAAQ/0hB,WAAY,IACxC5tX,KAAKi94B,OAAOn/4B,OAAS,IAAM85S,EAAGzzS,UAAUC,SAAS,eACjDw+4B,GAAY,EAGZA,GAAaA,EAAW,EAE5BnmQ,EAAGp4oB,MAAMupX,WAAag1hB,EAAW,KACjC,IAAIC,EAAgBpmQ,EAAGhvnB,iBAAiB,gBACxC,GAAIo13B,GAAiBA,EAAc/k5B,OAI/B,IAHA,IAAIgl5B,EAAermQ,EAAGtnoB,cAAc,gBAChC4t4B,EAAoBpg5B,iBAAiBmg5B,GACrCE,EAAmB/h5B,SAAS8h5B,EAAkBn6gB,YAAa,IAAMk6gB,EAAaxzjB,YAAcszjB,EACvFzl5B,EAAI,EAAGA,EAAI0l5B,EAAc/k5B,OAAQX,IACtC0l5B,EAAc1l5B,GAAGkH,MAAMupX,WAAao1hB,EAAkB,IAGlE,EACAhG,EAASz+4B,UAAU8j5B,cAAgB,SAAUjsD,EAAc35M,EAAI7kW,EAAIwqmB,GAC/D,IAAIxhsB,EAAQ5gN,KACRu1pB,EAAW,IAAI18Y,GAAMu9kB,EAAc,CACnCx7N,eAAgB56nB,KAAKy94B,cAAgB,OAAS,aAC9CxiR,SAAUrjV,EACVwkV,UAAWp8nB,KAAKy94B,cAAgB,CAAErw4B,EAAG,OAAQ6hB,EAAG,QAAW,CAAE7hB,EAAGg14B,GACxDpi5B,KAAK+te,UAAY,OAAS,OAAQ9+c,EAAG,OAC7C7Z,SAAWgt4B,IAAuBpi5B,KAAKy94B,cAAiB,CAAErw4B,EAAG,QAAS6hB,EAAG,OAAU,CAAE7hB,EAAG,OAAQ6hB,EAAG,UACnG0tmB,WAAY,WACZ5uJ,UAAW/te,KAAK+te,UAChBvpK,QAASi4U,EACT9tgB,KAAM,WACF,IAAI4jvB,EAAY1h3B,GAAO,kBAAmB0kpB,EAAS97lB,SAC/C84zB,IACAA,EAAUlu3B,MAAMb,OAAS,UACzB+u3B,EAAUlu3B,MAAM2mB,UAAY,IAEhC,IAAIyxnB,EAAK5roB,GAAO,QAAS0kpB,EAAS97lB,SAClC87lB,EAAS97lB,QAAQp1D,MAAM2mB,UAAY,GACnCyxnB,EAAG7tY,QACHhuD,EAAMqisB,YAAYxmQ,EACtB,IAEJ,OAAO8Y,CACX,EACAynP,EAASz+4B,UAAUm/4B,sBAAwB,SAAUtxhB,GACjDA,EAAUA,GAAWpsX,KAAKk90B,aAC1B,IAAIp3B,EAAW9lzB,KAAKg+B,cAAc,OAAQ,CAAE9xB,UAAW,KAAOlM,KAAKgje,gBAAkB,YACjFkgb,EAAalj5B,KAAK6rf,oBAAuB/H,GAAmBE,SAAShkf,KAAKsgB,OAAStgB,KAAKsgB,MACxF6i4B,EAAYnj5B,KAAKg+B,cAAc,OAAQ,CACvC9xB,UAAW,KAAOlM,KAAKgje,gBAAkB,SAAUrkd,UAAWuk4B,IAE9DE,EAAWpj5B,KAAKg+B,cAAc,OAAQ,CACtC9xB,UAAW,aAAelM,KAAKgje,gBAAkB,QAAStwb,MAAO,CAAE,SAAY,OAEnFozwB,EAASvuyB,YAAY4r4B,GACrBr9F,EAASvuyB,YAAY6r4B,GACrBh3hB,EAAQn2W,aAAa6vyB,EAAU9lzB,KAAKy5D,QACxC,EACAuj1B,EAASz+4B,UAAU8k5B,kBAAoB,SAAUnm5B,GACzC8C,KAAKy94B,eACLz94B,KAAKwi5B,kBAAkB,KAAMxi5B,KAAKy5D,QAAS,KAAMv8D,EAAG,EAAG,EAAG,YAElE,EACA8/4B,EAASz+4B,UAAU+k5B,mBAAqB,SAAUpm5B,GAC9C,IAAI0jN,EAAQ5gN,KACRkprB,EAAkB,CAAEzvnB,QAASz5D,KAAKy5D,QAASmhtB,WAAY,KAAM1htB,MAAOh8D,EACpEutB,MAAOzqB,KAAKyqB,MAAOq2T,QAAQ,GAC/B9gV,KAAKo/d,QAAQ,cAAe8pN,GAAiB,SAAUq6N,GAC9CA,EAA2BzikB,SAC5BlgI,EAAMg+rB,UAAU,KAAM1h5B,GACtB0jN,EAAMnnJ,QAAQt1D,UAAU2C,IAAI,eAC5B85M,EAAMw+Q,QAAQ,UAAW,CAAE3la,QAASmnJ,EAAMnnJ,QAASmhtB,WAAY,KAAMnwvB,MAAOm2L,EAAMn2L,QAE1F,GACJ,EACAuy3B,EAASz+4B,UAAUs+nB,QAAU,SAAUpjkB,EAAS14D,EAAG0C,EAAGN,EAAKG,GACvD,OAAO22G,GAAIxgD,EAAS,KAAM,CAAErsD,EAAGrM,EAAGkuB,EAAGxrB,GAAK,CAAEN,IAAKA,EAAKG,KAAMA,GAChE,EACA054B,EAASz+4B,UAAUik5B,kBAAoB,SAAU5qmB,EAAI6kW,EAAIpnkB,EAAMn4E,EAAGiG,EAAKG,EAAMmD,GACzE,IAAIm6M,EAAQ5gN,KACRyqB,EAAQmtR,EAAKviO,EAAKr1E,KAAK2nlB,SAAS,WAAY3nlB,KAAKi94B,OAAOn/4B,OAAS,IAAMkC,KAAKyqB,MAC5EklV,EAAY,CACZl2S,QAASgjlB,EAAIhynB,MAAOA,EAAOmwvB,WAAYvlsB,EAAMnc,MAAOh8D,EAAG4jV,QAAQ,EAAO39U,IAAKA,EAAKG,KAAMA,EAAM854B,cAAe,QAE3GoG,EAAW/84B,EACfzG,KAAKo/d,QAAQ,aAAczvH,GAAW,SAAU8ziB,GAC5C,OAAQD,GACJ,IAAK,OACI5isB,EAAM68rB,gBACgC,SAAnCgG,EAAiBrG,gBACjBx8rB,EAAMg9rB,iBAAmBh9rB,EAAM+8rB,cAC/B/8rB,EAAMw8rB,cAAgBqG,EAAiBrG,eAE3Cx8rB,EAAMz9M,IAAMsg5B,EAAiBtg5B,IAC7By9M,EAAMt9M,KAAOmg5B,EAAiBng5B,MAElCs9M,EAAMw1oB,aAAa/x1B,MAAMqmB,QAAU,QAC9Bk2L,EAAM68rB,gBACP78rB,EAAMw1oB,aAAa/x1B,MAAM2mB,UAAY41L,EAAMw1oB,aAAalz1B,wBAAwBM,OAAS,KACrFo9M,EAAM48rB,iBACNhC,IAAa56rB,EAAM5iL,cAAe4iL,EAAMw1oB,aAAcx1oB,EAAMqhsB,MAAO,UAAWrhsB,EAAMmtR,WAExFntR,EAAM8isB,kBAAkBxm5B,IAEvB0jN,EAAM68rB,eAAkB78rB,EAAMt9M,MAASs9M,EAAMz9M,KAsB9Cy9M,EAAM20c,SAASn5B,UAAY,CAAEhvnB,EAAG,OAAQ6hB,EAAG,QAC3C2xL,EAAMw1oB,aAAa/x1B,MAAMqmB,QAAU,KAtBnCk2L,EAAM20c,SAAS76B,gBAAgB95a,EAAMmhsB,OAAO,GAC5CnhsB,EAAMt9M,KAAOrC,SAAS2/M,EAAMw1oB,aAAa/x1B,MAAMf,KAAM,IACrDs9M,EAAMz9M,IAAMlC,SAAS2/M,EAAMw1oB,aAAa/x1B,MAAMlB,IAAK,IAC/Cy9M,EAAMmtR,YACNntR,EAAMt9M,KACFs9M,EAAMwhsB,mBAAqBxhsB,EAAMt9M,KAAOs9M,EAAMw1oB,aAAa9mgB,YAAc1uI,EAAMmhsB,MAAM794B,cAAcorV,YAAc,EAC3G1uI,EAAMt9M,KAAOs9M,EAAMw1oB,aAAa9mgB,YAAc1uI,EAAMmhsB,MAAMzyjB,aAGpE1uI,EAAM73E,WAAa63E,EAAM4mS,SAAW5mS,EAAMmiD,WAC1C/tM,uBAAsB,WAClB4rJ,EAAMw7a,YACNx7a,EAAMw1oB,aAAa/x1B,MAAMqmB,QAAU,EACvC,KAGAk2L,EAAMw7a,YACNx7a,EAAMw1oB,aAAa/x1B,MAAMqmB,QAAU,KAO3C,MACJ,IAAK,OACDk2L,EAAMz9M,IAAMsg5B,EAAiBtg5B,IAC7By9M,EAAMt9M,KAAOmg5B,EAAiBng5B,KAC9B,MACJ,IAAK,YACImg5B,EAAiB3ikB,SAClBlgI,EAAMnnJ,QAAQt1D,UAAU0C,OAAO,eAC/B+5M,EAAMqisB,YAAYrisB,EAAMnnJ,UAIpC,GAAiB,cAAb+p1B,EACA,GAAIC,EAAiB3ikB,OACblgI,EAAMy8rB,QACNz8rB,EAAM20c,SAAS9xlB,UACf48Z,GAAOz/Q,EAAMw1oB,eAER35M,EAAGvwoB,UAAUxH,QAAQ,SAAW,GACrC27d,GAAOo8K,GAEX77b,EAAMq8rB,OAAOr92B,WAGb,GAAIghL,EAAMy8rB,OACN,GAAIz8rB,EAAM68rB,cACN78rB,EAAMw1oB,aAAa/x1B,MAAMlB,IAAMy9M,EAAMz9M,IAAM,KAC3Cy9M,EAAMw1oB,aAAa/x1B,MAAMf,KAAO,MAChCs9M,EAAMsgsB,gBAAgBtgsB,EAAMw1oB,kBAE3B,CACDx1oB,EAAMm9rB,kBAAkBn9rB,EAAMw1oB,cAC9Bx1oB,EAAMk5qB,kBAAkBl5qB,EAAMw1oB,cAC9BtuX,GAAalnR,EAAMw1oB,aAAc,CAAElzoB,SAAU,IAAMy5rB,MACnD/7rB,EAAMw1oB,aAAa/x1B,MAAMf,KAAOs9M,EAAMt9M,KAAO,KAC7Cs9M,EAAMw1oB,aAAa/x1B,MAAMlB,IAAMy9M,EAAMz9M,IAAM,KAC3C,IAAIioG,EAAsD,SAAnCw1G,EAAMihe,kBAAkBjY,OAAoB,CAC/D/oqB,KAAM+/M,EAAMihe,kBAAkBjY,OAAQj2mB,SAAUitJ,EAAMihe,kBAAkBlunB,SACxE+za,eAAgB9mR,EAAMihe,kBAAkBz8qB,QACxC,KACJw7M,EAAM20c,SAAS/3oB,KAAK4tF,EAAkBw1G,EAAMmhsB,MAChD,MAGAnhsB,EAAMm9rB,kBAAkBn9rB,EAAMqhsB,OAC9BrhsB,EAAM+4a,YAAY/4a,EAAMmhsB,MAAOnhsB,EAAMqhsB,MAAOrhsB,EAAMz9M,IAAKy9M,EAAMt9M,MAC7Ds9M,EAAMsgsB,gBAAgBtgsB,EAAMqhsB,OAIxC,GAAsB,UAAlBrhsB,EAAMi/rB,QAAqB,CAC3B,IAAIV,EAAMv+rB,EAAMw+rB,gBAMhB,GALAxnmB,EAAGzzS,UAAU0C,OAAOq14B,KAChBt7rB,EAAMy8rB,QAAkC,IAAxBz8rB,EAAMq8rB,OAAOn/4B,QAC7B8iN,EAAMm+rB,qBAAqB,CAACnrD,KAAW,CAAChzoB,EAAMs8nB,eAElDtliB,EAAGzzS,UAAU2C,IAAI8s1B,KACbhzoB,EAAMoB,SAAWg6rB,IAAO,CACxB,IAAI59O,EAAc,CAAE3kmB,QAASm+O,EAAIviO,KAAMA,EAAMnc,MAAOh8D,GACpD0jN,EAAMw+Q,QAAQ,SAAUg/L,EAC5B,CAGA,GAFAxmX,EAAGhpC,QACHuwoB,EAAMv+rB,EAAMw+rB,gBACH,CACL,IAAIzy3B,EAAQi0L,EAAMs4c,UAAUimP,EAAI742B,SAAS,GAAI,EAAGs6K,EAAMoB,QACtDm9rB,EAAI742B,SAAS3Z,GAAOxoB,UAAU2C,IAAIo14B,KAClCiD,EAAI742B,SAAS3Z,GAAOiiP,OACxB,CACJ,CACJ,GACJ,EACAouoB,EAASz+4B,UAAU69nB,UAAY,WAC3B,IAAIunR,EAEJ,GADAA,EAAUjrR,GAAU14nB,KAAKo21B,aAAc,KAAMp21B,KAAKsD,KAAMtD,KAAKmD,MACxDnD,KAAKoi5B,oBAAsBpi5B,KAAK+te,aAAe41a,EAAQj/4B,QAAQ,UAAY,GACzEi/4B,EAAQj/4B,QAAQ,SAAW,GAAI,CAClC1E,KAAKu1pB,SAASn5B,UAAUhvnB,EAAI,OAC5B,IAAIw24B,EAAW9ib,GAAQ9ge,KAAK+h5B,MAAO,MAAQ/h5B,KAAKgje,gBAAkB,YAAY1zI,YAC9EtvV,KAAKsD,KACDtD,KAAK+te,UAAYqoJ,GAAkBp2nB,KAAK+h5B,MAAO/h5B,KAAKoi5B,mBAAqB,QAAU,OAAQ,OAAO9+4B,KAC5FtD,KAAKsD,KAAOtD,KAAKo21B,aAAa9mgB,YAAcs0jB,EAAW,CACrE,GACAD,EAAUjrR,GAAU14nB,KAAKo21B,aAAc,KAAMp21B,KAAKsD,KAAMtD,KAAKmD,MACjDuB,QAAQ,SAAW,GAAKi/4B,EAAQj/4B,QAAQ,UAAY,KAC5D1E,KAAKsD,KAAOtD,KAAK68nB,QAAQ78nB,KAAKo21B,cAAc,GAAM,EAAOp21B,KAAKmD,IAAKnD,KAAKsD,MAAMA,MAElFtD,KAAKo21B,aAAa/x1B,MAAMf,KAAOtD,KAAKsD,KAAO,IAC/C,EACA054B,EAASz+4B,UAAUw/4B,kBAAoB,SAAU1+3B,GAC7C,IAAIwk4B,EAAgB,GAAGjj5B,MAAMb,KAAKsf,EAAKga,uBAAuB,gBAC9D,GAAKwq3B,EAAc/l5B,OAAnB,CAGA,IAAIgm5B,EAASzk4B,EAAKlK,cAAc,oDAChC,GAAK2u4B,EAAL,CAGA,IAAIn32B,EAAOm32B,EAAO3u4B,cAAc,gBAChC,GAAKw3B,EAAL,CAGA,IAAIo32B,EAAU/j5B,KAAK+te,UAAY,CAAEv4d,QAAS,eAAgBkR,OAAQ,cAC9D,CAAElR,QAAS,cAAekR,OAAQ,eAClCs93B,EAAerh5B,iBAAiBgqC,GAChCs32B,EAAWhj5B,SAAS+i5B,EAAaz14B,SAAU,IACzCtN,SAAS+i5B,EAAazg5B,MAAO,KAAOtC,SAAS+i5B,EAAazg5B,MAAO,IAAM0g5B,IACzEA,EAAWhj5B,SAAS+i5B,EAAazg5B,MAAO,KAG5C,IAAIwE,EAAOk84B,EAAWhj5B,SAEtB+i5B,EAAaD,EAAQr93B,QAAS,IAAMzlB,SAAS0B,iBAAiBmh5B,GAAQC,EAAQvu4B,SAAU,IAAM,KAC9Fqu4B,EAAc9l5B,SAAQ,SAAU65S,GAE5BA,EAAGvzS,MAAM0/4B,EAAQvu4B,SAAWzN,CAChC,GAfA,CAJA,CAJA,CAyBJ,EACAi14B,EAASz+4B,UAAUml5B,kBAAoB,SAAUxm5B,GAC7C,IAAIkvX,EAAUpsX,KAAKk90B,aACnB,GAAI9wd,EAAQ9lV,SAAS,GAAGniC,UAAUC,SAAS,mBAA4C,IAAvBpE,KAAKi94B,OAAOn/4B,OAAc,CACtF,IAAIi23B,EAAO/itB,GAAkB9zK,GAAK8C,KAAKy5D,QAAUqna,GAAQ5je,EAAEilB,OAAQ,IAAMw63B,KACrEuH,EAAYrz4B,GAAO,iBAAkBu7W,GACrC83hB,EAAU1ozB,WAAau4xB,EAAK53wB,aAC5B+nyB,EAAU1ozB,YAAe0ozB,EAAU1ozB,WAAau4xB,EAAK53wB,YAEzD,IAAIA,EAAa+nyB,EAAU1ozB,WAAa0ozB,EAAU50jB,YAC9ClzO,EAAc23wB,EAAK53wB,WAAa43wB,EAAKzkiB,YACrCnzO,EAAaC,IACb8nyB,EAAU1ozB,YAAe4gB,EAAcD,EAE/C,CACJ,EACA6gyB,EAASz+4B,UAAUo7nB,YAAc,SAAU/hV,EAAI6kW,EAAIt5oB,EAAKG,GACpD,IAAI6g5B,EAAK,KAET,GADAnk5B,KAAKok5B,gBAAgB3nQ,GACjBA,IAAOz8oB,KAAKy5D,SAAYn2D,GAAQ,GAAKH,GAAO,EAAI,CAKhD,IAJIwg5B,EAAUjrR,GAAU+jB,EAAI,KAAMn5oB,EAAMH,IAC5BuB,QAAQ,UAAY,IAC5BpB,GAAcm5oB,EAAGntT,aAEjBq0jB,EAAQj/4B,QAAQ,WAAa,EAG7B,IADAvB,GADIqG,EAASxJ,KAAK68nB,QAAQ4f,GAAI,GAAO,EAAMt5oB,EAAKG,IACnCH,IAAM,IACT,EAAG,CACT,IAAIkh5B,EAAU9h1B,YAAchtC,SAAS25B,gBAAgBtsD,aAAgB65oB,EAAGv5oB,wBAAwBM,OAC5F6g5B,GAAU,IACVlh5B,EAAMkh5B,EAEd,CAGJ,IADAV,EAAUjrR,GAAU+jB,EAAI,KAAMn5oB,EAAMH,IACxBuB,QAAQ,SAAW,EAE3BpB,GADIkG,EAASxJ,KAAK68nB,QAAQ4f,GAAI,GAAM,EAAOt5oB,EAAKG,IAClCA,IAEtB,MAEI,GAAI45d,GAAQK,SACRp6d,EAAMf,OAAOpC,KAAKy5D,QAAQp1D,MAAMlB,IAAIT,QAAQyh5B,EAAI,KAChD7g5B,EAAOlB,OAAOpC,KAAKy5D,QAAQp1D,MAAMf,KAAKZ,QAAQyh5B,EAAI,SAEjD,CACD,IACI364B,EACJrG,GADIqG,EAAS4snB,GAAkBx+U,EADvB53S,KAAK+te,UAAY,OAAS,QACI,QACzB5qe,IACbG,EAAOkG,EAAOlG,KACd,IAAIqg5B,EACAW,GADAX,EAAUjrR,GAAU+jB,EAAI,KAAMz8oB,KAAK+te,UAAYzqe,EAAOm5oB,EAAGntT,YAAchsV,EAAMH,IACxDuB,QAAQ,SAAW,GAAKi/4B,EAAQj/4B,QAAQ,UAAY,EACzE4/4B,IAEAhh5B,GADAkG,EAAS4snB,GAAkBx+U,EAAI53S,KAAK+te,UAAY,QAAU,OAAQ,QACpDzqe,OAEdtD,KAAK+te,WAAau2a,KAClBhh5B,EAAQtD,KAAK+te,WAAau2a,EAAchh5B,EAAOA,EAAOm5oB,EAAGntT,aAEzDq0jB,EAAQj/4B,QAAQ,WAAa,IAE7BvB,GADAqG,EAASxJ,KAAK68nB,QAAQ4f,GAAI,GAAO,EAAMt5oB,EAAKG,IAC/BH,IAErB,CAEJnD,KAAKok5B,gBAAgB3nQ,GAAI,GACzBA,EAAGp4oB,MAAMlB,IAAMA,EAAMgh5B,EACrB1nQ,EAAGp4oB,MAAMf,KAAOA,EAAO6g5B,CAC3B,EACAnH,EAASz+4B,UAAU6l5B,gBAAkB,SAAU3nQ,EAAIx1T,QAC7B,IAAdA,IAAwBA,GAAY,GACxCw1T,EAAGp4oB,MAAMotI,WAAaw1M,EAAY,SAAW,GAC7Cw1T,EAAGp4oB,MAAMqmB,QAAUu8T,EAAY,QAAU,MAC7C,EACA+1jB,EAASz+4B,UAAUu/4B,YAAc,SAAUrz3B,GACvC,IAAIm2L,EAAQ5gN,KACRixE,EAAQjxE,KAAKi94B,OAASj94B,KAAKi94B,OAAOn/4B,OAAS,EAC3C2zT,EAASzxT,KAAK8h5B,UAAU7w0B,GACxB8ib,EAAW/zf,KAAKuk5B,SAAS953B,EAAOzqB,KAAK2nlB,SAAS,UAAW12gB,IACzDyiyB,EAAkB,CAClB3/W,SAAUA,EACVrkB,WAAY,OACZj+K,OAAQA,EACR1oL,SAAU/oI,KAAK+oI,SACfy1gB,eAAe,EACfQ,aAAc,SAAU5zkB,GACfA,EAAKwjZ,QAAQxjZ,EAAKqmP,OAAOA,EAAO37S,OACjCs1D,EAAKwjZ,QAAQxjZ,EAAKqmP,OAAOA,EAAO37S,KAAOutc,GAAY,aAEnDryS,GAAkB5lG,EAAKwjZ,QAAQm1K,kBAC/B34jB,EAAKwjZ,QAAQm1K,eAAiB,CAAC,GAE/B7mK,GAAQpzd,MACRshE,EAAKwjZ,QAAQm1K,eAAenyS,KAAO,WACnCxmR,EAAKwjZ,QAAQm1K,eAAew/D,SAAW,MAGvCnmsB,OAAOmE,OAAO6pE,EAAKwjZ,QAAQm1K,eAAgB,CAAEnyS,KAAM,WAAY2xW,SAAU,OAEzE3if,EAAMy8rB,SAAWjy0B,EAAKwjZ,QAAQhuQ,EAAM+mY,SAAS,YAAa12gB,MAC1D7F,EAAKwjZ,QAAQm1K,eAAe,cAAgB34jB,EAAKwjZ,QAAQxjZ,EAAKqmP,OAAOpjT,MACjE+8D,EAAKwjZ,QAAQxjZ,EAAKqmP,OAAOpjT,MAAQ+8D,EAAKwjZ,QAAQxjZ,EAAKqmP,OAAO37S,KAEhB,KAA9Cs1D,EAAKwjZ,QAAQxjZ,EAAKqmP,OAAOA,EAAO2rV,YAChChykB,EAAKwjZ,QAAQxjZ,EAAKqmP,OAAOA,EAAO2rV,UAAY,KAEpD,EACA+B,YAAa,SAAU/zkB,GASnB,GARIA,EAAKwjZ,QAAQhuQ,EAAM+mY,SAAS,YAAa12gB,MACzC7F,EAAKiK,KAAKlxE,UAAU2C,IAAIs14B,KACxBhx0B,EAAKiK,KAAKzsE,aAAa,OAAQ,eAE/Bmrf,GAAa3ob,EAAKwjZ,QAAQxjZ,EAAKqmP,OAAO2rV,UAClChykB,EAAKwjZ,QAAQhuQ,EAAM+mY,SAAS,YAAa12gB,KAC7C7F,EAAKiK,KAAKlxE,UAAU2C,IAAI,eAExBskE,EAAKwjZ,QAAQxjZ,EAAKqmP,OAAO72B,QACtBxvN,EAAKwjZ,QAAQxjZ,EAAKqmP,OAAO72B,OAAO98R,OAAQ,CAC3C,IAAIyrH,EAAOq3F,EAAM5iL,cAAc,OAAQ,CAAE9xB,UAAW2w4B,IAAQ,IAAMH,MAClEtx0B,EAAKiK,KAAK99D,YAAYgyG,GACtBn+C,EAAKiK,KAAKzsE,aAAa,gBAAiB,QACxCwiE,EAAKiK,KAAKzsE,aAAa,gBAAiB,SACxCwiE,EAAKiK,KAAKlxE,UAAU2C,IAAI,oBAC5B,CACI85M,EAAMy8rB,QAAUz8rB,EAAM73E,WACtB39D,EAAKiK,KAAKzsE,aAAa,KAAMwiE,EAAKwjZ,QAAQxjZ,EAAKqmP,OAAO37S,IAAInV,YAC1DyqE,EAAKiK,KAAK9hB,gBAAgB,YACtB6X,EAAKiK,KAAKlxE,UAAUC,SAAS,cAC7BgnE,EAAKiK,KAAKlxE,UAAU0C,OAAO,aAE3BukE,EAAKiK,KAAKlxE,UAAUC,SAAS,gBAC7BgnE,EAAKiK,KAAKlxE,UAAU0C,OAAO,eAE/BukE,EAAKiK,KAAK9hB,gBAAgB,eAE9B,IAAIo8S,EAAY,CAAEt6R,KAAMjK,EAAKwjZ,QAASn1Z,QAAS2R,EAAKiK,MACpDurI,EAAMw+Q,QAAQ,mBAAoBzvH,EACtC,GAEJ3vW,KAAKiie,cAAc,CAAE,MAASjie,KAAKyqB,QAAS,GACxCzqB,KAAKq94B,SACL3pC,EAAgBzyN,WAAajhpB,KAAKy5D,QAAQ3jD,GAxtC9B,YA0tChB,IAAI2moB,EAAKhX,GAAS4b,WAAWrhpB,KAAKg+B,cAAevT,EAAOip1B,GAAkB1z2B,KAAK+oI,SAAU/oI,MAQzF,OAPAy8oB,EAAG7zoB,aAAa,WAAY,KACxB5I,KAAKq94B,OACL5gQ,EAAG7zoB,aAAa,OAAQ,QAGxB6zoB,EAAG7zoB,aAAa,OAAQ,WAErB6zoB,CACX,EACAugQ,EAASz+4B,UAAU6/4B,aAAe,SAAUlh5B,GACxC,IAAI623B,EAAO723B,EAAEilB,OACbniB,KAAKwk5B,OAASzwB,EACd,IAAI2rB,EAAM1/4B,KAAK2g5B,MAAM5sB,GACjB3ngB,EAAUszhB,EAAM5+a,GAAQ4+a,EAAK,MAAQ1/4B,KAAKgje,gBAAkB,YAAchje,KAAKk90B,aAC/EunE,EAAazk5B,KAAKk90B,aAClB3txB,EAAQ,IAAI3rD,OAAO,uBAEnB8g5B,GAAkB,EACtB,GAAKt4hB,EAAL,CASA,IANmB,KAAfA,EAAQt2W,GACDy5C,EAAMsB,KAAKu7T,EAAQt2W,IAAI,GAGvBs2W,EAAQj3W,cAAc,MAAMW,MAE1B9V,KAAKy5D,QAAQ3jD,GAAI,CAE1B,GADA9V,KAAK++4B,qBAAqB,CAAC7C,IAAStoD,KAAW,CAAC5z1B,KAAKk90B,gBACjDl90B,KAAKi94B,OAAOn/4B,OAIZ,OAHA4m5B,GAAkB,CAK1B,CACIhF,GAAO5+a,GAAQ4+a,EAAK,MAAQ1/4B,KAAKgje,gBAAkB,cAAgB0hb,GACnE1k5B,KAAK++4B,qBAAqB,CAAC7C,KAAUl84B,KAAKq94B,OAAS,CAACjxhB,GAASjlX,OAAOnH,KAAKq/P,aAAe,CAAC+sH,IACzFpsX,KAAK++4B,qBAAqB,CAAC7C,KAAUl84B,KAAKq94B,OAAS,CAACoH,GAAYt94B,OAAOnH,KAAKq/P,aAAe,CAAColpB,IAC5F/E,EAAIv74B,UAAU2C,IAAIo14B,KACbl84B,KAAK494B,iBACN594B,KAAK6wf,aAAa3zf,IAGjB8C,KAAKq94B,QAAUr94B,KAAK494B,kBAAoB8G,GAC7C1k5B,KAAK++4B,qBAAqB,CAAC7C,KAAU,CAAC9vhB,GAASjlX,OAAOnH,KAAKq/P,cAE3Dr/P,KAAKq94B,SACAr94B,KAAK494B,iBAAoB7pB,EAAK7v3B,gBAAkBkoX,GAAY00G,GAAQizZ,EAAM,MAAQ/z3B,KAAKgje,gBAAkB,WACrG08a,KAAQA,GAAQ1/4B,KAAKgtwB,SAAS0yI,EAAI5p4B,IAAI,GAAMhY,SAAmC,UAAvBkC,KAAKo94B,cAO7DsH,IAAoB1k5B,KAAK494B,iBAC1B594B,KAAKi94B,OAAOn/4B,SACZkC,KAAK2k5B,UAAW,EAChB3k5B,KAAK4+4B,UAAU,KAAM1h5B,KATzB8C,KAAK++4B,qBAAqB,CAAC7C,KAAU,CAAC9vhB,IAClCpsX,KAAKi94B,OAAOn/4B,SACZkC,KAAK2k5B,UAAW,EAChB3k5B,KAAK4+4B,UAAU,KAAM1h5B,KASxB8C,KAAK2k5B,UACN3k5B,KAAK4h5B,qBAET5h5B,KAAK2k5B,UAAW,EA7CpB,CA+CJ,EACA3H,EAASz+4B,UAAUqj5B,mBAAqB,WACpC,GAAI5h5B,KAAKwk5B,OAAQ,CACb,IAAIp4hB,EAAU00G,GAAQ9ge,KAAKwk5B,OAAQ,mBACP,QAAxBxk5B,KAAKwk5B,OAAOpjwB,SAAqBgrO,GACjCpsX,KAAK++4B,qBAAqB,CAAC7C,IAAStoD,KAAW,CAACxne,GAExD,CACJ,EACA4whB,EAASz+4B,UAAUwg5B,qBAAuB,SAAU564B,EAAWs1D,GAU3D,IATA,IAAIm+O,EACAmrK,EAAU,SAAU5ld,GACpBgH,EAAUpG,SAAQ,SAAUmO,IACxB0rS,EAAK/mS,GAAO,IAAM3E,EAAWutD,EAAQt8D,MAEjCy6S,EAAGzzS,UAAU0C,OAAOqF,EAE5B,GACJ,EACS/O,EAAI,EAAGA,EAAIs8D,EAAQ37D,OAAQX,IAChC4ld,EAAQ5ld,EAEhB,EACA6/4B,EAASz+4B,UAAUoplB,SAAW,SAAUl2Z,EAAUxgH,QAChC,IAAVA,IAAoBA,EAAQ,GAChC,IAAImzU,EAAYpkZ,KAAKyxT,OAAO,GAAKhgI,GACjC,MAA4B,kBAAd2yN,EAAyBA,EACjCA,EAAUnzU,GACNmzU,EAAUnzU,GAAOtwE,WADFyjZ,EAAUA,EAAUtmZ,OAAS,GAAG6C,UAE7D,EACAq84B,EAASz+4B,UAAUuj5B,UAAY,SAAU7w0B,GAErC,YADc,IAAVA,IAAoBA,EAAQ,GACzB,CACHn7D,GAAI9V,KAAK2nlB,SAAS,SAAU12gB,GAC5BmskB,QAASp9oB,KAAK2nlB,SAAS,UAAW12gB,GAClC5iE,KAAMrO,KAAK2nlB,SAAS,OAAQ12gB,GAC5BvW,IAAK16D,KAAK2nlB,SAAS,MAAO12gB,GAC1B2pN,MAAO56R,KAAK2nlB,SAAS,WAAY12gB,GACjCiiK,UAAWlzO,KAAK2nlB,SAAS,YAAa12gB,GAE9C,EACA+r0B,EAASz+4B,UAAUgm5B,SAAW,SAAU953B,EAAOwyN,GAC3C,IAAK,IAAI9/O,EAAI,EAAGgvE,EAAM1hD,EAAM3sB,OAAQX,EAAIgvE,EAAKhvE,IACzC,GAAIstB,EAAMttB,GAAG,GAAK8/O,GACd,OAAO,EAGf,OAAO,CACX,EACA+/pB,EAASz+4B,UAAU0/4B,uBAAyB,SAAU/g5B,GAC9C4je,GAAQ5je,EAAEilB,OAAQ,mBAAmBhN,cAAc,oBAAoBW,KAAO9V,KAAKy5D,QAAQ3jD,KAG3F9V,KAAKy5D,QAAQvtD,UAAUxH,QAAQ,gBAAkB,EACjD1E,KAAKqj5B,kBAAkBnm5B,GAGvB8C,KAAKsj5B,mBAAmBpm5B,GAEhC,EACA8/4B,EAASz+4B,UAAUsyf,aAAe,SAAU3zf,GACxC8C,KAAKk94B,WAAYl94B,KAAKk94B,WAAoBl94B,KAAKk94B,UAC/C,IAAI9whB,EAAUpsX,KAAKk90B,aACf62C,EAAO723B,EAAEilB,OACTu93B,EAAM1/4B,KAAK0/4B,IAAM1/4B,KAAK2g5B,MAAM5sB,GAC5Bxk0B,EAAQ,IAAI3rD,OAAO,uBACnBgh5B,EAAalF,EAAM5+a,GAAQ4+a,EAAK,MAAQ1/4B,KAAKgje,gBAAkB,YAAc,KAC7E6hb,EAAWnF,GAAOkF,IAAe5k5B,KAAKq94B,OAASr94B,KAAKgtwB,SAAS0yI,EAAI5p4B,IAAI,GAAMhY,OAAS,EAClFsuX,EAAQtlC,kBAAkBhxU,KAAO8u4B,EAAW99jB,kBAAkBhxU,IAKpE,GAJIond,GAAQK,UAAYv9d,KAAKq94B,SACzBr94B,KAAK++4B,qBAAqB,CAAC7C,KAAU,CAAC9vhB,GAASjlX,OAAOnH,KAAKq/P,cAC3Dr/P,KAAKw9tB,iBAAiBtguB,IAEtBwi5B,GAAOkF,GAAc5k5B,KAAKq94B,OAAQ,CAClC,IAAIyH,EAAeF,EAAW9u4B,GAAKy5C,EAAMsB,KAAK+z1B,EAAW9u4B,IAAI,GAAK8u4B,EAAWzv4B,cAAc,kBAAkBW,GAC7G,GAAI9V,KAAKy5D,QAAQ3jD,KAAOgv4B,EACpB,MAER,CACA,GAAID,GAAuB,UAAX3n5B,EAAEuJ,OAAqBi54B,EAAIv74B,UAAUC,SAAS+34B,KAAS,CACnEn84B,KAAK+k5B,cAAcrF,GACnB,IAAIzC,EAASj94B,KAAKgtwB,SAAS0yI,EAAI5p4B,IAAI,GAE/B65V,EAAY,CAAEl2S,QAASim1B,EAAKrq0B,KADrBr1E,KAAK+2P,QAAQkmpB,GACoB/j1B,MAAOh8D,GACnD8C,KAAKo/d,QAAQ,SAAUzvH,EAC3B,CACA,GAAIk1iB,IAAwB,cAAX3n5B,EAAEuJ,MAAwBy2d,GAAQK,UAAYv9d,KAAK494B,iBAAkB,CAClF,IAAInhQ,OAAK,EACT,GAAIijQ,EAAIv74B,UAAUC,SAAS+34B,KACvB1/P,EAAKrwR,EAAQ9lV,SAAStmC,KAAKi94B,OAAOn/4B,OAAS,GAC3CkC,KAAKkh5B,gBAAgBzkQ,IACjBsjQ,EAAM//4B,KAAKw/4B,aAAa/iQ,EAAIm3M,OAE5BmsD,EAAI574B,UAAU0C,OAAO+s1B,KAEzBvzX,GAAOq/a,EAAI3p4B,YACX/V,KAAKi94B,OAAOr92B,WAGZ,IAAK8/2B,EAAIv74B,UAAUC,SAASg44B,KAAY,CACpCp84B,KAAKmh5B,aAAc,EACnB,IAAIhC,EAAMO,EAAI3p4B,WACd,GAAIi7J,GAAkBmuuB,GAClB,OAGJ,GADAn/4B,KAAK0h5B,OAAS1h5B,KAAKy/4B,OAAON,EAAKO,GAC3B1/4B,KAAKq94B,SAAWngb,GAAQK,SAAU,CAClC,IAMQwib,EANJiF,EAAShl5B,KAAKq94B,OAASn94B,MAAM3B,UAAUmG,QAAQ3E,KAAK,CAACqsX,GAASjlX,OAAOnH,KAAKq/P,aAAcyhO,GAAQq+a,EAAK,MAAan/4B,KAAKgje,gBAAkB,aACvIhje,KAAKy/4B,OAAOrzhB,EAAS+yhB,GAI3B,GAHIn/4B,KAAKi94B,OAAO+H,KAAYhl5B,KAAK0h5B,SAC7B1h5B,KAAKmh5B,aAAc,GAEnB6D,IAAWhl5B,KAAKi94B,OAAOn/4B,SAAsB,cAAXZ,EAAEuJ,MAAwBzG,KAAKmh5B,cAC7DpB,EAAM//4B,KAAKw/4B,aAAaL,EAAKvrD,OAE7BmsD,EAAI574B,UAAU0C,OAAO+s1B,KAEzB5z1B,KAAK2k5B,UAAW,EAChB3k5B,KAAK6/4B,QAAU,QACX7/4B,KAAK494B,iBACL594B,KAAK+k5B,cAAcrF,GAEvB1/4B,KAAK4+4B,UAAUoG,EAAS,EAAG9n5B,GACvB8C,KAAK494B,iBACL594B,KAAK+k5B,cAAcrF,EAG/B,CACK1/4B,KAAK2k5B,UACN3k5B,KAAKuh5B,eAAerk5B,GAExB8C,KAAK2k5B,UAAW,CACpB,CAER,MAEI,GAAI3k5B,KAAKq94B,QAA2B,QAAjBtpB,EAAK3yuB,SAAqBphJ,KAAKi94B,OAAOn/4B,QAAUgje,GAAQizZ,EAAM,mBAAoB,CACjG,IAAI3zN,EAAWt/L,GAAQizZ,EAAM,IAAM/f,KAC/BpjO,EAAO1woB,MAAM3B,UAAUmG,QAAQ3E,KAAKC,KAAKq/P,YAAa+ga,GAAY,EAClExvB,EAAO5woB,KAAKi94B,OAAOn/4B,SACnBkC,KAAK4+4B,UAAUhuQ,EAAO,EAAG1zoB,GACrBkjqB,GACApgqB,KAAK++4B,qBAAqB,CAAC7C,IAAStoD,KAAW,CAACxzL,IAG5D,MACSpgqB,KAAKq94B,QAAUr94B,KAAKy94B,eAAkC,SAAjB1pB,EAAK3yuB,SAC5C2yuB,EAAK5v3B,UAAUC,SAAS,eAC3BpE,KAAKi+4B,uBAAuB/g5B,GAGP,OAAjB623B,EAAK3yuB,UAAqBphJ,KAAKq94B,QAAStpB,EAAK7v3B,cAAcC,UAAUC,SAAS,mBAC7EpE,KAAKgtwB,SAAS+mH,EAAK5+2B,cAAc,IAAMwn4B,KAAM7m4B,IAAI,GAAMhY,OAASi23B,EAAK7v3B,gBAAkBkoX,KACnFszhB,GACD1/4B,KAAK++4B,qBAAqB,CAACnrD,KAAW,CAACxne,IAEtCszhB,GAAQA,EAAIvq4B,cAAc,IAAMun4B,MACjC184B,KAAK4+4B,UAAU,KAAM1h5B,GAKzC,EACA8/4B,EAASz+4B,UAAUgj5B,eAAiB,SAAUrk5B,GAC1C,IAAI8zK,GAAkB9zK,GAAtB,CAGA,IAAIm3Y,EACJ,GAAIr0Y,KAAKmh5B,YAAa,CAEd9sgB,EADAr0Y,KAAK494B,iBAA0C,IAAvB594B,KAAKi94B,OAAOn/4B,OACzBgje,GAAQ5je,EAAEilB,OAAQ,4BAGlB2+c,GAAQ9ge,KAAKy5D,QAAS,4BAErC,IAAIqkC,EAAM99F,KAAKi94B,OAAO914B,OAAOnH,KAAK0h5B,QAC9Brs0B,EAAOr1E,KAAK+2P,QAAQj5J,GAiBxB,GAhBIzoB,GAAQA,EAAKr1E,KAAK2nlB,SAAS,WAAY7pf,EAAIhgG,OAAS,KACpDu3E,EAAKr1E,KAAK2nlB,SAAS,WAAY7pf,EAAIhgG,OAAS,IAAIA,SACjC,cAAXZ,EAAEuJ,MAAyBy2d,GAAQK,UAAYv9d,KAAKq94B,SACpDr94B,KAAK+k5B,cAAc/k5B,KAAK0/4B,OAEtB1/4B,KAAKy94B,eAAiBppgB,GAAcr0Y,KAAKy94B,eAA4D,UAA3Cz94B,KAAK0/4B,IAAItv4B,aAAa,oBAClFpQ,KAAK0/4B,IAAI924B,aAAa,gBAAiB,QACvC5I,KAAKi94B,OAAOt/4B,KAAKqC,KAAK0h5B,QACtB1h5B,KAAK0lY,SAAS1lY,KAAK0/4B,IAAKrq0B,EAAM,KAAM,KAAMn4E,KAI/B,cAAXA,EAAEuJ,MACFzG,KAAK4+4B,UAAU,KAAM1h5B,IAGxBm3Y,EAAU,CACX,IAAI8qgB,EAAMn/4B,KAAKo/4B,gBACXW,EAAM//4B,KAAKw/4B,aAAaL,EAAKvrD,KAC7BmsD,IACAA,EAAIn34B,aAAa,gBAAiB,SAClCm34B,EAAI574B,UAAU0C,OAAO+s1B,KAE7B,CACJ,CACA5z1B,KAAK6/4B,QAAU,EApCf,CAqCJ,EACA7C,EAASz+4B,UAAUwm5B,cAAgB,SAAUntmB,GACzC,IAAImomB,EAAM//4B,KAAKw/4B,aAAa5nmB,EAAG1zS,cAAe0v1B,KAC1CmsD,GACAA,EAAI574B,UAAU0C,OAAO+s1B,KAEpB5z1B,KAAKq94B,QACNzlmB,EAAGzzS,UAAU0C,OAAOq14B,KAExBtkmB,EAAGzzS,UAAU2C,IAAI8s1B,IACrB,EACAopD,EAASz+4B,UAAUih5B,aAAe,SAAU/iQ,EAAIwoQ,GAC5C,GAAIxoQ,EACA,IAAK,IAAIt/oB,EAAI,EAAGgvE,EAAMswkB,EAAGn2mB,SAASxoC,OAAQX,EAAIgvE,EAAKhvE,IAC/C,GAAIs/oB,EAAGn2mB,SAASnpC,GAAGgH,UAAUC,SAAS6g5B,GAClC,OAAOxoQ,EAAGn2mB,SAASnpC,GAI/B,OAAO,IACX,EAQA6/4B,EAASz+4B,UAAUqxY,aAAe,SAAUv6T,EAAM6v0B,GAC9C,IAAIpnzB,EAEAA,EADgB,kBAATzoB,EACDA,EAGAA,EAAKv/D,GAEf,IAAIqv4B,GAAyB,IAAfD,EAEd,OADall5B,KAAKgtwB,SAASlvqB,EAAKqnzB,EAEpC,EASAnI,EAASz+4B,UAAUq4P,QAAU,SAAUvhL,EAAMv/D,EAAIov4B,GAC7C,IAAIpnzB,EAEAA,EADAonzB,EACMpv4B,GAAUu/D,EAAKv/D,GAGfA,GAAUu/D,EAAKhnE,KAEzB,IAAI4u4B,EAASj94B,KAAKgtwB,SAASlvqB,EAAKonzB,GAC5BE,EAAUpl5B,KAAK+2P,QAAQkmpB,GAC3B7/4B,OAAOmE,OAAO6j5B,EAAS/v0B,EAC3B,EACA2n0B,EAASz+4B,UAAUw4P,QAAU,SAAUkmpB,GAEnC,IAAIn/yB,GADJm/yB,EAASA,EAAOr84B,SACCg/B,MAEjB,OADY5/B,KAAKwvY,SAASytgB,GACbn/yB,EACjB,EACAk/yB,EAASz+4B,UAAUixY,SAAW,SAAUytgB,GAEpC,IADA,IAAIxy3B,EAAQzqB,KAAKyqB,MACRttB,EAAI,EAAGA,EAAI8/4B,EAAOn/4B,OAAQX,IAC/BstB,EAAQA,EAAMwy3B,EAAO9/4B,IAAI6C,KAAK2nlB,SAAS,WAAYxqlB,IAEvD,OAAOstB,CACX,EACAuy3B,EAASz+4B,UAAUsvY,SAAW,SAAUk7B,EAAUk0e,GAC9C,IAAIxy3B,EAAQzqB,KAAKwvY,SAASytgB,GAC1Bxy3B,EAAMxmB,OAAO,EAAGwmB,EAAM3sB,QACtB,IAAK,IAAIX,EAAI,EAAGA,EAAI4ra,EAASjra,OAAQX,IACjCstB,EAAMxmB,OAAO9G,EAAG,EAAG4ra,EAAS5ra,GAEpC,EACA6/4B,EAASz+4B,UAAUkh5B,OAAS,SAAUhjQ,EAAI7kW,EAAIytmB,QAC1B,IAAZA,IAAsBA,GAAU,GACpC,IAAIvnzB,EAAM59F,MAAM3B,UAAUmG,QAAQ3E,KAAK08oB,EAAGn2mB,SAAUsxQ,GAIpD,OAHIytmB,GAAW5oQ,EAAGn2mB,SAAS,GAAGniC,UAAUC,SAAS+34B,MAC7Cr+yB,IAEGA,CACX,EACAk/yB,EAASz+4B,UAAUoi5B,MAAQ,SAAUhijB,GACjC,MAAqB,OAAjBA,EAAKv9M,SAAoBu9M,EAAKx6V,UAAUC,SAAS,eAC1Cu6V,EAEJmiI,GAAQniI,EAAM,iBACzB,EACAq+iB,EAASz+4B,UAAU+m5B,oBAAsB,WAGrC,IAFA,IAAI763B,EAAQzqB,KAAKyqB,MACbhC,EAAQ,EACHkE,EAAQ,EAAGA,EAAQ3sB,KAAKi94B,OAAOn/4B,SACpC2sB,EAAQA,EAAMkC,GAAOlC,OADuBkC,IAAS,CAKrDlE,IACA,IAAIg0nB,EAAKz8oB,KAAKo/4B,cAAc323B,GAC5B,IAAKg0nB,EACD,MAEJz8oB,KAAKul5B,WAAW9oQ,EAAIhynB,EACxB,CACJ,EACAuy3B,EAASz+4B,UAAUs/4B,mBAAqB,SAAUl/iB,GAC9C,KAAOA,EAAK7X,mBACR6X,EAAK/wU,YAAY+wU,EAAK7X,mBAE1B,OAAO6X,CACX,EASAq+iB,EAASz+4B,UAAUoke,kBAAoB,SAAUiF,EAASC,GAqGtD,IApGA,IAAIjnR,EAAQ5gN,KACRosX,EAAUpsX,KAAKk90B,aACflrM,EAAU,SAAU1/jB,GACpB,OAAQA,GACJ,IAAK,WACGu1Z,EAAQh5d,UACR6jD,GAAY,CAAC05T,GAAUy7G,EAAQh5d,SAAS7N,MAAM,MAE9C4me,EAAQ/4d,UACR4jD,GAAS,CAAC25T,GAAUw7G,EAAQ/4d,SAASnM,QAAQ,OAAQ,KAAK6S,OAAOvU,MAAM,MAE3E,MACJ,IAAK,YACGw4Z,EAAOu0E,UACP3hH,EAAQjoX,UAAU2C,IAAI4+e,KAGtBt5H,EAAQjoX,UAAU0C,OAAO6+e,KAE7B,MACJ,IAAK,kBACDlsF,EAAO+jR,eACP/jR,EAAOokf,gBAAkBh2a,EAAQg2a,gBACjCpkf,EAAOsgF,aACP,MACJ,IAAK,kBACD,GAAIlS,EAAQ41a,gBAAiB,CACzB,IAAIgI,EACAhsf,EAAO//V,QAAQt1D,UAAUC,SAAS,cAClCo34B,IAAahif,EAAOx7X,cAAeouV,EAASotC,EAAO//V,QAAS,UAAW+/V,EAAOu0E,WAG9Eyta,IAAahif,EAAOx7X,cAAeouV,EAASotC,EAAO//V,QAAS,UAAW+/V,EAAOu0E,WAElFv0E,EAAOn6J,YAAYthQ,SAAQ,SAAUquX,GACjCo5hB,EAAO304B,GAAO,QAASu7W,GACvBovhB,IAAa56rB,EAAM5iL,cAAeouV,EAASo5hB,EAAM,UAAW5ksB,EAAMmtR,UACtE,GACJ,KACK,CACD,IAAI03a,EAAOr5hB,EAAQ9lV,SAAS,GACxBkzX,EAAO//V,QAAQt1D,UAAUC,SAAS,cAClCi23B,IAAc5mkB,GAAYgylB,EAAMjwB,KAAUiwB,GAG1CprB,IAAc5mkB,GAAYgylB,EAAMxzB,KAAUwzB,GAE9Cr5hB,EAAQ/nX,MAAMo0N,SAAW,GACzB2zJ,EAAQ70W,YAAYiiZ,EAAO//V,SAC3B+/V,EAAOn6J,YAAYthQ,SAAQ,SAAUquX,GAEjCiugB,IAAc5mkB,GADdgylB,EAAOr5hB,EAAQ9lV,SAAS,GACQkv1B,KAAUiwB,GAC1Cr5hB,EAAQ/nX,MAAMo0N,SAAW,EAC7B,GACJ,CACA,MACJ,IAAK,QACD,IAAI36H,OAAM,EACNm/yB,OAAS,EACT5n0B,OAAO,EAKX,GAHImkV,EAAOguF,SAAWhuF,EAAOzwR,UACzBywR,EAAOi3E,cAAc,CAAC,aAErBrze,OAAOC,KAAKwqe,EAAQp9c,OAAO3sB,OAkB5B,KAAIT,EAAOD,OAAOC,KAAKuqe,EAAQn9c,OAC/B,IAASttB,EAAI,EAAGA,EAAIE,EAAKS,OAAQX,KAC7B8/4B,EAASzjf,EAAOksf,oBAAoB99a,EAAS,GAAIxle,OAAO/E,EAAKF,MAClDW,QAAU07Z,EAAO0jb,aAAa52yB,SAASxoC,SAC9CggG,EAAMm/yB,EAAOr92B,MACby1C,EAAOmkV,EAAOhqB,SAASytgB,GACvBzjf,EAAOmsf,YAAY,CAACtw0B,EAAKyoB,IAAOzoB,EAAKyoB,GAAKzvF,MAC1CmrZ,EAAOviK,WAAW5hL,EAAM4n0B,EAAQn/yB,GAChC07T,EAAO3rB,SAASx4T,EAAM4n0B,IAE1BA,EAAOn/4B,OAAS,CAViB,KAlBD,CAUpC,GATA07Z,EAAO+rf,WAAW/rf,EAAO//V,QAAS+/V,EAAO/uY,OACrC+uY,EAAOgkf,iBAAmBhkf,EAAO//V,QAAQv1D,cAAcC,UAAUC,SAAS,qBACtEo1Z,EAAO//V,QAAQt1D,UAAUC,SAAS,cAClCo34B,IAAahif,EAAOx7X,cAAeouV,EAASotC,EAAO//V,QAAS,UAAW+/V,EAAOu0E,WAG9Eyta,IAAahif,EAAOx7X,cAAeouV,EAASotC,EAAO//V,QAAS,UAAW+/V,EAAOu0E,aAGjFv0E,EAAOikf,cACR,IAAK,IAAItg5B,EAAI,EAAGsrB,EAAQ2jW,EAAQ8gS,kBAAmB/vpB,EAAIsrB,EAAOtrB,IAC1Dkje,GAAOj0G,EAAQ/lC,kBAGvBmzE,EAAOyjf,OAAS,EACpB,EAkBZ,EACIzjf,EAASx5Z,KACJm6N,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAE9D63a,EADW95c,EAAGiiC,GAElB,CACJ,EACA6irB,EAASz+4B,UAAUgn5B,WAAa,SAAU9oQ,EAAIhynB,GAC1C,GAAI24b,OAAepjd,KAAKq94B,OACpB5gQ,EAAKz8oB,KAAK694B,mBAAmBphQ,OAE5B,CACD,GAAIz8oB,KAAKw94B,gBAAiB,CACtB,IACIoI,EADW5l5B,KAAKk90B,aACD52yB,SAAS,GACxBtmC,KAAKy5D,QAAQt1D,UAAUC,SAAS,cAChCi23B,IAAc5mkB,GAAYmylB,EAAKpwB,KAAUowB,GAGzCvrB,IAAc5mkB,GAAYmylB,EAAK3zB,KAAU2zB,EAEjD,CACAnpQ,EAAG99nB,UAAY,EACnB,CACU,GAAG/d,MAAMb,KAAKC,KAAK894B,YAAYrz3B,GAAO6b,UAC5CvoC,SAAQ,SAAU65S,GAClB6kW,EAAGlloB,YAAYqgS,EACnB,GACJ,EACAolmB,EAASz+4B,UAAUmn5B,oBAAsB,SAAU99a,EAASj7c,EAAOmxE,GAC/DnxE,EAAMhvB,KAAKmgG,GACX,IAAIl/F,EAAMxB,OAAOC,KAAKuqe,EAAQn9c,MAAMqzE,IAAMl+D,MAC1C,GAAY,UAARhhC,EAAiB,CACjB,IAAIy2E,EAAOuyZ,EAAQn9c,MAAMqzE,GACrB+nzB,EAASzo5B,OAAOC,KAAKg4E,EAAK5qD,OAAOmV,MACjCim3B,GACA7l5B,KAAK0l5B,oBAAoBrw0B,EAAM1oD,EAAOvqB,OAAOyj5B,GAErD,KAEgB,kBAARjn5B,GAA2B+tB,EAAM7uB,OAAS,GAC1C6uB,EAAMiT,MAGd,OAAOjT,CACX,EACAqw3B,EAASz+4B,UAAU04P,WAAa,SAAU5hL,EAAM4n0B,EAAQn/yB,GACpDzoB,EAAKpxE,OAAO65F,EAAK,GACjB,IAAIgozB,EAAM9l5B,KAAKk90B,aAAa52yB,SACxB222B,EAAOn/4B,OAASgo5B,EAAIho5B,QACpBuie,GAAOylb,EAAI7I,EAAOn/4B,QAAQwoC,SAASw3D,GAE3C,EAQAk/yB,EAASz+4B,UAAUg/qB,aAAe,SAAUwoO,QAClB,IAAlBA,IAA4BA,EAAgB/l5B,KAAKmiB,QACrD,IAAIiqW,EAAUpsX,KAAKk90B,aACnB,GAAI6oE,EAAe,CAIf,IAHA,IAAI5j4B,OAAS,EACTyvpB,OAAc,EACdosO,EAAcv9a,GAAUslb,GACnB5o5B,EAAI,EAAGgvE,EAAM6x0B,EAAYlg5B,OAAQX,EAAIgvE,EAAKhvE,IAC/CglB,EAAS673B,EAAY7g5B,GACjB6C,KAAKq94B,OACL3+a,GAAa73d,OAAOsb,EAAQ,QAASniB,KAAKi+4B,wBAGtC/gb,GAAQU,OACRg0M,EAAcn+W,GAAYtxS,EAAQ65d,MAE9B41L,EAAYnumB,UAIhBi7Z,GAAa73d,OAAOsb,EAAQ,cAAeniB,KAAKk+4B,cAI5D,IAAKl+4B,KAAKq94B,OAAQ,CACd3+a,GAAa73d,OAAO7G,KAAKigV,cAAe,SAAUjgV,KAAKohqB,eACvD,IAAK,IAAIjnc,EAAK,EAAGjiC,EAAK26S,GAAoB7ye,KAAKigV,eAAgB9lH,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CACjF,IAAImha,EAAWpjc,EAAGiiC,GAClBukQ,GAAa73d,OAAOy0nB,EAAU,SAAUt7nB,KAAKohqB,cACjD,CACJ,CACJ,CACKlkM,GAAQK,WACTmB,GAAa73d,OAAO7G,KAAKq94B,OAAS9n3B,SAAW62V,EAAS,YAAapsX,KAAKm+4B,sBACxEz/a,GAAa73d,OAAO0uB,SAAU,YAAav1B,KAAKq+4B,2BAEpD3/a,GAAa73d,OAAO0uB,SAAU,QAASv1B,KAAKs+4B,sBAC5Ct+4B,KAAKih5B,oBAAoB70hB,GACzBpsX,KAAK6v2B,UACT,EACAmtC,EAASz+4B,UAAU0i5B,oBAAsB,SAAUxn1B,GAC/C,IAAIi/lB,EAAiBjlW,GAAYh6P,EAAS2gb,IACtCs+K,GACAA,EAAej1lB,SAEvB,EACAu50B,EAASz+4B,UAAU2i5B,gBAAkB,SAAUzkQ,EAAIviQ,GAC/C,IAEI8rgB,EACAC,EAHArlsB,EAAQ5gN,UACO,IAAfk6Y,IAAyBA,GAAa,GAGJ,SAAlCl6Y,KAAK6hrB,kBAAkBjY,QAAsB1vR,EAI7Cl6Y,KAAKy+E,UAAUh5E,QAAQg3oB,EAAI,CACvB57oB,KAAMb,KAAK6hrB,kBAAkBjY,OAC7Bj2mB,SAAU3zD,KAAK6hrB,kBAAkBlunB,SACjC+za,eAAgB1ne,KAAK6hrB,kBAAkBz8qB,OACvCgie,MAAO,SAAUpod,GACT4hM,EAAM68rB,eACNwI,EAAWjn4B,EAAQy6C,QAAQv1D,cAC3B8a,EAAQy6C,QAAQp1D,MAAM+Q,SAAW,WACjC4w4B,EAAYC,EAASj/jB,aACrBhoU,EAAQy6C,QAAQp1D,MAAM2mB,UAAYhM,EAAQy6C,QAAQutR,aAAe,KACjEi/jB,EAAS5h5B,MAAM2mB,UAAY,KAG3BhM,EAAQy6C,QAAQp1D,MAAMqmB,QAAU,QAChC1L,EAAQy6C,QAAQp1D,MAAM2mB,UAAYhM,EAAQy6C,QAAQv2D,wBAAwBM,OAAS,KAE3F,EACAmke,SAAU,SAAU3od,GACZ4hM,EAAM68rB,gBACNwI,EAAS5h5B,MAAM0mB,UAAai73B,EAAYhn4B,EAAQy6C,QAAQutR,aAAgB,KAEhF,EACA/4T,IAAK,SAAUjP,GACP4hM,EAAM68rB,eACNz+3B,EAAQy6C,QAAQp1D,MAAM+Q,SAAW,GACjC4J,EAAQy6C,QAAQp1D,MAAM2mB,UAAY,GAClCi73B,EAAS5h5B,MAAM0mB,UAAY,GAC3B/L,EAAQy6C,QAAQp1D,MAAMlB,IAAM,MAC5B6b,EAAQy6C,QAAQnzB,SAAS,GAAGsoO,QAC5BhuD,EAAMqisB,YAAYjk4B,EAAQy6C,QAAQnzB,SAAS,KAG3Cs6K,EAAM3yL,IAAIjP,EAAQy6C,QAASygV,EAEnC,IArCJl6Y,KAAKiuB,IAAIwunB,EAAIviQ,EAwCrB,EACA8igB,EAASz+4B,UAAU0k5B,YAAc,SAAUxmQ,GACvC,IAAIpnkB,EAAOr1E,KAAKi94B,OAAOn/4B,OAASkC,KAAK+2P,QAAQ/2P,KAAKi94B,QAAU,KACxDttiB,EAAY,CACZl2S,QAASgjlB,EAAIm+H,WAAYvlsB,EAAM5qD,MAAO4qD,EAAOA,EAAK5qD,MAAQzqB,KAAKyqB,OAEnEzqB,KAAKo/d,QAAQ,SAAUzvH,GAClB3vW,KAAKq94B,QACN3+a,GAAa53d,IAAI21oB,EAAI,UAAWz8oB,KAAKo3X,WAAYp3X,KAEzD,EACAg94B,EAASz+4B,UAAU0vB,IAAM,SAAUwunB,EAAIviQ,GACnC,GAAIA,EAIA,GAHAuiQ,EAAGp4oB,MAAMqmB,QAAU,QACnB+xnB,EAAGp4oB,MAAM2mB,UAAY,GACrBhrB,KAAKij5B,YAAYxmQ,GACbA,EAAGtnoB,cAAc,IAAM+m4B,KACvBz/P,EAAGtnoB,cAAc,IAAM+m4B,KAASttoB,YAE/B,CACD,IAAI6wN,EAAMz/d,KAAKk90B,aAAa52yB,SAAStmC,KAAKy/4B,OAAOz/4B,KAAKk90B,aAAczgM,GAAM,GACtEz8oB,KAAKogS,gBACCpgS,KAAKogS,cAAcj8R,UAAUC,SAAS,qBAAuBpE,KAAKogS,cAAcj8R,UAAUC,SAAS,cAA+C,UAA/BpE,KAAKogS,cAAch/I,WAUxIq+U,EACAA,EAAItqd,cAAc,IAAMy+0B,KAAUhllB,QAGlC5uQ,KAAKy5D,QAAQm1M,QAGzB,MAGA,GAAI6tY,IAAOz8oB,KAAKy5D,QAAS,CACrB,IAAI8l1B,EAAMv/4B,KAAKw/4B,aAAax/4B,KAAKy5D,QAASyi1B,KACtCqD,GACAA,EAAIp74B,UAAU0C,OAAOq14B,KAEzB,IAAI6D,EAAM//4B,KAAKw/4B,aAAax/4B,KAAKy5D,QAASm6xB,KACtCmsD,GACAA,EAAI574B,UAAU0C,OAAO+s1B,KAEzBn3M,EAAGp4oB,MAAMqmB,QAAU,MACvB,MAEI21c,GAAOo8K,EAGnB,EAMAugQ,EAASz+4B,UAAUgye,eAAiB,WAChC,MAAO,EACX,EAOAysa,EAASz+4B,UAAU2+0B,WAAa,WAC5B,OAAOp8W,GAAQ9ge,KAAKy5D,QAAS,MAAQz5D,KAAKgje,gBAAkB,WAChE,EACAg6a,EAASz+4B,UAAUyuwB,SAAW,SAAUv7vB,EAAMyz4B,EAAYz63B,EAAOy73B,EAAQC,EAAYl10B,GAKjF,IAAIoE,OAJU,IAAV5qD,IAAoBA,EAAQzqB,KAAKyqB,YACtB,IAAXy73B,IAAqBA,EAAS,SACf,IAAfC,IAAyBA,GAAa,QAC5B,IAAVl10B,IAAoBA,EAAQ,GAEhCA,EAAQk10B,EAAal10B,EAAQ,EAAI,EACjC,IAAK,IAAI9zE,EAAI,EAAGgvE,EAAM1hD,EAAM3sB,OAAQX,EAAIgvE,EAAKhvE,IAAK,CAE9C,GADAk4E,EAAO5qD,EAAMttB,IACR+n5B,EAAa7v0B,EAAKr1E,KAAK2nlB,SAAS,SAAU12gB,IAAUoE,EAAKr1E,KAAK2nlB,SAAS,OAAQ12gB,OAAax/D,EAAM,CACnGy04B,EAAOvo5B,KAAKR,GACZ,KACJ,CACK,GAAIk4E,EAAKr1E,KAAK2nlB,SAAS,WAAY12gB,KACjCoE,EAAKr1E,KAAK2nlB,SAAS,WAAY12gB,IAAQnzE,OAAQ,CAElD,IAAmC,KADnCoo5B,EAASlm5B,KAAKgtwB,SAASv7vB,EAAMyz4B,EAAY7v0B,EAAKr1E,KAAK2nlB,SAAS,WAAY12gB,IAASi10B,GAAQ,EAAMj10B,IACpFi10B,EAAOpo5B,OAAS,GAKtB,CACDoo5B,EAAOrl2B,QAAQ1jD,GACf,KACJ,CAPQA,IAAMgvE,EAAM,GACZ+50B,EAAOtm3B,KAOnB,MAEQziC,IAAMgvE,EAAM,GACZ+50B,EAAOvo5B,MAAM,EAGzB,CACA,OAASwo5B,IAA6B,IAAfD,EAAO,GAAkBA,EAAL,EAC/C,EASAlJ,EAASz+4B,UAAUg7vB,YAAc,SAAU9uuB,EAAO62oB,EAAQ4jP,GAEtD,IAAIzoQ,EACA3+iB,EACAm/yB,OAHW,IAAX37O,IAAqBA,GAAS,GAMlC,IAFA,IACI8kP,EADApxnB,EAAWywN,IAENtof,EAAI,EAAGA,EAAIstB,EAAM3sB,OAAQX,IAAK,CAEnC,GADA8/4B,EAASj94B,KAAKgtwB,SAASvivB,EAAMttB,GAAI+n5B,GAC7Bll5B,KAAKi94B,OAAOn/4B,QACZ,GAAsB,IAAlBm/4B,EAAOn/4B,OAAc,CACrBso5B,GAAW,EACX,IAAK,IAAIphR,EAAM,EAAG74jB,EAAM8w0B,EAAOn/4B,OAAS,EAAGknoB,EAAM74jB,EAAK64jB,IAClD,GAAIi4Q,EAAOj4Q,KAAShloB,KAAKi94B,OAAOj4Q,GAAM,CAClCohR,GAAW,EACX,KACJ,CAEJ,GAAIA,EACA,QAER,OAGA,GAAsB,IAAlBnJ,EAAOn/4B,OACP,SAGRggG,EAAMm/yB,EAAOr92B,OACb68mB,EAAKz8oB,KAAKo/4B,cAAcnC,EAAOn/4B,WACpBkzK,GAAkBlzE,KACrBwjkB,EACIthqB,KAAKq94B,QACL5gQ,EAAGn2mB,SAASw3D,GAAK35F,UAAU0C,OAAOmuR,GAClCynX,EAAGn2mB,SAASw3D,GAAKvqC,gBAAgB,kBAG7B2pa,GAAQK,WAAak/K,EAAGt4oB,UAAUC,SAAS,iBAC3Cq4oB,EAAGn2mB,SAASw3D,EAAM,GAAG35F,UAAU0C,OAAOmuR,GAGtCynX,EAAGn2mB,SAASw3D,GAAK35F,UAAU0C,OAAOmuR,GAKtCh1R,KAAKq94B,QACL5gQ,EAAGn2mB,SAASw3D,GAAK35F,UAAU2C,IAAIkuR,GAC/BynX,EAAGn2mB,SAASw3D,GAAKl1F,aAAa,gBAAiB,SAG3Cs0d,GAAQK,WAAak/K,EAAGt4oB,UAAUC,SAAS,iBAC3Cq4oB,EAAGn2mB,SAASw3D,EAAM,GAAG35F,UAAU2C,IAAIkuR,GAGnCynX,EAAGn2mB,SAASw3D,GAAK35F,UAAU2C,IAAIkuR,GAKnD,CACJ,EAQAgonB,EAASz+4B,UAAU8n5B,UAAY,SAAU573B,EAAOy63B,GAC5Cll5B,KAAKsm5B,cAAc773B,GAAO,EAAOy63B,EACrC,EAQAlI,EAASz+4B,UAAUgo5B,UAAY,SAAU973B,EAAOy63B,GAC5Cll5B,KAAKsm5B,cAAc773B,GAAO,EAAMy63B,EACpC,EACAlI,EAASz+4B,UAAU+n5B,cAAgB,SAAU773B,EAAO+73B,EAAQtB,GAKxD,IAJA,IAAIzoQ,EACA9vnB,EACAsw3B,EACA5n0B,EACKl4E,EAAI,EAAGA,EAAIstB,EAAM3sB,OAAQX,IAK9B,GAHAwvB,GADAsw3B,EAASj94B,KAAKgtwB,SAASvivB,EAAMttB,GAAI+n5B,IAClBtl3B,MACf68mB,EAAKz8oB,KAAKo/4B,cAAcnC,EAAOn/4B,QAC/Bu3E,EAAOr1E,KAAKwvY,SAASytgB,GACjBxgQ,EAAI,CACJ,IAAIgqQ,EAAUvB,EAAazoQ,EAAGn2mB,SAAS3Z,GAAO7W,GAAKu/D,EAAK1oD,GAAOte,KAAK1N,WAChE6l5B,GAAUC,IAAYh83B,EAAMttB,GAC5Bs/oB,EAAGn2mB,SAAS3Z,GAAOxoB,UAAU2C,IAAI814B,KAE3B4J,GAAUC,IAAYh83B,EAAMttB,IAClCs/oB,EAAGn2mB,SAAS3Z,GAAOxoB,UAAU0C,OAAO+14B,IAE5C,CAER,EAQAI,EAASz+4B,UAAUkl4B,YAAc,SAAUh52B,EAAOy63B,GAI9C,IAHA,IAAIpnzB,EACAm/yB,EACAyJ,EACKvp5B,EAAI,EAAGA,EAAIstB,EAAM3sB,OAAQX,IAE9B2gG,GADAm/yB,EAASj94B,KAAKgtwB,SAASvivB,EAAMttB,GAAI+n5B,IACpBtl3B,MACb8m3B,EAAS1m5B,KAAKwvY,SAASytgB,GAClBjsuB,GAAkBlzE,IACnB99F,KAAKi3P,WAAWyvpB,EAAQzJ,EAAQn/yB,EAG5C,EASAk/yB,EAASz+4B,UAAUon5B,YAAc,SAAUl73B,EAAOpc,EAAM624B,GACpDll5B,KAAK2m5B,YAAYl83B,EAAOpc,EAAM624B,EAClC,EASAlI,EAASz+4B,UAAU0X,aAAe,SAAUwU,EAAOpc,EAAM624B,GACrDll5B,KAAK2m5B,YAAYl83B,EAAOpc,EAAM624B,GAAY,EAC9C,EACAlI,EAASz+4B,UAAUoo5B,YAAc,SAAUl83B,EAAOpc,EAAM624B,EAAYxuuB,GAEhE,IAAIkhI,EACA95M,EACAm/yB,EACAyJ,EACAxunB,OALY,IAAZxhH,IAAsBA,GAAU,GAMpC,IAAK,IAAIv5K,EAAI,EAAGA,EAAIstB,EAAM3sB,OAAQX,IAAK,CAEnC2gG,GADAm/yB,EAASj94B,KAAKgtwB,SAAS3+vB,EAAM624B,IAChBtl3B,MACb8m3B,EAAS1m5B,KAAKwvY,SAASytgB,GACvB/knB,EAAW,IAAI4knB,IAAS4J,EAAO,GAAI,QAASj83B,EAAMttB,IAAI,GACtDup5B,EAAOzi5B,OAAOyyK,EAAU54E,EAAM,EAAIA,EAAK,EAAGo6L,GAC1C,IAAI4tnB,EAAM9l5B,KAAKq94B,OAAS,CAACr94B,KAAKk90B,cAAc/10B,OAAOnH,KAAKq/P,aAAe,GAAGz+P,MAAMb,KAAKC,KAAKk90B,aAAa52yB,UACvG,IAAK0qI,GAAkBlzE,IAAQm/yB,EAAOn/4B,OAASgo5B,EAAIho5B,OAAQ,CACvDggG,EAAM44E,EAAU54E,EAAM,EAAIA,EAC1B85M,EAAK53S,KAAK894B,YAAY4I,GAAQpg3B,SAASw3D,GACvC,IAAI2+iB,EAAKz8oB,KAAKq94B,OAASxs4B,GAAO,iBAAkBi14B,EAAI7I,EAAOn/4B,SAAWgo5B,EAAI7I,EAAOn/4B,QACjF2+oB,EAAGxmoB,aAAa2hS,EAAI6kW,EAAGn2mB,SAASw3D,GACpC,CACJ,CACJ,EACAk/yB,EAASz+4B,UAAU4ioB,iBAAmB,WAClC,IAAIvgb,EAAQ5gN,KACZ,CAAC,MAAO,OAAQ,UAAW,WAAWjC,SAAQ,SAAUa,GACpDgiN,EAAMnnJ,QAAQp1D,MAAM6zf,eAAet5f,EACvC,IACA,CAAC,OAAQ,WAAY,QAAS,SAASb,SAAQ,SAAUa,GACzC,UAARA,GAAmBgiN,EAAMnnJ,QAAQt1D,UAAUC,SAAS,kBACpDw8M,EAAMnnJ,QAAQt1D,UAAU0C,OAAO,kBAEM,IAArC,CAAC,QAAS,SAASnC,QAAQ9F,IAAgBgiN,EAAMnnJ,QAAQrpD,aAAaxR,IACtEgiN,EAAMnnJ,QAAQlG,gBAAgB30D,GAE9BgiN,EAAMy8rB,QAAkB,UAARz+4B,GAAmBgiN,EAAMnnJ,QAAQt1D,UAAUC,SAAS,eACpEw8M,EAAMnnJ,QAAQt1D,UAAU0C,OAAO,aAEvC,GACJ,EAMAm24B,EAASz+4B,UAAUklE,QAAU,WACzB,IAAI2oT,EAAUpsX,KAAKk90B,aACnB,GAAI9wd,EAAS,CAET,GADApsX,KAAKu9qB,eACAv9qB,KAAKq94B,OAgCNr94B,KAAK4+4B,YACDx7b,OAAepjd,KAAKq94B,OACpBr94B,KAAKy5D,QAAUz5D,KAAK694B,mBAAmB794B,KAAKy5D,SAG5Cz5D,KAAKy5D,QAAQ96C,UAAY,GAE7B3e,KAAKmhoB,mBACL/0Q,EAAQr2W,WAAWE,aAAajW,KAAKy5D,QAAS2yT,GAC9CpsX,KAAK4v4B,cAAgB,SAzCP,CAEd,GADA5v4B,KAAK4v4B,cAAcvr4B,MAAMqmB,QAAU,GACA,oBAA/B1qB,KAAK4v4B,cAAcxuvB,QACnB3uF,GAAS,CAACzyD,KAAK4v4B,eAAgB,CAAC,YAAa,QAAS,KAAO5v4B,KAAKgje,kBAClEhje,KAAKy5D,QAAUz5D,KAAK4v4B,mBAMpB,GAHI5v4B,KAAK2he,YAAc3he,KAAK4v4B,cAAc1iP,mBAAgE,OAA3CltpB,KAAK4v4B,cAActp2B,SAAS,GAAG86G,SAC1FphJ,KAAKiie,cAAc,CAAE,MAAS,KAAM,GAEpC1sc,SAAS4jC,eAAen5D,KAAK4v4B,cAAc953B,IAAK,CAChD,IAAIyn4B,EAASv94B,KAAK4v4B,cAAcx6kB,mBAC5BmolB,GAAUA,IAAWnxhB,EACrBpsX,KAAK4v4B,cAAc1r4B,cAAc+R,aAAajW,KAAKy5D,QAAS8j1B,GAG5Dv94B,KAAK4v4B,cAAc1r4B,cAAcqT,YAAYvX,KAAKy5D,SAElD2pZ,OAAepjd,KAAKq94B,OACpBr94B,KAAKy5D,QAAUz5D,KAAK694B,mBAAmB794B,KAAKy5D,SAG5Cz5D,KAAKy5D,QAAQ96C,UAAY,GAE7B2pI,GAAO,GAAG1nJ,MAAMb,KAAKC,KAAK4v4B,cAActp2B,UAAWtmC,KAAKy5D,SACxD4ma,GAAOrge,KAAK4v4B,eACZ5v4B,KAAKmhoB,kBACT,CAEJnhoB,KAAK4v4B,cAAgB,IACzB,CAaI5v4B,KAAKq94B,QAAUr94B,KAAK4v4B,eACpBvva,GAAOrge,KAAKy5D,SACZ2yT,EAAQ/nX,MAAMqmB,QAAU,GACxB0hW,EAAQjoX,UAAU0C,OAAO,KAAO7G,KAAKgje,gBAAkB,YACvD52G,EAAQ74T,gBAAgB,gBAGxB8sa,GAAOj0G,GAEX5nK,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,MAC1BA,KAAK+oI,UACL/oI,KAAKywe,cAAc,CAAC,YAE5B,CACAzwe,KAAK6v2B,SAAW,IACpB,EACAxijB,IAAW,CACPv0P,MACDkk1B,EAASz+4B,UAAW,wBAAoB,GAC3C8uT,IAAW,CACPv0P,MACDkk1B,EAASz+4B,UAAW,kBAAc,GACrC8uT,IAAW,CACPv0P,MACDkk1B,EAASz+4B,UAAW,cAAU,GACjC8uT,IAAW,CACPv0P,MACDkk1B,EAASz+4B,UAAW,mBAAe,GACtC8uT,IAAW,CACPv0P,MACDkk1B,EAASz+4B,UAAW,eAAW,GAClC8uT,IAAW,CACPv0P,MACDkk1B,EAASz+4B,UAAW,cAAU,GACjC8uT,IAAW,CACPv0P,MACDkk1B,EAASz+4B,UAAW,eAAW,GAClC8uT,IAAW,CACP63K,GAAS,KACV83a,EAASz+4B,UAAW,gBAAY,GACnC8uT,IAAW,CACP63K,GAAS,IACV83a,EAASz+4B,UAAW,kBAAc,GACrC8uT,IAAW,CACP63K,IAAS,IACV83a,EAASz+4B,UAAW,uBAAmB,GAC1C8uT,IAAW,CACP63K,GAAS,KACV83a,EAASz+4B,UAAW,cAAU,GACjC8uT,IAAW,CACP63K,GAAS,KACV83a,EAASz+4B,UAAW,cAAU,GACjC8uT,IAAW,CACP63K,GAAS,OACV83a,EAASz+4B,UAAW,gBAAY,GACnC8uT,IAAW,CACP63K,IAAS,IACV83a,EAASz+4B,UAAW,uBAAmB,GAC1C8uT,IAAW,CACP63K,IAAS,IACV83a,EAASz+4B,UAAW,2BAAuB,GAC9C8uT,IAAW,CACPg4K,GAAQ,CAAEkrH,OAAQ,KAAMlilB,KAAM,OAAQuqY,SAAU,WAAYwkQ,QAAS,UAAW1ilB,IAAK,MAAOw4K,UAAW,YAAa5sM,SAAU,SAAWg+mB,MAC1I04P,EAASz+4B,UAAW,cAAU,GACjC8uT,IAAW,CACPi4K,GAAW,GAAIw3a,MAChBE,EAASz+4B,UAAW,aAAS,GAChC8uT,IAAW,CACPg4K,GAAQ,CAAE1xa,SAAU,IAAKvuD,OAAQ,OAAQwkqB,OAAQ,aAAemzO,MACjEC,EAASz+4B,UAAW,yBAAqB,GAC5Cy+4B,EAAW3vlB,IAAW,CAClBq4K,IACDs3a,EAEP,CAprE8B,CAorE5Bt7nB,IC9zEExgC,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAkBI+n5B,IAA6B,SAAUpisB,GASvC,SAASoisB,EAAY5n4B,EAASy6C,GAC1B,OAAO+qJ,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,IAClD,CAmFA,OA7FAkhP,IAAU0lqB,EAAapisB,GAiBvBoisB,EAAYro5B,UAAUgwe,UAAY,WAC9Bvue,KAAKq94B,QAAS,EACdr94B,KAAKy5D,QAAQ3jD,GAAK9V,KAAKy5D,QAAQ3jD,IAAMutc,GAAY,mBACjD7+P,EAAOjmN,UAAUgwe,UAAUxue,KAAKC,KACpC,EACA4m5B,EAAYro5B,UAAUk/E,WAAa,WAC/B+mI,EAAOjmN,UAAUk/E,WAAW19E,KAAKC,MACjCq3D,GAAWr3D,KAAKy5D,QAAS,CAAE,KAAQ,UAAW,SAAY,MAC1Dz5D,KAAKy5D,QAAQp1D,MAAMmkD,OAAS40kB,GAAiBp9nB,KAAKy5D,SAAS94D,UAC/D,EAUAim5B,EAAYro5B,UAAUowI,KAAO,SAAUxrI,EAAKG,EAAM6e,GAC9CqiM,EAAOjmN,UAAUmnY,SAAS3lY,KAAKC,KAAM,KAAM,KAAMmD,EAAKG,EAAM,KAAM6e,EACtE,EAOAyk4B,EAAYro5B,UAAUk3H,MAAQ,WAC1B+uF,EAAOjmN,UAAUqg5B,UAAU7+4B,KAAKC,KACpC,EASA4m5B,EAAYro5B,UAAUoke,kBAAoB,SAAUiF,EAASC,GACzDrjR,EAAOjmN,UAAUoke,kBAAkB5ie,KAAKC,KAAM4ne,EAASC,GACvD,IAAK,IAAI1tQ,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAE9D,OADWjiC,EAAGiiC,IAEV,IAAK,SACDn6N,KAAKy1H,QACLz1H,KAAKxC,OAASoqe,EAAQpqe,OACtB,MACJ,IAAK,SACDwC,KAAKu9qB,aAAa11M,EAAQ1ld,QAC1BniB,KAAK85e,aAGjB,CACJ,EAOA8sa,EAAYro5B,UAAUyke,cAAgB,WAClC,MAAO,aACX,EACA31K,IAAW,CACP63K,GAAS,KACV0hb,EAAYro5B,UAAW,cAAU,GACpC8uT,IAAW,CACP63K,GAAS,KACV0hb,EAAYro5B,UAAW,cAAU,GACpC8uT,IAAW,CACPi4K,GAAW,GAAIw3a,MAChB8J,EAAYro5B,UAAW,aAAS,GACnCqo5B,EAAcv5lB,IAAW,CACrBq4K,IACDkhb,EAEP,CA/FiC,CA+F/B5J,KCnIE97pB,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GA+BzC0lqB,IAAiC,SAAUrisB,GAS3C,SAASqisB,EAAgBju3B,EAAQw62B,GAC7B,IAAIxyrB,EAAQ4D,EAAOzkN,KAAKC,KAAM44B,IAAW54B,KAOzC,OANA4gN,EAAMkmsB,UAAY,GAClBlmsB,EAAMkrjB,cAAgB,CAAC,EACvBlrjB,EAAM28Q,UAAW,EACjB38Q,EAAMmmsB,gBAAkB,KACxBnmsB,EAAMyyrB,sBAAwBD,EAC9BxyrB,EAAMk1Q,SAAU,EACTl1Q,CACX,CAo+BA,OAr/BAsgC,IAAU2lqB,EAAiBrisB,GAkB3BqisB,EAAgBto5B,UAAUyo5B,WAAa,SAAUvg5B,EAAM03D,GACnD,IAAIn/C,EAAU,CACVg6G,OAAQ,CAAC,QAAS,WAAY,GAAI,WAAY,kBAAmB,cAC7D,qBAAsB,UAAW,GAAI,gBACzCxtD,OAAQ,CAAC,QAAS,WAAY,GAAI,aAAc,WAAY,GAAI,WAAY,cAAe,GAAI,iBAEnGxsD,EAAQytC,KAAOztC,EAAQg6G,OACvBh6G,EAAQwsG,SAAWxsG,EAAQg6G,OAC3Bh6G,EAAQio4B,SAAWjo4B,EAAQg6G,OAE3B,IADA,IAAIpvD,EAAQ,GACHzsE,EAAI,EAAGA,EAAI6hB,EAAQ,GAAKvY,GAAM3I,OAAQX,IACvC6hB,EAAQ,GAAKvY,GAAMxF,SAAS9D,EAAEwD,WAAY,KAAK7C,OAC3CqgE,EACAyL,EAAMjsE,KAAK,CACP0Q,KAAMrO,KAAKstrB,kBAAkBtuqB,EAAQ,GAAKvY,GAAMxF,SAAS9D,EAAEwD,WAAY,MAAQ,MAC/Ey8oB,QAAS,yBAA2Bj/kB,IAAan/C,EAAQ,GAAKvY,GAAMxF,SAAS9D,EAAEwD,WAAY,KAAK8D,cAAgB,GAAK,iBAIzHmlE,EAAMjsE,KAAK,CACP0Q,KAAMrO,KAAKstrB,kBAAkBtuqB,EAAQ,GAAKvY,GAAMxF,SAAS9D,EAAEwD,WAAY,MAAQ,QAKvFipE,EAAMjsE,KAAK,CAAEu1O,WAAW,IAGhC,OAAOtpK,CACX,EAOAi90B,EAAgBto5B,UAAUklE,QAAU,WAKhC,GAJIzjE,KAAK8rrB,MACL9rrB,KAAKkn5B,iBACL1isB,EAAOjmN,UAAU2smB,YAAYnrmB,KAAKC,QAEjCA,KAAKu9d,UAAYv9d,KAAKmn5B,QAAS,CAChC,IAAIvvmB,EAAK53S,KAAKmn5B,QAAQ1t1B,QAAQtkD,cAAc,gBACtCyiS,GAAM02Y,GAAa12Y,EAAI,iBACzB53S,KAAKon5B,cAEb,CACIpn5B,KAAKu/0B,SAAWv/0B,KAAKu/0B,OAAOr9W,aAC5Blie,KAAKqn5B,cAEb,EACAR,EAAgBto5B,UAAU+o5B,WAAa,SAAU7g5B,EAAM0yY,EAAYougB,EAAaC,GAE5Exn5B,KAAKqf,KAAOrf,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,0BACtDlM,KAAK44B,OAAOm1c,UACZ/te,KAAKqf,KAAKlb,UAAU2C,IAAI,SAGxB9G,KAAKqf,KAAKlb,UAAU0C,OAAO,SAE3B7G,KAAK44B,OAAO/pB,UACZ7O,KAAKqf,KAAKlb,UAAU2C,IAAI9G,KAAK44B,OAAO/pB,UAExC,IAAI4toB,EAAKz8oB,KAAK44B,OAAOoF,cAAc,MAC/B2O,EAAOwsW,EAAa,gCAAkC,qBAE1D,GAAIn5Y,KAAK44B,OAAOm5jB,cAAgD,SAAhC/xlB,KAAK44B,OAAOoqc,kBACpChje,KAAKgf,QAAQ2vqB,mBAAoB,CACrC,IAAI84N,EAASzn5B,KAAK44B,OAAOg4sB,qBAAqB42K,EAAWt00B,KAAK9iE,aAAa,aACvEs34B,EAAY1n5B,KAAK44B,OAAOw5pB,iBAAiBo1N,EAAWvqqB,OAAO80W,aAC3D41T,EAAUD,GAAwB,cAAXD,EAA2D,oBAAjC,+BACjDG,EAAWF,GAAwB,eAAXD,EAA6D,qBAAlC,gCACnDI,EAAoB,WAATph5B,EAAqBzG,KAAKstrB,kBAAkB,YAAwB,aAAT7mrB,GAAgC,SAATA,EAC7FzG,KAAKstrB,kBAAkB,gBAAkBttrB,KAAKstrB,kBAAkB,yBAChEw6N,EAAqB,WAATrh5B,EAAqBzG,KAAKstrB,kBAAkB,YAAwB,aAAT7mrB,GAAgC,SAATA,EAC9FzG,KAAKstrB,kBAAkB,gBAAkBttrB,KAAKstrB,kBAAkB,yBACpE7wC,EAAGlloB,YAAYvX,KAAK+n5B,eAAeF,EAASF,EAAO,oBACnDlrQ,EAAGlloB,YAAYvX,KAAK+n5B,eAAeD,EAAUF,EAAQ,qBACrD,IAAI10qB,EAAYlzO,KAAK44B,OAAOoF,cAAc,KAAM,CAAE9xB,UAAW,8CAC7DuwoB,EAAGlloB,YAAY27N,EACnB,CACKlzO,KAAKgf,QAAQ2vqB,oBACdlyC,EAAGlloB,YAAYvX,KAAK+n5B,eAAe/n5B,KAAKstrB,kBAAkB,eAAgBn0S,EAAa,GAAK,aAAcxsW,IAEjG,YAATlmC,GACAg2oB,EAAGlloB,YAAYvX,KAAK+n5B,eAAe/n5B,KAAKstrB,kBAjC9B,CAAE9hnB,OAAQ,aAAc/e,KAAM,aAAcw61B,SAAU,aAAcz7xB,SAAU,iBAAkBwN,OAAQ,gBAiChD,GAAKvyH,IAAQ,YAAa8g5B,GAAevn5B,KAAKgo5B,mBAAqB,eAAiBr72B,EAAO,gBAAgB,IAEjL3sC,KAAKqf,KAAK9H,YAAYkloB,GACtBz8oB,KAAK44B,OAAOolE,OhK0Pa,2BgK1PsB,CAAEvkC,QAASz5D,KAAKqf,OAC/Drf,KAAK44B,OAAOolE,OAAO/2F,GAAoC,CAAEkyY,WAAYA,GACzE,EACA0tgB,EAAgBto5B,UAAUwp5B,eAAiB,SAAUp12B,EAAKzmC,EAAW6rU,EAAUg/C,GAC3E,IAAIn/E,EAAK53S,KAAK44B,OAAOoF,cAAc,KAAM,CAAE9xB,UAAWA,EAAY,iBAOlE,OANA0rS,EAAGj5R,UAAYg0B,EACfilQ,EAAGuvC,SAAWvvC,EAAGzzS,UAAUC,SAAS,eAAiB,EAAI,EACzDwzS,EAAG3hS,aAAajW,KAAK44B,OAAOoF,cAAc,OAAQ,CAAE9xB,UAAW,uBAAyB6rU,EAAUrlS,MAAO,CAAE,cAAe,UAAaklQ,EAAGjqR,YACtIopW,GACAn/E,EAAGrgS,YAAYvX,KAAK44B,OAAOoF,cAAc,OAAQ,CAAE9xB,UAAW,qBAE3D0rS,CACX,EACAivmB,EAAgBto5B,UAAU0p5B,aAAe,WAChC/qb,GAAQK,UACTmB,GAAa53d,IAAI9G,KAAK8rrB,IAAK,YAAa9rrB,KAAK+t4B,aAAc/t4B,MAE/D0+d,GAAa53d,IAAI9G,KAAK8rrB,IAAK,QAAS9rrB,KAAKko5B,eAAgBlo5B,MACzD0+d,GAAa53d,IAAI9G,KAAK8rrB,IAAK,QAAS9rrB,KAAKmo5B,MAAOno5B,MAChD0+d,GAAa53d,IAAI9G,KAAK8rrB,IAAK,UAAW9rrB,KAAKuxqB,QAASvxqB,KACxD,EACA6m5B,EAAgBto5B,UAAU2o5B,eAAiB,WAClChqb,GAAQK,UACTmB,GAAa73d,OAAO7G,KAAK8rrB,IAAK,YAAa9rrB,KAAK+t4B,cAEpDrva,GAAa73d,OAAO7G,KAAK8rrB,IAAK,QAAS9rrB,KAAKko5B,gBAC5Cxpb,GAAa73d,OAAO7G,KAAK8rrB,IAAK,QAAS9rrB,KAAKmo5B,OAC5Czpb,GAAa73d,OAAO7G,KAAK8rrB,IAAK,UAAW9rrB,KAAKuxqB,QAClD,EACAs1O,EAAgBto5B,UAAU2p5B,eAAiB,SAAUhr5B,GACjD,IACI69X,EAAWuzT,GAAapxrB,EAAEilB,OAAQ,eAClC44W,IACI/6X,KAAKstrB,kBAAkB,iBAAmBvyT,EAAS3+K,UAAU7mM,QAC7DvV,KAAKqvrB,cACLrvrB,KAAKkrmB,gBAEClrmB,KAAKgf,QAAQ2vqB,oBAAsBzxN,GAAQK,WAC9Cv9d,KAAKstrB,kBARF,CAAE9hnB,OAAQ,aAAc/e,KAAM,aAAc++D,SAAU,iBAAkBwN,OAAQ,gBAQpDh5H,KAAKgf,QAAQvY,SAAWs0X,EAAS3+K,UAAU7mM,QAC7EvV,KAAK+t4B,aAAa7w4B,GAG9B,EACA2p5B,EAAgBto5B,UAAU6p5B,uBAAyB,SAAUlr5B,EAAGonrB,EAAmB+jO,GAC/E,IAAI3yN,EAAuB,YAAVx4rB,EAAE0B,KAAgC,QAAV1B,EAAE0B,KAAiB1B,EAAEoyC,SAAag1oB,EAAkB5/qB,QAAQ6wB,SAAS0+P,eAAiB,EACzHqwZ,EAAkB5/qB,QAAQ6wB,SAAS0+P,eAAiB,EACtD0ha,EAAcrR,GAAoBoR,EAAYpR,EAAkBxmrB,QAAUwmrB,EAAkBxmrB,QAEhG,GAAI63rB,EAAa,CACbA,EAAY/mb,QACZ,IAAI05oB,EAAa3yN,EAAYxxrB,UAAUC,SAAS,gBAAkB,aAAeik5B,EAC7Elm4B,EAASwzqB,EAAYxxrB,UAAUC,SAAS,gBAAkBkqrB,GAAaqH,EAAa,YAAcrH,GAAaqH,EAAa,eAChI31rB,KAAKuo5B,cAAcpm4B,EAAQmm4B,EAC/B,CACJ,EACAzB,EAAgBto5B,UAAU4p5B,MAAQ,SAAUjr5B,GACxC,GAAe,QAAVA,EAAE0B,KAAiB1B,EAAEoyC,UAAuB,QAAVpyC,EAAE0B,IAAe,CACpD,IAAI0p5B,EAAapr5B,EAAEilB,OAAOhe,UAAUC,SAAS,gBAAkB,aAAe,cAC1E+d,EAASjlB,EAAEilB,OAAOhe,UAAUC,SAAS,eACnCkqrB,GAAapxrB,EAAEilB,OAAQ,eAAiBmsqB,GAAapxrB,EAAEilB,OAAQ,YACrEniB,KAAKuo5B,cAAcpm4B,EAAQmm4B,EAC/B,MACK,GAAe,YAAVpr5B,EAAE0B,KAA+B,cAAV1B,EAAE0B,KAAyB1B,EAAEmkS,OAK1C,UAAVnkS,EAAE0B,KAA8B,eAAX1B,EAAE03H,OAA0B13H,EAAEilB,OAAOhe,UAAUC,SAAS,iBACnFlH,EAAEijE,iBACFjjE,EAAEilB,OAAO/L,QACLlZ,EAAEilB,OAAOhe,UAAUC,SAAS,eAC5BpE,KAAK+t4B,aAAa7w4B,GAClB8C,KAAKmn5B,QAAQ1t1B,QAAQtkD,cAAc,gBAAgBy5P,QACnD5uQ,KAAKuo5B,cAAcj6N,GAAaturB,KAAKmn5B,QAAQ1t1B,QAAQtkD,cAAc,gBAAiB,eAAgB,aACpGnV,KAAK+m5B,gBAAkB/m5B,KAAKmn5B,QAAQ1t1B,QAAQtkD,cAAc,sBAZI,CAClEjY,EAAEijE,iBACF,IAAImknB,EAAoBpkrB,MAAMQ,KAAKV,KAAK8rrB,IAAIr+pB,iBAAiB,oGAC7DztB,KAAKoo5B,uBAAuBlr5B,EAAGonrB,EAAmB,cACtD,CAWJ,EACAuiO,EAAgBto5B,UAAUgzqB,QAAU,SAAUr0qB,GAE5B,YAAVA,EAAE0B,KAA+B,cAAV1B,EAAE0B,KACzB1B,EAAEijE,gBAEV,EACA0m1B,EAAgBto5B,UAAUgq5B,cAAgB,SAAU5pjB,EAAMzyV,GACtD,IAAI0prB,EAAWrgqB,SAASpgB,cAAc,IAAMjJ,GACxC0prB,GACAA,EAASzxrB,UAAU0C,OAAOqF,GAE1ByyV,GACAA,EAAKx6V,UAAU2C,IAAIoF,EAE3B,EACA264B,EAAgBto5B,UAAU6o5B,aAAe,WACrCpn5B,KAAKwo5B,aAAc,EACfxo5B,KAAKmn5B,UAAYnn5B,KAAKmn5B,QAAQjlb,cAC9Blie,KAAKmn5B,QAAQ1j1B,UACbi7Z,GAAa73d,OAAO7G,KAAKmn5B,QAAQ1t1B,QAAS,UAAWz5D,KAAKyo5B,uBAC1D5h5B,GAAO7G,KAAK0o5B,OACZ1o5B,KAAK44B,OAAOolE,OAAO/2F,GAA8B,CAAEkb,OAAQ,KAAM85G,OAAQ,GAAIimT,QAAQ,EAAOjrT,IAAKj3H,KAAKgf,QAAQ6J,SAEtH,EACAg+3B,EAAgBto5B,UAAUwv4B,aAAe,SAAU7w4B,GAC/C,IAAI8C,KAAKgf,QAAQ2vqB,oBAAiC,cAAXzxrB,EAAEuJ,KAAzC,CAGA,IAGIswX,EAHA50W,EAASjlB,EAAEilB,OAAOhN,cAAc,kBAChCyiS,EAAK02Y,GAAapxrB,EAAEilB,OAAQ,eAC5BwwZ,EAAU3ya,KAAKqf,KAAKlK,cAAc,cAStC,GAPIw9Z,GACAA,EAAQxua,UAAU0C,OAAO,aAEzB+wS,IACAA,EAAGzzS,UAAU2C,IAAI,aACjBiwX,EAAYn/E,EAAGzzS,UAAUC,SAAS,eAElC+d,EAAJ,CAGA,IAAK40W,EAAW,CACZ,IAAI4xhB,EAAU3o5B,KAAKqf,KAAKlK,cAAc,cACjC67J,GAAkB23uB,IACnBA,EAAQxk5B,UAAU0C,OAAO,cAE7B7G,KAAKon5B,cACT,CACA,IAAIwB,EAAe5o5B,KAAKgo5B,mBACxB,IAAKho5B,KAAKwo5B,aAAezxhB,EAAW,CAChCn/E,EAAGzzS,UAAU2C,IAAI,cACjB9G,KAAKwo5B,aAAc,EACnB,IAAIK,EAAc,CACdp+3B,MAAOzqB,KAAKgn5B,WAAWhn5B,KAAKgf,QAAQvY,KAAMmi5B,EAAeA,EAAalm5B,QAAQ,MAAO,SAAMuqE,GAC3Fp8D,OAAQ7Q,KAAK8o5B,cAAcv74B,KAAKvN,MAChC+9c,QAAS/9c,KAAKon5B,aAAa754B,KAAKvN,MAChC+te,UAAW/te,KAAK44B,OAAOm1c,UACvB8zM,kBAAmB,CAAEjY,OAAQ,QAC7Bm/O,YAAa/o5B,KAAKgp5B,aAAaz74B,KAAKvN,MACpC6O,SAAU7O,KAAKgf,QAAQ2vqB,oBAAsB3urB,KAAK44B,OAAO/pB,SACrD,6BAAoC7O,KAAK44B,OAAO/pB,SAAW7O,KAAKgf,QAAQ2vqB,mBACxE,4BAA8B3urB,KAAK44B,OAAO/pB,SAAW7O,KAAK44B,OAAO/pB,SAAW,IAEpF7O,KAAK44B,OAAO6gC,QAAQliD,YAAYvX,KAAK0o5B,OACrC1o5B,KAAKmn5B,QAAU,IAAIP,IAAYiC,EAAa7o5B,KAAK0o5B,OACjDhqb,GAAa53d,IAAI9G,KAAKmn5B,QAAQ1t1B,QAAS,UAAWz5D,KAAKyo5B,sBAAuBzo5B,MAC9E,IAAI+xP,EAAS/xP,KAAKqf,KAAKlK,cAAc,cAAcjS,wBAC/Cs1B,EAAM,CAAEr1B,IAAK,EAAGG,KAAM,GAC1B,GAAItD,KAAKgf,QAAQ2vqB,mBAAoB,CACjC,IAEInrrB,EADU+xB,SAASpgB,cAAc,gDAChB6xU,aAAe,EACpChnV,KAAKmn5B,QAAQ1t1B,QAAQp1D,MAAMb,OAAS,eAAiBA,EAAS,MAC9DxD,KAAKmn5B,QAAc,KAAE3j5B,EAAQ,EAAG+xB,SAASwK,MACzC,IAAIk8F,EAASj8H,KAAKstrB,kBALJ,CAAE9hnB,OAAQ,aAAc/e,KAAM,aAAc++D,SAAU,iBAAkBwN,OAAQ,gBAKlDh5H,KAAKgf,QAAQvY,OACzDzG,KAAK44B,OAAOolE,OAAO/2F,GAA8B,CAC7Ckb,OAAQniB,KAAKmn5B,QAAQ1t1B,QAAQv1D,cAAe+3H,OAAQA,EAAQimT,QAAQ,GAE5E,KACK,CACD,GAAIg7C,GAAQK,SAAU,CAClBv9d,KAAKu9d,UAAW,EAChB,IAAI0rb,EAAcjp5B,KAAKkp5B,mBACvB1w3B,EAAIr1B,KAAOwB,OAAO8pQ,YAAcw6oB,EAAYzl5B,QAAU,EACtDg1B,EAAIl1B,MAAQqB,OAAO+hC,WAAaui3B,EAAY1l5B,OAAS,EACrDvD,KAAKkrmB,cACLlrmB,KAAKu9d,UAAW,CACpB,MAEI/kc,EAAIr1B,IAAM+5d,GAAQpzd,KAAOnF,OAAO49D,YAAcwvL,EAAO5uP,IAAMwB,OAAOysZ,QAAUr/J,EAAO5uP,IACnFq1B,EAAIl1B,KAAOtD,KAAKmp5B,kBAAkBnp5B,KAAK8rrB,KAE3C9rrB,KAAKmn5B,QAAc,KAAE3u3B,EAAIr1B,IAAKq1B,EAAIl1B,KAAMpG,EAAEilB,OAC9C,CACA89uB,GAAiBjgwB,KAAK44B,OAAO6gC,QAASz5D,KAAKmn5B,QAAQ1t1B,QAAQv1D,cAC/D,CAvDA,CAdA,CAsEJ,EACA2i5B,EAAgBto5B,UAAUkq5B,sBAAwB,SAAUvr5B,GACxD,GAAe,QAAVA,EAAE0B,KAAiB1B,EAAEoyC,UAAuB,QAAVpyC,EAAE0B,IAAe,CACpD1B,EAAEijE,iBACF,IAAImknB,EAAoBpkrB,MAAMQ,KAAKV,KAAKmn5B,QAAQ1t1B,QAAQhsC,iBAAiB,qFAEzEztB,KAAKoo5B,uBAAuBlr5B,EAAGonrB,EAAmB,YACtD,KACmB,cAAVpnrB,EAAE0B,KAAiC,WAAV1B,EAAE0B,MAChC1B,EAAEijE,iBACFngE,KAAKmn5B,QAAQ1xxB,QACbz1H,KAAK+m5B,gBAAkB,KACvBxx3B,SAASpgB,cAAc,0BAA0BhR,UAAU0C,OAAO,cAClE0uB,SAASpgB,cAAc,0BAA0By5P,QAEzD,EACAi4oB,EAAgBto5B,UAAUyp5B,iBAAmB,WACzC,IAAIY,EACAlgR,EAAa1ooB,KAAKyqrB,kBAAkBzqrB,KAAKgf,QAAQi+N,OAerD,OAdIyrZ,GAAoC,IAAtBA,EAAW5qoB,OAErB8q5B,EAD2B,uBAA3BlgR,EAAW,GAAGvqkB,UAAgE,oBAA3BuqkB,EAAW,GAAGvqkB,SAClD,UAGA,eAIfuqkB,GAAoC,IAAtBA,EAAW5qoB,SACzBkC,KAAKyz4B,SAAWzz4B,KAAKqz4B,sBAAsBrz4B,KAAKgf,QAAQvY,KAAO,YAC/Dmi5B,EAAelgR,EAAW,GAAGvqkB,UAG9Byq1B,CACX,EACA/B,EAAgBto5B,UAAUyq5B,aAAe,SAAU590B,GAC/C,GAAIprE,KAAKgf,SAAWhf,KAAKgf,QAAQ2vqB,oBAAsBvjnB,EAAKlS,MAAO,CAC/D,IAAI/2C,EAASipD,EAAKlS,MAAM/2C,OACpBin4B,EAAejn4B,EAAOhe,UAAUC,SAAS,oBACtC+d,EAAOhe,UAAUC,SAAS,mBAAqB+d,EAAOhe,UAAUC,SAAS,eAChFgnE,EAAK01Q,QAAUsokB,CACnB,MAEQh+0B,EAAKlS,iBAAiB4iJ,YAAc1wI,EAAKlS,MAAM/2C,OAAOhe,UAAUC,SAAS,eACzEgnE,EAAK01Q,QAAS,EAG1B,EACA+lkB,EAAgBto5B,UAAU2q5B,iBAAmB,WAEzC,OADAlp5B,KAAKmn5B,QAAQ1t1B,QAAQp1D,MAAMqmB,QAAU,QAC9B1qB,KAAKmn5B,QAAQ1t1B,QAAQv2D,uBAChC,EACA2j5B,EAAgBto5B,UAAU4q5B,kBAAoB,SAAUhn4B,GACpD,IAAIkn4B,EAAerp5B,KAAKkp5B,mBAAmB3l5B,MACvC6jwB,EAAiBjlvB,EAAOjf,wBACxBmlwB,EAAUjB,EAAehkwB,MAAQim5B,EAAerp5B,KAAK44B,OAAO6gC,QAAQ52D,YACpEym5B,EAAenn4B,EAAOmtU,YAAcntU,EAAOtf,YAE/C,OADAym5B,EAAeA,EAAeA,EAAe,EAAI,EACzCjhJ,EAAU,EAAMjB,EAAehkwB,MAAQ,EAAIkm5B,EAAiBliJ,EAAe9jwB,KAAO+l5B,EAAe,EAAIC,CACjH,EACAzC,EAAgBto5B,UAAU8ulB,WAAa,SAAUrukB,GAC7C,IAAI4hM,EAAQ5gN,KAIZ,GAHAA,KAAK6ie,YAAY7jd,GACjBhf,KAAK6trB,iBAAiB7uqB,GACtBhf,KAAKmurB,WAAWnvqB,IACZA,EAAQ8hU,OAAZ,CAGA9gV,KAAKojrB,UAAU/gN,WACf,IAAIknb,EAAgBvp5B,KAAKyqrB,kBAAkBzrqB,EAAQi+N,QAAUj9O,KAAKyqrB,kBAAkBzrqB,EAAQi+N,OAAOn/O,QAC/FkC,KAAKgf,QAAQwuqB,gBAAgBhwrB,QAAO,SAAUy5H,GAC1C,OAAO2pF,EAAM5hM,QAAQi+N,QAAUhmH,EAAIgmH,KACvC,IAAGn/O,OACPkC,KAAKsn5B,WAAWto4B,EAAQvY,KAAM8i5B,EAAe,EAAqB,IAAjBA,GAAuC,IAAjBA,EAAqBvq4B,GAC5Fhf,KAAK8rrB,IAAI71qB,aAAajW,KAAKqf,KAAMrf,KAAK8rrB,IAAIn+pB,YAC1C3tB,KAAK8rrB,IAAI3nrB,UAAU2C,IAAI,iBACnB9G,KAAK44B,OAAOm1c,WACZ/te,KAAK8rrB,IAAI3nrB,UAAU2C,IAAI,SAE3B9G,KAAK8rrB,IAAI3nrB,UAAU0C,OAAO,oBAC1B7G,KAAK0o5B,MAAQ1o5B,KAAK44B,OAAOoF,cAAc,KAAM,CAAE9xB,UAAW,iBACtD8S,EAAQ6J,OAAOmpkB,gBACfhylB,KAAK44B,OAAOolE,OAAO/2F,GAA4B,CAAC,GAEpDjH,KAAKio5B,cAjBL,CAkBJ,EACApB,EAAgBto5B,UAAU2smB,YAAc,WACpClrmB,KAAKyjE,SACT,EACAoj1B,EAAgBto5B,UAAUuq5B,cAAgB,SAAU5r5B,GAC5CA,EAAEm4E,OACFr1E,KAAK44B,OAAOolE,OAAO/2F,GAA0B,CAAC,GAC9CjH,KAAK+6X,SAAW79X,EAAEm4E,KAClBr1E,KAAKkrmB,cACLlrmB,KAAKwp5B,eAAets5B,GAE5B,EAMA2p5B,EAAgBto5B,UAAUir5B,eAAiB,SAAUts5B,GACjD,IAAI0jN,EAAQ5gN,KACRmiB,EAASjlB,EAAIA,EAAEu8D,aAAUwT,EACzBpkD,EAAS7oB,KAAKgf,QAAQi+N,MACtBurZ,GAAax3d,GAAkBnoJ,IAAWw4sB,GAAex4sB,GACzD6ivB,GAAoB16lB,GAAkBnoJ,IAAW++uB,GAAkB/+uB,GACnE2w3B,EAAUx54B,KAAK44B,OAAOoF,cAAc,MAAO,CAC3C9xB,UAAW,iBACX4J,GAAI0ynB,EAAYkjI,EAAmB,YAAc7ivB,EAAS,eAE9D7oB,KAAKy54B,OAASz54B,KAAK44B,OAAOoF,cAAc,MAAO,CAC3C9xB,UAAW,aACX4J,GAAI0ynB,EAAYkjI,EAAmB,WAAa7ivB,EAAS,aAEzD7oB,KAAKgf,QAAQ2vqB,oBACOp5pB,SAASpgB,cAAc,yDAC7BoC,YAAYvX,KAAKy54B,QAG/Bz54B,KAAK44B,OAAO6gC,QAAQliD,YAAYvX,KAAKy54B,QAEzCz54B,KAAKu/0B,OAAS,IAAI99J,GAAO,CACrBxljB,OAAQj8H,KAAKstrB,kBAAkB,gBAC/Bl/S,SAAS,EACTq7gB,aAAczp5B,KAAKqn5B,aAAa954B,KAAKvN,MACrCunrB,eAAe,EACf/uqB,OAAQxY,KAAK44B,OAAOpgB,OACpBisqB,eAAe,EACftiqB,OAAQoT,SAASwK,KAEjBwyB,SAAS,EACTw7a,UAAW/te,KAAK44B,OAAOm1c,UACvBp/V,KAAM,WAEF,IADA,IAAIvN,EAAO,GAAGxgI,MAAMb,KAAK6gN,EAAM2+nB,OAAO9lxB,QAAQhsC,iBAAiB,wCACtDtwB,EAAI,EAAGA,EAAIikI,EAAKtjI,OAAQX,IAAK,CAClC,IAAI624B,EAAW5ywB,EAAKjkI,GAAGmpC,SAAS,GAAGnxB,cAAc,cAC7Cu04B,EAAetoxB,EAAKjkI,GACnBgY,cAAc,6BAA4C,cAAE,GACtC,YAAvBu04B,EAAa5q5B,OAA8C,eAAvB4q5B,EAAa5q5B,OAC1B,WAAvB4q5B,EAAa5q5B,OAA6C,cAAvB4q5B,EAAa5q5B,MAChDk14B,EAAwB,cAAE,GAAY,SAAI,EAErCA,IAAahjuB,GAAkBgjuB,EAAS5j4B,aAAa,eAC1D4j4B,EAAwB,cAAE,GAAY,SAAI,EAElD,CACA,IAAIpr3B,EAAMg4L,EAAM2+nB,OAAO9lxB,QAAQtkD,cAAc,yBAC7C,GAAIyrM,EAAM5hM,QAAQ6J,OAAOm+oB,eAAgB,CACrC,IAAI2iP,EAAkBtoL,GAAezghB,EAAM5hM,QAAQ6J,OAAOo0N,OACtD2qhB,GAAkBhnjB,EAAM5hM,QAAQ6J,OAAOo0N,OAASr8B,EAAM5hM,QAAQ6J,OAAOo0N,MACrEm5c,EAAkBx1e,EAAMhoL,OAAO4ud,SAA4D,kBAAzC5mS,EAAM5hM,QAAQ6J,OAAOm+oB,eAEvEqvB,EAAez1e,EAAMhoL,OAAO09pB,eAAiB11e,EAAMhoL,OAAO09pB,cAAcC,eAExE31e,EAAMhoL,OAAO09pB,cAAcC,cAAc/uM,QACzC4uM,GAAmBC,EACnBz1e,EAAMhoL,OAAO49pB,iBAAgB,WACzB5tqB,EAAIzT,cAAc,IAAMw04B,EAAkB,mBAAmB/6oB,OACjE,IAGAhmP,EAAIzT,cAAc,IAAMw04B,EAAkB,mBAAmB/6oB,OAErE,CAIJ,EACAn5I,MAAOz1H,KAAKqn5B,aAAa954B,KAAKvN,MAC9BsiI,QAAStiI,KAAK4p5B,cAAcr84B,KAAKvN,KAAMmiB,EAAQ0G,GAC/Cm3C,QAAS,CAAC,CACF5pD,MAAOpW,KAAKs54B,eAAe/r4B,KAAKvN,KAAM6oB,GACtCg8pB,YAAa,CACTrgX,QAASxkU,KAAKstrB,kBAAkB,YAAa/oZ,WAAW,EACxD11R,SAAU7O,KAAK44B,OAAO/pB,SAAW,gBAAuB7O,KAAK44B,OAAO/pB,SAAW,iBAGvF,CACIuH,MAAOpW,KAAKqn5B,aAAa954B,KAAKvN,MAC9B6krB,YAAa,CAAErgX,QAASxkU,KAAKstrB,kBAAkB,gBAC3Cz+qB,SAAU7O,KAAK44B,OAAO/pB,SAAW,oBAA2B7O,KAAK44B,OAAO/pB,SAAW,sBAE/F21T,QAASg1kB,EACTj24B,MAAO,IACPs+qB,kBAAmB,CAAEjY,OAAQ,QAC7B/6pB,SAAU7O,KAAK44B,OAAO/pB,SAAW7O,KAAK44B,OAAO/pB,SAAW,KAG5D7O,KAAKu/0B,OAA4B,kBAAI,EACrCv/0B,KAAK4qtB,yBACL5qtB,KAAKy54B,OAAO7w4B,aAAa,aAAc5I,KAAKstrB,kBAAkB,2BAC9DttrB,KAAK8m5B,UAAUjm2B,QAAQ7gD,KAAKu/0B,QAC5Bv/0B,KAAKu/0B,OAAOzg0B,SAAS9e,KAAKy54B,OAC9B,EACAoN,EAAgBto5B,UAAUqstB,uBAAyB,WAC/C,GAAI5qtB,KAAKgf,QAAQ2vqB,mBAAoB,CACjC,IAAIk7N,EAAmBt03B,SAASpgB,cAAc,4BAC1C004B,GACAA,EAAiB1l5B,UAAU0C,OAAO,2BAEtC7G,KAAKu/0B,OAAOv/wB,QAAU,CAAC,CAAC,GACxBhgE,KAAKu/0B,OAAOtjtB,YAAShvD,EACrBjtE,KAAKu/0B,OAAOnq0B,SAAW,CAAEhI,EAAG,GAAI6hB,EAAG,IACnCjvB,KAAKu/0B,OAAOp9zB,OAASoT,SAASpgB,cAAc,yDAC5CnV,KAAKu/0B,OAAOh80B,MAAQ,OACpBvD,KAAKu/0B,OAAOnxc,SAAU,EACtBpuY,KAAKu/0B,OAAOh4J,eAAgB,CAChC,CACJ,EAKAs/N,EAAgBto5B,UAAU8o5B,aAAe,WACrCrn5B,KAAK44B,OAAOolE,OAAO/2F,GAA0B,CAAC,IACzCjH,KAAK44B,OAAO4ud,SAAWxnf,KAAK44B,OAAOuupB,aAA0Cl6mB,IAAhCjtE,KAAK44B,OAAOu2pB,iBAC1DC,GAAuBpvrB,KAAK44B,OAAQ,CAAC,mBAEzC54B,KAAK8p5B,cAAc9p5B,KAAK8m5B,WACxBjg5B,GAAO7G,KAAKy54B,QACZz54B,KAAK44B,OAAOolE,OAAO/2F,GAA0B,CAAC,EAClD,EACA4/4B,EAAgBto5B,UAAUqr5B,cAAgB,SAAUzn4B,EAAQ0G,GAGxD,GAFA7oB,KAAK+p5B,mBAAmB5n4B,EAAQ0G,GAChC7oB,KAAKu/0B,OAAO9lxB,QAAQp1D,MAAMf,KAAO,MAC5BtD,KAAKgf,QAAQ2vqB,mBAGb,CACD,IACInrrB,EADU+xB,SAASpgB,cAAc,gDAChB6xU,aAAe,EACpChnV,KAAKu/0B,OAAO9lxB,QAAQp1D,MAAMlB,IAAMK,EAAS,IAC7C,MANIxD,KAAKu/0B,OAAO9lxB,QAAQp1D,MAAMlB,IAAM,OAO/BnD,KAAKgf,QAAQ2vqB,oBAAsBzxN,GAAQK,UAAY54d,OAAO+hC,WAAa,MAC5E1mC,KAAKu/0B,OAAO9lxB,QAAQp1D,MAAMd,MAAQ,OAEtCvD,KAAK44B,OAAOolE,OhK/KgB,yBgK+KsB,CAAEn1E,OAAQA,EAAQ8kmB,OAAQ3tnB,KAAKojrB,YACjFpjrB,KAAKu/0B,OAAO/h0B,OACZyivB,GAAiBjgwB,KAAK44B,OAAO6gC,QAASz5D,KAAKu/0B,OAAO9lxB,QAAQv1D,cAC9D,EACA2i5B,EAAgBto5B,UAAUwr5B,mBAAqB,SAAU5n4B,EAAQ0G,GAC7D,IAAI2q3B,EAAgBxz4B,KAAKu/0B,OAAO9lxB,QAAQtkD,cAAc,mBAClD604B,EAAYhq5B,KAAK44B,OAAOoF,cAAc,MAAO,CAAErf,UAAW3e,KAAKstrB,kBAAkB,iBAAkBphrB,UAAW,qBAClHsn4B,EAAcj83B,YAAYyy4B,GAE1B,IAAIC,EAAWjq5B,KAAK44B,OAAOoF,cAAc,MAAO,CAAErf,UAAW3e,KAAKgf,QAAQgjH,YAAa91H,UAAW,oBAClGsn4B,EAAcj83B,YAAY0y4B,GAC1Bjq5B,KAAK254B,eAAe9w3B,EAAQ2q3B,EAChC,EAMAqT,EAAgBto5B,UAAU+64B,eAAiB,SAAUrixB,GACjD,IAOIizxB,EAPA1hR,GAAax3d,GAAkB/5C,IAAQoqmB,GAAepqmB,GACtDy0oB,GAAoB16lB,GAAkB/5C,IAAQ2woB,GAAkB3woB,GAChEkzxB,EAAW3hR,EAAYkjI,EAAmBz0oB,EAC1C63V,EAAS9ud,KAAKy54B,OAAOtk4B,cAAc,IAAMg14B,EAAW,mBAAmBlnb,cAAc,GACrFmnb,EAAYpq5B,KAAKy54B,OAAOtk4B,cAAc,IAAMg14B,EAAW,kBAAkBlnb,cAAc,GACvFonb,EAASrq5B,KAAKy54B,OAAOtk4B,cAAc,IAAMg14B,EAAW,oBAAoBlnb,cAAc,GACtFqnb,EAAYtq5B,KAAKy54B,OAAOtk4B,cAAc,IAAMg14B,EAAW,mBAAmBlnb,cAAc,GAElE,WAAtBjje,KAAKgf,QAAQvY,OAEbyj5B,EADelq5B,KAAKy54B,OAAOtk4B,cAAc,IAAMg14B,EAAW,eAAelnb,cAAc,GAC9DlvM,SAE7B,IACI5yE,EADWnhN,KAAKy54B,OAAOtk4B,cAAc,IAAMg14B,EAAW,wBAAwBlnb,cAAc,GACtElvM,QAAU,MAAQ,KACvB,OAAjBs2nB,EAAOvr5B,QACPqiN,EAAY,MAEhBnhN,KAAK24vB,eAAe34vB,KAAKgf,QAAQi+N,MAAOmtqB,EAAUtr5B,MAAOgwd,EAAOhwd,MAAOqiN,EAAW+osB,EAAelq5B,KAAKgf,QAAQgonB,aAAcsjR,EAAUxr5B,MAAOur5B,EAAOvr5B,OACpJkB,KAAKqn5B,cACT,EAgBAR,EAAgBto5B,UAAUo6vB,eAAiB,SAAUv0W,EAAWmmgB,EAAevvH,EAAY75kB,EAAW8lb,EAAWD,EAAcwjR,EAAgBvvH,GAC3I,IAGI7uG,EAHAn1jB,EAAMj3H,KAAK44B,OAAOw5pB,iBAAmBpyrB,KAAK44B,OAAOw5pB,iBAAiBhuS,GAAapkZ,KAAKgf,QAAQ6J,OAC5Fo0N,EAAQj9O,KAAKinqB,gBAAgBhwiB,GAAOA,EAAImwiB,gBAAkBhjR,EAC1D+nS,EAAQ,GAER9hjB,EAAM,CACN37E,SAAU1uD,KAAMigE,QAASjgE,KAAK24vB,eAAgBhoE,KAAMvsS,EAAWwsS,KAAM25N,EAAe15N,KAAMmqG,EAAYlqG,KAAM3ve,EAC5G4ve,KAAM9pD,EAAW+pD,KAAMhqD,EAAcyzO,KAAM+vC,EAAgB9vC,KAAMz/E,EAAan6c,QAAQ,GAG1F,GADA9gV,KAAK44B,OAAOolE,OAAO/2F,GAAoBojI,IACnCA,EAAIy2M,OAAR,CAGAqrW,EAAMxurB,KAAK,CACPs/O,MAAOA,EACP97B,UAAWA,EACX8lb,UAAWA,EACXD,aAAcA,EACd7okB,SAAUos1B,EACVzr5B,MAAOurI,EAAIwmjB,KACXpqrB,KAAMzG,KAAKgf,QAAQvY,OAEvB2lrB,EAAa,IAAIllD,GAAUjqZ,EAAOstqB,EAAc9l5B,cAAe4lI,EAAIwmjB,MAAO5pD,EAAWD,GAChFh2d,GAAkBiqnB,IAAiBjqnB,GAAkBw5uB,KACtDr+N,EAAMxurB,KAAK,CACPs/O,MAAOA,EACP97B,UAAWA,EACX8lb,UAAWA,EACXD,aAAcA,EACd7okB,SAAUqs1B,EACV1r5B,MAAOurI,EAAIqwuB,KACXj02B,KAAMzG,KAAKgf,QAAQvY,OAEvB2lrB,EAAaA,EAAW,GAAKjre,GAAW87B,EAAOutqB,EAAe/l5B,cAAew2xB,GAAch0J,EAAWD,IAE1G,IAAI57jB,EAAO,CACP42I,OAAQ,YAAasqe,iBAAkBH,EAAOlvc,MAAOj9O,KAAKgf,QAAQi+N,MAClEuvc,YAAaJ,EAAYmB,gBAAiBpB,GAE1CnsrB,KAAKinqB,gBAAgBhwiB,GACrBj3H,KAAKksrB,iBAAiB9gnB,EAAM+gnB,EAAOC,GAGnCpsrB,KAAKgf,QAAQihD,QAAQmL,EA/BzB,CAiCJ,EAEAy70B,EAAgBto5B,UAAUg14B,iBAAmB,SAAU1q3B,EAAQigG,EAAO23hB,EAAW/X,EAAYgzL,GACzF,IAAI+uF,EAAezq5B,KAAK44B,OAAOoF,cAAc,KAAM,CAAE9xB,UAAW,gBAAiBwmC,MAAO,CAAEk/S,KAAM,SAChG9oO,EAAMvxG,YAAYkz4B,GAClB,IAAIC,EAAW1q5B,KAAK44B,OAAOoF,cAAc,KAAM,CAAE9xB,UAAW,gBAC5Du+4B,EAAalz4B,YAAYmz4B,GACzB,IAAI5W,EAAU9z4B,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,mBACxDs8nB,GAAax3d,GAAkBnoJ,IAAWw4sB,GAAex4sB,GACzD6ivB,GAAoB16lB,GAAkBnoJ,IAAW++uB,GAAkB/+uB,GACnEkr3B,EAAY/z4B,KAAK44B,OAChBoF,cAAc,QAAS,CAAEloB,GAAI0ynB,EAAYkjI,EAAmBjrH,EAAY53nB,EAAS43nB,IACtFqzP,EAAQv83B,YAAYw83B,GACpB2W,EAASnz4B,YAAYu83B,GACrB,IAAIrkN,EAAOzvrB,KAAKgf,QAAQvY,KAAO,WAC3Bkt4B,EAAiB3z4B,KAAKqz4B,sBAAsB,GAAK5jN,GACrDzvrB,KAAKyz4B,SAAWE,EAChB,IAAIC,EAAgB5z4B,KAAK6z4B,gBAAgB7z4B,KAAKgf,QAAQ6J,OAAQ6/mB,EAAYgzL,GAEtEivF,EAAW,GACX3q5B,KAAK+6X,YACL4vhB,EAAW3q5B,KAAK+6X,SAAS1sX,KAAKzN,MAAM,GAAI,MACvBZ,KAAKstrB,kBAAkB,kBACpCsmN,EAAgBl4E,EAAUivF,OAAW190B,GAErC090B,IAAa3q5B,KAAKstrB,kBAAkB,aACpCsmN,EAAgB5z4B,KAAKstrB,kBAAkBouI,EAAU,qBAAuB,qBAGhF,IAAIzksB,EAAMj3H,KAAKgf,QAAQ6J,OACnBkq3B,EAAW,IAAIv/O,GAAa9xpB,GAAO,CACnCghlB,WAAYixT,EACZlilB,OAAQ,CAAEpjT,KAAM,OAAQvP,MAAO,SAC/BuP,KAAMul4B,EACN7la,UAAW/te,KAAK44B,OAAOm1c,UACvBl/d,SAAU7O,KAAK44B,OAAO/pB,SAAW7O,KAAK44B,OAAO/pB,SAAW,MACzDooH,EAAIz5H,OAAOwvB,SACdhtB,KAAK8m5B,UAAUjm2B,QAAQky1B,GACvB,IAAIthyB,EAAM,CAAE,KAAQzxG,KAAKi/0B,aAAa1x0B,KAAKvN,MAAO,OAAUA,KAAK4q5B,oBAAoBr94B,KAAKvN,OAM1F,OALA4rwB,GAAsBmoI,EAAUj+3B,GAAI,CAACuvrB,GAAeA,IAAkB5zlB,EAAKzxG,MAC3E+y4B,EAAS1l4B,iBAAiBg4rB,GAAkBrlsB,KAAK8rwB,cAAcioI,EAAUj+3B,IAAIuvrB,KAC7E0tM,EAAS1l4B,iBAAiBg4rB,GAAiBrlsB,KAAK8rwB,cAAcioI,EAAUj+3B,IAAIuvrB,KAC5E0tM,EAASj03B,SAASi13B,GAEX,CAAE0W,aAAcA,EAActs1B,SADtBn+D,KAAKm74B,iBAAiBvH,GAEzC,EACAiT,EAAgBto5B,UAAUss5B,4BAA8B,SAAUntsB,GAC1DA,EAAUjkJ,QAAQt1D,UAAUC,SAAS,kBACrC2nwB,GAAoBrujB,EAAW,CAAC2nf,GAAeA,IAAkBrlsB,MAE5D09M,EAAUjkJ,QAAQt1D,UAAUC,SAAS,mBAC1C2nwB,GAAoBrujB,EAAW,CAACz2M,GAAuBo+rB,IAAiBrlsB,KAEhF,EACA6m5B,EAAgBto5B,UAAU0g1B,aAAe,SAAU7zwB,GAC/CA,EAAKo0L,MAAM/lM,QAAQp1D,MAAMmkD,QAAUxoD,KAAKojrB,UAAU56nB,OAAS,GAAG7nD,UAClE,EACAkm5B,EAAgBto5B,UAAUqs5B,oBAAsB,SAAUx/0B,GAClDA,EAAK3R,QAAQ3jD,GAAGqiC,SAAS,kBACzBn4C,KAAKuq5B,cAAgBn/0B,EAAKtsE,MAAM6B,WAGhCX,KAAKwq5B,eAAiBp/0B,EAAKtsE,MAAM6B,WAErC,IAAIqz4B,EAAW5o0B,EAAK3R,QAAQqna,QAAQ,kBAAkBx6b,SAAS,GAAGnxB,cAAc,cAC5Eu04B,EAAet+0B,EAAK3R,QAAuB,cAAE,GACtB,YAAvBiw1B,EAAa5q5B,OAA8C,eAAvB4q5B,EAAa5q5B,OAC1B,WAAvB4q5B,EAAa5q5B,OAA6C,cAAvB4q5B,EAAa5q5B,MAChDk14B,EAAwB,cAAE,GAAY,SAAI,EAEpChjuB,GAAkBgjuB,EAAS5j4B,aAAa,eAC9C4j4B,EAAwB,cAAE,GAAY,SAAI,EAElD,EAKA6S,EAAgBto5B,UAAU05vB,gBAAkB,WACxC,MAAO,CAAEsyJ,cAAevq5B,KAAKuq5B,cAAeC,eAAgBxq5B,KAAKwq5B,eAAgBvtqB,MAAOj9O,KAAKgf,QAAQi+N,MACzG,EACA4pqB,EAAgBto5B,UAAU484B,iBAAmB,SAAU9s4B,GACnD,IAAI8l4B,EAAgB,IAAIhgQ,GAAYn0oB,KAAKyz4B,UAAU/sQ,cAAa,IAAIhB,IAAQ/viB,MAAM,OAAQ,QAAStnF,IACnG,OAAQ2iK,GAAkBmjuB,EAAc,IAA+B,GAAzBA,EAAc,GAAGr14B,KACnE,EACA+n5B,EAAgBto5B,UAAUs14B,gBAAkB,SAAU58wB,EAAKyxgB,EAAYgzL,GACnE,IAAIv9vB,EAYJ,OAVIA,EADAuqkB,GAAcA,EAAW5qoB,OAAS,EACD,IAAtB4qoB,EAAW5qoB,OACjB49zB,EAAUhzL,EAAW,GAAGvqkB,SAAWuqkB,EAAW,GAAGvqkB,SACjDu9vB,EAAUhzL,EAAW,GAAGvqkB,cAAW8O,EAEnCyuvB,GAAwB,WAAbzksB,EAAIxwH,OAAsBwwH,EAAIz5H,OAAO2gE,SAC1C,aAGAu9vB,EAAUzksB,EAAIz5H,OAAO2gE,UAAY,aAAU8O,EAEnDjtE,KAAK8q5B,gBAAgB3s1B,EAChC,EACA0o1B,EAAgBto5B,UAAUus5B,gBAAkB,SAAU3s1B,GAClD,IAAIg20B,EAAgB,IAAIhgQ,GAAYn0oB,KAAKyz4B,UAAU/sQ,cAAa,IAAIhB,IAAQ/viB,MAAM,QAAS,QAASx3B,IACpG,OAAQ6yG,GAAkBmjuB,EAAc,IAA8B,GAAxBA,EAAc,GAAG9l4B,IACnE,EACAw44B,EAAgBto5B,UAAUo74B,eAAiB,SAAU9w3B,EAAQ2q3B,GACzD,IAAI9qQ,EAAa1ooB,KAAKyqrB,kBAAkB,GAAK5hqB,GACzCigG,EAAQ9oH,KAAK44B,OAAOoF,cAAc,QAAS,CAAE9xB,UAAW,eAAgBwmC,MAAO,CAAEk/S,KAAM,UAC3F4hjB,EAAcj83B,YAAYuxG,GAC1B,IAAI2oR,EAAWzxY,KAAK44B,OAAOoF,cAAcqnqB,IACzC5zT,EAAS9yX,UAAY,+DACrBmqG,EAAMvxG,YAAYk6X,GAElB,IAAIg+S,EAAOzvrB,KAAKuz4B,iBAAiB1q3B,EAAQigG,EAAO,iBAAkB4/gB,GAAY,GAC9E1ooB,KAAKuq5B,cAAgB96N,EAAKtxnB,SAE1Bn+D,KAAK654B,gBAAgBhx3B,EAAQ4mqB,EAAM,kBAAmB/mD,GAAY,GAClE,IAAIvnb,EAAYnhN,KAAK44B,OAAOoF,cAAc,KAAM,CAAE9xB,UAAW,mBAAoBwmC,MAAO,CAAEk/S,KAAM,SAChG9oO,EAAMvxG,YAAY4pM,GAElBnhN,KAAK+q5B,kBAAkBli4B,EAAQs4L,EAAWunb,GAE1C+mD,EAAOzvrB,KAAKuz4B,iBAAiB1q3B,EAAQigG,EAAO,kBAAmB4/gB,GAAY,GAC3E1ooB,KAAKwq5B,eAAiB/6N,EAAKtxnB,SAE3Bn+D,KAAK654B,gBAAgBhx3B,EAAQ4mqB,EAAM,mBAAoB/mD,GAAY,EACvE,EACAm+Q,EAAgBto5B,UAAUws5B,kBAAoB,SAAUli4B,EAAQqkT,EAAIw7T,GAChE,IAAI1nW,EAAKhhS,KAAK44B,OAAOoF,cAAc,KAAM,CAAE9xB,UAAW,eAAgBwmC,MAAO,CAAE,QAAW,OAC1Fw6R,EAAG31T,YAAYypR,GACf,IAAIgqnB,EAAWhr5B,KAAK44B,OACfoF,cAAc,MAAO,CAAE9xB,UAAW,kBAAmBwmC,MAAO,CAAE,MAAS,2BACxE81lB,GAAax3d,GAAkBnoJ,IAAWw4sB,GAAex4sB,GACzD6ivB,GAAoB16lB,GAAkBnoJ,IAAW++uB,GAAkB/+uB,GACnEoi4B,EAAgBjr5B,KAAK44B,OAAOoF,cAAc,QAAS,CAAEloB,GAAI0ynB,EAAYkjI,EAAmB,uBAAyB7ivB,EAAS,uBAAwB6pB,MAAO,CAAE,KAAQ,WACnKw42B,EAAiBlr5B,KAAK44B,OAAOoF,cAAc,QAAS,CAAEloB,GAAI0ynB,EAAYkjI,EAAmB,wBAA0B7ivB,EAAS,wBAAyB6pB,MAAO,CAAE,KAAQ,WAE1Ks42B,EAASzz4B,YAAY0z4B,GACrBD,EAASzz4B,YAAY2z4B,GACrBlqnB,EAAGzpR,YAAYyz4B,GACW,WAAtBhr5B,KAAKgf,QAAQvY,MACbzG,KAAKmr5B,gBAAgBti4B,EAAQqkT,EAAIlsC,EAAI,cAAe0nW,GAGxD,IAAI0iR,EAAW,IAAIvQ,IAAY,CAC3B7l4B,MAAOhV,KAAKstrB,kBAAkB,OAC9BzsrB,KAAM,UAAWkzR,SAAS,EAC1Bg6M,UAAW/te,KAAK44B,OAAOm1c,UACvBl/d,SAAU7O,KAAK44B,OAAO/pB,SAAW7O,KAAK44B,OAAO/pB,SAAW,KAE5D7O,KAAK8m5B,UAAUjm2B,QAAQuq2B,GAEvB,IAAIC,EAAU,IAAIxQ,IAAY,CAC1B7l4B,MAAOhV,KAAKstrB,kBAAkB,MAC9BzsrB,KAAM,UACNkte,UAAW/te,KAAK44B,OAAOm1c,UACvBl/d,SAAU7O,KAAK44B,OAAO/pB,SAAW7O,KAAK44B,OAAO/pB,SAAW,KAE5D7O,KAAK8m5B,UAAUjm2B,QAAQwq2B,GAEP,SADF3iR,GAAoC,IAAtBA,EAAW5qoB,OAAe4qoB,EAAW,GAAGvnb,UAAY,QAE5EiqsB,EAASr3nB,SAAU,EACnBs3nB,EAAQt3nB,SAAU,IAGlBs3nB,EAAQt3nB,SAAU,EAClBq3nB,EAASr3nB,SAAU,GAGvBq3nB,EAASts4B,SAASms4B,GAClBI,EAAQvs4B,SAASos4B,GACjBE,EAAS3x1B,QAAQ27P,mBAAmBjxT,UAAU2C,IAAI,oBAClDuk5B,EAAQ5x1B,QAAQ27P,mBAAmBjxT,UAAU2C,IAAI,kBACrD,EAEA+/4B,EAAgBto5B,UAAUur5B,cAAgB,SAAUnn0B,GAChD,IAAK,IAAIw3I,EAAK,EAAGysQ,EAAajkZ,EAAUw3I,EAAKysQ,EAAW9oe,OAAQq8N,IAAM,CAClE,IAAInrJ,EAAM43Z,EAAWzsQ,GACjBnrJ,IAAQA,EAAIkzZ,cACZlie,KAAK6q5B,4BAA4B770B,GACjCA,EAAIvL,UAEZ,CACJ,EAEAoj1B,EAAgBto5B,UAAUs74B,gBAAkB,SAAUhx3B,EAAQ4mqB,EAAM/qD,EAAWgE,EAAYgzL,GACvF,IAAI58zB,EAAQkB,KAAK44B,OAAOoF,cAAc,KAAM,CAAE9xB,UAAW,iBACzDujrB,EAAKg7N,aAAalz4B,YAAYzY,GAC9B,IAAI0poB,GAAax3d,GAAkBnoJ,IAAWw4sB,GAAex4sB,GACzD6ivB,GAAoB16lB,GAAkBnoJ,IAAW++uB,GAAkB/+uB,GACnEkx3B,EAAW/54B,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,oBACzDo/4B,EAAgBtr5B,KAAKgf,QAAQwuqB,gBAAgBnwqB,MAAK,SAAU45G,GAAO,OAAOpuG,IAAWouG,EAAIgmH,KAAO,IAChGsuqB,EAAiBvr5B,KAAKgf,QAAQwuqB,gBAAgBhwrB,QAAO,SAAUy5H,GAAO,OAAOA,EAAIgmH,QAAUp0N,CAAQ,IACvG,GAAI7oB,KAAKgf,QAAQ6J,OAAOm+oB,eAAgB,CACpC,IAAIv1pB,EAAO,CAAC,EACR+54B,EAAYxr5B,KAAKgf,QAAQ6J,OACzByi4B,GAAiB5mR,IACjBjznB,EAAOzR,KAAKyr5B,mBAAmB/mR,EAAWjznB,EAAM+54B,EAAW9iR,EAAY6iR,IAE3E,IAAIn1N,EAAkBp2rB,KAAK44B,OAAO4ud,SAA2D,kBAAxCxnf,KAAKgf,QAAQ6J,OAAOm+oB,eAErEqvB,EAAer2rB,KAAK44B,OAAO09pB,eAAiBt2rB,KAAK44B,OAAO09pB,cAAcC,eAEtEv2rB,KAAK44B,OAAO09pB,cAAcC,cAAc/uM,QACxCs5N,EAAS9gtB,KAAK44B,OAAO6gC,QAAQ3jD,GAAK014B,EAAUt40B,IAAM,iBACtD,GAAIkjnB,GAAmBC,EACnBr2rB,KAAKgf,QAAQ6J,OAAOw9oB,mBAApBrmqB,CAAwCyR,EAAMzR,KAAK44B,OAAQ,iBAAkBkorB,EAAQ,KAAM,KAAMi5L,OAEhG,CACD,IAAItg1B,EAAUz5D,KAAKgf,QAAQ6J,OAAOw9oB,mBAApBrmqB,CAAwCyR,EAAMzR,KAAK44B,OAAQ,iBAAkBkorB,GAC3FvxB,GAAewqN,EAAUtg1B,EAC7B,CACI28nB,GAAmBC,EACnBr2rB,KAAK44B,OAAO49pB,iBAAgB,WACxBujN,EAAS5k4B,cAAc,SAASW,GAAK0ynB,EAAYkjI,EAAmBhnI,EAAY77mB,EAAS67mB,EACzF5loB,EAAMyY,YAAYwi4B,EACtB,MAIC/54B,KAAK44B,OAAOmqO,UAAYg3oB,EAASzz2B,SAAS,GAAKyz2B,EAAS5k4B,cAAc,UAAUW,GAAK0ynB,EAClFkjI,EAAmBhnI,EAAY77mB,EAAS67mB,EAC5C5loB,EAAMyY,YAAYwi4B,GAE1B,KACK,CACD,IAAI2R,EAAa1r5B,KAAK44B,OACjBoF,cAAc,QAAS,CAAEloB,GAAI0ynB,EAAYkjI,EAAmBhnI,EAAY77mB,EAAS67mB,IACtFq1Q,EAASxi4B,YAAYm04B,GACrB5s5B,EAAMyY,YAAYwi4B,GAClB,IAAIG,OAAU,EACV/4rB,OAAY,EACZunb,GAAcA,EAAW5qoB,OAAS,GAK9BkzK,GADJkpuB,GAHA/4rB,EAAkC,IAAtBunb,EAAW5qoB,OAClB49zB,EAAUhzL,EAAW,GAAKA,EAAW,GACrCgzL,EAAUhzL,EAAW,QAAKz7jB,IACPk0I,EAAUhjJ,WAAasxnB,EAAKtxnB,SAAYgjJ,EAAUriN,WAAQmuE,KAE9Eit0B,OAAUjt0B,GAGN,CACR,OAAUjtE,KAAK2r5B,mBAAmBp+4B,KAAKvN,MACvC,OAAUA,KAAK4r5B,qBAAqBr+4B,KAAKvN,MACzC,KAAQA,KAAK6r5B,WAAWt+4B,KAAKvN,MAC7B,SAAYA,KAAK6r5B,WAAWt+4B,KAAKvN,MACjC,SAAYA,KAAK8r5B,eAAev+4B,KAAKvN,OAEnCA,KAAKgf,QAAQvY,MAAMzG,KAAKgf,QAAS6J,EAAQ6i4B,EAAYxR,EAASl64B,KAAK44B,OAAOm1c,UACpF,CACJ,EACA84a,EAAgBto5B,UAAUkt5B,mBAAqB,SAAU/mR,EAAWjznB,EAAM+54B,EAAW9iR,EAAY6iR,GAC7F,IAAIQ,EAA0B,oBAAdrnR,EAAkC,EAAI,EACtD,GAAkB,oBAAdA,GAAmC6mR,EAAezt5B,OAAS,EAAG,CAC9D2T,EAAO,CAAEoX,OAAQ6/mB,aAAsBxooB,MAAQwooB,EAAWznoB,SAAS8q5B,EAAUpr5B,WAAY,KAAO+noB,GAChG,IAAIwP,EAAOl4oB,KAAKgf,QAAQ6J,OAAO0jqB,YAAcg/N,EAAezt5B,OAAS,EACtB,IAA1CkC,KAAKgf,QAAQ6J,OAAO0jqB,WAAWzurB,OAAe,EAAI,EAAKiu5B,EAC5Dt64B,EAAKzR,KAAKgf,QAAQi+N,OAASuuqB,EAAUpkP,gBACjCpnqB,KAAKgf,QAAQ6J,OAAO0jqB,WAAWtrrB,SAASi3oB,EAAKv3oB,WAAY,KAAK6q5B,EAAUpkP,iBACxEmkP,EAAetq5B,SAASi3oB,EAAKv3oB,WAAY,KAAK7B,MAC9CkB,KAAKgf,QAAQoopB,kBACb31pB,EAAKzR,KAAKgf,QAAQoopB,iBAAmBpnqB,KAAKgf,QAAQ6J,OAC7C0jqB,WAAWtrrB,SAASi3oB,EAAKv3oB,WAAY,KAAK6q5B,EAAUpkP,iBAEjE,CACA,OAAO31pB,CACX,EAEAo14B,EAAgBto5B,UAAU4s5B,gBAAkB,SAAUti4B,EAAQqkT,EAAI+5T,EAAWvC,EAAWgE,GACpF,IAAIsjR,EAAehs5B,KAAK44B,OAAOoF,cAAc,MAAO,CAAE9xB,UAAW,sBAAuBwmC,MAAO,CAAE,MAAS,2BACtG81lB,GAAax3d,GAAkBnoJ,IAAWw4sB,GAAex4sB,GACzD6ivB,GAAoB16lB,GAAkBnoJ,IAAW++uB,GAAkB/+uB,GACnEoj4B,EAAiBjs5B,KAAK44B,OAAOoF,cAAc,QAAS,CAAEloB,GAAI0ynB,EAAYkjI,EAAmBhnI,EAAY77mB,EAAS67mB,EAAWhylB,MAAO,CAAE,KAAQ,cAC9Is52B,EAAaz04B,YAAY004B,GACzBhlR,EAAU1vnB,YAAYy04B,GACtB,IAAI9R,KAAUxxQ,GAAcA,EAAW5qoB,OAAS,KAC3C4qoB,GAAoC,IAAtBA,EAAW5qoB,OAAe4qoB,EAAW,GAAGzB,UAAYyB,EAAW,GAAGzB,WAGjFpgM,EAAW,IAAI+1Y,GAAS,CACxB5n0B,MAAOhV,KAAKstrB,kBAAkB,aAC9Bv/M,UAAW/te,KAAK44B,OAAOm1c,UAAWh6M,QAASmmnB,EAC3Crr4B,SAAU7O,KAAK44B,OAAO/pB,SAAW7O,KAAK44B,OAAO/pB,SAAW,KAE5D7O,KAAK8m5B,UAAUjm2B,QAAQgmZ,GAEvBA,EAAS/nb,SAASmt4B,EACtB,EAEApF,EAAgBto5B,UAAUst5B,WAAa,SAAU7s4B,EAAS6J,EAAQoiQ,EAAY6jM,EAAQrwE,GAClF,IAAItjY,EAAS+tvB,GAAoBlqvB,EAAQ7D,OAAQ6D,EAAQvY,OAASuY,EAAQ7D,OACtE6kc,EAAa,IAAIje,IAAWrgc,GAAO,CACnCyZ,OAAQA,EACRtM,SAAU7O,KAAK44B,OAAO/pB,SAAW,kBAAyB7O,KAAK44B,OAAO/pB,SAAW,iBACjFm5W,YAAahoX,KAAKstrB,kBAAkB,+BACpC/prB,MAAO,OACPwqe,UAAWtvF,EACX3/Y,MAAO,IAAIkZ,KAAK82c,GAChBt2c,OAAQxY,KAAK44B,OAAOpgB,QACrBwG,EAAQ6J,OAAOrrB,OAAOwvB,SACzBhtB,KAAK8m5B,UAAUjm2B,QAAQm/Z,GACvBA,EAAWlhc,SAASmsQ,EACxB,EAEA47nB,EAAgBto5B,UAAUut5B,eAAiB,SAAU9s4B,EAAS6J,EAAQoiQ,EAAY6jM,EAAQrwE,GACtF,IAAItjY,EAAS+tvB,GAAoBlqvB,EAAQ7D,OAAQ6D,EAAQvY,MACrDi/lB,EAAiB,IAAIwuQ,IAAexy2B,GAAO,CAC3CyZ,OAAQA,EACRtM,SAAU7O,KAAK44B,OAAO/pB,SAAW,kBAAyB7O,KAAK44B,OAAO/pB,SAAW,iBACjFm5W,YAAahoX,KAAKstrB,kBAAkB,+BACpC/prB,MAAO,OACPwqe,UAAWtvF,EACX3/Y,MAAO,IAAIkZ,KAAK82c,GAChBt2c,OAAQxY,KAAK44B,OAAOpgB,QACrBwG,EAAQ6J,OAAOrrB,OAAOwvB,SACzBhtB,KAAK8m5B,UAAUjm2B,QAAQ6kjB,GACvBA,EAAe5mlB,SAASmsQ,EAC5B,EACA47nB,EAAgBto5B,UAAU2t5B,eAAiB,SAAUhv5B,GACjDA,EAAEkf,OzJrMH,SAA8BA,GAGjC,IAFA,IAAIqzN,EAAO,CAAC,EACR7vJ,EAAM,GACDziF,EAAI,EAAGA,EAAIif,EAAOte,OAAQX,IACzBif,EAAOnb,SAAS9D,EAAEwD,WAAY,OAAQ8uO,IACxC7vJ,EAAIjiF,KAAKye,EAAOnb,SAAS9D,EAAEwD,WAAY,KAAKA,YAC5C8uO,EAAKrzN,EAAOnb,SAAS9D,EAAEwD,WAAY,MAAQ,GAGnD,OAAOi/E,CACX,CyJ2LmBus0B,CAAqBjv5B,EAAEkf,OACtC,EAEAyq4B,EAAgBto5B,UAAUqt5B,qBAAuB,SAAU5s4B,EAAS6J,EAAQoiQ,EAAY6jM,EAAQrwE,GAC5F,IAAI2tgB,EAAiB,IAAIpsE,GAAet+0B,GAAO,CAC3CyZ,OAAQ6D,EAAQ7D,OAChB6sW,YAAahoX,KAAKstrB,kBAAkB,2BACpCv/M,UAAWtvF,EACX3/Y,MAAOgwd,EACPt2c,OAAQxY,KAAK44B,OAAOpgB,OACpB3J,SAAU7O,KAAK44B,OAAO/pB,SAAW7O,KAAK44B,OAAO/pB,SAAW,MACzDmQ,EAAQ6J,OAAOrrB,OAAOwvB,SACzBhtB,KAAK8m5B,UAAUjm2B,QAAQur2B,GACvBA,EAAett4B,SAASmsQ,EAC5B,EAEA47nB,EAAgBto5B,UAAUot5B,mBAAqB,SAAU3s4B,EAAS6J,EAAQoiQ,EAAY6jM,EAAQrwE,GAC1F,IAAI4tgB,EAASrs5B,KAAKgf,QAAQ6J,OACtBo+oB,EAAkBjnqB,KAAKinqB,gBAAgBolP,GACvC3pU,EAAaukF,EAAkBolP,EAAO3pU,WAAa1jkB,EAAQ0jkB,WAC3DjxR,EAAS,CAAE3yT,MAAOmoqB,EAAkBolP,EAAOjlP,gBAAkBv+oB,GAC7D+u3B,EAAS,IAAItB,IAAa504B,GAAO,CACjCghlB,WAAYA,aAAsByxD,GAAczxD,EAAa,IAAIyxD,GAAYzxD,GAC7EjxR,OAAQA,EACRxuE,MAAOjjP,KAAK8yoB,WACZqL,UAAW,YACX3loB,OAAQxY,KAAK44B,OAAOpgB,OACpB3J,SAAU7O,KAAK44B,OAAO/pB,SAAW,kBAAyB7O,KAAK44B,OAAO/pB,SAAW,iBACjFg/b,UAAU,EACV7lF,YAAahoX,KAAKstrB,kBAAkB,2BACpCv/M,UAAWtvF,EACXpwY,KAAMygd,GACPu9b,EAAO7u5B,OAAOwvB,SACjB,GAAI01jB,GAAc,WAAYA,EAAY,CACtC,IAAIiwG,EAASC,GAAa,CAAE/lb,YAAa,uBAAyB7sQ,KAAK8yoB,YACvE9yoB,KAAK44B,OAAOwmc,QAAQn4d,GAAwB0rrB,EAAOxujB,OACzCwujB,EAAOl9C,SACbhne,QAAQlvI,MAAK,SAAUriC,GACvB064B,EAAOl1T,WAAa,IAAIyxD,GAAYj3oB,EACxC,GACJ,CACA8C,KAAK8m5B,UAAUjm2B,QAAQ+21B,GACvB,IAAInmyB,EAAM,CAAE,eAAkBzxG,KAAKss5B,iBAAiB1U,EAAQ/u3B,GAAS,MAAS7oB,KAAKy34B,QAAQG,EAAQ/u3B,EAAQ7J,EAASisQ,IACpH2gf,GAAsB3gf,EAAWn1Q,GAAI,CAAC7O,GAAuBo+rB,IAAiB5zlB,EAAKzxG,MACnF434B,EAAOvq4B,iBAAiBg4rB,GAAgBrlsB,KAAK8rwB,cAAc7gf,EAAWn1Q,IAAIuvrB,KAC1EuyM,EAAOvq4B,iBAAiBpG,GAAuBjH,KAAK8rwB,cAAc7gf,EAAWn1Q,IAAI7O,KACjF2w4B,EAAO943B,SAASmsQ,EACpB,EACA47nB,EAAgBto5B,UAAU+t5B,iBAAmB,SAAU1U,EAAQ/u3B,GAC3D,OAAO,SAAU3rB,GACb,IAAIsroB,GAAax3d,GAAkBnoJ,IAAWw4sB,GAAex4sB,GAC7D3rB,EAAEkf,OAASlf,EAAEkf,OAAO5e,QAAO,SAAUwxE,EAAKriD,EAAO8nF,GAC7C,OAAOA,EAAI9yG,KAAI,SAAUypwB,GACrB,OAAO5iI,EAAY83H,GAA4Bs3I,EAAOnmlB,OAAO3yT,MAAOsswB,GAC9DA,EAAUwsI,EAAOnmlB,OAAO3yT,MAClC,IAAG4F,QAAQ8joB,EAAY83H,GAA4Bs3I,EAAOnmlB,OAAO3yT,MAAOkwE,GACpEA,EAAI4o0B,EAAOnmlB,OAAO3yT,UAAY6tB,CACtC,GACJ,CACJ,EACAk63B,EAAgBto5B,UAAUk54B,QAAU,SAAUG,EAAQ/u3B,EAAQ7J,EAASisQ,GACnE,IAAIrqE,EAAQ5gN,KACZ,OAAO,WACH,IAAIwooB,GAAax3d,GAAkBnoJ,IAAWw4sB,GAAex4sB,GACzD6ivB,GAAoB16lB,GAAkBnoJ,IAAW++uB,GAAkB/+uB,GACnE0j4B,EAAc/jR,EAAYkjI,EAAmB7ivB,EACjD+u3B,EAAOl6O,WAAa98c,EAAM64rB,OAAOtk4B,cAAc,IAAMo34B,GAChDthoB,EAAWn1Q,KAAQy24B,EAAc,kBAC9B,iBACA,oBAAoBtpb,cAAc,GAAGnke,MAC7C844B,EAAOnzQ,WAA8B,WAAjBzlnB,EAAQvY,OACvBm6M,EAAM64rB,OAAOtk4B,cAAc,IAAMo34B,EAAc,eAAetpb,cAAc,GAAGlvM,QAEpF6jnB,EAAOl6O,WAAc1sf,GAAkB4muB,EAAOl6O,YAC1C,QADwDk6O,EAAOl6O,UAEvE,CACJ,EACOmpP,CACX,CAv/BqC,CAu/BnCt8N,ICthCErpc,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAoBzCqrqB,IAA6B,SAAUhosB,GAWvC,SAASgosB,EAAY5z3B,EAAQ60pB,EAAgByK,EAAgBk7M,GACzD,IAAIxyrB,EAAQ4D,EAAOzkN,KAAKC,KAAM44B,EAAQ60pB,EAAgByK,IAAmBl4rB,KAIzE,OAHA4gN,EAAMhoL,OAASA,EACfgoL,EAAM65rB,cAAe,EACrB75rB,EAAM6rsB,gBAAkB,IAAI5F,IAAgBju3B,EAAQw62B,GAC7CxyrB,CACX,CA0DA,OA1EAsgC,IAAUsrqB,EAAahosB,GAuBvBgosB,EAAYju5B,UAAUklE,QAAU,WAC5BzjE,KAAKys5B,gBAAgBvhT,aACzB,EACAshT,EAAYju5B,UAAU8ulB,WAAa,SAAUrukB,GACzChf,KAAKys5B,gBAAgBp/T,WAAWrukB,EACpC,EACAwt4B,EAAYju5B,UAAU2smB,YAAc,WAChClrmB,KAAKys5B,gBAAgBvhT,cACjBlrmB,KAAKy64B,cACLz64B,KAAK44B,OAAOolE,OAAO/2F,GAAqB,CAAC,EAEjD,EACAul5B,EAAYju5B,UAAUkstB,kBAAoB,SAAUxzlB,GAChDj3H,KAAKys5B,gBAAgBp9N,YAAYp4jB,EACrC,EACAu1xB,EAAYju5B,UAAUmttB,sBAAwB,SAAUt2D,GAChDA,EACAp1pB,KAAKys5B,gBAAgBpF,eAGrBrn5B,KAAKkrmB,aAEb,EACAshT,EAAYju5B,UAAUgutB,kBAAoB,SAAUnhpB,GAC3CA,EAAKgqlB,eAKNp1pB,KAAKys5B,gBAAgBnT,eAAelu0B,EAAK6rD,IAAIgmH,QAJ7Cj9O,KAAKys5B,gBAAgBn9N,iBACrBtvrB,KAAKys5B,gBAAgBvhT,cAK7B,EACAshT,EAAYju5B,UAAUo6vB,eAAiB,SAAUv0W,EAAWmmgB,EAAevvH,EAAY75kB,EAAW8lb,EAAWD,EAAcwjR,EAAgBvvH,GACvIj7xB,KAAKys5B,gBAAgB9zJ,eAAev0W,EAAWmmgB,EAAevvH,EAAY75kB,EAAW8lb,EAAWD,EAAcwjR,EAAgBvvH,EAClI,EAKAuxH,EAAYju5B,UAAU05vB,gBAAkB,WACpC,OAAOj4vB,KAAKys5B,gBAAgBx0J,iBAChC,EAOAu0J,EAAYju5B,UAAUyke,cAAgB,WAClC,MAAO,aACX,EACOwpb,CACX,CA5EiC,CA4E/BhS,KC5EE1y4B,IAAwB,WASxB,SAASA,EAAO8wB,EAAQ60pB,EAAgByK,GACpCl4rB,KAAKmhN,UAAY,MACjBnhN,KAAK0s5B,gBAAiB,EACtB1s5B,KAAK2s5B,gBAAiB,EACtB3s5B,KAAKsue,SAAU,EACftue,KAAK+xC,OAAS,CAAC,EACf/xC,KAAK6y4B,UAAY,CAAC,EAClB7y4B,KAAK4s5B,SAAW,CAAC,EACjB5s5B,KAAK6s5B,eAAiB,GACtB7s5B,KAAKyG,KAAO,CAAE,KAAQqy4B,IAAoB,SAAY0B,IAAgB,MAASgS,KAE/Exs5B,KAAKsgvB,gBAAkB,CACnBl8uB,SAAU,WAAYkkE,SAAU,WAAYosF,MAAO,QAASozb,YAAa,cAAey4J,mBAAoB,qBAC5Gv4J,SAAU,WAAYw4J,gBAAiB,kBAAmBC,SAAU,WAAY72mB,WAAY,aAAc4tgB,SAAU,WACpHzme,OAAQ,SAAU2vkB,QAAS,UAAW/oG,KAAM,QAEhD33oB,KAAK8s5B,eAAiB,CAAE7vqB,MAAO,GAAIilM,QAAQ,GAE3Clib,KAAK+s5B,gBAAkB,CAAC,IAAK,IAAK,KAClC/s5B,KAAKgt5B,gBAAkB,CAAC,IAAK,IAAK,KAClCht5B,KAAKutrB,gBAAkB,CAAC,EACxBvtrB,KAAK44B,OAASA,EACd54B,KAAKytrB,eAAiBA,EACtBztrB,KAAKk4rB,eAAiBA,EACtBl4rB,KAAKqN,mBACLrN,KAAK46qB,qBACT,CAuxCA,OA/wCA9yqB,EAAOvJ,UAAUupE,OAAS,SAAU5qE,GAChC,IAAIupoB,GAASrjK,UAAU,gBAAiBlme,GAAxC,CAGA,IAAI07rB,EAAO54rB,KAAK44B,OAGhB,GAFA54B,KAAKoppB,KAAOpppB,KAAKk4rB,eAAewF,WAAW,gBAC3C19rB,KAAKit5B,8BACmC,cAApCjt5B,KAAK44B,OAAO60pB,eAAehnrB,MACvBmyrB,EAAKz3jB,QAAQrjI,OAAQ,CACrB,IAAIov5B,EAAWlt5B,KAAK44B,OAAO6gC,QAAQtkD,cAAc,gBAC7C+34B,GACArm5B,GAAOqm5B,GAEX,IAAIzzM,EAAc,IAAIjZ,GAAYxgsB,KAAKk4rB,eAAgBz0C,GAAS37oB,OAAQ8wrB,GACvD54rB,KAAKk4rB,eAAewF,WAAW,uBACrCuoB,gBAAgBxiE,GAAS37oB,OAAQ,IAAIyq4B,IAAmBvy4B,KAAK44B,OAAQ54B,KAAKk4rB,iBACrFl4rB,KAAKymqB,eAAiBzmqB,KAAKk4rB,eAAewF,WAAW,kBACrD+b,EAAYhgpB,QAAUz5D,KAAK44B,OAAOoF,cAAc,KAAM,CAAE9xB,UAAW,cAAewmC,MAAO,CAAEk/S,KAAM,SACjG,IAAIhpU,EAAM5oB,KAAK8lsB,cACfl9qB,EAAInX,KAAOzR,KAAK+xC,OAChB/xC,KAAK44B,OAAOo2qB,mBAAmB75rB,cAAc,8BAA8BoC,YAAYkisB,EAAYhgpB,SACnG,IAAI0z1B,EAAUnt5B,KAAK44B,OAAO6gC,QAAQtkD,cAAc,oBAEhD,GADAnV,KAAKy5D,QAAUggpB,EAAY3xoB,OAAOl/C,EAAKgwqB,EAAKK,aAAc,KAAM,KAAMwgB,EAAYhgpB,SAC9Ez5D,KAAKy5D,QAAQhsC,iBAAiB,iBAAiB3vB,SAC9CkC,KAAKy5D,QAAQhsC,iBAAiB,iBAAiB3vB,QAAUkC,KAAKy5D,QAAQhsC,iBAAiB,uBAAuB3vB,QAE/G,IADA,IAAIkjS,EAAKhhS,KAAKy5D,QAAQhsC,iBAAiB,sCAC9BtwB,EAAI,EAAGA,EAAI6jS,EAAGljS,OAAQX,IAC3B6jS,EAAG//R,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU2C,IAAI,gBAC7Cq8rB,GAA6Bnia,EAAG//R,SAAS9D,EAAEwD,WAAY,KAAU,GAAJxD,EAAQ6C,KAAK44B,OAAOm1c,UAAW,QAGpG4jO,GAAqB3xsB,KAAKy5D,SAC1B,IAAI7D,EAAS51D,KAAKy5D,QAAQtkD,cAAc,uBACpCygD,IACAA,EAAO1pD,UAAY,gCAEnBih5B,IACIA,EAAQhp5B,UAAUC,SAAS,gBAC3B+o5B,EAAQjh5B,UAAY,6CAGpBih5B,EAAQjh5B,UAAY,gCAG5B,IAAIqvsB,EAAS,GAAG36sB,MAAMb,KAAKC,KAAKy5D,QAAQpgC,uBAAuB,uBAC3DkirB,EAAOz9sB,QACPy9sB,EAAOA,EAAOz9sB,OAAS,GAAGqG,UAAU2C,IAAI,0BAE5C9G,KAAK85e,aACL95e,KAAK44B,OAAOolE,OAAO/2F,GAAqB,CAAEimsB,KAAM,UACpD,CA/CJ,CAiDJ,EAQAplsB,EAAOvJ,UAAU0lwB,iBAAmB,SAAU3iG,GAC1CthqB,KAAKsotB,yBAAyBnB,eAAiB7lD,EAC/CthqB,KAAKsotB,yBAAyBgC,qBAAqBtqtB,KAAK6oB,OAC5D,EACA/gB,EAAOvJ,UAAUy9qB,6BAA+B,SAAU5wmB,GACtDprE,KAAKsotB,yBAAyBtmgB,OAAS52I,EAAK42I,MAChD,EAQAl6M,EAAOvJ,UAAUsstB,eAAiB,SAAU5zlB,GACxC,IAAIxwH,EAAOwwH,EAAIz5H,OAAOiJ,MAAQzG,KAAK44B,OAAO60pB,eAAehnrB,KACzDzG,KAAKgitB,aAAe,IAAIhitB,KAAKyG,KAAK,GAAKA,GAAMzG,KAAK44B,OAAQ54B,KAAK44B,OAAO60pB,eAAgBztrB,KAAKk4rB,eAAgBl4rB,KAAKiz4B,gBAAiBjz4B,KACrI,EAOA8H,EAAOvJ,UAAUklE,QAAU,WACvB,IAAI65pB,EAAct9tB,KAAK44B,OAAO6gC,QAC9B,GAAK6jqB,IAAiBA,EAAYnotB,cAAc,IAAMkwrB,KAAyBi4B,EAAYnotB,cAAc,IAAMkwrB,KAA/G,CAaA,GAVIrlsB,KAAKgitB,cACLhitB,KAAKgitB,aAAav+oB,UAGjBzjE,KAAK44B,OAAO+oc,aAAe3he,KAAK44B,OAAOspc,aAAgBlie,KAAK44B,OAAOi5jB,iBACpE7xlB,KAAKytrB,eAAetsjB,QAAU,IAElCnhI,KAAKot5B,kBACLpt5B,KAAK64D,sBACL74D,KAAKu9qB,eAC4B,cAA7Bv9qB,KAAKytrB,eAAehnrB,MAAwBzG,KAAKytrB,eAAeoiE,sBAEhE,IADA,IAAIw9J,EAAe,GAAGzs5B,MAAMb,KAAKC,KAAKy5D,QAAQpgC,uBAAuB,wBAC5Dl8B,EAAI,EAAGA,EAAIkw5B,EAAavv5B,OAAQX,IACjCkw5B,EAAaps5B,SAAS9D,EAAEwD,WAAY,KAAKsie,cAAc,IACvDoqb,EAAaps5B,SAAS9D,EAAEwD,WAAY,KAAKsie,cAAc,GAAGx/Z,UAItE,GAAIzjE,KAAKy5D,QAAS,CACVz5D,KAAKy5D,QAAQv1D,eACb2C,GAAO7G,KAAKy5D,SAEhB,IAAI6z1B,EAAmBtt5B,KAAK44B,OAAOo2qB,mBAAmB75rB,cAAc,gBAChEm44B,GACAzm5B,GAAOym5B,EAEf,CA3BA,CA4BJ,EACAxl5B,EAAOvJ,UAAUq8qB,oBAAsB,WAC/B56qB,KAAKk4rB,gBACLl4rB,KAAKk4rB,eAAey0B,wBAAwB3stB,KAAMA,KAAK44B,OAAOojrB,iBAAkBp4D,GAAuBskE,SAE/G,EACApgtB,EAAOvJ,UAAUunsB,YAAc,WAC3B,IACIl9qB,EAAM,IAAI0xZ,GADA,CAAC,GAGf,OADA1xZ,EAAIkyG,MAAQ96H,KAAKymsB,gBACV79qB,CACX,EACA9gB,EAAOvJ,UAAUkosB,cAAgB,WAE7B,IAAI3rkB,EAAQ,GACZ,GAAI96H,KAAK44B,OAAO+soB,cACZ,IAAK,IAAIrmqB,EAAI,EAAG6sE,EAAMnsE,KAAK44B,OAAOmhqB,cAAc54jB,QAAQrjI,OAAQwB,EAAI6sE,EAAK7sE,IACrEw7H,EAAMn9H,KAAKqC,KAAKgmsB,aAAa,CAAC,EAAGviD,GAASs2D,gBAG9C/5sB,KAAK44B,OAAO0rqB,gBAAkBtksB,KAAK44B,OAAOyrqB,YAC1CvpkB,EAAMn9H,KAAKqC,KAAKgmsB,aAAa,CAAC,EAAGviD,GAASu2D,eAE1Ch6sB,KAAK44B,OAAOirqB,iBAAmD,UAAhC7jsB,KAAK44B,OAAO4tqB,iBAC3C1rkB,EAAMn9H,KAAKqC,KAAKgmsB,aAAa,CAAC,EAAGviD,GAASo2D,eAE9C,IAAK,IAAI1/e,EAAK,EAAGjiC,EAAKl4L,KAAK44B,OAAOqgqB,aAAc9+d,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAClE,IAAI8te,EAAQ/vgB,EAAGiiC,GACfr/F,EAAMn9H,KAAKqC,KAAKgmsB,aAAaiC,GACjC,CAIA,OAHIjosB,KAAK44B,OAAOirqB,iBAAmD,UAAhC7jsB,KAAK44B,OAAO4tqB,iBAC3C1rkB,EAAMn9H,KAAKqC,KAAKgmsB,aAAa,CAAC,EAAGviD,GAASo2D,eAEvC/+kB,CACX,EACAhzH,EAAOvJ,UAAUynsB,aAAe,SAAUn9qB,EAAQ+0qB,GAC9C,IAAI/opB,EAAM,CACN,QAAWhsB,EAAO0pC,QAClB,YAAc,EACd,MAAS,GACT,OAAU1pC,EACV,SAAY+0qB,GAAsBn6C,GAAS37oB,OAC3C,WAAc,CAAEwY,MAAOtgB,KAAKoppB,KAAKvtK,YAAY,oBAEjD,OAAO,IAAIshN,GAAKtopB,EACpB,EAOA/sC,EAAOvJ,UAAUske,YAAc,WAC3B,IAAI5rW,EAAMj3H,KAAK6oB,OAAOo+oB,kBAAoBjnqB,KAAK44B,OAAOqiqB,eAAej7rB,KAAK6oB,OAAOqqD,KAC7ElzE,KAAK44B,OAAOw5pB,iBAAiBpyrB,KAAKokZ,WACtCpkZ,KAAKiitB,eAAiBjitB,KAAKut5B,4BAA4Bt2xB,GACvDj3H,KAAKkitB,iBAAmBlitB,KAAKytrB,eAAetsjB,QAAQnhI,KAAKiitB,gBAGzD,IAFA,IAAIurM,EAAWtt5B,MAAMC,QAAQH,KAAKlB,OAASkB,KAAKlB,MAAQ,CAACkB,KAAKlB,OAC1D4we,EAAa1ve,KAAK44B,OAAO8pjB,WAAW8wD,SAAWxzoB,KAAK44B,OAAO8pjB,WAAW8wD,QAAQxwK,cAAgBhje,KAAK44B,OAAO8pjB,WAAW8wD,QAAQxwK,qBAAkB/1Z,EAC1I9vE,EAAI,EAAGgvE,EAAMqh1B,EAAS1v5B,OAAQX,EAAIgvE,EAAKhvE,IAAK,CACjD,IAAI8/O,EAAQhmH,EAAIgwiB,kBAAoBhwiB,EAAImwiB,gBAAkBpnqB,KAAKokZ,UAC3DurS,EAAmC,aAAlB3vrB,KAAKm+D,SAC1Bn+D,KAAKyt5B,oBAAsB,CACvBxwqB,MAAOA,EAAO/pK,IAAK+jD,EAAI/jD,IAAKyknB,aAAc1gkB,EAAIgwiB,kBAAmB9omB,SAAUn+D,KAAKm+D,SAChFr/D,MAAO0u5B,EAASvs5B,SAAS9D,EAAEwD,WAAY,KAAMwgN,UAAWnhN,KAAKmhN,UAC7D8lb,UAAWjnoB,KAAKinoB,UAAWD,aAAchnoB,KAAKgnoB,aAAc6xH,kBAAmB,CAAC,EAAGC,eAAgB,CAAC,GAExG,IAAInsuB,EAAQ3sB,KAAKut5B,4BAA4Bt2xB,GAO7C,GANItqG,GAAS,IAAMzsB,MAAMC,QAAQH,KAAKlB,OAClCkB,KAAKytrB,eAAetsjB,QAAQlgI,SAAS0rB,EAAMhsB,WAAY,KAAOX,KAAKyt5B,oBAGnEzt5B,KAAKytrB,eAAetsjB,QAAQxjI,KAAKqC,KAAKyt5B,sBAErCzt5B,KAAK6oB,OAAOo+oB,mBAAqBj2f,GAAkBhxK,KAAKlB,SAA6B,UAAlBkB,KAAKm+D,UACvD,aAAlBn+D,KAAKm+D,WAA4C,iBAAfuxa,GAAgD,mBAAfA,EAAkC,CACrG,IAAK,IAAIs1J,EAAM,EAAGA,EAAMhloB,KAAKytrB,eAAetsjB,QAAQrjI,OAAQknoB,IACpDhloB,KAAKytrB,eAAetsjB,QAAQ,GAAK6jgB,GAAK/nZ,QAAUA,GACI,UAAnDj9O,KAAKytrB,eAAetsjB,QAAQ,GAAK6jgB,GAAK7mkB,UAA2E,aAAnDn+D,KAAKytrB,eAAetsjB,QAAQ,GAAK6jgB,GAAK7mkB,WAClG6yG,GAAkBhxK,KAAKytrB,eAAetsjB,QAAQ,GAAK6jgB,GAAKlmoB,SAC3DkB,KAAKytrB,eAAetsjB,QAAQl9H,OAAO+goB,EAAK,GACxCA,GAAY,GAGH,WAAb/tgB,EAAIxwH,MACJzG,KAAKytrB,eAAetsjB,QAAQxjI,KAAK,CAC7Bs/O,MAAOA,EAAO+pZ,aAAchnoB,KAAKgnoB,aAAcC,UAAWjnoB,KAAKinoB,UAC/D9okB,SAAUn+D,KAAKm+D,SAAUgjJ,UAAWwue,EAAiB,MAAQ,KAAM7wrB,MAAO,KAGlFkB,KAAKytrB,eAAetsjB,QAAQxjI,KAAK,CAC7Bs/O,MAAOA,EAAO+pZ,aAAchnoB,KAAKgnoB,aAAcC,UAAWjnoB,KAAKinoB,UAC/D9okB,SAAUn+D,KAAKm+D,SAAUgjJ,UAAWwue,EAAiB,MAAQ,KAAM7wrB,WAAOmuE,IAE9EjtE,KAAKytrB,eAAetsjB,QAAQxjI,KAAK,CAC7Bs/O,MAAOA,EAAO+pZ,aAAchnoB,KAAKgnoB,aAAcC,UAAWjnoB,KAAKinoB,UAC/D9okB,SAAUn+D,KAAKm+D,SAAUgjJ,UAAWwue,EAAiB,MAAQ,KAAM7wrB,MAAO,MAElF,CACJ,CAEAkB,KAAKytrB,eAAetsjB,QAAUnhI,KAAKytrB,eAAetsjB,QAClDnhI,KAAK44B,OAAOypc,UAChB,EACAv6d,EAAOvJ,UAAUgv5B,4BAA8B,SAAUt2xB,GAErD,IADA,IAAIp2F,EAAO7gC,KAAKytrB,eAAetsjB,QACtBhkI,EAAI,EAAGgvE,EAAMtrC,EAAK/iC,OAAQX,EAAIgvE,EAAKhvE,IACxC,GAAI0jC,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKuyE,MAAQ+jD,EAAI/jD,KAAQ+jD,EAAIgwiB,mBACtDjnqB,KAAK44B,OAAOqiqB,eAAehkkB,EAAI/jD,KAAK+pK,QAAUhmH,EAAImwiB,gBACrD,OAAOjqqB,EAGf,OAAQ,CACZ,EAQA2K,EAAOvJ,UAAUmupB,iBAAmB,SAAUxvpB,GAC1C,IAAIkuE,EAAQprE,KAAK0t5B,SAMb,CACA7gpB,YAAa,YAAapmQ,KAAMQ,IAPR,CACxBwm5B,oBAAqBzt5B,KAAKyt5B,oBAE1BE,uBAAyB38uB,GAAkBhxK,KAAK6oB,aAA8BokD,EAApBjtE,KAAK6oB,OAAOo0N,MAEtE97G,QAASnhI,KAAKytrB,eAAetsjB,QAAS0rI,YAAa,YAAapmQ,KAAMQ,IAI1EjH,KAAK44B,OAAOwmc,QAAQn4d,GAAuBvF,GAAOxE,EAAGkuE,IACrDprE,KAAK0t5B,UAAW,CACpB,EACA5l5B,EAAOvJ,UAAUu7e,WAAa,WAC1Bpb,GAAa53d,IAAI9G,KAAK44B,OAAOo2qB,mBAAoB,QAAShvsB,KAAK4t5B,sBAAuB5t5B,KAC1F,EACA8H,EAAOvJ,UAAUg/qB,aAAe,WAC5B7+M,GAAa73d,OAAO7G,KAAK44B,OAAOo2qB,mBAAoB,QAAShvsB,KAAK4t5B,sBACtE,EACA9l5B,EAAOvJ,UAAUqvsB,kBAAoB,SAAU1wsB,GACvCA,EAAE6qE,SAAW/nE,KAAKgje,iBAAmB9le,EAAEokqB,SACvCthqB,KAAK44B,OAAOw2qB,iBAAiBjrsB,UAAU2C,IAAI,gBAC3C9G,KAAK8nE,SAEb,EACAhgE,EAAOvJ,UAAUsv5B,mBAAqB,WAE7B78uB,GAAkBhxK,KAAK44B,OAAOmpc,cAAcpO,gBAC7C3zd,KAAK44B,OAAOigC,oBAAoB5xD,GAAwBjH,KAAK8t5B,sBAEhC,cAA7B9t5B,KAAKytrB,eAAehnrB,MAAwBzG,KAAKytrB,eAAetsjB,QAAQrjI,SACvEkC,KAAK44B,OAAOkqrB,wBAAwBhltB,QACrCkC,KAAKy0qB,YAEb,EACA3sqB,EAAOvJ,UAAUk2qB,WAAa,WAE1B,GADAz0qB,KAAK44B,OAAOyW,IAAIpoC,GAAqBjH,KAAKy0qB,YACtCz0qB,KAAK44B,OAAOqgqB,aAAan7rB,QAAUkC,KAAKytrB,eAAetsjB,QAAQrjI,OAAQ,CACvE,IAAI86rB,EAAO54rB,KAAK44B,OAChB54B,KAAK0s5B,gBAAiB,EACtB1s5B,KAAKw0qB,aAAc,EACnB,IAAK,IAAIr6c,EAAK,EAAGjiC,EAAK0ggB,EAAKnL,eAAetsjB,QAASg5F,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CACrE,IAAIljG,EAAMihE,EAAGiiC,GACbn6N,KAAK24vB,eAAe1hoB,EAAIgmH,MAAOhmH,EAAI94D,SAAU84D,EAAIn4H,MAAOm4H,EAAIkqF,UAAWlqF,EAAIgwgB,UAAWhwgB,EAAI+vgB,aAAc/vgB,EAAI4hoB,kBAAmB5hoB,EAAI6hoB,eAAgB7hoB,EAAI0gkB,aAC3J,CACA33rB,KAAKw0qB,aAAc,EACnBx0qB,KAAKot5B,kBACLpt5B,KAAK0s5B,gBAAiB,CAC1B,CACJ,EAKA5k5B,EAAOvJ,UAAU8O,iBAAmB,WAC5BrN,KAAK44B,OAAOspc,cAGhBlie,KAAK44B,OAAOsI,GAAGj6B,GAA4BjH,KAAK46qB,oBAAqB56qB,MACrEA,KAAK44B,OAAOsI,GAAGj6B,GAAiBjH,KAAK4tsB,kBAAmB5tsB,MACxDA,KAAK44B,OAAOsI,GAAGj6B,GAAuBjH,KAAK0spB,iBAAkB1spB,MAC7DA,KAAK44B,OAAOsI,GAAGj6B,GAA4BjH,KAAK2ie,kBAAmB3ie,MACnEA,KAAK44B,OAAOsI,GAAGj6B,GAAmBjH,KAAKqsuB,aAAcrsuB,MACrDA,KAAK44B,OAAOsI,GAAGj6B,GAA8BjH,KAAKo2qB,sBAAuBp2qB,MACzEA,KAAK44B,OAAOsI,GAAGj6B,GAAwBjH,KAAK8nE,OAAQ9nE,MACpDA,KAAK44B,OAAOsI,GAAGj6B,GAAqBjH,KAAKy0qB,WAAYz0qB,MACrDA,KAAK44B,OAAOsI,GAAGj6B,GAAwBjH,KAAK43qB,gBAAiB53qB,MAC7DA,KAAK44B,OAAOsI,GAAGj6B,GAAqCjH,KAAKg8qB,6BAA8Bh8qB,MACvFA,KAAK+t5B,gBAAkB/t5B,KAAK6wf,aAAatjf,KAAKvN,MAC9C0+d,GAAa53d,IAAIyuB,SAAU,QAASv1B,KAAK+t5B,gBAAiB/t5B,MAC1D0+d,GAAa53d,IAAI9G,KAAK44B,OAAO6gC,QAAS,YAAaz5D,KAAKgu5B,iBAAkBhu5B,MAC1EA,KAAK44B,OAAOsI,GAAGj6B,GAAmBjH,KAAKiu5B,iBAAkBju5B,MACzDA,KAAK44B,OAAOsI,GAAGj6B,GAAcjH,KAAKku5B,uBAAwBlu5B,MAC1DA,KAAK44B,OAAOsI,GAAG,uBAAwBlhC,KAAKy0qB,WAAYz0qB,MACxDA,KAAK44B,OAAOsI,GAAGj6B,GAA0BjH,KAAK6wf,aAAc7wf,MAC5DA,KAAK44B,OAAOsI,GAAGj6B,GAAgBjH,KAAKyjE,QAASzjE,MAC7CA,KAAK8t5B,qBAAuB9t5B,KAAK6t5B,mBAAmBtg5B,KAAKvN,MACzDA,KAAK44B,OAAOvrB,iBAAiBpG,GAAwBjH,KAAK8t5B,sBAC9D,EAKAhm5B,EAAOvJ,UAAUs6D,oBAAsB,WACnC6la,GAAa73d,OAAO0uB,SAAU,QAASv1B,KAAK+t5B,iBAC5Crvb,GAAa73d,OAAO7G,KAAK44B,OAAO6gC,QAAS,YAAaz5D,KAAKgu5B,kBACvDhu5B,KAAK44B,OAAOspc,cAGhBlie,KAAK44B,OAAOyW,IAAIpoC,GAA4BjH,KAAK46qB,qBACjD56qB,KAAK44B,OAAOyW,IAAIpoC,GAAiBjH,KAAK4tsB,mBACtC5tsB,KAAK44B,OAAOyW,IAAIpoC,GAAuBjH,KAAK0spB,kBAC5C1spB,KAAK44B,OAAOyW,IAAIpoC,GAA4BjH,KAAK2ie,mBACjD3ie,KAAK44B,OAAOyW,IAAIpoC,GAAmBjH,KAAKqsuB,cACxCrsuB,KAAK44B,OAAOyW,IAAIpoC,GAA8BjH,KAAKo2qB,uBACnDp2qB,KAAK44B,OAAOyW,IAAIpoC,GAAwBjH,KAAK8nE,QAC7C9nE,KAAK44B,OAAOyW,IAAIpoC,GAAmBjH,KAAKiu5B,kBACxCju5B,KAAK44B,OAAOyW,IAAIpoC,GAAwBjH,KAAK43qB,iBAC7C53qB,KAAK44B,OAAOyW,IAAIpoC,GAAqCjH,KAAKg8qB,8BAC1Dh8qB,KAAK44B,OAAOyW,IAAIpoC,GAAcjH,KAAKku5B,wBACnClu5B,KAAK44B,OAAOyW,IAAIpoC,GAA0BjH,KAAK6wf,cAC/C7wf,KAAK44B,OAAOyW,IAAIpoC,GAAgBjH,KAAKyjE,SACzC,EACA37D,EAAOvJ,UAAUyv5B,iBAAmB,SAAU9w5B,GAC1C,GAAI8C,KAAK44B,OAAOi5jB,gBAAsD,cAApC7xlB,KAAK44B,OAAO60pB,eAAehnrB,MACzDvJ,EAAEilB,OAAO2+c,QAAQ,OAAS5je,EAAEilB,OAAO2+c,QAAQ,MAAM38d,UAAUC,SAAS,oBACpElH,EAAEilB,OAAOhe,UAAUC,SAAS,gBAAiB,CAC7C,IAAI+p5B,EAAajx5B,EAAEilB,OAAOqkU,uBAC1Bs3S,GAAMnqW,SAAS,KAAMw6nB,EAAY,SAAS,GACT,cAA7Bnu5B,KAAKytrB,eAAe5hqB,MACpB7rB,KAAK+4vB,0BAA0Bo1J,EAAWr44B,GAAGlV,MAAM,GAAI,IAE/D,CACJ,EACAkH,EAAOvJ,UAAUq5qB,gBAAkB,WAC/B53qB,KAAK8s5B,eAAe5qe,QAAS,CACjC,EAgBAp6a,EAAOvJ,UAAUo6vB,eAAiB,SAAUv0W,EAAWw0W,EAAgBtzH,EAAankb,EAAW8lb,EAAWD,EAAc6xH,EAAmBC,EAAgB7xF,GACvJ,IAEI+sD,EAFApzgB,EAAQ5gN,KACR44rB,EAAO54rB,KAAK44B,OAUhB,GARA54B,KAAK6oB,OAAS+vqB,EAAKsC,6BAA6B92S,EAAW6iR,GAC1B,cAA7BjnqB,KAAKytrB,eAAehnrB,MAAwBzG,KAAKytrB,eAAeoiE,uBAC7D7+kB,GAAkBhxK,KAAK6oB,OAAO4p3B,oBAAsBzhuB,GAAkBhxK,KAAK6oB,OAAOm+oB,kBACrF4xF,EAAiB54vB,KAAKou5B,gBAAgBhqgB,IAEnB,SAAnBw0W,GAA6BtzH,IAA6C,IAA9BA,EAAY5goB,QAAQ,OAChE4goB,EAAc,IAAMA,EAAc,KAEjCtloB,KAAK6oB,OAMV,GAHiC,cAA7B7oB,KAAKytrB,eAAehnrB,OACpButtB,EAAap7B,EAAKoW,mBAAmB75rB,cAAc,QAAWnV,KAAK6oB,OAAOo0N,MAAQ,qBAEjFjsE,GAAkBhxK,KAAK6oB,OAAOgpkB,iBAAoB7xlB,KAAK6oB,OAAOgpkB,eAInE,GAAI4gJ,GAAgB75C,GAChBA,EAAK56lB,OAAO/2F,GAAqB,CAC7BynD,SAAU1uD,KAAMigE,QAASjgE,KAAK24vB,eAAgBhoE,KAAMvsS,EAAWwsS,KAAMgoE,EAAgB/nE,KAAMvrD,EAAawrD,KAAM3ve,EAC9G4ve,KAAM9pD,EAAW+pD,KAAMhqD,EAAcyzO,KAAM5hH,EAAmB6hH,KAAM5hH,QAH5E,CAoBA,GAbA94vB,KAAKmhN,UAAYA,IAAwBjhN,MAAMC,QAAQmloB,GAAe,KAAO,OAC7EtloB,KAAKlB,MAAQwmoB,EACbtloB,KAAKinoB,UAAYA,IAAa,EAC9BjnoB,KAAKgnoB,aAAehnoB,KAAKgnoB,aAAgBh2d,GAAkBg2d,GAA+BhnoB,KAAK44B,OAAO60pB,eAAezmD,aAA1CA,EAC3EhnoB,KAAKokZ,UAAYA,EACjBpkZ,KAAKm+D,SAAWy6rB,EAEI,MADpBtzH,EAAet0d,GAAkBs0d,GAAwCA,EAAzBA,EAAY3koB,cAExD2koB,EAAc,MAEO,WAArBtloB,KAAK6oB,OAAOpiB,MAA0C,SAArBzG,KAAK6oB,OAAOpiB,OAC7CzG,KAAKinoB,WAAY,GAEjB+sF,GAA2C,cAA7Bh0tB,KAAKytrB,eAAehnrB,KAAsB,CACxD,GAAK6+nB,GAAeA,EAAYxnoB,OAAS,IAAQkC,KAAK2s5B,gBAClD3s5B,KAAKqu5B,kBAAkBru5B,KAAK6oB,OAAQy8mB,GAGpC,OAFAtloB,KAAKsu5B,gBAAmBhpR,GAAeA,EAAYxnoB,OAAS,EAAK,GAAKkC,KAAKoppB,KAAKvtK,YAAY,6BAC5F77e,KAAKot5B,kBAGLp5L,EAAWl1tB,QAAUwmoB,IACrB0uF,EAAWl1tB,MAAQwmoB,EAE3B,CACKt0d,GAAkBhxK,KAAK6oB,OAAO1N,QAO/Bnb,KAAK+xC,OAAO/xC,KAAK6oB,OAAOo0N,OAASqoZ,GANjCtloB,KAAKuu5B,kBAAkBjpR,GACnBtloB,KAAKw0qB,aAA4C,cAA7Bx0qB,KAAKytrB,eAAehnrB,OACxCuttB,EAAWl1tB,MAAQkB,KAAK+xC,OAAO/xC,KAAK6oB,OAAOo0N,SAMnD,IAAIuxqB,EAAU,CACVvxqB,MAAOj9O,KAAKokZ,UACZjjM,UAAWA,EACX8lb,UAAWA,EACXD,aAAcA,EACd7okB,SAAUn+D,KAAKm+D,SACfr/D,MAAOkB,KAAKlB,MACZ2H,KAAMzG,KAAK6oB,OAAOpiB,MAEHzG,KAAK44B,OAAO60pB,eAAetsjB,QAAQ3jI,QAAO,SAAUix5B,GACnE,OAAQA,EAAQxxqB,QAAUr8B,EAAMwjM,SACpC,IACiBtmZ,OAAS,IAAMkzK,GAAkBhxK,KAAKutrB,gBAAgBvtrB,KAAKokZ,YACxEpkZ,KAAKutrB,gBAAgBvtrB,KAAKokZ,WAAWzmZ,KAAK6w5B,GAG1Cxu5B,KAAKutrB,gBAAgBvtrB,KAAKokZ,WAAa,CAACoqgB,GAExCxu5B,KAAK0u5B,wBAAwB1u5B,KAAK6oB,OAAOo0N,QAG7Cj9O,KAAK6ie,aAvDL,MATI7ie,KAAK44B,OAAO92B,IAAI,yBAA0B,CAAE4te,WAAY1ve,KAAKgje,gBAAiBorN,WAAYpurB,KAAK6oB,OAAOs4Z,YAiE9G,EACAr5a,EAAOvJ,UAAUgw5B,kBAAoB,SAAUjpR,GAC3C,IAAI1kb,EAAQ5gN,KACR2u5B,EAAmC,SAArB3u5B,KAAK6oB,OAAOpiB,MAAwC,aAArBzG,KAAK6oB,OAAOpiB,MAA4C,aAArBzG,KAAK6oB,OAAOpiB,KAC5F,IAAIuR,KAAKstnB,GAAenjoB,WAAWmjoB,IACb,SAArBtloB,KAAK6oB,OAAOpiB,MAAwC,aAArBzG,KAAK6oB,OAAOpiB,MAA4C,aAArBzG,KAAK6oB,OAAOpiB,OAAwB6+nB,GACvGploB,MAAMC,QAAQH,KAAKlB,QAAUwmoB,EAAYtkoB,MAAM,KAAKlD,OAAS,EAC7DkC,KAAK+xC,OAAO/xC,KAAK6oB,OAAOo0N,OAAWqoZ,EAAatkoB,MAAM,KAAMW,KAAI,SAAUgxC,GAItE,MAHY,KAARA,IACAA,EAAM,MAEHiuK,EAAMgusB,qBAAqB,IAAI524B,KAAK26B,GAAMiuK,EAAM/3L,OAC3D,IAGA7oB,KAAK+xC,OAAO/xC,KAAK6oB,OAAOo0N,OAASj9O,KAAK4u5B,qBAAqBD,EAAY3u5B,KAAK6oB,OAEpF,EAEA/gB,EAAOvJ,UAAUsw5B,QAAU,SAAU53xB,GAGjC,IAFA,IAAI24V,GAAO,EACPg7Q,EAASxtuB,OAAOC,KAAM45H,GACjB95H,EAAI,EAAGA,EAAIytuB,EAAO9suB,OAAQX,IAAK,CACpC,IAAIyB,EAAMxB,OAAOC,KAAK45H,EAAI2zmB,EAAO3puB,SAAS9D,EAAEwD,WAAY,OACrC,IAAf/B,EAAId,QAA2B,QAAXc,EAAI,KACxBgxd,GAAO,EAEf,CACA,OAAOA,CACX,EACA9nd,EAAOvJ,UAAUoke,kBAAoB,SAAUzle,GAC3C,GAAIA,EAAE6qE,SAAW/nE,KAAKgje,gBAGtB,IAAK,IAAI7oQ,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKH,EAAEu/H,YAAa09F,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CACnE,IAAI7nJ,EAAO4lH,EAAGiiC,GACd,OAAQ7nJ,GACJ,IAAK,UAED,IAEIlH,EAAO,CACPqi1B,oBAAqBzt5B,KAAKyt5B,oBAAqBE,uBAAwB3t5B,KAAK6oB,OACxE7oB,KAAK6oB,OAAOo0N,WAAQhwK,EAAW+0I,OAAQ,SAAU7gF,QAASnhI,KAAKytrB,eAAetsjB,QAClF0rI,YAAa,YAAapmQ,KAAMQ,GAAoB65U,QAAQ,GAEhE,GAAI9gV,KAAK0s5B,gBAAkB1s5B,KAAK6u5B,QAAQ3x5B,EAAEu/H,WAAmB,SAAI,CAE7D,GADAz8H,KAAK44B,OAAOolE,OAAO/2F,GAAqBmkE,GACpCA,EAAK01Q,OAAQ,CACb,GAAkC,aAA7B9gV,KAAKytrB,eAAehnrB,MAAoD,UAA7BzG,KAAKytrB,eAAehnrB,KAAmB,CACnFzG,KAAKytrB,eAAetsjB,QAAWnhI,KAAK8u5B,WAAWhx5B,QAAU,EAAKkC,KAAKoitB,yBAC/DpitB,KAAK+u5B,qBACT/u5B,KAAKutrB,gBAAgBvtrB,KAAK6oB,OAAOo0N,OAASj9O,KAAKytrB,eAAetsjB,QAC9D,IAAI44uB,EAAQ/52B,KAAK44B,OAAOw5pB,iBAAiBpyrB,KAAK6oB,OAAOo0N,OACjDilZ,EAAYlioB,KAAK44B,OAAOo5jB,gBAAkB+nR,EAAM/nR,eAAiB,gBAAkB,iBACnFg9T,EAAoBhv5B,KAAK44B,OAAO2prB,uBAAuBvitB,KAAK6oB,OAAOo0N,OAClE9nO,cAAc+snB,GAC0B,IAAzClioB,KAAKoitB,yBAAyBtktB,OAC9Bkx5B,EAAkB7q5B,UAAU0C,OAAO,cAGnCmo5B,EAAkB7q5B,UAAU2C,IAAI,aAExC,MAEQkqK,GAAkBhxK,KAAKkitB,kBACvBlitB,KAAKytrB,eAAetsjB,QAAQl9H,OAAOjE,KAAKytrB,eAAetsjB,QAAQrjI,OAAS,EAAG,GAG3EkC,KAAKytrB,eAAetsjB,QAAQnhI,KAAKiitB,gBAAkBjitB,KAAKkitB,iBAGhE,MACJ,CACAlitB,KAAKiv5B,mBACLjv5B,KAAKkv5B,wBACLlv5B,KAAKot5B,kBACLpt5B,KAAKmv5B,cACT,CACA,MACJ,IAAK,sBACGjy5B,EAAEu/H,WAAW,GAAKnqD,GAClBtyE,KAAKot5B,kBAEApt5B,KAAK44B,OAAO4gqB,aACjBx5rB,KAAK44B,OAAOy/tB,sBAAsB,IAEtC,MACJ,IAAK,wBACL,IAAK,OACDr4vB,KAAK44B,OAAOkzsB,gBACZ9ruB,KAAKkv5B,wBACsB,SAAvBlv5B,KAAK44B,OAAOp1B,QACZxD,KAAK44B,OAAOy0qB,aAAa/+N,UAIzC,CACJ,EACAxme,EAAOvJ,UAAU2w5B,sBAAwB,WACrC,GAAiC,cAA7Blv5B,KAAKytrB,eAAehnrB,KAAsB,CAC1C,IAAK,IAAItJ,EAAI,EAAGA,EAAI6C,KAAKytrB,eAAetsjB,QAAQrjI,OAAQX,IAAK,CACzD6C,KAAK6oB,OAAS7oB,KAAK44B,OAAO0iqB,2BAA2Bt7rB,KAAKytrB,eAAetsjB,QAAQlgI,SAAS9D,EAAEwD,WAAY,KAAKuyE,KAC7G,IAAIoyjB,EAActloB,KAAKytrB,eAAetsjB,QAAQlgI,SAAS9D,EAAEwD,WAAY,KAAK7B,MAE1E,GADAwmoB,GAAet0d,GAAkBs0d,IAAgBA,EAAY3koB,WACxDqwK,GAAkBhxK,KAAK6oB,OAAO1N,QAG9B,CACD,IAAIvc,EAAMoB,KAAKytrB,eAAetsjB,QAAQlgI,SAAS9D,EAAEwD,WAAY,KAAKs8O,MAClEj9O,KAAK+xC,OAAO,GAAKnzC,GAAOoB,KAAKytrB,eAAetsjB,QAAQlgI,SAAS9D,EAAEwD,WAAY,KAAK7B,KACpF,MALIkB,KAAKuu5B,kBAAkBjpR,IAMvB+uH,EAAgBr0vB,KAAKov5B,oBAAoBpv5B,KAAK6oB,OAAOo0N,UAEgC,KAAjFj9O,KAAK4s5B,SAAS5s5B,KAAKytrB,eAAetsjB,QAAQlgI,SAAS9D,EAAEwD,WAAY,KAAKs8O,QAClEjsE,GAAkBhxK,KAAK4s5B,SAAS5s5B,KAAKytrB,eAAetsjB,QAAQlgI,SAAS9D,EAAEwD,WAAY,KAAKs8O,QAI5Fo3gB,EAAcv1vB,MAAQkB,KAAKytrB,eAAetsjB,QAAQlgI,SAAS9D,EAAEwD,WAAY,KAAK7B,MAH9Eu1vB,EAAcv1vB,MAAQkB,KAAK4s5B,SAAS5s5B,KAAK6oB,OAAOo0N,OAM5D,CACA,GAA2C,IAAvCj9O,KAAKytrB,eAAetsjB,QAAQrjI,OAC5B,KAAIm5H,EAAMj3H,KAAK44B,OAAOqgqB,aACtB,IAAS97rB,EAAI,EAAGA,EAAI85H,EAAIn5H,OAAQX,IAAK,CACjC,IAAIk3vB,KAAgBr0vB,KAAKov5B,oBAAoBn4xB,EAAIh2H,SAAS9D,EAAEwD,WAAY,KAAKs8O,SAChC,KAAxBo3gB,EAAcv1vB,QAC/Bu1vB,EAAcv1vB,MAAQ,UACfkB,KAAK+xC,OAAOklF,EAAIh2H,SAAS9D,EAAEwD,WAAY,KAAKs8O,OAE3D,CAPkC,CAS1C,CACJ,EACAn1O,EAAOvJ,UAAU0w5B,iBAAmB,WAChC,GAA2C,IAAvCjv5B,KAAKytrB,eAAetsjB,QAAQrjI,QAAgBkC,KAAK44B,OAAO6gC,QAAQtkD,cAAc,eAE9E,IADA,IAAIk64B,EAAkB,GAAGzu5B,MAAMb,KAAKC,KAAK44B,OAAO6gC,QAAQpgC,uBAAuB,eACtEl8B,EAAI,EAAGgvE,EAAMkj1B,EAAgBvx5B,OAAQX,EAAIgvE,EAAKhvE,IACnDky5B,EAAgBpu5B,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU0C,OAAO,aAGzE,EACAiB,EAAOvJ,UAAU6w5B,oBAAsB,SAAUn4xB,GAC7C,IACIo9nB,EADAnxiB,EAAW,QAAWjsF,EAAM,mBAKhC,OAHIisF,IAAalyC,GAAkBhxK,KAAKy5D,WACpC46rB,EAAgBr0vB,KAAKy5D,QAAQtkD,cAAc+tM,IAExCmxiB,CACX,EAKAvsvB,EAAOvJ,UAAUgyvB,cAAgB,WAC7BvwvB,KAAKkv5B,wBACLlv5B,KAAKot5B,iBACT,EAOAtl5B,EAAOvJ,UAAU4ttB,eAAiB,SAAU16Z,GACxC,IAAI7wG,EAAQ5gN,KACR6gC,EAAO6muB,GAAsB1nwB,KAAKytrB,eAAetsjB,SACrD,IAAK6vC,GAAkBygJ,GAMnB,OALAzxT,KAAKsue,SAAU,EACf78K,EAAO1zT,SAAQ,SAAUk/O,GAASr8B,EAAMm4iB,0BAA0B97gB,GAAO,EAAQ,IACjFj9O,KAAK44B,OAAOqpc,cAAc,CAAEwrN,eAAgB,CAAEtsjB,QAASnhI,KAAKytrB,eAAetsjB,WAAa,GACxFnhI,KAAK44B,OAAOsxtB,aAAa57Q,eACzBtue,KAAKsue,SAAU,GAGnB,GAAImkQ,GAAgBzyuB,KAAK44B,QACrB54B,KAAK44B,OAAOolE,OAAO/2F,GAAqB,CAAEynD,SAAU1uD,KAAMigE,QAASjgE,KAAKmstB,qBAD5E,CAIA,IAAK,IAAIhvtB,EAAI,EAAGA,EAAI0jC,EAAK/iC,OAAQX,IAC7B0jC,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKuyE,IAAMryC,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKuyE,KACjElzE,KAAK44B,OAAOw5pB,iBAAiBvxpB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,OAAO/pK,IAEhF,IAAIo80B,EAASzu3B,EAAKl/B,KAAI,SAAUlB,GAAK,OAAOA,EAAEyyE,GAAK,IAC/Cq80B,EAAeD,EAAO9x5B,QAAO,SAAU63E,EAAM78C,GAAO,OAAO823B,EAAO5q5B,QAAQ2wE,KAAU78C,CAAK,IAC7Fx4B,KAAKsue,SAAU,EACNnxe,EAAI,EAAb,IAAK,IAAWgvE,EAAMoj1B,EAAazx5B,OAAQX,EAAIgvE,EAAKhvE,IAChD6C,KAAK+4vB,0BAA0B/4vB,KAAK44B,OAAOqiqB,eAAes0N,EAAatu5B,SAAS9D,EAAEwD,WAAY,MAAMs8O,OAAO,GAM/G,GAJAj9O,KAAKsue,SAAU,EACXihb,EAAazx5B,QACbkC,KAAK44B,OAAOsxtB,aAAa57Q,UAEqB,IAA9Ctue,KAAK44B,OAAO60pB,eAAetsjB,QAAQrjI,QAAgBkC,KAAK44B,OAAO6gC,QAAQtkD,cAAc,eACrF,KAAIq64B,EAAc,GAAG5u5B,MAAMb,KAAKC,KAAK44B,OAAO6gC,QAAQpgC,uBAAuB,eAC3E,IAASl8B,EAAI,EAAGgvE,EAAMqj1B,EAAY1x5B,OAAQX,EAAIgvE,EAAKhvE,IAC/Cqy5B,EAAY,GAAGrr5B,UAAU0C,OAAO,aAFqD,CAK7F7G,KAAK0t5B,UAAW,EAChB1t5B,KAAKsu5B,gBAAkB,GACvBtu5B,KAAKot5B,iBAvBL,CAwBJ,EACAtl5B,EAAOvJ,UAAUmw5B,wBAA0B,SAAUzxqB,GAEjD,IADA,IACS9iB,EAAK,EAAG6ge,EADHh7rB,KAAKytrB,eAAetsjB,QACIg5F,EAAK6ge,EAAUl9rB,OAAQq8N,IAAM,CAC/D,IAAIljG,EAAM+jkB,EAAU7ge,GACpB,GAAIljG,EAAIgmH,QAAUA,GAAShmH,EAAIn4H,QAAUkB,KAAKlB,OAC1Cm4H,EAAI94D,WAAan+D,KAAKm+D,UAAY84D,EAAIkqF,YAAcnhN,KAAKmhN,UACzD,OAAO,CAEf,CACA,OAAO,CACX,EACAr5M,EAAOvJ,UAAU0v5B,iBAAmB,SAAU7i1B,GAC1CprE,KAAK6oB,OAASuiD,EAAK6rD,IACnB,IAAIwoW,EAAMqB,GAAQ11Z,EAAKjpD,OAAQ,IAAMipD,EAAKt1D,IACtCs1D,EAAKo10B,UAAY/gb,EACjBz/d,KAAKgitB,aAAa92G,cAEbzrI,GACLz/d,KAAKyv5B,iBAAiBzv5B,KAAK6oB,OAAQuiD,EAAKjpD,OAEhD,EACAra,EAAOvJ,UAAUkx5B,iBAAmB,SAAUx4xB,EAAK90G,EAAQ7e,EAAMH,GACzDnD,KAAKgitB,eACLhitB,KAAKgitB,aAAay4L,cAAe,EACjCz64B,KAAKgitB,aAAa92G,eAEtBlrmB,KAAK6qtB,eAAe5zlB,GACpBj3H,KAAKgitB,aAAa30H,WAAWrtlB,KAAK8qtB,cAAc7zlB,EAAK90G,EAAQ7e,EAAMH,GACvE,EAWA2E,EAAOvJ,UAAUustB,cAAgB,SAAU7zlB,EAAK90G,EAAQ7e,EAAMH,GAC1D,IAAIy1rB,EAAO54rB,KAAK44B,OACZ8pjB,EAAazrd,EAAIz5H,OAAOkllB,YAAck2G,EAAKl2G,YAAc,WAAYk2G,EAAKl2G,WAAak2G,EAAKl2G,WAC5Fk2G,EAAK/D,gBAAgBtuD,YACrB9/nB,EAAOwwH,EAAIz5H,OAAOiJ,MAAQzG,KAAK44B,OAAO60pB,eAAehnrB,KAmBzD,MAlBc,CACVA,KAAMwwH,EAAIxwH,KAAMw2O,MAAOhmH,EAAIgmH,MAAOj7G,YAAa/K,EAAIkqT,WACnDuhK,WAAYA,EAAYvnkB,OAAQ87G,EAAI97G,OAAQ3X,OAAQ,IAAK29H,QAASy3jB,EAAKK,aACvEzL,gBAAiBoL,EAAKnL,eAAetsjB,QAASh/G,OAAQA,EAAQoknB,YAAaqyD,EAAK/D,gBAAgBtuD,YAChG2hC,SAAUjxiB,EAAIgxiB,eAAgBjhC,aAAc4xD,EAAKnL,eAAezmD,aAChEohC,SAAUnxiB,EAAIkxiB,YAAallb,MAAO21c,EAAK31c,MAAOl6G,SAAU9R,EAAIsxiB,wBAC5DwlB,eAAe/8gB,GAAkB/5C,EAAIz5H,OAAOuwrB,gBAAyB92jB,EAAIz5H,OAAOuwrB,cAChF9tnB,QAASjgE,KAAK0v5B,cAAcni5B,KAAKvN,MAAO2v5B,iBAAkB/2N,EAAK64D,qBAC/Dr8uB,SAAU,CAAEhI,EAAG9J,EAAM2rB,EAAG9rB,GAAO0lB,OAAQouG,EAAKmwiB,gBAAiBnwiB,EAAImwiB,gBACjEmmB,gBAAiBvtrB,KAAKutrB,gBAAiBF,UAAWuL,EAAKvL,UACvDV,SAAUiM,EAAK/D,gBAAgBlI,WAAYe,mBAAoB1trB,KAAKytrB,eAAeoK,sBACnFlJ,mBAAoB3urB,KAAK44B,OAAOojrB,iBAChC79oB,SAAUn+D,KAAKutrB,gBAAgBt2jB,EAAIgmH,QAAmB,SAATx2O,EAAkBzG,KAAKutrB,gBAAgBt2jB,EAAIgmH,OAAO,GAAG9+K,SAAW,QAC7Gk3nB,qBAAsBuD,EAAK/D,gBAAgBlI,YAAciM,EAAKY,YAAcZ,EAAKe,YAAYC,SAASipB,kBAClGjqB,EAAK/D,gBAAgBlI,WAAaiM,EAAKysB,sBAAwBzsB,EAAK2nE,qBAAqBziwB,OAC7F2yrB,2BAA4BmI,EAAK2J,gBAAgBzksB,OACjD40rB,2BAA6BkG,EAAK/D,gBAAgBlI,WAAyC,GAA5BiM,EAAK2nE,qBAG5E,EASAz4vB,EAAOvJ,UAAUw6vB,0BAA4B,SAAU97gB,EAAO+7gB,GAC1D,IAAI42J,EACA/u3B,EAAO7gC,KAAKytrB,eAAetsjB,QAC/B,GAAIsxmB,GAAgBzyuB,KAAK44B,QAAzB,CACI,IAAIwyC,EAAO,CAAE1c,SAAU1uD,KAAMigE,QAASjgE,KAAK+4vB,0BAA2BpoE,KAAM1zc,EAAO2zc,KAAMooE,GACzFh5vB,KAAK44B,OAAOolE,OAAO/2F,GAAqBmkE,EAE5C,KAJA,CAKA,IAAIkk1B,EAASzu3B,EAAKl/B,KAAI,SAAUlB,GAAK,OAAOA,EAAEyyE,GAAK,IAC/C280B,EAAkBP,EAAO9x5B,QAAO,SAAU63E,EAAM78C,GAAO,OAAO823B,EAAO5q5B,QAAQ2wE,KAAU78C,CAAK,IAChG,IAAKw4I,GAAkBhxK,KAAK6oB,QAAS,CACjC,IAAIouG,EAAMj3H,KAAK6oB,OAAOo+oB,kBAAoBjnqB,KAAK44B,OAAOqiqB,eAAej7rB,KAAK6oB,OAAOqqD,KAC7ElzE,KAAK44B,OAAOw5pB,iBAAiBn1c,GACjCj9O,KAAKiitB,eAAiBjitB,KAAKut5B,4BAA4Bt2xB,GACvDj3H,KAAKkitB,iBAAmBlitB,KAAKytrB,eAAetsjB,QAAQnhI,KAAKiitB,eAC7D,CA6CA,IA5CA,IAAIl/P,EAAU,SAAU5ld,EAAGgvE,GACvBtrC,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKuyE,IAAMryC,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKuyE,KACjEsmV,EAAO5gY,OAAOw5pB,iBAAiBvxpB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,OAAO/pK,IAC9E,IAAIomoB,EAAQz4qB,EAAK/iC,OACb+qB,EAAS2wY,EAAO5gY,OAAO0iqB,2BAA2Bu0N,EAAgB5u5B,SAAS9D,EAAEwD,WAAY,MAC7F,GAAIkoB,EAAOo0N,QAAUA,GAAUp0N,EAAOo0N,QAAUp0N,EAAOu+oB,iBAAmBv+oB,EAAOo+oB,kBAAoB,CACjG,IAAI6oP,EAAct2f,EAAOi0R,eAAetsjB,QAAQ3jI,QAAO,SAAUN,GAC7D,OAAOA,EAAEg2E,MAAQrqD,EAAOqqD,GAC5B,IAAG,GACH,GAAmC,cAA/BsmV,EAAOi0R,eAAehnrB,OAAyBuyvB,EAAkB,CACjE,IAAI91iB,EAAW,QAAWr6L,EAAOo0N,MAAQ,oBACzC2yqB,EAAQp2f,EAAO5gY,OAAOo2qB,mBAAmB75rB,cAAc+tM,MAEnD0ssB,EAAM9w5B,MAAQ,UACP06Z,EAAOznX,OAAO,GAAKkrM,GAElC,CACA,KAAOq8d,KACCz4qB,EAAK5/B,SAASq4sB,EAAM34sB,WAAY,KAAKuyE,MAAQrqD,EAAOqqD,KACpDryC,EAAK58B,OAAOq1sB,EAAO,GAG3B,IAAIk2M,EAAch2f,EAAO5gY,OAAO2prB,uBAAuB15rB,EAAOo0N,OAC9D,GAAmC,cAA/Bu8K,EAAOi0R,eAAehnrB,MAAwB+yZ,EAAO5gY,OAAOo5jB,eAAgB,CAC5E,IAAIkwC,EAAY1oO,EAAO5gY,OAAOo5jB,gBAAkBnpkB,EAAOmpkB,eAAiB,gBAAkB,iBAC1Fw9T,EAAYr64B,cAAc+snB,GAAW/9nB,UAAU0C,OAAO,aAC1D,CAcA,OAbA2yZ,EAAOk0f,UAAW,EACdl0f,EAAO+zR,gBAAgB,GAAKtwc,WACrBu8K,EAAO+zR,gBAAgB,GAAKtwc,GAEnCu8K,EAAOznX,OAAO,GAAKkrM,WACZu8K,EAAOznX,OAAO,GAAKkrM,GAE1Bu8K,EAAO80E,SACP90E,EAAO5gY,OAAOolE,OAAO/2F,GAAqB,CACtC4lQ,YAAa,YAAapmQ,KAAMQ,GAAoBwm5B,oBAAqBqC,EACzEC,oBAAqBln4B,EAAQm5L,OAAQ,gBAGtC,OACX,CACJ,EACIw3M,EAASx5Z,KACJ7C,EAAI,EAAGgvE,EAAM0j1B,EAAgB/x5B,OAAQX,EAAIgvE,EAAKhvE,IAAK,CAExD,GAAgB,UADF4ld,EAAQ5ld,GAElB,KACR,CACA6C,KAAKot5B,iBA1DL,CA2DJ,EAOAtl5B,EAAOvJ,UAAUyke,cAAgB,WAC7B,MAAO,QACX,EACAl7d,EAAOvJ,UAAUqv5B,sBAAwB,SAAU1w5B,GAC7B,KAAdA,EAAE4iS,SACF9/R,KAAKqsuB,aAAanvuB,EAE1B,EACA4K,EAAOvJ,UAAU8tuB,aAAe,SAAUnvuB,GACtC,IAAI07rB,EAAO54rB,KAAK44B,OACZzW,EAASjlB,EAAEilB,OACf,GAAIA,GAAU0wC,GAAQ1wC,EAAQ,sBAAuB,CACjD,IAAI6t4B,EAAiBlvb,GAAQ3+c,EAAQ,sBAErC,GADAniB,KAAK6oB,OAAS+vqB,EAAKqC,eAAe+0N,EAAe5/4B,aAAa,kBACzDpQ,KAAK6oB,OACN,OAEJ,GAAiB,iBAAb3rB,EAAE8kN,QAA6BhiN,KAAK44B,OAAO60pB,eAAeoiE,sBAAuB,CACjF,IAAIogK,EAAoBnvb,GAAQ3+c,EAAQ,QAAQhN,cAAc,wBAC9D864B,EAAkBhtb,cAAc,GAAGo3L,YACnC41P,EAAkBrhpB,OACtB,CACkC,cAA7B5uQ,KAAKytrB,eAAe5hqB,OAAuC,KAAd3uB,EAAE4iS,SAC/C5iS,EAAEilB,OAAOhe,UAAUC,SAAS,yBACZ,IAAdlH,EAAE4iS,SAAkB9/R,KAAK6oB,OAAOm+oB,iBACnChnqB,KAAKlB,MAAQqjB,EAAOrjB,MAAMyW,OAC1BvV,KAAKkw5B,cAAchz5B,GAE3B,CACA,GAAiB,iBAAbA,EAAE8kN,QAA0D,cAA7BhiN,KAAKytrB,eAAehnrB,OAAyB6nrB,GAAapxrB,EAAEilB,OAAQ,cAChG6uJ,GAAkBhxK,KAAK44B,OAAO6gC,QAAQtkD,cAAc,oBAAqB,CAC5E,IAAIskD,EAAUm/nB,EAAKoU,YAAY1B,YAAY7xoB,QAC3C,GAAIA,GAAWA,EAAQt1D,UAAUC,SAAS,gBAAiB,CACvD,IAAIykB,EAAS+vqB,EAAKqC,eAAexhoB,EAAQqtR,kBAAkB12U,aAAa,iBACxEpQ,KAAKmw5B,gBAAgBtn4B,EAAOo0N,OAC5Bj9O,KAAK44B,OAAOo0qB,YAAY8lB,gBAC5B,CACJ,CACiB,WAAb51tB,EAAE8kN,QAAoD,SAA7BhiN,KAAKytrB,eAAehnrB,MAAmBzG,KAAKgitB,eACrEhitB,KAAKgitB,aAAa92G,cAClB0tF,EAAK56lB,OAAO/2F,GAAqB,CAAC,GAE1C,EACAa,EAAOvJ,UAAU6x5B,gBAAkB,SAAU321B,GACrCA,EAAQ36D,MAAMhB,QACd27D,EAAQ27P,mBAAmBjxT,UAAU0C,OAAO,SAEpD,EACAiB,EAAOvJ,UAAU6u5B,gBAAkB,WAC/B,GAAiC,cAA7Bpt5B,KAAKytrB,eAAehnrB,KAAsB,CAC1C,IAAImyrB,EAAO54rB,KAAK44B,OACZy33B,OAAmB,EACnBlvxB,EAAUnhI,KAAKytrB,eAAetsjB,QAC9Bt4G,OAAS,EACb,IAAK7oB,KAAKytrB,eAAe6iO,oBACrB,OAEJ,GAAInvxB,EAAQrjI,OAAS,GAAKkC,KAAKsu5B,kBAAoBtu5B,KAAKoppB,KAAKvtK,YAAY,wBAAyB,CAC9F77e,KAAKsu5B,gBAAkB,GACvB,IAAK,IAAI3h4B,EAAQ,EAAGA,EAAQw0G,EAAQrjI,OAAQ6uB,IAOxC,GANA9D,EAAS+vqB,EAAK0C,2BAA2Bn6jB,EAAQlgI,SAAS0rB,EAAMhsB,WAAY,KAAKuyE,MAC1E0lnB,EAAKsC,6BAA6B/5jB,EAAQlgI,SAAS0rB,EAAMhsB,WAAY,KACnEs8O,MAAO97G,EAAQlgI,SAAS0rB,EAAMhsB,WAAY,KAAKg3rB,cACpDhrqB,IACA3sB,KAAKsu5B,iBAAmB,QAEvBt9uB,GAAkBnoJ,EAAO1N,QAc1Bnb,KAAKsu5B,iBAAmBzl4B,EAAOs4Z,WAAa,KAAOnhb,KAAK+xC,OAAOlpB,EAAOo0N,WAdnC,CACnC,IAAIi9pB,EAA2B,SAAhBrx3B,EAAOpiB,MAAmC,aAAhBoiB,EAAOpiB,MAAuC,aAAhBoiB,EAAOpiB,KAC1EzG,KAAKymqB,eAAelB,SAASvlqB,KAAK+xC,OAAOlpB,EAAOo0N,OAAQp0N,EAAOs/oB,YAA8B,aAAhBt/oB,EAAOpiB,KAAsB,OAASoiB,EAAOpiB,MAC1HzG,KAAK+xC,OAAOlpB,EAAOo0N,OACvB,GAAsB,SAAhBp0N,EAAOpiB,MAAmC,aAAhBoiB,EAAOpiB,MAAuC,aAAhBoiB,EAAOpiB,KAEjE4p5B,EADerw5B,KAAKk4rB,eAAewF,WAAW,kBAClBl4B,OAAO00O,EAASrx3B,EAAOs/oB,aAAaxnqB,gBAGhE0v5B,EAAmBrw5B,KAAK4u5B,qBAAqB1U,EAASrx3B,GAE1D7oB,KAAKsu5B,iBAAmBzl4B,EAAOs4Z,WAAa,KAAOkve,CACvD,CAKR,CACIz3N,EAAKY,aACLZ,EAAKy/D,sBAAsBr4vB,KAAKsu5B,iBAGpCtu5B,KAAKsu5B,gBAAkB,EAC3B,CACJ,EACAxm5B,EAAOvJ,UAAUqw5B,qBAAuB,SAAU9v5B,EAAO+pB,GAErD,OADe7oB,KAAKk4rB,eAAewF,WAAW,kBAC9Bl4B,OAAO1mqB,EAAO+pB,EAAOo/oB,gBAAgBtnqB,UACzD,EACAmH,EAAOvJ,UAAU8v5B,kBAAoB,SAAUxl4B,EAAQ/pB,GACnD,IAAI2vyB,EACJ,GAAoB,WAAhB5lxB,EAAOpiB,MACHggoB,GAAS6T,gBAAgB,GAAKx7oB,IAAUkB,KAAK+s5B,gBAAgBro5B,QAAQ5F,IAAU,KAC/E2vyB,GAAS,QAGZ,GAAoB,WAAhB5lxB,EAAOpiB,KACZ,IAAK,IAAI0zN,EAAK,EAAGugc,EAAU57pB,EAAOq7N,EAAKugc,EAAQ58pB,OAAQq8N,IAAM,CACzD,IAAIxnL,EAAM+nnB,EAAQvgc,GACdn6N,KAAKgt5B,gBAAgBto5B,QAAQiuC,IAAQ,IACrC87vB,GAAS,EAEjB,CAEJ,OAAOA,CACX,EACA3myB,EAAOvJ,UAAU2x5B,cAAgB,SAAUhz5B,GACvC8C,KAAK2luB,YACL3luB,KAAKuw5B,WAAWrz5B,EACpB,EACA4K,EAAOvJ,UAAUgy5B,WAAa,SAAUrz5B,GACpC,IAAI0jN,EAAQ5gN,KACZA,KAAKkzrB,MAAQvurB,OAAO6zM,aAAY,WAAcoI,EAAM4vsB,aAAe,GAAiB,KAAdtz5B,EAAE4iS,QAAiB,EAAI9/R,KAAKytrB,eAAegjO,mBACrH,EACA3o5B,EAAOvJ,UAAUonuB,UAAY,WACzBhhuB,OAAO8zM,cAAcz4M,KAAKkzrB,MAC9B,EACAprrB,EAAOvJ,UAAUiy5B,YAAc,WAC3B,IAKIlrR,EALApib,EAAW,QAAWljN,KAAK6oB,OAAOo0N,MAAQ,mBAC1Co3gB,EAAgBr0vB,KAAKy5D,QAAQtkD,cAAc+tM,GAO/C,GANKmxiB,IACDA,EAAgBr0vB,KAAK44B,OAAOo2qB,mBAAmB75rB,cAAc+tM,IAGjEljN,KAAK4s5B,SAAS5s5B,KAAK6oB,OAAOo0N,OAASo3gB,EAAcv1vB,MACjDkB,KAAK2luB,YACA30jB,GAAkBhxK,KAAK6oB,OAAO4p3B,mBAU/BntQ,EAAcvpmB,KAAK9jB,MAAM8jB,KAAKC,UAAUq4tB,EAAcv1vB,YAVH,CACnD,IAAI4x5B,EAAe1w5B,KAAK6oB,OAAO4p3B,kBAAkBj9wB,KACrB,kBAAjBk7xB,IACPA,EAAe3isB,GAAS2isB,EAAc/r5B,SAErCqsK,GAAkB0/uB,KACnB1w5B,KAAKlB,MAAQ4x5B,EAAa3w5B,KAAKC,KAAMq0vB,GAE7C,CAIIrjlB,GAAkBhxK,KAAKlB,QAAyB,KAAfkB,KAAKlB,MACtCkB,KAAK+4vB,0BAA0B/4vB,KAAK6oB,OAAOo0N,QAG/Cj9O,KAAK2w5B,oBAAoB3w5B,KAAKlB,OAC9BkB,KAAK2s5B,gBAAiB,EACtB3s5B,KAAK24vB,eAAe34vB,KAAK6oB,OAAOo0N,MAAOj9O,KAAKm+D,SAAUn+D,KAAKlB,MAAOkB,KAAKmhN,UAAWnhN,KAAKytrB,eAAeoK,sBAAuB73rB,KAAKgnoB,aAAchnoB,KAAK6oB,OAAOo+oB,mBAC5JjnqB,KAAK2s5B,gBAAiB,EACtBt4J,EAAcv1vB,MAAQwmoB,EACtBtloB,KAAKot5B,kBACT,EACAtl5B,EAAOvJ,UAAUoy5B,oBAAsB,SAAU7x5B,GAC7C,IAAI8x5B,EACAjk4B,EAEJ,OADA3sB,KAAKinoB,UAAYjnoB,KAAKytrB,eAAeoK,sBAC7B73rB,KAAK6oB,OAAOpiB,MAChB,IAAK,SACGzG,KAAK6oB,OAAOrrB,OAAO2gE,SACnBn+D,KAAKm+D,SAAWn+D,KAAK6oB,OAAOrrB,OAAO2gE,SAGnCn+D,KAAKm+D,SAAWn+D,KAAKsgvB,gBAAgB5rlB,MAEzCk8vB,EAAY,CAAC,IAAK,IAAK,IAAK,KAC5B,IAAK,IAAIzz5B,EAAI,EAAGA,EAAI2B,EAAMhB,OAAQX,IAC9B,GAAIyz5B,EAAUls5B,QAAQ5F,EAAMmC,SAAS9D,EAAEwD,WAAY,OAAS,EAAG,CAC3DgsB,EAAQxvB,EACR,KACJ,CAEJ6C,KAAK6w5B,YAAY/x5B,EAAM0D,UAAUmqB,IACnB,IAAVA,IACA3sB,KAAKlB,MAAQA,EAAM0D,UAAU,EAAGmqB,IAEjB,KAAf3sB,KAAKlB,OAAgBA,EAAMhB,QAAU,IACrCkC,KAAKlB,MAAQkB,KAAKymqB,eAAelB,SAASvlqB,KAAKlB,MAAOkB,KAAK6oB,OAAOs/oB,YAAanoqB,KAAK6oB,OAAOpiB,OAE3FnC,MAAMtE,KAAKlB,SACXkB,KAAKsu5B,gBAAkBtu5B,KAAKoppB,KAAKvtK,YAAY,yBAEjD,MACJ,IAAK,OACL,IAAK,WACD77e,KAAKm+D,SAAWn+D,KAAKsgvB,gBAAgB5rlB,MAClB,KAAf10J,KAAKlB,OAAkBkB,KAAKlB,iBAAiBkZ,OAC7ChY,KAAK6w5B,YAAY/x5B,GACjBkB,KAAKlB,MAAQkB,KAAKymqB,eAAelB,SAASvlqB,KAAKlB,MAAOkB,KAAK6oB,OAAOs/oB,YAAanoqB,KAAK6oB,OAAOpiB,MACvFuqK,GAAkBhxK,KAAKlB,SACvBkB,KAAKsu5B,gBAAkBtu5B,KAAKoppB,KAAKvtK,YAAY,0BAGrD,MACJ,IAAK,SACD77e,KAAKinoB,WAAY,EACbjnoB,KAAK6oB,OAAOrrB,OAAO2gE,SACnBn+D,KAAKm+D,SAAWn+D,KAAK6oB,OAAOrrB,OAAO2gE,UAGP,IAAxBr/D,EAAM4F,QAAQ,OAAuC,IAAxB5F,EAAM4F,QAAQ,OAAyC,IAA1B5F,EAAM4F,QAAQ,OACxE1E,KAAKm+D,SAAWn+D,KAAKsgvB,gBAAgB9oG,UAER,IAAxB14oB,EAAM4F,QAAQ,KACnB1E,KAAKm+D,SAAWn+D,KAAKsgvB,gBAAgB3oG,KAGrC33oB,KAAKm+D,SAAWn+D,KAAKsgvB,gBAAgB12mB,WAG7C,MACJ,IAAK,UAC2B,SAAxB9qI,EAAM2F,eAAsC,MAAV3F,EAClCkB,KAAKlB,OAAQ,EAEgB,UAAxBA,EAAM2F,eAAuC,MAAV3F,EACxCkB,KAAKlB,OAAQ,EAERA,EAAMhB,SACXkC,KAAKsu5B,gBAAkBtu5B,KAAKoppB,KAAKvtK,YAAY,yBAEjD77e,KAAKm+D,SAAWn+D,KAAKsgvB,gBAAgB5rlB,MACrC,MACJ,QACQ10J,KAAK6oB,OAAOrrB,OAAO2gE,SACnBn+D,KAAKm+D,SAAWn+D,KAAK6oB,OAAOrrB,OAAO2gE,SAGnCn+D,KAAKm+D,SAAWn+D,KAAKsgvB,gBAAgB5rlB,MAGrD,EACA5sJ,EAAOvJ,UAAUsy5B,YAAc,SAAU/x5B,GACrC,IAAIgy5B,EAAWhy5B,EAAM6a,OAAO,GACxBo34B,EAAajy5B,EAAM8B,MAAM,EAAG,GAC5Biy4B,EAAYnx4B,GAAO,CAAE,IAAK1B,KAAKsgvB,gBAAgB5rlB,MAAO,IAAK10J,KAAKsgvB,gBAAgBG,UAAYh6G,GAAS6T,kBAErGu4P,EAAUrx4B,eAAesv5B,IAAaje,EAAUrx4B,eAAeuv5B,MAC/D/w5B,KAAKm+D,SAAW000B,EAAU,GAAKie,GAC/B9w5B,KAAKlB,MAAQA,EAAM0D,UAAU,GACxBxC,KAAKm+D,WACNn+D,KAAKm+D,SAAW000B,EAAU,GAAKke,GAC/B/w5B,KAAKlB,MAAQA,EAAM0D,UAAU,KAGjCxC,KAAKm+D,WAAan+D,KAAKsgvB,gBAAgBt4J,UAAYholB,KAAKm+D,WAAan+D,KAAKsgvB,gBAAgBx4J,aAC7D,MAAzB9nlB,KAAKlB,MAAM6a,OAAO,KAClB3Z,KAAKm+D,SAAWn+D,KAAKm+D,SAAW,UAChCn+D,KAAKlB,MAAQkB,KAAKlB,MAAM0D,UAAU,GAG9C,EACAsF,EAAOvJ,UAAU63qB,sBAAwB,WACjCp2qB,KAAK44B,OAAO60pB,eAAehnrB,IAGnC,EACAqB,EAAOvJ,UAAU0u5B,4BAA8B,WAC3C,IAAI+D,EAAU,CACV,CAAEly5B,MAAO,QAASuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,UAC9C,CAAE/8e,MAAO,cAAeuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,gBACpD,CAAE/8e,MAAO,qBAAsBuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,uBAC3D,CAAE/8e,MAAO,WAAYuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,aACjD,CAAE/8e,MAAO,kBAAmBuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,oBACxD,CAAE/8e,MAAO,WAAYuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,aACjD,CAAE/8e,MAAO,SAAUuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,WAC/C,CAAE/8e,MAAO,YAAauP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,aAEtD77e,KAAKiz4B,gBAAkB,CACnBge,eAAgB,CACZ,CAAEny5B,MAAO,aAAcuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,eACnD,CAAE/8e,MAAO,WAAYuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,aACjD,CAAE/8e,MAAO,WAAYuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,aACjD,CAAE/8e,MAAO,QAASuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,UAC9C,CAAE/8e,MAAO,UAAWuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,YAChD,CAAE/8e,MAAO,mBAAoBuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,kBACzD,CAAE/8e,MAAO,iBAAkBuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,gBACvD,CAAE/8e,MAAO,iBAAkBuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,gBACvD,CAAE/8e,MAAO,WAAYuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,aACjD,CAAE/8e,MAAO,aAAcuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,eACnD,CAAE/8e,MAAO,OAAQuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,UAEjDq1a,eAAgBF,EAChBG,aAAcH,EACdI,iBAAkBJ,EAClBK,iBAAkBL,EAClBM,gBAAiB,CACb,CAAExy5B,MAAO,QAASuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,UAC9C,CAAE/8e,MAAO,WAAYuP,KAAMrO,KAAKoppB,KAAKvtK,YAAY,cAG7D,EAMA/ze,EAAOvJ,UAAU4x5B,gBAAkB,SAAUlzqB,GACzC,IAAI27c,EAAO54rB,KAAK44B,OAChB,GAAIggqB,EAAKojB,iBACLh8sB,KAAKikwB,kBAAiB,OAD1B,CAIA,IAAIp7uB,EAAS+vqB,EAAKxG,iBAAiBn1c,GAE/B96N,EADSy2qB,EAAK2pB,uBAAuBtle,GACrB9nO,cAAc,oBAClC,GAAKgN,EAAL,CAGA,IAAI+/uB,EAAUtpE,EAAKn/nB,QAAQv2D,wBACvBi/vB,EAAUhgvB,EAAOjf,wBACrBlD,KAAKyv5B,iBAAiB5m4B,EAAQ1G,EAAQggvB,EAAQ/+vB,MAAQ8+vB,EAAQ5+vB,KAAM6+vB,EAAQ9+vB,OAAS6+vB,EAAQ/+vB,IAH7F,CANA,CAUJ,EACA2E,EAAOvJ,UAAU2v5B,uBAAyB,SAAUhx5B,GAChD,IAAIilB,EAASjlB,EAAEilB,OACf,GAAIA,EAAOhe,UAAUC,SAAS,qBAA2D,SAApCpE,KAAK44B,OAAO60pB,eAAehnrB,MACxC,aAApCzG,KAAK44B,OAAO60pB,eAAehnrB,MAA2D,UAApCzG,KAAK44B,OAAO60pB,eAAehnrB,MAAmB,CAChG,IACIwwH,EADOj3H,KAAK44B,OACDqiqB,eAAe3M,GAAansqB,EAAQ,gBAAgB2kU,kBAAkB12U,aAAa,iBAElG,GADApQ,KAAK6oB,OAASouG,EACVj3H,KAAK8s5B,eAAe7vqB,QAAUhmH,EAAIgmH,OAASj9O,KAAK8s5B,eAAe5qe,OAC/D,OAEAlib,KAAKgitB,cACLhitB,KAAKgitB,aAAa92G,cAEtBlrmB,KAAK8s5B,eAAiB,CAAE7vqB,MAAOhmH,EAAIgmH,MAAOilM,QAAQ,GAClDlib,KAAKmw5B,gBAAgBl5xB,EAAIgmH,MAC7B,CACJ,EACAn1O,EAAOvJ,UAAUsyf,aAAe,SAAU3zf,GACtC,GAAiC,cAA7B8C,KAAKytrB,eAAehnrB,MAAwBzG,KAAKytrB,eAAeoiE,sBAAuB,CACvF,GAAIvhE,GAAapxrB,EAAEilB,OAAQ,oBACvBjlB,EAAEilB,OAAOhe,UAAUC,SAAS,sBAAuB,CACnD,IAAImt5B,EAAwBzwb,GAAQ5je,EAAEilB,OAAQ,OAC1ChN,cAAc,wBACdo84B,EACAA,EAAsB3ipB,QAGtB1xQ,EAAEilB,OAAOysP,OAEjB,CACA,GAAI1xQ,EAAEilB,OAAOhe,UAAUC,SAAS,eAAgB,CAC5C,IAAIk8mB,EAAU/qlB,SAASpgB,cAAc,iBAAiB/E,aAAa,MAAM1N,QAAQ,SAAU,KACnD,IAApC49mB,EAAQ57mB,QAAQ,gBAChBo8d,GAAQvrc,SAAS4jC,eAAemnjB,GAAU,OAAOnrmB,cAAc,iBAAiBy5P,OAExF,CACJ,CACA,GAAiC,cAA7B5uQ,KAAKytrB,eAAe5hqB,MAA4D,SAApC7rB,KAAK44B,OAAO60pB,eAAehnrB,MACnC,aAApCzG,KAAK44B,OAAO60pB,eAAehnrB,MAA2D,UAApCzG,KAAK44B,OAAO60pB,eAAehnrB,KAAkB,CAC/F,IAAI0b,EAASjlB,EAAEilB,OACXqv4B,EAAgBrv4B,EAAOhe,UAAUC,SAAS,SAC1CupnB,EAAS2gE,GAAaturB,KAAK44B,OAAO6gC,QAAS,YAC3Cg41B,GAAY,EACZrxP,EAAWkuB,GAAansqB,EAAQ,WAChCuv4B,EAAkB1x5B,KAAK44B,OAAO6gC,QAAQt1D,UAAUC,SAAS,YAAcmxB,SAASpgB,cAAc,mBAC5FnV,KAAK44B,OAAO6gC,QAAQtkD,cAAc,mBAQxC,GAPIw4mB,GAAUyyC,IACVqxP,EAAY9jS,EAAO73mB,KAAOsqpB,EAAStqpB,IAElC9V,KAAKgitB,cAAgB0vM,IAAoBpjO,GAAansqB,EAAQ,sBAC/DmsqB,GAAansqB,EAAQ,wBACrBniB,KAAKgitB,aAAa92G,YAAY/olB,GAE9BmsqB,GAAansqB,EAAQ,mBAAqBA,EAAOhe,UAAUC,SAAS,mBACpE,QAEKpE,KAAKgitB,cAAiB1zB,GAAansqB,EAAQ,oBAAwBmsqB,GAAansqB,EAAQ,oBACxF2+c,GAAQ3+c,EAAQ,+BAAoCqv4B,GACpDljO,GAAansqB,EAAQ,sBAAwBuv4B,IAC7CD,IAAenjO,GAAansqB,EAAQ,oBAChCmsqB,GAAansqB,EAAQ,oBAAyBi+oB,GAAYsxP,KAC/D1x5B,KAAKgitB,aAAay4L,aAAensN,GAAansqB,EAAQ,WAClDmsqB,GAAansqB,EAAQ,UAAUrM,KAAO9V,KAAK44B,OAAO6gC,QAAQ3jD,MAAQw4qB,GAAansqB,EAAQ,qBACpFuv4B,GACP1x5B,KAAKgitB,aAAa92G,YAAY/olB,GAG1C,CACJ,EACAra,EAAOvJ,UAAUmx5B,cAAgB,SAAUtk1B,GACvCprE,KAAKutrB,gBAAgBninB,EAAK6xK,OAAS7xK,EAAKminB,gBACxCvtrB,KAAK8u5B,WAAa1x5B,OAAOC,KAAK2C,KAAKutrB,iBACnC,IAAIhnD,EAAc,IAAI4N,GAAYn0oB,KAAKytrB,eAAetsjB,SAClD8hH,GAAQ,IAAIyiZ,IAAQ/viB,MAAM,QAAS31F,KAAKsgvB,gBAAgB5rlB,MAAOtpF,EAAK6xK,OACxEj9O,KAAK+u5B,qBAAuBxoR,EAAY7jD,WAAWl9C,KACnDxliB,KAAKoitB,yBAA2B77E,EAAYG,aAAazjZ,GACzD,IAAK,IAAI9lP,EAAI,EAAGA,EAAI6C,KAAKoitB,yBAAyBtktB,OAAQX,IAAK,CAE3D,IADA,IAAIwvB,GAAS,EACJ5mB,EAAI,EAAGA,EAAI/F,KAAKytrB,eAAetsjB,QAAQrjI,OAAQiI,IACpD,GAAI/F,KAAKoitB,yBAAyBnhtB,SAAS9D,EAAEwD,WAAY,KAAKs8O,QAC1Dj9O,KAAKytrB,eAAetsjB,QAAQlgI,SAAS8E,EAAEpF,WAAY,KAAKs8O,MAAO,CAC/DtwN,EAAQ5mB,EACR,KACJ,EAEW,IAAX4mB,GACA3sB,KAAKytrB,eAAetsjB,QAAQl9H,OAAO0oB,EAAO,EAElD,CACI3sB,KAAK+xC,OAAOq5B,EAAK6xK,eACVj9O,KAAK+xC,OAAOq5B,EAAK6xK,OAE5B,IAAIhmH,EAAMj3H,KAAK44B,OAAOw5pB,iBAAiBhnnB,EAAK6xK,OACxCilZ,EAAYlioB,KAAK44B,OAAOo5jB,gBAAkB/6d,EAAI+6d,eAAiB,gBAAkB,iBACjFg9T,EAAoBhv5B,KAAK44B,OAAO2prB,uBAAuBn3oB,EAAK6xK,OAAO9nO,cAAc+snB,GACjE,cAAhB92jB,EAAK42I,QACLhiN,KAAKytrB,eAAetsjB,QAAUnhI,KAAKytrB,eAAetsjB,QAAQh6H,OAAOikE,EAAKkhnB,kBAClEtsrB,KAAKytrB,eAAetsjB,QAAQrjI,QAAUkx5B,GACtCA,EAAkB7q5B,UAAU2C,IAAI,gBAIhCko5B,GACAA,EAAkB7q5B,UAAU0C,OAAO,cAEvCukE,EAAKyhM,YAAc,YACnB7sQ,KAAK44B,OAAOsxtB,aAAa57Q,QAAQlja,IAErCprE,KAAK44B,OAAOypc,UAChB,EACAv6d,EAAOvJ,UAAU4w5B,aAAe,WAC5B,IAAItu3B,EAAO7gC,KAAKytrB,eAAetsjB,QAC/BnhI,KAAKutrB,gBAAkB,CAAC,EACxB,IAAK,IAAIpwrB,EAAI,EAAGA,EAAI0jC,EAAK/iC,OAAQX,IAAK,CAClC6C,KAAK6oB,OAAS7oB,KAAK44B,OAAOw5pB,iBAAiBvxpB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,QACxEo1c,GAA2BxxpB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,MAAOj9O,KAAK44B,OAAOs5pB,wBACnF,IAAI9tS,EAAYvjX,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,MAC5Cj9O,KAAK44B,OAAOw5pB,iBAAiBvxpB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,SAC/DmnK,EAAYiuS,GAA2BxxpB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,MAAOj9O,KAAK44B,OAAOs5pB,wBAAwBj1c,OAEvHj9O,KAAK2x5B,kBAAkBvtgB,EAAWvjX,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKw9D,SAAUt9B,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAK7B,MAAO+hC,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAK8F,KAAMo6B,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKwgN,UAAWtgL,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKsmoB,UAAWpmmB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKqmoB,aAAcnmmB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKuyE,IACxU,CACJ,EACAprE,EAAOvJ,UAAUoz5B,kBAAoB,SAAUvtgB,EAAWjmV,EAAUr/D,EAAO2H,EAAM06M,EAAW8lb,EAAWD,EAAc9zjB,GACjH,IAAIlE,EAAM,CACNiuK,MAAOmnK,EACPjjM,UAAWA,EACX8lb,UAAWA,EACXD,aAAcA,EACd7okB,SAAUA,EACVr/D,MAAOA,EACP2H,KAAMA,GAENzG,KAAKutrB,gBAAgB,GAAKnpS,GAC1BpkZ,KAAKutrB,gBAAgB,GAAKnpS,GAAWzmZ,KAAKqxE,GAG1ChvE,KAAKutrB,gBAAgB,GAAKnpS,GAAa,CAACp1U,GAE5C,IAAIiuK,EAAQ/pK,EAAMlzE,KAAK44B,OAAO0iqB,2BAA2BponB,GAAK+pK,MAAQmnK,EACtEpkZ,KAAK4x5B,iBAAiB30qB,EAC1B,EACAn1O,EAAOvJ,UAAUqz5B,iBAAmB,SAAUxtgB,GAC1C,IAAI4qgB,EACA/3xB,EAAMj3H,KAAK44B,OAAOw5pB,iBAAiBhuS,GACnCpkZ,KAAK44B,OAAOo5jB,gBAAkB/6d,EAAI+6d,eAClCg9T,EAAoBhv5B,KAAK44B,OAAO2prB,uBAAuBn+T,GAAWjvY,cAAc,iBAE3E8hH,IACL+3xB,EAAoBhv5B,KAAK44B,OAAO2prB,uBAAuBn+T,GAAWjvY,cAAc,mBAEhF654B,GACAA,EAAkB7q5B,UAAU2C,IAAI,aAExC,EAKAgB,EAAOvJ,UAAU05vB,gBAAkB,WAC/B,OAAOj4vB,KAAKgitB,aAAehitB,KAAKgitB,aAAai2C,kBAAoB,CAAC,CACtE,EAMAnwvB,EAAOvJ,UAAU6v5B,gBAAkB,SAAUnxqB,GACzC,OAAO1nN,SAAS4jC,eAAen5D,KAAK44B,OAAOw5pB,iBAAiBn1c,GAAO/pK,KAAK+vZ,cAAc,GAAGnke,KAC7F,EAMAgJ,EAAOvJ,UAAUsz5B,2BAA6B,WAC1C,OAAO7x5B,KAAKgitB,aAAau4L,oBAC7B,EACOzy4B,CACX,CA3zC4B,GCPxB4/uB,IAAsB,WAUtB,SAASA,EAAK9utB,EAAQuhqB,EAAch0D,EAAeg2E,GAC/Cn8sB,KAAK0s5B,gBAAiB,EACtB1s5B,KAAK8x5B,gBAAiB,EACtB9x5B,KAAK+x5B,KAAO,IAAIj0M,GAChB99sB,KAAKogS,cAAgB,KACrBpgS,KAAK44B,OAASA,EACd54B,KAAKm6rB,aAAeA,EACpBn6rB,KAAKmmoB,cAAgBA,EACrBnmoB,KAAKk4rB,eAAiBikB,EACtBn8sB,KAAK4uQ,MAAQutc,EAAQze,WAAW,SAChC19rB,KAAKqN,mBACLrN,KAAK46qB,qBACT,CAqeA,OA9dA8sE,EAAKnpvB,UAAUske,YAAc,WACzB,IACIl2c,EADAql4B,EAAe,CAAE/0qB,MAAOj9O,KAAKourB,WAAYxxmB,UAAW58E,KAAK48E,WAEzD4+qB,EAAQx7vB,KAAK44B,OAAOmhqB,cAAc54jB,QAClCyuV,GAAO,EACX,GAAK5vd,KAAKs4vB,aAwBN3ruB,EAAQ3sB,KAAKiy5B,0BAA0Bjy5B,KAAKourB,cAC/B,GACTpurB,KAAKm6rB,aAAah5jB,QAAQl9H,OAAO0oB,EAAO,GAE5C3sB,KAAKm6rB,aAAah5jB,QAAQxjI,KAAKq05B,GAE/Bhy5B,KAAKm6rB,aAAah5jB,QAAUnhI,KAAKm6rB,aAAah5jB,aA7B9C,GAAKq6nB,EAAM19vB,OAGN,CAED,IADA,IAAImptB,EAAa,GACR9ptB,EAAI,EAAGgvE,EAAMqvrB,EAAM19vB,OAAQX,EAAIgvE,EAAKhvE,IAEzC,GADAwvB,EAAQ3sB,KAAKiy5B,0BAA0Bz2J,EAAMv6vB,SAAS9D,EAAEwD,WAAY,KAAMsmtB,GACtEjntB,KAAKourB,aAAeotE,EAAMv6vB,SAAS9D,EAAEwD,WAAY,KACjDivd,GAAO,EACPq3P,EAAWtptB,KAAKq05B,OAEf,CACD,IAAIE,EAAOly5B,KAAKmy5B,uBAAuB32J,EAAMv6vB,SAAS9D,EAAEwD,WAAY,MACpEsmtB,EAAWtptB,KAAK,CAAEs/O,MAAOi1qB,EAAKj1qB,MAAOrgK,UAAWs10B,EAAKt10B,UAAW4qjB,YAAa0qR,EAAK1qR,aACtF,CAEC53K,GACDq3P,EAAWtptB,KAAKq05B,GAEpBhy5B,KAAKm6rB,aAAah5jB,QAAU8llB,CAChC,MAnBIjntB,KAAKm6rB,aAAah5jB,QAAU,CAAC6wxB,GA8BrChy5B,KAAK44B,OAAOypc,WACZrie,KAAKoy5B,cAAgBpy5B,KAAKourB,UAC9B,EAQAs5D,EAAKnpvB,UAAUmupB,iBAAmB,SAAUxvpB,GACxC,IAAIkuE,EAAQprE,KAAK0t5B,SAEb,CAAE7gpB,YAAa,UAAWpmQ,KAAMQ,IAFR,CACxBmnrB,WAAYpurB,KAAKourB,WAAYxxmB,UAAW58E,KAAK48E,UAAWiwL,YAAa,UAAWpmQ,KAAMQ,IAE1FjH,KAAK0t5B,UAAW,EAChB1t5B,KAAK44B,OAAOwmc,QAAQn4d,GAAuBvF,GAAOxE,EAAGkuE,GACzD,EASAs8qB,EAAKnpvB,UAAU4rtB,WAAa,SAAU/7B,EAAYxxmB,EAAW07qB,GACzD,IAAI1/D,EAAO54rB,KAAK44B,QAC8C,IAA1D54B,KAAK44B,OAAOw5pB,iBAAiBhE,GAAYr8F,cAA0B/xlB,KAAK44B,OAAOinuB,oBAC/E7/vB,KAAK44B,OAAO92B,IAAI,yBAA0B,CAAE4te,WAAY1ve,KAAKgje,gBAAiBorN,WAAYA,KAGzFwK,EAAK2wB,oBACN+uC,EAAc1/D,EAAK2wB,mBAEnBvptB,KAAKyyuB,kBACL75C,EAAK56lB,OAAO/2F,GAAqB,CAC7BynD,SAAU1uD,KAAMigE,QAASjgE,KAAKmqtB,WAC9Bx5B,KAAMvC,EAAYwC,KAAMh0mB,EAAWi0mB,KAAMynE,KAIjDt4vB,KAAKqy5B,iBACLry5B,KAAKourB,WAAaA,EAClBpurB,KAAK48E,UAAYA,EACjB58E,KAAKs4vB,YAAcA,EACnBt4vB,KAAKsy5B,kBACLty5B,KAAKuy5B,iBAAiBnkO,EAAYkqE,GAClCt4vB,KAAK6ie,eACT,EACA6kR,EAAKnpvB,UAAUq8qB,oBAAsB,WAC7B56qB,KAAKk4rB,gBACLl4rB,KAAKk4rB,eAAey0B,wBAAwB3stB,KAAMA,KAAK44B,OAAOojrB,iBAAkBp4D,GAAuBolE,OAE/G,EACA0+B,EAAKnpvB,UAAU8z5B,eAAiB,WAC5Bry5B,KAAKwy5B,eAAiB30L,GAAc79tB,KAAKm6rB,aAAah5jB,SACtDnhI,KAAKyy5B,SAAWzy5B,KAAKmmoB,aACzB,EACAuhH,EAAKnpvB,UAAUm05B,gBAAkB,WAC7B1y5B,KAAK8x5B,gBAAiB,EACtB9x5B,KAAKs4vB,aAAc,EACnBt4vB,KAAK44B,OAAOqpc,cAAc,CAAEk4N,aAAc,CAAEh5jB,QAASnhI,KAAKwy5B,kBAAoB,GAE9Exy5B,KAAKmmoB,cAAgBnmoB,KAAKyy5B,SAC1Bzy5B,KAAK8x5B,gBAAiB,CAC1B,EACApqK,EAAKnpvB,UAAUg05B,iBAAmB,SAAUnkO,EAAYkqE,GACpD,IAAKA,EACD,GAAIt4vB,KAAK44B,OAAO+soB,cACZ,IAAK,IAAIxoqB,EAAI,EAAGgvE,EAAMnsE,KAAKmmoB,cAAcrooB,OAAQX,EAAIgvE,EAAKhvE,IAClD6C,KAAK44B,OAAOmhqB,cAAc54jB,QAAQz8H,QAAQ1E,KAAKmmoB,cAAclloB,SAAS9D,EAAEwD,WAAY,MAAQ,IAC5FX,KAAKmmoB,cAAclioB,OAAO9G,EAAG,GAC7BgvE,IACAhvE,UAKR6C,KAAKmmoB,cAAclioB,OAAO,EAAGjE,KAAKmmoB,cAAcrooB,QAGpDkC,KAAKmmoB,cAAczhoB,QAAQ0prB,GAAc,GACzCpurB,KAAKmmoB,cAAcxooB,KAAKywrB,EAEhC,EAMAs5D,EAAKnpvB,UAAUoke,kBAAoB,SAAUzle,GACzC,GAAIA,EAAE6qE,SAAW/nE,KAAKgje,gBAAtB,CAGA,GAAIhje,KAAK0s5B,eAAgB,CACrB,IAAIth1B,EAAOprE,KAAKm6rB,aAAah5jB,QAAQrjI,OAAS,CAC1CswrB,WAAYpurB,KAAKourB,WAAYxxmB,UAAW58E,KAAK48E,UAAWiwL,YAAa,UACrEpmQ,KAAMQ,GAAoBkb,OAAQniB,KAAKogS,cAAe0gD,QAAQ,GAC9D,CACAj0E,YAAa,UAAWpmQ,KAAMQ,GAAoB65U,QAAQ,EAC1D3+T,OAAQniB,KAAKogS,eAEjBpgS,KAAK44B,OAAOolE,OAAO/2F,GAAqBmkE,EAC5C,CACAprE,KAAK2y5B,sBACL3y5B,KAAKsy5B,kBACLty5B,KAAK4y5B,cAbL,CAcJ,EACAlrK,EAAKnpvB,UAAUo05B,oBAAsB,WACjC3y5B,KAAKmmoB,cAAcrooB,OAAS,EAE5B,IADA,IAAI+qtB,EAAc7otB,KAAKm6rB,aAAah5jB,QAC3BhkI,EAAI,EAAGA,EAAI0rtB,EAAY/qtB,OAAQX,IAC/B0rtB,EAAY5ntB,SAAS9D,EAAEwD,WAAY,KAAK6moB,aACzCxnoB,KAAKmmoB,cAAcxooB,KAAKkrtB,EAAY5ntB,SAAS9D,EAAEwD,WAAY,KAAKs8O,MAG5E,EAMAyqgB,EAAKnpvB,UAAUottB,aAAe,WAC1B,IAAI9qrB,EAAO6muB,GAAsB1nwB,KAAKm6rB,aAAah5jB,SACnD,GAAInhI,KAAKyyuB,kBACLzyuB,KAAK44B,OAAOolE,OAAO/2F,GAAqB,CAAEynD,SAAU1uD,KAAMigE,QAASjgE,KAAK2rtB,oBAG5E,IAAK,IAAIxutB,EAAI,EAAGgvE,EAAMtrC,EAAK/iC,OAAQX,EAAIgvE,EAAKhvE,IACxC6C,KAAKy4vB,iBAAiB53tB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,MAE/D,EACAyqgB,EAAKnpvB,UAAUk0uB,gBAAkB,WAC7B,OAAOA,GAAgBzyuB,KAAK44B,OAChC,EAQA8utB,EAAKnpvB,UAAUk6vB,iBAAmB,SAAUx7gB,GACxC,IAAI27c,EAAO54rB,KAAK44B,OACZiI,EAAO7gC,KAAKm6rB,aAAah5jB,QAC7B,KAAoB,IAAhBtgG,EAAK/iC,QAAgBkC,KAAKmmoB,cAAczhoB,QAAQu4O,GAAS,GAG7D,GAAIj9O,KAAKyyuB,kBACLzyuB,KAAK44B,OAAOolE,OAAO/2F,GAAqB,CAAEynD,SAAU1uD,KAAMigE,QAASjgE,KAAKy4vB,iBAAkB9nE,KAAM1zc,QADpG,CAIAj9O,KAAKqy5B,iBACLry5B,KAAKsy5B,kBAEL,IADA,IAAIln1B,EAAO,CAAEyhM,YAAa,UAAWpmQ,KAAMQ,GAAoBkb,OAAQniB,KAAKogS,eACnEjjS,EAAI,EAAGgvE,EAAMtrC,EAAK/iC,OAAQX,EAAIgvE,EAAKhvE,IACxC,GAAI0jC,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,QAAUA,EAAO,CAClD,GAAI27c,EAAKjzB,eAAiBizB,EAAKmB,cAAc54jB,QAAQz8H,QAAQm8B,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,QAAU,EACpG,SAEJj9O,KAAKmmoB,cAAclioB,OAAOjE,KAAKmmoB,cAAczhoB,QAAQm8B,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,OAAQ,GAC9Fp8M,EAAK58B,OAAO9G,EAAG,GACf6C,KAAK0t5B,UAAW,EACZ1t5B,KAAK8x5B,gBACL9x5B,KAAK44B,OAAOolE,OAAO/2F,GAAqBmkE,GAE5C,KACJ,CAECA,EAAK01Q,QACN9gV,KAAK4y5B,cAnBT,CAqBJ,EACAlrK,EAAKnpvB,UAAU0z5B,0BAA4B,SAAUh1qB,EAAOkpZ,GAExD,IADA,IAAItlmB,EAAOslmB,GAAgCnmoB,KAAKm6rB,aAAah5jB,QACpDhkI,EAAI,EAAGgvE,EAAMtrC,EAAK/iC,OAAQX,EAAIgvE,EAAKhvE,IACxC,GAAI0jC,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,QAAUA,EAC3C,OAAO9/O,EAGf,OAAQ,CACZ,EAOAuqvB,EAAKnpvB,UAAUyke,cAAgB,WAC3B,MAAO,MACX,EACA0kR,EAAKnpvB,UAAUk2qB,WAAa,WAExB,GADAz0qB,KAAK44B,OAAOyW,IAAIpoC,GAAqBjH,KAAKy0qB,YACtCz0qB,KAAK44B,OAAOqgqB,aAAan7rB,QAAUkC,KAAKm6rB,aAAah5jB,QAAQrjI,OAAQ,CACrE,IAAI86rB,EAAO54rB,KAAK44B,OAChB54B,KAAK0s5B,gBAAiB,EACtB1s5B,KAAKs4vB,YAAct4vB,KAAKm6rB,aAAah5jB,QAAQrjI,OAAS,EACtD,IAAK,IAAIq8N,EAAK,EAAGjiC,EAAK0ggB,EAAKuB,aAAah5jB,QAAQvgI,QAASu5N,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAC3E,IAAIljG,EAAMihE,EAAGiiC,GACTn6N,KAAKmmoB,cAAczhoB,QAAQuyH,EAAIgmH,QAAU,GACzCj9O,KAAKmqtB,WAAWlzlB,EAAIgmH,MAAOhmH,EAAIr6C,WAAW,EAElD,CACA58E,KAAKs4vB,aAAc,EACnBt4vB,KAAK0s5B,gBAAiB,CAC1B,CACJ,EAKAhlK,EAAKnpvB,UAAU8O,iBAAmB,WAC1BrN,KAAK44B,OAAOspc,cAGhBlie,KAAKontB,YAAc,CAAC,CAAElupB,MAAOjyD,GAA4Bg5D,QAASjgE,KAAK46qB,qBACnE,CAAE1hnB,MAAOjyD,GAAqCg5D,QAASjgE,KAAKg8qB,8BAC5D,CAAE9inB,MAAOjyD,GAAqBg5D,QAASjgE,KAAKy0qB,YAC5C,CAAEv7mB,MAAOjyD,GAAqBg5D,QAASjgE,KAAK0spB,kBAC5C,CAAExzlB,MAAOjyD,GAA4Bg5D,QAASjgE,KAAK2ie,mBACnD,CAAEzpa,MAAOjyD,GAAcg5D,QAASjgE,KAAK6wf,cACrC,CAAE33b,MAAOjyD,GAAwBg5D,QAASjgE,KAAK6y5B,kBAC/C,CAAE351B,MAAOjyD,GAAmBg5D,QAASjgE,KAAKg2qB,YAC1C,CAAE98mB,MAAOjyD,GAAoBg5D,QAASjgE,KAAK4yuB,kBAC3C,CAAE15qB,MAAOjyD,GAAgBg5D,QAASjgE,KAAKyjE,UAC3CgkpB,GAAuBzntB,KAAK44B,OAAQ54B,KAAKontB,aAAa,EAAMpntB,MAChE,EAKA0nvB,EAAKnpvB,UAAUs6D,oBAAsB,WAC7B74D,KAAK44B,OAAOspc,aAGhBulP,GAAuBzntB,KAAK44B,OAAQ54B,KAAKontB,aAAa,EAC1D,EAOAsgC,EAAKnpvB,UAAUklE,QAAU,WACrBzjE,KAAK8x5B,gBAAiB,EACtB,IAAIx0L,EAAct9tB,KAAK44B,OAAO6gC,QACzB6jqB,IAAiBA,EAAYnotB,cAAc,IAAMkwrB,KAAyBi4B,EAAYnotB,cAAc,IAAMkwrB,OAG3GrlsB,KAAK44B,OAAO6gC,QAAQtkD,cAAc,gBAAgBkkB,uBAAuB,gBAAgBv7B,SACzFkC,KAAK44B,OAAO6gC,QAAQtkD,cAAc,gBAAgB9Q,MAAMqmB,QAAU,QAGjE1qB,KAAK44B,OAAO+oc,aAAe3he,KAAK44B,OAAOspc,aAAgBlie,KAAK44B,OAAOm5jB,cACpE/xlB,KAAK2rtB,eAET3rtB,KAAK8x5B,gBAAiB,EACtB9x5B,KAAK64D,sBACT,EACA6urB,EAAKnpvB,UAAUq0uB,iBAAmB,SAAU11uB,GAClB,YAAlBA,EAAE2vQ,cACF7sQ,KAAK0y5B,kBACL1y5B,KAAK6y5B,mBACL7y5B,KAAKs4vB,aAAc,EAE3B,EACA5Q,EAAKnpvB,UAAUsyf,aAAe,SAAU3zf,GACpC,IAAI07rB,EAAO54rB,KAAK44B,OAChB54B,KAAKogS,cAAgB,KACrBpgS,KAAK+uuB,kBAAkB7xuB,GACvB,IAAIilB,EAAS2+c,GAAQ5je,EAAEilB,OAAQ,iBAC/B,GAAIA,IAAWjlB,EAAEilB,OAAOhe,UAAUC,SAAS,oBACrC+d,EAAOhe,UAAUC,SAAS,eAC3BlH,EAAEilB,OAAOhe,UAAUC,SAAS,gBAC5BlH,EAAEilB,OAAOhe,UAAUC,SAAS,kBAC5BlH,EAAEilB,OAAOhe,UAAUC,SAAS,qBAC5BkqrB,GAAapxrB,EAAEilB,OAAQ,0BACtBy2qB,EAAK4pB,gBAAkB5pB,EAAKkL,kBAAkB81B,sBAC5C18tB,EAAEilB,OAAOhe,UAAUC,SAAS,iBAAkB,CAClD,IACIio5B,EADSrs5B,KAAK44B,OACEqiqB,eAAe94qB,EAAOhN,cAAc,oBAAoB/E,aAAa,iBACrE,aAAhBi84B,EAAO5l5B,OACPzG,KAAK8y5B,aAAa3w4B,EAAQjlB,EAAGmv5B,GACzBnvb,GAAQK,UACRv9d,KAAK+y5B,UAAU715B,GAG3B,CAIA,GAHIilB,GACAA,EAAOhe,UAAU0C,OAAO,aAExBynrB,GAAapxrB,EAAEilB,OAAQ,sBACvBmsqB,GAAapxrB,EAAEilB,OAAQ,sBAAuB,CAC9C,IAAImt4B,EAASxub,GAAQ5je,EAAEilB,OAAQ,mBAAmB/R,aAAa,OAC3DwsE,EAAYo0F,GAAkBs9gB,GAAapxrB,EAAEilB,OAAQ,uBACrD,YAAc,aAClBniB,KAAKmqtB,WAAWvxB,EAAKqC,eAAeq0N,GAAQryqB,MAAOrgK,GAAW,EAClE,CACJ,EACA8qqB,EAAKnpvB,UAAUy3qB,WAAa,SAAU94qB,GAClC,IAAIuie,EAAMvie,EAAEilB,OACZ,IAAKniB,KAAK44B,OAAOooqB,SAAwB,UAAb9jsB,EAAE8kN,QAAmC,cAAb9kN,EAAE8kN,QAAuC,eAAb9kN,EAAE8kN,SAC3E8+Q,GAAQrB,EAAK,iBAAkB,CAClC,IAAIt9c,EAASniB,KAAK4uQ,MAAM8ld,oBACxB,GAAI1jjB,GAAkB7uJ,KAAYA,EAAOhe,UAAUC,SAAS,kBACpD+d,EAAOhN,cAAc,oBACzB,OAEJ,IAAI8hH,EAAMj3H,KAAK44B,OAAOqiqB,eAAe94qB,EAAOhN,cAAc,oBAAoB/E,aAAa,iBAC3FpQ,KAAK8y5B,aAAa3w4B,EAAQjlB,EAAG+5H,EACjC,CACJ,EACAywnB,EAAKnpvB,UAAUu05B,aAAe,SAAU3w4B,EAAQjlB,EAAG2rB,GAC/C,IAAI+vqB,EAAO54rB,KAAK44B,OACZqkN,EAAQp0N,EAAOo0N,MACnBj9O,KAAKogS,cAAgBljS,EAAEilB,OACvB,IAAIy6D,EAAaz6D,EAAOkX,uBAAuB,eAAev7B,OAC1D,aADmE,YAEvEkC,KAAKs4vB,YAAcp7vB,EAAEkkS,SAAWphS,KAAKgz5B,uBACW,IAA3Czu5B,UAAUC,UAAUE,QAAQ,WAAoBxH,EAAEokS,QACnDpkS,EAAEoyC,UAAatvC,KAAKm6rB,aAAa84N,aAAe9w4B,EAAOkX,uBAAuB,gBAAgBv7B,UACzF86rB,EAAKmB,cAAc54jB,QAAQz8H,QAAQu4O,IAAU,GAClDj9O,KAAKy4vB,iBAAiBx7gB,GAGtBj9O,KAAKmqtB,WAAWlte,EAAOrgK,EAAW58E,KAAKs4vB,YAE/C,EACA5Q,EAAKnpvB,UAAUw05B,UAAY,SAAU715B,GACjC,IAAIilB,EAAS2+c,GAAQ5je,EAAEilB,OAAQ,kBAC3BniB,KAAK44B,OAAO2wrB,mBAAuBv4iB,GAAkB7uJ,KAAWniB,KAAK44B,OAAOinuB,qBAC5E3wB,GAAkBlvuB,KAAK44B,OAAO6gC,QAAQtkD,cAAc,gBAAiBjY,EAAG,0CAA4C8C,KAAKmmoB,cAAcrooB,OAAS,EAAI,iBAAmB,IAE/K,EACA4pvB,EAAKnpvB,UAAUwwuB,kBAAoB,SAAU7xuB,GACzC,IAAIilB,EAASjlB,EAAEilB,OACX2+c,GAAQ3+c,EAAQ,kBAAoBjlB,EAAEilB,OAAOhe,UAAUC,SAASihsB,KAChEvkO,GAAQ3+c,EAAQ,gBACZA,EAAOhe,UAAUC,SAAS,kBACrB+d,EAAOhe,UAAUC,SAAS,kBAK3B+d,EAAOhe,UAAU0C,OAAO,iBACxB7G,KAAKgz5B,sBAAuB,EAC5Bhz5B,KAAK44B,OAAO6gC,QAAQtkD,cAAc,gBAAgB9Q,MAAMqmB,QAAU,SANlEvI,EAAOhe,UAAU2C,IAAI,iBACrB9G,KAAKgz5B,sBAAuB,IAUpChz5B,KAAK44B,OAAO6gC,QAAQtkD,cAAc,gBAAgB9Q,MAAMqmB,QAAU,MAE1E,EACAg9tB,EAAKnpvB,UAAUq05B,aAAe,WAM1B,IALA,IACI32xB,EACAo4nB,EAFAz7D,EAAO54rB,KAAK44B,OAGZiI,EAAO7gC,KAAKm6rB,aAAah5jB,QACzBimgB,EAAapnoB,KAAK44B,OAAOqgqB,aAAat3rB,KAAI,SAAUrC,GAAK,OAAOA,EAAE29O,KAAO,IACpE9/O,EAAI,EAAGgvE,EAAMtrC,EAAK/iC,OAAQX,EAAIgvE,EAAKhvE,IACxC8+H,EAAS28jB,EAAK2pB,uBAAuB1hrB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,QACF,IAAhEmqZ,EAAW1ioB,QAAQm8B,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,QAAiBjsE,GAAkB/0C,KAG3Fj8H,KAAK+x5B,KAAK9zM,QAAQhilB,EAASp7F,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKi8E,UAAWn4E,eACnEo8B,EAAK/iC,OAAS,GACdm+H,EAAO9mH,cAAc,oBAAoBc,aAAajW,KAAK44B,OAAOoF,cAAc,OAAQ,CAAE9xB,UAAW,eAAgByS,WAAYxhB,EAAI,GAAGwD,aAAes7H,EAAO9mH,cAAc,kBAEhLk/uB,EAAgBp4nB,EAAO9mH,cAAc,oBACc,cAA/C0rB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKi8E,UACjCz4E,GAAUkwvB,EAAe,CAAC,cAAe,oBAAqB,IAG9DlwvB,GAAUkwvB,EAAe,CAAC,eAAgB,qBAAsB,IAG5E,EACA3M,EAAKnpvB,UAAU+z5B,gBAAkB,SAAUl94B,GAKvC,IAJA,IACI6mH,EADA28jB,EAAO54rB,KAAK44B,OAEZiI,EAAO7gC,KAAKm6rB,aAAah5jB,QACzBimgB,EAAapnoB,KAAK44B,OAAOqgqB,aAAat3rB,KAAI,SAAUrC,GAAK,OAAOA,EAAE29O,KAAO,IACpE9/O,EAAIiY,GAAsB,EAAG+2D,EAAO6kG,GAAkB57J,GAA2ByrB,EAAK/iC,OAApBsX,EAAW,EAAiBjY,EAAIgvE,EAAKhvE,IAExG6zK,GADJ/0C,EAAS28jB,EAAK2pB,uBAAuB1hrB,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,SACpC27c,EAAKjzB,eAChCizB,EAAKmB,cAAc54jB,QAAQz8H,QAAQm8B,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,QAAU,IAC7EhhH,EAAO9mH,cAAc,sBAGuC,IAAhEiynB,EAAW1ioB,QAAQm8B,EAAK5/B,SAAS9D,EAAEwD,WAAY,KAAKs8O,SAGxDj9O,KAAK+x5B,KAAK9zM,QAAQhilB,EAAQ,QAC1B93H,GAAU83H,EAAO9mH,cAAc,oBAAqB,GAAI,CAAC,eAAgB,oBAAqB,cAAe,qBACzG8mH,EAAO9mH,cAAc,kBACrB8mH,EAAO9mH,cAAc,oBAAoByY,YAAYquG,EAAO9mH,cAAc,kBAGtF,EACAuyuB,EAAKnpvB,UAAU4z5B,uBAAyB,SAAUl1qB,GAC9C,IAAK,IAAI9/O,EAAI,EAAGgvE,EAAMnsE,KAAKm6rB,aAAah5jB,QAAQrjI,OAAQX,EAAIgvE,EAAKhvE,IAC7D,GAAI6C,KAAKm6rB,aAAah5jB,QAAQlgI,SAAS9D,EAAEwD,WAAY,KAAKs8O,QAAUA,EAChE,OAAOj9O,KAAKm6rB,aAAah5jB,QAAQlgI,SAAS9D,EAAEwD,WAAY,KAGhE,OAAO,CACX,EACA+mvB,EAAKnpvB,UAAU205B,eAAiB,WAE5B,IADA,IAAI9rR,EAAapnoB,KAAK44B,OAAOqgqB,aAAat3rB,KAAI,SAAUrC,GAAK,OAAOA,EAAE29O,KAAO,IACpE9iB,EAAK,EAAGjiC,EAAKl4L,KAAKmmoB,cAAehsa,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAC5D,IAAIljG,EAAMihE,EAAGiiC,GACb,IAAiC,IAA7Bita,EAAW1ioB,QAAQuyH,GAAvB,CAGA,IAAIgF,EAASj8H,KAAK44B,OAAO2prB,uBAAuBtrlB,GAChDj3H,KAAK+x5B,KAAK9zM,QAAQhilB,EAAQj8H,KAAKmy5B,uBAAuBl7xB,GAAKr6C,UAF3D,CAGJ,CACJ,EACA8qqB,EAAKnpvB,UAAUs05B,iBAAmB,WAC9B7y5B,KAAKsy5B,kBACLty5B,KAAKs4vB,aAAc,EACnBt4vB,KAAKsy5B,kBACLty5B,KAAK4y5B,eACL5y5B,KAAKs4vB,aAAc,EACnBt4vB,KAAKkz5B,gBACT,EACAxrK,EAAKnpvB,UAAUy9qB,6BAA+B,SAAU5wmB,GACpDprE,KAAKsotB,yBAAyBtmgB,OAAS52I,EAAK42I,MAChD,EAQA0liB,EAAKnpvB,UAAU2lwB,eAAiB,SAAU5iG,GACtCthqB,KAAKsotB,yBAAyBnB,eAAiB7lD,EAC/CthqB,KAAKsotB,yBAAyBgC,sBAClC,EACOo9B,CACX,CA5f0B,GCPtByrK,IAAkC,WAOlC,SAASA,EAAiBx5N,GACtB35rB,KAAK25rB,YAAcA,CACvB,CAoaA,OA7ZAw5N,EAAiB505B,UAAUupE,OAAS,WAChC9nE,KAAK6wtB,aAAe7wtB,KAAK25rB,YAAYlgoB,QACrCz5D,KAAKoz5B,yBACLpz5B,KAAKqz5B,sBACLrz5B,KAAK85e,YACT,EAMAq5a,EAAiB505B,UAAU+ve,QAAU,WACjCtue,KAAK25rB,YAAY25N,mBACbtz5B,KAAKwxN,MAAM1zN,QACXkC,KAAKuz5B,kBAETvz5B,KAAKwz5B,uBACLxz5B,KAAKyz5B,cACT,EAOAN,EAAiB505B,UAAU805B,oBAAsB,WAC7C,IAAI5m1B,EACAmtnB,EAAW55rB,KAAK25rB,YAChBj8hB,EAAMk8hB,EAASngoB,QAAQtkD,cAAc,uBACrCu6rB,EAAOn6qB,SAAS0qc,yBACpBviU,EAAI/+I,UAAY,GAChB,IAAK,IAAIxhB,EAAI,EAAGA,GAAKy8rB,EAAS1zC,UAAW/opB,IACrCsvE,EAAOzuC,GAAc,IAAK,CACtB9xB,UAAW,iDACXwmC,MAAO,CAAE6wpB,SAAU,KAAM,aAAc3J,EAAStM,kBAAkB,QAAUnwrB,EAAIy8rB,EAAStM,kBAAkB,MACnGsM,EAAS3/Q,WAAa2/Q,EAAStM,kBAAkB,SAAUxtpB,KAAM,OAEzE85pB,EAAS5/Q,cAAgB78a,IACzBgH,GAAUsoE,EAAM,CAAC,gBAAiB,YAAa,CAAC,oBAChDA,EAAK7jE,aAAa,eAAgB,SAEtC8msB,EAAKn4rB,YAAYk1D,GAErBixF,EAAInmJ,YAAYm4rB,GAChB1vsB,KAAKwxN,MAAQ,GAAG5wN,MAAMb,KAAK29J,EAAItwI,WACnC,EAOA+l4B,EAAiB505B,UAAUu7e,WAAa,WACpCpb,GAAa53d,IAAI9G,KAAK6wtB,aAAc,QAAS7wtB,KAAK6wf,aAAc7wf,MAChE0+d,GAAa53d,IAAI9G,KAAK6wtB,aAAc,WAAY7wtB,KAAK0z5B,sBAAuB1z5B,KAChF,EAOAmz5B,EAAiB505B,UAAU08e,aAAe,WACtCvc,GAAa73d,OAAO7G,KAAK25rB,YAAYlgoB,QAAS,QAASz5D,KAAK6wf,cAC5DnyB,GAAa73d,OAAO7G,KAAK25rB,YAAYlgoB,QAAS,WAAYz5D,KAAK0z5B,sBACnE,EAQAP,EAAiB505B,UAAUklE,QAAU,WACjCzjE,KAAKi7e,cACT,EACAk4a,EAAiB505B,UAAUi15B,qBAAuB,WAI9C,IAHA,IAAI55N,EAAW55rB,KAAK25rB,YAEhBnoe,EADmBooe,EAASngoB,QAAQtkD,cAAc,uBACzBsY,iBAAiB,KACrCtwB,EAAI,EAAGA,EAAIq0N,EAAM1zN,OAAQX,IAC1Bq0N,EAAMvwN,SAAS9D,EAAEwD,WAAY,KAAKq5B,aAAa,eAAiBw3L,EAAMvwN,SAAS9D,EAAEwD,WAAY,KAAKq5B,aAAa,UAC/Gw3L,EAAMvwN,SAAS9D,EAAEwD,WAAY,KAAKiI,aAAa,aAAcgxrB,EAAStM,kBAAkB,QAAU97d,EAAMvwN,SAAS9D,EAAEwD,WAAY,KAAKyP,aAAa,SAC3IwprB,EAAStM,kBAAkB,MAAQsM,EAAS3/Q,WAAa2/Q,EAAStM,kBAAkB,SAGtG,EACA6lO,EAAiB505B,UAAU605B,uBAAyB,WAChDpz5B,KAAKy5D,QAAUz7B,GAAc,MAAO,CAChC9xB,UAAW,mBAAoBwmC,MAAO,CAAE,KAAQ,gBAEpD1yC,KAAK2z5B,iBAAiB3z5B,KAAKy5D,SAC3Bz5D,KAAK4z5B,mBAAmB5z5B,KAAKy5D,SAC7Bz5D,KAAKy5D,QAAQliD,YAAYymB,GAAc,MAAO,CAAE9xB,UAAW,wBAC3DlM,KAAK6z5B,mBAAmB7z5B,KAAKy5D,SAC7Bz5D,KAAK8z5B,gBAAgB9z5B,KAAKy5D,SAC1Bz5D,KAAK25rB,YAAYlgoB,QAAQliD,YAAYvX,KAAKy5D,QAC9C,EACA051B,EAAiB505B,UAAUo15B,iBAAmB,SAAUI,GACpD/z5B,KAAKi4D,MAAQj6B,GAAc,MAAO,CAC9B9xB,UAAW,+BACXwmC,MAAO,CACHpyB,MAAOtgB,KAAK25rB,YAAYrM,kBAAkB,oBAC1CiW,SAAU,KAAM3xW,KAAM,YAG9B5xV,KAAK+jF,KAAO/lD,GAAc,MAAO,CAC7B9xB,UAAW,6BACXwmC,MAAO,CACHpyB,MAAOtgB,KAAK25rB,YAAYrM,kBAAkB,uBAC1CiW,SAAU,KAAM3xW,KAAM,YAG9BtpM,GAAO,CAACtoJ,KAAKi4D,MAAOj4D,KAAK+jF,MAAOgw0B,EACpC,EACAZ,EAAiB505B,UAAUq15B,mBAAqB,SAAUG,GACtD,IAAIC,EAAYh23B,GAAc,OAC9Bh+B,KAAKi05B,GAAKj23B,GAAc,IAAK,CACzB9xB,UAAW,wBAAyByS,UAAW,MAC/C+zB,MAAO,CACHpyB,MAAOtgB,KAAK25rB,YAAYrM,kBAAkB,wBAC1C,aAActtrB,KAAK25rB,YAAYrM,kBAAkB,wBACjDiW,SAAU,KACVzjqB,KAAM,OAGdk03B,EAAUz84B,YAAYvX,KAAKi05B,IAC3BF,EAAex84B,YAAYy84B,EAC/B,EACAb,EAAiB505B,UAAUs15B,mBAAqB,SAAUE,GACtD,IAAIG,EAAYl23B,GAAc,OAC9Bh+B,KAAKm05B,GAAKn23B,GAAc,IAAK,CACzB9xB,UAAW,wBACXyS,UAAW,MAAO+zB,MAAO,CACrBpyB,MAAOtgB,KAAK25rB,YAAYrM,kBAAkB,oBAC1C,aAActtrB,KAAK25rB,YAAYrM,kBAAkB,oBACjDiW,SAAU,KACVzjqB,KAAM,OAGdo03B,EAAU384B,YAAYvX,KAAKm05B,IAC3BJ,EAAex84B,YAAY284B,EAC/B,EACAf,EAAiB505B,UAAUu15B,gBAAkB,SAAUC,GACnD/z5B,KAAKI,KAAO49B,GAAc,MAAO,CAC7B9xB,UAAW,6BACXwmC,MAAO,CACHpyB,MAAOtgB,KAAK25rB,YAAYrM,kBAAkB,mBAC1CiW,SAAU,KAAM3xW,KAAM,YAG9B5xV,KAAK21D,KAAO33B,GAAc,MAAO,CAC7B9xB,UAAW,6BACXwmC,MAAO,CACHpyB,MAAOtgB,KAAK25rB,YAAYrM,kBAAkB,mBAC1CiW,SAAU,KAAM3xW,KAAM,YAG9BtpM,GAAO,CAACtoJ,KAAKI,KAAMJ,KAAK21D,MAAOo+1B,EACnC,EACAZ,EAAiB505B,UAAUsyf,aAAe,SAAU3zf,GAChD,IAAI08rB,EAAW55rB,KAAK25rB,YAUpB,OATA35rB,KAAKmiB,OAASjlB,EAAEilB,OACZniB,KAAKmiB,OAAOhe,UAAUC,SAAS,kBAC/BlH,EAAEijE,iBAENy5nB,EAASw6N,eAAiBx6N,EAAS5/Q,YAC9Bh6a,KAAKmiB,OAAOhe,UAAUC,SAAS,cAAiB4sK,GAAkBhxK,KAAKmiB,OAAO/R,aAAa,YAC5FwprB,EAAS5/Q,YAAc/4a,SAASjB,KAAKmiB,OAAO/R,aAAa,SAAU,IACnEwprB,EAASv3N,aAEN,CACX,EACA8wb,EAAiB505B,UAAUm15B,sBAAwB,SAAUx25B,GACzD8C,KAAKmiB,OAASjlB,EAAEilB,OACZniB,KAAKmiB,OAAOhe,UAAUC,SAAS,kBAAkC,IAAblH,EAAEukS,QACtDvkS,EAAEijE,gBAEV,EACAgz1B,EAAiB505B,UAAUg15B,gBAAkB,WACzC,IACIc,EACAC,EACAl8J,EAHAx+D,EAAW55rB,KAAK25rB,YAIhBjllB,EAAW10G,KAAK6wtB,aAAapjsB,iBAAiB,mFAClDmsqB,EAAS5/Q,YAAsC,IAAxB4/Q,EAAS3/Q,WAAmB,EAAI2/Q,EAAS5/Q,YAC5D4/Q,EAAS5/Q,YAAc4/Q,EAAS3/Q,YAAc2/Q,EAAS3/Q,aACvD2/Q,EAAS5/Q,YAAc4/Q,EAAS3/Q,YAEpCo6e,EAAiBpz5B,UAAU24rB,EAAS5/Q,YAAc4/Q,EAAS1zC,WAAWvlpB,WAAY,IAC9Ei5rB,EAAS5/Q,YAAc4/Q,EAAS1zC,YAAc,GAAKmuQ,EAAiB,IACpEA,GAAkC,GAEtC,IAAK,IAAIl35B,EAAI,EAAGA,EAAIy8rB,EAAS1zC,UAAW/opB,IAAK,CACzC,GAAIy8rB,EAAS26N,eAAgB,CACzB,IAAIt4P,EAAcj8pB,KAAK6wtB,aAAa17sB,cAAc,YAC9Cq/4B,EAAkBx05B,KAAKmiB,OAASniB,KAAKmiB,OAAS85oB,GAA4B,KAC1Ew4P,GAAc,EACdC,GAAc,EACdC,GAAe,EACfC,GAAc,EACdC,GAAiB,EACjBC,GAAY,EACZC,GAAY,EAChB,GAAIP,EAAiB,CACjB,IAAI90b,EAAc80b,EAAgBrw5B,UAClC,GAAIu7d,EAAYt7d,SAAS,WACrB,QAAQ,GACJ,KAAKs7d,EAAYt7d,SAAS,UACtBqw5B,GAAc,EACd,MACJ,KAAK/0b,EAAYt7d,SAAS,UACtBsw5B,GAAc,EACd,MACJ,KAAKh1b,EAAYt7d,SAAS,WACtBuw5B,GAAe,EACf,MACJ,KAAKj1b,EAAYt7d,SAAS,UACtBww5B,GAAc,OAIrB,GAAIl1b,EAAYt7d,SAAS,iBAC1B,QAAQ,GACJ,KAAKs7d,EAAYt7d,SAAS,QACtB0w5B,GAAY,EACZ,MACJ,KAAKp1b,EAAYt7d,SAAS,QACtB2w5B,GAAY,EACZ,MACJ,QACIF,EAAiBn1b,EAAYt7d,SAAS,iBAItD,CACAkw5B,EAAYM,GAA+C,QAA/B505B,KAAK25rB,YAAY3+M,UAC7CtmY,EAAW10G,KAAK6wtB,aAAapjsB,iBAAiB,mFAC9C,IAAIun4B,EAAkB905B,MAAMQ,KAAKg0G,GAAUr3F,MAAK,SAAUg4D,GAAQ,OAAOp0E,SAASo0E,EAAKjlE,aAAa,SAAU,MAAQwprB,EAAS5/Q,WAAa,IAGxIo+U,EADAu8J,GAA+C,SAA/B305B,KAAK25rB,YAAY3+M,UACxB,EAAI79e,EAERy35B,GAA8C,QAA/B505B,KAAK25rB,YAAY3+M,UAC3Bq5a,EAAiBz6N,EAAS1zC,UAAa,EAAI/opB,EAEhDu35B,GAA8C,eAA/B105B,KAAK25rB,YAAY3+M,WAA8By5a,GAA8C,cAA/Bz05B,KAAK25rB,YAAY3+M,UAC/Fg6a,EACS/z5B,SAASyzG,EAAS,GAAGtkG,aAAa,SAAU,IAAMjT,EAEtDs35B,GAA8C,cAA/Bz05B,KAAK25rB,YAAY3+M,UAC5B/5e,SAASjB,KAAKi05B,GAAG7j5B,aAAa,SAAU,IAAMjT,EAG9Cy8rB,EAAS5/Q,YAAc78a,EAG/B235B,GAAaC,EACTn7N,EAAS5/Q,YAAc78a,EAE3B035B,EACK5z5B,SAASyzG,EAAS,GAAGtkG,aAAa,SAAU,IAAMjT,EAGlDk35B,EAAiBz6N,EAAS1zC,UAAa,EAAI/opB,CAE7D,MAEIi7vB,EAAUi8J,EAAiBz6N,EAAS1zC,UAAa,EAAI/opB,EAErDi7vB,GAAUx+D,EAAS3/Q,YACnBj6a,KAAKwxN,MAAMvwN,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU0C,OAAO,UACxD7G,KAAKwxN,MAAMvwN,SAAS9D,EAAEwD,WAAY,KAAK0D,MAAMqmB,QAAU,GACvD1qB,KAAKwxN,MAAMvwN,SAAS9D,EAAEwD,WAAY,KAAKiI,aAAa,QAASwvvB,EAAOz3vB,YACpEX,KAAKwxN,MAAMvwN,SAAS9D,EAAEwD,WAAY,KAAKge,UAAai7qB,EAASq7N,WAAiCr7N,EAASq7N,WAAa78J,EAA1CA,EAAOz3vB,WAC7Ei5rB,EAAS5/Q,cAAgBo+U,EACzBp4vB,KAAKwxN,MAAMvwN,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU2C,IAAI,mBAGrD9G,KAAKwxN,MAAMvwN,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU0C,OAAO,qBAI5D7G,KAAKwxN,MAAMvwN,SAAS9D,EAAEwD,WAAY,KAAKge,UAAai7qB,EAASq7N,WAAiCr7N,EAASq7N,WAAa78J,EAA1CA,EAAOz3vB,WACjFX,KAAKwxN,MAAMvwN,SAAS9D,EAAEwD,WAAY,KAAK0D,MAAMqmB,QAAU,QAE3DvmB,GAAUnE,KAAKwxN,MAAMvwN,SAAS9D,EAAEwD,WAAY,KAAM,GAAI,CAAC,gBAAiB,aACxEX,KAAKwxN,MAAMvwN,SAAS9D,EAAEwD,WAAY,KAAK4yD,gBAAgB,eAC3D,CACA8D,GAAWr3D,KAAKi4D,MAAO,CACnB,MAAS,IACT,MAASj4D,KAAK25rB,YAAYrM,kBAAkB,sBAEhDj2nB,GAAWr3D,KAAK6wtB,aAAa17sB,cAAc,aAAc,CACrD,MAAS,IACT,MAASnV,KAAK25rB,YAAYrM,kBAAkB,sBAEhDj2nB,GAAWr3D,KAAK21D,KAAM,CAClB,MAASikoB,EAAS3/Q,WAAWt5a,WAC7B,MAASX,KAAK25rB,YAAYrM,kBAAkB,qBAEhDj2nB,GAAWr3D,KAAK6wtB,aAAa17sB,cAAc,YAAa,CACpD,MAASykrB,EAAS3/Q,WAAWt5a,WAC7B,MAASX,KAAK25rB,YAAYrM,kBAAkB,qBAEhDj2nB,GAAWr3D,KAAK+jF,KAAM,CAClB,OAAU61mB,EAAS5/Q,YAAc,GAAGr5a,WACpC,MAASX,KAAK25rB,YAAYrM,kBAAkB,yBAEhDj2nB,GAAWr3D,KAAK6wtB,aAAa17sB,cAAc,YAAa,CACpD,OAAUykrB,EAAS5/Q,YAAc,GAAGr5a,WACpC,MAASX,KAAK25rB,YAAYrM,kBAAkB,yBAEhDj2nB,GAAWr3D,KAAKI,KAAM,CAClB,OAAUw5rB,EAAS5/Q,YAAc,GAAGr5a,WACpC,MAASX,KAAK25rB,YAAYrM,kBAAkB,qBAEhDj2nB,GAAWr3D,KAAK6wtB,aAAa17sB,cAAc,YAAa,CACpD,OAAUykrB,EAAS5/Q,YAAc,GAAGr5a,WACpC,MAASX,KAAK25rB,YAAYrM,kBAAkB,qBAEhD,IAAI4nO,EAAWl15B,KAAK25rB,YAAY46N,gBAAkB7/yB,EAAS52G,OACrDw25B,EACIrz5B,SAASyzG,EAAS,GAAGtkG,aAAa,SAAU,IAAMwprB,EAASu7N,YAC3Dl05B,SAASyzG,EAAS,GAAGtkG,aAAa,SAAU,IAAMskG,EAAS52G,OAC/DmD,SAASjB,KAAKwxN,MAAM,GAAGphN,aAAa,SAAU,IAAMwprB,EAAS1zC,UACnE7ulB,GAAWr3D,KAAKi05B,GAAI,CAChB,MAAWiB,EAAU,EAAK,IAAMA,EAAQv05B,WACxC,MAASX,KAAK25rB,YAAYrM,kBAAkB,wBAC5C,aAActtrB,KAAK25rB,YAAYrM,kBAAkB,0BAErD,IAAI8nO,EAAWp15B,KAAK25rB,YAAY46N,gBAAkB7/yB,EAAS52G,OACrDmD,SAASyzG,EAASA,EAAS52G,OAAS,GAAGsS,aAAa,SAAU,IAC9DnP,SAASjB,KAAKwxN,MAAMxxN,KAAKwxN,MAAM1zN,OAAS,GAAGsS,aAAa,SAAU,IACxEinD,GAAWr3D,KAAKm05B,GAAI,CAChB,OAAUiB,EAAU,GAAGz05B,WACvB,MAASX,KAAK25rB,YAAYrM,kBAAkB,oBAC5C,aAActtrB,KAAK25rB,YAAYrM,kBAAkB,sBAErDttrB,KAAKmiB,YAAS8qD,CAClB,EACAkm1B,EAAiB505B,UAAUk15B,aAAe,WACtC,IAAI7ysB,EAAQ5gN,KAKZ,GAJAA,KAAKq15B,yBACLr15B,KAAKs15B,2BACLt15B,KAAKu15B,2BACLv15B,KAAKw15B,wBACDx15B,KAAKwxN,MAAM1zN,OAAQ,CACnB,IAAI235B,EAAmBz15B,KAAKwxN,MAAMl2L,WAAU,SAAUmxC,GAAQ,OAAOA,EAAKr8D,aAAa,WAAawwM,EAAM+4e,YAAY3/Q,YAAYr5a,UAAY,IAC1Iq5a,EAAeh6a,KAAK25rB,YAAY46N,iBAAwC,IAAtBkB,EAA2BA,GACzEz15B,KAAK25rB,YAAY3/Q,YAAc,GAAKh6a,KAAK25rB,YAAYzzC,UAC7D/hpB,GAAUnE,KAAKwxN,MAAMvwN,SAAS+4a,EAAYr5a,WAAY,KAAM,CAAC,gBAAiB,YAAa,IAC3FX,KAAKwxN,MAAMvwN,SAAS+4a,EAAYr5a,WAAY,KAAKiI,aAAa,eAAgB,OAClF,CACJ,EACAuq5B,EAAiB505B,UAAU825B,uBAAyB,WAChD,IAAIK,EAAY,CAAC,cAAe,mBAC5BC,EAAoB,CAAC,sBAAuB,aAC5CtpN,EAAW,CAAC,aAAc,mBAC1BupN,EAAmB,CAAC,qBAAsB,aAC1C515B,KAAK25rB,YAAY1/Q,WAAa,GAAKj6a,KAAK25rB,YAAY3/Q,YAAc,GAClE71a,GAAUnE,KAAK+jF,KAAMsonB,EAAUupN,GAC/Bzx5B,GAAUnE,KAAKi4D,MAAOy91B,EAAWC,GACjCxx5B,GAAUnE,KAAK6wtB,aAAa17sB,cAAc,aAAcug5B,EAAWC,GACnExx5B,GAAUnE,KAAK6wtB,aAAa17sB,cAAc,YAAak3rB,EAAUupN,KAGjEzx5B,GAAUnE,KAAK+jF,KAAM6x0B,EAAkBvpN,GACvClosB,GAAUnE,KAAKi4D,MAAO091B,EAAmBD,GACzCvx5B,GAAUnE,KAAK6wtB,aAAa17sB,cAAc,YAAayg5B,EAAkBvpN,GACzElosB,GAAUnE,KAAK6wtB,aAAa17sB,cAAc,aAAcwg5B,EAAmBD,GAEnF,EACAvC,EAAiB505B,UAAU+25B,yBAA2B,WAC9Ct15B,KAAK25rB,YAAY3/Q,YAAch6a,KAAK25rB,YAAYzzC,WAAclmpB,KAAK25rB,YAAY46N,gBAC5Ev05B,KAAKwxN,MAAMl2L,WAAU,SAAUmxC,GAAQ,OAAoD,IAA7CxrE,SAASwrE,EAAKr8D,aAAa,SAAU,GAAW,IACjGjM,GAAUnE,KAAKi05B,GAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,cAGpF9v5B,GAAUnE,KAAKi05B,GAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,mBAEtF,EACAd,EAAiB505B,UAAUg35B,yBAA2B,WAClD,IAAI37N,EAAW55rB,KAAK25rB,YAChB+7N,EAAY115B,KAAKwxN,MAAM,GAAG7yM,UAAUjc,QAAQk3rB,EAASq7N,WAAY,IACjEvgzB,EAAW10G,KAAK6wtB,aAAapjsB,iBAAiB,oFAC7Cio4B,EAAU535B,SAAWkC,KAAKwxN,MAAM1zN,QAAWmD,SAASy05B,EAAW,IAAM97N,EAAS1zC,UAAY0zC,EAAS3/Q,YAChG2/Q,EAAS26N,gBAAkBr05B,MAAMQ,KAAKg0G,GAAUr3F,MAAK,SAAUg4D,GAAQ,OAAOp0E,SAASo0E,EAAKjlE,aAAa,SAAU,MAAQwprB,EAAS3/Q,UAAY,IACpJ91a,GAAUnE,KAAKm05B,GAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,oBAG9Ehw5B,GAAUnE,KAAKm05B,GAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,aAE5F,EACAhB,EAAiB505B,UAAUi35B,sBAAwB,WAC/C,IAAIK,EAAW,CAAC,aAAc,mBAC1BC,EAAmB,CAAC,qBAAsB,aAC1CC,EAAW,CAAC,aAAc,mBAC1BC,EAAmB,CAAC,qBAAsB,aAC1Cp8N,EAAW55rB,KAAK25rB,YAChBC,EAAS5/Q,cAAgB4/Q,EAAS3/Q,YAA6C,IAA/B2/Q,EAASipB,mBACzD1+sB,GAAUnE,KAAK21D,KAAMmg2B,EAAkBD,GACvC1x5B,GAAUnE,KAAKI,KAAM415B,EAAkBD,GACvC5x5B,GAAUnE,KAAK6wtB,aAAa17sB,cAAc,YAAa2g5B,EAAkBD,GACzE1x5B,GAAUnE,KAAK6wtB,aAAa17sB,cAAc,YAAa6g5B,EAAkBD,KAGzE5x5B,GAAUnE,KAAK21D,KAAMkg2B,EAAUC,GAC/B3x5B,GAAUnE,KAAKI,KAAM215B,EAAUC,GAC/B7x5B,GAAUnE,KAAK6wtB,aAAa17sB,cAAc,YAAa0g5B,EAAUC,GACjE3x5B,GAAUnE,KAAK6wtB,aAAa17sB,cAAc,YAAa4g5B,EAAUC,GAEzE,EACO7C,CACX,CA9asC,GCFlC8C,IAA8B,WAO9B,SAASA,EAAat8N,GAClB35rB,KAAK25rB,YAAcA,CACvB,CAkFA,OA3EAs8N,EAAa135B,UAAUupE,OAAS,WAC5B,IAAI41F,EAAM1/H,GAAc,MAAO,CAAE9xB,UAAW,mBAC5ClM,KAAKk25B,cAAgBl43B,GAAc,OAAQ,CAAE9xB,UAAW,cAAe8nD,OAAQ,oBAC/Eh0D,KAAKm25B,iBAAmBn43B,GAAc,OAAQ,CAAE9xB,UAAW,iBAAkB8nD,OAAQ,oBACrFs0F,GAAO,CAACtoJ,KAAKk25B,cAAel25B,KAAKm25B,kBAAmBz4vB,GACpD19J,KAAK25rB,YAAYlgoB,QAAQliD,YAAYmmJ,GACrC19J,KAAKsue,SACT,EAMA2nb,EAAa135B,UAAU+ve,QAAU,WAC7B,IAAIsrN,EAAW55rB,KAAK25rB,YACpB35rB,KAAKk25B,cAAc9k5B,YAAcpR,KAAKmb,OAAOy+qB,EAAStM,kBAAkB,mBAAoB,CAAgC,IAA/BsM,EAASipB,kBAA0B,EACxHjpB,EAAS5/Q,YAAa4/Q,EAAS3/Q,YAAc,EAAG2/Q,EAASipB,mBAAqB,IAAM,IAC5F7itB,KAAKm25B,iBAAiB/k5B,YAAcpR,KAAKmb,OAAOy+qB,EAAStM,kBAAkBsM,EAASipB,mBAAqB,EAAI,gBAAkB,kBAAmB,CAACjpB,EAASipB,mBAAqB,EAAGjpB,EAASipB,kBAAqBjpB,EAAS7xD,UAAY6xD,EAAS5/Q,YAAc,GAAM,EAAI,EACpQ4/Q,EAAS7xD,SAAW6xD,EAAS5/Q,YAAc4/Q,EAASipB,kBAAoBjpB,EAASipB,kBAC7EjpB,EAAS7xD,SAAW6xD,EAAS5/Q,cACrCh6a,KAAKk25B,cAAchy5B,cAAcC,UAAU0C,OAAO,SACtD,EAMAov5B,EAAa135B,UAAUuy1B,YAAc,WAC7B9w1B,KAAKk25B,gBACLl25B,KAAKk25B,cAAc7x5B,MAAMqmB,QAAU,QAEnC1qB,KAAKm25B,mBACLn25B,KAAKm25B,iBAAiB9x5B,MAAMqmB,QAAU,OAE9C,EAMAur4B,EAAa135B,UAAU4ulB,YAAc,WAC5BntlB,KAAKk25B,eACNl25B,KAAK8nE,SAET9nE,KAAKk25B,cAAc7x5B,MAAMqmB,QAAU,GACnC1qB,KAAKm25B,iBAAiB9x5B,MAAMqmB,QAAU,EAC1C,EAQAur4B,EAAa135B,UAAUklE,QAAU,WAC7B,EAWJwy1B,EAAa135B,UAAU4c,OAAS,SAAU4zD,EAAK3D,GAG3C,IAFA,IAAIgr1B,EACAtwc,EAASlid,OACJzG,EAAI,EAAGA,EAAIiuE,EAAKttE,OAAQX,IAC7Bi55B,EAAO,IAAItwc,EAAO,MAAS3od,EAAK,MAAO,MACvC4xE,EAAMA,EAAIrsE,QAAQ0z5B,EAAMhr1B,EAAKnqE,SAAS9D,EAAEwD,WAAY,KAAKA,YAE7D,OAAOouE,CACX,EACOkn1B,CACX,CA5FkC,GCJ9B/0qB,IAAyC,WACzC,IAAID,EAAgB,SAAUzhP,EAAGuF,GAI7B,OAHAk8O,EAAgB7jP,OAAO+B,gBAClB,CAAEE,UAAW,cAAgBa,OAAS,SAAUV,EAAGuF,GAAKvF,EAAEH,UAAY0F,CAAG,GAC1E,SAAUvF,EAAGuF,GAAK,IAAK,IAAIxE,KAAKwE,EAAOA,EAAEvD,eAAejB,KAAIf,EAAEe,GAAKwE,EAAExE,GAAI,EACtE0gP,EAAczhP,EAAGuF,EAC5B,EACA,OAAO,SAAUvF,EAAGuF,GAEhB,SAASo8O,IAAOnhP,KAAK1B,YAAckB,CAAG,CADtCyhP,EAAczhP,EAAGuF,GAEjBvF,EAAEjB,UAAkB,OAANwG,EAAa3H,OAAO4B,OAAO+F,IAAMo8O,EAAG5iP,UAAYwG,EAAExG,UAAW,IAAI4iP,EACnF,CACJ,CAZ6C,GAazCksE,IAA0C,SAAUC,EAAYnrS,EAAQvjB,EAAK8lP,GAC7E,IAA2HllP,EAAvHF,EAAIzB,UAAUC,OAAQe,EAAIS,EAAI,EAAI6iB,EAAkB,OAATuiO,EAAgBA,EAAOtnP,OAAOK,yBAAyB0kB,EAAQvjB,GAAO8lP,EACrH,GAAuB,kBAAZjlP,SAAoD,oBAArBA,QAAQ8tT,SAAyB1uT,EAAIY,QAAQ8tT,SAASD,EAAYnrS,EAAQvjB,EAAK8lP,QACpH,IAAK,IAAIvnP,EAAImwT,EAAWxvT,OAAS,EAAGX,GAAK,EAAGA,KAASqC,EAAI8tT,EAAWnwT,MAAI0B,GAAKS,EAAI,EAAIE,EAAEX,GAAKS,EAAI,EAAIE,EAAE2iB,EAAQvjB,EAAKC,GAAKW,EAAE2iB,EAAQvjB,KAASC,GAChJ,OAAOS,EAAI,GAAKT,GAAKzB,OAAOe,eAAegkB,EAAQvjB,EAAKC,GAAIA,CAChE,EAqBIw35B,IAAuB,SAAU7xsB,GAUjC,SAAS6xsB,EAAMr34B,EAASy6C,EAAS7gC,GAC7B,IAAIgoL,EAAQ4D,EAAOzkN,KAAKC,KAAMgf,EAASy6C,IAAYz5D,KASnD,OAPA4gN,EAAM01sB,WAAY,EAClB11sB,EAAM+hgB,UAAW,EACjB/hgB,EAAM21sB,YAAc,gBACpB31sB,EAAM41sB,iBAAkB,EAExB51sB,EAAM0zgB,UAAW,EACjB1zgB,EAAMhoL,OAASA,EACRgoL,CACX,CAikCA,OArlCAsgC,IAAUm1qB,EAAO7xsB,GA2BjB6xsB,EAAM935B,UAAUwqe,gBAAkB,WAC9B,IAAIe,EAAU,GAed,OAdI9pe,KAAKy25B,uBACL3sb,EAAQnse,KAAK,CACT2re,OAAQ,kBACRl+Z,KAAM,CAACprE,MACPa,KAAM,oBAGVb,KAAK025B,kBACL5sb,EAAQnse,KAAK,CACT2re,OAAQ,gBACRl+Z,KAAM,CAACprE,MACPa,KAAM,kBAGPipe,CACX,EAOAusb,EAAM935B,UAAUgwe,UAAY,WAExBvue,KAAK225B,iBAAmB,CACpBC,gBAAiB,mBACjBC,eAAgB,cAChBC,cAAe,aACfC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,oBAAqB,sBACrBC,iBAAkB,yBAClBC,qBAAsB,6BACtBC,cAAe,iBACfC,iBAAkB,QAClBC,gBAAiB,mBACjBC,eAAgB,cAChBC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,oBAAqB,sBACrBC,iBAAkB,yBAClBC,qBAAsB,6BACtBC,cAAe,iBACfC,iBAAkB,QAClB5tjB,IAAK,MACL57S,UAAW,kBACXyp2B,YAAa,oBACbC,YAAa,yBACb13c,KAAM,QACNz0K,GAAI,OACJosnB,MAAO,UAEXn45B,KAAKo45B,gBAAkB,IAAIjF,IAAiBnz5B,MAC5CA,KAAKq45B,mBAAqB,IAAIpC,IAAaj25B,KAC/C,EAMAq25B,EAAM935B,UAAUupE,OAAS,WACrB9nE,KAAKy5D,QAAQ7wD,aAAa,YAAa,SACvC5I,KAAKy5D,QAAQ7wD,aAAa,WAAY,MACtC5I,KAAKs45B,mBACDt45B,KAAK6O,YAC+B,IAAhC7O,KAAK6O,SAASnK,QAAQ,KACtB+tD,GAAS,CAACzyD,KAAKy5D,SAAUz5D,KAAK6O,SAAS7N,MAAM,MAG7CyxD,GAAS,CAACzyD,KAAKy5D,SAAU,CAACz5D,KAAK6O,YAGlC7O,KAAKs25B,WACNt25B,KAAKy5D,QAAQ7wD,aAAa,WAAY,KAEtC5I,KAAK+oI,SACD/oI,KAAKu45B,mBACLv45B,KAAKkhC,GAAGlhC,KAAKu25B,YAAav25B,KAAKq/uB,cAAer/uB,MAC9CA,KAAKg+F,OAAOh+F,KAAKu25B,YAAa,CAAC,IAG/Bv25B,KAAKq/uB,iBAITr/uB,KAAKwvvB,YACLxvvB,KAAK6itB,kBAAoB7itB,KAAK6itB,mBAAqB,EACnD7itB,KAAKw45B,8BACLx45B,KAAKo45B,gBAAgBtw1B,SACjB9nE,KAAKy45B,oBACLz45B,KAAKq45B,mBAAmBvw1B,SAE5B9nE,KAAK045B,6BACD145B,KAAK025B,kBAAoB125B,KAAK63yB,qBAC9B73yB,KAAK63yB,oBAAoB/vuB,SAE7B9nE,KAAK245B,eACD345B,KAAKy25B,uBAAyBz25B,KAAK445B,uBACnC545B,KAAK445B,sBAAsB9w1B,SAE/B9nE,KAAKsue,UACLtue,KAAKo/d,QAAQ,UAAW,CAAE,YAAep/d,KAAKg6a,YAAa,kBAAqBh6a,KAAK6itB,qBAEzF7itB,KAAK85e,aACL95e,KAAK06F,aACT,EAOA27zB,EAAM935B,UAAUgye,eAAiB,WAE7B,OAAOvwe,KAAK6we,aADI,CAAC,cAAe,YAEpC,EAOAwlb,EAAM935B,UAAUklE,QAAU,WAClBzjE,KAAKkie,cAGLlie,KAAKu45B,oBACLv45B,KAAKqvC,IAAIrvC,KAAKu25B,YAAav25B,KAAKq/uB,eAC3Br/uB,KAAKs25B,WACNt25B,KAAKmvrB,gBAAgB,CAAC,cAG9BnvrB,KAAK26F,iBACL36F,KAAKi7e,eACLz2R,EAAOjmN,UAAUklE,QAAQ1jE,KAAKC,MAC9BA,KAAKo45B,gBAAgB301B,UACrBzjE,KAAKq45B,mBAAmB501B,UACnBzjE,KAAKu45B,oBACNv45B,KAAKy5D,QAAQ96C,UAAY,IAEjC,EAQA034B,EAAM935B,UAAU4wrB,gBAAkB,SAAU4wE,EAAepzuB,GACvD3sB,KAAKywe,cAAcsvR,EAAepzuB,EACtC,EAOA0p4B,EAAM935B,UAAUyke,cAAgB,WAC5B,MAAO,OACX,EASAqzb,EAAM935B,UAAUoke,kBAAoB,SAAUiF,EAASC,GACnD,IAAI7ne,KAAKkie,YAGT,GAAK0F,EAAQmgK,WAAa/noB,KAAKstrB,kBAAkB,QAAWzlN,EAAQkgK,WAAa/noB,KAAK6itB,kBAAtF,CAIIj7O,EAAQs+K,YAAcr+K,EAAQq+K,YAC9BlmpB,KAAKo45B,gBAAgB/E,sBACrBrz5B,KAAKo45B,gBAAgB9pb,WAEzB,IAAK,IAAIn0Q,EAAK,EAAGjiC,EAAK96L,OAAOC,KAAKuqe,GAAUztQ,EAAKjiC,EAAGp6L,OAAQq8N,IAAM,CAE9D,OADWjiC,EAAGiiC,IAEV,IAAK,cACGn6N,KAAK645B,cAAcjxb,EAAQ5tD,YAAa6tD,EAAQ7tD,cAChDh6a,KAAK845B,mBAAmBlxb,EAASC,GAErC,MACJ,IAAK,WACL,IAAK,oBACL,IAAK,aACG7ne,KAAK025B,kBAAoB125B,KAAK63yB,sBAC1BhwU,EAAQkgK,WAAangK,EAAQmgK,WAC7B/noB,KAAKg6a,YAAc,GAEvBh6a,KAAK63yB,oBAAoBkhH,iBAAiB,QAAS/45B,KAAK+noB,WAExDngK,EAAQmgK,WAAalgK,EAAQkgK,UAC7B/noB,KAAK+noB,SAAWngK,EAAQmgK,SACxB/noB,KAAK845B,mBAAmBlxb,EAASC,GAC7B7ne,KAAKs0tB,UAAYt0tB,KAAKs25B,WACtBt25B,KAAK44B,OACAqpc,cAAc,CAAEw3N,aAAc,CAAE1xD,SAAUlgK,EAAQkgK,YAAc,IAIzE/noB,KAAKsue,UAET,MACJ,IAAK,YACGtue,KAAK025B,kBAAoB125B,KAAK63yB,sBAC9B73yB,KAAK63yB,oBAAoBp0uB,UACzBzjE,KAAK63yB,oBAAoB/vuB,UAE7B9nE,KAAKsue,UACL,MACJ,IAAK,WACDtue,KAAK+3f,WAAa/3f,KAAK6lT,QAAQ7lT,KAAK+oI,UACpC/oI,KAAKsue,UACL,MACJ,IAAK,SACDtue,KAAKs45B,mBACLt45B,KAAKsue,UACL,MACJ,IAAK,wBACGtue,KAAKy25B,uBAAyBz25B,KAAK445B,uBACnC545B,KAAK445B,sBAAsB9w1B,SAE/B,MACJ,IAAK,kBACG9nE,KAAK445B,uBACL545B,KAAK445B,sBAAsBtqb,UAE/B,MACJ,IAAK,YACDtue,KAAKwvvB,YACL,MACJ,IAAK,qBACGxvvB,KAAKy45B,mBACLz45B,KAAKq45B,mBAAmBlrU,cAGxBntlB,KAAKq45B,mBAAmBvnE,cAIxC,CACA9w1B,KAAKg55B,aAxEL,MAFIh55B,KAAK+noB,SAAW/noB,KAAK6itB,iBA2E7B,EACAwzM,EAAM935B,UAAUu7e,WAAa,WACpB95e,KAAKs25B,YACN53b,GAAa53d,IAAI9G,KAAKy5D,QAAS,UAAWz5D,KAAKq6e,gBAAiBr6e,MAChE0+d,GAAa53d,IAAIyuB,SAASwK,KAAM,UAAW//B,KAAKosuB,eAAgBpsuB,OAEpE0+d,GAAa53d,IAAI9G,KAAKy5D,QAAS,UAAWz5D,KAAKi55B,UAAWj55B,MAC1D0+d,GAAa53d,IAAI9G,KAAKy5D,QAAS,WAAYz5D,KAAKk4pB,WAAYl4pB,MAE5D0+d,GAAa53d,IAAInC,OAAQ,SAAU3E,KAAKg55B,YAAah55B,MAErD0+d,GAAa53d,IAAInC,OAAQ,OAAQ3E,KAAKg55B,YAAah55B,KACvD,EACAq25B,EAAM935B,UAAU08e,aAAe,WACtBj7e,KAAKs25B,YACN53b,GAAa73d,OAAO7G,KAAKy5D,QAAS,UAAWz5D,KAAKq6e,iBAClD3b,GAAa73d,OAAO0uB,SAASwK,KAAM,UAAW//B,KAAKosuB,iBAEvD1tQ,GAAa73d,OAAO7G,KAAKy5D,QAAS,UAAWz5D,KAAKi55B,WAClDv6b,GAAa73d,OAAO7G,KAAKy5D,QAAS,WAAYz5D,KAAKk4pB,YAEnDx5L,GAAa73d,OAAOlC,OAAQ,SAAU3E,KAAKg55B,aAE3Ct6b,GAAa73d,OAAOlC,OAAQ,OAAQ3E,KAAKg55B,YAC7C,EACA3C,EAAM935B,UAAU065B,UAAY,SAAU/75B,GAElC,GAAI8zK,GADyBhxK,KAAKk55B,6BACa,CAC3C,IAAI/24B,EAASjlB,EAAEilB,OACXg34B,EAAen55B,KAAKqxtB,kBAIxB,GAHKrxtB,KAAKs25B,YACNt25B,KAAKy5D,QAAQ0tR,UAAY,GAEzBhlU,IAAWniB,KAAKy5D,UAAYz5D,KAAKs25B,UAAW,CAC5C,IAAIxlM,EAAyB9wtB,KAAK+wtB,0BAA0B/wtB,KAAKy5D,QAAS,IAE1E,YADAz5D,KAAK40tB,SAAS9D,EAAuB,IAAI,EAE7C,CACA,GAAI3usB,IAAWniB,KAAKy5D,QAEhB,YADAz5D,KAAKy5D,QAAQ0tR,SAAW,GAGxBhlU,IAAWg34B,GAAiBh34B,EAAOhe,UAAUC,SAAS,cACtDpE,KAAK40tB,SAASzysB,GAAQ,EAE9B,CACJ,EAEAk04B,EAAM935B,UAAU25pB,WAAa,SAAUh7pB,GACnC,IAAIylX,EAAiB3iX,KAAK00tB,oBACtBykM,EAAen55B,KAAKqxtB,kBACnBrgjB,GAAkB2xM,IACnB3iX,KAAKm2pB,YAAYxzS,GAAgB,GAEjC3iX,KAAK0itB,WAAay2M,GAAgBA,EAAah15B,UAAUC,SAAS,kBAClEpE,KAAKm2pB,YAAYgjQ,GAAc,GAEnCn55B,KAAKo55B,iCACAp55B,KAAKs25B,YACNt25B,KAAKy5D,QAAQ0tR,SAAW,GAExBnnV,KAAKs25B,YACLt25B,KAAKy5D,QAAQ0tR,UAAY,EAEjC,EACAkvkB,EAAM935B,UAAU6tuB,eAAiB,SAAUlvuB,GACvC,GAAIA,EAAEmkS,QACgB,KAAdnkS,EAAE4iS,QAAgB,CAClB,IAAIgxb,EAAyB9wtB,KAAK+wtB,0BAA0B/wtB,KAAKy5D,QAAS,IACtEq3pB,EAAuBhztB,OAAS,GAChCgztB,EAAuB,GAAGlid,OAElC,CAER,EACAynpB,EAAM935B,UAAU87e,gBAAkB,SAAUn9e,GACxC,IAAI8gwB,EAAWt8vB,GAAOxE,EAAG,CAAE4jV,QAAQ,IACnC9gV,KAAKg+F,OAAO/2F,GAAmB+2vB,IACP,IAApBA,EAASl9a,QACT5jV,EAAEm2X,0BAEV,EACAgjiB,EAAM935B,UAAUm8F,YAAc,WACtB16F,KAAKkie,aAGJlie,KAAKs25B,WACNt25B,KAAKkhC,GAAGj6B,GAAmBjH,KAAKwkY,WAAYxkY,KAEpD,EACAq25B,EAAM935B,UAAUo8F,eAAiB,WACzB36F,KAAKkie,aAGJlie,KAAKs25B,WACNt25B,KAAKqvC,IAAIpoC,GAAmBjH,KAAKwkY,WAEzC,EACA6xhB,EAAM935B,UAAUimY,WAAa,SAAUtnY,GAC9B8C,KAAKs25B,YACFt25B,KAAKixtB,qBACLjxtB,KAAKsxtB,iBAAiBp0tB,IAGtBA,EAAEijE,iBACFngE,KAAKwxtB,iBAGjB,EAIA6kM,EAAM935B,UAAU0ytB,mBAAqB,WACjC,QAAOjxtB,KAAKk55B,2BAChB,EAIA7C,EAAM935B,UAAUw0tB,uBAAyB,WACrC/ytB,KAAKy5D,QAAQm1M,OACjB,EAIAynpB,EAAM935B,UAAUiztB,cAAgB,WAC5B,IAAIV,EAAyB9wtB,KAAK+wtB,0BAA0B/wtB,KAAKy5D,QAAS,IACtEq3pB,EAAuBhztB,OAAS,GAChCgztB,EAAuB,GAAGlid,OAElC,EACAynpB,EAAM935B,UAAU865B,8BAAgC,WAC5C,IAAIC,EAAoBt55B,KAAKmt0B,mBACzBmsF,GACAA,EAAkB1qpB,OAE1B,EACAynpB,EAAM935B,UAAU665B,+BAAiC,WAC7C,IAAItoM,EAAyB9wtB,KAAK+wtB,0BAA0B/wtB,KAAKy5D,QAAS,IACtE0/1B,EAAen55B,KAAKqxtB,kBACpBrxtB,KAAK0itB,WAAay2M,IAAiBnovB,GAAkBmovB,EAAal9zB,cAClEk9zB,EAAahykB,SAAW,EAEnB2pY,EAAuBhztB,OAAS,IACrCgztB,EAAuBA,EAAuBhztB,OAAS,GAAGqpV,SAAW,EAE7E,EAKAkvkB,EAAM935B,UAAU+ytB,iBAAmB,SAAUp0tB,GACzC8C,KAAKg7e,UAAY99e,EAAE0B,IACf1B,EAAEoyC,UAA0B,IAAdpyC,EAAE4iS,QAChB9/R,KAAKu55B,sBAAsBr85B,GAER,IAAdA,EAAE4iS,QACP9/R,KAAKw55B,iBAAiBt85B,GAEH,KAAdA,EAAE4iS,SAAgC,KAAd5iS,EAAE4iS,QAC3B9/R,KAAKy55B,6BAA6Bv85B,GAEf,KAAdA,EAAE4iS,SAAgC,KAAd5iS,EAAE4iS,SAAgC,KAAd5iS,EAAE4iS,SAAgC,KAAd5iS,EAAE4iS,SACnE9/R,KAAK055B,oBAAoBx85B,GAE7B8C,KAAKg7e,UAAY,EACrB,EACAq7a,EAAM935B,UAAU265B,0BAA4B,WAGxC,IAFA,IAAIS,EACAC,EAAmB555B,KAAKy5D,QAAQhsC,iBAAiB,mCAC5CtwB,EAAI,EAAGA,EAAIy85B,EAAiB975B,OAAQX,IAAK,CAC9C,IAAIs8D,EAAUmg2B,EAAiB345B,SAAS9D,EAAEwD,WAAY,KACtD,GAAI84D,IAAYA,EAAQt1D,UAAUC,SAAS,cAAgBq1D,EAAQt1D,UAAUC,SAAS,kBAAmB,CACrGu15B,EAAyBlg2B,EACzB,KACJ,CACJ,CACA,OAAOkg2B,CACX,EACAtD,EAAM935B,UAAUi75B,iBAAmB,SAAUt85B,GACzC,IAAI285B,EAAwB755B,KAAKk55B,4BAC7BpoM,EAAyB9wtB,KAAK+wtB,0BAA0B/wtB,KAAKy5D,QAAS,IACtE0/1B,EAAen55B,KAAKqxtB,kBACxB,GAAIP,EAAuBhztB,OAAS,EAChC,GAAIkC,KAAK0itB,WAAay2M,GAAgBU,IAA0B/oM,EAAuBA,EAAuBhztB,OAAS,GACnHq75B,EAAahykB,SAAW,OAGxB,IAAK,IAAIhqV,EAAI,EAAGA,EAAI2ztB,EAAuBhztB,OAAQX,IAC/C,GAAI085B,IAA0B/oM,EAAuB7vtB,SAAS9D,EAAEwD,WAAY,KAAM,CAC9E,IAAIk3tB,EAAkB16tB,EAAI,EACtB06tB,EAAkB/G,EAAuBhztB,SACzCZ,EAAEijE,iBACF2wpB,EAAuB7vtB,SAAS42tB,EAAgBl3tB,WAAY,KAAKiuQ,SAErE,KACJ,CAIhB,EACAynpB,EAAM935B,UAAUg75B,sBAAwB,SAAUr85B,GAC9C,IAAI285B,EAAwB755B,KAAKk55B,4BAC7BpoM,EAAyB9wtB,KAAK+wtB,0BAA0B/wtB,KAAKy5D,QAAS,IACtE0/1B,EAAen55B,KAAKqxtB,kBACxB,GAAIrxtB,KAAK0itB,WAAay2M,GAAgBA,EAAah15B,UAAUC,SAAS,iBAClE+05B,EAAahykB,UAAY,EACzBnnV,KAAK40tB,SAAS9D,EAAuBA,EAAuBhztB,OAAS,IAAI,QAExE,GAAIgztB,EAAuBhztB,OAAS,EACrC,IAAK,IAAIX,EAAI,EAAGA,EAAI2ztB,EAAuBhztB,OAAQX,IAC/C,GAAI085B,IAA0B/oM,EAAuB7vtB,SAAS9D,EAAEwD,WAAY,KAAM,CAC9E,IAAIm55B,EAAkB385B,EAAI,EAC1B,GAAI285B,GAAmB,EACnB585B,EAAEijE,iBACF2wpB,EAAuB7vtB,SAAS645B,EAAgBn55B,WAAY,KAAKiuQ,aAEhE,GAAI5uQ,KAAKs25B,UAAW,CACrB,IAAIl1xB,EAAOphI,KAAK44B,OAAOouG,UAEnB6qlB,EADUzwlB,EAAKA,EAAKtjI,OAAS,GACV42C,UACvBx3C,EAAEijE,iBACF0xpB,EAASjjd,QACT5uQ,KAAKw25B,iBAAkB,CAC3B,CACA,KACJ,CAGZ,EAIAH,EAAM935B,UAAUkztB,qBAAuB,WACnC,QAAIzxtB,KAAKw25B,kBACLx25B,KAAKw25B,iBAAkB,GAChB,EAGf,EAEAH,EAAM935B,UAAUk75B,6BAA+B,SAAUv85B,GACrD,IAAI285B,EAAwB755B,KAAK00tB,oBACjC,GAAImlM,EAAuB,CACvB755B,KAAKm4vB,SAASl3vB,SAAS445B,EAAsBzp5B,aAAa,SAAU,KACpE,IAAIkp5B,EAAoBt55B,KAAKmt0B,mBACzBnhyB,EAAgBhsC,KAAK+55B,SAASF,GAC9BG,EAAeh65B,KAAKi65B,kBAAkBju3B,GACnB,YAAlBA,GAAiD,WAAlBA,GAAgD,WAAlBA,GACzC,WAAlBA,GAAgD,SAAlBA,GAA8C,SAAlBA,IAC1Dgu3B,GAAiBA,EAAa715B,UAAUC,SAAS,aAG/CpE,KAAKk65B,yBAAyBL,GACnC755B,KAAKm65B,0BAA0BN,GAG3BP,GACAA,EAAkB1qpB,QAPtBorpB,EAAaprpB,OAUrB,CACJ,EACAynpB,EAAM935B,UAAUm75B,oBAAsB,SAAUx85B,GAC5C,IAAIk95B,EAA4B,KAAdl95B,EAAE4iS,QAAiB,UAA0B,KAAd5iS,EAAE4iS,QAAiB,UAChD,KAAd5iS,EAAE4iS,QAAiB,UAA0B,KAAd5iS,EAAE4iS,QAAiB,WAAa,GACjEu6nB,EAAar65B,KAAKy5D,QAAQtkD,cAAcil5B,GACxCP,EAAwB755B,KAAK00tB,oBACjC,IAAK1jjB,GAAkBqpvB,IAAeA,EAAWrg4B,aAAa,WACtD11B,MAAMrD,SAASo55B,EAAWjq5B,aAAa,SAAU,KAAM,CAC3DpQ,KAAKm4vB,SAASl3vB,SAASo55B,EAAWjq5B,aAAa,SAAU,KACzD,IAAIkp5B,EAAoBt55B,KAAKmt0B,mBACzBnt0B,KAAKk65B,yBAAyBL,GAC9B755B,KAAKm65B,0BAA0BN,GAG3BP,GACAA,EAAkB1qpB,OAG9B,CACJ,EACAynpB,EAAM935B,UAAU275B,yBAA2B,SAAUzg2B,GACjD,IAAIztB,EAAgBhsC,KAAK+55B,SAAStg2B,GAClC,MAAyB,aAAlBztB,GAAkD,YAAlBA,GAAiD,YAAlBA,GAC7C,YAAlBA,CACX,EACAqq3B,EAAM935B,UAAU475B,0BAA4B,SAAU1g2B,GAClD,IAAIztB,EAAgBhsC,KAAK+55B,SAAStg2B,GAC9Bug2B,EAAeh65B,KAAKi65B,kBAAkBju3B,GACtCgu3B,GAAgBA,EAAa715B,UAAUC,SAAS,eAC1B,YAAlB4nC,GAAiD,YAAlBA,EACnBhsC,KAAKy5D,QAAQtkD,cAAc,YACjCy5P,QAGN5uQ,KAAKwxtB,gBAGjB,EACA6kM,EAAM935B,UAAU+75B,2BAA6B,WACzC,IAAIC,EAAmBv65B,KAAKy5D,QAAQhsC,iBAAiB,mCACrD,GAAI8s4B,EAAiBz85B,OAAS,EAC1B,IAAK,IAAIX,EAAI,EAAGA,EAAIo95B,EAAiBz85B,OAAQX,IAAK,CAC9C,IAAIs8D,EAAU8g2B,EAAiBt55B,SAAS9D,EAAEwD,WAAY,KAClD84D,IACAA,EAAQ0tR,UAAY,EAE5B,CAER,EACAkvkB,EAAM935B,UAAU4u0B,iBAAmB,WAC/B,OAAOnt0B,KAAKy5D,QAAQtkD,cAAc,YACtC,EAIAkh5B,EAAM935B,UAAU8ytB,gBAAkB,WAC9B,IACI8nM,EADAqB,EAAqBx65B,KAAKy5D,QAAQtkD,cAAc,oBAKpD,OAHIql5B,IACArB,EAAeqB,EAAmBl03B,SAAS,IAExC6y3B,CACX,EACA9C,EAAM935B,UAAUm2tB,kBAAoB,WAChC,OAAO10tB,KAAKy5D,QAAQtkD,cAAc,aACtC,EACAkh5B,EAAM935B,UAAUw75B,SAAW,SAAUtg2B,GAIjC,IAHA,IAAIgh2B,EACAt25B,EAAY,CAAC,WAAY,UAAW,UAAW,SAAU,OACzD,OAAQ,SAAU,SAAU,UAAW,WAClChH,EAAI,EAAGA,EAAIgH,EAAUrG,OAAQX,IAClC,GAAIs8D,GAAWA,EAAQt1D,UAAUC,SAASD,EAAUlD,SAAS9D,EAAEwD,WAAY,MAEvE,OADA855B,EAAet25B,EAAUlD,SAAS9D,EAAEwD,WAAY,KAIxD,OAAO855B,CACX,EACApE,EAAM935B,UAAU075B,kBAAoB,SAAU/t5B,GAC1C,OAAOlM,KAAKy5D,QAAQtkD,cAAc,IAAMjJ,EAC5C,EAMAmq5B,EAAM935B,UAAUwytB,0BAA4B,SAAUt3pB,EAASih2B,GAI3D,IAHA,IACIC,EADSlh2B,EACgBnzB,SACzBs03B,EAAgBF,EACXv95B,EAAI,EAAGA,EAAIw95B,EAAgB785B,OAAQX,IAAK,CAC7C,IAAI0pe,EAAY8zb,EAAgB155B,SAAS9D,EAAEwD,WAAY,KACvD,GAAIkme,EAAUvgc,SAASxoC,OAAS,IAAM+oe,EAAU1ie,UAAUC,SAAS,eAC/Dw25B,EAAgB565B,KAAK+wtB,0BAA0BlqP,EAAW+zb,OAEzD,CACD,IAAIC,EAAkBF,EAAgB155B,SAAS9D,EAAEwD,WAAY,MACzDk65B,EAAgB7g4B,aAAa,aAAgB6sc,EAAU1ie,UAAUC,SAAS,cAC3C,SAA5Byie,EAAUxie,MAAMqmB,SACfsmJ,GAAkB61T,EAAU5qY,eAChC2+zB,EAAcj95B,KAAKk95B,EAE3B,CACJ,CACA,OAAOD,CACX,EACAvE,EAAM935B,UAAUq2tB,SAAW,SAAUn7pB,EAASqh2B,GACrC9pvB,GAAkBv3G,KACfqh2B,GACAro2B,GAAS,CAACgH,GAAU,CAAC,YAAa,YAEtCA,EAAQ0tR,SAAW,EAE3B,EACAkvkB,EAAM935B,UAAU43pB,YAAc,SAAU18lB,EAASsh2B,GACzCA,GACAro2B,GAAY,CAAC+G,GAAU,CAAC,YAAa,YAEzCA,EAAQ0tR,UAAY,CACxB,EAOAkvkB,EAAM935B,UAAU+urB,kBAAoB,SAAU1urB,GAC1C,OAAOoB,KAAKqtrB,UAAUxxM,YAAYj9e,EACtC,EAOAy35B,EAAM935B,UAAU45vB,SAAW,SAAUC,GAC7Bp4vB,KAAK645B,cAAczgK,KACnBp4vB,KAAKg6a,YAAco+U,EACnBp4vB,KAAKqie,WAEb,EAMAg0b,EAAM935B,UAAUy85B,YAAc,SAAUjzR,GACpC/noB,KAAK+noB,SAAWA,EAChB/noB,KAAKqie,UACT,EACAg0b,EAAM935B,UAAUm45B,eAAiB,WAC7B,SAAuB,IAAnB125B,KAAK0itB,YAAsB1itB,KAAK0itB,UAAU5ktB,OAIlD,EACAu45B,EAAM935B,UAAUs65B,cAAgB,SAAUoC,EAAWC,GAOjD,OANID,IAAcj75B,KAAKg6a,cACnBh6a,KAAKo05B,eAAiBp05B,KAAKg6a,aAE1BhpQ,GAAkBkqvB,KACnBl75B,KAAKo05B,eAAiB8G,GAEtBl75B,KAAKo05B,iBAAmB6G,GAAcA,GAAa,GAAKA,GAAaj75B,KAAKi6a,UAIlF,EACAo8e,EAAM935B,UAAUu65B,mBAAqB,SAAUlxb,EAASC,GAIpD,GAHI7ne,KAAKm75B,mBACLn75B,KAAKo75B,kBAAkBp75B,KAAKg6a,aAE5B4tD,EAAQ5tD,cAAgB6tD,EAAQ7tD,aAAe4tD,EAAQmgK,WAAalgK,EAAQkgK,SAAU,CACtF,IAAI38jB,EAAO,CACP4uW,YAAah6a,KAAKg6a,YAClB4tD,QAASA,EAASC,QAASA,EAAS/mJ,QAAQ,GAEhD9gV,KAAKo/d,QAAQ,QAASh0Z,GACjBA,EAAK01Q,QAKN9gV,KAAKs0tB,UAAW,EACZzsP,GAAWA,EAAQkgK,WACnB/noB,KAAKiie,cAAc,CAAE8lK,SAAUlgK,EAAQkgK,WAAY,GAC/C/noB,KAAK63yB,sBACL73yB,KAAK63yB,oBAAoBkhH,iBAAiB,QAASlxb,EAAQkgK,UAC3D/noB,KAAK63yB,oBAAwC,mBAAExpyB,KAAOw5d,EAAQkgK,SAAW,OATjF/noB,KAAKs0tB,UAAW,EAChBt0tB,KAAKsue,UAYb,CACJ,EACA+nb,EAAM935B,UAAU8gvB,cAAgB,WAC5B,IAAIr/uB,KAAKu45B,oBAAqBv45B,KAAKs25B,UAAnC,CAGA,IAAIl64B,EACJpc,KAAKy5D,QAAQt1D,UAAU2C,IAAI,mBAC3B9G,KAAK6lT,QAAQ7lT,KAAK+oI,UAClB,IAAIt3H,EAAO,CACPuoa,YAAah6a,KAAKg6a,YAAa+tN,SAAU/noB,KAAK+noB,SAAUme,UAAWlmpB,KAAKkmpB,UACxE28D,kBAAmB7itB,KAAK6itB,kBAAmB5oS,WAAYj6a,KAAKi6a,YAE5DopE,EAASrjf,KAAKy5D,QAAQv1D,cAAc4R,GAAK,YACzC9V,KAAKu45B,oBAAsBv45B,KAAKmnrB,OAChCnnrB,KAAKq75B,kBAALr75B,CAAwByR,EAAMzR,KAAM,WAAYqjf,EAAQ,KAAM,KAAMrjf,KAAKy5D,SACzEz5D,KAAKwwe,yBAGLp0d,EAASpc,KAAKmnrB,MAAQnnrB,KAAKq75B,kBAALr75B,CAAwByR,EAAMzR,KAAM,YAAcA,KAAKq75B,kBAALr75B,CAAwByR,GAChG89qB,GAAevvrB,KAAKy5D,QAASr9C,GAfjC,CAiBJ,EAKAi64B,EAAM935B,UAAU+05B,iBAAmB,WAC/Btz5B,KAAKi6a,WAAaj6a,KAAK65rB,UAAY,EAAK75rB,KAAK6itB,kBAAoB7itB,KAAK+noB,WAAa,EAAM/noB,KAAK6itB,kBAAoB7itB,KAAK+noB,SAClH9moB,UAAUjB,KAAK6itB,kBAAoB7itB,KAAK+noB,UAAUpnoB,WAAY,IAAM,CAC7E,EAKA015B,EAAM935B,UAAU885B,iBAAmB,WAC/B,OAAOr75B,KAAK+3f,UAChB,EAMAs+Z,EAAM935B,UAAUsnT,QAAU,SAAU98K,GAChC,GAAIA,EACA,IAC4B,oBAAbA,EACP/oI,KAAK+3f,WAAauwJ,GAAiBv/gB,GAG/BxzG,SAAS9H,iBAAiBs7G,GAAUjrI,SACpCkC,KAAK+3f,WAAauwJ,GAAiB/ynB,SAASpgB,cAAc4zH,GAAUpqH,UAAUpJ,QAG1F,CACA,MAAOrY,KACH8C,KAAK+3f,WAAauwJ,GAAiBv/gB,EACvC,CAGR,EAMAstxB,EAAM935B,UAAU+ve,QAAU,WACtB,GAAItue,KAAK+oI,SACD/oI,KAAKu45B,mBACLv45B,KAAKsz5B,mBACLtz5B,KAAKg+F,OAAOh+F,KAAKu25B,YAAa,CAAC,KAG/Bv25B,KAAKy5D,QAAQ96C,UAAY,GACzB3e,KAAKsz5B,mBACLtz5B,KAAKq/uB,qBAGR,CACDr/uB,KAAKwvvB,YACL,IAAImqK,EAAyB355B,KAAKk55B,4BAClCl55B,KAAKo45B,gBAAgB9pb,UACrBtue,KAAKs65B,6BACDX,GAA0BA,EAAuBx15B,UAAUC,SAAS,eAChEpE,KAAKk65B,yBAAyBP,GAC9B355B,KAAKm65B,0BAA0BR,GAG/B355B,KAAKq55B,iCAGTr55B,KAAKy45B,oBACLz45B,KAAKq45B,mBAAmB/pb,UAExBtue,KAAK63yB,qBACL73yB,KAAK63yB,oBAAoBvpU,UAEzBtue,KAAKy25B,uBAAyBz25B,KAAK445B,uBACnC545B,KAAK445B,sBAAsBtqb,UAE/Btue,KAAKo55B,iCACLp55B,KAAKg55B,aACT,CACJ,EACA3C,EAAM935B,UAAUixvB,UAAY,WACpBxvvB,KAAK+te,UACL/te,KAAKy5D,QAAQt1D,UAAU2C,IAAI,SAG3B9G,KAAKy5D,QAAQt1D,UAAU0C,OAAO,QAEtC,EACAwv5B,EAAM935B,UAAU+55B,iBAAmB,WAC/Bt45B,KAAKqtrB,UAAY,IAAI/xM,GAAKt7e,KAAKgje,gBAAiBhje,KAAK225B,iBAAkB325B,KAAKwY,OAChF,EACA694B,EAAM935B,UAAU685B,kBAAoB,SAAUt85B,GAC1C,IAAIw85B,EAAat75B,KAAKu75B,cAAc525B,OAAOqqK,SAASlvI,KAAM,OAAQhhC,EAAM6B,YACxEgE,OAAOq7P,QAAQ+ka,UAAU,CAAEn5pB,KAAM0v5B,GAAc,GAAIA,EACvD,EACAjF,EAAM935B,UAAUg95B,cAAgB,SAAUplxB,EAAKv3I,EAAKE,GAChD,IACIs35B,EAAO,IADExy5B,OACS,UAAYhF,EAAM,cAAe,KACvD,GAAIu3I,EAAIxyI,MAAMyy5B,GACV,OAAOjgxB,EAAIzzI,QAAQ0z5B,EAAM,KAAOx35B,EAAM,IAAME,EAAQ,MAGpD,IAAIwpH,EAAO,GAKX,OAJ0B,IAAtB6tB,EAAIzxI,QAAQ,OACZ4jH,EAAO6tB,EAAIzzI,QAAQ,MAAO,KAC1ByzI,EAAMA,EAAIzzI,QAAQ,MAAO,KAEtByzI,IAA6B,IAAtBA,EAAIzxI,QAAQ,KAAc,IAAM,KAAO9F,EAAM,IAAME,EAAQwpH,CAEjF,EACA+tyB,EAAM935B,UAAUi65B,4BAA8B,WAC1Cx45B,KAAKy5D,QAAQliD,YAAYymB,GAAc,MAAO,CAC1C9xB,UAAW,gCACXwmC,MAAO,CAAEpyB,MAAOtgB,KAAKstrB,kBAAkB,oBAAqBiW,SAAU,SAE1EvjsB,KAAKy5D,QAAQliD,YAAYymB,GAAc,MAAO,CAC1C9xB,UAAW,8BACXwmC,MAAO,CAAEpyB,MAAOtgB,KAAKstrB,kBAAkB,uBAAwBiW,SAAU,QAEjF,EACA8yN,EAAM935B,UAAUm65B,2BAA6B,WACzC145B,KAAKy5D,QAAQliD,YAAYymB,GAAc,MAAO,CAC1C9xB,UAAW,8BACXwmC,MAAO,CAAEpyB,MAAOtgB,KAAKstrB,kBAAkB,mBAAoBiW,SAAU,SAEzEvjsB,KAAKy5D,QAAQliD,YAAYymB,GAAc,MAAO,CAC1C9xB,UAAW,8BACXwmC,MAAO,CAAEpyB,MAAOtgB,KAAKstrB,kBAAkB,mBAAoBiW,SAAU,QAE7E,EACA8yN,EAAM935B,UAAUo65B,aAAe,WAC3B,IAAIx05B,EAAY,CAAC,YAAa,WAAY,WAAY,YACtD,IAAK+4d,GAAQK,SACT,IAAK,IAAIpge,EAAI,EAAGA,EAAIgH,EAAUrG,OAAQX,IAAK,CACvC,IAAIs8D,EAAUz5D,KAAKy5D,QAAQtkD,cAAchR,EAAUlD,SAAS9D,EAAEwD,WAAY,MAC1E84D,EAAQ7wD,aAAa,aAAc6wD,EAAQrpD,aAAa,SAC5D,CAER,EACAim5B,EAAM935B,UAAUg65B,gBAAkB,WAC9B,OAAQv45B,KAAKwnf,SAAWxnf,KAAKmnrB,QAAUnnrB,KAAK+oI,UAAuC,kBAAnB/oI,KAAK+oI,QACzE,EAMAstxB,EAAM935B,UAAUi95B,qBAAuB,WAKnC,IAJA,IAAIZ,EAAgB565B,KAAKy5D,QAAQhsC,iBAEjC,oQACIgu4B,EAAc,EACTt+5B,EAAI,EAAGA,EAAIy95B,EAAc985B,OAAQX,IACsC,SAAxEwF,iBAAiBi45B,EAAc355B,SAAS9D,EAAEwD,WAAY,MAAM+pB,UAC5D+w4B,GAAeb,EAAc355B,SAAS9D,EAAEwD,WAAY,KAAK2uV,YACnDntV,WAAWQ,iBAAiBi45B,EAAc355B,SAAS9D,EAAEwD,WAAY,MAAM+nY,YACvEvmY,WAAWQ,iBAAiBi45B,EAAc355B,SAAS9D,EAAEwD,WAAY,MAAMioY,cAGrF,IAAImrhB,EAAiB/z5B,KAAKy5D,QAAQtkD,cAAc,qBAGhD,OAFAsm5B,GAAet55B,WAAWQ,iBAAiBox5B,GAAgBrrhB,YACrDvmY,WAAWQ,iBAAiBox5B,GAAgBnrhB,YAEtD,EAMAythB,EAAM935B,UAAUy65B,YAAc,WAC1B,IAAIp4sB,EAAQ5gN,KACR075B,EAAiB175B,KAAKy5D,QAAQt1D,UAAUC,SAAS,WAAazB,iBAAiB3C,KAAKy5D,SAASqjB,iBAAiB,gBAAgB3kC,SAAS,SAAW,KACtJ,IAAMn4C,KAAK+oI,UAAa2yxB,EAAgB,CACpC,IAAI3H,EAAiB/z5B,KAAKy5D,QAAQtkD,cAAc,qBAC5Csm5B,EAAcz75B,KAAKw75B,uBACnBG,EAAa375B,KAAKy5D,QAAQ52D,YACxBV,WAAWQ,iBAAiB3C,KAAKy5D,SAASz2D,aAC1Cb,WAAWQ,iBAAiB3C,KAAKy5D,SAASx2D,cAC1Cd,WAAWQ,iBAAiB3C,KAAKy5D,SAASivU,YAC1CvmY,WAAWQ,iBAAiB3C,KAAKy5D,SAASmvU,aAC5Cl0R,EAAWq/yB,EAAetm4B,iBAAiB,mFAC3Cmu4B,EAAiB7H,EAAetm4B,iBAAiB,uDACjDou4B,EAAWnnzB,EAAS52G,OAEpBg+5B,EAAgB9qvB,GAAkBs9gB,GAAaturB,KAAKy5D,QAAS,aAAqB,EAAL,GAC7E061B,EAAKJ,EAAe5+4B,cAAc,SAClC8+4B,EAAKF,EAAe5+4B,cAAc,SAClC4m5B,EAAc/75B,KAAKy5D,QAAQhsC,iBAAiB,uHAC5Cuu4B,EAAmB,EACnBD,EAAYj+5B,SACZi+5B,EAAYh+5B,SAAQ,SAAUs3E,GAC1B2m1B,GAAoB3m1B,EAAKi6Q,WAC7B,IACAtvV,KAAKi85B,mBAAqBD,EAAmBD,EAAYj+5B,QAM7D,IAJA,IAAIoyH,EAAa,EAIR/yH,EAAI,EAAGA,EAAIu3G,EAAS52G,OAAQX,IACjC+yH,GAAcxb,EAASzzG,SAAS9D,EAAEwD,WAAY,KAAK2uV,YAC7CntV,WAAWQ,iBAAiB+xG,EAASzzG,SAAS9D,EAAEwD,WAAY,MAAM+nY,YAClEvmY,WAAWQ,iBAAiB+xG,EAASzzG,SAAS9D,EAAEwD,WAAY,MAAMioY,aAE5E,IAAIszhB,EAAmBhsyB,EAAaxb,EAAS52G,OAI7C,GAAI695B,EAAa,GAAMF,GAAgBE,GAAcO,GAAsC,GAAM,CAC7Fl85B,KAAKu05B,gBAAiB,EAClBv05B,KAAKg6a,cAAgBh6a,KAAKi6a,YAC1B91a,GAAUgw5B,EAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,cAEnFsH,EAAcz75B,KAAKw75B,uBACnB,IAAItx1B,EAAOhpE,KAAK4D,IAAK225B,EAAeE,GAEhCQ,EAAYj75B,KAAK4hC,KAAKonC,EAAQgy1B,GAClCC,EAA2B,IAAdA,EAAmB,EAAKA,EAAYznzB,EAAS52G,OAAW42G,EAAS52G,OAAS,EAAKq+5B,EAC5F,IAASh/5B,EAAI,EAAGA,GAAKg/5B,EAAWh/5B,IAAK,CACjC,IAAIi/5B,EAAYP,EAAW565B,SAAS9D,EAAEwD,WAAY,IAClD+zG,EAAWq/yB,EAAetm4B,iBAAiB,mFAClB,IAArBztB,KAAKg6a,aAAuB/4a,SAASyzG,EAASxzG,KAAK4D,IAAIs35B,IAAYhs5B,aAAa,SAAU,MAAQpQ,KAAKg6a,aACpG/4a,SAASyzG,EAASA,EAAS52G,OAAS,GAAGsS,aAAa,SAAU,MAAQpQ,KAAKg6a,cAC9Eoif,EAAY,EACZj45B,GAAU8v5B,EAAI,CAAC,gBAAiB,mBAAoB,CAAC,yBAA0B,eAE/Ev/yB,EAASxzG,KAAK4D,IAAIs35B,MAAiB1nzB,EAASxzG,KAAK4D,IAAIs35B,IAAYj45B,UAAUC,SAAS,kBACpFswG,EAASxzG,KAAK4D,IAAIs35B,IAAYj45B,UAAU2C,IAAI,SAEpD,CAGA,IAFA4tG,EAAWq/yB,EAAetm4B,iBAAiB,oFAE9B3vB,QAAU,GAAKi+5B,EAAYj+5B,QAAU6G,OAAO+hC,YAAc,IAAK,CACxE,IAAI213B,EAAwBr85B,KAAKw75B,uBACjC,GAAKa,EAA0BV,EAAaG,EAAc,CACtD,IAAIQ,EAAep75B,KAAKe,OAAO055B,GAAcU,EAAwBL,IAC/Dh85B,KAAKi85B,oBACXK,EAAeP,EAAYj+5B,OAASw+5B,EACpC,IAASn/5B,EAAI,EAAGA,GAAKm/5B,EAAeP,EAAYj+5B,OAASi+5B,EAAYj+5B,OAASw+5B,GAAen/5B,IACzF4+5B,EAAY965B,SAAS9D,EAAEwD,WAAY,KAAKwD,UAAU2C,IAAI,SAE9D,CACJ,CACJ,MAIK,GAAI205B,EAAeE,GAAeC,EAAe995B,OAAQ,CACtDosE,EAAOhpE,KAAK4D,IAAI625B,EAAcF,GAAlC,IACIc,EAAoBv85B,KAAKy5D,QAAQhsC,iBAAiB,+CAKtD,GAHI8u4B,EAAkBz+5B,QAAWosE,EAAQlqE,KAAKi85B,mBAAsBj85B,KAAKi85B,mBAAqB,GAC1FM,EAAmBA,EAAkBz+5B,OAAS,GAAIqG,UAAU0C,OAAO,UAElEqjE,EAA2B,EAAnBgy1B,IAA0BK,EAAkBz+5B,QAAU6G,OAAO+hC,YAAc,IAAM,CAE1F,IAAI813B,EAAYt75B,KAAKe,MAAOioE,GAASgy1B,EAAmBJ,IACxDU,EAAaA,EAAYZ,EAAe995B,OAAU895B,EAAe995B,OAAU0+5B,EAAY,EAEvF,IAAIC,EAAmBv85B,MAAMQ,KAAKk75B,GAAgBp+5B,QAAO,SAAU63E,GAAQ,OAAOp0E,SAASo0E,EAAKjlE,aAAa,SAAU,IAAMwwM,EAAMo5N,WAAa,IAAGn6Y,MAAK,SAAUtiC,EAAGwH,GAAK,OAAO9D,SAAS8D,EAAEqL,aAAa,SAAU,IAAMnP,SAAS1D,EAAE6S,aAAa,SAAU,GAAK,IAC5Pss5B,EAAoBx85B,MAAMQ,KAAKk75B,GAAgBp+5B,QAAO,SAAU63E,GAAQ,OAAOp0E,SAASo0E,EAAKjlE,aAAa,SAAU,IAAMwwM,EAAMo5N,WAAa,IAC7Iqse,EAAaoW,EAAiB3+5B,QAAU2+5B,GACpCC,EAAkB5+5B,QAAU4+5B,EACpC,IAASv/5B,EAAI,EAAGA,GAAKq/5B,EAAWr/5B,IAAK,CACjC,IAAIw/5B,EAAWtW,GAAaA,EAAUnl5B,KAAK4D,IAjFxC,EAiFuD3H,IACtDw/5B,IACAA,EAASx45B,UAAU0C,OAAO,UACtB815B,IAAatW,EAAUA,EAAUvo5B,OAAS,KAC1Cuo5B,EAAY,MAGxB,CACJ,CACJ,CAEA,IADA3xyB,EAAWq/yB,EAAetm4B,iBAAiB,oFAC9B3vB,OAAQ,CACbmD,SAASyzG,EAASA,EAAS52G,OAAS,GAAGsS,aAAa,SAAU,MAAQpQ,KAAKi6a,YAC3E91a,GAAUgw5B,EAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,oBAErB,IAApDlz5B,SAASyzG,EAAS,GAAGtkG,aAAa,SAAU,KAC5CjM,GAAU8v5B,EAAI,CAAC,yBAA0B,aAAc,CAAC,gBAAiB,oBAE7E,IAAIK,EAAYp05B,MAAMQ,KAAKg0G,GAAUr3F,MAAK,SAAUg4D,GAAQ,OAAOp0E,SAASo0E,EAAKjlE,aAAa,SAAU,MAAQwwM,EAAMq5N,UAAY,IAC9Hi7e,EAAWj05B,SAASyzG,EAAS,GAAGtkG,aAAa,SAAU,KAAOkk5B,EAAYt05B,KAAKm15B,YAAczgzB,EAAS52G,QAC1Gm25B,EAAGrr5B,aAAa,QAAUss5B,EAAU,EAAK,IAAMA,EAAQv05B,YACvDwz5B,EAAGvr5B,aAAa,SAAU3H,SAASyzG,EAASA,EAAS52G,OAAS,GAAGsS,aAAa,SAAU,IAAM,GAAGzP,YACjGX,KAAKm15B,YAAcb,EAAYt05B,KAAKm15B,YAAczgzB,EAAS52G,MAC/D,CAIMkC,KAAKy5D,QAAQ61R,YAAc,KAAyG,SAAjG3qV,OAAOhC,iBAAiB3C,KAAKy5D,QAAQtkD,cAAc,cAAc2nE,iBAAiB,YAA0B98E,KAAK0itB,WACtJ1itB,KAAKy5D,QAAQtkD,cAAc,gBAAgBhR,UAAU0C,OAAO,UAC5D7G,KAAKy5D,QAAQtkD,cAAc,mBAAmBhR,UAAU0C,OAAO,UAC/D7G,KAAKy5D,QAAQt1D,UAAU2C,IAAI,cAC3B9G,KAAKy5D,QAAQtkD,cAAc,gBAAgBwJ,UAAY3e,KAAKy5D,QAAQ61R,YAAc,IAAOtvV,KAAKg6a,YAAc,MAAQh6a,KAAKi6a,WAAcj6a,KAAKq45B,mBAAmBl94B,OAAOnb,KAAKstrB,kBAAkB,mBAAoB,CAA4B,IAA3BttrB,KAAK6itB,kBAA0B,EACzO7itB,KAAKg6a,YAAah6a,KAAKi6a,YAAc,EAAGj6a,KAAK6itB,mBAAqB,IAAM,MAGhF7itB,KAAKy5D,QAAQt1D,UAAU0C,OAAO,cAC9B7G,KAAKy5D,QAAQtkD,cAAc,gBAAgBwJ,UAAY3e,KAAKq45B,mBAAmBl94B,OAAOnb,KAAKstrB,kBAAkB,mBAAoB,CAA4B,IAA3BttrB,KAAK6itB,kBAA0B,EACzJ7itB,KAAKg6a,YAAah6a,KAAKi6a,YAAc,EAAGj6a,KAAK6itB,mBAAqB,IAAM,IAExF,CACJ,EACAx1Z,IAAW,CACP63K,IAAS,IACVmxb,EAAM935B,UAAW,yBAAqB,GACzC8uT,IAAW,CACP63K,IAAS,IACVmxb,EAAM935B,UAAW,6BAAyB,GAC7C8uT,IAAW,CACP63K,IAAS,IACVmxb,EAAM935B,UAAW,0BAAsB,GAC1C8uT,IAAW,CACP63K,GAAS,KACVmxb,EAAM935B,UAAW,gBAAY,GAChC8uT,IAAW,CACP63K,GAAS,KACVmxb,EAAM935B,UAAW,iBAAa,GACjC8uT,IAAW,CACP63K,GAAS,IACVmxb,EAAM935B,UAAW,mBAAe,GACnC8uT,IAAW,CACP63K,MACDmxb,EAAM935B,UAAW,yBAAqB,GACzC8uT,IAAW,CACP63K,MACDmxb,EAAM935B,UAAW,uBAAmB,GACvC8uT,IAAW,CACP63K,IAAS,IACVmxb,EAAM935B,UAAW,iBAAa,GACjC8uT,IAAW,CACP63K,MACDmxb,EAAM935B,UAAW,gBAAY,GAChC8uT,IAAW,CACP63K,GAAS,KACVmxb,EAAM935B,UAAW,kBAAc,GAClC8uT,IAAW,CACPv0P,MACDu91B,EAAM935B,UAAW,aAAS,GAC7B8uT,IAAW,CACP63K,GAAS,KACVmxb,EAAM935B,UAAW,gBAAY,GAChC8uT,IAAW,CACPv0P,MACDu91B,EAAM935B,UAAW,uBAAmB,GACvC8uT,IAAW,CACPv0P,MACDu91B,EAAM935B,UAAW,eAAW,GAC/B835B,EAAQhpmB,IAAW,CACfq4K,IACD2wb,EAEP,CAvlC2B,CAulCzB30oB,ICznCEq2oB,IAA+B,WAO/B,SAASA,EAAcp+N,GACnB35rB,KAAK25rB,YAAcA,CACvB,CAyJA,OAjJAo+N,EAAcx55B,UAAUyke,cAAgB,WACpC,MAAO,eACX,EAOA+0b,EAAcx55B,UAAUupE,OAAS,WAC7B,IAAI8xnB,EAAW55rB,KAAK25rB,YACpB35rB,KAAK485B,iBAAmB5+3B,GAAc,MAAO,CAAE9xB,UAAW,gBAC1D,IAAI2w5B,EAAc7+3B,GAAc,MAAO,CAAE9xB,UAAW,oBAChD4w5B,EAAiB9+3B,GAAc,MAAO,CAAE9xB,UAAW,oBA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t17B,KAAKu17B,UAAY,EACQ,kBAAdD,GAA+C,kBAAdC,GACxCv17B,KAAKs17B,UAAYA,EACjBt17B,KAAKu17B,UAAYA,IAIjBv17B,KAAKs17B,UAAYlz7B,OAAOkz7B,GACxBt17B,KAAKu17B,UAAYnz7B,OAAOmz7B,GAEhC,CA4FA,OA3FAn47B,OAAOe,eAAek37B,EAAa927B,UAAW,SAAU,CAMpDq0D,IAAK,WACD,OAAO5yD,KAAK017B,OAChB,EACA/53B,IAAK,SAAU78D,GACXkB,KAAK017B,QAAU527B,CACnB,EACApB,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAek37B,EAAa927B,UAAW,WAAY,CAKtDq0D,IAAK,WACD,OAAO5yD,KAAK217B,SAChB,EACAh63B,IAAK,SAAU78D,GACXkB,KAAK217B,UAAY727B,CACrB,EACApB,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAek37B,EAAa927B,UAAW,wBAAyB,CAKnEq0D,IAAK,WACD,OAAO5yD,KAAKw17B,MAChB,EACA753B,IAAK,SAAU78D,GACXkB,KAAKw17B,OAAS127B,CAClB,EACApB,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAek37B,EAAa927B,UAAW,WAAY,CAKtDq0D,IAAK,WACD,OAAO5yD,KAAKy17B,SAChB,EACA953B,IAAK,SAAU78D,GACXkB,KAAKy17B,UAAY327B,CACrB,EACApB,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAek37B,EAAa927B,UAAW,eAAgB,CAK1Dq0D,IAAK,WAED,OADoB,IAExB,EACAl1D,YAAY,EACZgB,cAAc,IAOlB227B,EAAa927B,UAAUo6E,KAAO,SAAUyk2B,GACpCA,EAAOzmzB,MAAM32H,KAAKW,WACtB,EAKA007B,EAAa927B,UAAUoC,SAAW,WAC9B,OAAOX,KAAKs17B,UAAU307B,WAAa,IAAMX,KAAKu17B,UAAU507B,WAAa,IACzE,EAKA007B,EAAa927B,UAAUsD,MAAQ,SAAUw76B,GACrC,OAAO,IACX,EACOgY,CACX,CAhIkC,GAsI9BhC,IAAoC,WACpC,SAASA,EAAmBpwe,EAAM2ye,GAM9B517B,KAAK617B,QAAU,EAMf717B,KAAK817B,WAAa,EAMlB917B,KAAK+17B,aAAe,EAKpB/17B,KAAKsl7B,qBAAuB,IAAIrE,IAEhCjh7B,KAAKy9E,WAAWwlY,EAapB,CA8NA,OA7NA7ld,OAAOe,eAAek17B,EAAmB907B,UAAW,SAAU,CAM1Dq0D,IAAK,WACD,OAAO5yD,KAAKg27B,OAChB,EACAr63B,IAAK,SAAU78D,GACXkB,KAAKg27B,QAAUl37B,CACnB,EACApB,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAek17B,EAAmB907B,UAAW,WAAY,CAK5Dq0D,IAAK,WACD,OAAO5yD,KAAKi27B,SAChB,EACAt63B,IAAK,SAAU78D,GACXkB,KAAKi27B,UAAYn37B,CACrB,EACApB,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAek17B,EAAmB907B,UAAW,wBAAyB,CAKzEq0D,IAAK,WACD,OAAO5yD,KAAK617B,MAChB,EACAl63B,IAAK,SAAU78D,GACXkB,KAAK617B,OAAS/27B,CAClB,EACApB,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAek17B,EAAmB907B,UAAW,WAAY,CAK5Dq0D,IAAK,WACD,OAAO5yD,KAAK817B,SAChB,EACAn63B,IAAK,SAAU78D,GACXkB,KAAK817B,UAAYh37B,CACrB,EACApB,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAek17B,EAAmB907B,UAAW,eAAgB,CAKhEq0D,IAAK,WACD,OAAO,IACX,EACAl1D,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAek17B,EAAmB907B,UAAW,SAAU,CAK1Dq0D,IAAK,WAID,OAAO5yD,KAAKk27B,eAChB,EACAx47B,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAek17B,EAAmB907B,UAAW,YAAa,CAK7Dq0D,IAAK,WACD,OAAO5yD,KAAKu46B,YAChB,EACA766B,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAek17B,EAAmB907B,UAAW,QAAS,CAKzDq0D,IAAK,WAOD,OAA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m37B,cAChG,EACAz57B,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAey47B,EAAqBr47B,UAAW,eAAgB,CAelEq0D,IAAK,WACD,OAAO5yD,KAAKo37B,aAChB,EAeAz73B,IAAK,SAAU78D,GACXkB,KAAKo37B,cAAgBt47B,EACrBkB,KAAKopI,YAAY3+G,MAAMkpQ,SAAS3zR,KAAK627B,sBAAsBjS,aAAc,IAAI2R,IAAWv27B,KAAKo37B,eACjG,EACA157B,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAey47B,EAAqBr47B,UAAW,WAAY,CAc9Dq0D,IAAK,WACD,OAAO5yD,KAAKq37B,SAChB,EAcA173B,IAAK,SAAU78D,GACXkB,KAAKq37B,UAAYv47B,EACjBkB,KAAK037B,SAASjt6B,MAAMkpQ,SAAS3zR,KAAK627B,sBAAsBhS,SAAU,IAAIjI,IAAQ586B,KAAK237B,aAAa337B,KAAKq37B,YACzG,EACA357B,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAey47B,EAAqBr47B,UAAW,SAAU,CAc5Dq0D,IAAK,WACD,OAAO5yD,KAAKy37B,OAChB,EAcA973B,IAAK,SAAU78D,GACXkB,KAAKy37B,QAAU347B,EACfkB,KAAK037B,SAASjt6B,MAAMkpQ,SAAS3zR,KAAK627B,sBAAsB9R,OAAQ,IAAInI,IAAQ586B,KAAK437B,eAAe537B,KAAKy37B,UACzG,EACA/57B,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAey47B,EAAqBr47B,UAAW,aAAc,CAchEq0D,IAAK,WACD,OAAO5yD,KAAKu37B,WAChB,EAcA573B,IAAK,SAAU78D,GACXkB,KAAKu37B,YAAcz47B,EACnBkB,KAAK037B,SAASjt6B,MAAMkpQ,SAAS3zR,KAAK627B,sBAAsB/R,WAAY,IAAIlI,IAAQ586B,KAAK637B,eAAe737B,KAAKu37B,cAC7G,EACA757B,YAAY,EACZgB,cAAc,IAElBtB,OAAOe,eAAey47B,EAAqBr47B,UAAW,cAAe,CAejEq0D,IAAK,WACD,OAAO5yD,KAAK837B,YAChB,EAeAn83B,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AAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CA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v0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,OAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,OAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,OAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,OAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,OAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,OAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAE7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAM,MAC7C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,MAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,MAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,MAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,MAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,MAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,MAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,MAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,KAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,OAC9C3zR,KAAKko9B,yBAAyBv0rB,SAAS,MAAO,MAClD,EACOq0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AAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMTf,EAA8B16G,WAAa,CACvC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,I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AG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAC3B,EAAE,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAC5B,CAAC,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAC5B,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAC3B,CAAC,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAC5B,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAC1B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAC1B,EAAE,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAC3B,CAAC,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAC3B,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAC1B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACzB,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAC3B,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAC3B,CAAC,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAC3B,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAC1B,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1B,EAAE,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAC5B,EAAE,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAC3B,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAC1B,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1B,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1B,CAAC,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1B,EAAE,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAC3B,EAAE,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG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KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,EAAG,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,EAAG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAK,KAAO,KAAO,KAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,KAAO,IAAM,IAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,EAAG,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,MAAO,GAAI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,MAAO,KAAM,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACxyH7wD,MAAO,KACPtC,KAAM,QAERlkD,KAAM,CACJq3G,MAAO,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,UAAW,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,UAAW,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,UAAW,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,UAAW,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,UAAW,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAU,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAU,WAAY,WAAY,WAAY,WAAY,UAAW,WAAY,WAAY,WAAY,UA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,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,IAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAMnjN,OAAO,GAAGyS,KAAK,MCGz0jB81S,IAAM,SAAA+o8B,GAAAxpjC,EAAAygH,EAAA+o8B,GAAA,IAAAvljC,EAAAhE,EAAAwgH,GACzB,SAAAA,EAAavyS,GAAM,IAAAmyL,EAEO,OAFPF,EAAA,KAAAsgH,IACjBpgH,EAAA4D,EAAAzkN,KAAA,KAAM0uB,IACDmtM,SAAWA,IAAQhb,CAC1B,CAcC,OAdAD,EAAAqgH,EAAA,EAAApiU,IAAA,MAAAE,MAED,SAAK2rd,GAAU,IAAAtnQ,EAAA,KACP1uG,EAAMz0G,KAAK68O,MAAMl7O,KAAI,SAAC8qD,GAC1B,IAAM+2rC,EAAQ,IAAIhF,IAAQ/xrC,GACpBzuD,EAAI,CACRyuD,KAAM+2rC,EAAM7ivC,WAAa,SACzBqtB,MAAOw1tC,EAAM5iS,WAAW,EAAG,KAAK6iS,WAAWh5xB,GAC3Cx8b,IAAKu1tC,EAAME,YAAYD,WAAWh5xB,IAGpC,OADAtnQ,EAAKwgiC,eAAel3rC,EAAMzuD,GACnBA,CACT,IACA,OAAOy2G,CACT,KAACusN,CAAA,CAlBwB,CAAS4o8B,KCHvBhuiC,IAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,IAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM1wM,KAAK,MCGtqb8+uC,IAA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","sources":["../node_modules/apexcharts/dist/apexcharts.common.js","../node_modules/attr-accept/dist/es/index.js","../node_modules/chart.js/dist/Chart.js","../node_modules/deepmerge/dist/cjs.js","../node_modules/exceljs/dist/node_modules/browser-pack/_prelude.js","../node_modules/exceljs/dist/lib/csv/csv.js","../node_modules/exceljs/dist/lib/doc/anchor.js","../node_modules/exceljs/dist/lib/doc/cell.js","../node_modules/exceljs/dist/lib/doc/column.js","../node_modules/exceljs/dist/lib/doc/data-validations.js","../node_modules/exceljs/dist/lib/doc/defined-names.js","../node_modules/exceljs/dist/lib/doc/enums.js","../node_modules/exceljs/dist/lib/doc/image.js","../node_modules/exceljs/dist/lib/doc/note.js","../node_modules/exceljs/dist/lib/doc/range.js","../node_modules/exceljs/dist/lib/doc/row.js","../node_modules/exceljs/dist/lib/doc/table.js","../node_modules/exceljs/dist/lib/doc/workbook.js","../node_modules/exceljs/dist/lib/doc/worksheet.js","../node_modules/exceljs/dist/lib/exceljs.browser.js","../node_modules/exceljs/dist/lib/utils/browser-buffer-decode.js","../node_modules/exceljs/dist/lib/utils/browser-buffer-encode.js","../node_modules/exceljs/dist/lib/utils/cell-matrix.js","../node_modules/exceljs/dist/lib/utils/col-cache.js","../node_modules/exceljs/dist/lib/utils/encryptor.js","../node_modules/exceljs/dist/lib/utils/parse-sax.js","../node_modules/exceljs/dist/lib/utils/shared-formula.js","../node_modules/exceljs/dist/lib/utils/stream-buf.js","../node_modules/exceljs/dist/lib/utils/string-buf.js","../node_modules/exceljs/dist/lib/utils/under-dash.js","../node_modules/exceljs/dist/lib/utils/utils.js","../node_modules/exceljs/dist/lib/utils/xml-stream.js","../node_modules/exceljs/dist/lib/utils/zip-stream.js","../node_modules/exceljs/dist/lib/xlsx/defaultnumformats.js","../node_modules/exceljs/dist/lib/xlsx/rel-type.js","../node_modules/exceljs/dist/lib/xlsx/xform/base-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/book/defined-name-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/book/sheet-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/book/workbook-calc-properties-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/book/workbook-properties-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/book/workbook-view-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/book/workbook-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/comment/comment-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/comment/comments-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/comment/style/vml-position-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/comment/style/vml-protection-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/comment/vml-anchor-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/comment/vml-client-data-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/comment/vml-notes-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/comment/vml-shape-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/comment/vml-textbox-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/composite-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/core/app-heading-pairs-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/core/app-titles-of-parts-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/core/app-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/core/content-types-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/core/core-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/core/relationship-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/core/relationships-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/base-cell-anchor-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/blip-fill-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/blip-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/c-nv-pic-pr-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/c-nv-pr-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/cell-position-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/drawing-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/ext-lst-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/ext-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/hlink-click-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/nv-pic-pr-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/one-cell-anchor-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/pic-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/sp-pr.js","../node_modules/exceljs/dist/lib/xlsx/xform/drawing/two-cell-anchor-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/list-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/auto-filter-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cell-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf-ext/databar-ext-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf-ext/f-ext-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf/cf-rule-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf/cfvo-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf/color-scale-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf/conditional-formatting-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf/conditional-formattings-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf/databar-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf/ext-lst-ref-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf/formula-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/cf/icon-set-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/col-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/data-validations-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/dimension-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/drawing-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/ext-lst-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/header-footer-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/hyperlink-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/merge-cell-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/merges.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/outline-properties-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/page-breaks-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/page-margins-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/page-setup-properties-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/page-setup-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/picture-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/print-options-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/row-breaks-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/row-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/sheet-format-properties-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/sheet-properties-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/sheet-protection-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/sheet-view-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/table-part-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/sheet/worksheet-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/simple/boolean-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/simple/date-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/simple/integer-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/simple/string-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/static-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/strings/phonetic-text-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/strings/rich-text-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/strings/shared-string-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/strings/shared-strings-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/strings/text-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/style/alignment-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/style/border-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/style/color-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/style/dxf-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/style/fill-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/style/font-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/style/numfmt-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/style/protection-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/style/style-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/style/styles-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/style/underline-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/table/auto-filter-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/table/filter-column-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/table/table-column-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/table/table-style-info-xform.js","../node_modules/exceljs/dist/lib/xlsx/xform/table/table-xform.js","../node_modules/exceljs/dist/lib/xlsx/xlsx.js","../node_modules/exceljs/dist/lib/xlsx/xml/theme1.js","../node_modules/exceljs/dist/node_modules/@fast-csv/format/build/src/CsvFormatterStream.js","../node_modules/exceljs/dist/node_modules/@fast-csv/format/build/src/FormatterOptions.js","../node_modules/exceljs/dist/node_modules/@fast-csv/format/build/src/formatter/FieldFormatter.js","../node_modules/exceljs/dist/node_modules/@fast-csv/format/build/src/formatter/RowFormatter.js","../node_modules/exceljs/dist/node_modules/@fast-csv/format/build/src/formatter/index.js","../node_modules/exceljs/dist/node_modules/@fast-csv/format/build/src/index.js","../node_modules/exceljs/dist/node_modules/@fast-csv/format/build/src/types.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/CsvParserStream.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/ParserOptions.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/index.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/parser/Parser.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/parser/RowParser.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/parser/Scanner.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/parser/Token.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/parser/column/ColumnFormatter.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/parser/column/ColumnParser.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/parser/column/NonQuotedColumnParser.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/parser/column/QuotedColumnParser.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/parser/column/index.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/parser/index.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/transforms/HeaderTransformer.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/transforms/RowTransformerValidator.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/transforms/index.js","../node_modules/exceljs/dist/node_modules/@fast-csv/parse/build/src/types.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/api.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/base/buffer.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/base/index.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/base/node.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/base/reporter.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/constants/der.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/constants/index.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/decoders/der.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/decoders/index.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/decoders/pem.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/encoders/der.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/encoders/index.js","../node_modules/exceljs/dist/node_modules/asn1.js/lib/asn1/encoders/pem.js","../node_modules/exceljs/dist/node_modules/asn1.js/node_modules/bn.js/lib/bn.js","../node_modules/exceljs/dist/node_modules/base64-js/index.js","../node_modules/exceljs/dist/node_modules/bn.js/lib/bn.js","../node_modules/exceljs/dist/node_modules/brorand/index.js","../node_modules/exceljs/dist/node_modules/browserify-aes/aes.js","../node_modules/exceljs/dist/node_modules/browserify-aes/authCipher.js","../node_modules/exceljs/dist/node_modules/browserify-aes/browser.js","../node_modules/exceljs/dist/node_modules/browserify-aes/decrypter.js","../node_modules/exceljs/dist/node_modules/browserify-aes/encrypter.js","../node_modules/exceljs/dist/node_modules/browserify-aes/ghash.js","../node_modules/exceljs/dist/node_modules/browserify-aes/incr32.js","../node_modules/exceljs/dist/node_modules/browserify-aes/modes/cbc.js","../node_modules/exceljs/dist/node_modules/browserify-aes/modes/cfb.js","../node_modules/exceljs/dist/node_modules/browserify-aes/modes/cfb1.js","../node_modules/exceljs/dist/node_modules/browserify-aes/modes/cfb8.js","../node_modules/exceljs/dist/node_modules/browserify-aes/modes/ctr.js","../node_modules/exceljs/dist/node_modules/browserify-aes/modes/ecb.js","../node_modules/exceljs/dist/node_modules/browserify-aes/modes/index.js","../node_modules/exceljs/dist/node_modules/browserify-aes/modes/list.json","../node_modules/exceljs/dist/node_modules/browserify-aes/modes/ofb.js","../node_modules/exceljs/dist/node_modules/browserify-aes/streamCipher.js","../node_modules/exceljs/dist/node_modules/browserify-cipher/browser.js","../node_modules/exceljs/dist/node_modules/browserify-des/index.js","../node_modules/exceljs/dist/node_modules/browserify-des/modes.js","../node_modules/exceljs/dist/node_modules/browserify-rsa/index.js","../node_modules/exceljs/dist/node_modules/browserify-sign/algos.js","../node_modules/exceljs/dist/node_modules/browserify-sign/browser/algorithms.json","../node_modules/exceljs/dist/node_modules/browserify-sign/browser/curves.json","../node_modules/exceljs/dist/node_modules/browserify-sign/browser/index.js","../node_modules/exceljs/dist/node_modules/browserify-sign/browser/sign.js","../node_modules/exceljs/dist/node_modules/browserify-sign/browser/verify.js","../node_modules/exceljs/dist/node_modules/browserify-sign/node_modules/safe-buffer/index.js","../node_modules/exceljs/dist/node_modules/browserify/node_modules/buffer/index.js","../node_modules/exceljs/dist/node_modules/buffer-xor/index.js","../node_modules/exceljs/dist/node_modules/cipher-base/index.js","../node_modules/exceljs/dist/node_modules/core-js/internals/a-function.js","../node_modules/exceljs/dist/node_modules/core-js/internals/a-possible-prototype.js","../node_modules/exceljs/dist/node_modules/core-js/internals/add-to-unscopables.js","../node_modules/exceljs/dist/node_modules/core-js/internals/an-instance.js","../node_modules/exceljs/dist/node_modules/core-js/internals/an-object.js","../node_modules/exceljs/dist/node_modules/core-js/internals/array-includes.js","../node_modules/exceljs/dist/node_modules/core-js/internals/array-iteration.js","../node_modules/exceljs/dist/node_modules/core-js/internals/array-method-uses-to-length.js","../node_modules/exceljs/dist/node_modules/core-js/internals/array-species-create.js","../node_modules/exceljs/dist/node_modules/core-js/internals/call-with-safe-iteration-closing.js","../node_modules/exceljs/dist/node_modules/core-js/internals/check-correctness-of-iteration.js","../node_modules/exceljs/dist/node_modules/core-js/internals/classof-raw.js","../node_modules/exceljs/dist/node_modules/core-js/internals/classof.js","../node_modules/exceljs/dist/node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/exceljs/dist/node_modules/core-js/internals/correct-is-regexp-logic.js","../node_modules/exceljs/dist/node_modules/core-js/internals/correct-prototype-getter.js","../node_modules/exceljs/dist/node_modules/core-js/internals/create-iterator-constructor.js","../node_modules/exceljs/dist/node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/exceljs/dist/node_modules/core-js/internals/create-property-descriptor.js","../node_modules/exceljs/dist/node_modules/core-js/internals/define-iterator.js","../node_modules/exceljs/dist/node_modules/core-js/internals/define-well-known-symbol.js","../node_modules/exceljs/dist/node_modules/core-js/internals/descriptors.js","../node_modules/exceljs/dist/node_modules/core-js/internals/document-create-element.js","../node_modules/exceljs/dist/node_modules/core-js/internals/engine-is-ios.js","../node_modules/exceljs/dist/node_modules/core-js/internals/engine-user-agent.js","../node_modules/exceljs/dist/node_modules/core-js/internals/engine-v8-version.js","../node_modules/exceljs/dist/node_modules/core-js/internals/enum-bug-keys.js","../node_modules/exceljs/dist/node_modules/core-js/internals/export.js","../node_modules/exceljs/dist/node_modules/core-js/internals/fails.js","../node_modules/exceljs/dist/node_modules/core-js/internals/function-bind-context.js","../node_modules/exceljs/dist/node_modules/core-js/internals/get-built-in.js","../node_modules/exceljs/dist/node_modules/core-js/internals/get-iterator-method.js","../node_modules/exceljs/dist/node_modules/core-js/internals/global.js","../node_modules/exceljs/dist/node_modules/core-js/internals/has.js","../node_modules/exceljs/dist/node_modules/core-js/internals/hidden-keys.js","../node_modules/exceljs/dist/node_modules/core-js/internals/host-report-errors.js","../node_modules/exceljs/dist/node_modules/core-js/internals/html.js","../node_modules/exceljs/dist/node_modules/core-js/internals/ie8-dom-define.js","../node_modules/exceljs/dist/node_modules/core-js/internals/indexed-object.js","../node_modules/exceljs/dist/node_modules/core-js/internals/inspect-source.js","../node_modules/exceljs/dist/node_modules/core-js/internals/internal-state.js","../node_modules/exceljs/dist/node_modules/core-js/internals/is-array-iterator-method.js","../node_modules/exceljs/dist/node_modules/core-js/internals/is-array.js","../node_modules/exceljs/dist/node_modules/core-js/internals/is-forced.js","../node_modules/exceljs/dist/node_modules/core-js/internals/is-object.js","../node_modules/exceljs/dist/node_modules/core-js/internals/is-pure.js","../node_modules/exceljs/dist/node_modules/core-js/internals/is-regexp.js","../node_modules/exceljs/dist/node_modules/core-js/internals/iterate.js","../node_modules/exceljs/dist/node_modules/core-js/internals/iterators-core.js","../node_modules/exceljs/dist/node_modules/core-js/internals/microtask.js","../node_modules/exceljs/dist/node_modules/core-js/internals/native-promise-constructor.js","../node_modules/exceljs/dist/node_modules/core-js/internals/native-symbol.js","../node_modules/exceljs/dist/node_modules/core-js/internals/native-weak-map.js","../node_modules/exceljs/dist/node_modules/core-js/internals/new-promise-capability.js","../node_modules/exceljs/dist/node_modules/core-js/internals/not-a-regexp.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-assign.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-create.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-define-properties.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-define-property.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-get-own-property-names-external.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-get-prototype-of.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-keys-internal.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-keys.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/exceljs/dist/node_modules/core-js/internals/object-to-array.js","../node_modules/exceljs/dist/node_modules/core-js/internals/own-keys.js","../node_modules/exceljs/dist/node_modules/core-js/internals/path.js","../node_modules/exceljs/dist/node_modules/core-js/internals/perform.js","../node_modules/exceljs/dist/node_modules/core-js/internals/promise-resolve.js","../node_modules/exceljs/dist/node_modules/core-js/internals/redefine-all.js","../node_modules/exceljs/dist/node_modules/core-js/internals/redefine.js","../node_modules/exceljs/dist/node_modules/core-js/internals/require-object-coercible.js","../node_modules/exceljs/dist/node_modules/core-js/internals/set-global.js","../node_modules/exceljs/dist/node_modules/core-js/internals/set-species.js","../node_modules/exceljs/dist/node_modules/core-js/internals/set-to-string-tag.js","../node_modules/exceljs/dist/node_modules/core-js/internals/shared-key.js","../node_modules/exceljs/dist/node_modules/core-js/internals/shared-store.js","../node_modules/exceljs/dist/node_modules/core-js/internals/shared.js","../node_modules/exceljs/dist/node_modules/core-js/internals/species-constructor.js","../node_modules/exceljs/dist/node_modules/core-js/internals/task.js","../node_modules/exceljs/dist/node_modules/core-js/internals/to-absolute-index.js","../node_modules/exceljs/dist/node_modules/core-js/internals/to-indexed-object.js","../node_modules/exceljs/dist/node_modules/core-js/internals/to-integer.js","../node_modules/exceljs/dist/node_modules/core-js/internals/to-length.js","../node_modules/exceljs/dist/node_modules/core-js/internals/to-object.js","../node_modules/exceljs/dist/node_modules/core-js/internals/to-primitive.js","../node_modules/exceljs/dist/node_modules/core-js/internals/to-string-tag-support.js","../node_modules/exceljs/dist/node_modules/core-js/internals/uid.js","../node_modules/exceljs/dist/node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/exceljs/dist/node_modules/core-js/internals/well-known-symbol-wrapped.js","../node_modules/exceljs/dist/node_modules/core-js/internals/well-known-symbol.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.array.find-index.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.array.find.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.array.includes.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.array.iterator.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.number.is-nan.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.object.assign.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.object.keys.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.object.values.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.promise.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.string.from-code-point.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.string.includes.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.symbol.async-iterator.js","../node_modules/exceljs/dist/node_modules/core-js/modules/es.symbol.js","../node_modules/exceljs/dist/node_modules/core-util-is/lib/util.js","../node_modules/exceljs/dist/node_modules/create-ecdh/browser.js","../node_modules/exceljs/dist/node_modules/create-hash/browser.js","../node_modules/exceljs/dist/node_modules/create-hash/md5.js","../node_modules/exceljs/dist/node_modules/create-hmac/browser.js","../node_modules/exceljs/dist/node_modules/create-hmac/legacy.js","../node_modules/exceljs/dist/node_modules/crypto-browserify/index.js","../node_modules/exceljs/dist/node_modules/dayjs/dayjs.min.js","../node_modules/exceljs/dist/node_modules/dayjs/plugin/customParseFormat.js","../node_modules/exceljs/dist/node_modules/dayjs/plugin/utc.js","../node_modules/exceljs/dist/node_modules/des.js/lib/des.js","../node_modules/exceljs/dist/node_modules/des.js/lib/des/cbc.js","../node_modules/exceljs/dist/node_modules/des.js/lib/des/cipher.js","../node_modules/exceljs/dist/node_modules/des.js/lib/des/des.js","../node_modules/exceljs/dist/node_modules/des.js/lib/des/ede.js","../node_modules/exceljs/dist/node_modules/des.js/lib/des/utils.js","../node_modules/exceljs/dist/node_modules/diffie-hellman/browser.js","../node_modules/exceljs/dist/node_modules/diffie-hellman/lib/dh.js","../node_modules/exceljs/dist/node_modules/diffie-hellman/lib/generatePrime.js","../node_modules/exceljs/dist/node_modules/diffie-hellman/lib/primes.json","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/curve/edwards.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/curve/mont.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/curves.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/eddsa/index.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/eddsa/key.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/eddsa/signature.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../node_modules/exceljs/dist/node_modules/elliptic/lib/elliptic/utils.js","../node_modules/exceljs/dist/node_modules/elliptic/package.json","../node_modules/exceljs/dist/node_modules/events/events.js","../node_modules/exceljs/dist/node_modules/evp_bytestokey/index.js","../node_modules/exceljs/dist/node_modules/fast-csv/build/src/index.js","../node_modules/exceljs/dist/node_modules/hash-base/index.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash/common.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash/hmac.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash/ripemd.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash/sha.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash/sha/1.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash/sha/224.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash/sha/256.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash/sha/384.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash/sha/512.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash/sha/common.js","../node_modules/exceljs/dist/node_modules/hash.js/lib/hash/utils.js","../node_modules/exceljs/dist/node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/exceljs/dist/node_modules/ieee754/index.js","../node_modules/exceljs/dist/node_modules/immediate/lib/browser.js","../node_modules/exceljs/dist/node_modules/inherits/inherits_browser.js","../node_modules/exceljs/dist/node_modules/is-buffer/index.js","../node_modules/exceljs/dist/node_modules/isarray/index.js","../node_modules/exceljs/dist/node_modules/jszip/lib/base64.js","../node_modules/exceljs/dist/node_modules/jszip/lib/compressedObject.js","../node_modules/exceljs/dist/node_modules/jszip/lib/compressions.js","../node_modules/exceljs/dist/node_modules/jszip/lib/crc32.js","../node_modules/exceljs/dist/node_modules/jszip/lib/defaults.js","../node_modules/exceljs/dist/node_modules/jszip/lib/external.js","../node_modules/exceljs/dist/node_modules/jszip/lib/flate.js","../node_modules/exceljs/dist/node_modules/jszip/lib/generate/ZipFileWorker.js","../node_modules/exceljs/dist/node_modules/jszip/lib/generate/index.js","../node_modules/exceljs/dist/node_modules/jszip/lib/index.js","../node_modules/exceljs/dist/node_modules/jszip/lib/load.js","../node_modules/exceljs/dist/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js","../node_modules/exceljs/dist/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js","../node_modules/exceljs/dist/node_modules/jszip/lib/nodejsUtils.js","../node_modules/exceljs/dist/node_modules/jszip/lib/object.js","../node_modules/exceljs/dist/node_modules/jszip/lib/readable-stream-browser.js","../node_modules/exceljs/dist/node_modules/jszip/lib/reader/ArrayReader.js","../node_modules/exceljs/dist/node_modules/jszip/lib/reader/DataReader.js","../node_modules/exceljs/dist/node_modules/jszip/lib/reader/NodeBufferReader.js","../node_modules/exceljs/dist/node_modules/jszip/lib/reader/StringReader.js","../node_modules/exceljs/dist/node_modules/jszip/lib/reader/Uint8ArrayReader.js","../node_modules/exceljs/dist/node_modules/jszip/lib/reader/readerFor.js","../node_modules/exceljs/dist/node_modules/jszip/lib/signature.js","../node_modules/exceljs/dist/node_modules/jszip/lib/stream/ConvertWorker.js","../node_modules/exceljs/dist/node_modules/jszip/lib/stream/Crc32Probe.js","../node_modules/exceljs/dist/node_modules/jszip/lib/stream/DataLengthProbe.js","../node_modules/exceljs/dist/node_modules/jszip/lib/stream/DataWorker.js","../node_modules/exceljs/dist/node_modules/jszip/lib/stream/GenericWorker.js","../node_modules/exceljs/dist/node_modules/jszip/lib/stream/StreamHelper.js","../node_modules/exceljs/dist/node_modules/jszip/lib/support.js","../node_modules/exceljs/dist/node_modules/jszip/lib/utf8.js","../node_modules/exceljs/dist/node_modules/jszip/lib/utils.js","../node_modules/exceljs/dist/node_modules/jszip/lib/zipEntries.js","../node_modules/exceljs/dist/node_modules/jszip/lib/zipEntry.js","../node_modules/exceljs/dist/node_modules/jszip/lib/zipObject.js","../node_modules/exceljs/dist/node_modules/lie/lib/browser.js","../node_modules/exceljs/dist/node_modules/lodash.escaperegexp/index.js","../node_modules/exceljs/dist/node_modules/lodash.groupby/index.js","../node_modules/exceljs/dist/node_modules/lodash.isboolean/index.js","../node_modules/exceljs/dist/node_modules/lodash.isequal/index.js","../node_modules/exceljs/dist/node_modules/lodash.isfunction/index.js","../node_modules/exceljs/dist/node_modules/lodash.isnil/index.js","../node_modules/exceljs/dist/node_modules/lodash.isundefined/index.js","../node_modules/exceljs/dist/node_modules/lodash.uniq/index.js","../node_modules/exceljs/dist/node_modules/md5.js/index.js","../node_modules/exceljs/dist/node_modules/miller-rabin/lib/mr.js","../node_modules/exceljs/dist/node_modules/minimalistic-assert/index.js","../node_modules/exceljs/dist/node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/exceljs/dist/node_modules/pako/index.js","../node_modules/exceljs/dist/node_modules/pako/lib/deflate.js","../node_modules/exceljs/dist/node_modules/pako/lib/inflate.js","../node_modules/exceljs/dist/node_modules/pako/lib/utils/common.js","../node_modules/exceljs/dist/node_modules/pako/lib/utils/strings.js","../node_modules/exceljs/dist/node_modules/pako/lib/zlib/adler32.js","../node_modules/exceljs/dist/node_modules/pako/lib/zlib/constants.js","../node_modules/exceljs/dist/node_modules/pako/lib/zlib/crc32.js","../node_modules/exceljs/dist/node_modules/pako/lib/zlib/deflate.js","../node_modules/exceljs/dist/node_modules/pako/lib/zlib/gzheader.js","../node_modules/exceljs/dist/node_modules/pako/lib/zlib/inffast.js","../node_modules/exceljs/dist/node_modules/pako/lib/zlib/inflate.js","../node_modules/exceljs/dist/node_modules/pako/lib/zlib/inftrees.js","../node_modules/exceljs/dist/node_modules/pako/lib/zlib/messages.js","../node_modules/exceljs/dist/node_modules/pako/lib/zlib/trees.js","../node_modules/exceljs/dist/node_modules/pako/lib/zlib/zstream.js","../node_modules/exceljs/dist/node_modules/parse-asn1/aesid.json","../node_modules/exceljs/dist/node_modules/parse-asn1/asn1.js","../node_modules/exceljs/dist/node_modules/parse-asn1/certificate.js","../node_modules/exceljs/dist/node_modules/parse-asn1/fixProc.js","../node_modules/exceljs/dist/node_modules/parse-asn1/index.js","../node_modules/exceljs/dist/node_modules/pbkdf2/browser.js","../node_modules/exceljs/dist/node_modules/pbkdf2/lib/async.js","../node_modules/exceljs/dist/node_modules/pbkdf2/lib/default-encoding.js","../node_modules/exceljs/dist/node_modules/pbkdf2/lib/precondition.js","../node_modules/exceljs/dist/node_modules/pbkdf2/lib/sync-browser.js","../node_modules/exceljs/dist/node_modules/pbkdf2/lib/to-buffer.js","../node_modules/exceljs/dist/node_modules/process-nextick-args/index.js","../node_modules/exceljs/dist/node_modules/process/browser.js","../node_modules/exceljs/dist/node_modules/public-encrypt/browser.js","../node_modules/exceljs/dist/node_modules/public-encrypt/mgf.js","../node_modules/exceljs/dist/node_modules/public-encrypt/privateDecrypt.js","../node_modules/exceljs/dist/node_modules/public-encrypt/publicEncrypt.js","../node_modules/exceljs/dist/node_modules/public-encrypt/withPublic.js","../node_modules/exceljs/dist/node_modules/public-encrypt/xor.js","../node_modules/exceljs/dist/node_modules/randombytes/browser.js","../node_modules/exceljs/dist/node_modules/randomfill/browser.js","../node_modules/exceljs/dist/node_modules/readable-stream/errors-browser.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/exceljs/dist/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/exceljs/dist/node_modules/readable-stream/readable-browser.js","../node_modules/exceljs/dist/node_modules/regenerator-runtime/runtime.js","../node_modules/exceljs/dist/node_modules/ripemd160/index.js","../node_modules/exceljs/dist/node_modules/safe-buffer/index.js","../node_modules/exceljs/dist/node_modules/safer-buffer/safer.js","../node_modules/exceljs/dist/node_modules/saxes/saxes.js","../node_modules/exceljs/dist/node_modules/set-immediate-shim/index.js","../node_modules/exceljs/dist/node_modules/sha.js/hash.js","../node_modules/exceljs/dist/node_modules/sha.js/index.js","../node_modules/exceljs/dist/node_modules/sha.js/sha.js","../node_modules/exceljs/dist/node_modules/sha.js/sha1.js","../node_modules/exceljs/dist/node_modules/sha.js/sha224.js","../node_modules/exceljs/dist/node_modules/sha.js/sha256.js","../node_modules/exceljs/dist/node_modules/sha.js/sha384.js","../node_modules/exceljs/dist/node_modules/sha.js/sha512.js","../node_modules/exceljs/dist/node_modules/stream-browserify/index.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/duplex-browser.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/BufferList.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/passthrough.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/readable-browser.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/transform.js","../node_modules/exceljs/dist/node_modules/stream-browserify/node_modules/readable-stream/writable-browser.js","../node_modules/exceljs/dist/node_modules/string_decoder/lib/string_decoder.js","../node_modules/exceljs/dist/node_modules/timers-browserify/main.js","../node_modules/exceljs/dist/node_modules/util-deprecate/browser.js","../node_modules/exceljs/dist/node_modules/util/node_modules/inherits/inherits_browser.js","../node_modules/exceljs/dist/node_modules/util/support/isBufferBrowser.js","../node_modules/exceljs/dist/node_modules/util/util.js","../node_modules/exceljs/dist/node_modules/uuid/dist/index.js","../node_modules/exceljs/dist/node_modules/uuid/dist/md5-browser.js","../node_modules/exceljs/dist/node_modules/uuid/dist/nil.js","../node_modules/exceljs/dist/node_modules/uuid/dist/parse.js","../node_modules/exceljs/dist/node_modules/uuid/dist/regex.js","../node_modules/exceljs/dist/node_modules/uuid/dist/rng-browser.js","../node_modules/exceljs/dist/node_modules/uuid/dist/sha1-browser.js","../node_modules/exceljs/dist/node_modules/uuid/dist/stringify.js","../node_modules/exceljs/dist/node_modules/uuid/dist/v1.js","../node_modules/exceljs/dist/node_modules/uuid/dist/v3.js","../node_modules/exceljs/dist/node_modules/uuid/dist/v35.js","../node_modules/exceljs/dist/node_modules/uuid/dist/v4.js","../node_modules/exceljs/dist/node_modules/uuid/dist/v5.js","../node_modules/exceljs/dist/node_modules/uuid/dist/validate.js","../node_modules/exceljs/dist/node_modules/uuid/dist/version.js","../node_modules/exceljs/dist/node_modules/xmlchars/xml/1.0/ed5.js","../node_modules/exceljs/dist/node_modules/xmlchars/xml/1.1/ed2.js","../node_modules/exceljs/dist/node_modules/xmlchars/xmlns/1.0/ed3.js","../node_modules/file-saver/src/FileSaver.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/jalaali-js/index.js","../node_modules/linq.ts/dist/linq.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayAggregator.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAggregator.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_createAggregator.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/eq.js","../node_modules/lodash/get.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keyBy.js","../node_modules/lodash/keys.js","../node_modules/lodash/memoize.js","../node_modules/lodash/property.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toString.js","../node_modules/moment-timezone/index.js","../node_modules/moment-timezone/moment-timezone.js","../node_modules/moment/moment.js","../node_modules/msal/node_modules/tslib/tslib.es6.js","../node_modules/msal/src/utils/CryptoUtils.ts","../node_modules/msal/src/utils/Constants.ts","../node_modules/msal/src/authority/Authority.ts","../node_modules/msal/src/error/AuthError.ts","../node_modules/msal/src/utils/StringUtils.ts","../node_modules/msal/src/error/ClientAuthError.ts","../node_modules/msal/src/error/ClientConfigurationError.ts","../node_modules/msal/src/ScopeSet.ts","../node_modules/msal/src/utils/UrlUtils.ts","../node_modules/msal/src/cache/AccessTokenKey.ts","../node_modules/msal/src/cache/AccessTokenValue.ts","../node_modules/msal/src/packageMetadata.ts","../node_modules/msal/src/ServerRequestParameters.ts","../node_modules/msal/src/XHRClient.ts","../node_modules/msal/src/authority/TrustedAuthority.ts","../node_modules/msal/src/Logger.ts","../node_modules/msal/src/ClientInfo.ts","../node_modules/msal/src/utils/TimeUtils.ts","../node_modules/msal/src/utils/TokenUtils.ts","../node_modules/msal/src/IdToken.ts","../node_modules/msal/src/cache/AccessTokenCacheItem.ts","../node_modules/msal/src/cache/BrowserStorage.ts","../node_modules/msal/src/utils/RequestUtils.ts","../node_modules/msal/src/cache/AuthCache.ts","../node_modules/msal/src/Account.ts","../node_modules/msal/src/utils/WindowUtils.ts","../node_modules/msal/src/utils/ResponseUtils.ts","../node_modules/msal/src/authority/AuthorityFactory.ts","../node_modules/msal/src/Configuration.ts","../node_modules/msal/src/error/ServerError.ts","../node_modules/msal/src/error/InteractionRequiredAuthError.ts","../node_modules/msal/src/AuthResponse.ts","../node_modules/msal/src/telemetry/TelemetryConstants.ts","../node_modules/msal/src/telemetry/ApiEvent.ts","../node_modules/msal/src/telemetry/TelemetryUtils.ts","../node_modules/msal/src/telemetry/TelemetryEvent.ts","../node_modules/msal/src/telemetry/DefaultEvent.ts","../node_modules/msal/src/telemetry/HttpEvent.ts","../node_modules/msal/src/telemetry/TelemetryManager.ts","../node_modules/msal/src/utils/AuthCacheUtils.ts","../node_modules/msal/src/UserAgentApplication.ts","../node_modules/object-assign/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-aad-msal/src/AccessTokenResponse.ts","../node_modules/react-aad-msal/src/AuthenticationActionCreators.ts","../node_modules/react-aad-msal/src/IdTokenResponse.ts","../node_modules/react-aad-msal/src/Logger.ts","../node_modules/react-aad-msal/src/MsalAuthProvider.ts","../node_modules/react-aad-msal/src/components/AzureAD.tsx","../node_modules/react-aad-msal/src/components/withAuthentication.tsx","../node_modules/react-aad-msal/src/enums/AuthenticationActions.ts","../node_modules/react-aad-msal/src/enums/AuthenticationState.ts","../node_modules/react-aad-msal/src/enums/LoginType.ts","../node_modules/react-aad-msal/src/enums/TokenType.ts","../node_modules/react-aad-msal/src/enums/index.ts","../node_modules/react-aad-msal/src/index.ts","../node_modules/react-aad-msal/src/interfaces/index.ts","../node_modules/react-apexcharts/dist/react-apexcharts.min.js","../node_modules/react-chartjs-2/es/index.js","../node_modules/react-currency-format/lib/currency-format.js","../node_modules/react-currency-format/lib/utils.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/index.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.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/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","../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","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.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/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/tslib/tslib.es6.js","../node_modules/@fluentui/merge-styles/src/concatStyleSets.ts","../node_modules/@fluentui/merge-styles/src/concatStyleSetsWithProps.ts","../node_modules/@fluentui/utilities/lib/src/dom/canUseDOM.ts","../node_modules/@fluentui/utilities/lib/src/dom/getWindow.ts","../node_modules/@fluentui/utilities/src/GlobalSettings.ts","../node_modules/@fluentui/utilities/lib/src/customizations/Customizations.ts","../node_modules/@fluentui/utilities/lib/src/customizations/CustomizerContext.ts","../node_modules/@fluentui/utilities/lib/src/customizations/useCustomizationSettings.ts","../node_modules/@fluentui/utilities/src/styled.tsx","../node_modules/@fluentui/merge-styles/src/Stylesheet.ts","../node_modules/@fluentui/merge-styles/src/StyleOptionsState.ts","../node_modules/@fluentui/merge-styles/src/extractStyleParts.ts","../node_modules/@fluentui/merge-styles/lib/src/transforms/kebabRules.ts","../node_modules/@fluentui/merge-styles/src/getVendorSettings.ts","../node_modules/@fluentui/merge-styles/lib/src/transforms/prefixRules.ts","../node_modules/@fluentui/merge-styles/lib/src/transforms/provideUnits.ts","../node_modules/@fluentui/merge-styles/lib/src/transforms/rtlifyRules.ts","../node_modules/@fluentui/merge-styles/src/styleToClassName.ts","../node_modules/@fluentui/merge-styles/src/tokenizeWithParentheses.ts","../node_modules/@fluentui/merge-styles/src/mergeStyles.ts","../node_modules/@fluentui/merge-styles/src/keyframes.ts","../node_modules/@fluentui/theme/lib/src/motion/AnimationStyles.ts","../node_modules/@fluentui/style-utilities/lib/src/classNames/AnimationClassNames.ts","../node_modules/@fluentui/theme/lib/src/fonts/FluentFonts.ts","../node_modules/@fluentui/style-utilities/lib/src/utilities/buildClassMap.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/CommonStyles.ts","../node_modules/@fluentui/utilities/src/setFocusVisibility.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/zIndexes.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/getFocusStyle.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/hiddenContentStyle.ts","../node_modules/@fluentui/utilities/src/memoize.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/getGlobalClassNames.ts","../node_modules/@microsoft/load-themed-styles/src/index.ts","../node_modules/@fluentui/theme/lib/src/colors/DefaultPalette.ts","../node_modules/@fluentui/theme/lib/src/effects/FluentDepths.ts","../node_modules/@fluentui/theme/lib/src/effects/DefaultEffects.ts","../node_modules/@fluentui/merge-styles/src/fontFace.ts","../node_modules/@fluentui/theme/lib/src/fonts/createFontStyles.ts","../node_modules/@fluentui/utilities/src/language.ts","../node_modules/@fluentui/utilities/lib/src/dom/getDocument.ts","../node_modules/@fluentui/utilities/src/sessionStorage.ts","../node_modules/@fluentui/theme/lib/src/fonts/DefaultFontStyles.ts","../node_modules/@fluentui/utilities/src/localStorage.ts","../node_modules/@fluentui/utilities/src/merge.ts","../node_modules/@fluentui/theme/lib/src/utilities/makeSemanticColors.ts","../node_modules/@fluentui/theme/lib/src/spacing/DefaultSpacing.ts","../node_modules/@fluentui/theme/src/createTheme.ts","../node_modules/@fluentui/theme/src/mergeThemes.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/theme.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/GeneralStyles.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/getPlaceholderStyles.ts","../node_modules/@fluentui/utilities/lib/src/warn/warn.ts","../node_modules/@fluentui/style-utilities/lib/src/utilities/icons.ts","../node_modules/@fluentui/merge-styles/src/mergeStyleSets.ts","../node_modules/@fluentui/style-utilities/src/cdn.ts","../node_modules/@fluentui/set-version/src/setVersion.ts","../node_modules/@fluentui/set-version/src/index.ts","../node_modules/@fluentui/style-utilities/src/version.ts","../node_modules/@fluentui/style-utilities/src/index.ts","../node_modules/@fluentui/utilities/src/KeyCodes.ts","../node_modules/@fluentui/utilities/src/rtl.ts","../node_modules/@fluentui/utilities/src/classNamesFunction.ts","../node_modules/@fluentui/utilities/src/getId.ts","../node_modules/@fluentui/dom-utilities/src/isVirtualElement.ts","../node_modules/@fluentui/dom-utilities/src/getParent.ts","../node_modules/@fluentui/dom-utilities/src/getVirtualParent.ts","../node_modules/@fluentui/dom-utilities/src/findElementRecursive.ts","../node_modules/@fluentui/dom-utilities/src/setPortalAttribute.ts","../node_modules/@fluentui/dom-utilities/src/portalContainsElement.ts","../node_modules/@fluentui/utilities/src/appendFunction.ts","../node_modules/@fluentui/utilities/src/extendComponent.ts","../node_modules/@fluentui/utilities/src/initializeComponentRef.ts","../node_modules/@fluentui/utilities/src/Async.ts","../node_modules/@fluentui/utilities/src/object.ts","../node_modules/@fluentui/utilities/src/properties.ts","../node_modules/@fluentui/react/lib/components/src/components/Tooltip/TooltipHost.types.ts","../node_modules/@fluentui/react/lib/src/common/DirectionalHint.ts","../node_modules/@fluentui/dom-utilities/src/elementContains.ts","../node_modules/@fluentui/utilities/src/focus.ts","../node_modules/@fluentui/dom-utilities/src/elementContainsAttribute.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/positioning/positioning.types.ts","../node_modules/@fluentui/utilities/src/scroll.ts","../node_modules/@fluentui/utilities/lib/src/dom/on.ts","../node_modules/@fluentui/utilities/src/getPropsWithDefaults.ts","../node_modules/@fluentui/utilities/src/css.ts","../node_modules/@fluentui/utilities/src/Rectangle.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/positioning/positioning.ts","../node_modules/@fluentui/utilities/src/modalize.ts","../node_modules/@fluentui/react-hooks/src/useAsync.ts","../node_modules/@fluentui/react-hooks/src/useOnEvent.ts","../node_modules/@fluentui/react-hooks/src/useMergedRefs.ts","../node_modules/@fluentui/react-window-provider/src/WindowProvider.tsx","../node_modules/@fluentui/react/lib/components/src/components/Popup/Popup.tsx","../node_modules/@fluentui/react-hooks/src/useConst.ts","../node_modules/@fluentui/react-hooks/src/useTarget.ts","../node_modules/@fluentui/react/lib/components/src/components/Callout/CalloutContent.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Callout/CalloutContent.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Callout/CalloutContent.tsx","../node_modules/@fluentui/react-portal-compat-context/src/PortalCompatContext.ts","../node_modules/@fluentui/utilities/src/keyboard.ts","../node_modules/@fluentui/utilities/src/useFocusRects.ts","../node_modules/@fluentui/utilities/src/FocusRectsProvider.tsx","../node_modules/@fluentui/utilities/lib/src/customizations/mergeSettings.ts","../node_modules/@fluentui/utilities/lib/src/customizations/Customizer.tsx","../node_modules/@fluentui/utilities/lib/src/customizations/mergeCustomizations.ts","../node_modules/@fluentui/react/lib/components/src/components/Fabric/Fabric.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Fabric/Fabric.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Fabric/Fabric.tsx","../node_modules/@fluentui/react/lib/components/src/components/Layer/Layer.notification.ts","../node_modules/@fluentui/utilities/src/useIsomorphicLayoutEffect.ts","../node_modules/@fluentui/react/lib/components/src/components/Layer/Layer.base.tsx","../node_modules/@fluentui/dom-utilities/src/setVirtualParent.ts","../node_modules/@fluentui/react/lib/components/src/components/Layer/Layer.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Layer/Layer.tsx","../node_modules/@fluentui/react/lib/components/src/components/Callout/Callout.tsx","../node_modules/@fluentui/react/lib/components/src/components/Tooltip/Tooltip.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Tooltip/Tooltip.types.ts","../node_modules/@fluentui/react/lib/components/src/components/Tooltip/Tooltip.tsx","../node_modules/@fluentui/react/lib/components/src/components/Tooltip/Tooltip.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Tooltip/TooltipHost.base.tsx","../node_modules/@ioip/core/lib/utilities/HttpStatusCode.js","../node_modules/@fluentui/utilities/src/overflow.ts","../node_modules/@fluentui/react/lib/components/src/components/Tooltip/TooltipHost.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Tooltip/TooltipHost.ts","../node_modules/@ioip/core/lib/utilities/isNullOrEmpty.js","../node_modules/@ioip/core/lib/utilities/icons.js","../node_modules/@ioip/core/lib/types/AppContext.js","../node_modules/@ioip/core/lib/utilities/grid-helper.js","../node_modules/@ioip/core/lib/types/DataSourceType.js","../node_modules/@ioip/core/lib/types/Host.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@ioip/core/lib/types/ReadonlyCollection.js","../node_modules/@ioip/core/lib/types/ValueOf.js","../node_modules/@ioip/core/lib/types/XColor.js","../node_modules/@ioip/core/lib/types/XFontSize.js","../node_modules/@ioip/core/lib/types/XFontWeight.js","../node_modules/@ioip/core/lib/utilities/Guid.js","../node_modules/@ioip/core/lib/data/DataTableRequest.js","../node_modules/@ioip/core/lib/utilities/paginate-data.js","../node_modules/@ioip/core/lib/utilities/validations.js","../node_modules/@ioip/core/lib/utilities/Nullable.js","../node_modules/@ioip/core/lib/components/Column.js","../node_modules/@fluentui/utilities/src/EventGroup.ts","../node_modules/@fluentui/utilities/src/BaseComponent.ts","../node_modules/@fluentui/utilities/lib/src/componentAs/composeComponentAs.tsx","../node_modules/@fluentui/react/lib/utilities/src/utilities/keytips/KeytipConstants.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/keytips/KeytipManager.ts","../node_modules/@fluentui/react-hooks/src/usePrevious.ts","../node_modules/@fluentui/react/lib/components/src/components/OverflowSet/OverflowButton.tsx","../node_modules/@fluentui/react/lib/components/src/components/OverflowSet/OverflowSet.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/OverflowSet/OverflowSet.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/ResizeGroup/ResizeGroup.types.ts","../node_modules/@fluentui/react/lib/components/src/components/OverflowSet/OverflowSet.ts","../node_modules/@fluentui/react/lib/components/src/components/ResizeGroup/ResizeGroup.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/ResizeGroup/ResizeGroup.tsx","../node_modules/@fluentui/react-focus/lib/components/src/components/FocusZone/FocusZone.types.ts","../node_modules/@fluentui/utilities/src/array.ts","../node_modules/@fluentui/utilities/src/createMergedRef.ts","../node_modules/@fluentui/react-focus/lib/components/src/components/FocusZone/FocusZone.tsx","../node_modules/@fluentui/react/lib/components/src/components/Icon/Icon.types.ts","../node_modules/@fluentui/react/lib/components/src/components/Image/Image.types.ts","../node_modules/@fluentui/utilities/src/aria.ts","../node_modules/@fluentui/react/lib/components/src/components/Image/Image.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Image/Image.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Image/Image.tsx","../node_modules/@fluentui/react/lib/components/src/components/Icon/Icon.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Icon/FontIcon.tsx","../node_modules/@fluentui/react/lib/components/src/components/Icon/Icon.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Icon/Icon.tsx","../node_modules/@fluentui/react/lib/components/src/components/Icon/ImageIcon.tsx","../node_modules/@fluentui/utilities/lib/src/renderFunction/composeRenderFunction.tsx","../node_modules/@fluentui/react/lib/components/src/components/ContextualMenu/ContextualMenu.types.ts","../node_modules/@fluentui/utilities/src/osDetector.ts","../node_modules/@fluentui/utilities/src/mobileDetector.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/contextualMenu/contextualMenuUtility.ts","../node_modules/@fluentui/react/lib/components/src/components/ContextualMenu/ContextualMenuItem.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Divider/VerticalDivider.classNames.ts","../node_modules/@fluentui/react/lib/components/src/components/ContextualMenu/ContextualMenu.cnstyles.ts","../node_modules/@fluentui/react/lib/components/src/components/ContextualMenu/ContextualMenu.classNames.ts","../node_modules/@fluentui/react/lib/components/src/components/ContextualMenu/ContextualMenuItem.ts","../node_modules/@fluentui/react/lib/components/ContextualMenu/src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuItemWrapper.tsx","../node_modules/@fluentui/react/lib/utilities/src/utilities/keytips/KeytipUtils.ts","../node_modules/@fluentui/react/lib/components/src/components/KeytipData/useKeytipData.ts","../node_modules/@fluentui/react/lib/components/src/components/KeytipData/KeytipData.tsx","../node_modules/@fluentui/react/lib/components/ContextualMenu/src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuAnchor.tsx","../node_modules/@fluentui/react/lib/components/src/components/Divider/VerticalDivider.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Divider/VerticalDivider.tsx","../node_modules/@fluentui/react/lib/components/src/components/Divider/VerticalDivider.styles.ts","../node_modules/@fluentui/react/lib/components/ContextualMenu/src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuSplitButton.tsx","../node_modules/@fluentui/react/lib/components/ContextualMenu/src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuButton.tsx","../node_modules/@fluentui/react-hooks/src/useId.ts","../node_modules/@fluentui/react-hooks/src/useWarnings.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/decorators/withResponsiveMode.tsx","../node_modules/@fluentui/react/lib/utilities/src/utilities/hooks/useResponsiveMode.tsx","../node_modules/@fluentui/react/lib/utilities/src/utilities/MenuContext/MenuContext.ts","../node_modules/@fluentui/react/lib/components/src/components/ContextualMenu/ContextualMenu.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/ContextualMenu/ContextualMenu.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/ContextualMenu/ContextualMenu.tsx","../node_modules/@fluentui/react/lib/components/src/components/Button/BaseButton.classNames.ts","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/SplitButton/SplitButton.classNames.ts","../node_modules/@fluentui/react/lib/components/src/components/Button/BaseButton.tsx","../node_modules/@fluentui/utilities/lib/src/customizations/customizable.tsx","../node_modules/@fluentui/utilities/src/hoistStatics.ts","../node_modules/@fluentui/react/lib/components/src/components/Button/BaseButton.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsList.types.ts","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/SplitButton/SplitButton.styles.ts","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/CommandBarButton/CommandBarButton.styles.ts","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/CommandBarButton/CommandBarButton.tsx","../node_modules/@fluentui/react/lib/components/src/components/CommandBar/CommandBar.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/CommandBar/CommandBar.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/CommandBar/CommandBar.tsx","../node_modules/@fluentui/utilities/lib/src/selection/Selection.types.ts","../node_modules/@fluentui/utilities/lib/src/selection/Selection.ts","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupSpacer.tsx","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupedList.types.ts","../node_modules/@fluentui/utilities/src/getNativeElementProps.ts","../node_modules/@fluentui/react/lib/components/src/components/Check/Check.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Check/Check.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Check/Check.tsx","../node_modules/@fluentui/react/lib/components/src/components/Link/Link.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsRow.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsHeader.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsRowCheck.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsRowCheck.tsx","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsHeader.types.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/dragdrop/DragDropHelper.tsx","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsColumn.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsColumn.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsColumn.ts","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsHeader.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsHeader.ts","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsRowFields.tsx","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsRow.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsRow.ts","../node_modules/@fluentui/react/lib/components/src/components/Spinner/Spinner.types.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/selection/SelectionZone.tsx","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupedList.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupHeader.styles.ts","../node_modules/@fluentui/utilities/src/DelayedRender.tsx","../node_modules/@fluentui/react/lib/components/src/components/Spinner/Spinner.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Spinner/Spinner.styles.tsx","../node_modules/@fluentui/react/lib/components/src/components/Spinner/Spinner.tsx","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupHeader.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupHeader.ts","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupShowAll.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Link/useLink.ts","../node_modules/@fluentui/react/lib/components/src/components/Link/Link.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Link/Link.tsx","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupShowAll.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupShowAll.ts","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupFooter.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupFooter.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupFooter.ts","../node_modules/@fluentui/react/lib/components/src/components/List/List.types.ts","../node_modules/@fluentui/react/lib/components/List/src/components/List/utils/scroll.ts","../node_modules/@fluentui/react/lib/components/src/components/List/List.tsx","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupedListSection.tsx","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupedList.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/GroupedList/GroupedList.ts","../node_modules/@fluentui/utilities/src/hoist.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/decorators/BaseDecorator.ts","../node_modules/@fluentui/utilities/lib/src/dom/getRect.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/decorators/withViewport.tsx","../node_modules/@fluentui/react/lib/utilities/src/utilities/groupedList/GroupedListUtility.tsx","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsList.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsList.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Shimmer/Shimmer.types.ts","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/DetailsList.ts","../node_modules/@fluentui/react/lib/components/src/components/Shimmer/Shimmer.styles.ts","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerLine/ShimmerLine.base.tsx","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerLine/ShimmerLine.styles.ts","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerLine/ShimmerLine.tsx","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerGap/ShimmerGap.base.tsx","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerGap/ShimmerGap.styles.ts","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerGap/ShimmerGap.tsx","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerCircle/ShimmerCircle.styles.ts","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerCircle/ShimmerCircle.base.tsx","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerCircle/ShimmerCircle.tsx","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerElementsGroup/ShimmerElementsGroup.base.tsx","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerElementsGroup/ShimmerElementsGroup.styles.ts","../node_modules/@fluentui/react/lib/components/Shimmer/src/components/Shimmer/ShimmerElementsGroup/ShimmerElementsGroup.tsx","../node_modules/@fluentui/react-hooks/src/useSetTimeout.ts","../node_modules/@fluentui/react/lib/components/src/components/Shimmer/Shimmer.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Shimmer/Shimmer.tsx","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/ShimmeredDetailsList.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/ShimmeredDetailsList.ts","../node_modules/@fluentui/react/lib/components/src/components/DetailsList/ShimmeredDetailsList.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Label/Label.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Label/Label.tsx","../node_modules/@fluentui/react/lib/components/src/components/Label/Label.styles.ts","../node_modules/@fluentui/utilities/src/ie11Detector.ts","../node_modules/@fluentui/react/lib/components/src/components/TextField/TextField.base.tsx","../node_modules/@fluentui/utilities/src/controlled.ts","../node_modules/@fluentui/react/lib/components/src/components/TextField/TextField.styles.tsx","../node_modules/@fluentui/react/lib/components/src/components/TextField/TextField.ts","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@fluentui/foundation-legacy/src/utilities.ts","../node_modules/@fluentui/foundation-legacy/src/slots.tsx","../node_modules/@fluentui/foundation-legacy/src/createComponent.tsx","../node_modules/@fluentui/react/lib/components/Stack/src/components/Stack/StackItem/StackItem.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Stack/StackUtils.ts","../node_modules/@fluentui/react/lib/components/src/components/Stack/Stack.styles.ts","../node_modules/@fluentui/react/lib/components/Stack/src/components/Stack/StackItem/StackItem.tsx","../node_modules/@fluentui/react/lib/components/src/components/Stack/Stack.tsx","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/DefaultButton/DefaultButton.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Button/ButtonThemes.ts","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/DefaultButton/DefaultButton.tsx","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/PrimaryButton/PrimaryButton.tsx","../node_modules/@ioip/core/lib/components/Paginator.js","../node_modules/@ioip/core/lib/components/Row.js","../node_modules/@fluentui/react/lib/utilities/src/utilities/ThemeProvider/ThemeContext.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/ThemeProvider/useTheme.ts","../node_modules/@ioip/core/lib/components/Subtitle.js","../node_modules/@ioip/core/lib/components/DataTable.js","../node_modules/@ioip/core/lib/components/DataTableIcon.js","../node_modules/@ioip/core/lib/components/Grid.js","../node_modules/@ioip/core/lib/components/IoipIcons.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/IconButton/IconButton.styles.ts","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/IconButton/IconButton.tsx","../node_modules/@fluentui/react/lib/components/src/components/Overlay/Overlay.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Overlay/Overlay.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Overlay/Overlay.tsx","../node_modules/@fluentui/react-hooks/src/useEventCallback.ts","../node_modules/@fluentui/react-hooks/src/useUnmount.ts","../node_modules/@fluentui/react/lib/components/src/components/Panel/Panel.types.ts","../node_modules/@fluentui/react/lib/components/src/components/FocusTrapZone/FocusTrapZone.tsx","../node_modules/@fluentui/react/lib/components/src/components/Panel/Panel.base.tsx","../node_modules/@fluentui/date-time-utilities/lib/src/dateValues/dateValues.ts","../node_modules/@fluentui/react/lib/components/src/components/Panel/Panel.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Panel/Panel.ts","../node_modules/@fluentui/utilities/src/string.ts","../node_modules/@fluentui/date-time-utilities/lib/src/dateFormatting/dateFormatting.defaults.ts","../node_modules/@fluentui/date-time-utilities/lib/src/dateValues/timeConstants.ts","../node_modules/@fluentui/date-time-utilities/lib/src/dateMath/dateMath.ts","../node_modules/@fluentui/date-time-utilities/lib/src/dateGrid/isContiguous.ts","../node_modules/@fluentui/date-time-utilities/lib/src/dateGrid/getDateRangeTypeToUse.ts","../node_modules/@fluentui/date-time-utilities/lib/src/dateGrid/getBoundedDateRange.ts","../node_modules/@fluentui/date-time-utilities/lib/src/dateGrid/isBeforeMinDate.ts","../node_modules/@fluentui/date-time-utilities/lib/src/dateGrid/isAfterMaxDate.ts","../node_modules/@fluentui/date-time-utilities/lib/src/dateGrid/isRestrictedDate.ts","../node_modules/@fluentui/react/lib/components/src/components/CalendarDayGrid/CalendarMonthHeaderRow.tsx","../node_modules/@fluentui/date-time-utilities/lib/src/dateGrid/findAvailableDate.ts","../node_modules/@fluentui/react/lib/components/src/components/CalendarDayGrid/CalendarGridDayCell.tsx","../node_modules/@fluentui/react/lib/components/src/components/CalendarDayGrid/CalendarGridRow.tsx","../node_modules/@fluentui/react/lib/components/src/components/CalendarDayGrid/CalendarDayGrid.base.tsx","../node_modules/@fluentui/date-time-utilities/lib/src/dateGrid/getDayGrid.ts","../node_modules/@fluentui/react/lib/components/src/components/Calendar/Calendar.types.ts","../node_modules/@fluentui/react/lib/components/src/components/CalendarDayGrid/CalendarDayGrid.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/CalendarDayGrid/CalendarDayGrid.tsx","../node_modules/@fluentui/react/lib/components/Calendar/src/components/Calendar/CalendarDay/CalendarDay.base.tsx","../node_modules/@fluentui/react/lib/components/Calendar/src/components/Calendar/CalendarDay/CalendarDay.tsx","../node_modules/@fluentui/react/lib/components/Calendar/src/components/Calendar/CalendarDay/CalendarDay.styles.ts","../node_modules/@fluentui/react/lib/components/Calendar/src/components/Calendar/CalendarPicker/CalendarPicker.styles.ts","../node_modules/@fluentui/react/lib/components/Calendar/src/components/Calendar/CalendarMonth/CalendarMonth.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Calendar/defaults.ts","../node_modules/@fluentui/react/lib/components/Calendar/src/components/Calendar/CalendarYear/CalendarYear.base.tsx","../node_modules/@fluentui/react/lib/components/Calendar/src/components/Calendar/CalendarYear/CalendarYear.tsx","../node_modules/@fluentui/react/lib/components/Calendar/src/components/Calendar/CalendarYear/CalendarYear.styles.ts","../node_modules/@fluentui/react/lib/components/Calendar/src/components/Calendar/CalendarMonth/CalendarMonth.base.tsx","../node_modules/@fluentui/react/lib/components/Calendar/src/components/Calendar/CalendarMonth/CalendarMonth.tsx","../node_modules/@fluentui/react-hooks/src/useControllableValue.ts","../node_modules/@fluentui/react/lib/components/src/components/Calendar/Calendar.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Calendar/Calendar.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Calendar/Calendar.tsx","../node_modules/@fluentui/react/lib/components/src/components/DatePicker/defaults.ts","../node_modules/@fluentui/react/lib/components/src/components/DatePicker/DatePicker.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/DatePicker/DatePicker.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DatePicker/DatePicker.tsx","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@ioip/core/lib/exceptions/Exception.js","../node_modules/@ioip/core/lib/exceptions/ArgumentNullException.js","../node_modules/@ioip/core/lib/exceptions/InvalidArgumentTypeException.js","../node_modules/@ioip/core/lib/types/DateTime.js","../node_modules/@ioip/core/lib/components/XDatePicker.js","../node_modules/@fluentui/react/lib/components/src/components/Autofill/Autofill.tsx","../node_modules/@fluentui/react/lib/components/src/components/Checkbox/Checkbox.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Checkbox/Checkbox.styles.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/selectableOption/SelectableOption.types.ts","../node_modules/@fluentui/react/lib/components/src/components/Checkbox/Checkbox.tsx","../node_modules/@fluentui/react/lib/components/src/components/ComboBox/ComboBox.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/ComboBox/ComboBox.classNames.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/selectableOption/SelectableOption.ts","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/ActionButton/ActionButton.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/ComboBox/ComboBox.tsx","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/ActionButton/ActionButton.tsx","../node_modules/@fluentui/react/lib/components/Button/src/components/Button/CommandButton/CommandButton.tsx","../node_modules/@fluentui/dom-utilities/src/getChildren.ts","../node_modules/@ioip/core/lib/components/XComboBox.js","../node_modules/@fluentui/react/lib/components/src/components/TeachingBubble/TeachingBubbleContent.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/TeachingBubble/TeachingBubble.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/TeachingBubble/TeachingBubbleContent.ts","../node_modules/@fluentui/react/lib/components/src/components/TeachingBubble/TeachingBubble.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/TeachingBubble/TeachingBubble.ts","../node_modules/@ioip/core/lib/components/XTextField.js","../node_modules/@ioip/core/lib/defaults/DefaultStandarDataTableColumns.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/@ioip/core/lib/components/StandarPanel.js","../node_modules/@ioip/core/lib/components/StandarDataTableItem.js","../node_modules/@ioip/core/lib/components/StandarDataTable.js","../node_modules/@ioip/core/lib/components/FunctionHost.js","../node_modules/@ioip/core/lib/surfaces/Page.js","../node_modules/@ioip/core/lib/components/SearchableComboBox.js","../node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-base/src/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-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-layouts/src/splitter/splitter.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-layouts/src/splitter/splitter.component.js","../node_modules/@syncfusion/ej2-react-layouts/src/splitter/panesettings-directive.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../node_modules/usehooks-ts/dist/esm/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js","../node_modules/usehooks-ts/dist/esm/useMediaQuery/useMediaQuery.js","../node_modules/usehooks-ts/dist/esm/useWindowSize/useWindowSize.js","../node_modules/@ioip/core/lib/hooks/useType.js","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/plugins/es5.ts","../node_modules/immer/src/immer.ts","../node_modules/immer/src/utils/env.ts","../node_modules/redux/es/redux.js","../node_modules/redux-thunk/es/index.js","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/isPlainObject.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/index.ts","../node_modules/@ioip/core/lib/slices/confirmationSlice.js","../node_modules/@ioip/core/lib/hooks/usePrompt.js","../node_modules/@ioip/core/lib/slices/languageSlice.js","../node_modules/@ioip/core/lib/languages/esCO.js","../node_modules/@ioip/core/lib/slices/layoutSlice.js","../node_modules/@ioip/core/lib/slices/pluginEditorSlice.js","../node_modules/@ioip/core/lib/layout/ACBreadcrumb.js","../node_modules/@ioip/core/lib/hooks/useLayout.js","../node_modules/@ioip/core/lib/types/TreeNode.js","../node_modules/@ioip/core/lib/layout/LayoutCommandBar.js","../node_modules/@azure/msal-common/src/utils/Constants.ts","../node_modules/@azure/msal-browser/src/utils/BrowserConstants.ts","../node_modules/@azure/msal-common/src/error/AuthError.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/error/ClientAuthError.ts","../node_modules/@azure/msal-common/src/logger/Logger.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/hooks/useIsAuthenticated.ts","../node_modules/@azure/msal-react/src/components/withMsal.tsx","../node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts","../node_modules/@azure/msal-browser/src/cache/CryptoKeyStore.ts","../node_modules/@azure/msal-common/src/error/ServerError.ts","../node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts","../node_modules/@azure/msal-common/src/error/JoseHeaderError.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/ModernBrowserCrypto.ts","../node_modules/@azure/msal-browser/src/crypto/MsrBrowserCrypto.ts","../node_modules/@azure/msal-browser/src/crypto/MsBrowserCrypto.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-browser/src/crypto/CryptoOps.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/cache/entities/CredentialEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.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/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/account/AuthToken.ts","../node_modules/@azure/msal-common/src/packageMetadata.ts","../node_modules/@azure/msal-common/src/cache/CacheManager.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/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/request/RequestValidator.ts","../node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts","../node_modules/@azure/msal-common/src/client/BaseClient.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/CloudInstanceDiscoveryErrorResponse.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","../node_modules/@ioip/core/lib/security/AuthenticationManager.js","../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","../node_modules/@ioip/core/lib/providers/HttpClient.js","../node_modules/@ioip/core/lib/providers/RootApp.js","../node_modules/@ioip/core/lib/layout/Header.js","../node_modules/@ioip/core/lib/layout/ACDataTablePage.js","../node_modules/@ioip/core/lib/types/IDataTableRequest.js","../node_modules/@ioip/core/lib/components/ModernDataTableItem.js","../node_modules/@ioip/core/lib/components/StandarDataTablePage.js","../node_modules/@ioip/core/lib/components/Title.js","../node_modules/@ioip/core/lib/components/Wizard.js","../node_modules/@ioip/core/lib/components/XDataTable.js","../node_modules/@ioip/core/lib/components/XCheckbox.js","../node_modules/@ioip/core/lib/utilities/NumberExtensions.js","../node_modules/@ioip/core/lib/components/XCurrencyField.js","../node_modules/@ioip/core/lib/datetime/TimeOnly.js","../node_modules/@ioip/core/lib/components/XTimePicker.js","../node_modules/@ioip/core/lib/components/XDateTimePicker.js","../node_modules/@ioip/core/lib/components/XNumberField.js","../node_modules/@ioip/core/lib/components/XSpreadsheet.js","../node_modules/@ioip/core/lib/datetime/DateTime.js","../node_modules/@ioip/core/lib/hooks/useForceState.js","../node_modules/@ioip/core/lib/components/XTreeView.js","../node_modules/@ioip/archivox/lib/components/CitySelector.js","../node_modules/@ioip/archivox/lib/components/CountrySelector.js","../node_modules/@ioip/core/lib/datetime/DateOnly.js","../node_modules/@ioip/core/lib/svg-icons/Dashboard.js","../node_modules/@ioip/archivox/lib/types/City.js","../node_modules/@ioip/archivox/lib/components/DepartmentSelector.js","../node_modules/@ioip/archivox/lib/components/RoleSelector.js","../node_modules/@ioip/archivox/lib/components/UserSelector.js","../node_modules/@ioip/archivox/lib/types/Country.js","../node_modules/@ioip/archivox/lib/types/Department.js","../node_modules/@ioip/archivox/lib/types/Profile.js","../node_modules/@ioip/archivox/lib/types/Role.js","../node_modules/@ioip/archivox/lib/types/Section.js","../node_modules/@ioip/archivox/lib/types/Serie.js","../node_modules/@ioip/archivox/lib/types/Subserie.js","../node_modules/@ioip/archivox/lib/types/TrdVersion.js","../node_modules/@ioip/archivox/lib/types/User.js","../node_modules/@ioip/archivox/lib/providers/ArchivoxProvider.js","../node_modules/@ioip/archivox/lib/components/CaseFileFinder/ICaseFileFinderRequest.js","../node_modules/@ioip/procesox/lib/studio-types/EntityViewColumnFormat.js","../node_modules/@ioip/procesox/lib/studio-types/ActionType.js","../node_modules/@ioip/archivox/lib/components/CaseFileFinder/CaseFileFinder.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@ioip/procesox/lib/studio-types/IAction.js","../node_modules/@ioip/procesox/lib/studio-types/PermissionAssignmentType.js","../node_modules/@ioip/procesox/lib/studio-types/PermissionLevel.js","../node_modules/@ioip/procesox/lib/types/DataType.js","../node_modules/@ioip/procesox/lib/types/ControlType.js","../node_modules/@ioip/procesox/lib/types/EntityType.js","../node_modules/@ioip/procesox/lib/types/LogLevel.js","../node_modules/@ioip/procesox/lib/types/NativeType.js","../node_modules/@ioip/procesox/lib/types/INativeType.js","../node_modules/@ioip/procesox/lib/types/Logger.js","../node_modules/@ioip/procesox/lib/types/Process.js","../node_modules/@ioip/procesox/lib/types/Symbols.js","../node_modules/@ioip/procesox/lib/studio-types/IIncludeDocumentAction.js","../node_modules/@ioip/procesox/lib/forms/types/CField.js","../node_modules/@ioip/procesox/lib/forms/Control/CControl.js","../node_modules/@ioip/procesox/lib/forms/ComboBox/CComboBox.js","../node_modules/@ioip/procesox/lib/forms/types/JSRuleErrorType.js","../node_modules/@ioip/procesox/lib/forms/types/CRuleError.js","../node_modules/@ioip/procesox/lib/core/toCurrency.js","../node_modules/@ioip/procesox/lib/data/types/Attribute.js","../node_modules/@ioip/procesox/lib/data/types/EntityViewColumn.js","../node_modules/@ioip/procesox/lib/data/types/EntityView.js","../node_modules/@ioip/procesox/lib/data/types/Entity.js","../node_modules/@ioip/procesox/lib/data/types/AttributeExensions.js","../node_modules/@ioip/procesox/lib/exceptions/AttributeNotFoundException.js","../node_modules/@ioip/procesox/lib/forms/CalculatedField/CalculatedField.js","../node_modules/@ioip/procesox/lib/exceptions/FormNotFoundException.js","../node_modules/@ioip/procesox/lib/forms/Card/CCard.js","../node_modules/@ioip/procesox/lib/forms/CaseFileSelector/CCaseFileSelector.js","../node_modules/@ioip/procesox/lib/forms/CheckBox/CCheckBox.js","../node_modules/@ioip/procesox/lib/forms/CitySelector/CCitySelector.js","../node_modules/@babel/runtime/helpers/esm/set.js","../node_modules/@ioip/procesox/lib/forms/ColorSelector/CColorSelector.js","../node_modules/@ioip/procesox/lib/forms/CountrySelector/CCountrySelector.js","../node_modules/@ioip/procesox/lib/forms/NumberField/CNumberField.js","../node_modules/@ioip/procesox/lib/forms/CurrencyField/CCurrencyField.js","../node_modules/@ioip/procesox/lib/security/AuthenticationType.js","../node_modules/@ioip/procesox/lib/datasources/DataSourceType.js","../node_modules/@ioip/procesox/lib/forms/DatePicker/CDatePicker.js","../node_modules/@ioip/procesox/lib/exceptions/ArgumentTypeException.js","../node_modules/@ioip/procesox/lib/core/comparison.js","../node_modules/@ioip/procesox/lib/forms/DataTable/types/DataTableRow.js","../node_modules/@ioip/procesox/lib/forms/DataTable/components/XDataTableColumn.js","../node_modules/@ioip/procesox/lib/forms/DataTable/types/CDataTableColumn.js","../node_modules/@ioip/procesox/lib/forms/types/ItemEditorLayout.js","../node_modules/@ioip/procesox/lib/forms/List/CListControl.js","../node_modules/@ioip/procesox/lib/forms/types/CommandBarItemVisibilityMode.js","../node_modules/@ioip/procesox/lib/forms/types/CCommandBarItem.js","../node_modules/@ioip/procesox/lib/forms/types/CDataSource.js","../node_modules/@ioip/procesox/lib/forms/types/CommandBarAction.js","../node_modules/@ioip/procesox/lib/forms/DataTable/types/DataTableRowCollection.js","../node_modules/@ioip/procesox/lib/forms/DataTable/types/CDataTable.js","../node_modules/@ioip/procesox/lib/forms/DateTimePicker/CDateTimePicker.js","../node_modules/@ioip/procesox/lib/forms/DepartmentSelector/CDepartmentSelector.js","../node_modules/@ioip/core/lib/file-manager/FileUploaderItem.js","../node_modules/@ioip/core/lib/file-manager/FileUploader.js","../node_modules/@ioip/procesox/lib/forms/FileManager/CFileManager.js","../node_modules/@ioip/procesox/lib/forms/Gantt/types/CGanttDataSource.js","../node_modules/@ioip/procesox/lib/forms/Gantt/types/GanttDiagramGridLineType.js","../node_modules/@ioip/procesox/lib/forms/Gantt/types/CGanttDiagram.js","../node_modules/@ioip/procesox/lib/forms/Image/CImage.js","../node_modules/@ioip/procesox/lib/forms/Label/CLabel.js","../node_modules/@ioip/procesox/lib/forms/Row/CRow.js","../node_modules/@ioip/procesox/lib/forms/TextField/CTextField.js","../node_modules/@ioip/procesox/lib/forms/Subtitle/CSubtitle.js","../node_modules/@ioip/procesox/lib/forms/TimePicker/CTimePicker.js","../node_modules/@ioip/procesox/lib/forms/types/FormLayout.js","../node_modules/@ioip/procesox/lib/forms/Title/CTitle.js","../node_modules/@ioip/procesox/lib/forms/UserSelector/CUserSelector.js","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCard.types.ts","../node_modules/@ioip/procesox/lib/forms/CalculatedField/XCalculatedField.js","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCard.base.tsx","../node_modules/@ioip/procesox/lib/forms/types/ComponentField.js","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCardPreview.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCardActivity.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCardTitle.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCardLocation.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCard.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCard.ts","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCardPreview.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCardPreview.ts","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCardTitle.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/DocumentCard/DocumentCardTitle.ts","../node_modules/@ioip/procesox/lib/forms/Card/CardComponent.js","../node_modules/@ioip/procesox/lib/forms/CheckBox/UXCheckBox.js","../node_modules/@ioip/procesox/lib/forms/CitySelector/CitySelectorComponent.js","../node_modules/@ioip/procesox/lib/forms/ComboBox/ComboBoxComponent.js","../node_modules/@ioip/procesox/lib/forms/CountrySelector/CountrySelectorComponent.js","../node_modules/@ioip/procesox/lib/forms/CurrencyField/CurrencyFieldComponent.js","../node_modules/@ioip/procesox/lib/forms/components/ChildFormComponent.js","../node_modules/@ioip/procesox/lib/forms/types/IFieldSchema.js","../node_modules/@ioip/procesox/lib/forms/types/DataTableColumn.js","../node_modules/@ioip/procesox/lib/forms/types/Field.js","../node_modules/@ioip/procesox/lib/forms/types/DataTableLegacy.js","../node_modules/@ioip/procesox/lib/forms/types/FormLegacy.js","../node_modules/@ioip/procesox/lib/projects/CProject.js","../node_modules/@ioip/procesox/lib/slices/formEditorSlice.js","../node_modules/@ioip/procesox/lib/flow/open-panel/DialogRef.js","../node_modules/@ioip/procesox/lib/forms/DataTable/components/XDevelopDataTable.js","../node_modules/@ioip/procesox/lib/forms/DataTable/components/DataTableComponent.js","../node_modules/@ioip/procesox/lib/forms/DatePicker/DatePickerComponent.js","../node_modules/@ioip/procesox/lib/forms/DateTimePicker/DateTimePickerComponent.js","../node_modules/@ioip/procesox/lib/forms/DepartmentSelector/XDepartmentSelector.js","../node_modules/@ioip/procesox/lib/forms/CaseFileSelector/CaseFileSelectorComponent.js","../node_modules/@ioip/core/lib/file-manager/FileManagerComponent.js","../node_modules/@ioip/procesox/lib/flow/open-panel/PanelRef.js","../node_modules/@ioip/procesox/lib/forms/components/UIDialogForm.js","../node_modules/@ioip/procesox/lib/flow/@core/FlowConnection.js","../node_modules/@ioip/procesox/lib/flow/@core/Handle.js","../node_modules/@ioip/procesox/lib/flow/@core/FlowNodeBase.js","../node_modules/@ioip/procesox/lib/flow/boolean/BooleanNode.js","../node_modules/@ioip/procesox/lib/flow/@core/IExecuteInputNodeOptions.js","../node_modules/@ioip/procesox/lib/flow/form-base/FormBaseNode.js","../node_modules/@ioip/procesox/lib/flow/current-form/CurrentFormNode.js","../node_modules/@ioip/procesox/lib/flow/@core/FlowNodeConstants.js","../node_modules/@ioip/procesox/lib/flow/form-selector/FormSelectorNode.js","../node_modules/@ioip/procesox/lib/flow/combobox/ComboBoxNode.js","../node_modules/@ioip/procesox/lib/flow/datatable/DataTableNode.js","../node_modules/@ioip/procesox/lib/core/types/ComparisonOperator.js","../node_modules/@ioip/procesox/lib/flow/@engine/LogicEngineNodeType.js","../node_modules/@ioip/procesox/lib/flow/@engine/LogicEngineNodeTypes.js","../node_modules/@ioip/procesox/lib/flow/datatable-field-selector/DataTableFieldSelectorNode.js","../node_modules/@ioip/procesox/lib/flow/number/NumberNode.js","../node_modules/@ioip/procesox/lib/flow/string/StringNode.js","../node_modules/@ioip/procesox/lib/flow/filter-items/FilterItemsNode.js","../node_modules/@ioip/procesox/lib/flow/count/CountItemsNode.js","../node_modules/@ioip/procesox/lib/flow/field-selector/FieldSelectorNode.js","../node_modules/@ioip/procesox/lib/flow/@conectors/PXConnector.js","../node_modules/@ioip/procesox/lib/flow/@conectors/input-file/InputFileConnector.js","../node_modules/@ioip/procesox/lib/flow/input-file/InputFileNode.js","../node_modules/@ioip/procesox/lib/flow/@conectors/input-file/ParameterConnector.js","../node_modules/@ioip/procesox/lib/flow/read-parameter/ReadParameterNode.js","../node_modules/@ioip/procesox/lib/flow/scope/ScopeNode.js","../node_modules/@ioip/procesox/lib/flow/equals/EqualsNode.js","../node_modules/@ioip/procesox/lib/flow/comparison/ComparisonNode.js","../node_modules/@ioip/procesox/lib/flow/greather-than/GreaterThanNode.js","../node_modules/@ioip/procesox/lib/flow/less-than/LessThanNode.js","../node_modules/@ioip/procesox/lib/flow/not-equals/NotEqualsNode.js","../node_modules/@ioip/procesox/lib/flow/not/NotNode.js","../node_modules/@ioip/procesox/lib/flow/or/OrNode.js","../node_modules/@ioip/procesox/lib/flow/button/ButtonRef.js","../node_modules/@ioip/procesox/lib/flow/and/AndNode.js","../node_modules/@ioip/procesox/lib/flow/button/ButtonNode.js","../node_modules/@ioip/procesox/lib/flow/load-form/LoadFormNode.js","../node_modules/@ioip/procesox/lib/flow/open-dialog/OpenDialogNode.js","../node_modules/@ioip/procesox/lib/flow/close-dialog/CloseDialogNode.js","../node_modules/@ioip/procesox/lib/flow/panel-type/PanelTypeNode.js","../node_modules/@ioip/procesox/lib/flow/open-panel/OpenPanelNode.js","../node_modules/@ioip/procesox/lib/flow/close-panel/ClosePanelNode.js","../node_modules/@ioip/procesox/lib/flow/fetch/FetchNode.js","../node_modules/@ioip/procesox/lib/flow/code-rule/CodeRuleNode.js","../node_modules/@ioip/procesox/lib/flow/code-action/CodeActionNode.js","../node_modules/@ioip/procesox/lib/flow/concat-string/ConcatStringNode.js","../node_modules/@ioip/procesox/lib/flow/conditional-action/ConditionalActionNode.js","../node_modules/@ioip/procesox/lib/flow/conditional-rule/ConditionalRuleRule.js","../node_modules/@ioip/procesox/lib/flow/console-log/ConsoleLogNode.js","../node_modules/@ioip/procesox/lib/flow/create-case-file-document/CreateCaseFileDocument.js","../node_modules/@ioip/procesox/lib/flow/@conectors/current-user/CurrentUserConnector.js","../node_modules/@ioip/procesox/lib/flow/current-user/CurrentUserNode.js","../node_modules/@ioip/procesox/lib/flow/datatable-request-filter/DataTableRequestFilterNode.js","../node_modules/@ioip/procesox/lib/flow/datatable-request/DataTableRequestNode.js","../node_modules/@ioip/procesox/lib/flow/datatable-response/DataTableResponseNode.js","../node_modules/@ioip/procesox/lib/flow/datetime-node/DateTimeNode.js","../node_modules/@ioip/procesox/lib/flow/math-operation/MathOperationBaseRule.js","../node_modules/@ioip/procesox/lib/flow/division/DivisionRuleNode.js","../node_modules/@ioip/procesox/lib/flow/datasource/DataSourceNode.js","../node_modules/@ioip/procesox/lib/flow/field-datasource/FieldDataSourceNode.js","../node_modules/@ioip/procesox/lib/flow/form-datasource/FormDataSourceNode.js","../node_modules/@ioip/procesox/lib/flow/init/InitNode.js","../node_modules/@ioip/procesox/lib/flow/load-entity-item/LoadEntityItemNode.js","../node_modules/@ioip/procesox/lib/flow/multiplication/MultiplicationRuleNode.js","../node_modules/@ioip/procesox/lib/flow/nativage-to-absolute-url/NavigateToNode.js","../node_modules/@ioip/procesox/lib/flow/percentage/PercentageNode.js","../node_modules/@ioip/procesox/lib/flow/query-string/QueryStringNode.js","../node_modules/@ioip/procesox/lib/flow/refresh-datatable/RefreshDataTableNode.js","../node_modules/@ioip/procesox/lib/flow/result/ResultNode.js","../node_modules/@ioip/procesox/lib/flow/save-form/SaveFormNode.js","../node_modules/@ioip/procesox/lib/flow/set-current-form-values/SetCurrentFormValuesNode.js","../node_modules/@ioip/procesox/lib/flow/set-datatable-form-values/SetDataTableFormValuesNode.js","../node_modules/@ioip/procesox/lib/flow/set-field-value/SetFieldValueNode.js","../node_modules/@ioip/procesox/lib/flow/set-form-values/SetFormValuesNode.js","../node_modules/@ioip/procesox/lib/flow/show-message/ShowMessageNode.js","../node_modules/@ioip/procesox/lib/flow/show-sucess-toast/ShowSuccessToastNode.js","../node_modules/@ioip/procesox/lib/flow/sql-query-action/SqlQueryActionNode.js","../node_modules/@ioip/procesox/lib/flow/sql-query-rule/SqlQueryRuleNode.js","../node_modules/@ioip/procesox/lib/flow/sum/SumNode.js","../node_modules/@ioip/procesox/lib/flow/ui-label/LabelNode.js","../node_modules/@ioip/procesox/lib/flow/update-entity-item/UpdateEntityItemNode.js","../node_modules/@ioip/procesox/lib/flow/update-form/UpdateFormNode.js","../node_modules/@ioip/procesox/lib/flow/update-input-file/UpdateInputFileNode.js","../node_modules/@ioip/procesox/lib/flow/@engine/LogicEngineSettings.js","../node_modules/@ioip/procesox/lib/flow/@engine/LogicEngine.js","../node_modules/@ioip/procesox/lib/forms/types/CDataSourceCollection.js","../node_modules/@ioip/procesox/lib/forms/Page/CPage.js","../node_modules/@ioip/procesox/lib/forms/ReactComponent/CReactComponent.js","../node_modules/@ioip/procesox/lib/forms/types/ProcesoxEngine.js","../node_modules/@ioip/procesox/lib/providers/ProcesoxProvider.js","../node_modules/@ioip/procesox/lib/forms/FileManager/XFileManager.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-notifications/src/skeleton/skeleton.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/logger.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/base/utils.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/base/date-processor.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/base/task-processor.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/base/css-constants.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/chart-scroll.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/virtual-content-render.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/base/gantt-chart.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/timeline.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/column.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/loading-indicator.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/filter-settings.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/textwrap-settings.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/logger.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/base/constant.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/clipboard.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/utils.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/selection.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/enum.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/print.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/search-settings.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/selection-settings.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/renderer/render.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/base/data.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/page-settings.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/summary.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/edit-settings.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/sort-settings.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/crud-actions.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/infinite-scroll-settings.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/base/treegrid.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/column.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/base/tree-grid.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/sort-settings.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/loading-indicator.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/day-working-time.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/holiday.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/event-marker.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/task-fields.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/timeline-settings.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/edit-settings.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/selection-settings.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/label-settings.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/tooltip-settings.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/filter-settings.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/splitter-settings.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/resource-fields.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/models/search-settings.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/chart-rows.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/dependency.js","../node_modules/@syncfusion/ej2-svg-base/src/svg-render/svg-renderer.js","../node_modules/@syncfusion/ej2-svg-base/src/svg-render/canvas-renderer.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/helper.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/connector-line.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/interface.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/base/splitter.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/tooltip.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/keyboard.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/base/gantt.js","../node_modules/@syncfusion/ej2-react-gantt/src/gantt/gantt.component.js","../node_modules/@syncfusion/ej2-react-gantt/src/gantt/columns-directive.js","../node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","../node_modules/@syncfusion/ej2-react-gantt/src/gantt/eventmarkers-directive.js","../node_modules/@syncfusion/ej2-react-gantt/src/gantt/holidays-directive.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/inline-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/batch-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/dialog-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-renderer.js","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-cell-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/dropdown-edit-cell.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/numeric-edit-cell.js","../node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/default-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/normal-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/inline-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/batch-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/dialog-edit.js","../node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","../node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","../node_modules/@syncfusion/ej2-calendars/src/maskbase/masked-date-time.js","../node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/datepicker-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/template-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/edit.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/batch-edit.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/edit.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/cell-edit.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/edit-tooltip.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/taskbar-edit.js","../node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","../node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-operator.js","../node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","../node_modules/@syncfusion/ej2-dropdowns/src/auto-complete/auto-complete.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/string-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/number-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/date-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/checkbox-filter.js","../node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","../node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/excel-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","../node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","../node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/group.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/footer-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/summary-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/aggregate.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/column-chooser.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/resize.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/column-menu.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/utils.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-main-object-collection.js","../node_modules/@syncfusion/ej2-file-utils/src/encoding.js","../node_modules/@syncfusion/ej2-file-utils/src/save.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-string.js","../node_modules/@syncfusion/ej2-file-utils/src/stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-name.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-operators.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-dictionary-properties.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-number.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-array.js","../node_modules/@syncfusion/ej2-compression/src/compression-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-stream.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/cross-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-reference.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-boolean.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-viewer-preferences.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-catalog.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-cross-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/drawing/pdf-drawing.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-size.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-margins.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-settings.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-color.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-solid-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-pen.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-string-format.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-tokenizer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transformation-matrix.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/constants.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/object-object-pair/dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transparency.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/graphics-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/byte-array.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-table-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-record.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-head-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-metrics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-horizontal-header-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-OS2-Table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-post-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-long-hor-metric.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-loca-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-apple-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-header.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/big-endian-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-reader.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font-metrics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/unicode-true-type-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-text-shape.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-bidirectional.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl-renderer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-gradient-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/image-decoder.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/pdf-template.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/tables/light-tables/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/unit-convertor.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-image.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-bitmap.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-resources.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-tiling-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-graphics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/page-added-event-arguments.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-template.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-templates.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-document-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-cache-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font-metrics-factory.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/pdf-borders.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/style.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/element-layouter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/layout-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/text-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/text-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/link-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/action-link-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/action.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/uri-action.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/uri-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/pdf-text-web-link.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-cell.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-column.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-row.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/layout/grid-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-template-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-numbers-convertor.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-template-value-pair.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/multiple-value-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-page-number-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/composite-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/single-value-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/page-count-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-true-type-font.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/pdf-export.js","../node_modules/@syncfusion/ej2-excel-export/src/worksheets.js","../node_modules/@syncfusion/ej2-excel-export/src/worksheet.js","../node_modules/@syncfusion/ej2-excel-export/src/cell-style.js","../node_modules/@syncfusion/ej2-excel-export/src/column.js","../node_modules/@syncfusion/ej2-excel-export/src/row.js","../node_modules/@syncfusion/ej2-excel-export/src/image.js","../node_modules/@syncfusion/ej2-excel-export/src/cell.js","../node_modules/@syncfusion/ej2-compression/src/utils.js","../node_modules/@syncfusion/ej2-compression/src/decompressor-huffman-tree.js","../node_modules/@syncfusion/ej2-compression/src/checksum-calculator.js","../node_modules/@syncfusion/ej2-compression/src/compression-reader.js","../node_modules/@syncfusion/ej2-compression/src/zip-archive.js","../node_modules/@syncfusion/ej2-excel-export/src/value-formatter.js","../node_modules/@syncfusion/ej2-excel-export/src/csv-helper.js","../node_modules/@syncfusion/ej2-excel-export/src/blob-helper.js","../node_modules/@syncfusion/ej2-excel-export/src/auto-filters.js","../node_modules/@syncfusion/ej2-excel-export/src/workbook.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/context-menu.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/reorder.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/detail-row.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/row-reorder.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/foreign-key.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/constant.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/classes.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/render.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/constant.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/keyboard.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/view-source.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/interface.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/services/service-locator.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/services/renderer-factory.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/execute-command-callback.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/ajax-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/contextMenu-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/details-view-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/navigation-pane-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/search-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/toolbar-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/upload-settings.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/items.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/toolbar-settings.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/iframe-settings.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/inline-mode.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/default-locale.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-attributes.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/full-screen.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/enter-key.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/util.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/dialog-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/rich-text-editor.js","../node_modules/@syncfusion/ej2-inputs/src/uploader/uploader.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/util.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/config.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/image-module.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/table-module.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/base-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/emoji-picker.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/base/constant.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/base/classes.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/common/utility.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/common/operations.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/pop-up/dialog.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/layout/large-icons-view.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-filemanager/src/file-manager/actions/breadcrumb-bar.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/pop-up/context-menu.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/default-locale.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/base/file-manager.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/intersection-observer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/virtual-row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/virtual-content-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/virtual-scroll.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/layout/details-view.js","../node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/layout/navigation-pane.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/actions/toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/file-manager.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/format-painter.js","../node_modules/@syncfusion/ej2-splitbuttons/src/split-button/split-button.js","../node_modules/@syncfusion/ej2-inputs/src/slider/slider.js","../node_modules/@syncfusion/ej2-inputs/src/color-picker/color-picker.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/isformatted.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/base/constant.js","../node_modules/@syncfusion/ej2-richtexteditor/src/selection/selection.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/toolbar-status.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/toolbar-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/dropdown-buttons.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/toolbar-action.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/formatter/formatter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/markdown-parser/base/constant.js","../node_modules/@syncfusion/ej2-richtexteditor/src/markdown-parser/plugin/lists.js","../node_modules/@syncfusion/ej2-richtexteditor/src/markdown-parser/plugin/formats.js","../node_modules/@syncfusion/ej2-richtexteditor/src/markdown-parser/plugin/md-selection-formats.js","../node_modules/@syncfusion/ej2-richtexteditor/src/markdown-parser/plugin/markdown-selection.js","../node_modules/@syncfusion/ej2-richtexteditor/src/markdown-parser/plugin/undo.js","../node_modules/@syncfusion/ej2-richtexteditor/src/markdown-parser/plugin/link.js","../node_modules/@syncfusion/ej2-richtexteditor/src/markdown-parser/plugin/table.js","../node_modules/@syncfusion/ej2-richtexteditor/src/markdown-parser/plugin/clearformat.js","../node_modules/@syncfusion/ej2-richtexteditor/src/markdown-parser/plugin/insert-text.js","../node_modules/@syncfusion/ej2-richtexteditor/src/markdown-parser/base/markdown-parser.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/formatter/markdown-formatter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/markdown-toolbar-status.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/markdown-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/markdown-editor.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/link-module.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/dom-node.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/lists.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/insert-methods.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/nodecutter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/formats.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/inserthtml.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/link.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/alignments.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/indents.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/base/classes.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/image.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/audio.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/video.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/table.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/selection-commands.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/selection-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/inserthtml-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/clearformat.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/clearformat-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/undo.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/ms-word-clean-up.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/insert-text.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/format-painter-actions.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/emoji-picker-action.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/base/editor-manager.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/formatter/html-formatter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-toolbar-status.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/iframe-content-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/color-picker.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/xhtml-validation.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-editor.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/base-quick-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/popup-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/quick-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/count.js","../node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/base/mask-base.js","../node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/maskedtextbox/maskedtextbox.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/renderer/virtual-row-model-generator.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/renderer/virtual-tree-content-render.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/virtual-scroll.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/filter.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/sort.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/page.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/summary.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/resize.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/reorder.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/rowdragdrop.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/toolbar.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/dialog-edit.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/float-label.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/multi-select.js","../node_modules/@ioip/procesox/lib/forms/types/CSSOverFlow.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/checkbox-selection.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/connector-line-edit.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/edit.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/selection.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/toolbar.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/base/constant.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/nonworking-day.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/renderer/event-marker.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/day-markers.js","../node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/column-menu.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/column-menu.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/filter.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/sort.js","../node_modules/@syncfusion/ej2-gantt/src/gantt/actions/column-resize.js","../node_modules/@ioip/procesox/lib/forms/Gantt/GanttDiagram.js","../node_modules/@ioip/procesox/lib/forms/Gantt/UXGanttDiagram.js","../node_modules/@ioip/procesox/lib/forms/HorizontalLine/HorizontalLineComponent.js","../node_modules/@ioip/procesox/lib/forms/Image/ImageComponent.js","../node_modules/@ioip/procesox/lib/forms/types/TextAlign.js","../node_modules/@ioip/procesox/lib/forms/Label/XLabel.js","../node_modules/@ioip/procesox/lib/forms/NumberField/NumberFieldComponent.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/@ioip/procesox/lib/portal/forms/components/ReactRenderer.js","../node_modules/@ioip/procesox/lib/forms/ReactComponent/XReactComponent.js","../node_modules/@ioip/procesox/lib/forms/Row/RowComponent.js","../node_modules/@ioip/procesox/lib/forms/Subtitle/XSubtitle.js","../node_modules/@ioip/procesox/lib/forms/TextField/TextFieldComponent.js","../node_modules/@ioip/procesox/lib/forms/TimePicker/TimePickerComponent.js","../node_modules/@ioip/procesox/lib/forms/Title/XTitle.js","../node_modules/@ioip/procesox/lib/forms/UserSelector/UserSelectorComponent.js","../node_modules/@ioip/procesox/lib/forms/components/SearchableComboBoxComponent.js","../node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js","../node_modules/state-local/lib/es/state-local.js","../node_modules/@monaco-editor/loader/lib/es/config/index.js","../node_modules/@monaco-editor/loader/lib/es/utils/curry.js","../node_modules/@monaco-editor/loader/lib/es/utils/isObject.js","../node_modules/@monaco-editor/loader/lib/es/validators/index.js","../node_modules/@monaco-editor/loader/lib/es/utils/compose.js","../node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js","../node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js","../node_modules/@monaco-editor/loader/lib/es/loader/index.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/_virtual/_rollupPluginBabelHelpers.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/Loading/Loading.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/MonacoContainer/styles.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/MonacoContainer/MonacoContainer.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/MonacoContainer/index.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/hooks/useMount/index.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/hooks/useUpdate/index.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/utils/index.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/DiffEditor/DiffEditor.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/hooks/usePrevious/index.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/Editor/Editor.js","../node_modules/@ioip/procesox/node_modules/@monaco-editor/react/lib/es/Editor/index.js","../node_modules/@ioip/procesox/lib/portal/code-editors/CodeEditor.js","../node_modules/@ioip/procesox/lib/forms/components/UnknownComponent.js","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/consts.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/hsv2rgb.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/clamp.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/rgb2hex.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/getFullColorString.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/hsv2hex.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/_rgbaOrHexString.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/updateSV.ts","../node_modules/@fluentui/react/lib/components/ColorPicker/src/components/ColorPicker/ColorRectangle/ColorRectangle.base.tsx","../node_modules/@fluentui/react/lib/components/ColorPicker/src/components/ColorPicker/ColorRectangle/ColorRectangle.styles.ts","../node_modules/@fluentui/react/lib/components/ColorPicker/src/components/ColorPicker/ColorRectangle/ColorRectangle.tsx","../node_modules/@fluentui/react/lib/components/ColorPicker/src/components/ColorPicker/ColorSlider/ColorSlider.base.tsx","../node_modules/@fluentui/react/lib/components/ColorPicker/src/components/ColorPicker/ColorSlider/ColorSlider.styles.ts","../node_modules/@fluentui/react/lib/components/ColorPicker/src/components/ColorPicker/ColorSlider/ColorSlider.tsx","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/cssColor.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/hsl2rgb.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/hsl2hsv.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/getColorFromRGBA.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/rgb2hsv.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/getColorFromString.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/updateA.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/updateT.ts","../node_modules/@fluentui/react/lib/components/src/components/ColorPicker/ColorPicker.base.tsx","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/updateH.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/correctHex.ts","../node_modules/@fluentui/react/lib/utilities/src/utilities/color/correctRGB.ts","../node_modules/@fluentui/react/lib/components/src/components/ColorPicker/ColorPicker.styles.ts","../node_modules/@ioip/procesox/lib/forms/Form/CForm.js","../node_modules/@fluentui/react/lib/components/src/components/ColorPicker/ColorPicker.tsx","../node_modules/@ioip/procesox/lib/forms/ColorSelector/ColorSelectorComponent.js","../node_modules/@ioip/procesox/lib/forms/ComponentSource/ComponentSource.js","../node_modules/@ioip/procesox/lib/forms/components/UXField.js","../node_modules/@ioip/procesox/lib/forms/Form/XForm.js","../node_modules/@ioip/procesox/lib/studio-components/EntitySelectorV2.js","../node_modules/@ioip/tramitex/lib/apis/ITramitexApi.js","../node_modules/@ioip/procesox/lib/studio-components/XPermission.js","../node_modules/@ioip/procesox/lib/studio-components/XPermissionCollection.js","../node_modules/@ioip/tramitex/lib/types/AgeRange.js","../node_modules/@ioip/tramitex/lib/types/CompanyType.js","../node_modules/@ioip/tramitex/lib/types/ContactType.js","../node_modules/@ioip/tramitex/lib/types/Disability.js","../node_modules/@ioip/tramitex/lib/types/EducationLevel.js","../node_modules/@ioip/tramitex/lib/types/EthnicGroup.js","../node_modules/@ioip/tramitex/lib/types/Gender.js","../node_modules/@ioip/tramitex/lib/types/IdentificationType.js","../node_modules/@ioip/tramitex/lib/types/Procedure.js","../node_modules/@ioip/tramitex/lib/types/Profession.js","../node_modules/@ioip/tramitex/lib/types/PreferentialTreatment.js","../node_modules/@ioip/tramitex/lib/types/OrientationSector.js","../node_modules/@ioip/tramitex/lib/types/Tramitex.js","../node_modules/@ioip/tramitex/lib/types/Task.js","../node_modules/@ioip/tramitex/lib/providers/TramitexProvider.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","classes/shared.ts","classes/app-context.ts","types/IContact.ts","components/HomeComponent/MainButton.tsx","components/HomeComponent/HomeComponent.tsx","ioip/sdk/base.tsx","services/services.ts","components/archivos-component/archivos.component.tsx","components/check-account-error/check-account-error.component.tsx","classes/radicado-entrada-extended.ts","components/check-anonymous-request/check-anonymous-request.component.tsx","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js","../node_modules/@fluentui/react/lib/components/src/components/ProgressIndicator/ProgressIndicator.base.tsx","../node_modules/ioip-base/lib/common/models/property-grid/data-type.js","../node_modules/ioip-base/lib/common/models/chart/chart-type.js","../node_modules/@fluentui/react/lib/components/src/components/ProgressIndicator/ProgressIndicator.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/ProgressIndicator/ProgressIndicator.tsx","../node_modules/ioip-base/lib/common/models/standar-columns.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/caldate/src/utils.js","../node_modules/caldate/src/CalDate.js","../node_modules/date-holidays-parser/src/utils.js","../node_modules/date-holidays-parser/src/internal/utils.js","../node_modules/date-holidays-parser/src/Data.js","../node_modules/date-holidays-parser/src/Parser.js","../node_modules/date-holidays-parser/src/Rule.js","../node_modules/date-holidays-parser/src/CalEvent.js","../node_modules/date-holidays-parser/src/PostRule.js","../node_modules/date-easter/src/index.js","../node_modules/date-holidays-parser/src/Easter.js","../node_modules/astronomia/src/base.js","../node_modules/astronomia/src/interpolation.js","../node_modules/astronomia/src/angle.js","../node_modules/astronomia/src/sexagesimal.js","../node_modules/astronomia/src/globe.js","../node_modules/astronomia/src/coord.js","../node_modules/astronomia/src/nutation.js","../node_modules/astronomia/src/elementequinox.js","../node_modules/astronomia/src/precess.js","../node_modules/astronomia/src/planetposition.js","../node_modules/astronomia/src/solar.js","../node_modules/astronomia/src/apparent.js","../node_modules/astronomia/src/apsis.js","../node_modules/astronomia/src/binary.js","../node_modules/astronomia/src/circle.js","../node_modules/astronomia/data/deltat.js","../node_modules/astronomia/src/deltat.js","../node_modules/astronomia/src/elliptic.js","../node_modules/astronomia/src/moonphase.js","../node_modules/astronomia/src/elp.js","../node_modules/astronomia/src/eqtime.js","../node_modules/astronomia/src/illum.js","../node_modules/astronomia/src/julian.js","../node_modules/astronomia/src/jm.js","../node_modules/astronomia/src/moonposition.js","../node_modules/astronomia/src/moon.js","../node_modules/astronomia/src/moonillum.js","../node_modules/astronomia/src/moonmaxdec.js","../node_modules/astronomia/src/parallax.js","../node_modules/astronomia/src/perihelion.js","../node_modules/astronomia/src/planetary.js","../node_modules/astronomia/src/pluto.js","../node_modules/astronomia/src/refraction.js","../node_modules/astronomia/src/rise.js","../node_modules/astronomia/src/saturnmoons.js","../node_modules/astronomia/src/solardisk.js","../node_modules/astronomia/src/solstice.js","../node_modules/astronomia/src/sunrise.js","../node_modules/astronomia/src/sundial.js","../node_modules/date-holidays-parser/src/Julian.js","../node_modules/date-holidays-parser/src/CalEventMap.js","../node_modules/date-holidays-parser/src/internal/hebrew-calendar.js","../node_modules/date-holidays-parser/src/Hebrew.js","../node_modules/date-holidays-parser/src/internal/hijri-calendar.js","../node_modules/date-holidays-parser/src/Hijri.js","../node_modules/date-holidays-parser/src/Jalaali.js","../node_modules/astronomia/data/vsop87Bearth.js","../node_modules/date-holidays-parser/src/vsop87Bearth.js","../node_modules/date-holidays-parser/src/Equinox.js","../node_modules/date-chinese/src/vsop87Bearth.js","../node_modules/date-chinese/src/Chinese.js","../node_modules/date-bengali-revised/src/convert.js","../node_modules/date-chinese/src/Korean.js","../node_modules/date-chinese/src/Vietnamese.js","../node_modules/date-holidays-parser/src/Chinese.js","../node_modules/date-chinese/src/Japanese.js","../node_modules/date-bengali-revised/src/index.js","../node_modules/date-holidays-parser/src/BengaliRevised.js","../node_modules/date-holidays-parser/src/CalEventFactory.js","../node_modules/date-holidays-parser/src/DateFn.js","../node_modules/date-holidays-parser/src/HolidayRule.js","../node_modules/date-holidays-parser/src/Holidays.js","../node_modules/date-holidays/src/data.js","../node_modules/date-holidays/src/Holidays.js","../node_modules/ioip-base/lib/common/helpers/string-helper.js","../node_modules/ioip-base/lib/common/helpers/datetime.js","../node_modules/ioip-base/lib/common/helpers/file.js","../node_modules/ioip-base/lib/common/helpers/guid.js","../node_modules/ioip-base/lib/common/helpers/icons.js","../node_modules/ioip-base/lib/common/helpers/paginate-data.js","../node_modules/ioip-base/lib/common/helpers/validations.js","../node_modules/@monaco-editor/react/src/MonacoContainer/styles.ts","../node_modules/@monaco-editor/react/src/Loading/styles.ts","../node_modules/@monaco-editor/react/src/Loading/Loading.tsx","../node_modules/@monaco-editor/react/src/Loading/index.ts","../node_modules/@monaco-editor/react/src/MonacoContainer/MonacoContainer.tsx","../node_modules/@monaco-editor/react/src/MonacoContainer/index.ts","../node_modules/@monaco-editor/react/src/hooks/useMount/index.ts","../node_modules/@monaco-editor/react/src/hooks/useUpdate/index.ts","../node_modules/@monaco-editor/react/src/utils/index.ts","../node_modules/@monaco-editor/react/src/DiffEditor/DiffEditor.tsx","../node_modules/@monaco-editor/react/src/DiffEditor/index.ts","../node_modules/@monaco-editor/react/src/hooks/usePrevious/index.ts","../node_modules/@monaco-editor/react/src/Editor/Editor.tsx","../node_modules/@monaco-editor/react/src/index.ts","../node_modules/@monaco-editor/react/src/Editor/index.ts","../node_modules/ioip-base/lib/common/components/CodeEditor.js","../node_modules/ioip-base/lib/common/components/ColorSelector.js","../node_modules/ioip-base/lib/common/components/Column.js","../node_modules/ioip-base/lib/common/components/Row.js","../node_modules/ioip-base/lib/common/components/ContextMenu.js","../node_modules/ioip-base/lib/common/components/Subtitle.js","../node_modules/ioip-base/lib/common/components/Paginator.js","../node_modules/ioip-base/lib/common/components/DataTable.js","../node_modules/ioip-base/lib/common/components/ExtendedDatePicker.js","../node_modules/ioip-base/lib/common/components/Grid.js","../node_modules/ioip-base/lib/common/components/FileUploadItem.js","../node_modules/@fluentui/react-hooks/src/useRefEffect.ts","../node_modules/@fluentui/react/lib/src/utilities/observeResize.ts","../node_modules/@fluentui/react/lib/src/utilities/useOverflow.ts","../node_modules/@fluentui/react/lib/components/src/components/Pivot/PivotItem.tsx","../node_modules/@fluentui/react/lib/components/src/components/Pivot/Pivot.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Pivot/Pivot.styles.ts","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/Suggestions/Suggestions.types.ts","../node_modules/@fluentui/react/lib/components/src/components/Pivot/Pivot.tsx","../node_modules/ioip-base/lib/common/components/Title.js","../node_modules/ioip-base/lib/common/components/GenericDataTablePaginator.js","../node_modules/ioip-base/lib/common/components/GenericDataTable.js","../node_modules/ioip-base/lib/common/components/StandarPanel.js","../node_modules/ioip-base/lib/common/components/JavaScriptEditorPanel.js","../node_modules/ioip-base/lib/common/components/JsonEditorPanel.js","../node_modules/@fluentui/react/lib/components/src/components/Announced/Announced.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Announced/Announced.ts","../node_modules/@fluentui/react/lib/components/src/components/Announced/Announced.styles.ts","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/Suggestions/Suggestions.scss.ts","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/Suggestions/SuggestionsItem.tsx","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/Suggestions/SuggestionsItem.styles.ts","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/Suggestions/Suggestions.tsx","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/Suggestions/Suggestions.styles.ts","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/Suggestions/SuggestionsController.ts","../node_modules/@fluentui/react/lib/components/src/components/pickers/BasePicker.types.ts","../node_modules/@fluentui/react/lib/components/src/components/pickers/BasePicker.scss.ts","../node_modules/@fluentui/react/lib/components/src/components/pickers/BasePicker.tsx","../node_modules/@fluentui/react/lib/components/src/components/pickers/BasePicker.styles.ts","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/TagPicker/TagItem.styles.ts","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/TagPicker/TagItem.tsx","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/TagPicker/TagItemSuggestion.styles.ts","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/TagPicker/TagItemSuggestion.tsx","../node_modules/@fluentui/react/lib/components/pickers/src/components/pickers/TagPicker/TagPicker.tsx","../node_modules/ioip-base/lib/common/components/KeyWordField.js","../node_modules/ioip-base/lib/common/components/Notifications.js","../node_modules/ioip-base/lib/archivox/components/RoleComboBox.js","../node_modules/ioip-base/lib/common/components/NumberField.js","../node_modules/@fluentui/react/lib/components/src/components/Toggle/Toggle.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/Toggle/Toggle.tsx","../node_modules/@fluentui/react/lib/components/src/components/Toggle/Toggle.styles.ts","../node_modules/ioip-base/lib/archivox/components/RoleManager.js","../node_modules/ioip-base/lib/common/components/SqlEditorPanel.js","../node_modules/ioip-base/lib/common/components/XmlEditorPanel.js","../node_modules/ioip-base/lib/common/components/PropertyConfigurator.js","../node_modules/@fluentui/react/lib/components/Dropdown/src/components/Dropdown/utilities/DropdownSizePosCache.ts","../node_modules/@fluentui/react/lib/components/src/components/Dropdown/Dropdown.base.tsx","../node_modules/@fluentui/utilities/src/safeRequestAnimationFrame.ts","../node_modules/@fluentui/react/lib/components/src/components/Dropdown/Dropdown.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Dropdown/Dropdown.tsx","../node_modules/ioip-base/lib/common/components/ScriptComponent.js","../node_modules/ioip-base/lib/common/components/StandarChart.js","../node_modules/ioip-base/lib/common/components/StandarDataTableItem.js","../node_modules/ioip-base/lib/common/components/TeachingLink.js","../node_modules/ioip-base/lib/common/components/StandarDataTable.js","../node_modules/ioip-base/lib/common/components/TeachingComments.js","../node_modules/ioip-base/lib/common/helpers/strings.js","../node_modules/ioip-base/lib/common/components/Wizard.js","classes/shared/tramite.enum.ts","ioip/sdk/components.tsx","ioip/sdk/new-component.tsx","classes/utils.ts","components/base.component.ts","../node_modules/file-selector/node_modules/tslib/tslib.es6.mjs","../node_modules/file-selector/src/file.ts","../node_modules/file-selector/src/file-selector.ts","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","components/file-selector/FileSelectorSede.tsx","components/file-selector/ReFileUploader.tsx","components/recaptcha/ReCaptchaComponent.tsx","components/crear-solicitud/create-pqr-mode.enum.ts","components/crear-solicitud/crear-solicitud.component.tsx","classes/shared/atencion-preferencias.enum.ts","classes/shared/utilities.ts","classes/contacto-extended.ts","components/create-contact-component/create-contact.state.ts","components/create-contact-component/tipo-identificacion-enum.ts","components/create-contact-component/tipo-persona-enum.ts","components/create-contact-component/create-contact-new-user.component.tsx","../node_modules/@fluentui/react/lib/components/ChoiceGroup/src/components/ChoiceGroup/ChoiceGroupOption/ChoiceGroupOption.base.tsx","../node_modules/@fluentui/react/lib/components/ChoiceGroup/src/components/ChoiceGroup/ChoiceGroupOption/ChoiceGroupOption.styles.ts","../node_modules/@fluentui/react/lib/components/ChoiceGroup/src/components/ChoiceGroup/ChoiceGroupOption/ChoiceGroupOption.tsx","../node_modules/@fluentui/react/lib/components/src/components/ChoiceGroup/ChoiceGroup.base.tsx","../node_modules/@fluentui/react/lib/components/src/components/ChoiceGroup/ChoiceGroup.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/ChoiceGroup/ChoiceGroup.tsx","components/popup/PopupPanel.tsx","components/create-contact-component/create-contact.component.tsx","components/descarga-component/descarga.component.tsx","components/edit-contact/edit-contact.component.tsx","components/entidades-adscritas/my-pending-works/my-pending-works-mode.enum.ts","components/entidades-adscritas/my-pending-works/my-pending-works.component.tsx","components/entidades-adscritas/my-pending-works/my-pending-works.state.ts","classes/iparametro.ts","classes/entidades-adscritas/answer-entidad-adscrita.ts","classes/entidades-adscritas/closer-entidad-adscrita.ts","components/my-requests/my-requests-mode.enum.ts","components/my-requests/my-requests.component.tsx","components/my-requests/my-requests.state.ts","components/procesox/CustomComponent.tsx","components/recover-password/recover-password.component.tsx","components/satisfaction-survey/satisfaction-survey.component.tsx","reduxStore.ts","components/sign-in/sign-in.component.tsx","components/verify-document/verify-document.component.tsx","App.tsx","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-0.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-1.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-2.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-3.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-4.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-5.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-6.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-7.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-8.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-9.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-10.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-11.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-12.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-13.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-14.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-15.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-16.ts","../node_modules/@fluentui/font-icons-mdl2/src/fabric-icons-17.ts","../node_modules/@fluentui/font-icons-mdl2/src/iconAliases.ts","../node_modules/@fluentui/font-icons-mdl2/src/version.ts","../node_modules/@fluentui/font-icons-mdl2/src/index.ts","serviceWorker.ts","index.tsx"],"sourcesContent":["/*!\n * ApexCharts v3.49.0\n * (c) 2018-2024 ApexCharts\n * Released under the MIT License.\n */\n\"use strict\";function t(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function e(e){for(var i=1;it.length)&&(e=t.length);for(var i=0,a=new Array(e);i>16,o=i>>8&255,n=255&i;return\"#\"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-o)*s)+o)+(Math.round((a-n)*s)+n)).toString(16).slice(1)}},{key:\"shadeColor\",value:function(e,i){return t.isColorHex(i)?this.shadeHexColor(e,i):this.shadeRGBColor(e,i)}}],[{key:\"bind\",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:\"isObject\",value:function(t){return t&&\"object\"===i(t)&&!Array.isArray(t)&&null!=t}},{key:\"is\",value:function(t,e){return Object.prototype.toString.call(e)===\"[object \"+t+\"]\"}},{key:\"listToArray\",value:function(t){var e,i=[];for(e=0;e1&&void 0!==arguments[1]?arguments[1]:2;return Number.isInteger(t)?t:parseFloat(t.toPrecision(e))}},{key:\"randomId\",value:function(){return(Math.random()+1).toString(36).substring(4)}},{key:\"noExponents\",value:function(t){var e=String(t).split(/[eE]/);if(1===e.length)return e[0];var i=\"\",a=t<0?\"-\":\"\",s=e[0].replace(\".\",\"\"),r=Number(e[1])+1;if(r<0){for(i=a+\"0.\";r++;)i+=\"0\";return i+s.replace(/^-/,\"\")}for(r-=s.length;r--;)i+=\"0\";return s+i}},{key:\"getDimensions\",value:function(t){var e=getComputedStyle(t,null),i=t.clientHeight,a=t.clientWidth;return i-=parseFloat(e.paddingTop)+parseFloat(e.paddingBottom),[a-=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight),i]}},{key:\"getBoundingClientRect\",value:function(t){var e=t.getBoundingClientRect();return{top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:t.clientWidth,height:t.clientHeight,x:e.left,y:e.top}}},{key:\"getLargestStringFromArr\",value:function(t){return t.reduce((function(t,e){return Array.isArray(e)&&(e=e.reduce((function(t,e){return t.length>e.length?t:e}))),t.length>e.length?t:e}),0)}},{key:\"hexToRgba\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"#999999\",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;\"#\"!==t.substring(0,1)&&(t=\"#999999\");var i=t.replace(\"#\",\"\");i=i.match(new RegExp(\"(.{\"+i.length/3+\"})\",\"g\"));for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:\"x\",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\\=?;:'\",.<>{}[\\]\\\\/]/gi,e)}},{key:\"negToZero\",value:function(t){return t<0?0:t}},{key:\"moveIndexInArray\",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:\"extractNumber\",value:function(t){return parseFloat(t.replace(/[^\\d.]*/g,\"\"))}},{key:\"findAncestor\",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:\"setELstyles\",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:\"isNumber\",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:\"isFloat\",value:function(t){return Number(t)===t&&t%1!=0}},{key:\"isSafari\",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:\"isFirefox\",value:function(){return navigator.userAgent.toLowerCase().indexOf(\"firefox\")>-1}},{key:\"isIE11\",value:function(){if(-1!==window.navigator.userAgent.indexOf(\"MSIE\")||window.navigator.appVersion.indexOf(\"Trident/\")>-1)return!0}},{key:\"isIE\",value:function(){var t=window.navigator.userAgent,e=t.indexOf(\"MSIE \");if(e>0)return parseInt(t.substring(e+5,t.indexOf(\".\",e)),10);if(t.indexOf(\"Trident/\")>0){var i=t.indexOf(\"rv:\");return parseInt(t.substring(i+3,t.indexOf(\".\",i)),10)}var a=t.indexOf(\"Edge/\");return a>0&&parseInt(t.substring(a+5,t.indexOf(\".\",a)),10)}},{key:\"getGCD\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));for(t=Math.round(Math.abs(t)*a),e=Math.round(Math.abs(e)*a);e;){var s=e;e=t%e,t=s}return t/a}},{key:\"getPrimeFactors\",value:function(t){for(var e=[],i=2;t>=2;)t%i==0?(e.push(i),t/=i):i++;return e}},{key:\"mod\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,a=Math.pow(10,i-Math.floor(Math.log10(Math.max(t,e))));return(t=Math.round(Math.abs(t)*a))%(e=Math.round(Math.abs(e)*a))/a}}]),t}(),b=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return r(t,[{key:\"setEasingFunctions\",value:function(){var t;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case\"linear\":t=\"-\";break;case\"easein\":t=\"<\";break;case\"easeout\":t=\">\";break;case\"easeinout\":default:t=\"<>\";break;case\"swing\":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case\"bounce\":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case\"elastic\":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=t}}},{key:\"animateLine\",value:function(t,e,i,a){t.attr(e).animate(a).attr(i)}},{key:\"animateMarker\",value:function(t,e,i,a,s,r){e||(e=0),t.attr({r:e,width:e,height:e}).animate(a,s).attr({r:i,width:i.width,height:i.height}).afterAll((function(){r()}))}},{key:\"animateCircle\",value:function(t,e,i,a,s){t.attr({r:e.r,cx:e.cx,cy:e.cy}).animate(a,s).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:\"animateRect\",value:function(t,e,i,a,s){t.attr(e).animate(a).attr(i).afterAll((function(){return s()}))}},{key:\"animatePathsGradually\",value:function(t){var e=t.el,i=t.realIndex,a=t.j,s=t.fill,r=t.pathFrom,o=t.pathTo,n=t.speed,l=t.delay,h=this.w,c=0;h.config.chart.animations.animateGradually.enabled&&(c=h.config.chart.animations.animateGradually.delay),h.config.chart.animations.dynamicAnimation.enabled&&h.globals.dataChanged&&\"bar\"!==h.config.chart.type&&(c=0),this.morphSVG(e,i,a,\"line\"!==h.config.chart.type||h.globals.comboCharts?s:\"stroke\",r,o,n,l*c)}},{key:\"showDelayedElements\",value:function(){this.w.globals.delayedElements.forEach((function(t){var e=t.el;e.classList.remove(\"apexcharts-element-hidden\"),e.classList.add(\"apexcharts-hidden-element-shown\")}))}},{key:\"animationCompleted\",value:function(t){var e=this.w;e.globals.animationEnded||(e.globals.animationEnded=!0,this.showDelayedElements(),\"function\"==typeof e.config.chart.events.animationEnd&&e.config.chart.events.animationEnd(this.ctx,{el:t,w:e}))}},{key:\"morphSVG\",value:function(t,e,i,a,s,r,o,n){var l=this,h=this.w;s||(s=t.attr(\"pathFrom\")),r||(r=t.attr(\"pathTo\"));var c=function(t){return\"radar\"===h.config.chart.type&&(o=1),\"M 0 \".concat(h.globals.gridHeight)};(!s||s.indexOf(\"undefined\")>-1||s.indexOf(\"NaN\")>-1)&&(s=c()),(!r||r.indexOf(\"undefined\")>-1||r.indexOf(\"NaN\")>-1)&&(r=c()),h.globals.shouldAnimate||(o=1),t.plot(s).animate(1,h.globals.easing,n).plot(s).animate(o,h.globals.easing,n).plot(r).afterAll((function(){x.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&l.animationCompleted(t):\"none\"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&l.animationCompleted(t),l.showDelayedElements()}))}}]),t}(),v=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"getDefaultFilter\",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size(\"120%\",\"180%\",\"-5%\",\"-40%\"),\"none\"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:\"addNormalFilter\",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&!t.node.classList.contains(\"apexcharts-marker\")&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:\"addLightenFilter\",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:\"linear\",slope:1.5,intercept:r}})})),t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\"),this._scaleFilterSize(t.filterer.node)}},{key:\"addDarkenFilter\",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:\"linear\",slope:r}})})),t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\"),this._scaleFilterSize(t.filterer.node)}},{key:\"applyFilter\",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case\"none\":this.addNormalFilter(t,e);break;case\"lighten\":this.addLightenFilter(t,e,{intensity:a});break;case\"darken\":this.addDarkenFilter(t,e,{intensity:a})}}},{key:\"addShadow\",value:function(t,e,i){var a,s=this.w,r=i.blur,o=i.top,n=i.left,l=i.color,h=i.opacity;if((null===(a=s.config.chart.dropShadow.enabledOnSeries)||void 0===a?void 0:a.length)>0&&-1===s.config.chart.dropShadow.enabledOnSeries.indexOf(e))return t;var c=t.flood(Array.isArray(l)?l[e]:l,h).composite(t.sourceAlpha,\"in\").offset(n,o).gaussianBlur(r).merge(t.source);return t.blend(t.source,c)}},{key:\"dropShadow\",value:function(t,e){var i,a,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=e.top,o=e.left,n=e.blur,l=e.color,h=e.opacity,c=e.noUserSpaceOnUse,d=this.w;if(t.unfilter(!0),x.isIE()&&\"radialBar\"===d.config.chart.type)return t;if((null===(i=d.config.chart.dropShadow.enabledOnSeries)||void 0===i?void 0:i.length)>0&&-1===(null===(a=d.config.chart.dropShadow.enabledOnSeries)||void 0===a?void 0:a.indexOf(s)))return t;return l=Array.isArray(l)?l[s]:l,t.filter((function(t){var e=null;e=x.isSafari()||x.isFirefox()||x.isIE()?t.flood(l,h).composite(t.sourceAlpha,\"in\").offset(o,r).gaussianBlur(n):t.flood(l,h).composite(t.sourceAlpha,\"in\").offset(o,r).gaussianBlur(n).merge(t.source),t.blend(t.source,e)})),c||t.filterer.node.setAttribute(\"filterUnits\",\"userSpaceOnUse\"),this._scaleFilterSize(t.filterer.node),t}},{key:\"setSelectionFilter\",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute(\"selected\",!0);var s=a.config.states.active.filter;\"none\"!==s&&this.applyFilter(t,e,s.type,s.value)}}},{key:\"_scaleFilterSize\",value:function(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:\"200%\",height:\"200%\",x:\"-50%\",y:\"-50%\"})}}]),t}(),m=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"roundPathCorners\",value:function(t,e){function i(t,e,i){var s=e.x-t.x,r=e.y-t.y,o=Math.sqrt(s*s+r*r);return a(t,e,Math.min(1,i/o))}function a(t,e,i){return{x:t.x+(e.x-t.x)*i,y:t.y+(e.y-t.y)*i}}function s(t,e){t.length>2&&(t[t.length-2]=e.x,t[t.length-1]=e.y)}function r(t){return{x:parseFloat(t[t.length-2]),y:parseFloat(t[t.length-1])}}t.indexOf(\"NaN\")>-1&&(t=\"\");var o=t.split(/[,\\s]/).reduce((function(t,e){var i=e.match(\"([a-zA-Z])(.+)\");return i?(t.push(i[1]),t.push(i[2])):t.push(e),t}),[]).reduce((function(t,e){return parseFloat(e)==e&&t.length?t[t.length-1].push(e):t.push([e]),t}),[]),n=[];if(o.length>1){var l=r(o[0]),h=null;\"Z\"==o[o.length-1][0]&&o[0].length>2&&(h=[\"L\",l.x,l.y],o[o.length-1]=h),n.push(o[0]);for(var c=1;c2&&\"L\"==g[0]&&u.length>2&&\"L\"==u[0]){var p,f,x=r(d),b=r(g),v=r(u);p=i(b,x,e),f=i(b,v,e),s(g,p),g.origPoint=b,n.push(g);var m=a(p,b,.5),y=a(b,f,.5),w=[\"C\",m.x,m.y,y.x,y.y,f.x,f.y];w.origPoint=b,n.push(w)}else n.push(g)}if(h){var k=r(n[n.length-1]);n.push([\"Z\"]),s(n[0],k)}}else n=o;return n.reduce((function(t,e){return t+e.join(\" \")+\" \"}),\"\")}},{key:\"drawLine\",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"#a8a8a8\",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:\"butt\";return this.w.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,\"stroke-dasharray\":r,\"stroke-width\":o,\"stroke-linecap\":n})}},{key:\"drawRect\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"#fefefe\",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w.globals.dom.Paper.rect();return c.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:o,\"stroke-width\":null!==n?n:0,stroke:null!==l?l:\"none\",\"stroke-dasharray\":h}),c.node.setAttribute(\"fill\",r),c}},{key:\"drawPolygon\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#e1e1e1\",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"none\";return this.w.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,\"stroke-width\":i})}},{key:\"drawCircle\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;t<0&&(t=0);var i=this.w.globals.dom.Paper.circle(2*t);return null!==e&&i.attr(e),i}},{key:\"drawPath\",value:function(t){var e=t.d,i=void 0===e?\"\":e,a=t.stroke,s=void 0===a?\"#a8a8a8\":a,r=t.strokeWidth,o=void 0===r?1:r,n=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,g=t.classes,u=t.strokeLinecap,p=void 0===u?null:u,f=t.strokeDashArray,x=void 0===f?0:f,b=this.w;return null===p&&(p=b.config.stroke.lineCap),(i.indexOf(\"undefined\")>-1||i.indexOf(\"NaN\")>-1)&&(i=\"M 0 \".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:n,\"fill-opacity\":h,stroke:s,\"stroke-opacity\":d,\"stroke-linecap\":p,\"stroke-width\":o,\"stroke-dasharray\":x,class:g})}},{key:\"group\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w.globals.dom.Paper.group();return null!==t&&e.attr(t),e}},{key:\"move\",value:function(t,e){var i=[\"M\",t,e].join(\" \");return i}},{key:\"line\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=[\" L\",t,e].join(\" \"):\"H\"===i?a=[\" H\",t].join(\" \"):\"V\"===i&&(a=[\" V\",e].join(\" \")),a}},{key:\"curve\",value:function(t,e,i,a,s,r){var o=[\"C\",t,e,i,a,s,r].join(\" \");return o}},{key:\"quadraticCurve\",value:function(t,e,i,a){return[\"Q\",t,e,i,a].join(\" \")}},{key:\"arc\",value:function(t,e,i,a,s,r,o){var n=\"A\";arguments.length>7&&void 0!==arguments[7]&&arguments[7]&&(n=\"a\");var l=[n,t,e,i,a,s,r,o].join(\" \");return l}},{key:\"renderPaths\",value:function(t){var i,a=t.j,s=t.realIndex,r=t.pathFrom,o=t.pathTo,n=t.stroke,l=t.strokeWidth,h=t.strokeLinecap,c=t.fill,d=t.animationDelay,g=t.initialSpeed,u=t.dataChangeSpeed,p=t.className,f=t.shouldClipToGrid,x=void 0===f||f,m=t.bindEventsOnPaths,y=void 0===m||m,w=t.drawShadow,k=void 0===w||w,A=this.w,S=new v(this.ctx),C=new b(this.ctx),L=this.w.config.chart.animations.enabled,P=L&&this.w.config.chart.animations.dynamicAnimation.enabled,M=!!(L&&!A.globals.resized||P&&A.globals.dataChanged&&A.globals.shouldAnimate);M?i=r:(i=o,A.globals.animationEnded=!0);var I=A.config.stroke.dashArray,T=0;T=Array.isArray(I)?I[s]:A.config.stroke.dashArray;var z=this.drawPath({d:i,stroke:n,strokeWidth:l,fill:c,fillOpacity:1,classes:p,strokeLinecap:h,strokeDashArray:T});if(z.attr(\"index\",s),x&&z.attr({\"clip-path\":\"url(#gridRectMask\".concat(A.globals.cuid,\")\")}),\"none\"!==A.config.states.normal.filter.type)S.getDefaultFilter(z,s);else if(A.config.chart.dropShadow.enabled&&k){var X=A.config.chart.dropShadow;S.dropShadow(z,X,s)}y&&(z.node.addEventListener(\"mouseenter\",this.pathMouseEnter.bind(this,z)),z.node.addEventListener(\"mouseleave\",this.pathMouseLeave.bind(this,z)),z.node.addEventListener(\"mousedown\",this.pathMouseDown.bind(this,z))),z.attr({pathTo:o,pathFrom:r});var E={el:z,j:a,realIndex:s,pathFrom:r,pathTo:o,fill:c,strokeWidth:l,delay:d};return!L||A.globals.resized||A.globals.dataChanged?!A.globals.resized&&A.globals.dataChanged||C.showDelayedElements():C.animatePathsGradually(e(e({},E),{},{speed:g})),A.globals.dataChanged&&P&&M&&C.animatePathsGradually(e(e({},E),{},{speed:u})),z}},{key:\"drawPattern\",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"#a8a8a8\",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return this.w.globals.dom.Paper.pattern(e,i,(function(r){\"horizontalLines\"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):\"verticalLines\"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):\"slantedLines\"===t?r.line(0,0,e,i).stroke({color:a,width:s}):\"squares\"===t?r.rect(e,i).fill(\"none\").stroke({color:a,width:s}):\"circles\"===t&&r.circle(e).fill(\"none\").stroke({color:a,width:s})}))}},{key:\"drawGradient\",value:function(t,e,i,a,s){var r,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e.length<9&&0===e.indexOf(\"#\")&&(e=x.hexToRgba(e,a)),i.length<9&&0===i.indexOf(\"#\")&&(i=x.hexToRgba(i,s));var d=0,g=1,u=1,p=null;null!==n&&(d=void 0!==n[0]?n[0]/100:0,g=void 0!==n[1]?n[1]/100:1,u=void 0!==n[2]?n[2]/100:1,p=void 0!==n[3]?n[3]/100:null);var f=!(\"donut\"!==c.config.chart.type&&\"pie\"!==c.config.chart.type&&\"polarArea\"!==c.config.chart.type&&\"bubble\"!==c.config.chart.type);if(r=null===l||0===l.length?c.globals.dom.Paper.gradient(f?\"radial\":\"linear\",(function(t){t.at(d,e,a),t.at(g,i,s),t.at(u,i,s),null!==p&&t.at(p,e,a)})):c.globals.dom.Paper.gradient(f?\"radial\":\"linear\",(function(t){(Array.isArray(l[h])?l[h]:l).forEach((function(e){t.at(e.offset/100,e.color,e.opacity)}))})),f){var b=c.globals.gridWidth/2,v=c.globals.gridHeight/2;\"bubble\"!==c.config.chart.type?r.attr({gradientUnits:\"userSpaceOnUse\",cx:b,cy:v,r:o}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else\"vertical\"===t?r.from(0,0).to(0,1):\"diagonal\"===t?r.from(0,0).to(1,1):\"horizontal\"===t?r.from(0,1).to(1,1):\"diagonal2\"===t&&r.from(1,0).to(0,1);return r}},{key:\"getTextBasedOnMaxWidth\",value:function(t){var e=t.text,i=t.maxWidth,a=t.fontSize,s=t.fontFamily,r=this.getTextRects(e,a,s),o=r.width/e.length,n=Math.floor(i/o);return i-1){var n=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(n,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(\".apexcharts-series path\").members,h=i.globals.dom.Paper.select(\".apexcharts-series circle, .apexcharts-series rect\").members,c=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute(\"selected\",\"false\"),a.getDefaultFilter(t,s)}))};c(l),c(h)}t.node.setAttribute(\"selected\",\"true\"),o=\"true\",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if(\"true\"===o){var d=i.config.states.active.filter;if(\"none\"!==d)a.applyFilter(t,s,d.type,d.value);else if(\"none\"!==i.config.states.hover.filter&&!i.globals.isTouchDevice){var g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}}else if(\"none\"!==i.config.states.active.filter.type)if(\"none\"===i.config.states.hover.filter.type||i.globals.isTouchDevice)a.getDefaultFilter(t,s);else{g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}\"function\"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent(\"dataPointSelection\",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:\"rotateAroundCenter\",value:function(t){var e={};return t&&\"function\"==typeof t.getBBox&&(e=t.getBBox()),{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:\"getTextRects\",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,o=this.drawText({x:-200,y:-200,text:t,textAnchor:\"start\",fontSize:e,fontFamily:i,foreColor:\"#fff\",opacity:0});a&&o.attr(\"transform\",a),r.globals.dom.Paper.add(o);var n=o.bbox();return s||(n=o.node.getBoundingClientRect()),o.remove(),{width:n.width,height:n.height}}},{key:\"placeTextWithEllipsis\",value:function(t,e,i){if(\"function\"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/1.1)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/1.1)return void(t.textContent=e.substring(0,a)+\"...\");t.textContent=\".\"}}}],[{key:\"setAttrs\",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}(),y=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"getStackedSeriesTotals\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.w,i=[];if(0===e.globals.series.length)return i;for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:\"getStackedSeriesTotalsByGroups\",value:function(){var t=this,e=this.w,i=[];return e.globals.seriesGroups.forEach((function(a){var s=[];e.config.series.forEach((function(t,i){a.indexOf(e.globals.seriesNames[i])>-1&&s.push(i)}));var r=e.globals.series.map((function(t,e){return-1===s.indexOf(e)?e:-1})).filter((function(t){return-1!==t}));i.push(t.getStackedSeriesTotals(r))})),i}},{key:\"isSeriesNull\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:\"seriesHaveSameValues\",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:\"getCategoryLabels\",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t,i){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:\"getLargestSeries\",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:\"getLargestMarkerSize\",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.config.markers.discrete&&t.config.markers.discrete.length&&t.config.markers.discrete.forEach((function(t){e=Math.max(e,t.size)})),e>0&&(e+=t.config.markers.hover.sizeOffset+1),t.globals.markers.largestSize=e,e}},{key:\"getSeriesTotals\",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;at&&i.globals.seriesX[s][o]0){var u=function(t,e){var i=s.config.yaxis[s.globals.seriesYAxisReverseMap[e]],r=t<0?-1:1;return t=Math.abs(t),i.logarithmic&&(t=a.getBaseLog(i.logBase,t)),-r*t/o[e]};if(r.isMultipleYAxis){l=[];for(var p=0;p0&&(i=!0),{comboBarCount:a,comboCharts:i}}},{key:\"extendArrayProps\",value:function(t,e,i){var a,s,r,o,n,l;(null!==(a=e)&&void 0!==a&&a.yaxis&&(e=t.extendYAxis(e,i)),null!==(s=e)&&void 0!==s&&s.annotations)&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),null!==(r=e)&&void 0!==r&&null!==(o=r.annotations)&&void 0!==o&&o.xaxis&&(e=t.extendXAxisAnnotations(e)),null!==(n=e)&&void 0!==n&&null!==(l=n.annotations)&&void 0!==l&&l.points&&(e=t.extendPointAnnotations(e)));return e}}]),t}(),w=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e}return r(t,[{key:\"setOrientations\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if(\"vertical\"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='\".concat(a,\"']\"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute(\"x\",parseFloat(s.getAttribute(\"x\"))-r.height+4),\"top\"===t.label.position?s.setAttribute(\"y\",parseFloat(s.getAttribute(\"y\"))+r.width):s.setAttribute(\"y\",parseFloat(s.getAttribute(\"y\"))-r.width);var o=this.annoCtx.graphics.rotateAroundCenter(s),n=o.x,l=o.y;s.setAttribute(\"transform\",\"rotate(-90 \".concat(n,\" \").concat(l,\")\"))}}}},{key:\"addBackgroundToAnno\",value:function(t,e){var i=this.w;if(!t||void 0===e.label.text||void 0!==e.label.text&&!String(e.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(\".apexcharts-grid\").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding.left,o=e.label.style.padding.right,n=e.label.style.padding.top,l=e.label.style.padding.bottom;\"vertical\"===e.label.orientation&&(n=e.label.style.padding.left,l=e.label.style.padding.right,r=e.label.style.padding.top,o=e.label.style.padding.bottom);var h=s.left-a.left-r,c=s.top-a.top-n,d=this.annoCtx.graphics.drawRect(h-i.globals.barPadForNumericAxis,c,s.width+r+o,s.height+n+l,e.label.borderRadius,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&d.node.classList.add(e.id),d}},{key:\"annotationsBackground\",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations .apexcharts-\").concat(s,\"-annotation-label[rel='\").concat(a,\"']\"));if(r){var o=r.parentNode,n=t.addBackgroundToAnno(r,i);n&&(o.insertBefore(n.node,r),i.label.mouseEnter&&n.node.addEventListener(\"mouseenter\",i.label.mouseEnter.bind(t,i)),i.label.mouseLeave&&n.node.addEventListener(\"mouseleave\",i.label.mouseLeave.bind(t,i)),i.label.click&&n.node.addEventListener(\"click\",i.label.click.bind(t,i)))}};e.config.annotations.xaxis.map((function(t,e){i(t,e,\"xaxis\")})),e.config.annotations.yaxis.map((function(t,e){i(t,e,\"yaxis\")})),e.config.annotations.points.map((function(t,e){i(t,e,\"point\")}))}},{key:\"getY1Y2\",value:function(t,e){var i,a=\"y1\"===t?e.y:e.y2,s=!1,r=this.w;if(this.annoCtx.invertAxis){var o=r.globals.labels;r.config.xaxis.convertedCatToNumeric&&(o=r.globals.categoryLabels);var n=o.indexOf(a),l=r.globals.dom.baseEl.querySelector(\".apexcharts-yaxis-texts-g text:nth-child(\"+(n+1)+\")\");i=l?parseFloat(l.getAttribute(\"y\")):(r.globals.gridHeight/o.length-1)*(n+1)-r.globals.barHeight,void 0!==e.seriesIndex&&r.globals.barHeight&&(i=i-r.globals.barHeight/2*(r.globals.series.length-1)+r.globals.barHeight*e.seriesIndex)}else{var h,c=r.globals.seriesYAxisMap[e.yAxisIndex][0];if(r.config.yaxis[e.yAxisIndex].logarithmic)h=(a=new y(this.annoCtx.ctx).getLogVal(r.config.yaxis[e.yAxisIndex].logBase,a,c))/r.globals.yLogRatio[c];else h=(a-r.globals.minYArr[c])/(r.globals.yRange[c]/r.globals.gridHeight);h>r.globals.gridHeight?(h=r.globals.gridHeight,s=!0):h<0&&(h=0,s=!0),i=r.globals.gridHeight-h,!e.marker||void 0!==e.y&&null!==e.y||(i=0),r.config.yaxis[e.yAxisIndex]&&r.config.yaxis[e.yAxisIndex].reversed&&(i=h)}return\"string\"==typeof a&&a.indexOf(\"px\")>-1&&(i=parseFloat(a)),{yP:i,clipped:s}}},{key:\"getX1X2\",value:function(t,e){var i,a=\"x1\"===t?e.x:e.x2,s=this.w,r=this.annoCtx.invertAxis?s.globals.minY:s.globals.minX,o=this.annoCtx.invertAxis?s.globals.maxY:s.globals.maxX,n=this.annoCtx.invertAxis?s.globals.yRange[0]:s.globals.xRange,l=!1;return i=this.annoCtx.inversedReversedAxis?(o-a)/(n/s.globals.gridWidth):(a-r)/(n/s.globals.gridWidth),\"category\"!==s.config.xaxis.type&&!s.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||s.globals.dataFormatXNumeric||s.config.chart.sparkline.enabled||(i=this.getStringX(a)),\"string\"==typeof a&&a.indexOf(\"px\")>-1&&(i=parseFloat(a)),null==a&&e.marker&&(i=s.globals.gridWidth),void 0!==e.seriesIndex&&s.globals.barWidth&&!this.annoCtx.invertAxis&&(i=i-s.globals.barWidth/2*(s.globals.series.length-1)+s.globals.barWidth*e.seriesIndex),i>s.globals.gridWidth?(i=s.globals.gridWidth,l=!0):i<0&&(i=0,l=!0),{x:i,clipped:l}}},{key:\"getStringX\",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.indexOf(t),s=e.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-texts-g text:nth-child(\"+(a+1)+\")\");return s&&(i=parseFloat(s.getAttribute(\"x\"))),i}}]),t}(),k=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new w(this.annoCtx)}return r(t,[{key:\"addXaxisAnnotation\",value:function(t,e,i){var a,s=this.w,r=this.helpers.getX1X2(\"x1\",t),o=r.x,n=r.clipped,l=!0,h=t.label.text,c=t.strokeDashArray;if(x.isNumber(o)){if(null===t.x2||void 0===t.x2){if(!n){var d=this.annoCtx.graphics.drawLine(o+t.offsetX,0+t.offsetY,o+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,c,t.borderWidth);e.appendChild(d.node),t.id&&d.node.classList.add(t.id)}}else{var g=this.helpers.getX1X2(\"x2\",t);if(a=g.x,l=g.clipped,!n||!l){if(a12?g-12:0===g?12:g;e=(e=(e=(e=e.replace(/(^|[^\\\\])HH+/g,\"$1\"+l(g))).replace(/(^|[^\\\\])H/g,\"$1\"+g)).replace(/(^|[^\\\\])hh+/g,\"$1\"+l(p))).replace(/(^|[^\\\\])h/g,\"$1\"+p);var f=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\\\])mm+/g,\"$1\"+l(f))).replace(/(^|[^\\\\])m/g,\"$1\"+f);var x=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\\\])ss+/g,\"$1\"+l(x))).replace(/(^|[^\\\\])s/g,\"$1\"+x);var b=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\\\])fff+/g,\"$1\"+l(b,3)),b=Math.round(b/10),e=e.replace(/(^|[^\\\\])ff/g,\"$1\"+l(b)),b=Math.round(b/10);var v=g<12?\"AM\":\"PM\";e=(e=(e=e.replace(/(^|[^\\\\])f/g,\"$1\"+b)).replace(/(^|[^\\\\])TT+/g,\"$1\"+v)).replace(/(^|[^\\\\])T/g,\"$1\"+v.charAt(0));var m=v.toLowerCase();e=(e=e.replace(/(^|[^\\\\])tt+/g,\"$1\"+m)).replace(/(^|[^\\\\])t/g,\"$1\"+m.charAt(0));var y=-t.getTimezoneOffset(),w=a||!y?\"Z\":y>0?\"+\":\"-\";if(!a){var k=(y=Math.abs(y))%60;w+=l(Math.floor(y/60))+\":\"+l(k)}e=e.replace(/(^|[^\\\\])K/g,\"$1\"+w);var A=(a?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(o[0],\"g\"),o[A])).replace(new RegExp(n[0],\"g\"),n[A])).replace(new RegExp(s[0],\"g\"),s[c])).replace(new RegExp(r[0],\"g\"),r[c])).replace(/\\\\(.)/g,\"$1\")}},{key:\"getTimeUnitsfromTimestamp\",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),o=this.formatDate(s,\"yyyy MM dd HH mm ss fff\").split(\" \"),n=this.formatDate(r,\"yyyy MM dd HH mm ss fff\").split(\" \");return{minMillisecond:parseInt(o[6],10),maxMillisecond:parseInt(n[6],10),minSecond:parseInt(o[5],10),maxSecond:parseInt(n[5],10),minMinute:parseInt(o[4],10),maxMinute:parseInt(n[4],10),minHour:parseInt(o[3],10),maxHour:parseInt(n[3],10),minDate:parseInt(o[2],10),maxDate:parseInt(n[2],10),minMonth:parseInt(o[1],10)-1,maxMonth:parseInt(n[1],10)-1,minYear:parseInt(o[0],10),maxYear:parseInt(n[0],10)}}},{key:\"isLeapYear\",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:\"calculcateLastDaysOfMonth\",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:\"determineDaysOfYear\",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:\"determineRemainingDaysOfYear\",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:\"determineDaysOfMonths\",value:function(t,e){var i=30;switch(t=x.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),S=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.tooltipKeyFormat=\"dd MMM\"}return r(t,[{key:\"xLabelFormat\",value:function(t,e,i,a){var s=this.w;if(\"datetime\"===s.config.xaxis.type&&void 0===s.config.xaxis.labels.formatter&&void 0===s.config.tooltip.x.formatter){var r=new A(this.ctx);return r.formatDate(r.getDate(e),s.config.tooltip.x.format)}return t(e,i,a)}},{key:\"defaultGeneralFormatter\",value:function(t){return Array.isArray(t)?t.map((function(t){return t})):t}},{key:\"defaultYFormatter\",value:function(t,e,i){var a=this.w;if(x.isNumber(t))if(0!==a.globals.yValueDecimal)t=t.toFixed(void 0!==e.decimalsInFloat?e.decimalsInFloat:a.globals.yValueDecimal);else{var s=t.toFixed(0);t=t==s?s:t.toFixed(1)}return t}},{key:\"setLabelFormatters\",value:function(){var t=this,e=this.w;return e.globals.xaxisTooltipFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttKeyFormatter=function(e){return t.defaultGeneralFormatter(e)},e.globals.ttZFormatter=function(t){return t},e.globals.legendFormatter=function(e){return t.defaultGeneralFormatter(e)},void 0!==e.config.xaxis.labels.formatter?e.globals.xLabelFormatter=e.config.xaxis.labels.formatter:e.globals.xLabelFormatter=function(t){if(x.isNumber(t)){if(!e.config.xaxis.convertedCatToNumeric&&\"numeric\"===e.config.xaxis.type){if(x.isNumber(e.config.xaxis.decimalsInFloat))return t.toFixed(e.config.xaxis.decimalsInFloat);var i=e.globals.maxX-e.globals.minX;return i>0&&i<100?t.toFixed(1):t.toFixed(0)}if(e.globals.isBarHorizontal)if(e.globals.maxY-e.globals.minYArr<4)return t.toFixed(1);return t.toFixed(0)}return t},\"function\"==typeof e.config.tooltip.x.formatter?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,\"function\"==typeof e.config.xaxis.tooltip.formatter&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||void 0!==e.config.tooltip.y.formatter)&&(e.globals.ttVal=e.config.tooltip.y),void 0!==e.config.tooltip.z.formatter&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),void 0!==e.config.legend.formatter&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((function(i,a){void 0!==i.labels.formatter?e.globals.yLabelFormatters[a]=i.labels.formatter:e.globals.yLabelFormatters[a]=function(s){return e.globals.xyCharts?Array.isArray(s)?s.map((function(e){return t.defaultYFormatter(e,i,a)})):t.defaultYFormatter(s,i,a):s}})),e.globals}},{key:\"heatmapLabelFormatters\",value:function(){var t=this.w;if(\"heatmap\"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce((function(t,e){return t.length>e.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),C=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"getLabel\",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"12px\",o=!(arguments.length>6&&void 0!==arguments[6])||arguments[6],n=this.w,l=void 0===t[a]?\"\":t[a],h=l,c=n.globals.xLabelFormatter,d=n.config.xaxis.labels.formatter,g=!1,u=new S(this.ctx),p=l;o&&(h=u.xLabelFormat(c,l,p,{i:a,dateFormatter:new A(this.ctx).formatDate,w:n}),void 0!==d&&(h=d(l,t[a],{i:a,dateFormatter:new A(this.ctx).formatDate,w:n})));var f,x;e.length>0?(f=e[a].unit,x=null,e.forEach((function(t){\"month\"===t.unit?x=\"year\":\"day\"===t.unit?x=\"month\":\"hour\"===t.unit?x=\"day\":\"minute\"===t.unit&&(x=\"hour\")})),g=x===f,i=e[a].position,h=e[a].value):\"datetime\"===n.config.xaxis.type&&void 0===d&&(h=\"\"),void 0===h&&(h=\"\"),h=Array.isArray(h)?h:h.toString();var b=new m(this.ctx),v={};v=n.globals.rotateXLabels&&o?b.getTextRects(h,parseInt(r,10),null,\"rotate(\".concat(n.config.xaxis.labels.rotate,\" 0 0)\"),!1):b.getTextRects(h,parseInt(r,10));var y=!n.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(h)&&(\"NaN\"===String(h)||s.indexOf(h)>=0&&y)&&(h=\"\"),{x:i,text:h,textRect:v,isBold:g}}},{key:\"checkLabelBasedOnTickamount\",value:function(t,e,i){var a=this.w,s=a.config.xaxis.tickAmount;return\"dataPoints\"===s&&(s=Math.round(a.globals.gridWidth/120)),s>i||t%Math.round(i/(s+1))==0||(e.text=\"\"),e}},{key:\"checkForOverflowingLabels\",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=\"\"),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=\"\"),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var o=s[s.length-1];e.xa.length||a.some((function(t){return Array.isArray(t.seriesName)}))?t:i.seriesYAxisReverseMap[t]}},{key:\"isYAxisHidden\",value:function(t){var e=this.w,i=e.config.yaxis[t];if(!i.show||this.yAxisAllSeriesCollapsed(t))return!0;if(!i.showForNullSeries){var a=e.globals.seriesYAxisMap[t],s=new y(this.ctx);return a.every((function(t){return s.isSeriesNull(t)}))}return!1}},{key:\"getYAxisForeColor\",value:function(t,e){var i=this.w;return Array.isArray(t)&&i.globals.yAxisScale[e]&&this.ctx.theme.pushExtraColors(t,i.globals.yAxisScale[e].result.length,!1),t}},{key:\"drawYAxisTicks\",value:function(t,e,i,a,s,r,o){var n=this.w,l=new m(this.ctx),h=n.globals.translateY;if(a.show&&e>0){!0===n.config.yaxis[s].opposite&&(t+=a.width);for(var c=e;c>=0;c--){var d=h+e/10+n.config.yaxis[s].labels.offsetY-1;n.globals.isBarHorizontal&&(d=r*c),\"heatmap\"===n.config.chart.type&&(d+=r/2);var g=l.drawLine(t+i.offsetX-a.width+a.offsetX,d+a.offsetY,t+i.offsetX+a.offsetX,d+a.offsetY,a.color);o.add(g),h+=r}}}}]),t}(),L=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new w(this.annoCtx),this.axesUtils=new C(this.annoCtx)}return r(t,[{key:\"addYaxisAnnotation\",value:function(t,e,i){var a,s=this.w,r=t.strokeDashArray,o=this.helpers.getY1Y2(\"y1\",t),n=o.yP,l=o.clipped,h=!0,c=!1,d=t.label.text;if(null===t.y2||void 0===t.y2){if(!l){c=!0;var g=this.annoCtx.graphics.drawLine(0+t.offsetX,n+t.offsetY,this._getYAxisAnnotationWidth(t),n+t.offsetY,t.borderColor,r,t.borderWidth);e.appendChild(g.node),t.id&&g.node.classList.add(t.id)}}else{if(a=(o=this.helpers.getY1Y2(\"y2\",t)).yP,h=o.clipped,a>n){var u=n;n=a,a=u}if(!l||!h){c=!0;var p=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,this._getYAxisAnnotationWidth(t),n-a,0,t.fillColor,t.opacity,1,t.borderColor,r);p.node.classList.add(\"apexcharts-annotation-rect\"),p.attr(\"clip-path\",\"url(#gridRectMask\".concat(s.globals.cuid,\")\")),e.appendChild(p.node),t.id&&p.node.classList.add(t.id)}}if(c){var f=\"right\"===t.label.position?s.globals.gridWidth:\"center\"===t.label.position?s.globals.gridWidth/2:0,x=this.annoCtx.graphics.drawText({x:f+t.label.offsetX,y:(null!=a?a:n)+t.label.offsetY-3,text:d,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:\"apexcharts-yaxis-annotation-label \".concat(t.label.style.cssClass,\" \").concat(t.id?t.id:\"\")});x.attr({rel:i}),e.appendChild(x.node)}}},{key:\"_getYAxisAnnotationWidth\",value:function(t){var e=this.w;e.globals.gridWidth;return(t.width.indexOf(\"%\")>-1?e.globals.gridWidth*parseInt(t.width,10)/100:parseInt(t.width,10))+t.offsetX}},{key:\"drawYAxisAnnotations\",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:\"apexcharts-yaxis-annotations\"});return e.config.annotations.yaxis.forEach((function(e,a){e.yAxisIndex=t.axesUtils.translateYAxisIndex(e.yAxisIndex),t.axesUtils.isYAxisHidden(e.yAxisIndex)&&t.axesUtils.yAxisAllSeriesCollapsed(e.yAxisIndex)||t.addYaxisAnnotation(e,i.node,a)})),i}}]),t}(),P=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new w(this.annoCtx)}return r(t,[{key:\"addPointAnnotation\",value:function(t,e,i){if(!(this.w.globals.collapsedSeriesIndices.indexOf(t.seriesIndex)>-1)){var a=this.helpers.getX1X2(\"x1\",t),s=a.x,r=a.clipped,o=(a=this.helpers.getY1Y2(\"y1\",t)).yP,n=a.clipped;if(x.isNumber(s)&&!n&&!r){var l={pSize:t.marker.size,pointStrokeWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,pRadius:t.marker.radius,class:\"apexcharts-point-annotation-marker \".concat(t.marker.cssClass,\" \").concat(t.id?t.id:\"\")},h=this.annoCtx.graphics.drawMarker(s+t.marker.offsetX,o+t.marker.offsetY,l);e.appendChild(h.node);var c=t.label.text?t.label.text:\"\",d=this.annoCtx.graphics.drawText({x:s+t.label.offsetX,y:o+t.label.offsetY-t.marker.size-parseFloat(t.label.style.fontSize)/1.6,text:c,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:\"apexcharts-point-annotation-label \".concat(t.label.style.cssClass,\" \").concat(t.id?t.id:\"\")});if(d.attr({rel:i}),e.appendChild(d.node),t.customSVG.SVG){var g=this.annoCtx.graphics.group({class:\"apexcharts-point-annotations-custom-svg \"+t.customSVG.cssClass});g.attr({transform:\"translate(\".concat(s+t.customSVG.offsetX,\", \").concat(o+t.customSVG.offsetY,\")\")}),g.node.innerHTML=t.customSVG.SVG,e.appendChild(g.node)}if(t.image.path){var u=t.image.width?t.image.width:20,p=t.image.height?t.image.height:20;h=this.annoCtx.addImage({x:s+t.image.offsetX-u/2,y:o+t.image.offsetY-p/2,width:u,height:p,path:t.image.path,appendTo:\".apexcharts-point-annotations\"})}t.mouseEnter&&h.node.addEventListener(\"mouseenter\",t.mouseEnter.bind(this,t)),t.mouseLeave&&h.node.addEventListener(\"mouseleave\",t.mouseLeave.bind(this,t)),t.click&&h.node.addEventListener(\"click\",t.click.bind(this,t))}}}},{key:\"drawPointAnnotations\",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:\"apexcharts-point-annotations\"});return e.config.annotations.points.map((function(e,a){t.addPointAnnotation(e,i.node,a)})),i}}]),t}();var M={name:\"en\",options:{months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],toolbar:{exportToSVG:\"Download SVG\",exportToPNG:\"Download PNG\",exportToCSV:\"Download CSV\",menu:\"Menu\",selection:\"Selection\",selectionZoom:\"Selection Zoom\",zoomIn:\"Zoom In\",zoomOut:\"Zoom Out\",pan:\"Panning\",reset:\"Reset Zoom\"}}},I=function(){function t(){a(this,t),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,stepSize:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:\"11px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"},formatter:void 0},axisBorder:{show:!1,color:\"#e0e0e0\",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:\"#e0e0e0\",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:\"11px\",fontWeight:900,fontFamily:void 0,cssClass:\"\"}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:\"front\",stroke:{color:\"#b6b6b6\",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:void 0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:\"#fff\",strokeWidth:2,strokeColor:\"#333\",shape:\"circle\",offsetX:0,offsetY:0,radius:2,cssClass:\"\"},label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"middle\",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:\"#c2c2c2\",borderColor:\"#c2c2c2\",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:\"100%\",yAxisIndex:0,label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"end\",position:\"right\",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:\"#c2c2c2\",borderColor:\"#c2c2c2\",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:\"#c2c2c2\",borderWidth:1,borderRadius:2,text:void 0,textAnchor:\"middle\",orientation:\"vertical\",position:\"top\",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:\"#fff\",color:void 0,fontSize:\"11px\",fontFamily:void 0,fontWeight:400,cssClass:\"\",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:\"\",textAnchor:\"start\",foreColor:void 0,fontSize:\"13px\",fontFamily:void 0,fontWeight:400,appendTo:\".apexcharts-annotations\",backgroundColor:\"transparent\",borderColor:\"#c2c2c2\",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return r(t,[{key:\"init\",value:function(){return{annotations:{yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:\"easeinout\",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:\"transparent\",locales:[M],defaultLocale:\"en\",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:\"#000\",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:\"#373d3f\",fontFamily:\"Helvetica, Arial, sans-serif\",height:\"auto\",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,nonce:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:\"x\",fill:{color:\"#24292e\",opacity:.1},stroke:{width:1,color:\"#24292e\",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0,targets:void 0},stacked:!1,stackOnlyBar:!0,stackType:\"normal\",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:\",\",headerCategory:\"category\",headerValue:\"value\",dateFormatter:function(t){return new Date(t).toDateString()}},png:{filename:void 0},svg:{filename:void 0}},autoSelected:\"zoom\"},type:\"line\",width:\"100%\",zoom:{enabled:!0,type:\"x\",autoScaleYaxis:!1,zoomedArea:{fill:{color:\"#90CAF9\",opacity:.4},stroke:{color:\"#0D47A1\",opacity:.4,width:1}}}},plotOptions:{area:{fillTo:\"origin\"},bar:{horizontal:!1,columnWidth:\"70%\",barHeight:\"70%\",distributed:!1,borderRadius:0,borderRadiusApplication:\"around\",borderRadiusWhenStacked:\"last\",rangeBarOverlap:!0,rangeBarGroupRows:!1,hideZeroBarsWhenGrouped:!1,isDumbbell:!1,dumbbellColors:void 0,isFunnel:!1,isFunnel3d:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:\"top\",maxItems:100,hideOverflowingLabels:!0,orientation:\"horizontal\",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:\"#373d3f\",fontSize:\"12px\",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:\"#00B746\",downward:\"#EF403C\"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:\"#00E396\",lower:\"#008FFB\"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,borderRadius:4,dataLabels:{format:\"scale\"},colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:\"50%\",background:\"transparent\",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:\"front\",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:\"#000\",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:\"#f2f2f2\",strokeWidth:\"97%\",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:\"#000\",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:\"16px\",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(t){return t}},value:{show:!0,fontSize:\"14px\",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(t){return t+\"%\"}},total:{show:!1,label:\"Total\",fontSize:\"16px\",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)/t.globals.series.length+\"%\"}}},barLabels:{enabled:!1,margin:5,useSeriesColors:!0,fontFamily:void 0,fontWeight:600,fontSize:\"16px\",formatter:function(t){return t},onClick:void 0}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:\"65%\",background:\"transparent\",labels:{show:!1,name:{show:!0,fontSize:\"16px\",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(t){return t}},value:{show:!0,fontSize:\"20px\",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,showAlways:!1,label:\"Total\",fontSize:\"16px\",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:\"#e8e8e8\"},spokes:{strokeWidth:1,connectorColors:\"#e8e8e8\"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:\"#e8e8e8\",connectorColors:\"#e8e8e8\",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:\"\"},textAnchor:\"middle\",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:\"12px\",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:\"#fff\",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:\"#fff\",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:\"#000\",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:\"#000\",opacity:.45}},fill:{type:\"solid\",colors:void 0,opacity:.85,gradient:{shade:\"dark\",type:\"horizontal\",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:\"squares\",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:\"#e0e0e0\",strokeDashArray:0,position:\"back\",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:\"bottom\",horizontalAlign:\"center\",inverseOrder:!1,fontSize:\"12px\",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,fillColors:void 0,strokeColor:\"#fff\",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:5,vertical:2},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:\"#fff\",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:\"circle\",width:8,height:8,radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,showNullDataPoints:!0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:\"center\",verticalAlign:\"middle\",offsetX:0,offsetY:0,style:{color:void 0,fontSize:\"14px\",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:\"none\",value:0}},hover:{filter:{type:\"lighten\",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:\"darken\",value:.5}}},title:{text:void 0,align:\"left\",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:\"14px\",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:\"left\",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:\"12px\",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:\"smooth\",lineCap:\"butt\",width:2,colors:void 0,dashArray:0,fill:{type:\"solid\",colors:void 0,opacity:.85,gradient:{shade:\"dark\",type:\"horizontal\",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,hideEmptySeries:!1,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:\"light\",cssClass:\"\",style:{fontSize:\"12px\",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:\"dd MMM\",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t?t+\": \":\"\"}}},z:{formatter:void 0,title:\"Size: \"},marker:{show:!0,fillColors:void 0},items:{display:\"flex\"},fixed:{enabled:!1,position:\"topRight\",offsetX:0,offsetY:0}},xaxis:{type:\"category\",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:\"12px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:\"yyyy\",month:\"MMM 'yy\",day:\"dd MMM\",hour:\"HH:mm\",minute:\"HH:mm:ss\",second:\"HH:mm:ss\"}},group:{groups:[],style:{colors:[],fontSize:\"12px\",fontWeight:400,fontFamily:void 0,cssClass:\"\"}},axisBorder:{show:!0,color:\"#e0e0e0\",width:\"100%\",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:\"#e0e0e0\",height:6,offsetX:0,offsetY:0},stepSize:void 0,tickAmount:void 0,tickPlacement:\"on\",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:\"bottom\",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:\"12px\",fontWeight:900,fontFamily:void 0,cssClass:\"\"}},crosshairs:{show:!0,width:1,position:\"back\",opacity:.9,stroke:{color:\"#b6b6b6\",width:1,dashArray:3},fill:{type:\"solid\",color:\"#B1B9C4\",gradient:{colorFrom:\"#D8E3F0\",colorTo:\"#BED1E6\",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:\"12px\",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:\"light\",palette:\"palette1\",monochrome:{enabled:!1,color:\"#008FFB\",shadeTo:\"light\",shadeIntensity:.65}}}}}]),t}(),T=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.graphics=new m(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new w(this),this.xAxisAnnotations=new k(this),this.yAxisAnnotations=new L(this),this.pointsAnnotations=new P(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return r(t,[{key:\"drawAxesAnnotations\",value:function(){var t=this.w;if(t.globals.axisCharts){for(var e=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=t.config.chart.animations.enabled,r=[e,i,a],o=[i.node,e.node,a.node],n=0;n<3;n++)t.globals.dom.elGraphical.add(r[n]),!s||t.globals.resized||t.globals.dataChanged||\"scatter\"!==t.config.chart.type&&\"bubble\"!==t.config.chart.type&&t.globals.dataPoints>1&&o[n].classList.add(\"apexcharts-element-hidden\"),t.globals.delayedElements.push({el:o[n],index:0});this.helpers.annotationsBackground()}}},{key:\"drawImageAnnos\",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:\"drawTextAnnos\",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:\"addXaxisAnnotation\",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:\"addYaxisAnnotation\",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:\"addPointAnnotation\",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:\"addText\",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,o=t.foreColor,n=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.cssClass,d=t.backgroundColor,g=t.borderWidth,u=t.strokeDashArray,p=t.borderRadius,f=t.borderColor,x=t.appendTo,b=void 0===x?\".apexcharts-svg\":x,v=t.paddingLeft,m=void 0===v?4:v,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=this.w,P=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||\"start\",fontSize:n||\"12px\",fontWeight:h||\"regular\",fontFamily:l||L.config.chart.fontFamily,foreColor:o||L.config.chart.foreColor,cssClass:c}),M=L.globals.dom.baseEl.querySelector(b);M&&M.appendChild(P.node);var I=P.bbox();if(s){var T=this.graphics.drawRect(I.x-m,I.y-C,I.width+m+w,I.height+A+C,p,d||\"transparent\",1,g,f,u);M.insertBefore(T.node,P.node)}}},{key:\"addImage\",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,o=t.y,n=void 0===o?0:o,l=t.width,h=void 0===l?20:l,c=t.height,d=void 0===c?20:c,g=t.appendTo,u=void 0===g?\".apexcharts-svg\":g,p=i.globals.dom.Paper.image(a);p.size(h,d).move(r,n);var f=i.globals.dom.baseEl.querySelector(u);return f&&f.appendChild(p.node),p}},{key:\"addXaxisAnnotationExternal\",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"xaxis\",contextMethod:i.addXaxisAnnotation}),i}},{key:\"addYaxisAnnotationExternal\",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"yaxis\",contextMethod:i.addYaxisAnnotation}),i}},{key:\"addPointAnnotationExternal\",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:\"point\",contextMethod:i.addPointAnnotation}),i}},{key:\"addAnnotationExternal\",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,o=a,n=o.w,l=n.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations\")),h=l.childNodes.length+1,c=new I,d=Object.assign({},\"xaxis\"===s?c.xAxisAnnotation:\"yaxis\"===s?c.yAxisAnnotation:c.pointAnnotation),g=x.extend(d,e);switch(s){case\"xaxis\":this.addXaxisAnnotation(g,l,h);break;case\"yaxis\":this.addYaxisAnnotation(g,l,h);break;case\"point\":this.addPointAnnotation(g,l,h)}var u=n.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(s,\"-annotations .apexcharts-\").concat(s,\"-annotation-label[rel='\").concat(h,\"']\")),p=this.helpers.addBackgroundToAnno(u,g);return p&&l.insertBefore(p.node,u),i&&n.globals.memory.methodsToExec.push({context:o,id:g.id?g.id:x.randomId(),method:r,label:\"addAnnotation\",params:e}),a}},{key:\"clearAnnotations\",value:function(t){var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations\");e.globals.memory.methodsToExec.map((function(t,i){\"addText\"!==t.label&&\"addAnnotation\"!==t.label||e.globals.memory.methodsToExec.splice(i,1)})),i=x.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:\"removeAnnotation\",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(\".\".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}]),t}(),z=function(t){var e,i=t.isTimeline,a=t.ctx,s=t.seriesIndex,r=t.dataPointIndex,o=t.y1,n=t.y2,l=t.w,h=l.globals.seriesRangeStart[s][r],c=l.globals.seriesRangeEnd[s][r],d=l.globals.labels[r],g=l.config.series[s].name?l.config.series[s].name:\"\",u=l.globals.ttKeyFormatter,p=l.config.tooltip.y.title.formatter,f={w:l,seriesIndex:s,dataPointIndex:r,start:h,end:c};(\"function\"==typeof p&&(g=p(g,f)),null!==(e=l.config.series[s].data[r])&&void 0!==e&&e.x&&(d=l.config.series[s].data[r].x),i)||\"datetime\"===l.config.xaxis.type&&(d=new S(a).xLabelFormat(l.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new A(a).formatDate,w:l}));\"function\"==typeof u&&(d=u(d,f)),Number.isFinite(o)&&Number.isFinite(n)&&(h=o,c=n);var x=\"\",b=\"\",v=l.globals.colors[s];if(void 0===l.config.tooltip.x.formatter)if(\"datetime\"===l.config.xaxis.type){var m=new A(a);x=m.formatDate(m.getDate(h),l.config.tooltip.x.format),b=m.formatDate(m.getDate(c),l.config.tooltip.x.format)}else x=h,b=c;else x=l.config.tooltip.x.formatter(h),b=l.config.tooltip.x.formatter(c);return{start:h,end:c,startVal:x,endVal:b,ylabel:d,color:v,seriesName:g}},X=function(t){var e=t.color,i=t.seriesName,a=t.ylabel,s=t.start,r=t.end,o=t.seriesIndex,n=t.dataPointIndex,l=t.ctx.tooltip.tooltipLabels.getFormatters(o);s=l.yLbFormatter(s),r=l.yLbFormatter(r);var h=l.yLbFormatter(t.w.globals.series[o][n]),c='\\n '.concat(s,'\\n - \\n ').concat(r,\"\\n \");return'
'+(i||\"\")+'
'+a+\": \"+(t.w.globals.comboCharts?\"rangeArea\"===t.w.config.series[o].type||\"rangeBar\"===t.w.config.series[o].type?c:\"\".concat(h,\"\"):c)+\"
\"},E=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:\"hideYAxis\",value:function(){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text=\"\",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0}},{key:\"line\",value:function(){return{chart:{animations:{easing:\"swing\"}},dataLabels:{enabled:!1},stroke:{width:5,curve:\"straight\"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:\"sparkline\",value:function(t){this.hideYAxis();return x.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:\"bar\",value:function(){return{chart:{stacked:!1,animations:{easing:\"swing\"}},plotOptions:{bar:{dataLabels:{position:\"center\"}}},dataLabels:{style:{colors:[\"#fff\"]},background:{enabled:!1}},stroke:{width:0,lineCap:\"round\"},fill:{opacity:.85},legend:{markers:{shape:\"square\",radius:2,size:8}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:\"between\",crosshairs:{width:\"barWidth\",position:\"back\",fill:{type:\"gradient\"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:\"funnel\",value:function(){return this.hideYAxis(),e(e({},this.bar()),{},{chart:{animations:{easing:\"linear\",speed:800,animateGradually:{enabled:!1}}},plotOptions:{bar:{horizontal:!0,borderRadiusApplication:\"around\",borderRadius:0,dataLabels:{position:\"center\"}}},grid:{show:!1,padding:{left:0,right:0}},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}}})}},{key:\"candlestick\",value:function(){var t=this;return{stroke:{width:1,colors:[\"#333\"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,[\"Open\",\"High\",\"\",\"Low\",\"Close\"],\"candlestick\")}},states:{active:{filter:{type:\"none\"}}},xaxis:{crosshairs:{width:1}}}}},{key:\"boxPlot\",value:function(){var t=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:[\"#24292e\"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,[\"Minimum\",\"Q1\",\"Median\",\"Q3\",\"Maximum\"],\"boxPlot\")}},markers:{size:5,strokeWidth:1,strokeColors:\"#111\"},xaxis:{crosshairs:{width:1}}}}},{key:\"rangeBar\",value:function(){return{chart:{animations:{animateGradually:!1}},stroke:{width:0,lineCap:\"square\"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:\"center\"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=function(){var t=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-t};return s.globals.comboCharts?\"rangeBar\"===s.config.series[i].type||\"rangeArea\"===s.config.series[i].type?r():t:r()},background:{enabled:!1},style:{colors:[\"#fff\"]}},markers:{size:10},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var i=z(e(e({},t),{},{isTimeline:!0})),a=i.color,s=i.seriesName,r=i.ylabel,o=i.startVal,n=i.endVal;return X(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t):function(t){var i=z(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return X(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}},xaxis:{tickPlacement:\"between\",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:\"dumbbell\",value:function(t){var e,i;return null!==(e=t.plotOptions.bar)&&void 0!==e&&e.barHeight||(t.plotOptions.bar.barHeight=2),null!==(i=t.plotOptions.bar)&&void 0!==i&&i.columnWidth||(t.plotOptions.bar.columnWidth=2),t}},{key:\"area\",value:function(){return{stroke:{width:4,fill:{type:\"solid\",gradient:{inverseColors:!1,shade:\"light\",type:\"vertical\",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:\"gradient\",gradient:{inverseColors:!1,shade:\"light\",type:\"vertical\",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:\"rangeArea\",value:function(){return{stroke:{curve:\"straight\",width:0},fill:{type:\"solid\",opacity:.6},markers:{size:0},states:{hover:{filter:{type:\"none\"}},active:{filter:{type:\"none\"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(t){return function(t){var i=z(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return X(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}}}}},{key:\"brush\",value:function(t){return x.extend(t,{chart:{toolbar:{autoSelected:\"selection\",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:\"stacked100\",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),\"bar\"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return\"number\"==typeof t&&t?t.toFixed(0)+\"%\":t}),t}},{key:\"stackedBars\",value:function(){var t=this.bar();return e(e({},t),{},{plotOptions:e(e({},t.plotOptions),{},{bar:e(e({},t.plotOptions.bar),{},{borderRadiusApplication:\"end\",borderRadiusWhenStacked:\"last\"})})})}},{key:\"convertCatToNumeric\",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:\"convertCatToNumericXaxis\",value:function(t,e,i){t.xaxis.type=\"numeric\",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return x.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return Array.isArray(t)?t:String(t)}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return x.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||\"dataPoints\",t}},{key:\"bubble\",value:function(){return{dataLabels:{style:{colors:[\"#fff\"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:\"solid\",gradient:{shade:\"light\",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:\"scatter\",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:\"heatmap\",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:[\"#fff\"]}},stroke:{colors:[\"#fff\"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:\"top\",markers:{shape:\"square\",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:\"treemap\",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:[\"#fff\"]}},stroke:{show:!0,width:2,colors:[\"#fff\"]},legend:{show:!1},fill:{gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:\"pie\",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},style:{colors:[\"#fff\"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:[\"#fff\"]},fill:{opacity:1,gradient:{shade:\"light\",stops:[0,100]}},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"}}}},{key:\"donut\",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},style:{colors:[\"#fff\"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:[\"#fff\"]},fill:{opacity:1,gradient:{shade:\"light\",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"}}}},{key:\"polarArea\",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+\"%\"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:\"dark\",fillSeriesColor:!0},legend:{position:\"right\"}}}},{key:\"radar\",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:\"11px\"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(t){return t},style:{colors:[\"#a8a8a8\"],fontSize:\"11px\"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:\"radialBar\",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:\"dark\",shadeIntensity:.4,inverseColors:!1,type:\"diagonal2\",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:\"right\"},tooltip:{enabled:!1,fillSeriesColor:!0}}}},{key:\"_getBoxTooltip\",value:function(t,e,i,a,s){var r=t.globals.seriesCandleO[e][i],o=t.globals.seriesCandleH[e][i],n=t.globals.seriesCandleM[e][i],l=t.globals.seriesCandleL[e][i],h=t.globals.seriesCandleC[e][i];return t.config.series[e].type&&t.config.series[e].type!==s?'
\\n '.concat(t.config.series[e].name?t.config.series[e].name:\"series-\"+(e+1),\": \").concat(t.globals.series[e][i],\"\\n
\"):'
')+\"
\".concat(a[0],': ')+r+\"
\"+\"
\".concat(a[1],': ')+o+\"
\"+(n?\"
\".concat(a[2],': ')+n+\"
\":\"\")+\"
\".concat(a[3],': ')+l+\"
\"+\"
\".concat(a[4],': ')+h+\"
\"}}]),t}(),Y=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:\"init\",value:function(t){var e=t.responsiveOverride,a=this.opts,s=new I,r=new E(a);this.chartType=a.chart.type,a=this.extendYAxis(a),a=this.extendAnnotations(a);var o=s.init(),n={};if(a&&\"object\"===i(a)){var l,h,c,d,g,u,p,f,b={};b=-1!==[\"line\",\"area\",\"bar\",\"candlestick\",\"boxPlot\",\"rangeBar\",\"rangeArea\",\"bubble\",\"scatter\",\"heatmap\",\"treemap\",\"pie\",\"polarArea\",\"donut\",\"radar\",\"radialBar\"].indexOf(a.chart.type)?r[a.chart.type]():r.line(),null!==(l=a.plotOptions)&&void 0!==l&&null!==(h=l.bar)&&void 0!==h&&h.isFunnel&&(b=r.funnel()),a.chart.stacked&&\"bar\"===a.chart.type&&(b=r.stackedBars()),null!==(c=a.chart.brush)&&void 0!==c&&c.enabled&&(b=r.brush(b)),a.chart.stacked&&\"100%\"===a.chart.stackType&&(a=r.stacked100(a)),null!==(d=a.plotOptions)&&void 0!==d&&null!==(g=d.bar)&&void 0!==g&&g.isDumbbell&&(a=r.dumbbell(a)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(a),a.xaxis=a.xaxis||window.Apex.xaxis||{},e||(a.xaxis.convertedCatToNumeric=!1),(null!==(u=(a=this.checkForCatToNumericXAxis(this.chartType,b,a)).chart.sparkline)&&void 0!==u&&u.enabled||null!==(p=window.Apex.chart)&&void 0!==p&&null!==(f=p.sparkline)&&void 0!==f&&f.enabled)&&(b=r.sparkline(b)),n=x.extend(o,b)}var v=x.extend(n,window.Apex);return o=x.extend(v,a),o=this.handleUserInputErrors(o)}},{key:\"checkForCatToNumericXAxis\",value:function(t,e,i){var a,s,r=new E(i),o=(\"bar\"===t||\"boxPlot\"===t)&&(null===(a=i.plotOptions)||void 0===a||null===(s=a.bar)||void 0===s?void 0:s.horizontal),n=\"pie\"===t||\"polarArea\"===t||\"donut\"===t||\"radar\"===t||\"radialBar\"===t||\"heatmap\"===t,l=\"datetime\"!==i.xaxis.type&&\"numeric\"!==i.xaxis.type,h=i.xaxis.tickPlacement?i.xaxis.tickPlacement:e.xaxis&&e.xaxis.tickPlacement;return o||n||!l||\"between\"===h||(i=r.convertCatToNumeric(i)),i}},{key:\"extendYAxis\",value:function(t,e){var i=new I;(void 0===t.yaxis||!t.yaxis||Array.isArray(t.yaxis)&&0===t.yaxis.length)&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=x.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[x.extend(i.yAxis,t.yaxis)]:t.yaxis=x.extendArray(t.yaxis,i.yAxis);var a=!1;t.yaxis.forEach((function(t){t.logarithmic&&(a=!0)}));var s=t.series;return e&&!s&&(s=e.config.series),a&&s.length!==t.yaxis.length&&s.length&&(t.yaxis=s.map((function(e,a){if(e.name||(s[a].name=\"series-\".concat(a+1)),t.yaxis[a])return t.yaxis[a].seriesName=s[a].name,t.yaxis[a];var r=x.extend(i.yAxis,t.yaxis[0]);return r.show=!1,r}))),a&&s.length>1&&s.length!==t.yaxis.length&&console.warn(\"A multi-series logarithmic chart should have equal number of series and y-axes\"),t}},{key:\"extendAnnotations\",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:\"extendYAxisAnnotations\",value:function(t){var e=new I;return t.annotations.yaxis=x.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:\"extendXAxisAnnotations\",value:function(t){var e=new I;return t.annotations.xaxis=x.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:\"extendPointAnnotations\",value:function(t){var e=new I;return t.annotations.points=x.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:\"checkForDarkTheme\",value:function(t){t.theme&&\"dark\"===t.theme.mode&&(t.tooltip||(t.tooltip={}),\"light\"!==t.tooltip.theme&&(t.tooltip.theme=\"dark\"),t.chart.foreColor||(t.chart.foreColor=\"#f6f7f8\"),t.chart.background||(t.chart.background=\"#424242\"),t.theme.palette||(t.theme.palette=\"palette4\"))}},{key:\"handleUserInputErrors\",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error(\"tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.\");if(\"bar\"===e.chart.type&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error(\"Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false\");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return\"bar\"!==e.chart.type&&\"rangeBar\"!==e.chart.type||e.tooltip.shared&&\"barWidth\"===e.xaxis.crosshairs.width&&e.series.length>1&&(e.xaxis.crosshairs.width=\"tickWidth\"),\"candlestick\"!==e.chart.type&&\"boxPlot\"!==e.chart.type||e.yaxis[0].reversed&&(console.warn(\"Reversed y-axis in \".concat(e.chart.type,\" chart is not supported.\")),e.yaxis[0].reversed=!1),e}}]),t}(),F=function(){function t(){a(this,t)}return r(t,[{key:\"initGlobalVars\",value:function(t){t.series=[],t.seriesCandleO=[],t.seriesCandleH=[],t.seriesCandleM=[],t.seriesCandleL=[],t.seriesCandleC=[],t.seriesRangeStart=[],t.seriesRangeEnd=[],t.seriesRange=[],t.seriesPercent=[],t.seriesGoals=[],t.seriesX=[],t.seriesZ=[],t.seriesNames=[],t.seriesTotals=[],t.seriesLog=[],t.seriesColors=[],t.stackedSeriesTotals=[],t.seriesXvalues=[],t.seriesYvalues=[],t.labels=[],t.hasXaxisGroups=!1,t.groups=[],t.barGroups=[],t.hasSeriesGroups=!1,t.seriesGroups=[],t.categoryLabels=[],t.timescaleLabels=[],t.noLabelsProvided=!1,t.resizeTimer=null,t.selectionResizeTimer=null,t.delayedElements=[],t.pointsArray=[],t.dataLabelsRects=[],t.isXNumeric=!1,t.skipLastTimelinelabel=!1,t.skipFirstTimelinelabel=!1,t.isDataXYZ=!1,t.isMultiLineX=!1,t.isMultipleYAxis=!1,t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE,t.minYArr=[],t.maxYArr=[],t.maxX=-Number.MAX_VALUE,t.minX=Number.MAX_VALUE,t.initialMaxX=-Number.MAX_VALUE,t.initialMinX=Number.MAX_VALUE,t.maxDate=0,t.minDate=Number.MAX_VALUE,t.minZ=Number.MAX_VALUE,t.maxZ=-Number.MAX_VALUE,t.minXDiff=Number.MAX_VALUE,t.yAxisScale=[],t.xAxisScale=null,t.xAxisTicksPositions=[],t.yLabelsCoords=[],t.yTitleCoords=[],t.barPadForNumericAxis=0,t.padHorizontal=0,t.xRange=0,t.yRange=[],t.zRange=0,t.dataPoints=0,t.xTickAmount=0,t.multiAxisTickAmount=0}},{key:\"globalVars\",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:\"ontouchstart\"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],goldenPadding:35,invalidLogScale:!1,ignoreYAxisIndexes:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:\"zoom\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:\"pan\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:\"selection\"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:\"http://www.w3.org/2000/svg\",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null,niceScaleAllowedMagMsd:[[1,1,2,5,5,5,10,10,10,10,10],[1,1,2,5,5,5,10,10,10,10,10]],niceScaleDefaultTicks:[1,2,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,12,12,12,12,12,12,12,12,12,24],seriesYAxisMap:[],seriesYAxisReverseMap:[]}}},{key:\"init\",value:function(t){var e=this.globalVars(t);return this.initGlobalVars(e),e.initialConfig=x.extend({},t),e.initialSeries=x.clone(t.series),e.lastXAxis=x.clone(e.initialConfig.xaxis),e.lastYAxis=x.clone(e.initialConfig.yaxis),e}}]),t}(),R=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:\"init\",value:function(){var t=new Y(this.opts).init({responsiveOverride:!1});return{config:t,globals:(new F).init(t)}}}]),t}(),H=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0}return r(t,[{key:\"clippedImgArea\",value:function(t){var e=this.w,i=e.config,a=parseInt(e.globals.gridWidth,10),s=parseInt(e.globals.gridHeight,10),r=a>s?a:s,o=t.image,n=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(n=i.fill.image.width+1,l=i.fill.image.height):(n=r+1,l=r):(n=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,\"pattern\");m.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:\"userSpaceOnUse\",width:n+\"px\",height:l+\"px\"});var c=document.createElementNS(e.globals.SVGNS,\"image\");h.appendChild(c),c.setAttributeNS(window.SVG.xlink,\"href\",o),m.setAttrs(c,{x:0,y:0,preserveAspectRatio:\"none\",width:n+\"px\",height:l+\"px\"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:\"getSeriesIndex\",value:function(t){var e=this.w,i=e.config.chart.type;return(\"bar\"===i||\"rangeBar\"===i)&&e.config.plotOptions.bar.distributed||\"heatmap\"===i||\"treemap\"===i?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:\"fillPath\",value:function(t){var e=this.w;this.opts=t;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var o=this.getFillColors()[this.seriesIndex];void 0!==e.globals.seriesColors[this.seriesIndex]&&(o=e.globals.seriesColors[this.seriesIndex]),\"function\"==typeof o&&(o=o({seriesIndex:this.seriesIndex,dataPointIndex:t.dataPointIndex,value:t.value,w:e}));var n=t.fillType?t.fillType:this.getFillType(this.seriesIndex),l=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;t.color&&(o=t.color),o||(o=\"#fff\",console.warn(\"undefined color - ApexCharts\"));var h=o;if(-1===o.indexOf(\"rgb\")?o.length<9&&(h=x.hexToRgba(o,l)):o.indexOf(\"rgba\")>-1&&(l=x.getOpacityFromRGBA(o)),t.opacity&&(l=t.opacity),\"pattern\"===n&&(a=this.handlePatternFill({fillConfig:t.fillConfig,patternFill:a,fillColor:o,fillOpacity:l,defaultColor:h})),\"gradient\"===n&&(s=this.handleGradientFill({fillConfig:t.fillConfig,fillColor:o,fillOpacity:l,i:this.seriesIndex})),\"image\"===n){var c=r.fill.image.src,d=t.patternID?t.patternID:\"\";this.clippedImgArea({opacity:l,image:Array.isArray(c)?t.seriesNumber-1&&(u=x.getOpacityFromRGBA(g));var p=void 0===o.gradient.opacityTo?a:Array.isArray(o.gradient.opacityTo)?o.gradient.opacityTo[r]:o.gradient.opacityTo;if(void 0===o.gradient.gradientToColors||0===o.gradient.gradientToColors.length)n=\"dark\"===o.gradient.shade?c.shadeColor(-1*parseFloat(o.gradient.shadeIntensity),i.indexOf(\"rgb\")>-1?x.rgb2hex(i):i):c.shadeColor(parseFloat(o.gradient.shadeIntensity),i.indexOf(\"rgb\")>-1?x.rgb2hex(i):i);else if(o.gradient.gradientToColors[l.seriesNumber]){var f=o.gradient.gradientToColors[l.seriesNumber];n=f,f.indexOf(\"rgba\")>-1&&(p=x.getOpacityFromRGBA(f))}else n=i;if(o.gradient.gradientFrom&&(g=o.gradient.gradientFrom),o.gradient.gradientTo&&(n=o.gradient.gradientTo),o.gradient.inverseColors){var b=g;g=n,n=b}return g.indexOf(\"rgb\")>-1&&(g=x.rgb2hex(g)),n.indexOf(\"rgb\")>-1&&(n=x.rgb2hex(n)),h.drawGradient(d,g,n,u,p,l.size,o.gradient.stops,o.gradient.colorStops,r)}}]),t}(),D=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"setGlobalMarkerSize\",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length4&&void 0!==arguments[4]&&arguments[4],o=this.w,n=e,l=t,h=null,c=new m(this.ctx),d=o.config.markers.discrete&&o.config.markers.discrete.length;if((o.globals.markers.size[e]>0||r||d)&&(h=c.group({class:r||d?\"\":\"apexcharts-series-markers\"})).attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(o.globals.cuid,\")\")),Array.isArray(l.x))for(var g=0;g0:o.config.markers.size>0)||r||d){x.isNumber(l.y[g])?p+=\" w\".concat(x.randomId()):p=\"apexcharts-nullpoint\";var f=this.getMarkerConfig({cssClass:p,seriesIndex:e,dataPointIndex:u});o.config.series[n].data[u]&&(o.config.series[n].data[u].fillColor&&(f.pointFillColor=o.config.series[n].data[u].fillColor),o.config.series[n].data[u].strokeColor&&(f.pointStrokeColor=o.config.series[n].data[u].strokeColor)),a&&(f.pSize=a),(l.x[g]<0||l.x[g]>o.globals.gridWidth||l.y[g]<-o.globals.markers.largestSize||l.y[g]>o.globals.gridHeight+o.globals.markers.largestSize)&&(f.pSize=0),(s=c.drawMarker(l.x[g],l.y[g],f)).attr(\"rel\",u),s.attr(\"j\",u),s.attr(\"index\",e),s.node.setAttribute(\"default-marker-size\",f.pSize),new v(this.ctx).setSelectionFilter(s,e,u),this.addEvents(s),h&&h.add(s)}else void 0===o.globals.pointsArray[e]&&(o.globals.pointsArray[e]=[]),o.globals.pointsArray[e].push([l.x[g],l.y[g]])}return h}},{key:\"getMarkerConfig\",value:function(t){var e=t.cssClass,i=t.seriesIndex,a=t.dataPointIndex,s=void 0===a?null:a,r=t.finishRadius,o=void 0===r?null:r,n=this.w,l=this.getMarkerStyle(i),h=n.globals.markers.size[i],c=n.config.markers;return null!==s&&c.discrete.length&&c.discrete.map((function(t){t.seriesIndex===i&&t.dataPointIndex===s&&(l.pointStrokeColor=t.strokeColor,l.pointFillColor=t.fillColor,h=t.size,l.pointShape=t.shape)})),{pSize:null===o?h:o,pRadius:c.radius,width:Array.isArray(c.width)?c.width[i]:c.width,height:Array.isArray(c.height)?c.height[i]:c.height,pointStrokeWidth:Array.isArray(c.strokeWidth)?c.strokeWidth[i]:c.strokeWidth,pointStrokeColor:l.pointStrokeColor,pointFillColor:l.pointFillColor,shape:l.pointShape||(Array.isArray(c.shape)?c.shape[i]:c.shape),class:e,pointStrokeOpacity:Array.isArray(c.strokeOpacity)?c.strokeOpacity[i]:c.strokeOpacity,pointStrokeDashArray:Array.isArray(c.strokeDashArray)?c.strokeDashArray[i]:c.strokeDashArray,pointFillOpacity:Array.isArray(c.fillOpacity)?c.fillOpacity[i]:c.fillOpacity,seriesIndex:i}}},{key:\"addEvents\",value:function(t){var e=this.w,i=new m(this.ctx);t.node.addEventListener(\"mouseenter\",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener(\"mouseleave\",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener(\"mousedown\",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener(\"click\",e.config.markers.onClick),t.node.addEventListener(\"dblclick\",e.config.markers.onDblClick),t.node.addEventListener(\"touchstart\",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:\"getMarkerStyle\",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[t]:a,pointFillColor:Array.isArray(i)?i[t]:i}}}]),t}(),O=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled}return r(t,[{key:\"draw\",value:function(t,e,i){var a=this.w,s=new m(this.ctx),r=i.realIndex,o=i.pointsPos,n=i.zRatio,l=i.elParent,h=s.group({class:\"apexcharts-series-markers apexcharts-series-\".concat(a.config.chart.type)});if(h.attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(a.globals.cuid,\")\")),Array.isArray(o.x))for(var c=0;cf.maxBubbleRadius&&(p=f.maxBubbleRadius)}a.config.chart.animations.enabled||(u=p);var x=o.x[c],b=o.y[c];if(u=u||0,null!==b&&void 0!==a.globals.series[r][d]||(g=!1),g){var v=this.drawPoint(x,b,u,p,r,d,e);h.add(v)}l.add(h)}}},{key:\"drawPoint\",value:function(t,e,i,a,s,r,o){var n=this.w,l=s,h=new b(this.ctx),c=new v(this.ctx),d=new H(this.ctx),g=new D(this.ctx),u=new m(this.ctx),p=g.getMarkerConfig({cssClass:\"apexcharts-marker\",seriesIndex:l,dataPointIndex:r,finishRadius:\"bubble\"===n.config.chart.type||n.globals.comboCharts&&n.config.series[s]&&\"bubble\"===n.config.series[s].type?a:null});a=p.pSize;var f,x=d.fillPath({seriesNumber:s,dataPointIndex:r,color:p.pointFillColor,patternUnits:\"objectBoundingBox\",value:n.globals.series[s][o]});if(\"circle\"===p.shape?f=u.drawCircle(i):\"square\"!==p.shape&&\"rect\"!==p.shape||(f=u.drawRect(0,0,p.width-p.pointStrokeWidth/2,p.height-p.pointStrokeWidth/2,p.pRadius)),n.config.series[l].data[r]&&n.config.series[l].data[r].fillColor&&(x=n.config.series[l].data[r].fillColor),f.attr({x:t-p.width/2-p.pointStrokeWidth/2,y:e-p.height/2-p.pointStrokeWidth/2,cx:t,cy:e,fill:x,\"fill-opacity\":p.pointFillOpacity,stroke:p.pointStrokeColor,r:a,\"stroke-width\":p.pointStrokeWidth,\"stroke-dasharray\":p.pointStrokeDashArray,\"stroke-opacity\":p.pointStrokeOpacity}),n.config.chart.dropShadow.enabled){var y=n.config.chart.dropShadow;c.dropShadow(f,y,s)}if(!this.initialAnim||n.globals.dataChanged||n.globals.resized)n.globals.animationEnded=!0;else{var w=n.config.chart.animations.speed;h.animateMarker(f,0,\"circle\"===p.shape?a:{width:p.width,height:p.height},w,n.globals.easing,(function(){window.setTimeout((function(){h.animationCompleted(f)}),100)}))}if(n.globals.dataChanged&&\"circle\"===p.shape)if(this.dynamicAnim){var k,A,S,C,L=n.config.chart.animations.dynamicAnimation.speed;null!=(C=n.globals.previousPaths[s]&&n.globals.previousPaths[s][o])&&(k=C.x,A=C.y,S=void 0!==C.r?C.r:a);for(var P=0;Pn.globals.gridHeight+d&&(e=n.globals.gridHeight+d/2),void 0===n.globals.dataLabelsRects[a]&&(n.globals.dataLabelsRects[a]=[]),n.globals.dataLabelsRects[a].push({x:t,y:e,width:c,height:d});var g=n.globals.dataLabelsRects[a].length-2,u=void 0!==n.globals.lastDrawnDataLabelsIndexes[a]?n.globals.lastDrawnDataLabelsIndexes[a][n.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(void 0!==n.globals.dataLabelsRects[a][g]){var p=n.globals.dataLabelsRects[a][u];(t>p.x+p.width||e>p.y+p.height||e+de.globals.gridWidth+f.textRects.width+30)&&(n=\"\");var x=e.globals.dataLabels.style.colors[r];((\"bar\"===e.config.chart.type||\"rangeBar\"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(x=e.globals.dataLabels.style.colors[o]),\"function\"==typeof x&&(x=x({series:e.globals.series,seriesIndex:r,dataPointIndex:o,w:e})),g&&(x=g);var b=d.offsetX,y=d.offsetY;if(\"bar\"!==e.config.chart.type&&\"rangeBar\"!==e.config.chart.type||(b=0,y=0),f.drawnextLabel){var w=i.drawText({width:100,height:parseInt(d.style.fontSize,10),x:a+b,y:s+y,foreColor:x,textAnchor:l||d.textAnchor,text:n,fontSize:h||d.style.fontSize,fontFamily:d.style.fontFamily,fontWeight:d.style.fontWeight||\"normal\"});if(w.attr({class:\"apexcharts-datalabel\",cx:a,cy:s}),d.dropShadow.enabled){var k=d.dropShadow;new v(this.ctx).dropShadow(w,k)}c.add(w),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(o)}}}},{key:\"addBackgroundToDataLabel\",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,o=e.width,n=e.height,l=new m(this.ctx).drawRect(e.x-s,e.y-r/2,o+2*s,n+r,a.borderRadius,\"transparent\"===i.config.chart.background?\"#fff\":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);a.dropShadow.enabled&&new v(this.ctx).dropShadow(l,a.dropShadow);return l}},{key:\"dataLabelsBackground\",value:function(){var t=this.w;if(\"bubble\"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-datalabels text\"),i=0;i0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=x.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:\"emptyCollapsedSeries\",value:function(t){for(var e=this.w,i=0;i-1&&(t[i].data=[]);return t}},{key:\"toggleSeriesOnHover\",value:function(t,e){var i=this.w;e||(e=t.target);var a=i.globals.dom.baseEl.querySelectorAll(\".apexcharts-series, .apexcharts-datalabels, .apexcharts-yaxis\");if(\"mousemove\"===t.type){var s=parseInt(e.getAttribute(\"rel\"),10)-1,r=null,o=null,n=null;if(i.globals.axisCharts||\"radialBar\"===i.config.chart.type)if(i.globals.axisCharts){r=i.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(s,\"']\")),o=i.globals.dom.baseEl.querySelector(\".apexcharts-datalabels[data\\\\:realIndex='\".concat(s,\"']\"));var l=i.globals.seriesYAxisReverseMap[s];n=i.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(l,\"']\"))}else r=i.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(s+1,\"']\"));else r=i.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(s+1,\"'] path\"));for(var h=0;h=t.from&&a<=t.to&&s[e].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[o])}else\"mouseout\"===t.type&&r(\"remove\")}},{key:\"getActiveConfigSeriesIndex\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"asc\",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1)for(var s=i.config.series.map((function(t,a){return t.data&&t.data.length>0&&-1===i.globals.collapsedSeriesIndices.indexOf(a)&&(!i.globals.comboCharts||0===e.length||e.length&&e.indexOf(i.config.series[a].type)>-1)?a:-1})),r=\"asc\"===t?0:s.length-1;\"asc\"===t?r=0;\"asc\"===t?r++:r--)if(-1!==s[r]){a=s[r];break}return a}},{key:\"getBarSeriesIndices\",value:function(){return this.w.globals.comboCharts?this.w.config.series.map((function(t,e){return\"bar\"===t.type||\"column\"===t.type?e:-1})).filter((function(t){return-1!==t})):this.w.config.series.map((function(t,e){return e}))}},{key:\"getPreviousPaths\",value:function(){var t=this.w;function e(e,i,a){for(var s=e[i].childNodes,r={type:a,paths:[],realIndex:e[i].getAttribute(\"data:realIndex\")},o=0;o0)for(var a=function(e){for(var i=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(t.config.chart.type,\" .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] rect\")),a=[],s=function(t){var e=function(e){return i[t].getAttribute(e)},s={x:parseFloat(e(\"x\")),y:parseFloat(e(\"y\")),width:parseFloat(e(\"width\")),height:parseFloat(e(\"height\"))};a.push({rect:s,color:i[t].getAttribute(\"color\")})},r=0;r0)for(var a=0;a0?t:[]}));return t}}]),t}(),B=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new y(this.ctx)}return r(t,[{key:\"isMultiFormat\",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:\"isFormatXY\",value:function(){var t=this.w.config.series.slice(),e=new W(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:\"isFormat2DArray\",value:function(){var t=this.w.config.series.slice(),e=new W(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:\"handleFormat2DArray\",value:function(t,e){for(var i=this.w.config,a=this.w.globals,s=\"boxPlot\"===i.chart.type||\"boxPlot\"===i.series[e].type,r=0;r=5?this.twoDSeries.push(x.parseNumber(t[e].data[r][4])):this.twoDSeries.push(x.parseNumber(t[e].data[r][1])),a.dataFormatXNumeric=!0),\"datetime\"===i.xaxis.type){var o=new Date(t[e].data[r][0]);o=new Date(o).getTime(),this.twoDSeriesX.push(o)}else this.twoDSeriesX.push(t[e].data[r][0]);for(var n=0;n-1&&(r=this.activeSeriesIndex);for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:this.ctx,s=this.w.config,r=this.w.globals,o=new A(a),n=s.labels.length>0?s.labels.slice():s.xaxis.categories.slice();if(r.isRangeBar=\"rangeBar\"===s.chart.type&&r.isBarHorizontal,r.hasXaxisGroups=\"category\"===s.xaxis.type&&s.xaxis.group.groups.length>0,r.hasXaxisGroups&&(r.groups=s.xaxis.group.groups),t.forEach((function(t,e){void 0!==t.name?r.seriesNames.push(t.name):r.seriesNames.push(\"series-\"+parseInt(e+1,10))})),r.hasSeriesGroups=null===(e=t[0])||void 0===e?void 0:e.group,r.hasSeriesGroups){var l=[],h=u(new Set(t.map((function(t){return t.group}))));t.forEach((function(t,e){var i=h.indexOf(t.group);l[i]||(l[i]=[]),l[i].push(r.seriesNames[e])})),r.seriesGroups=l}for(var c=function(){for(var t=0;t0&&(this.twoDSeriesX=n,r.seriesX.push(this.twoDSeriesX))),r.labels.push(this.twoDSeriesX);var g=t[d].data.map((function(t){return x.parseNumber(t)}));r.series.push(g)}r.seriesZ.push(this.threeDSeries),void 0!==t[d].color?r.seriesColors.push(t[d].color):r.seriesColors.push(void 0)}return this.w}},{key:\"parseDataNonAxisCharts\",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var a=0;a0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory){if(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=Array.from(new Set(i.labels.map(JSON.stringify)),JSON.parse)),e.xaxis.convertedCatToNumeric)new E(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t)}else this._generateExternalLabels(t)}},{key:\"_generateExternalLabels\",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)if(this.isFormatXY())for(var s=i.series.map((function(t,e){return t.data.filter((function(t,e,i){return i.findIndex((function(e){return e.x===t.x}))===e}))})),r=s.reduce((function(t,e,i,a){return a[t].length>e.length?t:i}),0),o=0;o0&&s==i.length&&e.push(a)})),t.globals.ignoreYAxisIndexes=e.map((function(t){return t}))}}]),t}(),G=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"scaleSvgNode\",value:function(t,e){var i=parseFloat(t.getAttributeNS(null,\"width\")),a=parseFloat(t.getAttributeNS(null,\"height\"));t.setAttributeNS(null,\"width\",i*e),t.setAttributeNS(null,\"height\",a*e),t.setAttributeNS(null,\"viewBox\",\"0 0 \"+i+\" \"+a)}},{key:\"fixSvgStringForIe11\",value:function(t){if(!x.isIE11())return t.replace(/ /g,\" \");var e=0,i=t.replace(/xmlns=\"http:\\/\\/www.w3.org\\/2000\\/svg\"/g,(function(t){return 2===++e?'xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:svgjs=\"http://svgjs.dev\"':t}));return i=(i=i.replace(/xmlns:NS\\d+=\"\"/g,\"\")).replace(/NS\\d+:(\\w+:\\w+=\")/g,\"$1\")}},{key:\"getSvgString\",value:function(t){null==t&&(t=1);var e=this.w.globals.dom.Paper.svg();if(1!==t){var i=this.w.globals.dom.Paper.node.cloneNode(!0);this.scaleSvgNode(i,t),e=(new XMLSerializer).serializeToString(i)}return this.fixSvgStringForIe11(e)}},{key:\"cleanup\",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName(\"apexcharts-xcrosshairs\"),i=t.globals.dom.baseEl.getElementsByClassName(\"apexcharts-ycrosshairs\"),a=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-zoom-rect, .apexcharts-selection-rect\");Array.prototype.forEach.call(a,(function(t){t.setAttribute(\"width\",0)})),e&&e[0]&&(e[0].setAttribute(\"x\",-500),e[0].setAttribute(\"x1\",-500),e[0].setAttribute(\"x2\",-500)),i&&i[0]&&(i[0].setAttribute(\"y\",-100),i[0].setAttribute(\"y1\",-100),i[0].setAttribute(\"y2\",-100))}},{key:\"svgUrl\",value:function(){this.cleanup();var t=this.getSvgString(),e=new Blob([t],{type:\"image/svg+xml;charset=utf-8\"});return URL.createObjectURL(e)}},{key:\"dataURI\",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t?t.scale||t.width/a.globals.svgWidth:1;e.cleanup();var r=document.createElement(\"canvas\");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var o=\"transparent\"===a.config.chart.background?\"#fff\":a.config.chart.background,n=r.getContext(\"2d\");n.fillStyle=o,n.fillRect(0,0,r.width*s,r.height*s);var l=e.getSvgString(s);if(window.canvg&&x.isIE11()){var h=window.canvg.Canvg.fromString(n,l,{ignoreClear:!0,ignoreDimensions:!0});h.start();var c=r.msToBlob();h.stop(),i({blob:c})}else{var d=\"data:image/svg+xml,\"+encodeURIComponent(l),g=new Image;g.crossOrigin=\"anonymous\",g.onload=function(){if(n.drawImage(g,0,0),r.msToBlob){var t=r.msToBlob();i({blob:t})}else{var e=r.toDataURL(\"image/png\");i({imgURI:e})}},g.src=d}}))}},{key:\"exportToSVG\",value:function(){this.triggerDownload(this.svgUrl(),this.w.config.chart.toolbar.export.svg.filename,\".svg\")}},{key:\"exportToPng\",value:function(){var t=this;this.dataURI().then((function(e){var i=e.imgURI,a=e.blob;a?navigator.msSaveOrOpenBlob(a,t.w.globals.chartID+\".png\"):t.triggerDownload(i,t.w.config.chart.toolbar.export.png.filename,\".png\")}))}},{key:\"exportToCSV\",value:function(t){var e=this,i=t.series,a=t.fileName,s=t.columnDelimiter,r=void 0===s?\",\":s,o=t.lineDelimiter,n=void 0===o?\"\\n\":o,l=this.w;i||(i=l.config.series);var h,c,d=[],g=[],p=\"\",f=l.globals.series.map((function(t,e){return-1===l.globals.collapsedSeriesIndices.indexOf(e)?t:[]})),b=function(t){return\"datetime\"===l.config.xaxis.type&&String(t).length>=10},v=Math.max.apply(Math,u(i.map((function(t){return t.data?t.data.length:0})))),m=new B(this.ctx),y=new C(this.ctx),w=function(t){var i=\"\";if(l.globals.axisCharts){if(\"category\"===l.config.xaxis.type||l.config.xaxis.convertedCatToNumeric)if(l.globals.isBarHorizontal){var a=l.globals.yLabelFormatters[0],s=new W(e.ctx).getActiveConfigSeriesIndex();i=a(l.globals.labels[t],{seriesIndex:s,dataPointIndex:t,w:l})}else i=y.getLabel(l.globals.labels,l.globals.timescaleLabels,0,t).text;\"datetime\"===l.config.xaxis.type&&(l.config.xaxis.categories.length?i=l.config.xaxis.categories[t]:l.config.labels.length&&(i=l.config.labels[t]))}else i=l.config.labels[t];return Array.isArray(i)&&(i=i.join(\" \")),x.isNumber(i)?i:i.split(r).join(\"\")},k=function(t,e){if(d.length&&0===e&&g.push(d.join(r)),t.data){t.data=t.data.length&&t.data||u(Array(v)).map((function(){return\"\"}));for(var a=0;a0&&!s.globals.isBarHorizontal&&(this.xaxisLabels=s.globals.timescaleLabels.slice()),s.config.xaxis.overwriteCategories&&(this.xaxisLabels=s.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],\"top\"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight+1,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal=\"bar\"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=s.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf(\"%\")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0]}return r(t,[{key:\"drawXaxis\",value:function(){var t=this.w,e=new m(this.ctx),i=e.group({class:\"apexcharts-xaxis\",transform:\"translate(\".concat(t.config.xaxis.offsetX,\", \").concat(t.config.xaxis.offsetY,\")\")}),a=e.group({class:\"apexcharts-xaxis-texts-g\",transform:\"translate(\".concat(t.globals.translateXAxisX,\", \").concat(t.globals.translateXAxisY,\")\")});i.add(a);for(var s=[],r=0;r6&&void 0!==arguments[6]?arguments[6]:{},h=[],c=[],d=this.w,g=l.xaxisFontSize||this.xaxisFontSize,u=l.xaxisFontFamily||this.xaxisFontFamily,p=l.xaxisForeColors||this.xaxisForeColors,f=l.fontWeight||d.config.xaxis.labels.style.fontWeight,x=l.cssClass||d.config.xaxis.labels.style.cssClass,b=d.globals.padHorizontal,v=a.length,m=\"category\"===d.config.xaxis.type?d.globals.dataPoints:v;if(0===m&&v>m&&(m=v),s){var y=m>1?m-1:m;o=d.globals.gridWidth/Math.min(y,v-1),b=b+r(0,o)/2+d.config.xaxis.labels.offsetX}else o=d.globals.gridWidth/m,b=b+r(0,o)+d.config.xaxis.labels.offsetX;for(var w=function(s){var l=b-r(s,o)/2+d.config.xaxis.labels.offsetX;0===s&&1===v&&o/2===b&&1===m&&(l=d.globals.gridWidth/2);var y=n.axesUtils.getLabel(a,d.globals.timescaleLabels,l,s,h,g,t),w=28;d.globals.rotateXLabels&&t&&(w=22),d.config.xaxis.title.text&&\"top\"===d.config.xaxis.position&&(w+=parseFloat(d.config.xaxis.title.style.fontSize)+2),t||(w=w+parseFloat(g)+(d.globals.xAxisLabelsHeight-d.globals.xAxisGroupLabelsHeight)+(d.globals.rotateXLabels?10:0)),y=void 0!==d.config.xaxis.tickAmount&&\"dataPoints\"!==d.config.xaxis.tickAmount&&\"datetime\"!==d.config.xaxis.type?n.axesUtils.checkLabelBasedOnTickamount(s,y,v):n.axesUtils.checkForOverflowingLabels(s,y,v,h,c);if(d.config.xaxis.labels.show){var k=e.drawText({x:y.x,y:n.offY+d.config.xaxis.labels.offsetY+w-(\"top\"===d.config.xaxis.position?d.globals.xAxisHeight+d.config.xaxis.axisTicks.height-2:0),text:y.text,textAnchor:\"middle\",fontWeight:y.isBold?600:f,fontSize:g,fontFamily:u,foreColor:Array.isArray(p)?t&&d.config.xaxis.convertedCatToNumeric?p[d.globals.minX+s-1]:p[s]:p,isPlainText:!1,cssClass:(t?\"apexcharts-xaxis-label \":\"apexcharts-xaxis-group-label \")+x});if(i.add(k),k.on(\"click\",(function(t){if(\"function\"==typeof d.config.chart.events.xAxisLabelClick){var e=Object.assign({},d,{labelIndex:s});d.config.chart.events.xAxisLabelClick(t,n.ctx,e)}})),t){var A=document.createElementNS(d.globals.SVGNS,\"title\");A.textContent=Array.isArray(y.text)?y.text.join(\" \"):y.text,k.node.appendChild(A),\"\"!==y.text&&(h.push(y.text),c.push(y))}}sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(e=e+r+a.config.xaxis.axisTicks.height,\"top\"===a.config.xaxis.position&&(e=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var o=new m(this.ctx).drawLine(t+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,e+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(o),o.node.classList.add(\"apexcharts-xaxis-tick\")}}}},{key:\"getXAxisTicksPositions\",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s0){var h=s[s.length-1].getBBox(),c=s[0].getBBox();h.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),c.x+c.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d0&&(this.xaxisLabels=i.globals.timescaleLabels.slice())}return r(t,[{key:\"drawGridArea\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new m(this.ctx);null===t&&(t=i.group({class:\"apexcharts-grid\"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,\"transparent\"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,\"transparent\");return t.add(s),t.add(a),t}},{key:\"drawGrid\",value:function(){var t=null;return this.w.globals.axisCharts&&(t=this.renderGrid(),this.drawGridArea(t.el)),t}},{key:\"createGridMask\",value:function(){var t=this.w,e=t.globals,i=new m(this.ctx),a=Array.isArray(t.config.stroke.width)?0:t.config.stroke.width;if(Array.isArray(t.config.stroke.width)){var s=0;t.config.stroke.width.forEach((function(t){s=Math.max(s,t)})),a=s}e.dom.elGridRectMask=document.createElementNS(e.SVGNS,\"clipPath\"),e.dom.elGridRectMask.setAttribute(\"id\",\"gridRectMask\".concat(e.cuid)),e.dom.elGridRectMarkerMask=document.createElementNS(e.SVGNS,\"clipPath\"),e.dom.elGridRectMarkerMask.setAttribute(\"id\",\"gridRectMarkerMask\".concat(e.cuid)),e.dom.elForecastMask=document.createElementNS(e.SVGNS,\"clipPath\"),e.dom.elForecastMask.setAttribute(\"id\",\"forecastMask\".concat(e.cuid)),e.dom.elNonForecastMask=document.createElementNS(e.SVGNS,\"clipPath\"),e.dom.elNonForecastMask.setAttribute(\"id\",\"nonForecastMask\".concat(e.cuid));var r=t.config.chart.type,o=0,n=0;(\"bar\"===r||\"rangeBar\"===r||\"candlestick\"===r||\"boxPlot\"===r||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(o=t.config.grid.padding.left,n=t.config.grid.padding.right,e.barPadForNumericAxis>o&&(o=e.barPadForNumericAxis,n=e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(-a/2-o-2,-a/2-2,e.gridWidth+a+n+o+4,e.gridHeight+a+4,0,\"#fff\");var l=t.globals.markers.largestSize+1;e.dom.elGridRectMarker=i.drawRect(2*-l,2*-l,e.gridWidth+4*l,e.gridHeight+4*l,0,\"#fff\"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var h=e.dom.baseEl.querySelector(\"defs\");h.appendChild(e.dom.elGridRectMask),h.appendChild(e.dom.elForecastMask),h.appendChild(e.dom.elNonForecastMask),h.appendChild(e.dom.elGridRectMarkerMask)}},{key:\"_drawGridLines\",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,o=t.xCount,n=t.parent,l=this.w;if(!(0===e&&l.globals.skipFirstTimelinelabel||e===o-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||\"radar\"===l.config.chart.type)){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:i,y1:a,x2:s,y2:r,xCount:o,parent:n});var h=0;if(l.globals.hasXaxisGroups&&\"between\"===l.config.xaxis.tickPlacement){var c=l.globals.groups;if(c){for(var d=0,g=0;d0&&\"datetime\"!==t.config.xaxis.type&&(s=e.yAxisScale[a].result.length-1);this._drawXYLines({xCount:s,tickAmount:r})}else s=r,r=e.xTickAmount,this._drawInvertedXYLines({xCount:s,tickAmount:r});return this.drawGridBands(s,r),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:e.gridWidth/s}}},{key:\"drawGridBands\",value:function(t,e){var i=this.w;if(void 0!==i.config.grid.row.colors&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/e,r=i.globals.gridWidth,o=0,n=0;o=i.config.grid.row.colors.length&&(n=0),this._drawGridBandRect({c:n,x1:0,y1:a,x2:r,y2:s,type:\"row\"}),a+=i.globals.gridHeight/e;if(void 0!==i.config.grid.column.colors&&i.config.grid.column.colors.length>0)for(var l=i.globals.isBarHorizontal||\"on\"!==i.config.xaxis.tickPlacement||\"category\"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric?t:t-1,h=i.globals.padHorizontal,c=i.globals.padHorizontal+i.globals.gridWidth/l,d=i.globals.gridHeight,g=0,u=0;g=i.config.grid.column.colors.length&&(u=0),this._drawGridBandRect({c:u,x1:h,y1:0,x2:c,y2:d,type:\"column\"}),h+=i.globals.gridWidth/l}}]),t}(),_=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"niceScale\",value:function(t,e){var i,a,s,r,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=1e-11,l=this.w,h=l.globals;h.isBarHorizontal?(i=l.config.xaxis,a=Math.max((h.svgWidth-100)/25,2)):(i=l.config.yaxis[o],a=Math.max((h.svgHeight-100)/15,2)),s=void 0!==i.min&&null!==i.min,r=void 0!==i.max&&null!==i.min;var c=void 0!==i.stepSize&&null!==i.stepSize,d=void 0!==i.tickAmount&&null!==i.tickAmount,g=d?i.tickAmount:i.forceNiceScale?h.niceScaleDefaultTicks[Math.min(Math.round(a/2),h.niceScaleDefaultTicks.length-1)]:10;if(h.isMultipleYAxis&&!d&&h.multiAxisTickAmount>0&&(g=h.multiAxisTickAmount,d=!0),g=\"dataPoints\"===g?h.dataPoints-1:Math.abs(Math.round(g)),(t===Number.MIN_VALUE&&0===e||!x.isNumber(t)&&!x.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE)&&(t=x.isNumber(i.min)?i.min:0,e=x.isNumber(i.max)?i.max:t+g,h.allSeriesCollapsed=!1),t>e){console.warn(\"axis.min cannot be greater than axis.max: swapping min and max\");var u=e;e=t,t=u}else t===e&&(t=0===t?0:t-1,e=0===e?2:e+1);var p=[];g<1&&(g=1);var f=g,b=Math.abs(e-t);if(i.forceNiceScale){!s&&t>0&&t/b<.15&&(t=0,s=!0),!r&&e<0&&-e/b<.15&&(e=0,r=!0),b=Math.abs(e-t)}var v=b/f,m=v,y=Math.floor(Math.log10(m)),w=Math.pow(10,y),k=Math.ceil(m/w);if(v=m=(k=h.niceScaleAllowedMagMsd[0===h.yValueDecimal?0:1][k])*w,h.isBarHorizontal&&i.stepSize&&\"datetime\"!==i.type?(v=i.stepSize,c=!0):c&&(v=i.stepSize),c&&i.forceNiceScale){var A=Math.floor(Math.log10(v));v*=Math.pow(10,y-A)}if(s&&r){var S=b/f;if(d)if(c)if(0!=x.mod(b,v)){var C=x.getGCD(v,S);v=S/C<10?C:S}else 0==x.mod(v,S)?v=S:(S=v,d=!1);else v=S;else if(c)0==x.mod(b,v)?S=v:v=S;else if(0==x.mod(b,v))S=v;else{S=b/(f=Math.ceil(b/v));var L=x.getGCD(b,v);b/La&&(t=e-v*g,t+=v*Math.floor((P-t)/v))}else if(s)if(d)e=t+v*f;else{var M=e;e=v*Math.ceil(e/v),Math.abs(e-t)/x.getGCD(b,v)>a&&(e=t+v*g,e+=v*Math.ceil((M-e)/v))}}else if(d){var I=v/(e-t>e?1:2),T=I*Math.floor(t/I);Math.abs(T-t)<=I/2?e=(t=T)+v*f:t=(e=I*Math.ceil(e/I))-v*f}else t=v*Math.floor(t/v),e=v*Math.ceil(e/v);b=Math.abs(e-t),v=x.getGCD(b,v),f=Math.round(b/v)}if(d||s||r||(f=Math.ceil((b-n)/(v+n)))>16&&x.getPrimeFactors(f).length<2&&f++,!d&&i.forceNiceScale&&0===h.yValueDecimal&&f>b&&(f=b,v=Math.round(b/f)),f>a&&(!d&&!c||i.forceNiceScale)){var z=x.getPrimeFactors(f),X=z.length-1,E=f;t:for(var Y=0;YW);return{result:p,niceMin:p[0],niceMax:p[p.length-1]}}},{key:\"linearScale\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,r=Math.abs(e-t);\"dataPoints\"===(i=this._adjustTicksForSmallRange(i,a,r))&&(i=this.w.globals.dataPoints-1),s||(s=r/i),i===Number.MAX_VALUE&&(i=5,s=1);for(var o=[],n=t;i>=0;)o.push(n),n+=s,i-=1;return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:\"logarithmicScaleNice\",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.ceil(Math.log(e)/Math.log(i)+1),r=Math.floor(Math.log(t)/Math.log(i));r5?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=r.forceNiceScale?this.logarithmicScaleNice(e,i,r.logBase):this.logarithmicScale(e,i,r.logBase)):i!==-Number.MAX_VALUE&&x.isNumber(i)&&e!==Number.MAX_VALUE&&x.isNumber(e)?(a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.niceScale(e,i,t)):a.yAxisScale[t]=this.niceScale(Number.MIN_VALUE,0,t)}},{key:\"setXScale\",value:function(t,e){var i=this.w,a=i.globals,s=Math.abs(e-t);return e!==-Number.MAX_VALUE&&x.isNumber(e)?a.xAxisScale=this.linearScale(t,e,i.config.xaxis.tickAmount?i.config.xaxis.tickAmount:s<10&&s>1?s+1:10,0,i.config.xaxis.stepSize):a.xAxisScale=this.linearScale(0,10,10),a.xAxisScale}},{key:\"setSeriesYAxisMappings\",value:function(){var t=this.w.globals,e=this.w.config;t.minYArr,t.maxYArr;var i=[],a=[],s=[],r=t.series.length>e.yaxis.length||e.yaxis.some((function(t){return Array.isArray(t.seriesName)}));e.series.forEach((function(t,e){s.push(e),a.push(null)})),e.yaxis.forEach((function(t,e){i[e]=[]}));var o=[];e.yaxis.forEach((function(t,a){var n=!1;if(t.seriesName){var l=[];Array.isArray(t.seriesName)?l=t.seriesName:l.push(t.seriesName),l.forEach((function(t){e.series.forEach((function(e,o){if(e.name===t){var l=o;a===o||r?!r||s.indexOf(o)>-1?i[a].push([a,o]):console.warn(\"Series '\"+e.name+\"' referenced more than once in what looks like the new style. That is, when using either seriesName: [], or when there are more series than yaxes.\"):(i[o].push([o,a]),l=a),n=!0,-1!==(l=s.indexOf(l))&&s.splice(l,1)}}))}))}n||o.push(a)})),i=i.map((function(t,e){var i=[];return t.forEach((function(t){a[t[1]]=t[0],i.push(t[1])})),i}));for(var n=e.yaxis.length-1,l=0;l0?function(){var l,h,c=Number.MAX_VALUE,d=-Number.MAX_VALUE,g=c,u=d;if(e.chart.stacked)!function(){var t=i.seriesX[a[0]],s=[],r=[],p=[];n.forEach((function(){s.push(t.map((function(){return Number.MIN_VALUE}))),r.push(t.map((function(){return Number.MIN_VALUE}))),p.push(t.map((function(){return Number.MIN_VALUE})))}));for(var f=function(t){!l&&e.series[a[t]].type&&(l=e.series[a[t]].type);var c=a[t];h=e.series[c].group?e.series[c].group:\"axis-\".concat(o),!(i.collapsedSeriesIndices.indexOf(c)<0&&i.ancillaryCollapsedSeriesIndices.indexOf(c)<0)||(i.allSeriesCollapsed=!1,n.forEach((function(t,a){if(e.series[c].group===t)for(var o=0;o=0?r[a][o]+=n:p[a][o]+=n,s[a][o]+=n,g=Math.min(g,n),u=Math.max(u,n)}}))),\"bar\"!==l&&\"column\"!==l||i.barGroups.push(h)},x=0;x1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,o=-Number.MAX_VALUE,n=Number.MIN_VALUE;null===a&&(a=t+1);var l=0,h=0,c=void 0;if(r.seriesX.length>=a){var d,g;l=0,h=(c=u(new Set((d=[]).concat.apply(d,u(r.seriesX.slice(t,a)))))).length-1;var p=null===(g=r.brushSource)||void 0===g?void 0:g.w.config.chart.brush;if(s.chart.zoom.enabled&&s.chart.zoom.autoScaleYaxis||null!=p&&p.enabled&&null!=p&&p.autoScaleYaxis){if(s.xaxis.min)for(l=0;ll&&c[h]>s.xaxis.max;h--);}}var f=r.series,b=f,v=f;\"candlestick\"===s.chart.type?(b=r.seriesCandleL,v=r.seriesCandleH):\"boxPlot\"===s.chart.type?(b=r.seriesCandleO,v=r.seriesCandleC):r.isRangeData&&(b=r.seriesRangeStart,v=r.seriesRangeEnd);for(var m=t;mb[m][w]&&b[m][w]<0&&(n=b[m][w])}else r.hasNullValues=!0}\"bar\"!==y&&\"column\"!==y||(n<0&&o<0&&(o=0,i=Math.max(i,0)),n===Number.MIN_VALUE&&(n=0,e=Math.min(e,0)))}return\"rangeBar\"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&(n=e),\"bar\"===s.chart.type&&(n<0&&o<0&&(o=0),n===Number.MIN_VALUE&&(n=0)),{minY:n,maxY:o,lowestY:e,highestY:i}}},{key:\"setYRange\",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i,a=Number.MAX_VALUE;if(t.isMultipleYAxis){a=Number.MAX_VALUE;for(var s=0;st.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1)):\"dataPoints\"===e.xaxis.tickAmount?(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric&&(a=t.maxX-t.minX-1)):a=e.xaxis.tickAmount,t.xTickAmount=a,void 0!==e.xaxis.max&&\"number\"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&\"number\"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var s=[],r=t.minX-1;r0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1,0,e.xaxis.stepSize),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:\"setZRange\",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e0){var s=e-a[i-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1!==t.dataPoints&&t.minXDiff!==Number.MAX_VALUE||(t.minXDiff=.5)}))}},{key:\"_setStackedMinMax\",value:function(){var t=this,e=this.w.globals;if(e.series.length){var i=e.seriesGroups;i.length||(i=[this.w.globals.seriesNames.map((function(t){return t}))]);var a={},s={};i.forEach((function(i){a[i]=[],s[i]=[],t.w.config.series.map((function(t,a){return i.indexOf(e.seriesNames[a])>-1?a:null})).filter((function(t){return null!==t})).forEach((function(r){for(var o=0;o0?a[i][o]+=parseFloat(e.series[r][o])+1e-4:s[i][o]+=parseFloat(e.series[r][o]))}}))})),Object.entries(a).forEach((function(t){var i=g(t,1)[0];a[i].forEach((function(t,r){e.maxY=Math.max(e.maxY,a[i][r]),e.minY=Math.min(e.minY,s[i][r])}))}))}}}]),t}(),q=function(){function t(e,i){a(this,t),this.ctx=e,this.elgrid=i,this.w=e.w;var s=this.w;this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.axisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.isCategoryBarHorizontal=\"bar\"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xAxisoffX=0,\"bottom\"===s.config.xaxis.position&&(this.xAxisoffX=s.globals.gridHeight),this.drawnLabels=[],this.axesUtils=new C(e)}return r(t,[{key:\"drawYaxis\",value:function(t){var e=this,i=this.w,a=new m(this.ctx),s=i.config.yaxis[t].labels.style,r=s.fontSize,o=s.fontFamily,n=s.fontWeight,l=a.group({class:\"apexcharts-yaxis\",rel:t,transform:\"translate(\"+i.globals.translateYAxisX[t]+\", 0)\"});if(this.axesUtils.isYAxisHidden(t))return l;var h=a.group({class:\"apexcharts-yaxis-texts-g\"});l.add(h);var c=i.globals.yAxisScale[t].result.length-1,d=i.globals.gridHeight/c,g=i.globals.translateY,u=i.globals.yLabelFormatters[t],p=i.globals.yAxisScale[t].result.slice();p=this.axesUtils.checkForReversedLabels(t,p);var f=\"\";if(i.config.yaxis[t].labels.show)for(var x=function(l){var x=p[l];x=u(x,l,i);var b=i.config.yaxis[t].labels.padding;i.config.yaxis[t].opposite&&0!==i.config.yaxis.length&&(b*=-1);var v=\"end\";i.config.yaxis[t].opposite&&(v=\"start\"),\"left\"===i.config.yaxis[t].labels.align?v=\"start\":\"center\"===i.config.yaxis[t].labels.align?v=\"middle\":\"right\"===i.config.yaxis[t].labels.align&&(v=\"end\");var m=e.axesUtils.getYAxisForeColor(s.colors,t),y=i.config.yaxis[t].labels.offsetY;\"heatmap\"===i.config.chart.type&&(y-=(i.globals.gridHeight/i.globals.series.length-1)/2);var w=a.drawText({x:b,y:g+c/10+y+1,text:x,textAnchor:v,fontSize:r,fontFamily:o,fontWeight:n,maxWidth:i.config.yaxis[t].labels.maxWidth,foreColor:Array.isArray(m)?m[l]:m,isPlainText:!1,cssClass:\"apexcharts-yaxis-label \"+s.cssClass});l===c&&(f=w),h.add(w);var k=document.createElementNS(i.globals.SVGNS,\"title\");if(k.textContent=Array.isArray(x)?x.join(\" \"):x,w.node.appendChild(k),0!==i.config.yaxis[t].labels.rotate){var A=a.rotateAroundCenter(f.node),S=a.rotateAroundCenter(w.node);w.node.setAttribute(\"transform\",\"rotate(\".concat(i.config.yaxis[t].labels.rotate,\" \").concat(A.x,\" \").concat(S.y,\")\"))}g+=d},b=c;b>=0;b--)x(b);if(void 0!==i.config.yaxis[t].title.text){var v=a.group({class:\"apexcharts-yaxis-title\"}),y=0;i.config.yaxis[t].opposite&&(y=i.globals.translateYAxisX[t]);var w=a.drawText({x:y,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[t].title.offsetY,text:i.config.yaxis[t].title.text,textAnchor:\"end\",foreColor:i.config.yaxis[t].title.style.color,fontSize:i.config.yaxis[t].title.style.fontSize,fontWeight:i.config.yaxis[t].title.style.fontWeight,fontFamily:i.config.yaxis[t].title.style.fontFamily,cssClass:\"apexcharts-yaxis-title-text \"+i.config.yaxis[t].title.style.cssClass});v.add(w),l.add(v)}var k=i.config.yaxis[t].axisBorder,A=31+k.offsetX;if(i.config.yaxis[t].opposite&&(A=-31-k.offsetX),k.show){var S=a.drawLine(A,i.globals.translateY+k.offsetY-2,A,i.globals.gridHeight+i.globals.translateY+k.offsetY+2,k.color,0,k.width);l.add(S)}return i.config.yaxis[t].axisTicks.show&&this.axesUtils.drawYAxisTicks(A,c,k,i.config.yaxis[t].axisTicks,t,d,l),l}},{key:\"drawYaxisInversed\",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:\"apexcharts-xaxis apexcharts-yaxis-inversed\"}),s=i.group({class:\"apexcharts-xaxis-texts-g\",transform:\"translate(\".concat(e.globals.translateXAxisX,\", \").concat(e.globals.translateXAxisY,\")\")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,o=e.globals.gridWidth/r+.1,n=o+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=e.globals.yAxisScale[t].result.slice(),c=e.globals.timescaleLabels;c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),h=this.axesUtils.checkForReversedLabels(t,h);var d=c.length;if(e.config.xaxis.labels.show)for(var g=d?0:r;d?g=0;d?g++:g--){var u=h[g];u=l(u,g,e);var p=e.globals.gridWidth+e.globals.padHorizontal-(n-o+e.config.xaxis.labels.offsetX);if(c.length){var f=this.axesUtils.getLabel(h,c,p,g,this.drawnLabels,this.xaxisFontSize);p=f.x,u=f.text,this.drawnLabels.push(f.text),0===g&&e.globals.skipFirstTimelinelabel&&(u=\"\"),g===h.length-1&&e.globals.skipLastTimelinelabel&&(u=\"\")}var x=i.drawText({x:p,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-(\"top\"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:u,textAnchor:\"middle\",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:\"apexcharts-xaxis-label \"+e.config.xaxis.labels.style.cssClass});s.add(x),x.tspan(u);var b=document.createElementNS(e.globals.SVGNS,\"title\");b.textContent=u,x.node.appendChild(b),n+=o}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:\"inversedYAxisBorder\",value:function(t){var e=this.w,i=new m(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;\"bar\"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders&&e.config.grid.show?this.elgrid.elGridBorders.add(r):t.add(r)}}},{key:\"inversedYAxisTitleText\",value:function(t){var e=this.w,i=new m(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:\"apexcharts-xaxis-title apexcharts-yaxis-title-inversed\"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:\"middle\",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:\"apexcharts-xaxis-title-text \"+e.config.xaxis.title.style.cssClass});a.add(s),t.add(a)}}},{key:\"yAxisTitleRotate\",value:function(t,e){var i=this.w,a=new m(this.ctx),s={width:0,height:0},r={width:0,height:0},o=i.globals.dom.baseEl.querySelector(\" .apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-texts-g\"));null!==o&&(s=o.getBoundingClientRect());var n=i.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(t,\"'] .apexcharts-yaxis-title text\"));if(null!==n&&(r=n.getBoundingClientRect()),null!==n){var l=this.xPaddingForYAxisTitle(t,s,r,e);n.setAttribute(\"x\",l.xPos-(e?10:0))}if(null!==n){var h=a.rotateAroundCenter(n);n.setAttribute(\"transform\",\"rotate(\".concat(e?-1*i.config.yaxis[t].title.rotate:i.config.yaxis[t].title.rotate,\" \").concat(h.x,\" \").concat(h.y,\")\"))}}},{key:\"xPaddingForYAxisTitle\",value:function(t,e,i,a){var s=this.w,r=0,o=0,n=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:o,padd:0}:(a?(o=e.width+s.config.yaxis[t].title.offsetX+i.width/2+n/2,0===(r+=1)&&(o-=n/2)):(o=-1*e.width+s.config.yaxis[t].title.offsetX+n/2+i.width/2,s.globals.isBarHorizontal&&(n=25,o=-1*e.width-s.config.yaxis[t].title.offsetX-n)),{xPos:o,padd:n})}},{key:\"setYAxisXPosition\",value:function(t,e){var i=this.w,a=0,s=0,r=18,o=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map((function(n,l){var h=i.globals.ignoreYAxisIndexes.indexOf(l)>-1||!n.show||n.floating||0===t[l].width,c=t[l].width+e[l].width;n.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-n.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+o,h||(o=o+c+20),i.globals.translateYAxisX[l]=s-n.labels.offsetX+20):(a=i.globals.translateX-r,h||(r=r+c+20),i.globals.translateYAxisX[l]=a+n.labels.offsetX)}))}},{key:\"setYAxisTextAlignments\",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName(\"apexcharts-yaxis\");(e=x.listToArray(e)).forEach((function(e,i){var a=t.config.yaxis[i];if(a&&!a.floating&&void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(i,\"'] .apexcharts-yaxis-texts-g\")),r=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis[rel='\".concat(i,\"'] .apexcharts-yaxis-label\"));r=x.listToArray(r);var o=s.getBoundingClientRect();\"left\"===a.labels.align?(r.forEach((function(t,e){t.setAttribute(\"text-anchor\",\"start\")})),a.opposite||s.setAttribute(\"transform\",\"translate(-\".concat(o.width,\", 0)\"))):\"center\"===a.labels.align?(r.forEach((function(t,e){t.setAttribute(\"text-anchor\",\"middle\")})),s.setAttribute(\"transform\",\"translate(\".concat(o.width/2*(a.opposite?1:-1),\", 0)\"))):\"right\"===a.labels.align&&(r.forEach((function(t,e){t.setAttribute(\"text-anchor\",\"end\")})),a.opposite&&s.setAttribute(\"transform\",\"translate(\".concat(o.width,\", 0)\")))}}))}}]),t}(),Z=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.documentEvent=x.bind(this.documentEvent,this)}return r(t,[{key:\"addEventListener\",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:\"removeEventListener\",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var a=i.globals.events[t].indexOf(e);-1!==a&&i.globals.events[t].splice(a,1)}}},{key:\"fireEvent\",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var a=i.globals.events[t],s=a.length,r=0;r0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error(\"Wrong locale name provided. Please make sure you set the correct locale name in options\");var a=x.extend(M,i);this.w.globals.locale=a.options}}]),t}(),J=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"drawAxis\",value:function(t,e){var i,a,s=this,r=this.w.globals,o=this.w.config,n=new V(this.ctx,e),l=new q(this.ctx,e);r.axisCharts&&\"radar\"!==t&&(r.isBarHorizontal?(a=l.drawYaxisInversed(0),i=n.drawXaxisInversed(0),r.dom.elGraphical.add(i),r.dom.elGraphical.add(a)):(i=n.drawXaxis(),r.dom.elGraphical.add(i),o.yaxis.map((function(t,e){if(-1===r.ignoreYAxisIndexes.indexOf(e)&&(a=l.drawYaxis(e),r.dom.Paper.add(a),\"back\"===s.w.config.grid.position)){var i=r.dom.Paper.children()[1];i.remove(),r.dom.Paper.add(i)}}))))}}]),t}(),Q=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"drawXCrosshairs\",value:function(){var t=this.w,e=new m(this.ctx),i=new v(this.ctx),a=t.config.xaxis.crosshairs.fill.gradient,s=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,o=a.colorFrom,n=a.colorTo,l=a.opacityFrom,h=a.opacityTo,c=a.stops,d=s.enabled,g=s.left,u=s.top,p=s.blur,f=s.color,b=s.opacity,y=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){\"gradient\"===r&&(y=e.drawGradient(\"vertical\",o,n,l,h,null,c,null));var w=e.drawRect();1===t.config.xaxis.crosshairs.width&&(w=e.drawLine());var k=t.globals.gridHeight;(!x.isNumber(k)||k<0)&&(k=0);var A=t.config.xaxis.crosshairs.width;(!x.isNumber(A)||A<0)&&(A=0),w.attr({class:\"apexcharts-xcrosshairs\",x:0,y:0,y2:k,width:A,height:k,fill:y,filter:\"none\",\"fill-opacity\":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,\"stroke-width\":t.config.xaxis.crosshairs.stroke.width,\"stroke-dasharray\":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(w=i.dropShadow(w,{left:g,top:u,blur:p,color:f,opacity:b})),t.globals.dom.elGraphical.add(w)}}},{key:\"drawYCrosshairs\",value:function(){var t=this.w,e=new m(this.ctx),i=t.config.yaxis[0].crosshairs,a=t.globals.barPadForNumericAxis;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:\"apexcharts-ycrosshairs\"}),t.globals.dom.elGraphical.add(s)}var r=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:\"apexcharts-ycrosshairs-hidden\"}),t.globals.dom.elGraphical.add(r)}}]),t}(),K=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"checkResponsiveConfig\",value:function(t){var e=this,i=this.w,a=i.config;if(0!==a.responsive.length){var s=a.responsive.slice();s.sort((function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new Y({}),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,o=window.innerWidth>0?window.innerWidth:screen.width;if(o>a){var n=y.extendArrayProps(r,i.globals.initialConfig,i);t=x.extend(n,t),t=x.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var l=0;l0&&\"function\"==typeof i.config.colors[0]&&(i.globals.colors=i.config.series.map((function(t,a){var s=i.config.colors[a];return s||(s=i.config.colors[0]),\"function\"==typeof s?(e.isColorFn=!0,s({value:i.globals.axisCharts?i.globals.series[a][0]?i.globals.series[a][0]:0:i.globals.series[a],seriesIndex:a,dataPointIndex:a,w:i})):s})))),i.globals.seriesColors.map((function(t,e){t&&(i.globals.colors[e]=t)})),i.config.theme.monochrome.enabled){var s=[],r=i.globals.series.length;(this.isBarDistributed||this.isHeatmapDistributed)&&(r=i.globals.series[0].length*i.globals.series.length);for(var o=i.config.theme.monochrome.color,n=1/(r/i.config.theme.monochrome.shadeIntensity),l=i.config.theme.monochrome.shadeTo,h=0,c=0;c2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||this.isHeatmapDistributed||\"heatmap\"===a.config.chart.type&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),t.lengtht.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:\"getLargestStringFromMultiArr\",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,u(a));i=e[a.indexOf(s)]}return i}}]),t}(),at=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:\"getxAxisLabelsCoords\",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.config.xaxis.convertedCatToNumeric&&0===i.length&&(i=e.globals.categoryLabels),e.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends=\"left\"!==e.config.legend.position&&\"right\"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=x.getLargestStringFromArr(i),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(o=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var n=new S(this.dCtx.ctx),l=r;r=n.xLabelFormat(s,r,l,{i:void 0,dateFormatter:new A(this.dCtx.ctx).formatDate,w:e}),o=n.xLabelFormat(s,o,l,{i:void 0,dateFormatter:new A(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&void 0===r||\"\"===String(r).trim())&&(o=r=\"1\");var h=new m(this.dCtx.ctx),c=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),d=c;if(r!==o&&(d=h.getTextRects(o,e.config.xaxis.labels.style.fontSize)),(t={width:c.width>=d.width?c.width:d.width,height:c.height>=d.height?c.height:d.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var g=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,\"rotate(\".concat(e.config.xaxis.labels.rotate,\" 0 0)\"),!1)};c=g(r),r!==o&&(d=g(o)),t.height=(c.height>d.height?c.height:d.height)/1.5,t.width=c.width>d.width?c.width:d.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:\"getxAxisGroupLabelsCoords\",value:function(){var t,e=this.w;if(!e.globals.hasXaxisGroups)return{width:0,height:0};var i,a=(null===(t=e.config.xaxis.group.style)||void 0===t?void 0:t.fontSize)||e.config.xaxis.labels.style.fontSize,s=e.globals.groups.map((function(t){return t.title})),r=x.getLargestStringFromArr(s),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),n=new m(this.dCtx.ctx),l=n.getTextRects(r,a),h=l;return r!==o&&(h=n.getTextRects(o,a)),i={width:l.width>=h.width?l.width:h.width,height:l.height>=h.height?l.height:h.height},e.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:\"getxAxisTitleCoords\",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new m(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:\"getxAxisTimeScaleLabelsCoords\",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error(\"You have possibly supplied invalid Date format. Please supply a valid JavaScript Date\"),0):t.length>e.length?t:e}),0);return 1.05*(t=new m(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:\"additionalPaddingXLabels\",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,o=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var n=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,l=function(t,n){s.yaxis.length>1&&function(t){return-1!==a.collapsedSeriesIndices.indexOf(t)}(n)||function(t){if(e.dCtx.timescaleLabels&&e.dCtx.timescaleLabels.length){var n=e.dCtx.timescaleLabels[0],l=e.dCtx.timescaleLabels[e.dCtx.timescaleLabels.length-1].position+o/1.75-e.dCtx.yAxisWidthRight,h=n.position-o/1.75+e.dCtx.yAxisWidthLeft,c=\"right\"===i.config.legend.position&&e.dCtx.lgRect.width>0?e.dCtx.lgRect.width:0;l>a.svgWidth-a.translateX-c&&(a.skipLastTimelinelabel=!0),h<-(t.show&&!t.floating||\"bar\"!==s.chart.type&&\"candlestick\"!==s.chart.type&&\"rangeBar\"!==s.chart.type&&\"boxPlot\"!==s.chart.type?10:o/1.75)&&(a.skipFirstTimelinelabel=!0)}else\"datetime\"===r?e.dCtx.gridPad.right(null===(a=String(c(e,n)))||void 0===a?void 0:a.length)?t:e}),d),u=g=c(g,n);if(void 0!==g&&0!==g.length||(g=l.niceMax),e.globals.isBarHorizontal){a=0;var p=e.globals.labels.slice();g=x.getLargestStringFromArr(p),g=c(g,{seriesIndex:o,dataPointIndex:-1,w:e}),u=t.dCtx.dimHelpers.getLargestStringFromMultiArr(g,p)}var f=new m(t.dCtx.ctx),b=\"rotate(\".concat(r.labels.rotate,\" 0 0)\"),v=f.getTextRects(g,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1),y=v;g!==u&&(y=f.getTextRects(u,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1)),i.push({width:(h>y.width||h>v.width?h:y.width>v.width?y.width:v.width)+a,height:y.height>v.height?y.height:v.height})}else i.push({width:0,height:0})})),i}},{key:\"getyAxisTitleCoords\",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new m(t.dCtx.ctx),r=\"rotate(\".concat(e.title.rotate,\" 0 0)\"),o=s.getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,r,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})})),i}},{key:\"getTotalYAxisWidth\",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new C(this.dCtx.ctx),o=function(o,n){var l=t.config.yaxis[n].floating,h=0;o.width>0&&!l?(h=o.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(n)&&(h=h-o.width-s)):h=l||r.isYAxisHidden(n)?0:5,t.config.yaxis[n].opposite?a+=h:i+=h,e+=h};return t.globals.yLabelsCoords.map((function(t,e){o(t,e)})),t.globals.yTitleCoords.map((function(t,e){o(t,e)})),t.globals.isBarHorizontal&&!t.config.yaxis[0].floating&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}]),t}(),rt=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:\"gridPadForColumnsInNumericAxis\",value:function(t){var e=this.w,i=e.config,a=e.globals;if(a.noData||a.collapsedSeries.length+a.ancillaryCollapsedSeries.length===i.series.length)return 0;var s=function(t){return\"bar\"===t||\"rangeBar\"===t||\"candlestick\"===t||\"boxPlot\"===t},r=i.chart.type,o=0,n=s(r)?i.series.length:1;if(a.comboBarCount>0&&(n=a.comboBarCount),a.collapsedSeries.forEach((function(t){s(t.type)&&(n-=1)})),i.chart.stacked&&(n=1),(s(r)||a.comboBarCount>0)&&a.isXNumeric&&!a.isBarHorizontal&&n>0){var l,h,c=Math.abs(a.initialMaxX-a.initialMinX);c<=3&&(c=a.dataPoints),l=c/t,a.minXDiff&&a.minXDiff/l>0&&(h=a.minXDiff/l),h>t/2&&(h/=2),(o=h*parseInt(i.plotOptions.bar.columnWidth,10)/100)<1&&(o=1),a.barPadForNumericAxis=o}return o}},{key:\"gridPadFortitleSubtitle\",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!e.globals.axisCharts?0:10;[\"title\",\"subtitle\"].forEach((function(i){void 0!==e.config[i].text?a+=e.config[i].margin:a+=t.dCtx.isSparkline||!e.globals.axisCharts?0:5})),!e.config.legend.show||\"bottom\"!==e.config.legend.position||e.config.legend.floating||e.globals.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords(\"title\"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords(\"subtitle\");i.gridHeight=i.gridHeight-s.height-r.height-a,i.translateY=i.translateY+s.height+r.height+a}},{key:\"setGridXPosForDualYAxis\",value:function(t,e){var i=this.w,a=new C(this.dCtx.ctx);i.config.yaxis.map((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX=i.globals.translateX-(e[r].width+t[r].width)-parseInt(i.config.yaxis[r].labels.style.fontSize,10)/1.2-12),i.globals.translateX<2&&(i.globals.translateX=2))}))}}]),t}(),ot=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new it(this),this.dimYAxis=new st(this),this.dimXAxis=new at(this),this.dimGrid=new rt(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return r(t,[{key:\"plotCoords\",value:function(){var t=this,e=this.w,i=e.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.isSparkline&&((e.config.markers.discrete.length>0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach((function(e){var i=g(e,2),a=i[0],s=i[1];t.gridPad[a]=Math.max(s,t.w.globals.markers.largestSize/1.5)})),this.gridPad.top=Math.max(e.config.stroke.width/2,this.gridPad.top),this.gridPad.bottom=Math.max(e.config.stroke.width/2,this.gridPad.bottom)),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var a=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*a,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(a>0?a+4:0),i.translateY=i.translateY+this.gridPad.top}},{key:\"setDimensionsForAxisCharts\",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),o=this.dimXAxis.getxAxisGroupLabelsCoords(),n=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,n,o),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var l=this.yAxisWidth,h=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-n.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var c=10;(\"radar\"===e.config.chart.type||this.isSparkline)&&(l=0,h=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||\"treemap\"===e.config.chart.type)&&(l=0,h=0,c=0),this.isSparkline||this.dimXAxis.additionalPaddingXLabels(r);var d=function(){i.translateX=l,i.gridHeight=i.svgHeight-t.lgRect.height-h-(t.isSparkline||\"treemap\"===e.config.chart.type?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-l};switch(\"top\"===e.config.xaxis.position&&(c=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case\"bottom\":i.translateY=c,d();break;case\"top\":i.translateY=this.lgRect.height+c,d();break;case\"left\":i.translateY=c,i.translateX=this.lgRect.width+l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l;break;case\"right\":i.translateY=c,i.translateX=l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-5;break;default:throw new Error(\"Legend position not supported\")}this.dimGrid.setGridXPosForDualYAxis(s,a),new q(this.ctx).setYAxisXPosition(a,s)}},{key:\"setDimensionsForNonAxisCharts\",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s=\"pie\"===i.chart.type||\"polarArea\"===i.chart.type||\"donut\"===i.chart.type?\"pie\":\"radialBar\",r=i.plotOptions[s].offsetY,o=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return e.gridHeight=e.svgHeight-i.grid.padding.left+i.grid.padding.right,e.gridWidth=e.gridHeight,e.translateY=r,void(e.translateX=o+(e.svgWidth-e.gridWidth)/2);switch(i.legend.position){case\"bottom\":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=r-10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case\"top\":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=this.lgRect.height+r+10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case\"left\":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight=\"auto\"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+this.lgRect.width+a;break;case\"right\":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight=\"auto\"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+10;break;default:throw new Error(\"Legend position not supported\")}}},{key:\"conditionalChecksForAxisCoords\",value:function(t,e,i){var a=this.w,s=a.globals.hasXaxisGroups?2:1,r=i.height+t.height+e.height,o=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,n=a.globals.rotateXLabels?22:10,l=a.globals.rotateXLabels&&\"bottom\"===a.config.legend.position?10:0;this.xAxisHeight=r*o+s*n+l,this.xAxisWidth=t.width,this.xAxisHeight-e.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightc&&(this.yAxisWidth=c)}}]),t}(),nt=function(){function t(e){a(this,t),this.w=e.w,this.lgCtx=e}return r(t,[{key:\"getLegendStyles\",value:function(){var t,e,i,a=document.createElement(\"style\");a.setAttribute(\"type\",\"text/css\");var s=(null===(t=this.lgCtx.ctx)||void 0===t||null===(e=t.opts)||void 0===e||null===(i=e.chart)||void 0===i?void 0:i.nonce)||this.w.config.chart.nonce;s&&a.setAttribute(\"nonce\",s);var r=document.createTextNode(\"\\n .apexcharts-legend {\\n display: flex;\\n overflow: auto;\\n padding: 0 10px;\\n }\\n .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\\n flex-wrap: wrap\\n }\\n .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\\n flex-direction: column;\\n bottom: 0;\\n }\\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\\n justify-content: flex-start;\\n }\\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\\n justify-content: center;\\n }\\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\\n justify-content: flex-end;\\n }\\n .apexcharts-legend-series {\\n cursor: pointer;\\n line-height: normal;\\n }\\n .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{\\n display: flex;\\n align-items: center;\\n }\\n .apexcharts-legend-text {\\n position: relative;\\n font-size: 14px;\\n }\\n .apexcharts-legend-text *, .apexcharts-legend-marker * {\\n pointer-events: none;\\n }\\n .apexcharts-legend-marker {\\n position: relative;\\n display: inline-block;\\n cursor: pointer;\\n margin-right: 3px;\\n border-style: solid;\\n }\\n\\n .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{\\n display: inline-block;\\n }\\n .apexcharts-legend-series.apexcharts-no-click {\\n cursor: auto;\\n }\\n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\\n display: none !important;\\n }\\n .apexcharts-inactive-legend {\\n opacity: 0.45;\\n }\");return a.appendChild(r),a}},{key:\"getLegendBBox\",value:function(){var t=this.w.globals.dom.baseEl.querySelector(\".apexcharts-legend\").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:\"appendToForeignObject\",value:function(){this.w.globals.dom.elLegendForeign.appendChild(this.getLegendStyles())}},{key:\"toggleDataSeries\",value:function(t,e){var i=this,a=this.w;if(a.globals.axisCharts||\"radialBar\"===a.config.chart.type){a.globals.resized=!0;var s=null,r=null;if(a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"']\")),r=parseInt(s.getAttribute(\"data:realIndex\"),10)):(s=a.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(t+1,\"']\")),r=parseInt(s.getAttribute(\"rel\"),10)-1),e)[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach((function(t){i.riseCollapsedSeries(t.cs,t.csi,r)}));else this.hideSeries({seriesEl:s,realIndex:r})}else{var o=a.globals.dom.Paper.select(\" .apexcharts-series[rel='\".concat(t+1,\"'] path\")),n=a.config.chart.type;if(\"pie\"===n||\"polarArea\"===n||\"donut\"===n){var l=a.config.plotOptions.pie.donut.labels;new m(this.lgCtx.ctx).pathMouseDown(o.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(o.members[0].node,l)}o.fire(\"click\")}}},{key:\"hideSeries\",value:function(t){var e=t.seriesEl,i=t.realIndex,a=this.w,s=a.globals,r=x.clone(a.config.series);if(s.axisCharts){var o=a.config.yaxis[s.seriesYAxisReverseMap[i]];if(o&&o.show&&o.showAlways)s.ancillaryCollapsedSeriesIndices.indexOf(i)<0&&(s.ancillaryCollapsedSeries.push({index:i,data:r[i].data.slice(),type:e.parentNode.className.baseVal.split(\"-\")[1]}),s.ancillaryCollapsedSeriesIndices.push(i));else if(s.collapsedSeriesIndices.indexOf(i)<0){s.collapsedSeries.push({index:i,data:r[i].data.slice(),type:e.parentNode.className.baseVal.split(\"-\")[1]}),s.collapsedSeriesIndices.push(i);var n=s.risingSeries.indexOf(i);s.risingSeries.splice(n,1)}}else s.collapsedSeries.push({index:i,data:r[i]}),s.collapsedSeriesIndices.push(i);for(var l=e.childNodes,h=0;h0){for(var r=0;r1||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),x.isIE11()?document.getElementsByTagName(\"head\")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),\"bottom\"===i.legend.position||\"top\"===i.legend.position?this.legendAlignHorizontal():\"right\"!==i.legend.position&&\"left\"!==i.legend.position||this.legendAlignVertical()}}},{key:\"drawLegends\",value:function(){var t=this,e=this.w,i=e.config.legend.fontFamily,a=e.globals.seriesNames,s=e.globals.colors.slice();if(\"heatmap\"===e.config.chart.type){var r=e.config.plotOptions.heatmap.colorScale.ranges;a=r.map((function(t){return t.name?t.name:t.from+\" - \"+t.to})),s=r.map((function(t){return t.color}))}else this.isBarsDistributed&&(a=e.globals.labels.slice());e.config.legend.customLegendItems.length&&(a=e.config.legend.customLegendItems);for(var o=e.globals.legendFormatter,n=e.config.legend.inverseOrder,l=n?a.length-1:0;n?l>=0:l<=a.length-1;n?l--:l++){var h,c=o(a[l],{seriesIndex:l,w:e}),d=!1,g=!1;if(e.globals.collapsedSeries.length>0)for(var u=0;u0)for(var p=0;p0?l-10:0)+(h>0?h-10:0)}a.style.position=\"absolute\",r=r+t+i.config.legend.offsetX,o=o+e+i.config.legend.offsetY,a.style.left=r+\"px\",a.style.top=o+\"px\",\"bottom\"===i.config.legend.position?(a.style.top=\"auto\",a.style.bottom=5-i.config.legend.offsetY+\"px\"):\"right\"===i.config.legend.position&&(a.style.left=\"auto\",a.style.right=25+i.config.legend.offsetX+\"px\");[\"width\",\"height\"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+\"px\")}))}},{key:\"legendAlignHorizontal\",value:function(){var t=this.w;t.globals.dom.elLegendWrap.style.right=0;var e=this.legendHelpers.getLegendBBox(),i=new ot(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords(\"title\"),s=i.dimHelpers.getTitleSubtitleCoords(\"subtitle\"),r=0;\"bottom\"===t.config.legend.position?r=-e.clwh/1.8:\"top\"===t.config.legend.position&&(r=a.height+s.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,r)}},{key:\"legendAlignVertical\",value:function(){var t=this.w,e=this.legendHelpers.getLegendBBox(),i=0;\"left\"===t.config.legend.position&&(i=20),\"right\"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:\"onLegendHovered\",value:function(t){var e=this.w,i=t.target.classList.contains(\"apexcharts-legend-series\")||t.target.classList.contains(\"apexcharts-legend-text\")||t.target.classList.contains(\"apexcharts-legend-marker\");if(\"heatmap\"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute(\"rel\"),10)-1;this.ctx.events.fireEvent(\"legendHover\",[this.ctx,a,this.w]),new W(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains(\"apexcharts-inactive-legend\")&&i&&new W(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:\"onLegendClick\",value:function(t){var e=this.w;if(!e.config.legend.customLegendItems.length&&(t.target.classList.contains(\"apexcharts-legend-series\")||t.target.classList.contains(\"apexcharts-legend-text\")||t.target.classList.contains(\"apexcharts-legend-marker\"))){var i=parseInt(t.target.getAttribute(\"rel\"),10)-1,a=\"true\"===t.target.getAttribute(\"data:collapsed\"),s=this.w.config.chart.events.legendClick;\"function\"==typeof s&&s(this.ctx,i,this.w),this.ctx.events.fireEvent(\"legendClick\",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;\"function\"==typeof r&&t.target.classList.contains(\"apexcharts-legend-marker\")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent(\"legendMarkerClick\",[this.ctx,i,this.w])),\"treemap\"!==e.config.chart.type&&\"heatmap\"!==e.config.chart.type&&!this.isBarsDistributed&&e.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),t}(),ht=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.ev=this.w.config.chart.events,this.selectedClass=\"apexcharts-selected\",this.localeValues=this.w.globals.locale.toolbar,this.minX=i.globals.minX,this.maxX=i.globals.maxX}return r(t,[{key:\"createToolbar\",value:function(){var t=this,e=this.w,i=function(){return document.createElement(\"div\")},a=i();if(a.setAttribute(\"class\",\"apexcharts-toolbar\"),a.style.top=e.config.chart.toolbar.offsetY+\"px\",a.style.right=3-e.config.chart.toolbar.offsetX+\"px\",e.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s\\n \\n \\n\\n'),o(\"zoomOut\",this.elZoomOut,'\\n \\n \\n\\n');var n=function(i){t.t[i]&&e.config.chart[i].enabled&&r.push({el:\"zoom\"===i?t.elZoom:t.elSelection,icon:\"string\"==typeof t.t[i]?t.t[i]:\"zoom\"===i?'\\n \\n \\n \\n':'\\n \\n \\n',title:t.localeValues[\"zoom\"===i?\"selectionZoom\":\"selection\"],class:e.globals.isTouchDevice?\"apexcharts-element-hidden\":\"apexcharts-\".concat(i,\"-icon\")})};n(\"zoom\"),n(\"selection\"),this.t.pan&&e.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:\"string\"==typeof this.t.pan?this.t.pan:'\\n \\n \\n \\n \\n \\n \\n \\n',title:this.localeValues.pan,class:e.globals.isTouchDevice?\"apexcharts-element-hidden\":\"apexcharts-pan-icon\"}),o(\"reset\",this.elZoomReset,'\\n \\n \\n'),this.t.download&&r.push({el:this.elMenuIcon,icon:\"string\"==typeof this.t.download?this.t.download:'',title:this.localeValues.menu,class:\"apexcharts-menu-icon\"});for(var l=0;l0&&e.height>0&&this.slDraggableRect.selectize({points:\"l, r\",pointSize:8,pointType:\"rect\"}).resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on(\"resizing\",this.selectionDragging.bind(this,\"resizing\"))}}},{key:\"preselectedSelection\",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a=t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i;t.globals.isRangeBar&&(i=(t.config.chart.selection.xaxis.min-t.globals.yAxisScale[0].niceMin)/e.invertedYRatio,a=(t.config.chart.selection.xaxis.max-t.config.chart.selection.xaxis.min)/e.invertedYRatio);var s={x:i,y:0,width:a,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(s),this.makeSelectionRectDraggable(),\"function\"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:\"drawSelectionRect\",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,o=void 0===r?0:r,n=t.translateY,l=void 0===n?0:n,h=this.w,c=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==h.globals.selection){var g={transform:\"translate(\"+o+\", \"+l+\")\"};h.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),c.attr({x:e,y:i,width:a,height:s,fill:h.config.chart.zoom.zoomedArea.fill.color,\"fill-opacity\":h.config.chart.zoom.zoomedArea.fill.opacity,stroke:h.config.chart.zoom.zoomedArea.stroke.color,\"stroke-width\":h.config.chart.zoom.zoomedArea.stroke.width,\"stroke-opacity\":h.config.chart.zoom.zoomedArea.stroke.opacity}),m.setAttrs(c.node,g)),h.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:h.config.chart.selection.fill.color,\"fill-opacity\":h.config.chart.selection.fill.opacity,stroke:h.config.chart.selection.stroke.color,\"stroke-width\":h.config.chart.selection.stroke.width,\"stroke-dasharray\":h.config.chart.selection.stroke.dashArray,\"stroke-opacity\":h.config.chart.selection.stroke.opacity}),m.setAttrs(d.node,g))}}},{key:\"hideSelectionRect\",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:\"selectionDrawing\",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.gridRect.getBoundingClientRect(),o=s.startX-1,n=s.startY,l=!1,h=!1,c=s.clientX-r.left-o,d=s.clientY-r.top-n,g={};return Math.abs(c+o)>a.globals.gridWidth?c=a.globals.gridWidth-o:s.clientX-r.left<0&&(c=o),o>s.clientX-r.left&&(l=!0,c=Math.abs(c)),n>s.clientY-r.top&&(h=!0,d=Math.abs(d)),g=\"x\"===i?{x:l?o-c:o,y:0,width:c,height:a.globals.gridHeight}:\"y\"===i?{x:0,y:h?n-d:n,width:a.globals.gridWidth,height:d}:{x:l?o-c:o,y:h?n-d:n,width:c,height:d},s.drawSelectionRect(g),s.selectionDragging(\"resizing\"),g}},{key:\"selectionDragging\",value:function(t,e){var i=this,a=this.w,s=this.xyRatios,r=this.selectionRect,o=0;\"resizing\"===t&&(o=30);var n=function(t){return parseFloat(r.node.getAttribute(t))},l={x:n(\"x\"),y:n(\"y\"),width:n(\"width\"),height:n(\"height\")};a.globals.selection=l,\"function\"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t,e,o,n,l=i.gridRect.getBoundingClientRect(),h=r.node.getBoundingClientRect();a.globals.isRangeBar?(t=a.globals.yAxisScale[0].niceMin+(h.left-l.left)*s.invertedYRatio,e=a.globals.yAxisScale[0].niceMin+(h.right-l.left)*s.invertedYRatio,o=0,n=1):(t=a.globals.xAxisScale.niceMin+(h.left-l.left)*s.xRatio,e=a.globals.xAxisScale.niceMin+(h.right-l.left)*s.xRatio,o=a.globals.yAxisScale[0].niceMin+(l.bottom-h.bottom)*s.yRatio[0],n=a.globals.yAxisScale[0].niceMax-(h.top-l.top)*s.yRatio[0]);var c={xaxis:{min:t,max:e},yaxis:{min:o,max:n}};a.config.chart.events.selection(i.ctx,c),a.config.chart.brush.enabled&&void 0!==a.config.chart.events.brushScrolled&&a.config.chart.events.brushScrolled(i.ctx,c)}),o))}},{key:\"selectionDrawn\",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.xyRatios,o=this.ctx.toolbar;if(s.startX>s.endX){var n=s.startX;s.startX=s.endX,s.endX=n}if(s.startY>s.endY){var l=s.startY;s.startY=s.endY,s.endY=l}var h=void 0,c=void 0;a.globals.isRangeBar?(h=a.globals.yAxisScale[0].niceMin+s.startX*r.invertedYRatio,c=a.globals.yAxisScale[0].niceMin+s.endX*r.invertedYRatio):(h=a.globals.xAxisScale.niceMin+s.startX*r.xRatio,c=a.globals.xAxisScale.niceMin+s.endX*r.xRatio);var d=[],g=[];if(a.config.yaxis.forEach((function(t,e){if(a.globals.seriesYAxisMap[e].length>0){var i=a.globals.seriesYAxisMap[e][0];d.push(a.globals.yAxisScale[e].niceMax-r.yRatio[i]*s.startY),g.push(a.globals.yAxisScale[e].niceMax-r.yRatio[i]*s.endY)}})),s.dragged&&(s.dragX>10||s.dragY>10)&&h!==c)if(a.globals.zoomEnabled){var u=x.clone(a.globals.initialConfig.yaxis),p=x.clone(a.globals.initialConfig.xaxis);if(a.globals.zoomed=!0,a.config.xaxis.convertedCatToNumeric&&(h=Math.floor(h),c=Math.floor(c),h<1&&(h=1,c=a.globals.dataPoints),c-h<2&&(c=h+1)),\"xy\"!==i&&\"x\"!==i||(p={min:h,max:c}),\"xy\"!==i&&\"y\"!==i||u.forEach((function(t,e){u[e].min=g[e],u[e].max=d[e]})),o){var f=o.getBeforeZoomRange(p,u);f&&(p=f.xaxis?f.xaxis:p,u=f.yaxis?f.yaxis:u)}var b={xaxis:p};a.config.chart.group||(b.yaxis=u),s.ctx.updateHelpers._updateOptions(b,!1,s.w.config.chart.animations.dynamicAnimation.enabled),\"function\"==typeof a.config.chart.events.zoomed&&o.zoomCallback(p,u)}else if(a.globals.selectionEnabled){var v,m=null;v={min:h,max:c},\"xy\"!==i&&\"y\"!==i||(m=x.clone(a.config.yaxis)).forEach((function(t,e){m[e].min=g[e],m[e].max=d[e]})),a.globals.selection=s.selection,\"function\"==typeof a.config.chart.events.selection&&a.config.chart.events.selection(s.ctx,{xaxis:v,yaxis:m})}}},{key:\"panDragging\",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection=\"left\":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection=\"right\":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection=\"up\":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection=\"down\")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var o=i.globals.isRangeBar?i.globals.minY:i.globals.minX,n=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;i.config.xaxis.convertedCatToNumeric||a.panScrolled(o,n)}},{key:\"delayedPanScrolled\",value:function(){var t=this.w,e=t.globals.minX,i=t.globals.maxX,a=(t.globals.maxX-t.globals.minX)/2;\"left\"===this.moveDirection?(e=t.globals.minX+a,i=t.globals.maxX+a):\"right\"===this.moveDirection&&(e=t.globals.minX-a,i=t.globals.maxX-a),e=Math.floor(e),i=Math.floor(i),this.updateScrolledChart({xaxis:{min:e,max:i}},e,i)}},{key:\"panScrolled\",value:function(t,e){var i=this.w,a=this.xyRatios,s=x.clone(i.globals.initialConfig.yaxis),r=a.xRatio,o=i.globals.minX,n=i.globals.maxX;i.globals.isRangeBar&&(r=a.invertedYRatio,o=i.globals.minY,n=i.globals.maxY),\"left\"===this.moveDirection?(t=o+i.globals.gridWidth/15*r,e=n+i.globals.gridWidth/15*r):\"right\"===this.moveDirection&&(t=o-i.globals.gridWidth/15*r,e=n-i.globals.gridWidth/15*r),i.globals.isRangeBar||(ti.globals.initialMaxX)&&(t=o,e=n);var l={xaxis:{min:t,max:e}};i.config.chart.group||(l.yaxis=s),this.updateScrolledChart(l,t,e)}},{key:\"updateScrolledChart\",value:function(t,e,i){var a=this.w;this.ctx.updateHelpers._updateOptions(t,!1,!1),\"function\"==typeof a.config.chart.events.scrolled&&a.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),i}(),dt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return r(t,[{key:\"getNearestValues\",value:function(t){var e=t.hoverArea,i=t.elGrid,a=t.clientX,s=t.clientY,r=this.w,o=i.getBoundingClientRect(),n=o.width,l=o.height,h=n/(r.globals.dataPoints-1),c=l/r.globals.dataPoints,d=this.hasBars();!r.globals.comboCharts&&!d||r.config.xaxis.convertedCatToNumeric||(h=n/r.globals.dataPoints);var g=a-o.left-r.globals.barPadForNumericAxis,u=s-o.top;g<0||u<0||g>n||u>l?(e.classList.remove(\"hovering-zoom\"),e.classList.remove(\"hovering-pan\")):r.globals.zoomEnabled?(e.classList.remove(\"hovering-pan\"),e.classList.add(\"hovering-zoom\")):r.globals.panEnabled&&(e.classList.remove(\"hovering-zoom\"),e.classList.add(\"hovering-pan\"));var p=Math.round(g/h),f=Math.floor(u/c);d&&!r.config.xaxis.convertedCatToNumeric&&(p=Math.ceil(g/h),p-=1);var b=null,v=null,m=r.globals.seriesXvalues.map((function(t){return t.filter((function(t){return x.isNumber(t)}))})),y=r.globals.seriesYvalues.map((function(t){return t.filter((function(t){return x.isNumber(t)}))}));if(r.globals.isXNumeric){var w=this.ttCtx.getElGrid().getBoundingClientRect(),k=g*(w.width/n),A=u*(w.height/l);b=(v=this.closestInMultiArray(k,A,m,y)).index,p=v.j,null!==b&&(m=r.globals.seriesXvalues[b],p=(v=this.closestInArray(k,m)).index)}return r.globals.capturedSeriesIndex=null===b?-1:b,(!p||p<1)&&(p=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=f:r.globals.capturedDataPointIndex=p,{capturedSeries:b,j:r.globals.isBarHorizontal?f:p,hoverX:g,hoverY:u}}},{key:\"closestInMultiArray\",value:function(t,e,i,a){var s=this.w,r=0,o=null,n=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):o=0;var l=i[r][0],h=Math.abs(t-l);if(i.forEach((function(e){e.forEach((function(e,i){var a=Math.abs(t-e);a<=h&&(h=a,n=i)}))})),-1!==n){var c=a[r][n],d=Math.abs(e-c);o=r,a.forEach((function(t,i){var a=Math.abs(e-t[n]);a<=d&&(d=a,o=i)}))}return{index:o,j:n}}},{key:\"getFirstActiveXArray\",value:function(t){for(var e=this.w,i=0,a=t.map((function(t,e){return t.length>0?e:-1})),s=0;s0)for(var a=0;a *\")):this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers-wrap > *\")}},{key:\"getAllMarkers\",value:function(){var t=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers-wrap\");(t=u(t)).sort((function(t,e){var i=Number(t.getAttribute(\"data:realIndex\")),a=Number(e.getAttribute(\"data:realIndex\"));return ai?-1:0}));var e=[];return t.forEach((function(t){e.push(t.querySelector(\".apexcharts-marker\"))})),e}},{key:\"hasMarkers\",value:function(t){return this.getElMarkers(t).length>0}},{key:\"getElBars\",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series\")}},{key:\"hasBars\",value:function(){return this.getElBars().length>0}},{key:\"getHoverMarkerSize\",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:\"toggleAllTooltipSeriesGroups\",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-tooltip-series-group\"));for(var a=i.allTooltipSeriesGroups,s=0;s\",e=\"
\";d.forEach((function(i,a){t+='
').concat(i.attrs.name,\"
\"),e+=\"
\".concat(i.val,\"
\")})),v.innerHTML=t+\"
\",m.innerHTML=e+\"\"};o?l.globals.seriesGoals[e][i]&&Array.isArray(l.globals.seriesGoals[e][i])?y():(v.innerHTML=\"\",m.innerHTML=\"\"):y()}else v.innerHTML=\"\",m.innerHTML=\"\";null!==p&&(a[e].querySelector(\".apexcharts-tooltip-text-z-label\").innerHTML=l.config.tooltip.z.title,a[e].querySelector(\".apexcharts-tooltip-text-z-value\").innerHTML=void 0!==p?p:\"\");if(o&&f[0]){if(l.config.tooltip.hideEmptySeries){var w=a[e].querySelector(\".apexcharts-tooltip-marker\"),k=a[e].querySelector(\".apexcharts-tooltip-text\");0==parseFloat(c)?(w.style.display=\"none\",k.style.display=\"none\"):(w.style.display=\"block\",k.style.display=\"block\")}null==c||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1?f[0].parentNode.style.display=\"none\":f[0].parentNode.style.display=l.config.tooltip.items.display}}},{key:\"toggleActiveInactiveSeries\",value:function(t){var e=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups(\"enable\");else{this.tooltipUtil.toggleAllTooltipSeriesGroups(\"disable\");var i=e.globals.dom.baseEl.querySelector(\".apexcharts-tooltip-series-group\");i&&(i.classList.add(\"apexcharts-active\"),i.style.display=e.config.tooltip.items.display)}}},{key:\"getValuesToPrint\",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r=\"\",o=\"\",n=null,l=null,h={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},c=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric&&\"treemap\"!==a.config.chart.type?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=void 0!==a.globals.labels[i]?a.globals.labels[i]:\"\";var d=r;a.globals.isXNumeric&&\"datetime\"===a.config.xaxis.type?r=new S(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new A(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](d,h):a.globals.xLabelFormatter(d,h);return void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,h)),a.globals.seriesZ.length>0&&a.globals.seriesZ[e].length>0&&(n=c(a.globals.seriesZ[e][i],a)),o=\"function\"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,h):r,{val:Array.isArray(l)?l.join(\" \"):l,xVal:Array.isArray(r)?r.join(\" \"):r,xAxisTTVal:Array.isArray(o)?o.join(\" \"):o,zVal:n}}},{key:\"handleCustomTooltip\",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,o=this.ttCtx.getElTooltip(),n=r.config.tooltip.custom;Array.isArray(n)&&n[e]&&(n=n[e]),o.innerHTML=n({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r})}}]),t}(),ut=function(){function t(e){a(this,t),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return r(t,[{key:\"moveXCrosshairs\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,o=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/o*e),null===s||a.globals.isBarHorizontal||(s.setAttribute(\"x\",r),s.setAttribute(\"x1\",r),s.setAttribute(\"x2\",r),s.setAttribute(\"y2\",a.globals.gridHeight),s.classList.add(\"apexcharts-active\")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var n=r;\"tickWidth\"!==a.config.xaxis.crosshairs.width&&\"barWidth\"!==a.config.xaxis.crosshairs.width||(n=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(n)}}},{key:\"moveYCrosshairs\",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&m.setAttrs(e.ycrosshairs,{y1:t,y2:t}),null!==e.ycrosshairsHidden&&m.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t})}},{key:\"moveXAxisTooltip\",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip&&0!==i.xcrosshairsWidth){i.xaxisTooltip.classList.add(\"apexcharts-active\");var a=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var s;s=new m(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+\"px\",i.xaxisTooltip.style.left=t+\"px\",i.xaxisTooltip.style.top=a+\"px\"}}}},{key:\"moveYAxisTooltip\",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxistooltip\"));var a=parseInt(i.ycrosshairsHidden.getAttribute(\"y1\"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect().height,o=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(o-=26),s-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add(\"apexcharts-active\"),i.yaxisTTEls[t].style.top=s+\"px\",i.yaxisTTEls[t].style.left=o+e.config.yaxis[t].tooltip.offsetX+\"px\"):i.yaxisTTEls[t].classList.remove(\"apexcharts-active\")}},{key:\"moveTooltip\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),o=s.tooltipRect,n=null!==i?parseFloat(i):1,l=parseFloat(t)+n+5,h=parseFloat(e)+n/2;if(l>a.globals.gridWidth/2&&(l=l-o.ttWidth-n-10),l>a.globals.gridWidth-o.ttWidth-10&&(l=a.globals.gridWidth-o.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var c=s.getElGrid().getBoundingClientRect();(l=s.e.clientX-c.left)>a.globals.gridWidth/2&&(l-=s.tooltipRect.ttWidth),(h=s.e.clientY+a.globals.translateY-c.top)>a.globals.gridHeight/2&&(h-=s.tooltipRect.ttHeight)}else a.globals.isBarHorizontal||o.ttHeight/2+h>a.globals.gridHeight&&(h=a.globals.gridHeight-o.ttHeight+a.globals.translateY);isNaN(l)||(l+=a.globals.translateX,r.style.left=l+\"px\",r.style.top=h+\"px\")}},{key:\"moveMarkers\",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(\" .apexcharts-series[data\\\\:realIndex='\".concat(t,\"'] .apexcharts-marker\")),r=0;r0&&(h.setAttribute(\"r\",n),h.setAttribute(\"cx\",i),h.setAttribute(\"cy\",a)),this.moveXCrosshairs(i),r.fixedTooltip||this.moveTooltip(i,a,n)}}},{key:\"moveDynamicPointsOnHover\",value:function(t){var e,i=this.ttCtx,a=i.w,s=0,r=0,o=a.globals.pointsArray;e=new W(this.ctx).getActiveConfigSeriesIndex(\"asc\",[\"line\",\"area\",\"scatter\",\"bubble\"]);var n=i.tooltipUtil.getHoverMarkerSize(e);o[e]&&(s=o[e][t][0],r=o[e][t][1]);var l=i.tooltipUtil.getAllMarkers();if(null!==l)for(var h=0;h0?(l[h]&&l[h].setAttribute(\"r\",n),l[h]&&l[h].setAttribute(\"cy\",d)):l[h]&&l[h].setAttribute(\"r\",0)}}this.moveXCrosshairs(s),i.fixedTooltip||this.moveTooltip(s,r||a.globals.gridHeight,n)}},{key:\"moveStickyTooltipOverBars\",value:function(t,e){var i=this.w,a=this.ttCtx,s=i.globals.columnSeries?i.globals.columnSeries.length:i.globals.series.length,r=s>=2&&s%2==0?Math.floor(s/2):Math.floor(s/2)+1;i.globals.isBarHorizontal&&(r=new W(this.ctx).getActiveConfigSeriesIndex(\"desc\")+1);var o=i.globals.dom.baseEl.querySelector(\".apexcharts-bar-series .apexcharts-series[rel='\".concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-candlestick-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-boxPlot-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"'], .apexcharts-rangebar-series .apexcharts-series[rel='\").concat(r,\"'] path[j='\").concat(t,\"']\"));o||\"number\"!=typeof e||(o=i.globals.dom.baseEl.querySelector(\".apexcharts-bar-series .apexcharts-series[data\\\\:realIndex='\".concat(e,\"'] path[j='\").concat(t,\"'],\\n .apexcharts-candlestick-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"'],\\n .apexcharts-boxPlot-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"'],\\n .apexcharts-rangebar-series .apexcharts-series[data\\\\:realIndex='\").concat(e,\"'] path[j='\").concat(t,\"']\")));var n=o?parseFloat(o.getAttribute(\"cx\")):0,l=o?parseFloat(o.getAttribute(\"cy\")):0,h=o?parseFloat(o.getAttribute(\"barWidth\")):0,c=a.getElGrid().getBoundingClientRect(),d=o&&(o.classList.contains(\"apexcharts-candlestick-area\")||o.classList.contains(\"apexcharts-boxPlot-area\"));i.globals.isXNumeric?(o&&!d&&(n-=s%2!=0?h/2:0),o&&d&&i.globals.comboCharts&&(n-=h/2)):i.globals.isBarHorizontal||(n=a.xAxisTicksPositions[t-1]+a.dataPointsDividedWidth/2,isNaN(n)&&(n=a.xAxisTicksPositions[t]-a.dataPointsDividedWidth/2)),i.globals.isBarHorizontal?l-=a.tooltipRect.ttHeight:i.config.tooltip.followCursor?l=a.e.clientY-c.top-a.tooltipRect.ttHeight/2:l+a.tooltipRect.ttHeight+15>i.globals.gridHeight&&(l=i.globals.gridHeight),i.globals.isBarHorizontal||this.moveXCrosshairs(n),a.fixedTooltip||this.moveTooltip(n,l||i.globals.gridHeight)}}]),t}(),pt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new ut(e)}return r(t,[{key:\"drawDynamicPoints\",value:function(){var t=this.w,e=new m(this.ctx),i=new D(this.ctx),a=t.globals.dom.baseEl.querySelectorAll(\".apexcharts-series\");a=u(a),t.config.chart.stacked&&a.sort((function(t,e){return parseFloat(t.getAttribute(\"data:realIndex\"))-parseFloat(e.getAttribute(\"data:realIndex\"))}));for(var s=0;s2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;\"bubble\"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute(\"cx\"),o=e.getAttribute(\"cy\");if(null!==i&&null!==a&&(r=i,o=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if(\"radar\"===s.config.chart.type){var n=this.ttCtx.getElGrid().getBoundingClientRect();r=this.ttCtx.e.clientX-n.left}this.tooltipPosition.moveTooltip(r,o,s.config.markers.hover.size)}}},{key:\"enlargePoints\",value:function(t){for(var e=this.w,i=this,a=this.ttCtx,s=t,r=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker\"),o=e.config.markers.hover.size,n=0;n=0?t[e].setAttribute(\"r\",i):t[e].setAttribute(\"r\",0)}}}]),t}(),ft=function(){function t(e){a(this,t),this.w=e.w;var i=this.w;this.ttCtx=e,this.isVerticalGroupedRangeBar=!i.globals.isBarHorizontal&&\"rangeBar\"===i.config.chart.type&&i.config.plotOptions.bar.rangeBarGroupRows}return r(t,[{key:\"getAttr\",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:\"handleHeatTreeTooltip\",value:function(t){var e=t.e,i=t.opt,a=t.x,s=t.y,r=t.type,o=this.ttCtx,n=this.w;if(e.target.classList.contains(\"apexcharts-\".concat(r,\"-rect\"))){var l=this.getAttr(e,\"i\"),h=this.getAttr(e,\"j\"),c=this.getAttr(e,\"cx\"),d=this.getAttr(e,\"cy\"),g=this.getAttr(e,\"width\"),u=this.getAttr(e,\"height\");if(o.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:l,j:h,shared:!1,e:e}),n.globals.capturedSeriesIndex=l,n.globals.capturedDataPointIndex=h,a=c+o.tooltipRect.ttWidth/2+g,s=d+o.tooltipRect.ttHeight/2-u/2,o.tooltipPosition.moveXCrosshairs(c+g/2),a>n.globals.gridWidth/2&&(a=c-o.tooltipRect.ttWidth/2+g),o.w.config.tooltip.followCursor){var p=n.globals.dom.elWrap.getBoundingClientRect();a=n.globals.clientX-p.left-(a>n.globals.gridWidth/2?o.tooltipRect.ttWidth:0),s=n.globals.clientY-p.top-(s>n.globals.gridHeight/2?o.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:\"handleMarkerTooltip\",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,o=t.y,n=this.w,l=this.ttCtx;if(a.target.classList.contains(\"apexcharts-marker\")){var h=parseInt(s.paths.getAttribute(\"cx\"),10),c=parseInt(s.paths.getAttribute(\"cy\"),10),d=parseFloat(s.paths.getAttribute(\"val\"));if(i=parseInt(s.paths.getAttribute(\"rel\"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute(\"rel\"),10)-1,l.intersect){var g=x.findAncestor(s.paths,\"apexcharts-series\");g&&(e=parseInt(g.getAttribute(\"data:realIndex\"),10))}if(l.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!l.showOnIntersect&&n.config.tooltip.shared,e:a}),\"mouseup\"===a.type&&l.markerClick(a,e,i),n.globals.capturedSeriesIndex=e,n.globals.capturedDataPointIndex=i,r=h,o=c+n.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var u=l.getElGrid().getBoundingClientRect();o=l.e.clientY+n.globals.translateY-u.top}d<0&&(o=c),l.marker.enlargeCurrentPoint(i,s.paths,r,o)}return{x:r,y:o}}},{key:\"handleBarTooltip\",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=this.ttCtx,n=o.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:a,opt:s});e=d.i;var g=d.barHeight,u=d.j;r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=u,r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)&&(c=r.globals.svgHeight-o.tooltipRect.ttHeight);var p=parseInt(s.paths.parentNode.getAttribute(\"data:realIndex\"),10),f=r.globals.isMultipleYAxis?r.config.yaxis[p]&&r.config.yaxis[p].reversed:r.config.yaxis[0].reversed;if(h+o.tooltipRect.ttWidth>r.globals.gridWidth&&!f?h-=o.tooltipRect.ttWidth:h<0&&(h=0),o.w.config.tooltip.followCursor){var x=o.getElGrid().getBoundingClientRect();c=o.e.clientY-x.top}null===o.tooltip&&(o.tooltip=r.globals.dom.baseEl.querySelector(\".apexcharts-tooltip\")),r.config.tooltip.shared||(r.globals.comboBarCount>0?o.tooltipPosition.moveXCrosshairs(l+i/2):o.tooltipPosition.moveXCrosshairs(l)),!o.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars())&&(f&&(h-=o.tooltipRect.ttWidth)<0&&(h=0),!f||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||(c=c+g-2*(r.globals.series[e][u]<0?g:0)),c=c+r.globals.translateY-o.tooltipRect.ttHeight/2,n.style.left=h+r.globals.translateX+\"px\",n.style.top=c+\"px\")}},{key:\"getBarTooltipXY\",value:function(t){var e=this,i=t.e,a=t.opt,s=this.w,r=null,o=this.ttCtx,n=0,l=0,h=0,c=0,d=0,g=i.target.classList;if(g.contains(\"apexcharts-bar-area\")||g.contains(\"apexcharts-candlestick-area\")||g.contains(\"apexcharts-boxPlot-area\")||g.contains(\"apexcharts-rangebar-area\")){var u=i.target,p=u.getBoundingClientRect(),f=a.elGrid.getBoundingClientRect(),x=p.height;d=p.height;var b=p.width,v=parseInt(u.getAttribute(\"cx\"),10),m=parseInt(u.getAttribute(\"cy\"),10);c=parseFloat(u.getAttribute(\"barWidth\"));var y=\"touchmove\"===i.type?i.touches[0].clientX:i.clientX;r=parseInt(u.getAttribute(\"j\"),10),n=parseInt(u.parentNode.getAttribute(\"rel\"),10)-1;var w=u.getAttribute(\"data-range-y1\"),k=u.getAttribute(\"data-range-y2\");s.globals.comboCharts&&(n=parseInt(u.parentNode.getAttribute(\"data:realIndex\"),10));var A=function(t){return s.globals.isXNumeric?v-b/2:e.isVerticalGroupedRangeBar?v+b/2:v-o.dataPointsDividedWidth+b/2},S=function(){return m-o.dataPointsDividedHeight+x/2-o.tooltipRect.ttHeight/2};o.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:n,j:r,y1:w?parseInt(w,10):null,y2:k?parseInt(k,10):null,shared:!o.showOnIntersect&&s.config.tooltip.shared,e:i}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(l=y-f.left+15,h=S()):(l=A(),h=i.clientY-f.top-o.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((l=v)0&&i.setAttribute(\"width\",e.xcrosshairsWidth)}},{key:\"handleYCrosshair\",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(\".apexcharts-ycrosshairs\"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(\".apexcharts-ycrosshairs-hidden\")}},{key:\"drawYaxisTooltipText\",value:function(t,e,i){var a=this.ttCtx,s=this.w.globals,r=s.seriesYAxisMap[t];if(a.yaxisTooltips[t]&&r.length>0){var o=s.yLabelFormatters[t],n=a.getElGrid().getBoundingClientRect(),l=r[0];i.yRatio.length>1&&function(t){throw new TypeError('\"'+t+'\" is read-only')}(\"translationsIndex\");var h=(e-n.top)*i.yRatio[0],c=s.maxYArr[l]-s.minYArr[l],d=s.minYArr[l]+(c-h);a.tooltipPosition.moveYCrosshairs(e-n.top),a.yaxisTooltipText[t].innerHTML=o(d),a.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),bt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.tConfig=i.config.tooltip,this.tooltipUtil=new dt(this),this.tooltipLabels=new gt(this),this.tooltipPosition=new ut(this),this.marker=new pt(this),this.intersect=new ft(this),this.axesTooltip=new xt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!i.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return r(t,[{key:\"getElTooltip\",value:function(t){return t||(t=this),t.w.globals.dom.baseEl?t.w.globals.dom.baseEl.querySelector(\".apexcharts-tooltip\"):null}},{key:\"getElXCrosshairs\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-xcrosshairs\")}},{key:\"getElGrid\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-grid\")}},{key:\"drawTooltip\",value:function(t){var e=this.w;this.xyRatios=t,this.isXAxisTooltipEnabled=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.yaxisTooltips=e.config.yaxis.map((function(t,i){return!!(t.show&&t.tooltip.enabled&&e.globals.axisCharts)})),this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement(\"div\");if(i.classList.add(\"apexcharts-tooltip\"),e.config.tooltip.cssClass&&i.classList.add(e.config.tooltip.cssClass),i.classList.add(\"apexcharts-theme-\".concat(this.tConfig.theme)),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new V(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!e.globals.comboCharts&&!this.tConfig.intersect&&\"rangeBar\"!==e.config.chart.type||this.tConfig.shared||(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement(\"div\"),this.tooltipTitle.classList.add(\"apexcharts-tooltip-title\"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:e.globals.series.length),this.legendLabels=e.globals.dom.baseEl.querySelectorAll(\".apexcharts-legend-text\"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:\"createTTElements\",value:function(t){for(var e=this,i=this.w,a=[],s=this.getElTooltip(),r=function(r){var o=document.createElement(\"div\");o.classList.add(\"apexcharts-tooltip-series-group\"),o.style.order=i.config.tooltip.inverseOrder?t-r:r+1,e.tConfig.shared&&e.tConfig.enabledOnSeries&&Array.isArray(e.tConfig.enabledOnSeries)&&e.tConfig.enabledOnSeries.indexOf(r)<0&&o.classList.add(\"apexcharts-tooltip-series-group-hidden\");var n=document.createElement(\"span\");n.classList.add(\"apexcharts-tooltip-marker\"),n.style.backgroundColor=i.globals.colors[r],o.appendChild(n);var l=document.createElement(\"div\");l.classList.add(\"apexcharts-tooltip-text\"),l.style.fontFamily=e.tConfig.style.fontFamily||i.config.chart.fontFamily,l.style.fontSize=e.tConfig.style.fontSize,[\"y\",\"goals\",\"z\"].forEach((function(t){var e=document.createElement(\"div\");e.classList.add(\"apexcharts-tooltip-\".concat(t,\"-group\"));var i=document.createElement(\"span\");i.classList.add(\"apexcharts-tooltip-text-\".concat(t,\"-label\")),e.appendChild(i);var a=document.createElement(\"span\");a.classList.add(\"apexcharts-tooltip-text-\".concat(t,\"-value\")),e.appendChild(a),l.appendChild(e)})),o.appendChild(l),s.appendChild(o),a.push(o)},o=0;o0&&this.addPathsEventListeners(u,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}},{key:\"drawFixedTooltipRect\",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,o=this.tConfig.fixed.offsetY,n=this.tConfig.fixed.position.toLowerCase();return n.indexOf(\"right\")>-1&&(r=r+t.globals.svgWidth-a+10),n.indexOf(\"bottom\")>-1&&(o=o+t.globals.svgHeight-s-10),e.style.left=r+\"px\",e.style.top=o+\"px\",{x:r,y:o,ttWidth:a,ttHeight:s}}},{key:\"addDatapointEventsListeners\",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area\");this.addPathsEventListeners(e,t)}},{key:\"addPathsEventListeners\",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};[\"mousemove\",\"mouseup\",\"touchmove\",\"mouseout\",\"touchend\"].map((function(e){return t[a].addEventListener(e,i.onSeriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;s=100?this.seriesHover(t,e):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout((function(){i.seriesHover(t,e)}),100-a))}},{key:\"seriesHover\",value:function(t,e){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||0===s.globals.dataPoints)||(a.length?a.forEach((function(a){var s=i.getElTooltip(a),r={paths:t.paths,tooltipEl:s,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===i.w.globals.minX&&a.w.globals.maxX===i.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:r,e:e})})):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:\"seriesHoverByContext\",value:function(t){var e=t.chartCtx,i=t.ttCtx,a=t.opt,s=t.e,r=e.w,o=this.getElTooltip();if(o){if(i.tooltipRect={x:0,y:0,ttWidth:o.getBoundingClientRect().width,ttHeight:o.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared)if(this.tConfig.onDatasetHover.highlightDataSeries)new W(e).toggleSeriesOnHover(s,s.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect})}}},{key:\"axisChartsTooltips\",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=s.elGrid.getBoundingClientRect(),n=\"touchmove\"===a.type?a.touches[0].clientX:a.clientX,l=\"touchmove\"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=l,this.clientX=n,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,lo.top+o.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var h=parseInt(s.paths.getAttribute(\"index\"),10);if(this.tConfig.enabledOnSeries.indexOf(h)<0)return void this.handleMouseOut(s)}var c=this.getElTooltip(),d=this.getElXCrosshairs(),g=r.globals.xyCharts||\"bar\"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if(\"mousemove\"===a.type||\"touchmove\"===a.type||\"mouseup\"===a.type){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;null!==d&&d.classList.add(\"apexcharts-active\");var u=this.yaxisTooltips.filter((function(t){return!0===t}));if(null!==this.ycrosshairs&&u.length&&this.ycrosshairs.classList.add(\"apexcharts-active\"),g&&!this.showOnIntersect)this.handleStickyTooltip(a,n,l,s);else if(\"heatmap\"===r.config.chart.type||\"treemap\"===r.config.chart.type){var p=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:e,y:i,type:r.config.chart.type});e=p.x,i=p.y,c.style.left=e+\"px\",c.style.top=i+\"px\"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.yaxisTooltips.length)for(var f=0;fl.width)this.handleMouseOut(a);else if(null!==n)this.handleStickyCapturedSeries(t,n,a,o);else if(this.tooltipUtil.isXoverlap(o)||s.globals.isBarHorizontal){var h=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,h,o,a.ttItems)}}},{key:\"handleStickyCapturedSeries\",value:function(t,e,i,a){var s=this.w;if(!this.tConfig.shared&&null===s.globals.series[e][a])return void this.handleMouseOut(i);if(void 0!==s.globals.series[e][a])this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1);else if(this.tooltipUtil.isXoverlap(a)){var r=s.globals.series.findIndex((function(t,e){return!s.globals.collapsedSeriesIndices.includes(e)}));this.create(t,this,r,a,i.ttItems)}}},{key:\"deactivateHoverFilter\",value:function(){for(var t=this.w,e=new m(this.ctx),i=t.globals.dom.Paper.select(\".apexcharts-bar-area\"),a=0;a5&&void 0!==arguments[5]?arguments[5]:null,S=this.w,C=i;\"mouseup\"===t.type&&this.markerClick(t,a,s),null===A&&(A=this.tConfig.shared);var L=this.tooltipUtil.hasMarkers(a),P=this.tooltipUtil.getElBars();if(S.config.legend.tooltipHoverFormatter){var M=S.config.legend.tooltipHoverFormatter,I=Array.from(this.legendLabels);I.forEach((function(t){var e=t.getAttribute(\"data:default-text\");t.innerHTML=decodeURIComponent(e)}));for(var T=0;T0?C.marker.enlargePoints(s):C.tooltipPosition.moveDynamicPointsOnHover(s);else if(this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(P),this.barSeriesHeight>0)){var R=new m(this.ctx),H=S.globals.dom.Paper.select(\".apexcharts-bar-area[j='\".concat(s,\"']\"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(s,a);for(var D=0;D0&&a.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(u-=c*A)),k){u=u+g.height/2-v/2-2}var C=this.barCtx.series[s][r]<0,L=l;switch(this.barCtx.isReversed&&(L=l-d+(C?2*d:0),l-=d),x.position){case\"center\":p=k?C?L-d/2+w:L+d/2-w:C?L-d/2+g.height/2+w:L+d/2+g.height/2-w;break;case\"bottom\":p=k?C?L-d+w:L+d-w:C?L-d+g.height+v+w:L+d-g.height/2+v-w;break;case\"top\":p=k?C?L+w:L-w:C?L-g.height/2-w:L+g.height+w}if(this.barCtx.lastActiveBarSerieIndex===o&&b.enabled){var P=new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:o,j:r}),f.fontSize);e=C?L-P.height/2-w-b.offsetY+18:L+P.height+w+b.offsetY-18,i=u+b.offsetX}return a.config.chart.stacked||(p<0?p=0+v:p+g.height/3>a.globals.gridHeight&&(p=a.globals.gridHeight-v)),{bcx:h,bcy:l,dataLabelsX:u,dataLabelsY:p,totalDataLabelsX:i,totalDataLabelsY:e,totalDataLabelsAnchor:\"middle\"}}},{key:\"calculateBarsDataLabelsPosition\",value:function(t){var e=this.w,i=t.x,a=t.i,s=t.j,r=t.realIndex,o=t.groupIndex,n=t.bcy,l=t.barHeight,h=t.barWidth,c=t.textRects,d=t.dataLabelsX,g=t.strokeWidth,u=t.dataLabelsConfig,p=t.barDataLabelsConfig,f=t.barTotalDataLabelsConfig,x=t.offX,b=t.offY,v=e.globals.gridHeight/e.globals.dataPoints;h=Math.abs(h);var y,w,k=(n+=-1!==o?o*l:0)-(this.barCtx.isRangeBar?0:v)+l/2+c.height/2+b-3,A=\"start\",S=this.barCtx.series[a][s]<0,C=i;switch(this.barCtx.isReversed&&(C=i+h-(S?2*h:0),i=e.globals.gridWidth-h),p.position){case\"center\":d=S?C+h/2-x:Math.max(c.width/2,C-h/2)+x;break;case\"bottom\":d=S?C+h-g-Math.round(c.width/2)-x:C-h+g+Math.round(c.width/2)+x;break;case\"top\":d=S?C-g+Math.round(c.width/2)-x:C-g-Math.round(c.width/2)+x}if(this.barCtx.lastActiveBarSerieIndex===r&&f.enabled){var L=new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),u.fontSize);S?(y=C-g+Math.round(L.width/2)-x-f.offsetX-15,A=\"end\"):y=C-g-Math.round(L.width/2)+x+f.offsetX+15,w=k+f.offsetY}return e.config.chart.stacked||(d<0?d=d+c.width+g:d+c.width/2>e.globals.gridWidth&&(d=e.globals.gridWidth-c.width-g)),{bcx:i,bcy:n,dataLabelsX:d,dataLabelsY:k,totalDataLabelsX:y,totalDataLabelsY:w,totalDataLabelsAnchor:A}}},{key:\"drawCalculatedDataLabels\",value:function(t){var i=t.x,a=t.y,s=t.val,r=t.i,o=t.j,n=t.textRects,l=t.barHeight,h=t.barWidth,c=t.dataLabelsConfig,d=this.w,g=\"rotate(0)\";\"vertical\"===d.config.plotOptions.bar.dataLabels.orientation&&(g=\"rotate(-90, \".concat(i,\", \").concat(a,\")\"));var u=new N(this.barCtx.ctx),p=new m(this.barCtx.ctx),f=c.formatter,x=null,b=d.globals.collapsedSeriesIndices.indexOf(r)>-1;if(c.enabled&&!b){x=p.group({class:\"apexcharts-data-labels\",transform:g});var v=\"\";void 0!==s&&(v=f(s,e(e({},d),{},{seriesIndex:r,dataPointIndex:o,w:d}))),!s&&d.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(v=\"\");var y=d.globals.series[r][o]<0,w=d.config.plotOptions.bar.dataLabels.position;if(\"vertical\"===d.config.plotOptions.bar.dataLabels.orientation&&(\"top\"===w&&(c.textAnchor=y?\"end\":\"start\"),\"center\"===w&&(c.textAnchor=\"middle\"),\"bottom\"===w&&(c.textAnchor=y?\"end\":\"start\")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels)hMath.abs(h)&&(v=\"\"):n.height/1.6>Math.abs(l)&&(v=\"\"));var k=e({},c);this.barCtx.isHorizontal&&s<0&&(\"start\"===c.textAnchor?k.textAnchor=\"end\":\"end\"===c.textAnchor&&(k.textAnchor=\"start\")),u.plotDataLabelsText({x:i,y:a,text:v,i:r,j:o,parent:x,dataLabelsConfig:k,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return x}},{key:\"drawTotalDataLabels\",value:function(t){var e,i=t.x,a=t.y,s=t.val,r=t.barWidth,o=t.barHeight,n=t.realIndex,l=t.textAnchor,h=t.barTotalDataLabelsConfig,c=this.w,d=new m(this.barCtx.ctx);return h.enabled&&void 0!==i&&void 0!==a&&this.barCtx.lastActiveBarSerieIndex===n&&(e=d.drawText({x:i-(!c.globals.isBarHorizontal&&c.globals.seriesGroups.length?r/c.globals.seriesGroups.length:0),y:a-(c.globals.isBarHorizontal&&c.globals.seriesGroups.length?o/c.globals.seriesGroups.length:0),foreColor:h.style.color,text:s,textAnchor:l,fontFamily:h.style.fontFamily,fontSize:h.style.fontSize,fontWeight:h.style.fontWeight})),e}}]),t}(),mt=function(){function t(e){a(this,t),this.w=e.w,this.barCtx=e}return r(t,[{key:\"initVariables\",value:function(t){var e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;ae.globals.minX&&e.globals.seriesX[i][a]0&&(a=l.globals.minXDiff/d),(r=a/c*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}-1===String(this.barCtx.barOptions.columnWidth).indexOf(\"%\")&&(r=parseInt(this.barCtx.barOptions.columnWidth,10)),o=l.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.translationsIndex]-(this.barCtx.isReversed?l.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.translationsIndex]:0),t=l.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return l.globals.barHeight=s,l.globals.barWidth=r,{x:t,y:e,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:o,zeroW:n}}},{key:\"initializeStackedPrevVars\",value:function(t){var e=t.w;e.globals.hasSeriesGroups?e.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].prevY=[],t[e].prevX=[],t[e].prevYF=[],t[e].prevXF=[],t[e].prevYVal=[],t[e].prevXVal=[]})):(t.prevY=[],t.prevX=[],t.prevYF=[],t.prevXF=[],t.prevYVal=[],t.prevXVal=[])}},{key:\"initializeStackedXYVars\",value:function(t){var e=t.w;e.globals.hasSeriesGroups?e.globals.seriesGroups.forEach((function(e){t[e]||(t[e]={}),t[e].xArrj=[],t[e].xArrjF=[],t[e].xArrjVal=[],t[e].yArrj=[],t[e].yArrjF=[],t[e].yArrjVal=[]})):(t.xArrj=[],t.xArrjF=[],t.xArrjVal=[],t.yArrj=[],t.yArrjF=[],t.yArrjVal=[])}},{key:\"getPathFillColor\",value:function(t,e,i,a){var s,r,o,n,l=this.w,h=new H(this.barCtx.ctx),c=null,d=this.barCtx.barOptions.distributed?i:e;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(c=a.color)}));return l.config.series[e].data[i]&&l.config.series[e].data[i].fillColor&&(c=l.config.series[e].data[i].fillColor),h.fillPath({seriesNumber:this.barCtx.barOptions.distributed?d:a,dataPointIndex:i,color:c,value:t[e][i],fillConfig:null===(s=l.config.series[e].data[i])||void 0===s?void 0:s.fill,fillType:null!==(r=l.config.series[e].data[i])&&void 0!==r&&null!==(o=r.fill)&&void 0!==o&&o.type?null===(n=l.config.series[e].data[i])||void 0===n?void 0:n.fill.type:Array.isArray(l.config.fill.type)?l.config.fill.type[e]:l.config.fill.type})}},{key:\"getStrokeWidth\",value:function(t,e,i){var a=0,s=this.w;return void 0===this.barCtx.series[t][e]||null===this.barCtx.series[t][e]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:\"shouldApplyRadius\",value:function(t){var e=this.w,i=!1;return e.config.plotOptions.bar.borderRadius>0&&(e.config.chart.stacked&&\"last\"===e.config.plotOptions.bar.borderRadiusWhenStacked?this.barCtx.lastActiveBarSerieIndex===t&&(i=!0):i=!0),i}},{key:\"barBackground\",value:function(t){var e=t.j,i=t.i,a=t.x1,s=t.x2,r=t.y1,o=t.y2,n=t.elSeries,l=this.w,h=new m(this.barCtx.ctx),c=new W(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&c===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],g=h.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==o?o:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);n.add(g),g.node.classList.add(\"apexcharts-backgroundBar\")}}},{key:\"getColumnPaths\",value:function(t){var e,i=t.barWidth,a=t.barXPosition,s=t.y1,r=t.y2,o=t.strokeWidth,n=t.seriesGroup,l=t.realIndex,h=t.i,c=t.j,d=t.w,g=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[l]:o)||(o=0);var u=i,p=a;null!==(e=d.config.series[l].data[c])&&void 0!==e&&e.columnWidthOffset&&(p=a-d.config.series[l].data[c].columnWidthOffset/2,u=i+d.config.series[l].data[c].columnWidthOffset);var f=p,x=p+u;s+=.001,r+=.001;var b=g.move(f,s),v=g.move(f,s),y=g.line(x-o,s);if(d.globals.previousPaths.length>0&&(v=this.barCtx.getPreviousPath(l,c,!1)),b=b+g.line(f,r)+g.line(x-o,r)+g.line(x-o,s)+(\"around\"===d.config.plotOptions.bar.borderRadiusApplication?\" Z\":\" z\"),v=v+g.line(f,s)+y+y+y+y+y+g.line(f,s)+(\"around\"===d.config.plotOptions.bar.borderRadiusApplication?\" Z\":\" z\"),this.shouldApplyRadius(l)&&(b=g.roundPathCorners(b,d.config.plotOptions.bar.borderRadius)),d.config.chart.stacked){var w=this.barCtx;d.globals.hasSeriesGroups&&n&&(w=this.barCtx[n]),w.yArrj.push(r),w.yArrjF.push(Math.abs(s-r)),w.yArrjVal.push(this.barCtx.series[h][c])}return{pathTo:b,pathFrom:v}}},{key:\"getBarpaths\",value:function(t){var e,i=t.barYPosition,a=t.barHeight,s=t.x1,r=t.x2,o=t.strokeWidth,n=t.seriesGroup,l=t.realIndex,h=t.i,c=t.j,d=t.w,g=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[l]:o)||(o=0);var u=i,p=a;null!==(e=d.config.series[l].data[c])&&void 0!==e&&e.barHeightOffset&&(u=i-d.config.series[l].data[c].barHeightOffset/2,p=a+d.config.series[l].data[c].barHeightOffset);var f=u,x=u+p;s+=.001,r+=.001;var b=g.move(s,f),v=g.move(s,f);d.globals.previousPaths.length>0&&(v=this.barCtx.getPreviousPath(l,c,!1));var y=g.line(s,x-o);if(b=b+g.line(r,f)+g.line(r,x-o)+y+(\"around\"===d.config.plotOptions.bar.borderRadiusApplication?\" Z\":\" z\"),v=v+g.line(s,f)+y+y+y+y+y+g.line(s,f)+(\"around\"===d.config.plotOptions.bar.borderRadiusApplication?\" Z\":\" z\"),this.shouldApplyRadius(l)&&(b=g.roundPathCorners(b,d.config.plotOptions.bar.borderRadius)),d.config.chart.stacked){var w=this.barCtx;d.globals.hasSeriesGroups&&n&&(w=this.barCtx[n]),w.xArrj.push(r),w.xArrjF.push(Math.abs(s-r)),w.xArrjVal.push(this.barCtx.series[h][c])}return{pathTo:b,pathFrom:v}}},{key:\"checkZeroSeries\",value:function(t){for(var e=t.series,i=this.w,a=0;a2&&void 0!==arguments[2])||arguments[2]?e:null;return null!=t&&(i=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),i}},{key:\"getYForValue\",value:function(t,e,i){var a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3]?e:null;return null!=t&&(a=e-t/this.barCtx.yRatio[i]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[i]:0)),a}},{key:\"getGoalValues\",value:function(t,i,a,s,r,n){var l=this,h=this.w,c=[],d=function(e,s){var r;c.push((o(r={},t,\"x\"===t?l.getXForValue(e,i,!1):l.getYForValue(e,a,n,!1)),o(r,\"attrs\",s),r))};if(h.globals.seriesGoals[s]&&h.globals.seriesGoals[s][r]&&Array.isArray(h.globals.seriesGoals[s][r])&&h.globals.seriesGoals[s][r].forEach((function(t){d(t.value,t)})),this.barCtx.barOptions.isDumbbell&&h.globals.seriesRange.length){var g=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:h.globals.colors,u={strokeHeight:\"x\"===t?0:h.globals.markers.size[s],strokeWidth:\"x\"===t?h.globals.markers.size[s]:0,strokeDashArray:0,strokeLineCap:\"round\",strokeColor:Array.isArray(g[s])?g[s][0]:g[s]};d(h.globals.seriesRangeStart[s][r],u),d(h.globals.seriesRangeEnd[s][r],e(e({},u),{},{strokeColor:Array.isArray(g[s])?g[s][1]:g[s]}))}return c}},{key:\"drawGoalLine\",value:function(t){var e=t.barXPosition,i=t.barYPosition,a=t.goalX,s=t.goalY,r=t.barWidth,o=t.barHeight,n=new m(this.barCtx.ctx),l=n.group({className:\"apexcharts-bar-goals-groups\"});l.node.classList.add(\"apexcharts-element-hidden\"),this.barCtx.w.globals.delayedElements.push({el:l.node}),l.attr(\"clip-path\",\"url(#gridRectMarkerMask\".concat(this.barCtx.w.globals.cuid,\")\"));var h=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach((function(t){if(t.x>=-1&&t.x<=n.w.globals.gridWidth+1){var e=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:o/2,a=i+e+o/2;h=n.drawLine(t.x,a-2*e,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),l.add(h)}})):Array.isArray(s)&&s.forEach((function(t){if(t.y>=-1&&t.y<=n.w.globals.gridHeight+1){var i=void 0!==t.attrs.strokeWidth?t.attrs.strokeWidth:r/2,a=e+i+r/2;h=n.drawLine(a-2*i,t.y,a,t.y,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeHeight?t.attrs.strokeHeight:2,t.attrs.strokeLineCap),l.add(h)}})),l}},{key:\"drawBarShadow\",value:function(t){var e=t.prevPaths,i=t.currPaths,a=t.color,s=this.w,r=e.x,o=e.x1,n=e.barYPosition,l=i.x,h=i.x1,c=i.barYPosition,d=n+i.barHeight,g=new m(this.barCtx.ctx),u=new x,p=g.move(o,d)+g.line(r,d)+g.line(l,c)+g.line(h,c)+g.line(o,d)+(\"around\"===s.config.plotOptions.bar.borderRadiusApplication?\" Z\":\" z\");return g.drawPath({d:p,fill:u.shadeColor(.5,x.rgb2hex(a)),stroke:\"none\",strokeWidth:0,fillOpacity:1,classes:\"apexcharts-bar-shadows\"})}},{key:\"getZeroValueEncounters\",value:function(t){var e=t.i,i=t.j,a=this.w,s=0,r=0;return a.globals.seriesPercent.forEach((function(t,a){t[i]&&s++,athis.barOptions.dataLabels.maxItems&&console.warn(\"WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts\");for(var n=0,l=0;n0&&(this.visibleI=this.visibleI+1);var k=0,A=0;this.yRatio.length>1&&(this.yaxisIndex=a.globals.seriesYAxisReverseMap[v],this.translationsIndex=v);var S=this.translationsIndex;this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed;var C=this.barHelpers.initialPositions();p=C.y,k=C.barHeight,c=C.yDivision,g=C.zeroW,u=C.x,A=C.barWidth,h=C.xDivision,d=C.zeroH,this.horizontal||b.push(u+A/2);var L=s.group({class:\"apexcharts-datalabels\",\"data:realIndex\":v});a.globals.delayedElements.push({el:L.node}),L.node.classList.add(\"apexcharts-element-hidden\");var P=s.group({class:\"apexcharts-bar-goals-markers\"}),M=s.group({class:\"apexcharts-bar-shadows\"});a.globals.delayedElements.push({el:M.node}),M.node.classList.add(\"apexcharts-element-hidden\");for(var I=0;I0){var Y=this.barHelpers.drawBarShadow({color:\"string\"==typeof E&&-1===(null==E?void 0:E.indexOf(\"url\"))?E:x.hexToRgba(a.globals.colors[n]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:z});Y&&M.add(Y)}this.pathArr.push(z);var F=this.barHelpers.drawGoalLine({barXPosition:z.barXPosition,barYPosition:z.barYPosition,goalX:z.goalX,goalY:z.goalY,barHeight:k,barWidth:A});F&&P.add(F),p=z.y,u=z.x,I>0&&b.push(u+A/2),f.push(p),this.renderSeries({realIndex:v,pathFill:E,j:I,i:n,pathFrom:z.pathFrom,pathTo:z.pathTo,strokeWidth:T,elSeries:w,x:u,y:p,series:t,barHeight:z.barHeight?z.barHeight:k,barWidth:z.barWidth?z.barWidth:A,elDataLabelsWrap:L,elGoalsMarkers:P,elBarShadows:M,visibleSeries:this.visibleI,type:\"bar\"})}a.globals.seriesXvalues[v]=b,a.globals.seriesYvalues[v]=f,o.add(w)}return o}},{key:\"renderSeries\",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,o=t.groupIndex,n=t.pathFrom,l=t.pathTo,h=t.strokeWidth,c=t.elSeries,d=t.x,g=t.y,u=t.y1,p=t.y2,f=t.series,x=t.barHeight,b=t.barWidth,y=t.barXPosition,w=t.barYPosition,k=t.elDataLabelsWrap,A=t.elGoalsMarkers,S=t.elBarShadows,C=t.visibleSeries,L=t.type,P=this.w,M=new m(this.ctx);if(!a){var I=\"function\"==typeof P.globals.stroke.colors[e]?function(t){var e,i=P.config.stroke.colors;return Array.isArray(i)&&i.length>0&&((e=i[t])||(e=\"\"),\"function\"==typeof e)?e({value:P.globals.series[t][s],dataPointIndex:s,w:P}):e}(e):P.globals.stroke.colors[e];a=this.barOptions.distributed?P.globals.stroke.colors[s]:I}P.config.series[r].data[s]&&P.config.series[r].data[s].strokeColor&&(a=P.config.series[r].data[s].strokeColor),this.isNullValue&&(i=\"none\");var T=s/P.config.chart.animations.animateGradually.delay*(P.config.chart.animations.speed/P.globals.dataPoints)/2.4,z=M.renderPaths({i:r,j:s,realIndex:e,pathFrom:n,pathTo:l,stroke:a,strokeWidth:h,strokeLineCap:P.config.stroke.lineCap,fill:i,animationDelay:T,initialSpeed:P.config.chart.animations.speed,dataChangeSpeed:P.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-\".concat(L,\"-area\")});z.attr(\"clip-path\",\"url(#gridRectMask\".concat(P.globals.cuid,\")\"));var X=P.config.forecastDataPoints;X.count>0&&s>=P.globals.dataPoints-X.count&&(z.node.setAttribute(\"stroke-dasharray\",X.dashArray),z.node.setAttribute(\"stroke-width\",X.strokeWidth),z.node.setAttribute(\"fill-opacity\",X.fillOpacity)),void 0!==u&&void 0!==p&&(z.attr(\"data-range-y1\",u),z.attr(\"data-range-y2\",p)),new v(this.ctx).setSelectionFilter(z,e,s),c.add(z);var E=new vt(this).handleBarDataLabels({x:d,y:g,y1:u,y2:p,i:r,j:s,series:f,realIndex:e,groupIndex:o,barHeight:x,barWidth:b,barXPosition:y,barYPosition:w,renderedPath:z,visibleSeries:C});return null!==E.dataLabels&&k.add(E.dataLabels),E.totalDataLabels&&k.add(E.totalDataLabels),c.add(k),A&&c.add(A),S&&c.add(S),c}},{key:\"drawBarPaths\",value:function(t){var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.yDivision,h=t.elSeries,c=this.w,d=i.i,g=i.j;if(c.globals.isXNumeric)e=(n=(c.globals.seriesX[d][g]-c.globals.minX)/this.invertedXRatio-a)+a*this.visibleI;else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var u=0,p=0;c.globals.seriesPercent.forEach((function(t,e){t[g]&&u++,e0&&(a=this.seriesLen*a/u),e=n+a*this.visibleI,e-=a*p}else e=n+a*this.visibleI;this.isFunnel&&(r-=(this.barHelpers.getXForValue(this.series[d][g],r)-r)/2),o=this.barHelpers.getXForValue(this.series[d][g],r);var f=this.barHelpers.getBarpaths({barYPosition:e,barHeight:a,x1:r,x2:o,strokeWidth:s,series:this.series,realIndex:i.realIndex,i:d,j:g,w:c});return c.globals.isXNumeric||(n+=l),this.barHelpers.barBackground({j:g,i:d,y1:e-a*this.visibleI,y2:a*this.seriesLen,elSeries:h}),{pathTo:f.pathTo,pathFrom:f.pathFrom,x1:r,x:o,y:n,goalX:this.barHelpers.getGoalValues(\"x\",r,null,d,g),barYPosition:e,barHeight:a}}},{key:\"drawColumnPaths\",value:function(t){var e,i=t.indexes,a=t.x,s=t.y,r=t.xDivision,o=t.barWidth,n=t.zeroH,l=t.strokeWidth,h=t.elSeries,c=this.w,d=i.realIndex,g=i.translationsIndex,u=i.i,p=i.j,f=i.bc;if(c.globals.isXNumeric){var x=this.getBarXForNumericXAxis({x:a,j:p,realIndex:d,barWidth:o});a=x.x,e=x.barXPosition}else if(c.config.plotOptions.bar.hideZeroBarsWhenGrouped){var b=this.barHelpers.getZeroValueEncounters({i:u,j:p}),v=b.nonZeroColumns,m=b.zeroEncounters;v>0&&(o=this.seriesLen*o/v),e=a+o*this.visibleI,e-=o*m}else e=a+o*this.visibleI;s=this.barHelpers.getYForValue(this.series[u][p],n,g);var y=this.barHelpers.getColumnPaths({barXPosition:e,barWidth:o,y1:n,y2:s,strokeWidth:l,series:this.series,realIndex:d,i:u,j:p,w:c});return c.globals.isXNumeric||(a+=r),this.barHelpers.barBackground({bc:f,j:p,i:u,x1:e-l/2-o*this.visibleI,x2:o*this.seriesLen+l/2,elSeries:h}),{pathTo:y.pathTo,pathFrom:y.pathFrom,x:a,y:s,goalY:this.barHelpers.getGoalValues(\"y\",null,n,u,p,g),barXPosition:e,barWidth:o}}},{key:\"getBarXForNumericXAxis\",value:function(t){var e=t.x,i=t.barWidth,a=t.realIndex,s=t.j,r=this.w,o=a;return r.globals.seriesX[a].length||(o=r.globals.maxValsInArrayIndex),r.globals.seriesX[o][s]&&(e=(r.globals.seriesX[o][s]-r.globals.minX)/this.xRatio-i*this.seriesLen/2),{barXPosition:e+i*this.visibleI,x:e}}},{key:\"getPreviousPath\",value:function(t,e){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==a.globals.previousPaths[s].paths[e]&&(i=a.globals.previousPaths[s].paths[e].d)}return i}}]),t}(),wt=function(t){n(s,yt);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:\"draw\",value:function(t,i){var a=this,s=this.w;this.graphics=new m(this.ctx),this.bar=new yt(this.ctx,this.xyRatios);var r=new y(this.ctx,s);t=r.getLogSeries(t),this.yRatio=r.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t),\"100%\"===s.config.chart.stackType&&(t=s.globals.seriesPercent.slice()),this.series=t,this.barHelpers.initializeStackedPrevVars(this);for(var o=this.graphics.group({class:\"apexcharts-bar-series apexcharts-plot-series\"}),n=0,l=0,h=function(r,h){var c=void 0,d=void 0,g=void 0,u=void 0,p=-1;a.groupCtx=a,s.globals.seriesGroups.forEach((function(t,e){t.indexOf(s.globals.seriesNames[r])>-1&&(p=e)})),-1!==p&&(a.groupCtx=a[s.globals.seriesGroups[p]]);var f=[],b=[],v=s.globals.comboCharts?i[r]:r,m=0;a.yRatio.length>1&&(a.yaxisIndex=s.globals.seriesYAxisReverseMap[v][0],m=v),a.isReversed=s.config.yaxis[a.yaxisIndex]&&s.config.yaxis[a.yaxisIndex].reversed;var y=a.graphics.group({class:\"apexcharts-series\",seriesName:x.escapeString(s.globals.seriesNames[v]),rel:r+1,\"data:realIndex\":v});a.ctx.series.addCollapsedClassToSeries(y,v);var w=a.graphics.group({class:\"apexcharts-datalabels\",\"data:realIndex\":v}),k=a.graphics.group({class:\"apexcharts-bar-goals-markers\"}),A=0,S=0,C=a.initialPositions(n,l,c,d,g,u,m);l=C.y,A=C.barHeight,d=C.yDivision,u=C.zeroW,n=C.x,S=C.barWidth,c=C.xDivision,g=C.zeroH,s.globals.barHeight=A,s.globals.barWidth=S,a.barHelpers.initializeStackedXYVars(a),1===a.groupCtx.prevY.length&&a.groupCtx.prevY[0].every((function(t){return isNaN(t)}))&&(a.groupCtx.prevY[0]=a.groupCtx.prevY[0].map((function(t){return g})),a.groupCtx.prevYF[0]=a.groupCtx.prevYF[0].map((function(t){return 0})));for(var L=0;L1?(i=h.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:l*parseInt(h.config.plotOptions.bar.columnWidth,10)/100,-1===String(h.config.plotOptions.bar.columnWidth).indexOf(\"%\")&&(l=parseInt(h.config.plotOptions.bar.columnWidth,10)),s=h.globals.gridHeight-this.baseLineY[o]-(this.isReversed?h.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[o]:0),t=h.globals.padHorizontal+(i-l)/2);var c=h.globals.barGroups.length?h.globals.barGroups.length:1;return{x:t,y:e,yDivision:a,xDivision:i,barHeight:n/c,barWidth:l/c,zeroH:s,zeroW:r}}},{key:\"drawStackedBarPaths\",value:function(t){for(var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.groupIndex,h=t.seriesGroup,c=t.yDivision,d=t.elSeries,g=this.w,u=n+(-1!==l?l*a:0),p=i.i,f=i.j,x=i.translationsIndex,b=0,v=0;v0){var y=r;this.groupCtx.prevXVal[m-1][f]<0?y=this.series[p][f]>=0?this.groupCtx.prevX[m-1][f]+b-2*(this.isReversed?b:0):this.groupCtx.prevX[m-1][f]:this.groupCtx.prevXVal[m-1][f]>=0&&(y=this.series[p][f]>=0?this.groupCtx.prevX[m-1][f]:this.groupCtx.prevX[m-1][f]-b+2*(this.isReversed?b:0)),e=y}else e=r;o=null===this.series[p][f]?e:e+this.series[p][f]/this.invertedYRatio-2*(this.isReversed?this.series[p][f]/this.invertedYRatio:0);var w=this.barHelpers.getBarpaths({barYPosition:u,barHeight:a,x1:e,x2:o,strokeWidth:s,series:this.series,realIndex:i.realIndex,seriesGroup:h,i:p,j:f,w:g});return this.barHelpers.barBackground({j:f,i:p,y1:u,y2:a,elSeries:d}),n+=c,{pathTo:w.pathTo,pathFrom:w.pathFrom,goalX:this.barHelpers.getGoalValues(\"x\",r,null,p,f,x),barYPosition:u,x:o,y:n}}},{key:\"drawStackedColumnPaths\",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,o=t.zeroH,n=t.groupIndex,l=t.seriesGroup,h=t.elSeries,c=this.w,d=e.i,g=e.j,u=e.bc,p=e.translationsIndex;if(c.globals.isXNumeric){var f=c.globals.seriesX[d][g];f||(f=0),i=(f-c.globals.minX)/this.xRatio-r/2,c.globals.barGroups.length&&(i=(f-c.globals.minX)/this.xRatio-r/2*c.globals.barGroups.length)}for(var x,b=i+(-1!==n?n*r:0),v=0,m=0;m0&&!c.globals.isXNumeric||y>0&&c.globals.isXNumeric&&c.globals.seriesX[d-1][g]===c.globals.seriesX[d][g]){var w,k,A,S=Math.min(this.yRatio.length+1,d+1);if(void 0!==this.groupCtx.prevY[y-1]&&this.groupCtx.prevY[y-1].length)for(var C=1;C=0?A-v+2*(this.isReversed?v:0):A;break}if((null===(I=this.groupCtx.prevYVal[y-P])||void 0===I?void 0:I[g])>=0){k=this.series[d][g]>=0?A:A+v-2*(this.isReversed?v:0);break}}void 0===k&&(k=c.globals.gridHeight),x=null!==(w=this.groupCtx.prevYF[0])&&void 0!==w&&w.every((function(t){return 0===t}))&&this.groupCtx.prevYF.slice(1,y).every((function(t){return t.every((function(t){return isNaN(t)}))}))?o:k}else x=o;a=this.series[d][g]?x-this.series[d][g]/this.yRatio[p]+2*(this.isReversed?this.series[d][g]/this.yRatio[p]:0):x;var T=this.barHelpers.getColumnPaths({barXPosition:b,barWidth:r,y1:x,y2:a,yRatio:this.yRatio[p],strokeWidth:this.strokeWidth,series:this.series,seriesGroup:l,realIndex:e.realIndex,i:d,j:g,w:c});return this.barHelpers.barBackground({bc:u,j:g,i:d,x1:b,x2:r,elSeries:h}),i+=s,{pathTo:T.pathTo,pathFrom:T.pathFrom,goalY:this.barHelpers.getGoalValues(\"y\",null,o,d,g),barXPosition:b,x:c.globals.isXNumeric?i-s:i,y:a}}}]),s}(),kt=function(t){n(s,yt);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:\"draw\",value:function(t,i,a){var s=this,r=this.w,o=new m(this.ctx),n=r.globals.comboCharts?i:r.config.chart.type,l=new H(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=r.config.plotOptions.bar.horizontal;var h=new y(this.ctx,r);t=h.getLogSeries(t),this.series=t,this.yRatio=h.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);for(var c=o.group({class:\"apexcharts-\".concat(n,\"-series apexcharts-plot-series\")}),d=function(i){s.isBoxPlot=\"boxPlot\"===r.config.chart.type||\"boxPlot\"===r.config.series[i].type;var n,h,d,g,u=void 0,p=void 0,f=[],b=[],v=r.globals.comboCharts?a[i]:i,m=o.group({class:\"apexcharts-series\",seriesName:x.escapeString(r.globals.seriesNames[v]),rel:i+1,\"data:realIndex\":v});s.ctx.series.addCollapsedClassToSeries(m,v),t[i].length>0&&(s.visibleI=s.visibleI+1);var y,w,k=0;s.yRatio.length>1&&(s.yaxisIndex=r.globals.seriesYAxisReverseMap[v][0],k=v);var A=s.barHelpers.initialPositions();p=A.y,y=A.barHeight,h=A.yDivision,g=A.zeroW,u=A.x,w=A.barWidth,n=A.xDivision,d=A.zeroH,b.push(u+w/2);for(var S=o.group({class:\"apexcharts-datalabels\",\"data:realIndex\":v}),C=function(a){var o=s.barHelpers.getStrokeWidth(i,a,v),c=null,x={indexes:{i:i,j:a,realIndex:v,translationsIndex:k},x:u,y:p,strokeWidth:o,elSeries:m};c=s.isHorizontal?s.drawHorizontalBoxPaths(e(e({},x),{},{yDivision:h,barHeight:y,zeroW:g})):s.drawVerticalBoxPaths(e(e({},x),{},{xDivision:n,barWidth:w,zeroH:d})),p=c.y,u=c.x,a>0&&b.push(u+w/2),f.push(p),c.pathTo.forEach((function(e,n){var h=!s.isBoxPlot&&s.candlestickOptions.wick.useFillColor?c.color[n]:r.globals.stroke.colors[i],d=l.fillPath({seriesNumber:v,dataPointIndex:a,color:c.color[n],value:t[i][a]});s.renderSeries({realIndex:v,pathFill:d,lineFill:h,j:a,i:i,pathFrom:c.pathFrom,pathTo:e,strokeWidth:o,elSeries:m,x:u,y:p,series:t,barHeight:y,barWidth:w,elDataLabelsWrap:S,visibleSeries:s.visibleI,type:r.config.chart.type})}))},L=0;Lb.c&&(d=!1);var w=Math.min(b.o,b.c),k=Math.max(b.o,b.c),A=b.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[x][c]-n.globals.minX)/this.xRatio-s/2);var S=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(w=r,k=r):(w=r-w/f,k=r-k/f,v=r-b.h/f,y=r-b.l/f,A=r-b.m/f);var C=l.move(S,r),L=l.move(S+s/2,w);return n.globals.previousPaths.length>0&&(L=this.getPreviousPath(x,c,!0)),C=this.isBoxPlot?[l.move(S,w)+l.line(S+s/2,w)+l.line(S+s/2,v)+l.line(S+s/4,v)+l.line(S+s-s/4,v)+l.line(S+s/2,v)+l.line(S+s/2,w)+l.line(S+s,w)+l.line(S+s,A)+l.line(S,A)+l.line(S,w+o/2),l.move(S,A)+l.line(S+s,A)+l.line(S+s,k)+l.line(S+s/2,k)+l.line(S+s/2,y)+l.line(S+s-s/4,y)+l.line(S+s/4,y)+l.line(S+s/2,y)+l.line(S+s/2,k)+l.line(S,k)+l.line(S,A)+\"z\"]:[l.move(S,k)+l.line(S+s/2,k)+l.line(S+s/2,v)+l.line(S+s/2,k)+l.line(S+s,k)+l.line(S+s,w)+l.line(S+s/2,w)+l.line(S+s/2,y)+l.line(S+s/2,w)+l.line(S,w)+l.line(S,k-o/2)],L+=l.move(S,w),n.globals.isXNumeric||(i+=a),{pathTo:C,pathFrom:L,x:i,y:k,barXPosition:S,color:this.isBoxPlot?p:d?[g]:[u]}}},{key:\"drawHorizontalBoxPaths\",value:function(t){var e=t.indexes;t.x;var i=t.y,a=t.yDivision,s=t.barHeight,r=t.zeroW,o=t.strokeWidth,n=this.w,l=new m(this.ctx),h=e.i,c=e.j,d=this.boxOptions.colors.lower;this.isBoxPlot&&(d=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var g=this.invertedYRatio,u=e.realIndex,p=this.getOHLCValue(u,c),f=r,x=r,b=Math.min(p.o,p.c),v=Math.max(p.o,p.c),y=p.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[u][c]-n.globals.minX)/this.invertedXRatio-s/2);var w=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(b=r,v=r):(b=r+b/g,v=r+v/g,f=r+p.h/g,x=r+p.l/g,y=r+p.m/g);var k=l.move(r,w),A=l.move(b,w+s/2);return n.globals.previousPaths.length>0&&(A=this.getPreviousPath(u,c,!0)),k=[l.move(b,w)+l.line(b,w+s/2)+l.line(f,w+s/2)+l.line(f,w+s/2-s/4)+l.line(f,w+s/2+s/4)+l.line(f,w+s/2)+l.line(b,w+s/2)+l.line(b,w+s)+l.line(y,w+s)+l.line(y,w)+l.line(b+o/2,w),l.move(y,w)+l.line(y,w+s)+l.line(v,w+s)+l.line(v,w+s/2)+l.line(x,w+s/2)+l.line(x,w+s-s/4)+l.line(x,w+s/4)+l.line(x,w+s/2)+l.line(v,w+s/2)+l.line(v,w)+l.line(y,w)+\"z\"],A+=l.move(b,w),n.globals.isXNumeric||(i+=a),{pathTo:k,pathFrom:A,x:v,y:i,barYPosition:w,color:d}}},{key:\"getOHLCValue\",value:function(t,e){var i=this.w;return{o:this.isBoxPlot?i.globals.seriesCandleH[t][e]:i.globals.seriesCandleO[t][e],h:this.isBoxPlot?i.globals.seriesCandleO[t][e]:i.globals.seriesCandleH[t][e],m:i.globals.seriesCandleM[t][e],l:this.isBoxPlot?i.globals.seriesCandleC[t][e]:i.globals.seriesCandleL[t][e],c:this.isBoxPlot?i.globals.seriesCandleL[t][e]:i.globals.seriesCandleC[t][e]}}}]),s}(),At=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"checkColorRange\",value:function(){var t=this.w,e=!1,i=t.config.plotOptions[t.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map((function(t,i){t.from<=0&&(e=!0)})),e}},{key:\"getShadeColor\",value:function(t,e,i,a){var s=this.w,r=1,o=s.config.plotOptions[t].shadeIntensity,n=this.determineColor(t,e,i);s.globals.hasNegs||a?r=s.config.plotOptions[t].reverseNegativeShade?n.percent<0?n.percent/100*(1.25*o):(1-n.percent/100)*(1.25*o):n.percent<=0?1-(1+n.percent/100)*o:(1-n.percent/100)*o:(r=1-n.percent/100,\"treemap\"===t&&(r=(1-n.percent/100)*(1.25*o)));var l=n.color,h=new x;return s.config.plotOptions[t].enableShades&&(l=\"dark\"===this.w.config.theme.mode?x.hexToRgba(h.shadeColor(-1*r,n.color),s.config.fill.opacity):x.hexToRgba(h.shadeColor(r,n.color),s.config.fill.opacity)),{color:l,colorProps:n}}},{key:\"determineColor\",value:function(t,e,i){var a=this.w,s=a.globals.series[e][i],r=a.config.plotOptions[t],o=r.colorScale.inverse?i:e;r.distributed&&\"treemap\"===a.config.chart.type&&(o=i);var n=a.globals.colors[o],l=null,h=Math.min.apply(Math,u(a.globals.series[e])),c=Math.max.apply(Math,u(a.globals.series[e]));r.distributed||\"heatmap\"!==t||(h=a.globals.minY,c=a.globals.maxY),void 0!==r.colorScale.min&&(h=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var d=Math.abs(c)+Math.abs(h),g=100*s/(0===d?d-1e-6:d);r.colorScale.ranges.length>0&&r.colorScale.ranges.map((function(t,e){if(s>=t.from&&s<=t.to){n=t.color,l=t.foreColor?t.foreColor:null,h=t.from,c=t.to;var i=Math.abs(c)+Math.abs(h);g=100*s/(0===i?i-1e-6:i)}}));return{color:n,foreColor:l,percent:g}}},{key:\"calculateDataLabels\",value:function(t){var e=t.text,i=t.x,a=t.y,s=t.i,r=t.j,o=t.colorProps,n=t.fontSize,l=this.w.config.dataLabels,h=new m(this.ctx),c=new N(this.ctx),d=null;if(l.enabled){d=h.group({class:\"apexcharts-data-labels\"});var g=l.offsetX,u=l.offsetY,p=i+g,f=a+parseFloat(l.style.fontSize)/3+u;c.plotDataLabelsText({x:p,y:f,text:e,i:s,j:r,color:o.foreColor,parent:d,fontSize:n,dataLabelsConfig:l})}return d}},{key:\"addListeners\",value:function(t){var e=new m(this.ctx);t.node.addEventListener(\"mouseenter\",e.pathMouseEnter.bind(this,t)),t.node.addEventListener(\"mouseleave\",e.pathMouseLeave.bind(this,t)),t.node.addEventListener(\"mousedown\",e.pathMouseDown.bind(this,t))}}]),t}(),St=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w,this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new At(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return r(t,[{key:\"draw\",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:\"apexcharts-heatmap\"});a.attr(\"clip-path\",\"url(#gridRectMask\".concat(e.globals.cuid,\")\"));var s=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,o=0,n=!1;this.negRange=this.helpers.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(n=!0,l.reverse());for(var h=n?0:l.length-1;n?h=0;n?h++:h--){var c=i.group({class:\"apexcharts-series apexcharts-heatmap-series\",seriesName:x.escapeString(e.globals.seriesNames[h]),rel:h+1,\"data:realIndex\":h});if(this.ctx.series.addCollapsedClassToSeries(c,h),e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new v(this.ctx).dropShadow(c,d,h)}for(var g=0,u=e.config.plotOptions.heatmap.shadeIntensity,p=0;p-1&&this.pieClicked(d),i.config.dataLabels.enabled){var A=w.x,S=w.y,C=100*u/this.fullAngle+\"%\";if(0!==u&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?e.endAngle=e.endAngle-(a+o):a+o=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(h=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(h)>this.fullAngle&&(h-=this.fullAngle);var c=Math.PI*(h-90)/180,d=i.centerX+r*Math.cos(l),g=i.centerY+r*Math.sin(l),u=i.centerX+r*Math.cos(c),p=i.centerY+r*Math.sin(c),f=x.polarToCartesian(i.centerX,i.centerY,i.donutSize,h),b=x.polarToCartesian(i.centerX,i.centerY,i.donutSize,n),v=s>180?1:0,y=[\"M\",d,g,\"A\",r,r,0,v,1,u,p];return e=\"donut\"===i.chartType?[].concat(y,[\"L\",f.x,f.y,\"A\",i.donutSize,i.donutSize,0,v,0,b.x,b.y,\"L\",d,g,\"z\"]).join(\" \"):\"pie\"===i.chartType||\"polarArea\"===i.chartType?[].concat(y,[\"L\",i.centerX,i.centerY,\"L\",d,g]).join(\" \"):[].concat(y).join(\" \"),o.roundPathCorners(e,2*this.strokeWidth)}},{key:\"drawPolarElements\",value:function(t){var e=this.w,i=new _(this.ctx),a=new m(this.ctx),s=new Ct(this.ctx),r=a.group(),o=a.group(),n=i.niceScale(0,Math.ceil(this.maxY),0),l=n.result.reverse(),h=n.result.length;this.maxY=n.niceMax;for(var c=e.globals.radialSize,d=c/(h-1),g=0;g1&&t.total.show&&(s=t.total.color);var o=r.globals.dom.baseEl.querySelector(\".apexcharts-datalabel-label\"),n=r.globals.dom.baseEl.querySelector(\".apexcharts-datalabel-value\");i=(0,t.value.formatter)(i,r),a||\"function\"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=t.name.formatter(e,l,r),null!==o&&(o.textContent=e),null!==n&&(n.textContent=i),null!==o&&(o.style.fill=s)}},{key:\"printDataLabelsInner\",value:function(t,e){var i=this.w,a=t.getAttribute(\"data:value\"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute(\"rel\"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(\".apexcharts-datalabels-group\");null!==r&&(r.style.opacity=1)}},{key:\"drawSpokes\",value:function(t){var e=this,i=this.w,a=new m(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(0!==s.strokeWidth){for(var r=[],o=360/i.globals.series.length,n=0;n1)o&&!e.total.showAlways?l({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(e,e.total.label,e.total.formatter(s));else if(l({makeSliceOut:!1,printLabel:!0}),!o)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var h=s.globals.selectedDataPoints[0],c=s.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(this.chartType.toLowerCase(),\"-slice-\").concat(h));this.printDataLabelsInner(c,e)}else r&&s.globals.selectedDataPoints.length&&0===s.globals.selectedDataPoints[0].length&&(r.style.opacity=0);else r&&s.globals.series.length>1&&(r.style.opacity=0)}}]),t}(),Pt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var i=this.w;this.graphics=new m(this.ctx),this.lineColorArr=void 0!==i.globals.stroke.colors?i.globals.stroke.colors:i.globals.colors,this.defaultSize=i.globals.svgHeight0&&(f=i.getPreviousPath(n));for(var b=0;b=10?t.x>0?(i=\"start\",a+=10):t.x<0&&(i=\"end\",a-=10):i=\"middle\",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:\"getPreviousPath\",value:function(t){for(var e=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:\"getDataPointsPos\",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s=360&&(g=360-Math.abs(this.startAngle)-.1);var u=i.drawPath({d:\"\",stroke:c,strokeWidth:o*parseInt(h.strokeWidth,10)/100,fill:\"none\",strokeOpacity:h.opacity,classes:\"apexcharts-radialbar-area\"});if(h.dropShadow.enabled){var p=h.dropShadow;s.dropShadow(u,p)}l.add(u),u.attr(\"id\",\"apexcharts-radialbarTrack-\"+n),this.animatePaths(u,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:d,size:t.size,i:n,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return a}},{key:\"drawArcs\",value:function(t){var e=this.w,i=new m(this.ctx),a=new H(this.ctx),s=new v(this.ctx),r=i.group(),o=this.getStrokeWidth(t);t.size=t.size-o/2;var n=e.config.plotOptions.radialBar.hollow.background,l=t.size-o*t.series.length-this.margin*t.series.length-o*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(n=this.drawHollowImage(t,r,l,n));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:n||\"transparent\"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(c,d)}var g=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(g=0);var u=null;this.radialDataLabels.show&&(u=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:g})),\"back\"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),u&&r.add(u));var p=!1;e.config.plotOptions.radialBar.inverseOrder&&(p=!0);for(var f=p?t.series.length-1:0;p?f>=0:f100?100:t.series[f])/100,S=Math.round(this.totalAngle*A)+this.startAngle,C=void 0;e.globals.dataChanged&&(k=this.startAngle,C=Math.round(this.totalAngle*x.negToZero(e.globals.previousPaths[f])/100)+k),Math.abs(S)+Math.abs(w)>=360&&(S-=.01),Math.abs(C)+Math.abs(k)>=360&&(C-=.01);var L=S-w,P=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[f]:e.config.stroke.dashArray,M=i.drawPath({d:\"\",stroke:y,strokeWidth:o,fill:\"none\",fillOpacity:e.config.fill.opacity,classes:\"apexcharts-radialbar-area apexcharts-radialbar-slice-\"+f,strokeDashArray:P});if(m.setAttrs(M.node,{\"data:angle\":L,\"data:value\":t.series[f]}),e.config.chart.dropShadow.enabled){var I=e.config.chart.dropShadow;s.dropShadow(M,I,f)}if(s.setSelectionFilter(M,0,f),this.addListeners(M,this.radialDataLabels),b.add(M),M.attr({index:0,j:f}),this.barLabels.enabled){var T=x.polarToCartesian(t.centerX,t.centerY,t.size,w),z=this.barLabels.formatter(e.globals.seriesNames[f],{seriesIndex:f,w:e}),X=[\"apexcharts-radialbar-label\"];this.barLabels.onClick||X.push(\"apexcharts-no-click\");var E=this.barLabels.useSeriesColors?e.globals.colors[f]:e.config.chart.foreColor;E||(E=e.config.chart.foreColor);var Y=T.x-this.barLabels.margin,F=T.y,R=i.drawText({x:Y,y:F,text:z,textAnchor:\"end\",dominantBaseline:\"middle\",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:E,cssClass:X.join(\" \")});R.on(\"click\",this.onBarLabelClick),R.attr({rel:f+1}),0!==w&&R.attr({\"transform-origin\":\"\".concat(Y,\" \").concat(F),transform:\"rotate(\".concat(w,\" 0 0)\")}),b.add(R)}var D=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(D=e.config.chart.animations.speed),e.globals.dataChanged&&(D=e.config.chart.animations.dynamicAnimation.speed),this.animDur=D/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(M,{centerX:t.centerX,centerY:t.centerY,endAngle:S,startAngle:w,prevEndAngle:C,prevStartAngle:k,size:t.size,i:f,totalItems:2,animBeginArr:this.animBeginArr,dur:D,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:r,elHollow:c,dataLabels:u}}},{key:\"drawHollow\",value:function(t){var e=new m(this.ctx).drawCircle(2*t.size);return e.attr({class:\"apexcharts-radialbar-hollow\",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:\"drawHollowImage\",value:function(t,e,i,a){var s=this.w,r=new H(this.ctx),o=x.randomId(),n=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:n,patternID:\"pattern\".concat(s.globals.cuid).concat(o)}),a=\"url(#pattern\".concat(s.globals.cuid).concat(o,\")\");else{var l=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(c)}else{var d=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-l/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)}));e.add(d)}}return a}},{key:\"getStrokeWidth\",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}},{key:\"onBarLabelClick\",value:function(t){var e=parseInt(t.target.getAttribute(\"rel\"),10)-1,i=this.barLabels.onClick,a=this.w;i&&i(a.globals.seriesNames[e],{w:a,seriesIndex:e})}}]),i}(),It=function(t){n(s,yt);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:\"draw\",value:function(t,i){var a=this.w,s=new m(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=a.globals.seriesRangeStart,this.seriesRangeEnd=a.globals.seriesRangeEnd,this.barHelpers.initVariables(t);for(var r=s.group({class:\"apexcharts-rangebar-series apexcharts-plot-series\"}),n=0;n0&&(this.visibleI=this.visibleI+1);var b=0,v=0,y=0;this.yRatio.length>1&&(this.yaxisIndex=a.globals.seriesYAxisReverseMap[p][0],y=p);var w=this.barHelpers.initialPositions();u=w.y,d=w.zeroW,g=w.x,v=w.barWidth,b=w.barHeight,l=w.xDivision,h=w.yDivision,c=w.zeroH;for(var k=s.group({class:\"apexcharts-datalabels\",\"data:realIndex\":p}),A=s.group({class:\"apexcharts-rangebar-goals-markers\"}),S=0;S0}));return this.isHorizontal?(a=g.config.plotOptions.bar.rangeBarGroupRows?r+h*b:r+n*this.visibleI+h*b,v>-1&&!g.config.plotOptions.bar.rangeBarOverlap&&(u=g.globals.seriesRange[e][v].overlaps).indexOf(p)>-1&&(a=(n=d.barHeight/u.length)*this.visibleI+h*(100-parseInt(this.barOptions.barHeight,10))/100/2+n*(this.visibleI+u.indexOf(p))+h*b)):(b>-1&&(s=g.config.plotOptions.bar.rangeBarGroupRows?o+c*b:o+l*this.visibleI+c*b),v>-1&&!g.config.plotOptions.bar.rangeBarOverlap&&(u=g.globals.seriesRange[e][v].overlaps).indexOf(p)>-1&&(s=(l=d.barWidth/u.length)*this.visibleI+c*(100-parseInt(this.barOptions.barWidth,10))/100/2+l*(this.visibleI+u.indexOf(p))+c*b)),{barYPosition:a,barXPosition:s,barHeight:n,barWidth:l}}},{key:\"drawRangeColumnPaths\",value:function(t){var e=t.indexes,i=t.x,a=t.xDivision,s=t.barWidth,r=t.barXPosition,o=t.zeroH,n=this.w,l=e.i,h=e.j,c=this.yRatio[e.translationsIndex],d=e.realIndex,g=this.getRangeValue(d,h),u=Math.min(g.start,g.end),p=Math.max(g.start,g.end);void 0===this.series[l][h]||null===this.series[l][h]?u=o:(u=o-u/c,p=o-p/c);var f=Math.abs(p-u),x=this.barHelpers.getColumnPaths({barXPosition:r,barWidth:s,y1:u,y2:p,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:e.realIndex,i:d,j:h,w:n});if(n.globals.isXNumeric){var b=this.getBarXForNumericXAxis({x:i,j:h,realIndex:d,barWidth:s});i=b.x,r=b.barXPosition}else i+=a;return{pathTo:x.pathTo,pathFrom:x.pathFrom,barHeight:f,x:i,y:p,goalY:this.barHelpers.getGoalValues(\"y\",null,o,l,h,e.translationsIndex),barXPosition:r}}},{key:\"drawRangeBarPaths\",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,o=t.barHeight,n=t.barYPosition,l=t.zeroW,h=this.w,c=l+a/this.invertedYRatio,d=l+s/this.invertedYRatio,g=Math.abs(d-c),u=this.barHelpers.getBarpaths({barYPosition:n,barHeight:o,x1:c,x2:d,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:e.realIndex,realIndex:e.realIndex,j:e.j,w:h});return h.globals.isXNumeric||(i+=r),{pathTo:u.pathTo,pathFrom:u.pathFrom,barWidth:g,x:d,goalX:this.barHelpers.getGoalValues(\"x\",l,null,e.realIndex,e.j),y:i}}},{key:\"getRangeValue\",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),s}(),Tt=function(){function t(e){a(this,t),this.w=e.w,this.lineCtx=e}return r(t,[{key:\"sameValueSeriesFix\",value:function(t,e){var i=this.w;if((\"gradient\"===i.config.fill.type||\"gradient\"===i.config.fill.type[t])&&new y(this.lineCtx.ctx,i).seriesHaveSameValues(t)){var a=e[t].slice();a[a.length-1]=a[a.length-1]+1e-6,e[t]=a}return e}},{key:\"calculatePoints\",value:function(t){var e=t.series,i=t.realIndex,a=t.x,s=t.y,r=t.i,o=t.j,n=t.prevY,l=this.w,h=[],c=[];if(0===o){var d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;l.globals.isXNumeric&&(d=(l.globals.seriesX[i][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),h.push(d),c.push(x.isNumber(e[r][0])?n+l.config.markers.offsetY:null),h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null)}else h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null);return{x:h,y:c}}},{key:\"checkPreviousPaths\",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,a=t.realIndex,s=this.w,r=0;r0&&parseInt(o.realIndex,10)===parseInt(a,10)&&(\"line\"===o.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):\"area\"===o.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:\"determineFirstPrevY\",value:function(t){var e,i,a,s=t.i,r=t.realIndex,o=t.series,n=t.prevY,l=t.lineYPosition,h=t.translationsIndex,c=this.w,d=c.config.chart.stacked&&!c.globals.comboCharts||c.config.chart.stacked&&c.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||\"bar\"===(null===(e=this.w.config.series[r])||void 0===e?void 0:e.type)||\"column\"===(null===(i=this.w.config.series[r])||void 0===i?void 0:i.type));if(void 0!==(null===(a=o[s])||void 0===a?void 0:a[0]))n=(l=d&&s>0?this.lineCtx.prevSeriesY[s-1][0]:this.lineCtx.zeroY)-o[s][0]/this.lineCtx.yRatio[h]+2*(this.lineCtx.isReversed?o[s][0]/this.lineCtx.yRatio[h]:0);else if(d&&s>0&&void 0===o[s][0])for(var g=s-1;g>=0;g--)if(null!==o[g][0]&&void 0!==o[g][0]){n=l=this.lineCtx.prevSeriesY[g][0];break}return{prevY:n,lineYPosition:l}}}]),t}(),zt=function(t){for(var e,i,a,s,r=function(t){for(var e=[],i=t[0],a=t[1],s=e[0]=Yt(i,a),r=1,o=t.length-1;r9&&(s=3*a/Math.sqrt(s),r[l]=s*e,r[l+1]=s*i);for(var h=0;h<=o;h++)s=(t[Math.min(o,h+1)][0]-t[Math.max(0,h-1)][0])/(6*(1+r[h]*r[h])),n.push([s||0,r[h]*s||0]);return n},Xt=function(t){var e=zt(t),i=t[1],a=t[0],s=[],r=e[1],o=e[0];s.push(a,[a[0]+o[0],a[1]+o[1],i[0]-r[0],i[1]-r[1],i[0],i[1]]);for(var n=2,l=e.length;n1&&a[1].length<6){var s=a[0].length;a[1]=[2*a[0][s-2]-a[0][s-4],2*a[0][s-1]-a[0][s-3]].concat(a[1])}a[0]=a[0].slice(-2)}return a};function Yt(t,e){return(e[1]-t[1])/(e[0]-t[0])}var Ft=function(){function t(e,i,s){a(this,t),this.ctx=e,this.w=e.w,this.xyRatios=i,this.pointsChart=!(\"bubble\"!==this.w.config.chart.type&&\"scatter\"!==this.w.config.chart.type)||s,this.scatter=new O(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.lineHelpers=new Tt(this),this.markers=new D(this.ctx),this.prevSeriesY=[],this.categoryAxisCorrection=0,this.yaxisIndex=0}return r(t,[{key:\"draw\",value:function(t,i,a,s){var r,o=this.w,n=new m(this.ctx),l=o.globals.comboCharts?i:o.config.chart.type,h=n.group({class:\"apexcharts-\".concat(l,\"-series apexcharts-plot-series\")}),c=new y(this.ctx,o);this.yRatio=this.xyRatios.yRatio,this.zRatio=this.xyRatios.zRatio,this.xRatio=this.xyRatios.xRatio,this.baseLineY=this.xyRatios.baseLineY,t=c.getLogSeries(t),this.yRatio=c.getLogYRatios(this.yRatio);for(var d=[],g=0;g1?u:0;this._initSerieVariables(t,g,u);var f=[],x=[],b=[],v=o.globals.padHorizontal+this.categoryAxisCorrection;this.ctx.series.addCollapsedClassToSeries(this.elSeries,u),o.globals.isXNumeric&&o.globals.seriesX.length>0&&(v=(o.globals.seriesX[u][0]-o.globals.minX)/this.xRatio),b.push(v);var w,k=v,A=void 0,S=k,C=this.zeroY,L=this.zeroY;C=this.lineHelpers.determineFirstPrevY({i:g,realIndex:u,series:t,prevY:C,lineYPosition:0,translationsIndex:p}).prevY,\"monotoneCubic\"===o.config.stroke.curve&&null===t[g][0]?f.push(null):f.push(C),w=C;\"rangeArea\"===l&&(A=L=this.lineHelpers.determineFirstPrevY({i:g,realIndex:u,series:s,prevY:L,lineYPosition:0,translationsIndex:p}).prevY,x.push(null!==f[0]?L:null));var P=this._calculatePathsFrom({type:l,series:t,i:g,realIndex:u,translationsIndex:p,prevX:S,prevY:C,prevY2:L}),M=[f[0]],I=[x[0]],T={type:l,series:t,realIndex:u,translationsIndex:p,i:g,x:v,y:1,pX:k,pY:w,pathsFrom:P,linePaths:[],areaPaths:[],seriesIndex:a,lineYPosition:0,xArrj:b,yArrj:f,y2Arrj:x,seriesRangeEnd:s},z=this._iterateOverDataPoints(e(e({},T),{},{iterations:\"rangeArea\"===l?t[g].length-1:void 0,isRangeStart:!0}));if(\"rangeArea\"===l){for(var X=this._calculatePathsFrom({series:s,i:g,realIndex:u,prevX:S,prevY:L}),E=this._iterateOverDataPoints(e(e({},T),{},{series:s,xArrj:[v],yArrj:M,y2Arrj:I,pY:A,areaPaths:z.areaPaths,pathsFrom:X,iterations:s[g].length-1,isRangeStart:!1})),Y=z.linePaths.length/2,F=0;F0;R--)h.add(d[R-1]);else for(var H=0;H1&&(this.yaxisIndex=a.globals.seriesYAxisReverseMap[i],r=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[r]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[r]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||\"end\"===a.config.plotOptions.area.fillTo)&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:\"apexcharts-series\",zIndex:void 0!==a.config.series[i].zIndex?a.config.series[i].zIndex:i,seriesName:x.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:\"apexcharts-series-markers-wrap\",\"data:realIndex\":i}),this.elDataLabelsWrap=s.group({class:\"apexcharts-datalabels\",\"data:realIndex\":i});var o=t[e].length===a.globals.dataPoints;this.elSeries.attr({\"data:longestSeries\":o,rel:e+1,\"data:realIndex\":i}),this.appendPathFrom=!0}},{key:\"_calculatePathsFrom\",value:function(t){var e,i,a,s,r=t.type,o=t.series,n=t.i,l=t.realIndex,h=t.translationsIndex,c=t.prevX,d=t.prevY,g=t.prevY2,u=this.w,p=new m(this.ctx);if(null===o[n][0]){for(var f=0;f0){var x=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:l});a=x.pathFromLine,s=x.pathFromArea}return{prevX:c,prevY:d,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:\"_handlePaths\",value:function(t){var i=t.type,a=t.realIndex,s=t.i,r=t.paths,o=this.w,n=new m(this.ctx),l=new H(this.ctx);this.prevSeriesY.push(r.yArrj),o.globals.seriesXvalues[a]=r.xArrj,o.globals.seriesYvalues[a]=r.yArrj;var h=o.config.forecastDataPoints;if(h.count>0&&\"rangeArea\"!==i){var c=o.globals.seriesXvalues[a][o.globals.seriesXvalues[a].length-h.count-1],d=n.drawRect(c,0,o.globals.gridWidth,o.globals.gridHeight,0);o.globals.dom.elForecastMask.appendChild(d.node);var g=n.drawRect(0,0,c,o.globals.gridHeight,0);o.globals.dom.elNonForecastMask.appendChild(g.node)}this.pointsChart||o.globals.delayedElements.push({el:this.elPointsMain.node,index:a});var u={i:s,realIndex:a,animationDelay:s,initialSpeed:o.config.chart.animations.speed,dataChangeSpeed:o.config.chart.animations.dynamicAnimation.speed,className:\"apexcharts-\".concat(i)};if(\"area\"===i)for(var p=l.fillPath({seriesNumber:a}),f=0;f0&&\"rangeArea\"!==i){var S=n.renderPaths(k);S.node.setAttribute(\"stroke-dasharray\",h.dashArray),h.strokeWidth&&S.node.setAttribute(\"stroke-width\",h.strokeWidth),this.elSeries.add(S),S.attr(\"clip-path\",\"url(#forecastMask\".concat(o.globals.cuid,\")\")),A.attr(\"clip-path\",\"url(#nonForecastMask\".concat(o.globals.cuid,\")\"))}}}}},{key:\"_iterateOverDataPoints\",value:function(t){var e,i,a=this,s=t.type,r=t.series,o=t.iterations,n=t.realIndex,l=t.translationsIndex,h=t.i,c=t.x,d=t.y,g=t.pX,u=t.pY,p=t.pathsFrom,f=t.linePaths,b=t.areaPaths,v=t.seriesIndex,y=t.lineYPosition,w=t.xArrj,k=t.yArrj,A=t.y2Arrj,S=t.isRangeStart,C=t.seriesRangeEnd,L=this.w,P=new m(this.ctx),M=this.yRatio,I=p.prevY,T=p.linePath,z=p.areaPath,X=p.pathFromLine,E=p.pathFromArea,Y=x.isNumber(L.globals.minYArr[n])?L.globals.minYArr[n]:L.globals.minY;o||(o=L.globals.dataPoints>1?L.globals.dataPoints-1:L.globals.dataPoints);var F=function(t,e){return e-t/M[l]+2*(a.isReversed?t/M[l]:0)},R=d,H=L.config.chart.stacked&&!L.globals.comboCharts||L.config.chart.stacked&&L.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||\"bar\"===(null===(e=this.w.config.series[n])||void 0===e?void 0:e.type)||\"column\"===(null===(i=this.w.config.series[n])||void 0===i?void 0:i.type)),D=L.config.stroke.curve;Array.isArray(D)&&(D=Array.isArray(v)?D[v[h]]:D[h]);for(var O,N=0,W=0;W0&&L.globals.collapsedSeries.length-1){e--;break}return e>=0?e:0}(h-1)][W+1]}else y=this.zeroY;else y=this.zeroY;B?d=F(Y,y):(d=F(r[h][W+1],y),\"rangeArea\"===s&&(R=F(C[h][W+1],y))),w.push(c),!B||\"smooth\"!==L.config.stroke.curve&&\"monotoneCubic\"!==L.config.stroke.curve?(k.push(d),A.push(R)):(k.push(null),A.push(null));var V=this.lineHelpers.calculatePoints({series:r,x:c,y:d,realIndex:n,i:h,j:W,prevY:I}),j=this._createPaths({type:s,series:r,i:h,realIndex:n,j:W,x:c,y:d,y2:R,xArrj:w,yArrj:k,y2Arrj:A,pX:g,pY:u,pathState:N,segmentStartX:O,linePath:T,areaPath:z,linePaths:f,areaPaths:b,curve:D,isRangeStart:S});b=j.areaPaths,f=j.linePaths,g=j.pX,u=j.pY,N=j.pathState,O=j.segmentStartX,z=j.areaPath,T=j.linePath,!this.appendPathFrom||\"monotoneCubic\"===D&&\"rangeArea\"===s||(X+=P.line(c,this.zeroY),E+=P.line(c,this.zeroY)),this.handleNullDataPoints(r,V,h,W,n),this._handleMarkersAndLabels({type:s,pointsPos:V,i:h,j:W,realIndex:n,isRangeStart:S})}return{yArrj:k,xArrj:w,pathFromArea:E,areaPaths:b,pathFromLine:X,linePaths:f,linePath:T,areaPath:z}}},{key:\"_handleMarkersAndLabels\",value:function(t){var e=t.type,i=t.pointsPos,a=t.isRangeStart,s=t.i,r=t.j,o=t.realIndex,n=this.w,l=new N(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:o,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{n.globals.series[s].length>1&&this.elPointsMain.node.classList.add(\"apexcharts-element-hidden\");var h=this.markers.plotChartMarkers(i,o,r+1);null!==h&&this.elPointsMain.add(h)}var c=l.drawDataLabel({type:e,isRangeStart:a,pos:i,i:o,j:r+1});null!==c&&this.elDataLabelsWrap.add(c)}},{key:\"_createPaths\",value:function(t){var e=t.type,i=t.series,a=t.i;t.realIndex;var s=t.j,r=t.x,o=t.y,n=t.xArrj,l=t.yArrj,h=t.y2,c=t.y2Arrj,d=t.pX,g=t.pY,u=t.pathState,p=t.segmentStartX,f=t.linePath,x=t.areaPath,b=t.linePaths,v=t.areaPaths,y=t.curve,w=t.isRangeStart;this.w;var k,A=new m(this.ctx),S=this.areaBottomY,C=\"rangeArea\"===e,L=\"rangeArea\"===e&&w;switch(y){case\"monotoneCubic\":var P=w?l:c;switch(u){case 0:if(null===P[s+1])break;u=1;case 1:if(!(C?n.length===i[a].length:s===i[a].length-2))break;case 2:var M=w?n:n.slice().reverse(),I=w?P:P.slice().reverse(),T=(k=I,M.map((function(t,e){return[t,k[e]]})).filter((function(t){return null!==t[1]}))),z=T.length>1?Xt(T):T,X=[];C&&(L?v=T:X=v.reverse());var E=0,Y=0;if(function(t,e){for(var i=function(t){var e=[],i=0;return t.forEach((function(t){null!==t?i++:i>0&&(e.push(i),i=0)})),i>0&&e.push(i),e}(t),a=[],s=0,r=0;s4?(e+=\"C\".concat(a[0],\", \").concat(a[1]),e+=\", \".concat(a[2],\", \").concat(a[3]),e+=\", \".concat(a[4],\", \").concat(a[5])):s>2&&(e+=\"S\".concat(a[0],\", \").concat(a[1]),e+=\", \".concat(a[2],\", \").concat(a[3]))}return e}(t),i=Y,a=(Y+=t.length)-1;L?f=A.move(T[i][0],T[i][1])+e:C?f=A.move(X[i][0],X[i][1])+A.line(T[i][0],T[i][1])+e+A.line(X[a][0],X[a][1]):(f=A.move(T[i][0],T[i][1])+e,x=f+A.line(T[a][0],S)+A.line(T[i][0],S)+\"z\",v.push(x)),b.push(f)})),C&&E>1&&!L){var F=b.slice(E).reverse();b.splice(E),F.forEach((function(t){return b.push(t)}))}u=0}break;case\"smooth\":var R=.35*(r-d);if(null===i[a][s])u=0;else switch(u){case 0:if(p=d,f=L?A.move(d,c[s])+A.line(d,g):A.move(d,g),x=A.move(d,g),u=1,s=i[a].length-2&&(f+=L?A.curve(r,o,r,o,r,h)+A.move(r,h):A.move(r,o),x+=A.curve(r,o,r,o,r,S)+A.line(p,S)+\"z\",b.push(f),v.push(x))}}d=r,g=o;break;default:var O=function(t,e,i){var a=[];switch(t){case\"stepline\":a=A.line(e,null,\"H\")+A.line(null,i,\"V\");break;case\"linestep\":a=A.line(null,i,\"V\")+A.line(e,null,\"H\");break;case\"straight\":a=A.line(e,i)}return a};if(null===i[a][s])u=0;else switch(u){case 0:if(p=d,f=L?A.move(d,c[s])+A.line(d,g):A.move(d,g),x=A.move(d,g),u=1,s=i[a].length-2&&(f+=L?A.line(r,h):A.move(r,o),x+=A.line(r,S)+A.line(p,S)+\"z\",b.push(f),v.push(x))}}d=r,g=o}return{linePaths:b,areaPaths:v,pX:d,pY:g,pathState:u,segmentStartX:p,linePath:f,areaPath:x}}},{key:\"handleNullDataPoints\",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var o=this.strokeWidth-r.config.markers.strokeWidth/2;o>0||(o=0);var n=this.markers.plotChartMarkers(e,s,a+1,o,!0);null!==n&&this.elPointsMain.add(n)}}}]),t}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function t(e,i,a,s){this.xoffset=e,this.yoffset=i,this.height=s,this.width=a,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(t){var e,i=[],a=this.xoffset,s=this.yoffset,o=r(t)/this.height,n=r(t)/this.width;if(this.width>=this.height)for(e=0;e=this.height){var a=e/this.height,s=this.width-a;i=new t(this.xoffset+a,this.yoffset,s,this.height)}else{var r=e/this.width,o=this.height-r;i=new t(this.xoffset,this.yoffset+r,this.width,o)}return i}}function e(e,a,s,o,n){o=void 0===o?0:o,n=void 0===n?0:n;var l=i(function(t,e){var i,a=[],s=e/r(t);for(i=0;i=o}(e,l=t[0],n)?(e.push(l),i(t.slice(1),e,s,o)):(h=s.cutArea(r(e),o),o.push(s.getCoordinates(e)),i(t,[],h,o)),o;o.push(s.getCoordinates(e))}function a(t,e){var i=Math.min.apply(Math,t),a=Math.max.apply(Math,t),s=r(t);return Math.max(Math.pow(e,2)*a/Math.pow(s,2),Math.pow(s,2)/(Math.pow(e,2)*i))}function s(t){return t&&t.constructor===Array}function r(t){var e,i=0;for(e=0;er-a&&l.width<=o-s){var h=n.rotateAroundCenter(t.node);t.node.setAttribute(\"transform\",\"rotate(-90 \".concat(h.x,\" \").concat(h.y,\") translate(\").concat(l.height/3,\")\"))}}},{key:\"truncateLabels\",value:function(t,e,i,a,s,r){var o=new m(this.ctx),n=o.getTextRects(t,e).width+this.w.config.stroke.width+5>s-i&&r-a>s-i?r-a:s-i,l=o.getTextBasedOnMaxWidth({text:t,maxWidth:n,fontSize:e});return t.length!==l.length&&n/e<5?\"\":l}},{key:\"animateTreemap\",value:function(t,e,i,a){var s=new b(this.ctx);s.animateRect(t,{x:e.x,y:e.y,width:e.width,height:e.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,(function(){s.animationCompleted(t)}))}}]),t}(),Ot=86400,Nt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return r(t,[{key:\"calculateTimeScaleTicks\",value:function(t,i){var a=this,s=this.w;if(s.globals.allSeriesCollapsed)return s.globals.labels=[],s.globals.timescaleLabels=[],[];var r=new A(this.ctx),o=(i-t)/864e5;this.determineInterval(o),s.globals.disableZoomIn=!1,s.globals.disableZoomOut=!1,o<.00011574074074074075?s.globals.disableZoomIn=!0:o>5e4&&(s.globals.disableZoomOut=!0);var n=r.getTimeUnitsfromTimestamp(t,i,this.utc),l=s.globals.gridWidth/o,h=l/24,c=h/60,d=c/60,g=Math.floor(24*o),u=Math.floor(1440*o),p=Math.floor(o*Ot),f=Math.floor(o),x=Math.floor(o/30),b=Math.floor(o/365),v={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},m={firstVal:v,currentMillisecond:v.minMillisecond,currentSecond:v.minSecond,currentMinute:v.minMinute,currentHour:v.minHour,currentMonthDate:v.minDate,currentDate:v.minDate,currentMonth:v.minMonth,currentYear:v.minYear,daysWidthOnXAxis:l,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,secondsWidthOnXAxis:d,numberOfSeconds:p,numberOfMinutes:u,numberOfHours:g,numberOfDays:f,numberOfMonths:x,numberOfYears:b};switch(this.tickInterval){case\"years\":this.generateYearScale(m);break;case\"months\":case\"half_year\":this.generateMonthScale(m);break;case\"months_days\":case\"months_fortnight\":case\"days\":case\"week_days\":this.generateDayScale(m);break;case\"hours\":this.generateHourScale(m);break;case\"minutes_fives\":case\"minutes\":this.generateMinuteScale(m);break;case\"seconds_tens\":case\"seconds_fives\":case\"seconds\":this.generateSecondScale(m)}var y=this.timeScaleArray.map((function(t){var i={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return\"month\"===t.unit?e(e({},i),{},{day:1,value:t.value+1}):\"day\"===t.unit||\"hour\"===t.unit?e(e({},i),{},{value:t.value}):\"minute\"===t.unit?e(e({},i),{},{value:t.value,minute:t.value}):\"second\"===t.unit?e(e({},i),{},{value:t.value,minute:t.minute,second:t.second}):t}));return y.filter((function(t){var e=1,i=Math.ceil(s.globals.gridWidth/120),r=t.value;void 0!==s.config.xaxis.tickAmount&&(i=s.config.xaxis.tickAmount),y.length>i&&(e=Math.floor(y.length/i));var o=!1,n=!1;switch(a.tickInterval){case\"years\":\"year\"===t.unit&&(o=!0);break;case\"half_year\":e=7,\"year\"===t.unit&&(o=!0);break;case\"months\":e=1,\"year\"===t.unit&&(o=!0);break;case\"months_fortnight\":e=15,\"year\"!==t.unit&&\"month\"!==t.unit||(o=!0),30===r&&(n=!0);break;case\"months_days\":e=10,\"month\"===t.unit&&(o=!0),30===r&&(n=!0);break;case\"week_days\":e=8,\"month\"===t.unit&&(o=!0);break;case\"days\":e=1,\"month\"===t.unit&&(o=!0);break;case\"hours\":\"day\"===t.unit&&(o=!0);break;case\"minutes_fives\":case\"seconds_fives\":r%5!=0&&(n=!0);break;case\"seconds_tens\":r%10!=0&&(n=!0)}if(\"hours\"===a.tickInterval||\"minutes_fives\"===a.tickInterval||\"seconds_tens\"===a.tickInterval||\"seconds_fives\"===a.tickInterval){if(!n)return!0}else if((r%e==0||o)&&!n)return!0}))}},{key:\"recalcDimensionsBasedOnFormat\",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new ot(this.ctx).plotCoords()}},{key:\"determineInterval\",value:function(t){var e=24*t,i=60*e;switch(!0){case t/365>5:this.tickInterval=\"years\";break;case t>800:this.tickInterval=\"half_year\";break;case t>180:this.tickInterval=\"months\";break;case t>90:this.tickInterval=\"months_fortnight\";break;case t>60:this.tickInterval=\"months_days\";break;case t>30:this.tickInterval=\"week_days\";break;case t>2:this.tickInterval=\"days\";break;case e>2.4:this.tickInterval=\"hours\";break;case i>15:this.tickInterval=\"minutes_fives\";break;case i>5:this.tickInterval=\"minutes\";break;case i>1:this.tickInterval=\"seconds_tens\";break;case 60*i>20:this.tickInterval=\"seconds_fives\";break;default:this.tickInterval=\"seconds\"}}},{key:\"generateYearScale\",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,o=e.minYear,n=0,l=new A(this.ctx),h=\"year\";if(e.minDate>1||e.minMonth>0){var c=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);n=(l.determineDaysOfYear(e.minYear)-c+1)*s,o=e.minYear+1,this.timeScaleArray.push({position:n,value:o,unit:h,year:o,month:x.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:n,value:o,unit:h,year:a,month:x.monthMod(i+1)});for(var d=o,g=n,u=0;u1){l=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,n=x.monthMod(a+1);var g=s+d,u=x.monthMod(n),p=n;0===n&&(c=\"year\",p=g,u=1,g+=d+=1),this.timeScaleArray.push({position:l,value:p,unit:c,year:g,month:u})}else this.timeScaleArray.push({position:l,value:n,unit:c,year:s,month:x.monthMod(a)});for(var f=n+1,b=l,v=0,m=1;vo.determineDaysOfMonths(e+1,i)?(h=1,n=\"month\",g=e+=1,e):e},d=(24-e.minHour)*s,g=l,u=c(h,i,a);0===e.minHour&&1===e.minDate?(d=0,g=x.monthMod(e.minMonth),n=\"month\",h=e.minDate):1!==e.minDate&&0===e.minHour&&0===e.minMinute&&(d=0,l=e.minDate,g=l,u=c(h=l,i,a)),this.timeScaleArray.push({position:d,value:g,unit:n,year:this._getYear(a,u,0),month:x.monthMod(u),day:h});for(var p=d,f=0;fn.determineDaysOfMonths(e+1,s)&&(f=1,e+=1),{month:e,date:f}},c=function(t,e){return t>n.determineDaysOfMonths(e+1,s)?e+=1:e},d=60-(e.minMinute+e.minSecond/60),g=d*r,u=e.minHour+1,p=u;60===d&&(g=0,p=u=e.minHour);var f=i;p>=24&&(p=0,f+=1,l=\"day\");var b=h(f,a).month;b=c(f,b),this.timeScaleArray.push({position:g,value:u,unit:l,day:f,hour:p,year:s,month:x.monthMod(b)}),p++;for(var v=g,m=0;m=24)p=0,l=\"day\",b=h(f+=1,b).month,b=c(f,b);var y=this._getYear(s,b,0);v=60*r+v;var w=0===p?f:p;this.timeScaleArray.push({position:v,value:w,unit:l,hour:p,day:f,year:y,month:x.monthMod(b)}),p++}}},{key:\"generateMinuteScale\",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.minutesWidthOnXAxis,h=t.secondsWidthOnXAxis,c=t.numberOfMinutes,d=a+1,g=r,u=o,p=n,f=s,b=(60-i-e/1e3)*h,v=0;v=60&&(d=0,24===(f+=1)&&(f=0)),this.timeScaleArray.push({position:b,value:d,unit:\"minute\",hour:f,minute:d,day:g,year:this._getYear(p,u,0),month:x.monthMod(u)}),b+=l,d++}},{key:\"generateSecondScale\",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.secondsWidthOnXAxis,h=t.numberOfSeconds,c=i+1,d=a,g=r,u=o,p=n,f=s,b=(1e3-e)/1e3*l,v=0;v=60&&(c=0,++d>=60&&(d=0,24===++f&&(f=0))),this.timeScaleArray.push({position:b,value:c,unit:\"second\",hour:f,minute:d,second:c,day:g,year:this._getYear(p,u,0),month:x.monthMod(u)}),b+=l,c++}},{key:\"createRawDateString\",value:function(t,e){var i=t.year;return 0===t.month&&(t.month=1),i+=\"-\"+(\"0\"+t.month.toString()).slice(-2),\"day\"===t.unit?i+=\"day\"===t.unit?\"-\"+(\"0\"+e).slice(-2):\"-01\":i+=\"-\"+(\"0\"+(t.day?t.day:\"1\")).slice(-2),\"hour\"===t.unit?i+=\"hour\"===t.unit?\"T\"+(\"0\"+e).slice(-2):\"T00\":i+=\"T\"+(\"0\"+(t.hour?t.hour:\"0\")).slice(-2),\"minute\"===t.unit?i+=\":\"+(\"0\"+e).slice(-2):i+=\":\"+(t.minute?(\"0\"+t.minute).slice(-2):\"00\"),\"second\"===t.unit?i+=\":\"+(\"0\"+e).slice(-2):i+=\":00\",this.utc&&(i+=\".000Z\"),i}},{key:\"formatDates\",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new A(e.ctx),r=e.createRawDateString(t,a),o=s.getDate(s.parseDate(r));if(e.utc||(o=s.getDate(s.parseDateWithTimezone(r))),void 0===i.config.xaxis.labels.format){var n=\"dd MMM\",l=i.config.xaxis.labels.datetimeFormatter;\"year\"===t.unit&&(n=l.year),\"month\"===t.unit&&(n=l.month),\"day\"===t.unit&&(n=l.day),\"hour\"===t.unit&&(n=l.hour),\"minute\"===t.unit&&(n=l.minute),\"second\"===t.unit&&(n=l.second),a=s.formatDate(o,n)}else a=s.formatDate(o,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:\"removeOverlappingTS\",value:function(t){var e,i=this,a=new m(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,o=t.map((function(o,n){if(n>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,h=t[r].position;return o.position>h+l+10?(r=n,o):null}return o}));return o=o.filter((function(t){return null!==t}))}},{key:\"_getYear\",value:function(t,e,i){return t+Math.floor(e/12)+i}}]),t}(),Wt=function(){function t(e,i){a(this,t),this.ctx=i,this.w=i.w,this.el=e}return r(t,[{key:\"setupElements\",value:function(){var t=this.w.globals,e=this.w.config,i=e.chart.type;t.axisCharts=[\"line\",\"area\",\"bar\",\"rangeBar\",\"rangeArea\",\"candlestick\",\"boxPlot\",\"scatter\",\"bubble\",\"radar\",\"heatmap\",\"treemap\"].indexOf(i)>-1,t.xyCharts=[\"line\",\"area\",\"bar\",\"rangeBar\",\"rangeArea\",\"candlestick\",\"boxPlot\",\"scatter\",\"bubble\"].indexOf(i)>-1,t.isBarHorizontal=(\"bar\"===e.chart.type||\"rangeBar\"===e.chart.type||\"boxPlot\"===e.chart.type)&&e.plotOptions.bar.horizontal,t.chartClass=\".apexcharts\"+t.chartID,t.dom.baseEl=this.el,t.dom.elWrap=document.createElement(\"div\"),m.setAttrs(t.dom.elWrap,{id:t.chartClass.substring(1),class:\"apexcharts-canvas \"+t.chartClass.substring(1)}),this.el.appendChild(t.dom.elWrap),t.dom.Paper=new window.SVG.Doc(t.dom.elWrap),t.dom.Paper.attr({class:\"apexcharts-svg\",\"xmlns:data\":\"ApexChartsNS\",transform:\"translate(\".concat(e.chart.offsetX,\", \").concat(e.chart.offsetY,\")\")}),t.dom.Paper.node.style.background=\"dark\"!==e.theme.mode||e.chart.background?e.chart.background:\"rgba(0, 0, 0, 0.8)\",this.setSVGDimensions(),t.dom.elLegendForeign=document.createElementNS(t.SVGNS,\"foreignObject\"),m.setAttrs(t.dom.elLegendForeign,{x:0,y:0,width:t.svgWidth,height:t.svgHeight}),t.dom.elLegendWrap=document.createElement(\"div\"),t.dom.elLegendWrap.classList.add(\"apexcharts-legend\"),t.dom.elLegendWrap.setAttribute(\"xmlns\",\"http://www.w3.org/1999/xhtml\"),t.dom.elLegendForeign.appendChild(t.dom.elLegendWrap),t.dom.Paper.node.appendChild(t.dom.elLegendForeign),t.dom.elGraphical=t.dom.Paper.group().attr({class:\"apexcharts-inner apexcharts-graphical\"}),t.dom.elDefs=t.dom.Paper.defs(),t.dom.Paper.add(t.dom.elGraphical),t.dom.elGraphical.add(t.dom.elDefs)}},{key:\"plotChartType\",value:function(t,e){var i=this.w,a=i.config,s=i.globals,r={series:[],i:[]},o={series:[],i:[]},n={series:[],i:[]},l={series:[],i:[]},h={series:[],i:[]},c={series:[],i:[]},d={series:[],i:[]},g={series:[],i:[]},u={series:[],seriesRangeEnd:[],i:[]},p=void 0!==a.chart.type?a.chart.type:\"line\",f=0;s.series.map((function(e,x){void 0!==t[x].type?\"column\"===t[x].type||\"bar\"===t[x].type?(h.series.push(e),h.i.push(x),i.globals.columnSeries=h.series,\"bar\"!==p&&(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn(\"Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`\"),f++)):\"area\"===t[x].type?(o.series.push(e),o.i.push(x),p!==t[x].type&&f++):\"line\"===t[x].type?(r.series.push(e),r.i.push(x),p!==t[x].type&&f++):\"scatter\"===t[x].type?(n.series.push(e),n.i.push(x)):\"bubble\"===t[x].type?(l.series.push(e),l.i.push(x),p!==t[x].type&&f++):\"candlestick\"===t[x].type?(c.series.push(e),c.i.push(x),p!==t[x].type&&f++):\"boxPlot\"===t[x].type?(d.series.push(e),d.i.push(x),p!==t[x].type&&f++):\"rangeBar\"===t[x].type?(g.series.push(e),g.i.push(x),p!==t[x].type&&f++):\"rangeArea\"===t[x].type?(u.series.push(s.seriesRangeStart[x]),u.seriesRangeEnd.push(s.seriesRangeEnd[x]),u.i.push(x),p!==t[x].type&&f++):console.warn(\"You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble/candlestick/boxPlot/rangeBar/rangeArea\"):(r.series.push(e),r.i.push(x))})),s.comboCharts||(s.comboCharts=f>0);var x=new Ft(this.ctx,e),b=new kt(this.ctx,e);this.ctx.pie=new Lt(this.ctx);var v=new Mt(this.ctx);this.ctx.rangeBar=new It(this.ctx,e);var m=new Pt(this.ctx),y=[];if(s.comboCharts){if(o.series.length>0&&y.push(x.draw(o.series,\"area\",o.i)),h.series.length>0)if(i.config.chart.stacked){var w=new wt(this.ctx,e);y.push(w.draw(h.series,h.i))}else this.ctx.bar=new yt(this.ctx,e),y.push(this.ctx.bar.draw(h.series,h.i));if(u.series.length>0&&y.push(x.draw(u.series,\"rangeArea\",u.i,u.seriesRangeEnd)),r.series.length>0&&y.push(x.draw(r.series,\"line\",r.i)),c.series.length>0&&y.push(b.draw(c.series,\"candlestick\",c.i)),d.series.length>0&&y.push(b.draw(d.series,\"boxPlot\",d.i)),g.series.length>0&&y.push(this.ctx.rangeBar.draw(g.series,g.i)),n.series.length>0){var k=new Ft(this.ctx,e,!0);y.push(k.draw(n.series,\"scatter\",n.i))}if(l.series.length>0){var A=new Ft(this.ctx,e,!0);y.push(A.draw(l.series,\"bubble\",l.i))}}else switch(a.chart.type){case\"line\":y=x.draw(s.series,\"line\");break;case\"area\":y=x.draw(s.series,\"area\");break;case\"bar\":if(a.chart.stacked)y=new wt(this.ctx,e).draw(s.series);else this.ctx.bar=new yt(this.ctx,e),y=this.ctx.bar.draw(s.series);break;case\"candlestick\":y=new kt(this.ctx,e).draw(s.series,\"candlestick\");break;case\"boxPlot\":y=new kt(this.ctx,e).draw(s.series,a.chart.type);break;case\"rangeBar\":y=this.ctx.rangeBar.draw(s.series);break;case\"rangeArea\":y=x.draw(s.seriesRangeStart,\"rangeArea\",void 0,s.seriesRangeEnd);break;case\"heatmap\":y=new St(this.ctx,e).draw(s.series);break;case\"treemap\":y=new Dt(this.ctx,e).draw(s.series);break;case\"pie\":case\"donut\":case\"polarArea\":y=this.ctx.pie.draw(s.series);break;case\"radialBar\":y=v.draw(s.series);break;case\"radar\":y=m.draw(s.series);break;default:y=x.draw(s.series)}return y}},{key:\"setSVGDimensions\",value:function(){var t=this.w.globals,e=this.w.config;t.svgWidth=e.chart.width,t.svgHeight=e.chart.height;var i=x.getDimensions(this.el),a=e.chart.width.toString().split(/[0-9]+/g).pop();\"%\"===a?x.isNumber(i[0])&&(0===i[0].width&&(i=x.getDimensions(this.el.parentNode)),t.svgWidth=i[0]*parseInt(e.chart.width,10)/100):\"px\"!==a&&\"\"!==a||(t.svgWidth=parseInt(e.chart.width,10));var s=e.chart.height.toString().split(/[0-9]+/g).pop();if(\"auto\"!==t.svgHeight&&\"\"!==t.svgHeight)if(\"%\"===s){var r=x.getDimensions(this.el.parentNode);t.svgHeight=r[1]*parseInt(e.chart.height,10)/100}else t.svgHeight=parseInt(e.chart.height,10);else t.axisCharts?t.svgHeight=t.svgWidth/1.61:t.svgHeight=t.svgWidth/1.2;if(t.svgWidth<0&&(t.svgWidth=0),t.svgHeight<0&&(t.svgHeight=0),m.setAttrs(t.dom.Paper.node,{width:t.svgWidth,height:t.svgHeight}),\"%\"!==s){var o=e.chart.sparkline.enabled?0:t.axisCharts?e.chart.parentHeightOffset:0;t.dom.Paper.node.parentNode.parentNode.style.minHeight=t.svgHeight+o+\"px\"}t.dom.elWrap.style.width=t.svgWidth+\"px\",t.dom.elWrap.style.height=t.svgHeight+\"px\"}},{key:\"shiftGraphPosition\",value:function(){var t=this.w.globals,e=t.translateY,i={transform:\"translate(\"+t.translateX+\", \"+e+\")\"};m.setAttrs(t.dom.elGraphical.node,i)}},{key:\"resizeNonAxisCharts\",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,\"top\"!==t.config.legend.position&&\"bottom\"!==t.config.legend.position||!t.config.legend.show||t.config.legend.floating||(i=new lt(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=t.globals.dom.baseEl.querySelector(\".apexcharts-radialbar, .apexcharts-pie\"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled&&0!==t.config.plotOptions.radialBar.startAngle){var o=x.getBoundingClientRect(s);r=o.bottom;var n=o.bottom-o.top;r=Math.max(2.05*t.globals.radialSize,n)}var l=r+e.translateY+i+a;e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute(\"height\",l),t.config.chart.height&&String(t.config.chart.height).indexOf(\"%\")>0||(e.dom.elWrap.style.height=l+\"px\",m.setAttrs(e.dom.Paper.node,{height:l}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=l+\"px\")}},{key:\"coreCalculations\",value:function(){new U(this.ctx).init()}},{key:\"resetGlobals\",value:function(){var t=this,e=function(){return t.w.config.series.map((function(t){return[]}))},i=new F,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e()}},{key:\"isMultipleY\",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:\"xySettings\",value:function(){var t=null,e=this.w;if(e.globals.axisCharts){if(\"back\"===e.config.xaxis.crosshairs.position)new Q(this.ctx).drawXCrosshairs();if(\"back\"===e.config.yaxis[0].crosshairs.position)new Q(this.ctx).drawYCrosshairs();if(\"datetime\"===e.config.xaxis.type&&void 0===e.config.xaxis.labels.formatter){this.ctx.timeScale=new Nt(this.ctx);var i=[];isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX):e.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}t=new y(this.ctx).getCalculatedRatios()}return t}},{key:\"updateSourceChart\",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:\"setupBrushHandler\",value:function(){var t=this,e=this.w;if(e.config.chart.brush.enabled&&\"function\"!=typeof e.config.chart.events.selection){var i=Array.isArray(e.config.chart.brush.targets)?e.config.chart.brush.targets:[e.config.chart.brush.target];i.forEach((function(e){var i=ApexCharts.getChartByID(e);i.w.globals.brushSource=t.ctx,\"function\"!=typeof i.w.config.chart.events.zoomed&&(i.w.config.chart.events.zoomed=function(){t.updateSourceChart(i)}),\"function\"!=typeof i.w.config.chart.events.scrolled&&(i.w.config.chart.events.scrolled=function(){t.updateSourceChart(i)})})),e.config.chart.events.selection=function(t,e){i.forEach((function(t){ApexCharts.getChartByID(t).ctx.updateHelpers._updateOptions({xaxis:{min:e.xaxis.min,max:e.xaxis.max}},!1,!1,!1,!1)}))}}}}]),t}(),Bt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"_updateOptions\",value:function(t){var e=this,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return new Promise((function(n){var l=[e.ctx];r&&(l=e.ctx.getSyncedCharts()),e.ctx.w.globals.isExecCalled&&(l=[e.ctx],e.ctx.w.globals.isExecCalled=!1),l.forEach((function(r,h){var c=r.w;if(c.globals.shouldAnimate=s,a||(c.globals.resized=!0,c.globals.dataChanged=!0,s&&r.series.getPreviousPaths()),t&&\"object\"===i(t)&&(r.config=new Y(t),t=y.extendArrayProps(r.config,t,c),r.w.globals.chartID!==e.ctx.w.globals.chartID&&delete t.series,c.config=x.extend(c.config,t),o&&(c.globals.lastXAxis=t.xaxis?x.clone(t.xaxis):[],c.globals.lastYAxis=t.yaxis?x.clone(t.yaxis):[],c.globals.initialConfig=x.extend({},c.config),c.globals.initialSeries=x.clone(c.config.series),t.series))){for(var d=0;d2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(s){var r,o=i.w;return o.globals.shouldAnimate=e,o.globals.dataChanged=!0,e&&i.ctx.series.getPreviousPaths(),o.globals.axisCharts?(0===(r=t.map((function(t,e){return i._extendSeries(t,e)}))).length&&(r=[{data:[]}]),o.config.series=r):o.config.series=t.slice(),a&&(o.globals.initialConfig.series=x.clone(o.config.series),o.globals.initialSeries=x.clone(o.config.series)),i.ctx.update().then((function(){s(i.ctx)}))}))}},{key:\"_extendSeries\",value:function(t,i){var a=this.w,s=a.config.series[i];return e(e({},a.config.series[i]),{},{name:t.name?t.name:null==s?void 0:s.name,color:t.color?t.color:null==s?void 0:s.color,type:t.type?t.type:null==s?void 0:s.type,group:t.group?t.group:null==s?void 0:s.group,data:t.data?t.data:null==s?void 0:s.data,zIndex:void 0!==t.zIndex?t.zIndex:i})}},{key:\"toggleDataPointSelection\",value:function(t,e){var i=this.w,a=null,s=\".apexcharts-series[data\\\\:realIndex='\".concat(t,\"']\");return i.globals.axisCharts?a=i.globals.dom.Paper.select(\"\".concat(s,\" path[j='\").concat(e,\"'], \").concat(s,\" circle[j='\").concat(e,\"'], \").concat(s,\" rect[j='\").concat(e,\"']\")).members[0]:void 0===e&&(a=i.globals.dom.Paper.select(\"\".concat(s,\" path[j='\").concat(t,\"']\")).members[0],\"pie\"!==i.config.chart.type&&\"polarArea\"!==i.config.chart.type&&\"donut\"!==i.config.chart.type||this.ctx.pie.pieClicked(t)),a?(new m(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn(\"toggleDataPointSelection: Element not found\"),null)}},{key:\"forceXAxisUpdate\",value:function(t){var e=this.w;if([\"min\",\"max\"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new E(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:\"forceYAxisUpdate\",value:function(t){return t.chart&&t.chart.stacked&&\"100%\"===t.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:\"revertDefaultAxisMinMax\",value:function(t){var e=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;t&&t.xaxis&&(a=t.xaxis),t&&t.yaxis&&(s=t.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(t){void 0!==s[t]&&(i.config.yaxis[t].min=s[t].min,i.config.yaxis[t].max=s[t].max)};i.config.yaxis.map((function(t,a){i.globals.zoomed||void 0!==s[a]?r(a):void 0!==e.ctx.opts.yaxis[a]&&(t.min=e.ctx.opts.yaxis[a].min,t.max=e.ctx.opts.yaxis[a].max)}))}}]),t}();Rt=\"undefined\"!=typeof window?window:void 0,Ht=function(t,e){var a=(void 0!==this?this:t).SVG=function(t){if(a.supported)return t=new a.Doc(t),a.parser.draw||a.prepare(),t};if(a.ns=\"http://www.w3.org/2000/svg\",a.xmlns=\"http://www.w3.org/2000/xmlns/\",a.xlink=\"http://www.w3.org/1999/xlink\",a.svgjs=\"http://svgjs.dev\",a.supported=!0,!a.supported)return!1;a.did=1e3,a.eid=function(t){return\"Svgjs\"+d(t)+a.did++},a.create=function(t){var i=e.createElementNS(this.ns,t);return i.setAttribute(\"id\",this.eid(t)),i},a.extend=function(){var t,e;e=(t=[].slice.call(arguments)).pop();for(var i=t.length-1;i>=0;i--)if(t[i])for(var s in e)t[i].prototype[s]=e[s];a.Set&&a.Set.inherit&&a.Set.inherit()},a.invent=function(t){var e=\"function\"==typeof t.create?t.create:function(){this.constructor.call(this,a.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&a.extend(e,t.extend),t.construct&&a.extend(t.parent||a.Container,t.construct),e},a.adopt=function(e){return e?e.instance?e.instance:((i=\"svg\"==e.nodeName?e.parentNode instanceof t.SVGElement?new a.Nested:new a.Doc:\"linearGradient\"==e.nodeName?new a.Gradient(\"linear\"):\"radialGradient\"==e.nodeName?new a.Gradient(\"radial\"):a[d(e.nodeName)]?new(a[d(e.nodeName)]):new a.Element(e)).type=e.nodeName,i.node=e,e.instance=i,i instanceof a.Doc&&i.namespace().defs(),i.setData(JSON.parse(e.getAttribute(\"svgjs:data\"))||{}),i):null;var i},a.prepare=function(){var t=e.getElementsByTagName(\"body\")[0],i=(t?new a.Doc(t):a.adopt(e.documentElement).nested()).size(2,0);a.parser={body:t||e.documentElement,draw:i.style(\"opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden\").node,poly:i.polyline().node,path:i.path().node,native:a.create(\"svg\")}},a.parser={native:a.create(\"svg\")},e.addEventListener(\"DOMContentLoaded\",(function(){a.parser.draw||a.prepare()}),!1),a.regex={numberAndUnit:/^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,rgb:/rgb\\((\\d+),(\\d+),(\\d+)\\)/,reference:/#([a-z0-9\\-_]+)/i,transforms:/\\)\\s*,?\\s*/,whitespace:/\\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\\s+)?$/,isNumber:/^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,isPercent:/^-?[\\d\\.]+%$/,isImage:/\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i,delimiter:/[\\s,]+/,hyphen:/([^e])\\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\\d?\\.\\d+(?:e[+-]?\\d+)?)((?:\\.\\d+(?:e[+-]?\\d+)?)+))+/gi,dots:/\\./g},a.utils={map:function(t,e){for(var i=t.length,a=[],s=0;s1?1:t,new a.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),a.Color.test=function(t){return t+=\"\",a.regex.isHex.test(t)||a.regex.isRgb.test(t)},a.Color.isRgb=function(t){return t&&\"number\"==typeof t.r&&\"number\"==typeof t.g&&\"number\"==typeof t.b},a.Color.isColor=function(t){return a.Color.isRgb(t)||a.Color.test(t)},a.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},a.extend(a.Array,{toString:function(){return this.value.join(\" \")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)}}),a.PointArray=function(t,e){a.Array.call(this,t,e||[[0,0]])},a.PointArray.prototype=new a.Array,a.PointArray.prototype.constructor=a.PointArray;for(var s={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],[\"M\",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],[\"L\",t[0],t[1]]},H:function(t,e){return e.x=t[0],[\"H\",t[0]]},V:function(t,e){return e.y=t[0],[\"V\",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],[\"C\",t[0],t[1],t[2],t[3],t[4],t[5]]},Q:function(t,e){return e.x=t[2],e.y=t[3],[\"Q\",t[0],t[1],t[2],t[3]]},S:function(t,e){return e.x=t[2],e.y=t[3],[\"S\",t[0],t[1],t[2],t[3]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,[\"Z\"]}},r=\"mlhvqtcsaz\".split(\"\"),o=0,n=r.length;ol);return r},bbox:function(){return a.parser.draw||a.prepare(),a.parser.path.setAttribute(\"d\",this.toString()),a.parser.path.getBBox()}}),a.Number=a.invent({create:function(t,e){this.value=0,this.unit=e||\"\",\"number\"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:\"string\"==typeof t?(e=t.match(a.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),\"%\"==e[5]?this.value/=100:\"s\"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof a.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return(\"%\"==this.unit?~~(1e8*this.value)/1e6:\"s\"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new a.Number(t),new a.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new a.Number(t),new a.Number(this-t,this.unit||t.unit)},times:function(t){return t=new a.Number(t),new a.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new a.Number(t),new a.Number(this/t,this.unit||t.unit)},to:function(t){var e=new a.Number(this);return\"string\"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new a.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new a.Number(this.destination).minus(this).times(t).plus(this):this}}}),a.Element=a.invent({create:function(t){this._stroke=a.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute(\"stroke\")||this._stroke)},extend:{x:function(t){return this.attr(\"x\",t)},y:function(t){return this.attr(\"y\",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr(\"width\",t)},height:function(t){return this.attr(\"height\",t)},size:function(t,e){var i=u(this,t,e);return this.width(new a.Number(i.width)).height(new a.Number(i.height))},clone:function(t){this.writeDataToDom();var e=x(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr(\"id\",t)},show:function(){return this.style(\"display\",\"\")},hide:function(){return this.style(\"display\",\"none\")},visible:function(){return\"none\"!=this.style(\"display\")},toString:function(){return this.attr(\"id\")},classes:function(){var t=this.attr(\"class\");return null==t?[]:t.trim().split(a.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr(\"class\",e.join(\" \"))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr(\"class\",this.classes().filter((function(e){return e!=t})).join(\" \")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return a.get(this.attr(t))},parent:function(e){var i=this;if(!i.node.parentNode)return null;if(i=a.adopt(i.node.parentNode),!e)return i;for(;i&&i.node instanceof t.SVGElement;){if(\"string\"==typeof e?i.matches(e):i instanceof e)return i;if(!i.node.parentNode||\"#document\"==i.node.parentNode.nodeName)return null;i=a.adopt(i.node.parentNode)}},doc:function(){return this instanceof a.Doc?this:this.parent(a.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var i=e.createElement(\"svg\");if(!(t&&this instanceof a.Parent))return i.appendChild(t=e.createElement(\"svg\")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),i.innerHTML.replace(/^/,\"\").replace(/<\\/svg>$/,\"\");i.innerHTML=\"\"+t.replace(/\\n/,\"\").replace(/<([\\w:-]+)([^<]+?)\\/>/g,\"<$1$2>\")+\"\";for(var s=0,r=i.firstChild.childNodes.length;s\":function(t){return-Math.cos(t*Math.PI)/2+.5},\">\":function(t){return Math.sin(t*Math.PI/2)},\"<\":function(t){return 1-Math.cos(t*Math.PI/2)}},a.morph=function(t){return function(e,i){return new a.MorphObj(e,i).at(t)}},a.Situation=a.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new a.Number(t.duration).valueOf(),this.delay=new a.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),a.FX=a.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(t,e,s){\"object\"===i(t)&&(e=t.ease,s=t.delay,t=t.duration);var r=new a.Situation({duration:t||1e3,delay:s||0,ease:a.easing[e||\"-\"]||e});return this.queue(r),this},target:function(t){return t&&t instanceof a.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=t.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){t.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return(\"function\"==typeof t||t instanceof a.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof a.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e=this.situation;if(e.init)return this;for(var i in e.animations){t=this.target()[i](),Array.isArray(t)||(t=[t]),Array.isArray(e.animations[i])||(e.animations[i]=[e.animations[i]]);for(var s=t.length;s--;)e.animations[i][s]instanceof a.Number&&(t[s]=new a.Number(t[s])),e.animations[i][s]=t[s].morph(e.animations[i][s])}for(var i in e.attrs)e.attrs[i]=new a.MorphObj(this.target().attr(i),e.attrs[i]);for(var i in e.styles)e.styles[i]=new a.MorphObj(this.target().style(i),e.styles[i]);return e.initialTransformation=this.target().matrixify(),e.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(t){var e=this.last();return this.target().on(\"finished.fx\",(function i(a){a.detail.situation==e&&(t.call(this,e),this.off(\"finished.fx\",i))})),this._callStart()},during:function(t){var e=this.last(),i=function(i){i.detail.situation==e&&t.call(this,i.detail.pos,a.morph(i.detail.pos),i.detail.eased,e)};return this.target().off(\"during.fx\",i).on(\"during.fx\",i),this.after((function(){this.off(\"during.fx\",i)})),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off(\"allfinished.fx\",e)};return this.target().off(\"allfinished.fx\",e).on(\"allfinished.fx\",e),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||\"animations\"][t]=e,this._callStart()},step:function(t){var e,i,a;t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||ithis.lastPos&&r<=s&&(this.situation.once[r].call(this.target(),this.pos,s),delete this.situation.once[r]);return this.active&&this.target().fire(\"during\",{pos:this.pos,eased:s,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire(\"finished\",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire(\"allfinished\"),this.situations.length||(this.target().off(\".fx\"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=s,this):this},eachAt:function(){var t,e=this,i=this.target(),s=this.situation;for(var r in s.animations)t=[].concat(s.animations[r]).map((function(t){return\"string\"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i[r].apply(i,t);for(var r in s.attrs)t=[r].concat(s.attrs[r]).map((function(t){return\"string\"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.attr.apply(i,t);for(var r in s.styles)t=[r].concat(s.styles[r]).map((function(t){return\"string\"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.style.apply(i,t);if(s.transforms.length){t=s.initialTransformation,r=0;for(var o=s.transforms.length;r=0;--s)this[v[s]]=null!=t[v[s]]?t[v[s]]:e[v[s]]},extend:{extract:function(){var t=p(this,0,1);p(this,1,0);var e=180/Math.PI*Math.atan2(t.y,t.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(e*Math.PI/180)+this.f*Math.sin(e*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(e*Math.PI/180)+this.e*Math.sin(-e*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new a.Matrix(this)}},clone:function(){return new a.Matrix(this)},morph:function(t){return this.destination=new a.Matrix(t),this},multiply:function(t){return new a.Matrix(this.native().multiply(function(t){return t instanceof a.Matrix||(t=new a.Matrix(t)),t}(t).native()))},inverse:function(){return new a.Matrix(this.native().inverse())},translate:function(t,e){return new a.Matrix(this.native().translate(t||0,e||0))},native:function(){for(var t=a.parser.native.createSVGMatrix(),e=v.length-1;e>=0;e--)t[v[e]]=this[v[e]];return t},toString:function(){return\"matrix(\"+b(this.a)+\",\"+b(this.b)+\",\"+b(this.c)+\",\"+b(this.d)+\",\"+b(this.e)+\",\"+b(this.f)+\")\"}},parent:a.Element,construct:{ctm:function(){return new a.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof a.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new a.Matrix(e)}return new a.Matrix(this.node.getScreenCTM())}}}),a.Point=a.invent({create:function(t,e){var a;a=Array.isArray(t)?{x:t[0],y:t[1]}:\"object\"===i(t)?{x:t.x,y:t.y}:null!=t?{x:t,y:null!=e?e:t}:{x:0,y:0},this.x=a.x,this.y=a.y},extend:{clone:function(){return new a.Point(this)},morph:function(t,e){return this.destination=new a.Point(t,e),this}}}),a.extend(a.Element,{point:function(t,e){return new a.Point(t,e).transform(this.screenCTM().inverse())}}),a.extend(a.Element,{attr:function(t,e,s){if(null==t){for(t={},s=(e=this.node.attributes).length-1;s>=0;s--)t[e[s].nodeName]=a.regex.isNumber.test(e[s].nodeValue)?parseFloat(e[s].nodeValue):e[s].nodeValue;return t}if(\"object\"===i(t))for(var r in t)this.attr(r,t[r]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?a.defaults.attrs[t]:a.regex.isNumber.test(e)?parseFloat(e):e;\"stroke-width\"==t?this.attr(\"stroke\",parseFloat(e)>0?this._stroke:null):\"stroke\"==t&&(this._stroke=e),\"fill\"!=t&&\"stroke\"!=t||(a.regex.isImage.test(e)&&(e=this.doc().defs().image(e,0,0)),e instanceof a.Image&&(e=this.doc().defs().pattern(0,0,(function(){this.add(e)})))),\"number\"==typeof e?e=new a.Number(e):a.Color.isColor(e)?e=new a.Color(e):Array.isArray(e)&&(e=new a.Array(e)),\"leading\"==t?this.leading&&this.leading(e):\"string\"==typeof s?this.node.setAttributeNS(s,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||\"font-size\"!=t&&\"x\"!=t||this.rebuild(t,e)}return this}}),a.extend(a.Element,{transform:function(t,e){var s;return\"object\"!==i(t)?(s=new a.Matrix(this).extract(),\"string\"==typeof t?s[t]:s):(s=new a.Matrix(this),e=!!e||!!t.relative,null!=t.a&&(s=e?s.multiply(new a.Matrix(t)):new a.Matrix(t)),this.attr(\"transform\",s))}}),a.extend(a.Element,{untransform:function(){return this.attr(\"transform\",null)},matrixify:function(){return(this.attr(\"transform\")||\"\").split(a.regex.transforms).slice(0,-1).map((function(t){var e=t.trim().split(\"(\");return[e[0],e[1].split(a.regex.delimiter).map((function(t){return parseFloat(t)}))]})).reduce((function(t,e){return\"matrix\"==e[0]?t.multiply(f(e[1])):t[e[0]].apply(t,e[1])}),new a.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),a.Transformation=a.invent({create:function(t,e){if(arguments.length>1&&\"boolean\"!=typeof e)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(t))for(var a=0,s=this.arguments.length;a=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return a.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){for(var i=this.children(),s=0,r=i.length;s=0;i--)e.childNodes[i]instanceof t.SVGElement&&x(e.childNodes[i]);return a.adopt(e).id(a.eid(e.nodeName))}function b(t){return Math.abs(t)>1e-37?t:0}[\"fill\",\"stroke\"].forEach((function(t){var e={};e[t]=function(e){if(void 0===e)return this;if(\"string\"==typeof e||a.Color.isRgb(e)||e&&\"function\"==typeof e.fill)this.attr(t,e);else for(var i=l[t].length-1;i>=0;i--)null!=e[l[t][i]]&&this.attr(l.prefix(t,l[t][i]),e[l[t][i]]);return this},a.extend(a.Element,a.FX,e)})),a.extend(a.Element,a.FX,{translate:function(t,e){return this.transform({x:t,y:e})},matrix:function(t){return this.attr(\"transform\",new a.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr(\"opacity\",t)},dx:function(t){return this.x(new a.Number(t).plus(this instanceof a.FX?0:this.x()),!0)},dy:function(t){return this.y(new a.Number(t).plus(this instanceof a.FX?0:this.y()),!0)}}),a.extend(a.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),a.Set=a.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){for(var t=[].slice.call(arguments),e=0,i=t.length;e-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(t){return new a.Set(t)}}}),a.FX.Set=a.invent({create:function(t){this.set=t}}),a.Set.inherit=function(){var t=[];for(var e in a.Shape.prototype)\"function\"==typeof a.Shape.prototype[e]&&\"function\"!=typeof a.Set.prototype[e]&&t.push(e);for(var e in t.forEach((function(t){a.Set.prototype[t]=function(){for(var e=0,i=this.members.length;e=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),a.get=function(t){var i=e.getElementById(function(t){var e=(t||\"\").toString().match(a.regex.reference);if(e)return e[1]}(t)||t);return a.adopt(i)},a.select=function(t,i){return new a.Set(a.utils.map((i||e).querySelectorAll(t),(function(t){return a.adopt(t)})))},a.extend(a.Parent,{select:function(t){return a.select(t,this.node)}});var v=\"abcdef\".split(\"\");if(\"function\"!=typeof t.CustomEvent){var m=function(t,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent(\"CustomEvent\");return a.initCustomEvent(t,i.bubbles,i.cancelable,i.detail),a};m.prototype=t.Event.prototype,a.CustomEvent=m}else a.CustomEvent=t.CustomEvent;return a},\"function\"==typeof define&&define.amd?define((function(){return Ht(Rt,Rt.document)})):\"object\"===(\"undefined\"==typeof exports?\"undefined\":i(exports))&&\"undefined\"!=typeof module?module.exports=Rt.document?Ht(Rt,Rt.document):function(t){return Ht(t,t.document)}:Rt.SVG=Ht(Rt,Rt.document),\n/*! svg.filter.js - v2.0.2 - 2016-02-24\n* https://github.com/wout/svg.filter.js\n* Copyright (c) 2016 Wout Fierens; Licensed MIT */\nfunction(){SVG.Filter=SVG.invent({create:\"filter\",inherit:SVG.Parent,extend:{source:\"SourceGraphic\",sourceAlpha:\"SourceAlpha\",background:\"BackgroundImage\",backgroundAlpha:\"BackgroundAlpha\",fill:\"FillPaint\",stroke:\"StrokePaint\",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr(\"in\")&&this.autoSetIn&&t.attr(\"in\",this.source),t.attr(\"result\")||t.attr(\"result\",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,a,s){return this.put(new SVG.DisplacementMapEffect(t,e,i,a,s))},specularLighting:function(t,e,i,a){return this.put(new SVG.SpecularLightingEffect(t,e,i,a))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,a,s){return this.put(new SVG.TurbulenceEffect(t,e,i,a,s))},toString:function(){return\"url(#\"+this.attr(\"id\")+\")\"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return\"function\"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr(\"filter\",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr(\"filter\",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result=\"'+this.attr(\"in\")+'\"]').get(0)||this.attr(\"in\"):this.attr(\"in\",t)},result:function(t){return null==t?this.attr(\"result\"):this.attr(\"result\",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result=\"'+this.attr(\"in\")+'\"]').get(0)||this.attr(\"in\"):this.attr(\"in\",t)},result:function(t){return null==t?this.attr(\"result\"):this.attr(\"result\",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},specularLighting:function(t,e,i,a){return this.parent()&&this.parent().specularLighting(t,e,i,a).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr(\"in\",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||\"normal\"})},colorMatrix:function(t,e){\"matrix\"==t&&(e=s(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=s(t),this.attr({order:Math.sqrt(t.split(\" \").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr(\"flood-color\",t),null!=e&&this.attr(\"flood-opacity\",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr(\"href\",t,SVG.xlink)},displacementMap:function(t,e,i,a,s){this.attr({in:t,in2:e,scale:i,xChannelSelector:a,yChannelSelector:s})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr(\"stdDeviation\",function(t){if(!Array.isArray(t))return t;for(var e=0,i=t.length,a=[];e1&&(M*=a=Math.sqrt(a),I*=a);s=(new SVG.Matrix).rotate(T).scale(1/M,1/I).rotate(-T),F=F.transform(s),R=R.transform(s),r=[R.x-F.x,R.y-F.y],n=r[0]*r[0]+r[1]*r[1],o=Math.sqrt(n),r[0]/=o,r[1]/=o,l=n<4?Math.sqrt(1-n/4):0,z===X&&(l*=-1);h=new SVG.Point((R.x+F.x)/2+l*-r[1],(R.y+F.y)/2+l*r[0]),c=new SVG.Point(F.x-h.x,F.y-h.y),d=new SVG.Point(R.x-h.x,R.y-h.y),g=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(g*=-1);u=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(u*=-1);X&&g>u&&(u+=2*Math.PI);!X&&gr.maxX-e.width&&(o=(a=r.maxX-e.width)-this.startPoints.box.x),null!=r.minY&&sr.maxY-e.height&&(n=(s=r.maxY-e.height)-this.startPoints.box.y),null!=r.snapToGrid&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,o-=o%r.snapToGrid,n-=n%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:o,y:n},!0):this.el.move(a,s));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire(\"dragend\",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,\"mousemove.drag\"),SVG.off(window,\"touchmove.drag\"),SVG.off(window,\"mouseup.drag\"),SVG.off(window,\"touchend.drag\")},SVG.extend(SVG.Element,{draggable:function(e,i){\"function\"!=typeof e&&\"object\"!=typeof e||(i=e,e=!0);var a=this.remember(\"_draggable\")||new t(this);return(e=void 0===e||e)?a.init(i||{},e):(this.off(\"mousedown.drag\"),this.off(\"touchstart.drag\")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember(\"_selectHandler\",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:[\"width\",0],rb:[\"width\",\"height\"],lb:[0,\"height\"],t:[\"width\",0],r:[\"width\",\"height\"],b:[\"width\",\"height\"],l:[0,\"height\"]},this.pointCoord=function(t,e,i){var a=\"string\"!=typeof t?t:e[t];return i?a/2:a},this.pointCoords=function(t,e){var i=this.pointsList[t];return{x:this.pointCoord(i[0],e,\"t\"===t||\"b\"===t),y:this.pointCoord(i[1],e,\"r\"===t||\"l\"===t)}}}t.prototype.init=function(t,e){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);var r=[\"points\",\"pointsExclude\"];for(var s in r){var o=this.options[r[s]];\"string\"==typeof o?o=o.length>0?o.split(/\\s*,\\s*/i):[]:\"boolean\"==typeof o&&\"points\"===r[s]&&(o=o?a:[]),this.options[r[s]]=o}this.options.points=[a,this.options.points].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)>-1}))})),this.options.points=[this.options.points,this.options.pointsExclude].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)<0}))})),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==[\"line\",\"polyline\",\"polygon\"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map((function(e){return[e[0]-t.x,e[1]-t.y]}))},t.prototype.drawPoints=function(){for(var t=this,e=this.getPointArray(),i=0,a=e.length;i0&&this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case\"rt\":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case\"rb\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case\"lb\":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr(\"font-size\",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case\"t\":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case\"r\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case\"b\":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case\"l\":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if(\"text\"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case\"rot\":this.calc=function(t,e){var i=t+this.parameters.p.x,a=e+this.parameters.p.y,s=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),r=Math.atan2(a-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2),o=this.parameters.rotation+180*(r-s)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(o-o%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case\"point\":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),a=this.el.array().valueOf();a[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],a[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(a)}}this.el.fire(\"resizestart\",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,\"touchmove.resize\",(function(t){e.update(t||window.event)})),SVG.on(window,\"touchend.resize\",(function(){e.done()})),SVG.on(window,\"mousemove.resize\",(function(t){e.update(t||window.event)})),SVG.on(window,\"mouseup.resize\",(function(){e.done()}))},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire(\"resizing\",{dx:a,dy:s,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,\"mousemove.resize\"),SVG.off(window,\"mouseup.resize\"),SVG.off(window,\"touchmove.resize\"),SVG.off(window,\"touchend.resize\"),this.el.fire(\"resizedone\")},t.prototype.snapToGrid=function(t,e,i,a){var s;return void 0!==a?s=[(i+t)%this.options.snapToGrid,(a+e)%this.options.snapToGrid]:(i=null==i?3:i,s=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t<0&&(s[0]-=this.options.snapToGrid),e<0&&(s[1]-=this.options.snapToGrid),t-=Math.abs(s[0])o.maxX&&(t=o.maxX-s),void 0!==o.minY&&r+eo.maxY&&(e=o.maxY-r),[t,e]},t.prototype.checkAspectRatio=function(t,e){if(!this.options.saveAspectRatio)return t;var i=t.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],r=this.parameters.box.height-t[1],o=s/r;return oa&&(i[0]=this.parameters.box.width-r*a,e&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember(\"_resizeHandler\")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),void 0===window.Apex&&(window.Apex={});var Gt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"initModules\",value:function(){this.ctx.publicMethods=[\"updateOptions\",\"updateSeries\",\"appendData\",\"appendSeries\",\"isSeriesHidden\",\"toggleSeries\",\"showSeries\",\"hideSeries\",\"setLocale\",\"resetSeries\",\"zoomX\",\"toggleDataPointSelection\",\"dataURI\",\"exportToCSV\",\"addXaxisAnnotation\",\"addYaxisAnnotation\",\"addPointAnnotation\",\"clearAnnotations\",\"removeAnnotation\",\"paper\",\"destroy\"],this.ctx.eventList=[\"click\",\"mousedown\",\"mousemove\",\"mouseleave\",\"touchstart\",\"touchmove\",\"touchleave\",\"mouseup\",\"touchend\"],this.ctx.animations=new b(this.ctx),this.ctx.axes=new J(this.ctx),this.ctx.core=new Wt(this.ctx.el,this.ctx),this.ctx.config=new Y({}),this.ctx.data=new B(this.ctx),this.ctx.grid=new j(this.ctx),this.ctx.graphics=new m(this.ctx),this.ctx.coreUtils=new y(this.ctx),this.ctx.crosshairs=new Q(this.ctx),this.ctx.events=new Z(this.ctx),this.ctx.exports=new G(this.ctx),this.ctx.localization=new $(this.ctx),this.ctx.options=new I,this.ctx.responsive=new K(this.ctx),this.ctx.series=new W(this.ctx),this.ctx.theme=new tt(this.ctx),this.ctx.formatters=new S(this.ctx),this.ctx.titleSubtitle=new et(this.ctx),this.ctx.legend=new lt(this.ctx),this.ctx.toolbar=new ht(this.ctx),this.ctx.tooltip=new bt(this.ctx),this.ctx.dimensions=new ot(this.ctx),this.ctx.updateHelpers=new Bt(this.ctx),this.ctx.zoomPanSelection=new ct(this.ctx),this.ctx.w.globals.tooltip=new bt(this.ctx)}}]),t}(),Vt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:\"clear\",value:function(t){var e=t.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:e})}},{key:\"killSVG\",value:function(t){t.each((function(t,e){this.removeClass(\"*\"),this.off(),this.stop()}),!0),t.ungroup(),t.clear()}},{key:\"clearDomElements\",value:function(t){var e=this,i=t.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight=\"unset\");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach((function(t){s.removeEventListener(t,e.ctx.events.documentEvent)}));var r=this.w.globals.dom;if(null!==this.ctx.el)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elLegendWrap=null,r.elLegendForeign=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),t}(),jt=new WeakMap;var _t=function(){function t(e,i){a(this,t),this.opts=i,this.ctx=this,this.w=new R(i).init(),this.el=e,this.w.globals.cuid=x.randomId(),this.w.globals.chartID=this.w.config.chart.id?x.escapeString(this.w.config.chart.id):this.w.globals.cuid,new Gt(this).initModules(),this.create=x.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return r(t,[{key:\"render\",value:function(){var t=this;return new Promise((function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var a=t.w.config.chart.events.beforeMount;\"function\"==typeof a&&a(t,t.w),t.events.fireEvent(\"beforeMount\",[t,t.w]),window.addEventListener(\"resize\",t.windowResizeHandler),function(t,e){var i=!1;if(t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var a=t.getBoundingClientRect();\"none\"!==t.style.display&&0!==a.width||(i=!0)}var s=new ResizeObserver((function(a){i&&e.call(t,a),i=!0}));t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(t.children).forEach((function(t){return s.observe(t)})):s.observe(t),jt.set(e,s)}(t.el.parentNode,t.parentResizeHandler);var s=t.el.getRootNode&&t.el.getRootNode(),r=x.is(\"ShadowRoot\",s),o=t.el.ownerDocument,n=r?s.getElementById(\"apexcharts-css\"):o.getElementById(\"apexcharts-css\");if(!n){var l;(n=document.createElement(\"style\")).id=\"apexcharts-css\",n.textContent='@keyframes opaque {\\n 0% {\\n opacity: 0\\n }\\n\\n to {\\n opacity: 1\\n }\\n}\\n\\n@keyframes resizeanim {\\n 0%,to {\\n opacity: 0\\n }\\n}\\n\\n.apexcharts-canvas {\\n position: relative;\\n user-select: none\\n}\\n\\n.apexcharts-canvas ::-webkit-scrollbar {\\n -webkit-appearance: none;\\n width: 6px\\n}\\n\\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\\n border-radius: 4px;\\n background-color: rgba(0,0,0,.5);\\n box-shadow: 0 0 1px rgba(255,255,255,.5);\\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5)\\n}\\n\\n.apexcharts-inner {\\n position: relative\\n}\\n\\n.apexcharts-text tspan {\\n font-family: inherit\\n}\\n\\n.legend-mouseover-inactive {\\n transition: .15s ease all;\\n opacity: .2\\n}\\n\\n.apexcharts-legend-text {\\n padding-left: 15px;\\n margin-left: -15px;\\n}\\n\\n.apexcharts-series-collapsed {\\n opacity: 0\\n}\\n\\n.apexcharts-tooltip {\\n border-radius: 5px;\\n box-shadow: 2px 2px 6px -4px #999;\\n cursor: default;\\n font-size: 14px;\\n left: 62px;\\n opacity: 0;\\n pointer-events: none;\\n position: absolute;\\n top: 20px;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n white-space: nowrap;\\n z-index: 12;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-tooltip.apexcharts-active {\\n opacity: 1;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-light {\\n border: 1px solid #e3e3e3;\\n background: rgba(255,255,255,.96)\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-dark {\\n color: #fff;\\n background: rgba(30,30,30,.8)\\n}\\n\\n.apexcharts-tooltip * {\\n font-family: inherit\\n}\\n\\n.apexcharts-tooltip-title {\\n padding: 6px;\\n font-size: 15px;\\n margin-bottom: 4px\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\\n background: #eceff1;\\n border-bottom: 1px solid #ddd\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\\n background: rgba(0,0,0,.7);\\n border-bottom: 1px solid #333\\n}\\n\\n.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value {\\n display: inline-block;\\n margin-left: 5px;\\n font-weight: 600\\n}\\n\\n.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty {\\n display: none\\n}\\n\\n.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\\n padding: 6px 0 5px\\n}\\n\\n.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\\n display: flex\\n}\\n\\n.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) {\\n margin-top: -6px\\n}\\n\\n.apexcharts-tooltip-marker {\\n width: 12px;\\n height: 12px;\\n position: relative;\\n top: 0;\\n margin-right: 10px;\\n border-radius: 50%\\n}\\n\\n.apexcharts-tooltip-series-group {\\n padding: 0 10px;\\n display: none;\\n text-align: left;\\n justify-content: left;\\n align-items: center\\n}\\n\\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\\n opacity: 1\\n}\\n\\n.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child {\\n padding-bottom: 4px\\n}\\n\\n.apexcharts-tooltip-series-group-hidden {\\n opacity: 0;\\n height: 0;\\n line-height: 0;\\n padding: 0!important\\n}\\n\\n.apexcharts-tooltip-y-group {\\n padding: 6px 0 5px\\n}\\n\\n.apexcharts-custom-tooltip,.apexcharts-tooltip-box {\\n padding: 4px 8px\\n}\\n\\n.apexcharts-tooltip-boxPlot {\\n display: flex;\\n flex-direction: column-reverse\\n}\\n\\n.apexcharts-tooltip-box>div {\\n margin: 4px 0\\n}\\n\\n.apexcharts-tooltip-box span.value {\\n font-weight: 700\\n}\\n\\n.apexcharts-tooltip-rangebar {\\n padding: 5px 8px\\n}\\n\\n.apexcharts-tooltip-rangebar .category {\\n font-weight: 600;\\n color: #777\\n}\\n\\n.apexcharts-tooltip-rangebar .series-name {\\n font-weight: 700;\\n display: block;\\n margin-bottom: 5px\\n}\\n\\n.apexcharts-xaxistooltip,.apexcharts-yaxistooltip {\\n opacity: 0;\\n pointer-events: none;\\n color: #373d3f;\\n font-size: 13px;\\n text-align: center;\\n border-radius: 2px;\\n position: absolute;\\n z-index: 10;\\n background: #eceff1;\\n border: 1px solid #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip {\\n padding: 9px 10px;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\\n background: rgba(0,0,0,.7);\\n border: 1px solid rgba(0,0,0,.5);\\n color: #fff\\n}\\n\\n.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before {\\n left: 50%;\\n border: solid transparent;\\n content: \" \";\\n height: 0;\\n width: 0;\\n position: absolute;\\n pointer-events: none\\n}\\n\\n.apexcharts-xaxistooltip:after {\\n border-color: transparent;\\n border-width: 6px;\\n margin-left: -6px\\n}\\n\\n.apexcharts-xaxistooltip:before {\\n border-color: transparent;\\n border-width: 7px;\\n margin-left: -7px\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before {\\n bottom: 100%\\n}\\n\\n.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before {\\n top: 100%\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after {\\n border-bottom-color: #eceff1\\n}\\n\\n.apexcharts-xaxistooltip-bottom:before {\\n border-bottom-color: #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\\n border-bottom-color: rgba(0,0,0,.5)\\n}\\n\\n.apexcharts-xaxistooltip-top:after {\\n border-top-color: #eceff1\\n}\\n\\n.apexcharts-xaxistooltip-top:before {\\n border-top-color: #90a4ae\\n}\\n\\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\\n border-top-color: rgba(0,0,0,.5)\\n}\\n\\n.apexcharts-xaxistooltip.apexcharts-active {\\n opacity: 1;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-yaxistooltip {\\n padding: 4px 10px\\n}\\n\\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\\n background: rgba(0,0,0,.7);\\n border: 1px solid rgba(0,0,0,.5);\\n color: #fff\\n}\\n\\n.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before {\\n top: 50%;\\n border: solid transparent;\\n content: \" \";\\n height: 0;\\n width: 0;\\n position: absolute;\\n pointer-events: none\\n}\\n\\n.apexcharts-yaxistooltip:after {\\n border-color: transparent;\\n border-width: 6px;\\n margin-top: -6px\\n}\\n\\n.apexcharts-yaxistooltip:before {\\n border-color: transparent;\\n border-width: 7px;\\n margin-top: -7px\\n}\\n\\n.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before {\\n left: 100%\\n}\\n\\n.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before {\\n right: 100%\\n}\\n\\n.apexcharts-yaxistooltip-left:after {\\n border-left-color: #eceff1\\n}\\n\\n.apexcharts-yaxistooltip-left:before {\\n border-left-color: #90a4ae\\n}\\n\\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\\n border-left-color: rgba(0,0,0,.5)\\n}\\n\\n.apexcharts-yaxistooltip-right:after {\\n border-right-color: #eceff1\\n}\\n\\n.apexcharts-yaxistooltip-right:before {\\n border-right-color: #90a4ae\\n}\\n\\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\\n border-right-color: rgba(0,0,0,.5)\\n}\\n\\n.apexcharts-yaxistooltip.apexcharts-active {\\n opacity: 1\\n}\\n\\n.apexcharts-yaxistooltip-hidden {\\n display: none\\n}\\n\\n.apexcharts-xcrosshairs,.apexcharts-ycrosshairs {\\n pointer-events: none;\\n opacity: 0;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active {\\n opacity: 1;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-ycrosshairs-hidden {\\n opacity: 0\\n}\\n\\n.apexcharts-selection-rect {\\n cursor: move\\n}\\n\\n.svg_select_boundingRect,.svg_select_points_rot {\\n pointer-events: none;\\n opacity: 0;\\n visibility: hidden\\n}\\n\\n.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot {\\n opacity: 0;\\n visibility: hidden\\n}\\n\\n.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r {\\n cursor: ew-resize;\\n opacity: 1;\\n visibility: visible\\n}\\n\\n.svg_select_points {\\n fill: #efefef;\\n stroke: #333;\\n rx: 2\\n}\\n\\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\\n cursor: crosshair\\n}\\n\\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\\n cursor: move\\n}\\n\\n.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\\n cursor: pointer;\\n width: 20px;\\n height: 20px;\\n line-height: 24px;\\n color: #6e8192;\\n text-align: center\\n}\\n\\n.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg {\\n fill: #6e8192\\n}\\n\\n.apexcharts-selection-icon svg {\\n fill: #444;\\n transform: scale(.76)\\n}\\n\\n.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\\n fill: #f3f4f5\\n}\\n\\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\\n fill: #008ffb\\n}\\n\\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\\n fill: #333\\n}\\n\\n.apexcharts-menu-icon,.apexcharts-selection-icon {\\n position: relative\\n}\\n\\n.apexcharts-reset-icon {\\n margin-left: 5px\\n}\\n\\n.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon {\\n transform: scale(.85)\\n}\\n\\n.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\\n transform: scale(.7)\\n}\\n\\n.apexcharts-zoomout-icon {\\n margin-right: 3px\\n}\\n\\n.apexcharts-pan-icon {\\n transform: scale(.62);\\n position: relative;\\n left: 1px;\\n top: 0\\n}\\n\\n.apexcharts-pan-icon svg {\\n fill: #fff;\\n stroke: #6e8192;\\n stroke-width: 2\\n}\\n\\n.apexcharts-pan-icon.apexcharts-selected svg {\\n stroke: #008ffb\\n}\\n\\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\\n stroke: #333\\n}\\n\\n.apexcharts-toolbar {\\n position: absolute;\\n z-index: 11;\\n max-width: 176px;\\n text-align: right;\\n border-radius: 3px;\\n padding: 0 6px 2px;\\n display: flex;\\n justify-content: space-between;\\n align-items: center\\n}\\n\\n.apexcharts-menu {\\n background: #fff;\\n position: absolute;\\n top: 100%;\\n border: 1px solid #ddd;\\n border-radius: 3px;\\n padding: 3px;\\n right: 10px;\\n opacity: 0;\\n min-width: 110px;\\n transition: .15s ease all;\\n pointer-events: none\\n}\\n\\n.apexcharts-menu.apexcharts-menu-open {\\n opacity: 1;\\n pointer-events: all;\\n transition: .15s ease all\\n}\\n\\n.apexcharts-menu-item {\\n padding: 6px 7px;\\n font-size: 12px;\\n cursor: pointer\\n}\\n\\n.apexcharts-theme-light .apexcharts-menu-item:hover {\\n background: #eee\\n}\\n\\n.apexcharts-theme-dark .apexcharts-menu {\\n background: rgba(0,0,0,.7);\\n color: #fff\\n}\\n\\n@media screen and (min-width:768px) {\\n .apexcharts-canvas:hover .apexcharts-toolbar {\\n opacity: 1\\n }\\n}\\n\\n.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points {\\n opacity: 0\\n}\\n\\n.apexcharts-hidden-element-shown {\\n opacity: 1;\\n transition: 0.25s ease all;\\n}\\n.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label {\\n cursor: default;\\n pointer-events: none\\n}\\n\\n.apexcharts-pie-label-delay {\\n opacity: 0;\\n animation-name: opaque;\\n animation-duration: .3s;\\n animation-fill-mode: forwards;\\n animation-timing-function: ease\\n}\\n\\n.apexcharts-radialbar-label {\\n cursor: pointer;\\n}\\n\\n.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect {\\n pointer-events: none\\n}\\n\\n.apexcharts-marker {\\n transition: .15s ease all\\n}\\n\\n.resize-triggers {\\n animation: 1ms resizeanim;\\n visibility: hidden;\\n opacity: 0;\\n height: 100%;\\n width: 100%;\\n overflow: hidden\\n}\\n\\n.contract-trigger:before,.resize-triggers,.resize-triggers>div {\\n content: \" \";\\n display: block;\\n position: absolute;\\n top: 0;\\n left: 0\\n}\\n\\n.resize-triggers>div {\\n height: 100%;\\n width: 100%;\\n background: #eee;\\n overflow: auto\\n}\\n\\n.contract-trigger:before {\\n overflow: hidden;\\n width: 200%;\\n height: 200%\\n}\\n\\n.apexcharts-bar-goals-markers{\\n pointer-events: none\\n}\\n\\n.apexcharts-bar-shadows{\\n pointer-events: none\\n}\\n\\n.apexcharts-rangebar-goals-markers{\\n pointer-events: none\\n}';var h=(null===(l=t.opts.chart)||void 0===l?void 0:l.nonce)||t.w.config.chart.nonce;h&&n.setAttribute(\"nonce\",h),r?s.prepend(n):o.head.appendChild(n)}var c=t.create(t.w.config.series,{});if(!c)return e(t);t.mount(c).then((function(){\"function\"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.events.fireEvent(\"mounted\",[t,t.w]),e(c)})).catch((function(t){i(t)}))}else i(new Error(\"Element not found\"))}))}},{key:\"create\",value:function(t,e){var i=this.w;new Gt(this).initModules();var a=this.w.globals;(a.noData=!1,a.animationEnded=!1,this.responsive.checkResponsiveConfig(e),i.config.xaxis.convertedCatToNumeric)&&new E(i.config).convertCatToNumericXaxis(i.config,this.ctx);if(null===this.el)return a.animationEnded=!0,null;if(this.core.setupElements(),\"treemap\"===i.config.chart.type&&(i.config.grid.show=!1,i.config.yaxis[0].show=!1),0===a.svgWidth)return a.animationEnded=!0,null;var s=y.checkComboSeries(t,i.config.chart.type);a.comboCharts=s.comboCharts,a.comboBarCount=s.comboBarCount;var r=t.every((function(t){return t.data&&0===t.data.length}));(0===t.length||r&&a.collapsedSeries.length<1)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(t),this.theme.init(),new D(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),a.noData&&a.collapsedSeries.length!==a.series.length&&!i.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),a.axisCharts&&(this.core.coreCalculations(),\"category\"!==i.config.xaxis.type&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=i.globals.minX,this.ctx.toolbar.maxX=i.globals.maxX),this.formatters.heatmapLabelFormatters(),new y(this).getLargestMarkerSize(),this.dimensions.plotCoords();var o=this.core.xySettings();this.grid.createGridMask();var n=this.core.plotChartType(t,o),l=new N(this);return l.bringForward(),i.config.dataLabels.background.enabled&&l.dataLabelsBackground(),this.core.shiftGraphPosition(),{elGraph:n,xyRatios:o,dimensions:{plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}}}}},{key:\"mount\",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error(\"Not enough data to display or target element not found\"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new j(i);var o,n,l=i.grid.drawGrid();(i.annotations=new T(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),\"back\"===a.config.grid.position)&&(l&&a.globals.dom.elGraphical.add(l.el),null!=l&&null!==(o=l.elGridBorders)&&void 0!==o&&o.node&&a.globals.dom.elGraphical.add(l.elGridBorders));if(Array.isArray(e.elGraph))for(var h=0;h0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:\"destroy\",value:function(){var t,e;window.removeEventListener(\"resize\",this.windowResizeHandler),this.el.parentNode,t=this.parentResizeHandler,(e=jt.get(t))&&(e.disconnect(),jt.delete(t));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach((function(t,e){t.id===x.escapeString(i)&&Apex._chartInstances.splice(e,1)})),new Vt(this.ctx).clear({isUpdating:!1})}},{key:\"updateOptions\",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.w;return o.globals.selection=void 0,t.series&&(this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),o.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r)}},{key:\"updateSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:\"appendSeries\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:\"appendData\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:\"addEventListener\",value:function(t,e){this.events.addEventListener(t,e)}},{key:\"removeEventListener\",value:function(t,e){this.events.removeEventListener(t,e)}},{key:\"addXaxisAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:\"addYaxisAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:\"addPointAnnotation\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:\"clearAnnotations\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:\"removeAnnotation\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:\"getChartArea\",value:function(){return this.w.globals.dom.baseEl.querySelector(\".apexcharts-inner\")}},{key:\"getSeriesTotalXRange\",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:\"getHighestValueInSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new U(this.ctx).getMinYMaxY(t).highestY}},{key:\"getLowestValueInSeries\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new U(this.ctx).getMinYMaxY(t).lowestY}},{key:\"getSeriesTotal\",value:function(){return this.w.globals.seriesTotals}},{key:\"toggleDataPointSelection\",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:\"zoomX\",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:\"setLocale\",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:\"dataURI\",value:function(t){return new G(this.ctx).dataURI(t)}},{key:\"exportToCSV\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new G(this.ctx).exportToCSV(t)}},{key:\"paper\",value:function(){return this.w.globals.dom.Paper}},{key:\"_parentResizeCallback\",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:\"_windowResize\",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}},{key:\"_windowResizeHandler\",value:function(){var t=this.w.config.chart.redrawOnWindowResize;\"function\"==typeof t&&(t=t()),t&&this._windowResize()}}],[{key:\"getChartByID\",value:function(t){var e=x.escapeString(t);if(Apex._chartInstances){var i=Apex._chartInstances.filter((function(t){return t.id===e}))[0];return i&&i.chart}}},{key:\"initOnLoad\",value:function(){for(var e=document.querySelectorAll(\"[data-apexcharts]\"),i=0;i2?s-2:0),o=2;o 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n};\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\nfunction isValidKey(key) {\r\n\treturn ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\r\n}\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: function(value) {\r\n\t\tif (Array.isArray && Array.isArray(value)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar type = Object.prototype.toString.call(value);\r\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is a finite number, else returns false\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t */\r\n\tisFinite: function(value) {\r\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {object|Array} loopable - The object or array to be iterated.\r\n\t * @param {function} fn - The function to call for each item.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see https://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = Object.create(source);\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @param {object} [options] - Merging options:\r\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {object} target - The target object in which all objects are merged into.\r\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\textend: Object.assign || function(target) {\r\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, dst, src) {\r\n\t\t\t\tdst[key] = src[key];\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t},\r\n\r\n\t_deprecated: function(scope, value, previous, current) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tconsole.warn(scope + ': \"' + previous +\r\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers_core = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nvar helpers_easing = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\r\nvar RAD_PER_DEG = PI / 180;\r\nvar DOUBLE_PI = PI * 2;\r\nvar HALF_PI = PI / 2;\r\nvar QUARTER_PI = PI / 4;\r\nvar TWO_THIRDS_PI = PI * 2 / 3;\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports$1 = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} width - The rectangle's width.\r\n\t * @param {number} height - The rectangle's height.\r\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\r\n\t\t\tvar left = x + r;\r\n\t\t\tvar top = y + r;\r\n\t\t\tvar right = x + width - r;\r\n\t\t\tvar bottom = y + height - r;\r\n\r\n\t\t\tctx.moveTo(x, top);\r\n\t\t\tif (left < right && top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\r\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\r\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\r\n\t\t\t} else if (left < right) {\r\n\t\t\t\tctx.moveTo(left, y);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\r\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\r\n\t\t\t} else if (top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\r\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\r\n\t\t\t} else {\r\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\r\n\t\t\t}\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\r\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.translate(x, y);\r\n\t\t\t\tctx.rotate(rad);\r\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\r\n\t\t\t\tctx.restore();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\r\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\r\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\r\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\r\n\t\t\t// circle with `radius`. For more details, see the following PRs:\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\r\n\t\t\tcornerRadius = radius * 0.516;\r\n\t\t\tsize = radius - cornerRadius;\r\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\r\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\r\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\r\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\r\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\r\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (!rotation) {\r\n\t\t\t\tsize = Math.SQRT1_2 * radius;\r\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'rectRot':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'cross':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the point is inside the rectangle\r\n\t * @param {object} point - The point to test\r\n\t * @param {object} area - The rectangle\r\n\t * @returns {boolean}\r\n\t * @private\r\n\t */\r\n\t_isPointInArea: function(point, area) {\r\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\r\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\r\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tvar stepped = target.steppedLine;\r\n\t\tif (stepped) {\r\n\t\t\tif (stepped === 'middle') {\r\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\r\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\r\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\r\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\nvar helpers_canvas = exports$1;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.clear = exports$1.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports$1.roundedRect.apply(exports$1, arguments);\r\n};\n\nvar defaults = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n// TODO(v3): remove 'global' from namespace. all default are global and\r\n// there's inconsistency around which options are under 'global'\r\ndefaults._set('global', {\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tdefaultLineHeight: 1.2,\r\n\tshowLines: true\r\n});\r\n\r\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\r\n\r\n/**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\r\nfunction toFontString(font) {\r\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (font.style ? font.style + ' ' : '')\r\n\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t+ font.size + 'px '\r\n\t\t+ font.family;\r\n}\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nvar helpers_options = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\r\n\t * else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers_core.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Parses font options and returns the font object.\r\n\t * @param {object} options - A object that contains font options to be parsed.\r\n\t * @return {object} The font object.\r\n\t * @todo Support font.* options and renamed to toFont().\r\n\t * @private\r\n\t */\r\n\t_parseFont: function(options) {\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\r\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\r\n\t\t\tweight: null,\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array} inputs - An array of values, falling back to the last value.\r\n\t * @param {object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @param {object} [info] - object to return information about resolution in\r\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index, info) {\r\n\t\tvar cacheable = true;\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\tif (info && !cacheable) {\r\n\t\t\t\t\tinfo.cacheable = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\n/**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\r\nvar exports$2 = {\r\n\t/**\r\n\t * Returns an array of factors sorted from 1 to sqrt(value)\r\n\t * @private\r\n\t */\r\n\t_factorize: function(value) {\r\n\t\tvar result = [];\r\n\t\tvar sqrt = Math.sqrt(value);\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 1; i < sqrt; i++) {\r\n\t\t\tif (value % i === 0) {\r\n\t\t\t\tresult.push(i);\r\n\t\t\t\tresult.push(value / i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\r\n\t\t\tresult.push(sqrt);\r\n\t\t}\r\n\r\n\t\tresult.sort(function(a, b) {\r\n\t\t\treturn a - b;\r\n\t\t}).pop();\r\n\t\treturn result;\r\n\t},\r\n\r\n\tlog10: Math.log10 || function(x) {\r\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t// Check for whole powers of 10,\r\n\t\t// which due to floating point rounding error should be corrected.\r\n\t\tvar powerOf10 = Math.round(exponent);\r\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t}\r\n};\r\n\r\nvar helpers_math = exports$2;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn rectX + rectX + width - x;\r\n\t\t},\r\n\t\tsetWidth: function(w) {\r\n\t\t\twidth = w;\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\tif (align === 'center') {\r\n\t\t\t\treturn align;\r\n\t\t\t}\r\n\t\t\treturn align === 'right' ? 'left' : 'right';\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x - value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, itemWidth) {\r\n\t\t\treturn x - itemWidth;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getLtrAdapter = function() {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn x;\r\n\t\t},\r\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\treturn align;\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x + value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\r\n\t\t\treturn x;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getAdapter = function(rtl, rectX, width) {\r\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\r\n};\r\n\r\nvar overrideTextDirection = function(ctx, direction) {\r\n\tvar style, original;\r\n\tif (direction === 'ltr' || direction === 'rtl') {\r\n\t\tstyle = ctx.canvas.style;\r\n\t\toriginal = [\r\n\t\t\tstyle.getPropertyValue('direction'),\r\n\t\t\tstyle.getPropertyPriority('direction'),\r\n\t\t];\r\n\r\n\t\tstyle.setProperty('direction', direction, 'important');\r\n\t\tctx.prevTextDirection = original;\r\n\t}\r\n};\r\n\r\nvar restoreTextDirection = function(ctx) {\r\n\tvar original = ctx.prevTextDirection;\r\n\tif (original !== undefined) {\r\n\t\tdelete ctx.prevTextDirection;\r\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\r\n\t}\r\n};\r\n\r\nvar helpers_rtl = {\r\n\tgetRtlAdapter: getAdapter,\r\n\toverrideTextDirection: overrideTextDirection,\r\n\trestoreTextDirection: restoreTextDirection,\r\n};\n\nvar helpers$1 = helpers_core;\r\nvar easing = helpers_easing;\r\nvar canvas = helpers_canvas;\r\nvar options = helpers_options;\r\nvar math = helpers_math;\r\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = chartjsColor(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = chartjsColor(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\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} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers$1.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers$1.extend(Element.prototype, {\r\n\t_type: undefined,\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers$1.extend({}, me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = helpers$1.extend({}, model);\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers$1.inherits;\r\n\r\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\nvar core_animation = exports$3;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\n\ncore_defaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers$1.noop,\r\n\t\tonComplete: helpers$1.noop\r\n\t}\r\n});\r\n\r\nvar core_animations = {\r\n\tanimations: [],\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {number} duration - The animation duration in ms.\r\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\t\tanimation.startTime = Date.now();\r\n\t\tanimation.duration = duration;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tme.advance();\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function() {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart, numSteps, nextStep;\r\n\t\tvar i = 0;\r\n\r\n\t\t// 1 animation per chart, so we are looping charts here\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\t\t\tnumSteps = animation.numSteps;\r\n\r\n\t\t\t// Make sure that currentStep starts at 1\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\r\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\r\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\r\n\r\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= numSteps) {\r\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar resolve = helpers$1.options.resolve;\r\n\r\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n/**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\r\nfunction listenArrayEvents(array, listener) {\r\n\tif (array._chartjs) {\r\n\t\tarray._chartjs.listeners.push(listener);\r\n\t\treturn;\r\n\t}\r\n\r\n\tObject.defineProperty(array, '_chartjs', {\r\n\t\tconfigurable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: {\r\n\t\t\tlisteners: [listener]\r\n\t\t}\r\n\t});\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tvar base = array[key];\r\n\r\n\t\tObject.defineProperty(array, key, {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: function() {\r\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\r\nfunction unlistenArrayEvents(array, listener) {\r\n\tvar stub = array._chartjs;\r\n\tif (!stub) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar listeners = stub.listeners;\r\n\tvar index = listeners.indexOf(listener);\r\n\tif (index !== -1) {\r\n\t\tlisteners.splice(index, 1);\r\n\t}\r\n\r\n\tif (listeners.length > 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tdelete array[key];\r\n\t});\r\n\r\n\tdelete array._chartjs;\r\n}\r\n\r\n// Base class for all dataset controllers (line, bar, etc)\r\nvar DatasetController = function(chart, datasetIndex) {\r\n\tthis.initialize(chart, datasetIndex);\r\n};\r\n\r\nhelpers$1.extend(DatasetController.prototype, {\r\n\r\n\t/**\r\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdatasetElementType: null,\r\n\r\n\t/**\r\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdataElementType: null,\r\n\r\n\t/**\r\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth'\r\n\t],\r\n\r\n\t/**\r\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'pointStyle'\r\n\t],\r\n\r\n\tinitialize: function(chart, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tme.chart = chart;\r\n\t\tme.index = datasetIndex;\r\n\t\tme.linkScales();\r\n\t\tme.addElements();\r\n\t\tme._type = me.getMeta().type;\r\n\t},\r\n\r\n\tupdateIndex: function(datasetIndex) {\r\n\t\tthis.index = datasetIndex;\r\n\t},\r\n\r\n\tlinkScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar chart = me.chart;\r\n\t\tvar scales = chart.scales;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scalesOpts = chart.options.scales;\r\n\r\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\r\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\r\n\t\t}\r\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\r\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\r\n\t\t}\r\n\t},\r\n\r\n\tgetDataset: function() {\r\n\t\treturn this.chart.data.datasets[this.index];\r\n\t},\r\n\r\n\tgetMeta: function() {\r\n\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t},\r\n\r\n\tgetScaleForId: function(scaleID) {\r\n\t\treturn this.chart.scales[scaleID];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScale: function() {\r\n\t\treturn this.getScaleForId(this._getValueScaleId());\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScale: function() {\r\n\t\treturn this.getScaleForId(this._getIndexScaleId());\r\n\t},\r\n\r\n\treset: function() {\r\n\t\tthis._update(true);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroy: function() {\r\n\t\tif (this._data) {\r\n\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t}\r\n\t},\r\n\r\n\tcreateMetaDataset: function() {\r\n\t\tvar me = this;\r\n\t\tvar type = me.datasetElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index\r\n\t\t});\r\n\t},\r\n\r\n\tcreateMetaData: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar type = me.dataElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index\r\n\t\t});\r\n\t},\r\n\r\n\taddElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data || [];\r\n\t\tvar metaData = meta.data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t}\r\n\r\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t},\r\n\r\n\taddElementAndReset: function(index) {\r\n\t\tvar element = this.createMetaData(index);\r\n\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\tthis.updateElement(element, index, true);\r\n\t},\r\n\r\n\tbuildOrUpdateElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t// the internal meta data accordingly.\r\n\t\tif (me._data !== data) {\r\n\t\t\tif (me._data) {\r\n\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (data && Object.isExtensible(data)) {\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t}\r\n\t\t\tme._data = data;\r\n\t\t}\r\n\r\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\tme.resyncElements();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the merged user-supplied and default dataset-level options\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tme._config = helpers$1.merge(Object.create(null), [\r\n\t\t\tme.chart.options.datasets[me._type],\r\n\t\t\tme.getDataset(),\r\n\t\t], {\r\n\t\t\tmerger: function(key, target, source) {\r\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\r\n\t\t\t\t\thelpers$1._merger(key, target, source);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_update: function(reset) {\r\n\t\tvar me = this;\r\n\t\tme._configure();\r\n\t\tme._cachedDataOpts = null;\r\n\t\tme.update(reset);\r\n\t},\r\n\r\n\tupdate: helpers$1.noop,\r\n\r\n\ttransition: function(easingValue) {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].transition(easingValue);\r\n\t\t}\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.draw();\r\n\t\t}\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].draw();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a set of predefined style properties that should be used to represent the dataset\r\n\t * or the data if the index is specified\r\n\t * @param {number} index - data index\r\n\t * @return {IStyleInterface} style object\r\n\t */\r\n\tgetStyle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = meta.dataset;\r\n\t\tvar style;\r\n\r\n\t\tme._configure();\r\n\t\tif (dataset && index === undefined) {\r\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\r\n\t\t} else {\r\n\t\t\tindex = index || 0;\r\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\r\n\t\t}\r\n\r\n\t\tif (style.fill === false || style.fill === null) {\r\n\t\t\tstyle.backgroundColor = style.borderColor;\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element, hover) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._datasetElementOptions;\r\n\t\tvar values = {};\r\n\t\tvar i, ilen, key, readKey;\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index,\r\n\t\t\thover: hover\r\n\t\t};\r\n\r\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\tkey = elementOptions[i];\r\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\r\n\t\t\tvalues[key] = resolve([\r\n\t\t\t\tcustom[readKey],\r\n\t\t\t\tdatasetOpts[readKey],\r\n\t\t\t\toptions[readKey]\r\n\t\t\t], context);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(element, index) {\r\n\t\tvar me = this;\r\n\t\tvar custom = element && element.custom;\r\n\t\tvar cached = me._cachedDataOpts;\r\n\t\tif (cached && !custom) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._dataElementOptions;\r\n\t\tvar values = {};\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\r\n\t\tvar info = {cacheable: !custom};\r\n\r\n\t\tvar keys, i, ilen, key;\r\n\r\n\t\tcustom = custom || {};\r\n\r\n\t\tif (helpers$1.isArray(elementOptions)) {\r\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\t\tkey = elementOptions[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tkeys = Object.keys(elementOptions);\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (info.cacheable) {\r\n\t\t\tme._cachedDataOpts = Object.freeze(values);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tremoveHoverStyle: function(element) {\r\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\r\n\t\tdelete element.$previousStyle;\r\n\t},\r\n\r\n\tsetHoverStyle: function(element) {\r\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\tvar index = element._index;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar model = element._model;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\telement.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\r\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\r\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_removeDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\r\n\t\tif (element) {\r\n\t\t\tthis.removeHoverStyle(element);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_setDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\t\tvar prev = {};\r\n\t\tvar i, ilen, key, keys, hoverOptions, model;\r\n\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel = element._model;\r\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\r\n\r\n\t\tkeys = Object.keys(hoverOptions);\r\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\tkey = keys[i];\r\n\t\t\tprev[key] = model[key];\r\n\t\t\tmodel[key] = hoverOptions[key];\r\n\t\t}\r\n\r\n\t\telement.$previousStyle = prev;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tresyncElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data;\r\n\t\tvar numMeta = meta.data.length;\r\n\t\tvar numData = data.length;\r\n\r\n\t\tif (numData < numMeta) {\r\n\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t} else if (numData > numMeta) {\r\n\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinsertElements: function(start, count) {\r\n\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\tthis.addElementAndReset(start + i);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPush: function() {\r\n\t\tvar count = arguments.length;\r\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPop: function() {\r\n\t\tthis.getMeta().data.pop();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataShift: function() {\r\n\t\tthis.getMeta().data.shift();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataSplice: function(start, count) {\r\n\t\tthis.getMeta().data.splice(start, count);\r\n\t\tthis.insertElements(start, arguments.length - 2);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataUnshift: function() {\r\n\t\tthis.insertElements(0, arguments.length);\r\n\t}\r\n});\r\n\r\nDatasetController.extend = helpers$1.inherits;\r\n\r\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2,\r\n\t\t\tborderAlign: 'center'\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction clipArc(ctx, arc) {\r\n\tvar startAngle = arc.startAngle;\r\n\tvar endAngle = arc.endAngle;\r\n\tvar pixelMargin = arc.pixelMargin;\r\n\tvar angleMargin = pixelMargin / arc.outerRadius;\r\n\tvar x = arc.x;\r\n\tvar y = arc.y;\r\n\r\n\t// Draw an inner border by cliping the arc and drawing a double-width border\r\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\r\n\tctx.beginPath();\r\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\r\n\tif (arc.innerRadius > pixelMargin) {\r\n\t\tangleMargin = pixelMargin / arc.innerRadius;\r\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\r\n\t} else {\r\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\r\n\t}\r\n\tctx.closePath();\r\n\tctx.clip();\r\n}\r\n\r\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\r\n\tvar endAngle = arc.endAngle;\r\n\tvar i;\r\n\r\n\tif (inner) {\r\n\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\tclipArc(ctx, arc);\r\n\t\tarc.endAngle = endAngle;\r\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\r\n\t\t\tarc.endAngle += TAU;\r\n\t\t\tarc.fullCircles--;\r\n\t\t}\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction drawBorder(ctx, vm, arc) {\r\n\tvar inner = vm.borderAlign === 'inner';\r\n\r\n\tif (inner) {\r\n\t\tctx.lineWidth = vm.borderWidth * 2;\r\n\t\tctx.lineJoin = 'round';\r\n\t} else {\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tctx.lineJoin = 'bevel';\r\n\t}\r\n\r\n\tif (arc.fullCircles) {\r\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\r\n\t}\r\n\r\n\tif (inner) {\r\n\t\tclipArc(ctx, arc);\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n}\r\n\r\nvar element_arc = core_element.extend({\r\n\t_type: 'arc',\r\n\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar angle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += TAU;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\r\n\t\tvar arc = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tinnerRadius: vm.innerRadius,\r\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\r\n\t\t\tpixelMargin: pixelMargin,\r\n\t\t\tstartAngle: vm.startAngle,\r\n\t\t\tendAngle: vm.endAngle,\r\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\r\n\t\t};\r\n\t\tvar i;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\r\n\t\tif (arc.fullCircles) {\r\n\t\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\t\tctx.closePath();\r\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\t\t\tctx.fill();\r\n\t\t\t}\r\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\tctx.closePath();\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tdrawBorder(ctx, vm, arc);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar element_line = core_element.extend({\r\n\t_type: 'line',\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar closePath = me._loop;\r\n\t\tvar index, previous, currentVM;\r\n\r\n\t\tif (!points.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (me._loop) {\r\n\t\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\r\n\t\t\t\t// If the line has an open path, shift the point array\r\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\r\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\r\n\t\t\t\t\tclosePath = spanGaps;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If the line has a close path, add the first point again\r\n\t\t\tif (closePath) {\r\n\t\t\t\tpoints.push(points[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\r\n\t\t// First point moves to it's starting position no matter what\r\n\t\tcurrentVM = points[0]._view;\r\n\t\tif (!currentVM.skip) {\r\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\tlastDrawnIndex = 0;\r\n\t\t}\r\n\r\n\t\tfor (index = 1; index < points.length; ++index) {\r\n\t\t\tcurrentVM = points[index]._view;\r\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\r\n\r\n\t\t\tif (!currentVM.skip) {\r\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Line to next point\r\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\r\n\t\t\t\t}\r\n\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (closePath) {\r\n\t\t\tctx.closePath();\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor$1 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor$1,\r\n\t\t\tborderColor: defaultColor$1,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nvar element_point = core_element.extend({\r\n\t_type: 'point',\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaultColor$2,\r\n\t\t\tborderColor: defaultColor$2,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(vm) {\r\n\treturn vm && vm.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(vm) {\r\n\tvar x1, x2, y1, y2, half;\r\n\r\n\tif (isVertical(vm)) {\r\n\t\thalf = vm.width / 2;\r\n\t\tx1 = vm.x - half;\r\n\t\tx2 = vm.x + half;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\thalf = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - half;\r\n\t\ty2 = vm.y + half;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nfunction swap(orig, v1, v2) {\r\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\r\n}\r\n\r\nfunction parseBorderSkipped(vm) {\r\n\tvar edge = vm.borderSkipped;\r\n\tvar res = {};\r\n\r\n\tif (!edge) {\r\n\t\treturn res;\r\n\t}\r\n\r\n\tif (vm.horizontal) {\r\n\t\tif (vm.base > vm.x) {\r\n\t\t\tedge = swap(edge, 'left', 'right');\r\n\t\t}\r\n\t} else if (vm.base < vm.y) {\r\n\t\tedge = swap(edge, 'bottom', 'top');\r\n\t}\r\n\r\n\tres[edge] = true;\r\n\treturn res;\r\n}\r\n\r\nfunction parseBorderWidth(vm, maxW, maxH) {\r\n\tvar value = vm.borderWidth;\r\n\tvar skip = parseBorderSkipped(vm);\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = +value.top || 0;\r\n\t\tr = +value.right || 0;\r\n\t\tb = +value.bottom || 0;\r\n\t\tl = +value.left || 0;\r\n\t} else {\r\n\t\tt = r = b = l = +value || 0;\r\n\t}\r\n\r\n\treturn {\r\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\r\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\r\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\r\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\r\n\t};\r\n}\r\n\r\nfunction boundingRects(vm) {\r\n\tvar bounds = getBarBounds(vm);\r\n\tvar width = bounds.right - bounds.left;\r\n\tvar height = bounds.bottom - bounds.top;\r\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\r\n\r\n\treturn {\r\n\t\touter: {\r\n\t\t\tx: bounds.left,\r\n\t\t\ty: bounds.top,\r\n\t\t\tw: width,\r\n\t\t\th: height\r\n\t\t},\r\n\t\tinner: {\r\n\t\t\tx: bounds.left + border.l,\r\n\t\t\ty: bounds.top + border.t,\r\n\t\t\tw: width - border.l - border.r,\r\n\t\t\th: height - border.t - border.b\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction inRange(vm, x, y) {\r\n\tvar skipX = x === null;\r\n\tvar skipY = y === null;\r\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\r\n\r\n\treturn bounds\r\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\r\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\r\n}\r\n\r\nvar element_rectangle = core_element.extend({\r\n\t_type: 'rectangle',\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar rects = boundingRects(vm);\r\n\t\tvar outer = rects.outer;\r\n\t\tvar inner = rects.inner;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\r\n\r\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\r\n\t\tctx.clip();\r\n\t\tctx.fillStyle = vm.borderColor;\r\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\r\n\t\tctx.fill('evenodd');\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\treturn inRange(this._view, mouseX, mouseY);\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn isVertical(vm)\r\n\t\t\t? inRange(vm, mouseX, null)\r\n\t\t\t: inRange(vm, null, mouseY);\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\treturn inRange(this._view, mouseX, null);\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\treturn inRange(this._view, null, mouseY);\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(vm)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\r\n\t\treturn isVertical(vm)\r\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\r\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\n\nvar elements = {};\r\nvar Arc = element_arc;\r\nvar Line = element_line;\r\nvar Point = element_point;\r\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\r\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tbar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale._length;\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar min = helpers$1.isNullOrUndef(thickness)\r\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\r\n\t\t: -1;\r\n\tvar size, ratio;\r\n\r\n\tif (helpers$1.isNullOrUndef(thickness)) {\r\n\t\tsize = min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale size.\r\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\r\n\tsize = Math.abs(next - prev) / 2 * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nvar controller_bar = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Rectangle,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderSkipped',\r\n\t\t'borderWidth',\r\n\t\t'barPercentage',\r\n\t\t'barThickness',\r\n\t\t'categoryPercentage',\r\n\t\t'maxBarThickness',\r\n\t\t'minBarLength'\r\n\t],\r\n\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta, scaleOpts;\r\n\r\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\tmeta = me.getMeta();\r\n\t\tmeta.stack = me.getDataset().stack;\r\n\t\tmeta.bar = true;\r\n\r\n\t\tscaleOpts = me._getIndexScale().options;\r\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\r\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\r\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\r\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\r\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._ruler = me.getRuler();\r\n\r\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(rectangle, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\r\n\r\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\trectangle._datasetIndex = me.index;\r\n\t\trectangle._index = index;\r\n\t\trectangle._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderSkipped: options.borderSkipped,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\tdatasetLabel: dataset.label,\r\n\t\t\tlabel: me.chart.data.labels[index]\r\n\t\t};\r\n\r\n\t\tif (helpers$1.isArray(dataset.data[index])) {\r\n\t\t\trectangle._model.borderSkipped = null;\r\n\t\t}\r\n\r\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\r\n\r\n\t\trectangle.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\r\n\t\tvar me = this;\r\n\t\tvar model = rectangle._model;\r\n\t\tvar vscale = me._getValueScale();\r\n\t\tvar base = vscale.getBasePixel();\r\n\t\tvar horizontal = vscale.isHorizontal();\r\n\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\r\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\r\n\r\n\t\tmodel.horizontal = horizontal;\r\n\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stacks based on groups and bar visibility.\r\n\t * @param {number} [last] - The dataset index\r\n\t * @returns {string[]} The list of stack IDs\r\n\t * @private\r\n\t */\r\n\t_getStacks: function(last) {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar stacks = [];\r\n\t\tvar i, meta;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\t// stacked | meta.stack\r\n\t\t\t// | found | not found | undefined\r\n\t\t\t// false | x | x | x\r\n\t\t\t// true | | x |\r\n\t\t\t// undefined | | x | x\r\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\r\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\r\n\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t}\r\n\t\t\tif (meta.index === last) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stacks;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t * @private\r\n\t */\r\n\tgetStackCount: function() {\r\n\t\treturn this._getStacks().length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t * @param {number} [datasetIndex] - The dataset index\r\n\t * @param {string} [name] - The stack name to find\r\n\t * @returns {number} The stack index\r\n\t * @private\r\n\t */\r\n\tgetStackIndex: function(datasetIndex, name) {\r\n\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\tvar index = (name !== undefined)\r\n\t\t\t? stacks.indexOf(name)\r\n\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\treturn (index === -1)\r\n\t\t\t? stacks.length - 1\r\n\t\t\t: index;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetRuler: function() {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar pixels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tpixels: pixels,\r\n\t\t\tstart: scale._startPixel,\r\n\t\t\tend: scale._endPixel,\r\n\t\t\tstackCount: me.getStackCount(),\r\n\t\t\tscale: scale\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Note: pixel values are not clamped to the scale area.\r\n\t * @private\r\n\t */\r\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\r\n\t\tvar minBarLength = options.minBarLength;\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar stack = me.getMeta().stack;\r\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\r\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\r\n\r\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\timeta = metasets[i];\r\n\r\n\t\t\t\tif (imeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (imeta.stack === stack) {\r\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\r\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\r\n\r\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\tstart += ivalue;\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\tbase = scale.getPixelForValue(start);\r\n\t\thead = scale.getPixelForValue(start + length);\r\n\t\tsize = head - base;\r\n\r\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\r\n\t\t\tsize = minBarLength;\r\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\r\n\t\t\t\thead = base - minBarLength;\r\n\t\t\t} else {\r\n\t\t\t\thead = base + minBarLength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tsize: size,\r\n\t\t\tbase: base,\r\n\t\t\thead: head,\r\n\t\t\tcenter: head + size / 2\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\r\n\t\tvar me = this;\r\n\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\tvar size = Math.min(\r\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\r\n\t\t\trange.chunk * range.ratio);\r\n\r\n\t\treturn {\r\n\t\t\tbase: center - size / 2,\r\n\t\t\thead: center + size / 2,\r\n\t\t\tcenter: center,\r\n\t\t\tsize: size\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar ilen = rects.length;\r\n\t\tvar i = 0;\r\n\r\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\r\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\r\n\t\t\t\trects[i].draw();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\r\n\t\tvar indexOpts = me._getIndexScale().options;\r\n\t\tvar valueOpts = me._getValueScale().options;\r\n\r\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\r\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\r\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\r\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\r\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\r\nvar resolve$1 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_bubble = core_datasetController.extend({\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t\t'hoverRadius',\r\n\t\t'hitRadius',\r\n\t\t'pointStyle',\r\n\t\t'rotation'\r\n\t],\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data;\r\n\r\n\t\t// Update Points\r\n\t\thelpers$1.each(points, function(point, index) {\r\n\t\t\tme.updateElement(point, index, reset);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar data = me.getDataset().data[index];\r\n\t\tvar dsIndex = me.index;\r\n\r\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = dsIndex;\r\n\t\tpoint._index = index;\r\n\t\tpoint._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\thitRadius: options.hitRadius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t};\r\n\r\n\t\tpoint.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(point, index) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar data = dataset.data[index] || {};\r\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// In case values were cached (and thus frozen), we need to clone the values\r\n\t\tif (me._cachedDataOpts === values) {\r\n\t\t\tvalues = helpers$1.extend({}, values);\r\n\t\t}\r\n\r\n\t\t// Custom radius resolution\r\n\t\tvalues.radius = resolve$1([\r\n\t\t\tcustom.radius,\r\n\t\t\tdata.r,\r\n\t\t\tme._config.radius,\r\n\t\t\tchart.options.elements.point.radius\r\n\t\t], context, index);\r\n\r\n\t\treturn values;\r\n\t}\r\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\r\n\r\nvar PI$1 = Math.PI;\r\nvar DOUBLE_PI$1 = PI$1 * 2;\r\nvar HALF_PI$1 = PI$1 / 2;\r\n\r\ncore_defaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: 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\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: -HALF_PI$1,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: DOUBLE_PI$1,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_doughnut = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\tgetRingIndex: function(datasetIndex) {\r\n\t\tvar ringIndex = 0;\r\n\r\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t++ringIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringIndex;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar ratioX = 1;\r\n\t\tvar ratioY = 1;\r\n\t\tvar offsetX = 0;\r\n\t\tvar offsetY = 0;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar arcs = meta.data;\r\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\r\n\t\tvar circumference = opts.circumference;\r\n\t\tvar chartWeight = me._getRingWeight(me.index);\r\n\t\tvar maxWidth, maxHeight, i, ilen;\r\n\r\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\r\n\t\tif (circumference < DOUBLE_PI$1) {\r\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\r\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\r\n\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\tvar startX = Math.cos(startAngle);\r\n\t\t\tvar startY = Math.sin(startAngle);\r\n\t\t\tvar endX = Math.cos(endAngle);\r\n\t\t\tvar endY = Math.sin(endAngle);\r\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\r\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\r\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\r\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\r\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tratioX = (maxX - minX) / 2;\r\n\t\t\tratioY = (maxY - minY) / 2;\r\n\t\t\toffsetX = -(maxX + minX) / 2;\r\n\t\t\toffsetY = -(maxY + minY) / 2;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t}\r\n\r\n\t\tchart.borderWidth = me.getMaxBorderWidth();\r\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\r\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\r\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\r\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\r\n\t\tchart.offsetX = offsetX * chart.outerRadius;\r\n\t\tchart.offsetY = offsetY * chart.outerRadius;\r\n\r\n\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\r\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\r\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\tendAngle: endAngle,\r\n\t\t\t\tcircumference: circumference,\r\n\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar model = arc._model;\r\n\r\n\t\t// Set correct angles if not resetting\r\n\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t} else {\r\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t}\r\n\r\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t}\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcalculateTotal: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar total = 0;\r\n\t\tvar value;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tvalue = dataset.data[index];\r\n\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* if (total === 0) {\r\n\t\t\ttotal = NaN;\r\n\t\t}*/\r\n\r\n\t\treturn total;\r\n\t},\r\n\r\n\tcalculateCircumference: function(value) {\r\n\t\tvar total = this.getMeta().total;\r\n\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// gets the max border or hover width to properly scale pie charts\r\n\tgetMaxBorderWidth: function(arcs) {\r\n\t\tvar me = this;\r\n\t\tvar max = 0;\r\n\t\tvar chart = me.chart;\r\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\r\n\r\n\t\tif (!arcs) {\r\n\t\t\t// Find the outmost visible dataset\r\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tarcs = meta.data;\r\n\t\t\t\t\tif (i !== me.index) {\r\n\t\t\t\t\t\tcontroller = meta.controller;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!arcs) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarc = arcs[i];\r\n\t\t\tif (controller) {\r\n\t\t\t\tcontroller._configure();\r\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\r\n\t\t\t} else {\r\n\t\t\t\toptions = arc._options;\r\n\t\t\t}\r\n\t\t\tif (options.borderAlign !== 'inner') {\r\n\t\t\t\tborderWidth = options.borderWidth;\r\n\t\t\t\thoverWidth = options.hoverBorderWidth;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn max;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\r\n\t * @private\r\n\t */\r\n\t_getRingWeightOffset: function(datasetIndex) {\r\n\t\tvar ringWeightOffset = 0;\r\n\r\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\r\n\t\t\tif (this.chart.isDatasetVisible(i)) {\r\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringWeightOffset;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getRingWeight: function(dataSetIndex) {\r\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the sum of all visibile data set weights. This value can be 0.\r\n\t * @private\r\n\t */\r\n\t_getVisibleDatasetWeightTotal: function() {\r\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\r\n\t}\r\n});\n\ncore_defaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tposition: 'left',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\thorizontalBar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_horizontalBar = controller_bar.extend({\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t}\r\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\r\nvar resolve$2 = helpers$1.options.resolve;\r\nvar isPointInArea = helpers$1.canvas._isPointInArea;\r\n\r\ncore_defaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nfunction scaleClip(scale, halfBorderWidth) {\r\n\tvar tickOpts = scale && scale.options.ticks || {};\r\n\tvar reverse = tickOpts.reverse;\r\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\r\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\r\n\treturn {\r\n\t\tstart: reverse ? max : min,\r\n\t\tend: reverse ? min : max\r\n\t};\r\n}\r\n\r\nfunction defaultClip(xScale, yScale, borderWidth) {\r\n\tvar halfBorderWidth = borderWidth / 2;\r\n\tvar x = scaleClip(xScale, halfBorderWidth);\r\n\tvar y = scaleClip(yScale, halfBorderWidth);\r\n\r\n\treturn {\r\n\t\ttop: y.end,\r\n\t\tright: x.end,\r\n\t\tbottom: y.start,\r\n\t\tleft: x.start\r\n\t};\r\n}\r\n\r\nfunction toClip(value) {\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = value.top;\r\n\t\tr = value.right;\r\n\t\tb = value.bottom;\r\n\t\tl = value.left;\r\n\t} else {\r\n\t\tt = r = b = l = value;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttop: t,\r\n\t\tright: r,\r\n\t\tbottom: b,\r\n\t\tleft: l\r\n\t};\r\n}\r\n\r\n\r\nvar controller_line = core_datasetController.extend({\r\n\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth',\r\n\t\t'cubicInterpolationMode',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar options = me.chart.options;\r\n\t\tvar config = me._config;\r\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\r\n\r\n\t\t// Update Line\r\n\t\tif (showLine) {\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\t\tconfig.lineTension = config.tension;\r\n\t\t\t}\r\n\r\n\t\t\t// Utility\r\n\t\t\tline._scale = me._yScale;\r\n\t\t\tline._datasetIndex = me.index;\r\n\t\t\t// Data\r\n\t\t\tline._children = points;\r\n\t\t\t// Model\r\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\t\tline.pivot();\r\n\t\t}\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t}\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar datasetIndex = me.index;\r\n\t\tvar value = dataset.data[index];\r\n\t\tvar xScale = me._xScale;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar x, y;\r\n\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\r\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t// Utility\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = datasetIndex;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\r\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element) {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = me.chart.options;\r\n\t\tvar lineOptions = options.elements.line;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\t// The default behavior of lines is to break at null values, according\r\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t// This option gives lines the ability to span gaps\r\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\r\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\r\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar sumPos = 0;\r\n\t\tvar sumNeg = 0;\r\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\r\n\r\n\t\tif (yScale.options.stacked) {\r\n\t\t\trightValue = +yScale.getRightValue(value);\r\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\r\n\t\t\tilen = metasets.length;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tdsMeta = metasets[i];\r\n\t\t\t\tif (dsMeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\r\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\r\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\r\n\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\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 (rightValue < 0) {\r\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t}\r\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t}\r\n\t\treturn yScale.getPixelForValue(value);\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (lineModel.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\r\n\t\t\thelpers$1.splineCurveMonotone(points);\r\n\t\t} else {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\r\n\t\t\t\t\tlineModel.tension\r\n\t\t\t\t);\r\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (chart.options.elements.line.capBezierPoints) {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tif (isPointInArea(model, area)) {\r\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\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\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data || [];\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar i = 0;\r\n\t\tvar ilen = points.length;\r\n\t\tvar clip;\r\n\r\n\t\tif (me._showLine) {\r\n\t\t\tclip = meta.dataset._model.clip;\r\n\r\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\r\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\r\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\r\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\r\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t\t}\r\n\r\n\t\t// Draw the points\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tpoints[i].draw(area);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\r\n\t},\r\n});\n\nvar resolve$3 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: 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\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_polarArea = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\tvar starts = me._starts = [];\r\n\t\tvar angles = me._angles = [];\r\n\t\tvar arcs = meta.data;\r\n\t\tvar i, ilen, angle;\r\n\r\n\t\tme._updateRadius();\r\n\r\n\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\tstarts[i] = start;\r\n\t\t\tangle = me._computeAngle(i);\r\n\t\t\tangles[i] = angle;\r\n\t\t\tstart += angle;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateRadius: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\r\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar scale = chart.scale;\r\n\t\tvar labels = chart.data.labels;\r\n\r\n\t\tvar centerX = scale.xCenter;\r\n\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar startAngle = me._starts[index];\r\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\t\t\t_scale: scale,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX,\r\n\t\t\t\ty: centerY,\r\n\t\t\t\tinnerRadius: 0,\r\n\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcountVisibleElements: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar count = 0;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn count;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeAngle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar count = this.getMeta().count;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\r\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: me.chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\treturn resolve$3([\r\n\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t(2 * Math.PI) / count\r\n\t\t], context, index);\r\n\t}\r\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\r\ncore_defaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\n// Pie charts are Doughnut chart with different defaults\r\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('radar', {\r\n\tspanGaps: false,\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\tfill: 'start',\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_radar = core_datasetController.extend({\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderWidth',\r\n\t\t'borderColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar config = me._config;\r\n\t\tvar i, ilen;\r\n\r\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\tconfig.lineTension = config.tension;\r\n\t\t}\r\n\r\n\t\t// Utility\r\n\t\tline._scale = scale;\r\n\t\tline._datasetIndex = me.index;\r\n\t\t// Data\r\n\t\tline._children = points;\r\n\t\tline._loop = true;\r\n\t\t// Model\r\n\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\tline.pivot();\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\t// Update bezier control points\r\n\t\tme.updateBezierControlPoints();\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar lineModel = me.getMeta().dataset._model;\r\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\r\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\r\n\r\n\t\t// Utility\r\n\t\tpoint._scale = scale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = me.index;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\r\n\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar options = me.chart.options;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar area = me.chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tmodel = points[i]._model;\r\n\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\r\n\t\t\t\tmodel,\r\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\r\n\t\t\t\tmodel.tension\r\n\t\t\t);\r\n\r\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\r\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\r\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\r\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\r\n\t}\r\n});\n\ncore_defaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear', // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tscatter: {\r\n\t\t\tshowLine: false\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// Scatter charts use line controllers\r\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\r\n// the class, and so must be CamelCase in order to be correctly retrieved\r\n// by the controller in core.controller.js (`controllers[meta.type]`).\r\n\r\nvar controllers = {\r\n\tbar: controller_bar,\r\n\tbubble: controller_bubble,\r\n\tdoughnut: controller_doughnut,\r\n\thorizontalBar: controller_horizontalBar,\r\n\tline: controller_line,\r\n\tpolarArea: controller_polarArea,\r\n\tpie: controller_pie,\r\n\tradar: controller_radar,\r\n\tscatter: controller_scatter\r\n};\n\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {object} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers$1.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param {Chart} chart - the chart\r\n * @param {function} handler - the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\tvar metadata, i, j, ilen, jlen, element;\r\n\r\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\r\n\t\tmetadata = metasets[i].data;\r\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\r\n\t\t\telement = metadata[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param {ChartElement[]} items - elements to filter\r\n * @param {object} position - the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param {Chart} chart - the chart to look at elements from\r\n * @param {object} position - the point to be nearest to\r\n * @param {boolean} intersect - if true, only consider items that intersect the position\r\n * @param {function} distanceMetric - function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {string} axis - the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart._getSortedVisibleDatasetMetas().forEach(function(meta) {\r\n\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t// don't count items that are skipped (null data)\r\n\t\tif (element && !element._view.skip) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nvar core_interaction = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\n\nvar extend = helpers$1.extend;\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers$1.where(array, function(v) {\r\n\t\treturn v.pos === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\treturn array.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0.index - v1.index :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n}\r\n\r\nfunction wrapBoxes(boxes) {\r\n\tvar layoutBoxes = [];\r\n\tvar i, ilen, box;\r\n\r\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\r\n\t\tbox = boxes[i];\r\n\t\tlayoutBoxes.push({\r\n\t\t\tindex: i,\r\n\t\t\tbox: box,\r\n\t\t\tpos: box.position,\r\n\t\t\thorizontal: box.isHorizontal(),\r\n\t\t\tweight: box.weight\r\n\t\t});\r\n\t}\r\n\treturn layoutBoxes;\r\n}\r\n\r\nfunction setLayoutDims(layouts, params) {\r\n\tvar i, ilen, layout;\r\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\r\n\t\tlayout = layouts[i];\r\n\t\t// store width used instead of chartArea.w in fitBoxes\r\n\t\tlayout.width = layout.horizontal\r\n\t\t\t? layout.box.fullWidth && params.availableWidth\r\n\t\t\t: params.vBoxMaxWidth;\r\n\t\t// store height used instead of chartArea.h in fitBoxes\r\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\r\n\t}\r\n}\r\n\r\nfunction buildLayoutBoxes(boxes) {\r\n\tvar layoutBoxes = wrapBoxes(boxes);\r\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\r\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\r\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\r\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\r\n\r\n\treturn {\r\n\t\tleftAndTop: left.concat(top),\r\n\t\trightAndBottom: right.concat(bottom),\r\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\r\n\t\tvertical: left.concat(right),\r\n\t\thorizontal: top.concat(bottom)\r\n\t};\r\n}\r\n\r\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\r\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\r\n}\r\n\r\nfunction updateDims(chartArea, params, layout) {\r\n\tvar box = layout.box;\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\tvar newWidth, newHeight;\r\n\r\n\tif (layout.size) {\r\n\t\t// this layout was already counted for, lets first reduce old size\r\n\t\tchartArea[layout.pos] -= layout.size;\r\n\t}\r\n\tlayout.size = layout.horizontal ? box.height : box.width;\r\n\tchartArea[layout.pos] += layout.size;\r\n\r\n\tif (box.getPadding) {\r\n\t\tvar boxPadding = box.getPadding();\r\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\r\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\r\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\r\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\r\n\t}\r\n\r\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\r\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\r\n\r\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\r\n\t\tchartArea.w = newWidth;\r\n\t\tchartArea.h = newHeight;\r\n\r\n\t\t// return true if chart area changed in layout's direction\r\n\t\tvar sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h];\r\n\t\treturn sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1]));\r\n\t}\r\n}\r\n\r\nfunction handleMaxPadding(chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction updatePos(pos) {\r\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\r\n\t\tchartArea[pos] += change;\r\n\t\treturn change;\r\n\t}\r\n\tchartArea.y += updatePos('top');\r\n\tchartArea.x += updatePos('left');\r\n\tupdatePos('right');\r\n\tupdatePos('bottom');\r\n}\r\n\r\nfunction getMargins(horizontal, chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction marginForPositions(positions) {\r\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\r\n\t\tpositions.forEach(function(pos) {\r\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\r\n\t\t});\r\n\t\treturn margin;\r\n\t}\r\n\r\n\treturn horizontal\r\n\t\t? marginForPositions(['left', 'right'])\r\n\t\t: marginForPositions(['top', 'bottom']);\r\n}\r\n\r\nfunction fitBoxes(boxes, chartArea, params) {\r\n\tvar refitBoxes = [];\r\n\tvar i, ilen, layout, box, refit, changed;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\r\n\t\tbox.update(\r\n\t\t\tlayout.width || chartArea.w,\r\n\t\t\tlayout.height || chartArea.h,\r\n\t\t\tgetMargins(layout.horizontal, chartArea)\r\n\t\t);\r\n\t\tif (updateDims(chartArea, params, layout)) {\r\n\t\t\tchanged = true;\r\n\t\t\tif (refitBoxes.length) {\r\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\r\n\t\t\t\t// -> we have to refit those\r\n\t\t\t\trefit = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\r\n\t\t\trefitBoxes.push(layout);\r\n\t\t}\r\n\t}\r\n\r\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\r\n}\r\n\r\nfunction placeBoxes(boxes, chartArea, params) {\r\n\tvar userPadding = params.padding;\r\n\tvar x = chartArea.x;\r\n\tvar y = chartArea.y;\r\n\tvar i, ilen, layout, box;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\t\tif (layout.horizontal) {\r\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\r\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\r\n\t\t\tbox.top = y;\r\n\t\t\tbox.bottom = y + box.height;\r\n\t\t\tbox.width = box.right - box.left;\r\n\t\t\ty = box.bottom;\r\n\t\t} else {\r\n\t\t\tbox.left = x;\r\n\t\t\tbox.right = x + box.width;\r\n\t\t\tbox.top = chartArea.top;\r\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\r\n\t\t\tbox.height = box.bottom - box.top;\r\n\t\t\tx = box.right;\r\n\t\t}\r\n\t}\r\n\r\n\tchartArea.x = x;\r\n\tchartArea.y = y;\r\n}\r\n\r\ncore_defaults._set('global', {\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {string} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {function} getPadding - Returns an object with padding on the edges\r\n * @prop {number} width - Width of item. Must be valid after update()\r\n * @prop {number} height - Height of item. Must be valid after update()\r\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nvar core_layouts = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\t\titem._layers = item._layers || function() {\r\n\t\t\treturn [{\r\n\t\t\t\tz: 0,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\titem.draw.apply(item, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t};\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {ILayoutItem} item - the item to configure with the given options\r\n\t * @param {object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {number} width - the width to fit into\r\n\t * @param {number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\r\n\r\n\t\tvar availableWidth = width - padding.width;\r\n\t\tvar availableHeight = height - padding.height;\r\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\r\n\t\tvar verticalBoxes = boxes.vertical;\r\n\t\tvar horizontalBoxes = boxes.horizontal;\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | T1 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | | | T2 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | C1 | | C2 | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | | |\r\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\r\n\t\t// | | | | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | C3 | | C4 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | B1 | |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | B2 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\r\n\t\tvar params = Object.freeze({\r\n\t\t\touterWidth: width,\r\n\t\t\touterHeight: height,\r\n\t\t\tpadding: padding,\r\n\t\t\tavailableWidth: availableWidth,\r\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\r\n\t\t\thBoxMaxHeight: availableHeight / 2\r\n\t\t});\r\n\t\tvar chartArea = extend({\r\n\t\t\tmaxPadding: extend({}, padding),\r\n\t\t\tw: availableWidth,\r\n\t\t\th: availableHeight,\r\n\t\t\tx: padding.left,\r\n\t\t\ty: padding.top\r\n\t\t}, padding);\r\n\r\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\r\n\r\n\t\t// First fit vertical boxes\r\n\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\r\n\t\t// Then fit horizontal boxes\r\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\r\n\t\t\t// if the area changed, re-fit vertical boxes\r\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\t\t}\r\n\r\n\t\thandleMaxPadding(chartArea);\r\n\r\n\t\t// Finally place the boxes to correct coordinates\r\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\r\n\r\n\t\t// Move to opposite side of chart\r\n\t\tchartArea.x += chartArea.w;\r\n\t\tchartArea.y += chartArea.h;\r\n\r\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\r\n\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: chartArea.left,\r\n\t\t\ttop: chartArea.top,\r\n\t\t\tright: chartArea.left + chartArea.w,\r\n\t\t\tbottom: chartArea.top + chartArea.h\r\n\t\t};\r\n\r\n\t\t// Finally update boxes in chartArea (radial scale for example)\r\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\r\n\t\t\tvar box = layout.box;\r\n\t\t\textend(box, chart.chartArea);\r\n\t\t\tbox.update(chartArea.w, chartArea.h);\r\n\t\t});\r\n\t}\r\n};\n\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nvar platform_basic = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\n\nvar platform_dom = \"/*\\r\\n * DOM element rendering detection\\r\\n * https://davidwalsh.name/detect-node-insertion\\r\\n */\\r\\n@keyframes chartjs-render-animation {\\r\\n\\tfrom { opacity: 0.99; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n\\r\\n.chartjs-render-monitor {\\r\\n\\tanimation: chartjs-render-animation 0.001s;\\r\\n}\\r\\n\\r\\n/*\\r\\n * DOM element resizing detection\\r\\n * https://github.com/marcj/css-element-queries\\r\\n */\\r\\n.chartjs-size-monitor,\\r\\n.chartjs-size-monitor-expand,\\r\\n.chartjs-size-monitor-shrink {\\r\\n\\tposition: absolute;\\r\\n\\tdirection: ltr;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\toverflow: hidden;\\r\\n\\tpointer-events: none;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: -1;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-expand > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 1000000px;\\r\\n\\theight: 1000000px;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-shrink > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 200%;\\r\\n\\theight: 200%;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers$1.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\t// eslint-disable-next-line getter-return\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers$1.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction createDiv(cls) {\r\n\tvar el = document.createElement('div');\r\n\tel.className = cls || '';\r\n\treturn el;\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar maxSize = 1000000;\r\n\r\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\r\n\t// https://github.com/chartjs/Chart.js/issues/5902\r\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\r\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\r\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\r\n\r\n\texpand.appendChild(createDiv());\r\n\tshrink.appendChild(createDiv());\r\n\r\n\tresizer.appendChild(expand);\r\n\tresizer.appendChild(shrink);\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\r\n\t\t\tvar w = container ? container.clientWidth : 0;\r\n\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\r\n\t\t\t\t// If the container size shrank during chart resize, let's assume\r\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\r\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\r\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\r\n\t\t\t\t// events are ignored during this whole 2 resize process.\r\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\r\n\t\t\t\t// twice in a frame (potential performance issue)\r\n\t\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\t}\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\n/**\r\n * Injects CSS styles inline if the styles are not already present.\r\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the \r\n \r\n \r\n \r\n \r\n 51422:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n test\r\n \r\n \r\n \r\n */\r\n\r\nconst CommentXform = (module.exports = function(model) {\r\n this.model = model;\r\n});\r\n\r\nutils.inherits(CommentXform, BaseXform, {\r\n get tag() {\r\n return 'r';\r\n },\r\n\r\n get richTextXform() {\r\n if (!this._richTextXform) {\r\n this._richTextXform = new RichTextXform();\r\n }\r\n return this._richTextXform;\r\n },\r\n\r\n render(xmlStream, model) {\r\n model = model || this.model;\r\n\r\n xmlStream.openNode('comment', {\r\n ref: model.ref,\r\n authorId: 0,\r\n });\r\n xmlStream.openNode('text');\r\n if (model && model.note && model.note.texts) {\r\n model.note.texts.forEach(text => {\r\n this.richTextXform.render(xmlStream, text);\r\n });\r\n }\r\n xmlStream.closeNode();\r\n xmlStream.closeNode();\r\n },\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'comment':\r\n this.model = {\r\n type: 'note',\r\n note: {\r\n texts: [],\r\n },\r\n ...node.attributes,\r\n };\r\n return true;\r\n case 'r':\r\n this.parser = this.richTextXform;\r\n this.parser.parseOpen(node);\r\n return true;\r\n default:\r\n return false;\r\n }\r\n },\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n },\r\n parseClose(name) {\r\n switch (name) {\r\n case 'comment':\r\n return false;\r\n case 'r':\r\n this.model.note.texts.push(this.parser.model);\r\n this.parser = undefined;\r\n return true;\r\n default:\r\n if (this.parser) {\r\n this.parser.parseClose(name);\r\n }\r\n return true;\r\n }\r\n },\r\n});\r\n","const XmlStream = require('../../../utils/xml-stream');\r\nconst utils = require('../../../utils/utils');\r\nconst BaseXform = require('../base-xform');\r\n\r\nconst CommentXform = require('./comment-xform');\r\n\r\nconst CommentsXform = (module.exports = function() {\r\n this.map = {\r\n comment: new CommentXform(),\r\n };\r\n});\r\n\r\nutils.inherits(\r\n CommentsXform,\r\n BaseXform,\r\n {\r\n COMMENTS_ATTRIBUTES: {\r\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\r\n },\r\n },\r\n {\r\n render(xmlStream, model) {\r\n model = model || this.model;\r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n xmlStream.openNode('comments', CommentsXform.COMMENTS_ATTRIBUTES);\r\n\r\n // authors\r\n // TODO: support authors properly\r\n xmlStream.openNode('authors');\r\n xmlStream.leafNode('author', null, 'Author');\r\n xmlStream.closeNode();\r\n\r\n // comments\r\n xmlStream.openNode('commentList');\r\n model.comments.forEach(comment => {\r\n this.map.comment.render(xmlStream, comment);\r\n });\r\n xmlStream.closeNode();\r\n xmlStream.closeNode();\r\n },\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'commentList':\r\n this.model = {\r\n comments: [],\r\n };\r\n return true;\r\n case 'comment':\r\n this.parser = this.map.comment;\r\n this.parser.parseOpen(node);\r\n return true;\r\n default:\r\n return false;\r\n }\r\n },\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n },\r\n parseClose(name) {\r\n switch (name) {\r\n case 'commentList':\r\n return false;\r\n case 'comment':\r\n this.model.comments.push(this.parser.model);\r\n this.parser = undefined;\r\n return true;\r\n default:\r\n if (this.parser) {\r\n this.parser.parseClose(name);\r\n }\r\n return true;\r\n }\r\n },\r\n }\r\n);\r\n","const BaseXform = require('../../base-xform');\r\n\r\nclass VmlPositionXform extends BaseXform {\r\n constructor(model) {\r\n super();\r\n this._model = model;\r\n }\r\n\r\n get tag() {\r\n return this._model && this._model.tag;\r\n }\r\n\r\n render(xmlStream, model, type) {\r\n if (model === type[2]) {\r\n xmlStream.leafNode(this.tag);\r\n } else if (this.tag === 'x:SizeWithCells' && model === type[1]) {\r\n xmlStream.leafNode(this.tag);\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {};\r\n this.model[this.tag] = true;\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = VmlPositionXform;\r\n","const BaseXform = require('../../base-xform');\r\n\r\nclass VmlProtectionXform extends BaseXform {\r\n constructor(model) {\r\n super();\r\n this._model = model;\r\n }\r\n\r\n get tag() {\r\n return this._model && this._model.tag;\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, null, model);\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.text = '';\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n this.text = text;\r\n }\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = VmlProtectionXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\n// render the triangle in the cell for the comment\r\nclass VmlAnchorXform extends BaseXform {\r\n get tag() {\r\n return 'x:Anchor';\r\n }\r\n\r\n getAnchorRect(anchor) {\r\n const l = Math.floor(anchor.left);\r\n const lf = Math.floor((anchor.left - l) * 68);\r\n const t = Math.floor(anchor.top);\r\n const tf = Math.floor((anchor.top - t) * 18);\r\n const r = Math.floor(anchor.right);\r\n const rf = Math.floor((anchor.right - r) * 68);\r\n const b = Math.floor(anchor.bottom);\r\n const bf = Math.floor((anchor.bottom - b) * 18);\r\n return [l, lf, t, tf, r, rf, b, bf];\r\n }\r\n\r\n getDefaultRect(ref) {\r\n const l = ref.col;\r\n const lf = 6;\r\n const t = Math.max(ref.row - 2, 0);\r\n const tf = 14;\r\n const r = l + 2;\r\n const rf = 2;\r\n const b = t + 4;\r\n const bf = 16;\r\n return [l, lf, t, tf, r, rf, b, bf];\r\n }\r\n\r\n render(xmlStream, model) {\r\n const rect = model.anchor\r\n ? this.getAnchorRect(model.anchor)\r\n : this.getDefaultRect(model.refAddress);\r\n\r\n xmlStream.leafNode('x:Anchor', null, rect.join(', '));\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.text = '';\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n this.text = text;\r\n }\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = VmlAnchorXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nconst VmlAnchorXform = require('./vml-anchor-xform');\r\nconst VmlProtectionXform = require('./style/vml-protection-xform');\r\nconst VmlPositionXform = require('./style/vml-position-xform');\r\n\r\nconst POSITION_TYPE = ['twoCells', 'oneCells', 'absolute'];\r\n\r\nclass VmlClientDataXform extends BaseXform {\r\n constructor() {\r\n super();\r\n this.map = {\r\n 'x:Anchor': new VmlAnchorXform(),\r\n 'x:Locked': new VmlProtectionXform({tag: 'x:Locked'}),\r\n 'x:LockText': new VmlProtectionXform({tag: 'x:LockText'}),\r\n 'x:SizeWithCells': new VmlPositionXform({tag: 'x:SizeWithCells'}),\r\n 'x:MoveWithCells': new VmlPositionXform({tag: 'x:MoveWithCells'}),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'x:ClientData';\r\n }\r\n\r\n render(xmlStream, model) {\r\n const {protection, editAs} = model.note;\r\n xmlStream.openNode(this.tag, {ObjectType: 'Note'});\r\n this.map['x:MoveWithCells'].render(xmlStream, editAs, POSITION_TYPE);\r\n this.map['x:SizeWithCells'].render(xmlStream, editAs, POSITION_TYPE);\r\n this.map['x:Anchor'].render(xmlStream, model);\r\n this.map['x:Locked'].render(xmlStream, protection.locked);\r\n xmlStream.leafNode('x:AutoFill', null, 'False');\r\n this.map['x:LockText'].render(xmlStream, protection.lockText);\r\n xmlStream.leafNode('x:Row', null, model.refAddress.row - 1);\r\n xmlStream.leafNode('x:Column', null, model.refAddress.col - 1);\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.reset();\r\n this.model = {\r\n anchor: [],\r\n protection: {},\r\n editAs: '',\r\n };\r\n break;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n break;\r\n }\r\n return true;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n this.normalizeModel();\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n normalizeModel() {\r\n const position = Object.assign(\r\n {},\r\n this.map['x:MoveWithCells'].model,\r\n this.map['x:SizeWithCells'].model\r\n );\r\n const len = Object.keys(position).length;\r\n this.model.editAs = POSITION_TYPE[len];\r\n this.model.anchor = this.map['x:Anchor'].text;\r\n this.model.protection.locked = this.map['x:Locked'].text;\r\n this.model.protection.lockText = this.map['x:LockText'].text;\r\n }\r\n}\r\n\r\nmodule.exports = VmlClientDataXform;\r\n","const XmlStream = require('../../../utils/xml-stream');\r\n\r\nconst BaseXform = require('../base-xform');\r\nconst VmlShapeXform = require('./vml-shape-xform');\r\n\r\n// This class is (currently) single purposed to insert the triangle\r\n// drawing icons on commented cells\r\nclass VmlNotesXform extends BaseXform {\r\n constructor() {\r\n super();\r\n this.map = {\r\n 'v:shape': new VmlShapeXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'xml';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n xmlStream.openNode(this.tag, VmlNotesXform.DRAWING_ATTRIBUTES);\r\n\r\n xmlStream.openNode('o:shapelayout', {'v:ext': 'edit'});\r\n xmlStream.leafNode('o:idmap', {'v:ext': 'edit', data: 1});\r\n xmlStream.closeNode();\r\n\r\n xmlStream.openNode('v:shapetype', {\r\n id: '_x0000_t202',\r\n coordsize: '21600,21600',\r\n 'o:spt': 202,\r\n path: 'm,l,21600r21600,l21600,xe',\r\n });\r\n xmlStream.leafNode('v:stroke', {joinstyle: 'miter'});\r\n xmlStream.leafNode('v:path', {gradientshapeok: 't', 'o:connecttype': 'rect'});\r\n xmlStream.closeNode();\r\n\r\n model.comments.forEach((item, index) => {\r\n this.map['v:shape'].render(xmlStream, item, index);\r\n });\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case this.tag:\r\n this.reset();\r\n this.model = {\r\n comments: [],\r\n };\r\n break;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n break;\r\n }\r\n return true;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.model.comments.push(this.parser.model);\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n return false;\r\n default:\r\n // could be some unrecognised tags\r\n return true;\r\n }\r\n }\r\n\r\n reconcile(model, options) {\r\n model.anchors.forEach(anchor => {\r\n if (anchor.br) {\r\n this.map['xdr:twoCellAnchor'].reconcile(anchor, options);\r\n } else {\r\n this.map['xdr:oneCellAnchor'].reconcile(anchor, options);\r\n }\r\n });\r\n }\r\n}\r\n\r\nVmlNotesXform.DRAWING_ATTRIBUTES = {\r\n 'xmlns:v': 'urn:schemas-microsoft-com:vml',\r\n 'xmlns:o': 'urn:schemas-microsoft-com:office:office',\r\n 'xmlns:x': 'urn:schemas-microsoft-com:office:excel',\r\n};\r\n\r\nmodule.exports = VmlNotesXform;\r\n","const BaseXform = require('../base-xform');\r\nconst VmlTextboxXform = require('./vml-textbox-xform');\r\nconst VmlClientDataXform = require('./vml-client-data-xform');\r\n\r\nclass VmlShapeXform extends BaseXform {\r\n constructor() {\r\n super();\r\n this.map = {\r\n 'v:textbox': new VmlTextboxXform(),\r\n 'x:ClientData': new VmlClientDataXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'v:shape';\r\n }\r\n\r\n render(xmlStream, model, index) {\r\n xmlStream.openNode('v:shape', VmlShapeXform.V_SHAPE_ATTRIBUTES(model, index));\r\n\r\n xmlStream.leafNode('v:fill', {color2: 'infoBackground [80]'});\r\n xmlStream.leafNode('v:shadow', {color: 'none [81]', obscured: 't'});\r\n xmlStream.leafNode('v:path', {'o:connecttype': 'none'});\r\n this.map['v:textbox'].render(xmlStream, model);\r\n this.map['x:ClientData'].render(xmlStream, model);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n\r\n switch (node.name) {\r\n case this.tag:\r\n this.reset();\r\n this.model = {\r\n margins: {\r\n insetmode: node.attributes['o:insetmode'],\r\n },\r\n anchor: '',\r\n editAs: '',\r\n protection: {},\r\n };\r\n break;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n break;\r\n }\r\n return true;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n this.model.margins.inset = this.map['v:textbox'].model && this.map['v:textbox'].model.inset;\r\n this.model.protection =\r\n this.map['x:ClientData'].model && this.map['x:ClientData'].model.protection;\r\n this.model.anchor = this.map['x:ClientData'].model && this.map['x:ClientData'].model.anchor;\r\n this.model.editAs = this.map['x:ClientData'].model && this.map['x:ClientData'].model.editAs;\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nVmlShapeXform.V_SHAPE_ATTRIBUTES = (model, index) => ({\r\n id: `_x0000_s${1025 + index}`,\r\n type: '#_x0000_t202',\r\n style:\r\n 'position:absolute; margin-left:105.3pt;margin-top:10.5pt;width:97.8pt;height:59.1pt;z-index:1;visibility:hidden',\r\n fillcolor: 'infoBackground [80]',\r\n strokecolor: 'none [81]',\r\n 'o:insetmode': model.note.margins && model.note.margins.insetmode,\r\n});\r\n\r\nmodule.exports = VmlShapeXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass VmlTextboxXform extends BaseXform {\r\n get tag() {\r\n return 'v:textbox';\r\n }\r\n\r\n conversionUnit(value, multiple, unit) {\r\n return `${parseFloat(value) * multiple.toFixed(2)}${unit}`;\r\n }\r\n\r\n reverseConversionUnit(inset) {\r\n return (inset || '').split(',').map(margin => {\r\n return Number(parseFloat(this.conversionUnit(parseFloat(margin), 0.1, '')).toFixed(2));\r\n });\r\n }\r\n\r\n render(xmlStream, model) {\r\n const attributes = {\r\n style: 'mso-direction-alt:auto',\r\n };\r\n if (model && model.note) {\r\n let {inset} = model.note && model.note.margins;\r\n if (Array.isArray(inset)) {\r\n inset = inset\r\n .map(margin => {\r\n return this.conversionUnit(margin, 10, 'mm');\r\n })\r\n .join(',');\r\n }\r\n if (inset) {\r\n attributes.inset = inset;\r\n }\r\n }\r\n xmlStream.openNode('v:textbox', attributes);\r\n xmlStream.leafNode('div', {style: 'text-align:left'});\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {\r\n inset: this.reverseConversionUnit(node.attributes.inset),\r\n };\r\n return true;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n switch (name) {\r\n case this.tag:\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = VmlTextboxXform;\r\n","const BaseXform = require('./base-xform');\r\n\r\n/* 'virtual' methods used as a form of documentation */\r\n/* eslint-disable class-methods-use-this */\r\n\r\n// base class for xforms that are composed of other xforms\r\n// offers some default implementations\r\nclass CompositeXform extends BaseXform {\r\n createNewModel(node) {\r\n return {};\r\n }\r\n\r\n parseOpen(node) {\r\n // Typical pattern for composite xform\r\n this.parser = this.parser || this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n\r\n if (node.name === this.tag) {\r\n this.model = this.createNewModel(node);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n parseText(text) {\r\n // Default implementation. Send text to child parser\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n onParserClose(name, parser) {\r\n // parseClose has seen a child parser close\r\n // now need to incorporate into this.model somehow\r\n this.model[name] = parser.model;\r\n }\r\n\r\n parseClose(name) {\r\n // Default implementation\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.onParserClose(name, this.parser);\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n\r\n return name !== this.tag;\r\n }\r\n}\r\n\r\nmodule.exports = CompositeXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass AppHeadingPairsXform extends BaseXform {\r\n render(xmlStream, model) {\r\n xmlStream.openNode('HeadingPairs');\r\n xmlStream.openNode('vt:vector', {size: 2, baseType: 'variant'});\r\n\r\n xmlStream.openNode('vt:variant');\r\n xmlStream.leafNode('vt:lpstr', undefined, 'Worksheets');\r\n xmlStream.closeNode();\r\n\r\n xmlStream.openNode('vt:variant');\r\n xmlStream.leafNode('vt:i4', undefined, model.length);\r\n xmlStream.closeNode();\r\n\r\n xmlStream.closeNode();\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n // no parsing\r\n return node.name === 'HeadingPairs';\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n return name !== 'HeadingPairs';\r\n }\r\n}\r\n\r\nmodule.exports = AppHeadingPairsXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass AppTitlesOfPartsXform extends BaseXform {\r\n render(xmlStream, model) {\r\n xmlStream.openNode('TitlesOfParts');\r\n xmlStream.openNode('vt:vector', {size: model.length, baseType: 'lpstr'});\r\n\r\n model.forEach(sheet => {\r\n xmlStream.leafNode('vt:lpstr', undefined, sheet.name);\r\n });\r\n\r\n xmlStream.closeNode();\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n // no parsing\r\n return node.name === 'TitlesOfParts';\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n return name !== 'TitlesOfParts';\r\n }\r\n}\r\n\r\nmodule.exports = AppTitlesOfPartsXform;\r\n","const XmlStream = require('../../../utils/xml-stream');\r\nconst BaseXform = require('../base-xform');\r\nconst StringXform = require('../simple/string-xform');\r\n\r\nconst AppHeadingPairsXform = require('./app-heading-pairs-xform');\r\nconst AppTitleOfPartsXform = require('./app-titles-of-parts-xform');\r\n\r\nclass AppXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n Company: new StringXform({tag: 'Company'}),\r\n Manager: new StringXform({tag: 'Manager'}),\r\n HeadingPairs: new AppHeadingPairsXform(),\r\n TitleOfParts: new AppTitleOfPartsXform(),\r\n };\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n\r\n xmlStream.openNode('Properties', AppXform.PROPERTY_ATTRIBUTES);\r\n\r\n xmlStream.leafNode('Application', undefined, 'Microsoft Excel');\r\n xmlStream.leafNode('DocSecurity', undefined, '0');\r\n xmlStream.leafNode('ScaleCrop', undefined, 'false');\r\n\r\n this.map.HeadingPairs.render(xmlStream, model.worksheets);\r\n this.map.TitleOfParts.render(xmlStream, model.worksheets);\r\n this.map.Company.render(xmlStream, model.company || '');\r\n this.map.Manager.render(xmlStream, model.manager);\r\n\r\n xmlStream.leafNode('LinksUpToDate', undefined, 'false');\r\n xmlStream.leafNode('SharedDoc', undefined, 'false');\r\n xmlStream.leafNode('HyperlinksChanged', undefined, 'false');\r\n xmlStream.leafNode('AppVersion', undefined, '16.0300');\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'Properties':\r\n return true;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n\r\n // there's a lot we don't bother to parse\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case 'Properties':\r\n this.model = {\r\n worksheets: this.map.TitleOfParts.model,\r\n company: this.map.Company.model,\r\n manager: this.map.Manager.model,\r\n };\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nAppXform.DateFormat = function(dt) {\r\n return dt.toISOString().replace(/[.]\\d{3,6}/, '');\r\n};\r\n\r\nAppXform.DateAttrs = {'xsi:type': 'dcterms:W3CDTF'};\r\n\r\nAppXform.PROPERTY_ATTRIBUTES = {\r\n xmlns: 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties',\r\n 'xmlns:vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\r\n};\r\n\r\nmodule.exports = AppXform;\r\n","const XmlStream = require('../../../utils/xml-stream');\r\n\r\nconst BaseXform = require('../base-xform');\r\n\r\n// used for rendering the [Content_Types].xml file\r\n// not used for parsing\r\nclass ContentTypesXform extends BaseXform {\r\n render(xmlStream, model) {\r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n\r\n xmlStream.openNode('Types', ContentTypesXform.PROPERTY_ATTRIBUTES);\r\n\r\n const mediaHash = {};\r\n (model.media || []).forEach(medium => {\r\n if (medium.type === 'image') {\r\n const imageType = medium.extension;\r\n if (!mediaHash[imageType]) {\r\n mediaHash[imageType] = true;\r\n xmlStream.leafNode('Default', {Extension: imageType, ContentType: `image/${imageType}`});\r\n }\r\n }\r\n });\r\n\r\n xmlStream.leafNode('Default', {\r\n Extension: 'rels',\r\n ContentType: 'application/vnd.openxmlformats-package.relationships+xml',\r\n });\r\n xmlStream.leafNode('Default', {Extension: 'xml', ContentType: 'application/xml'});\r\n\r\n xmlStream.leafNode('Override', {\r\n PartName: '/xl/workbook.xml',\r\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml',\r\n });\r\n\r\n model.worksheets.forEach(worksheet => {\r\n const name = `/xl/worksheets/sheet${worksheet.id}.xml`;\r\n xmlStream.leafNode('Override', {\r\n PartName: name,\r\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml',\r\n });\r\n });\r\n\r\n xmlStream.leafNode('Override', {\r\n PartName: '/xl/theme/theme1.xml',\r\n ContentType: 'application/vnd.openxmlformats-officedocument.theme+xml',\r\n });\r\n xmlStream.leafNode('Override', {\r\n PartName: '/xl/styles.xml',\r\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml',\r\n });\r\n\r\n const hasSharedStrings = model.sharedStrings && model.sharedStrings.count;\r\n if (hasSharedStrings) {\r\n xmlStream.leafNode('Override', {\r\n PartName: '/xl/sharedStrings.xml',\r\n ContentType:\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml',\r\n });\r\n }\r\n\r\n if (model.tables) {\r\n model.tables.forEach(table => {\r\n xmlStream.leafNode('Override', {\r\n PartName: `/xl/tables/${table.target}`,\r\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml',\r\n });\r\n });\r\n }\r\n\r\n if (model.drawings) {\r\n model.drawings.forEach(drawing => {\r\n xmlStream.leafNode('Override', {\r\n PartName: `/xl/drawings/${drawing.name}.xml`,\r\n ContentType: 'application/vnd.openxmlformats-officedocument.drawing+xml',\r\n });\r\n });\r\n }\r\n\r\n if (model.commentRefs) {\r\n xmlStream.leafNode('Default', {\r\n Extension: 'vml',\r\n ContentType: 'application/vnd.openxmlformats-officedocument.vmlDrawing',\r\n });\r\n\r\n model.commentRefs.forEach(({commentName}) => {\r\n xmlStream.leafNode('Override', {\r\n PartName: `/xl/${commentName}.xml`,\r\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml',\r\n });\r\n });\r\n }\r\n\r\n xmlStream.leafNode('Override', {\r\n PartName: '/docProps/core.xml',\r\n ContentType: 'application/vnd.openxmlformats-package.core-properties+xml',\r\n });\r\n xmlStream.leafNode('Override', {\r\n PartName: '/docProps/app.xml',\r\n ContentType: 'application/vnd.openxmlformats-officedocument.extended-properties+xml',\r\n });\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen() {\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nContentTypesXform.PROPERTY_ATTRIBUTES = {\r\n xmlns: 'http://schemas.openxmlformats.org/package/2006/content-types',\r\n};\r\n\r\nmodule.exports = ContentTypesXform;\r\n","const XmlStream = require('../../../utils/xml-stream');\r\nconst BaseXform = require('../base-xform');\r\nconst DateXform = require('../simple/date-xform');\r\nconst StringXform = require('../simple/string-xform');\r\nconst IntegerXform = require('../simple/integer-xform');\r\n\r\nclass CoreXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'dc:creator': new StringXform({tag: 'dc:creator'}),\r\n 'dc:title': new StringXform({tag: 'dc:title'}),\r\n 'dc:subject': new StringXform({tag: 'dc:subject'}),\r\n 'dc:description': new StringXform({tag: 'dc:description'}),\r\n 'dc:identifier': new StringXform({tag: 'dc:identifier'}),\r\n 'dc:language': new StringXform({tag: 'dc:language'}),\r\n 'cp:keywords': new StringXform({tag: 'cp:keywords'}),\r\n 'cp:category': new StringXform({tag: 'cp:category'}),\r\n 'cp:lastModifiedBy': new StringXform({tag: 'cp:lastModifiedBy'}),\r\n 'cp:lastPrinted': new DateXform({tag: 'cp:lastPrinted', format: CoreXform.DateFormat}),\r\n 'cp:revision': new IntegerXform({tag: 'cp:revision'}),\r\n 'cp:version': new StringXform({tag: 'cp:version'}),\r\n 'cp:contentStatus': new StringXform({tag: 'cp:contentStatus'}),\r\n 'cp:contentType': new StringXform({tag: 'cp:contentType'}),\r\n 'dcterms:created': new DateXform({\r\n tag: 'dcterms:created',\r\n attrs: CoreXform.DateAttrs,\r\n format: CoreXform.DateFormat,\r\n }),\r\n 'dcterms:modified': new DateXform({\r\n tag: 'dcterms:modified',\r\n attrs: CoreXform.DateAttrs,\r\n format: CoreXform.DateFormat,\r\n }),\r\n };\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n\r\n xmlStream.openNode('cp:coreProperties', CoreXform.CORE_PROPERTY_ATTRIBUTES);\r\n\r\n this.map['dc:creator'].render(xmlStream, model.creator);\r\n this.map['dc:title'].render(xmlStream, model.title);\r\n this.map['dc:subject'].render(xmlStream, model.subject);\r\n this.map['dc:description'].render(xmlStream, model.description);\r\n this.map['dc:identifier'].render(xmlStream, model.identifier);\r\n this.map['dc:language'].render(xmlStream, model.language);\r\n this.map['cp:keywords'].render(xmlStream, model.keywords);\r\n this.map['cp:category'].render(xmlStream, model.category);\r\n this.map['cp:lastModifiedBy'].render(xmlStream, model.lastModifiedBy);\r\n this.map['cp:lastPrinted'].render(xmlStream, model.lastPrinted);\r\n this.map['cp:revision'].render(xmlStream, model.revision);\r\n this.map['cp:version'].render(xmlStream, model.version);\r\n this.map['cp:contentStatus'].render(xmlStream, model.contentStatus);\r\n this.map['cp:contentType'].render(xmlStream, model.contentType);\r\n this.map['dcterms:created'].render(xmlStream, model.created);\r\n this.map['dcterms:modified'].render(xmlStream, model.modified);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'cp:coreProperties':\r\n case 'coreProperties':\r\n return true;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n throw new Error(`Unexpected xml node in parseOpen: ${JSON.stringify(node)}`);\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case 'cp:coreProperties':\r\n case 'coreProperties':\r\n this.model = {\r\n creator: this.map['dc:creator'].model,\r\n title: this.map['dc:title'].model,\r\n subject: this.map['dc:subject'].model,\r\n description: this.map['dc:description'].model,\r\n identifier: this.map['dc:identifier'].model,\r\n language: this.map['dc:language'].model,\r\n keywords: this.map['cp:keywords'].model,\r\n category: this.map['cp:category'].model,\r\n lastModifiedBy: this.map['cp:lastModifiedBy'].model,\r\n lastPrinted: this.map['cp:lastPrinted'].model,\r\n revision: this.map['cp:revision'].model,\r\n contentStatus: this.map['cp:contentStatus'].model,\r\n contentType: this.map['cp:contentType'].model,\r\n created: this.map['dcterms:created'].model,\r\n modified: this.map['dcterms:modified'].model,\r\n };\r\n return false;\r\n default:\r\n throw new Error(`Unexpected xml node in parseClose: ${name}`);\r\n }\r\n }\r\n}\r\n\r\nCoreXform.DateFormat = function(dt) {\r\n return dt.toISOString().replace(/[.]\\d{3}/, '');\r\n};\r\nCoreXform.DateAttrs = {'xsi:type': 'dcterms:W3CDTF'};\r\n\r\nCoreXform.CORE_PROPERTY_ATTRIBUTES = {\r\n 'xmlns:cp': 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\r\n 'xmlns:dc': 'http://purl.org/dc/elements/1.1/',\r\n 'xmlns:dcterms': 'http://purl.org/dc/terms/',\r\n 'xmlns:dcmitype': 'http://purl.org/dc/dcmitype/',\r\n 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\r\n};\r\n\r\nmodule.exports = CoreXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass RelationshipXform extends BaseXform {\r\n render(xmlStream, model) {\r\n xmlStream.leafNode('Relationship', model);\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case 'Relationship':\r\n this.model = node.attributes;\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = RelationshipXform;\r\n","const XmlStream = require('../../../utils/xml-stream');\r\nconst BaseXform = require('../base-xform');\r\n\r\nconst RelationshipXform = require('./relationship-xform');\r\n\r\nclass RelationshipsXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n Relationship: new RelationshipXform(),\r\n };\r\n }\r\n\r\n render(xmlStream, model) {\r\n model = model || this._values;\r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n xmlStream.openNode('Relationships', RelationshipsXform.RELATIONSHIPS_ATTRIBUTES);\r\n\r\n model.forEach(relationship => {\r\n this.map.Relationship.render(xmlStream, relationship);\r\n });\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'Relationships':\r\n this.model = [];\r\n return true;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n throw new Error(`Unexpected xml node in parseOpen: ${JSON.stringify(node)}`);\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.model.push(this.parser.model);\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case 'Relationships':\r\n return false;\r\n default:\r\n throw new Error(`Unexpected xml node in parseClose: ${name}`);\r\n }\r\n }\r\n}\r\n\r\nRelationshipsXform.RELATIONSHIPS_ATTRIBUTES = {\r\n xmlns: 'http://schemas.openxmlformats.org/package/2006/relationships',\r\n};\r\n\r\nmodule.exports = RelationshipsXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass BaseCellAnchorXform extends BaseXform {\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case this.tag:\r\n this.reset();\r\n this.model = {\r\n range: {\r\n editAs: node.attributes.editAs || 'oneCell',\r\n },\r\n };\r\n break;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n break;\r\n }\r\n return true;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n reconcilePicture(model, options) {\r\n if (model && model.rId) {\r\n const rel = options.rels[model.rId];\r\n const match = rel.Target.match(/.*\\/media\\/(.+[.][a-zA-Z]{3,4})/);\r\n if (match) {\r\n const name = match[1];\r\n const mediaId = options.mediaIndex[name];\r\n return options.media[mediaId];\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\n\r\nmodule.exports = BaseCellAnchorXform;\r\n","const BaseXform = require('../base-xform');\r\nconst BlipXform = require('./blip-xform');\r\n\r\nclass BlipFillXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'a:blip': new BlipXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'xdr:blipFill';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag);\r\n\r\n this.map['a:blip'].render(xmlStream, model);\r\n\r\n // TODO: options for this + parsing\r\n xmlStream.openNode('a:stretch');\r\n xmlStream.leafNode('a:fillRect');\r\n xmlStream.closeNode();\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n\r\n switch (node.name) {\r\n case this.tag:\r\n this.reset();\r\n break;\r\n\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n break;\r\n }\r\n return true;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n this.model = this.map['a:blip'].model;\r\n return false;\r\n\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = BlipFillXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass BlipXform extends BaseXform {\r\n get tag() {\r\n return 'a:blip';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, {\r\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\r\n 'r:embed': model.rId,\r\n cstate: 'print',\r\n });\r\n // TODO: handle children (e.g. a:extLst=>a:ext=>a14:useLocalDpi\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {\r\n rId: node.attributes['r:embed'],\r\n };\r\n return true;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n switch (name) {\r\n case this.tag:\r\n return false;\r\n default:\r\n // unprocessed internal nodes\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = BlipXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass CNvPicPrXform extends BaseXform {\r\n get tag() {\r\n return 'xdr:cNvPicPr';\r\n }\r\n\r\n render(xmlStream) {\r\n xmlStream.openNode(this.tag);\r\n xmlStream.leafNode('a:picLocks', {\r\n noChangeAspect: '1',\r\n });\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n return true;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n switch (name) {\r\n case this.tag:\r\n return false;\r\n default:\r\n // unprocessed internal nodes\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = CNvPicPrXform;\r\n","const BaseXform = require('../base-xform');\r\nconst HlickClickXform = require('./hlink-click-xform');\r\nconst ExtLstXform = require('./ext-lst-xform');\r\n\r\nclass CNvPrXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'a:hlinkClick': new HlickClickXform(),\r\n 'a:extLst': new ExtLstXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'xdr:cNvPr';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n id: model.index,\r\n name: `Picture ${model.index}`,\r\n });\r\n this.map['a:hlinkClick'].render(xmlStream, model);\r\n this.map['a:extLst'].render(xmlStream, model);\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n\r\n switch (node.name) {\r\n case this.tag:\r\n this.reset();\r\n break;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n break;\r\n }\r\n return true;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n this.model = this.map['a:hlinkClick'].model;\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = CNvPrXform;\r\n","const BaseXform = require('../base-xform');\r\nconst IntegerXform = require('../simple/integer-xform');\r\n\r\nclass CellPositionXform extends BaseXform {\r\n constructor(options) {\r\n super();\r\n\r\n this.tag = options.tag;\r\n this.map = {\r\n 'xdr:col': new IntegerXform({tag: 'xdr:col', zero: true}),\r\n 'xdr:colOff': new IntegerXform({tag: 'xdr:colOff', zero: true}),\r\n 'xdr:row': new IntegerXform({tag: 'xdr:row', zero: true}),\r\n 'xdr:rowOff': new IntegerXform({tag: 'xdr:rowOff', zero: true}),\r\n };\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag);\r\n\r\n this.map['xdr:col'].render(xmlStream, model.nativeCol);\r\n this.map['xdr:colOff'].render(xmlStream, model.nativeColOff);\r\n\r\n this.map['xdr:row'].render(xmlStream, model.nativeRow);\r\n this.map['xdr:rowOff'].render(xmlStream, model.nativeRowOff);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case this.tag:\r\n this.reset();\r\n break;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n break;\r\n }\r\n return true;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n this.model = {\r\n nativeCol: this.map['xdr:col'].model,\r\n nativeColOff: this.map['xdr:colOff'].model,\r\n nativeRow: this.map['xdr:row'].model,\r\n nativeRowOff: this.map['xdr:rowOff'].model,\r\n };\r\n return false;\r\n default:\r\n // not quite sure how we get here!\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = CellPositionXform;\r\n","const colCache = require('../../../utils/col-cache');\r\nconst XmlStream = require('../../../utils/xml-stream');\r\n\r\nconst BaseXform = require('../base-xform');\r\nconst TwoCellAnchorXform = require('./two-cell-anchor-xform');\r\nconst OneCellAnchorXform = require('./one-cell-anchor-xform');\r\n\r\nfunction getAnchorType(model) {\r\n const range = typeof model.range === 'string' ? colCache.decode(model.range) : model.range;\r\n\r\n return range.br ? 'xdr:twoCellAnchor' : 'xdr:oneCellAnchor';\r\n}\r\n\r\nclass DrawingXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'xdr:twoCellAnchor': new TwoCellAnchorXform(),\r\n 'xdr:oneCellAnchor': new OneCellAnchorXform(),\r\n };\r\n }\r\n\r\n prepare(model) {\r\n model.anchors.forEach((item, index) => {\r\n item.anchorType = getAnchorType(item);\r\n const anchor = this.map[item.anchorType];\r\n anchor.prepare(item, {index});\r\n });\r\n }\r\n\r\n get tag() {\r\n return 'xdr:wsDr';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n xmlStream.openNode(this.tag, DrawingXform.DRAWING_ATTRIBUTES);\r\n\r\n model.anchors.forEach(item => {\r\n const anchor = this.map[item.anchorType];\r\n anchor.render(xmlStream, item);\r\n });\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case this.tag:\r\n this.reset();\r\n this.model = {\r\n anchors: [],\r\n };\r\n break;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n break;\r\n }\r\n return true;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.model.anchors.push(this.parser.model);\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n return false;\r\n default:\r\n // could be some unrecognised tags\r\n return true;\r\n }\r\n }\r\n\r\n reconcile(model, options) {\r\n model.anchors.forEach(anchor => {\r\n if (anchor.br) {\r\n this.map['xdr:twoCellAnchor'].reconcile(anchor, options);\r\n } else {\r\n this.map['xdr:oneCellAnchor'].reconcile(anchor, options);\r\n }\r\n });\r\n }\r\n}\r\n\r\nDrawingXform.DRAWING_ATTRIBUTES = {\r\n 'xmlns:xdr': 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing',\r\n 'xmlns:a': 'http://schemas.openxmlformats.org/drawingml/2006/main',\r\n};\r\n\r\nmodule.exports = DrawingXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass ExtLstXform extends BaseXform {\r\n get tag() {\r\n return 'a:extLst';\r\n }\r\n\r\n render(xmlStream) {\r\n xmlStream.openNode(this.tag);\r\n xmlStream.openNode('a:ext', {\r\n uri: '{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}',\r\n });\r\n xmlStream.leafNode('a16:creationId', {\r\n 'xmlns:a16': 'http://schemas.microsoft.com/office/drawing/2014/main',\r\n id: '{00000000-0008-0000-0000-000002000000}',\r\n });\r\n xmlStream.closeNode();\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n return true;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n switch (name) {\r\n case this.tag:\r\n return false;\r\n default:\r\n // unprocessed internal nodes\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = ExtLstXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\n/** https://en.wikipedia.org/wiki/Office_Open_XML_file_formats#DrawingML */\r\nconst EMU_PER_PIXEL_AT_96_DPI = 9525;\r\n\r\nclass ExtXform extends BaseXform {\r\n constructor(options) {\r\n super();\r\n\r\n this.tag = options.tag;\r\n this.map = {};\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag);\r\n\r\n const width = Math.floor(model.width * EMU_PER_PIXEL_AT_96_DPI);\r\n const height = Math.floor(model.height * EMU_PER_PIXEL_AT_96_DPI);\r\n\r\n xmlStream.addAttribute('cx', width);\r\n xmlStream.addAttribute('cy', height);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === this.tag) {\r\n this.model = {\r\n width: parseInt(node.attributes.cx || '0', 10) / EMU_PER_PIXEL_AT_96_DPI,\r\n height: parseInt(node.attributes.cy || '0', 10) / EMU_PER_PIXEL_AT_96_DPI,\r\n };\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText(/* text */) {}\r\n\r\n parseClose(/* name */) {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = ExtXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass HLinkClickXform extends BaseXform {\r\n get tag() {\r\n return 'a:hlinkClick';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (!(model.hyperlinks && model.hyperlinks.rId)) {\r\n return;\r\n }\r\n xmlStream.leafNode(this.tag, {\r\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\r\n 'r:id': model.hyperlinks.rId,\r\n tooltip: model.hyperlinks.tooltip,\r\n });\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {\r\n hyperlinks: {\r\n rId: node.attributes['r:id'],\r\n tooltip: node.attributes.tooltip,\r\n },\r\n };\r\n return true;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = HLinkClickXform;\r\n","const BaseXform = require('../base-xform');\r\nconst CNvPrXform = require('./c-nv-pr-xform');\r\nconst CNvPicPrXform = require('./c-nv-pic-pr-xform');\r\n\r\nclass NvPicPrXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'xdr:cNvPr': new CNvPrXform(),\r\n 'xdr:cNvPicPr': new CNvPicPrXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'xdr:nvPicPr';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag);\r\n this.map['xdr:cNvPr'].render(xmlStream, model);\r\n this.map['xdr:cNvPicPr'].render(xmlStream, model);\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n\r\n switch (node.name) {\r\n case this.tag:\r\n this.reset();\r\n break;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n break;\r\n }\r\n return true;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n this.model = this.map['xdr:cNvPr'].model;\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = NvPicPrXform;\r\n","const BaseCellAnchorXform = require('./base-cell-anchor-xform');\r\nconst StaticXform = require('../static-xform');\r\n\r\nconst CellPositionXform = require('./cell-position-xform');\r\nconst ExtXform = require('./ext-xform');\r\nconst PicXform = require('./pic-xform');\r\n\r\nclass OneCellAnchorXform extends BaseCellAnchorXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'xdr:from': new CellPositionXform({tag: 'xdr:from'}),\r\n 'xdr:ext': new ExtXform({tag: 'xdr:ext'}),\r\n 'xdr:pic': new PicXform(),\r\n 'xdr:clientData': new StaticXform({tag: 'xdr:clientData'}),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'xdr:oneCellAnchor';\r\n }\r\n\r\n prepare(model, options) {\r\n this.map['xdr:pic'].prepare(model.picture, options);\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {editAs: model.range.editAs || 'oneCell'});\r\n\r\n this.map['xdr:from'].render(xmlStream, model.range.tl);\r\n this.map['xdr:ext'].render(xmlStream, model.range.ext);\r\n this.map['xdr:pic'].render(xmlStream, model.picture);\r\n this.map['xdr:clientData'].render(xmlStream, {});\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n this.model.range.tl = this.map['xdr:from'].model;\r\n this.model.range.ext = this.map['xdr:ext'].model;\r\n this.model.picture = this.map['xdr:pic'].model;\r\n return false;\r\n default:\r\n // could be some unrecognised tags\r\n return true;\r\n }\r\n }\r\n\r\n reconcile(model, options) {\r\n model.medium = this.reconcilePicture(model.picture, options);\r\n }\r\n}\r\n\r\nmodule.exports = OneCellAnchorXform;\r\n","const BaseXform = require('../base-xform');\r\nconst StaticXform = require('../static-xform');\r\n\r\nconst BlipFillXform = require('./blip-fill-xform');\r\nconst NvPicPrXform = require('./nv-pic-pr-xform');\r\n\r\nconst spPrJSON = require('./sp-pr');\r\n\r\nclass PicXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'xdr:nvPicPr': new NvPicPrXform(),\r\n 'xdr:blipFill': new BlipFillXform(),\r\n 'xdr:spPr': new StaticXform(spPrJSON),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'xdr:pic';\r\n }\r\n\r\n prepare(model, options) {\r\n model.index = options.index + 1;\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag);\r\n\r\n this.map['xdr:nvPicPr'].render(xmlStream, model);\r\n this.map['xdr:blipFill'].render(xmlStream, model);\r\n this.map['xdr:spPr'].render(xmlStream, model);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case this.tag:\r\n this.reset();\r\n break;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n break;\r\n }\r\n return true;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.mergeModel(this.parser.model);\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n return false;\r\n default:\r\n // not quite sure how we get here!\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = PicXform;\r\n","module.exports = {\r\n tag: 'xdr:spPr',\r\n c: [\r\n {\r\n tag: 'a:xfrm',\r\n c: [\r\n {tag: 'a:off', $: {x: '0', y: '0'}},\r\n {tag: 'a:ext', $: {cx: '0', cy: '0'}},\r\n ],\r\n },\r\n {\r\n tag: 'a:prstGeom',\r\n $: {prst: 'rect'},\r\n c: [{tag: 'a:avLst'}],\r\n },\r\n ],\r\n};\r\n","const BaseCellAnchorXform = require('./base-cell-anchor-xform');\r\nconst StaticXform = require('../static-xform');\r\n\r\nconst CellPositionXform = require('./cell-position-xform');\r\nconst PicXform = require('./pic-xform');\r\n\r\nclass TwoCellAnchorXform extends BaseCellAnchorXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'xdr:from': new CellPositionXform({tag: 'xdr:from'}),\r\n 'xdr:to': new CellPositionXform({tag: 'xdr:to'}),\r\n 'xdr:pic': new PicXform(),\r\n 'xdr:clientData': new StaticXform({tag: 'xdr:clientData'}),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'xdr:twoCellAnchor';\r\n }\r\n\r\n prepare(model, options) {\r\n this.map['xdr:pic'].prepare(model.picture, options);\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {editAs: model.range.editAs || 'oneCell'});\r\n\r\n this.map['xdr:from'].render(xmlStream, model.range.tl);\r\n this.map['xdr:to'].render(xmlStream, model.range.br);\r\n this.map['xdr:pic'].render(xmlStream, model.picture);\r\n this.map['xdr:clientData'].render(xmlStream, {});\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n this.model.range.tl = this.map['xdr:from'].model;\r\n this.model.range.br = this.map['xdr:to'].model;\r\n this.model.picture = this.map['xdr:pic'].model;\r\n return false;\r\n default:\r\n // could be some unrecognised tags\r\n return true;\r\n }\r\n }\r\n\r\n reconcile(model, options) {\r\n model.medium = this.reconcilePicture(model.picture, options);\r\n }\r\n}\r\n\r\nmodule.exports = TwoCellAnchorXform;\r\n","const BaseXform = require('./base-xform');\r\n\r\nclass ListXform extends BaseXform {\r\n constructor(options) {\r\n super();\r\n\r\n this.tag = options.tag;\r\n this.always = !!options.always;\r\n this.count = options.count;\r\n this.empty = options.empty;\r\n this.$count = options.$count || 'count';\r\n this.$ = options.$;\r\n this.childXform = options.childXform;\r\n this.maxItems = options.maxItems;\r\n }\r\n\r\n prepare(model, options) {\r\n const {childXform} = this;\r\n if (model) {\r\n model.forEach((childModel, index) => {\r\n options.index = index;\r\n childXform.prepare(childModel, options);\r\n });\r\n }\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (this.always || (model && model.length)) {\r\n xmlStream.openNode(this.tag, this.$);\r\n if (this.count) {\r\n xmlStream.addAttribute(this.$count, (model && model.length) || 0);\r\n }\r\n\r\n const {childXform} = this;\r\n (model || []).forEach((childModel, index) => {\r\n childXform.render(xmlStream, childModel, index);\r\n });\r\n\r\n xmlStream.closeNode();\r\n } else if (this.empty) {\r\n xmlStream.leafNode(this.tag);\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = [];\r\n return true;\r\n default:\r\n if (this.childXform.parseOpen(node)) {\r\n this.parser = this.childXform;\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.model.push(this.parser.model);\r\n this.parser = undefined;\r\n\r\n if (this.maxItems && this.model.length > this.maxItems) {\r\n throw new Error(`Max ${this.childXform.tag} count (${this.maxItems}) exceeded`);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n reconcile(model, options) {\r\n if (model) {\r\n const {childXform} = this;\r\n model.forEach(childModel => {\r\n childXform.reconcile(childModel, options);\r\n });\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = ListXform;\r\n","const colCache = require('../../../utils/col-cache');\r\nconst BaseXform = require('../base-xform');\r\n\r\nclass AutoFilterXform extends BaseXform {\r\n get tag() {\r\n return 'autoFilter';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n if (typeof model === 'string') {\r\n // assume range\r\n xmlStream.leafNode('autoFilter', {ref: model});\r\n } else {\r\n const getAddress = function(addr) {\r\n if (typeof addr === 'string') {\r\n return addr;\r\n }\r\n return colCache.getAddress(addr.row, addr.column).address;\r\n };\r\n\r\n const firstAddress = getAddress(model.from);\r\n const secondAddress = getAddress(model.to);\r\n if (firstAddress && secondAddress) {\r\n xmlStream.leafNode('autoFilter', {ref: `${firstAddress}:${secondAddress}`});\r\n }\r\n }\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'autoFilter') {\r\n this.model = node.attributes.ref;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = AutoFilterXform;\r\n","const utils = require('../../../utils/utils');\r\nconst BaseXform = require('../base-xform');\r\nconst Range = require('../../../doc/range');\r\nconst Enums = require('../../../doc/enums');\r\n\r\nconst RichTextXform = require('../strings/rich-text-xform');\r\n\r\nfunction getValueType(v) {\r\n if (v === null || v === undefined) {\r\n return Enums.ValueType.Null;\r\n }\r\n if (v instanceof String || typeof v === 'string') {\r\n return Enums.ValueType.String;\r\n }\r\n if (typeof v === 'number') {\r\n return Enums.ValueType.Number;\r\n }\r\n if (typeof v === 'boolean') {\r\n return Enums.ValueType.Boolean;\r\n }\r\n if (v instanceof Date) {\r\n return Enums.ValueType.Date;\r\n }\r\n if (v.text && v.hyperlink) {\r\n return Enums.ValueType.Hyperlink;\r\n }\r\n if (v.formula) {\r\n return Enums.ValueType.Formula;\r\n }\r\n if (v.error) {\r\n return Enums.ValueType.Error;\r\n }\r\n throw new Error('I could not understand type of value');\r\n}\r\n\r\nfunction getEffectiveCellType(cell) {\r\n switch (cell.type) {\r\n case Enums.ValueType.Formula:\r\n return getValueType(cell.result);\r\n default:\r\n return cell.type;\r\n }\r\n}\r\n\r\nclass CellXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.richTextXForm = new RichTextXform();\r\n }\r\n\r\n get tag() {\r\n return 'c';\r\n }\r\n\r\n prepare(model, options) {\r\n const styleId = options.styles.addStyleModel(model.style || {}, getEffectiveCellType(model));\r\n if (styleId) {\r\n model.styleId = styleId;\r\n }\r\n\r\n if (model.comment) {\r\n options.comments.push({...model.comment, ref: model.address});\r\n }\r\n\r\n switch (model.type) {\r\n case Enums.ValueType.String:\r\n case Enums.ValueType.RichText:\r\n if (options.sharedStrings) {\r\n model.ssId = options.sharedStrings.add(model.value);\r\n }\r\n break;\r\n\r\n case Enums.ValueType.Date:\r\n if (options.date1904) {\r\n model.date1904 = true;\r\n }\r\n break;\r\n\r\n case Enums.ValueType.Hyperlink:\r\n if (options.sharedStrings && model.text !== undefined && model.text !== null) {\r\n model.ssId = options.sharedStrings.add(model.text);\r\n }\r\n options.hyperlinks.push({\r\n address: model.address,\r\n target: model.hyperlink,\r\n tooltip: model.tooltip,\r\n });\r\n break;\r\n\r\n case Enums.ValueType.Merge:\r\n options.merges.add(model);\r\n break;\r\n\r\n case Enums.ValueType.Formula:\r\n if (options.date1904) {\r\n // in case valueType is date\r\n model.date1904 = true;\r\n }\r\n\r\n if (model.shareType === 'shared') {\r\n model.si = options.siFormulae++;\r\n }\r\n\r\n if (model.formula) {\r\n options.formulae[model.address] = model;\r\n } else if (model.sharedFormula) {\r\n const master = options.formulae[model.sharedFormula];\r\n if (!master) {\r\n throw new Error(\r\n `Shared Formula master must exist above and or left of clone for cell ${model.address}`\r\n );\r\n }\r\n if (master.si === undefined) {\r\n master.shareType = 'shared';\r\n master.si = options.siFormulae++;\r\n master.range = new Range(master.address, model.address);\r\n } else if (master.range) {\r\n master.range.expandToAddress(model.address);\r\n }\r\n model.si = master.si;\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n renderFormula(xmlStream, model) {\r\n let attrs = null;\r\n switch (model.shareType) {\r\n case 'shared':\r\n attrs = {\r\n t: 'shared',\r\n ref: model.ref || model.range.range,\r\n si: model.si,\r\n };\r\n break;\r\n\r\n case 'array':\r\n attrs = {\r\n t: 'array',\r\n ref: model.ref,\r\n };\r\n break;\r\n\r\n default:\r\n if (model.si !== undefined) {\r\n attrs = {\r\n t: 'shared',\r\n si: model.si,\r\n };\r\n }\r\n break;\r\n }\r\n\r\n switch (getValueType(model.result)) {\r\n case Enums.ValueType.Null: // ?\r\n xmlStream.leafNode('f', attrs, model.formula);\r\n break;\r\n\r\n case Enums.ValueType.String:\r\n // oddly, formula results don't ever use shared strings\r\n xmlStream.addAttribute('t', 'str');\r\n xmlStream.leafNode('f', attrs, model.formula);\r\n xmlStream.leafNode('v', null, model.result);\r\n break;\r\n\r\n case Enums.ValueType.Number:\r\n xmlStream.leafNode('f', attrs, model.formula);\r\n xmlStream.leafNode('v', null, model.result);\r\n break;\r\n\r\n case Enums.ValueType.Boolean:\r\n xmlStream.addAttribute('t', 'b');\r\n xmlStream.leafNode('f', attrs, model.formula);\r\n xmlStream.leafNode('v', null, model.result ? 1 : 0);\r\n break;\r\n\r\n case Enums.ValueType.Error:\r\n xmlStream.addAttribute('t', 'e');\r\n xmlStream.leafNode('f', attrs, model.formula);\r\n xmlStream.leafNode('v', null, model.result.error);\r\n break;\r\n\r\n case Enums.ValueType.Date:\r\n xmlStream.leafNode('f', attrs, model.formula);\r\n xmlStream.leafNode('v', null, utils.dateToExcel(model.result, model.date1904));\r\n break;\r\n\r\n // case Enums.ValueType.Hyperlink: // ??\r\n // case Enums.ValueType.Formula:\r\n default:\r\n throw new Error('I could not understand type of value');\r\n }\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model.type === Enums.ValueType.Null && !model.styleId) {\r\n // if null and no style, exit\r\n return;\r\n }\r\n\r\n xmlStream.openNode('c');\r\n xmlStream.addAttribute('r', model.address);\r\n\r\n if (model.styleId) {\r\n xmlStream.addAttribute('s', model.styleId);\r\n }\r\n\r\n switch (model.type) {\r\n case Enums.ValueType.Null:\r\n break;\r\n\r\n case Enums.ValueType.Number:\r\n xmlStream.leafNode('v', null, model.value);\r\n break;\r\n\r\n case Enums.ValueType.Boolean:\r\n xmlStream.addAttribute('t', 'b');\r\n xmlStream.leafNode('v', null, model.value ? '1' : '0');\r\n break;\r\n\r\n case Enums.ValueType.Error:\r\n xmlStream.addAttribute('t', 'e');\r\n xmlStream.leafNode('v', null, model.value.error);\r\n break;\r\n\r\n case Enums.ValueType.String:\r\n case Enums.ValueType.RichText:\r\n if (model.ssId !== undefined) {\r\n xmlStream.addAttribute('t', 's');\r\n xmlStream.leafNode('v', null, model.ssId);\r\n } else if (model.value && model.value.richText) {\r\n xmlStream.addAttribute('t', 'inlineStr');\r\n xmlStream.openNode('is');\r\n model.value.richText.forEach(text => {\r\n this.richTextXForm.render(xmlStream, text);\r\n });\r\n xmlStream.closeNode('is');\r\n } else {\r\n xmlStream.addAttribute('t', 'str');\r\n xmlStream.leafNode('v', null, model.value);\r\n }\r\n break;\r\n\r\n case Enums.ValueType.Date:\r\n xmlStream.leafNode('v', null, utils.dateToExcel(model.value, model.date1904));\r\n break;\r\n\r\n case Enums.ValueType.Hyperlink:\r\n if (model.ssId !== undefined) {\r\n xmlStream.addAttribute('t', 's');\r\n xmlStream.leafNode('v', null, model.ssId);\r\n } else {\r\n xmlStream.addAttribute('t', 'str');\r\n xmlStream.leafNode('v', null, model.text);\r\n }\r\n break;\r\n\r\n case Enums.ValueType.Formula:\r\n this.renderFormula(xmlStream, model);\r\n break;\r\n\r\n case Enums.ValueType.Merge:\r\n // nothing to add\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n xmlStream.closeNode(); // \r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'c':\r\n // const address = colCache.decodeAddress(node.attributes.r);\r\n this.model = {\r\n address: node.attributes.r,\r\n };\r\n this.t = node.attributes.t;\r\n if (node.attributes.s) {\r\n this.model.styleId = parseInt(node.attributes.s, 10);\r\n }\r\n return true;\r\n\r\n case 'f':\r\n this.currentNode = 'f';\r\n this.model.si = node.attributes.si;\r\n this.model.shareType = node.attributes.t;\r\n this.model.ref = node.attributes.ref;\r\n return true;\r\n\r\n case 'v':\r\n this.currentNode = 'v';\r\n return true;\r\n\r\n case 't':\r\n this.currentNode = 't';\r\n return true;\r\n\r\n case 'r':\r\n this.parser = this.richTextXForm;\r\n this.parser.parseOpen(node);\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n return;\r\n }\r\n switch (this.currentNode) {\r\n case 'f':\r\n this.model.formula = this.model.formula ? this.model.formula + text : text;\r\n break;\r\n case 'v':\r\n case 't':\r\n if (this.model.value && this.model.value.richText) {\r\n this.model.value.richText.text = this.model.value.richText.text\r\n ? this.model.value.richText.text + text\r\n : text;\r\n } else {\r\n this.model.value = this.model.value ? this.model.value + text : text;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n switch (name) {\r\n case 'c': {\r\n const {model} = this;\r\n\r\n // first guess on cell type\r\n if (model.formula || model.shareType) {\r\n model.type = Enums.ValueType.Formula;\r\n if (model.value) {\r\n if (this.t === 'str') {\r\n model.result = utils.xmlDecode(model.value);\r\n } else if (this.t === 'b') {\r\n model.result = parseInt(model.value, 10) !== 0;\r\n } else if (this.t === 'e') {\r\n model.result = {error: model.value};\r\n } else {\r\n model.result = parseFloat(model.value);\r\n }\r\n model.value = undefined;\r\n }\r\n } else if (model.value !== undefined) {\r\n switch (this.t) {\r\n case 's':\r\n model.type = Enums.ValueType.String;\r\n model.value = parseInt(model.value, 10);\r\n break;\r\n case 'str':\r\n model.type = Enums.ValueType.String;\r\n model.value = utils.xmlDecode(model.value);\r\n break;\r\n case 'inlineStr':\r\n model.type = Enums.ValueType.String;\r\n break;\r\n case 'b':\r\n model.type = Enums.ValueType.Boolean;\r\n model.value = parseInt(model.value, 10) !== 0;\r\n break;\r\n case 'e':\r\n model.type = Enums.ValueType.Error;\r\n model.value = {error: model.value};\r\n break;\r\n default:\r\n model.type = Enums.ValueType.Number;\r\n model.value = parseFloat(model.value);\r\n break;\r\n }\r\n } else if (model.styleId) {\r\n model.type = Enums.ValueType.Null;\r\n } else {\r\n model.type = Enums.ValueType.Merge;\r\n }\r\n return false;\r\n }\r\n\r\n case 'f':\r\n case 'v':\r\n case 'is':\r\n this.currentNode = undefined;\r\n return true;\r\n\r\n case 't':\r\n if (this.parser) {\r\n this.parser.parseClose(name);\r\n return true;\r\n }\r\n this.currentNode = undefined;\r\n return true;\r\n\r\n case 'r':\r\n this.model.value = this.model.value || {};\r\n this.model.value.richText = this.model.value.richText || [];\r\n this.model.value.richText.push(this.parser.model);\r\n this.parser = undefined;\r\n this.currentNode = undefined;\r\n return true;\r\n\r\n default:\r\n if (this.parser) {\r\n this.parser.parseClose(name);\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n reconcile(model, options) {\r\n const style = model.styleId && options.styles && options.styles.getStyleModel(model.styleId);\r\n if (style) {\r\n model.style = style;\r\n }\r\n if (model.styleId !== undefined) {\r\n model.styleId = undefined;\r\n }\r\n\r\n switch (model.type) {\r\n case Enums.ValueType.String:\r\n if (typeof model.value === 'number') {\r\n if (options.sharedStrings) {\r\n model.value = options.sharedStrings.getString(model.value);\r\n }\r\n }\r\n if (model.value.richText) {\r\n model.type = Enums.ValueType.RichText;\r\n }\r\n break;\r\n\r\n case Enums.ValueType.Number:\r\n if (style && utils.isDateFmt(style.numFmt)) {\r\n model.type = Enums.ValueType.Date;\r\n model.value = utils.excelToDate(model.value, options.date1904);\r\n }\r\n break;\r\n\r\n case Enums.ValueType.Formula:\r\n if (model.result !== undefined && style && utils.isDateFmt(style.numFmt)) {\r\n model.result = utils.excelToDate(model.result, options.date1904);\r\n }\r\n if (model.shareType === 'shared') {\r\n if (model.ref) {\r\n // master\r\n options.formulae[model.si] = model.address;\r\n } else {\r\n // slave\r\n model.sharedFormula = options.formulae[model.si];\r\n delete model.shareType;\r\n }\r\n delete model.si;\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n // look for hyperlink\r\n const hyperlink = options.hyperlinkMap[model.address];\r\n if (hyperlink) {\r\n if (model.type === Enums.ValueType.Formula) {\r\n model.text = model.result;\r\n model.result = undefined;\r\n } else {\r\n model.text = model.value;\r\n model.value = undefined;\r\n }\r\n model.type = Enums.ValueType.Hyperlink;\r\n model.hyperlink = hyperlink;\r\n }\r\n\r\n const comment = options.commentsMap && options.commentsMap[model.address];\r\n if (comment) {\r\n model.comment = comment;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = CellXform;\r\n","const BaseXform = require('../../base-xform');\r\n\r\nclass CfIconExtXform extends BaseXform {\r\n get tag() {\r\n return 'x14:cfIcon';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, {\r\n iconSet: model.iconSet,\r\n iconId: model.iconId,\r\n });\r\n }\r\n\r\n parseOpen({attributes}) {\r\n this.model = {\r\n iconSet: attributes.iconSet,\r\n iconId: BaseXform.toIntValue(attributes.iconId),\r\n };\r\n }\r\n\r\n parseClose(name) {\r\n return name !== this.tag;\r\n }\r\n}\r\n\r\nmodule.exports = CfIconExtXform;\r\n","const {v4: uuidv4} = require('uuid');\r\nconst BaseXform = require('../../base-xform');\r\nconst CompositeXform = require('../../composite-xform');\r\n\r\nconst DatabarExtXform = require('./databar-ext-xform');\r\nconst IconSetExtXform = require('./icon-set-ext-xform');\r\n\r\nconst extIcons = {\r\n '3Triangles': true,\r\n '3Stars': true,\r\n '5Boxes': true,\r\n};\r\n\r\nclass CfRuleExtXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'x14:dataBar': (this.databarXform = new DatabarExtXform()),\r\n 'x14:iconSet': (this.iconSetXform = new IconSetExtXform()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'x14:cfRule';\r\n }\r\n\r\n static isExt(rule) {\r\n // is this rule primitive?\r\n if (rule.type === 'dataBar') {\r\n return DatabarExtXform.isExt(rule);\r\n }\r\n if (rule.type === 'iconSet') {\r\n if (rule.custom || extIcons[rule.iconSet]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n prepare(model) {\r\n if (CfRuleExtXform.isExt(model)) {\r\n model.x14Id = `{${uuidv4()}}`.toUpperCase();\r\n }\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (!CfRuleExtXform.isExt(model)) {\r\n return;\r\n }\r\n\r\n switch (model.type) {\r\n case 'dataBar':\r\n this.renderDataBar(xmlStream, model);\r\n break;\r\n case 'iconSet':\r\n this.renderIconSet(xmlStream, model);\r\n break;\r\n }\r\n }\r\n\r\n renderDataBar(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n type: 'dataBar',\r\n id: model.x14Id,\r\n });\r\n\r\n this.databarXform.render(xmlStream, model);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n renderIconSet(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n type: 'iconSet',\r\n priority: model.priority,\r\n id: model.x14Id || `{${uuidv4()}}`,\r\n });\r\n\r\n this.iconSetXform.render(xmlStream, model);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel({attributes}) {\r\n return {\r\n type: attributes.type,\r\n x14Id: attributes.id,\r\n priority: BaseXform.toIntValue(attributes.priority),\r\n };\r\n }\r\n\r\n onParserClose(name, parser) {\r\n Object.assign(this.model, parser.model);\r\n }\r\n}\r\n\r\nmodule.exports = CfRuleExtXform;\r\n","const CompositeXform = require('../../composite-xform');\r\n\r\nconst FExtXform = require('./f-ext-xform');\r\n\r\nclass CfvoExtXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'xm:f': (this.fExtXform = new FExtXform()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'x14:cfvo';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n type: model.type,\r\n });\r\n if (model.value !== undefined) {\r\n this.fExtXform.render(xmlStream, model.value);\r\n }\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel(node) {\r\n return {\r\n type: node.attributes.type,\r\n };\r\n }\r\n\r\n onParserClose(name, parser) {\r\n switch (name) {\r\n case 'xm:f':\r\n this.model.value = parser.model ? parseFloat(parser.model) : 0;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = CfvoExtXform;\r\n","const CompositeXform = require('../../composite-xform');\r\n\r\nconst SqRefExtXform = require('./sqref-ext-xform');\r\nconst CfRuleExtXform = require('./cf-rule-ext-xform');\r\n\r\nclass ConditionalFormattingExtXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'xm:sqref': (this.sqRef = new SqRefExtXform()),\r\n 'x14:cfRule': (this.cfRule = new CfRuleExtXform()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'x14:conditionalFormatting';\r\n }\r\n\r\n prepare(model, options) {\r\n model.rules.forEach(rule => {\r\n this.cfRule.prepare(rule, options);\r\n });\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (!model.rules.some(CfRuleExtXform.isExt)) {\r\n return;\r\n }\r\n\r\n xmlStream.openNode(this.tag, {\r\n 'xmlns:xm': 'http://schemas.microsoft.com/office/excel/2006/main',\r\n });\r\n\r\n model.rules.filter(CfRuleExtXform.isExt).forEach(rule => this.cfRule.render(xmlStream, rule));\r\n\r\n // for some odd reason, Excel needs the node to be after the rules\r\n this.sqRef.render(xmlStream, model.ref);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel() {\r\n return {\r\n rules: [],\r\n };\r\n }\r\n\r\n onParserClose(name, parser) {\r\n switch (name) {\r\n case 'xm:sqref':\r\n this.model.ref = parser.model;\r\n break;\r\n\r\n case 'x14:cfRule':\r\n this.model.rules.push(parser.model);\r\n break;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = ConditionalFormattingExtXform;\r\n","const CompositeXform = require('../../composite-xform');\r\n\r\nconst CfRuleExtXform = require('./cf-rule-ext-xform');\r\nconst ConditionalFormattingExtXform = require('./conditional-formatting-ext-xform');\r\n\r\nclass ConditionalFormattingsExtXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'x14:conditionalFormatting': (this.cfXform = new ConditionalFormattingExtXform()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'x14:conditionalFormattings';\r\n }\r\n\r\n hasContent(model) {\r\n if (model.hasExtContent === undefined) {\r\n model.hasExtContent = model.some(cf => cf.rules.some(CfRuleExtXform.isExt));\r\n }\r\n return model.hasExtContent;\r\n }\r\n\r\n prepare(model, options) {\r\n model.forEach(cf => {\r\n this.cfXform.prepare(cf, options);\r\n });\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (this.hasContent(model)) {\r\n xmlStream.openNode(this.tag);\r\n model.forEach(cf => this.cfXform.render(xmlStream, cf));\r\n xmlStream.closeNode();\r\n }\r\n }\r\n\r\n createNewModel() {\r\n return [];\r\n }\r\n\r\n onParserClose(name, parser) {\r\n // model is array of conditional formatting objects\r\n this.model.push(parser.model);\r\n }\r\n}\r\n\r\nmodule.exports = ConditionalFormattingsExtXform;\r\n","const BaseXform = require('../../base-xform');\r\nconst CompositeXform = require('../../composite-xform');\r\n\r\nconst ColorXform = require('../../style/color-xform');\r\nconst CfvoExtXform = require('./cfvo-ext-xform');\r\n\r\nclass DatabarExtXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'x14:cfvo': (this.cfvoXform = new CfvoExtXform()),\r\n 'x14:borderColor': (this.borderColorXform = new ColorXform('x14:borderColor')),\r\n 'x14:negativeBorderColor': (this.negativeBorderColorXform = new ColorXform(\r\n 'x14:negativeBorderColor'\r\n )),\r\n 'x14:negativeFillColor': (this.negativeFillColorXform = new ColorXform(\r\n 'x14:negativeFillColor'\r\n )),\r\n 'x14:axisColor': (this.axisColorXform = new ColorXform('x14:axisColor')),\r\n };\r\n }\r\n\r\n static isExt(rule) {\r\n // not all databars need ext\r\n // TODO: refine this\r\n return !rule.gradient;\r\n }\r\n\r\n get tag() {\r\n return 'x14:dataBar';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n minLength: BaseXform.toIntAttribute(model.minLength, 0, true),\r\n maxLength: BaseXform.toIntAttribute(model.maxLength, 100, true),\r\n border: BaseXform.toBoolAttribute(model.border, false),\r\n gradient: BaseXform.toBoolAttribute(model.gradient, true),\r\n negativeBarColorSameAsPositive: BaseXform.toBoolAttribute(\r\n model.negativeBarColorSameAsPositive,\r\n true\r\n ),\r\n negativeBarBorderColorSameAsPositive: BaseXform.toBoolAttribute(\r\n model.negativeBarBorderColorSameAsPositive,\r\n true\r\n ),\r\n axisPosition: BaseXform.toAttribute(model.axisPosition, 'auto'),\r\n direction: BaseXform.toAttribute(model.direction, 'leftToRight'),\r\n });\r\n\r\n model.cfvo.forEach(cfvo => {\r\n this.cfvoXform.render(xmlStream, cfvo);\r\n });\r\n\r\n this.borderColorXform.render(xmlStream, model.borderColor);\r\n this.negativeBorderColorXform.render(xmlStream, model.negativeBorderColor);\r\n this.negativeFillColorXform.render(xmlStream, model.negativeFillColor);\r\n this.axisColorXform.render(xmlStream, model.axisColor);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel({attributes}) {\r\n return {\r\n cfvo: [],\r\n minLength: BaseXform.toIntValue(attributes.minLength, 0),\r\n maxLength: BaseXform.toIntValue(attributes.maxLength, 100),\r\n border: BaseXform.toBoolValue(attributes.border, false),\r\n gradient: BaseXform.toBoolValue(attributes.gradient, true),\r\n negativeBarColorSameAsPositive: BaseXform.toBoolValue(\r\n attributes.negativeBarColorSameAsPositive,\r\n true\r\n ),\r\n negativeBarBorderColorSameAsPositive: BaseXform.toBoolValue(\r\n attributes.negativeBarBorderColorSameAsPositive,\r\n true\r\n ),\r\n axisPosition: BaseXform.toStringValue(attributes.axisPosition, 'auto'),\r\n direction: BaseXform.toStringValue(attributes.direction, 'leftToRight'),\r\n };\r\n }\r\n\r\n onParserClose(name, parser) {\r\n const [, prop] = name.split(':');\r\n switch (prop) {\r\n case 'cfvo':\r\n this.model.cfvo.push(parser.model);\r\n break;\r\n\r\n default:\r\n this.model[prop] = parser.model;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = DatabarExtXform;\r\n","const BaseXform = require('../../base-xform');\r\n\r\nclass FExtXform extends BaseXform {\r\n get tag() {\r\n return 'xm:f';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, null, model);\r\n }\r\n\r\n parseOpen() {\r\n this.model = '';\r\n }\r\n\r\n parseText(text) {\r\n this.model += text;\r\n }\r\n\r\n parseClose(name) {\r\n return name !== this.tag;\r\n }\r\n}\r\n\r\nmodule.exports = FExtXform;\r\n","const BaseXform = require('../../base-xform');\r\nconst CompositeXform = require('../../composite-xform');\r\n\r\nconst CfvoExtXform = require('./cfvo-ext-xform');\r\nconst CfIconExtXform = require('./cf-icon-ext-xform');\r\n\r\nclass IconSetExtXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'x14:cfvo': (this.cfvoXform = new CfvoExtXform()),\r\n 'x14:cfIcon': (this.cfIconXform = new CfIconExtXform()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'x14:iconSet';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n iconSet: BaseXform.toStringAttribute(model.iconSet),\r\n reverse: BaseXform.toBoolAttribute(model.reverse, false),\r\n showValue: BaseXform.toBoolAttribute(model.showValue, true),\r\n custom: BaseXform.toBoolAttribute(model.icons, false),\r\n });\r\n\r\n model.cfvo.forEach(cfvo => {\r\n this.cfvoXform.render(xmlStream, cfvo);\r\n });\r\n\r\n if (model.icons) {\r\n model.icons.forEach((icon, i) => {\r\n icon.iconId = i;\r\n this.cfIconXform.render(xmlStream, icon);\r\n });\r\n }\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel({attributes}) {\r\n return {\r\n cfvo: [],\r\n iconSet: BaseXform.toStringValue(attributes.iconSet, '3TrafficLights'),\r\n reverse: BaseXform.toBoolValue(attributes.reverse, false),\r\n showValue: BaseXform.toBoolValue(attributes.showValue, true),\r\n };\r\n }\r\n\r\n onParserClose(name, parser) {\r\n const [, prop] = name.split(':');\r\n switch (prop) {\r\n case 'cfvo':\r\n this.model.cfvo.push(parser.model);\r\n break;\r\n\r\n case 'cfIcon':\r\n if (!this.model.icons) {\r\n this.model.icons = [];\r\n }\r\n this.model.icons.push(parser.model);\r\n break;\r\n\r\n default:\r\n this.model[prop] = parser.model;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = IconSetExtXform;\r\n","const BaseXform = require('../../base-xform');\r\n\r\nclass SqrefExtXform extends BaseXform {\r\n get tag() {\r\n return 'xm:sqref';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, null, model);\r\n }\r\n\r\n parseOpen() {\r\n this.model = '';\r\n }\r\n\r\n parseText(text) {\r\n this.model += text;\r\n }\r\n\r\n parseClose(name) {\r\n return name !== this.tag;\r\n }\r\n}\r\n\r\nmodule.exports = SqrefExtXform;\r\n","const BaseXform = require('../../base-xform');\r\nconst CompositeXform = require('../../composite-xform');\r\n\r\nconst Range = require('../../../../doc/range');\r\n\r\nconst DatabarXform = require('./databar-xform');\r\nconst ExtLstRefXform = require('./ext-lst-ref-xform');\r\nconst FormulaXform = require('./formula-xform');\r\nconst ColorScaleXform = require('./color-scale-xform');\r\nconst IconSetXform = require('./icon-set-xform');\r\n\r\nconst extIcons = {\r\n '3Triangles': true,\r\n '3Stars': true,\r\n '5Boxes': true,\r\n};\r\n\r\nconst getTextFormula = model => {\r\n if (model.formulae && model.formulae[0]) {\r\n return model.formulae[0];\r\n }\r\n\r\n const range = new Range(model.ref);\r\n const {tl} = range;\r\n switch (model.operator) {\r\n case 'containsText':\r\n return `NOT(ISERROR(SEARCH(\"${model.text}\",${tl})))`;\r\n case 'containsBlanks':\r\n return `LEN(TRIM(${tl}))=0`;\r\n case 'notContainsBlanks':\r\n return `LEN(TRIM(${tl}))>0`;\r\n case 'containsErrors':\r\n return `ISERROR(${tl})`;\r\n case 'notContainsErrors':\r\n return `NOT(ISERROR(${tl}))`;\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nconst getTimePeriodFormula = model => {\r\n if (model.formulae && model.formulae[0]) {\r\n return model.formulae[0];\r\n }\r\n\r\n const range = new Range(model.ref);\r\n const {tl} = range;\r\n switch (model.timePeriod) {\r\n case 'thisWeek':\r\n return `AND(TODAY()-ROUNDDOWN(${tl},0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(${tl},0)-TODAY()<=7-WEEKDAY(TODAY()))`;\r\n case 'lastWeek':\r\n return `AND(TODAY()-ROUNDDOWN(${tl},0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(${tl},0)<(WEEKDAY(TODAY())+7))`;\r\n case 'nextWeek':\r\n return `AND(ROUNDDOWN(${tl},0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(${tl},0)-TODAY()<(15-WEEKDAY(TODAY())))`;\r\n case 'yesterday':\r\n return `FLOOR(${tl},1)=TODAY()-1`;\r\n case 'today':\r\n return `FLOOR(${tl},1)=TODAY()`;\r\n case 'tomorrow':\r\n return `FLOOR(${tl},1)=TODAY()+1`;\r\n case 'last7Days':\r\n return `AND(TODAY()-FLOOR(${tl},1)<=6,FLOOR(${tl},1)<=TODAY())`;\r\n case 'lastMonth':\r\n return `AND(MONTH(${tl})=MONTH(EDATE(TODAY(),0-1)),YEAR(${tl})=YEAR(EDATE(TODAY(),0-1)))`;\r\n case 'thisMonth':\r\n return `AND(MONTH(${tl})=MONTH(TODAY()),YEAR(${tl})=YEAR(TODAY()))`;\r\n case 'nextMonth':\r\n return `AND(MONTH(${tl})=MONTH(EDATE(TODAY(),0+1)),YEAR(${tl})=YEAR(EDATE(TODAY(),0+1)))`;\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nconst opType = attributes => {\r\n const {type, operator} = attributes;\r\n switch (type) {\r\n case 'containsText':\r\n case 'containsBlanks':\r\n case 'notContainsBlanks':\r\n case 'containsErrors':\r\n case 'notContainsErrors':\r\n return {\r\n type: 'containsText',\r\n operator: type,\r\n };\r\n\r\n default:\r\n return {type, operator};\r\n }\r\n};\r\n\r\nclass CfRuleXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n dataBar: (this.databarXform = new DatabarXform()),\r\n extLst: (this.extLstRefXform = new ExtLstRefXform()),\r\n formula: (this.formulaXform = new FormulaXform()),\r\n colorScale: (this.colorScaleXform = new ColorScaleXform()),\r\n iconSet: (this.iconSetXform = new IconSetXform()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'cfRule';\r\n }\r\n\r\n static isPrimitive(rule) {\r\n // is this rule primitive?\r\n if (rule.type === 'iconSet') {\r\n if (rule.custom || extIcons[rule.iconSet]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n render(xmlStream, model) {\r\n switch (model.type) {\r\n case 'expression':\r\n this.renderExpression(xmlStream, model);\r\n break;\r\n case 'cellIs':\r\n this.renderCellIs(xmlStream, model);\r\n break;\r\n case 'top10':\r\n this.renderTop10(xmlStream, model);\r\n break;\r\n case 'aboveAverage':\r\n this.renderAboveAverage(xmlStream, model);\r\n break;\r\n case 'dataBar':\r\n this.renderDataBar(xmlStream, model);\r\n break;\r\n case 'colorScale':\r\n this.renderColorScale(xmlStream, model);\r\n break;\r\n case 'iconSet':\r\n this.renderIconSet(xmlStream, model);\r\n break;\r\n case 'containsText':\r\n this.renderText(xmlStream, model);\r\n break;\r\n case 'timePeriod':\r\n this.renderTimePeriod(xmlStream, model);\r\n break;\r\n }\r\n }\r\n\r\n renderExpression(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n type: 'expression',\r\n dxfId: model.dxfId,\r\n priority: model.priority,\r\n });\r\n\r\n this.formulaXform.render(xmlStream, model.formulae[0]);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n renderCellIs(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n type: 'cellIs',\r\n dxfId: model.dxfId,\r\n priority: model.priority,\r\n operator: model.operator,\r\n });\r\n\r\n model.formulae.forEach(formula => {\r\n this.formulaXform.render(xmlStream, formula);\r\n });\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n renderTop10(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, {\r\n type: 'top10',\r\n dxfId: model.dxfId,\r\n priority: model.priority,\r\n percent: BaseXform.toBoolAttribute(model.percent, false),\r\n bottom: BaseXform.toBoolAttribute(model.bottom, false),\r\n rank: BaseXform.toIntValue(model.rank, 10, true),\r\n });\r\n }\r\n\r\n renderAboveAverage(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, {\r\n type: 'aboveAverage',\r\n dxfId: model.dxfId,\r\n priority: model.priority,\r\n aboveAverage: BaseXform.toBoolAttribute(model.aboveAverage, true),\r\n });\r\n }\r\n\r\n renderDataBar(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n type: 'dataBar',\r\n priority: model.priority,\r\n });\r\n\r\n this.databarXform.render(xmlStream, model);\r\n this.extLstRefXform.render(xmlStream, model);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n renderColorScale(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n type: 'colorScale',\r\n priority: model.priority,\r\n });\r\n\r\n this.colorScaleXform.render(xmlStream, model);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n renderIconSet(xmlStream, model) {\r\n // iconset is all primitive or all extLst\r\n if (!CfRuleXform.isPrimitive(model)) {\r\n return;\r\n }\r\n\r\n xmlStream.openNode(this.tag, {\r\n type: 'iconSet',\r\n priority: model.priority,\r\n });\r\n\r\n this.iconSetXform.render(xmlStream, model);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n renderText(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n type: model.operator,\r\n dxfId: model.dxfId,\r\n priority: model.priority,\r\n operator: BaseXform.toStringAttribute(model.operator, 'containsText'),\r\n });\r\n\r\n const formula = getTextFormula(model);\r\n if (formula) {\r\n this.formulaXform.render(xmlStream, formula);\r\n }\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n renderTimePeriod(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n type: 'timePeriod',\r\n dxfId: model.dxfId,\r\n priority: model.priority,\r\n timePeriod: model.timePeriod,\r\n });\r\n\r\n const formula = getTimePeriodFormula(model);\r\n if (formula) {\r\n this.formulaXform.render(xmlStream, formula);\r\n }\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel({attributes}) {\r\n return {\r\n ...opType(attributes),\r\n dxfId: BaseXform.toIntValue(attributes.dxfId),\r\n priority: BaseXform.toIntValue(attributes.priority),\r\n timePeriod: attributes.timePeriod,\r\n percent: BaseXform.toBoolValue(attributes.percent),\r\n bottom: BaseXform.toBoolValue(attributes.bottom),\r\n rank: BaseXform.toIntValue(attributes.rank),\r\n aboveAverage: BaseXform.toBoolValue(attributes.aboveAverage),\r\n };\r\n }\r\n\r\n onParserClose(name, parser) {\r\n switch (name) {\r\n case 'dataBar':\r\n case 'extLst':\r\n case 'colorScale':\r\n case 'iconSet':\r\n // merge parser model with ours\r\n Object.assign(this.model, parser.model);\r\n break;\r\n\r\n case 'formula':\r\n // except - formula is a string and appends to formulae\r\n this.model.formulae = this.model.formulae || [];\r\n this.model.formulae.push(parser.model);\r\n break;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = CfRuleXform;\r\n","const BaseXform = require('../../base-xform');\r\n\r\nclass CfvoXform extends BaseXform {\r\n get tag() {\r\n return 'cfvo';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, {\r\n type: model.type,\r\n val: model.value,\r\n });\r\n }\r\n\r\n parseOpen(node) {\r\n this.model = {\r\n type: node.attributes.type,\r\n value: BaseXform.toFloatValue(node.attributes.val),\r\n };\r\n }\r\n\r\n parseClose(name) {\r\n return name !== this.tag;\r\n }\r\n}\r\n\r\nmodule.exports = CfvoXform;\r\n","const CompositeXform = require('../../composite-xform');\r\n\r\nconst ColorXform = require('../../style/color-xform');\r\nconst CfvoXform = require('./cfvo-xform');\r\n\r\nclass ColorScaleXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n cfvo: (this.cfvoXform = new CfvoXform()),\r\n color: (this.colorXform = new ColorXform()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'colorScale';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag);\r\n\r\n model.cfvo.forEach(cfvo => {\r\n this.cfvoXform.render(xmlStream, cfvo);\r\n });\r\n model.color.forEach(color => {\r\n this.colorXform.render(xmlStream, color);\r\n });\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel(node) {\r\n return {\r\n cfvo: [],\r\n color: [],\r\n };\r\n }\r\n\r\n onParserClose(name, parser) {\r\n this.model[name].push(parser.model);\r\n }\r\n}\r\n\r\nmodule.exports = ColorScaleXform;\r\n","const CompositeXform = require('../../composite-xform');\r\n\r\nconst CfRuleXform = require('./cf-rule-xform');\r\n\r\nclass ConditionalFormattingXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n cfRule: new CfRuleXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'conditionalFormatting';\r\n }\r\n\r\n render(xmlStream, model) {\r\n // if there are no primitive rules, exit now\r\n if (!model.rules.some(CfRuleXform.isPrimitive)) {\r\n return;\r\n }\r\n\r\n xmlStream.openNode(this.tag, {sqref: model.ref});\r\n\r\n model.rules.forEach(rule => {\r\n if (CfRuleXform.isPrimitive(rule)) {\r\n rule.ref = model.ref;\r\n this.map.cfRule.render(xmlStream, rule);\r\n }\r\n });\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel({attributes}) {\r\n return {\r\n ref: attributes.sqref,\r\n rules: [],\r\n };\r\n }\r\n\r\n onParserClose(name, parser) {\r\n this.model.rules.push(parser.model);\r\n }\r\n}\r\n\r\nmodule.exports = ConditionalFormattingXform;\r\n","const BaseXform = require('../../base-xform');\r\n\r\nconst ConditionalFormattingXform = require('./conditional-formatting-xform');\r\n\r\nclass ConditionalFormattingsXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.cfXform = new ConditionalFormattingXform();\r\n }\r\n\r\n get tag() {\r\n return 'conditionalFormatting';\r\n }\r\n\r\n reset() {\r\n this.model = [];\r\n }\r\n\r\n prepare(model, options) {\r\n // ensure each rule has a priority value\r\n let nextPriority = model.reduce(\r\n (p, cf) => Math.max(p, ...cf.rules.map(rule => rule.priority || 0)),\r\n 1\r\n );\r\n model.forEach(cf => {\r\n cf.rules.forEach(rule => {\r\n if (!rule.priority) {\r\n rule.priority = nextPriority++;\r\n }\r\n\r\n if (rule.style) {\r\n rule.dxfId = options.styles.addDxfStyle(rule.style);\r\n }\r\n });\r\n });\r\n }\r\n\r\n render(xmlStream, model) {\r\n model.forEach(cf => {\r\n this.cfXform.render(xmlStream, cf);\r\n });\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n\r\n switch (node.name) {\r\n case 'conditionalFormatting':\r\n this.parser = this.cfXform;\r\n this.parser.parseOpen(node);\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.model.push(this.parser.model);\r\n this.parser = undefined;\r\n return false;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n reconcile(model, options) {\r\n model.forEach(cf => {\r\n cf.rules.forEach(rule => {\r\n if (rule.dxfId !== undefined) {\r\n rule.style = options.styles.getDxfStyle(rule.dxfId);\r\n delete rule.dxfId;\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = ConditionalFormattingsXform;\r\n","const CompositeXform = require('../../composite-xform');\r\n\r\nconst ColorXform = require('../../style/color-xform');\r\nconst CfvoXform = require('./cfvo-xform');\r\n\r\nclass DatabarXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n cfvo: (this.cfvoXform = new CfvoXform()),\r\n color: (this.colorXform = new ColorXform()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'dataBar';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag);\r\n\r\n model.cfvo.forEach(cfvo => {\r\n this.cfvoXform.render(xmlStream, cfvo);\r\n });\r\n this.colorXform.render(xmlStream, model.color);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel() {\r\n return {\r\n cfvo: [],\r\n };\r\n }\r\n\r\n onParserClose(name, parser) {\r\n switch (name) {\r\n case 'cfvo':\r\n this.model.cfvo.push(parser.model);\r\n break;\r\n case 'color':\r\n this.model.color = parser.model;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = DatabarXform;\r\n","/* eslint-disable max-classes-per-file */\r\nconst BaseXform = require('../../base-xform');\r\nconst CompositeXform = require('../../composite-xform');\r\n\r\nclass X14IdXform extends BaseXform {\r\n get tag() {\r\n return 'x14:id';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, null, model);\r\n }\r\n\r\n parseOpen() {\r\n this.model = '';\r\n }\r\n\r\n parseText(text) {\r\n this.model += text;\r\n }\r\n\r\n parseClose(name) {\r\n return name !== this.tag;\r\n }\r\n}\r\n\r\nclass ExtXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n 'x14:id': (this.idXform = new X14IdXform()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'ext';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n uri: '{B025F937-C7B1-47D3-B67F-A62EFF666E3E}',\r\n 'xmlns:x14': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/main',\r\n });\r\n\r\n this.idXform.render(xmlStream, model.x14Id);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel() {\r\n return {};\r\n }\r\n\r\n onParserClose(name, parser) {\r\n this.model.x14Id = parser.model;\r\n }\r\n}\r\n\r\nclass ExtLstRefXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n this.map = {\r\n ext: new ExtXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'extLst';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag);\r\n this.map.ext.render(xmlStream, model);\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel() {\r\n return {};\r\n }\r\n\r\n onParserClose(name, parser) {\r\n Object.assign(this.model, parser.model);\r\n }\r\n}\r\n\r\nmodule.exports = ExtLstRefXform;\r\n","const BaseXform = require('../../base-xform');\r\n\r\nclass FormulaXform extends BaseXform {\r\n get tag() {\r\n return 'formula';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, null, model);\r\n }\r\n\r\n parseOpen() {\r\n this.model = '';\r\n }\r\n\r\n parseText(text) {\r\n this.model += text;\r\n }\r\n\r\n parseClose(name) {\r\n return name !== this.tag;\r\n }\r\n}\r\n\r\nmodule.exports = FormulaXform;\r\n","const BaseXform = require('../../base-xform');\r\nconst CompositeXform = require('../../composite-xform');\r\n\r\nconst CfvoXform = require('./cfvo-xform');\r\n\r\nclass IconSetXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n cfvo: (this.cfvoXform = new CfvoXform()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'iconSet';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n iconSet: BaseXform.toStringAttribute(model.iconSet, '3TrafficLights'),\r\n reverse: BaseXform.toBoolAttribute(model.reverse, false),\r\n showValue: BaseXform.toBoolAttribute(model.showValue, true),\r\n });\r\n\r\n model.cfvo.forEach(cfvo => {\r\n this.cfvoXform.render(xmlStream, cfvo);\r\n });\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel({attributes}) {\r\n return {\r\n iconSet: BaseXform.toStringValue(attributes.iconSet, '3TrafficLights'),\r\n reverse: BaseXform.toBoolValue(attributes.reverse),\r\n showValue: BaseXform.toBoolValue(attributes.showValue),\r\n cfvo: [],\r\n };\r\n }\r\n\r\n onParserClose(name, parser) {\r\n this.model[name].push(parser.model);\r\n }\r\n}\r\n\r\nmodule.exports = IconSetXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass ColXform extends BaseXform {\r\n get tag() {\r\n return 'col';\r\n }\r\n\r\n prepare(model, options) {\r\n const styleId = options.styles.addStyleModel(model.style || {});\r\n if (styleId) {\r\n model.styleId = styleId;\r\n }\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode('col');\r\n xmlStream.addAttribute('min', model.min);\r\n xmlStream.addAttribute('max', model.max);\r\n if (model.width) {\r\n xmlStream.addAttribute('width', model.width);\r\n }\r\n if (model.styleId) {\r\n xmlStream.addAttribute('style', model.styleId);\r\n }\r\n if (model.hidden) {\r\n xmlStream.addAttribute('hidden', '1');\r\n }\r\n if (model.bestFit) {\r\n xmlStream.addAttribute('bestFit', '1');\r\n }\r\n if (model.outlineLevel) {\r\n xmlStream.addAttribute('outlineLevel', model.outlineLevel);\r\n }\r\n if (model.collapsed) {\r\n xmlStream.addAttribute('collapsed', '1');\r\n }\r\n xmlStream.addAttribute('customWidth', '1');\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'col') {\r\n const model = (this.model = {\r\n min: parseInt(node.attributes.min || '0', 10),\r\n max: parseInt(node.attributes.max || '0', 10),\r\n width:\r\n node.attributes.width === undefined\r\n ? undefined\r\n : parseFloat(node.attributes.width || '0'),\r\n });\r\n if (node.attributes.style) {\r\n model.styleId = parseInt(node.attributes.style, 10);\r\n }\r\n if (\r\n node.attributes.hidden === true ||\r\n node.attributes.hidden === 'true' ||\r\n node.attributes.hidden === 1 ||\r\n node.attributes.hidden === '1'\r\n ) {\r\n model.hidden = true;\r\n }\r\n if (node.attributes.bestFit) {\r\n model.bestFit = true;\r\n }\r\n if (node.attributes.outlineLevel) {\r\n model.outlineLevel = parseInt(node.attributes.outlineLevel, 10);\r\n }\r\n if (node.attributes.collapsed) {\r\n model.collapsed = true;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n\r\n reconcile(model, options) {\r\n // reconcile column styles\r\n if (model.styleId) {\r\n model.style = options.styles.getStyleModel(model.styleId);\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = ColXform;\r\n","const _ = require('../../../utils/under-dash');\r\nconst utils = require('../../../utils/utils');\r\nconst colCache = require('../../../utils/col-cache');\r\nconst BaseXform = require('../base-xform');\r\nconst Range = require('../../../doc/range');\r\n\r\nfunction assign(definedName, attributes, name, defaultValue) {\r\n const value = attributes[name];\r\n if (value !== undefined) {\r\n definedName[name] = value;\r\n } else if (defaultValue !== undefined) {\r\n definedName[name] = defaultValue;\r\n }\r\n}\r\nfunction parseBool(value) {\r\n switch (value) {\r\n case '1':\r\n case 'true':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction assignBool(definedName, attributes, name, defaultValue) {\r\n const value = attributes[name];\r\n if (value !== undefined) {\r\n definedName[name] = parseBool(value);\r\n } else if (defaultValue !== undefined) {\r\n definedName[name] = defaultValue;\r\n }\r\n}\r\n\r\nfunction optimiseDataValidations(model) {\r\n // Squeeze alike data validations together into rectangular ranges\r\n // to reduce file size and speed up Excel load time\r\n const dvList = _.map(model, (dataValidation, address) => ({\r\n address,\r\n dataValidation,\r\n marked: false,\r\n })).sort((a, b) => _.strcmp(a.address, b.address));\r\n const dvMap = _.keyBy(dvList, 'address');\r\n const matchCol = (addr, height, col) => {\r\n for (let i = 0; i < height; i++) {\r\n const otherAddress = colCache.encodeAddress(addr.row + i, col);\r\n if (!model[otherAddress] || !_.isEqual(model[addr.address], model[otherAddress])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return dvList\r\n .map(dv => {\r\n if (!dv.marked) {\r\n const addr = colCache.decodeEx(dv.address);\r\n if (addr.dimensions) {\r\n dvMap[addr.dimensions].marked = true;\r\n return {\r\n ...dv.dataValidation,\r\n sqref: dv.address,\r\n };\r\n }\r\n\r\n // iterate downwards - finding matching cells\r\n let height = 1;\r\n let otherAddress = colCache.encodeAddress(addr.row + height, addr.col);\r\n while (model[otherAddress] && _.isEqual(dv.dataValidation, model[otherAddress])) {\r\n height++;\r\n otherAddress = colCache.encodeAddress(addr.row + height, addr.col);\r\n }\r\n\r\n // iterate rightwards...\r\n\r\n let width = 1;\r\n while (matchCol(addr, height, addr.col + width)) {\r\n width++;\r\n }\r\n\r\n // mark all included addresses\r\n for (let i = 0; i < height; i++) {\r\n for (let j = 0; j < width; j++) {\r\n otherAddress = colCache.encodeAddress(addr.row + i, addr.col + j);\r\n dvMap[otherAddress].marked = true;\r\n }\r\n }\r\n\r\n if (height > 1 || width > 1) {\r\n const bottom = addr.row + (height - 1);\r\n const right = addr.col + (width - 1);\r\n return {\r\n ...dv.dataValidation,\r\n sqref: `${dv.address}:${colCache.encodeAddress(bottom, right)}`,\r\n };\r\n }\r\n return {\r\n ...dv.dataValidation,\r\n sqref: dv.address,\r\n };\r\n }\r\n return null;\r\n })\r\n .filter(Boolean);\r\n}\r\n\r\nclass DataValidationsXform extends BaseXform {\r\n get tag() {\r\n return 'dataValidations';\r\n }\r\n\r\n render(xmlStream, model) {\r\n const optimizedModel = optimiseDataValidations(model);\r\n if (optimizedModel.length) {\r\n xmlStream.openNode('dataValidations', {count: optimizedModel.length});\r\n\r\n optimizedModel.forEach(value => {\r\n xmlStream.openNode('dataValidation');\r\n\r\n if (value.type !== 'any') {\r\n xmlStream.addAttribute('type', value.type);\r\n\r\n if (value.operator && value.type !== 'list' && value.operator !== 'between') {\r\n xmlStream.addAttribute('operator', value.operator);\r\n }\r\n if (value.allowBlank) {\r\n xmlStream.addAttribute('allowBlank', '1');\r\n }\r\n }\r\n if (value.showInputMessage) {\r\n xmlStream.addAttribute('showInputMessage', '1');\r\n }\r\n if (value.promptTitle) {\r\n xmlStream.addAttribute('promptTitle', value.promptTitle);\r\n }\r\n if (value.prompt) {\r\n xmlStream.addAttribute('prompt', value.prompt);\r\n }\r\n if (value.showErrorMessage) {\r\n xmlStream.addAttribute('showErrorMessage', '1');\r\n }\r\n if (value.errorStyle) {\r\n xmlStream.addAttribute('errorStyle', value.errorStyle);\r\n }\r\n if (value.errorTitle) {\r\n xmlStream.addAttribute('errorTitle', value.errorTitle);\r\n }\r\n if (value.error) {\r\n xmlStream.addAttribute('error', value.error);\r\n }\r\n xmlStream.addAttribute('sqref', value.sqref);\r\n (value.formulae || []).forEach((formula, index) => {\r\n xmlStream.openNode(`formula${index + 1}`);\r\n if (value.type === 'date') {\r\n xmlStream.writeText(utils.dateToExcel(new Date(formula)));\r\n } else {\r\n xmlStream.writeText(formula);\r\n }\r\n xmlStream.closeNode();\r\n });\r\n xmlStream.closeNode();\r\n });\r\n xmlStream.closeNode();\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case 'dataValidations':\r\n this.model = {};\r\n return true;\r\n\r\n case 'dataValidation': {\r\n this._address = node.attributes.sqref;\r\n const dataValidation = {type: node.attributes.type || 'any', formulae: []};\r\n\r\n if (node.attributes.type) {\r\n assignBool(dataValidation, node.attributes, 'allowBlank');\r\n }\r\n assignBool(dataValidation, node.attributes, 'showInputMessage');\r\n assignBool(dataValidation, node.attributes, 'showErrorMessage');\r\n\r\n switch (dataValidation.type) {\r\n case 'any':\r\n case 'list':\r\n case 'custom':\r\n break;\r\n default:\r\n assign(dataValidation, node.attributes, 'operator', 'between');\r\n break;\r\n }\r\n assign(dataValidation, node.attributes, 'promptTitle');\r\n assign(dataValidation, node.attributes, 'prompt');\r\n assign(dataValidation, node.attributes, 'errorStyle');\r\n assign(dataValidation, node.attributes, 'errorTitle');\r\n assign(dataValidation, node.attributes, 'error');\r\n\r\n this._dataValidation = dataValidation;\r\n return true;\r\n }\r\n\r\n case 'formula1':\r\n case 'formula2':\r\n this._formula = [];\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this._formula) {\r\n this._formula.push(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n switch (name) {\r\n case 'dataValidations':\r\n return false;\r\n case 'dataValidation': {\r\n if (!this._dataValidation.formulae || !this._dataValidation.formulae.length) {\r\n delete this._dataValidation.formulae;\r\n delete this._dataValidation.operator;\r\n }\r\n // The four known cases: 1. E4:L9 N4:U9 2.E4 L9 3. N4:U9 4. E4\r\n const list = this._address.split(/\\s+/g) || [];\r\n list.forEach(addr => {\r\n if (addr.includes(':')) {\r\n const range = new Range(addr);\r\n range.forEachAddress(address => {\r\n this.model[address] = this._dataValidation;\r\n });\r\n } else {\r\n this.model[addr] = this._dataValidation;\r\n }\r\n });\r\n return true;\r\n }\r\n case 'formula1':\r\n case 'formula2': {\r\n let formula = this._formula.join('');\r\n switch (this._dataValidation.type) {\r\n case 'whole':\r\n case 'textLength':\r\n formula = parseInt(formula, 10);\r\n break;\r\n case 'decimal':\r\n formula = parseFloat(formula);\r\n break;\r\n case 'date':\r\n formula = utils.excelToDate(parseFloat(formula));\r\n break;\r\n default:\r\n break;\r\n }\r\n this._dataValidation.formulae.push(formula);\r\n this._formula = undefined;\r\n return true;\r\n }\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = DataValidationsXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass DimensionXform extends BaseXform {\r\n get tag() {\r\n return 'dimension';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n xmlStream.leafNode('dimension', {ref: model});\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'dimension') {\r\n this.model = node.attributes.ref;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = DimensionXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass DrawingXform extends BaseXform {\r\n get tag() {\r\n return 'drawing';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n xmlStream.leafNode(this.tag, {'r:id': model.rId});\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {\r\n rId: node.attributes['r:id'],\r\n };\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = DrawingXform;\r\n","/* eslint-disable max-classes-per-file */\r\nconst CompositeXform = require('../composite-xform');\r\n\r\nconst ConditionalFormattingsExt = require('./cf-ext/conditional-formattings-ext-xform');\r\n\r\nclass ExtXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n this.map = {\r\n 'x14:conditionalFormattings': (this.conditionalFormattings = new ConditionalFormattingsExt()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'ext';\r\n }\r\n\r\n hasContent(model) {\r\n return this.conditionalFormattings.hasContent(model.conditionalFormattings);\r\n }\r\n\r\n prepare(model, options) {\r\n this.conditionalFormattings.prepare(model.conditionalFormattings, options);\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode('ext', {\r\n uri: '{78C0D931-6437-407d-A8EE-F0AAD7539E65}',\r\n 'xmlns:x14': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/main',\r\n });\r\n\r\n this.conditionalFormattings.render(xmlStream, model.conditionalFormattings);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel() {\r\n return {};\r\n }\r\n\r\n onParserClose(name, parser) {\r\n this.model[name] = parser.model;\r\n }\r\n}\r\n\r\nclass ExtLstXform extends CompositeXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n ext: (this.ext = new ExtXform()),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'extLst';\r\n }\r\n\r\n prepare(model, options) {\r\n this.ext.prepare(model, options);\r\n }\r\n\r\n hasContent(model) {\r\n return this.ext.hasContent(model);\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (!this.hasContent(model)) {\r\n return;\r\n }\r\n\r\n xmlStream.openNode('extLst');\r\n this.ext.render(xmlStream, model);\r\n xmlStream.closeNode();\r\n }\r\n\r\n createNewModel() {\r\n return {};\r\n }\r\n\r\n onParserClose(name, parser) {\r\n Object.assign(this.model, parser.model);\r\n }\r\n}\r\n\r\nmodule.exports = ExtLstXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass HeaderFooterXform extends BaseXform {\r\n get tag() {\r\n return 'headerFooter';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n xmlStream.addRollback();\r\n\r\n let createTag = false;\r\n\r\n xmlStream.openNode('headerFooter');\r\n if (model.differentFirst) {\r\n xmlStream.addAttribute('differentFirst', '1');\r\n createTag = true;\r\n }\r\n if (model.differentOddEven) {\r\n xmlStream.addAttribute('differentOddEven', '1');\r\n createTag = true;\r\n }\r\n if (model.oddHeader && typeof model.oddHeader === 'string') {\r\n xmlStream.leafNode('oddHeader', null, model.oddHeader);\r\n createTag = true;\r\n }\r\n if (model.oddFooter && typeof model.oddFooter === 'string') {\r\n xmlStream.leafNode('oddFooter', null, model.oddFooter);\r\n createTag = true;\r\n }\r\n if (model.evenHeader && typeof model.evenHeader === 'string') {\r\n xmlStream.leafNode('evenHeader', null, model.evenHeader);\r\n createTag = true;\r\n }\r\n if (model.evenFooter && typeof model.evenFooter === 'string') {\r\n xmlStream.leafNode('evenFooter', null, model.evenFooter);\r\n createTag = true;\r\n }\r\n if (model.firstHeader && typeof model.firstHeader === 'string') {\r\n xmlStream.leafNode('firstHeader', null, model.firstHeader);\r\n createTag = true;\r\n }\r\n if (model.firstFooter && typeof model.firstFooter === 'string') {\r\n xmlStream.leafNode('firstFooter', null, model.firstFooter);\r\n createTag = true;\r\n }\r\n\r\n if (createTag) {\r\n xmlStream.closeNode();\r\n xmlStream.commit();\r\n } else {\r\n xmlStream.rollback();\r\n }\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case 'headerFooter':\r\n this.model = {};\r\n if (node.attributes.differentFirst) {\r\n this.model.differentFirst = parseInt(node.attributes.differentFirst, 0) === 1;\r\n }\r\n if (node.attributes.differentOddEven) {\r\n this.model.differentOddEven = parseInt(node.attributes.differentOddEven, 0) === 1;\r\n }\r\n return true;\r\n\r\n case 'oddHeader':\r\n this.currentNode = 'oddHeader';\r\n return true;\r\n\r\n case 'oddFooter':\r\n this.currentNode = 'oddFooter';\r\n return true;\r\n\r\n case 'evenHeader':\r\n this.currentNode = 'evenHeader';\r\n return true;\r\n\r\n case 'evenFooter':\r\n this.currentNode = 'evenFooter';\r\n return true;\r\n\r\n case 'firstHeader':\r\n this.currentNode = 'firstHeader';\r\n return true;\r\n\r\n case 'firstFooter':\r\n this.currentNode = 'firstFooter';\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n switch (this.currentNode) {\r\n case 'oddHeader':\r\n this.model.oddHeader = text;\r\n break;\r\n\r\n case 'oddFooter':\r\n this.model.oddFooter = text;\r\n break;\r\n\r\n case 'evenHeader':\r\n this.model.evenHeader = text;\r\n break;\r\n\r\n case 'evenFooter':\r\n this.model.evenFooter = text;\r\n break;\r\n\r\n case 'firstHeader':\r\n this.model.firstHeader = text;\r\n break;\r\n\r\n case 'firstFooter':\r\n this.model.firstFooter = text;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n parseClose() {\r\n switch (this.currentNode) {\r\n case 'oddHeader':\r\n case 'oddFooter':\r\n case 'evenHeader':\r\n case 'evenFooter':\r\n case 'firstHeader':\r\n case 'firstFooter':\r\n this.currentNode = undefined;\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = HeaderFooterXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass HyperlinkXform extends BaseXform {\r\n get tag() {\r\n return 'hyperlink';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode('hyperlink', {\r\n ref: model.address,\r\n 'r:id': model.rId,\r\n tooltip: model.tooltip,\r\n });\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'hyperlink') {\r\n this.model = {\r\n address: node.attributes.ref,\r\n rId: node.attributes['r:id'],\r\n tooltip: node.attributes.tooltip,\r\n };\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = HyperlinkXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass MergeCellXform extends BaseXform {\r\n get tag() {\r\n return 'mergeCell';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode('mergeCell', {ref: model});\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'mergeCell') {\r\n this.model = node.attributes.ref;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = MergeCellXform;\r\n","const _ = require('../../../utils/under-dash');\r\n\r\nconst Range = require('../../../doc/range');\r\nconst colCache = require('../../../utils/col-cache');\r\nconst Enums = require('../../../doc/enums');\r\n\r\nclass Merges {\r\n constructor() {\r\n // optional mergeCells is array of ranges (like the xml)\r\n this.merges = {};\r\n }\r\n\r\n add(merge) {\r\n // merge is {address, master}\r\n if (this.merges[merge.master]) {\r\n this.merges[merge.master].expandToAddress(merge.address);\r\n } else {\r\n const range = `${merge.master}:${merge.address}`;\r\n this.merges[merge.master] = new Range(range);\r\n }\r\n }\r\n\r\n get mergeCells() {\r\n return _.map(this.merges, merge => merge.range);\r\n }\r\n\r\n reconcile(mergeCells, rows) {\r\n // reconcile merge list with merge cells\r\n _.each(mergeCells, merge => {\r\n const dimensions = colCache.decode(merge);\r\n for (let i = dimensions.top; i <= dimensions.bottom; i++) {\r\n const row = rows[i - 1];\r\n for (let j = dimensions.left; j <= dimensions.right; j++) {\r\n const cell = row.cells[j - 1];\r\n if (!cell) {\r\n // nulls are not included in document - so if master cell has no value - add a null one here\r\n row.cells[j] = {\r\n type: Enums.ValueType.Null,\r\n address: colCache.encodeAddress(i, j),\r\n };\r\n } else if (cell.type === Enums.ValueType.Merge) {\r\n cell.master = dimensions.tl;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n getMasterAddress(address) {\r\n // if address has been merged, return its master's address. Assumes reconcile has been called\r\n const range = this.hash[address];\r\n return range && range.tl;\r\n }\r\n}\r\n\r\nmodule.exports = Merges;\r\n","const BaseXform = require('../base-xform');\r\n\r\nconst isDefined = attr => typeof attr !== 'undefined';\r\n\r\nclass OutlinePropertiesXform extends BaseXform {\r\n get tag() {\r\n return 'outlinePr';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model && (isDefined(model.summaryBelow) || isDefined(model.summaryRight))) {\r\n xmlStream.leafNode(this.tag, {\r\n summaryBelow: isDefined(model.summaryBelow) ? Number(model.summaryBelow) : undefined,\r\n summaryRight: isDefined(model.summaryRight) ? Number(model.summaryRight) : undefined,\r\n });\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === this.tag) {\r\n this.model = {\r\n summaryBelow: isDefined(node.attributes.summaryBelow)\r\n ? Boolean(Number(node.attributes.summaryBelow))\r\n : undefined,\r\n summaryRight: isDefined(node.attributes.summaryRight)\r\n ? Boolean(Number(node.attributes.summaryRight))\r\n : undefined,\r\n };\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = OutlinePropertiesXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass PageBreaksXform extends BaseXform {\r\n get tag() {\r\n return 'brk';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode('brk', model);\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'brk') {\r\n this.model = node.attributes.ref;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = PageBreaksXform;\r\n","const _ = require('../../../utils/under-dash');\r\nconst BaseXform = require('../base-xform');\r\n\r\nclass PageMarginsXform extends BaseXform {\r\n get tag() {\r\n return 'pageMargins';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n const attributes = {\r\n left: model.left,\r\n right: model.right,\r\n top: model.top,\r\n bottom: model.bottom,\r\n header: model.header,\r\n footer: model.footer,\r\n };\r\n if (_.some(attributes, value => value !== undefined)) {\r\n xmlStream.leafNode(this.tag, attributes);\r\n }\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {\r\n left: parseFloat(node.attributes.left || 0.7),\r\n right: parseFloat(node.attributes.right || 0.7),\r\n top: parseFloat(node.attributes.top || 0.75),\r\n bottom: parseFloat(node.attributes.bottom || 0.75),\r\n header: parseFloat(node.attributes.header || 0.3),\r\n footer: parseFloat(node.attributes.footer || 0.3),\r\n };\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = PageMarginsXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass PageSetupPropertiesXform extends BaseXform {\r\n get tag() {\r\n return 'pageSetUpPr';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model && model.fitToPage) {\r\n xmlStream.leafNode(this.tag, {\r\n fitToPage: model.fitToPage ? '1' : undefined,\r\n });\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === this.tag) {\r\n this.model = {\r\n fitToPage: node.attributes.fitToPage === '1',\r\n };\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = PageSetupPropertiesXform;\r\n","const _ = require('../../../utils/under-dash');\r\nconst BaseXform = require('../base-xform');\r\n\r\nfunction booleanToXml(model) {\r\n return model ? '1' : undefined;\r\n}\r\nfunction pageOrderToXml(model) {\r\n switch (model) {\r\n case 'overThenDown':\r\n return model;\r\n default:\r\n return undefined;\r\n }\r\n}\r\nfunction cellCommentsToXml(model) {\r\n switch (model) {\r\n case 'atEnd':\r\n case 'asDisplyed':\r\n return model;\r\n default:\r\n return undefined;\r\n }\r\n}\r\nfunction errorsToXml(model) {\r\n switch (model) {\r\n case 'dash':\r\n case 'blank':\r\n case 'NA':\r\n return model;\r\n default:\r\n return undefined;\r\n }\r\n}\r\nfunction pageSizeToModel(value) {\r\n return value !== undefined ? parseInt(value, 10) : undefined;\r\n}\r\n\r\nclass PageSetupXform extends BaseXform {\r\n get tag() {\r\n return 'pageSetup';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n const attributes = {\r\n paperSize: model.paperSize,\r\n orientation: model.orientation,\r\n horizontalDpi: model.horizontalDpi,\r\n verticalDpi: model.verticalDpi,\r\n pageOrder: pageOrderToXml(model.pageOrder),\r\n blackAndWhite: booleanToXml(model.blackAndWhite),\r\n draft: booleanToXml(model.draft),\r\n cellComments: cellCommentsToXml(model.cellComments),\r\n errors: errorsToXml(model.errors),\r\n scale: model.scale,\r\n fitToWidth: model.fitToWidth,\r\n fitToHeight: model.fitToHeight,\r\n firstPageNumber: model.firstPageNumber,\r\n useFirstPageNumber: booleanToXml(model.firstPageNumber),\r\n usePrinterDefaults: booleanToXml(model.usePrinterDefaults),\r\n copies: model.copies,\r\n };\r\n if (_.some(attributes, value => value !== undefined)) {\r\n xmlStream.leafNode(this.tag, attributes);\r\n }\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {\r\n paperSize: pageSizeToModel(node.attributes.paperSize),\r\n orientation: node.attributes.orientation || 'portrait',\r\n horizontalDpi: parseInt(node.attributes.horizontalDpi || '4294967295', 10),\r\n verticalDpi: parseInt(node.attributes.verticalDpi || '4294967295', 10),\r\n pageOrder: node.attributes.pageOrder || 'downThenOver',\r\n blackAndWhite: node.attributes.blackAndWhite === '1',\r\n draft: node.attributes.draft === '1',\r\n cellComments: node.attributes.cellComments || 'None',\r\n errors: node.attributes.errors || 'displayed',\r\n scale: parseInt(node.attributes.scale || '100', 10),\r\n fitToWidth: parseInt(node.attributes.fitToWidth || '1', 10),\r\n fitToHeight: parseInt(node.attributes.fitToHeight || '1', 10),\r\n firstPageNumber: parseInt(node.attributes.firstPageNumber || '1', 10),\r\n useFirstPageNumber: node.attributes.useFirstPageNumber === '1',\r\n usePrinterDefaults: node.attributes.usePrinterDefaults === '1',\r\n copies: parseInt(node.attributes.copies || '1', 10),\r\n };\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = PageSetupXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass PictureXform extends BaseXform {\r\n get tag() {\r\n return 'picture';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n xmlStream.leafNode(this.tag, {'r:id': model.rId});\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {\r\n rId: node.attributes['r:id'],\r\n };\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = PictureXform;\r\n","const _ = require('../../../utils/under-dash');\r\nconst BaseXform = require('../base-xform');\r\n\r\nfunction booleanToXml(model) {\r\n return model ? '1' : undefined;\r\n}\r\n\r\nclass PrintOptionsXform extends BaseXform {\r\n get tag() {\r\n return 'printOptions';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n const attributes = {\r\n headings: booleanToXml(model.showRowColHeaders),\r\n gridLines: booleanToXml(model.showGridLines),\r\n horizontalCentered: booleanToXml(model.horizontalCentered),\r\n verticalCentered: booleanToXml(model.verticalCentered),\r\n };\r\n if (_.some(attributes, value => value !== undefined)) {\r\n xmlStream.leafNode(this.tag, attributes);\r\n }\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {\r\n showRowColHeaders: node.attributes.headings === '1',\r\n showGridLines: node.attributes.gridLines === '1',\r\n horizontalCentered: node.attributes.horizontalCentered === '1',\r\n verticalCentered: node.attributes.verticalCentered === '1',\r\n };\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = PrintOptionsXform;\r\n","'use strict';\r\n\r\nconst PageBreaksXform = require('./page-breaks-xform');\r\n\r\nconst ListXform = require('../list-xform');\r\n\r\nclass RowBreaksXform extends ListXform {\r\n constructor() {\r\n const options = {\r\n tag: 'rowBreaks',\r\n count: true,\r\n childXform: new PageBreaksXform(),\r\n };\r\n super(options);\r\n }\r\n\r\n // get tag() { return 'rowBreaks'; }\r\n\r\n render(xmlStream, model) {\r\n if (model && model.length) {\r\n xmlStream.openNode(this.tag, this.$);\r\n if (this.count) {\r\n xmlStream.addAttribute(this.$count, model.length);\r\n xmlStream.addAttribute('manualBreakCount', model.length);\r\n }\r\n\r\n const {childXform} = this;\r\n model.forEach(childModel => {\r\n childXform.render(xmlStream, childModel);\r\n });\r\n\r\n xmlStream.closeNode();\r\n } else if (this.empty) {\r\n xmlStream.leafNode(this.tag);\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = RowBreaksXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nconst CellXform = require('./cell-xform');\r\n\r\nclass RowXform extends BaseXform {\r\n constructor(options) {\r\n super();\r\n\r\n this.maxItems = options && options.maxItems;\r\n this.map = {\r\n c: new CellXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'row';\r\n }\r\n\r\n prepare(model, options) {\r\n const styleId = options.styles.addStyleModel(model.style);\r\n if (styleId) {\r\n model.styleId = styleId;\r\n }\r\n const cellXform = this.map.c;\r\n model.cells.forEach(cellModel => {\r\n cellXform.prepare(cellModel, options);\r\n });\r\n }\r\n\r\n render(xmlStream, model, options) {\r\n xmlStream.openNode('row');\r\n xmlStream.addAttribute('r', model.number);\r\n if (model.height) {\r\n xmlStream.addAttribute('ht', model.height);\r\n xmlStream.addAttribute('customHeight', '1');\r\n }\r\n if (model.hidden) {\r\n xmlStream.addAttribute('hidden', '1');\r\n }\r\n if (model.min > 0 && model.max > 0 && model.min <= model.max) {\r\n xmlStream.addAttribute('spans', `${model.min}:${model.max}`);\r\n }\r\n if (model.styleId) {\r\n xmlStream.addAttribute('s', model.styleId);\r\n xmlStream.addAttribute('customFormat', '1');\r\n }\r\n xmlStream.addAttribute('x14ac:dyDescent', '0.25');\r\n if (model.outlineLevel) {\r\n xmlStream.addAttribute('outlineLevel', model.outlineLevel);\r\n }\r\n if (model.collapsed) {\r\n xmlStream.addAttribute('collapsed', '1');\r\n }\r\n\r\n const cellXform = this.map.c;\r\n model.cells.forEach(cellModel => {\r\n cellXform.render(xmlStream, cellModel, options);\r\n });\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n if (node.name === 'row') {\r\n this.numRowsSeen += 1;\r\n const spans = node.attributes.spans\r\n ? node.attributes.spans.split(':').map(span => parseInt(span, 10))\r\n : [undefined, undefined];\r\n const model = (this.model = {\r\n number: parseInt(node.attributes.r, 10),\r\n min: spans[0],\r\n max: spans[1],\r\n cells: [],\r\n });\r\n if (node.attributes.s) {\r\n model.styleId = parseInt(node.attributes.s, 10);\r\n }\r\n if (\r\n node.attributes.hidden === true ||\r\n node.attributes.hidden === 'true' ||\r\n node.attributes.hidden === 1 ||\r\n node.attributes.hidden === '1'\r\n ) {\r\n model.hidden = true;\r\n }\r\n if (node.attributes.bestFit) {\r\n model.bestFit = true;\r\n }\r\n if (node.attributes.ht) {\r\n model.height = parseFloat(node.attributes.ht);\r\n }\r\n if (node.attributes.outlineLevel) {\r\n model.outlineLevel = parseInt(node.attributes.outlineLevel, 10);\r\n }\r\n if (node.attributes.collapsed) {\r\n model.collapsed = true;\r\n }\r\n return true;\r\n }\r\n\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.model.cells.push(this.parser.model);\r\n if (this.maxItems && this.model.cells.length > this.maxItems) {\r\n throw new Error(`Max column count (${this.maxItems}) exceeded`);\r\n }\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n reconcile(model, options) {\r\n model.style = model.styleId ? options.styles.getStyleModel(model.styleId) : {};\r\n if (model.styleId !== undefined) {\r\n model.styleId = undefined;\r\n }\r\n\r\n const cellXform = this.map.c;\r\n model.cells.forEach(cellModel => {\r\n cellXform.reconcile(cellModel, options);\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = RowXform;\r\n","const _ = require('../../../utils/under-dash');\r\nconst BaseXform = require('../base-xform');\r\n\r\nclass SheetFormatPropertiesXform extends BaseXform {\r\n get tag() {\r\n return 'sheetFormatPr';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n const attributes = {\r\n defaultRowHeight: model.defaultRowHeight,\r\n outlineLevelRow: model.outlineLevelRow,\r\n outlineLevelCol: model.outlineLevelCol,\r\n 'x14ac:dyDescent': model.dyDescent,\r\n };\r\n if (model.defaultColWidth) {\r\n attributes.defaultColWidth = model.defaultColWidth;\r\n }\r\n\r\n // default value for 'defaultRowHeight' is 15, this should not be 'custom'\r\n if (!model.defaultRowHeight || model.defaultRowHeight !== 15) {\r\n attributes.customHeight = '1';\r\n }\r\n\r\n if (_.some(attributes, value => value !== undefined)) {\r\n xmlStream.leafNode('sheetFormatPr', attributes);\r\n }\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'sheetFormatPr') {\r\n this.model = {\r\n defaultRowHeight: parseFloat(node.attributes.defaultRowHeight || '0'),\r\n dyDescent: parseFloat(node.attributes['x14ac:dyDescent'] || '0'),\r\n outlineLevelRow: parseInt(node.attributes.outlineLevelRow || '0', 10),\r\n outlineLevelCol: parseInt(node.attributes.outlineLevelCol || '0', 10),\r\n };\r\n if (node.attributes.defaultColWidth) {\r\n this.model.defaultColWidth = parseFloat(node.attributes.defaultColWidth);\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = SheetFormatPropertiesXform;\r\n","const BaseXform = require('../base-xform');\r\nconst ColorXform = require('../style/color-xform');\r\nconst PageSetupPropertiesXform = require('./page-setup-properties-xform');\r\nconst OutlinePropertiesXform = require('./outline-properties-xform');\r\n\r\nclass SheetPropertiesXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n tabColor: new ColorXform('tabColor'),\r\n pageSetUpPr: new PageSetupPropertiesXform(),\r\n outlinePr: new OutlinePropertiesXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'sheetPr';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n xmlStream.addRollback();\r\n xmlStream.openNode('sheetPr');\r\n\r\n let inner = false;\r\n inner = this.map.tabColor.render(xmlStream, model.tabColor) || inner;\r\n inner = this.map.pageSetUpPr.render(xmlStream, model.pageSetup) || inner;\r\n inner = this.map.outlinePr.render(xmlStream, model.outlineProperties) || inner;\r\n\r\n if (inner) {\r\n xmlStream.closeNode();\r\n xmlStream.commit();\r\n } else {\r\n xmlStream.rollback();\r\n }\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n if (node.name === this.tag) {\r\n this.reset();\r\n return true;\r\n }\r\n if (this.map[node.name]) {\r\n this.parser = this.map[node.name];\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n if (this.map.tabColor.model || this.map.pageSetUpPr.model || this.map.outlinePr.model) {\r\n this.model = {};\r\n if (this.map.tabColor.model) {\r\n this.model.tabColor = this.map.tabColor.model;\r\n }\r\n if (this.map.pageSetUpPr.model) {\r\n this.model.pageSetup = this.map.pageSetUpPr.model;\r\n }\r\n if (this.map.outlinePr.model) {\r\n this.model.outlineProperties = this.map.outlinePr.model;\r\n }\r\n } else {\r\n this.model = null;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = SheetPropertiesXform;\r\n","const _ = require('../../../utils/under-dash');\r\nconst BaseXform = require('../base-xform');\r\n\r\nfunction booleanToXml(model, value) {\r\n return model ? value : undefined;\r\n}\r\n\r\nfunction xmlToBoolean(value, equals) {\r\n return value === equals ? true : undefined;\r\n}\r\n\r\nclass SheetProtectionXform extends BaseXform {\r\n get tag() {\r\n return 'sheetProtection';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n const attributes = {\r\n sheet: booleanToXml(model.sheet, '1'),\r\n selectLockedCells: model.selectLockedCells === false ? '1' : undefined,\r\n selectUnlockedCells: model.selectUnlockedCells === false ? '1' : undefined,\r\n formatCells: booleanToXml(model.formatCells, '0'),\r\n formatColumns: booleanToXml(model.formatColumns, '0'),\r\n formatRows: booleanToXml(model.formatRows, '0'),\r\n insertColumns: booleanToXml(model.insertColumns, '0'),\r\n insertRows: booleanToXml(model.insertRows, '0'),\r\n insertHyperlinks: booleanToXml(model.insertHyperlinks, '0'),\r\n deleteColumns: booleanToXml(model.deleteColumns, '0'),\r\n deleteRows: booleanToXml(model.deleteRows, '0'),\r\n sort: booleanToXml(model.sort, '0'),\r\n autoFilter: booleanToXml(model.autoFilter, '0'),\r\n pivotTables: booleanToXml(model.pivotTables, '0'),\r\n };\r\n if (model.sheet) {\r\n attributes.algorithmName = model.algorithmName;\r\n attributes.hashValue = model.hashValue;\r\n attributes.saltValue = model.saltValue;\r\n attributes.spinCount = model.spinCount;\r\n attributes.objects = booleanToXml(model.objects === false, '1');\r\n attributes.scenarios = booleanToXml(model.scenarios === false, '1');\r\n }\r\n if (_.some(attributes, value => value !== undefined)) {\r\n xmlStream.leafNode(this.tag, attributes);\r\n }\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {\r\n sheet: xmlToBoolean(node.attributes.sheet, '1'),\r\n objects: node.attributes.objects === '1' ? false : undefined,\r\n scenarios: node.attributes.scenarios === '1' ? false : undefined,\r\n selectLockedCells: node.attributes.selectLockedCells === '1' ? false : undefined,\r\n selectUnlockedCells: node.attributes.selectUnlockedCells === '1' ? false : undefined,\r\n formatCells: xmlToBoolean(node.attributes.formatCells, '0'),\r\n formatColumns: xmlToBoolean(node.attributes.formatColumns, '0'),\r\n formatRows: xmlToBoolean(node.attributes.formatRows, '0'),\r\n insertColumns: xmlToBoolean(node.attributes.insertColumns, '0'),\r\n insertRows: xmlToBoolean(node.attributes.insertRows, '0'),\r\n insertHyperlinks: xmlToBoolean(node.attributes.insertHyperlinks, '0'),\r\n deleteColumns: xmlToBoolean(node.attributes.deleteColumns, '0'),\r\n deleteRows: xmlToBoolean(node.attributes.deleteRows, '0'),\r\n sort: xmlToBoolean(node.attributes.sort, '0'),\r\n autoFilter: xmlToBoolean(node.attributes.autoFilter, '0'),\r\n pivotTables: xmlToBoolean(node.attributes.pivotTables, '0'),\r\n };\r\n if (node.attributes.algorithmName) {\r\n this.model.algorithmName = node.attributes.algorithmName;\r\n this.model.hashValue = node.attributes.hashValue;\r\n this.model.saltValue = node.attributes.saltValue;\r\n this.model.spinCount = parseInt(node.attributes.spinCount, 10);\r\n }\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = SheetProtectionXform;\r\n","const colCache = require('../../../utils/col-cache');\r\nconst BaseXform = require('../base-xform');\r\n\r\nconst VIEW_STATES = {\r\n frozen: 'frozen',\r\n frozenSplit: 'frozen',\r\n split: 'split',\r\n};\r\n\r\nclass SheetViewXform extends BaseXform {\r\n get tag() {\r\n return 'sheetView';\r\n }\r\n\r\n prepare(model) {\r\n switch (model.state) {\r\n case 'frozen':\r\n case 'split':\r\n break;\r\n default:\r\n model.state = 'normal';\r\n break;\r\n }\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode('sheetView', {\r\n workbookViewId: model.workbookViewId || 0,\r\n });\r\n const add = function(name, value, included) {\r\n if (included) {\r\n xmlStream.addAttribute(name, value);\r\n }\r\n };\r\n add('rightToLeft', '1', model.rightToLeft === true);\r\n add('tabSelected', '1', model.tabSelected);\r\n add('showRuler', '0', model.showRuler === false);\r\n add('showRowColHeaders', '0', model.showRowColHeaders === false);\r\n add('showGridLines', '0', model.showGridLines === false);\r\n add('zoomScale', model.zoomScale, model.zoomScale);\r\n add('zoomScaleNormal', model.zoomScaleNormal, model.zoomScaleNormal);\r\n add('view', model.style, model.style);\r\n\r\n let topLeftCell;\r\n let xSplit;\r\n let ySplit;\r\n let activePane;\r\n switch (model.state) {\r\n case 'frozen':\r\n xSplit = model.xSplit || 0;\r\n ySplit = model.ySplit || 0;\r\n topLeftCell = model.topLeftCell || colCache.getAddress(ySplit + 1, xSplit + 1).address;\r\n activePane =\r\n (model.xSplit && model.ySplit && 'bottomRight') ||\r\n (model.xSplit && 'topRight') ||\r\n 'bottomLeft';\r\n\r\n xmlStream.leafNode('pane', {\r\n xSplit: model.xSplit || undefined,\r\n ySplit: model.ySplit || undefined,\r\n topLeftCell,\r\n activePane,\r\n state: 'frozen',\r\n });\r\n xmlStream.leafNode('selection', {\r\n pane: activePane,\r\n activeCell: model.activeCell,\r\n sqref: model.activeCell,\r\n });\r\n break;\r\n case 'split':\r\n if (model.activePane === 'topLeft') {\r\n model.activePane = undefined;\r\n }\r\n xmlStream.leafNode('pane', {\r\n xSplit: model.xSplit || undefined,\r\n ySplit: model.ySplit || undefined,\r\n topLeftCell: model.topLeftCell,\r\n activePane: model.activePane,\r\n });\r\n xmlStream.leafNode('selection', {\r\n pane: model.activePane,\r\n activeCell: model.activeCell,\r\n sqref: model.activeCell,\r\n });\r\n break;\r\n case 'normal':\r\n if (model.activeCell) {\r\n xmlStream.leafNode('selection', {\r\n activeCell: model.activeCell,\r\n sqref: model.activeCell,\r\n });\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case 'sheetView':\r\n this.sheetView = {\r\n workbookViewId: parseInt(node.attributes.workbookViewId, 10),\r\n rightToLeft: node.attributes.rightToLeft === '1',\r\n tabSelected: node.attributes.tabSelected === '1',\r\n showRuler: !(node.attributes.showRuler === '0'),\r\n showRowColHeaders: !(node.attributes.showRowColHeaders === '0'),\r\n showGridLines: !(node.attributes.showGridLines === '0'),\r\n zoomScale: parseInt(node.attributes.zoomScale || '100', 10),\r\n zoomScaleNormal: parseInt(node.attributes.zoomScaleNormal || '100', 10),\r\n style: node.attributes.view,\r\n };\r\n this.pane = undefined;\r\n this.selections = {};\r\n return true;\r\n\r\n case 'pane':\r\n this.pane = {\r\n xSplit: parseInt(node.attributes.xSplit || '0', 10),\r\n ySplit: parseInt(node.attributes.ySplit || '0', 10),\r\n topLeftCell: node.attributes.topLeftCell,\r\n activePane: node.attributes.activePane || 'topLeft',\r\n state: node.attributes.state,\r\n };\r\n return true;\r\n\r\n case 'selection': {\r\n const name = node.attributes.pane || 'topLeft';\r\n this.selections[name] = {\r\n pane: name,\r\n activeCell: node.attributes.activeCell,\r\n };\r\n return true;\r\n }\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n let model;\r\n let selection;\r\n switch (name) {\r\n case 'sheetView':\r\n if (this.sheetView && this.pane) {\r\n model = this.model = {\r\n workbookViewId: this.sheetView.workbookViewId,\r\n rightToLeft: this.sheetView.rightToLeft,\r\n state: VIEW_STATES[this.pane.state] || 'split', // split is default\r\n xSplit: this.pane.xSplit,\r\n ySplit: this.pane.ySplit,\r\n topLeftCell: this.pane.topLeftCell,\r\n showRuler: this.sheetView.showRuler,\r\n showRowColHeaders: this.sheetView.showRowColHeaders,\r\n showGridLines: this.sheetView.showGridLines,\r\n zoomScale: this.sheetView.zoomScale,\r\n zoomScaleNormal: this.sheetView.zoomScaleNormal,\r\n };\r\n if (this.model.state === 'split') {\r\n model.activePane = this.pane.activePane;\r\n }\r\n selection = this.selections[this.pane.activePane];\r\n if (selection && selection.activeCell) {\r\n model.activeCell = selection.activeCell;\r\n }\r\n if (this.sheetView.style) {\r\n model.style = this.sheetView.style;\r\n }\r\n } else {\r\n model = this.model = {\r\n workbookViewId: this.sheetView.workbookViewId,\r\n rightToLeft: this.sheetView.rightToLeft,\r\n state: 'normal',\r\n showRuler: this.sheetView.showRuler,\r\n showRowColHeaders: this.sheetView.showRowColHeaders,\r\n showGridLines: this.sheetView.showGridLines,\r\n zoomScale: this.sheetView.zoomScale,\r\n zoomScaleNormal: this.sheetView.zoomScaleNormal,\r\n };\r\n selection = this.selections.topLeft;\r\n if (selection && selection.activeCell) {\r\n model.activeCell = selection.activeCell;\r\n }\r\n if (this.sheetView.style) {\r\n model.style = this.sheetView.style;\r\n }\r\n }\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n reconcile() {}\r\n}\r\n\r\nmodule.exports = SheetViewXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass TablePartXform extends BaseXform {\r\n get tag() {\r\n return 'tablePart';\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n xmlStream.leafNode(this.tag, {'r:id': model.rId});\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {\r\n rId: node.attributes['r:id'],\r\n };\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = TablePartXform;\r\n","const _ = require('../../../utils/under-dash');\r\n\r\nconst colCache = require('../../../utils/col-cache');\r\nconst XmlStream = require('../../../utils/xml-stream');\r\n\r\nconst RelType = require('../../rel-type');\r\n\r\nconst Merges = require('./merges');\r\n\r\nconst BaseXform = require('../base-xform');\r\nconst ListXform = require('../list-xform');\r\nconst RowXform = require('./row-xform');\r\nconst ColXform = require('./col-xform');\r\nconst DimensionXform = require('./dimension-xform');\r\nconst HyperlinkXform = require('./hyperlink-xform');\r\nconst MergeCellXform = require('./merge-cell-xform');\r\nconst DataValidationsXform = require('./data-validations-xform');\r\nconst SheetPropertiesXform = require('./sheet-properties-xform');\r\nconst SheetFormatPropertiesXform = require('./sheet-format-properties-xform');\r\nconst SheetViewXform = require('./sheet-view-xform');\r\nconst SheetProtectionXform = require('./sheet-protection-xform');\r\nconst PageMarginsXform = require('./page-margins-xform');\r\nconst PageSetupXform = require('./page-setup-xform');\r\nconst PrintOptionsXform = require('./print-options-xform');\r\nconst AutoFilterXform = require('./auto-filter-xform');\r\nconst PictureXform = require('./picture-xform');\r\nconst DrawingXform = require('./drawing-xform');\r\nconst TablePartXform = require('./table-part-xform');\r\nconst RowBreaksXform = require('./row-breaks-xform');\r\nconst HeaderFooterXform = require('./header-footer-xform');\r\nconst ConditionalFormattingsXform = require('./cf/conditional-formattings-xform');\r\nconst ExtListXform = require('./ext-lst-xform');\r\n\r\nconst mergeRule = (rule, extRule) => {\r\n Object.keys(extRule).forEach(key => {\r\n const value = rule[key];\r\n const extValue = extRule[key];\r\n if (value === undefined && extValue !== undefined) {\r\n rule[key] = extValue;\r\n }\r\n });\r\n};\r\n\r\nconst mergeConditionalFormattings = (model, extModel) => {\r\n // conditional formattings are rendered in worksheet.conditionalFormatting and also in\r\n // worksheet.extLst.ext.x14:conditionalFormattings\r\n // some (e.g. dataBar) are even spread across both!\r\n if (!extModel || !extModel.length) {\r\n return model;\r\n }\r\n if (!model || !model.length) {\r\n return extModel;\r\n }\r\n\r\n // index model rules by x14Id\r\n const cfMap = {};\r\n const ruleMap = {};\r\n model.forEach(cf => {\r\n cfMap[cf.ref] = cf;\r\n cf.rules.forEach(rule => {\r\n const {x14Id} = rule;\r\n if (x14Id) {\r\n ruleMap[x14Id] = rule;\r\n }\r\n });\r\n });\r\n\r\n extModel.forEach(extCf => {\r\n extCf.rules.forEach(extRule => {\r\n const rule = ruleMap[extRule.x14Id];\r\n if (rule) {\r\n // merge with matching rule\r\n mergeRule(rule, extRule);\r\n } else if (cfMap[extCf.ref]) {\r\n // reuse existing cf ref\r\n cfMap[extCf.ref].rules.push(extRule);\r\n } else {\r\n // create new cf\r\n model.push({\r\n ref: extCf.ref,\r\n rules: [extRule],\r\n });\r\n }\r\n });\r\n });\r\n\r\n // need to cope with rules in extModel that don't exist in model\r\n return model;\r\n};\r\n\r\nclass WorkSheetXform extends BaseXform {\r\n constructor(options) {\r\n super();\r\n\r\n const {maxRows, maxCols} = options || {};\r\n this.map = {\r\n sheetPr: new SheetPropertiesXform(),\r\n dimension: new DimensionXform(),\r\n sheetViews: new ListXform({\r\n tag: 'sheetViews',\r\n count: false,\r\n childXform: new SheetViewXform(),\r\n }),\r\n sheetFormatPr: new SheetFormatPropertiesXform(),\r\n cols: new ListXform({tag: 'cols', count: false, childXform: new ColXform()}),\r\n sheetData: new ListXform({\r\n tag: 'sheetData',\r\n count: false,\r\n empty: true,\r\n childXform: new RowXform({maxItems: maxCols}),\r\n maxItems: maxRows,\r\n }),\r\n autoFilter: new AutoFilterXform(),\r\n mergeCells: new ListXform({tag: 'mergeCells', count: true, childXform: new MergeCellXform()}),\r\n rowBreaks: new RowBreaksXform(),\r\n hyperlinks: new ListXform({\r\n tag: 'hyperlinks',\r\n count: false,\r\n childXform: new HyperlinkXform(),\r\n }),\r\n pageMargins: new PageMarginsXform(),\r\n dataValidations: new DataValidationsXform(),\r\n pageSetup: new PageSetupXform(),\r\n headerFooter: new HeaderFooterXform(),\r\n printOptions: new PrintOptionsXform(),\r\n picture: new PictureXform(),\r\n drawing: new DrawingXform(),\r\n sheetProtection: new SheetProtectionXform(),\r\n tableParts: new ListXform({tag: 'tableParts', count: true, childXform: new TablePartXform()}),\r\n conditionalFormatting: new ConditionalFormattingsXform(),\r\n extLst: new ExtListXform(),\r\n };\r\n }\r\n\r\n prepare(model, options) {\r\n options.merges = new Merges();\r\n model.hyperlinks = options.hyperlinks = [];\r\n model.comments = options.comments = [];\r\n\r\n options.formulae = {};\r\n options.siFormulae = 0;\r\n this.map.cols.prepare(model.cols, options);\r\n this.map.sheetData.prepare(model.rows, options);\r\n this.map.conditionalFormatting.prepare(model.conditionalFormattings, options);\r\n\r\n model.mergeCells = options.merges.mergeCells;\r\n\r\n // prepare relationships\r\n const rels = (model.rels = []);\r\n\r\n function nextRid(r) {\r\n return `rId${r.length + 1}`;\r\n }\r\n\r\n model.hyperlinks.forEach(hyperlink => {\r\n const rId = nextRid(rels);\r\n hyperlink.rId = rId;\r\n rels.push({\r\n Id: rId,\r\n Type: RelType.Hyperlink,\r\n Target: hyperlink.target,\r\n TargetMode: 'External',\r\n });\r\n });\r\n\r\n // prepare comment relationships\r\n if (model.comments.length > 0) {\r\n const comment = {\r\n Id: nextRid(rels),\r\n Type: RelType.Comments,\r\n Target: `../comments${model.id}.xml`,\r\n };\r\n rels.push(comment);\r\n const vmlDrawing = {\r\n Id: nextRid(rels),\r\n Type: RelType.VmlDrawing,\r\n Target: `../drawings/vmlDrawing${model.id}.vml`,\r\n };\r\n rels.push(vmlDrawing);\r\n\r\n model.comments.forEach(item => {\r\n item.refAddress = colCache.decodeAddress(item.ref);\r\n });\r\n\r\n options.commentRefs.push({\r\n commentName: `comments${model.id}`,\r\n vmlDrawing: `vmlDrawing${model.id}`,\r\n });\r\n }\r\n\r\n const drawingRelsHash = [];\r\n let bookImage;\r\n model.media.forEach(medium => {\r\n if (medium.type === 'background') {\r\n const rId = nextRid(rels);\r\n bookImage = options.media[medium.imageId];\r\n rels.push({\r\n Id: rId,\r\n Type: RelType.Image,\r\n Target: `../media/${bookImage.name}.${bookImage.extension}`,\r\n });\r\n model.background = {\r\n rId,\r\n };\r\n model.image = options.media[medium.imageId];\r\n } else if (medium.type === 'image') {\r\n let {drawing} = model;\r\n bookImage = options.media[medium.imageId];\r\n if (!drawing) {\r\n drawing = model.drawing = {\r\n rId: nextRid(rels),\r\n name: `drawing${++options.drawingsCount}`,\r\n anchors: [],\r\n rels: [],\r\n };\r\n options.drawings.push(drawing);\r\n rels.push({\r\n Id: drawing.rId,\r\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',\r\n Target: `../drawings/${drawing.name}.xml`,\r\n });\r\n }\r\n let rIdImage =\r\n this.preImageId === medium.imageId\r\n ? drawingRelsHash[medium.imageId]\r\n : drawingRelsHash[drawing.rels.length];\r\n if (!rIdImage) {\r\n rIdImage = nextRid(drawing.rels);\r\n drawingRelsHash[drawing.rels.length] = rIdImage;\r\n drawing.rels.push({\r\n Id: rIdImage,\r\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\r\n Target: `../media/${bookImage.name}.${bookImage.extension}`,\r\n });\r\n }\r\n\r\n const anchor = {\r\n picture: {\r\n rId: rIdImage,\r\n },\r\n range: medium.range,\r\n };\r\n if (medium.hyperlinks && medium.hyperlinks.hyperlink) {\r\n const rIdHyperLink = nextRid(drawing.rels);\r\n drawingRelsHash[drawing.rels.length] = rIdHyperLink;\r\n anchor.picture.hyperlinks = {\r\n tooltip: medium.hyperlinks.tooltip,\r\n rId: rIdHyperLink,\r\n };\r\n drawing.rels.push({\r\n Id: rIdHyperLink,\r\n Type: RelType.Hyperlink,\r\n Target: medium.hyperlinks.hyperlink,\r\n TargetMode: 'External',\r\n });\r\n }\r\n this.preImageId = medium.imageId;\r\n drawing.anchors.push(anchor);\r\n }\r\n });\r\n\r\n // prepare tables\r\n model.tables.forEach(table => {\r\n // relationships\r\n const rId = nextRid(rels);\r\n table.rId = rId;\r\n rels.push({\r\n Id: rId,\r\n Type: RelType.Table,\r\n Target: `../tables/${table.target}`,\r\n });\r\n\r\n // dynamic styles\r\n table.columns.forEach(column => {\r\n const {style} = column;\r\n if (style) {\r\n column.dxfId = options.styles.addDxfStyle(style);\r\n }\r\n });\r\n });\r\n\r\n // prepare ext items\r\n this.map.extLst.prepare(model, options);\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n xmlStream.openNode('worksheet', WorkSheetXform.WORKSHEET_ATTRIBUTES);\r\n\r\n const sheetFormatPropertiesModel = model.properties\r\n ? {\r\n defaultRowHeight: model.properties.defaultRowHeight,\r\n dyDescent: model.properties.dyDescent,\r\n outlineLevelCol: model.properties.outlineLevelCol,\r\n outlineLevelRow: model.properties.outlineLevelRow,\r\n }\r\n : undefined;\r\n if (model.properties && model.properties.defaultColWidth) {\r\n sheetFormatPropertiesModel.defaultColWidth = model.properties.defaultColWidth;\r\n }\r\n const sheetPropertiesModel = {\r\n outlineProperties: model.properties && model.properties.outlineProperties,\r\n tabColor: model.properties && model.properties.tabColor,\r\n pageSetup:\r\n model.pageSetup && model.pageSetup.fitToPage\r\n ? {\r\n fitToPage: model.pageSetup.fitToPage,\r\n }\r\n : undefined,\r\n };\r\n const pageMarginsModel = model.pageSetup && model.pageSetup.margins;\r\n const printOptionsModel = {\r\n showRowColHeaders: model.pageSetup && model.pageSetup.showRowColHeaders,\r\n showGridLines: model.pageSetup && model.pageSetup.showGridLines,\r\n horizontalCentered: model.pageSetup && model.pageSetup.horizontalCentered,\r\n verticalCentered: model.pageSetup && model.pageSetup.verticalCentered,\r\n };\r\n const sheetProtectionModel = model.sheetProtection;\r\n\r\n this.map.sheetPr.render(xmlStream, sheetPropertiesModel);\r\n this.map.dimension.render(xmlStream, model.dimensions);\r\n this.map.sheetViews.render(xmlStream, model.views);\r\n this.map.sheetFormatPr.render(xmlStream, sheetFormatPropertiesModel);\r\n this.map.cols.render(xmlStream, model.cols);\r\n this.map.sheetData.render(xmlStream, model.rows);\r\n this.map.sheetProtection.render(xmlStream, sheetProtectionModel); // Note: must be after sheetData and before autoFilter\r\n this.map.autoFilter.render(xmlStream, model.autoFilter);\r\n this.map.mergeCells.render(xmlStream, model.mergeCells);\r\n this.map.conditionalFormatting.render(xmlStream, model.conditionalFormattings); // Note: must be before dataValidations\r\n this.map.dataValidations.render(xmlStream, model.dataValidations);\r\n\r\n // For some reason hyperlinks have to be after the data validations\r\n this.map.hyperlinks.render(xmlStream, model.hyperlinks);\r\n\r\n this.map.printOptions.render(xmlStream, printOptionsModel); // Note: must be before pageMargins\r\n this.map.pageMargins.render(xmlStream, pageMarginsModel);\r\n this.map.pageSetup.render(xmlStream, model.pageSetup);\r\n this.map.headerFooter.render(xmlStream, model.headerFooter);\r\n this.map.rowBreaks.render(xmlStream, model.rowBreaks);\r\n this.map.drawing.render(xmlStream, model.drawing); // Note: must be after rowBreaks\r\n this.map.picture.render(xmlStream, model.background); // Note: must be after drawing\r\n this.map.tableParts.render(xmlStream, model.tables);\r\n\r\n this.map.extLst.render(xmlStream, model);\r\n\r\n if (model.rels) {\r\n // add a node for each comment\r\n model.rels.forEach(rel => {\r\n if (rel.Type === RelType.VmlDrawing) {\r\n xmlStream.leafNode('legacyDrawing', {'r:id': rel.Id});\r\n }\r\n });\r\n }\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n\r\n if (node.name === 'worksheet') {\r\n _.each(this.map, xform => {\r\n xform.reset();\r\n });\r\n return true;\r\n }\r\n\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n return true;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case 'worksheet': {\r\n const properties = this.map.sheetFormatPr.model || {};\r\n if (this.map.sheetPr.model && this.map.sheetPr.model.tabColor) {\r\n properties.tabColor = this.map.sheetPr.model.tabColor;\r\n }\r\n if (this.map.sheetPr.model && this.map.sheetPr.model.outlineProperties) {\r\n properties.outlineProperties = this.map.sheetPr.model.outlineProperties;\r\n }\r\n const sheetProperties = {\r\n fitToPage:\r\n (this.map.sheetPr.model &&\r\n this.map.sheetPr.model.pageSetup &&\r\n this.map.sheetPr.model.pageSetup.fitToPage) ||\r\n false,\r\n margins: this.map.pageMargins.model,\r\n };\r\n const pageSetup = Object.assign(\r\n sheetProperties,\r\n this.map.pageSetup.model,\r\n this.map.printOptions.model\r\n );\r\n const conditionalFormattings = mergeConditionalFormattings(\r\n this.map.conditionalFormatting.model,\r\n this.map.extLst.model && this.map.extLst.model['x14:conditionalFormattings']\r\n );\r\n this.model = {\r\n dimensions: this.map.dimension.model,\r\n cols: this.map.cols.model,\r\n rows: this.map.sheetData.model,\r\n mergeCells: this.map.mergeCells.model,\r\n hyperlinks: this.map.hyperlinks.model,\r\n dataValidations: this.map.dataValidations.model,\r\n properties,\r\n views: this.map.sheetViews.model,\r\n pageSetup,\r\n headerFooter: this.map.headerFooter.model,\r\n background: this.map.picture.model,\r\n drawing: this.map.drawing.model,\r\n tables: this.map.tableParts.model,\r\n conditionalFormattings,\r\n };\r\n\r\n if (this.map.autoFilter.model) {\r\n this.model.autoFilter = this.map.autoFilter.model;\r\n }\r\n if (this.map.sheetProtection.model) {\r\n this.model.sheetProtection = this.map.sheetProtection.model;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n default:\r\n // not quite sure how we get here!\r\n return true;\r\n }\r\n }\r\n\r\n reconcile(model, options) {\r\n // options.merges = new Merges();\r\n // options.merges.reconcile(model.mergeCells, model.rows);\r\n const rels = (model.relationships || []).reduce((h, rel) => {\r\n h[rel.Id] = rel;\r\n if (rel.Type === RelType.Comments) {\r\n model.comments = options.comments[rel.Target].comments;\r\n }\r\n if (rel.Type === RelType.VmlDrawing && model.comments && model.comments.length) {\r\n const vmlComment = options.vmlDrawings[rel.Target].comments;\r\n model.comments.forEach((comment, index) => {\r\n comment.note = Object.assign({}, comment.note, vmlComment[index]);\r\n });\r\n }\r\n return h;\r\n }, {});\r\n options.commentsMap = (model.comments || []).reduce((h, comment) => {\r\n if (comment.ref) {\r\n h[comment.ref] = comment;\r\n }\r\n return h;\r\n }, {});\r\n options.hyperlinkMap = (model.hyperlinks || []).reduce((h, hyperlink) => {\r\n if (hyperlink.rId) {\r\n h[hyperlink.address] = rels[hyperlink.rId].Target;\r\n }\r\n return h;\r\n }, {});\r\n options.formulae = {};\r\n\r\n // compact the rows and cells\r\n model.rows = (model.rows && model.rows.filter(Boolean)) || [];\r\n model.rows.forEach(row => {\r\n row.cells = (row.cells && row.cells.filter(Boolean)) || [];\r\n });\r\n\r\n this.map.cols.reconcile(model.cols, options);\r\n this.map.sheetData.reconcile(model.rows, options);\r\n this.map.conditionalFormatting.reconcile(model.conditionalFormattings, options);\r\n\r\n model.media = [];\r\n if (model.drawing) {\r\n const drawingRel = rels[model.drawing.rId];\r\n const match = drawingRel.Target.match(/\\/drawings\\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);\r\n if (match) {\r\n const drawingName = match[1];\r\n const drawing = options.drawings[drawingName];\r\n drawing.anchors.forEach(anchor => {\r\n if (anchor.medium) {\r\n const image = {\r\n type: 'image',\r\n imageId: anchor.medium.index,\r\n range: anchor.range,\r\n hyperlinks: anchor.picture.hyperlinks,\r\n };\r\n model.media.push(image);\r\n }\r\n });\r\n }\r\n }\r\n\r\n const backgroundRel = model.background && rels[model.background.rId];\r\n if (backgroundRel) {\r\n const target = backgroundRel.Target.split('/media/')[1];\r\n const imageId = options.mediaIndex && options.mediaIndex[target];\r\n if (imageId !== undefined) {\r\n model.media.push({\r\n type: 'background',\r\n imageId,\r\n });\r\n }\r\n }\r\n\r\n model.tables = (model.tables || []).map(tablePart => {\r\n const rel = rels[tablePart.rId];\r\n return options.tables[rel.Target];\r\n });\r\n\r\n delete model.relationships;\r\n delete model.hyperlinks;\r\n delete model.comments;\r\n }\r\n}\r\n\r\nWorkSheetXform.WORKSHEET_ATTRIBUTES = {\r\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\r\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\r\n 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',\r\n 'mc:Ignorable': 'x14ac',\r\n 'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac',\r\n};\r\n\r\nmodule.exports = WorkSheetXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass BooleanXform extends BaseXform {\r\n constructor(options) {\r\n super();\r\n\r\n this.tag = options.tag;\r\n this.attr = options.attr;\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n xmlStream.openNode(this.tag);\r\n xmlStream.closeNode();\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === this.tag) {\r\n this.model = true;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = BooleanXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass DateXform extends BaseXform {\r\n constructor(options) {\r\n super();\r\n\r\n this.tag = options.tag;\r\n this.attr = options.attr;\r\n this.attrs = options.attrs;\r\n this._format =\r\n options.format ||\r\n function(dt) {\r\n try {\r\n if (Number.isNaN(dt.getTime())) return '';\r\n return dt.toISOString();\r\n } catch (e) {\r\n return '';\r\n }\r\n };\r\n this._parse =\r\n options.parse ||\r\n function(str) {\r\n return new Date(str);\r\n };\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n xmlStream.openNode(this.tag);\r\n if (this.attrs) {\r\n xmlStream.addAttributes(this.attrs);\r\n }\r\n if (this.attr) {\r\n xmlStream.addAttribute(this.attr, this._format(model));\r\n } else {\r\n xmlStream.writeText(this._format(model));\r\n }\r\n xmlStream.closeNode();\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === this.tag) {\r\n if (this.attr) {\r\n this.model = this._parse(node.attributes[this.attr]);\r\n } else {\r\n this.text = [];\r\n }\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (!this.attr) {\r\n this.text.push(text);\r\n }\r\n }\r\n\r\n parseClose() {\r\n if (!this.attr) {\r\n this.model = this._parse(this.text.join(''));\r\n }\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = DateXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass IntegerXform extends BaseXform {\r\n constructor(options) {\r\n super();\r\n\r\n this.tag = options.tag;\r\n this.attr = options.attr;\r\n this.attrs = options.attrs;\r\n\r\n // option to render zero\r\n this.zero = options.zero;\r\n }\r\n\r\n render(xmlStream, model) {\r\n // int is different to float in that zero is not rendered\r\n if (model || this.zero) {\r\n xmlStream.openNode(this.tag);\r\n if (this.attrs) {\r\n xmlStream.addAttributes(this.attrs);\r\n }\r\n if (this.attr) {\r\n xmlStream.addAttribute(this.attr, model);\r\n } else {\r\n xmlStream.writeText(model);\r\n }\r\n xmlStream.closeNode();\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === this.tag) {\r\n if (this.attr) {\r\n this.model = parseInt(node.attributes[this.attr], 10);\r\n } else {\r\n this.text = [];\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText(text) {\r\n if (!this.attr) {\r\n this.text.push(text);\r\n }\r\n }\r\n\r\n parseClose() {\r\n if (!this.attr) {\r\n this.model = parseInt(this.text.join('') || 0, 10);\r\n }\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = IntegerXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass StringXform extends BaseXform {\r\n constructor(options) {\r\n super();\r\n\r\n this.tag = options.tag;\r\n this.attr = options.attr;\r\n this.attrs = options.attrs;\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model !== undefined) {\r\n xmlStream.openNode(this.tag);\r\n if (this.attrs) {\r\n xmlStream.addAttributes(this.attrs);\r\n }\r\n if (this.attr) {\r\n xmlStream.addAttribute(this.attr, model);\r\n } else {\r\n xmlStream.writeText(model);\r\n }\r\n xmlStream.closeNode();\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === this.tag) {\r\n if (this.attr) {\r\n this.model = node.attributes[this.attr];\r\n } else {\r\n this.text = [];\r\n }\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (!this.attr) {\r\n this.text.push(text);\r\n }\r\n }\r\n\r\n parseClose() {\r\n if (!this.attr) {\r\n this.model = this.text.join('');\r\n }\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = StringXform;\r\n","const BaseXform = require('./base-xform');\r\nconst XmlStream = require('../../utils/xml-stream');\r\n\r\n// const model = {\r\n// tag: 'name',\r\n// $: {attr: 'value'},\r\n// c: [\r\n// { tag: 'child' }\r\n// ],\r\n// t: 'some text'\r\n// };\r\n\r\nfunction build(xmlStream, model) {\r\n xmlStream.openNode(model.tag, model.$);\r\n if (model.c) {\r\n model.c.forEach(child => {\r\n build(xmlStream, child);\r\n });\r\n }\r\n if (model.t) {\r\n xmlStream.writeText(model.t);\r\n }\r\n xmlStream.closeNode();\r\n}\r\n\r\nclass StaticXform extends BaseXform {\r\n constructor(model) {\r\n super();\r\n\r\n // This class is an optimisation for static (unimportant and unchanging) xml\r\n // It is stateless - apart from its static model and so can be used as a singleton\r\n // Being stateless - it will only track entry to and exit from it's root xml tag during parsing and nothing else\r\n // Known issues:\r\n // since stateless - parseOpen always returns true. Parent xform must know when to start using this xform\r\n // if the root tag is recursive, the parsing will behave unpredictably\r\n this._model = model;\r\n }\r\n\r\n render(xmlStream) {\r\n if (!this._xml) {\r\n const stream = new XmlStream();\r\n build(stream, this._model);\r\n this._xml = stream.xml;\r\n }\r\n xmlStream.writeXml(this._xml);\r\n }\r\n\r\n parseOpen() {\r\n return true;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n switch (name) {\r\n case this._model.tag:\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = StaticXform;\r\n","const TextXform = require('./text-xform');\r\nconst RichTextXform = require('./rich-text-xform');\r\n\r\nconst BaseXform = require('../base-xform');\r\n\r\n// \r\n// (its pronounciation in KATAKANA)\r\n// \r\n\r\nclass PhoneticTextXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n r: new RichTextXform(),\r\n t: new TextXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'rPh';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {\r\n sb: model.sb || 0,\r\n eb: model.eb || 0,\r\n });\r\n if (model && model.hasOwnProperty('richText') && model.richText) {\r\n const {r} = this.map;\r\n model.richText.forEach(text => {\r\n r.render(xmlStream, text);\r\n });\r\n } else if (model) {\r\n this.map.t.render(xmlStream, model.text);\r\n }\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n const {name} = node;\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n if (name === this.tag) {\r\n this.model = {\r\n sb: parseInt(node.attributes.sb, 10),\r\n eb: parseInt(node.attributes.eb, 10),\r\n };\r\n return true;\r\n }\r\n this.parser = this.map[name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n switch (name) {\r\n case 'r': {\r\n let rt = this.model.richText;\r\n if (!rt) {\r\n rt = this.model.richText = [];\r\n }\r\n rt.push(this.parser.model);\r\n break;\r\n }\r\n case 't':\r\n this.model.text = this.parser.model;\r\n break;\r\n default:\r\n break;\r\n }\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = PhoneticTextXform;\r\n","const TextXform = require('./text-xform');\r\nconst FontXform = require('../style/font-xform');\r\n\r\nconst BaseXform = require('../base-xform');\r\n\r\n// \r\n// \r\n// \r\n// \r\n// \r\n// \r\n// \r\n// \r\n// is \r\n// \r\n\r\nclass RichTextXform extends BaseXform {\r\n constructor(model) {\r\n super();\r\n\r\n this.model = model;\r\n }\r\n\r\n get tag() {\r\n return 'r';\r\n }\r\n\r\n get textXform() {\r\n return this._textXform || (this._textXform = new TextXform());\r\n }\r\n\r\n get fontXform() {\r\n return this._fontXform || (this._fontXform = new FontXform(RichTextXform.FONT_OPTIONS));\r\n }\r\n\r\n render(xmlStream, model) {\r\n model = model || this.model;\r\n\r\n xmlStream.openNode('r');\r\n if (model.font) {\r\n this.fontXform.render(xmlStream, model.font);\r\n }\r\n this.textXform.render(xmlStream, model.text);\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'r':\r\n this.model = {};\r\n return true;\r\n case 't':\r\n this.parser = this.textXform;\r\n this.parser.parseOpen(node);\r\n return true;\r\n case 'rPr':\r\n this.parser = this.fontXform;\r\n this.parser.parseOpen(node);\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n switch (name) {\r\n case 'r':\r\n return false;\r\n case 't':\r\n this.model.text = this.parser.model;\r\n this.parser = undefined;\r\n return true;\r\n case 'rPr':\r\n this.model.font = this.parser.model;\r\n this.parser = undefined;\r\n return true;\r\n default:\r\n if (this.parser) {\r\n this.parser.parseClose(name);\r\n }\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nRichTextXform.FONT_OPTIONS = {\r\n tagName: 'rPr',\r\n fontNameTag: 'rFont',\r\n};\r\n\r\nmodule.exports = RichTextXform;\r\n","const TextXform = require('./text-xform');\r\nconst RichTextXform = require('./rich-text-xform');\r\nconst PhoneticTextXform = require('./phonetic-text-xform');\r\n\r\nconst BaseXform = require('../base-xform');\r\n\r\n// \r\n// ...\r\n// \r\n// \r\n// \r\n// \r\n\r\nclass SharedStringXform extends BaseXform {\r\n constructor(model) {\r\n super();\r\n\r\n this.model = model;\r\n\r\n this.map = {\r\n r: new RichTextXform(),\r\n t: new TextXform(),\r\n rPh: new PhoneticTextXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'si';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag);\r\n if (model && model.hasOwnProperty('richText') && model.richText) {\r\n if (model.richText.length) {\r\n model.richText.forEach(text => {\r\n this.map.r.render(xmlStream, text);\r\n });\r\n } else {\r\n this.map.t.render(xmlStream, '');\r\n }\r\n } else if (model !== undefined && model !== null) {\r\n this.map.t.render(xmlStream, model);\r\n }\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n const {name} = node;\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n if (name === this.tag) {\r\n this.model = {};\r\n return true;\r\n }\r\n this.parser = this.map[name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n switch (name) {\r\n case 'r': {\r\n let rt = this.model.richText;\r\n if (!rt) {\r\n rt = this.model.richText = [];\r\n }\r\n rt.push(this.parser.model);\r\n break;\r\n }\r\n case 't':\r\n this.model = this.parser.model;\r\n break;\r\n default:\r\n break;\r\n }\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = SharedStringXform;\r\n","const XmlStream = require('../../../utils/xml-stream');\r\nconst BaseXform = require('../base-xform');\r\nconst SharedStringXform = require('./shared-string-xform');\r\n\r\nclass SharedStringsXform extends BaseXform {\r\n constructor(model) {\r\n super();\r\n\r\n this.model = model || {\r\n values: [],\r\n count: 0,\r\n };\r\n this.hash = Object.create(null);\r\n this.rich = Object.create(null);\r\n }\r\n\r\n get sharedStringXform() {\r\n return this._sharedStringXform || (this._sharedStringXform = new SharedStringXform());\r\n }\r\n\r\n get values() {\r\n return this.model.values;\r\n }\r\n\r\n get uniqueCount() {\r\n return this.model.values.length;\r\n }\r\n\r\n get count() {\r\n return this.model.count;\r\n }\r\n\r\n getString(index) {\r\n return this.model.values[index];\r\n }\r\n\r\n add(value) {\r\n return value.richText ? this.addRichText(value) : this.addText(value);\r\n }\r\n\r\n addText(value) {\r\n let index = this.hash[value];\r\n if (index === undefined) {\r\n index = this.hash[value] = this.model.values.length;\r\n this.model.values.push(value);\r\n }\r\n this.model.count++;\r\n return index;\r\n }\r\n\r\n addRichText(value) {\r\n // TODO: add WeakMap here\r\n const xml = this.sharedStringXform.toXml(value);\r\n let index = this.rich[xml];\r\n if (index === undefined) {\r\n index = this.rich[xml] = this.model.values.length;\r\n this.model.values.push(value);\r\n }\r\n this.model.count++;\r\n return index;\r\n }\r\n\r\n // \r\n // \" uniqueCount=\"<%=count%>\">\r\n // <%=text%>\r\n // \r\n // \r\n\r\n render(xmlStream, model) {\r\n model = model || this._values;\r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n\r\n xmlStream.openNode('sst', {\r\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\r\n count: model.count,\r\n uniqueCount: model.values.length,\r\n });\r\n\r\n const sx = this.sharedStringXform;\r\n model.values.forEach(sharedString => {\r\n sx.render(xmlStream, sharedString);\r\n });\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'sst':\r\n return true;\r\n case 'si':\r\n this.parser = this.sharedStringXform;\r\n this.parser.parseOpen(node);\r\n return true;\r\n default:\r\n throw new Error(`Unexpected xml node in parseOpen: ${JSON.stringify(node)}`);\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.model.values.push(this.parser.model);\r\n this.model.count++;\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case 'sst':\r\n return false;\r\n default:\r\n throw new Error(`Unexpected xml node in parseClose: ${name}`);\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = SharedStringsXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\n// is \r\n\r\nclass TextXform extends BaseXform {\r\n get tag() {\r\n return 't';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode('t');\r\n if (/^\\s|\\n|\\s$/.test(model)) {\r\n xmlStream.addAttribute('xml:space', 'preserve');\r\n }\r\n xmlStream.writeText(model);\r\n xmlStream.closeNode();\r\n }\r\n\r\n get model() {\r\n return this._text\r\n .join('')\r\n .replace(/_x([0-9A-F]{4})_/g, ($0, $1) => String.fromCharCode(parseInt($1, 16)));\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case 't':\r\n this._text = [];\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n this._text.push(text);\r\n }\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = TextXform;\r\n","const Enums = require('../../../doc/enums');\r\n\r\nconst utils = require('../../../utils/utils');\r\nconst BaseXform = require('../base-xform');\r\n\r\nconst validation = {\r\n horizontalValues: [\r\n 'left',\r\n 'center',\r\n 'right',\r\n 'fill',\r\n 'centerContinuous',\r\n 'distributed',\r\n 'justify',\r\n ].reduce((p, v) => {\r\n p[v] = true;\r\n return p;\r\n }, {}),\r\n horizontal(value) {\r\n return this.horizontalValues[value] ? value : undefined;\r\n },\r\n\r\n verticalValues: ['top', 'middle', 'bottom', 'distributed', 'justify'].reduce((p, v) => {\r\n p[v] = true;\r\n return p;\r\n }, {}),\r\n vertical(value) {\r\n if (value === 'middle') return 'center';\r\n return this.verticalValues[value] ? value : undefined;\r\n },\r\n wrapText(value) {\r\n return value ? true : undefined;\r\n },\r\n shrinkToFit(value) {\r\n return value ? true : undefined;\r\n },\r\n textRotation(value) {\r\n switch (value) {\r\n case 'vertical':\r\n return value;\r\n default:\r\n value = utils.validInt(value);\r\n return value >= -90 && value <= 90 ? value : undefined;\r\n }\r\n },\r\n indent(value) {\r\n value = utils.validInt(value);\r\n return Math.max(0, value);\r\n },\r\n readingOrder(value) {\r\n switch (value) {\r\n case 'ltr':\r\n return Enums.ReadingOrder.LeftToRight;\r\n case 'rtl':\r\n return Enums.ReadingOrder.RightToLeft;\r\n default:\r\n return undefined;\r\n }\r\n },\r\n};\r\n\r\nconst textRotationXform = {\r\n toXml(textRotation) {\r\n textRotation = validation.textRotation(textRotation);\r\n if (textRotation) {\r\n if (textRotation === 'vertical') {\r\n return 255;\r\n }\r\n\r\n const tr = Math.round(textRotation);\r\n if (tr >= 0 && tr <= 90) {\r\n return tr;\r\n }\r\n\r\n if (tr < 0 && tr >= -90) {\r\n return 90 - tr;\r\n }\r\n }\r\n return undefined;\r\n },\r\n toModel(textRotation) {\r\n const tr = utils.validInt(textRotation);\r\n if (tr !== undefined) {\r\n if (tr === 255) {\r\n return 'vertical';\r\n }\r\n if (tr >= 0 && tr <= 90) {\r\n return tr;\r\n }\r\n if (tr > 90 && tr <= 180) {\r\n return 90 - tr;\r\n }\r\n }\r\n return undefined;\r\n },\r\n};\r\n\r\n// Alignment encapsulates translation from style.alignment model to/from xlsx\r\nclass AlignmentXform extends BaseXform {\r\n get tag() {\r\n return 'alignment';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.addRollback();\r\n xmlStream.openNode('alignment');\r\n\r\n let isValid = false;\r\n function add(name, value) {\r\n if (value) {\r\n xmlStream.addAttribute(name, value);\r\n isValid = true;\r\n }\r\n }\r\n add('horizontal', validation.horizontal(model.horizontal));\r\n add('vertical', validation.vertical(model.vertical));\r\n add('wrapText', validation.wrapText(model.wrapText) ? '1' : false);\r\n add('shrinkToFit', validation.shrinkToFit(model.shrinkToFit) ? '1' : false);\r\n add('indent', validation.indent(model.indent));\r\n add('textRotation', textRotationXform.toXml(model.textRotation));\r\n add('readingOrder', validation.readingOrder(model.readingOrder));\r\n\r\n xmlStream.closeNode();\r\n\r\n if (isValid) {\r\n xmlStream.commit();\r\n } else {\r\n xmlStream.rollback();\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n const model = {};\r\n\r\n let valid = false;\r\n function add(truthy, name, value) {\r\n if (truthy) {\r\n model[name] = value;\r\n valid = true;\r\n }\r\n }\r\n add(node.attributes.horizontal, 'horizontal', node.attributes.horizontal);\r\n add(\r\n node.attributes.vertical,\r\n 'vertical',\r\n node.attributes.vertical === 'center' ? 'middle' : node.attributes.vertical\r\n );\r\n add(node.attributes.wrapText, 'wrapText', !!node.attributes.wrapText);\r\n add(node.attributes.shrinkToFit, 'shrinkToFit', !!node.attributes.shrinkToFit);\r\n add(node.attributes.indent, 'indent', parseInt(node.attributes.indent, 10));\r\n add(\r\n node.attributes.textRotation,\r\n 'textRotation',\r\n textRotationXform.toModel(node.attributes.textRotation)\r\n );\r\n add(\r\n node.attributes.readingOrder,\r\n 'readingOrder',\r\n node.attributes.readingOrder === '2' ? 'rtl' : 'ltr'\r\n );\r\n\r\n this.model = valid ? model : null;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = AlignmentXform;\r\n","/* eslint-disable max-classes-per-file */\r\nconst BaseXform = require('../base-xform');\r\n\r\nconst ColorXform = require('./color-xform');\r\n\r\nclass EdgeXform extends BaseXform {\r\n constructor(name) {\r\n super();\r\n\r\n this.name = name;\r\n this.map = {\r\n color: new ColorXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return this.name;\r\n }\r\n\r\n render(xmlStream, model, defaultColor) {\r\n const color = (model && model.color) || defaultColor || this.defaultColor;\r\n xmlStream.openNode(this.name);\r\n if (model && model.style) {\r\n xmlStream.addAttribute('style', model.style);\r\n if (color) {\r\n this.map.color.render(xmlStream, color);\r\n }\r\n }\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case this.name: {\r\n const {style} = node.attributes;\r\n if (style) {\r\n this.model = {\r\n style,\r\n };\r\n } else {\r\n this.model = undefined;\r\n }\r\n return true;\r\n }\r\n case 'color':\r\n this.parser = this.map.color;\r\n this.parser.parseOpen(node);\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n\r\n if (name === this.name) {\r\n if (this.map.color.model) {\r\n if (!this.model) {\r\n this.model = {};\r\n }\r\n this.model.color = this.map.color.model;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n validStyle(value) {\r\n return EdgeXform.validStyleValues[value];\r\n }\r\n}\r\n\r\nEdgeXform.validStyleValues = [\r\n 'thin',\r\n 'dotted',\r\n 'dashDot',\r\n 'hair',\r\n 'dashDotDot',\r\n 'slantDashDot',\r\n 'mediumDashed',\r\n 'mediumDashDotDot',\r\n 'mediumDashDot',\r\n 'medium',\r\n 'double',\r\n 'thick',\r\n].reduce((p, v) => {\r\n p[v] = true;\r\n return p;\r\n}, {});\r\n\r\n// Border encapsulates translation from border model to/from xlsx\r\nclass BorderXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n top: new EdgeXform('top'),\r\n left: new EdgeXform('left'),\r\n bottom: new EdgeXform('bottom'),\r\n right: new EdgeXform('right'),\r\n diagonal: new EdgeXform('diagonal'),\r\n };\r\n }\r\n\r\n render(xmlStream, model) {\r\n const {color} = model;\r\n xmlStream.openNode('border');\r\n if (model.diagonal && model.diagonal.style) {\r\n if (model.diagonal.up) {\r\n xmlStream.addAttribute('diagonalUp', '1');\r\n }\r\n if (model.diagonal.down) {\r\n xmlStream.addAttribute('diagonalDown', '1');\r\n }\r\n }\r\n function add(edgeModel, edgeXform) {\r\n if (edgeModel && !edgeModel.color && model.color) {\r\n // don't mess with incoming models\r\n edgeModel = {\r\n ...edgeModel,\r\n color: model.color,\r\n };\r\n }\r\n edgeXform.render(xmlStream, edgeModel, color);\r\n }\r\n add(model.left, this.map.left);\r\n add(model.right, this.map.right);\r\n add(model.top, this.map.top);\r\n add(model.bottom, this.map.bottom);\r\n add(model.diagonal, this.map.diagonal);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'border':\r\n this.reset();\r\n this.diagonalUp = !!node.attributes.diagonalUp;\r\n this.diagonalDown = !!node.attributes.diagonalDown;\r\n return true;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n if (name === 'border') {\r\n const model = (this.model = {});\r\n const add = function(key, edgeModel, extensions) {\r\n if (edgeModel) {\r\n if (extensions) {\r\n Object.assign(edgeModel, extensions);\r\n }\r\n model[key] = edgeModel;\r\n }\r\n };\r\n add('left', this.map.left.model);\r\n add('right', this.map.right.model);\r\n add('top', this.map.top.model);\r\n add('bottom', this.map.bottom.model);\r\n add('diagonal', this.map.diagonal.model, {up: this.diagonalUp, down: this.diagonalDown});\r\n }\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = BorderXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\n// Color encapsulates translation from color model to/from xlsx\r\nclass ColorXform extends BaseXform {\r\n constructor(name) {\r\n super();\r\n\r\n // this.name controls the xm node name\r\n this.name = name || 'color';\r\n }\r\n\r\n get tag() {\r\n return this.name;\r\n }\r\n\r\n render(xmlStream, model) {\r\n if (model) {\r\n xmlStream.openNode(this.name);\r\n if (model.argb) {\r\n xmlStream.addAttribute('rgb', model.argb);\r\n } else if (model.theme !== undefined) {\r\n xmlStream.addAttribute('theme', model.theme);\r\n if (model.tint !== undefined) {\r\n xmlStream.addAttribute('tint', model.tint);\r\n }\r\n } else if (model.indexed !== undefined) {\r\n xmlStream.addAttribute('indexed', model.indexed);\r\n } else {\r\n xmlStream.addAttribute('auto', '1');\r\n }\r\n xmlStream.closeNode();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === this.name) {\r\n if (node.attributes.rgb) {\r\n this.model = {argb: node.attributes.rgb};\r\n } else if (node.attributes.theme) {\r\n this.model = {theme: parseInt(node.attributes.theme, 10)};\r\n if (node.attributes.tint) {\r\n this.model.tint = parseFloat(node.attributes.tint);\r\n }\r\n } else if (node.attributes.indexed) {\r\n this.model = {indexed: parseInt(node.attributes.indexed, 10)};\r\n } else {\r\n this.model = undefined;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = ColorXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nconst AlignmentXform = require('./alignment-xform');\r\nconst BorderXform = require('./border-xform');\r\nconst FillXform = require('./fill-xform');\r\nconst FontXform = require('./font-xform');\r\nconst NumFmtXform = require('./numfmt-xform');\r\nconst ProtectionXform = require('./protection-xform');\r\n\r\n// \r\n// Optional \r\n// Optional \r\n// \r\n\r\n// Style assists translation from style model to/from xlsx\r\nclass DxfXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n alignment: new AlignmentXform(),\r\n border: new BorderXform(),\r\n fill: new FillXform(),\r\n font: new FontXform(),\r\n numFmt: new NumFmtXform(),\r\n protection: new ProtectionXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'dxf';\r\n }\r\n\r\n // how do we generate dxfid?\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag);\r\n\r\n if (model.font) {\r\n this.map.font.render(xmlStream, model.font);\r\n }\r\n if (model.numFmt) {\r\n this.map.numFmt.render(xmlStream, model.numFmt);\r\n }\r\n if (model.fill) {\r\n this.map.fill.render(xmlStream, model.fill);\r\n }\r\n if (model.alignment) {\r\n this.map.alignment.render(xmlStream, model.alignment);\r\n }\r\n if (model.border) {\r\n this.map.border.render(xmlStream, model.border);\r\n }\r\n if (model.protection) {\r\n this.map.protection.render(xmlStream, model.protection);\r\n }\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n\r\n switch (node.name) {\r\n case this.tag:\r\n // this node is often repeated. Need to reset children\r\n this.reset();\r\n return true;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n if (name === this.tag) {\r\n this.model = {\r\n alignment: this.map.alignment.model,\r\n border: this.map.border.model,\r\n fill: this.map.fill.model,\r\n font: this.map.font.model,\r\n numFmt: this.map.numFmt.model,\r\n protection: this.map.protection.model,\r\n };\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n\r\nmodule.exports = DxfXform;\r\n","/* eslint-disable max-classes-per-file */\r\nconst BaseXform = require('../base-xform');\r\n\r\nconst ColorXform = require('./color-xform');\r\n\r\nclass StopXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n color: new ColorXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'stop';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode('stop');\r\n xmlStream.addAttribute('position', model.position);\r\n this.map.color.render(xmlStream, model.color);\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'stop':\r\n this.model = {\r\n position: parseFloat(node.attributes.position),\r\n };\r\n return true;\r\n case 'color':\r\n this.parser = this.map.color;\r\n this.parser.parseOpen(node);\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.model.color = this.parser.model;\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\nclass PatternFillXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n fgColor: new ColorXform('fgColor'),\r\n bgColor: new ColorXform('bgColor'),\r\n };\r\n }\r\n\r\n get name() {\r\n return 'pattern';\r\n }\r\n\r\n get tag() {\r\n return 'patternFill';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode('patternFill');\r\n xmlStream.addAttribute('patternType', model.pattern);\r\n if (model.fgColor) {\r\n this.map.fgColor.render(xmlStream, model.fgColor);\r\n }\r\n if (model.bgColor) {\r\n this.map.bgColor.render(xmlStream, model.bgColor);\r\n }\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'patternFill':\r\n this.model = {\r\n type: 'pattern',\r\n pattern: node.attributes.patternType,\r\n };\r\n return true;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n if (this.parser.model) {\r\n this.model[name] = this.parser.model;\r\n }\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\nclass GradientFillXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n stop: new StopXform(),\r\n };\r\n // if (model) {\r\n // this.gradient = model.gradient;\r\n // if (model.center) {\r\n // this.center = model.center;\r\n // }\r\n // if (model.degree !== undefined) {\r\n // this.degree = model.degree;\r\n // }\r\n // this.stops = model.stops.map(function(stop) { return new StopXform(stop); });\r\n // } else {\r\n // this.stops = [];\r\n // }\r\n }\r\n\r\n get name() {\r\n return 'gradient';\r\n }\r\n\r\n get tag() {\r\n return 'gradientFill';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode('gradientFill');\r\n switch (model.gradient) {\r\n case 'angle':\r\n xmlStream.addAttribute('degree', model.degree);\r\n break;\r\n case 'path':\r\n xmlStream.addAttribute('type', 'path');\r\n if (model.center.left) {\r\n xmlStream.addAttribute('left', model.center.left);\r\n if (model.center.right === undefined) {\r\n xmlStream.addAttribute('right', model.center.left);\r\n }\r\n }\r\n if (model.center.right) {\r\n xmlStream.addAttribute('right', model.center.right);\r\n }\r\n if (model.center.top) {\r\n xmlStream.addAttribute('top', model.center.top);\r\n if (model.center.bottom === undefined) {\r\n xmlStream.addAttribute('bottom', model.center.top);\r\n }\r\n }\r\n if (model.center.bottom) {\r\n xmlStream.addAttribute('bottom', model.center.bottom);\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n const stopXform = this.map.stop;\r\n model.stops.forEach(stopModel => {\r\n stopXform.render(xmlStream, stopModel);\r\n });\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'gradientFill': {\r\n const model = (this.model = {\r\n stops: [],\r\n });\r\n if (node.attributes.degree) {\r\n model.gradient = 'angle';\r\n model.degree = parseInt(node.attributes.degree, 10);\r\n } else if (node.attributes.type === 'path') {\r\n model.gradient = 'path';\r\n model.center = {\r\n left: node.attributes.left ? parseFloat(node.attributes.left) : 0,\r\n top: node.attributes.top ? parseFloat(node.attributes.top) : 0,\r\n };\r\n if (node.attributes.right !== node.attributes.left) {\r\n model.center.right = node.attributes.right ? parseFloat(node.attributes.right) : 0;\r\n }\r\n if (node.attributes.bottom !== node.attributes.top) {\r\n model.center.bottom = node.attributes.bottom ? parseFloat(node.attributes.bottom) : 0;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n case 'stop':\r\n this.parser = this.map.stop;\r\n this.parser.parseOpen(node);\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.model.stops.push(this.parser.model);\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n// Fill encapsulates translation from fill model to/from xlsx\r\nclass FillXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n patternFill: new PatternFillXform(),\r\n gradientFill: new GradientFillXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'fill';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.addRollback();\r\n xmlStream.openNode('fill');\r\n switch (model.type) {\r\n case 'pattern':\r\n this.map.patternFill.render(xmlStream, model);\r\n break;\r\n case 'gradient':\r\n this.map.gradientFill.render(xmlStream, model);\r\n break;\r\n default:\r\n xmlStream.rollback();\r\n return;\r\n }\r\n xmlStream.closeNode();\r\n xmlStream.commit();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'fill':\r\n this.model = {};\r\n return true;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.model = this.parser.model;\r\n this.model.type = this.parser.name;\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n validStyle(value) {\r\n return FillXform.validPatternValues[value];\r\n }\r\n}\r\n\r\nFillXform.validPatternValues = [\r\n 'none',\r\n 'solid',\r\n 'darkVertical',\r\n 'darkGray',\r\n 'mediumGray',\r\n 'lightGray',\r\n 'gray125',\r\n 'gray0625',\r\n 'darkHorizontal',\r\n 'darkVertical',\r\n 'darkDown',\r\n 'darkUp',\r\n 'darkGrid',\r\n 'darkTrellis',\r\n 'lightHorizontal',\r\n 'lightVertical',\r\n 'lightDown',\r\n 'lightUp',\r\n 'lightGrid',\r\n 'lightTrellis',\r\n 'lightGrid',\r\n].reduce((p, v) => {\r\n p[v] = true;\r\n return p;\r\n}, {});\r\n\r\nFillXform.StopXform = StopXform;\r\nFillXform.PatternFillXform = PatternFillXform;\r\nFillXform.GradientFillXform = GradientFillXform;\r\n\r\nmodule.exports = FillXform;\r\n","'use strict';\r\n\r\nconst ColorXform = require('./color-xform');\r\nconst BooleanXform = require('../simple/boolean-xform');\r\nconst IntegerXform = require('../simple/integer-xform');\r\nconst StringXform = require('../simple/string-xform');\r\nconst UnderlineXform = require('./underline-xform');\r\n\r\nconst _ = require('../../../utils/under-dash');\r\nconst BaseXform = require('../base-xform');\r\n\r\n// Font encapsulates translation from font model to xlsx\r\nclass FontXform extends BaseXform {\r\n constructor(options) {\r\n super();\r\n\r\n this.options = options || FontXform.OPTIONS;\r\n\r\n this.map = {\r\n b: {prop: 'bold', xform: new BooleanXform({tag: 'b', attr: 'val'})},\r\n i: {prop: 'italic', xform: new BooleanXform({tag: 'i', attr: 'val'})},\r\n u: {prop: 'underline', xform: new UnderlineXform()},\r\n charset: {prop: 'charset', xform: new IntegerXform({tag: 'charset', attr: 'val'})},\r\n color: {prop: 'color', xform: new ColorXform()},\r\n condense: {prop: 'condense', xform: new BooleanXform({tag: 'condense', attr: 'val'})},\r\n extend: {prop: 'extend', xform: new BooleanXform({tag: 'extend', attr: 'val'})},\r\n family: {prop: 'family', xform: new IntegerXform({tag: 'family', attr: 'val'})},\r\n outline: {prop: 'outline', xform: new BooleanXform({tag: 'outline', attr: 'val'})},\r\n vertAlign: {prop: 'vertAlign', xform: new StringXform({tag: 'vertAlign', attr: 'val'})},\r\n scheme: {prop: 'scheme', xform: new StringXform({tag: 'scheme', attr: 'val'})},\r\n shadow: {prop: 'shadow', xform: new BooleanXform({tag: 'shadow', attr: 'val'})},\r\n strike: {prop: 'strike', xform: new BooleanXform({tag: 'strike', attr: 'val'})},\r\n sz: {prop: 'size', xform: new IntegerXform({tag: 'sz', attr: 'val'})},\r\n };\r\n this.map[this.options.fontNameTag] = {\r\n prop: 'name',\r\n xform: new StringXform({tag: this.options.fontNameTag, attr: 'val'}),\r\n };\r\n }\r\n\r\n get tag() {\r\n return this.options.tagName;\r\n }\r\n\r\n render(xmlStream, model) {\r\n const {map} = this;\r\n\r\n xmlStream.openNode(this.options.tagName);\r\n _.each(this.map, (defn, tag) => {\r\n map[tag].xform.render(xmlStream, model[defn.prop]);\r\n });\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n if (this.map[node.name]) {\r\n this.parser = this.map[node.name].xform;\r\n return this.parser.parseOpen(node);\r\n }\r\n switch (node.name) {\r\n case this.options.tagName:\r\n this.model = {};\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser && !this.parser.parseClose(name)) {\r\n const item = this.map[name];\r\n if (this.parser.model) {\r\n this.model[item.prop] = this.parser.model;\r\n }\r\n this.parser = undefined;\r\n return true;\r\n }\r\n switch (name) {\r\n case this.options.tagName:\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nFontXform.OPTIONS = {\r\n tagName: 'font',\r\n fontNameTag: 'name',\r\n};\r\n\r\nmodule.exports = FontXform;\r\n","const _ = require('../../../utils/under-dash');\r\nconst defaultNumFormats = require('../../defaultnumformats');\r\n\r\nconst BaseXform = require('../base-xform');\r\n\r\nfunction hashDefaultFormats() {\r\n const hash = {};\r\n _.each(defaultNumFormats, (dnf, id) => {\r\n if (dnf.f) {\r\n hash[dnf.f] = parseInt(id, 10);\r\n }\r\n // at some point, add the other cultures here...\r\n });\r\n return hash;\r\n}\r\nconst defaultFmtHash = hashDefaultFormats();\r\n\r\n// NumFmt encapsulates translation between number format and xlsx\r\nclass NumFmtXform extends BaseXform {\r\n constructor(id, formatCode) {\r\n super();\r\n\r\n this.id = id;\r\n this.formatCode = formatCode;\r\n }\r\n\r\n get tag() {\r\n return 'numFmt';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode('numFmt', {numFmtId: model.id, formatCode: model.formatCode});\r\n }\r\n\r\n parseOpen(node) {\r\n switch (node.name) {\r\n case 'numFmt':\r\n this.model = {\r\n id: parseInt(node.attributes.numFmtId, 10),\r\n formatCode: node.attributes.formatCode.replace(/[\\\\](.)/g, '$1'),\r\n };\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nNumFmtXform.getDefaultFmtId = function getDefaultFmtId(formatCode) {\r\n return defaultFmtHash[formatCode];\r\n};\r\n\r\nNumFmtXform.getDefaultFmtCode = function getDefaultFmtCode(numFmtId) {\r\n return defaultNumFormats[numFmtId] && defaultNumFormats[numFmtId].f;\r\n};\r\n\r\nmodule.exports = NumFmtXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nconst validation = {\r\n boolean(value, dflt) {\r\n if (value === undefined) {\r\n return dflt;\r\n }\r\n return value;\r\n },\r\n};\r\n\r\n// Protection encapsulates translation from style.protection model to/from xlsx\r\nclass ProtectionXform extends BaseXform {\r\n get tag() {\r\n return 'protection';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.addRollback();\r\n xmlStream.openNode('protection');\r\n\r\n let isValid = false;\r\n function add(name, value) {\r\n if (value !== undefined) {\r\n xmlStream.addAttribute(name, value);\r\n isValid = true;\r\n }\r\n }\r\n add('locked', validation.boolean(model.locked, true) ? undefined : '0');\r\n add('hidden', validation.boolean(model.hidden, false) ? '1' : undefined);\r\n\r\n xmlStream.closeNode();\r\n\r\n if (isValid) {\r\n xmlStream.commit();\r\n } else {\r\n xmlStream.rollback();\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n const model = {\r\n locked: !(node.attributes.locked === '0'),\r\n hidden: node.attributes.hidden === '1',\r\n };\r\n\r\n // only want to record models that differ from defaults\r\n const isSignificant = !model.locked || model.hidden;\r\n\r\n this.model = isSignificant ? model : null;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = ProtectionXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nconst AlignmentXform = require('./alignment-xform');\r\nconst ProtectionXform = require('./protection-xform');\r\n\r\n// \r\n// Optional \r\n// Optional \r\n// \r\n\r\n// Style assists translation from style model to/from xlsx\r\nclass StyleXform extends BaseXform {\r\n constructor(options) {\r\n super();\r\n\r\n this.xfId = !!(options && options.xfId);\r\n this.map = {\r\n alignment: new AlignmentXform(),\r\n protection: new ProtectionXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'xf';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode('xf', {\r\n numFmtId: model.numFmtId || 0,\r\n fontId: model.fontId || 0,\r\n fillId: model.fillId || 0,\r\n borderId: model.borderId || 0,\r\n });\r\n if (this.xfId) {\r\n xmlStream.addAttribute('xfId', model.xfId || 0);\r\n }\r\n\r\n if (model.numFmtId) {\r\n xmlStream.addAttribute('applyNumberFormat', '1');\r\n }\r\n if (model.fontId) {\r\n xmlStream.addAttribute('applyFont', '1');\r\n }\r\n if (model.fillId) {\r\n xmlStream.addAttribute('applyFill', '1');\r\n }\r\n if (model.borderId) {\r\n xmlStream.addAttribute('applyBorder', '1');\r\n }\r\n if (model.alignment) {\r\n xmlStream.addAttribute('applyAlignment', '1');\r\n }\r\n if (model.protection) {\r\n xmlStream.addAttribute('applyProtection', '1');\r\n }\r\n\r\n /**\r\n * Rendering tags causes close of XML stream.\r\n * Therefore adding attributes must be done before rendering tags.\r\n */\r\n\r\n if (model.alignment) {\r\n this.map.alignment.render(xmlStream, model.alignment);\r\n }\r\n if (model.protection) {\r\n this.map.protection.render(xmlStream, model.protection);\r\n }\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n // used during sax parsing of xml to build font object\r\n switch (node.name) {\r\n case 'xf':\r\n this.model = {\r\n numFmtId: parseInt(node.attributes.numFmtId, 10),\r\n fontId: parseInt(node.attributes.fontId, 10),\r\n fillId: parseInt(node.attributes.fillId, 10),\r\n borderId: parseInt(node.attributes.borderId, 10),\r\n };\r\n if (this.xfId) {\r\n this.model.xfId = parseInt(node.attributes.xfId, 10);\r\n }\r\n return true;\r\n case 'alignment':\r\n this.parser = this.map.alignment;\r\n this.parser.parseOpen(node);\r\n return true;\r\n case 'protection':\r\n this.parser = this.map.protection;\r\n this.parser.parseOpen(node);\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n if (this.map.protection === this.parser) {\r\n this.model.protection = this.parser.model;\r\n } else {\r\n this.model.alignment = this.parser.model;\r\n }\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n return name !== 'xf';\r\n }\r\n}\r\n\r\nmodule.exports = StyleXform;\r\n","/* eslint-disable max-classes-per-file */\r\nconst Enums = require('../../../doc/enums');\r\nconst XmlStream = require('../../../utils/xml-stream');\r\n\r\nconst BaseXform = require('../base-xform');\r\nconst StaticXform = require('../static-xform');\r\nconst ListXform = require('../list-xform');\r\nconst FontXform = require('./font-xform');\r\nconst FillXform = require('./fill-xform');\r\nconst BorderXform = require('./border-xform');\r\nconst NumFmtXform = require('./numfmt-xform');\r\nconst StyleXform = require('./style-xform');\r\nconst DxfXform = require('./dxf-xform');\r\n\r\n// custom numfmt ids start here\r\nconst NUMFMT_BASE = 164;\r\n\r\n// =============================================================================\r\n// StylesXform is used to generate and parse the styles.xml file\r\n// it manages the collections of fonts, number formats, alignments, etc\r\nclass StylesXform extends BaseXform {\r\n constructor(initialise) {\r\n super();\r\n\r\n this.map = {\r\n numFmts: new ListXform({tag: 'numFmts', count: true, childXform: new NumFmtXform()}),\r\n fonts: new ListXform({\r\n tag: 'fonts',\r\n count: true,\r\n childXform: new FontXform(),\r\n $: {'x14ac:knownFonts': 1},\r\n }),\r\n fills: new ListXform({tag: 'fills', count: true, childXform: new FillXform()}),\r\n borders: new ListXform({tag: 'borders', count: true, childXform: new BorderXform()}),\r\n cellStyleXfs: new ListXform({tag: 'cellStyleXfs', count: true, childXform: new StyleXform()}),\r\n cellXfs: new ListXform({\r\n tag: 'cellXfs',\r\n count: true,\r\n childXform: new StyleXform({xfId: true}),\r\n }),\r\n dxfs: new ListXform({tag: 'dxfs', always: true, count: true, childXform: new DxfXform()}),\r\n\r\n // for style manager\r\n numFmt: new NumFmtXform(),\r\n font: new FontXform(),\r\n fill: new FillXform(),\r\n border: new BorderXform(),\r\n style: new StyleXform({xfId: true}),\r\n\r\n cellStyles: StylesXform.STATIC_XFORMS.cellStyles,\r\n tableStyles: StylesXform.STATIC_XFORMS.tableStyles,\r\n extLst: StylesXform.STATIC_XFORMS.extLst,\r\n };\r\n\r\n if (initialise) {\r\n // StylesXform also acts as style manager and is used to build up styles-model during worksheet processing\r\n this.init();\r\n }\r\n }\r\n\r\n initIndex() {\r\n this.index = {\r\n style: {},\r\n numFmt: {},\r\n numFmtNextId: 164, // start custom format ids here\r\n font: {},\r\n border: {},\r\n fill: {},\r\n };\r\n }\r\n\r\n init() {\r\n // Prepare for Style Manager role\r\n this.model = {\r\n styles: [],\r\n numFmts: [],\r\n fonts: [],\r\n borders: [],\r\n fills: [],\r\n dxfs: [],\r\n };\r\n\r\n this.initIndex();\r\n\r\n // default (zero) border\r\n this._addBorder({});\r\n\r\n // add default (all zero) style\r\n this._addStyle({numFmtId: 0, fontId: 0, fillId: 0, borderId: 0, xfId: 0});\r\n\r\n // add default fills\r\n this._addFill({type: 'pattern', pattern: 'none'});\r\n this._addFill({type: 'pattern', pattern: 'gray125'});\r\n\r\n this.weakMap = new WeakMap();\r\n }\r\n\r\n render(xmlStream, model) {\r\n model = model || this.model;\r\n //\r\n // \r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n\r\n xmlStream.openNode('styleSheet', StylesXform.STYLESHEET_ATTRIBUTES);\r\n\r\n if (this.index) {\r\n // model has been built by style manager role (contains xml)\r\n if (model.numFmts && model.numFmts.length) {\r\n xmlStream.openNode('numFmts', {count: model.numFmts.length});\r\n model.numFmts.forEach(numFmtXml => {\r\n xmlStream.writeXml(numFmtXml);\r\n });\r\n xmlStream.closeNode();\r\n }\r\n\r\n if (!model.fonts.length) {\r\n // default (zero) font\r\n this._addFont({size: 11, color: {theme: 1}, name: 'Calibri', family: 2, scheme: 'minor'});\r\n }\r\n xmlStream.openNode('fonts', {count: model.fonts.length, 'x14ac:knownFonts': 1});\r\n model.fonts.forEach(fontXml => {\r\n xmlStream.writeXml(fontXml);\r\n });\r\n xmlStream.closeNode();\r\n\r\n xmlStream.openNode('fills', {count: model.fills.length});\r\n model.fills.forEach(fillXml => {\r\n xmlStream.writeXml(fillXml);\r\n });\r\n xmlStream.closeNode();\r\n\r\n xmlStream.openNode('borders', {count: model.borders.length});\r\n model.borders.forEach(borderXml => {\r\n xmlStream.writeXml(borderXml);\r\n });\r\n xmlStream.closeNode();\r\n\r\n this.map.cellStyleXfs.render(xmlStream, [\r\n {numFmtId: 0, fontId: 0, fillId: 0, borderId: 0, xfId: 0},\r\n ]);\r\n\r\n xmlStream.openNode('cellXfs', {count: model.styles.length});\r\n model.styles.forEach(styleXml => {\r\n xmlStream.writeXml(styleXml);\r\n });\r\n xmlStream.closeNode();\r\n } else {\r\n // model is plain JSON and needs to be xformed\r\n this.map.numFmts.render(xmlStream, model.numFmts);\r\n this.map.fonts.render(xmlStream, model.fonts);\r\n this.map.fills.render(xmlStream, model.fills);\r\n this.map.borders.render(xmlStream, model.borders);\r\n this.map.cellStyleXfs.render(xmlStream, [\r\n {numFmtId: 0, fontId: 0, fillId: 0, borderId: 0, xfId: 0},\r\n ]);\r\n this.map.cellXfs.render(xmlStream, model.styles);\r\n }\r\n\r\n StylesXform.STATIC_XFORMS.cellStyles.render(xmlStream);\r\n\r\n this.map.dxfs.render(xmlStream, model.dxfs);\r\n\r\n StylesXform.STATIC_XFORMS.tableStyles.render(xmlStream);\r\n StylesXform.STATIC_XFORMS.extLst.render(xmlStream);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case 'styleSheet':\r\n this.initIndex();\r\n return true;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case 'styleSheet': {\r\n this.model = {};\r\n const add = (propName, xform) => {\r\n if (xform.model && xform.model.length) {\r\n this.model[propName] = xform.model;\r\n }\r\n };\r\n add('numFmts', this.map.numFmts);\r\n add('fonts', this.map.fonts);\r\n add('fills', this.map.fills);\r\n add('borders', this.map.borders);\r\n add('styles', this.map.cellXfs);\r\n add('dxfs', this.map.dxfs);\r\n\r\n // index numFmts\r\n this.index = {\r\n model: [],\r\n numFmt: [],\r\n };\r\n if (this.model.numFmts) {\r\n const numFmtIndex = this.index.numFmt;\r\n this.model.numFmts.forEach(numFmt => {\r\n numFmtIndex[numFmt.id] = numFmt.formatCode;\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n default:\r\n // not quite sure how we get here!\r\n return true;\r\n }\r\n }\r\n\r\n // add a cell's style model to the collection\r\n // each style property is processed and cross-referenced, etc.\r\n // the styleId is returned. Note: cellType is used when numFmt not defined\r\n addStyleModel(model, cellType) {\r\n if (!model) {\r\n return 0;\r\n }\r\n\r\n // if we have no default font, add it here now\r\n if (!this.model.fonts.length) {\r\n // default (zero) font\r\n this._addFont({size: 11, color: {theme: 1}, name: 'Calibri', family: 2, scheme: 'minor'});\r\n }\r\n\r\n // if we have seen this style object before, assume it has the same styleId\r\n if (this.weakMap && this.weakMap.has(model)) {\r\n return this.weakMap.get(model);\r\n }\r\n\r\n const style = {};\r\n cellType = cellType || Enums.ValueType.Number;\r\n\r\n if (model.numFmt) {\r\n style.numFmtId = this._addNumFmtStr(model.numFmt);\r\n } else {\r\n switch (cellType) {\r\n case Enums.ValueType.Number:\r\n style.numFmtId = this._addNumFmtStr('General');\r\n break;\r\n case Enums.ValueType.Date:\r\n style.numFmtId = this._addNumFmtStr('mm-dd-yy');\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n if (model.font) {\r\n style.fontId = this._addFont(model.font);\r\n }\r\n\r\n if (model.border) {\r\n style.borderId = this._addBorder(model.border);\r\n }\r\n\r\n if (model.fill) {\r\n style.fillId = this._addFill(model.fill);\r\n }\r\n\r\n if (model.alignment) {\r\n style.alignment = model.alignment;\r\n }\r\n\r\n if (model.protection) {\r\n style.protection = model.protection;\r\n }\r\n\r\n const styleId = this._addStyle(style);\r\n if (this.weakMap) {\r\n this.weakMap.set(model, styleId);\r\n }\r\n return styleId;\r\n }\r\n\r\n // given a styleId (i.e. s=\"n\"), get the cell's style model\r\n // objects are shared where possible.\r\n getStyleModel(id) {\r\n // if the style doesn't exist return null\r\n const style = this.model.styles[id];\r\n if (!style) return null;\r\n\r\n // have we built this model before?\r\n let model = this.index.model[id];\r\n if (model) return model;\r\n\r\n // build a new model\r\n model = this.index.model[id] = {};\r\n\r\n // -------------------------------------------------------\r\n // number format\r\n if (style.numFmtId) {\r\n const numFmt =\r\n this.index.numFmt[style.numFmtId] || NumFmtXform.getDefaultFmtCode(style.numFmtId);\r\n if (numFmt) {\r\n model.numFmt = numFmt;\r\n }\r\n }\r\n\r\n function addStyle(name, group, styleId) {\r\n if (styleId || styleId === 0) {\r\n const part = group[styleId];\r\n if (part) {\r\n model[name] = part;\r\n }\r\n }\r\n }\r\n\r\n addStyle('font', this.model.fonts, style.fontId);\r\n addStyle('border', this.model.borders, style.borderId);\r\n addStyle('fill', this.model.fills, style.fillId);\r\n\r\n // -------------------------------------------------------\r\n // alignment\r\n if (style.alignment) {\r\n model.alignment = style.alignment;\r\n }\r\n\r\n // -------------------------------------------------------\r\n // protection\r\n if (style.protection) {\r\n model.protection = style.protection;\r\n }\r\n\r\n return model;\r\n }\r\n\r\n addDxfStyle(style) {\r\n this.model.dxfs.push(style);\r\n return this.model.dxfs.length - 1;\r\n }\r\n\r\n getDxfStyle(id) {\r\n return this.model.dxfs[id];\r\n }\r\n\r\n // =========================================================================\r\n // Private Interface\r\n _addStyle(style) {\r\n const xml = this.map.style.toXml(style);\r\n let index = this.index.style[xml];\r\n if (index === undefined) {\r\n index = this.index.style[xml] = this.model.styles.length;\r\n this.model.styles.push(xml);\r\n }\r\n return index;\r\n }\r\n\r\n // =========================================================================\r\n // Number Formats\r\n _addNumFmtStr(formatCode) {\r\n // check if default format\r\n let index = NumFmtXform.getDefaultFmtId(formatCode);\r\n if (index !== undefined) return index;\r\n\r\n // check if already in\r\n index = this.index.numFmt[formatCode];\r\n if (index !== undefined) return index;\r\n\r\n index = this.index.numFmt[formatCode] = NUMFMT_BASE + this.model.numFmts.length;\r\n const xml = this.map.numFmt.toXml({id: index, formatCode});\r\n this.model.numFmts.push(xml);\r\n return index;\r\n }\r\n\r\n // =========================================================================\r\n // Fonts\r\n _addFont(font) {\r\n const xml = this.map.font.toXml(font);\r\n let index = this.index.font[xml];\r\n if (index === undefined) {\r\n index = this.index.font[xml] = this.model.fonts.length;\r\n this.model.fonts.push(xml);\r\n }\r\n return index;\r\n }\r\n\r\n // =========================================================================\r\n // Borders\r\n _addBorder(border) {\r\n const xml = this.map.border.toXml(border);\r\n let index = this.index.border[xml];\r\n if (index === undefined) {\r\n index = this.index.border[xml] = this.model.borders.length;\r\n this.model.borders.push(xml);\r\n }\r\n return index;\r\n }\r\n\r\n // =========================================================================\r\n // Fills\r\n _addFill(fill) {\r\n const xml = this.map.fill.toXml(fill);\r\n let index = this.index.fill[xml];\r\n if (index === undefined) {\r\n index = this.index.fill[xml] = this.model.fills.length;\r\n this.model.fills.push(xml);\r\n }\r\n return index;\r\n }\r\n\r\n // =========================================================================\r\n}\r\n\r\nStylesXform.STYLESHEET_ATTRIBUTES = {\r\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\r\n 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',\r\n 'mc:Ignorable': 'x14ac x16r2',\r\n 'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac',\r\n 'xmlns:x16r2': 'http://schemas.microsoft.com/office/spreadsheetml/2015/02/main',\r\n};\r\nStylesXform.STATIC_XFORMS = {\r\n cellStyles: new StaticXform({\r\n tag: 'cellStyles',\r\n $: {count: 1},\r\n c: [{tag: 'cellStyle', $: {name: 'Normal', xfId: 0, builtinId: 0}}],\r\n }),\r\n dxfs: new StaticXform({tag: 'dxfs', $: {count: 0}}),\r\n tableStyles: new StaticXform({\r\n tag: 'tableStyles',\r\n $: {count: 0, defaultTableStyle: 'TableStyleMedium2', defaultPivotStyle: 'PivotStyleLight16'},\r\n }),\r\n extLst: new StaticXform({\r\n tag: 'extLst',\r\n c: [\r\n {\r\n tag: 'ext',\r\n $: {\r\n uri: '{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}',\r\n 'xmlns:x14': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/main',\r\n },\r\n c: [{tag: 'x14:slicerStyles', $: {defaultSlicerStyle: 'SlicerStyleLight1'}}],\r\n },\r\n {\r\n tag: 'ext',\r\n $: {\r\n uri: '{9260A510-F301-46a8-8635-F512D64BE5F5}',\r\n 'xmlns:x15': 'http://schemas.microsoft.com/office/spreadsheetml/2010/11/main',\r\n },\r\n c: [{tag: 'x15:timelineStyles', $: {defaultTimelineStyle: 'TimeSlicerStyleLight1'}}],\r\n },\r\n ],\r\n }),\r\n};\r\n\r\n// the stylemanager mock acts like StyleManager except that it always returns 0 or {}\r\nclass StylesXformMock extends StylesXform {\r\n constructor() {\r\n super();\r\n\r\n this.model = {\r\n styles: [{numFmtId: 0, fontId: 0, fillId: 0, borderId: 0, xfId: 0}],\r\n numFmts: [],\r\n fonts: [{size: 11, color: {theme: 1}, name: 'Calibri', family: 2, scheme: 'minor'}],\r\n borders: [{}],\r\n fills: [\r\n {type: 'pattern', pattern: 'none'},\r\n {type: 'pattern', pattern: 'gray125'},\r\n ],\r\n };\r\n }\r\n\r\n // =========================================================================\r\n // Style Manager Interface\r\n\r\n // override normal behaviour - consume and dispose\r\n parseStream(stream) {\r\n stream.autodrain();\r\n return Promise.resolve();\r\n }\r\n\r\n // add a cell's style model to the collection\r\n // each style property is processed and cross-referenced, etc.\r\n // the styleId is returned. Note: cellType is used when numFmt not defined\r\n addStyleModel(model, cellType) {\r\n switch (cellType) {\r\n case Enums.ValueType.Date:\r\n return this.dateStyleId;\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n get dateStyleId() {\r\n if (!this._dateStyleId) {\r\n const dateStyle = {\r\n numFmtId: NumFmtXform.getDefaultFmtId('mm-dd-yy'),\r\n };\r\n this._dateStyleId = this.model.styles.length;\r\n this.model.styles.push(dateStyle);\r\n }\r\n return this._dateStyleId;\r\n }\r\n\r\n // given a styleId (i.e. s=\"n\"), get the cell's style model\r\n // objects are shared where possible.\r\n getStyleModel(/* id */) {\r\n return {};\r\n }\r\n}\r\n\r\nStylesXform.Mock = StylesXformMock;\r\n\r\nmodule.exports = StylesXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass UnderlineXform extends BaseXform {\r\n constructor(model) {\r\n super();\r\n\r\n this.model = model;\r\n }\r\n\r\n get tag() {\r\n return 'u';\r\n }\r\n\r\n render(xmlStream, model) {\r\n model = model || this.model;\r\n\r\n if (model === true) {\r\n xmlStream.leafNode('u');\r\n } else {\r\n const attr = UnderlineXform.Attributes[model];\r\n if (attr) {\r\n xmlStream.leafNode('u', attr);\r\n }\r\n }\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === 'u') {\r\n this.model = node.attributes.val || true;\r\n }\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nUnderlineXform.Attributes = {\r\n single: {},\r\n double: {val: 'double'},\r\n singleAccounting: {val: 'singleAccounting'},\r\n doubleAccounting: {val: 'doubleAccounting'},\r\n};\r\n\r\nmodule.exports = UnderlineXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nconst FilterColumnXform = require('./filter-column-xform');\r\n\r\nclass AutoFilterXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n filterColumn: new FilterColumnXform(),\r\n };\r\n }\r\n\r\n get tag() {\r\n return 'autoFilter';\r\n }\r\n\r\n prepare(model) {\r\n model.columns.forEach((column, index) => {\r\n this.map.filterColumn.prepare(column, {index});\r\n });\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openNode(this.tag, {ref: model.autoFilterRef});\r\n\r\n model.columns.forEach(column => {\r\n this.map.filterColumn.render(xmlStream, column);\r\n });\r\n\r\n xmlStream.closeNode();\r\n return true;\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n switch (node.name) {\r\n case this.tag:\r\n this.model = {\r\n autoFilterRef: node.attributes.ref,\r\n columns: [],\r\n };\r\n return true;\r\n\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parseOpen(node);\r\n return true;\r\n }\r\n throw new Error(`Unexpected xml node in parseOpen: ${JSON.stringify(node)}`);\r\n }\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.model.columns.push(this.parser.model);\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n return false;\r\n default:\r\n throw new Error(`Unexpected xml node in parseClose: ${name}`);\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = AutoFilterXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass FilterColumnXform extends BaseXform {\r\n get tag() {\r\n return 'filterColumn';\r\n }\r\n\r\n prepare(model, options) {\r\n model.colId = options.index.toString();\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, {\r\n colId: model.colId,\r\n hiddenButton: model.filterButton ? '0' : '1',\r\n });\r\n return true;\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === this.tag) {\r\n const {attributes} = node;\r\n this.model = {\r\n filterButton: attributes.hiddenButton === '0',\r\n };\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = FilterColumnXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass TableColumnXform extends BaseXform {\r\n get tag() {\r\n return 'tableColumn';\r\n }\r\n\r\n prepare(model, options) {\r\n model.id = options.index + 1;\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, {\r\n id: model.id.toString(),\r\n name: model.name,\r\n totalsRowLabel: model.totalsRowLabel,\r\n totalsRowFunction: model.totalsRowFunction,\r\n dxfId: model.dxfId,\r\n });\r\n return true;\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === this.tag) {\r\n const {attributes} = node;\r\n this.model = {\r\n name: attributes.name,\r\n totalsRowLabel: attributes.totalsRowLabel,\r\n totalsRowFunction: attributes.totalsRowFunction,\r\n dxfId: attributes.dxfId,\r\n };\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = TableColumnXform;\r\n","const BaseXform = require('../base-xform');\r\n\r\nclass TableStyleInfoXform extends BaseXform {\r\n get tag() {\r\n return 'tableStyleInfo';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.leafNode(this.tag, {\r\n name: model.theme ? model.theme : undefined,\r\n showFirstColumn: model.showFirstColumn ? '1' : '0',\r\n showLastColumn: model.showLastColumn ? '1' : '0',\r\n showRowStripes: model.showRowStripes ? '1' : '0',\r\n showColumnStripes: model.showColumnStripes ? '1' : '0',\r\n });\r\n return true;\r\n }\r\n\r\n parseOpen(node) {\r\n if (node.name === this.tag) {\r\n const {attributes} = node;\r\n this.model = {\r\n theme: attributes.name ? attributes.name : null,\r\n showFirstColumn: attributes.showFirstColumn === '1',\r\n showLastColumn: attributes.showLastColumn === '1',\r\n showRowStripes: attributes.showRowStripes === '1',\r\n showColumnStripes: attributes.showColumnStripes === '1',\r\n };\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseText() {}\r\n\r\n parseClose() {\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = TableStyleInfoXform;\r\n","const XmlStream = require('../../../utils/xml-stream');\r\n\r\nconst BaseXform = require('../base-xform');\r\nconst ListXform = require('../list-xform');\r\n\r\nconst AutoFilterXform = require('./auto-filter-xform');\r\nconst TableColumnXform = require('./table-column-xform');\r\nconst TableStyleInfoXform = require('./table-style-info-xform');\r\n\r\nclass TableXform extends BaseXform {\r\n constructor() {\r\n super();\r\n\r\n this.map = {\r\n autoFilter: new AutoFilterXform(),\r\n tableColumns: new ListXform({\r\n tag: 'tableColumns',\r\n count: true,\r\n empty: true,\r\n childXform: new TableColumnXform(),\r\n }),\r\n tableStyleInfo: new TableStyleInfoXform(),\r\n };\r\n }\r\n\r\n prepare(model, options) {\r\n this.map.autoFilter.prepare(model);\r\n this.map.tableColumns.prepare(model.columns, options);\r\n }\r\n\r\n get tag() {\r\n return 'table';\r\n }\r\n\r\n render(xmlStream, model) {\r\n xmlStream.openXml(XmlStream.StdDocAttributes);\r\n xmlStream.openNode(this.tag, {\r\n ...TableXform.TABLE_ATTRIBUTES,\r\n id: model.id,\r\n name: model.name,\r\n displayName: model.displayName || model.name,\r\n ref: model.tableRef,\r\n totalsRowCount: model.totalsRow ? '1' : undefined,\r\n totalsRowShown: model.totalsRow ? undefined : '1',\r\n headerRowCount: model.headerRow ? '1' : '0',\r\n });\r\n\r\n this.map.autoFilter.render(xmlStream, model);\r\n this.map.tableColumns.render(xmlStream, model.columns);\r\n this.map.tableStyleInfo.render(xmlStream, model.style);\r\n\r\n xmlStream.closeNode();\r\n }\r\n\r\n parseOpen(node) {\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n return true;\r\n }\r\n const {name, attributes} = node;\r\n switch (name) {\r\n case this.tag:\r\n this.reset();\r\n this.model = {\r\n name: attributes.name,\r\n displayName: attributes.displayName || attributes.name,\r\n tableRef: attributes.ref,\r\n totalsRow: attributes.totalsRowCount === '1',\r\n headerRow: attributes.headerRowCount === '1',\r\n };\r\n break;\r\n default:\r\n this.parser = this.map[node.name];\r\n if (this.parser) {\r\n this.parser.parseOpen(node);\r\n }\r\n break;\r\n }\r\n return true;\r\n }\r\n\r\n parseText(text) {\r\n if (this.parser) {\r\n this.parser.parseText(text);\r\n }\r\n }\r\n\r\n parseClose(name) {\r\n if (this.parser) {\r\n if (!this.parser.parseClose(name)) {\r\n this.parser = undefined;\r\n }\r\n return true;\r\n }\r\n switch (name) {\r\n case this.tag:\r\n this.model.columns = this.map.tableColumns.model;\r\n if (this.map.autoFilter.model) {\r\n this.model.autoFilterRef = this.map.autoFilter.model.autoFilterRef;\r\n this.map.autoFilter.model.columns.forEach((column, index) => {\r\n this.model.columns[index].filterButton = column.filterButton;\r\n });\r\n }\r\n this.model.style = this.map.tableStyleInfo.model;\r\n return false;\r\n default:\r\n // could be some unrecognised tags\r\n return true;\r\n }\r\n }\r\n\r\n reconcile(model, options) {\r\n // fetch the dfxs from styles\r\n model.columns.forEach(column => {\r\n if (column.dxfId !== undefined) {\r\n column.style = options.styles.getDxfStyle(column.dxfId);\r\n }\r\n });\r\n }\r\n}\r\n\r\nTableXform.TABLE_ATTRIBUTES = {\r\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\r\n 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',\r\n 'mc:Ignorable': 'xr xr3',\r\n 'xmlns:xr': 'http://schemas.microsoft.com/office/spreadsheetml/2014/revision',\r\n 'xmlns:xr3': 'http://schemas.microsoft.com/office/spreadsheetml/2016/revision3',\r\n // 'xr:uid': '{00000000-000C-0000-FFFF-FFFF00000000}',\r\n};\r\n\r\nmodule.exports = TableXform;\r\n","const fs = require('fs');\r\nconst JSZip = require('jszip');\r\nconst {PassThrough} = require('readable-stream');\r\nconst ZipStream = require('../utils/zip-stream');\r\nconst StreamBuf = require('../utils/stream-buf');\r\n\r\nconst utils = require('../utils/utils');\r\nconst XmlStream = require('../utils/xml-stream');\r\nconst {bufferToString} = require('../utils/browser-buffer-decode');\r\n\r\nconst StylesXform = require('./xform/style/styles-xform');\r\n\r\nconst CoreXform = require('./xform/core/core-xform');\r\nconst SharedStringsXform = require('./xform/strings/shared-strings-xform');\r\nconst RelationshipsXform = require('./xform/core/relationships-xform');\r\nconst ContentTypesXform = require('./xform/core/content-types-xform');\r\nconst AppXform = require('./xform/core/app-xform');\r\nconst WorkbookXform = require('./xform/book/workbook-xform');\r\nconst WorksheetXform = require('./xform/sheet/worksheet-xform');\r\nconst DrawingXform = require('./xform/drawing/drawing-xform');\r\nconst TableXform = require('./xform/table/table-xform');\r\nconst CommentsXform = require('./xform/comment/comments-xform');\r\nconst VmlNotesXform = require('./xform/comment/vml-notes-xform');\r\n\r\nconst theme1Xml = require('./xml/theme1.js');\r\n\r\nfunction fsReadFileAsync(filename, options) {\r\n return new Promise((resolve, reject) => {\r\n fs.readFile(filename, options, (error, data) => {\r\n if (error) {\r\n reject(error);\r\n } else {\r\n resolve(data);\r\n }\r\n });\r\n });\r\n}\r\n\r\nclass XLSX {\r\n constructor(workbook) {\r\n this.workbook = workbook;\r\n }\r\n\r\n // ===============================================================================\r\n // Workbook\r\n // =========================================================================\r\n // Read\r\n\r\n async readFile(filename, options) {\r\n if (!(await utils.fs.exists(filename))) {\r\n throw new Error(`File not found: ${filename}`);\r\n }\r\n const stream = fs.createReadStream(filename);\r\n try {\r\n const workbook = await this.read(stream, options);\r\n stream.close();\r\n return workbook;\r\n } catch (error) {\r\n stream.close();\r\n throw error;\r\n }\r\n }\r\n\r\n parseRels(stream) {\r\n const xform = new RelationshipsXform();\r\n return xform.parseStream(stream);\r\n }\r\n\r\n parseWorkbook(stream) {\r\n const xform = new WorkbookXform();\r\n return xform.parseStream(stream);\r\n }\r\n\r\n parseSharedStrings(stream) {\r\n const xform = new SharedStringsXform();\r\n return xform.parseStream(stream);\r\n }\r\n\r\n reconcile(model, options) {\r\n const workbookXform = new WorkbookXform();\r\n const worksheetXform = new WorksheetXform(options);\r\n const drawingXform = new DrawingXform();\r\n const tableXform = new TableXform();\r\n\r\n workbookXform.reconcile(model);\r\n\r\n // reconcile drawings with their rels\r\n const drawingOptions = {\r\n media: model.media,\r\n mediaIndex: model.mediaIndex,\r\n };\r\n Object.keys(model.drawings).forEach(name => {\r\n const drawing = model.drawings[name];\r\n const drawingRel = model.drawingRels[name];\r\n if (drawingRel) {\r\n drawingOptions.rels = drawingRel.reduce((o, rel) => {\r\n o[rel.Id] = rel;\r\n return o;\r\n }, {});\r\n (drawing.anchors || []).forEach(anchor => {\r\n const hyperlinks = anchor.picture && anchor.picture.hyperlinks;\r\n if (hyperlinks && drawingOptions.rels[hyperlinks.rId]) {\r\n hyperlinks.hyperlink = drawingOptions.rels[hyperlinks.rId].Target;\r\n delete hyperlinks.rId;\r\n }\r\n });\r\n drawingXform.reconcile(drawing, drawingOptions);\r\n }\r\n });\r\n\r\n // reconcile tables with the default styles\r\n const tableOptions = {\r\n styles: model.styles,\r\n };\r\n Object.values(model.tables).forEach(table => {\r\n tableXform.reconcile(table, tableOptions);\r\n });\r\n\r\n const sheetOptions = {\r\n styles: model.styles,\r\n sharedStrings: model.sharedStrings,\r\n media: model.media,\r\n mediaIndex: model.mediaIndex,\r\n date1904: model.properties && model.properties.date1904,\r\n drawings: model.drawings,\r\n comments: model.comments,\r\n tables: model.tables,\r\n vmlDrawings: model.vmlDrawings,\r\n };\r\n model.worksheets.forEach(worksheet => {\r\n worksheet.relationships = model.worksheetRels[worksheet.sheetNo];\r\n worksheetXform.reconcile(worksheet, sheetOptions);\r\n });\r\n\r\n // delete unnecessary parts\r\n delete model.worksheetHash;\r\n delete model.worksheetRels;\r\n delete model.globalRels;\r\n delete model.sharedStrings;\r\n delete model.workbookRels;\r\n delete model.sheetDefs;\r\n delete model.styles;\r\n delete model.mediaIndex;\r\n delete model.drawings;\r\n delete model.drawingRels;\r\n delete model.vmlDrawings;\r\n }\r\n\r\n async _processWorksheetEntry(stream, model, sheetNo, options, path) {\r\n const xform = new WorksheetXform(options);\r\n const worksheet = await xform.parseStream(stream);\r\n worksheet.sheetNo = sheetNo;\r\n model.worksheetHash[path] = worksheet;\r\n model.worksheets.push(worksheet);\r\n }\r\n\r\n async _processCommentEntry(stream, model, name) {\r\n const xform = new CommentsXform();\r\n const comments = await xform.parseStream(stream);\r\n model.comments[`../${name}.xml`] = comments;\r\n }\r\n\r\n async _processTableEntry(stream, model, name) {\r\n const xform = new TableXform();\r\n const table = await xform.parseStream(stream);\r\n model.tables[`../tables/${name}.xml`] = table;\r\n }\r\n\r\n async _processWorksheetRelsEntry(stream, model, sheetNo) {\r\n const xform = new RelationshipsXform();\r\n const relationships = await xform.parseStream(stream);\r\n model.worksheetRels[sheetNo] = relationships;\r\n }\r\n\r\n async _processMediaEntry(entry, model, filename) {\r\n const lastDot = filename.lastIndexOf('.');\r\n // if we can't determine extension, ignore it\r\n if (lastDot >= 1) {\r\n const extension = filename.substr(lastDot + 1);\r\n const name = filename.substr(0, lastDot);\r\n await new Promise((resolve, reject) => {\r\n const streamBuf = new StreamBuf();\r\n streamBuf.on('finish', () => {\r\n model.mediaIndex[filename] = model.media.length;\r\n model.mediaIndex[name] = model.media.length;\r\n const medium = {\r\n type: 'image',\r\n name,\r\n extension,\r\n buffer: streamBuf.toBuffer(),\r\n };\r\n model.media.push(medium);\r\n resolve();\r\n });\r\n entry.on('error', error => {\r\n reject(error);\r\n });\r\n entry.pipe(streamBuf);\r\n });\r\n }\r\n }\r\n\r\n async _processDrawingEntry(entry, model, name) {\r\n const xform = new DrawingXform();\r\n const drawing = await xform.parseStream(entry);\r\n model.drawings[name] = drawing;\r\n }\r\n\r\n async _processDrawingRelsEntry(entry, model, name) {\r\n const xform = new RelationshipsXform();\r\n const relationships = await xform.parseStream(entry);\r\n model.drawingRels[name] = relationships;\r\n }\r\n\r\n async _processVmlDrawingEntry(entry, model, name) {\r\n const xform = new VmlNotesXform();\r\n const vmlDrawing = await xform.parseStream(entry);\r\n model.vmlDrawings[`../drawings/${name}.vml`] = vmlDrawing;\r\n }\r\n\r\n async _processThemeEntry(entry, model, name) {\r\n await new Promise((resolve, reject) => {\r\n // TODO: stream entry into buffer and store the xml in the model.themes[]\r\n const stream = new StreamBuf();\r\n entry.on('error', reject);\r\n stream.on('error', reject);\r\n stream.on('finish', () => {\r\n model.themes[name] = stream.read().toString();\r\n resolve();\r\n });\r\n entry.pipe(stream);\r\n });\r\n }\r\n\r\n /**\r\n * @deprecated since version 4.0. You should use `#read` instead. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md\r\n */\r\n createInputStream() {\r\n throw new Error(\r\n '`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md'\r\n );\r\n }\r\n\r\n async read(stream, options) {\r\n // TODO: Remove once node v8 is deprecated\r\n // Detect and upgrade old streams\r\n if (!stream[Symbol.asyncIterator] && stream.pipe) {\r\n stream = stream.pipe(new PassThrough());\r\n }\r\n const chunks = [];\r\n for await (const chunk of stream) {\r\n chunks.push(chunk);\r\n }\r\n return this.load(Buffer.concat(chunks), options);\r\n }\r\n\r\n async load(data, options) {\r\n let buffer;\r\n if (options && options.base64) {\r\n buffer = Buffer.from(data.toString(), 'base64');\r\n } else {\r\n buffer = data;\r\n }\r\n\r\n const model = {\r\n worksheets: [],\r\n worksheetHash: {},\r\n worksheetRels: [],\r\n themes: {},\r\n media: [],\r\n mediaIndex: {},\r\n drawings: {},\r\n drawingRels: {},\r\n comments: {},\r\n tables: {},\r\n vmlDrawings: {},\r\n };\r\n\r\n const zip = await JSZip.loadAsync(buffer);\r\n for (const entry of Object.values(zip.files)) {\r\n /* eslint-disable no-await-in-loop */\r\n if (!entry.dir) {\r\n let entryName = entry.name;\r\n if (entryName[0] === '/') {\r\n entryName = entryName.substr(1);\r\n }\r\n let stream;\r\n if (entryName.match(/xl\\/media\\//) ||\r\n // themes are not parsed as stream\r\n entryName.match(/xl\\/theme\\/([a-zA-Z0-9]+)[.]xml/)) {\r\n stream = new PassThrough();\r\n stream.write(await entry.async('nodebuffer'));\r\n } else {\r\n // use object mode to avoid buffer-string convention\r\n stream = new PassThrough({\r\n writableObjectMode: true,\r\n readableObjectMode: true,\r\n });\r\n let content;\r\n // https://www.npmjs.com/package/process\r\n if (process.browser) {\r\n // running in browser, use TextDecoder if possible\r\n content = bufferToString(await entry.async('nodebuffer'));\r\n } else {\r\n // running in node.js\r\n content = await entry.async('string');\r\n }\r\n const chunkSize = 16 * 1024;\r\n for (let i = 0; i < content.length; i += chunkSize) {\r\n stream.write(content.substring(i, i + chunkSize));\r\n }\r\n }\r\n stream.end();\r\n switch (entryName) {\r\n case '_rels/.rels':\r\n model.globalRels = await this.parseRels(stream);\r\n break;\r\n\r\n case 'xl/workbook.xml': {\r\n const workbook = await this.parseWorkbook(stream);\r\n model.sheets = workbook.sheets;\r\n model.definedNames = workbook.definedNames;\r\n model.views = workbook.views;\r\n model.properties = workbook.properties;\r\n model.calcProperties = workbook.calcProperties;\r\n break;\r\n }\r\n\r\n case 'xl/_rels/workbook.xml.rels':\r\n model.workbookRels = await this.parseRels(stream);\r\n break;\r\n\r\n case 'xl/sharedStrings.xml':\r\n model.sharedStrings = new SharedStringsXform();\r\n await model.sharedStrings.parseStream(stream);\r\n break;\r\n\r\n case 'xl/styles.xml':\r\n model.styles = new StylesXform();\r\n await model.styles.parseStream(stream);\r\n break;\r\n\r\n case 'docProps/app.xml': {\r\n const appXform = new AppXform();\r\n const appProperties = await appXform.parseStream(stream);\r\n model.company = appProperties.company;\r\n model.manager = appProperties.manager;\r\n break;\r\n }\r\n\r\n case 'docProps/core.xml': {\r\n const coreXform = new CoreXform();\r\n const coreProperties = await coreXform.parseStream(stream);\r\n Object.assign(model, coreProperties);\r\n break;\r\n }\r\n\r\n default: {\r\n let match = entryName.match(/xl\\/worksheets\\/sheet(\\d+)[.]xml/);\r\n if (match) {\r\n await this._processWorksheetEntry(stream, model, match[1], options, entryName);\r\n break;\r\n }\r\n match = entryName.match(/xl\\/worksheets\\/_rels\\/sheet(\\d+)[.]xml.rels/);\r\n if (match) {\r\n await this._processWorksheetRelsEntry(stream, model, match[1]);\r\n break;\r\n }\r\n match = entryName.match(/xl\\/theme\\/([a-zA-Z0-9]+)[.]xml/);\r\n if (match) {\r\n await this._processThemeEntry(stream, model, match[1]);\r\n break;\r\n }\r\n match = entryName.match(/xl\\/media\\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/);\r\n if (match) {\r\n await this._processMediaEntry(stream, model, match[1]);\r\n break;\r\n }\r\n match = entryName.match(/xl\\/drawings\\/([a-zA-Z0-9]+)[.]xml/);\r\n if (match) {\r\n await this._processDrawingEntry(stream, model, match[1]);\r\n break;\r\n }\r\n match = entryName.match(/xl\\/(comments\\d+)[.]xml/);\r\n if (match) {\r\n await this._processCommentEntry(stream, model, match[1]);\r\n break;\r\n }\r\n match = entryName.match(/xl\\/tables\\/(table\\d+)[.]xml/);\r\n if (match) {\r\n await this._processTableEntry(stream, model, match[1]);\r\n break;\r\n }\r\n match = entryName.match(/xl\\/drawings\\/_rels\\/([a-zA-Z0-9]+)[.]xml[.]rels/);\r\n if (match) {\r\n await this._processDrawingRelsEntry(stream, model, match[1]);\r\n break;\r\n }\r\n match = entryName.match(/xl\\/drawings\\/(vmlDrawing\\d+)[.]vml/);\r\n if (match) {\r\n await this._processVmlDrawingEntry(stream, model, match[1]);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.reconcile(model, options);\r\n\r\n // apply model\r\n this.workbook.model = model;\r\n return this.workbook;\r\n }\r\n\r\n // =========================================================================\r\n // Write\r\n\r\n async addMedia(zip, model) {\r\n await Promise.all(\r\n model.media.map(async medium => {\r\n if (medium.type === 'image') {\r\n const filename = `xl/media/${medium.name}.${medium.extension}`;\r\n if (medium.filename) {\r\n const data = await fsReadFileAsync(medium.filename);\r\n return zip.append(data, {name: filename});\r\n }\r\n if (medium.buffer) {\r\n return zip.append(medium.buffer, {name: filename});\r\n }\r\n if (medium.base64) {\r\n const dataimg64 = medium.base64;\r\n const content = dataimg64.substring(dataimg64.indexOf(',') + 1);\r\n return zip.append(content, {name: filename, base64: true});\r\n }\r\n }\r\n throw new Error('Unsupported media');\r\n })\r\n );\r\n }\r\n\r\n addDrawings(zip, model) {\r\n const drawingXform = new DrawingXform();\r\n const relsXform = new RelationshipsXform();\r\n\r\n model.worksheets.forEach(worksheet => {\r\n const {drawing} = worksheet;\r\n if (drawing) {\r\n drawingXform.prepare(drawing, {});\r\n let xml = drawingXform.toXml(drawing);\r\n zip.append(xml, {name: `xl/drawings/${drawing.name}.xml`});\r\n\r\n xml = relsXform.toXml(drawing.rels);\r\n zip.append(xml, {name: `xl/drawings/_rels/${drawing.name}.xml.rels`});\r\n }\r\n });\r\n }\r\n\r\n addTables(zip, model) {\r\n const tableXform = new TableXform();\r\n\r\n model.worksheets.forEach(worksheet => {\r\n const {tables} = worksheet;\r\n tables.forEach(table => {\r\n tableXform.prepare(table, {});\r\n const tableXml = tableXform.toXml(table);\r\n zip.append(tableXml, {name: `xl/tables/${table.target}`});\r\n });\r\n });\r\n }\r\n\r\n async addContentTypes(zip, model) {\r\n const xform = new ContentTypesXform();\r\n const xml = xform.toXml(model);\r\n zip.append(xml, {name: '[Content_Types].xml'});\r\n }\r\n\r\n async addApp(zip, model) {\r\n const xform = new AppXform();\r\n const xml = xform.toXml(model);\r\n zip.append(xml, {name: 'docProps/app.xml'});\r\n }\r\n\r\n async addCore(zip, model) {\r\n const coreXform = new CoreXform();\r\n zip.append(coreXform.toXml(model), {name: 'docProps/core.xml'});\r\n }\r\n\r\n async addThemes(zip, model) {\r\n const themes = model.themes || {theme1: theme1Xml};\r\n Object.keys(themes).forEach(name => {\r\n const xml = themes[name];\r\n const path = `xl/theme/${name}.xml`;\r\n zip.append(xml, {name: path});\r\n });\r\n }\r\n\r\n async addOfficeRels(zip) {\r\n const xform = new RelationshipsXform();\r\n const xml = xform.toXml([\r\n {Id: 'rId1', Type: XLSX.RelType.OfficeDocument, Target: 'xl/workbook.xml'},\r\n {Id: 'rId2', Type: XLSX.RelType.CoreProperties, Target: 'docProps/core.xml'},\r\n {Id: 'rId3', Type: XLSX.RelType.ExtenderProperties, Target: 'docProps/app.xml'},\r\n ]);\r\n zip.append(xml, {name: '_rels/.rels'});\r\n }\r\n\r\n async addWorkbookRels(zip, model) {\r\n let count = 1;\r\n const relationships = [\r\n {Id: `rId${count++}`, Type: XLSX.RelType.Styles, Target: 'styles.xml'},\r\n {Id: `rId${count++}`, Type: XLSX.RelType.Theme, Target: 'theme/theme1.xml'},\r\n ];\r\n if (model.sharedStrings.count) {\r\n relationships.push({\r\n Id: `rId${count++}`,\r\n Type: XLSX.RelType.SharedStrings,\r\n Target: 'sharedStrings.xml',\r\n });\r\n }\r\n model.worksheets.forEach(worksheet => {\r\n worksheet.rId = `rId${count++}`;\r\n relationships.push({\r\n Id: worksheet.rId,\r\n Type: XLSX.RelType.Worksheet,\r\n Target: `worksheets/sheet${worksheet.id}.xml`,\r\n });\r\n });\r\n const xform = new RelationshipsXform();\r\n const xml = xform.toXml(relationships);\r\n zip.append(xml, {name: 'xl/_rels/workbook.xml.rels'});\r\n }\r\n\r\n async addSharedStrings(zip, model) {\r\n if (model.sharedStrings && model.sharedStrings.count) {\r\n zip.append(model.sharedStrings.xml, {name: 'xl/sharedStrings.xml'});\r\n }\r\n }\r\n\r\n async addStyles(zip, model) {\r\n const {xml} = model.styles;\r\n if (xml) {\r\n zip.append(xml, {name: 'xl/styles.xml'});\r\n }\r\n }\r\n\r\n async addWorkbook(zip, model) {\r\n const xform = new WorkbookXform();\r\n zip.append(xform.toXml(model), {name: 'xl/workbook.xml'});\r\n }\r\n\r\n async addWorksheets(zip, model) {\r\n // preparation phase\r\n const worksheetXform = new WorksheetXform();\r\n const relationshipsXform = new RelationshipsXform();\r\n const commentsXform = new CommentsXform();\r\n const vmlNotesXform = new VmlNotesXform();\r\n\r\n // write sheets\r\n model.worksheets.forEach(worksheet => {\r\n let xmlStream = new XmlStream();\r\n worksheetXform.render(xmlStream, worksheet);\r\n zip.append(xmlStream.xml, {name: `xl/worksheets/sheet${worksheet.id}.xml`});\r\n\r\n if (worksheet.rels && worksheet.rels.length) {\r\n xmlStream = new XmlStream();\r\n relationshipsXform.render(xmlStream, worksheet.rels);\r\n zip.append(xmlStream.xml, {name: `xl/worksheets/_rels/sheet${worksheet.id}.xml.rels`});\r\n }\r\n\r\n if (worksheet.comments.length > 0) {\r\n xmlStream = new XmlStream();\r\n commentsXform.render(xmlStream, worksheet);\r\n zip.append(xmlStream.xml, {name: `xl/comments${worksheet.id}.xml`});\r\n\r\n xmlStream = new XmlStream();\r\n vmlNotesXform.render(xmlStream, worksheet);\r\n zip.append(xmlStream.xml, {name: `xl/drawings/vmlDrawing${worksheet.id}.vml`});\r\n }\r\n });\r\n }\r\n\r\n _finalize(zip) {\r\n return new Promise((resolve, reject) => {\r\n zip.on('finish', () => {\r\n resolve(this);\r\n });\r\n zip.on('error', reject);\r\n zip.finalize();\r\n });\r\n }\r\n\r\n prepareModel(model, options) {\r\n // ensure following properties have sane values\r\n model.creator = model.creator || 'ExcelJS';\r\n model.lastModifiedBy = model.lastModifiedBy || 'ExcelJS';\r\n model.created = model.created || new Date();\r\n model.modified = model.modified || new Date();\r\n\r\n model.useSharedStrings =\r\n options.useSharedStrings !== undefined ? options.useSharedStrings : true;\r\n model.useStyles = options.useStyles !== undefined ? options.useStyles : true;\r\n\r\n // Manage the shared strings\r\n model.sharedStrings = new SharedStringsXform();\r\n\r\n // add a style manager to handle cell formats, fonts, etc.\r\n model.styles = model.useStyles ? new StylesXform(true) : new StylesXform.Mock();\r\n\r\n // prepare all of the things before the render\r\n const workbookXform = new WorkbookXform();\r\n const worksheetXform = new WorksheetXform();\r\n\r\n workbookXform.prepare(model);\r\n\r\n const worksheetOptions = {\r\n sharedStrings: model.sharedStrings,\r\n styles: model.styles,\r\n date1904: model.properties.date1904,\r\n drawingsCount: 0,\r\n media: model.media,\r\n };\r\n worksheetOptions.drawings = model.drawings = [];\r\n worksheetOptions.commentRefs = model.commentRefs = [];\r\n let tableCount = 0;\r\n model.tables = [];\r\n model.worksheets.forEach(worksheet => {\r\n // assign unique filenames to tables\r\n worksheet.tables.forEach(table => {\r\n tableCount++;\r\n table.target = `table${tableCount}.xml`;\r\n table.id = tableCount;\r\n model.tables.push(table);\r\n });\r\n\r\n worksheetXform.prepare(worksheet, worksheetOptions);\r\n });\r\n\r\n // TODO: workbook drawing list\r\n }\r\n\r\n async write(stream, options) {\r\n options = options || {};\r\n const {model} = this.workbook;\r\n const zip = new ZipStream.ZipWriter(options.zip);\r\n zip.pipe(stream);\r\n\r\n this.prepareModel(model, options);\r\n\r\n // render\r\n await this.addContentTypes(zip, model);\r\n await this.addOfficeRels(zip, model);\r\n await this.addWorkbookRels(zip, model);\r\n await this.addWorksheets(zip, model);\r\n await this.addSharedStrings(zip, model); // always after worksheets\r\n await this.addDrawings(zip, model);\r\n await this.addTables(zip, model);\r\n await Promise.all([this.addThemes(zip, model), this.addStyles(zip, model)]);\r\n await this.addMedia(zip, model);\r\n await Promise.all([this.addApp(zip, model), this.addCore(zip, model)]);\r\n await this.addWorkbook(zip, model);\r\n return this._finalize(zip);\r\n }\r\n\r\n writeFile(filename, options) {\r\n const stream = fs.createWriteStream(filename);\r\n\r\n return new Promise((resolve, reject) => {\r\n stream.on('finish', () => {\r\n resolve();\r\n });\r\n stream.on('error', error => {\r\n reject(error);\r\n });\r\n\r\n this.write(stream, options).then(() => {\r\n stream.end();\r\n });\r\n });\r\n }\r\n\r\n async writeBuffer(options) {\r\n const stream = new StreamBuf();\r\n await this.write(stream, options);\r\n return stream.read();\r\n }\r\n}\r\n\r\nXLSX.RelType = require('./rel-type');\r\n\r\nmodule.exports = XLSX;\r\n","/* eslint-disable */\r\nmodule.exports =\r\n '\\n ';\r\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CsvFormatterStream = void 0;\n\nvar stream_1 = require(\"stream\");\n\nvar formatter_1 = require(\"./formatter\");\n\nvar CsvFormatterStream = /*#__PURE__*/function (_stream_1$Transform) {\n _inherits(CsvFormatterStream, _stream_1$Transform);\n\n var _super = _createSuper(CsvFormatterStream);\n\n function CsvFormatterStream(formatterOptions) {\n var _this;\n\n _classCallCheck(this, CsvFormatterStream);\n\n _this = _super.call(this, {\n writableObjectMode: formatterOptions.objectMode\n });\n _this.hasWrittenBOM = false;\n _this.formatterOptions = formatterOptions;\n _this.rowFormatter = new formatter_1.RowFormatter(formatterOptions); // if writeBOM is false then set to true\n // if writeBOM is true then set to false by default so it is written out\n\n _this.hasWrittenBOM = !formatterOptions.writeBOM;\n return _this;\n }\n\n _createClass(CsvFormatterStream, [{\n key: \"transform\",\n value: function transform(transformFunction) {\n this.rowFormatter.rowTransform = transformFunction;\n return this;\n }\n }, {\n key: \"_transform\",\n value: function _transform(row, encoding, cb) {\n var _this2 = this;\n\n var cbCalled = false;\n\n try {\n if (!this.hasWrittenBOM) {\n this.push(this.formatterOptions.BOM);\n this.hasWrittenBOM = true;\n }\n\n this.rowFormatter.format(row, function (err, rows) {\n if (err) {\n cbCalled = true;\n return cb(err);\n }\n\n if (rows) {\n rows.forEach(function (r) {\n _this2.push(Buffer.from(r, 'utf8'));\n });\n }\n\n cbCalled = true;\n return cb();\n });\n } catch (e) {\n if (cbCalled) {\n throw e;\n }\n\n cb(e);\n }\n }\n }, {\n key: \"_flush\",\n value: function _flush(cb) {\n var _this3 = this;\n\n this.rowFormatter.finish(function (err, rows) {\n if (err) {\n return cb(err);\n }\n\n if (rows) {\n rows.forEach(function (r) {\n _this3.push(Buffer.from(r, 'utf8'));\n });\n }\n\n return cb();\n });\n }\n }]);\n\n return CsvFormatterStream;\n}(stream_1.Transform);\n\nexports.CsvFormatterStream = CsvFormatterStream;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Dc3ZGb3JtYXR0ZXJTdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBLFFBQUEsR0FBQSxPQUFBLENBQUEsUUFBQSxDQUFBOztBQUdBLElBQUEsV0FBQSxHQUFBLE9BQUEsQ0FBQSxhQUFBLENBQUE7O0lBRWEsa0I7Ozs7O0FBT1QsOEJBQW1CLGdCQUFuQixFQUEyRDtBQUFBOztBQUFBOztBQUN2RCw4QkFBTTtBQUFFLE1BQUEsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUM7QUFBdkMsS0FBTjtBQUhJLFVBQUEsYUFBQSxHQUFnQixLQUFoQjtBQUlKLFVBQUssZ0JBQUwsR0FBd0IsZ0JBQXhCO0FBQ0EsVUFBSyxZQUFMLEdBQW9CLElBQUksV0FBQSxDQUFBLFlBQUosQ0FBaUIsZ0JBQWpCLENBQXBCLENBSHVELENBSXZEO0FBQ0E7O0FBQ0EsVUFBSyxhQUFMLEdBQXFCLENBQUMsZ0JBQWdCLENBQUMsUUFBdkM7QUFOdUQ7QUFPMUQ7Ozs7OEJBRWdCLGlCLEVBQTZDO0FBQzFELFdBQUssWUFBTCxDQUFrQixZQUFsQixHQUFpQyxpQkFBakM7QUFDQSxhQUFPLElBQVA7QUFDSDs7OytCQUVpQixHLEVBQVEsUSxFQUFrQixFLEVBQXFCO0FBQUE7O0FBQzdELFVBQUksUUFBUSxHQUFHLEtBQWY7O0FBQ0EsVUFBSTtBQUNBLFlBQUksQ0FBQyxLQUFLLGFBQVYsRUFBeUI7QUFDckIsZUFBSyxJQUFMLENBQVUsS0FBSyxnQkFBTCxDQUFzQixHQUFoQztBQUNBLGVBQUssYUFBTCxHQUFxQixJQUFyQjtBQUNIOztBQUNELGFBQUssWUFBTCxDQUFrQixNQUFsQixDQUF5QixHQUF6QixFQUE4QixVQUFDLEdBQUQsRUFBTSxJQUFOLEVBQW9CO0FBQzlDLGNBQUksR0FBSixFQUFTO0FBQ0wsWUFBQSxRQUFRLEdBQUcsSUFBWDtBQUNBLG1CQUFPLEVBQUUsQ0FBQyxHQUFELENBQVQ7QUFDSDs7QUFDRCxjQUFJLElBQUosRUFBVTtBQUNOLFlBQUEsSUFBSSxDQUFDLE9BQUwsQ0FBYSxVQUFDLENBQUQsRUFBWTtBQUNyQixjQUFBLE1BQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLElBQVAsQ0FBWSxDQUFaLEVBQWUsTUFBZixDQUFWO0FBQ0gsYUFGRDtBQUdIOztBQUNELFVBQUEsUUFBUSxHQUFHLElBQVg7QUFDQSxpQkFBTyxFQUFFLEVBQVQ7QUFDSCxTQVpEO0FBYUgsT0FsQkQsQ0FrQkUsT0FBTyxDQUFQLEVBQVU7QUFDUixZQUFJLFFBQUosRUFBYztBQUNWLGdCQUFNLENBQU47QUFDSDs7QUFDRCxRQUFBLEVBQUUsQ0FBQyxDQUFELENBQUY7QUFDSDtBQUNKOzs7MkJBRWEsRSxFQUFxQjtBQUFBOztBQUMvQixXQUFLLFlBQUwsQ0FBa0IsTUFBbEIsQ0FBeUIsVUFBQyxHQUFELEVBQU0sSUFBTixFQUFvQjtBQUN6QyxZQUFJLEdBQUosRUFBUztBQUNMLGlCQUFPLEVBQUUsQ0FBQyxHQUFELENBQVQ7QUFDSDs7QUFDRCxZQUFJLElBQUosRUFBVTtBQUNOLFVBQUEsSUFBSSxDQUFDLE9BQUwsQ0FBYSxVQUFDLENBQUQsRUFBWTtBQUNyQixZQUFBLE1BQUksQ0FBQyxJQUFMLENBQVUsTUFBTSxDQUFDLElBQVAsQ0FBWSxDQUFaLEVBQWUsTUFBZixDQUFWO0FBQ0gsV0FGRDtBQUdIOztBQUNELGVBQU8sRUFBRSxFQUFUO0FBQ0gsT0FWRDtBQVdIOzs7O0VBN0RpRSxRQUFBLENBQUEsUzs7QUFBdEUsT0FBQSxDQUFBLGtCQUFBLEdBQUEsa0JBQUEiLCJzb3VyY2VSb290IjoiIn0=","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FormatterOptions = void 0;\n\nvar FormatterOptions = function FormatterOptions() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, FormatterOptions);\n\n var _a;\n\n this.objectMode = true;\n this.delimiter = ',';\n this.rowDelimiter = '\\n';\n this.quote = '\"';\n this.escape = this.quote;\n this.quoteColumns = false;\n this.quoteHeaders = this.quoteColumns;\n this.headers = null;\n this.includeEndRowDelimiter = false;\n this.writeBOM = false;\n this.BOM = \"\\uFEFF\";\n this.alwaysWriteHeaders = false;\n Object.assign(this, opts || {});\n\n if (typeof (opts === null || opts === void 0 ? void 0 : opts.quoteHeaders) === 'undefined') {\n this.quoteHeaders = this.quoteColumns;\n }\n\n if ((opts === null || opts === void 0 ? void 0 : opts.quote) === true) {\n this.quote = '\"';\n } else if ((opts === null || opts === void 0 ? void 0 : opts.quote) === false) {\n this.quote = '';\n }\n\n if (typeof (opts === null || opts === void 0 ? void 0 : opts.escape) !== 'string') {\n this.escape = this.quote;\n }\n\n this.shouldWriteHeaders = !!this.headers && ((_a = opts.writeHeaders) !== null && _a !== void 0 ? _a : true);\n this.headers = Array.isArray(this.headers) ? this.headers : null;\n this.escapedQuote = \"\".concat(this.escape).concat(this.quote);\n};\n\nexports.FormatterOptions = FormatterOptions;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Gb3JtYXR0ZXJPcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztJQXdCYSxnQixHQStCVCw0QkFBd0Q7QUFBQSxNQUFyQyxJQUFxQyx1RUFBRixFQUFFOztBQUFBOzs7O0FBOUJ4QyxPQUFBLFVBQUEsR0FBc0IsSUFBdEI7QUFFQSxPQUFBLFNBQUEsR0FBb0IsR0FBcEI7QUFFQSxPQUFBLFlBQUEsR0FBdUIsSUFBdkI7QUFFQSxPQUFBLEtBQUEsR0FBZ0IsR0FBaEI7QUFFQSxPQUFBLE1BQUEsR0FBaUIsS0FBSyxLQUF0QjtBQUVBLE9BQUEsWUFBQSxHQUE2QixLQUE3QjtBQUVBLE9BQUEsWUFBQSxHQUE2QixLQUFLLFlBQWxDO0FBRUEsT0FBQSxPQUFBLEdBQTJCLElBQTNCO0FBRUEsT0FBQSxzQkFBQSxHQUFrQyxLQUFsQztBQU1BLE9BQUEsUUFBQSxHQUFvQixLQUFwQjtBQUlBLE9BQUEsR0FBQSxHQUFjLFFBQWQ7QUFFQSxPQUFBLGtCQUFBLEdBQThCLEtBQTlCO0FBR1osRUFBQSxNQUFNLENBQUMsTUFBUCxDQUFjLElBQWQsRUFBb0IsSUFBSSxJQUFJLEVBQTVCOztBQUVBLE1BQUksUUFBTyxJQUFJLEtBQUEsSUFBSixJQUFBLElBQUksS0FBQSxLQUFBLENBQUosR0FBSSxLQUFBLENBQUosR0FBQSxJQUFJLENBQUUsWUFBYixNQUE4QixXQUFsQyxFQUErQztBQUMzQyxTQUFLLFlBQUwsR0FBb0IsS0FBSyxZQUF6QjtBQUNIOztBQUNELE1BQUksQ0FBQSxJQUFJLEtBQUEsSUFBSixJQUFBLElBQUksS0FBQSxLQUFBLENBQUosR0FBSSxLQUFBLENBQUosR0FBQSxJQUFJLENBQUUsS0FBTixNQUFnQixJQUFwQixFQUEwQjtBQUN0QixTQUFLLEtBQUwsR0FBYSxHQUFiO0FBQ0gsR0FGRCxNQUVPLElBQUksQ0FBQSxJQUFJLEtBQUEsSUFBSixJQUFBLElBQUksS0FBQSxLQUFBLENBQUosR0FBSSxLQUFBLENBQUosR0FBQSxJQUFJLENBQUUsS0FBTixNQUFnQixLQUFwQixFQUEyQjtBQUM5QixTQUFLLEtBQUwsR0FBYSxFQUFiO0FBQ0g7O0FBQ0QsTUFBSSxRQUFPLElBQUksS0FBQSxJQUFKLElBQUEsSUFBSSxLQUFBLEtBQUEsQ0FBSixHQUFJLEtBQUEsQ0FBSixHQUFBLElBQUksQ0FBRSxNQUFiLE1BQXdCLFFBQTVCLEVBQXNDO0FBQ2xDLFNBQUssTUFBTCxHQUFjLEtBQUssS0FBbkI7QUFDSDs7QUFDRCxPQUFLLGtCQUFMLEdBQTBCLENBQUMsQ0FBQyxLQUFLLE9BQVAsS0FBa0IsQ0FBQSxFQUFBLEdBQUMsSUFBSSxDQUFDLFlBQU4sTUFBa0IsSUFBbEIsSUFBa0IsRUFBQSxLQUFBLEtBQUEsQ0FBbEIsR0FBa0IsRUFBbEIsR0FBc0IsSUFBeEMsQ0FBMUI7QUFDQSxPQUFLLE9BQUwsR0FBZSxLQUFLLENBQUMsT0FBTixDQUFjLEtBQUssT0FBbkIsSUFBOEIsS0FBSyxPQUFuQyxHQUE2QyxJQUE1RDtBQUNBLE9BQUssWUFBTCxhQUF1QixLQUFLLE1BQTVCLFNBQXFDLEtBQUssS0FBMUM7QUFDSCxDOztBQWhETCxPQUFBLENBQUEsZ0JBQUEsR0FBQSxnQkFBQSIsInNvdXJjZVJvb3QiOiIifQ==","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FieldFormatter = void 0;\n\nvar lodash_isboolean_1 = __importDefault(require(\"lodash.isboolean\"));\n\nvar lodash_isnil_1 = __importDefault(require(\"lodash.isnil\"));\n\nvar lodash_escaperegexp_1 = __importDefault(require(\"lodash.escaperegexp\"));\n\nvar FieldFormatter = /*#__PURE__*/function () {\n function FieldFormatter(formatterOptions) {\n _classCallCheck(this, FieldFormatter);\n\n this._headers = null;\n this.formatterOptions = formatterOptions;\n\n if (formatterOptions.headers !== null) {\n this.headers = formatterOptions.headers;\n }\n\n this.REPLACE_REGEXP = new RegExp(formatterOptions.quote, 'g');\n var escapePattern = \"[\".concat(formatterOptions.delimiter).concat(lodash_escaperegexp_1.default(formatterOptions.rowDelimiter), \"|\\r|\\n']\");\n this.ESCAPE_REGEXP = new RegExp(escapePattern);\n }\n\n _createClass(FieldFormatter, [{\n key: \"shouldQuote\",\n value: function shouldQuote(fieldIndex, isHeader) {\n var quoteConfig = isHeader ? this.formatterOptions.quoteHeaders : this.formatterOptions.quoteColumns;\n\n if (lodash_isboolean_1.default(quoteConfig)) {\n return quoteConfig;\n }\n\n if (Array.isArray(quoteConfig)) {\n return quoteConfig[fieldIndex];\n }\n\n if (this._headers !== null) {\n return quoteConfig[this._headers[fieldIndex]];\n }\n\n return false;\n }\n }, {\n key: \"format\",\n value: function format(field, fieldIndex, isHeader) {\n var preparedField = \"\".concat(lodash_isnil_1.default(field) ? '' : field).replace(/\\0/g, '');\n var formatterOptions = this.formatterOptions;\n\n if (formatterOptions.quote !== '') {\n var shouldEscape = preparedField.indexOf(formatterOptions.quote) !== -1;\n\n if (shouldEscape) {\n return this.quoteField(preparedField.replace(this.REPLACE_REGEXP, formatterOptions.escapedQuote));\n }\n }\n\n var hasEscapeCharacters = preparedField.search(this.ESCAPE_REGEXP) !== -1;\n\n if (hasEscapeCharacters || this.shouldQuote(fieldIndex, isHeader)) {\n return this.quoteField(preparedField);\n }\n\n return preparedField;\n }\n }, {\n key: \"quoteField\",\n value: function quoteField(field) {\n var quote = this.formatterOptions.quote;\n return \"\".concat(quote).concat(field).concat(quote);\n }\n }, {\n key: \"headers\",\n set: function set(headers) {\n this._headers = headers;\n }\n }]);\n\n return FieldFormatter;\n}();\n\nexports.FieldFormatter = FieldFormatter;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0ZXIvRmllbGRGb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUEsa0JBQUEsR0FBQSxlQUFBLENBQUEsT0FBQSxDQUFBLGtCQUFBLENBQUEsQ0FBQTs7QUFDQSxJQUFBLGNBQUEsR0FBQSxlQUFBLENBQUEsT0FBQSxDQUFBLGNBQUEsQ0FBQSxDQUFBOztBQUNBLElBQUEscUJBQUEsR0FBQSxlQUFBLENBQUEsT0FBQSxDQUFBLHFCQUFBLENBQUEsQ0FBQTs7SUFJYSxjO0FBU1QsMEJBQW1CLGdCQUFuQixFQUEyRDtBQUFBOztBQU5uRCxTQUFBLFFBQUEsR0FBNEIsSUFBNUI7QUFPSixTQUFLLGdCQUFMLEdBQXdCLGdCQUF4Qjs7QUFDQSxRQUFJLGdCQUFnQixDQUFDLE9BQWpCLEtBQTZCLElBQWpDLEVBQXVDO0FBQ25DLFdBQUssT0FBTCxHQUFlLGdCQUFnQixDQUFDLE9BQWhDO0FBQ0g7O0FBQ0QsU0FBSyxjQUFMLEdBQXNCLElBQUksTUFBSixDQUFXLGdCQUFnQixDQUFDLEtBQTVCLEVBQW1DLEdBQW5DLENBQXRCO0FBQ0EsUUFBTSxhQUFhLGNBQU8sZ0JBQWdCLENBQUMsU0FBeEIsU0FBb0MscUJBQUEsQ0FBQSxPQUFBLENBQWEsZ0JBQWdCLENBQUMsWUFBOUIsQ0FBcEMsYUFBbkI7QUFDQSxTQUFLLGFBQUwsR0FBcUIsSUFBSSxNQUFKLENBQVcsYUFBWCxDQUFyQjtBQUNIOzs7O2dDQU1tQixVLEVBQW9CLFEsRUFBaUI7QUFDckQsVUFBTSxXQUFXLEdBQUcsUUFBUSxHQUFHLEtBQUssZ0JBQUwsQ0FBc0IsWUFBekIsR0FBd0MsS0FBSyxnQkFBTCxDQUFzQixZQUExRjs7QUFDQSxVQUFJLGtCQUFBLENBQUEsT0FBQSxDQUFVLFdBQVYsQ0FBSixFQUE0QjtBQUN4QixlQUFPLFdBQVA7QUFDSDs7QUFDRCxVQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsV0FBZCxDQUFKLEVBQWdDO0FBQzVCLGVBQU8sV0FBVyxDQUFDLFVBQUQsQ0FBbEI7QUFDSDs7QUFDRCxVQUFJLEtBQUssUUFBTCxLQUFrQixJQUF0QixFQUE0QjtBQUN4QixlQUFPLFdBQVcsQ0FBQyxLQUFLLFFBQUwsQ0FBYyxVQUFkLENBQUQsQ0FBbEI7QUFDSDs7QUFDRCxhQUFPLEtBQVA7QUFDSDs7OzJCQUVhLEssRUFBZSxVLEVBQW9CLFEsRUFBaUI7QUFDOUQsVUFBTSxhQUFhLEdBQUcsVUFBRyxjQUFBLENBQUEsT0FBQSxDQUFNLEtBQU4sSUFBZSxFQUFmLEdBQW9CLEtBQXZCLEVBQStCLE9BQS9CLENBQXVDLEtBQXZDLEVBQThDLEVBQTlDLENBQXRCO0FBRDhELFVBRXRELGdCQUZzRCxHQUVqQyxJQUZpQyxDQUV0RCxnQkFGc0Q7O0FBRzlELFVBQUksZ0JBQWdCLENBQUMsS0FBakIsS0FBMkIsRUFBL0IsRUFBbUM7QUFDL0IsWUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLE9BQWQsQ0FBc0IsZ0JBQWdCLENBQUMsS0FBdkMsTUFBa0QsQ0FBQyxDQUF4RTs7QUFDQSxZQUFJLFlBQUosRUFBa0I7QUFDZCxpQkFBTyxLQUFLLFVBQUwsQ0FBZ0IsYUFBYSxDQUFDLE9BQWQsQ0FBc0IsS0FBSyxjQUEzQixFQUEyQyxnQkFBZ0IsQ0FBQyxZQUE1RCxDQUFoQixDQUFQO0FBQ0g7QUFDSjs7QUFDRCxVQUFNLG1CQUFtQixHQUFHLGFBQWEsQ0FBQyxNQUFkLENBQXFCLEtBQUssYUFBMUIsTUFBNkMsQ0FBQyxDQUExRTs7QUFDQSxVQUFJLG1CQUFtQixJQUFJLEtBQUssV0FBTCxDQUFpQixVQUFqQixFQUE2QixRQUE3QixDQUEzQixFQUFtRTtBQUMvRCxlQUFPLEtBQUssVUFBTCxDQUFnQixhQUFoQixDQUFQO0FBQ0g7O0FBQ0QsYUFBTyxhQUFQO0FBQ0g7OzsrQkFFa0IsSyxFQUFhO0FBQUEsVUFDcEIsS0FEb0IsR0FDVixLQUFLLGdCQURLLENBQ3BCLEtBRG9CO0FBRTVCLHVCQUFVLEtBQVYsU0FBa0IsS0FBbEIsU0FBMEIsS0FBMUI7QUFDSDs7O3NCQXJDa0IsTyxFQUFpQjtBQUNoQyxXQUFLLFFBQUwsR0FBZ0IsT0FBaEI7QUFDSDs7Ozs7O0FBckJMLE9BQUEsQ0FBQSxjQUFBLEdBQUEsY0FBQSIsInNvdXJjZVJvb3QiOiIifQ==","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RowFormatter = void 0;\n\nvar lodash_isfunction_1 = __importDefault(require(\"lodash.isfunction\"));\n\nvar lodash_isequal_1 = __importDefault(require(\"lodash.isequal\"));\n\nvar FieldFormatter_1 = require(\"./FieldFormatter\");\n\nvar types_1 = require(\"../types\");\n\nvar RowFormatter = /*#__PURE__*/function () {\n function RowFormatter(formatterOptions) {\n _classCallCheck(this, RowFormatter);\n\n this.rowCount = 0;\n this.formatterOptions = formatterOptions;\n this.fieldFormatter = new FieldFormatter_1.FieldFormatter(formatterOptions);\n this.headers = formatterOptions.headers;\n this.shouldWriteHeaders = formatterOptions.shouldWriteHeaders;\n this.hasWrittenHeaders = false;\n\n if (this.headers !== null) {\n this.fieldFormatter.headers = this.headers;\n }\n\n if (formatterOptions.transform) {\n this.rowTransform = formatterOptions.transform;\n }\n }\n\n _createClass(RowFormatter, [{\n key: \"format\",\n value: function format(row, cb) {\n var _this = this;\n\n this.callTransformer(row, function (err, transformedRow) {\n if (err) {\n return cb(err);\n }\n\n if (!row) {\n return cb(null);\n }\n\n var rows = [];\n\n if (transformedRow) {\n var _this$checkHeaders = _this.checkHeaders(transformedRow),\n shouldFormatColumns = _this$checkHeaders.shouldFormatColumns,\n headers = _this$checkHeaders.headers;\n\n if (_this.shouldWriteHeaders && headers && !_this.hasWrittenHeaders) {\n rows.push(_this.formatColumns(headers, true));\n _this.hasWrittenHeaders = true;\n }\n\n if (shouldFormatColumns) {\n var columns = _this.gatherColumns(transformedRow);\n\n rows.push(_this.formatColumns(columns, false));\n }\n }\n\n return cb(null, rows);\n });\n }\n }, {\n key: \"finish\",\n value: function finish(cb) {\n var rows = []; // check if we should write headers and we didnt get any rows\n\n if (this.formatterOptions.alwaysWriteHeaders && this.rowCount === 0) {\n if (!this.headers) {\n return cb(new Error('`alwaysWriteHeaders` option is set to true but `headers` option not provided.'));\n }\n\n rows.push(this.formatColumns(this.headers, true));\n }\n\n if (this.formatterOptions.includeEndRowDelimiter) {\n rows.push(this.formatterOptions.rowDelimiter);\n }\n\n return cb(null, rows);\n } // check if we need to write header return true if we should also write a row\n // could be false if headers is true and the header row(first item) is passed in\n\n }, {\n key: \"checkHeaders\",\n value: function checkHeaders(row) {\n if (this.headers) {\n // either the headers were provided by the user or we have already gathered them.\n return {\n shouldFormatColumns: true,\n headers: this.headers\n };\n }\n\n var headers = RowFormatter.gatherHeaders(row);\n this.headers = headers;\n this.fieldFormatter.headers = headers;\n\n if (!this.shouldWriteHeaders) {\n // if we are not supposed to write the headers then\n // always format the columns\n return {\n shouldFormatColumns: true,\n headers: null\n };\n } // if the row is equal to headers dont format\n\n\n return {\n shouldFormatColumns: !lodash_isequal_1.default(headers, row),\n headers: headers\n };\n } // todo change this method to unknown[]\n\n }, {\n key: \"gatherColumns\",\n value: function gatherColumns(row) {\n if (this.headers === null) {\n throw new Error('Headers is currently null');\n }\n\n if (!Array.isArray(row)) {\n return this.headers.map(function (header) {\n return row[header];\n });\n }\n\n if (RowFormatter.isHashArray(row)) {\n return this.headers.map(function (header, i) {\n var col = row[i];\n\n if (col) {\n return col[1];\n }\n\n return '';\n });\n }\n\n return this.headers.map(function (header, i) {\n return row[i];\n });\n }\n }, {\n key: \"callTransformer\",\n value: function callTransformer(row, cb) {\n if (!this._rowTransform) {\n return cb(null, row);\n }\n\n return this._rowTransform(row, cb);\n }\n }, {\n key: \"formatColumns\",\n value: function formatColumns(columns, isHeadersRow) {\n var _this2 = this;\n\n var formattedCols = columns.map(function (field, i) {\n return _this2.fieldFormatter.format(field, i, isHeadersRow);\n }).join(this.formatterOptions.delimiter);\n var rowCount = this.rowCount;\n this.rowCount += 1;\n\n if (rowCount) {\n return [this.formatterOptions.rowDelimiter, formattedCols].join('');\n }\n\n return formattedCols;\n }\n }, {\n key: \"rowTransform\",\n set: function set(transformFunction) {\n if (!lodash_isfunction_1.default(transformFunction)) {\n throw new TypeError('The transform should be a function');\n }\n\n this._rowTransform = RowFormatter.createTransform(transformFunction);\n }\n }], [{\n key: \"isHashArray\",\n value: function isHashArray(row) {\n if (Array.isArray(row)) {\n return Array.isArray(row[0]) && row[0].length === 2;\n }\n\n return false;\n } // get headers from a row item\n\n }, {\n key: \"gatherHeaders\",\n value: function gatherHeaders(row) {\n if (RowFormatter.isHashArray(row)) {\n // lets assume a multi-dimesional array with item 0 being the header\n return row.map(function (it) {\n return it[0];\n });\n }\n\n if (Array.isArray(row)) {\n return row;\n }\n\n return Object.keys(row);\n }\n }, {\n key: \"createTransform\",\n value: function createTransform(transformFunction) {\n if (types_1.isSyncTransform(transformFunction)) {\n return function (row, cb) {\n var transformedRow = null;\n\n try {\n transformedRow = transformFunction(row);\n } catch (e) {\n return cb(e);\n }\n\n return cb(null, transformedRow);\n };\n }\n\n return function (row, cb) {\n transformFunction(row, cb);\n };\n }\n }]);\n\n return RowFormatter;\n}();\n\nexports.RowFormatter = RowFormatter;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0ZXIvUm93Rm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBLG1CQUFBLEdBQUEsZUFBQSxDQUFBLE9BQUEsQ0FBQSxtQkFBQSxDQUFBLENBQUE7O0FBQ0EsSUFBQSxnQkFBQSxHQUFBLGVBQUEsQ0FBQSxPQUFBLENBQUEsZ0JBQUEsQ0FBQSxDQUFBOztBQUVBLElBQUEsZ0JBQUEsR0FBQSxPQUFBLENBQUEsa0JBQUEsQ0FBQTs7QUFDQSxJQUFBLE9BQUEsR0FBQSxPQUFBLENBQUEsVUFBQSxDQUFBOztJQU1hLFk7QUFxRFQsd0JBQW1CLGdCQUFuQixFQUEyRDtBQUFBOztBQUZuRCxTQUFBLFFBQUEsR0FBVyxDQUFYO0FBR0osU0FBSyxnQkFBTCxHQUF3QixnQkFBeEI7QUFDQSxTQUFLLGNBQUwsR0FBc0IsSUFBSSxnQkFBQSxDQUFBLGNBQUosQ0FBbUIsZ0JBQW5CLENBQXRCO0FBRUEsU0FBSyxPQUFMLEdBQWUsZ0JBQWdCLENBQUMsT0FBaEM7QUFDQSxTQUFLLGtCQUFMLEdBQTBCLGdCQUFnQixDQUFDLGtCQUEzQztBQUNBLFNBQUssaUJBQUwsR0FBeUIsS0FBekI7O0FBQ0EsUUFBSSxLQUFLLE9BQUwsS0FBaUIsSUFBckIsRUFBMkI7QUFDdkIsV0FBSyxjQUFMLENBQW9CLE9BQXBCLEdBQThCLEtBQUssT0FBbkM7QUFDSDs7QUFDRCxRQUFJLGdCQUFnQixDQUFDLFNBQXJCLEVBQWdDO0FBQzVCLFdBQUssWUFBTCxHQUFvQixnQkFBZ0IsQ0FBQyxTQUFyQztBQUNIO0FBQ0o7Ozs7MkJBU2EsRyxFQUFRLEUsRUFBd0I7QUFBQTs7QUFDMUMsV0FBSyxlQUFMLENBQXFCLEdBQXJCLEVBQTBCLFVBQUMsR0FBRCxFQUFNLGNBQU4sRUFBb0M7QUFDMUQsWUFBSSxHQUFKLEVBQVM7QUFDTCxpQkFBTyxFQUFFLENBQUMsR0FBRCxDQUFUO0FBQ0g7O0FBQ0QsWUFB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar RowFormatter_1 = require(\"./RowFormatter\");\n\nObject.defineProperty(exports, \"RowFormatter\", {\n enumerable: true,\n get: function get() {\n return RowFormatter_1.RowFormatter;\n }\n});\n\nvar FieldFormatter_1 = require(\"./FieldFormatter\");\n\nObject.defineProperty(exports, \"FieldFormatter\", {\n enumerable: true,\n get: function get() {\n return FieldFormatter_1.FieldFormatter;\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQSxjQUFBLEdBQUEsT0FBQSxDQUFBLGdCQUFBLENBQUE7O0FBQVMsTUFBQSxDQUFBLGNBQUEsQ0FBQSxPQUFBLEVBQUEsY0FBQSxFQUFBO0FBQUEsRUFBQSxVQUFBLEVBQUEsSUFBQTtBQUFBLEVBQUEsR0FBQSxFQUFBLGVBQUE7QUFBQSxXQUFBLGNBQUEsQ0FBQSxZQUFBO0FBQVk7QUFBWixDQUFBOztBQUNULElBQUEsZ0JBQUEsR0FBQSxPQUFBLENBQUEsa0JBQUEsQ0FBQTs7QUFBUyxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxnQkFBQSxFQUFBO0FBQUEsRUFBQSxVQUFBLEVBQUEsSUFBQTtBQUFBLEVBQUEsR0FBQSxFQUFBLGVBQUE7QUFBQSxXQUFBLGdCQUFBLENBQUEsY0FBQTtBQUFjO0FBQWQsQ0FBQSIsInNvdXJjZVJvb3QiOiIifQ==","\"use strict\";\n\nvar __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = void 0 && (void 0).__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = void 0 && (void 0).__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nvar __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.writeToPath = exports.writeToString = exports.writeToBuffer = exports.writeToStream = exports.write = exports.format = void 0;\n\nvar util_1 = require(\"util\");\n\nvar stream_1 = require(\"stream\");\n\nvar fs = __importStar(require(\"fs\"));\n\nvar FormatterOptions_1 = require(\"./FormatterOptions\");\n\nvar CsvFormatterStream_1 = require(\"./CsvFormatterStream\");\n\n__exportStar(require(\"./types\"), exports);\n\nvar CsvFormatterStream_2 = require(\"./CsvFormatterStream\");\n\nObject.defineProperty(exports, \"CsvFormatterStream\", {\n enumerable: true,\n get: function get() {\n return CsvFormatterStream_2.CsvFormatterStream;\n }\n});\n\nvar FormatterOptions_2 = require(\"./FormatterOptions\");\n\nObject.defineProperty(exports, \"FormatterOptions\", {\n enumerable: true,\n get: function get() {\n return FormatterOptions_2.FormatterOptions;\n }\n});\n\nexports.format = function (options) {\n return new CsvFormatterStream_1.CsvFormatterStream(new FormatterOptions_1.FormatterOptions(options));\n};\n\nexports.write = function (rows, options) {\n var csvStream = exports.format(options);\n var promiseWrite = util_1.promisify(function (row, cb) {\n csvStream.write(row, undefined, cb);\n });\n rows.reduce(function (prev, row) {\n return prev.then(function () {\n return promiseWrite(row);\n });\n }, Promise.resolve()).then(function () {\n return csvStream.end();\n }).catch(function (err) {\n csvStream.emit('error', err);\n });\n return csvStream;\n};\n\nexports.writeToStream = function (ws, rows, options) {\n return exports.write(rows, options).pipe(ws);\n};\n\nexports.writeToBuffer = function (rows) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var buffers = [];\n var ws = new stream_1.Writable({\n write: function write(data, enc, writeCb) {\n buffers.push(data);\n writeCb();\n }\n });\n return new Promise(function (res, rej) {\n ws.on('error', rej).on('finish', function () {\n return res(Buffer.concat(buffers));\n });\n exports.write(rows, opts).pipe(ws);\n });\n};\n\nexports.writeToString = function (rows, options) {\n return exports.writeToBuffer(rows, options).then(function (buffer) {\n return buffer.toString();\n });\n};\n\nexports.writeToPath = function (path, rows, options) {\n var stream = fs.createWriteStream(path, {\n encoding: 'utf8'\n });\n return exports.write(rows, options).pipe(stream);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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","\"use strict\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isSyncTransform = void 0;\n\nexports.isSyncTransform = function (transform) {\n return transform.length === 1;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7QUFZYSxPQUFBLENBQUEsZUFBQSxHQUFrQixVQUMzQixTQUQyQjtBQUFBLFNBRVcsU0FBUyxDQUFDLE1BQVYsS0FBcUIsQ0FGaEM7QUFBQSxDQUFsQiIsInNvdXJjZVJvb3QiOiIifQ==","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CsvParserStream = void 0;\n\nvar string_decoder_1 = require(\"string_decoder\");\n\nvar stream_1 = require(\"stream\");\n\nvar transforms_1 = require(\"./transforms\");\n\nvar parser_1 = require(\"./parser\");\n\nvar CsvParserStream = /*#__PURE__*/function (_stream_1$Transform) {\n _inherits(CsvParserStream, _stream_1$Transform);\n\n var _super = _createSuper(CsvParserStream);\n\n function CsvParserStream(parserOptions) {\n var _this;\n\n _classCallCheck(this, CsvParserStream);\n\n _this = _super.call(this, {\n objectMode: parserOptions.objectMode\n });\n _this.lines = '';\n _this.rowCount = 0;\n _this.parsedRowCount = 0;\n _this.parsedLineCount = 0;\n _this.endEmitted = false;\n _this.headersEmitted = false;\n _this.parserOptions = parserOptions;\n _this.parser = new parser_1.Parser(parserOptions);\n _this.headerTransformer = new transforms_1.HeaderTransformer(parserOptions);\n _this.decoder = new string_decoder_1.StringDecoder(parserOptions.encoding);\n _this.rowTransformerValidator = new transforms_1.RowTransformerValidator();\n return _this;\n }\n\n _createClass(CsvParserStream, [{\n key: \"transform\",\n value: function transform(transformFunction) {\n this.rowTransformerValidator.rowTransform = transformFunction;\n return this;\n }\n }, {\n key: \"validate\",\n value: function validate(validateFunction) {\n this.rowTransformerValidator.rowValidator = validateFunction;\n return this;\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n }, {\n key: \"emit\",\n value: function emit(event) {\n var _get2;\n\n if (event === 'end') {\n if (!this.endEmitted) {\n this.endEmitted = true;\n\n _get(_getPrototypeOf(CsvParserStream.prototype), \"emit\", this).call(this, 'end', this.rowCount);\n }\n\n return false;\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n return (_get2 = _get(_getPrototypeOf(CsvParserStream.prototype), \"emit\", this)).call.apply(_get2, [this, event].concat(rest));\n }\n }, {\n key: \"_transform\",\n value: function _transform(data, encoding, done) {\n // if we have hit our maxRows parsing limit then skip parsing\n if (this.hasHitRowLimit) {\n return done();\n }\n\n try {\n var lines = this.lines;\n var newLine = lines + this.decoder.write(data);\n var rows = this.parse(newLine, true);\n return this.processRows(rows, done);\n } catch (e) {\n return done(e);\n }\n }\n }, {\n key: \"_flush\",\n value: function _flush(done) {\n // if we have hit our maxRows parsing limit then skip parsing\n if (this.hasHitRowLimit) {\n return done();\n }\n\n try {\n var newLine = this.lines + this.decoder.end();\n var rows = this.parse(newLine, false);\n return this.processRows(rows, done);\n } catch (e) {\n return done(e);\n }\n }\n }, {\n key: \"parse\",\n value: function parse(data, hasMoreData) {\n if (!data) {\n return [];\n }\n\n var _this$parser$parse = this.parser.parse(data, hasMoreData),\n line = _this$parser$parse.line,\n rows = _this$parser$parse.rows;\n\n this.lines = line;\n return rows;\n }\n }, {\n key: \"processRows\",\n value: function processRows(rows, cb) {\n var _this2 = this;\n\n var rowsLength = rows.length;\n\n var iterate = function iterate(i) {\n var callNext = function callNext(err) {\n if (err) {\n return cb(err);\n }\n\n if (i % 100 === 0) {\n // incase the transform are sync insert a next tick to prevent stack overflow\n setImmediate(function () {\n return iterate(i + 1);\n });\n return undefined;\n }\n\n return iterate(i + 1);\n };\n\n _this2.checkAndEmitHeaders(); // if we have emitted all rows or we have hit the maxRows limit option\n // then end\n\n\n if (i >= rowsLength || _this2.hasHitRowLimit) {\n return cb();\n }\n\n _this2.parsedLineCount += 1;\n\n if (_this2.shouldSkipLine) {\n return callNext();\n }\n\n var row = rows[i];\n _this2.rowCount += 1;\n _this2.parsedRowCount += 1;\n var nextRowCount = _this2.rowCount;\n return _this2.transformRow(row, function (err, transformResult) {\n if (err) {\n _this2.rowCount -= 1;\n return callNext(err);\n }\n\n if (!transformResult) {\n return callNext(new Error('expected transform result'));\n }\n\n if (!transformResult.isValid) {\n _this2.emit('data-invalid', transformResult.row, nextRowCount, transformResult.reason);\n } else if (transformResult.row) {\n return _this2.pushRow(transformResult.row, callNext);\n }\n\n return callNext();\n });\n };\n\n iterate(0);\n }\n }, {\n key: \"transformRow\",\n value: function transformRow(parsedRow, cb) {\n var _this3 = this;\n\n try {\n this.headerTransformer.transform(parsedRow, function (err, withHeaders) {\n if (err) {\n return cb(err);\n }\n\n if (!withHeaders) {\n return cb(new Error('Expected result from header transform'));\n }\n\n if (!withHeaders.isValid) {\n if (_this3.shouldEmitRows) {\n return cb(null, {\n isValid: false,\n row: parsedRow\n });\n } // skipped because of skipRows option remove from total row count\n\n\n return _this3.skipRow(cb);\n }\n\n if (withHeaders.row) {\n if (_this3.shouldEmitRows) {\n return _this3.rowTransformerValidator.transformAndValidate(withHeaders.row, cb);\n } // skipped because of skipRows option remove from total row count\n\n\n return _this3.skipRow(cb);\n } // this is a header row dont include in the rowCount or parsedRowCount\n\n\n _this3.rowCount -= 1;\n _this3.parsedRowCount -= 1;\n return cb(null, {\n row: null,\n isValid: true\n });\n });\n } catch (e) {\n cb(e);\n }\n }\n }, {\n key: \"checkAndEmitHeaders\",\n value: function checkAndEmitHeaders() {\n if (!this.headersEmitted && this.headerTransformer.headers) {\n this.headersEmitted = true;\n this.emit('headers', this.headerTransformer.headers);\n }\n }\n }, {\n key: \"skipRow\",\n value: function skipRow(cb) {\n // skipped because of skipRows option remove from total row count\n this.rowCount -= 1;\n return cb(null, {\n row: null,\n isValid: true\n });\n }\n }, {\n key: \"pushRow\",\n value: function pushRow(row, cb) {\n try {\n if (!this.parserOptions.objectMode) {\n this.push(JSON.stringify(row));\n } else {\n this.push(row);\n }\n\n cb();\n } catch (e) {\n cb(e);\n }\n }\n }, {\n key: \"hasHitRowLimit\",\n get: function get() {\n return this.parserOptions.limitRows && this.rowCount >= this.parserOptions.maxRows;\n }\n }, {\n key: \"shouldEmitRows\",\n get: function get() {\n return this.parsedRowCount > this.parserOptions.skipRows;\n }\n }, {\n key: \"shouldSkipLine\",\n get: function get() {\n return this.parsedLineCount <= this.parserOptions.skipLines;\n }\n }]);\n\n return CsvParserStream;\n}(stream_1.Transform);\n\nexports.CsvParserStream = CsvParserStream;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Dc3ZQYXJzZXJTdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQSxnQkFBQSxHQUFBLE9BQUEsQ0FBQSxnQkFBQSxDQUFBOztBQUNBLElBQUEsUUFBQSxHQUFBLE9BQUEsQ0FBQSxRQUFBLENBQUE7O0FBRUEsSUFBQSxZQUFBLEdBQUEsT0FBQSxDQUFBLGNBQUEsQ0FBQTs7QUFDQSxJQUFBLFFBQUEsR0FBQSxPQUFBLENBQUEsVUFBQSxDQUFBOztJQUdhLGU7Ozs7O0FBdUJULDJCQUFtQixhQUFuQixFQUErQztBQUFBOztBQUFBOztBQUMzQyw4QkFBTTtBQUFFLE1BQUEsVUFBVSxFQUFFLGFBQWEsQ0FBQztBQUE1QixLQUFOO0FBYkksVUFBQSxLQUFBLEdBQVEsRUFBUjtBQUVBLFVBQUEsUUFBQSxHQUFXLENBQVg7QUFFQSxVQUFBLGNBQUEsR0FBaUIsQ0FBakI7QUFFQSxVQUFBLGVBQUEsR0FBa0IsQ0FBbEI7QUFFQSxVQUFBLFVBQUEsR0FBYSxLQUFiO0FBRUEsVUFBQSxjQUFBLEdBQWlCLEtBQWpCO0FBSUosVUFBSyxhQUFMLEdBQXFCLGFBQXJCO0FBQ0EsVUFBSyxNQUFMLEdBQWMsSUFBSSxRQUFBLENBQUEsTUFBSixDQUFXLGFBQVgsQ0FBZDtBQUNBLFVBQUssaUJBQUwsR0FBeUIsSUFBSSxZQUFBLENBQUEsaUJBQUosQ0FBc0IsYUFBdEIsQ0FBekI7QUFDQSxVQUFLLE9BQUwsR0FBZSxJQUFJLGdCQUFBLENBQUEsYUFBSixDQUFrQixhQUFhLENBQUMsUUFBaEMsQ0FBZjtBQUNBLFVBQUssdUJBQUwsR0FBK0IsSUFBSSxZQUFBLENBQUEsdUJBQUosRUFBL0I7QUFOMkM7QUFPOUM7Ozs7OEJBY2dCLGlCLEVBQTZDO0FBQzFELFdBQUssdUJBQUwsQ0FBNkIsWUFBN0IsR0FBNEMsaUJBQTVDO0FBQ0EsYUFBTyxJQUFQO0FBQ0g7Ozs2QkFFZSxnQixF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","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ParserOptions = void 0;\n\nvar lodash_escaperegexp_1 = __importDefault(require(\"lodash.escaperegexp\"));\n\nvar lodash_isnil_1 = __importDefault(require(\"lodash.isnil\"));\n\nvar ParserOptions = function ParserOptions(opts) {\n _classCallCheck(this, ParserOptions);\n\n var _a;\n\n this.objectMode = true;\n this.delimiter = ',';\n this.ignoreEmpty = false;\n this.quote = '\"';\n this.escape = null;\n this.escapeChar = this.quote;\n this.comment = null;\n this.supportsComments = false;\n this.ltrim = false;\n this.rtrim = false;\n this.trim = false;\n this.headers = null;\n this.renameHeaders = false;\n this.strictColumnHandling = false;\n this.discardUnmappedColumns = false;\n this.carriageReturn = '\\r';\n this.encoding = 'utf8';\n this.limitRows = false;\n this.maxRows = 0;\n this.skipLines = 0;\n this.skipRows = 0;\n Object.assign(this, opts || {});\n\n if (this.delimiter.length > 1) {\n throw new Error('delimiter option must be one character long');\n }\n\n this.escapedDelimiter = lodash_escaperegexp_1.default(this.delimiter);\n this.escapeChar = (_a = this.escape) !== null && _a !== void 0 ? _a : this.quote;\n this.supportsComments = !lodash_isnil_1.default(this.comment);\n this.NEXT_TOKEN_REGEXP = new RegExp(\"([^\\\\s]|\\\\r\\\\n|\\\\n|\\\\r|\".concat(this.escapedDelimiter, \")\"));\n\n if (this.maxRows > 0) {\n this.limitRows = true;\n }\n};\n\nexports.ParserOptions = ParserOptions;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9QYXJzZXJPcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUEscUJBQUEsR0FBQSxlQUFBLENBQUEsT0FBQSxDQUFBLHFCQUFBLENBQUEsQ0FBQTs7QUFDQSxJQUFBLGNBQUEsR0FBQSxlQUFBLENBQUEsT0FBQSxDQUFBLGNBQUEsQ0FBQSxDQUFBOztJQXVCYSxhLEdBK0NULHVCQUFtQixJQUFuQixFQUEyQztBQUFBOzs7O0FBNUMzQixPQUFBLFVBQUEsR0FBc0IsSUFBdEI7QUFFQSxPQUFBLFNBQUEsR0FBb0IsR0FBcEI7QUFFQSxPQUFBLFdBQUEsR0FBdUIsS0FBdkI7QUFFQSxPQUFBLEtBQUEsR0FBdUIsR0FBdkI7QUFFQSxPQUFBLE1BQUEsR0FBd0IsSUFBeEI7QUFFQSxPQUFBLFVBQUEsR0FBNEIsS0FBSyxLQUFqQztBQUVBLE9BQUEsT0FBQSxHQUF5QixJQUF6QjtBQUVBLE9BQUEsZ0JBQUEsR0FBNEIsS0FBNUI7QUFFQSxPQUFBLEtBQUEsR0FBaUIsS0FBakI7QUFFQSxPQUFBLEtBQUEsR0FBaUIsS0FBakI7QUFFQSxPQUFBLElBQUEsR0FBZ0IsS0FBaEI7QUFFQSxPQUFBLE9BQUEsR0FBa0UsSUFBbEU7QUFFQSxPQUFBLGFBQUEsR0FBeUIsS0FBekI7QUFFQSxPQUFBLG9CQUFBLEdBQWdDLEtBQWhDO0FBRUEsT0FBQSxzQkFBQSxHQUFrQyxLQUFsQztBQUVBLE9BQUEsY0FBQSxHQUF5QixJQUF6QjtBQUlBLE9BQUEsUUFBQSxHQUEyQixNQUEzQjtBQUVBLE9BQUEsU0FBQSxHQUFxQixLQUFyQjtBQUVBLE9BQUEsT0FBQSxHQUFrQixDQUFsQjtBQUVBLE9BQUEsU0FBQSxHQUFvQixDQUFwQjtBQUVBLE9BQUEsUUFBQSxHQUFtQixDQUFuQjtBQUdaLEVBQUEsTUFBTSxDQUFDLE1BQVAsQ0FBYyxJQUFkLEVBQW9CLElBQUksSUFBSSxFQUE1Qjs7QUFDQSxNQUFJLEtBQUssU0FBTCxDQUFlLE1BQWYsR0FBd0IsQ0FBNUIsRUFBK0I7QUFDM0IsVUFBTSxJQUFJLEtBQUosQ0FBVSw2Q0FBVixDQUFOO0FBQ0g7O0FBQ0QsT0FBSyxnQkFBTCxHQUF3QixxQkFBQSxDQUFBLE9BQUEsQ0FBYSxLQUFLLFNBQWxCLENBQXhCO0FBQ0EsT0FBSyxVQUFMLEdBQWUsQ0FBQSxFQUFBLEdBQUcsS0FBSyxNQUFSLE1BQWMsSUFBZCxJQUFjLEVBQUEsS0FBQSxLQUFBLENBQWQsR0FBYyxFQUFkLEdBQWtCLEtBQUssS0FBdEM7QUFDQSxPQUFLLGdCQUFMLEdBQXdCLENBQUMsY0FBQSxDQUFBLE9BQUEsQ0FBTSxLQUFLLE9BQVgsQ0FBekI7QUFDQSxPQUFLLGlCQUFMLEdBQXlCLElBQUksTUFBSixrQ0FBcUMsS0FBSyxnQkFBMUMsT0FBekI7O0FBRUEsTUFBSSxLQUFLLE9BQUwsR0FBZSxDQUFuQixFQUFzQjtBQUNsQixTQUFLLFNBQUwsR0FBaUIsSUFBakI7QUFDSDtBQUNKLEM7O0FBNURMLE9BQUEsQ0FBQSxhQUFBLEdBQUEsYUFBQSIsInNvdXJjZVJvb3QiOiIifQ==","\"use strict\";\n\nvar __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = void 0 && (void 0).__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = void 0 && (void 0).__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nvar __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseString = exports.parseFile = exports.parseStream = exports.parse = void 0;\n\nvar fs = __importStar(require(\"fs\"));\n\nvar stream_1 = require(\"stream\");\n\nvar ParserOptions_1 = require(\"./ParserOptions\");\n\nvar CsvParserStream_1 = require(\"./CsvParserStream\");\n\n__exportStar(require(\"./types\"), exports);\n\nvar CsvParserStream_2 = require(\"./CsvParserStream\");\n\nObject.defineProperty(exports, \"CsvParserStream\", {\n enumerable: true,\n get: function get() {\n return CsvParserStream_2.CsvParserStream;\n }\n});\n\nvar ParserOptions_2 = require(\"./ParserOptions\");\n\nObject.defineProperty(exports, \"ParserOptions\", {\n enumerable: true,\n get: function get() {\n return ParserOptions_2.ParserOptions;\n }\n});\n\nexports.parse = function (args) {\n return new CsvParserStream_1.CsvParserStream(new ParserOptions_1.ParserOptions(args));\n};\n\nexports.parseStream = function (stream, options) {\n return stream.pipe(new CsvParserStream_1.CsvParserStream(new ParserOptions_1.ParserOptions(options)));\n};\n\nexports.parseFile = function (location) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return fs.createReadStream(location).pipe(new CsvParserStream_1.CsvParserStream(new ParserOptions_1.ParserOptions(options)));\n};\n\nexports.parseString = function (string, options) {\n var rs = new stream_1.Readable();\n rs.push(string);\n rs.push(null);\n return rs.pipe(new CsvParserStream_1.CsvParserStream(new ParserOptions_1.ParserOptions(options)));\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUEsRUFBQSxHQUFBLFlBQUEsQ0FBQSxPQUFBLENBQUEsSUFBQSxDQUFBLENBQUE7O0FBQ0EsSUFBQSxRQUFBLEdBQUEsT0FBQSxDQUFBLFFBQUEsQ0FBQTs7QUFDQSxJQUFBLGVBQUEsR0FBQSxPQUFBLENBQUEsaUJBQUEsQ0FBQTs7QUFDQSxJQUFBLGlCQUFBLEdBQUEsT0FBQSxDQUFBLG1CQUFBLENBQUE7O0FBR0EsWUFBQSxDQUFBLE9BQUEsQ0FBQSxTQUFBLENBQUEsRUFBQSxPQUFBLENBQUE7O0FBQ0EsSUFBQSxpQkFBQSxHQUFBLE9BQUEsQ0FBQSxtQkFBQSxDQUFBOztBQUFTLE1BQUEsQ0FBQSxjQUFBLENBQUEsT0FBQSxFQUFBLGlCQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsaUJBQUEsQ0FBQSxlQUFBO0FBQWU7QUFBZixDQUFBOztBQUNULElBQUEsZUFBQSxHQUFBLE9BQUEsQ0FBQSxpQkFBQSxDQUFBOztBQUFTLE1BQUEsQ0FBQSxjQUFBLENBQUEsT0FBQSxFQUFBLGVBQUEsRUFBQTtBQUFBLEVBQUEsVUFBQSxFQUFBLElBQUE7QUFBQSxFQUFBLEdBQUEsRUFBQSxlQUFBO0FBQUEsV0FBQSxlQUFBLENBQUEsYUFBQTtBQUFhO0FBQWIsQ0FBQTs7QUFFSSxPQUFBLENBQUEsS0FBQSxHQUFRLFVBQStCLElBQS9CO0FBQUEsU0FDakIsSUFBSSxpQkFBQSxDQUFBLGVBQUosQ0FBb0IsSUFBSSxlQUFBLENBQUEsYUFBSixDQUFrQixJQUFsQixDQUFwQixDQURpQjtBQUFBLENBQVI7O0FBR0EsT0FBQSxDQUFBLFdBQUEsR0FBYyxVQUN2QixNQUR1QixFQUV2QixPQUZ1QjtBQUFBLFNBR0MsTUFBTSxDQUFDLElBQVAsQ0FBWSxJQUFJLGlCQUFBLENBQUEsZUFBSixDQUFvQixJQUFJLGVBQUEsQ0FBQSxhQUFKLENBQWtCLE9BQWxCLENBQXBCLENBQVosQ0FIRDtBQUFBLENBQWQ7O0FBS0EsT0FBQSxDQUFBLFNBQUEsR0FBWSxVQUNyQixRQURxQjtBQUFBLE1BRXJCLE9BRnFCLHVFQUVRLEVBRlI7QUFBQSxTQUdHLEVBQUUsQ0FBQyxnQkFBSCxDQUFvQixRQUFwQixFQUE4QixJQUE5QixDQUFtQyxJQUFJLGlCQUFBLENBQUEsZUFBSixDQUFvQixJQUFJLGVBQUEsQ0FBQSxhQUFKLENBQWtCLE9BQWxCLENBQXBCLENBQW5DLENBSEg7QUFBQSxDQUFaOztBQUtBLE9BQUEsQ0FBQSxXQUFBLEdBQWMsVUFDdkIsTUFEdUIsRUFFdkIsT0FGdUIsRUFHQTtBQUN2QixNQUFNLEVBQUUsR0FBRyxJQUFJLFFBQUEsQ0FBQSxRQUFKLEVBQVg7QUFDQSxFQUFBLEVBQUUsQ0FBQyxJQUFILENBQVEsTUFBUjtBQUNBLEVBQUEsRUFBRSxDQUFDLElBQUgsQ0FBUSxJQUFSO0FBQ0EsU0FBTyxFQUFFLENBQUMsSUFBSCxDQUFRLElBQUksaUJBQUEsQ0FBQSxlQUFKLENBQW9CLElBQUksZUFBQSxDQUFBLGFBQUosQ0FBa0IsT0FBbEIsQ0FBcEIsQ0FBUixDQUFQO0FBQ0gsQ0FSWSIsInNvdXJjZVJvb3QiOiIifQ==","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Parser = void 0;\n\nvar Scanner_1 = require(\"./Scanner\");\n\nvar RowParser_1 = require(\"./RowParser\");\n\nvar Token_1 = require(\"./Token\");\n\nvar EMPTY_ROW_REGEXP = /^\\s*(?:''|\"\")?\\s*(?:,\\s*(?:''|\"\")?\\s*)*$/;\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(parserOptions) {\n _classCallCheck(this, Parser);\n\n this.parserOptions = parserOptions;\n this.rowParser = new RowParser_1.RowParser(this.parserOptions);\n }\n\n _createClass(Parser, [{\n key: \"parse\",\n value: function parse(line, hasMoreData) {\n var scanner = new Scanner_1.Scanner({\n line: Parser.removeBOM(line),\n parserOptions: this.parserOptions,\n hasMoreData: hasMoreData\n });\n\n if (this.parserOptions.supportsComments) {\n return this.parseWithComments(scanner);\n }\n\n return this.parseWithoutComments(scanner);\n }\n }, {\n key: \"parseWithoutComments\",\n value: function parseWithoutComments(scanner) {\n var rows = [];\n var shouldContinue = true;\n\n while (shouldContinue) {\n shouldContinue = this.parseRow(scanner, rows);\n }\n\n return {\n line: scanner.line,\n rows: rows\n };\n }\n }, {\n key: \"parseWithComments\",\n value: function parseWithComments(scanner) {\n var parserOptions = this.parserOptions;\n var rows = [];\n\n for (var nextToken = scanner.nextCharacterToken; nextToken !== null; nextToken = scanner.nextCharacterToken) {\n if (Token_1.Token.isTokenComment(nextToken, parserOptions)) {\n var cursor = scanner.advancePastLine();\n\n if (cursor === null) {\n return {\n line: scanner.lineFromCursor,\n rows: rows\n };\n }\n\n if (!scanner.hasMoreCharacters) {\n return {\n line: scanner.lineFromCursor,\n rows: rows\n };\n }\n\n scanner.truncateToCursor();\n } else if (!this.parseRow(scanner, rows)) {\n break;\n }\n }\n\n return {\n line: scanner.line,\n rows: rows\n };\n }\n }, {\n key: \"parseRow\",\n value: function parseRow(scanner, rows) {\n var nextToken = scanner.nextNonSpaceToken;\n\n if (!nextToken) {\n return false;\n }\n\n var row = this.rowParser.parse(scanner);\n\n if (row === null) {\n return false;\n }\n\n if (this.parserOptions.ignoreEmpty && EMPTY_ROW_REGEXP.test(row.join(''))) {\n return true;\n }\n\n rows.push(row);\n return true;\n }\n }], [{\n key: \"removeBOM\",\n value: function removeBOM(line) {\n // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string\n // conversion translates it to FEFF (UTF-16 BOM)\n if (line && line.charCodeAt(0) === 0xfeff) {\n return line.slice(1);\n }\n\n return line;\n }\n }]);\n\n return Parser;\n}();\n\nexports.Parser = Parser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBLFNBQUEsR0FBQSxPQUFBLENBQUEsV0FBQSxDQUFBOztBQUNBLElBQUEsV0FBQSxHQUFBLE9BQUEsQ0FBQSxhQUFBLENBQUE7O0FBR0EsSUFBQSxPQUFBLEdBQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQTs7QUFFQSxJQUFNLGdCQUFnQixHQUFHLDBDQUF6Qjs7SUFNYSxNO0FBY1Qsa0JBQW1CLGFBQW5CLEVBQStDO0FBQUE7O0FBQzNDLFNBQUssYUFBTCxHQUFxQixhQUFyQjtBQUNBLFNBQUssU0FBTCxHQUFpQixJQUFJLFdBQUEsQ0FBQSxTQUFKLENBQWMsS0FBSyxhQUFuQixDQUFqQjtBQUNIOzs7OzBCQUVZLEksRUFBYyxXLEVBQW9CO0FBQzNDLFVBQU0sT0FBTyxHQUFHLElBQUksU0FBQSxDQUFBLE9BQUosQ0FBWTtBQUN4QixRQUFBLElBQUksRUFBRSxNQUFNLENBQUMsU0FBUCxDQUFpQixJQUFqQixDQURrQjtBQUV4QixRQUFBLGFBQWEsRUFBRSxLQUFLLGFBRkk7QUFHeEIsUUFBQSxXQUFXLEVBQVg7QUFId0IsT0FBWixDQUFoQjs7QUFLQSxVQUFJLEtBQUssYUFBTCxDQUFtQixnQkFBdkIsRUFBeUM7QUFDckMsZUFBTyxLQUFLLGlCQUFMLENBQXVCLE9BQXZCLENBQVA7QUFDSDs7QUFDRCxhQUFPLEtBQUssb0JBQUwsQ0FBMEIsT0FBMUIsQ0FBUDtBQUNIOzs7eUNBRTRCLE8sRUFBZ0I7QUFDekMsVUFBTSxJQUFJLEdBQWUsRUFBekI7QUFDQSxVQUFJLGNBQWMsR0FBRyxJQUFyQjs7QUFDQSxhQUFPLGNBQVAsRUFBdUI7QUFDbkIsUUFBQSxjQUFjLEdBQUcsS0FBSyxRQUFMLENBQWMsT0FBZCxFQUF1QixJQUF2QixDQUFqQjtBQUNIOztBQUNELGFBQU87QUFBRSxRQUFBLElBQUksRUFBRSxPQUFPLENBQUMsSUFBaEI7QUFBc0IsUUFBQSxJQUFJLEVBQUo7QUFBdEIsT0FBUDtBQUNIOzs7c0NBRXlCLE8sRUFBZ0I7QUFBQSxVQUM5QixhQUQ4QixHQUNaLElBRFksQ0FDOUIsYUFEOEI7QUFFdEMsVUFBTSxJQUFJLEdBQWUsRUFBekI7O0FBQ0EsV0FBSyxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsa0JBQTdCLEVBQWlELFNBQVMsS0FBSyxJQUEvRCxFQUFxRSxTQUFTLEdBQUcsT0FBTyxDQUFDLGtCQUF6RixFQUE2RztBQUN6RyxZQUFJLE9BQUEsQ0FBQSxLQUFBLENBQU0sY0FBTixDQUFxQixTQUFyQixFQUFnQyxhQUFoQyxDQUFKLEVBQW9EO0FBQ2hELGNBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxlQUFSLEVBQWY7O0FBQ0EsY0FBSSxNQUFNLEtBQUssSUFBZixFQUFxQjtBQUNqQixtQkFBTztBQUFFLGNBQUEsSUFBSSxFQUFFLE9BQU8sQ0FBQyxjQUFoQjtBQUFnQyxjQUFBLElBQUksRUFBSjtBQUFoQyxhQUFQO0FBQ0g7O0FBQ0QsY0FBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBYixFQUFnQztBQUM1QixtQkFBTztBQUFFLGNBQUEsSUFBSSxFQUFFLE9BQU8sQ0FBQyxjQUFoQjtBQUFnQyxjQUFBLElBQUksRUFBSjtBQUFoQyxhQUFQO0FBQ0g7O0FBQ0QsVUFBQSxPQUFPLENBQUMsZ0JBQVI7QUFDSCxTQVRELE1BU08sSUFBSSxDQUFDLEtBQUssUUFBTCxDQUFjLE9BQWQsRUFBdUIsSUFBdkIsQ0FBTCxFQUFtQztBQUN0QztBQUNIO0FBQ0o7O0FBQ0QsYUFBTztBQUFFLFFBQUEsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFoQjtBQUFzQixRQUFBLElBQUksRUFBSjtBQUF0QixPQUFQO0FBQ0g7Ozs2QkFFZ0IsTyxFQUFrQixJLEVBQWdCO0FBQy9DLFVBQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxpQkFBMUI7O0FBQ0EsVUFBSSxDQUFDLFNBQUwsRUFBZ0I7QUFDWixlQUFPLEtBQVA7QUFDSDs7QUFDRCxVQUFNLEdBQUcsR0FBRyxLQUFLLFNBQUwsQ0FBZSxLQUFmLENBQXFCLE9BQXJCLENBQVo7O0FBQ0EsVUFBSSxHQUFHLEtBQUssSUFBWixFQUFrQjtBQUNkLGVBQU8sS0FBUDtBQUNIOztBQUNELFVBQUksS0FBSyxhQUFMLENBQW1CLFdBQW5CLElBQWtDLGdCQUFnQixDQUFDLElBQWpCLENBQXNCLEdBQUcsQ0FBQyxJQUFKLENBQVMsRUFBVCxDQUF0QixDQUF0QyxFQUEyRTtBQUN2RSxlQUFPLElBQVA7QUFDSDs7QUFDRCxNQUFBLElBQUksQ0FBQyxJQUFMLENBQVUsR0FBVjtBQUNBLGFBQU8sSUFBUDtBQUNIOzs7OEJBekV3QixJLEVBQVk7QUFDakM7QUFDQTtBQUNBLFVBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFMLENBQWdCLENBQWhCLE1BQXVCLE1BQW5DLEVBQTJDO0FBQ3ZDLGVBQU8sSUFBSSxDQUFDLEtBQUwsQ0FBVyxDQUFYLENBQVA7QUFDSDs7QUFDRCxhQUFPLElBQVA7QUFDSDs7Ozs7O0FBUkwsT0FBQSxDQUFBLE1BQUEsR0FBQSxNQUFBIiwic291cmNlUm9vdCI6IiJ9","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RowParser = void 0;\n\nvar column_1 = require(\"./column\");\n\nvar Token_1 = require(\"./Token\");\n\nvar _Token_1$Token = Token_1.Token,\n isTokenRowDelimiter = _Token_1$Token.isTokenRowDelimiter,\n isTokenCarriageReturn = _Token_1$Token.isTokenCarriageReturn,\n isTokenDelimiter = _Token_1$Token.isTokenDelimiter;\n\nvar RowParser = /*#__PURE__*/function () {\n function RowParser(parserOptions) {\n _classCallCheck(this, RowParser);\n\n this.parserOptions = parserOptions;\n this.columnParser = new column_1.ColumnParser(parserOptions);\n }\n\n _createClass(RowParser, [{\n key: \"parse\",\n value: function parse(scanner) {\n var parserOptions = this.parserOptions;\n var hasMoreData = scanner.hasMoreData;\n var currentScanner = scanner;\n var columns = [];\n var currentToken = this.getStartToken(currentScanner, columns);\n\n while (currentToken) {\n if (isTokenRowDelimiter(currentToken)) {\n currentScanner.advancePastToken(currentToken); // if ends with CR and there is more data, keep unparsed due to possible\n // coming LF in CRLF\n\n if (!currentScanner.hasMoreCharacters && isTokenCarriageReturn(currentToken, parserOptions) && hasMoreData) {\n return null;\n }\n\n currentScanner.truncateToCursor();\n return columns;\n }\n\n if (!this.shouldSkipColumnParse(currentScanner, currentToken, columns)) {\n var item = this.columnParser.parse(currentScanner);\n\n if (item === null) {\n return null;\n }\n\n columns.push(item);\n }\n\n currentToken = currentScanner.nextNonSpaceToken;\n }\n\n if (!hasMoreData) {\n currentScanner.truncateToCursor();\n return columns;\n }\n\n return null;\n }\n }, {\n key: \"getStartToken\",\n value: function getStartToken(scanner, columns) {\n var currentToken = scanner.nextNonSpaceToken;\n\n if (currentToken !== null && isTokenDelimiter(currentToken, this.parserOptions)) {\n columns.push('');\n return scanner.nextNonSpaceToken;\n }\n\n return currentToken;\n }\n }, {\n key: \"shouldSkipColumnParse\",\n value: function shouldSkipColumnParse(scanner, currentToken, columns) {\n var parserOptions = this.parserOptions;\n\n if (isTokenDelimiter(currentToken, parserOptions)) {\n scanner.advancePastToken(currentToken); // if the delimiter is at the end of a line\n\n var nextToken = scanner.nextCharacterToken;\n\n if (!scanner.hasMoreCharacters || nextToken !== null && isTokenRowDelimiter(nextToken)) {\n columns.push('');\n return true;\n }\n\n if (nextToken !== null && isTokenDelimiter(nextToken, parserOptions)) {\n columns.push('');\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return RowParser;\n}();\n\nexports.RowParser = RowParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvUm93UGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFBLFFBQUEsR0FBQSxPQUFBLENBQUEsVUFBQSxDQUFBOztBQUdBLElBQUEsT0FBQSxHQUFBLE9BQUEsQ0FBQSxTQUFBLENBQUE7O3FCQUV5RSxPQUFBLENBQUEsSztJQUFqRSxtQixrQkFBQSxtQjtJQUFxQixxQixrQkFBQSxxQjtJQUF1QixnQixrQkFBQSxnQjs7SUFFdkMsUztBQUtULHFCQUFtQixhQUFuQixFQUErQztBQUFBOztBQUMzQyxTQUFLLGFBQUwsR0FBcUIsYUFBckI7QUFDQSxTQUFLLFlBQUwsR0FBb0IsSUFBSSxRQUFBLENBQUEsWUFBSixDQUFpQixhQUFqQixDQUFwQjtBQUNIOzs7OzBCQUVZLE8sRUFBZ0I7QUFBQSxVQUNqQixhQURpQixHQUNDLElBREQsQ0FDakIsYUFEaUI7QUFBQSxVQUVqQixXQUZpQixHQUVELE9BRkMsQ0FFakIsV0FGaUI7QUFHekIsVUFBTSxjQUFjLEdBQUcsT0FBdkI7QUFDQSxVQUFNLE9BQU8sR0FBcUIsRUFBbEM7QUFDQSxVQUFJLFlBQVksR0FBRyxLQUFLLGFBQUwsQ0FBbUIsY0FBbkIsRUFBbUMsT0FBbkMsQ0FBbkI7O0FBQ0EsYUFBTyxZQUFQLEVBQXFCO0FBQ2pCLFlBQUksbUJBQW1CLENBQUMsWUFBRCxDQUF2QixFQUF1QztBQUNuQyxVQUFBLGNBQWMsQ0FBQyxnQkFBZixDQUFnQyxZQUFoQyxFQURtQyxDQUVuQztBQUNBOztBQUNBLGNBQ0ksQ0FBQyxjQUFjLENBQUMsaUJBQWhCLElBQ0EscUJBQXFCLENBQUMsWUFBRCxFQUFlLGFBQWYsQ0FEckIsSUFFQSxXQUhKLEVBSUU7QUFDRSxtQkFBTyxJQUFQO0FBQ0g7O0FBQ0QsVUFBQSxjQUFjLENBQUMsZ0JBQWY7QUFDQSxpQkFBTyxPQUFQO0FBQ0g7O0FBQ0QsWUFBSSxDQUFDLEtBQUsscUJBQUwsQ0FBMkIsY0FBM0IsRUFBMkMsWUFBM0MsRUFBeUQsT0FBekQsQ0FBTCxFQUF3RTtBQUNwRSxjQUFNLElBQUksR0FBRyxLQUFLLFlBQUwsQ0FBa0IsS0FBbEIsQ0FBd0IsY0FBeEIsQ0FBYjs7QUFDQSxjQUFJLElBQUksS0FBSyxJQUFiLEVBQW1CO0FBQ2YsbUJBQU8sSUFBUDtBQUNIOztBQUNELFVBQUEsT0FBTyxDQUFDLElBQVIsQ0FBYSxJQUFiO0FBQ0g7O0FBQ0QsUUFBQSxZQUFZLEdBQUcsY0FBYyxDQUFDLGlCQUE5QjtBQUNIOztBQUNELFVBQUksQ0FBQyxXQUFMLEVBQWtCO0FBQ2QsUUFBQSxjQUFjLENBQUMsZ0JBQWY7QUFDQSxlQUFPLE9BQVA7QUFDSDs7QUFDRCxhQUFPLElBQVA7QUFDSDs7O2tDQUVxQixPLEVBQWtCLE8sRUFBaUI7QUFDckQsVUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGlCQUE3Qjs7QUFDQSxVQUFJLFlBQVksS0FBSyxJQUFqQixJQUF5QixnQkFBZ0IsQ0FBQyxZQUFELEVBQWUsS0FBSyxhQUFwQixDQUE3QyxFQUFpRjtBQUM3RSxRQUFBLE9BQU8sQ0FBQyxJQUFSLENBQWEsRUFBYjtBQUNBLGVBQU8sT0FBTyxDQUFDLGlCQUFmO0FBQ0g7O0FBQ0QsYUFBTyxZQUFQO0FBQ0g7OzswQ0FFNkIsTyxFQUFrQixZLEVBQXFCLE8sRUFBaUI7QUFBQSxVQUMxRSxhQUQwRSxHQUN4RCxJQUR3RCxDQUMxRSxhQUQwRTs7QUFFbEYsVUFBSSxnQkFBZ0IsQ0FBQyxZQUFELEVBQWUsYUFBZixDQUFwQixFQUFtRDtBQUMvQyxRQUFBLE9BQU8sQ0FBQyxnQkFBUixDQUF5QixZQUF6QixFQUQrQyxDQUUvQzs7QUFDQSxZQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsa0JBQTFCOztBQUNBLFlBQUksQ0FBQyxPQUFPLENBQUMsaUJBQVQsSUFBK0IsU0FBUyxLQUFLLElBQWQsSUFBc0IsbUJBQW1CLENBQUMsU0FBRCxDQUE1RSxFQUEwRjtBQUN0RixVQUFBLE9BQU8sQ0FBQyxJQUFSLENBQWEsRUFBYjtBQUNBLGlCQUFPLElBQVA7QUFDSDs7QUFDRCxZQUFJLFNBQVMsS0FBSyxJQUFkLElBQXNCLGdCQUFnQixDQUFDLFNBQUQsRUFBWSxhQUFaLENBQTFDLEVBQXNFO0FBQ2xFLFVBQUEsT0FBTyxDQUFDLElBQVIsQ0FBYSxFQUFiO0FBQ0EsaUJBQU8sSUFBUDtBQUNIO0FBQ0o7O0FBQ0QsYUFBTyxLQUFQO0FBQ0g7Ozs7OztBQXhFTCxPQUFBLENBQUEsU0FBQSxHQUFBLFNBQUEiLCJzb3VyY2VSb290IjoiIn0=","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Scanner = void 0;\n\nvar Token_1 = require(\"./Token\");\n\nvar ROW_DELIMITER = /((?:\\r\\n)|\\n|\\r)/;\n\nvar Scanner = /*#__PURE__*/function () {\n function Scanner(args) {\n _classCallCheck(this, Scanner);\n\n this.cursor = 0;\n this.line = args.line;\n this.lineLength = this.line.length;\n this.parserOptions = args.parserOptions;\n this.hasMoreData = args.hasMoreData;\n this.cursor = args.cursor || 0;\n }\n\n _createClass(Scanner, [{\n key: \"advancePastLine\",\n value: function advancePastLine() {\n var match = ROW_DELIMITER.exec(this.lineFromCursor);\n\n if (!match) {\n if (this.hasMoreData) {\n return null;\n }\n\n this.cursor = this.lineLength;\n return this;\n }\n\n this.cursor += (match.index || 0) + match[0].length;\n return this;\n }\n }, {\n key: \"advanceTo\",\n value: function advanceTo(cursor) {\n this.cursor = cursor;\n return this;\n }\n }, {\n key: \"advanceToToken\",\n value: function advanceToToken(token) {\n this.cursor = token.startCursor;\n return this;\n }\n }, {\n key: \"advancePastToken\",\n value: function advancePastToken(token) {\n this.cursor = token.endCursor + 1;\n return this;\n }\n }, {\n key: \"truncateToCursor\",\n value: function truncateToCursor() {\n this.line = this.lineFromCursor;\n this.lineLength = this.line.length;\n this.cursor = 0;\n return this;\n }\n }, {\n key: \"hasMoreCharacters\",\n get: function get() {\n return this.lineLength > this.cursor;\n }\n }, {\n key: \"nextNonSpaceToken\",\n get: function get() {\n var lineFromCursor = this.lineFromCursor;\n var regex = this.parserOptions.NEXT_TOKEN_REGEXP;\n\n if (lineFromCursor.search(regex) === -1) {\n return null;\n }\n\n var match = regex.exec(lineFromCursor);\n\n if (match == null) {\n return null;\n }\n\n var token = match[1];\n var startCursor = this.cursor + (match.index || 0);\n return new Token_1.Token({\n token: token,\n startCursor: startCursor,\n endCursor: startCursor + token.length - 1\n });\n }\n }, {\n key: \"nextCharacterToken\",\n get: function get() {\n var cursor = this.cursor,\n lineLength = this.lineLength;\n\n if (lineLength <= cursor) {\n return null;\n }\n\n return new Token_1.Token({\n token: this.line[cursor],\n startCursor: cursor,\n endCursor: cursor\n });\n }\n }, {\n key: \"lineFromCursor\",\n get: function get() {\n return this.line.substr(this.cursor);\n }\n }]);\n\n return Scanner;\n}();\n\nexports.Scanner = Scanner;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvU2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBQSxPQUFBLEdBQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQTs7QUFFQSxJQUFNLGFBQWEsR0FBRyxrQkFBdEI7O0lBU2EsTztBQVdULG1CQUFtQixJQUFuQixFQUFvQztBQUFBOztBQUY3QixTQUFBLE1BQUEsR0FBUyxDQUFUO0FBR0gsU0FBSyxJQUFMLEdBQVksSUFBSSxDQUFDLElBQWpCO0FBQ0EsU0FBSyxVQUFMLEdBQWtCLEtBQUssSUFBTCxDQUFVLE1BQTVCO0FBQ0EsU0FBSyxhQUFMLEdBQXFCLElBQUksQ0FBQyxhQUExQjtBQUNBLFNBQUssV0FBTCxHQUFtQixJQUFJLENBQUMsV0FBeEI7QUFDQSxTQUFLLE1BQUwsR0FBYyxJQUFJLENBQUMsTUFBTCxJQUFlLENBQTdCO0FBQ0g7Ozs7c0NBeUNxQjtBQUNsQixVQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsSUFBZCxDQUFtQixLQUFLLGNBQXhCLENBQWQ7O0FBQ0EsVUFBSSxDQUFDLEtBQUwsRUFBWTtBQUNSLFlBQUksS0FBSyxXQUFULEVBQXNCO0FBQ2xCLGlCQUFPLElBQVA7QUFDSDs7QUFDRCxhQUFLLE1BQUwsR0FBYyxLQUFLLFVBQW5CO0FBQ0EsZUFBTyxJQUFQO0FBQ0g7O0FBQ0QsV0FBSyxNQUFMLElBQWUsQ0FBQyxLQUFLLENBQUMsS0FBTixJQUFlLENBQWhCLElBQXFCLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBUyxNQUE3QztBQUNBLGFBQU8sSUFBUDtBQUNIOzs7OEJBRWdCLE0sRUFBYztBQUMzQixXQUFLLE1BQUwsR0FBYyxNQUFkO0FBQ0EsYUFBTyxJQUFQO0FBQ0g7OzttQ0FFcUIsSyxFQUFZO0FBQzlCLFdBQUssTUFBTCxHQUFjLEtBQUssQ0FBQyxXQUFwQjtBQUNBLGFBQU8sSUFBUDtBQUNIOzs7cUNBRXVCLEssRUFBWTtBQUNoQyxXQUFLLE1BQUwsR0FBYyxLQUFLLENBQUMsU0FBTixHQUFrQixDQUFoQztBQUNBLGFBQU8sSUFBUDtBQUNIOzs7dUNBRXNCO0FBQ25CLFdBQUssSUFBTCxHQUFZLEtBQUssY0FBakI7QUFDQSxXQUFLLFVBQUwsR0FBa0IsS0FBSyxJQUFMLENBQVUsTUFBNUI7QUFDQSxXQUFLLE1BQUwsR0FBYyxDQUFkO0FBQ0EsYUFBTyxJQUFQO0FBQ0g7Ozt3QkF4RTJCO0FBQ3hCLGFBQU8sS0FBSyxVQUFMLEdBQWtCLEtBQUssTUFBOUI7QUFDSDs7O3dCQUUyQjtBQUFBLFVBQ2hCLGNBRGdCLEdBQ0csSUFESCxDQUNoQixjQURnQjtBQUV4QixVQUFNLEtBQUssR0FBRyxLQUFLLGFBQUwsQ0FBbUIsaUJBQWpDOztBQUNBLFVBQUksY0FBYyxDQUFDLE1BQWYsQ0FBc0IsS0FBdEIsTUFBaUMsQ0FBQyxDQUF0QyxFQUF5QztBQUNyQyxlQUFPLElBQVA7QUFDSDs7QUFDRCxVQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBTixDQUFXLGNBQVgsQ0FBZDs7QUFDQSxVQUFJLEtBQUssSUFBSSxJQUFiLEVBQW1CO0FBQ2YsZUFBTyxJQUFQO0FBQ0g7O0FBQ0QsVUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUQsQ0FBbkI7QUFDQSxVQUFNLFdBQVcsR0FBRyxLQUFLLE1BQUwsSUFBZSxLQUFLLENBQUMsS0FBTixJQUFlLENBQTlCLENBQXBCO0FBQ0EsYUFBTyxJQUFJLE9BQUEsQ0FBQSxLQUFKLENBQVU7QUFDYixRQUFBLEtBQUssRUFBTCxLQURhO0FBRWIsUUFBQSxXQUFXLEVBQVgsV0FGYTtBQUdiLFFBQUEsU0FBUyxFQUFFLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBcEIsR0FBNkI7QUFIM0IsT0FBVixDQUFQO0FBS0g7Ozt3QkFFNEI7QUFBQSxVQUNqQixNQURpQixHQUNNLElBRE4sQ0FDakIsTUFEaUI7QUFBQSxVQUNULFVBRFMsR0FDTSxJQUROLENBQ1QsVUFEUzs7QUFFekIsVUFBSSxVQUFVLElBQUksTUFBbEIsRUFBMEI7QUFDdEIsZUFBTyxJQUFQO0FBQ0g7O0FBQ0QsYUFBTyxJQUFJLE9BQUEsQ0FBQSxLQUFKLENBQVU7QUFDYixRQUFBLEtBQUssRUFBRSxLQUFLLElBQUwsQ0FBVSxNQUFWLENBRE07QUFFYixRQUFBLFdBQVcsRUFBRSxNQUZBO0FBR2IsUUFBQSxTQUFTLEVBQUU7QUFIRSxPQUFWLENBQVA7QUFLSDs7O3dCQUV3QjtBQUNyQixhQUFPLEtBQUssSUFBTCxDQUFVLE1BQVYsQ0FBaUIsS0FBSyxNQUF0QixDQUFQO0FBQ0g7Ozs7OztBQXhETCxPQUFBLENBQUEsT0FBQSxHQUFBLE9BQUEiLCJzb3VyY2VSb290IjoiIn0=","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Token = void 0;\n\nvar Token = /*#__PURE__*/function () {\n function Token(tokenArgs) {\n _classCallCheck(this, Token);\n\n this.token = tokenArgs.token;\n this.startCursor = tokenArgs.startCursor;\n this.endCursor = tokenArgs.endCursor;\n }\n\n _createClass(Token, null, [{\n key: \"isTokenRowDelimiter\",\n value: function isTokenRowDelimiter(token) {\n var content = token.token;\n return content === '\\r' || content === '\\n' || content === '\\r\\n';\n }\n }, {\n key: \"isTokenCarriageReturn\",\n value: function isTokenCarriageReturn(token, parserOptions) {\n return token.token === parserOptions.carriageReturn;\n }\n }, {\n key: \"isTokenComment\",\n value: function isTokenComment(token, parserOptions) {\n return parserOptions.supportsComments && !!token && token.token === parserOptions.comment;\n }\n }, {\n key: \"isTokenEscapeCharacter\",\n value: function isTokenEscapeCharacter(token, parserOptions) {\n return token.token === parserOptions.escapeChar;\n }\n }, {\n key: \"isTokenQuote\",\n value: function isTokenQuote(token, parserOptions) {\n return token.token === parserOptions.quote;\n }\n }, {\n key: \"isTokenDelimiter\",\n value: function isTokenDelimiter(token, parserOptions) {\n return token.token === parserOptions.delimiter;\n }\n }]);\n\n return Token;\n}();\n\nexports.Token = Token;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztJQVVhLEs7QUFnQ1QsaUJBQW1CLFNBQW5CLEVBQXVDO0FBQUE7O0FBQ25DLFNBQUssS0FBTCxHQUFhLFNBQVMsQ0FBQyxLQUF2QjtBQUNBLFNBQUssV0FBTCxHQUFtQixTQUFTLENBQUMsV0FBN0I7QUFDQSxTQUFLLFNBQUwsR0FBaUIsU0FBUyxDQUFDLFNBQTNCO0FBQ0g7Ozs7d0NBbkNpQyxLLEVBQVk7QUFDMUMsVUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQXRCO0FBQ0EsYUFBTyxPQUFPLEtBQUssSUFBWixJQUFvQixPQUFPLEtBQUssSUFBaEMsSUFBd0MsT0FBTyxLQUFLLE1BQTNEO0FBQ0g7OzswQ0FFbUMsSyxFQUFjLGEsRUFBNEI7QUFDMUUsYUFBTyxLQUFLLENBQUMsS0FBTixLQUFnQixhQUFhLENBQUMsY0FBckM7QUFDSDs7O21DQUU0QixLLEVBQWMsYSxFQUE0QjtBQUNuRSxhQUFPLGFBQWEsQ0FBQyxnQkFBZCxJQUFrQyxDQUFDLENBQUMsS0FBcEMsSUFBNkMsS0FBSyxDQUFDLEtBQU4sS0FBZ0IsYUFBYSxDQUFDLE9BQWxGO0FBQ0g7OzsyQ0FFb0MsSyxFQUFjLGEsRUFBNEI7QUFDM0UsYUFBTyxLQUFLLENBQUMsS0FBTixLQUFnQixhQUFhLENBQUMsVUFBckM7QUFDSDs7O2lDQUUwQixLLEVBQWMsYSxFQUE0QjtBQUNqRSxhQUFPLEtBQUssQ0FBQyxLQUFOLEtBQWdCLGFBQWEsQ0FBQyxLQUFyQztBQUNIOzs7cUNBRThCLEssRUFBYyxhLEVBQTRCO0FBQ3JFLGFBQU8sS0FBSyxDQUFDLEtBQU4sS0FBZ0IsYUFBYSxDQUFDLFNBQXJDO0FBQ0g7Ozs7OztBQXhCTCxPQUFBLENBQUEsS0FBQSxHQUFBLEtBQUEiLCJzb3VyY2VSb290IjoiIn0=","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColumnFormatter = void 0;\n\nvar ColumnFormatter = function ColumnFormatter(parserOptions) {\n _classCallCheck(this, ColumnFormatter);\n\n if (parserOptions.trim) {\n this.format = function (col) {\n return col.trim();\n };\n } else if (parserOptions.ltrim) {\n this.format = function (col) {\n return col.trimLeft();\n };\n } else if (parserOptions.rtrim) {\n this.format = function (col) {\n return col.trimRight();\n };\n } else {\n this.format = function (col) {\n return col;\n };\n }\n};\n\nexports.ColumnFormatter = ColumnFormatter;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYXJzZXIvY29sdW1uL0NvbHVtbkZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7SUFFYSxlLEdBR1QseUJBQW1CLGFBQW5CLEVBQStDO0FBQUE7O0FBQzNDLE1BQUksYUFBYSxDQUFDLElBQWxCLEVBQXdCO0FBQ3BCLFNBQUssTUFBTCxHQUFjLFVBQUMsR0FBRDtBQUFBLGFBQXlCLEdBQUcsQ0FBQyxJQUFKLEVBQXpCO0FBQUEsS0FBZDtBQUNILEdBRkQsTUFFTyxJQUFJLGFBQWEsQ0FBQyxLQUFsQixFQUF5QjtBQUM1QixTQUFLLE1BQUwsR0FBYyxVQUFDLEdBQUQ7QUFBQSxhQUF5QixHQUFHLENBQUMsUUFBSixFQUF6QjtBQUFBLEtBQWQ7QUFDSCxHQUZNLE1BRUEsSUFBSSxhQUFhLENBQUMsS0FBbEIsRUFBeUI7QUFDNUIsU0FBSyxNQUFMLEdBQWMsVUFBQyxHQUFEO0FBQUEsYUFBeUIsR0FBRyxDQUFDLFNBQUosRUFBekI7QUFBQSxLQUFkO0FBQ0gsR0FGTSxNQUVBO0FBQ0gsU0FBSyxNQUFMLEdBQWMsVUFBQyxHQUFEO0FBQUEsYUFBeUIsR0FBekI7QUFBQSxLQUFkO0FBQ0g7QUFDSixDOztBQWJMLE9BQUEsQ0FBQSxlQUFBLEdBQUEsZUFBQSIsInNvdXJjZVJvb3QiOiIifQ==","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColumnParser = void 0;\n\nvar NonQuotedColumnParser_1 = require(\"./NonQuotedColumnParser\");\n\nvar QuotedColumnParser_1 = require(\"./QuotedColumnParser\");\n\nvar Token_1 = require(\"../Token\");\n\nvar ColumnParser = /*#__PURE__*/function () {\n function ColumnParser(parserOptions) {\n _classCallCheck(this, ColumnParser);\n\n this.parserOptions = parserOptions;\n this.quotedColumnParser = new QuotedColumnParser_1.QuotedColumnParser(parserOptions);\n this.nonQuotedColumnParser = new NonQuotedColumnParser_1.NonQuotedColumnParser(parserOptions);\n }\n\n _createClass(ColumnParser, [{\n key: \"parse\",\n value: function parse(scanner) {\n var nextNonSpaceToken = scanner.nextNonSpaceToken;\n\n if (nextNonSpaceToken !== null && Token_1.Token.isTokenQuote(nextNonSpaceToken, this.parserOptions)) {\n scanner.advanceToToken(nextNonSpaceToken);\n return this.quotedColumnParser.parse(scanner);\n }\n\n return this.nonQuotedColumnParser.parse(scanner);\n }\n }]);\n\n return ColumnParser;\n}();\n\nexports.ColumnParser = ColumnParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYXJzZXIvY29sdW1uL0NvbHVtblBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBQSx1QkFBQSxHQUFBLE9BQUEsQ0FBQSx5QkFBQSxDQUFBOztBQUNBLElBQUEsb0JBQUEsR0FBQSxPQUFBLENBQUEsc0JBQUEsQ0FBQTs7QUFFQSxJQUFBLE9BQUEsR0FBQSxPQUFBLENBQUEsVUFBQSxDQUFBOztJQUVhLFk7QUFPVCx3QkFBbUIsYUFBbkIsRUFBK0M7QUFBQTs7QUFDM0MsU0FBSyxhQUFMLEdBQXFCLGFBQXJCO0FBQ0EsU0FBSyxrQkFBTCxHQUEwQixJQUFJLG9CQUFBLENBQUEsa0JBQUosQ0FBdUIsYUFBdkIsQ0FBMUI7QUFDQSxTQUFLLHFCQUFMLEdBQTZCLElBQUksdUJBQUEsQ0FBQSxxQkFBSixDQUEwQixhQUExQixDQUE3QjtBQUNIOzs7OzBCQUVZLE8sRUFBZ0I7QUFBQSxVQUNqQixpQkFEaUIsR0FDSyxPQURMLENBQ2pCLGlCQURpQjs7QUFFekIsVUFBSSxpQkFBaUIsS0FBSyxJQUF0QixJQUE4QixPQUFBLENBQUEsS0FBQSxDQUFNLFlBQU4sQ0FBbUIsaUJBQW5CLEVBQXNDLEtBQUssYUFBM0MsQ0FBbEMsRUFBNkY7QUFDekYsUUFBQSxPQUFPLENBQUMsY0FBUixDQUF1QixpQkFBdkI7QUFDQSxlQUFPLEtBQUssa0JBQUwsQ0FBd0IsS0FBeEIsQ0FBOEIsT0FBOUIsQ0FBUDtBQUNIOztBQUNELGFBQU8sS0FBSyxxQkFBTCxDQUEyQixLQUEzQixDQUFpQyxPQUFqQyxDQUFQO0FBQ0g7Ozs7OztBQXBCTCxPQUFBLENBQUEsWUFBQSxHQUFBLFlBQUEiLCJzb3VyY2VSb290IjoiIn0=","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NonQuotedColumnParser = void 0;\n\nvar ColumnFormatter_1 = require(\"./ColumnFormatter\");\n\nvar Token_1 = require(\"../Token\");\n\nvar _Token_1$Token = Token_1.Token,\n isTokenDelimiter = _Token_1$Token.isTokenDelimiter,\n isTokenRowDelimiter = _Token_1$Token.isTokenRowDelimiter;\n\nvar NonQuotedColumnParser = /*#__PURE__*/function () {\n function NonQuotedColumnParser(parserOptions) {\n _classCallCheck(this, NonQuotedColumnParser);\n\n this.parserOptions = parserOptions;\n this.columnFormatter = new ColumnFormatter_1.ColumnFormatter(parserOptions);\n }\n\n _createClass(NonQuotedColumnParser, [{\n key: \"parse\",\n value: function parse(scanner) {\n if (!scanner.hasMoreCharacters) {\n return null;\n }\n\n var parserOptions = this.parserOptions;\n var characters = [];\n var nextToken = scanner.nextCharacterToken;\n\n for (; nextToken; nextToken = scanner.nextCharacterToken) {\n if (isTokenDelimiter(nextToken, parserOptions) || isTokenRowDelimiter(nextToken)) {\n break;\n }\n\n characters.push(nextToken.token);\n scanner.advancePastToken(nextToken);\n }\n\n return this.columnFormatter.format(characters.join(''));\n }\n }]);\n\n return NonQuotedColumnParser;\n}();\n\nexports.NonQuotedColumnParser = NonQuotedColumnParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYXJzZXIvY29sdW1uL05vblF1b3RlZENvbHVtblBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBQSxpQkFBQSxHQUFBLE9BQUEsQ0FBQSxtQkFBQSxDQUFBOztBQUVBLElBQUEsT0FBQSxHQUFBLE9BQUEsQ0FBQSxVQUFBLENBQUE7O3FCQUVrRCxPQUFBLENBQUEsSztJQUExQyxnQixrQkFBQSxnQjtJQUFrQixtQixrQkFBQSxtQjs7SUFFYixxQjtBQUtULGlDQUFtQixhQUFuQixFQUErQztBQUFBOztBQUMzQyxTQUFLLGFBQUwsR0FBcUIsYUFBckI7QUFDQSxTQUFLLGVBQUwsR0FBdUIsSUFBSSxpQkFBQSxDQUFBLGVBQUosQ0FBb0IsYUFBcEIsQ0FBdkI7QUFDSDs7OzswQkFFWSxPLEVBQWdCO0FBQ3pCLFVBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWIsRUFBZ0M7QUFDNUIsZUFBTyxJQUFQO0FBQ0g7O0FBSHdCLFVBSWpCLGFBSmlCLEdBSUMsSUFKRCxDQUlqQixhQUppQjtBQUt6QixVQUFNLFVBQVUsR0FBRyxFQUFuQjtBQUNBLFVBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxrQkFBeEI7O0FBQ0EsYUFBTyxTQUFQLEVBQWtCLFNBQVMsR0FBRyxPQUFPLENBQUMsa0JBQXRDLEVBQTBEO0FBQ3RELFlBQUksZ0JBQWdCLENBQUMsU0FBRCxFQUFZLGFBQVosQ0FBaEIsSUFBOEMsbUJBQW1CLENBQUMsU0FBRCxDQUFyRSxFQUFrRjtBQUM5RTtBQUNIOztBQUNELFFBQUEsVUFBVSxDQUFDLElBQVgsQ0FBZ0IsU0FBUyxDQUFDLEtBQTFCO0FBQ0EsUUFBQSxPQUFPLENBQUMsZ0JBQVIsQ0FBeUIsU0FBekI7QUFDSDs7QUFDRCxhQUFPLEtBQUssZUFBTCxDQUFxQixNQUFyQixDQUE0QixVQUFVLENBQUMsSUFBWCxDQUFnQixFQUFoQixDQUE1QixDQUFQO0FBQ0g7Ozs7OztBQXpCTCxPQUFBLENBQUEscUJBQUEsR0FBQSxxQkFBQSIsInNvdXJjZVJvb3QiOiIifQ==","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.QuotedColumnParser = void 0;\n\nvar ColumnFormatter_1 = require(\"./ColumnFormatter\");\n\nvar Token_1 = require(\"../Token\");\n\nvar _Token_1$Token = Token_1.Token,\n isTokenDelimiter = _Token_1$Token.isTokenDelimiter,\n isTokenRowDelimiter = _Token_1$Token.isTokenRowDelimiter,\n isTokenEscapeCharacter = _Token_1$Token.isTokenEscapeCharacter,\n isTokenQuote = _Token_1$Token.isTokenQuote;\n\nvar QuotedColumnParser = /*#__PURE__*/function () {\n function QuotedColumnParser(parserOptions) {\n _classCallCheck(this, QuotedColumnParser);\n\n this.parserOptions = parserOptions;\n this.columnFormatter = new ColumnFormatter_1.ColumnFormatter(parserOptions);\n }\n\n _createClass(QuotedColumnParser, [{\n key: \"parse\",\n value: function parse(scanner) {\n if (!scanner.hasMoreCharacters) {\n return null;\n }\n\n var originalCursor = scanner.cursor;\n\n var _this$gatherDataBetwe = this.gatherDataBetweenQuotes(scanner),\n foundClosingQuote = _this$gatherDataBetwe.foundClosingQuote,\n col = _this$gatherDataBetwe.col;\n\n if (!foundClosingQuote) {\n // reset the cursor to the original\n scanner.advanceTo(originalCursor); // if we didnt find a closing quote but we potentially have more data then skip the parsing\n // and return the original scanner.\n\n if (!scanner.hasMoreData) {\n throw new Error(\"Parse Error: missing closing: '\".concat(this.parserOptions.quote || '', \"' in line: at '\").concat(scanner.lineFromCursor.replace(/[\\r\\n]/g, \"\\\\n'\"), \"'\"));\n }\n\n return null;\n }\n\n this.checkForMalformedColumn(scanner);\n return col;\n }\n }, {\n key: \"gatherDataBetweenQuotes\",\n value: function gatherDataBetweenQuotes(scanner) {\n var parserOptions = this.parserOptions;\n var foundStartingQuote = false;\n var foundClosingQuote = false;\n var characters = [];\n var nextToken = scanner.nextCharacterToken;\n\n for (; !foundClosingQuote && nextToken !== null; nextToken = scanner.nextCharacterToken) {\n var isQuote = isTokenQuote(nextToken, parserOptions); // ignore first quote\n\n if (!foundStartingQuote && isQuote) {\n foundStartingQuote = true;\n } else if (foundStartingQuote) {\n if (isTokenEscapeCharacter(nextToken, parserOptions)) {\n // advance past the escape character so we can get the next one in line\n scanner.advancePastToken(nextToken);\n var tokenFollowingEscape = scanner.nextCharacterToken; // if the character following the escape is a quote character then just add\n // the quote and advance to that character\n\n if (tokenFollowingEscape !== null && (isTokenQuote(tokenFollowingEscape, parserOptions) || isTokenEscapeCharacter(tokenFollowingEscape, parserOptions))) {\n characters.push(tokenFollowingEscape.token);\n nextToken = tokenFollowingEscape;\n } else if (isQuote) {\n // if the escape is also a quote then we found our closing quote and finish early\n foundClosingQuote = true;\n } else {\n // other wise add the escape token to the characters since it wast escaping anything\n characters.push(nextToken.token);\n }\n } else if (isQuote) {\n // we found our closing quote!\n foundClosingQuote = true;\n } else {\n // add the token to the characters\n characters.push(nextToken.token);\n }\n }\n\n scanner.advancePastToken(nextToken);\n }\n\n return {\n col: this.columnFormatter.format(characters.join('')),\n foundClosingQuote: foundClosingQuote\n };\n }\n }, {\n key: \"checkForMalformedColumn\",\n value: function checkForMalformedColumn(scanner) {\n var parserOptions = this.parserOptions;\n var nextNonSpaceToken = scanner.nextNonSpaceToken;\n\n if (nextNonSpaceToken) {\n var isNextTokenADelimiter = isTokenDelimiter(nextNonSpaceToken, parserOptions);\n var isNextTokenARowDelimiter = isTokenRowDelimiter(nextNonSpaceToken);\n\n if (!(isNextTokenADelimiter || isNextTokenARowDelimiter)) {\n // if the final quote was NOT followed by a column (,) or row(\\n) delimiter then its a bad column\n // tldr: only part of the column was quoted\n var linePreview = scanner.lineFromCursor.substr(0, 10).replace(/[\\r\\n]/g, \"\\\\n'\");\n throw new Error(\"Parse Error: expected: '\".concat(parserOptions.escapedDelimiter, \"' OR new line got: '\").concat(nextNonSpaceToken.token, \"'. at '\").concat(linePreview));\n }\n\n scanner.advanceToToken(nextNonSpaceToken);\n } else if (!scanner.hasMoreData) {\n scanner.advancePastLine();\n }\n }\n }]);\n\n return QuotedColumnParser;\n}();\n\nexports.QuotedColumnParser = QuotedColumnParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYXJzZXIvY29sdW1uL1F1b3RlZENvbHVtblBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQSxpQkFBQSxHQUFBLE9BQUEsQ0FBQSxtQkFBQSxDQUFBOztBQUdBLElBQUEsT0FBQSxHQUFBLE9BQUEsQ0FBQSxVQUFBLENBQUE7O3FCQUV3RixPQUFBLENBQUEsSztJQUFoRixnQixrQkFBQSxnQjtJQUFrQixtQixrQkFBQSxtQjtJQUFxQixzQixrQkFBQSxzQjtJQUF3QixZLGtCQUFBLFk7O0lBTzFELGtCO0FBS1QsOEJBQW1CLGFBQW5CLEVBQStDO0FBQUE7O0FBQzNDLFNBQUssYUFBTCxHQUFxQixhQUFyQjtBQUNBLFNBQUssZUFBTCxHQUF1QixJQUFJLGlCQUFBLENBQUEsZUFBSixDQUFvQixhQUFwQixDQUF2QjtBQUNIOzs7OzBCQUVZLE8sRUFBZ0I7QUFDekIsVUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBYixFQUFnQztBQUM1QixlQUFPLElBQVA7QUFDSDs7QUFDRCxVQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBL0I7O0FBSnlCLGtDQUtVLEtBQUssdUJBQUwsQ0FBNkIsT0FBN0IsQ0FMVjtBQUFBLFVBS2pCLGlCQUxpQix5QkFLakIsaUJBTGlCO0FBQUEsVUFLRSxHQUxGLHlCQUtFLEdBTEY7O0FBTXpCLFVBQUksQ0FBQyxpQkFBTCxFQUF3QjtBQUNwQjtBQUNBLFFBQUEsT0FBTyxDQUFDLFNBQVIsQ0FBa0IsY0FBbEIsRUFGb0IsQ0FHcEI7QUFDQTs7QUFDQSxZQUFJLENBQUMsT0FBTyxDQUFDLFdBQWIsRUFBMEI7QUFDdEIsZ0JBQU0sSUFBSSxLQUFKLDBDQUVFLEtBQUssYUFBTCxDQUFtQixLQUFuQixJQUE0QixFQUY5Qiw0QkFHZ0IsT0FBTyxDQUFDLGNBQVIsQ0FBdUIsT0FBdkIsQ0FBK0IsU0FBL0IsRUFBMEMsTUFBMUMsQ0FIaEIsT0FBTjtBQUtIOztBQUNELGVBQU8sSUFBUDtBQUNIOztBQUNELFdBQUssdUJBQUwsQ0FBNkIsT0FBN0I7QUFDQSxhQUFPLEdBQVA7QUFDSDs7OzRDQUUrQixPLEVBQWdCO0FBQUEsVUFDcEMsYUFEb0MsR0FDbEIsSUFEa0IsQ0FDcEMsYUFEb0M7QUFFNUMsVUFBSSxrQkFBa0IsR0FBRyxLQUF6QjtBQUNBLFVBQUksaUJBQWlCLEdBQUcsS0FBeEI7QUFDQSxVQUFNLFVBQVUsR0FBRyxFQUFuQjtBQUNBLFVBQUksU0FBUyxHQUFpQixPQUFPLENBQUMsa0JBQXRDOztBQUNBLGFBQU8sQ0FBQyxpQkFBRCxJQUFzQixTQUFTLEtBQUssSUFBM0MsRUFBaUQsU0FBUyxHQUFHLE9BQU8sQ0FBQyxrQkFBckUsRUFBeUY7QUFDckYsWUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFNBQUQsRUFBWSxhQUFaLENBQTVCLENBRHFGLENBRXJGOztBQUNBLFlBQUksQ0FBQyxrQkFBRCxJQUF1QixPQUEzQixFQUFvQztBQUNoQyxVQUFBLGtCQUFrQixHQUFHLElBQXJCO0FBQ0gsU0FGRCxNQUVPLElBQUksa0JBQUosRUFBd0I7QUFDM0IsY0FBSSxzQkFBc0IsQ0FBQyxTQUFELEVBQVksYUFBWixDQUExQixFQUFzRDtBQUNsRDtBQUNBLFlBQUEsT0FBTyxDQUFDLGdCQUFSLENBQXlCLFNBQXpCO0FBQ0EsZ0JBQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLGtCQUFyQyxDQUhrRCxDQUlsRDtBQUNBOztBQUNBLGdCQUNJLG9CQUFvQixLQUFLLElBQXpCLEtBQ0MsWUFBWSxDQUFDLG9CQUFELEVBQXVCLGFBQXZCLENBQVosSUFDRyxzQkFBc0IsQ0FBQyxvQkFBRCxFQUF1QixhQUF2QixDQUYxQixDQURKLEVBSUU7QUFDRSxjQUFBLFVBQVUsQ0FBQyxJQUFYLENBQWdCLG9CQUFvQixDQUFDLEtBQXJDO0FBQ0EsY0FBQSxTQUFTLEdBQUcsb0JBQVo7QUFDSCxhQVBELE1BT08sSUFBSSxPQUFKLEVBQWE7QUFDaEI7QUFDQSxjQUFBLGlCQUFpQixHQUFHLElBQXBCO0FBQ0gsYUFITSxNQUdBO0FBQ0g7QUFDQSxjQUFBLFVBQVUsQ0FBQyxJQUFYLENBQWdCLFNBQVMsQ0FBQyxLQUExQjtBQUNIO0FBQ0osV0FwQkQsTUFvQk8sSUFBSSxPQUFKLEVBQWE7QUFDaEI7QUFDQSxZQUFBLGlCQUFpQixHQUFHLElBQXBCO0FBQ0gsV0FITSxNQUdBO0FBQ0g7QUFDQSxZQUFBLFVBQVUsQ0FBQyxJQUFYLENBQWdCLFNBQVMsQ0FBQyxLQUExQjtBQUNIO0FBQ0o7O0FBQ0QsUUFBQSxPQUFPLENBQUMsZ0JBQVIsQ0FBeUIsU0FBekI7QUFDSDs7QUFDRCxhQUFPO0FBQUUsUUFBQSxHQUFHLEVBQUUsS0FBSyxlQUFMLENBQXFCLE1BQXJCLENBQTRCLFVBQVUsQ0FBQyxJQUFYLENBQWdCLEVBQWhCLENBQTVCLENBQVA7QUFBeUQsUUFBQSxpQkFBaUIsRUFBakI7QUFBekQsT0FBUDtBQUNIOzs7NENBRStCLE8sRUFBZ0I7QUFBQSxVQUNwQyxhQURvQyxHQUNsQixJQURrQixDQUNwQyxhQURvQztBQUFBLFVBRXBDLGlCQUZvQyxHQUVkLE9BRmMsQ0FFcEMsaUJBRm9DOztBQUc1QyxVQUFJLGlCQUFKLEVBQXVCO0FBQ25CLFlBQU0scUJBQXFCLEdBQUcsZ0JBQWdCLENBQUMsaUJBQUQsRUFBb0IsYUFBcEIsQ0FBOUM7QUFDQSxZQUFNLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDLGlCQUFELENBQXBEOztBQUNBLFlBQUksRUFBRSxxQkFBcUIsSUFBSSx3QkFBM0IsQ0FBSixFQUEwRDtBQUN0RDtBQUNBO0FBQ0EsY0FBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQVIsQ0FBdUIsTUFBdkIsQ0FBOEIsQ0FBOUIsRUFBaUMsRUFBakMsRUFBcUMsT0FBckMsQ0FBNkMsU0FBN0MsRUFBd0QsTUFBeEQsQ0FBcEI7QUFDQSxnQkFBTSxJQUFJLEtBQUosbUNBQ3lCLGFBQWEsQ0FBQyxnQkFEdkMsaUNBQzhFLGlCQUFpQixDQUFDLEtBRGhHLG9CQUMrRyxXQUQvRyxFQUFOO0FBR0g7O0FBQ0QsUUFBQSxPQUFPLENBQUMsY0FBUixDQUF1QixpQkFBdkI7QUFDSCxPQVpELE1BWU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFiLEVBQTBCO0FBQzdCLFFBQUEsT0FBTyxDQUFDLGVBQVI7QUFDSDtBQUNKOzs7Ozs7QUFqR0wsT0FBQSxDQUFBLGtCQUFBLEdBQUEsa0JBQUEiLCJzb3VyY2VSb290IjoiIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar ColumnParser_1 = require(\"./ColumnParser\");\n\nObject.defineProperty(exports, \"ColumnParser\", {\n enumerable: true,\n get: function get() {\n return ColumnParser_1.ColumnParser;\n }\n});\n\nvar NonQuotedColumnParser_1 = require(\"./NonQuotedColumnParser\");\n\nObject.defineProperty(exports, \"NonQuotedColumnParser\", {\n enumerable: true,\n get: function get() {\n return NonQuotedColumnParser_1.NonQuotedColumnParser;\n }\n});\n\nvar QuotedColumnParser_1 = require(\"./QuotedColumnParser\");\n\nObject.defineProperty(exports, \"QuotedColumnParser\", {\n enumerable: true,\n get: function get() {\n return QuotedColumnParser_1.QuotedColumnParser;\n }\n});\n\nvar ColumnFormatter_1 = require(\"./ColumnFormatter\");\n\nObject.defineProperty(exports, \"ColumnFormatter\", {\n enumerable: true,\n get: function get() {\n return ColumnFormatter_1.ColumnFormatter;\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYXJzZXIvY29sdW1uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUEsY0FBQSxHQUFBLE9BQUEsQ0FBQSxnQkFBQSxDQUFBOztBQUFTLE1BQUEsQ0FBQSxjQUFBLENBQUEsT0FBQSxFQUFBLGNBQUEsRUFBQTtBQUFBLEVBQUEsVUFBQSxFQUFBLElBQUE7QUFBQSxFQUFBLEdBQUEsRUFBQSxlQUFBO0FBQUEsV0FBQSxjQUFBLENBQUEsWUFBQTtBQUFZO0FBQVosQ0FBQTs7QUFDVCxJQUFBLHVCQUFBLEdBQUEsT0FBQSxDQUFBLHlCQUFBLENBQUE7O0FBQVMsTUFBQSxDQUFBLGNBQUEsQ0FBQSxPQUFBLEVBQUEsdUJBQUEsRUFBQTtBQUFBLEVBQUEsVUFBQSxFQUFBLElBQUE7QUFBQSxFQUFBLEdBQUEsRUFBQSxlQUFBO0FBQUEsV0FBQSx1QkFBQSxDQUFBLHFCQUFBO0FBQXFCO0FBQXJCLENBQUE7O0FBQ1QsSUFBQSxvQkFBQSxHQUFBLE9BQUEsQ0FBQSxzQkFBQSxDQUFBOztBQUFTLE1BQUEsQ0FBQSxjQUFBLENBQUEsT0FBQSxFQUFBLG9CQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsb0JBQUEsQ0FBQSxrQkFBQTtBQUFrQjtBQUFsQixDQUFBOztBQUNULElBQUEsaUJBQUEsR0FBQSxPQUFBLENBQUEsbUJBQUEsQ0FBQTs7QUFBUyxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxpQkFBQSxFQUFBO0FBQUEsRUFBQSxVQUFBLEVBQUEsSUFBQTtBQUFBLEVBQUEsR0FBQSxFQUFBLGVBQUE7QUFBQSxXQUFBLGlCQUFBLENBQUEsZUFBQTtBQUFlO0FBQWYsQ0FBQSIsInNvdXJjZVJvb3QiOiIifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar Parser_1 = require(\"./Parser\");\n\nObject.defineProperty(exports, \"Parser\", {\n enumerable: true,\n get: function get() {\n return Parser_1.Parser;\n }\n});\n\nvar RowParser_1 = require(\"./RowParser\");\n\nObject.defineProperty(exports, \"RowParser\", {\n enumerable: true,\n get: function get() {\n return RowParser_1.RowParser;\n }\n});\n\nvar Scanner_1 = require(\"./Scanner\");\n\nObject.defineProperty(exports, \"Scanner\", {\n enumerable: true,\n get: function get() {\n return Scanner_1.Scanner;\n }\n});\n\nvar Token_1 = require(\"./Token\");\n\nObject.defineProperty(exports, \"Token\", {\n enumerable: true,\n get: function get() {\n return Token_1.Token;\n }\n});\n\nvar column_1 = require(\"./column\");\n\nObject.defineProperty(exports, \"ColumnParser\", {\n enumerable: true,\n get: function get() {\n return column_1.ColumnParser;\n }\n});\nObject.defineProperty(exports, \"NonQuotedColumnParser\", {\n enumerable: true,\n get: function get() {\n return column_1.NonQuotedColumnParser;\n }\n});\nObject.defineProperty(exports, \"QuotedColumnParser\", {\n enumerable: true,\n get: function get() {\n return column_1.QuotedColumnParser;\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQSxRQUFBLEdBQUEsT0FBQSxDQUFBLFVBQUEsQ0FBQTs7QUFBUyxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxRQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsUUFBQSxDQUFBLE1BQUE7QUFBTTtBQUFOLENBQUE7O0FBQ1QsSUFBQSxXQUFBLEdBQUEsT0FBQSxDQUFBLGFBQUEsQ0FBQTs7QUFBUyxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxXQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsV0FBQSxDQUFBLFNBQUE7QUFBUztBQUFULENBQUE7O0FBQ1QsSUFBQSxTQUFBLEdBQUEsT0FBQSxDQUFBLFdBQUEsQ0FBQTs7QUFBUyxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxTQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsU0FBQSxDQUFBLE9BQUE7QUFBTztBQUFQLENBQUE7O0FBQ1QsSUFBQSxPQUFBLEdBQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQTs7QUFBUyxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxPQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsT0FBQSxDQUFBLEtBQUE7QUFBSztBQUFMLENBQUE7O0FBQ1QsSUFBQSxRQUFBLEdBQUEsT0FBQSxDQUFBLFVBQUEsQ0FBQTs7QUFBUyxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxjQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsUUFBQSxDQUFBLFlBQUE7QUFBWTtBQUFaLENBQUE7QUFBYyxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSx1QkFBQSxFQUFBO0FBQUEsRUFBQSxVQUFBLEVBQUEsSUFBQTtBQUFBLEVBQUEsR0FBQSxFQUFBLGVBQUE7QUFBQSxXQUFBLFFBQUEsQ0FBQSxxQkFBQTtBQUFxQjtBQUFyQixDQUFBO0FBQXVCLE1BQUEsQ0FBQSxjQUFBLENBQUEsT0FBQSxFQUFBLG9CQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsUUFBQSxDQUFBLGtCQUFBO0FBQWtCO0FBQWxCLENBQUEiLCJzb3VyY2VSb290IjoiIn0=","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.HeaderTransformer = void 0;\n\nvar lodash_isundefined_1 = __importDefault(require(\"lodash.isundefined\"));\n\nvar lodash_isfunction_1 = __importDefault(require(\"lodash.isfunction\"));\n\nvar lodash_uniq_1 = __importDefault(require(\"lodash.uniq\"));\n\nvar lodash_groupby_1 = __importDefault(require(\"lodash.groupby\"));\n\nvar HeaderTransformer = /*#__PURE__*/function () {\n function HeaderTransformer(parserOptions) {\n _classCallCheck(this, HeaderTransformer);\n\n this.headers = null;\n this.receivedHeaders = false;\n this.shouldUseFirstRow = false;\n this.processedFirstRow = false;\n this.headersLength = 0;\n this.parserOptions = parserOptions;\n\n if (parserOptions.headers === true) {\n this.shouldUseFirstRow = true;\n } else if (Array.isArray(parserOptions.headers)) {\n this.setHeaders(parserOptions.headers);\n } else if (lodash_isfunction_1.default(parserOptions.headers)) {\n this.headersTransform = parserOptions.headers;\n }\n }\n\n _createClass(HeaderTransformer, [{\n key: \"transform\",\n value: function transform(row, cb) {\n if (!this.shouldMapRow(row)) {\n return cb(null, {\n row: null,\n isValid: true\n });\n }\n\n return cb(null, this.processRow(row));\n }\n }, {\n key: \"shouldMapRow\",\n value: function shouldMapRow(row) {\n var parserOptions = this.parserOptions;\n\n if (!this.headersTransform && parserOptions.renameHeaders && !this.processedFirstRow) {\n if (!this.receivedHeaders) {\n throw new Error('Error renaming headers: new headers must be provided in an array');\n }\n\n this.processedFirstRow = true;\n return false;\n }\n\n if (!this.receivedHeaders && Array.isArray(row)) {\n if (this.headersTransform) {\n this.setHeaders(this.headersTransform(row));\n } else if (this.shouldUseFirstRow) {\n this.setHeaders(row);\n } else {\n // dont do anything with the headers if we didnt receive a transform or shouldnt use the first row.\n return true;\n }\n\n return false;\n }\n\n return true;\n }\n }, {\n key: \"processRow\",\n value: function processRow(row) {\n if (!this.headers) {\n return {\n row: row,\n isValid: true\n };\n }\n\n var parserOptions = this.parserOptions;\n\n if (!parserOptions.discardUnmappedColumns && row.length > this.headersLength) {\n if (!parserOptions.strictColumnHandling) {\n throw new Error(\"Unexpected Error: column header mismatch expected: \".concat(this.headersLength, \" columns got: \").concat(row.length));\n }\n\n return {\n row: row,\n isValid: false,\n reason: \"Column header mismatch expected: \".concat(this.headersLength, \" columns got: \").concat(row.length)\n };\n }\n\n if (parserOptions.strictColumnHandling && row.length < this.headersLength) {\n return {\n row: row,\n isValid: false,\n reason: \"Column header mismatch expected: \".concat(this.headersLength, \" columns got: \").concat(row.length)\n };\n }\n\n return {\n row: this.mapHeaders(row),\n isValid: true\n };\n }\n }, {\n key: \"mapHeaders\",\n value: function mapHeaders(row) {\n var rowMap = {};\n var headers = this.headers,\n headersLength = this.headersLength;\n\n for (var i = 0; i < headersLength; i += 1) {\n var header = headers[i];\n\n if (!lodash_isundefined_1.default(header)) {\n var val = row[i]; // eslint-disable-next-line no-param-reassign\n\n if (lodash_isundefined_1.default(val)) {\n rowMap[header] = '';\n } else {\n rowMap[header] = val;\n }\n }\n }\n\n return rowMap;\n }\n }, {\n key: \"setHeaders\",\n value: function setHeaders(headers) {\n var _a;\n\n var filteredHeaders = headers.filter(function (h) {\n return !!h;\n });\n\n if (lodash_uniq_1.default(filteredHeaders).length !== filteredHeaders.length) {\n var grouped = lodash_groupby_1.default(filteredHeaders);\n var duplicates = Object.keys(grouped).filter(function (dup) {\n return grouped[dup].length > 1;\n });\n throw new Error(\"Duplicate headers found \".concat(JSON.stringify(duplicates)));\n }\n\n this.headers = headers;\n this.receivedHeaders = true;\n this.headersLength = ((_a = this.headers) === null || _a === void 0 ? void 0 : _a.length) || 0;\n }\n }]);\n\n return HeaderTransformer;\n}();\n\nexports.HeaderTransformer = HeaderTransformer;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1zL0hlYWRlclRyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBLG9CQUFBLEdBQUEsZUFBQSxDQUFBLE9BQUEsQ0FBQSxvQkFBQSxDQUFBLENBQUE7O0FBQ0EsSUFBQSxtQkFBQSxHQUFBLGVBQUEsQ0FBQSxPQUFBLENBQUEsbUJBQUEsQ0FBQSxDQUFBOztBQUNBLElBQUEsYUFBQSxHQUFBLGVBQUEsQ0FBQSxPQUFBLENBQUEsYUFBQSxDQUFBLENBQUE7O0FBQ0EsSUFBQSxnQkFBQSxHQUFBLGVBQUEsQ0FBQSxPQUFBLENBQUEsZ0JBQUEsQ0FBQSxDQUFBOztJQVlhLGlCO0FBZVQsNkJBQW1CLGFBQW5CLEVBQStDO0FBQUE7O0FBWi9DLFNBQUEsT0FBQSxHQUE4QixJQUE5QjtBQUVRLFNBQUEsZUFBQSxHQUFrQixLQUFsQjtBQUVTLFNBQUEsaUJBQUEsR0FBNkIsS0FBN0I7QUFFVCxTQUFBLGlCQUFBLEdBQW9CLEtBQXBCO0FBRUEsU0FBQSxhQUFBLEdBQWdCLENBQWhCO0FBS0osU0FBSyxhQUFMLEdBQXFCLGFBQXJCOztBQUNBLFFBQUksYUFBYSxDQUFDLE9BQWQsS0FBMEIsSUFBOUIsRUFBb0M7QUFDaEMsV0FBSyxpQkFBTCxHQUF5QixJQUF6QjtBQUNILEtBRkQsTUFFTyxJQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsYUFBYSxDQUFDLE9BQTVCLENBQUosRUFBMEM7QUFDN0MsV0FBSyxVQUFMLENBQWdCLGFBQWEsQ0FBQyxPQUE5QjtBQUNILEtBRk0sTUFFQSxJQUFJLG1CQUFBLENBQUEsT0FBQSxDQUFXLGFBQWEsQ0FBQyxPQUF6QixDQUFKLEVBQXVDO0FBQzFDLFdBQUssZ0JBQUwsR0FBd0IsYUFBYSxDQUFDLE9BQXRDO0FBQ0g7QUFDSjs7Ozs4QkFFZ0IsRyxFQUFlLEUsRUFBMkI7QUFDdkQsVUFBSSxDQUFDLEtBQUssWUFBTCxDQUFrQixHQUFsQixDQUFMLEVBQTZCO0FBQ3pCLGVBQU8sRUFBRSxDQUFDLElBQUQsRUFBTztBQUFFLFVBQUEsR0FBRyxFQUFFLElBQVA7QUFBYSxVQUFBLE9BQU8sRUFBRTtBQUF0QixTQUFQLENBQVQ7QUFDSDs7QUFDRCxhQUFPLEVBQUUsQ0FBQyxJQUFELEVBQU8sS0FBSyxVQUFMLENBQWdCLEdBQWhCLENBQVAsQ0FBVDtBQUNIOzs7aUNBRW9CLEcsRUFBUTtBQUFBLFVBQ2pCLGFBRGlCLEdBQ0MsSUFERCxDQUNqQixhQURpQjs7QUFFekIsVUFBSSxDQUFDLEtBQUssZ0JBQU4sSUFBMEIsYUFBYSxDQUFDLGFBQXhDLElBQXlELENBQUMsS0FBSyxpQkFBbkUsRUFBc0Y7QUFDbEYsWUFBSSxDQUFDLEtBQUssZUFBVixFQUEyQjtBQUN2QixnQkFBTSxJQUFJLEtBQUosQ0FBVSxrRUFBVixDQUFOO0FBQ0g7O0FBQ0QsYUFBSyxpQkFBTCxHQUF5QixJQUF6QjtBQUNBLGVBQU8sS0FBUDtBQUNIOztBQUNELFVBQUksQ0FBQyxLQUFLLGVBQU4sSUFBeUIsS0FBSyxDQUFDLE9BQU4sQ0FBYyxHQUFkLENBQTdCLEVBQWlEO0FBQzdDLFlBQUksS0FBSyxnQkFBVCxFQUEyQjtBQUN2QixlQUFLLFVBQUwsQ0FBZ0IsS0FBSyxnQkFBTCxDQUFzQixHQUF0QixDQUFoQjtBQUNILFNBRkQsTUFFTyxJQUFJLEtBQUssaUJBQVQsRUFBNEI7QUFDL0IsZUFBSyxVQUFMLENBQWdCLEdBQWhCO0FBQ0gsU0FGTSxNQUVBO0FBQ0g7QUFDQSxpQkFBTyxJQUFQO0FBQ0g7O0FBQ0QsZUFBTyxLQUFQO0FBQ0g7O0FBQ0QsYUFBTyxJQUFQO0FBQ0g7OzsrQkFFa0IsRyxFQUFxQjtBQUNwQyxVQUFJLENBQUMsS0FBSyxPQUFWLEVBQW1CO0FBQ2YsZUFBTztBQUFFLFVBQUEsR0FBRyxFQUFHLEdBQVI7QUFBNEIsVUFBQSxPQUFPLEVBQUU7QUFBckMsU0FBUDtBQUNIOztBQUhtQyxVQUk1QixhQUo0QixHQUlWLElBSlUsQ0FJNUIsYUFKNEI7O0FBS3BDLFVBQUksQ0FBQyxhQUFhLENBQUMsc0JBQWYsSUFBeUMsR0FBRyxDQUFDLE1BQUosR0FBYSxLQUFLLGFBQS9ELEVBQThFO0FBQzFFLFlBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW5CLEVBQXlDO0FBQ3JDLGdCQUFNLElBQUksS0FBSiw4REFDb0QsS0FBSyxhQUR6RCwyQkFDdUYsR0FBRyxDQUFDLE1BRDNGLEVBQU47QUFHSDs7QUFDRCxlQUFPO0FBQ0gsVUFBQSxHQUFHLEVBQUcsR0FESDtBQUVILFVBQUEsT0FBTyxFQUFFLEtBRk47QUFHSCxVQUFBLE1BQU0sNkNBQXNDLEtBQUssYUFBM0MsMkJBQXlFLEdBQUcsQ0FBQyxNQUE3RTtBQUhILFNBQVA7QUFLSDs7QUFDRCxVQUFJLGFBQWEsQ0FBQyxvQkFBZCxJQUFzQyxHQUFHLENBQUMsTUFBSixHQUFhLEtBQUssYUFBNUQsRUFBMkU7QUFDdkUsZUFBTztBQUNILFVBQUEsR0FBRyxFQUFHLEdBREg7QUFFSCxVQUFBLE9BQU8sRUFBRSxLQUZOO0FBR0gsVUFBQSxNQUFNLDZDQUFzQyxLQUFLLGFBQTNDLDJCQUF5RSxHQUFHLENBQUMsTUFBN0U7QUFISCxTQUFQO0FBS0g7O0FBQ0QsYUFBTztBQUFFLFFBQUEsR0FBRyxFQUFFLEtBQUssVUFBTCxDQUFnQixHQUFoQixDQUFQO0FBQTZCLFFBQUEsT0FBTyxFQUFFO0FBQXRDLE9BQVA7QUFDSDs7OytCQUVrQixHLEVBQXFCO0FBQ3BDLFVBQU0sTUFBTSxHQUFXLEVBQXZCO0FBRG9DLFVBRTVCLE9BRjRCLEdBRUQsSUFGQyxDQUU1QixPQUY0QjtBQUFBLFVBRW5CLGFBRm1CLEdBRUQsSUFGQyxDQUVuQixhQUZtQjs7QUFHcEMsV0FBSyxJQUFJLENBQUMsR0FBRyxDQUFiLEVBQWdCLENBQUMsR0FBRyxhQUFwQixFQUFtQyxDQUFDLElBQUksQ0FBeEMsRUFBMkM7QUFDdkMsWUFBTSxNQUFNLEdBQUksT0FBb0IsQ0FBQyxDQUFELENBQXBDOztBQUNBLFlBQUksQ0FBQyxvQkFBQSxDQUFBLE9BQUEsQ0FBWSxNQUFaLENBQUwsRUFBMEI7QUFDdEIsY0FBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUQsQ0FBZixDQURzQixDQUV0Qjs7QUFDQSxjQUFJLG9CQUFBLENBQUEsT0FBQSxDQUFZLEdBQVosQ0FBSixFQUFzQjtBQUNsQixZQUFBLE1BQU0sQ0FBQyxNQUFELENBQU4sR0FBaUIsRUFBakI7QUFDSCxXQUZELE1BRU87QUFDSCxZQUFBLE1BQU0sQ0FBQyxNQUFELENBQU4sR0FBaUIsR0FBakI7QUFDSDtBQUNKO0FBQ0o7O0FBQ0QsYUFBTyxNQUFQO0FBQ0g7OzsrQkFFa0IsTyxFQUFvQjs7O0FBQ25DLFVBQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFSLENBQWUsVUFBQyxDQUFEO0FBQUEsZUFBTyxDQUFDLENBQUMsQ0FBVDtBQUFBLE9BQWYsQ0FBeEI7O0FBQ0EsVUFBSSxhQUFBLENBQUEsT0FBQSxDQUFLLGVBQUwsRUFBc0IsTUFBdEIsS0FBaUMsZUFBZSxDQUFDLE1BQXJELEVBQTZEO0FBQ3pELFlBQU0sT0FBTyxHQUFHLGdCQUFBLENBQUEsT0FBQSxDQUFRLGVBQVIsQ0FBaEI7QUFDQSxZQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBUCxDQUFZLE9BQVosRUFBcUIsTUFBckIsQ0FBNEIsVUFBQyxHQUFEO0FBQUEsaUJBQVMsT0FBTyxDQUFDLEdBQUQsQ0FBUCxDQUFhLE1BQWIsR0FBc0IsQ0FBL0I7QUFBQSxTQUE1QixDQUFuQjtBQUNBLGNBQU0sSUFBSSxLQUFKLG1DQUFxQyxJQUFJLENBQUMsU0FBTCxDQUFlLFVBQWYsQ0FBckMsRUFBTjtBQUNIOztBQUNELFdBQUssT0FBTCxHQUFlLE9BQWY7QUFDQSxXQUFLLGVBQUwsR0FBdUIsSUFBdkI7QUFDQSxXQUFLLGFBQUwsR0FBcUIsQ0FBQSxDQUFBLEVBQUEsR0FBQSxLQUFLLE9BQUwsTUFBWSxJQUFaLElBQVksRUFBQSxLQUFBLEtBQUEsQ0FBWixHQUFZLEtBQUEsQ0FBWixHQUFZLEVBQUEsQ0FBRSxNQUFkLEtBQXdCLENBQTdDO0FBQ0g7Ozs7OztBQS9HTCxPQUFBLENBQUEsaUJBQUEsR0FBQSxpQkFBQSIsInNvdXJjZVJvb3QiOiIifQ==","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RowTransformerValidator = void 0;\n\nvar lodash_isfunction_1 = __importDefault(require(\"lodash.isfunction\"));\n\nvar types_1 = require(\"../types\");\n\nvar RowTransformerValidator = /*#__PURE__*/function () {\n function RowTransformerValidator() {\n _classCallCheck(this, RowTransformerValidator);\n\n this._rowTransform = null;\n this._rowValidator = null;\n }\n\n _createClass(RowTransformerValidator, [{\n key: \"transformAndValidate\",\n value: function transformAndValidate(row, cb) {\n var _this = this;\n\n return this.callTransformer(row, function (transformErr, transformedRow) {\n if (transformErr) {\n return cb(transformErr);\n }\n\n if (!transformedRow) {\n return cb(null, {\n row: null,\n isValid: true\n });\n }\n\n return _this.callValidator(transformedRow, function (validateErr, validationResult) {\n if (validateErr) {\n return cb(validateErr);\n }\n\n if (validationResult && !validationResult.isValid) {\n return cb(null, {\n row: transformedRow,\n isValid: false,\n reason: validationResult.reason\n });\n }\n\n return cb(null, {\n row: transformedRow,\n isValid: true\n });\n });\n });\n }\n }, {\n key: \"callTransformer\",\n value: function callTransformer(row, cb) {\n if (!this._rowTransform) {\n return cb(null, row);\n }\n\n return this._rowTransform(row, cb);\n }\n }, {\n key: \"callValidator\",\n value: function callValidator(row, cb) {\n if (!this._rowValidator) {\n return cb(null, {\n row: row,\n isValid: true\n });\n }\n\n return this._rowValidator(row, cb);\n }\n }, {\n key: \"rowTransform\",\n set: function set(transformFunction) {\n if (!lodash_isfunction_1.default(transformFunction)) {\n throw new TypeError('The transform should be a function');\n }\n\n this._rowTransform = RowTransformerValidator.createTransform(transformFunction);\n }\n }, {\n key: \"rowValidator\",\n set: function set(validateFunction) {\n if (!lodash_isfunction_1.default(validateFunction)) {\n throw new TypeError('The validate should be a function');\n }\n\n this._rowValidator = RowTransformerValidator.createValidator(validateFunction);\n }\n }], [{\n key: \"createTransform\",\n value: function createTransform(transformFunction) {\n if (types_1.isSyncTransform(transformFunction)) {\n return function (row, cb) {\n var transformed = null;\n\n try {\n transformed = transformFunction(row);\n } catch (e) {\n return cb(e);\n }\n\n return cb(null, transformed);\n };\n }\n\n return transformFunction;\n }\n }, {\n key: \"createValidator\",\n value: function createValidator(validateFunction) {\n if (types_1.isSyncValidate(validateFunction)) {\n return function (row, cb) {\n cb(null, {\n row: row,\n isValid: validateFunction(row)\n });\n };\n }\n\n return function (row, cb) {\n validateFunction(row, function (err, isValid, reason) {\n if (err) {\n return cb(err);\n }\n\n if (isValid) {\n return cb(null, {\n row: row,\n isValid: isValid,\n reason: reason\n });\n }\n\n return cb(null, {\n row: row,\n isValid: false,\n reason: reason\n });\n });\n };\n }\n }]);\n\n return RowTransformerValidator;\n}();\n\nexports.RowTransformerValidator = RowTransformerValidator;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1zL1Jvd1RyYW5zZm9ybWVyVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBLG1CQUFBLEdBQUEsZUFBQSxDQUFBLE9BQUEsQ0FBQSxtQkFBQSxDQUFBLENBQUE7O0FBQ0EsSUFBQSxPQUFBLEdBQUEsT0FBQSxDQUFBLFVBQUEsQ0FBQTs7SUFhYSx1QjtBQUFiLHFDQUFBO0FBQUE7O0FBcUNZLFNBQUEsYUFBQSxHQUFnRCxJQUFoRDtBQUVBLFNBQUEsYUFBQSxHQUF3QyxJQUF4QztBQWlEWDs7Ozt5Q0FqQytCLEcsRUFBUSxFLEVBQTJCO0FBQUE7O0FBQzNELGFBQU8sS0FBSyxlQUFMLENBQXFCLEdBQXJCLEVBQTBCLFVBQUMsWUFBRCxFQUFlLGNBQWYsRUFBdUM7QUFDcEUsWUFBSSxZQUFKLEVBQWtCO0FBQ2QsaUJBQU8sRUFBRSxDQUFDLFlBQUQsQ0FBVDtBQUNIOztBQUNELFlBQUksQ0FBQyxjQUFMLEVBQXFCO0FBQ2pCLGlCQUFPLEVBQUUsQ0FBQyxJQUFELEVBQU87QUFBRSxZQUFBLEdBQUcsRUFBRSxJQUFQO0FBQWEsWUFBQSxPQUFPLEVBQUU7QUFBdEIsV0FBUCxDQUFUO0FBQ0g7O0FBQ0QsZUFBTyxLQUFJLENBQUMsYUFBTCxDQUFtQixjQUFuQixFQUFtQyxVQUFDLFdBQUQsRUFBYyxnQkFBZCxFQUF3QztBQUM5RSxjQUFJLFdBQUosRUFBaUI7QUFDYixtQkFBTyxFQUFFLENBQUMsV0FBRCxDQUFUO0FBQ0g7O0FBQ0QsY0FBSSxnQkFBZ0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQTFDLEVBQW1EO0FBQy9DLG1CQUFPLEVBQUUsQ0FBQyxJQUFELEVBQU87QUFBRSxjQUFBLEdBQUcsRUFBRSxjQUFQO0FBQXVCLGNBQUEsT0FBTyxFQUFFLEtBQWhDO0FBQXVDLGNBQUEsTUFBTSxFQUFFLGdCQUFnQixDQUFDO0FBQWhFLGFBQVAsQ0FBVDtB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar RowTransformerValidator_1 = require(\"./RowTransformerValidator\");\n\nObject.defineProperty(exports, \"RowTransformerValidator\", {\n enumerable: true,\n get: function get() {\n return RowTransformerValidator_1.RowTransformerValidator;\n }\n});\n\nvar HeaderTransformer_1 = require(\"./HeaderTransformer\");\n\nObject.defineProperty(exports, \"HeaderTransformer\", {\n enumerable: true,\n get: function get() {\n return HeaderTransformer_1.HeaderTransformer;\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUEseUJBQUEsR0FBQSxPQUFBLENBQUEsMkJBQUEsQ0FBQTs7QUFBUyxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSx5QkFBQSxFQUFBO0FBQUEsRUFBQSxVQUFBLEVBQUEsSUFBQTtBQUFBLEVBQUEsR0FBQSxFQUFBLGVBQUE7QUFBQSxXQUFBLHlCQUFBLENBQUEsdUJBQUE7QUFBdUI7QUFBdkIsQ0FBQTs7QUFDVCxJQUFBLG1CQUFBLEdBQUEsT0FBQSxDQUFBLHFCQUFBLENBQUE7O0FBQVMsTUFBQSxDQUFBLGNBQUEsQ0FBQSxPQUFBLEVBQUEsbUJBQUEsRUFBQTtBQUFBLEVBQUEsVUFBQSxFQUFBLElBQUE7QUFBQSxFQUFBLEdBQUEsRUFBQSxlQUFBO0FBQUEsV0FBQSxtQkFBQSxDQUFBLGlCQUFBO0FBQWlCO0FBQWpCLENBQUEiLCJzb3VyY2VSb290IjoiIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isSyncValidate = exports.isSyncTransform = void 0;\n\nexports.isSyncTransform = function (transform) {\n return transform.length === 1;\n};\n\nexports.isSyncValidate = function (validate) {\n return validate.length === 1;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBb0JhLE9BQUEsQ0FBQSxlQUFBLEdBQWtCLFVBQzNCLFNBRDJCO0FBQUEsU0FFVyxTQUFTLENBQUMsTUFBVixLQUFxQixDQUZoQztBQUFBLENBQWxCOztBQVVBLE9BQUEsQ0FBQSxjQUFBLEdBQWlCLFVBQWdCLFFBQWhCO0FBQUEsU0FDMUIsUUFBUSxDQUFDLE1BQVQsS0FBb0IsQ0FETTtBQUFBLENBQWpCIiwic291cmNlUm9vdCI6IiJ9","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\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(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\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","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this._strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n var z = 0;\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n var b;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n b = c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n\n r |= b;\n z |= b;\n }\n\n assert(!(z & 0xf0), 'Invalid character in ' + str);\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","module.exports={\n \"aes-128-ecb\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 0,\n \"mode\": \"ECB\",\n \"type\": \"block\"\n },\n \"aes-192-ecb\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 0,\n \"mode\": \"ECB\",\n \"type\": \"block\"\n },\n \"aes-256-ecb\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 0,\n \"mode\": \"ECB\",\n \"type\": \"block\"\n },\n \"aes-128-cbc\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes-192-cbc\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes-256-cbc\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes128\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes192\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes256\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes-128-cfb\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CFB\",\n \"type\": \"stream\"\n },\n \"aes-192-cfb\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CFB\",\n \"type\": \"stream\"\n },\n \"aes-256-cfb\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CFB\",\n \"type\": \"stream\"\n },\n \"aes-128-cfb8\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CFB8\",\n \"type\": \"stream\"\n },\n \"aes-192-cfb8\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CFB8\",\n \"type\": \"stream\"\n },\n \"aes-256-cfb8\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CFB8\",\n \"type\": \"stream\"\n },\n \"aes-128-cfb1\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CFB1\",\n \"type\": \"stream\"\n },\n \"aes-192-cfb1\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CFB1\",\n \"type\": \"stream\"\n },\n \"aes-256-cfb1\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CFB1\",\n \"type\": \"stream\"\n },\n \"aes-128-ofb\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"OFB\",\n \"type\": \"stream\"\n },\n \"aes-192-ofb\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"OFB\",\n \"type\": \"stream\"\n },\n \"aes-256-ofb\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"OFB\",\n \"type\": \"stream\"\n },\n \"aes-128-ctr\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CTR\",\n \"type\": \"stream\"\n },\n \"aes-192-ctr\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CTR\",\n \"type\": \"stream\"\n },\n \"aes-256-ctr\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CTR\",\n \"type\": \"stream\"\n },\n \"aes-128-gcm\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 12,\n \"mode\": \"GCM\",\n \"type\": \"auth\"\n },\n \"aes-192-gcm\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 12,\n \"mode\": \"GCM\",\n \"type\": \"auth\"\n },\n \"aes-256-gcm\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 12,\n \"mode\": \"GCM\",\n \"type\": \"auth\"\n }\n}\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var bn = require('bn.js');\nvar randomBytes = require('randombytes');\nmodule.exports = crt;\nfunction blind(priv) {\n var r = getr(priv);\n var blinder = r.toRed(bn.mont(priv.modulus))\n .redPow(new bn(priv.publicExponent)).fromRed();\n return {\n blinder: blinder,\n unblinder:r.invm(priv.modulus)\n };\n}\nfunction crt(msg, priv) {\n var blinds = blind(priv);\n var len = priv.modulus.byteLength();\n var mod = bn.mont(priv.modulus);\n var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);\n var c1 = blinded.toRed(bn.mont(priv.prime1));\n var c2 = blinded.toRed(bn.mont(priv.prime2));\n var qinv = priv.coefficient;\n var p = priv.prime1;\n var q = priv.prime2;\n var m1 = c1.redPow(priv.exponent1);\n var m2 = c2.redPow(priv.exponent2);\n m1 = m1.fromRed();\n m2 = m2.fromRed();\n var h = m1.isub(m2).imul(qinv).umod(p);\n h.imul(q);\n m2.iadd(h);\n return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));\n}\ncrt.getr = getr;\nfunction getr(priv) {\n var len = priv.modulus.byteLength();\n var r = new bn(randomBytes(len));\n while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {\n r = new bn(randomBytes(len));\n }\n return r;\n}\n","module.exports = require('./browser/algorithms.json')\n","module.exports={\n \"sha224WithRSAEncryption\": {\n \"sign\": \"rsa\",\n \"hash\": \"sha224\",\n \"id\": \"302d300d06096086480165030402040500041c\"\n },\n \"RSA-SHA224\": {\n \"sign\": \"ecdsa/rsa\",\n \"hash\": \"sha224\",\n \"id\": \"302d300d06096086480165030402040500041c\"\n },\n \"sha256WithRSAEncryption\": {\n \"sign\": \"rsa\",\n \"hash\": \"sha256\",\n \"id\": \"3031300d060960864801650304020105000420\"\n },\n \"RSA-SHA256\": {\n \"sign\": \"ecdsa/rsa\",\n \"hash\": \"sha256\",\n \"id\": \"3031300d060960864801650304020105000420\"\n },\n \"sha384WithRSAEncryption\": {\n \"sign\": \"rsa\",\n \"hash\": \"sha384\",\n \"id\": \"3041300d060960864801650304020205000430\"\n },\n \"RSA-SHA384\": {\n \"sign\": \"ecdsa/rsa\",\n \"hash\": \"sha384\",\n \"id\": \"3041300d060960864801650304020205000430\"\n },\n \"sha512WithRSAEncryption\": {\n \"sign\": \"rsa\",\n \"hash\": \"sha512\",\n \"id\": \"3051300d060960864801650304020305000440\"\n },\n \"RSA-SHA512\": {\n \"sign\": \"ecdsa/rsa\",\n \"hash\": \"sha512\",\n \"id\": \"3051300d060960864801650304020305000440\"\n },\n \"RSA-SHA1\": {\n \"sign\": \"rsa\",\n \"hash\": \"sha1\",\n \"id\": \"3021300906052b0e03021a05000414\"\n },\n \"ecdsa-with-SHA1\": {\n \"sign\": \"ecdsa\",\n \"hash\": \"sha1\",\n \"id\": \"\"\n },\n \"sha256\": {\n \"sign\": \"ecdsa\",\n \"hash\": \"sha256\",\n \"id\": \"\"\n },\n \"sha224\": {\n \"sign\": \"ecdsa\",\n \"hash\": \"sha224\",\n \"id\": \"\"\n },\n \"sha384\": {\n \"sign\": \"ecdsa\",\n \"hash\": \"sha384\",\n \"id\": \"\"\n },\n \"sha512\": {\n \"sign\": \"ecdsa\",\n \"hash\": \"sha512\",\n \"id\": \"\"\n },\n \"DSA-SHA\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha1\",\n \"id\": \"\"\n },\n \"DSA-SHA1\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha1\",\n \"id\": \"\"\n },\n \"DSA\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha1\",\n \"id\": \"\"\n },\n \"DSA-WITH-SHA224\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha224\",\n \"id\": \"\"\n },\n \"DSA-SHA224\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha224\",\n \"id\": \"\"\n },\n \"DSA-WITH-SHA256\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha256\",\n \"id\": \"\"\n },\n \"DSA-SHA256\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha256\",\n \"id\": \"\"\n },\n \"DSA-WITH-SHA384\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha384\",\n \"id\": \"\"\n },\n \"DSA-SHA384\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha384\",\n \"id\": \"\"\n },\n \"DSA-WITH-SHA512\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha512\",\n \"id\": \"\"\n },\n \"DSA-SHA512\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha512\",\n \"id\": \"\"\n },\n \"DSA-RIPEMD160\": {\n \"sign\": \"dsa\",\n \"hash\": \"rmd160\",\n \"id\": \"\"\n },\n \"ripemd160WithRSA\": {\n \"sign\": \"rsa\",\n \"hash\": \"rmd160\",\n \"id\": \"3021300906052b2403020105000414\"\n },\n \"RSA-RIPEMD160\": {\n \"sign\": \"rsa\",\n \"hash\": \"rmd160\",\n \"id\": \"3021300906052b2403020105000414\"\n },\n \"md5WithRSAEncryption\": {\n \"sign\": \"rsa\",\n \"hash\": \"md5\",\n \"id\": \"3020300c06082a864886f70d020505000410\"\n },\n \"RSA-MD5\": {\n \"sign\": \"rsa\",\n \"hash\": \"md5\",\n \"id\": \"3020300c06082a864886f70d020505000410\"\n }\n}\n","module.exports={\n \"1.3.132.0.10\": \"secp256k1\",\n \"1.3.132.0.33\": \"p224\",\n \"1.2.840.10045.3.1.1\": \"p192\",\n \"1.2.840.10045.3.1.7\": \"p256\",\n \"1.3.132.0.34\": \"p384\",\n \"1.3.132.0.35\": \"p521\"\n}\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\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\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar 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 var arr = new Uint8Array(1)\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\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 var buf = new Uint8Array(length)\n buf.__proto__ = 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\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\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 fromArrayLike(value)\n }\n\n if (value == null) {\n throw 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 value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var 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(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\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\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = 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 interpretted 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 var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var 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 var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\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 var 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 buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var 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 var x = a.length\n var y = b.length\n\n for (var 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 var 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 var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\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 var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var 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 var 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 coersion 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 var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var 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 var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var 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 var 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 var str = ''\n var 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}\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 var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var 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 var indexSize = 1\n var arrLength = arr.length\n var 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 var i\n if (dir) {\n var 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 var found = true\n for (var 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 var 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 var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var 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 latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, 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 var 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 var 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 return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(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 var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var 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\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var 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 var res = ''\n var 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 var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; 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 var 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 var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\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 = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\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 var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\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 = 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 = 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 = 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 = 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.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var 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 var i = byteLength\n var mul = 1\n var 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 var 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 var 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.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 = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var 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 = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var 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 = 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 = 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 = 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 = 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 = 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\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var 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 var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var 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\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 var 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 if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\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 var 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 }\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 var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var 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// HELPER FUNCTIONS\n// ================\n\nvar 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 toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var 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 var byteArray = []\n for (var 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 var c, hi, lo\n var byteArray = []\n for (var 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 for (var 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","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n } else if (MutationObserver && !IS_IOS) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.5',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n !fails(post) &&\n location.protocol !== 'file:'\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.github.io/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(promise, state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (handler = global['on' + name]) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, promise, wrapper, state),\n bind(internalReject, promise, wrapper, state)\n );\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(this, state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\nvar fromCharCode = String.fromCharCode;\nvar nativeFromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\nvar INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1;\n\n// `String.fromCodePoint` method\n// https://tc39.github.io/ecma262/#sec-string.fromcodepoint\n$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var elements = [];\n var length = arguments.length;\n var i = 0;\n var code;\n while (length > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');\n elements.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)\n );\n } return elements.join('');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\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// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.dayjs=e()}(this,function(){\"use strict\";var t=\"millisecond\",e=\"second\",n=\"minute\",r=\"hour\",i=\"day\",s=\"week\",u=\"month\",a=\"quarter\",o=\"year\",f=\"date\",h=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?.?(\\d+)?$/,c=/\\[([^\\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},$={s:d,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+d(r,2,\"0\")+\":\"+d(i,2,\"0\")},m:function t(e,n){if(e.date()68?1900:2e3)}],YYYY:[/\\d{4}/,i(\"year\")],Z:s,ZZ:s};var f=function(t,n,r){try{var o=function(t){for(var n=t.match(e),r=n.length,o=0;o0?s-1:m.getMonth());var D=f||0,M=u||0,g=d||0,Y=c||0;return l?new Date(Date.UTC(p,y,v,D,M,g,Y+60*l.offset*1e3)):r?new Date(Date.UTC(p,y,v,D,M,g,Y)):new Date(p,y,v,D,M,g,Y)}catch(t){return new Date(\"\")}};return function(e,n,r){var o=n.prototype,i=o.parse;o.parse=function(e){var n=e.date,o=e.utc,s=e.args;this.$u=o;var a=s[1];if(\"string\"==typeof a){var h=!0===s[2],u=!0===s[3],d=h||u,c=s[2];u&&(c=s[2]),h||(t=c?r.Ls[c]:this.$locale()),this.$d=f(n,a,o),this.init(),c&&!0!==c&&(this.$L=this.locale(c).$L),d&&n!==this.format(a)&&(this.$d=new Date(\"\"))}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var v=r.apply(this,s);if(v.isValid()){this.$d=v.$d,this.$L=v.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}});\n","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):t.dayjs_plugin_utc=i()}(this,function(){\"use strict\";return function(t,i,e){var s=(new Date).getTimezoneOffset(),n=i.prototype;e.utc=function(t){return new i({date:t,utc:!0,args:arguments})},n.utc=function(){return e(this.toDate(),{locale:this.$L,utc:!0})},n.local=function(){return e(this.toDate(),{locale:this.$L,utc:!1})};var u=n.parse;n.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),u.call(this,t)};var o=n.init;n.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else o.call(this)};var f=n.utcOffset;n.utcOffset=function(t,i){var e=this.$utils().u;if(e(t))return this.$u?0:e(this.$offset)?f.call(this):this.$offset;var n=Math.abs(t)<=16?60*t:t,u=this;return i?(u.$offset=n,u.$u=0===t,u):(0!==t?(u=this.local().add(n+s,\"minute\")).$offset=n:u=this.utc(),u)};var r=n.format;n.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return r.call(this,i)},n.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+s;return this.$d.valueOf()-6e4*t},n.isUTC=function(){return!!this.$u},n.toISOString=function(){return this.toDate().toISOString()},n.toString=function(){return this.toDate().toUTCString()};var a=n.toDate;n.toDate=function(t){return\"s\"===t&&this.$offset?e(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():a.call(this)};var c=n.diff;n.diff=function(t,i,s){var n=this.local(),u=e(t).local();return c.call(n,u,i,s)}}});\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","module.exports={\n \"modp1\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"\n },\n \"modp2\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"\n },\n \"modp5\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"\n },\n \"modp14\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"\n },\n \"modp15\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"\n },\n \"modp16\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"\n },\n \"modp17\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"\n },\n \"modp18\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"\n }\n}","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (var j = 0; j < repr.length; j++) {\n var nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n for (var i = 0; i < len; i++) {\n var p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (var i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b] /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3 /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (var j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (var j = 0; j < len; j++) {\n var z = tmp[j];\n var p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n if (this.curve.twisted) {\n // E = a * C\n var e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n var h = this.z.redSqr();\n // J = F - 2 * H\n var j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n var e = c.redAdd(d);\n // H = (c * Z1)^2\n var h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n var j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 }\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (var i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n ]\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n ]\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n ]\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n ]\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n ]\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9'\n ]\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658'\n ]\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre\n ]\n});\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(curves.hasOwnProperty(options), 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray()\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n do {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n } while (true);\n};\n\nEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8'\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; true; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n\n if (!this.curve._maxwellTrick) {\n var p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n var curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength)\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'\n ]\n ]\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'\n ]\n ]\n }\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n []\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n var m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n var m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","module.exports={\n \"_from\": \"elliptic@^6.5.3\",\n \"_id\": \"elliptic@6.5.3\",\n \"_inBundle\": false,\n \"_integrity\": \"sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==\",\n \"_location\": \"/elliptic\",\n \"_phantomChildren\": {},\n \"_requested\": {\n \"type\": \"range\",\n \"registry\": true,\n \"raw\": \"elliptic@^6.5.3\",\n \"name\": \"elliptic\",\n \"escapedName\": \"elliptic\",\n \"rawSpec\": \"^6.5.3\",\n \"saveSpec\": null,\n \"fetchSpec\": \"^6.5.3\"\n },\n \"_requiredBy\": [\n \"/browserify-sign\",\n \"/create-ecdh\"\n ],\n \"_resolved\": \"https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz\",\n \"_shasum\": \"cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6\",\n \"_spec\": \"elliptic@^6.5.3\",\n \"_where\": \"/mnt/d/dev/git/exceljs/node_modules/browserify-sign\",\n \"author\": {\n \"name\": \"Fedor Indutny\",\n \"email\": \"fedor@indutny.com\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/indutny/elliptic/issues\"\n },\n \"bundleDependencies\": false,\n \"dependencies\": {\n \"bn.js\": \"^4.4.0\",\n \"brorand\": \"^1.0.1\",\n \"hash.js\": \"^1.0.0\",\n \"hmac-drbg\": \"^1.0.0\",\n \"inherits\": \"^2.0.1\",\n \"minimalistic-assert\": \"^1.0.0\",\n \"minimalistic-crypto-utils\": \"^1.0.0\"\n },\n \"deprecated\": false,\n \"description\": \"EC cryptography\",\n \"devDependencies\": {\n \"brfs\": \"^1.4.3\",\n \"coveralls\": \"^3.0.8\",\n \"grunt\": \"^1.0.4\",\n \"grunt-browserify\": \"^5.0.0\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-contrib-connect\": \"^1.0.0\",\n \"grunt-contrib-copy\": \"^1.0.0\",\n \"grunt-contrib-uglify\": \"^1.0.1\",\n \"grunt-mocha-istanbul\": \"^3.0.1\",\n \"grunt-saucelabs\": \"^9.0.1\",\n \"istanbul\": \"^0.4.2\",\n \"jscs\": \"^3.0.7\",\n \"jshint\": \"^2.10.3\",\n \"mocha\": \"^6.2.2\"\n },\n \"files\": [\n \"lib\"\n ],\n \"homepage\": \"https://github.com/indutny/elliptic\",\n \"keywords\": [\n \"EC\",\n \"Elliptic\",\n \"curve\",\n \"Cryptography\"\n ],\n \"license\": \"MIT\",\n \"main\": \"lib/elliptic.js\",\n \"name\": \"elliptic\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+ssh://git@github.com/indutny/elliptic.git\"\n },\n \"scripts\": {\n \"jscs\": \"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",\n \"jshint\": \"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",\n \"lint\": \"npm run jscs && npm run jshint\",\n \"test\": \"npm run lint && npm run unit\",\n \"unit\": \"istanbul test _mocha --reporter=spec test/index.js\",\n \"version\": \"grunt dist && git add dist/\"\n },\n \"version\": \"6.5.3\"\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\nvar objectCreate = Object.create || objectCreatePolyfill\nvar objectKeys = Object.keys || objectKeysPolyfill\nvar bind = Function.prototype.bind || functionBindPolyfill\n\nfunction EventEmitter() {\n if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) {\n this._events = objectCreate(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\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\nvar hasDefineProperty;\ntry {\n var o = {};\n if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 });\n hasDefineProperty = o.x === 0;\n} catch (err) { hasDefineProperty = false }\nif (hasDefineProperty) {\n Object.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n // check whether the input is a positive number (whose value is zero or\n // greater and not a NaN).\n if (typeof arg !== 'number' || arg < 0 || arg !== arg)\n throw new TypeError('\"defaultMaxListeners\" must be a positive number');\n defaultMaxListeners = arg;\n }\n });\n} else {\n EventEmitter.defaultMaxListeners = defaultMaxListeners;\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 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\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\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n if (arguments.length > 1)\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Unhandled \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, 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 if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = objectCreate(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) {\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) {\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 } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\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 if (typeof console === 'object' && console.warn) {\n console.warn('%s: %s', w.name, w.message);\n }\n }\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 switch (arguments.length) {\n case 0:\n return this.listener.call(this.target);\n case 1:\n return this.listener.call(this.target, arguments[0]);\n case 2:\n return this.listener.call(this.target, arguments[0], arguments[1]);\n case 3:\n return this.listener.call(this.target, arguments[0], arguments[1],\n arguments[2]);\n default:\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i)\n args[i] = arguments[i];\n this.listener.apply(this.target, args);\n }\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = bind.call(onceWrapper, state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\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 if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = objectCreate(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 if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = objectCreate(null);\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = objectCreate(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 = objectKeys(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 = objectCreate(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) {\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)\n return [];\n\n var evlistener = events[type];\n if (!evlistener)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ? 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) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\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 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 objectCreatePolyfill(proto) {\n var F = function() {};\n F.prototype = proto;\n return new F;\n}\nfunction objectKeysPolyfill(obj) {\n var keys = [];\n for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) {\n keys.push(k);\n }\n return k;\n}\nfunction functionBindPolyfill(context) {\n var fn = this;\n return function () {\n return fn.apply(context, arguments);\n };\n}\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar format_1 = require(\"@fast-csv/format\");\n\nObject.defineProperty(exports, \"format\", {\n enumerable: true,\n get: function get() {\n return format_1.format;\n }\n});\nObject.defineProperty(exports, \"write\", {\n enumerable: true,\n get: function get() {\n return format_1.write;\n }\n});\nObject.defineProperty(exports, \"writeToStream\", {\n enumerable: true,\n get: function get() {\n return format_1.writeToStream;\n }\n});\nObject.defineProperty(exports, \"writeToBuffer\", {\n enumerable: true,\n get: function get() {\n return format_1.writeToBuffer;\n }\n});\nObject.defineProperty(exports, \"writeToString\", {\n enumerable: true,\n get: function get() {\n return format_1.writeToString;\n }\n});\nObject.defineProperty(exports, \"writeToPath\", {\n enumerable: true,\n get: function get() {\n return format_1.writeToPath;\n }\n});\nObject.defineProperty(exports, \"CsvFormatterStream\", {\n enumerable: true,\n get: function get() {\n return format_1.CsvFormatterStream;\n }\n});\nObject.defineProperty(exports, \"FormatterOptions\", {\n enumerable: true,\n get: function get() {\n return format_1.FormatterOptions;\n }\n});\n\nvar parse_1 = require(\"@fast-csv/parse\");\n\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return parse_1.parse;\n }\n});\nObject.defineProperty(exports, \"parseString\", {\n enumerable: true,\n get: function get() {\n return parse_1.parseString;\n }\n});\nObject.defineProperty(exports, \"parseStream\", {\n enumerable: true,\n get: function get() {\n return parse_1.parseStream;\n }\n});\nObject.defineProperty(exports, \"parseFile\", {\n enumerable: true,\n get: function get() {\n return parse_1.parseFile;\n }\n});\nObject.defineProperty(exports, \"ParserOptions\", {\n enumerable: true,\n get: function get() {\n return parse_1.ParserOptions;\n }\n});\nObject.defineProperty(exports, \"CsvParserStream\", {\n enumerable: true,\n get: function get() {\n return parse_1.CsvParserStream;\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBLFFBQUEsR0FBQSxPQUFBLENBQUEsa0JBQUEsQ0FBQTs7QUFDSSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxRQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsUUFBQSxDQUFBLE1BQUE7QUFBTTtBQUFOLENBQUE7QUFDQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxPQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsUUFBQSxDQUFBLEtBQUE7QUFBSztBQUFMLENBQUE7QUFDQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxlQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsUUFBQSxDQUFBLGFBQUE7QUFBYTtBQUFiLENBQUE7QUFDQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxlQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsUUFBQSxDQUFBLGFBQUE7QUFBYTtBQUFiLENBQUE7QUFDQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxlQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsUUFBQSxDQUFBLGFBQUE7QUFBYTtBQUFiLENBQUE7QUFDQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxhQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsUUFBQSxDQUFBLFdBQUE7QUFBVztBQUFYLENBQUE7QUFDQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxvQkFBQSxFQUFBO0FBQUEsRUFBQSxVQUFBLEVBQUEsSUFBQTtBQUFBLEVBQUEsR0FBQSxFQUFBLGVBQUE7QUFBQSxXQUFBLFFBQUEsQ0FBQSxrQkFBQTtBQUFrQjtBQUFsQixDQUFBO0FBQ0EsTUFBQSxDQUFBLGNBQUEsQ0FBQSxPQUFBLEVBQUEsa0JBQUEsRUFBQTtBQUFBLEVBQUEsVUFBQSxFQUFBLElBQUE7QUFBQSxFQUFBLEdBQUEsRUFBQSxlQUFBO0FBQUEsV0FBQSxRQUFBLENBQUEsZ0JBQUE7QUFBZ0I7QUFBaEIsQ0FBQTs7QUFVSixJQUFBLE9BQUEsR0FBQSxPQUFBLENBQUEsaUJBQUEsQ0FBQTs7QUFDSSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxPQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsT0FBQSxDQUFBLEtBQUE7QUFBSztBQUFMLENBQUE7QUFDQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxhQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsT0FBQSxDQUFBLFdBQUE7QUFBVztBQUFYLENBQUE7QUFDQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxhQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsT0FBQSxDQUFBLFdBQUE7QUFBVztBQUFYLENBQUE7QUFDQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxXQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsT0FBQSxDQUFBLFNBQUE7QUFBUztBQUFULENBQUE7QUFDQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxlQUFBLEVBQUE7QUFBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsRUFBQSxHQUFBLEVBQUEsZUFBQTtBQUFBLFdBQUEsT0FBQSxDQUFBLGFBQUE7QUFBYTtBQUFiLENBQUE7QUFDQSxNQUFBLENBQUEsY0FBQSxDQUFBLE9BQUEsRUFBQSxpQkFBQSxFQUFBO0FBQUEsRUFBQSxVQUFBLEVBQUEsSUFBQTtBQUFBLEVBQUEsR0FBQSxFQUFBLGVBQUE7QUFBQSxXQUFBLE9BQUEsQ0FBQSxlQUFBO0FBQWU7QUFBZixDQUFBIiwic291cmNlUm9vdCI6IiJ9","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","exports.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';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a ' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar 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('unload', 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('unload', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // 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.]+ 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 { Component, Property, setStyleAttribute, ChildProperty, compile } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n *
\n *
Left Pane
\n *
Center Pane
\n *
Right Pane
\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.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 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isPaneContentChanged = paneCounts.some(function (count) { return !isNullOrUndefined(newProp.paneSettings[count].content); });\n if (this.isReact && isPaneContentChanged) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n // eslint-disable-next-line max-len\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width) :\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.add(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.remove(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n // eslint-disable-next-line max-len\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? (resizeHanlder.style.width = sizeValue) : resizeHanlder.style.height = sizeValue;\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? removeClass([arrow2], [HIDE_ICON]) : addClass([arrow2], [HIDE_ICON]);\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '-1');\n separator.setAttribute('aria-hidden', 'true');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n // eslint-disable-next-line\n this.isResizable() ? this.allPanes[index].classList.add(RESIZABLE_PANE) : this.allPanes[index].classList.remove(RESIZABLE_PANE);\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-valuenow', i.toString());\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n });\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n // eslint-disable-next-line max-len\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.allBars = [];\n this.allPanes = [];\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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'];\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 { Splitter } from '@syncfusion/ej2-layouts';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Splitter Component\n * ```html\n * \n * ```\n */\nvar SplitterComponent = /** @class */ (function (_super) {\n __extends(SplitterComponent, _super);\n function SplitterComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'panes': 'pane' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n SplitterComponent.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 SplitterComponent;\n}(Splitter));\nexport { SplitterComponent };\napplyMixins(SplitterComponent, [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 * PanesDirective` represent a panes of the react splitter.\n * It must be contained in a Splitter component(`SplitterComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar PaneDirective = /** @class */ (function (_super) {\n __extends(PaneDirective, _super);\n function PaneDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PaneDirective.moduleName = 'pane';\n return PaneDirective;\n}(ComplexBase));\nexport { PaneDirective };\nvar PanesDirective = /** @class */ (function (_super) {\n __extends(PanesDirective, _super);\n function PanesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PanesDirective.propertyName = 'paneSettings';\n PanesDirective.moduleName = 'panes';\n return PanesDirective;\n}(ComplexBase));\nexport { PanesDirective };\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","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 { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","import { useEffect, useLayoutEffect } from 'react';\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;\n","import { useEffect, useState } from 'react';\nfunction useMediaQuery(query) {\n const getMatches = (query) => {\n if (typeof window !== 'undefined') {\n return window.matchMedia(query).matches;\n }\n return false;\n };\n const [matches, setMatches] = useState(getMatches(query));\n function handleChange() {\n setMatches(getMatches(query));\n }\n useEffect(() => {\n const matchMedia = window.matchMedia(query);\n handleChange();\n if (matchMedia.addListener) {\n matchMedia.addListener(handleChange);\n }\n else {\n matchMedia.addEventListener('change', handleChange);\n }\n return () => {\n if (matchMedia.removeListener) {\n matchMedia.removeListener(handleChange);\n }\n else {\n matchMedia.removeEventListener('change', handleChange);\n }\n };\n }, [query]);\n return matches;\n}\nexport default useMediaQuery;\n","import { useState } from 'react';\nimport { useEventListener, useIsomorphicLayoutEffect } from '..';\nfunction useWindowSize() {\n const [windowSize, setWindowSize] = useState({\n width: 0,\n height: 0,\n });\n const handleSize = () => {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n useEventListener('resize', handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n return windowSize;\n}\nexport default useWindowSize;\n","import { useState } from \"react\";\r\nexport const useType = (initialValue) => {\r\n const [state, setState] = useState(initialValue);\r\n const setPartial = (values) => setState(current => (Object.assign(Object.assign({}, current), values)));\r\n return [state, setPartial, setState];\r\n};\r\n","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze(obj: T, deep?: boolean): T\nexport function freeze(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ProxyType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (!draft_.hasOwnProperty(i)) {\n\t\t\t\t\tassigned_[i] = true\n\t\t\t\t}\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\t// last descriptor can be not a trap, if the array was extended\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// if we miss a property, it has been deleted, so array probobaly changed\n\t\tfor (let i = 0; i < draft_.length; i++) {\n\t\t\tif (!draft_.hasOwnProperty(i)) return true\n\t\t}\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft(value: T): Draft {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude`\n\t// @ts-ignore\n\tprivate _!: unique symbol\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\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import type { Action, ActionCreator, StoreEnhancer } from 'redux'\r\nimport { compose } from 'redux'\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface DevToolsEnhancerOptions {\r\n /**\r\n * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n */\r\n name?: string\r\n /**\r\n * action creators functions to be available in the Dispatcher.\r\n */\r\n actionCreators?: ActionCreator[] | { [key: string]: ActionCreator }\r\n /**\r\n * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n *\r\n * @default 500 ms.\r\n */\r\n latency?: number\r\n /**\r\n * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n *\r\n * @default 50\r\n */\r\n maxAge?: number\r\n /**\r\n * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\r\n * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\r\n * functions.\r\n */\r\n serialize?:\r\n | boolean\r\n | {\r\n /**\r\n * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\r\n * - `false` - will handle also circular references.\r\n * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\r\n * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\r\n * For each of them you can indicate if to include (by setting as `true`).\r\n * For `function` key you can also specify a custom function which handles serialization.\r\n * See [`jsan`](https://github.com/kolodny/jsan) for more details.\r\n */\r\n options?:\r\n | undefined\r\n | boolean\r\n | {\r\n date?: true\r\n regex?: true\r\n undefined?: true\r\n error?: true\r\n symbol?: true\r\n map?: true\r\n set?: true\r\n function?: true | ((fn: (...args: any[]) => any) => string)\r\n }\r\n /**\r\n * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\r\n * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\r\n * key. So you can deserialize it back while importing or persisting data.\r\n * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\r\n */\r\n replacer?: (key: string, value: unknown) => any\r\n /**\r\n * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\r\n * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\r\n * as an example on how to serialize special data types and get them back.\r\n */\r\n reviver?: (key: string, value: unknown) => any\r\n /**\r\n * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\r\n * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\r\n * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\r\n */\r\n immutable?: any\r\n /**\r\n * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\r\n */\r\n refs?: any\r\n }\r\n /**\r\n * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n */\r\n actionSanitizer?: (action: A, id: number) => A\r\n /**\r\n * function which takes `state` object and index as arguments, and should return `state` object back.\r\n */\r\n stateSanitizer?: (state: S, index: number) => S\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsDenylist instead.\r\n */\r\n actionsBlacklist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsAllowlist instead.\r\n */\r\n actionsWhitelist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsDenylist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsAllowlist?: string | string[]\r\n /**\r\n * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\r\n */\r\n predicate?: (state: S, action: A) => boolean\r\n /**\r\n * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n * Available only for Redux enhancer, for others use `autoPause`.\r\n *\r\n * @default true\r\n */\r\n shouldRecordChanges?: boolean\r\n /**\r\n * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n * If not specified, will commit when paused. Available only for Redux enhancer.\r\n *\r\n * @default \"@@PAUSED\"\"\r\n */\r\n pauseActionType?: string\r\n /**\r\n * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n *\r\n * @default false\r\n */\r\n autoPause?: boolean\r\n /**\r\n * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n * Available only for Redux enhancer.\r\n *\r\n * @default false\r\n */\r\n shouldStartLocked?: boolean\r\n /**\r\n * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n *\r\n * @default true\r\n */\r\n shouldHotReload?: boolean\r\n /**\r\n * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n *\r\n * @default false\r\n */\r\n shouldCatchErrors?: boolean\r\n /**\r\n * If you want to restrict the extension, specify the features you allow.\r\n * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n * Otherwise, you'll get/set the data right from the monitor part.\r\n */\r\n features?: {\r\n /**\r\n * start/pause recording of dispatched actions\r\n */\r\n pause?: boolean\r\n /**\r\n * lock/unlock dispatching actions and side effects\r\n */\r\n lock?: boolean\r\n /**\r\n * persist states on page reloading\r\n */\r\n persist?: boolean\r\n /**\r\n * export history of actions in a file\r\n */\r\n export?: boolean | 'custom'\r\n /**\r\n * import history of actions from a file\r\n */\r\n import?: boolean | 'custom'\r\n /**\r\n * jump back and forth (time travelling)\r\n */\r\n jump?: boolean\r\n /**\r\n * skip (cancel) actions\r\n */\r\n skip?: boolean\r\n /**\r\n * drag and drop actions in the history list\r\n */\r\n reorder?: boolean\r\n /**\r\n * dispatch custom actions or action creators\r\n */\r\n dispatch?: boolean\r\n /**\r\n * generate tests for the selected actions\r\n */\r\n test?: boolean\r\n }\r\n /**\r\n * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n * Defaults to false.\r\n */\r\n trace?: boolean | ((action: A) => string)\r\n /**\r\n * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n */\r\n traceLimit?: number\r\n}\r\n\r\ntype Compose = typeof compose\r\n\r\ninterface ComposeWithDevTools {\r\n (options: DevToolsEnhancerOptions): Compose\r\n (...funcs: StoreEnhancer[]): StoreEnhancer\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const composeWithDevTools: ComposeWithDevTools =\r\n typeof window !== 'undefined' &&\r\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n : function () {\r\n if (arguments.length === 0) return undefined\r\n if (typeof arguments[0] === 'object') return compose\r\n return compose.apply(null, arguments as any as Function[])\r\n }\r\n\r\n/**\r\n * @public\r\n */\r\nexport const devToolsEnhancer: {\r\n (options: DevToolsEnhancerOptions): StoreEnhancer\r\n} =\r\n typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n : function () {\r\n return function (noop) {\r\n return noop\r\n }\r\n }\r\n","/**\r\n * Returns true if the passed value is \"plain\" object, i.e. an object whose\r\n * prototype is the root `Object.prototype`. This includes objects created\r\n * using object literals, but not for instance for class instances.\r\n *\r\n * @param {any} value The value to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n *\r\n * @public\r\n */\r\nexport default function isPlainObject(value: unknown): value is object {\r\n if (typeof value !== 'object' || value === null) return false\r\n\r\n let proto = Object.getPrototypeOf(value)\r\n if (proto === null) return true\r\n\r\n let baseProto = proto\r\n while (Object.getPrototypeOf(baseProto) !== null) {\r\n baseProto = Object.getPrototypeOf(baseProto)\r\n }\r\n\r\n return proto === baseProto\r\n}\r\n","import createNextState, { isDraftable } from 'immer'\r\nimport type { Middleware, StoreEnhancer } from 'redux'\r\n\r\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\r\n let elapsed = 0\r\n return {\r\n measureTime(fn: () => T): T {\r\n const started = Date.now()\r\n try {\r\n return fn()\r\n } finally {\r\n const finished = Date.now()\r\n elapsed += finished - started\r\n }\r\n },\r\n warnIfExceeded() {\r\n if (elapsed > maxDelay) {\r\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \r\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\r\nIt is disabled in production builds, so you don't need to worry about that.`)\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function delay(ms: number) {\r\n return new Promise((resolve) => setTimeout(resolve, ms))\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class MiddlewareArray<\r\n Middlewares extends Middleware[]\r\n> extends Array {\r\n constructor(...items: Middlewares)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, MiddlewareArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return MiddlewareArray as any\r\n }\r\n\r\n concat>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n\r\n concat>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new MiddlewareArray(...arr[0].concat(this))\r\n }\r\n return new MiddlewareArray(...arr.concat(this))\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class EnhancerArray<\r\n Enhancers extends StoreEnhancer[]\r\n> extends Array {\r\n constructor(...items: Enhancers)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, EnhancerArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return EnhancerArray as any\r\n }\r\n\r\n concat>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n\r\n concat>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new EnhancerArray(...arr[0].concat(this))\r\n }\r\n return new EnhancerArray(...arr.concat(this))\r\n }\r\n}\r\n\r\nexport function freezeDraftable(val: T) {\r\n return isDraftable(val) ? createNextState(val, () => {}) : val\r\n}\r\n","import type { Middleware, AnyAction } from 'redux'\r\nimport type { ThunkMiddleware } from 'redux-thunk'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware'\r\n/* PROD_START_REMOVE_UMD */\r\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware'\r\n/* PROD_STOP_REMOVE_UMD */\r\n\r\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware'\r\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware'\r\nimport type { ExcludeFromTuple } from './tsHelpers'\r\nimport { MiddlewareArray } from './utils'\r\n\r\nfunction isBoolean(x: any): x is boolean {\r\n return typeof x === 'boolean'\r\n}\r\n\r\ninterface ThunkOptions {\r\n extraArgument: E\r\n}\r\n\r\ninterface GetDefaultMiddlewareOptions {\r\n thunk?: boolean | ThunkOptions\r\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions\r\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions\r\n}\r\n\r\nexport type ThunkMiddlewareFor<\r\n S,\r\n O extends GetDefaultMiddlewareOptions = {}\r\n> = O extends {\r\n thunk: false\r\n}\r\n ? never\r\n : O extends { thunk: { extraArgument: infer E } }\r\n ? ThunkMiddleware\r\n : ThunkMiddleware\r\n\r\nexport type CurriedGetDefaultMiddleware = <\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n }\r\n>(\r\n options?: O\r\n) => MiddlewareArray], never>>\r\n\r\nexport function curryGetDefaultMiddleware<\r\n S = any\r\n>(): CurriedGetDefaultMiddleware {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options)\r\n }\r\n}\r\n\r\n/**\r\n * Returns any array containing the default middleware installed by\r\n * `configureStore()`. Useful if you want to configure your store with a custom\r\n * `middleware` array but still keep the default set.\r\n *\r\n * @return The default middleware used by `configureStore()`.\r\n *\r\n * @public\r\n *\r\n * @deprecated Prefer to use the callback notation for the `middleware` option in `configureStore`\r\n * to access a pre-typed `getDefaultMiddleware` instead.\r\n */\r\nexport function getDefaultMiddleware<\r\n S = any,\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n }\r\n>(\r\n options: O = {} as O\r\n): MiddlewareArray], never>> {\r\n const {\r\n thunk = true,\r\n immutableCheck = true,\r\n serializableCheck = true,\r\n } = options\r\n\r\n let middlewareArray = new MiddlewareArray()\r\n\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware)\r\n } else {\r\n middlewareArray.push(\r\n thunkMiddleware.withExtraArgument(thunk.extraArgument)\r\n )\r\n }\r\n }\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (immutableCheck) {\r\n /* PROD_START_REMOVE_UMD */\r\n let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createImmutableStateInvariantMiddleware(immutableOptions)\r\n )\r\n /* PROD_STOP_REMOVE_UMD */\r\n }\r\n\r\n if (serializableCheck) {\r\n let serializableOptions: SerializableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck\r\n }\r\n\r\n middlewareArray.push(\r\n createSerializableStateInvariantMiddleware(serializableOptions)\r\n )\r\n }\r\n }\r\n\r\n return middlewareArray as any\r\n}\r\n","import type { Action } from 'redux'\r\nimport type {\r\n IsUnknownOrNonInferrable,\r\n IfMaybeUndefined,\r\n IfVoid,\r\n IsAny,\r\n} from './tsHelpers'\r\nimport isPlainObject from './isPlainObject'\r\n\r\n/**\r\n * An action with a string type and an associated payload. This is the\r\n * type of action returned by `createAction()` action creators.\r\n *\r\n * @template P The type of the action's payload.\r\n * @template T the type used for the action type.\r\n * @template M The type of the action's meta (optional)\r\n * @template E The type of the action's error (optional)\r\n *\r\n * @public\r\n */\r\nexport type PayloadAction<\r\n P = void,\r\n T extends string = string,\r\n M = never,\r\n E = never\r\n> = {\r\n payload: P\r\n type: T\r\n} & ([M] extends [never]\r\n ? {}\r\n : {\r\n meta: M\r\n }) &\r\n ([E] extends [never]\r\n ? {}\r\n : {\r\n error: E\r\n })\r\n\r\n/**\r\n * A \"prepare\" method to be used as the second parameter of `createAction`.\r\n * Takes any number of arguments and returns a Flux Standard Action without\r\n * type (will be added later) that *must* contain a payload (might be undefined).\r\n *\r\n * @public\r\n */\r\nexport type PrepareAction

=\r\n | ((...args: any[]) => { payload: P })\r\n | ((...args: any[]) => { payload: P; meta: any })\r\n | ((...args: any[]) => { payload: P; error: any })\r\n | ((...args: any[]) => { payload: P; meta: any; error: any })\r\n\r\n/**\r\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\r\n *\r\n * @internal\r\n */\r\nexport type _ActionCreatorWithPreparedPayload<\r\n PA extends PrepareAction | void,\r\n T extends string = string\r\n> = PA extends PrepareAction\r\n ? ActionCreatorWithPreparedPayload<\r\n Parameters,\r\n P,\r\n T,\r\n ReturnType extends {\r\n error: infer E\r\n }\r\n ? E\r\n : never,\r\n ReturnType extends {\r\n meta: infer M\r\n }\r\n ? M\r\n : never\r\n >\r\n : void\r\n\r\n/**\r\n * Basic type for all action creators.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n */\r\nexport interface BaseActionCreator {\r\n type: T\r\n match: (action: Action) => action is PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that takes multiple arguments that are passed\r\n * to a `PrepareAction` method to create the final Action.\r\n * @typeParam Args arguments for the action creator function\r\n * @typeParam P `payload` type\r\n * @typeParam T `type` name\r\n * @typeParam E optional `error` type\r\n * @typeParam M optional `meta` type\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPreparedPayload<\r\n Args extends unknown[],\r\n P,\r\n T extends string = string,\r\n E = never,\r\n M = never\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with `Args` will return\r\n * an Action with a payload of type `P` and (depending on the `PrepareAction`\r\n * method used) a `meta`- and `error` property of types `M` and `E` respectively.\r\n */\r\n (...args: Args): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes an optional payload of type `P`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithOptionalPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`.\r\n * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\r\n */\r\n (payload?: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes no payload.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithoutPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} will\r\n * return a {@link PayloadAction} of type `T` with a payload of `undefined`\r\n */\r\n (noArgument: void): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that requires a payload of type P.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`\r\n */\r\n (payload: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithNonInferrablePayload<\r\n T extends string = string\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload\r\n * of exactly the type of the argument.\r\n */\r\n (payload: PT): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that produces actions with a `payload` attribute.\r\n *\r\n * @typeParam P the `payload` type\r\n * @typeParam T the `type` of the resulting action\r\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\r\n *\r\n * @public\r\n */\r\nexport type PayloadActionCreator<\r\n P = void,\r\n T extends string = string,\r\n PA extends PrepareAction

| void = void\r\n> = IfPrepareActionMethodProvided<\r\n PA,\r\n _ActionCreatorWithPreparedPayload,\r\n // else\r\n IsAny<\r\n P,\r\n ActionCreatorWithPayload,\r\n IsUnknownOrNonInferrable<\r\n P,\r\n ActionCreatorWithNonInferrablePayload,\r\n // else\r\n IfVoid<\r\n P,\r\n ActionCreatorWithoutPayload,\r\n // else\r\n IfMaybeUndefined<\r\n P,\r\n ActionCreatorWithOptionalPayload,\r\n // else\r\n ActionCreatorWithPayload\r\n >\r\n >\r\n >\r\n >\r\n>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction

= PayloadActionCreator

\r\n\r\n/**\r\n * The return value of `createSlice`\r\n *\r\n * @public\r\n */\r\nexport interface Slice<\r\n State = any,\r\n CaseReducers extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice name.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The slice's reducer.\r\n */\r\n reducer: Reducer\r\n\r\n /**\r\n * Action creators for the types of actions that are handled by the slice\r\n * reducer.\r\n */\r\n actions: CaseReducerActions\r\n\r\n /**\r\n * The individual case reducer functions that were passed in the `reducers` parameter.\r\n * This enables reuse and testing if they were defined inline when calling `createSlice`.\r\n */\r\n caseReducers: SliceDefinedCaseReducers\r\n\r\n /**\r\n * Provides access to the initial state value given to the slice.\r\n * If a lazy state initializer was provided, it will be called and a fresh value returned.\r\n */\r\n getInitialState: () => State\r\n}\r\n\r\n/**\r\n * Options for `createSlice()`.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSliceOptions<\r\n State = any,\r\n CR extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice's name. Used to namespace the generated action types.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n */\r\n initialState: State | (() => State)\r\n\r\n /**\r\n * A mapping from action types to action-type-specific *case reducer*\r\n * functions. For every action type, a matching action creator will be\r\n * generated using `createAction()`.\r\n */\r\n reducers: ValidateSliceCaseReducers\r\n\r\n /**\r\n * A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * \r\n * Alternatively, a mapping from action types to action-type-specific *case reducer*\r\n * functions. These reducers should have existing action types used\r\n * as the keys, and action creators will _not_ be generated.\r\n * \r\n * @example\r\n```ts\r\nimport { createAction, createSlice, Action, AnyAction } from '@reduxjs/toolkit'\r\nconst incrementBy = createAction('incrementBy')\r\nconst decrement = createAction('decrement')\r\n\r\ninterface RejectedAction extends Action {\r\n error: Error\r\n}\r\n\r\nfunction isRejectedAction(action: AnyAction): action is RejectedAction {\r\n return action.type.endsWith('rejected')\r\n}\r\n\r\ncreateSlice({\r\n name: 'counter',\r\n initialState: 0,\r\n reducers: {},\r\n extraReducers: builder => {\r\n builder\r\n .addCase(incrementBy, (state, action) => {\r\n // action is inferred correctly here if using TS\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {})\r\n // You can match a range of action types\r\n .addMatcher(\r\n isRejectedAction,\r\n // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\r\n (state, action) => {}\r\n )\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {})\r\n }\r\n})\r\n```\r\n */\r\n extraReducers?:\r\n | CaseReducers, any>\r\n | ((builder: ActionReducerMapBuilder>) => void)\r\n}\r\n\r\n/**\r\n * A CaseReducer with a `prepare` method.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerWithPrepare = {\r\n reducer: CaseReducer\r\n prepare: PrepareAction\r\n}\r\n\r\n/**\r\n * The type describing a slice's `reducers` option.\r\n *\r\n * @public\r\n */\r\nexport type SliceCaseReducers = {\r\n [K: string]:\r\n | CaseReducer>\r\n | CaseReducerWithPrepare>\r\n}\r\n\r\ntype SliceActionType<\r\n SliceName extends string,\r\n ActionName extends keyof any\r\n> = ActionName extends string | number ? `${SliceName}/${ActionName}` : string\r\n\r\n/**\r\n * Derives the slice's `actions` property from the `reducers` options\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerActions<\r\n CaseReducers extends SliceCaseReducers,\r\n SliceName extends string\r\n> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends { prepare: any }\r\n ? ActionCreatorForCaseReducerWithPrepare<\r\n CaseReducers[Type],\r\n SliceActionType\r\n >\r\n : ActionCreatorForCaseReducer<\r\n CaseReducers[Type],\r\n SliceActionType\r\n >\r\n}\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducerWithPrepare<\r\n CR extends { prepare: any },\r\n Type extends string\r\n> = _ActionCreatorWithPreparedPayload\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducer = CR extends (\r\n state: any,\r\n action: infer Action\r\n) => any\r\n ? Action extends { payload: infer P }\r\n ? PayloadActionCreator\r\n : ActionCreatorWithoutPayload\r\n : ActionCreatorWithoutPayload\r\n\r\n/**\r\n * Extracts the CaseReducers out of a `reducers` object, even if they are\r\n * tested into a `CaseReducerWithPrepare`.\r\n *\r\n * @internal\r\n */\r\ntype SliceDefinedCaseReducers> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends {\r\n reducer: infer Reducer\r\n }\r\n ? Reducer\r\n : CaseReducers[Type]\r\n}\r\n\r\n/**\r\n * Used on a SliceCaseReducers object.\r\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\r\n * the `reducer` and the `prepare` function use the same type of `payload`.\r\n *\r\n * Might do additional such checks in the future.\r\n *\r\n * This type is only ever useful if you want to write your own wrapper around\r\n * `createSlice`. Please don't use it otherwise!\r\n *\r\n * @public\r\n */\r\nexport type ValidateSliceCaseReducers<\r\n S,\r\n ACR extends SliceCaseReducers\r\n> = ACR &\r\n {\r\n [T in keyof ACR]: ACR[T] extends {\r\n reducer(s: S, action?: infer A): any\r\n }\r\n ? {\r\n prepare(...a: never[]): Omit\r\n }\r\n : {}\r\n }\r\n\r\nfunction getType(slice: string, actionKey: string): string {\r\n return `${slice}/${actionKey}`\r\n}\r\n\r\n/**\r\n * A function that accepts an initial state, an object full of reducer\r\n * functions, and a \"slice name\", and automatically generates\r\n * action creators and action types that correspond to the\r\n * reducers and state.\r\n *\r\n * The `reducer` argument is passed to `createReducer()`.\r\n *\r\n * @public\r\n */\r\nexport function createSlice<\r\n State,\r\n CaseReducers extends SliceCaseReducers,\r\n Name extends string = string\r\n>(\r\n options: CreateSliceOptions\r\n): Slice {\r\n const { name } = options\r\n if (!name) {\r\n throw new Error('`name` is a required option for createSlice')\r\n }\r\n\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'development'\r\n ) {\r\n if (options.initialState === undefined) {\r\n console.error(\r\n 'You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`'\r\n )\r\n }\r\n }\r\n\r\n const initialState =\r\n typeof options.initialState == 'function'\r\n ? options.initialState\r\n : freezeDraftable(options.initialState)\r\n\r\n const reducers = options.reducers || {}\r\n\r\n const reducerNames = Object.keys(reducers)\r\n\r\n const sliceCaseReducersByName: Record = {}\r\n const sliceCaseReducersByType: Record = {}\r\n const actionCreators: Record = {}\r\n\r\n reducerNames.forEach((reducerName) => {\r\n const maybeReducerWithPrepare = reducers[reducerName]\r\n const type = getType(name, reducerName)\r\n\r\n let caseReducer: CaseReducer\r\n let prepareCallback: PrepareAction | undefined\r\n\r\n if ('reducer' in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer\r\n prepareCallback = maybeReducerWithPrepare.prepare\r\n } else {\r\n caseReducer = maybeReducerWithPrepare\r\n }\r\n\r\n sliceCaseReducersByName[reducerName] = caseReducer\r\n sliceCaseReducersByType[type] = caseReducer\r\n actionCreators[reducerName] = prepareCallback\r\n ? createAction(type, prepareCallback)\r\n : createAction(type)\r\n })\r\n\r\n function buildReducer() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof options.extraReducers === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\"\r\n )\r\n }\r\n }\r\n }\r\n const [\r\n extraReducers = {},\r\n actionMatchers = [],\r\n defaultCaseReducer = undefined,\r\n ] =\r\n typeof options.extraReducers === 'function'\r\n ? executeReducerBuilderCallback(options.extraReducers)\r\n : [options.extraReducers]\r\n\r\n const finalCaseReducers = { ...extraReducers, ...sliceCaseReducersByType }\r\n\r\n return createReducer(initialState, (builder) => {\r\n for (let key in finalCaseReducers) {\r\n builder.addCase(key, finalCaseReducers[key] as CaseReducer)\r\n }\r\n for (let m of actionMatchers) {\r\n builder.addMatcher(m.matcher, m.reducer)\r\n }\r\n if (defaultCaseReducer) {\r\n builder.addDefaultCase(defaultCaseReducer)\r\n }\r\n })\r\n }\r\n\r\n let _reducer: ReducerWithInitialState\r\n\r\n return {\r\n name,\r\n reducer(state, action) {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer(state, action)\r\n },\r\n actions: actionCreators as any,\r\n caseReducers: sliceCaseReducersByName as any,\r\n getInitialState() {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer.getInitialState()\r\n },\r\n }\r\n}\r\n","import type { Draft } from 'immer'\r\nimport createNextState, { isDraft, isDraftable } from 'immer'\r\nimport type { AnyAction, Action, Reducer } from 'redux'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n * inference purposes and should not have any further value.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type Actions = Record\r\n\r\n/**\r\n * @deprecated use `TypeGuard` instead\r\n */\r\nexport interface ActionMatcher {\r\n (action: AnyAction): action is A\r\n}\r\n\r\nexport type ActionMatcherDescription = {\r\n matcher: ActionMatcher\r\n reducer: CaseReducer>\r\n}\r\n\r\nexport type ReadonlyActionMatcherDescriptionCollection = ReadonlyArray<\r\n ActionMatcherDescription\r\n>\r\n\r\nexport type ActionMatcherDescriptionCollection = Array<\r\n ActionMatcherDescription\r\n>\r\n\r\n/**\r\n * A *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducer = (\r\n state: Draft,\r\n action: A\r\n) => NoInfer | void | Draft>\r\n\r\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n * for internal inference purposes and using it manually\r\n * would lead to type erasure.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type CaseReducers = {\r\n [T in keyof AS]: AS[T] extends Action ? CaseReducer : void\r\n}\r\n\r\nexport type NotFunction = T extends Function ? never : T\r\n\r\nfunction isStateFunction(x: unknown): x is () => S {\r\n return typeof x === 'function'\r\n}\r\n\r\nexport type ReducerWithInitialState> = Reducer & {\r\n getInitialState: () => S\r\n}\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * @remarks\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @overloadSummary\r\n * This overload accepts a callback function that receives a `builder` object as its argument.\r\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\r\n * called to define what actions this reducer will handle.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AnyAction,\r\n PayloadAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\nconst increment = createAction(\"increment\");\r\nconst decrement = createAction(\"decrement\");\r\n\r\nfunction isActionWithNumberPayload(\r\n action: AnyAction\r\n): action is PayloadAction {\r\n return typeof action.payload === \"number\";\r\n}\r\n\r\nconst reducer = createReducer(\r\n {\r\n counter: 0,\r\n sumOfNumberPayloads: 0,\r\n unhandledActions: 0,\r\n },\r\n (builder) => {\r\n builder\r\n .addCase(increment, (state, action) => {\r\n // action is inferred correctly here\r\n state.counter += action.payload;\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {\r\n state.counter -= action.payload;\r\n })\r\n // You can apply a \"matcher function\" to incoming actions\r\n .addMatcher(isActionWithNumberPayload, (state, action) => {})\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {});\r\n }\r\n);\r\n```\r\n * @public\r\n */\r\nexport function createReducer>(\r\n initialState: S | (() => S),\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): ReducerWithInitialState\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n * \r\n * @overloadSummary\r\n * This overload accepts an object where the keys are string action types, and the values\r\n * are case reducer functions to handle those action types.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param actionsMap - An object mapping from action types to _case reducers_, each of which handles one specific action type.\r\n * @param actionMatchers - An array of matcher definitions in the form `{matcher, reducer}`.\r\n * All matching reducers will be executed in order, independently if a case reducer matched or not.\r\n * @param defaultCaseReducer - A \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n *\r\n * @example\r\n```js\r\nconst counterReducer = createReducer(0, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n\r\n// Alternately, use a \"lazy initializer\" to provide the initial state\r\n// (works with either form of createReducer)\r\nconst initialState = () => 0\r\nconst counterReducer = createReducer(initialState, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n```\r\n \r\n * Action creators that were generated using [`createAction`](./createAction) may be used directly as the keys here, using computed property syntax:\r\n\r\n```js\r\nconst increment = createAction('increment')\r\nconst decrement = createAction('decrement')\r\n\r\nconst counterReducer = createReducer(0, {\r\n [increment]: (state, action) => state + action.payload,\r\n [decrement.type]: (state, action) => state - action.payload\r\n})\r\n```\r\n * @public\r\n */\r\nexport function createReducer<\r\n S extends NotFunction,\r\n CR extends CaseReducers = CaseReducers\r\n>(\r\n initialState: S | (() => S),\r\n actionsMap: CR,\r\n actionMatchers?: ActionMatcherDescriptionCollection,\r\n defaultCaseReducer?: CaseReducer\r\n): ReducerWithInitialState\r\n\r\nexport function createReducer>(\r\n initialState: S | (() => S),\r\n mapOrBuilderCallback:\r\n | CaseReducers\r\n | ((builder: ActionReducerMapBuilder) => void),\r\n actionMatchers: ReadonlyActionMatcherDescriptionCollection = [],\r\n defaultCaseReducer?: CaseReducer\r\n): ReducerWithInitialState {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof mapOrBuilderCallback === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\"\r\n )\r\n }\r\n }\r\n }\r\n\r\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] =\r\n typeof mapOrBuilderCallback === 'function'\r\n ? executeReducerBuilderCallback(mapOrBuilderCallback)\r\n : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer]\r\n\r\n // Ensure the initial state gets frozen either way (if draftable)\r\n let getInitialState: () => S\r\n if (isStateFunction(initialState)) {\r\n getInitialState = () => freezeDraftable(initialState())\r\n } else {\r\n const frozenInitialState = freezeDraftable(initialState)\r\n getInitialState = () => frozenInitialState\r\n }\r\n\r\n function reducer(state = getInitialState(), action: any): S {\r\n let caseReducers = [\r\n actionsMap[action.type],\r\n ...finalActionMatchers\r\n .filter(({ matcher }) => matcher(action))\r\n .map(({ reducer }) => reducer),\r\n ]\r\n if (caseReducers.filter((cr) => !!cr).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer]\r\n }\r\n\r\n return caseReducers.reduce((previousState, caseReducer): S => {\r\n if (caseReducer) {\r\n if (isDraft(previousState)) {\r\n // If it's already a draft, we must already be inside a `createNextState` call,\r\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\r\n // inside an existing draft. It's safe to just pass the draft to the mutator.\r\n const draft = previousState as Draft // We can assume this is already a draft\r\n const result = caseReducer(draft, action)\r\n\r\n if (result === undefined) {\r\n return previousState\r\n }\r\n\r\n return result as S\r\n } else if (!isDraftable(previousState)) {\r\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\r\n // return the caseReducer func and not wrap it with produce.\r\n const result = caseReducer(previousState as any, action)\r\n\r\n if (result === undefined) {\r\n if (previousState === null) {\r\n return previousState\r\n }\r\n throw Error(\r\n 'A case reducer on a non-draftable value must not return undefined'\r\n )\r\n }\r\n\r\n return result as S\r\n } else {\r\n // @ts-ignore createNextState() produces an Immutable> rather\r\n // than an Immutable, and TypeScript cannot find out how to reconcile\r\n // these two types.\r\n return createNextState(previousState, (draft: Draft) => {\r\n return caseReducer(draft, action)\r\n })\r\n }\r\n }\r\n\r\n return previousState\r\n }, state)\r\n }\r\n\r\n reducer.getInitialState = getInitialState\r\n\r\n return reducer as ReducerWithInitialState\r\n}\r\n","// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\r\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\r\n// optimize the gzip compression for this alphabet.\r\nlet urlAlphabet =\r\n 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\r\n\r\n/**\r\n *\r\n * @public\r\n */\r\nexport let nanoid = (size = 21) => {\r\n let id = ''\r\n // A compact alternative for `for (var i = 0; i < step; i++)`.\r\n let i = size\r\n while (i--) {\r\n // `| 0` is more compact and faster than `Math.floor()`.\r\n id += urlAlphabet[(Math.random() * 64) | 0]\r\n }\r\n return id\r\n}\r\n","import type { Dispatch, AnyAction } from 'redux'\r\nimport type {\r\n PayloadAction,\r\n ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport type { FallbackIfUnknown, Id, IsAny, IsUnknown } from './tsHelpers'\r\nimport { nanoid } from './nanoid'\r\n\r\n// @ts-ignore we need the import of these types due to a bundling issue.\r\ntype _Keep = PayloadAction | ActionCreatorWithPreparedPayload\r\n\r\nexport type BaseThunkAPI<\r\n S,\r\n E,\r\n D extends Dispatch = Dispatch,\r\n RejectedValue = undefined,\r\n RejectedMeta = unknown,\r\n FulfilledMeta = unknown\r\n> = {\r\n dispatch: D\r\n getState: () => S\r\n extra: E\r\n requestId: string\r\n signal: AbortSignal\r\n abort: (reason?: string) => void\r\n rejectWithValue: IsUnknown<\r\n RejectedMeta,\r\n (value: RejectedValue) => RejectWithValue,\r\n (\r\n value: RejectedValue,\r\n meta: RejectedMeta\r\n ) => RejectWithValue\r\n >\r\n fulfillWithValue: IsUnknown<\r\n FulfilledMeta,\r\n (value: FulfilledValue) => FulfilledValue,\r\n (\r\n value: FulfilledValue,\r\n meta: FulfilledMeta\r\n ) => FulfillWithMeta\r\n >\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface SerializedError {\r\n name?: string\r\n message?: string\r\n stack?: string\r\n code?: string\r\n}\r\n\r\nconst commonProperties: Array = [\r\n 'name',\r\n 'message',\r\n 'stack',\r\n 'code',\r\n]\r\n\r\nclass RejectWithValue {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'RejectWithValue'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: RejectedMeta\r\n ) {}\r\n}\r\n\r\nclass FulfillWithMeta {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'FulfillWithMeta'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: FulfilledMeta\r\n ) {}\r\n}\r\n\r\n/**\r\n * Serializes an error into a plain object.\r\n * Reworked from https://github.com/sindresorhus/serialize-error\r\n *\r\n * @public\r\n */\r\nexport const miniSerializeError = (value: any): SerializedError => {\r\n if (typeof value === 'object' && value !== null) {\r\n const simpleError: SerializedError = {}\r\n for (const property of commonProperties) {\r\n if (typeof value[property] === 'string') {\r\n simpleError[property] = value[property]\r\n }\r\n }\r\n\r\n return simpleError\r\n }\r\n\r\n return { message: String(value) }\r\n}\r\n\r\ntype AsyncThunkConfig = {\r\n state?: unknown\r\n dispatch?: Dispatch\r\n extra?: unknown\r\n rejectValue?: unknown\r\n serializedErrorType?: unknown\r\n pendingMeta?: unknown\r\n fulfilledMeta?: unknown\r\n rejectedMeta?: unknown\r\n}\r\n\r\ntype GetState = ThunkApiConfig extends {\r\n state: infer State\r\n}\r\n ? State\r\n : unknown\r\ntype GetExtra = ThunkApiConfig extends { extra: infer Extra }\r\n ? Extra\r\n : unknown\r\ntype GetDispatch = ThunkApiConfig extends {\r\n dispatch: infer Dispatch\r\n}\r\n ? FallbackIfUnknown<\r\n Dispatch,\r\n ThunkDispatch<\r\n GetState,\r\n GetExtra,\r\n AnyAction\r\n >\r\n >\r\n : ThunkDispatch, GetExtra, AnyAction>\r\n\r\ntype GetThunkAPI = BaseThunkAPI<\r\n GetState,\r\n GetExtra,\r\n GetDispatch,\r\n GetRejectValue,\r\n GetRejectedMeta,\r\n GetFulfilledMeta\r\n>\r\n\r\ntype GetRejectValue = ThunkApiConfig extends {\r\n rejectValue: infer RejectValue\r\n}\r\n ? RejectValue\r\n : unknown\r\n\r\ntype GetPendingMeta = ThunkApiConfig extends {\r\n pendingMeta: infer PendingMeta\r\n}\r\n ? PendingMeta\r\n : unknown\r\n\r\ntype GetFulfilledMeta = ThunkApiConfig extends {\r\n fulfilledMeta: infer FulfilledMeta\r\n}\r\n ? FulfilledMeta\r\n : unknown\r\n\r\ntype GetRejectedMeta = ThunkApiConfig extends {\r\n rejectedMeta: infer RejectedMeta\r\n}\r\n ? RejectedMeta\r\n : unknown\r\n\r\ntype GetSerializedErrorType = ThunkApiConfig extends {\r\n serializedErrorType: infer GetSerializedErrorType\r\n}\r\n ? GetSerializedErrorType\r\n : SerializedError\r\n\r\ntype MaybePromise = T | Promise | (T extends any ? Promise : never)\r\n\r\n/**\r\n * A type describing the return value of the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreatorReturnValue<\r\n Returned,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = MaybePromise<\r\n | IsUnknown<\r\n GetFulfilledMeta,\r\n Returned,\r\n FulfillWithMeta>\r\n >\r\n | RejectWithValue<\r\n GetRejectValue,\r\n GetRejectedMeta\r\n >\r\n>\r\n/**\r\n * A type describing the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = (\r\n arg: ThunkArg,\r\n thunkAPI: GetThunkAPI\r\n) => AsyncThunkPayloadCreatorReturnValue\r\n\r\n/**\r\n * A ThunkAction created by `createAsyncThunk`.\r\n * Dispatching it returns a Promise for either a\r\n * fulfilled or rejected action.\r\n * Also, the returned value contains an `abort()` method\r\n * that allows the asyncAction to be cancelled from the outside.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkAction<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = (\r\n dispatch: GetDispatch,\r\n getState: () => GetState,\r\n extra: GetExtra\r\n) => Promise<\r\n | ReturnType>\r\n | ReturnType>\r\n> & {\r\n abort: (reason?: string) => void\r\n requestId: string\r\n arg: ThunkArg\r\n unwrap: () => Promise\r\n}\r\n\r\ntype AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = IsAny<\r\n ThunkArg,\r\n // any handling\r\n (arg: ThunkArg) => AsyncThunkAction,\r\n // unknown handling\r\n unknown extends ThunkArg\r\n ? (arg: ThunkArg) => AsyncThunkAction // argument not specified or specified as void or undefined\r\n : [ThunkArg] extends [void] | [undefined]\r\n ? () => AsyncThunkAction // argument contains void\r\n : [void] extends [ThunkArg] // make optional\r\n ? (arg?: ThunkArg) => AsyncThunkAction // argument contains undefined\r\n : [undefined] extends [ThunkArg]\r\n ? WithStrictNullChecks<\r\n // with strict nullChecks: make optional\r\n (\r\n arg?: ThunkArg\r\n ) => AsyncThunkAction,\r\n // without strict null checks this will match everything, so don't make it optional\r\n (arg: ThunkArg) => AsyncThunkAction\r\n > // default case: normal argument\r\n : (arg: ThunkArg) => AsyncThunkAction\r\n>\r\n\r\n/**\r\n * Options object for `createAsyncThunk`.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkOptions<\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = {\r\n /**\r\n * A method to control whether the asyncThunk should be executed. Has access to the\r\n * `arg`, `api.getState()` and `api.extra` arguments.\r\n *\r\n * @returns `false` if it should be skipped\r\n */\r\n condition?(\r\n arg: ThunkArg,\r\n api: Pick, 'getState' | 'extra'>\r\n ): MaybePromise\r\n /**\r\n * If `condition` returns `false`, the asyncThunk will be skipped.\r\n * This option allows you to control whether a `rejected` action with `meta.condition == false`\r\n * will be dispatched or not.\r\n *\r\n * @default `false`\r\n */\r\n dispatchConditionRejection?: boolean\r\n\r\n serializeError?: (x: unknown) => GetSerializedErrorType\r\n\r\n /**\r\n * A function to use when generating the `requestId` for the request sequence.\r\n *\r\n * @default `nanoid`\r\n */\r\n idGenerator?: (arg: ThunkArg) => string\r\n} & IsUnknown<\r\n GetPendingMeta,\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n *\r\n * Using this optional overload will not modify the types correctly, this overload is only in place to support JavaScript users.\r\n * Please use the `ThunkApiConfig` parameter `pendingMeta` to get access to a correctly typed overload\r\n */\r\n getPendingMeta?(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick, 'getState' | 'extra'>\r\n ): GetPendingMeta\r\n },\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n */\r\n getPendingMeta(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick, 'getState' | 'extra'>\r\n ): GetPendingMeta\r\n }\r\n>\r\n\r\nexport type AsyncThunkPendingActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [string, ThunkArg, GetPendingMeta?],\r\n undefined,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'pending'\r\n } & GetPendingMeta\r\n>\r\n\r\nexport type AsyncThunkRejectedActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [\r\n Error | null,\r\n string,\r\n ThunkArg,\r\n GetRejectValue?,\r\n GetRejectedMeta?\r\n ],\r\n GetRejectValue | undefined,\r\n string,\r\n GetSerializedErrorType,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'rejected'\r\n aborted: boolean\r\n condition: boolean\r\n } & (\r\n | ({ rejectedWithValue: false } & {\r\n [K in keyof GetRejectedMeta]?: undefined\r\n })\r\n | ({ rejectedWithValue: true } & GetRejectedMeta)\r\n )\r\n>\r\n\r\nexport type AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [Returned, string, ThunkArg, GetFulfilledMeta?],\r\n Returned,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'fulfilled'\r\n } & GetFulfilledMeta\r\n>\r\n\r\n/**\r\n * A type describing the return value of `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = AsyncThunkActionCreator & {\r\n pending: AsyncThunkPendingActionCreator\r\n rejected: AsyncThunkRejectedActionCreator\r\n fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >\r\n typePrefix: string\r\n}\r\n\r\ntype OverrideThunkApiConfigs = Id<\r\n NewConfig & Omit\r\n>\r\n\r\ntype CreateAsyncThunk = {\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n // separate signature without `AsyncThunkConfig` for better inference\r\n (\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n CurriedThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions\r\n ): AsyncThunk\r\n\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n (\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >,\r\n options?: AsyncThunkOptions<\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >\r\n ): AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >\r\n\r\n withTypes(): CreateAsyncThunk<\r\n OverrideThunkApiConfigs\r\n >\r\n}\r\n\r\nexport const createAsyncThunk = (() => {\r\n function createAsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n >(\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions\r\n ): AsyncThunk {\r\n type RejectedValue = GetRejectValue\r\n type PendingMeta = GetPendingMeta\r\n type FulfilledMeta = GetFulfilledMeta\r\n type RejectedMeta = GetRejectedMeta\r\n\r\n const fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n > = createAction(\r\n typePrefix + '/fulfilled',\r\n (\r\n payload: Returned,\r\n requestId: string,\r\n arg: ThunkArg,\r\n meta?: FulfilledMeta\r\n ) => ({\r\n payload,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'fulfilled' as const,\r\n },\r\n })\r\n )\r\n\r\n const pending: AsyncThunkPendingActionCreator =\r\n createAction(\r\n typePrefix + '/pending',\r\n (requestId: string, arg: ThunkArg, meta?: PendingMeta) => ({\r\n payload: undefined,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'pending' as const,\r\n },\r\n })\r\n )\r\n\r\n const rejected: AsyncThunkRejectedActionCreator =\r\n createAction(\r\n typePrefix + '/rejected',\r\n (\r\n error: Error | null,\r\n requestId: string,\r\n arg: ThunkArg,\r\n payload?: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => ({\r\n payload,\r\n error: ((options && options.serializeError) || miniSerializeError)(\r\n error || 'Rejected'\r\n ) as GetSerializedErrorType,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n rejectedWithValue: !!payload,\r\n requestStatus: 'rejected' as const,\r\n aborted: error?.name === 'AbortError',\r\n condition: error?.name === 'ConditionError',\r\n },\r\n })\r\n )\r\n\r\n let displayedWarning = false\r\n\r\n const AC =\r\n typeof AbortController !== 'undefined'\r\n ? AbortController\r\n : class implements AbortController {\r\n signal = {\r\n aborted: false,\r\n addEventListener() {},\r\n dispatchEvent() {\r\n return false\r\n },\r\n onabort() {},\r\n removeEventListener() {},\r\n reason: undefined,\r\n throwIfAborted() {},\r\n }\r\n abort() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!displayedWarning) {\r\n displayedWarning = true\r\n console.info(\r\n `This platform does not implement AbortController. \r\nIf you want to use the AbortController to react to \\`abort\\` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.`\r\n )\r\n }\r\n }\r\n }\r\n }\r\n\r\n function actionCreator(\r\n arg: ThunkArg\r\n ): AsyncThunkAction {\r\n return (dispatch, getState, extra) => {\r\n const requestId = options?.idGenerator\r\n ? options.idGenerator(arg)\r\n : nanoid()\r\n\r\n const abortController = new AC()\r\n let abortReason: string | undefined\r\n\r\n let started = false\r\n function abort(reason?: string) {\r\n abortReason = reason\r\n abortController.abort()\r\n }\r\n\r\n const promise = (async function () {\r\n let finalAction: ReturnType\r\n try {\r\n let conditionResult = options?.condition?.(arg, { getState, extra })\r\n if (isThenable(conditionResult)) {\r\n conditionResult = await conditionResult\r\n }\r\n\r\n if (conditionResult === false || abortController.signal.aborted) {\r\n // eslint-disable-next-line no-throw-literal\r\n throw {\r\n name: 'ConditionError',\r\n message: 'Aborted due to condition callback returning false.',\r\n }\r\n }\r\n started = true\r\n\r\n const abortedPromise = new Promise((_, reject) =>\r\n abortController.signal.addEventListener('abort', () =>\r\n reject({\r\n name: 'AbortError',\r\n message: abortReason || 'Aborted',\r\n })\r\n )\r\n )\r\n dispatch(\r\n pending(\r\n requestId,\r\n arg,\r\n options?.getPendingMeta?.(\r\n { requestId, arg },\r\n { getState, extra }\r\n )\r\n )\r\n )\r\n finalAction = await Promise.race([\r\n abortedPromise,\r\n Promise.resolve(\r\n payloadCreator(arg, {\r\n dispatch,\r\n getState,\r\n extra,\r\n requestId,\r\n signal: abortController.signal,\r\n abort,\r\n rejectWithValue: ((\r\n value: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => {\r\n return new RejectWithValue(value, meta)\r\n }) as any,\r\n fulfillWithValue: ((value: unknown, meta?: FulfilledMeta) => {\r\n return new FulfillWithMeta(value, meta)\r\n }) as any,\r\n })\r\n ).then((result) => {\r\n if (result instanceof RejectWithValue) {\r\n throw result\r\n }\r\n if (result instanceof FulfillWithMeta) {\r\n return fulfilled(result.payload, requestId, arg, result.meta)\r\n }\r\n return fulfilled(result as any, requestId, arg)\r\n }),\r\n ])\r\n } catch (err) {\r\n finalAction =\r\n err instanceof RejectWithValue\r\n ? rejected(null, requestId, arg, err.payload, err.meta)\r\n : rejected(err as any, requestId, arg)\r\n }\r\n // We dispatch the result action _after_ the catch, to avoid having any errors\r\n // here get swallowed by the try/catch block,\r\n // per https://twitter.com/dan_abramov/status/770914221638942720\r\n // and https://github.com/reduxjs/redux-toolkit/blob/e85eb17b39a2118d859f7b7746e0f3fee523e089/docs/tutorials/advanced-tutorial.md#async-error-handling-logic-in-thunks\r\n\r\n const skipDispatch =\r\n options &&\r\n !options.dispatchConditionRejection &&\r\n rejected.match(finalAction) &&\r\n (finalAction as any).meta.condition\r\n\r\n if (!skipDispatch) {\r\n dispatch(finalAction)\r\n }\r\n return finalAction\r\n })()\r\n return Object.assign(promise as Promise, {\r\n abort,\r\n requestId,\r\n arg,\r\n unwrap() {\r\n return promise.then(unwrapResult)\r\n },\r\n })\r\n }\r\n }\r\n\r\n return Object.assign(\r\n actionCreator as AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n {\r\n pending,\r\n rejected,\r\n fulfilled,\r\n typePrefix,\r\n }\r\n )\r\n }\r\n createAsyncThunk.withTypes = () => createAsyncThunk\r\n\r\n return createAsyncThunk as CreateAsyncThunk\r\n})()\r\n\r\ninterface UnwrappableAction {\r\n payload: any\r\n meta?: any\r\n error?: any\r\n}\r\n\r\ntype UnwrappedActionPayload = Exclude<\r\n T,\r\n { error: any }\r\n>['payload']\r\n\r\n/**\r\n * @public\r\n */\r\nexport function unwrapResult(\r\n action: R\r\n): UnwrappedActionPayload {\r\n if (action.meta && action.meta.rejectedWithValue) {\r\n throw action.payload\r\n }\r\n if (action.error) {\r\n throw action.error\r\n }\r\n return action.payload\r\n}\r\n\r\ntype WithStrictNullChecks = undefined extends boolean\r\n ? False\r\n : True\r\n\r\nfunction isThenable(value: any): value is PromiseLike {\r\n return (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n typeof value.then === 'function'\r\n )\r\n}\r\n","import type { Dispatch, AnyAction, MiddlewareAPI } from 'redux'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport { createAction, isAction } from '../createAction'\r\nimport { nanoid } from '../nanoid'\r\n\r\nimport type {\r\n ListenerMiddleware,\r\n ListenerMiddlewareInstance,\r\n AddListenerOverloads,\r\n AnyListenerPredicate,\r\n CreateListenerMiddlewareOptions,\r\n TypedAddListener,\r\n TypedCreateListenerEntry,\r\n FallbackAddListenerOptions,\r\n ListenerEntry,\r\n ListenerErrorHandler,\r\n UnsubscribeListener,\r\n TakePattern,\r\n ListenerErrorInfo,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n TypedRemoveListener,\r\n TaskResult,\r\n AbortSignalWithReason,\r\n UnsubscribeListenerOptions,\r\n} from './types'\r\nimport {\r\n abortControllerWithReason,\r\n addAbortSignalListener,\r\n assertFunction,\r\n catchRejection,\r\n} from './utils'\r\nimport {\r\n listenerCancelled,\r\n listenerCompleted,\r\n TaskAbortError,\r\n taskCancelled,\r\n taskCompleted,\r\n} from './exceptions'\r\nimport {\r\n runTask,\r\n validateActive,\r\n createPause,\r\n createDelay,\r\n raceWithSignal,\r\n} from './task'\r\nexport { TaskAbortError } from './exceptions'\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './types'\r\n\r\n//Overly-aggressive byte-shaving\r\nconst { assign } = Object\r\n/**\r\n * @internal\r\n */\r\nconst INTERNAL_NIL_TOKEN = {} as const\r\n\r\nconst alm = 'listenerMiddleware' as const\r\n\r\nconst createFork = (parentAbortSignal: AbortSignalWithReason) => {\r\n const linkControllers = (controller: AbortController) =>\r\n addAbortSignalListener(parentAbortSignal, () =>\r\n abortControllerWithReason(controller, parentAbortSignal.reason)\r\n )\r\n\r\n return (taskExecutor: ForkedTaskExecutor): ForkedTask => {\r\n assertFunction(taskExecutor, 'taskExecutor')\r\n const childAbortController = new AbortController()\r\n\r\n linkControllers(childAbortController)\r\n\r\n const result = runTask(\r\n async (): Promise => {\r\n validateActive(parentAbortSignal)\r\n validateActive(childAbortController.signal)\r\n const result = (await taskExecutor({\r\n pause: createPause(childAbortController.signal),\r\n delay: createDelay(childAbortController.signal),\r\n signal: childAbortController.signal,\r\n })) as T\r\n validateActive(childAbortController.signal)\r\n return result\r\n },\r\n () => abortControllerWithReason(childAbortController, taskCompleted)\r\n )\r\n\r\n return {\r\n result: createPause>(parentAbortSignal)(result),\r\n cancel() {\r\n abortControllerWithReason(childAbortController, taskCancelled)\r\n },\r\n }\r\n }\r\n}\r\n\r\nconst createTakePattern = (\r\n startListening: AddListenerOverloads<\r\n UnsubscribeListener,\r\n S,\r\n Dispatch\r\n >,\r\n signal: AbortSignal\r\n): TakePattern => {\r\n /**\r\n * A function that takes a ListenerPredicate and an optional timeout,\r\n * and resolves when either the predicate returns `true` based on an action\r\n * state combination or when the timeout expires.\r\n * If the parent listener is canceled while waiting, this will throw a\r\n * TaskAbortError.\r\n */\r\n const take = async

>(\r\n predicate: P,\r\n timeout: number | undefined\r\n ) => {\r\n validateActive(signal)\r\n\r\n // Placeholder unsubscribe function until the listener is added\r\n let unsubscribe: UnsubscribeListener = () => {}\r\n\r\n const tuplePromise = new Promise<[AnyAction, S, S]>((resolve, reject) => {\r\n // Inside the Promise, we synchronously add the listener.\r\n let stopListening = startListening({\r\n predicate: predicate as any,\r\n effect: (action, listenerApi): void => {\r\n // One-shot listener that cleans up as soon as the predicate passes\r\n listenerApi.unsubscribe()\r\n // Resolve the promise with the same arguments the predicate saw\r\n resolve([\r\n action,\r\n listenerApi.getState(),\r\n listenerApi.getOriginalState(),\r\n ])\r\n },\r\n })\r\n unsubscribe = () => {\r\n stopListening()\r\n reject()\r\n }\r\n })\r\n\r\n const promises: (Promise | Promise<[AnyAction, S, S]>)[] = [\r\n tuplePromise,\r\n ]\r\n\r\n if (timeout != null) {\r\n promises.push(\r\n new Promise((resolve) => setTimeout(resolve, timeout, null))\r\n )\r\n }\r\n\r\n try {\r\n const output = await raceWithSignal(signal, Promise.race(promises))\r\n\r\n validateActive(signal)\r\n return output\r\n } finally {\r\n // Always clean up the listener\r\n unsubscribe()\r\n }\r\n }\r\n\r\n return ((predicate: AnyListenerPredicate, timeout: number | undefined) =>\r\n catchRejection(take(predicate, timeout))) as TakePattern\r\n}\r\n\r\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\r\n let { type, actionCreator, matcher, predicate, effect } = options\r\n\r\n if (type) {\r\n predicate = createAction(type).match\r\n } else if (actionCreator) {\r\n type = actionCreator!.type\r\n predicate = actionCreator.match\r\n } else if (matcher) {\r\n predicate = matcher\r\n } else if (predicate) {\r\n // pass\r\n } else {\r\n throw new Error(\r\n 'Creating or removing a listener requires one of the known fields for matching an action'\r\n )\r\n }\r\n\r\n assertFunction(effect, 'options.listener')\r\n\r\n return { predicate, type, effect }\r\n}\r\n\r\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\r\nexport const createListenerEntry: TypedCreateListenerEntry = (\r\n options: FallbackAddListenerOptions\r\n) => {\r\n const { type, predicate, effect } = getListenerEntryPropsFrom(options)\r\n\r\n const id = nanoid()\r\n const entry: ListenerEntry = {\r\n id,\r\n effect,\r\n type,\r\n predicate,\r\n pending: new Set(),\r\n unsubscribe: () => {\r\n throw new Error('Unsubscribe not initialized')\r\n },\r\n }\r\n\r\n return entry\r\n}\r\n\r\nconst cancelActiveListeners = (\r\n entry: ListenerEntry>\r\n) => {\r\n entry.pending.forEach((controller) => {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n })\r\n}\r\n\r\nconst createClearListenerMiddleware = (\r\n listenerMap: Map\r\n) => {\r\n return () => {\r\n listenerMap.forEach(cancelActiveListeners)\r\n\r\n listenerMap.clear()\r\n }\r\n}\r\n\r\n/**\r\n * Safely reports errors to the `errorHandler` provided.\r\n * Errors that occur inside `errorHandler` are notified in a new task.\r\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\r\n * @param errorHandler\r\n * @param errorToNotify\r\n */\r\nconst safelyNotifyError = (\r\n errorHandler: ListenerErrorHandler,\r\n errorToNotify: unknown,\r\n errorInfo: ListenerErrorInfo\r\n): void => {\r\n try {\r\n errorHandler(errorToNotify, errorInfo)\r\n } catch (errorHandlerError) {\r\n // We cannot let an error raised here block the listener queue.\r\n // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\r\n setTimeout(() => {\r\n throw errorHandlerError\r\n }, 0)\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const addListener = createAction(\r\n `${alm}/add`\r\n) as TypedAddListener\r\n\r\n/**\r\n * @public\r\n */\r\nexport const clearAllListeners = createAction(`${alm}/removeAll`)\r\n\r\n/**\r\n * @public\r\n */\r\nexport const removeListener = createAction(\r\n `${alm}/remove`\r\n) as TypedRemoveListener\r\n\r\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\r\n console.error(`${alm}/error`, ...args)\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport function createListenerMiddleware<\r\n S = unknown,\r\n D extends Dispatch = ThunkDispatch,\r\n ExtraArgument = unknown\r\n>(middlewareOptions: CreateListenerMiddlewareOptions = {}) {\r\n const listenerMap = new Map()\r\n const { extra, onError = defaultErrorHandler } = middlewareOptions\r\n\r\n assertFunction(onError, 'onError')\r\n\r\n const insertEntry = (entry: ListenerEntry) => {\r\n entry.unsubscribe = () => listenerMap.delete(entry!.id)\r\n\r\n listenerMap.set(entry.id, entry)\r\n return (cancelOptions?: UnsubscribeListenerOptions) => {\r\n entry.unsubscribe()\r\n if (cancelOptions?.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n }\r\n\r\n const findListenerEntry = (\r\n comparator: (entry: ListenerEntry) => boolean\r\n ): ListenerEntry | undefined => {\r\n for (const entry of Array.from(listenerMap.values())) {\r\n if (comparator(entry)) {\r\n return entry\r\n }\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n const startListening = (options: FallbackAddListenerOptions) => {\r\n let entry = findListenerEntry(\r\n (existingEntry) => existingEntry.effect === options.effect\r\n )\r\n\r\n if (!entry) {\r\n entry = createListenerEntry(options as any)\r\n }\r\n\r\n return insertEntry(entry)\r\n }\r\n\r\n const stopListening = (\r\n options: FallbackAddListenerOptions & UnsubscribeListenerOptions\r\n ): boolean => {\r\n const { type, effect, predicate } = getListenerEntryPropsFrom(options)\r\n\r\n const entry = findListenerEntry((entry) => {\r\n const matchPredicateOrType =\r\n typeof type === 'string'\r\n ? entry.type === type\r\n : entry.predicate === predicate\r\n\r\n return matchPredicateOrType && entry.effect === effect\r\n })\r\n\r\n if (entry) {\r\n entry.unsubscribe()\r\n if (options.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n\r\n return !!entry\r\n }\r\n\r\n const notifyListener = async (\r\n entry: ListenerEntry>,\r\n action: AnyAction,\r\n api: MiddlewareAPI,\r\n getOriginalState: () => S\r\n ) => {\r\n const internalTaskController = new AbortController()\r\n const take = createTakePattern(\r\n startListening,\r\n internalTaskController.signal\r\n )\r\n\r\n try {\r\n entry.pending.add(internalTaskController)\r\n await Promise.resolve(\r\n entry.effect(\r\n action,\r\n // Use assign() rather than ... to avoid extra helper functions added to bundle\r\n assign({}, api, {\r\n getOriginalState,\r\n condition: (\r\n predicate: AnyListenerPredicate,\r\n timeout?: number\r\n ) => take(predicate, timeout).then(Boolean),\r\n take,\r\n delay: createDelay(internalTaskController.signal),\r\n pause: createPause(internalTaskController.signal),\r\n extra,\r\n signal: internalTaskController.signal,\r\n fork: createFork(internalTaskController.signal),\r\n unsubscribe: entry.unsubscribe,\r\n subscribe: () => {\r\n listenerMap.set(entry.id, entry)\r\n },\r\n cancelActiveListeners: () => {\r\n entry.pending.forEach((controller, _, set) => {\r\n if (controller !== internalTaskController) {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n set.delete(controller)\r\n }\r\n })\r\n },\r\n })\r\n )\r\n )\r\n } catch (listenerError) {\r\n if (!(listenerError instanceof TaskAbortError)) {\r\n safelyNotifyError(onError, listenerError, {\r\n raisedBy: 'effect',\r\n })\r\n }\r\n } finally {\r\n abortControllerWithReason(internalTaskController, listenerCompleted) // Notify that the task has completed\r\n entry.pending.delete(internalTaskController)\r\n }\r\n }\r\n\r\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap)\r\n\r\n const middleware: ListenerMiddleware =\r\n (api) => (next) => (action) => {\r\n if (!isAction(action)) {\r\n // we only want to notify listeners for action objects\r\n return next(action)\r\n }\r\n\r\n if (addListener.match(action)) {\r\n return startListening(action.payload)\r\n }\r\n\r\n if (clearAllListeners.match(action)) {\r\n clearListenerMiddleware()\r\n return\r\n }\r\n\r\n if (removeListener.match(action)) {\r\n return stopListening(action.payload)\r\n }\r\n\r\n // Need to get this state _before_ the reducer processes the action\r\n let originalState: S | typeof INTERNAL_NIL_TOKEN = api.getState()\r\n\r\n // `getOriginalState` can only be called synchronously.\r\n // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\r\n const getOriginalState = (): S => {\r\n if (originalState === INTERNAL_NIL_TOKEN) {\r\n throw new Error(\r\n `${alm}: getOriginalState can only be called synchronously`\r\n )\r\n }\r\n\r\n return originalState as S\r\n }\r\n\r\n let result: unknown\r\n\r\n try {\r\n // Actually forward the action to the reducer before we handle listeners\r\n result = next(action)\r\n\r\n if (listenerMap.size > 0) {\r\n let currentState = api.getState()\r\n // Work around ESBuild+TS transpilation issue\r\n const listenerEntries = Array.from(listenerMap.values())\r\n for (let entry of listenerEntries) {\r\n let runListener = false\r\n\r\n try {\r\n runListener = entry.predicate(action, currentState, originalState)\r\n } catch (predicateError) {\r\n runListener = false\r\n\r\n safelyNotifyError(onError, predicateError, {\r\n raisedBy: 'predicate',\r\n })\r\n }\r\n\r\n if (!runListener) {\r\n continue\r\n }\r\n\r\n notifyListener(entry, action, api, getOriginalState)\r\n }\r\n }\r\n } finally {\r\n // Remove `originalState` store from this scope.\r\n originalState = INTERNAL_NIL_TOKEN\r\n }\r\n\r\n return result\r\n }\r\n\r\n return {\r\n middleware,\r\n startListening,\r\n stopListening,\r\n clearListeners: clearListenerMiddleware,\r\n } as ListenerMiddlewareInstance\r\n}\r\n","import { TaskAbortError } from './exceptions'\r\nimport type { AbortSignalWithReason, TaskResult } from './types'\r\nimport { addAbortSignalListener, catchRejection, noop } from './utils'\r\n\r\n/**\r\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\r\n * @param signal\r\n * @param reason\r\n * @see {TaskAbortError}\r\n */\r\nexport const validateActive = (signal: AbortSignal): void => {\r\n if (signal.aborted) {\r\n throw new TaskAbortError((signal as AbortSignalWithReason).reason)\r\n }\r\n}\r\n\r\n/**\r\n * Generates a race between the promise(s) and the AbortSignal\r\n * This avoids `Promise.race()`-related memory leaks:\r\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\r\n */\r\nexport function raceWithSignal(\r\n signal: AbortSignalWithReason,\r\n promise: Promise\r\n): Promise {\r\n let cleanup = noop\r\n return new Promise((resolve, reject) => {\r\n const notifyRejection = () => reject(new TaskAbortError(signal.reason))\r\n\r\n if (signal.aborted) {\r\n notifyRejection()\r\n return\r\n }\r\n\r\n cleanup = addAbortSignalListener(signal, notifyRejection)\r\n promise.finally(() => cleanup()).then(resolve, reject)\r\n }).finally(() => {\r\n // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\r\n cleanup = noop\r\n })\r\n}\r\n\r\n/**\r\n * Runs a task and returns promise that resolves to {@link TaskResult}.\r\n * Second argument is an optional `cleanUp` function that always runs after task.\r\n *\r\n * **Note:** `runTask` runs the executor in the next microtask.\r\n * @returns\r\n */\r\nexport const runTask = async (\r\n task: () => Promise,\r\n cleanUp?: () => void\r\n): Promise> => {\r\n try {\r\n await Promise.resolve()\r\n const value = await task()\r\n return {\r\n status: 'ok',\r\n value,\r\n }\r\n } catch (error: any) {\r\n return {\r\n status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\r\n error,\r\n }\r\n } finally {\r\n cleanUp?.()\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and a promise returns another promise that resolves\r\n * as soon the input promise is provided or rejects as soon as\r\n * `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createPause = (signal: AbortSignal) => {\r\n return (promise: Promise): Promise => {\r\n return catchRejection(\r\n raceWithSignal(signal, promise).then((output) => {\r\n validateActive(signal)\r\n return output\r\n })\r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\r\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createDelay = (signal: AbortSignal) => {\r\n const pause = createPause(signal)\r\n return (timeoutMs: number): Promise => {\r\n return pause(new Promise((resolve) => setTimeout(resolve, timeoutMs)))\r\n }\r\n}\r\n","import type { StoreEnhancer } from 'redux'\r\n\r\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch'\r\n\r\nexport const prepareAutoBatched =\r\n () =>\r\n (payload: T): { payload: T; meta: unknown } => ({\r\n payload,\r\n meta: { [SHOULD_AUTOBATCH]: true },\r\n })\r\n\r\n// TODO Remove this in 2.0\r\n// Copied from https://github.com/feross/queue-microtask\r\nlet promise: Promise\r\nconst queueMicrotaskShim =\r\n typeof queueMicrotask === 'function'\r\n ? queueMicrotask.bind(\r\n typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : globalThis\r\n )\r\n : // reuse resolved promise, and allocate it lazily\r\n (cb: () => void) =>\r\n (promise || (promise = Promise.resolve())).then(cb).catch((err: any) =>\r\n setTimeout(() => {\r\n throw err\r\n }, 0)\r\n )\r\n\r\nconst createQueueWithTimer = (timeout: number) => {\r\n return (notify: () => void) => {\r\n setTimeout(notify, timeout)\r\n }\r\n}\r\n\r\n// requestAnimationFrame won't exist in SSR environments.\r\n// Fall back to a vague approximation just to keep from erroring.\r\nconst rAF =\r\n typeof window !== 'undefined' && window.requestAnimationFrame\r\n ? window.requestAnimationFrame\r\n : createQueueWithTimer(10)\r\n\r\nexport type AutoBatchOptions =\r\n | { type: 'tick' }\r\n | { type: 'timer'; timeout: number }\r\n | { type: 'raf' }\r\n | { type: 'callback'; queueNotification: (notify: () => void) => void }\r\n\r\n/**\r\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\r\n * notifying subscribers until either the queued callback executes or the\r\n * next \"standard-priority\" action is dispatched.\r\n *\r\n * This allows dispatching multiple \"low-priority\" actions in a row with only\r\n * a single subscriber notification to the UI after the sequence of actions\r\n * is finished, thus improving UI re-render performance.\r\n *\r\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\r\n * This can be added to `action.meta` manually, or by using the\r\n * `prepareAutoBatched` helper.\r\n *\r\n * By default, it will queue a notification for the end of the event loop tick.\r\n * However, you can pass several other options to configure the behavior:\r\n * - `{type: 'tick'}: queues using `queueMicrotask` (default)\r\n * - `{type: 'timer, timeout: number}`: queues using `setTimeout`\r\n * - `{type: 'raf'}`: queues using `requestAnimationFrame`\r\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}: lets you provide your own callback\r\n *\r\n *\r\n */\r\nexport const autoBatchEnhancer =\r\n (options: AutoBatchOptions = { type: 'raf' }): StoreEnhancer =>\r\n (next) =>\r\n (...args) => {\r\n const store = next(...args)\r\n\r\n let notifying = true\r\n let shouldNotifyAtEndOfTick = false\r\n let notificationQueued = false\r\n\r\n const listeners = new Set<() => void>()\r\n\r\n const queueCallback =\r\n options.type === 'tick'\r\n ? queueMicrotaskShim\r\n : options.type === 'raf'\r\n ? rAF\r\n : options.type === 'callback'\r\n ? options.queueNotification\r\n : createQueueWithTimer(options.timeout)\r\n\r\n const notifyListeners = () => {\r\n // We're running at the end of the event loop tick.\r\n // Run the real listener callbacks to actually update the UI.\r\n notificationQueued = false\r\n if (shouldNotifyAtEndOfTick) {\r\n shouldNotifyAtEndOfTick = false\r\n listeners.forEach((l) => l())\r\n }\r\n }\r\n\r\n return Object.assign({}, store, {\r\n // Override the base `store.subscribe` method to keep original listeners\r\n // from running if we're delaying notifications\r\n subscribe(listener: () => void) {\r\n // Each wrapped listener will only call the real listener if\r\n // the `notifying` flag is currently active when it's called.\r\n // This lets the base store work as normal, while the actual UI\r\n // update becomes controlled by this enhancer.\r\n const wrappedListener: typeof listener = () => notifying && listener()\r\n const unsubscribe = store.subscribe(wrappedListener)\r\n listeners.add(listener)\r\n return () => {\r\n unsubscribe()\r\n listeners.delete(listener)\r\n }\r\n },\r\n // Override the base `store.dispatch` method so that we can check actions\r\n // for the `shouldAutoBatch` flag and determine if batching is active\r\n dispatch(action: any) {\r\n try {\r\n // If the action does _not_ have the `shouldAutoBatch` flag,\r\n // we resume/continue normal notify-after-each-dispatch behavior\r\n notifying = !action?.meta?.[SHOULD_AUTOBATCH]\r\n // If a `notifyListeners` microtask was queued, you can't cancel it.\r\n // Instead, we set a flag so that it's a no-op when it does run\r\n shouldNotifyAtEndOfTick = !notifying\r\n if (shouldNotifyAtEndOfTick) {\r\n // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\r\n // a microtask to notify listeners at the end of the event loop tick.\r\n // Make sure we only enqueue this _once_ per tick.\r\n if (!notificationQueued) {\r\n notificationQueued = true\r\n queueCallback(notifyListeners)\r\n }\r\n }\r\n // Go ahead and process the action as usual, including reducers.\r\n // If normal notification behavior is enabled, the store will notify\r\n // all of its own listeners, and the wrapper callbacks above will\r\n // see `notifying` is true and pass on to the real listener callbacks.\r\n // If we're \"batching\" behavior, then the wrapped callbacks will\r\n // bail out, causing the base store notification behavior to be no-ops.\r\n return store.dispatch(action)\r\n } finally {\r\n // Assume we're back to normal behavior after each action\r\n notifying = true\r\n }\r\n },\r\n })\r\n }\r\n","import { enableES5 } from 'immer'\r\nexport * from 'redux'\r\nexport {\r\n default as createNextState,\r\n current,\r\n freeze,\r\n original,\r\n isDraft,\r\n} from 'immer'\r\nexport type { Draft } from 'immer'\r\nexport { createSelector } from 'reselect'\r\nexport type {\r\n Selector,\r\n OutputParametricSelector,\r\n OutputSelector,\r\n ParametricSelector,\r\n} from 'reselect'\r\nexport { createDraftSafeSelector } from './createDraftSafeSelector'\r\nexport type { ThunkAction, ThunkDispatch, ThunkMiddleware } from 'redux-thunk'\r\n\r\n// We deliberately enable Immer's ES5 support, on the grounds that\r\n// we assume RTK will be used with React Native and other Proxy-less\r\n// environments. In addition, that's how Immer 4 behaved, and since\r\n// we want to ship this in an RTK minor, we should keep the same behavior.\r\nenableES5()\r\n\r\nexport {\r\n // js\r\n configureStore,\r\n} from './configureStore'\r\nexport type {\r\n // types\r\n ConfigureEnhancersCallback,\r\n ConfigureStoreOptions,\r\n EnhancedStore,\r\n} from './configureStore'\r\nexport type { DevToolsEnhancerOptions } from './devtoolsExtension'\r\nexport {\r\n // js\r\n createAction,\r\n getType,\r\n isAction,\r\n isFSA as isFluxStandardAction,\r\n} from './createAction'\r\nexport type {\r\n // types\r\n PayloadAction,\r\n PayloadActionCreator,\r\n ActionCreatorWithNonInferrablePayload,\r\n ActionCreatorWithOptionalPayload,\r\n ActionCreatorWithPayload,\r\n ActionCreatorWithoutPayload,\r\n ActionCreatorWithPreparedPayload,\r\n PrepareAction,\r\n} from './createAction'\r\nexport {\r\n // js\r\n createReducer,\r\n} from './createReducer'\r\nexport type {\r\n // types\r\n Actions,\r\n CaseReducer,\r\n CaseReducers,\r\n} from './createReducer'\r\nexport {\r\n // js\r\n createSlice,\r\n} from './createSlice'\r\n\r\nexport type {\r\n // types\r\n CreateSliceOptions,\r\n Slice,\r\n CaseReducerActions,\r\n SliceCaseReducers,\r\n ValidateSliceCaseReducers,\r\n CaseReducerWithPrepare,\r\n SliceActionCreator,\r\n} from './createSlice'\r\nexport {\r\n // js\r\n createImmutableStateInvariantMiddleware,\r\n isImmutableDefault,\r\n} from './immutableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n ImmutableStateInvariantMiddlewareOptions,\r\n} from './immutableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n createSerializableStateInvariantMiddleware,\r\n findNonSerializableValue,\r\n isPlain,\r\n} from './serializableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n SerializableStateInvariantMiddlewareOptions,\r\n} from './serializableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n getDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nexport type {\r\n // types\r\n ActionReducerMapBuilder,\r\n} from './mapBuilders'\r\nexport { MiddlewareArray, EnhancerArray } from './utils'\r\n\r\nexport { createEntityAdapter } from './entities/create_adapter'\r\nexport type {\r\n Dictionary,\r\n EntityState,\r\n EntityAdapter,\r\n EntitySelectors,\r\n EntityStateAdapter,\r\n EntityId,\r\n Update,\r\n IdSelector,\r\n Comparer,\r\n} from './entities/models'\r\n\r\nexport {\r\n createAsyncThunk,\r\n unwrapResult,\r\n miniSerializeError,\r\n} from './createAsyncThunk'\r\nexport type {\r\n AsyncThunk,\r\n AsyncThunkOptions,\r\n AsyncThunkAction,\r\n AsyncThunkPayloadCreatorReturnValue,\r\n AsyncThunkPayloadCreator,\r\n SerializedError,\r\n} from './createAsyncThunk'\r\n\r\nexport {\r\n // js\r\n isAllOf,\r\n isAnyOf,\r\n isPending,\r\n isRejected,\r\n isFulfilled,\r\n isAsyncThunkAction,\r\n isRejectedWithValue,\r\n} from './matchers'\r\nexport type {\r\n // types\r\n ActionMatchingAllOf,\r\n ActionMatchingAnyOf,\r\n} from './matchers'\r\n\r\nexport { nanoid } from './nanoid'\r\n\r\nexport { default as isPlainObject } from './isPlainObject'\r\n\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './listenerMiddleware/index'\r\nexport type { AnyListenerPredicate } from './listenerMiddleware/types'\r\n\r\nexport {\r\n createListenerMiddleware,\r\n addListener,\r\n removeListener,\r\n clearAllListeners,\r\n TaskAbortError,\r\n} from './listenerMiddleware/index'\r\n\r\nexport {\r\n SHOULD_AUTOBATCH,\r\n prepareAutoBatched,\r\n autoBatchEnhancer,\r\n} from './autoBatchEnhancer'\r\nexport type { AutoBatchOptions } from './autoBatchEnhancer'\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nconst initialState = {\r\n show: false,\r\n text: '',\r\n title: ''\r\n};\r\nexport const confirmationSlice = createSlice({\r\n name: 'confirmation',\r\n initialState,\r\n reducers: {\r\n show: (state, action) => {\r\n const { title, text } = action.payload;\r\n state.show = true;\r\n state.text = text;\r\n state.title = title;\r\n },\r\n close: (state) => {\r\n state.show = false;\r\n },\r\n accept: (state, action) => {\r\n state.show = false;\r\n }\r\n }\r\n});\r\n","import { batch, useDispatch, useSelector } from \"react-redux\";\r\nimport { layoutSlice } from \"../slices\";\r\nlet onCancelCallback;\r\nlet onAcceptCallback;\r\nexport const usePrompt = () => {\r\n const dispatch = useDispatch();\r\n const props = useSelector(x => x.layout.prompt);\r\n const { show, title, text, required, maxLength: maxLegth, label, comments, errorMessage } = props;\r\n const closePrompt = () => {\r\n batch(() => {\r\n dispatch(layoutSlice.actions.closePrompt());\r\n dispatch(layoutSlice.actions.setPromptComments(''));\r\n dispatch(layoutSlice.actions.setPromptErrorMessage(''));\r\n });\r\n onCancelCallback = undefined;\r\n onAcceptCallback = undefined;\r\n };\r\n return {\r\n comments,\r\n errorMessage,\r\n label,\r\n maxLegth,\r\n required,\r\n show,\r\n text,\r\n title,\r\n showPrompt: (options) => {\r\n onCancelCallback = options.onClose;\r\n onAcceptCallback = options.onAccept;\r\n dispatch(layoutSlice.actions.showPrompt({\r\n label: options.label,\r\n maxLength: options.maxLength,\r\n required: options.required,\r\n show: true,\r\n text: options.text,\r\n title: options.title\r\n }));\r\n },\r\n closePrompt: () => {\r\n onCancelCallback === null || onCancelCallback === void 0 ? void 0 : onCancelCallback();\r\n closePrompt();\r\n },\r\n acceptPrompt: (comments) => {\r\n onAcceptCallback === null || onAcceptCallback === void 0 ? void 0 : onAcceptCallback(comments);\r\n closePrompt();\r\n },\r\n setErrorMessage: (message) => {\r\n dispatch(layoutSlice.actions.setPromptErrorMessage(message));\r\n },\r\n setComments: (comments) => {\r\n dispatch(layoutSlice.actions.setPromptComments(comments));\r\n }\r\n };\r\n};\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { esCO } from \"../languages/esCO\";\r\nconst initialState = {\r\n labels: esCO,\r\n currentLanguage: 'es-CO'\r\n};\r\nexport const languageSlice = createSlice({\r\n name: 'language',\r\n initialState: initialState,\r\n reducers: {\r\n setLanguage: (state, action) => {\r\n state.currentLanguage = action.payload || initialState.currentLanguage;\r\n },\r\n }\r\n});\r\n","export const esCO = {\r\n \"#FilteredItemsOf#\": \"# Elementos filtrados de #\",\r\n \"#MinutesAgo\": \"Hace # minutos\",\r\n \"aBranchWithTheName#branchName#AlreadyExists\": \"Ya existe una sucural con el nombre #nombrede la sucursal#\",\r\n \"accept\": \"Aceptar\",\r\n \"access\": \"Acceso\",\r\n \"accessControlTable\": \"Tabla de control de acceso (TCA)\",\r\n \"accessibility\": \"Accesibilidad\",\r\n \"accessType\": \"Tipo de acceso\",\r\n \"aConsecutiveWithTheCode'#numerodecódigo#'AlreadyExists.\": \"Ya existe un consecutivo con el código '#numerodecódigo#'\",\r\n \"actingAsARepresentative\": \"¿Actúa cómo apoderado?\",\r\n \"activateBranches\": \"Activar sucursal(es)\",\r\n \"activateProfiles\": \"Activar perfil(es)\",\r\n \"active_Female\": \"Activa\",\r\n \"active_Male\": \"Activo\",\r\n \"activeInTheElectronicOffice\": \"Activo en la sede electronica\",\r\n \"activeTRD\": \"TRD activa\",\r\n \"actsAsARepresentative\": \"¿Actua como representante?\",\r\n \"actuaComoRepresentanteQuestion\": \"¿Actúa cómo representante?\",\r\n \"add\": \"Agregar\",\r\n \"addANewKeyword\": \"Agregar una nueva palabra clave\",\r\n \"addAttachmentType\": \"Agregar tipo de anexo\",\r\n \"addDocumentType\": \"Agregar tipo documental\",\r\n \"addExternalCopy\": \"Agregar copia externa\",\r\n \"addFolder\": \"Agregar carpeta\",\r\n \"additionalInformation\": \"Información adicional\",\r\n \"addKeyword\": \"Agregar Palabra\",\r\n \"addLocation\": \"Agregar ubicación\",\r\n \"address\": \"Direccion\",\r\n \"addressRequired\": \"Dirección requerida\",\r\n \"aDefinitiveAnswerHasBeenGivenWithThePhysicalOutgoingRecordNo.#RecordNumber#\": \"Se ha dado respuesta definitiva con el radicado de salida físico No. # numero radicado #\",\r\n \"administration\": \"Administración\",\r\n \"administrativeClosure\": \"Cierre administrativo\",\r\n \"administrativeClosureOfTheRecordCompleted\": \"Cierre administrativo de expediente realizado\",\r\n \"administrativeClosureSuccessfullyCompleted\": \"Cierre administrativo realizado correctamente\",\r\n \"advancedOrientationSearch\": \"Búsqueda avanzada de orientaciones\",\r\n \"advancedSearch\": \"Búsqueda avanzada\",\r\n \"advancedSearchForRecordsAndInternalCommunications\": \"Búsqueda avanzada de radicados y comunicados internos\",\r\n \"ageRange\": \"Rango de edad\",\r\n \"ageRanges\": \"Rangos de edad\",\r\n \"aHolidayWithTheDate#Date#AlreadyExists\": \"Ya existe un día festivo con la fecha #Fecha#\",\r\n \"alertCreatedSuccessfully\": \"Alerta creada correctamente\",\r\n \"alerts\": \"Alertas\",\r\n \"all\": \"Todo\",\r\n \"allowedExtensions\": \"Extensiones permitidas\",\r\n \"allowEditing\": \"Permitir editar\",\r\n \"allowReassignment\": \"Permitir reasignar\",\r\n \"allowReturn\": \"permitir devolver\",\r\n \"allSections\": \"Todas las secciones\",\r\n \"allTaskTypes\": \"Todos los tipos de tarea\",\r\n \"aNewVersionOfTheApplicationHasBeenDownloaded,SoThePageWillBeUpdated.IfThisMessagePersists,PressTheCtrl+F5Key\": \"Se ha descargado una nueva versión de la aplicación por lo cual se va a actualizar la página. Si este mensaje persiste, presione la tecla Ctrl + F5\",\r\n \"annotations\": \"Anotaciones\",\r\n \"anonymous\": \"Anónimo\",\r\n \"anonymousFiling\": \"Radicación anónima\",\r\n \"aParameterWithTheName'#nombre#'AlreadyExistsInTheGroup'#grupo#'\": \"Ya existe un parámetro con nombre '#nombre#' en el grupo '#grupo#'\",\r\n \"applications\": \"Aplicaciones\",\r\n \"approval\": \"Visto bueno\",\r\n \"approvalComments\": \"Observaciones de la aprobación\",\r\n \"approvalDenied\": \"Aprobación Rechazada\",\r\n \"approvalOfFileTransferByDepartment\": \"Aprobación de Transferencia de expedientes por Dependencia\",\r\n \"approvalOfIncomingMail-DocumentFlow\": \"Aprobación radicado de entrada - Flujo documental\",\r\n \"approvalOfRecordTransfer\": \"Aprobación traslado de expedientes\",\r\n \"approvalPending\": \"Pendiente por aprobar\",\r\n \"approvalRequest\": \"Solicitud de visto bueno\",\r\n \"approvalRequestSentSuccessfully\": \"Solicitud de aprobación enviada con éxito\",\r\n \"approve\": \"Aprobar\",\r\n \"approved\": \"Aprobado\",\r\n \"approveFinalStepOfOutgoingMailDocumentFlow\": \"Aprobar final flujo documental radicado de salida\",\r\n \"approveInternalCommunication\": \"Aprobar comunicado interno\",\r\n \"approveOutgoingMail\": \"Aprobar radicado de salida\",\r\n \"approveOutgoingMailWithDigitalSignature\": \"Aprobar radicado de salida con firma digital\",\r\n \"approveOutgoingPQR\": \"Aprobar PQR salida\",\r\n \"approvePostponingTransfers\": \"Aprobar posponer transferencias\",\r\n \"approver\": \"Aprobador\",\r\n \"approverUser\": \"Usuario aprobador\",\r\n \"approverUserSubsection\": \"Subsección usuario aprobador\",\r\n \"approverUserUpdatedSuccessfully\": \"Usuario aprobador actualizado con éxito.\",\r\n \"approveStepInOutgoingMailDocumentFlow\": \"Aprobar paso flujo documental radicado de salida\",\r\n \"approveTransfers\": \"Aprobar transferencias\",\r\n \"archive\": \"Archivar\",\r\n \"archiveIncomingFile\": \"Archivar radicado de entrada\",\r\n \"archivoX_EditNotification\": \"Editar notificación\",\r\n \"areaCode\": \"Indicativo\",\r\n \"areaManager\": \"Jefe del área\",\r\n \"areYouSureYouWantToActivateTheSelectedBranch(es)\": \"¿Está seguro que desea Activar la(s) sucursal(es) seleccionada(s)\",\r\n \"areYouSureYouWantToActivateTheSelectedProfile(s)\": \"¿Está seguro que desea Activar el(los) perfil(es) seleccionado(s)\",\r\n \"areYouSureYouWantToApproveForTheCurrentOutgoingFile\": \"¿Esta seguro que desea aprobar para el radicado de salida actual?\",\r\n \"areYouSureYouWantToApproveTheCurrentInternalCommunication\": \"¿Está seguro que desea aprobar el comunicado interno actual?\",\r\n \"areYouSureYouWantToArchiveTheIncomingFile\": \"¿Está seguro que desea archivar el radicado de entrada?\",\r\n \"areYouSureYouWantToAssociateTheUserWithTheSection\": \"¿Está seguro que desea asociar el usuario a la sección?\",\r\n \"areYouSureYouWantToBreakInheritanceOfRecordPermissions\": \"¿Está seguro que desea romper la herencia de permisos del expediente?\",\r\n \"areYouSureYouWantToBreakThePermissionInheritanceOfTheDocument\": \"¿Está seguro que desea romper la herencia de permisos del documento?\",\r\n \"areYouSureYouWantToChangeTheRecordResponsible\": \"¿Está seguro que desea cambiar el responsable del expediente?\",\r\n \"areYouSureYouWantToCompleteTheShippingAssignment\": \"¿Está seguro que desea completar la asignación de envio?\",\r\n \"areYouSureYouWantToCreateTheCity\": \"¿Está seguro que desea crear la ciudad?\",\r\n \"areYouSureYouWantToCreateTheCountry\": \"¿Está seguro que desea crear el país?\",\r\n \"areYouSureYouWantToCreateTheDecision\": \"¿Está seguro que desea crear la decisión?\",\r\n \"areYouSureYouWantToCreateTheExpedient\": \"¿Está seguro que desea crear el expediente?\",\r\n \"areYouSureYouWantToCreateTheExtension\": \"¿Está seguro que desea crear la extensión?\",\r\n \"areYouSureYouWantToCreateTheFolder\": \"¿Está seguro que desea crear la carpeta?\",\r\n \"areYouSureYouWantToCreateTheFund\": \"¿Está seguro que desea crear el fondo?\",\r\n \"areYouSureYouWantToCreateTheProfile\": \"¿Está seguro que desea crear el perfil?\",\r\n \"areYouSureYouWantToCreateTheRecord\": \"¿Está seguro que desea crear el registro?\",\r\n \"areYouSureYouWantToCreateTheRecordAssociation\": \"¿Está seguro que desea crear la asociación de expedientes?\",\r\n \"areYouSureYouWantToCreateTheRole\": \"¿Está seguro que desea crear el rol?\",\r\n \"areYouSureYouWantToCreateTheSection\": \"¿Está seguro que desea crear la sección?\",\r\n \"areYouSureYouWantToCreateTheSeries\": \"¿Está seguro que desea crear la serie?\",\r\n \"areYouSureYouWantToCreateTheShippingMethod\": \"¿Está seguro que desea crear el medio de envío?\",\r\n \"areYouSureYouWantToCreateTheSubseries\": \"¿Está seguro que desea crear la subserie?\",\r\n \"areYouSureYouWantToCreateTheVersion\": \"¿Está seguro que desea crear la versión?\",\r\n \"areYouSureYouWantToDeactivateTheSelectedBranch(es)\": \"¿Está seguro que desea Inactivar la(s) sucursal(es) seleccionada(s)?\",\r\n \"areYouSureYouWantToDeactivateTheSelectedProfile(s)\": \"¿Está seguro que desea Inactivar el(los) perfil(es) seleccionado(s)?\",\r\n \"areYouSureYouWantToDeleteFileReferencenumber\": \"¿Esta seguro que desea eliminar el archivo Numeroderadicado?\",\r\n \"areYouSureYouWantToDeleteTheAssociatedProperty\": \"¿Está seguro que desea eliminar la propiedad asociada?\",\r\n \"areYouSureYouWantToDeleteTheAssociation\": \"¿Está seguro que desea eliminar la asociación?\",\r\n \"areYouSureYouWantToDeleteTheCommunication?AllRelatedInformationWillBeDeleted\": \"¿Está seguro que desea eliminar el comunicado? Se eliminará toda la información relacionada.\",\r\n \"areYouSureYouWantToDeleteTheDocument\": \"¿Está seguro que desea eliminar el documento?\",\r\n \"areYouSureYouWantToDeleteTheDocumentTypeAssociation\": \"¿Está seguro que desea eliminar la asociación del tipo documental?\",\r\n \"areYouSureYouWantToDeleteTheEntityType\": \"¿Está seguro que desea eliminar el tipo de entidad?\",\r\n \"areYouSureYouWantToDeleteTheFolderAssociation\": \"¿Está seguero que desea eliminar la asociación de la carpeta?\",\r\n \"areYouSureYouWantToDeleteTheLink\": \"¿Está seguro que desea eliminar el vinculo?\",\r\n \"areYouSureYouWantToDeleteTheParameter\": \"¿Está seguro que desea eliminar el parámetro?\",\r\n \"areYouSureYouWantToDeleteThePermission\": \"¿Está seguro que desea eliminar el permiso?\",\r\n \"areYouSureYouWantToDeleteThePhysicalLocation\": \"¿Está seguro que desea eliminar la ubicación física?\",\r\n \"areYouSureYouWantToDeleteTheRecord\": \"¿Está seguro que desea eliminar el expediente?\",\r\n \"areYouSureYouWantToDeleteTheSelectedAlert\": \"¿Está seguro que desea eliminar la alerta sleccionada?\",\r\n \"areYouSureYouWantToDeleteTheSelectedFolder\": \"¿Está seguro que desea eliminar la carpeta seleccionada?\",\r\n \"areYouSureYouWantToDeleteTheSelectedItem\": \"¿Está seguro que desea eliminar el elemento seleccionado?\",\r\n \"areYouSureYouWantToDeleteTheSelectedRecord\": \"¿Está seguro que desea eliminar el registro seleccionado?\",\r\n \"areYouSureYouWantToDeleteTheUser'#login#\": \"¿Está seguro que desea eliminar el usuario '#login#?\",\r\n \"areYouSureYouWantToLinkTheRequest?OnceTheActionIsPerformed,ItCannotBeUndone\": \"¿Está seguro que desea enlazar la petición? Ya que una vez sea realizada la acción no podrá desvincularla.\",\r\n \"areYouSureYouWantToLinkTheRequestsToTheEnteredIncomingFile?PleaseNoteThatThisProcessCannotBeReversed\": \"¿Está seguro que desea enlazar las peticiones al radicado de entrada ingresado? Recuerde que una vez realizado el proceso no se puede reversar.\",\r\n \"areYouSureYouWantToMarkTheCommunicationAsRead\": \"¿Está seguro que desea marcar el comunicado como leído?\",\r\n \"areYouSureYouWantToMoveTheDocumentToRecordNo.#RecordNumber#WithThe'radicado'DocumentType\": \"¿Esta seguro que desea mover el documento al expediente No. #Numero expediente# con el tipo documental radicado?\",\r\n \"areYouSureYouWantToPackTheRecord\": \"¿Está seguro que desea empaquetar del expediente?\",\r\n \"areYouSureYouWantToPerformTheAdministrativeClosureOfTheRecord\": \"¿Está seguro que desea realizar el cierre administrativo del expediente?\",\r\n \"areYouSureYouWantToReassignTheInternalCommunicationToTheUser'Username'\": \"¿Está seguro que desea reasignar el comunicado interno al usuario 'Nombredelusuario'?\",\r\n \"areYouSureYouWantToReassignTheTasksToUser#User#\": \"¿Está seguro de reasignar las tareas al usuario #Usuario#?\",\r\n \"areYouSureYouWantToRejectTheApprovalRequest\": \"¿Está seguro que desea rechazar la solicitud de visto bueno?\",\r\n \"areYouSureYouWantToRejectTheCurrentInternalCommunication\": \"¿Está seguro que desea rechazar el comunicado interno actual?\",\r\n \"areYouSureYouWantToReopenTheRecord\": \"¿Está seguro que desea reabrir el expediente?\",\r\n \"areYouSureYouWantToRequestApproval\": \"¿Está seguro que desea solicitar aprobación?\",\r\n \"areYouSureYouWantToResetRecordPermissionsInheritance\": \"¿Está seguro que desea restablecer la herencia de permisos del expediente?\",\r\n \"areYouSureYouWantToResetThePermissionInheritanceOfTheDocument\": \"¿Está seguro que desea restablecer la herencia de permisos del documento?\",\r\n \"areYouSureYouWantToRespondToTheApprovalRequest\": \"¿Está seguro que desea responder la solicitud de visto bueno?\",\r\n \"areYouSureYouWantToSaveTheChanges\": \"¿Está seguro que desea guardar los cambios?\",\r\n \"areYouSureYouWantToSaveTheContact\": \"¿Está seguro que desea guardar el contacto?\",\r\n \"areYouSureYouWantToSaveTheDocumentType\": \"¿Está seguro que desea guardar el tipo documental?\",\r\n \"areYouSureYouWantToSaveTheMetadata\": \"¿Está seguro que desea guardar los metadatos?\",\r\n \"areYouSureYouWantToSaveThePhysicalLocation\": \"¿Está seguro que desea guardar la ubicación física?\",\r\n \"areYouSureYouWantToSaveTheProcedure\": \"¿Está seguro que desea guardar el tramite?\",\r\n \"areYouSureYouWantToSaveTheProcess\": \"¿Está seguro que desea guardar el trámite?\",\r\n \"areYouSureYouWantToSendTheRequest\": \"¿Está seguro que desea enviar la solicitud?\",\r\n \"areYouSureYouWantToSetTheVersion#VersionName#AsTheCurrentDocumentRetentionTableVersion\": \"¿Está seguro que desea establecee la versión #Nombre versión# como la versión actual de tabla de retención documental?\",\r\n \"areYouSureYouWantToUpdateSecurity\": \"¿Está seguro que desea actualizar la seguridad?\",\r\n \"areYouSureYouWantToUpdateTheContactType\": \"¿Está seguro que desea actualizar el tipo de contacto?\",\r\n \"areYouSureYouWantToUpdateTheDecisionTable\": \"¿Está seguro que desea actualizar la tabla de decisión?\",\r\n \"areYouSureYouWantToUpdateTheSecurityLevel\": \"¿Está seguro que desea actualizar el nivel de seguridad?\",\r\n \"areYouSureYouWantToUpdateTheUser'sSection\": \"¿Está seguro que desea actualizar la sección del usuario?\",\r\n \"areYouSureYouWantToUploadTheDeliveryVoucher\": \"¿Está seguro que desea cargar el comprobante de entrega?\",\r\n \"assign\": \"Asignar\",\r\n \"assignedForDispatch\": \"Asignado para envío\",\r\n \"assignment\": \"Asignación\",\r\n \"assignmentByClassification\": \"Asignación por Clasificación\",\r\n \"assignmentByProfile\": \"Asignación por perfil\",\r\n \"assignmentType\": \"Tipo de asignación\",\r\n \"assignShipment\": \"Asignar envío\",\r\n \"associateContact\": \"Asociar a contacto\",\r\n \"associatedBySection\": \"Asociados por sección\",\r\n \"associatedDocumentType\": \"Tipo documental asociado\",\r\n \"associatedKeywords\": \"Palabras claves asociadas\",\r\n \"associatedMetadata\": \"Metadatos asociados\",\r\n \"associateDocumentTypes\": \"Asociar tipos documentales\",\r\n \"associatedOutboundFiles\": \"Radicados de salida asociados\",\r\n \"associatedRecords\": \"Expedientes asociados\",\r\n \"associateRoleWithButton\": \"Asociar rol a botón\",\r\n \"associateUser\": \"Asociar usuario\",\r\n \"associationCreatedSuccessfully\": \"Asociación creada correctamente\",\r\n \"associationDeletedSuccessfully\": \"Asociación eliminada correctamente\",\r\n \"attachments\": \"Anexos\",\r\n \"attachmentType\": \"Tipo de anexo\",\r\n \"author\": \"Autor\",\r\n \"authorizedRoles\": \"Roles autorizados\",\r\n \"authorizeNotificationByEmail\": \"¿Autoriza notificación por correo electrónico?\",\r\n \"authorizeNotificationOrReceiveCallsOnTheCellPhone\": \"¿Autoriza notificación o recibir llamadas por télefono celular? \",\r\n \"authorizeToReceiveCallsOnTheLandline\": \"¿Autoriza recibir llamadas en el télefono fijo?\",\r\n \"authorizeToReceiveNotificationAtTheRegisteredAddress\": \"¿Autoriza recibir notificación en la dirección registrada?\",\r\n \"awaitingDigitalSignatureApproval\": \"Pendiente aprobación firma digital\",\r\n \"axpayerIdentificationNumber(TIN)\": \"NIT\",\r\n \"basicInformation\": \"Información básica\",\r\n \"belongs\": \"Pertenece\",\r\n \"birthCertificate\": \"Registro civil\",\r\n \"box\": \"Caja\",\r\n \"branch\": \"Sucursal\",\r\n \"branches\": \"Sucursales\",\r\n \"branchStoredSuccessfully\": \"Sucursal almacenada correctamente\",\r\n \"breakInheritance\": \"Romper herencia\",\r\n \"bulkUpload\": \"Carga masiva\",\r\n \"businessName\": \"Razón social\",\r\n \"cancel\": \"Cancelar\",\r\n \"canceled\": \"Anulado\",\r\n \"cancellationRequest\": \"Solicitud anulación\",\r\n \"cancellations\": \"Anulaciones\",\r\n \"cancelRequest\": \"Cancelar solicitud\",\r\n \"caseFileDeletedSuccessfully\": \"Expediente eliminado correctamente\",\r\n \"caseFileNumber\": \"Numero expediente\",\r\n \"caseFiles\": \"Expedientes\",\r\n \"caseFileTitle\": \"Título del expediente\",\r\n \"category\": \"Categoría\",\r\n \"cellPhone\": \"Celular\",\r\n \"center\": \"Centro\",\r\n \"centralArchive\": \"Archivo central\",\r\n \"centralArchive(Years)\": \"Archivo central (Años)\",\r\n \"certifiedMail\": \"Correo certificado\",\r\n \"changeApprover\": \"Cambiar aprobador\",\r\n \"changeApproverUser\": \"Cambiar usuario aprobador\",\r\n \"changeHistory\": \"Historial de cambios\",\r\n \"changeName\": \"Cambiar nombre\",\r\n \"changeResponsible\": \"Cambiar responsable\",\r\n \"changeSection\": \"Cambiar sección\",\r\n \"changesSavedSuccessfully\": \"Cambios almacenados correctamente\",\r\n \"checkSheets\": \"Consultar planillas\",\r\n \"chooseAnOption\": \"Elija una opción\",\r\n \"chronologicalOrder\": \"Orden cronológico\",\r\n \"cities\": \"Ciudades\",\r\n \"citizen\": \"Ciudadano\",\r\n \"citizenshipID\": \"Cédula de ciudadanía\",\r\n \"city\": \"Ciudad\",\r\n \"cityRequired\": \"Ciudad requerida\",\r\n \"clarificationContribution\": \"Aporte de aclaración\",\r\n \"classification\": \"Clasificación\",\r\n \"classificationAndCodingPlan(CCD)\": \"Cuadro de clasificación documental (CCD)\",\r\n \"classificationSavedSuccessfully\": \"Clasificación almacenada correctamente\",\r\n \"classified\": \"Clasificado\",\r\n \"classifiedInformation\": \"Información clasificada\",\r\n \"clear\": \"Limpiar\",\r\n \"clearFilters\": \"Limpiar filtros\",\r\n \"clickHereToDownloadSignaX\": \"Haga clic aquí para descargar SignaX\",\r\n \"clickHereToSeeTheDetailsOfSection#Section#\": \"Haga clic aqui para ver los detalles de la sección # sección #\",\r\n \"clickOnceResources\": \"Recursos de ClickOnce\",\r\n \"close\": \"Cerrar\",\r\n \"closedUserSelection\": \"Selección cerrada de usuarios\",\r\n \"closeMulti-assignment\": \"Cerrar multiasignación\",\r\n \"closure\": \"Cierre\",\r\n \"code\": \"Código\",\r\n \"collected\": \"Recolectado\",\r\n \"completeAssignment\": \"Completar asignación\",\r\n \"completed\": \"Completas\",\r\n \"componentToRender\": \"Componente a renderizar\",\r\n \"configuration\": \"Configuración\",\r\n \"configureSignature\": \"Configurar firma\",\r\n \"congratulations\": \"Felicitación\",\r\n \"consecutive\": \"Consecutivo\",\r\n \"consecutives\": \"Consecutivos\",\r\n \"consecutiveSuccessfullyStored\": \"Consecutivo almacenado correctamente\",\r\n \"conservation\": \"Conservación\",\r\n \"consultMinutes\": \"Consultar acta\",\r\n \"contact\": \"Contacto\",\r\n \"contactIdentificationNumber\": \"Número de identificación contacto\",\r\n \"contactInformation\": \"Datos del contacto\",\r\n \"contacts\": \"Contactos\",\r\n \"contactsCharacterization\": \"Caracterización contactos\",\r\n \"contactStoredCorrectly\": \"Contacto almacenado correctamente\",\r\n \"contactType\": \"Tipo contacto\",\r\n \"contactTypes\": \"Tipos de contacto\",\r\n \"contactTypeUpdatedSuccessfully\": \"Tipo de contacto actualizado correctamente\",\r\n \"copies\": \"Copias\",\r\n \"copy-IncomingMail\": \"Copia - Radicado de entrada\",\r\n \"copy\": \"Copia\",\r\n \"copyActiveDocumentaryTypes\": \"Copiar tipos documentales activos\",\r\n \"copyActiveFolders\": \"Copiar carpetas activas\",\r\n \"copyOfIncomingFile\": \"Copia radicado de entrada\",\r\n \"correspondence\": \"Correspondencia\",\r\n \"counterRegistration\": \"Registro ventanilla\",\r\n \"counterRegistration(PhysicalIncomingMail)\": \"Registro ventanilla (Radicado de entrada fisico)\",\r\n \"countries\": \"Paises\",\r\n \"country\": \"País\",\r\n \"create\": \"Crear\",\r\n \"createAssociation\": \"Crear asociación\",\r\n \"createCity\": \"Crear ciudad\",\r\n \"createColumn\": \"Crear columna\",\r\n \"createCountry\": \"Crear país\",\r\n \"createdBy\": \"Creado por\",\r\n \"createDecision\": \"Crear decisión\",\r\n \"createDepartment\": \"Crear departamento\",\r\n \"createDigitalIncomingFile\": \"Crear radicado de entrada digital\",\r\n \"createFile\": \"Crear expediente\",\r\n \"createFolder\": \"Crear carpeta\",\r\n \"createFund\": \"Crear fondo\",\r\n \"createHoliday\": \"Crear día festivo\",\r\n \"createMetadata\": \"Crear metadato\",\r\n \"createNewItem\": \"Crear nuevo elemento\",\r\n \"createOrientation\": \"Crear orientación\",\r\n \"createPermission\": \"Crear permiso\",\r\n \"createPhysicalIncomingFile\": \"Crear radicado de entrada fisico\",\r\n \"createProcess\": \"Crear trámite\",\r\n \"createProfile\": \"Crear perfil\",\r\n \"createResponseProject\": \"Crear proyecto de respuesta\",\r\n \"createRole\": \"Crear rol\",\r\n \"createSection\": \"Crear sección\",\r\n \"createSeries\": \"Crear serie\",\r\n \"createShippingMethod\": \"Crear medio de envío\",\r\n \"createSubseries\": \"Crear subserie\",\r\n \"createTerminologyBank\": \"Crear Banco Terminológico\",\r\n \"createTransferSchedule\": \"Crear Cronograma de Transferencia\",\r\n \"createVersion\": \"Crear versión\",\r\n \"createVersionNumber\": \"Crear número de versión\",\r\n \"creatingDecision\": \"Creando decisión\",\r\n \"creation\": \"Creación\",\r\n \"creationDate\": \"Fecha de creación\",\r\n \"creationOfPhysicalIncomingRecord\": \"Creación radicado de entrada físico\",\r\n \"custodyCompany\": \"Empresa custodia\",\r\n \"custom\": \"Personalizado\",\r\n \"customField#No.#\": \"Campo personalizado #No.#\",\r\n \"dataTypes\": \"Tipos de dato\",\r\n \"date\": \"Fecha\",\r\n \"dateOfBirth\": \"Fecha de nacimiento\",\r\n \"day\": \"Día\",\r\n \"deactivate\": \"Inactivar\",\r\n \"deactivateBranch(es)\": \"Inactivar sucursal(es)\",\r\n \"deactivateProfile(s)\": \"Inactivar perfil(es)\",\r\n \"decisionName\": \"Nombre decisión\",\r\n \"decisions\": \"Decisiones\",\r\n \"decisionStoredSuccessfully\": \"Decisión almacenada correctamente\",\r\n \"decisionTable\": \"Tabla de decisión\",\r\n \"decisionTableDeletedSuccessfully\": \"Tabla de decisión eliminada correctamente\",\r\n \"decisionTables\": \"Tablas de decisión\",\r\n \"default\": \"Predeterminado\",\r\n \"defaultUser\": \"Usuario predeterminado\",\r\n \"definitiveAnswer\": \"Respuesta definitiva\",\r\n \"delete\": \"Eliminar\",\r\n \"deleteAlert\": \"Eliminar alerta\",\r\n \"deleteAssociation\": \"Eliminar asociación\",\r\n \"deleteCurrentAlert\": \"Elimina la alerta actual\",\r\n \"deleteDecisionTable\": \"Eliminar tabla de decisión\",\r\n \"deleteDocument\": \"Eliminar Documento\",\r\n \"deleteDocumentRetentionTable\": \"Eliminar TRD\",\r\n \"deleteDocumentType\": \"Eliminar tipo documental\",\r\n \"deleteEntityType\": \"Eliminar tipo de entidad\",\r\n \"deleteFile\": \"Eliminar archivo\",\r\n \"deleteFolder\": \"Eliminar carpeta\",\r\n \"deleteIncomingFile\": \"Eliminar radicado\",\r\n \"deleteInternalCommunication\": \"Eliminar comunicado interno\",\r\n \"deleteItem\": \"Eliminar elemento\",\r\n \"deleteLink\": \"Eliminar vinculo\",\r\n \"deletePermission\": \"Eliminar permiso\",\r\n \"deleteRecord\": \"Eliminar expediente\",\r\n \"deletionReason\": \"Motivo de eliminación\",\r\n \"delivered_Plural\": \"Entregados\",\r\n \"delivered_Singular\": \"Entregado\",\r\n \"deliveryVoucher\": \"Comprobante de entrega\",\r\n \"deliveryVouchers\": \"Comprobantes entrega\",\r\n \"department\": \"Departamento\",\r\n \"departments\": \"Departamentos\",\r\n \"description\": \"Descripción\",\r\n \"descriptionOfTheOrientation\": \"Descripción de la orientación\",\r\n \"desktopRuntimeEnvironment\": \"Entorno de ejecución de escritorio\",\r\n \"details\": \"Detalles\",\r\n \"didTheOrientationGeneratePQR\": \"¿Orientación generó PQR?\",\r\n \"didTheReceivedServiceMeetYourExpectations\": \"¿El servicio recibido cumplió con sus expectativas?\",\r\n \"digitalIncomingFile\": \"Radicado de entrada digital\",\r\n \"digitalIncomingFileSignature\": \"Firma Radicados Digitales\",\r\n \"digitalOutgoingFile\": \"Radicado de salida digital\",\r\n \"digitalPQRNo\": \"PQR digital No. \",\r\n \"digitalRecordCreatedAndAssignedTo#User#\": \"Radicado digital creado y asignado a # usuario #\",\r\n \"digitalRecordDraftCreatedByTheUser\": \"Radicado digital creado en borrador por el usuario\",\r\n \"digitalSignature\": \"Firma digital\",\r\n \"digitizationOfIncomingRecords\": \"Digitalización de Radicados de Entrada\",\r\n \"digitizationOfOutgoingRecords\": \"Digitalización de Radicados de salida\",\r\n \"digitized_Plural\": \"Digitalizados\",\r\n \"digitized_Singular\": \"Digitalizado\",\r\n \"digitizedByMe\": \"Digitalizados por mi\",\r\n \"disabilities\": \"Discapacidades\",\r\n \"discard\": \"Descartar\",\r\n \"displaysAllPendingOutgoingMailsForCancellation\": \"Muestra todos los radicados de salida pendientes por anular\",\r\n \"distribution\": \"Distribución\",\r\n \"distributions\": \"Distribuciones\",\r\n \"documentalType\": \"Tipo documental\",\r\n \"documentaryInventory\": \"Inventario documental\",\r\n \"documentaryInventoryReport\": \"Reporte Inventario Documental\",\r\n \"documentaryType\": \"Tipo documental\",\r\n \"documentAuthor\": \"Autor del documento\",\r\n \"documentCreatedWithNumber#number#\": \"Documento creado con número #numero#\",\r\n \"documentDate\": \"Fecha de documento\",\r\n \"documentDeliveries\": \"Entregas documentales\",\r\n \"documentDescription\": \"Descripción documental\",\r\n \"documentFlowExecution\": \"Ejecución flujo documental\",\r\n \"documentInventoryTemplates\": \"Plantillas inventario documental\",\r\n \"documentManager\": \"Gestor documental\",\r\n \"documentName\": \"Nombre documento\",\r\n \"documentNumber\": \"Número de documento\",\r\n \"documento\": \"Documento\",\r\n \"documentRetentionTableCreatedSuccessfully\": \"Tabla de retención documental creada correctamente\",\r\n \"documentRetentionTableImportedFromExcel\": \"Tabla de retención documental importada desde Excel\",\r\n \"documentRetentionTables\": \"Tablas de retención documental\",\r\n \"documentRetentionTableVersions\": \"Versiones de tablas de retención documental\",\r\n \"documents\": \"Documentos\",\r\n \"documentSource\": \"Origen documento\",\r\n \"documentsPendingReceipt\": \"Documentos pendientes por recibir\",\r\n \"documentsReceivedSuccessfully\": \"Documentos recibidos correctamente\",\r\n \"documentTitle\": \"Título del documento\",\r\n \"documentType\": \"Tipo Documento\",\r\n \"documentType#FolderName#Added\": \"Se agrego tipo documental #Nombre de la carpeta#\",\r\n \"documentTypeDeleted\": \"Tipo documental eliminado\",\r\n \"documentTypeOrigin\": \"Origen tipo documental\",\r\n \"documentTypeStoredSuccessfully\": \"Tipo documental almacenado correctamente\",\r\n \"documentUpdatedSuccessfully\": \"Documento actualizado correctamente\",\r\n \"documentValuationTableVersions\": \"Versiones de tablas de valoración documental\",\r\n \"documentVersions\": \"Versiones del documento\",\r\n \"documentViewer\": \"Visor de documentos\",\r\n \"download\": \"Descargar\",\r\n \"downloadAll\": \"Descargar todos\",\r\n \"downloadFiltered.\": \"Descargar filtrados\",\r\n \"downloadMetadata\": \"Descargar metadatos\",\r\n \"downloadTemplate\": \"Descargar plantilla\",\r\n \"downloadTheBulkUploadTemplate\": \"Descarga la plantilla de carga masiva \",\r\n \"doYouConsiderTheReceivedInformationUseful\": \"¿Considera útil la información recibida?\",\r\n \"doYouWantToCompleteTheSurvey\": \"Desea diligenciar encuesta\",\r\n \"draft\": \"Borrador\",\r\n \"draftIncomingFileDeletedSuccessfully\": \"Radicado de entrada en borrador eliminado correctamente\",\r\n \"draftingResponseToInternalCommunication\": \"Elaboración respuesta comunicado interno\",\r\n \"dragAFileOrClickToSelect\": \"Suelte un archivo o haga click para seleccionar.\",\r\n \"dragFilesOrClickBelowThisTitleToSelect\": \"Arrastre archivos o haga clic abajo de este título para selleccionar\",\r\n \"dropAFileOrClickToSelect\": \"Suelte un archivo o haga clic para seleccionar\",\r\n \"dVD\": \"DVD\",\r\n \"east\": \"Oriente\",\r\n \"edit\": \"Editar\",\r\n \"editAlert\": \"Editar alerta\",\r\n \"editConsecutive\": \"Editar consecutivo\",\r\n \"editContact\": \"Editar contacto\",\r\n \"editContactType\": \"Editar tipo de contacto\",\r\n \"editDocumentType-TRD\": \"Editar tipo documental - TRD\",\r\n \"editFund\": \"Editar fondo\",\r\n \"editHoliday\": \"Editar día festivo\",\r\n \"editing\": \"Edición\",\r\n \"editor\": \"Editor\",\r\n \"editPQRSClassification\": \"Editar clasificación PQRS\",\r\n \"editProcedure\": \"Editar trámite\",\r\n \"editRules\": \"Editar reglas\",\r\n \"editSectionTRD\": \"Editar sección - TRD\",\r\n \"editSeriesTRD\": \"Editar serie - TRD\",\r\n \"editShippingMethod\": \"Editar medio de envío\",\r\n \"editTemplate\": \"Editar plantilla\",\r\n \"editTRDSubseries\": \"Editar subserie TRD\",\r\n \"editVersion\": \"Editar versión\",\r\n \"educationalLevel\": \"Nivel de escolaridad\",\r\n \"educationalLevels\": \"Niveles educativos\",\r\n \"electronic\": \"Electrónico\",\r\n \"electronicIndex\": \"Índice electrónico\",\r\n \"electronicIndexExportedAsXML\": \"Indice electrónico exportado como XML\",\r\n \"electronicResponse\": \"Respuesta electrónica\",\r\n \"electronicSignature\": \"Firma Eléctronica\",\r\n \"elementsByPage\": \"Elementos por pagina\",\r\n \"emailAddress\": \"Correo electrónico\",\r\n \"emailNotifications\": \"Notificaciones de correo\",\r\n \"enableAnotherPQRSClassification\": \"Habilitar otra clasificación PQRS\",\r\n \"enableBetaFeatures\": \"Habilitar características beta\",\r\n \"encryptOnSave\": \"Cifrar al guardar\",\r\n \"end\": \"Fin\",\r\n \"endDate\": \"Fecha de fin\",\r\n \"enddate\": \"Fecha final\",\r\n \"endDateOfRecordCreation\": \"Fecha fin creación expediente\",\r\n \"entity\": \"Entidad\",\r\n \"entityType\": \"Tipo de entidad\",\r\n \"entityTypeDeletedSuccessfully\": \"Tipo de entidad eliminado correctamente\",\r\n \"entityTypes\": \"Tipos de entidad\",\r\n \"entityTypeSavedSuccessfully\": \"Tipo de entidad guardado correctamente\",\r\n \"error\": \"Error\",\r\n \"ethnicGroups\": \"Grupos étnicos\",\r\n \"excel\": \"Excel\",\r\n \"executionType\": \"Tipo ejecución\",\r\n \"exitFullScreen\": \"Salir de pantalla completa\",\r\n \"expiry\": \"Vencimiento\",\r\n \"export\": \"Exportar\",\r\n \"exportAll\": \"Exportar todos\",\r\n \"exportAllPages\": \"Exportar todas las páginas\",\r\n \"exportAllPagesAsTemplates\": \"Exportar todas las páginas como plantilla\",\r\n \"exportAsTXT\": \"Exportar TXT\",\r\n \"exportAsXML\": \"Exportar como XML\",\r\n \"exportCurrentPage\": \"Exportar página actual\",\r\n \"exportCurrentPageAsATemplate\": \"Exportar página actual como plantilla\",\r\n \"exportCurrentResults\": \"Exportar los resultados actuales\",\r\n \"exportDirectory\": \"Exportar directorio\",\r\n \"exportFiltered\": \"Exportar filtrados\",\r\n \"exportMetadata\": \"Exportar metadatos\",\r\n \"exportToPDF\": \"Exportar a PDF\",\r\n \"extension\": \"Extension\",\r\n \"extensionOfIncomingMail\": \"Prorroga Radicado entrada\",\r\n \"extensions\": \"Extensiones\",\r\n \"extensionsDeletedSuccessfully\": \"Extensiones eliminadas correctamente\",\r\n \"external\": \"Externo\",\r\n \"externalCopies\": \"Copias externas\",\r\n \"externalDocument\": \"Documento externo\",\r\n \"externalField\": \"Campo externo\",\r\n \"favorites\": \"Favoritos\",\r\n \"fAX\": \"FAX\",\r\n \"fieldType\": \"Tipo de campo\",\r\n \"file\": \"Expediente\",\r\n \"fileDeleted\": \"Archivo eliminado\",\r\n \"fileName\": \"Nombre archivo\",\r\n \"fileNotFound\": \"No se encontro el archivo\",\r\n \"fileStatuses\": \"Estados de expedientes\",\r\n \"fileStorage\": \"Almacenamiento de archivos\",\r\n \"fileTransfer\": \"Transferencia de expedientes\",\r\n \"filter\": \"Filtrar\",\r\n \"filters\": \"Filtros\",\r\n \"finalApproval\": \"Aprobación final\",\r\n \"finalDisposition\": \"Disposición final\",\r\n \"fingerprintValue\": \"Valor huella\",\r\n \"finish\": \"Finalizar\",\r\n \"finishTurno\": \"Finalizar turno\",\r\n \"firstCall\": \"Primer llamado\",\r\n \"firstName\": \"Nombres\",\r\n \"folder\": \"Carpeta\",\r\n \"folder#FolderName#WasAdded\": \"Se agrego carpeta #Nombre de la carpeta#\",\r\n \"folder#FolderName#WasDeleted\": \"Se eliminó carpeta #Nombre de la carpeta#\",\r\n \"folderDeleted\": \"Carpeta eliminada\",\r\n \"folders\": \"Carpetas\",\r\n \"folderSavedSuccessfully\": \"Carpeta guardada correctamente\",\r\n \"foreigner'sID\": \"Cédula de extranjería\",\r\n \"format\": \"Formato\",\r\n \"from\": \"Desde\",\r\n \"fullScreen\": \"Pantalla completa\",\r\n \"fullView\": \"Vista completa\",\r\n \"function\": \"Función\",\r\n \"functionToExecuteInTheAPI\": \"Función a ejecutar en el API\",\r\n \"fund\": \"Fondo\",\r\n \"fundItBelongsTo\": \"Fondo al que pertenece\",\r\n \"funds\": \"Fondos\",\r\n \"fundStoredSuccessfully\": \"Fondo almacenado correctamente\",\r\n \"gender\": \"Genero\",\r\n \"genders\": \"Géneros\",\r\n \"general\": \"General\",\r\n \"generalSearch\": \"Búsqueda general\",\r\n \"generateSheet\": \"Generar planilla\",\r\n \"geography\": \"geografía\",\r\n \"goToInbox\": \"Ir a bandeja de entrada\",\r\n \"goToRecord\": \"Ir al expediente\",\r\n \"goToSection\": \"Ir a sección\",\r\n \"group\": \"Grupo\",\r\n \"grupoEtnido\": \"Grupo étnico\",\r\n \"guideNumber\": \"Número de Guía\",\r\n \"handwrittenSignature\": \"Firma manuscrita\",\r\n \"headquarters\": \"Sede\",\r\n \"helpdeskRegistration\": \"Registro mesa de ayuda\",\r\n \"helpdeskRegistration(DigitalIncomingMail)\": \"Registro mesa de ayuda (Radicado de entrada digital)\",\r\n \"high_Female\": \"Alta\",\r\n \"high_Male\": \"Alto\",\r\n \"historical\": \"Histórico\",\r\n \"historicalArchive\": \"Archivo histórico\",\r\n \"history\": \"Histórico\",\r\n \"holidays\": \"Festivos\",\r\n \"iD\": \"ID\",\r\n \"identification\": \"Identificación\",\r\n \"identificationnumber\": \"Numero de identificacion\",\r\n \"identificationNumber\": \"Número de identificación\",\r\n \"identificationType\": \"Tipo de identificacion\",\r\n \"identityCard\": \"Tarjeta de identidad\",\r\n \"ifYouChangeTheResponsibleForTheInternalCommunication,UnsavedChangesInTheFormWillBeDeleted.AreYouSureYouWantToUpdateTheApprover\": \"Si cambia el responsable del comunicado interno, los cambios no guardados en el formulario se borrarán. ¿Está seguro que desea actualizar el aprobador?\",\r\n \"ifYouDeleteTheDecisionTable,ItCannotBeRecovered.AreYouSureYouWantToDeleteTheSelectedDecisionTable\": \"Si elimina la tabla de decisión no se podrá recuperar. ¿Está seguro que desea eliminar la tabla de decisión seleccionada?\",\r\n \"ifYouDeleteTheDocumentRetentionTable,TheFolder,DocumentType,AndPermissionSettingsCannotBeRestored.AreYouSureYouWantToContinue\": \"Si elimina la tabla de retención documental, no se podra restaurar la configuración de carpetas, tipos documentales y permisos. ¿Está seguro que continuar?\",\r\n \"ifYouHaveTheseComponentsInstalled,YouCanLaunchTheApplicationNow.Otherwise,ClickTheButtonBelowToInstallThePrerequisitesAndRunTheApplication.\": \"Si ya tiene instalados estos componentes, puede iniciar ahora la aplicación. De lo contrario, haga clic en el botón de abajo para instalar los requisitos previos y ejecutar la aplicación.\",\r\n \"ifYouLockTheRecord,UsersWillNoLongerBeAbleToCreate,Edit,OrDeleteDocuments\": \"Si bloquea el expediente, los usuarios ya no podran crear, editar o eliminar documentos.\",\r\n \"ifYouUnlockTheRecord,UsersWillBeAbleToCreate,Edit,OrDeleteDocuments\": \"Si desbloquea el expediente, los usuarios podran crear, editar o eliminar documentos\",\r\n \"import\": \"Importar\",\r\n \"important\": \"La asignación de permisos para la visualización de documentos puede tomar varios minutos en completarse.\",\r\n \"importProject\": \"Importar proyecto\",\r\n \"inApproval\": \"En aprobación\",\r\n \"inbox\": \"Bandeja de entrada\",\r\n \"inbox#tasksOf#tasks\": \"Bandeja de entrada #detareas de #detareas\",\r\n \"inboxColumns\": \"Columnas bandeja de entrada\",\r\n \"includeInFile\": \"Incluir en expediente\",\r\n \"includeMailInRecord-DocumentFlow\": \"Incluir radicado en expediente - Flujo documental\",\r\n \"inclusion\": \"Inclusión\",\r\n \"incomingFile\": \"Radicado de entrada\",\r\n \"incomingFileArchivedSuccessfully\": \"Radicado de entrada archivado correctamente\",\r\n \"incomingFiledIncoming\": \"Radicado de entrada radicado\",\r\n \"incomingFileInDraft\": \"Radicado de entrada en borrador\",\r\n \"incomingFileInMulti-assignedProgress\": \"Radicado de entrada en tramite multiasignada\",\r\n \"incomingFileNo.#IncomingnumberInProgress#\": \"Radicado de entrada No. # deradicado en tramite #\",\r\n \"incomingFileNo\": \"Radicado de entrada No.\",\r\n \"incomingFileNumber\": \"Número radicado de entrada\",\r\n \"incomingFileService\": \"Error al eliminar el borrador de radicado de entrada Solicitud inválida, el radicado de entrada a eliminar no se encuentra en estado borrador\",\r\n \"incomingMailInProgress\": \"Radicado de entrada en tramite\",\r\n \"incomingMailReport\": \"Reporte radicados de entrada\",\r\n \"incomingRecordNo.#Number#CreatedSuccessfully\": \"Radicado de entrada No. # numero # creado correctamente\",\r\n \"incomingRecordNumber\": \"Número de radicado de entrada\",\r\n \"incomingRecordSuccessfullyDelegated\": \"Radicado de entrada delegado exitosamente\",\r\n \"incompleteIncomingRecords\": \"Radicado de entrada incompletos\",\r\n \"incorporationDate\": \"Fecha incorporación\",\r\n \"informationRequest\": \"Solicitud de información\",\r\n \"informationRequestHistory\": \"Solicitudes de información\",\r\n \"informationRequestResponse\": \"Respuesta solicitud de información\",\r\n \"initials\": \"Iniciales\",\r\n \"inProcess\": \"En tramite\",\r\n \"inputFileNumber\": \"Número de radicado\",\r\n \"inputs\": \"Entradas\",\r\n \"install\": \"Instalar\",\r\n \"internal\": \"Interno\",\r\n \"internalCommunication-ApprovalRequest\": \"Comunicado interno - Solicitud de aprobación\",\r\n \"internalCommunication-Rejected\": \"Comunicado interno - Rechazado\",\r\n \"internalCommunication\": \"Comunicado interno\",\r\n \"internalCommunicationApprovedSuccessfully\": \"Comunicado interno aprobado con éxito.\",\r\n \"internalCommunicationCreatedSuccessfully\": \"Comunicado interno creado con éxito.\",\r\n \"internalCommunicationDelegatedSuccessfully\": \"Comunicado interno delegado exitosamente\",\r\n \"internalCommunicationDeletedSuccessfully\": \"Comunicado interno eliminado con éxito.\",\r\n \"internalCommunicationInProgress\": \"Comunicado interno en trámite\",\r\n \"internalCommunicationMarkedAsReadSuccessfully\": \"Comunicado interno marcado como leído con éxito\",\r\n \"internalCommunicationProject\": \"Proyecto de comunicado interno\",\r\n \"internalCommunicationRejectedSuccessfully\": \"Comunicado interno rechazado con éxito.\",\r\n \"internalCommunicationResponseDrafting#internalcommunication\": \"Elaboración respuesta a comunicado interno #comunicadointerno\",\r\n \"internalCommunicationsReport\": \"Reporte comunicados internos\",\r\n \"internalNotifications\": \"Notificaciones internas\",\r\n \"internalProcedure\": \"Tramite interno\",\r\n \"international\": \"Internacional\",\r\n \"inThisSection,YouWillFindTheUsersResponsibleForProjectingAndApprovingInternalCommunication\": \"En este apartado se encuentran los usuarios encargados de proyectar y aprobar la comunicacion interna\",\r\n \"invalidRequest,TheIncomingFileCannotHaveAPreviouslyAssignedNumber\": \"Solicitud inválida, el radicado de entrada no puede tener un número previamente asignado.\",\r\n \"invoice\": \"Factura\",\r\n \"itemDeleted\": \"Elemento eliminado\",\r\n \"itemDeletedSuccessfully\": \"Elemento eliminado correctamente\",\r\n \"itemType\": \"Tipo de elemento\",\r\n \"itIsAllInformationThatASubjectObligatedGenerates,Obtains,Acquires,OrControlsInTheirCapacityAsSuch.Law1712/2014ThatHasBeenLegallyDeclaredOrByItsOwner,PubliclyKnownAndAccessibleToAnyone.E.g.,AccountabilityPresentedByTheEntity,ActionPlanOfTheEntity,OpenData,AmongOthers\": \"Es toda información que un sujeto obligado genere, obtenga, adquiera, o controle en su calidad de tal. Ley 1712/2014 que ha sido declarada legalmente o por su propietario, de conocimiento público y accesible a cualquier persona. Ej. Rendición de cuentas presentada por la entidad, Plan de acción de la Entidad, datos abiertos, entre otros\",\r\n \"itIsThatInformationThat,BeingInThePossessionOrCustodyOfASubjectObligatedInTheirCapacityAsSuch,BelongsToTheOwn,Private,OrSemi-privateSphereOfANaturalOrLegalPerson,SoItsAccessMayBeDeniedOrExcepted,ProvidedThatItInvolvesLegitimateAndNecessaryCircumstancesAndTheParticularOrPrivateRightsEnshrinedInArticle18OfThisLaw;Law1712/2014\": \"Es aquella información que estando en poder o custodia de un sujeto obligado en su calidad de tal, pertenece al ámbito propio, particular y privado o semiprivado de una persona natural o jurídica por lo que su acceso podrá ser negado o exceptuado, siempre que se trate de las circunstancias legítimas y necesarias y los derechos particulares o privados consagrados en el artículo 18 de esta ley; Ley 1712/2014\",\r\n \"itIsThatInformationWhich,BeingInThePossessionOrCustodyOfASubjectObligatedInTheirCapacityAsSuch,IsExemptFromAccessByTheCitizenryDueToHarmToPublicInterestsAndInComplianceWithAllTheRequirementsEstablishedInArticle19OfThisLaw;Law1712/2014\": \"Es aquella información que estando en poder o custodia de un sujeto obligado en su calidad de tal, es exceptuada de acceso a la ciudadanía por daño a intereses públicos y bajo cumplimiento de la totalidad de los requisitos consagrados en el artículo 19 de esta ley; Ley 1712/2014\",\r\n \"itWasNotPossibleToConnectToTheSignaXApplication.PleaseMakeSureTheApplicationIsInstalledAndRunningCorrectly\": \"No fue posible conectarse a la aplicación SignaX. Por favor asegurese que la aplicación esta instalada y se ejecuta correctamente\",\r\n \"jobTitle\": \"Cargo\",\r\n \"keyword\": \"Palabra clave\",\r\n \"keywords\": \"Palabras clave\",\r\n \"landlinePhoneExtensionNumberRequired\": \"Número de extensión teléfono fijo requerido\",\r\n \"landlinePhoneRequired\": \"Teléfono fijo requerido\",\r\n \"lastName\": \"Apellidos\",\r\n \"libraries\": \"Librerias\",\r\n \"link\": \"Enlazar\",\r\n \"linkDeletedSuccessfully\": \"Enlace eliminado correctamente\",\r\n \"linkedDocument\": \"Documento enlazado\",\r\n \"linkedFiles\": \"Radicados vinculados\",\r\n \"linkRequests\": \"Enlazar Peticiones\",\r\n \"loadExtension\": \"Cargar extensión\",\r\n \"loading\": \"Cargando\",\r\n loadingDevelpmentPage: \"Cargando página de desarrollo\",\r\n \"loadingDocuments\": \"Cargando documentos\",\r\n \"loadingForm\": \"Cargando formulario\",\r\n \"loadingImportantFileInformation\": \"Cargando información importante del expediente\",\r\n \"loadMoreItems\": \"Cargar más elementos\",\r\n \"loadMoreTasks\": \"Cargar más tareas\",\r\n \"loadServerExtension\": \"Cargar extensión de servidor\",\r\n \"loadUI\": \"Cargar UI\",\r\n \"loadUIExtension\": \"Cargar extensión UI\",\r\n \"local\": \"Local\",\r\n \"location\": \"Ubicación\",\r\n \"locationDeletedSuccessfully\": \"Ubicación eliminada correctamente\",\r\n \"locationSavedSuccessfully\": \"Ubicación almacenada correctamente\",\r\n \"lock\": \"Bloqueo\",\r\n \"lockRecord\": \"Bloquear expediente\",\r\n \"loginName\": \"Login name\",\r\n \"low\": \"Bajo\",\r\n \"magazine\": \"Revista\",\r\n \"mainFile\": \"Archivo principal\",\r\n \"mainRecipients\": \"Destinatarios principales\",\r\n \"managementArchive(Years)\": \"Archivo de gestión (Años)\",\r\n \"managementFileReport\": \"Reporte archivo gestión\",\r\n \"manageTrays\": \"Gestionar bandejas\",\r\n \"markAsRead.\": \"Marcar como leído\",\r\n \"mAS\": \"Módulo de atención y servicio\",\r\n \"massDocumentSigning\": \"Firma masiva de documentos\",\r\n \"maximumLength\": \"Longitud máxima\",\r\n \"maximumResponseDate\": \"Fecha maxima de respuesta\",\r\n \"maximumResponseTime\": \"Tiempo máximo de respuesta\",\r\n \"meansOfOrientation\": \"Medio de la orientación\",\r\n \"meansOfReception\": \"Medio de recepción\",\r\n \"mediaType\": \"Tipo soporte\",\r\n \"medium_Female\": \"Media\",\r\n \"medium_Male\": \"Medio\",\r\n \"metadata_Plural\": \"Metadatos\",\r\n \"metadata_Singular\": \"Metadato\",\r\n \"metadataCategories\": \"Categorías de metadatos\",\r\n \"metadataForIncomingMail\": \"Metadatos radicado entrada\",\r\n \"metadataForOutgoingMail\": \"Metadatos radicado salida\",\r\n \"metadataSuccessfullyStored\": \"Metadatos almacenados correctamente\",\r\n \"minimumLength\": \"Longitud minima\",\r\n \"mobilePhoneRequired\": \"Teléfono celular requerido\",\r\n \"modificationDate\": \"Fecha modificación\",\r\n \"modifiedBy\": \"Modificado por\",\r\n \"moduleName\": \"Nombre del módulo\",\r\n \"modules\": \"Módulos\",\r\n \"month\": \"Mes\",\r\n \"moveDocument\": \"Mover documento\",\r\n \"moveToFolder\": \"Mover a carpeta\",\r\n \"multi-assigned\": \"Multiasignados\",\r\n \"multi-assignment\": \"Multiasignación\",\r\n \"myApprovals\": \"Mis aprobaciones\",\r\n \"myFUID\": \"Mis FUID\",\r\n \"myRequests\": \"Mis solicitudes\",\r\n \"name\": \"Nombre\",\r\n \"nameOrLegalEntity\": \"Nombre o razón social\",\r\n \"namesOrBusinessName\": \"Nombres o razón social\",\r\n \"national\": \"Nacional\",\r\n \"neighborhood\": \"Barrio\",\r\n \"neighborhoodRequired\": \"Barrio requerido\",\r\n \"new\": \"Nuevo\",\r\n \"newAlert\": \"Nueva alerta\",\r\n \"newBusinessUser\": \"Nuevo usuario empresarial\",\r\n \"newContact\": \"Nuevo contacto\",\r\n \"newDecision\": \"Nueva decisión\",\r\n \"newDocumentRetentionTable\": \"Nueva tabla de retención documental\",\r\n \"newDocumentType-TRD\": \"Nuevo tipo documental - TRD\",\r\n \"newFolder\": \"Nuevo carpeta\",\r\n \"newFund\": \"Nuevo fondo\",\r\n \"newPQRSClassification\": \"Nueva clasificación PQRS\",\r\n \"newProcedure\": \"Nuevo trámite\",\r\n \"newRule\": \"Nueva regla\",\r\n \"newSeries-TRD\": \"Nueva serie - TRD\",\r\n \"newShippingMethod\": \"Nuevo medio de envío\",\r\n \"newUser\": \"Nuevo usuario\",\r\n \"newZone\": \"Nueva zona\",\r\n \"next\": \"Siguiente\",\r\n \"nextTurno\": \"Siguiente turno\",\r\n \"no\": \"No\",\r\n \"noDataToDisplayAtThisTime\": \"No hay datos para mostrar en este momento\",\r\n \"noDocumentsWereAttached\": \"No se adjuntaron documentos\",\r\n \"noInformationToDisplay\": \"No hay información para mostrar\",\r\n \"noInformationToDisplayAtThisTime\": \"No hay información para mostrar en este momento\",\r\n \"noMatchingDataFoundForTheSearchFilters\": \"No se encontraron datos que coincidan con los filtros de búsqueda\",\r\n \"none\": \"Ninguno\",\r\n \"noRecordsToDisplay\": \"No hay registros para mostrar\",\r\n \"noResultsWereFoundForTheEnteredSearchCriteria\": \"No se encontraron resultados para los criterios de búsqueda ingresados.\",\r\n \"north\": \"Norte\",\r\n \"note\": \"Nota\",\r\n \"notifications\": \"Notificaciones\",\r\n \"notificationsToBeSent\": \"Notificaciones por enviar\",\r\n \"number\": \"Número\",\r\n \"numberOfPages\": \"Cantidad de folios\",\r\n \"numeroReferencia\": \"Número de referencia\",\r\n \"observations\": \"Observaciones\",\r\n \"occupationOrProfession\": \"Ocupación u oficio\",\r\n \"onlyUsersOfSection#sectionName#CanBeSetAsRecordResponsibles\": \"Solo los usuarios de la sección #nombre de la sección# puedes establecerse como responsables del expediente.\",\r\n \"openUserSelection\": \"Selección abierta de usuarios\",\r\n \"operation\": \"operación\",\r\n \"operationPerformedSuccessfully\": \"Operación efectuada correctamente\",\r\n \"order\": \"Orden\",\r\n \"orientation\": \"Orientación\",\r\n \"orientationNumber\": \"Número de orientación\",\r\n \"orientationReceptionMethods\": \"Medios de recepción orientación\",\r\n \"orientationSectors\": \"Sectores orientación\",\r\n \"origin\": \"Origen\",\r\n \"other\": \"Otro\",\r\n \"otherAttachments\": \"Otros anexos\",\r\n \"outgoingMailInProgress\": \"Radicado de salida en tramite\",\r\n \"outgoingMailReport\": \"Reporte radicados de salida\",\r\n \"outgoingMailReturnToElectronicHeadquarters\": \"Radicado Salida Devolucion Sede Electronica\",\r\n \"outputs\": \"Salidas\",\r\n \"pack\": \"Empaquetar\",\r\n \"packagedCaseFiles\": \"Expedientes empaquetados\",\r\n \"packaging\": \"Empaquetamiento\",\r\n \"packRecord\": \"Empaquetar expediente\",\r\n \"paper\": \"Papel\",\r\n \"paperAndElectronic\": \"Papel y Electrónico\",\r\n \"parameterDeletedSuccessfully\": \"Parámetro eliminado correctamente\",\r\n \"parameters\": \"Parámetros\",\r\n \"parameterSavedSuccessfully\": \"Parámetro almacenado correctamente\",\r\n \"parent\": \"Padre\",\r\n \"parentFund\": \"Fondo padre\",\r\n \"parentSection\": \"Sección padre\",\r\n \"password\": \"Contraseña\",\r\n \"pBX\": \"Pbx\",\r\n \"pDFFile\": \"Archivo * .pdf\",\r\n \"pending\": \"Pendientes\",\r\n \"pendingApprovalOfInternalCommunication\": \"Pendiente aprobación comunicado interno\",\r\n \"pendingConservation\": \"Pendientes conservación\",\r\n \"pendingForReceipt\": \"Pendientes por recibir\",\r\n \"pendingQualitativeSelection\": \"Pendientes selección cualitativa\",\r\n \"pendingQuantitativeSelection\": \"Pendientes selección cuantitativa\",\r\n \"pendingRemoval\": \"Pendientes eliminación\",\r\n \"permission\": \"Permiso\",\r\n \"permissions\": \"Permisos\",\r\n \"permissionsWereGrantedToTheSection#sectionName#\": \"Se concedió permisos a la sección #nombre de la sección#\",\r\n \"permissionType\": \"Tipo de permiso\",\r\n \"personalInformation\": \"Información personal\",\r\n \"phone\": \"Teléfono\",\r\n \"physical\": \"Fisico\",\r\n \"physicalAddress\": \"Dirección fisica\",\r\n \"physicalIncomingFile\": \"Radicado de entrada fisico\",\r\n \"physicalIncomingFileSignature\": \"Firma Radicados Fisicos\",\r\n \"physicalLocation\": \"Ubicación física\",\r\n \"physicalOutgoingFile\": \"Radicado de salida fisico\",\r\n \"physicalOutgoingFileProject\": \"Proyecto de radicado de salida fisico\",\r\n \"physicalResponse\": \"Respuesta fisica\",\r\n \"physicalTokenSerial\": \"Serial token fisico\",\r\n \"postalCode\": \"Código postal\",\r\n \"pQRClassification\": \"Clasificación PQR\",\r\n \"pQRNo.#PqrnumberInProgress#.\": \"PQR No. # de pqr en tramite #\",\r\n \"pQROutgoingInProgress\": \"PQR salida en tramite\",\r\n \"pQRSClassifications\": \"Clasificaciones PQRS\",\r\n \"pQRSReport\": \"Reporte PQRS\",\r\n \"pqrWeb\": \"PqrWeb\",\r\n \"preferredAttention\": \"Atención preferencial\",\r\n \"prefix\": \"Prefijo\",\r\n \"preliminaryResponse\": \"Respuesta preliminar\",\r\n \"preview\": \"Vista previa\",\r\n \"primaryTransfer\": \"Transferencia primaria\",\r\n \"primaryTransferEndDate\": \"Fecha fin transferencia primaria\",\r\n \"primaryTransferNumber\": \"Número transferencia primaria\",\r\n \"primaryTransferStartDate\": \"Fecha inicio transferencia primaria\",\r\n \"printed\": \"Impreso\",\r\n \"priority\": \"Prioridad\",\r\n \"procedure\": \"Trámite\",\r\n \"procedureCode\": \"Código procedimiento\",\r\n \"procedureDescription\": \"Descripción procedimiento\",\r\n \"procedureExecutionType\": \"Tipo de ejecución trámite\",\r\n \"procedureName\": \"Nombre procedimiento\",\r\n \"procedures\": \"Trámites\",\r\n \"procedureSavedSuccessfully\": \"Tramite almacenado correctamente\",\r\n \"procesoX_AllowUploadDocumentUsingActivityInstance\": \"Permitir cargar documentos por medio de la instancia de proceso\",\r\n \"procesoX_Function_ExistConstant_ArgumentNullException\": \"ProcesoxErrors.Functions.ExistConstant.ArgumentNullException\",\r\n \"procesoX_ShowErrorsSummaryInDialog\": \"Mostrar resumen de errores en cuadro de dialogo\",\r\n \"process\": \"Proceso\",\r\n \"processCompletedSuccessfully\": \"Proceso completado correctamente\",\r\n \"processInitiatorUser\": \"Usuario que inicia el flujo\",\r\n \"producingOffice\": \"Oficina productora\",\r\n \"profession\": \"Profesion\",\r\n \"professions\": \"Profesiones\",\r\n \"profile\": \"Perfil\",\r\n \"profiles\": \"Perfiles\",\r\n \"projectingUser\": \"Usuario proyectante\",\r\n \"projectingUserSection\": \"Sección usuario proyectante\",\r\n \"projector\": \"Proyector\",\r\n \"properties\": \"Propiedades\",\r\n \"property\": \"Propiedad\",\r\n \"propertyCreatedSuccessfully\": \"Propiedad creada correctamente\",\r\n \"provideAnExtension\": \"Aportar ampliación\",\r\n \"provideInformation\": \"Aportar información\",\r\n \"public\": \"Público\",\r\n \"publicAttention\": \"Atención público\",\r\n \"publicComplaintsAndRequests\": \"PQR\",\r\n \"publicInformation\": \"Información Pública\",\r\n \"publishedInternalCommunication\": \"Comunicado interno publicado\",\r\n \"qualitativeSelection\": \"Selección Cualitativa\",\r\n \"quantitativeSelection\": \"Selección cuantitativa\",\r\n \"quantity\": \"Cantidad\",\r\n \"query\": \"Consulta\",\r\n \"queryFrequency\": \"Frecuencia de consulta\",\r\n \"read,Create,AndEditAllDocumentTypes\": \"Leer, crear y editar todos los tipos documentales\",\r\n \"read,Create,AndEditSpecificDocumentTypes\": \"Leer, crear y editar tipos documentales especificos\",\r\n \"readAllDocumentaryTypes\": \"Leer todos los tipos documentales\",\r\n \"readAllDocumentTypes\": \"Leer todos los tipos documentales\",\r\n \"readSpecificDocumentaryTypes\": \"Leer tipos documentales especificos\",\r\n \"readSpecificDocumentTypes\": \"Leer tipos documentales especificos\",\r\n \"readWriteAllDocumentaryTypes\": \"Leer, crear y editar todos los tipos documentales\",\r\n \"readWriteSpecificDocumentaryTypes\": \"Leer, crear y editar tipos documentales especificos\",\r\n \"reassign\": \"Reasignar\",\r\n \"reassignInternalCommunication\": \"Reasignar comunicado interno\",\r\n \"reassignment\": \"Reasignación\",\r\n \"reassignTask\": \"Reasignar tarea\",\r\n \"reassignTasks\": \"Reasignar tareas\",\r\n \"rECapture\": \"Captura RE\",\r\n \"receive\": \"Recibir\",\r\n \"received\": \"Recibido\",\r\n \"receiveDocuments\": \"Recibir documentos\",\r\n \"receivingPoint\": \"Punto de radicación\",\r\n \"receptionDate\": \"Fecha de recepción\",\r\n \"receptionMode\": \"Modo de recepción\",\r\n \"recipient\": \"Destinatario\",\r\n \"reclassify\": \"Reclasificar\",\r\n \"reconnected\": \"Reconectar\",\r\n \"record#URINumber#HasNoAssociatedDocuments\": \"El expediente #numero URI# no tiene documentos asociados\",\r\n \"recordConsultedByUser#User#\": \"Radicado consultado por el usuario # usuario #\",\r\n \"recordCreated_Audit\": \"El usuario #USUARIO# ha consultado el expediente\",\r\n \"recordCreated\": \"Se creó expediente\",\r\n \"recordCreatedSuccessfully\": \"Expediente creado correctamente\",\r\n \"recordDeletedFromTheManagementFile\": \"Expediente eliminado del archivo de gestión\",\r\n \"recordDeletedSuccessfully\": \"Registro eliminado correctamente\",\r\n \"recordDocumentOrder\": \"Orden documento expediente\",\r\n \"recordHistory\": \"Historial expediente\",\r\n \"recordLink\": \"Enlace de radicado\",\r\n \"recordLocation\": \"Ubicación del expediente\",\r\n \"recordNo.\": \"Expediente No.\",\r\n \"recordNumber\": \"Número expediente\",\r\n \"recordPackaging\": \"Empaquetamiento de expedientes\",\r\n \"recordReopened.Reason\": \"¿Está seguro que desea reabrir el expediente?\",\r\n \"recordReopenedSuccessfully\": \"Expediente reabierto con éxito\",\r\n \"recordReports\": \"Reportes de expediente\",\r\n \"records\": \"Actas\",\r\n \"recordStoredSuccessfully\": \"Registro almacenado correctamente\",\r\n \"recordUnlocked\": \"Expediente desbloqueado\",\r\n \"referenceNumber\": \"Número de referencia\",\r\n \"referralLetter\": \"Oficio remisorio\",\r\n \"refresh\": \"Actualizar\",\r\n \"registerOrientation\": \"Registrar orientación\",\r\n \"reject\": \"Rechazar\",\r\n \"rejectApprovalRequest\": \"Rechazar solicitud de visto bueno\",\r\n \"rejectedApproval\": \"Rechazado visto bueno\",\r\n \"rejectedInternalCommunication\": \"Comunicado interno rechazada\",\r\n \"rejectInternalCommunication\": \"Rechazar comunicado interno\",\r\n \"removal\": \"Eliminación\",\r\n \"rename\": \"Renombrar\",\r\n \"reopening\": \"Reapertura\",\r\n \"reopenRecord\": \"Reabrir expediente\",\r\n \"reports\": \"Reportes\",\r\n \"representative'sName\": \"Nombre representante\",\r\n \"request\": \"Solicitud\",\r\n \"requestApproval\": \"Solicitar aprobación\",\r\n \"requestComments\": \"Observaciones de la solicitud\",\r\n \"requestDate\": \"Fecha solicitud\",\r\n \"requestedOn\": \"Solicitado el\",\r\n \"requestedOn#date#timeAndRespondedOn#date#time(#minutes)\": \"Solicitado el #fecha #hora y respondido el #fecha #hora (#minutos)\",\r\n \"requestInformation\": \"Solicitar información\",\r\n \"requestLinking\": \"Enlace de peticiones\",\r\n \"requestVoBo\": \"Solicitar visto bueno\",\r\n \"required\": \"Requerido\",\r\n \"requiredField\": \"Campo requerido\",\r\n \"requiresResponse\": \"Requiere respuesta\",\r\n \"requiresShippingGuide\": \"Requiere guía de envío\",\r\n \"rescheduleDelivery\": \"Reagendar envio\",\r\n \"resendReturnedPhysicalOutgoingMail\": \"Reenviar radicado salida fisico devuelto\",\r\n \"reserved\": \"Reservado\",\r\n \"reservedInformation\": \"Información reservada\",\r\n \"resetInheritance\": \"Restablecer herencia\",\r\n \"respond\": \"Responder\",\r\n \"respondToApproval\": \"Responder visto bueno\",\r\n \"respondToApprovalRequest\": \"Responder solicitud de visto bueno\",\r\n \"respondToApprovalRequests.\": \"Responder solicitudes de Vo.Bo\",\r\n \"respondToConceptRequest\": \"Responder solicitud de concepto\",\r\n \"respondToInternalCommunication\": \"Responder comunicado interno\",\r\n \"respondToPQRApprovalRequest\": \"Responder solicitud de visto bueno PQR\",\r\n \"respondToRequestForApprovalOfInternalCommunication\": \"Responder solicitud de visto bueno comunicado interno\",\r\n \"respondToVoBoRequest\": \"Responder solicitud de Vo.Bo\",\r\n \"response\": \"Respuesta\",\r\n \"response15TimeUnit\": \" respuesta 15 Unidad de tiempo\",\r\n \"responseDate\": \"Fecha de respuesta\",\r\n \"responsePreference\": \"Preferencia de la respuesta\",\r\n \"responsesToApprovalRequest\": \"Respuestas solicitud de visto bueno\",\r\n \"responsesToApprovalRequests\": \"Respuestas solicitudes de Vo.Bo\",\r\n \"responsesToInformationRequest\": \"Respuestas solictud de información\",\r\n \"responsesToInformationRequests\": \"Respuestas solicitud de información\",\r\n \"responseToInternalCommunication\": \"Respuesta comunicado interno\",\r\n \"responseToRequestForClarification\": \"Respuesta de solicitud de aclaración\",\r\n \"responsible\": \"Responsable\",\r\n \"responsibleAlert\": \"Alerta responsable\",\r\n \"responsibleAlertTime(days)\": \"Tiempo alerta responsable (días)\",\r\n \"responsibleChangedSuccessfully\": \"Responsable cambiado con éxito\",\r\n \"responsibles\": \"Responsables\",\r\n \"responsibleUser\": \"Usuario Responsable\",\r\n \"result\": \"Resultado\",\r\n \"retentionTableViewer\": \"Visor tabla de retención documental\",\r\n \"retentionTimeInCentralArchive(Years)\": \"Tiempo en archivo central (Años)\",\r\n \"retentionTimeInManagementArchive(Years)\": \"Tiempo en archivo gestión (Años)\",\r\n \"return\": \"Devolver\",\r\n \"returned_Plural\": \"Devueltos\",\r\n \"returned_Singular\": \"Devuelto\",\r\n \"returnedComments\": \"Comentarios de la devolución\",\r\n \"returnReasons\": \"Motivos de devolución\",\r\n \"review\": \"Revisar\",\r\n \"role\": \"Rol\",\r\n \"roles\": \"Roles\",\r\n \"roleSavedSuccessfully\": \"Rol guardado correctamente\",\r\n \"router\": \"Enrutador\",\r\n \"rSCapture\": \"Captura RS\",\r\n \"rules\": \"Reglas\",\r\n \"save\": \"Guardar\",\r\n \"saveBranch\": \"Guardar sucursal\",\r\n \"saveChanges\": \"Guardar cambios\",\r\n \"saveConsecutive\": \"Guardar Consecutivo\",\r\n \"saveContact\": \"Guardar contacto\",\r\n \"saveDocumentType\": \"Guardar tipo documental\",\r\n \"saveHoliday\": \"Guardar festivo\",\r\n \"saveMetadata\": \"Guardar metadatos\",\r\n \"savePQRSClassification\": \"Guardar clasificación PQRS\",\r\n \"saveProcedure\": \"Guardar trámite\",\r\n \"saveReturnReason\": \"Guardar motivo devolución\",\r\n \"saveSubseries\": \"Guardar subserie\",\r\n \"saveZone\": \"Guardar zona\",\r\n \"schedule\": \"Cronograma\",\r\n \"scheduleStoredSuccessfully\": \"Cronograma almacenado correctamente\",\r\n \"scope\": \"Alcance\",\r\n \"search\": \"Buscar\",\r\n \"searchDocument\": \"Buscar documento\",\r\n \"searchExistingFile\": \"Buscar expediente existente\",\r\n \"searchForContactsByFilteringByName\": \"Busca contactos filtrando por el nombre\",\r\n \"searchForIncomingFile\": \"Buscar radicado de entrada\",\r\n \"searchForIncomingRecords,OutgoingRecords,AndInternalCommunications,FilteringByNumber\": \"Buscar radicados de entrada, radicados de salida y comunicados internos, filtrando por número \",\r\n \"searchForUsersOrSections\": \"Buscar usuarios o secciones\",\r\n \"searchInClassifiedAccessRecords\": \"Búsqueda en expedientes de acceso clasificado \",\r\n \"searchInPublicAccessRecords\": \"Búsqueda en expedientes de acceso público\",\r\n \"searchInReservedAccessRecords\": \"Búsqueda en expedientes de acceso reservado\",\r\n \"searchResult\": \"Resultado búsqueda\",\r\n \"searchTopicsByFilteringByName\": \"Busca temas filtrando por el nombre \",\r\n \"searchType\": \"Tipo de búsqueda\",\r\n \"seccion\": \"Sección\",\r\n \"secondaryRecipients\": \"Destinatarios secundarios\",\r\n \"serie\": \"Serie\",\r\n \"seriePertenencia\": \"Serie a la que pertenece\",\r\n \"series-TRD\": \"Series - TRD\",\r\n \"seriesCode\": \"Código serie\",\r\n \"seriesItBelongsTo\": \"Serie a la que pertenece\",\r\n \"seriesStoredSuccessfully\": \"Serie almacenada correctamente\",\r\n \"serverCommunicationError\": \"Error de comunicación con el servidor\",\r\n \"serviceAndSupportModule\": \"Módulo de atención y servicio\",\r\n \"setAsTheCurrentVersion\": \"Establecer como versión actual\",\r\n \"setTheVersion#VersionName#AsTheCurrentDocumentRetentionTableVersion\": \"Establece la versión #Nombre versión# como la versión actual de tabla de retención documental \",\r\n \"setVersion\": \"Establecer versión\",\r\n \"sheetNumber\": \"Número de planilla\",\r\n \"sheets\": \"Folios\",\r\n \"sheetsInShipment\": \"Planillas en envío\",\r\n \"shelf_Estante\": \"Estante\",\r\n \"shelf\": \"Entrepaño\",\r\n \"shiftTemplate\": \"Plantilla turno\",\r\n \"shipmentCanceled\": \"Envío cancelado\",\r\n \"shippingAssignment\": \"Asignación de envios\",\r\n \"shippingAssignmentCompletedSuccessfully\": \"Asignación de envio completada correctamente\",\r\n \"shippingGuide\": \"Guia de envío\",\r\n \"shippingMethod\": \"Medio de envío\",\r\n \"shippingMethods\": \"Medios de envio\",\r\n \"shippingMethodSavedSuccessfully\": \"Medio de envío almacenado correctamente\",\r\n \"shippingZone\": \"Zona de envío\",\r\n \"showAll\": \"Mostrar todo\",\r\n \"showIndex\": \"Mostrar indice\",\r\n \"dataTablePaginationMessage\": \"Mostrando {{start}} al {{lastItem}} de {{totalRecords}}\",\r\n \"side\": \"Cara\",\r\n \"sign\": \"Firmar\",\r\n \"signatureConfiguration\": \"Configuración firma\",\r\n \"signatureConfigurationSavedSuccessfully\": \"Configuración de firma almacenada correctamente\",\r\n \"signatureType\": \"Tipo de firma\",\r\n \"signDocument\": \"Firmar documento\",\r\n \"simpleSeries\": \"Serie simple\",\r\n \"simulate\": \"Simular\",\r\n \"sites\": \"Sitios\",\r\n \"size\": \"Tamaño\",\r\n \"south\": \"Sur\",\r\n \"southeast\": \"Suroriente\",\r\n \"specificTerms\": \"Términos específicos\",\r\n \"specifyTheCustomComponentOfProcesoXToBeRenderedWhenSelectingTheProcedure\": \"Especifica el componente personalizado de ProcesoX que se va a renderizar al seleccionar el trámite\",\r\n \"specifyTheDataAccessFunction\": \"Especifica la función de acceso a datos\",\r\n \"specifyTheUserToAssignTheFirstTaskOfTheProcess\": \"Especifica el usuario al que se asigna la primera tarea del proceso\",\r\n \"start\": \"Inicio\",\r\n \"startDate\": \"Fecha inicial\",\r\n \"startDateOfRecordCreation\": \"Fecha inicio creación expediente\",\r\n \"startDocumentProcess\": \"Iniciar proceso documental\",\r\n \"status\": \"Estado\",\r\n \"sticker\": \"Sticker\",\r\n \"stopServiceAndClearConfiguration\": \"Detener servicio y borrar configuración\",\r\n \"stopServices\": \"Detener servicios\",\r\n \"storage\": \"Almacenamiento\",\r\n \"storageRecord\": \"Expediente de almacenamiento\",\r\n \"structure\": \"Estructura\",\r\n \"subfondo\": \"Subfondo\",\r\n \"subfund\": \"Subfondo\",\r\n \"subject\": \"Asunto\",\r\n \"subscription\": \"Suscripción\",\r\n \"subscriptions\": \"Suscripciones\",\r\n \"subscriptionUpdated\": \"Suscripción actualizada\",\r\n \"subseccion\": \"Subsección\",\r\n \"subsection\": \"Subsección\",\r\n \"subserie\": \"Subserie\",\r\n \"subseriesCode\": \"Código subserie\",\r\n \"subseriesStoredSuccessfully\": \"Subserie almacenada correctamente\",\r\n \"surveys\": \"Encuestas\",\r\n \"synchronizeDataAAD\": \"Sincronizar datos AAD\",\r\n \"systemFile\": \"Archivo sistema\",\r\n \"tableUpdatedSuccessfully\": \"Tabla actualizada correctamente\",\r\n \"tacitWaiver\": \"Desistimiento tácito\",\r\n \"targetVariable\": \"Variable destino\",\r\n \"tasks\": \"Tareas\",\r\n \"taskType\": \"Tipo de tarea\",\r\n \"taskTypes\": \"Tipos de tarea\",\r\n \"template\": \"Plantilla\",\r\n \"templateGenerated\": \"Plantilla generada\",\r\n \"templates\": \"Plantillas\",\r\n \"terminologicalBank\": \"Banco Terminológico\",\r\n \"terminologyBankStoredSuccessfully\": \"Banco Terminológico almacenado correctamente\",\r\n \"text\": \"Texto\",\r\n \"theApprovalRequestHasBeenCompletedSuccessfully\": \"La solicitud de visto bueno se ha completado corretamente\",\r\n \"theApprovalRequestHasBeenRejectedSuccessfully\": \"La solicitud de visto bueno se ha rechazado corretamente\",\r\n \"theCityWasSavedSuccessfully\": \"La ciudad se guardo correctamente\",\r\n \"theCountryWasSavedSuccessfully\": \"El país se guardo correctamente\",\r\n \"theCreationOfTheIncomingFileHasNotBeenCompletedYet.AreYouSureYouWantToDeleteIt\": \"¿La creación del radicado de entrada aún no se ha completado. ¿Está seguro que desea eliminarlo?\",\r\n \"theCurrentIncomingFileHasNoLinkedFiles\": \"El radicado de entrada actual no tiene radicados vinculados \",\r\n \"theCurrentUserDoesNotHavePermissionToViewThePackagingRequest\": \"El usuario actual no tiene permiso para visualizar la solicitud de empaquetamiento\",\r\n \"theDepartmentWasSavedSuccessfully\": \"El departamento se guardo correctamente\",\r\n \"theDocumentCannotBeDeletedBecauseItIsLinkedToAnotherRecord\": \"No se puede eliminar el documento debido a que está enlazado a otro Expediente\",\r\n \"theDocumentRetentionTableVersionIsInactive\": \"La versión de tabla de retención documental está inactiva\",\r\n \"theDocumentRetentionTableVersionWasNotFound.Version\": \"#numero de versión#\",\r\n \"theFollowingDataOfTheReturnReasonWereUpdated\": \"Reagendar envío de 'No' a 'Si'\",\r\n \"theFollowingPrerequisitesAreRequired\": \"Se necesitan los siguientes requisitos previos\",\r\n \"theIdTablaRetencionDocumentalParameterDoesNotHaveAValidValue(0)\": \"El parámetro idTablaRetencionDocumental no tiene un valor valido (0)\",\r\n \"theIncomingFilesCannotBeLinkedBecauseTheMainIncomingFileIsNotInThe'InProgress'State\": \"No se puede enlazar los radicados debido a que el radicado principal no se encuentra en estado 'En Trámite'\",\r\n \"theIncomingRecordHasBeenLinkedToTheInitialRequestNumber#RecordNumber#WithTheFollowingComment\": \"\",\r\n \"theInternalCommunicationCannotBeReassignedBecauseTheDestinationUserIsTheSameAsTheCurrentUser\": \"No se puede reasignar el comunicado interno debido a que el usuario destino es igual al usuario actual\",\r\n \"theOutgoingFileHasNoAssociatedApprovalRequests\": \"El radicado de salida no tiene solicitudes de visto bueno asociadas\",\r\n \"theOutgoingFileHasNoAssociatedInformationRequests\": \"El radicado de salida no tiene solicitudes de información asociadas\",\r\n \"thePermission'ReadAllDocumentTypes'WasGrantedToSection#SECTION#__\": \"El usuario #USUARIO# ha consultado el expediente\",\r\n \"thePermission'ReadAllDocumentTypes'WasGrantedToSection#SECTION#\": \"Se concedió el permiso 'Leer todos los tipos documentales' a la sección #SECCION#\",\r\n \"thePermissionFromSection#SECTION#WasRemovedFromTheRecord\": \"Se eliminó el permiso de la sección #SECCION# sobre el expediente\",\r\n \"thePersonIdentifiesAs\": \"La persona se identifica como\",\r\n \"theProfileWasSavedSuccessfully\": \"El perfil se guardo correctamente\",\r\n \"theRecordCannotBeDeletedBecauseItHasAssociatedRecords\": \"No se puede eliminar el expediente porque tiene expedientes asociados\",\r\n \"theRecordIsClosed,AndTheCreation,Editing,OrDeletionOfDocumentsIsNotAllowed\": \"El expediente está cerrado y no se permite la creación, edición o eliminación de documentos\",\r\n \"theRecordNameWasChangedSuccessfully\": \"Se cambio el nombre al expediente correctamente\",\r\n \"theRecordWasClosed.Observations\": \"\",\r\n \"theRecordWasIncludedInFileNo\": \"Se incluyó el radicado en el expediente No.\",\r\n \"theRecordWasLocked.Observations\": \",\",\r\n \"theRecordWasRenamedFrom#RECORDNAME#To#RECORDNAME#\": \"Se renombró el expediente de #NOMBRE EXPEDIENTE# a #NOMBRE EXPEDIENTE#\",\r\n \"theRequestToMoveTheDocumentsWasCreatedSuccessfully\": \"La solicitud de movimiento de los documentos se creó correctamente\",\r\n \"theResponsibleOfTheRecordWasChangedFrom#USER#To#USER#.Observations\": \"\",\r\n \"theReturnReasonCannotBeDeletedAsItHasDependencies\": \"No se puede eliminar el motivo de devolución debido a que tiene dependencias\",\r\n \"theReturnReasonWithTheName'reasonName'WasCreated\": \"Se creó el motivo de devolución con Nombre 'nombre del motivo'\",\r\n \"theSecurityLevelHasBeenUpdatedTo'Classified\": \"Se actualizó el nivel de seguridad a 'Clasificado'\",\r\n \"theSecurityLevelHasBeenUpdatedTo'Public\": \"Se actualizó el nivel de seguridad a 'Publico\",\r\n \"theSecurityOfTheRecordWasUpdatedToNotInheritPermissionsFromTheRetentionTable\": \"Se actualizó la seguridad del expediente para no heredar permisos de la tabla de retención documental\",\r\n \"theSigningUserCannotBeInTheMainRecipientsList\": \"El usuario firmante no puede estar en la lista de destinatarios principales\",\r\n \"theTimeZoneIsMandatory\": \"La zona horaria es obligatoria\",\r\n \"theURLForTheTramitexIncomingMailReportHasNotBeenConfigured.PleaseContactTheSystemAdministratorToUpdateTheSubscriptionParameters\": \"No se ha parámetrizado la url del reporte de radicados de entrada Tramitex. Por favor contacte al administrador del sistema para que se actualice los parámetros de la suscripción\",\r\n \"theUserUSERNAMEIsAlreadyIncludedAmongTheRecipientsOfTheInternalCommunication\": \"El usuario NOMBREDELUSUARIO ya se encuentra incluido entre los destinatarios del comunicado interno\",\r\n \"theUserWasSavedSuccessfully\": \"El usuario se guardó correctamente\",\r\n \"theUserWasSuccessfullyAssociatedWithTheSection\": \"El usuario se asoció correctamente a la sección\",\r\n \"thirdCall\": \"Tercer llamado\",\r\n \"thisCommunicationIsAssociatedAsAResponseToCommunication#communicationnumber#\": \"Este comunicado se asocia como respuesta al comunicado #decomunicado\",\r\n \"thisIncomingFileIsAssociatedAsAResponseToIncomingFile#incomingnumber#\": \"Este radicado se asocia como respuesta al radicado # de radicado #\",\r\n \"time\": \"Tiempo\",\r\n \"timeUnit\": \"Unidad de tiempo\",\r\n \"timeZone\": \"Zona Horaria\",\r\n \"tipoRadicado\": \"Tipo de radicado\",\r\n \"title\": \"Titulo\",\r\n \"to\": \"Hasta\",\r\n \"toBack\": \"Volver\",\r\n \"top-levelClassification\": \"Clasificación nivel superior\",\r\n \"topic\": \"Tema\",\r\n \"topicScope\": \"Alcance tema\",\r\n \"toUpdate\": \"Actualizar\",\r\n \"tramite\": \"Trámite\",\r\n \"transferDate\": \"Fecha de Transferencia\",\r\n \"transfers\": \"Transferencias\",\r\n \"transferSchedule\": \"Cronograma Transferencia\",\r\n \"transmissionDate\": \"Fecha de transmisión\",\r\n \"tRDCode\": \"Código TRD\",\r\n \"tRDDocumentTypes\": \"Tipos documentales TRD\",\r\n \"tRDSubseries\": \"Subseries TRD\",\r\n \"tRDVersion\": \"Versión TRD\",\r\n \"type\": \"Tipo\",\r\n \"typeOfIdentification\": \"Tipo de identificación\",\r\n \"typeOfShipment\": \"Tipo de envío\",\r\n \"uniqueDocumentInventoryFormat(FUID)\": \"Formato unico de inventario documental (FUID)\",\r\n \"unlockRecord\": \"Desbloquear expediente\",\r\n \"update\": \"Actualización\",\r\n \"updateContactType\": \"Actualizar tipo de contacto\",\r\n \"updateDocumentRetentionTable\": \"Actualización tabla de retención documental\",\r\n \"updateFromExcel\": \"Actualizar desde excel\",\r\n \"updateSection\": \"Actualizar sección\",\r\n \"updateTheRecord'sSecuritySoItDoesn'tInheritPermissionsFromTheRetentionTable\": \"Actualiza la seguridad del expediente para que no herede permisos de la tabla de retención documental \",\r\n \"uploadDate\": \"Fecha de carga\",\r\n \"uploadDocument\": \"Cargar documento\",\r\n \"uploadScannedDocuments\": \"Cargar documentos digitalizados\",\r\n \"uploadVoucher\": \"Cargar comprobante\",\r\n \"uRI\": \"URI\",\r\n \"user\": \"Usuario\",\r\n \"user#USER#HasViewedTheRecord\": \"El usuario #USUARIO# ha consultado el expediente\",\r\n \"userInterface\": \"Interfaz de usuario\",\r\n \"userPreferences\": \"Preferencias de usuario\",\r\n \"users\": \"Usuarios\",\r\n \"userSuccessfullyDeleted\": \"Usuario eliminado correctamente.\",\r\n \"userTask-ProcessX\": \"Tarea de usuario - ProcesoX\",\r\n \"validatePostponingTheFileTransfer\": \"Validar posponer la transferencia de expedientes\",\r\n value: \"Valor\",\r\n variable: \"Variable\",\r\n variableName: \"Nombre variable\",\r\n variables: \"Variables\",\r\n version: \"Versión\",\r\n versionCreatedSuccessfully: \"Versión creada correctamente\",\r\n versionGeneratedOn: \"Versión generada en\",\r\n versions: \"Versiones\",\r\n versionSuccessfullySetAsCurrent: \"Versión establecida como actual correctamente\",\r\n versionTRD: \"Versión TRD\",\r\n versionTVD: \"Versión TVD\",\r\n video: \"Video\",\r\n view: \"Ver\",\r\n viewAll: \"Ver todo\",\r\n viewDocument: \"Ver documento\",\r\n viewElectronicHeadquartersButton: \"Ver botón sede electrónica\",\r\n viewFile: \"Ver expediente\",\r\n viewRecord: \"Ver radicado\",\r\n visible: \"Visible\",\r\n voBoRequestSentSuccessfully: \"Solicitud de visto bueno enviada con éxito\",\r\n voucherUploadedSuccessfully: \"Comprobante cargado con éxito\",\r\n wasTheServiceProvidedInATimelyManner: \"¿El servicio se prestó de manera oportuna?\",\r\n webhooks: \"WebHooks\",\r\n webRegistration: \"Registro web\",\r\n west: \"Occidente\",\r\n window: \"Ventanilla\",\r\n withoutVoucher: \"Sin comprobante\",\r\n word: \"Palabra\",\r\n year: \"Año\",\r\n yes: \"Si\",\r\n youMustSelectAMetadata: \"Debe seleccionar un metadato\",\r\n youMustSelectSomeTypeOfNotificationEitherByEmailOrAtTheRegisteredAddress: \"Debe seleccionar algún tipo de notificación, ya sea por correo electrónico o en la dirección registrada\",\r\n youResideIn: \"Usted reside en\",\r\n zone: \"Zona\",\r\n zoneSavedSuccessfully: \"Zona almacenada correctamente\",\r\n darkMode: \"Modo oscuro\",\r\n english: \"Inglés\",\r\n itemUpdatedSuccessfully: \"Elemento actualizado correctamente\",\r\n language: \"Idioma\",\r\n languagePreference: \"Preferencia de idioma\",\r\n logIn: \"Iniciar sesión\",\r\n previewFeatures: \"Características de vista previa\",\r\n secondaryTransfer: \"Transferencia secundaria\",\r\n secondCall: \"Segundo llamado\",\r\n section: \"Sección\",\r\n sectionCode: \"Código sección\",\r\n sectionCreated: \"Se creó sección\",\r\n sectionResponsibleForProcessingTheIncomingCorrespondence: \"Sección responsable de tramitar el radicado de entrada\",\r\n sections: \"Secciones\",\r\n sectionStoredSuccessfully: \"Sección almacenada correctamente\",\r\n sectionUpdated: \"Sección actualizada\",\r\n sector: \"Sector\",\r\n secureMethod: \"Medio seguro\",\r\n security: \"Seguridad\",\r\n securityLevel: \"Nivel de seguridad\",\r\n securityLevelUpdatedToReserved: \"Se actualizó el nivel de seguridad a 'Reservado'\",\r\n securityUpdate: \"Actualización de seguridad\",\r\n securityUpdatedSuccessfully: \"Seguridad actualizada correctamente\",\r\n select: \"Seleccione\",\r\n selectADate: \"Seleccione una fecha\",\r\n selectADocumentType: \"Seleccione un tipo documental\",\r\n selectAnItem: \"Seleccione un elemento\",\r\n selectContact: \"Seleccionar contacto\",\r\n selectDocuments: \"Seleccionar documentos\",\r\n selectFiles: \"Seleccionar archivos\",\r\n sendingDocuments: \"Envío de documentos\",\r\n sendSurveyDevice: \"Enviar encuesta a Dispositivo\",\r\n sendSurveyEmail: \"Enviar encuesta a Email\",\r\n sigla: \"Sigla\",\r\n spanish: \"Español\",\r\n startScreenCapture: \"Iniciar captura de pantalla\",\r\n tutorials: \"Tutoriales\",\r\n userPreferencesSavedSuccessfully: \"Preferencias de usuario guardadas\",\r\n};\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nconst initialState = {\r\n apiVersion: '',\r\n appName: 'ArchivoX',\r\n breadcrumbItems: [],\r\n commandBarFarItems: [],\r\n commandBarItems: [],\r\n isNavCollapsed: false,\r\n navItems: [],\r\n notifications: [],\r\n searchBoxPlaceholder: 'Search...',\r\n showBreadcrumb: false,\r\n showSearchBox: false,\r\n tenantUrl: '',\r\n tutorials: [],\r\n uiVersion: '',\r\n userMenuItems: [],\r\n search: '',\r\n themeName: 'light',\r\n prompt: {\r\n title: '',\r\n text: '',\r\n required: false,\r\n show: false,\r\n maxLength: 0,\r\n label: ''\r\n }\r\n};\r\nexport const layoutSlice = createSlice({\r\n name: 'layout',\r\n initialState: initialState,\r\n reducers: {\r\n setBreadcrumbItemItems: (state, action) => {\r\n state.breadcrumbItems = action.payload || [];\r\n },\r\n setNavItems: (state, action) => {\r\n state.navItems = action.payload || [];\r\n },\r\n setNavItem: (state, action) => {\r\n const navItem = action.payload;\r\n const findInLevel = (level) => {\r\n level.forEach(item => {\r\n if (item.key === navItem.key) {\r\n item.isExpanded = navItem.isExpanded;\r\n }\r\n if (item.links) {\r\n findInLevel(item.links);\r\n }\r\n });\r\n };\r\n findInLevel(state.navItems);\r\n },\r\n setNotifications: (state, action) => {\r\n state.notifications = action.payload || [];\r\n },\r\n toggleNavCollapsed: (state) => {\r\n state.isNavCollapsed = !state.isNavCollapsed;\r\n localStorage.setItem('isNavCollapsed', state.isNavCollapsed ? '1' : '0');\r\n },\r\n setAppName: (state, action) => {\r\n state.appName = action.payload || '';\r\n },\r\n setTutorials: (state, action) => {\r\n state.tutorials = action.payload || [];\r\n },\r\n setTenantUrl: (state, action) => {\r\n state.tenantUrl = action.payload || '';\r\n },\r\n setUserMenuItems: (state, action) => {\r\n state.userMenuItems = action.payload || [];\r\n },\r\n setCommandBarItems: (state, action) => {\r\n state.commandBarItems = action.payload || [];\r\n },\r\n setCommandBarFarItems: (state, action) => {\r\n state.commandBarFarItems = action.payload || [];\r\n },\r\n setUiVersion: (state, action) => {\r\n state.uiVersion = action.payload || '';\r\n },\r\n setApiVersion: (state, action) => {\r\n state.apiVersion = action.payload || '';\r\n },\r\n setShowBreadcrumb: (state, action) => {\r\n state.showBreadcrumb = action.payload || false;\r\n },\r\n setShowSearchBox: (state, action) => {\r\n state.showSearchBox = action.payload || false;\r\n },\r\n setSearchBoxPlaceholder: (state, action) => {\r\n state.searchBoxPlaceholder = action.payload || '';\r\n },\r\n setMessage: (state, action) => {\r\n state.message = action.payload || '';\r\n },\r\n setSearch: (state, action) => {\r\n state.search = action.payload || '';\r\n },\r\n setThemeName: (state, action) => {\r\n state.themeName = action.payload || '';\r\n },\r\n showPrompt: (state, action) => {\r\n state.prompt = action.payload;\r\n },\r\n closePrompt: (state, action) => {\r\n state.prompt = { show: false };\r\n },\r\n setPromptErrorMessage: (state, action) => {\r\n state.prompt.errorMessage = action.payload || '';\r\n },\r\n setPromptComments: (state, action) => {\r\n state.prompt.comments = action.payload || '';\r\n }\r\n }\r\n});\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nconst initialState = {\r\n dependences: []\r\n};\r\nexport const pluginEditorSlice = createSlice({\r\n name: 'pluginEditor',\r\n initialState: initialState,\r\n reducers: {\r\n setReferences: (state, action) => {\r\n state.dependences = action.payload || [];\r\n }\r\n }\r\n});\r\n","import { Breadcrumb, Label } from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { layoutSlice } from \"../slices\";\r\nconst breadcrumbCallbacks = {};\r\nconst onClick = (ev, callbacks, item) => {\r\n var _a;\r\n (_a = callbacks[item.key]) === null || _a === void 0 ? void 0 : _a.call(callbacks, ev);\r\n};\r\nconst removeEvent = (callbacks, item) => {\r\n callbacks[item.key] = item.onClick;\r\n return Object.assign(Object.assign({}, item), { onClick: undefined });\r\n};\r\nconst restoreEvent = (callbacks, item) => {\r\n return Object.assign(Object.assign({}, item), { onClickCapture: (ev) => onClick(ev, callbacks, item) });\r\n};\r\nexport const useBreadcrumb = () => {\r\n const dispatch = useDispatch();\r\n return {\r\n setItems: (items = []) => {\r\n const processedItems = items.map(x => removeEvent(breadcrumbCallbacks, x));\r\n dispatch(layoutSlice.actions.setBreadcrumbItemItems(processedItems));\r\n },\r\n clearItems: () => {\r\n dispatch(layoutSlice.actions.setBreadcrumbItemItems([]));\r\n },\r\n show: () => {\r\n dispatch(layoutSlice.actions.setShowBreadcrumb(true));\r\n },\r\n hide: () => {\r\n dispatch(layoutSlice.actions.setShowBreadcrumb(false));\r\n }\r\n };\r\n};\r\nexport const ACBreadcrumb = (props) => {\r\n const items = useSelector(x => x.layout.breadcrumbItems) || [];\r\n const showBreadcrumbItems = items != null && items.length > 0;\r\n if (!showBreadcrumbItems)\r\n return React.createElement(React.Fragment, null);\r\n const processedItems = items.map(item => restoreEvent(breadcrumbCallbacks, item));\r\n return React.createElement(\"div\", { className: \"acthemecontainerbreadcrumb\", onClick: x => x.stopPropagation() },\r\n React.createElement(Breadcrumb, { items: processedItems, onRenderItem: (item, defaultRender) => {\r\n if (item.onClick) {\r\n return React.createElement(Label, null, item.text);\r\n }\r\n return defaultRender(item);\r\n }, overflowAriaLabel: \"More links\", ariaLabel: \"Breadcrumb with links to different pages of the same site\", styles: {\r\n chevron: {\r\n marginLeft: 5,\r\n marginRight: 5\r\n },\r\n root: {\r\n userSelect: 'none'\r\n },\r\n item: {\r\n fontSize: 14,\r\n }\r\n } }));\r\n};\r\n","import { batch, useDispatch } from \"react-redux\";\r\nimport { useCommandBar } from \"../layout\";\r\nimport { useBreadcrumb } from \"../layout/ACBreadcrumb\";\r\nimport { layoutSlice } from \"../slices\";\r\nimport { usePrompt } from \"./usePrompt\";\r\nexport const useLayout = () => {\r\n const dispatch = useDispatch();\r\n const commandBar = useCommandBar();\r\n const breadcrumb = useBreadcrumb();\r\n const prompt = usePrompt();\r\n return {\r\n clearCommandBarFarItems: () => commandBar.clearFarItems(),\r\n clearCommandBarItems: () => commandBar.clearItems(),\r\n hideSearchBox: () => dispatch(layoutSlice.actions.setShowSearchBox(false)),\r\n resetSearchBox: () => dispatch(layoutSlice.actions.setSearch('')),\r\n setCommandBarFarItems: (items) => commandBar.setFarItems(items),\r\n setCommandBarItems: (items) => commandBar.setItems(items),\r\n setMessage: (message) => dispatch(layoutSlice.actions.setMessage(message)),\r\n setSearchBoxValue: (search) => dispatch(layoutSlice.actions.setSearch(search)),\r\n setTheme: (theme) => dispatch(layoutSlice.actions.setThemeName(theme !== null && theme !== void 0 ? theme : 'light')),\r\n setAppName: (name) => dispatch(layoutSlice.actions.setAppName(name)),\r\n setNavItems: (items) => dispatch(layoutSlice.actions.setNavItems(items)),\r\n setTutorials: (items) => dispatch(layoutSlice.actions.setTutorials(items)),\r\n setUserMenuItems: (items) => dispatch(layoutSlice.actions.setUserMenuItems(items)),\r\n showSearchBox: (placeholder) => {\r\n batch(() => {\r\n dispatch(layoutSlice.actions.setShowSearchBox(true));\r\n dispatch(layoutSlice.actions.setSearch(''));\r\n dispatch(layoutSlice.actions.setSearchBoxPlaceholder(placeholder !== null && placeholder !== void 0 ? placeholder : 'Search...'));\r\n });\r\n },\r\n setNotifications: (notifications) => dispatch(layoutSlice.actions.setNotifications(notifications)),\r\n showPrompt: (options) => prompt.showPrompt(options),\r\n setUiVersion: (version) => dispatch(layoutSlice.actions.setUiVersion(version)),\r\n setApiVersion: (version) => dispatch(layoutSlice.actions.setApiVersion(version)),\r\n setTenantUrl: (url) => dispatch(layoutSlice.actions.setTenantUrl(url)),\r\n setShowBreadcrumb: (show) => show ? breadcrumb.show() : breadcrumb.hide(),\r\n setBreadcrumbItemItems: (items) => breadcrumb.setItems(items),\r\n clearBreadcrumbItemItems: (items) => breadcrumb.clearItems(),\r\n };\r\n};\r\n","export class TreeNode {\r\n constructor(props) {\r\n this.__children = null;\r\n this.__visible = true;\r\n this.__onChanged = null;\r\n this.__props = props;\r\n if (this.__props.root == null)\r\n this.__props.root = this;\r\n }\r\n get id() {\r\n return this.__props.node.id;\r\n }\r\n get icon() {\r\n return this.__props.node.icon;\r\n }\r\n get text() {\r\n return this.__props.node.text;\r\n }\r\n get tooltip() {\r\n return this.__props.node.tooltip;\r\n }\r\n get isCollapsed() {\r\n return this.__props.node.isCollapsed || false;\r\n }\r\n set isCollapsed(value) {\r\n this.__props.node.isCollapsed = value;\r\n }\r\n get isSelected() {\r\n return this.__props.node.isSelected || false;\r\n }\r\n set isSelected(value) {\r\n var _a;\r\n (_a = this.__props.root) === null || _a === void 0 ? void 0 : _a.clearSelection();\r\n this.__props.node.isSelected = value;\r\n }\r\n get parentId() {\r\n return this.__props.node.parentId;\r\n }\r\n get disabled() {\r\n return this.__props.node.disabled;\r\n }\r\n get style() {\r\n return this.__props.node.style;\r\n }\r\n get onClick() {\r\n return this.__props.node.onClick;\r\n }\r\n get onDoubleClick() {\r\n return this.__props.node.onDoubleClick;\r\n }\r\n get onContextMenu() {\r\n return this.__props.node.onContextMenu;\r\n }\r\n get onRenderTooltip() {\r\n return this.__props.node.onRenderTooltip;\r\n }\r\n get onDragStart() {\r\n return this.__props.node.onDragStart;\r\n }\r\n set onChanged(value) {\r\n this.__onChanged = value;\r\n }\r\n get children() {\r\n if (this.__children == null) {\r\n const parentId = this.__props.node.id;\r\n this.__children = this.__props.allNodes\r\n .filter(o => o.parentId === parentId)\r\n .map(node => new TreeNode({\r\n allNodes: this.__props.allNodes,\r\n node: node,\r\n root: this.__props.root\r\n }));\r\n }\r\n return this.__children;\r\n }\r\n get visible() {\r\n return this.__visible;\r\n }\r\n search(value) {\r\n this.__visible = true;\r\n value = value.toLowerCase();\r\n const isVisible = this.text.toLowerCase().indexOf(value) >= 0;\r\n const hasVisibleChildren = this.children.map(o => o.search(value)).filter(o => o).length > 0;\r\n this.__visible = isVisible || hasVisibleChildren;\r\n return this.__visible;\r\n }\r\n clearSelection() {\r\n if (this.__props.node.isSelected) {\r\n this.__props.node.isSelected = false;\r\n if (this.__onChanged != null)\r\n this.__onChanged();\r\n }\r\n if (this.children != null)\r\n this.children.forEach(o => o.clearSelection());\r\n }\r\n static createRootNode(nodes, rootNodeId = 'root') {\r\n const root = nodes.find(n => n.id == rootNodeId);\r\n if (root == null)\r\n throw new Error('Root node not found');\r\n const rootNode = new TreeNode({\r\n allNodes: nodes,\r\n node: root,\r\n root: null\r\n });\r\n return rootNode;\r\n }\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { layoutSlice } from \"../slices\";\r\nimport { XCommandBar } from \"./XCommandBar\";\r\nconst commandBarCallbacks = {\r\n items: {},\r\n farItems: {}\r\n};\r\nconst onClick = (ev, callbacks, item) => {\r\n var _a;\r\n (_a = callbacks[item.key]) === null || _a === void 0 ? void 0 : _a.call(callbacks, ev);\r\n};\r\nconst removeEvents = (callbacks, prefix, item) => {\r\n const key = `${prefix}/${item.key}`;\r\n callbacks[key] = item.onClick;\r\n return Object.assign(Object.assign({}, item), { key: key, onClick: undefined, subMenuProps: item.subMenuProps != undefined\r\n ? {\r\n items: item.subMenuProps.items != undefined\r\n ? item.subMenuProps.items.map(x => removeEvents(callbacks, item.key, x))\r\n : undefined\r\n }\r\n : undefined });\r\n};\r\nconst restoreEvents = (callbacks, item) => {\r\n return Object.assign(Object.assign({}, item), { onClick: (ev) => onClick(ev, callbacks, item), subMenuProps: item.subMenuProps != undefined\r\n ? {\r\n items: item.subMenuProps.items != undefined\r\n ? item.subMenuProps.items.map(x => restoreEvents(callbacks, x))\r\n : undefined\r\n }\r\n : undefined });\r\n};\r\nexport const useCommandBar = () => {\r\n const dispatch = useDispatch();\r\n return {\r\n setItems: (items = []) => {\r\n const processedItems = items.map(x => removeEvents(commandBarCallbacks.items, '', x));\r\n dispatch(layoutSlice.actions.setCommandBarItems(processedItems));\r\n },\r\n setFarItems: (items = []) => {\r\n const processedItems = items.map(x => removeEvents(commandBarCallbacks.farItems, '', x));\r\n dispatch(layoutSlice.actions.setCommandBarFarItems(processedItems));\r\n },\r\n clearItems: () => {\r\n dispatch(layoutSlice.actions.setCommandBarItems([]));\r\n },\r\n clearFarItems: () => {\r\n dispatch(layoutSlice.actions.setCommandBarFarItems([]));\r\n }\r\n };\r\n};\r\nexport const LayoutCommandBar = () => {\r\n const items = useSelector(x => x.layout.commandBarItems) || [];\r\n const farItems = useSelector(x => x.layout.commandBarFarItems) || [];\r\n const [show, setShow] = useState(false);\r\n useEffect(() => {\r\n setTimeout(() => {\r\n setShow(true);\r\n }, 500);\r\n }, []);\r\n const processedItems = items.map(item => restoreEvents(commandBarCallbacks.items, item));\r\n const processedFarItems = farItems.map(item => restoreEvents(commandBarCallbacks.farItems, item));\r\n const rootStyle = {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n paddingLeft: \"10px\",\r\n paddingRight: \"10px\",\r\n };\r\n return React.createElement(\"div\", { style: rootStyle },\r\n React.createElement(XCommandBar, { items: show ? processedItems : [{ key: 'loading', text: 'Loading...' }], farItems: processedFarItems, styles: { marginBottom: 0 } }));\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport const Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n DSTS: \"dstsv2\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // CIAM URL\r\n CIAM_AUTH_URL: \".ciamlogin.com\",\r\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n NOT_APPLICABLE: \"N/A\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n REGIONAL_AUTH_NON_MSI_QUERY_STRING: \"allowestsrnonmsi=true\",\r\n KNOWN_PUBLIC_CLOUDS: [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"],\r\n TOKEN_RESPONSE_TYPE: \"token\",\r\n ID_TOKEN_RESPONSE_TYPE: \"id_token\",\r\n SHR_NONCE_VALIDITY: 240,\r\n INVALID_INSTANCE: \"invalid_instance\",\r\n};\r\n\r\nexport const OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE\r\n];\r\n\r\nexport const OIDC_SCOPES = [\r\n ...OIDC_DEFAULT_SCOPES,\r\n Constants.EMAIL_SCOPE\r\n];\r\n\r\n/**\r\n * Request header names\r\n */\r\nexport enum HeaderNames {\r\n CONTENT_TYPE = \"Content-Type\",\r\n RETRY_AFTER = \"Retry-After\",\r\n CCS_HEADER = \"X-AnchorMailbox\",\r\n WWWAuthenticate = \"WWW-Authenticate\",\r\n AuthenticationInfo = \"Authentication-Info\",\r\n X_MS_REQUEST_ID = \"x-ms-request-id\",\r\n X_MS_HTTP_VERSION= \"x-ms-httpver\"\r\n}\r\n\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nexport enum PersistentCacheKeys {\r\n ID_TOKEN = \"idtoken\",\r\n CLIENT_INFO = \"client.info\",\r\n ADAL_ID_TOKEN = \"adal.idtoken\",\r\n ERROR = \"error\",\r\n ERROR_DESC = \"error.description\",\r\n ACTIVE_ACCOUNT = \"active-account\", // Legacy active-account cache key, use new key instead\r\n ACTIVE_ACCOUNT_FILTERS = \"active-account-filters\" // new cache entry for active_account for a more robust version for browser\r\n}\r\n\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nexport enum AADAuthorityConstants {\r\n COMMON = \"common\",\r\n ORGANIZATIONS = \"organizations\",\r\n CONSUMERS = \"consumers\"\r\n}\r\n\r\n/**\r\n * Keys in the hashParams sent by AAD Server\r\n */\r\nexport enum AADServerParamKeys {\r\n CLIENT_ID = \"client_id\",\r\n REDIRECT_URI = \"redirect_uri\",\r\n RESPONSE_TYPE = \"response_type\",\r\n RESPONSE_MODE = \"response_mode\",\r\n GRANT_TYPE = \"grant_type\",\r\n CLAIMS = \"claims\",\r\n SCOPE = \"scope\",\r\n ERROR = \"error\",\r\n ERROR_DESCRIPTION = \"error_description\",\r\n ACCESS_TOKEN = \"access_token\",\r\n ID_TOKEN = \"id_token\",\r\n REFRESH_TOKEN = \"refresh_token\",\r\n EXPIRES_IN = \"expires_in\",\r\n STATE = \"state\",\r\n NONCE = \"nonce\",\r\n PROMPT = \"prompt\",\r\n SESSION_STATE = \"session_state\",\r\n CLIENT_INFO = \"client_info\",\r\n CODE = \"code\",\r\n CODE_CHALLENGE = \"code_challenge\",\r\n CODE_CHALLENGE_METHOD = \"code_challenge_method\",\r\n CODE_VERIFIER = \"code_verifier\",\r\n CLIENT_REQUEST_ID = \"client-request-id\",\r\n X_CLIENT_SKU = \"x-client-SKU\",\r\n X_CLIENT_VER = \"x-client-VER\",\r\n X_CLIENT_OS = \"x-client-OS\",\r\n X_CLIENT_CPU = \"x-client-CPU\",\r\n X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\",\r\n X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\",\r\n X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\",\r\n X_APP_NAME = \"x-app-name\",\r\n X_APP_VER = \"x-app-ver\",\r\n POST_LOGOUT_URI = \"post_logout_redirect_uri\",\r\n ID_TOKEN_HINT = \"id_token_hint\",\r\n DEVICE_CODE = \"device_code\",\r\n CLIENT_SECRET = \"client_secret\",\r\n CLIENT_ASSERTION = \"client_assertion\",\r\n CLIENT_ASSERTION_TYPE = \"client_assertion_type\",\r\n TOKEN_TYPE = \"token_type\",\r\n REQ_CNF = \"req_cnf\",\r\n OBO_ASSERTION = \"assertion\",\r\n REQUESTED_TOKEN_USE = \"requested_token_use\",\r\n ON_BEHALF_OF = \"on_behalf_of\",\r\n FOCI = \"foci\",\r\n CCS_HEADER = \"X-AnchorMailbox\",\r\n RETURN_SPA_CODE = \"return_spa_code\",\r\n NATIVE_BROKER = \"nativebroker\",\r\n LOGOUT_HINT = \"logout_hint\"\r\n}\r\n\r\n/**\r\n * Claims request keys\r\n */\r\nexport enum ClaimsRequestKeys {\r\n ACCESS_TOKEN = \"access_token\",\r\n XMS_CC = \"xms_cc\"\r\n}\r\n\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nexport const PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\",\r\n NO_SESSION: \"no_session\"\r\n};\r\n\r\n/**\r\n * SSO Types - generated to populate hints\r\n */\r\nexport enum SSOTypes {\r\n ACCOUNT = \"account\",\r\n SID = \"sid\",\r\n LOGIN_HINT = \"login_hint\",\r\n ID_TOKEN = \"id_token\",\r\n DOMAIN_HINT = \"domain_hint\",\r\n ORGANIZATIONS = \"organizations\",\r\n CONSUMERS = \"consumers\",\r\n ACCOUNT_ID = \"accountIdentifier\",\r\n HOMEACCOUNT_ID = \"homeAccountIdentifier\"\r\n}\r\n\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nexport const CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\"\r\n};\r\n\r\n/**\r\n * The method used to encode the code verifier for the code challenge parameter. can be one\r\n * of plain or s256. if excluded, code challenge is assumed to be plaintext. for more\r\n * information, see the pkce rcf: https://tools.ietf.org/html/rfc7636\r\n */\r\nexport const CodeChallengeMethodValuesArray: string[] = [\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n];\r\n\r\n/**\r\n * allowed values for response_mode\r\n */\r\nexport enum ResponseMode {\r\n QUERY = \"query\",\r\n FRAGMENT = \"fragment\",\r\n FORM_POST = \"form_post\"\r\n}\r\n\r\n/**\r\n * allowed grant_type\r\n */\r\nexport enum GrantType {\r\n IMPLICIT_GRANT = \"implicit\",\r\n AUTHORIZATION_CODE_GRANT = \"authorization_code\",\r\n CLIENT_CREDENTIALS_GRANT = \"client_credentials\",\r\n RESOURCE_OWNER_PASSWORD_GRANT = \"password\",\r\n REFRESH_TOKEN_GRANT = \"refresh_token\",\r\n DEVICE_CODE_GRANT = \"device_code\",\r\n JWT_BEARER = \"urn:ietf:params:oauth:grant-type:jwt-bearer\"\r\n}\r\n\r\n/**\r\n * Account types in Cache\r\n */\r\nexport enum CacheAccountType {\r\n MSSTS_ACCOUNT_TYPE = \"MSSTS\",\r\n ADFS_ACCOUNT_TYPE = \"ADFS\",\r\n MSAV1_ACCOUNT_TYPE = \"MSA\",\r\n GENERIC_ACCOUNT_TYPE = \"Generic\" // NTLM, Kerberos, FBA, Basic etc\r\n}\r\n\r\n/**\r\n * Separators used in cache\r\n */\r\nexport enum Separators {\r\n CACHE_KEY_SEPARATOR = \"-\",\r\n CLIENT_INFO_SEPARATOR = \".\"\r\n}\r\n\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nexport enum CredentialType {\r\n ID_TOKEN = \"IdToken\",\r\n ACCESS_TOKEN = \"AccessToken\",\r\n ACCESS_TOKEN_WITH_AUTH_SCHEME = \"AccessToken_With_AuthScheme\",\r\n REFRESH_TOKEN = \"RefreshToken\",\r\n}\r\n\r\n/**\r\n * Combine all cache types\r\n */\r\nexport enum CacheType {\r\n ADFS = 1001,\r\n MSA = 1002,\r\n MSSTS = 1003,\r\n GENERIC = 1004,\r\n ACCESS_TOKEN = 2001,\r\n REFRESH_TOKEN = 2002,\r\n ID_TOKEN = 2003,\r\n APP_METADATA = 3001,\r\n UNDEFINED = 9999\r\n}\r\n\r\n/**\r\n * More Cache related constants\r\n */\r\nexport const APP_METADATA = \"appmetadata\";\r\nexport const CLIENT_INFO = \"client_info\";\r\nexport const THE_FAMILY_ID = \"1\";\r\n\r\nexport const AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\r\n};\r\n\r\nexport enum AuthorityMetadataSource {\r\n CONFIG = \"config\",\r\n CACHE = \"cache\",\r\n NETWORK = \"network\",\r\n HARDCODED_VALUES= \"hardcoded_values\",\r\n}\r\n\r\nexport const SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_CUR_HEADER_BYTES: 80, // ESTS limit is 100B, set to 80 to provide a 20B buffer\r\n MAX_LAST_HEADER_BYTES: 330, // ESTS limit is 350B, set to 330 to provide a 20B buffer,\r\n MAX_CACHED_ERRORS: 50, // Limit the number of errors that can be stored to prevent uncontrolled size gains\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\"\r\n};\r\n\r\n/**\r\n * Type of the authentication request\r\n */\r\nexport enum AuthenticationScheme {\r\n BEARER = \"Bearer\",\r\n POP = \"pop\",\r\n SSH = \"ssh-cert\"\r\n}\r\n\r\n/**\r\n * Constants related to throttling\r\n */\r\nexport const ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\"\r\n};\r\n\r\nexport const Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n\r\n/**\r\n * Password grant parameters\r\n */\r\nexport enum PasswordGrantConstants {\r\n username = \"username\",\r\n password = \"password\"\r\n}\r\n\r\n/**\r\n * Response codes\r\n */\r\nexport enum ResponseCodes {\r\n httpSuccess = 200,\r\n httpBadRequest = 400\r\n}\r\n\r\n/**\r\n * Region Discovery Sources\r\n */\r\nexport enum RegionDiscoverySources {\r\n FAILED_AUTO_DETECTION = \"1\",\r\n INTERNAL_CACHE = \"2\",\r\n ENVIRONMENT_VARIABLE = \"3\",\r\n IMDS = \"4\",\r\n}\r\n\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nexport enum RegionDiscoveryOutcomes {\r\n CONFIGURED_MATCHES_DETECTED = \"1\",\r\n CONFIGURED_NO_AUTO_DETECTION = \"2\",\r\n CONFIGURED_NOT_DETECTED = \"3\",\r\n AUTO_DETECTION_REQUESTED_SUCCESSFUL = \"4\",\r\n AUTO_DETECTION_REQUESTED_FAILED = \"5\"\r\n}\r\n\r\nexport enum CacheOutcome {\r\n NO_CACHE_HIT = \"0\",\r\n FORCE_REFRESH = \"1\",\r\n NO_CACHED_ACCESS_TOKEN = \"2\",\r\n CACHED_ACCESS_TOKEN_EXPIRED = \"3\",\r\n REFRESH_CACHED_ACCESS_TOKEN = \"4\",\r\n CLAIMS_REQUESTED_CACHE_SKIPPED = \"5\"\r\n}\r\n\r\nexport enum JsonTypes {\r\n Jwt = \"JWT\",\r\n Jwk = \"JWK\",\r\n Pop = \"pop\"\r\n}\r\n\r\nexport const ONE_DAY_IN_MS = 86400000;\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { OIDC_DEFAULT_SCOPES } from \"@azure/msal-common\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\n\r\n/**\r\n * Constants\r\n */\r\nexport const BrowserConstants = {\r\n /**\r\n * Interaction in progress cache value\r\n */\r\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\r\n /**\r\n * Invalid grant error code\r\n */\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n /**\r\n * Default popup window width\r\n */\r\n POPUP_WIDTH: 483,\r\n /**\r\n * Default popup window height\r\n */\r\n POPUP_HEIGHT: 600,\r\n /**\r\n * Name of the popup window starts with\r\n */\r\n POPUP_NAME_PREFIX: \"msal\",\r\n /**\r\n * Default popup monitor poll interval in milliseconds\r\n */\r\n DEFAULT_POLL_INTERVAL_MS: 30,\r\n /**\r\n * Msal-browser SKU\r\n */\r\n MSAL_SKU: \"msal.js.browser\",\r\n};\r\n\r\nexport const NativeConstants = {\r\n CHANNEL_ID: \"53ee284d-920a-4b59-9d30-a60315b26836\",\r\n PREFERRED_EXTENSION_ID: \"ppnbnpeolgkicgegkbkbjmhlideopiji\",\r\n MATS_TELEMETRY: \"MATS\"\r\n};\r\n\r\nexport enum NativeExtensionMethod {\r\n HandshakeRequest = \"Handshake\",\r\n HandshakeResponse = \"HandshakeResponse\",\r\n GetToken = \"GetToken\",\r\n Response = \"Response\"\r\n}\r\n\r\nexport enum BrowserCacheLocation {\r\n LocalStorage = \"localStorage\",\r\n SessionStorage = \"sessionStorage\",\r\n MemoryStorage = \"memoryStorage\"\r\n}\r\n\r\n/**\r\n * HTTP Request types supported by MSAL.\r\n */\r\nexport enum HTTP_REQUEST_TYPE {\r\n GET = \"GET\",\r\n POST = \"POST\"\r\n}\r\n\r\n/**\r\n * Temporary cache keys for MSAL, deleted after any request.\r\n */\r\nexport enum TemporaryCacheKeys {\r\n AUTHORITY = \"authority\",\r\n ACQUIRE_TOKEN_ACCOUNT = \"acquireToken.account\",\r\n SESSION_STATE = \"session.state\",\r\n REQUEST_STATE = \"request.state\",\r\n NONCE_IDTOKEN = \"nonce.id_token\",\r\n ORIGIN_URI = \"request.origin\",\r\n RENEW_STATUS = \"token.renew.status\",\r\n URL_HASH = \"urlHash\",\r\n REQUEST_PARAMS = \"request.params\",\r\n SCOPES = \"scopes\",\r\n INTERACTION_STATUS_KEY = \"interaction.status\",\r\n CCS_CREDENTIAL = \"ccs.credential\",\r\n CORRELATION_ID = \"request.correlationId\",\r\n NATIVE_REQUEST = \"request.native\",\r\n REDIRECT_CONTEXT = \"request.redirect.context\"\r\n}\r\n\r\nexport enum StaticCacheKeys {\r\n ACCOUNT_KEYS = \"msal.account.keys\",\r\n TOKEN_KEYS = \"msal.token.keys\"\r\n}\r\n\r\n/**\r\n * Cache keys stored in-memory\r\n */\r\nexport enum InMemoryCacheKeys {\r\n WRAPPER_SKU = \"wrapper.sku\",\r\n WRAPPER_VER = \"wrapper.version\"\r\n}\r\n\r\n/**\r\n * API Codes for Telemetry purposes. \r\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\r\n * 0-99 Silent Flow\r\n * 800-899 Auth Code Flow\r\n */\r\nexport enum ApiId {\r\n acquireTokenRedirect = 861,\r\n acquireTokenPopup = 862,\r\n ssoSilent = 863,\r\n acquireTokenSilent_authCode = 864,\r\n handleRedirectPromise = 865,\r\n acquireTokenByCode = 866,\r\n acquireTokenSilent_silentFlow = 61,\r\n logout = 961,\r\n logoutPopup = 962\r\n}\r\n\r\n/*\r\n * Interaction type of the API - used for state and telemetry\r\n */\r\nexport enum InteractionType {\r\n Redirect = \"redirect\",\r\n Popup = \"popup\",\r\n Silent = \"silent\",\r\n None = \"none\"\r\n}\r\n\r\n/**\r\n * Types of interaction currently in progress.\r\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\r\n */\r\nexport enum InteractionStatus {\r\n /**\r\n * Initial status before interaction occurs\r\n */\r\n Startup = \"startup\",\r\n /**\r\n * Status set when all login calls occuring\r\n */\r\n Login = \"login\",\r\n /**\r\n * Status set when logout call occuring\r\n */ \r\n Logout = \"logout\",\r\n /**\r\n * Status set for acquireToken calls\r\n */\r\n AcquireToken = \"acquireToken\",\r\n /**\r\n * Status set for ssoSilent calls\r\n */\r\n SsoSilent = \"ssoSilent\",\r\n /**\r\n * Status set when handleRedirect in progress\r\n */\r\n HandleRedirect = \"handleRedirect\",\r\n /**\r\n * Status set when interaction is complete\r\n */\r\n None = \"none\"\r\n}\r\n\r\nexport const DEFAULT_REQUEST: RedirectRequest|PopupRequest = {\r\n scopes: OIDC_DEFAULT_SCOPES\r\n};\r\n\r\n/**\r\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\r\n */\r\nexport const KEY_FORMAT_JWK = \"jwk\";\r\n\r\n// Supported wrapper SKUs\r\nexport enum WrapperSKU {\r\n React = \"@azure/msal-react\",\r\n Angular = \"@azure/msal-angular\"\r\n}\r\n\r\n// DatabaseStorage Constants\r\nexport const DB_NAME = \"msal.db\";\r\nexport const DB_VERSION = 1;\r\nexport const DB_TABLE_NAME = `${DB_NAME}.keys`;\r\n\r\nexport enum CacheLookupPolicy {\r\n /*\r\n * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired\r\n * or cannot be found the refresh token will be used to acquire a new one. Finally, if the refresh token\r\n * is expired acquireTokenSilent will attempt to acquire new access and refresh tokens.\r\n */\r\n Default = 0, // 0 is falsy, is equivalent to not passing in a CacheLookupPolicy\r\n /*\r\n * acquireTokenSilent will only look for access tokens in the cache. It will not attempt to renew access or\r\n * refresh tokens.\r\n */\r\n AccessToken = 1,\r\n /*\r\n * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired or\r\n * cannot be found, the refresh token will be used to acquire a new one. If the refresh token is expired, it\r\n * will not be renewed and acquireTokenSilent will fail.\r\n */\r\n AccessTokenAndRefreshToken = 2,\r\n /*\r\n * acquireTokenSilent will not attempt to retrieve access tokens from the cache and will instead attempt to\r\n * exchange the cached refresh token for a new access token. If the refresh token is expired, it will not be\r\n * renewed and acquireTokenSilent will fail.\r\n */\r\n RefreshToken = 3,\r\n /*\r\n * acquireTokenSilent will not look in the cache for the access token. It will go directly to network with the\r\n * cached refresh token. If the refresh token is expired an attempt will be made to renew it. This is equivalent to\r\n * setting \"forceRefresh: true\".\r\n */\r\n RefreshTokenAndNetwork = 4,\r\n /*\r\n * acquireTokenSilent will attempt to renew both access and refresh tokens. It will not look in the cache. This will\r\n * always fail if 3rd party cookies are blocked by the browser.\r\n */\r\n Skip = 5,\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const AuthErrorMessage = {\r\n unexpectedError: {\r\n code: \"unexpected_error\",\r\n desc: \"Unexpected error in authentication.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\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.\"\r\n }\r\n};\r\n\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nexport class AuthError extends Error {\r\n\r\n /**\r\n * Short string denoting error\r\n */\r\n errorCode: string;\r\n\r\n /**\r\n * Detailed description of error\r\n */\r\n errorMessage: string;\r\n\r\n /**\r\n * Describes the subclass of an error\r\n */\r\n subError: string;\r\n\r\n /**\r\n * CorrelationId associated with the error\r\n */\r\n correlationId: string;\r\n\r\n constructor(errorCode?: string, errorMessage?: string, suberror?: string) {\r\n const errorString = errorMessage ? `${errorCode}: ${errorMessage}` : errorCode;\r\n super(errorString);\r\n Object.setPrototypeOf(this, AuthError.prototype);\r\n\r\n this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n this.errorMessage = errorMessage || Constants.EMPTY_STRING;\r\n this.subError = suberror || Constants.EMPTY_STRING;\r\n this.name = \"AuthError\";\r\n }\r\n\r\n setCorrelationId(correlationId: string): void {\r\n this.correlationId = correlationId;\r\n }\r\n\r\n /**\r\n * Creates an error that is thrown when something unexpected happens in the library.\r\n * @param errDesc\r\n */\r\n static createUnexpectedError(errDesc: string): AuthError {\r\n return new AuthError(AuthErrorMessage.unexpectedError.code, `${AuthErrorMessage.unexpectedError.desc}: ${errDesc}`);\r\n }\r\n\r\n /**\r\n * Creates an error for post request failures.\r\n * @param errDesc \r\n * @returns \r\n */\r\n static createPostRequestFailed(errDesc: string): AuthError {\r\n return new AuthError(AuthErrorMessage.postRequestFailed.code, `${AuthErrorMessage.postRequestFailed.desc}: ${errDesc}`);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"@azure/msal-common\";\r\n\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const BrowserConfigurationAuthErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n storageNotSupportedError: {\r\n code: \"storage_not_supported\",\r\n desc: \"Given storage configuration option was not supported.\"\r\n },\r\n noRedirectCallbacksSet: {\r\n code: \"no_redirect_callbacks\",\r\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n invalidCallbackObject: {\r\n code: \"invalid_callback_object\",\r\n desc: \"The object passed for the callback was invalid. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n stubPcaInstanceCalled: {\r\n code: \"stubbed_public_client_application_called\",\r\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\"\r\n },\r\n inMemRedirectUnavailable: {\r\n code: \"in_mem_redirect_unavailable\",\r\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.\"\r\n },\r\n entropyNotProvided: {\r\n code: \"entropy_not_provided\",\r\n desc: \"The available browser crypto interface requires entropy set via system.cryptoOptions.entropy configuration option.\"\r\n }\r\n};\r\n\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nexport class BrowserConfigurationAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"BrowserConfigurationAuthError\";\r\n\r\n Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n static createRedirectUriEmptyError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code,\r\n BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n static createPostLogoutRedirectUriEmptyError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code,\r\n BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates error thrown when given storage location is not supported.\r\n * @param givenStorageLocation \r\n */\r\n static createStorageNotSupportedError(givenStorageLocation: string): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, `${BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc} Given Location: ${givenStorageLocation}`);\r\n }\r\n\r\n /**\r\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\r\n */\r\n static createRedirectCallbacksNotSetError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, \r\n BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\r\n }\r\n\r\n /**\r\n * Creates error thrown when the stub instance of PublicClientApplication is called.\r\n */\r\n static createStubPcaInstanceCalledError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code,\r\n BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\r\n }\r\n\r\n /*\r\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\r\n */\r\n static createInMemoryRedirectUnavailableError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\r\n }\r\n \r\n /**\r\n * Creates an error thrown when a crypto interface that requires entropy is initialized without entropy\r\n */\r\n static createEntropyNotProvided(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.entropyNotProvided.code, BrowserConfigurationAuthErrorMessage.entropyNotProvided.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, AccountInfo, Logger, PerformanceCallbackFunction } from \"@azure/msal-common\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { WrapperSKU } from \"../utils/BrowserConstants\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\r\nimport { ITokenCache } from \"../cache/ITokenCache\";\r\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\n\r\nexport interface IPublicClientApplication {\r\n initialize(): Promise;\r\n acquireTokenPopup(request: PopupRequest): Promise;\r\n acquireTokenRedirect(request: RedirectRequest): Promise;\r\n acquireTokenSilent(silentRequest: SilentRequest): Promise;\r\n acquireTokenByCode(request: AuthorizationCodeRequest): Promise;\r\n addEventCallback(callback: Function): string | null;\r\n removeEventCallback(callbackId: string): void;\r\n addPerformanceCallback(callback: PerformanceCallbackFunction): string;\r\n removePerformanceCallback(callbackId: string): boolean;\r\n enableAccountStorageEvents(): void;\r\n disableAccountStorageEvents(): void;\r\n getAccountByHomeId(homeAccountId: string): AccountInfo | null;\r\n getAccountByLocalId(localId: string): AccountInfo | null;\r\n getAccountByUsername(userName: string): AccountInfo | null;\r\n getAllAccounts(): AccountInfo[];\r\n handleRedirectPromise(hash?: string): Promise;\r\n loginPopup(request?: PopupRequest): Promise;\r\n loginRedirect(request?: RedirectRequest): Promise;\r\n logout(logoutRequest?: EndSessionRequest): Promise;\r\n logoutRedirect(logoutRequest?: EndSessionRequest): Promise;\r\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise;\r\n ssoSilent(request: SsoSilentRequest): Promise;\r\n getTokenCache(): ITokenCache;\r\n getLogger(): Logger;\r\n setLogger(logger: Logger): void;\r\n setActiveAccount(account: AccountInfo | null): void;\r\n getActiveAccount(): AccountInfo | null;\r\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void;\r\n setNavigationClient(navigationClient: INavigationClient): void;\r\n getConfiguration(): BrowserConfiguration;\r\n}\r\n\r\nexport const stubbedPublicClientApplication: IPublicClientApplication = {\r\n initialize: () => {\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\r\n },\r\n acquireTokenPopup: () => {\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\r\n },\r\n acquireTokenRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n acquireTokenSilent: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n acquireTokenByCode: () => {\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\r\n },\r\n getAllAccounts: () => {\r\n return [];\t\r\n },\t\r\n getAccountByHomeId: () => {\r\n return null;\r\n },\r\n getAccountByUsername: () => {\t\r\n return null;\t\r\n },\t\r\n getAccountByLocalId: () => {\r\n return null;\r\n },\r\n handleRedirectPromise: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n loginPopup: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n loginRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n logout: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n logoutRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n logoutPopup: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n ssoSilent: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n addEventCallback: () => {\r\n return null;\r\n },\r\n removeEventCallback: () => {\r\n return;\r\n },\r\n addPerformanceCallback: () => {\r\n return \"\";\r\n },\r\n removePerformanceCallback: () => {\r\n return false;\r\n },\r\n enableAccountStorageEvents: () => {\r\n return;\r\n },\r\n disableAccountStorageEvents: () => {\r\n return;\r\n },\r\n getTokenCache: () => {\r\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\r\n },\r\n getLogger: () => {\r\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\r\n },\r\n setLogger: () => {\r\n return;\r\n },\r\n setActiveAccount: () => {\r\n return;\r\n },\r\n getActiveAccount: () => {\r\n return null;\r\n },\r\n initializeWrapperLibrary: () => {\r\n return;\r\n },\r\n setNavigationClient: () => {\r\n return;\r\n },\r\n getConfiguration: () => {\r\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\r\n }\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"./AuthError\";\r\n\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: \"client_info_decoding_error\",\r\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\r\n },\r\n clientInfoEmptyError: {\r\n code: \"client_info_empty_error\",\r\n desc: \"The client info was empty. Please review the trace to determine the root cause.\"\r\n },\r\n tokenParsingError: {\r\n code: \"token_parsing_error\",\r\n desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\r\n },\r\n nullOrEmptyToken: {\r\n code: \"null_or_empty_token\",\r\n desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\r\n },\r\n endpointResolutionError: {\r\n code: \"endpoints_resolution_error\",\r\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\r\n },\r\n networkError: {\r\n code: \"network_error\",\r\n desc: \"Network request failed. Please check network trace to determine root cause.\"\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: \"openid_config_error\",\r\n desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\r\n },\r\n hashNotDeserialized: {\r\n code: \"hash_not_deserialized\",\r\n desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\r\n },\r\n blankGuidGenerated: {\r\n code: \"blank_guid_generated\",\r\n desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\r\n },\r\n invalidStateError: {\r\n code: \"invalid_state\",\r\n desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\r\n },\r\n stateMismatchError: {\r\n code: \"state_mismatch\",\r\n desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\r\n },\r\n stateNotFoundError: {\r\n code: \"state_not_found\",\r\n desc: \"State not found\"\r\n },\r\n nonceMismatchError: {\r\n code: \"nonce_mismatch\",\r\n desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\r\n },\r\n nonceNotFoundError: {\r\n code: \"nonce_not_found\",\r\n desc: \"nonce not found\"\r\n },\r\n authTimeNotFoundError: {\r\n code: \"auth_time_not_found\",\r\n desc: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\r\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\r\n \" See https://aka.ms/msaljs/optional-claims for more information.\"\r\n },\r\n maxAgeTranspiredError: {\r\n code: \"max_age_transpired\",\r\n desc: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\"\r\n },\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\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().\"\r\n },\r\n multipleMatchingTokens: {\r\n code: \"multiple_matching_tokens\",\r\n desc: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\"\r\n },\r\n multipleMatchingAccounts: {\r\n code: \"multiple_matching_accounts\",\r\n desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: \"multiple_matching_appMetadata\",\r\n desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: \"request_cannot_be_made\",\r\n desc: \"Token request cannot be made without authorization code or refresh token.\"\r\n },\r\n appendEmptyScopeError: {\r\n code: \"cannot_append_empty_scope\",\r\n desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n removeEmptyScopeError: {\r\n code: \"cannot_remove_empty_scope\",\r\n desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n appendScopeSetError: {\r\n code: \"cannot_append_scopeset\",\r\n desc: \"Cannot append ScopeSet due to error.\"\r\n },\r\n emptyInputScopeSetError: {\r\n code: \"empty_input_scopeset\",\r\n desc: \"Empty input ScopeSet cannot be processed.\"\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: \"device_code_polling_cancelled\",\r\n desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\r\n },\r\n DeviceCodeExpired: {\r\n code: \"device_code_expired\",\r\n desc: \"Device code is expired.\"\r\n },\r\n DeviceCodeUnknownError: {\r\n code: \"device_code_unknown_error\",\r\n desc: \"Device code stopped polling for unknown reasons.\"\r\n },\r\n NoAccountInSilentRequest: {\r\n code: \"no_account_in_silent_request\",\r\n desc: \"Please pass an account object, silent flow is not supported without account information\"\r\n },\r\n invalidCacheRecord: {\r\n code: \"invalid_cache_record\",\r\n desc: \"Cache record object was null or undefined.\"\r\n },\r\n invalidCacheEnvironment: {\r\n code: \"invalid_cache_environment\",\r\n desc: \"Invalid environment when attempting to create cache entry\"\r\n },\r\n noAccountFound: {\r\n code: \"no_account_found\",\r\n desc: \"No account found in cache for given key.\"\r\n },\r\n CachePluginError: {\r\n code: \"no cache plugin set on CacheManager\",\r\n desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\r\n },\r\n noCryptoObj: {\r\n code: \"no_crypto_object\",\r\n desc: \"No crypto object detected. This is required for the following operation: \"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n unexpectedAccountType: {\r\n code: \"unexpected_account_type\",\r\n desc: \"Unexpected account type.\"\r\n },\r\n unexpectedCredentialType: {\r\n code: \"unexpected_credential_type\",\r\n desc: \"Unexpected credential type.\"\r\n },\r\n invalidAssertion: {\r\n code: \"invalid_assertion\",\r\n desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\r\n },\r\n invalidClientCredential: {\r\n code: \"invalid_client_credential\",\r\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\"\r\n },\r\n tokenRefreshRequired: {\r\n code: \"token_refresh_required\",\r\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.\"\r\n },\r\n userTimeoutReached: {\r\n code: \"user_timeout_reached\",\r\n desc: \"User defined timeout for device code polling reached\",\r\n },\r\n tokenClaimsRequired: {\r\n code: \"token_claims_cnf_required_for_signedjwt\",\r\n desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: \"authorization_code_missing_from_server_response\",\r\n desc: \"Server response does not contain an authorization code to proceed\"\r\n },\r\n noAzureRegionDetected: {\r\n code: \"no_azure_region_detected\",\r\n desc: \"No azure region was detected and no fallback was made available\"\r\n },\r\n accessTokenEntityNullError: {\r\n code: \"access_token_entity_null\",\r\n desc: \"Access token entity is null, please check logs and cache to ensure a valid access token is present.\"\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: \"binding_key_not_removed\",\r\n desc: \"Could not remove the credential's binding key from storage.\"\r\n },\r\n logoutNotSupported: {\r\n code: \"end_session_endpoint_not_supported\",\r\n desc: \"Provided authority does not support logout.\"\r\n },\r\n keyIdMissing: {\r\n code: \"key_id_missing\",\r\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.\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n userCanceledError: {\r\n code: \"user_canceled\",\r\n desc: \"User canceled the flow.\"\r\n }\r\n};\r\n\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nexport class ClientAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"ClientAuthError\";\r\n\r\n Object.setPrototypeOf(this, ClientAuthError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when client info object doesn't decode correctly.\r\n * @param caughtError\r\n */\r\n static createClientInfoDecodingError(caughtError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code,\r\n `${ClientAuthErrorMessage.clientInfoDecodingError.desc} Failed with error: ${caughtError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if the client info is empty.\r\n * @param rawClientInfo\r\n */\r\n static createClientInfoEmptyError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code,\r\n `${ClientAuthErrorMessage.clientInfoEmptyError.desc}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the id token extraction errors out.\r\n * @param err\r\n */\r\n static createTokenParsingError(caughtExtractionError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code,\r\n `${ClientAuthErrorMessage.tokenParsingError.desc} Failed with error: ${caughtExtractionError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the id token string is null or empty.\r\n * @param invalidRawTokenString\r\n */\r\n static createTokenNullOrEmptyError(invalidRawTokenString: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code,\r\n `${ClientAuthErrorMessage.nullOrEmptyToken.desc} Raw Token Value: ${invalidRawTokenString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the endpoint discovery doesn't complete correctly.\r\n */\r\n static createEndpointDiscoveryIncompleteError(errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code,\r\n `${ClientAuthErrorMessage.endpointResolutionError.desc} Detail: ${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the fetch client throws\r\n */\r\n static createNetworkError(endpoint: string, errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.networkError.code,\r\n `${ClientAuthErrorMessage.networkError.desc} | Fetch client threw: ${errDetail} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\r\n */\r\n static createUnableToGetOpenidConfigError(errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code,\r\n `${ClientAuthErrorMessage.unableToGetOpenidConfigError.desc} Attempted to retrieve endpoints from: ${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash cannot be deserialized.\r\n * @param hashParamObj\r\n */\r\n static createHashNotDeserializedError(hashParamObj: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code,\r\n `${ClientAuthErrorMessage.hashNotDeserialized.desc} Given Object: ${hashParamObj}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state cannot be parsed.\r\n * @param invalidState\r\n */\r\n static createInvalidStateError(invalidState: string, errorString?: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code,\r\n `${ClientAuthErrorMessage.invalidStateError.desc} Invalid State: ${invalidState}, Root Err: ${errorString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when two states do not match.\r\n */\r\n static createStateMismatchError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code,\r\n ClientAuthErrorMessage.stateMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state is not present\r\n * @param missingState\r\n */\r\n static createStateNotFoundError(missingState: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code,\r\n `${ClientAuthErrorMessage.stateNotFoundError.desc}: ${missingState}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the nonce does not match.\r\n */\r\n static createNonceMismatchError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code,\r\n ClientAuthErrorMessage.nonceMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when max_age was provided in the request, but auth_time is not in the token claims\r\n * @param missingNonce\r\n */\r\n static createAuthTimeNotFoundError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.authTimeNotFoundError.code,\r\n ClientAuthErrorMessage.authTimeNotFoundError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when too much time has elapsed since the last end-user authentication\r\n */\r\n static createMaxAgeTranspiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.maxAgeTranspiredError.code,\r\n ClientAuthErrorMessage.maxAgeTranspiredError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the mnonce is not present\r\n * @param missingNonce\r\n */\r\n static createNonceNotFoundError(missingNonce: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code,\r\n `${ClientAuthErrorMessage.nonceNotFoundError.desc}: ${missingNonce}`);\r\n }\r\n\r\n /**\r\n * Throws error when multiple tokens are in cache.\r\n */\r\n static createMultipleMatchingTokensInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code,\r\n `${ClientAuthErrorMessage.multipleMatchingTokens.desc}.`);\r\n }\r\n\r\n /**\r\n * Throws error when multiple accounts are in cache for the given params\r\n */\r\n static createMultipleMatchingAccountsInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code,\r\n ClientAuthErrorMessage.multipleMatchingAccounts.desc);\r\n }\r\n\r\n /**\r\n * Throws error when multiple appMetada are in cache for the given clientId.\r\n */\r\n static createMultipleMatchingAppMetadataInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code,\r\n ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\r\n */\r\n static createTokenRequestCannotBeMadeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n static createAppendEmptyScopeToSetError(givenScope: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, `${ClientAuthErrorMessage.appendEmptyScopeError.desc} Given Scope: ${givenScope}`);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n static createRemoveEmptyScopeFromSetError(givenScope: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, `${ClientAuthErrorMessage.removeEmptyScopeError.desc} Given Scope: ${givenScope}`);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append null or empty ScopeSet.\r\n * @param appendError\r\n */\r\n static createAppendScopeSetError(appendError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, `${ClientAuthErrorMessage.appendScopeSetError.desc} Detail Error: ${appendError}`);\r\n }\r\n\r\n /**\r\n * Throws error if ScopeSet is null or undefined.\r\n * @param givenScopeSet\r\n */\r\n static createEmptyInputScopeSetError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, `${ClientAuthErrorMessage.emptyInputScopeSetError.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\r\n */\r\n static createDeviceCodeCancelledError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, `${ClientAuthErrorMessage.DeviceCodePollingCancelled.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n static createDeviceCodeExpiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, `${ClientAuthErrorMessage.DeviceCodeExpired.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n static createDeviceCodeUnknownError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeUnknownError.code, `${ClientAuthErrorMessage.DeviceCodeUnknownError.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error when silent requests are made without an account object\r\n */\r\n static createNoAccountInSilentRequestError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, `${ClientAuthErrorMessage.NoAccountInSilentRequest.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error when cache record is null or undefined.\r\n */\r\n static createNullOrUndefinedCacheRecord(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\r\n }\r\n\r\n /**\r\n * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\r\n */\r\n static createInvalidCacheEnvironmentError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\r\n }\r\n\r\n /**\r\n * Throws error when account is not found in cache.\r\n */\r\n static createNoAccountFoundError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\r\n }\r\n\r\n /**\r\n * Throws error if ICachePlugin not set on CacheManager.\r\n */\r\n static createCachePluginError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, `${ClientAuthErrorMessage.CachePluginError.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if crypto object not found.\r\n * @param operationName\r\n */\r\n static createNoCryptoObjectError(operationName: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, `${ClientAuthErrorMessage.noCryptoObj.desc}${operationName}`);\r\n }\r\n\r\n /**\r\n * Throws error if cache type is invalid.\r\n */\r\n static createInvalidCacheTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, `${ClientAuthErrorMessage.invalidCacheType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if unexpected account type.\r\n */\r\n static createUnexpectedAccountTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, `${ClientAuthErrorMessage.unexpectedAccountType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if unexpected credential type.\r\n */\r\n static createUnexpectedCredentialTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, `${ClientAuthErrorMessage.unexpectedCredentialType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n static createInvalidAssertionError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, `${ClientAuthErrorMessage.invalidAssertion.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n static createInvalidCredentialError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, `${ClientAuthErrorMessage.invalidClientCredential.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if token cannot be retrieved from cache due to refresh being required.\r\n */\r\n static createRefreshRequiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\r\n }\r\n\r\n /**\r\n * Throws error if the user defined timeout is reached.\r\n */\r\n static createUserTimeoutReachedError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\r\n }\r\n\r\n /*\r\n * Throws error if token claims are not populated for a signed jwt generation\r\n */\r\n static createTokenClaimsRequiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\r\n }\r\n\r\n /**\r\n * Throws error when the authorization code is missing from the server response\r\n */\r\n static createNoAuthCodeInServerResponseError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\r\n }\r\n\r\n static createBindingKeyNotRemovedError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.bindingKeyNotRemovedError.code, ClientAuthErrorMessage.bindingKeyNotRemovedError.desc);\r\n }\r\n\r\n /**\r\n * Thrown when logout is attempted for an authority that doesnt have an end_session_endpoint\r\n */\r\n static createLogoutNotSupportedError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.logoutNotSupported.code, ClientAuthErrorMessage.logoutNotSupported.desc);\r\n }\r\n\r\n /**\r\n * Create an error when kid attribute is missing from a PoP token's cache record\r\n */\r\n static createKeyIdMissingError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.keyIdMissing.code, ClientAuthErrorMessage.keyIdMissing.desc);\r\n }\r\n\r\n /**\r\n * Create an error when the client does not have network connectivity\r\n */\r\n static createNoNetworkConnectivityError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noNetworkConnectivity.code, ClientAuthErrorMessage.noNetworkConnectivity.desc);\r\n }\r\n\r\n /**\r\n * Create an error when the user cancels the flow\r\n */\r\n static createUserCanceledError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.userCanceledError.code, ClientAuthErrorMessage.userCanceledError.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { LoggerOptions } from \"../config/ClientConfiguration\";\r\nimport { Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * Options for logger messages.\r\n */\r\nexport type LoggerMessageOptions = {\r\n logLevel: LogLevel,\r\n containsPii?: boolean,\r\n context?: string,\r\n correlationId?: string\r\n};\r\n\r\n/**\r\n * Log message level.\r\n */\r\nexport enum LogLevel {\r\n Error,\r\n Warning,\r\n Info,\r\n Verbose,\r\n Trace\r\n}\r\n\r\n/**\r\n * Callback to send the messages to.\r\n */\r\nexport interface ILoggerCallback {\r\n (level: LogLevel, message: string, containsPii: boolean): void;\r\n}\r\n\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nexport class Logger {\r\n\r\n // Correlation ID for request, usually set by user.\r\n private correlationId: string;\r\n\r\n // Current log level, defaults to info.\r\n private level: LogLevel = LogLevel.Info;\r\n\r\n // Boolean describing whether PII logging is allowed.\r\n private piiLoggingEnabled: boolean;\r\n\r\n // Callback to send messages to.\r\n private localCallback: ILoggerCallback;\r\n\r\n // Package name implementing this logger\r\n private packageName: string;\r\n\r\n // Package version implementing this logger\r\n private packageVersion: string;\r\n\r\n constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string) {\r\n const defaultLoggerCallback = () => {\r\n return;\r\n };\r\n const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\r\n this.localCallback = setLoggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\r\n this.level = typeof(setLoggerOptions.logLevel) === \"number\" ? setLoggerOptions.logLevel : LogLevel.Info;\r\n this.correlationId = setLoggerOptions.correlationId || Constants.EMPTY_STRING;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n \r\n private static createDefaultLoggerOptions(): LoggerOptions {\r\n return {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info\r\n };\r\n }\r\n\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n public clone(packageName: string, packageVersion: string, correlationId?: string): Logger {\r\n return new Logger({loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level, correlationId: correlationId || this.correlationId}, packageName, packageVersion);\r\n }\r\n\r\n /**\r\n * Log message with required options.\r\n */\r\n private logMessage(logMessage: string, options: LoggerMessageOptions): void {\r\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n const timestamp = new Date().toUTCString();\r\n\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n let logHeader: string;\r\n if (!StringUtils.isEmpty(options.correlationId)) {\r\n logHeader = `[${timestamp}] : [${options.correlationId}]`;\r\n } else if (!StringUtils.isEmpty(this.correlationId)) {\r\n logHeader = `[${timestamp}] : [${this.correlationId}]`;\r\n } else {\r\n logHeader = `[${timestamp}]`;\r\n }\r\n\r\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n }\r\n\r\n /**\r\n * Execute callback with message.\r\n */\r\n executeCallback(level: LogLevel, message: string, containsPii: boolean): void {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n }\r\n\r\n /**\r\n * Logs error messages.\r\n */\r\n error(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n errorPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs warning messages.\r\n */\r\n warning(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n warningPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs info messages.\r\n */\r\n info(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n infoPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs verbose messages.\r\n */\r\n verbose(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n verbosePii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs trace messages.\r\n */\r\n trace(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n tracePii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n }\r\n\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n isPiiLoggingEnabled(): boolean {\r\n return this.piiLoggingEnabled || false;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { DecodedAuthToken } from \"../account/DecodedAuthToken\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * @hidden\r\n */\r\nexport class StringUtils {\r\n\r\n /**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\n static decodeAuthToken(authToken: string): DecodedAuthToken {\r\n if (StringUtils.isEmpty(authToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\r\n }\r\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n const matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw ClientAuthError.createTokenParsingError(`Given token is malformed: ${JSON.stringify(authToken)}`);\r\n }\r\n const crackedToken: DecodedAuthToken = {\r\n header: matches[1],\r\n JWSPayload: matches[2],\r\n JWSSig: matches[3]\r\n };\r\n return crackedToken;\r\n }\r\n\r\n /**\r\n * Check if a string is empty.\r\n *\r\n * @param str\r\n */\r\n static isEmpty(str?: string): boolean {\r\n return (typeof str === \"undefined\" || !str || 0 === str.length);\r\n }\r\n\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj \r\n */\r\n static isEmptyObj(strObj?: string): boolean {\r\n if (strObj && !StringUtils.isEmpty(strObj)) {\r\n try {\r\n const obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n } catch (e) {}\r\n }\r\n return true;\r\n }\r\n\r\n static startsWith(str: string, search: string): boolean {\r\n return str.indexOf(search) === 0;\r\n }\r\n\r\n static endsWith(str: string, search: string): boolean {\r\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\r\n }\r\n\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n static queryStringToObject(query: string): T {\r\n const obj: {} = {};\r\n const params = query.split(\"&\");\r\n const decode = (s: string) => decodeURIComponent(s.replace(/\\+/g, \" \"));\r\n params.forEach((pair) => {\r\n if (pair.trim()) {\r\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj as T;\r\n }\r\n\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n static trimArrayEntries(arr: Array): Array {\r\n return arr.map(entry => entry.trim());\r\n }\r\n\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n static removeEmptyStringsFromArray(arr: Array): Array {\r\n return arr.filter(entry => {\r\n return !StringUtils.isEmpty(entry);\r\n });\r\n }\r\n\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n static jsonParseHelper(str: string): T | null {\r\n try {\r\n return JSON.parse(str) as T;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n static matchPattern(pattern: string, input: string): boolean {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n const regex: RegExp = new RegExp(pattern.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\*/g, \"[^ ]*\").replace(/\\?/g, \"\\\\\\?\")); // eslint-disable-line security/detect-non-literal-regexp\r\n\r\n return regex.test(input);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport enum EventType {\r\n INITIALIZE_START = \"msal:initializeStart\",\r\n INITIALIZE_END = \"msal:initializeEnd\",\r\n ACCOUNT_ADDED = \"msal:accountAdded\",\r\n ACCOUNT_REMOVED = \"msal:accountRemoved\",\r\n LOGIN_START = \"msal:loginStart\",\r\n LOGIN_SUCCESS = \"msal:loginSuccess\",\r\n LOGIN_FAILURE = \"msal:loginFailure\",\r\n ACQUIRE_TOKEN_START = \"msal:acquireTokenStart\",\r\n ACQUIRE_TOKEN_SUCCESS = \"msal:acquireTokenSuccess\",\r\n ACQUIRE_TOKEN_FAILURE = \"msal:acquireTokenFailure\",\r\n ACQUIRE_TOKEN_NETWORK_START = \"msal:acquireTokenFromNetworkStart\",\r\n SSO_SILENT_START = \"msal:ssoSilentStart\",\r\n SSO_SILENT_SUCCESS = \"msal:ssoSilentSuccess\",\r\n SSO_SILENT_FAILURE = \"msal:ssoSilentFailure\",\r\n ACQUIRE_TOKEN_BY_CODE_START = \"msal:acquireTokenByCodeStart\",\r\n ACQUIRE_TOKEN_BY_CODE_SUCCESS = \"msal:acquireTokenByCodeSuccess\",\r\n ACQUIRE_TOKEN_BY_CODE_FAILURE = \"msal:acquireTokenByCodeFailure\",\r\n HANDLE_REDIRECT_START = \"msal:handleRedirectStart\",\r\n HANDLE_REDIRECT_END = \"msal:handleRedirectEnd\",\r\n POPUP_OPENED = \"msal:popupOpened\",\r\n LOGOUT_START = \"msal:logoutStart\",\r\n LOGOUT_SUCCESS = \"msal:logoutSuccess\",\r\n LOGOUT_FAILURE = \"msal:logoutFailure\",\r\n LOGOUT_END = \"msal:logoutEnd\",\r\n RESTORE_FROM_BFCACHE = \"msal:restoreFromBFCache\"\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, AuthError, AccountInfo } from \"@azure/msal-common\";\r\nimport { EventType } from \"./EventType\";\r\nimport { InteractionStatus, InteractionType } from \"../utils/BrowserConstants\";\r\nimport { PopupRequest, RedirectRequest, SilentRequest, SsoSilentRequest, EndSessionRequest } from \"..\";\r\n\r\nexport type EventMessage = {\r\n eventType: EventType;\r\n interactionType: InteractionType | null;\r\n payload: EventPayload;\r\n error: EventError;\r\n timestamp: number;\r\n};\r\n\r\nexport type PopupEvent = {\r\n popupWindow: Window;\r\n};\r\n\r\nexport type EventPayload = AccountInfo | PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null;\r\n\r\nexport type EventError = AuthError | Error | null;\r\n\r\nexport type EventCallbackFunction = (message: EventMessage) => void;\r\n\r\nexport class EventMessageUtils {\r\n\r\n /**\r\n * Gets interaction status from event message\r\n * @param message\r\n * @param currentStatus\r\n */\r\n static getInteractionStatusFromEvent(message: EventMessage, currentStatus?: InteractionStatus): InteractionStatus|null {\r\n switch (message.eventType) {\r\n case EventType.LOGIN_START:\r\n return InteractionStatus.Login;\r\n case EventType.SSO_SILENT_START:\r\n return InteractionStatus.SsoSilent;\r\n case EventType.ACQUIRE_TOKEN_START:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n return InteractionStatus.AcquireToken;\r\n }\r\n break;\r\n case EventType.HANDLE_REDIRECT_START:\r\n return InteractionStatus.HandleRedirect;\r\n case EventType.LOGOUT_START:\r\n return InteractionStatus.Logout;\r\n case EventType.SSO_SILENT_SUCCESS:\r\n case EventType.SSO_SILENT_FAILURE:\r\n if (currentStatus && currentStatus !== InteractionStatus.SsoSilent) {\r\n // Prevent this event from clearing any status other than ssoSilent\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.LOGOUT_END:\r\n if (currentStatus && currentStatus !== InteractionStatus.Logout) {\r\n // Prevent this event from clearing any status other than logout\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.HANDLE_REDIRECT_END:\r\n if (currentStatus && currentStatus !== InteractionStatus.HandleRedirect) {\r\n // Prevent this event from clearing any status other than handleRedirect\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.ACQUIRE_TOKEN_SUCCESS:\r\n case EventType.ACQUIRE_TOKEN_FAILURE:\r\n case EventType.RESTORE_FROM_BFCACHE:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n if (currentStatus && currentStatus !== InteractionStatus.Login && currentStatus !== InteractionStatus.AcquireToken) {\r\n // Prevent this event from clearing any status other than login or acquireToken\r\n break;\r\n }\r\n return InteractionStatus.None;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { IPublicClientApplication, stubbedPublicClientApplication, Logger, InteractionStatus, AccountInfo } from \"@azure/msal-browser\";\r\n\r\nexport interface IMsalContext {\r\n instance: IPublicClientApplication;\r\n inProgress: InteractionStatus;\r\n accounts: AccountInfo[];\r\n logger: Logger;\r\n}\r\n\r\n/*\r\n * Stubbed context implementation\r\n * Only used when there is no provider, which is an unsupported scenario\r\n */\r\nconst defaultMsalContext: IMsalContext = {\r\n instance: stubbedPublicClientApplication,\r\n inProgress: InteractionStatus.None,\r\n accounts: [],\r\n logger: new Logger({})\r\n};\r\n\r\nexport const MsalContext = React.createContext(\r\n defaultMsalContext\r\n);\r\nexport const MsalConsumer = MsalContext.Consumer;\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { AccountInfo } from \"@azure/msal-browser\";\r\n\r\ntype FaaCFunction = (args: T) => React.ReactNode;\r\n\r\nexport function getChildrenOrFunction(\r\n children: React.ReactNode | FaaCFunction,\r\n args: T\r\n): React.ReactNode {\r\n if (typeof children === \"function\") {\r\n return children(args);\r\n }\r\n return children;\r\n}\r\n\r\n/*\r\n * Utility types\r\n * Reference: https://github.com/piotrwitek/utility-types\r\n */\r\ntype SetDifference = A extends B ? never : A;\r\ntype SetComplement = SetDifference;\r\nexport type Subtract = Pick>;\r\n\r\n/**\r\n * Helper function to determine whether 2 arrays are equal\r\n * Used to avoid unnecessary state updates\r\n * @param arrayA \r\n * @param arrayB \r\n */\r\nexport function accountArraysAreEqual(arrayA: Array, arrayB: Array): boolean {\r\n if (arrayA.length !== arrayB.length) {\r\n return false;\r\n }\r\n\r\n const comparisonArray = [...arrayB];\r\n\r\n return arrayA.every((elementA) => {\r\n const elementB = comparisonArray.shift();\r\n if (!elementA || !elementB) {\r\n return false;\r\n }\r\n\r\n return (elementA.homeAccountId === elementB.homeAccountId) && \r\n (elementA.localAccountId === elementB.localAccountId) &&\r\n (elementA.username === elementB.username);\r\n });\r\n}\r\n\r\nexport function getAccountByIdentifiers(allAccounts: AccountInfo[], accountIdentifiers: AccountIdentifiers): AccountInfo | null {\r\n if (allAccounts.length > 0 && (accountIdentifiers.homeAccountId || accountIdentifiers.localAccountId || accountIdentifiers.username)) {\r\n const matchedAccounts = allAccounts.filter(accountObj => {\r\n if (accountIdentifiers.username && accountIdentifiers.username.toLowerCase() !== accountObj.username.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountIdentifiers.homeAccountId && accountIdentifiers.homeAccountId.toLowerCase() !== accountObj.homeAccountId.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountIdentifiers.localAccountId && accountIdentifiers.localAccountId.toLowerCase() !== accountObj.localAccountId.toLowerCase()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return matchedAccounts[0] || null;\r\n } else {\r\n return null;\r\n }\r\n}\r\n","/* eslint-disable header/header */\r\nexport const name = \"@azure/msal-react\";\r\nexport const version = \"1.5.9\";\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport React, { useEffect, useReducer, PropsWithChildren, useMemo} from \"react\";\r\nimport {\r\n IPublicClientApplication,\r\n EventMessage,\r\n EventMessageUtils,\r\n InteractionStatus,\r\n Logger,\r\n WrapperSKU,\r\n AccountInfo\r\n} from \"@azure/msal-browser\";\r\nimport { MsalContext, IMsalContext } from \"./MsalContext\";\r\nimport { accountArraysAreEqual } from \"./utils/utilities\";\r\nimport { name as SKU, version } from \"./packageMetadata\";\r\n\r\nexport type MsalProviderProps = PropsWithChildren<{\r\n instance: IPublicClientApplication;\r\n}>;\r\n\r\ntype MsalState = {\r\n inProgress: InteractionStatus;\r\n accounts: AccountInfo[];\r\n};\r\n\r\nenum MsalProviderActionType {\r\n UNBLOCK_INPROGRESS = \"UNBLOCK_INPROGRESS\",\r\n EVENT = \"EVENT\"\r\n}\r\n\r\ntype MsalProviderReducerAction = {\r\n type: MsalProviderActionType,\r\n payload: {\r\n logger: Logger;\r\n instance: IPublicClientApplication;\r\n message?: EventMessage;\r\n };\r\n};\r\n\r\n/**\r\n * Returns the next inProgress and accounts state based on event message\r\n * @param previousState \r\n * @param action \r\n */\r\nconst reducer = (previousState: MsalState, action: MsalProviderReducerAction): MsalState => {\r\n const { type, payload } = action;\r\n let newInProgress = previousState.inProgress;\r\n\r\n switch (type) {\r\n case MsalProviderActionType.UNBLOCK_INPROGRESS:\r\n if (previousState.inProgress === InteractionStatus.Startup){\r\n newInProgress = InteractionStatus.None;\r\n payload.logger.info(\"MsalProvider - handleRedirectPromise resolved, setting inProgress to 'none'\");\r\n }\r\n break;\r\n case MsalProviderActionType.EVENT:\r\n const message = payload.message as EventMessage;\r\n const status = EventMessageUtils.getInteractionStatusFromEvent(message, previousState.inProgress);\r\n if (status) {\r\n payload.logger.info(`MsalProvider - ${message.eventType} results in setting inProgress from ${previousState.inProgress} to ${status}`);\r\n newInProgress = status;\r\n }\r\n break;\r\n default:\r\n throw new Error(`Unknown action type: ${type}`);\r\n }\r\n \r\n const currentAccounts = payload.instance.getAllAccounts();\r\n if (newInProgress !== previousState.inProgress && \r\n !accountArraysAreEqual(currentAccounts, previousState.accounts)) {\r\n // Both inProgress and accounts changed\r\n return {\r\n ...previousState,\r\n inProgress: newInProgress,\r\n accounts: currentAccounts\r\n };\r\n } else if (newInProgress !== previousState.inProgress) {\r\n // Only only inProgress changed\r\n return {\r\n ...previousState,\r\n inProgress: newInProgress\r\n };\r\n } else if (!accountArraysAreEqual(currentAccounts, previousState.accounts)) {\r\n // Only accounts changed\r\n return {\r\n ...previousState,\r\n accounts: currentAccounts\r\n };\r\n } else {\r\n // Nothing changed\r\n return previousState;\r\n }\r\n};\r\n\r\n/**\r\n * MSAL context provider component. This must be rendered above any other components that use MSAL.\r\n */\r\nexport function MsalProvider({instance, children}: MsalProviderProps): React.ReactElement {\r\n useEffect(() => {\r\n instance.initializeWrapperLibrary(WrapperSKU.React, version);\r\n }, [instance]);\r\n // Create a logger instance for msal-react with the same options as PublicClientApplication\r\n const logger = useMemo(() => {\r\n return instance.getLogger().clone(SKU, version);\r\n }, [instance]);\r\n\r\n const [state, updateState] = useReducer(reducer, undefined, () => {\r\n // Lazy initialization of the initial state\r\n return {\r\n inProgress: InteractionStatus.Startup,\r\n accounts: instance.getAllAccounts()\r\n };\r\n });\r\n \r\n useEffect(() => {\r\n const callbackId = instance.addEventCallback((message: EventMessage) => {\r\n updateState({\r\n payload: {\r\n instance,\r\n logger,\r\n message\r\n }, \r\n type: MsalProviderActionType.EVENT\r\n });\r\n });\r\n logger.verbose(`MsalProvider - Registered event callback with id: ${callbackId}`);\r\n\r\n instance.initialize().then(() => {\r\n instance.handleRedirectPromise().catch(() => {\r\n // Errors should be handled by listening to the LOGIN_FAILURE event\r\n return;\r\n }).finally(() => {\r\n /*\r\n * If handleRedirectPromise returns a cached promise the necessary events may not be fired\r\n * This is a fallback to prevent inProgress from getting stuck in 'startup'\r\n */\r\n updateState({\r\n payload: {\r\n instance,\r\n logger\r\n },\r\n type: MsalProviderActionType.UNBLOCK_INPROGRESS \r\n });\r\n });\r\n });\r\n\r\n return () => {\r\n // Remove callback when component unmounts or accounts change\r\n if (callbackId) {\r\n logger.verbose(`MsalProvider - Removing event callback ${callbackId}`);\r\n instance.removeEventCallback(callbackId);\r\n }\r\n };\r\n }, [instance, logger]);\r\n\r\n const contextValue: IMsalContext = {\r\n instance,\r\n inProgress: state.inProgress,\r\n accounts: state.accounts,\r\n logger\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useContext } from \"react\";\r\nimport { IMsalContext, MsalContext } from \"../MsalContext\";\r\n\r\n/**\r\n * Returns Msal Context values\r\n */\r\nexport const useMsal = (): IMsalContext => useContext(MsalContext);\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { useMsal } from \"./useMsal\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { AccountInfo, InteractionStatus } from \"@azure/msal-browser\";\r\nimport { getAccountByIdentifiers } from \"../utils/utilities\";\r\n\r\nfunction isAuthenticated(allAccounts: AccountInfo[], matchAccount?: AccountIdentifiers): boolean {\r\n if(matchAccount && (matchAccount.username || matchAccount.homeAccountId || matchAccount.localAccountId)) {\r\n return !!getAccountByIdentifiers(allAccounts, matchAccount);\r\n } \r\n\r\n return allAccounts.length > 0;\r\n}\r\n\r\n/**\r\n * Returns whether or not a user is currently signed-in. Optionally provide 1 or more accountIdentifiers to determine if a specific user is signed-in\r\n * @param matchAccount \r\n */\r\nexport function useIsAuthenticated(matchAccount?: AccountIdentifiers): boolean {\r\n const { accounts: allAccounts, inProgress } = useMsal();\r\n\r\n const [hasAuthenticated, setHasAuthenticated] = useState(() => {\r\n if (inProgress === InteractionStatus.Startup) {\r\n return false;\r\n }\r\n return isAuthenticated(allAccounts, matchAccount);\r\n });\r\n\r\n useEffect(() => {\r\n setHasAuthenticated(isAuthenticated(allAccounts, matchAccount));\r\n }, [allAccounts, matchAccount]);\r\n\r\n return hasAuthenticated;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport React from \"react\";\r\nimport { IMsalContext } from \"../MsalContext\";\r\nimport { useMsal } from \"../hooks/useMsal\";\r\nimport { Subtract } from \"../utils/utilities\";\r\n\r\nexport type WithMsalProps = {\r\n msalContext: IMsalContext;\r\n};\r\n\r\n/**\r\n * Higher order component wraps provided component with msal by injecting msal context values into the component's props \r\n * @param Component \r\n */\r\nexport const withMsal =

(Component: React.ComponentType

): React.FunctionComponent> => {\r\n const ComponentWithMsal: React.FunctionComponent> = props => {\r\n const msal = useMsal();\r\n return ;\r\n };\r\n\r\n const componentName =\r\n Component.displayName || Component.name || \"Component\";\r\n ComponentWithMsal.displayName = `withMsal(${componentName})`;\r\n\r\n return ComponentWithMsal;\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum PerformanceEvents {\r\n\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n AcquireTokenByCode = \"acquireTokenByCode\",\r\n\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n AcquireTokenByRefreshToken = \"acquireTokenByRefreshToken\",\r\n\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n AcquireTokenSilent = \"acquireTokenSilent\",\r\n\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n AcquireTokenSilentAsync = \"acquireTokenSilentAsync\",\r\n\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n AcquireTokenPopup = \"acquireTokenPopup\",\r\n\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n CryptoOptsGetPublicKeyThumbprint = \"cryptoOptsGetPublicKeyThumbprint\",\r\n\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n CryptoOptsSignJwt = \"cryptoOptsSignJwt\",\r\n\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n SilentCacheClientAcquireToken = \"silentCacheClientAcquireToken\",\r\n\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n SilentIframeClientAcquireToken = \"silentIframeClientAcquireToken\",\r\n\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n SilentRefreshClientAcquireToken = \"silentRefreshClientAcquireToken\",\r\n\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n SsoSilent = \"ssoSilent\",\r\n\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n StandardInteractionClientGetDiscoveredAuthority = \"standardInteractionClientGetDiscoveredAuthority\",\r\n\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n FetchAccountIdWithNativeBroker = \"fetchAccountIdWithNativeBroker\",\r\n\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n NativeInteractionClientAcquireToken = \"nativeInteractionClientAcquireToken\",\r\n /**\r\n * Time spent creating default headers for requests to token endpoint\r\n */\r\n BaseClientCreateTokenRequestHeaders = \"baseClientCreateTokenRequestHeaders\",\r\n /**\r\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\r\n */\r\n BrokerHandhshake = \"brokerHandshake\",\r\n /**\r\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\r\n */\r\n AcquireTokenByRefreshTokenInBroker = \"acquireTokenByRefreshTokenInBroker\",\r\n /**\r\n * Time taken for token acquisition by broker\r\n */\r\n AcquireTokenByBroker = \"acquireTokenByBroker\",\r\n\r\n /**\r\n * Time spent on the network for refresh token acquisition\r\n */\r\n RefreshTokenClientExecuteTokenRequest = \"refreshTokenClientExecuteTokenRequest\",\r\n\r\n /**\r\n * Time taken for acquiring refresh token , records RT size\r\n */\r\n RefreshTokenClientAcquireToken = \"refreshTokenClientAcquireToken\",\r\n\r\n /**\r\n * Time taken for acquiring cached refresh token\r\n */\r\n RefreshTokenClientAcquireTokenWithCachedRefreshToken = \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\r\n\r\n /**\r\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientAcquireTokenByRefreshToken = \"refreshTokenClientAcquireTokenByRefreshToken\",\r\n\r\n /**\r\n * Helper function to create token request body in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientCreateTokenRequestBody = \"refreshTokenClientCreateTokenRequestBody\",\r\n\r\n /**\r\n * acquireTokenFromCache (msal-browser).\r\n * Internal API for acquiring token from cache\r\n */\r\n AcquireTokenFromCache = \"acquireTokenFromCache\",\r\n\r\n /**\r\n * acquireTokenBySilentIframe (msal-browser).\r\n * Internal API for acquiring token by silent Iframe\r\n */\r\n AcquireTokenBySilentIframe = \"acquireTokenBySilentIframe\",\r\n\r\n /**\r\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\r\n */\r\n InitializeBaseRequest = \"initializeBaseRequest\",\r\n\r\n /**\r\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\r\n */\r\n InitializeSilentRequest = \"initializeSilentRequest\",\r\n\r\n InitializeClientApplication = \"initializeClientApplication\",\r\n\r\n /**\r\n * Helper function in SilentIframeClient class (msal-browser).\r\n */\r\n SilentIframeClientTokenHelper = \"silentIframeClientTokenHelper\",\r\n\r\n /**\r\n * SilentHandler\r\n */\r\n SilentHandlerInitiateAuthRequest = \"silentHandlerInitiateAuthRequest\",\r\n SilentHandlerMonitorIframeForHash = \"silentHandlerMonitorIframeForHash\",\r\n SilentHandlerLoadFrame = \"silentHandlerLoadFrame\",\r\n\r\n /**\r\n * Helper functions in StandardInteractionClient class (msal-browser)\r\n */\r\n StandardInteractionClientCreateAuthCodeClient = \"standardInteractionClientCreateAuthCodeClient\",\r\n StandardInteractionClientGetClientConfiguration = \"standardInteractionClientGetClientConfiguration\",\r\n StandardInteractionClientInitializeAuthorizationRequest = \"standardInteractionClientInitializeAuthorizationRequest\",\r\n StandardInteractionClientInitializeAuthorizationCodeRequest = \"standardInteractionClientInitializeAuthorizationCodeRequest\",\r\n\r\n /**\r\n * getAuthCodeUrl API (msal-browser and msal-node).\r\n */\r\n GetAuthCodeUrl = \"getAuthCodeUrl\",\r\n\r\n /**\r\n * Functions from InteractionHandler (msal-browser)\r\n */\r\n HandleCodeResponseFromServer = \"handleCodeResponseFromServer\",\r\n HandleCodeResponseFromHash = \"handleCodeResponseFromHash\",\r\n UpdateTokenEndpointAuthority = \"updateTokenEndpointAuthority\",\r\n\r\n /**\r\n * APIs in Authorization Code Client (msal-common)\r\n */\r\n AuthClientAcquireToken = \"authClientAcquireToken\",\r\n AuthClientExecuteTokenRequest = \"authClientExecuteTokenRequest\",\r\n AuthClientCreateTokenRequestBody = \"authClientCreateTokenRequestBody\",\r\n AuthClientCreateQueryString = \"authClientCreateQueryString\",\r\n\r\n /**\r\n * Generate functions in PopTokenGenerator (msal-common)\r\n */\r\n PopTokenGenerateCnf = \"popTokenGenerateCnf\",\r\n PopTokenGenerateKid = \"popTokenGenerateKid\",\r\n\r\n /**\r\n * handleServerTokenResponse API in ResponseHandler (msal-common)\r\n */\r\n HandleServerTokenResponse = \"handleServerTokenResponse\",\r\n\r\n /**\r\n * Authority functions\r\n */\r\n AuthorityFactoryCreateDiscoveredInstance = \"authorityFactoryCreateDiscoveredInstance\",\r\n AuthorityResolveEndpointsAsync = \"authorityResolveEndpointsAsync\",\r\n AuthorityGetCloudDiscoveryMetadataFromNetwork = \"authorityGetCloudDiscoveryMetadataFromNetwork\",\r\n AuthorityUpdateCloudDiscoveryMetadata = \"authorityUpdateCloudDiscoveryMetadata\",\r\n AuthorityGetEndpointMetadataFromNetwork = \"authorityGetEndpointMetadataFromNetwork\",\r\n AuthorityUpdateEndpointMetadata = \"authorityUpdateEndpointMetadata\",\r\n AuthorityUpdateMetadataWithRegionalInformation = \"authorityUpdateMetadataWithRegionalInformation\",\r\n\r\n /**\r\n * Region Discovery functions\r\n */\r\n RegionDiscoveryDetectRegion = \"regionDiscoveryDetectRegion\",\r\n RegionDiscoveryGetRegionFromIMDS = \"regionDiscoveryGetRegionFromIMDS\",\r\n RegionDiscoveryGetCurrentVersion = \"regionDiscoveryGetCurrentVersion\",\r\n\r\n AcquireTokenByCodeAsync = \"acquireTokenByCodeAsync\",\r\n\r\n GetEndpointMetadataFromNetwork = \"getEndpointMetadataFromNetwork\",\r\n GetCloudDiscoveryMetadataFromNetworkMeasurement = \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\r\n\r\n HandleRedirectPromiseMeasurement= \"handleRedirectPromiseMeasurement\",\r\n\r\n UpdateCloudDiscoveryMetadataMeasurement = \"updateCloudDiscoveryMetadataMeasurement\",\r\n\r\n UsernamePasswordClientAcquireToken = \"usernamePasswordClientAcquireToken\",\r\n\r\n NativeMessageHandlerHandshake = \"nativeMessageHandlerHandshake\",\r\n}\r\n\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum PerformanceEventStatus {\r\n NotStarted,\r\n InProgress,\r\n Completed\r\n}\r\n\r\n/**\r\n * Fields whose value will not change throughout a request\r\n */\r\nexport type StaticFields = {\r\n /**\r\n * The Silent Token Cache Lookup Policy\r\n *\r\n * @type {?(number | undefined)}\r\n */\r\n cacheLookupPolicy?: number | undefined,\r\n\r\n /**\r\n * Size of the id token\r\n *\r\n * @type {number}\r\n */\r\n idTokenSize?: number,\r\n\r\n /**\r\n *\r\n * Size of the access token\r\n *\r\n * @type {number}\r\n */\r\n\r\n accessTokenSize?: number,\r\n\r\n /**\r\n *\r\n * Size of the refresh token\r\n *\r\n * @type {number}\r\n */\r\n\r\n refreshTokenSize?: number | undefined,\r\n\r\n /**\r\n * Application name as specified by the app.\r\n *\r\n * @type {?string}\r\n */\r\n appName?: string,\r\n\r\n /**\r\n * Application version as specified by the app.\r\n *\r\n * @type {?string}\r\n */\r\n appVersion?: string,\r\n\r\n /**\r\n * The following are fields that may be emitted in native broker scenarios\r\n */\r\n extensionId?: string,\r\n extensionVersion?: string\r\n matsBrokerVersion?: string;\r\n matsAccountJoinOnStart?: string;\r\n matsAccountJoinOnEnd?: string;\r\n matsDeviceJoin?: string;\r\n matsPromptBehavior?: string;\r\n matsApiErrorCode?: number;\r\n matsUiVisible?: boolean;\r\n matsSilentCode?: number;\r\n matsSilentBiSubCode?: number;\r\n matsSilentMessage?: string;\r\n matsSilentStatus?: number;\r\n matsHttpStatus?: number\r\n matsHttpEventCount?: number;\r\n httpVerToken?: string;\r\n httpVerAuthority?: string;\r\n\r\n /**\r\n * Native broker fields\r\n */\r\n allowNativeBroker?: boolean;\r\n extensionInstalled?: boolean;\r\n extensionHandshakeTimeoutMs?: number;\r\n extensionHandshakeTimedOut?: boolean;\r\n};\r\n\r\n/**\r\n * Fields whose value may change throughout a request\r\n */\r\nexport type Counters = {\r\n visibilityChangeCount?: number;\r\n incompleteSubsCount?: number;\r\n /**\r\n * Amount of times queued in the JS event queue.\r\n *\r\n * @type {?number}\r\n */\r\n queuedCount?: number\r\n /**\r\n * Amount of manually completed queue events.\r\n *\r\n * @type {?number}\r\n */\r\n queuedManuallyCompletedCount?: number;\r\n};\r\n\r\nexport type SubMeasurement = {\r\n name: PerformanceEvents,\r\n startTimeMs: number\r\n};\r\n\r\n/**\r\n * Performance measurement taken by the library, including metadata about the request and application.\r\n *\r\n * @export\r\n * @typedef {PerformanceEvent}\r\n */\r\nexport type PerformanceEvent = StaticFields & Counters & {\r\n /**\r\n * Unique id for the event\r\n *\r\n * @type {string}\r\n */\r\n eventId: string,\r\n\r\n /**\r\n * State of the perforance measure.\r\n *\r\n * @type {PerformanceEventStatus}\r\n */\r\n status: PerformanceEventStatus,\r\n\r\n /**\r\n * Login authority used for the request\r\n *\r\n * @type {string}\r\n */\r\n authority: string,\r\n\r\n /**\r\n * Client id for the application\r\n *\r\n * @type {string}\r\n */\r\n clientId: string\r\n\r\n /**\r\n * Correlation ID used for the request\r\n *\r\n * @type {string}\r\n */\r\n correlationId: string,\r\n\r\n /**\r\n * End-to-end duration in milliseconds.\r\n * @date 3/22/2022 - 3:40:05 PM\r\n *\r\n * @type {number}\r\n */\r\n durationMs?: number,\r\n\r\n /**\r\n * Visibility of the page when the event completed.\r\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\r\n *\r\n * @type {?(string | null)}\r\n */\r\n endPageVisibility?: string | null,\r\n\r\n /**\r\n * Whether the result was retrieved from the cache.\r\n *\r\n * @type {(boolean | null)}\r\n */\r\n fromCache?: boolean | null,\r\n\r\n /**\r\n * Event name (usually in the form of classNameFunctionName)\r\n *\r\n * @type {PerformanceEvents}\r\n */\r\n name: PerformanceEvents,\r\n\r\n /**\r\n * Visibility of the page when the event completed.\r\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\r\n *\r\n * @type {?(string | null)}\r\n */\r\n startPageVisibility?: string | null,\r\n\r\n /**\r\n * Unix millisecond timestamp when the event was initiated.\r\n *\r\n * @type {number}\r\n */\r\n startTimeMs: number,\r\n\r\n /**\r\n * Whether or the operation completed successfully.\r\n *\r\n * @type {(boolean | null)}\r\n */\r\n success?: boolean | null,\r\n\r\n /**\r\n * Add specific error code in case of failure\r\n *\r\n * @type {string}\r\n */\r\n errorCode?: string,\r\n\r\n /**\r\n * Add specific sub error code in case of failure\r\n *\r\n * @type {string}\r\n */\r\n subErrorCode?: string,\r\n\r\n /**\r\n * Name of the library used for the operation.\r\n *\r\n * @type {string}\r\n */\r\n libraryName: string,\r\n\r\n /**\r\n * Version of the library used for the operation.\r\n *\r\n * @type {string}\r\n */\r\n libraryVersion: string,\r\n\r\n /**\r\n * Whether the response is from a native component (e.g., WAM)\r\n *\r\n * @type {?boolean}\r\n */\r\n isNativeBroker?: boolean,\r\n\r\n /**\r\n * Request ID returned from the response\r\n *\r\n * @type {?string}\r\n */\r\n requestId?: string\r\n\r\n /**\r\n * Cache lookup policy\r\n *\r\n * @type {?number}\r\n */\r\n cacheLookupPolicy?: number | undefined,\r\n\r\n /**\r\n * Amount of time spent in the JS queue in milliseconds.\r\n *\r\n * @type {?number}\r\n */\r\n queuedTimeMs?: number,\r\n\r\n /**\r\n * Sub-measurements for internal use. To be deleted before flushing.\r\n */\r\n incompleteSubMeasurements?: Map\r\n};\r\n\r\nexport const IntFields: ReadonlySet = new Set([\r\n \"accessTokenSize\",\r\n \"durationMs\",\r\n \"idTokenSize\",\r\n \"matsSilentStatus\",\r\n \"matsHttpStatus\",\r\n \"refreshTokenSize\",\r\n \"queuedTimeMs\",\r\n \"startTimeMs\",\r\n \"status\",\r\n]);\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Logger } from \"@azure/msal-common\";\r\nimport { CachedKeyPair } from \"../crypto/CryptoOps\";\r\nimport { AsyncMemoryStorage } from \"./AsyncMemoryStorage\";\r\n\r\nexport enum CryptoKeyStoreNames {\r\n asymmetricKeys = \"asymmetricKeys\",\r\n symmetricKeys = \"symmetricKeys\"\r\n}\r\n/**\r\n * MSAL CryptoKeyStore DB Version 2\r\n */\r\nexport class CryptoKeyStore {\r\n public asymmetricKeys: AsyncMemoryStorage;\r\n public symmetricKeys: AsyncMemoryStorage;\r\n public logger: Logger;\r\n\r\n constructor(logger: Logger){\r\n this.logger = logger;\r\n this.asymmetricKeys = new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.asymmetricKeys);\r\n this.symmetricKeys = new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.symmetricKeys);\r\n }\r\n\r\n async clear(): Promise {\r\n // Delete in-memory keystores\r\n this.asymmetricKeys.clearInMemory();\r\n\t this.symmetricKeys.clearInMemory();\r\n\t\t\r\n /**\r\n * There is only one database, so calling clearPersistent on asymmetric keystore takes care of\r\n * every persistent keystore\r\n */\r\n try {\r\n await this.asymmetricKeys.clearPersistent();\r\n return true;\r\n } catch (e) {\r\n if (e instanceof Error) {\r\n this.logger.error(`Clearing keystore failed with error: ${e.message}`);\r\n } else {\r\n this.logger.error(\"Clearing keystore failed with unknown error\");\r\n }\r\n \r\n return false;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"./AuthError\";\r\n\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nexport class ServerError extends AuthError {\r\n\r\n constructor(errorCode?: string, errorMessage?: string, subError?: string) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"ServerError\";\r\n\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"../utils/Constants\";\r\nimport { AuthError } from \"./AuthError\";\r\n\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nexport const InteractionRequiredServerErrorMessage = [\r\n \"interaction_required\",\r\n \"consent_required\",\r\n \"login_required\"\r\n];\r\n\r\nexport const InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\"\r\n];\r\n\r\n/**\r\n * Interaction required errors defined by the SDK\r\n */\r\nexport const InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No refresh token found in the cache. Please sign-in.\"\r\n },\r\n native_account_unavailable: {\r\n code: \"native_account_unavailable\",\r\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.\"\r\n }\r\n};\r\n\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nexport class InteractionRequiredAuthError extends AuthError {\r\n /**\r\n * The time the error occured at\r\n */\r\n timestamp: string;\r\n\r\n /**\r\n * TraceId associated with the error\r\n */\r\n traceId: string;\r\n\r\n /**\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/claims-challenge.md\r\n * \r\n * A string with extra claims needed for the token request to succeed\r\n * web site: redirect the user to the authorization page and set the extra claims\r\n * web api: include the claims in the WWW-Authenticate header that are sent back to the client so that it knows to request a token with the extra claims\r\n * desktop application or browser context: include the claims when acquiring the token interactively\r\n * app to app context (client_credentials): include the claims in the AcquireTokenByClientCredential request\r\n */\r\n claims: string;\r\n\r\n constructor(errorCode?: string, errorMessage?: string, subError?: string, timestamp?: string, traceId?: string, correlationId?: string, claims?: string) {\r\n super(errorCode, errorMessage, subError);\r\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\r\n \r\n this.timestamp = timestamp || Constants.EMPTY_STRING;\r\n this.traceId = traceId || Constants.EMPTY_STRING;\r\n this.correlationId = correlationId || Constants.EMPTY_STRING;\r\n this.claims = claims || Constants.EMPTY_STRING;\r\n this.name = \"InteractionRequiredAuthError\";\r\n }\r\n\r\n /**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode \r\n * @param errorString \r\n * @param subError \r\n */\r\n static isInteractionRequiredError(errorCode?: string, errorString?: string, subError?: string): boolean {\r\n const isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n const isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n const isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredServerErrorMessage.some((irErrorCode) => {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n\r\n return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the authorization code required for a token request is null or empty.\r\n */\r\n static createNoTokensFoundError(): InteractionRequiredAuthError {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.noTokensFoundError.code, InteractionRequiredAuthErrorMessage.noTokensFoundError.desc);\r\n }\r\n\r\n /**\r\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\r\n * @returns \r\n */\r\n static createNativeAccountUnavailableError(): InteractionRequiredAuthError {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.native_account_unavailable.code, InteractionRequiredAuthErrorMessage.native_account_unavailable.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"./AuthError\";\r\n\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const JoseHeaderErrorMessage = {\r\n missingKidError: {\r\n code: \"missing_kid_error\",\r\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.\"\r\n },\r\n missingAlgError: {\r\n code: \"missing_alg_error\",\r\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.\"\r\n },\r\n};\r\n\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nexport class JoseHeaderError extends AuthError {\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"JoseHeaderError\";\r\n\r\n Object.setPrototypeOf(this, JoseHeaderError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when keyId isn't set on JOSE header.\r\n */\r\n static createMissingKidError(): JoseHeaderError {\r\n return new JoseHeaderError(JoseHeaderErrorMessage.missingKidError.code, JoseHeaderErrorMessage.missingKidError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when algorithm isn't set on JOSE header.\r\n */\r\n static createMissingAlgError(): JoseHeaderError {\r\n return new JoseHeaderError(JoseHeaderErrorMessage.missingAlgError.code, JoseHeaderErrorMessage.missingAlgError.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { JoseHeaderError } from \"../error/JoseHeaderError\";\r\nimport { JsonTypes } from \"../utils/Constants\";\r\n\r\nexport type JoseHeaderOptions = {\r\n typ?: JsonTypes,\r\n alg?: string,\r\n kid?: string\r\n};\r\n\r\nexport class JoseHeader {\r\n public typ?: JsonTypes;\r\n public alg?: string;\r\n public kid?: string;\r\n\r\n constructor (options: JoseHeaderOptions) {\r\n this.typ = options.typ;\r\n this.alg = options.alg;\r\n this.kid = options.kid;\r\n }\r\n\r\n /**\r\n * Builds SignedHttpRequest formatted JOSE Header from the\r\n * JOSE Header options provided or previously set on the object and returns\r\n * the stringified header object.\r\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\r\n * @param shrHeaderOptions \r\n * @returns \r\n */\r\n static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string {\r\n // KeyID is required on the SHR header\r\n if (!shrHeaderOptions.kid) {\r\n throw JoseHeaderError.createMissingKidError();\r\n }\r\n\r\n // Alg is required on the SHR header\r\n if (!shrHeaderOptions.alg) {\r\n throw JoseHeaderError.createMissingAlgError();\r\n }\r\n\r\n const shrHeader = new JoseHeader({\r\n // Access Token PoP headers must have type pop, but the type header can be overriden for special cases\r\n typ: shrHeaderOptions.typ || JsonTypes.Pop,\r\n kid: shrHeaderOptions.kid,\r\n alg: shrHeaderOptions.alg\r\n });\r\n\r\n return JSON.stringify(shrHeader);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility class for math specific functions in browser.\r\n */\r\nexport class MathUtils {\r\n\r\n /**\r\n * Decimal to Hex\r\n *\r\n * @param num\r\n */\r\n static decimalToHex(num: number): string {\r\n let hex: string = num.toString(16);\r\n while (hex.length < 2) {\r\n hex = \"0\" + hex;\r\n }\r\n return hex;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants , IGuidGenerator } from \"@azure/msal-common\";\r\nimport { MathUtils } from \"../utils/MathUtils\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\nexport class GuidGenerator implements IGuidGenerator {\r\n\r\n // browser crypto object used to generate random values\r\n private cryptoObj: BrowserCrypto;\r\n\r\n constructor(cryptoObj: BrowserCrypto) {\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n /*\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\r\n * pseudo-random numbers.\r\n * The algorithm is as follows:\r\n * Set the two most significant bits (bits 6 and 7) of the\r\n * clock_seq_hi_and_reserved to zero and one, respectively.\r\n * Set the four most significant bits (bits 12 through 15) of the\r\n * time_hi_and_version field to the 4-bit version number from\r\n * Section 4.1.3. Version4\r\n * Set all the other bits to randomly (or pseudo-randomly) chosen\r\n * values.\r\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\r\n * time-low = 4hexOctet\r\n * time-mid = 2hexOctet\r\n * time-high-and-version = 2hexOctet\r\n * clock-seq-and-reserved = hexOctet:\r\n * clock-seq-low = hexOctet\r\n * node = 6hexOctet\r\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\r\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\r\n * y values are 8, 9, A, B\r\n */\r\n generateGuid(): string {\r\n try {\r\n const buffer: Uint8Array = new Uint8Array(16);\r\n this.cryptoObj.getRandomValues(buffer);\r\n\r\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).\r\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\r\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\r\n\r\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.\r\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\r\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\r\n\r\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\r\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\r\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\r\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\r\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\r\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\r\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\r\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\r\n }\r\n catch (err) {\r\n const guidHolder: string = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\r\n const hex: string = \"0123456789abcdef\";\r\n let r: number = 0;\r\n let guidResponse: string = Constants.EMPTY_STRING;\r\n for (let i: number = 0; i < 36; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = Math.random() * 16 | 0;\r\n }\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n } else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n } else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n }\r\n }\r\n\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n isGuid(guid: string): boolean {\r\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;\r\n return regexGuid.test(guid);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"@azure/msal-common\";\r\n\r\n/**\r\n * Utility functions for strings in a browser. See here for implementation details:\r\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\r\n */\r\nexport class BrowserStringUtils {\r\n\r\n /**\r\n * Converts string to Uint8Array\r\n * @param sDOMStr \r\n */\r\n static stringToUtf8Arr (sDOMStr: string): Uint8Array {\r\n let nChr;\r\n let nArrLen = 0;\r\n const nStrLen = sDOMStr.length;\r\n /* mapping... */\r\n for (let nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\r\n nChr = sDOMStr.charCodeAt(nMapIdx);\r\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\r\n }\r\n\r\n const aBytes = new Uint8Array(nArrLen);\r\n\r\n /* transcription... */\r\n\r\n for (let nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\r\n nChr = sDOMStr.charCodeAt(nChrIdx);\r\n if (nChr < 128) {\r\n /* one byte */\r\n aBytes[nIdx++] = nChr;\r\n } else if (nChr < 0x800) {\r\n /* two bytes */\r\n aBytes[nIdx++] = 192 + (nChr >>> 6);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x10000) {\r\n /* three bytes */\r\n aBytes[nIdx++] = 224 + (nChr >>> 12);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x200000) {\r\n /* four bytes */\r\n aBytes[nIdx++] = 240 + (nChr >>> 18);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x4000000) {\r\n /* five bytes */\r\n aBytes[nIdx++] = 248 + (nChr >>> 24);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else /* if (nChr <= 0x7fffffff) */ {\r\n /* six bytes */\r\n aBytes[nIdx++] = 252 + (nChr >>> 30);\r\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n }\r\n\r\n return aBytes; \r\n }\r\n\r\n /**\r\n * Converst string to ArrayBuffer\r\n * @param dataString \r\n */\r\n static stringToArrayBuffer(dataString: string): ArrayBuffer {\r\n const data = new ArrayBuffer(dataString.length);\r\n const dataView = new Uint8Array(data);\r\n for (let i: number = 0; i < dataString.length; i++) {\r\n dataView[i] = dataString.charCodeAt(i);\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * Converts Uint8Array to a string\r\n * @param aBytes \r\n */\r\n static utf8ArrToString (aBytes: Uint8Array): string {\r\n let sView = Constants.EMPTY_STRING;\r\n for (let nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nPart = aBytes[nIdx];\r\n sView += String.fromCharCode(\r\n nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\r\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\r\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\r\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\r\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\r\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\r\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\r\n : /* nPart < 127 ? */ /* one byte */\r\n nPart\r\n );\r\n }\r\n return sView;\r\n }\r\n\r\n /**\r\n * Returns stringified jwk.\r\n * @param jwk \r\n */\r\n static getSortedObjectString(obj: object): string {\r\n return JSON.stringify(obj, Object.keys(obj).sort());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"@azure/msal-common\";\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\n\r\n/**\r\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\r\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\r\n */\r\nexport class Base64Encode {\r\n \r\n /**\r\n * Returns URL Safe b64 encoded string from a plaintext string.\r\n * @param input \r\n */\r\n urlEncode(input: string): string {\r\n return encodeURIComponent(this.encode(input)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\"));\r\n }\r\n\r\n /**\r\n * Returns URL Safe b64 encoded string from an int8Array.\r\n * @param inputArr \r\n */\r\n urlEncodeArr(inputArr: Uint8Array): string {\r\n return this.base64EncArr(inputArr)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\");\r\n }\r\n\r\n /**\r\n * Returns b64 encoded string from plaintext string.\r\n * @param input \r\n */\r\n encode(input: string): string {\r\n const inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\r\n return this.base64EncArr(inputUtf8Arr);\r\n }\r\n\r\n /**\r\n * Base64 encode byte array\r\n * @param aBytes \r\n */\r\n private base64EncArr(aBytes: Uint8Array): string { \r\n const eqLen = (3 - (aBytes.length % 3)) % 3;\r\n let sB64Enc = Constants.EMPTY_STRING;\r\n \r\n for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nMod3 = nIdx % 3;\r\n /* Uncomment the following line in order to split the output in lines 76-character long: */\r\n /*\r\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\r\n */\r\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\r\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\r\n sB64Enc += String.fromCharCode(\r\n this.uint6ToB64(nUint24 >>> 18 & 63), \r\n this.uint6ToB64(nUint24 >>> 12 & 63), \r\n this.uint6ToB64(nUint24 >>> 6 & 63), \r\n this.uint6ToB64(nUint24 & 63)\r\n );\r\n nUint24 = 0;\r\n }\r\n }\r\n\r\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\r\n }\r\n\r\n /**\r\n * Base64 string to array encoding helper\r\n * @param nUint6 \r\n */\r\n private uint6ToB64 (nUint6: number): number {\r\n return nUint6 < 26 ?\r\n nUint6 + 65\r\n : nUint6 < 52 ?\r\n nUint6 + 71\r\n : nUint6 < 62 ?\r\n nUint6 - 4\r\n : nUint6 === 62 ?\r\n 43\r\n : nUint6 === 63 ?\r\n 47\r\n :\r\n 65;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"@azure/msal-common\";\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\n\r\n/**\r\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\r\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\r\n */\r\nexport class Base64Decode {\r\n\r\n /**\r\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\r\n * @param input \r\n */\r\n decode(input: string): string {\r\n let encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (encodedString.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n encodedString += \"==\";\r\n break;\r\n case 3:\r\n encodedString += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"Invalid base64 string\");\r\n }\r\n\r\n const inputUtf8Arr = this.base64DecToArr(encodedString);\r\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\r\n }\r\n\r\n /**\r\n * Decodes base64 into Uint8Array\r\n * @param base64String \r\n * @param nBlockSize \r\n */\r\n private base64DecToArr(base64String: string, nBlockSize?: number): Uint8Array {\r\n const sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, Constants.EMPTY_STRING);\r\n const nInLen = sB64Enc.length;\r\n const nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\r\n const aBytes = new Uint8Array(nOutLen);\r\n\r\n for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\r\n nMod4 = nInIdx & 3;\r\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\r\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\r\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\r\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\r\n }\r\n nUint24 = 0;\r\n }\r\n }\r\n\r\n return aBytes;\r\n }\r\n\r\n /**\r\n * Base64 string to array decoding helper\r\n * @param charNum \r\n */\r\n private b64ToUint6(charNum: number): number {\r\n return charNum > 64 && charNum < 91 ?\r\n charNum - 65\r\n : charNum > 96 && charNum < 123 ? \r\n charNum - 71\r\n : charNum > 47 && charNum < 58 ?\r\n charNum + 4\r\n : charNum === 43 ?\r\n 62\r\n : charNum === 47 ?\r\n 63\r\n :\r\n 0;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError, StringUtils } from \"@azure/msal-common\";\r\n\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const BrowserAuthErrorMessage = {\r\n pkceNotGenerated: {\r\n code: \"pkce_not_created\",\r\n desc: \"The PKCE code challenge and verifier could not be generated.\"\r\n },\r\n cryptoDoesNotExist: {\r\n code: \"crypto_nonexistent\",\r\n desc: \"The crypto object or function is not available.\"\r\n },\r\n httpMethodNotImplementedError: {\r\n code: \"http_method_not_implemented\",\r\n desc: \"The HTTP method given has not been implemented in this library.\"\r\n },\r\n emptyNavigateUriError: {\r\n code: \"empty_navigate_uri\",\r\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\r\n },\r\n hashEmptyError: {\r\n code: \"hash_empty_error\",\r\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.\"\r\n },\r\n hashDoesNotContainStateError: {\r\n code: \"no_state_in_hash\",\r\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\r\n },\r\n hashDoesNotContainKnownPropertiesError: {\r\n code: \"hash_does_not_contain_known_properties\",\r\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.\"\r\n },\r\n unableToParseStateError: {\r\n code: \"unable_to_parse_state\",\r\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\r\n },\r\n stateInteractionTypeMismatchError: {\r\n code: \"state_interaction_type_mismatch\",\r\n desc: \"Hash contains state but the interaction type does not match the caller.\"\r\n },\r\n interactionInProgress: {\r\n code: \"interaction_in_progress\",\r\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.\"\r\n },\r\n popupWindowError: {\r\n code: \"popup_window_error\",\r\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\r\n },\r\n emptyWindowError: {\r\n code: \"empty_window_error\",\r\n desc: \"window.open returned null or undefined window object.\"\r\n },\r\n userCancelledError: {\r\n code: \"user_cancelled\",\r\n desc: \"User cancelled the flow.\"\r\n },\r\n monitorPopupTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n monitorIframeTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n redirectInIframeError: {\r\n code: \"redirect_in_iframe\",\r\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.\"\r\n },\r\n blockTokenRequestsInHiddenIframeError: {\r\n code: \"block_iframe_reload\",\r\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n blockAcquireTokenInPopupsError: {\r\n code: \"block_nested_popups\",\r\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\r\n },\r\n iframeClosedPrematurelyError: {\r\n code: \"iframe_closed_prematurely\",\r\n desc: \"The iframe being monitored was closed prematurely.\"\r\n },\r\n silentLogoutUnsupportedError: {\r\n code: \"silent_logout_unsupported\",\r\n desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\r\n },\r\n noAccountError: {\r\n code: \"no_account_error\",\r\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.\"\r\n },\r\n silentPromptValueError: {\r\n code: \"silent_prompt_value_error\",\r\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.\"\r\n },\r\n noTokenRequestCacheError: {\r\n code: \"no_token_request_cache_error\",\r\n desc: \"No token request found in cache.\"\r\n },\r\n unableToParseTokenRequestCacheError: {\r\n code: \"unable_to_parse_token_request_cache_error\",\r\n desc: \"The cached token request could not be parsed.\"\r\n },\r\n noCachedAuthorityError: {\r\n code: \"no_cached_authority_error\",\r\n desc: \"No cached authority found.\"\r\n },\r\n authRequestNotSet: {\r\n code: \"auth_request_not_set_error\",\r\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n notInBrowserEnvironment: {\r\n code: \"non_browser_environment\",\r\n desc: \"Login and token requests are not supported in non-browser environments.\"\r\n },\r\n databaseNotOpen: {\r\n code: \"database_not_open\",\r\n desc: \"Database is not open!\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\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'\"\r\n },\r\n getRequestFailed: {\r\n code: \"get_request_failed\",\r\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\r\n },\r\n failedToParseNetworkResponse: {\r\n code: \"failed_to_parse_response\",\r\n desc: \"Failed to parse network response. Check network trace.\"\r\n },\r\n unableToLoadTokenError: {\r\n code: \"unable_to_load_token\",\r\n desc: \"Error loading token to cache.\"\r\n },\r\n signingKeyNotFoundInStorage: {\r\n code: \"crypto_key_not_found\",\r\n desc: \"Cryptographic Key or Keypair not found in browser storage.\"\r\n },\r\n authCodeRequired: {\r\n code: \"auth_code_required\",\r\n desc: \"An authorization code must be provided (as the `code` property on the request) to this flow.\"\r\n },\r\n authCodeOrNativeAccountRequired: {\r\n code: \"auth_code_or_nativeAccountId_required\",\r\n desc: \"An authorization code or nativeAccountId must be provided to this flow.\"\r\n },\r\n spaCodeAndNativeAccountPresent: {\r\n code: \"spa_code_and_nativeAccountId_present\",\r\n desc: \"Request cannot contain both spa code and native account id.\"\r\n },\r\n databaseUnavailable: {\r\n code: \"database_unavailable\",\r\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.\"\r\n },\r\n unableToAcquireTokenFromNativePlatform: {\r\n code: \"unable_to_acquire_token_from_native_platform\",\r\n desc: \"Unable to acquire token from native platform. For a list of possible reasons visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativeHandshakeTimeout: {\r\n code: \"native_handshake_timeout\",\r\n desc: \"Timed out while attempting to establish connection to browser extension\"\r\n },\r\n nativeExtensionNotInstalled: {\r\n code: \"native_extension_not_installed\",\r\n desc: \"Native extension is not installed. If you think this is a mistake call the initialize function.\"\r\n },\r\n nativeConnectionNotEstablished: {\r\n code: \"native_connection_not_established\",\r\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.\"\r\n },\r\n nativeBrokerCalledBeforeInitialize: {\r\n code: \"native_broker_called_before_initialize\",\r\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.\"\r\n },\r\n nativePromptNotSupported: {\r\n code: \"native_prompt_not_supported\",\r\n desc: \"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.\"\r\n }\r\n};\r\n\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nexport class BrowserAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n\r\n Object.setPrototypeOf(this, BrowserAuthError.prototype);\r\n this.name = \"BrowserAuthError\";\r\n }\r\n\r\n /**\r\n * Creates an error thrown when PKCE is not implemented.\r\n * @param errDetail\r\n */\r\n static createPkceNotGeneratedError(errDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code,\r\n `${BrowserAuthErrorMessage.pkceNotGenerated.desc} Detail:${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the crypto object is unavailable.\r\n * @param errDetail\r\n */\r\n static createCryptoNotAvailableError(errDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code,\r\n `${BrowserAuthErrorMessage.cryptoDoesNotExist.desc} Detail:${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\r\n * @param method\r\n */\r\n static createHttpMethodNotImplementedError(method: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code,\r\n `${BrowserAuthErrorMessage.httpMethodNotImplementedError.desc} Given Method: ${method}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the navigation URI is empty.\r\n */\r\n static createEmptyNavigationUriError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n * @param hashValue\r\n */\r\n static createEmptyHashError(hashValue: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, `${BrowserAuthErrorMessage.hashEmptyError.desc} Given Url: ${hashValue}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n static createHashDoesNotContainStateError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value does not contain known properties\r\n */\r\n static createHashDoesNotContainKnownPropertiesError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n static createUnableToParseStateError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\r\n }\r\n\r\n /**\r\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.\r\n */\r\n static createStateInteractionTypeMismatchError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\r\n */\r\n static createInteractionInProgressError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the popup window could not be opened.\r\n * @param errDetail\r\n */\r\n static createPopupWindowError(errDetail?: string): BrowserAuthError {\r\n let errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\r\n errorMessage = !StringUtils.isEmpty(errDetail) ? `${errorMessage} Details: ${errDetail}` : errorMessage;\r\n return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when window.open returns an empty window object.\r\n * @param errDetail\r\n */\r\n static createEmptyWindowCreatedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the user closes a popup.\r\n */\r\n static createUserCancelledError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code,\r\n BrowserAuthErrorMessage.userCancelledError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\r\n */\r\n static createMonitorPopupTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code,\r\n BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\r\n */\r\n static createMonitorIframeTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code,\r\n BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when navigateWindow is called inside an iframe or brokered applications.\r\n * @param windowParentCheck\r\n */\r\n static createRedirectInIframeError(windowParentCheck: boolean): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code,\r\n `${BrowserAuthErrorMessage.redirectInIframeError.desc} (window.parent !== window) => ${windowParentCheck}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an auth reload is done inside an iframe.\r\n */\r\n static createBlockReloadInHiddenIframeError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code,\r\n BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a popup attempts to call an acquireToken API\r\n * @returns\r\n */\r\n static createBlockAcquireTokenInPopupsError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code,\r\n BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\r\n */\r\n static createIframeClosedPrematurelyError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the logout API is called on any of the silent interaction clients\r\n */\r\n static createSilentLogoutUnsupportedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\r\n */\r\n static createNoAccountError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a given prompt value is invalid for silent requests.\r\n */\r\n static createSilentPromptValueError(givenPrompt: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, `${BrowserAuthErrorMessage.silentPromptValueError.desc} Given value: ${givenPrompt}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the cached token request could not be retrieved from the cache\r\n */\r\n static createUnableToParseTokenRequestCacheError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code,\r\n BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the token request could not be retrieved from the cache\r\n */\r\n static createNoTokenRequestCacheError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code,\r\n BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\r\n */\r\n static createAuthRequestNotSetError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code,\r\n BrowserAuthErrorMessage.authRequestNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the authority could not be retrieved from the cache\r\n */\r\n static createNoCachedAuthorityError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code,\r\n BrowserAuthErrorMessage.noCachedAuthorityError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if cache type is invalid.\r\n */\r\n static createInvalidCacheTypeError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, `${BrowserAuthErrorMessage.invalidCacheType.desc}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when login and token requests are made from a non-browser environment\r\n */\r\n static createNonBrowserEnvironmentError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when indexDB database is not open\r\n */\r\n static createDatabaseNotOpenError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when token fetch fails due to no internet\r\n */\r\n static createNoNetworkConnectivityError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\r\n */\r\n static createPostRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, `${BrowserAuthErrorMessage.postRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when get request fails due to reasons other than internet connectivity\r\n */\r\n static createGetRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, `${BrowserAuthErrorMessage.getRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when network client fails to parse network response\r\n */\r\n static createFailedToParseNetworkResponseError(endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, `${BrowserAuthErrorMessage.failedToParseNetworkResponse.desc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when the necessary information is not available to sideload tokens\r\n */\r\n static createUnableToLoadTokenError(errorDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, `${BrowserAuthErrorMessage.unableToLoadTokenError.desc} | ${errorDetail}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when the queried cryptographic key is not found in IndexedDB\r\n */\r\n static createSigningKeyNotFoundInStorageError(keyId: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, `${BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc} | No match found for KeyId: ${keyId}`);\r\n }\r\n\r\n /**\r\n * Create an error when an authorization code is required but not provided\r\n */\r\n static createAuthCodeRequiredError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeRequired.code, BrowserAuthErrorMessage.authCodeRequired.desc);\r\n }\r\n\r\n /**\r\n * Create an error when an authorization code or native account ID is required but not provided\r\n */\r\n static createAuthCodeOrNativeAccountIdRequiredError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.code, BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.desc);\r\n }\r\n\r\n /**\r\n * Create an error when both authorization code and native account ID are provided\r\n */\r\n static createSpaCodeAndNativeAccountIdPresentError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.spaCodeAndNativeAccountPresent.code, BrowserAuthErrorMessage.spaCodeAndNativeAccountPresent.desc);\r\n }\r\n\r\n /**\r\n * Create an error when IndexedDB is unavailable\r\n */\r\n static createDatabaseUnavailableError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\r\n }\r\n\r\n /**\r\n * Create an error when native token acquisition is not possible\r\n */\r\n static createUnableToAcquireTokenFromNativePlatformError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.code, BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when Handshake with browser extension times out\r\n */\r\n static createNativeHandshakeTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeHandshakeTimeout.code, BrowserAuthErrorMessage.nativeHandshakeTimeout.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when browser extension is not installed\r\n */\r\n static createNativeExtensionNotInstalledError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeExtensionNotInstalled.code, BrowserAuthErrorMessage.nativeExtensionNotInstalled.desc);\r\n }\r\n\r\n /**\r\n * Create an error when native connection has not been established\r\n * @returns\r\n */\r\n static createNativeConnectionNotEstablishedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeConnectionNotEstablished.code, BrowserAuthErrorMessage.nativeConnectionNotEstablished.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when the initialize function hasn't been called\r\n */\r\n static createNativeBrokerCalledBeforeInitialize(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.code, BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.desc);\r\n }\r\n\r\n /**\r\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\r\n * These requests must go through eSTS to ensure eSTS is aware of the new account\r\n */\r\n static createNativePromptParameterNotSupportedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativePromptNotSupported.code, BrowserAuthErrorMessage.nativePromptNotSupported.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { PkceCodes } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { Base64Encode } from \"../encode/Base64Encode\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\n\r\n// Constant byte array length\r\nconst RANDOM_BYTE_ARR_LENGTH = 32;\r\n\r\n/**\r\n * Class which exposes APIs to generate PKCE codes and code verifiers.\r\n */\r\nexport class PkceGenerator {\r\n\r\n private base64Encode: Base64Encode;\r\n private cryptoObj: BrowserCrypto;\r\n\r\n constructor(cryptoObj: BrowserCrypto) {\r\n this.base64Encode = new Base64Encode();\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n /**\r\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\r\n */\r\n async generateCodes(): Promise {\r\n const codeVerifier = this.generateCodeVerifier();\r\n const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);\r\n return {\r\n verifier: codeVerifier,\r\n challenge: codeChallenge\r\n };\r\n }\r\n\r\n /**\r\n * Generates a random 32 byte buffer and returns the base64\r\n * encoded string to be used as a PKCE Code Verifier\r\n */\r\n private generateCodeVerifier(): string {\r\n try {\r\n // Generate random values as utf-8\r\n const buffer: Uint8Array = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // encode verifier as base64\r\n const pkceCodeVerifierB64: string = this.base64Encode.urlEncodeArr(buffer);\r\n return pkceCodeVerifierB64;\r\n } catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Creates a base64 encoded PKCE Code Challenge string from the\r\n * hash created from the PKCE Code Verifier supplied\r\n */\r\n private async generateCodeChallengeFromVerifier(pkceCodeVerifier: string): Promise {\r\n try {\r\n // hashed verifier\r\n const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);\r\n // encode hash as base64\r\n return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));\r\n } catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\nimport { ISubtleCrypto } from \"./ISubtleCrypto\";\r\n\r\nexport class ModernBrowserCrypto implements ISubtleCrypto {\r\n getRandomValues(dataBuffer: Uint8Array): Uint8Array {\r\n return window.crypto.getRandomValues(dataBuffer);\r\n }\r\n\r\n async generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise {\r\n return window.crypto.subtle.generateKey(algorithm, extractable, keyUsages) as Promise;\r\n }\r\n\r\n async exportKey(key: CryptoKey): Promise {\r\n return window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key) as Promise;\r\n }\r\n\r\n async importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise {\r\n return window.crypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages) as Promise;\r\n }\r\n\r\n async sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise {\r\n return window.crypto.subtle.sign(algorithm, key, data) as Promise;\r\n }\r\n\r\n async digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise {\r\n return window.crypto.subtle.digest(algorithm, data) as Promise;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\nimport { ISubtleCrypto } from \"./ISubtleCrypto\";\r\n\r\ndeclare global {\r\n interface Window {\r\n msrCrypto: Crypto & {\r\n initPrng: (entropy: Uint8Array | number[]) => void\r\n }\r\n }\r\n}\r\n\r\nexport class MsrBrowserCrypto implements ISubtleCrypto {\r\n initPrng(entropy : Uint8Array): void {\r\n // Turn into array, as initPrng seems to not always like Uint8Array (even though it should support both)\r\n return window.msrCrypto.initPrng([...entropy]);\r\n }\r\n\r\n getRandomValues(dataBuffer: Uint8Array): Uint8Array {\r\n return window.msrCrypto.getRandomValues(dataBuffer);\r\n }\r\n\r\n async generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise {\r\n return window.msrCrypto.subtle.generateKey(algorithm, extractable, keyUsages) as Promise;\r\n }\r\n\r\n async exportKey(key: CryptoKey): Promise {\r\n return window.msrCrypto.subtle.exportKey(KEY_FORMAT_JWK, key) as Promise as Promise;\r\n }\r\n\r\n async importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise {\r\n return window.msrCrypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages) as Promise;\r\n }\r\n\r\n async sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise {\r\n return window.msrCrypto.subtle.sign(algorithm, key, data) as Promise;\r\n }\r\n\r\n async digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise {\r\n return window.msrCrypto.subtle.digest(algorithm, data) as Promise; \r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"@azure/msal-common\";\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { ISubtleCrypto } from \"./ISubtleCrypto\";\r\n\r\nexport class MsBrowserCrypto implements ISubtleCrypto {\r\n getRandomValues(dataBuffer: Uint8Array): Uint8Array {\r\n return window[\"msCrypto\"].getRandomValues(dataBuffer);\r\n }\r\n\r\n async generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msGenerateKey = window[\"msCrypto\"].subtle.generateKey(algorithm, extractable, keyUsages);\r\n msGenerateKey.addEventListener(\"complete\", (e: { target: { result: CryptoKeyPair | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msGenerateKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n async exportKey(key: CryptoKey): Promise {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\r\n msExportKey.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer; }; }) => {\r\n const resultBuffer: ArrayBuffer = e.target.result;\r\n\r\n const resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\r\n .replace(/\\r/g, Constants.EMPTY_STRING)\r\n .replace(/\\n/g, Constants.EMPTY_STRING)\r\n .replace(/\\t/g, Constants.EMPTY_STRING)\r\n .split(\" \").join(Constants.EMPTY_STRING)\r\n .replace(\"\\u0000\", Constants.EMPTY_STRING);\r\n\r\n try {\r\n resolve(JSON.parse(resultString));\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n\r\n msExportKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n async importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise {\r\n const keyString = BrowserStringUtils.getSortedObjectString(keyData);\r\n const keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\r\n\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, algorithm, extractable, keyUsages);\r\n msImportKey.addEventListener(\"complete\", (e: { target: { result: CryptoKey | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msImportKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n async sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msSign = window[\"msCrypto\"].subtle.sign(algorithm, key, data);\r\n msSign.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msSign.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n \r\n async digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise {\r\n return new Promise((resolve, reject) => {\r\n const digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\r\n digestOperation.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n digestOperation.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { ISubtleCrypto } from \"./ISubtleCrypto\";\r\nimport { ModernBrowserCrypto } from \"./ModernBrowserCrypto\";\r\nimport { MsrBrowserCrypto } from \"./MsrBrowserCrypto\";\r\nimport { MsBrowserCrypto } from \"./MsBrowserCrypto\";\r\nimport { Logger } from \"@azure/msal-common\";\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { CryptoOptions } from \"../config/Configuration\";\r\n/**\r\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\r\n */\r\n// RSA KeyGen Algorithm\r\nconst PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\r\n// SHA-256 hashing algorithm\r\nconst S256_HASH_ALG = \"SHA-256\";\r\n// MOD length for PoP tokens\r\nconst MODULUS_LENGTH = 2048;\r\n// Public Exponent\r\nconst PUBLIC_EXPONENT: Uint8Array = new Uint8Array([0x01, 0x00, 0x01]);\r\n\r\n/**\r\n * This class implements functions used by the browser library to perform cryptography operations such as\r\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\r\n */\r\nexport class BrowserCrypto {\r\n\r\n private keygenAlgorithmOptions: RsaHashedKeyGenParams;\r\n private subtleCrypto: ISubtleCrypto;\r\n private logger: Logger;\r\n private cryptoOptions?: CryptoOptions;\r\n\r\n constructor(logger: Logger, cryptoOptions?: CryptoOptions) {\r\n this.logger = logger;\r\n this.cryptoOptions = cryptoOptions;\r\n\r\n if (this.hasBrowserCrypto()) {\r\n // Use standard modern web crypto if available\r\n this.logger.verbose(\"BrowserCrypto: modern crypto interface available\");\r\n this.subtleCrypto = new ModernBrowserCrypto();\r\n } else if (this.hasIECrypto()) {\r\n // For IE11, use msCrypto interface\r\n this.logger.verbose(\"BrowserCrypto: MS crypto interface available\");\r\n this.subtleCrypto = new MsBrowserCrypto();\r\n } else if (this.hasMsrCrypto() && this.cryptoOptions?.useMsrCrypto) {\r\n // For other browsers, use MSR Crypto if found\r\n this.logger.verbose(\"BrowserCrypto: MSR crypto interface available\");\r\n this.subtleCrypto = new MsrBrowserCrypto();\r\n } else {\r\n if (this.hasMsrCrypto()) {\r\n this.logger.info(\"BrowserCrypto: MSR Crypto interface available but system.cryptoOptions.useMsrCrypto not enabled\");\r\n }\r\n this.logger.error(\"BrowserCrypto: No crypto interfaces available.\");\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto, msCrypto, or msrCrypto interfaces not available.\");\r\n }\r\n\r\n // Mainly needed for MSR Crypto: https://github.com/microsoft/MSR-JavaScript-Crypto#random-number-generator-prng\r\n if (this.subtleCrypto.initPrng) {\r\n this.logger.verbose(\"BrowserCrypto: Interface requires entropy\");\r\n\r\n if (!this.cryptoOptions?.entropy) {\r\n this.logger.error(\"BrowserCrypto: Interface requires entropy but none provided.\");\r\n throw BrowserConfigurationAuthError.createEntropyNotProvided();\r\n }\r\n\r\n this.logger.verbose(\"BrowserCrypto: Entropy provided\");\r\n this.subtleCrypto.initPrng(this.cryptoOptions.entropy);\r\n }\r\n\r\n this.keygenAlgorithmOptions = {\r\n name: PKCS1_V15_KEYGEN_ALG,\r\n hash: S256_HASH_ALG,\r\n modulusLength: MODULUS_LENGTH,\r\n publicExponent: PUBLIC_EXPONENT\r\n };\r\n }\r\n\r\n /**\r\n * Check whether IE crypto or other browser cryptography is available.\r\n */\r\n private hasIECrypto(): boolean {\r\n return \"msCrypto\" in window;\r\n }\r\n\r\n /**\r\n * Check whether browser crypto is available.\r\n */\r\n private hasBrowserCrypto(): boolean {\r\n return \"crypto\" in window;\r\n }\r\n\r\n /**\r\n * Check whether MSR crypto polyfill is available\r\n */\r\n private hasMsrCrypto(): boolean {\r\n return \"msrCrypto\" in window;\r\n }\r\n\r\n /**\r\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\r\n * @param dataString \r\n */\r\n async sha256Digest(dataString: string): Promise {\r\n const data = BrowserStringUtils.stringToUtf8Arr(dataString);\r\n // MSR Crypto wants object with name property, instead of string\r\n return this.subtleCrypto.digest({ name: S256_HASH_ALG }, data);\r\n }\r\n\r\n /**\r\n * Populates buffer with cryptographically random values.\r\n * @param dataBuffer \r\n */\r\n getRandomValues(dataBuffer: Uint8Array): Uint8Array {\r\n return this.subtleCrypto.getRandomValues(dataBuffer);\r\n }\r\n\r\n /**\r\n * Generates a keypair based on current keygen algorithm config.\r\n * @param extractable \r\n * @param usages \r\n */\r\n async generateKeyPair(extractable: boolean, usages: Array): Promise {\r\n return this.subtleCrypto.generateKey(this.keygenAlgorithmOptions, extractable, usages);\r\n }\r\n\r\n /**\r\n * Export key as Json Web Key (JWK)\r\n * @param key \r\n * @param format \r\n */\r\n async exportJwk(key: CryptoKey): Promise {\r\n return this.subtleCrypto.exportKey(key);\r\n }\r\n\r\n /**\r\n * Imports key as Json Web Key (JWK), can set extractable and usages.\r\n * @param key \r\n * @param format \r\n * @param extractable \r\n * @param usages \r\n */\r\n async importJwk(key: JsonWebKey, extractable: boolean, usages: Array): Promise {\r\n return this.subtleCrypto.importKey(key, this.keygenAlgorithmOptions, extractable, usages);\r\n }\r\n\r\n /**\r\n * Signs given data with given key\r\n * @param key \r\n * @param data \r\n */\r\n async sign(key: CryptoKey, data: ArrayBuffer): Promise {\r\n return this.subtleCrypto.sign(this.keygenAlgorithmOptions, key, data);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { DB_NAME, DB_TABLE_NAME, DB_VERSION } from \"../utils/BrowserConstants\";\r\nimport { IAsyncStorage } from \"./IAsyncMemoryStorage\";\r\n\r\ninterface IDBOpenDBRequestEvent extends Event {\r\n target: IDBOpenDBRequest & EventTarget;\r\n}\r\n\r\ninterface IDBOpenOnUpgradeNeededEvent extends IDBVersionChangeEvent {\r\n target: IDBOpenDBRequest & EventTarget;\r\n}\r\n\r\ninterface IDBRequestEvent extends Event {\r\n target: IDBRequest & EventTarget;\r\n}\r\n\r\n/**\r\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\r\n */\r\nexport class DatabaseStorage implements IAsyncStorage {\r\n private db: IDBDatabase|undefined;\r\n private dbName: string;\r\n private tableName: string;\r\n private version: number;\r\n private dbOpen: boolean;\r\n\r\n constructor() {\r\n this.dbName = DB_NAME;\r\n this.version = DB_VERSION;\r\n this.tableName = DB_TABLE_NAME;\r\n this.dbOpen = false;\r\n }\r\n\r\n /**\r\n * Opens IndexedDB instance.\r\n */\r\n async open(): Promise {\r\n return new Promise((resolve, reject) => {\r\n const openDB = window.indexedDB.open(this.dbName, this.version);\r\n openDB.addEventListener(\"upgradeneeded\", (e: IDBVersionChangeEvent) => {\r\n const event = e as IDBOpenOnUpgradeNeededEvent;\r\n event.target.result.createObjectStore(this.tableName);\r\n });\r\n openDB.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBOpenDBRequestEvent;\r\n this.db = event.target.result;\r\n this.dbOpen = true;\r\n resolve();\r\n });\r\n openDB.addEventListener(\"error\", () => reject(BrowserAuthError.createDatabaseUnavailableError()));\r\n });\r\n }\r\n\r\n /**\r\n * Closes the connection to IndexedDB database when all pending transactions\r\n * complete.\r\n */\r\n closeConnection(): void {\r\n const db = this.db;\r\n if (db && this.dbOpen) {\r\n db.close();\r\n this.dbOpen = false;\r\n }\r\n }\r\n\r\n /**\r\n * Opens database if it's not already open\r\n */\r\n private async validateDbIsOpen(): Promise {\r\n if (!this.dbOpen) {\r\n return await this.open();\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves item from IndexedDB instance.\r\n * @param key \r\n */\r\n async getItem(key: string): Promise {\r\n await this.validateDbIsOpen();\r\n return new Promise((resolve, reject) => {\r\n // TODO: Add timeouts?\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n const transaction = this.db.transaction([this.tableName], \"readonly\");\r\n const objectStore = transaction.objectStore(this.tableName);\r\n const dbGet = objectStore.get(key);\r\n \r\n dbGet.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n\r\n dbGet.addEventListener(\"error\", (e: Event) => {\r\n this.closeConnection();\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Adds item to IndexedDB under given key\r\n * @param key \r\n * @param payload \r\n */\r\n async setItem(key: string, payload: T): Promise {\r\n await this.validateDbIsOpen();\r\n return new Promise((resolve: Function, reject: Function) => {\r\n // TODO: Add timeouts?\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\r\n\r\n const objectStore = transaction.objectStore(this.tableName);\r\n\r\n const dbPut = objectStore.put(payload, key);\r\n\r\n dbPut.addEventListener(\"success\", () => {\r\n this.closeConnection();\r\n resolve();\r\n });\r\n\r\n dbPut.addEventListener(\"error\", (e) => {\r\n this.closeConnection();\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Removes item from IndexedDB under given key\r\n * @param key\r\n */\r\n async removeItem(key: string): Promise {\r\n await this.validateDbIsOpen();\r\n return new Promise((resolve: Function, reject: Function) => {\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\r\n const objectStore = transaction.objectStore(this.tableName);\r\n const dbDelete = objectStore.delete(key);\r\n\r\n dbDelete.addEventListener(\"success\", () => {\r\n this.closeConnection();\r\n resolve();\r\n });\r\n\r\n dbDelete.addEventListener(\"error\", (e) => {\r\n this.closeConnection();\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Get all the keys from the storage object as an iterable array of strings.\r\n */\r\n async getKeys(): Promise {\r\n await this.validateDbIsOpen();\r\n return new Promise((resolve: Function, reject: Function) => {\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readonly\");\r\n const objectStore = transaction.objectStore(this.tableName);\r\n const dbGetKeys = objectStore.getAllKeys();\r\n\r\n dbGetKeys.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n\r\n dbGetKeys.addEventListener(\"error\", (e: Event) => {\r\n this.closeConnection();\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * \r\n * Checks whether there is an object under the search key in the object store\r\n */\r\n async containsKey(key: string): Promise {\r\n await this.validateDbIsOpen();\r\n\r\n return new Promise((resolve: Function, reject: Function) => {\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readonly\");\r\n const objectStore = transaction.objectStore(this.tableName);\r\n const dbContainsKey = objectStore.count(key);\r\n\r\n dbContainsKey.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n this.closeConnection();\r\n resolve(event.target.result === 1);\r\n });\r\n\r\n dbContainsKey.addEventListener(\"error\", (e: Event) => {\r\n this.closeConnection();\r\n reject(e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\r\n * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\r\n * with IndexedDB database versions.\r\n */\r\n async deleteDatabase(): Promise {\r\n // Check if database being deleted exists\r\n\r\n if (this.db && this.dbOpen) {\r\n this.closeConnection();\r\n }\r\n\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\r\n deleteDbRequest.addEventListener(\"success\", () => resolve(true));\r\n deleteDbRequest.addEventListener(\"blocked\", () => resolve(true));\r\n deleteDbRequest.addEventListener(\"error\", () => reject(false));\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\n\r\nexport class MemoryStorage implements IWindowStorage {\r\n\r\n private cache: Map;\r\n\r\n constructor() {\r\n this.cache = new Map();\r\n }\r\n\r\n getItem(key: string): T | null {\r\n return this.cache.get(key) || null;\r\n }\r\n\r\n setItem(key: string, value: T): void {\r\n this.cache.set(key, value);\r\n }\r\n\r\n removeItem(key: string): void {\r\n this.cache.delete(key);\r\n }\r\n\r\n getKeys(): string[] {\r\n const cacheKeys: string[] = [];\r\n this.cache.forEach((value: T, key: string) => {\r\n cacheKeys.push(key);\r\n });\r\n return cacheKeys;\r\n }\r\n\r\n containsKey(key: string): boolean {\r\n return this.cache.has(key);\r\n }\r\n\r\n clear() :void {\r\n this.cache.clear();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Logger } from \"@azure/msal-common\";\r\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\r\nimport { DatabaseStorage } from \"./DatabaseStorage\";\r\nimport { IAsyncStorage } from \"./IAsyncMemoryStorage\";\r\nimport { MemoryStorage } from \"./MemoryStorage\";\r\n\r\n/**\r\n * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper,\r\n * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable.\r\n */\r\nexport class AsyncMemoryStorage implements IAsyncStorage {\r\n private inMemoryCache: MemoryStorage;\r\n private indexedDBCache: DatabaseStorage;\r\n private logger: Logger;\r\n private storeName: string;\r\n\r\n constructor(logger: Logger, storeName: string) {\r\n this.inMemoryCache = new MemoryStorage();\r\n this.indexedDBCache = new DatabaseStorage();\r\n this.logger = logger;\r\n this.storeName = storeName;\r\n }\r\n\r\n private handleDatabaseAccessError(error: unknown): void {\r\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.databaseUnavailable.code) {\r\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.\");\r\n } else {\r\n throw error;\r\n }\r\n }\r\n /**\r\n * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous\r\n * storage object if item isn't found in-memory.\r\n * @param key \r\n */\r\n async getItem(key: string): Promise {\r\n const item = this.inMemoryCache.getItem(key);\r\n if(!item) {\r\n try {\r\n this.logger.verbose(\"Queried item not found in in-memory cache, now querying persistent storage.\");\r\n return await this.indexedDBCache.getItem(key);\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n }\r\n }\r\n return item;\r\n }\r\n\r\n /**\r\n * Sets the item in the in-memory cache and then tries to set it in the asynchronous\r\n * storage object with the given key.\r\n * @param key \r\n * @param value \r\n */\r\n async setItem(key: string, value: T): Promise {\r\n this.inMemoryCache.setItem(key, value);\r\n try {\r\n await this.indexedDBCache.setItem(key, value);\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object.\r\n * @param key \r\n */\r\n async removeItem(key: string): Promise {\r\n this.inMemoryCache.removeItem(key);\r\n try {\r\n await this.indexedDBCache.removeItem(key);\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n }\r\n }\r\n\r\n /**\r\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 \r\n * asynchronous storage object.\r\n */\r\n async getKeys(): Promise {\r\n const cacheKeys = this.inMemoryCache.getKeys();\r\n if (cacheKeys.length === 0) {\r\n try {\r\n this.logger.verbose(\"In-memory cache is empty, now querying persistent storage.\");\r\n return await this.indexedDBCache.getKeys();\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n }\r\n }\r\n return cacheKeys;\r\n }\r\n\r\n /**\r\n * Returns true or false if the given key is present in the cache.\r\n * @param key \r\n */\r\n async containsKey(key: string): Promise {\r\n const containsKey = this.inMemoryCache.containsKey(key);\r\n if(!containsKey) {\r\n try {\r\n this.logger.verbose(\"Key not found in in-memory cache, now querying persistent storage.\");\r\n return await this.indexedDBCache.containsKey(key);\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n }\r\n }\r\n return containsKey;\r\n }\r\n\r\n /**\r\n * Clears in-memory Map\r\n */\r\n clearInMemory(): void {\r\n // InMemory cache is a Map instance, clear is straightforward\r\n this.logger.verbose(`Deleting in-memory keystore ${this.storeName}`);\r\n this.inMemoryCache.clear();\r\n this.logger.verbose(`In-memory keystore ${this.storeName} deleted`);\r\n }\r\n\r\n /**\r\n * Tries to delete the IndexedDB database\r\n * @returns\r\n */\r\n async clearPersistent(): Promise {\r\n try {\r\n this.logger.verbose(\"Deleting persistent keystore\");\r\n const dbDeleted = await this.indexedDBCache.deleteDatabase();\r\n if (dbDeleted) {\r\n this.logger.verbose(\"Persistent keystore deleted\");\r\n }\r\n \r\n return dbDeleted;\r\n } catch (e) {\r\n this.handleDatabaseAccessError(e);\r\n return false;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nexport enum AuthorityType {\r\n Default,\r\n Adfs,\r\n Dsts,\r\n Ciam\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto, IPerformanceClient, JoseHeader, Logger, PerformanceEvents, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from \"@azure/msal-common\";\r\nimport { GuidGenerator } from \"./GuidGenerator\";\r\nimport { Base64Encode } from \"../encode/Base64Encode\";\r\nimport { Base64Decode } from \"../encode/Base64Decode\";\r\nimport { PkceGenerator } from \"./PkceGenerator\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { CryptoKeyStore } from \"../cache/CryptoKeyStore\";\r\nimport { CryptoOptions } from \"../config/Configuration\";\r\n\r\nexport type CachedKeyPair = {\r\n publicKey: CryptoKey,\r\n privateKey: CryptoKey,\r\n requestMethod?: string,\r\n requestUri?: string\r\n};\r\n\r\n/**\r\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and \r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n */\r\nexport class CryptoOps implements ICrypto {\r\n\r\n private browserCrypto: BrowserCrypto;\r\n private guidGenerator: GuidGenerator;\r\n private b64Encode: Base64Encode;\r\n private b64Decode: Base64Decode;\r\n private pkceGenerator: PkceGenerator;\r\n private logger: Logger;\r\n\r\n /**\r\n * CryptoOps can be used in contexts outside a PCA instance,\r\n * meaning there won't be a performance manager available.\r\n */\r\n private performanceClient: IPerformanceClient | undefined;\r\n\r\n private static POP_KEY_USAGES: Array = [\"sign\", \"verify\"];\r\n private static EXTRACTABLE: boolean = true;\r\n private cache: CryptoKeyStore;\r\n\r\n constructor(logger: Logger, performanceClient?: IPerformanceClient, cryptoConfig?: CryptoOptions) {\r\n this.logger = logger;\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.browserCrypto = new BrowserCrypto(this.logger, cryptoConfig);\r\n this.b64Encode = new Base64Encode();\r\n this.b64Decode = new Base64Decode();\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\r\n this.cache = new CryptoKeyStore(this.logger);\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n createNewGuid(): string {\r\n return this.guidGenerator.generateGuid();\r\n }\r\n\r\n /**\r\n * Encodes input string to base64.\r\n * @param input \r\n */\r\n base64Encode(input: string): string {\r\n return this.b64Encode.encode(input);\r\n } \r\n \r\n /**\r\n * Decodes input string from base64.\r\n * @param input \r\n */\r\n base64Decode(input: string): string {\r\n return this.b64Decode.decode(input);\r\n }\r\n\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n async generatePkceCodes(): Promise {\r\n return this.pkceGenerator.generateCodes();\r\n }\r\n\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint\r\n * @param request\r\n */\r\n async getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise {\r\n const publicKeyThumbMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);\r\n\r\n // Generate Keypair\r\n const keyPair: CryptoKeyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);\r\n\r\n // Generate Thumbprint for Public Key\r\n const publicKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.publicKey);\r\n \r\n const pubKeyThumprintObj: JsonWebKey = {\r\n e: publicKeyJwk.e,\r\n kty: publicKeyJwk.kty,\r\n n: publicKeyJwk.n\r\n };\r\n \r\n const publicJwkString: string = BrowserStringUtils.getSortedObjectString(pubKeyThumprintObj);\r\n const publicJwkHash = await this.hashString(publicJwkString);\r\n\r\n // Generate Thumbprint for Private Key\r\n const privateKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.privateKey);\r\n // Re-import private key to make it unextractable\r\n const unextractablePrivateKey: CryptoKey = await this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"]);\r\n\r\n // Store Keypair data in keystore\r\n await this.cache.asymmetricKeys.setItem(\r\n publicJwkHash, \r\n {\r\n privateKey: unextractablePrivateKey,\r\n publicKey: keyPair.publicKey,\r\n requestMethod: request.resourceRequestMethod,\r\n requestUri: request.resourceRequestUri\r\n }\r\n );\r\n\r\n if (publicKeyThumbMeasurement) {\r\n publicKeyThumbMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n\r\n return publicJwkHash;\r\n }\r\n\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid \r\n */\r\n async removeTokenBindingKey(kid: string): Promise {\r\n await this.cache.asymmetricKeys.removeItem(kid);\r\n const keyFound = await this.cache.asymmetricKeys.containsKey(kid);\r\n return !keyFound;\r\n }\r\n\r\n /**\r\n * Removes all cryptographic keys from IndexedDB storage\r\n */\r\n async clearKeystore(): Promise {\r\n return await this.cache.clear();\r\n }\r\n\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid.\r\n * @param payload \r\n * @param kid \r\n */\r\n async signJwt(payload: SignedHttpRequest, kid: string, correlationId?: string): Promise {\r\n const signJwtMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);\r\n const cachedKeyPair = await this.cache.asymmetricKeys.getItem(kid);\r\n \r\n if (!cachedKeyPair) {\r\n throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\r\n }\r\n\r\n // Get public key as JWK\r\n const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);\r\n const publicKeyJwkString = BrowserStringUtils.getSortedObjectString(publicKeyJwk);\r\n\r\n // Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: \"FULL_PUBLIC_KEY_HASH\" })\r\n const encodedKeyIdThumbprint = this.b64Encode.urlEncode(JSON.stringify({ kid: kid }));\r\n \r\n // Generate header\r\n const shrHeader = JoseHeader.getShrHeaderString({ kid: encodedKeyIdThumbprint, alg: publicKeyJwk.alg });\r\n const encodedShrHeader = this.b64Encode.urlEncode(shrHeader);\r\n\r\n // Generate payload\r\n payload.cnf = {\r\n jwk: JSON.parse(publicKeyJwkString)\r\n };\r\n const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\r\n\r\n // Form token string\r\n const tokenString = `${encodedShrHeader}.${encodedPayload}`;\r\n\r\n // Sign token\r\n const tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\r\n const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);\r\n const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\r\n\r\n const signedJwt = `${tokenString}.${encodedSignature}`;\r\n\r\n if (signJwtMeasurement) {\r\n signJwtMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n\r\n return signedJwt;\r\n }\r\n\r\n /**\r\n * Returns the SHA-256 hash of an input string\r\n * @param plainText\r\n */\r\n async hashString(plainText: string): Promise {\r\n const hashBuffer: ArrayBuffer = await this.browserCrypto.sha256Digest(plainText);\r\n const hashBytes = new Uint8Array(hashBuffer);\r\n return this.b64Encode.urlEncodeArr(hashBytes);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ApplicationTelemetry } from \"../../config/ClientConfiguration\";\r\nimport { Logger } from \"../../logger/Logger\";\r\nimport {\r\n InProgressPerformanceEvent,\r\n IPerformanceClient,\r\n PerformanceCallbackFunction,\r\n QueueMeasurement\r\n} from \"./IPerformanceClient\";\r\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\r\nimport {\r\n Counters,\r\n IntFields,\r\n PerformanceEvent,\r\n PerformanceEvents,\r\n PerformanceEventStatus,\r\n StaticFields\r\n} from \"./PerformanceEvent\";\r\n\r\nexport interface PreQueueEvent {\r\n name: PerformanceEvents;\r\n time: number;\r\n}\r\n\r\nexport abstract class PerformanceClient implements IPerformanceClient {\r\n protected authority: string;\r\n protected libraryName: string;\r\n protected libraryVersion: string;\r\n protected applicationTelemetry: ApplicationTelemetry;\r\n protected clientId: string;\r\n protected logger: Logger;\r\n protected callbacks: Map;\r\n\r\n /**\r\n * Multiple events with the same correlation id.\r\n * @protected\r\n * @type {Map}\r\n */\r\n protected eventsByCorrelationId: Map;\r\n\r\n /**\r\n * Map of pre-queue times by correlation Id\r\n *\r\n * @protected\r\n * @type {Map}\r\n */\r\n protected preQueueTimeByCorrelationId: Map;\r\n\r\n /**\r\n * Map of queue measurements by correlation Id\r\n *\r\n * @protected\r\n * @type {Map>}\r\n */\r\n protected queueMeasurements: Map>;\r\n\r\n /**\r\n * Creates an instance of PerformanceClient,\r\n * an abstract class containing core performance telemetry logic.\r\n *\r\n * @constructor\r\n * @param {string} clientId Client ID of the application\r\n * @param {string} authority Authority used by the application\r\n * @param {Logger} logger Logger used by the application\r\n * @param {string} libraryName Name of the library\r\n * @param {string} libraryVersion Version of the library\r\n */\r\n constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry) {\r\n this.authority = authority;\r\n this.libraryName = libraryName;\r\n this.libraryVersion = libraryVersion;\r\n this.applicationTelemetry = applicationTelemetry;\r\n this.clientId = clientId;\r\n this.logger = logger;\r\n this.callbacks = new Map();\r\n this.eventsByCorrelationId = new Map();\r\n this.queueMeasurements = new Map();\r\n this.preQueueTimeByCorrelationId = new Map();\r\n }\r\n\r\n /**\r\n * Generates and returns a unique id, typically a guid.\r\n *\r\n * @abstract\r\n * @returns {string}\r\n */\r\n abstract generateId(): string;\r\n\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this function can be changed to abstract at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n */\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n startPerformanceMeasurement(measureName: string, correlationId: string): IPerformanceMeasurement {\r\n return {} as IPerformanceMeasurement;\r\n }\r\n\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this incorrectly-named function will be removed at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n */\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement {\r\n return {} as IPerformanceMeasurement;\r\n }\r\n\r\n /**\r\n * Sets pre-queue time by correlation Id\r\n *\r\n * @abstract\r\n * @param {PerformanceEvents} eventName\r\n * @param {string} correlationId\r\n * @returns\r\n */\r\n abstract setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void;\r\n\r\n /**\r\n * Get integral fields.\r\n * Override to change the set.\r\n */\r\n getIntFields(): ReadonlySet {\r\n return IntFields;\r\n }\r\n\r\n /**\r\n * Gets map of pre-queue times by correlation Id\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {string} correlationId\r\n * @returns {number}\r\n */\r\n getPreQueueTime(eventName: PerformanceEvents, correlationId: string): number | void {\r\n const preQueueEvent: PreQueueEvent | undefined = this.preQueueTimeByCorrelationId.get(correlationId);\r\n\r\n if (!preQueueEvent) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`);\r\n return;\r\n } else if (preQueueEvent.name !== eventName) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`);\r\n return;\r\n }\r\n\r\n return preQueueEvent.time;\r\n }\r\n\r\n /**\r\n * Calculates the difference between current time and time when function was queued.\r\n * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same.\r\n *\r\n * @param {number} preQueueTime\r\n * @param {number} currentTime\r\n * @returns {number}\r\n */\r\n calculateQueuedTime(preQueueTime: number, currentTime: number): number {\r\n if (preQueueTime < 1) {\r\n this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`);\r\n return 0;\r\n }\r\n\r\n if (currentTime < 1) {\r\n this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`);\r\n return 0;\r\n }\r\n\r\n if (currentTime < preQueueTime) {\r\n this.logger.trace(\"PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved\");\r\n return 0;\r\n }\r\n\r\n return currentTime-preQueueTime;\r\n }\r\n\r\n /**\r\n * Adds queue measurement time to QueueMeasurements array for given correlation ID.\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @param {?number} queueTime\r\n * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements\r\n * @returns\r\n */\r\n addQueueMeasurement(eventName: PerformanceEvents, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void {\r\n if (!correlationId) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`);\r\n return;\r\n }\r\n\r\n if (queueTime === 0) {\r\n // Possible for there to be no queue time after calculation\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`);\r\n } else if (!queueTime) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`);\r\n return;\r\n }\r\n\r\n const queueMeasurement: QueueMeasurement = {eventName, queueTime, manuallyCompleted};\r\n\r\n // Adds to existing correlation Id if present in queueMeasurements\r\n const existingMeasurements = this.queueMeasurements.get(correlationId);\r\n if (existingMeasurements) {\r\n existingMeasurements.push(queueMeasurement);\r\n this.queueMeasurements.set(correlationId, existingMeasurements);\r\n } else {\r\n // Sets new correlation Id if not present in queueMeasurements\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`);\r\n const measurementArray = [queueMeasurement];\r\n this.queueMeasurements.set(correlationId, measurementArray);\r\n }\r\n // Delete processed pre-queue event.\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n }\r\n\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {InProgressPerformanceEvent}\r\n */\r\n startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\r\n // Generate a placeholder correlation if the request does not provide one\r\n const eventCorrelationId = correlationId || this.generateId();\r\n if (!correlationId) {\r\n this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId);\r\n }\r\n\r\n // Duplicate code to address spelling error will be removed at the next major version bump.\r\n this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId);\r\n const performanceMeasurement = this.startPerformanceMeasuremeant(measureName, eventCorrelationId);\r\n performanceMeasurement.startMeasurement();\r\n\r\n const inProgressEvent: PerformanceEvent = {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: this.authority,\r\n libraryName: this.libraryName,\r\n libraryVersion: this.libraryVersion,\r\n clientId: this.clientId,\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: eventCorrelationId,\r\n appName: this.applicationTelemetry?.appName,\r\n appVersion: this.applicationTelemetry?.appVersion,\r\n };\r\n\r\n // Store in progress events so they can be discarded if not ended properly\r\n this.cacheEventByCorrelationId(inProgressEvent);\r\n\r\n // Return the event and functions the caller can use to properly end/flush the measurement\r\n return {\r\n endMeasurement: (event?: Partial): PerformanceEvent | null => {\r\n return this.endMeasurement({\r\n // Initial set of event properties\r\n ...inProgressEvent,\r\n // Properties set when event ends\r\n ...event\r\n },\r\n performanceMeasurement);\r\n },\r\n discardMeasurement: () => {\r\n return this.discardMeasurements(inProgressEvent.correlationId);\r\n },\r\n addStaticFields: (fields: StaticFields) => {\r\n return this.addStaticFields(fields, inProgressEvent.correlationId);\r\n },\r\n increment: (counters: Counters) => {\r\n return this.increment(counters, inProgressEvent.correlationId);\r\n },\r\n measurement: performanceMeasurement,\r\n event: inProgressEvent\r\n };\r\n\r\n }\r\n\r\n /**\r\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\r\n * as consumers should instead use the function returned by startMeasurement.\r\n * Adds a new field named as \"[event name]DurationMs\" for sub-measurements, completes and emits an event\r\n * otherwise.\r\n *\r\n * @param {PerformanceEvent} event\r\n * @param {IPerformanceMeasurement} measurement\r\n * @returns {(PerformanceEvent | null)}\r\n */\r\n endMeasurement(event: PerformanceEvent, measurement?: IPerformanceMeasurement): PerformanceEvent | null {\r\n const rootEvent: PerformanceEvent | undefined = this.eventsByCorrelationId.get(event.correlationId);\r\n if (!rootEvent) {\r\n this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId);\r\n return null;\r\n }\r\n\r\n const isRoot = event.eventId === rootEvent.eventId;\r\n let queueInfo = {\r\n totalQueueTime: 0,\r\n totalQueueCount: 0,\r\n manuallyCompletedCount: 0\r\n };\r\n if (isRoot) {\r\n queueInfo = this.getQueueInfo(event.correlationId);\r\n this.discardCache(rootEvent.correlationId);\r\n } else {\r\n rootEvent.incompleteSubMeasurements?.delete(event.eventId);\r\n }\r\n\r\n measurement?.endMeasurement();\r\n const durationMs = measurement?.flushMeasurement();\r\n // null indicates no measurement was taken (e.g. needed performance APIs not present)\r\n if (!durationMs) {\r\n this.logger.trace(\"PerformanceClient: Performance measurement not taken\", rootEvent.correlationId);\r\n return null;\r\n }\r\n\r\n this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${durationMs} ms`, event.correlationId);\r\n\r\n // Add sub-measurement attribute to root event.\r\n if (!isRoot) {\r\n rootEvent[event.name + \"DurationMs\"] = Math.floor(durationMs);\r\n return { ...rootEvent };\r\n }\r\n\r\n let finalEvent: PerformanceEvent = { ...rootEvent, ...event };\r\n let incompleteSubsCount: number = 0;\r\n // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed.\r\n finalEvent.incompleteSubMeasurements?.forEach(subMeasurement => {\r\n this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId);\r\n incompleteSubsCount++;\r\n });\r\n finalEvent.incompleteSubMeasurements = undefined;\r\n\r\n finalEvent = {\r\n ...finalEvent,\r\n durationMs: Math.round(durationMs),\r\n queuedTimeMs: queueInfo.totalQueueTime,\r\n queuedCount: queueInfo.totalQueueCount,\r\n queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount,\r\n status: PerformanceEventStatus.Completed,\r\n incompleteSubsCount\r\n };\r\n this.truncateIntegralFields(finalEvent, this.getIntFields());\r\n this.emitEvents([finalEvent], event.correlationId);\r\n\r\n return finalEvent;\r\n }\r\n\r\n /**\r\n * Saves extra information to be emitted when the measurements are flushed\r\n * @param fields\r\n * @param correlationId\r\n */\r\n addStaticFields(fields: StaticFields, correlationId: string) : void {\r\n this.logger.trace(\"PerformanceClient: Updating static fields\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n this.eventsByCorrelationId.set(correlationId, {...event, ...fields});\r\n } else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n\r\n /**\r\n * Increment counters to be emitted when the measurements are flushed\r\n * @param counters {Counters}\r\n * @param correlationId {string} correlation identifier\r\n */\r\n increment(counters: Counters, correlationId: string): void {\r\n this.logger.trace(\"PerformanceClient: Updating counters\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n for (const counter in counters) {\r\n if (!event.hasOwnProperty(counter)) {\r\n event[counter] = 0;\r\n }\r\n event[counter] += counters[counter];\r\n }\r\n } else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n\r\n /**\r\n * Upserts event into event cache.\r\n * First key is the correlation id, second key is the event id.\r\n * Allows for events to be grouped by correlation id,\r\n * and to easily allow for properties on them to be updated.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n */\r\n private cacheEventByCorrelationId(event: PerformanceEvent) {\r\n const rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (rootEvent) {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId);\r\n rootEvent.incompleteSubMeasurements = rootEvent.incompleteSubMeasurements || new Map();\r\n rootEvent.incompleteSubMeasurements.set(event.eventId, {name: event.name, startTimeMs: event.startTimeMs });\r\n } else {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId);\r\n this.eventsByCorrelationId.set(event.correlationId, { ...event });\r\n }\r\n }\r\n\r\n private getQueueInfo(correlationId: string): { totalQueueTime: number, totalQueueCount: number, manuallyCompletedCount: number } {\r\n const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId);\r\n if (!queueMeasurementForCorrelationId) {\r\n this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`);\r\n }\r\n\r\n let totalQueueTime = 0;\r\n let totalQueueCount = 0;\r\n let manuallyCompletedCount = 0;\r\n queueMeasurementForCorrelationId?.forEach((measurement) => {\r\n totalQueueTime += measurement.queueTime;\r\n totalQueueCount++;\r\n manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0;\r\n });\r\n\r\n return {\r\n totalQueueTime,\r\n totalQueueCount,\r\n manuallyCompletedCount\r\n };\r\n }\r\n\r\n /**\r\n * Removes measurements for a given correlation id.\r\n *\r\n * @param {string} correlationId\r\n */\r\n discardMeasurements(correlationId: string): void {\r\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\r\n this.eventsByCorrelationId.delete(correlationId);\r\n }\r\n\r\n /**\r\n * Removes cache for a given correlation id.\r\n *\r\n * @param {string} correlationId correlation identifier\r\n */\r\n private discardCache(correlationId: string): void {\r\n this.discardMeasurements(correlationId);\r\n\r\n this.logger.trace(\"PerformanceClient: QueueMeasurements discarded\", correlationId);\r\n this.queueMeasurements.delete(correlationId);\r\n\r\n this.logger.trace(\"PerformanceClient: Pre-queue times discarded\", correlationId);\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n }\r\n\r\n /**\r\n * Registers a callback function to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\r\n const callbackId = this.generateId();\r\n this.callbacks.set(callbackId, callback);\r\n this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`);\r\n\r\n return callbackId;\r\n }\r\n\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n removePerformanceCallback(callbackId: string): boolean {\r\n const result = this.callbacks.delete(callbackId);\r\n\r\n if (result) {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`);\r\n } else {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Emits events to all registered callbacks.\r\n *\r\n * @param {PerformanceEvent[]} events\r\n * @param {?string} [correlationId]\r\n */\r\n emitEvents(events: PerformanceEvent[], correlationId: string): void {\r\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\r\n\r\n this.callbacks.forEach((callback: PerformanceCallbackFunction, callbackId: string) => {\r\n this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId);\r\n callback.apply(null, [events]);\r\n });\r\n }\r\n\r\n /**\r\n * Enforce truncation of integral fields in performance event.\r\n * @param {PerformanceEvent} event performance event to update.\r\n * @param {Set} intFields integral fields.\r\n */\r\n private truncateIntegralFields(event: PerformanceEvent, intFields: ReadonlySet): void {\r\n intFields.forEach((key) => {\r\n if (key in event && typeof event[key] === \"number\") {\r\n event[key] = Math.floor(event[key]);\r\n }\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IPerformanceClient } from \"./IPerformanceClient\";\r\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\r\nimport { PerformanceClient } from \"./PerformanceClient\";\r\nimport { PerformanceEvents } from \"./PerformanceEvent\";\r\n\r\nexport class StubPerformanceMeasurement implements IPerformanceMeasurement {\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n startMeasurement(): void { }\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n endMeasurement(): void { }\r\n flushMeasurement(): number | null {\r\n return null;\r\n }\r\n \r\n}\r\n\r\nexport class StubPerformanceClient extends PerformanceClient implements IPerformanceClient {\r\n generateId(): string {\r\n return \"callback-id\";\r\n }\r\n \r\n startPerformanceMeasuremeant(): IPerformanceMeasurement {\r\n return new StubPerformanceMeasurement();\r\n }\r\n\r\n startPerformanceMeasurement(): IPerformanceMeasurement {\r\n return new StubPerformanceMeasurement();\r\n }\r\n\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n calculateQueuedTime(preQueueTime: number, currentTime: number): number {\r\n return 0;\r\n }\r\n\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n addQueueMeasurement(eventName: PerformanceEvents, correlationId: string, queueTime: number): void {\r\n return;\r\n }\r\n\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n setPreQueueTime(eventName: PerformanceEvents, correlationId?: string | undefined): void {\r\n return;\r\n }\r\n\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\nimport { SignedHttpRequest } from \"./SignedHttpRequest\";\r\n\r\n/**\r\n * The PkceCodes type describes the structure\r\n * of objects that contain PKCE code\r\n * challenge and verifier pairs\r\n */\r\nexport type PkceCodes = {\r\n verifier: string,\r\n challenge: string\r\n};\r\n\r\nexport type SignedHttpRequestParameters = Pick & {\r\n correlationId?: string\r\n};\r\n\r\n/**\r\n * Interface for crypto functions used by library\r\n */\r\nexport interface ICrypto {\r\n /**\r\n * Creates a guid randomly.\r\n */\r\n createNewGuid(): string;\r\n /**\r\n * base64 Encode string\r\n * @param input \r\n */\r\n base64Encode(input: string): string;\r\n /**\r\n * base64 decode string\r\n * @param input \r\n */\r\n base64Decode(input: string): string;\r\n /**\r\n * Generate PKCE codes for OAuth. See RFC here: https://tools.ietf.org/html/rfc7636\r\n */\r\n generatePkceCodes(): Promise;\r\n /**\r\n * Generates an JWK RSA S256 Thumbprint\r\n * @param request\r\n */\r\n getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise;\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid \r\n */\r\n removeTokenBindingKey(kid: string): Promise;\r\n /**\r\n * Removes all cryptographic keys from IndexedDB storage\r\n */\r\n clearKeystore(): Promise;\r\n /** \r\n * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid.\r\n * @param accessToken \r\n */\r\n signJwt(payload: SignedHttpRequest, kid: string, correlationId?: string): Promise;\r\n /**\r\n * Returns the SHA-256 hash of an input string\r\n * @param plainText\r\n */\r\n hashString(plainText: string): Promise;\r\n}\r\n\r\nexport const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = {\r\n createNewGuid: (): string => {\r\n const notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Decode: (): string => {\r\n const notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Encode: (): string => {\r\n const notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async generatePkceCodes(): Promise {\r\n const notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async getPublicKeyThumbprint(): Promise {\r\n const notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async removeTokenBindingKey(): Promise {\r\n const notImplErr = \"Crypto interface - removeTokenBindingKey() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async clearKeystore(): Promise {\r\n const notImplErr = \"Crypto interface - clearKeystore() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async signJwt(): Promise {\r\n const notImplErr = \"Crypto interface - signJwt() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async hashString(): Promise {\r\n const notImplErr = \"Crypto interface - hashString() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Separators, CredentialType, CacheType, Constants, AuthenticationScheme } from \"../../utils/Constants\";\r\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\r\n\r\n/**\r\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: -------\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * tokenType: Matches the authentication scheme for which the token was issued (i.e. Bearer or pop)\r\n * requestedClaimsHash: Matches the SHA 256 hash of the claims object included in the token request\r\n * userAssertionHash: Matches the SHA 256 hash of the obo_assertion for the OBO flow\r\n * }\r\n */\r\nexport class CredentialEntity {\r\n homeAccountId: string;\r\n environment: string;\r\n credentialType: CredentialType;\r\n clientId: string;\r\n secret: string;\r\n familyId?: string;\r\n realm?: string;\r\n target?: string;\r\n userAssertionHash?: string;\r\n tokenType?: AuthenticationScheme;\r\n keyId?: string;\r\n requestedClaimsHash?: string;\r\n\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n generateAccountId(): string {\r\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\r\n }\r\n\r\n /**\r\n * Generate Credential Id key component as per the schema: --\r\n */\r\n generateCredentialId(): string {\r\n return CredentialEntity.generateCredentialIdForCacheKey(\r\n this.credentialType,\r\n this.clientId,\r\n this.realm,\r\n this.familyId\r\n );\r\n }\r\n\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n generateTarget(): string {\r\n return CredentialEntity.generateTargetForCacheKey(this.target);\r\n }\r\n\r\n /**\r\n * generates credential key\r\n */\r\n generateCredentialKey(): string {\r\n return CredentialEntity.generateCredentialCacheKey(\r\n this.homeAccountId,\r\n this.environment,\r\n this.credentialType,\r\n this.clientId,\r\n this.realm,\r\n this.target,\r\n this.familyId,\r\n this.tokenType,\r\n this.requestedClaimsHash,\r\n );\r\n }\r\n\r\n /**\r\n * returns the type of the cache (in this case credential)\r\n */\r\n generateType(): number {\r\n switch (this.credentialType) {\r\n case CredentialType.ID_TOKEN:\r\n return CacheType.ID_TOKEN;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n return CacheType.ACCESS_TOKEN;\r\n case CredentialType.REFRESH_TOKEN:\r\n return CacheType.REFRESH_TOKEN;\r\n default: {\r\n throw ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * generates credential key\r\n * -\\-----\r\n */\r\n static generateCredentialCacheKey(\r\n homeAccountId: string,\r\n environment: string,\r\n credentialType: CredentialType,\r\n clientId: string,\r\n realm?: string,\r\n target?: string,\r\n familyId?: string,\r\n tokenType?: AuthenticationScheme,\r\n requestedClaimsHash?: string\r\n ): string {\r\n const credentialKey = [\r\n this.generateAccountIdForCacheKey(homeAccountId, environment),\r\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\r\n this.generateTargetForCacheKey(target),\r\n this.generateClaimsHashForCacheKey(requestedClaimsHash),\r\n this.generateSchemeForCacheKey(tokenType)\r\n ];\r\n\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * generates Account Id for keys\r\n * @param homeAccountId\r\n * @param environment\r\n */\r\n private static generateAccountIdForCacheKey(\r\n homeAccountId: string,\r\n environment: string\r\n ): string {\r\n const accountId: Array = [homeAccountId, environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generates Credential Id for keys\r\n * @param credentialType\r\n * @param realm\r\n * @param clientId\r\n * @param familyId\r\n */\r\n private static generateCredentialIdForCacheKey(\r\n credentialType: CredentialType,\r\n clientId: string,\r\n realm?: string,\r\n familyId?: string\r\n ): string {\r\n const clientOrFamilyId =\r\n credentialType === CredentialType.REFRESH_TOKEN\r\n ? familyId || clientId\r\n : clientId;\r\n const credentialId: Array = [\r\n credentialType,\r\n clientOrFamilyId,\r\n realm || Constants.EMPTY_STRING,\r\n ];\r\n\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n private static generateTargetForCacheKey(scopes?: string): string {\r\n return (scopes || Constants.EMPTY_STRING).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate requested claims key component as per schema: \r\n */\r\n private static generateClaimsHashForCacheKey(requestedClaimsHash?: string): string {\r\n return(requestedClaimsHash || Constants.EMPTY_STRING).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate scheme key componenet as per schema: \r\n */\r\n private static generateSchemeForCacheKey(tokenType?: string): string {\r\n /*\r\n * PoP Tokens and SSH certs include scheme in cache key\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType } from \"../../utils/Constants\";\r\n\r\n/**\r\n * ID_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * }\r\n */\r\nexport class IdTokenEntity extends CredentialEntity {\r\n realm: string;\r\n\r\n /**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n static createIdTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n idToken: string,\r\n clientId: string,\r\n tenantId: string,\r\n ): IdTokenEntity {\r\n const idTokenEntity = new IdTokenEntity();\r\n\r\n idTokenEntity.credentialType = CredentialType.ID_TOKEN;\r\n idTokenEntity.homeAccountId = homeAccountId;\r\n idTokenEntity.environment = environment;\r\n idTokenEntity.clientId = clientId;\r\n idTokenEntity.secret = idToken;\r\n idTokenEntity.realm = tenantId;\r\n\r\n return idTokenEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isIdTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientAuthError } from \"./ClientAuthError\";\r\n\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n claimsRequestParsingError: {\r\n code: \"claims_request_parsing_error\",\r\n desc: \"Could not parse the given claims request object.\"\r\n },\r\n authorityUriInsecure: {\r\n code: \"authority_uri_insecure\",\r\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\"\r\n },\r\n urlParseError: {\r\n code: \"url_parse_error\",\r\n desc: \"URL could not be parsed into appropriate segments.\"\r\n },\r\n urlEmptyError: {\r\n code: \"empty_url_error\",\r\n desc: \"URL was empty or null.\"\r\n },\r\n emptyScopesError: {\r\n code: \"empty_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\r\n },\r\n nonArrayScopesError: {\r\n code: \"nonarray_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as non-array.\"\r\n },\r\n clientIdSingleScopeError: {\r\n code: \"clientid_input_scopes_error\",\r\n desc: \"Client ID can only be provided as a single scope.\"\r\n },\r\n invalidPrompt: {\r\n code: \"invalid_prompt_value\",\r\n desc: \"Supported prompt values are 'login', 'select_account', 'consent', 'create', 'none' and 'no_session'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\r\n },\r\n invalidClaimsRequest: {\r\n code: \"invalid_claims\",\r\n desc: \"Given claims parameter must be a stringified JSON object.\"\r\n },\r\n tokenRequestEmptyError: {\r\n code: \"token_request_empty\",\r\n desc: \"Token request was empty and not found in cache.\"\r\n },\r\n logoutRequestEmptyError: {\r\n code: \"logout_request_empty\",\r\n desc: \"The logout request was null or undefined.\"\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: \"invalid_code_challenge_method\",\r\n desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\r\n },\r\n invalidCodeChallengeParams: {\r\n code: \"pkce_params_missing\",\r\n desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: \"invalid_cloud_discovery_metadata\",\r\n desc: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\"\r\n },\r\n invalidAuthorityMetadata: {\r\n code: \"invalid_authority_metadata\",\r\n desc: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\"\r\n },\r\n untrustedAuthority: {\r\n code: \"untrusted_authority\",\r\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\r\n },\r\n invalidAzureCloudInstance: {\r\n code: \"invalid_azure_cloud_instance\",\r\n desc: \"Invalid AzureCloudInstance provided. Please refer MSAL JS docs: aks.ms/msaljs/azure_cloud_instance for valid values\"\r\n },\r\n missingSshJwk: {\r\n code: \"missing_ssh_jwk\",\r\n desc: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\"\r\n },\r\n missingSshKid: {\r\n code: \"missing_ssh_kid\",\r\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.\"\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: \"missing_nonce_authentication_header\",\r\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.\"\r\n },\r\n invalidAuthenticationHeader: {\r\n code: \"invalid_authentication_header\",\r\n desc: \"Invalid authentication header provided\"\r\n },\r\n authorityMismatch: {\r\n code: \"authority_mismatch\",\r\n desc: \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\"\r\n }\r\n};\r\n\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nexport class ClientConfigurationError extends ClientAuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n static createRedirectUriEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code,\r\n ClientConfigurationErrorMessage.redirectUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n static createPostLogoutRedirectUriEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code,\r\n ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the claims request could not be successfully parsed\r\n */\r\n static createClaimsRequestParsingError(claimsRequestParseError: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code,\r\n `${ClientConfigurationErrorMessage.claimsRequestParsingError.desc} Given value: ${claimsRequestParseError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if authority uri is given an insecure protocol.\r\n * @param urlString\r\n */\r\n static createInsecureAuthorityUriError(urlString: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code,\r\n `${ClientConfigurationErrorMessage.authorityUriInsecure.desc} Given URI: ${urlString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if URL string does not parse into separate segments.\r\n * @param urlString\r\n */\r\n static createUrlParseError(urlParseError: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code,\r\n `${ClientConfigurationErrorMessage.urlParseError.desc} Given Error: ${urlParseError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if URL string is empty or null.\r\n * @param urlString\r\n */\r\n static createUrlEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code,\r\n ClientConfigurationErrorMessage.urlEmptyError.desc);\r\n }\r\n\r\n /**\r\n * Error thrown when scopes are empty.\r\n * @param scopesValue\r\n */\r\n static createEmptyScopesArrayError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code,\r\n `${ClientConfigurationErrorMessage.emptyScopesError.desc}`);\r\n }\r\n\r\n /**\r\n * Error thrown when client id scope is not provided as single scope.\r\n * @param inputScopes\r\n */\r\n static createClientIdSingleScopeError(inputScopes: Array): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code,\r\n `${ClientConfigurationErrorMessage.clientIdSingleScopeError.desc} Given Scopes: ${inputScopes}`);\r\n }\r\n\r\n /**\r\n * Error thrown when prompt is not an allowed type.\r\n * @param promptValue\r\n */\r\n static createInvalidPromptError(promptValue: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code,\r\n `${ClientConfigurationErrorMessage.invalidPrompt.desc} Given value: ${promptValue}`);\r\n }\r\n\r\n /**\r\n * Creates error thrown when claims parameter is not a stringified JSON object\r\n */\r\n static createInvalidClaimsRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code,\r\n ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\r\n }\r\n\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n static createEmptyLogoutRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.logoutRequestEmptyError.code,\r\n ClientConfigurationErrorMessage.logoutRequestEmptyError.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n static createEmptyTokenRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.tokenRequestEmptyError.code,\r\n ClientConfigurationErrorMessage.tokenRequestEmptyError.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when an invalid code_challenge_method is passed by the user\r\n */\r\n static createInvalidCodeChallengeMethodError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code,\r\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when both params: code_challenge and code_challenge_method are not passed together\r\n */\r\n static createInvalidCodeChallengeParamsError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.code,\r\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n static createInvalidCloudDiscoveryMetadataError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code,\r\n ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n static createInvalidAuthorityMetadataError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code,\r\n ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws error when provided authority is not a member of the trusted host list\r\n */\r\n static createUntrustedAuthorityError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code,\r\n ClientConfigurationErrorMessage.untrustedAuthority.desc);\r\n }\r\n\r\n /**\r\n * Throws error when the AzureCloudInstance is set to an invalid value\r\n */\r\n static createInvalidAzureCloudInstanceError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAzureCloudInstance.code,\r\n ClientConfigurationErrorMessage.invalidAzureCloudInstance.desc);\r\n }\r\n\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key is omitted from the request\r\n */\r\n static createMissingSshJwkError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshJwk.code,\r\n ClientConfigurationErrorMessage.missingSshJwk.desc);\r\n }\r\n\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key ID is omitted from the request\r\n */\r\n static createMissingSshKidError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshKid.code,\r\n ClientConfigurationErrorMessage.missingSshKid.desc);\r\n }\r\n\r\n /**\r\n * Throws error when provided headers don't contain a header that a server nonce can be extracted from\r\n */\r\n static createMissingNonceAuthenticationHeadersError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.code,\r\n ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.desc);\r\n }\r\n\r\n /**\r\n * Throws error when a provided header is invalid in any way\r\n */\r\n static createInvalidAuthenticationHeaderError(invalidHeaderName: string, details: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthenticationHeader.code,\r\n `${ClientConfigurationErrorMessage.invalidAuthenticationHeader.desc}. Invalid header: ${invalidHeaderName}. Details: ${details}`);\r\n }\r\n \r\n /**\r\n * Create an error when the authority provided in request does not match authority provided in account or MSAL.js configuration.\r\n */\r\n static createAuthorityMismatchError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityMismatch.code, ClientConfigurationErrorMessage.authorityMismatch.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { Constants, OIDC_SCOPES } from \"../utils/Constants\";\r\n\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nexport class ScopeSet {\r\n // Scopes as a Set of strings\r\n private scopes: Set;\r\n\r\n constructor(inputScopes: Array) {\r\n // Filter empty string and null/undefined array items\r\n const scopeArr = inputScopes ? StringUtils.trimArrayEntries([...inputScopes]) : [];\r\n const filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\r\n\r\n // Validate and filter scopes (validate function throws if validation fails)\r\n this.validateInputScopes(filteredInput);\r\n\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach(scope => this.scopes.add(scope));\r\n }\r\n\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n static fromString(inputScopeString: string): ScopeSet {\r\n const scopeString = inputScopeString || Constants.EMPTY_STRING;\r\n const inputScopes: Array = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n }\r\n\r\n /**\r\n * Creates the set of scopes to search for in cache lookups\r\n * @param inputScopeString \r\n * @returns \r\n */\r\n static createSearchScopes(inputScopeString: Array): ScopeSet {\r\n const scopeSet = new ScopeSet(inputScopeString);\r\n if (!scopeSet.containsOnlyOIDCScopes()) {\r\n scopeSet.removeOIDCScopes();\r\n } else {\r\n scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n\r\n return scopeSet;\r\n }\r\n\r\n /**\r\n * Used to validate the scopes input parameter requested by the developer.\r\n * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\r\n */\r\n private validateInputScopes(inputScopes: Array): void {\r\n // Check if scopes are required but not given or is an empty array\r\n if (!inputScopes || inputScopes.length < 1) {\r\n throw ClientConfigurationError.createEmptyScopesArrayError();\r\n }\r\n }\r\n\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n containsScope(scope: string): boolean {\r\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\r\n }\r\n\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n containsScopeSet(scopeSet: ScopeSet): boolean {\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n\r\n return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(scope => this.containsScope(scope)));\r\n }\r\n\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n containsOnlyOIDCScopes(): boolean {\r\n let defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach((defaultScope: string) => {\r\n if (this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n\r\n return this.scopes.size === defaultScopeCount;\r\n }\r\n\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n appendScope(newScope: string): void {\r\n if (!StringUtils.isEmpty(newScope)) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n }\r\n\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n appendScopes(newScopes: Array): void {\r\n try {\r\n newScopes.forEach(newScope => this.appendScope(newScope));\r\n } catch (e) {\r\n throw ClientAuthError.createAppendScopeSetError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n removeScope(scope: string): void {\r\n if (StringUtils.isEmpty(scope)) {\r\n throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n }\r\n\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n removeOIDCScopes(): void {\r\n OIDC_SCOPES.forEach((defaultScope: string) => {\r\n this.scopes.delete(defaultScope);\r\n });\r\n }\r\n\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n unionScopeSets(otherScopes: ScopeSet): Set {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\r\n this.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\r\n return unionScopes;\r\n }\r\n\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n intersectingScopeSets(otherScopes: ScopeSet): boolean {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n \r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n const unionScopes = this.unionScopeSets(otherScopes);\r\n const sizeOtherScopes = otherScopes.getScopeCount();\r\n const sizeThisScopes = this.getScopeCount();\r\n const sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\r\n }\r\n\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n getScopeCount(): number {\r\n return this.scopes.size;\r\n }\r\n\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n asArray(): Array {\r\n const array: Array = [];\r\n this.scopes.forEach(val => array.push(val));\r\n return array;\r\n }\r\n\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n printScopes(): string {\r\n if (this.scopes) {\r\n const scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n printScopesLowerCase(): string {\r\n return this.printScopes().toLowerCase();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { Separators, Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * Client info object which consists of two IDs. Need to add more info here.\r\n */\r\nexport type ClientInfo = {\r\n uid: string,\r\n utid: string\r\n};\r\n\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nexport function buildClientInfo(rawClientInfo: string, crypto: ICrypto): ClientInfo {\r\n if (StringUtils.isEmpty(rawClientInfo)) {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n\r\n try {\r\n const decodedClientInfo: string = crypto.base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo) as ClientInfo;\r\n } catch (e) {\r\n throw ClientAuthError.createClientInfoDecodingError((e as ClientAuthError).message);\r\n }\r\n}\r\n\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId \r\n */\r\nexport function buildClientInfoFromHomeAccountId(homeAccountId: string): ClientInfo {\r\n if (StringUtils.isEmpty(homeAccountId)) {\r\n throw ClientAuthError.createClientInfoDecodingError(\"Home account ID was empty.\");\r\n }\r\n const clientInfoParts: string[] = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1]\r\n };\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport {\r\n Separators,\r\n CacheAccountType,\r\n CacheType,\r\n Constants,\r\n} from \"../../utils/Constants\";\r\nimport { Authority } from \"../../authority/Authority\";\r\nimport { AuthToken } from \"../../account/AuthToken\";\r\nimport { ICrypto } from \"../../crypto/ICrypto\";\r\nimport { buildClientInfo } from \"../../account/ClientInfo\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\nimport { AccountInfo } from \"../../account/AccountInfo\";\r\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\r\nimport { AuthorityType } from \"../../authority/AuthorityType\";\r\nimport { Logger } from \"../../logger/Logger\";\r\nimport { TokenClaims } from \"../../account/TokenClaims\";\r\n\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * clientInfo: Full base64 encoded client info received from ESTS\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * idTokenClaims: Object containing claims parsed from ID token\r\n * nativeAccountId: Account identifier on the native device\r\n * }\r\n */\r\nexport class AccountEntity {\r\n homeAccountId: string;\r\n environment: string;\r\n realm: string;\r\n localAccountId: string;\r\n username: string;\r\n authorityType: string;\r\n name?: string;\r\n clientInfo?: string;\r\n lastModificationTime?: string;\r\n lastModificationApp?: string;\r\n cloudGraphHostName?: string;\r\n msGraphHost?: string;\r\n idTokenClaims?: TokenClaims;\r\n nativeAccountId?: string;\r\n\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n generateAccountId(): string {\r\n const accountId: Array = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate Account Cache Key as per the schema: --\r\n */\r\n generateAccountKey(): string {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId\r\n });\r\n }\r\n\r\n /**\r\n * returns the type of the cache (in this case account)\r\n */\r\n generateType(): number {\r\n switch (this.authorityType) {\r\n case CacheAccountType.ADFS_ACCOUNT_TYPE:\r\n return CacheType.ADFS;\r\n case CacheAccountType.MSAV1_ACCOUNT_TYPE:\r\n return CacheType.MSA;\r\n case CacheAccountType.MSSTS_ACCOUNT_TYPE:\r\n return CacheType.MSSTS;\r\n case CacheAccountType.GENERIC_ACCOUNT_TYPE:\r\n return CacheType.GENERIC;\r\n default: {\r\n throw ClientAuthError.createUnexpectedAccountTypeError();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n getAccountInfo(): AccountInfo {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n idTokenClaims: this.idTokenClaims,\r\n nativeAccountId: this.nativeAccountId\r\n };\r\n }\r\n\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n static generateAccountCacheKey(accountInterface: AccountInfo): string {\r\n const accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || Constants.EMPTY_STRING,\r\n accountInterface.tenantId || Constants.EMPTY_STRING,\r\n ];\r\n\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param clientInfo\r\n * @param authority\r\n * @param idToken\r\n * @param policy\r\n */\r\n static createAccount(\r\n clientInfo: string,\r\n homeAccountId: string,\r\n idToken: AuthToken,\r\n authority?: Authority,\r\n cloudGraphHostName?: string,\r\n msGraphHost?: string,\r\n environment?: string,\r\n nativeAccountId?: string\r\n ): AccountEntity {\r\n const account: AccountEntity = new AccountEntity();\r\n\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n account.clientInfo = clientInfo;\r\n account.homeAccountId = homeAccountId;\r\n account.nativeAccountId = nativeAccountId;\r\n\r\n const env = environment || (authority && authority.getPreferredCache());\r\n\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm = idToken?.claims?.tid || Constants.EMPTY_STRING;\r\n\r\n if (idToken) {\r\n account.idTokenClaims = idToken.claims;\r\n\r\n // How do you account for MSA CID here?\r\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || Constants.EMPTY_STRING;\r\n\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\r\n * In most cases it will contain a single email. This field should not be relied upon if a custom \r\n * policy is configured to return more than 1 email.\r\n */\r\n const preferredUsername = idToken?.claims?.preferred_username;\r\n const email = (idToken?.claims?.emails) ? idToken.claims.emails[0] : null;\r\n \r\n account.username = preferredUsername || email || Constants.EMPTY_STRING;\r\n account.name = idToken?.claims?.name;\r\n }\r\n\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n\r\n return account;\r\n }\r\n\r\n /**\r\n * Builds non-AAD/ADFS account.\r\n * @param authority\r\n * @param idToken\r\n */\r\n static createGenericAccount(\r\n homeAccountId: string,\r\n idToken: AuthToken,\r\n authority?: Authority,\r\n cloudGraphHostName?: string,\r\n msGraphHost?: string,\r\n environment?: string\r\n ): AccountEntity {\r\n const account: AccountEntity = new AccountEntity();\r\n\r\n account.authorityType = (\r\n authority &&\r\n authority.authorityType === AuthorityType.Adfs\r\n ) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n \r\n account.homeAccountId = homeAccountId;\r\n // non AAD scenarios can have empty realm\r\n account.realm = Constants.EMPTY_STRING;\r\n\r\n const env = environment || authority && authority.getPreferredCache();\r\n\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n if (idToken) {\r\n // How do you account for MSA CID here?\r\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || Constants.EMPTY_STRING;\r\n // upn claim for most ADFS scenarios\r\n account.username = idToken?.claims?.upn || Constants.EMPTY_STRING;\r\n account.name = idToken?.claims?.name || Constants.EMPTY_STRING;\r\n account.idTokenClaims = idToken?.claims;\r\n }\r\n\r\n account.environment = env;\r\n\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n\r\n /*\r\n * add uniqueName to claims\r\n * account.name = idToken.claims.uniqueName;\r\n */\r\n\r\n return account;\r\n }\r\n\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n static generateHomeAccountId(\r\n serverClientInfo: string,\r\n authType: AuthorityType,\r\n logger: Logger,\r\n cryptoObj: ICrypto,\r\n idToken?: AuthToken\r\n ): string {\r\n\r\n const accountId = idToken?.claims?.sub ? idToken.claims.sub : Constants.EMPTY_STRING;\r\n\r\n // since ADFS does not have tid and does not set client_info\r\n if (authType === AuthorityType.Adfs || authType === AuthorityType.Dsts) {\r\n return accountId;\r\n }\r\n\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\r\n if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\r\n return `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`;\r\n }\r\n } catch (e) {}\r\n }\r\n\r\n // default to \"sub\" claim\r\n logger.verbose(\"No client info in response\");\r\n return accountId;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccountEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\")\r\n );\r\n }\r\n\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n static accountInfoIsEqual(accountA: AccountInfo | null, accountB: AccountInfo | null, compareClaims?: boolean): boolean {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n\r\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n const accountAClaims = (accountA.idTokenClaims || {}) as TokenClaims;\r\n const accountBClaims = (accountB.idTokenClaims || {}) as TokenClaims;\r\n\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch = (accountAClaims.iat === accountBClaims.iat) &&\r\n (accountAClaims.nonce === accountBClaims.nonce);\r\n }\r\n\r\n return (accountA.homeAccountId === accountB.homeAccountId) &&\r\n (accountA.localAccountId === accountB.localAccountId) &&\r\n (accountA.username === accountB.username) &&\r\n (accountA.tenantId === accountB.tenantId) &&\r\n (accountA.environment === accountB.environment) &&\r\n (accountA.nativeAccountId === accountB.nativeAccountId) &&\r\n claimsMatch;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport type CcsCredential = {\r\n credential: string,\r\n type: CcsCredentialType\r\n};\r\n\r\nexport enum CcsCredentialType {\r\n HOME_ACCOUNT_ID = \"home_account_id\",\r\n UPN = \"UPN\"\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { TokenClaims } from \"./TokenClaims\";\r\nimport { DecodedAuthToken } from \"./DecodedAuthToken\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\n\r\n/**\r\n * JWT Token representation class. Parses token string and generates claims object.\r\n */\r\nexport class AuthToken {\r\n\r\n // Raw Token string\r\n rawToken: string;\r\n // Claims inside token\r\n claims: TokenClaims;\r\n constructor(rawToken: string, crypto: ICrypto) {\r\n if (StringUtils.isEmpty(rawToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\r\n }\r\n\r\n this.rawToken = rawToken;\r\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\r\n }\r\n\r\n /**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\n static extractTokenClaims(encodedToken: string, crypto: ICrypto): TokenClaims {\r\n\r\n const decodedToken: DecodedAuthToken = StringUtils.decodeAuthToken(encodedToken);\r\n\r\n // token will be decoded to get the username\r\n try {\r\n const base64TokenPayload = decodedToken.JWSPayload;\r\n\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = crypto.base64Decode(base64TokenPayload);\r\n return JSON.parse(base64Decoded) as TokenClaims;\r\n } catch (err) {\r\n throw ClientAuthError.createTokenParsingError(err);\r\n }\r\n }\r\n\r\n /**\r\n * Determine if the token's max_age has transpired\r\n */\r\n static checkMaxAge(authTime: number, maxAge: number): void {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if ((maxAge === 0) || ((Date.now() - fiveMinuteSkew) > (authTime + maxAge))) {\r\n throw ClientAuthError.createMaxAgeTranspiredError();\r\n }\r\n }\r\n}\r\n","/* eslint-disable header/header */\r\nexport const name = \"@azure/msal-common\";\r\nexport const version = \"13.2.0\";\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccountFilter, CredentialFilter, ValidCredentialType, AppMetadataFilter, AppMetadataCache, TokenKeys } from \"./utils/CacheTypes\";\r\nimport { CacheRecord } from \"./entities/CacheRecord\";\r\nimport { CredentialType, APP_METADATA, THE_FAMILY_ID, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, Separators } from \"../utils/Constants\";\r\nimport { CredentialEntity } from \"./entities/CredentialEntity\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { AccountEntity } from \"./entities/AccountEntity\";\r\nimport { AccessTokenEntity } from \"./entities/AccessTokenEntity\";\r\nimport { IdTokenEntity } from \"./entities/IdTokenEntity\";\r\nimport { RefreshTokenEntity } from \"./entities/RefreshTokenEntity\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { ICacheManager } from \"./interface/ICacheManager\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { AccountInfo } from \"../account/AccountInfo\";\r\nimport { AppMetadataEntity } from \"./entities/AppMetadataEntity\";\r\nimport { ServerTelemetryEntity } from \"./entities/ServerTelemetryEntity\";\r\nimport { ThrottlingEntity } from \"./entities/ThrottlingEntity\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { AuthorityMetadataEntity } from \"./entities/AuthorityMetadataEntity\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { name, version } from \"../packageMetadata\";\r\n\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n */\r\nexport abstract class CacheManager implements ICacheManager {\r\n protected clientId: string;\r\n protected cryptoImpl: ICrypto;\r\n // Instance of logger for functions defined in the msal-common layer\r\n private commonLogger: Logger;\r\n\r\n constructor(clientId: string, cryptoImpl: ICrypto, logger: Logger) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n this.commonLogger = logger.clone(name, version);\r\n }\r\n\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n abstract getAccount(accountKey: string): AccountEntity | null;\r\n\r\n /**\r\n * set account entity in the platform cache\r\n * @param account\r\n */\r\n abstract setAccount(account: AccountEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param idTokenKey\r\n */\r\n abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param idToken\r\n */\r\n abstract setIdTokenCredential(idToken: IdTokenEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param accessTokenKey\r\n */\r\n abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param accessToken\r\n */\r\n abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param refreshTokenKey\r\n */\r\n abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param refreshToken\r\n */\r\n abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;\r\n\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;\r\n\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n abstract setAppMetadata(appMetadata: AppMetadataEntity): void;\r\n\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null;\r\n\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void;\r\n\r\n /**\r\n * fetch cloud discovery metadata entity from the platform cache\r\n * @param key\r\n */\r\n abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;\r\n\r\n /**\r\n *\r\n */\r\n abstract getAuthorityMetadataKeys(): Array;\r\n\r\n /**\r\n * set cloud discovery metadata entity to the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void;\r\n\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null;\r\n\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void;\r\n\r\n /**\r\n * Function to remove an item from cache given its key.\r\n * @param key\r\n */\r\n abstract removeItem(key: string): void;\r\n\r\n /**\r\n * Function which returns boolean whether cache contains a specific key.\r\n * @param key\r\n */\r\n abstract containsKey(key: string, type?: string): boolean;\r\n\r\n /**\r\n * Function which retrieves all current keys from the cache.\r\n */\r\n abstract getKeys(): string[];\r\n\r\n /**\r\n * Function which retrieves all account keys from the cache\r\n */\r\n abstract getAccountKeys(): string[];\r\n\r\n /**\r\n * Function which retrieves all token keys from the cache\r\n */\r\n abstract getTokenKeys(): TokenKeys;\r\n\r\n /**\r\n * Function which clears cache.\r\n */\r\n abstract clear(): Promise;\r\n\r\n /**\r\n * Function which updates an outdated credential cache key\r\n */\r\n abstract updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string;\r\n\r\n /**\r\n * Returns all accounts in cache\r\n */\r\n getAllAccounts(): AccountInfo[] {\r\n const allAccountKeys = this.getAccountKeys();\r\n if (allAccountKeys.length < 1) {\r\n return [];\r\n }\r\n\r\n const accountEntities: AccountEntity[] = allAccountKeys.reduce((accounts: AccountEntity[], key: string) => {\r\n const entity: AccountEntity | null = this.getAccount(key);\r\n\r\n if (!entity) {\r\n return accounts;\r\n }\r\n accounts.push(entity);\r\n return accounts;\r\n }, []);\r\n\r\n if (accountEntities.length < 1) {\r\n return [];\r\n } else {\r\n const allAccounts = accountEntities.map((accountEntity) => {\r\n return this.getAccountInfoFromEntity(accountEntity);\r\n });\r\n return allAccounts;\r\n }\r\n }\r\n\r\n /** \r\n * Gets accountInfo object based on provided filters\r\n */\r\n getAccountInfoFilteredBy(accountFilter: AccountFilter): AccountInfo | null{\r\n const allAccounts = this.getAccountsFilteredBy(accountFilter);\r\n if (allAccounts.length > 0) {\r\n return this.getAccountInfoFromEntity(allAccounts[0]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private getAccountInfoFromEntity(accountEntity: AccountEntity): AccountInfo {\r\n const accountInfo = accountEntity.getAccountInfo();\r\n const idToken = this.getIdToken(accountInfo);\r\n if (idToken) {\r\n accountInfo.idToken = idToken.secret;\r\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, this.cryptoImpl).claims;\r\n }\r\n return accountInfo;\r\n }\r\n\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord\r\n */\r\n async saveCacheRecord(cacheRecord: CacheRecord): Promise {\r\n if (!cacheRecord) {\r\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\r\n }\r\n\r\n if (!!cacheRecord.account) {\r\n this.setAccount(cacheRecord.account);\r\n }\r\n\r\n if (!!cacheRecord.idToken) {\r\n this.setIdTokenCredential(cacheRecord.idToken);\r\n }\r\n\r\n if (!!cacheRecord.accessToken) {\r\n await this.saveAccessToken(cacheRecord.accessToken);\r\n }\r\n\r\n if (!!cacheRecord.refreshToken) {\r\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\r\n }\r\n\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n }\r\n\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n private async saveAccessToken(credential: AccessTokenEntity): Promise {\r\n const accessTokenFilter: CredentialFilter = {\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash\r\n };\r\n\r\n const tokenKeys = this.getTokenKeys();\r\n const currentScopes = ScopeSet.fromString(credential.target);\r\n\r\n const removedAccessTokens: Array> = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if(!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\r\n return;\r\n }\r\n \r\n const tokenEntity = this.getAccessTokenCredential(key);\r\n\r\n if (tokenEntity && this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\r\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n removedAccessTokens.push(this.removeAccessToken(key));\r\n }\r\n }\r\n });\r\n await Promise.all(removedAccessTokens);\r\n this.setAccessTokenCredential(credential);\r\n }\r\n\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n getAccountsFilteredBy(accountFilter: AccountFilter): AccountEntity[] {\r\n const allAccountKeys = this.getAccountKeys();\r\n const matchingAccounts: AccountEntity[] = [];\r\n\r\n allAccountKeys.forEach((cacheKey) => {\r\n if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId, accountFilter.realm)) {\r\n // Don't parse value if the key doesn't match the account filters\r\n return;\r\n }\r\n\r\n const entity: AccountEntity | null = this.getAccount(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.homeAccountId && !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.localAccountId && !this.matchLocalAccountId(entity, accountFilter.localAccountId)) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.username && !this.matchUsername(entity, accountFilter.username)) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.environment && !this.matchEnvironment(entity, accountFilter.environment)) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.realm && !this.matchRealm(entity, accountFilter.realm)) {\r\n return;\r\n }\r\n\r\n if (!!accountFilter.nativeAccountId && !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\r\n return;\r\n }\r\n\r\n matchingAccounts.push(entity);\r\n });\r\n\r\n return matchingAccounts;\r\n }\r\n\r\n /**\r\n * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided\r\n * @param key \r\n * @param homeAccountId \r\n * @param tenantId \r\n * @returns \r\n */\r\n isAccountKey(key: string, homeAccountId?: string, tenantId?: string): boolean {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) {\r\n // Account cache keys contain 3 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n\r\n if (homeAccountId && !key.toLowerCase().includes(homeAccountId.toLowerCase())) {\r\n return false;\r\n }\r\n\r\n if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) {\r\n return false;\r\n }\r\n\r\n // Do not check environment as aliasing can cause false negatives\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns true if the given key matches our credential key schema.\r\n * @param key \r\n */\r\n isCredentialKey(key: string): boolean {\r\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) {\r\n // Credential cache keys contain 6 items separated by '-' (each item may also contain '-')\r\n return false;\r\n }\r\n\r\n const lowerCaseKey = key.toLowerCase();\r\n // Credential keys must indicate what credential type they represent\r\n if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 &&\r\n lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === -1\r\n ) {\r\n return false;\r\n }\r\n\r\n if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > -1) {\r\n // Refresh tokens must contain the client id or family id\r\n const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`;\r\n const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`;\r\n if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n } else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) {\r\n // Tokens must contain the clientId\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Returns whether or not the given credential entity matches the filter\r\n * @param entity \r\n * @param filter \r\n * @returns \r\n */\r\n credentialMatchesFilter(entity: ValidCredentialType, filter: CredentialFilter): boolean {\r\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\r\n return false;\r\n }\r\n\r\n if (!!filter.userAssertionHash && !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\r\n return false;\r\n }\r\n\r\n /*\r\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\r\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\r\n */\r\n if ((typeof filter.homeAccountId === \"string\") && !this.matchHomeAccountId(entity, filter.homeAccountId)) {\r\n return false;\r\n }\r\n\r\n if (!!filter.environment && !this.matchEnvironment(entity, filter.environment)) {\r\n return false;\r\n }\r\n\r\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\r\n return false;\r\n }\r\n\r\n if (!!filter.credentialType && !this.matchCredentialType(entity, filter.credentialType)) {\r\n return false;\r\n }\r\n\r\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\r\n return false;\r\n }\r\n\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\r\n return false;\r\n }\r\n\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\r\n return false;\r\n }\r\n }\r\n\r\n // Access Token with Auth Scheme specific matching\r\n if (entity.credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if(!!filter.tokenType && !this.matchTokenType(entity, filter.tokenType)) {\r\n return false;\r\n }\r\n\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (filter.tokenType === AuthenticationScheme.SSH) {\r\n if(filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache {\r\n return this.getAppMetadataFilteredByInternal(\r\n filter.environment,\r\n filter.clientId,\r\n );\r\n }\r\n\r\n /**\r\n * Support function to help match appMetadata\r\n * @param environment\r\n * @param clientId\r\n */\r\n private getAppMetadataFilteredByInternal(\r\n environment?: string,\r\n clientId?: string\r\n ): AppMetadataCache {\r\n\r\n const allCacheKeys = this.getKeys();\r\n const matchingAppMetadata: AppMetadataCache = {};\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n\r\n // Attempt retrieval\r\n const entity = this.getAppMetadata(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (!!environment && !this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n\r\n if (!!clientId && !this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n\r\n matchingAppMetadata[cacheKey] = entity;\r\n\r\n });\r\n\r\n return matchingAppMetadata;\r\n }\r\n\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null {\r\n const allCacheKeys = this.getAuthorityMetadataKeys();\r\n let matchedEntity = null;\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(this.clientId) === -1) {\r\n return;\r\n }\r\n\r\n // Attempt retrieval\r\n const entity = this.getAuthorityMetadata(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n\r\n matchedEntity = entity;\r\n\r\n });\r\n\r\n return matchedEntity;\r\n }\r\n\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n async removeAllAccounts(): Promise {\r\n const allAccountKeys = this.getAccountKeys();\r\n const removedAccounts: Array> = [];\r\n\r\n allAccountKeys.forEach((cacheKey) => {\r\n removedAccounts.push(this.removeAccount(cacheKey));\r\n });\r\n\r\n await Promise.all(removedAccounts);\r\n }\r\n\r\n /**\r\n * Removes the account and related tokens for a given account key\r\n * @param account\r\n */\r\n async removeAccount(accountKey: string): Promise {\r\n const account = this.getAccount(accountKey);\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n await this.removeAccountContext(account);\r\n this.removeItem(accountKey);\r\n }\r\n\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n async removeAccountContext(account: AccountEntity): Promise {\r\n const allTokenKeys = this.getTokenKeys();\r\n const accountId = account.generateAccountId();\r\n const removedCredentials: Array> = [];\r\n\r\n allTokenKeys.idToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n this.removeIdToken(key);\r\n }\r\n });\r\n\r\n allTokenKeys.accessToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n removedCredentials.push(this.removeAccessToken(key));\r\n }\r\n });\r\n\r\n allTokenKeys.refreshToken.forEach((key) => {\r\n if (key.indexOf(accountId) === 0) {\r\n this.removeRefreshToken(key);\r\n }\r\n });\r\n\r\n await Promise.all(removedCredentials);\r\n }\r\n\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n async removeAccessToken(key: string): Promise {\r\n const credential = this.getAccessTokenCredential(key);\r\n if (!credential) {\r\n return;\r\n }\r\n\r\n // Remove Token Binding Key from key store for PoP Tokens Credentials\r\n if (credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {\r\n if(credential.tokenType === AuthenticationScheme.POP) {\r\n const accessTokenWithAuthSchemeEntity = credential as AccessTokenEntity;\r\n const kid = accessTokenWithAuthSchemeEntity.keyId;\r\n\r\n if (kid) {\r\n try {\r\n await this.cryptoImpl.removeTokenBindingKey(kid);\r\n } catch (error) {\r\n throw ClientAuthError.createBindingKeyNotRemovedError();\r\n }\r\n }\r\n }\r\n }\r\n\r\n return this.removeItem(key);\r\n }\r\n\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n removeAppMetadata(): boolean {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n if (this.isAppMetadata(cacheKey)) {\r\n this.removeItem(cacheKey);\r\n }\r\n });\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Retrieve the cached credentials into a cacherecord\r\n * @param account\r\n * @param clientId\r\n * @param scopes\r\n * @param environment\r\n * @param authScheme\r\n */\r\n readCacheRecord(account: AccountInfo, request: BaseAuthRequest, environment: string): CacheRecord {\r\n const tokenKeys = this.getTokenKeys();\r\n const cachedAccount = this.readAccountFromCache(account);\r\n const cachedIdToken = this.getIdToken(account, tokenKeys);\r\n const cachedAccessToken = this.getAccessToken(account, request, tokenKeys);\r\n const cachedRefreshToken = this.getRefreshToken(account, false, tokenKeys);\r\n const cachedAppMetadata = this.readAppMetadataFromCache(environment);\r\n\r\n if (cachedAccount && cachedIdToken) {\r\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\r\n }\r\n\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n }\r\n\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n readAccountFromCache(account: AccountInfo): AccountEntity | null {\r\n const accountKey: string = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey);\r\n }\r\n\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param inputRealm\r\n */\r\n getIdToken(account: AccountInfo, tokenKeys?: TokenKeys): IdTokenEntity | null {\r\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\r\n const idTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.clientId,\r\n realm: account.tenantId,\r\n };\r\n\r\n const idTokens: IdTokenEntity[] = this.getIdTokensByFilter(idTokenFilter, tokenKeys);\r\n const numIdTokens = idTokens.length;\r\n\r\n if (numIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\r\n return null;\r\n } else if (numIdTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n\r\n this.commonLogger.info(\"CacheManager:getIdToken - Returning id token\");\r\n return idTokens[0];\r\n }\r\n\r\n /**\r\n * Gets all idTokens matching the given filter\r\n * @param filter \r\n * @returns \r\n */\r\n getIdTokensByFilter(filter: CredentialFilter, tokenKeys?: TokenKeys): IdTokenEntity[] {\r\n const idTokenKeys = tokenKeys && tokenKeys.idToken || this.getTokenKeys().idToken;\r\n\r\n const idTokens: IdTokenEntity[] = [];\r\n idTokenKeys.forEach((key) => {\r\n if (!this.idTokenKeyMatchesFilter(key, {clientId: this.clientId, ...filter})) {\r\n return;\r\n }\r\n\r\n const idToken = this.getIdTokenCredential(key);\r\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\r\n idTokens.push(idToken);\r\n }\r\n });\r\n\r\n return idTokens;\r\n }\r\n\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key \r\n * @param filter\r\n * @returns \r\n */\r\n idTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Removes idToken from the cache\r\n * @param key \r\n */\r\n removeIdToken(key: string): void {\r\n this.removeItem(key);\r\n }\r\n\r\n /**\r\n * Removes refresh token from the cache\r\n * @param key \r\n */\r\n removeRefreshToken(key: string): void {\r\n this.removeItem(key);\r\n }\r\n\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param scopes\r\n * @param authScheme\r\n */\r\n getAccessToken(account: AccountInfo, request: BaseAuthRequest, tokenKeys?: TokenKeys): AccessTokenEntity | null {\r\n this.commonLogger.trace(\"CacheManager - getAccessToken called\");\r\n const scopes = ScopeSet.createSearchScopes(request.scopes);\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n const credentialType = (authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\r\n\r\n const accessTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: this.clientId,\r\n realm: account.tenantId,\r\n target: scopes,\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n };\r\n\r\n const accessTokenKeys = tokenKeys && tokenKeys.accessToken || this.getTokenKeys().accessToken;\r\n const accessTokens: AccessTokenEntity[] = [];\r\n\r\n accessTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\r\n const accessToken = this.getAccessTokenCredential(key);\r\n\r\n // Validate value\r\n if (accessToken && this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n }\r\n });\r\n\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - No token found\");\r\n return null;\r\n } else if (numAccessTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\");\r\n return accessTokens[0];\r\n }\r\n\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key \r\n * @param filter \r\n * @param keyMustContainAllScopes \r\n * @returns \r\n */\r\n accessTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter, keyMustContainAllScopes: boolean): boolean {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.requestedClaimsHash && key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.target) {\r\n const scopes = filter.target.asArray();\r\n for (let i = 0; i < scopes.length; i++) {\r\n if (keyMustContainAllScopes && !key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache lookup a missing scope would be a cache miss\r\n return false;\r\n } else if (!keyMustContainAllScopes && key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache write, any token with a subset of requested scopes should be replaced\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets all access tokens matching the filter\r\n * @param filter \r\n * @returns \r\n */\r\n getAccessTokensByFilter(filter: CredentialFilter): AccessTokenEntity[] {\r\n const tokenKeys = this.getTokenKeys();\r\n\r\n const accessTokens: AccessTokenEntity[] = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\r\n return;\r\n }\r\n\r\n const accessToken = this.getAccessTokenCredential(key);\r\n if (accessToken && this.credentialMatchesFilter(accessToken, filter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n });\r\n\r\n return accessTokens;\r\n }\r\n\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param clientId\r\n * @param account\r\n * @param familyRT\r\n */\r\n getRefreshToken(account: AccountInfo, familyRT: boolean, tokenKeys?: TokenKeys): RefreshTokenEntity | null {\r\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\r\n const id = familyRT ? THE_FAMILY_ID : undefined;\r\n const refreshTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: this.clientId,\r\n familyId: id,\r\n };\r\n\r\n const refreshTokenKeys = tokenKeys && tokenKeys.refreshToken || this.getTokenKeys().refreshToken;\r\n const refreshTokens: RefreshTokenEntity[] = [];\r\n\r\n refreshTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\r\n const refreshToken = this.getRefreshTokenCredential(key);\r\n // Validate value\r\n if (refreshToken && this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\r\n refreshTokens.push(refreshToken);\r\n }\r\n }\r\n });\r\n\r\n const numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\r\n return refreshTokens[0] as RefreshTokenEntity;\r\n }\r\n\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n */\r\n refreshTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean {\r\n const key = inputKey.toLowerCase();\r\n if (filter.familyId && key.indexOf(filter.familyId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n // If familyId is used, clientId is not in the key\r\n if (!filter.familyId && filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n readAppMetadataFromCache(environment: string): AppMetadataEntity | null {\r\n const appMetadataFilter: AppMetadataFilter = {\r\n environment,\r\n clientId: this.clientId,\r\n };\r\n\r\n const appMetadata: AppMetadataCache = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n const appMetadataEntries: AppMetadataEntity[] = Object.keys(appMetadata).map((key) => appMetadata[key]);\r\n\r\n const numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n } else if (numAppMetadata > 1) {\r\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\r\n }\r\n\r\n return appMetadataEntries[0] as AppMetadataEntity;\r\n }\r\n\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n isAppMetadataFOCI(environment: string): boolean {\r\n const appMetadata = this.readAppMetadataFromCache(environment);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n }\r\n\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n private matchHomeAccountId(entity: AccountEntity | CredentialEntity, homeAccountId: string): boolean {\r\n return !!((typeof entity.homeAccountId === \"string\") && (homeAccountId === entity.homeAccountId));\r\n }\r\n\r\n /**\r\n * helper to match account ids\r\n * @param entity \r\n * @param localAccountId \r\n * @returns \r\n */\r\n private matchLocalAccountId(entity: AccountEntity, localAccountId: string): boolean {\r\n return !!((typeof entity.localAccountId === \"string\") && (localAccountId === entity.localAccountId));\r\n }\r\n\r\n /**\r\n * helper to match usernames\r\n * @param entity \r\n * @param username \r\n * @returns \r\n */\r\n private matchUsername(entity: AccountEntity, username: string): boolean {\r\n return !!((typeof entity.username === \"string\") && (username.toLowerCase() === entity.username.toLowerCase()));\r\n }\r\n\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n private matchUserAssertionHash(entity: CredentialEntity, userAssertionHash: string): boolean {\r\n return !!(entity.userAssertionHash && userAssertionHash === entity.userAssertionHash);\r\n }\r\n\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n private matchEnvironment(entity: AccountEntity | CredentialEntity | AppMetadataEntity, environment: string): boolean {\r\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n private matchCredentialType(entity: CredentialEntity, credentialType: string): boolean {\r\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n }\r\n\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n private matchClientId(entity: CredentialEntity | AppMetadataEntity, clientId: string): boolean {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n }\r\n\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n private matchFamilyId(entity: CredentialEntity | AppMetadataEntity, familyId: string): boolean {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n }\r\n\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n private matchRealm(entity: AccountEntity | CredentialEntity, realm: string): boolean {\r\n return !!(entity.realm && realm === entity.realm);\r\n }\r\n\r\n /**\r\n * helper to match nativeAccountId\r\n * @param entity\r\n * @param nativeAccountId\r\n * @returns boolean indicating the match result\r\n */\r\n private matchNativeAccountId(entity: AccountEntity, nativeAccountId: string): boolean {\r\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\r\n }\r\n\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n private matchTarget(entity: CredentialEntity, target: ScopeSet): boolean {\r\n const isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\r\n\r\n if ( isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n\r\n const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target);\r\n\r\n return entityScopeSet.containsScopeSet(target);\r\n }\r\n\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n private matchTokenType(entity: CredentialEntity, tokenType: AuthenticationScheme): boolean {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n }\r\n\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n private matchKeyId(entity: CredentialEntity, keyId: string): boolean {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n }\r\n\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n private isAppMetadata(key: string): boolean {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n }\r\n\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n protected isAuthorityMetadata(key: string): boolean {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n }\r\n\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n generateAuthorityMetadataCacheKey(authority: string): string {\r\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\r\n }\r\n\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n static toObject(obj: T, json: object): T {\r\n for (const propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n }\r\n}\r\n\r\nexport class DefaultStorageClass extends CacheManager {\r\n setAccount(): void {\r\n const notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAccount(): AccountEntity {\r\n const notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setIdTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getIdTokenCredential(): IdTokenEntity {\r\n const notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAccessTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAccessTokenCredential(): AccessTokenEntity {\r\n const notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setRefreshTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getRefreshTokenCredential(): RefreshTokenEntity {\r\n const notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAppMetadata(): void {\r\n const notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAppMetadata(): AppMetadataEntity {\r\n const notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setServerTelemetry(): void {\r\n const notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getServerTelemetry(): ServerTelemetryEntity {\r\n const notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAuthorityMetadata(): void {\r\n const notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAuthorityMetadata(): AuthorityMetadataEntity | null {\r\n const notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAuthorityMetadataKeys(): Array {\r\n const notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setThrottlingCache(): void {\r\n const notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getThrottlingCache(): ThrottlingEntity {\r\n const notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n removeItem(): boolean {\r\n const notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n containsKey(): boolean {\r\n const notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getKeys(): string[] {\r\n const notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAccountKeys(): string[] {\r\n const notImplErr = \"Storage interface - getAccountKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getTokenKeys(): TokenKeys {\r\n const notImplErr = \"Storage interface - getTokenKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n async clear(): Promise {\r\n const notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n updateCredentialCacheKey(): string {\r\n const notImplErr = \"Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility class which exposes functions for managing date and time operations.\r\n */\r\nexport class TimeUtils {\r\n\r\n /**\r\n * return the current time in Unix time (seconds).\r\n */\r\n static nowSeconds(): number {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n }\r\n \r\n /**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\n static isTokenExpired(expiresOn: string, offset: number): boolean {\r\n // check for access token expiry\r\n const expirationSec = Number(expiresOn) || 0;\r\n const offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\r\n\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return (offsetCurrentTimeSec > expirationSec);\r\n }\r\n\r\n /**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt \r\n * @param offset \r\n */\r\n static wasClockTurnedBack(cachedAt: string): boolean {\r\n const cachedAtSec = Number(cachedAt);\r\n\r\n return cachedAtSec > TimeUtils.nowSeconds();\r\n }\r\n\r\n /**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\n static delay(t: number, value?: T): Promise {\r\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType, AuthenticationScheme } from \"../../utils/Constants\";\r\nimport { TimeUtils } from \"../../utils/TimeUtils\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\nimport { ICrypto } from \"../../crypto/ICrypto\";\r\nimport { TokenClaims } from \"../../account/TokenClaims\";\r\nimport { AuthToken } from \"../../account/AuthToken\";\r\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\r\n\r\n/**\r\n * ACCESS_TOKEN Credential Type\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * cachedAt: Absolute device time when entry was created in the cache.\r\n * expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\r\n * extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\r\n * keyId: used for POP and SSH tokenTypes\r\n * tokenType: Type of the token issued. Usually \"Bearer\"\r\n * }\r\n */\r\nexport class AccessTokenEntity extends CredentialEntity {\r\n realm: string;\r\n target: string;\r\n cachedAt: string;\r\n expiresOn: string;\r\n extendedExpiresOn?: string;\r\n refreshOn?: string;\r\n keyId?: string; // for POP and SSH tokenTypes\r\n tokenType?: AuthenticationScheme;\r\n requestedClaims?: string;\r\n requestedClaimsHash?: string;\r\n\r\n /**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\n static createAccessTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n accessToken: string,\r\n clientId: string,\r\n tenantId: string,\r\n scopes: string,\r\n expiresOn: number,\r\n extExpiresOn: number,\r\n cryptoUtils: ICrypto,\r\n refreshOn?: number,\r\n tokenType?: AuthenticationScheme,\r\n userAssertionHash?:string,\r\n keyId?: string,\r\n requestedClaims?: string,\r\n requestedClaimsHash?: string\r\n ): AccessTokenEntity {\r\n const atEntity: AccessTokenEntity = new AccessTokenEntity();\r\n\r\n atEntity.homeAccountId = homeAccountId;\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN;\r\n atEntity.secret = accessToken;\r\n\r\n const currentTime = TimeUtils.nowSeconds();\r\n atEntity.cachedAt = currentTime.toString();\r\n\r\n /*\r\n * Token expiry time.\r\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.\r\n */\r\n atEntity.expiresOn = expiresOn.toString();\r\n atEntity.extendedExpiresOn = extExpiresOn.toString();\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n\r\n atEntity.environment = environment;\r\n atEntity.clientId = clientId;\r\n atEntity.realm = tenantId;\r\n atEntity.target = scopes;\r\n atEntity.userAssertionHash = userAssertionHash;\r\n\r\n atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\r\n\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (atEntity.tokenType?.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n const tokenClaims: TokenClaims | null = AuthToken.extractTokenClaims(accessToken, cryptoUtils);\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw ClientAuthError.createTokenClaimsRequiredError();\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n\r\n return atEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccessTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN || entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType } from \"../../utils/Constants\";\r\n\r\n/**\r\n * REFRESH_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\r\n *\r\n * Value:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * }\r\n */\r\nexport class RefreshTokenEntity extends CredentialEntity {\r\n familyId?: string;\r\n\r\n /**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n static createRefreshTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n refreshToken: string,\r\n clientId: string,\r\n familyId?: string,\r\n userAssertionHash?: string\r\n ): RefreshTokenEntity {\r\n const rtEntity = new RefreshTokenEntity();\r\n\r\n rtEntity.clientId = clientId;\r\n rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\r\n rtEntity.environment = environment;\r\n rtEntity.homeAccountId = homeAccountId;\r\n rtEntity.secret = refreshToken;\r\n rtEntity.userAssertionHash = userAssertionHash;\r\n\r\n if (familyId)\r\n rtEntity.familyId = familyId;\r\n\r\n return rtEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isRefreshTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { APP_METADATA, Separators } from \"../../utils/Constants\";\r\n\r\n/**\r\n * APP_METADATA Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: appmetadata--\r\n *\r\n * Value:\r\n * {\r\n * clientId: client ID of the application\r\n * environment: entity that issued the token, represented as a full host\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * }\r\n */\r\nexport class AppMetadataEntity {\r\n clientId: string;\r\n environment: string;\r\n familyId?: string;\r\n\r\n /**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\n generateAppMetadataKey(): string {\r\n return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\r\n }\r\n\r\n /**\r\n * Generate AppMetadata Cache Key\r\n */\r\n static generateAppMetadataCacheKey(environment: string, clientId: string): string {\r\n const appMetaDataKeyArray: Array = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Creates AppMetadataEntity\r\n * @param clientId\r\n * @param environment\r\n * @param familyId\r\n */\r\n static createAppMetadataEntity(clientId: string, environment: string, familyId?: string): AppMetadataEntity {\r\n const appMetadata = new AppMetadataEntity();\r\n\r\n appMetadata.clientId = clientId;\r\n appMetadata.environment = environment;\r\n if (familyId) {\r\n appMetadata.familyId = familyId;\r\n }\r\n\r\n return appMetadata;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAppMetadataEntity(key: string, entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\")\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SERVER_TELEM_CONSTANTS } from \"../../utils/Constants\";\r\n\r\nexport class ServerTelemetryEntity {\r\n failedRequests: Array;\r\n errors: string[];\r\n cacheHits: number;\r\n\r\n constructor() {\r\n this.failedRequests = [];\r\n this.errors = [];\r\n this.cacheHits = 0;\r\n }\r\n\r\n /**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n static isServerTelemetryEntity(key: string, entity?: object): boolean {\r\n\r\n const validateKey: boolean = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n let validateEntity: boolean = true;\r\n\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n\r\n return validateKey && validateEntity;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CloudDiscoveryMetadata } from \"../../authority/CloudDiscoveryMetadata\";\r\nimport { OpenIdConfigResponse } from \"../../authority/OpenIdConfigResponse\";\r\nimport { AUTHORITY_METADATA_CONSTANTS } from \"../../utils/Constants\";\r\nimport { TimeUtils } from \"../../utils/TimeUtils\";\r\n\r\nexport class AuthorityMetadataEntity {\r\n aliases: Array;\r\n preferred_cache: string;\r\n preferred_network: string;\r\n canonical_authority: string;\r\n authorization_endpoint: string;\r\n token_endpoint: string;\r\n end_session_endpoint?: string;\r\n issuer: string;\r\n aliasesFromNetwork: boolean;\r\n endpointsFromNetwork: boolean;\r\n expiresAt: number;\r\n jwks_uri: string;\r\n\r\n constructor() {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n\r\n /**\r\n * Update the entity with new aliases, preferred_cache and preferred_network values\r\n * @param metadata \r\n * @param fromNetwork \r\n */\r\n updateCloudDiscoveryMetadata(metadata: CloudDiscoveryMetadata, fromNetwork: boolean): void {\r\n this.aliases = metadata.aliases;\r\n this.preferred_cache = metadata.preferred_cache;\r\n this.preferred_network = metadata.preferred_network;\r\n this.aliasesFromNetwork = fromNetwork;\r\n }\r\n\r\n /**\r\n * Update the entity with new endpoints\r\n * @param metadata \r\n * @param fromNetwork \r\n */\r\n updateEndpointMetadata(metadata: OpenIdConfigResponse, fromNetwork: boolean): void {\r\n this.authorization_endpoint = metadata.authorization_endpoint;\r\n this.token_endpoint = metadata.token_endpoint;\r\n this.end_session_endpoint = metadata.end_session_endpoint;\r\n this.issuer = metadata.issuer;\r\n this.endpointsFromNetwork = fromNetwork;\r\n this.jwks_uri = metadata.jwks_uri;\r\n }\r\n\r\n /**\r\n * Save the authority that was used to create this cache entry\r\n * @param authority \r\n */\r\n updateCanonicalAuthority(authority: string): void {\r\n this.canonical_authority = authority;\r\n }\r\n\r\n /**\r\n * Reset the exiresAt value\r\n */\r\n resetExpiresAt(): void {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n\r\n /**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\n isExpired(): boolean {\r\n return this.expiresAt <= TimeUtils.nowSeconds();\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAuthorityMetadataEntity(key: string, entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\") &&\r\n entity.hasOwnProperty(\"jwks_uri\")\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ThrottlingConstants } from \"../../utils/Constants\";\r\n\r\nexport class ThrottlingEntity {\r\n // Unix-time value representing the expiration of the throttle\r\n throttleTime: number;\r\n // Information provided by the server\r\n error?: string;\r\n errorCodes?: Array;\r\n errorMessage?: string;\r\n subError?: string;\r\n\r\n /**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n static isThrottlingEntity(key: string, entity?: object): boolean {\r\n \r\n let validateKey: boolean = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n \r\n let validateEntity: boolean = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n\r\n return validateKey && validateEntity;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"./StringUtils\";\r\nimport { Constants } from \"./Constants\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * Type which defines the object that is stringified, encoded and sent in the state value.\r\n * Contains the following:\r\n * - id - unique identifier for this request\r\n * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly.\r\n * - platformState - string value sent from the platform.\r\n */\r\nexport type LibraryStateObject = {\r\n id: string,\r\n meta?: Record\r\n};\r\n\r\n/**\r\n * Type which defines the stringified and encoded object sent to the service in the authorize request.\r\n */\r\nexport type RequestStateObject = {\r\n userRequestState: string,\r\n libraryState: LibraryStateObject\r\n};\r\n\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nexport class ProtocolUtils {\r\n\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState \r\n * @param randomGuid \r\n */\r\n static setRequestState(cryptoObj: ICrypto, userState?: string, meta?: Record): string {\r\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return !StringUtils.isEmpty(userState) ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` : libraryState;\r\n }\r\n\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid \r\n * @param cryptoObj \r\n */\r\n static generateLibraryState(cryptoObj: ICrypto, meta?: Record): string {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\r\n }\r\n\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n const stateObj: LibraryStateObject = {\r\n id: cryptoObj.createNewGuid()\r\n };\r\n\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n\r\n const stateString = JSON.stringify(stateObj);\r\n\r\n return cryptoObj.base64Encode(stateString);\r\n }\r\n\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state \r\n * @param cryptoObj \r\n */\r\n static parseRequestState(cryptoObj: ICrypto, state: string): RequestStateObject {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\r\n }\r\n\r\n if (StringUtils.isEmpty(state)) {\r\n throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\r\n }\r\n\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n const splitState = state.split(Constants.RESOURCE_DELIM);\r\n const libraryState = splitState[0];\r\n const userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : Constants.EMPTY_STRING;\r\n const libraryStateString = cryptoObj.base64Decode(libraryState);\r\n const libraryStateObj = JSON.parse(libraryStateString) as LibraryStateObject;\r\n return {\r\n userRequestState: !StringUtils.isEmpty(userState) ? userState : Constants.EMPTY_STRING,\r\n libraryState: libraryStateObj\r\n };\r\n } catch(e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nexport enum ProtocolMode {\r\n AAD = \"AAD\",\r\n OIDC = \"OIDC\"\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ProtocolMode } from \"./ProtocolMode\";\r\nimport { AzureRegionConfiguration } from \"./AzureRegionConfiguration\";\r\n\r\nexport type AuthorityOptions = {\r\n protocolMode: ProtocolMode;\r\n knownAuthorities: Array;\r\n cloudDiscoveryMetadata: string;\r\n authorityMetadata: string;\r\n skipAuthorityMetadataCache?: boolean;\r\n azureRegionConfiguration?: AzureRegionConfiguration;\r\n};\r\n\r\nexport enum AzureCloudInstance {\r\n // AzureCloudInstance is not specified.\r\n None,\r\n\r\n // Microsoft Azure public cloud\r\n AzurePublic = \"https://login.microsoftonline.com\",\r\n\r\n // Microsoft PPE\r\n AzurePpe = \"https://login.windows-ppe.net\",\r\n\r\n // Microsoft Chinese national cloud\r\n AzureChina = \"https://login.chinacloudapi.cn\",\r\n\r\n // Microsoft German national cloud (\"Black Forest\")\r\n AzureGermany = \"https://login.microsoftonline.de\",\r\n\r\n // US Government cloud\r\n AzureUsGovernment = \"https://login.microsoftonline.us\",\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\n\r\nexport class BrowserStorage implements IWindowStorage {\r\n\r\n private windowStorage: Storage;\r\n\r\n constructor(cacheLocation: string) {\r\n this.validateWindowStorage(cacheLocation);\r\n this.windowStorage = window[cacheLocation];\r\n }\r\n\r\n private validateWindowStorage(cacheLocation: string): void {\r\n if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n const storageSupported = !!window[cacheLocation];\r\n if (!storageSupported) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n }\r\n\r\n getItem(key: string): string | null {\r\n return this.windowStorage.getItem(key);\r\n }\r\n\r\n setItem(key: string, value: string): void {\r\n this.windowStorage.setItem(key, value);\r\n }\r\n\r\n removeItem(key: string): void {\r\n this.windowStorage.removeItem(key);\r\n }\r\n\r\n getKeys(): string[] {\r\n return Object.keys(this.windowStorage);\r\n }\r\n\r\n containsKey(key: string): boolean {\r\n return this.windowStorage.hasOwnProperty(key);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { IUri } from \"./IUri\";\r\nimport { AADAuthorityConstants, Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nexport class UrlString {\r\n\r\n // internal url string field\r\n private _urlString: string;\r\n public get urlString(): string {\r\n return this._urlString;\r\n }\r\n\r\n constructor(url: string) {\r\n this._urlString = url;\r\n if (StringUtils.isEmpty(this._urlString)) {\r\n // Throws error if url is empty\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n\r\n if (StringUtils.isEmpty(this.getHash())) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n static canonicalizeUri(url: string): string {\r\n if (url) {\r\n let lowerCaseUrl = url.toLowerCase();\r\n\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n } else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n\r\n return lowerCaseUrl;\r\n }\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n validateAsUri(): void {\r\n // Attempts to parse url for uri components\r\n let components;\r\n try {\r\n components = this.getUrlComponents();\r\n } catch (e) {\r\n throw ClientConfigurationError.createUrlParseError(e);\r\n }\r\n\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\r\n }\r\n\r\n // Throw error if uri is insecure.\r\n if(!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\r\n throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\r\n }\r\n }\r\n\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n static appendQueryString(url: string, queryString: string): string {\r\n if (StringUtils.isEmpty(queryString)) {\r\n return url;\r\n }\r\n\r\n return url.indexOf(\"?\") < 0 ? `${url}?${queryString}` : `${url}&${queryString}`;\r\n }\r\n\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n static removeHashFromUrl(url: string): string {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n }\r\n\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n replaceTenantPath(tenantId: string): UrlString {\r\n const urlObject = this.getUrlComponents();\r\n const pathArray = urlObject.PathSegments;\r\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n }\r\n\r\n /**\r\n * Returns the anchor part(#) of the URL\r\n */\r\n getHash(): string {\r\n return UrlString.parseHash(this.urlString);\r\n }\r\n\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n getUrlComponents(): IUri {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n\r\n // If url string does not match regEx, we throw an error\r\n const match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\r\n }\r\n\r\n // Url component object\r\n const urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7]\r\n } as IUri;\r\n\r\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n\r\n if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length-1);\r\n }\r\n return urlComponents;\r\n }\r\n\r\n static getDomainFromUrl(url: string): string {\r\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n\r\n const match = url.match(regEx);\r\n\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${url}`);\r\n }\r\n\r\n return match[2];\r\n }\r\n\r\n static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n const url = new UrlString(baseUrl);\r\n const baseComponents = url.getUrlComponents();\r\n\r\n return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\r\n }\r\n\r\n return relativeUrl;\r\n }\r\n\r\n /**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\n static parseHash(hashString: string): string {\r\n const hashIndex1 = hashString.indexOf(\"#\");\r\n const hashIndex2 = hashString.indexOf(\"#/\");\r\n if (hashIndex2 > -1) {\r\n return hashString.substring(hashIndex2 + 2);\r\n } else if (hashIndex1 > -1) {\r\n return hashString.substring(hashIndex1 + 1);\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n\r\n /**\r\n * Parses query string from given string. Returns empty string if no query symbol is found.\r\n * @param queryString\r\n */\r\n static parseQueryString(queryString: string): string {\r\n const queryIndex1 = queryString.indexOf(\"?\");\r\n const queryIndex2 = queryString.indexOf(\"/?\");\r\n if (queryIndex2 > -1) {\r\n return queryString.substring(queryIndex2 + 2);\r\n } else if (queryIndex1 > -1) {\r\n return queryString.substring(queryIndex1 + 1);\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n\r\n static constructAuthorityUriFromObject(urlObject: IUri): UrlString {\r\n return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\r\n }\r\n\r\n /**\r\n * Returns URL hash as server auth code response object.\r\n */\r\n static getDeserializedHash(hash: string): ServerAuthorizationCodeResponse {\r\n // Check if given hash is empty\r\n if (StringUtils.isEmpty(hash)) {\r\n return {};\r\n }\r\n // Strip the # symbol if present\r\n const parsedHash = UrlString.parseHash(hash);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n const deserializedHash: ServerAuthorizationCodeResponse = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\r\n // Check if deserialization didn't work\r\n if (!deserializedHash) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\r\n }\r\n return deserializedHash;\r\n }\r\n\r\n /**\r\n * Returns URL query string as server auth code response object.\r\n */\r\n static getDeserializedQueryString(query: string): ServerAuthorizationCodeResponse {\r\n // Check if given query is empty\r\n if (StringUtils.isEmpty(query)) {\r\n return {};\r\n }\r\n // Strip the ? symbol if present\r\n const parsedQueryString = UrlString.parseQueryString(query);\r\n // If ? symbol was not present, above will return empty string, so give original query value\r\n const deserializedQueryString: ServerAuthorizationCodeResponse = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedQueryString) ? query : parsedQueryString);\r\n // Check if deserialization didn't work\r\n if (!deserializedQueryString) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedQueryString));\r\n }\r\n return deserializedQueryString;\r\n }\r\n\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n */\r\n static hashContainsKnownProperties(hash: string): boolean {\r\n if (StringUtils.isEmpty(hash) || hash.indexOf(\"=\") < 0) {\r\n // Hash doesn't contain key/value pairs\r\n return false;\r\n }\r\n\r\n const parameters: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n return !!(\r\n parameters.code ||\r\n parameters.error_description ||\r\n parameters.error ||\r\n parameters.state\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { InteractionType } from \"./BrowserConstants\";\r\nimport { StringUtils, ClientAuthError, ICrypto, RequestStateObject, ProtocolUtils, ServerAuthorizationCodeResponse, UrlString } from \"@azure/msal-common\";\r\n\r\nexport type BrowserStateObject = {\r\n interactionType: InteractionType\r\n};\r\n\r\nexport class BrowserProtocolUtils {\r\n\r\n /**\r\n * Extracts the BrowserStateObject from the state string.\r\n * @param browserCrypto \r\n * @param state \r\n */\r\n static extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null {\r\n if (StringUtils.isEmpty(state)) {\r\n return null;\r\n }\r\n\r\n try {\r\n const requestStateObj: RequestStateObject = ProtocolUtils.parseRequestState(browserCrypto, state);\r\n return requestStateObj.libraryState.meta as BrowserStateObject;\r\n } catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n }\r\n\r\n /**\r\n * Parses properties of server response from url hash\r\n * @param locationHash Hash from url\r\n */\r\n static parseServerResponseFromHash(locationHash: string): ServerAuthorizationCodeResponse {\r\n if (!locationHash) {\r\n return {};\r\n }\r\n \r\n const hashUrlString = new UrlString(locationHash);\r\n return UrlString.getDeserializedHash(hashUrlString.getHash());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\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, TokenKeys, CredentialType } from \"@azure/msal-common\";\r\nimport { CacheOptions } from \"../config/Configuration\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserCacheLocation, InteractionType, TemporaryCacheKeys, InMemoryCacheKeys, StaticCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserStorage } from \"./BrowserStorage\";\r\nimport { MemoryStorage } from \"./MemoryStorage\";\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\nimport { BrowserProtocolUtils } from \"../utils/BrowserProtocolUtils\";\r\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\r\n\r\n/**\r\n * This class implements the cache storage interface for MSAL through browser local or session storage.\r\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\r\n * parameters such as state and nonce, generally.\r\n */\r\nexport class BrowserCacheManager extends CacheManager {\r\n\r\n // Cache configuration, either set by user or default values.\r\n protected cacheConfig: Required;\r\n // Window storage object (either local or sessionStorage)\r\n protected browserStorage: IWindowStorage;\r\n // Internal in-memory storage object used for data used by msal that does not need to persist across page loads\r\n protected internalStorage: MemoryStorage;\r\n // Temporary cache\r\n protected temporaryCacheStorage: IWindowStorage;\r\n // Logger instance\r\n protected logger: Logger;\r\n\r\n // Cookie life calculation (hours * minutes * seconds * ms)\r\n protected readonly COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\r\n\r\n constructor(clientId: string, cacheConfig: Required, cryptoImpl: ICrypto, logger: Logger) {\r\n super(clientId, cryptoImpl, logger);\r\n this.cacheConfig = cacheConfig;\r\n this.logger = logger;\r\n this.internalStorage = new MemoryStorage();\r\n this.browserStorage = this.setupBrowserStorage(this.cacheConfig.cacheLocation);\r\n this.temporaryCacheStorage = this.setupTemporaryCacheStorage(this.cacheConfig.temporaryCacheLocation, this.cacheConfig.cacheLocation);\r\n\r\n // Migrate cache entries from older versions of MSAL.\r\n if (cacheConfig.cacheMigrationEnabled) {\r\n this.migrateCacheEntries();\r\n this.createKeyMaps();\r\n }\r\n }\r\n\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\r\n * @param cacheLocation\r\n */\r\n protected setupBrowserStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n return new BrowserStorage(cacheLocation);\r\n } catch (e) {\r\n this.logger.verbose(e);\r\n break;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n break;\r\n }\r\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\r\n return new MemoryStorage();\r\n }\r\n\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured temporaryCacheLocation.\r\n * @param temporaryCacheLocation\r\n * @param cacheLocation\r\n */\r\n protected setupTemporaryCacheStorage(temporaryCacheLocation: BrowserCacheLocation | string, cacheLocation: BrowserCacheLocation | string): IWindowStorage {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n /*\r\n * When users do not explicitly choose their own temporaryCacheLocation, \r\n * temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n */\r\n return new BrowserStorage(temporaryCacheLocation || BrowserCacheLocation.SessionStorage);\r\n } catch (e) {\r\n this.logger.verbose(e);\r\n return this.internalStorage;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n return this.internalStorage;\r\n }\r\n }\r\n\r\n /**\r\n * Migrate all old cache entries to new schema. No rollback supported.\r\n * @param storeAuthStateInCookie\r\n */\r\n protected migrateCacheEntries(): void {\r\n const idTokenKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ID_TOKEN}`;\r\n const clientInfoKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.CLIENT_INFO}`;\r\n const errorKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR}`;\r\n const errorDescKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR_DESC}`;\r\n\r\n const idTokenValue = this.browserStorage.getItem(idTokenKey);\r\n const clientInfoValue = this.browserStorage.getItem(clientInfoKey);\r\n const errorValue = this.browserStorage.getItem(errorKey);\r\n const errorDescValue = this.browserStorage.getItem(errorDescKey);\r\n\r\n const values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\r\n const keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\r\n\r\n keysToMigrate.forEach((cacheKey: string, index: number) => this.migrateCacheEntry(cacheKey, values[index]));\r\n }\r\n\r\n /**\r\n * Utility function to help with migration.\r\n * @param newKey\r\n * @param value\r\n * @param storeAuthStateInCookie\r\n */\r\n protected migrateCacheEntry(newKey: string, value: string | null): void {\r\n if (value) {\r\n this.setTemporaryCache(newKey, value, true);\r\n }\r\n }\r\n\r\n /**\r\n * Searches all cache entries for MSAL accounts and creates the account key map\r\n * This is used to migrate users from older versions of MSAL which did not create the map.\r\n * @returns \r\n */\r\n private createKeyMaps(): void {\r\n this.logger.trace(\"BrowserCacheManager - createKeyMaps called.\");\r\n const accountKeys = this.getItem(StaticCacheKeys.ACCOUNT_KEYS);\r\n const tokenKeys = this.getItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`);\r\n if (accountKeys && tokenKeys) {\r\n this.logger.verbose(\"BrowserCacheManager:createKeyMaps - account and token key maps already exist, skipping migration.\");\r\n // Key maps already exist, no need to iterate through cache\r\n return;\r\n }\r\n\r\n const allKeys = this.browserStorage.getKeys();\r\n allKeys.forEach((key) => {\r\n if (this.isCredentialKey(key)) {\r\n // Get item, parse, validate and write key to map\r\n const value = this.getItem(key);\r\n if (value) {\r\n const credObj = this.validateAndParseJson(value);\r\n if (credObj && credObj.hasOwnProperty(\"credentialType\")) {\r\n switch (credObj[\"credentialType\"]) {\r\n case CredentialType.ID_TOKEN:\r\n if (IdTokenEntity.isIdTokenEntity(credObj)) {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - idToken found, saving key to token key map\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - idToken with key: ${key} found, saving key to token key map`);\r\n const idTokenEntity = CacheManager.toObject(new IdTokenEntity(), credObj);\r\n const newKey = this.updateCredentialCacheKey(key, idTokenEntity);\r\n this.addTokenKey(newKey, CredentialType.ID_TOKEN);\r\n return;\r\n } else {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - key found matching idToken schema with value containing idToken credentialType field but value failed IdTokenEntity validation, skipping.\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - failed idToken validation on key: ${key}`);\r\n }\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n if (AccessTokenEntity.isAccessTokenEntity(credObj)) {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - accessToken found, saving key to token key map\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - accessToken with key: ${key} found, saving key to token key map`);\r\n const accessTokenEntity = CacheManager.toObject(new AccessTokenEntity(), credObj);\r\n const newKey = this.updateCredentialCacheKey(key, accessTokenEntity);\r\n this.addTokenKey(newKey, CredentialType.ACCESS_TOKEN);\r\n return;\r\n } else {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - key found matching accessToken schema with value containing accessToken credentialType field but value failed AccessTokenEntity validation, skipping.\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - failed accessToken validation on key: ${key}`);\r\n }\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n if (RefreshTokenEntity.isRefreshTokenEntity(credObj)) {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - refreshToken found, saving key to token key map\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - refreshToken with key: ${key} found, saving key to token key map`);\r\n const refreshTokenEntity = CacheManager.toObject(new RefreshTokenEntity(), credObj);\r\n const newKey = this.updateCredentialCacheKey(key, refreshTokenEntity);\r\n this.addTokenKey(newKey, CredentialType.REFRESH_TOKEN);\r\n return;\r\n } else {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - key found matching refreshToken schema with value containing refreshToken credentialType field but value failed RefreshTokenEntity validation, skipping.\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - failed refreshToken validation on key: ${key}`);\r\n }\r\n break;\r\n default:\r\n // If credentialType isn't one of our predefined ones, it may not be an MSAL cache value. Ignore.\r\n }\r\n }\r\n }\r\n } \r\n \r\n if (this.isAccountKey(key)) {\r\n const value = this.getItem(key);\r\n if (value) {\r\n const accountObj = this.validateAndParseJson(value);\r\n if (accountObj && AccountEntity.isAccountEntity(accountObj)) {\r\n this.logger.trace(\"BrowserCacheManager:createKeyMaps - account found, saving key to account key map\");\r\n this.logger.tracePii(`BrowserCacheManager:createKeyMaps - account with key: ${key} found, saving key to account key map`);\r\n this.addAccountKeyToMap(key);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Parses passed value as JSON object, JSON.parse() will throw an error.\r\n * @param input\r\n */\r\n protected validateAndParseJson(jsonValue: string): object | null {\r\n try {\r\n const parsedJson = JSON.parse(jsonValue);\r\n /**\r\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\r\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\r\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\r\n *\r\n */\r\n return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * fetches the entry from the browser storage based off the key\r\n * @param key\r\n */\r\n getItem(key: string): string | null {\r\n return this.browserStorage.getItem(key);\r\n }\r\n\r\n /**\r\n * sets the entry in the browser storage\r\n * @param key\r\n * @param value\r\n */\r\n setItem(key: string, value: string): void {\r\n this.browserStorage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n getAccount(accountKey: string): AccountEntity | null {\r\n this.logger.trace(\"BrowserCacheManager.getAccount called\");\r\n const account = this.getItem(accountKey);\r\n if (!account) {\r\n this.removeAccountKeyFromMap(accountKey);\r\n return null;\r\n }\r\n\r\n const parsedAccount = this.validateAndParseJson(account);\r\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\r\n this.removeAccountKeyFromMap(accountKey);\r\n return null;\r\n }\r\n\r\n return CacheManager.toObject(new AccountEntity(), parsedAccount);\r\n }\r\n\r\n /**\r\n * set account entity in the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n setAccount(account: AccountEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAccount called\");\r\n const key = account.generateAccountKey();\r\n this.setItem(key, JSON.stringify(account));\r\n this.addAccountKeyToMap(key);\r\n }\r\n\r\n /**\r\n * Returns the array of account keys currently cached\r\n * @returns \r\n */\r\n getAccountKeys(): Array {\r\n this.logger.trace(\"BrowserCacheManager.getAccountKeys called\");\r\n const accountKeys = this.getItem(StaticCacheKeys.ACCOUNT_KEYS);\r\n if (accountKeys) {\r\n return JSON.parse(accountKeys);\r\n }\r\n\r\n this.logger.verbose(\"BrowserCacheManager.getAccountKeys - No account keys found\");\r\n return [];\r\n }\r\n\r\n /**\r\n * Add a new account to the key map\r\n * @param key \r\n */\r\n addAccountKeyToMap(key: string): void {\r\n this.logger.trace(\"BrowserCacheManager.addAccountKeyToMap called\");\r\n this.logger.tracePii(`BrowserCacheManager.addAccountKeyToMap called with key: ${key}`);\r\n const accountKeys = this.getAccountKeys();\r\n if (accountKeys.indexOf(key) === -1) {\r\n // Only add key if it does not already exist in the map\r\n accountKeys.push(key);\r\n this.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys));\r\n this.logger.verbose(\"BrowserCacheManager.addAccountKeyToMap account key added\");\r\n } else {\r\n this.logger.verbose(\"BrowserCacheManager.addAccountKeyToMap account key already exists in map\");\r\n }\r\n }\r\n\r\n /**\r\n * Remove an account from the key map\r\n * @param key \r\n */\r\n removeAccountKeyFromMap(key: string): void {\r\n this.logger.trace(\"BrowserCacheManager.removeAccountKeyFromMap called\");\r\n this.logger.tracePii(`BrowserCacheManager.removeAccountKeyFromMap called with key: ${key}`);\r\n const accountKeys = this.getAccountKeys();\r\n const removalIndex = accountKeys.indexOf(key);\r\n if (removalIndex > -1) {\r\n accountKeys.splice(removalIndex, 1);\r\n this.setItem(StaticCacheKeys.ACCOUNT_KEYS, JSON.stringify(accountKeys));\r\n this.logger.trace(\"BrowserCacheManager.removeAccountKeyFromMap account key removed\");\r\n } else {\r\n this.logger.trace(\"BrowserCacheManager.removeAccountKeyFromMap key not found in existing map\");\r\n }\r\n }\r\n\r\n /**\r\n * Extends inherited removeAccount function to include removal of the account key from the map\r\n * @param key \r\n */\r\n async removeAccount(key: string): Promise {\r\n super.removeAccount(key);\r\n this.removeAccountKeyFromMap(key);\r\n }\r\n\r\n /**\r\n * Removes given idToken from the cache and from the key map\r\n * @param key \r\n */\r\n removeIdToken(key: string): void {\r\n super.removeIdToken(key);\r\n this.removeTokenKey(key, CredentialType.ID_TOKEN);\r\n }\r\n\r\n /**\r\n * Removes given accessToken from the cache and from the key map\r\n * @param key \r\n */\r\n async removeAccessToken(key: string): Promise {\r\n super.removeAccessToken(key);\r\n this.removeTokenKey(key, CredentialType.ACCESS_TOKEN);\r\n }\r\n\r\n /**\r\n * Removes given refreshToken from the cache and from the key map\r\n * @param key \r\n */\r\n removeRefreshToken(key: string): void {\r\n super.removeRefreshToken(key);\r\n this.removeTokenKey(key, CredentialType.REFRESH_TOKEN);\r\n }\r\n\r\n /**\r\n * Gets the keys for the cached tokens associated with this clientId\r\n * @returns \r\n */\r\n getTokenKeys(): TokenKeys {\r\n this.logger.trace(\"BrowserCacheManager.getTokenKeys called\");\r\n const item = this.getItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`);\r\n if (item) {\r\n const tokenKeys = this.validateAndParseJson(item);\r\n if (tokenKeys && \r\n tokenKeys.hasOwnProperty(\"idToken\") &&\r\n tokenKeys.hasOwnProperty(\"accessToken\") &&\r\n tokenKeys.hasOwnProperty(\"refreshToken\")\r\n ) {\r\n return tokenKeys as TokenKeys;\r\n } else {\r\n this.logger.error(\"BrowserCacheManager.getTokenKeys - Token keys found but in an unknown format. Returning empty key map.\");\r\n }\r\n } else {\r\n this.logger.verbose(\"BrowserCacheManager.getTokenKeys - No token keys found\");\r\n }\r\n\r\n return {\r\n idToken: [],\r\n accessToken: [],\r\n refreshToken: []\r\n };\r\n }\r\n\r\n /**\r\n * Adds the given key to the token key map\r\n * @param key \r\n * @param type \r\n */\r\n addTokenKey(key: string, type: CredentialType): void {\r\n this.logger.trace(\"BrowserCacheManager addTokenKey called\");\r\n const tokenKeys = this.getTokenKeys();\r\n\r\n switch (type) {\r\n case CredentialType.ID_TOKEN:\r\n if (tokenKeys.idToken.indexOf(key) === -1) {\r\n this.logger.info(\"BrowserCacheManager: addTokenKey - idToken added to map\");\r\n tokenKeys.idToken.push(key);\r\n }\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n if (tokenKeys.accessToken.indexOf(key) === -1) {\r\n this.logger.info(\"BrowserCacheManager: addTokenKey - accessToken added to map\");\r\n tokenKeys.accessToken.push(key);\r\n }\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n if (tokenKeys.refreshToken.indexOf(key) === -1) {\r\n this.logger.info(\"BrowserCacheManager: addTokenKey - refreshToken added to map\");\r\n tokenKeys.refreshToken.push(key);\r\n }\r\n break;\r\n default:\r\n this.logger.error(`BrowserCacheManager:addTokenKey - CredentialType provided invalid. CredentialType: ${type}`);\r\n ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n\r\n this.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys));\r\n }\r\n\r\n /**\r\n * Removes the given key from the token key map\r\n * @param key \r\n * @param type \r\n */\r\n removeTokenKey(key: string, type: CredentialType): void {\r\n this.logger.trace(\"BrowserCacheManager removeTokenKey called\");\r\n const tokenKeys = this.getTokenKeys();\r\n\r\n switch (type) {\r\n case CredentialType.ID_TOKEN:\r\n this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove idToken with key: ${key} from map`);\r\n const idRemoval = tokenKeys.idToken.indexOf(key);\r\n if (idRemoval > -1) {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - idToken removed from map\");\r\n tokenKeys.idToken.splice(idRemoval, 1);\r\n } else {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - idToken does not exist in map. Either it was previously removed or it was never added.\");\r\n }\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove accessToken with key: ${key} from map`);\r\n const accessRemoval = tokenKeys.accessToken.indexOf(key);\r\n if (accessRemoval > -1) {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - accessToken removed from map\");\r\n tokenKeys.accessToken.splice(accessRemoval, 1);\r\n } else {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - accessToken does not exist in map. Either it was previously removed or it was never added.\");\r\n }\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n this.logger.infoPii(`BrowserCacheManager: removeTokenKey - attempting to remove refreshToken with key: ${key} from map`);\r\n const refreshRemoval = tokenKeys.refreshToken.indexOf(key);\r\n if (refreshRemoval > -1) {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - refreshToken removed from map\");\r\n tokenKeys.refreshToken.splice(refreshRemoval, 1);\r\n } else {\r\n this.logger.info(\"BrowserCacheManager: removeTokenKey - refreshToken does not exist in map. Either it was previously removed or it was never added.\");\r\n }\r\n break;\r\n default:\r\n this.logger.error(`BrowserCacheManager:removeTokenKey - CredentialType provided invalid. CredentialType: ${type}`);\r\n ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n\r\n this.setItem(`${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`, JSON.stringify(tokenKeys));\r\n }\r\n\r\n /**\r\n * generates idToken entity from a string\r\n * @param idTokenKey\r\n */\r\n getIdTokenCredential(idTokenKey: string): IdTokenEntity | null {\r\n const value = this.getItem(idTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN);\r\n return null;\r\n }\r\n\r\n const parsedIdToken = this.validateAndParseJson(value);\r\n if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN);\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\r\n return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\r\n }\r\n\r\n /**\r\n * set IdToken credential to the platform cache\r\n * @param idToken\r\n */\r\n setIdTokenCredential(idToken: IdTokenEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\r\n const idTokenKey = idToken.generateCredentialKey();\r\n\r\n this.setItem(idTokenKey, JSON.stringify(idToken));\r\n\r\n this.addTokenKey(idTokenKey, CredentialType.ID_TOKEN);\r\n }\r\n\r\n /**\r\n * generates accessToken entity from a string\r\n * @param key\r\n */\r\n getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null {\r\n const value = this.getItem(accessTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\r\n return null;\r\n }\r\n const parsedAccessToken = this.validateAndParseJson(value);\r\n if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\r\n return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\r\n }\r\n\r\n /**\r\n * set accessToken credential to the platform cache\r\n * @param accessToken\r\n */\r\n setAccessTokenCredential(accessToken: AccessTokenEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAccessTokenCredential called\");\r\n const accessTokenKey = accessToken.generateCredentialKey();\r\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\r\n\r\n this.addTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\r\n }\r\n\r\n /**\r\n * generates refreshToken entity from a string\r\n * @param refreshTokenKey\r\n */\r\n getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null {\r\n const value = this.getItem(refreshTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\r\n return null;\r\n }\r\n const parsedRefreshToken = this.validateAndParseJson(value);\r\n if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\r\n return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\r\n }\r\n\r\n /**\r\n * set refreshToken credential to the platform cache\r\n * @param refreshToken\r\n */\r\n setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setRefreshTokenCredential called\");\r\n const refreshTokenKey = refreshToken.generateCredentialKey();\r\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\r\n\r\n this.addTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\r\n }\r\n\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n getAppMetadata(appMetadataKey: string): AppMetadataEntity | null {\r\n const value = this.getItem(appMetadataKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\r\n return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\r\n }\r\n\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n setAppMetadata(appMetadata: AppMetadataEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\r\n const appMetadataKey = appMetadata.generateAppMetadataKey();\r\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\r\n }\r\n\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null {\r\n const value = this.getItem(serverTelemetryKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\r\n return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\r\n }\r\n\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\r\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\r\n }\r\n\r\n /**\r\n *\r\n */\r\n getAuthorityMetadata(key: string): AuthorityMetadataEntity | null {\r\n const value = this.internalStorage.getItem(key);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\r\n return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n *\r\n */\r\n getAuthorityMetadataKeys(): Array {\r\n const allKeys = this.internalStorage.getKeys();\r\n return allKeys.filter((key) => {\r\n return this.isAuthorityMetadata(key);\r\n });\r\n }\r\n\r\n /**\r\n * Sets wrapper metadata in memory\r\n * @param wrapperSKU\r\n * @param wrapperVersion\r\n */\r\n setWrapperMetadata(wrapperSKU: string, wrapperVersion: string): void {\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU);\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion);\r\n }\r\n\r\n /**\r\n * Returns wrapper metadata from in-memory storage\r\n */\r\n getWrapperMetadata(): [string, string] {\r\n const sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || Constants.EMPTY_STRING;\r\n const version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || Constants.EMPTY_STRING;\r\n return [sku, version];\r\n }\r\n\r\n /**\r\n *\r\n * @param entity\r\n */\r\n setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\r\n this.internalStorage.setItem(key, JSON.stringify(entity));\r\n }\r\n\r\n /**\r\n * Gets the active account\r\n */\r\n getActiveAccount(): AccountInfo | null {\r\n const activeAccountKeyFilters = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\r\n const activeAccountValueFilters = this.getItem(activeAccountKeyFilters);\r\n if (!activeAccountValueFilters) {\r\n // if new active account cache type isn't found, it's an old version, so look for that instead\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account filters cache schema found, looking for legacy schema\");\r\n const activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n const activeAccountValueLocal = this.getItem(activeAccountKeyLocal);\r\n if (!activeAccountValueLocal) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account found\");\r\n return null;\r\n }\r\n const activeAccount = this.getAccountInfoByFilter({ localAccountId: activeAccountValueLocal })[0] || null;\r\n if (activeAccount) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Legacy active account cache schema found\");\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Adding active account filters cache schema\");\r\n this.setActiveAccount(activeAccount);\r\n return activeAccount;\r\n }\r\n return null;\r\n }\r\n const activeAccountValueObj = this.validateAndParseJson(activeAccountValueFilters) as AccountInfo;\r\n if (activeAccountValueObj) {\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: Active account filters schema found\");\r\n return this.getAccountInfoByFilter({\r\n homeAccountId: activeAccountValueObj.homeAccountId,\r\n localAccountId: activeAccountValueObj.localAccountId\r\n })[0] || null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getActiveAccount: No active account found\");\r\n return null;\r\n }\r\n\r\n /**\r\n * Sets the active account's localAccountId in cache\r\n * @param account\r\n */\r\n setActiveAccount(account: AccountInfo | null): void {\r\n const activeAccountKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\r\n const activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n if (account) {\r\n this.logger.verbose(\"setActiveAccount: Active account set\");\r\n const activeAccountValue: ActiveAccountFilters = {\r\n homeAccountId: account.homeAccountId,\r\n localAccountId: account.localAccountId\r\n };\r\n this.browserStorage.setItem(activeAccountKey, JSON.stringify(activeAccountValue));\r\n this.browserStorage.setItem(activeAccountKeyLocal, account.localAccountId);\r\n } else {\r\n this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\r\n this.browserStorage.removeItem(activeAccountKey);\r\n this.browserStorage.removeItem(activeAccountKeyLocal);\r\n }\r\n }\r\n\r\n /**\r\n * Gets a list of accounts that match all of the filters provided\r\n * @param account\r\n */\r\n getAccountInfoByFilter(accountFilter: Partial>): AccountInfo[] {\r\n const allAccounts = this.getAllAccounts();\r\n this.logger.trace(`BrowserCacheManager.getAccountInfoByFilter: total ${allAccounts.length} accounts found`);\r\n\r\n return allAccounts.filter((accountObj) => {\r\n if (accountFilter.username && accountFilter.username.toLowerCase() !== accountObj.username.toLowerCase()) {\r\n return false;\r\n }\r\n\r\n if (accountFilter.homeAccountId && accountFilter.homeAccountId !== accountObj.homeAccountId) {\r\n return false;\r\n }\r\n\r\n if (accountFilter.localAccountId && accountFilter.localAccountId !== accountObj.localAccountId) {\r\n return false;\r\n }\r\n\r\n if (accountFilter.tenantId && accountFilter.tenantId !== accountObj.tenantId) {\r\n return false;\r\n }\r\n\r\n if (accountFilter.environment && accountFilter.environment !== accountObj.environment) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n /**\r\n * Checks the cache for accounts matching loginHint or SID\r\n * @param loginHint\r\n * @param sid\r\n */\r\n getAccountInfoByHints(loginHint?: string, sid?: string): AccountInfo | null {\r\n const matchingAccounts = this.getAllAccounts().filter((accountInfo) => {\r\n if (sid) {\r\n const accountSid = accountInfo.idTokenClaims && accountInfo.idTokenClaims[\"sid\"];\r\n return sid === accountSid;\r\n }\r\n\r\n if (loginHint) {\r\n return loginHint === accountInfo.username;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n if (matchingAccounts.length === 1) {\r\n return matchingAccounts[0];\r\n } else if (matchingAccounts.length > 1) {\r\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null {\r\n const value = this.getItem(throttlingCacheKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n const parsedThrottlingCache = this.validateAndParseJson(value);\r\n if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\r\n return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\r\n }\r\n\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\r\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\r\n }\r\n\r\n /**\r\n * Gets cache item with given key.\r\n * Will retrieve from cookies if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null {\r\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n const itemCookie = this.getItemCookie(key);\r\n if (itemCookie) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\r\n return itemCookie;\r\n }\r\n }\r\n\r\n const value = this.temporaryCacheStorage.getItem(key);\r\n if (!value) {\r\n // If temp cache item not found in session/memory, check local storage for items set by old versions\r\n if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) {\r\n const item = this.browserStorage.getItem(key);\r\n if (item) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\");\r\n return item;\r\n }\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\");\r\n return value;\r\n }\r\n\r\n /**\r\n * Sets the cache item with the key and value given.\r\n * Stores in cookie if storeAuthStateInCookie is set to true.\r\n * This can cause cookie overflow if used incorrectly.\r\n * @param key\r\n * @param value\r\n */\r\n setTemporaryCache(cacheKey: string, value: string, generateKey?: boolean): void {\r\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n\r\n this.temporaryCacheStorage.setItem(key, value);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\r\n this.setItemCookie(key, value);\r\n }\r\n }\r\n\r\n /**\r\n * Removes the cache item with the given key.\r\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n removeItem(key: string): void {\r\n this.browserStorage.removeItem(key);\r\n this.temporaryCacheStorage.removeItem(key);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\r\n this.clearItemCookie(key);\r\n }\r\n }\r\n\r\n /**\r\n * Checks whether key is in cache.\r\n * @param key\r\n */\r\n containsKey(key: string): boolean {\r\n return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\r\n }\r\n\r\n /**\r\n * Gets all keys in window.\r\n */\r\n getKeys(): string[] {\r\n return [\r\n ...this.browserStorage.getKeys(),\r\n ...this.temporaryCacheStorage.getKeys()\r\n ];\r\n }\r\n\r\n /**\r\n * Clears all cache entries created by MSAL.\r\n */\r\n async clear(): Promise {\r\n // Removes all accounts and their credentials\r\n await this.removeAllAccounts();\r\n this.removeAppMetadata();\r\n\r\n // Removes all remaining MSAL cache items\r\n this.getKeys().forEach((cacheKey: string) => {\r\n // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\r\n if ((this.browserStorage.containsKey(cacheKey) || this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(this.clientId) !== -1))) {\r\n this.removeItem(cacheKey);\r\n }\r\n });\r\n\r\n this.internalStorage.clear();\r\n }\r\n\r\n /**\r\n * Add value to cookies\r\n * @param cookieName\r\n * @param cookieValue\r\n * @param expires\r\n */\r\n setItemCookie(cookieName: string, cookieValue: string, expires?: number): void {\r\n let cookieStr = `${encodeURIComponent(cookieName)}=${encodeURIComponent(cookieValue)};path=/;SameSite=Lax;`;\r\n if (expires) {\r\n const expireTime = this.getCookieExpirationTime(expires);\r\n cookieStr += `expires=${expireTime};`;\r\n }\r\n\r\n if (this.cacheConfig.secureCookies) {\r\n cookieStr += \"Secure;\";\r\n }\r\n\r\n document.cookie = cookieStr;\r\n }\r\n\r\n /**\r\n * Get one item by key from cookies\r\n * @param cookieName\r\n */\r\n getItemCookie(cookieName: string): string {\r\n const name = `${encodeURIComponent(cookieName)}=`;\r\n const cookieList = document.cookie.split(\";\");\r\n for (let i: number = 0; i < cookieList.length; i++) {\r\n let cookie = cookieList[i];\r\n while (cookie.charAt(0) === \" \") {\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(name) === 0) {\r\n return decodeURIComponent(cookie.substring(name.length, cookie.length));\r\n }\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n\r\n /**\r\n * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\r\n */\r\n clearMsalCookies(): void {\r\n const cookiePrefix = `${Constants.CACHE_PREFIX}.${this.clientId}`;\r\n const cookieList = document.cookie.split(\";\");\r\n cookieList.forEach((cookie: string): void => {\r\n while (cookie.charAt(0) === \" \") {\r\n // eslint-disable-next-line no-param-reassign\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(cookiePrefix) === 0) {\r\n const cookieKey = cookie.split(\"=\")[0];\r\n this.clearItemCookie(cookieKey);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clear an item in the cookies by key\r\n * @param cookieName\r\n */\r\n clearItemCookie(cookieName: string): void {\r\n this.setItemCookie(cookieName, Constants.EMPTY_STRING, -1);\r\n }\r\n\r\n /**\r\n * Get cookie expiration time\r\n * @param cookieLifeDays\r\n */\r\n getCookieExpirationTime(cookieLifeDays: number): string {\r\n const today = new Date();\r\n const expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\r\n return expr.toUTCString();\r\n }\r\n\r\n /**\r\n * Gets the cache object referenced by the browser\r\n */\r\n getCache(): object {\r\n return this.browserStorage;\r\n }\r\n\r\n /**\r\n * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\r\n */\r\n setCache(): void {\r\n // sets nothing\r\n }\r\n\r\n /**\r\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)\r\n * @param key\r\n * @param addInstanceId\r\n */\r\n generateCacheKey(key: string): string {\r\n const generatedKey = this.validateAndParseJson(key);\r\n if (!generatedKey) {\r\n if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\r\n return key;\r\n }\r\n return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`;\r\n }\r\n\r\n return JSON.stringify(key);\r\n }\r\n\r\n /**\r\n * Create authorityKey to cache authority\r\n * @param state\r\n */\r\n generateAuthorityKey(stateString: string): string {\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n\r\n return this.generateCacheKey(`${TemporaryCacheKeys.AUTHORITY}.${stateId}`);\r\n }\r\n\r\n /**\r\n * Create Nonce key to cache nonce\r\n * @param state\r\n */\r\n generateNonceKey(stateString: string): string {\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n\r\n return this.generateCacheKey(`${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}`);\r\n }\r\n\r\n /**\r\n * Creates full cache key for the request state\r\n * @param stateString State string for the request\r\n */\r\n generateStateKey(stateString: string): string {\r\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n return this.generateCacheKey(`${TemporaryCacheKeys.REQUEST_STATE}.${stateId}`);\r\n }\r\n\r\n /**\r\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\r\n */\r\n getCachedAuthority(cachedState: string): string | null {\r\n const stateCacheKey = this.generateStateKey(cachedState);\r\n const state = this.getTemporaryCache(stateCacheKey);\r\n if (!state) {\r\n return null;\r\n }\r\n\r\n const authorityCacheKey = this.generateAuthorityKey(state);\r\n return this.getTemporaryCache(authorityCacheKey);\r\n }\r\n\r\n /**\r\n * Updates account, authority, and state in cache\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n */\r\n updateCacheEntries(state: string, nonce: string, authorityInstance: string, loginHint: string, account: AccountInfo | null): void {\r\n this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\r\n // Cache the request state\r\n const stateCacheKey = this.generateStateKey(state);\r\n this.setTemporaryCache(stateCacheKey, state, false);\r\n\r\n // Cache the nonce\r\n const nonceCacheKey = this.generateNonceKey(state);\r\n this.setTemporaryCache(nonceCacheKey, nonce, false);\r\n\r\n // Cache authorityKey\r\n const authorityCacheKey = this.generateAuthorityKey(state);\r\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\r\n\r\n if (account) {\r\n const ccsCredential: CcsCredential = {\r\n credential: account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n } else if (!StringUtils.isEmpty(loginHint)) {\r\n const ccsCredential: CcsCredential = {\r\n credential: loginHint,\r\n type: CcsCredentialType.UPN\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n }\r\n\r\n /**\r\n * Reset all temporary cache items\r\n * @param state\r\n */\r\n resetRequestCache(state: string): void {\r\n this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\r\n // check state and remove associated cache items\r\n if (!StringUtils.isEmpty(state)) {\r\n this.getKeys().forEach(key => {\r\n if (key.indexOf(state) !== -1) {\r\n this.removeItem(key);\r\n }\r\n });\r\n }\r\n\r\n // delete generic interactive request parameters\r\n if (state) {\r\n this.removeItem(this.generateStateKey(state));\r\n this.removeItem(this.generateNonceKey(state));\r\n this.removeItem(this.generateAuthorityKey(state));\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n this.setInteractionInProgress(false);\r\n }\r\n\r\n /**\r\n * Removes temporary cache for the provided state\r\n * @param stateString\r\n */\r\n cleanRequestByState(stateString: string): void {\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\r\n // Interaction is completed - remove interaction status.\r\n if (stateString) {\r\n const stateKey = this.generateStateKey(stateString);\r\n const cachedState = this.temporaryCacheStorage.getItem(stateKey);\r\n this.logger.infoPii(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}`);\r\n this.resetRequestCache(cachedState || Constants.EMPTY_STRING);\r\n }\r\n this.clearMsalCookies();\r\n }\r\n\r\n /**\r\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\r\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\r\n * @param interactionType\r\n */\r\n cleanRequestByInteractionType(interactionType: InteractionType): void {\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByInteractionType called\");\r\n // Loop through all keys to find state key\r\n this.getKeys().forEach((key) => {\r\n // If this key is not the state key, move on\r\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\r\n return;\r\n }\r\n\r\n // Retrieve state value, return if not a valid value\r\n const stateValue = this.temporaryCacheStorage.getItem(key);\r\n if (!stateValue) {\r\n return;\r\n }\r\n // Extract state and ensure it matches given InteractionType, then clean request cache\r\n const parsedState = BrowserProtocolUtils.extractBrowserRequestState(this.cryptoImpl, stateValue);\r\n if (parsedState && parsedState.interactionType === interactionType) {\r\n this.logger.infoPii(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}`);\r\n this.resetRequestCache(stateValue);\r\n }\r\n });\r\n this.clearMsalCookies();\r\n this.setInteractionInProgress(false);\r\n }\r\n\r\n cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest, browserCrypto: ICrypto): void {\r\n this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\r\n\r\n const encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\r\n this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\r\n }\r\n\r\n /**\r\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\r\n */\r\n getCachedRequest(state: string, browserCrypto: ICrypto): CommonAuthorizationCodeRequest {\r\n this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\r\n // Get token request from cache and parse as TokenExchangeParameters.\r\n const encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\r\n if (!encodedTokenRequest) {\r\n throw BrowserAuthError.createNoTokenRequestCacheError();\r\n }\r\n\r\n const parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest)) as CommonAuthorizationCodeRequest;\r\n if (!parsedRequest) {\r\n throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n\r\n // Get cached authority and use if no authority is cached with request.\r\n if (StringUtils.isEmpty(parsedRequest.authority)) {\r\n const authorityCacheKey: string = this.generateAuthorityKey(state);\r\n const cachedAuthority = this.getTemporaryCache(authorityCacheKey);\r\n if (!cachedAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n parsedRequest.authority = cachedAuthority;\r\n }\r\n\r\n return parsedRequest;\r\n }\r\n\r\n /**\r\n * Gets cached native request for redirect flows\r\n */\r\n getCachedNativeRequest(): NativeTokenRequest | null {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest called\");\r\n const cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true);\r\n if (!cachedRequest) {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest: No cached native request found\");\r\n return null;\r\n }\r\n\r\n const parsedRequest = this.validateAndParseJson(cachedRequest) as NativeTokenRequest;\r\n if (!parsedRequest) {\r\n this.logger.error(\"BrowserCacheManager.getCachedNativeRequest: Unable to parse native request\");\r\n return null;\r\n }\r\n\r\n return parsedRequest;\r\n }\r\n\r\n isInteractionInProgress(matchClientId?: boolean): boolean {\r\n const clientId = this.getInteractionInProgress();\r\n\r\n if (matchClientId) {\r\n return clientId === this.clientId;\r\n } else {\r\n return !!clientId;\r\n }\r\n }\r\n\r\n getInteractionInProgress(): string | null {\r\n const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\r\n return this.getTemporaryCache(key, false);\r\n }\r\n\r\n setInteractionInProgress(inProgress: boolean): void {\r\n // Ensure we don't overwrite interaction in progress for a different clientId\r\n const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\r\n if (inProgress) {\r\n if (this.getInteractionInProgress()) {\r\n throw BrowserAuthError.createInteractionInProgressError();\r\n } else {\r\n // No interaction is in progress\r\n this.setTemporaryCache(key, this.clientId, false);\r\n }\r\n } else if (!inProgress && this.getInteractionInProgress() === this.clientId) {\r\n this.removeItem(key);\r\n }\r\n }\r\n\r\n /**\r\n * Returns username retrieved from ADAL or MSAL v1 idToken\r\n */\r\n getLegacyLoginHint(): string | null {\r\n // Only check for adal/msal token if no SSO params are being used\r\n const adalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n if (adalIdTokenString) {\r\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n this.logger.verbose(\"Cached ADAL id token retrieved.\");\r\n }\r\n\r\n // Check for cached MSAL v1 id token\r\n const msalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ID_TOKEN, true);\r\n if (msalIdTokenString) {\r\n this.removeItem(this.generateCacheKey(PersistentCacheKeys.ID_TOKEN));\r\n this.logger.verbose(\"Cached MSAL.js v1 id token retrieved\");\r\n }\r\n\r\n const cachedIdTokenString = msalIdTokenString || adalIdTokenString;\r\n if (cachedIdTokenString) {\r\n const cachedIdToken = new IdToken(cachedIdTokenString, this.cryptoImpl);\r\n if (cachedIdToken.claims && cachedIdToken.claims.preferred_username) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint\");\r\n return cachedIdToken.claims.preferred_username;\r\n }\r\n else if (cachedIdToken.claims && cachedIdToken.claims.upn) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint\");\r\n return cachedIdToken.claims.upn;\r\n }\r\n else {\r\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.\");\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Updates a credential's cache key if the current cache key is outdated\r\n */\r\n updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string {\r\n const updatedCacheKey = credential.generateCredentialKey();\r\n\r\n if (currentCacheKey !== updatedCacheKey) {\r\n const cacheItem = this.getItem(currentCacheKey);\r\n if (cacheItem) {\r\n this.removeItem(currentCacheKey);\r\n this.setItem(updatedCacheKey, cacheItem);\r\n this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`);\r\n return updatedCacheKey;\r\n } else {\r\n this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`);\r\n }\r\n }\r\n\r\n return currentCacheKey;\r\n }\r\n\r\n /**\r\n * Returns application id as redirect context during AcquireTokenRedirect flow.\r\n */\r\n getRedirectRequestContext(): string | null {\r\n return this.getTemporaryCache(TemporaryCacheKeys.REDIRECT_CONTEXT, true);\r\n }\r\n\r\n /**\r\n * Sets application id as the redirect context during AcquireTokenRedirect flow.\r\n * @param value\r\n */\r\n setRedirectRequestContext(value: string): void {\r\n this.setTemporaryCache(TemporaryCacheKeys.REDIRECT_CONTEXT, value, true);\r\n }\r\n}\r\n\r\nexport const DEFAULT_BROWSER_CACHE_MANAGER = (clientId: string, logger: Logger): BrowserCacheManager => {\r\n const cacheOptions: Required = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n temporaryCacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false,\r\n cacheMigrationEnabled: false,\r\n claimsBasedCachingEnabled: true\r\n };\r\n return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from \"../crypto/ICrypto\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { ILoggerCallback, Logger, LogLevel } from \"../logger/Logger\";\r\nimport { Constants } from \"../utils/Constants\";\r\nimport { version } from \"../packageMetadata\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { AzureCloudInstance } from \"../authority/AuthorityOptions\";\r\nimport { CacheManager, DefaultStorageClass } from \"../cache/CacheManager\";\r\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\r\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\r\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\r\nimport { ClientCredentials } from \"../account/ClientCredentials\";\r\n\r\n// Token renewal offset default in seconds\r\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\n\r\n/**\r\n * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL.\r\n *\r\n * This object allows you to configure important elements of MSAL functionality:\r\n * - authOptions - Authentication for application\r\n * - cryptoInterface - Implementation of crypto functions\r\n * - libraryInfo - Library metadata\r\n * - telemetry - Telemetry options and data\r\n * - loggerOptions - Logging for application\r\n * - cacheOptions - Cache options for application\r\n * - networkInterface - Network implementation\r\n * - storageInterface - Storage implementation\r\n * - systemOptions - Additional library options\r\n * - clientCredentials - Credentials options for confidential clients\r\n */\r\nexport type ClientConfiguration = {\r\n authOptions: AuthOptions,\r\n systemOptions?: SystemOptions,\r\n loggerOptions?: LoggerOptions,\r\n cacheOptions?: CacheOptions,\r\n storageInterface?: CacheManager,\r\n networkInterface?: INetworkModule,\r\n cryptoInterface?: ICrypto,\r\n clientCredentials?: ClientCredentials,\r\n libraryInfo?: LibraryInfo\r\n telemetry?: TelemetryOptions,\r\n serverTelemetryManager?: ServerTelemetryManager | null,\r\n persistencePlugin?: ICachePlugin | null,\r\n serializableCache?: ISerializableTokenCache | null, \r\n};\r\n\r\nexport type CommonClientConfiguration = {\r\n authOptions: Required,\r\n systemOptions: Required,\r\n loggerOptions : Required,\r\n cacheOptions: Required,\r\n storageInterface: CacheManager,\r\n networkInterface : INetworkModule,\r\n cryptoInterface : Required,\r\n libraryInfo : LibraryInfo,\r\n telemetry: Required,\r\n serverTelemetryManager: ServerTelemetryManager | null,\r\n clientCredentials: ClientCredentials,\r\n persistencePlugin: ICachePlugin | null,\r\n serializableCache: ISerializableTokenCache | null, \r\n};\r\n\r\n/**\r\n * Use this to configure the auth options in the ClientConfiguration object\r\n *\r\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\r\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\r\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\r\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\r\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\r\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\r\n * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false.\r\n */\r\nexport type AuthOptions = {\r\n clientId: string;\r\n authority: Authority;\r\n clientCapabilities?: Array;\r\n azureCloudOptions?: AzureCloudOptions;\r\n skipAuthorityMetadataCache?: boolean;\r\n};\r\n\r\n/**\r\n * Use this to configure token renewal info in the Configuration object\r\n *\r\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\r\n */\r\nexport type SystemOptions = {\r\n tokenRenewalOffsetSeconds?: number;\r\n preventCorsPreflight?: boolean;\r\n};\r\n\r\n/**\r\n * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object\r\n *\r\n * - loggerCallback - Callback for logger\r\n * - piiLoggingEnabled - Sets whether pii logging is enabled\r\n * - logLevel - Sets the level at which logging happens\r\n * - correlationId - Sets the correlationId printed by the logger\r\n */\r\nexport type LoggerOptions = {\r\n loggerCallback?: ILoggerCallback,\r\n piiLoggingEnabled?: boolean,\r\n logLevel?: LogLevel,\r\n correlationId?: string\r\n};\r\n\r\n/**\r\n * Use this to configure credential cache preferences in the ClientConfiguration object\r\n *\r\n * - claimsBasedCachingEnabled - Sets whether tokens should be cached based on the claims hash. Default is true.\r\n */\r\nexport type CacheOptions = {\r\n claimsBasedCachingEnabled?: boolean;\r\n};\r\n\r\n/**\r\n * Library-specific options\r\n */\r\nexport type LibraryInfo = {\r\n sku: string,\r\n version: string,\r\n cpu: string,\r\n os: string\r\n};\r\n\r\n/**\r\n * AzureCloudInstance specific options\r\n *\r\n * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities\r\n * - tenant - provision to provide the tenant info\r\n */\r\nexport type AzureCloudOptions = {\r\n azureCloudInstance: AzureCloudInstance;\r\n tenant?: string,\r\n};\r\n\r\nexport type TelemetryOptions = {\r\n application: ApplicationTelemetry;\r\n};\r\n\r\n/**\r\n * Telemetry information sent on request\r\n * - appName: Unique string name of an application\r\n * - appVersion: Version of the application using MSAL\r\n */\r\nexport type ApplicationTelemetry = {\r\n appName: string;\r\n appVersion: string;\r\n};\r\n\r\nexport const DEFAULT_SYSTEM_OPTIONS: Required = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false\r\n};\r\n\r\nconst DEFAULT_LOGGER_IMPLEMENTATION: Required = {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n correlationId: Constants.EMPTY_STRING\r\n};\r\n\r\nconst DEFAULT_CACHE_OPTIONS: Required = {\r\n claimsBasedCachingEnabled: true\r\n};\r\n\r\nconst DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = {\r\n async sendGetRequestAsync(): Promise {\r\n const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async sendPostRequestAsync(): Promise {\r\n const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n};\r\n\r\nconst DEFAULT_LIBRARY_INFO: LibraryInfo = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n};\r\n\r\nconst DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = {\r\n clientSecret: Constants.EMPTY_STRING,\r\n clientAssertion: undefined\r\n};\r\n\r\nconst DEFAULT_AZURE_CLOUD_OPTIONS: AzureCloudOptions = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: `${Constants.DEFAULT_COMMON_TENANT}`\r\n};\r\n\r\nconst DEFAULT_TELEMETRY_OPTIONS: Required = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\"\r\n }\r\n};\r\n\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nexport function buildClientConfiguration(\r\n {\r\n authOptions: userAuthOptions,\r\n systemOptions: userSystemOptions,\r\n loggerOptions: userLoggerOption,\r\n cacheOptions: userCacheOptions,\r\n storageInterface: storageImplementation,\r\n networkInterface: networkImplementation,\r\n cryptoInterface: cryptoImplementation,\r\n clientCredentials: clientCredentials,\r\n libraryInfo: libraryInfo,\r\n telemetry: telemetry,\r\n serverTelemetryManager: serverTelemetryManager,\r\n persistencePlugin: persistencePlugin,\r\n serializableCache: serializableCache, \r\n }: ClientConfiguration): CommonClientConfiguration {\r\n\r\n const loggerOptions = { ...DEFAULT_LOGGER_IMPLEMENTATION, ...userLoggerOption };\r\n\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\r\n loggerOptions: loggerOptions,\r\n cacheOptions: {...DEFAULT_CACHE_OPTIONS, ...userCacheOptions },\r\n storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null, \r\n };\r\n}\r\n\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions: AuthOptions): Required {\r\n return {\r\n clientCapabilities: [],\r\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\r\n skipAuthorityMetadataCache: false,\r\n ...authOptions\r\n };\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { NetworkResponse } from \"./NetworkManager\";\r\n\r\n/**\r\n * Options allowed by network request APIs.\r\n */\r\nexport type NetworkRequestOptions = {\r\n headers?: Record,\r\n body?: string;\r\n};\r\n\r\n/**\r\n * Client network interface to send backend requests.\r\n * @interface\r\n */\r\nexport interface INetworkModule {\r\n\r\n /**\r\n * Interface function for async network \"GET\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\r\n * @param url\r\n * @param requestParams\r\n * @param enableCaching\r\n */\r\n sendGetRequestAsync(url: string, options?: NetworkRequestOptions, cancellationToken?: number): Promise>;\r\n\r\n /**\r\n * Interface function for async network \"POST\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\r\n * @param url\r\n * @param requestParams\r\n * @param enableCaching\r\n */\r\n sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>;\r\n}\r\n\r\nexport const StubbedNetworkModule: INetworkModule = {\r\n sendGetRequestAsync: () => {\r\n const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n },\r\n sendPostRequestAsync: () => {\r\n const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n }\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants, INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\r\n\r\n/**\r\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\r\n */\r\nexport class FetchClient implements INetworkModule {\r\n\r\n /**\r\n * Fetch Client for REST endpoints - Get request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n let response;\r\n try {\r\n response = await fetch(url, {\r\n method: HTTP_REQUEST_TYPE.GET,\r\n headers: this.getFetchHeaders(options)\r\n });\r\n } catch (e) {\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createGetRequestFailedError(e, url);\r\n } else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n try {\r\n return {\r\n headers: this.getHeaderDict(response.headers),\r\n body: await response.json() as T,\r\n status: response.status\r\n };\r\n } catch (e) {\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n }\r\n }\r\n\r\n /**\r\n * Fetch Client for REST endpoints - Post request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n const reqBody = (options && options.body) || Constants.EMPTY_STRING;\r\n\r\n let response;\r\n try {\r\n response = await fetch(url, {\r\n method: HTTP_REQUEST_TYPE.POST,\r\n headers: this.getFetchHeaders(options),\r\n body: reqBody\r\n });\r\n } catch (e) {\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createPostRequestFailedError(e, url);\r\n } else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n try {\r\n return {\r\n headers: this.getHeaderDict(response.headers),\r\n body: await response.json() as T,\r\n status: response.status\r\n };\r\n } catch (e) {\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n }\r\n }\r\n\r\n /**\r\n * Get Fetch API Headers object from string map\r\n * @param inputHeaders \r\n */\r\n private getFetchHeaders(options?: NetworkRequestOptions): Headers {\r\n const headers = new Headers();\r\n if (!(options && options.headers)) {\r\n return headers;\r\n }\r\n const optionsHeaders = options.headers;\r\n Object.keys(optionsHeaders).forEach((key) => {\r\n headers.append(key, optionsHeaders[key]);\r\n });\r\n return headers;\r\n }\r\n\r\n private getHeaderDict(headers: Headers): Record {\r\n const headerDict: Record = {};\r\n headers.forEach((value: string, key: string) => {\r\n headerDict[key] = value;\r\n });\r\n return headerDict;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\r\n\r\n/**\r\n * This client implements the XMLHttpRequest class to send GET and POST requests.\r\n */\r\nexport class XhrClient implements INetworkModule {\r\n\r\n /**\r\n * XhrClient for REST endpoints - Get request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options);\r\n }\r\n\r\n /**\r\n * XhrClient for REST endpoints - Post request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options);\r\n }\r\n\r\n /**\r\n * Helper for XhrClient requests.\r\n * @param url \r\n * @param method \r\n * @param options \r\n */\r\n private sendRequestAsync(url: string, method: HTTP_REQUEST_TYPE, options?: NetworkRequestOptions): Promise> {\r\n return new Promise>((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(method, url, /* async: */ true);\r\n this.setXhrHeaders(xhr, options);\r\n xhr.onload = (): void => {\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n } else {\r\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n }\r\n }\r\n try {\r\n const jsonResponse = JSON.parse(xhr.responseText) as T;\r\n const networkResponse: NetworkResponse = {\r\n headers: this.getHeaderDict(xhr),\r\n body: jsonResponse,\r\n status: xhr.status\r\n };\r\n resolve(networkResponse);\r\n } catch (e) {\r\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\r\n }\r\n };\r\n\r\n xhr.onerror = (): void => {\r\n if (window.navigator.onLine) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n } else {\r\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n }\r\n } else {\r\n reject(BrowserAuthError.createNoNetworkConnectivityError());\r\n }\r\n };\r\n\r\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\r\n xhr.send(options.body);\r\n } else if (method === HTTP_REQUEST_TYPE.GET) {\r\n xhr.send();\r\n } else {\r\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Helper to set XHR headers for request.\r\n * @param xhr \r\n * @param options \r\n */\r\n private setXhrHeaders(xhr: XMLHttpRequest, options?: NetworkRequestOptions): void {\r\n if (options && options.headers) {\r\n const headers = options.headers;\r\n Object.keys(headers).forEach((key: string) => {\r\n xhr.setRequestHeader(key, headers[key]);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets a string map of the headers received in the response.\r\n * \r\n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\r\n * @param xhr \r\n */\r\n private getHeaderDict(xhr: XMLHttpRequest): Record {\r\n const headerString = xhr.getAllResponseHeaders();\r\n const headerArr = headerString.trim().split(/[\\r\\n]+/);\r\n const headerDict: Record = {};\r\n headerArr.forEach((value: string) => {\r\n const parts = value.split(\": \");\r\n const headerName = parts.shift();\r\n const headerVal = parts.join(\": \");\r\n if (headerName && headerVal) {\r\n headerDict[headerName] = headerVal;\r\n }\r\n });\r\n\r\n return headerDict;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants, INetworkModule, UrlString } from \"@azure/msal-common\";\r\nimport { FetchClient } from \"../network/FetchClient\";\r\nimport { XhrClient } from \"../network/XhrClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { InteractionType, BrowserConstants } from \"./BrowserConstants\";\r\n\r\n/**\r\n * Utility class for browser specific functions\r\n */\r\nexport class BrowserUtils {\r\n\r\n // #region Window Navigation and URL management\r\n\r\n /**\r\n * Clears hash from window url.\r\n */\r\n static clearHash(contentWindow: Window): void {\r\n // Office.js sets history.replaceState to null\r\n contentWindow.location.hash = Constants.EMPTY_STRING;\r\n if (typeof contentWindow.history.replaceState === \"function\") {\r\n // Full removes \"#\" from url\r\n contentWindow.history.replaceState(null, Constants.EMPTY_STRING, `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`);\r\n }\r\n }\r\n\r\n /**\r\n * Replaces current hash with hash from provided url\r\n */\r\n static replaceHash(url: string): void {\r\n const urlParts = url.split(\"#\");\r\n urlParts.shift(); // Remove part before the hash\r\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : Constants.EMPTY_STRING;\r\n }\r\n\r\n /**\r\n * Returns boolean of whether the current window is in an iframe or not.\r\n */\r\n static isInIframe(): boolean {\r\n return window.parent !== window;\r\n }\r\n\r\n /**\r\n * Returns boolean of whether or not the current window is a popup opened by msal\r\n */\r\n static isInPopup(): boolean {\r\n return typeof window !== \"undefined\" && !!window.opener && \r\n window.opener !== window && \r\n typeof window.name === \"string\" && \r\n window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0;\r\n }\r\n\r\n // #endregion\r\n\r\n /**\r\n * Returns current window URL as redirect uri\r\n */\r\n static getCurrentUri(): string {\r\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\r\n }\r\n\r\n /**\r\n * Gets the homepage url for the current window location.\r\n */\r\n static getHomepage(): string {\r\n const currentUrl = new UrlString(window.location.href);\r\n const urlComponents = currentUrl.getUrlComponents();\r\n return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;\r\n }\r\n\r\n /**\r\n * Returns best compatible network client object. \r\n */\r\n static getBrowserNetworkClient(): INetworkModule {\r\n if (window.fetch && window.Headers) {\r\n return new FetchClient();\r\n } else {\r\n return new XhrClient();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if we have completed an auth and are \r\n * attempting another auth request inside an iframe.\r\n */\r\n static blockReloadInHiddenIframes(): void {\r\n const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\r\n // return an error if called from the hidden iframe created by the msal js silent calls\r\n if (isResponseHash && BrowserUtils.isInIframe()) {\r\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\r\n }\r\n }\r\n\r\n /**\r\n * Block redirect operations in iframes unless explicitly allowed\r\n * @param interactionType Interaction type for the request\r\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\r\n */\r\n static blockRedirectInIframe(interactionType: InteractionType, allowRedirectInIframe: boolean): void {\r\n const isIframedApp = BrowserUtils.isInIframe();\r\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\r\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\r\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\r\n }\r\n }\r\n\r\n /**\r\n * Block redirectUri loaded in popup from calling AcquireToken APIs\r\n */\r\n static blockAcquireTokenInPopups(): void {\r\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\r\n if (BrowserUtils.isInPopup()) {\r\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if token requests are made in non-browser environment\r\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\r\n */\r\n static blockNonBrowserEnvironment(isBrowserEnvironment: boolean): void {\r\n if (!isBrowserEnvironment) {\r\n throw BrowserAuthError.createNonBrowserEnvironmentError();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if native brokering is enabled but initialize hasn't been called\r\n * @param allowNativeBroker \r\n * @param initialized \r\n */\r\n static blockNativeBrokerCalledBeforeInitialized(allowNativeBroker: boolean, initialized: boolean): void {\r\n if (allowNativeBroker && !initialized) {\r\n throw BrowserAuthError.createNativeBrokerCalledBeforeInitialize();\r\n }\r\n }\r\n\r\n /**\r\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\r\n */\r\n static detectIEOrEdge(): boolean {\r\n const ua = window.navigator.userAgent;\r\n const msie = ua.indexOf(\"MSIE \");\r\n const msie11 = ua.indexOf(\"Trident/\");\r\n const msedge = ua.indexOf(\"Edge/\");\r\n const isIE = msie > 0 || msie11 > 0;\r\n const isEdge = msedge > 0;\r\n return isIE || isEdge;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INavigationClient } from \"./INavigationClient\";\r\nimport { NavigationOptions } from \"./NavigationOptions\";\r\n\r\nexport class NavigationClient implements INavigationClient {\r\n /**\r\n * Navigates to other pages within the same web application\r\n * @param url \r\n * @param options \r\n */\r\n navigateInternal(url: string, options: NavigationOptions): Promise{\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n }\r\n\r\n /**\r\n * Navigates to other pages outside the web application i.e. the Identity Provider\r\n * @param url \r\n * @param options \r\n */\r\n navigateExternal(url: string, options: NavigationOptions): Promise {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n }\r\n\r\n /**\r\n * Default navigation implementation invoked by the internal and external functions\r\n * @param url \r\n * @param options \r\n */\r\n private static defaultNavigateWindow(url: string, options: NavigationOptions): Promise {\r\n if (options.noHistory) {\r\n window.location.replace(url);\r\n } else {\r\n window.location.assign(url);\r\n }\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(true);\r\n }, options.timeout);\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SystemOptions, LoggerOptions, INetworkModule, DEFAULT_SYSTEM_OPTIONS, Constants, ProtocolMode, LogLevel, StubbedNetworkModule, AzureCloudInstance, AzureCloudOptions, ApplicationTelemetry } from \"@azure/msal-common\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { BrowserCacheLocation, BrowserConstants } from \"../utils/BrowserConstants\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationClient } from \"../navigation/NavigationClient\";\r\n\r\n// Default timeout for popup windows and iframes in milliseconds\r\nexport const DEFAULT_POPUP_TIMEOUT_MS = 60000;\r\nexport const DEFAULT_IFRAME_TIMEOUT_MS = 6000;\r\nexport const DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\r\nexport const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000;\r\n\r\n/**\r\n * Use this to configure the auth options in the Configuration object\r\n */\r\nexport type BrowserAuthOptions = {\r\n /**\r\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\r\n */\r\n clientId: string;\r\n /**\r\n * You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\r\n */\r\n authority?: string;\r\n /**\r\n * An array of URIs that are known to be valid. Used in B2C scenarios.\r\n */\r\n knownAuthorities?: Array;\r\n /**\r\n * A string containing the cloud discovery response. Used in AAD scenarios.\r\n */\r\n cloudDiscoveryMetadata?: string;\r\n /**\r\n * A string containing the .well-known/openid-configuration endpoint response\r\n */\r\n authorityMetadata?: string;\r\n /**\r\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.\r\n */\r\n redirectUri?: string;\r\n /**\r\n * The redirect URI where the window navigates after a successful logout.\r\n */\r\n postLogoutRedirectUri?: string | null;\r\n /**\r\n * Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL.\r\n */\r\n navigateToLoginRequestUrl?: boolean;\r\n /**\r\n * Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\r\n */\r\n clientCapabilities?: Array;\r\n /**\r\n * Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\r\n */\r\n protocolMode?: ProtocolMode;\r\n /**\r\n * Enum that represents the Azure Cloud to use.\r\n */\r\n azureCloudOptions?: AzureCloudOptions;\r\n /**\r\n * Flag of whether to use the local metadata cache\r\n */\r\n skipAuthorityMetadataCache?: boolean;\r\n};\r\n\r\n/**\r\n * Use this to configure the below cache configuration options:\r\n */\r\nexport type CacheOptions = {\r\n /**\r\n * Used to specify the cacheLocation user wants to set. Valid values are \"localStorage\", \"sessionStorage\" and \"memoryStorage\".\r\n */\r\n cacheLocation?: BrowserCacheLocation | string;\r\n /**\r\n * Used to specify the temporaryCacheLocation user wants to set. Valid values are \"localStorage\", \"sessionStorage\" and \"memoryStorage\".\r\n */\r\n temporaryCacheLocation?: BrowserCacheLocation | string;\r\n /**\r\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.\r\n */\r\n storeAuthStateInCookie?: boolean;\r\n /**\r\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.\r\n */\r\n secureCookies?: boolean;\r\n /**\r\n * If set, MSAL will attempt to migrate cache entries from older versions on initialization. By default this flag is set to true if cacheLocation is localStorage, otherwise false.\r\n */\r\n cacheMigrationEnabled?: boolean;\r\n /**\r\n * Flag that determines whether access tokens are stored based on requested claims\r\n */\r\n claimsBasedCachingEnabled?: boolean;\r\n};\r\n\r\nexport type BrowserSystemOptions = SystemOptions & {\r\n /**\r\n * Used to initialize the Logger object (See ClientConfiguration.ts)\r\n */\r\n loggerOptions?: LoggerOptions;\r\n /**\r\n * Network interface implementation\r\n */\r\n networkClient?: INetworkModule;\r\n /**\r\n * Override the methods used to navigate to other webpages. Particularly useful if you are using a client-side router\r\n */\r\n navigationClient?: INavigationClient;\r\n /**\r\n * Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set.\r\n */\r\n windowHashTimeout?: number;\r\n /**\r\n * Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set.\r\n */\r\n iframeHashTimeout?: number;\r\n /**\r\n * Sets the timeout for waiting for a response hash in an iframe or popup\r\n */\r\n loadFrameTimeout?: number;\r\n /**\r\n * Maximum time the library should wait for a frame to load\r\n */\r\n navigateFrameWait?: number;\r\n /**\r\n * Time to wait for redirection to occur before resolving promise\r\n */\r\n redirectNavigationTimeout?: number;\r\n /**\r\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.\r\n */\r\n asyncPopups?: boolean;\r\n /**\r\n * Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login).\r\n */\r\n allowRedirectInIframe?: boolean;\r\n /**\r\n * Flag to enable native broker support (e.g. acquiring tokens from WAM on Windows)\r\n */\r\n allowNativeBroker?: boolean;\r\n /**\r\n * Sets the timeout for waiting for the native broker handshake to resolve\r\n */\r\n nativeBrokerHandshakeTimeout?: number;\r\n /**\r\n * Options related to browser crypto APIs\r\n */\r\n cryptoOptions?: CryptoOptions;\r\n /**\r\n * Sets the interval length in milliseconds for polling the location attribute in popup windows (default is 30ms)\r\n */\r\n pollIntervalMilliseconds?: number;\r\n};\r\n\r\nexport type CryptoOptions = {\r\n\r\n /**\r\n * Enables the application to use the MSR Crypto interface, if available (and other interfaces are not)\r\n * @type {?boolean}\r\n */\r\n useMsrCrypto?: boolean;\r\n\r\n /**\r\n * Entropy to seed browser crypto API (needed for MSR Crypto). Must be cryptographically strong random numbers (e.g. crypto.randomBytes(48) from Node)\r\n * @type {?Uint8Array}\r\n */\r\n entropy?: Uint8Array;\r\n};\r\n\r\n/**\r\n * Telemetry Options\r\n */\r\nexport type BrowserTelemetryOptions = {\r\n /**\r\n * Telemetry information sent on request\r\n * - appName: Unique string name of an application\r\n * - appVersion: Version of the application using MSAL\r\n */\r\n application?: ApplicationTelemetry;\r\n};\r\n\r\n/**\r\n * This object allows you to configure important elements of MSAL functionality and is passed into the constructor of PublicClientApplication\r\n */\r\nexport type Configuration = {\r\n /**\r\n * This is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\r\n */\r\n auth: BrowserAuthOptions,\r\n /**\r\n * This is where you configure cache location and whether to store cache in cookies\r\n */\r\n cache?: CacheOptions,\r\n /**\r\n * This is where you can configure the network client, logger, token renewal offset\r\n */\r\n system?: BrowserSystemOptions,\r\n /**\r\n * This is where you can configure telemetry data and options\r\n */\r\n telemetry?: BrowserTelemetryOptions\r\n};\r\n\r\nexport type BrowserConfiguration = {\r\n auth: Required,\r\n cache: Required,\r\n system: Required,\r\n telemetry: Required\r\n};\r\n\r\n/**\r\n * MSAL function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth\r\n * @param cache\r\n * @param system\r\n *\r\n * @returns Configuration object\r\n */\r\nexport function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem, telemetry: userInputTelemetry }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration {\r\n\r\n // Default auth options for browser\r\n const DEFAULT_AUTH_OPTIONS: Required = {\r\n clientId: Constants.EMPTY_STRING,\r\n authority: `${Constants.DEFAULT_AUTHORITY}`,\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: Constants.EMPTY_STRING,\r\n authorityMetadata: Constants.EMPTY_STRING,\r\n redirectUri: Constants.EMPTY_STRING,\r\n postLogoutRedirectUri: Constants.EMPTY_STRING,\r\n navigateToLoginRequestUrl: true,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD,\r\n azureCloudOptions: {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: Constants.EMPTY_STRING\r\n },\r\n skipAuthorityMetadataCache: false,\r\n };\r\n\r\n // Default cache options for browser\r\n const DEFAULT_CACHE_OPTIONS: Required = {\r\n cacheLocation: BrowserCacheLocation.SessionStorage,\r\n temporaryCacheLocation: BrowserCacheLocation.SessionStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false,\r\n // Default cache migration to true if cache location is localStorage since entries are preserved across tabs/windows. Migration has little to no benefit in sessionStorage and memoryStorage\r\n cacheMigrationEnabled: userInputCache && userInputCache.cacheLocation === BrowserCacheLocation.LocalStorage ? true : false,\r\n claimsBasedCachingEnabled: true\r\n };\r\n\r\n // Default logger options for browser\r\n const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n loggerCallback: (): void => {\r\n // allow users to not set logger call back \r\n },\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n };\r\n\r\n // Default system options for browser\r\n const DEFAULT_BROWSER_SYSTEM_OPTIONS: Required = {\r\n ...DEFAULT_SYSTEM_OPTIONS,\r\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\r\n networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule,\r\n navigationClient: new NavigationClient(),\r\n loadFrameTimeout: 0,\r\n // If loadFrameTimeout is provided, use that as default.\r\n windowHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_POPUP_TIMEOUT_MS,\r\n iframeHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_IFRAME_TIMEOUT_MS,\r\n navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0,\r\n redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS,\r\n asyncPopups: false,\r\n allowRedirectInIframe: false,\r\n allowNativeBroker: false,\r\n nativeBrokerHandshakeTimeout: userInputSystem?.nativeBrokerHandshakeTimeout || DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS,\r\n pollIntervalMilliseconds: BrowserConstants.DEFAULT_POLL_INTERVAL_MS,\r\n cryptoOptions: {\r\n useMsrCrypto: false,\r\n entropy: undefined\r\n }\r\n };\r\n\r\n const providedSystemOptions: BrowserSystemOptions = {\r\n ...userInputSystem,\r\n loggerOptions: userInputSystem?.loggerOptions || DEFAULT_LOGGER_OPTIONS\r\n };\r\n\r\n const DEFAULT_TELEMETRY_OPTIONS: Required = {\r\n application: {\r\n appName: Constants.EMPTY_STRING,\r\n appVersion: Constants.EMPTY_STRING\r\n }\r\n };\r\n\r\n const overlayedConfig: BrowserConfiguration = {\r\n auth: { ...DEFAULT_AUTH_OPTIONS, ...userInputAuth },\r\n cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache },\r\n system: { ...DEFAULT_BROWSER_SYSTEM_OPTIONS, ...providedSystemOptions },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...userInputTelemetry }\r\n };\r\n return overlayedConfig;\r\n}\r\n\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto, SignedHttpRequestParameters } from \"./ICrypto\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\n/**\r\n * See eSTS docs for more info.\r\n * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded.\r\n * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values:\r\n * - sw: software storage\r\n * - uhw: hardware storage\r\n */\r\ntype ReqCnf = {\r\n kid: string;\r\n xms_ksl: KeyLocation;\r\n};\r\n\r\nexport type ReqCnfData = {\r\n kid: string;\r\n reqCnfString: string;\r\n reqCnfHash: string;\r\n};\r\n\r\nenum KeyLocation {\r\n SW = \"sw\",\r\n UHW = \"uhw\"\r\n}\r\n\r\nexport class PopTokenGenerator {\r\n\r\n private cryptoUtils: ICrypto;\r\n private performanceClient?: IPerformanceClient;\r\n\r\n constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient) {\r\n this.cryptoUtils = cryptoUtils;\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n async generateCnf(request: SignedHttpRequestParameters): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n const reqCnf = await this.generateKid(request);\r\n const reqCnfString: string = this.cryptoUtils.base64Encode(JSON.stringify(reqCnf));\r\n\r\n return {\r\n kid: reqCnf.kid,\r\n reqCnfString, \r\n reqCnfHash: await this.cryptoUtils.hashString(reqCnfString) \r\n };\r\n }\r\n\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n async generateKid(request: SignedHttpRequestParameters): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n\r\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\r\n\r\n return {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW\r\n };\r\n }\r\n\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n async signPopToken(accessToken: string, keyId: string, request: SignedHttpRequestParameters): Promise {\r\n return this.signPayload(accessToken, keyId, request);\r\n }\r\n\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n async signPayload(payload: string, keyId: string, request: SignedHttpRequestParameters, claims?: object): Promise {\r\n\r\n // Deconstruct request to extract SHR parameters\r\n const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce } = request;\r\n\r\n const resourceUrlString = (resourceRequestUri) ? new UrlString(resourceRequestUri) : undefined;\r\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\r\n return await this.cryptoUtils.signJwt({\r\n at: payload,\r\n ts: TimeUtils.nowSeconds(),\r\n m: resourceRequestMethod?.toUpperCase(),\r\n u: resourceUrlComponents?.HostNameAndPort,\r\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents?.AbsolutePath,\r\n q: (resourceUrlComponents?.QueryString) ? [[], resourceUrlComponents.QueryString] : undefined,\r\n client_claims: shrClaims || undefined,\r\n ...claims\r\n }, keyId, request.correlationId);\r\n }\r\n}\r\n","/* eslint-disable header/header */\r\nexport const name = \"@azure/msal-browser\";\r\nexport const version = \"2.38.0\";\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto, Logger, AccountEntity, CacheManager } from \"@azure/msal-common\";\r\nimport { InteractionType } from \"../utils/BrowserConstants\";\r\nimport { EventCallbackFunction, EventError, EventMessage, EventPayload } from \"./EventMessage\";\r\nimport { EventType } from \"./EventType\";\r\n\r\nexport class EventHandler {\r\n // Callback for subscribing to events\r\n private eventCallbacks: Map;\r\n private logger: Logger;\r\n private browserCrypto: ICrypto;\r\n private listeningToStorageEvents: boolean;\r\n\r\n constructor(logger: Logger, browserCrypto: ICrypto) {\r\n this.eventCallbacks = new Map();\r\n this.logger = logger;\r\n this.browserCrypto = browserCrypto;\r\n this.listeningToStorageEvents = false;\r\n this.handleAccountCacheChange = this.handleAccountCacheChange.bind(this);\r\n }\r\n\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n addEventCallback(callback: EventCallbackFunction): string | null {\r\n if (typeof window !== \"undefined\") {\r\n const callbackId = this.browserCrypto.createNewGuid();\r\n this.eventCallbacks.set(callbackId, callback);\r\n this.logger.verbose(`Event callback registered with id: ${callbackId}`);\r\n \r\n return callbackId;\r\n }\r\n \r\n return null;\r\n }\r\n\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n removeEventCallback(callbackId: string): void {\r\n this.eventCallbacks.delete(callbackId);\r\n this.logger.verbose(`Event callback ${callbackId} removed.`);\r\n }\r\n\r\n /**\r\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\r\n */\r\n enableAccountStorageEvents(): void {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (!this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Adding account storage listener.\");\r\n this.listeningToStorageEvents = true;\r\n window.addEventListener(\"storage\", this.handleAccountCacheChange);\r\n } else {\r\n this.logger.verbose(\"Account storage listener already registered.\");\r\n }\r\n }\r\n\r\n /**\r\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\r\n */\r\n disableAccountStorageEvents(): void {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Removing account storage listener.\");\r\n window.removeEventListener(\"storage\", this.handleAccountCacheChange);\r\n this.listeningToStorageEvents = false;\r\n } else {\r\n this.logger.verbose(\"No account storage listener registered.\");\r\n }\r\n }\r\n\r\n /**\r\n * Emits events by calling callback with event message\r\n * @param eventType\r\n * @param interactionType\r\n * @param payload\r\n * @param error\r\n */\r\n emitEvent(eventType: EventType, interactionType?: InteractionType, payload?: EventPayload, error?: EventError): void {\r\n if (typeof window !== \"undefined\") {\r\n const message: EventMessage = {\r\n eventType: eventType,\r\n interactionType: interactionType || null,\r\n payload: payload || null,\r\n error: error || null,\r\n timestamp: Date.now()\r\n };\r\n\r\n this.logger.info(`Emitting event: ${eventType}`);\r\n\r\n this.eventCallbacks.forEach((callback: EventCallbackFunction, callbackId: string) => {\r\n this.logger.verbose(`Emitting event to callback ${callbackId}: ${eventType}`);\r\n callback.apply(null, [message]);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Emit account added/removed events when cached accounts are changed in a different tab or frame\r\n */\r\n private handleAccountCacheChange(e: StorageEvent): void {\r\n try {\r\n const cacheValue = e.newValue || e.oldValue;\r\n if (!cacheValue) {\r\n return;\r\n }\r\n const parsedValue = JSON.parse(cacheValue);\r\n if (typeof parsedValue !== \"object\" || !AccountEntity.isAccountEntity(parsedValue)) {\r\n return;\r\n }\r\n const accountEntity = CacheManager.toObject(new AccountEntity(), parsedValue);\r\n const accountInfo = accountEntity.getAccountInfo();\r\n if (!e.oldValue && e.newValue) {\r\n this.logger.info(\"Account was added to cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_ADDED, undefined, accountInfo);\r\n } else if (!e.newValue && e.oldValue) {\r\n this.logger.info(\"Account was removed from cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_REMOVED, undefined, accountInfo);\r\n }\r\n } catch (e) {\r\n return;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { NetworkResponse } from \"./NetworkManager\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { HeaderNames, ThrottlingConstants, Constants } from \"../utils/Constants\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { RequestThumbprint } from \"./RequestThumbprint\";\r\nimport { ThrottlingEntity } from \"../cache/entities/ThrottlingEntity\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\n\r\nexport class ThrottlingUtils {\r\n\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string {\r\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\r\n }\r\n\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n static preProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint): void {\r\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n const value = cacheManager.getThrottlingCache(key);\r\n\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key);\r\n return;\r\n }\r\n throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n }\r\n\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n static postProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint, response: NetworkResponse): void {\r\n if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n const thumbprintValue: ThrottlingEntity = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror\r\n };\r\n cacheManager.setThrottlingCache(\r\n ThrottlingUtils.generateThrottlingStorageKey(thumbprint),\r\n thumbprintValue\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n static checkResponseStatus(response: NetworkResponse): boolean {\r\n return response.status === 429 || response.status >= 500 && response.status < 600;\r\n }\r\n\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n static checkResponseForRetryAfter(response: NetworkResponse): boolean {\r\n if (response.headers) {\r\n return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n static calculateThrottleTime(throttleTime: number): number {\r\n const time = throttleTime <= 0 ? 0 : throttleTime;\r\n\r\n const currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(\r\n currentSeconds + (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS),\r\n currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS\r\n ) * 1000);\r\n }\r\n\r\n static removeThrottle(cacheManager: CacheManager, clientId: string, request: BaseAuthRequest, homeAccountIdentifier?: string): void {\r\n const thumbprint: RequestThumbprint = {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountIdentifier,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n\r\n const key = this.generateThrottlingStorageKey(thumbprint);\r\n cacheManager.removeItem(key);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions } from \"./INetworkModule\";\r\nimport { RequestThumbprint } from \"./RequestThumbprint\";\r\nimport { ThrottlingUtils } from \"./ThrottlingUtils\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\nexport type NetworkResponse = {\r\n headers: Record;\r\n body: T;\r\n status: number;\r\n};\r\n\r\nexport type UrlToHttpRequestOptions = {\r\n protocol: string;\r\n hostname: string;\r\n hash: string;\r\n search: string;\r\n pathname: string;\r\n path: string;\r\n href: string;\r\n port?: number;\r\n auth?: string;\r\n};\r\n\r\nexport class NetworkManager {\r\n private networkClient: INetworkModule;\r\n private cacheManager: CacheManager;\r\n\r\n constructor(networkClient: INetworkModule, cacheManager: CacheManager) {\r\n this.networkClient = networkClient;\r\n this.cacheManager = cacheManager;\r\n }\r\n\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint\r\n * @param tokenEndpoint\r\n * @param options\r\n */\r\n async sendPostRequest(thumbprint: RequestThumbprint, tokenEndpoint: string, options: NetworkRequestOptions): Promise> {\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n\r\n let response;\r\n try {\r\n response = await this.networkClient.sendPostRequestAsync(tokenEndpoint, options);\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n throw e;\r\n } else {\r\n throw ClientAuthError.createNetworkError(tokenEndpoint, e);\r\n }\r\n }\r\n\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n\r\n return response;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { PromptValue, CodeChallengeMethodValues} from \"../utils/Constants\";\r\nimport { StringDict } from \"../utils/MsalTypes\";\r\n\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nexport class RequestValidator {\r\n\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n static validateRedirectUri(redirectUri: string) : void {\r\n if (StringUtils.isEmpty(redirectUri)) {\r\n throw ClientConfigurationError.createRedirectUriEmptyError();\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n static validatePrompt(prompt: string) : void {\r\n const promptValues = [];\r\n\r\n for (const value in PromptValue) {\r\n promptValues.push(PromptValue[value]);\r\n }\r\n\r\n if (promptValues.indexOf(prompt) < 0) {\r\n throw ClientConfigurationError.createInvalidPromptError(prompt);\r\n }\r\n }\r\n\r\n static validateClaims(claims: string) : void {\r\n try {\r\n JSON.parse(claims);\r\n } catch(e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string) : void {\r\n if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n } else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeMethod(codeChallengeMethod: string) : void {\r\n if (\r\n [\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n ].indexOf(codeChallengeMethod) < 0\r\n ) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\r\n }\r\n }\r\n\r\n /**\r\n * Removes unnecessary, duplicate, and empty string query parameters from extraQueryParameters\r\n * @param request\r\n */\r\n static sanitizeEQParams(eQParams: StringDict, queryParams: Map) : StringDict {\r\n if (!eQParams) {\r\n return {};\r\n }\r\n\r\n // Remove any query parameters already included in SSO params\r\n queryParams.forEach((value, key) => {\r\n if (eQParams[key]) {\r\n delete eQParams[key];\r\n }\r\n });\r\n\r\n // remove empty string parameters\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n return Object.fromEntries(Object.entries(eQParams).filter(([key, value]) => value !== \"\"));\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AADServerParamKeys, Constants, ResponseMode, SSOTypes, CLIENT_INFO, AuthenticationScheme, ClaimsRequestKeys, PasswordGrantConstants, OIDC_DEFAULT_SCOPES, ThrottlingConstants, HeaderNames} from \"../utils/Constants\";\r\nimport { ScopeSet } from \"./ScopeSet\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { StringDict } from \"../utils/MsalTypes\";\r\nimport { RequestValidator } from \"./RequestValidator\";\r\nimport { ApplicationTelemetry, LibraryInfo } from \"../config/ClientConfiguration\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\r\nimport { ClientInfo } from \"../account/ClientInfo\";\r\n\r\nexport class RequestParameterBuilder {\r\n\r\n private parameters: Map;\r\n\r\n constructor() {\r\n this.parameters = new Map();\r\n }\r\n\r\n /**\r\n * add response_type = code\r\n */\r\n addResponseTypeCode(): void {\r\n this.parameters.set(\r\n AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)\r\n );\r\n }\r\n\r\n /**\r\n * add response_type = token id_token\r\n */\r\n addResponseTypeForTokenAndIdToken(): void {\r\n this.parameters.set(\r\n AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`)\r\n );\r\n }\r\n\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n addResponseMode(responseMode?: ResponseMode): void {\r\n this.parameters.set(\r\n AADServerParamKeys.RESPONSE_MODE,\r\n encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY)\r\n );\r\n }\r\n\r\n /**\r\n * Add flag to indicate STS should attempt to use WAM if available\r\n */\r\n addNativeBroker(): void {\r\n this.parameters.set(\r\n AADServerParamKeys.NATIVE_BROKER,\r\n encodeURIComponent(\"1\")\r\n );\r\n }\r\n\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n addScopes(scopes: string[], addOidcScopes: boolean = true): void {\r\n const requestScopes = addOidcScopes ? [...scopes || [], ...OIDC_DEFAULT_SCOPES] : scopes || [];\r\n const scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n }\r\n\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n addClientId(clientId: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\r\n }\r\n\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n addRedirectUri(redirectUri: string): void {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\r\n }\r\n\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n addPostLogoutRedirectUri(redirectUri: string): void {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n }\r\n\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n addIdTokenHint(idTokenHint: string): void {\r\n this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n }\r\n\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n addDomainHint(domainHint: string): void {\r\n this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\r\n }\r\n\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n addLoginHint(loginHint: string): void {\r\n this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\r\n }\r\n\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\n addCcsUpn(loginHint: string): void {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`));\r\n }\r\n\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\n addCcsOid(clientInfo: ClientInfo): void {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`));\r\n }\r\n\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n addSid(sid: string): void {\r\n this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\r\n }\r\n\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n addClaims(claims?: string, clientCapabilities?: Array): void {\r\n const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\r\n }\r\n\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n addCorrelationId(correlationId: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n }\r\n\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n addLibraryInfo(libraryInfo: LibraryInfo): void {\r\n // Telemetry Info\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n }\r\n\r\n /**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\n addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void {\r\n if (appTelemetry?.appName) {\r\n this.parameters.set(AADServerParamKeys.X_APP_NAME, appTelemetry.appName);\r\n }\r\n\r\n if (appTelemetry?.appVersion) {\r\n this.parameters.set(AADServerParamKeys.X_APP_VER, appTelemetry.appVersion);\r\n }\r\n }\r\n\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n addPrompt(prompt: string): void {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(`${AADServerParamKeys.PROMPT}`, encodeURIComponent(prompt));\r\n }\r\n\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n addState(state: string): void {\r\n if (!StringUtils.isEmpty(state)) {\r\n this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\r\n }\r\n }\r\n\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n addNonce(nonce: string): void {\r\n this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\r\n }\r\n\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n addCodeChallengeParams(\r\n codeChallenge: string,\r\n codeChallengeMethod: string\r\n ): void {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n } else {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n }\r\n\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addAuthorizationCode(code: string): void {\r\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\r\n }\r\n\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addDeviceCode(code: string): void {\r\n this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\r\n }\r\n\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n addRefreshToken(refreshToken: string): void {\r\n this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n }\r\n\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n addCodeVerifier(codeVerifier: string): void {\r\n this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n }\r\n\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n addClientSecret(clientSecret: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n }\r\n\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addClientAssertion(clientAssertion: string): void {\r\n if (!StringUtils.isEmpty(clientAssertion)) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n }\r\n }\r\n\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n addClientAssertionType(clientAssertionType: string): void {\r\n if (!StringUtils.isEmpty(clientAssertionType)) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n }\r\n }\r\n\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addOboAssertion(oboAssertion: string): void {\r\n this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n }\r\n\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addRequestTokenUse(tokenUse: string): void {\r\n this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n }\r\n\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addGrantType(grantType: string): void {\r\n this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\r\n }\r\n\r\n /**\r\n * add client info\r\n *\r\n */\r\n addClientInfo(): void {\r\n this.parameters.set(CLIENT_INFO, \"1\");\r\n }\r\n\r\n /**\r\n * add extraQueryParams\r\n * @param eQParams\r\n */\r\n addExtraQueryParameters(eQParams: StringDict): void {\r\n const sanitizedEQParams = RequestValidator.sanitizeEQParams(eQParams, this.parameters);\r\n Object.keys(sanitizedEQParams).forEach((key) => {\r\n this.parameters.set(key, eQParams[key]);\r\n });\r\n }\r\n\r\n addClientCapabilitiesToClaims(claims?: string, clientCapabilities?: Array): string {\r\n let mergedClaims: object;\r\n\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n } else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n } catch(e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)){\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities\r\n };\r\n }\r\n\r\n return JSON.stringify(mergedClaims);\r\n }\r\n\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n addUsername(username: string): void {\r\n this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\r\n }\r\n\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n addPassword(password: string): void {\r\n this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\r\n }\r\n\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n addPopToken(cnfString: string): void {\r\n if (!StringUtils.isEmpty(cnfString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n }\r\n\r\n /**\r\n * add SSH JWK and key ID to query params\r\n */\r\n addSshJwk(sshJwkString: string): void {\r\n if(!StringUtils.isEmpty(sshJwkString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.SSH);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(sshJwkString));\r\n }\r\n }\r\n\r\n /**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\n addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n }\r\n\r\n /**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\n addThrottling(): void {\r\n this.parameters.set(AADServerParamKeys.X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n }\r\n\r\n /**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\n addLogoutHint(logoutHint: string): void {\r\n this.parameters.set(AADServerParamKeys.LOGOUT_HINT, encodeURIComponent(logoutHint));\r\n }\r\n\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n createQueryString(): string {\r\n const queryParameterArray: Array = new Array();\r\n\r\n this.parameters.forEach((value, key) => {\r\n queryParameterArray.push(`${key}=${value}`);\r\n });\r\n\r\n return queryParameterArray.join(\"&\");\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfiguration, buildClientConfiguration, CommonClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { NetworkManager, NetworkResponse } from \"../network/NetworkManager\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { Constants, HeaderNames } from \"../utils/Constants\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { version, name } from \"../packageMetadata\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { CcsCredential, CcsCredentialType } from \"../account/CcsCredential\";\r\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\n\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n */\r\nexport abstract class BaseClient {\r\n // Logger object\r\n public logger: Logger;\r\n\r\n // Application config\r\n protected config: CommonClientConfiguration;\r\n\r\n // Crypto Interface\r\n protected cryptoUtils: ICrypto;\r\n\r\n // Storage Interface\r\n protected cacheManager: CacheManager;\r\n\r\n // Network Interface\r\n protected networkClient: INetworkModule;\r\n\r\n // Server Telemetry Manager\r\n protected serverTelemetryManager: ServerTelemetryManager | null;\r\n\r\n // Network Manager\r\n protected networkManager: NetworkManager;\r\n\r\n // Default authority object\r\n public authority: Authority;\r\n\r\n // Performance telemetry client\r\n protected performanceClient?: IPerformanceClient;\r\n\r\n protected constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n\r\n // Set the NetworkManager\r\n this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\r\n\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n\r\n // set performance telemetry client\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n protected createTokenRequestHeaders(ccsCred?: CcsCredential): Record { \r\n const headers: Record = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\r\n } catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\r\n break;\r\n }\r\n } \r\n return headers;\r\n }\r\n\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n protected async executePostToTokenEndpoint(tokenEndpoint: string, queryString: string, headers: Record, thumbprint: RequestThumbprint): Promise> {\r\n const response = await this.networkManager.sendPostRequest(\r\n thumbprint,\r\n tokenEndpoint,\r\n { body: queryString, headers: headers }\r\n );\r\n\r\n if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n\r\n return response;\r\n }\r\n\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n updateAuthority(updatedAuthority: Authority): void {\r\n if (!updatedAuthority.discoveryComplete()) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\r\n }\r\n this.authority = updatedAuthority;\r\n }\r\n\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n createTokenQueryParameters(request: BaseAuthRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IdTokenEntity } from \"./IdTokenEntity\";\r\nimport { AccessTokenEntity } from \"./AccessTokenEntity\";\r\nimport { RefreshTokenEntity } from \"./RefreshTokenEntity\";\r\nimport { AccountEntity } from \"./AccountEntity\";\r\nimport { AppMetadataEntity } from \"./AppMetadataEntity\";\r\n\r\nexport class CacheRecord {\r\n account: AccountEntity | null;\r\n idToken: IdTokenEntity | null;\r\n accessToken: AccessTokenEntity | null;\r\n refreshToken: RefreshTokenEntity | null;\r\n appMetadata: AppMetadataEntity | null;\r\n\r\n constructor(accountEntity?: AccountEntity | null, idTokenEntity?: IdTokenEntity | null, accessTokenEntity?: AccessTokenEntity | null, refreshTokenEntity?: RefreshTokenEntity | null, appMetadataEntity?: AppMetadataEntity | null) {\r\n this.account = accountEntity || null;\r\n this.idToken = idTokenEntity || null;\r\n this.accessToken = accessTokenEntity || null;\r\n this.refreshToken = refreshTokenEntity || null;\r\n this.appMetadata = appMetadataEntity || null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ISerializableTokenCache } from \"../interface/ISerializableTokenCache\";\r\n\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */export class TokenCacheContext {\r\n /**\r\n * boolean indicating cache change\r\n */\r\n hasChanged: boolean;\r\n /**\r\n * serializable token cache interface\r\n */\r\n cache: ISerializableTokenCache;\r\n\r\n constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get cacheHasChanged(): boolean {\r\n return this.hasChanged;\r\n }\r\n\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get tokenCache(): ISerializableTokenCache {\r\n return this.cache;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerAuthorizationTokenResponse } from \"./ServerAuthorizationTokenResponse\";\r\nimport { buildClientInfo} from \"../account/ClientInfo\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ServerAuthorizationCodeResponse } from \"./ServerAuthorizationCodeResponse\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { AuthenticationResult } from \"./AuthenticationResult\";\r\nimport { AccountEntity } from \"../cache/entities/AccountEntity\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { AuthorityType } from \"../authority/AuthorityType\";\r\nimport { IdTokenEntity } from \"../cache/entities/IdTokenEntity\";\r\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity\";\r\nimport { RefreshTokenEntity } from \"../cache/entities/RefreshTokenEntity\";\r\nimport { InteractionRequiredAuthError } from \"../error/InteractionRequiredAuthError\";\r\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ProtocolUtils, RequestStateObject } from \"../utils/ProtocolUtils\";\r\nimport { AuthenticationScheme, Constants, THE_FAMILY_ID } from \"../utils/Constants\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { AppMetadataEntity } from \"../cache/entities/AppMetadataEntity\";\r\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\r\nimport { TokenCacheContext } from \"../cache/persistence/TokenCacheContext\";\r\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\r\nimport { AuthorizationCodePayload } from \"./AuthorizationCodePayload\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\n/**\r\n * Class that handles response parsing.\r\n */\r\nexport class ResponseHandler {\r\n private clientId: string;\r\n private cacheStorage: CacheManager;\r\n private cryptoObj: ICrypto;\r\n private logger: Logger;\r\n private homeAccountIdentifier: string;\r\n private serializableCache: ISerializableTokenCache | null;\r\n private persistencePlugin: ICachePlugin | null;\r\n private performanceClient?: IPerformanceClient;\r\n\r\n constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null, performanceClient?: IPerformanceClient) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param cachedState\r\n * @param cryptoObj\r\n */\r\n validateServerAuthorizationCodeResponse(serverResponseHash: ServerAuthorizationCodeResponse, cachedState: string, cryptoObj: ICrypto): void {\r\n\r\n if (!serverResponseHash.state || !cachedState) {\r\n throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n\r\n if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\r\n throw ClientAuthError.createStateMismatchError();\r\n }\r\n\r\n // Check for error\r\n if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\r\n throw new InteractionRequiredAuthError(\r\n serverResponseHash.error || Constants.EMPTY_STRING,\r\n serverResponseHash.error_description,\r\n serverResponseHash.suberror,\r\n serverResponseHash.timestamp || Constants.EMPTY_STRING,\r\n serverResponseHash.trace_id || Constants.EMPTY_STRING,\r\n serverResponseHash.correlation_id || Constants.EMPTY_STRING,\r\n serverResponseHash.claims || Constants.EMPTY_STRING,\r\n );\r\n }\r\n\r\n throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n\r\n if (serverResponseHash.client_info) {\r\n buildClientInfo(serverResponseHash.client_info, cryptoObj);\r\n }\r\n }\r\n\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n */\r\n validateTokenResponse(serverResponse: ServerAuthorizationTokenResponse): void {\r\n // Check for error\r\n if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(\r\n serverResponse.error,\r\n serverResponse.error_description,\r\n serverResponse.suberror,\r\n serverResponse.timestamp || Constants.EMPTY_STRING,\r\n serverResponse.trace_id || Constants.EMPTY_STRING,\r\n serverResponse.correlation_id || Constants.EMPTY_STRING,\r\n serverResponse.claims || Constants.EMPTY_STRING,\r\n );\r\n }\r\n\r\n const errString = `${serverResponse.error_codes} - [${serverResponse.timestamp}]: ${serverResponse.error_description} - Correlation ID: ${serverResponse.correlation_id} - Trace ID: ${serverResponse.trace_id}`;\r\n throw new ServerError(serverResponse.error, errString, serverResponse.suberror);\r\n }\r\n }\r\n\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n async handleServerTokenResponse(\r\n serverTokenResponse: ServerAuthorizationTokenResponse,\r\n authority: Authority,\r\n reqTimestamp: number,\r\n request: BaseAuthRequest,\r\n authCodePayload?: AuthorizationCodePayload,\r\n userAssertionHash?: string,\r\n handlingRefreshTokenResponse?: boolean,\r\n forceCacheRefreshTokenResponse?: boolean,\r\n serverRequestId?: string): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\r\n\r\n // create an idToken object (not entity)\r\n let idTokenObj: AuthToken | undefined;\r\n if (serverTokenResponse.id_token) {\r\n idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\r\n\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\r\n if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\r\n throw ClientAuthError.createNonceMismatchError();\r\n }\r\n }\r\n\r\n // token max_age check\r\n if (request.maxAge || (request.maxAge === 0)) {\r\n const authTime = idTokenObj.claims.auth_time;\r\n if (!authTime) {\r\n throw ClientAuthError.createAuthTimeNotFoundError();\r\n }\r\n\r\n AuthToken.checkMaxAge(authTime, request.maxAge);\r\n }\r\n }\r\n\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\r\n\r\n // save the response tokens\r\n let requestStateObj: RequestStateObject | undefined;\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || undefined;\r\n\r\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload);\r\n let cacheContext;\r\n try {\r\n if (this.persistencePlugin && this.serializableCache) {\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\r\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\r\n */\r\n if (handlingRefreshTokenResponse && !forceCacheRefreshTokenResponse && cacheRecord.account) {\r\n const key = cacheRecord.account.generateAccountKey();\r\n const account = this.cacheStorage.getAccount(key);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, undefined, serverRequestId);\r\n }\r\n }\r\n await this.cacheStorage.saveCacheRecord(cacheRecord);\r\n } finally {\r\n if (this.persistencePlugin && this.serializableCache && cacheContext) {\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n await this.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, serverTokenResponse, serverRequestId);\r\n }\r\n\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n private generateCacheRecord(serverTokenResponse: ServerAuthorizationTokenResponse, authority: Authority, reqTimestamp: number, request: BaseAuthRequest, idTokenObj?: AuthToken, userAssertionHash?: string, authCodePayload?: AuthorizationCodePayload): CacheRecord {\r\n const env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n // IdToken: non AAD scenarios can have empty realm\r\n let cachedIdToken: IdTokenEntity | undefined;\r\n let cachedAccount: AccountEntity | undefined;\r\n if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\r\n cachedIdToken = IdTokenEntity.createIdTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.id_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n idTokenObj.claims.tid || Constants.EMPTY_STRING,\r\n );\r\n\r\n cachedAccount = this.generateAccountEntity(\r\n serverTokenResponse,\r\n idTokenObj,\r\n authority,\r\n authCodePayload\r\n );\r\n }\r\n\r\n // AccessToken\r\n let cachedAccessToken: AccessTokenEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\r\n\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(request.scopes || []);\r\n\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n const expiresIn: number = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\r\n const extExpiresIn: number = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\r\n const refreshIn: number | undefined = (typeof serverTokenResponse.refresh_in === \"string\" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || undefined;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n const refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : undefined;\r\n\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.access_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant,\r\n responseScopes.printScopes(),\r\n tokenExpirationSeconds,\r\n extendedTokenExpirationSeconds,\r\n this.cryptoObj,\r\n refreshOnSeconds,\r\n serverTokenResponse.token_type,\r\n userAssertionHash,\r\n serverTokenResponse.key_id,\r\n request.claims,\r\n request.requestedClaimsHash\r\n );\r\n }\r\n\r\n // refreshToken\r\n let cachedRefreshToken: RefreshTokenEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\r\n cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.refresh_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n serverTokenResponse.foci,\r\n userAssertionHash\r\n );\r\n }\r\n\r\n // appMetadata\r\n let cachedAppMetadata: AppMetadataEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\r\n cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\r\n }\r\n\r\n return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\r\n }\r\n\r\n /**\r\n * Generate Account\r\n * @param serverTokenResponse\r\n * @param idToken\r\n * @param authority\r\n */\r\n private generateAccountEntity(serverTokenResponse: ServerAuthorizationTokenResponse, idToken: AuthToken, authority: Authority, authCodePayload?: AuthorizationCodePayload): AccountEntity {\r\n const authorityType = authority.authorityType;\r\n const cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : Constants.EMPTY_STRING;\r\n const msGraphhost = authCodePayload ? authCodePayload.msgraph_host : Constants.EMPTY_STRING;\r\n\r\n // ADFS does not require client_info in the response\r\n if (authorityType === AuthorityType.Adfs) {\r\n this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\r\n return AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\r\n }\r\n\r\n // This fallback applies to B2C as well as they fall under an AAD account type.\r\n if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n\r\n return serverTokenResponse.client_info ?\r\n AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost) :\r\n AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\r\n }\r\n\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n static async generateAuthenticationResult(\r\n cryptoObj: ICrypto,\r\n authority: Authority,\r\n cacheRecord: CacheRecord,\r\n fromTokenCache: boolean,\r\n request: BaseAuthRequest,\r\n idTokenObj?: AuthToken,\r\n requestState?: RequestStateObject,\r\n serverTokenResponse?: ServerAuthorizationTokenResponse,\r\n requestId?: string,\r\n ): Promise {\r\n let accessToken: string = Constants.EMPTY_STRING;\r\n let responseScopes: Array = [];\r\n let expiresOn: Date | null = null;\r\n let extExpiresOn: Date | undefined;\r\n let familyId: string = Constants.EMPTY_STRING;\r\n\r\n if (cacheRecord.accessToken) {\r\n if (cacheRecord.accessToken.tokenType === AuthenticationScheme.POP) {\r\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n const { secret, keyId } = cacheRecord.accessToken;\r\n\r\n if (!keyId) {\r\n throw ClientAuthError.createKeyIdMissingError();\r\n }\r\n\r\n accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\r\n } else {\r\n accessToken = cacheRecord.accessToken.secret;\r\n }\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n }\r\n\r\n if (cacheRecord.appMetadata) {\r\n familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\r\n }\r\n const uid = idTokenObj?.claims.oid || idTokenObj?.claims.sub || Constants.EMPTY_STRING;\r\n const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;\r\n\r\n // for hybrid + native bridge enablement, send back the native account Id\r\n if(serverTokenResponse?.spa_accountid && !!cacheRecord.account){\r\n cacheRecord.account.nativeAccountId = serverTokenResponse?.spa_accountid;\r\n }\r\n\r\n return {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n correlationId: request.correlationId,\r\n requestId: requestId || Constants.EMPTY_STRING,\r\n extExpiresOn: extExpiresOn,\r\n familyId: familyId,\r\n tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\r\n state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || Constants.EMPTY_STRING,\r\n msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\r\n code: serverTokenResponse?.spa_code,\r\n fromNativeBroker: false,\r\n };\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { CommonAuthorizationUrlRequest } from \"../request/CommonAuthorizationUrlRequest\";\r\nimport { CommonAuthorizationCodeRequest } from \"../request/CommonAuthorizationCodeRequest\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { GrantType, AuthenticationScheme, PromptValue, Separators, AADServerParamKeys, HeaderNames } from \"../utils/Constants\";\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\r\nimport { CommonEndSessionRequest } from \"../request/CommonEndSessionRequest\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { AuthorizationCodePayload } from \"../response/AuthorizationCodePayload\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { AccountInfo } from \"../account/AccountInfo\";\r\nimport { buildClientInfoFromHomeAccountId, buildClientInfo } from \"../account/ClientInfo\";\r\nimport { CcsCredentialType, CcsCredential } from \"../account/CcsCredential\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { RequestValidator } from \"../request/RequestValidator\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n */\r\nexport class AuthorizationCodeClient extends BaseClient {\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n protected includeRedirectUri: boolean = true;\r\n\r\n constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n async getAuthCodeUrl(request: CommonAuthorizationUrlRequest): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthClientCreateQueryString, request.correlationId);\r\n const queryString = await this.createAuthCodeUrlQueryString(request);\r\n\r\n return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString);\r\n }\r\n\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n async acquireToken(request: CommonAuthorizationCodeRequest, authCodePayload?: AuthorizationCodePayload): Promise {\r\n if (!request || !request.code) {\r\n throw ClientAuthError.createTokenRequestCannotBeMadeError();\r\n }\r\n\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\r\n \r\n // @ts-ignore\r\n const atsMeasurement = this.performanceClient?.startMeasurement(\"AuthCodeClientAcquireToken\", request.correlationId);\r\n this.logger.info(\"in acquireToken call in auth-code client\");\r\n\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n const response = await this.executeTokenRequest(this.authority, request);\r\n\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const httpVerAuthority = response.headers?.[HeaderNames.X_MS_HTTP_VERSION];\r\n if(httpVerAuthority)\r\n {\r\n atsMeasurement?.addStaticFields({\r\n httpVerAuthority\r\n });\r\n }\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin,\r\n this.performanceClient\r\n );\r\n\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.HandleServerTokenResponse, request.correlationId);\r\n return responseHandler.handleServerTokenResponse(\r\n response.body,\r\n this.authority,\r\n reqTimestamp,\r\n request,\r\n authCodePayload,\r\n undefined,\r\n undefined,\r\n undefined,\r\n requestId\r\n ).then((result: AuthenticationResult) => {\r\n atsMeasurement?.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch((error) => {\r\n this.logger.verbose(\"Error in fetching token in ACC\", request.correlationId);\r\n atsMeasurement?.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n });\r\n }\r\n\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n handleFragmentResponse(hashFragment: string, cachedState: string): AuthorizationCodePayload {\r\n // Handle responses.\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n\r\n // Deserialize hash fragment response parameters.\r\n const hashUrlString = new UrlString(hashFragment);\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hashUrlString.getHash());\r\n\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\r\n\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw ClientAuthError.createNoAuthCodeInServerResponseError();\r\n }\r\n return {\r\n ...serverParams,\r\n // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\r\n code: serverParams.code\r\n };\r\n }\r\n\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n getLogoutUri(logoutRequest: CommonEndSessionRequest): string {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw ClientConfigurationError.createEmptyLogoutRequestError();\r\n }\r\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n\r\n // Construct logout URI\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n }\r\n\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n private async executeTokenRequest(authority: Authority, request: CommonAuthorizationCodeRequest): Promise> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n \r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n \r\n const requestBody = await this.createTokenRequestBody(request);\r\n \r\n let ccsCredential: CcsCredential | undefined = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCredential = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n } catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n const headers: Record = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n\r\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint);\r\n }\r\n\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n private async createTokenRequestBody(request: CommonAuthorizationCodeRequest): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n RequestValidator.validateRedirectUri(request.redirectUri);\r\n } else {\r\n // Validate and include redirect uri\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes);\r\n\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n\r\n // Add library metadata\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n const reqCnfData = await popTokenGenerator.generateCnf(request);\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n } else {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n let ccsCred: CcsCredential | undefined = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCred = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n } catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n } else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n } catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(ccsCred.credential);\r\n break;\r\n }\r\n }\r\n\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode && (!request.tokenBodyParameters || !request.tokenBodyParameters[AADServerParamKeys.RETURN_SPA_CODE])) {\r\n parameterBuilder.addExtraQueryParameters({\r\n [AADServerParamKeys.RETURN_SPA_CODE]: \"1\"\r\n });\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n private async createAuthCodeUrlQueryString(request: CommonAuthorizationUrlRequest): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, request.correlationId);\r\n\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n const requestScopes = [...request.scopes || [], ...request.extraScopesToConsent || []];\r\n parameterBuilder.addScopes(requestScopes);\r\n\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n\r\n // generate the correlationId if not set by the user and add\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n }\r\n\r\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n parameterBuilder.addSid(request.sid);\r\n } else if (request.account) {\r\n const accountSid = this.extractAccountSid(request.account);\r\n const accountLoginHintClaim = this.extractLoginHint(request.account);\r\n // If login_hint claim is present, use it over sid/username\r\n if (accountLoginHintClaim) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\r\n parameterBuilder.addLoginHint(accountLoginHintClaim);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n } catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n } else if (accountSid && request.prompt === PromptValue.NONE) {\r\n /*\r\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n * SessionId is only used in silent calls\r\n */\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n parameterBuilder.addSid(accountSid);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n } catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n } else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n } else if (request.account.username) {\r\n // Fallback to account username if provided\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n parameterBuilder.addLoginHint(request.account.username);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n } catch (e) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n } else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n } else {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n\r\n if (request.nativeBroker) {\r\n // signal ests that this is a WAM call\r\n parameterBuilder.addNativeBroker();\r\n\r\n // pass the req_cnf for POP\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n // to reduce the URL length, it is recommended to send the short form of the req_cnf\r\n const reqCnfData = await popTokenGenerator.generateCnf(request);\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n }\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n private createLogoutUrlQueryString(request: CommonEndSessionRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n\r\n if (request.logoutHint) {\r\n parameterBuilder.addLogoutHint(request.logoutHint);\r\n }\r\n\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\n private extractAccountSid(account: AccountInfo): string | null {\r\n return account.idTokenClaims?.sid || null;\r\n }\r\n\r\n private extractLoginHint(account: AccountInfo): string | null {\r\n return account.idTokenClaims?.login_hint || null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\r\n */\r\nexport type OpenIdConfigResponse = {\r\n authorization_endpoint: string;\r\n token_endpoint: string;\r\n end_session_endpoint?: string;\r\n issuer: string;\r\n jwks_uri: string;\r\n};\r\n\r\nexport function isOpenIdConfigResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") && \r\n response.hasOwnProperty(\"issuer\") &&\r\n response.hasOwnProperty(\"jwks_uri\")\r\n );\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\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\"]}]}}};\r\n\r\nexport const EndpointMetadata = rawMetdataJSON.endpointMetadata;\r\nexport const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\r\n\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { IMDSBadResponse } from \"../response/IMDSBadResponse\";\r\nimport { Constants, RegionDiscoverySources, ResponseCodes } from \"../utils/Constants\";\r\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\r\nimport { ImdsOptions } from \"./ImdsOptions\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\nexport class RegionDiscovery {\r\n // Network interface to make requests with.\r\n protected networkInterface: INetworkModule;\r\n // Performance client\r\n protected performanceClient: IPerformanceClient | undefined;\r\n // CorrelationId\r\n protected correlationId: string | undefined;\r\n // Options for the IMDS endpoint request\r\n protected static IMDS_OPTIONS: ImdsOptions = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n };\r\n\r\n constructor(networkInterface: INetworkModule, performanceClient?: IPerformanceClient, correlationId?: string) {\r\n this.networkInterface = networkInterface;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n\r\n /**\r\n * Detect the region from the application's environment.\r\n * \r\n * @returns Promise\r\n */\r\n public async detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\r\n \r\n // Initialize auto detected region with the region from the envrionment \r\n let autodetectedRegionName = environmentRegion;\r\n\r\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS \r\n if (!autodetectedRegionName) {\r\n const options = RegionDiscovery.IMDS_OPTIONS;\r\n\r\n try {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n const localIMDSVersionResponse = await this.getRegionFromIMDS(Constants.IMDS_VERSION, options);\r\n if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n } \r\n \r\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. \r\n if (localIMDSVersionResponse.status === ResponseCodes.httpBadRequest) {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n const currentIMDSVersion = await this.getCurrentVersion(options);\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n const currentIMDSVersionResponse = await this.getRegionFromIMDS(currentIMDSVersion, options);\r\n if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n }\r\n }\r\n } catch(e) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n } \r\n } else {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n }\r\n\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n\r\n return autodetectedRegionName || null;\r\n }\r\n\r\n /**\r\n * Make the call to the IMDS endpoint\r\n * \r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n private async getRegionFromIMDS(version: string, options: ImdsOptions): Promise> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\r\n }\r\n\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n * \r\n * @returns Promise\r\n */\r\n private async getCurrentVersion(options: ImdsOptions): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options);\r\n\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\r\n return response.body[\"newest-versions\"][0];\r\n }\r\n\r\n return null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError, InteractionRequiredAuthError } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"./BrowserAuthError\";\r\n\r\nexport type OSError = {\r\n error: number;\r\n protocol_error: string;\r\n properties: object;\r\n status: string;\r\n retryable?: boolean;\r\n};\r\n\r\nexport enum NativeStatusCode {\r\n USER_INTERACTION_REQUIRED = \"USER_INTERACTION_REQUIRED\",\r\n USER_CANCEL = \"USER_CANCEL\",\r\n NO_NETWORK = \"NO_NETWORK\",\r\n TRANSIENT_ERROR = \"TRANSIENT_ERROR\",\r\n PERSISTENT_ERROR = \"PERSISTENT_ERROR\",\r\n DISABLED = \"DISABLED\",\r\n ACCOUNT_UNAVAILABLE = \"ACCOUNT_UNAVAILABLE\"\r\n}\r\n\r\nexport const NativeAuthErrorMessage = {\r\n extensionError: {\r\n code: \"ContentError\"\r\n },\r\n userSwitch: {\r\n code: \"user_switch\",\r\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.\"\r\n },\r\n tokensNotFoundInCache: {\r\n code: \"tokens_not_found_in_internal_memory_cache\",\r\n desc: \"Tokens not cached in MSAL JS internal memory, please make the WAM request\"\r\n }\r\n};\r\n\r\nexport class NativeAuthError extends AuthError {\r\n ext: OSError | undefined;\r\n\r\n constructor(errorCode: string, description: string, ext?: OSError) {\r\n super(errorCode, description);\r\n\r\n Object.setPrototypeOf(this, NativeAuthError.prototype);\r\n this.name = \"NativeAuthError\";\r\n this.ext = ext;\r\n }\r\n\r\n /**\r\n * These errors should result in a fallback to the 'standard' browser based auth flow.\r\n */\r\n isFatal(): boolean {\r\n if (this.ext && this.ext.status && (this.ext.status === NativeStatusCode.PERSISTENT_ERROR || this.ext.status === NativeStatusCode.DISABLED)) {\r\n return true;\r\n }\r\n\r\n switch (this.errorCode) {\r\n case NativeAuthErrorMessage.extensionError.code:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Create the appropriate error object based on the WAM status code.\r\n * @param code\r\n * @param description\r\n * @param ext\r\n * @returns\r\n */\r\n static createError(code: string, description: string, ext?: OSError): AuthError {\r\n if (ext && ext.status) {\r\n switch (ext.status) {\r\n case NativeStatusCode.ACCOUNT_UNAVAILABLE:\r\n return InteractionRequiredAuthError.createNativeAccountUnavailableError();\r\n case NativeStatusCode.USER_INTERACTION_REQUIRED:\r\n return new InteractionRequiredAuthError(code, description);\r\n case NativeStatusCode.USER_CANCEL:\r\n return BrowserAuthError.createUserCancelledError();\r\n case NativeStatusCode.NO_NETWORK:\r\n return BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n return new NativeAuthError(code, description, ext);\r\n }\r\n\r\n /**\r\n * Creates user switch error when the user chooses a different account in the native broker prompt\r\n * @returns\r\n */\r\n static createUserSwitchError(): NativeAuthError {\r\n return new NativeAuthError(NativeAuthErrorMessage.userSwitch.code, NativeAuthErrorMessage.userSwitch.desc);\r\n }\r\n\r\n /**\r\n * Creates a tokens not found error when the internal cache look up fails\r\n * @returns NativeAuthError: tokensNotFoundInCache\r\n */\r\n static createTokensNotFoundInCacheError(): NativeAuthError {\r\n return new NativeAuthError(NativeAuthErrorMessage.tokensNotFoundInCache.code, NativeAuthErrorMessage.tokensNotFoundInCache.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorityType } from \"./AuthorityType\";\r\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { IUri } from \"../url/IUri\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { AADAuthorityConstants, AuthorityMetadataSource, Constants, RegionDiscoveryOutcomes } from \"../utils/Constants\";\r\nimport { EndpointMetadata, InstanceDiscoveryMetadata } from \"./AuthorityMetadata\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ProtocolMode } from \"./ProtocolMode\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\r\nimport { AuthorityOptions, AzureCloudInstance } from \"./AuthorityOptions\";\r\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\r\nimport {\r\n CloudInstanceDiscoveryErrorResponse,\r\n isCloudInstanceDiscoveryErrorResponse\r\n} from \"./CloudInstanceDiscoveryErrorResponse\";\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\nimport { RegionDiscovery } from \"./RegionDiscovery\";\r\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\r\nimport { ImdsOptions } from \"./ImdsOptions\";\r\nimport { AzureCloudOptions } from \"../config/ClientConfiguration\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nexport class Authority {\r\n // Canonical authority url string\r\n private _canonicalAuthority: UrlString;\r\n // Canonicaly authority url components\r\n private _canonicalAuthorityUrlComponents: IUri | null;\r\n // Network interface to make requests with.\r\n protected networkInterface: INetworkModule;\r\n // Cache Manager to cache network responses\r\n protected cacheManager: ICacheManager;\r\n // Protocol mode to construct endpoints\r\n private authorityOptions: AuthorityOptions;\r\n // Authority metadata\r\n private metadata: AuthorityMetadataEntity;\r\n // Region discovery service\r\n private regionDiscovery: RegionDiscovery;\r\n // Region discovery metadata\r\n public regionDiscoveryMetadata: RegionDiscoveryMetadata;\r\n // Logger object\r\n private logger: Logger;\r\n // Performance client\r\n protected performanceClient: IPerformanceClient | undefined;\r\n // Correlation Id\r\n protected correlationId: string | undefined;\r\n // Reserved tenant domain names that will not be replaced with tenant id\r\n private static reservedTenantDomains: Set = (new Set([\r\n \"{tenant}\",\r\n \"{tenantid}\",\r\n AADAuthorityConstants.COMMON,\r\n AADAuthorityConstants.CONSUMERS,\r\n AADAuthorityConstants.ORGANIZATIONS\r\n ]));\r\n\r\n constructor(\r\n authority: string,\r\n networkInterface: INetworkModule,\r\n cacheManager: ICacheManager,\r\n authorityOptions: AuthorityOptions,\r\n logger: Logger,\r\n performanceClient?: IPerformanceClient,\r\n correlationId?: string\r\n ) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface, this.performanceClient, this.correlationId);\r\n }\r\n\r\n /**\r\n * Get {@link AuthorityType}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n private getAuthorityType(authorityUri: IUri): AuthorityType {\r\n // CIAM auth url pattern is being standardized as: .ciamlogin.com\r\n if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n return AuthorityType.Ciam;\r\n }\r\n\r\n const pathSegments = authorityUri.PathSegments;\r\n if (pathSegments.length) {\r\n switch(pathSegments[0].toLowerCase()) {\r\n case Constants.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants.DSTS:\r\n return AuthorityType.Dsts;\r\n default:\r\n break;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n }\r\n\r\n // See above for AuthorityType\r\n public get authorityType(): AuthorityType {\r\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\r\n }\r\n\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n public get protocolMode(): ProtocolMode {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n public get options(): AuthorityOptions {\r\n return this.authorityOptions;\r\n }\r\n\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n public get canonicalAuthority(): string {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n\r\n /**\r\n * Sets canonical authority.\r\n */\r\n public set canonicalAuthority(url: string) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n\r\n /**\r\n * Get authority components.\r\n */\r\n public get canonicalAuthorityUrlComponents(): IUri {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n public get hostnameAndPort(): string {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n\r\n /**\r\n * Get tenant for authority.\r\n */\r\n public get tenant(): string {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n public get authorizationEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.authorization_endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n public get tokenEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n public get deviceCodeEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n public get endSessionEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw ClientAuthError.createLogoutNotSupportedError();\r\n }\r\n return this.replacePath(this.metadata.end_session_endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n public get selfSignedJwtAudience(): string {\r\n if(this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.issuer);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n public get jwksUri(): string {\r\n if(this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.jwks_uri);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n private canReplaceTenant(authorityUri: IUri): boolean {\r\n return authorityUri.PathSegments.length === 1\r\n && !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0])\r\n && this.getAuthorityType(authorityUri) === AuthorityType.Default\r\n && this.protocolMode === ProtocolMode.AAD;\r\n }\r\n\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n private replaceTenant(urlString: string): string {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n private replacePath(urlString: string): string {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents();\r\n const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n let cachedPart = cachedAuthorityParts[index];\r\n if (index === 0 && this.canReplaceTenant(cachedAuthorityUrlComponents))\r\n {\r\n const tenantId = (new UrlString(this.metadata.authorization_endpoint)).getUrlComponents().PathSegments[0];\r\n /**\r\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\r\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\r\n * always resolved with tenant id by OIDC.\r\n */\r\n if (cachedPart !== tenantId) {\r\n this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`);\r\n cachedPart = tenantId;\r\n }\r\n }\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n\r\n return this.replaceTenant(endpoint);\r\n }\r\n\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n protected get defaultOpenIdConfigurationEndpoint(): string {\r\n if (\r\n this.authorityType === AuthorityType.Adfs ||\r\n this.authorityType === AuthorityType.Dsts ||\r\n this.protocolMode === ProtocolMode.OIDC\r\n ) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n discoveryComplete(): boolean {\r\n return !!this.metadata;\r\n }\r\n\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n public async resolveEndpointsAsync(): Promise {\r\n\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\r\n\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n const endpointSource = await this.updateEndpointMetadata(metadataEntity);\r\n\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n\r\n let metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n metadata = await this.getEndpointMetadataFromNetwork();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n metadata = await this.updateMetadataWithRegionalInformation(metadata);\r\n }\r\n\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n\r\n let harcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n if (harcodedMetadata && !this.authorityOptions.skipAuthorityMetadataCache) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n harcodedMetadata = await this.updateMetadataWithRegionalInformation(\r\n harcodedMetadata\r\n );\r\n }\r\n\r\n metadataEntity.updateEndpointMetadata(harcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n } else {\r\n throw ClientAuthError.createUnableToGetOpenidConfigError(\r\n this.defaultOpenIdConfigurationEndpoint\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached\r\n * authority metadata can be used for the requested authority. Protects against same domain different\r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n\r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n }\r\n\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\r\n } catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n private async getEndpointMetadataFromNetwork(): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n\r\n const options: ImdsOptions = {};\r\n\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n\r\n try {\r\n const response = await this.networkInterface.\r\n sendGetRequestAsync(this.defaultOpenIdConfigurationEndpoint, options);\r\n return isOpenIdConfigResponse(response.body) ? response.body : null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n private getEndpointMetadataFromHardcodedValues(): OpenIdConfigResponse | null {\r\n if (this.canonicalAuthority in EndpointMetadata) {\r\n return EndpointMetadata[this.canonicalAuthority];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n * User selected Azure region will be used if configured.\r\n */\r\n private async updateMetadataWithRegionalInformation(\r\n metadata: OpenIdConfigResponse\r\n ): Promise {\r\n this.performanceClient?.addQueueMeasurement(\r\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\r\n this.correlationId\r\n );\r\n\r\n const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion;\r\n\r\n if (userConfiguredAzureRegion) {\r\n if (userConfiguredAzureRegion !== Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n this.regionDiscoveryMetadata.region_used = userConfiguredAzureRegion;\r\n return Authority.replaceWithRegionalInformation(\r\n metadata, \r\n userConfiguredAzureRegion\r\n );\r\n }\r\n \r\n this.performanceClient?.setPreQueueTime(\r\n PerformanceEvents.RegionDiscoveryDetectRegion,\r\n this.correlationId\r\n );\r\n \r\n const autodetectedRegionName = await this.regionDiscovery.detectRegion(\r\n this.authorityOptions.azureRegionConfiguration?.environmentRegion,\r\n this.regionDiscoveryMetadata\r\n );\r\n \r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\r\n this.regionDiscoveryMetadata.region_used = autodetectedRegionName;\r\n return Authority.replaceWithRegionalInformation(\r\n metadata, \r\n autodetectedRegionName\r\n );\r\n }\r\n \r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n\r\n return metadata;\r\n }\r\n\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param metadataEntity\r\n * @returns AuthorityMetadataSource\r\n */\r\n private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise {\r\n\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n\r\n // attempt to read metadata from the config\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata in the config\");\r\n this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities || Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata || Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`);\r\n let metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the config.\");\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the cache.\");\r\n const metadataEntityExpired = metadataEntity.isExpired();\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntityExpired) {\r\n this.logger.verbose(\"Found metadata in the cache.\");\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n } else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the cache... Attempting to get cloud discovery metadata from the network.\");\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n metadata = await this.getCloudDiscoveryMetadataFromNetwork();\r\n if (metadata) {\r\n this.logger.verbose(\"cloud discovery metadata was successfully returned from getCloudDiscoveryMetadataFromNetwork()\");\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n\r\n this.logger.verbose(\"Did not find cloud discovery metadata from the network... Attempting to get cloud discovery metadata from hardcoded values.\");\r\n const harcodedMetadata = this.getCloudDiscoveryMetadataFromHarcodedValues();\r\n if (harcodedMetadata && !this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n metadataEntity.updateCloudDiscoveryMetadata(harcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n }\r\n\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n this.logger.error(\"Did not find cloud discovery metadata from hardcoded values... Metadata could not be obtained from config, cache, network or hardcoded values. Throwing Untrusted Authority Error.\");\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\r\n\r\n // CIAM does not support cloud discovery metadata\r\n if (this.authorityType === AuthorityType.Ciam) {\r\n this.logger.verbose(\"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\r\n const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\r\n parsedResponse.metadata,\r\n this.hostnameAndPort\r\n );\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n } else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n } catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n private async getCloudDiscoveryMetadataFromNetwork(): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n const instanceDiscoveryEndpoint =\r\n `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n const options: ImdsOptions = {};\r\n\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n\r\n let match = null;\r\n try {\r\n const response =\r\n await this.networkInterface.sendGetRequestAsync(\r\n instanceDiscoveryEndpoint,\r\n options\r\n );\r\n\r\n let typedResponseBody: CloudInstanceDiscoveryResponse | CloudInstanceDiscoveryErrorResponse;\r\n let metadata: Array;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody = response.body as CloudInstanceDiscoveryResponse;\r\n metadata = typedResponseBody.metadata;\r\n\r\n this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\r\n } else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\r\n\r\n typedResponseBody = response.body as CloudInstanceDiscoveryErrorResponse;\r\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return null;\r\n }\r\n\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\r\n\r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n } else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return null;\r\n }\r\n\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\r\n metadata,\r\n this.hostnameAndPort\r\n );\r\n } catch (error) {\r\n if (error instanceof AuthError) {\r\n this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\r\n } else {\r\n const typedError = error as Error;\r\n this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n\r\n match = Authority.createCloudDiscoveryMetadataFromHost(\r\n this.hostnameAndPort\r\n );\r\n }\r\n return match;\r\n }\r\n\r\n /**\r\n * Get cloud discovery metadata for common authorities\r\n */\r\n private getCloudDiscoveryMetadataFromHarcodedValues(): CloudDiscoveryMetadata | null {\r\n if (this.canonicalAuthority in InstanceDiscoveryMetadata) {\r\n return InstanceDiscoveryMetadata[this.canonicalAuthority];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n private isInKnownAuthorities(): boolean {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\r\n });\r\n\r\n return matches.length > 0;\r\n }\r\n\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string {\r\n let authorityAzureCloudInstance;\r\n\r\n if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n const tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\r\n }\r\n\r\n return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\r\n }\r\n\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n }\r\n\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\n static getCloudDiscoveryMetadataFromNetworkResponse(\r\n response: CloudDiscoveryMetadata[],\r\n authority: string\r\n ): CloudDiscoveryMetadata | null {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache(): string {\r\n if(this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n isAlias(host: string): boolean {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host: string): boolean {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n\r\n let hostNameAndPort= `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort\r\n }).urlString;\r\n\r\n // Add the query string if a query string was provided\r\n if (queryString) return `${url}?${queryString}`;\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse {\r\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\r\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\r\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(\r\n metadata.token_endpoint, azureRegion, Constants.REGIONAL_AUTH_NON_MSI_QUERY_STRING\r\n );\r\n\r\n if (metadata.end_session_endpoint) {\r\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\r\n }\r\n\r\n return metadata;\r\n }\r\n\r\n /**\r\n * Transform CIAM_AUTHORIY as per the below rules:\r\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\r\n *\r\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\r\n * `ciamlogin.com` can also change in the future and we should accommodate the same\r\n *\r\n * @param authority\r\n */\r\n static transformCIAMAuthority(authority: string): string {\r\n let ciamAuthority = authority.endsWith(Constants.FORWARD_SLASH) ? authority : `${authority}${Constants.FORWARD_SLASH}`;\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n\r\n // check if transformation is needed\r\n if (authorityUrlComponents.PathSegments.length === 0 && (authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL))){\r\n const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(\".\")[0];\r\n ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`;\r\n }\r\n\r\n return ciamAuthority;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\n\r\n/**\r\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\r\n */\r\nexport type CloudInstanceDiscoveryResponse = {\r\n tenant_discovery_endpoint: string;\r\n metadata: Array;\r\n};\r\n\r\nexport function isCloudInstanceDiscoveryResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\")\r\n );\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\r\n */\r\nexport type CloudInstanceDiscoveryErrorResponse = {\r\n error: String;\r\n error_description: String;\r\n error_codes?: Array;\r\n timestamp?: String;\r\n trace_id?: String;\r\n correlation_id?: String;\r\n error_uri?: String;\r\n};\r\n\r\nexport function isCloudInstanceDiscoveryErrorResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"error\") &&\r\n response.hasOwnProperty(\"error_description\")\r\n );\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Authority } from \"./Authority\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityOptions } from \"./AuthorityOptions\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\n\r\nexport class AuthorityFactory {\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n */\r\n static async createDiscoveredInstance(\r\n authorityUri: string,\r\n networkClient: INetworkModule,\r\n cacheManager: ICacheManager,\r\n authorityOptions: AuthorityOptions,\r\n logger: Logger,\r\n performanceClient?: IPerformanceClient,\r\n correlationId?: string\r\n ): Promise {\r\n performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\r\n \r\n const authorityUriFinal = Authority.transformCIAMAuthority(authorityUri);\r\n\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(\r\n authorityUriFinal,\r\n networkClient,\r\n cacheManager,\r\n authorityOptions,\r\n logger,\r\n performanceClient,\r\n correlationId\r\n );\r\n\r\n try {\r\n performanceClient?.setPreQueueTime(PerformanceEvents.AuthorityResolveEndpointsAsync, correlationId);\r\n await acquireTokenAuthority.resolveEndpointsAsync();\r\n return acquireTokenAuthority;\r\n } catch (e) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Does not perform endpoint discovery.\r\n *\r\n * @param authorityUrl\r\n * @param networkInterface\r\n * @param protocolMode\r\n */\r\n static createInstance(\r\n authorityUrl: string,\r\n networkInterface: INetworkModule,\r\n cacheManager: ICacheManager,\r\n authorityOptions: AuthorityOptions,\r\n logger: Logger,\r\n performanceClient?: IPerformanceClient,\r\n correlationId?: string\r\n ): Authority {\r\n // Throw error if authority url is empty\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n\r\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, logger, performanceClient, correlationId);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SERVER_TELEM_CONSTANTS, Separators, CacheOutcome, Constants, RegionDiscoverySources, RegionDiscoveryOutcomes } from \"../../utils/Constants\";\r\nimport { CacheManager } from \"../../cache/CacheManager\";\r\nimport { AuthError } from \"../../error/AuthError\";\r\nimport { ServerTelemetryRequest } from \"./ServerTelemetryRequest\";\r\nimport { ServerTelemetryEntity } from \"../../cache/entities/ServerTelemetryEntity\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\nimport { RegionDiscoveryMetadata } from \"../../authority/RegionDiscoveryMetadata\";\r\n\r\nexport class ServerTelemetryManager {\r\n private cacheManager: CacheManager;\r\n private apiId: number;\r\n private correlationId: string;\r\n private telemetryCacheKey: string;\r\n private wrapperSKU: String;\r\n private wrapperVer: String;\r\n private regionUsed: string | undefined;\r\n private regionSource: RegionDiscoverySources | undefined;\r\n private regionOutcome: RegionDiscoveryOutcomes | undefined;\r\n private cacheOutcome: CacheOutcome = CacheOutcome.NO_CACHE_HIT;\r\n\r\n constructor(telemetryRequest: ServerTelemetryRequest, cacheManager: CacheManager) {\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n\r\n this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\r\n }\r\n\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n generateCurrentRequestHeaderValue(): string {\r\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\r\n const platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n const requestWithRegionDiscoveryFields = [request, regionDiscoveryFields].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, requestWithRegionDiscoveryFields, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n generateLastRequestHeaderValue(): string {\r\n const lastRequests = this.getLastRequests();\r\n\r\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const failedRequests = lastRequests.failedRequests.slice(0, 2*maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errorCount = lastRequests.errors.length;\r\n\r\n // Indicate whether this header contains all data or partial data\r\n const overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n cacheFailedRequest(error: AuthError): void {\r\n const lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >= SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n \r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n\r\n if (!StringUtils.isEmpty(error.subError)) {\r\n lastRequests.errors.push(error.subError);\r\n } else if (!StringUtils.isEmpty(error.errorCode)) {\r\n lastRequests.errors.push(error.errorCode);\r\n } else if (!!error && error.toString()) {\r\n lastRequests.errors.push(error.toString());\r\n } else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n incrementCacheHits(): number {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n }\r\n\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n getLastRequests(): ServerTelemetryEntity {\r\n const initialValue: ServerTelemetryEntity = new ServerTelemetryEntity();\r\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey) as ServerTelemetryEntity;\r\n\r\n return lastRequests || initialValue;\r\n }\r\n\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n clearTelemetryCache(): void {\r\n const lastRequests = this.getLastRequests();\r\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n } else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n const serverTelemEntity = new ServerTelemetryEntity();\r\n serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed*2); // failedRequests contains 2 items for each error\r\n serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n static maxErrorsToSend(serverTelemetryEntity: ServerTelemetryEntity): number {\r\n let i;\r\n let maxErrors = 0;\r\n let dataSize = 0;\r\n const errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n const apiId = serverTelemetryEntity.failedRequests[2*i] || Constants.EMPTY_STRING;\r\n const correlationId = serverTelemetryEntity.failedRequests[2*i + 1] || Constants.EMPTY_STRING;\r\n const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n\r\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\r\n dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\r\n\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n return maxErrors;\r\n }\r\n\r\n /**\r\n * Get the region discovery fields\r\n * \r\n * @returns string\r\n */\r\n getRegionDiscoveryFields(): string {\r\n const regionDiscoveryFields: string[] = [];\r\n\r\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\r\n\r\n return regionDiscoveryFields.join(\",\");\r\n }\r\n\r\n /**\r\n * Update the region discovery metadata\r\n * \r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n updateRegionDiscoveryMetadata(regionDiscoveryMetadata: RegionDiscoveryMetadata): void {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n }\r\n\r\n /**\r\n * Set cache outcome \r\n */\r\n setCacheOutcome(cacheOutcome: CacheOutcome): void {\r\n this.cacheOutcome = cacheOutcome;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto, INetworkModule, Logger, AuthenticationResult, AccountInfo, AccountEntity, BaseAuthRequest, AuthenticationScheme, UrlString, ServerTelemetryManager, ServerTelemetryRequest, ClientConfigurationError, StringUtils, Authority, AuthorityOptions, AuthorityFactory, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { version } from \"../packageMetadata\";\r\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\n\r\nexport abstract class BaseInteractionClient {\r\n\r\n protected config: BrowserConfiguration;\r\n protected browserStorage: BrowserCacheManager;\r\n protected browserCrypto: ICrypto;\r\n protected networkClient: INetworkModule;\r\n protected logger: Logger;\r\n protected eventHandler: EventHandler;\r\n protected navigationClient: INavigationClient;\r\n protected nativeMessageHandler: NativeMessageHandler | undefined;\r\n protected correlationId: string;\r\n protected performanceClient: IPerformanceClient;\r\n\r\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\r\n this.config = config;\r\n this.browserStorage = storageImpl;\r\n this.browserCrypto = browserCrypto;\r\n this.networkClient = this.config.system.networkClient;\r\n this.eventHandler = eventHandler;\r\n this.navigationClient = navigationClient;\r\n this.nativeMessageHandler = nativeMessageHandler;\r\n this.correlationId = correlationId || this.browserCrypto.createNewGuid();\r\n this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId);\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n abstract acquireToken(request: RedirectRequest|PopupRequest|SsoSilentRequest): Promise;\r\n\r\n abstract logout(request: EndSessionRequest): Promise;\r\n\r\n protected async clearCacheOnLogout(account?: AccountInfo| null): Promise {\r\n if (account) {\r\n if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) {\r\n this.logger.verbose(\"Setting active account to null\");\r\n this.browserStorage.setActiveAccount(null);\r\n }\r\n // Clear given account.\r\n try {\r\n await this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account));\r\n this.logger.verbose(\"Cleared cache items belonging to the account provided in the logout request.\");\r\n } catch (error) {\r\n this.logger.error(\"Account provided in logout request was not found. Local cache unchanged.\");\r\n }\r\n } else {\r\n try {\r\n this.logger.verbose(\"No account provided in logout request, clearing all cache items.\", this.correlationId);\r\n // Clear all accounts and tokens\r\n await this.browserStorage.clear();\r\n // Clear any stray keys from IndexedDB\r\n await this.browserCrypto.clearKeystore();\r\n } catch(e) {\r\n this.logger.error(\"Attempted to clear all MSAL cache items and failed. Local cache unchanged.\");\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Initializer function for all request APIs\r\n * @param request\r\n */\r\n protected async initializeBaseRequest(request: Partial, account?: AccountInfo): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.InitializeBaseRequest, request.correlationId);\r\n this.logger.verbose(\"Initializing BaseAuthRequest\");\r\n const authority = request.authority || this.config.auth.authority;\r\n\r\n if (account) {\r\n await this.validateRequestAuthority(authority, account);\r\n }\r\n\r\n const scopes = [...((request && request.scopes) || [])];\r\n\r\n const validatedRequest: BaseAuthRequest = {\r\n ...request,\r\n correlationId: this.correlationId,\r\n authority,\r\n scopes\r\n };\r\n\r\n // Set authenticationScheme to BEARER if not explicitly set in the request\r\n if (!validatedRequest.authenticationScheme) {\r\n validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;\r\n this.logger.verbose(\"Authentication Scheme wasn't explicitly set in request, defaulting to \\\"Bearer\\\" request\");\r\n } else {\r\n if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (!request.sshJwk) {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n if(!request.sshKid) {\r\n throw ClientConfigurationError.createMissingSshKidError();\r\n }\r\n }\r\n this.logger.verbose(`Authentication Scheme set to \"${validatedRequest.authenticationScheme}\" as configured in Auth request`);\r\n }\r\n\r\n // Set requested claims hash if claims were requested and claims-based caching is enabled\r\n if (this.config.cache.claimsBasedCachingEnabled && request.claims && !StringUtils.isEmptyObj(request.claims)) {\r\n validatedRequest.requestedClaimsHash = await this.browserCrypto.hashString(request.claims);\r\n }\r\n\r\n return validatedRequest;\r\n }\r\n\r\n /**\r\n *\r\n * Use to get the redirect uri configured in MSAL or null.\r\n * @param requestRedirectUri\r\n * @returns Redirect URL\r\n *\r\n */\r\n getRedirectUri(requestRedirectUri?: string): string {\r\n this.logger.verbose(\"getRedirectUri called\");\r\n const redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri();\r\n return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n\r\n /*\r\n * If authority provided in the request does not match environment/authority specified \r\n * in the account or MSAL config, we throw an error.\r\n */\r\n async validateRequestAuthority(authority: string, account: AccountInfo): Promise {\r\n const discoveredAuthority = await this.getDiscoveredAuthority(authority);\r\n \r\n if(!discoveredAuthority.isAlias(account.environment)) {\r\n throw ClientConfigurationError.createAuthorityMismatchError();\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param apiId\r\n * @param correlationId\r\n * @param forceRefresh\r\n */\r\n protected initializeServerTelemetryManager(apiId: number, forceRefresh?: boolean): ServerTelemetryManager {\r\n this.logger.verbose(\"initializeServerTelemetryManager called\");\r\n const telemetryPayload: ServerTelemetryRequest = {\r\n clientId: this.config.auth.clientId,\r\n correlationId: this.correlationId,\r\n apiId: apiId,\r\n forceRefresh: forceRefresh || false,\r\n wrapperSKU: this.browserStorage.getWrapperMetadata()[0],\r\n wrapperVer: this.browserStorage.getWrapperMetadata()[1]\r\n };\r\n\r\n return new ServerTelemetryManager(telemetryPayload, this.browserStorage);\r\n }\r\n\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n protected async getDiscoveredAuthority(requestAuthority?: string): Promise {\r\n this.logger.verbose(\"getDiscoveredAuthority called\");\r\n const authorityOptions: AuthorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata\r\n };\r\n\r\n if (requestAuthority) {\r\n this.logger.verbose(\"Creating discovered authority with request authority\");\r\n return await AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger);\r\n }\r\n\r\n this.logger.verbose(\"Creating discovered authority with configured authority\");\r\n return await AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerTelemetryManager, CommonAuthorizationCodeRequest, Constants, AuthorizationCodeClient, ClientConfiguration, AuthorityOptions, Authority, AuthorityFactory, ServerAuthorizationCodeResponse, UrlString, CommonEndSessionRequest, ProtocolUtils, ResponseMode, StringUtils, IdTokenClaims, AccountInfo, AzureCloudOptions, PerformanceEvents, AuthError} from \"@azure/msal-common\";\r\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\r\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\r\nimport { BrowserConstants, InteractionType } from \"../utils/BrowserConstants\";\r\nimport { version } from \"../packageMetadata\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserProtocolUtils, BrowserStateObject } from \"../utils/BrowserProtocolUtils\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\n\r\n/**\r\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\r\n */\r\nexport abstract class StandardInteractionClient extends BaseInteractionClient {\r\n /**\r\n * Generates an auth code request tied to the url request.\r\n * @param request\r\n */\r\n protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\r\n const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\r\n\r\n const authCodeRequest: CommonAuthorizationCodeRequest = {\r\n ...request,\r\n redirectUri: request.redirectUri,\r\n code: Constants.EMPTY_STRING,\r\n codeVerifier: generatedPkceParams.verifier\r\n };\r\n\r\n request.codeChallenge = generatedPkceParams.challenge;\r\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\r\n\r\n return authCodeRequest;\r\n }\r\n\r\n /**\r\n * Initializer for the logout request.\r\n * @param logoutRequest\r\n */\r\n protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\r\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest?.correlationId);\r\n\r\n const validLogoutRequest: CommonEndSessionRequest = {\r\n correlationId: this.correlationId || this.browserCrypto.createNewGuid(),\r\n ...logoutRequest\r\n };\r\n\r\n /**\r\n * Set logout_hint to be login_hint from ID Token Claims if present\r\n * and logoutHint attribute wasn't manually set in logout request\r\n */\r\n if (logoutRequest) {\r\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\r\n if (!logoutRequest.logoutHint) {\r\n if(logoutRequest.account) {\r\n const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\r\n if (logoutHint) {\r\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\r\n validLogoutRequest.logoutHint = logoutHint;\r\n }\r\n } else {\r\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\r\n }\r\n } else {\r\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\r\n }\r\n } else {\r\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\r\n }\r\n\r\n /*\r\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\r\n * Otherwise, use passed uri, config, or current page.\r\n */\r\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\r\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n } else if (this.config.auth.postLogoutRedirectUri === null) {\r\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\r\n } else if (this.config.auth.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n } else {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\r\n }\r\n } else {\r\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\r\n }\r\n\r\n return validLogoutRequest;\r\n }\r\n\r\n /**\r\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\r\n * logout_hint in end session request.\r\n * @param account\r\n */\r\n protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null {\r\n const idTokenClaims: IdTokenClaims | undefined = account.idTokenClaims;\r\n if (idTokenClaims) {\r\n if (idTokenClaims.login_hint) {\r\n return idTokenClaims.login_hint;\r\n } else {\r\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\");\r\n }\r\n } else {\r\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Creates an Authorization Code Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.correlationId);\r\n // Create auth module.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions);\r\n return new AuthorizationCodeClient(clientConfig, this.performanceClient);\r\n }\r\n\r\n /**\r\n * Creates a Client Configuration object with the given request authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions);\r\n const logger= this.config.system.loggerOptions;\r\n\r\n return {\r\n authOptions: {\r\n clientId: this.config.auth.clientId,\r\n authority: discoveredAuthority,\r\n clientCapabilities: this.config.auth.clientCapabilities\r\n },\r\n systemOptions: {\r\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\r\n preventCorsPreflight: true\r\n },\r\n loggerOptions: {\r\n loggerCallback: logger.loggerCallback,\r\n piiLoggingEnabled: logger.piiLoggingEnabled,\r\n logLevel: logger.logLevel,\r\n correlationId: this.correlationId\r\n },\r\n cacheOptions: {\r\n claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled\r\n },\r\n cryptoInterface: this.browserCrypto,\r\n networkInterface: this.networkClient,\r\n storageInterface: this.browserStorage,\r\n serverTelemetryManager: serverTelemetryManager,\r\n libraryInfo: {\r\n sku: BrowserConstants.MSAL_SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n },\r\n telemetry: this.config.telemetry\r\n };\r\n }\r\n \r\n /**\r\n * @param hash\r\n * @param interactionType\r\n */\r\n protected validateAndExtractStateFromHash(serverParams: ServerAuthorizationCodeResponse, interactionType: InteractionType, requestCorrelationId?: string): string {\r\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\r\n if (!serverParams.state) {\r\n throw BrowserAuthError.createHashDoesNotContainStateError();\r\n }\r\n\r\n const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\r\n if (!platformStateObj) {\r\n throw BrowserAuthError.createUnableToParseStateError();\r\n }\r\n\r\n if (platformStateObj.interactionType !== interactionType) {\r\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\r\n }\r\n\r\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\r\n return serverParams.state;\r\n }\r\n\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n protected async getDiscoveredAuthority(requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\r\n const getAuthorityMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n const authorityOptions: AuthorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache\r\n };\r\n\r\n // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority\r\n const userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\r\n\r\n // fall back to the authority from config\r\n const builtAuthority = Authority.generateAuthority(userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\r\n this.logger.verbose(\"Creating discovered authority with configured authority\", this.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, this.correlationId);\r\n return await AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions, this.logger, this.performanceClient, this.correlationId)\r\n .then((result: Authority) => {\r\n getAuthorityMeasurement.endMeasurement({\r\n success: true,\r\n });\r\n\r\n return result;\r\n })\r\n .catch((error:AuthError) => {\r\n getAuthorityMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n\r\n throw error;\r\n });\r\n }\r\n\r\n /**\r\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\r\n * @param request\r\n * @param interactionType\r\n */\r\n protected async initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.correlationId);\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\r\n const redirectUri = this.getRedirectUri(request.redirectUri);\r\n const browserState: BrowserStateObject = {\r\n interactionType: interactionType\r\n };\r\n const state = ProtocolUtils.setRequestState(\r\n this.browserCrypto,\r\n (request && request.state)|| Constants.EMPTY_STRING,\r\n browserState\r\n );\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, this.correlationId);\r\n const validatedRequest: AuthorizationUrlRequest = {\r\n ...await this.initializeBaseRequest(request),\r\n redirectUri: redirectUri,\r\n state: state,\r\n nonce: request.nonce || this.browserCrypto.createNewGuid(),\r\n responseMode: ResponseMode.FRAGMENT\r\n };\r\n\r\n const account = request.account || this.browserStorage.getActiveAccount();\r\n if (account) {\r\n this.logger.verbose(\"Setting validated request account\", this.correlationId);\r\n this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId);\r\n validatedRequest.account = account;\r\n }\r\n\r\n // Check for ADAL/MSAL v1 SSO\r\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\r\n const legacyLoginHint = this.browserStorage.getLegacyLoginHint();\r\n if (legacyLoginHint) {\r\n validatedRequest.loginHint = legacyLoginHint;\r\n }\r\n }\r\n\r\n return validatedRequest;\r\n }\r\n}\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _AuthenticationManager_instance, _AuthenticationManager_props, _AuthenticationManager_acquireDefaultTokenSilent, _AuthenticationManager_acquireTokenSilent;\r\nimport { BrowserCacheLocation, PublicClientApplication } from \"@azure/msal-browser\";\r\nimport { isNullOrEmpty } from \"../utilities\";\r\nexport class AuthenticationManager {\r\n constructor(props) {\r\n _AuthenticationManager_instance.set(this, void 0);\r\n _AuthenticationManager_props.set(this, void 0);\r\n _AuthenticationManager_acquireDefaultTokenSilent.set(this, async (module) => {\r\n return __classPrivateFieldGet(this, _AuthenticationManager_acquireTokenSilent, \"f\").call(this, module, `${this.clientId}/.default`);\r\n });\r\n _AuthenticationManager_acquireTokenSilent.set(this, async (module, scope) => {\r\n var _a, _b;\r\n if (this.useMsal) {\r\n const request = { scopes: [scope], account: __classPrivateFieldGet(this, _AuthenticationManager_instance, \"f\").getActiveAccount() };\r\n try {\r\n const response = await __classPrivateFieldGet(this, _AuthenticationManager_instance, \"f\").acquireTokenSilent(request);\r\n return response.accessToken;\r\n }\r\n catch (error) {\r\n try {\r\n const response = await __classPrivateFieldGet(this, _AuthenticationManager_instance, \"f\").acquireTokenPopup(request);\r\n return response.accessToken;\r\n }\r\n catch (error) {\r\n throw error;\r\n }\r\n }\r\n }\r\n else {\r\n return (_b = (_a = __classPrivateFieldGet(this, _AuthenticationManager_props, \"f\")).onGetAccessToken) === null || _b === void 0 ? void 0 : _b.call(_a, module, scope);\r\n }\r\n });\r\n __classPrivateFieldSet(this, _AuthenticationManager_props, props, \"f\");\r\n const useMsal = props.useMsal == null || props.useMsal === true;\r\n if (useMsal) {\r\n __classPrivateFieldSet(this, _AuthenticationManager_instance, new PublicClientApplication({\r\n auth: {\r\n clientId: props.clientId || '51606deb-babb-4619-9b45-46fdc9844f69',\r\n authority: `https://login.microsoftonline.com/${props.tenantId}`,\r\n redirectUri: window.location.origin,\r\n skipAuthorityMetadataCache: false\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.LocalStorage,\r\n storeAuthStateInCookie: true,\r\n secureCookies: true\r\n }\r\n }), \"f\");\r\n }\r\n }\r\n get useMsal() {\r\n const isMsal = __classPrivateFieldGet(this, _AuthenticationManager_props, \"f\").useMsal == null || __classPrivateFieldGet(this, _AuthenticationManager_props, \"f\").useMsal === true;\r\n return isMsal;\r\n }\r\n get instance() {\r\n return __classPrivateFieldGet(this, _AuthenticationManager_instance, \"f\");\r\n }\r\n get tenantId() {\r\n return __classPrivateFieldGet(this, _AuthenticationManager_props, \"f\").tenantId;\r\n }\r\n get clientId() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _AuthenticationManager_props, \"f\").clientId) !== null && _a !== void 0 ? _a : '51606deb-babb-4619-9b45-46fdc9844f69';\r\n }\r\n get enableDebug() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _AuthenticationManager_props, \"f\").enableDebug) !== null && _a !== void 0 ? _a : false;\r\n }\r\n getAccessToken(module, scope = '') {\r\n return isNullOrEmpty(scope) ? __classPrivateFieldGet(this, _AuthenticationManager_acquireDefaultTokenSilent, \"f\").call(this, module) : __classPrivateFieldGet(this, _AuthenticationManager_acquireTokenSilent, \"f\").call(this, module, scope);\r\n }\r\n getHeaders(module) {\r\n var _a, _b;\r\n return (_b = (_a = __classPrivateFieldGet(this, _AuthenticationManager_props, \"f\")).onGetHeaders) === null || _b === void 0 ? void 0 : _b.call(_a, module);\r\n }\r\n getApimKey(module) {\r\n var _a, _b;\r\n return (_b = (_a = __classPrivateFieldGet(this, _AuthenticationManager_props, \"f\")).onGetApimKey) === null || _b === void 0 ? void 0 : _b.call(_a, module);\r\n }\r\n loginPopup() {\r\n __classPrivateFieldGet(this, _AuthenticationManager_instance, \"f\").loginPopup({\r\n scopes: [`${this.clientId}/.default`]\r\n }).then(result => {\r\n __classPrivateFieldGet(this, _AuthenticationManager_instance, \"f\").setActiveAccount(result.account);\r\n });\r\n }\r\n loginRedirect() {\r\n __classPrivateFieldGet(this, _AuthenticationManager_instance, \"f\").loginRedirect({\r\n scopes: [`${this.clientId}/.default`],\r\n redirectUri: window.location.origin\r\n });\r\n }\r\n}\r\n_AuthenticationManager_instance = new WeakMap(), _AuthenticationManager_props = new WeakMap(), _AuthenticationManager_acquireDefaultTokenSilent = new WeakMap(), _AuthenticationManager_acquireTokenSilent = new WeakMap();\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { CommonRefreshTokenRequest } from \"../request/CommonRefreshTokenRequest\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { GrantType, AuthenticationScheme, Errors, HeaderNames } from \"../utils/Constants\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { CcsCredentialType } from \"../account/CcsCredential\";\r\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo\";\r\nimport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage } from \"../error/InteractionRequiredAuthError\";\r\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\n/**\r\n * OAuth2.0 refresh token client\r\n */\r\nexport class RefreshTokenClient extends BaseClient {\r\n constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\r\n super(configuration, performanceClient);\r\n\r\n }\r\n public async acquireToken(request: CommonRefreshTokenRequest): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n\r\n const atsMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n this.logger.verbose(\"RefreshTokenClientAcquireToken called\", request.correlationId);\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n const response = await this.executeTokenRequest(request, this.authority);\r\n const httpVerToken = response.headers?.[HeaderNames.X_MS_HTTP_VERSION];\r\n atsMeasurement?.addStaticFields({\r\n refreshTokenSize: response.body.refresh_token?.length || 0,\r\n });\r\n if(httpVerToken)\r\n {\r\n atsMeasurement?.addStaticFields({\r\n httpVerToken,\r\n });\r\n }\r\n\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin\r\n );\r\n responseHandler.validateTokenResponse(response.body);\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.HandleServerTokenResponse, request.correlationId);\r\n return responseHandler.handleServerTokenResponse(\r\n response.body,\r\n this.authority,\r\n reqTimestamp,\r\n request,\r\n undefined,\r\n undefined,\r\n true,\r\n request.forceCache,\r\n requestId\r\n ).then((result: AuthenticationResult) => {\r\n atsMeasurement?.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch((error) => {\r\n this.logger.verbose(\"Error in fetching refresh token\", request.correlationId);\r\n atsMeasurement?.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n });\r\n }\r\n\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n public async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n\r\n // try checking if FOCI is enabled for the given application\r\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment);\r\n\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n return this.acquireTokenWithCachedRefreshToken(request, true);\r\n } catch (e) {\r\n const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && e.errorCode === InteractionRequiredAuthErrorMessage.noTokensFoundError.code;\r\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n return this.acquireTokenWithCachedRefreshToken(request, false);\r\n // throw in all other cases\r\n } else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n return this.acquireTokenWithCachedRefreshToken(request, false);\r\n\r\n }\r\n\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n private async acquireTokenWithCachedRefreshToken(request: CommonSilentFlowRequest, foci: boolean) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n\r\n // fetches family RT or application RT based on FOCI value\r\n\r\n const atsMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n this.logger.verbose(\"RefreshTokenClientAcquireTokenWithCachedRefreshToken called\", request.correlationId);\r\n const refreshToken = this.cacheManager.getRefreshToken(request.account, foci);\r\n\r\n if (!refreshToken) {\r\n atsMeasurement?.discardMeasurement();\r\n throw InteractionRequiredAuthError.createNoTokensFoundError();\r\n }\r\n // attach cached RT size to the current measurement\r\n atsMeasurement?.endMeasurement({\r\n success: true\r\n });\r\n\r\n const refreshTokenRequest: CommonRefreshTokenRequest = {\r\n ...request,\r\n refreshToken: refreshToken.secret,\r\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\r\n ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n }\r\n };\r\n\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n return this.acquireToken(refreshTokenRequest);\r\n }\r\n\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n private async executeTokenRequest(request: CommonRefreshTokenRequest, authority: Authority)\r\n : Promise> {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n const acquireTokenMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n \r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n \r\n const requestBody = await this.createTokenRequestBody(request);\r\n const headers: Record = this.createTokenRequestHeaders(request.ccsCredential);\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n\r\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)\r\n .then((result) => {\r\n acquireTokenMeasurement?.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch((error) => {\r\n acquireTokenMeasurement?.endMeasurement({\r\n success: false\r\n });\r\n throw error;\r\n });\r\n }\r\n\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n private async createTokenRequestBody(request: CommonRefreshTokenRequest): Promise {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n\r\n const correlationId = request.correlationId;\r\n const acquireTokenMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.BaseClientCreateTokenRequestHeaders, correlationId);\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n parameterBuilder.addScopes(request.scopes);\r\n\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n\r\n parameterBuilder.addClientInfo();\r\n\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n this.performanceClient?.setPreQueueTime(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n const reqCnfData = await popTokenGenerator.generateCnf(request);\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\r\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n } else {\r\n acquireTokenMeasurement?.endMeasurement({\r\n success: false\r\n });\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n if (this.config.systemOptions.preventCorsPreflight && request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n } catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n acquireTokenMeasurement?.endMeasurement({\r\n success: true\r\n });\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { RefreshTokenClient } from \"./RefreshTokenClient\";\r\nimport { ClientAuthError, ClientAuthErrorMessage } from \"../error/ClientAuthError\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\r\nimport { CacheOutcome } from \"../utils/Constants\";\r\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\n\r\nexport class SilentFlowClient extends BaseClient {\r\n \r\n constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\r\n super(configuration,performanceClient);\r\n }\r\n \r\n /**\r\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\r\n * the given token and returns the renewed token\r\n * @param request\r\n */\r\n async acquireToken(request: CommonSilentFlowRequest): Promise {\r\n try {\r\n return await this.acquireCachedToken(request);\r\n } catch (e) {\r\n if (e instanceof ClientAuthError && e.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\r\n const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient);\r\n return refreshTokenClient.acquireTokenByRefreshToken(request);\r\n } else {\r\n throw e;\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n async acquireCachedToken(request: CommonSilentFlowRequest): Promise {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n\r\n if (request.forceRefresh) {\r\n // Must refresh due to present force_refresh flag.\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.FORCE_REFRESH);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because forceRefresh is true.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n } else if (!this.config.cacheOptions.claimsBasedCachingEnabled && !StringUtils.isEmptyObj(request.claims)) {\r\n // Must refresh due to presence of claims in request preventing cache lookup\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CLAIMS_REQUESTED_CACHE_SKIPPED);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because claims-based caching is disabled and claims were requested.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n\r\n const environment = request.authority || this.authority.getPreferredCache();\r\n\r\n const cacheRecord = this.cacheManager.readCacheRecord(request.account, request, environment);\r\n\r\n if (!cacheRecord.accessToken) {\r\n // Must refresh due to non-existent access_token.\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n } else if (\r\n TimeUtils.wasClockTurnedBack(cacheRecord.accessToken.cachedAt) ||\r\n TimeUtils.isTokenExpired(cacheRecord.accessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)\r\n ) {\r\n // Must refresh due to expired access_token.\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\r\n this.logger.info(`SilentFlowClient:acquireCachedToken - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`);\r\n throw ClientAuthError.createRefreshRequiredError();\r\n } else if (cacheRecord.accessToken.refreshOn && TimeUtils.isTokenExpired(cacheRecord.accessToken.refreshOn, 0)) {\r\n // Must refresh due to the refresh_in value.\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.REFRESH_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n\r\n return await this.generateResultFromCacheRecord(cacheRecord, request);\r\n }\r\n\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n private async generateResultFromCacheRecord(cacheRecord: CacheRecord, request: CommonSilentFlowRequest): Promise {\r\n let idTokenObj: AuthToken | undefined;\r\n if (cacheRecord.idToken) {\r\n idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\r\n }\r\n\r\n // token max_age check\r\n if (request.maxAge || (request.maxAge === 0)) {\r\n const authTime = idTokenObj?.claims.auth_time;\r\n if (!authTime) {\r\n throw ClientAuthError.createAuthTimeNotFoundError();\r\n }\r\n\r\n AuthToken.checkMaxAge(authTime, request.maxAge);\r\n }\r\n\r\n return await ResponseHandler.generateAuthenticationResult(\r\n this.cryptoUtils,\r\n this.authority,\r\n cacheRecord,\r\n true,\r\n request,\r\n idTokenObj\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { CommonSilentFlowRequest, AuthenticationResult, SilentFlowClient, ServerTelemetryManager, AccountInfo, AzureCloudOptions, PerformanceEvents, AuthError } from \"@azure/msal-common\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { ApiId } from \"../utils/BrowserConstants\";\r\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\r\n\r\nexport class SilentCacheClient extends StandardInteractionClient {\r\n /**\r\n * Returns unexpired tokens from the cache, if available\r\n * @param silentRequest\r\n */\r\n async acquireToken(silentRequest: CommonSilentFlowRequest): Promise {\r\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId);\r\n // Telemetry manager only used to increment cacheHits here\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n\r\n const silentAuthClient = await this.createSilentFlowClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\r\n this.logger.verbose(\"Silent auth client created\");\r\n\r\n try {\r\n const cachedToken = await silentAuthClient.acquireCachedToken(silentRequest);\r\n\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: true\r\n });\r\n return cachedToken;\r\n } catch (error) {\r\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code) {\r\n this.logger.verbose(\"Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair.\");\r\n }\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: error instanceof AuthError && error.errorCode || undefined,\r\n subErrorCode: error instanceof AuthError && error.subError || undefined,\r\n success: false\r\n });\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Currently Unsupported\r\n */\r\n logout(): Promise {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n }\r\n\r\n /**\r\n * Creates an Silent Flow Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createSilentFlowClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise {\r\n // Create auth module.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\r\n return new SilentFlowClient(clientConfig, this.performanceClient);\r\n }\r\n\r\n async initializeSilentRequest(request: SilentRequest, account: AccountInfo): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.InitializeSilentRequest, this.correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, this.correlationId);\r\n return {\r\n ...request,\r\n ...await this.initializeBaseRequest(request, account),\r\n account: account,\r\n forceRefresh: request.forceRefresh || false\r\n };\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\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, CacheRecord } from \"@azure/msal-common\";\r\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { NativeExtensionMethod, ApiId, TemporaryCacheKeys, NativeConstants } from \"../utils/BrowserConstants\";\r\nimport { NativeExtensionRequestBody, NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\r\nimport { MATS, NativeResponse } from \"../broker/nativeBroker/NativeResponse\";\r\nimport { NativeAuthError } from \"../error/NativeAuthError\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { SilentCacheClient } from \"./SilentCacheClient\";\r\n\r\nexport class NativeInteractionClient extends BaseInteractionClient {\r\n protected apiId: ApiId;\r\n protected accountId: string;\r\n protected nativeMessageHandler: NativeMessageHandler;\r\n protected silentCacheClient: SilentCacheClient;\r\n protected nativeStorageManager: BrowserCacheManager;\r\n\r\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) {\r\n super(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\r\n this.apiId = apiId;\r\n this.accountId = accountId;\r\n this.nativeMessageHandler = provider;\r\n this.nativeStorageManager = nativeStorageImpl;\r\n this.silentCacheClient = new SilentCacheClient(config, this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\r\n }\r\n\r\n /**\r\n * Acquire token from native platform via browser extension\r\n * @param request\r\n */\r\n async acquireToken(request: PopupRequest|SilentRequest|SsoSilentRequest): Promise {\r\n this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\r\n\r\n // start the perf measurement\r\n const nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n\r\n // initialize native request\r\n const nativeRequest = await this.initializeNativeRequest(request);\r\n \r\n // check if the tokens can be retrieved from internal cache\r\n try {\r\n const result = await this.acquireTokensFromCache(this.accountId, nativeRequest);\r\n nativeATMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: false, // Should be true only when the result is coming directly from the broker\r\n fromCache: true\r\n });\r\n return result;\r\n } catch (e) {\r\n // continue with a native call for any and all errors\r\n this.logger.info(\"MSAL internal Cache does not contain tokens, proceed to make a native call\");\r\n }\r\n\r\n // fall back to native calls\r\n const messageBody: NativeExtensionRequestBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n\r\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\r\n const validatedResponse: NativeResponse = this.validateNativeResponse(response);\r\n\r\n return this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)\r\n .then((result: AuthenticationResult) => {\r\n nativeATMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n })\r\n .catch((error: AuthError) => {\r\n nativeATMeasurement.endMeasurement({\r\n success: false,\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n isNativeBroker: true\r\n });\r\n throw error;\r\n });\r\n }\r\n\r\n /**\r\n * Creates silent flow request\r\n * @param request\r\n * @param cachedAccount\r\n * @returns CommonSilentFlowRequest\r\n */\r\n private createSilentCacheRequest(request: NativeTokenRequest, cachedAccount: AccountInfo): CommonSilentFlowRequest {\r\n return {\r\n authority: request.authority,\r\n correlationId: this.correlationId,\r\n scopes: ScopeSet.fromString(request.scope).asArray(),\r\n account: cachedAccount,\r\n forceRefresh: false,\r\n };\r\n }\r\n\r\n /**\r\n * Fetches the tokens from the cache if un-expired\r\n * @param nativeAccountId\r\n * @param request\r\n * @returns authenticationResult\r\n */\r\n protected async acquireTokensFromCache(nativeAccountId: string, request: NativeTokenRequest): Promise {\r\n if (!nativeAccountId) {\r\n this.logger.warning(\"NativeInteractionClient:acquireTokensFromCache - No nativeAccountId provided\");\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n // fetch the account from browser cache\r\n const account = this.browserStorage.getAccountInfoFilteredBy({nativeAccountId});\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n\r\n // leverage silent flow for cached tokens retrieval\r\n try {\r\n const silentRequest = this.createSilentCacheRequest(request, account);\r\n const result = await this.silentCacheClient.acquireToken(silentRequest);\r\n return result;\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\r\n * @param request\r\n */\r\n async acquireTokenRedirect(request: RedirectRequest): Promise {\r\n this.logger.trace(\"NativeInteractionClient - acquireTokenRedirect called.\");\r\n const nativeRequest = await this.initializeNativeRequest(request);\r\n\r\n const messageBody: NativeExtensionRequestBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n\r\n try {\r\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\r\n this.validateNativeResponse(response);\r\n } catch (e) {\r\n // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n throw e;\r\n }\r\n }\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true);\r\n\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n const redirectUri = this.config.auth.navigateToLoginRequestUrl ? window.location.href : this.getRedirectUri(request.redirectUri);\r\n await this.navigationClient.navigateExternal(redirectUri, navigationOptions); // Need to treat this as external to ensure handleRedirectPromise is run again\r\n }\r\n\r\n /**\r\n * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\r\n */\r\n async handleRedirectPromise(): Promise {\r\n this.logger.trace(\"NativeInteractionClient - handleRedirectPromise called.\");\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return null;\r\n }\r\n\r\n // remove prompt from the request to prevent WAM from prompting twice\r\n const cachedRequest = this.browserStorage.getCachedNativeRequest();\r\n if (!cachedRequest) {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\");\r\n return null;\r\n }\r\n\r\n const { prompt, ...request} = cachedRequest;\r\n if (prompt) {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window.\");\r\n }\r\n\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n\r\n const messageBody: NativeExtensionRequestBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: request\r\n };\r\n\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n\r\n try {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise sending message to native broker.\");\r\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\r\n this.validateNativeResponse(response);\r\n const result = this.handleNativeResponse(response as NativeResponse, request, reqTimestamp);\r\n this.browserStorage.setInteractionInProgress(false);\r\n return result;\r\n } catch (e) {\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Logout from native platform via browser extension\r\n * @param request\r\n */\r\n logout(): Promise {\r\n this.logger.trace(\"NativeInteractionClient - logout called.\");\r\n return Promise.reject(\"Logout not implemented yet\");\r\n }\r\n\r\n /**\r\n * Transform response from native platform into AuthenticationResult object which will be returned to the end user\r\n * @param response\r\n * @param request\r\n * @param reqTimestamp\r\n */\r\n protected async handleNativeResponse(response: NativeResponse, request: NativeTokenRequest, reqTimestamp: number): Promise {\r\n this.logger.trace(\"NativeInteractionClient - handleNativeResponse called.\");\r\n\r\n if (response.account.id !== request.accountId) {\r\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\r\n throw NativeAuthError.createUserSwitchError();\r\n }\r\n\r\n // Get the preferred_cache domain for the given authority\r\n const authority = await this.getDiscoveredAuthority(request.authority);\r\n const authorityPreferredCache = authority.getPreferredCache();\r\n\r\n // generate identifiers\r\n const idTokenObj = this.createIdTokenObj(response);\r\n const homeAccountIdentifier = this.createHomeAccountIdentifier(response, idTokenObj);\r\n const accountEntity = this.createAccountEntity(response, homeAccountIdentifier, idTokenObj, authorityPreferredCache);\r\n\r\n // generate authenticationResult\r\n const result = await this.generateAuthenticationResult(response, request, idTokenObj, accountEntity, authority.canonicalAuthority, reqTimestamp);\r\n\r\n // cache accounts and tokens in the appropriate storage\r\n this.cacheAccount(accountEntity);\r\n this.cacheNativeTokens(response, request, homeAccountIdentifier, accountEntity, idTokenObj, result.accessToken, result.tenantId, reqTimestamp);\r\n \r\n return result;\r\n }\r\n\r\n /**\r\n * Create an idToken Object (not entity)\r\n * @param response \r\n * @returns \r\n */\r\n protected createIdTokenObj(response: NativeResponse): AuthToken {\r\n return new AuthToken(response.id_token || Constants.EMPTY_STRING, this.browserCrypto);\r\n }\r\n\r\n /**\r\n * creates an homeAccountIdentifier for the account\r\n * @param response \r\n * @param idTokenObj \r\n * @returns \r\n */\r\n protected createHomeAccountIdentifier(response: NativeResponse, idTokenObj: AuthToken): string {\r\n // Save account in browser storage\r\n const homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);\r\n\r\n return homeAccountIdentifier;\r\n }\r\n\r\n /**\r\n * Creates account entity\r\n * @param response \r\n * @param homeAccountIdentifier \r\n * @param idTokenObj \r\n * @param authority \r\n * @returns \r\n */\r\n protected createAccountEntity(response: NativeResponse, homeAccountIdentifier: string, idTokenObj: AuthToken, authority: string): AccountEntity {\r\n\r\n return AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, authority, response.account.id);\r\n }\r\n\r\n /**\r\n * Helper to generate scopes\r\n * @param response \r\n * @param request \r\n * @returns \r\n */\r\n generateScopes(response: NativeResponse, request: NativeTokenRequest): ScopeSet {\r\n return response.scope ? ScopeSet.fromString(response.scope) : ScopeSet.fromString(request.scope);\r\n }\r\n\r\n /**\r\n * If PoP token is requesred, records the PoP token if returned from the WAM, else generates one in the browser\r\n * @param request \r\n * @param response \r\n */\r\n async generatePopAccessToken(response: NativeResponse, request: NativeTokenRequest): Promise {\r\n \r\n if(request.tokenType === AuthenticationScheme.POP) {\r\n /** \r\n * This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT \r\n * is still received, SHR is calculated locally\r\n */\r\n \r\n // Check if native layer returned an SHR token\r\n if (response.shr) {\r\n this.logger.trace(\"handleNativeServerResponse: SHR is enabled in native layer\");\r\n return response.shr;\r\n }\r\n\r\n // Generate SHR in msal js if WAM does not compute it when POP is enabled\r\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n const shrParameters: SignedHttpRequestParameters = {\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n\r\n /**\r\n * KeyID must be present in the native request from when the PoP key was generated in order for\r\n * PopTokenGenerator to query the full key for signing\r\n */\r\n if (!request.keyId) {\r\n throw ClientAuthError.createKeyIdMissingError();\r\n }\r\n return await popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters);\r\n } else {\r\n return response.access_token;\r\n }\r\n }\r\n\r\n /**\r\n * Generates authentication result\r\n * @param response \r\n * @param request \r\n * @param idTokenObj \r\n * @param accountEntity \r\n * @param authority \r\n * @param reqTimestamp \r\n * @returns \r\n */\r\n protected async generateAuthenticationResult(response: NativeResponse, request: NativeTokenRequest, idTokenObj: AuthToken, accountEntity: AccountEntity, authority: string, reqTimestamp: number): Promise {\r\n\r\n // Add Native Broker fields to Telemetry\r\n const mats = this.addTelemetryFromNativeResponse(response);\r\n\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = response.scope ? ScopeSet.fromString(response.scope) : ScopeSet.fromString(request.scope);\r\n\r\n const accountProperties = response.account.properties || {};\r\n const uid = accountProperties[\"UID\"] || idTokenObj.claims.oid || idTokenObj.claims.sub || Constants.EMPTY_STRING;\r\n const tid = accountProperties[\"TenantId\"] || idTokenObj.claims.tid || Constants.EMPTY_STRING;\r\n\r\n // generate PoP token as needed\r\n const responseAccessToken = await this.generatePopAccessToken(response, request);\r\n const tokenType = (request.tokenType === AuthenticationScheme.POP) ? AuthenticationScheme.POP : AuthenticationScheme.BEARER;\r\n\r\n const result: AuthenticationResult = {\r\n authority: authority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes.asArray(),\r\n account: accountEntity.getAccountInfo(),\r\n idToken: response.id_token,\r\n idTokenClaims: idTokenObj.claims,\r\n accessToken: responseAccessToken,\r\n fromCache: mats ? this.isResponseFromCache(mats) : false,\r\n expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),\r\n tokenType: tokenType,\r\n correlationId: this.correlationId,\r\n state: response.state,\r\n fromNativeBroker: true\r\n };\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * cache the account entity in browser storage\r\n * @param accountEntity \r\n */\r\n cacheAccount(accountEntity: AccountEntity): void{\r\n // Store the account info and hence `nativeAccountId` in browser cache\r\n this.browserStorage.setAccount(accountEntity);\r\n\r\n // Remove any existing cached tokens for this account in browser storage\r\n this.browserStorage.removeAccountContext(accountEntity).catch((e) => {\r\n this.logger.error(`Error occurred while removing account context from browser storage. ${e}`);\r\n });\r\n }\r\n\r\n /**\r\n * Stores the access_token and id_token in inmemory storage\r\n * @param response \r\n * @param request \r\n * @param homeAccountIdentifier \r\n * @param idTokenObj \r\n * @param responseAccessToken \r\n * @param tenantId \r\n * @param reqTimestamp \r\n */\r\n cacheNativeTokens(response: NativeResponse, request: NativeTokenRequest, homeAccountIdentifier: string, accountEntity: AccountEntity, idTokenObj: AuthToken, responseAccessToken: string, tenantId: string, reqTimestamp: number): void {\r\n\r\n const cachedIdToken: IdTokenEntity | null =\r\n IdTokenEntity.createIdTokenEntity(\r\n homeAccountIdentifier,\r\n request.authority,\r\n response.id_token || Constants.EMPTY_STRING,\r\n request.clientId,\r\n idTokenObj.claims.tid || Constants.EMPTY_STRING\r\n );\r\n\r\n // cache accessToken in inmemory storage\r\n const expiresIn: number = (request.tokenType === AuthenticationScheme.POP)\r\n ? Constants.SHR_NONCE_VALIDITY\r\n : (\r\n typeof response.expires_in === \"string\"\r\n ? parseInt(response.expires_in, 10)\r\n : response.expires_in\r\n ) || 0;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const responseScopes = this.generateScopes(response, request);\r\n const cachedAccessToken: AccessTokenEntity | null =\r\n AccessTokenEntity.createAccessTokenEntity(\r\n homeAccountIdentifier,\r\n request.authority,\r\n responseAccessToken,\r\n request.clientId,\r\n idTokenObj\r\n ? idTokenObj.claims.tid || Constants.EMPTY_STRING\r\n : tenantId,\r\n responseScopes.printScopes(),\r\n tokenExpirationSeconds,\r\n 0,\r\n this.browserCrypto\r\n );\r\n\r\n const nativeCacheRecord = new CacheRecord(\r\n accountEntity,\r\n cachedIdToken,\r\n cachedAccessToken\r\n );\r\n\r\n this.nativeStorageManager.saveCacheRecord(nativeCacheRecord);\r\n }\r\n\r\n protected addTelemetryFromNativeResponse(response: NativeResponse): MATS | null {\r\n\r\n const mats = this.getMATSFromResponse(response);\r\n\r\n if (!mats){\r\n return null;\r\n }\r\n \r\n this.performanceClient.addStaticFields({\r\n extensionId: this.nativeMessageHandler.getExtensionId(),\r\n extensionVersion: this.nativeMessageHandler.getExtensionVersion(),\r\n matsBrokerVersion: mats.broker_version,\r\n matsAccountJoinOnStart: mats.account_join_on_start,\r\n matsAccountJoinOnEnd: mats.account_join_on_end,\r\n matsDeviceJoin: mats.device_join,\r\n matsPromptBehavior: mats.prompt_behavior,\r\n matsApiErrorCode: mats.api_error_code,\r\n matsUiVisible: mats.ui_visible,\r\n matsSilentCode: mats.silent_code,\r\n matsSilentBiSubCode: mats.silent_bi_sub_code,\r\n matsSilentMessage: mats.silent_message,\r\n matsSilentStatus: mats.silent_status,\r\n matsHttpStatus: mats.http_status,\r\n matsHttpEventCount: mats.http_event_count\r\n }, this.correlationId);\r\n\r\n return mats;\r\n }\r\n\r\n /**\r\n * Validates native platform response before processing\r\n * @param response\r\n */\r\n private validateNativeResponse(response: object): NativeResponse {\r\n if (\r\n response.hasOwnProperty(\"access_token\") &&\r\n response.hasOwnProperty(\"id_token\") &&\r\n response.hasOwnProperty(\"client_info\") &&\r\n response.hasOwnProperty(\"account\") &&\r\n response.hasOwnProperty(\"scope\") &&\r\n response.hasOwnProperty(\"expires_in\")\r\n ) {\r\n return response as NativeResponse;\r\n } else {\r\n throw NativeAuthError.createUnexpectedError(\"Response missing expected properties.\");\r\n }\r\n }\r\n\r\n /**\r\n * Gets MATS telemetry from native response\r\n * @param response\r\n * @returns\r\n */\r\n private getMATSFromResponse(response: NativeResponse): MATS|null {\r\n if (response.properties.MATS) {\r\n try {\r\n return JSON.parse(response.properties.MATS);\r\n } catch (e) {\r\n this.logger.error(\"NativeInteractionClient - Error parsing MATS telemetry, returning null instead\");\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns whether or not response came from native cache\r\n * @param response\r\n * @returns\r\n */\r\n protected isResponseFromCache(mats: MATS): boolean {\r\n if (typeof mats.is_cached === \"undefined\") {\r\n this.logger.verbose(\"NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false.\");\r\n return false;\r\n }\r\n\r\n return !!mats.is_cached;\r\n }\r\n\r\n /**\r\n * Translates developer provided request object into NativeRequest object\r\n * @param request\r\n */\r\n protected async initializeNativeRequest(request: PopupRequest|SsoSilentRequest): Promise {\r\n this.logger.trace(\"NativeInteractionClient - initializeNativeRequest called\");\r\n\r\n const authority = request.authority || this.config.auth.authority;\r\n\r\n if (request.account) {\r\n await this.validateRequestAuthority(authority, request.account);\r\n }\r\n\r\n const canonicalAuthority = new UrlString(authority);\r\n canonicalAuthority.validateAsUri();\r\n\r\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.\r\n const { scopes, ...remainingProperties } = request; \r\n const scopeSet = new ScopeSet(scopes || []);\r\n scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\r\n\r\n const getPrompt = () => {\r\n // If request is silent, prompt is always none\r\n switch (this.apiId) {\r\n case ApiId.ssoSilent:\r\n case ApiId.acquireTokenSilent_silentFlow:\r\n this.logger.trace(\"initializeNativeRequest: silent request sets prompt to none\");\r\n return PromptValue.NONE;\r\n default:\r\n break;\r\n }\r\n\r\n // Prompt not provided, request may proceed and native broker decides if it needs to prompt\r\n if (!request.prompt) {\r\n this.logger.trace(\"initializeNativeRequest: prompt was not provided\");\r\n return undefined;\r\n }\r\n\r\n // If request is interactive, check if prompt provided is allowed to go directly to native broker\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n case PromptValue.LOGIN:\r\n this.logger.trace(\"initializeNativeRequest: prompt is compatible with native flow\");\r\n return request.prompt;\r\n default:\r\n this.logger.trace(`initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow`);\r\n throw BrowserAuthError.createNativePromptParameterNotSupportedError();\r\n }\r\n };\r\n \r\n const validatedRequest: NativeTokenRequest = {\r\n ...remainingProperties,\r\n accountId: this.accountId,\r\n clientId: this.config.auth.clientId,\r\n authority: canonicalAuthority.urlString,\r\n scope: scopeSet.printScopes(),\r\n redirectUri: this.getRedirectUri(request.redirectUri),\r\n prompt: getPrompt(),\r\n correlationId: this.correlationId,\r\n tokenType: request.authenticationScheme,\r\n windowTitleSubstring: document.title,\r\n extraParameters: {\r\n ...request.extraQueryParameters,\r\n ...request.tokenQueryParameters,\r\n telemetry: NativeConstants.MATS_TELEMETRY\r\n },\r\n extendedExpiryToken: false // Make this configurable?\r\n };\r\n\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n\r\n // add POP request type\r\n const shrParameters: SignedHttpRequestParameters = {\r\n resourceRequestUri: request.resourceRequestUri,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n\r\n const popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n const reqCnfData = await popTokenGenerator.generateCnf(shrParameters);\r\n\r\n // to reduce the URL length, it is recommended to send the short form of the req_cnf \r\n validatedRequest.reqCnf = reqCnfData.reqCnfString;\r\n validatedRequest.keyId = reqCnfData.kid;\r\n }\r\n\r\n return validatedRequest;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { NativeConstants, NativeExtensionMethod } from \"../../utils/BrowserConstants\";\r\nimport {\r\n Logger,\r\n AuthError,\r\n AuthenticationScheme,\r\n InProgressPerformanceEvent,\r\n PerformanceEvents,\r\n IPerformanceClient\r\n} from \"@azure/msal-common\";\r\nimport { NativeExtensionRequest, NativeExtensionRequestBody } from \"./NativeRequest\";\r\nimport { NativeAuthError } from \"../../error/NativeAuthError\";\r\nimport { BrowserAuthError } from \"../../error/BrowserAuthError\";\r\nimport { BrowserConfiguration } from \"../../config/Configuration\";\r\n\r\ntype ResponseResolvers = {\r\n resolve: (value:T|PromiseLike) => void;\r\n reject: (value:AuthError|Error|PromiseLike|PromiseLike) => void;\r\n};\r\n\r\nexport class NativeMessageHandler {\r\n private extensionId: string | undefined;\r\n private extensionVersion: string | undefined;\r\n private logger: Logger;\r\n private readonly handshakeTimeoutMs: number;\r\n private responseId: number;\r\n private timeoutId: number | undefined;\r\n private resolvers: Map>;\r\n private handshakeResolvers: Map>;\r\n private messageChannel: MessageChannel;\r\n private readonly windowListener: (event: MessageEvent) => void;\r\n private readonly performanceClient: IPerformanceClient;\r\n private readonly handshakeEvent: InProgressPerformanceEvent;\r\n\r\n constructor(logger: Logger, handshakeTimeoutMs: number, performanceClient: IPerformanceClient, extensionId?: string) {\r\n this.logger = logger;\r\n this.handshakeTimeoutMs = handshakeTimeoutMs;\r\n this.extensionId = extensionId;\r\n this.resolvers = new Map(); // Used for non-handshake messages\r\n this.handshakeResolvers = new Map(); // Used for handshake messages\r\n this.responseId = 0;\r\n this.messageChannel = new MessageChannel();\r\n this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound\r\n this.performanceClient = performanceClient;\r\n this.handshakeEvent = performanceClient.startMeasurement(PerformanceEvents.NativeMessageHandlerHandshake);\r\n }\r\n\r\n /**\r\n * Sends a given message to the extension and resolves with the extension response\r\n * @param body\r\n */\r\n async sendMessage(body: NativeExtensionRequestBody): Promise {\r\n this.logger.trace(\"NativeMessageHandler - sendMessage called.\");\r\n const req: NativeExtensionRequest = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: body\r\n };\r\n\r\n this.logger.trace(\"NativeMessageHandler - Sending request to browser extension\");\r\n this.logger.tracePii(`NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(req)}`);\r\n this.messageChannel.port1.postMessage(req);\r\n\r\n return new Promise((resolve, reject) => {\r\n this.resolvers.set(req.responseId, {resolve, reject});\r\n });\r\n }\r\n\r\n /**\r\n * Returns an instance of the MessageHandler that has successfully established a connection with an extension\r\n * @param {Logger} logger\r\n * @param {number} handshakeTimeoutMs\r\n * @param {IPerformanceClient} performanceClient\r\n */\r\n static async createProvider(logger: Logger, handshakeTimeoutMs: number, performanceClient: IPerformanceClient): Promise {\r\n logger.trace(\"NativeMessageHandler - createProvider called.\");\r\n try {\r\n const preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient, NativeConstants.PREFERRED_EXTENSION_ID);\r\n await preferredProvider.sendHandshakeRequest();\r\n return preferredProvider;\r\n } catch (e) {\r\n // If preferred extension fails for whatever reason, fallback to using any installed extension\r\n const backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, performanceClient);\r\n await backupProvider.sendHandshakeRequest();\r\n return backupProvider;\r\n }\r\n }\r\n\r\n /**\r\n * Send handshake request helper.\r\n */\r\n private async sendHandshakeRequest(): Promise {\r\n this.logger.trace(\"NativeMessageHandler - sendHandshakeRequest called.\");\r\n // Register this event listener before sending handshake\r\n window.addEventListener(\"message\", this.windowListener, false); // false is important, because content script message processing should work first\r\n\r\n const req: NativeExtensionRequest = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: {\r\n method: NativeExtensionMethod.HandshakeRequest\r\n }\r\n };\r\n this.handshakeEvent.addStaticFields({\r\n extensionId: this.extensionId,\r\n extensionHandshakeTimeoutMs: this.handshakeTimeoutMs\r\n });\r\n\r\n this.messageChannel.port1.onmessage = (event) => {\r\n this.onChannelMessage(event);\r\n };\r\n\r\n window.postMessage(req, window.origin, [this.messageChannel.port2]);\r\n\r\n return new Promise((resolve, reject) => {\r\n this.handshakeResolvers.set(req.responseId, {resolve, reject});\r\n this.timeoutId = window.setTimeout(() => {\r\n /*\r\n * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.\r\n * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port\r\n */\r\n window.removeEventListener(\"message\", this.windowListener, false);\r\n this.messageChannel.port1.close();\r\n this.messageChannel.port2.close();\r\n this.handshakeEvent.endMeasurement({extensionHandshakeTimedOut: true, success: false});\r\n reject(BrowserAuthError.createNativeHandshakeTimeoutError());\r\n this.handshakeResolvers.delete(req.responseId);\r\n }, this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here\r\n });\r\n }\r\n\r\n /**\r\n * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.\r\n * @param event\r\n */\r\n private onWindowMessage(event: MessageEvent): void {\r\n this.logger.trace(\"NativeMessageHandler - onWindowMessage called\");\r\n // We only accept messages from ourselves\r\n if (event.source !== window) {\r\n return;\r\n }\r\n\r\n const request = event.data;\r\n\r\n if (!request.channel || request.channel !== NativeConstants.CHANNEL_ID) {\r\n return;\r\n }\r\n\r\n if (request.extensionId && request.extensionId !== this.extensionId) {\r\n return;\r\n }\r\n\r\n if (request.body.method === NativeExtensionMethod.HandshakeRequest) {\r\n // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed\r\n this.logger.verbose(request.extensionId ? `Extension with id: ${request.extensionId} not installed` : \"No extension installed\");\r\n clearTimeout(this.timeoutId);\r\n this.messageChannel.port1.close();\r\n this.messageChannel.port2.close();\r\n window.removeEventListener(\"message\", this.windowListener, false);\r\n const handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n if (handshakeResolver) {\r\n this.handshakeEvent.endMeasurement({success: false, extensionInstalled: false});\r\n handshakeResolver.reject(BrowserAuthError.createNativeExtensionNotInstalledError());\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Invoked when a message is received from the extension on the MessageChannel port\r\n * @param event\r\n */\r\n private onChannelMessage(event: MessageEvent): void {\r\n this.logger.trace(\"NativeMessageHandler - onChannelMessage called.\");\r\n const request = event.data;\r\n\r\n const resolver = this.resolvers.get(request.responseId);\r\n const handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n\r\n try {\r\n const method = request.body.method;\r\n\r\n if (method === NativeExtensionMethod.Response) {\r\n if (!resolver) {\r\n return;\r\n }\r\n const response = request.body.response;\r\n this.logger.trace(\"NativeMessageHandler - Received response from browser extension\");\r\n this.logger.tracePii(`NativeMessageHandler - Received response from browser extension: ${JSON.stringify(response)}`);\r\n if (response.status !== \"Success\") {\r\n resolver.reject(NativeAuthError.createError(response.code, response.description, response.ext));\r\n } else if (response.result) {\r\n if (response.result[\"code\"] && response.result[\"description\"]) {\r\n resolver.reject(NativeAuthError.createError(response.result[\"code\"], response.result[\"description\"], response.result[\"ext\"]));\r\n } else {\r\n resolver.resolve(response.result);\r\n }\r\n } else {\r\n throw AuthError.createUnexpectedError(\"Event does not contain result.\");\r\n }\r\n this.resolvers.delete(request.responseId);\r\n } else if (method === NativeExtensionMethod.HandshakeResponse) {\r\n if (!handshakeResolver) {\r\n return;\r\n }\r\n clearTimeout(this.timeoutId); // Clear setTimeout\r\n window.removeEventListener(\"message\", this.windowListener, false); // Remove 'No extension' listener\r\n this.extensionId = request.extensionId;\r\n this.extensionVersion = request.body.version;\r\n this.logger.verbose(`NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`);\r\n this.handshakeEvent.endMeasurement({extensionInstalled: true, success: true});\r\n\r\n handshakeResolver.resolve();\r\n this.handshakeResolvers.delete(request.responseId);\r\n }\r\n // Do nothing if method is not Response or HandshakeResponse\r\n } catch (err) {\r\n this.logger.error(\"Error parsing response from WAM Extension\");\r\n this.logger.errorPii(`Error parsing response from WAM Extension: ${err.toString()}`);\r\n this.logger.errorPii(`Unable to parse ${event}`);\r\n\r\n if (resolver) {\r\n resolver.reject(err as AuthError);\r\n } else if (handshakeResolver) {\r\n handshakeResolver.reject(err as AuthError);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns the Id for the browser extension this handler is communicating with\r\n * @returns\r\n */\r\n getExtensionId(): string | undefined {\r\n return this.extensionId;\r\n }\r\n\r\n /**\r\n * Returns the version for the browser extension this handler is communicating with\r\n * @returns\r\n */\r\n getExtensionVersion(): string | undefined {\r\n return this.extensionVersion;\r\n }\r\n\r\n /**\r\n * Returns boolean indicating whether or not the request should attempt to use native broker\r\n * @param logger\r\n * @param config\r\n * @param nativeExtensionProvider\r\n * @param authenticationScheme\r\n */\r\n static isNativeAvailable(config: BrowserConfiguration, logger: Logger, nativeExtensionProvider?: NativeMessageHandler, authenticationScheme?: AuthenticationScheme): boolean {\r\n logger.trace(\"isNativeAvailable called\");\r\n if (!config.system.allowNativeBroker) {\r\n logger.trace(\"isNativeAvailable: allowNativeBroker is not enabled, returning false\");\r\n // Developer disabled WAM\r\n return false;\r\n }\r\n\r\n if (!nativeExtensionProvider) {\r\n logger.trace(\"isNativeAvailable: WAM extension provider is not initialized, returning false\");\r\n // Extension is not available\r\n return false;\r\n }\r\n\r\n if (authenticationScheme) {\r\n switch(authenticationScheme) {\r\n case AuthenticationScheme.BEARER:\r\n case AuthenticationScheme.POP:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is supported, returning true\");\r\n return true;\r\n default:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is not supported, returning false\");\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorizationCodePayload, StringUtils, CommonAuthorizationCodeRequest, AuthenticationResult, AuthorizationCodeClient, AuthorityFactory, Authority, INetworkModule, ClientAuthError, CcsCredential, Logger, ServerError, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\n\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\r\nimport { TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\n\r\nexport type InteractionParams = {};\r\n\r\n/**\r\n * Abstract class which defines operations for a browser interaction handling class.\r\n */\r\nexport class InteractionHandler {\r\n\r\n protected authModule: AuthorizationCodeClient;\r\n protected browserStorage: BrowserCacheManager;\r\n protected authCodeRequest: CommonAuthorizationCodeRequest;\r\n protected logger: Logger;\r\n protected performanceClient: IPerformanceClient;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, performanceClient: IPerformanceClient) {\r\n this.authModule = authCodeModule;\r\n this.browserStorage = storageImpl;\r\n this.authCodeRequest = authCodeRequest;\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n }\r\n\r\n /**\r\n * Function to handle response parameters from hash.\r\n * @param locationHash\r\n */\r\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromHash, this.authCodeRequest.correlationId);\r\n this.logger.verbose(\"InteractionHandler.handleCodeResponse called\");\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n\r\n // Handle code response.\r\n const stateKey = this.browserStorage.generateStateKey(state);\r\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n\r\n let authCodeResponse;\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n } catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n } else {\r\n throw e;\r\n }\r\n }\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.HandleCodeResponseFromServer, this.authCodeRequest.correlationId);\r\n return this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule);\r\n }\r\n\r\n /**\r\n * Process auth code response from AAD\r\n * @param authCodeResponse \r\n * @param state \r\n * @param authority \r\n * @param networkModule \r\n * @returns \r\n */\r\n async handleCodeResponseFromServer(authCodeResponse: AuthorizationCodePayload, state: string, authority: Authority, networkModule: INetworkModule, validateNonce: boolean = true): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromServer, this.authCodeRequest.correlationId);\r\n this.logger.trace(\"InteractionHandler.handleCodeResponseFromServer called\");\r\n\r\n // Handle code response.\r\n const stateKey = this.browserStorage.generateStateKey(state);\r\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n\r\n // Get cached items\r\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n\r\n // Check for new cloud instance\r\n if (authCodeResponse.cloud_instance_host_name) {\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.UpdateTokenEndpointAuthority, this.authCodeRequest.correlationId);\r\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\r\n }\r\n\r\n // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\r\n if (validateNonce) {\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n }\r\n\r\n authCodeResponse.state = requestState;\r\n\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n } else {\r\n const cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n\r\n // Acquire token with retrieved code.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AuthClientAcquireToken, this.authCodeRequest.correlationId);\r\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\r\n this.browserStorage.cleanRequestByState(state);\r\n return tokenResponse;\r\n }\r\n\r\n /**\r\n * Updates authority based on cloudInstanceHostname\r\n * @param cloudInstanceHostname \r\n * @param authority \r\n * @param networkModule \r\n */\r\n protected async updateTokenEndpointAuthority(cloudInstanceHostname: string, authority: Authority, networkModule: INetworkModule): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, this.authCodeRequest.correlationId);\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\r\n const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options, this.logger, this.performanceClient, this.authCodeRequest.correlationId);\r\n this.authModule.updateAuthority(cloudInstanceAuthority);\r\n }\r\n\r\n /**\r\n * Looks up ccs creds in the cache\r\n */\r\n protected checkCcsCredentials(): CcsCredential | null {\r\n // Look up ccs credential in temp cache\r\n const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\r\n if (cachedCcsCred) {\r\n try {\r\n return JSON.parse(cachedCcsCred) as CcsCredential;\r\n } catch (e) {\r\n this.authModule.logger.error(\"Cache credential could not be parsed\");\r\n this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`);\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ThrottlingUtils, CommonEndSessionRequest, UrlString, AuthError, OIDC_DEFAULT_SCOPES, Constants, ProtocolUtils, ServerAuthorizationCodeResponse, PerformanceEvents, StringUtils, IPerformanceClient, Logger, ICrypto } from \"@azure/msal-common\";\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { InteractionType, ApiId, BrowserConstants } from \"../utils/BrowserConstants\";\r\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { InteractionHandler, InteractionParams } from \"../interaction_handler/InteractionHandler\";\r\nimport { PopupWindowAttributes } from \"../request/PopupWindowAttributes\";\r\n\r\nexport type PopupParams = InteractionParams & {\r\n popup?: Window|null;\r\n popupName: string;\r\n popupWindowAttributes: PopupWindowAttributes\r\n};\r\n\r\nexport class PopupClient extends StandardInteractionClient {\r\n private currentWindow: Window | undefined;\r\n protected nativeStorage: BrowserCacheManager;\r\n\r\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\r\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\r\n // Properly sets this reference for the unload event.\r\n this.unloadWindow = this.unloadWindow.bind(this);\r\n this.nativeStorage = nativeStorageImpl;\r\n }\r\n\r\n /**\r\n * Acquires tokens by opening a popup window to the /authorize endpoint of the authority\r\n * @param request\r\n */\r\n acquireToken(request: PopupRequest): Promise {\r\n try {\r\n const popupName = this.generatePopupName(request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority);\r\n const popupWindowAttributes = request.popupWindowAttributes || {};\r\n\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true, acquiring token\");\r\n // Passes on popup position and dimensions if in request\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes);\r\n } else {\r\n // asyncPopups flag is set to false. Opens popup before acquiring token.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup before acquiring token\");\r\n const popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes, popup);\r\n }\r\n } catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n logout(logoutRequest?: EndSessionPopupRequest): Promise {\r\n try {\r\n this.logger.verbose(\"logoutPopup called\");\r\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n\r\n const popupName = this.generateLogoutPopupName(validLogoutRequest);\r\n const authority = logoutRequest && logoutRequest.authority;\r\n const mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri;\r\n const popupWindowAttributes = logoutRequest?.popupWindowAttributes || {};\r\n\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true\");\r\n // Passes on popup position and dimensions if in request\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, undefined, mainWindowRedirectUri);\r\n } else {\r\n // asyncPopups flag is set to false. Opens popup before logging out.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup\");\r\n const popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, popup, mainWindowRedirectUri);\r\n }\r\n } catch (e) {\r\n // Since this function is synchronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n /**\r\n * Helper which obtains an access_token for your API via opening a popup window in the user's browser\r\n * @param validRequest\r\n * @param popupName\r\n * @param popup\r\n * @param popupWindowAttributes\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n protected async acquireTokenPopupAsync(request: PopupRequest, popupName: string, popupWindowAttributes: PopupWindowAttributes, popup?: Window|null): Promise {\r\n this.logger.verbose(\"acquireTokenPopupAsync called\");\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Popup);\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n\r\n try {\r\n // Create auth code request and generate PKCE params\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\r\n\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n const isNativeBroker = NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme);\r\n // Start measurement for server calls with native brokering enabled\r\n let fetchNativeAccountIdMeasurement;\r\n if (isNativeBroker) {\r\n fetchNativeAccountIdMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId);\r\n }\r\n\r\n // Create acquire token url.\r\n const navigateUrl = await authClient.getAuthCodeUrl({\r\n ...validRequest,\r\n nativeBroker: isNativeBroker\r\n });\r\n\r\n // Create popup interaction handler.\r\n const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient);\r\n\r\n // Show the UI once the url has been created. Get the window handle for the popup.\r\n const popupParameters: PopupParams = {\r\n popup,\r\n popupName,\r\n popupWindowAttributes\r\n };\r\n const popupWindow: Window = this.initiateAuthRequest(navigateUrl, popupParameters);\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\r\n\r\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.\r\n const hash = await this.monitorPopupForHash(popupWindow);\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Popup, validRequest.correlationId);\r\n // Remove throttle if it exists\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest);\r\n\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n // end measurement for server call with native brokering enabled\r\n if (fetchNativeAccountIdMeasurement) {\r\n fetchNativeAccountIdMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true\r\n });\r\n }\r\n\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\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);\r\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\r\n return nativeInteractionClient.acquireToken({\r\n ...validRequest,\r\n state: userRequestState,\r\n prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n }).finally(() => {\r\n this.browserStorage.cleanRequestByState(state);\r\n });\r\n }\r\n\r\n // Handle response from hash string.\r\n const result = await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\r\n\r\n return result;\r\n } catch (e) {\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param validRequest\r\n * @param popupName\r\n * @param requestAuthority\r\n * @param popup\r\n * @param mainWindowRedirectUri\r\n * @param popupWindowAttributes\r\n */\r\n protected async logoutPopupAsync(validRequest: CommonEndSessionRequest, popupName: string, popupWindowAttributes: PopupWindowAttributes, requestAuthority?: string, popup?: Window|null, mainWindowRedirectUri?: string): Promise {\r\n this.logger.verbose(\"logoutPopupAsync called\");\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest);\r\n\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup);\r\n\r\n try {\r\n // Clear cache on logout\r\n await this.clearCacheOnLogout(validRequest.account);\r\n\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, validRequest.correlationId);\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, requestAuthority);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n // Create logout string and navigate user window to logout.\r\n const logoutUri: string = authClient.getLogoutUri(validRequest);\r\n\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest);\r\n\r\n // Open the popup window to requestUrl.\r\n const popupWindow = this.openPopup(logoutUri, {popupName, popupWindowAttributes, popup});\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\r\n\r\n await this.waitForLogoutPopup(popupWindow);\r\n\r\n if (mainWindowRedirectUri) {\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.logoutPopup,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, BrowserUtils.getCurrentUri());\r\n\r\n this.logger.verbose(\"Redirecting main window to url specified in the request\");\r\n this.logger.verbosePii(`Redirecting main window to: ${absoluteUrl}`);\r\n this.navigationClient.navigateInternal(absoluteUrl, navigationOptions);\r\n } else {\r\n this.logger.verbose(\"No main window navigation requested\");\r\n }\r\n } catch (e) {\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n }\r\n\r\n /**\r\n * Opens a popup window with given request Url.\r\n * @param requestUrl\r\n */\r\n initiateAuthRequest(requestUrl: string, params: PopupParams): Window {\r\n // Check that request url is not empty.\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n this.logger.infoPii(`Navigate to: ${requestUrl}`);\r\n // Open the popup window to requestUrl.\r\n return this.openPopup(requestUrl, params);\r\n } else {\r\n // Throw error if request URL is empty.\r\n this.logger.error(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n }\r\n\r\n /**\r\n * Monitors a window until it loads a url with the same origin.\r\n * @param popupWindow - window that is being monitored\r\n * @param timeout - timeout for processing hash once popup is redirected back to application\r\n */\r\n monitorPopupForHash(popupWindow: Window): Promise {\r\n return new Promise((resolve, reject) => {\r\n /*\r\n * Polling for popups needs to be tick-based,\r\n * since a non-trivial amount of time can be spent on interaction (which should not count against the timeout).\r\n */\r\n const maxTicks = this.config.system.windowHashTimeout / this.config.system.pollIntervalMilliseconds;\r\n let ticks = 0;\r\n\r\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - polling started\");\r\n\r\n const intervalId = setInterval(() => {\r\n // Window is closed\r\n if (popupWindow.closed) {\r\n this.logger.error(\"PopupHandler.monitorPopupForHash - window closed\");\r\n this.cleanPopup();\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createUserCancelledError());\r\n return;\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n let hash: string = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n hash = popupWindow.location.hash;\r\n } catch (e) {}\r\n\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n\r\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - popup window is on same origin as caller\");\r\n\r\n /*\r\n * Only run clock when we are on same domain for popups\r\n * as popup operations can take a long time.\r\n */\r\n ticks++;\r\n\r\n if (hash) {\r\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - found hash in url\");\r\n clearInterval(intervalId);\r\n this.cleanPopup(popupWindow);\r\n\r\n if (UrlString.hashContainsKnownProperties(hash)) {\r\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - hash contains known properties, returning.\");\r\n resolve(hash);\r\n } else {\r\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.\");\r\n this.logger.errorPii(`PopupHandler.monitorPopupForHash - hash found: ${hash}`);\r\n reject(BrowserAuthError.createHashDoesNotContainKnownPropertiesError());\r\n }\r\n } else if (ticks > maxTicks) {\r\n this.logger.error(\"PopupHandler.monitorPopupForHash - unable to find hash in url, timing out\");\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorPopupTimeoutError());\r\n }\r\n }, this.config.system.pollIntervalMilliseconds);\r\n });\r\n }\r\n\r\n /**\r\n * Waits for user interaction in logout popup window\r\n * @param popupWindow\r\n * @returns\r\n */\r\n waitForLogoutPopup(popupWindow: Window): Promise {\r\n return new Promise((resolve) => {\r\n this.logger.verbose(\"PopupHandler.waitForLogoutPopup - polling started\");\r\n\r\n const intervalId = setInterval(() => {\r\n // Window is closed\r\n if (popupWindow.closed) {\r\n this.logger.error(\"PopupHandler.waitForLogoutPopup - window closed\");\r\n this.cleanPopup();\r\n clearInterval(intervalId);\r\n resolve();\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n } catch (e) {}\r\n\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n\r\n this.logger.verbose(\"PopupHandler.waitForLogoutPopup - popup window is on same origin as caller, closing.\");\r\n\r\n clearInterval(intervalId);\r\n this.cleanPopup(popupWindow);\r\n resolve();\r\n }, this.config.system.pollIntervalMilliseconds);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n *\r\n * Configures popup window for login.\r\n *\r\n * @param urlNavigate\r\n * @param title\r\n * @param popUpWidth\r\n * @param popUpHeight\r\n * @param popupWindowAttributes\r\n * @ignore\r\n * @hidden\r\n */\r\n openPopup(urlNavigate: string, popupParams: PopupParams): Window {\r\n try {\r\n let popupWindow;\r\n // Popup window passed in, setting url to navigate to\r\n if (popupParams.popup) {\r\n popupWindow = popupParams.popup;\r\n this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`);\r\n popupWindow.location.assign(urlNavigate);\r\n } else if (typeof popupParams.popup === \"undefined\") {\r\n // Popup will be undefined if it was not passed in\r\n this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`);\r\n popupWindow = this.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes);\r\n }\r\n\r\n // Popup will be null if popups are blocked\r\n if (!popupWindow) {\r\n throw BrowserAuthError.createEmptyWindowCreatedError();\r\n }\r\n if (popupWindow.focus) {\r\n popupWindow.focus();\r\n }\r\n this.currentWindow = popupWindow;\r\n window.addEventListener(\"beforeunload\", this.unloadWindow);\r\n\r\n return popupWindow;\r\n } catch (e) {\r\n this.logger.error(\"error opening popup \" + (e as AuthError).message);\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw BrowserAuthError.createPopupWindowError((e as AuthError).toString());\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to set popup window dimensions and position\r\n * @param urlNavigate\r\n * @param popupName\r\n * @param popupWindowAttributes\r\n * @returns\r\n */\r\n openSizedPopup(urlNavigate: string, popupName: string, popupWindowAttributes: PopupWindowAttributes): Window|null {\r\n /**\r\n * adding winLeft and winTop to account for dual monitor\r\n * using screenLeft and screenTop for IE8 and earlier\r\n */\r\n const winLeft = window.screenLeft ? window.screenLeft : window.screenX;\r\n const winTop = window.screenTop ? window.screenTop : window.screenY;\r\n /**\r\n * window.innerWidth displays browser window\"s height and width excluding toolbars\r\n * using document.documentElement.clientWidth for IE8 and earlier\r\n */\r\n const winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n const winHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n\r\n let width = popupWindowAttributes.popupSize?.width;\r\n let height = popupWindowAttributes.popupSize?.height;\r\n let top = popupWindowAttributes.popupPosition?.top;\r\n let left = popupWindowAttributes.popupPosition?.left;\r\n\r\n if (!width || width < 0 || width > winWidth) {\r\n this.logger.verbose(\"Default popup window width used. Window width not configured or invalid.\");\r\n width = BrowserConstants.POPUP_WIDTH;\r\n }\r\n\r\n if (!height || height < 0 || height > winHeight) {\r\n this.logger.verbose(\"Default popup window height used. Window height not configured or invalid.\");\r\n height = BrowserConstants.POPUP_HEIGHT;\r\n }\r\n\r\n if (!top || top < 0 || top > winHeight) {\r\n this.logger.verbose(\"Default popup window top position used. Window top not configured or invalid.\");\r\n top = Math.max(0, ((winHeight / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\r\n }\r\n\r\n if (!left || left < 0 || left > winWidth) {\r\n this.logger.verbose(\"Default popup window left position used. Window left not configured or invalid.\");\r\n left = Math.max(0, ((winWidth / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\r\n }\r\n\r\n return window.open(urlNavigate, popupName, `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes`);\r\n }\r\n\r\n /**\r\n * Event callback to unload main window.\r\n */\r\n unloadWindow(e: Event): void {\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\r\n if (this.currentWindow) {\r\n this.currentWindow.close();\r\n }\r\n // Guarantees browser unload will happen, so no other errors will be thrown.\r\n e.preventDefault();\r\n }\r\n\r\n /**\r\n * Closes popup, removes any state vars created during popup calls.\r\n * @param popupWindow\r\n */\r\n cleanPopup(popupWindow?: Window): void {\r\n if (popupWindow) {\r\n // Close window.\r\n popupWindow.close();\r\n }\r\n // Remove window unload function\r\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\r\n\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n }\r\n\r\n /**\r\n * Generates the name for the popup based on the client id and request\r\n * @param clientId\r\n * @param request\r\n */\r\n generatePopupName(scopes: Array, authority: string): string {\r\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${scopes.join(\"-\")}.${authority}.${this.correlationId}`;\r\n }\r\n\r\n /**\r\n * Generates the name for the popup based on the client id and request for logouts\r\n * @param clientId\r\n * @param request\r\n */\r\n generateLogoutPopupName(request: CommonEndSessionRequest): string {\r\n const homeAccountId = request.account && request.account.homeAccountId;\r\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${homeAccountId}.${this.correlationId}`;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorizationCodeClient, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AuthenticationResult, Authority, INetworkModule, ClientAuthError, Logger, ServerError, IPerformanceClient } from \"@azure/msal-common\";\r\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\r\nimport { ApiId, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\n\r\nexport type RedirectParams = InteractionParams & {\r\n navigationClient: INavigationClient;\r\n redirectTimeout: number;\r\n redirectStartPage: string;\r\n onRedirectNavigate?: (url: string) => void | boolean;\r\n};\r\n\r\nexport class RedirectHandler extends InteractionHandler {\r\n\r\n private browserCrypto: ICrypto;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, browserCrypto: ICrypto, performanceClient: IPerformanceClient) {\r\n super(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient);\r\n this.browserCrypto = browserCrypto;\r\n }\r\n\r\n /**\r\n * Redirects window to given URL.\r\n * @param urlNavigate\r\n */\r\n async initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest called\");\r\n // Navigate if valid URL\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\r\n if (params.redirectStartPage) {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\r\n }\r\n\r\n // Set interaction status in the library.\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\r\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\r\n this.logger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`);\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: params.redirectTimeout,\r\n noHistory: false\r\n };\r\n \r\n // If onRedirectNavigate is implemented, invoke it and provide requestUrl\r\n if (typeof params.onRedirectNavigate === \"function\") {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\r\n const navigate = params.onRedirectNavigate(requestUrl);\r\n\r\n // Returning false from onRedirectNavigate will stop navigation\r\n if (navigate !== false) {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\r\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\r\n return;\r\n } else {\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\r\n return;\r\n }\r\n } else {\r\n // Navigate window to request URL\r\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\r\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\r\n return;\r\n }\r\n } else {\r\n // Throw error if request URL is empty.\r\n this.logger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n }\r\n\r\n /**\r\n * Handle authorization code response in the window.\r\n * @param hash\r\n */\r\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise {\r\n this.logger.verbose(\"RedirectHandler.handleCodeResponse called\");\r\n\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n\r\n // Handle code response.\r\n const stateKey = this.browserStorage.generateStateKey(state);\r\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n\r\n let authCodeResponse;\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n } catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n } else {\r\n throw e;\r\n }\r\n }\r\n\r\n // Get cached items\r\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n\r\n // Check for new cloud instance\r\n if (authCodeResponse.cloud_instance_host_name) {\r\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\r\n }\r\n\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n authCodeResponse.state = requestState;\r\n\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n } else {\r\n const cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n\r\n // Acquire token with retrieved code.\r\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\r\n\r\n this.browserStorage.cleanRequestByState(state);\r\n return tokenResponse;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, CommonAuthorizationCodeRequest, AuthorizationCodeClient, UrlString, AuthError, ServerTelemetryManager, Constants, ProtocolUtils, ServerAuthorizationCodeResponse, ThrottlingUtils, ICrypto, Logger, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { ApiId, InteractionType, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { RedirectHandler } from \"../interaction_handler/RedirectHandler\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\n\r\nexport class RedirectClient extends StandardInteractionClient {\r\n protected nativeStorage: BrowserCacheManager;\r\n\r\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\r\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\r\n this.nativeStorage = nativeStorageImpl;\r\n }\r\n\r\n /**\r\n * Redirects the page to the /authorize endpoint of the IDP\r\n * @param request\r\n */\r\n async acquireToken(request: RedirectRequest): Promise {\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Redirect);\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect);\r\n\r\n const handleBackButton = (event: PageTransitionEvent) => {\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n if (event.persisted) {\r\n this.logger.verbose(\"Page was restored from back/forward cache. Clearing temporary cache.\");\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n this.eventHandler.emitEvent(EventType.RESTORE_FROM_BFCACHE, InteractionType.Redirect);\r\n }\r\n };\r\n\r\n try {\r\n // Create auth code request and generate PKCE params\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\r\n\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n // Create redirect interaction handler.\r\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.browserCrypto, this.performanceClient);\r\n\r\n // Create acquire token url.\r\n const navigateUrl = await authClient.getAuthCodeUrl({\r\n ...validRequest,\r\n nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme)\r\n });\r\n\r\n const redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);\r\n this.logger.verbosePii(`Redirect start page: ${redirectStartPage}`);\r\n\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n window.addEventListener(\"pageshow\", handleBackButton);\r\n\r\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.\r\n return await interactionHandler.initiateAuthRequest(navigateUrl, {\r\n navigationClient: this.navigationClient,\r\n redirectTimeout: this.config.system.redirectNavigationTimeout,\r\n redirectStartPage: redirectStartPage,\r\n onRedirectNavigate: request.onRedirectNavigate\r\n });\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(this.correlationId);\r\n }\r\n window.removeEventListener(\"pageshow\", handleBackButton);\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Checks if navigateToLoginRequestUrl is set, and:\r\n * - if true, performs logic to cache and navigate\r\n * - if false, handles hash string and parses response\r\n * @param hash\r\n */\r\n async handleRedirectPromise(hash?: string): Promise {\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise);\r\n try {\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return null;\r\n }\r\n\r\n const responseHash = this.getRedirectResponseHash(hash || window.location.hash);\r\n if (!responseHash) {\r\n // Not a recognized server response hash or hash not associated with a redirect request\r\n this.logger.info(\"handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.\");\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return null;\r\n }\r\n\r\n let state: string;\r\n try {\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(responseHash);\r\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Redirect);\r\n this.logger.verbose(\"State extracted from hash\");\r\n } catch (e) {\r\n this.logger.info(`handleRedirectPromise was unable to extract state due to: ${e}`);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return null;\r\n }\r\n\r\n // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated\r\n const loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING;\r\n const loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);\r\n const currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);\r\n\r\n if (loginRequestUrlNormalized === currentUrlNormalized && this.config.auth.navigateToLoginRequestUrl) {\r\n // We are on the page we need to navigate to - handle hash\r\n this.logger.verbose(\"Current page is loginRequestUrl, handling hash\");\r\n const handleHashResult = await this.handleHash(responseHash, state, serverTelemetryManager);\r\n\r\n if (loginRequestUrl.indexOf(\"#\") > -1) {\r\n // Replace current hash with non-msal hash, if present\r\n BrowserUtils.replaceHash(loginRequestUrl);\r\n }\r\n\r\n return handleHashResult;\r\n } else if (!this.config.auth.navigateToLoginRequestUrl) {\r\n this.logger.verbose(\"NavigateToLoginRequestUrl set to false, handling hash\");\r\n return this.handleHash(responseHash, state, serverTelemetryManager);\r\n } else if (!BrowserUtils.isInIframe() || this.config.system.allowRedirectInIframe) {\r\n /*\r\n * Returned from authority using redirect - need to perform navigation before processing response\r\n * Cache the hash to be retrieved after the next redirect\r\n */\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.handleRedirectPromise,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: true\r\n };\r\n\r\n /**\r\n * Default behavior is to redirect to the start page and not process the hash now.\r\n * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above.\r\n */\r\n let processHashOnRedirect: boolean = true;\r\n if (!loginRequestUrl || loginRequestUrl === \"null\") {\r\n // Redirect to home page if login request url is null (real null or the string null)\r\n const homepage = BrowserUtils.getHomepage();\r\n // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);\r\n this.logger.warning(\"Unable to get valid login request url from cache, redirecting to home page\");\r\n processHashOnRedirect = await this.navigationClient.navigateInternal(homepage, navigationOptions);\r\n } else {\r\n // Navigate to page that initiated the redirect request\r\n this.logger.verbose(`Navigating to loginRequestUrl: ${loginRequestUrl}`);\r\n processHashOnRedirect = await this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions);\r\n }\r\n\r\n // If navigateInternal implementation returns false, handle the hash now\r\n if (!processHashOnRedirect) {\r\n return this.handleHash(responseHash, state, serverTelemetryManager);\r\n }\r\n }\r\n\r\n return null;\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the response hash for a redirect request\r\n * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\r\n * @param hash\r\n */\r\n protected getRedirectResponseHash(hash: string): string | null {\r\n this.logger.verbose(\"getRedirectResponseHash called\");\r\n // Get current location hash from window or cache.\r\n const isResponseHash: boolean = UrlString.hashContainsKnownProperties(hash);\r\n\r\n if (isResponseHash) {\r\n BrowserUtils.clearHash(window);\r\n this.logger.verbose(\"Hash contains known properties, returning response hash\");\r\n return hash;\r\n }\r\n\r\n const cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n\r\n this.logger.verbose(\"Hash does not contain known properties, returning cached hash\");\r\n return cachedHash;\r\n }\r\n\r\n /**\r\n * Checks if hash exists and handles in window.\r\n * @param hash\r\n * @param state\r\n */\r\n protected async handleHash(hash: string, state: string, serverTelemetryManager: ServerTelemetryManager): Promise {\r\n const cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);\r\n this.logger.verbose(\"handleHash called, retrieved cached request\");\r\n\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\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, cachedRequest.correlationId);\r\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\r\n return nativeInteractionClient.acquireToken({\r\n ...cachedRequest,\r\n state: userRequestState,\r\n prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n }).finally(() => {\r\n this.browserStorage.cleanRequestByState(state);\r\n });\r\n }\r\n\r\n // Hash contains known properties - handle and return in callback\r\n const currentAuthority = this.browserStorage.getCachedAuthority(state);\r\n if (!currentAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, cachedRequest.correlationId);\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, currentAuthority);\r\n this.logger.verbose(\"Auth code client created\");\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest);\r\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto, this.performanceClient);\r\n return await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\r\n }\r\n\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n async logout(logoutRequest?: EndSessionRequest): Promise {\r\n this.logger.verbose(\"logoutRedirect called\");\r\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout);\r\n\r\n try {\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);\r\n\r\n // Clear cache on logout\r\n await this.clearCacheOnLogout(validLogoutRequest.account);\r\n\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.logout,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, validLogoutRequest.correlationId);\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n // Create logout string and navigate user window to logout.\r\n const logoutUri: string = authClient.getLogoutUri(validLogoutRequest);\r\n\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);\r\n // Check if onRedirectNavigate is implemented, and invoke it if so\r\n if (logoutRequest && typeof logoutRequest.onRedirectNavigate === \"function\") {\r\n const navigate = logoutRequest.onRedirectNavigate(logoutUri);\r\n\r\n if (navigate !== false) {\r\n this.logger.verbose(\"Logout onRedirectNavigate did not return false, navigating\");\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\r\n return;\r\n } else {\r\n // Ensure interaction is not in progress\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\r\n }\r\n } else {\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\r\n return;\r\n }\r\n } catch(e) {\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n throw e;\r\n }\r\n\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n }\r\n\r\n /**\r\n * Use to get the redirectStartPage either from request or use current window\r\n * @param requestStartPage\r\n */\r\n protected getRedirectStartPage(requestStartPage?: string): string {\r\n const redirectStartPage = requestStartPage || window.location.href;\r\n return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient, Constants, Logger, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { InteractionHandler } from \"./InteractionHandler\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserSystemOptions, DEFAULT_IFRAME_TIMEOUT_MS } from \"../config/Configuration\";\r\n\r\nexport class SilentHandler extends InteractionHandler {\r\n\r\n private navigateFrameWait: number;\r\n private pollIntervalMilliseconds: number;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, systemOptions: Required>, performanceClient: IPerformanceClient) {\r\n super(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient);\r\n this.navigateFrameWait = systemOptions.navigateFrameWait;\r\n this.pollIntervalMilliseconds = systemOptions.pollIntervalMilliseconds;\r\n }\r\n\r\n /**\r\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\r\n * @param urlNavigate\r\n * @param userRequestScopes\r\n */\r\n async initiateAuthRequest(requestUrl: string): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerInitiateAuthRequest, this.authCodeRequest.correlationId);\r\n\r\n if (StringUtils.isEmpty(requestUrl)) {\r\n // Throw error if request URL is empty.\r\n this.logger.info(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n\r\n if (this.navigateFrameWait) {\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerLoadFrame, this.authCodeRequest.correlationId);\r\n return await this.loadFrame(requestUrl);\r\n }\r\n return this.loadFrameSync(requestUrl);\r\n }\r\n\r\n /**\r\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param iframe\r\n * @param timeout\r\n */\r\n monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerMonitorIframeForHash, this.authCodeRequest.correlationId);\r\n\r\n return new Promise((resolve, reject) => {\r\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\r\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.`);\r\n }\r\n\r\n /*\r\n * Polling for iframes can be purely timing based,\r\n * since we don't need to account for interaction.\r\n */\r\n const nowMark = window.performance.now();\r\n const timeoutMark = nowMark + timeout;\r\n\r\n const intervalId = setInterval(() => {\r\n if (window.performance.now() > timeoutMark) {\r\n this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\r\n return;\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n const contentWindow = iframe.contentWindow;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\r\n } catch (e) {}\r\n\r\n if (StringUtils.isEmpty(href)) {\r\n return;\r\n }\r\n\r\n const contentHash = contentWindow ? contentWindow.location.hash: Constants.EMPTY_STRING;\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n // Success case\r\n this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n resolve(contentHash);\r\n return;\r\n }\r\n }, this.pollIntervalMilliseconds);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Loads iframe with authorization endpoint URL\r\n * @ignore\r\n */\r\n private loadFrame(urlNavigate: string): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerLoadFrame, this.authCodeRequest.correlationId);\r\n\r\n /*\r\n * This trick overcomes iframe navigation in IE\r\n * IE does not load the page consistently in iframe\r\n */\r\n\r\n return new Promise((resolve, reject) => {\r\n const frameHandle = this.createHiddenIframe();\r\n\r\n setTimeout(() => {\r\n if (!frameHandle) {\r\n reject(\"Unable to load iframe\");\r\n return;\r\n }\r\n\r\n frameHandle.src = urlNavigate;\r\n\r\n resolve(frameHandle);\r\n }, this.navigateFrameWait);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\r\n * @param urlNavigate\r\n * @param frameName\r\n * @param logger\r\n */\r\n private loadFrameSync(urlNavigate: string): HTMLIFrameElement{\r\n const frameHandle = this.createHiddenIframe();\r\n\r\n frameHandle.src = urlNavigate;\r\n\r\n return frameHandle;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\r\n * @ignore\r\n */\r\n private createHiddenIframe(): HTMLIFrameElement {\r\n const authFrame = document.createElement(\"iframe\");\r\n\r\n authFrame.style.visibility = \"hidden\";\r\n authFrame.style.position = \"absolute\";\r\n authFrame.style.width = authFrame.style.height = \"0\";\r\n authFrame.style.border = \"0\";\r\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\r\n\r\n return authFrame;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Removes a hidden iframe from the page.\r\n * @ignore\r\n */\r\n private removeHiddenIframe(iframe: HTMLIFrameElement): void {\r\n if (document.body === iframe.parentNode) {\r\n document.body.removeChild(iframe);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, ICrypto, Logger, StringUtils, PromptValue, CommonAuthorizationCodeRequest, AuthorizationCodeClient, AuthError, Constants, UrlString, ServerAuthorizationCodeResponse, ProtocolUtils, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\r\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\r\n\r\nexport class SilentIframeClient extends StandardInteractionClient {\r\n protected apiId: ApiId;\r\n protected nativeStorage: BrowserCacheManager;\r\n\r\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\r\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\r\n this.apiId = apiId;\r\n this.nativeStorage = nativeStorageImpl;\r\n }\r\n\r\n /**\r\n * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session\r\n * @param request\r\n */\r\n async acquireToken(request: SsoSilentRequest): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n this.logger.verbose(\"acquireTokenByIframe called\");\r\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n // Check that we have some SSO data\r\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\r\n this.logger.warning(\"No user hint provided. The authorization server may need more information to complete this request.\");\r\n }\r\n\r\n // Check that prompt is set to none or no_session, throw error if it is set to anything else.\r\n if (request.prompt && (request.prompt !== PromptValue.NONE) && (request.prompt !== PromptValue.NO_SESSION)) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\r\n }\r\n\r\n // Create silent request\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest({\r\n ...request,\r\n prompt: request.prompt || PromptValue.NONE\r\n }, InteractionType.Silent);\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n\r\n try {\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentIframeClientTokenHelper, request.correlationId);\r\n return await this.silentTokenHelper(authClient, silentRequest).then((result: AuthenticationResult) => {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: false,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n });\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: e instanceof AuthError && e.errorCode || undefined,\r\n subErrorCode: e instanceof AuthError && e.subError || undefined,\r\n success: false\r\n });\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Currently Unsupported\r\n */\r\n logout(): Promise {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n }\r\n\r\n /**\r\n * Helper which acquires an authorization code silently using a hidden iframe from given url\r\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\r\n * @param navigateUrl\r\n * @param userRequestScopes\r\n */\r\n protected async silentTokenHelper(authClient: AuthorizationCodeClient, silentRequest: AuthorizationUrlRequest): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientTokenHelper, silentRequest.correlationId);\r\n\r\n // Create auth code request and generate PKCE params\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, silentRequest.correlationId);\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);\r\n // Create authorize request url\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.GetAuthCodeUrl, silentRequest.correlationId);\r\n const navigateUrl = await authClient.getAuthCodeUrl({\r\n ...silentRequest,\r\n nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme)\r\n });\r\n\r\n // Create silent handler\r\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system, this.performanceClient);\r\n // Get the frame handle for the silent request\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerInitiateAuthRequest, silentRequest.correlationId);\r\n const msalFrame = await silentHandler.initiateAuthRequest(navigateUrl);\r\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.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerMonitorIframeForHash, silentRequest.correlationId);\r\n const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);\r\n\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\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);\r\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\r\n return nativeInteractionClient.acquireToken({\r\n ...silentRequest,\r\n state: userRequestState,\r\n prompt: silentRequest.prompt || PromptValue.NONE\r\n }).finally(() => {\r\n this.browserStorage.cleanRequestByState(state);\r\n });\r\n }\r\n\r\n // Handle response from hash string\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.HandleCodeResponseFromHash, silentRequest.correlationId);\r\n return silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { CommonSilentFlowRequest, AuthenticationResult, ServerTelemetryManager, RefreshTokenClient, AuthError, AzureCloudOptions, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { ApiId } from \"../utils/BrowserConstants\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\nexport class SilentRefreshClient extends StandardInteractionClient {\r\n /**\r\n * Exchanges the refresh token for new tokens\r\n * @param request\r\n */\r\n async acquireToken(request: CommonSilentFlowRequest): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, request.correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, request.correlationId);\r\n const silentRequest: CommonSilentFlowRequest = {\r\n ...request,\r\n ...await this.initializeBaseRequest(request, request.account)\r\n };\r\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n\r\n const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\r\n this.logger.verbose(\"Refresh token client created\");\r\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n return refreshTokenClient.acquireTokenByRefreshToken(silentRequest)\r\n .then((result: AuthenticationResult) => {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache,\r\n requestId: result.requestId\r\n });\r\n\r\n return result;\r\n })\r\n .catch((e: AuthError) => {\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n acquireTokenMeasurement.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n throw e;\r\n });\r\n }\r\n\r\n /**\r\n * Currently Unsupported\r\n */\r\n logout(): Promise {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n }\r\n\r\n /**\r\n * Creates a Refresh Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise {\r\n // Create auth module.\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\r\n return new RefreshTokenClient(clientConfig, this.performanceClient);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccessTokenEntity, ICrypto, IdTokenEntity, Logger, ScopeSet, Authority, AuthorityOptions, ExternalTokenResponse, AccountEntity, AuthToken, RefreshTokenEntity , AuthorityType, CacheRecord, AuthenticationResult, Constants } from \"@azure/msal-common\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { BrowserCacheManager } from \"./BrowserCacheManager\";\r\nimport { ITokenCache } from \"./ITokenCache\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\nexport type LoadTokenOptions = {\r\n clientInfo?: string,\r\n expiresOn?: number,\r\n extendedExpiresOn?: number\r\n};\r\n\r\n/**\r\n * Token cache manager\r\n */\r\nexport class TokenCache implements ITokenCache {\r\n // Flag to indicate if in browser environment\r\n public isBrowserEnvironment: boolean;\r\n // Input configuration by developer/user\r\n protected config: BrowserConfiguration;\r\n // Browser cache storage\r\n private storage: BrowserCacheManager;\r\n // Logger\r\n private logger: Logger;\r\n // Crypto class\r\n private cryptoObj: ICrypto;\r\n\r\n constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto) {\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n this.config = configuration;\r\n this.storage = storage;\r\n this.logger = logger;\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n // Move getAllAccounts here and cache utility APIs\r\n\r\n /**\r\n * API to load tokens to msal-browser cache.\r\n * @param request\r\n * @param response\r\n * @param options\r\n * @returns `AuthenticationResult` for the response that was loaded.\r\n */\r\n loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): AuthenticationResult {\r\n this.logger.info(\"TokenCache - loadExternalTokens called\");\r\n\r\n if (!response.id_token) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\r\n }\r\n\r\n const idToken = new AuthToken(response.id_token, this.cryptoObj);\r\n\r\n let cacheRecord: CacheRecord | undefined;\r\n let authority: Authority | undefined;\r\n\r\n if (request.account) {\r\n const cacheRecordAccount = this.loadAccount(idToken, request.account.environment, undefined, undefined, request.account.homeAccountId);\r\n cacheRecord = new CacheRecord(\r\n cacheRecordAccount,\r\n this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId),\r\n this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId, options),\r\n this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment)\r\n );\r\n } else if (request.authority) {\r\n\r\n const authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);\r\n const authorityOptions: AuthorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,\r\n };\r\n authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger);\r\n\r\n // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\r\n if (options.clientInfo) {\r\n this.logger.trace(\"TokenCache - homeAccountId from options\");\r\n const cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, options.clientInfo, authority.authorityType);\r\n cacheRecord = new CacheRecord(\r\n cacheRecordAccount,\r\n this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant),\r\n this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options),\r\n this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort)\r\n );\r\n } else if (response.client_info) {\r\n this.logger.trace(\"TokenCache - homeAccountId from response\");\r\n const cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, response.client_info, authority.authorityType);\r\n cacheRecord = new CacheRecord(\r\n cacheRecordAccount,\r\n this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant),\r\n this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options),\r\n this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort)\r\n );\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\r\n }\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\r\n }\r\n\r\n return this.generateAuthenticationResult(request, idToken, cacheRecord, authority);\r\n }\r\n\r\n /**\r\n * Helper function to load account to msal-browser cache\r\n * @param idToken\r\n * @param environment\r\n * @param clientInfo\r\n * @param authorityType\r\n * @param requestHomeAccountId\r\n * @returns `AccountEntity`\r\n */\r\n private loadAccount(idToken: AuthToken, environment: string, clientInfo?: string, authorityType?: AuthorityType, requestHomeAccountId?: string): AccountEntity {\r\n\r\n let homeAccountId;\r\n if (requestHomeAccountId) {\r\n homeAccountId = requestHomeAccountId;\r\n } else if (authorityType !== undefined && clientInfo) {\r\n homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authorityType, this.logger, this.cryptoObj, idToken);\r\n }\r\n\r\n if (!homeAccountId) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Unexpected missing homeAccountId\");\r\n }\r\n\r\n const accountEntity = clientInfo ?\r\n AccountEntity.createAccount(clientInfo, homeAccountId, idToken, undefined, undefined, undefined, environment) :\r\n AccountEntity.createGenericAccount(homeAccountId, idToken, undefined, undefined, undefined, environment);\r\n\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading account\");\r\n\r\n this.storage.setAccount(accountEntity);\r\n return accountEntity;\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to load id tokens to msal-browser cache\r\n * @param idToken\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @returns `IdTokenEntity`\r\n */\r\n private loadIdToken(idToken: AuthToken, homeAccountId: string, environment: string, tenantId: string): IdTokenEntity {\r\n\r\n const idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken.rawToken, this.config.auth.clientId, tenantId);\r\n\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading id token\");\r\n this.storage.setIdTokenCredential(idTokenEntity);\r\n return idTokenEntity;\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to load access tokens to msal-browser cache\r\n * @param request\r\n * @param response\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @returns `AccessTokenEntity`\r\n */\r\n private loadAccessToken(request: SilentRequest, response: ExternalTokenResponse, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): AccessTokenEntity | null {\r\n\r\n if (!response.access_token) {\r\n this.logger.verbose(\"TokenCache - No access token provided for caching\");\r\n return null;\r\n }\r\n\r\n if (!response.expires_in) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\r\n }\r\n\r\n if (!options.extendedExpiresOn) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\r\n }\r\n\r\n const scopes = new ScopeSet(request.scopes).printScopes();\r\n const expiresOn = options.expiresOn || (response.expires_in + new Date().getTime() / 1000);\r\n const extendedExpiresOn = options.extendedExpiresOn;\r\n\r\n const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\r\n\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading access token\");\r\n this.storage.setAccessTokenCredential(accessTokenEntity);\r\n return accessTokenEntity;\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to load refresh tokens to msal-browser cache\r\n * @param request\r\n * @param response\r\n * @param homeAccountId\r\n * @param environment\r\n * @returns `RefreshTokenEntity`\r\n */\r\n private loadRefreshToken(request: SilentRequest, response: ExternalTokenResponse, homeAccountId: string, environment: string): RefreshTokenEntity | null {\r\n\r\n if (!response.refresh_token) {\r\n this.logger.verbose(\"TokenCache - No refresh token provided for caching\");\r\n return null;\r\n }\r\n\r\n const refreshTokenEntity = RefreshTokenEntity.createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId);\r\n\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading refresh token\");\r\n this.storage.setRefreshTokenCredential(refreshTokenEntity);\r\n return refreshTokenEntity;\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to generate an `AuthenticationResult` for the result.\r\n * @param request\r\n * @param idTokenObj\r\n * @param cacheRecord\r\n * @param authority\r\n * @returns `AuthenticationResult`\r\n */\r\n private generateAuthenticationResult(\r\n request: SilentRequest,\r\n idTokenObj: AuthToken,\r\n cacheRecord?: CacheRecord,\r\n authority?: Authority,\r\n ): AuthenticationResult {\r\n let accessToken: string = Constants.EMPTY_STRING;\r\n let responseScopes: Array = [];\r\n let expiresOn: Date | null = null;\r\n let extExpiresOn: Date | undefined;\r\n\r\n if (cacheRecord?.accessToken) {\r\n accessToken = cacheRecord.accessToken.secret;\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n }\r\n\r\n const uid = idTokenObj?.claims.oid || idTokenObj?.claims.sub || Constants.EMPTY_STRING;\r\n const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;\r\n\r\n return {\r\n authority: authority ? authority.canonicalAuthority : Constants.EMPTY_STRING,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: cacheRecord?.account ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: true,\r\n expiresOn: expiresOn,\r\n correlationId: request.correlationId || Constants.EMPTY_STRING,\r\n requestId: Constants.EMPTY_STRING,\r\n extExpiresOn: extExpiresOn,\r\n familyId: Constants.EMPTY_STRING,\r\n tokenType: cacheRecord?.accessToken?.tokenType || Constants.EMPTY_STRING,\r\n state: Constants.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord?.account?.cloudGraphHostName || Constants.EMPTY_STRING,\r\n msGraphHost: cacheRecord?.account?.msGraphHost || Constants.EMPTY_STRING,\r\n code: undefined,\r\n fromNativeBroker: false\r\n };\r\n }\r\n}\r\n\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorizationCodeClient, ClientConfiguration } from \"@azure/msal-common\";\r\n\r\nexport class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient {\r\n constructor(config: ClientConfiguration) {\r\n super(config);\r\n this.includeRedirectUri = false;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, ICrypto, Logger, CommonAuthorizationCodeRequest, AuthError, Constants, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\r\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\r\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\r\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\r\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\r\nimport { HybridSpaAuthorizationCodeClient } from \"./HybridSpaAuthorizationCodeClient\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\n\r\nexport class SilentAuthCodeClient extends StandardInteractionClient {\r\n private apiId: ApiId;\r\n\r\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\r\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\r\n this.apiId = apiId;\r\n }\r\n\r\n /**\r\n * Acquires a token silently by redeeming an authorization code against the /token endpoint\r\n * @param request\r\n */\r\n async acquireToken(request: AuthorizationCodeRequest): Promise {\r\n this.logger.trace(\"SilentAuthCodeClient.acquireToken called\");\r\n\r\n // Auth code payload is required\r\n if (!request.code) {\r\n throw BrowserAuthError.createAuthCodeRequiredError();\r\n\r\n }\r\n\r\n // Create silent request\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);\r\n const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest(request, InteractionType.Silent);\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n\r\n try {\r\n\r\n // Create auth code request (PKCE not needed)\r\n const authCodeRequest: CommonAuthorizationCodeRequest = {\r\n ...silentRequest,\r\n code: request.code\r\n };\r\n\r\n // Initialize the client\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, request.correlationId);\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, silentRequest.authority);\r\n const authClient: HybridSpaAuthorizationCodeClient = new HybridSpaAuthorizationCodeClient(clientConfig);\r\n this.logger.verbose(\"Auth code client created\");\r\n\r\n // Create silent handler\r\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system, this.performanceClient);\r\n\r\n // Handle auth code parameters from request\r\n return silentHandler.handleCodeResponseFromServer(\r\n {\r\n code: request.code,\r\n msgraph_host: request.msGraphHost,\r\n cloud_graph_host_name: request.cloudGraphHostName,\r\n cloud_instance_host_name: request.cloudInstanceHostName\r\n },\r\n silentRequest.state,\r\n authClient.authority,\r\n this.networkClient,\r\n false\r\n );\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n (e as AuthError).setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Currently Unsupported\r\n */\r\n logout(): Promise {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IPerformanceMeasurement, SubMeasurement } from \"@azure/msal-common\";\r\n\r\nexport class BrowserPerformanceMeasurement implements IPerformanceMeasurement {\r\n private readonly measureName: string;\r\n private readonly correlationId: string;\r\n private readonly startMark: string;\r\n private readonly endMark: string;\r\n\r\n constructor(name: string, correlationId: string) {\r\n this.correlationId = correlationId;\r\n this.measureName = BrowserPerformanceMeasurement.makeMeasureName(name, correlationId);\r\n this.startMark = BrowserPerformanceMeasurement.makeStartMark(name, correlationId);\r\n this.endMark = BrowserPerformanceMeasurement.makeEndMark(name, correlationId);\r\n }\r\n\r\n private static makeMeasureName(name: string, correlationId: string) {\r\n return `msal.measure.${name}.${correlationId}`;\r\n }\r\n\r\n private static makeStartMark(name: string, correlationId: string) {\r\n return `msal.start.${name}.${correlationId}`;\r\n }\r\n\r\n private static makeEndMark(name: string, correlationId: string) {\r\n return `msal.end.${name}.${correlationId}`;\r\n }\r\n\r\n static supportsBrowserPerformance(): boolean {\r\n return typeof window !== \"undefined\" &&\r\n typeof window.performance !== \"undefined\" &&\r\n typeof window.performance.mark === \"function\" &&\r\n typeof window.performance.measure === \"function\" &&\r\n typeof window.performance.clearMarks === \"function\" &&\r\n typeof window.performance.clearMeasures === \"function\" &&\r\n typeof window.performance.getEntriesByName === \"function\";\r\n }\r\n\r\n /**\r\n * Flush browser marks and measurements.\r\n * @param {string} correlationId\r\n * @param {SubMeasurement} measurements\r\n */\r\n public static flushMeasurements(correlationId: string, measurements: SubMeasurement[]): void {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n measurements.forEach((measurement) => {\r\n const measureName = BrowserPerformanceMeasurement.makeMeasureName(measurement.name, correlationId);\r\n const entriesForMeasurement = window.performance.getEntriesByName(measureName, \"measure\");\r\n if (entriesForMeasurement.length > 0) {\r\n window.performance.clearMeasures(measureName);\r\n window.performance.clearMarks(BrowserPerformanceMeasurement.makeStartMark(measureName, correlationId));\r\n window.performance.clearMarks(BrowserPerformanceMeasurement.makeEndMark(measureName, correlationId));\r\n }\r\n });\r\n } catch (e) {\r\n // Silently catch and return null\r\n }\r\n }\r\n }\r\n\r\n startMeasurement(): void {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.startMark);\r\n } catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n }\r\n\r\n endMeasurement():void {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.endMark);\r\n window.performance.measure(this.measureName, this.startMark, this.endMark);\r\n } catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n }\r\n\r\n flushMeasurement(): number | null {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n const entriesForMeasurement = window.performance.getEntriesByName(this.measureName, \"measure\");\r\n if (entriesForMeasurement.length > 0) {\r\n const durationMs = entriesForMeasurement[0].duration;\r\n window.performance.clearMeasures(this.measureName);\r\n window.performance.clearMarks(this.startMark);\r\n window.performance.clearMarks(this.endMark);\r\n return durationMs;\r\n }\r\n } catch (e) {\r\n // Silently catch and return null\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport {\r\n Logger,\r\n PerformanceEvent,\r\n PerformanceEvents,\r\n IPerformanceClient,\r\n PerformanceClient,\r\n IPerformanceMeasurement,\r\n InProgressPerformanceEvent,\r\n ApplicationTelemetry,\r\n SubMeasurement,\r\n PreQueueEvent\r\n} from \"@azure/msal-common\";\r\nimport { CryptoOptions } from \"../config/Configuration\";\r\nimport { BrowserCrypto } from \"../crypto/BrowserCrypto\";\r\nimport { GuidGenerator } from \"../crypto/GuidGenerator\";\r\nimport { BrowserPerformanceMeasurement } from \"./BrowserPerformanceMeasurement\";\r\n\r\nexport class BrowserPerformanceClient extends PerformanceClient implements IPerformanceClient {\r\n private browserCrypto: BrowserCrypto;\r\n private guidGenerator: GuidGenerator;\r\n\r\n constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry, cryptoOptions: CryptoOptions) {\r\n super(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry);\r\n this.browserCrypto = new BrowserCrypto(this.logger, cryptoOptions);\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n }\r\n\r\n startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement {\r\n return new BrowserPerformanceMeasurement(measureName, correlationId);\r\n }\r\n\r\n generateId() : string {\r\n return this.guidGenerator.generateGuid();\r\n }\r\n\r\n private getPageVisibility(): string | null {\r\n return document.visibilityState?.toString() || null;\r\n }\r\n\r\n private deleteIncompleteSubMeasurements(inProgressEvent: InProgressPerformanceEvent): void {\r\n const rootEvent = this.eventsByCorrelationId.get(inProgressEvent.event.correlationId);\r\n const isRootEvent = rootEvent && rootEvent.eventId === inProgressEvent.event.eventId;\r\n const incompleteMeasurements: SubMeasurement[] = [];\r\n if (isRootEvent && rootEvent?.incompleteSubMeasurements) {\r\n rootEvent.incompleteSubMeasurements.forEach((subMeasurement) => {\r\n incompleteMeasurements.push({...subMeasurement});\r\n });\r\n }\r\n // Clean up remaining marks for incomplete sub-measurements\r\n if (incompleteMeasurements.length > 0) {\r\n BrowserPerformanceMeasurement.flushMeasurements(inProgressEvent.event.correlationId, incompleteMeasurements);\r\n }\r\n }\r\n\r\n supportsBrowserPerformanceNow(): boolean {\r\n return typeof window !== \"undefined\" &&\r\n typeof window.performance !== \"undefined\" &&\r\n typeof window.performance.now === \"function\";\r\n }\r\n\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n * Also captures browser page visibilityState.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {((event?: Partial) => PerformanceEvent| null)}\r\n */\r\n startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\r\n // Capture page visibilityState and then invoke start/end measurement\r\n const startPageVisibility = this.getPageVisibility();\r\n\r\n const inProgressEvent = super.startMeasurement(measureName, correlationId);\r\n\r\n return {\r\n ...inProgressEvent,\r\n endMeasurement: (event?: Partial): PerformanceEvent | null => {\r\n const res = inProgressEvent.endMeasurement({\r\n startPageVisibility,\r\n endPageVisibility: this.getPageVisibility(),\r\n ...event\r\n });\r\n this.deleteIncompleteSubMeasurements(inProgressEvent);\r\n\r\n return res;\r\n },\r\n discardMeasurement: () => {\r\n inProgressEvent.discardMeasurement();\r\n this.deleteIncompleteSubMeasurements(inProgressEvent);\r\n inProgressEvent.measurement.flushMeasurement();\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Adds pre-queue time to preQueueTimeByCorrelationId map.\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @returns\r\n */\r\n setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void {\r\n if (!this.supportsBrowserPerformanceNow()) {\r\n this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to set telemetry queue time for ${eventName}`);\r\n return;\r\n }\r\n\r\n if (!correlationId) {\r\n this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to set telemetry queue time`);\r\n return;\r\n }\r\n\r\n const preQueueEvent: PreQueueEvent | undefined = this.preQueueTimeByCorrelationId.get(correlationId);\r\n /**\r\n * Manually complete queue measurement if there is an incomplete pre-queue event.\r\n * Incomplete pre-queue events are instrumentation bugs that should be fixed.\r\n */\r\n if (preQueueEvent) {\r\n this.logger.trace(`BrowserPerformanceClient: Incomplete pre-queue ${preQueueEvent.name} found`, correlationId);\r\n this.addQueueMeasurement(preQueueEvent.name, correlationId, undefined, true);\r\n }\r\n this.preQueueTimeByCorrelationId.set(correlationId, { name: eventName, time: window.performance.now() });\r\n }\r\n\r\n /**\r\n * Calculates and adds queue time measurement for given performance event.\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @param {?number} queueTime\r\n * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements\r\n * @returns\r\n */\r\n addQueueMeasurement(eventName: PerformanceEvents, correlationId?: string, queueTime?: number, manuallyCompleted?: boolean): void {\r\n if (!this.supportsBrowserPerformanceNow()) {\r\n this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to add queue measurement for ${eventName}`);\r\n return;\r\n }\r\n\r\n if (!correlationId) {\r\n this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to add queue measurement`);\r\n return;\r\n }\r\n\r\n const preQueueTime = super.getPreQueueTime(eventName, correlationId);\r\n if (!preQueueTime) {\r\n return;\r\n }\r\n\r\n const currentTime = window.performance.now();\r\n const resQueueTime = queueTime || super.calculateQueuedTime(preQueueTime, currentTime);\r\n\r\n return super.addQueueMeasurement(eventName, correlationId, resQueueTime, manuallyCompleted);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CryptoOps } from \"../crypto/CryptoOps\";\r\nimport { InteractionRequiredAuthError, AccountInfo, Constants, INetworkModule, AuthenticationResult, Logger, CommonSilentFlowRequest, ICrypto, DEFAULT_CRYPTO_IMPLEMENTATION, AuthError, PerformanceEvents, PerformanceCallbackFunction, StubPerformanceClient, IPerformanceClient, BaseAuthRequest, PromptValue, ClientAuthError, InProgressPerformanceEvent } from \"@azure/msal-common\";\r\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserConfiguration, buildConfiguration, CacheOptions, Configuration } from \"../config/Configuration\";\r\nimport { InteractionType, ApiId, BrowserCacheLocation, WrapperSKU, TemporaryCacheKeys, CacheLookupPolicy } from \"../utils/BrowserConstants\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { version, name } from \"../packageMetadata\";\r\nimport { EventCallbackFunction } from \"../event/EventMessage\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { EventHandler } from \"../event/EventHandler\";\r\nimport { PopupClient } from \"../interaction_client/PopupClient\";\r\nimport { RedirectClient } from \"../interaction_client/RedirectClient\";\r\nimport { SilentIframeClient } from \"../interaction_client/SilentIframeClient\";\r\nimport { SilentRefreshClient } from \"../interaction_client/SilentRefreshClient\";\r\nimport { TokenCache } from \"../cache/TokenCache\";\r\nimport { ITokenCache } from \"../cache/ITokenCache\";\r\nimport { NativeInteractionClient } from \"../interaction_client/NativeInteractionClient\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { NativeAuthError } from \"../error/NativeAuthError\";\r\nimport { SilentCacheClient } from \"../interaction_client/SilentCacheClient\";\r\nimport { SilentAuthCodeClient } from \"../interaction_client/SilentAuthCodeClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\r\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\r\nimport { BrowserPerformanceClient } from \"../telemetry/BrowserPerformanceClient\";\r\n\r\nexport abstract class ClientApplication {\r\n\r\n // Crypto interface implementation\r\n protected readonly browserCrypto: ICrypto;\r\n\r\n // Storage interface implementation\r\n protected readonly browserStorage: BrowserCacheManager;\r\n\r\n // Native Cache in memory storage implementation\r\n protected readonly nativeInternalStorage: BrowserCacheManager;\r\n\r\n // Network interface implementation\r\n protected readonly networkClient: INetworkModule;\r\n\r\n // Navigation interface implementation\r\n protected navigationClient: INavigationClient;\r\n\r\n // Input configuration by developer/user\r\n protected config: BrowserConfiguration;\r\n\r\n // Token cache implementation\r\n private tokenCache: TokenCache;\r\n\r\n // Logger\r\n protected logger: Logger;\r\n\r\n // Flag to indicate if in browser environment\r\n protected isBrowserEnvironment: boolean;\r\n\r\n protected eventHandler: EventHandler;\r\n\r\n // Redirect Response Object\r\n protected redirectResponse: Map>;\r\n\r\n // Native Extension Provider\r\n protected nativeExtensionProvider: NativeMessageHandler | undefined;\r\n\r\n // Hybrid auth code responses\r\n private hybridAuthCodeResponses: Map>;\r\n\r\n // Performance telemetry client\r\n protected performanceClient: IPerformanceClient;\r\n\r\n // Flag representing whether or not the initialize API has been called and completed\r\n protected initialized: boolean;\r\n\r\n private ssoSilentMeasurement?: InProgressPerformanceEvent;\r\n private acquireTokenByCodeAsyncMeasurement?: InProgressPerformanceEvent;\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\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\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\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).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration Object for the MSAL PublicClientApplication instance\r\n */\r\n constructor(configuration: Configuration) {\r\n /*\r\n * If loaded in an environment where window is not available,\r\n * set internal flag to false so that further requests fail.\r\n * This is to support server-side rendering environments.\r\n */\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n // Set the configuration.\r\n this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\r\n this.initialized = false;\r\n\r\n // Initialize logger\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n\r\n // Initialize the network module class.\r\n this.networkClient = this.config.system.networkClient;\r\n\r\n // Initialize the navigation client class.\r\n this.navigationClient = this.config.system.navigationClient;\r\n\r\n // Initialize redirectResponse Map\r\n this.redirectResponse = new Map();\r\n\r\n // Initial hybrid spa map\r\n this.hybridAuthCodeResponses = new Map();\r\n\r\n // Initialize performance client\r\n this.performanceClient = this.isBrowserEnvironment ?\r\n new BrowserPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application, this.config.system.cryptoOptions) :\r\n new StubPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application);\r\n\r\n // Initialize the crypto class.\r\n this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger, this.performanceClient, this.config.system.cryptoOptions) : DEFAULT_CRYPTO_IMPLEMENTATION;\r\n\r\n this.eventHandler = new EventHandler(this.logger, this.browserCrypto);\r\n\r\n // Initialize the browser storage class.\r\n this.browserStorage = this.isBrowserEnvironment ?\r\n new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger) :\r\n DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\r\n\r\n // initialize in memory storage for native flows\r\n const nativeCacheOptions: Required = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n temporaryCacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false,\r\n cacheMigrationEnabled: false,\r\n claimsBasedCachingEnabled: true\r\n };\r\n this.nativeInternalStorage = new BrowserCacheManager(this.config.auth.clientId, nativeCacheOptions, this.browserCrypto, this.logger);\r\n\r\n // Initialize the token cache\r\n this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);\r\n // Register listener functions\r\n this.trackPageVisibilityWithMeasurement = this.trackPageVisibilityWithMeasurement.bind(this);\r\n }\r\n\r\n /**\r\n * Initializer function to perform async startup tasks such as connecting to WAM extension\r\n */\r\n async initialize(): Promise {\r\n this.logger.trace(\"initialize called\");\r\n if (this.initialized) {\r\n this.logger.info(\"initialize has already been called, exiting early.\");\r\n return;\r\n }\r\n\r\n const allowNativeBroker = this.config.system.allowNativeBroker;\r\n const initMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.InitializeClientApplication);\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_START);\r\n\r\n if (allowNativeBroker) {\r\n try {\r\n this.nativeExtensionProvider = await NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout, this.performanceClient);\r\n } catch (e) {\r\n this.logger.verbose(e);\r\n }\r\n }\r\n this.initialized = true;\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_END);\r\n\r\n initMeasurement.endMeasurement({allowNativeBroker, success: true});\r\n }\r\n\r\n // #region Redirect Flow\r\n\r\n /**\r\n * Event handler function which allows users to fire events after the PublicClientApplication object\r\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\r\n * auth flows.\r\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.\r\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\r\n */\r\n async handleRedirectPromise(hash?: string): Promise {\r\n this.logger.verbose(\"handleRedirectPromise called\");\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n\r\n const loggedInAccounts = this.getAllAccounts();\r\n if (this.isBrowserEnvironment) {\r\n /**\r\n * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise,\r\n * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called\r\n * several times concurrently.\r\n */\r\n const redirectResponseKey = hash || Constants.EMPTY_STRING;\r\n let response = this.redirectResponse.get(redirectResponseKey);\r\n if (typeof response === \"undefined\") {\r\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\r\n this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\r\n\r\n const request: NativeTokenRequest | null = this.browserStorage.getCachedNativeRequest();\r\n let redirectResponse: Promise;\r\n if (request && NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider) && this.nativeExtensionProvider && !hash) {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from native platform\");\r\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);\r\n redirectResponse = nativeClient.handleRedirectPromise();\r\n } else {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from web flow\");\r\n const correlationId = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || Constants.EMPTY_STRING;\r\n const redirectClient = this.createRedirectClient(correlationId);\r\n redirectResponse = redirectClient.handleRedirectPromise(hash);\r\n }\r\n\r\n response = redirectResponse.then((result: AuthenticationResult | null) => {\r\n if (result) {\r\n // Emit login event if number of accounts change\r\n\r\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\r\n this.logger.verbose(\"handleRedirectResponse returned result, login success\");\r\n } else {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\r\n this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\r\n }\r\n }\r\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n\r\n return result;\r\n }).catch((e) => {\r\n // Emit login event if there is an account\r\n if (loggedInAccounts.length > 0) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n\r\n throw e;\r\n });\r\n this.redirectResponse.set(redirectResponseKey, response);\r\n } else {\r\n this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\r\n }\r\n\r\n return response;\r\n }\r\n this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\r\n return null;\r\n }\r\n\r\n /**\r\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\r\n * the page, so any code that follows this function will not execute.\r\n *\r\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\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n async acquireTokenRedirect(request: RedirectRequest): Promise {\r\n // Preflight request\r\n const correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"acquireTokenRedirect called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n\r\n // If logged in, emit acquire token events\r\n const isLoggedIn = this.getAllAccounts().length > 0;\r\n if (isLoggedIn) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\r\n }\r\n\r\n let result: Promise;\r\n\r\n if (this.nativeExtensionProvider && this.canUseNative(request)) {\r\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);\r\n result = nativeClient.acquireTokenRedirect(request).catch((e: AuthError) => {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n const redirectClient = this.createRedirectClient(request.correlationId);\r\n return redirectClient.acquireToken(request);\r\n } else if (e instanceof InteractionRequiredAuthError) {\r\n this.logger.verbose(\"acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow\");\r\n const redirectClient = this.createRedirectClient(request.correlationId);\r\n return redirectClient.acquireToken(request);\r\n }\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw e;\r\n });\r\n } else {\r\n const redirectClient = this.createRedirectClient(request.correlationId);\r\n result = redirectClient.acquireToken(request);\r\n }\r\n\r\n return result.catch((e) => {\r\n // If logged in, emit acquire token events\r\n if (isLoggedIn) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n throw e;\r\n });\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Popup Flow\r\n\r\n /**\r\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n acquireTokenPopup(request: PopupRequest): Promise {\r\n const correlationId = this.getRequestCorrelationId(request);\r\n const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId);\r\n\r\n try {\r\n this.logger.verbose(\"acquireTokenPopup called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n } catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n\r\n // If logged in, emit acquire token events\r\n const loggedInAccounts = this.getAllAccounts();\r\n if (loggedInAccounts.length > 0) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Popup, request);\r\n }\r\n\r\n let result: Promise;\r\n\r\n if (this.canUseNative(request)) {\r\n result = this.acquireTokenNative(request, ApiId.acquireTokenPopup).then((response) => {\r\n this.browserStorage.setInteractionInProgress(false);\r\n atPopupMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch((e: AuthError) => {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n const popupClient = this.createPopupClient(request.correlationId);\r\n return popupClient.acquireToken(request);\r\n } else if (e instanceof InteractionRequiredAuthError) {\r\n this.logger.verbose(\"acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow\");\r\n const popupClient = this.createPopupClient(request.correlationId);\r\n return popupClient.acquireToken(request);\r\n }\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw e;\r\n });\r\n } else {\r\n const popupClient = this.createPopupClient(request.correlationId);\r\n result = popupClient.acquireToken(request);\r\n }\r\n\r\n return result.then((result) => {\r\n\r\n /*\r\n * If logged in, emit acquire token events\r\n */\r\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n\r\n atPopupMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atPopupMeasurement.endMeasurement({\r\n success: true,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n }).catch((e: AuthError) => {\r\n if (loggedInAccounts.length > 0) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\r\n } else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n\r\n atPopupMeasurement.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n });\r\n }\r\n\r\n private trackPageVisibilityWithMeasurement():void {\r\n const measurement = this.ssoSilentMeasurement || this.acquireTokenByCodeAsyncMeasurement;\r\n if(!measurement) {\r\n return;\r\n }\r\n\r\n this.logger.info(\"Perf: Visibility change detected in \", measurement.event.name);\r\n measurement.increment({\r\n visibilityChangeCount: 1,\r\n });\r\n }\r\n // #endregion\r\n\r\n // #region Silent Flow\r\n\r\n /**\r\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\r\n * - Any browser using a form of Intelligent Tracking Prevention\r\n * - If there is not an established session with the service\r\n *\r\n * In these cases, the request must be done inside a popup or full frame redirect.\r\n *\r\n * For the cases where interaction is required, you cannot send a request with prompt=none.\r\n *\r\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\r\n * you session on the server still exists.\r\n * @param request {@link SsoSilentRequest}\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n async ssoSilent(request: SsoSilentRequest): Promise {\r\n const correlationId = this.getRequestCorrelationId(request);\r\n const validRequest = {\r\n ...request,\r\n // will be PromptValue.NONE or PromptValue.NO_SESSION\r\n prompt: request.prompt,\r\n correlationId: correlationId\r\n };\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId);\r\n this.ssoSilentMeasurement?.increment({\r\n visibilityChangeCount: 0\r\n });\r\n document.addEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\r\n this.logger.verbose(\"ssoSilent called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, validRequest);\r\n\r\n let result: Promise;\r\n\r\n if (this.canUseNative(validRequest)) {\r\n result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch((e: AuthError) => {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\r\n return silentIframeClient.acquireToken(validRequest);\r\n }\r\n throw e;\r\n });\r\n } else {\r\n const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\r\n result = silentIframeClient.acquireToken(validRequest);\r\n }\r\n\r\n return result.then((response) => {\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, response);\r\n this.ssoSilentMeasurement?.addStaticFields({\r\n accessTokenSize: response.accessToken.length,\r\n idTokenSize: response.idToken.length\r\n });\r\n this.ssoSilentMeasurement?.endMeasurement({\r\n success: true,\r\n isNativeBroker: response.fromNativeBroker,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch((e: AuthError) => {\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\r\n this.ssoSilentMeasurement?.endMeasurement({\r\n errorCode: e.errorCode,\r\n subErrorCode: e.subError,\r\n success: false\r\n });\r\n throw e;\r\n }).finally(() => {\r\n document.removeEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * This function redeems an authorization code (passed as code) from the eSTS token endpoint.\r\n * This authorization code should be acquired server-side using a confidential client to acquire a spa_code.\r\n * This API is not indended for normal authorization code acquisition and redemption.\r\n *\r\n * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client.\r\n *\r\n * @param request {@link AuthorizationCodeRequest}\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n async acquireTokenByCode(request: AuthorizationCodeRequest): Promise {\r\n const correlationId = this.getRequestCorrelationId(request);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.trace(\"acquireTokenByCode called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, InteractionType.Silent, request);\r\n const atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, request.correlationId);\r\n\r\n try {\r\n if (request.code && request.nativeAccountId) {\r\n // Throw error in case server returns both spa_code and spa_accountid in exchange for auth code.\r\n throw BrowserAuthError.createSpaCodeAndNativeAccountIdPresentError();\r\n }\r\n else if (request.code) {\r\n const hybridAuthCode = request.code;\r\n let response = this.hybridAuthCodeResponses.get(hybridAuthCode);\r\n if (!response) {\r\n this.logger.verbose(\"Initiating new acquireTokenByCode request\", correlationId);\r\n response = this.acquireTokenByCodeAsync({\r\n ...request,\r\n correlationId\r\n })\r\n .then((result: AuthenticationResult) => {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, InteractionType.Silent, result);\r\n this.hybridAuthCodeResponses.delete(hybridAuthCode);\r\n atbcMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atbcMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: result.fromNativeBroker,\r\n requestId: result.requestId\r\n });\r\n return result;\r\n })\r\n .catch((error: AuthError) => {\r\n this.hybridAuthCodeResponses.delete(hybridAuthCode);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, error);\r\n atbcMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n });\r\n this.hybridAuthCodeResponses.set(hybridAuthCode, response);\r\n } else {\r\n this.logger.verbose(\"Existing acquireTokenByCode request found\", request.correlationId);\r\n atbcMeasurement.discardMeasurement();\r\n }\r\n return response;\r\n } else if (request.nativeAccountId) {\r\n if (this.canUseNative(request, request.nativeAccountId)) {\r\n return this.acquireTokenNative(request, ApiId.acquireTokenByCode, request.nativeAccountId).catch((e: AuthError) => {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n }\r\n throw e;\r\n });\r\n } else {\r\n throw BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError();\r\n }\r\n } else {\r\n throw BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError();\r\n }\r\n\r\n } catch (e) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, e);\r\n atbcMeasurement.endMeasurement({\r\n errorCode: e instanceof AuthError && e.errorCode || undefined,\r\n subErrorCode: e instanceof AuthError && e.subError || undefined,\r\n success: false\r\n });\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a SilentAuthCodeClient to redeem an authorization code.\r\n * @param request\r\n * @returns Result of the operation to redeem the authorization code\r\n */\r\n private async acquireTokenByCodeAsync(request: AuthorizationCodeRequest): Promise {\r\n this.logger.trace(\"acquireTokenByCodeAsync called\", request.correlationId);\r\n this.acquireTokenByCodeAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCodeAsync, request.correlationId);\r\n this.acquireTokenByCodeAsyncMeasurement?.increment({\r\n visibilityChangeCount: 0\r\n });\r\n document.addEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\r\n const silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId);\r\n const silentTokenResult = await silentAuthCodeClient.acquireToken(request).then((response) => {\r\n this.acquireTokenByCodeAsyncMeasurement?.endMeasurement({\r\n success: true,\r\n fromCache: response.fromCache,\r\n isNativeBroker: response.fromNativeBroker,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch((tokenRenewalError: AuthError) => {\r\n this.acquireTokenByCodeAsyncMeasurement?.endMeasurement({\r\n errorCode: tokenRenewalError.errorCode,\r\n subErrorCode: tokenRenewalError.subError,\r\n success: false\r\n });\r\n throw tokenRenewalError;\r\n }).finally(() => {\r\n document.removeEventListener(\"visibilitychange\",this.trackPageVisibilityWithMeasurement);\r\n });\r\n return silentTokenResult;\r\n }\r\n\r\n /**\r\n * Attempt to acquire an access token from the cache\r\n * @param silentCacheClient SilentCacheClient\r\n * @param commonRequest CommonSilentFlowRequest\r\n * @param silentRequest SilentRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n protected async acquireTokenFromCache(\r\n silentCacheClient: SilentCacheClient,\r\n commonRequest: CommonSilentFlowRequest,\r\n silentRequest: SilentRequest\r\n ): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenFromCache, commonRequest.correlationId);\r\n switch(silentRequest.cacheLookupPolicy) {\r\n case CacheLookupPolicy.Default:\r\n case CacheLookupPolicy.AccessToken:\r\n case CacheLookupPolicy.AccessTokenAndRefreshToken:\r\n return silentCacheClient.acquireToken(commonRequest);\r\n default:\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to acquire an access token via a refresh token\r\n * @param commonRequest CommonSilentFlowRequest\r\n * @param silentRequest SilentRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n protected async acquireTokenByRefreshToken(\r\n commonRequest: CommonSilentFlowRequest,\r\n silentRequest: SilentRequest\r\n ): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenByRefreshToken, commonRequest.correlationId);\r\n switch(silentRequest.cacheLookupPolicy) {\r\n case CacheLookupPolicy.Default:\r\n case CacheLookupPolicy.AccessTokenAndRefreshToken:\r\n case CacheLookupPolicy.RefreshToken:\r\n case CacheLookupPolicy.RefreshTokenAndNetwork:\r\n const silentRefreshClient = this.createSilentRefreshClient(commonRequest.correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentRefreshClientAcquireToken, commonRequest.correlationId);\r\n return silentRefreshClient.acquireToken(commonRequest);\r\n default:\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to acquire an access token via an iframe\r\n * @param request CommonSilentFlowRequest\r\n * @returns A promise that, when resolved, returns the access token\r\n */\r\n protected async acquireTokenBySilentIframe(\r\n request: CommonSilentFlowRequest\r\n ): Promise {\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenBySilentIframe, request.correlationId);\r\n\r\n const silentIframeClient = this.createSilentIframeClient(request.correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n return silentIframeClient.acquireToken(request);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Logout\r\n\r\n /**\r\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\r\n * @param logoutRequest\r\n * @deprecated\r\n */\r\n async logout(logoutRequest?: EndSessionRequest): Promise {\r\n const correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\", correlationId);\r\n return this.logoutRedirect({\r\n correlationId,\r\n ...logoutRequest\r\n });\r\n }\r\n\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n async logoutRedirect(logoutRequest?: EndSessionRequest): Promise {\r\n const correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n\r\n const redirectClient = this.createRedirectClient(correlationId);\r\n return redirectClient.logout(logoutRequest);\r\n }\r\n\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise {\r\n try {\r\n const correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n const popupClient = this.createPopupClient(correlationId);\r\n return popupClient.logout(logoutRequest);\r\n } catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Account APIs\r\n\r\n /**\r\n * Returns all accounts that MSAL currently has data for.\r\n * (the account object is created at the time of successful login)\r\n * or empty array when no accounts are found\r\n * @returns Array of account objects in cache\r\n */\r\n getAllAccounts(): AccountInfo[] {\r\n this.logger.verbose(\"getAllAccounts called\");\r\n return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching username.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found.\r\n * This API is provided for convenience but getAccountById should be used for best reliability\r\n * @param username\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByUsername(username: string): AccountInfo | null {\r\n this.logger.trace(\"getAccountByUsername called\");\r\n if (!username) {\r\n this.logger.warning(\"getAccountByUsername: No username provided\");\r\n return null;\r\n }\r\n\r\n const account = this.browserStorage.getAccountInfoFilteredBy({username});\r\n if (account) {\r\n this.logger.verbose(\"getAccountByUsername: Account matching username found, returning\");\r\n this.logger.verbosePii(`getAccountByUsername: Returning signed-in accounts matching username: ${username}`);\r\n return account;\r\n } else {\r\n this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching homeAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param homeAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByHomeId(homeAccountId: string): AccountInfo | null {\r\n this.logger.trace(\"getAccountByHomeId called\");\r\n if (!homeAccountId) {\r\n this.logger.warning(\"getAccountByHomeId: No homeAccountId provided\");\r\n return null;\r\n }\r\n\r\n const account = this.browserStorage.getAccountInfoFilteredBy({homeAccountId});\r\n if (account) {\r\n this.logger.verbose(\"getAccountByHomeId: Account matching homeAccountId found, returning\");\r\n this.logger.verbosePii(`getAccountByHomeId: Returning signed-in accounts matching homeAccountId: ${homeAccountId}`);\r\n return account;\r\n } else {\r\n this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching localAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param localAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByLocalId(localAccountId: string): AccountInfo | null {\r\n this.logger.trace(\"getAccountByLocalId called\");\r\n if (!localAccountId) {\r\n this.logger.warning(\"getAccountByLocalId: No localAccountId provided\");\r\n return null;\r\n }\r\n\r\n const account = this.browserStorage.getAccountInfoFilteredBy({localAccountId});\r\n if (account) {\r\n this.logger.verbose(\"getAccountByLocalId: Account matching localAccountId found, returning\");\r\n this.logger.verbosePii(`getAccountByLocalId: Returning signed-in accounts matching localAccountId: ${localAccountId}`);\r\n return account;\r\n } else {\r\n this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\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.\r\n * @param account\r\n */\r\n setActiveAccount(account: AccountInfo | null): void {\r\n this.browserStorage.setActiveAccount(account);\r\n }\r\n\r\n /**\r\n * Gets the currently active account\r\n */\r\n getActiveAccount(): AccountInfo | null {\r\n return this.browserStorage.getActiveAccount();\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Helpers\r\n\r\n /**\r\n * Helper to validate app environment before making an auth request\r\n *\r\n * @protected\r\n * @param {InteractionType} interactionType What kind of interaction is being used\r\n * @param {boolean} [setInteractionInProgress=true] Whether to set interaction in progress temp cache flag\r\n */\r\n protected preflightBrowserEnvironmentCheck(interactionType: InteractionType, setInteractionInProgress: boolean = true): void {\r\n this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\r\n // Block request if not in browser environment\r\n BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\r\n\r\n // Block redirects if in an iframe\r\n BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\r\n\r\n // Block auth requests inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n\r\n // Block redirectUri opened in a popup from calling MSAL APIs\r\n BrowserUtils.blockAcquireTokenInPopups();\r\n\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n\r\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\r\n if (interactionType === InteractionType.Redirect &&\r\n this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\r\n !this.config.cache.storeAuthStateInCookie) {\r\n throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\r\n }\r\n\r\n if (interactionType === InteractionType.Redirect || interactionType === InteractionType.Popup) {\r\n this.preflightInteractiveRequest(setInteractionInProgress);\r\n }\r\n }\r\n\r\n /**\r\n * Preflight check for interactive requests\r\n *\r\n * @protected\r\n * @param {boolean} setInteractionInProgress Whether to set interaction in progress temp cache flag\r\n */\r\n protected preflightInteractiveRequest(setInteractionInProgress: boolean): void {\r\n this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\");\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n\r\n // Set interaction in progress temporary cache or throw if alread set.\r\n if (setInteractionInProgress) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n }\r\n\r\n /**\r\n * Acquire a token from native device (e.g. WAM)\r\n * @param request\r\n */\r\n protected async acquireTokenNative(request: PopupRequest | SilentRequest | SsoSilentRequest, apiId: ApiId, accountId?: string): Promise {\r\n this.logger.trace(\"acquireTokenNative called\");\r\n if (!this.nativeExtensionProvider) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n\r\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);\r\n\r\n return nativeClient.acquireToken(request);\r\n }\r\n\r\n /**\r\n * Returns boolean indicating if this request can use the native broker\r\n * @param request\r\n */\r\n protected canUseNative(request: RedirectRequest | PopupRequest | SsoSilentRequest, accountId?: string): boolean {\r\n this.logger.trace(\"canUseNative called\");\r\n if (!NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) {\r\n this.logger.trace(\"canUseNative: isNativeAvailable returned false, returning false\");\r\n return false;\r\n }\r\n\r\n if (request.prompt) {\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n case PromptValue.LOGIN:\r\n this.logger.trace(\"canUseNative: prompt is compatible with native flow\");\r\n break;\r\n default:\r\n this.logger.trace(`canUseNative: prompt = ${request.prompt} is not compatible with native flow, returning false`);\r\n return false;\r\n }\r\n }\r\n\r\n if (!accountId && !this.getNativeAccountId(request)) {\r\n this.logger.trace(\"canUseNative: nativeAccountId is not available, returning false\");\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Get the native accountId from the account\r\n * @param request\r\n * @returns\r\n */\r\n protected getNativeAccountId(request: RedirectRequest | PopupRequest | SsoSilentRequest): string {\r\n const account = request.account || this.browserStorage.getAccountInfoByHints(request.loginHint, request.sid) || this.getActiveAccount();\r\n\r\n return account && account.nativeAccountId || \"\";\r\n }\r\n\r\n /**\r\n * Returns new instance of the Popup Interaction Client\r\n * @param correlationId\r\n */\r\n protected createPopupClient(correlationId?: string): PopupClient {\r\n return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\r\n }\r\n\r\n /**\r\n * Returns new instance of the Redirect Interaction Client\r\n * @param correlationId\r\n */\r\n protected createRedirectClient(correlationId?: string): RedirectClient {\r\n return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\r\n }\r\n\r\n /**\r\n * Returns new instance of the Silent Iframe Interaction Client\r\n * @param correlationId\r\n */\r\n protected createSilentIframeClient(correlationId?: string): SilentIframeClient {\r\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);\r\n }\r\n\r\n /**\r\n * Returns new instance of the Silent Cache Interaction Client\r\n */\r\n protected createSilentCacheClient(correlationId?: string): SilentCacheClient {\r\n return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n }\r\n\r\n /**\r\n * Returns new instance of the Silent Refresh Interaction Client\r\n */\r\n protected createSilentRefreshClient(correlationId?: string): SilentRefreshClient {\r\n return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n }\r\n\r\n /**\r\n * Returns new instance of the Silent AuthCode Interaction Client\r\n */\r\n protected createSilentAuthCodeClient(correlationId?: string): SilentAuthCodeClient {\r\n return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n }\r\n\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n addEventCallback(callback: EventCallbackFunction): string | null {\r\n return this.eventHandler.addEventCallback(callback);\r\n }\r\n\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n removeEventCallback(callbackId: string): void {\r\n this.eventHandler.removeEventCallback(callbackId);\r\n }\r\n\r\n /**\r\n * Registers a callback to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\r\n return this.performanceClient.addPerformanceCallback(callback);\r\n }\r\n\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n removePerformanceCallback(callbackId: string): boolean {\r\n return this.performanceClient.removePerformanceCallback(callbackId);\r\n }\r\n\r\n /**\r\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\r\n */\r\n enableAccountStorageEvents(): void {\r\n this.eventHandler.enableAccountStorageEvents();\r\n }\r\n\r\n /**\r\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\r\n */\r\n disableAccountStorageEvents(): void {\r\n this.eventHandler.disableAccountStorageEvents();\r\n }\r\n\r\n /**\r\n * Gets the token cache for the application.\r\n */\r\n getTokenCache(): ITokenCache {\r\n return this.tokenCache;\r\n }\r\n\r\n /**\r\n * Returns the logger instance\r\n */\r\n getLogger(): Logger {\r\n return this.logger;\r\n }\r\n\r\n /**\r\n * Replaces the default logger set in configurations with new Logger with new configurations\r\n * @param logger Logger instance\r\n */\r\n setLogger(logger: Logger): void {\r\n this.logger = logger;\r\n }\r\n\r\n /**\r\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\r\n * @param sku\r\n * @param version\r\n */\r\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void {\r\n // Validate the SKU passed in is one we expect\r\n this.browserStorage.setWrapperMetadata(sku, version);\r\n }\r\n\r\n /**\r\n * Sets navigation client\r\n * @param navigationClient\r\n */\r\n setNavigationClient(navigationClient: INavigationClient): void {\r\n this.navigationClient = navigationClient;\r\n }\r\n\r\n /**\r\n * Returns the configuration object\r\n */\r\n getConfiguration(): BrowserConfiguration {\r\n return this.config;\r\n }\r\n\r\n /**\r\n * Generates a correlation id for a request if none is provided.\r\n *\r\n * @protected\r\n * @param {?Partial} [request]\r\n * @returns {string}\r\n */\r\n protected getRequestCorrelationId(request?: Partial): string {\r\n if (request?.correlationId) {\r\n return request.correlationId;\r\n }\r\n\r\n if (this.isBrowserEnvironment) {\r\n return this.browserCrypto.createNewGuid();\r\n }\r\n\r\n /*\r\n * Included for fallback for non-browser environments,\r\n * and to ensure this method always returns a string.\r\n */\r\n return Constants.EMPTY_STRING;\r\n }\r\n\r\n // #endregion\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccountInfo, AuthenticationResult, Constants, RequestThumbprint, AuthError, PerformanceEvents, ServerError, InteractionRequiredAuthError, InProgressPerformanceEvent } from \"@azure/msal-common\";\r\nimport { Configuration } from \"../config/Configuration\";\r\nimport { DEFAULT_REQUEST, InteractionType, ApiId, CacheLookupPolicy, BrowserConstants } from \"../utils/BrowserConstants\";\r\nimport { IPublicClientApplication } from \"./IPublicClientApplication\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { ClientApplication } from \"./ClientApplication\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { NativeAuthError } from \"../error/NativeAuthError\";\r\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\n\r\n/**\r\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\r\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\r\n */\r\nexport class PublicClientApplication extends ClientApplication implements IPublicClientApplication {\r\n\r\n // Active requests\r\n private activeSilentTokenRequests: Map>;\r\n private astsAsyncMeasurement?: InProgressPerformanceEvent = undefined;\r\n\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\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\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\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).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration object for the MSAL PublicClientApplication instance\r\n */\r\n constructor(configuration: Configuration) {\r\n super(configuration);\r\n\r\n this.activeSilentTokenRequests = new Map();\r\n // Register listener functions\r\n this.trackPageVisibility = this.trackPageVisibility.bind(this);\r\n }\r\n\r\n /**\r\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\r\n * any code that follows this function will not execute.\r\n *\r\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\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n async loginRedirect(request?: RedirectRequest): Promise {\r\n const correlationId: string = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginRedirect called\", correlationId);\r\n return this.acquireTokenRedirect({\r\n correlationId,\r\n ...(request || DEFAULT_REQUEST)\r\n });\r\n }\r\n\r\n /**\r\n * Use when initiating the login process via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n loginPopup(request?: PopupRequest): Promise {\r\n const correlationId: string = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginPopup called\", correlationId);\r\n return this.acquireTokenPopup({\r\n correlationId,\r\n ...(request || DEFAULT_REQUEST)\r\n });\r\n }\r\n\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\r\n *\r\n * @param {@link (SilentRequest:type)}\r\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\r\n */\r\n async acquireTokenSilent(request: SilentRequest): Promise {\r\n const correlationId = this.getRequestCorrelationId(request);\r\n const atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId);\r\n atsMeasurement.addStaticFields({\r\n cacheLookupPolicy: request.cacheLookupPolicy\r\n });\r\n\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"acquireTokenSilent called\", correlationId);\r\n\r\n const account = request.account || this.getActiveAccount();\r\n if (!account) {\r\n throw BrowserAuthError.createNoAccountError();\r\n }\r\n\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.auth.clientId,\r\n authority: request.authority || Constants.EMPTY_STRING,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: account.homeAccountId,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n const silentRequestKey = JSON.stringify(thumbprint);\r\n\r\n const cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey);\r\n if (typeof cachedResponse === \"undefined\") {\r\n this.logger.verbose(\"acquireTokenSilent called for the first time, storing active request\", correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenSilentAsync, correlationId);\r\n const response = this.acquireTokenSilentAsync({\r\n ...request,\r\n correlationId\r\n }, account)\r\n .then((result) => {\r\n this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.addStaticFields({\r\n accessTokenSize: result.accessToken.length,\r\n idTokenSize: result.idToken.length\r\n });\r\n atsMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache,\r\n isNativeBroker: result.fromNativeBroker,\r\n cacheLookupPolicy: request.cacheLookupPolicy,\r\n requestId: result.requestId,\r\n });\r\n return result;\r\n })\r\n .catch((error: AuthError) => {\r\n this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.endMeasurement({\r\n errorCode: error.errorCode,\r\n subErrorCode: error.subError,\r\n success: false\r\n });\r\n throw error;\r\n });\r\n this.activeSilentTokenRequests.set(silentRequestKey, response);\r\n return response;\r\n } else {\r\n this.logger.verbose(\"acquireTokenSilent has been called previously, returning the result from the first call\", correlationId);\r\n // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics\r\n atsMeasurement.discardMeasurement();\r\n return cachedResponse;\r\n }\r\n }\r\n\r\n private trackPageVisibility():void {\r\n if (!this.astsAsyncMeasurement) {\r\n return;\r\n }\r\n this.logger.info(\"Perf: Visibility change detected\");\r\n this.astsAsyncMeasurement.increment({\r\n visibilityChangeCount: 1,\r\n });\r\n }\r\n\r\n /**\r\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.\r\n * @param {@link (SilentRequest:type)}\r\n * @param {@link (AccountInfo:type)}\r\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse}\r\n */\r\n protected async acquireTokenSilentAsync(request: SilentRequest, account: AccountInfo): Promise{\r\n this.performanceClient.addQueueMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\r\n\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\r\n this.astsAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\r\n this.astsAsyncMeasurement?.increment({\r\n visibilityChangeCount: 0\r\n });\r\n document.addEventListener(\"visibilitychange\",this.trackPageVisibility);\r\n let result: Promise;\r\n if (NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme) && account.nativeAccountId) {\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from native platform\");\r\n const silentRequest: SilentRequest = {\r\n ...request,\r\n account\r\n };\r\n result = this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(async (e: AuthError) => {\r\n // If native token acquisition fails for availability reasons fallback to web flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.logger.verbose(\"acquireTokenSilent - native platform unavailable, falling back to web flow\");\r\n this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt\r\n\r\n // Cache will not contain tokens, given that previous WAM requests succeeded. Skip cache and RT renewal and go straight to iframe renewal\r\n const silentIframeClient = this.createSilentIframeClient(request.correlationId);\r\n return silentIframeClient.acquireToken(request);\r\n }\r\n throw e;\r\n });\r\n } else {\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from web flow\");\r\n\r\n const silentCacheClient = this.createSilentCacheClient(request.correlationId);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeSilentRequest, request.correlationId);\r\n const silentRequest = await silentCacheClient.initializeSilentRequest(request, account);\r\n\r\n const requestWithCLP = {\r\n ...request,\r\n // set the request's CacheLookupPolicy to Default if it was not optionally passed in\r\n cacheLookupPolicy: request.cacheLookupPolicy || CacheLookupPolicy.Default\r\n };\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenFromCache, silentRequest.correlationId);\r\n result = this.acquireTokenFromCache(silentCacheClient, silentRequest, requestWithCLP).catch((cacheError: AuthError) => {\r\n if (requestWithCLP.cacheLookupPolicy === CacheLookupPolicy.AccessToken) {\r\n throw cacheError;\r\n }\r\n\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, silentRequest);\r\n\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenByRefreshToken, silentRequest.correlationId);\r\n return this.acquireTokenByRefreshToken(silentRequest, requestWithCLP).catch((refreshTokenError: AuthError) => {\r\n const isServerError = refreshTokenError instanceof ServerError;\r\n const isInteractionRequiredError = refreshTokenError instanceof InteractionRequiredAuthError;\r\n const isInvalidGrantError = (refreshTokenError.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\r\n\r\n if ((!isServerError ||\r\n !isInvalidGrantError ||\r\n isInteractionRequiredError ||\r\n requestWithCLP.cacheLookupPolicy === CacheLookupPolicy.AccessTokenAndRefreshToken ||\r\n requestWithCLP.cacheLookupPolicy === CacheLookupPolicy.RefreshToken)\r\n && (requestWithCLP.cacheLookupPolicy !== CacheLookupPolicy.Skip)\r\n ) {\r\n throw refreshTokenError;\r\n }\r\n\r\n this.logger.verbose(\"Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.\", request.correlationId);\r\n this.performanceClient.setPreQueueTime(PerformanceEvents.AcquireTokenBySilentIframe, silentRequest.correlationId);\r\n return this.acquireTokenBySilentIframe(silentRequest);\r\n });\r\n });\r\n }\r\n\r\n return result.then((response) => {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, response);\r\n this.astsAsyncMeasurement?.endMeasurement({\r\n success: true,\r\n fromCache: response.fromCache,\r\n isNativeBroker: response.fromNativeBroker,\r\n requestId: response.requestId\r\n });\r\n return response;\r\n }).catch((tokenRenewalError: AuthError) => {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\r\n this.astsAsyncMeasurement?.endMeasurement({\r\n errorCode: tokenRenewalError.errorCode,\r\n subErrorCode: tokenRenewalError.subError,\r\n success: false\r\n });\r\n throw tokenRenewalError;\r\n }).finally(() => {\r\n document.removeEventListener(\"visibilitychange\",this.trackPageVisibility);\r\n });\r\n }\r\n}\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _HttpClient_instances, _HttpClient_props, _HttpClient_createRequest, _HttpClient_createFormDataRequest, _HttpClient_getAadHttpClient;\r\nimport { useState } from 'react';\r\nimport { HttpStatusCode } from '../utilities';\r\nexport class HttpClient {\r\n constructor(props) {\r\n _HttpClient_instances.add(this);\r\n _HttpClient_props.set(this, void 0);\r\n this.usePut = (options) => {\r\n const [result, setResult] = useState();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isError, setIsError] = useState(false);\r\n const executor = (data) => {\r\n const processRequestAsync = async () => {\r\n try {\r\n const apiUrl = options.apiUrl();\r\n const [client, url] = await __classPrivateFieldGet(this, _HttpClient_getAadHttpClient, \"f\").call(this, apiUrl);\r\n const result = await client.put(url, __classPrivateFieldGet(this, _HttpClient_instances, \"m\", _HttpClient_createRequest).call(this, 'PUT', JSON.stringify(data)));\r\n setResult(result);\r\n setIsLoading(false);\r\n setResult(result);\r\n }\r\n catch (error) {\r\n setIsError(true);\r\n }\r\n };\r\n processRequestAsync();\r\n };\r\n const res = { isLoading, isError, value: result, ref: executor };\r\n return res;\r\n };\r\n _HttpClient_getAadHttpClient.set(this, async (apiUrl) => {\r\n apiUrl = apiUrl.trim();\r\n while (apiUrl.startsWith('/'))\r\n apiUrl = apiUrl.substring(1);\r\n const url = apiUrl.startsWith('https://') || apiUrl.startsWith('http://') ? apiUrl : `${__classPrivateFieldGet(this, _HttpClient_props, \"f\").baseUrl}/${apiUrl}`;\r\n const client = {\r\n get: async (url, options) => {\r\n var _a, _b;\r\n const accessToken = await ((_b = (_a = __classPrivateFieldGet(this, _HttpClient_props, \"f\").auth) === null || _a === void 0 ? void 0 : _a.getAccessToken) === null || _b === void 0 ? void 0 : _b.call(_a, __classPrivateFieldGet(this, _HttpClient_props, \"f\").module));\r\n if (options.headers == null)\r\n options.headers = {};\r\n options.headers['authorization'] = 'Bearer ' + accessToken;\r\n return fetch(url, options);\r\n },\r\n post: async (url, options) => {\r\n var _a, _b;\r\n const accessToken = await ((_b = (_a = __classPrivateFieldGet(this, _HttpClient_props, \"f\").auth) === null || _a === void 0 ? void 0 : _a.getAccessToken) === null || _b === void 0 ? void 0 : _b.call(_a, __classPrivateFieldGet(this, _HttpClient_props, \"f\").module));\r\n if (options.headers == null)\r\n options.headers = {};\r\n options.headers['authorization'] = 'Bearer ' + accessToken;\r\n return fetch(url, Object.assign(Object.assign({}, options), { method: 'POST' }));\r\n },\r\n put: async (url, options) => {\r\n var _a, _b;\r\n const accessToken = await ((_b = (_a = __classPrivateFieldGet(this, _HttpClient_props, \"f\").auth) === null || _a === void 0 ? void 0 : _a.getAccessToken) === null || _b === void 0 ? void 0 : _b.call(_a, __classPrivateFieldGet(this, _HttpClient_props, \"f\").module));\r\n if (options.headers == null)\r\n options.headers = {};\r\n options.headers['authorization'] = 'Bearer ' + accessToken;\r\n return fetch(url, Object.assign(Object.assign({}, options), { method: 'PUT' }));\r\n },\r\n delete: async (url, options) => {\r\n var _a, _b;\r\n const accessToken = await ((_b = (_a = __classPrivateFieldGet(this, _HttpClient_props, \"f\").auth) === null || _a === void 0 ? void 0 : _a.getAccessToken) === null || _b === void 0 ? void 0 : _b.call(_a, __classPrivateFieldGet(this, _HttpClient_props, \"f\").module));\r\n if (options.headers == null)\r\n options.headers = {};\r\n options.headers['authorization'] = 'Bearer ' + accessToken;\r\n return fetch(url, Object.assign(Object.assign({}, options), { method: 'DELETE' }));\r\n },\r\n };\r\n return [client, url];\r\n });\r\n __classPrivateFieldSet(this, _HttpClient_props, props, \"f\");\r\n }\r\n async aadGetJson(apiUrl) {\r\n const [client, url] = await __classPrivateFieldGet(this, _HttpClient_getAadHttpClient, \"f\").call(this, apiUrl);\r\n try {\r\n const response = await client.get(url, __classPrivateFieldGet(this, _HttpClient_instances, \"m\", _HttpClient_createRequest).call(this, 'GET'));\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n else {\r\n if (response.status === 404) {\r\n throw { ExceptionMessage: 'API no encontrada' };\r\n }\r\n else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n throw err;\r\n }\r\n }\r\n }\r\n catch (ex) {\r\n throw { ExceptionMessage: `Error de comunicación con el servidor. ${ex.message}` };\r\n }\r\n }\r\n async aadGetArrayBuffer(apiUrl) {\r\n const [client, url] = await __classPrivateFieldGet(this, _HttpClient_getAadHttpClient, \"f\").call(this, apiUrl);\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const response = await client.get(url, __classPrivateFieldGet(this, _HttpClient_instances, \"m\", _HttpClient_createRequest).call(this, 'GET'));\r\n if (response.ok) {\r\n resolve(response.blob());\r\n }\r\n else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n }\r\n catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${ex.message}`\r\n });\r\n }\r\n });\r\n }\r\n async aadGetText(apiUrl) {\r\n const [client, url] = await __classPrivateFieldGet(this, _HttpClient_getAadHttpClient, \"f\").call(this, apiUrl);\r\n try {\r\n const response = await client.get(url, __classPrivateFieldGet(this, _HttpClient_instances, \"m\", _HttpClient_createRequest).call(this, 'GET'));\r\n if (response.ok) {\r\n return response.text();\r\n }\r\n else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n throw err;\r\n }\r\n }\r\n catch (ex) {\r\n throw { ExceptionMessage: `Error de comunicación con el servidor. ${ex.message}` };\r\n }\r\n }\r\n async aadPostAsync(apiUrl, data) {\r\n const [client, url] = await __classPrivateFieldGet(this, _HttpClient_getAadHttpClient, \"f\").call(this, apiUrl);\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const response = await client.post(url, __classPrivateFieldGet(this, _HttpClient_instances, \"m\", _HttpClient_createRequest).call(this, 'POST', JSON.stringify(data)));\r\n if (response.ok) {\r\n this._processResponse(response, 'json', resolve);\r\n }\r\n else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n }\r\n catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${ex.message}`\r\n });\r\n }\r\n });\r\n }\r\n async aadPostFormDataAsync(apiUrl, data) {\r\n const [client, url] = await __classPrivateFieldGet(this, _HttpClient_getAadHttpClient, \"f\").call(this, apiUrl);\r\n try {\r\n const options = __classPrivateFieldGet(this, _HttpClient_instances, \"m\", _HttpClient_createFormDataRequest).call(this, 'POST', data);\r\n const response = await client.post(url, options);\r\n if (response.ok) {\r\n if (response.status === 204)\r\n return null;\r\n return response.json();\r\n }\r\n else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n throw err;\r\n }\r\n }\r\n catch (ex) {\r\n throw { ExceptionMessage: `Error de comunicación con el servidor. ${ex.message}` };\r\n }\r\n }\r\n async aadPostArrayBuffer(apiUrl, data) {\r\n const [client, url] = await __classPrivateFieldGet(this, _HttpClient_getAadHttpClient, \"f\").call(this, apiUrl);\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const response = await client.post(url, __classPrivateFieldGet(this, _HttpClient_instances, \"m\", _HttpClient_createRequest).call(this, 'POST', JSON.stringify(data)));\r\n if (response.ok) {\r\n resolve(response.blob());\r\n }\r\n else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n }\r\n catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n }\r\n async aadPut(apiUrl, data) {\r\n const [client, url] = await __classPrivateFieldGet(this, _HttpClient_getAadHttpClient, \"f\").call(this, apiUrl);\r\n try {\r\n const response = await client.put(url, __classPrivateFieldGet(this, _HttpClient_instances, \"m\", _HttpClient_createRequest).call(this, 'PUT', JSON.stringify(data)));\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n throw err;\r\n }\r\n }\r\n catch (ex) {\r\n throw { ExceptionMessage: `Error de comunicación con el servidor. ${ex.message}` };\r\n }\r\n }\r\n async aadDelete(apiUrl) {\r\n const [client, url] = await __classPrivateFieldGet(this, _HttpClient_getAadHttpClient, \"f\").call(this, apiUrl);\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const options = __classPrivateFieldGet(this, _HttpClient_instances, \"m\", _HttpClient_createRequest).call(this, 'DELETE');\r\n const response = await client.delete(url, options);\r\n if (response.ok) {\r\n resolve();\r\n }\r\n else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n }\r\n catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${ex.message}`\r\n });\r\n }\r\n });\r\n }\r\n parseDicionary(url, filters) {\r\n if (filters !== void 0) {\r\n const processedFilters = [];\r\n for (const filter in filters) {\r\n if (Object.prototype.hasOwnProperty.call(filters, filter)) {\r\n const value = filters[filter];\r\n processedFilters.push(`filters[${filter}]=${value}`);\r\n }\r\n }\r\n if (url.indexOf('?') >= 0) {\r\n url += '&' + processedFilters.join('&');\r\n }\r\n else {\r\n url += '?' + processedFilters.join('&');\r\n }\r\n }\r\n return url;\r\n }\r\n _writeException(err) {\r\n console.log(`Message: ${err.Message}`);\r\n console.log(`ExceptionType: ${err.ExceptionType}`);\r\n console.log(`ExceptionMessage: ${err.ExceptionMessage || err.exceptionMessage}`);\r\n console.log(`StackTrace: ${err.StackTrace}`);\r\n }\r\n _processResponse(response, type, resolve) {\r\n const processOK = () => {\r\n switch (type) {\r\n case 'json':\r\n resolve(response.json());\r\n break;\r\n case 'binary':\r\n resolve(response.blob());\r\n break;\r\n case 'text':\r\n break;\r\n case 'empty':\r\n break;\r\n default: throw new Error('Invalid type: ' + type);\r\n }\r\n };\r\n switch (response.status) {\r\n case HttpStatusCode.OK:\r\n case HttpStatusCode.Created:\r\n processOK();\r\n break;\r\n case HttpStatusCode.NoContent:\r\n resolve(null);\r\n break;\r\n case HttpStatusCode.PartialContent:\r\n resolve(null);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n_HttpClient_props = new WeakMap(), _HttpClient_getAadHttpClient = new WeakMap(), _HttpClient_instances = new WeakSet(), _HttpClient_createRequest = function _HttpClient_createRequest(method, body) {\r\n var _a, _b, _c, _d;\r\n const props = __classPrivateFieldGet(this, _HttpClient_props, \"f\");\r\n const apimKey = (_b = (_a = props.auth) === null || _a === void 0 ? void 0 : _a.getApimKey) === null || _b === void 0 ? void 0 : _b.call(_a, props.module);\r\n const customHeaders = (_d = (_c = props.auth) === null || _c === void 0 ? void 0 : _c.getHeaders) === null || _d === void 0 ? void 0 : _d.call(_c, props.module);\r\n return {\r\n headers: Object.assign({ 'Accept': 'application/json', 'Content-Type': 'application/json', 'Ocp-Apim-Subscription-Key': apimKey }, customHeaders),\r\n method,\r\n body\r\n };\r\n}, _HttpClient_createFormDataRequest = function _HttpClient_createFormDataRequest(method, body) {\r\n var _a, _b, _c, _d;\r\n const props = __classPrivateFieldGet(this, _HttpClient_props, \"f\");\r\n const apimKey = (_b = (_a = props.auth) === null || _a === void 0 ? void 0 : _a.getApimKey) === null || _b === void 0 ? void 0 : _b.call(_a, props.module);\r\n const customHeaders = (_d = (_c = props.auth) === null || _c === void 0 ? void 0 : _c.getHeaders) === null || _d === void 0 ? void 0 : _d.call(_c, props.module);\r\n return {\r\n headers: Object.assign({ 'Accept': 'application/json', 'Ocp-Apim-Subscription-Key': apimKey }, customHeaders),\r\n method,\r\n body\r\n };\r\n};\r\n","import { MsalProvider, useIsAuthenticated } from '@azure/msal-react';\r\nimport { PrimaryButton } from '@fluentui/react';\r\nimport { fetchBaseQuery } from '@reduxjs/toolkit/dist/query';\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ArgumentNullException } from '../exceptions';\r\nimport { AuthenticationManager } from '../security/AuthenticationManager';\r\nimport { Host } from '../types';\r\nimport { HttpClient } from './HttpClient';\r\nconst $RootContext = React.createContext(null);\r\nlet _isProviderConfigured = false;\r\nlet _authenticationManager;\r\nlet _rootProps;\r\nexport const createFetchBaseQuery = (options) => {\r\n if (options == null)\r\n throw new ArgumentNullException('options');\r\n return async (args, baseQueryApi, extraOptions) => {\r\n const $baseUrl = typeof options.baseUrl === 'function' ? options.baseUrl() : options.baseUrl;\r\n if ($baseUrl == null)\r\n throw new ArgumentNullException('baseUrl');\r\n const rawBaseQuery = fetchBaseQuery({\r\n baseUrl: $baseUrl,\r\n fetchFn: async (requestInfo) => {\r\n if (_authenticationManager == null)\r\n throw new ArgumentNullException('To use sdk, you need to configure using configureSdk() function');\r\n const accessToken = await _authenticationManager.getAccessToken(options.scope, '51606deb-babb-4619-9b45-46fdc9844f69/.default');\r\n const request = new Request(requestInfo);\r\n request.headers.append('authorization', 'Bearer ' + accessToken);\r\n const headers = _authenticationManager.getAccessToken(options.module, options.scope);\r\n if (headers != null) {\r\n for (const key in headers) {\r\n if (Object.prototype.hasOwnProperty.call(headers, key)) {\r\n const header = headers[key];\r\n request.headers.append(key, header);\r\n }\r\n }\r\n }\r\n const response = await fetch(request);\r\n return response;\r\n }\r\n });\r\n return rawBaseQuery(args, baseQueryApi, extraOptions);\r\n };\r\n};\r\nexport const RootAppProvider = (props) => {\r\n const httpClient = useHttpClient(props.baseUrl, 'authentication');\r\n const [appContext, setAppContext] = useState();\r\n const host = useRef();\r\n useEffect(function componentDidMount() {\r\n props.onGetAppContext(httpClient).then((appContext) => {\r\n host.current = new Host(Object.assign(Object.assign({}, props), { appContext,\r\n httpClient }));\r\n setAppContext(appContext);\r\n });\r\n }, []);\r\n if (appContext == null)\r\n return React.createElement(\"div\", null, \"Loading...\");\r\n return React.createElement($RootContext.Provider, { value: host.current }, props.children);\r\n};\r\nexport const RootApp = (props) => {\r\n if (!_isProviderConfigured) {\r\n _authenticationManager = new AuthenticationManager({\r\n clientId: props.clientId,\r\n onGetAccessToken: props.onGetAccessToken,\r\n onGetApimKey: props.onGetApimKey,\r\n onGetHeaders: props.onGetHeaders,\r\n tenantId: props.tenantId,\r\n useMsal: props.useMsal,\r\n enableDebug: props.enableDebug\r\n });\r\n _rootProps = props;\r\n _isProviderConfigured = true;\r\n }\r\n return props.useMsal\r\n ? React.createElement(MsalProvider, { instance: _authenticationManager.instance },\r\n React.createElement(EntraIdProvider, { auth: _authenticationManager },\r\n React.createElement(RootAppProvider, Object.assign({}, props), props.children)))\r\n : React.createElement(RootAppProvider, Object.assign({}, props), props.children);\r\n};\r\nconst EntraIdProvider = (props) => {\r\n const isAuthenticated = useIsAuthenticated();\r\n const { t } = useTranslation();\r\n const unAuthenticatedUserStyles = {\r\n \"backgroundImage\": \"url('https://ioipcorestorageaccount.blob.core.windows.net/resources/bg/background9.png')\",\r\n \"position\": \"absolute\",\r\n \"left\": \"0\",\r\n \"right\": \"0\",\r\n \"top\": \"0\",\r\n \"border\": \"0\",\r\n \"height\": \"100%\",\r\n \"backgroundRepeat\": \"no-repeat\",\r\n \"backgroundSize\": \"cover\",\r\n \"display\": \"flex\",\r\n \"alignItems\": \"center\",\r\n \"justifyContent\": \"end\"\r\n };\r\n const innerStyles = {\r\n \"height\": \"100%\",\r\n \"width\": \"300px\",\r\n \"maxWidth\": \"300px\",\r\n \"display\": \"flex\",\r\n \"alignItems\": \"center\",\r\n \"justifyContent\": \"center\",\r\n \"background\": \"rgb(255 255 255 / 76%)\"\r\n };\r\n return isAuthenticated\r\n ? React.createElement(React.Fragment, null, props.children)\r\n : React.createElement(\"div\", { style: unAuthenticatedUserStyles },\r\n React.createElement(\"div\", { style: innerStyles },\r\n React.createElement(PrimaryButton, { onClick: () => props.auth.loginPopup(), text: t('logIn'), style: {\r\n backgroundColor: \"rgb(78 156 166)\",\r\n borderColor: \"rgb(45 119 131)\"\r\n } })));\r\n};\r\nexport const useHost = () => {\r\n const context = useContext($RootContext);\r\n if (context == null)\r\n throw new Error('No es posible acceder al proveedor de Host, verifique que el componente esté dentro del proveedor ');\r\n return context;\r\n};\r\nexport const useHttpClient = (baseUrl = '', module = '') => {\r\n if (_authenticationManager == null)\r\n throw new Error('No es posible acceder al contexto de autenticacion, verifique que el componente esté dentro del proveedor ');\r\n const httpClient = new HttpClient({ baseUrl, module, auth: _authenticationManager });\r\n return httpClient;\r\n};\r\nexport const getRootAppUrl = () => {\r\n if (_rootProps == null)\r\n throw new Error('No es posible acceder al contexto de la aplicación, verifique que el componente esté dentro del proveedor ');\r\n return _rootProps === null || _rootProps === void 0 ? void 0 : _rootProps.baseUrl;\r\n};\r\n","import { Icon, TextField } from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useLayout } from \"../hooks\";\r\nimport { isNullOrEmpty } from \"../utilities\";\r\nimport { LayoutCommandBar } from \"./LayoutCommandBar\";\r\nimport { NotificationsButton } from \"./NotificationsButton\";\r\nimport { ShowNavButton } from \"./ShowNavButton\";\r\nimport { UserControl } from \"./UserControl\";\r\nlet searchCallback;\r\nexport const useSearch = () => {\r\n const searchValue = useSelector(x => x.layout.search) || '';\r\n return {\r\n subscribe: (callback) => {\r\n searchCallback = callback;\r\n },\r\n unsubscribe: () => {\r\n searchCallback = undefined;\r\n },\r\n value: searchValue\r\n };\r\n};\r\nexport const Header = (props) => {\r\n const layout = useLayout();\r\n const search = useSearch();\r\n const showSearchBox = useSelector(x => x.layout.showSearchBox) || false;\r\n const searchBoxPlaceholder = useSelector(x => x.layout.searchBoxPlaceholder) || 'Search';\r\n const searchValue = useSelector(x => x.layout.search) || '';\r\n const headerStyle = {\r\n zIndex: \"1\",\r\n height: \"var(--acthemecontainerheader-height)\",\r\n borderColor: \"transparent\",\r\n display: \"flex\",\r\n flexDirection: \"column\"\r\n };\r\n const searchContainerStyle = {\r\n height: \"44px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n background: \"transparent\"\r\n };\r\n const useControlStyle = {\r\n marginRight: \"8px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: '60px'\r\n };\r\n return React.createElement(\"header\", { style: headerStyle },\r\n React.createElement(\"div\", { style: searchContainerStyle },\r\n React.createElement(\"div\", { style: { width: '60px' } },\r\n React.createElement(ShowNavButton, { onNavItemClick: props.onNavItemClick })),\r\n React.createElement(\"div\", { style: { \"maxWidth\": \"49%\", width: '300px' }, \"data-role\": \"search-container\" }, showSearchBox && React.createElement(TextField, { type: \"text\", placeholder: searchBoxPlaceholder, value: searchValue, onChange: (_, e) => layout.setSearchBoxValue(e), borderless: true, onRenderPrefix: () => {\r\n if (isNullOrEmpty(searchValue))\r\n return React.createElement(Icon, { iconName: \"Search\" });\r\n return React.createElement(Icon, { iconName: \"Clear\", style: { cursor: 'pointer' }, onClick: () => layout.resetSearchBox() });\r\n }, onKeyDown: (e) => {\r\n if (e.key === 'Enter') {\r\n searchCallback === null || searchCallback === void 0 ? void 0 : searchCallback(searchValue);\r\n }\r\n else if (e.key === 'Escape') {\r\n layout.resetSearchBox();\r\n }\r\n }, styles: {\r\n root: {\r\n borderRadius: '5px',\r\n boxShadow: \"0 1px 2px rgba(0, 0, 0, .14), 0 0 2px rgba(0, 0, 0, .12)\",\r\n maxWidth: \"468px\",\r\n width: \"100%\"\r\n },\r\n fieldGroup: {\r\n borderRadius: '5px'\r\n },\r\n prefix: {\r\n borderRadius: '5px',\r\n cursor: 'pointer'\r\n }\r\n } })),\r\n React.createElement(\"div\", { style: useControlStyle },\r\n React.createElement(NotificationsButton, { onClear: props.onClearNotification, onRemove: props.onRemoveNotification }),\r\n React.createElement(UserControl, { onUserMenuItemClick: props.onUserMenuItemClick }))),\r\n React.createElement(LayoutCommandBar, null));\r\n};\r\n","import { CommandBar, useTheme } from '@fluentui/react';\r\nimport { PaneDirective, PanesDirective, SplitterComponent } from '@syncfusion/ej2-react-layouts';\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { batch } from 'react-redux';\r\nimport { useMediaQuery } from 'usehooks-ts';\r\nimport { Column, Grid, Row, Subtitle, XCheckbox, XDataTable, XTextField, XTreeView } from '../components';\r\nimport { IoipIcons } from '../components/IoipIcons';\r\nimport { Paginator } from '../components/Paginator';\r\nimport { DataTableRequest } from '../data';\r\nimport { useLayout, useType } from '../hooks';\r\nimport { Page } from '../surfaces';\r\nimport { defaultIDataTableRequest } from '../types';\r\nimport { TreeNode } from '../types/TreeNode';\r\nimport { useSearch } from './Header';\r\nimport { useCommandBar } from './LayoutCommandBar';\r\nexport const ACDataTablePage = function ACDataTablePage(props) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;\r\n const { t } = useTranslation();\r\n const commandBar = useCommandBar();\r\n const isSidebarVisible = useMediaQuery('(min-width:540px)');\r\n const theme = useTheme();\r\n const layout = useLayout();\r\n const search = useSearch();\r\n const [columns, setColumns] = useState([]);\r\n const [foldersNode, setFoldersNode] = useState();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [commandBarFarItems, setCommandBarFarItems] = useState(props.commandBarFarItems || []);\r\n const [request, setRequest] = useType(defaultIDataTableRequest());\r\n const [resp, setResponseStatus] = useState({\r\n totalPages: 0,\r\n lastItem: 0,\r\n totalRecords: 0,\r\n items: []\r\n });\r\n const [visibleColumns, setVisibleColumns] = useState(((_a = props.columns) === null || _a === void 0 ? void 0 : _a.map(x => x.name)) || []);\r\n const [compact, setCompact] = useState(props.compact || false);\r\n const [showSettings, setShowSettings] = useState(false);\r\n useEffect(function onColumnsChanged() {\r\n setColumns(props.columns);\r\n setVisibleColumns(props.columns.map(x => x.name));\r\n }, [props.columns]);\r\n useEffect(function onFoldersChanged() {\r\n const nodes = [\r\n {\r\n id: '__root__',\r\n text: props.rootNodeText || 'Root',\r\n icon: IoipIcons.Folder,\r\n }\r\n ];\r\n const folders = props.folders || [];\r\n for (let i = 0; i < folders.length; i++) {\r\n const folder = folders[i];\r\n const parts = folder.split('/');\r\n parts.reduce((parentPath, part) => {\r\n const fullPath = `${parentPath}/${part}`;\r\n const node = nodes.find(x => x.id === fullPath);\r\n if (node == null) {\r\n nodes.push({\r\n id: fullPath,\r\n text: part,\r\n icon: IoipIcons.Folder,\r\n parentId: parentPath,\r\n onClick: () => {\r\n var _a;\r\n (_a = props.onFolderSelected) === null || _a === void 0 ? void 0 : _a.call(props, fullPath.replace('__root__/', ''));\r\n }\r\n });\r\n }\r\n return fullPath;\r\n }, '__root__');\r\n }\r\n setFoldersNode(TreeNode.createRootNode(nodes, '__root__'));\r\n }, [props.folders]);\r\n useEffect(function onCommandBarFarItemsChanged() {\r\n var _a;\r\n const items = [];\r\n if (((_a = props.commandBarFarItems) === null || _a === void 0 ? void 0 : _a.length) > 0) {\r\n for (let i = 0; i < props.commandBarFarItems.length; i++) {\r\n items.push(props.commandBarFarItems[i]);\r\n }\r\n }\r\n const onChangePaginationLength = (value) => {\r\n setRequest(Object.assign(Object.assign({}, request), { length: value, start: 1 }));\r\n };\r\n const length = request.length || 20;\r\n if (props.showFilters) {\r\n items.push({\r\n key: 'settings',\r\n iconProps: { iconName: 'Filter' },\r\n onClick: () => setShowSettings(x => !x),\r\n checked: showSettings,\r\n });\r\n }\r\n items.push({\r\n key: length.toString(),\r\n iconProps: { iconName: 'NumberedList' },\r\n name: length.toString(),\r\n subMenuProps: {\r\n items: [\r\n {\r\n key: '10',\r\n name: '10',\r\n onClick: () => onChangePaginationLength(10)\r\n },\r\n {\r\n key: '15',\r\n name: '15',\r\n onClick: () => onChangePaginationLength(15)\r\n },\r\n {\r\n key: '20',\r\n name: '20',\r\n onClick: () => onChangePaginationLength(20)\r\n },\r\n {\r\n key: '30',\r\n name: '30',\r\n onClick: () => onChangePaginationLength(30)\r\n },\r\n {\r\n key: '50',\r\n name: '50',\r\n onClick: () => onChangePaginationLength(50)\r\n }\r\n ]\r\n }\r\n });\r\n if (props.useSiteCommandBar) {\r\n commandBar.setFarItems(items);\r\n }\r\n else\r\n setCommandBarFarItems(items);\r\n }, [props.commandBarFarItems, request]);\r\n useEffect(function onRequestChanged() {\r\n downloadServerDataAsync();\r\n }, [request]);\r\n useEffect(function componentDidMount() {\r\n var _a;\r\n (_a = props.refreshRef) === null || _a === void 0 ? void 0 : _a.call(props, () => downloadServerDataAsync());\r\n if (props.useSiteCommandBar) {\r\n batch(() => {\r\n layout.showSearchBox('');\r\n search.subscribe((value) => setRequest({ search: value }));\r\n });\r\n }\r\n return function componentWillUnmount() {\r\n if (props.useSiteCommandBar) {\r\n batch(() => {\r\n commandBar.clearItems();\r\n commandBar.clearFarItems();\r\n search.unsubscribe();\r\n layout.resetSearchBox();\r\n });\r\n }\r\n };\r\n }, []);\r\n useEffect(function onCommandBarChanged() {\r\n var _a;\r\n if (props.useSiteCommandBar)\r\n commandBar.setItems([\r\n ...((_a = props.commandBarItems) !== null && _a !== void 0 ? _a : []),\r\n {\r\n key: 'refresh',\r\n iconProps: { iconName: 'Refresh' },\r\n name: t('toUpdate'),\r\n onClick: () => {\r\n downloadServerDataAsync();\r\n }\r\n }\r\n ]);\r\n }, [props.commandBarItems]);\r\n const downloadServerDataAsync = async () => {\r\n const req = Object.assign({}, request);\r\n req.length = request.length || 20;\r\n if (req.start < 0)\r\n req.start = 0;\r\n setIsLoading(true);\r\n let response;\r\n try {\r\n const r = new DataTableRequest(req);\r\n response = await props.onDownloadServerDataAsync(r);\r\n if (req.start < 0)\r\n req.start = 0;\r\n let lastItem = (Math.max(req.start, 1) * req.length);\r\n if (lastItem > response.recordsFiltered)\r\n lastItem = response.recordsFiltered;\r\n const totalPages = req.length > 0 ? Math.ceil(response.recordsFiltered / req.length) : 0;\r\n setResponseStatus({\r\n totalPages,\r\n lastItem,\r\n totalRecords: response.recordsFiltered,\r\n items: response.data || []\r\n });\r\n }\r\n catch (error) {\r\n console.log(error);\r\n }\r\n finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n const onSearchTextKeyUp = (event) => {\r\n if (!isLoading) {\r\n if (event.keyCode === 13) {\r\n setRequest(Object.assign(Object.assign({}, request), { search: search.value, start: 1 }));\r\n }\r\n }\r\n };\r\n let start = ((request.start - 1) * request.length) + 1;\r\n if (start < 0)\r\n start = 1;\r\n const renderTable = () => React.createElement(XDataTable, { columns: columns.filter(x => visibleColumns.includes(x.name)), compact: compact, items: resp.items, onSelectionChanged: props.onSelectionChanged, selectedItems: props.selectedItems || [], selectionMode: props.selectionMode, request: request, onDownloadServerData: async (request) => {\r\n downloadServerDataAsync();\r\n }, filters: request.filters, onFiltersChange: filters => setRequest(filters), showFilters: props.showFilters });\r\n return React.createElement(Page, { title: props.title, onRenderHeader: props.useSiteCommandBar ? null : React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { \"data-role\": \"datatable-header\", style: Object.assign({ alignItems: \"center\", backdropFilter: \"blur(6px)\", backgroundColor: theme.palette.white, borderRadius: \"6px\", boxShadow: \"rgba(47, 43, 61, 0.14) 0px 2px 6px 0px\", boxSizing: \"border-box\", color: \"rgba(47, 43, 61, 0.78)\", display: \"flex\", justifyContent: \"space-between\", lineHeight: \"22px\", minHeight: \"44px\", height: \"44px\", padding: \"0px 5px 0px 10px\", position: \"relative\", userSelect: \"none\", marginLeft: \"5px\", marginRight: \"5px\", paddingRight: 0, paddingLeft: 0 }, (_b = props.styles) === null || _b === void 0 ? void 0 : _b.header) },\r\n React.createElement(\"div\", { style: { width: '70%' } },\r\n React.createElement(CommandBar, { items: [\r\n ...(props.commandBarItems || []),\r\n {\r\n key: 'refresh',\r\n iconProps: { iconName: 'Refresh' },\r\n name: t('toUpdate'),\r\n onClick: () => {\r\n downloadServerDataAsync();\r\n }\r\n }\r\n ], styles: {\r\n root: Object.assign({ paddingLeft: 5, marginLeft: 0 }, (_e = (_d = (_c = props.styles) === null || _c === void 0 ? void 0 : _c.subComponents) === null || _d === void 0 ? void 0 : _d.commandBar) === null || _e === void 0 ? void 0 : _e.root)\r\n }, farItems: commandBarFarItems })),\r\n React.createElement(\"div\", { style: { width: '30%', background: '#fafafa' } },\r\n React.createElement(XTextField, { placeholder: 'Buscar...', borderless: true, className: 'mp-search', styles: {\r\n root: {\r\n borderLeft: '1px solid #dbdbdb',\r\n }\r\n }, style: {\r\n height: \"43px\",\r\n backgroundColor: theme.palette.white,\r\n marginTop: \"-5px\",\r\n borderTopRightRadius: \"4px\",\r\n borderBottomRightRadius: \"4px\"\r\n }, onChange: value => layout.setSearchBoxValue(value), value: search.value, onKeyUp: onSearchTextKeyUp })))), onRenderFooter: React.createElement(React.Fragment, null, resp.totalRecords > 0 && React.createElement(React.Fragment, null,\r\n isSidebarVisible && React.createElement(\"span\", null, t('dataTablePaginationMessage', { start, lastItem: resp.lastItem, totalRecords: resp.totalRecords })),\r\n React.createElement(Paginator, { currentPage: request.start, totalPages: resp.totalPages, onChange: (page) => {\r\n setRequest(Object.assign(Object.assign({}, request), { start: page }));\r\n } }))), styles: {\r\n root: Object.assign({}, (_h = (_g = (_f = props.styles) === null || _f === void 0 ? void 0 : _f.subComponents) === null || _g === void 0 ? void 0 : _g.page) === null || _h === void 0 ? void 0 : _h.root),\r\n header: Object.assign({ borderBottom: props.useSiteCommandBar ? 'solid 1px silver' : 'none' }, (_l = (_k = (_j = props.styles) === null || _j === void 0 ? void 0 : _j.subComponents) === null || _k === void 0 ? void 0 : _k.page) === null || _l === void 0 ? void 0 : _l.header),\r\n body: Object.assign({ overflowX: 'auto', marginTop: '10px' }, (_p = (_o = (_m = props.styles) === null || _m === void 0 ? void 0 : _m.subComponents) === null || _o === void 0 ? void 0 : _o.page) === null || _p === void 0 ? void 0 : _p.body),\r\n title: Object.assign({ color: theme.palette.black, fontSize: '18px', fontWeight: '400px' }, (_q = props.styles) === null || _q === void 0 ? void 0 : _q.title),\r\n footer: Object.assign({ justifyContent: isSidebarVisible ? 'space-between' : 'flex-end' }, (_t = (_s = (_r = props.styles) === null || _r === void 0 ? void 0 : _r.subComponents) === null || _s === void 0 ? void 0 : _s.page) === null || _t === void 0 ? void 0 : _t.footer)\r\n } },\r\n React.createElement(\"div\", { style: {\r\n \"display\": \"flex\",\r\n \"width\": \"100%\",\r\n \"overflow\": \"hidden\",\r\n \"height\": \"100%\"\r\n } },\r\n React.createElement(\"div\", { style: {\r\n overflowY: 'auto',\r\n width: '100%',\r\n } },\r\n resp.totalRecords > 0 && React.createElement(React.Fragment, null,\r\n props.showFolders && React.createElement(\"div\", { \"data-role\": \"datatable-page\" },\r\n React.createElement(SplitterComponent, { id: \"detailSplitter\", separatorSize: 2 },\r\n React.createElement(PanesDirective, null,\r\n React.createElement(PaneDirective, { size: '30%', min: '20%', content: () => React.createElement(XTreeView, { node: foldersNode, useIcons: true }) }),\r\n React.createElement(PaneDirective, { size: '70%', min: '40%', content: () => renderTable() })))),\r\n !props.showFolders && React.createElement(React.Fragment, null, renderTable())),\r\n resp.totalRecords === 0 && React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { className: \"io-xdatatable-empty\" }, \"No hay registros para mostrar.\"))),\r\n props.showFilters && showSettings && React.createElement(\"div\", { style: {\r\n minWidth: '300px',\r\n overflowY: 'auto',\r\n maxWidth: '300px',\r\n borderLeft: 'solid 1px silver',\r\n marginLeft: '15px',\r\n boxShadow: 'rgba(0, 0, 0, 0.22) -5px 0 15px -6px'\r\n } },\r\n React.createElement(Grid, null,\r\n React.createElement(Subtitle, { text: 'Columns' }),\r\n props.columns.map(x => React.createElement(Row, { key: `column_${x.name}` },\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(XCheckbox, { label: x.name, value: visibleColumns.includes(x.name), onChange: value => {\r\n if (value) {\r\n setVisibleColumns([...visibleColumns, x.name]);\r\n }\r\n else {\r\n if (visibleColumns.length === 1)\r\n return;\r\n setVisibleColumns(visibleColumns.filter(y => y !== x.name));\r\n }\r\n }, styles: {\r\n root: {\r\n padding: '8px 0px 0px 0px'\r\n }\r\n } })))),\r\n React.createElement(Subtitle, { text: 'Design' }),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(XCheckbox, { label: 'Compact', value: compact, onChange: value => setCompact(value), styles: {\r\n root: {\r\n padding: '8px 0px 0px 0px'\r\n }\r\n } }))),\r\n React.createElement(Subtitle, { text: 'Filters' }), (_u = props.onRenderFilters) === null || _u === void 0 ? void 0 :\r\n _u.call(props, (_v = request.filters) !== null && _v !== void 0 ? _v : [], filters => setRequest(Object.assign(Object.assign({}, request), { filters })))))));\r\n};\r\n","export const defaultIDataTableRequest = () => {\r\n return {\r\n length: 20,\r\n orderColumn: 0,\r\n search: '',\r\n sortDirection: 'asc',\r\n start: 0,\r\n filters: []\r\n };\r\n};\r\n","import { PanelType } from '@fluentui/react';\r\nimport React, { useState } from 'react';\r\nimport { StandarPanel } from './StandarPanel';\r\nexport const ModernDataTableItem = function (props) {\r\n const [errors, setErrors] = useState({});\r\n return React.createElement(StandarPanel, { isOpen: true, type: props.panelType || PanelType.medium, headerText: props.title, hideAcceptButton: props.readonly, onAccept: () => {\r\n if (props.onValidate != null) {\r\n const result = props.onValidate(props.value);\r\n if (!result.isValid) {\r\n setErrors(result.errors);\r\n return;\r\n }\r\n }\r\n props.onAccept();\r\n props.onClose();\r\n }, onClose: () => props.onClose() }, props.onRender(errors, (values) => {\r\n props.onChanged(Object.assign(Object.assign({}, props.value), values));\r\n }));\r\n};\r\n","import { PanelType } from '@fluentui/react';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { ACDataTablePage } from '../layout';\r\nimport { paginateDataAsync } from '../utilities';\r\nimport { Guid } from '../utilities/Guid';\r\nimport { ModernDataTableItem } from './ModernDataTableItem';\r\nexport const StandarDataTablePage = function ModernDataTable(props) {\r\n const data = useRef([]);\r\n const refreshRef = useRef();\r\n const [commandBarItems, setCommandBarItems] = useState();\r\n const [selectedItems, setSelectedItems] = useState([]);\r\n const [selectedItem, setSelectedItem] = useState();\r\n const itemKey = props.itemKey || 'id';\r\n useEffect(function onChangeItems() {\r\n var _a;\r\n data.current = props.items;\r\n (_a = refreshRef.current) === null || _a === void 0 ? void 0 : _a.call(refreshRef);\r\n }, [props.items]);\r\n useEffect(function onBuildCommandBar() {\r\n const items = [];\r\n if (props.readonly) {\r\n if (selectedItems != null) {\r\n items.push({\r\n key: 'view',\r\n name: 'Ver',\r\n iconProps: { iconName: 'View' },\r\n onClick: () => setSelectedItem(selectedItems[0])\r\n });\r\n }\r\n }\r\n else {\r\n items.push({\r\n key: 'add',\r\n name: 'Agregar',\r\n iconProps: { iconName: 'Add' },\r\n onClick: () => {\r\n debugger;\r\n const item = { id: Guid.newGuid().toString() };\r\n setSelectedItem(item);\r\n }\r\n });\r\n if ((selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) === 1) {\r\n items.push({\r\n key: 'edit',\r\n name: 'Editar',\r\n iconProps: { iconName: 'Edit' },\r\n onClick: () => {\r\n setSelectedItem(selectedItems[0]);\r\n }\r\n });\r\n items.push({\r\n key: 'Eliminar',\r\n name: 'Eliminar',\r\n iconProps: { iconName: 'Delete' },\r\n onClick: () => {\r\n var _a;\r\n const items = props.items.filter(o => o[itemKey] !== selectedItems[0][itemKey]);\r\n (_a = props.onItemsChanged) === null || _a === void 0 ? void 0 : _a.call(props, items);\r\n setSelectedItems([]);\r\n }\r\n });\r\n }\r\n }\r\n if (props.commandBarItems)\r\n items.push(...props.commandBarItems);\r\n setCommandBarItems(items);\r\n }, [props.items, selectedItems]);\r\n const onAccept = () => {\r\n var _a;\r\n const items = props.items.slice();\r\n const currentItem = selectedItem;\r\n const index = items.findIndex(o => o[itemKey] === currentItem[itemKey]);\r\n if (index >= 0)\r\n items[index] = currentItem;\r\n else\r\n items.push(currentItem);\r\n (_a = props.onItemsChanged) === null || _a === void 0 ? void 0 : _a.call(props, items);\r\n };\r\n const onDownloadServerDataAsync = async (request) => {\r\n return paginateDataAsync(request, {\r\n data: () => data.current,\r\n });\r\n };\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(ACDataTablePage, { columns: props.columns, commandBarFarItems: [], commandBarItems: commandBarItems, onDownloadServerDataAsync: request => onDownloadServerDataAsync(request), onSelectionChanged: setSelectedItems, refreshRef: x => refreshRef.current = x, selectionMode: props.selectionMode, title: props.tableTitle, useSiteCommandBar: props.useSiteCommandBar, compact: props.compact, onRenderFilters: props.onRenderFilters, folders: props.folders, showFolders: props.showFolders, loadingText: props.loadingText, onFolderSelected: props.onFolderSelected, rootNodeText: props.rootNodeText, showFilters: props.showFilters }),\r\n selectedItem != null && React.createElement(ModernDataTableItem, { value: selectedItems[0], readonly: props.readonly || false, onChanged: item => setSelectedItem(Object.assign(Object.assign({}, selectedItem), item)), onClose: () => setSelectedItem(undefined), onAccept: onAccept, onRender: (errors, setProperty) => {\r\n if (selectedItem != null)\r\n return props.onRenderItemPanel(selectedItem, errors, setProperty);\r\n return React.createElement(React.Fragment, null);\r\n }, title: props.panelTitle, panelType: props.panelType || PanelType.medium, onValidate: props.onValidate }));\r\n};\r\n","import { FontSizes, FontWeights, Label, useTheme } from '@fluentui/react';\r\nimport React from 'react';\r\nimport { Column } from './Column';\r\nimport { Row } from './Row';\r\nimport { XColor } from '../types/XColor';\r\nimport { XFontSize } from '../types/XFontSize';\r\nimport { XFontWeight } from '../types/XFontWeight';\r\nexport const Title = (props) => {\r\n var _a, _b, _c, _d, _e, _f;\r\n const theme = useTheme();\r\n const fontSize = (_a = FontSizes[XFontSize[props.fontSize]]) !== null && _a !== void 0 ? _a : theme.fonts.large.fontSize;\r\n const fontWeight = (_b = FontWeights[XFontWeight[props.fontWeight]]) !== null && _b !== void 0 ? _b : FontWeights.semibold;\r\n const color = (_c = theme.palette[XColor[props.color]]) !== null && _c !== void 0 ? _c : theme.palette.black;\r\n const styles = {\r\n root: Object.assign({ fontSize: fontSize, lineHeight: fontSize, fontWeight: fontWeight, color: color, marginTop: '50px' }, (_d = props.styles) === null || _d === void 0 ? void 0 : _d.root)\r\n };\r\n const label = (_e = props.text) !== null && _e !== void 0 ? _e : '';\r\n return React.createElement(Row, null,\r\n React.createElement(Column, { lg: 12, md: 12, sm: 12, style: (_f = props.styles) === null || _f === void 0 ? void 0 : _f.root }, label.split('\\n').map((x, i) => React.createElement(Label, { styles: styles, key: i }, x))));\r\n};\r\n","import { DefaultButton, Panel, PrimaryButton } from '@fluentui/react';\r\nimport React from 'react';\r\nexport const Wizard = (props) => {\r\n const keys = props.children.map(child => child.key);\r\n const index = keys.findIndex(x => x === props.currentPage);\r\n const child = props.children.find(child => child.key === props.currentPage);\r\n const finishButtonEnabled = props.finishButtonEnabled == null || props.finishButtonEnabled === true;\r\n const nextButtonEnabled = props.nextButtonEnabled == null || props.nextButtonEnabled === true;\r\n const back = () => {\r\n if (index > 0) {\r\n props.onChangePage(keys[index - 1], 'backward');\r\n }\r\n };\r\n const next = () => {\r\n if (index < props.children.length) {\r\n props.onChangePage(keys[index + 1], 'fordward');\r\n }\r\n };\r\n const finish = () => {\r\n if (props.onFinish) {\r\n props.onFinish();\r\n }\r\n };\r\n const cancel = () => {\r\n if (props.onCancel) {\r\n props.onCancel();\r\n }\r\n };\r\n return React.createElement(Panel, { isOpen: props.show, hasCloseButton: false, type: props.panelType, headerText: props.title, isFooterAtBottom: true, onRenderFooterContent: () => React.createElement(\"div\", { className: 'ms-Grid-row' },\r\n React.createElement(\"div\", { className: 'ms-Grid-col ms-u-sm12', style: { textAlign: 'right', userSelect: 'none' } },\r\n React.createElement(DefaultButton, { disabled: index === 0, iconProps: { iconName: 'ChevronLeft' }, onClick: back, text: props.backButtonText || 'Volver' }),\r\n React.createElement(\"span\", null, \"\\u00A0\\u00A0\"),\r\n React.createElement(DefaultButton, { disabled: !nextButtonEnabled || (index === props.children.length - 1), iconProps: { iconName: 'ChevronRight' }, onClick: next, text: props.nextButtonText || 'Siguiente' }),\r\n React.createElement(\"span\", null, \"\\u00A0\\u00A0\"),\r\n React.createElement(PrimaryButton, { disabled: !finishButtonEnabled || (index < props.children.length - 1), iconProps: { iconName: 'Accept' }, onClick: finish, primary: true, text: props.finishButtonText || 'Finalizar' }),\r\n React.createElement(\"span\", null, \"\\u00A0\\u00A0\"),\r\n React.createElement(DefaultButton, { iconProps: { iconName: 'Cancel' }, onClick: cancel, text: 'Cancelar' }))), styles: {\r\n main: {\r\n color: 'red',\r\n }\r\n }, closeButtonAriaLabel: 'Cerrar' },\r\n React.createElement(React.Fragment, null, child));\r\n};\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _XDataTable_sortDirection;\r\nimport { DetailsListLayoutMode } from \"@fluentui/react/lib/DetailsList\";\r\nimport { Selection } from \"@fluentui/react/lib/Selection\";\r\nimport { ShimmeredDetailsList } from '@fluentui/react/lib/ShimmeredDetailsList';\r\nimport React from \"react\";\r\nimport { EmptyColumn } from \"../defaults\";\r\nimport { Guid, isNullOrEmpty } from \"../utilities\";\r\nimport { Column } from './Column';\r\nimport { Grid } from \"./Grid\";\r\nimport { Row } from './Row';\r\nexport class XDataTable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n _XDataTable_sortDirection.set(this, {});\r\n this._selection = new Selection({\r\n onSelectionChanged: () => {\r\n if (this.props.onSelectionChanged) {\r\n this.props.onSelectionChanged(this._selection.getSelection());\r\n }\r\n }\r\n });\r\n this.state = {\r\n columns: this.mapColumns(props.columns || []),\r\n isLoading: false,\r\n items: props.items || [],\r\n lastItem: 0,\r\n recordsFiltered: 0,\r\n selectionMode: props.selectionMode,\r\n request: props.request,\r\n compact: props.compact,\r\n };\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n request: props.request,\r\n items: props.items || [],\r\n columns: this.mapColumns(props.columns || []),\r\n filters: props.filters,\r\n compact: props.compact,\r\n });\r\n }\r\n mapColumns(columns) {\r\n return [\r\n ...columns.map(sColumn => {\r\n const column = {\r\n key: isNullOrEmpty(sColumn.name) ? Guid.newGuid().toString() : sColumn.name,\r\n name: sColumn.name,\r\n minWidth: sColumn.minWidth,\r\n maxWidth: sColumn.maxWidth || sColumn.minWidth + 20,\r\n onRender: (item) => sColumn.onRender(item),\r\n isResizable: sColumn.isResizable,\r\n isSorted: sColumn.isSorted,\r\n isSortedDescending: sColumn.isSortedDescending,\r\n onColumnClick: () => {\r\n const columns = this.state.columns.slice();\r\n const index = columns.findIndex(o => o.key === sColumn.name);\r\n __classPrivateFieldGet(this, _XDataTable_sortDirection, \"f\")[index] = columns[index].isSortedDescending = !__classPrivateFieldGet(this, _XDataTable_sortDirection, \"f\")[index];\r\n columns.map(x => x.isSorted = false);\r\n columns[index].isSorted = true;\r\n columns.filter(o => o.key !== columns[index].key).forEach(o => o.isSorted = false);\r\n this.setState({\r\n columns,\r\n request: Object.assign(Object.assign({}, this.state.request), { orderColumn: this.state.columns.findIndex(o => o.key === sColumn.name), sortDirection: columns[index].isSortedDescending ? 'desc' : 'asc' })\r\n }, () => {\r\n this.props.onDownloadServerData(this.state.request);\r\n });\r\n },\r\n };\r\n return column;\r\n }),\r\n EmptyColumn\r\n ];\r\n }\r\n render() {\r\n const columns = this.state.columns;\r\n return React.createElement(Grid, null,\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(ShimmeredDetailsList, { items: this.state.items, columns: columns, selectionMode: this.state.selectionMode, layoutMode: DetailsListLayoutMode.fixedColumns, isHeaderVisible: true, enableShimmer: this.state.isLoading, selectionPreservedOnEmptyClick: true, compact: this.state.compact, selection: this._selection, shimmerLines: this.state.items.length || this.state.request.length, detailsListStyles: {\r\n root: {\r\n overflow: 'initial'\r\n }\r\n } }))));\r\n }\r\n}\r\n_XDataTable_sortDirection = new WeakMap();\r\n","import React from \"react\";\r\nimport { Checkbox } from \"@fluentui/react\";\r\nexport const XCheckbox = (props) => {\r\n var _a, _b;\r\n return React.createElement(Checkbox, { styles: props.styles, disabled: props.disabled || false, label: props.label || '', title: (_b = (_a = props.title) !== null && _a !== void 0 ? _a : props.label) !== null && _b !== void 0 ? _b : '', onChange: (ev, value) => { var _a; return (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, value); }, checked: props.value || false, onRenderLabel: props.onRenderLabel });\r\n};\r\n","export const NumberExtensions = {\r\n getBrowserDecimalSeparator: () => {\r\n const testNumber = 1.1;\r\n const formated = new Intl.NumberFormat().format(testNumber);\r\n const sep = formated[1];\r\n return sep;\r\n }\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { NumberExtensions } from \"../utilities/NumberExtensions\";\r\nimport { XTextField } from \"./XTextField\";\r\nexport const XCurrencyField = (props) => {\r\n var _a;\r\n const formatValue = (value) => {\r\n const numValue = parseFloat(value) || 0;\r\n let formatedValue = numValue\r\n .toLocaleString('pt-BR', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n return formatedValue;\r\n };\r\n const [currentValue, setCurrentValue] = useState(formatValue((_a = props.value) === null || _a === void 0 ? void 0 : _a.toString()));\r\n const thousandSeparator = '.';\r\n const decimalSeparator = ',';\r\n const localCurrentDecimalSeparator = NumberExtensions.getBrowserDecimalSeparator();\r\n const removeInvalidCharacters = (value) => {\r\n return value.replace(/[^0-9\\,\\.]/g, '');\r\n };\r\n const removeFormat = (value) => {\r\n value = removeInvalidCharacters(value);\r\n const regexThousand = new RegExp(`\\\\${thousandSeparator}`, 'g');\r\n const regexDecimal = new RegExp(`\\\\${decimalSeparator}`);\r\n const result = value\r\n .replace(regexThousand, '')\r\n .replace(regexDecimal, localCurrentDecimalSeparator);\r\n return result;\r\n };\r\n useEffect(() => {\r\n var _a;\r\n setCurrentValue(formatValue((_a = props.value) === null || _a === void 0 ? void 0 : _a.toString()));\r\n }, [props.value]);\r\n return React.createElement(XTextField, { className: props.className, disabled: props.disabled || false, errorMessage: props.errorMessage || '', label: props.label || '', maxLength: props.maxLength, multiline: props.multiline, onFocusCapture: () => setCurrentValue(removeFormat(currentValue)), onChange: x => setCurrentValue(removeInvalidCharacters(x)), onKeyDown: props.onKeyDown, onRenderPrefix: props.onRenderPrefix, onRenderSuffix: props.onRenderSuffix, onBlurCapture: () => {\r\n var _a;\r\n const value = formatValue(currentValue);\r\n const result = removeFormat(value);\r\n setCurrentValue(value);\r\n (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, parseFloat(result) || 0);\r\n }, placeholder: props.placeholder || props.label || '', readonly: props.readonly || false, required: props.required || false, style: props.style, styles: props.styles, value: currentValue });\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _TimeOnly_value, _TimeOnly_format;\r\nexport default class TimeOnly {\r\n constructor(value = null) {\r\n _TimeOnly_value.set(this, void 0);\r\n _TimeOnly_format.set(this, (time) => {\r\n const hours = time.getHours().toString().padStart(2, '0');\r\n const minutes = time.getMinutes().toString().padStart(2, '0');\r\n const seconds = time.getSeconds().toString().padStart(2, '0');\r\n return `${hours}:${minutes}:${seconds}`;\r\n });\r\n if (value == null) {\r\n __classPrivateFieldSet(this, _TimeOnly_value, new Date(1992, 2, 15, 0, 0, 0), \"f\");\r\n return;\r\n }\r\n if (value instanceof TimeOnly) {\r\n __classPrivateFieldSet(this, _TimeOnly_value, __classPrivateFieldGet(value, _TimeOnly_value, \"f\"), \"f\");\r\n return;\r\n }\r\n if (value instanceof Date) {\r\n __classPrivateFieldSet(this, _TimeOnly_value, new Date(value), \"f\");\r\n return;\r\n }\r\n if (typeof value === 'string') {\r\n const [hours, minutes, seconds] = value.split(':').map(part => parseInt(part, 10));\r\n __classPrivateFieldSet(this, _TimeOnly_value, new Date(1992, 2, 15, hours !== null && hours !== void 0 ? hours : 0, minutes !== null && minutes !== void 0 ? minutes : 0, seconds !== null && seconds !== void 0 ? seconds : 0), \"f\");\r\n return;\r\n }\r\n throw new Error('Invalid time value');\r\n }\r\n static parse(timeInput) {\r\n return timeInput instanceof TimeOnly ? timeInput : new TimeOnly(timeInput);\r\n }\r\n greaterThan(other) {\r\n const otherTime = TimeOnly.parse(other);\r\n return __classPrivateFieldGet(this, _TimeOnly_value, \"f\").getTime() > __classPrivateFieldGet(otherTime, _TimeOnly_value, \"f\").getTime();\r\n }\r\n greaterThanOrEquals(other) {\r\n const otherTime = TimeOnly.parse(other);\r\n return __classPrivateFieldGet(this, _TimeOnly_value, \"f\").getTime() >= __classPrivateFieldGet(otherTime, _TimeOnly_value, \"f\").getTime();\r\n }\r\n lessThan(other) {\r\n const otherTime = TimeOnly.parse(other);\r\n return __classPrivateFieldGet(this, _TimeOnly_value, \"f\").getTime() < __classPrivateFieldGet(otherTime, _TimeOnly_value, \"f\").getTime();\r\n }\r\n lessThanOrEquals(other) {\r\n const otherTime = TimeOnly.parse(other);\r\n return __classPrivateFieldGet(this, _TimeOnly_value, \"f\").getTime() <= __classPrivateFieldGet(otherTime, _TimeOnly_value, \"f\").getTime();\r\n }\r\n equals(other) {\r\n const otherTime = TimeOnly.parse(other);\r\n return __classPrivateFieldGet(this, _TimeOnly_value, \"f\").getTime() === __classPrivateFieldGet(otherTime, _TimeOnly_value, \"f\").getTime();\r\n }\r\n addHours(hours) {\r\n const newTime = new Date(__classPrivateFieldGet(this, _TimeOnly_value, \"f\"));\r\n newTime.setHours(__classPrivateFieldGet(this, _TimeOnly_value, \"f\").getHours() + hours);\r\n return new TimeOnly(__classPrivateFieldGet(this, _TimeOnly_format, \"f\").call(this, newTime));\r\n }\r\n addMinutes(minutes) {\r\n const newTime = new Date(__classPrivateFieldGet(this, _TimeOnly_value, \"f\"));\r\n newTime.setMinutes(__classPrivateFieldGet(this, _TimeOnly_value, \"f\").getMinutes() + minutes);\r\n return new TimeOnly(__classPrivateFieldGet(this, _TimeOnly_format, \"f\").call(this, newTime));\r\n }\r\n addSeconds(seconds) {\r\n const newTime = new Date(__classPrivateFieldGet(this, _TimeOnly_value, \"f\"));\r\n newTime.setSeconds(__classPrivateFieldGet(this, _TimeOnly_value, \"f\").getSeconds() + seconds);\r\n return new TimeOnly(__classPrivateFieldGet(this, _TimeOnly_format, \"f\").call(this, newTime));\r\n }\r\n toString() {\r\n return __classPrivateFieldGet(this, _TimeOnly_format, \"f\").call(this, __classPrivateFieldGet(this, _TimeOnly_value, \"f\"));\r\n }\r\n}\r\n_TimeOnly_value = new WeakMap(), _TimeOnly_format = new WeakMap();\r\n","import { DirectionalHint, TooltipHost } from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { XComboBox } from \"./XComboBox\";\r\nimport TimeOnly from \"../datetime/TimeOnly\";\r\nconst options = Array.from({ length: 48 }, (_, i) => {\r\n const hour = Math.floor(i / 2);\r\n const minute = i % 2 === 0 ? '00' : '30';\r\n const key = `${hour.toString().padStart(2, '0')}:${minute}:00`;\r\n const text = `${hour === 0 ? 12 : hour > 12 ? hour - 12 : hour}:${minute} ${hour < 12 ? 'AM' : 'PM'}`;\r\n return { key, text };\r\n});\r\nexport const XTimePicker = (props) => {\r\n const time = new TimeOnly(props.value || '00:00').toString();\r\n return React.createElement(TooltipHost, { content: props.placeholder, directionalHint: DirectionalHint.leftCenter },\r\n React.createElement(XComboBox, { label: props.label, onChange: x => { var _a; return (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, x); }, required: props.required || false, disabled: props.disabled, value: time, errorMessage: props.errorMessage || '', styles: props.styles, options: options }));\r\n};\r\n","import { DirectionalHint, TooltipHost } from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { Column } from \"./Column\";\r\nimport { Grid } from \"./Grid\";\r\nimport { Row } from \"./Row\";\r\nimport { XDatePicker } from \"./XDatePicker\";\r\nimport { XTimePicker } from \"./XTimePicker\";\r\nimport { DateTime } from \"../types/DateTime\";\r\nexport const XDateTimePicker = (props) => {\r\n const value = props.value;\r\n const parts = value === null || value === void 0 ? void 0 : value.split(' ');\r\n return React.createElement(TooltipHost, { content: props.label, directionalHint: DirectionalHint.leftCenter },\r\n React.createElement(Grid, null,\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 6 },\r\n React.createElement(XDatePicker, { label: props.label || props.placeholder, placeholder: props.placeholder || '', onChange: (value) => { var _a; return (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, `${value} ${(parts === null || parts === void 0 ? void 0 : parts[1]) || '00:00:00'}`); }, required: props.required || false, disabled: props.disabled, value: parts === null || parts === void 0 ? void 0 : parts[0], errorMessage: props.errorMessage || '' })),\r\n React.createElement(Column, { size: 6 },\r\n React.createElement(XTimePicker, { label: '_', onChange: value => {\r\n var _a;\r\n (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, `${(parts === null || parts === void 0 ? void 0 : parts[0]) || new DateTime(new Date()).ToString('DD/MM/yyyy')} ${value}`);\r\n }, disabled: props.disabled, value: parts === null || parts === void 0 ? void 0 : parts[1], styles: { label: { color: 'transparent' } } })))));\r\n};\r\n","import React from \"react\";\r\nimport { TextField } from \"@fluentui/react\";\r\nexport const XNumberField = (props) => {\r\n const onChanged = (_, value) => {\r\n value = value.split('').filter(o => !isNaN(Number(o))).join('');\r\n const numberValue = Number(value);\r\n props.onChanged(isNaN(numberValue) ? 0 : numberValue);\r\n };\r\n const value = typeof props.value === 'number'\r\n ? props.value.toString()\r\n : typeof props.value === 'string'\r\n ? props.value\r\n : '';\r\n return React.createElement(TextField, { autoComplete: \"0\", autoFocus: props.autoFocus, borderless: props.borderless, className: props.className, disabled: props.disabled || false, errorMessage: props.errorMessage || '', label: props.label || '', title: props.label || '', maxLength: props.maxLength, multiline: props.multiline, onChange: onChanged, onKeyDown: props.onKeyDown, onRenderPrefix: props.onRenderPrefix, onRenderSuffix: props.onRenderSuffix, placeholder: props.placeholder || props.label || '', readOnly: props.readonly || false, required: props.required || false, style: props.style, styles: props.styles, value: value });\r\n};\r\n","import React from \"react\";\r\nimport { SpreadsheetComponent, SheetsDirective, SheetDirective, ColumnsDirective } from '@syncfusion/ej2-react-spreadsheet';\r\nimport { ColumnDirective, RowDirective, RowsDirective, CellsDirective, CellDirective } from '@syncfusion/ej2-react-spreadsheet';\r\nimport { ConditionalFormatsDirective, ConditionalFormatDirective, RangeDirective, getFormatFromType } from '@syncfusion/ej2-react-spreadsheet';\r\nimport { RangesDirective } from '@syncfusion/ej2-react-spreadsheet';\r\nimport { registerLicense } from '@syncfusion/ej2-base';\r\nregisterLicense('Ngo9BigBOggjHTQxAR8/V1NAaF1cXmhKYVB3WmFZfVpgfV9DaFZURmYuP1ZhSXxXdkZjWH9XdXxQQmBaWUM=');\r\nexport const XSpreadsheet = () => {\r\n let spreadsheet;\r\n const currencyFormat = getFormatFromType('Currency');\r\n const conditionalFormatting = [\r\n {\r\n \"Item Code\": \"AG940Z\",\r\n \"Item Name\": \"Laser Printer\",\r\n \"Quantity\": \"144\",\r\n \"Purchase Price\": \"169.50\",\r\n \"Selling Price\": \"172.00\",\r\n \"Profit\": \"=E3-D3\",\r\n \"Last Updated\": \"5/25/2019\",\r\n \"Rating\": \"4.5\"\r\n },\r\n {\r\n \"Item Code\": \"BJ120K\",\r\n \"Item Name\": \"Scientific Calculator\",\r\n \"Quantity\": \"116\",\r\n \"Purchase Price\": \"21.80\",\r\n \"Selling Price\": \"23.00\",\r\n \"Profit\": \"=E4-D4\",\r\n \"Last Updated\": \"7/28/2019\",\r\n \"Rating\": \"4.0\"\r\n },\r\n {\r\n \"Item Code\": \"BC120M\",\r\n \"Item Name\": \"Wired Keyboard\",\r\n \"Quantity\": \"438\",\r\n \"Purchase Price\": \"26.80\",\r\n \"Selling Price\": \"29.00\",\r\n \"Profit\": \"=E5-D5\",\r\n \"Last Updated\": \"3/30/2020\",\r\n \"Rating\": \"4.25\"\r\n },\r\n {\r\n \"Item Code\": \"BS121L\",\r\n \"Item Name\": \"Memory Card\",\r\n \"Quantity\": \"486\",\r\n \"Purchase Price\": \"23.50\",\r\n \"Selling Price\": \"25.00\",\r\n \"Profit\": \"=E6-D6\",\r\n \"Last Updated\": \"8/20/2019\",\r\n \"Rating\": \"3.5\"\r\n },\r\n {\r\n \"Item Code\": \"BU121K\",\r\n \"Item Name\": \"Coffee Maker\",\r\n \"Quantity\": \"176\",\r\n \"Purchase Price\": \"56.50\",\r\n \"Selling Price\": \"59.00\",\r\n \"Profit\": \"=E7-D7\",\r\n \"Last Updated\": \"2/2/2020\",\r\n \"Rating\": \"4.5\"\r\n },\r\n {\r\n \"Item Code\": \"BD121M\",\r\n \"Item Name\": \"Table Lamp\",\r\n \"Quantity\": \"0\",\r\n \"Purchase Price\": \"22.50\",\r\n \"Selling Price\": \"25.00\",\r\n \"Profit\": \"=E8-D8\",\r\n \"Last Updated\": \"11/11/2019\",\r\n \"Rating\": \"5.0\"\r\n },\r\n {\r\n \"Item Code\": \"AT992X\",\r\n \"Item Name\": \"Document Scanner\",\r\n \"Quantity\": \"116\",\r\n \"Purchase Price\": \"175.00\",\r\n \"Selling Price\": \"177.00\",\r\n \"Profit\": \"=E9-D9\",\r\n \"Last Updated\": \"4/13/2019\",\r\n \"Rating\": \"4.75\"\r\n },\r\n {\r\n \"Item Code\": \"AP992Z\",\r\n \"Item Name\": \"Gaming Headset\",\r\n \"Quantity\": \"58\",\r\n \"Purchase Price\": \"32.00\",\r\n \"Selling Price\": \"35.00\",\r\n \"Profit\": \"=E10-D10\",\r\n \"Last Updated\": \"2/14/2020\",\r\n \"Rating\": \"4.4\"\r\n },\r\n {\r\n \"Item Code\": \"AW920X\",\r\n \"Item Name\": \"Laptop Bag\",\r\n \"Quantity\": \"232\",\r\n \"Purchase Price\": \"18.90\",\r\n \"Selling Price\": \"19.00\",\r\n \"Profit\": \"=E11-D11\",\r\n \"Last Updated\": \"6/10/2019\",\r\n \"Rating\": \"3.9\"\r\n },\r\n {\r\n \"Item Code\": \"AQ920Z\",\r\n \"Item Name\": \"Table Fan\",\r\n \"Quantity\": \"405\",\r\n \"Purchase Price\": \"33.90\",\r\n \"Selling Price\": \"35.00\",\r\n \"Profit\": \"=E12-D12\",\r\n \"Last Updated\": \"5/28/2019\",\r\n \"Rating\": \"3.75\"\r\n },\r\n {\r\n \"Item Code\": \"AE940X\",\r\n \"Item Name\": \"Electric Mop\",\r\n \"Quantity\": \"47\",\r\n \"Purchase Price\": \"153.50\",\r\n \"Selling Price\": \"155.00\",\r\n \"Profit\": \"=E13-D13\",\r\n \"Last Updated\": \"12/18/2019\",\r\n \"Rating\": \"3.9\"\r\n },\r\n {\r\n \"Item Code\": \"UI152C\",\r\n \"Item Name\": \"Smart LED TV\",\r\n \"Quantity\": \"232\",\r\n \"Purchase Price\": \"201.25\",\r\n \"Selling Price\": \"204.00\",\r\n \"Profit\": \"=E14-D14\",\r\n \"Last Updated\": \"3/13/2020\",\r\n \"Rating\": \"4.35\"\r\n },\r\n {\r\n \"Item Code\": \"UD152V\",\r\n \"Item Name\": \"Robotic Vacuum Cleaner\",\r\n \"Quantity\": \"210\",\r\n \"Purchase Price\": \"182.25\",\r\n \"Selling Price\": \"185.00\",\r\n \"Profit\": \"=E15-D15\",\r\n \"Last Updated\": \"8/26/2019\",\r\n \"Rating\": \"4.0\"\r\n },\r\n {\r\n \"Item Code\": \"BK120L\",\r\n \"Item Name\": \"Gaming Mouse\",\r\n \"Quantity\": \"225\",\r\n \"Purchase Price\": \"34.80\",\r\n \"Selling Price\": \"38.00\",\r\n \"Profit\": \"=E16-D16\",\r\n \"Last Updated\": \"1/12/2020\",\r\n \"Rating\": \"4.2\"\r\n },\r\n {\r\n \"Item Code\": \"UF162V\",\r\n \"Item Name\": \"Chair\",\r\n \"Quantity\": \"373\",\r\n \"Purchase Price\": \"104.800\",\r\n \"Selling Price\": \"108.00\",\r\n \"Profit\": \"=E17-D17\",\r\n \"Last Updated\": \"4/12/2019\",\r\n \"Rating\": \"3.25\"\r\n },\r\n {\r\n \"Item Code\": \"UR162C\",\r\n \"Item Name\": \"Welding Gloves\",\r\n \"Quantity\": \"216\",\r\n \"Purchase Price\": \"19.00\",\r\n \"Selling Price\": \"21.00\",\r\n \"Profit\": \"=E18-D18\",\r\n \"Last Updated\": \"11/22/2019\",\r\n \"Rating\": \"3.85\"\r\n }\r\n ];\r\n function onCreated() {\r\n spreadsheet.merge('A1:H1');\r\n spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center' }, 'A2:H2');\r\n spreadsheet.cellFormat({ fontWeight: 'bold', textAlign: 'center', verticalAlign: 'middle', fontSize: '13pt' }, 'A1:H1');\r\n spreadsheet.numberFormat(currencyFormat, 'D3:D18');\r\n spreadsheet.numberFormat(currencyFormat, 'E3:E18');\r\n spreadsheet.numberFormat(currencyFormat, 'F3:F18');\r\n spreadsheet.conditionalFormat({ type: 'BlueDataBar', range: 'D3:D18' });\r\n spreadsheet.conditionalFormat({ type: 'GreenDataBar', range: 'E3:E18' });\r\n spreadsheet.conditionalFormat({ type: 'ThreeStars', range: 'H3:H18' });\r\n spreadsheet.conditionalFormat({ type: 'Top10Items', value: '1', format: { style: { color: '#ffffff', backgroundColor: '#009999', fontWeight: 'bold' } }, range: 'F3:F18' });\r\n spreadsheet.conditionalFormat({\r\n type: 'Bottom10Items',\r\n value: '1', format: {\r\n style: {\r\n color: '#ffffff',\r\n backgroundColor: '#c68d53',\r\n fontWeight: 'bold'\r\n }\r\n },\r\n range: 'F3:F18'\r\n });\r\n }\r\n return React.createElement(SpreadsheetComponent, { openUrl: 'https://services.syncfusion.com/react/production/api/spreadsheet/open', saveUrl: 'https://services.syncfusion.com/react/production/api/spreadsheet/save', ref: (ssObj) => { spreadsheet = ssObj; }, style: {\r\n height: 600\r\n }, created: onCreated },\r\n React.createElement(SheetsDirective, null,\r\n React.createElement(SheetDirective, { name: 'Inventory List' },\r\n React.createElement(RowsDirective, null,\r\n React.createElement(RowDirective, { height: 30 },\r\n React.createElement(CellsDirective, null,\r\n React.createElement(CellDirective, { index: 1, value: 'Inventory List' })))),\r\n React.createElement(RangesDirective, null,\r\n React.createElement(RangeDirective, { dataSource: conditionalFormatting, startCell: 'A2' })),\r\n React.createElement(ConditionalFormatsDirective, null,\r\n React.createElement(ConditionalFormatDirective, { type: 'GYRColorScale', range: 'C3:C18' }),\r\n React.createElement(ConditionalFormatDirective, { type: 'LessThan', cFColor: 'RedFT', value: '8/30/2019', range: 'G3:G18' })),\r\n React.createElement(ColumnsDirective, null,\r\n React.createElement(ColumnDirective, { width: 100 }),\r\n React.createElement(ColumnDirective, { width: 158 }),\r\n React.createElement(ColumnDirective, { width: 72 }),\r\n React.createElement(ColumnDirective, { width: 113 }),\r\n React.createElement(ColumnDirective, { width: 113 }),\r\n React.createElement(ColumnDirective, { width: 77 }),\r\n React.createElement(ColumnDirective, { width: 97 }),\r\n React.createElement(ColumnDirective, { width: 73 })))));\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _DateTime_value, _DateTime_format;\r\nimport DateOnly from \"./DateOnly\";\r\nimport TimeOnly from \"./TimeOnly\";\r\nexport default class DateTime {\r\n constructor(value) {\r\n _DateTime_value.set(this, void 0);\r\n _DateTime_format.set(this, (dateTime) => {\r\n const day = dateTime.getDate().toString().padStart(2, '0');\r\n const month = (dateTime.getMonth() + 1).toString().padStart(2, '0');\r\n const year = dateTime.getFullYear();\r\n const hours = dateTime.getHours().toString().padStart(2, '0');\r\n const minutes = dateTime.getMinutes().toString().padStart(2, '0');\r\n const seconds = dateTime.getSeconds().toString().padStart(2, '0');\r\n return `${day}/${month}/${year} ${hours}:${minutes}:${seconds}`;\r\n });\r\n if (value == null) {\r\n __classPrivateFieldSet(this, _DateTime_value, new Date(), \"f\");\r\n }\r\n else if (typeof value === 'string') {\r\n value = value.trim();\r\n if (/^\\d{2}\\/\\d{2}\\/\\d{4}$/.test(value))\r\n value = `${value} 00:00:00`;\r\n if (!/^\\d{2}\\/\\d{2}\\/\\d{4} \\d{2}:\\d{2}:\\d{2}$/.test(value))\r\n throw new Error('Invalid format. Expected dd/MM/yyyy HH:mm:ss');\r\n const [datePart, timePart] = value.split(' ');\r\n const [day, month, year] = datePart.split('/').map(part => parseInt(part, 10));\r\n const [hours, minutes, seconds] = timePart.split(':').map(part => parseInt(part, 10));\r\n __classPrivateFieldSet(this, _DateTime_value, new Date(year, month - 1, day, hours, minutes, seconds), \"f\");\r\n }\r\n else if (value instanceof Date) {\r\n __classPrivateFieldSet(this, _DateTime_value, value, \"f\");\r\n }\r\n else if (value instanceof DateOnly) {\r\n __classPrivateFieldSet(this, _DateTime_value, value.toDate(), \"f\");\r\n }\r\n else if (value instanceof DateTime) {\r\n __classPrivateFieldSet(this, _DateTime_value, __classPrivateFieldGet(value, _DateTime_value, \"f\"), \"f\");\r\n }\r\n else {\r\n throw new Error('Invalid input');\r\n }\r\n }\r\n static parse(dateTimeInput) {\r\n return dateTimeInput instanceof DateTime ? dateTimeInput : new DateTime(dateTimeInput);\r\n }\r\n greaterThan(other) {\r\n const otherDateTime = DateTime.parse(other);\r\n return __classPrivateFieldGet(this, _DateTime_value, \"f\").getTime() > __classPrivateFieldGet(otherDateTime, _DateTime_value, \"f\").getTime();\r\n }\r\n greaterThanOrEquals(other) {\r\n const otherDateTime = DateTime.parse(other);\r\n return __classPrivateFieldGet(this, _DateTime_value, \"f\").getTime() >= __classPrivateFieldGet(otherDateTime, _DateTime_value, \"f\").getTime();\r\n }\r\n lessThan(other) {\r\n const otherDateTime = DateTime.parse(other);\r\n return __classPrivateFieldGet(this, _DateTime_value, \"f\").getTime() < __classPrivateFieldGet(otherDateTime, _DateTime_value, \"f\").getTime();\r\n }\r\n lessThanOrEquals(other) {\r\n const otherDateTime = DateTime.parse(other);\r\n return __classPrivateFieldGet(this, _DateTime_value, \"f\").getTime() <= __classPrivateFieldGet(otherDateTime, _DateTime_value, \"f\").getTime();\r\n }\r\n equals(other) {\r\n const otherDateTime = DateTime.parse(other);\r\n return __classPrivateFieldGet(this, _DateTime_value, \"f\").getTime() === __classPrivateFieldGet(otherDateTime, _DateTime_value, \"f\").getTime();\r\n }\r\n addDays(days) {\r\n const newDateTime = new Date(__classPrivateFieldGet(this, _DateTime_value, \"f\"));\r\n newDateTime.setDate(__classPrivateFieldGet(this, _DateTime_value, \"f\").getDate() + days);\r\n return new DateTime(__classPrivateFieldGet(this, _DateTime_format, \"f\").call(this, newDateTime));\r\n }\r\n addMonths(months) {\r\n const newDateTime = new Date(__classPrivateFieldGet(this, _DateTime_value, \"f\"));\r\n newDateTime.setMonth(__classPrivateFieldGet(this, _DateTime_value, \"f\").getMonth() + months);\r\n return new DateTime(__classPrivateFieldGet(this, _DateTime_format, \"f\").call(this, newDateTime));\r\n }\r\n addYears(years) {\r\n const newDateTime = new Date(__classPrivateFieldGet(this, _DateTime_value, \"f\"));\r\n newDateTime.setFullYear(__classPrivateFieldGet(this, _DateTime_value, \"f\").getFullYear() + years);\r\n return new DateTime(__classPrivateFieldGet(this, _DateTime_format, \"f\").call(this, newDateTime));\r\n }\r\n addHours(hours) {\r\n const newDateTime = new Date(__classPrivateFieldGet(this, _DateTime_value, \"f\"));\r\n newDateTime.setHours(__classPrivateFieldGet(this, _DateTime_value, \"f\").getHours() + hours);\r\n return new DateTime(__classPrivateFieldGet(this, _DateTime_format, \"f\").call(this, newDateTime));\r\n }\r\n addMinutes(minutes) {\r\n const newDateTime = new Date(__classPrivateFieldGet(this, _DateTime_value, \"f\"));\r\n newDateTime.setMinutes(__classPrivateFieldGet(this, _DateTime_value, \"f\").getMinutes() + minutes);\r\n return new DateTime(__classPrivateFieldGet(this, _DateTime_format, \"f\").call(this, newDateTime));\r\n }\r\n addSeconds(seconds) {\r\n const newDateTime = new Date(__classPrivateFieldGet(this, _DateTime_value, \"f\"));\r\n newDateTime.setSeconds(__classPrivateFieldGet(this, _DateTime_value, \"f\").getSeconds() + seconds);\r\n return new DateTime(__classPrivateFieldGet(this, _DateTime_format, \"f\").call(this, newDateTime));\r\n }\r\n toDateOnly() {\r\n const day = __classPrivateFieldGet(this, _DateTime_value, \"f\").getDate().toString().padStart(2, '0');\r\n const month = (__classPrivateFieldGet(this, _DateTime_value, \"f\").getMonth() + 1).toString().padStart(2, '0');\r\n const year = __classPrivateFieldGet(this, _DateTime_value, \"f\").getFullYear();\r\n const dateOnlyString = `${day}/${month}/${year}`;\r\n return new DateOnly(dateOnlyString);\r\n }\r\n toTimeOnly() {\r\n const hours = __classPrivateFieldGet(this, _DateTime_value, \"f\").getHours().toString().padStart(2, '0');\r\n const minutes = __classPrivateFieldGet(this, _DateTime_value, \"f\").getMinutes().toString().padStart(2, '0');\r\n const seconds = __classPrivateFieldGet(this, _DateTime_value, \"f\").getSeconds().toString().padStart(2, '0');\r\n const timeOnlyString = `${hours}:${minutes}:${seconds}`;\r\n return new TimeOnly(timeOnlyString);\r\n }\r\n toString() {\r\n return __classPrivateFieldGet(this, _DateTime_format, \"f\").call(this, __classPrivateFieldGet(this, _DateTime_value, \"f\"));\r\n }\r\n}\r\n_DateTime_value = new WeakMap(), _DateTime_format = new WeakMap();\r\n","import { useState } from \"react\";\r\nexport const useForceUpdate = () => {\r\n const [value, setValue] = useState(0);\r\n return () => setValue(value => value + 1);\r\n};\r\n","import { DirectionalHint, Icon, Label, TooltipHost, useTheme } from \"@fluentui/react\";\r\nimport React from \"react\";\r\nimport { useForceUpdate } from \"../hooks/useForceState\";\r\nimport { isNullOrEmpty } from \"../utilities\";\r\nexport const XTreeView = (props) => {\r\n var _a, _b;\r\n const theme = useTheme();\r\n const forceUpdate = useForceUpdate();\r\n if (props.node == null)\r\n return React.createElement(React.Fragment, null);\r\n const onContextMenu = (e) => {\r\n e.nativeEvent.preventDefault();\r\n e.nativeEvent.stopPropagation();\r\n if (typeof props.node.onContextMenu === 'function') {\r\n props.node.onContextMenu(e.nativeEvent.target.offsetLeft + e.nativeEvent.layerX + 5, e.nativeEvent.target.offsetTop + e.nativeEvent.layerY + 100);\r\n }\r\n };\r\n const onClick = (e) => {\r\n e.nativeEvent.preventDefault();\r\n e.nativeEvent.stopPropagation();\r\n props.node.isSelected = true;\r\n forceUpdate();\r\n if (typeof props.node.onClick === 'function')\r\n props.node.onClick();\r\n };\r\n const onDoubleClick = () => {\r\n if (typeof props.node.onDoubleClick === 'function') {\r\n if (!isDisabled) {\r\n props.node.onDoubleClick();\r\n }\r\n }\r\n else {\r\n if (props.node.children.length > 0) {\r\n onExpandNodeClick();\r\n }\r\n }\r\n };\r\n const onExpandNodeClick = () => {\r\n props.node.isCollapsed = !props.node.isCollapsed;\r\n forceUpdate();\r\n };\r\n props.node.onChanged = () => forceUpdate();\r\n const draggable = typeof props.node.onDragStart === 'function';\r\n const onDragStart = () => {\r\n if (draggable) {\r\n props.node.onDragStart();\r\n }\r\n };\r\n if (props.node.visible === false)\r\n return React.createElement(React.Fragment, null);\r\n const isDisabled = typeof props.node.disabled === 'boolean' && props.node.disabled === true;\r\n const TREE_NODE_STYLE = {\r\n userSelect: \"none\",\r\n verticalAlign: \"top\",\r\n display: \"inline-block\",\r\n fontWeight: \"bold\",\r\n height: \"16px\",\r\n width: \"16px\",\r\n fontSize: \"16px\",\r\n color: theme.palette.black,\r\n cursor: \"pointer\"\r\n };\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { onContextMenu: onContextMenu, className: 'treenode-line' },\r\n React.createElement(\"div\", { style: TREE_NODE_STYLE }, props.node.children.length > 0 && React.createElement(Icon, { iconName: props.node.isCollapsed === true ? 'ExploreContentSingle' : 'CollapseContentSingle', styles: {}, onClick: onExpandNodeClick })),\r\n !isNullOrEmpty(props.node.icon) && React.createElement(\"div\", { className: \"treenode-icon\" },\r\n props.useIcons && React.createElement(\"img\", { src: props.node.icon, style: { height: '20px' } }),\r\n !props.useIcons && React.createElement(Icon, { iconName: props.node.icon })),\r\n React.createElement(\"div\", { className: `treenode-text` + (isDisabled ? ' treenode-disabled' : ' io-node-enabled') },\r\n React.createElement(TooltipHost, { directionalHint: DirectionalHint.rightCenter, content: ((_b = (_a = props.node).onRenderTooltip) === null || _b === void 0 ? void 0 : _b.call(_a)) || React.createElement(Label, null, props.node.tooltip || props.node.text) },\r\n React.createElement(\"span\", { onClick: onClick, onDoubleClick: onDoubleClick, onContextMenu: onContextMenu, style: Object.assign(Object.assign({}, props.node.style), { fontWeight: props.node.isSelected ? 'bold' : 'normal', userSelect: \"none\" }), draggable: draggable, onDragStart: onDragStart }, props.node.text)))),\r\n React.createElement(\"ul\", { className: \"io-ps-treeview\" }, props.node.visible && !props.node.isCollapsed && props.node.children.map((child) => React.createElement(\"li\", { key: child.id },\r\n React.createElement(XTreeView, { node: child, allowSelect: props.allowSelect, useIcons: props.useIcons })))));\r\n};\r\n","import { TooltipHost } from '@fluentui/react';\r\nimport { SearchableComboBox } from '@ioip/core/lib/components';\r\nimport { EmptyColumn } from '@ioip/core/lib/defaults';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nexport const CitySelector = (props) => {\r\n const { t } = useTranslation();\r\n const onSearch = (keyword, item) => {\r\n var _a, _b, _c, _d;\r\n const includeName = ((_d = (_c = (_b = (_a = item.name) === null || _a === void 0 ? void 0 : _a.normalize(\"NFD\")) === null || _b === void 0 ? void 0 : _b.replace(/[\\u0300-\\u036f]/g, '')) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes(keyword)) || false;\r\n return includeName;\r\n };\r\n return React.createElement(SearchableComboBox, { label: props.label || '', columns: [\r\n {\r\n isResizable: true,\r\n key: 'Nombre',\r\n maxWidth: 300,\r\n minWidth: 180,\r\n name: 'Nombre',\r\n onRender: (item) => React.createElement(TooltipHost, { content: item.name }, item.name)\r\n },\r\n {\r\n isResizable: true,\r\n key: 'Departamento',\r\n maxWidth: 300,\r\n minWidth: 180,\r\n name: 'Departamento',\r\n onRender: (item) => { var _a; return ((_a = item === null || item === void 0 ? void 0 : item.department) === null || _a === void 0 ? void 0 : _a.name) || ''; }\r\n },\r\n EmptyColumn\r\n ], defaultItem: { name: '[Seleccione...]' }, errorMessage: props.errorMessage, keyBinding: x => x.id, onChanged: (item) => props.onChanged(item), onFilter: props.onFilter, onRenderSelectedText: value => {\r\n var _a, _b;\r\n if ((value === null || value === void 0 ? void 0 : value.id) > 0)\r\n return ((_a = value.name) !== null && _a !== void 0 ? _a : '') + (value.department != null ? ` - ${(_b = value.department) === null || _b === void 0 ? void 0 : _b.name}` : '');\r\n else\r\n return '[Seleccione...]';\r\n }, onSearch: onSearch, options: props.options || [], selectedKey: props.selectedKey, disabled: props.disabled });\r\n};\r\n","import React from 'react';\r\nimport { TooltipHost } from '@fluentui/react';\r\nimport { SearchableComboBox } from '@ioip/core/lib/components';\r\nimport { EmptyColumn } from '@ioip/core/lib/defaults';\r\nexport const CountrySelector = (props) => {\r\n const onSearch = (keyword, item) => {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n const includeName = ((_d = (_c = (_b = (_a = item.name) === null || _a === void 0 ? void 0 : _a.normalize(\"NFD\")) === null || _b === void 0 ? void 0 : _b.replace(/[\\u0300-\\u036f]/g, '')) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes(keyword)) || false;\r\n const includeCode = ((_h = (_g = (_f = (_e = item.code) === null || _e === void 0 ? void 0 : _e.normalize(\"NFD\")) === null || _f === void 0 ? void 0 : _f.replace(/[\\u0300-\\u036f]/g, '')) === null || _g === void 0 ? void 0 : _g.toLowerCase()) === null || _h === void 0 ? void 0 : _h.includes(keyword)) || false;\r\n return includeName || includeCode;\r\n };\r\n return React.createElement(SearchableComboBox, { label: props.label || '', columns: [\r\n {\r\n key: 'Nombre',\r\n name: 'Nombre',\r\n fieldName: 'Nombre',\r\n minWidth: 250,\r\n maxWidth: 500,\r\n isResizable: true,\r\n onRender: (item) => React.createElement(TooltipHost, { content: item.name }, item.name)\r\n },\r\n EmptyColumn\r\n ], defaultItem: { name: '[Seleccione...]' }, errorMessage: props.errorMessage, keyBinding: x => x.id, onChanged: (item) => props.onChanged(item), onFilter: props.onFilter, onRenderSelectedText: value => (value === null || value === void 0 ? void 0 : value.id) > 0 ? value.name : '', onSearch: onSearch, options: props.options, selectedKey: props.selectedKey, disabled: props.disabled });\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _DateOnly_value, _DateOnly_format;\r\nimport DateTime from \"./DateTime\";\r\nexport default class DateOnly {\r\n constructor(value) {\r\n _DateOnly_value.set(this, void 0);\r\n _DateOnly_format.set(this, (date) => {\r\n const day = date.getDate().toString().padStart(2, '0');\r\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\r\n const year = date.getFullYear();\r\n return `${day}/${month}/${year}`;\r\n });\r\n if (value == null) {\r\n __classPrivateFieldSet(this, _DateOnly_value, new Date(), \"f\");\r\n }\r\n else if (value instanceof DateOnly) {\r\n __classPrivateFieldSet(this, _DateOnly_value, __classPrivateFieldGet(value, _DateOnly_value, \"f\"), \"f\");\r\n return;\r\n }\r\n else if (value instanceof Date) {\r\n __classPrivateFieldSet(this, _DateOnly_value, value, \"f\");\r\n return;\r\n }\r\n else if (value instanceof DateTime) {\r\n __classPrivateFieldSet(this, _DateOnly_value, __classPrivateFieldGet(value.toDateOnly(), _DateOnly_value, \"f\"), \"f\");\r\n return;\r\n }\r\n else if (typeof value === 'string') {\r\n value = value.trim().split(' ')[0];\r\n if (!/^\\d{2}\\/\\d{2}\\/\\d{4}$/.test(value))\r\n throw new Error('Invalid format. Expected dd/MM/yyyy');\r\n const [day, month, year] = value.split('/').map(part => parseInt(part, 10));\r\n __classPrivateFieldSet(this, _DateOnly_value, new Date(year, month - 1, day), \"f\");\r\n }\r\n else {\r\n throw new Error('Invalid input');\r\n }\r\n }\r\n static parse(dateInput) {\r\n return dateInput instanceof DateOnly ? dateInput : new DateOnly(dateInput);\r\n }\r\n greaterThan(other) {\r\n const otherDate = DateOnly.parse(other);\r\n return __classPrivateFieldGet(this, _DateOnly_value, \"f\").getTime() > __classPrivateFieldGet(otherDate, _DateOnly_value, \"f\").getTime();\r\n }\r\n greaterThanOrEquals(other) {\r\n const otherDate = DateOnly.parse(other);\r\n return __classPrivateFieldGet(this, _DateOnly_value, \"f\").getTime() >= __classPrivateFieldGet(otherDate, _DateOnly_value, \"f\").getTime();\r\n }\r\n lessThan(other) {\r\n const otherDate = DateOnly.parse(other);\r\n return __classPrivateFieldGet(this, _DateOnly_value, \"f\").getTime() < __classPrivateFieldGet(otherDate, _DateOnly_value, \"f\").getTime();\r\n }\r\n lessThanOrEquals(other) {\r\n const otherDate = DateOnly.parse(other);\r\n return __classPrivateFieldGet(this, _DateOnly_value, \"f\").getTime() <= __classPrivateFieldGet(otherDate, _DateOnly_value, \"f\").getTime();\r\n }\r\n equals(other) {\r\n const otherDate = DateOnly.parse(other);\r\n return __classPrivateFieldGet(this, _DateOnly_value, \"f\").getTime() === __classPrivateFieldGet(otherDate, _DateOnly_value, \"f\").getTime();\r\n }\r\n addDays(days) {\r\n const newDate = new Date(__classPrivateFieldGet(this, _DateOnly_value, \"f\"));\r\n newDate.setDate(__classPrivateFieldGet(this, _DateOnly_value, \"f\").getDate() + days);\r\n return new DateOnly(__classPrivateFieldGet(this, _DateOnly_format, \"f\").call(this, newDate));\r\n }\r\n addMonths(months) {\r\n const newDate = new Date(__classPrivateFieldGet(this, _DateOnly_value, \"f\"));\r\n newDate.setMonth(__classPrivateFieldGet(this, _DateOnly_value, \"f\").getMonth() + months);\r\n return new DateOnly(__classPrivateFieldGet(this, _DateOnly_format, \"f\").call(this, newDate));\r\n }\r\n addYears(years) {\r\n const newDate = new Date(__classPrivateFieldGet(this, _DateOnly_value, \"f\"));\r\n newDate.setFullYear(__classPrivateFieldGet(this, _DateOnly_value, \"f\").getFullYear() + years);\r\n return new DateOnly(__classPrivateFieldGet(this, _DateOnly_format, \"f\").call(this, newDate));\r\n }\r\n toDateTime() {\r\n const dateTimeString = `${__classPrivateFieldGet(this, _DateOnly_format, \"f\").call(this, __classPrivateFieldGet(this, _DateOnly_value, \"f\"))} 00:00:00`;\r\n return new DateTime(dateTimeString);\r\n }\r\n toDate() {\r\n return new Date(__classPrivateFieldGet(this, _DateOnly_value, \"f\"));\r\n }\r\n toString() {\r\n return __classPrivateFieldGet(this, _DateOnly_format, \"f\").call(this, __classPrivateFieldGet(this, _DateOnly_value, \"f\"));\r\n }\r\n}\r\n_DateOnly_value = new WeakMap(), _DateOnly_format = new WeakMap();\r\n","import React from \"react\";\r\nfunction Dashboard16() {\r\n return (React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"16\", height: \"16\", viewBox: \"0 0 48 48\" },\r\n React.createElement(\"path\", { fill: \"#00acc1\", d: \"M44 24c0 11.044-8.956 20-20 20S4 35.044 4 24 12.956 4 24 4s20 8.956 20 20z\" }),\r\n React.createElement(\"path\", { fill: \"#eee\", d: \"M40 24c0 8.838-7.162 16-16 16S8 32.838 8 24 15.163 8 24 8s16 7.163 16 16z\" }),\r\n React.createElement(\"path\", { fill: \"#263238\", d: \"M22.484 21.414a2.986 2.986 0 00-1.059 4.113 3.049 3.049 0 004.148 1.082 2.98 2.98 0 001.055-4.113 3.045 3.045 0 00-4.144-1.082\" }),\r\n React.createElement(\"path\", { fill: \"#263238\", d: \"M35.301 17.445l-9.375 7.793-2.059-3.461 11.434-4.332z\" }),\r\n React.createElement(\"path\", { fill: \"#ff1744\", d: \"M8.051 25.02h3.952V23H8.05c-.02.332-.05.662-.05 1 0 .344.03.681.051 1.02zm2.349 7.378l3.491-1.859-.949-1.781-3.496 1.862c.28.615.6 1.207.954 1.778z\" }),\r\n React.createElement(\"path\", { fill: \"#90a4ae\", d: \"M17.176 14.082l1.754-1-1.958-3.439c-.607.298-1.197.623-1.758.993l1.962 3.446zm-7.502 2.824l3.427 1.98 1.008-1.75-3.436-1.985c-.372.56-.698 1.15-.999 1.755zM35.996 25h3.953c.021-.332.051-.662.051-1 0-.344-.03-.681-.051-1.02h-3.952V25zm2.674 5.379l-3.529-1.813-.922 1.797 3.52 1.808c.343-.577.661-1.171.931-1.792zM31.211 9.731l-2.008 3.414 1.742 1.023 2.013-3.427a15.987 15.987 0 00-1.747-1.01zM25 8.05c-.332-.02-.662-.05-1-.05-.344 0-.681.03-1.02.051v3.952H25V8.05z\" }),\r\n React.createElement(\"path\", { fill: \"#4dd0e1\", d: \"M23.512 23.145a1 1 0 00-.352 1.371c.285.48.906.641 1.383.359a.996.996 0 00.355-1.371 1.022 1.022 0 00-1.386-.359\" })));\r\n}\r\nexport default Dashboard16;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _City_props;\r\nexport class City {\r\n constructor(props) {\r\n _City_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _City_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _City_props, \"f\").schema.cityId;\r\n }\r\n get departmentId() {\r\n return __classPrivateFieldGet(this, _City_props, \"f\").schema.departmentId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _City_props, \"f\").schema.name || '';\r\n }\r\n get code() {\r\n return __classPrivateFieldGet(this, _City_props, \"f\").schema.code || '';\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _City_props, \"f\").schema.enabled || false;\r\n }\r\n get department() {\r\n if (__classPrivateFieldGet(this, _City_props, \"f\").archivox == null)\r\n return null;\r\n return __classPrivateFieldGet(this, _City_props, \"f\").archivox.departments.firstOrDefault(x => x.id == this.departmentId);\r\n }\r\n fluentUi() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_City_props = new WeakMap();\r\n","import React from 'react';\r\nimport { TooltipHost } from '@fluentui/react';\r\nimport { EmptyColumn, SearchableComboBox } from '@ioip/core/lib';\r\nexport const DepartmentSelector = (props) => {\r\n const onSearch = (keyword, item) => {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n const includeName = ((_d = (_c = (_b = (_a = item.name) === null || _a === void 0 ? void 0 : _a.normalize(\"NFD\")) === null || _b === void 0 ? void 0 : _b.replace(/[\\u0300-\\u036f]/g, '')) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes(keyword)) || false;\r\n const includeCode = ((_h = (_g = (_f = (_e = item.country) === null || _e === void 0 ? void 0 : _e.name.normalize(\"NFD\")) === null || _f === void 0 ? void 0 : _f.replace(/[\\u0300-\\u036f]/g, '')) === null || _g === void 0 ? void 0 : _g.toLowerCase()) === null || _h === void 0 ? void 0 : _h.includes(keyword)) || false;\r\n return includeName || includeCode;\r\n };\r\n return React.createElement(SearchableComboBox, { label: props.label || '', columns: [\r\n {\r\n isResizable: true,\r\n key: 'Nombre',\r\n maxWidth: 300,\r\n minWidth: 180,\r\n name: 'Nombre',\r\n onRender: (item) => React.createElement(TooltipHost, { content: item.name }, item.name)\r\n },\r\n {\r\n isResizable: true,\r\n key: 'País',\r\n maxWidth: 300,\r\n minWidth: 180,\r\n name: 'País',\r\n onRender: (item) => { var _a, _b; return React.createElement(TooltipHost, { content: ((_a = item.country) === null || _a === void 0 ? void 0 : _a.name) || '' }, ((_b = item.country) === null || _b === void 0 ? void 0 : _b.name) || ''); }\r\n },\r\n EmptyColumn\r\n ], defaultItem: { name: '[Seleccione...]' }, errorMessage: props.errorMessage, keyBinding: x => x.id, onChanged: (item) => props.onChanged(item), onFilter: props.onFilter, onRenderSelectedText: value => {\r\n var _a, _b;\r\n if ((value === null || value === void 0 ? void 0 : value.id) > 0)\r\n return ((_a = value.name) !== null && _a !== void 0 ? _a : '') + (value.country ? ` - ${(_b = value.country) === null || _b === void 0 ? void 0 : _b.name}` : '');\r\n else\r\n return '[Seleccione...]';\r\n }, onSearch: onSearch, options: props.options, selectedKey: props.selectedKey, disabled: props.disabled });\r\n};\r\n","import { TooltipHost } from '@fluentui/react';\r\nimport { SearchableComboBox } from '@ioip/core/lib/components';\r\nimport { EmptyColumn } from '@ioip/core/lib/defaults';\r\nimport React from 'react';\r\nexport const RoleSelector = (props) => {\r\n const onSearch = (keyword, item) => {\r\n var _a, _b, _c, _d;\r\n const includeName = ((_d = (_c = (_b = (_a = item.name) === null || _a === void 0 ? void 0 : _a.normalize(\"NFD\")) === null || _b === void 0 ? void 0 : _b.replace(/[\\u0300-\\u036f]/g, '')) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes(keyword)) || false;\r\n return includeName;\r\n };\r\n return React.createElement(SearchableComboBox, { label: props.label || '', columns: [\r\n {\r\n isResizable: true,\r\n key: 'Nombre',\r\n maxWidth: 600,\r\n minWidth: 280,\r\n name: 'Nombre',\r\n onRender: item => React.createElement(TooltipHost, { content: item.name }, item.name)\r\n },\r\n EmptyColumn\r\n ], defaultItem: { name: '[Seleccione...]' }, errorMessage: props.errorMessage, keyBinding: x => x.roleId, onChanged: item => props.onChange(item), onFilter: props.onFilter, onRenderSelectedText: value => { var _a; return (_a = value === null || value === void 0 ? void 0 : value.name) !== null && _a !== void 0 ? _a : '[Seleccione...]'; }, onSearch: onSearch, options: props.options || [], selectedKey: props.selectedKey, disabled: props.disabled });\r\n};\r\n","import { TooltipHost } from '@fluentui/react';\r\nimport { DataTableIcon, SearchableComboBox } from '@ioip/core/lib/components';\r\nimport { EmptyColumn } from '@ioip/core/lib/defaults';\r\nimport { Icons } from '@ioip/core/lib/utilities';\r\nimport React from 'react';\r\nexport const UserSelector = (props) => {\r\n const onSearch = (keyword, item) => {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;\r\n const includeName = ((_d = (_c = (_b = (_a = item.name) === null || _a === void 0 ? void 0 : _a.normalize(\"NFD\")) === null || _b === void 0 ? void 0 : _b.replace(/[\\u0300-\\u036f]/g, '')) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes(keyword)) || false;\r\n const includeLoginName = ((_h = (_g = (_f = (_e = item.loginName) === null || _e === void 0 ? void 0 : _e.normalize(\"NFD\")) === null || _f === void 0 ? void 0 : _f.replace(/[\\u0300-\\u036f]/g, '')) === null || _g === void 0 ? void 0 : _g.toLowerCase()) === null || _h === void 0 ? void 0 : _h.includes(keyword)) || false;\r\n const includeEmail = ((_m = (_l = (_k = (_j = item.email) === null || _j === void 0 ? void 0 : _j.normalize(\"NFD\")) === null || _k === void 0 ? void 0 : _k.replace(/[\\u0300-\\u036f]/g, '')) === null || _l === void 0 ? void 0 : _l.toLowerCase()) === null || _m === void 0 ? void 0 : _m.includes(keyword)) || false;\r\n const includeSection = ((_s = (_r = (_q = (_p = (_o = item.currentSection) === null || _o === void 0 ? void 0 : _o.name) === null || _p === void 0 ? void 0 : _p.normalize(\"NFD\")) === null || _q === void 0 ? void 0 : _q.replace(/[\\u0300-\\u036f]/g, '')) === null || _r === void 0 ? void 0 : _r.toLowerCase()) === null || _s === void 0 ? void 0 : _s.includes(keyword)) || false;\r\n return includeName || includeLoginName || includeEmail || includeSection;\r\n };\r\n return React.createElement(SearchableComboBox, { label: props.label || '', columns: [\r\n {\r\n key: 'icon',\r\n name: '',\r\n fieldName: 'UserName',\r\n minWidth: 24,\r\n maxWidth: 40,\r\n isResizable: true,\r\n onRender: (item) => {\r\n let icon;\r\n if (item.enterpriseApplication) {\r\n if (item.enabled) {\r\n icon = Icons.EnterpriseApplication;\r\n }\r\n else {\r\n icon = Icons.DisabledEnterpriseApplication;\r\n }\r\n }\r\n else {\r\n if (item.externalUser) {\r\n if (item.enabled) {\r\n icon = Icons.ExternalUser;\r\n }\r\n else {\r\n icon = Icons.DisabledExternalUser;\r\n }\r\n }\r\n else {\r\n if (item.enabled) {\r\n icon = Icons.User;\r\n }\r\n else {\r\n icon = Icons.DisabledUser;\r\n }\r\n }\r\n }\r\n return React.createElement(DataTableIcon, { icon: icon });\r\n }\r\n },\r\n {\r\n key: 'Nombre',\r\n name: 'Nombre',\r\n fieldName: 'Nombre',\r\n minWidth: 100,\r\n maxWidth: 150,\r\n isResizable: true,\r\n onRender: (item) => React.createElement(TooltipHost, { content: item.name }, item.name)\r\n },\r\n {\r\n key: 'Sección',\r\n name: 'Sección',\r\n fieldName: 'Sección',\r\n minWidth: 250,\r\n maxWidth: 500,\r\n isResizable: true,\r\n onRender: (item) => { var _a, _b; return React.createElement(TooltipHost, { content: ((_a = item.currentSection) === null || _a === void 0 ? void 0 : _a.name) || '' }, ((_b = item.currentSection) === null || _b === void 0 ? void 0 : _b.name) || ''); }\r\n },\r\n EmptyColumn\r\n ], defaultItem: { name: '[Seleccione...]' }, errorMessage: props.errorMessage, keyBinding: x => x.userId, onChanged: (item) => props.onChanged(item), onFilter: props.onFilter, onRenderSelectedText: value => {\r\n var _a;\r\n if ((value === null || value === void 0 ? void 0 : value.userId) > 0)\r\n return ((_a = value.name) !== null && _a !== void 0 ? _a : '') + (value.currentSection ? ` - ${value.currentSection.name}` : '');\r\n else\r\n return '';\r\n }, onSearch: onSearch, options: props.options, selectedKey: props.selectedKey, disabled: props.disabled });\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Country_props;\r\nexport class Country {\r\n constructor(props) {\r\n _Country_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _Country_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _Country_props, \"f\").schema.countryId || 0;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _Country_props, \"f\").schema.name || '';\r\n }\r\n get code() {\r\n return __classPrivateFieldGet(this, _Country_props, \"f\").schema.code || '';\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _Country_props, \"f\").schema.enabled || false;\r\n }\r\n get telephoneCode() {\r\n return __classPrivateFieldGet(this, _Country_props, \"f\").schema.telephoneCode || '';\r\n }\r\n get departments() {\r\n if (__classPrivateFieldGet(this, _Country_props, \"f\").archivox == null)\r\n return null;\r\n return __classPrivateFieldGet(this, _Country_props, \"f\").archivox.departments.where(x => x.countryId == this.id);\r\n }\r\n get cities() {\r\n if (__classPrivateFieldGet(this, _Country_props, \"f\").archivox == null)\r\n return null;\r\n const departments = this.departments.select(x => x.id).toArray();\r\n return __classPrivateFieldGet(this, _Country_props, \"f\").archivox.cities.where(x => departments.includes(x.departmentId));\r\n }\r\n fluentUi() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_Country_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Department_props;\r\nexport class Department {\r\n constructor(props) {\r\n _Department_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _Department_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _Department_props, \"f\").schema.departmentId || 0;\r\n }\r\n get countryId() {\r\n return __classPrivateFieldGet(this, _Department_props, \"f\").schema.countryId || 0;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _Department_props, \"f\").schema.name || '';\r\n }\r\n get code() {\r\n return __classPrivateFieldGet(this, _Department_props, \"f\").schema.code || '';\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _Department_props, \"f\").schema.enabled || false;\r\n }\r\n get telephoneCode() {\r\n return __classPrivateFieldGet(this, _Department_props, \"f\").schema.telephoneCode || '';\r\n }\r\n get cities() {\r\n if (__classPrivateFieldGet(this, _Department_props, \"f\").archivox == null)\r\n return null;\r\n const departmentId = this.id;\r\n return __classPrivateFieldGet(this, _Department_props, \"f\").archivox.cities.where(x => x.departmentId == departmentId);\r\n }\r\n get country() {\r\n if (__classPrivateFieldGet(this, _Department_props, \"f\").archivox == null)\r\n return null;\r\n return __classPrivateFieldGet(this, _Department_props, \"f\").archivox.countries.firstOrDefault(x => x.id == this.countryId);\r\n }\r\n fluentUi() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_Department_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Profile_props;\r\nexport class Profile {\r\n constructor(props) {\r\n _Profile_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _Profile_props, props, \"f\");\r\n }\r\n get ProfileId() {\r\n return __classPrivateFieldGet(this, _Profile_props, \"f\").schema.ProfileId;\r\n }\r\n get Name() {\r\n return __classPrivateFieldGet(this, _Profile_props, \"f\").schema.Name;\r\n }\r\n get Enabled() {\r\n return __classPrivateFieldGet(this, _Profile_props, \"f\").schema.Enabled;\r\n }\r\n GetComboBoxOption() {\r\n return {\r\n key: this.ProfileId,\r\n text: this.Name\r\n };\r\n }\r\n}\r\n_Profile_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Role_props;\r\nexport class Role {\r\n constructor(props) {\r\n _Role_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _Role_props, props, \"f\");\r\n }\r\n get roleId() {\r\n return __classPrivateFieldGet(this, _Role_props, \"f\").schema.roleId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _Role_props, \"f\").schema.name;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _Role_props, \"f\").schema.enabled;\r\n }\r\n get description() {\r\n return __classPrivateFieldGet(this, _Role_props, \"f\").schema.description;\r\n }\r\n getComboBoxOption() {\r\n return {\r\n key: this.roleId,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_Role_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Section_props, _Section_manager, _Section_responsible;\r\nexport class Section {\r\n constructor(props) {\r\n _Section_props.set(this, void 0);\r\n _Section_manager.set(this, void 0);\r\n _Section_responsible.set(this, void 0);\r\n __classPrivateFieldSet(this, _Section_props, props, \"f\");\r\n }\r\n get sectionId() {\r\n return __classPrivateFieldGet(this, _Section_props, \"f\").schema.sectionId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _Section_props, \"f\").schema.Name;\r\n }\r\n get code() {\r\n return __classPrivateFieldGet(this, _Section_props, \"f\").schema.Code;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _Section_props, \"f\").schema.Enabled;\r\n }\r\n get baseId() {\r\n return __classPrivateFieldGet(this, _Section_props, \"f\").schema.BaseId;\r\n }\r\n get users() {\r\n return __classPrivateFieldGet(this, _Section_props, \"f\").sdk.users.where(x => x.sectionBaseId == this.baseId);\r\n }\r\n get trdVersionId() {\r\n return __classPrivateFieldGet(this, _Section_props, \"f\").schema.TrdVersionId || 0;\r\n }\r\n get trdVersion() {\r\n const trdVersionId = this.trdVersionId;\r\n return __classPrivateFieldGet(this, _Section_props, \"f\").sdk.trdVersions.firstOrDefault(x => x.trdVersionId == trdVersionId);\r\n }\r\n get group() {\r\n const baseId = this.baseId;\r\n const relatedItems = __classPrivateFieldGet(this, _Section_props, \"f\").sdk.sections.where(x => x.baseId == baseId);\r\n return relatedItems;\r\n }\r\n getComboBoxOption() {\r\n return {\r\n key: this.sectionId,\r\n text: this.name\r\n };\r\n }\r\n get manager() {\r\n if (__classPrivateFieldGet(this, _Section_manager, \"f\") == null) {\r\n const comparer = (user) => {\r\n const parts = user.loginName.split('|');\r\n const loginName = parts[parts.length - 1].trim().toLowerCase();\r\n return loginName === __classPrivateFieldGet(this, _Section_props, \"f\").schema.Manager.toLowerCase();\r\n };\r\n __classPrivateFieldSet(this, _Section_manager, __classPrivateFieldGet(this, _Section_props, \"f\").sdk.users.firstOrDefault(comparer), \"f\");\r\n }\r\n return __classPrivateFieldGet(this, _Section_manager, \"f\");\r\n }\r\n get responsible() {\r\n if (__classPrivateFieldGet(this, _Section_responsible, \"f\") == null) {\r\n const comparer = (user) => {\r\n const parts = user.loginName.split('|');\r\n const loginName = parts[parts.length - 1].trim().toLowerCase();\r\n return loginName === __classPrivateFieldGet(this, _Section_props, \"f\").schema.ResponsibleUser.toLowerCase();\r\n };\r\n __classPrivateFieldSet(this, _Section_responsible, __classPrivateFieldGet(this, _Section_props, \"f\").sdk.users.firstOrDefault(comparer), \"f\");\r\n }\r\n return __classPrivateFieldGet(this, _Section_responsible, \"f\");\r\n }\r\n toJson() {\r\n return JSON.stringify({\r\n BaseId: this.baseId,\r\n SectionId: this.sectionId,\r\n Name: this.name\r\n }, null, 2);\r\n }\r\n}\r\n_Section_props = new WeakMap(), _Section_manager = new WeakMap(), _Section_responsible = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Serie_props, _Serie_subseries, _Serie_trdVersion;\r\nexport class Serie {\r\n constructor(props) {\r\n _Serie_props.set(this, void 0);\r\n _Serie_subseries.set(this, void 0);\r\n _Serie_trdVersion.set(this, void 0);\r\n __classPrivateFieldSet(this, _Serie_props, props, \"f\");\r\n }\r\n get serieId() {\r\n return __classPrivateFieldGet(this, _Serie_props, \"f\").schema.IdSerie;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _Serie_props, \"f\").schema.Name;\r\n }\r\n get code() {\r\n return __classPrivateFieldGet(this, _Serie_props, \"f\").schema.Code;\r\n }\r\n get baseId() {\r\n return __classPrivateFieldGet(this, _Serie_props, \"f\").schema.IdSerieBase;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _Serie_props, \"f\").schema.Enabled;\r\n }\r\n get subseries() {\r\n const serieId = this.serieId;\r\n if (__classPrivateFieldGet(this, _Serie_subseries, \"f\") == null)\r\n __classPrivateFieldSet(this, _Serie_subseries, __classPrivateFieldGet(this, _Serie_props, \"f\").sdk.subseries.where(x => x.SerieId == serieId), \"f\");\r\n return __classPrivateFieldGet(this, _Serie_subseries, \"f\");\r\n }\r\n get trdVersion() {\r\n if (__classPrivateFieldGet(this, _Serie_trdVersion, \"f\") == null)\r\n __classPrivateFieldSet(this, _Serie_trdVersion, __classPrivateFieldGet(this, _Serie_props, \"f\").sdk.trdVersions.firstOrDefault(x => x.trdVersionId == __classPrivateFieldGet(this, _Serie_props, \"f\").schema.TrdVersionId), \"f\");\r\n return __classPrivateFieldGet(this, _Serie_trdVersion, \"f\");\r\n }\r\n get group() {\r\n const baseId = this.baseId;\r\n const relatedItems = __classPrivateFieldGet(this, _Serie_props, \"f\").sdk.series.where(x => x.baseId == baseId);\r\n return relatedItems;\r\n }\r\n getComboBoxOption() {\r\n return {\r\n key: this.serieId,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_Serie_props = new WeakMap(), _Serie_subseries = new WeakMap(), _Serie_trdVersion = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Subserie_props, _Subserie_serie;\r\nexport class Subserie {\r\n constructor(props) {\r\n _Subserie_props.set(this, void 0);\r\n _Subserie_serie.set(this, void 0);\r\n __classPrivateFieldSet(this, _Subserie_props, props, \"f\");\r\n }\r\n get SubserieId() {\r\n return __classPrivateFieldGet(this, _Subserie_props, \"f\").schema.subserieId;\r\n }\r\n get BaseId() {\r\n return __classPrivateFieldGet(this, _Subserie_props, \"f\").schema.BaseId;\r\n }\r\n get Name() {\r\n return __classPrivateFieldGet(this, _Subserie_props, \"f\").schema.Name;\r\n }\r\n get Code() {\r\n return __classPrivateFieldGet(this, _Subserie_props, \"f\").schema.Code;\r\n }\r\n get Enabled() {\r\n return __classPrivateFieldGet(this, _Subserie_props, \"f\").schema.Enabled;\r\n }\r\n get TrdVersionId() {\r\n return __classPrivateFieldGet(this, _Subserie_props, \"f\").schema.TrdVersionId;\r\n }\r\n get SerieId() {\r\n return __classPrivateFieldGet(this, _Subserie_props, \"f\").schema.SerieId;\r\n }\r\n get Serie() {\r\n if (__classPrivateFieldGet(this, _Subserie_serie, \"f\") == null)\r\n __classPrivateFieldSet(this, _Subserie_serie, __classPrivateFieldGet(this, _Subserie_props, \"f\").sdk.series.firstOrDefault(x => x.serieId == this.SerieId), \"f\");\r\n return __classPrivateFieldGet(this, _Subserie_serie, \"f\");\r\n }\r\n get TrdVersion() {\r\n var _a;\r\n return ((_a = this.Serie) === null || _a === void 0 ? void 0 : _a.trdVersion) || null;\r\n }\r\n get Users() {\r\n const baseId = this.BaseId;\r\n return __classPrivateFieldGet(this, _Subserie_props, \"f\").sdk.users.where(x => x.sectionBaseId === baseId);\r\n }\r\n get Group() {\r\n const baseId = this.BaseId;\r\n const relatedItems = __classPrivateFieldGet(this, _Subserie_props, \"f\").sdk.subseries.where(x => x.BaseId == baseId);\r\n return relatedItems;\r\n }\r\n GetComboBoxOption() {\r\n return {\r\n key: this.SubserieId,\r\n text: this.Name\r\n };\r\n }\r\n}\r\n_Subserie_props = new WeakMap(), _Subserie_serie = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _TrdVersion_props;\r\nexport class TrdVersion {\r\n constructor(props) {\r\n _TrdVersion_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _TrdVersion_props, props, \"f\");\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _TrdVersion_props, \"f\").schema.enabled;\r\n }\r\n get trdVersionId() {\r\n return __classPrivateFieldGet(this, _TrdVersion_props, \"f\").schema.trdVersionId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _TrdVersion_props, \"f\").schema.name;\r\n }\r\n get series() {\r\n return __classPrivateFieldGet(this, _TrdVersion_props, \"f\").sdk.series.where(x => { var _a; return ((_a = x.trdVersion) === null || _a === void 0 ? void 0 : _a.trdVersionId) == this.trdVersionId; });\r\n }\r\n get subseries() {\r\n return __classPrivateFieldGet(this, _TrdVersion_props, \"f\").sdk.subseries.where(x => { var _a; return ((_a = x.TrdVersion) === null || _a === void 0 ? void 0 : _a.trdVersionId) == this.trdVersionId; });\r\n }\r\n get sections() {\r\n return __classPrivateFieldGet(this, _TrdVersion_props, \"f\").sdk.sections.where(x => { var _a; return ((_a = x.trdVersion) === null || _a === void 0 ? void 0 : _a.trdVersionId) == this.trdVersionId; });\r\n }\r\n GetComboBoxOption() {\r\n return {\r\n key: this.trdVersionId,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_TrdVersion_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _User_props, _User_currentSection;\r\nexport class User {\r\n constructor(props) {\r\n _User_props.set(this, void 0);\r\n _User_currentSection.set(this, void 0);\r\n __classPrivateFieldSet(this, _User_props, props, \"f\");\r\n }\r\n get email() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.Email; }\r\n get enabled() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.Enabled; }\r\n get loginName() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.LoginName; }\r\n get name() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.Name; }\r\n get office() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.Office; }\r\n get officeId() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.OfficeId; }\r\n get position() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.Position; }\r\n get profileId() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.ProfileId; }\r\n get sectionBaseId() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.SectionBaseId; }\r\n get sectionId() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.SectionId; }\r\n get userId() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.UserId; }\r\n get enterpriseApplication() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.EnterpriseApplication; }\r\n get externalUser() { return __classPrivateFieldGet(this, _User_props, \"f\").schema.ExternalUser; }\r\n get sections() {\r\n return __classPrivateFieldGet(this, _User_props, \"f\").archivox.sections.where(x => x.baseId == this.sectionBaseId);\r\n }\r\n get currentSection() {\r\n var _a, _b;\r\n if (__classPrivateFieldGet(this, _User_currentSection, \"f\") == null) {\r\n const sections = ((_b = (_a = __classPrivateFieldGet(this, _User_props, \"f\").archivox.currentTrdVersion) === null || _a === void 0 ? void 0 : _a.sections) === null || _b === void 0 ? void 0 : _b.toArray()) || [];\r\n __classPrivateFieldSet(this, _User_currentSection, sections === null || sections === void 0 ? void 0 : sections.find(x => x.baseId == this.sectionBaseId), \"f\");\r\n }\r\n return __classPrivateFieldGet(this, _User_currentSection, \"f\");\r\n }\r\n getComboBoxOption() {\r\n return {\r\n key: this.userId,\r\n text: this.name\r\n };\r\n }\r\n isMemberOf(...roleId) {\r\n return true;\r\n }\r\n getSchema() {\r\n return __classPrivateFieldGet(this, _User_props, \"f\").schema;\r\n }\r\n}\r\n_User_props = new WeakMap(), _User_currentSection = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _ArchivoxEngine_args, _ArchivoX_args, _ArchivoX_cities, _ArchivoX_countries, _ArchivoX_departments, _ArchivoX_profiles, _ArchivoX_roles, _ArchivoX_sections, _ArchivoX_series, _ArchivoX_subseries, _ArchivoX_trdVersions, _ArchivoX_users;\r\nimport { ReadonlyCollection } from '@ioip/core/lib';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport { City, Country, Department, Profile, Role, Section, Serie, Subserie, TrdVersion, User } from '../types';\r\nimport { useHttpClient } from '@ioip/core/lib/providers/RootApp';\r\nconst $Context = React.createContext(null);\r\nexport class ArchivoxEngine {\r\n constructor(args) {\r\n _ArchivoxEngine_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _ArchivoxEngine_args, args, \"f\");\r\n }\r\n async getCitiesAsync() {\r\n return await __classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").override.getCitiesAsync(__classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").httpClient);\r\n }\r\n async getCountriesAsync() {\r\n return await __classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").override.getCountriesAsync(__classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").httpClient);\r\n }\r\n async getDepartmentsAsync() {\r\n return await __classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").override.getDepartmentsAsync(__classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").httpClient);\r\n }\r\n async getProfilesAsync() {\r\n return await __classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").override.getProfilesAsync(__classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").httpClient);\r\n }\r\n async getSectionsAsync() {\r\n return await __classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").override.getSectionsAsync(__classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").httpClient);\r\n }\r\n async getSeriesAsync() {\r\n return await __classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").override.getSeriesAsync(__classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").httpClient);\r\n }\r\n async getSubseriesAsync() {\r\n return await __classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").override.getSubseriesAsync(__classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").httpClient);\r\n }\r\n async getTrdVersionsAsync() {\r\n return await __classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").override.getTrdVersionsAsync(__classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").httpClient);\r\n }\r\n async getUsersAsync() {\r\n return await __classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").override.getUsersAsync(__classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").httpClient);\r\n }\r\n async getRolesAsync() {\r\n return await __classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").override.getRoles(__classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").httpClient);\r\n }\r\n async searchCaseFilesAsync(request) {\r\n return await __classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").override.searchCaseFilesAsync(__classPrivateFieldGet(this, _ArchivoxEngine_args, \"f\").httpClient, request);\r\n }\r\n}\r\n_ArchivoxEngine_args = new WeakMap();\r\nexport const ArchivoxProvider = (props) => {\r\n const httpClient = useHttpClient(props.baseUrl, 'archivox');\r\n const context = new ArchivoxEngine({ httpClient: httpClient, override: props.override });\r\n return React.createElement($Context.Provider, { value: context }, props.children);\r\n};\r\nexport const useArchivox = (props = {}) => {\r\n const context = useContext($Context);\r\n const [state, setState] = useState([true, null]);\r\n useEffect(() => {\r\n Promise.all([\r\n props.countries ? context.getCountriesAsync() : Promise.resolve([]),\r\n props.departments ? context.getDepartmentsAsync() : Promise.resolve([]),\r\n props.cities ? context.getCitiesAsync() : Promise.resolve([]),\r\n props.profiles ? context.getProfilesAsync() : Promise.resolve([]),\r\n props.roles ? context.getRolesAsync() : Promise.resolve([]),\r\n props.sections ? context.getSectionsAsync() : Promise.resolve([]),\r\n props.series ? context.getSeriesAsync() : Promise.resolve([]),\r\n props.subseries ? context.getSubseriesAsync() : Promise.resolve([]),\r\n props.trdVersions ? context.getTrdVersionsAsync() : Promise.resolve([]),\r\n props.users ? context.getUsersAsync() : Promise.resolve([])\r\n ]).then((data) => {\r\n const [countries, departments, cities, profiles, roles, sections, series, subseries, trdVersions, users] = data;\r\n const instance = new ArchivoX({\r\n cities,\r\n countries,\r\n departments,\r\n profiles,\r\n roles,\r\n sections,\r\n series,\r\n subseries,\r\n trdVersions,\r\n users,\r\n archivoxEngine: context\r\n });\r\n setState([false, instance]);\r\n });\r\n }, []);\r\n if (context == null)\r\n throw new Error('No es posible acceder al contexto de archivox, verifique que el componente esté dentro del proveedor ');\r\n return state;\r\n};\r\nexport class ArchivoX {\r\n constructor(args) {\r\n _ArchivoX_args.set(this, void 0);\r\n _ArchivoX_cities.set(this, new ReadonlyCollection([]));\r\n _ArchivoX_countries.set(this, new ReadonlyCollection([]));\r\n _ArchivoX_departments.set(this, new ReadonlyCollection([]));\r\n _ArchivoX_profiles.set(this, new ReadonlyCollection([]));\r\n _ArchivoX_roles.set(this, new ReadonlyCollection([]));\r\n _ArchivoX_sections.set(this, new ReadonlyCollection([]));\r\n _ArchivoX_series.set(this, new ReadonlyCollection([]));\r\n _ArchivoX_subseries.set(this, new ReadonlyCollection([]));\r\n _ArchivoX_trdVersions.set(this, new ReadonlyCollection([]));\r\n _ArchivoX_users.set(this, new ReadonlyCollection([]));\r\n __classPrivateFieldSet(this, _ArchivoX_args, args, \"f\");\r\n __classPrivateFieldSet(this, _ArchivoX_cities, new ReadonlyCollection((args.cities || []).map(x => new City({ schema: x, archivox: this }))), \"f\");\r\n __classPrivateFieldSet(this, _ArchivoX_countries, new ReadonlyCollection((args.countries || []).map(x => new Country({ schema: x, archivox: this }))), \"f\");\r\n __classPrivateFieldSet(this, _ArchivoX_departments, new ReadonlyCollection((args.departments || []).map(x => new Department({ schema: x, archivox: this }))), \"f\");\r\n __classPrivateFieldSet(this, _ArchivoX_profiles, new ReadonlyCollection((args.profiles || []).map(x => new Profile({ schema: x, sdk: this }))), \"f\");\r\n __classPrivateFieldSet(this, _ArchivoX_roles, new ReadonlyCollection((args.roles || []).map(x => new Role({ schema: x, sdk: this }))), \"f\");\r\n __classPrivateFieldSet(this, _ArchivoX_sections, new ReadonlyCollection((args.sections || []).map(x => new Section({ sdk: this, schema: x }))), \"f\");\r\n __classPrivateFieldSet(this, _ArchivoX_series, new ReadonlyCollection((args.series || []).map(x => new Serie({ schema: x, sdk: this }))), \"f\");\r\n __classPrivateFieldSet(this, _ArchivoX_subseries, new ReadonlyCollection((args.subseries || []).map(x => new Subserie({ sdk: this, schema: x }))), \"f\");\r\n __classPrivateFieldSet(this, _ArchivoX_trdVersions, new ReadonlyCollection((args.trdVersions || []).map(x => new TrdVersion({ schema: x, sdk: this }))), \"f\");\r\n __classPrivateFieldSet(this, _ArchivoX_users, new ReadonlyCollection((args.users || []).map(x => new User({ archivox: this, schema: x }))), \"f\");\r\n }\r\n get version() { return \"2.0.0\"; }\r\n get series() {\r\n return __classPrivateFieldGet(this, _ArchivoX_series, \"f\");\r\n }\r\n get subseries() {\r\n return __classPrivateFieldGet(this, _ArchivoX_subseries, \"f\");\r\n }\r\n get trdVersions() {\r\n return __classPrivateFieldGet(this, _ArchivoX_trdVersions, \"f\");\r\n }\r\n get currentTrdVersion() {\r\n const result = this.trdVersions.firstOrDefault(x => x.enabled);\r\n if (result == null)\r\n console.log('No se ha encontrado una versión de TRD activa', this.trdVersions);\r\n return result;\r\n }\r\n get sections() {\r\n return __classPrivateFieldGet(this, _ArchivoX_sections, \"f\");\r\n }\r\n get users() {\r\n return __classPrivateFieldGet(this, _ArchivoX_users, \"f\");\r\n }\r\n get countries() {\r\n return __classPrivateFieldGet(this, _ArchivoX_countries, \"f\");\r\n }\r\n get departments() {\r\n return __classPrivateFieldGet(this, _ArchivoX_departments, \"f\");\r\n }\r\n get cities() {\r\n return __classPrivateFieldGet(this, _ArchivoX_cities, \"f\");\r\n }\r\n get profiles() {\r\n return __classPrivateFieldGet(this, _ArchivoX_profiles, \"f\");\r\n }\r\n get roles() {\r\n return __classPrivateFieldGet(this, _ArchivoX_roles, \"f\");\r\n }\r\n async searchCaseFilesAsync(request) {\r\n return __classPrivateFieldGet(this, _ArchivoX_args, \"f\").archivoxEngine.searchCaseFilesAsync(request);\r\n }\r\n}\r\n_ArchivoX_args = new WeakMap(), _ArchivoX_cities = new WeakMap(), _ArchivoX_countries = new WeakMap(), _ArchivoX_departments = new WeakMap(), _ArchivoX_profiles = new WeakMap(), _ArchivoX_roles = new WeakMap(), _ArchivoX_sections = new WeakMap(), _ArchivoX_series = new WeakMap(), _ArchivoX_subseries = new WeakMap(), _ArchivoX_trdVersions = new WeakMap(), _ArchivoX_users = new WeakMap();\r\n","export const defaultICaseFileFinderRequest = () => ({\r\n endDate: null,\r\n name: '',\r\n number: '',\r\n sectionId: 0,\r\n serieId: 0,\r\n startDate: null,\r\n subserieId: 0,\r\n userId: 0,\r\n trdVersionId: 0\r\n});\r\n","export var EntityViewColumnFormat;\r\n(function (EntityViewColumnFormat) {\r\n EntityViewColumnFormat[EntityViewColumnFormat[\"default\"] = 0] = \"default\";\r\n EntityViewColumnFormat[EntityViewColumnFormat[\"currency\"] = 1] = \"currency\";\r\n})(EntityViewColumnFormat || (EntityViewColumnFormat = {}));\r\n","export var ActionType;\r\n(function (ActionType) {\r\n ActionType[ActionType[\"undefined\"] = 0] = \"undefined\";\r\n ActionType[ActionType[\"updateEntityItem\"] = 1] = \"updateEntityItem\";\r\n ActionType[ActionType[\"includeDocumentInCaseFile\"] = 2] = \"includeDocumentInCaseFile\";\r\n})(ActionType || (ActionType = {}));\r\n","import { DefaultButton, PanelType } from \"@fluentui/react\";\r\nimport { Column, DataTable, EmptyColumn, Grid, paginateDataAsync, Row, StandarPanel, useType, XDatePicker, XTextField } from \"@ioip/core/lib\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { useMediaQuery } from 'usehooks-ts';\r\nimport { useArchivox } from \"../../providers\";\r\nimport { UserSelector } from \"../UserSelector\";\r\nimport { defaultICaseFileFinderRequest } from \"./ICaseFileFinderRequest\";\r\nexport const CaseFileFinder = (props) => {\r\n var _a;\r\n const x1 = useMediaQuery('(min-height: 800px)');\r\n const x2 = useMediaQuery('(min-height: 900px)');\r\n const x3 = useMediaQuery('(min-height: 1000px)');\r\n const x4 = useMediaQuery('(min-height: 1100px)');\r\n const x5 = useMediaQuery('(min-height: 1200px)');\r\n const x6 = useMediaQuery('(min-height: 1200px)');\r\n const x7 = useMediaQuery('(min-height: 1300px)');\r\n const x8 = useMediaQuery('(min-height: 1400px)');\r\n const x9 = useMediaQuery('(min-height: 1500px)');\r\n const x10 = useMediaQuery('(min-height: 1600px)');\r\n const x11 = useMediaQuery('(min-height: 1700px)');\r\n const x12 = useMediaQuery('(min-height: 1800px)');\r\n const x13 = useMediaQuery('(min-height: 1900px)');\r\n const x14 = useMediaQuery('(min-height: 1200px)');\r\n const [request, setPartialRequest, setRequest] = useType(defaultICaseFileFinderRequest());\r\n const [isArchivoxLoading, archivox] = useArchivox();\r\n const [selectedItem, setSelectedItem] = useState(null);\r\n const [height, setHeight] = useState(0);\r\n const dtRef = useRef(null);\r\n const [items, setItems] = useState([]);\r\n useEffect(function updateDataTableResultHeight() {\r\n const height = window.innerHeight - 370;\r\n setHeight(height);\r\n }, [x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14]);\r\n function onPaginate(request) {\r\n console.log('Cambio Items', items);\r\n return paginateDataAsync(request, {\r\n data: () => items !== null && items !== void 0 ? items : [],\r\n onSearch: (search, item) => item.name.toLowerCase().includes(search.toLowerCase())\r\n });\r\n }\r\n useEffect(function onItemsChanged() {\r\n var _a, _b;\r\n (_b = (_a = dtRef.current) === null || _a === void 0 ? void 0 : _a.refreshTable) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }, [items]);\r\n if (isArchivoxLoading) {\r\n return React.createElement(React.Fragment, null);\r\n }\r\n const onAccept = () => {\r\n props.onAccept(selectedItem);\r\n if (props.closeOnAccept) {\r\n props.onClose();\r\n }\r\n };\r\n const onSearchAsync = async () => {\r\n const result = await archivox.searchCaseFilesAsync(request);\r\n setItems(result !== null && result !== void 0 ? result : []);\r\n };\r\n return React.createElement(StandarPanel, { headerText: 'Buscar expediente', isOpen: true, type: PanelType.large, onAccept: onAccept, onClose: props.onClose, hideAcceptButton: selectedItem == null, acceptButtonText: \"Seleccionar\", closeButtonText: \"Vovler\" },\r\n React.createElement(Grid, { style: { overflowY: 'scroll' } },\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 6 },\r\n React.createElement(XDatePicker, { label: \"Fecha inicial\", value: request.startDate, onChange: startDate => setPartialRequest({ startDate }), placeholder: 'Fecha inicial', required: true })),\r\n React.createElement(Column, { size: 6 },\r\n React.createElement(XDatePicker, { label: \"Fecha final\", value: request.endDate, onChange: endDate => setPartialRequest({ endDate }), placeholder: 'Fecha de fin', required: true }))),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 6 },\r\n React.createElement(XTextField, { label: 'Nombre expediente', onChange: name => setPartialRequest({ name }), placeholder: 'Nombre expediente', value: request.name })),\r\n React.createElement(Column, { size: 6 },\r\n React.createElement(XTextField, { label: \"N\\u00FAmero expediente\", onChange: number => setPartialRequest({ number }), placeholder: \"N\\u00FAmero expediente\", value: request.number }))),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 6 },\r\n React.createElement(UserSelector, { selectedKey: request.userId, label: 'Usuario responsable', options: ((_a = archivox.users) === null || _a === void 0 ? void 0 : _a.toArray()) || [], onChanged: value => setPartialRequest({ userId: (value === null || value === void 0 ? void 0 : value.userId) || 0 }) }))),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12, style: { textAlign: 'right' } },\r\n React.createElement(DefaultButton, { text: 'Buscar', primary: true, onClick: onSearchAsync, styles: { root: { marginRight: '8px' } } }),\r\n React.createElement(DefaultButton, { text: 'Limpiar', primary: false, onClick: () => {\r\n setRequest(defaultICaseFileFinderRequest());\r\n } }))),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12, style: { height } },\r\n React.createElement(DataTable, { columns: [\r\n { key: 'name', name: 'Nombre', onRender: (x) => x.name, minWidth: 100 },\r\n { key: 'number', name: 'Número', onRender: (x) => x.number, minWidth: 100 },\r\n { key: 'serie', name: 'Serie', onRender: (x) => x.serie, minWidth: 150 },\r\n { key: 'subserie', name: 'Subserie', onRender: (x) => x.subserie, minWidth: 150 },\r\n { key: 'section', name: 'Sección', onRender: (x) => x.seccion, minWidth: 150 },\r\n { key: 'responsibleUser', name: 'Usuario responsable', onRender: (x) => x.responsibleUser, minWidth: 100 },\r\n EmptyColumn\r\n ], ref: dtRef, onDownloadServerData: request => {\r\n return paginateDataAsync(request, {\r\n data: () => items,\r\n onSearch: (search, item) => item.name.toLowerCase().includes(search.toLowerCase())\r\n });\r\n }, title: \"Resultados\", onSelectedRow: item => setSelectedItem(item[0]) })))));\r\n};\r\n","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import { Guid } from \"@ioip/core/lib\";\r\nimport { ActionType } from \"./ActionType\";\r\nexport const defaultIAction = () => ({\r\n id: Guid.newGuid().toString(),\r\n type: ActionType.undefined,\r\n order: 0,\r\n disabled: false\r\n});\r\n","import { List } from \"linq.ts\";\r\nexport var PermissionAssignmentType;\r\n(function (PermissionAssignmentType) {\r\n PermissionAssignmentType[PermissionAssignmentType[\"none\"] = 0] = \"none\";\r\n PermissionAssignmentType[PermissionAssignmentType[\"allAuthenticatedUsers\"] = 1] = \"allAuthenticatedUsers\";\r\n PermissionAssignmentType[PermissionAssignmentType[\"anonymousUsers\"] = 2] = \"anonymousUsers\";\r\n PermissionAssignmentType[PermissionAssignmentType[\"user\"] = 3] = \"user\";\r\n PermissionAssignmentType[PermissionAssignmentType[\"contact\"] = 4] = \"contact\";\r\n PermissionAssignmentType[PermissionAssignmentType[\"section\"] = 5] = \"section\";\r\n PermissionAssignmentType[PermissionAssignmentType[\"role\"] = 6] = \"role\";\r\n PermissionAssignmentType[PermissionAssignmentType[\"profile\"] = 7] = \"profile\";\r\n PermissionAssignmentType[PermissionAssignmentType[\"api\"] = 8] = \"api\";\r\n})(PermissionAssignmentType || (PermissionAssignmentType = {}));\r\nexport const GetPermissionAssignmentString = (assignmentType) => {\r\n switch (assignmentType) {\r\n case PermissionAssignmentType.allAuthenticatedUsers: return 'All authenticated users';\r\n case PermissionAssignmentType.anonymousUsers: return 'Anonymous users';\r\n case PermissionAssignmentType.user: return 'User';\r\n case PermissionAssignmentType.contact: return 'Contact';\r\n case PermissionAssignmentType.section: return 'Section';\r\n case PermissionAssignmentType.role: return 'Role';\r\n case PermissionAssignmentType.profile: return 'Profile';\r\n case PermissionAssignmentType.api: return 'Api';\r\n default: return 'Not supported';\r\n }\r\n};\r\nexport const PermissionAssignmentTypeDataSource = new List([\r\n { key: PermissionAssignmentType.allAuthenticatedUsers, text: GetPermissionAssignmentString(PermissionAssignmentType.allAuthenticatedUsers) },\r\n { key: PermissionAssignmentType.anonymousUsers, text: GetPermissionAssignmentString(PermissionAssignmentType.anonymousUsers) },\r\n { key: PermissionAssignmentType.user, text: GetPermissionAssignmentString(PermissionAssignmentType.user) },\r\n { key: PermissionAssignmentType.contact, text: GetPermissionAssignmentString(PermissionAssignmentType.contact) },\r\n { key: PermissionAssignmentType.section, text: GetPermissionAssignmentString(PermissionAssignmentType.section) },\r\n { key: PermissionAssignmentType.role, text: GetPermissionAssignmentString(PermissionAssignmentType.role) },\r\n { key: PermissionAssignmentType.profile, text: GetPermissionAssignmentString(PermissionAssignmentType.profile) },\r\n { key: PermissionAssignmentType.api, text: GetPermissionAssignmentString(PermissionAssignmentType.api) }\r\n]).OrderBy(x => x.text).ToArray();\r\n","import { List } from \"linq.ts\";\r\nexport var PermissionLevel;\r\n(function (PermissionLevel) {\r\n PermissionLevel[PermissionLevel[\"none\"] = 0] = \"none\";\r\n PermissionLevel[PermissionLevel[\"owner\"] = 1] = \"owner\";\r\n PermissionLevel[PermissionLevel[\"reader\"] = 2] = \"reader\";\r\n PermissionLevel[PermissionLevel[\"contributor\"] = 3] = \"contributor\";\r\n})(PermissionLevel || (PermissionLevel = {}));\r\nexport const GetPermissionLevelString = (permissionLevel) => {\r\n switch (permissionLevel) {\r\n case PermissionLevel.none: return 'None';\r\n case PermissionLevel.owner: return 'Owner';\r\n case PermissionLevel.reader: return 'Reader';\r\n case PermissionLevel.contributor: return 'Contibutor';\r\n default: return 'Not supported';\r\n }\r\n};\r\nexport const PermissionLevelDataSource = new List([\r\n { key: PermissionLevel.owner, text: GetPermissionLevelString(PermissionLevel.owner) },\r\n { key: PermissionLevel.reader, text: GetPermissionLevelString(PermissionLevel.reader) },\r\n { key: PermissionLevel.contributor, text: GetPermissionLevelString(PermissionLevel.contributor) }\r\n]).OrderBy(x => x.text).ToArray();\r\n","import { List } from \"linq.ts\";\r\nexport var DataType;\r\n(function (DataType) {\r\n DataType[DataType[\"undefined\"] = 0] = \"undefined\";\r\n DataType[DataType[\"string\"] = 1] = \"string\";\r\n DataType[DataType[\"byte\"] = 2] = \"byte\";\r\n DataType[DataType[\"short\"] = 3] = \"short\";\r\n DataType[DataType[\"int\"] = 4] = \"int\";\r\n DataType[DataType[\"long\"] = 5] = \"long\";\r\n DataType[DataType[\"decimal\"] = 6] = \"decimal\";\r\n DataType[DataType[\"float\"] = 7] = \"float\";\r\n DataType[DataType[\"double\"] = 8] = \"double\";\r\n DataType[DataType[\"boolean\"] = 9] = \"boolean\";\r\n DataType[DataType[\"date\"] = 10] = \"date\";\r\n DataType[DataType[\"time\"] = 11] = \"time\";\r\n DataType[DataType[\"datetime\"] = 12] = \"datetime\";\r\n DataType[DataType[\"uniqueIdentifier\"] = 13] = \"uniqueIdentifier\";\r\n DataType[DataType[\"foreignReference\"] = 14] = \"foreignReference\";\r\n DataType[DataType[\"collection\"] = 15] = \"collection\";\r\n DataType[DataType[\"manyToMany\"] = 16] = \"manyToMany\";\r\n DataType[DataType[\"parent\"] = 17] = \"parent\";\r\n})(DataType || (DataType = {}));\r\nconst items = Object.keys(DataType)\r\n .map(x => Number(x))\r\n .filter(x => x > 0)\r\n .map(x => ({ key: x, text: `${DataType[x]} (${x})`.replace(/([A-Z])/g, ' $1').replace(/(^\\w)/, ch => ch.toUpperCase()) }));\r\nexport const DataTypeOptions = new List(items).OrderBy(o => o.text).ToArray();\r\nexport const isNumber = (value) => {\r\n return value === DataType.byte\r\n || value === DataType.short\r\n || value === DataType.int\r\n || value === DataType.long\r\n || value === DataType.decimal;\r\n};\r\nexport const isString = (value) => {\r\n return value === DataType.string\r\n || value === DataType.uniqueIdentifier;\r\n};\r\nexport const isDate = (value) => {\r\n return value === DataType.date\r\n || value === DataType.datetime;\r\n};\r\n","import { List } from \"linq.ts\";\r\nexport var ControlType;\r\n(function (ControlType) {\r\n ControlType[ControlType[\"undefined\"] = 0] = \"undefined\";\r\n ControlType[ControlType[\"row\"] = 1] = \"row\";\r\n ControlType[ControlType[\"subtitle\"] = 2] = \"subtitle\";\r\n ControlType[ControlType[\"textField\"] = 3] = \"textField\";\r\n ControlType[ControlType[\"comboBox\"] = 4] = \"comboBox\";\r\n ControlType[ControlType[\"checkBox\"] = 6] = \"checkBox\";\r\n ControlType[ControlType[\"button\"] = 7] = \"button\";\r\n ControlType[ControlType[\"dataTable\"] = 8] = \"dataTable\";\r\n ControlType[ControlType[\"numberField\"] = 9] = \"numberField\";\r\n ControlType[ControlType[\"datePicker\"] = 10] = \"datePicker\";\r\n ControlType[ControlType[\"object\"] = 11] = \"object\";\r\n ControlType[ControlType[\"label\"] = 12] = \"label\";\r\n ControlType[ControlType[\"checkBoxList\"] = 13] = \"checkBoxList\";\r\n ControlType[ControlType[\"documentUploader\"] = 14] = \"documentUploader\";\r\n ControlType[ControlType[\"pivot\"] = 15] = \"pivot\";\r\n ControlType[ControlType[\"chart\"] = 16] = \"chart\";\r\n ControlType[ControlType[\"calculatedField\"] = 17] = \"calculatedField\";\r\n ControlType[ControlType[\"component\"] = 18] = \"component\";\r\n ControlType[ControlType[\"caseFileSelector\"] = 19] = \"caseFileSelector\";\r\n ControlType[ControlType[\"documentaryTypeSelector\"] = 20] = \"documentaryTypeSelector\";\r\n ControlType[ControlType[\"documentaryTypeMetadataEditor\"] = 21] = \"documentaryTypeMetadataEditor\";\r\n ControlType[ControlType[\"scheduler\"] = 22] = \"scheduler\";\r\n ControlType[ControlType[\"radicadoEntradaSelector\"] = 23] = \"radicadoEntradaSelector\";\r\n ControlType[ControlType[\"timePicker\"] = 24] = \"timePicker\";\r\n ControlType[ControlType[\"searchableComboBox\"] = 25] = \"searchableComboBox\";\r\n ControlType[ControlType[\"citySelector\"] = 26] = \"citySelector\";\r\n ControlType[ControlType[\"userSelector\"] = 27] = \"userSelector\";\r\n ControlType[ControlType[\"dateTimePicker\"] = 28] = \"dateTimePicker\";\r\n ControlType[ControlType[\"decimalField\"] = 29] = \"decimalField\";\r\n ControlType[ControlType[\"currencyField\"] = 30] = \"currencyField\";\r\n ControlType[ControlType[\"sectionSelector\"] = 31] = \"sectionSelector\";\r\n ControlType[ControlType[\"radicadoSalidaViewer\"] = 32] = \"radicadoSalidaViewer\";\r\n ControlType[ControlType[\"radicadoEntradaViewer\"] = 33] = \"radicadoEntradaViewer\";\r\n ControlType[ControlType[\"countrySelector\"] = 34] = \"countrySelector\";\r\n ControlType[ControlType[\"departmentSelector\"] = 35] = \"departmentSelector\";\r\n ControlType[ControlType[\"title\"] = 36] = \"title\";\r\n ControlType[ControlType[\"image\"] = 37] = \"image\";\r\n ControlType[ControlType[\"video\"] = 38] = \"video\";\r\n ControlType[ControlType[\"clientComponent\"] = 39] = \"clientComponent\";\r\n ControlType[ControlType[\"dataGrid\"] = 40] = \"dataGrid\";\r\n ControlType[ControlType[\"entityDataTable\"] = 41] = \"entityDataTable\";\r\n ControlType[ControlType[\"horizontalLine\"] = 42] = \"horizontalLine\";\r\n ControlType[ControlType[\"card\"] = 43] = \"card\";\r\n ControlType[ControlType[\"commandBar\"] = 44] = \"commandBar\";\r\n ControlType[ControlType[\"reactComponent\"] = 45] = \"reactComponent\";\r\n ControlType[ControlType[\"linkPanel\"] = 46] = \"linkPanel\";\r\n ControlType[ControlType[\"ganttDiagram\"] = 47] = \"ganttDiagram\";\r\n ControlType[ControlType[\"colorSelector\"] = 48] = \"colorSelector\";\r\n})(ControlType || (ControlType = {}));\r\nconst items = Object.keys(ControlType)\r\n .map(x => Number(x))\r\n .filter(x => x > 0)\r\n .map(x => ({ key: x, text: `${ControlType[x]} (${x})`.replace(/([A-Z])/g, ' $1').replace(/(^\\w)/, ch => ch.toUpperCase()) }));\r\nexport const ControlTypeDataSource = new List(items).OrderBy(o => o.text).ToArray();\r\nexport function isPrimitiveControlType(controlType) {\r\n return controlType === ControlType.textField\r\n || controlType === ControlType.numberField\r\n || controlType === ControlType.checkBox\r\n || controlType === ControlType.datePicker\r\n || controlType === ControlType.checkBoxList\r\n || controlType === ControlType.decimalField\r\n || controlType === ControlType.currencyField\r\n || controlType === ControlType.timePicker\r\n || controlType === ControlType.dateTimePicker\r\n || controlType === ControlType.comboBox\r\n || controlType === ControlType.userSelector\r\n || controlType === ControlType.sectionSelector\r\n || controlType === ControlType.countrySelector\r\n || controlType === ControlType.departmentSelector\r\n || controlType === ControlType.citySelector\r\n || controlType === ControlType.calculatedField\r\n || controlType === ControlType.radicadoEntradaSelector\r\n || controlType === ControlType.documentaryTypeSelector\r\n || controlType === ControlType.searchableComboBox;\r\n}\r\n","import { List } from \"linq.ts\";\r\nimport { DataType } from \"./DataType\";\r\nexport var EntityType;\r\n(function (EntityType) {\r\n EntityType[EntityType[\"entity\"] = 1] = \"entity\";\r\n EntityType[EntityType[\"documentRepository\"] = 2] = \"documentRepository\";\r\n})(EntityType || (EntityType = {}));\r\nexport const EntityTypeDataSource = new List([\r\n { key: EntityType.entity, text: 'Entidad' },\r\n { key: EntityType.documentRepository, text: 'Repositorio de documentos' },\r\n]).OrderBy(x => x.text).ToArray();\r\nexport const NativeEntitySchemas = [\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000001',\r\n name: 'ArchivoX - Sección',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000001',\r\n name: 'Codigo',\r\n code: 'Code',\r\n dataType: DataType.uniqueIdentifier,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000030',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000027',\r\n name: 'IdSeccion',\r\n code: 'IdSeccion',\r\n dataType: DataType.int,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000002',\r\n name: 'ArchivoX - Serie',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000003',\r\n name: 'ArchivoX - Subserie',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000004',\r\n name: 'ArchivoX - Usuario',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000005',\r\n name: 'ArchivoX - Rol',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000006',\r\n name: 'ArchivoX - Perfil',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000007',\r\n name: 'ArchivoX - País',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000008',\r\n name: 'ArchivoX - Departamento',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000009',\r\n name: 'ArchivoX - Ciudad',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000010',\r\n name: 'TramiteX - Contacto',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000011',\r\n name: 'TramiteX - Día festivofestivo',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000012',\r\n name: 'TramiteX - Género',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000013',\r\n name: 'TramiteX - Grupo étnico',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000014',\r\n name: 'ArchivoX - Tipo documental',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000015',\r\n name: 'ArchivoX - Documento',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000016',\r\n name: 'ArchivoX - Expediente',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000020',\r\n name: 'TramiteX - Tipo de identificación',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000021',\r\n name: 'ProcesoX - Documento aplicación',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: '00000000-0000-0000-0000-000000000000',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000022',\r\n name: 'TramiteX - Profession',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000041',\r\n name: 'IdProfesion',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000042',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n {\r\n objectId: '00000000-0000-0000-0000-000000000023',\r\n name: 'TramiteX - Contact Type',\r\n code: '',\r\n enabled: true,\r\n schema: {\r\n attributes: [\r\n {\r\n id: '00000000-0000-0000-0000-000000000043',\r\n name: 'IdTipoContacto',\r\n code: '',\r\n dataType: DataType.int,\r\n enabled: true\r\n },\r\n {\r\n id: '00000000-0000-0000-0000-000000000044',\r\n name: 'Nombre',\r\n code: 'Nombre',\r\n dataType: DataType.string,\r\n enabled: true\r\n }\r\n ],\r\n type: EntityType.entity\r\n }\r\n },\r\n];\r\n","export var LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n})(LogLevel || (LogLevel = {}));\r\n","export const NativeType = {\r\n Section: '00000000-0000-0000-0000-000000000001',\r\n Serie: '00000000-0000-0000-0000-000000000002',\r\n Subserie: '00000000-0000-0000-0000-000000000003',\r\n User: '00000000-0000-0000-0000-000000000004',\r\n Role: '00000000-0000-0000-0000-000000000005',\r\n Profile: '00000000-0000-0000-0000-000000000006',\r\n Country: '00000000-0000-0000-0000-000000000007',\r\n Department: '00000000-0000-0000-0000-000000000008',\r\n City: '00000000-0000-0000-0000-000000000009',\r\n Contact: '00000000-0000-0000-0000-000000000010',\r\n Holiday: '00000000-0000-0000-0000-000000000011',\r\n Gender: '00000000-0000-0000-0000-000000000012',\r\n EthnicGroup: '00000000-0000-0000-0000-000000000013',\r\n DocumentaryType: '00000000-0000-0000-0000-000000000014',\r\n ArchivoxDocument: '00000000-0000-0000-0000-000000000015',\r\n Expediente: '00000000-0000-0000-0000-000000000016',\r\n InputFile: '00000000-0000-0000-0000-000000000017',\r\n OutputFile: '00000000-0000-0000-0000-000000000018',\r\n InternalComunication: '00000000-0000-0000-0000-000000000019',\r\n IdentificacionType: '00000000-0000-0000-0000-000000000020',\r\n ApplicationDocument: '00000000-0000-0000-0000-000000000021',\r\n IsNativeType: (value) => {\r\n return value === NativeType.Section\r\n || value === NativeType.Serie\r\n || value === NativeType.Subserie\r\n || value === NativeType.User\r\n || value === NativeType.Role\r\n || value === NativeType.Profile\r\n || value === NativeType.Country\r\n || value === NativeType.Department\r\n || value === NativeType.City\r\n || value === NativeType.Contact\r\n || value === NativeType.Holiday\r\n || value === NativeType.Gender\r\n || value === NativeType.EthnicGroup\r\n || value === NativeType.DocumentaryType\r\n || value === NativeType.ArchivoxDocument\r\n || value === NativeType.Expediente\r\n || value === NativeType.InputFile\r\n || value === NativeType.OutputFile\r\n || value === NativeType.InternalComunication\r\n || value === NativeType.IdentificacionType\r\n || value === NativeType.ApplicationDocument;\r\n }\r\n};\r\n","import { List } from \"linq.ts\";\r\nimport { NativeType } from \"./NativeType\";\r\nexport const NativeTypeDataSource = new List([\r\n { key: NativeType.Section, text: 'ArchivoX - Sección' },\r\n { key: NativeType.Serie, text: 'ArchivoX - Serie' },\r\n { key: NativeType.Subserie, text: 'ArchivoX - Subserie' },\r\n { key: NativeType.User, text: 'ArchivoX - Usuario' },\r\n { key: NativeType.Role, text: 'ArchivoX - Rol' },\r\n { key: NativeType.Profile, text: 'ArchivoX - Perfil' },\r\n { key: NativeType.Country, text: 'ArchivoX - País' },\r\n { key: NativeType.Department, text: 'ArchivoX - Departamento' },\r\n { key: NativeType.City, text: 'ArchivoX - Ciudad' },\r\n { key: NativeType.Contact, text: 'TramiteX - Contacto' },\r\n { key: NativeType.Holiday, text: 'TramiteX - DiaFestivo' },\r\n { key: NativeType.Gender, text: 'TramiteX - Genero' },\r\n { key: NativeType.EthnicGroup, text: 'TramiteX - GrupoEtnico' },\r\n { key: NativeType.DocumentaryType, text: 'ArchivoX - Tipo documental' },\r\n { key: NativeType.ArchivoxDocument, text: 'ArchivoX - Documento' },\r\n { key: NativeType.Expediente, text: 'ArchivoX - Expediente' },\r\n { key: NativeType.InputFile, text: 'TramiteX - Radicado de entrada' },\r\n { key: NativeType.OutputFile, text: 'TramiteX - Radicado de salida' },\r\n { key: NativeType.InternalComunication, text: 'TramiteX - Comunicado interno' },\r\n { key: NativeType.ApplicationDocument, text: 'ProcesoX - Documento (Aplicación)' },\r\n]).OrderBy(o => o.text).ToArray();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Logger_filters;\r\nimport { LogLevel } from \"./LogLevel\";\r\nimport { LogCategory } from \"./LogCategory\";\r\nexport class Logger {\r\n constructor(filters) {\r\n _Logger_filters.set(this, void 0);\r\n __classPrivateFieldSet(this, _Logger_filters, filters, \"f\");\r\n }\r\n logDebug(category, message, ...data) {\r\n if (__classPrivateFieldGet(this, _Logger_filters, \"f\")[category] == null || __classPrivateFieldGet(this, _Logger_filters, \"f\")[category] <= LogLevel.Debug) {\r\n const categoryStyle = 'color: #222; background: #BBB; padding: 5px; font-family: monospace; font-size: 12px;';\r\n const textStyle = 'color: #333; background: #CCC; padding: 5px; font-family: monospace; font-size: 12px';\r\n console.log(`%c[${category}] %c${message}`, categoryStyle, textStyle);\r\n if (data != null) {\r\n console.log(`%c[${category}] `, categoryStyle, data);\r\n }\r\n }\r\n }\r\n logDebugTable(category, message, ...data) {\r\n if (__classPrivateFieldGet(this, _Logger_filters, \"f\")[category] == null || __classPrivateFieldGet(this, _Logger_filters, \"f\")[category] <= LogLevel.Debug) {\r\n const categoryStyle = 'color: #222; background: #BBB; padding: 5px; font-family: monospace; font-size: 12px;';\r\n const textStyle = 'color: #333; background: #CCC; padding: 5px; font-family: monospace; font-size: 12px';\r\n console.log(`%c[${category}] %c${message}`, categoryStyle, textStyle);\r\n if (data != null) {\r\n console.table(data);\r\n }\r\n }\r\n }\r\n logInfo(category, message, ...data) {\r\n if (__classPrivateFieldGet(this, _Logger_filters, \"f\")[category])\r\n console.log(`%c[${category}] %c${message}`, 'color:#03a9f4; background: white; padding: 3px;', 'color:white; background: white; padding: 3px;', data);\r\n }\r\n logWarning(category, message, ...data) {\r\n if (__classPrivateFieldGet(this, _Logger_filters, \"f\")[category])\r\n console.log(`%c[${category}] %c${message}`, 'color:orange; background: white; padding: 3px;', 'color:white; background: white; padding: 3px;', data);\r\n }\r\n logError(category, message, ...data) {\r\n if (__classPrivateFieldGet(this, _Logger_filters, \"f\")[category])\r\n console.log(`%c[${category}] %c${message}`, 'color:red; background: white; padding: 3px;', 'color:white; background: white; padding: 3px;', data);\r\n }\r\n static get DefaultLogLevels() {\r\n return {\r\n [LogCategory.BUILD_BINDING]: LogLevel.Error,\r\n [LogCategory.BUILD_BINDING]: LogLevel.Error,\r\n [LogCategory.CITYSELECTOR_DATASOURCE]: LogLevel.Error,\r\n [LogCategory.COMBOBOX_DATASOURCE]: LogLevel.Error,\r\n [LogCategory.COMBOBOX_RENDER]: LogLevel.Error,\r\n [LogCategory.DATATABLE_DATASOURCE]: LogLevel.Error,\r\n [LogCategory.DATATABLE_RENDER]: LogLevel.Error,\r\n [LogCategory.FIELD_DATASOURCE]: LogLevel.Error,\r\n [LogCategory.FIELD_VALUE_UPDATE]: LogLevel.Error,\r\n [LogCategory.FORM_LOAD]: LogLevel.Error,\r\n [LogCategory.FORM_VALUES_UPDATE]: LogLevel.Error,\r\n [LogCategory.SEARCHABLECOMBOBOX_DATASOURCE]: LogLevel.Error,\r\n [LogCategory.SEARCHABLECOMBOBOX_RENDER]: LogLevel.Error,\r\n [LogCategory.SECTIONSELECTOR_DATASOURCE]: LogLevel.Error,\r\n [LogCategory.SUBSCRIBE_FORM_EVENT]: LogLevel.Error,\r\n [LogCategory.USERSELECTOR_DATASOURCE]: LogLevel.Error,\r\n [LogCategory.DOWNLOAD_PARAMETRIC_ENTITY_ITEMS]: LogLevel.Error,\r\n [LogCategory.DEPARTMENT_SELECTOR_DATASOURCE]: LogLevel.Error,\r\n [LogCategory.COUNTRY_SELECTOR_DATASOURCE]: LogLevel.Error\r\n };\r\n }\r\n static CreateDefault() {\r\n return new Logger(Logger.DefaultLogLevels);\r\n }\r\n}\r\n_Logger_filters = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Process_schema;\r\nexport class Process {\r\n constructor(schema) {\r\n _Process_schema.set(this, void 0);\r\n __classPrivateFieldSet(this, _Process_schema, schema, \"f\");\r\n }\r\n get ProcessId() {\r\n return __classPrivateFieldGet(this, _Process_schema, \"f\").ProcessId;\r\n }\r\n get Name() {\r\n return __classPrivateFieldGet(this, _Process_schema, \"f\").Name;\r\n }\r\n get Code() {\r\n return __classPrivateFieldGet(this, _Process_schema, \"f\").Code;\r\n }\r\n get Description() {\r\n return __classPrivateFieldGet(this, _Process_schema, \"f\").Description;\r\n }\r\n}\r\n_Process_schema = new WeakMap();\r\n","export const Symbols = {\r\n key: Symbol('key')\r\n};\r\n","import { Guid } from \"@ioip/core/lib\";\r\nimport { defaultIConditionElement } from \"../types\";\r\nexport const defaultIIncludeDocumentAction = () => ({\r\n author: '',\r\n caseFile: '',\r\n description: '',\r\n documentalType: '',\r\n documentDate: '',\r\n documentType: '',\r\n filter: defaultIConditionElement(),\r\n folder: '',\r\n name: '',\r\n originEntityId: Guid.empty.toString(),\r\n outputColumnId: Guid.empty.toString(),\r\n receptionDate: '',\r\n subject: '',\r\n tansmisionDate: '',\r\n fileName: '',\r\n length: '',\r\n initialPage: '',\r\n finalPage: '',\r\n keywords: '',\r\n url: ''\r\n});\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CField_schema, _CField_id;\r\nimport { Guid } from \"@ioip/core/lib\";\r\nimport { ControlType } from \"../../types/ControlType\";\r\nclass CField {\r\n constructor(schema) {\r\n _CField_schema.set(this, void 0);\r\n _CField_id.set(this, void 0);\r\n __classPrivateFieldSet(this, _CField_schema, schema, \"f\");\r\n }\r\n get id() {\r\n var _a;\r\n if (__classPrivateFieldGet(this, _CField_id, \"f\") == null)\r\n __classPrivateFieldSet(this, _CField_id, (_a = __classPrivateFieldGet(this, _CField_schema, \"f\").id) !== null && _a !== void 0 ? _a : Guid.empty.toString(), \"f\");\r\n return __classPrivateFieldGet(this, _CField_id, \"f\");\r\n }\r\n get controlType() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CField_schema, \"f\").controlType) !== null && _a !== void 0 ? _a : ControlType.row;\r\n }\r\n get order() {\r\n return __classPrivateFieldGet(this, _CField_schema, \"f\").order;\r\n }\r\n cast() {\r\n return this;\r\n }\r\n getSchema() {\r\n return __classPrivateFieldGet(this, _CField_schema, \"f\");\r\n }\r\n toString() {\r\n return this.controlType.toString();\r\n }\r\n}\r\n_CField_schema = new WeakMap(), _CField_id = new WeakMap();\r\nexport default CField;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CControl_instances, _CControl_attributeId, _CControl_attributeCode, _CControl_errorMessage, _CControl_parentId, _CControl_visibleRule, _CControl_requiredRule, _CControl_onRenderLabel, _CControl_valideRule, _CControl_subscribers, _CControl_initializeComponent;\r\nimport { Guid, isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { PermissionLevel } from \"../../studio-types\";\r\nimport CField from \"../types/CField\";\r\nexport default class CControl extends CField {\r\n constructor(args) {\r\n super(args.schema);\r\n _CControl_instances.add(this);\r\n _CControl_attributeId.set(this, null);\r\n _CControl_attributeCode.set(this, null);\r\n _CControl_errorMessage.set(this, void 0);\r\n _CControl_parentId.set(this, null);\r\n _CControl_visibleRule.set(this, void 0);\r\n _CControl_requiredRule.set(this, void 0);\r\n _CControl_onRenderLabel.set(this, void 0);\r\n _CControl_valideRule.set(this, null);\r\n _CControl_subscribers.set(this, []);\r\n this.subscribe = (callback) => {\r\n __classPrivateFieldGet(this, _CControl_subscribers, \"f\").push(callback);\r\n };\r\n this.unsubscribe = (callback) => {\r\n __classPrivateFieldSet(this, _CControl_subscribers, __classPrivateFieldGet(this, _CControl_subscribers, \"f\").filter(x => x != callback), \"f\");\r\n };\r\n this.____args = args;\r\n if (!isNullOrEmpty(this.____args.schema.attributeId))\r\n __classPrivateFieldSet(this, _CControl_attributeId, Guid.parse(this.____args.schema.attributeId), \"f\");\r\n __classPrivateFieldSet(this, _CControl_attributeCode, this.____args.schema.attributeCode, \"f\");\r\n __classPrivateFieldGet(this, _CControl_instances, \"m\", _CControl_initializeComponent).call(this);\r\n }\r\n get parentId() {\r\n var _a;\r\n if (__classPrivateFieldGet(this, _CControl_parentId, \"f\") == null)\r\n __classPrivateFieldSet(this, _CControl_parentId, (_a = this.____args.schema.parentId) !== null && _a !== void 0 ? _a : Guid.empty.toString(), \"f\");\r\n return __classPrivateFieldGet(this, _CControl_parentId, \"f\");\r\n }\r\n get attributeId() {\r\n return __classPrivateFieldGet(this, _CControl_attributeId, \"f\");\r\n }\r\n get attributeCode() {\r\n return __classPrivateFieldGet(this, _CControl_attributeCode, \"f\");\r\n }\r\n get colSm() {\r\n var _a;\r\n return (_a = this.____args.schema.colSm) !== null && _a !== void 0 ? _a : 12;\r\n }\r\n get colMd() {\r\n var _a;\r\n return (_a = this.____args.schema.colMd) !== null && _a !== void 0 ? _a : 6;\r\n }\r\n get colLg() {\r\n var _a;\r\n return (_a = this.____args.schema.colLg) !== null && _a !== void 0 ? _a : 6;\r\n }\r\n get colXl() {\r\n var _a;\r\n return (_a = this.____args.schema.colXl) !== null && _a !== void 0 ? _a : 6;\r\n }\r\n get colXxl() {\r\n var _a;\r\n return (_a = this.____args.schema.colXxl) !== null && _a !== void 0 ? _a : 6;\r\n }\r\n get colXxxl() {\r\n var _a;\r\n return (_a = this.____args.schema.colXxxl) !== null && _a !== void 0 ? _a : 6;\r\n }\r\n get name() {\r\n return this.____args.schema.name;\r\n }\r\n get required() {\r\n var _a;\r\n if (((_a = this.form) === null || _a === void 0 ? void 0 : _a.readonly) || false)\r\n return false;\r\n if (__classPrivateFieldGet(this, _CControl_requiredRule, \"f\") != null) {\r\n return __classPrivateFieldGet(this, _CControl_requiredRule, \"f\").call(this);\r\n }\r\n return this.____args.schema.required;\r\n }\r\n get help() {\r\n return this.____args.schema.help;\r\n }\r\n get scopes() {\r\n return this.____args.schema.scopes;\r\n }\r\n get permissionLevel() {\r\n return this.____args.schema.permissionLevel || PermissionLevel.none;\r\n }\r\n get form() {\r\n return this.____args.form;\r\n }\r\n get ignoreChanges() {\r\n var _a;\r\n return (_a = this.____args.schema.ignoreChanges) !== null && _a !== void 0 ? _a : false;\r\n }\r\n get engine() {\r\n return this.form.runtime;\r\n }\r\n get disabled() {\r\n return this.____args.schema.disabled;\r\n }\r\n get readonly() {\r\n var _a;\r\n if (((_a = this.form) === null || _a === void 0 ? void 0 : _a.readonly) || false)\r\n return true;\r\n return this.____args.schema.readonly;\r\n }\r\n get height() {\r\n return this.____args.schema.height;\r\n }\r\n get isRuntime() {\r\n var _a, _b;\r\n return (_b = (_a = this.form) === null || _a === void 0 ? void 0 : _a.isRuntime) !== null && _b !== void 0 ? _b : false;\r\n }\r\n get visible() {\r\n var _a;\r\n if (!this.form.isRuntime)\r\n return true;\r\n if (!isNullOrEmpty((_a = this.form) === null || _a === void 0 ? void 0 : _a.scope) && this.scopes != null) {\r\n if (!this.scopes.includes(this.form.scope))\r\n return false;\r\n }\r\n if (__classPrivateFieldGet(this, _CControl_visibleRule, \"f\") != null) {\r\n return __classPrivateFieldGet(this, _CControl_visibleRule, \"f\").call(this);\r\n }\r\n return this.____args.schema.visible;\r\n }\r\n get value() {\r\n return this.____args.onReadValue(this);\r\n }\r\n set value(value) {\r\n const oldValue = this.value;\r\n if (oldValue != value) {\r\n this.____args.onWriteValue(this, value);\r\n __classPrivateFieldGet(this, _CControl_subscribers, \"f\").forEach(x => x());\r\n }\r\n }\r\n get errorMessage() {\r\n return __classPrivateFieldGet(this, _CControl_errorMessage, \"f\") || \"\";\r\n }\r\n set errorMessage(value) {\r\n __classPrivateFieldSet(this, _CControl_errorMessage, value || \"\", \"f\");\r\n __classPrivateFieldGet(this, _CControl_subscribers, \"f\").forEach(x => x());\r\n }\r\n get margin() {\r\n return this.____args.schema.margin;\r\n }\r\n get padding() {\r\n return this.____args.schema.padding;\r\n }\r\n get border() {\r\n return this.____args.schema.border;\r\n }\r\n validate() {\r\n const fn = __classPrivateFieldGet(this, _CControl_valideRule, \"f\");\r\n if (fn != null) {\r\n const errorMessage = fn();\r\n const hasError = !isNullOrEmpty(errorMessage);\r\n if (hasError) {\r\n this.errorMessage = errorMessage;\r\n return false;\r\n }\r\n else {\r\n this.errorMessage = '';\r\n }\r\n }\r\n return true;\r\n }\r\n createLoginEngine(name, options) {\r\n return this.engine.createLoginEngine(`${this.name}.${name}`, {\r\n nodes: options.nodes,\r\n edges: options.edges,\r\n currentForm: this.form\r\n });\r\n }\r\n get onRenderLabel() {\r\n return __classPrivateFieldGet(this, _CControl_onRenderLabel, \"f\");\r\n }\r\n toComboboxOption() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_CControl_attributeId = new WeakMap(), _CControl_attributeCode = new WeakMap(), _CControl_errorMessage = new WeakMap(), _CControl_parentId = new WeakMap(), _CControl_visibleRule = new WeakMap(), _CControl_requiredRule = new WeakMap(), _CControl_onRenderLabel = new WeakMap(), _CControl_valideRule = new WeakMap(), _CControl_subscribers = new WeakMap(), _CControl_instances = new WeakSet(), _CControl_initializeComponent = function _CControl_initializeComponent() {\r\n if (!this.____args.form.isRuntime)\r\n return;\r\n if (this.____args.form == null)\r\n return;\r\n const visibleRule = this.____args.schema.visibleRule;\r\n if (visibleRule != null) {\r\n const nodes = visibleRule.nodes || [];\r\n const edges = visibleRule.edges || [];\r\n __classPrivateFieldSet(this, _CControl_visibleRule, this.createLoginEngine('Visible', {\r\n nodes: nodes,\r\n edges: edges\r\n }), \"f\");\r\n }\r\n const requiredRule = this.____args.schema.requiredRule;\r\n if (requiredRule != null) {\r\n const nodes = requiredRule.nodes || [];\r\n const edges = requiredRule.edges || [];\r\n __classPrivateFieldSet(this, _CControl_requiredRule, this.createLoginEngine('Required', {\r\n nodes: nodes,\r\n edges: edges\r\n }), \"f\");\r\n }\r\n const onRenderLabel = this.____args.schema.onRenderLabel;\r\n if (onRenderLabel != null) {\r\n const nodes = onRenderLabel.nodes || [];\r\n const edges = onRenderLabel.edges || [];\r\n __classPrivateFieldSet(this, _CControl_onRenderLabel, this.createLoginEngine('RenderLabel', {\r\n nodes: nodes,\r\n edges: edges,\r\n currentForm: this.form\r\n }), \"f\");\r\n }\r\n const validationRule = this.____args.schema.validationRule;\r\n if (validationRule != null) {\r\n const nodes = validationRule.nodes || [];\r\n const edges = validationRule.edges || [];\r\n __classPrivateFieldSet(this, _CControl_valideRule, this.____args.form.runtime.createLoginEngine('Validation', {\r\n nodes: nodes,\r\n edges: edges,\r\n currentForm: this.form\r\n }), \"f\");\r\n }\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CComboBox_args, _CComboBox_datasource;\r\nimport CControl from \"../Control/CControl\";\r\nclass CComboBox extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CComboBox_args.set(this, void 0);\r\n _CComboBox_datasource.set(this, void 0);\r\n __classPrivateFieldSet(this, _CComboBox_args, args, \"f\");\r\n __classPrivateFieldSet(this, _CComboBox_datasource, args.form.page != null\r\n ? args.form.page.getDataSources(args.form.objectId, args.schema.id)\r\n : null, \"f\");\r\n }\r\n get label() {\r\n return __classPrivateFieldGet(this, _CComboBox_args, \"f\").schema.label;\r\n }\r\n get datasource() {\r\n return __classPrivateFieldGet(this, _CComboBox_datasource, \"f\");\r\n }\r\n get items() {\r\n var _a;\r\n return ((_a = __classPrivateFieldGet(this, _CComboBox_datasource, \"f\")) === null || _a === void 0 ? void 0 : _a.items) || [];\r\n }\r\n get selectedText() {\r\n var _a;\r\n const value = this.value;\r\n return (_a = this.datasource) === null || _a === void 0 ? void 0 : _a.getText(value);\r\n }\r\n get selectedItem() {\r\n var _a;\r\n const value = this.value;\r\n return (_a = __classPrivateFieldGet(this, _CComboBox_datasource, \"f\")) === null || _a === void 0 ? void 0 : _a.getItem(value);\r\n }\r\n get textBinding() {\r\n return this.datasource.textBinding;\r\n }\r\n get keyBinding() {\r\n return this.datasource.keyBinding;\r\n }\r\n asFluentUI() {\r\n const dataSource = __classPrivateFieldGet(this, _CComboBox_datasource, \"f\");\r\n if (dataSource == null)\r\n return [];\r\n const keyBinding = dataSource.keyBinding;\r\n const textBinding = dataSource.textBinding;\r\n return dataSource.items.select(o => ({ key: o[keyBinding], text: o[textBinding] || '' })).toArray();\r\n }\r\n validate() {\r\n this.errorMessage = null;\r\n if (!this.visible)\r\n return true;\r\n if (this.required) {\r\n if (this.value == null || this.value == 0) {\r\n this.errorMessage = 'Campo requerido';\r\n return false;\r\n }\r\n }\r\n return super.validate();\r\n }\r\n}\r\n_CComboBox_args = new WeakMap(), _CComboBox_datasource = new WeakMap();\r\nexport default CComboBox;\r\n","export var JSRuleErrorType;\r\n(function (JSRuleErrorType) {\r\n JSRuleErrorType[JSRuleErrorType[\"Value\"] = 1] = \"Value\";\r\n JSRuleErrorType[JSRuleErrorType[\"Type\"] = 2] = \"Type\";\r\n JSRuleErrorType[JSRuleErrorType[\"Reference\"] = 3] = \"Reference\";\r\n})(JSRuleErrorType || (JSRuleErrorType = {}));\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CRuleError_message, _CRuleError_type;\r\nimport { JSRuleErrorType } from \"./JSRuleErrorType\";\r\nexport class CRuleError {\r\n constructor(type, message = '') {\r\n _CRuleError_message.set(this, void 0);\r\n _CRuleError_type.set(this, void 0);\r\n __classPrivateFieldSet(this, _CRuleError_type, type, \"f\");\r\n __classPrivateFieldSet(this, _CRuleError_message, message, \"f\");\r\n }\r\n get message() {\r\n return __classPrivateFieldGet(this, _CRuleError_message, \"f\");\r\n }\r\n get type() {\r\n return __classPrivateFieldGet(this, _CRuleError_type, \"f\");\r\n }\r\n toString() {\r\n let type = '';\r\n switch (__classPrivateFieldGet(this, _CRuleError_type, \"f\")) {\r\n case JSRuleErrorType.Value:\r\n type = '#VALUE!';\r\n break;\r\n case JSRuleErrorType.Type:\r\n type = '#TYPE!';\r\n break;\r\n case JSRuleErrorType.Reference:\r\n type = '#REF!';\r\n break;\r\n }\r\n return type + ' ' + __classPrivateFieldGet(this, _CRuleError_message, \"f\");\r\n }\r\n}\r\n_CRuleError_message = new WeakMap(), _CRuleError_type = new WeakMap();\r\n","import { isNullOrEmpty } from \"@ioip/core/lib\";\r\nexport const toCurrency = (value, errorValue) => {\r\n if (typeof value === 'number') {\r\n value = value.toString();\r\n }\r\n value = (value || '').trim();\r\n const endsWithDecimal = value.endsWith(',');\r\n if (value === '') {\r\n return '';\r\n }\r\n else {\r\n if (value.split('').filter(o => o === ',').length > 1) {\r\n return errorValue;\r\n }\r\n else {\r\n value = value.replace(/[^0-9,-]+/g, \"\").replace(',', '.');\r\n const number = Number(value);\r\n const formatter = Intl.NumberFormat('es-CO');\r\n const formattedValue = '$' + formatter.format(number);\r\n if (endsWithDecimal) {\r\n return formattedValue + ',';\r\n }\r\n else {\r\n const decimalPart = formattedValue.includes(',') ? value.split('.')[1] : '';\r\n if (isNullOrEmpty(decimalPart)) {\r\n return formattedValue;\r\n }\r\n else {\r\n return formattedValue.split(',')[0] + ',' + decimalPart.substring(0, 2);\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Attribute_args, _Attribute_relatedEntity;\r\nexport default class Attribute {\r\n constructor(props) {\r\n _Attribute_args.set(this, void 0);\r\n _Attribute_relatedEntity.set(this, null);\r\n __classPrivateFieldSet(this, _Attribute_args, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.id;\r\n }\r\n get code() {\r\n return __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.code;\r\n }\r\n get updatable() {\r\n const code = __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.code.trim().toLowerCase();\r\n return !Attribute.defaultAttributeNames.includes(code);\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.name;\r\n }\r\n get dataType() {\r\n return __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.dataType;\r\n }\r\n get isPrimaryKey() {\r\n var _a, _b;\r\n return (_b = (_a = __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.isPrimaryKey) !== null && _a !== void 0 ? _a : __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.code === 'Id') !== null && _b !== void 0 ? _b : false;\r\n }\r\n get relatedEntityId() {\r\n return __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.relatedEntityId;\r\n }\r\n get relatedEntity() {\r\n if (__classPrivateFieldGet(this, _Attribute_relatedEntity, \"f\") == null && this.relatedEntityId != null)\r\n __classPrivateFieldSet(this, _Attribute_relatedEntity, __classPrivateFieldGet(this, _Attribute_args, \"f\").entity.project.findEntity(this.relatedEntityId), \"f\");\r\n return __classPrivateFieldGet(this, _Attribute_relatedEntity, \"f\");\r\n }\r\n get comboBoxOption() {\r\n return {\r\n key: __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.id,\r\n text: `${this.name} (${this.code})`\r\n };\r\n }\r\n get description() {\r\n return __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.description || '';\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.enabled || false;\r\n }\r\n get entity() {\r\n return __classPrivateFieldGet(this, _Attribute_args, \"f\").entity;\r\n }\r\n get maxLength() {\r\n return __classPrivateFieldGet(this, _Attribute_args, \"f\").schema.maxLength;\r\n }\r\n getSchema() {\r\n return __classPrivateFieldGet(this, _Attribute_args, \"f\").schema;\r\n }\r\n}\r\n_Attribute_args = new WeakMap(), _Attribute_relatedEntity = new WeakMap();\r\nAttribute.defaultAttributeNames = [\r\n 'id',\r\n 'createdby',\r\n 'creationip',\r\n 'creationuseragent',\r\n 'creationdate',\r\n 'modifiedby',\r\n 'modificationip',\r\n 'modificationuseragent',\r\n 'modificationdate'\r\n];\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _EntityViewColumn_args;\r\nexport class EntityViewColumn {\r\n constructor(props) {\r\n _EntityViewColumn_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _EntityViewColumn_args, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _EntityViewColumn_args, \"f\").schema.id;\r\n }\r\n get headerText() {\r\n return __classPrivateFieldGet(this, _EntityViewColumn_args, \"f\").schema.headerText;\r\n }\r\n get minWidth() {\r\n return __classPrivateFieldGet(this, _EntityViewColumn_args, \"f\").schema.minWidth;\r\n }\r\n get maxWidth() {\r\n return __classPrivateFieldGet(this, _EntityViewColumn_args, \"f\").schema.maxWidth;\r\n }\r\n get order() {\r\n return __classPrivateFieldGet(this, _EntityViewColumn_args, \"f\").schema.order;\r\n }\r\n get isResizable() {\r\n return __classPrivateFieldGet(this, _EntityViewColumn_args, \"f\").schema.isResizable;\r\n }\r\n get required() {\r\n return false;\r\n }\r\n get attribute() {\r\n return __classPrivateFieldGet(this, _EntityViewColumn_args, \"f\").entity.getAttribute(__classPrivateFieldGet(this, _EntityViewColumn_args, \"f\").schema.attributeId);\r\n }\r\n get format() {\r\n return __classPrivateFieldGet(this, _EntityViewColumn_args, \"f\").schema.format;\r\n }\r\n toStandarDataTableColumn() {\r\n return {\r\n name: this.headerText,\r\n minWidth: this.minWidth,\r\n maxWidth: this.maxWidth,\r\n isResizable: this.isResizable,\r\n isSorted: false,\r\n isSortedDescending: false,\r\n onRender: (item) => item[this.attribute.code]\r\n };\r\n }\r\n}\r\n_EntityViewColumn_args = new WeakMap();\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _EntityView_args, _EntityView_columns;\r\nimport { ReadonlyCollection } from \"@ioip/core/lib\";\r\nimport { EntityViewColumn } from \"./EntityViewColumn\";\r\nexport class EntityView {\r\n constructor(props) {\r\n var _a, _b;\r\n _EntityView_args.set(this, void 0);\r\n _EntityView_columns.set(this, void 0);\r\n __classPrivateFieldSet(this, _EntityView_args, props, \"f\");\r\n const columns = (_b = (_a = props.schema.columns) === null || _a === void 0 ? void 0 : _a.map(x => new EntityViewColumn({ entity: props.entity, schema: x }))) !== null && _b !== void 0 ? _b : [];\r\n __classPrivateFieldSet(this, _EntityView_columns, new ReadonlyCollection(columns), \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _EntityView_args, \"f\").schema.id;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _EntityView_args, \"f\").schema.name;\r\n }\r\n get description() {\r\n return __classPrivateFieldGet(this, _EntityView_args, \"f\").schema.description;\r\n }\r\n get columns() {\r\n return __classPrivateFieldGet(this, _EntityView_columns, \"f\");\r\n }\r\n get hasPrimaryKey() {\r\n return this.columns.any(x => x.attribute.isPrimaryKey);\r\n }\r\n get iconName() {\r\n return __classPrivateFieldGet(this, _EntityView_args, \"f\").schema.iconName;\r\n }\r\n get entity() {\r\n return __classPrivateFieldGet(this, _EntityView_args, \"f\").entity;\r\n }\r\n paginateAsync(request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const entityId = __classPrivateFieldGet(this, _EntityView_args, \"f\").entity.objectId;\r\n const viewId = __classPrivateFieldGet(this, _EntityView_args, \"f\").schema.id;\r\n const result = __classPrivateFieldGet(this, _EntityView_args, \"f\").engine.paginateEntityViewAsync(entityId, viewId, request);\r\n return result;\r\n });\r\n }\r\n updateItemAsync(values) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const primaryKeyValue = Number(values[this.entity.primaryKey.id.toString()]) || 0;\r\n return null;\r\n });\r\n }\r\n createItemAsync(values) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return null;\r\n });\r\n }\r\n}\r\n_EntityView_args = new WeakMap(), _EntityView_columns = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Entity_args, _Entity_attributes, _Entity_view, _Entity_buildViews;\r\nimport { Guid, ReadonlyCollection } from \"@ioip/core/lib\";\r\nimport Attribute from \"./Attribute\";\r\nimport { EntityView } from \"./EntityView\";\r\nexport default class Entity {\r\n constructor(props) {\r\n var _a, _b;\r\n _Entity_args.set(this, void 0);\r\n _Entity_attributes.set(this, void 0);\r\n _Entity_view.set(this, void 0);\r\n _Entity_buildViews.set(this, () => {\r\n });\r\n __classPrivateFieldSet(this, _Entity_args, props, \"f\");\r\n const attributes = (_a = props.object.schema.attributes) !== null && _a !== void 0 ? _a : [];\r\n const views = (_b = props.object.schema.views) !== null && _b !== void 0 ? _b : [];\r\n __classPrivateFieldSet(this, _Entity_attributes, new ReadonlyCollection(attributes.map(schema => new Attribute({ schema: schema, entity: this }))), \"f\");\r\n __classPrivateFieldSet(this, _Entity_view, new ReadonlyCollection(views.map(schema => new EntityView({ schema: schema, entity: this, engine: null }))), \"f\");\r\n }\r\n get objectId() {\r\n return __classPrivateFieldGet(this, _Entity_args, \"f\").object.objectId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _Entity_args, \"f\").object.name;\r\n }\r\n get code() {\r\n return __classPrivateFieldGet(this, _Entity_args, \"f\").object.code;\r\n }\r\n get description() {\r\n return __classPrivateFieldGet(this, _Entity_args, \"f\").object.description;\r\n }\r\n get type() {\r\n return __classPrivateFieldGet(this, _Entity_args, \"f\").object.schema.type;\r\n }\r\n get isMainEntity() {\r\n return __classPrivateFieldGet(this, _Entity_args, \"f\").object.name === 'TProceso';\r\n }\r\n get enabled() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _Entity_args, \"f\").object.enabled) !== null && _a !== void 0 ? _a : false;\r\n }\r\n get path() {\r\n return __classPrivateFieldGet(this, _Entity_args, \"f\").object.schema.path;\r\n }\r\n get version() {\r\n return __classPrivateFieldGet(this, _Entity_args, \"f\").object.version;\r\n }\r\n get attributes() {\r\n return __classPrivateFieldGet(this, _Entity_attributes, \"f\");\r\n }\r\n get views() {\r\n return __classPrivateFieldGet(this, _Entity_view, \"f\");\r\n }\r\n get comboBoxOption() {\r\n return {\r\n key: __classPrivateFieldGet(this, _Entity_args, \"f\").object.objectId,\r\n text: `${this.name} (${this.code})`\r\n };\r\n }\r\n get primaryKey() {\r\n return __classPrivateFieldGet(this, _Entity_attributes, \"f\").firstOrDefault(x => x.isPrimaryKey);\r\n }\r\n get foreignKeys() {\r\n const foreignKeys = __classPrivateFieldGet(this, _Entity_args, \"f\").object.schema.foreignKeys || [];\r\n return __classPrivateFieldGet(this, _Entity_attributes, \"f\").where(x => foreignKeys.includes(x.id.toString())).toArray();\r\n }\r\n get project() {\r\n return __classPrivateFieldGet(this, _Entity_args, \"f\").project;\r\n }\r\n get isNative() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _Entity_args, \"f\").object.schema.isNative) !== null && _a !== void 0 ? _a : false;\r\n }\r\n get isParametric() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _Entity_args, \"f\").object.schema.isParametric) !== null && _a !== void 0 ? _a : false;\r\n }\r\n getAttribute(attributeId) {\r\n if (attributeId instanceof Guid) {\r\n const id = attributeId.toString();\r\n return __classPrivateFieldGet(this, _Entity_attributes, \"f\").firstOrDefault(x => x.id == id);\r\n }\r\n else if (Guid.isValid(attributeId)) {\r\n return __classPrivateFieldGet(this, _Entity_attributes, \"f\").firstOrDefault(x => x.id == attributeId);\r\n }\r\n return __classPrivateFieldGet(this, _Entity_attributes, \"f\").firstOrDefault(x => x.code === attributeId);\r\n }\r\n}\r\n_Entity_args = new WeakMap(), _Entity_attributes = new WeakMap(), _Entity_view = new WeakMap(), _Entity_buildViews = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _AttributeExensions_args;\r\nimport { DataType } from \"../../types/DataType\";\r\nexport class AttributeExensions {\r\n constructor(props) {\r\n _AttributeExensions_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _AttributeExensions_args, props, \"f\");\r\n }\r\n static get orderColumn() {\r\n return {\r\n key: 'name',\r\n name: 'Nombre',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n isResizable: true,\r\n onRender: (item) => item.name\r\n };\r\n }\r\n static get nameColumn() {\r\n return {\r\n key: 'name',\r\n name: 'Nombre',\r\n minWidth: 200,\r\n maxWidth: 350,\r\n isResizable: true,\r\n onRender: (item) => item.name\r\n };\r\n }\r\n static get codeColumn() {\r\n return {\r\n key: 'code',\r\n name: 'Código',\r\n minWidth: 200,\r\n maxWidth: 350,\r\n isResizable: true,\r\n onRender: (item) => item.code\r\n };\r\n }\r\n static get enabledColumn() {\r\n return {\r\n key: 'enabled',\r\n name: 'Activo',\r\n minWidth: 40,\r\n maxWidth: 50,\r\n isResizable: true,\r\n onRender: (item) => item.entity ? 'Sí' : 'No'\r\n };\r\n }\r\n static get typeColumn() {\r\n return {\r\n key: 'type',\r\n name: 'Tipo',\r\n minWidth: 90,\r\n maxWidth: 150,\r\n isResizable: true,\r\n onRender: (item) => DataType[item.dataType]\r\n };\r\n }\r\n static get createdByColumn() {\r\n return {\r\n key: 'createdBy',\r\n name: 'Creado por',\r\n minWidth: 150,\r\n maxWidth: 200,\r\n isResizable: true,\r\n onRender: (item) => { var _a; return (_a = item.createdBy) !== null && _a !== void 0 ? _a : ''; }\r\n };\r\n }\r\n static get createdOnColumn() {\r\n return {\r\n key: 'createdOn',\r\n name: 'Fecha de creación',\r\n minWidth: 150,\r\n maxWidth: 200,\r\n isResizable: true,\r\n onRender: (item) => { var _a; return (_a = item.createdOn) !== null && _a !== void 0 ? _a : ''; }\r\n };\r\n }\r\n static get modifiedByColumn() {\r\n return {\r\n key: 'modifiedBy',\r\n name: 'Modificado por',\r\n minWidth: 150,\r\n maxWidth: 200,\r\n isResizable: true,\r\n onRender: (item) => { var _a; return (_a = item.modifiedBy) !== null && _a !== void 0 ? _a : ''; }\r\n };\r\n }\r\n static get modifiedOnColumn() {\r\n return {\r\n key: 'modifiedOn',\r\n name: 'Fecha de modificación',\r\n minWidth: 150,\r\n maxWidth: 200,\r\n isResizable: true,\r\n onRender: (item) => { var _a; return (_a = item.modifiedOn) !== null && _a !== void 0 ? _a : ''; }\r\n };\r\n }\r\n}\r\n_AttributeExensions_args = new WeakMap();\r\n","import { Exception } from \"@ioip/core/lib/exceptions\";\r\nexport class AttributeNotFoundException extends Exception {\r\n constructor(attributeId, innerException) {\r\n super(`Entity not found: ${attributeId}`, innerException);\r\n }\r\n}\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CalculatedField_args, _CalculatedField_valueRule, _CalculatedField_onInit;\r\nimport { ControlType } from \"../../types\";\r\nimport CControl from \"../Control/CControl\";\r\nexport default class CalculatedField extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CalculatedField_args.set(this, void 0);\r\n _CalculatedField_valueRule.set(this, void 0);\r\n _CalculatedField_onInit.set(this, () => {\r\n var _a;\r\n if (!this.isRuntime)\r\n return;\r\n const rule = __classPrivateFieldGet(this, _CalculatedField_args, \"f\").schema.calculatedValueRule;\r\n if (rule != null) {\r\n const func = this.engine.createLoginEngine(`[${ControlType[this.controlType]}] ${(_a = this.name) !== null && _a !== void 0 ? _a : ''}`, {\r\n nodes: rule.nodes,\r\n edges: rule.edges,\r\n currentForm: this.form\r\n });\r\n __classPrivateFieldSet(this, _CalculatedField_valueRule, func, \"f\");\r\n }\r\n });\r\n __classPrivateFieldSet(this, _CalculatedField_args, args, \"f\");\r\n __classPrivateFieldGet(this, _CalculatedField_onInit, \"f\").call(this);\r\n }\r\n get value() {\r\n const f = __classPrivateFieldGet(this, _CalculatedField_valueRule, \"f\");\r\n if (f == null)\r\n return null;\r\n const result = f();\r\n return result;\r\n }\r\n set value(value) {\r\n }\r\n get label() {\r\n return __classPrivateFieldGet(this, _CalculatedField_args, \"f\").schema.label;\r\n }\r\n}\r\n_CalculatedField_args = new WeakMap(), _CalculatedField_valueRule = new WeakMap(), _CalculatedField_onInit = new WeakMap();\r\n","import { Exception } from \"@ioip/core/lib/exceptions\";\r\nexport class FormNotFoundException extends Exception {\r\n constructor(formVersionId, innerException) {\r\n super(`Form not found: ${formVersionId}`, innerException);\r\n }\r\n}\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CCard_args;\r\nimport CControl from \"../Control/CControl\";\r\nexport default class CCard extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CCard_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CCard_args, args, \"f\");\r\n }\r\n get previewImageSrc() {\r\n return __classPrivateFieldGet(this, _CCard_args, \"f\").schema.previewImageSrc;\r\n }\r\n get iconSrc() {\r\n return __classPrivateFieldGet(this, _CCard_args, \"f\").schema.iconSrc;\r\n }\r\n get imageFit() {\r\n return __classPrivateFieldGet(this, _CCard_args, \"f\").schema.imageFit;\r\n }\r\n get title() {\r\n return __classPrivateFieldGet(this, _CCard_args, \"f\").schema.title;\r\n }\r\n get activity() {\r\n return __classPrivateFieldGet(this, _CCard_args, \"f\").schema.activity;\r\n }\r\n get height() {\r\n return __classPrivateFieldGet(this, _CCard_args, \"f\").schema.height;\r\n }\r\n get width() {\r\n return __classPrivateFieldGet(this, _CCard_args, \"f\").schema.width;\r\n }\r\n get showAsSecondaryTitle() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CCard_args, \"f\").schema.showAsSecondaryTitle) !== null && _a !== void 0 ? _a : false;\r\n }\r\n}\r\n_CCard_args = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CCaseFileSelector_args;\r\nimport CComboBox from \"../ComboBox/CComboBox\";\r\nclass CCaseFileSelector extends CComboBox {\r\n constructor(args) {\r\n super(args);\r\n _CCaseFileSelector_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CCaseFileSelector_args, args, \"f\");\r\n }\r\n get placeholder() {\r\n return __classPrivateFieldGet(this, _CCaseFileSelector_args, \"f\").schema.placeholder;\r\n }\r\n}\r\n_CCaseFileSelector_args = new WeakMap();\r\nexport default CCaseFileSelector;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CCheckBox_args;\r\nimport CControl from \"../Control/CControl\";\r\nclass CCheckBox extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CCheckBox_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CCheckBox_args, args, \"f\");\r\n }\r\n get label() {\r\n return __classPrivateFieldGet(this, _CCheckBox_args, \"f\").schema.label;\r\n }\r\n}\r\n_CCheckBox_args = new WeakMap();\r\nexport default CCheckBox;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CCitySelector_args;\r\nimport CComboBox from \"../ComboBox/CComboBox\";\r\nclass CCitySelector extends CComboBox {\r\n constructor(args) {\r\n super(args);\r\n _CCitySelector_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CCitySelector_args, args, \"f\");\r\n }\r\n get departmentFilterId() {\r\n return __classPrivateFieldGet(this, _CCitySelector_args, \"f\").schema.departmentFilterId;\r\n }\r\n}\r\n_CCitySelector_args = new WeakMap();\r\nexport default CCitySelector;\r\n","import superPropBase from \"./superPropBase.js\";\nimport defineProperty from \"./defineProperty.js\";\nfunction set(target, property, value, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = superPropBase(target, property);\n var desc;\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n defineProperty(receiver, property, value);\n }\n return true;\n };\n }\n return set(target, property, value, receiver);\n}\nexport default function _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n if (!s && isStrict) {\n throw new TypeError('failed to set property');\n }\n return value;\n}","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CColorSelector_args;\r\nimport CControl from \"../Control/CControl\";\r\nclass CColorSelector extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CColorSelector_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CColorSelector_args, args, \"f\");\r\n }\r\n get showOnlyActiveItems() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CColorSelector_args, \"f\").schema.showOnlyActiveItems) !== null && _a !== void 0 ? _a : false;\r\n }\r\n set value(value) {\r\n super.value = value;\r\n }\r\n get value() {\r\n return super.value;\r\n }\r\n get label() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CColorSelector_args, \"f\").schema.label) !== null && _a !== void 0 ? _a : '';\r\n }\r\n}\r\n_CColorSelector_args = new WeakMap();\r\nexport default CColorSelector;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _CCountrySelector_args;\r\nimport CComboBox from \"../ComboBox/CComboBox\";\r\nclass CCountrySelector extends CComboBox {\r\n constructor(args) {\r\n super(args);\r\n _CCountrySelector_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CCountrySelector_args, args, \"f\");\r\n }\r\n}\r\n_CCountrySelector_args = new WeakMap();\r\nexport default CCountrySelector;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CNumberField_args;\r\nimport { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport CControl from \"../Control/CControl\";\r\nclass CNumberField extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CNumberField_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CNumberField_args, args, \"f\");\r\n }\r\n get label() {\r\n return __classPrivateFieldGet(this, _CNumberField_args, \"f\").schema.label;\r\n }\r\n get placeholder() {\r\n return __classPrivateFieldGet(this, _CNumberField_args, \"f\").schema.placeholder;\r\n }\r\n get maxValue() {\r\n return Number(__classPrivateFieldGet(this, _CNumberField_args, \"f\").schema.maxValue) || 0;\r\n }\r\n get minValue() {\r\n return Number(__classPrivateFieldGet(this, _CNumberField_args, \"f\").schema.minValue) || 0;\r\n }\r\n validate() {\r\n this.errorMessage = null;\r\n if (this.required) {\r\n if (typeof this.value !== 'number' && isNullOrEmpty(this.value)) {\r\n this.errorMessage = 'Campo requerido';\r\n return false;\r\n }\r\n }\r\n const value = this.value || 0;\r\n if (this.minValue > 0 && value) {\r\n if (value < this.minValue) {\r\n this.errorMessage = `El valor debe ser mayor o igual a ${this.minValue}`;\r\n return false;\r\n }\r\n }\r\n if (this.maxValue > 0) {\r\n if (value > this.maxValue) {\r\n this.errorMessage = `El valor debe ser menor o igual a ${this.maxValue}`;\r\n return false;\r\n }\r\n }\r\n return super.validate();\r\n }\r\n}\r\n_CNumberField_args = new WeakMap();\r\nexport default CNumberField;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _CCurrencyField_args;\r\nimport CNumberField from \"../NumberField/CNumberField\";\r\nclass CCurrencyField extends CNumberField {\r\n constructor(args) {\r\n super(args);\r\n _CCurrencyField_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CCurrencyField_args, args, \"f\");\r\n }\r\n}\r\n_CCurrencyField_args = new WeakMap();\r\nexport default CCurrencyField;\r\n","import { List } from \"linq.ts\";\r\nexport var AuthenticationType;\r\n(function (AuthenticationType) {\r\n AuthenticationType[AuthenticationType[\"noAuth\"] = 0] = \"noAuth\";\r\n AuthenticationType[AuthenticationType[\"basicAuth\"] = 1] = \"basicAuth\";\r\n AuthenticationType[AuthenticationType[\"bearerToken\"] = 2] = \"bearerToken\";\r\n AuthenticationType[AuthenticationType[\"entraIdBearerToken\"] = 3] = \"entraIdBearerToken\";\r\n})(AuthenticationType || (AuthenticationType = {}));\r\nexport const AuthenticationTypeDataSource = new List([\r\n { key: AuthenticationType.noAuth, text: `${AuthenticationType[AuthenticationType.noAuth]} (${AuthenticationType.noAuth})` },\r\n { key: AuthenticationType.bearerToken, text: `${AuthenticationType[AuthenticationType.bearerToken]} (${AuthenticationType.bearerToken})` },\r\n { key: AuthenticationType.basicAuth, text: `${AuthenticationType[AuthenticationType.basicAuth]} (${AuthenticationType.basicAuth})` },\r\n { key: AuthenticationType.entraIdBearerToken, text: `${AuthenticationType[AuthenticationType.entraIdBearerToken]} (${AuthenticationType.entraIdBearerToken})` }\r\n]).OrderBy(o => o.text).ToArray();\r\n","import { List } from \"linq.ts\";\r\nexport var DataSourceType;\r\n(function (DataSourceType) {\r\n DataSourceType[DataSourceType[\"undefined\"] = 0] = \"undefined\";\r\n DataSourceType[DataSourceType[\"procesoxEntity\"] = 1] = \"procesoxEntity\";\r\n DataSourceType[DataSourceType[\"procesoxQuery\"] = 2] = \"procesoxQuery\";\r\n DataSourceType[DataSourceType[\"webService\"] = 3] = \"webService\";\r\n DataSourceType[DataSourceType[\"sharepointList\"] = 4] = \"sharepointList\";\r\n DataSourceType[DataSourceType[\"inlineData\"] = 5] = \"inlineData\";\r\n DataSourceType[DataSourceType[\"sqlQuery\"] = 6] = \"sqlQuery\";\r\n})(DataSourceType || (DataSourceType = {}));\r\nexport const DataSourceTypeOptions = new List([\r\n { key: DataSourceType.undefined, text: `Select...` },\r\n { key: DataSourceType.procesoxEntity, text: `${DataSourceType[DataSourceType.procesoxEntity]} (${DataSourceType.procesoxEntity})` },\r\n { key: DataSourceType.procesoxQuery, text: `${DataSourceType[DataSourceType.procesoxQuery]} (${DataSourceType.procesoxQuery})` },\r\n { key: DataSourceType.webService, text: `${DataSourceType[DataSourceType.webService]} (${DataSourceType.webService})` },\r\n { key: DataSourceType.sharepointList, text: `${DataSourceType[DataSourceType.sharepointList]} (${DataSourceType.sharepointList})` },\r\n { key: DataSourceType.inlineData, text: `${DataSourceType[DataSourceType.inlineData]} (${DataSourceType.inlineData})` },\r\n { key: DataSourceType.sqlQuery, text: `${DataSourceType[DataSourceType.sqlQuery]} (${DataSourceType.sqlQuery})` },\r\n]).OrderBy(o => o.text).ToArray();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CDatePicker_args, _CDatePicker_minValue, _CDatePicker_maxValue, _CDatePicker_value;\r\nimport { Guid, isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport DateOnly from \"@ioip/core/lib/datetime/DateOnly\";\r\nimport DateTime from \"@ioip/core/lib/datetime/DateTime\";\r\nimport { greaterThan, lessThan } from \"../../core/comparison\";\r\nimport CControl from \"../Control/CControl\";\r\nclass CDatePicker extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CDatePicker_args.set(this, void 0);\r\n _CDatePicker_minValue.set(this, void 0);\r\n _CDatePicker_maxValue.set(this, void 0);\r\n _CDatePicker_value.set(this, void 0);\r\n __classPrivateFieldSet(this, _CDatePicker_args, args, \"f\");\r\n }\r\n get label() {\r\n return __classPrivateFieldGet(this, _CDatePicker_args, \"f\").schema.label;\r\n }\r\n get placeholder() {\r\n return __classPrivateFieldGet(this, _CDatePicker_args, \"f\").schema.placeholder;\r\n }\r\n get minValue() {\r\n if (isNullOrEmpty(__classPrivateFieldGet(this, _CDatePicker_args, \"f\").schema.minValue))\r\n return null;\r\n if (__classPrivateFieldGet(this, _CDatePicker_minValue, \"f\") == null)\r\n __classPrivateFieldSet(this, _CDatePicker_minValue, new DateTime(__classPrivateFieldGet(this, _CDatePicker_args, \"f\").schema.minValue), \"f\");\r\n return __classPrivateFieldGet(this, _CDatePicker_minValue, \"f\");\r\n }\r\n get maxValue() {\r\n if (isNullOrEmpty(__classPrivateFieldGet(this, _CDatePicker_args, \"f\").schema.maxValue))\r\n return null;\r\n if (__classPrivateFieldGet(this, _CDatePicker_maxValue, \"f\") == null)\r\n __classPrivateFieldSet(this, _CDatePicker_maxValue, new DateTime(__classPrivateFieldGet(this, _CDatePicker_args, \"f\").schema.maxValue), \"f\");\r\n return __classPrivateFieldGet(this, _CDatePicker_maxValue, \"f\");\r\n }\r\n get maxValueField() {\r\n if (Guid.isNotEmpty(__classPrivateFieldGet(this, _CDatePicker_args, \"f\").schema.maxValueFieldId))\r\n return this.form.getField(__classPrivateFieldGet(this, _CDatePicker_args, \"f\").schema.maxValueFieldId);\r\n return null;\r\n }\r\n get minValueField() {\r\n if (Guid.isNotEmpty(__classPrivateFieldGet(this, _CDatePicker_args, \"f\").schema.minValueFieldId))\r\n return this.form.getField(__classPrivateFieldGet(this, _CDatePicker_args, \"f\").schema.minValueFieldId);\r\n return null;\r\n }\r\n get value() {\r\n return super.value;\r\n }\r\n set value(value) {\r\n if (value instanceof DateOnly)\r\n super.value = value;\r\n else if (value instanceof DateTime)\r\n super.value = new DateOnly(value);\r\n else if (typeof value === 'string')\r\n super.value = new DateOnly(value);\r\n else\r\n super.value = null;\r\n }\r\n validate() {\r\n this.errorMessage = null;\r\n const value = this.value;\r\n const hasValue = value != null;\r\n if (this.required && !hasValue) {\r\n this.errorMessage = 'Campo requerido';\r\n return false;\r\n }\r\n if (hasValue && this.maxValueField != null) {\r\n if (greaterThan(this.value, this.maxValueField.value)) {\r\n this.errorMessage = 'La fecha no puede ser mayor al valor del campo ' + this.maxValueField.label;\r\n return false;\r\n }\r\n }\r\n if (hasValue && this.minValueField != null) {\r\n if (lessThan(this.value, this.minValueField.value)) {\r\n this.errorMessage = 'La fecha no puede ser menor al valor del campo ' + this.minValueField.label;\r\n return false;\r\n }\r\n }\r\n return super.validate();\r\n }\r\n}\r\n_CDatePicker_args = new WeakMap(), _CDatePicker_minValue = new WeakMap(), _CDatePicker_maxValue = new WeakMap(), _CDatePicker_value = new WeakMap();\r\nexport default CDatePicker;\r\n","import { Exception } from \"@ioip/core/lib/exceptions\";\r\nexport class ArgumentTypeException extends Exception {\r\n constructor(expected, value, innerException) {\r\n super(`Invalid argument type: Expected = ${expected}`, innerException);\r\n console.log(value);\r\n }\r\n}\r\n","import DateOnly from \"@ioip/core/lib/datetime/DateOnly\";\r\nimport DateTime from \"@ioip/core/lib/datetime/DateTime\";\r\nimport TimeOnly from \"@ioip/core/lib/datetime/TimeOnly\";\r\nexport const equals = (a, b) => {\r\n if (a == null || b == null)\r\n return false;\r\n if (typeof a === 'number' && typeof b === 'number')\r\n return a === b;\r\n if (a instanceof Date && b instanceof Date)\r\n return a === b;\r\n if (a instanceof DateOnly && b instanceof DateOnly)\r\n return a.equals(b);\r\n if (a instanceof TimeOnly && b instanceof TimeOnly)\r\n return a.equals(b);\r\n if (a instanceof DateTime && b instanceof DateTime)\r\n return a.equals(b);\r\n throw new Error('Invalid input');\r\n};\r\nexport const greaterThan = (a, b) => {\r\n if (a == null || b == null)\r\n return false;\r\n if (typeof a === 'number' && typeof b === 'number')\r\n return a > b;\r\n if (a instanceof Date && b instanceof Date)\r\n return a > b;\r\n if (a instanceof DateOnly && b instanceof DateOnly)\r\n return a.greaterThan(b);\r\n if (a instanceof TimeOnly && b instanceof TimeOnly)\r\n return a.greaterThan(b);\r\n if (a instanceof DateTime && b instanceof DateTime)\r\n return a.greaterThan(b);\r\n throw new Error('Invalid input');\r\n};\r\nexport const greaterThanOrEquals = (a, b) => {\r\n if (a == null || b == null)\r\n return false;\r\n if (typeof a === 'number' && typeof b === 'number')\r\n return a >= b;\r\n if (a instanceof Date && b instanceof Date)\r\n return a >= b;\r\n if (a instanceof DateOnly && b instanceof DateOnly)\r\n return a.greaterThanOrEquals(b);\r\n if (a instanceof TimeOnly && b instanceof TimeOnly)\r\n return a.greaterThanOrEquals(b);\r\n if (a instanceof DateTime && b instanceof DateTime)\r\n return a.greaterThanOrEquals(b);\r\n throw new Error('Invalid input');\r\n};\r\nexport const lessThan = (a, b) => {\r\n if (a == null || b == null)\r\n return false;\r\n if (typeof a === 'number' && typeof b === 'number')\r\n return a < b;\r\n if (a instanceof Date && b instanceof Date)\r\n return a < b;\r\n if (a instanceof DateOnly && b instanceof DateOnly)\r\n return a.lessThan(b);\r\n if (a instanceof TimeOnly && b instanceof TimeOnly)\r\n return a.lessThan(b);\r\n if (a instanceof DateTime && b instanceof DateTime)\r\n return a.lessThan(b);\r\n throw new Error('Invalid input');\r\n};\r\nexport const lessThanOrEquals = (a, b) => {\r\n if (a == null || b == null)\r\n return false;\r\n if (typeof a === 'number' && typeof b === 'number')\r\n return a <= b;\r\n if (a instanceof Date && b instanceof Date)\r\n return a <= b;\r\n if (a instanceof DateOnly && b instanceof DateOnly)\r\n return a.lessThanOrEquals(b);\r\n if (a instanceof TimeOnly && b instanceof TimeOnly)\r\n return a.lessThanOrEquals(b);\r\n if (a instanceof DateTime && b instanceof DateTime)\r\n return a.lessThanOrEquals(b);\r\n throw new Error('Invalid input');\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _DataTableRow_args;\r\nimport { ArgumentNullException } from \"@ioip/core/lib\";\r\nexport default class DataTableRow {\r\n constructor(args) {\r\n _DataTableRow_args.set(this, void 0);\r\n if (args == null)\r\n ArgumentNullException.throwIfNull(args, 'args');\r\n if (args.data instanceof DataTableRow)\r\n throw new Error('Data table row already initialized');\r\n __classPrivateFieldSet(this, _DataTableRow_args, args, \"f\");\r\n }\r\n get table() {\r\n return __classPrivateFieldGet(this, _DataTableRow_args, \"f\").table;\r\n }\r\n get value() {\r\n return __classPrivateFieldGet(this, _DataTableRow_args, \"f\").data;\r\n }\r\n getValue(key) {\r\n return __classPrivateFieldGet(this, _DataTableRow_args, \"f\").data[key];\r\n }\r\n setValue(key, value) {\r\n var _a, _b;\r\n if (__classPrivateFieldGet(this, _DataTableRow_args, \"f\").data[key] != value) {\r\n __classPrivateFieldGet(this, _DataTableRow_args, \"f\").data[key] = value;\r\n (_b = (_a = __classPrivateFieldGet(this, _DataTableRow_args, \"f\")).onChanged) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n }\r\n setInitialValues(data) {\r\n for (let key in data)\r\n __classPrivateFieldGet(this, _DataTableRow_args, \"f\").data[key] = data[key];\r\n }\r\n clear() {\r\n var _a, _b;\r\n __classPrivateFieldGet(this, _DataTableRow_args, \"f\").data = {};\r\n (_b = (_a = __classPrivateFieldGet(this, _DataTableRow_args, \"f\")).onChanged) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n}\r\n_DataTableRow_args = new WeakMap();\r\n","import { Label, TooltipHost } from \"@fluentui/react\";\r\nimport DateOnly from \"@ioip/core/lib/datetime/DateOnly\";\r\nimport { isNullOrEmpty } from \"@ioip/core/lib/utilities\";\r\nimport React from \"react\";\r\nimport { ArgumentTypeException } from \"../../../exceptions/ArgumentTypeException\";\r\nimport { ControlType } from \"../../../types\";\r\nimport CalculatedField from \"../../CalculatedField/CalculatedField\";\r\nimport CComboBox from \"../../ComboBox/CComboBox\";\r\nimport CDatePicker from \"../../DatePicker/CDatePicker\";\r\nimport { CRuleError } from \"../../types/CRuleError\";\r\nimport DataTableRow from \"../types/DataTableRow\";\r\nimport TimeOnly from \"@ioip/core/lib/datetime/TimeOnly\";\r\nimport { DateTime } from \"@ioip/core/lib/types/DateTime\";\r\nexport const XDataTableColumn = (props) => {\r\n var _a, _b, _c;\r\n if (props.row instanceof DataTableRow === false)\r\n throw new ArgumentTypeException('Invalid row instance', props.row);\r\n let text;\r\n if (isNullOrEmpty(props.column.customValue)) {\r\n if (props.column.datatable.controlType === ControlType.entityDataTable) {\r\n if (!isNullOrEmpty(props.column.binding)) {\r\n const binding = props.column.binding;\r\n text = props.row.getValue(binding);\r\n }\r\n else {\r\n const attributeCode = (_a = props.column.attribute) === null || _a === void 0 ? void 0 : _a.code;\r\n text = props.row.getValue(attributeCode);\r\n }\r\n }\r\n else {\r\n const value = props.row.getValue(props.column.fieldId);\r\n if (props.column.field instanceof CalculatedField) {\r\n const frm = props.column.datatable.createFormInstance().clone({ values: props.row, isUpdate: false });\r\n text = frm.getField(props.column.fieldId).value;\r\n }\r\n else if (props.column.field instanceof CComboBox) {\r\n text = { value: ((_c = (_b = props.column.field) === null || _b === void 0 ? void 0 : _b.datasource) === null || _c === void 0 ? void 0 : _c.getText(value)) || '' };\r\n }\r\n else if (props.column.field instanceof CDatePicker) {\r\n if (typeof value === 'string') {\r\n text = new DateOnly(value).toString();\r\n }\r\n else {\r\n text = '';\r\n }\r\n }\r\n else {\r\n text = value;\r\n }\r\n }\r\n }\r\n else {\r\n const proxy = new Proxy(props.row, {\r\n get: (target, propName) => {\r\n if (propName === '__target__')\r\n return target;\r\n const form = props.column.datatable.createFormInstance();\r\n const field = form.fields.firstOrDefault(x => x.name == propName);\r\n if (field == null)\r\n return null;\r\n return props.row.getValue(field.id);\r\n },\r\n set: () => {\r\n return false;\r\n }\r\n });\r\n text = { value: \"Prueba\" };\r\n }\r\n if (text instanceof CRuleError)\r\n return React.createElement(TooltipHost, { content: (React.createElement(Label, null, text.message)) },\r\n React.createElement(\"span\", { style: {\r\n color: 'red'\r\n } }, text.toString()));\r\n if (text == null)\r\n return React.createElement(React.Fragment, null);\r\n if (typeof text === 'boolean')\r\n return React.createElement(\"span\", null, text ? 'Si' : 'No');\r\n if (typeof text === 'string')\r\n return React.createElement(\"span\", null, text);\r\n if (typeof (text === null || text === void 0 ? void 0 : text.value) === 'string')\r\n return React.createElement(\"span\", null, text.value);\r\n if (typeof text === 'number')\r\n return React.createElement(\"span\", null, text);\r\n if (typeof (text === null || text === void 0 ? void 0 : text.value) === 'number')\r\n return React.createElement(\"span\", null, text.value);\r\n if (text instanceof DateOnly)\r\n return React.createElement(\"span\", null, text.toString());\r\n if (text instanceof TimeOnly)\r\n return React.createElement(\"span\", null, text.toString());\r\n if (text instanceof DateTime)\r\n return React.createElement(\"span\", null, text.toString());\r\n if (text instanceof Date)\r\n return React.createElement(\"span\", null, new DateTime(text).toString());\r\n return React.createElement(\"span\", null, '{}');\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CDataTableColumn_args, _CDataTableColumn_fluent;\r\nimport React from \"react\";\r\nimport { XDataTableColumn } from \"../components/XDataTableColumn\";\r\nexport class CDataTableColumn {\r\n constructor(props) {\r\n _CDataTableColumn_args.set(this, void 0);\r\n _CDataTableColumn_fluent.set(this, void 0);\r\n __classPrivateFieldSet(this, _CDataTableColumn_args, props, \"f\");\r\n }\r\n get visible() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.visible) !== null && _a !== void 0 ? _a : false;\r\n }\r\n get headerText() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.headerText) !== null && _a !== void 0 ? _a : '';\r\n }\r\n get customValue() {\r\n return null;\r\n }\r\n get visibleRule() {\r\n return __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.visibleRule;\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.id;\r\n }\r\n get maxWidth() {\r\n return __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.maxWidth;\r\n }\r\n get binding() {\r\n return __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.binding;\r\n }\r\n get order() {\r\n return __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.order;\r\n }\r\n get fieldId() {\r\n return __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.fieldId;\r\n }\r\n get minWidth() {\r\n return __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.minWidth;\r\n }\r\n get attribute() {\r\n return __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").attribute;\r\n }\r\n get datatable() {\r\n return __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").datatable;\r\n }\r\n get field() {\r\n return __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").datatable.createFormInstance().fields.where(x => x.id == this.fieldId).firstOrDefault();\r\n }\r\n get fluentStandarDataTableColumn() {\r\n var _a;\r\n if (__classPrivateFieldGet(this, _CDataTableColumn_fluent, \"f\") == null) {\r\n __classPrivateFieldSet(this, _CDataTableColumn_fluent, {\r\n name: __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.headerText,\r\n minWidth: __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.minWidth,\r\n maxWidth: (_a = __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.maxWidth) !== null && _a !== void 0 ? _a : __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.minWidth + 50,\r\n isResizable: typeof __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.isResizable === 'boolean' ? __classPrivateFieldGet(this, _CDataTableColumn_args, \"f\").schema.isResizable : true,\r\n onRender: (row) => {\r\n var _a;\r\n return React.createElement(XDataTableColumn, { key: (_a = this.binding) !== null && _a !== void 0 ? _a : this.id, column: this, row: row });\r\n }\r\n }, \"f\");\r\n }\r\n return __classPrivateFieldGet(this, _CDataTableColumn_fluent, \"f\");\r\n }\r\n}\r\n_CDataTableColumn_args = new WeakMap(), _CDataTableColumn_fluent = new WeakMap();\r\n","import { List } from \"linq.ts\";\r\nexport var ItemEditorLayout;\r\n(function (ItemEditorLayout) {\r\n ItemEditorLayout[ItemEditorLayout[\"panel\"] = 1] = \"panel\";\r\n ItemEditorLayout[ItemEditorLayout[\"horizontal\"] = 2] = \"horizontal\";\r\n})(ItemEditorLayout || (ItemEditorLayout = {}));\r\nexport const ItemEditorLayoutOptions = new List([\r\n { key: ItemEditorLayout.panel, text: ItemEditorLayout[ItemEditorLayout.panel] },\r\n { key: ItemEditorLayout.horizontal, text: ItemEditorLayout[ItemEditorLayout.horizontal] },\r\n]).OrderBy(x => x.text).ToArray();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CListControl_args, _CListControl_columns, _CListControl_formId;\r\nimport { Guid, ReadonlyCollection } from \"@ioip/core/lib\";\r\nimport { List } from \"linq.ts\";\r\nimport { FormNotFoundException } from \"../../exceptions\";\r\nimport { ControlType } from \"../../types\";\r\nimport { CDataTableColumn } from \"../DataTable/types/CDataTableColumn\";\r\nimport DataTableRow from \"../DataTable/types/DataTableRow\";\r\nimport CControl from \"../Control/CControl\";\r\nimport { ItemEditorLayout } from \"../types/ItemEditorLayout\";\r\nclass CListControl extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CListControl_args.set(this, void 0);\r\n _CListControl_columns.set(this, null);\r\n _CListControl_formId.set(this, null);\r\n __classPrivateFieldSet(this, _CListControl_args, args, \"f\");\r\n if (Guid.isNotEmpty(__classPrivateFieldGet(this, _CListControl_args, \"f\").schema.formId))\r\n __classPrivateFieldSet(this, _CListControl_formId, Guid.parse(__classPrivateFieldGet(this, _CListControl_args, \"f\").schema.formId), \"f\");\r\n }\r\n get maxItems() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CListControl_args, \"f\").schema.maxItems) !== null && _a !== void 0 ? _a : 0;\r\n }\r\n get minItems() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CListControl_args, \"f\").schema.minItems) !== null && _a !== void 0 ? _a : 0;\r\n }\r\n get itemEditorLayout() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CListControl_args, \"f\").schema.itemEditorLayout) !== null && _a !== void 0 ? _a : ItemEditorLayout.panel;\r\n }\r\n get value() {\r\n return super.value;\r\n }\r\n set value(value) {\r\n if (value == null) {\r\n super.value = [];\r\n return;\r\n }\r\n if (value instanceof Array) {\r\n super.value = value.map(x => {\r\n if (x instanceof DataTableRow)\r\n return x;\r\n if (typeof x === 'object')\r\n return new DataTableRow({ data: x, table: this });\r\n throw new Error('Invalid value type');\r\n });\r\n return;\r\n }\r\n throw new Error('Invalid value type');\r\n }\r\n get hasCustomQuery() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CListControl_args, \"f\").schema.hasCustomQuery) !== null && _a !== void 0 ? _a : false;\r\n }\r\n get formId() {\r\n return __classPrivateFieldGet(this, _CListControl_formId, \"f\");\r\n }\r\n get columns() {\r\n if (__classPrivateFieldGet(this, _CListControl_columns, \"f\") == null) {\r\n const form = __classPrivateFieldGet(this, _CListControl_args, \"f\").schema.controlType === ControlType.dataTable ? this.createFormInstance() : null;\r\n const columns = new List(__classPrivateFieldGet(this, _CListControl_args, \"f\").schema.columns || [])\r\n .OrderBy(schema => Number(schema.order || 0))\r\n .Select(schema => {\r\n if (__classPrivateFieldGet(this, _CListControl_args, \"f\").schema.controlType === ControlType.entityDataTable) {\r\n return new CDataTableColumn({\r\n datatable: this,\r\n schema,\r\n attribute: schema.attribute\r\n });\r\n }\r\n else {\r\n const field = form.getField(schema.fieldId);\r\n let attribute = null;\r\n if (field != null) {\r\n const attributeId = this.attributeId;\r\n }\r\n ;\r\n return new CDataTableColumn({\r\n datatable: this,\r\n schema,\r\n attribute\r\n });\r\n }\r\n })\r\n .ToArray();\r\n __classPrivateFieldSet(this, _CListControl_columns, new ReadonlyCollection(columns), \"f\");\r\n }\r\n return __classPrivateFieldGet(this, _CListControl_columns, \"f\");\r\n }\r\n addRow(value) {\r\n var _a, _b;\r\n const rows = (_b = (_a = this.value) === null || _a === void 0 ? void 0 : _a.slice()) !== null && _b !== void 0 ? _b : [];\r\n if (value instanceof DataTableRow)\r\n rows.push(value);\r\n else if (value instanceof Object)\r\n rows.push(new DataTableRow({\r\n data: value,\r\n table: this\r\n }));\r\n else\r\n throw new Error('Invalid value type');\r\n this.value = rows;\r\n }\r\n updateRow(value) {\r\n var _a, _b;\r\n const rows = (_b = (_a = this.value) === null || _a === void 0 ? void 0 : _a.slice()) !== null && _b !== void 0 ? _b : [];\r\n const index = rows.findIndex(x => x === value);\r\n if (index >= 0) {\r\n rows[index] = value;\r\n this.value = rows;\r\n }\r\n else\r\n throw new Error('Row not found');\r\n }\r\n createFormInstance(options) {\r\n if (this.formId == null)\r\n return null;\r\n const form = this.isRuntime\r\n ? __classPrivateFieldGet(this, _CListControl_args, \"f\").form.page.getForm({ objectId: this.formId, scope: options === null || options === void 0 ? void 0 : options.scope, connectors: options === null || options === void 0 ? void 0 : options.connectors })\r\n : __classPrivateFieldGet(this, _CListControl_args, \"f\").form.project.findForm(this.formId);\r\n if (form == null)\r\n throw new FormNotFoundException(this.formId);\r\n return form;\r\n }\r\n}\r\n_CListControl_args = new WeakMap(), _CListControl_columns = new WeakMap(), _CListControl_formId = new WeakMap();\r\nexport default CListControl;\r\n","import { List } from \"linq.ts\";\r\nexport var CommandBarItemVisibilityMode;\r\n(function (CommandBarItemVisibilityMode) {\r\n CommandBarItemVisibilityMode[CommandBarItemVisibilityMode[\"undefined\"] = 0] = \"undefined\";\r\n CommandBarItemVisibilityMode[CommandBarItemVisibilityMode[\"alwaysVisible\"] = 1] = \"alwaysVisible\";\r\n CommandBarItemVisibilityMode[CommandBarItemVisibilityMode[\"singleItemSelected\"] = 2] = \"singleItemSelected\";\r\n CommandBarItemVisibilityMode[CommandBarItemVisibilityMode[\"oneOrMoreItemsSelected\"] = 3] = \"oneOrMoreItemsSelected\";\r\n CommandBarItemVisibilityMode[CommandBarItemVisibilityMode[\"noSelection\"] = 4] = \"noSelection\";\r\n})(CommandBarItemVisibilityMode || (CommandBarItemVisibilityMode = {}));\r\nexport const CommandBarItemVisibilityModeOptions = new List([\r\n { key: CommandBarItemVisibilityMode.alwaysVisible, text: CommandBarItemVisibilityMode[CommandBarItemVisibilityMode.alwaysVisible] },\r\n { key: CommandBarItemVisibilityMode.singleItemSelected, text: CommandBarItemVisibilityMode[CommandBarItemVisibilityMode.singleItemSelected] },\r\n { key: CommandBarItemVisibilityMode.oneOrMoreItemsSelected, text: CommandBarItemVisibilityMode[CommandBarItemVisibilityMode.oneOrMoreItemsSelected] },\r\n { key: CommandBarItemVisibilityMode.noSelection, text: CommandBarItemVisibilityMode[CommandBarItemVisibilityMode.noSelection] }\r\n]).OrderBy(o => o.text).ToArray();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CCommandBarItem_args, _CCommandBarItem_visibleRule, _CCommandBarItem_executeVisibleRule;\r\nimport { CommandBarItemVisibilityMode } from \"./CommandBarItemVisibilityMode\";\r\nexport class CCommandBarItem {\r\n constructor(props) {\r\n _CCommandBarItem_args.set(this, void 0);\r\n _CCommandBarItem_visibleRule.set(this, void 0);\r\n _CCommandBarItem_executeVisibleRule.set(this, () => {\r\n var _a;\r\n if (!__classPrivateFieldGet(this, _CCommandBarItem_args, \"f\").datatable.isRuntime)\r\n return true;\r\n const visibleRule = __classPrivateFieldGet(this, _CCommandBarItem_args, \"f\").schema.visibleRule;\r\n if (visibleRule == null)\r\n return undefined;\r\n if (__classPrivateFieldGet(this, _CCommandBarItem_visibleRule, \"f\") == null) {\r\n const nodes = visibleRule.nodes || [];\r\n const edges = visibleRule.edges || [];\r\n __classPrivateFieldSet(this, _CCommandBarItem_visibleRule, this.datatable.engine.createLoginEngine('CommandBarItem.Visible', {\r\n nodes: nodes,\r\n edges: edges,\r\n currentForm: this.datatable.form\r\n }), \"f\");\r\n }\r\n const result = (_a = __classPrivateFieldGet(this, _CCommandBarItem_visibleRule, \"f\")) === null || _a === void 0 ? void 0 : _a.call(this);\r\n return result !== null && result !== void 0 ? result : false;\r\n });\r\n __classPrivateFieldSet(this, _CCommandBarItem_args, props, \"f\");\r\n }\r\n get visible() {\r\n const ruleResult = __classPrivateFieldGet(this, _CCommandBarItem_executeVisibleRule, \"f\").call(this);\r\n if (ruleResult != undefined)\r\n return ruleResult;\r\n return __classPrivateFieldGet(this, _CCommandBarItem_args, \"f\").schema.visible || false;\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _CCommandBarItem_args, \"f\").schema.id;\r\n }\r\n get action() {\r\n return __classPrivateFieldGet(this, _CCommandBarItem_args, \"f\").schema.action;\r\n }\r\n get onClick() {\r\n return __classPrivateFieldGet(this, _CCommandBarItem_args, \"f\").schema.onClick;\r\n }\r\n get visibilityMode() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CCommandBarItem_args, \"f\").schema.visibilityMode) !== null && _a !== void 0 ? _a : CommandBarItemVisibilityMode.undefined;\r\n }\r\n get order() {\r\n return __classPrivateFieldGet(this, _CCommandBarItem_args, \"f\").schema.order;\r\n }\r\n get datatable() {\r\n return __classPrivateFieldGet(this, _CCommandBarItem_args, \"f\").datatable;\r\n }\r\n getAsContextualMenuItem(callback) {\r\n return {\r\n key: this.id,\r\n text: __classPrivateFieldGet(this, _CCommandBarItem_args, \"f\").schema.text,\r\n iconProps: { iconName: __classPrivateFieldGet(this, _CCommandBarItem_args, \"f\").schema.icon },\r\n onClick: () => {\r\n callback();\r\n }\r\n };\r\n }\r\n}\r\n_CCommandBarItem_args = new WeakMap(), _CCommandBarItem_visibleRule = new WeakMap(), _CCommandBarItem_executeVisibleRule = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CDataSource_schema, _CDataSource_items;\r\nimport { ReadonlyCollection } from \"@ioip/core/lib\";\r\nexport class CDataSource {\r\n constructor(schema) {\r\n var _a;\r\n _CDataSource_schema.set(this, void 0);\r\n _CDataSource_items.set(this, null);\r\n __classPrivateFieldSet(this, _CDataSource_schema, schema, \"f\");\r\n __classPrivateFieldSet(this, _CDataSource_items, new ReadonlyCollection(((_a = __classPrivateFieldGet(this, _CDataSource_schema, \"f\")) === null || _a === void 0 ? void 0 : _a.items) || []), \"f\");\r\n }\r\n get items() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CDataSource_items, \"f\")) !== null && _a !== void 0 ? _a : new ReadonlyCollection([]);\r\n }\r\n ;\r\n get keyBinding() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CDataSource_schema, \"f\")) === null || _a === void 0 ? void 0 : _a.keyBinding;\r\n }\r\n ;\r\n get textBinding() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CDataSource_schema, \"f\")) === null || _a === void 0 ? void 0 : _a.textBinding;\r\n }\r\n ;\r\n get type() {\r\n return __classPrivateFieldGet(this, _CDataSource_schema, \"f\").type;\r\n }\r\n ;\r\n getText(selectedKey) {\r\n const textBinding = this.textBinding;\r\n const item = this.getItem(selectedKey);\r\n return item === null || item === void 0 ? void 0 : item[textBinding];\r\n }\r\n getItem(selectedKey) {\r\n const keyBinding = this.keyBinding;\r\n const item = this.items.firstOrDefault(x => x[keyBinding] == selectedKey);\r\n return item;\r\n }\r\n select(callback) {\r\n var _a, _b, _c;\r\n const items = (_a = this.items.toArray()) !== null && _a !== void 0 ? _a : [];\r\n return (_c = (_b = items.map) === null || _b === void 0 ? void 0 : _b.call(items, callback)) !== null && _c !== void 0 ? _c : [];\r\n }\r\n}\r\n_CDataSource_schema = new WeakMap(), _CDataSource_items = new WeakMap();\r\n","import { List } from \"linq.ts\";\r\nexport var CommandBarAction;\r\n(function (CommandBarAction) {\r\n CommandBarAction[CommandBarAction[\"createItem\"] = 1] = \"createItem\";\r\n CommandBarAction[CommandBarAction[\"editItem\"] = 2] = \"editItem\";\r\n CommandBarAction[CommandBarAction[\"deleteItem\"] = 3] = \"deleteItem\";\r\n CommandBarAction[CommandBarAction[\"custom\"] = 4] = \"custom\";\r\n CommandBarAction[CommandBarAction[\"openPanel\"] = 5] = \"openPanel\";\r\n})(CommandBarAction || (CommandBarAction = {}));\r\nexport const CommandBarActionDataSource = new List([\r\n { key: CommandBarAction.createItem, text: CommandBarAction[CommandBarAction.createItem] },\r\n { key: CommandBarAction.editItem, text: CommandBarAction[CommandBarAction.editItem] },\r\n { key: CommandBarAction.deleteItem, text: CommandBarAction[CommandBarAction.deleteItem] },\r\n { key: CommandBarAction.custom, text: CommandBarAction[CommandBarAction.custom] },\r\n { key: CommandBarAction.openPanel, text: CommandBarAction[CommandBarAction.openPanel] },\r\n]).OrderBy(o => o.text).ToArray();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _DataTableRowCollection_table, _DataTableRowCollection_data;\r\nexport default class DataTableRowCollection {\r\n constructor(table, data = []) {\r\n _DataTableRowCollection_table.set(this, void 0);\r\n _DataTableRowCollection_data.set(this, void 0);\r\n __classPrivateFieldSet(this, _DataTableRowCollection_table, table, \"f\");\r\n __classPrivateFieldSet(this, _DataTableRowCollection_data, data, \"f\");\r\n }\r\n get table() {\r\n return __classPrivateFieldGet(this, _DataTableRowCollection_table, \"f\");\r\n }\r\n get items() {\r\n return __classPrivateFieldGet(this, _DataTableRowCollection_data, \"f\");\r\n }\r\n set items(value) {\r\n __classPrivateFieldSet(this, _DataTableRowCollection_data, value, \"f\");\r\n }\r\n}\r\n_DataTableRowCollection_table = new WeakMap(), _DataTableRowCollection_data = new WeakMap();\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CDataTable_args, _CDataTable_commandBarItems, _CDataTable_datasource, _CDataTable_filterDatasources, _CDataTable_selectedItems, _CDataTable_jsxConnection, _CDataTable_formInstance;\r\nimport { PanelType, SelectionMode } from \"@fluentui/react\";\r\nimport { ReadonlyCollection, paginateDataAsync } from \"@ioip/core/lib\";\r\nimport { DataSourceType } from \"../../../datasources\";\r\nimport CListControl from \"../../List/CListControl\";\r\nimport { CCommandBarItem } from \"../../types/CCommandBarItem\";\r\nimport { CDataSource } from \"../../types/CDataSource\";\r\nimport { CommandBarAction } from \"../../types/CommandBarAction\";\r\nimport { CommandBarItemVisibilityMode } from \"../../types/CommandBarItemVisibilityMode\";\r\nimport DataTableRow from \"./DataTableRow\";\r\nimport DataTableRowCollection from \"./DataTableRowCollection\";\r\nclass CDataTable extends CListControl {\r\n constructor(args) {\r\n super(args);\r\n _CDataTable_args.set(this, void 0);\r\n _CDataTable_commandBarItems.set(this, null);\r\n _CDataTable_datasource.set(this, void 0);\r\n _CDataTable_filterDatasources.set(this, {});\r\n _CDataTable_selectedItems.set(this, void 0);\r\n _CDataTable_jsxConnection.set(this, void 0);\r\n _CDataTable_formInstance.set(this, void 0);\r\n this.executeOnOpenPanelEvent = () => {\r\n if (this.isRuntime && __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.onOpenPanel != null) {\r\n const onOpenPanel = this.form.createLogixInstance('onOpenPanel', 'init', __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.onOpenPanel);\r\n onOpenPanel();\r\n }\r\n };\r\n __classPrivateFieldSet(this, _CDataTable_args, args, \"f\");\r\n const commandBarItems = __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.commandBarItems || [];\r\n if (commandBarItems.length > 0) {\r\n const items = commandBarItems.map(x => new CCommandBarItem({ datatable: this, schema: x }));\r\n __classPrivateFieldSet(this, _CDataTable_commandBarItems, new ReadonlyCollection(items), \"f\");\r\n }\r\n else {\r\n __classPrivateFieldSet(this, _CDataTable_commandBarItems, new ReadonlyCollection([]), \"f\");\r\n }\r\n var dsSchemas = __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.runtimeDataSources || {};\r\n for (const key in dsSchemas) {\r\n if (Object.prototype.hasOwnProperty.call(dsSchemas, key)) {\r\n const dsSchema = dsSchemas[key];\r\n const datasource = new CDataSource(dsSchema);\r\n __classPrivateFieldGet(this, _CDataTable_filterDatasources, \"f\")[key] = datasource;\r\n }\r\n }\r\n }\r\n get label() {\r\n return __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.label;\r\n }\r\n get placeholder() {\r\n return __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.placeholder;\r\n }\r\n get multiline() {\r\n return __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.multiline;\r\n }\r\n get commandBarItems() {\r\n return __classPrivateFieldGet(this, _CDataTable_commandBarItems, \"f\");\r\n }\r\n get title() {\r\n return __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.title;\r\n }\r\n get panelType() {\r\n return __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.panelType || PanelType.medium;\r\n }\r\n get selectionMode() {\r\n return __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.selectionMode || SelectionMode.none;\r\n }\r\n get selectedItem() {\r\n var _a, _b;\r\n if (((_b = (_a = __classPrivateFieldGet(this, _CDataTable_selectedItems, \"f\")) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.length) > 0)\r\n return __classPrivateFieldGet(this, _CDataTable_selectedItems, \"f\").items[0];\r\n return null;\r\n }\r\n get selectedItems() {\r\n return __classPrivateFieldGet(this, _CDataTable_selectedItems, \"f\");\r\n }\r\n setSelectedItems(value) {\r\n __classPrivateFieldSet(this, _CDataTable_selectedItems, new DataTableRowCollection(this, value), \"f\");\r\n }\r\n get panelTitle() {\r\n return __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.panelTitle;\r\n }\r\n get datasource() {\r\n return __classPrivateFieldGet(this, _CDataTable_datasource, \"f\");\r\n }\r\n get dataSourceType() {\r\n return __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.dataSourceType;\r\n }\r\n get dataSourceEntityId() {\r\n return __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.dataSourceEntityId;\r\n }\r\n get runtimeFilterDatasources() {\r\n return __classPrivateFieldGet(this, _CDataTable_filterDatasources, \"f\");\r\n }\r\n get dataSourceEntityViewId() {\r\n return __classPrivateFieldGet(this, _CDataTable_args, \"f\").schema.dataSourceEntityViewId;\r\n }\r\n get formInstance() {\r\n if (__classPrivateFieldGet(this, _CDataTable_formInstance, \"f\") == null)\r\n return this.initializeFormInstance();\r\n return __classPrivateFieldGet(this, _CDataTable_formInstance, \"f\");\r\n }\r\n get value() {\r\n var _a;\r\n return (_a = super.value) !== null && _a !== void 0 ? _a : [];\r\n }\r\n set value(value) {\r\n super.value = value;\r\n }\r\n initializeFormInstance(options) {\r\n if (__classPrivateFieldGet(this, _CDataTable_formInstance, \"f\") != null)\r\n return __classPrivateFieldGet(this, _CDataTable_formInstance, \"f\");\r\n __classPrivateFieldSet(this, _CDataTable_formInstance, this.createFormInstance(), \"f\");\r\n return __classPrivateFieldGet(this, _CDataTable_formInstance, \"f\");\r\n }\r\n disposeFormInstance() {\r\n __classPrivateFieldSet(this, _CDataTable_formInstance, null, \"f\");\r\n }\r\n validate() {\r\n return super.validate();\r\n }\r\n refresh() {\r\n var _a, _b;\r\n (_b = (_a = __classPrivateFieldGet(this, _CDataTable_jsxConnection, \"f\")) === null || _a === void 0 ? void 0 : _a.onRefresh) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n connect(props) {\r\n __classPrivateFieldSet(this, _CDataTable_jsxConnection, props, \"f\");\r\n }\r\n downloadServerDataAsync(request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this.isRuntime)\r\n return { data: [], recordsFiltered: 0 };\r\n if (this.dataSourceType == DataSourceType.procesoxEntity) {\r\n const response = yield this.engine.executeEntityDataTableAsync(this.form.objectId, this.id, request);\r\n return {\r\n data: response.data.map(x => new DataTableRow({ table: this, data: x })),\r\n recordsFiltered: response.recordsFiltered\r\n };\r\n }\r\n else {\r\n return yield paginateDataAsync(request, {\r\n data: () => this.value,\r\n search: (o) => []\r\n });\r\n }\r\n });\r\n }\r\n buildCommandBarItems(selectedItems) {\r\n var _a, _b;\r\n if (!this.isRuntime)\r\n return [];\r\n const disabled = this.readonly || this.disabled;\r\n const onAddItem = () => {\r\n var _a, _b;\r\n const form = this.initializeFormInstance({ scope: this.form.scope, connectors: __classPrivateFieldGet(this, _CDataTable_args, \"f\").form.connectors });\r\n form.subscribe(() => this.refresh());\r\n form.readonly = disabled;\r\n (_b = (_a = __classPrivateFieldGet(this, _CDataTable_jsxConnection, \"f\")) === null || _a === void 0 ? void 0 : _a.onOpenSubForm) === null || _b === void 0 ? void 0 : _b.call(_a, {\r\n form,\r\n isUpdate: false,\r\n action: CommandBarAction.createItem,\r\n dispose: () => {\r\n this.disposeFormInstance();\r\n }\r\n });\r\n };\r\n const onEditItem = (row) => {\r\n var _a, _b;\r\n const form = this.initializeFormInstance({ scope: this.form.scope, connectors: __classPrivateFieldGet(this, _CDataTable_args, \"f\").form.connectors });\r\n form.values = row;\r\n this.executeOnOpenPanelEvent();\r\n form.subscribe(() => this.refresh());\r\n form.readonly = disabled;\r\n (_b = (_a = __classPrivateFieldGet(this, _CDataTable_jsxConnection, \"f\")) === null || _a === void 0 ? void 0 : _a.onOpenSubForm) === null || _b === void 0 ? void 0 : _b.call(_a, {\r\n form,\r\n isUpdate: true,\r\n action: CommandBarAction.editItem,\r\n dispose: () => {\r\n this.disposeFormInstance();\r\n }\r\n });\r\n };\r\n const onDeleteItem = (selectedItems) => {\r\n debugger;\r\n };\r\n let result = [];\r\n const maxItems = this.maxItems;\r\n const values = this.value || [];\r\n const allowAddItems = maxItems > 0 ? values.length < maxItems : true;\r\n const commandBarItems = (_b = (_a = this.commandBarItems.orderBy(x => x.order)) === null || _a === void 0 ? void 0 : _a.toArray()) !== null && _b !== void 0 ? _b : [];\r\n if (commandBarItems.length > 0) {\r\n for (let i = 0; i < commandBarItems.length; i++) {\r\n const commandBarItem = commandBarItems[i];\r\n if (!commandBarItem.visible)\r\n continue;\r\n const visibilityMode = commandBarItem.visibilityMode;\r\n switch (commandBarItem.action) {\r\n case CommandBarAction.createItem:\r\n if (allowAddItems)\r\n result.push(commandBarItem.getAsContextualMenuItem(onAddItem));\r\n break;\r\n case CommandBarAction.editItem:\r\n if ((selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) > 0) {\r\n switch (visibilityMode) {\r\n case CommandBarItemVisibilityMode.singleItemSelected:\r\n if (selectedItems.length === 1)\r\n result.push(commandBarItem.getAsContextualMenuItem(() => onEditItem(selectedItems[0])));\r\n break;\r\n case CommandBarItemVisibilityMode.oneOrMoreItemsSelected:\r\n if (selectedItems.length > 0)\r\n result.push(commandBarItem.getAsContextualMenuItem(() => onEditItem(selectedItems[0])));\r\n break;\r\n case CommandBarItemVisibilityMode.alwaysVisible:\r\n if (selectedItems.length === values.length)\r\n result.push(commandBarItem.getAsContextualMenuItem(() => onEditItem(selectedItems[0])));\r\n break;\r\n }\r\n }\r\n break;\r\n case CommandBarAction.deleteItem:\r\n if ((selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) > 0) {\r\n result.push(commandBarItem.getAsContextualMenuItem(() => onDeleteItem(selectedItems !== null && selectedItems !== void 0 ? selectedItems : [])));\r\n }\r\n break;\r\n case CommandBarAction.custom:\r\n const customEvent = () => {\r\n const rule = commandBarItem.onClick;\r\n if (rule != null) {\r\n const eventRule = this.engine.createLoginEngine('CommandBar.Click', {\r\n nodes: rule.nodes,\r\n edges: rule.edges,\r\n currentForm: this.form,\r\n type: 'init',\r\n onOpenPanel: (options) => this.engine.openPanel(options),\r\n onShowSuccessToast: (notification) => {\r\n this.engine.host.showSuccessToast(notification);\r\n },\r\n onCreateHttpClient: () => {\r\n return this.form.runtime.httpClient;\r\n },\r\n onShowMessage: (title, text, onCloseCallback) => {\r\n this.engine.host.showMessage(text, title, onCloseCallback);\r\n },\r\n onOpenDialog: (options) => this.engine.openDialog(options)\r\n });\r\n eventRule();\r\n }\r\n };\r\n switch (visibilityMode) {\r\n case CommandBarItemVisibilityMode.singleItemSelected:\r\n if (selectedItems.length === 1)\r\n result.push(commandBarItem.getAsContextualMenuItem(customEvent));\r\n break;\r\n case CommandBarItemVisibilityMode.oneOrMoreItemsSelected:\r\n if (selectedItems.length > 0)\r\n result.push(commandBarItem.getAsContextualMenuItem(customEvent));\r\n break;\r\n case CommandBarItemVisibilityMode.alwaysVisible:\r\n result.push(commandBarItem.getAsContextualMenuItem(customEvent));\r\n break;\r\n case CommandBarItemVisibilityMode.noSelection:\r\n if (selectedItems.length === 0)\r\n result.push(commandBarItem.getAsContextualMenuItem(customEvent));\r\n break;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n if (!disabled) {\r\n const maxItems = this.maxItems;\r\n const values = this.value || [];\r\n const allowAddItems = maxItems > 0 ? values.length < maxItems : true;\r\n if (allowAddItems) {\r\n result.push({\r\n key: 'new',\r\n name: disabled ? 'Ver' : 'Nuevo',\r\n iconProps: { iconName: disabled ? 'View' : 'Add' },\r\n disabled: this.formId == null,\r\n title: this.formId != null ? 'Crear elemento' : 'No existe un formulario de edición y creación de elementos',\r\n onClick: onAddItem\r\n });\r\n }\r\n }\r\n if ((selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) > 0) {\r\n if (selectedItems.length === 1) {\r\n result.push({\r\n key: 'edit',\r\n name: disabled ? 'Ver' : 'Editar',\r\n iconProps: { iconName: disabled ? 'View' : 'Edit' },\r\n onClick: () => onEditItem(selectedItems[0])\r\n });\r\n }\r\n if (!disabled) {\r\n result.push({\r\n key: 'remove',\r\n name: 'Eliminar',\r\n iconProps: { iconName: 'Delete' },\r\n onClick: () => {\r\n var _a;\r\n const values = ((_a = this.value) === null || _a === void 0 ? void 0 : _a.slice()) || [];\r\n this.value = values.filter(x => !selectedItems.includes(x));\r\n this.refresh();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n_CDataTable_args = new WeakMap(), _CDataTable_commandBarItems = new WeakMap(), _CDataTable_datasource = new WeakMap(), _CDataTable_filterDatasources = new WeakMap(), _CDataTable_selectedItems = new WeakMap(), _CDataTable_jsxConnection = new WeakMap(), _CDataTable_formInstance = new WeakMap();\r\nexport default CDataTable;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CDateTimePicker_args, _CDateTimePicker_minValue, _CDateTimePicker_maxValue;\r\nimport { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport DateTime from \"@ioip/core/lib/datetime/DateTime\";\r\nimport CControl from \"../Control/CControl\";\r\nclass CDateTimePicker extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CDateTimePicker_args.set(this, void 0);\r\n _CDateTimePicker_minValue.set(this, void 0);\r\n _CDateTimePicker_maxValue.set(this, void 0);\r\n __classPrivateFieldSet(this, _CDateTimePicker_args, args, \"f\");\r\n }\r\n get label() {\r\n return __classPrivateFieldGet(this, _CDateTimePicker_args, \"f\").schema.label;\r\n }\r\n get placeholder() {\r\n return __classPrivateFieldGet(this, _CDateTimePicker_args, \"f\").schema.placeholder;\r\n }\r\n get minValue() {\r\n if (isNullOrEmpty(__classPrivateFieldGet(this, _CDateTimePicker_args, \"f\").schema.minValue))\r\n return null;\r\n if (__classPrivateFieldGet(this, _CDateTimePicker_minValue, \"f\") == null)\r\n __classPrivateFieldSet(this, _CDateTimePicker_minValue, new DateTime(__classPrivateFieldGet(this, _CDateTimePicker_args, \"f\").schema.minValue), \"f\");\r\n return __classPrivateFieldGet(this, _CDateTimePicker_minValue, \"f\");\r\n }\r\n get maxValue() {\r\n if (isNullOrEmpty(__classPrivateFieldGet(this, _CDateTimePicker_args, \"f\").schema.maxValue))\r\n return null;\r\n if (__classPrivateFieldGet(this, _CDateTimePicker_maxValue, \"f\") == null)\r\n __classPrivateFieldSet(this, _CDateTimePicker_maxValue, new DateTime(__classPrivateFieldGet(this, _CDateTimePicker_args, \"f\").schema.maxValue), \"f\");\r\n return __classPrivateFieldGet(this, _CDateTimePicker_maxValue, \"f\");\r\n }\r\n get value() {\r\n return super.value;\r\n }\r\n set value(value) {\r\n super.value = new DateTime(value);\r\n }\r\n validate() {\r\n this.errorMessage = null;\r\n const hasValue = this.value != null;\r\n if (this.required && !hasValue) {\r\n this.errorMessage = 'Campo requerido';\r\n return false;\r\n }\r\n return super.validate();\r\n }\r\n}\r\n_CDateTimePicker_args = new WeakMap(), _CDateTimePicker_minValue = new WeakMap(), _CDateTimePicker_maxValue = new WeakMap();\r\nexport default CDateTimePicker;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CDepartmentSelector_args;\r\nimport CComboBox from \"../ComboBox/CComboBox\";\r\nclass CDepartmentSelector extends CComboBox {\r\n constructor(args) {\r\n super(args);\r\n _CDepartmentSelector_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CDepartmentSelector_args, args, \"f\");\r\n }\r\n get countryFilterId() {\r\n return __classPrivateFieldGet(this, _CDepartmentSelector_args, \"f\").schema.countryFilterId;\r\n }\r\n}\r\n_CDepartmentSelector_args = new WeakMap();\r\nexport default CDepartmentSelector;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _FileUploaderItem_props, _FileUploaderItem_percentage, _FileUploaderItem_maxChunkSize, _FileUploaderItem_retryCount, _FileUploaderItem_loading, _FileUploaderItem_startFileCreationResponse, _FileUploaderItem_appendContentResponse, _FileUploaderItem_pending, _FileUploaderItem_uploadContentAsync, _FileUploaderItem_retryUploadContent;\r\nexport default class FileUploaderItem {\r\n constructor(props) {\r\n _FileUploaderItem_props.set(this, void 0);\r\n _FileUploaderItem_percentage.set(this, void 0);\r\n _FileUploaderItem_maxChunkSize.set(this, 1024 * 1024 * 4);\r\n _FileUploaderItem_retryCount.set(this, 0);\r\n _FileUploaderItem_loading.set(this, false);\r\n _FileUploaderItem_startFileCreationResponse.set(this, void 0);\r\n _FileUploaderItem_appendContentResponse.set(this, void 0);\r\n _FileUploaderItem_pending.set(this, true);\r\n _FileUploaderItem_uploadContentAsync.set(this, async (file, startChunk) => {\r\n let nextChunk = startChunk;\r\n if (file.size > 0)\r\n __classPrivateFieldSet(this, _FileUploaderItem_percentage, Math.floor((nextChunk / file.size) * 100), \"f\");\r\n while (true) {\r\n const chunkSize = file.size > __classPrivateFieldGet(this, _FileUploaderItem_maxChunkSize, \"f\") ? __classPrivateFieldGet(this, _FileUploaderItem_maxChunkSize, \"f\") : file.size;\r\n const endRead = nextChunk + chunkSize;\r\n const lengthRead = endRead > file.size ? file.size : endRead;\r\n const buffer = file.slice(nextChunk, lengthRead);\r\n try {\r\n __classPrivateFieldSet(this, _FileUploaderItem_appendContentResponse, await __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").onAppendContent(this, buffer), \"f\");\r\n }\r\n catch (error) {\r\n await __classPrivateFieldGet(this, _FileUploaderItem_retryUploadContent, \"f\").call(this);\r\n return;\r\n }\r\n nextChunk = __classPrivateFieldGet(this, _FileUploaderItem_appendContentResponse, \"f\").nextChunk;\r\n if (file.size > 0)\r\n __classPrivateFieldSet(this, _FileUploaderItem_percentage, Math.floor((nextChunk / file.size) * 100), \"f\");\r\n if (__classPrivateFieldGet(this, _FileUploaderItem_appendContentResponse, \"f\").complete) {\r\n file = null;\r\n await __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").onContentUploadCompleted(this);\r\n break;\r\n }\r\n }\r\n __classPrivateFieldSet(this, _FileUploaderItem_loading, false, \"f\");\r\n __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").onItemCreated(this);\r\n });\r\n _FileUploaderItem_retryUploadContent.set(this, async () => {\r\n var _a;\r\n var _b;\r\n if (__classPrivateFieldGet(this, _FileUploaderItem_retryCount, \"f\") < 3) {\r\n __classPrivateFieldSet(this, _FileUploaderItem_retryCount, (_b = __classPrivateFieldGet(this, _FileUploaderItem_retryCount, \"f\"), _b++, _b), \"f\");\r\n if (this.file != null && __classPrivateFieldGet(this, _FileUploaderItem_startFileCreationResponse, \"f\") != null) {\r\n __classPrivateFieldGet(this, _FileUploaderItem_uploadContentAsync, \"f\").call(this, __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").file, ((_a = __classPrivateFieldGet(this, _FileUploaderItem_appendContentResponse, \"f\")) === null || _a === void 0 ? void 0 : _a.nextChunk) || 0);\r\n }\r\n else {\r\n const input = document.createElement('input');\r\n input.type = 'file';\r\n input.onchange = (ev) => {\r\n var _a, _b;\r\n if (((_b = (_a = ev.target) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b.length) === 1) {\r\n if (typeof __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").onRetryAppendContent === 'function') {\r\n const file = ev.target.files[0];\r\n const retryResult = __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").onRetryAppendContent(this, file);\r\n if (!retryResult.cancel) {\r\n __classPrivateFieldGet(this, _FileUploaderItem_uploadContentAsync, \"f\").call(this, ev.target.files[0], retryResult.nextChunk);\r\n }\r\n }\r\n }\r\n };\r\n input.click();\r\n }\r\n }\r\n else {\r\n __classPrivateFieldSet(this, _FileUploaderItem_loading, false, \"f\");\r\n __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").onError(this, 'Se ha producido un error al cargar el contenido el archivo');\r\n }\r\n });\r\n this.startAsync = async () => {\r\n __classPrivateFieldSet(this, _FileUploaderItem_loading, true, \"f\");\r\n __classPrivateFieldSet(this, _FileUploaderItem_pending, false, \"f\");\r\n __classPrivateFieldSet(this, _FileUploaderItem_startFileCreationResponse, await __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").onStartCreation(this), \"f\");\r\n if (__classPrivateFieldGet(this, _FileUploaderItem_startFileCreationResponse, \"f\").cancel) {\r\n __classPrivateFieldSet(this, _FileUploaderItem_loading, false, \"f\");\r\n __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").onItemCanceled(this);\r\n return;\r\n }\r\n await __classPrivateFieldGet(this, _FileUploaderItem_uploadContentAsync, \"f\").call(this, __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").file, 0);\r\n };\r\n __classPrivateFieldSet(this, _FileUploaderItem_props, props, \"f\");\r\n }\r\n get file() {\r\n return __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").file;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").file.name;\r\n }\r\n get size() {\r\n return __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").file.size;\r\n }\r\n get percentage() {\r\n return __classPrivateFieldGet(this, _FileUploaderItem_percentage, \"f\") || 0;\r\n }\r\n get loading() {\r\n return __classPrivateFieldGet(this, _FileUploaderItem_loading, \"f\") || false;\r\n }\r\n get documentId() {\r\n return __classPrivateFieldGet(this, _FileUploaderItem_startFileCreationResponse, \"f\").documentId || 0;\r\n }\r\n get isPending() {\r\n return __classPrivateFieldGet(this, _FileUploaderItem_pending, \"f\") || false;\r\n }\r\n delete() {\r\n __classPrivateFieldSet(this, _FileUploaderItem_loading, false, \"f\");\r\n __classPrivateFieldGet(this, _FileUploaderItem_props, \"f\").onItemCanceled(this);\r\n }\r\n}\r\n_FileUploaderItem_props = new WeakMap(), _FileUploaderItem_percentage = new WeakMap(), _FileUploaderItem_maxChunkSize = new WeakMap(), _FileUploaderItem_retryCount = new WeakMap(), _FileUploaderItem_loading = new WeakMap(), _FileUploaderItem_startFileCreationResponse = new WeakMap(), _FileUploaderItem_appendContentResponse = new WeakMap(), _FileUploaderItem_pending = new WeakMap(), _FileUploaderItem_uploadContentAsync = new WeakMap(), _FileUploaderItem_retryUploadContent = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _FileUploader_props, _FileUploader_newFiles, _FileUploader_onChanged;\r\nimport FileUploaderItem from \"./FileUploaderItem\";\r\nclass FileUploader {\r\n constructor(props) {\r\n _FileUploader_props.set(this, void 0);\r\n _FileUploader_newFiles.set(this, []);\r\n _FileUploader_onChanged.set(this, void 0);\r\n __classPrivateFieldSet(this, _FileUploader_props, props, \"f\");\r\n }\r\n get files() {\r\n return __classPrivateFieldGet(this, _FileUploader_newFiles, \"f\");\r\n }\r\n set onChanged(fn) {\r\n __classPrivateFieldSet(this, _FileUploader_onChanged, fn, \"f\");\r\n }\r\n add(file) {\r\n var _a;\r\n const fileEntry = new FileUploaderItem({\r\n file,\r\n onItemCreated: __classPrivateFieldGet(this, _FileUploader_props, \"f\").onItemCreated,\r\n onError: __classPrivateFieldGet(this, _FileUploader_props, \"f\").onError,\r\n onItemCanceled: () => {\r\n var _a, _b, _c;\r\n __classPrivateFieldSet(this, _FileUploader_newFiles, __classPrivateFieldGet(this, _FileUploader_newFiles, \"f\").filter(x => x !== fileEntry), \"f\");\r\n (_a = __classPrivateFieldGet(this, _FileUploader_onChanged, \"f\")) === null || _a === void 0 ? void 0 : _a.call(this);\r\n (_c = (_b = __classPrivateFieldGet(this, _FileUploader_props, \"f\")).onItemCanceled) === null || _c === void 0 ? void 0 : _c.call(_b, fileEntry);\r\n },\r\n onStartCreation: __classPrivateFieldGet(this, _FileUploader_props, \"f\").onStartCreationAsync,\r\n onMessage: __classPrivateFieldGet(this, _FileUploader_props, \"f\").onShowMessage,\r\n onRetryAppendContent: __classPrivateFieldGet(this, _FileUploader_props, \"f\").onRetryAppendContent,\r\n onContentUploadCompleted: __classPrivateFieldGet(this, _FileUploader_props, \"f\").onCompletedAync,\r\n onAppendContent: __classPrivateFieldGet(this, _FileUploader_props, \"f\").onAppendContentAsync,\r\n });\r\n __classPrivateFieldGet(this, _FileUploader_newFiles, \"f\").push(fileEntry);\r\n (_a = __classPrivateFieldGet(this, _FileUploader_onChanged, \"f\")) === null || _a === void 0 ? void 0 : _a.call(this);\r\n return fileEntry;\r\n }\r\n async saveChangesAsync() {\r\n const files = __classPrivateFieldGet(this, _FileUploader_newFiles, \"f\").filter(x => x.isPending);\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n if (file.isPending) {\r\n await file.startAsync();\r\n }\r\n }\r\n }\r\n}\r\n_FileUploader_props = new WeakMap(), _FileUploader_newFiles = new WeakMap(), _FileUploader_onChanged = new WeakMap();\r\nexport default FileUploader;\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CFileManager_files, _CFileManager_fileManager, _CFileManager_onCompletedCallback, _CFileManager_args, _CFileManager_initializeComponent;\r\nimport FileUploader from \"@ioip/core/lib/file-manager/FileUploader\";\r\nimport CControl from \"../Control/CControl\";\r\nexport class CFileManager extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CFileManager_files.set(this, []);\r\n _CFileManager_fileManager.set(this, void 0);\r\n _CFileManager_onCompletedCallback.set(this, void 0);\r\n _CFileManager_args.set(this, void 0);\r\n _CFileManager_initializeComponent.set(this, () => {\r\n if (!this.isRuntime)\r\n return;\r\n const host = __classPrivateFieldGet(this, _CFileManager_args, \"f\").form.runtime.host;\r\n const prx = this.form.runtime;\r\n const formId = this.form.objectId;\r\n const fieldId = this.id;\r\n __classPrivateFieldSet(this, _CFileManager_fileManager, new FileUploader({\r\n onStartCreationAsync: (item) => __awaiter(this, void 0, void 0, function* () {\r\n const itemId = this.form.itemId;\r\n const data = {\r\n fields: {},\r\n length: item.file.size,\r\n name: item.file.name,\r\n };\r\n const result = yield prx.createChunkDocumentAsync(formId, fieldId, itemId, data);\r\n return {\r\n cancel: false,\r\n documentId: result.DocumentId,\r\n };\r\n }),\r\n onAppendContentAsync: (item, buffer) => __awaiter(this, void 0, void 0, function* () {\r\n const result = yield prx.appendChunkContentAsync(formId, fieldId, item.documentId, buffer);\r\n return {\r\n complete: result.Complete,\r\n documentId: result.DocumentId,\r\n nextChunk: result.NextChunk,\r\n };\r\n }),\r\n onCompletedAync: (item) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n (_a = __classPrivateFieldGet(this, _CFileManager_onCompletedCallback, \"f\")) === null || _a === void 0 ? void 0 : _a.call(this, __classPrivateFieldGet(this, _CFileManager_files, \"f\"));\r\n }),\r\n onRetryAppendContent: () => {\r\n return {\r\n cancel: false,\r\n nextChunk: 0\r\n };\r\n },\r\n onError: (item, message) => {\r\n console.log(`🥵 ${item.name}: ${message}`);\r\n },\r\n onShowMessage: (item, message, title) => {\r\n host.showMessage(message, title);\r\n },\r\n onItemCanceled: (item) => {\r\n console.log('❌ ' + item.name);\r\n },\r\n onItemCreated: (item) => {\r\n host.showSuccessToast({\r\n title: '✅ Archivo creado',\r\n description: `Archivo ${item.name} correctamente.`\r\n });\r\n }\r\n }), \"f\");\r\n });\r\n __classPrivateFieldSet(this, _CFileManager_args, args, \"f\");\r\n __classPrivateFieldGet(this, _CFileManager_initializeComponent, \"f\").call(this);\r\n }\r\n get fileManager() {\r\n return __classPrivateFieldGet(this, _CFileManager_fileManager, \"f\");\r\n }\r\n get title() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CFileManager_args, \"f\").schema.title) !== null && _a !== void 0 ? _a : '';\r\n }\r\n get allowedExtensions() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CFileManager_args, \"f\").schema.allowedExtensions) !== null && _a !== void 0 ? _a : '';\r\n }\r\n set onCompletedCallback(callback) {\r\n __classPrivateFieldSet(this, _CFileManager_onCompletedCallback, callback, \"f\");\r\n }\r\n startUploadAsync() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield __classPrivateFieldGet(this, _CFileManager_fileManager, \"f\").saveChangesAsync();\r\n });\r\n }\r\n}\r\n_CFileManager_files = new WeakMap(), _CFileManager_fileManager = new WeakMap(), _CFileManager_onCompletedCallback = new WeakMap(), _CFileManager_args = new WeakMap(), _CFileManager_initializeComponent = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CGanttDataSource_args, _CGanttDataSource_start, _CGanttDataSource_end;\r\nimport DateOnly from \"@ioip/core/lib/datetime/DateOnly\";\r\nexport class CGanttDataSource {\r\n constructor(props) {\r\n _CGanttDataSource_args.set(this, void 0);\r\n _CGanttDataSource_start.set(this, void 0);\r\n _CGanttDataSource_end.set(this, void 0);\r\n __classPrivateFieldSet(this, _CGanttDataSource_args, props, \"f\");\r\n __classPrivateFieldSet(this, _CGanttDataSource_start, new DateOnly(__classPrivateFieldGet(this, _CGanttDataSource_args, \"f\").schema.projectStartDate), \"f\");\r\n __classPrivateFieldSet(this, _CGanttDataSource_end, new DateOnly(__classPrivateFieldGet(this, _CGanttDataSource_args, \"f\").schema.projectEndDate), \"f\");\r\n }\r\n get resources() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CGanttDataSource_args, \"f\").schema.resources) !== null && _a !== void 0 ? _a : [];\r\n }\r\n get markers() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CGanttDataSource_args, \"f\").schema.markers) !== null && _a !== void 0 ? _a : [];\r\n }\r\n get holidays() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CGanttDataSource_args, \"f\").schema.holidays) !== null && _a !== void 0 ? _a : [];\r\n }\r\n get projectStartDate() {\r\n return __classPrivateFieldGet(this, _CGanttDataSource_start, \"f\");\r\n }\r\n get projectEndDate() {\r\n return __classPrivateFieldGet(this, _CGanttDataSource_end, \"f\");\r\n }\r\n get items() {\r\n return __classPrivateFieldGet(this, _CGanttDataSource_args, \"f\").schema.items;\r\n }\r\n}\r\n_CGanttDataSource_args = new WeakMap(), _CGanttDataSource_start = new WeakMap(), _CGanttDataSource_end = new WeakMap();\r\n","export var GanttDiagramGridLineType;\r\n(function (GanttDiagramGridLineType) {\r\n GanttDiagramGridLineType[GanttDiagramGridLineType[\"none\"] = 0] = \"none\";\r\n GanttDiagramGridLineType[GanttDiagramGridLineType[\"vertical\"] = 1] = \"vertical\";\r\n GanttDiagramGridLineType[GanttDiagramGridLineType[\"horizontal\"] = 2] = \"horizontal\";\r\n GanttDiagramGridLineType[GanttDiagramGridLineType[\"both\"] = 3] = \"both\";\r\n})(GanttDiagramGridLineType || (GanttDiagramGridLineType = {}));\r\nexport const GanttGridLineTypeOptions = [\r\n { value: GanttDiagramGridLineType.none, label: \"None\" },\r\n { value: GanttDiagramGridLineType.vertical, label: \"Vertical\" },\r\n { value: GanttDiagramGridLineType.horizontal, label: \"Horizontal\" },\r\n { value: GanttDiagramGridLineType.both, label: \"Both\" }\r\n];\r\nexport const gridLineTypeToString = (type) => {\r\n switch (type) {\r\n case GanttDiagramGridLineType.none: return \"None\";\r\n case GanttDiagramGridLineType.vertical: return \"Vertical\";\r\n case GanttDiagramGridLineType.horizontal: return \"Horizontal\";\r\n case GanttDiagramGridLineType.both: return \"Both\";\r\n default: return \"None\";\r\n }\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CGanttDiagram_args;\r\nimport CControl from \"../../Control/CControl\";\r\nimport { CGanttDataSource } from \"./CGanttDataSource\";\r\nimport { GanttDiagramGridLineType } from \"./GanttDiagramGridLineType\";\r\nexport default class CGanttDiagram extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CGanttDiagram_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CGanttDiagram_args, args, \"f\");\r\n }\r\n get previewImageSrc() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CGanttDiagram_args, \"f\").schema.gridLineType) !== null && _a !== void 0 ? _a : GanttDiagramGridLineType.none;\r\n }\r\n get allowFiltering() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CGanttDiagram_args, \"f\").schema.allowFiltering) !== null && _a !== void 0 ? _a : true;\r\n }\r\n get allowResizing() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CGanttDiagram_args, \"f\").schema.allowResizing) !== null && _a !== void 0 ? _a : true;\r\n }\r\n get allowSorting() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CGanttDiagram_args, \"f\").schema.allowSorting) !== null && _a !== void 0 ? _a : true;\r\n }\r\n get showColumnMenu() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CGanttDiagram_args, \"f\").schema.showColumnMenu) !== null && _a !== void 0 ? _a : true;\r\n }\r\n get CGanttDataSource() {\r\n return new CGanttDataSource({\r\n diagram: this,\r\n schema: null\r\n });\r\n }\r\n set value(value) {\r\n if (value instanceof CGanttDataSource) {\r\n super.value = value;\r\n }\r\n else {\r\n const dataSource = new CGanttDataSource({\r\n diagram: this,\r\n schema: value\r\n });\r\n super.value = dataSource;\r\n }\r\n }\r\n get value() {\r\n return super.value;\r\n }\r\n}\r\n_CGanttDiagram_args = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CImage_args;\r\nimport CControl from \"../Control/CControl\";\r\nexport default class CImage extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CImage_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CImage_args, args, \"f\");\r\n }\r\n get height() {\r\n return __classPrivateFieldGet(this, _CImage_args, \"f\").schema.height;\r\n }\r\n get width() {\r\n return __classPrivateFieldGet(this, _CImage_args, \"f\").schema.width;\r\n }\r\n get url() {\r\n return __classPrivateFieldGet(this, _CImage_args, \"f\").schema.url;\r\n }\r\n}\r\n_CImage_args = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CLabel_args;\r\nimport { XFontWeight } from \"@ioip/core/lib\";\r\nimport CControl from \"../Control/CControl\";\r\nexport default class CLabel extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CLabel_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CLabel_args, args, \"f\");\r\n }\r\n get label() {\r\n return __classPrivateFieldGet(this, _CLabel_args, \"f\").schema.label;\r\n }\r\n get fontSize() {\r\n return __classPrivateFieldGet(this, _CLabel_args, \"f\").schema.fontSize;\r\n }\r\n get fontWeight() {\r\n return __classPrivateFieldGet(this, _CLabel_args, \"f\").schema.fontWeight || XFontWeight.regular;\r\n }\r\n get color() {\r\n return __classPrivateFieldGet(this, _CLabel_args, \"f\").schema.color;\r\n }\r\n get height() {\r\n return __classPrivateFieldGet(this, _CLabel_args, \"f\").schema.height;\r\n }\r\n get overflow() {\r\n return __classPrivateFieldGet(this, _CLabel_args, \"f\").schema.overflow;\r\n }\r\n get textAlign() {\r\n return __classPrivateFieldGet(this, _CLabel_args, \"f\").schema.textAlign;\r\n }\r\n}\r\n_CLabel_args = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CRow_args, _CRow_children;\r\nimport { ReadonlyCollection } from \"@ioip/core/lib\";\r\nimport CField from \"../types/CField\";\r\nclass CRow extends CField {\r\n constructor(args) {\r\n super(args.schema);\r\n _CRow_args.set(this, void 0);\r\n _CRow_children.set(this, null);\r\n __classPrivateFieldSet(this, _CRow_args, args, \"f\");\r\n }\r\n get order() {\r\n return __classPrivateFieldGet(this, _CRow_args, \"f\").schema.order;\r\n }\r\n get children() {\r\n if (__classPrivateFieldGet(this, _CRow_children, \"f\") == null) {\r\n const id = this.id;\r\n const children = __classPrivateFieldGet(this, _CRow_args, \"f\").form.fields.where(x => x.parentId == id).cast().toArray();\r\n __classPrivateFieldSet(this, _CRow_children, new ReadonlyCollection(children), \"f\");\r\n }\r\n return __classPrivateFieldGet(this, _CRow_children, \"f\");\r\n }\r\n get visibleChildren() {\r\n if (!__classPrivateFieldGet(this, _CRow_args, \"f\").form.isRuntime)\r\n return this.children;\r\n const children = this.children.where(x => x.visible);\r\n return children;\r\n }\r\n}\r\n_CRow_args = new WeakMap(), _CRow_children = new WeakMap();\r\nexport default CRow;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CTextField_args;\r\nimport { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport CControl from \"../Control/CControl\";\r\nclass CTextField extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CTextField_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CTextField_args, args, \"f\");\r\n }\r\n get label() {\r\n return __classPrivateFieldGet(this, _CTextField_args, \"f\").schema.label;\r\n }\r\n get maxLength() {\r\n return __classPrivateFieldGet(this, _CTextField_args, \"f\").schema.maxLength || 0;\r\n }\r\n get minLength() {\r\n return __classPrivateFieldGet(this, _CTextField_args, \"f\").schema.minLength || 0;\r\n }\r\n get placeholder() {\r\n return __classPrivateFieldGet(this, _CTextField_args, \"f\").schema.placeholder;\r\n }\r\n get multiline() {\r\n return __classPrivateFieldGet(this, _CTextField_args, \"f\").schema.multiline;\r\n }\r\n validate() {\r\n this.errorMessage = null;\r\n const hasValue = !isNullOrEmpty(this.value);\r\n if (this.required) {\r\n if (!hasValue) {\r\n this.errorMessage = 'Campo requerido';\r\n return false;\r\n }\r\n }\r\n if (this.minLength > 0 && hasValue) {\r\n if (this.value.length < this.minLength) {\r\n this.errorMessage = `El valor debe tener al menos ${this.minLength} caracteres`;\r\n return false;\r\n }\r\n }\r\n if (this.maxLength > 0 && hasValue) {\r\n if (this.value.length > this.maxLength) {\r\n this.errorMessage = `El valor debe tener como máximo ${this.maxLength} caracteres`;\r\n return false;\r\n }\r\n }\r\n return super.validate();\r\n }\r\n}\r\n_CTextField_args = new WeakMap();\r\nexport default CTextField;\r\n","import CLabel from \"../Label/CLabel\";\r\nclass CSubtitle extends CLabel {\r\n constructor(args) {\r\n super(args);\r\n }\r\n}\r\nexport default CSubtitle;\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CTimePicker_args, _CTimePicker_minValue, _CTimePicker_maxValue;\r\nimport { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport TimeOnly from \"@ioip/core/lib/datetime/TimeOnly\";\r\nimport { DateTime } from \"@ioip/core/lib/types/DateTime\";\r\nimport CControl from \"../Control/CControl\";\r\nclass CTimePicker extends CControl {\r\n constructor(args) {\r\n super(args);\r\n _CTimePicker_args.set(this, void 0);\r\n _CTimePicker_minValue.set(this, void 0);\r\n _CTimePicker_maxValue.set(this, void 0);\r\n __classPrivateFieldSet(this, _CTimePicker_args, args, \"f\");\r\n }\r\n get label() {\r\n return __classPrivateFieldGet(this, _CTimePicker_args, \"f\").schema.label;\r\n }\r\n get placeholder() {\r\n return __classPrivateFieldGet(this, _CTimePicker_args, \"f\").schema.placeholder;\r\n }\r\n get minValue() {\r\n if (isNullOrEmpty(__classPrivateFieldGet(this, _CTimePicker_args, \"f\").schema.minValue))\r\n return null;\r\n if (__classPrivateFieldGet(this, _CTimePicker_minValue, \"f\") == null)\r\n __classPrivateFieldSet(this, _CTimePicker_minValue, new DateTime(__classPrivateFieldGet(this, _CTimePicker_args, \"f\").schema.minValue), \"f\");\r\n return __classPrivateFieldGet(this, _CTimePicker_minValue, \"f\");\r\n }\r\n get maxValue() {\r\n if (isNullOrEmpty(__classPrivateFieldGet(this, _CTimePicker_args, \"f\").schema.maxValue))\r\n return null;\r\n if (__classPrivateFieldGet(this, _CTimePicker_maxValue, \"f\") == null)\r\n __classPrivateFieldSet(this, _CTimePicker_maxValue, new DateTime(__classPrivateFieldGet(this, _CTimePicker_args, \"f\").schema.maxValue), \"f\");\r\n return __classPrivateFieldGet(this, _CTimePicker_maxValue, \"f\");\r\n }\r\n get value() {\r\n return super.value;\r\n }\r\n set value(value) {\r\n if (value instanceof TimeOnly)\r\n super.value = value;\r\n else\r\n super.value = new TimeOnly(value);\r\n }\r\n}\r\n_CTimePicker_args = new WeakMap(), _CTimePicker_minValue = new WeakMap(), _CTimePicker_maxValue = new WeakMap();\r\nexport default CTimePicker;\r\n","import { List } from \"linq.ts\";\r\nexport var FormLayout;\r\n(function (FormLayout) {\r\n FormLayout[FormLayout[\"normal\"] = 0] = \"normal\";\r\n FormLayout[FormLayout[\"page\"] = 1] = \"page\";\r\n FormLayout[FormLayout[\"dataTablePage\"] = 2] = \"dataTablePage\";\r\n})(FormLayout || (FormLayout = {}));\r\nexport const FormLayoutsOptions = new List([\r\n { key: FormLayout.normal, text: FormLayout[FormLayout.normal] },\r\n { key: FormLayout.page, text: FormLayout[FormLayout.page] },\r\n { key: FormLayout.dataTablePage, text: FormLayout[FormLayout.dataTablePage] }\r\n]).OrderBy(o => o.text).ToArray();\r\n","import CLabel from \"../Label/CLabel\";\r\nexport default class CTitle extends CLabel {\r\n constructor(args) {\r\n super(args);\r\n }\r\n}\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CUserSelector_args;\r\nimport { User } from \"@ioip/archivox/lib\";\r\nimport CComboBox from \"../ComboBox/CComboBox\";\r\nclass CUserSelector extends CComboBox {\r\n constructor(args) {\r\n super(args);\r\n _CUserSelector_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CUserSelector_args, args, \"f\");\r\n }\r\n get showOnlyActiveItems() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CUserSelector_args, \"f\").schema.showOnlyActiveItems) !== null && _a !== void 0 ? _a : false;\r\n }\r\n set value(value) {\r\n if (value instanceof User)\r\n super.value = value.userId;\r\n else\r\n super.value = value;\r\n }\r\n get value() {\r\n var _a;\r\n return (_a = super.value) !== null && _a !== void 0 ? _a : 0;\r\n }\r\n}\r\n_CUserSelector_args = new WeakMap();\r\nexport default CUserSelector;\r\n","import * as React from 'react';\nimport type { IStyle, ITheme } from '../../Styling';\nimport type { IBaseProps, IRefObject, IStyleFunctionOrObject } from '../../Utilities';\n\n/**\n * {@docCategory DocumentCard}\n */\nexport interface IDocumentCard {\n /**\n * Sets focus to the DocumentCard.\n */\n focus: () => void;\n}\n\n/**\n * {@docCategory DocumentCard}\n */\nexport interface IDocumentCardProps extends IBaseProps, React.HTMLAttributes {\n /**\n * Optional callback to access the IDocumentCard interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject;\n\n /**\n * The type of DocumentCard to display.\n * @defaultvalue DocumentCardType.normal\n */\n type?: DocumentCardType;\n\n /**\n * Function to call when the card is clicked or keyboard Enter/Space is pushed.\n */\n onClick?: (ev?: React.SyntheticEvent) => void;\n\n /**\n * A URL to navigate to when the card is clicked. If a function has also been provided,\n * it will be used instead of the URL.\n */\n onClickHref?: string;\n\n /**\n * A target browser context for opening the link. If not specified, will open in the same tab/window.\n */\n onClickTarget?: string;\n\n /**\n * Aria role assigned to the documentCard (Eg. button, link).\n * Use this to override the default assignment.\n * @defaultvalue When `onClick` is provided, default role will be 'button'.\n * When `onClickHref` is provided, default role will be 'link'.\n */\n role?: string;\n\n /**\n * Hex color value of the line below the card, which should correspond to the document type.\n * This should only be supplied when using the 'compact' card layout.\n *\n * @deprecated To be removed at \\>= v5.0.0.\n */\n accentColor?: string;\n\n /**\n * Child components to render within the card.\n */\n children?: React.ReactNode;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: IStyleFunctionOrObject;\n\n /**\n * Theme provided by HOC.\n */\n theme?: ITheme;\n\n /**\n * Optional override class name\n */\n className?: string;\n}\n\n/**\n * {@docCategory DocumentCard}\n */\nexport enum DocumentCardType {\n /**\n * Standard DocumentCard.\n */\n normal = 0,\n /**\n * Compact layout. Displays the preview beside the details, rather than above.\n */\n compact = 1,\n}\n\n/**\n * {@docCategory DocumentCard}\n */\nexport interface IDocumentCardStyleProps {\n /**\n * Accept theme prop.\n */\n theme: ITheme;\n\n /**\n * Optional override class name\n */\n className?: string;\n\n /**\n * True when the card has a click action.\n */\n actionable?: boolean;\n\n /**\n * Compact variant of the card.\n */\n compact?: boolean;\n}\n\n/**\n * {@docCategory DocumentCard}\n */\nexport interface IDocumentCardStyles {\n root: IStyle;\n}\n\n/**\n * {@docCategory DocumentCard}\n */\nexport interface IDocumentCardContext {\n role?: string;\n tabIndex?: number;\n}\n","import { TextField } from '@fluentui/react';\r\nimport { XTextField } from '@ioip/core/lib';\r\nimport React from 'react';\r\nexport const XCalculatedField = (props) => {\r\n const field = props.field;\r\n const isRuntime = field.isRuntime;\r\n const value = isRuntime ? field.value : '';\r\n const label = field.label;\r\n if (!isRuntime)\r\n return React.createElement(TextField, { readOnly: true, label: label, value: label });\r\n return React.createElement(XTextField, { value: String(value), readonly: true, label: label });\r\n};\r\n","import * as React from 'react';\nimport {\n classNamesFunction,\n KeyCodes,\n getNativeProps,\n divProperties,\n warnDeprecations,\n initializeComponentRef,\n} from '../../Utilities';\nimport { DocumentCardType } from './DocumentCard.types';\nimport type { IProcessedStyleSet } from '../../Styling';\nimport type {\n IDocumentCard,\n IDocumentCardContext,\n IDocumentCardProps,\n IDocumentCardStyleProps,\n IDocumentCardStyles,\n} from './DocumentCard.types';\n\nconst getClassNames = classNamesFunction();\n\nconst COMPONENT_NAME = 'DocumentCard';\n\nexport const DocumentCardContext = React.createContext({});\n\n/**\n * {@docCategory DocumentCard}\n */\nexport class DocumentCardBase extends React.Component implements IDocumentCard {\n public static defaultProps: IDocumentCardProps = {\n type: DocumentCardType.normal,\n };\n\n private _rootElement = React.createRef();\n private _classNames: IProcessedStyleSet;\n\n constructor(props: IDocumentCardProps) {\n super(props);\n\n initializeComponentRef(this);\n warnDeprecations(COMPONENT_NAME, props, {\n accentColor: undefined,\n });\n }\n\n public render(): JSX.Element {\n // eslint-disable-next-line deprecation/deprecation\n const { onClick, onClickHref, children, type, accentColor, styles, theme, className } = this.props;\n const nativeProps = getNativeProps>(this.props, divProperties, [\n 'className',\n 'onClick',\n 'type',\n 'role',\n ]);\n const actionable = onClick || onClickHref ? true : false;\n\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n actionable,\n compact: type === DocumentCardType.compact ? true : false,\n });\n\n // Override the border color if an accent color was provided (compact card only)\n let style;\n if (type === DocumentCardType.compact && accentColor) {\n style = {\n borderBottomColor: accentColor,\n };\n }\n\n // if this element is actionable it should have an aria role\n const role = this.props.role || (actionable ? (onClick ? 'button' : 'link') : undefined);\n const tabIndex = actionable ? 0 : undefined;\n const documentCardContextValue = { role, tabIndex };\n\n return (\n \n {children}\n \n );\n }\n\n public focus(): void {\n if (this._rootElement.current) {\n this._rootElement.current.focus();\n }\n }\n\n private _onClick = (ev: React.MouseEvent): void => {\n this._onAction(ev);\n };\n\n private _onKeyDown = (ev: React.KeyboardEvent): void => {\n // eslint-disable-next-line deprecation/deprecation\n if (ev.which === KeyCodes.enter || ev.which === KeyCodes.space) {\n this._onAction(ev);\n }\n };\n\n private _onAction = (ev: React.SyntheticEvent): void => {\n const { onClick, onClickHref, onClickTarget } = this.props;\n\n if (onClick) {\n onClick(ev);\n } else if (!onClick && onClickHref) {\n // If no onClick Function was provided and we do have an onClickHref, redirect to the onClickHref\n if (onClickTarget) {\n window.open(onClickHref, onClickTarget, 'noreferrer noopener nofollow');\n } else {\n window.location.href = onClickHref;\n }\n\n ev.preventDefault();\n ev.stopPropagation();\n }\n };\n}\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _ReactComponent_args;\r\nexport default class ReactComponent {\r\n constructor(props) {\r\n _ReactComponent_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _ReactComponent_args, props, \"f\");\r\n }\r\n get code() {\r\n return __classPrivateFieldGet(this, _ReactComponent_args, \"f\").object.code;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _ReactComponent_args, \"f\").object.name;\r\n }\r\n get description() {\r\n return __classPrivateFieldGet(this, _ReactComponent_args, \"f\").object.description;\r\n }\r\n get objectId() {\r\n return __classPrivateFieldGet(this, _ReactComponent_args, \"f\").object.objectId;\r\n }\r\n get comboBoxOption() {\r\n return {\r\n key: this.objectId,\r\n text: `${this.name} [${this.objectId}]`\r\n };\r\n }\r\n}\r\n_ReactComponent_args = new WeakMap();\r\n","import { getFocusStyle, getGlobalClassNames, HighContrastSelector } from '../../Styling';\nimport { IsFocusVisibleClassName } from '../../Utilities';\nimport type { IDocumentCardPreviewStyleProps, IDocumentCardPreviewStyles } from './DocumentCardPreview.types';\n\nexport const DocumentCardPreviewGlobalClassNames = {\n root: 'ms-DocumentCardPreview',\n icon: 'ms-DocumentCardPreview-icon',\n iconContainer: 'ms-DocumentCardPreview-iconContainer',\n};\n\nexport const getStyles = (props: IDocumentCardPreviewStyleProps): IDocumentCardPreviewStyles => {\n const { theme, className, isFileList } = props;\n const { palette, fonts } = theme;\n\n const classNames = getGlobalClassNames(DocumentCardPreviewGlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n fonts.small,\n {\n backgroundColor: isFileList ? palette.white : palette.neutralLighterAlt,\n borderBottom: `1px solid ${palette.neutralLight}`,\n overflow: `hidden`,\n position: 'relative',\n },\n className,\n ],\n previewIcon: [\n classNames.iconContainer,\n {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n },\n ],\n icon: [\n classNames.icon,\n {\n left: '10px',\n bottom: '10px',\n position: 'absolute',\n },\n ],\n fileList: {\n padding: '16px 16px 0 16px',\n listStyleType: 'none',\n margin: 0,\n selectors: {\n li: {\n height: '16px',\n lineHeight: '16px',\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'center',\n marginBottom: '8px',\n overflow: 'hidden',\n },\n },\n },\n fileListIcon: {\n display: 'inline-block',\n flexShrink: 0,\n marginRight: '8px',\n },\n fileListLink: [\n getFocusStyle(theme, {\n highContrastStyle: {\n border: '1px solid WindowText',\n outline: 'none',\n },\n }),\n {\n boxSizing: 'border-box',\n color: palette.neutralDark,\n flexGrow: 1,\n overflow: 'hidden',\n display: 'inline-block',\n textDecoration: 'none',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n selectors: {\n ':hover': {\n color: palette.themePrimary,\n },\n [`.${IsFocusVisibleClassName} &:focus`]: {\n selectors: {\n [HighContrastSelector]: {\n outline: 'none',\n },\n },\n },\n },\n },\n ],\n fileListOverflowText: {\n padding: '0px 16px 8px 16px',\n display: 'block',\n },\n };\n};\n","import { getGlobalClassNames, FontWeights } from '../../Styling';\nimport type { IDocumentCardActivityStyleProps, IDocumentCardActivityStyles } from './DocumentCardActivity.types';\n\nconst VERTICAL_PADDING = 8;\nconst HORIZONTAL_PADDING = 16;\nconst IMAGE_SIZE = 32;\nconst PERSONA_TEXT_GUTTER = 8;\n\nexport const DocumentCardActivityGlobalClassNames = {\n root: 'ms-DocumentCardActivity',\n multiplePeople: 'ms-DocumentCardActivity--multiplePeople',\n details: 'ms-DocumentCardActivity-details',\n name: 'ms-DocumentCardActivity-name',\n activity: 'ms-DocumentCardActivity-activity',\n avatars: 'ms-DocumentCardActivity-avatars',\n avatar: 'ms-DocumentCardActivity-avatar',\n};\n\nexport const getStyles = (props: IDocumentCardActivityStyleProps): IDocumentCardActivityStyles => {\n const { theme, className, multiplePeople } = props;\n const { palette, fonts } = theme;\n\n const classNames = getGlobalClassNames(DocumentCardActivityGlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n multiplePeople && classNames.multiplePeople,\n {\n padding: `${VERTICAL_PADDING}px ${HORIZONTAL_PADDING}px`,\n position: 'relative',\n },\n className,\n ],\n avatars: [\n classNames.avatars,\n {\n marginLeft: '-2px', // Avatars sit outside of the usual padding for visual balance\n height: '32px',\n },\n ],\n avatar: [\n classNames.avatar,\n {\n display: 'inline-block',\n verticalAlign: 'top',\n position: 'relative',\n textAlign: 'center',\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n\n selectors: {\n '&:after': {\n content: '\" \"',\n position: 'absolute',\n left: '-1px',\n top: '-1px',\n right: '-1px',\n bottom: '-1px',\n border: `2px solid ${palette.white}`, // Match the background of the card\n borderRadius: '50%',\n },\n ':nth-of-type(2)': multiplePeople && {\n marginLeft: '-16px',\n },\n },\n },\n ],\n details: [\n classNames.details,\n {\n left: multiplePeople\n ? `${HORIZONTAL_PADDING + IMAGE_SIZE * 1.5 + PERSONA_TEXT_GUTTER}px`\n : `${HORIZONTAL_PADDING + IMAGE_SIZE + PERSONA_TEXT_GUTTER}px`,\n height: IMAGE_SIZE,\n position: 'absolute',\n top: VERTICAL_PADDING,\n width: `calc(100% - ${HORIZONTAL_PADDING + IMAGE_SIZE + PERSONA_TEXT_GUTTER + HORIZONTAL_PADDING}px)`,\n },\n ],\n name: [\n classNames.name,\n {\n display: 'block',\n fontSize: fonts.small.fontSize,\n lineHeight: '15px',\n height: '15px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n color: palette.neutralPrimary,\n fontWeight: FontWeights.semibold,\n },\n ],\n activity: [\n classNames.activity,\n {\n display: 'block',\n fontSize: fonts.small.fontSize,\n lineHeight: '15px',\n height: '15px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n color: palette.neutralSecondary,\n },\n ],\n };\n};\n","import { getGlobalClassNames, getInputFocusStyle } from '../../Styling';\nimport { IsFocusVisibleClassName } from '../../Utilities';\nimport type { IDocumentCardTitleStyleProps, IDocumentCardTitleStyles } from './DocumentCardTitle.types';\n\nexport const DocumentCardTitleGlobalClassNames = {\n root: 'ms-DocumentCardTitle',\n};\n\nexport const getStyles = (props: IDocumentCardTitleStyleProps): IDocumentCardTitleStyles => {\n const { theme, className, showAsSecondaryTitle } = props;\n const { palette, fonts, effects } = theme;\n\n const classNames = getGlobalClassNames(DocumentCardTitleGlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n showAsSecondaryTitle ? fonts.medium : fonts.large,\n {\n padding: '8px 16px',\n display: 'block',\n overflow: 'hidden',\n position: 'relative',\n wordWrap: 'break-word',\n height: showAsSecondaryTitle ? '45px' : '38px',\n lineHeight: showAsSecondaryTitle ? '18px' : '21px',\n color: showAsSecondaryTitle ? palette.neutralSecondary : palette.neutralPrimary,\n selectors: {\n ':focus': {\n outline: '0px solid',\n },\n [`.${IsFocusVisibleClassName} &:focus`]: getInputFocusStyle(palette.neutralSecondary, effects.roundedCorner2),\n },\n },\n className,\n ],\n };\n};\n","import { getGlobalClassNames, FontWeights } from '../../Styling';\nimport type { IDocumentCardLocationStyleProps, IDocumentCardLocationStyles } from './DocumentCardLocation.types';\n\nexport const DocumentCardLocationGlobalClassNames = {\n root: 'ms-DocumentCardLocation',\n};\n\nexport const getStyles = (props: IDocumentCardLocationStyleProps): IDocumentCardLocationStyles => {\n const { theme, className } = props;\n const { palette, fonts } = theme;\n\n const classNames = getGlobalClassNames(DocumentCardLocationGlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n fonts.small,\n {\n color: palette.themePrimary,\n display: 'block',\n fontWeight: FontWeights.semibold,\n overflow: 'hidden',\n padding: '8px 16px',\n position: 'relative',\n textDecoration: 'none',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n\n selectors: {\n ':hover': {\n color: palette.themePrimary,\n cursor: 'pointer',\n },\n },\n },\n className,\n ],\n };\n};\n","import { getGlobalClassNames, getInputFocusStyle } from '../../Styling';\nimport { IsFocusVisibleClassName } from '../../Utilities';\nimport { DocumentCardPreviewGlobalClassNames as previewClassNames } from './DocumentCardPreview.styles';\nimport { DocumentCardActivityGlobalClassNames as activityClassNames } from './DocumentCardActivity.styles';\nimport { DocumentCardTitleGlobalClassNames as titleClassNames } from './DocumentCardTitle.styles';\nimport { DocumentCardLocationGlobalClassNames as locationClassNames } from './DocumentCardLocation.styles';\nimport type { IDocumentCardStyleProps, IDocumentCardStyles } from './DocumentCard.types';\n\nconst GlobalClassNames = {\n root: 'ms-DocumentCard',\n rootActionable: 'ms-DocumentCard--actionable',\n rootCompact: 'ms-DocumentCard--compact',\n};\n\nexport const getStyles = (props: IDocumentCardStyleProps): IDocumentCardStyles => {\n const { className, theme, actionable, compact } = props;\n const { palette, fonts, effects } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n {\n WebkitFontSmoothing: 'antialiased',\n backgroundColor: palette.white,\n border: `1px solid ${palette.neutralLight}`,\n maxWidth: '320px',\n minWidth: '206px',\n userSelect: 'none',\n position: 'relative',\n selectors: {\n ':focus': {\n outline: '0px solid',\n },\n [`.${IsFocusVisibleClassName} &:focus`]: getInputFocusStyle(palette.neutralSecondary, effects.roundedCorner2),\n [`.${locationClassNames.root} + .${titleClassNames.root}`]: {\n paddingTop: '4px',\n },\n },\n },\n actionable && [\n classNames.rootActionable,\n {\n selectors: {\n ':hover': {\n cursor: 'pointer',\n borderColor: palette.neutralTertiaryAlt,\n },\n ':hover:after': {\n content: '\" \"',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n border: `1px solid ${palette.neutralTertiaryAlt}`,\n pointerEvents: 'none',\n },\n },\n },\n ],\n compact && [\n classNames.rootCompact,\n {\n display: 'flex',\n maxWidth: '480px',\n height: '108px',\n selectors: {\n [`.${previewClassNames.root}`]: {\n borderRight: `1px solid ${palette.neutralLight}`,\n borderBottom: 0, // Remove the usual border from the preview\n maxHeight: '106px',\n maxWidth: '144px',\n },\n [`.${previewClassNames.icon}`]: {\n maxHeight: '32px',\n maxWidth: '32px',\n },\n [`.${activityClassNames.root}`]: {\n paddingBottom: '12px',\n },\n [`.${titleClassNames.root}`]: {\n paddingBottom: '12px 16px 8px 16px',\n fontSize: fonts.mediumPlus.fontSize,\n lineHeight: '16px',\n },\n },\n },\n ],\n className,\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { DocumentCardBase } from './DocumentCard.base';\nimport { getStyles } from './DocumentCard.styles';\nimport type { IDocumentCardProps, IDocumentCardStyleProps, IDocumentCardStyles } from './DocumentCard.types';\n\nexport const DocumentCard: React.FunctionComponent = styled<\n IDocumentCardProps,\n IDocumentCardStyleProps,\n IDocumentCardStyles\n>(DocumentCardBase, getStyles, undefined, { scope: 'DocumentCard' });\n","import * as React from 'react';\nimport { Icon } from '../../Icon';\nimport { Image } from '../../Image';\nimport { Link } from '../../Link';\nimport { classNamesFunction, css, initializeComponentRef } from '../../Utilities';\nimport type { IProcessedStyleSet } from '../../Styling';\nimport type {\n IDocumentCardPreviewImage,\n IDocumentCardPreviewProps,\n IDocumentCardPreviewStyleProps,\n IDocumentCardPreviewStyles,\n} from './DocumentCardPreview.types';\n\nconst DEFAULT_DISPLAY_COUNT = 3;\nconst getClassNames = classNamesFunction();\n\n/**\n * {@docCategory DocumentCard}\n */\nexport class DocumentCardPreviewBase extends React.Component {\n private _classNames: IProcessedStyleSet;\n\n constructor(props: IDocumentCardPreviewProps) {\n super(props);\n\n initializeComponentRef(this);\n }\n\n public render(): JSX.Element {\n const { previewImages, styles, theme, className } = this.props;\n let style: React.CSSProperties | undefined;\n let preview: React.ReactNode;\n const isFileList = previewImages.length > 1;\n\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n isFileList,\n });\n\n if (previewImages.length > 1) {\n // Render a list of files\n preview = this._renderPreviewList(previewImages);\n } else if (previewImages.length === 1) {\n // Render a single preview\n preview = this._renderPreviewImage(previewImages[0]);\n\n // Override the border color if an accent color was provided\n /* eslint-disable deprecation/deprecation */\n if (previewImages[0].accentColor) {\n style = {\n borderBottomColor: previewImages[0].accentColor,\n };\n }\n /* eslint-enable deprecation/deprecation */\n }\n\n return (\n
\n {preview}\n
\n );\n }\n\n private _renderPreviewImage(\n previewImage: IDocumentCardPreviewImage,\n ): React.ReactElement> {\n const { width, height, imageFit, previewIconProps, previewIconContainerClass } = previewImage;\n\n if (previewIconProps) {\n return (\n \n \n \n );\n }\n\n const image = (\n \n );\n\n let icon;\n if (previewImage.iconSrc) {\n icon = \"\";\n }\n\n return (\n
\n {image}\n {icon}\n
\n );\n }\n\n private _renderPreviewList = (\n previewImages: IDocumentCardPreviewImage[],\n ): React.ReactElement> => {\n const { getOverflowDocumentCountText, maxDisplayCount = DEFAULT_DISPLAY_COUNT } = this.props;\n\n // Determine how many documents we won't be showing\n const overflowDocumentCount = previewImages.length - maxDisplayCount;\n\n // Determine the overflow text that will be rendered after the preview list.\n const overflowText = overflowDocumentCount\n ? getOverflowDocumentCountText\n ? getOverflowDocumentCountText(overflowDocumentCount)\n : '+' + overflowDocumentCount\n : null;\n\n // Create list items for the documents to be shown\n const fileListItems = previewImages.slice(0, maxDisplayCount).map((file, fileIndex) => (\n
  • \n \n \n {file.name}\n \n
  • \n ));\n\n return (\n
    \n
      {fileListItems}
    \n {overflowText && {overflowText}}\n
    \n );\n };\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { DocumentCardPreviewBase } from './DocumentCardPreview.base';\nimport { getStyles } from './DocumentCardPreview.styles';\nimport type {\n IDocumentCardPreviewProps,\n IDocumentCardPreviewStyleProps,\n IDocumentCardPreviewStyles,\n} from './DocumentCardPreview.types';\n\nexport const DocumentCardPreview: React.FunctionComponent = styled<\n IDocumentCardPreviewProps,\n IDocumentCardPreviewStyleProps,\n IDocumentCardPreviewStyles\n>(DocumentCardPreviewBase, getStyles, undefined, { scope: 'DocumentCardPreview' });\n","import * as React from 'react';\n\nimport { Async, EventGroup, classNamesFunction } from '../../Utilities';\nimport { initializeComponentRef } from '@fluentui/utilities';\nimport type {\n IDocumentCardTitleProps,\n IDocumentCardTitleStyleProps,\n IDocumentCardTitleStyles,\n} from './DocumentCardTitle.types';\nimport type { IProcessedStyleSet } from '../../Styling';\nimport { DocumentCardContext } from './DocumentCard.base';\n\nconst getClassNames = classNamesFunction();\n\nexport interface IDocumentCardTitleState {\n truncatedTitleFirstPiece?: string;\n truncatedTitleSecondPiece?: string;\n}\n\nconst TRUNCATION_VERTICAL_OVERFLOW_THRESHOLD = 5;\n\n/**\n * {@docCategory DocumentCard}\n */\nexport class DocumentCardTitleBase extends React.Component {\n private _titleElement = React.createRef();\n private _classNames: IProcessedStyleSet;\n private _async: Async;\n private _events: EventGroup;\n private _clientWidth: number | undefined;\n private _timerId: number | undefined;\n\n constructor(props: IDocumentCardTitleProps) {\n super(props);\n\n initializeComponentRef(this);\n this._async = new Async(this);\n this._events = new EventGroup(this);\n this._clientWidth = undefined;\n\n this.state = {\n truncatedTitleFirstPiece: undefined,\n truncatedTitleSecondPiece: undefined,\n };\n }\n\n public componentDidUpdate(prevProps: IDocumentCardTitleProps): void {\n if (this.props.title !== prevProps.title) {\n this.setState({\n truncatedTitleFirstPiece: undefined,\n truncatedTitleSecondPiece: undefined,\n });\n }\n\n if (prevProps.shouldTruncate !== this.props.shouldTruncate) {\n if (this.props.shouldTruncate) {\n this._truncateTitle();\n this._async.requestAnimationFrame(this._shrinkTitle);\n this._events.on(window, 'resize', this._updateTruncation);\n } else {\n this._events.off(window, 'resize', this._updateTruncation);\n }\n } else if (this._needMeasurement) {\n this._async.requestAnimationFrame(() => {\n this._truncateWhenInAnimation();\n this._shrinkTitle();\n });\n }\n }\n\n public componentDidMount(): void {\n if (this.props.shouldTruncate) {\n this._truncateTitle();\n this._events.on(window, 'resize', this._updateTruncation);\n }\n }\n\n public componentWillUnmount(): void {\n this._events.dispose();\n this._async.dispose();\n }\n\n public render(): JSX.Element {\n const { title, shouldTruncate, showAsSecondaryTitle, styles, theme, className } = this.props;\n const { truncatedTitleFirstPiece, truncatedTitleSecondPiece } = this.state;\n\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n showAsSecondaryTitle,\n });\n\n if (shouldTruncate && truncatedTitleFirstPiece && truncatedTitleSecondPiece) {\n return (\n \n {({ role, tabIndex }) => {\n return (\n \n {truncatedTitleFirstPiece}\n …\n {truncatedTitleSecondPiece}\n \n );\n }}\n \n );\n } else {\n return (\n \n {({ role, tabIndex }) => {\n return (\n \n {title}\n \n );\n }}\n \n );\n }\n }\n\n /**\n * In measuring, it will render a same style text with whiteSpace: 'nowrap', to get overflow rate.\n * So that the logic can predict truncated text well.\n */\n private get _needMeasurement(): boolean {\n return !!this.props.shouldTruncate && this._clientWidth === undefined;\n }\n\n // Truncate logic here way can't handle the case that chars with different widths are mixed very well.\n // Let _shrinkTitle take care of that.\n private _truncateTitle = (): void => {\n if (!this._needMeasurement) {\n return;\n }\n\n this._async.requestAnimationFrame(this._truncateWhenInAnimation);\n };\n\n private _truncateWhenInAnimation: () => void = () => {\n const originalTitle = this.props.title;\n const element: HTMLDivElement | null = this._titleElement.current;\n\n if (element) {\n const style: CSSStyleDeclaration = getComputedStyle(element);\n if (style.width && style.lineHeight && style.height) {\n const { clientWidth, scrollWidth } = element;\n\n this._clientWidth = clientWidth;\n\n const lines: number = Math.floor(\n (parseInt(style.height, 10) + TRUNCATION_VERTICAL_OVERFLOW_THRESHOLD) / parseInt(style.lineHeight, 10),\n );\n\n element.style.whiteSpace = '';\n\n // Use overflow to predict truncated length.\n // Take an example.The text is: A text with A very long text that need to be truncated.ppt\n // if container is like\n // |A text with A very| long text that need to be truncated.ppt\n // The scroll width is 58, (take two | out of length)\n // The client width is 18\n // the overflow rate is scrollWidth/clientWidth which should be close to length(overflowText)/length(visualText)\n // And the length of remaining text should be truncated is (original Length)/(58/18) -3 = 15.\n // So that the logic can predict truncated text well.\n // first piece will be `A text `, * second piece will be `ated.ppt`\n // |A text ...ated.ppt|\n const overFlowRate: number = scrollWidth / (parseInt(style.width, 10) * lines);\n\n if (overFlowRate > 1) {\n const truncatedLength: number = originalTitle.length / overFlowRate - 3; /** Saved for separator */\n return this.setState({\n truncatedTitleFirstPiece: originalTitle.slice(0, truncatedLength / 2),\n truncatedTitleSecondPiece: originalTitle.slice(originalTitle.length - truncatedLength / 2),\n });\n }\n }\n }\n };\n\n private _shrinkTitle: () => void = () => {\n const { truncatedTitleFirstPiece, truncatedTitleSecondPiece } = this.state;\n if (truncatedTitleFirstPiece && truncatedTitleSecondPiece) {\n const titleElement = this._titleElement.current;\n\n if (!titleElement) {\n return;\n }\n\n if (\n titleElement.scrollHeight > titleElement.clientHeight + TRUNCATION_VERTICAL_OVERFLOW_THRESHOLD ||\n titleElement.scrollWidth > titleElement.clientWidth\n ) {\n this.setState({\n truncatedTitleFirstPiece: truncatedTitleFirstPiece.slice(0, truncatedTitleFirstPiece.length - 1),\n truncatedTitleSecondPiece: truncatedTitleSecondPiece.slice(1),\n });\n }\n }\n };\n\n private _updateTruncation(): void {\n if (this._timerId) {\n return;\n }\n\n this._timerId = this._async.setTimeout(() => {\n delete this._timerId;\n this._clientWidth = undefined;\n this.setState({\n truncatedTitleFirstPiece: undefined,\n truncatedTitleSecondPiece: undefined,\n });\n }, 250);\n }\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { DocumentCardTitleBase } from './DocumentCardTitle.base';\nimport { getStyles } from './DocumentCardTitle.styles';\nimport type {\n IDocumentCardTitleProps,\n IDocumentCardTitleStyleProps,\n IDocumentCardTitleStyles,\n} from './DocumentCardTitle.types';\n\nexport const DocumentCardTitle: React.FunctionComponent = styled<\n IDocumentCardTitleProps,\n IDocumentCardTitleStyleProps,\n IDocumentCardTitleStyles\n>(DocumentCardTitleBase, getStyles, undefined, { scope: 'DocumentCardTitle' });\n","import { DocumentCard, DocumentCardPreview, DocumentCardTitle } from '@fluentui/react';\r\nimport React from 'react';\r\nexport const CardComponent = (props) => {\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(DocumentCard, { \"aria-label\": \"\", onClick: () => {\r\n }, styles: {\r\n root: {\r\n width: '100%',\r\n minWidth: '100%',\r\n maxWidth: '100%'\r\n }\r\n } },\r\n React.createElement(DocumentCardPreview, { previewImages: [\r\n {\r\n name: 'Revenue stream proposal fiscal year 2016 version02.pptx',\r\n linkProps: {\r\n onClick: () => {\r\n }\r\n },\r\n previewImageSrc: props.field.previewImageSrc,\r\n iconSrc: props.field.iconSrc,\r\n imageFit: props.field.imageFit,\r\n }\r\n ], styles: {\r\n root: {\r\n maxHeight: props.field.height,\r\n minHeight: props.field.height,\r\n height: props.field.height,\r\n }\r\n } }),\r\n React.createElement(DocumentCardTitle, { title: props.field.title, showAsSecondaryTitle: props.field.showAsSecondaryTitle })));\r\n};\r\n","import { Checkbox, DirectionalHint, TooltipHost } from '@fluentui/react';\r\nimport { useForceUpdate } from '@ioip/core/lib/hooks/useForceState';\r\nimport React, { useEffect } from 'react';\r\nexport const UXCheckBox = (props) => {\r\n const forceUpdate = useForceUpdate();\r\n const field = props.field;\r\n const label = field.label;\r\n const disabled = field.disabled;\r\n const readonly = field.readonly;\r\n const checked = field.value || false;\r\n const isRuntime = field.isRuntime;\r\n useEffect(function componentDidMount() {\r\n const onUpdated = () => forceUpdate();\r\n if (isRuntime)\r\n props.field.subscribe(onUpdated);\r\n return () => {\r\n if (isRuntime)\r\n props.field.unsubscribe(onUpdated);\r\n };\r\n }, []);\r\n return React.createElement(TooltipHost, { content: props.field.help, directionalHint: DirectionalHint.rightCenter },\r\n React.createElement(\"div\", { style: { marginTop: 12, userSelect: 'none' } },\r\n React.createElement(Checkbox, { label: label, disabled: disabled || readonly, checked: checked, onChange: (_, checked) => {\r\n if (isRuntime)\r\n field.value = checked;\r\n }, onRenderLabel: isRuntime ? field.onRenderLabel : undefined }),\r\n React.createElement(\"small\", { style: {\r\n animationName: \"css-1, css-14\",\r\n animationDuration: \"0.367s\",\r\n animationTimingFunction: \"cubic-bezier(0.1, 0.9, 0.2, 1)\",\r\n animationFillMode: \"both\",\r\n fontFamily: \"\\\"Segoe UI\\\", \\\"Segoe UI Web (West European)\\\", \\\"Segoe UI\\\", -apple-system, BlinkMacSystemFont, Roboto, \\\"Helvetica Neue\\\", sans-serif\",\r\n WebkitFontSmoothing: \"antialiased\",\r\n fontSize: \"12px\",\r\n fontWeight: \"400\",\r\n color: \"rgb(164, 38, 44)\",\r\n margin: \"0px\",\r\n paddingTop: \"5px\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n } }, field.errorMessage)));\r\n};\r\n","import { City, CitySelector } from '@ioip/archivox/lib';\r\nimport { Guid, XTextField } from '@ioip/core/lib';\r\nimport React, { useEffect, useState } from 'react';\r\nexport const UICitySelector = (props) => {\r\n var _a;\r\n const field = props.field;\r\n const label = field.label;\r\n const disabled = field.readonly || field.disabled;\r\n const required = field.required;\r\n const value = props.field.value || 0;\r\n const isRuntime = field.isRuntime;\r\n const [options, setOptions] = useState([]);\r\n const departmentFilterId = Guid.isNotEmpty(props.field.departmentFilterId) ? Guid.parse(props.field.departmentFilterId) : Guid.empty;\r\n const departmentId = field.isRuntime ? (_a = field.form.getField(departmentFilterId)) === null || _a === void 0 ? void 0 : _a.value : 0;\r\n useEffect(() => {\r\n var _a, _b;\r\n if (isRuntime) {\r\n let options = ((_b = (_a = props.field.datasource.items) === null || _a === void 0 ? void 0 : _a.select((schema) => new City({ schema }))) === null || _b === void 0 ? void 0 : _b.toArray()) || [];\r\n if (Guid.isNotEmpty(departmentFilterId)) {\r\n const departmentField = props.field.form.fields.firstOrDefault(x => x.id === props.field.departmentFilterId);\r\n if (departmentField != null) {\r\n options = options.filter(x => x.departmentId === departmentField.value);\r\n }\r\n else {\r\n console.warn(`Department field ${props.field.departmentFilterId} not found`);\r\n }\r\n }\r\n setOptions(options);\r\n }\r\n }, [departmentId]);\r\n if (!props.field.isRuntime) {\r\n return React.createElement(XTextField, { label: 'City Selector', value: \"City Selector\", onChange: () => { }, readonly: true });\r\n }\r\n return React.createElement(CitySelector, { selectedKey: value, label: label || '', disabled: disabled, options: options, onChanged: value => props.field.value = (value === null || value === void 0 ? void 0 : value.id) || 0, required: required || false, errorMessage: props.field.errorMessage || '' });\r\n};\r\n","import { XComboBox, XTextField } from '@ioip/core/lib';\r\nimport { useForceUpdate } from '@ioip/core/lib/hooks/useForceState';\r\nimport React, { useEffect, useState } from 'react';\r\nexport const ComboBoxComponent = (props) => {\r\n var _a;\r\n const forceUpdate = useForceUpdate();\r\n const [state, setState] = useState({ options: [], isLoading: true });\r\n const field = props.field;\r\n const label = field.label;\r\n const readonly = field.readonly;\r\n const disabled = readonly || field.disabled;\r\n const required = field.required;\r\n const isRuntime = field.isRuntime;\r\n useEffect(() => {\r\n if (field.datasource != null)\r\n setState({ isLoading: false, options: field.asFluentUI() });\r\n else\r\n setState({ isLoading: false, options: [] });\r\n const onUpdated = () => forceUpdate();\r\n if (isRuntime)\r\n props.field.subscribe(onUpdated);\r\n return () => {\r\n if (isRuntime)\r\n props.field.unsubscribe(onUpdated);\r\n };\r\n }, []);\r\n if (state.isLoading)\r\n return React.createElement(XTextField, { readonly: true, label: label || '', value: 'Loading combobox...' });\r\n if (readonly) {\r\n const text = (_a = state.options.find(o => o.key === props.field.value)) === null || _a === void 0 ? void 0 : _a.text;\r\n return React.createElement(XTextField, { label: label || '', required: required || false, disabled: true, readonly: true, value: text, errorMessage: props.field.errorMessage || '' });\r\n }\r\n return React.createElement(XComboBox, { value: props.field.value, label: label || '', disabled: disabled, options: state.options, onChange: value => props.field.value = value, required: required || false, errorMessage: props.field.errorMessage || '' });\r\n};\r\n","import { Country, CountrySelector } from '@ioip/archivox/lib';\r\nimport React from 'react';\r\nexport const CountrySelectorComponent = (props) => {\r\n var _a;\r\n const field = props.field;\r\n const label = field.label;\r\n const disabled = field.readonly || field.disabled;\r\n const required = field.required;\r\n const value = props.field.value || 0;\r\n const options = ((_a = props.field.datasource) === null || _a === void 0 ? void 0 : _a.select(x => new Country({ schema: x }))) || [];\r\n return React.createElement(CountrySelector, { selectedKey: value, label: label || '', disabled: disabled, options: options, onChanged: value => props.field.value = (value === null || value === void 0 ? void 0 : value.id) || 0, required: required || false, errorMessage: props.field.errorMessage || '' });\r\n};\r\n","import { XCurrencyField } from '@ioip/core/lib';\r\nimport React from 'react';\r\nexport const CurrencyFieldComponent = (props) => {\r\n const field = props.field;\r\n const label = field.label;\r\n const placeholder = field.placeholder;\r\n const disabled = field.readonly || field.disabled;\r\n const required = field.required;\r\n const value = field.value;\r\n return React.createElement(XCurrencyField, { label: label || '', placeholder: placeholder || '', onChange: e => field.value = e, required: required, disabled: disabled || false, readonly: disabled, value: value, errorMessage: props.field.errorMessage || '' });\r\n};\r\n","import { DefaultButton, Label, PanelType, PrimaryButton } from '@fluentui/react';\r\nimport { Grid, StandarPanel } from '@ioip/core/lib/components';\r\nimport { useForceUpdate } from '@ioip/core/lib/hooks/useForceState';\r\nimport React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { XForm } from '../Form/XForm';\r\nexport const ChildFormComponent = (props) => {\r\n const { t } = useTranslation();\r\n const forceUpdate = useForceUpdate();\r\n const showAccept = !props.form.readonly && (props.showAcceptButton === undefined || (typeof props.showAcceptButton === 'boolean' && props.showAcceptButton));\r\n const [isSaving, setIsSaving] = useState(false);\r\n props.form.onSaved = () => setIsSaving(false);\r\n props.form.onBeforeSave = () => setIsSaving(true);\r\n props.form.onSavingError = () => setIsSaving(false);\r\n return React.createElement(StandarPanel, { isOpen: true, type: props.panelType || PanelType.medium, headerText: props.panelTitle || '', onAccept: () => {\r\n if (props.form.validate()) {\r\n props.onAccept();\r\n props.onClose();\r\n }\r\n else {\r\n forceUpdate();\r\n }\r\n }, hideAcceptButton: true, onRenderFooter: () => {\r\n var _a;\r\n return React.createElement(React.Fragment, null,\r\n isSaving && React.createElement(Label, null,\r\n t('saving'),\r\n \"...\"),\r\n !isSaving && React.createElement(React.Fragment, null,\r\n showAccept && React.createElement(PrimaryButton, { text: t('accept'), onClick: () => {\r\n if (props.form.validate()) {\r\n props.onAccept();\r\n props.onClose();\r\n }\r\n else {\r\n forceUpdate();\r\n }\r\n }, styles: { root: { marginRight: 8 } } }), (_a = props.buttons) === null || _a === void 0 ? void 0 :\r\n _a.map((button, index) => React.createElement(PrimaryButton, { key: index, text: button.text, onClick: () => {\r\n var _a;\r\n const allowContinue = button.validateForm ? props.form.validate() : true;\r\n if (allowContinue)\r\n (_a = button === null || button === void 0 ? void 0 : button.invokeOnClick) === null || _a === void 0 ? void 0 : _a.call(button);\r\n else\r\n forceUpdate();\r\n }, styles: { root: { marginRight: 8 } } })),\r\n !isSaving && React.createElement(DefaultButton, { text: t('cancel'), onClick: () => props.onClose() })));\r\n }, onClose: () => props.onClose() },\r\n React.createElement(React.Fragment, null,\r\n props.form == null && React.createElement(\"div\", null, \"Cargando...\"),\r\n React.createElement(Grid, { style: { userSelect: 'none' } },\r\n React.createElement(XForm, { form: props.form, showTitle: false, showCommandBar: false, activityInstance: null }))));\r\n};\r\n","import { Guid } from \"@ioip/core/lib\";\r\nexport const defaultIFieldSchema = (controlType) => ({\r\n id: Guid.newGuid().toString(),\r\n controlType,\r\n name: \"\",\r\n order: 0\r\n});\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _DataTableColumn_args;\r\nexport class DataTableColumn {\r\n constructor(props) {\r\n _DataTableColumn_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _DataTableColumn_args, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _DataTableColumn_args, \"f\").schema.id;\r\n }\r\n get attributeId() {\r\n return __classPrivateFieldGet(this, _DataTableColumn_args, \"f\").schema.attributeId;\r\n }\r\n get fieldId() {\r\n return __classPrivateFieldGet(this, _DataTableColumn_args, \"f\").schema.fieldId;\r\n }\r\n get headerText() {\r\n return __classPrivateFieldGet(this, _DataTableColumn_args, \"f\").schema.headerText;\r\n }\r\n toComboBoxOption() {\r\n return {\r\n key: this.fieldId,\r\n text: this.headerText\r\n };\r\n }\r\n}\r\n_DataTableColumn_args = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Field_args;\r\nexport class Field {\r\n constructor(props) {\r\n _Field_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _Field_args, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").schema.id;\r\n }\r\n get parentId() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").schema.parentId;\r\n }\r\n get order() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _Field_args, \"f\").schema.order) !== null && _a !== void 0 ? _a : 0;\r\n }\r\n get colSm() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _Field_args, \"f\").schema.colSm) !== null && _a !== void 0 ? _a : 0;\r\n }\r\n get colMd() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _Field_args, \"f\").schema.colMd) !== null && _a !== void 0 ? _a : 0;\r\n }\r\n get colLg() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _Field_args, \"f\").schema.colLg) !== null && _a !== void 0 ? _a : 0;\r\n }\r\n get colXl() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _Field_args, \"f\").schema.colXl) !== null && _a !== void 0 ? _a : 0;\r\n }\r\n get colXxl() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _Field_args, \"f\").schema.colXxl) !== null && _a !== void 0 ? _a : 0;\r\n }\r\n get colXxxl() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _Field_args, \"f\").schema.colXxxl) !== null && _a !== void 0 ? _a : 0;\r\n }\r\n get controlType() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").schema.controlType;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").schema.name;\r\n }\r\n get title() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").schema.title;\r\n }\r\n get label() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").schema.label;\r\n }\r\n get required() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").schema.required;\r\n }\r\n get readonly() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").schema.readonly;\r\n }\r\n get disabled() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").schema.disabled;\r\n }\r\n get form() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").form;\r\n }\r\n get formId() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").schema.formId;\r\n }\r\n get children() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").form.fields.where(x => x.parentId == this.id);\r\n }\r\n getSchema() {\r\n return __classPrivateFieldGet(this, _Field_args, \"f\").schema;\r\n }\r\n toComboBoxOption() {\r\n return {\r\n key: this.id,\r\n text: this.title\r\n };\r\n }\r\n}\r\n_Field_args = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _DataTableLegacy_columns;\r\nimport { ReadonlyCollection } from \"@ioip/core/lib\";\r\nimport { DataTableColumn } from \"./DataTableColumn\";\r\nimport { Field } from \"./Field\";\r\nexport class DataTableLegacy extends Field {\r\n constructor(props) {\r\n var _a;\r\n super(props);\r\n _DataTableLegacy_columns.set(this, void 0);\r\n const columns = (_a = props.schema.columns) !== null && _a !== void 0 ? _a : [];\r\n __classPrivateFieldSet(this, _DataTableLegacy_columns, new ReadonlyCollection(columns.map(x => new DataTableColumn({ schema: x }))), \"f\");\r\n }\r\n get columns() {\r\n return __classPrivateFieldGet(this, _DataTableLegacy_columns, \"f\");\r\n }\r\n}\r\n_DataTableLegacy_columns = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _FormLegacy_args, _FormLegacy_fields, _FormLegacy_objectId;\r\nimport { ReadonlyCollection } from \"@ioip/core/lib\";\r\nimport { ControlType } from \"../../types\";\r\nimport { DataTableLegacy } from \"./DataTableLegacy\";\r\nimport { Field } from \"./Field\";\r\nimport { defaultIFieldSchema } from \"./IFieldSchema\";\r\nexport class FormLegacy {\r\n constructor(props) {\r\n _FormLegacy_args.set(this, void 0);\r\n _FormLegacy_fields.set(this, void 0);\r\n _FormLegacy_objectId.set(this, void 0);\r\n __classPrivateFieldSet(this, _FormLegacy_args, props, \"f\");\r\n this.__rebuidFields();\r\n }\r\n __rebuidFields() {\r\n __classPrivateFieldSet(this, _FormLegacy_fields, new ReadonlyCollection(__classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.schema.fields.map(x => {\r\n if (x.controlType == ControlType.dataTable)\r\n return new DataTableLegacy({ schema: x, form: this });\r\n return new Field({ schema: x, form: this });\r\n })), \"f\");\r\n }\r\n get objectId() {\r\n return __classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.objectId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.name;\r\n }\r\n get title() {\r\n return __classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.schema.title;\r\n }\r\n get description() {\r\n return __classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.description || '';\r\n }\r\n get fields() {\r\n return __classPrivateFieldGet(this, _FormLegacy_fields, \"f\").where(x => x.controlType != ControlType.row);\r\n }\r\n get rows() {\r\n return __classPrivateFieldGet(this, _FormLegacy_fields, \"f\").where(x => x.controlType == ControlType.row).orderBy(x => Number(x.order)).toArray();\r\n }\r\n get tables() {\r\n return __classPrivateFieldGet(this, _FormLegacy_fields, \"f\").where(x => x.controlType == ControlType.dataTable).cast();\r\n }\r\n addRow() {\r\n var _a;\r\n __classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.schema.fields = [...__classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.schema.fields, defaultIFieldSchema(ControlType.row)];\r\n this.__rebuidFields();\r\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\r\n }\r\n addControl(value) {\r\n var _a, _b;\r\n __classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.schema.fields = [\r\n ...__classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.schema.fields,\r\n Object.assign(Object.assign({}, defaultIFieldSchema((_a = value.controlType) !== null && _a !== void 0 ? _a : ControlType.textField)), value)\r\n ];\r\n this.__rebuidFields();\r\n (_b = this.onRender) === null || _b === void 0 ? void 0 : _b.call(this);\r\n }\r\n getSchema() {\r\n return __classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.schema;\r\n }\r\n getField(selectedFieldId) {\r\n return this.fields.single(x => x.id == selectedFieldId);\r\n }\r\n updateField(fieldId, value) {\r\n var _a;\r\n __classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.schema.fields = __classPrivateFieldGet(this, _FormLegacy_args, \"f\").object.schema.fields.map(x => x.id == fieldId ? Object.assign(Object.assign({}, x), value) : x);\r\n this.__rebuidFields();\r\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\r\n }\r\n}\r\n_FormLegacy_args = new WeakMap(), _FormLegacy_fields = new WeakMap(), _FormLegacy_objectId = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CProject_args, _CProject_entities, _CProject_nativeEntities, _CProject_reactComponents, _CProject_forms;\r\nimport { Guid, ReadonlyCollection, ValueOf } from \"@ioip/core/lib\";\r\nimport Entity from \"../data/types/Entity\";\r\nimport { CForm } from \"../forms/Form/CForm\";\r\nimport ReactComponent from \"../forms/types/ComponentField\";\r\nimport { FormLegacy } from \"../forms/types/FormLegacy\";\r\nimport { NativeEntitySchemas } from \"../types\";\r\nexport class CProject {\r\n constructor(props) {\r\n var _a, _b;\r\n _CProject_args.set(this, void 0);\r\n _CProject_entities.set(this, void 0);\r\n _CProject_nativeEntities.set(this, void 0);\r\n _CProject_reactComponents.set(this, void 0);\r\n _CProject_forms.set(this, void 0);\r\n __classPrivateFieldSet(this, _CProject_args, props, \"f\");\r\n const entities = props.schema.entities.map(x => new Entity({ object: x, project: this }));\r\n __classPrivateFieldSet(this, _CProject_entities, new ReadonlyCollection(entities), \"f\");\r\n __classPrivateFieldSet(this, _CProject_nativeEntities, new ReadonlyCollection(NativeEntitySchemas.map(x => new Entity({ object: x, project: this }))), \"f\");\r\n const reactComponents = (_b = (_a = props.schema.reactComponents) === null || _a === void 0 ? void 0 : _a.map(x => new ReactComponent({ object: x, project: this }))) !== null && _b !== void 0 ? _b : [];\r\n __classPrivateFieldSet(this, _CProject_reactComponents, new ReadonlyCollection(reactComponents), \"f\");\r\n const forms = props.schema.forms.map(x => new CForm({\r\n object: x,\r\n project: this,\r\n isRuntime: false,\r\n scope: ''\r\n }));\r\n __classPrivateFieldSet(this, _CProject_forms, new ReadonlyCollection(forms), \"f\");\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _CProject_args, \"f\").schema.name;\r\n }\r\n get entities() {\r\n return __classPrivateFieldGet(this, _CProject_entities, \"f\");\r\n }\r\n get attributes() {\r\n var _a, _b;\r\n const items = (_b = (_a = __classPrivateFieldGet(this, _CProject_entities, \"f\").selectMany(x => x.attributes)) === null || _a === void 0 ? void 0 : _a.toArray()) !== null && _b !== void 0 ? _b : [];\r\n return new ReadonlyCollection(items);\r\n }\r\n get reactComponents() {\r\n return __classPrivateFieldGet(this, _CProject_reactComponents, \"f\");\r\n }\r\n get nativeEntities() {\r\n return __classPrivateFieldGet(this, _CProject_nativeEntities, \"f\");\r\n }\r\n get forms() {\r\n return __classPrivateFieldGet(this, _CProject_forms, \"f\");\r\n }\r\n findEntity(codeOrId) {\r\n if (codeOrId == null) {\r\n return null;\r\n }\r\n if (codeOrId instanceof Guid) {\r\n return this.entities.firstOrDefault(x => codeOrId.equals(x.objectId));\r\n }\r\n else {\r\n const guidValue = new ValueOf();\r\n if (Guid.tryParse(codeOrId, guidValue)) {\r\n return this.entities.firstOrDefault(x => guidValue.value.equals(x.objectId));\r\n }\r\n else {\r\n return this.entities.firstOrDefault(x => x.code.toLowerCase() === codeOrId.toLowerCase());\r\n }\r\n }\r\n }\r\n findAttributeV1(attributeId) {\r\n const attributes = this.entities.selectMany(x => x.attributes);\r\n if (attributeId instanceof Guid) {\r\n return attributes.firstOrDefault(x => attributeId.equals(x.id));\r\n }\r\n else {\r\n const guidValue = new ValueOf();\r\n if (Guid.tryParse(attributeId, guidValue)) {\r\n return attributes.firstOrDefault(x => guidValue.value.equals(x.id));\r\n }\r\n else {\r\n return attributes.firstOrDefault(x => x.code === attributeId);\r\n }\r\n }\r\n }\r\n findAttribute(objectId, attributeId) {\r\n const entity = this.findEntity(objectId);\r\n if (entity == null)\r\n return null;\r\n const attributes = entity.attributes;\r\n if (attributeId instanceof Guid) {\r\n return attributes.firstOrDefault(x => attributeId.equals(x.id));\r\n }\r\n else {\r\n const guidValue = new ValueOf();\r\n if (Guid.tryParse(attributeId, guidValue)) {\r\n return attributes.firstOrDefault(x => guidValue.value.equals(x.id));\r\n }\r\n else {\r\n return attributes.firstOrDefault(x => x.code.toLowerCase() === attributeId.toLowerCase());\r\n }\r\n }\r\n }\r\n findForm(codeOrId) {\r\n if (codeOrId == null)\r\n return null;\r\n const forms = __classPrivateFieldGet(this, _CProject_forms, \"f\");\r\n if (codeOrId instanceof Guid) {\r\n return forms.firstOrDefault(x => codeOrId.equals(x.objectId));\r\n }\r\n else {\r\n const guidValue = new ValueOf();\r\n if (Guid.tryParse(codeOrId, guidValue)) {\r\n return forms.firstOrDefault(x => guidValue.value.equals(x.objectId));\r\n }\r\n else {\r\n return forms.firstOrDefault(x => x.code.toLowerCase() === codeOrId.toLowerCase());\r\n }\r\n }\r\n }\r\n getForm(codeOrId) {\r\n const schema = codeOrId instanceof Guid ? __classPrivateFieldGet(this, _CProject_args, \"f\").schema.forms.find(x => codeOrId.equals(x.objectId)) : __classPrivateFieldGet(this, _CProject_args, \"f\").schema.forms.find(x => x.code == codeOrId);\r\n if (schema == null)\r\n throw new Error(`Form ${codeOrId} not found.`);\r\n return new FormLegacy({ object: JSON.parse(JSON.stringify(schema)) });\r\n }\r\n getSchema() {\r\n return __classPrivateFieldGet(this, _CProject_args, \"f\").schema;\r\n }\r\n getAllEntities() {\r\n return [...__classPrivateFieldGet(this, _CProject_entities, \"f\").orderBy(x => x.name).toArray(), ...__classPrivateFieldGet(this, _CProject_nativeEntities, \"f\").orderBy(x => x.name).toArray()];\r\n }\r\n}\r\n_CProject_args = new WeakMap(), _CProject_entities = new WeakMap(), _CProject_nativeEntities = new WeakMap(), _CProject_reactComponents = new WeakMap(), _CProject_forms = new WeakMap();\r\n","import { Guid, Icons } from \"@ioip/core/lib\";\r\nimport { TreeNode } from \"@ioip/core/lib/types/TreeNode\";\r\nimport { createSlice } from \"@reduxjs/toolkit\";\r\nimport { batch, useDispatch, useSelector } from \"react-redux\";\r\nimport { defaultIFieldSchema } from \"../forms/types/IFieldSchema\";\r\nimport { CProject } from \"../projects\";\r\nimport { ControlType, EntityType } from \"../types\";\r\nlet _project;\r\nconst initialState = {\r\n forms: {},\r\n wizardPageData: {},\r\n tabPageState: {},\r\n flows: {},\r\n currentTab: null\r\n};\r\nconst getFlowEditorTabKey = (identifiers) => {\r\n if (identifiers == null)\r\n return null;\r\n const { type, formId, fieldId, commandBarItemId, propertyName } = identifiers;\r\n return `${type}__${formId}__${fieldId}__${commandBarItemId}__${propertyName}`;\r\n};\r\nexport const formEditorSlice = createSlice({\r\n name: 'formEditor',\r\n initialState: initialState,\r\n reducers: {\r\n setFormSchema: (state, action) => {\r\n const { formId, schema } = action.payload;\r\n state.forms[formId] = schema;\r\n },\r\n setPartialFormSchema: (state, action) => {\r\n const { formId, schema } = action.payload;\r\n state.forms[formId] = Object.assign(Object.assign({}, state.forms[formId]), schema);\r\n },\r\n addFormField: (state, action) => {\r\n var _a;\r\n const { formId, schema } = action.payload;\r\n state.forms[formId] = Object.assign(Object.assign({}, state.forms[formId]), { fields: [\r\n ...state.forms[formId].fields,\r\n Object.assign(Object.assign({}, defaultIFieldSchema((_a = schema.controlType) !== null && _a !== void 0 ? _a : ControlType.textField)), schema)\r\n ] });\r\n },\r\n setPartialForm: (state, action) => {\r\n const { formId, schema } = action.payload;\r\n state.forms[formId] = Object.assign(Object.assign({}, state.forms[formId]), schema);\r\n },\r\n removeField: (state, action) => {\r\n const { formId, fieldId } = action.payload;\r\n state.forms[formId] = Object.assign(Object.assign({}, state.forms[formId]), { fields: state.forms[formId].fields.filter(x => x.id != fieldId) });\r\n },\r\n setFormFields: (state, action) => {\r\n const { formId, fields } = action.payload;\r\n state.forms[formId] = Object.assign(Object.assign({}, state.forms[formId]), { fields: fields !== null && fields !== void 0 ? fields : [] });\r\n },\r\n setPartialFieldSchema: (state, action) => {\r\n const { formId, fieldId, schema } = action.payload;\r\n state.forms[formId] = Object.assign(Object.assign({}, state.forms[formId]), { fields: state.forms[formId].fields.map(x => x.id == fieldId ? Object.assign(Object.assign({}, x), schema) : x) });\r\n },\r\n setPartialCommandBarItem: (state, action) => {\r\n const { formId, fieldId, commandBarItemId, schema } = action.payload;\r\n state.forms[formId] = Object.assign(Object.assign({}, state.forms[formId]), { fields: state.forms[formId].fields.map(x => {\r\n if (x.id != fieldId)\r\n return x;\r\n const commandBarItems = x.commandBarItems || [];\r\n const index = commandBarItems.findIndex(x => x.id == commandBarItemId);\r\n if (index >= 0) {\r\n commandBarItems[index] = Object.assign(Object.assign({}, commandBarItems[index]), schema);\r\n }\r\n else {\r\n commandBarItems.push(Object.assign({ id: Guid.newGuid().toString() }, schema));\r\n }\r\n x.commandBarItems = commandBarItems;\r\n return x;\r\n }) });\r\n },\r\n setProject: (state, action) => {\r\n state.project = action.payload;\r\n _project = new CProject({ schema: action.payload });\r\n },\r\n setWizardPageState: (state, action) => {\r\n const { tabId, schema } = action.payload;\r\n state.wizardPageData[tabId] = Object.assign(Object.assign({}, state.wizardPageData[tabId]), schema);\r\n },\r\n removeWizardPage: (state, action) => {\r\n const tabId = action.payload;\r\n delete state.wizardPageData[tabId];\r\n },\r\n setTabPageState: (state, action) => {\r\n const { tabId, data } = action.payload;\r\n state.tabPageState[tabId] = data;\r\n },\r\n removeTabState: (state, action) => {\r\n const tabId = action.payload;\r\n delete state.tabPageState[tabId];\r\n },\r\n removeForm: (state, action) => {\r\n const formId = action.payload;\r\n delete state.forms[formId];\r\n },\r\n setPropertyEditor: (state, action) => {\r\n state.propertyEditor = action.payload;\r\n },\r\n setCurrentTabId: (state, action) => {\r\n state.currentTabId = action.payload;\r\n },\r\n setReactFlow: (state, action) => {\r\n const { key, schema } = action.payload;\r\n state.flows[key] = schema;\r\n },\r\n setPartialReactFlow: (state, action) => {\r\n const { key, schema } = action.payload;\r\n state.flows[key] = Object.assign(Object.assign({}, state.flows[key]), schema);\r\n },\r\n setReactFlowNode: (state, action) => {\r\n const { key, nodeId, props } = action.payload;\r\n state.flows[key] = Object.assign(Object.assign({}, state.flows[key]), { nodes: state.flows[key].nodes.map(x => x.id == nodeId ? Object.assign(Object.assign({}, x), { props }) : x) });\r\n },\r\n setPartialReactFlowNode: (state, action) => {\r\n const { key, nodeId, props } = action.payload;\r\n state.flows[key] = Object.assign(Object.assign({}, state.flows[key]), { nodes: state.flows[key].nodes.map(x => x.id == nodeId ? Object.assign(Object.assign({}, x), { props: Object.assign(Object.assign({}, x), props) }) : x) });\r\n },\r\n mountFlowEditor: (state, action) => {\r\n if (action.payload == null) {\r\n state.currentTab = null;\r\n }\r\n else {\r\n const key = getFlowEditorTabKey(action.payload);\r\n state.currentTab = {\r\n type: action.payload.type,\r\n formId: action.payload.formId,\r\n fieldId: action.payload.fieldId,\r\n commandBarItemId: action.payload.commandBarItemId,\r\n propertyName: action.payload.propertyName\r\n };\r\n state.flows[key] = action.payload.flow;\r\n }\r\n },\r\n selectNode: (state, action) => {\r\n if (state.currentTab != null)\r\n state.currentTab.nodeId = action.payload;\r\n },\r\n clearNodeSelecion: (state) => {\r\n state.currentTab.nodeId = null;\r\n }\r\n }\r\n});\r\nexport const useFlowEditor = () => {\r\n const dispatch = useDispatch();\r\n const forms = useSelector(state => state.formEditor.forms);\r\n const currentTab = useSelector(state => state.formEditor.currentTab);\r\n const { flows } = useSelector(state => state.formEditor);\r\n const key = getFlowEditorTabKey(currentTab);\r\n const currentFlowDiagram = flows[key];\r\n return {\r\n flow: currentFlowDiagram,\r\n selectedNode: currentFlowDiagram === null || currentFlowDiagram === void 0 ? void 0 : currentFlowDiagram.nodes.find(x => x.id == currentTab.fieldId),\r\n setFlowSchema: (schema) => {\r\n dispatch(formEditorSlice.actions.setReactFlow({ key, schema }));\r\n },\r\n setPartialFlowSchema: (schema) => {\r\n dispatch(formEditorSlice.actions.setPartialReactFlow({ key, schema }));\r\n },\r\n setNodeSchema: (value) => {\r\n dispatch(formEditorSlice.actions.setReactFlowNode({ key, nodeId: currentTab.nodeId, props: value }));\r\n },\r\n setPartialNodeSchema: (value) => {\r\n dispatch(formEditorSlice.actions.setPartialReactFlowNode({ key, nodeId: currentTab.nodeId, props: value }));\r\n },\r\n mountEditor: (options) => {\r\n dispatch(formEditorSlice.actions.mountFlowEditor(options));\r\n },\r\n selectNode: (nodeId) => {\r\n dispatch(formEditorSlice.actions.selectNode(nodeId));\r\n },\r\n unMountEditor: () => {\r\n dispatch(formEditorSlice.actions.mountFlowEditor(null));\r\n },\r\n clearNodeSelection: () => {\r\n dispatch(formEditorSlice.actions.clearNodeSelecion());\r\n },\r\n getForm() {\r\n const form = forms[currentTab.formId];\r\n return form;\r\n }\r\n };\r\n};\r\nexport const useProcesoxEditor = () => {\r\n const dispatch = useDispatch();\r\n const { currentTabId, forms, tabPageState: pageState, project, wizardPageData, propertyEditor } = useSelector(state => state.formEditor);\r\n const getFormEntity = (formId) => {\r\n var _a;\r\n const form = forms[formId];\r\n if (form == null || form.entityId == null)\r\n return null;\r\n return (_a = project.entities) === null || _a === void 0 ? void 0 : _a.find(x => x.objectId == form.entityId);\r\n };\r\n const setProject = (project) => {\r\n dispatch(formEditorSlice.actions.setProject(project));\r\n };\r\n const getRootNode = (options) => {\r\n var _a;\r\n if (project == null)\r\n return null;\r\n const nodes = [\r\n {\r\n id: 'root',\r\n text: project.name,\r\n icon: Icons.Folder,\r\n },\r\n {\r\n id: 'entities',\r\n text: 'Entities',\r\n icon: Icons.Folder,\r\n parentId: 'root'\r\n },\r\n {\r\n id: 'forms',\r\n text: 'Forms',\r\n icon: Icons.Folder,\r\n parentId: 'root'\r\n },\r\n {\r\n id: 'processes',\r\n text: 'Processes',\r\n icon: Icons.Folder,\r\n parentId: 'root'\r\n },\r\n {\r\n id: 'react-components',\r\n text: 'React components',\r\n icon: Icons.Folder,\r\n parentId: 'root'\r\n }\r\n ];\r\n project.entities.slice()\r\n .sort((a, b) => a.name.localeCompare(b.name))\r\n .forEach(entity => {\r\n var _a;\r\n nodes.push({\r\n id: entity.objectId,\r\n text: entity.name,\r\n icon: entity.version == '2.0.0'\r\n ? ((_a = entity.schema) === null || _a === void 0 ? void 0 : _a.type) === EntityType.documentRepository\r\n ? 'https://ioipcorestorageaccount.blob.core.windows.net/ioip-core-static-files/images/library.png'\r\n : Icons.Table\r\n : 'https://ioipcorestorageaccount.blob.core.windows.net/resources/images/table-alert.png',\r\n parentId: 'entities',\r\n onDoubleClick: () => { var _a; return (_a = options.onEditEntity) === null || _a === void 0 ? void 0 : _a.call(options, entity); }\r\n });\r\n });\r\n project.forms.slice()\r\n .sort((a, b) => a.name.localeCompare(b.name))\r\n .forEach(form => {\r\n nodes.push({\r\n id: form.objectId,\r\n text: form.name,\r\n icon: Icons.Form,\r\n parentId: 'forms',\r\n onDoubleClick: () => { var _a; return (_a = options.onEditForm) === null || _a === void 0 ? void 0 : _a.call(options, form); }\r\n });\r\n });\r\n (_a = project.reactComponents) === null || _a === void 0 ? void 0 : _a.slice().sort((a, b) => a.name.localeCompare(b.name)).forEach(component => {\r\n nodes.push({\r\n id: component.objectId,\r\n text: component.name,\r\n icon: Icons.Outlook,\r\n parentId: 'react-components',\r\n onDoubleClick: () => { var _a; return (_a = options.onEditReactComponent) === null || _a === void 0 ? void 0 : _a.call(options, component); }\r\n });\r\n });\r\n const root = TreeNode.createRootNode(nodes);\r\n return root;\r\n };\r\n const setFormSchema = (formId, schema) => {\r\n dispatch(formEditorSlice.actions.setFormSchema({ formId, schema }));\r\n };\r\n const setPartialFormSchema = (formId, schema) => {\r\n dispatch(formEditorSlice.actions.setPartialFormSchema({ formId, schema }));\r\n };\r\n const addField = (formId, schema) => {\r\n dispatch(formEditorSlice.actions.addFormField({ formId, schema }));\r\n };\r\n const removeField = (formId, fieldId) => {\r\n batch(() => {\r\n dispatch(formEditorSlice.actions.removeField({ formId, fieldId }));\r\n });\r\n };\r\n const getForm = (formId) => {\r\n return {\r\n formId,\r\n schema: forms[formId],\r\n setPartial: (schema) => {\r\n dispatch(formEditorSlice.actions.setPartialForm({ formId, schema }));\r\n },\r\n getForm: () => {\r\n return _project.getForm(Guid.parse(formId));\r\n }\r\n };\r\n };\r\n const removeForm = (formId) => {\r\n dispatch(formEditorSlice.actions.removeForm(formId));\r\n };\r\n const setPartialField = (formId, fieldId, schema) => {\r\n dispatch(formEditorSlice.actions.setPartialFieldSchema({ formId, fieldId, schema }));\r\n };\r\n const setPartialForm = (formId, schema) => {\r\n dispatch(formEditorSlice.actions.setFormSchema({ formId, schema }));\r\n };\r\n const addRow = (formId) => {\r\n var _a;\r\n const maxRowOrder = (_a = Math.max(...forms[formId].fields.filter(x => x.controlType == ControlType.row).map(x => x.order))) !== null && _a !== void 0 ? _a : 0;\r\n dispatch(formEditorSlice.actions.addFormField({\r\n formId,\r\n schema: Object.assign(Object.assign({}, defaultIFieldSchema(ControlType.row)), { order: maxRowOrder + 1 })\r\n }));\r\n };\r\n const insertRowBefore = (formId, referenceFieldId) => {\r\n const fields = forms[formId].fields.slice();\r\n const index = fields.findIndex(x => x.id == referenceFieldId);\r\n const parta = fields.slice(0, index);\r\n const partb = fields.slice(index);\r\n const newFields = [\r\n ...parta,\r\n {\r\n id: Guid.newGuid().toString(),\r\n controlType: ControlType.row\r\n },\r\n ...partb\r\n ];\r\n dispatch(formEditorSlice.actions.setFormFields({ formId, fields: newFields }));\r\n };\r\n const insertRowAfter = (formId, referenceFieldId) => {\r\n const fields = forms[formId].fields.slice();\r\n const index = fields.findIndex(x => x.id == referenceFieldId);\r\n const parta = fields.slice(0, index + 1);\r\n const partb = fields.slice(index + 1);\r\n const newFields = [\r\n ...parta,\r\n {\r\n id: Guid.newGuid().toString(),\r\n controlType: ControlType.row\r\n },\r\n ...partb\r\n ];\r\n dispatch(formEditorSlice.actions.setFormFields({ formId, fields: newFields }));\r\n };\r\n const updateRowOrder = (formId, fieldId, order) => {\r\n const fields = forms[formId].fields.filter(x => x.order >= order);\r\n batch(() => {\r\n fields.forEach(field => {\r\n dispatch(formEditorSlice.actions.setPartialFieldSchema({ formId, fieldId: field.id, schema: { order: field.order + 1 } }));\r\n });\r\n dispatch(formEditorSlice.actions.setPartialFieldSchema({ formId, fieldId, schema: { order } }));\r\n });\r\n };\r\n const useWizardPage = function useWizardPage(tabId) {\r\n var _a;\r\n const state = wizardPageData[tabId];\r\n return {\r\n state,\r\n errors: (_a = state === null || state === void 0 ? void 0 : state.errors) !== null && _a !== void 0 ? _a : {},\r\n data: state === null || state === void 0 ? void 0 : state.data,\r\n currentStep: state === null || state === void 0 ? void 0 : state.currentStep,\r\n setCurrentStep: (currentStep) => dispatch(formEditorSlice.actions.setWizardPageState({ tabId, schema: { currentStep } })),\r\n setState: (state) => dispatch(formEditorSlice.actions.setWizardPageState({ tabId, schema: state })),\r\n setPartialState: (partial) => dispatch(formEditorSlice.actions.setWizardPageState({ tabId, schema: partial })),\r\n setData: (values) => dispatch(formEditorSlice.actions.setWizardPageState({ tabId, schema: { data: values } })),\r\n setPartialData: (partial) => dispatch(formEditorSlice.actions.setWizardPageState({ tabId, schema: { data: Object.assign(Object.assign({}, state === null || state === void 0 ? void 0 : state.data), partial) } })),\r\n setErrors: (values) => dispatch(formEditorSlice.actions.setWizardPageState({ tabId, schema: { errors: values } })),\r\n setPartialErrors: (partial) => dispatch(formEditorSlice.actions.setWizardPageState({ tabId, schema: { errors: Object.assign(Object.assign({}, state === null || state === void 0 ? void 0 : state.errors), partial) } })),\r\n };\r\n };\r\n const setWizardPageData = function setWizardPageData(tabId, schema) {\r\n dispatch(formEditorSlice.actions.setWizardPageState({ tabId, schema }));\r\n };\r\n const removeWizardPage = function removeWizardPage(tabId) {\r\n dispatch(formEditorSlice.actions.removeWizardPage(tabId));\r\n };\r\n const getProjectSchema = () => {\r\n return project;\r\n };\r\n const getCurrentForm = () => {\r\n if (propertyEditor == null)\r\n return null;\r\n return getForm(propertyEditor.objectId);\r\n };\r\n const useTabState = function setTabState(tabId, initialState) {\r\n var _a;\r\n const state = pageState[tabId];\r\n return {\r\n isMounted: state != null,\r\n state: (_a = state) !== null && _a !== void 0 ? _a : initialState,\r\n setState: (state) => {\r\n dispatch(formEditorSlice.actions.setTabPageState({\r\n tabId,\r\n data: state\r\n }));\r\n },\r\n setPartialState: (partial) => {\r\n dispatch(formEditorSlice.actions.setTabPageState({\r\n tabId,\r\n data: Object.assign(Object.assign({}, state), partial)\r\n }));\r\n }\r\n };\r\n };\r\n const removeTabState = (tabId) => {\r\n dispatch(formEditorSlice.actions.removeTabState(tabId));\r\n };\r\n return {\r\n currentTabId,\r\n addField,\r\n addRow,\r\n forms,\r\n getCurrentForm,\r\n getForm,\r\n getFormEntity,\r\n getRootNode,\r\n insertRowAfter,\r\n insertRowBefore,\r\n project,\r\n Project: _project,\r\n removeField,\r\n removeForm,\r\n removeTabState,\r\n removeWizardPage,\r\n setFormSchema,\r\n setPartialFormSchema,\r\n setPartialField,\r\n setPartialForm,\r\n setProject,\r\n setWizardPageData,\r\n updateRowOrder,\r\n useTabState,\r\n useWizardPage,\r\n getProjectSchema,\r\n getPropertyEditor: () => {\r\n const propertyEditor = useSelector(state => state.formEditor.propertyEditor);\r\n return {\r\n current: propertyEditor,\r\n setFieldValue: (fieldId, value) => {\r\n dispatch(formEditorSlice.actions.setPartialFieldSchema({\r\n formId: propertyEditor.objectId,\r\n fieldId: fieldId,\r\n schema: value\r\n }));\r\n },\r\n setCurrentFieldValue: (value) => {\r\n dispatch(formEditorSlice.actions.setPartialFieldSchema({\r\n formId: propertyEditor.objectId,\r\n fieldId: propertyEditor.fieldId,\r\n schema: value\r\n }));\r\n },\r\n getCurrentField: () => {\r\n if ((propertyEditor === null || propertyEditor === void 0 ? void 0 : propertyEditor.objectType) != 'field' && (propertyEditor === null || propertyEditor === void 0 ? void 0 : propertyEditor.objectType) != 'commandBarItem')\r\n return null;\r\n const form = forms[propertyEditor.objectId];\r\n if (form == null)\r\n return null;\r\n return form.fields.find(x => x.id == propertyEditor.fieldId);\r\n },\r\n setCommandBarItemValue: (value) => {\r\n dispatch(formEditorSlice.actions.setPartialCommandBarItem({\r\n formId: propertyEditor.objectId,\r\n fieldId: propertyEditor.fieldId,\r\n commandBarItemId: propertyEditor.commandBarItemId,\r\n schema: value\r\n }));\r\n }\r\n };\r\n },\r\n setPropertyEditor: (propertyEditor) => {\r\n dispatch(formEditorSlice.actions.setPropertyEditor(propertyEditor !== null && propertyEditor !== void 0 ? propertyEditor : {\r\n objectType: null,\r\n objectId: null,\r\n fieldId: null,\r\n commandBarItemId: null\r\n }));\r\n },\r\n setPartialCommandBarItem: (formId, fieldId, commandBarItemId, schema) => {\r\n dispatch(formEditorSlice.actions.setPartialCommandBarItem({ formId, fieldId, commandBarItemId, schema }));\r\n },\r\n setCurrentTabId: (tabId) => {\r\n dispatch(formEditorSlice.actions.setCurrentTabId(tabId));\r\n },\r\n };\r\n};\r\nexport const useFormEditor = (formId) => {\r\n const dispatch = useDispatch();\r\n const { forms, project } = useSelector(state => state.formEditor);\r\n return {\r\n schema: forms[formId],\r\n addField: (schema) => {\r\n dispatch(formEditorSlice.actions.addFormField({ formId, schema }));\r\n },\r\n setPartial: (schema) => {\r\n dispatch(formEditorSlice.actions.setPartialForm({ formId, schema }));\r\n },\r\n getEntitySchema: () => {\r\n var _a;\r\n const form = forms[formId];\r\n if (form == null || form.entityId == null)\r\n return null;\r\n return (_a = project.entities) === null || _a === void 0 ? void 0 : _a.find(x => x.objectId == form.entityId);\r\n },\r\n getForm: () => {\r\n return _project.getForm(Guid.parse(formId));\r\n }\r\n };\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _DialogRef_args;\r\nexport class DialogRef {\r\n constructor(props) {\r\n _DialogRef_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _DialogRef_args, props, \"f\");\r\n }\r\n close() {\r\n __classPrivateFieldGet(this, _DialogRef_args, \"f\").onClose();\r\n }\r\n}\r\n_DialogRef_args = new WeakMap();\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { FontSizes, SelectionMode } from '@fluentui/react';\r\nimport { ACDataTablePage } from '@ioip/core/lib';\r\nimport { List } from 'linq.ts';\r\nimport React from 'react';\r\nimport { useProcesoxEditor } from '../../../slices/formEditorSlice';\r\nexport const XDevelopDataTable = (devProps) => {\r\n var _a;\r\n const ide = useProcesoxEditor();\r\n const field = devProps.field || {};\r\n const columns = [\r\n ...(field.columns || []).filter(x => x.visible).map(x => ({\r\n key: x.id,\r\n name: x.headerText,\r\n fieldName: x.id,\r\n minWidth: 100,\r\n maxWidth: 200,\r\n isResizable: true,\r\n onRender: (item) => {\r\n return React.createElement(\"div\", { style: { fontWeight: 'bold' } }, item[x.id]);\r\n }\r\n }))\r\n ];\r\n const editor = ide.getPropertyEditor();\r\n if (editor.current == null)\r\n return React.createElement(React.Fragment, null);\r\n const rawCommandBarItems = new List([...(_a = field.commandBarItems) !== null && _a !== void 0 ? _a : []]).OrderBy(x => { var _a; return (_a = x.order) !== null && _a !== void 0 ? _a : 0; }).ToArray();\r\n const commandBarItems = rawCommandBarItems.map(x => {\r\n var _a;\r\n const isSelected = editor.current.objectId === ((_a = field.formId) === null || _a === void 0 ? void 0 : _a.toString())\r\n && (editor === null || editor === void 0 ? void 0 : editor.current.fieldId) === field.id\r\n && (editor === null || editor === void 0 ? void 0 : editor.current.commandBarItemId) === x.id;\r\n return {\r\n key: x.id,\r\n name: x.text,\r\n iconProps: { iconName: x.icon },\r\n itemProps: {\r\n style: {\r\n backgroundColor: isSelected ? 'rgba(0, 120, 212, 0.2)' : undefined,\r\n }\r\n },\r\n onClick: (ev) => {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n ide.setPropertyEditor({\r\n objectType: 'commandBarItem',\r\n objectId: devProps.formId.toString(),\r\n fieldId: field.id,\r\n commandBarItemId: x.id\r\n });\r\n }\r\n };\r\n });\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { style: { maxHeight: '400px', marginLeft: -8, marginRight: -8 } },\r\n React.createElement(ACDataTablePage, { columns: columns, compact: true, selectionMode: field.selectionMode || SelectionMode.single, onDownloadServerDataAsync: (reqeust) => __awaiter(void 0, void 0, void 0, function* () { return ({ data: [], recordsFiltered: 0 }); }), commandBarItems: commandBarItems, title: field.title, commandBarFarItems: [], styles: { title: { fontSize: FontSizes.large } } })));\r\n};\r\n","import { FontSizes, FontWeights, Label, PanelType, SelectionMode, useTheme } from '@fluentui/react';\r\nimport { DataTable } from '@ioip/core/lib';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { ChildFormComponent } from '../../components/ChildFormComponent';\r\nimport { CommandBarAction } from '../../types/CommandBarAction';\r\nimport { XDevelopDataTable } from './XDevelopDataTable';\r\nexport const DataTableComponent = (props) => {\r\n var _a;\r\n const theme = useTheme();\r\n const dtRefresh = useRef(null);\r\n const [commandBarItems, setCommandBarItems] = useState([]);\r\n const [childForm, setChildForm] = useState(null);\r\n useEffect(() => {\r\n var _a, _b;\r\n (_b = (_a = props === null || props === void 0 ? void 0 : props.field) === null || _a === void 0 ? void 0 : _a.connect) === null || _b === void 0 ? void 0 : _b.call(_a, {\r\n onRefresh: () => {\r\n dtRefresh.current.refreshTable();\r\n },\r\n onOpenSubForm: (options) => {\r\n setChildForm({\r\n form: options.form,\r\n isUpdate: options.isUpdate,\r\n action: options.action,\r\n showAcceptButton: true\r\n });\r\n }\r\n });\r\n }, []);\r\n if (!props.field.isRuntime)\r\n return XDevelopDataTable(props.__dev);\r\n const field = props.field;\r\n const value = field.value;\r\n const isRuntime = field.isRuntime;\r\n let columns = isRuntime ? [...field.columns.where(x => x.visible).select(x => x.fluentStandarDataTableColumn).toArray()] : [];\r\n const [selectedItems, setSelectedItems] = useState([]);\r\n useEffect(() => {\r\n const result = field.buildCommandBarItems(selectedItems);\r\n setCommandBarItems(result);\r\n }, [selectedItems]);\r\n useEffect(() => {\r\n dtRefresh.current.refreshTable();\r\n }, [value]);\r\n const action = (_a = childForm === null || childForm === void 0 ? void 0 : childForm.action) !== null && _a !== void 0 ? _a : CommandBarAction.createItem;\r\n const isStandarPanel = action === CommandBarAction.createItem || action === CommandBarAction.editItem || action === CommandBarAction.deleteItem;\r\n const title = isStandarPanel ? (field === null || field === void 0 ? void 0 : field.panelTitle) || '' : childForm.form.title;\r\n const panelType = isStandarPanel ? field === null || field === void 0 ? void 0 : field.panelType : childForm.panelType;\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { style: { maxHeight: '400px' } },\r\n React.createElement(DataTable, { allowSearch: true, columns: columns.map((x, i) => (Object.assign(Object.assign({}, x), { key: i.toString() }))), onSelectedRow: x => {\r\n setSelectedItems(x);\r\n field.setSelectedItems(x);\r\n }, selectionMode: field.selectionMode || SelectionMode.single, onDownloadServerData: (request) => field.downloadServerDataAsync(request), commandBarItems: commandBarItems, title: field.title, commandBarFarItems: [], ref: x => dtRefresh.current = x }),\r\n React.createElement(Label, { style: {\r\n fontSize: FontSizes.small,\r\n color: theme.palette.redDark,\r\n fontWeight: FontWeights.regular,\r\n marginLeft: 8\r\n } }, field.errorMessage)),\r\n childForm != null && React.createElement(ChildFormComponent, { panelTitle: title, panelType: panelType || PanelType.medium, onClose: () => {\r\n if (!isStandarPanel && childForm.onCancel != null) {\r\n childForm.onCancel();\r\n }\r\n setChildForm(null);\r\n props.field.disposeFormInstance();\r\n }, onAccept: () => {\r\n if (isStandarPanel) {\r\n const value = childForm.form.values;\r\n if (childForm.isUpdate)\r\n field.updateRow(value);\r\n else\r\n field.addRow(value);\r\n setSelectedItems([]);\r\n dtRefresh.current.refreshTable();\r\n }\r\n else if (childForm.action === CommandBarAction.custom) {\r\n if (childForm.onAccept != null)\r\n childForm.onAccept();\r\n }\r\n props.field.disposeFormInstance();\r\n }, form: childForm.form, show: childForm != null, buttons: childForm.buttons, showAcceptButton: childForm.showAcceptButton }));\r\n};\r\n","import { Icon } from '@fluentui/react';\r\nimport { XDatePicker, XTextField } from '@ioip/core/lib';\r\nimport { useForceUpdate } from '@ioip/core/lib/hooks/useForceState';\r\nimport React, { useEffect } from 'react';\r\nexport const DatePickerComponent = (props) => {\r\n var _a, _b;\r\n const forceUpdate = useForceUpdate();\r\n const field = props.field;\r\n const label = field.label;\r\n const placeholder = field.placeholder;\r\n const disabled = field.readonly || field.disabled;\r\n const required = field.required;\r\n const value = (_b = (_a = props.field.value) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '';\r\n useEffect(function componentDidMount() {\r\n const onUpdated = () => forceUpdate();\r\n if (field.isRuntime)\r\n props.field.subscribe(onUpdated);\r\n return () => {\r\n if (field.isRuntime)\r\n props.field.unsubscribe(onUpdated);\r\n };\r\n }, []);\r\n return props.field.form == null\r\n ? React.createElement(XTextField, { label: label || placeholder, onChange: (value) => field.value = value, required: required || false, readonly: true, value: 'dd/MM/yyyy', styles: { suffix: { backgroundColor: 'transparent' } }, onRenderSuffix: () => React.createElement(Icon, { iconName: 'Calendar' }) })\r\n : React.createElement(XDatePicker, { label: label || placeholder, placeholder: placeholder || '', onChange: (value) => field.value = value, required: required || false, disabled: disabled, value: value, errorMessage: props.field.errorMessage || '' });\r\n};\r\n","import { Icon } from '@fluentui/react';\r\nimport { XDateTimePicker, XTextField } from '@ioip/core/lib';\r\nimport { useForceUpdate } from '@ioip/core/lib/hooks/useForceState';\r\nimport React, { useEffect } from 'react';\r\nexport const DateTimePickerComponent = (props) => {\r\n var _a;\r\n const forceUpdate = useForceUpdate();\r\n const field = props.field;\r\n const label = field.label;\r\n const placeholder = field.placeholder;\r\n const disabled = field.readonly || field.disabled;\r\n const required = field.required;\r\n const value = ((_a = field.value) === null || _a === void 0 ? void 0 : _a.toString()) || '';\r\n const isRuntime = field.isRuntime;\r\n useEffect(function componentDidMount() {\r\n const onUpdated = () => forceUpdate();\r\n if (isRuntime)\r\n props.field.subscribe(onUpdated);\r\n return () => {\r\n if (isRuntime)\r\n props.field.unsubscribe(onUpdated);\r\n };\r\n }, []);\r\n return props.field.form == null\r\n ? React.createElement(XTextField, { label: label || placeholder, required: required || false, readonly: true, value: 'dd/MM/yyyy hh:mm:ss', styles: { suffix: { backgroundColor: 'transparent' } }, onRenderSuffix: () => React.createElement(Icon, { iconName: 'DateTime' }) })\r\n : React.createElement(XDateTimePicker, { label: label || placeholder, placeholder: placeholder || '', onChange: (value) => field.value = value, required: required || false, disabled: disabled, value: value, errorMessage: props.field.errorMessage || '' });\r\n};\r\n","import { Department, DepartmentSelector } from '@ioip/archivox/lib';\r\nimport { Guid, XTextField } from '@ioip/core/lib';\r\nimport React, { useEffect, useState } from 'react';\r\nexport const XDepartmentSelector = (props) => {\r\n const field = props.field;\r\n const label = field.label;\r\n const disabled = field.readonly || field.disabled;\r\n const required = field.required;\r\n const value = field.value || 0;\r\n const isRuntime = field.isRuntime;\r\n const [options, setOptions] = useState([]);\r\n useEffect(() => {\r\n var _a, _b, _c;\r\n if (isRuntime) {\r\n let options = ((_b = (_a = field.datasource) === null || _a === void 0 ? void 0 : _a.items.select((schema) => new Department({ schema }))) === null || _b === void 0 ? void 0 : _b.where(x => x.countryId === 43).toArray()) || [];\r\n if (Guid.isNotEmpty(field.countryFilterId)) {\r\n const countryField = (_c = field.form) === null || _c === void 0 ? void 0 : _c.fields.firstOrDefault(x => x.id === field.countryFilterId);\r\n if (countryField != null) {\r\n options = options.filter(x => x.countryId === countryField.value);\r\n }\r\n else {\r\n console.warn(`Department field ${field.countryFilterId} not found`);\r\n }\r\n }\r\n setOptions(options);\r\n }\r\n }, []);\r\n if (!props.field.isRuntime) {\r\n return React.createElement(XTextField, { label: 'Department Selector', value: \"Department Selector\", onChange: () => { }, readonly: true });\r\n }\r\n return React.createElement(DepartmentSelector, { selectedKey: value, label: label || '', disabled: disabled, options: options, onChanged: value => field.value = (value === null || value === void 0 ? void 0 : value.id) || 0, required: required || false, errorMessage: field.errorMessage || '' });\r\n};\r\n","import { Link } from '@fluentui/react';\r\nimport { XTextField } from '@ioip/core/lib';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { CaseFileFinder } from '@ioip/archivox/lib/components';\r\nexport const CaseFileSelectorComponent = (props) => {\r\n const field = props.field;\r\n const label = field.label;\r\n const placeholder = field.placeholder;\r\n const disabled = field.readonly || field.disabled;\r\n const required = field.required;\r\n const value = field.value || 0;\r\n const isRuntime = field.isRuntime;\r\n const errorMessage = field.errorMessage;\r\n const [showPanel, setshowPanel] = useState(false);\r\n useEffect(() => {\r\n if (isRuntime) {\r\n }\r\n }, []);\r\n if (!props.field.isRuntime) {\r\n return React.createElement(XTextField, { label: label || '', value: \"Case File Selector\", onChange: () => { }, readonly: true });\r\n }\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(XTextField, { label: label, placeholder: placeholder, required: required, disabled: disabled, readonly: true, value: value, onRenderSuffix: disabled ? null : () => React.createElement(Link, { styles: {\r\n root: {\r\n userSelect: 'none'\r\n }\r\n }, onClick: () => {\r\n setshowPanel(true);\r\n } }, \"Seleccionar\"), errorMessage: errorMessage }),\r\n showPanel && React.createElement(CaseFileFinder, { onClose: () => setshowPanel(false), allowCreate: false, closeOnAccept: true, onAccept: (caseFile) => {\r\n field.value = caseFile.expedienteId;\r\n setshowPanel(false);\r\n }, searchType: 0 }));\r\n};\r\n","import { Icon } from \"@fluentui/react\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { DataTableIcon } from \"../components\";\r\nimport { IoipIcons } from \"../components/IoipIcons\";\r\nimport { EmptyStandarDataTableColumn } from \"../defaults\";\r\nimport { useForceUpdate } from \"../hooks/useForceState\";\r\nimport { ACDataTablePage } from \"../layout\";\r\nexport const FileManagerComponent = function XFileDataTable(props) {\r\n var _a;\r\n const { t } = useTranslation();\r\n const forceUpdate = useForceUpdate();\r\n const processes = useRef([]);\r\n const [isDropping, setIsDropping] = useState(false);\r\n const [selectedItems, setSelectedItems] = useState([]);\r\n const [commandBarItems, setCommandBarItems] = useState([]);\r\n const [commandBarFarItems, setCommandBarFarItems] = useState([]);\r\n useEffect(() => {\r\n props.fileManager.onChanged = () => {\r\n forceUpdate();\r\n };\r\n return () => {\r\n props.fileManager.onChanged = null;\r\n };\r\n }, []);\r\n useEffect(() => {\r\n if (props.onSelectionChanged != null)\r\n props.onSelectionChanged(selectedItems);\r\n const items = [];\r\n if (props.allowCreate) {\r\n items.push({\r\n key: 'new',\r\n text: 'Nuevo',\r\n iconProps: { iconName: 'Add' },\r\n onClick: () => {\r\n const input = document.createElement('input');\r\n input.type = 'file';\r\n input.accept = props.allowedExtensions || '*';\r\n input.multiple = props.multiple || false;\r\n input.onchange = (ev) => {\r\n var _a;\r\n const length = ((_a = ev.target.files) === null || _a === void 0 ? void 0 : _a.length) || 0;\r\n if (length > 0) {\r\n for (let i = 0; i < length; i++) {\r\n const file = ev.target.files[i];\r\n enqueueFileEntry(file);\r\n }\r\n }\r\n };\r\n input.click();\r\n }\r\n });\r\n if (selectedItems.length === 1) {\r\n items.push({\r\n key: 'view',\r\n text: t('view'),\r\n iconProps: { iconName: 'View' },\r\n onClick: () => {\r\n var _a;\r\n (_a = props.onOpenFile) === null || _a === void 0 ? void 0 : _a.call(props, selectedItems[0]);\r\n }\r\n });\r\n }\r\n const allowDelete = props.allowDelete || false;\r\n const length = selectedItems.length;\r\n if (allowDelete && length > 0) {\r\n items.push({\r\n key: 'delete',\r\n text: 'Eliminar',\r\n iconProps: { iconName: 'Delete' },\r\n onClick: (async () => {\r\n var _a;\r\n const length = selectedItems.length;\r\n if (length > 0) {\r\n const message = length === 1\r\n ? `¿Está seguro que desea eliminar el archivo ${props.onGetFileName(selectedItems[0])}?`\r\n : `¿Está seguro que desea eliminar los ${length} archivos seleccionados?`;\r\n const result = await props.host.showConfirmAsync(message, 'Eliminar');\r\n if (result)\r\n (_a = props.onDeleteFiles) === null || _a === void 0 ? void 0 : _a.call(props, selectedItems);\r\n }\r\n })\r\n });\r\n }\r\n }\r\n setCommandBarItems(items);\r\n }, [selectedItems]);\r\n useEffect(() => {\r\n const items = [];\r\n if (props.showFolders) {\r\n items.push({\r\n key: 'showFolders',\r\n iconProps: { iconName: 'BulletedTreeList' },\r\n checked: props.showFolders,\r\n title: 'Mostrar carpetas',\r\n onClick: () => { var _a; return (_a = props.onShowFoldersChanged) === null || _a === void 0 ? void 0 : _a.call(props, !props.showFolders); }\r\n });\r\n }\r\n ;\r\n const pendingFiles = props.fileManager.files.filter(x => x.isPending);\r\n if (pendingFiles.length > 0) {\r\n items.push({\r\n key: 'pending',\r\n text: `${pendingFiles.length}`,\r\n iconProps: { iconName: 'CloudUpload' },\r\n subMenuProps: {\r\n items: pendingFiles.map((x, index) => {\r\n return {\r\n key: index.toString(),\r\n text: x.name,\r\n iconProps: { iconName: 'Cancel' },\r\n onRenderIcon: () => {\r\n return React.createElement(Icon, { iconName: 'Cancel', onClick: () => x.delete(), style: {\r\n cursor: 'pointer',\r\n color: 'red',\r\n padding: '0px 4px'\r\n } });\r\n }\r\n };\r\n })\r\n }\r\n });\r\n }\r\n items.concat(...(props.commandBarFarItems || []));\r\n setCommandBarFarItems(items);\r\n }, [props.fileManager.files.length]);\r\n console.log('File manager changed', props.fileManager.files.length);\r\n const handleDragOver = (e) => {\r\n e.preventDefault();\r\n setIsDropping(true);\r\n };\r\n const handleDrop = (e) => {\r\n e.preventDefault();\r\n const files = Array.from(e.dataTransfer.files);\r\n const length = (files === null || files === void 0 ? void 0 : files.length) || 0;\r\n if (length > 0) {\r\n for (let i = 0; i < length; i++) {\r\n const file = files[i];\r\n enqueueFileEntry(file);\r\n }\r\n }\r\n setIsDropping(false);\r\n };\r\n const handleDragLeave = (e) => {\r\n e.preventDefault();\r\n setIsDropping(false);\r\n };\r\n const enqueueFileEntry = (file) => {\r\n var _a, _b;\r\n const extension = ((_a = file.name.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';\r\n if (props.allowedExtensions != null) {\r\n const allowedExtensions = props.allowedExtensions.split(',').map(x => x.trim().toLowerCase());\r\n if (!allowedExtensions.includes(extension)) {\r\n props.host.showError(`La extensión del archivo ${file.name} no es permitida`);\r\n return;\r\n }\r\n }\r\n const process = props.fileManager.add(file);\r\n processes.current.push(process);\r\n const start = (_b = props.autoStartUpload) !== null && _b !== void 0 ? _b : true;\r\n if (start) {\r\n process.startAsync();\r\n }\r\n };\r\n const component = React.createElement(React.Fragment, null,\r\n React.createElement(ACDataTablePage, { columns: [\r\n {\r\n name: '',\r\n minWidth: 24,\r\n maxWidth: 40,\r\n isResizable: true,\r\n onRender: (item) => {\r\n let icon;\r\n const extension = props.onGetExtension(item) || '';\r\n switch (extension.trim().toLowerCase()) {\r\n case 'docx':\r\n case 'doc':\r\n icon = IoipIcons.Docx;\r\n break;\r\n case 'xlsx':\r\n case 'xls':\r\n icon = IoipIcons.Xlsx;\r\n break;\r\n case 'pptx':\r\n case 'ppt':\r\n icon = IoipIcons.Pptx;\r\n break;\r\n case 'pdf':\r\n icon = IoipIcons.Pdf;\r\n break;\r\n case 'msg':\r\n icon = IoipIcons.Mail;\r\n break;\r\n case 'txt':\r\n icon = IoipIcons.Txt;\r\n break;\r\n case 'jpg':\r\n case 'jpeg':\r\n case 'png':\r\n case 'bmp':\r\n case 'icon':\r\n icon = IoipIcons.Picture;\r\n break;\r\n default:\r\n icon = IoipIcons.File;\r\n break;\r\n }\r\n return React.createElement(DataTableIcon, { icon: icon });\r\n }\r\n },\r\n ...props.columns,\r\n EmptyStandarDataTableColumn()\r\n ], commandBarItems: [\r\n ...commandBarItems,\r\n ...(props.comnnadBarItems || [])\r\n ], commandBarFarItems: commandBarFarItems, onSelectionChanged: items => {\r\n setSelectedItems(items);\r\n }, selectedItems: [], compact: true, onDownloadServerDataAsync: request => props.onDownloadServerData(request), refreshRef: props.refreshRef, selectionMode: props.selectionMode, folders: props.folders, title: props.title, showFolders: props.showFolders, rootNodeText: props.rootNodeText, onFolderSelected: props.onFolderSelected, styles: {\r\n title: {\r\n fontSize: '18px',\r\n fontWeight: '400px'\r\n },\r\n subComponents: {\r\n page: {\r\n body: {\r\n marginTop: '10px'\r\n }\r\n }\r\n }\r\n } }));\r\n const allowDragAndDrop = (_a = props.allowDragAndDrop) !== null && _a !== void 0 ? _a : true;\r\n if (!allowDragAndDrop)\r\n return component;\r\n return React.createElement(\"div\", { \"data-role\": \"droppable\", onDragOver: handleDragOver, onDrop: handleDrop, onDragLeave: handleDragLeave, style: {\r\n border: isDropping ? '1px dashed red' : 'initial',\r\n height: 'calc(100% - 16px)',\r\n width: 'calc(100% - 16px)'\r\n } },\r\n isDropping && React.createElement(\"div\", { style: {\r\n \"height\": \"100%\",\r\n \"width\": \"100%\",\r\n \"boxSizing\": \"border-box\",\r\n \"display\": \"flex\",\r\n \"justifyContent\": \"center\",\r\n \"alignItems\": \"center\"\r\n } }, \"Suelte los archivos aqu\\u00ED\"),\r\n !isDropping && component);\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _PanelRef_args;\r\nexport class PanelRef {\r\n constructor(props) {\r\n _PanelRef_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _PanelRef_args, props, \"f\");\r\n }\r\n close() {\r\n __classPrivateFieldGet(this, _PanelRef_args, \"f\").onClose();\r\n }\r\n}\r\n_PanelRef_args = new WeakMap();\r\n","import { DefaultButton, PrimaryButton } from '@fluentui/react';\r\nimport { Column, Grid, Row } from '@ioip/core/lib/components';\r\nimport { useForceUpdate } from '@ioip/core/lib/hooks/useForceState';\r\nimport React, { useEffect } from 'react';\r\nimport { XForm } from '../Form/XForm';\r\nexport const UIDialogForm = (props) => {\r\n var _a;\r\n const forceUpdate = useForceUpdate();\r\n useEffect(function subscribeEvents() {\r\n var _a;\r\n const buttons = (_a = props.buttons) !== null && _a !== void 0 ? _a : [];\r\n buttons.forEach(button => { button.onChanged = () => forceUpdate(); });\r\n }, []);\r\n return React.createElement(\"div\", { style: {\r\n position: \"absolute\",\r\n top: \"0\",\r\n left: \"0\",\r\n backgroundColor: 'rgba(0, 0, 0, 0.3)',\r\n zIndex: \"1000001\",\r\n right: \"0\",\r\n bottom: \"0\"\r\n } },\r\n React.createElement(\"div\", { className: 'procesox-dialog' },\r\n React.createElement(\"div\", { style: { display: 'inline' } },\r\n React.createElement(Grid, null,\r\n React.createElement(XForm, { form: props.form, showTitle: false, showCommandBar: false, activityInstance: null }),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12, style: { display: 'flex', justifyContent: 'end' } },\r\n ((_a = props.buttons) === null || _a === void 0 ? void 0 : _a.length) > 0 && React.createElement(React.Fragment, null, props.buttons.filter(x => x.visible).map((button, i) => {\r\n return React.createElement(PrimaryButton, { key: i, text: button.text, onClick: () => {\r\n var _a;\r\n (_a = button.invokeOnClick) === null || _a === void 0 ? void 0 : _a.call(button);\r\n }, styles: {\r\n root: {\r\n marginLeft: 8\r\n }\r\n }, disabled: button.disabled });\r\n })),\r\n props.showAcceptButton && React.createElement(DefaultButton, { text: 'Aceptar', onClick: props.onAccept })))))));\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _FlowConnection_engine, _FlowConnection_schema;\r\nexport class FlowConnection {\r\n constructor(engine, schema) {\r\n _FlowConnection_engine.set(this, void 0);\r\n _FlowConnection_schema.set(this, void 0);\r\n __classPrivateFieldSet(this, _FlowConnection_engine, engine, \"f\");\r\n __classPrivateFieldSet(this, _FlowConnection_schema, schema, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _FlowConnection_schema, \"f\").id;\r\n }\r\n get engine() {\r\n return __classPrivateFieldGet(this, _FlowConnection_engine, \"f\");\r\n }\r\n get source() {\r\n return __classPrivateFieldGet(this, _FlowConnection_schema, \"f\").source;\r\n }\r\n get sourceHandle() {\r\n return __classPrivateFieldGet(this, _FlowConnection_schema, \"f\").sourceHandle;\r\n }\r\n get target() {\r\n return __classPrivateFieldGet(this, _FlowConnection_schema, \"f\").target;\r\n }\r\n get targetHandle() {\r\n return __classPrivateFieldGet(this, _FlowConnection_schema, \"f\").targetHandle;\r\n }\r\n getSourceNode() {\r\n const node = this.engine.nodes.find(x => x.id == this.source);\r\n return node;\r\n }\r\n getTargetNode() {\r\n const source = this.engine.nodes.find(x => x.id == this.target);\r\n return source;\r\n }\r\n}\r\n_FlowConnection_engine = new WeakMap(), _FlowConnection_schema = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _InputHandle_args;\r\nimport { DataType } from \"../../types\";\r\nexport class InputHandle {\r\n constructor(props) {\r\n _InputHandle_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _InputHandle_args, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _InputHandle_args, \"f\").id;\r\n }\r\n get displayName() {\r\n return __classPrivateFieldGet(this, _InputHandle_args, \"f\").displayName;\r\n }\r\n get dataType() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _InputHandle_args, \"f\").dataType) !== null && _a !== void 0 ? _a : DataType.undefined;\r\n }\r\n get accept() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _InputHandle_args, \"f\").accept) !== null && _a !== void 0 ? _a : [];\r\n }\r\n get help() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _InputHandle_args, \"f\").help) !== null && _a !== void 0 ? _a : '';\r\n }\r\n}\r\n_InputHandle_args = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _a, _FlowNode_inputs, _FlowNode_outputs, _FlowNode_engine, _FlowNode_schema;\r\nimport { InputHandle } from \"./Handle\";\r\nexport class FlowNodeBase {\r\n}\r\nexport class FlowNode extends FlowNodeBase {\r\n constructor(engine, schema) {\r\n super();\r\n _FlowNode_engine.set(this, void 0);\r\n _FlowNode_schema.set(this, void 0);\r\n __classPrivateFieldSet(this, _FlowNode_engine, engine, \"f\");\r\n __classPrivateFieldSet(this, _FlowNode_schema, schema, \"f\");\r\n }\r\n get engine() {\r\n return __classPrivateFieldGet(this, _FlowNode_engine, \"f\");\r\n }\r\n get schema() {\r\n return __classPrivateFieldGet(this, _FlowNode_schema, \"f\");\r\n }\r\n get type() {\r\n return this.schema.type;\r\n }\r\n get id() {\r\n return this.schema.id;\r\n }\r\n getInputNode(targetHandleId) {\r\n const edge = this.engine.findEdge(x => x.target === this.id && x.targetHandle === targetHandleId);\r\n const node = edge === null || edge === void 0 ? void 0 : edge.getSourceNode();\r\n return [edge, node];\r\n }\r\n getInputNodes() {\r\n const edges = this.engine.findEdges(x => x.target === this.id);\r\n return edges.map(x => ({ connection: x, node: x.getSourceNode() }));\r\n }\r\n $getInputNode(targetHandleId) {\r\n const [, node] = this.getInputNode(targetHandleId);\r\n return node;\r\n }\r\n getOutputNode(sourceHandleId) {\r\n const edge = this.engine.findEdge(x => x.source === this.schema.id && x.sourceHandle === sourceHandleId);\r\n const node = edge === null || edge === void 0 ? void 0 : edge.getTargetNode();\r\n return [edge, node];\r\n }\r\n getOutputEdge(handleId) {\r\n const edge = this.engine.findEdges(x => x.source === this.schema.id && x.sourceHandle === handleId);\r\n return edge;\r\n }\r\n getConnectionEdges(targetNode = null) {\r\n const edge = this.engine.findEdges(x => x.source === this.schema.id);\r\n if (targetNode != null)\r\n return edge.filter(x => x.target === targetNode.id);\r\n return edge;\r\n }\r\n getConnectionEdge(targetNode = null) {\r\n const edges = this.getConnectionEdges(targetNode);\r\n return edges[0];\r\n }\r\n writeLog(message, deep, style) {\r\n if (this.engine.log) {\r\n console.log(`%c${'\\t'.repeat(deep)}${message}`, `${style}; padding: 5px;`);\r\n }\r\n }\r\n executeInput(handleId, deep, options) {\r\n var _b, _c;\r\n let value = null;\r\n const [edge, node] = this.getInputNode(handleId);\r\n if (node == null)\r\n return { edge, node, value };\r\n value = node;\r\n const accept = (_b = options === null || options === void 0 ? void 0 : options.accept) !== null && _b !== void 0 ? _b : [];\r\n const preprocessors = (_c = options === null || options === void 0 ? void 0 : options.preprocessors) !== null && _c !== void 0 ? _c : [];\r\n const isSafeType = (x) => accept.some((y) => x instanceof y);\r\n const findPreprocessor = (x) => { var _b; return (_b = preprocessors.find(y => x instanceof y[0])) === null || _b === void 0 ? void 0 : _b[1]; };\r\n while (true) {\r\n if (isSafeType(value)) {\r\n value = value === null || value === void 0 ? void 0 : value.execute(this, edge, deep + 1);\r\n continue;\r\n }\r\n const preprocessor = findPreprocessor(value);\r\n if (preprocessor != null) {\r\n value = preprocessor(value, edge);\r\n continue;\r\n }\r\n break;\r\n }\r\n return { edge, node, value };\r\n }\r\n executeOutput(handleId, deep) {\r\n const [edge, node] = this.getOutputNode(handleId);\r\n node === null || node === void 0 ? void 0 : node.execute(this, edge, deep + 1);\r\n }\r\n getConnector(type) {\r\n const connectors = this.engine.connectors || [];\r\n let connector = connectors.find(x => x instanceof type);\r\n if (connector == null) {\r\n console.warn('Connector not found: Type=ParameterConnector');\r\n }\r\n return connector;\r\n }\r\n static createHandle(options) {\r\n return new InputHandle(options);\r\n }\r\n $getInput(handleId) {\r\n const [connection, node] = this.getInputNode(handleId);\r\n return node;\r\n }\r\n $isConnected(handleId) {\r\n const [connection,] = this.getInputNode(handleId);\r\n return connection != null;\r\n }\r\n}\r\n_a = FlowNode, _FlowNode_engine = new WeakMap(), _FlowNode_schema = new WeakMap();\r\n_FlowNode_inputs = { value: void 0 };\r\n_FlowNode_outputs = { value: void 0 };\r\nFlowNode.metadataSymbol = Symbol('metadata');\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class BooleanNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a;\r\n return (_a = this.schema.data.value) !== null && _a !== void 0 ? _a : false;\r\n }\r\n}\r\nBooleanNode.outputHandle = 'output';\r\n","export const createPreprocessor = function createPreprocessor(ctor, fn) {\r\n return [ctor, fn];\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _FormBaseNode_options;\r\nimport { Label } from \"@fluentui/react\";\r\nimport { Column, Grid, isNullOrEmpty, Row } from \"@ioip/core/lib\";\r\nimport React from \"react\";\r\nimport { ControlType, DataType } from \"../../types\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class FormBaseNode extends FlowNode {\r\n constructor(engine, schema, options) {\r\n super(engine, schema);\r\n _FormBaseNode_options.set(this, void 0);\r\n __classPrivateFieldSet(this, _FormBaseNode_options, options, \"f\");\r\n }\r\n get $form() {\r\n var _a;\r\n const formId = (_a = __classPrivateFieldGet(this, _FormBaseNode_options, \"f\")) === null || _a === void 0 ? void 0 : _a.onGetFormId();\r\n if (isNullOrEmpty(formId))\r\n return null;\r\n const form = this.engine.project.forms.firstOrDefault(f => f.objectId === formId);\r\n return form;\r\n }\r\n get $fields() {\r\n var _a, _b;\r\n return (_b = (_a = this.$form) === null || _a === void 0 ? void 0 : _a.fields.orderBy(x => x.name).toArray()) !== null && _b !== void 0 ? _b : [];\r\n }\r\n get $fieldHandles() {\r\n const allowedTypes = [\r\n ControlType.textField,\r\n ControlType.comboBox,\r\n ControlType.checkBox,\r\n ControlType.numberField,\r\n ControlType.datePicker,\r\n ControlType.timePicker,\r\n ControlType.dateTimePicker,\r\n ControlType.citySelector,\r\n ControlType.userSelector,\r\n ControlType.sectionSelector,\r\n ControlType.countrySelector,\r\n ControlType.departmentSelector,\r\n ControlType.citySelector,\r\n ];\r\n const fields = this.$fields.filter(f => allowedTypes.includes(f.controlType));\r\n const getDataType = (controlType) => {\r\n switch (controlType) {\r\n case ControlType.checkBox:\r\n return DataType.boolean;\r\n case ControlType.numberField:\r\n return DataType.int;\r\n case ControlType.datePicker:\r\n case ControlType.timePicker:\r\n case ControlType.dateTimePicker:\r\n return DataType.date;\r\n default:\r\n return DataType.string;\r\n }\r\n };\r\n return fields.map(f => {\r\n var _a;\r\n const dataType = getDataType(f.controlType);\r\n return FlowNode.createHandle({\r\n id: f.id,\r\n displayName: (_a = f.name) !== null && _a !== void 0 ? _a : f.id,\r\n dataType,\r\n help: React.createElement(React.Fragment, null,\r\n React.createElement(Grid, null,\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(Label, null,\r\n \"DataType: \",\r\n DataType[dataType]))),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(Label, null,\r\n \"Name: \",\r\n f.name))),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(Label, null,\r\n \"Control type: \",\r\n ControlType[f.controlType])))))\r\n });\r\n });\r\n }\r\n}\r\n_FormBaseNode_options = new WeakMap();\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _CurrentFormNode_ref, _CurrentFormNode_executed;\r\nimport { Guid } from \"@ioip/core/lib\";\r\nimport { FormBaseNode } from \"../form-base/FormBaseNode\";\r\nexport class CurrentFormNode extends FormBaseNode {\r\n constructor(engine, schema) {\r\n super(engine, schema, {\r\n onGetFormId: () => {\r\n return this.formId;\r\n }\r\n });\r\n _CurrentFormNode_ref.set(this, void 0);\r\n _CurrentFormNode_executed.set(this, false);\r\n }\r\n get allowMultipleExecutions() {\r\n return false;\r\n }\r\n get ref() {\r\n return __classPrivateFieldGet(this, _CurrentFormNode_ref, \"f\");\r\n }\r\n get formId() {\r\n return this.schema.data.formId;\r\n }\r\n execute(caller, connection, deep) {\r\n __classPrivateFieldSet(this, _CurrentFormNode_ref, this.engine.currentForm, \"f\");\r\n const sourceHandleId = connection.sourceHandle;\r\n if (sourceHandleId === CurrentFormNode.formHandle) {\r\n return __classPrivateFieldGet(this, _CurrentFormNode_ref, \"f\");\r\n }\r\n else {\r\n if (Guid.isValid(sourceHandleId)) {\r\n const field = __classPrivateFieldGet(this, _CurrentFormNode_ref, \"f\").getField(sourceHandleId);\r\n return field;\r\n }\r\n return null;\r\n }\r\n }\r\n}\r\n_CurrentFormNode_ref = new WeakMap(), _CurrentFormNode_executed = new WeakMap();\r\nCurrentFormNode.title = 'Current Form';\r\nCurrentFormNode.executeOnClient = true;\r\nCurrentFormNode.executeOnServer = true;\r\nCurrentFormNode.formHandle = 'output';\r\n","import { ControlType, DataType } from \"../../types\";\r\nexport const redFlowTheme = {\r\n primaryBackgroundColor: '#8B0000',\r\n secondaryBackgroundColor: '#A40000',\r\n borderColor: '#900000'\r\n};\r\nexport const orangeFlowTheme = {\r\n primaryBackgroundColor: '#E65100',\r\n secondaryBackgroundColor: '#FF6D00',\r\n borderColor: '#F57C00'\r\n};\r\nexport const darkGreenTheme = {\r\n primaryBackgroundColor: '#004D40',\r\n secondaryBackgroundColor: '#00796B',\r\n borderColor: '#00695C'\r\n};\r\nexport const lightBlueTheme = {\r\n primaryBackgroundColor: '#01579B',\r\n secondaryBackgroundColor: '#0288D1',\r\n borderColor: '#0277BD'\r\n};\r\nexport const stringTheme = {\r\n primaryBackgroundColor: '#0D47A1',\r\n secondaryBackgroundColor: '#1976D2',\r\n borderColor: '#1565C0'\r\n};\r\nexport const violetTheme = {\r\n primaryBackgroundColor: '#6A1B9A',\r\n secondaryBackgroundColor: '#8E24AA',\r\n borderColor: '#7B1FA2'\r\n};\r\nexport const panelTheme = {\r\n primaryBackgroundColor: '#AD1457',\r\n secondaryBackgroundColor: '#D81B60',\r\n borderColor: '#C2185B'\r\n};\r\nexport const yellowGrayTheme = {\r\n primaryBackgroundColor: '#F57F17',\r\n secondaryBackgroundColor: '#F9A825',\r\n borderColor: '#FBC02D'\r\n};\r\nexport const forestTheme = {\r\n primaryBackgroundColor: '#1B5E20',\r\n secondaryBackgroundColor: '#2E7D32',\r\n borderColor: '#388E3C'\r\n};\r\nexport const buttonTheme = {\r\n primaryBackgroundColor: '#263238',\r\n secondaryBackgroundColor: '#37474F',\r\n borderColor: '#455A64'\r\n};\r\nexport const bloodTheme = {\r\n primaryBackgroundColor: '#B71C1C',\r\n secondaryBackgroundColor: '#C62828',\r\n borderColor: '#D32F2F'\r\n};\r\nexport const numberTheme = {\r\n primaryBackgroundColor: '#263238',\r\n secondaryBackgroundColor: '#37474F',\r\n borderColor: '#455A64'\r\n};\r\nexport const greaterThanTheme = {\r\n primaryBackgroundColor: '#1B2631',\r\n secondaryBackgroundColor: '#213F4D',\r\n borderColor: '#29434E'\r\n};\r\nexport const lessThanTheme = {\r\n primaryBackgroundColor: '#424242',\r\n secondaryBackgroundColor: '#616161',\r\n borderColor: '#757575'\r\n};\r\nexport const resultTheme = {\r\n primaryBackgroundColor: '#4E342E',\r\n secondaryBackgroundColor: '#6D4C41',\r\n borderColor: '#795548'\r\n};\r\nexport const mathOperationTheme = {\r\n primaryBackgroundColor: '#1A237E',\r\n secondaryBackgroundColor: '#303F9F',\r\n borderColor: '#3949AB'\r\n};\r\nexport const formTheme = {\r\n primaryBackgroundColor: '#01579B',\r\n secondaryBackgroundColor: '#0288D1',\r\n borderColor: '#039BE5'\r\n};\r\nexport const contactTheme = {\r\n primaryBackgroundColor: '#4A148C',\r\n secondaryBackgroundColor: '#6A1B9A',\r\n borderColor: '#7B1FA2'\r\n};\r\nexport const inputFileTheme = {\r\n primaryBackgroundColor: '#004D40',\r\n secondaryBackgroundColor: '#00796B',\r\n borderColor: '#00897B'\r\n};\r\nexport const graphiteTheme = {\r\n primaryBackgroundColor: '#37474F',\r\n secondaryBackgroundColor: '#546E7A',\r\n borderColor: '#455A64'\r\n};\r\nexport const notTheme = {\r\n primaryBackgroundColor: '#0A3044',\r\n secondaryBackgroundColor: '#1A567E',\r\n borderColor: '#1E88E5'\r\n};\r\nexport const currentUserTheme = {\r\n primaryBackgroundColor: '#B71C1C',\r\n secondaryBackgroundColor: '#D32F2F',\r\n borderColor: '#E53935'\r\n};\r\nexport const sendEmailTheme = {\r\n primaryBackgroundColor: '#6D4C41',\r\n secondaryBackgroundColor: '#8D6E63',\r\n borderColor: '#A1887F'\r\n};\r\nexport const obsidianTheme = {\r\n primaryBackgroundColor: '#263238',\r\n secondaryBackgroundColor: '#455A64',\r\n borderColor: '#37474F'\r\n};\r\nexport const dialogTheme = {\r\n primaryBackgroundColor: '#4527A0',\r\n secondaryBackgroundColor: '#673AB7',\r\n borderColor: '#5E35B1'\r\n};\r\nexport const meteorShowerTheme = {\r\n primaryBackgroundColor: '#283593',\r\n secondaryBackgroundColor: '#3949AB',\r\n borderColor: '#303F9F'\r\n};\r\nexport const queryStringTheme = {\r\n primaryBackgroundColor: '#2E002E',\r\n secondaryBackgroundColor: '#5C005C',\r\n borderColor: '#4B004B'\r\n};\r\nexport const NodeColors = {\r\n boolean: '#880e4f',\r\n number: redFlowTheme.borderColor,\r\n string: '#fff9c4',\r\n Long: '#ffcc80',\r\n Entity: '#b39ddb',\r\n Attribute: '#ffab91',\r\n fieldSelector: '#3F51B5',\r\n formSelector: '#4caf50',\r\n Column: '#f48fb1',\r\n Filter: '#e6ee9c',\r\n dataTableColumn: '#FF5722',\r\n result: '#607D8B',\r\n and: '#4caf50',\r\n or: '#009688',\r\n equals: '#2196f3',\r\n any: '#000',\r\n notEquals: '#880E4F',\r\n select: '#3F51B5',\r\n sum: '#00BCD4',\r\n panelType: '#FF5722',\r\n trigger: '#9E9E9E'\r\n};\r\nexport const FlowHandleStyle = {\r\n top: 53,\r\n width: 14,\r\n height: 14,\r\n background: NodeColors.dataTableColumn\r\n};\r\nexport const createHandleStyle = (top, background) => {\r\n return Object.assign(Object.assign({}, FlowHandleStyle), { top,\r\n background, border: 'none' });\r\n};\r\nexport const getDataTypeColor = (dataType) => {\r\n switch (dataType) {\r\n case DataType.boolean:\r\n return '#8BC34A';\r\n case DataType.string:\r\n return '#00BCD4';\r\n case DataType.short:\r\n case DataType.int:\r\n case DataType.long:\r\n case DataType.decimal:\r\n case DataType.double:\r\n case DataType.float:\r\n case DataType.decimal:\r\n return '#FF5722';\r\n case DataType.date:\r\n case DataType.time:\r\n case DataType.datetime:\r\n return '#E91E63';\r\n default:\r\n return 'white';\r\n }\r\n};\r\nexport const getControlTypeColor = (controlType) => {\r\n switch (controlType) {\r\n case ControlType.textField:\r\n return getDataTypeColor(DataType.string);\r\n case ControlType.numberField:\r\n case ControlType.decimalField:\r\n case ControlType.currencyField:\r\n return getDataTypeColor(DataType.decimal);\r\n case ControlType.datePicker:\r\n return getDataTypeColor(DataType.date);\r\n case ControlType.timePicker:\r\n return getDataTypeColor(DataType.time);\r\n case ControlType.dateTimePicker:\r\n return getDataTypeColor(DataType.datetime);\r\n case ControlType.checkBox:\r\n return getDataTypeColor(DataType.boolean);\r\n case ControlType.comboBox:\r\n case ControlType.userSelector:\r\n case ControlType.sectionSelector:\r\n case ControlType.countrySelector:\r\n case ControlType.departmentSelector:\r\n case ControlType.citySelector:\r\n return getDataTypeColor(DataType.long);\r\n case ControlType.radicadoEntradaSelector:\r\n case ControlType.caseFileSelector:\r\n case ControlType.documentaryTypeSelector:\r\n return getDataTypeColor(DataType.long);\r\n default:\r\n return NodeColors.any;\r\n }\r\n};\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _FormSelectorNode_formRef;\r\nimport { Guid } from \"@ioip/core/lib\";\r\nimport { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { FormBaseNode } from \"../form-base/FormBaseNode\";\r\nexport class FormSelectorNode extends FormBaseNode {\r\n constructor(engine, schema) {\r\n super(engine, schema, {\r\n onGetFormId: () => {\r\n return this.formId;\r\n }\r\n });\r\n _FormSelectorNode_formRef.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get formId() {\r\n return this.schema.data.formId;\r\n }\r\n get formRef() {\r\n return __classPrivateFieldGet(this, _FormSelectorNode_formRef, \"f\");\r\n }\r\n execute(caller, connection, deep, data) {\r\n var _a;\r\n const formId = this.schema.data.formId;\r\n const form = Guid.isEmpty(formId) ? null : (_a = this.engine.page) === null || _a === void 0 ? void 0 : _a.getForm({ objectId: Guid.parse(formId), connectors: this.engine.connectors });\r\n this.writeLog(`[${FormSelectorNode.name}] ${formId} [${form != null ? 'Ok' : 'Not found'}]`, deep, `color: white; background-color: ${NodeColors.formSelector}`);\r\n __classPrivateFieldSet(this, _FormSelectorNode_formRef, form, \"f\");\r\n return form;\r\n }\r\n}\r\n_FormSelectorNode_formRef = new WeakMap();\r\nFormSelectorNode.title = 'Form Selector';\r\nFormSelectorNode.formIdHandleId = 'formId';\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _ComboBoxNode_ref;\r\nimport { ArgumentNullException, isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { CurrentFormNode } from \"../current-form/CurrentFormNode\";\r\nimport { FormSelectorNode } from \"../form-selector/FormSelectorNode\";\r\nexport class ComboBoxNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _ComboBoxNode_ref.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get fieldId() {\r\n return this.schema.data.fieldId;\r\n }\r\n get ref() {\r\n return __classPrivateFieldGet(this, _ComboBoxNode_ref, \"f\");\r\n }\r\n get selectedItem() {\r\n var _a;\r\n return (_a = this.ref) === null || _a === void 0 ? void 0 : _a.selectedItem;\r\n }\r\n get selectedValue() {\r\n var _a;\r\n return (_a = this.ref) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n getFormId() {\r\n const inputEdge = this.engine.edges.find(x => x.target == this.id && x.targetHandle == ComboBoxNode.formIdHandle);\r\n if (inputEdge == null)\r\n return null;\r\n const inputNode = inputEdge.getSourceNode();\r\n if (inputNode == null)\r\n return null;\r\n if (inputNode instanceof CurrentFormNode)\r\n return inputNode.formId;\r\n if (inputNode instanceof FormSelectorNode)\r\n return inputNode.formId;\r\n console.warn(`[${ComboBoxNode.name}] Invalid input node '${inputNode.type}'`);\r\n return null;\r\n }\r\n execute(caller, connection, deep) {\r\n ArgumentNullException.throwIfNull(caller, 'caller');\r\n ArgumentNullException.throwIfNull(connection, 'callerEdge');\r\n const cbx = this.engine.currentForm.fields.cast().firstOrDefault(x => x.id == this.schema.data.fieldId);\r\n if (cbx == null) {\r\n console.warn(`[${ComboBoxNode.name}]: Field not found`);\r\n return null;\r\n }\r\n __classPrivateFieldSet(this, _ComboBoxNode_ref, cbx, \"f\");\r\n const sourceHandle = connection.sourceHandle;\r\n switch (sourceHandle) {\r\n case ComboBoxNode.fieldHandle:\r\n return cbx;\r\n case ComboBoxNode.selectedItemHandle:\r\n const item = cbx.selectedItem;\r\n return item;\r\n case ComboBoxNode.selectedTextHandle:\r\n const text = cbx.selectedText;\r\n return text;\r\n case ComboBoxNode.selectedValueHandle:\r\n const value = cbx.value;\r\n return value;\r\n default:\r\n console.warn(`[${ComboBoxNode.name}] Invalid source handle '${sourceHandle}'`);\r\n return null;\r\n }\r\n }\r\n getDesingDataTable() {\r\n const formId = this.getFormId();\r\n if (isNullOrEmpty(formId))\r\n return null;\r\n if (isNullOrEmpty(this.fieldId))\r\n return null;\r\n const form = this.engine.project.findForm(formId);\r\n if (form == null)\r\n return null;\r\n const field = form.fields.cast().firstOrDefault(x => x.id == this.fieldId);\r\n return field;\r\n }\r\n}\r\n_ComboBoxNode_ref = new WeakMap();\r\nComboBoxNode.formIdHandle = 'formId';\r\nComboBoxNode.fieldHandle = 'field';\r\nComboBoxNode.selectedItemHandle = 'selectedItem';\r\nComboBoxNode.selectedTextHandle = 'selectedText';\r\nComboBoxNode.selectedValueHandle = 'selectedValue';\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _DataTableNode_datatableRef;\r\nimport { ArgumentNullException, isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { CurrentFormNode } from \"../current-form/CurrentFormNode\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { FormSelectorNode } from \"../form-selector/FormSelectorNode\";\r\nexport class DataTableNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _DataTableNode_datatableRef.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get fieldId() {\r\n return this.schema.data.fieldId;\r\n }\r\n get ref() {\r\n return __classPrivateFieldGet(this, _DataTableNode_datatableRef, \"f\");\r\n }\r\n getFormId() {\r\n const inputEdge = this.engine.edges.find(x => x.target == this.id && x.targetHandle == DataTableNode.formIdHandleId);\r\n if (inputEdge == null)\r\n return null;\r\n const inputNode = inputEdge.getSourceNode();\r\n if (inputNode == null)\r\n return null;\r\n if (inputNode instanceof CurrentFormNode)\r\n return inputNode.formId;\r\n if (inputNode instanceof FormSelectorNode)\r\n return inputNode.formId;\r\n console.warn(`[${DataTableNode.name}] Invalid input node '${inputNode.type}'`);\r\n return null;\r\n }\r\n execute(caller, connection, deep) {\r\n ArgumentNullException.throwIfNull(caller, 'caller');\r\n ArgumentNullException.throwIfNull(connection, 'callerEdge');\r\n const datatable = this.engine.currentForm.fields.cast().firstOrDefault(x => x.id == this.schema.data.fieldId);\r\n if (datatable == null) {\r\n console.warn(`[${DataTableNode.name}] Field is null`);\r\n return null;\r\n }\r\n __classPrivateFieldSet(this, _DataTableNode_datatableRef, datatable, \"f\");\r\n const sourceHandle = connection.sourceHandle;\r\n switch (sourceHandle) {\r\n case DataTableNode.fieldHandleId:\r\n this.writeLog(`[${DataTableNode.name}]: [Ok]`, deep, `color: white; background-color: ${NodeColors.fieldSelector}`);\r\n return datatable;\r\n case DataTableNode.selectedItemHandleId:\r\n const item = datatable.selectedItem;\r\n this.writeLog(`[${DataTableNode.name}]: [Ok]`, deep, `color: white; background-color: ${NodeColors.fieldSelector}`);\r\n return item;\r\n case DataTableNode.selectedItemsHandleId:\r\n const items = datatable.selectedItems;\r\n this.writeLog(`[${DataTableNode.name}]: [Ok]`, deep, `color: white; background-color: ${NodeColors.fieldSelector}`);\r\n return items;\r\n default:\r\n console.warn(`[${DataTableNode.name}] Invalid source handle '${sourceHandle}'`);\r\n return null;\r\n }\r\n }\r\n __table() {\r\n const formId = this.getFormId();\r\n if (isNullOrEmpty(formId))\r\n return null;\r\n if (isNullOrEmpty(this.fieldId))\r\n return null;\r\n const form = this.engine.project.findForm(formId);\r\n if (form == null)\r\n return null;\r\n const field = form.fields.cast().firstOrDefault(x => x.id == this.fieldId);\r\n return field;\r\n }\r\n}\r\n_DataTableNode_datatableRef = new WeakMap();\r\nDataTableNode.formIdHandleId = 'formId';\r\nDataTableNode.fieldHandleId = 'field';\r\nDataTableNode.selectedItemHandleId = 'selectedItem';\r\nDataTableNode.selectedItemsHandleId = 'selectedItems';\r\n","export var ComparisonOperator;\r\n(function (ComparisonOperator) {\r\n ComparisonOperator[ComparisonOperator[\"undefined\"] = 0] = \"undefined\";\r\n ComparisonOperator[ComparisonOperator[\"equals\"] = 1] = \"equals\";\r\n ComparisonOperator[ComparisonOperator[\"notEquals\"] = 2] = \"notEquals\";\r\n ComparisonOperator[ComparisonOperator[\"lessThan\"] = 3] = \"lessThan\";\r\n ComparisonOperator[ComparisonOperator[\"lessThanOrEquals\"] = 4] = \"lessThanOrEquals\";\r\n ComparisonOperator[ComparisonOperator[\"greaterThan\"] = 5] = \"greaterThan\";\r\n ComparisonOperator[ComparisonOperator[\"greaterThanOrEquals\"] = 6] = \"greaterThanOrEquals\";\r\n ComparisonOperator[ComparisonOperator[\"contains\"] = 7] = \"contains\";\r\n ComparisonOperator[ComparisonOperator[\"notContains\"] = 8] = \"notContains\";\r\n ComparisonOperator[ComparisonOperator[\"startsWith\"] = 9] = \"startsWith\";\r\n ComparisonOperator[ComparisonOperator[\"notStartsWith\"] = 10] = \"notStartsWith\";\r\n ComparisonOperator[ComparisonOperator[\"endsWith\"] = 11] = \"endsWith\";\r\n ComparisonOperator[ComparisonOperator[\"notEndsWith\"] = 12] = \"notEndsWith\";\r\n ComparisonOperator[ComparisonOperator[\"isNull\"] = 13] = \"isNull\";\r\n ComparisonOperator[ComparisonOperator[\"isNotNull\"] = 14] = \"isNotNull\";\r\n})(ComparisonOperator || (ComparisonOperator = {}));\r\nexport const ComparisonOperatorOptions = [\r\n { key: ComparisonOperator.equals, text: ComparisonOperator[ComparisonOperator.equals] },\r\n { key: ComparisonOperator.notEquals, text: ComparisonOperator[ComparisonOperator.notEquals] },\r\n { key: ComparisonOperator.lessThan, text: ComparisonOperator[ComparisonOperator.lessThan] },\r\n { key: ComparisonOperator.lessThanOrEquals, text: ComparisonOperator[ComparisonOperator.lessThanOrEquals] },\r\n { key: ComparisonOperator.greaterThan, text: ComparisonOperator[ComparisonOperator.greaterThan] },\r\n { key: ComparisonOperator.greaterThanOrEquals, text: ComparisonOperator[ComparisonOperator.greaterThanOrEquals] },\r\n { key: ComparisonOperator.contains, text: ComparisonOperator[ComparisonOperator.contains] },\r\n { key: ComparisonOperator.notContains, text: ComparisonOperator[ComparisonOperator.notContains] },\r\n { key: ComparisonOperator.startsWith, text: ComparisonOperator[ComparisonOperator.startsWith] },\r\n { key: ComparisonOperator.notStartsWith, text: ComparisonOperator[ComparisonOperator.notStartsWith] },\r\n { key: ComparisonOperator.endsWith, text: ComparisonOperator[ComparisonOperator.endsWith] },\r\n { key: ComparisonOperator.notEndsWith, text: ComparisonOperator[ComparisonOperator.notEndsWith] }\r\n];\r\n","export var LogicEngineNodeType;\r\n(function (LogicEngineNodeType) {\r\n LogicEngineNodeType[\"updateInputFile\"] = \"1\";\r\n LogicEngineNodeType[\"closeDialog\"] = \"2\";\r\n LogicEngineNodeType[\"navigateTo\"] = \"3\";\r\n LogicEngineNodeType[\"inputFile\"] = \"4\";\r\n LogicEngineNodeType[\"contact\"] = \"5\";\r\n LogicEngineNodeType[\"contactString\"] = \"6\";\r\n LogicEngineNodeType[\"setFormValues\"] = \"7\";\r\n LogicEngineNodeType[\"setCurrentFormValues\"] = \"8\";\r\n LogicEngineNodeType[\"scope\"] = \"9\";\r\n LogicEngineNodeType[\"not\"] = \"10\";\r\n LogicEngineNodeType[\"readParameter\"] = \"11\";\r\n LogicEngineNodeType[\"currentUser\"] = \"12\";\r\n LogicEngineNodeType[\"fetch\"] = \"13\";\r\n LogicEngineNodeType[\"codeAction\"] = \"14\";\r\n LogicEngineNodeType[\"sqlAction\"] = \"15\";\r\n LogicEngineNodeType[\"sqlRule\"] = \"16\";\r\n LogicEngineNodeType[\"dataTableRequest\"] = \"17\";\r\n LogicEngineNodeType[\"dataTableResponse\"] = \"18\";\r\n LogicEngineNodeType[\"fieldDataSource\"] = \"19\";\r\n LogicEngineNodeType[\"setDataTableFormValues\"] = \"20\";\r\n LogicEngineNodeType[\"text\"] = \"21\";\r\n LogicEngineNodeType[\"createSingleEntityItem\"] = \"22\";\r\n LogicEngineNodeType[\"updateSingleEntityItem\"] = \"23\";\r\n LogicEngineNodeType[\"deleteSingleEntityItem\"] = \"24\";\r\n LogicEngineNodeType[\"dateTime\"] = \"25\";\r\n LogicEngineNodeType[\"dataTableRequestFilter\"] = \"26\";\r\n LogicEngineNodeType[\"loadEntityItem\"] = \"27\";\r\n LogicEngineNodeType[\"createCaseFileDocument\"] = \"28\";\r\n LogicEngineNodeType[\"formDataSource\"] = \"29\";\r\n})(LogicEngineNodeType || (LogicEngineNodeType = {}));\r\n","import { LogicEngineNodeType } from \"./LogicEngineNodeType\";\r\nexport const LogicEngineNodeTypes = {\r\n aggregate: 'aggregate',\r\n and: 'and',\r\n and3: 'and3',\r\n and4: 'and4',\r\n and6: 'and6',\r\n boolean: 'boolean',\r\n code: 'code',\r\n conditionalAction: 'conditionalAction',\r\n conditionalRule: 'conditionalRule',\r\n containsRole: 'containsRole',\r\n countItems: 'countItems',\r\n dataTableColumnSelector: 'dataTableColumnSelector',\r\n divisionRule: 'divisionRule',\r\n entityAttribute: 'entityAttribute',\r\n equals: 'equals',\r\n fieldSelector: 'fieldSelector',\r\n filterItems: 'filterItems',\r\n formSelector: 'formSelector',\r\n greaterThan: 'greaterThan',\r\n init: 'init',\r\n lessThan: 'lessThan',\r\n multiplicationRule: 'multiplicationRule',\r\n notEquals: 'notEquals',\r\n number: 'number',\r\n openPanel: 'openPanel',\r\n or: 'or',\r\n or3: 'or3',\r\n or4: 'or4',\r\n or6: 'or6',\r\n panelType: 'panelType',\r\n percentage: 'percentage',\r\n result: 'result',\r\n select: 'select',\r\n dataTableFieldSelector: 'dataTableFieldSelector',\r\n string: 'string',\r\n sum: 'sum',\r\n sum3: 'sum3',\r\n uxContainer: 'uxContainer',\r\n uxLabel: 'uxLabel',\r\n uxLink: 'uxLink',\r\n uxLinkPanel: 'uxLinkPanel',\r\n dataTable: 'dataTable',\r\n currentForm: 'currentForm',\r\n consoleLog: 'consoleLog',\r\n saveForm: 'saveForm',\r\n closePanel: 'closePanel',\r\n showMessage: 'showMessage',\r\n showSuccessToast: 'showSuccessToast',\r\n refreshDataTable: 'refreshDataTable',\r\n buttonNode: 'buttonNode',\r\n setFieldValue: 'setFieldValue',\r\n comboBox: 'comboBox',\r\n sendEmail: 'sendEmail',\r\n updateForm: 'updateForm',\r\n eventType: 'eventType',\r\n loadForm: 'loadForm',\r\n queryString: 'queryString',\r\n createProcessInstanceVariable: 'createProcessInstanceVariable',\r\n openDialog: 'openDialog',\r\n updateInputFile: LogicEngineNodeType.updateInputFile,\r\n closeDialog: LogicEngineNodeType.closeDialog,\r\n redirect: LogicEngineNodeType.navigateTo,\r\n inputFile: LogicEngineNodeType.inputFile,\r\n contact: LogicEngineNodeType.contact,\r\n contactString: LogicEngineNodeType.contactString,\r\n setFormValues: LogicEngineNodeType.setFormValues,\r\n setCurrentFormValues: LogicEngineNodeType.setCurrentFormValues,\r\n scope: LogicEngineNodeType.scope,\r\n not: LogicEngineNodeType.not,\r\n readParameter: LogicEngineNodeType.readParameter,\r\n currentUser: LogicEngineNodeType.currentUser,\r\n fetch: LogicEngineNodeType.fetch,\r\n codeAction: LogicEngineNodeType.codeAction,\r\n sqlAction: LogicEngineNodeType.sqlAction,\r\n sqlRule: LogicEngineNodeType.sqlRule,\r\n dataTableRequest: LogicEngineNodeType.dataTableRequest,\r\n dataTableResponse: LogicEngineNodeType.dataTableResponse,\r\n setDataTableFormValues: LogicEngineNodeType.setDataTableFormValues,\r\n text: LogicEngineNodeType.text,\r\n createSingleEntityItem: LogicEngineNodeType.createSingleEntityItem,\r\n updateSingleEntityItem: LogicEngineNodeType.updateSingleEntityItem,\r\n deleteSingleEntityItem: LogicEngineNodeType.deleteSingleEntityItem,\r\n dateTime: LogicEngineNodeType.dateTime,\r\n dataTableRequestFilter: LogicEngineNodeType.dataTableRequestFilter,\r\n loadSingleEntityItem: LogicEngineNodeType.loadEntityItem,\r\n createCaseFileDocument: LogicEngineNodeType.createCaseFileDocument,\r\n fieldDataSource: LogicEngineNodeType.fieldDataSource,\r\n formDataSource: LogicEngineNodeType.formDataSource,\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _DataTableFieldSelectorNode_table, _DataTableFieldSelectorNode_fields, _DataTableFieldSelectorNode_row, _DataTableFieldSelectorNode_rows, _DataTableFieldSelectorNode_parseRow;\r\nimport { ArgumentNullException, isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport CDataTable from \"../../forms/DataTable/types/CDataTable\";\r\nimport DataTableRow from \"../../forms/DataTable/types/DataTableRow\";\r\nimport DataTableRowCollection from \"../../forms/DataTable/types/DataTableRowCollection\";\r\nimport { ControlType, DataType } from \"../../types\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { LogicEngineNodeTypes } from \"../@engine/LogicEngineNodeTypes\";\r\nimport { DataTableNode } from \"../datatable/DataTableNode\";\r\nexport class DataTableFieldSelectorNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _DataTableFieldSelectorNode_table.set(this, void 0);\r\n _DataTableFieldSelectorNode_fields.set(this, []);\r\n _DataTableFieldSelectorNode_row.set(this, void 0);\r\n _DataTableFieldSelectorNode_rows.set(this, void 0);\r\n _DataTableFieldSelectorNode_parseRow.set(this, (table, rows, connection) => {\r\n var _a, _b, _c;\r\n const fieldId = connection.sourceHandle;\r\n const result = [];\r\n __classPrivateFieldSet(this, _DataTableFieldSelectorNode_fields, [], \"f\");\r\n for (let i = 0; i < rows.length; i++) {\r\n const row = rows[i];\r\n if (table.hasCustomQuery) {\r\n const columns = (_a = table.columns.toArray()) !== null && _a !== void 0 ? _a : [];\r\n const formData = {};\r\n for (let j = 0; j < columns.length; j++) {\r\n const column = columns[j];\r\n const value = row.getValue(column.binding);\r\n formData[column.id] = value;\r\n }\r\n result.push(formData);\r\n }\r\n else {\r\n const dtForm = table.createFormInstance();\r\n if (__classPrivateFieldGet(this, _DataTableFieldSelectorNode_table, \"f\").controlType === ControlType.entityDataTable) {\r\n let fields = (_c = (_b = dtForm.fields) === null || _b === void 0 ? void 0 : _b.toArray()) !== null && _c !== void 0 ? _c : [];\r\n const formData = {};\r\n for (let j = 0; j < fields.length; j++) {\r\n const field = fields[j];\r\n if (!isNullOrEmpty(field.attributeCode)) {\r\n const value = row[field.attributeCode];\r\n formData[field.id] = value;\r\n }\r\n }\r\n const form = dtForm.clone({ values: formData, isUpdate: false, scope: this.engine.scope });\r\n const field = form.getField(fieldId);\r\n const value = field.value;\r\n result.push(value);\r\n }\r\n else {\r\n const form = dtForm.clone({ values: row, isUpdate: false, scope: this.engine.scope });\r\n const field = form.getField(fieldId);\r\n __classPrivateFieldGet(this, _DataTableFieldSelectorNode_fields, \"f\").push(field);\r\n const value = field.value;\r\n if (field instanceof CDataTable) {\r\n result.push(value !== null && value !== void 0 ? value : []);\r\n }\r\n else {\r\n result.push(value);\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n });\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get dataTable() {\r\n return __classPrivateFieldGet(this, _DataTableFieldSelectorNode_table, \"f\");\r\n }\r\n get fields() {\r\n return __classPrivateFieldGet(this, _DataTableFieldSelectorNode_fields, \"f\");\r\n }\r\n get field() {\r\n return __classPrivateFieldGet(this, _DataTableFieldSelectorNode_fields, \"f\")[0];\r\n }\r\n get row() {\r\n return __classPrivateFieldGet(this, _DataTableFieldSelectorNode_row, \"f\");\r\n }\r\n get rows() {\r\n return __classPrivateFieldGet(this, _DataTableFieldSelectorNode_rows, \"f\");\r\n }\r\n execute(caller, connection, deep) {\r\n var _a;\r\n ArgumentNullException.throwIfNull(caller, 'caller');\r\n ArgumentNullException.throwIfNull(connection, 'connection');\r\n const settings = {\r\n accept: [DataTableNode]\r\n };\r\n const { value: input } = this.executeInput(DataTableFieldSelectorNode.inputDataTable.id, deep + 1, settings);\r\n if (input == null)\r\n return null;\r\n if (input instanceof CDataTable) {\r\n const table = input.cast();\r\n __classPrivateFieldSet(this, _DataTableFieldSelectorNode_table, table, \"f\");\r\n const rows = (_a = table.value) !== null && _a !== void 0 ? _a : [];\r\n const result = __classPrivateFieldGet(this, _DataTableFieldSelectorNode_parseRow, \"f\").call(this, table, rows, connection);\r\n return result;\r\n }\r\n else if (input instanceof DataTableRowCollection) {\r\n const collection = input;\r\n const table = collection.table;\r\n __classPrivateFieldSet(this, _DataTableFieldSelectorNode_table, table, \"f\");\r\n __classPrivateFieldSet(this, _DataTableFieldSelectorNode_rows, collection, \"f\");\r\n return __classPrivateFieldGet(this, _DataTableFieldSelectorNode_parseRow, \"f\").call(this, table, collection.items, connection);\r\n }\r\n else if (input instanceof DataTableRow) {\r\n const table = input.table;\r\n __classPrivateFieldSet(this, _DataTableFieldSelectorNode_table, table, \"f\");\r\n __classPrivateFieldSet(this, _DataTableFieldSelectorNode_row, input, \"f\");\r\n const result = __classPrivateFieldGet(this, _DataTableFieldSelectorNode_parseRow, \"f\").call(this, table, [input], connection)[0];\r\n return result[connection.sourceHandle];\r\n }\r\n return null;\r\n }\r\n __table(caller, connection) {\r\n const [, inputNode] = this.getInputNode(DataTableFieldSelectorNode.inputDataTable.id);\r\n if (inputNode == null)\r\n return null;\r\n if (inputNode instanceof DataTableNode) {\r\n const dataTableNode = inputNode;\r\n const dataTable = dataTableNode.__table();\r\n if (dataTable == null)\r\n return null;\r\n return dataTable;\r\n }\r\n return null;\r\n }\r\n static allowConnection(sourceNodeType) {\r\n if (sourceNodeType === LogicEngineNodeTypes.dataTable)\r\n return true;\r\n return false;\r\n }\r\n}\r\n_DataTableFieldSelectorNode_table = new WeakMap(), _DataTableFieldSelectorNode_fields = new WeakMap(), _DataTableFieldSelectorNode_row = new WeakMap(), _DataTableFieldSelectorNode_rows = new WeakMap(), _DataTableFieldSelectorNode_parseRow = new WeakMap();\r\nDataTableFieldSelectorNode.inputDataTable = FlowNode.createHandle({\r\n id: 'inputDataTable',\r\n displayName: 'DataTable Ref',\r\n dataType: DataType.boolean\r\n});\r\n","import { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class NumberNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a;\r\n const value = (_a = this.schema.data.value) !== null && _a !== void 0 ? _a : this.schema.data.inputValue1;\r\n if (isNullOrEmpty(value))\r\n return 0;\r\n if (typeof value === 'number')\r\n return value;\r\n if (typeof value === 'string')\r\n return parseInt(value);\r\n return 0;\r\n }\r\n}\r\n","import { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class StringNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a;\r\n const result = (_a = this.schema.data.value) !== null && _a !== void 0 ? _a : '';\r\n this.writeLog(`[${StringNode.name}] ${result}`, deep, `color: white; background-color: ${NodeColors.string}`);\r\n return result;\r\n }\r\n}\r\nStringNode.outputHandleId = 'output';\r\n","import { ComparisonOperator } from \"../../core/types/ComparisonOperator\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { DataTableFieldSelectorNode } from \"../datatable-field-selector/DataTableFieldSelectorNode\";\r\nimport { NumberNode } from \"../number/NumberNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nexport class FilterItemsNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b;\r\n const list = (_a = this.getList(deep)) !== null && _a !== void 0 ? _a : [];\r\n const comparison = (_b = this.schema.data.comparisonId) !== null && _b !== void 0 ? _b : 0;\r\n const value = this.getValue(deep);\r\n const result = list.filter(x => {\r\n switch (comparison) {\r\n case ComparisonOperator.equals:\r\n return x == value;\r\n case ComparisonOperator.notEquals:\r\n return x != value;\r\n case ComparisonOperator.greaterThan:\r\n return x > value;\r\n case ComparisonOperator.greaterThanOrEquals:\r\n return x >= value;\r\n case ComparisonOperator.lessThan:\r\n return x < value;\r\n case ComparisonOperator.lessThanOrEquals:\r\n return x <= value;\r\n }\r\n return x[this.schema.data.fieldId] == value;\r\n });\r\n this.writeLog(`${FilterItemsNode}] ${result.length} items`, deep, `color: white; background-color: ${NodeColors.fieldSelector}`);\r\n return result;\r\n }\r\n getList(deep) {\r\n const settings = {\r\n accept: [DataTableFieldSelectorNode]\r\n };\r\n const { value } = this.executeInput(FilterItemsNode.inputList.id, deep + 1, settings);\r\n return value;\r\n }\r\n getValue(deep) {\r\n const settings = {\r\n accept: [StringNode, BooleanNode, NumberNode, DataTableFieldSelectorNode]\r\n };\r\n const { value: inputValue } = this.executeInput(FilterItemsNode.inputValue.id, deep + 1, settings);\r\n return inputValue;\r\n }\r\n}\r\nFilterItemsNode.inputList = {\r\n id: 'listInput',\r\n displayName: 'List'\r\n};\r\nFilterItemsNode.inputValue = {\r\n id: 'inputValue',\r\n displayName: 'Value'\r\n};\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { DataTableNode } from \"../datatable/DataTableNode\";\r\nimport { FilterItemsNode } from \"../filter-items/FilterItemsNode\";\r\nexport class CountItemsNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const value = this.getList(deep);\r\n if (value == null)\r\n return 0;\r\n if (!(value instanceof Array))\r\n throw new Error('The input value must be an array');\r\n let result = value.length;\r\n ;\r\n this.writeLog(`[CountItemsNode] ${result}`, deep, `color: white; background-color: ${NodeColors.number}`);\r\n return result;\r\n }\r\n getList(deep) {\r\n const settings = {\r\n accept: [DataTableNode, FilterItemsNode]\r\n };\r\n const { value } = this.executeInput('listInput', deep + 1, settings);\r\n return value;\r\n }\r\n}\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _FieldSelectorNode_controlRef;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class FieldSelectorNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _FieldSelectorNode_controlRef.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get ref() {\r\n return __classPrivateFieldGet(this, _FieldSelectorNode_controlRef, \"f\");\r\n }\r\n execute(caller, connection, deep) {\r\n const currentForm = this.engine.currentForm;\r\n if (currentForm == null) {\r\n console.warn(`[FieldSelectorNode] Field is null`);\r\n return null;\r\n }\r\n const field = currentForm.fields.firstOrDefault(x => x.id == this.schema.data.fieldId);\r\n __classPrivateFieldSet(this, _FieldSelectorNode_controlRef, field, \"f\");\r\n return field;\r\n }\r\n}\r\n_FieldSelectorNode_controlRef = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _PXConnector_args;\r\nexport class PXConnector {\r\n constructor(args) {\r\n _PXConnector_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _PXConnector_args, args, \"f\");\r\n }\r\n setValues(values) {\r\n var _a, _b;\r\n (_b = (_a = __classPrivateFieldGet(this, _PXConnector_args, \"f\")) === null || _a === void 0 ? void 0 : _a.onValuesChange) === null || _b === void 0 ? void 0 : _b.call(_a, values);\r\n }\r\n readObject() {\r\n var _a, _b;\r\n return (_b = (_a = __classPrivateFieldGet(this, _PXConnector_args, \"f\")) === null || _a === void 0 ? void 0 : _a.onReadObject) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n}\r\n_PXConnector_args = new WeakMap();\r\n","import { PXConnector } from \"../PXConnector\";\r\nexport class InputFileConnector extends PXConnector {\r\n constructor(props) {\r\n super(props);\r\n }\r\n}\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _InputFileNode_instances, _InputFileNode_connector, _InputFileNode_readProperty;\r\nimport { DataType } from \"../../types\";\r\nimport { InputFileConnector } from \"../@conectors/input-file/InputFileConnector\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class InputFileNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _InputFileNode_instances.add(this);\r\n _InputFileNode_connector.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep = 0) {\r\n if (__classPrivateFieldGet(this, _InputFileNode_connector, \"f\") == null) {\r\n const connector = this.getConnector(InputFileConnector);\r\n __classPrivateFieldSet(this, _InputFileNode_connector, connector, \"f\");\r\n }\r\n const sourceHandleId = connection.sourceHandle;\r\n const result = __classPrivateFieldGet(this, _InputFileNode_instances, \"m\", _InputFileNode_readProperty).call(this, sourceHandleId);\r\n return result;\r\n }\r\n}\r\n_InputFileNode_connector = new WeakMap(), _InputFileNode_instances = new WeakSet(), _InputFileNode_readProperty = function _InputFileNode_readProperty(sourceHandleId) {\r\n var _a;\r\n const object = (_a = __classPrivateFieldGet(this, _InputFileNode_connector, \"f\")) === null || _a === void 0 ? void 0 : _a.readObject();\r\n if (object == null)\r\n return null;\r\n switch (sourceHandleId) {\r\n case InputFileNode.$subject.id:\r\n return object.subject;\r\n case InputFileNode.$administrativeProcedureId.id:\r\n return object.administrativeProcedureId;\r\n case InputFileNode.$pqrsClassificationId.id:\r\n return object.pqrsClassificationId;\r\n case InputFileNode.$contactId.id:\r\n return object.contactId;\r\n case InputFileNode.$contactFirstName.id:\r\n return object.contactFirstName;\r\n case InputFileNode.$contactLastName.id:\r\n return object.contactLastName;\r\n case InputFileNode.$contactEmail.id:\r\n return object.contactEmail;\r\n case InputFileNode.$contactPhoneNumber.id:\r\n return object.contactPhoneNumber;\r\n case InputFileNode.$contactAddress.id:\r\n return object.contactAddress;\r\n case InputFileNode.$contactIdentificationTypeId.id:\r\n return object.contactIdentificationType;\r\n case InputFileNode.$contactIdentificationNumber.id:\r\n return object.contactIdentificationNumber;\r\n case InputFileNode.$contactProfessionId.id:\r\n return object.contactProfessionId;\r\n case InputFileNode.$contactTypeId.id:\r\n return object.contactTypeId;\r\n case InputFileNode.$statusId.id:\r\n return object.statusId;\r\n default:\r\n throw new Error(`Invalid source handle ID: ${sourceHandleId}`);\r\n }\r\n};\r\nInputFileNode.$subject = FlowNode.createHandle({ id: '1', displayName: 'Subject', dataType: DataType.string });\r\nInputFileNode.$administrativeProcedureId = FlowNode.createHandle({ id: '2', displayName: 'Administrative procedure', dataType: DataType.int });\r\nInputFileNode.$pqrsClassificationId = FlowNode.createHandle({ id: '3', displayName: 'PQRS Classification', dataType: DataType.int });\r\nInputFileNode.$contactId = FlowNode.createHandle({ id: '4', displayName: 'Cotact ID', dataType: DataType.int });\r\nInputFileNode.$contactFirstName = FlowNode.createHandle({ id: '5', displayName: 'First Name', dataType: DataType.string });\r\nInputFileNode.$contactLastName = FlowNode.createHandle({ id: '6', displayName: 'Last Name', dataType: DataType.string });\r\nInputFileNode.$contactEmail = FlowNode.createHandle({ id: '7', displayName: 'Email', dataType: DataType.string });\r\nInputFileNode.$contactPhoneNumber = FlowNode.createHandle({ id: '8', displayName: 'Phone Number', dataType: DataType.string });\r\nInputFileNode.$contactAddress = FlowNode.createHandle({ id: '9', displayName: 'Address', dataType: DataType.int });\r\nInputFileNode.$contactIdentificationTypeId = FlowNode.createHandle({ id: '10', displayName: 'Identification Type', dataType: DataType.int });\r\nInputFileNode.$contactIdentificationNumber = FlowNode.createHandle({ id: '11', displayName: 'Identification Number', dataType: DataType.int });\r\nInputFileNode.$contactProfessionId = FlowNode.createHandle({ id: '12', displayName: 'Profession', dataType: DataType.int });\r\nInputFileNode.$contactTypeId = FlowNode.createHandle({ id: '13', displayName: 'Contact Type', dataType: DataType.int });\r\nInputFileNode.$statusId = FlowNode.createHandle({ id: '14', displayName: 'Status', dataType: DataType.int });\r\n","import { PXConnector } from \"../PXConnector\";\r\nexport class ParameterConnector extends PXConnector {\r\n constructor(props) {\r\n super(props);\r\n }\r\n}\r\n","import { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { ParameterConnector } from \"../@conectors/input-file/ParameterConnector\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class ReadParameterNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute() {\r\n var _a;\r\n const key = (_a = this.schema.data.value) !== null && _a !== void 0 ? _a : '';\r\n if (isNullOrEmpty(key))\r\n return null;\r\n const connector = this.getConnector(ParameterConnector);\r\n const value = connector === null || connector === void 0 ? void 0 : connector.readObject();\r\n if (value == null)\r\n return null;\r\n return value[key];\r\n }\r\n}\r\nReadParameterNode.outputHandle = 'output';\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class ScopeNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n return this.engine.scope;\r\n }\r\n}\r\nScopeNode.outputHandle = 'output';\r\n","var _a;\r\nimport { CForm } from \"../../forms/Form/CForm\";\r\nimport CControl from \"../../forms/Control/CControl\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { ComboBoxNode } from \"../combobox/ComboBoxNode\";\r\nimport { CountItemsNode } from \"../count/CountItemsNode\";\r\nimport { CurrentFormNode } from \"../current-form/CurrentFormNode\";\r\nimport { DataTableFieldSelectorNode } from \"../datatable-field-selector/DataTableFieldSelectorNode\";\r\nimport { FieldSelectorNode } from \"../field-selector/FieldSelectorNode\";\r\nimport { InputFileNode } from \"../input-file/InputFileNode\";\r\nimport { NumberNode } from \"../number/NumberNode\";\r\nimport { ReadParameterNode } from \"../read-parameter/ReadParameterNode\";\r\nimport { ScopeNode } from \"../scope/ScopeNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nexport class EqualsNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const value1 = this.getInputValue(EqualsNode.$input1.id, deep + 1);\r\n const value2 = this.getInputValue(EqualsNode.$input2.id, deep + 1);\r\n if (value1 == null && value2 != null)\r\n return false;\r\n if (value1 != null && value2 == null)\r\n return false;\r\n const result = value1 == value2;\r\n return result;\r\n }\r\n getInputValue(handleId, deep) {\r\n const settings = {\r\n accept: [\r\n FieldSelectorNode,\r\n NumberNode,\r\n StringNode,\r\n BooleanNode,\r\n CurrentFormNode,\r\n CountItemsNode,\r\n ComboBoxNode,\r\n ScopeNode,\r\n ReadParameterNode,\r\n InputFileNode,\r\n DataTableFieldSelectorNode\r\n ],\r\n preprocessors: [\r\n createPreprocessor(CControl, (node) => {\r\n return node.value;\r\n }),\r\n createPreprocessor(CForm, (node, edge) => {\r\n const field = node.getField(edge.sourceHandle);\r\n return field === null || field === void 0 ? void 0 : field.value;\r\n })\r\n ]\r\n };\r\n const { value } = this.executeInput(handleId, deep + 1, settings);\r\n return value;\r\n }\r\n}\r\n_a = EqualsNode;\r\nEqualsNode.$input1 = _a.createHandle({ id: 'input1', displayName: 'Value 1' });\r\nEqualsNode.$input2 = _a.createHandle({ id: 'input2', displayName: 'Value 2' });\r\nEqualsNode.executeOnServer = true;\r\nEqualsNode.executeOnClient = true;\r\nEqualsNode.title = 'Equals';\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class ComparisonNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n getValue(handleId, deep) {\r\n const [inputEdge, inputNode] = this.getInputNode(handleId);\r\n if (inputNode == null)\r\n return null;\r\n const result = inputNode.execute(this, inputEdge, deep + 1);\r\n return result;\r\n }\r\n}\r\nComparisonNode.input1HandleId = 'input1';\r\nComparisonNode.input2HandleId = 'input2';\r\nComparisonNode.outputHandleId = 'output';\r\n","import { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { ComparisonNode } from \"../comparison/ComparisonNode\";\r\nexport class GreaterThanNode extends ComparisonNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b;\r\n const value1 = (_a = this.getValue(GreaterThanNode.input1HandleId, deep)) !== null && _a !== void 0 ? _a : 0;\r\n const value2 = (_b = this.getValue(GreaterThanNode.input2HandleId, deep)) !== null && _b !== void 0 ? _b : 0;\r\n if (typeof value1 !== 'number' || typeof value2 !== 'number') {\r\n console.warn(`[${GreaterThanNode.name}] values are not numbers`);\r\n return false;\r\n }\r\n const result = value1 > value2;\r\n this.writeLog(`[${GreaterThanNode.name}] ${value1} > ${value2} = ${result}`, deep, `color: white; background-color: ${NodeColors.fieldSelector}`);\r\n return result;\r\n }\r\n}\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _LessThanNode_instances, _LessThanNode_getInputValue;\r\nimport { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { ComparisonNode } from \"../comparison/ComparisonNode\";\r\nimport CControl from \"../../forms/Control/CControl\";\r\nexport class LessThanNode extends ComparisonNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _LessThanNode_instances.add(this);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const value1 = __classPrivateFieldGet(this, _LessThanNode_instances, \"m\", _LessThanNode_getInputValue).call(this, LessThanNode.input1HandleId, deep);\r\n const value2 = __classPrivateFieldGet(this, _LessThanNode_instances, \"m\", _LessThanNode_getInputValue).call(this, LessThanNode.input2HandleId, deep);\r\n if (typeof value1 !== 'number' || typeof value2 !== 'number') {\r\n console.warn(`[${LessThanNode.name}] values are not numbers`);\r\n return false;\r\n }\r\n const result = value1 < value2;\r\n this.writeLog(`[${LessThanNode.name}] ${value1} < ${value2} = ${result}`, deep, `color: white; background-color: ${NodeColors.fieldSelector}`);\r\n return result;\r\n }\r\n}\r\n_LessThanNode_instances = new WeakSet(), _LessThanNode_getInputValue = function _LessThanNode_getInputValue(handleId, deep) {\r\n const { value } = this.executeInput(handleId, deep);\r\n if (value instanceof CControl)\r\n return value.value;\r\n if (typeof value === 'number')\r\n return value;\r\n return null;\r\n};\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class NotEqualsNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b;\r\n const [inputEdge1, inputNode1] = this.getInputNode('input1');\r\n const [inputEdge2, inputNode2] = this.getInputNode('input2');\r\n const input1 = (_a = inputNode1 === null || inputNode1 === void 0 ? void 0 : inputNode1.execute(this, inputEdge1, deep + 1)) !== null && _a !== void 0 ? _a : this.schema.data.inputValue1;\r\n const input2 = (_b = inputNode2 === null || inputNode2 === void 0 ? void 0 : inputNode2.execute(this, inputEdge2, deep + 1)) !== null && _b !== void 0 ? _b : this.schema.data.inputValue2;\r\n const result = input1 != input2;\r\n return result;\r\n }\r\n}\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nexport class NotNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const settings = { accept: [BooleanNode] };\r\n const { value } = this.executeInput(NotNode.input, deep + 1, settings);\r\n return value;\r\n }\r\n}\r\nNotNode.output = \"output\";\r\nNotNode.input = \"input\";\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class Or2Node extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b;\r\n const [, input1] = this.getInputNode('input1');\r\n const [, input2] = this.getInputNode('input2');\r\n const value1 = (_a = input1 === null || input1 === void 0 ? void 0 : input1.execute(this, null, deep + 1)) !== null && _a !== void 0 ? _a : false;\r\n const value2 = (_b = input2 === null || input2 === void 0 ? void 0 : input2.execute(this, null, deep + 1)) !== null && _b !== void 0 ? _b : false;\r\n const result = value1 || value2 || false;\r\n return result;\r\n }\r\n}\r\nexport class Or3Node extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b, _c;\r\n const [, input1] = this.getInputNode('input1');\r\n const [, input2] = this.getInputNode('input2');\r\n const [, input3] = this.getInputNode('input3');\r\n const value1 = (_a = input1 === null || input1 === void 0 ? void 0 : input1.execute(this, null, deep + 1)) !== null && _a !== void 0 ? _a : false;\r\n const value2 = (_b = input2 === null || input2 === void 0 ? void 0 : input2.execute(this, null, deep + 1)) !== null && _b !== void 0 ? _b : false;\r\n const value3 = (_c = input3 === null || input3 === void 0 ? void 0 : input3.execute(this, null, deep + 1)) !== null && _c !== void 0 ? _c : false;\r\n const result = value1 || value2 || value3 || false;\r\n return result;\r\n }\r\n}\r\nexport class Or4Node extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b, _c, _d;\r\n const [, input1] = this.getInputNode('input1');\r\n const [, input2] = this.getInputNode('input2');\r\n const [, input3] = this.getInputNode('input3');\r\n const [, input4] = this.getInputNode('input4');\r\n const value1 = (_a = input1 === null || input1 === void 0 ? void 0 : input1.execute(this, null, deep + 1)) !== null && _a !== void 0 ? _a : false;\r\n const value2 = (_b = input2 === null || input2 === void 0 ? void 0 : input2.execute(this, null, deep + 1)) !== null && _b !== void 0 ? _b : false;\r\n const value3 = (_c = input3 === null || input3 === void 0 ? void 0 : input3.execute(this, null, deep + 1)) !== null && _c !== void 0 ? _c : false;\r\n const value4 = (_d = input4 === null || input4 === void 0 ? void 0 : input4.execute(this, null, deep + 1)) !== null && _d !== void 0 ? _d : false;\r\n const result = value1 || value2 || value3 || value4 || false;\r\n return result;\r\n }\r\n}\r\nexport class Or6Node extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const [, input1] = this.getInputNode('input1');\r\n const [, input2] = this.getInputNode('input2');\r\n const [, input3] = this.getInputNode('input3');\r\n const [, input4] = this.getInputNode('input4');\r\n const [, input5] = this.getInputNode('input5');\r\n const [, input6] = this.getInputNode('input6');\r\n const value1 = (_a = input1 === null || input1 === void 0 ? void 0 : input1.execute(this, null, deep + 1)) !== null && _a !== void 0 ? _a : false;\r\n const value2 = (_b = input2 === null || input2 === void 0 ? void 0 : input2.execute(this, null, deep + 1)) !== null && _b !== void 0 ? _b : false;\r\n const value3 = (_c = input3 === null || input3 === void 0 ? void 0 : input3.execute(this, null, deep + 1)) !== null && _c !== void 0 ? _c : false;\r\n const value4 = (_d = input4 === null || input4 === void 0 ? void 0 : input4.execute(this, null, deep + 1)) !== null && _d !== void 0 ? _d : false;\r\n const value5 = (_e = input5 === null || input5 === void 0 ? void 0 : input5.execute(this, null, deep + 1)) !== null && _e !== void 0 ? _e : false;\r\n const value6 = (_f = input6 === null || input6 === void 0 ? void 0 : input6.execute(this, null, deep + 1)) !== null && _f !== void 0 ? _f : false;\r\n const result = value1 || value2 || value3 || value4 || value5 || value6 || false;\r\n return result;\r\n }\r\n}\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _ButtonRef_args, _ButtonRef_onChanged;\r\nexport class ButtonRef {\r\n constructor(props) {\r\n _ButtonRef_args.set(this, void 0);\r\n _ButtonRef_onChanged.set(this, void 0);\r\n __classPrivateFieldSet(this, _ButtonRef_args, props, \"f\");\r\n }\r\n get text() {\r\n return __classPrivateFieldGet(this, _ButtonRef_args, \"f\").text;\r\n }\r\n get validateForm() {\r\n return __classPrivateFieldGet(this, _ButtonRef_args, \"f\").validateForm;\r\n }\r\n get visible() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _ButtonRef_args, \"f\").visible) !== null && _a !== void 0 ? _a : false;\r\n }\r\n set visible(value) {\r\n var _a;\r\n __classPrivateFieldGet(this, _ButtonRef_args, \"f\").visible = value;\r\n (_a = __classPrivateFieldGet(this, _ButtonRef_onChanged, \"f\")) === null || _a === void 0 ? void 0 : _a.call(this);\r\n }\r\n get disabled() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _ButtonRef_args, \"f\").disabled) !== null && _a !== void 0 ? _a : false;\r\n }\r\n set disabled(value) {\r\n var _a;\r\n __classPrivateFieldGet(this, _ButtonRef_args, \"f\").disabled = value;\r\n (_a = __classPrivateFieldGet(this, _ButtonRef_onChanged, \"f\")) === null || _a === void 0 ? void 0 : _a.call(this);\r\n }\r\n invokeOnClick() {\r\n __classPrivateFieldGet(this, _ButtonRef_args, \"f\").onClick();\r\n }\r\n set onChanged(value) {\r\n __classPrivateFieldSet(this, _ButtonRef_onChanged, value, \"f\");\r\n }\r\n}\r\n_ButtonRef_args = new WeakMap(), _ButtonRef_onChanged = new WeakMap();\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { EqualsNode } from \"../equals/EqualsNode\";\r\nimport { GreaterThanNode } from \"../greather-than/GreaterThanNode\";\r\nimport { InputFileNode } from \"../input-file/InputFileNode\";\r\nimport { LessThanNode } from \"../less-than/LessThanNode\";\r\nimport { NotEqualsNode } from \"../not-equals/NotEqualsNode\";\r\nimport { NotNode } from \"../not/NotNode\";\r\nimport { Or2Node, Or3Node, Or4Node, Or6Node } from \"../or/OrNode\";\r\nexport class And2Node extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const value1 = this.getInputValue('input1', deep) || false;\r\n const value2 = this.getInputValue('input2', deep) || false;\r\n const result = value1 && value2;\r\n return result;\r\n }\r\n getInputValue(handleId, deep) {\r\n const settings = {\r\n accept: [\r\n EqualsNode,\r\n BooleanNode,\r\n GreaterThanNode,\r\n LessThanNode,\r\n NotNode,\r\n NotEqualsNode,\r\n And2Node,\r\n And3Node,\r\n And4Node,\r\n And6Node,\r\n Or2Node,\r\n Or3Node,\r\n Or4Node,\r\n Or6Node,\r\n InputFileNode\r\n ]\r\n };\r\n const { value } = this.executeInput(handleId.toString(), deep + 1, settings);\r\n return value;\r\n }\r\n}\r\nexport class And3Node extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b, _c;\r\n const [, input1] = this.getInputNode('input1');\r\n const [, input2] = this.getInputNode('input2');\r\n const [, input3] = this.getInputNode('input3');\r\n const value1 = (_a = input1 === null || input1 === void 0 ? void 0 : input1.execute(this, null, deep + 1)) !== null && _a !== void 0 ? _a : false;\r\n const value2 = (_b = input2 === null || input2 === void 0 ? void 0 : input2.execute(this, null, deep + 1)) !== null && _b !== void 0 ? _b : false;\r\n const value3 = (_c = input3 === null || input3 === void 0 ? void 0 : input3.execute(this, null, deep + 1)) !== null && _c !== void 0 ? _c : false;\r\n const result = value1 && value2 && value3 && false;\r\n return result;\r\n }\r\n}\r\nexport class And4Node extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b, _c, _d;\r\n const [, input1] = this.getInputNode('input1');\r\n const [, input2] = this.getInputNode('input2');\r\n const [, input3] = this.getInputNode('input3');\r\n const [, input4] = this.getInputNode('input4');\r\n const value1 = (_a = input1 === null || input1 === void 0 ? void 0 : input1.execute(this, null, deep + 1)) !== null && _a !== void 0 ? _a : false;\r\n const value2 = (_b = input2 === null || input2 === void 0 ? void 0 : input2.execute(this, null, deep + 1)) !== null && _b !== void 0 ? _b : false;\r\n const value3 = (_c = input3 === null || input3 === void 0 ? void 0 : input3.execute(this, null, deep + 1)) !== null && _c !== void 0 ? _c : false;\r\n const value4 = (_d = input4 === null || input4 === void 0 ? void 0 : input4.execute(this, null, deep + 1)) !== null && _d !== void 0 ? _d : false;\r\n const result = value1 && value2 && value3 && value4 && false;\r\n return result;\r\n }\r\n}\r\nexport class And6Node extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const [, input1] = this.getInputNode('input1');\r\n const [, input2] = this.getInputNode('input2');\r\n const [, input3] = this.getInputNode('input3');\r\n const [, input4] = this.getInputNode('input4');\r\n const [, input5] = this.getInputNode('input5');\r\n const [, input6] = this.getInputNode('input6');\r\n const value1 = (_a = input1 === null || input1 === void 0 ? void 0 : input1.execute(this, null, deep + 1)) !== null && _a !== void 0 ? _a : false;\r\n const value2 = (_b = input2 === null || input2 === void 0 ? void 0 : input2.execute(this, null, deep + 1)) !== null && _b !== void 0 ? _b : false;\r\n const value3 = (_c = input3 === null || input3 === void 0 ? void 0 : input3.execute(this, null, deep + 1)) !== null && _c !== void 0 ? _c : false;\r\n const value4 = (_d = input4 === null || input4 === void 0 ? void 0 : input4.execute(this, null, deep + 1)) !== null && _d !== void 0 ? _d : false;\r\n const value5 = (_e = input5 === null || input5 === void 0 ? void 0 : input5.execute(this, null, deep + 1)) !== null && _e !== void 0 ? _e : false;\r\n const value6 = (_f = input6 === null || input6 === void 0 ? void 0 : input6.execute(this, null, deep + 1)) !== null && _f !== void 0 ? _f : false;\r\n const result = value1 && value2 && value3 && value4 && value5 && value6 && false;\r\n return result;\r\n }\r\n}\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _ButtonNode_ref;\r\nimport { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { FormSelectorNode } from \"../form-selector/FormSelectorNode\";\r\nimport { NotNode } from \"../not/NotNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nimport { ButtonRef } from \"./ButtonRef\";\r\nexport class ButtonNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _ButtonNode_ref.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const { value: textValue } = this.executeInput(ButtonNode.textHandle, deep + 1, {\r\n accept: [StringNode]\r\n });\r\n const { edge: visibleEdge, value: visibleValue } = this.executeInput(ButtonNode.visibleHandle, deep + 1, {\r\n accept: [BooleanNode, NotNode],\r\n preprocessors: [\r\n createPreprocessor(FormSelectorNode, (node, edge) => {\r\n var _a;\r\n if (node.formRef != null) {\r\n const field = node.formRef.getField(edge.sourceHandle);\r\n if (field != null) {\r\n return field.subscribe(() => this.$___onVisibleChanged(field));\r\n }\r\n return (_a = field === null || field === void 0 ? void 0 : field.value) !== null && _a !== void 0 ? _a : false;\r\n }\r\n })\r\n ]\r\n });\r\n const { edge: disabledEdge, value: disabledValue } = this.executeInput(ButtonNode.disabledHandle, deep + 1, {\r\n accept: [BooleanNode, NotNode],\r\n preprocessors: [\r\n createPreprocessor(FormSelectorNode, (node, edge) => {\r\n var _a;\r\n if (node.formRef != null) {\r\n const field = node.formRef.getField(edge.sourceHandle);\r\n if (field != null) {\r\n return field.subscribe(() => this.$___onDisabledChanged(field));\r\n }\r\n return (_a = field === null || field === void 0 ? void 0 : field.value) !== null && _a !== void 0 ? _a : false;\r\n }\r\n })\r\n ]\r\n });\r\n const { edge: enabledEdge, value: enabledValue } = this.executeInput(ButtonNode.enabledHandle, deep + 1, {\r\n accept: [BooleanNode, NotNode],\r\n preprocessors: [\r\n createPreprocessor(FormSelectorNode, (node, edge) => {\r\n var _a;\r\n if (node.formRef != null) {\r\n const field = node.formRef.getField(edge.sourceHandle);\r\n if (field != null) {\r\n return field.subscribe(() => this.$___onEnabledChanged(field));\r\n }\r\n return (_a = field === null || field === void 0 ? void 0 : field.value) !== null && _a !== void 0 ? _a : false;\r\n }\r\n })\r\n ]\r\n });\r\n if (disabledEdge != null && enabledEdge != null)\r\n throw new Error(\"Only one of the two values (disabled or enabled) can be defined\");\r\n const disabled = disabledEdge != null ? disabledValue : enabledEdge != null ? !enabledValue : false;\r\n const text = isNullOrEmpty(textValue) ? this.schema.data.text : textValue;\r\n __classPrivateFieldSet(this, _ButtonNode_ref, new ButtonRef({\r\n key: this.id,\r\n text: text,\r\n onClick: () => this.executeOutput(ButtonNode.nextHandle, deep),\r\n visible: visibleEdge != null ? visibleValue : true,\r\n disabled: disabled,\r\n validateForm: false\r\n }), \"f\");\r\n return __classPrivateFieldGet(this, _ButtonNode_ref, \"f\");\r\n }\r\n $___onVisibleChanged(field) {\r\n __classPrivateFieldGet(this, _ButtonNode_ref, \"f\").visible = field.value;\r\n }\r\n $___onDisabledChanged(field) {\r\n __classPrivateFieldGet(this, _ButtonNode_ref, \"f\").disabled = field.value;\r\n }\r\n $___onEnabledChanged(field) {\r\n __classPrivateFieldGet(this, _ButtonNode_ref, \"f\").disabled = !field.value;\r\n }\r\n}\r\n_ButtonNode_ref = new WeakMap();\r\nButtonNode.textHandle = \"text\";\r\nButtonNode.visibleHandle = \"visible\";\r\nButtonNode.disabledHandle = \"disabled\";\r\nButtonNode.enabledHandle = \"enabled\";\r\nButtonNode.nextHandle = \"next\";\r\nButtonNode.refHandle = \"ref\";\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _a, _LoadFormNode_ref, _LoadFormNode_data;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { LogicEngineNodeTypes } from \"../@engine/LogicEngineNodeTypes\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { DataTableFieldSelectorNode } from \"../datatable-field-selector/DataTableFieldSelectorNode\";\r\nimport { FormSelectorNode } from \"../form-selector/FormSelectorNode\";\r\nimport { NumberNode } from \"../number/NumberNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nexport class LoadFormNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _LoadFormNode_ref.set(this, void 0);\r\n _LoadFormNode_data.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get ref() {\r\n return __classPrivateFieldGet(this, _LoadFormNode_ref, \"f\");\r\n }\r\n get data() {\r\n return __classPrivateFieldGet(this, _LoadFormNode_data, \"f\");\r\n }\r\n execute(caller, connection, deep = 0) {\r\n const { value: form } = this.executeInput(LoadFormNode.$formId.id, deep + 1, { accept: [FormSelectorNode] });\r\n const { value: itemId } = this.executeInput(LoadFormNode.$itemId.id, deep + 1, { accept: [NumberNode, StringNode, DataTableFieldSelectorNode] });\r\n const { value: readonly } = this.executeInput(LoadFormNode.$readonly.id, deep + 1, { accept: [BooleanNode] });\r\n const argumentsAccetedTypes = [StringNode, NumberNode, BooleanNode, DataTableFieldSelectorNode];\r\n const { value: paramA } = this.executeInput(LoadFormNode.$paramA.id, deep + 1, { accept: argumentsAccetedTypes });\r\n const { value: paramB } = this.executeInput(LoadFormNode.$paramB.id, deep + 1, { accept: argumentsAccetedTypes });\r\n const { value: paramC } = this.executeInput(LoadFormNode.$paramC.id, deep + 1, { accept: argumentsAccetedTypes });\r\n const { value: paramD } = this.executeInput(LoadFormNode.$paramD.id, deep + 1, { accept: argumentsAccetedTypes });\r\n const args = { paramA, paramB, paramC, paramD };\r\n __classPrivateFieldSet(this, _LoadFormNode_ref, form, \"f\");\r\n __classPrivateFieldGet(this, _LoadFormNode_ref, \"f\").onLoadPageDataArgs = args;\r\n this.engine.currentForm.runtime.getPageDataV2Async(form.objectId, itemId, args).then(data => {\r\n var _b, _c;\r\n __classPrivateFieldSet(this, _LoadFormNode_data, data, \"f\");\r\n __classPrivateFieldGet(this, _LoadFormNode_ref, \"f\").values = data;\r\n __classPrivateFieldGet(this, _LoadFormNode_ref, \"f\").readonly = readonly !== null && readonly !== void 0 ? readonly : false;\r\n __classPrivateFieldGet(this, _LoadFormNode_ref, \"f\").itemId = (_c = data[(_b = __classPrivateFieldGet(this, _LoadFormNode_ref, \"f\").keyField) === null || _b === void 0 ? void 0 : _b.id]) !== null && _c !== void 0 ? _c : itemId;\r\n this.executeOutput(LoadFormNode.$next.id, deep + 1);\r\n }).catch(x => {\r\n console.error(x);\r\n });\r\n }\r\n get __form() {\r\n const [, inputFormNode] = this.getInputNode(LoadFormNode.$formId.id);\r\n if (inputFormNode instanceof FormSelectorNode) {\r\n return inputFormNode.$form;\r\n }\r\n return null;\r\n }\r\n static allowConnection(sourceNodeType) {\r\n return sourceNodeType === LogicEngineNodeTypes.formSelector;\r\n }\r\n}\r\n_a = LoadFormNode, _LoadFormNode_ref = new WeakMap(), _LoadFormNode_data = new WeakMap();\r\nLoadFormNode.title = 'Load form';\r\nLoadFormNode.type = 'loadForm';\r\nLoadFormNode.executeOnClient = true;\r\nLoadFormNode.executeOnServer = false;\r\nLoadFormNode.$trigger = _a.createHandle({ id: 'inputTrigger', displayName: 'Trigger' });\r\nLoadFormNode.$next = _a.createHandle({ id: 'next', displayName: 'Next' });\r\nLoadFormNode.$formId = _a.createHandle({ id: 'formId', displayName: 'Form' });\r\nLoadFormNode.$itemId = _a.createHandle({ id: 'itemId', displayName: 'ItemId' });\r\nLoadFormNode.$ref = _a.createHandle({ id: 'ref', displayName: 'Form Ref' });\r\nLoadFormNode.$readonly = _a.createHandle({ id: 'readonly', displayName: 'ReadOnly' });\r\nLoadFormNode.$paramA = _a.createHandle({ id: 'paramA', displayName: 'A' });\r\nLoadFormNode.$paramB = _a.createHandle({ id: 'paramB', displayName: 'B' });\r\nLoadFormNode.$paramC = _a.createHandle({ id: 'paramC', displayName: 'C' });\r\nLoadFormNode.$paramD = _a.createHandle({ id: 'paramD', displayName: 'D' });\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _OpenDialogNode_ref, _OpenDialogNode_button1, _OpenDialogNode_button2;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { ButtonNode } from \"../button/ButtonNode\";\r\nimport { FormSelectorNode } from \"../form-selector/FormSelectorNode\";\r\nimport { LoadFormNode } from \"../load-form/LoadFormNode\";\r\nexport class OpenDialogNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _OpenDialogNode_ref.set(this, void 0);\r\n _OpenDialogNode_button1.set(this, void 0);\r\n _OpenDialogNode_button2.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get ref() {\r\n return __classPrivateFieldGet(this, _OpenDialogNode_ref, \"f\");\r\n }\r\n execute(caller, connection, deep) {\r\n const { value: form } = this.executeInput(OpenDialogNode.formIdHandle, deep, {\r\n accept: OpenDialogNode.accept\r\n });\r\n if (form == null)\r\n throw new Error(\"Form not found\");\r\n const { value: button1 } = this.executeInput(OpenDialogNode.button1Handle, deep, { accept: [ButtonNode] });\r\n const buttons = [];\r\n if (button1 != null) {\r\n buttons.push(button1);\r\n __classPrivateFieldSet(this, _OpenDialogNode_button1, button1, \"f\");\r\n }\r\n const { value: button2 } = this.executeInput(OpenDialogNode.button2Handle, deep, { accept: [ButtonNode] });\r\n if (button2 != null) {\r\n buttons.push(button2);\r\n __classPrivateFieldSet(this, _OpenDialogNode_button2, button2, \"f\");\r\n }\r\n __classPrivateFieldSet(this, _OpenDialogNode_ref, this.engine.openDialog({\r\n form,\r\n onAccept: () => {\r\n this.executeOutput(OpenDialogNode.button1Handle, deep);\r\n },\r\n onCancel: () => {\r\n this.executeOutput(OpenDialogNode.button2Handle, deep);\r\n },\r\n title: form.title,\r\n buttons\r\n }), \"f\");\r\n this.executeOutput(OpenDialogNode.nextHandle, deep);\r\n }\r\n}\r\n_OpenDialogNode_ref = new WeakMap(), _OpenDialogNode_button1 = new WeakMap(), _OpenDialogNode_button2 = new WeakMap();\r\nOpenDialogNode.triggerHandle = 'trigger';\r\nOpenDialogNode.formIdHandle = 'formId';\r\nOpenDialogNode.formRefHandle = 'ref';\r\nOpenDialogNode.nextHandle = 'next';\r\nOpenDialogNode.button1Handle = 'button1';\r\nOpenDialogNode.button2Handle = 'button2';\r\nOpenDialogNode.accept = [FormSelectorNode, LoadFormNode];\r\n","var _CloseDialogNode_form;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { OpenDialogNode } from \"../open-dialog/OpenDialogNode\";\r\nexport class CloseDialogNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _CloseDialogNode_form.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const { value: dialogRef } = this.executeInput(CloseDialogNode.inputPanelHandle, deep + 1, {\r\n preprocessors: [\r\n createPreprocessor(OpenDialogNode, node => {\r\n if (node.ref == null)\r\n throw new Error(\"Dialog reference not found\");\r\n node.ref.close();\r\n })\r\n ]\r\n });\r\n this.executeOutput(CloseDialogNode.nextHandle, deep);\r\n }\r\n}\r\n_CloseDialogNode_form = new WeakMap();\r\nCloseDialogNode.triggerHandle = \"trigger\";\r\nCloseDialogNode.inputPanelHandle = \"dialogRef\";\r\nCloseDialogNode.nextHandle = \"next\";\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { NodeColors } from \"../@core/FlowNodeConstants\";\r\nexport class PanelTypeNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const result = this.schema.data.value;\r\n this.writeLog(`[${PanelTypeNode.name}] ${result}`, deep, `color: white; background-color: ${NodeColors.string}`);\r\n return result;\r\n }\r\n}\r\nPanelTypeNode.outputHandleId = 'output';\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _OpenPanelNode_instances, _OpenPanelNode_formRef, _OpenPanelNode_panelRef, _OpenPanelNode_panelType, _OpenPanelNode_title, _OpenPanelNode_showAcceptButton, _OpenPanelNode_customButton1, _OpenPanelNode_customButton2, _OpenPanelNode_customButton3, _OpenPanelNode_mapFields, _OpenPanelNode_mapButtons;\r\nimport { Guid } from \"@ioip/core/lib\";\r\nimport { ControlType } from \"../../types\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { ButtonNode } from \"../button/ButtonNode\";\r\nimport { CurrentFormNode } from \"../current-form/CurrentFormNode\";\r\nimport { DataTableFieldSelectorNode } from \"../datatable-field-selector/DataTableFieldSelectorNode\";\r\nimport { FormSelectorNode } from \"../form-selector/FormSelectorNode\";\r\nimport { LoadFormNode } from \"../load-form/LoadFormNode\";\r\nimport { NumberNode } from \"../number/NumberNode\";\r\nimport { PanelTypeNode } from \"../panel-type/PanelTypeNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nexport class OpenPanelNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _OpenPanelNode_instances.add(this);\r\n _OpenPanelNode_formRef.set(this, void 0);\r\n _OpenPanelNode_panelRef.set(this, void 0);\r\n _OpenPanelNode_panelType.set(this, void 0);\r\n _OpenPanelNode_title.set(this, void 0);\r\n _OpenPanelNode_showAcceptButton.set(this, void 0);\r\n _OpenPanelNode_customButton1.set(this, void 0);\r\n _OpenPanelNode_customButton2.set(this, void 0);\r\n _OpenPanelNode_customButton3.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const { value: form } = this.executeInput(OpenPanelNode.inputFormIdHandle, deep + 1, {\r\n accept: [FormSelectorNode],\r\n preprocessors: [createPreprocessor(LoadFormNode, (node) => node.ref)]\r\n });\r\n const { value: panelType } = this.executeInput(OpenPanelNode.panelTypeHandle, deep + 1, {\r\n accept: [PanelTypeNode]\r\n });\r\n const { value: title } = this.executeInput(OpenPanelNode.titleHandle, deep + 1, {\r\n accept: [StringNode]\r\n });\r\n const { value: showAcceptButton } = this.executeInput(OpenPanelNode.showAcceptButtonHandle, deep + 1, {\r\n accept: [BooleanNode]\r\n });\r\n if (form == null) {\r\n console.warn(`[OpenPanelNode] Form is null`);\r\n return;\r\n }\r\n __classPrivateFieldSet(this, _OpenPanelNode_formRef, form, \"f\");\r\n __classPrivateFieldSet(this, _OpenPanelNode_panelType, panelType, \"f\");\r\n __classPrivateFieldSet(this, _OpenPanelNode_title, title, \"f\");\r\n __classPrivateFieldSet(this, _OpenPanelNode_showAcceptButton, showAcceptButton == undefined || showAcceptButton === true, \"f\");\r\n __classPrivateFieldGet(this, _OpenPanelNode_instances, \"m\", _OpenPanelNode_mapFields).call(this, deep);\r\n const buttons = __classPrivateFieldGet(this, _OpenPanelNode_instances, \"m\", _OpenPanelNode_mapButtons).call(this, deep);\r\n __classPrivateFieldSet(this, _OpenPanelNode_panelRef, this.engine.openPanel({\r\n panelType: panelType,\r\n title: title,\r\n form: form,\r\n onAccept: () => this.onAccept(deep),\r\n onCancel: () => this.onCancel(deep),\r\n showAcceptButton: __classPrivateFieldGet(this, _OpenPanelNode_showAcceptButton, \"f\"),\r\n buttons\r\n }), \"f\");\r\n }\r\n get formRef() {\r\n return __classPrivateFieldGet(this, _OpenPanelNode_formRef, \"f\");\r\n }\r\n getFormControl(connection) {\r\n const sourceHandle = connection.sourceHandle;\r\n const field = __classPrivateFieldGet(this, _OpenPanelNode_formRef, \"f\").getField(Guid.parse(sourceHandle));\r\n return field;\r\n }\r\n closePanel() {\r\n const ref = __classPrivateFieldGet(this, _OpenPanelNode_panelRef, \"f\");\r\n ref === null || ref === void 0 ? void 0 : ref.close();\r\n }\r\n onAccept(deep) {\r\n this.executeOutput(OpenPanelNode.onAcceptHandle, deep);\r\n }\r\n onCancel(deep) {\r\n this.executeOutput(OpenPanelNode.onCloseHandle, deep);\r\n }\r\n __getInputForm() {\r\n const thisNode = this.engine.findNode(this.schema.id);\r\n const formNode = thisNode.$getInputNode(OpenPanelNode.inputFormIdHandle);\r\n let form = null;\r\n if (formNode == null)\r\n null;\r\n if (formNode instanceof CurrentFormNode)\r\n form = formNode.$form;\r\n else if (formNode instanceof FormSelectorNode)\r\n form = formNode.$form;\r\n else if (formNode instanceof LoadFormNode)\r\n form = formNode.__form;\r\n else\r\n console.warn(`Not supported form node type`);\r\n return form;\r\n }\r\n __getInputFormFields(nodeProps) {\r\n var _a, _b, _c;\r\n let form = this.__getInputForm();\r\n if (form == null)\r\n return [];\r\n const connectableControlTypes = [\r\n ControlType.textField,\r\n ControlType.comboBox,\r\n ControlType.checkBox,\r\n ControlType.datePicker,\r\n ControlType.timePicker,\r\n ControlType.dateTimePicker,\r\n ControlType.numberField,\r\n ControlType.currencyField,\r\n ControlType.dataTable\r\n ];\r\n const fields = (_c = (_b = (_a = form.fields) === null || _a === void 0 ? void 0 : _a.orderBy(x => x.name)) === null || _b === void 0 ? void 0 : _b.toArray()) !== null && _c !== void 0 ? _c : [];\r\n const result = fields.filter(x => connectableControlTypes.includes(x.controlType));\r\n return result;\r\n }\r\n}\r\n_OpenPanelNode_formRef = new WeakMap(), _OpenPanelNode_panelRef = new WeakMap(), _OpenPanelNode_panelType = new WeakMap(), _OpenPanelNode_title = new WeakMap(), _OpenPanelNode_showAcceptButton = new WeakMap(), _OpenPanelNode_customButton1 = new WeakMap(), _OpenPanelNode_customButton2 = new WeakMap(), _OpenPanelNode_customButton3 = new WeakMap(), _OpenPanelNode_instances = new WeakSet(), _OpenPanelNode_mapFields = function _OpenPanelNode_mapFields(deep) {\r\n var _a, _b;\r\n const fields = (_b = (_a = this.formRef.fields) === null || _a === void 0 ? void 0 : _a.toArray()) !== null && _b !== void 0 ? _b : [];\r\n const settings = {\r\n accept: [\r\n CurrentFormNode,\r\n FormSelectorNode,\r\n LoadFormNode,\r\n DataTableFieldSelectorNode,\r\n BooleanNode,\r\n StringNode,\r\n NumberNode\r\n ]\r\n };\r\n for (let i = 0; i < fields.length; i++) {\r\n const field = fields[i];\r\n const fieldId = field.id;\r\n const { value: mappingValue, node } = this.executeInput(fieldId, deep + 1, settings);\r\n if (node != null) {\r\n field.value = mappingValue;\r\n }\r\n }\r\n}, _OpenPanelNode_mapButtons = function _OpenPanelNode_mapButtons(deep) {\r\n const settings = { accept: [ButtonNode] };\r\n const buttons = [];\r\n const { value: customButton1 } = this.executeInput(OpenPanelNode.customButton1Handle, deep + 1, settings);\r\n if (customButton1) {\r\n __classPrivateFieldSet(this, _OpenPanelNode_customButton1, customButton1, \"f\");\r\n buttons.push(customButton1);\r\n }\r\n const { value: customButton2 } = this.executeInput(OpenPanelNode.customButton2Handle, deep + 1, settings);\r\n if (customButton2) {\r\n __classPrivateFieldSet(this, _OpenPanelNode_customButton2, customButton2, \"f\");\r\n buttons.push(customButton2);\r\n }\r\n const { value: customButton3 } = this.executeInput(OpenPanelNode.customButton3Handle, deep + 1, settings);\r\n if (customButton3) {\r\n __classPrivateFieldSet(this, _OpenPanelNode_customButton3, customButton3, \"f\");\r\n buttons.push(customButton3);\r\n }\r\n return buttons;\r\n};\r\nOpenPanelNode.triggerHandle = \"trigger\";\r\nOpenPanelNode.refHandle = \"ref\";\r\nOpenPanelNode.inputFormIdHandle = \"formId\";\r\nOpenPanelNode.panelTypeHandle = \"panelType\";\r\nOpenPanelNode.titleHandle = \"title\";\r\nOpenPanelNode.outputFormHandle = \"outputFormId\";\r\nOpenPanelNode.onCloseHandle = \"onClose\";\r\nOpenPanelNode.onAcceptHandle = \"onAccept\";\r\nOpenPanelNode.showAcceptButtonHandle = \"showAcceptButton\";\r\nOpenPanelNode.customButton1Handle = \"customButton1\";\r\nOpenPanelNode.customButton2Handle = \"customButton2\";\r\nOpenPanelNode.customButton3Handle = \"customButton3\";\r\n","var _a, _ClosePanelNode_form;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { OpenPanelNode } from \"../open-panel/OpenPanelNode\";\r\nexport class ClosePanelNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _ClosePanelNode_form.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const [, panelRefNode] = this.getInputNode(ClosePanelNode.$inputPanel.id);\r\n if (panelRefNode instanceof OpenPanelNode) {\r\n panelRefNode.closePanel();\r\n }\r\n else {\r\n throw new Error(`Caller node is not an ${OpenPanelNode.name}`);\r\n }\r\n this.executeOutput(ClosePanelNode.$next.id, deep);\r\n }\r\n}\r\n_a = ClosePanelNode, _ClosePanelNode_form = new WeakMap();\r\nClosePanelNode.title = 'Close Panel';\r\nClosePanelNode.$trigger = _a.createHandle({ id: \"trigger\", displayName: \"Trigger\" });\r\nClosePanelNode.$inputPanel = _a.createHandle({ id: \"inputPanel\", displayName: 'InputPanel' });\r\nClosePanelNode.$next = _a.createHandle({ id: \"next\", displayName: 'Next' });\r\n","var _FetchNode_controlRef;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class FetchNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _FetchNode_controlRef.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const client = this.engine.createHttpClient();\r\n return client;\r\n }\r\n}\r\n_FetchNode_controlRef = new WeakMap();\r\nFetchNode.triggerHandle = \"trigger\";\r\n","var _a;\r\nimport { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { CurrentFormNode } from \"../current-form/CurrentFormNode\";\r\nimport { DataTableFieldSelectorNode } from \"../datatable-field-selector/DataTableFieldSelectorNode\";\r\nimport { DataTableNode } from \"../datatable/DataTableNode\";\r\nimport { FetchNode } from \"../fetch/FetchNode\";\r\nimport { FieldSelectorNode } from \"../field-selector/FieldSelectorNode\";\r\nexport class CodeRuleNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const script = this.schema.data.value;\r\n if (isNullOrEmpty(script))\r\n return;\r\n const inputA = this.getInput(CodeRuleNode.$paramA.id, deep);\r\n const inputB = this.getInput(CodeRuleNode.$paramB.id, deep);\r\n const inputC = this.getInput(CodeRuleNode.$paramC.id, deep);\r\n const inputD = this.getInput(CodeRuleNode.$paramD.id, deep);\r\n const inputE = this.getInput(CodeRuleNode.$paramE.id, deep);\r\n const inputF = this.getInput(CodeRuleNode.$paramF.id, deep);\r\n const inputG = this.getInput(CodeRuleNode.$paramG.id, deep);\r\n const inputH = this.getInput(CodeRuleNode.$paramH.id, deep);\r\n const inputI = this.getInput(CodeRuleNode.$paramI.id, deep);\r\n const inputJ = this.getInput(CodeRuleNode.$paramJ.id, deep);\r\n const inputK = this.getInput(CodeRuleNode.$paramK.id, deep);\r\n const inputL = this.getInput(CodeRuleNode.$paramL.id, deep);\r\n const inputM = this.getInput(CodeRuleNode.$paramM.id, deep);\r\n const inputN = this.getInput(CodeRuleNode.$paramN.id, deep);\r\n const inputO = this.getInput(CodeRuleNode.$paramO.id, deep);\r\n const inputP = this.getInput(CodeRuleNode.$paramP.id, deep);\r\n try {\r\n const fn = new Function('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'isNullOrEmpty', `\r\n ${script}\r\n return fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, isNullOrEmpty);\r\n `);\r\n const result = fn(inputA, inputB, inputC, inputD, inputE, inputF, inputG, inputH, inputI, inputJ, isNullOrEmpty);\r\n return result;\r\n }\r\n catch (error) {\r\n }\r\n }\r\n getInput(handleId, deep) {\r\n const settings = {\r\n accept: [\r\n DataTableNode,\r\n DataTableFieldSelectorNode,\r\n BooleanNode,\r\n CurrentFormNode,\r\n FieldSelectorNode,\r\n FetchNode\r\n ]\r\n };\r\n const { value } = this.executeInput(handleId, deep + 1, settings);\r\n return value;\r\n }\r\n}\r\n_a = CodeRuleNode;\r\nCodeRuleNode.$paramA = _a.createHandle({ id: 'paramA', displayName: 'A' });\r\nCodeRuleNode.$paramB = _a.createHandle({ id: 'paramB', displayName: 'B' });\r\nCodeRuleNode.$paramC = _a.createHandle({ id: 'paramC', displayName: 'C' });\r\nCodeRuleNode.$paramD = _a.createHandle({ id: 'paramD', displayName: 'D' });\r\nCodeRuleNode.$paramE = _a.createHandle({ id: 'paramE', displayName: 'E' });\r\nCodeRuleNode.$paramF = _a.createHandle({ id: 'paramF', displayName: 'F' });\r\nCodeRuleNode.$paramG = _a.createHandle({ id: 'paramG', displayName: 'G' });\r\nCodeRuleNode.$paramH = _a.createHandle({ id: 'paramH', displayName: 'H' });\r\nCodeRuleNode.$paramI = _a.createHandle({ id: 'paramI', displayName: 'I' });\r\nCodeRuleNode.$paramJ = _a.createHandle({ id: 'paramJ', displayName: 'J' });\r\nCodeRuleNode.$paramK = _a.createHandle({ id: 'paramK', displayName: 'K' });\r\nCodeRuleNode.$paramL = _a.createHandle({ id: 'paramL', displayName: 'L' });\r\nCodeRuleNode.$paramM = _a.createHandle({ id: 'paramM', displayName: 'M' });\r\nCodeRuleNode.$paramN = _a.createHandle({ id: 'paramN', displayName: 'N' });\r\nCodeRuleNode.$paramO = _a.createHandle({ id: 'paramO', displayName: 'O' });\r\nCodeRuleNode.$paramP = _a.createHandle({ id: 'paramP', displayName: 'P' });\r\nCodeRuleNode.$output = _a.createHandle({ id: 'output', displayName: 'Output' });\r\n","var _a;\r\nimport { CodeRuleNode } from \"../code-rule/CodeRuleNode\";\r\nexport class CodeActionNode extends CodeRuleNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const result = super.execute(caller, connection, deep);\r\n }\r\n}\r\n_a = CodeActionNode;\r\nCodeActionNode.$trigger = _a.createHandle({ id: 'trigger', displayName: 'Trigger' });\r\nCodeActionNode.$paramA = _a.createHandle({ id: 'paramA', displayName: 'A' });\r\nCodeActionNode.$paramB = _a.createHandle({ id: 'paramB', displayName: 'B' });\r\nCodeActionNode.$paramC = _a.createHandle({ id: 'paramC', displayName: 'C' });\r\nCodeActionNode.$paramD = _a.createHandle({ id: 'paramD', displayName: 'D' });\r\nCodeActionNode.$paramE = _a.createHandle({ id: 'paramE', displayName: 'E' });\r\nCodeActionNode.$paramF = _a.createHandle({ id: 'paramF', displayName: 'F' });\r\nCodeActionNode.$paramG = _a.createHandle({ id: 'paramG', displayName: 'G' });\r\nCodeActionNode.$paramH = _a.createHandle({ id: 'paramH', displayName: 'H' });\r\nCodeActionNode.$paramI = _a.createHandle({ id: 'paramI', displayName: 'I' });\r\nCodeActionNode.$paramJ = _a.createHandle({ id: 'paramJ', displayName: 'J' });\r\nCodeActionNode.$paramK = _a.createHandle({ id: 'paramK', displayName: 'K' });\r\nCodeActionNode.$paramL = _a.createHandle({ id: 'paramL', displayName: 'L' });\r\nCodeActionNode.$paramM = _a.createHandle({ id: 'paramM', displayName: 'M' });\r\nCodeActionNode.$paramN = _a.createHandle({ id: 'paramN', displayName: 'N' });\r\nCodeActionNode.$paramO = _a.createHandle({ id: 'paramO', displayName: 'O' });\r\nCodeActionNode.$paramP = _a.createHandle({ id: 'paramP', displayName: 'P' });\r\nCodeActionNode.$next = _a.createHandle({ id: 'output', displayName: 'Output' });\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { DataTableFieldSelectorNode } from \"../datatable-field-selector/DataTableFieldSelectorNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nexport class ConcatStringNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a;\r\n const input = (_a = this.schema.data.value) !== null && _a !== void 0 ? _a : [];\r\n const texts = input.map((handleId) => this.getInputValue(handleId, deep));\r\n return texts.join('');\r\n }\r\n getInputValue(handleId, deep) {\r\n const settings = { accept: [StringNode, DataTableFieldSelectorNode] };\r\n const { value } = this.executeInput(handleId.toString(), deep + 1, settings);\r\n return value;\r\n }\r\n}\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { And2Node, And3Node, And4Node, And6Node } from \"../and/AndNode\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { EqualsNode } from \"../equals/EqualsNode\";\r\nimport { GreaterThanNode } from \"../greather-than/GreaterThanNode\";\r\nimport { LessThanNode } from \"../less-than/LessThanNode\";\r\nimport { NotEqualsNode } from \"../not-equals/NotEqualsNode\";\r\nimport { NotNode } from \"../not/NotNode\";\r\nimport { Or2Node, Or3Node, Or4Node, Or6Node } from \"../or/OrNode\";\r\nexport class ConditionalActionNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const settings = {\r\n accept: [\r\n EqualsNode,\r\n BooleanNode,\r\n GreaterThanNode,\r\n LessThanNode,\r\n NotNode,\r\n NotEqualsNode,\r\n And2Node,\r\n And3Node,\r\n And4Node,\r\n And6Node,\r\n Or2Node,\r\n Or3Node,\r\n Or4Node,\r\n Or6Node\r\n ]\r\n };\r\n const { value } = this.executeInput(ConditionalActionNode.conditionHandle, deep + 1, settings);\r\n this.writeLog(`[${ConditionalActionNode.name}] Condition: ${value}`, deep, `color: white; background-color: ${NodeColors.boolean}`);\r\n const result = value\r\n ? this === null || this === void 0 ? void 0 : this.executeOutput(ConditionalActionNode.trueHandle, deep + 1)\r\n : this === null || this === void 0 ? void 0 : this.executeOutput(ConditionalActionNode.falseHandle, deep + 1);\r\n return result;\r\n }\r\n}\r\nConditionalActionNode.conditionHandle = 'condition';\r\nConditionalActionNode.trueHandle = 'true';\r\nConditionalActionNode.falseHandle = 'false';\r\nConditionalActionNode.triggerHandle = 'trigger';\r\n","import { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class ConditionalRuleNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a;\r\n const [conditionEdge, conditionNode] = this.getInputNode(ConditionalRuleNode.conditionHandleId);\r\n const [trueEdge, trueNode] = this.getInputNode(ConditionalRuleNode.trueHandleId);\r\n const [falseEdge, falseNode] = this.getInputNode(ConditionalRuleNode.falseHandleId);\r\n const conditionResult = (_a = conditionNode === null || conditionNode === void 0 ? void 0 : conditionNode.execute(this, conditionEdge, deep + 1)) !== null && _a !== void 0 ? _a : false;\r\n const result = conditionResult\r\n ? trueNode === null || trueNode === void 0 ? void 0 : trueNode.execute(this, trueEdge, deep + 1)\r\n : falseNode === null || falseNode === void 0 ? void 0 : falseNode.execute(this, falseEdge, deep + 1);\r\n this.writeLog(`[${ConditionalRuleNode.name}] Condition: ${conditionResult} => Result: ${result}`, deep, `color: white; background-color: ${NodeColors.boolean}`);\r\n return result;\r\n }\r\n}\r\nConditionalRuleNode.conditionHandleId = 'condition';\r\nConditionalRuleNode.trueHandleId = 'true';\r\nConditionalRuleNode.falseHandleId = 'false';\r\nConditionalRuleNode.outputHandleId = 'output';\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class ConsoleLogNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get formId() {\r\n return this.schema.data.formId;\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const [input1Edge, input1Node] = this.getInputNode(ConsoleLogNode.inputHandleId);\r\n const value = input1Node === null || input1Node === void 0 ? void 0 : input1Node.execute(this, input1Edge, deep + 1);\r\n console.log(value);\r\n const [nextEdge, nextNode] = this.getOutputNode(ConsoleLogNode.nextHandleId);\r\n nextNode === null || nextNode === void 0 ? void 0 : nextNode.execute(this, nextEdge, deep + 1);\r\n }\r\n}\r\nConsoleLogNode.inputHandleId = \"input\";\r\nConsoleLogNode.nextHandleId = \"next\";\r\n","var _a;\r\nimport { DataType } from \"../../types\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { LogicEngineNodeTypes } from \"../@engine/LogicEngineNodeTypes\";\r\nimport { OpenPanelNode } from \"../open-panel/OpenPanelNode\";\r\nexport class CreateCaseFileDocument extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep = 0) {\r\n const settings = {\r\n preprocessors: [createPreprocessor(OpenPanelNode, node => node.formRef)]\r\n };\r\n const { value: form } = this.executeInput(CreateCaseFileDocument.$name.id, deep + 1, settings);\r\n if (!form)\r\n return null;\r\n if (form.validate()) {\r\n form.showConfirmationDialogAsync().then(() => {\r\n form.saveV2Async().then(() => this.executeOutput(CreateCaseFileDocument.$next.id, deep + 1));\r\n });\r\n }\r\n return form;\r\n }\r\n}\r\n_a = CreateCaseFileDocument;\r\nCreateCaseFileDocument.title = 'Create Case File Document';\r\nCreateCaseFileDocument.type = LogicEngineNodeTypes.createCaseFileDocument;\r\nCreateCaseFileDocument.executeOnClient = false;\r\nCreateCaseFileDocument.executeOnServer = true;\r\nCreateCaseFileDocument.$trigger = _a.createHandle({ id: 'trigger', displayName: 'Trigger' });\r\nCreateCaseFileDocument.$caseFile = _a.createHandle({ id: 'caseFile', displayName: 'Case File', dataType: DataType.long });\r\nCreateCaseFileDocument.$name = _a.createHandle({ id: 'name', displayName: 'Name', dataType: DataType.string });\r\nCreateCaseFileDocument.$author = _a.createHandle({ id: 'author', displayName: 'Author', dataType: DataType.string });\r\nCreateCaseFileDocument.$documentDate = _a.createHandle({ id: 'documentDate', displayName: 'Document Date', dataType: DataType.date });\r\nCreateCaseFileDocument.$transmisionDate = _a.createHandle({ id: 'transmisionDate', displayName: 'Transmision Date', dataType: DataType.date });\r\nCreateCaseFileDocument.$receptionDate = _a.createHandle({ id: 'receptionDate', displayName: 'Reception Date', dataType: DataType.date });\r\nCreateCaseFileDocument.$documentTypeId = _a.createHandle({ id: 'documentTypeId', displayName: 'Document Type', dataType: DataType.int });\r\nCreateCaseFileDocument.$documentalTypeId = _a.createHandle({ id: 'documentalTypeId', displayName: 'Documental Type', dataType: DataType.int });\r\nCreateCaseFileDocument.$folderId = _a.createHandle({ id: 'folderId', displayName: 'Folder', dataType: DataType.int });\r\nCreateCaseFileDocument.$keywords = _a.createHandle({ id: 'keywords', displayName: 'Keywords', dataType: DataType.string });\r\nCreateCaseFileDocument.$subject = _a.createHandle({ id: 'subject', displayName: 'Subject', dataType: DataType.string });\r\nCreateCaseFileDocument.$description = _a.createHandle({ id: 'description', displayName: 'Description', dataType: DataType.string });\r\nCreateCaseFileDocument.$initialPage = _a.createHandle({ id: 'initialPage', displayName: 'Initial Page', dataType: DataType.int });\r\nCreateCaseFileDocument.$finalPage = _a.createHandle({ id: 'finalPage', displayName: 'Final Page', dataType: DataType.int });\r\nCreateCaseFileDocument.$fileName = _a.createHandle({ id: 'fileName', displayName: 'File Name', dataType: DataType.string });\r\nCreateCaseFileDocument.$url = _a.createHandle({ id: 'url', displayName: 'Url', dataType: DataType.string, help: 'Direccion URL del documento externo' });\r\nCreateCaseFileDocument.$externalDocument = _a.createHandle({ id: 'externalDocument', displayName: 'External Document', dataType: DataType.boolean });\r\nCreateCaseFileDocument.$physicalLocation = _a.createHandle({ id: 'physicalLocation', displayName: 'Location', dataType: DataType.string });\r\nCreateCaseFileDocument.$physicalShelf = _a.createHandle({ id: 'physicalShelf', displayName: 'Shelf', dataType: DataType.string });\r\nCreateCaseFileDocument.$physicalSide = _a.createHandle({ id: 'physicalSide', displayName: 'Side', dataType: DataType.string });\r\nCreateCaseFileDocument.$physicalTier = _a.createHandle({ id: 'physicalTier', displayName: 'Tier', dataType: DataType.string });\r\nCreateCaseFileDocument.$physicalBox = _a.createHandle({ id: 'physicalBox', displayName: 'Box', dataType: DataType.string });\r\nCreateCaseFileDocument.$physicalFolder = _a.createHandle({ id: 'physicalFolder', displayName: 'Folder', dataType: DataType.string });\r\nCreateCaseFileDocument.$physicalCustodianCompany = _a.createHandle({ id: 'physicalCustodianCompany', displayName: 'Custodian Company', dataType: DataType.string });\r\nCreateCaseFileDocument.$physicalPages = _a.createHandle({ id: 'physicalPages', displayName: 'Pages', dataType: DataType.string });\r\nCreateCaseFileDocument.$physicalStartDate = _a.createHandle({ id: 'physicalStartDate', displayName: 'Start Date', dataType: DataType.string });\r\nCreateCaseFileDocument.$physicalEndDate = _a.createHandle({ id: 'physicalEndDate', displayName: 'End Date', dataType: DataType.string });\r\nCreateCaseFileDocument.$next = _a.createHandle({ id: 'next', displayName: 'Next' });\r\n","import { PXConnector } from \"../PXConnector\";\r\nexport class CurrentUserConnector extends PXConnector {\r\n constructor(props) {\r\n super(props);\r\n }\r\n}\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _CurrentUserNode_instances, _CurrentUserNode_connector, _CurrentUserNode_readProperty;\r\nimport { DataType } from \"../../types\";\r\nimport { CurrentUserConnector } from \"../@conectors/current-user/CurrentUserConnector\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class CurrentUserNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _CurrentUserNode_instances.add(this);\r\n _CurrentUserNode_connector.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep = 0) {\r\n if (__classPrivateFieldGet(this, _CurrentUserNode_connector, \"f\") == null) {\r\n const connector = this.getConnector(CurrentUserConnector);\r\n __classPrivateFieldSet(this, _CurrentUserNode_connector, connector, \"f\");\r\n }\r\n const sourceHandleId = connection.sourceHandle;\r\n const result = __classPrivateFieldGet(this, _CurrentUserNode_instances, \"m\", _CurrentUserNode_readProperty).call(this, sourceHandleId);\r\n return result;\r\n }\r\n}\r\n_CurrentUserNode_connector = new WeakMap(), _CurrentUserNode_instances = new WeakSet(), _CurrentUserNode_readProperty = function _CurrentUserNode_readProperty(sourceHandleId) {\r\n var _a;\r\n const object = (_a = __classPrivateFieldGet(this, _CurrentUserNode_connector, \"f\")) === null || _a === void 0 ? void 0 : _a.readObject();\r\n if (object == null)\r\n return null;\r\n switch (sourceHandleId) {\r\n case CurrentUserNode.outputHandles.loginname.id:\r\n return object.loginname;\r\n case CurrentUserNode.outputHandles.profileId.id:\r\n return object.profileId;\r\n case CurrentUserNode.outputHandles.sectionBaseId.id:\r\n return object.sectionBaseId;\r\n case CurrentUserNode.outputHandles.userId.id:\r\n return object.userId;\r\n case CurrentUserNode.outputHandles.name.id:\r\n return object.name;\r\n case CurrentUserNode.outputHandles.email.id:\r\n return object.email;\r\n case CurrentUserNode.outputHandles.identificationNumber.id:\r\n return object.identificationNumber;\r\n default:\r\n throw new Error(`Invalid source handle ID: ${sourceHandleId}`);\r\n }\r\n};\r\nCurrentUserNode.outputHandles = {\r\n userId: FlowNode.createHandle({\r\n id: '1',\r\n displayName: 'User ID',\r\n dataType: DataType.int\r\n }),\r\n loginname: FlowNode.createHandle({\r\n id: '2',\r\n displayName: 'Login Name',\r\n dataType: DataType.string\r\n }),\r\n email: FlowNode.createHandle({\r\n id: '3',\r\n displayName: 'Email',\r\n dataType: DataType.string\r\n }),\r\n identificationNumber: FlowNode.createHandle({\r\n id: '4',\r\n displayName: 'Identification Number',\r\n dataType: DataType.int\r\n }),\r\n name: FlowNode.createHandle({\r\n id: '5',\r\n displayName: 'Name',\r\n dataType: DataType.string\r\n }),\r\n profileId: FlowNode.createHandle({\r\n id: '6',\r\n displayName: 'Profile ID',\r\n dataType: DataType.int\r\n }),\r\n sectionBaseId: FlowNode.createHandle({\r\n id: '7',\r\n displayName: 'Section Base ID',\r\n dataType: DataType.int\r\n })\r\n};\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class DataTableRequestFilterNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n return null;\r\n }\r\n}\r\nDataTableRequestFilterNode.title = 'Datatable Request Filter';\r\nDataTableRequestFilterNode.executeOnClient = true;\r\nDataTableRequestFilterNode.executeOnServer = true;\r\n","var _a;\r\nimport { DataType } from \"../../types\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class DataTableRequestNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n this.executeOutput(DataTableRequestNode.$orderColumn.id, deep);\r\n }\r\n}\r\n_a = DataTableRequestNode;\r\nDataTableRequestNode.$page = _a.createHandle({ id: 'page', displayName: 'Page', dataType: DataType.int, accept: [] });\r\nDataTableRequestNode.$search = _a.createHandle({ id: 'search', displayName: 'Search', dataType: DataType.string, accept: [] });\r\nDataTableRequestNode.$orderColumn = _a.createHandle({ id: 'orderColumn', displayName: 'Order column', dataType: DataType.int, accept: [] });\r\nDataTableRequestNode.$length = _a.createHandle({ id: 'length', displayName: 'Length', dataType: DataType.int, accept: [] });\r\nDataTableRequestNode.$sortDirection = _a.createHandle({ id: 'sortDirection', displayName: 'Sort direction', dataType: DataType.string, accept: [] });\r\n","var _a;\r\nimport { DataType } from \"../../types\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class DataTableResponseNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n }\r\n}\r\n_a = DataTableResponseNode;\r\nDataTableResponseNode.$items = _a.createHandle({ id: 'items', displayName: 'Items', dataType: DataType.int });\r\nDataTableResponseNode.$totalItems = _a.createHandle({ id: 'totalItems', displayName: 'Total items' });\r\nDataTableResponseNode.$output = _a.createHandle({ id: 'output', displayName: 'Output' });\r\n","var _a;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class DateTimeNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep = 0) {\r\n return null;\r\n }\r\n}\r\n_a = DateTimeNode;\r\nDateTimeNode.title = 'DateTime';\r\nDateTimeNode.executeOnClient = true;\r\nDateTimeNode.executeOnServer = true;\r\nDateTimeNode.$now = _a.createHandle({ id: 'now', displayName: 'Now' });\r\nDateTimeNode.$year = _a.createHandle({ id: 'year', displayName: 'Year' });\r\nDateTimeNode.$month = _a.createHandle({ id: 'month', displayName: 'Month' });\r\nDateTimeNode.$date = _a.createHandle({ id: 'date', displayName: 'Date' });\r\nDateTimeNode.$hour = _a.createHandle({ id: 'hour', displayName: 'Hour' });\r\nDateTimeNode.$minute = _a.createHandle({ id: 'minute', displayName: 'Minute' });\r\nDateTimeNode.$second = _a.createHandle({ id: 'second', displayName: 'Second' });\r\nDateTimeNode.$dateonly = _a.createHandle({ id: 'dateonly', displayName: 'Dateonly' });\r\nDateTimeNode.$timeonly = _a.createHandle({ id: 'timeonly', displayName: 'Timeonly' });\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class MathOperationBaseRule extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n getValues(caller, connection, deep, inputId) {\r\n const [inputHandle, inputNode] = this.getInputNode(inputId);\r\n if (inputNode == null)\r\n return 0;\r\n const result = inputNode.execute(this, inputHandle, deep + 1);\r\n if (result instanceof Array) {\r\n return result.map(x => x !== null && x !== void 0 ? x : 0);\r\n }\r\n return result;\r\n }\r\n processArrayArray(arr1, arr2, fn) {\r\n if (arr1.length != arr2.length) {\r\n console.warn(`[Multiplication] Arrays have different length`);\r\n return 0;\r\n }\r\n const result = arr1.reduce((a, b, index) => {\r\n var _a;\r\n if (typeof b === 'number' && typeof arr2[index] === 'number')\r\n return a + fn(b !== null && b !== void 0 ? b : 0, (_a = arr2[index]) !== null && _a !== void 0 ? _a : 0);\r\n return a;\r\n }, 0);\r\n return result;\r\n }\r\n processArrayNumber(arr, num, fn) {\r\n const result = arr.reduce((a, b) => {\r\n if (typeof b === 'number')\r\n return a + (b * num);\r\n return a;\r\n }, 0);\r\n return result;\r\n }\r\n execute(caller, connection, deep, data) {\r\n return 0;\r\n }\r\n}\r\nMathOperationBaseRule.input1HandleId = 'input1';\r\nMathOperationBaseRule.input2HandleId = 'input2';\r\nMathOperationBaseRule.outputHandleId = 'output';\r\n","import { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { MathOperationBaseRule } from \"../math-operation/MathOperationBaseRule\";\r\nexport class DivisionRuleNode extends MathOperationBaseRule {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n divide(num1, num2) {\r\n if (num1 == 0 || num2 == 0)\r\n return 0;\r\n return num1 / num2;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b;\r\n let value1 = (_a = this.getValues(caller, connection, deep, MathOperationBaseRule.input1HandleId)) !== null && _a !== void 0 ? _a : 0;\r\n let value2 = (_b = this.getValues(caller, connection, deep, MathOperationBaseRule.input2HandleId)) !== null && _b !== void 0 ? _b : 0;\r\n let result = 0;\r\n if (Array.isArray(value1) && Array.isArray(value2))\r\n result = this.processArrayArray(value1, value2, this.divide);\r\n else if (Array.isArray(value1) && typeof value2 === 'number')\r\n result = this.processArrayNumber(value1, value2, this.divide);\r\n else if (typeof value1 === 'number' && Array.isArray(value2))\r\n result = this.processArrayNumber(value2, value1, this.divide);\r\n else if (typeof value1 === 'number' && typeof value2 === 'number')\r\n result = this.divide(value1, value2);\r\n this.writeLog(`[${DivisionRuleNode.name}] Result = ${result}`, deep, `color: white; background-color: ${NodeColors.fieldSelector}`);\r\n return result;\r\n }\r\n}\r\n","var _a;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class DataSourceNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n }\r\n}\r\n_a = DataSourceNode;\r\nDataSourceNode.title = 'Data Source';\r\nDataSourceNode.group = 'DataSource';\r\nDataSourceNode.executeOnClient = false;\r\nDataSourceNode.executeOnServer = true;\r\nDataSourceNode.$datasource = _a.createHandle({ id: 'datasource', displayName: '' });\r\nDataSourceNode.$fieldId = _a.createHandle({ id: 'fieldId', displayName: 'Field' });\r\nDataSourceNode.$paramA = _a.createHandle({ id: 'paramA', displayName: 'A' });\r\nDataSourceNode.$paramB = _a.createHandle({ id: 'paramB', displayName: 'B' });\r\nDataSourceNode.$paramC = _a.createHandle({ id: 'paramC', displayName: 'C' });\r\nDataSourceNode.$paramD = _a.createHandle({ id: 'paramD', displayName: 'D' });\r\nDataSourceNode.$paramE = _a.createHandle({ id: 'paramE', displayName: 'E' });\r\nDataSourceNode.$paramF = _a.createHandle({ id: 'paramF', displayName: 'F' });\r\nDataSourceNode.$paramG = _a.createHandle({ id: 'paramG', displayName: 'G' });\r\nDataSourceNode.$paramH = _a.createHandle({ id: 'paramH', displayName: 'H' });\r\nDataSourceNode.$paramI = _a.createHandle({ id: 'paramI', displayName: 'I' });\r\nDataSourceNode.$paramJ = _a.createHandle({ id: 'paramJ', displayName: 'J' });\r\nDataSourceNode.$paramK = _a.createHandle({ id: 'paramK', displayName: 'K' });\r\nDataSourceNode.$paramL = _a.createHandle({ id: 'paramL', displayName: 'L' });\r\nDataSourceNode.$paramM = _a.createHandle({ id: 'paramM', displayName: 'M' });\r\nDataSourceNode.$paramN = _a.createHandle({ id: 'paramN', displayName: 'N' });\r\nDataSourceNode.$paramO = _a.createHandle({ id: 'paramO', displayName: 'O' });\r\nDataSourceNode.$paramP = _a.createHandle({ id: 'paramP', displayName: 'P' });\r\n","import { DataSourceNode } from \"../datasource/DataSourceNode\";\r\nimport { LogicEngineNodeType } from \"../@engine/LogicEngineNodeType\";\r\nexport class FieldDataSourceNode extends DataSourceNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n }\r\n}\r\nFieldDataSourceNode.title = 'Field Data Source';\r\nFieldDataSourceNode.type = LogicEngineNodeType.fieldDataSource;\r\n","import { LogicEngineNodeType } from \"../@engine/LogicEngineNodeType\";\r\nimport { DataSourceNode } from \"../datasource/DataSourceNode\";\r\nexport class FormDataSourceNode extends DataSourceNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n }\r\n}\r\nFormDataSourceNode.title = 'Form Data Source';\r\nFormDataSourceNode.type = LogicEngineNodeType.formDataSource;\r\n","var _a;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { NodeColors } from \"../@core/FlowNodeConstants\";\r\nexport class InitNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep = 0) {\r\n const [initHandle, initNode] = this.getOutputNode('init');\r\n const result = initNode === null || initNode === void 0 ? void 0 : initNode.execute(this, initHandle, 1);\r\n this.writeLog(`[Result] = ${result}`, 0, `color: white; background-color: ${NodeColors.result}`);\r\n return result;\r\n }\r\n}\r\n_a = InitNode;\r\nInitNode.title = 'Init';\r\nInitNode.$init = _a.createHandle({ id: 'init', displayName: 'Next' });\r\n","var _a;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { LogicEngineNodeTypes } from \"../@engine/LogicEngineNodeTypes\";\r\nimport { OpenPanelNode } from \"../open-panel/OpenPanelNode\";\r\nexport class LoadEntityItemNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep = 0) {\r\n const settings = {\r\n preprocessors: [createPreprocessor(OpenPanelNode, node => node.formRef)]\r\n };\r\n const { value: form } = this.executeInput(LoadEntityItemNode.$entityId.id, deep + 1, settings);\r\n if (!form)\r\n return null;\r\n if (form.validate()) {\r\n form.showConfirmationDialogAsync().then(() => {\r\n form.saveV2Async().then(() => this.executeOutput(LoadEntityItemNode.$next.id, deep + 1));\r\n });\r\n }\r\n return form;\r\n }\r\n}\r\n_a = LoadEntityItemNode;\r\nLoadEntityItemNode.title = 'Load Entity Item';\r\nLoadEntityItemNode.type = LogicEngineNodeTypes.loadSingleEntityItem;\r\nLoadEntityItemNode.group = 'Load Entity Item';\r\nLoadEntityItemNode.executeOnClient = true;\r\nLoadEntityItemNode.executeOnServer = true;\r\nLoadEntityItemNode.$trigger = _a.createHandle({ id: 'trigger' });\r\nLoadEntityItemNode.$next = _a.createHandle({ id: 'next' });\r\nLoadEntityItemNode.$entityId = _a.createHandle({ id: 'entityId' });\r\nLoadEntityItemNode.$itemId = _a.createHandle({ id: 'itemId' });\r\n","import { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { MathOperationBaseRule } from \"../math-operation/MathOperationBaseRule\";\r\nexport class MultiplicationRuleNode extends MathOperationBaseRule {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n multiply(num1, num2) {\r\n return num1 * num2;\r\n }\r\n execute(caller, connection, deep, data) {\r\n var _a, _b;\r\n let value1 = (_a = this.getValues(caller, connection, deep, MathOperationBaseRule.input1HandleId)) !== null && _a !== void 0 ? _a : 0;\r\n let value2 = (_b = this.getValues(caller, connection, deep, MathOperationBaseRule.input2HandleId)) !== null && _b !== void 0 ? _b : 0;\r\n let result = 0;\r\n if (Array.isArray(value1) && Array.isArray(value2))\r\n result = this.processArrayArray(value1, value2, this.multiply);\r\n else if (Array.isArray(value1) && typeof value2 === 'number')\r\n result = this.processArrayNumber(value1, value2, this.multiply);\r\n else if (typeof value1 === 'number' && Array.isArray(value2))\r\n result = this.processArrayNumber(value2, value1, this.multiply);\r\n else if (typeof value1 === 'number' && typeof value2 === 'number')\r\n result = this.multiply(value1, value2);\r\n this.writeLog(`[${MultiplicationRuleNode.name}] Result = ${result}`, deep, `color: white; background-color: ${NodeColors.fieldSelector}`);\r\n return result;\r\n }\r\n}\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { ConcatStringNode } from \"../concat-string/ConcatStringNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nexport class NavigateToNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return false;\r\n }\r\n execute(caller, connection, deep) {\r\n const settings = { accept: [StringNode, ConcatStringNode] };\r\n const { value: url } = this.executeInput(NavigateToNode.urlHandle, deep + 1, settings);\r\n if (url == null)\r\n return;\r\n if (url.startsWith(\"#\"))\r\n location.hash = url;\r\n else\r\n location.href = url;\r\n this.executeOutput(NavigateToNode.next, deep + 1);\r\n }\r\n}\r\nNavigateToNode.triggerHandle = \"trigger\";\r\nNavigateToNode.urlHandle = \"url\";\r\nNavigateToNode.next = \"next\";\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { CountItemsNode } from \"../count/CountItemsNode\";\r\nimport { NumberNode } from \"../number/NumberNode\";\r\nexport class PercentageNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const count = this.getCountInputNode('countInput', deep + 1);\r\n if (count == 0)\r\n return 0;\r\n const total = this.getCountInputNode('totalInput', deep + 1);\r\n if (total == 0)\r\n return 0;\r\n const result = (count / total) * 100;\r\n this.writeLog(`[PercentageNode] ${count} / ${total} = ${result}`, deep, `color: white; background-color: ${NodeColors.fieldSelector}`);\r\n return result;\r\n }\r\n getCountInputNode(handleId, deep) {\r\n const settings = {\r\n accept: [CountItemsNode, NumberNode]\r\n };\r\n const { value } = this.executeInput(handleId, deep + 1, settings);\r\n return value || 0;\r\n }\r\n}\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class QueryStringNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const queryParams = new URLSearchParams(location.search);\r\n const value = queryParams.get(this.schema.data.value);\r\n return value;\r\n }\r\n}\r\nQueryStringNode.outputHandle = 'output';\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _RefreshDataTableNode_ref;\r\nimport { DataTableNode } from \"../datatable/DataTableNode\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class RefreshDataTableNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _RefreshDataTableNode_ref.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get datatableRef() {\r\n return __classPrivateFieldGet(this, _RefreshDataTableNode_ref, \"f\");\r\n }\r\n execute(caller, connection, deep) {\r\n const [dataTableRefEdge, dataTableRefNode] = this.getInputNode(RefreshDataTableNode.dataTableRefHandle);\r\n if (dataTableRefNode instanceof DataTableNode) {\r\n __classPrivateFieldSet(this, _RefreshDataTableNode_ref, dataTableRefNode.ref, \"f\");\r\n if (dataTableRefNode.ref != null) {\r\n dataTableRefNode.ref.refresh();\r\n }\r\n }\r\n else {\r\n throw new Error(\"The node is not a DataTableNode\");\r\n }\r\n this.executeOutput(RefreshDataTableNode.nextHandle, deep);\r\n }\r\n}\r\n_RefreshDataTableNode_ref = new WeakMap();\r\nRefreshDataTableNode.triggerHandle = \"trigger\";\r\nRefreshDataTableNode.dataTableRefHandle = \"dataTableRef\";\r\nRefreshDataTableNode.nextHandle = \"next\";\r\n","import { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class ResultNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep = 0) {\r\n const [handleId, node] = this.getInputNode('input');\r\n const result = node === null || node === void 0 ? void 0 : node.execute(this, handleId, 1);\r\n this.writeLog(`[Result] = ${result}`, 0, `color: white; background-color: ${NodeColors.result}`);\r\n return result;\r\n }\r\n}\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _a, _SaveFormNode_form;\r\nimport { Guid } from \"@ioip/core/lib\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { OpenPanelNode } from \"../open-panel/OpenPanelNode\";\r\nexport class SaveFormNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _SaveFormNode_form.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const [, inputFormIdNode] = this.getInputNode(SaveFormNode.inputFormIdHandle.id);\r\n if (inputFormIdNode instanceof OpenPanelNode) {\r\n this.processOpenPanelNode(inputFormIdNode, deep);\r\n }\r\n else {\r\n throw new Error(\"Invalid caller\");\r\n }\r\n }\r\n processOpenPanelNode(panel, deep) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const form = panel.formRef;\r\n if (form == null)\r\n throw new Error(\"Form not found\");\r\n try {\r\n const isValid = form.validate();\r\n if (isValid) {\r\n const $continue = yield form.showConfirmationDialogAsync();\r\n if ($continue) {\r\n yield form.saveV2Async();\r\n this.onSaved(deep);\r\n }\r\n }\r\n }\r\n catch (error) {\r\n this.onError(deep, error);\r\n }\r\n });\r\n }\r\n get form() {\r\n return __classPrivateFieldGet(this, _SaveFormNode_form, \"f\");\r\n }\r\n getFormControl(connection) {\r\n const sourceHandle = connection.sourceHandle;\r\n const field = __classPrivateFieldGet(this, _SaveFormNode_form, \"f\").getField(Guid.parse(sourceHandle));\r\n return field;\r\n }\r\n onSaved(deep) {\r\n this.executeOutput(SaveFormNode.onSavedHandle, deep);\r\n }\r\n onError(deep, error) {\r\n this.executeOutput(SaveFormNode.onErrorHandle, deep);\r\n }\r\n}\r\n_a = SaveFormNode, _SaveFormNode_form = new WeakMap();\r\nSaveFormNode.title = 'Save Form';\r\nSaveFormNode.executeOnClient = true;\r\nSaveFormNode.executeOnServer = true;\r\nSaveFormNode.triggerHandleId = \"trigger\";\r\nSaveFormNode.inputFormIdHandle = _a.createHandle({ id: \"formId\", displayName: 'Form Ref' });\r\nSaveFormNode.onSavedHandle = \"onSaved\";\r\nSaveFormNode.onErrorHandle = \"onError\";\r\n","import { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { FormBaseNode } from \"../form-base/FormBaseNode\";\r\nimport { InputFileNode } from \"../input-file/InputFileNode\";\r\nimport { NumberNode } from \"../number/NumberNode\";\r\nimport { QueryStringNode } from \"../query-string/QueryStringNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nexport class SetCurrentFormValuesNode extends FormBaseNode {\r\n constructor(engine, schema) {\r\n super(engine, schema, {\r\n onGetFormId: () => {\r\n return this.engine.currentForm.objectId;\r\n }\r\n });\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get form() {\r\n return this.engine.currentForm;\r\n }\r\n execute(caller, connection, deep) {\r\n const connections = this.getInputNodes();\r\n const inputIds = connections.map(x => x.connection.targetHandle);\r\n if (inputIds.length > 0) {\r\n const values = {};\r\n for (let i = 0; i < inputIds.length; i++) {\r\n const inputId = inputIds[i];\r\n const field = this.form.fields.firstOrDefault(x => inputId === x.id);\r\n if (field == null)\r\n continue;\r\n const value = this._getInputValue(inputId, deep);\r\n values[field.id] = value;\r\n }\r\n this.engine.currentForm.values = values;\r\n }\r\n this.executeOutput(SetCurrentFormValuesNode.nextHandle, deep);\r\n return null;\r\n }\r\n _getInputValue(handleId, deep) {\r\n const settings = {\r\n accept: [QueryStringNode, NumberNode, StringNode, BooleanNode, InputFileNode]\r\n };\r\n const { value } = this.executeInput(handleId, deep + 1, settings);\r\n return value;\r\n }\r\n}\r\nSetCurrentFormValuesNode.triggerHandle = \"trigger\";\r\nSetCurrentFormValuesNode.nextHandle = \"next\";\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _SetDataTableFormValuesNode_tableRef, _SetDataTableFormValuesNode_formRef;\r\nimport { Guid } from \"@ioip/core/lib\";\r\nimport CDataTable from \"../../forms/DataTable/types/CDataTable\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { CurrentFormNode } from \"../current-form/CurrentFormNode\";\r\nimport { DataTableFieldSelectorNode } from \"../datatable-field-selector/DataTableFieldSelectorNode\";\r\nimport { DataTableNode } from \"../datatable/DataTableNode\";\r\nimport { FormBaseNode } from \"../form-base/FormBaseNode\";\r\nimport { InputFileNode } from \"../input-file/InputFileNode\";\r\nimport { NumberNode } from \"../number/NumberNode\";\r\nimport { QueryStringNode } from \"../query-string/QueryStringNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport CControl from \"../../forms/Control/CControl\";\r\nexport class SetDataTableFormValuesNode extends FormBaseNode {\r\n constructor(engine, schema) {\r\n super(engine, schema, {\r\n onGetFormId: () => {\r\n return this.engine.currentForm.objectId;\r\n }\r\n });\r\n _SetDataTableFormValuesNode_tableRef.set(this, void 0);\r\n _SetDataTableFormValuesNode_formRef.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get table() {\r\n return __classPrivateFieldGet(this, _SetDataTableFormValuesNode_tableRef, \"f\");\r\n }\r\n get formRef() {\r\n return __classPrivateFieldGet(this, _SetDataTableFormValuesNode_formRef, \"f\");\r\n }\r\n execute(caller, connection, deep) {\r\n const { value: dataTableRef } = this.executeInput(SetDataTableFormValuesNode.$dataTableRef.id, deep, { accept: [DataTableNode] });\r\n if (dataTableRef == null)\r\n throw new Error('DataTable reference is required');\r\n if (!(dataTableRef instanceof CDataTable))\r\n throw new Error('Invalid DataTable reference');\r\n __classPrivateFieldSet(this, _SetDataTableFormValuesNode_tableRef, dataTableRef, \"f\");\r\n __classPrivateFieldSet(this, _SetDataTableFormValuesNode_formRef, this.table.formInstance, \"f\");\r\n const connections = this.getInputNodes();\r\n const inputIds = connections.map(x => x.connection.targetHandle).filter(x => Guid.isNotEmpty(x));\r\n if (inputIds.length > 0) {\r\n const values = {};\r\n for (let i = 0; i < inputIds.length; i++) {\r\n const inputId = inputIds[i];\r\n const field = __classPrivateFieldGet(this, _SetDataTableFormValuesNode_formRef, \"f\").fields.firstOrDefault(x => inputId === x.id);\r\n if (field == null)\r\n continue;\r\n const { value } = this.executeInput(inputId, deep, {\r\n accept: [QueryStringNode, NumberNode, StringNode, BooleanNode, CurrentFormNode],\r\n preprocessors: [\r\n createPreprocessor(CControl, (control) => control.value)\r\n ]\r\n });\r\n values[field.id] = value;\r\n }\r\n __classPrivateFieldGet(this, _SetDataTableFormValuesNode_formRef, \"f\").values = values;\r\n }\r\n this.executeOutput(SetDataTableFormValuesNode.$next.id, deep);\r\n return null;\r\n }\r\n _getInputValue(handleId, deep) {\r\n const settings = {\r\n accept: [QueryStringNode, NumberNode, StringNode, BooleanNode, InputFileNode, CurrentFormNode, DataTableNode, DataTableFieldSelectorNode]\r\n };\r\n const { value } = this.executeInput(handleId, deep + 1, settings);\r\n return value;\r\n }\r\n}\r\n_SetDataTableFormValuesNode_tableRef = new WeakMap(), _SetDataTableFormValuesNode_formRef = new WeakMap();\r\nSetDataTableFormValuesNode.title = \"Set DataTable Form Values\";\r\nSetDataTableFormValuesNode.$trigger = FormBaseNode.createHandle({ id: 'trigger', displayName: 'Trigger', });\r\nSetDataTableFormValuesNode.$next = FormBaseNode.createHandle({ id: 'next', displayName: 'Next' });\r\nSetDataTableFormValuesNode.$dataTableRef = FormBaseNode.createHandle({ id: 'dataTableRef', displayName: 'DataTable Ref' });\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _SetFieldValueNode_ref;\r\nimport { Guid } from \"@ioip/core/lib\";\r\nimport { CForm } from \"../../forms/Form/CForm\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { FieldSelectorNode } from \"../field-selector/FieldSelectorNode\";\r\nimport { NumberNode } from \"../number/NumberNode\";\r\nimport { OpenPanelNode } from \"../open-panel/OpenPanelNode\";\r\nimport { QueryStringNode } from \"../query-string/QueryStringNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nexport class SetFieldValueNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _SetFieldValueNode_ref.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get form() {\r\n return __classPrivateFieldGet(this, _SetFieldValueNode_ref, \"f\");\r\n }\r\n execute(caller, connection, deep) {\r\n const ctrl = this._getInputField(deep);\r\n if (ctrl == null)\r\n return null;\r\n const value = this._getInputValue(deep);\r\n ctrl.value = value;\r\n this.executeOutput(SetFieldValueNode.nextHandle, deep);\r\n }\r\n _getInputField(deep) {\r\n const settings = {\r\n accept: [FieldSelectorNode],\r\n preprocessors: [\r\n createPreprocessor(OpenPanelNode, node => node.formRef),\r\n createPreprocessor(CForm, (form, edge) => {\r\n const fieldId = edge.sourceHandle;\r\n const field = form.getField(Guid.parse(fieldId));\r\n if (field == null)\r\n throw new Error(`Field not found: ${fieldId}`);\r\n return field;\r\n })\r\n ]\r\n };\r\n const { value: ctrl } = this.executeInput(SetFieldValueNode.fieldRefHandle, deep + 1, settings);\r\n if (ctrl == null)\r\n console.warn(`[${SetFieldValueNode.name}] InputField is null`);\r\n return ctrl;\r\n }\r\n _getInputValue(deep) {\r\n const settings = {\r\n accept: [QueryStringNode, NumberNode, StringNode, BooleanNode]\r\n };\r\n const { value } = this.executeInput(SetFieldValueNode.valueHandle, deep + 1, settings);\r\n return value;\r\n }\r\n}\r\n_SetFieldValueNode_ref = new WeakMap();\r\nSetFieldValueNode.triggerHandle = \"trigger\";\r\nSetFieldValueNode.fieldRefHandle = \"fieldRef\";\r\nSetFieldValueNode.valueHandle = \"value\";\r\nSetFieldValueNode.nextHandle = \"next\";\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _SetFormValuesNode_ref;\r\nimport { Guid } from \"@ioip/core/lib\";\r\nimport { CForm } from \"../../forms/Form/CForm\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { FieldSelectorNode } from \"../field-selector/FieldSelectorNode\";\r\nimport { NumberNode } from \"../number/NumberNode\";\r\nimport { OpenPanelNode } from \"../open-panel/OpenPanelNode\";\r\nimport { QueryStringNode } from \"../query-string/QueryStringNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nimport { FormBaseNode } from \"../form-base/FormBaseNode\";\r\nimport { LogicEngineNodeType } from \"../@engine/LogicEngineNodeType\";\r\nexport class SetFormValuesNode extends FormBaseNode {\r\n constructor(engine, schema) {\r\n super(engine, schema, {\r\n onGetFormId: () => {\r\n return this.engine.currentForm.objectId;\r\n }\r\n });\r\n _SetFormValuesNode_ref.set(this, void 0);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n get form() {\r\n return __classPrivateFieldGet(this, _SetFormValuesNode_ref, \"f\");\r\n }\r\n execute(caller, connection, deep) {\r\n const ctrl = this._getInputField(deep);\r\n if (ctrl == null)\r\n return null;\r\n const value = this._getInputValue(deep);\r\n ctrl.value = value;\r\n this.executeOutput(SetFormValuesNode.nextHandle, deep);\r\n return null;\r\n }\r\n _getInputField(deep) {\r\n const settings = {\r\n accept: [FieldSelectorNode],\r\n preprocessors: [\r\n createPreprocessor(OpenPanelNode, node => node.formRef),\r\n createPreprocessor(CForm, (form, edge) => {\r\n const fieldId = edge.sourceHandle;\r\n const field = form.getField(Guid.parse(fieldId));\r\n if (field == null)\r\n throw new Error(`Field not found: ${fieldId}`);\r\n return field;\r\n })\r\n ]\r\n };\r\n const { value: ctrl } = this.executeInput(SetFormValuesNode.fieldRefHandle, deep + 1, settings);\r\n if (ctrl == null)\r\n console.warn(`[${SetFormValuesNode.name}] InputField is null`);\r\n return ctrl;\r\n }\r\n _getInputValue(deep) {\r\n const settings = {\r\n accept: [QueryStringNode, NumberNode, StringNode, BooleanNode]\r\n };\r\n const { value } = this.executeInput(SetFormValuesNode.valueHandle, deep + 1, settings);\r\n return value;\r\n }\r\n}\r\n_SetFormValuesNode_ref = new WeakMap();\r\nSetFormValuesNode.triggerHandle = \"trigger\";\r\nSetFormValuesNode.fieldRefHandle = \"fieldRef\";\r\nSetFormValuesNode.valueHandle = \"value\";\r\nSetFormValuesNode.nextHandle = \"next\";\r\nSetFormValuesNode.title = 'Set Form Values';\r\nSetFormValuesNode.type = LogicEngineNodeType.setFormValues;\r\nSetFormValuesNode.group = 'Forms';\r\nSetFormValuesNode.executeOnClient = true;\r\nSetFormValuesNode.executeOnServer = true;\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class ShowMessageNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b;\r\n const [inputTitleEdge, inputTitleNode] = this.getInputNode(ShowMessageNode.titleHandle);\r\n const [inputTextEdge, inputTextNode] = this.getInputNode(ShowMessageNode.textHandle);\r\n const title = (_a = inputTitleNode === null || inputTitleNode === void 0 ? void 0 : inputTitleNode.execute(this, inputTitleEdge, deep + 1)) !== null && _a !== void 0 ? _a : '';\r\n const text = (_b = inputTextNode === null || inputTextNode === void 0 ? void 0 : inputTextNode.execute(this, inputTextEdge, deep + 1)) !== null && _b !== void 0 ? _b : '';\r\n this.engine.onShowMessage(title, text, () => this.onAccept());\r\n this.executeOutput(ShowMessageNode.nextHandle, deep);\r\n }\r\n onAccept() {\r\n debugger;\r\n }\r\n}\r\nShowMessageNode.triggerHandle = \"trigger\";\r\nShowMessageNode.titleHandle = \"title\";\r\nShowMessageNode.textHandle = \"text\";\r\nShowMessageNode.nextHandle = \"next\";\r\nShowMessageNode.onAcceptHandle = \"onAccept\";\r\n","import { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class ShowSuccessToastNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a, _b;\r\n const [inputTitleEdge, inputTitleNode] = this.getInputNode(ShowSuccessToastNode.titleHandle);\r\n const [inputTextEdge, inputTextNode] = this.getInputNode(ShowSuccessToastNode.textHandle);\r\n const title = (_a = inputTitleNode === null || inputTitleNode === void 0 ? void 0 : inputTitleNode.execute(this, inputTitleEdge, deep + 1)) !== null && _a !== void 0 ? _a : '';\r\n const text = (_b = inputTextNode === null || inputTextNode === void 0 ? void 0 : inputTextNode.execute(this, inputTextEdge, deep + 1)) !== null && _b !== void 0 ? _b : '';\r\n this.engine.showSuccessToast({ title, description: text });\r\n this.executeOutput(ShowSuccessToastNode.nextHandleId, deep);\r\n }\r\n}\r\nShowSuccessToastNode.triggerHandleId = \"trigger\";\r\nShowSuccessToastNode.titleHandle = \"title\";\r\nShowSuccessToastNode.textHandle = \"text\";\r\nShowSuccessToastNode.nextHandleId = \"next\";\r\n","import { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { BooleanNode } from \"../boolean/BooleanNode\";\r\nimport { CurrentFormNode } from \"../current-form/CurrentFormNode\";\r\nimport { DataTableFieldSelectorNode } from \"../datatable-field-selector/DataTableFieldSelectorNode\";\r\nimport { DataTableNode } from \"../datatable/DataTableNode\";\r\nimport { FieldSelectorNode } from \"../field-selector/FieldSelectorNode\";\r\nimport { FetchNode } from \"../fetch/FetchNode\";\r\nexport class SqlQueryActionNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const script = this.schema.data.value;\r\n if (isNullOrEmpty(script))\r\n return;\r\n const inputA = this.getInput(SqlQueryActionNode.inputA, deep);\r\n const inputB = this.getInput(SqlQueryActionNode.inputB, deep);\r\n const inputC = this.getInput(SqlQueryActionNode.inputC, deep);\r\n const inputD = this.getInput(SqlQueryActionNode.inputD, deep);\r\n const inputE = this.getInput(SqlQueryActionNode.inputE, deep);\r\n const inputF = this.getInput(SqlQueryActionNode.inputF, deep);\r\n const inputG = this.getInput(SqlQueryActionNode.inputG, deep);\r\n const inputH = this.getInput(SqlQueryActionNode.inputH, deep);\r\n const inputI = this.getInput(SqlQueryActionNode.inputI, deep);\r\n const inputJ = this.getInput(SqlQueryActionNode.inputJ, deep);\r\n try {\r\n const fn = new Function('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'isNullOrEmpty', `\r\n ${script}\r\n return fn(a, b, c, d, e, f, g, h, i, j, isNullOrEmpty);\r\n `);\r\n const result = fn(inputA, inputB, inputC, inputD, inputE, inputF, inputG, inputH, inputI, inputJ, isNullOrEmpty);\r\n return result;\r\n }\r\n catch (error) {\r\n }\r\n }\r\n getInput(handleId, deep) {\r\n const settings = {\r\n accept: [\r\n DataTableNode,\r\n DataTableFieldSelectorNode,\r\n BooleanNode,\r\n CurrentFormNode,\r\n FieldSelectorNode,\r\n FetchNode\r\n ]\r\n };\r\n const { value } = this.executeInput(handleId, deep + 1, settings);\r\n return value;\r\n }\r\n}\r\nSqlQueryActionNode.inputA = 'A';\r\nSqlQueryActionNode.inputB = 'B';\r\nSqlQueryActionNode.inputC = 'C';\r\nSqlQueryActionNode.inputD = 'D';\r\nSqlQueryActionNode.inputE = 'E';\r\nSqlQueryActionNode.inputF = 'F';\r\nSqlQueryActionNode.inputG = 'G';\r\nSqlQueryActionNode.inputH = 'H';\r\nSqlQueryActionNode.inputI = 'I';\r\nSqlQueryActionNode.inputJ = 'J';\r\nSqlQueryActionNode.outputHandleId = 'output';\r\n","var _a;\r\nimport { DataType } from \"../../types\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class SqlQueryRuleNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n }\r\n}\r\n_a = SqlQueryRuleNode;\r\nSqlQueryRuleNode.$paramA = _a.createHandle({ id: 'paramA', displayName: 'A', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramB = _a.createHandle({ id: 'paramB', displayName: 'B', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramC = _a.createHandle({ id: 'paramC', displayName: 'C', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramD = _a.createHandle({ id: 'paramD', displayName: 'D', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramE = _a.createHandle({ id: 'paramE', displayName: 'E', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramF = _a.createHandle({ id: 'paramF', displayName: 'F', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramG = _a.createHandle({ id: 'paramG', displayName: 'G', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramH = _a.createHandle({ id: 'paramH', displayName: 'H', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramI = _a.createHandle({ id: 'paramI', displayName: 'I', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramJ = _a.createHandle({ id: 'paramJ', displayName: 'J', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramK = _a.createHandle({ id: 'paramK', displayName: 'K', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramL = _a.createHandle({ id: 'paramL', displayName: 'L', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramM = _a.createHandle({ id: 'paramM', displayName: 'M', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramN = _a.createHandle({ id: 'paramN', displayName: 'N', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramO = _a.createHandle({ id: 'paramO', displayName: 'O', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$paramP = _a.createHandle({ id: 'paramP', displayName: 'P', dataType: DataType.int, accept: [] });\r\nSqlQueryRuleNode.$output = _a.createHandle({ id: 'output', displayName: 'Output' });\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Sum2Node_instances, _Sum2Node_getInputValue;\r\nimport { DataType } from \"../../types\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { DataTableFieldSelectorNode } from \"../datatable-field-selector/DataTableFieldSelectorNode\";\r\nimport { NumberNode } from \"../number/NumberNode\";\r\nimport { CurrentFormNode } from \"../current-form/CurrentFormNode\";\r\nimport CNumberField from \"../../forms/NumberField/CNumberField\";\r\nexport class Sum2Node extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n _Sum2Node_instances.add(this);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n const value1 = __classPrivateFieldGet(this, _Sum2Node_instances, \"m\", _Sum2Node_getInputValue).call(this, 'input1', deep);\r\n const value2 = __classPrivateFieldGet(this, _Sum2Node_instances, \"m\", _Sum2Node_getInputValue).call(this, 'input2', deep);\r\n const result = value1 + value2;\r\n return result;\r\n }\r\n}\r\n_Sum2Node_instances = new WeakSet(), _Sum2Node_getInputValue = function _Sum2Node_getInputValue(handleId, deep) {\r\n const settings = {\r\n accept: Sum2Node.accept,\r\n preprocessors: [\r\n createPreprocessor(CNumberField, node => node.value)\r\n ]\r\n };\r\n const { value } = this.executeInput(handleId, deep + 1, settings);\r\n const result = Array.isArray(value) ? value.reduce((a, b) => {\r\n if (typeof b === 'number')\r\n return a + b;\r\n return a;\r\n }, 0) : value;\r\n return result;\r\n};\r\nSum2Node.accept = [Sum2Node, NumberNode, DataTableFieldSelectorNode, CurrentFormNode];\r\nSum2Node.inputs = {\r\n input1: FlowNode.createHandle({\r\n id: 'input1',\r\n displayName: 'Number',\r\n dataType: DataType.string,\r\n accept: Sum2Node.accept\r\n }),\r\n input2: FlowNode.createHandle({\r\n id: 'input2',\r\n displayName: 'Number',\r\n dataType: DataType.int,\r\n accept: Sum2Node.accept\r\n })\r\n};\r\nSum2Node.outputs = {\r\n output: FlowNode.createHandle({\r\n id: 'output',\r\n displayName: 'Number',\r\n dataType: DataType.undefined,\r\n accept: []\r\n })\r\n};\r\n","import React from \"react\";\r\nimport { Label } from \"@fluentui/react\";\r\nimport { NodeColors } from \"../@core/FlowNodeConstants\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nexport class LabelNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep) {\r\n var _a;\r\n const text = (_a = this.schema.data.text) !== null && _a !== void 0 ? _a : '';\r\n this.writeLog(`[UILabelNode] ${text}`, deep, `color: white; background-color: ${NodeColors.fieldSelector}`);\r\n return React.createElement(Label, { style: { fontWeight: 'normal' } },\r\n \" \",\r\n text,\r\n \" \");\r\n }\r\n}\r\n","var _a;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { LogicEngineNodeTypes } from \"../@engine/LogicEngineNodeTypes\";\r\nimport { OpenPanelNode } from \"../open-panel/OpenPanelNode\";\r\nexport class UpdateEntityItemNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep = 0) {\r\n const settings = {\r\n preprocessors: [createPreprocessor(OpenPanelNode, node => node.formRef)]\r\n };\r\n const { value: form } = this.executeInput(UpdateEntityItemNode.$entityId.id, deep + 1, settings);\r\n if (!form)\r\n return null;\r\n if (form.validate()) {\r\n form.showConfirmationDialogAsync().then(() => {\r\n form.saveV2Async().then(() => this.executeOutput(UpdateEntityItemNode.$next.id, deep + 1));\r\n });\r\n }\r\n return form;\r\n }\r\n}\r\n_a = UpdateEntityItemNode;\r\nUpdateEntityItemNode.title = 'Update Entity Item';\r\nUpdateEntityItemNode.type = LogicEngineNodeTypes.updateSingleEntityItem;\r\nUpdateEntityItemNode.executeOnClient = true;\r\nUpdateEntityItemNode.executeOnServer = true;\r\nUpdateEntityItemNode.$trigger = _a.createHandle({ id: 'trigger' });\r\nUpdateEntityItemNode.$next = _a.createHandle({ id: 'next' });\r\nUpdateEntityItemNode.$entityId = _a.createHandle({ id: 'entityId' });\r\nUpdateEntityItemNode.$itemId = _a.createHandle({ id: 'itemId' });\r\n","var _a;\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { OpenPanelNode } from \"../open-panel/OpenPanelNode\";\r\nexport class UpdateFormNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep = 0) {\r\n const settings = {\r\n preprocessors: [createPreprocessor(OpenPanelNode, node => node.formRef)]\r\n };\r\n const { value: form } = this.executeInput(UpdateFormNode.formIdHandle.id, deep + 1, settings);\r\n if (!form)\r\n return null;\r\n if (form.validate()) {\r\n form.showConfirmationDialogAsync().then(() => {\r\n form.saveV2Async().then(() => this.executeOutput(UpdateFormNode.nextHandle.id, deep + 1));\r\n });\r\n }\r\n return form;\r\n }\r\n}\r\n_a = UpdateFormNode;\r\nUpdateFormNode.title = 'Update Form';\r\nUpdateFormNode.executeOnClient = true;\r\nUpdateFormNode.executeOnServer = true;\r\nUpdateFormNode.inputTriggerHandle = _a.createHandle({ id: 'trigger' });\r\nUpdateFormNode.nextHandle = _a.createHandle({ id: 'next' });\r\nUpdateFormNode.formIdHandle = _a.createHandle({ id: 'formId' });\r\nUpdateFormNode.itemIdHandle = _a.createHandle({ id: 'itemId' });\r\n","import CControl from \"../../forms/Control/CControl\";\r\nimport { CForm } from \"../../forms/Form/CForm\";\r\nimport { DataType } from \"../../types\";\r\nimport { InputFileConnector } from \"../@conectors/input-file/InputFileConnector\";\r\nimport { FlowNode } from \"../@core/FlowNodeBase\";\r\nimport { createPreprocessor } from \"../@core/IExecuteInputNodeOptions\";\r\nimport { CurrentFormNode } from \"../current-form/CurrentFormNode\";\r\nimport { NumberNode } from \"../number/NumberNode\";\r\nimport { StringNode } from \"../string/StringNode\";\r\nexport class UpdateInputFileNode extends FlowNode {\r\n constructor(engine, schema) {\r\n super(engine, schema);\r\n }\r\n get allowMultipleExecutions() {\r\n return true;\r\n }\r\n execute(caller, connection, deep = 0) {\r\n const connector = this.getConnector(InputFileConnector);\r\n const setting = {\r\n accept: [StringNode, CurrentFormNode],\r\n preprocessors: [\r\n createPreprocessor(CControl, node => node.value),\r\n createPreprocessor(CForm, (node, edge) => {\r\n const fieldId = edge.sourceHandle;\r\n const field = node.getField(fieldId);\r\n return field === null || field === void 0 ? void 0 : field.value;\r\n })\r\n ]\r\n };\r\n const { edge: subjectEdge, value: subject } = this.executeInput(UpdateInputFileNode.subject.id, deep, setting);\r\n const { edge: procedureEdge, value: procedure } = this.executeInput(UpdateInputFileNode.administrativeProcedure.id, deep, {\r\n accept: [NumberNode]\r\n });\r\n const values = {};\r\n if (subjectEdge != null)\r\n values.subject = subject;\r\n if (procedureEdge != null)\r\n values.administrativeProcedure = procedure;\r\n connector === null || connector === void 0 ? void 0 : connector.setValues(values);\r\n this.executeOutput(UpdateInputFileNode.nextHandle, deep);\r\n return null;\r\n }\r\n}\r\nUpdateInputFileNode.triggerHandle = 'trigger';\r\nUpdateInputFileNode.nextHandle = 'next';\r\nUpdateInputFileNode.subject = FlowNode.createHandle({\r\n id: 'subject',\r\n displayName: 'Subject',\r\n dataType: DataType.string\r\n});\r\nUpdateInputFileNode.administrativeProcedure = FlowNode.createHandle({\r\n id: 'administrativeProcedure',\r\n displayName: 'Administrative procedure',\r\n dataType: DataType.int\r\n});\r\nUpdateInputFileNode.pqrsClassification = FlowNode.createHandle({\r\n id: 'pqrsClassification',\r\n displayName: 'PQRS Classification',\r\n dataType: DataType.int\r\n});\r\n","import { And2Node, And3Node, And4Node, And6Node } from '../and/AndNode';\r\nimport { BooleanNode } from '../boolean/BooleanNode';\r\nimport { ButtonNode } from '../button/ButtonNode';\r\nimport { CloseDialogNode } from '../close-dialog/CloseDialogNode';\r\nimport { ClosePanelNode } from '../close-panel/ClosePanelNode';\r\nimport { CodeActionNode } from '../code-action/CodeActionNode';\r\nimport { CodeRuleNode } from '../code-rule/CodeRuleNode';\r\nimport { ComboBoxNode } from '../combobox/ComboBoxNode';\r\nimport { ConcatStringNode } from '../concat-string/ConcatStringNode';\r\nimport { ConditionalActionNode } from '../conditional-action/ConditionalActionNode';\r\nimport { ConditionalRuleNode } from '../conditional-rule/ConditionalRuleRule';\r\nimport { ConsoleLogNode } from '../console-log/ConsoleLogNode';\r\nimport { CountItemsNode } from '../count/CountItemsNode';\r\nimport { CreateCaseFileDocument } from '../create-case-file-document/CreateCaseFileDocument';\r\nimport { CurrentFormNode } from '../current-form/CurrentFormNode';\r\nimport { CurrentUserNode } from '../current-user/CurrentUserNode';\r\nimport { DataTableFieldSelectorNode } from '../datatable-field-selector/DataTableFieldSelectorNode';\r\nimport { DataTableRequestFilterNode } from '../datatable-request-filter/DataTableRequestFilterNode';\r\nimport { DataTableRequestNode } from '../datatable-request/DataTableRequestNode';\r\nimport { DataTableResponseNode } from '../datatable-response/DataTableResponseNode';\r\nimport { DataTableNode } from '../datatable/DataTableNode';\r\nimport { DateTimeNode } from '../datetime-node/DateTimeNode';\r\nimport { DivisionRuleNode } from '../division/DivisionRuleNode';\r\nimport { EqualsNode } from '../equals/EqualsNode';\r\nimport { FetchNode } from '../fetch/FetchNode';\r\nimport { FieldDataSourceNode } from '../field-datasource/FieldDataSourceNode';\r\nimport { FieldSelectorNode } from '../field-selector/FieldSelectorNode';\r\nimport { FilterItemsNode } from '../filter-items/FilterItemsNode';\r\nimport { FormDataSourceNode } from '../form-datasource/FormDataSourceNode';\r\nimport { FormSelectorNode } from '../form-selector/FormSelectorNode';\r\nimport { GreaterThanNode } from '../greather-than/GreaterThanNode';\r\nimport { InitNode } from '../init/InitNode';\r\nimport { InputFileNode } from '../input-file/InputFileNode';\r\nimport { LessThanNode } from '../less-than/LessThanNode';\r\nimport { LoadEntityItemNode } from '../load-entity-item/LoadEntityItemNode';\r\nimport { LoadFormNode } from '../load-form/LoadFormNode';\r\nimport { MultiplicationRuleNode } from '../multiplication/MultiplicationRuleNode';\r\nimport { NavigateToNode } from '../nativage-to-absolute-url/NavigateToNode';\r\nimport { NotNode } from '../not/NotNode';\r\nimport { NumberNode } from '../number/NumberNode';\r\nimport { OpenDialogNode } from '../open-dialog/OpenDialogNode';\r\nimport { OpenPanelNode } from '../open-panel/OpenPanelNode';\r\nimport { Or2Node, Or3Node, Or4Node, Or6Node } from '../or/OrNode';\r\nimport { PanelTypeNode } from '../panel-type/PanelTypeNode';\r\nimport { PercentageNode } from '../percentage/PercentageNode';\r\nimport { QueryStringNode } from '../query-string/QueryStringNode';\r\nimport { ReadParameterNode } from '../read-parameter/ReadParameterNode';\r\nimport { RefreshDataTableNode } from '../refresh-datatable/RefreshDataTableNode';\r\nimport { ResultNode } from '../result/ResultNode';\r\nimport { SaveFormNode } from '../save-form/SaveFormNode';\r\nimport { ScopeNode } from '../scope/ScopeNode';\r\nimport { SetCurrentFormValuesNode } from '../set-current-form-values/SetCurrentFormValuesNode';\r\nimport { SetDataTableFormValuesNode } from '../set-datatable-form-values/SetDataTableFormValuesNode';\r\nimport { SetFieldValueNode } from '../set-field-value/SetFieldValueNode';\r\nimport { SetFormValuesNode } from '../set-form-values/SetFormValuesNode';\r\nimport { ShowMessageNode } from '../show-message/ShowMessageNode';\r\nimport { ShowSuccessToastNode } from '../show-sucess-toast/ShowSuccessToastNode';\r\nimport { SqlQueryActionNode } from '../sql-query-action/SqlQueryActionNode';\r\nimport { SqlQueryRuleNode } from '../sql-query-rule/SqlQueryRuleNode';\r\nimport { StringNode } from '../string/StringNode';\r\nimport { Sum2Node } from '../sum/SumNode';\r\nimport { LabelNode } from '../ui-label/LabelNode';\r\nimport { UpdateEntityItemNode } from '../update-entity-item/UpdateEntityItemNode';\r\nimport { UpdateFormNode } from '../update-form/UpdateFormNode';\r\nimport { UpdateInputFileNode } from '../update-input-file/UpdateInputFileNode';\r\nimport { LogicEngineNodeType } from './LogicEngineNodeType';\r\nimport { LogicEngineNodeTypes } from './LogicEngineNodeTypes';\r\nfunction createDescriptor(type) {\r\n var _a, _b, _c, _d, _e;\r\n const t = type;\r\n return {\r\n type: (_a = t.type) !== null && _a !== void 0 ? _a : 'PXC: Unknown',\r\n displayText: (_b = t.title) !== null && _b !== void 0 ? _b : t.name,\r\n group: (_c = t.group) !== null && _c !== void 0 ? _c : 'Default',\r\n executeOnClient: (_d = t.executeOnClient) !== null && _d !== void 0 ? _d : false,\r\n executeOnServer: (_e = t.executeOnServer) !== null && _e !== void 0 ? _e : false,\r\n runtime: t\r\n };\r\n}\r\nconst descriptors = [\r\n {\r\n type: LogicEngineNodeTypes.boolean,\r\n displayText: 'Boolean',\r\n group: 'Values',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: BooleanNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.number,\r\n displayText: 'Number',\r\n group: 'Values',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: NumberNode,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.string,\r\n displayText: 'String',\r\n group: 'Text',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: StringNode,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.contactString,\r\n displayText: 'Concat string',\r\n group: 'Text',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: ConcatStringNode,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.dateTime,\r\n displayText: DateTimeNode.title,\r\n group: 'Text',\r\n executeOnClient: DateTimeNode.executeOnClient,\r\n executeOnServer: DateTimeNode.executeOnServer,\r\n runtime: DateTimeNode,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.equals,\r\n displayText: EqualsNode.title,\r\n group: 'Comparison',\r\n executeOnClient: EqualsNode.executeOnClient,\r\n executeOnServer: EqualsNode.executeOnServer,\r\n runtime: EqualsNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.notEquals,\r\n displayText: 'Not equals',\r\n group: 'Comparison',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: EqualsNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.greaterThan,\r\n displayText: 'Greater than',\r\n group: 'Comparison',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: GreaterThanNode,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.lessThan,\r\n displayText: 'Less than',\r\n group: 'Comparison',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: LessThanNode,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.and,\r\n displayText: 'And',\r\n group: 'Logical',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: And2Node,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.and3,\r\n displayText: 'And (3)',\r\n group: 'Logical',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: And3Node,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.and4,\r\n displayText: 'And (4)',\r\n group: 'Logical',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: And4Node,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.and6,\r\n displayText: 'And (6)',\r\n group: 'Logical',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: And6Node,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.or,\r\n displayText: 'Or',\r\n group: 'Logical',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: Or2Node\r\n },\r\n {\r\n type: LogicEngineNodeTypes.or3,\r\n displayText: 'Or (3)',\r\n group: 'Logical',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: Or3Node\r\n },\r\n {\r\n type: LogicEngineNodeTypes.or4,\r\n displayText: 'Or (4)',\r\n group: 'Logical',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: Or4Node\r\n },\r\n {\r\n type: LogicEngineNodeTypes.or6,\r\n displayText: 'Or (6)',\r\n group: 'Logical',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: Or6Node\r\n },\r\n {\r\n type: LogicEngineNodeTypes.not,\r\n displayText: 'Not',\r\n group: 'Logical',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: NotNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.queryString,\r\n displayText: 'Query string',\r\n group: 'Url',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: QueryStringNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.redirect,\r\n displayText: 'Navigate To',\r\n group: 'Url',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: NavigateToNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.fetch,\r\n displayText: 'Fetch',\r\n group: 'Fetch',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: FetchNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.fieldSelector,\r\n displayText: 'Field selector',\r\n group: 'Fields',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: FieldSelectorNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.setFieldValue,\r\n displayText: 'Set field value',\r\n group: 'Fields',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: SetFieldValueNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.comboBox,\r\n displayText: 'ComboBox',\r\n group: 'Fields',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: ComboBoxNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.formSelector,\r\n displayText: FormSelectorNode.title,\r\n group: 'Forms',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: FormSelectorNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.currentForm,\r\n displayText: CurrentFormNode.title,\r\n group: 'Forms',\r\n executeOnClient: CurrentFormNode.executeOnClient,\r\n executeOnServer: CurrentFormNode.executeOnServer,\r\n runtime: CurrentFormNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.saveForm,\r\n displayText: SaveFormNode.title,\r\n group: 'Forms',\r\n executeOnClient: SaveFormNode.executeOnClient,\r\n executeOnServer: SaveFormNode.executeOnServer,\r\n runtime: SaveFormNode,\r\n allowMultipleInputs: true\r\n },\r\n createDescriptor(LoadFormNode),\r\n {\r\n type: LogicEngineNodeTypes.updateForm,\r\n displayText: UpdateFormNode.title,\r\n group: 'Forms',\r\n executeOnClient: UpdateFormNode.executeOnClient,\r\n executeOnServer: UpdateFormNode.executeOnServer,\r\n runtime: UpdateFormNode\r\n },\r\n createDescriptor(UpdateEntityItemNode),\r\n createDescriptor(LoadEntityItemNode),\r\n createDescriptor(CreateCaseFileDocument),\r\n {\r\n type: LogicEngineNodeTypes.refreshDataTable,\r\n displayText: 'Refresh data table',\r\n group: 'DataTable',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: RefreshDataTableNode,\r\n allowMultipleInputs: true\r\n },\r\n {\r\n type: LogicEngineNodeTypes.dataTableFieldSelector,\r\n displayText: 'Data table field selector',\r\n group: 'DataTable',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: DataTableFieldSelectorNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.dataTable,\r\n displayText: 'Data table',\r\n group: 'DataTable',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: DataTableNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.dataTableRequest,\r\n displayText: 'Data table request',\r\n group: 'DataTable',\r\n executeOnClient: false,\r\n executeOnServer: true,\r\n runtime: DataTableRequestNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.dataTableRequestFilter,\r\n displayText: DataTableRequestFilterNode.title,\r\n group: 'DataTable',\r\n executeOnClient: DataTableRequestFilterNode.executeOnClient,\r\n executeOnServer: DataTableRequestFilterNode.executeOnServer,\r\n runtime: DataTableRequestFilterNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.dataTableResponse,\r\n displayText: 'Data table response',\r\n group: 'DataTable',\r\n executeOnClient: false,\r\n executeOnServer: true,\r\n runtime: DataTableResponseNode\r\n },\r\n createDescriptor(FieldDataSourceNode),\r\n createDescriptor(FormDataSourceNode),\r\n {\r\n type: LogicEngineNodeTypes.createProcessInstanceVariable,\r\n displayText: 'Create process instance variable',\r\n group: 'Process instance',\r\n executeOnClient: false,\r\n executeOnServer: true,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.sendEmail,\r\n displayText: 'Send email',\r\n group: 'Others',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.buttonNode,\r\n displayText: 'Button',\r\n group: 'Others',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: ButtonNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.eventType,\r\n displayText: 'Event type',\r\n group: 'Others',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.percentage,\r\n displayText: 'Percentage',\r\n group: 'Others',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: PercentageNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.select,\r\n displayText: 'Select',\r\n group: 'Others',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.uxContainer,\r\n displayText: 'Container',\r\n group: 'UI',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: LabelNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.uxLabel,\r\n displayText: 'Label',\r\n group: 'UI',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: LabelNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.uxLink,\r\n displayText: 'Link',\r\n group: 'UI',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: LabelNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.uxLinkPanel,\r\n displayText: 'Link panel',\r\n group: 'UI',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: LabelNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.openDialog,\r\n displayText: 'Open dialog',\r\n group: 'UI',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: OpenDialogNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.closeDialog,\r\n displayText: 'Close dialog',\r\n group: 'UI',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: CloseDialogNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.sum,\r\n displayText: 'Sum',\r\n group: 'Math',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: Sum2Node\r\n },\r\n {\r\n type: LogicEngineNodeTypes.sum3,\r\n displayText: 'Sum (3)',\r\n group: 'Math',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n },\r\n {\r\n type: LogicEngineNodeTypes.multiplicationRule,\r\n displayText: 'Multiplication rule',\r\n group: 'Math',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: MultiplicationRuleNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.divisionRule,\r\n displayText: 'Division rule',\r\n group: 'Math',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: DivisionRuleNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.panelType,\r\n displayText: 'Panel type',\r\n group: 'Panel',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: PanelTypeNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.openPanel,\r\n displayText: 'Open panel',\r\n group: 'Panel',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: OpenPanelNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.closePanel,\r\n displayText: 'Close panel',\r\n group: 'Panel',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: ClosePanelNode,\r\n allowMultipleInputs: true\r\n },\r\n {\r\n type: LogicEngineNodeTypes.result,\r\n displayText: 'Result',\r\n group: '(Main)',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: ResultNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.init,\r\n displayText: 'Init',\r\n group: '(Main)',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: InitNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.showMessage,\r\n displayText: 'Show message',\r\n group: 'Messages',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: ShowMessageNode,\r\n allowMultipleInputs: true\r\n },\r\n {\r\n type: LogicEngineNodeTypes.showSuccessToast,\r\n displayText: 'Show success toast',\r\n group: 'Messages',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: ShowSuccessToastNode,\r\n allowMultipleInputs: true\r\n },\r\n {\r\n type: LogicEngineNodeTypes.consoleLog,\r\n displayText: 'Console log',\r\n group: 'Log',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: ConsoleLogNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.text,\r\n displayText: 'Text',\r\n group: 'Text',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: StringNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.conditionalAction,\r\n displayText: 'Conditional action',\r\n group: 'Condition',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: ConditionalActionNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.conditionalRule,\r\n displayText: 'Conditional rule',\r\n group: 'Condition',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: ConditionalRuleNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.code,\r\n displayText: 'Code rule',\r\n group: 'Code',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: CodeRuleNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.codeAction,\r\n displayText: 'Code action',\r\n group: 'Code',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: CodeActionNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.sqlAction,\r\n displayText: 'SQL action',\r\n group: 'Code',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: SqlQueryActionNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.sqlRule,\r\n displayText: 'SQL rule',\r\n group: 'Code',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: SqlQueryRuleNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.filterItems,\r\n displayText: 'Filter items',\r\n group: 'Filters',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: FilterItemsNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.countItems,\r\n displayText: 'Count items',\r\n group: 'Count',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: CountItemsNode\r\n },\r\n {\r\n type: LogicEngineNodeTypes.currentUser,\r\n displayText: 'Current user',\r\n group: 'Current user',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: CurrentUserNode\r\n },\r\n createDescriptor(SetFormValuesNode),\r\n {\r\n type: LogicEngineNodeType.setCurrentFormValues,\r\n displayText: 'Set current form values',\r\n group: 'Form',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: SetCurrentFormValuesNode\r\n },\r\n {\r\n type: LogicEngineNodeType.setDataTableFormValues,\r\n displayText: 'Set datatable form values',\r\n group: 'Form',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: SetDataTableFormValuesNode\r\n },\r\n {\r\n type: LogicEngineNodeType.updateInputFile,\r\n displayText: 'Update input file',\r\n group: 'Input file',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: UpdateInputFileNode\r\n },\r\n {\r\n type: LogicEngineNodeType.inputFile,\r\n displayText: 'Input file',\r\n group: 'Input file',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: InputFileNode\r\n },\r\n {\r\n type: LogicEngineNodeType.inputFile,\r\n displayText: 'Input file',\r\n group: 'Input file',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: InputFileNode\r\n },\r\n {\r\n type: LogicEngineNodeType.contact,\r\n displayText: 'Contact',\r\n group: 'TramiteX',\r\n executeOnClient: true,\r\n executeOnServer: false,\r\n runtime: InputFileNode\r\n },\r\n {\r\n type: LogicEngineNodeType.scope,\r\n displayText: 'Scope',\r\n group: 'Core',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: ScopeNode\r\n },\r\n {\r\n type: LogicEngineNodeType.readParameter,\r\n displayText: 'Read parameter',\r\n group: 'Core',\r\n executeOnClient: true,\r\n executeOnServer: true,\r\n runtime: ReadParameterNode\r\n },\r\n];\r\nconst findDescriptor = (type) => {\r\n const descriptor = descriptors.find(x => x.type === type);\r\n if (!descriptor)\r\n throw new Error(`Descriptor not found for type ${type}. Please ensure that the type is registered in LogicEngineSettings.ts`);\r\n return descriptor;\r\n};\r\nexport const createNodeDescriptor = (type, options) => (Object.assign(Object.assign({}, findDescriptor(type)), { component: options.component, getHandleStyles: options.getHandleStyles }));\r\nconst mathNodeTypes = [\r\n LogicEngineNodeTypes.sum,\r\n LogicEngineNodeTypes.multiplicationRule,\r\n LogicEngineNodeTypes.divisionRule,\r\n LogicEngineNodeTypes.percentage,\r\n LogicEngineNodeTypes.countItems,\r\n];\r\nconst panelNodeTypes = [\r\n LogicEngineNodeTypes.openPanel,\r\n LogicEngineNodeTypes.closePanel\r\n];\r\nconst logicNodeTypes = [\r\n LogicEngineNodeTypes.and,\r\n LogicEngineNodeTypes.or,\r\n LogicEngineNodeTypes.not,\r\n LogicEngineNodeTypes.equals,\r\n LogicEngineNodeTypes.notEquals,\r\n LogicEngineNodeTypes.greaterThan,\r\n LogicEngineNodeTypes.lessThan,\r\n LogicEngineNodeTypes.containsRole\r\n];\r\nexport const LogicEngineSetttings = {\r\n isMultipleInputAllowed: (nodeType) => {\r\n const node = descriptors.find(x => x.type === nodeType);\r\n if (!node) {\r\n return false;\r\n }\r\n return node.allowMultipleInputs;\r\n },\r\n getClientRuntimeTypes: () => {\r\n const clientRuntimeTypes = descriptors.filter(x => x.executeOnClient).reduce((current, item) => {\r\n current[item.type] = item.runtime;\r\n return current;\r\n }, {});\r\n return clientRuntimeTypes;\r\n },\r\n getMathNodeTypes: () => mathNodeTypes,\r\n getPanelNodeTypes: () => panelNodeTypes,\r\n getLogicNodeTypes: () => logicNodeTypes\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _LogicEngine_nodes, _LogicEngine_edges, _LogicEngine_form, _LogicEngine_type, _LogicEngine_args;\r\nimport { FlowConnection } from \"../@core/FlowConnection\";\r\nimport { LogicEngineSetttings } from \"./LogicEngineSettings\";\r\nconst defs = LogicEngineSetttings.getClientRuntimeTypes();\r\nexport class LogicEngine {\r\n constructor(props) {\r\n _LogicEngine_nodes.set(this, []);\r\n _LogicEngine_edges.set(this, []);\r\n _LogicEngine_form.set(this, void 0);\r\n _LogicEngine_type.set(this, void 0);\r\n _LogicEngine_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _LogicEngine_args, props, \"f\");\r\n __classPrivateFieldSet(this, _LogicEngine_nodes, props.nodes.map(x => {\r\n const type = defs[x.type];\r\n if (type == null) {\r\n console.warn(`Node type \"${x.type}\" not found.`);\r\n return null;\r\n }\r\n return new defs[x.type](this, x);\r\n }).filter(x => x != null), \"f\");\r\n __classPrivateFieldSet(this, _LogicEngine_edges, props.edges.map(x => new FlowConnection(this, x)), \"f\");\r\n __classPrivateFieldSet(this, _LogicEngine_form, props.currentForm, \"f\");\r\n __classPrivateFieldSet(this, _LogicEngine_type, props.type, \"f\");\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _LogicEngine_args, \"f\").name;\r\n }\r\n get nodes() {\r\n return __classPrivateFieldGet(this, _LogicEngine_nodes, \"f\");\r\n }\r\n get edges() {\r\n return __classPrivateFieldGet(this, _LogicEngine_edges, \"f\");\r\n }\r\n get currentForm() {\r\n return __classPrivateFieldGet(this, _LogicEngine_form, \"f\");\r\n }\r\n get scope() {\r\n return __classPrivateFieldGet(this, _LogicEngine_args, \"f\").currentForm.scope;\r\n }\r\n get project() {\r\n return __classPrivateFieldGet(this, _LogicEngine_args, \"f\").project;\r\n }\r\n get log() {\r\n return __classPrivateFieldGet(this, _LogicEngine_args, \"f\").log === true;\r\n }\r\n get host() {\r\n return __classPrivateFieldGet(this, _LogicEngine_args, \"f\").host;\r\n }\r\n get connectors() {\r\n var _a, _b;\r\n return (_b = (_a = __classPrivateFieldGet(this, _LogicEngine_args, \"f\").currentForm) === null || _a === void 0 ? void 0 : _a.connectors) !== null && _b !== void 0 ? _b : [];\r\n }\r\n openPanel(options) {\r\n const engine = __classPrivateFieldGet(this, _LogicEngine_args, \"f\").currentForm.runtime;\r\n return engine.openPanel(options);\r\n }\r\n openDialog(options) {\r\n const engine = __classPrivateFieldGet(this, _LogicEngine_args, \"f\").currentForm.runtime;\r\n return engine.openDialog(options);\r\n }\r\n showSuccessToast(notification) {\r\n var _a, _b;\r\n (_b = (_a = __classPrivateFieldGet(this, _LogicEngine_args, \"f\")).onShowSuccessToast) === null || _b === void 0 ? void 0 : _b.call(_a, notification);\r\n }\r\n createHttpClient() {\r\n var _a, _b;\r\n return (_b = (_a = __classPrivateFieldGet(this, _LogicEngine_args, \"f\")).onCreateHttpClient) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n onShowMessage(title, text, onCloseCallback) {\r\n var _a, _b;\r\n (_b = (_a = __classPrivateFieldGet(this, _LogicEngine_args, \"f\")).onShowMessage) === null || _b === void 0 ? void 0 : _b.call(_a, title, text, onCloseCallback);\r\n }\r\n get page() {\r\n return __classPrivateFieldGet(this, _LogicEngine_args, \"f\").page;\r\n }\r\n execute() {\r\n var _a;\r\n const type = (_a = __classPrivateFieldGet(this, _LogicEngine_type, \"f\")) !== null && _a !== void 0 ? _a : 'result';\r\n const resultNode = __classPrivateFieldGet(this, _LogicEngine_nodes, \"f\").find(x => x.type === type);\r\n if (resultNode == null)\r\n return null;\r\n const result = resultNode.execute(null, null, 1);\r\n return result;\r\n }\r\n findEdge(predicate) {\r\n return __classPrivateFieldGet(this, _LogicEngine_edges, \"f\").find(predicate);\r\n }\r\n findEdges(predicate) {\r\n return __classPrivateFieldGet(this, _LogicEngine_edges, \"f\").filter(predicate);\r\n }\r\n findNode(nodeId) {\r\n return this.nodes.find(x => x.id === nodeId);\r\n }\r\n __findNode(nodeId) {\r\n return this.nodes.find(x => x.id === nodeId);\r\n }\r\n static create(options) {\r\n const engine = new LogicEngine(options);\r\n return () => {\r\n const result = engine.execute();\r\n return result;\r\n };\r\n }\r\n}\r\n_LogicEngine_nodes = new WeakMap(), _LogicEngine_edges = new WeakMap(), _LogicEngine_form = new WeakMap(), _LogicEngine_type = new WeakMap(), _LogicEngine_args = new WeakMap();\r\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _CDataSourceCollection_dataSources, _CDataSourceCollection_archivox;\r\nimport { ArchivoX } from \"@ioip/archivox/lib/providers/ArchivoxProvider\";\r\nimport { NativeType } from \"../../types/NativeType\";\r\nimport { CDataSource } from \"./CDataSource\";\r\nexport class CDataSourceCollection {\r\n constructor(pageDataSources) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\r\n _CDataSourceCollection_dataSources.set(this, {});\r\n _CDataSourceCollection_archivox.set(this, void 0);\r\n for (let i = 0; i < pageDataSources.length; i++) {\r\n const pageDataSource = pageDataSources[i];\r\n const dataSource = new CDataSource(pageDataSource.dataSource);\r\n for (let j = 0; j < pageDataSource.fields.length; j++) {\r\n const fieldId = pageDataSource.fields[j];\r\n __classPrivateFieldGet(this, _CDataSourceCollection_dataSources, \"f\")[fieldId] = dataSource;\r\n }\r\n }\r\n __classPrivateFieldSet(this, _CDataSourceCollection_archivox, new ArchivoX({\r\n countries: ((_b = (_a = pageDataSources.find(x => { var _a, _b; return ((_a = x.dataSource) === null || _a === void 0 ? void 0 : _a.isNative) && ((_b = x.dataSource) === null || _b === void 0 ? void 0 : _b.type) == NativeType.Country; })) === null || _a === void 0 ? void 0 : _a.dataSource) === null || _b === void 0 ? void 0 : _b.items) || [],\r\n departments: ((_d = (_c = pageDataSources.find(x => { var _a, _b; return ((_a = x.dataSource) === null || _a === void 0 ? void 0 : _a.isNative) && ((_b = x.dataSource) === null || _b === void 0 ? void 0 : _b.type) == NativeType.Department; })) === null || _c === void 0 ? void 0 : _c.dataSource) === null || _d === void 0 ? void 0 : _d.items) || [],\r\n cities: ((_f = (_e = pageDataSources.find(x => { var _a, _b; return ((_a = x.dataSource) === null || _a === void 0 ? void 0 : _a.isNative) && ((_b = x.dataSource) === null || _b === void 0 ? void 0 : _b.type) == NativeType.City; })) === null || _e === void 0 ? void 0 : _e.dataSource) === null || _f === void 0 ? void 0 : _f.items) || [],\r\n sections: (((_h = (_g = pageDataSources.find(x => { var _a, _b; return ((_a = x.dataSource) === null || _a === void 0 ? void 0 : _a.isNative) && ((_b = x.dataSource) === null || _b === void 0 ? void 0 : _b.type) == NativeType.Section; })) === null || _g === void 0 ? void 0 : _g.dataSource) === null || _h === void 0 ? void 0 : _h.items) || []),\r\n users: (((_k = (_j = pageDataSources.find(x => { var _a, _b; return ((_a = x.dataSource) === null || _a === void 0 ? void 0 : _a.isNative) && ((_b = x.dataSource) === null || _b === void 0 ? void 0 : _b.type) == NativeType.User; })) === null || _j === void 0 ? void 0 : _j.dataSource) === null || _k === void 0 ? void 0 : _k.items) || []),\r\n archivoxEngine: null\r\n }), \"f\");\r\n }\r\n get archivox() {\r\n return __classPrivateFieldGet(this, _CDataSourceCollection_archivox, \"f\");\r\n }\r\n getFieldDataSource(formId, fieldId) {\r\n return __classPrivateFieldGet(this, _CDataSourceCollection_dataSources, \"f\")[`${formId}@${fieldId}`];\r\n }\r\n}\r\n_CDataSourceCollection_dataSources = new WeakMap(), _CDataSourceCollection_archivox = new WeakMap();\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CPage_args, _CPage_entryPoint, _CPage_isLoading, _CPage_dataSourceCollection;\r\nimport { ArgumentNullException, Guid, isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { CForm } from \"../Form/CForm\";\r\nimport { CDataSourceCollection } from \"../types/CDataSourceCollection\";\r\nexport class CPage {\r\n constructor(props) {\r\n _CPage_args.set(this, void 0);\r\n _CPage_entryPoint.set(this, void 0);\r\n _CPage_isLoading.set(this, false);\r\n _CPage_dataSourceCollection.set(this, null);\r\n __classPrivateFieldSet(this, _CPage_args, props, \"f\");\r\n __classPrivateFieldSet(this, _CPage_dataSourceCollection, new CDataSourceCollection(props.schema.dataSources || []), \"f\");\r\n __classPrivateFieldSet(this, _CPage_entryPoint, Guid.parse(__classPrivateFieldGet(this, _CPage_args, \"f\").schema.entryPoint), \"f\");\r\n }\r\n loadEntryPointV1Async(itemId, initialValues) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let values;\r\n const loadItems = itemId != null && ((typeof itemId == 'number' && itemId > 0) || (typeof itemId === 'string' && !isNullOrEmpty(itemId)));\r\n if (loadItems)\r\n values = yield __classPrivateFieldGet(this, _CPage_args, \"f\").engine.getPageDataV1Async(__classPrivateFieldGet(this, _CPage_entryPoint, \"f\"), itemId);\r\n const form = this.getForm({\r\n objectId: __classPrivateFieldGet(this, _CPage_entryPoint, \"f\"),\r\n itemId,\r\n connectors: [],\r\n initialValues\r\n });\r\n if (loadItems)\r\n form.values = values;\r\n return form;\r\n });\r\n }\r\n loadEntryPointV2Async(options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n ArgumentNullException.throwIfNull(options, 'options');\r\n const { itemId, scope, connectors } = options;\r\n let values;\r\n const loadItem = itemId != null && ((typeof itemId == 'number' && itemId > 0) || (typeof itemId === 'string' && !isNullOrEmpty(itemId)));\r\n if (loadItem)\r\n values = yield __classPrivateFieldGet(this, _CPage_args, \"f\").engine.getPageDataV2Async(__classPrivateFieldGet(this, _CPage_entryPoint, \"f\"), itemId);\r\n const form = this.getForm({\r\n objectId: __classPrivateFieldGet(this, _CPage_entryPoint, \"f\"),\r\n itemId,\r\n scope,\r\n connectors,\r\n initialValues: options.initialValues\r\n });\r\n if (loadItem)\r\n form.values = values;\r\n return form;\r\n });\r\n }\r\n getDataSources(formId, fieldId) {\r\n return __classPrivateFieldGet(this, _CPage_dataSourceCollection, \"f\").getFieldDataSource(formId, fieldId);\r\n }\r\n get isLoading() {\r\n return __classPrivateFieldGet(this, _CPage_isLoading, \"f\") || false;\r\n }\r\n getForm(options) {\r\n ArgumentNullException.throwIfNull(options, 'options');\r\n const { objectId, itemId, scope, connectors } = options;\r\n if (objectId instanceof Guid == false)\r\n throw new Error('formVersionId must be a Guid');\r\n const id = objectId.toString();\r\n const forms = __classPrivateFieldGet(this, _CPage_args, \"f\").schema.forms || [];\r\n const form = forms.find(x => x.formId == id);\r\n if (form == null)\r\n return null;\r\n const result = new CForm({\r\n object: {\r\n objectId: form.formId,\r\n code: form.code,\r\n name: form.name,\r\n schema: form,\r\n enabled: true,\r\n },\r\n procesoxEngine: __classPrivateFieldGet(this, _CPage_args, \"f\").engine,\r\n page: this,\r\n isRuntime: true,\r\n itemId,\r\n scope,\r\n connectors,\r\n initialValues: options.initialValues,\r\n });\r\n return result;\r\n }\r\n initialize() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n });\r\n }\r\n}\r\n_CPage_args = new WeakMap(), _CPage_entryPoint = new WeakMap(), _CPage_isLoading = new WeakMap(), _CPage_dataSourceCollection = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CReactComponent_args;\r\nexport class CReactComponent {\r\n constructor(props) {\r\n _CReactComponent_args.set(this, void 0);\r\n __classPrivateFieldSet(this, _CReactComponent_args, props, \"f\");\r\n }\r\n get component() {\r\n return __classPrivateFieldGet(this, _CReactComponent_args, \"f\").schema.component;\r\n }\r\n}\r\n_CReactComponent_args = new WeakMap();\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _ProcesoxEngine_args, _ProcesoxEngine_pages, _ProcesoxEngine_projectsV1, _ProcesoxEngine_parseDictionaryToQueryParams;\r\nimport { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { LogicEngine } from \"../../flow/@engine/LogicEngine\";\r\nimport { CProject } from \"../../projects\";\r\nimport { CPage } from \"../Page/CPage\";\r\nimport { CReactComponent } from \"../ReactComponent/CReactComponent\";\r\nexport class ProcesoxEngine {\r\n constructor(args) {\r\n _ProcesoxEngine_args.set(this, void 0);\r\n _ProcesoxEngine_pages.set(this, {});\r\n _ProcesoxEngine_projectsV1.set(this, {});\r\n _ProcesoxEngine_parseDictionaryToQueryParams.set(this, (data) => {\r\n let result = '';\r\n for (const key in data) {\r\n if (Object.prototype.hasOwnProperty.call(data, key)) {\r\n const value = data[key];\r\n if (value != null) {\r\n result += `&${key}=${encodeURIComponent(data[key])}`;\r\n }\r\n }\r\n }\r\n return result.substring(1);\r\n });\r\n __classPrivateFieldSet(this, _ProcesoxEngine_args, args, \"f\");\r\n }\r\n get host() {\r\n return __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").host;\r\n }\r\n get components() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").components) !== null && _a !== void 0 ? _a : {};\r\n }\r\n get override() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override) !== null && _a !== void 0 ? _a : {};\r\n }\r\n get httpClient() {\r\n return __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient;\r\n }\r\n exportProjectAsync(projectId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects/${projectId}/export`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostArrayBuffer(apiUrl, null);\r\n return result;\r\n });\r\n }\r\n importProjectAsync(zipContent) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects/import`;\r\n const formData = new FormData();\r\n formData.append('zipContent', zipContent);\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostFormDataAsync(apiUrl, formData);\r\n return result;\r\n });\r\n }\r\n insertV1FormDataAsync(formVersionId, values) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/forms/${formVersionId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(apiUrl, values);\r\n return result;\r\n });\r\n }\r\n updateV1FormDataAsync(formVersionId, itemId, values) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/forms/${formVersionId}/values?itemId=${itemId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPut(apiUrl, values);\r\n return result;\r\n });\r\n }\r\n insertV2FormDataAsync(objectId, values) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/pages/${objectId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(apiUrl, values);\r\n return result;\r\n });\r\n }\r\n updateV2FormDataAsync(objectId, itemId, values, onLoadPageDataArgs) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/pages/${objectId}/items/${itemId}?${__classPrivateFieldGet(this, _ProcesoxEngine_parseDictionaryToQueryParams, \"f\").call(this, onLoadPageDataArgs)}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPut(apiUrl, values);\r\n return result;\r\n });\r\n }\r\n getPageV1Async(rootFormId, itemId = null) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (__classPrivateFieldGet(this, _ProcesoxEngine_pages, \"f\")[rootFormId.toString()] == null) {\r\n if (((_a = __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override) === null || _a === void 0 ? void 0 : _a.getPageV1Async) != null) {\r\n const page = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override.getPageV1Async(rootFormId, itemId);\r\n __classPrivateFieldGet(this, _ProcesoxEngine_pages, \"f\")[rootFormId.toString()] = page;\r\n }\r\n else {\r\n const apiUrl = `api/procesox/pages/${rootFormId}`;\r\n const page = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n __classPrivateFieldGet(this, _ProcesoxEngine_pages, \"f\")[rootFormId.toString()] = page;\r\n }\r\n }\r\n const page = __classPrivateFieldGet(this, _ProcesoxEngine_pages, \"f\")[rootFormId.toString()];\r\n let values;\r\n if (itemId != null && !isNullOrEmpty(String(itemId)))\r\n values = yield this.getPageDataV1Async(rootFormId, itemId);\r\n const jsPage = new CPage({\r\n schema: page,\r\n engine: this,\r\n values\r\n });\r\n return jsPage;\r\n });\r\n }\r\n getPageV2Async(options) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { rootFormId, itemId } = options;\r\n if (__classPrivateFieldGet(this, _ProcesoxEngine_pages, \"f\")[rootFormId.toString()] == null) {\r\n if (((_a = __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override) === null || _a === void 0 ? void 0 : _a.getPageV2Async) != null) {\r\n const page = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override.getPageV2Async(rootFormId, itemId);\r\n __classPrivateFieldGet(this, _ProcesoxEngine_pages, \"f\")[rootFormId.toString()] = page;\r\n }\r\n else {\r\n const apiUrl = `api/procesox/v2.0.0/pages/${rootFormId}`;\r\n const page = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n __classPrivateFieldGet(this, _ProcesoxEngine_pages, \"f\")[rootFormId.toString()] = page;\r\n }\r\n }\r\n const page = __classPrivateFieldGet(this, _ProcesoxEngine_pages, \"f\")[rootFormId.toString()];\r\n let values;\r\n if (itemId != null && !isNullOrEmpty(String(itemId)))\r\n values = yield this.getPageDataV1Async(rootFormId, itemId);\r\n const jsPage = new CPage({\r\n schema: page,\r\n engine: this,\r\n values\r\n });\r\n return jsPage;\r\n });\r\n }\r\n getPageDataV1Async(formVersionId, itemId) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (((_a = __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override) === null || _a === void 0 ? void 0 : _a.getPageDataV1Async) != null) {\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override.getPageDataV1Async(formVersionId, itemId);\r\n return result;\r\n }\r\n else {\r\n const apiUrl = `api/procesox/pages/${formVersionId}/data?itemId=${itemId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n }\r\n });\r\n }\r\n getPageDataV2Async(objectId, itemId, args) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (((_a = __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override) === null || _a === void 0 ? void 0 : _a.getPageDataV2Async) != null) {\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override.getPageDataV2Async(objectId, itemId, args);\r\n return result;\r\n }\r\n else {\r\n let apiUrl = `api/procesox/v2.0.0/pages/${objectId}/items/${itemId !== null && itemId !== void 0 ? itemId : 0}?${__classPrivateFieldGet(this, _ProcesoxEngine_parseDictionaryToQueryParams, \"f\").call(this, args)}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n }\r\n });\r\n }\r\n getDocumentViewerUrlAsync(objectId, fieldId, documentId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/forms/${objectId}/fields/${fieldId}/documents/${documentId}/viewer-url`;\r\n return __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n });\r\n }\r\n appendChunkContentAsync(objectId, fieldId, documentId, buffer) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (((_a = __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override) === null || _a === void 0 ? void 0 : _a.appendChunkContentAsync) != null)\r\n return __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override.appendChunkContentAsync(objectId, fieldId, documentId, buffer);\r\n const formData = new FormData();\r\n formData.append('content', buffer);\r\n const apiUrl = `api/procesox/v2.0.0/forms/${objectId}/fields/${fieldId}/documents/${documentId}/append`;\r\n return __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostFormDataAsync(apiUrl, formData);\r\n });\r\n }\r\n createChunkDocumentAsync(objectId, fieldId, itemId, data) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (((_a = __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override) === null || _a === void 0 ? void 0 : _a.createChunkDocumentAsync) != null)\r\n return __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").override.createChunkDocumentAsync(objectId, fieldId, itemId, data);\r\n const apiUrl = `api/procesox/v2.0.0/forms/${objectId}/fields/${fieldId}/documents/start-creation?itemId=${itemId}`;\r\n return __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(apiUrl, data);\r\n });\r\n }\r\n paginateFieldDocumentsAsync(objectId, fieldId, itemId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/forms/${objectId}/fields/${fieldId}/documents?itemId=${itemId}&${request.toQeryString()}`;\r\n return __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n });\r\n }\r\n downloadFieldDataSourceAsync(formVersionId, fieldId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return {\r\n DataSourceType: 1,\r\n Items: [],\r\n KeyBinding: \"\",\r\n TextBinding: \"\"\r\n };\r\n });\r\n }\r\n downloadParametricEntityItems(entityId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return null;\r\n });\r\n }\r\n paginateEntityViewAsync(entityId, viewId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/entities/${entityId}/views/${viewId}/items?${request.toQeryString()}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n createDataSourceAsync(projectId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects/${projectId}/datasources`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(apiUrl, request);\r\n return result;\r\n });\r\n }\r\n createConnectionAsync(projectId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects/${projectId}/connections`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(apiUrl, request);\r\n return result;\r\n });\r\n }\r\n createEntityAsync(projectId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects/${projectId}/entities`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(apiUrl, request);\r\n return result;\r\n });\r\n }\r\n getEntityItemAsync(entityId, viewId, itemId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/entities/${entityId}/views/${viewId}/items/${itemId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n createEntityItemAsync(entityId, viewId, data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/entities/${entityId}/views/${viewId}/items`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(apiUrl, data);\r\n return result;\r\n });\r\n }\r\n updateEntityItemAsync(entityId, viewId, itemId, data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/entities/${entityId}/views/${viewId}/items/${itemId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPut(apiUrl, data);\r\n return result;\r\n });\r\n }\r\n deleteEntityItemAsync(entityId, itemId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/entities/${entityId}/items/${itemId}`;\r\n yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadDelete(apiUrl);\r\n });\r\n }\r\n createFormsAsync(projectId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects/${projectId}/forms`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(apiUrl, request);\r\n return result;\r\n });\r\n }\r\n createReactComponentAsync(projectId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects/${projectId}/react-components`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(apiUrl, request);\r\n return result;\r\n });\r\n }\r\n updateFormAsync(objectId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/forms/${objectId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPut(apiUrl, request);\r\n return result;\r\n });\r\n }\r\n updateReactComponentAsync(objectId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/react-components/${objectId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPut(apiUrl, request);\r\n return result;\r\n });\r\n }\r\n updateEntityAsync(objectId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/entities/${objectId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPut(apiUrl, request);\r\n return result;\r\n });\r\n }\r\n createProjectAsync(request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(apiUrl, request);\r\n return result;\r\n });\r\n }\r\n paginateObjectAsync(objectTypeId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/objects?objectType=${objectTypeId}&${request.toQeryString()}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n paginateProjectsAsync(request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects?${request.toQeryString()}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n deleteObjectAsync(objectId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return false;\r\n });\r\n }\r\n getDataSourceAsync(objectId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/datasources?objectId=${objectId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n getConnectionAsync(objectId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/connections?objectId=${objectId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n getFormAsync(objectId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/forms/${objectId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n getEntityAsync(objectId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/entities/${objectId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n getReactComponentSchemaAsync(objectId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/react-components/${objectId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n getReactComponentAsync(objectId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/runtime/react-components/${objectId}`;\r\n const schema = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return new CReactComponent({ schema });\r\n });\r\n }\r\n getProjectSchemaAsync(objectId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects/${objectId}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n getExtendedProjectSchemaAsync(objectId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects/${objectId}/extended`;\r\n const schema = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return schema;\r\n });\r\n }\r\n getProjectEntitiesAsync(projectId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/projects/${projectId}/entities`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n executeConnectionAsync(objectId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/connections/${objectId}/execute`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(apiUrl, request);\r\n return result;\r\n });\r\n }\r\n executeEntityDataTableAsync(objectId, fieldId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const apiUrl = `api/procesox/v2.0.0/forms/${objectId}/fields/${fieldId}/items?${request.toQeryString()}`;\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(apiUrl);\r\n return result;\r\n });\r\n }\r\n updateDataSourceAsync(objectId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return null;\r\n });\r\n }\r\n getRuntimeProjectV1Async(projectId, forceUpdate = false) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (forceUpdate)\r\n delete __classPrivateFieldGet(this, _ProcesoxEngine_projectsV1, \"f\")[projectId.toString()];\r\n if (__classPrivateFieldGet(this, _ProcesoxEngine_projectsV1, \"f\")[projectId.toString()] == null) {\r\n const schema = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(`api/procesox/v2/projects/${projectId}`);\r\n __classPrivateFieldGet(this, _ProcesoxEngine_projectsV1, \"f\")[projectId.toString()] = new CProject({ schema: schema });\r\n }\r\n return __classPrivateFieldGet(this, _ProcesoxEngine_projectsV1, \"f\")[projectId.toString()];\r\n });\r\n }\r\n simulateDmnAsync(request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPostAsync(`api/procesox/decisions/simulate`, request);\r\n return result;\r\n });\r\n }\r\n updateDmnAsync(decisionId, request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadPut(`api/procesox/decisions/${decisionId}/content`, request);\r\n return result;\r\n });\r\n }\r\n getDecisionVersionByIdAsync(decisionId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").httpClient.aadGetJson(`api/procesox/decisions/${decisionId}`);\r\n return result;\r\n });\r\n }\r\n createLoginEngine(ruleName, props) {\r\n var _a;\r\n return LogicEngine.create(Object.assign(Object.assign({ name: ruleName }, props), { host: __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").host, page: (_a = props.currentForm) === null || _a === void 0 ? void 0 : _a.page }));\r\n }\r\n openDialog(options) {\r\n const fn = __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").onOpenDialog;\r\n return fn(options);\r\n }\r\n openPanel(options) {\r\n const fn = __classPrivateFieldGet(this, _ProcesoxEngine_args, \"f\").onOpenPanel;\r\n return fn(options);\r\n }\r\n}\r\n_ProcesoxEngine_args = new WeakMap(), _ProcesoxEngine_pages = new WeakMap(), _ProcesoxEngine_projectsV1 = new WeakMap(), _ProcesoxEngine_parseDictionaryToQueryParams = new WeakMap();\r\n","import { PanelType } from '@fluentui/react';\r\nimport { useHost } from '@ioip/core/lib';\r\nimport { useHttpClient } from '@ioip/core/lib/providers/RootApp';\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { DialogRef } from '../flow/open-panel/DialogRef';\r\nimport { PanelRef } from '../flow/open-panel/PanelRef';\r\nimport { ChildFormComponent } from '../forms/components/ChildFormComponent';\r\nimport { UIDialogForm } from '../forms/components/UIDialogForm';\r\nimport { registerCustomComponent, registerStandarComponent } from '../forms/ComponentSource/ComponentSource';\r\nimport { ProcesoxEngine } from '../forms/types/ProcesoxEngine';\r\nconst $ProcesoxContext = React.createContext(null);\r\nlet _procesoxProviderProps = null;\r\nlet _procesoxContext = null;\r\nconst DialogProvider = (props) => {\r\n const [panels, setPanels] = useState([]);\r\n const [dialogs, setDialogs] = useState([]);\r\n useEffect(() => {\r\n props.onInit({\r\n onOpenPanel: (options) => {\r\n setPanels([...panels, options]);\r\n return new PanelRef({\r\n onClose: () => {\r\n closePanel(options);\r\n }\r\n });\r\n },\r\n onOpenDialog: (options) => {\r\n setDialogs([...dialogs, options]);\r\n return new DialogRef({\r\n onClose: () => {\r\n closeDialog(options);\r\n }\r\n });\r\n }\r\n });\r\n }, []);\r\n const closePanel = (panel) => {\r\n const index = panels.indexOf(panel);\r\n const nextPanels = [...panels];\r\n nextPanels.splice(index, 1);\r\n setPanels(nextPanels);\r\n };\r\n const closeDialog = (dialog) => {\r\n const index = dialogs.indexOf(dialog);\r\n const nextDialogs = [...dialogs];\r\n nextDialogs.splice(index, 1);\r\n setDialogs(nextDialogs);\r\n };\r\n return React.createElement(React.Fragment, null,\r\n panels.map((childForm, i) => {\r\n return React.createElement(ChildFormComponent, { key: i, panelTitle: childForm.title, panelType: childForm.panelType || PanelType.medium, onClose: () => {\r\n var _a;\r\n (_a = childForm.onCancel) === null || _a === void 0 ? void 0 : _a.call(childForm);\r\n closePanel(childForm);\r\n }, onAccept: () => { var _a; return (_a = childForm.onAccept) === null || _a === void 0 ? void 0 : _a.call(childForm); }, form: childForm.form, show: childForm.form != null, buttons: childForm.buttons, showAcceptButton: childForm.showAcceptButton });\r\n }),\r\n dialogs.map((dialog, i) => {\r\n return React.createElement(UIDialogForm, { key: i, onClose: () => {\r\n var _a;\r\n (_a = dialog.onCancel) === null || _a === void 0 ? void 0 : _a.call(dialog);\r\n closeDialog(dialog);\r\n }, onAccept: () => { var _a; return (_a = dialog.onAccept) === null || _a === void 0 ? void 0 : _a.call(dialog); }, title: \"Dialog\", form: dialog.form, show: dialog.form != null, buttons: dialog.buttons, showAcceptButton: dialog.showAcceptButton });\r\n }));\r\n};\r\nexport const ProcesoxProvider = (props) => {\r\n _procesoxProviderProps = props;\r\n const dialogProviderSettingsRef = useRef({ onOpenDialog: null, onOpenPanel: null });\r\n registerStandarComponent();\r\n if (props.components) {\r\n for (const key in props.components) {\r\n registerCustomComponent(key, props.components[key]);\r\n }\r\n }\r\n _procesoxContext = Object.assign(Object.assign({}, props), { onOpenDialog: (options) => dialogProviderSettingsRef.current.onOpenDialog(options), onOpenPanel: (options) => dialogProviderSettingsRef.current.onOpenPanel(options) });\r\n return React.createElement(React.Fragment, null,\r\n React.createElement($ProcesoxContext.Provider, { value: _procesoxContext },\r\n React.createElement(\"div\", { style: {\r\n \"display\": \"flex\",\r\n \"flexDirection\": \"column\",\r\n \"height\": \"100%\",\r\n \"width\": \"100%\",\r\n \"overflow\": \"hidden\"\r\n } },\r\n props.children,\r\n React.createElement(DialogProvider, { onInit: x => dialogProviderSettingsRef.current = x }))));\r\n};\r\nexport const useProcesox = () => {\r\n const host = useHost();\r\n const context = useContext($ProcesoxContext);\r\n const engineRef = useRef(null);\r\n const httpClient = useHttpClient(context.baseUrl, 'procesox');\r\n if (context == null)\r\n throw new Error('No es posible acceder al contexto de tramitex, verifique que el componente esté dentro del proveedor ');\r\n if (engineRef.current == null)\r\n engineRef.current = new ProcesoxEngine({\r\n httpClient,\r\n components: context.components,\r\n override: context.override,\r\n onOpenDialog: context.onOpenDialog,\r\n onOpenPanel: context.onOpenPanel,\r\n host\r\n });\r\n return engineRef.current;\r\n};\r\nexport const getProcesoxUrl = () => {\r\n if (_procesoxProviderProps == null)\r\n throw new Error('No es posible acceder al contexto de ProcesoX, verifique que el componente esté dentro del proveedor ');\r\n return _procesoxProviderProps.baseUrl;\r\n};\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Label } from '@fluentui/react';\r\nimport { FileManagerComponent } from '@ioip/core/lib/file-manager';\r\nimport { useForceUpdate } from '@ioip/core/lib/hooks/useForceState';\r\nimport { useHost } from '@ioip/core/lib/providers';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useProcesox } from '../../providers';\r\nexport function truncate(value = 0) {\r\n const with2Decimals = value.toString().match(/^-?\\d+(?:\\.\\d{0,2})?/)[0];\r\n return with2Decimals;\r\n}\r\nexport const XFileManager = (props) => {\r\n var _a, _b, _c;\r\n const { t } = useTranslation();\r\n const host = useHost();\r\n const procesox = useProcesox();\r\n const forceUpdate = useForceUpdate();\r\n const refreshRef = useRef(null);\r\n const [originalItemId] = useState((_a = props.field.form) === null || _a === void 0 ? void 0 : _a.itemId);\r\n const field = props.field;\r\n const isRuntime = field.isRuntime;\r\n const label = field.title;\r\n const allowedExtensions = field.allowedExtensions;\r\n const formId = (_b = field.form) === null || _b === void 0 ? void 0 : _b.objectId;\r\n const fieldId = field.id;\r\n const itemId = (_c = field.form) === null || _c === void 0 ? void 0 : _c.itemId;\r\n useEffect(function componentDidMount() {\r\n const onUpdated = () => forceUpdate();\r\n if (isRuntime) {\r\n field.onCompletedCallback = () => { var _a; return (_a = refreshRef.current) === null || _a === void 0 ? void 0 : _a.call(refreshRef); };\r\n }\r\n return () => {\r\n if (isRuntime)\r\n field.onCompletedCallback = null;\r\n };\r\n }, []);\r\n if (!isRuntime)\r\n return React.createElement(\"div\", { style: {\r\n \"display\": \"flex\",\r\n \"justifyContent\": \"center\",\r\n \"alignItems\": \"center\",\r\n \"height\": \"100px\",\r\n \"border\": \"2px dashed rgb(0, 120, 212)\",\r\n \"marginTop\": \"5px\"\r\n } },\r\n React.createElement(Label, null, \"FileManager\"));\r\n return React.createElement(\"div\", { style: {\r\n height: '500px',\r\n maxHeight: '500px'\r\n } },\r\n React.createElement(FileManagerComponent, { columns: [\r\n {\r\n minWidth: 200,\r\n maxWidth: 350,\r\n name: t('name'),\r\n onRender: x => x.Filename,\r\n isResizable: true\r\n },\r\n {\r\n minWidth: 250,\r\n name: t('size'),\r\n onRender: x => x.Length,\r\n isResizable: true\r\n },\r\n {\r\n onRender: x => x.CreatedBy,\r\n minWidth: 150,\r\n name: t('createdBy'),\r\n isResizable: true\r\n },\r\n {\r\n onRender: x => x.CreationDate,\r\n minWidth: 150,\r\n name: t('creationDate'),\r\n isResizable: true\r\n }\r\n ], onDownloadServerData: (request) => __awaiter(void 0, void 0, void 0, function* () {\r\n if (itemId > 0) {\r\n const result = yield procesox.paginateFieldDocumentsAsync(formId, fieldId, itemId, request);\r\n return result;\r\n }\r\n return {\r\n data: [],\r\n recordsFiltered: 0,\r\n };\r\n }), allowCreate: true, title: label, multiple: true, onGetExtension: x => { var _a; return (_a = x.Filename.split('.').pop()) !== null && _a !== void 0 ? _a : ''; }, onGetFileName: x => x.Filename, allowDelete: true, onOpenFile: (file) => __awaiter(void 0, void 0, void 0, function* () {\r\n const result = yield procesox.getDocumentViewerUrlAsync(formId, fieldId, file.Id);\r\n host.showFileViewer(result);\r\n }), host: host, refreshRef: x => refreshRef.current = x, allowedExtensions: 'pdf', allowDragAndDrop: true, fileManager: field.fileManager, autoStartUpload: originalItemId > 0 }));\r\n};\r\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && (element.classList.contains('e-date-wrapper') || element.classList.contains('e-datetime-wrapper') || element.classList.contains('e-date-range-wrapper') || element.classList.contains('e-multiselect'))) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","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 * 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 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 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, this);\n buttons[parseInt(index.toString())].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n var element = result[parseInt(i.toString())];\n var parentElement = innerWrapper.parentElement;\n if (!(element.classList.contains('e-float-line')) || (!(parentElement && parentElement.classList.contains('e-filled')) && parentElement)) {\n innerWrapper.appendChild(element);\n }\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n 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","/**\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","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n *\n * @param {string|string[]} from?\n * @param from\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n *\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
    \n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
    \n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n *\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n *\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @param fields\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n *\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n *\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n *\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n *\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n *\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n *\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n *\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n *\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n *\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n *\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n *\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n *\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n *\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","/* eslint-disable 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n /** Defines dialog type as ColMenu */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColMenu\"] = 4] = \"isColMenu\";\n /** Defines dialog type as ColumChooser */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColumnChooser\"] = 5] = \"isColumnChooser\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, 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.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 = e.count;\n _this.totalItemCount = e.count;\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 }\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)) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length : listItems.count;\n }\n listItems = _this.isVirtualizationEnabled && !_this.virtualSelectAll ? 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.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 this.fixedHeaderElement.innerHTML = element.innerHTML;\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = this.list.parentElement.offsetTop + this.list.offsetTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\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) {\n var index;\n var listItems = this.renderItems(this.selectData, this.fields);\n if (listItems && listItems.children) {\n for (var i = 0; i < listItems.children.length; i++) {\n if (!isNullOrUndefined(value) && listItems.children[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 }\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 }\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]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n[];\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 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);\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);\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);\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);\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 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 }\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 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 this.inputElement.setAttribute('aria-controls', this.element.id + '_popups');\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)) {\n newProp.index = this.preselectedIndex;\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 this.hiddenElement = null;\n this.filterInput = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\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 }, this.clearButton);\n this.clearButton = null;\n this.inputElement = 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","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n var _loop_1 = function (i) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n var cols_1 = column[keys[parseInt(i.toString(), 10)]];\n var _loop_2 = function (j) {\n this_1.columns.find(function (col) {\n return col.field === cols_1[parseInt(j.toString(), 10)]\n .field;\n }).setProperties(cols_1[parseInt(j.toString(), 10)]);\n };\n for (var j = 0; j < cols_1.length; j++) {\n _loop_2(j);\n }\n }\n else {\n this_1[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n }\n //Refresh the react columnTemplates on state change\n if (this_1.parent && this_1.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this_1.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this_1.parent.refreshReactColumnTemplateByUid(this_1.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this_1.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this_1.parent.refreshReactHeaderTemplateByUid(this_1.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this_1.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n };\n var this_1 = this;\n for (var i = 0; i < keys.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 if (!this.isBodyContainer) {\n elePos.top -= this.containerElement.getBoundingClientRect().top;\n }\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' ||\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.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(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 = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, 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","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterAfterOpen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterBeforeOpen';\n/** @hidden */\nexport var filterSearchBegin = 'filterSearchBegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var destroyAutoFillElements = 'destroy-autofill-elements';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var exportDetailTemplate = 'exportDetailTemplate';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n/** @hidden */\nexport var refreshFrozenPosition = 'refresh-Frozen-Position';\n/** @hidden */\nexport var refreshResizePosition = 'refresh-Resize-Position';\n/** @hidden */\nexport var refreshSplitFrozenColumn = 'refresh-Split-Frozen-Column';\n/** @hidden */\nexport var renderResponsiveChangeAction = 'render-Responsive-Change-Action';\n/** @hidden */\nexport var renderResponsiveColumnChooserDiv = 'render-Responsive-Column-Chooser-Div';\n/** @hidden */\nexport var showAddNewRowFocus = 'show-Add-New-Row-Focus';\n/** @hidden */\nexport var infiniteScrollComplete = 'infinitescroll-complete';\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","/**\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 && !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","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue, createElement } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero, Global } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.isExecuteLocal = false;\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.infiniteRenderMod = false;\n // for infinite scroll ui\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n this.infinitePermenantLocalData = [];\n this.infiniteQueryExecutionPending = false;\n this.infiniteSkipCnt = 0;\n this.infiniteScrollAppendDiff = 0;\n this.prevInfiniteScrollDirection = '';\n this.infiniteLoadedElem = [];\n this.infiniteDataCount = 0;\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteManualSelectMaintainPred = [];\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n EventHandler.add(elem, 'input', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n EventHandler.remove(elem, 'input', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (isNullOrUndefined(e) || (e.key !== 'ArrowUp' && e.key !== 'ArrowDown' && e.key !== 'Tab' && !(e.key === 'Tab' && e.shiftKey))) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n }\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-chkcancel-icon'))) {\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-searchclear.e-search-icon'))) {\n document.body.querySelector('.e-searchclear.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\n }\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n this.infiniteRenderMod = this.parent.filterSettings && this.parent.filterSettings.enableInfiniteScrolling ? true : false;\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n var dialogLabel = this.parent.filterSettings && this.parent.filterSettings.type === 'CheckBox' ?\n this.getLocalizedLabel('CheckBoxFilterDialogARIA') : this.getLocalizedLabel('ExcelFilterDialogARIA');\n this.dlg.setAttribute('aria-label', dialogLabel);\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && !this.infiniteRenderMod) {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.showMask();\n }\n else {\n if (this.infiniteRenderMod) {\n this.cBox.style.marginTop = this.getListHeight(this.cBox) + 'px';\n }\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.infiniteRenderMod && this.infinitePermenantLocalData.length && !this.options.isRemote) {\n this.options.dataSource.dataSource.json = this.infinitePermenantLocalData;\n }\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.unWireEvents();\n this.dialogObj.destroy();\n if (this.dlg && this.dlg.parentElement) {\n remove(this.dlg);\n }\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (e.target && e.target.firstChild &&\n e.target.firstChild.textContent.toLowerCase() === this.getLocalizedLabel('CancelButton').toLowerCase()) {\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n if (this.infiniteRenderMod) {\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, this.infiniteLoadedElem.slice());\n }\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if ((checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== ''))\n || this.infiniteRenderMod) {\n if (!this.infiniteRenderMod) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n this.notifyFilterPrevEvent(fObj);\n }\n }\n else if (this.infiniteRenderMod) {\n this.infiniteFltrBtnHandler(coll);\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n var addCurrSelection = this.infiniteRenderMod ? this.sBox.querySelector('.e-add-current') :\n this.cBox.querySelector('.e-add-current');\n if (addCurrSelection && addCurrSelection.classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n if (!this.infiniteRenderMod) {\n this.initiateFilter(coll);\n }\n else if (coll.length) {\n this.initiateFilter(coll);\n }\n else if (this.sBox.querySelector('.e-selectall').classList.contains('e-check') && !coll.length) {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n CheckBoxFilterBase.prototype.infiniteFltrBtnHandler = function (coll) {\n var value;\n if (this.infiniteManualSelectMaintainPred.length) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var pred = this.infiniteManualSelectMaintainPred[i];\n value = pred.value + '';\n if (value === '' || isNullOrUndefined(value)) {\n var dummyDefaults = { predicate: pred.predicate, field: pred.field, type: pred.type, uid: pred.uid, operator: pred.operator,\n matchCase: pred.matchCase, ignoreAccent: pred.ignoreAccent };\n coll.push.apply(coll, CheckBoxFilterBase.generateNullValuePredicates(dummyDefaults));\n }\n else {\n coll.push(this.infiniteManualSelectMaintainPred[i]);\n }\n this.notifyFilterPrevEvent(this.infiniteManualSelectMaintainPred[i]);\n }\n }\n if (!this.localInfiniteSelectAllClicked && this.sInput.value === '' && !(!this.options.parentCurrentViewDataCount && coll.length)) {\n for (var i = 0; i < this.infiniteUnloadParentExistPred.length; i++) {\n coll.unshift(this.infiniteUnloadParentExistPred[i]);\n this.notifyFilterPrevEvent(this.existingPredicate[this.options.field][i]);\n }\n }\n if (this.sInput.value !== '' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll)) {\n this.infiniteSearchPred['predicate'] = 'or';\n coll.unshift(this.infiniteSearchPred);\n this.notifyFilterPrevEvent(this.infiniteSearchPred);\n }\n };\n CheckBoxFilterBase.prototype.notifyFilterPrevEvent = function (predicate) {\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: predicate.field, arg2: predicate.predicate, arg3: predicate.operator,\n arg4: predicate.matchCase, arg5: predicate.ignoreAccent, arg6: predicate.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.infiniteSearchValChange = true;\n this.infiniteLoadedElem = [];\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteSkipCnt = 0;\n this.infiniteDataCount = 0;\n this.infiniteManualSelectMaintainPred = [];\n if (this.sInput.value === '') {\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n }\n else {\n this.infiniteUnloadParentExistPred = [];\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime' || _this.options.type === 'dateonly') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n predicte = emptyValPredicte;\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n predicte = pred.e;\n query.where(pred.e);\n }\n _this.infiniteSearchPred = predicte;\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== filterargs.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(foreignQuery);\n foreignQuery.requiresCount();\n }\n else {\n foreignQuery.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n query.requiresCount();\n }\n else {\n query.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== args.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n if (!_this.infiniteRenderMod) {\n query.take(args.filterChoiceCount);\n }\n if (!args.query.distincts.length || _this.infiniteRenderMod) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var _this = this;\n var _a;\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n if (!this.infiniteRenderMod) {\n query.distinct(filteredColumn);\n }\n if (this.infiniteRenderMod && !this.options.isRemote && this.sInput.value === '') {\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n this.infinitePermenantLocalData = this.options.dataSource.dataSource.json.slice();\n this.options.dataSource.dataSource.json = DataUtil.distinct((_a = this.options.parentFilteredLocalRecords).concat.apply(_a, this.infinitePermenantLocalData), this.options.column.field, true);\n if (this.isForeignColumn(this.options.column)) {\n this.options.column.dataSource = this.options.column.dataSource instanceof DataManager ?\n this.options.column.dataSource : new DataManager(this.options.column.dataSource);\n this.options.dataSource.dataSource.json = this.options.dataSource.dataSource.json.map(function (item, i) {\n return Object.assign({}, item, _this.options.column.dataSource.dataSource.json[i]);\n });\n }\n }\n else if (this.infiniteRenderMod && this.options.isRemote) {\n query.select(this.options.column.field);\n query.sortBy(this.options.column.field, 'ascending');\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (moduleName && moduleName() && (moduleName() === 'ODataV4Adaptor' || moduleName() === 'WebApiAdaptor'\n || moduleName() === 'CustomDataAdaptor' || moduleName() === 'GraphQLAdaptor' || moduleName() === 'ODataAdaptor')) {\n query.distinct(filteredColumn);\n }\n }\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyDownHandler = function () {\n EventHandler.remove(this.cBox, 'scroll', this.infiniteScrollHandler);\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyUpHandler = function (e) {\n var _this = this;\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n var target = this.cBox;\n if (target.children.length > 1 && (target.scrollTop >= target.scrollHeight - target.offsetHeight || target.scrollTop <= 0)) {\n this.infiniteScrollHandler();\n }\n Global.timer = setTimeout(function () { _this.clickHandler(e); Global.timer = null; }, 0);\n };\n CheckBoxFilterBase.prototype.getListHeight = function (element) {\n var listDiv = createElement('div', { className: 'e-ftrchk', styles: 'visibility: hidden' });\n listDiv.innerHTML = '
    A
    ';\n element.appendChild(listDiv);\n var rect = listDiv.getBoundingClientRect();\n element.removeChild(listDiv);\n var listHeight = Math.round(rect.height);\n return listHeight;\n };\n CheckBoxFilterBase.prototype.getShimmerTemplate = function () {\n return '';\n };\n CheckBoxFilterBase.prototype.showMask = function () {\n var maskRowCount = 5;\n var maskItemHeight;\n var maskList = this.parent.createElement('div', { id: this.id + this.options.type + '_CheckBoxMaskList',\n className: 'e-checkboxlist e-fields e-infinite-list e-masklist', styles: 'z-index: 10;' });\n var wrapperElem = this.cBox;\n this.removeMask();\n if (wrapperElem) {\n var computedStyle = getComputedStyle(wrapperElem);\n var height = wrapperElem.children.length ? parseInt(computedStyle.height, 10) :\n Math.floor(parseInt(computedStyle.height.split('px')[0], 10)) - 5;\n var backgroundColor = this.isExcel && !wrapperElem.children.length && !this.dlg.classList.contains('e-excelfilter') ?\n '' : getComputedStyle(this.dlg.querySelector('.e-dlg-content')).backgroundColor;\n maskList.style.cssText = 'width: ' + computedStyle.width + '; min-height: ' + computedStyle.minHeight + '; height: ' +\n height + 'px; margin: ' + computedStyle.margin + '; border-style: ' + computedStyle.borderStyle + '; border-width: '\n + computedStyle.borderWidth + '; border-color: ' + computedStyle.borderColor + '; position: absolute; background-color: ' +\n backgroundColor + ';';\n var liHeight = this.getListHeight(wrapperElem);\n maskRowCount = Math.floor(height / liHeight);\n maskRowCount = wrapperElem.children.length > maskRowCount ? wrapperElem.children.length : maskRowCount;\n maskItemHeight = liHeight + 'px';\n }\n var maskTemplate = '
    '\n + '
    '\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
    ';\n maskList.innerHTML = '';\n if (!wrapperElem.children.length) {\n this.spinner.insertAdjacentHTML('beforebegin', maskTemplate);\n var maskSpan = [].slice.call(this.spinner.parentElement\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n this.spinner.insertBefore(maskList, this.cBox);\n for (var i = 0; maskRowCount && i < maskRowCount; i++) {\n maskList.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(maskList\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n if (this.cBox) {\n maskList.scrollTop = this.cBox.scrollTop;\n }\n };\n CheckBoxFilterBase.prototype.removeMask = function () {\n var maskLists = this.dialogObj.element.querySelectorAll('.e-mask-ftrchk');\n if (maskLists.length) {\n for (var i = 0; i < maskLists.length; i++) {\n remove(maskLists[i]);\n }\n }\n var maskParent = this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist');\n if (maskParent) {\n remove(this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist'));\n }\n };\n CheckBoxFilterBase.prototype.infiniteScrollHandler = function () {\n var target = this.cBox;\n if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length <= (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3\n && (!this.infiniteDataCount || this.infiniteDataCount > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount))) {\n this.makeInfiniteScrollRequest();\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt += this.prevInfiniteScrollDirection === 'down' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n appendChildren(this.cBox, this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.parent.filterSettings.itemsCount +\n this.infiniteSkipCnt));\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.infiniteLoadedElem.length > this.parent.filterSettings.itemsCount * 3\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings\n .itemsCount * 2), this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt -= this.prevInfiniteScrollDirection === 'up' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt +\n this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.cBox.children.length < this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings\n .itemsCount * 2), this.infiniteDataCount % this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt = (Math.floor(this.infiniteDataCount / this.parent.filterSettings.itemsCount) - 3) *\n this.parent.filterSettings.itemsCount;\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt +\n this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n };\n CheckBoxFilterBase.prototype.infiniteRemoveElements = function (removeElem) {\n for (var i = 0; i < removeElem.length; i++) {\n remove(removeElem[i]);\n }\n };\n CheckBoxFilterBase.prototype.infiniteAppendElements = function (appendElem) {\n for (var i = 0; i < appendElem.length; i++) {\n this.cBox.insertBefore(appendElem[i], this.cBox.children[i]);\n }\n };\n CheckBoxFilterBase.prototype.makeInfiniteScrollRequest = function (query) {\n var _this = this;\n if (!this.infiniteInitialLoad && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n setTimeout(function () {\n if (_this.infiniteQueryExecutionPending) {\n _this.showMask();\n }\n }, 500);\n }\n else if (!this.infiniteInitialLoad) {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent\n .createElement);\n showSpinner(this.spinner);\n }\n var fName = 'fn';\n if (this.infiniteQuery && this.infiniteQuery.queries && this.infiniteQuery.queries.length) {\n for (var i = 0; i < this.infiniteQuery.queries.length; i++) {\n if (this.infiniteQuery.queries[i][\"\" + fName] === 'onTake'\n || this.infiniteQuery.queries[i][\"\" + fName] === 'onSkip') {\n this.infiniteQuery.queries.splice(i, 1);\n i--;\n }\n }\n }\n var existQuery = query ? true : false;\n query = query ? query : this.infiniteQuery;\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteSkipCnt = 0;\n }\n else {\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount;\n }\n query.skip(this.infiniteSkipCnt);\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n query.take(this.parent.filterSettings.itemsCount * 3);\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount * 2;\n }\n else {\n query.take(this.parent.filterSettings.itemsCount);\n }\n if (!existQuery) {\n this.processDataOperation(query);\n this.infiniteQueryExecutionPending = true;\n }\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n if (this.infiniteRenderMod) {\n this.infiniteQuery = query.clone();\n if (this.infiniteInitialLoad) {\n this.cBox.classList.add('e-checkbox-infinitescroll');\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n EventHandler.add(this.cBox, 'mouseup', this.infiniteScrollMouseKeyUpHandler, this);\n EventHandler.add(this.cBox, 'mousedown', this.infiniteScrollMouseKeyDownHandler, this);\n }\n else if (this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n }\n if (this.infiniteRenderMod && this.infiniteInitialLoad && !this.options.isRemote) {\n var field = this.isForeignColumn(this.options.column) ? this.options.foreignKeyValue :\n this.options.column.field;\n this.options.dataSource.executeQuery(new Query().sortBy(field, DataUtil.fnAscending)).then(function (e) {\n _this.options.dataSource.dataSource.json = e.result;\n _this.executeQueryOperations(query, allPromise, runArray);\n });\n }\n else {\n this.executeQueryOperations(query, allPromise, runArray);\n }\n };\n CheckBoxFilterBase.prototype.executeQueryOperations = function (query, allPromise, runArray) {\n var _this = this;\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n _this.infiniteQueryExecutionPending = _this.infiniteRenderMod ? false : _this.infiniteQueryExecutionPending;\n for (var j = 0; j < e.length; j++) {\n _this.infiniteDataCount = _this.infiniteRenderMod && !_this.infiniteDataCount ? e[j].count : _this.infiniteDataCount;\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n }).catch(function () {\n if (_this.infiniteRenderMod && _this.parent.filterSettings && _this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n _this.parent.showMaskRow(undefined, _this.dialogObj.element);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n if (!this.infiniteInitialLoad && this.infiniteDataCount && ((this.infiniteSkipCnt >= this.infiniteDataCount\n && !this.infiniteSearchValChange) || (e.length === 0))) {\n return;\n }\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData, this).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput && ((this.infiniteRenderMod && this.infiniteInitialLoad) || !this.infiniteRenderMod)) {\n this.sInput.focus();\n }\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n if (!isNullOrUndefined(this.parent.getDataModule) && this.parent.getDataModule().isRemote() &&\n this.parent.getDataModule().dataManager.adaptor.getModuleName() === 'ODataV4Adaptor') {\n this.parent.getDataModule().searchQuery(query);\n }\n else {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols, this.isExecuteLocal);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(events.beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.infiniteRenderMod && this.existingPredicate[this.options.field] ?\n this.getPredicateFromCols(this.existingPredicate[this.options.field], this.isExecuteLocal) :\n this.getPredicateFromCols(this.options.filteredColumns, this.isExecuteLocal);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var _a;\n if (!isNullOrUndefined(Global.timer)) {\n clearTimeout(Global.timer);\n }\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n if (this.infiniteRenderMod && !elem.parentElement.querySelector('.e-add-current')) {\n this.localInfiniteSelectionInteracted = true;\n var caseSen = this.options.allowCaseSensitive;\n var span = elem.parentElement.querySelector('.e-frame');\n var input = span.previousSibling;\n var optr = input.checked ? 'equal' : 'notequal';\n var pred = input.checked ? 'or' : 'and';\n var defaults = { field: this.options.field, predicate: pred, uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var value = this.values[parentsUntil(input, 'e-ftrchk').getAttribute('uid')];\n this.updateInfiniteManualSelectPred(defaults, value);\n if (this.infiniteRenderMod && !this.options.isRemote && this.options.parentTotalDataCount\n && this.infiniteUnloadParentExistPred.length) {\n var predicate = this.getPredicateFromCols((_a = this.options.filteredColumns).concat.apply(_a, this.infiniteManualSelectMaintainPred), true);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n var result = new DataManager(this.infinitePermenantLocalData).executeLocal(query);\n if (this.options.parentTotalDataCount !== result.length) {\n this.options.parentTotalDataCount = result.length;\n }\n if (!this.options.parentTotalDataCount && this.infiniteUnloadParentExistPred.length) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n if (this.infiniteUnloadParentExistPred.length && (this.options.parentTotalDataCount === this.infiniteDataCount\n || !this.options.parentTotalDataCount)) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.updateInfiniteManualSelectPred = function (defaults, value) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var predmdl = this.infiniteManualSelectMaintainPred[i];\n if (predmdl.value + '' === value + '' && (predmdl.operator === 'equal' || predmdl.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.splice(i, 1);\n break;\n }\n }\n if ((defaults.predicate === 'or' && (!this.localInfiniteSelectAllClicked || !this.infiniteLocalSelectAll))\n || (defaults.predicate === 'and' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll))) {\n this.infiniteManualSelectMaintainPred.push(extend({}, { value: value }, defaults));\n if (defaults.predicate === 'or') {\n this.options.parentTotalDataCount++;\n }\n else {\n this.options.parentTotalDataCount--;\n }\n }\n };\n /**\n * Method to set the next target element on keyboard navigation using arrow keys.\n *\n * @param {KeyboardEventArgs} e - Defines the Keyboard event argument\n * @param {HTMLElement[]} focusableElements - Defines the Focusable elements\n * @returns {void}\n */\n CheckBoxFilterBase.prototype.focusNextOrPrev = function (e, focusableElements) {\n var nextIndex = (e.key === 'ArrowUp') ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : nextElement;\n this.setFocus(target);\n }\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab' || ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey)) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n }\n if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey && this.parent.filterSettings.type === 'CheckBox') {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"])'));\n this.focusNextOrPrev(e, focusableElements);\n }\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem && elem !== prevElem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n if (this.infiniteRenderMod) {\n this.localInfiniteSelectAllClicked = true;\n this.infiniteLocalSelectAll = checked;\n this.infiniteUnloadParentExistPred = [];\n this.infiniteManualSelectMaintainPred = [];\n }\n var cBoxes = this.infiniteRenderMod ?\n this.infiniteLoadedElem.map(function (arr) {\n return arr.querySelector('.e-frame');\n }) : [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n var checkboxUid = getUid('cbox');\n label.setAttribute('id', checkboxUid + 'cboxLabel');\n elem.querySelector('input').setAttribute('aria-labelledby', label.id);\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.infiniteRenderMod ? this.infiniteLoadedElem.length : this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.infiniteRenderMod ? this.sBox.querySelector('.e-selectall') : this.cBox.querySelector('.e-selectall');\n var selected = this.infiniteRenderMod ? this.infiniteLoadedElem.filter(function (arr) { return arr.querySelector('.e-check'); }).length :\n this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (this.infiniteRenderMod && this.sInput.value === '' && !this.options.parentCurrentViewDataCount && !this.localInfiniteSelectionInteracted\n && (!this.localInfiniteSelectAllClicked || (!this.infiniteLocalSelectAll && !selected)) && (cnt !== selected || cnt === selected)) {\n selected = 0;\n }\n else if (this.infiniteRenderMod && this.infiniteLoadedElem.length < this.infiniteDataCount\n && this.infiniteUnloadParentExistPred.length && (!selected || cnt === selected) && this.infiniteLocalSelectAll) {\n if (!selected) {\n selected += this.infiniteUnloadParentExistPred.length;\n }\n else {\n cnt += this.infiniteUnloadParentExistPred.length;\n }\n }\n if (cnt === selected) {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = false;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b, _c;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n if (!this.infiniteRenderMod) {\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n }\n if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([checkBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([checkBox], [this.parent.cssClass]);\n }\n }\n if (this.infiniteInitialLoad || !this.infiniteRenderMod) {\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(selectAll, this.spinner);\n }\n else {\n cBoxes.appendChild(selectAll);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-selectall')) {\n this.sBox.querySelector('.e-ftrchk .e-selectall').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-selectall').parentElement.classList.remove('e-checkbox-disabled');\n }\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([predicateCheckBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n }\n if ((this.infiniteRenderMod && (!isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText !== 'Add current selection to filter')) || !this.infiniteRenderMod) {\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(predicateElement, this.spinner);\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var reduceHeight = Math.ceil(predicateElement.getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0], 10) - reduceHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n }\n else {\n cBoxes.appendChild(predicateElement);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-add-current')) {\n this.sBox.querySelector('.e-ftrchk .e-add-current').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-add-current').parentElement.classList.remove('e-checkbox-disabled');\n }\n }\n else if (this.infiniteRenderMod && !isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText === 'Add current selection to filter') {\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var increaseHeight = Math.ceil(this.sBox.children[2].getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0], 10) + increaseHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n remove(this.sBox.children[2]);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n if (this.infiniteRenderMod) {\n this.updateInfiniteUnLoadedCheckboxExistPred(value, this.infiniteUnloadParentExistPred);\n }\n var checkbox = this.localInfiniteSelectAllClicked ?\n this.createCheckbox(value, this.infiniteLocalSelectAll, getValue('dataObj', data[i])) :\n this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n if (this.infiniteRenderMod) {\n cBoxes.lastChild.style.height = this.getListHeight(this.cBox) + 'px';\n }\n }\n var scrollTop = this.cBox.scrollTop;\n if (!this.infiniteRenderMod || this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n else if (this.infiniteRenderMod && this.cBox.children.length) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n }\n if (this.infiniteRenderMod) {\n (_c = this.infiniteLoadedElem).push.apply(_c, [].slice.call(cBoxes.children));\n this.itemsCnt = nullCounter !== -1 ? this.infiniteLoadedElem.length - nullCounter : this.infiniteLoadedElem.length;\n }\n if (this.infiniteUnloadParentExistPred.length && (this.infiniteLoadedElem.length >= this.infiniteDataCount\n || !this.options.parentCurrentViewDataCount || (this.options.parentTotalDataCount === this.infiniteDataCount\n && this.options.parentCurrentViewDataCount))) {\n this.infiniteUnloadParentExistPred = [];\n }\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (this.infiniteRenderMod && !this.infiniteScrollAppendDiff) {\n this.infiniteScrollAppendDiff = Math.round(scrollTop - this.cBox.scrollTop);\n }\n this.updateIndeterminatenBtn();\n if (!this.infiniteRenderMod) {\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n if (btn.disabled) {\n disabled = true;\n }\n else {\n disabled = false;\n }\n }\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n if (this.infiniteRenderMod) {\n var selectAll = this.sBox.querySelector('.e-ftrchk .e-selectall');\n if (selectAll) {\n var selectAllParent = selectAll.parentElement.parentElement;\n if (selectAll.classList.contains('e-check')) {\n toogleCheckbox(selectAllParent);\n }\n else if (selectAll.classList.contains('e-stop')) {\n toogleCheckbox(selectAllParent);\n selectAll.classList.remove('e-stop');\n toogleCheckbox(selectAllParent);\n }\n selectAll.previousSibling.disabled = true;\n selectAll.parentElement.classList.add('e-checkbox-disabled');\n }\n var addCurrSelection = this.sBox.querySelector('.e-ftrchk .e-add-current');\n if (addCurrSelection) {\n var addCurrSelectionParent = addCurrSelection.parentElement.parentElement;\n if (addCurrSelection.classList.contains('e-check')) {\n toogleCheckbox(addCurrSelectionParent);\n }\n addCurrSelection.previousSibling.disabled = true;\n addCurrSelection.parentElement.classList.add('e-checkbox-disabled');\n }\n }\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n this.filterState = !disabled;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n if (this.infiniteRenderMod && this.infiniteInitialLoad) {\n this.cBox.style.marginTop = '0px';\n }\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.updateInfiniteUnLoadedCheckboxExistPred = function (value, updatePredArr) {\n for (var j = 0; j < updatePredArr.length; j++) {\n var pred = updatePredArr[j];\n if (value === pred.value && (pred.operator === 'equal' || pred.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.push(updatePredArr[j]);\n updatePredArr.splice(j, 1);\n j--;\n }\n }\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n if (this.infiniteRenderMod) {\n return checkState;\n }\n else {\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData, checkboxFilter) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n if (column && column.type === 'dateonly' && typeof value[\"\" + field] === 'string' && value[\"\" + field]) {\n var arr = value[\"\" + field].split(/[^0-9.]/);\n value[\"\" + field] = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = getObject(field, value); //local remote diff, check with mdu\n var currentFilterValue = (typeof value === 'string') && !(isNullOrUndefined(checkboxFilter)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent)) && !(isNullOrUndefined(checkboxFilter.parent.filterSettings)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent.filterSettings.enableCaseSensitivity)) ? value.toLowerCase() : value;\n if (!(currentFilterValue in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + currentFilterValue] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns, isExecuteLocal) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && ((cols[p].predicate === 'or' && cols[p - 1].predicate === 'or')\n || (cols[p].predicate === 'and' && cols[p - 1].predicate === 'and'))) {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[p].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'dateonly' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n if (!(gObj.query instanceof Query)) {\n gObj.query = new Query();\n }\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @param {Column} fcolumn - specifies the forein key column model\n * @param {boolean} isForeignKey - Confirms whether the column is a foreign key or not\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)]\n .field, defaultFltrCols[parseInt(i.toString(), 10)].isForeignKey).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field, col.isForeignKey).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource['splice'](e.toIndex, 0, e.records[i - 1]);\n }\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if ((args.requestType !== undefined || (this.parent.groupSettings.disablePageWiseAggregates && query.queries.some(function (query) { return query.fn === 'onGroup'; })))\n && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string | Function} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return baseTemplateComplier(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the parsed column field id\n * @hidden\n */\nexport function getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/g, '\\\\$&');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length || selectAll('.e-gridform.e-formvalidator', inst.element).length)\n && inst.editSettings.showConfirmDialog && (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'dateonly':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nexport function padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n if (!isNullOrUndefined(index)) {\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n if (gObj.childGrid) {\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(gObj.getColumns());\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if ((gObj.childGrid || gObj.detailTemplate) && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @returns {number} - Returns scroll width\n * @hidden\n */\nexport function getScrollWidth(gObj) {\n var scrollElem = gObj.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? getScrollBarWidth() : 0;\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @param {number} idx - Defines the index\n * @returns {number} Returns colSpan index\n * @hidden\n */\nexport function resetColspanGroupCaption(gObj, idx) {\n var colspan = 0;\n var cols = gObj.getColumns();\n var width = idx * 30;\n if (gObj.isRowDragable()) {\n colspan++;\n width += 30;\n }\n colspan += (gObj.groupSettings.columns.length - idx);\n width += (30 * (gObj.groupSettings.columns.length - idx));\n var gridWidth = (gObj.width === 'auto' ? gObj.element.offsetWidth : parseInt(gObj.width.toString(), 10)) -\n getScrollWidth(gObj);\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan++;\n }\n if (width > gridWidth) {\n colspan--;\n break;\n }\n }\n return colspan;\n}\n/**\n * @param {HTMLElement} tr - Defines the tr Element\n * @param {IGrid} gObj - Defines grid object\n * @returns {void}\n * @hidden\n */\nexport function groupCaptionRowLeftRightPos(tr, gObj) {\n var width = 0;\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, width, gObj.enableRtl, 'Left');\n if (td.classList.contains('e-indentcell') || td.classList.contains('e-recordplusexpand') ||\n td.classList.contains('e-recordpluscollapse')) {\n width += 30;\n }\n if (td.classList.contains('e-groupcaption')) {\n var colspan = parseInt(td.getAttribute('colspan'), 10);\n if (gObj.isRowDragable()) {\n colspan--;\n width += 30;\n }\n colspan = colspan - (gObj.groupSettings.columns.length - j);\n width = width + (30 * (gObj.groupSettings.columns.length - j));\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if ((parseInt(td.getAttribute('colspan'), 10) > 1) &&\n (parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10)\n + width) > (parseInt(gObj.width.toString(), 10) - getScrollWidth(gObj))) {\n var newColspan = resetColspanGroupCaption(gObj, j);\n td.setAttribute('colspan', newColspan.toString());\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan--;\n }\n if (colspan === 0) {\n break;\n }\n }\n }\n if (td.classList.contains('e-summarycell')) {\n var uid_1 = td.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uid_1);\n width += parseInt(column.width.toString(), 10);\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var content = gridObj.getContent().firstElementChild;\n return row && (row.getBoundingClientRect().top - content.getBoundingClientRect().top +\n gridObj.getRowHeight()) > content.offsetHeight;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)] && rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {void}\n * @hidden\n */\nexport function resetCachedRowIndex(gObj) {\n var rowObjects = gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache ?\n gObj.getRowsObject() : gObj.vRows;\n var rowElements = gObj.getRows();\n for (var i = 0, startIndex = 0, k = 0; i < rowObjects.length; i++) {\n var rowObject = rowObjects[parseInt(i.toString(), 10)];\n if (rowObject.isDataRow) {\n rowObject.index = startIndex;\n rowObject.isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n var rowElement = gObj.getRowElementByUID(rowObject.uid);\n if (!isNullOrUndefined(rowElement)) {\n rowElements[parseInt(k.toString(), 10)] = rowElement;\n rowElement.setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElement.setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rowObject.isAltRow) {\n rowElement.classList.add('e-altrow');\n }\n else {\n rowElement.classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElement.cells.length; j++) {\n rowElement.cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n k++;\n }\n startIndex++;\n }\n }\n if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache) {\n gObj.infiniteScrollModule.resetInfiniteCache(rowObjects);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {RowDropEventArgs} args - Defines the row drop event argument\n * @param {HTMLTableRowElement[]} tr - Row elements\n * @param {Row} dropRObj - dropped row object\n * @returns {void}\n * @hidden\n */\nexport function groupReorderRowObject(gObj, args, tr, dropRObj) {\n var rowObjects = gObj.enableVirtualization ? gObj.vRows : gObj.getRowsObject();\n var orderChangeRowObjects = [];\n var dropRowObject = dropRObj ? dropRObj :\n gObj.getRowObjectFromUID(args.target.closest('tr').getAttribute('data-uid'));\n var rowObjectDropIndex;\n for (var i = 0; i < args.rows.length; i++) {\n var orderChangeRowObject = gObj.getRowObjectFromUID(args.rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (dropRowObject === orderChangeRowObject) {\n rowObjectDropIndex = rowObjects.indexOf(dropRowObject);\n }\n orderChangeRowObjects.push(rowObjects.splice(rowObjects.indexOf(orderChangeRowObject), 1)[0]);\n }\n if (isNullOrUndefined(rowObjectDropIndex)) {\n rowObjectDropIndex = rowObjects.indexOf(dropRowObject);\n if (args.fromIndex > args.dropIndex) {\n rowObjects.splice.apply(rowObjects, [rowObjectDropIndex, 0].concat(orderChangeRowObjects));\n }\n else {\n rowObjects.splice.apply(rowObjects, [rowObjectDropIndex + 1, 0].concat(orderChangeRowObjects));\n }\n }\n else {\n rowObjects.splice.apply(rowObjects, [rowObjectDropIndex, 0].concat(orderChangeRowObjects));\n }\n if (!gObj.enableVirtualization && !gObj.infiniteScrollSettings.enableCache) {\n var record = {};\n var currentViewData = gObj.getCurrentViewRecords();\n for (var i = 0, len = tr.length; i < len; i++) {\n var index = parseInt(tr[parseInt(i.toString(), 10)].getAttribute(literals.dataRowIndex), 10);\n record[parseInt(i.toString(), 10)] = currentViewData[parseInt(index.toString(), 10)];\n }\n var rows = gObj.getRows();\n for (var i = 0, len = tr.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = tr[parseInt(i.toString(), 10)];\n currentViewData[parseInt(i.toString(), 10)] = record[parseInt(i.toString(), 10)];\n }\n }\n if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache) {\n gObj.infiniteScrollModule.resetInfiniteCache(rowObjects);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow):not(.e-cloneproperties .e-row)'));\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string} uid - Defines the uid\n * @returns {boolean} Returns is child column\n * @hidden\n */\nexport function isChildColumn(column, uid) {\n var uids = [];\n uids.push(column.uid);\n pushuid(column, uids);\n if (uids.indexOf(uid) > -1) {\n return true;\n }\n else {\n return false;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string[]} uids - Defines the uid\n * @returns {void}\n * @hidden\n */\nexport function pushuid(column, uids) {\n for (var i = 0; i < column.columns.length; i++) {\n if (column.columns[parseInt(i.toString(), 10)].uid) {\n uids.push(column.columns[parseInt(i.toString(), 10)].uid);\n }\n if (column.columns[parseInt(i.toString(), 10)].columns &&\n column.columns[parseInt(i.toString(), 10)].columns.length) {\n pushuid(column.columns[parseInt(i.toString(), 10)], uids);\n }\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @returns {string} Returns the direction\n * @hidden\n */\nexport function frozenDirection(column) {\n if (column.columns[0].freeze || column.columns[0].isFrozen) {\n if (column.columns[0].freeze === 'Left' || column.columns[0].isFrozen) {\n return 'Left';\n }\n else if (column.columns[0].freeze === 'Right') {\n return 'Right';\n }\n else if (column.columns[0].freeze === 'Fixed') {\n return 'Fixed';\n }\n else {\n return 'None';\n }\n }\n else {\n if (column.columns[0].columns && column.columns[0].columns.length) {\n return frozenDirection(column.columns[0]);\n }\n else {\n return 'None';\n }\n }\n}\n/**\n * @param {Element} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function addFixedColumnBorder(row) {\n if (row.querySelector('.e-fixedfreeze')) {\n var cells = [].slice.call(row.querySelectorAll('.e-filterbarcell:not(.e-hide),.e-summarycell:not(.e-hide),.e-headercell:not(.e-hide),.e-rowcell:not(.e-hide)'));\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j - 1]) ||\n (cells[j - 1] && !cells[j - 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezeleftborder');\n }\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j + 1]) ||\n (cells[j + 1] && !cells[j + 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezerightborder');\n }\n }\n }\n}\n/**\n * @param {HTMLElement} node - Defines the row\n * @param {number} width - Defines the width\n * @param {boolean} isRtl - Boolean property\n * @param {string} position - Defines the position\n * @returns {void}\n * @hidden\n */\nexport function applyStickyLeftRightPosition(node, width, isRtl, position) {\n if (position === 'Left') {\n if (isRtl) {\n node.style.right = width + 'px';\n }\n else {\n node.style.left = width + 'px';\n }\n }\n if (position === 'Right') {\n if (isRtl) {\n node.style.left = width + 'px';\n }\n else {\n node.style.right = width + 'px';\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {Column} column - Defines the column\n * @param {Element} node - Defines the Element\n * @param {number} colSpan - Defines the colSpan value\n * @returns {void}\n * @hidden\n */\nexport function resetColandRowSpanStickyPosition(gObj, column, node, colSpan) {\n var columns = gObj.getColumns();\n var index = column.index;\n if (column.freeze === 'Left' && column.border !== 'Left') {\n var idx = index + (colSpan - 1);\n while (columns[parseInt(idx.toString(), 10)].visible === false) {\n idx++;\n }\n if (columns[parseInt(idx.toString(), 10)].border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n }\n else if (column.freeze === 'Right' || column.freeze === 'Fixed') {\n var width = 0;\n for (var j = index + 1; j < index + colSpan; j++) {\n if (j === columns.length) {\n break;\n }\n if (columns[parseInt(j.toString(), 10)].visible) {\n width += parseInt(columns[parseInt(j.toString(), 10)].width.toString(), 10);\n }\n else {\n colSpan++;\n }\n }\n if (gObj.enableRtl) {\n node.style.left = parseInt(node.style.left, 10) - width + 'px';\n }\n else {\n node.style.right = parseInt(node.style.right, 10) - width + 'px';\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {number} rowIndex - Defines the row index\n * @param {number} colIndex - Defines the colum index\n * @returns {void}\n * @hidden\n */\nexport function getCellFromRow(gObj, rowIndex, colIndex) {\n var row = (gObj.getRowByIndex(rowIndex));\n for (var i = 0; i < row.cells.length; i++) {\n if (row.cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === colIndex.toString()) {\n return row.cells[parseInt(i.toString(), 10)];\n }\n }\n return null;\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {Column} column - Defines the column\n * @param {Element} node - Defines the Element\n * @returns {void}\n * @hidden\n */\nexport function addStickyColumnPosition(gObj, column, node) {\n if (column.freeze === 'Left' || column.isFrozen) {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (gObj.getIndentCount() * 30), gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = (gObj.getIndentCount() * 30);\n }\n }\n else {\n var cols = gObj.getColumns();\n var width = gObj.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = gObj.getColumns();\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n if (column.index === cols[cols.length - 1].index) {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n else {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = gObj.getColumns();\n var width = 0;\n if (gObj.getVisibleFrozenLeftCount()) {\n width = gObj.getIndentCount() * 30;\n }\n else if (gObj.getFrozenMode() === 'Right') {\n width = gObj.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Left');\n width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Specifies the currency code to be used for formatting.\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n var actualIndex = idx;\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (parent && !parent.isFrozenGrid() && !parent.isRowDragable()) {\n td = (!isNullOrUndefined(td) && (parseInt(td.getAttribute('data-colindex'), 10) === idx ||\n (parentsUntil(td, 'e-addedrow') && td.parentElement.childNodes[parseInt(idx.toString(), 10)] === td)))\n ? td : tr[parseInt(i.toString(), 10)].querySelector(\"td[data-colindex=\\\"\" + idx + \"\\\"]\");\n if (isNullOrUndefined(td)) {\n continue;\n }\n else {\n idx = (parent.getContentTable().querySelector('.e-detailrowcollapse, .e-detailrowexpand')) ?\n (td.cellIndex - 1) : td.cellIndex;\n }\n }\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if ((isContent && parent.isRowDragable()) || (parent && parent.isDetail())) {\n var index = idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n if (!isNullOrUndefined(rows[trs[parseInt(i.toString(), 10)]])) {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n idx = actualIndex;\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[\"\" + field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[\"\" + pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n/** @hidden */\nexport var initialFrozenColumnIndex = 'initialFrozenColumnIndex';\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos, resetColspanGroupCaption, resetColandRowSpanStickyPosition } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n var isFrozen = this.parent.isFrozenGrid();\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n if (typeof (cell.column.template) !== 'string') {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n }\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && (this_1.isSpan || (this_1.parent.isSpan && isEdit))) {\n var rowsObject = this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if ((cellArgs.rowSpan > 1 || cellArgs.colSpan > 1)) {\n this_1.resetrowSpanvalue(this_1.parent.frozenRows > row.index ? this_1.parent.frozenRows :\n this_1.parent.currentViewData.length, cellArgs, row.index);\n if (cellArgs.column.visible === false) {\n cellArgs.colSpan = 1;\n }\n else {\n if (isFrozen) {\n var columns_2 = this_1.parent.getColumns();\n var right = this_1.parent.getFrozenRightColumnsCount();\n var left = this_1.parent.getFrozenLeftCount();\n var movableCount = columns_2.length - right;\n var cellIdx = cellArgs.column.index;\n if (left > cellIdx && left < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - left;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n else if (movableCount <= cellIdx && columns_2.length < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - columns_2.length;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n else if (cellArgs.column.freeze === 'Fixed') {\n var colSpan = 1;\n var index = cellIdx;\n for (var j = index + 1; j < index + cellArgs.colSpan; j++) {\n if (columns_2[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n colSpan++;\n }\n else {\n break;\n }\n }\n cellArgs.colSpan = colSpan;\n }\n else if (movableCount > cellIdx && movableCount < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - movableCount;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n }\n }\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.parent.isSpan = true;\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n if (isFrozen) {\n resetColandRowSpanStickyPosition(this_1.parent, cellArgs.column, td, cellArgs.colSpan);\n }\n }\n }\n if (isFrozen && this_1.isSpan) {\n var rowsObject = this_1.parent.getRowsObject();\n var isRtl = this_1.parent.enableRtl;\n if (rowsObject[row.index - 1]) {\n var prevRowCells = rowsObject[row.index - 1].cells;\n var prevRowCell = prevRowCells[i - 1];\n var nextRowCell = prevRowCells[i + 1];\n var direction = prevRowCells[parseInt(i.toString(), 10)].column.freeze;\n if (prevRowCell && (prevRowCell.isRowSpanned || prevRowCell.rowSpanRange > 1) && prevRowCell.visible) {\n if (prevRowCell.column.freeze === 'Fixed' && direction === 'Fixed') {\n td.classList.add(isRtl ? 'e-removefreezerightborder' : 'e-removefreezeleftborder');\n }\n else if (!isRtl && i === 1 && direction === 'Left') {\n td.classList.add('e-addfreezefirstchildborder');\n }\n }\n if (nextRowCell && (nextRowCell.isRowSpanned || nextRowCell.rowSpanRange > 1) && nextRowCell.visible &&\n nextRowCell.column.freeze === 'Fixed' && direction === 'Fixed' && cellArgs.colSpan < 2) {\n td.classList.add(isRtl ? 'e-removefreezeleftborder' : 'e-removefreezerightborder');\n }\n }\n }\n if (cellArgs.rowSpan > 1 && this_1.parent.currentViewData.length - row.index === cellArgs.rowSpan) {\n td.classList.add('e-row-span-lastrowcell');\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var emptyColspan = 0;\n if (this.parent.groupSettings.columns.length && this.parent.getFrozenLeftColumnsCount()) {\n if (tr.classList.contains('e-groupcaptionrow')) {\n var freezeCells = [].slice.call(tr.querySelectorAll('.e-leftfreeze,.e-unfreeze,.e-rightfreeze,.e-fixedfreeze,.e-freezerightborder,.e-freezeleftborder'));\n if (freezeCells.length) {\n removeClass(freezeCells, ['e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-fixedfreeze', 'e-freezerightborder', 'e-freezeleftborder']);\n }\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n else {\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, j * 30, this.parent.enableRtl, 'Left');\n if (td.classList.contains('e-groupcaption')) {\n var oldColspan = parseInt(td.getAttribute('colspan'), 10);\n var colspan = resetColspanGroupCaption(this.parent, j);\n td.setAttribute('colspan', colspan.toString());\n emptyColspan = oldColspan - colspan;\n }\n }\n if (emptyColspan) {\n var td = this.parent.createElement('TD', {\n className: 'e-groupcaption',\n attrs: { colspan: emptyColspan.toString(), id: this.parent.element.id + 'captioncell', tabindex: '-1' }\n });\n tr.appendChild(td);\n }\n }\n }\n if (tr.querySelectorAll('.e-leftfreeze').length &&\n (tr.querySelectorAll('.e-indentcell').length || tr.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = tr.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n if (!eventArg_1.isSelectable) {\n row.isSelectable = eventArg_1.isSelectable;\n thisRef_2.disableRowSelection(thisRef_2, row, args, eventArg_1);\n }\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.disableRowSelection(this, row, args, eventArg_1);\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.resetrowSpanvalue = function (rowCount, cellArgs, rowIndex) {\n if (rowCount > rowIndex && rowCount < rowIndex + cellArgs.rowSpan) {\n var rowSpan = (rowIndex + cellArgs.rowSpan) - rowCount;\n cellArgs.rowSpan = cellArgs.rowSpan - rowSpan;\n }\n };\n RowRenderer.prototype.disableRowSelection = function (thisRef, row, args, eventArg) {\n var selIndex = this.parent.getSelectedRowIndexes();\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var selRowIndex = selIndex.indexOf(row.index);\n if (selRowIndex > -1) {\n selIndex.splice(selRowIndex, 1);\n }\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg.row.querySelector('.e-rowdragdrop');\n var cellIdx = thisRef.parent.groupSettings.columns.length + (isDrag || thisRef.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n return columns;\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent) {\n var groupKey = rowObj[parseInt(i.toString(), 10)].data.key;\n if ((groupKey instanceof Date && groupKey.toString() === key.toString()) || groupKey === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates, getScrollBarWidth, getScrollWidth, getTransformValues } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.editSettings.showAddNewRow && _this.parent.addNewRowFocus) {\n _this.parent.notify(events.showAddNewRowFocus, {});\n _this.parent.addNewRowFocus = false;\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.widthService = serviceLocator.getService('widthService');\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n this.renderHorizontalScrollbar(div);\n innerDiv.classList.add('e-virtual-content');\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n ContentRender.prototype.renderHorizontalScrollbar = function (element) {\n var parent = this.parent.createElement('div', { className: 'e-movablescrollbar' });\n var child = this.parent.createElement('div', { className: 'e-movablechild' });\n var scrollbarHeight = getScrollBarWidth().toString();\n this.setScrollbarHeight(child, scrollbarHeight);\n this.setScrollbarHeight(parent, scrollbarHeight);\n parent.appendChild(child);\n element.appendChild(parent);\n };\n ContentRender.prototype.setScrollbarHeight = function (ele, height) {\n ele.style.minHeight = height + 'px';\n ele.style.maxHeight = height + 'px';\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n if (this.parent.selectionSettings.type === 'Multiple') {\n this.ariaService.setOptions(this.parent.element, {\n multiselectable: true\n });\n }\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdr');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'presentation',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n if (gObj.editSettings && gObj.editModule && gObj.editSettings.mode === 'Batch' && gObj.editModule.formObj\n && gObj.editSettings.showConfirmDialog === false) {\n gObj.editModule.destroyForm();\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n var isColumnVirtualInfiniteProcess = this.isInfiniteColumnvirtualization() && args.requestType !== 'virtualscroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var tbdy;\n var tableName;\n var isGroupFrozenHdr = this.parent.frozenRows && this.parent.groupSettings.columns.length ? true : false;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var isFrozenLeft = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplates = this.parent.registeredTemplate;\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && registeredTemplates\n && registeredTemplates.template && !args.isFrozen && !isFrozenLeft) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templatetoclear = [];\n for (var i = 0; i < registeredTemplates.template.length; i++) {\n for (var j = 0; j < registeredTemplates.template[parseInt(i.toString(), 10)].rootNodes.length; j++) {\n if (isNullOrUndefined(registeredTemplates.template[parseInt(i.toString(), 10)]\n .rootNodes[parseInt(j.toString(), 10)].parentNode)) {\n templatetoclear.push(registeredTemplates.template[parseInt(i.toString(), 10)]);\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && !(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\n }\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n this.tbody = this.getTable().querySelector(literals.tbody);\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n // mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)]);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && (i < gObj.frozenRows || isGroupFrozenHdr) && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n var rowIdx = parseInt(tr.getAttribute('data-rowindex'), 10);\n if (rowIdx + 1 === gObj.frozenRows) {\n isGroupFrozenHdr = false;\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(arg.row);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.parent.element, {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n if (!isNullOrUndefined(gObj.rowTemplate) && (gObj.isAngular || gObj.isVue3 || gObj.isVue)) {\n this_1.rowElements.push(trElement ? trElement : tr);\n }\n else {\n this_1.rowElements.push(tr);\n }\n }\n this_1.ariaService.setOptions(this_1.parent.element, { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n if (!gObj.isInitialLoad) {\n gObj.scrollModule.setHeight();\n }\n }\n // if (!gObj.enableVirtualization && hdrTbody && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n // cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n // }\n args.rows = this.rows.slice(0);\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n if (!_this.parent.enableVirtualization && (!_this.parent.enableColumnVirtualization || isColumnVirtualInfiniteProcess)\n && !isInfiniteScroll) {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && ((_this.parent.enableInfiniteScrolling\n && !_this.isInfiniteColumnvirtualization()) || isColumnVirtualInfiniteProcess)) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (_this.isInfiniteColumnvirtualization() && _this.parent.isFrozenGrid()) {\n var virtualTable = _this.parent.getContent().querySelector('.e-virtualtable');\n var transform = getTransformValues(virtualTable);\n _this.parent.contentModule.resetStickyLeftPos(transform.width);\n _this.widthService.refreshFrozenScrollbar();\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n if (_this.parent.editSettings.showAddNewRow && (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n var newRow = _this.parent.element.querySelector('.e-addrow-removed');\n if (newRow) {\n remove(newRow);\n }\n }\n var startAdd = !_this.parent.element.querySelector('.' + literals.addedRow);\n if (_this.parent.editSettings.showAddNewRow && _this.parent.editSettings.mode === 'Normal') {\n if (startAdd) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.parent.isAddNewRow = true;\n }\n _this.parent.isEdit = false;\n _this.parent.addRecord();\n }\n if (startAdd || ((_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) &&\n ['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder']\n .some(function (value) { return args.requestType === value; }))) {\n _this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n if (_this.parent.getVisibleFrozenRightCount() && _this.parent.getContent() && getScrollWidth(_this.parent) > 0) {\n _this.parent.element.classList.add('e-right-shadow');\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.isInfiniteColumnvirtualization = function () {\n return this.parent.enableColumnVirtualization && this.parent.enableInfiniteScrolling;\n };\n ContentRender.prototype.enableCacheOnInfiniteColumnVirtual = function () {\n return this.isInfiniteColumnvirtualization() && this.parent.infiniteScrollSettings.enableCache;\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\n }\n if (this.parent.getVisibleFrozenLeftCount() && this.parent.enableColumnVirtualization) {\n this.widthService.refreshFrozenScrollbar();\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (this.isAddRows) {\n var data = this.infiniteCache[this.parent.pageSettings.currentPage];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data) {\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache\n && !(this.isInfiniteColumnvirtualization() && args.requestType === 'virtualscroll')) {\n this.visibleRows.push(data);\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function () {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = this.getReorderedRows(args);\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]);\n }\n }\n else {\n rows = this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.rows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n if (this.parent.editSettings.showAddNewRow && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords() : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = this.getHeaderColGroup();\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(index)) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n var isReactCompiler = gObj.isReact && typeof (col.headerTemplate) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj &&\n gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n gObj.renderTemplates();\n }\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n if (!isNullOrUndefined(visualElement.firstChild) && visualElement.firstChild.nodeType === 1) {\n visualElement.firstChild.style.pointerEvents = 'none';\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'presentation' } });\n var findHeaderRow = this.createHeaderContent(tableName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ||\n ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && this.parent.editSettings.showAddNewRow) ? '' :\n 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr', { attrs: { role: 'row' }, className: (this.parent.enableVirtualization ||\n this.parent.enableInfiniteScrolling) && this.parent.editSettings.showAddNewRow ? 'e-hide' : '' });\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader', attrs: { role: 'row' } });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.ensureColumns(rows);\n rows = this.getHeaderCells(rows, tableName);\n if (gObj.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n for (var i = 0, len = rows.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n addFixedColumnBorder(headerRow);\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n if (!cols.columns) {\n if (isLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n if (isStackedLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n return colSpan;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (gObj.editSettings.showAddNewRow && gObj.element.querySelector('.e-addedrow')) {\n setStyleAttribute(gObj.element.querySelector('.e-addedrow').querySelector('colgroup').childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n this.refreshUI();\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.isAddNewRow = true;\n }\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = undefined;\n if (table) {\n remove(table);\n if (this.parent.editSettings.showAddNewRow && !this.parent.isAddNewRow && table.querySelector('.e-addedrow') &&\n (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n (table.querySelector('.e-addedrow')).classList.add('e-addrow-removed');\n this.parent.isAddNewRow = true;\n }\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n this.initializeHeaderDrag();\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (!isNullOrUndefined(firstHeaderCell)) {\n firstHeaderCell.tabIndex = 0;\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon') ||\n e.target.querySelector('.e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn, addStickyColumnPosition } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox', 'aria-label': this.localizer.getConstant('SelectRow') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n var arialabelText = node.getAttribute('aria-label');\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n arialabelText ? td.setAttribute('aria-label', arialabelText) : null;\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n if (column.type === 'dateonly' && !isNullOrUndefined(value) && typeof value === 'string') {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n }\n if (node.classList.contains('e-summarycell') && !data.key) {\n var uid = node.getAttribute('e-mappinguid');\n column = this.parent.getColumnByUid(uid);\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n if (this.parent.isFrozenGrid() && (!data || (data && !data.key))) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren, addStickyColumnPosition } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1', role: 'columnheader' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('SelectAllCheckbox') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu && column.type !== 'checkbox' && !column.template) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n var titleElem = (this.parent.createElement('span', { id: 'headerTitle-' + column.uid, innerHTML: elementDesc, attrs: { style: 'display:none' } }));\n node.appendChild(titleElem);\n node.setAttribute('aria-describedby', titleElem.id);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren, frozenDirection, isChildColumn, applyStickyLeftRightPosition } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1', role: 'columnheader'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n if (frozenDirection(column) === 'Left') {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (this.parent.getIndentCount() * 30), this.parent.enableRtl, 'Left');\n }\n else {\n var cols = this.parent.getColumns();\n var width = this.parent.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Left');\n }\n }\n else if (frozenDirection(column) === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = this.parent.getColumns();\n var width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) || column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Right');\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n }\n else if (frozenDirection(column) === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = this.parent.getColumns();\n var width = 0;\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.index > cols[parseInt(i.toString(), 10)].index) {\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Left');\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) ||\n column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n var _loop_1 = function (i) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n var gCaptionTemp = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n if (typeof gCaptionTemp === 'string' && gCaptionTemp.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('}')[1];\n }\n else {\n var column_1 = (gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)]);\n var tempObj = column_1.getTemplate(CellType.CaptionSummary);\n var tempID = '';\n if (!isNullOrUndefined(tempObj)) {\n var tempValue_1 = tempObj.fn(data[column_1.columnName], this_1.parent, tempObj.property, tempID);\n if (this_1.parent.isReact && typeof column_1.groupCaptionTemplate !== 'string') {\n this_1.parent.renderTemplates(function () {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n node.appendChild(tempValue_1[0]);\n }\n else {\n node.innerText += ' ' + tempValue_1[0].textContent;\n }\n }\n });\n }\n else {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n gTemplateValue = tempValue_1;\n }\n else {\n gTemplateValue = tempValue_1[0].textContent;\n }\n }\n }\n }\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n if (gTemplateValue && gTemplateValue.length && gTemplateValue[0].textContent) {\n node.appendChild(gTemplateValue[0]);\n }\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache &&\n !this.parent.groupSettings.enableLazyLoading) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n if (cell.isSelected) {\n node.classList.add('e-selectionbackground', 'e-active');\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1', role: 'gridcell' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n nodeElement.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(nodeElement, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n node.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n if (args.action === 'clearFilter' && _this.parent.filterSettings.type === 'Menu') {\n _this.parent.filterSettings.columns[_this.parent.filterModule.filterObjIndex] = _this.parent.filterModule.prevFilterObject;\n var iconClass = _this.parent.showColumnMenu && _this.parent.filterModule['column'].showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = _this.parent.element.querySelector('[e-mappinguid=\"' + _this.parent.filterModule['column'].uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (!isNullOrUndefined(_this.parent.filterModule.prevFilterObject)) {\n flIcon.classList.add('e-filtered');\n }\n }\n if (args.action === 'clear-filter' && (_this.parent.filterSettings.type === 'CheckBox' || _this.parent.filterSettings.type === 'Excel')) {\n _this.parent.filterSettings.columns = _this.parent.filterModule.checkboxPrevFilterObject;\n }\n if (args.requestType === 'grouping') {\n // Remove the dropped column name from groupsettings.columns if args.cancel is true\n var index = gObj.groupSettings.columns.indexOf(args.columnName);\n if (index !== -1) {\n gObj.setProperties({ groupSettings: { Columns: gObj.groupSettings.columns.splice(index, 1) } }, true);\n gObj.setProperties({ sortSettings: { Columns: gObj.sortSettings.columns.splice(index, 1) } }, true);\n var column = gObj.getColumnByField(args.columnName);\n var headerCell = gObj.getColumnHeaderByField(column.field);\n column.visible = (!isNullOrUndefined(headerCell) && !headerCell.classList.contains('e-hide'));\n }\n }\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || args.action === 'clear-filter' ||\n (args.requestType === 'searching' && args.searchString === '') || args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if ((!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) || (count && count <= dataLength)) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n if (gObj.allowPaging && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n if (gObj.allowPaging && (args.changes.addedRecords.length ||\n args.changes.deletedRecords.length ||\n args.changes.changedRecords.length) && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj\n && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = gObj.allowRowDragAndDrop && isNullOrUndefined(gObj.rowDropSettings.targetID) ? 1 : 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var className = gObj.editSettings.showAddNewRow && gObj.editSettings.newRowPosition === 'Bottom' ?\n 'e-emptyrow e-show-added-row' : 'e-emptyrow';\n var tr = this.parent.createElement('tr', { className: className, attrs: { role: 'row' } });\n var td;\n if (gObj.emptyRecordTemplate) {\n var emptyRecordTemplateID = gObj.element.id + 'emptyRecordTemplate';\n td = this.parent.createElement('td', { attrs: { colspan: (gObj.getVisibleColumns().length +\n spanCount + gObj.groupSettings.columns.length).toString() } });\n if (gObj.isVue) {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[1]);\n }\n else {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[0]);\n }\n if (gObj.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n td = this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n });\n }\n if (gObj.isFrozenGrid()) {\n td.classList.add('e-leftfreeze');\n td.style.left = 0 + 'px';\n }\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-border')) {\n this.parent.element.querySelector('.e-frozenrow-border').classList.add('e-frozenrow-empty');\n }\n tr.appendChild(td);\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n if (gObj.editSettings.showAddNewRow) {\n gObj.addRecord();\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && !((args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add') &&\n gObj.enableInfiniteScrolling)) {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n if (!isNullOrUndefined(this.parent.contentModule)) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.element, {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n var isEmptyCol = false;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n isEmptyCol = true;\n }\n prepareColumns(this.parent.columns, null, this.parent);\n if (isEmptyCol) {\n this.parent.notify(events.refreshSplitFrozenColumn, {});\n }\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n /**\n * @param {string} key - Defines the key\n * @param {string} operator - Defines the operator\n * @param {string | number | Date} value - Defines the value\n * @returns {Predicate} - Returns the predicate\n * @hidden */\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n /**\n * @param {Object[]} current - Defines the current object\n * @param {Object[]} untouched - Defines the object needs to merge\n * @returns {Object[]} - Returns the updated group information\n * @hidden */\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var updatedGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n if (!isNullOrUndefined(updatedGroup)) {\n elements[parseInt(i.toString(), 10)].count = updatedGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var updatedGroupItem = updatedGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, updatedGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var column = row.columns[parseInt(k.toString(), 10)];\n var types = column.type instanceof Array ? (column.type) : [(column.type)];\n for (var l = 0; l < types.length; l++) {\n var key = column.field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? updatedGroupItem.records : updatedGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? updatedGroupItem : updatedGroup;\n var temp = column\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove, Browser } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n if (this.parent.columnChooserModule && this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn) {\n this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.columnMenuResponsiveContent = function (str, locale, disabled) {\n var cDiv = this.parent.createElement('div', { className: 'e-responsivecoldiv e-responsive' + str.toLowerCase() + 'div' + (disabled ? ' e-disabled' : '') });\n var span = this.parent.createElement('span', { className: 'e-icons e-res' + str.toLowerCase() + '-icon e-btn-icon' });\n var icon = this.parent.createElement('span', { innerHTML: locale, className: 'e-rescolumn-menu e-res-header-text' });\n cDiv.appendChild(span);\n cDiv.appendChild(icon);\n this.customColumnDiv.appendChild(cDiv);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col, column) {\n var _this = this;\n var gObj = this.parent;\n var isColumnChooser = this.action === ResponsiveDialogAction.isColumnChooser;\n if (col || isColumnChooser) {\n this.filterParent = this.parent.createElement('div', { className: (isColumnChooser ? 'e-maincolumnchooserdiv ' : '') + 'e-mainfilterdiv e-default-filter',\n id: (isColumnChooser ? 'columchooser' : col.uid) + '-main-filter' });\n return this.filterParent;\n }\n else {\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv columnmenudiv', styles: 'width: 100%' });\n if (this.parent.showColumnMenu && this.parent.rowRenderingMode === 'Horizontal' && this.action === ResponsiveDialogAction.isColMenu) {\n this.columnMenuResponsiveContent('AutoFitAll', gObj.localeObj.getConstant('AutoFitAll'));\n this.columnMenuResponsiveContent('AutoFit', gObj.localeObj.getConstant('AutoFit'));\n if (column.allowGrouping && gObj.allowGrouping) {\n this.columnMenuResponsiveContent('Group', gObj.localeObj.getConstant('Group'), gObj.groupSettings.columns.indexOf(column.field) >= 0);\n this.columnMenuResponsiveContent('UnGroup', gObj.localeObj.getConstant('Ungroup'), gObj.groupSettings.columns.indexOf(column.field) < 0);\n }\n if (column.allowSorting && gObj.allowSorting) {\n var direction = 'None';\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === column.field) {\n direction = sortColumns[parseInt(i.toString(), 10)].direction;\n break;\n }\n }\n this.columnMenuResponsiveContent('ascending', gObj.localeObj.getConstant('SortAscending'), direction === 'Ascending');\n this.columnMenuResponsiveContent('descending', gObj.localeObj.getConstant('SortDescending'), direction === 'Descending');\n }\n if (gObj.showColumnChooser) {\n this.columnMenuResponsiveContent('Column', gObj.localeObj.getConstant('Columnchooser'));\n }\n if (column.allowFiltering && gObj.allowFiltering) {\n this.columnMenuResponsiveContent('Filter', gObj.localeObj.getConstant('FilterMenu'));\n }\n }\n else {\n var cols = gObj.getColumns();\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n }\n EventHandler.add(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (parentsUntil(target, 'columnmenudiv') && this.action === ResponsiveDialogAction.isColMenu && !parentsUntil(target, 'e-disabled')) {\n var column = this.menuCol ? this.menuCol : this.filteredCol;\n if (parentsUntil(target, 'e-responsiveautofitalldiv')) {\n gObj.autoFitColumns([]);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveautofitdiv')) {\n gObj.autoFitColumns(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivegroupdiv')) {\n gObj.groupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveungroupdiv')) {\n gObj.ungroupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveascendingdiv')) {\n gObj.sortColumn(column.field, 'Ascending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivedescendingdiv')) {\n gObj.sortColumn(column.field, 'Descending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivecolumndiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 5 });\n gObj.showResponsiveCustomColumnChooser();\n }\n else if (parentsUntil(target, 'e-responsivefilterdiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 3 });\n this.isRowResponsive = true;\n this.isCustomDialog = false;\n if (gObj.filterModule) {\n gObj.filterModule.responsiveDialogRenderer.showResponsiveDialog(column);\n }\n }\n e.preventDefault();\n }\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the filter column\n * @param {Column} column - specifies the menu column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col, column) {\n if ((this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) ||\n (column && this.action === ResponsiveDialogAction.isColMenu)) {\n this.menuCol = column;\n this.renderCustomFilterDialog(null, column);\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'open' });\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col, column) {\n var gObj = this.parent;\n var isColMenu = this.action === ResponsiveDialogAction.isColMenu;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var colMenu = isColMenu ? 'e-customcolumnmenudiv ' : '';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + (isColMenu ? 'customcolumnmenu' : 'customfilter'),\n className: this.parent.cssClass ? colMenu +\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : colMenu + 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true, null, column);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id, column) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col, column),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n var colMenu = this.action === ResponsiveDialogAction.isColMenu ? 'e-customcolumnmenu ' : '';\n options.cssClass = colMenu + 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n id = this.action === ResponsiveDialogAction.isColumnChooser ? 'columnchooser' : id;\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n var custom = document.querySelector('.e-resfilter');\n if (custom) {\n remove(custom);\n }\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n this.closeCustomFilter();\n var custom = document.querySelector('.e-rescolummenu');\n if (custom) {\n remove(custom);\n }\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'clear' });\n var custom = document.querySelector('.e-rescolumnchooser');\n if (custom) {\n remove(custom);\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n title = gObj.localeObj.getConstant('ColumnMenu');\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n title = gObj.localeObj.getConstant('ChooseColumns');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n else if (action === ResponsiveDialogAction.isColumnChooser) {\n name = 'responsive_column_chooser_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort ||\n action === ResponsiveDialogAction.isColumnChooser || this.action === ResponsiveDialogAction.isColumnChooser) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.removeCustomFilterElement = function () {\n var elem = document.getElementById(this.parent.element.id + 'customcolumnmenu');\n if (elem) {\n remove(elem);\n var custom = document.querySelector('.e-customfilter');\n if (custom) {\n remove(custom);\n }\n }\n var custommenu = document.querySelector('.e-rescolumnchooser');\n if (custommenu) {\n remove(custommenu);\n }\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'confirm' });\n this.removeCustomFilterElement();\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), this.parent.groupSettings.columns.length + columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol = header.querySelector(literals.colGroup)\n .children[parseInt(index.toString(), 10)];\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization && this.parent.isEdit) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length && editTableCol[parseInt(index.toString(), 10)]) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n this.refreshFrozenScrollbar();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var movableWidth = this.parent.getContent().firstElementChild.getBoundingClientRect().width;\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.groupedFrozenRow = 0;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0);\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (e.target === firstHeaderCell && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n if (this.parent.allowPaging && this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer')) {\n this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer').removeAttribute('aria-hidden');\n }\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n firstHeaderCell.tabIndex = 0;\n this.setActive(false);\n if (!isNullOrUndefined(this.active) && (isNullOrUndefined(this.active.target) || !this.active.target.classList.contains('e-columnmenu'))) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || (closest(e.target, '.e-inline-edit') && (!this.parent.editSettings.showAddNewRow &&\n (this.parent.editSettings.showAddNewRow && !this.parent.element.querySelector('.e-editedrow'))))) {\n return;\n }\n this.setActive(isContent);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n if (this.currentInfo.element.classList.contains('e-rowcell') && e.type && e.type === 'click') {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n };\n FocusStrategy.prototype.handleFilterNavigation = function (e, inputSelector, buttonSelector) {\n if (e.target === document.querySelector(inputSelector) && e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n document.querySelector(buttonSelector).focus();\n }\n else if (e.target === document.querySelector(buttonSelector) && e.key === 'Tab' && !e.shiftKey &&\n document.activeElement === document.querySelector(buttonSelector)) {\n e.preventDefault();\n document.querySelector(inputSelector).focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && !parentsUntil(e.target, 'e-gridpager') && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.parent.filterSettings.type === 'Excel') {\n this.handleFilterNavigation(e, '.e-excelfilter .e-menu-item:not(.e-disabled)', '.e-excelfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'CheckBox') {\n this.handleFilterNavigation(e, '.e-searchinput.e-input', '.e-checkboxfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'Menu') {\n this.handleFilterNavigation(e, '.e-flmenu .e-input-group.e-popup-flmenu', '.e-flmenu .e-footer-content button:nth-child(2)');\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString() && this.content.matrix.matrix.length) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.parent.allowPaging && this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer')) {\n this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer').setAttribute('aria-hidden', 'true');\n }\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (this.parent.allowPaging && this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer')) {\n this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer').removeAttribute('aria-hidden');\n }\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (!tr.classList.contains('e-row') || (tr.classList.contains('e-insertedrow') || !cellCol.isPrimaryKey) && cellCol.allowEditing)) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n var addNewRow = this.parent.editSettings.showAddNewRow && closest(document.activeElement, '.e-addedrow') !== null;\n if ((th && closest(document.activeElement, '.e-filterbarcell') !== null) || addNewRow) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n if (this.parent.isEdit && (e.action === 'tab' || e.action === 'shiftTab') && this.parent.editSettings.mode === 'Normal'\n && !this.parent.editSettings.showAddNewRow && !isNullOrUndefined(parentsUntil(target, 'e-addedrow'))) {\n var inputElements = this.parent.editModule.formObj.element\n .querySelectorAll('input.e-field:not(.e-disabled),button:not(.e-hide)');\n var inputTarget = target.classList.contains('e-ddl') ? target.querySelector('input') : target;\n var firstEditCell = e.action === 'tab' && inputTarget === inputElements[inputElements.length - 1];\n var lastEditCell = e.action === 'shiftTab' && inputTarget === inputElements[0];\n if (firstEditCell || lastEditCell) {\n e.preventDefault();\n var focusElement = inputElements[firstEditCell ? 0 : inputElements.length - 1];\n focusElement = focusElement.parentElement.classList.contains('e-ddl') ? focusElement.parentElement : focusElement;\n focusElement.focus();\n }\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && ((this.parent.isEdit && (!this.parent.editSettings.showAddNewRow ||\n (this.parent.editSettings.showAddNewRow && ((!isNullOrUndefined(this.parent.element.querySelector('.e-editedrow')) ||\n (!isNullOrUndefined(parentsUntil(target, 'e-addedrow')) && !isNullOrUndefined(closest(e.target, 'input')) && !isNullOrUndefined(document.querySelector('.e-popup-open'))) ||\n (!isNullOrUndefined(parentsUntil(target, 'e-addedrow')) && (target && !target.querySelector('.e-cancel-icon')) &&\n !isNullOrUndefined(parentsUntil(target, 'e-unboundcell')))))))) || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || ((filterCell || addNewRow) && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content) {\n this.active = content ? this.content : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else if (isNullOrUndefined(_this.parent.element.querySelector('.e-flmenu')) ||\n parentsUntil(document.activeElement, 'e-flmenu-valuediv') !== _this.parent.element.querySelector('.e-flmenu-valuediv')) {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n if (this.parent.isReact && !this.parent.isEdit && this.currentInfo.element.classList.contains('e-rowcell')\n && !this.currentInfo.element.parentElement && !(this.parent.allowGrouping && this.parent.groupSettings.columns.length) &&\n this.parent.getRowByIndex(this.prevIndexes.rowIndex)) {\n var cellElem = this.parent.getCellFromIndex(this.prevIndexes.rowIndex, this.prevIndexes\n .cellIndex);\n this.currentInfo.element = cellElem ? cellElem : this.currentInfo.element;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false);\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true);\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? _this.content : _this.header;\n var frozenRow = _this.parent.frozenRows;\n var batchLen = 0;\n if (frozenRow && _this.parent.editSettings.mode === 'Batch') {\n batchLen = _this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length +\n _this.parent.getHeaderContent().querySelectorAll('.e-hiddenrow').length;\n }\n if (_this.parent.groupSettings.columns.length && frozenRow && content) {\n frozenRow = 0;\n for (var i = 0; i < e.rows.length; i++) {\n frozenRow++;\n if (e.rows[parseInt(i.toString(), 10)].index + 1 === _this.parent.frozenRows) {\n break;\n }\n }\n _this.groupedFrozenRow = frozenRow;\n }\n var rows = content ? e.rows.slice(frozenRow + batchLen) : e.rows;\n var updateRow = content ? e.rows.slice(0, frozenRow + batchLen) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n if (frozenRow && ((_this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || (e.args && (e.args.requestType === 'batchsave')))) ||\n (e.args && (e.args.requestType === 'delete' || e.args.requestType === 'save')))) {\n var matrixcs = _this.header.matrix.matrix;\n var hdrLen = _this.parent.headerModule.rows.length;\n matrixcs.splice(hdrLen, matrixcs.length - hdrLen);\n }\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n var isScroll = _this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling;\n if ((_this.parent.editSettings.showAddNewRow && content && _this.header && _this.header.matrix) &&\n (!isScroll || (isScroll && _this.parent.isAddNewRow))) {\n var tempMatrix = _this.header.matrix.matrix;\n var lastRowHeaderIdx = _this.parent.allowFiltering && _this.parent.filterSettings.type === 'FilterBar' ? 2 : 1;\n cFocus.matrix.rows = _this.parent.frozenRows && _this.parent.editSettings.newRowPosition === 'Top' ?\n cFocus.matrix.rows : ++cFocus.matrix.rows;\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n (_this.parent.frozenRows || isScroll ?\n matrix : cFocus.matrix.matrix).unshift(_this.refreshAddNewRowMatrix(tempMatrix[tempMatrix.length -\n lastRowHeaderIdx]));\n }\n else {\n cFocus.matrix.matrix.push(_this.refreshAddNewRowMatrix(tempMatrix[tempMatrix.length - lastRowHeaderIdx]));\n }\n _this.parent.isAddNewRow = false;\n }\n if (!(_this.parent.isFrozenGrid() && (e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))) ||\n (frozenRow && _this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || e.args.requestType === 'batchsave'\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.refreshAddNewRowMatrix = function (matrix) {\n var cols = this.parent.getColumns();\n var indent = this.parent.getIndentCount();\n for (var i = indent; i < matrix.length - 1; i++) {\n if (cols[i - indent] && cols[i - indent].visible && cols[i - indent].allowEditing) {\n matrix[parseInt(i.toString(), 10)] = 1;\n }\n else {\n matrix[parseInt(i.toString(), 10)] = 0;\n }\n }\n return matrix;\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'touchstart', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.showAddNewRowFocus, handler: this.showAddNewRowFocus },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.showAddNewRowFocus = function () {\n if (this.parent.editSettings.showAddNewRow) {\n var startIdx = this.parent.editSettings.newRowPosition === 'Top' ? 0 : this.content.matrix.matrix.length - 1;\n var startCellIdx = this.parent.getIndentCount();\n if (this.parent.editSettings.newRowPosition === 'Top' && (this.parent.frozenRows ||\n this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var headrIdx = this.header.matrix.matrix.length - (this.groupedFrozenRow ?\n this.groupedFrozenRow : this.parent.frozenRows);\n startCellIdx = this.findNextCellFocus(this.header.matrix.matrix[headrIdx - 1], startCellIdx);\n this.header.matrix.current = [headrIdx - 1, startCellIdx];\n this.active = this.header;\n }\n else {\n startCellIdx = this.findNextCellFocus(this.content.matrix.matrix[parseInt(startIdx.toString(), 10)], startCellIdx);\n this.content.matrix.current = [startIdx, startCellIdx];\n this.active = this.content;\n }\n var addedrow = this.parent.element.querySelector('.e-addedrow');\n if (addedrow && addedrow.querySelectorAll('tr') &&\n addedrow.querySelector('tr').cells[parseInt(startCellIdx.toString(), 10)].querySelector('input')) {\n addedrow.querySelector('tr').cells[parseInt(startCellIdx.toString(), 10)].querySelector('input').select();\n }\n }\n };\n FocusStrategy.prototype.findNextCellFocus = function (matrix, cellIndex) {\n for (var i = cellIndex; i < matrix.length; i++) {\n if (matrix[parseInt(i.toString(), 10)] === 1) {\n return i;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n if (this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: false }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'home') {\n e.action = 'ctrlHome';\n }\n else if (e.action === 'end') {\n e.action = 'ctrlEnd';\n }\n else if (['downArrow', 'upArrow', 'leftArrow', 'rightArrow'].indexOf(e.action) !== -1) {\n return;\n }\n }\n var navigators = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigators, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var row = this.getTable().rows[parseInt(rowIndex.toString(), 10)];\n var cell = gObj.editSettings.showAddNewRow && row.classList.contains('e-addedrow') ?\n (row.querySelectorAll('td:not(.e-editcell)'))[parseInt(cellIndex.toString(), 10)]\n : row.cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var rowIdx = target.parentElement.rowIndex;\n if (this.parent.editSettings.showAddNewRow && parentsUntil(target, 'e-addedrow')) {\n rowIdx = parentsUntil(target, 'e-addedrow').rowIndex;\n }\n var _a = [rowIdx, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n var row = this.getTable().rows[parseInt(rowIndex.toString(), 10)];\n info.element = !isNullOrUndefined(row) ? this.parent.editSettings.showAddNewRow && row.classList.contains('e-addedrow') ?\n (row.querySelectorAll('td:not(.e-editcell)'))[parseInt(cellIndex.toString(), 10)]\n : row.cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = (!info.element.classList.contains('e-unboundcell') || (this.parent.editSettings.showAddNewRow &&\n info.element.classList.contains('e-unboundcell') && parentsUntil(info.element, 'e-addedrow'))) &&\n !info.element.classList.contains('e-detailcell') ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n if (this.parent.editSettings.mode === 'Batch' && this.parent.isEdit && info.elementToFocus.tagName.toLowerCase() === 'input'\n && info.elementToFocus.classList.contains('e-dropdownlist')) {\n info.elementToFocus = info.elementToFocus.parentElement;\n }\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n var commandCellQuery = this.parent.editSettings.showAddNewRow && parentsUntil(element, 'e-addedrow') ?\n ', button:not(.e-hide)' : '';\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea' + commandCellQuery;\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (action === 'tab' && this.matrix.matrix.length &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n }\n if (action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = parentsUntil(document.activeElement, 'e-addedrow') && this.parent.editSettings.showAddNewRow ?\n parentsUntil(document.activeElement, 'e-addedrow') : document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && !isNullOrUndefined(row) && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) : false,\n toHeader: headerSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Top' &&\n !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling && e && e.action === 'downArrow') {\n rowIndex++;\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && (this.parent.frozenRows !== 0 || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.parent.editSettings.showAddNewRow))) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var rowIdx = target.parentElement.rowIndex;\n if (this.parent.editSettings.showAddNewRow && parentsUntil(target, 'e-addedrow')) {\n rowIdx = parentsUntil(target, 'e-addedrow').rowIndex;\n }\n var _a = [rowIdx, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(rowIdx, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n var row = this.getTable().rows[parseInt(rowIndex.toString(), 10)];\n info.element = !isNullOrUndefined(row) ? this.parent.editSettings.showAddNewRow && row.classList.contains('e-addedrow') ?\n (row.querySelectorAll('td:not(.e-editcell)'))[parseInt(cellIndex.toString(), 10)]\n : row.cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (action === 'tab' && lastRow && isLastCell)\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber);\n }\n else {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber);\n }\n else {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox, serviceLocator) {\n this.searchBox = searchBox;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', this.l10n.getConstant('Clear'));\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && ((relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) || isNullOrUndefined(relatedTarget))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","import { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses, getCellFromRow } from '../base/util';\nimport { getCellsByTableName, parentsUntil, getScrollBarWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.destroyAutoFillElements();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n (this.parent.isEdit && !this.parent.editSettings.showAddNewRow) && !this.parent.isPersistSelection;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length && !this.parent.isPersistSelection) {\n var selectedGroupedData = gObj.getCurrentViewRecords().filter(function (col) { return col['key'] === undefined; });\n return selectedGroupedData;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')))) {\n selectData = gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.isCheckboxReset = true;\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n if (!(gObj.allowRowDragAndDrop && _this.isDragged && _this.selectionSettings.persistSelection)) {\n _this.clearRow();\n }\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, undefined, undefined, undefined);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n if (this.selectedRowIndexes.indexOf(startIndex) === -1) {\n this.selectedRowIndexes.push(startIndex);\n this.selectedRecords.push(selectedRow);\n }\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, undefined, null);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, null);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var args;\n var selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return this.parent.getCellFromIndex(rIdx, cIdx);\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.parent.isSpan ? getCellFromRow(this.parent, startIndex.rowIndex, startIndex.cellIndex) :\n gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n selectedCell = _this.parent.isSpan ? getCellFromRow(gObj, i, j) : gObj.getCellFromIndex(i, j);\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var rowObj;\n rowObj = gObj.getRowsObject()[cellIndexes[0].rowIndex];\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n var idx = cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1 || (this.selectionSettings.mode === 'Both' &&\n selectedCell.classList.contains('e-gridchkbox') && !selectedCell.getAttribute('aria-selected'))) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells && cells.length > 0) {\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n if (cell && cell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cell, 'tr'));\n }\n }\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n this.stopTimer();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n if (rowIndex > -1) {\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n }\n if (!e.ctrlKey && !e.shiftKey && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling &&\n !this.parent.enableColumnVirtualization && !this.parent.groupSettings.columns.length && this.isCellDrag) {\n this.updateScrollPosition(e, position, this.parent.getContent());\n }\n };\n Selection.prototype.updateScrollPosition = function (mouseEvent, position, scrollElement) {\n var _this = this;\n var clientRect = scrollElement.getBoundingClientRect();\n if (clientRect.left >= position.x - 20 -\n (this.parent.enableRtl && this.parent.height !== 'auto' ? getScrollBarWidth() : 0)) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, _this.parent.enableRtl ? 'right' : 'left', mouseEvent); }, 200);\n }\n else if (clientRect.left + scrollElement.clientWidth - 20 -\n (!this.parent.enableRtl && this.parent.height !== 'auto' ? getScrollBarWidth() : 0) < position.x) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, _this.parent.enableRtl ? 'left' : 'right', mouseEvent); }, 200);\n }\n if (clientRect.top >= position.y - (this.parent.getRowHeight() * 0.5)) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, 'up', mouseEvent); }, 200);\n }\n else if (clientRect.top + scrollElement.clientHeight - (this.parent.getRowHeight() * 0.5) -\n (scrollElement.firstElementChild.scrollWidth > scrollElement.firstElementChild.offsetWidth ?\n getScrollBarWidth() : 0) <= position.y) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, 'down', mouseEvent); }, 200);\n }\n };\n Selection.prototype.stopTimer = function () {\n if (this.timer1) {\n window.clearInterval(this.timer1);\n this.timer1 = null;\n }\n if (this.timer2) {\n window.clearInterval(this.timer2);\n this.timer2 = null;\n }\n this.preventFocus = false;\n };\n Selection.prototype.setScrollPosition = function (scrollElement, direction, mouseEvent) {\n var rowIndex = -1;\n var columnIndex = -1;\n if (this.endAFCell || this.prevECIdxs) {\n rowIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('index'), 10) : this.prevECIdxs.rowIndex;\n columnIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('data-colindex'), 10) : this.prevECIdxs.cellIndex;\n }\n switch (direction) {\n case 'up':\n if (mouseEvent && closest(mouseEvent.target, '.e-headercontent')) {\n return;\n }\n if (this.isAutoFillSel && this.startAFCell && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes.length === 1 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().top > 0))) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'), 10);\n }\n rowIndex -= 1;\n if (this.parent.frozenRows) {\n rowIndex += this.parent.frozenRows + 1;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n rowIndex < 1 ? scrollElement.scrollTop = 0 : scrollElement.scrollTop -= this.parent.getRowByIndex(rowIndex)\n .offsetHeight;\n break;\n case 'down':\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'), 10);\n }\n if (rowIndex < this.parent.getRows().length - 1) {\n rowIndex += 1;\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n this.startAFCell = this.parent.getCellFromIndex(rowIndex, this.selectedRowCellIndexes[0].cellIndexes[0]);\n }\n scrollElement.scrollTop += this.parent.getRowByIndex(rowIndex).offsetHeight;\n }\n else {\n scrollElement.scrollTop = scrollElement.scrollHeight;\n }\n break;\n case 'left':\n if (columnIndex > 0 && rowIndex > -1) {\n if (this.isAutoFillSel && this.startAFCell && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes[0].cellIndexes.length > 0 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes[0].cellIndexes.length > 1 &&\n ((!this.parent.enableRtl && this.startAFCell.getBoundingClientRect().left > 0) || (this.parent.enableRtl &&\n this.startAFCell.getBoundingClientRect().left < this.parent.element.offsetWidth))))) {\n columnIndex = parseInt(this.startAFCell.getAttribute('data-colindex'), 10);\n }\n var nextElement_1 = this.findNextCell(scrollElement, direction, columnIndex, rowIndex);\n columnIndex = nextElement_1 ? parseInt(nextElement_1.getAttribute('data-colindex'), 10) : -1;\n if (this.parent.enableRtl && nextElement_1) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < 1 ? scrollElement.scrollLeft = scrollElement.scrollWidth :\n scrollElement.scrollLeft += nextElement_1.offsetWidth;\n }\n else if (nextElement_1) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < 1 ? scrollElement.scrollLeft = 0 : scrollElement.scrollLeft -= nextElement_1.offsetWidth;\n }\n }\n break;\n case 'right':\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n columnIndex = parseInt(this.startAFCell.getAttribute('data-colindex'), 10);\n }\n // eslint-disable-next-line no-case-declarations\n var currentElement = this.parent.getCellFromIndex(rowIndex, columnIndex);\n // eslint-disable-next-line no-case-declarations\n var nextElement = this.findNextCell(scrollElement, direction, columnIndex, rowIndex);\n if (nextElement && this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n this.startAFCell = this.parent.getCellFromIndex(this.selectedRowCellIndexes[0].rowIndex, parseInt(nextElement.getAttribute('data-colindex'), 10));\n }\n columnIndex = nextElement ? parseInt(nextElement.getAttribute('data-colindex'), 10) : -1;\n if (this.parent.enableRtl && nextElement) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < this.parent.columns.length - 1 ? scrollElement.scrollLeft -= currentElement.offsetWidth :\n scrollElement.scrollLeft = -scrollElement.scrollWidth;\n }\n else if (nextElement) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < this.parent.columns.length - 1 ? scrollElement.scrollLeft += currentElement.offsetWidth :\n scrollElement.scrollLeft = scrollElement.scrollWidth;\n }\n if (this.isAutoFillSel && (columnIndex === this.parent.columns.length - 1 || columnIndex === -1) &&\n this.startAFCell && this.endAFCell) {\n this.positionAFBorders();\n scrollElement.scrollLeft = this.parent.enableRtl ? -scrollElement.scrollWidth : scrollElement.scrollWidth;\n }\n break;\n }\n if (rowIndex > -1 && rowIndex < this.parent.getRows().length && columnIndex > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mouseEvent_1 = { target: this.parent.getCellFromIndex(rowIndex, columnIndex) };\n if (this.isAutoFillSel && mouseEvent_1.target.classList.contains('e-cellselectionbackground') &&\n ((direction === 'down' && parseInt(mouseEvent_1.target.getAttribute('index'), 10) === this.parent.getRows().length - 1) ||\n (direction === 'right' && parseInt(mouseEvent_1.target.getAttribute('data-colindex'), 10) === this.parent.columns.length - 1))) {\n return;\n }\n this.endAFCell = mouseEvent_1.target;\n this.preventFocus = true;\n this.selectLikeExcel(mouseEvent_1, rowIndex, columnIndex);\n }\n };\n Selection.prototype.findNextCell = function (scrollElement, direction, columnIndex, rowIndex) {\n var nextElement = this.parent.getCellFromIndex(rowIndex, direction === 'left' ? columnIndex - 1 : columnIndex + 1);\n if (nextElement && nextElement.classList.contains('e-hide')) {\n var siblingEles = nextElement.closest('tr').querySelectorAll('.e-rowcell:not(.e-hide)');\n var nextEleInd = Array.from(siblingEles).indexOf(nextElement.nextElementSibling);\n if (nextEleInd > 0 && nextEleInd < siblingEles.length - 1) {\n nextElement = siblingEles[nextEleInd + (direction === 'left' ? -1 : 1)];\n return nextElement;\n }\n else {\n scrollElement.scrollLeft = 0;\n return null;\n }\n }\n return nextElement;\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.setFrozenBorders = function (parentEle, border, bdrStr) {\n var width = border.style.borderWidth.toString().split(' ');\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr])).\n filter(function (ele) { return ele.style.display === ''; });\n var fixedCells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground.e-fixedfreeze')).\n filter(function (ele) { return ele.style.display === ''; });\n var isRtl = this.parent.enableRtl;\n if (cells.length) {\n var firstRowIdx = cells[0].getAttribute('index');\n var firstColIdx = cells[0].getAttribute('data-colindex');\n var lastRowIdx = cells[cells.length - 1].getAttribute('index');\n var lastColIdx = cells[cells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === firstRowIdx && (width.length === 1 || (width.length === 3\n && parseInt(width[0], 10) === 2) || (width.length === 4 && parseInt(width[0], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === firstColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && (((!isRtl &&\n parseInt(width[3], 10) === 2)) || (isRtl && parseInt(width[1], 10) === 2))))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === lastRowIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[2], 10) === 2) || (width.length === 4 && parseInt(width[2], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === lastColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && ((!isRtl &&\n parseInt(width[1], 10) === 2)) || (isRtl && parseInt(width[3], 10) === 2)))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n if (fixedCells.length) {\n var firstRowIdx = fixedCells[0].getAttribute('index');\n var firstColIdx = fixedCells[0].getAttribute('data-colindex');\n var lastRowIdx = fixedCells[fixedCells.length - 1].getAttribute('index');\n var lastColIdx = fixedCells[fixedCells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < fixedCells.length; i++) {\n var idx = fixedCells[parseInt(i.toString(), 10)].getAttribute('index');\n var colIdx = fixedCells[parseInt(i.toString(), 10)].getAttribute('data-colindex');\n if (idx === firstRowIdx &&\n ((!this.parent.getHeaderContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-content')) || !parentsUntil(parentEle, 'e-content'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (idx === lastRowIdx &&\n ((!this.parent.getContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-headercontent')) || !parentsUntil(parentEle, 'e-headercontent'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n var preCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) - 1];\n if (colIdx === firstColIdx && (!preCell || (preCell && !preCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n var nextCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) + 1];\n if (colIdx === lastColIdx && (!nextCell || (nextCell && !nextCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n };\n Selection.prototype.refreshFrozenBorders = function () {\n if (this.bdrElement) {\n this.setFrozenBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n if (this.parent.frozenRows) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length && this.parent.isFrozenGrid()) {\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr] + ':not(.e-hide)')).\n filter(function (ele) { return ele.style.display === ''; });\n }\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n if (start.offsetParent.classList.contains('e-content') || start.offsetParent.classList.contains('e-headercontent')) {\n parentOff = start.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var rowHeight = !isFrozen && this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + (isFrozen ? 0 : 1)) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + (isFrozen ? 0 : 1) + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getContentTable(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getHeaderTable(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display, freeze) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n var parentEle = this.parent.getContentTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n if (!freeze) {\n this.mcBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n var parentEle = this.parent.getHeaderTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n if (!freeze) {\n this.mhBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight - getScrollBarWidth();\n if (this.parent.allowPaging) {\n totalHeight -= this.parent.element.querySelector('.e-pager').offsetHeight;\n }\n if (this.parent.aggregates.length) {\n totalHeight -= this.parent.getFooterContent().offsetHeight;\n }\n var totalWidth = this.parent.element.clientWidth - (this.parent.height !== 'auto' ? getScrollBarWidth() : 0);\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n var borderAFRightValue = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n borderAFRightValue > 0 ? this.bdrAFRight.style.right = borderAFRightValue + 'px' : this.bdrAFRight.style.right = '0px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n if (this.parent.height !== 'auto' && getScrollBarWidth()) {\n this.bdrAFTop.style.left = getScrollBarWidth() + 'px';\n this.bdrAFTop.style.width = (parseInt(this.bdrAFTop.style.width, 10) - getScrollBarWidth()) + 'px';\n }\n else {\n this.bdrAFTop.style.left = '0px';\n }\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.destroyAutoFillElements = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.remove();\n this.bdrAFRight.remove();\n this.bdrAFBottom.remove();\n this.bdrAFTop.remove();\n this.bdrAFLeft = this.bdrAFRight = this.bdrAFBottom = this.bdrAFTop = null;\n }\n if (this.autofill) {\n this.autofill.remove();\n this.autofill = null;\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n this.stopTimer();\n document.body.classList.remove('e-disableuserselect');\n if (this.element && !isNullOrUndefined(this.element.parentElement)) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n this.preventFocus = true;\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n if (!isNullOrUndefined(this.endAFCell) && !isNullOrUndefined(this.startAFCell)) {\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n }\n this.isAutoFillSel = false;\n this.preventFocus = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (this.target.classList.contains('e-leftfreeze') || this.target.classList.contains('e-rightfreeze') ||\n this.target.classList.contains('e-fixedfreeze')) {\n this.autofill.classList.add('e-freeze-autofill');\n }\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n if (cell.offsetParent.classList.contains('e-content') || cell.offsetParent.classList.contains('e-headercontent')) {\n parentOff = cell.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroyAutoFillElements, handler: this.destroyAutoFillElements },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n this.parent.off(events.destroyAutoFillElements, this.destroyAutoFillElements);\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type)) {\n if (this.selectionSettings.type === 'Single') {\n gObj.element.removeAttribute('aria-multiselectable');\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n else if (this.selectionSettings.type === 'Multiple') {\n gObj.element.setAttribute('aria-multiselectable', 'true');\n }\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function () {\n if (!this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n var data = (this.parent.getDataModule().isRemote() && !isNullOrUndefined(res['result'])) ? res['result'] : res;\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && data[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = data[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = data;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n var rowData = (this.parent.groupSettings.columns.length && this.parent.isPersistSelection) ?\n this.parent.currentViewData['records'] : this.parent.currentViewData;\n for (var _d = 0, rowData_1 = rowData; _d < rowData_1.length; _d++) {\n var data = rowData_1[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData).executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if ((this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (!isNullOrUndefined(this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i]))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length) {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n else {\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top' && !this.parent.editSettings.showAddNewRow) {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n if (this.parent.isCheckBoxSelection && this.parent.enableVirtualization && !this.isPartialSelection &&\n (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.parent.isPersistSelection && this.parent.checkAllRows === 'Check') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n if (rowObj.length !== this.selectedRowIndexes.length) {\n for (var _a = 0, rowObj_3 = rowObj; _a < rowObj_3.length; _a++) {\n var row = rowObj_3[_a];\n if (this.selectedRowIndexes.indexOf(row.index) <= -1) {\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.parent.groupSettings.columns.length ? this.getData()['records'].length :\n this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !((this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.isPartialSelection)\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n var getRecord = this.parent.getDataModule().isRemote() ? [] :\n (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n getRecord.length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n getRecord.length && checkedLen === getRecord.length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || ((this.\n isSelectAllRowCount(checkedLen) || checkedLen === this.totalRecordsCount) && !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))\n || (checkedLen === this.totalRecordsCount && this.totalRecordsCount && !this.isPartialSelection &&\n !this.parent.allowPaging && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling)))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (!this.isAutoFillSel && !e.ctrlKey && !e.shiftKey) {\n this.startAFCell = this.endAFCell = null;\n }\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.cmdKeyPressed = e.metaKey;\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (this.isRowDragSelected && isNullOrUndefined(target) && this.parent.allowRowDragAndDrop &&\n this.selectionSettings.persistSelection && this.checkSelectAllClicked) {\n this.isRowDragSelected = false;\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && !this.parent.editSettings.showAddNewRow\n && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > 1\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n if (this.selectionSettings.mode === 'Both') {\n var checkboxColumn = this.parent.getColumns().find(function (col) { return col.type === 'checkbox'; });\n var checkboxColumnIndexCheck = checkboxColumn && checkboxColumn.index !== cellIndex;\n if (checkboxColumnIndexCheck && !this.isMultiCtrlRequestCell) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n }\n else if (!checkboxColumn || checkboxColumnIndexCheck) {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n }\n else {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (e.element.parentElement.querySelector('.e-rowcelldrag') || e.element.parentElement.querySelector('.e-dtdiagonalright')\n || e.element.parentElement.querySelector('.e-dtdiagonaldown')) {\n prev.cellIndex = prev.cellIndex - 1;\n }\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var hdrLength = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Top' &&\n e.keyArgs.action === 'upArrow') {\n hdrLength++;\n }\n rowIndex -= hdrLength;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - hdrLength : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Top' &&\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) && e.keyArgs.action === 'downArrow') {\n rowIndex--;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n if (this.parent.clipboardModule) {\n window.navigator['clipboard'].writeText('');\n }\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n startIndex = startIndex + this.parent.getIndentCount();\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else {\n if (this.parent.isSpan && this.parent.isFrozenGrid()) {\n var cells = rows[parseInt(j.toString(), 10)].querySelectorAll('.e-rowcell');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('aria-colindex') === selectedCol.getAttribute('aria-colindex')) {\n addRemoveActiveClasses([cells[parseInt(i.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode && !(e.requestType === 'save' && e['action'] === 'add');\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n // Check searchString is number and parseFloat to remove trailing zeros\n gObj.searchSettings.key = !isNaN(parseFloat(searchString)) ? parseFloat(searchString).toString() : searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n var addedRow = _this.parent.element.querySelector('.e-addedrow');\n if (_this.parent.editSettings.showAddNewRow && addedRow) {\n remove(addedRow);\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.parent.isAddNewRow = true;\n }\n _this.parent.addNewRowFocus = true;\n _this.parent.isEdit = false;\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n if (_this.parent.isFrozenGrid() && columns.length) {\n _this.parent.notify(events.refreshFrozenPosition, { isModeChg: true });\n }\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n var startAdd = !_this.parent.element.querySelector('.e-addedrow');\n if (_this.parent.editSettings.showAddNewRow && startAdd) {\n _this.parent.isEdit = false;\n _this.parent.addRecord();\n if (!(_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n _this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid() && this.parent.height !== 'auto'\n && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? '1px' : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n if (this.parent.frozenRows && this.header) {\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.content, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(this.content, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.contentScrollHandler);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.headerScrollHandler);\n }\n this.contentScrollHandler = null;\n this.headerScrollHandler = null;\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n if (_this.parent.frozenRows) {\n if (_this.content.scrollTop > 0 && _this.parent.frozenRows) {\n addClass([_this.parent.element], 'e-top-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-top-shadow');\n }\n }\n if (_this.parent.element.querySelectorAll('.e-leftfreeze,.e-fixedfreeze,.e-rightfreeze').length) {\n var errorFreeze = _this.parent.getContent().querySelectorAll('.e-freezeerror:not([style*=\"display: none\"])');\n var errorFixed = _this.parent.getContent().querySelectorAll('.e-fixederror:not([style*=\"display: none\"])');\n if (target.scrollLeft !== 0 && _this.parent.getVisibleFrozenLeftCount()) {\n addClass([_this.parent.element], 'e-left-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-left-shadow');\n }\n var widthVal = Math.round((_this.parent.enableRtl ? target.scrollWidth + target.scrollLeft : target.scrollWidth -\n target.scrollLeft) + (_this.parent.height === 'auto' ? 0 : 1));\n if (widthVal === target.offsetWidth && _this.parent.getVisibleFrozenRightCount()) {\n removeClass([_this.parent.element], 'e-right-shadow');\n }\n else {\n addClass([_this.parent.element], 'e-right-shadow');\n }\n var rows = [].slice.call(_this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (((rows.length === 1 && errorFreeze.length) ||\n (_this.parent.element.querySelector('.e-freeze-autofill:not([style*=\"display: none\"])')) ||\n errorFixed.length) && target.scrollLeft !== _this.previousValues.left) {\n target.scrollLeft = _this.previousValues.left;\n return;\n }\n if (rows.length !== 1 && (errorFreeze.length || errorFixed.length) && target.scrollTop !== _this.previousValues.top) {\n target.scrollTop = _this.previousValues.top;\n return;\n }\n }\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && (!_this.parent.isEdit\n || (_this.parent.editSettings.showAddNewRow && !_this.parent.element.querySelector('.e-editedrow')))) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (cont, hdr) {\n var _this = this;\n var content = cont;\n var header = hdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen && _this.parent.enableColumnVirtualization) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.resizeFrozenRowBorder = function () {\n var div;\n if (!this.parent.element.querySelector('.e-frozenrow-border')) {\n div = this.parent.createElement('div', { className: 'e-frozenrow-border' });\n this.parent.element.insertBefore(div, this.parent.element.querySelector('.e-gridcontent'));\n }\n else {\n div = this.parent.element.querySelector('.e-frozenrow-border');\n }\n var scrollWidth = this.parent.height !== 'auto' ? Scroll.getScrollBarWidth() : 0;\n div.style.width = (this.parent.element.offsetWidth - scrollWidth) - 0.5 + 'px';\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows && this.header && this.content) {\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n }\n if (frzCols && mScrollBar && this.parent.enableColumnVirtualization) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(this.content, this.header), this);\n EventHandler.add(this.content, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.header), this);\n EventHandler.add(this.header, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.content), this);\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n EventHandler.add(this.content, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(this.content, 'touchmove pointermove', this.onTouchScroll(this.header), this);\n }\n }\n this.contentScrollHandler = this.onContentScroll(this.header);\n this.headerScrollHandler = this.onContentScroll(this.content);\n EventHandler.add(this.content, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.header, 'scroll', this.headerScrollHandler, this);\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (sHeight < clientHeight && _this.parent.height !== 'auto') {\n _this.setLastRowCell();\n }\n if (_this.parent.frozenRows) {\n _this.resizeFrozenRowBorder();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n _this.header.scrollLeft = _this.previousValues.left;\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n if (_this.parent.isFrozenGrid()) {\n _this.previousValues.left = sLeft;\n }\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n if (this.parent.isSpan) {\n removeClass(table.querySelectorAll('.e-row-span-lastrowcell'), 'e-lastrowcell');\n }\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Bottom') {\n addClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.isSpan) {\n addClass(table.querySelectorAll('.e-row-span-lastrowcell'), 'e-lastrowcell');\n }\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.onEmpty, this.initialEnd);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n var selectedRowCellIndexes = this.parent.getSelectedRowCellIndexes();\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (selectedRowCellIndexes.length && e.keyCode === 86 && ((!isMacLike && e.ctrlKey) || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!this.clipBoardTextArea || !target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, selectedRowCellIndexes[0].rowIndex, selectedRowCellIndexes[0].cellIndexes[0]);\n }, isMacLike ? 100 : 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n var rows = data.split('\\n');\n var cols;\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n this.clipBoardTextArea.value = '';\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this.copyContent = '';\n var rows = this.parent.getDataRows();\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].querySelectorAll('.e-rowcell:not(.e-hide)')));\n this.getCopyData(leftCols, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n var colHeader = this.parent\n .getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]);\n if (!colHeader.classList.contains('e-hide')) {\n headers.push(colHeader);\n }\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-cellselectionbackground:not(.e-hide)'));\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy') && this.clipBoardTextArea) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n this.clipBoardTextArea = null;\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","/**\n *\n * `Logger` class\n */\nimport { isNullOrUndefined, L10n, isUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil, DataManager } from '@syncfusion/ej2-data';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation/grid';\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/';\nvar WARNING = '[EJ2Grid.Warning]';\nvar ERROR = '[EJ2Grid.Error]';\nvar INFO = '[EJ2Grid.Info]';\nvar Logger = /** @class */ (function () {\n function Logger(parent) {\n this.parent = parent;\n this.parent.on('initial-end', this.patchadaptor, this);\n }\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n // eslint-disable-next-line no-console\n console[item.logType](item.generateMessage(args, this.parent, cOp.options));\n }\n }\n };\n Logger.prototype.patchadaptor = function () {\n var adaptor = this.parent.getDataModule().dataManager.adaptor;\n var original = adaptor.beforeSend;\n if (original) {\n adaptor.beforeSend = function (dm, request, settings) {\n original.call(adaptor, dm, request, settings);\n };\n }\n };\n Logger.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('initial-end', this.patchadaptor);\n };\n return Logger;\n}());\nexport { Logger };\nexport var detailLists = {\n // eslint-disable-next-line camelcase\n module_missing: {\n type: 'module_missing',\n logType: 'warn',\n check: function (args, parent) {\n var injected = parent.getInjectedModules().map(function (m) { return m.prototype.getModuleName(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var modules = parent.requiredModules().map(function (m) { return m.member; })\n .filter(function (name) { return injected.indexOf(name) === -1; });\n return { success: modules.filter(function (m) { return m !== 'resize'; }).length > 0, options: modules };\n },\n generateMessage: function (args, parent, modules) {\n modules = modules.filter(function (m) { return m !== 'resize'; })\n .reduce(function (prev, cur) { return prev + (\"* \" + cur + \"\\n\"); }, '');\n return WARNING + ': MODULES MISSING\\n' + 'The following modules are not injected:.\\n' +\n (\"\" + modules) +\n (\"Refer to \" + BASE_DOC_URL + \"/module.html for documentation on importing feature modules.\");\n }\n },\n // eslint-disable-next-line camelcase\n promise_enabled: {\n type: 'promise_enabled',\n logType: 'error',\n check: function () {\n return { success: typeof Promise === 'undefined' };\n },\n generateMessage: function () {\n return ERROR + ': PROMISE UNDEFINED\\n' +\n 'Promise object is not present in the global environment,' +\n 'please use polyfil to support Promise object in your environment.\\n' +\n (\"Refer to \" + DOC_URL + \"/base/browser.html?#required-polyfills for more information.\");\n }\n },\n // eslint-disable-next-line camelcase\n primary_column_missing: {\n type: 'primary_column_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.enableColumnVirtualization\n ? parent.getPrimaryKeyFieldNames().length === 0\n : parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' + 'Editing is enabled but primary key column is not specified.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n selection_key_missing: {\n type: 'selection_key_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.selectionSettings.persistSelection &&\n parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' +\n 'selectionSettings.persistSelection property is enabled. It requires one primary key column to persist selection.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n actionfailure: {\n type: 'actionfailure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function (args, parent) {\n var message = '';\n var formatError = formatErrorHandler(args, parent);\n var ajaxError = ajaxErrorHandler(args, parent);\n if (ajaxError !== '') {\n message = ajaxError;\n }\n else if (formatError !== '') {\n message = formatError;\n }\n else {\n message = args.error;\n }\n return WARNING + ': ' + message;\n }\n },\n // eslint-disable-next-line camelcase\n locale_missing: {\n type: 'locale_missing',\n logType: 'warn',\n check: function (args, parent) {\n var lObj = DataUtil.getObject(\"locale.\" + parent.locale + \".grid\", L10n);\n return { success: parent.locale !== 'en-US' && isNullOrUndefined(lObj) };\n },\n generateMessage: function (args, parent) {\n return WARNING + ': LOCALE CONFIG MISSING\\n' + (\"Locale configuration for '\" + parent.locale + \"' is not provided.\\n\") +\n (\"Refer to \" + BASE_DOC_URL + \"/globalization-and-localization.html?#localization \\n for documentation on setting locale configuration.\");\n }\n },\n limitation: {\n type: 'limitation',\n logType: 'warn',\n check: function (args, parent) {\n var name = args;\n var opt;\n switch (name) {\n case 'freeze':\n opt = {\n success: parent.allowGrouping || !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid)\n || !isUndefined(parent.rowTemplate) || parent.enableVirtualization,\n options: { name: 'freeze' }\n };\n break;\n case 'virtualization':\n opt = {\n success: !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid) || parent.frozenRows !== 0\n || parent.frozenColumns !== 0,\n options: { name: 'virtualization' }\n };\n break;\n default:\n opt = { success: false };\n break;\n }\n return opt;\n },\n generateMessage: function (args, parent, options) {\n var name = options.name;\n var opt;\n switch (name) {\n case 'freeze':\n opt = 'Frozen rows and columns do not support the following features:\\n' +\n '* Virtualization\\n' +\n '* Row Template\\n' +\n '* Details Template\\n' +\n '* Hierarchy Grid\\n' +\n '* Grouping';\n break;\n case 'virtualization':\n opt = 'Virtualization does not support the following features.\\n' +\n '* Freeze rows and columns.\\n' +\n '* Details Template.\\n' +\n '* Hierarchy Grid.\\n';\n break;\n default:\n opt = '';\n break;\n }\n return WARNING + (\": \" + name.toUpperCase() + \" LIMITATIONS\\n\") + opt;\n }\n },\n // eslint-disable-next-line camelcase\n check_datasource_columns: {\n type: 'check_datasource_columns',\n logType: 'warn',\n check: function (args, parent) {\n return { success: !(parent.columns.length ||\n (parent.dataSource instanceof DataManager) || parent.dataSource.length) };\n },\n generateMessage: function () {\n return WARNING + ': GRID CONFIG MISSING\\n' + 'dataSource and columns are not provided in the grid. ' +\n 'At least one of either must be provided for grid configuration.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns.html for documentation on configuring the grid data and columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n virtual_height: {\n type: 'virtual_height',\n logType: 'error',\n check: function (args, parent) {\n return { success: isNullOrUndefined(parent.height) || parent.height === 'auto' };\n },\n generateMessage: function () {\n return ERROR + ': GRID HEIGHT MISSING \\n' + 'height property is required to use virtualization.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/virtual.html for documentation on configuring the virtual grid.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_remote_edit: {\n type: 'grid_remote_edit',\n logType: 'error',\n check: function (args) {\n return { success: Array.isArray(args) || Array.isArray(args.result) };\n },\n generateMessage: function () {\n return ERROR + ': RETRUN VALUE MISSING \\n' +\n 'Remote service returns invalid data. \\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/edit.html for documentation on configuring editing with remote data.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_sort_comparer: {\n type: 'grid_sort_comparer',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.getDataModule().isRemote() };\n },\n generateMessage: function () {\n return WARNING + ': SORT COMPARER NOT WORKING \\n' + 'Sort comparer will not work with remote data.' +\n (\"Refer to \" + BASE_DOC_URL + \"/sorting/#custom-sort-comparer for documentation on using the sort comparer.\");\n }\n },\n // eslint-disable-next-line camelcase\n resize_min_max: {\n type: 'resize_min_max',\n logType: 'info',\n check: function (args) {\n return { success: (args.column.minWidth && args.column.minWidth >= args.width) ||\n (args.column.maxWidth && args.column.maxWidth <= args.width) };\n },\n generateMessage: function () {\n return INFO + ': RESIZING COLUMN REACHED MIN OR MAX \\n' + 'The column resizing width is at its min or max.';\n }\n },\n // eslint-disable-next-line camelcase\n action_disabled_column: {\n type: 'action_disabled_column',\n logType: 'info',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'reorder':\n if (isNullOrUndefined(args.destColumn)) {\n fn = \"reordering action is disabled for the \" + args.column.headerText + \" column\";\n }\n else {\n fn = \"reordering action is disabled for the \" + (args.column.allowReordering ?\n args.destColumn.headerText : args.column.headerText) + \" column\";\n }\n break;\n case 'group':\n fn = \"grouping action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'filter':\n fn = \"filtering action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'sort':\n fn = \"sorting action is disabled for the \" + args.columnName + \" column.\";\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": ACTION DISABLED \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n exporting_begin: {\n type: 'exporting_begin',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG INPROGRESS \\n Grid \" + options.args + \"ing is in progress\");\n }\n },\n // eslint-disable-next-line camelcase\n exporting_complete: {\n type: 'exporting_complete',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG COMPLETED \\n Grid \" + options.args + \"ing is complete\");\n }\n },\n // eslint-disable-next-line camelcase\n foreign_key_failure: {\n type: 'foreign_key_failure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function () {\n return ERROR + ': FOREIGNKEY CONFIG \\n Grid foreign key column needs a valid data source/service.' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns/#foreign-key-column for documentation on configuring foreign key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n initial_action: {\n type: 'initial_action',\n logType: 'error',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'group':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to group the column';\n break;\n case 'filter':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to filter the column.';\n break;\n case 'sort':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to sort the column.';\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": INITIAL ACTION FAILURE \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n frozen_rows_columns: {\n type: 'frozen_rows_columns',\n logType: 'error',\n check: function (args, parent) {\n return { success: parent.getColumns().length <= parent.frozenColumns\n || (parent.currentViewData.length && parent.frozenRows >= parent.currentViewData.length) };\n },\n generateMessage: function (args, parent) {\n return ERROR + (\": OUT OF RANGE ERROR-\\n \" + (parent.getColumns().length <= parent.frozenColumns ? 'FROZEN COLUMNS,' : '')) +\n ((parent.frozenRows >= parent.currentViewData.length ? 'FROZEN ROWS' : '') + \" invalid\");\n }\n },\n // eslint-disable-next-line camelcase\n column_type_missing: {\n type: 'column_type_missing',\n logType: 'error',\n check: function (args) {\n return { success: isNullOrUndefined(args.column.type), options: args.column.headerText };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": COLUMN TYPE MISSING-\\n \" + options + \" column type was invalid or not defined.\") +\n (\"Please go through below help link: \" + DOC_URL + \"/grid/columns/#column-type\");\n }\n },\n // eslint-disable-next-line camelcase\n datasource_syntax_mismatch: {\n type: 'datasource_syntax_mismatch',\n logType: 'warn',\n check: function (args) {\n return { success: args.dataState.dataSource && !(args.dataState.dataSource instanceof DataManager ||\n 'result' in args.dataState.dataSource || args.dataState.dataSource instanceof Array) &&\n !(isNullOrUndefined(args.dataState.dataStateChange)) };\n },\n generateMessage: function () {\n return WARNING + ': DATASOURCE SYNTAX WARNING\\n' +\n 'DataSource should be in the form of {result: Object[], count: number}' +\n 'when dataStateChangeEvent used';\n }\n }\n};\nvar formatErrorHandler = function (args) {\n var error = args.error;\n if (error.indexOf && error.indexOf('Format options') !== 0) {\n return '';\n }\n return 'INVALID FORMAT\\n' +\n 'For more information, refer to the following documentation links:\\n' +\n (\"Number format: \" + DOC_URL + \"/base/intl.html?#supported-format-string.\\n\") +\n (\"Date format: \" + DOC_URL + \"/base/intl.html?#manipulating-datetime.\\n\") +\n (\"Message: \" + error);\n};\nvar ajaxErrorHandler = function (args) {\n var error = DataUtil.getObject('error.error', args);\n if (isNullOrUndefined(error)) {\n return '';\n }\n var jsonResult = '';\n try {\n jsonResult = JSON.parse(error.responseText);\n }\n catch (_a) {\n jsonResult = '';\n }\n return 'XMLHTTPREQUEST FAILED\\n' +\n (\"Url: \" + error.responseURL + \"\\n\") +\n (\"Status: \" + error.status + \" - \" + error.statusText + \"\\n\") +\n (\"\" + (jsonResult !== '' ? 'Message: ' + jsonResult : ''));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue, defaultCurrencyCode } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData, getScrollBarWidth } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { Column } from '../models/column';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { Logger } from '../actions/logger';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Property(50)\n ], FilterSettings.prototype, \"itemsCount\", void 0);\n __decorate([\n Property('Shimmer')\n ], FilterSettings.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showAddNewRow\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n *
    \n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isPreventScrollEvent = false;\n _this_1.inViewIndexes = [];\n _this_1.keyA = false;\n _this_1.frozenRightCount = 0;\n _this_1.freezeColumnRefresh = true;\n _this_1.rightcount = 0;\n _this_1.frozenLeftCount = 0;\n _this_1.leftcount = 0;\n _this_1.tablesCount = 1;\n _this_1.movableCount = 0;\n _this_1.movablecount = 0;\n _this_1.fixedcount = 0;\n _this_1.fixedCount = 0;\n _this_1.visibleFrozenLeft = 0;\n _this_1.visibleFrozenFixed = 0;\n _this_1.isPreparedFrozenColumns = false;\n _this_1.visibleFrozenRight = 0;\n _this_1.visibleMovable = 0;\n _this_1.frozenLeftColumns = [];\n _this_1.frozenRightColumns = [];\n _this_1.movableColumns = [];\n _this_1.fixedColumns = [];\n _this_1.stackedLeft = [];\n _this_1.stackedRight = [];\n _this_1.stackedFixed = [];\n _this_1.stackedMovable = [];\n _this_1.stackedarrayLeft = [];\n _this_1.stackedarrayRight = [];\n _this_1.stackedarrayFixed = [];\n _this_1.stackedarrayMovable = [];\n _this_1.media = {};\n _this_1.autoFitColumnsResize = false;\n /** @hidden */\n _this_1.tableIndex = 0;\n _this_1.componentRefresh = Component.prototype.refresh;\n _this_1.isChangeDataSourceCall = false;\n _this_1.mergedColumns = false;\n /** @hidden */\n _this_1.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this_1.requireTemplateRef = true;\n /** @hidden */\n _this_1.vRows = [];\n /** @hidden */\n _this_1.vcRows = [];\n /** @hidden */\n _this_1.vGroupOffsets = {};\n /** @hidden */\n _this_1.rowUid = 0;\n /** @hidden */\n _this_1.translateX = 0;\n /** @hidden */\n _this_1.isManualRefresh = false;\n /** @hidden */\n _this_1.isAutoFitColumns = false;\n /** @hidden */\n _this_1.enableDeepCompare = false;\n /** @hidden */\n _this_1.totalDataRecordsCount = 0;\n /** @hidden */\n _this_1.disableSelectedRecords = [];\n /** @hidden */\n _this_1.partialSelectedRecords = [];\n /** @hidden */\n _this_1.isSpan = false;\n /** @hidden */\n _this_1.islazyloadRequest = false;\n /** @hidden */\n _this_1.isAddNewRow = false;\n /** @hidden */\n _this_1.addNewRowFocus = true;\n /** @hidden */\n _this_1.lockcolPositionCount = 0;\n /** @hidden */\n _this_1.prevPageMoving = false;\n /** @hidden */\n _this_1.pageTemplateChange = false;\n /** @hidden */\n _this_1.isAutoGen = false;\n /** @hidden */\n _this_1.isAutoGenerateColumns = false;\n _this_1.mediaBindInstance = {};\n /** @hidden */\n _this_1.commandDelIndex = undefined;\n /** @hidden */\n _this_1.asyncTimeOut = 50;\n /** @hidden */\n _this_1.isExportGrid = false;\n _this_1.enableLogger = false;\n _this_1.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this_1.mergePersistGridData, _this_1);\n return _this_1;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator],\n name: 'Filter'\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator],\n name: 'ExcelExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this],\n name: 'PdfExport'\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator],\n name: 'Sort'\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings],\n name: 'Page'\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator],\n name: 'Selection'\n });\n }\n if (this.resizeCheck()) {\n modules.push({\n member: 'resize',\n args: [this],\n name: 'Resize'\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this],\n name: 'Reorder'\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this],\n name: 'RowDD'\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator],\n name: 'Group'\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator], name: 'Aggregate' });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator],\n name: 'DetailRow'\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator],\n name: 'Toolbar'\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator],\n name: 'VirtualScroll'\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator], name: 'Freeze' });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator],\n name: 'CommandColumn'\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator],\n name: 'Edit'\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator],\n name: 'InfiniteScroll'\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator],\n name: 'LazyLoadGroup'\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator],\n name: 'ContextMenu'\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator],\n name: 'ColumnMenu'\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator],\n name: 'ColumnChooser'\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator], name: 'ForeignKey' });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this], name: 'Logger' });\n }\n };\n Grid.prototype.resizeCheck = function () {\n var autoFitColumns = this.getColumns().filter(function (c) { return c.autoFit === true; }).length ? true : false;\n if (!isNullOrUndefined(this.columnModel) && this.columnModel.length && !(this.columnModel[0] instanceof Column)) {\n this.columnModel = [];\n }\n var columnMenu = this.showColumnMenu && (!this.columnMenuItems || this.columnMenuItems\n .filter(function (c) { return c === 'AutoFit' || c === 'AutoFitAll'; }).length) ? true : false;\n var contextMenu = this.contextMenuItems && this.contextMenuItems\n .filter(function (c) { return c === 'AutoFit' || c === 'AutoFitAll'; }).length ? true : false;\n return this.allowResizing || this.autoFitColumnsResize || autoFitColumns || columnMenu || contextMenu;\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.freezeColumnRefresh = true;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n ColumnMenu: 'Column Menu',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n SelectAllCheckbox: 'Select all checkbox',\n SelectRow: 'Select row',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n ToolbarMenuDialogARIA: 'Toolbar menu dialog',\n FilterMenuDialogARIA: 'Filter menu',\n ExcelFilterDialogARIA: 'Excel filter',\n CheckBoxFilterDialogARIA: 'Checkbox filter',\n DialogEditARIA: 'Edit dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if ((this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined)\n && !(!isNullOrUndefined(this.dataSource) && this.dataSource.result)) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enableColumnVirtualization && this.isChangeDataSourceCall && this.columnModel) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.isPreparedFrozenColumns = true;\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n if (this.isFrozenGrid() && !this.mergedColumns) {\n this.setInitialFrozenColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n Grid.prototype.setInitialFrozenColumnIndex = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = columns[parseInt(i.toString(), 10)];\n column[\"\" + literals.initialFrozenColumnIndex] = column.index;\n if (column.columns) {\n this.setInitialFrozenColumnIndex(column.columns);\n }\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
    '\n + '
    '\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
    ';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? true : false;\n if (!this.contentMaskTable) {\n var content = gridContent;\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))) {\n var content = gridHeader;\n if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n return this.getColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '5';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n if (this.isFrozenGrid()) {\n var frzTd = [].slice.call(row.querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n if (this.frozenLeftCount - 1 === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezeleftborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX -\n this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n if ((frzTd.length - this.frozenRightCount) === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezerightborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || header) {\n var rowCountElement = gridContent;\n var rowCount = Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var frzTd = [].slice.call(rows[addEditRowIndex + 1].querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX - this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n if (header && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = 'relative';\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n if (this.enableColumnVirtualization && maskCell.classList.contains('e-fixedfreeze')) {\n removeClass([maskCell], ['e-fixedfreeze', 'e-freezeleftborder', 'e-freezerightborder']);\n addClass([maskCell], ['e-unfreeze']);\n }\n if (!(this.enableColumnVirtualization && (maskCell.classList.contains('e-leftfreeze') ||\n maskCell.classList.contains('e-rightfreeze')))) {\n maskCell.removeAttribute('data-colindex');\n }\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n if (!isNullOrUndefined(this.contentModule)) {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n }\n if (this.headerMaskTable && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = '';\n }\n var maskTables = [this.headerMaskTable,\n this.contentMaskTable, this.footerContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.contentMaskTable = null;\n this.footerContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n this.updateFrozenColumnsWidth();\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > parseInt(this.height.toString(), 10) && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length === 0 || checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n if (this.isFrozenGrid() && this.isAutoGenerateColumns) {\n this.widthService.setWidthToColumns();\n this.isAutoGenerateColumns = false;\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact) {\n this.destroyTemplate(['template']);\n }\n if (this.isVue) {\n this.destroyTemplate();\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n this.notify(events.destroyAutoFillElements, {});\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n var childGridParent = null;\n var parentInstance = null;\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n return;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar' || (this.editSettings.showAddNewRow && this.filterSettings.type === 'FilterBar')) {\n this.refreshHeader();\n }\n else {\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n if (this.allowPaging) {\n this.pagerModule.refresh();\n }\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'emptyRecordTemplate':\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n this.headerModule.refreshUI();\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'enableColumnVirtualization':\n case 'currencyCode':\n case 'locale':\n if (this.isFrozenGrid()) {\n this.log('frozen_rows_columns');\n }\n freezeRefresh = true;\n requireGridRefresh = true;\n this.addNewRowFocus = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows\n || (this.frozenLeftColumns.length || this.frozenRightColumns.length)) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule && !this.enableAdaptiveUI) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (this.allowSelection && this.isPersistSelection && !(pending_1 && pending_1.isPending)) {\n this.clearSelection();\n }\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.result) {\n this.isVirtualAdaptive = false;\n }\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n if (names.length && !this.groupSettings.enableLazyLoading && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n if ((!isNullOrUndefined(this.dataSource) && this.dataSource.result\n && this.dataSource.count && this.groupSettings.columns.length)) {\n var gResult = this.dataSource.result;\n var names = this.groupSettings.columns;\n if (names.length && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)]);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count\n };\n }\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this_1 = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this_1.selectRow(index);\n _this_1.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateLockableColumns();\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.frozenLeftColumns.length !== 0 || this.frozenRightColumns.length !== 0 ||\n this.fixedColumns.length !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * @param {string} position - specifies position\n * @returns {number} returns the width\n * @hidden\n */\n Grid.prototype.leftrightColumnWidth = function (position) {\n var cols = position === 'left' ? this.getFrozenLeftColumns() : position === 'right' ? this.getFrozenRightColumns() : [];\n var width = 0;\n cols.filter(function (col) {\n if (col.visible) {\n width += parseInt(col.width.toString(), 10);\n }\n });\n return width;\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this_1 = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this_1.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n var left = [];\n var right = [];\n var movable = [];\n var isLeftRightFrozen = this.enableColumnVirtualization && this.isPreparedFrozenColumns && vLen === 0;\n if (isLeftRightFrozen) {\n this.frozenRightColumns = [];\n this.frozenLeftColumns = [];\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n left.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n right.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n movable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (this.enableColumnVirtualization && this.isFrozenGrid()) {\n if (this.frozenLeftColumns.length) {\n left = this.frozenLeftColumns;\n }\n if (this.frozenRightColumns.length) {\n right = this.frozenRightColumns;\n }\n }\n return left.concat(movable).concat(right);\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row_1 = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row_1) && !row_1.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row_1.getAttribute('data-uid'));\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n args = { row: row_1, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n var row_2 = closest(cell, '.' + literals.row);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex) && !isNullOrUndefined(row_2)) {\n var rowIndex = parseInt(row_2.getAttribute(literals.dataRowIndex), 10);\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n var rowsObject = rows.filter(function (r) { return r.uid === row_2.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_2, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.editSettings.showAddNewRow) {\n if (rows[0].classList.contains('e-addedrow')) {\n rows.shift();\n }\n else if (rows[rows.length - 1].classList.contains('e-addedrow')) {\n rows.pop();\n }\n }\n if (this.frozenRows) {\n var hdrTbody = this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n if (this.editSettings.showAddNewRow && freezeRows[0].classList.contains('e-addedrow')) {\n freezeRows.shift();\n }\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n if (this.isReact && td.getAttribute('tabindex') === '0' && td.classList.contains('e-focused')) {\n td.focus();\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this_1 = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this_1.childGrid && _this_1.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this_1.getContentTable().querySelectorAll('.e-row') :\n _this_1.getDataRows();\n _this_1.refreshReactTemplateTD(rows, isChildGrid);\n if (renderTemplates) {\n _this_1.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n var _loop_1 = function (j) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this_1, this_1.serviceLocator);\n var td = parentsUntil(this_1.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n var cols = this_1.sortSettings.columns;\n var columnIndex = cols.findIndex(function (col) {\n return col.field === cell\n .column.field;\n });\n if (columnIndex !== -1) {\n var header = this_1.getColumnHeaderByField(cell.column.field);\n this_1.ariaService.setSort(header, (cols[parseInt(columnIndex.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this_1.createElement('span', { className: 'e-sortnumber', innerHTML: (columnIndex + 1).toString() }), header.querySelector('.e-headertext'));\n }\n var filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(columnIndex.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n }\n };\n var this_1 = this;\n for (var j = 0; j < rowsObj.length; j++) {\n _loop_1(j);\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getMovableRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled empty Record template.\n *\n * @returns {Function} Returns the empty Record template\n * @private\n */\n Grid.prototype.getEmptyRecordTemplate = function () {\n return this.emptyRecordTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this_1 = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this_1.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount || this.rightcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount || this.leftcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount || this.movablecount;\n };\n Grid.prototype.updateFrozenColumnsWidth = function () {\n if (this.isFrozenGrid() && !this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n var isAutoWidth = true;\n var autoCol_1 = 0;\n var difference_1 = 0;\n var autoWidth_1 = 0;\n var _loop_2 = function (i) {\n var col = gcol[parseInt(i.toString(), 10)];\n if (isNullOrUndefined(col.width) && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n col.width = Math.max(200, col.minWidth ? parseFloat(col.minWidth.toString()) : 0);\n }\n if (col.width === 'auto') {\n var tWidth_1 = 0;\n if (isAutoWidth) {\n gcol.filter(function (cols) {\n if (cols.visible) {\n if (cols.width === 'auto') {\n autoCol_1++;\n }\n if (cols.width !== 'auto') {\n var width = !isNullOrUndefined(cols.width) ? parseFloat(cols.width.toString()) :\n Math.max(200, cols.minWidth ? parseFloat(cols.minWidth.toString()) : 0);\n tWidth_1 += width;\n }\n }\n });\n var gWidth = this_2.isPercentageWidthGrid() || this_2.width === 'auto' ? this_2.element.getBoundingClientRect().width :\n parseFloat(this_2.width.toString());\n difference_1 = this_2.height === 'auto' ? gWidth - tWidth_1 : ((gWidth - tWidth_1) - getScrollBarWidth());\n if (difference_1 < 0) {\n difference_1 = 0;\n }\n autoWidth_1 = parseFloat((difference_1 / autoCol_1).toString());\n gcol.filter(function (col) {\n if (col.visible) {\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n difference_1 = difference_1 - parseFloat(col.minWidth.toString());\n autoCol_1--;\n }\n }\n });\n isAutoWidth = false;\n }\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n col.width = parseFloat(col.minWidth.toString());\n }\n else {\n col.width = difference_1 / autoCol_1;\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < gcol.length; i++) {\n _loop_2(i);\n }\n }\n };\n Grid.prototype.refreshSplitFrozenColumn = function () {\n this.splitFrozenCount(this.columns);\n this.updateFrozenColumnsWidth();\n this.isAutoGenerateColumns = true;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.fixedColumns = [];\n this.splitFrozenCount(this.columns);\n this.leftcount = this.frozenLeftCount;\n this.rightcount = this.frozenRightCount;\n this.movablecount = this.movableCount;\n // if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n // this.setProperties({ frozenColumns: 0 }, true);\n // }\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitStackedColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.leftcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.rightcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenFixed++;\n }\n this.fixedcount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movablecount++;\n }\n }\n }\n };\n Grid.prototype.pushStackedColumns = function (columns, index, arr, col, stackedcol) {\n arr[parseInt(index.toString(), 10)] = col.headerText;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n index = index + 1;\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, index, arr, columns[parseInt(i.toString(), 10)], stackedcol);\n index = index - 1;\n }\n else {\n var stockCol = [];\n stockCol = arr.slice().slice(0, index + 1);\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n this.stackedLeft.push(stockCol);\n this.stackedarrayLeft.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n this.stackedRight.push(stockCol);\n this.stackedarrayRight.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.stackedFixed.push(stockCol);\n this.stackedarrayFixed.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.stackedMovable.push(stockCol);\n this.stackedarrayMovable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Grid.prototype.pushallcol = function (text, text1, col, columns, isTrue) {\n if (col.headerText === text1) {\n if (isTrue) {\n col.columns.push(columns);\n }\n else {\n col.columns.push({ headerText: text, columns: [] });\n }\n }\n else {\n if (col.columns && col.columns.length) {\n for (var i = 0; i < col.columns.length; i++) {\n this.pushallcol(text, text1, col.columns[parseInt(i.toString(), 10)], columns, isTrue);\n }\n }\n }\n };\n Grid.prototype.resetStackedColumns = function (headercol, gridcolumns, freeze) {\n var col = {};\n var tempHead = [];\n for (var i = 1; i <= headercol.length; i++) {\n var firstcol = headercol[i - 1];\n for (var j = 0; j < firstcol.length; j++) {\n if (!col.columns && i === 1) {\n col = { headerText: firstcol[parseInt(j.toString(), 10)], columns: [] };\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n else {\n if (tempHead.indexOf(firstcol[parseInt(j.toString(), 10)]) === -1) {\n this.pushallcol(firstcol[parseInt(j.toString(), 10)], firstcol[j - 1], col);\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n }\n if (j === firstcol.length - 1) {\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n var count = 0;\n while (count !== headercol.length - 1 && i !== headercol.length) {\n if (firstcol.toString() === headercol[parseInt(i.toString(), 10)].toString()) {\n i++;\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n }\n count++;\n }\n }\n }\n }\n if (freeze === 'Left') {\n this.frozenLeftColumns.push(col);\n }\n else if (freeze === 'Right') {\n this.frozenRightColumns.push(col);\n }\n else {\n this.movableColumns.push(col);\n }\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n if (this.frozenColumns || (this.changedProperties && this.changedProperties.frozenColumns === 0)) {\n var cols = !this.enableColumnVirtualization || (this.enableColumnVirtualization && this.isPreparedFrozenColumns) ?\n this.enableColumnVirtualization && this.columnModel && this.columnModel.length ? this.columnModel :\n this.getColumns() : this.columns;\n if (!this.changedProperties || (this.changedProperties && !this.changedProperties.frozenColumns)) {\n for (var i = 0; i < cols.length; i++) {\n if (this.frozenColumns > i) {\n cols[parseInt(i.toString(), 10)].freeze = 'Left';\n }\n else if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n cols[parseInt(i.toString(), 10)].freeze = cols[parseInt(i.toString(), 10)].freeze;\n }\n else {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n var arr = [];\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n if (this.leftcount && !this.rightcount && !this.movablecount && !this.fixedcount) {\n this.frozenLeftCount += this.leftcount;\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.rightcount && !this.leftcount && !this.movablecount && !this.fixedcount) {\n this.frozenRightCount += this.rightcount;\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.movablecount && !this.leftcount && !this.rightcount && !this.fixedcount) {\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.fixedcount && !this.leftcount && !this.rightcount && !this.movablecount) {\n this.fixedCount += this.fixedcount;\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.frozenLeftCount += this.leftcount;\n this.frozenRightCount += this.rightcount;\n this.movableCount += this.movablecount;\n this.fixedCount += this.fixedcount;\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedFixed = [];\n this.stackedMovable = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayFixed = [];\n this.stackedarrayMovable = [];\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, 0, arr, columns[parseInt(i.toString(), 10)], { headerText: columns[parseInt(i.toString(), 10)].headerText, columns: [] });\n if (this.stackedarrayLeft.length) {\n this.resetStackedColumns(this.stackedLeft, this.stackedarrayLeft, 'Left');\n }\n if (this.stackedarrayRight.length) {\n this.resetStackedColumns(this.stackedRight, this.stackedarrayRight, 'Right');\n }\n if (this.stackedarrayFixed.length) {\n this.resetStackedColumns(this.stackedFixed, this.stackedarrayFixed, 'Fixed');\n }\n if (this.stackedarrayMovable.length) {\n this.resetStackedColumns(this.stackedMovable, this.stackedarrayMovable, 'Movable');\n }\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedMovable = [];\n this.stackedFixed = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayMovable = [];\n this.stackedarrayFixed = [];\n }\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.fixedCount++;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n if (this.frozenLeftColumns.length) {\n var cols = this.frozenLeftColumns[this.frozenLeftColumns.length - 1];\n this.removeBorder(this.frozenLeftColumns);\n this.frozenLeftBorderColumns(cols instanceof Column ? this.lastVisibleLeftCol(this.frozenLeftColumns) : cols);\n }\n if (this.frozenRightColumns.length) {\n var cols = this.frozenRightColumns[0];\n this.removeBorder(this.frozenRightColumns);\n this.frozenRightBorderColumns(cols instanceof Column ? this.firstVisibleRightCol(this.frozenRightColumns) : cols);\n }\n if ((this.frozenLeftColumns.length || this.frozenRightColumns.length) && this.freezeColumnRefresh) {\n var cols = (this.frozenLeftColumns.concat(this.movableColumns)).concat(this.frozenRightColumns);\n this.setProperties({ columns: cols }, true);\n this.freezeColumnRefresh = false;\n }\n };\n Grid.prototype.removeBorder = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns && columns[parseInt(i.toString(), 10)].columns.length) {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n this.removeBorder(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n }\n }\n };\n Grid.prototype.isVisibleColumns = function (column, arr) {\n if (column.columns && column.columns.length) {\n for (var i = 0; i < column.columns.length; i++) {\n this.isVisibleColumns(column.columns[parseInt(i.toString(), 10)], arr);\n if (column.columns[parseInt(i.toString(), 10)].visible &&\n isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].columns) &&\n (!isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].freeze) ||\n column.columns[parseInt(i.toString(), 10)].isFrozen)) {\n arr.push('true');\n }\n }\n }\n else {\n if (column.visible && (!isNullOrUndefined(column.freeze) || column.isFrozen)) {\n arr.push('true');\n }\n }\n };\n Grid.prototype.lastVisibleLeftCol = function (columns) {\n var column;\n for (var i = columns.length - 1; i >= 0; i--) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.firstVisibleRightCol = function (columns) {\n var column;\n for (var i = 0; i < columns.length; i++) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.frozenLeftBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Left';\n var cols = columns.columns[columns.columns.length - 1];\n this.frozenLeftBorderColumns(cols instanceof Column && cols.columns ? this.lastVisibleLeftCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Left';\n }\n };\n Grid.prototype.frozenRightBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Right';\n var cols = columns.columns[0];\n this.frozenRightBorderColumns(cols instanceof Column && cols.columns ? this.firstVisibleRightCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Right';\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if ((this.frozenLeftCount || this.leftcount) || (this.frozenRightCount || this.rightcount)) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if ((!this.frozenLeftCount && !this.leftcount) && (!this.frozenRightCount || !this.rightcount)) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule && !this.pagerTemplate) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
    \n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.isChangeDataSourceCall = true;\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n this.isChangeDataSourceCall = false;\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this_1 = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.groupSettings.columns.length + this.getColumns().length : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this_1)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this_1.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (this.isDestroyed) {\n return;\n }\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.enableColumnVirtualization && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n if (this.frozenRows && this.scrollModule) {\n this.scrollModule.resizeFrozenRowBorder();\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n * > * By specifying the start row index and end row index, providing the range within which the maximum width for that column should be considered when applying `autoFitColumns`.\n * > * The width of header rows is always calculated. If the width of a header row exceeds the specified range, its width will be allocated to the specific content rows.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @param {number} startRowIndex - Specifies the start index of the content row.\n * @param {number} endRowIndex - Specifies the end index of content row.\n * @returns {void}\n *\n *\n * ```typescript\n *
    \n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames, startRowIndex, endRowIndex) {\n var injectedModules = this.getInjectedModules();\n var resize = injectedModules.find(function (item) {\n if (typeof item === 'function' && !isNullOrUndefined(item.prototype)) {\n return item.prototype.getModuleName() === 'resize';\n }\n else {\n return item.name === 'Resize';\n }\n });\n if (!this.resizeModule && resize) {\n this.autoFitColumnsResize = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.injectModules();\n }\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames, startRowIndex, endRowIndex);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_3 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_3.allowSorting) {\n this_3.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_3.groupSettings.showGroupedColumn) {\n var column = this_3.enableColumnVirtualization ?\n this_3.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_3.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_3.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_3 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_3(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n var _a;\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n (_a = this.element.classList).add.apply(_a, this.cssClass.split(' '));\n }\n else {\n this.element.classList.add(this.cssClass);\n }\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n if (this.editSettings.showAddNewRow && (this.enableVirtualization || this.enableInfiniteScrolling)) {\n this.editSettings.newRowPosition = 'Top';\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' ? 'e-gridcontent' : 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if ((width > element.getBoundingClientRect().width && !element.classList.contains('e-editedbatchcell')) ||\n (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' &&\n width > (element.getBoundingClientRect().width * 0.55) - (this.height !== 'auto' ? 16 : 0))) {\n // 0.55 - defines the width of adaptive content cell, 16 - defines the scrollbar width\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr', { attrs: { role: 'row' } });\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mouseover', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mouseover', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (parentsUntil(e.target, 'e-headercell') &&\n parentsUntil(e.target, 'e-headercell').querySelector('.e-checkselectall')) ||\n (!(this.allowGrouping || this.allowReordering) && parentsUntil(e.target, 'e-gridheader'))) &&\n e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || (tr.classList.contains(literals.addedRow)) &&\n !this.editSettings.showAddNewRow);\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !(((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n (parentsUntil(relatedTarget, 'e-multi-select-list-wrapper') || parentsUntil(relatedTarget, 'e-input-filter'))) &&\n parentsUntil(relatedTarget, 'e-input-group')) && (parentsUntil(relatedTarget, 'e-uploader') || !(relatedTarget &&\n isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group'))))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n if (this.editSettings.showAddNewRow) {\n this.editModule.isShowAddedRowValidate = false;\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n this.setFrozenCount();\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this.mergedColumns = true;\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var isFrozenGrid = this.isFrozenGrid();\n var _loop_4 = function (i) {\n var localCol = columns.filter(function (tCol) { return isFrozenGrid ?\n tCol.index === storedColumns[parseInt(i.toString(), 10)][\"\" + literals.initialFrozenColumnIndex] :\n tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (isFrozenGrid) {\n localCol = extend({}, localCol, {}, true);\n localCol.freeze = storedColumns[parseInt(i.toString(), 10)].freeze;\n }\n if (localCol.columns && localCol.columns.length) {\n this_4.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_4(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n ((this.isEdit && (!this.editSettings.showAddNewRow || (this.editSettings.showAddNewRow &&\n this.element.querySelector(literals.editedRow)))) && e.action !== 'escape' && e.action !== 'enter'\n && e.action !== 'shiftEnter' && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n Grid.prototype.refreshFrozenPosition = function (obj) {\n if (obj && obj.isModeChg) {\n this.refreshColumns();\n this.notify(events.refreshResizePosition, {});\n }\n else {\n this.refreshColumns();\n }\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.freezeColumnRefresh = true;\n this.setFrozenCount();\n this.updateFrozenColumnsWidth();\n if (this.isFrozenGrid()) {\n this.isPreventScrollEvent = true;\n }\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = left;\n this.getContent().querySelector('.' + literals.content).scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, workbook, isBlob);\n }\n else {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n }\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n }\n else {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n }\n };\n Grid.prototype.exportMultiplePdfGrids = function (gridIds, pdfExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pdfDoc, isBlob) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var exportPromise = currentGridInstance.pdfExportModule ?\n currentGridInstance.pdfExportModule.Map(currentGridInstance, pdfExportProperties, isMultipleExport, pdfDoc, isBlob)\n : Promise.resolve();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n Grid.prototype.exportMultipleExcelGrids = function (gridIds, excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.excelExportModule ?\n currentGridInstance.excelExportModule.Map(currentGridInstance, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this_1 = this;\n var refresh = function () {\n _this_1.scrollModule.refresh();\n _this_1.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n var injectedModules = this.getInjectedModules();\n var logger = injectedModules.find(function (item) { return item.name === 'Logger'; });\n if (!logger) {\n Grid_1.Inject(Logger);\n this.enableLogger = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.injectModules();\n }\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @param {boolean} isForeignKey - Defines the foreign key\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field, isForeignKey) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if ((!isForeignKey && field === gCols[parseInt(i.toString(), 10)].field) ||\n (isForeignKey && gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if ((this.allowFiltering && this.filterSettings.columns.length) || this.searchSettings.key.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, defaultCurrencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this_1 = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this_1.processRowChanges(_this_1.dataToBeUpdated);\n _this_1.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this_1 = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this_1.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this_1 = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this_1.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n remove(tr);\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this_1 = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_5 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_5.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_5 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n var _loop_6 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this_1.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_6.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_6 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_6(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.frozenRows && this.element.querySelector('.e-frozenrow-empty')) {\n this.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.headerModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom column chooser dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomColumnChooser = function (isCustom) {\n if (this.columnChooserModule) {\n this.columnChooserModule.showCustomColumnChooser(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"emptyRecordTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"exportGrids\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailTemplate\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n var footerColGroups = selectAll('.e-summarycontent colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n this.hideColGroup(footerColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","/**\n * Common methods used in Gantt\n */\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, UrlAdaptor, WebApiAdaptor, ODataAdaptor } from '@syncfusion/ej2-data';\nimport { WebMethodAdaptor, CacheAdaptor, RemoteSaveAdaptor, ODataV4Adaptor } from '@syncfusion/ej2-data';\n/**\n * @param {Element} elem .\n * @param {string} selector .\n * @param {boolean} isID .\n * @returns {Element} .\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {ITaskData} ganttProp .\n * @returns {boolean} .\n * @hidden\n */\nexport function isScheduledTask(ganttProp) {\n if (isNullOrUndefined(ganttProp.startDate) && isNullOrUndefined(ganttProp.endDate) &&\n isNullOrUndefined(ganttProp.duration)) {\n return null;\n }\n else if (isNullOrUndefined(ganttProp.startDate) || isNullOrUndefined(ganttProp.endDate) ||\n isNullOrUndefined(ganttProp.duration)) {\n return false;\n }\n else {\n return true;\n }\n}\n/**\n * @param {Gantt} parent .\n * @returns {boolean} .\n * @hidden\n */\nexport function isCountRequired(parent) {\n if (parent.dataSource && !(parent.dataSource instanceof DataManager) &&\n 'result' in parent.dataSource) {\n return true;\n }\n return false;\n}\n/**\n * @param {object} obj .\n * @returns {object} .\n * @hidden\n */\nexport function getSwapKey(obj) {\n var temp = {};\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n temp[obj[key]] = key;\n }\n return temp;\n}\n/**\n * @param {object} dataSource .\n * @returns {boolean} .\n * @hidden\n */\nexport function isRemoteData(dataSource) {\n if (dataSource instanceof DataManager) {\n var adaptor = dataSource.adaptor;\n return (adaptor instanceof ODataAdaptor || (adaptor instanceof ODataV4Adaptor) ||\n (adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||\n (adaptor instanceof CacheAdaptor) || (adaptor instanceof RemoteSaveAdaptor) ||\n adaptor instanceof UrlAdaptor);\n }\n return false;\n}\n/**\n * @param {IGanttData[]} records .\n * @param {boolean} isNotExtend .\n * @param {ITaskAddedEventArgs} eventArgs .\n * @param {Gantt} parent .\n * @returns {object[]} .\n * @hidden\n */\nexport function getTaskData(records, isNotExtend, eventArgs, parent) {\n if (eventArgs) {\n var result = void 0;\n for (var i = 0; i < records.length; i++) {\n var data = void 0;\n // eslint-disable-next-line\n data = isNotExtend ? (records[i].taskData) : extend({}, records[i].taskData, {}, true);\n result = (data);\n }\n return result;\n }\n else {\n var result = [];\n for (var i = 0; i < records.length; i++) {\n var data = void 0;\n if (!isNullOrUndefined(parent) && parent.timezone) {\n updateDates(records[i], parent);\n }\n // eslint-disable-next-line\n data = isNotExtend ? (records[i].taskData) : extend({}, records[i].taskData, {}, true);\n result.push(data);\n }\n return result;\n }\n}\n/**\n * @param {IGanttData} record .\n * @param {Gantt} parent .\n * @returns {null} .\n * @hidden\n */\nexport function updateDates(record, parent) {\n // let startDate: Date = (record as IGanttData).taskData[parent.taskFields.startDate];\n if (record && !isNullOrUndefined(record.ganttProperties)) {\n record.taskData[parent.taskFields.startDate] = parent.dateValidationModule.remove(record.ganttProperties.startDate, parent.timezone);\n if (parent.taskFields.endDate != null) {\n record.taskData[parent.taskFields.endDate] = parent.dateValidationModule.remove(record.ganttProperties.endDate, parent.timezone);\n }\n if (parent.taskFields.baselineEndDate || parent.taskFields.baselineStartDate) {\n record.taskData[parent.taskFields.baselineStartDate] = parent.dateValidationModule.remove(record.ganttProperties.baselineStartDate, parent.timezone);\n record.taskData[parent.taskFields.baselineEndDate] = parent.dateValidationModule.remove(record.ganttProperties.baselineEndDate, parent.timezone);\n }\n }\n return null;\n}\n/**\n * @param {string} str .\n * @param {string[]} args .\n * @returns {string} .\n * @hidden\n */\nexport function formatString(str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[i].toString());\n }\n return str;\n}\n/**\n * @param {any} value .\n * @param {string} key1 .\n * @param {any} collection .\n * @param {string} key2\n * @returns {number} .\n * @hidden\n */\n/* eslint-disable-next-line */\nexport function getIndex(value, key1, collection, key2) {\n var index = -1;\n for (var i = 0; i < collection.length; i++) {\n if (getValue(key1, collection[i]) === getValue(key1, value) && isNullOrUndefined(key2)\n || (!isNullOrUndefined(key2) && getValue(key1, collection[i]) === getValue(key1, value)\n && getValue(key2, collection[i]) === getValue(key2, value))) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {number} value .\n * @returns {number} .\n * @hidden\n */\nexport function pixelToPoint(value) {\n return (value * 76) / 92;\n}\n/**\n * @param {number} value .\n * @returns {number} .\n * @hidden\n */\nexport function pointToPixel(value) {\n return (value * 92) / 76;\n}\nvar uid = 0;\n/**\n * @returns {number} .\n * @hidden\n */\nexport function getUid() {\n return uid++;\n}\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\n/**\n * Date processor is used to handle date of task data.\n */\nvar DateProcessor = /** @class */ (function () {\n function DateProcessor(parent) {\n this.parent = parent;\n }\n /**\n * @param {ITaskData} ganttProp .\n * @returns {boolean} .\n */\n DateProcessor.prototype.isValidateNonWorkDays = function (ganttProp) {\n return (!isNullOrUndefined(ganttProp) && ganttProp.isAutoSchedule &&\n (!this.parent.includeWeekend || this.parent.totalHolidayDates.length > 0)) ||\n (isNullOrUndefined(ganttProp) && (!this.parent.includeWeekend || this.parent.totalHolidayDates.length > 0));\n };\n /**\n * Method to convert given date value as valid start date\n *\n * @param {Date} date .\n * @param {ITaskData} ganttProp .\n * @param {boolean} validateAsMilestone .\n * @param {boolean} isLoad .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.checkStartDate = function (date, ganttProp, validateAsMilestone, isLoad) {\n if (isNullOrUndefined(date)) {\n return null;\n }\n var cloneStartDate = new Date(date.getTime());\n var hour = this.getSecondsInDecimal(cloneStartDate);\n validateAsMilestone = isNullOrUndefined(validateAsMilestone) ? !isNullOrUndefined(ganttProp) ?\n ganttProp.isMilestone : false : validateAsMilestone;\n if (hour < this.parent.defaultStartTime && (!validateAsMilestone || isLoad)) {\n this.setTime(this.parent.defaultStartTime, cloneStartDate);\n }\n else if (hour < this.parent.defaultStartTime && validateAsMilestone) {\n this.setTime(this.parent.defaultStartTime, cloneStartDate);\n }\n else if ((hour === this.parent.defaultEndTime && (!ganttProp || !validateAsMilestone)) || hour > this.parent.defaultEndTime) {\n cloneStartDate.setDate(cloneStartDate.getDate() + 1);\n this.setTime(this.parent.defaultStartTime, cloneStartDate);\n }\n else if (hour > this.parent.defaultStartTime && hour < this.parent.defaultEndTime) {\n for (var index = 0; index < this.parent.workingTimeRanges.length; index++) {\n var value = this.parent.workingTimeRanges[index];\n if (hour >= value.to && (this.parent.workingTimeRanges[index + 1] &&\n hour < this.parent.workingTimeRanges[index + 1].from)) {\n // milestone can fall at end any interval time\n if ((hour === value.to && (!ganttProp || !validateAsMilestone)) || hour !== value.to) {\n this.setTime(this.parent.workingTimeRanges[index + 1].from, cloneStartDate);\n }\n break;\n }\n }\n }\n var tStartDate;\n if (this.parent.autoCalculateDateScheduling) {\n do {\n tStartDate = new Date(cloneStartDate.getTime());\n var holidayLength = this.parent.totalHolidayDates.length;\n // check holidays and weekends\n if (this.isValidateNonWorkDays(ganttProp)) {\n var startTime = (!validateAsMilestone || isLoad) ? this.parent.defaultStartTime : this.parent.defaultEndTime;\n if (!this.parent.includeWeekend) {\n var tempDate = new Date(cloneStartDate.getTime());\n cloneStartDate = this.getNextWorkingDay(cloneStartDate);\n if (tempDate.getTime() !== cloneStartDate.getTime() && !validateAsMilestone) {\n this.setTime(startTime, cloneStartDate);\n }\n }\n for (var count = 0; count < holidayLength; count++) {\n var holidayFrom = this.getDateFromFormat(new Date(this.parent.totalHolidayDates[count]));\n var holidayTo = new Date(holidayFrom.getTime());\n holidayFrom.setHours(0, 0, 0, 0);\n holidayTo.setHours(23, 59, 59, 59);\n if (cloneStartDate.getTime() >= holidayFrom.getTime() && cloneStartDate.getTime() < holidayTo.getTime()) {\n cloneStartDate.setDate(cloneStartDate.getDate() + 1);\n this.setTime(startTime, cloneStartDate);\n }\n }\n }\n } while (tStartDate.getTime() !== cloneStartDate.getTime());\n return new Date(cloneStartDate.getTime());\n }\n else {\n return new Date(cloneStartDate.getTime());\n }\n };\n /**\n * To update given date value to valid end date\n *\n * @param {Date} date .\n * @param {ITaskData} ganttProp .\n * @param {boolean} validateAsMilestone .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.checkEndDate = function (date, ganttProp, validateAsMilestone) {\n if (isNullOrUndefined(date)) {\n return null;\n }\n var cloneEndDate = new Date(date.getTime());\n var hour = this.getSecondsInDecimal(cloneEndDate);\n if (hour > this.parent.defaultEndTime) {\n this.setTime(this.parent.defaultEndTime, cloneEndDate);\n }\n else if (hour <= this.parent.defaultStartTime && !validateAsMilestone) {\n var taskfields = this.parent.taskFields;\n if (this.parent.editModule && this.parent.editModule['editedRecord'] && (!this.parent.editModule['editedRecord'][taskfields.startDate] && this.parent.editModule['editedRecord'][taskfields.endDate])) {\n cloneEndDate.setDate(cloneEndDate.getDate());\n }\n else {\n cloneEndDate.setDate(cloneEndDate.getDate() - 1);\n }\n this.setTime(this.parent.defaultEndTime, cloneEndDate);\n }\n else if (hour > this.parent.defaultStartTime && hour < this.parent.defaultEndTime) {\n for (var index = 0; index < this.parent.workingTimeRanges.length; index++) {\n var value = this.parent.workingTimeRanges[index];\n if (hour > value.to && (this.parent.workingTimeRanges[index + 1] &&\n hour <= this.parent.workingTimeRanges[index + 1].from)) {\n this.setTime(this.parent.workingTimeRanges[index].to, cloneEndDate);\n break;\n }\n }\n }\n var tempCheckDate;\n if (this.parent.autoCalculateDateScheduling) {\n do {\n tempCheckDate = new Date(cloneEndDate.getTime());\n var holidayLength = this.parent.totalHolidayDates.length;\n if (this.isValidateNonWorkDays(ganttProp)) {\n if (!this.parent.includeWeekend) {\n var tempDate = new Date(cloneEndDate.getTime());\n cloneEndDate = this.getPreviousWorkingDay(cloneEndDate);\n if (tempDate.getTime() !== cloneEndDate.getTime()) {\n this.setTime(this.parent.defaultEndTime, cloneEndDate);\n }\n }\n for (var count = 0; count < holidayLength; count++) {\n var holidayFrom = this.getDateFromFormat(new Date(this.parent.totalHolidayDates[count]));\n var holidayTo = new Date(holidayFrom.getTime());\n var tempHoliday = new Date(cloneEndDate.getTime());\n tempHoliday.setMinutes(cloneEndDate.getMilliseconds() - 2);\n holidayFrom.setHours(0, 0, 0, 0);\n holidayTo.setHours(23, 59, 59, 59);\n if (cloneEndDate.getTime() >= holidayFrom.getTime() && cloneEndDate.getTime() < holidayTo.getTime() ||\n tempHoliday.getTime() >= holidayFrom.getTime() && tempHoliday.getTime() < holidayTo.getTime()) {\n cloneEndDate.setDate(cloneEndDate.getDate() - 1);\n if (!(cloneEndDate.getTime() === holidayFrom.getTime() && this.parent.defaultEndTime === 86400 &&\n this.getSecondsInDecimal(cloneEndDate) === 0)) {\n this.setTime(this.parent.defaultEndTime, cloneEndDate);\n }\n }\n }\n }\n } while (tempCheckDate.getTime() !== cloneEndDate.getTime());\n return new Date(cloneEndDate.getTime());\n }\n else {\n if (!isNullOrUndefined(cloneEndDate)) {\n this.setTime(this.parent.defaultEndTime, cloneEndDate);\n }\n return new Date(cloneEndDate.getTime());\n }\n };\n /**\n * To validate the baseline start date\n *\n * @param {Date} date .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.checkBaselineStartDate = function (date) {\n if (isNullOrUndefined(date)) {\n return null;\n }\n else {\n var cloneDate = new Date(date.getTime());\n var hour = this.getSecondsInDecimal(cloneDate);\n if (hour < this.parent.defaultStartTime) {\n this.setTime(this.parent.defaultStartTime, cloneDate);\n }\n else if (hour > this.parent.defaultEndTime) {\n cloneDate.setDate(cloneDate.getDate() + 1);\n this.setTime(this.parent.defaultStartTime, cloneDate);\n }\n else if (hour > this.parent.defaultStartTime && hour < this.parent.defaultEndTime) {\n for (var i = 0; i < this.parent.workingTimeRanges.length; i++) {\n var value = this.parent.workingTimeRanges[i];\n if (hour > value.to && (this.parent.workingTimeRanges[i + 1] &&\n hour < this.parent.workingTimeRanges[i + 1].from)) {\n this.setTime(this.parent.workingTimeRanges[i + 1].from, cloneDate);\n break;\n }\n }\n }\n return cloneDate;\n }\n };\n /**\n * To validate baseline end date\n *\n * @param {Date} date .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.checkBaselineEndDate = function (date, ganttProp) {\n if (isNullOrUndefined(date)) {\n return null;\n }\n else {\n var cloneDate = new Date(date.getTime());\n var hour = this.getSecondsInDecimal(cloneDate);\n if (hour > this.parent.defaultEndTime) {\n this.setTime(this.parent.defaultEndTime, cloneDate);\n }\n else if (hour < this.parent.defaultStartTime && !isNullOrUndefined(ganttProp) && !ganttProp.isMilestone) {\n cloneDate.setDate(cloneDate.getDate() - 1);\n this.setTime(this.parent.defaultEndTime, cloneDate);\n }\n else if (hour > this.parent.defaultStartTime && hour < this.parent.defaultEndTime) {\n for (var i = 0; i < this.parent.workingTimeRanges.length; i++) {\n var value = this.parent.workingTimeRanges[i];\n if (hour > value.to && (this.parent.workingTimeRanges[i + 1] && hour <= this.parent.workingTimeRanges[i + 1].from)) {\n this.setTime(this.parent.workingTimeRanges[i].to, cloneDate);\n break;\n }\n }\n }\n if (ganttProp && ganttProp.baselineStartDate && cloneDate &&\n ganttProp.baselineStartDate.getTime() > cloneDate.getTime()) {\n cloneDate.setDate(cloneDate.getDate() + 1);\n }\n return cloneDate;\n }\n };\n /**\n * To calculate start date value from duration and end date\n *\n * @param {IGanttData} ganttData - Defines the gantt data.\n * @returns {void} .\n * @private\n */\n DateProcessor.prototype.calculateStartDate = function (ganttData) {\n var ganttProp = ganttData.ganttProperties;\n var tempStartDate = null;\n if (!isNullOrUndefined(ganttProp.endDate) && !isNullOrUndefined(ganttProp.duration)) {\n tempStartDate = this.getStartDate(ganttProp.endDate, ganttProp.duration, ganttProp.durationUnit, ganttProp);\n }\n this.parent.setRecordValue('startDate', tempStartDate, ganttProp, true);\n if (this.parent.taskFields.startDate) {\n this.parent.dataOperation.updateMappingData(ganttData, 'startDate');\n }\n };\n /**\n *\n * @param {IGanttData} ganttData - Defines the gantt data.\n * @returns {void} .\n * @private\n */\n DateProcessor.prototype.calculateEndDate = function (ganttData) {\n var ganttProp = ganttData.ganttProperties;\n var tempEndDate = null;\n if (!isNullOrUndefined(ganttProp.startDate)) {\n if (!isNullOrUndefined(ganttProp.endDate) && isNullOrUndefined(ganttProp.duration)) {\n if (this.compareDates(ganttProp.startDate, ganttProp.endDate) === 1) {\n this.parent.setRecordValue('startDate', new Date(ganttProp.endDate.getTime()), ganttProp, true);\n this.setTime(this.parent.defaultStartTime, ganttProp.startDate);\n }\n this.calculateDuration(ganttData);\n }\n if (!isNullOrUndefined(ganttProp.duration)) {\n var duration = !isNullOrUndefined(ganttProp.segments) && ganttProp.segments.length > 1 ?\n this.totalDuration(ganttProp.segments) : ganttProp.duration;\n tempEndDate = this.getEndDate(ganttProp.startDate, duration, ganttProp.durationUnit, ganttProp, false);\n }\n this.parent.setRecordValue('endDate', tempEndDate, ganttProp, true);\n }\n else {\n tempEndDate = ganttData[this.parent.taskFields.endDate];\n if (!isNullOrUndefined(tempEndDate)) {\n this.setTime(this.parent.defaultEndTime, tempEndDate);\n }\n this.parent.setRecordValue('endDate', tempEndDate, ganttProp, true);\n }\n if (this.parent.taskFields.endDate) {\n this.parent.dataOperation.updateMappingData(ganttData, 'endDate');\n }\n };\n DateProcessor.prototype.totalDuration = function (segments) {\n var duration = 0;\n for (var i = 0; i < segments.length; i++) {\n duration += segments[i].duration + segments[i].offsetDuration;\n }\n return duration;\n };\n /**\n * To calculate duration from start date and end date\n *\n * @param {IGanttData} ganttData - Defines the gantt data.\n * @returns {void} .\n */\n DateProcessor.prototype.calculateDuration = function (ganttData) {\n var ganttProperties = ganttData.ganttProperties;\n var tDuration;\n if (!isNullOrUndefined(ganttProperties.segments) && ganttProperties.segments.length > 0 &&\n !isNullOrUndefined(this.parent.editModule.taskbarEditModule)) {\n tDuration = this.parent.editModule.taskbarEditModule.sumOfDuration(ganttProperties.segments);\n }\n else {\n if ((!isNullOrUndefined(this.parent.taskFields.milestone)) && (!isNullOrUndefined(ganttProperties.startDate)) && !isNullOrUndefined(ganttProperties.endDate) &&\n (ganttProperties.startDate).getTime() === (ganttProperties.endDate).getTime() && (ganttData.taskData[this.parent.taskFields.milestone] === false)) {\n tDuration = 1;\n }\n else {\n tDuration = this.getDuration(ganttProperties.startDate, ganttProperties.endDate, ganttProperties.durationUnit, ganttProperties.isAutoSchedule, ganttProperties.isMilestone);\n }\n }\n this.parent.setRecordValue('duration', tDuration, ganttProperties, true);\n var col = this.parent.columnByField[this.parent.columnMapping.duration];\n if (!isNullOrUndefined(this.parent.editModule) && !isNullOrUndefined(this.parent.editModule.cellEditModule) &&\n !this.parent.editModule.cellEditModule.isCellEdit && !isNullOrUndefined(col)) {\n if (!isNullOrUndefined(col.edit) && !isNullOrUndefined(col.edit.read)) {\n var dialog = this.parent.editModule.dialogModule.dialog;\n if (!isNullOrUndefined(dialog)) {\n var textBox = dialog.querySelector('#' + this.parent.element.id + 'Duration')\n .ej2_instances[0];\n if (!isNullOrUndefined(textBox) && textBox.value !== tDuration.toString()) {\n textBox.value = tDuration.toString();\n textBox.dataBind();\n }\n }\n }\n if (this.parent.taskFields.duration) {\n this.parent.dataOperation.updateMappingData(ganttData, 'duration');\n if (this.parent.taskFields.durationUnit) {\n this.parent.dataOperation.updateMappingData(ganttData, 'durationUnit');\n }\n }\n }\n };\n /**\n *\n * @param {Date} sDate Method to get total nonworking time between two date values\n * @param {Date} eDate .\n * @param {boolean} isAutoSchedule .\n * @param {boolean} isCheckTimeZone .\n * @returns {number} .\n */\n DateProcessor.prototype.getNonworkingTime = function (sDate, eDate, isAutoSchedule, isCheckTimeZone) {\n isCheckTimeZone = isNullOrUndefined(isCheckTimeZone) ? true : isCheckTimeZone;\n var weekendCount = (!this.parent.includeWeekend && this.parent.autoCalculateDateScheduling) && isAutoSchedule ? this.getWeekendCount(sDate, eDate) : 0;\n var totalHours = this.getNumberOfSeconds(sDate, eDate, isCheckTimeZone);\n var holidaysCount = isAutoSchedule && this.parent.autoCalculateDateScheduling ? this.getHolidaysCount(sDate, eDate) : 0;\n var totWorkDays = (totalHours - (weekendCount * 86400) - (holidaysCount * 86400)) / 86400; // working days between two dates\n var nonWorkHours = this.getNonWorkingSecondsOnDate(sDate, eDate, isAutoSchedule);\n var totalNonWorkTime = (totWorkDays * (86400 - this.parent.secondsPerDay)) +\n (weekendCount * 86400) + (holidaysCount * 86400) + nonWorkHours;\n return totalNonWorkTime;\n };\n /**\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @param {string} durationUnit .\n * @param {boolean} isAutoSchedule .\n * @param {boolean} isMilestone .\n * @param {boolean} isCheckTimeZone .\n * @returns {number} .\n * @private\n */\n DateProcessor.prototype.getDuration = function (startDate, endDate, durationUnit, isAutoSchedule, isMilestone, isCheckTimeZone) {\n if (isNullOrUndefined(startDate) || isNullOrUndefined(endDate)) {\n return null;\n }\n isCheckTimeZone = isNullOrUndefined(isCheckTimeZone) ? true : isCheckTimeZone;\n var durationValue = 0;\n var timeDiff = this.getTimeDifference(startDate, endDate, isCheckTimeZone) / 1000;\n var nonWorkHours = this.getNonworkingTime(startDate, endDate, isAutoSchedule, isCheckTimeZone);\n var durationHours = timeDiff - nonWorkHours;\n if (isMilestone && this.parent.getFormatedDate(startDate) === this.parent.getFormatedDate(endDate)) {\n durationValue = 0;\n }\n else {\n if (!durationUnit || durationUnit === 'day') {\n durationValue = durationHours / this.parent.secondsPerDay;\n }\n else if (durationUnit === 'minute') {\n durationValue = durationHours / 60;\n }\n else {\n durationValue = durationHours / 3600;\n }\n }\n return parseFloat(durationValue.toString());\n };\n /**\n *\n * @param {number} duration .\n * @param {string} durationUnit .\n * @returns {number} .\n */\n DateProcessor.prototype.getDurationAsSeconds = function (duration, durationUnit) {\n var value = 0;\n if (!durationUnit || durationUnit.toLocaleLowerCase() === 'day') {\n value = this.parent.secondsPerDay * duration;\n }\n else if (durationUnit.toLocaleLowerCase() === 'hour') {\n value = duration * 3600;\n }\n else {\n value = duration * 60;\n }\n return value;\n };\n /**\n * To get date from start date and duration\n *\n * @param {Date} startDate .\n * @param {number} duration .\n * @param {string} durationUnit .\n * @param {ITaskData} ganttProp .\n * @param {boolean} validateAsMilestone .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getEndDate = function (startDate, duration, durationUnit, ganttProp, validateAsMilestone) {\n var tempStart = new Date(startDate.getTime());\n var endDate = new Date(startDate.getTime());\n var secondDuration = this.getDurationAsSeconds(duration, durationUnit);\n var nonWork = 0;\n var workHours = 0;\n while (secondDuration > 0) {\n endDate.setSeconds(endDate.getSeconds() + secondDuration);\n nonWork = this.getNonworkingTime(tempStart, endDate, ganttProp.isAutoSchedule, true);\n workHours = secondDuration - nonWork;\n secondDuration = secondDuration - workHours;\n if (secondDuration > 0) {\n endDate = this.checkStartDate(endDate, ganttProp, validateAsMilestone);\n }\n tempStart = new Date(endDate.getTime());\n }\n return endDate;\n };\n /**\n *\n * @param {Date} endDate To calculate start date vale from end date and duration\n * @param {number} duration .\n * @param {string} durationUnit .\n * @param {ITaskData} ganttProp .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getStartDate = function (endDate, duration, durationUnit, ganttProp, fromValidation) {\n var tempEnd = new Date(endDate.getTime());\n var startDate = new Date(endDate.getTime());\n var secondDuration = this.getDurationAsSeconds(duration, durationUnit);\n var nonWork = 0;\n var workHours = 0;\n while (secondDuration > 0) {\n startDate.setSeconds(startDate.getSeconds() - secondDuration);\n nonWork = this.getNonworkingTime(startDate, tempEnd, ganttProp.isAutoSchedule, true);\n workHours = secondDuration - nonWork;\n secondDuration = secondDuration - workHours;\n if (secondDuration > 0) {\n tempEnd = this.checkEndDate(startDate, ganttProp);\n }\n tempEnd = new Date(startDate.getTime());\n }\n /* To render the milestone in proper date while loading */\n if (fromValidation && ganttProp.isMilestone) {\n startDate.setDate(startDate.getDate() - 1);\n this.parent.dateValidationModule.setTime(this.parent.defaultEndTime, startDate);\n startDate = this.parent.dateValidationModule.checkStartDate(startDate, ganttProp, true);\n }\n return startDate;\n };\n /**\n * @param {ITaskData} ganttProp .\n * @param {boolean} isLoad .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getProjectStartDate = function (ganttProp, isLoad) {\n if (!isNullOrUndefined(this.parent.cloneProjectStartDate)) {\n if (typeof this.parent.cloneProjectStartDate === 'string') {\n this.parent.cloneProjectStartDate = this.getDateFromFormat(this.parent.cloneProjectStartDate);\n }\n var cloneStartDate = this.checkStartDate(this.parent.cloneProjectStartDate);\n this.parent.cloneProjectStartDate = cloneStartDate;\n return new Date(cloneStartDate.getTime());\n }\n else if (!isNullOrUndefined(this.parent.projectStartDate)) {\n var cloneStartDate = this.getDateFromFormat(this.parent.projectStartDate);\n this.parent.cloneProjectStartDate = this.checkStartDate(cloneStartDate);\n }\n else if (!isNullOrUndefined(isLoad)) {\n var flatData = this.parent.flatData;\n var minStartDate = void 0;\n if (flatData.length > 0) {\n minStartDate = flatData[0].ganttProperties.startDate;\n }\n else {\n minStartDate = new Date();\n minStartDate.setHours(0, 0, 0, 0);\n }\n for (var index = 1; index < flatData.length; index++) {\n var startDate = flatData[index].ganttProperties.startDate;\n if (!isNullOrUndefined(startDate) && this.compareDates(startDate, minStartDate) === -1) {\n minStartDate = startDate;\n }\n }\n this.parent.cloneProjectStartDate = this.checkStartDate(minStartDate, ganttProp);\n }\n else {\n return null;\n }\n return new Date(this.parent.cloneProjectStartDate.getTime());\n };\n /**\n * @param {ITaskData} ganttProp .\n * @param {boolean} isAuto .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getValidStartDate = function (ganttProp, isAuto) {\n var sDate = null;\n var startDate = isAuto ? ganttProp.autoStartDate : ganttProp.startDate;\n var endDate = isAuto ? ganttProp.autoEndDate : ganttProp.endDate;\n var duration = !ganttProp.isAutoSchedule && ganttProp.autoDuration ? ganttProp.autoDuration : ganttProp.duration;\n if (isNullOrUndefined(startDate)) {\n if (!isNullOrUndefined(endDate)) {\n sDate = new Date(endDate.getTime());\n this.setTime(this.parent.defaultStartTime, sDate);\n }\n else if (!isNullOrUndefined(duration)) {\n sDate = this.getProjectStartDate(ganttProp);\n }\n }\n else {\n sDate = new Date(startDate.getTime());\n }\n return sDate;\n };\n /**\n *\n * @param {ITaskData} ganttProp .\n * @param {boolean} isAuto .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getValidEndDate = function (ganttProp, isAuto) {\n var eDate = null;\n var startDate = isAuto ? ganttProp.autoStartDate : ganttProp.startDate;\n var endDate = isAuto ? ganttProp.autoEndDate : ganttProp.endDate;\n var duration = isAuto ? ganttProp.autoDuration : ganttProp.duration;\n if (isNullOrUndefined(endDate)) {\n if (!isNullOrUndefined(startDate)) {\n if (ganttProp.isMilestone) {\n eDate = this.checkStartDate(startDate);\n }\n else {\n eDate = new Date(startDate.getTime());\n this.setTime(this.parent.defaultEndTime, eDate);\n }\n }\n else if (!isNullOrUndefined(duration)) {\n var sDate = this.getValidStartDate(ganttProp);\n if (sDate) {\n eDate = this.getEndDate(sDate, duration, ganttProp.durationUnit, ganttProp, false);\n }\n }\n }\n else {\n eDate = new Date(endDate.getTime());\n }\n return eDate;\n };\n /**\n * @returns {number} .\n * @private\n */\n DateProcessor.prototype.getSecondsPerDay = function () {\n var dayWorkingTime = this.parent.dayWorkingTime;\n var length = dayWorkingTime.length;\n var totalSeconds = 0;\n var startDate = new Date('10/11/2018');\n this.parent.nonWorkingHours = [];\n var nonWorkingHours = this.parent.nonWorkingHours;\n this.parent.workingTimeRanges = [];\n var workingTimeRanges = this.parent.workingTimeRanges;\n this.parent.nonWorkingTimeRanges = [];\n var nonWorkingTimeRanges = this.parent.nonWorkingTimeRanges;\n for (var count = 0; count < length; count++) {\n var currentRange = dayWorkingTime[count];\n if (!isNullOrUndefined(currentRange.from) && !isNullOrUndefined(currentRange.to)) {\n startDate.setHours(0, 0, 0, 0);\n var tempDate = new Date(startDate.getTime());\n startDate.setTime(startDate.getTime() + (currentRange.from * 3600000));\n var startHour = new Date(startDate.getTime());\n tempDate.setTime(tempDate.getTime() + (currentRange.to * 3600000));\n var endHour = new Date(tempDate.getTime());\n var timeDiff = endHour.getTime() - startHour.getTime();\n var sdSeconds = this.getSecondsInDecimal(startHour);\n var edSeconds = this.getSecondsInDecimal(endHour);\n if (edSeconds === 0) {\n edSeconds = 86400;\n }\n totalSeconds += timeDiff / 1000;\n if (count === 0) {\n this.parent.defaultStartTime = sdSeconds;\n }\n if (count === length - 1) {\n this.parent.defaultEndTime = edSeconds;\n }\n if (count > 0) {\n nonWorkingHours.push(nonWorkingHours[nonWorkingHours.length - 1] +\n sdSeconds - workingTimeRanges[count - 1].to);\n if (workingTimeRanges[count - 1].to < sdSeconds) {\n nonWorkingTimeRanges.push({\n from: workingTimeRanges[count - 1].to, to: sdSeconds, isWorking: false,\n interval: (sdSeconds - workingTimeRanges[count - 1].to)\n });\n }\n }\n else {\n nonWorkingHours.push(0);\n nonWorkingTimeRanges.push({ from: 0, to: sdSeconds, isWorking: false, interval: sdSeconds });\n }\n workingTimeRanges.push({ from: sdSeconds, to: edSeconds });\n nonWorkingTimeRanges.push({\n from: sdSeconds, to: edSeconds, isWorking: true, interval: (edSeconds - sdSeconds)\n });\n }\n }\n if (this.parent.defaultEndTime / 3600 !== 24) {\n nonWorkingTimeRanges.push({\n from: this.parent.defaultEndTime, to: 86400,\n isWorking: false, interval: 86400 - this.parent.defaultEndTime\n });\n }\n return totalSeconds;\n };\n /**\n *\n * @param {string} value .\n * @param {boolean} isFromDialog .\n * @returns {object} .\n * @private\n */\n // eslint-disable-next-line\n DateProcessor.prototype.getDurationValue = function (value, isFromDialog) {\n var durationUnit = null;\n var duration = null;\n if (typeof value === 'string') {\n var values = value.match(/(\\d*\\.*\\d+|.+$)/g);\n if (values && values.length <= 2) {\n duration = parseFloat(values[0].toString().trim());\n var unit = values[1] ? values[1].toString().trim().toLowerCase() : null;\n if (getValue('minute', this.parent.durationUnitEditText).indexOf(unit) !== -1) {\n durationUnit = 'minute';\n }\n else if (getValue('hour', this.parent.durationUnitEditText).indexOf(unit) !== -1) {\n durationUnit = 'hour';\n }\n else if (getValue('day', this.parent.durationUnitEditText).indexOf(unit) !== -1) {\n durationUnit = 'day';\n }\n }\n }\n else {\n duration = value;\n durationUnit = null;\n }\n var output = {\n duration: duration,\n durationUnit: durationUnit\n };\n return output;\n };\n /**\n *\n * @param {Date} date .\n * @returns {Date} .\n */\n DateProcessor.prototype.getNextWorkingDay = function (date) {\n var dayIndex = date.getDay();\n if (this.parent.nonWorkingDayIndex.indexOf(dayIndex) !== -1) {\n date.setDate(date.getDate() + 1);\n date = this.getNextWorkingDay(date);\n return date;\n }\n else {\n return date;\n }\n };\n /**\n * get weekend days between two dates without including args dates\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @returns {number} .\n */\n DateProcessor.prototype.getWeekendCount = function (startDate, endDate) {\n var weekendCount = 0;\n var sDate = new Date(startDate.getTime());\n var eDate = new Date(endDate.getTime());\n sDate.setHours(0, 0, 0, 0);\n sDate.setDate(sDate.getDate() + 1);\n eDate.setHours(0, 0, 0, 0);\n while (sDate.getTime() < eDate.getTime()) {\n if (this.parent.nonWorkingDayIndex.indexOf(sDate.getDay()) !== -1) {\n weekendCount += 1;\n }\n sDate.setDate(sDate.getDate() + 1);\n }\n return weekendCount;\n };\n /**\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @param {boolean} isCheckTimeZone .\n * @returns {number} .\n */\n DateProcessor.prototype.getNumberOfSeconds = function (startDate, endDate, isCheckTimeZone) {\n var sDate = new Date(startDate.getTime());\n var eDate = new Date(endDate.getTime());\n var timeDiff = 0;\n sDate.setDate(sDate.getDate() + 1);\n sDate.setHours(0, 0, 0, 0);\n eDate.setHours(0, 0, 0, 0);\n if (sDate.getTime() < eDate.getTime()) {\n timeDiff = (this.getTimeDifference(sDate, eDate, isCheckTimeZone)) / 1000;\n }\n if (timeDiff % 86400 !== 0) {\n timeDiff = timeDiff - (timeDiff % 86400) + 86400;\n }\n return timeDiff;\n };\n /**\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @returns {number} .\n */\n DateProcessor.prototype.getHolidaysCount = function (startDate, endDate) {\n var holidaysCount = 0;\n var holidays = this.parent.totalHolidayDates;\n var sDate = new Date(startDate.getTime());\n var eDate = new Date(endDate.getTime());\n sDate.setDate(sDate.getDate() + 1);\n sDate.setHours(0, 0, 0, 0);\n eDate.setHours(0, 0, 0, 0);\n if (sDate.getTime() < eDate.getTime()) {\n for (var i = 0; i < holidays.length; i++) {\n var currentHoliday = this.getDateFromFormat(new Date(holidays[i]));\n if (sDate.getTime() <= currentHoliday.getTime() && eDate.getTime() > currentHoliday.getTime()) {\n if ((!this.parent.includeWeekend && this.parent.nonWorkingDayIndex.indexOf(currentHoliday.getDay()) === -1) ||\n this.parent.includeWeekend) {\n holidaysCount += 1;\n }\n }\n }\n }\n return holidaysCount;\n };\n /**\n * @returns {number[]} .\n * @private\n */\n DateProcessor.prototype.getHolidayDates = function () {\n var holidays = this.parent.holidays;\n var holidayDates = [];\n for (var i = 0; i < holidays.length; i++) {\n var from = this.getDateFromFormat(holidays[i].from);\n var to = this.getDateFromFormat(holidays[i].to);\n if (isNullOrUndefined(from) && isNullOrUndefined(to)) {\n continue;\n }\n else if (isNullOrUndefined(from) || isNullOrUndefined(to)) {\n var tempDate = from ? from : to;\n tempDate.setHours(0, 0, 0, 0);\n if (holidayDates.indexOf(tempDate.getTime()) === -1) {\n holidayDates.push(tempDate.getTime());\n }\n }\n else {\n while (from <= to) {\n from.setHours(0, 0, 0, 0);\n if (holidayDates.indexOf(from.getTime()) === -1) {\n holidayDates.push(from.getTime());\n }\n from.setDate(from.getDate() + 1);\n }\n }\n }\n return holidayDates;\n };\n /**\n * @param {Date} date .\n * @param {boolean} checkWeekEnd .\n * @returns {boolean} .\n * @private\n */\n /*Check given date is on holidays*/\n DateProcessor.prototype.isOnHolidayOrWeekEnd = function (date, checkWeekEnd) {\n checkWeekEnd = !isNullOrUndefined(checkWeekEnd) ? checkWeekEnd : this.parent.includeWeekend;\n if (!this.parent.autoCalculateDateScheduling) {\n checkWeekEnd = true;\n }\n if (!checkWeekEnd && this.parent.nonWorkingDayIndex.indexOf(date.getDay()) !== -1) {\n return true;\n }\n var holidays = this.parent.totalHolidayDates;\n for (var count = 0; count < holidays.length; count++) {\n var holidayFrom = this.getDateFromFormat(new Date(holidays[count]));\n var holidayTo = new Date(holidayFrom.getTime());\n holidayFrom.setHours(0, 0, 0, 0);\n holidayTo.setHours(23, 59, 59, 59);\n if (date.getTime() >= holidayFrom.getTime() && date.getTime() < holidayTo.getTime()) {\n return true;\n }\n }\n return false;\n };\n /**\n * To calculate non working times in given date\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @param {boolean} isAutoSchedule .\n * @returns {number} .\n */\n DateProcessor.prototype.getNonWorkingSecondsOnDate = function (startDate, endDate, isAutoSchedule) {\n var sHour = this.getSecondsInDecimal(startDate);\n var eHour = this.getSecondsInDecimal(endDate);\n var startRangeIndex = -1;\n var endRangeIndex = -1;\n var totNonWrkSecs = 0;\n var startOnHoliday = isAutoSchedule && this.parent.autoCalculateDateScheduling ? this.isOnHolidayOrWeekEnd(startDate, null) : false;\n var endOnHoliday = isAutoSchedule && this.parent.autoCalculateDateScheduling ? this.isOnHolidayOrWeekEnd(endDate, null) : false;\n for (var i = 0; i < this.parent.nonWorkingTimeRanges.length; i++) {\n var val = this.parent.nonWorkingTimeRanges[i];\n if (sHour >= val.from && sHour <= val.to) {\n startRangeIndex = i;\n }\n if (eHour >= val.from && eHour <= val.to) {\n endRangeIndex = i;\n }\n }\n if (startDate.getDate() !== endDate.getDate() || startDate.getMonth() !== endDate.getMonth() ||\n startDate.getFullYear() !== endDate.getFullYear()) {\n if (!startOnHoliday) {\n for (var i = startRangeIndex; i < this.parent.nonWorkingTimeRanges.length; i++) {\n if (!this.parent.nonWorkingTimeRanges[i].isWorking) {\n if (i === startRangeIndex) {\n totNonWrkSecs += (this.parent.nonWorkingTimeRanges[i].to - sHour);\n }\n else {\n totNonWrkSecs += (this.parent.nonWorkingTimeRanges[i].interval);\n }\n }\n }\n }\n else {\n totNonWrkSecs += (86400 - sHour);\n }\n if (!endOnHoliday) {\n for (var i = 0; i <= endRangeIndex; i++) {\n if (!this.parent.nonWorkingTimeRanges[i].isWorking) {\n if (i === endRangeIndex) {\n totNonWrkSecs += (eHour - this.parent.nonWorkingTimeRanges[i].from);\n }\n else {\n totNonWrkSecs += this.parent.nonWorkingTimeRanges[i].interval;\n }\n }\n }\n }\n else {\n totNonWrkSecs += eHour;\n }\n }\n else {\n if (startRangeIndex !== endRangeIndex) {\n if (!endOnHoliday) {\n for (var i = startRangeIndex; i <= endRangeIndex; i++) {\n if (!this.parent.nonWorkingTimeRanges[i].isWorking) {\n if (i === startRangeIndex) {\n totNonWrkSecs += (this.parent.nonWorkingTimeRanges[i].to - sHour);\n }\n else if (i === endRangeIndex) {\n totNonWrkSecs += (eHour - this.parent.nonWorkingTimeRanges[i].from);\n }\n else {\n totNonWrkSecs += this.parent.nonWorkingTimeRanges[i].interval;\n }\n }\n }\n }\n else {\n totNonWrkSecs += (eHour - sHour);\n }\n }\n else {\n if (!endOnHoliday) {\n var range = this.parent.nonWorkingTimeRanges[startRangeIndex];\n if (!range.isWorking) {\n totNonWrkSecs = eHour - sHour;\n }\n }\n else {\n totNonWrkSecs += (eHour - sHour);\n }\n }\n }\n return totNonWrkSecs;\n };\n /**\n *\n * @param {Date} date .\n * @returns {Date} .\n */\n DateProcessor.prototype.getPreviousWorkingDay = function (date) {\n var dayIndex = date.getDay();\n var previousIndex = (dayIndex === 0) ? 6 : dayIndex - 1;\n if (this.parent.nonWorkingDayIndex.indexOf(dayIndex) !== -1 || (this.parent.nonWorkingDayIndex.indexOf(previousIndex) !== -1\n && this.parent.defaultEndTime === 86400 && this.getSecondsInDecimal(date) === 0)) {\n date.setDate(date.getDate() - 1);\n if (this.parent.nonWorkingDayIndex.indexOf(date.getDay()) !== -1) {\n date = this.getPreviousWorkingDay(date);\n }\n return date;\n }\n else {\n return date;\n }\n };\n /**\n * To get non-working day indexes.\n *\n * @returns {void} .\n * @private\n */\n DateProcessor.prototype.getNonWorkingDayIndex = function () {\n var weekDay = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n var weekDayLength = weekDay.length;\n if (this.parent.workWeek.length === 0) {\n this.parent.workWeek = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];\n }\n var workWeek = this.parent.workWeek.slice();\n var length = workWeek.length;\n for (var i = 0; i < length; i++) {\n workWeek[i] = workWeek[i].toLowerCase();\n }\n this.parent.nonWorkingDayIndex = [];\n for (var i = 0; i < weekDayLength; i++) {\n if (workWeek.indexOf(weekDay[i]) === -1) {\n this.parent.nonWorkingDayIndex.push(i);\n }\n }\n };\n /**\n *\n * @param {number} seconds .\n * @param {Date} date .\n * @returns {void} .\n * @private\n */\n DateProcessor.prototype.setTime = function (seconds, date) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var hour = seconds / 3600;\n hour = parseInt(hour, 10);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var min = (seconds - (hour * 3600)) / 60;\n min = parseInt(min, 10);\n var sec = seconds - (hour * 3600) - (min * 60);\n date.setHours(hour, min, sec);\n };\n /**\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @param {boolean} isCheckTimeZone .\n * @returns {number} .\n */\n DateProcessor.prototype.getTimeDifference = function (startDate, endDate, isCheckTimeZone) {\n var sDate = new Date(startDate.getTime());\n var eDate = new Date(endDate.getTime());\n if (isCheckTimeZone) {\n this.updateDateWithTimeZone(sDate, eDate);\n }\n return eDate.getTime() - sDate.getTime();\n };\n /**\n * @param {Date} sDate .\n * @param {Date} eDate .\n * @returns {void} .\n */\n DateProcessor.prototype.updateDateWithTimeZone = function (sDate, eDate) {\n var sTZ = sDate.getTimezoneOffset();\n var eTZ = eDate.getTimezoneOffset();\n var uTZ;\n var uDate;\n if (sTZ !== eTZ) {\n var standardTZ = new Date(new Date().getFullYear(), 0, 1).getTimezoneOffset();\n if (standardTZ !== sTZ) {\n uDate = sDate;\n uTZ = sTZ;\n }\n else if (standardTZ !== eTZ) {\n uDate = eDate;\n uTZ = eTZ;\n }\n if (standardTZ < 0) {\n var tzDiff = standardTZ - uTZ;\n uDate.setTime(uDate.getTime() + (tzDiff * 60 * 1000));\n }\n else if (standardTZ >= 0) {\n var tzDiff = uTZ - standardTZ;\n uDate.setTime(uDate.getTime() - (tzDiff * 60 * 1000));\n }\n }\n };\n /**\n *\n * @param {Date} date .\n * @returns {number} .\n */\n DateProcessor.prototype.getSecondsInDecimal = function (date) {\n return (date.getHours() * 60 * 60) + (date.getMinutes() * 60) + date.getSeconds() + (date.getMilliseconds() / 1000);\n };\n /**\n * @param {Date} date .\n * @param {number} localOffset .\n * @param {string} timezone .\n * @returns {number} .\n * @private\n */\n DateProcessor.prototype.offset = function (date, timezone) {\n var localOffset = date.getTimezoneOffset();\n try {\n var convertedDate = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n if (!isNaN(convertedDate.getTime())) {\n return ((date.getTime() - convertedDate.getTime()) / 60000) + localOffset;\n }\n return 0;\n }\n catch (error) {\n return 0;\n }\n };\n DateProcessor.prototype.remove = function (date, timezone) {\n if (!isNullOrUndefined(date)) {\n date = this.reverse(date, timezone, date.getTimezoneOffset());\n }\n return date;\n };\n DateProcessor.prototype.reverse = function (date, fromOffset, toOffset) {\n if (typeof fromOffset === 'string') {\n fromOffset = this.offset(date, fromOffset);\n }\n if (typeof toOffset === 'string') {\n toOffset = this.offset(date, toOffset);\n }\n var fromLocalOffset = date.getTimezoneOffset();\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n var toLocalOffset = date.getTimezoneOffset();\n return new Date(date.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n };\n /**\n * @param {Date} date .\n * @param {string} timezone .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.convert = function (date, timezone) {\n var fromOffset = date.getTimezoneOffset();\n var toOffset = this.offset(date, timezone);\n if (fromOffset < 0) {\n date = new Date(date.getTime() - (fromOffset - toOffset) / 60000);\n var toLocalOffset = date.getTimezoneOffset();\n return new Date(date.getTime() - (toLocalOffset - fromOffset) / 60000);\n }\n else {\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n var toLocalOffset = date.getTimezoneOffset();\n return new Date(date.getTime() + (toLocalOffset - fromOffset) * 60000);\n }\n };\n /**\n * @param {string | Date} date .\n * @param {boolean} toConvert .\n * @returns {Date} .\n * @private\n */\n DateProcessor.prototype.getDateFromFormat = function (date, toConvert) {\n var updatedDate;\n if (isNullOrUndefined(date)) {\n return null;\n }\n else if (date instanceof Date) {\n updatedDate = new Date(date.getTime());\n }\n else {\n var dateObject = this.parent.globalize.parseDate(date, { format: this.parent.getDateFormat(), type: 'dateTime' });\n updatedDate = isNullOrUndefined(dateObject) && !isNaN(new Date(date).getTime()) ? new Date(date) : dateObject;\n }\n if (!isNullOrUndefined(this.parent.timezone) && toConvert) {\n var convertedDate = this.convert(updatedDate, this.parent.timezone);\n return convertedDate;\n }\n else {\n return updatedDate;\n }\n };\n /**\n * @param {Date} date1 .\n * @param {Date} date2 .\n * @returns {number} .\n * @private\n */\n DateProcessor.prototype.compareDates = function (date1, date2) {\n if (!isNullOrUndefined(date1) && !isNullOrUndefined(date2)) {\n return (date1.getTime() > date2.getTime()) ? 1 : (date1.getTime() < date2.getTime()) ? -1 : 0;\n }\n else if (!isNullOrUndefined(date1) && isNullOrUndefined(date2)) {\n return 1;\n }\n else if (isNullOrUndefined(date1) && !isNullOrUndefined(date2)) {\n return -1;\n }\n else {\n return null;\n }\n };\n /**\n *\n * @param {number} duration .\n * @param {string} durationUnit .\n * @returns {string} .\n * @private\n */\n DateProcessor.prototype.getDurationString = function (duration, durationUnit) {\n var value = '';\n if (!isNullOrUndefined(duration)) {\n value += parseFloat(duration.toFixed(2)) + ' ';\n if (!isNullOrUndefined(durationUnit)) {\n var plural = duration !== 1;\n if (durationUnit === 'day') {\n value += plural ? this.parent.localeObj.getConstant('days') : this.parent.localeObj.getConstant('day');\n }\n else if (durationUnit === 'hour') {\n value += plural ? this.parent.localeObj.getConstant('hours') : this.parent.localeObj.getConstant('hour');\n }\n else if (durationUnit === 'minute') {\n value += plural ? this.parent.localeObj.getConstant('minutes') :\n this.parent.localeObj.getConstant('minute');\n }\n }\n }\n return value;\n };\n /**\n * Method to get work with value and unit.\n *\n * @param {number} work .\n * @param {string} workUnit .\n * @returns {string} .\n * @private\n */\n DateProcessor.prototype.getWorkString = function (work, workUnit) {\n var value = '';\n if (!isNullOrUndefined(work)) {\n value += parseFloat(work).toFixed(2) + ' ';\n if (!isNullOrUndefined(workUnit)) {\n var plural = work !== 1;\n if (workUnit === 'day') {\n value += plural ? this.parent.localeObj.getConstant('days') : this.parent.localeObj.getConstant('day');\n }\n else if (workUnit === 'hour') {\n value += plural ? this.parent.localeObj.getConstant('hours') : this.parent.localeObj.getConstant('hour');\n }\n else if (workUnit === 'minute') {\n value += plural ? this.parent.localeObj.getConstant('minutes') :\n this.parent.localeObj.getConstant('minute');\n }\n }\n }\n return value;\n };\n /**\n *\n * @param {object} editArgs .\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n DateProcessor.prototype.calculateProjectDatesForValidatedTasks = function (editArgs) {\n var _this = this;\n var projectStartDate = typeof this.parent.projectStartDate === 'string' ?\n new Date(this.parent.projectStartDate) : this.parent.projectStartDate;\n var projectEndDate = typeof this.parent.projectEndDate === 'string' ?\n new Date(this.parent.projectEndDate) : this.parent.projectEndDate;\n var minStartDate = null;\n var maxEndDate = null;\n var flatData = (getValue('dataOperation.dataArray', this.parent));\n if ((!projectStartDate || !projectEndDate) && (flatData && flatData.length === 0)) {\n minStartDate = this.getDateFromFormat(new Date());\n maxEndDate = this.getDateFromFormat(new Date(minStartDate.getTime()));\n }\n else if (flatData.length > 0) {\n var sortedStartDate = flatData.slice().sort(function (a, b) {\n return ((new Date(a[_this.parent.taskFields.startDate])).getTime() -\n (new Date(b[_this.parent.taskFields.startDate])).getTime());\n });\n var sortedEndDate = flatData.slice().sort(function (a, b) {\n return ((new Date(b[_this.parent.taskFields.endDate])).getTime() - (new Date(a[_this.parent.taskFields.endDate])).getTime());\n });\n minStartDate = sortedStartDate[0][this.parent.taskFields.startDate];\n maxEndDate = sortedEndDate[sortedEndDate.length - 1][this.parent.taskFields.endDate];\n }\n this.parent.cloneProjectStartDate = projectStartDate ? new Date(projectStartDate.getTime()) :\n typeof minStartDate === 'string' ? new Date(minStartDate) : minStartDate;\n this.parent.cloneProjectEndDate = projectEndDate ? new Date(projectEndDate.getTime()) :\n typeof maxEndDate === 'string' ? new Date(maxEndDate) : maxEndDate;\n };\n /**\n *\n * @param {object} editArgs .\n * @returns {void} .\n * @private\n */\n DateProcessor.prototype.calculateProjectDates = function (editArgs) {\n var _this = this;\n if (this.parent.isLoad && this.parent.enablePersistence &&\n this.parent.cloneProjectStartDate && this.parent.cloneProjectEndDate) {\n this.parent.cloneProjectStartDate = this.getDateFromFormat(this.parent.cloneProjectStartDate);\n this.parent.cloneProjectEndDate = this.getDateFromFormat(this.parent.cloneProjectEndDate);\n return;\n }\n var sDate = typeof this.parent.projectStartDate === 'string' ?\n new Date(this.parent.projectStartDate) : this.parent.projectStartDate;\n var eDate = typeof this.parent.projectEndDate === 'string' ?\n new Date(this.parent.projectEndDate) : this.parent.projectEndDate;\n var projectStartDate = this.parent.timelineModule.isZooming && this.parent.cloneProjectStartDate\n ? this.getDateFromFormat(this.parent.cloneProjectStartDate) : this.getDateFromFormat(sDate);\n var projectEndDate = this.parent.timelineModule.isZooming && this.parent.cloneProjectEndDate\n ? this.getDateFromFormat(this.parent.cloneProjectEndDate) : this.getDateFromFormat(eDate);\n var minStartDate = null;\n var maxEndDate = null;\n var flatData = this.parent.flatData;\n var currentViewData = this.parent.currentViewData;\n var taskRange = [];\n var addDateToList = function (date) {\n if (!isNullOrUndefined(date)) {\n taskRange.push(date);\n }\n };\n var sortDates = function (dates) {\n if (dates.length > 0) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n minStartDate = new Date(dates[0].getTime());\n maxEndDate = dates.length > 1 ? new Date(dates[dates.length - 1].getTime()) : null;\n }\n };\n if (((!projectStartDate || !projectEndDate) && flatData.length > 0) || editArgs || this.parent.timelineModule.isZoomToFit) {\n var viewData = void 0;\n if (currentViewData.length > 0 && this.parent.timelineModule.isZoomToFit &&\n this.parent.treeGrid.filterModule &&\n this.parent.treeGrid.filterModule.filteredResult.length > 0) {\n viewData = currentViewData;\n }\n else {\n viewData = flatData;\n }\n viewData.forEach(function (data) {\n taskRange = [];\n var task = data.ganttProperties;\n var tempStartDate;\n var tempEndDate;\n if (isNullOrUndefined(task.startDate) && isNullOrUndefined(task.endDate)) {\n tempStartDate = null;\n tempEndDate = null;\n }\n else {\n tempStartDate = _this.getValidStartDate(task);\n tempEndDate = _this.getValidEndDate(task);\n }\n addDateToList(minStartDate);\n addDateToList(maxEndDate);\n addDateToList(tempStartDate);\n addDateToList(tempEndDate);\n if (_this.parent.renderBaseline && !_this.parent.timelineModule.isZoomToFit) {\n addDateToList(task.baselineStartDate);\n addDateToList(task.baselineEndDate);\n }\n if (task.indicators && task.indicators.length > 0 && !_this.parent.timelineModule.isZoomToFit) {\n task.indicators.forEach(function (item) {\n addDateToList(_this.getDateFromFormat(item.date));\n });\n }\n sortDates(taskRange);\n });\n taskRange = [];\n addDateToList(minStartDate);\n addDateToList(maxEndDate);\n //update schedule dates as per holiday and strip line collection\n if (this.parent.eventMarkers.length > 0 && !this.parent.timelineModule.isZoomToFit) {\n var eventMarkers = this.parent.eventMarkers;\n // eslint-disable-next-line\n eventMarkers.forEach(function (marker, index) {\n addDateToList(_this.getDateFromFormat(marker.day));\n });\n }\n if (this.parent.totalHolidayDates.length > 0 && !this.parent.timelineModule.isZoomToFit) {\n var holidays = this.parent.totalHolidayDates;\n // eslint-disable-next-line\n holidays.forEach(function (holiday, index) {\n addDateToList(new Date(holiday));\n });\n }\n sortDates(taskRange);\n if (!minStartDate || !maxEndDate) {\n if (!minStartDate) {\n minStartDate = isNullOrUndefined(minStartDate) ? this.getDateFromFormat(new Date()) : minStartDate;\n minStartDate.setHours(0, 0, 0, 0);\n }\n else {\n minStartDate = isNullOrUndefined(minStartDate) ? this.getDateFromFormat(new Date()) : minStartDate;\n }\n maxEndDate = this.getDateFromFormat(new Date(minStartDate.getTime()));\n maxEndDate.setDate(maxEndDate.getDate() + 20);\n }\n }\n else if ((!projectStartDate || !projectEndDate) && flatData.length === 0) {\n minStartDate = this.getDateFromFormat(new Date());\n maxEndDate = this.getDateFromFormat(new Date(minStartDate.getTime()));\n }\n if (!editArgs) {\n this.prevProjectStartDate = this.parent.cloneProjectStartDate;\n this.parent.cloneProjectStartDate = minStartDate ? (!this.parent.timelineModule.isZoomToFit) ? (!isNullOrUndefined(projectStartDate)) ? new Date(projectStartDate.getTime()) : minStartDate : minStartDate : new Date(projectStartDate.getTime());\n this.parent.cloneProjectEndDate = maxEndDate ? (!this.parent.timelineModule.isZoomToFit) ? (!isNullOrUndefined(projectEndDate)) ? new Date(projectEndDate.getTime()) : maxEndDate : maxEndDate : new Date(projectEndDate.getTime());\n }\n else {\n setValue('minStartDate', minStartDate, editArgs);\n setValue('maxEndDate', maxEndDate, editArgs);\n }\n this.parent['isProjectDateUpdated'] = true;\n };\n /**\n *\n * @param {ITaskSegment} segments .\n * @returns {number} .\n * @private\n */\n DateProcessor.prototype.splitTasksDuration = function (segments) {\n var duration = 0;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var sDate = segment.startDate;\n var eDate = segment.endDate;\n if (this.parent.timelineModule.bottomTier === \"Hour\") {\n duration += Math.ceil(this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60));\n }\n else if (this.parent.timelineModule.bottomTier === \"Minutes\") {\n duration += Math.ceil(this.getTimeDifference(sDate, eDate) / (1000 * 60));\n }\n else {\n duration += Math.ceil(this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60 * 24));\n }\n }\n return duration;\n };\n return DateProcessor;\n}());\nexport { DateProcessor };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, getValue, extend, setValue } from '@syncfusion/ej2-base';\nimport { getUid } from '@syncfusion/ej2-grids';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isCountRequired, isScheduledTask } from './utils';\nimport { DateProcessor } from './date-processor';\n/**\n * To calculate and update task related values\n */\nvar TaskProcessor = /** @class */ (function (_super) {\n __extends(TaskProcessor, _super);\n function TaskProcessor(parent) {\n var _this = _super.call(this, parent) || this;\n _this.recordIndex = 0;\n _this.taskIds = [];\n _this.hierarchyData = [];\n _this.addEventListener();\n return _this;\n }\n TaskProcessor.prototype.addEventListener = function () {\n this.parent.on('beforeDataManipulate', this.checkDataBinding.bind(this));\n };\n /**\n * @param {boolean} isChange .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.checkDataBinding = function (isChange) {\n if (isChange) {\n this.parent.flatData = [];\n this.parent.currentViewData = [];\n this.parent.updatedRecords = [];\n this.dataArray = [];\n this.taskIds = [];\n this.parent.ids = [];\n this.recordIndex = 0;\n this.hierarchyData = [];\n this.parent.predecessorsCollection = [];\n this.parent.treeGrid.parentData = [];\n this.parent.taskIds = [];\n }\n if (isNullOrUndefined(this.parent.dataSource)) {\n this.parent.dataSource = [];\n this.parent.processTimeline();\n this.parent.renderGantt(isChange);\n }\n else if (this.parent.dataSource instanceof DataManager) {\n this.initDataSource(isChange);\n }\n else {\n if (this.parent.dataSource instanceof Object && isCountRequired(this.parent)) {\n var ganttdata = getValue('result', this.parent.dataSource);\n this.dataArray = ganttdata;\n }\n else {\n this.dataArray = this.parent.dataSource;\n }\n this.processTimeline();\n this.cloneDataSource();\n this.parent.renderGantt(isChange);\n }\n };\n TaskProcessor.prototype.processTimeline = function () {\n this.parent.processTimeline();\n if (!this.parent.enableValidation) {\n this.parent.dataOperation.calculateProjectDatesForValidatedTasks();\n this.parent.timelineModule.validateTimelineProp();\n }\n };\n TaskProcessor.prototype.initDataSource = function (isChange) {\n var _this = this;\n var queryManager = this.parent.query instanceof Query ? this.parent.query : new Query();\n queryManager.requiresCount();\n var dataManager = this.parent.dataSource;\n if (!this.parent.loadChildOnDemand && this.parent.taskFields.hasChildMapping) {\n this.processTimeline();\n this.parent.renderGantt(isChange);\n }\n else {\n dataManager.executeQuery(queryManager).then(function (e) {\n _this.dataArray = e.result;\n _this.processTimeline();\n if (_this.parent.loadChildOnDemand || (!_this.parent.loadChildOnDemand && !(_this.parent.taskFields.hasChildMapping))) {\n _this.cloneDataSource();\n }\n _this.parent.renderGantt(isChange);\n }).catch(function (e) {\n // Trigger action failure event\n _this.parent.processTimeline();\n _this.parent.renderGantt(isChange);\n _this.parent.trigger('actionFailure', { error: e });\n });\n }\n };\n TaskProcessor.prototype.constructDataSource = function (dataSource) {\n var mappingData = new DataManager(dataSource).executeLocal(new Query()\n .group(this.parent.taskFields.parentID));\n var rootData = [];\n var index;\n for (var i = 0; i < mappingData.length; i++) {\n var groupData = mappingData[i];\n if (!isNullOrUndefined(groupData.key)) {\n index = this.taskIds.indexOf(groupData.key.toString());\n if (index > -1) {\n if (!isNullOrUndefined(groupData.key)) {\n dataSource[index][this.parent.taskFields.child] = groupData.items;\n continue;\n }\n }\n }\n if (index !== -1) {\n rootData.push.apply(rootData, groupData.items); // eslint-disable-line\n }\n }\n this.hierarchyData = this.dataReorder(dataSource, rootData);\n };\n TaskProcessor.prototype.cloneDataSource = function () {\n var taskIdMapping = this.parent.taskFields.id;\n var parentIdMapping = this.parent.taskFields.parentID;\n var hierarchicalData = [];\n if (!isNullOrUndefined(taskIdMapping) && !isNullOrUndefined(parentIdMapping)) {\n var data = [];\n for (var i = 0; i < this.dataArray.length; i++) {\n var tempData = this.dataArray[i];\n if (tempData['parentItem']) {\n delete tempData['parentItem'];\n }\n data.push(extend({}, {}, tempData, true));\n if (!isNullOrUndefined(tempData[taskIdMapping])) {\n this.taskIds.push(tempData[taskIdMapping].toString());\n }\n }\n if (!this.parent.taskFields.child) {\n this.parent.setProperties({ taskFields: { child: 'Children' } }, true);\n }\n this.constructDataSource(data);\n if (!this.parent.loadChildOnDemand && this.parent.taskFields.hasChildMapping && this.hierarchyData.length === 0) {\n hierarchicalData = this.dataArray;\n }\n else {\n hierarchicalData = this.hierarchyData;\n }\n }\n else {\n hierarchicalData = this.dataArray;\n }\n if (this.parent.taskFields.segmentId) {\n this.segmentCollection = new DataManager(this.parent.segmentData).executeLocal(new Query()\n .group(this.parent.taskFields.segmentId));\n if (!this.parent.taskFields.segments) {\n this.parent.taskFields.segments = 'Segments';\n }\n }\n if (this.parent.viewType !== 'ProjectView') {\n var resources = extend([], [], this.parent.resources, true);\n var unassignedTasks = [];\n this.constructResourceViewDataSource(resources, hierarchicalData, unassignedTasks);\n if (unassignedTasks.length > 0) {\n var record = {};\n var resourceName = this.parent.resourceFields.name || 'resourceName';\n record[this.parent.resourceFields.id] = 0;\n record[resourceName] = this.parent.localeObj.getConstant('unassignedTask');\n record[this.parent.taskFields.child] = unassignedTasks;\n resources.push(record);\n }\n hierarchicalData = resources;\n }\n this.prepareDataSource(hierarchicalData);\n };\n /**\n * @param {object[]} resources .\n * @param {object[]} data .\n * @param {object[]} unassignedTasks .\n * @returns {void} .\n *\n */\n TaskProcessor.prototype.constructResourceViewDataSource = function (resources, data, unassignedTasks) {\n var _loop_1 = function (i) {\n var tempData = data[i];\n var child = this_1.parent.taskFields.child != null ? this_1.parent.taskFields.child : this_1.parent.taskFields.child = 'Children';\n var resourceData = tempData && tempData[this_1.parent.taskFields.resourceInfo];\n var resourceIdMapping = this_1.parent.resourceFields.id;\n if ((!tempData[child] || tempData[child].length === 0) && resourceData && resourceData.length) {\n if (typeof (resourceData) == \"string\") {\n this_1.isResourceString = true;\n var id = resourceData;\n for (var j = 0; j < resources.length; j++) {\n if (resources[j][this_1.parent.resourceFields.name].toString() === id.toString()) {\n if (resources[j][child]) {\n resources[j][child].push(tempData);\n }\n else {\n resources[j][child] = [tempData];\n }\n break;\n }\n }\n }\n else {\n resourceData.forEach(function (resource) {\n var id = (typeof resource === 'object') ? resource[resourceIdMapping] :\n resource;\n for (var j = 0; j < resources.length; j++) {\n if (resources[j][resourceIdMapping].toString() === id.toString()) {\n if (resources[j][child]) {\n resources[j][child].push(tempData);\n }\n else {\n resources[j][child] = [tempData];\n }\n break;\n }\n }\n });\n }\n }\n else if (!tempData[child] || (tempData[child] && tempData[child].length === 0)) {\n unassignedTasks.push(tempData);\n }\n if (tempData[this_1.parent.taskFields.child] && tempData[this_1.parent.taskFields.child].length) {\n this_1.constructResourceViewDataSource(resources, tempData[this_1.parent.taskFields.child], unassignedTasks);\n }\n };\n var this_1 = this;\n for (var i = 0; i < data.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * Function to manipulate data-source\n *\n * @param {object[]} data .\n * @returns {void} .\n * @hidden\n */\n TaskProcessor.prototype.prepareDataSource = function (data) {\n this.prepareRecordCollection(data, 0);\n this.parent.initialLoadData = extend({}, {}, this.parent.flatData, true);\n // Method to maintain the shared task uniqueIds\n if (this.parent.viewType === 'ResourceView') {\n this.calculateSharedTaskUniqueIds();\n }\n if (this.parent.taskFields.dependency && this.parent.predecessorModule) {\n this.parent.predecessorModule.ensurePredecessorCollection();\n }\n };\n TaskProcessor.prototype.calculateSharedTaskUniqueIds = function () {\n var _loop_2 = function (i) {\n var value = [];\n value[0] = this_2.parent.getTaskIds()[i][0];\n value[1] = this_2.parent.getTaskIds()[i].slice(1);\n if (value[0] !== 'R') {\n var sharedRecords_1 = [];\n var ids_1 = [];\n this_2.parent.flatData.filter(function (data) {\n if (data.ganttProperties.taskId.toString() === value[1] && data.level !== 0) {\n ids_1.push(data.ganttProperties.rowUniqueID);\n sharedRecords_1.push(data);\n }\n });\n for (var j = 0; j < sharedRecords_1.length; j++) {\n sharedRecords_1[j].ganttProperties.sharedTaskUniqueIds = ids_1;\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < this.parent.getTaskIds().length; i++) {\n _loop_2(i);\n }\n };\n TaskProcessor.prototype.prepareRecordCollection = function (data, level, parentItem) {\n var _this = this;\n var length = data.length;\n var _loop_3 = function (i) {\n var tempData = data[i];\n if (!isNullOrUndefined(this_3.parent.taskFields.segmentId)) {\n var segmentData = this_3.segmentCollection.\n filter(function (x) { return x.key === tempData[_this.parent.taskFields.id]; });\n if (segmentData.length > 0) {\n tempData[this_3.parent.taskFields.segments] = segmentData[0].items;\n }\n }\n var ganttData = this_3.createRecord(tempData, level, parentItem, true);\n if (!this_3.parent.enableValidation || !this_3.parent.autoCalculateDateScheduling) {\n this_3.updateTaskLeftWidth(ganttData);\n }\n ganttData.index = this_3.recordIndex++;\n this_3.parent.ids[ganttData.index] = ganttData.ganttProperties.rowUniqueID;\n this_3.parent.flatData.push(ganttData);\n this_3.parent.setTaskIds(ganttData);\n var childData = tempData[this_3.parent.taskFields.child] || (tempData['taskData'] && tempData['taskData'][this_3.parent.taskFields.child]);\n if (this_3.parent.viewType === 'ResourceView' && isNullOrUndefined(childData)\n && isNullOrUndefined(ganttData.parentItem) && ganttData.level === 0) {\n var ganttProp = ganttData.ganttProperties;\n var parentData = ganttData;\n this_3.parent.setRecordValue(ganttProp.isAutoSchedule ? 'startDate' : 'autoStartDate', null, parentData.ganttProperties, true);\n this_3.parent.setRecordValue(ganttProp.isAutoSchedule ? 'endDate' : 'autoEndDate', null, parentData.ganttProperties, true);\n var parentProgress = 0;\n var parentProp = parentData.ganttProperties;\n this_3.parent.setRecordValue('isMilestone', false, parentProp, true);\n if (parentProp.isAutoSchedule) {\n this_3.calculateDuration(parentData);\n }\n this_3.updateWorkWithDuration(parentData);\n var parentWork = parentProp.work;\n this_3.parent.setRecordValue('work', parentWork, parentProp, true);\n this_3.parent.setRecordValue('taskType', 'FixedDuration', parentProp, true);\n if (!isNullOrUndefined(this_3.parent.taskFields.type)) {\n this_3.updateMappingData(parentData, 'type');\n }\n this_3.parent.setRecordValue('progress', Math.floor(parentProgress), parentProp, true);\n this_3.parent.setRecordValue('totalProgress', 0, parentProp, true);\n this_3.parent.setRecordValue('totalDuration', 0, parentProp, true);\n if (!parentProp.isAutoSchedule) {\n this_3.parent.setRecordValue('autoDuration', this_3.calculateAutoDuration(parentProp), parentProp, true);\n this_3.updateAutoWidthLeft(parentData);\n }\n if (!this_3.parent.allowParentDependency) {\n this_3.resetDependency(parentData);\n }\n this_3.updateWidthLeft(parentData);\n this_3.updateTaskData(parentData);\n }\n if (!isNullOrUndefined(childData) && childData.length > 0) {\n this_3.prepareRecordCollection(childData, ganttData.level + 1, ganttData);\n }\n };\n var this_3 = this;\n for (var i = 0; i < length; i++) {\n _loop_3(i);\n }\n };\n /**\n * Method to update custom field values in gantt record\n *\n * @param {object} data .\n * @param {IGanttData} ganttRecord .\n * @returns {void} .\n */\n TaskProcessor.prototype.addCustomFieldValue = function (data, ganttRecord) {\n var columns = this.parent.ganttColumns;\n var length = columns.length;\n if (length) {\n for (var i = 0; i < length; i++) {\n var fieldName = ganttRecord[columns[i].field];\n if (fieldName === undefined) {\n this.parent.setRecordValue(columns[i].field, data[columns[i].field], ganttRecord);\n }\n }\n }\n };\n /**\n * To populate Gantt record\n *\n * @param {object} data .\n * @param {number} level .\n * @param {IGanttData} parentItem .\n * @param {boolean} isLoad .\n * @returns {IGanttData} .\n * @private\n */\n TaskProcessor.prototype.createRecord = function (data, level, parentItem, isLoad) {\n var taskSettings = this.parent.taskFields;\n var resourceFields = this.parent.resourceFields;\n var progress = data[taskSettings.progress];\n var id = null;\n var name = null;\n var notes = data[taskSettings.notes];\n progress = progress ? parseFloat(progress.toString()) ? parseFloat(progress.toString()) : 0 : 0;\n var predecessors = data[taskSettings.dependency];\n var baselineStartDate = this.getDateFromFormat(data[taskSettings.baselineStartDate], true);\n var baselineEndDate = this.getDateFromFormat(data[taskSettings.baselineEndDate], true);\n var ganttData = {};\n var ganttProperties = {};\n var autoSchedule = (this.parent.taskMode === 'Auto') ? true :\n (this.parent.taskMode === 'Manual') ? false :\n data[taskSettings.manual] === true ? false : true;\n this.parent.setRecordValue('ganttProperties', ganttProperties, ganttData);\n if (data['ganttProperties'] && data['ganttProperties'].predecessor && data['ganttProperties'].predecessor.length > 0 && this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed']) {\n this.parent.setRecordValue('predecessor', data['ganttProperties'].predecessor, ganttProperties, true);\n }\n if (!isNullOrUndefined(data[taskSettings.id])) {\n id = data[taskSettings.id];\n name = data[taskSettings.name];\n if (!this.parent.loadChildOnDemand && taskSettings.hasChildMapping && data['taskData']) {\n ganttData['taskData'] = data['taskData'];\n }\n else {\n if (data['taskData'] && data['ganttProperties']) {\n this.addTaskData(ganttData, data['taskData'], isLoad);\n }\n else {\n this.addTaskData(ganttData, data, isLoad);\n }\n }\n }\n else if (!isNullOrUndefined(data[resourceFields.id])) {\n id = data[resourceFields.id];\n if (isNullOrUndefined(data[resourceFields.name]) && data['resourceName'] === \"Unassigned Task\") {\n name = data['resourceName'];\n }\n else {\n name = data[resourceFields.name];\n }\n this.addTaskData(ganttData, data, false);\n }\n this.parent.setRecordValue('taskId', id, ganttProperties, true);\n this.parent.setRecordValue('taskName', name, ganttProperties, true);\n if (taskSettings.parentID) {\n this.parent.setRecordValue('parentId', data[taskSettings.parentID], ganttProperties, true);\n }\n this.addCustomFieldValue(data, ganttData);\n this.parent.setRecordValue('isAutoSchedule', autoSchedule, ganttProperties, true);\n if (!this.parent.undoRedoModule || (this.parent.undoRedoModule && !this.parent.undoRedoModule['isUndoRedoPerformed'])) {\n this.parent.setRecordValue('resourceInfo', this.setResourceInfo(data), ganttProperties, true);\n }\n else if (data['ganttProperties']) {\n this.parent.setRecordValue('resourceInfo', data['ganttProperties'].resourceInfo, ganttProperties, true);\n }\n this.parent.setRecordValue('isMilestone', false, ganttProperties, true);\n this.parent.setRecordValue('indicators', data[taskSettings.indicators], ganttProperties, true);\n this.updateResourceName(ganttData);\n this.calculateScheduledValues(ganttData, data, isLoad);\n this.parent.setRecordValue('baselineStartDate', this.checkBaselineStartDate(baselineStartDate), ganttProperties, true);\n // set default end time, if hour is 0\n if (baselineEndDate && baselineEndDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {\n this.setTime(this.parent.defaultEndTime, baselineEndDate);\n }\n if ((ganttProperties.baselineStartDate && baselineEndDate &&\n (ganttProperties.baselineStartDate.getTime() > baselineEndDate.getTime())) ||\n ((!isNullOrUndefined(ganttProperties.baselineStartDate) && !isNullOrUndefined(ganttProperties.startDate) && (ganttProperties.baselineStartDate.getTime() === ganttProperties.startDate.getTime()))\n && (!isNullOrUndefined(baselineEndDate) && !isNullOrUndefined(ganttProperties.endDate) && (baselineEndDate.toLocaleDateString() === ganttProperties.endDate.toLocaleDateString())) &&\n ganttProperties.isMilestone)) {\n baselineEndDate = ganttProperties.baselineStartDate;\n }\n this.parent.setRecordValue('baselineEndDate', this.checkBaselineEndDate(baselineEndDate, ganttProperties), ganttProperties, true);\n this.parent.setRecordValue('progress', progress, ganttProperties, true);\n this.parent.setRecordValue('totalProgress', progress, ganttProperties, true);\n if (data['ganttProperties'] && data['ganttProperties'].predecessorsName && this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed']) {\n this.parent.setRecordValue('predecessorsName', data['ganttProperties'].predecessorsName, ganttProperties, true);\n }\n else {\n this.parent.setRecordValue('predecessorsName', predecessors, ganttProperties, true);\n }\n this.parent.setRecordValue('notes', notes, ganttProperties, true);\n this.parent.setRecordValue('cssClass', data[taskSettings.cssClass], ganttProperties, true);\n this.parent.setRecordValue('parentItem', this.getCloneParent(parentItem), ganttData);\n if (!this.parent.loadChildOnDemand && taskSettings.hasChildMapping && this.parent.currentViewData.length > 0) {\n this.parent.setRecordValue('parentItem', ganttData.parentItem, this.parent.currentViewData[this.taskIds.indexOf(data[taskSettings.id].toString())]);\n }\n var parentUniqId = ganttData.parentItem ? ganttData.parentItem.uniqueID : null;\n this.parent.setRecordValue('parentUniqueID', parentUniqId, ganttData);\n if (this.parent.viewType === 'ResourceView' && !isNullOrUndefined(taskSettings.parentID)\n && !isNullOrUndefined(ganttData.parentItem)) {\n this.parent.setRecordValue('parentId', ganttData.parentItem.taskId, ganttProperties, true);\n }\n this.parent.setRecordValue('level', level, ganttData);\n if (data['ganttProperties'] && this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed']) {\n this.parent.setRecordValue('uniqueID', data['uniqueID'], ganttData);\n }\n else {\n if (!this.parent.loadChildOnDemand && taskSettings.hasChildMapping && data['uniqueID']) {\n this.parent.setRecordValue('uniqueID', data['uniqueID'], ganttData);\n }\n else {\n this.parent.setRecordValue('uniqueID', getUid(this.parent.element.id + '_data_'), ganttData);\n }\n }\n this.parent.setRecordValue('uniqueID', ganttData.uniqueID, ganttProperties, true);\n this.parent.setRecordValue('childRecords', [], ganttData);\n if (this.parent.dataSource instanceof Object && isCountRequired(this.parent) &&\n !isNullOrUndefined(taskSettings.child)) {\n this.parent.setRecordValue(taskSettings.child, [], ganttData);\n }\n if ((!isNullOrUndefined(data[taskSettings.child]) && data[taskSettings.child].length > 0) ||\n (data['taskData'] && data['taskData'][taskSettings.child] && data['taskData'][taskSettings.child].length > 0)) {\n this.parent.setRecordValue('hasChildRecords', true, ganttData);\n this.parent.setRecordValue('isMilestone', false, ganttProperties, true);\n if (!this.parent.allowParentDependency) {\n this.resetDependency(ganttData);\n }\n }\n else {\n if (!this.parent.loadChildOnDemand && taskSettings.hasChildMapping && ganttData.taskData[taskSettings.hasChildMapping]) {\n this.parent.setRecordValue('hasChildRecords', true, ganttData);\n }\n else {\n this.parent.setRecordValue('hasChildRecords', false, ganttData);\n }\n }\n if (ganttData.hasChildRecords) {\n this.parent.setRecordValue('autoStartDate', ganttData.ganttProperties.startDate, ganttProperties);\n this.parent.setRecordValue('autoEndDate', ganttData.ganttProperties.endDate, ganttProperties);\n this.parent.setRecordValue('autoDuration', ganttData.ganttProperties.duration, ganttProperties);\n }\n this.parent.setRecordValue('expanded', (ganttData.hasChildRecords && this.parent.collapseAllParentTasks) ? false : true, ganttData);\n this.updateExpandStateMappingValue(ganttData, data);\n if (!isLoad) {\n this.parent.setRecordValue('width', this.calculateWidth(ganttData), ganttProperties, true);\n this.parent.setRecordValue('left', this.calculateLeft(ganttProperties), ganttProperties, true);\n this.parent.setRecordValue('progressWidth', this.getProgressWidth(ganttProperties.width, progress), ganttProperties, true);\n if (ganttProperties.baselineEndDate && ganttProperties.baselineStartDate) {\n this.parent.setRecordValue('baselineLeft', this.calculateBaselineLeft(ganttProperties), ganttProperties, true);\n this.parent.setRecordValue('baselineWidth', this.calculateBaselineWidth(ganttProperties), ganttProperties, true);\n }\n }\n if (isNullOrUndefined(taskSettings.work)) {\n this.updateWorkWithDuration(ganttData);\n }\n if (!isNullOrUndefined(taskSettings.manual)) {\n this.parent.dataOperation.updateMappingData(ganttData, 'manual');\n }\n this.updateTaskData(ganttData);\n if (predecessors) {\n this.parent.predecessorsCollection.push(ganttData);\n }\n if (!isNullOrUndefined(parentItem)) {\n parentItem.childRecords.push(ganttData);\n if (this.parent.dataSource instanceof Object && isCountRequired(this.parent) &&\n !isNullOrUndefined(this.parent.taskFields.child)) {\n parentItem[this.parent.taskFields.child].push(ganttData.taskData);\n }\n }\n if (this.parent.viewType === 'ProjectView') {\n this.parent.setRecordValue('rowUniqueID', ganttProperties.taskId.toString(), ganttProperties, true);\n }\n else {\n var uniqueId = ganttData.uniqueID.replace(this.parent.element.id + '_data_', '');\n // if (this.parent.viewType === 'ResourceView' && typeof(ganttData.ganttProperties.taskId) === \"string\") {\n // uniqueId = ganttProperties.taskId.toString();\n // }\n this.parent.setRecordValue('rowUniqueID', uniqueId, ganttData);\n this.parent.setRecordValue('rowUniqueID', uniqueId, ganttProperties, true);\n this.parent.setRecordValue('sharedTaskUniqueIds', [], ganttProperties, true);\n }\n if (this.parent.allowUnscheduledTasks && ganttData.ganttProperties.startDate\n && (ganttData.ganttProperties.endDate || ganttData.ganttProperties.duration)) {\n this.parent.setRecordValue('segments', this.setSegmentsInfo(ganttData, true), ganttProperties, true);\n this.parent.dataOperation.updateMappingData(ganttData, 'segments');\n if (!isLoad) {\n this.updateWidthLeft(ganttData);\n }\n }\n return ganttData;\n };\n TaskProcessor.prototype.sortSegmentsData = function (segments, onLoad, ganttProp) {\n var _this = this;\n if (onLoad) {\n segments.sort(function (a, b) {\n var startDate = _this.parent.taskFields.startDate;\n return _this.getDateFromFormat(a[startDate]).getTime() - _this.getDateFromFormat(b[startDate]).getTime();\n });\n }\n else {\n segments.sort(function (a, b) {\n return a.startDate.getTime() - b.startDate.getTime();\n });\n }\n return segments;\n };\n TaskProcessor.prototype.setSegmentsInfo = function (data, onLoad) {\n var taskSettings = this.parent.taskFields;\n var ganttSegments = [];\n var segments;\n var sumOfDuration = 0;\n var remainingDuration = 0;\n var taskData = [];\n if (!isNullOrUndefined(this.parent.taskFields.segments)) {\n segments = onLoad ? data.taskData[this.parent.taskFields.segments] : data.ganttProperties.segments;\n if (!isNullOrUndefined(segments) && segments.length > 1) {\n this.sortSegmentsData(segments, onLoad, data.ganttProperties);\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var startDate = onLoad ? segment[taskSettings.startDate] : segment.startDate;\n var endDate = onLoad ? segment[taskSettings.endDate] : segment.endDate;\n var duration = onLoad ? segment[taskSettings.duration] : segment.duration;\n startDate = this.getDateFromFormat(startDate);\n startDate = this.checkStartDate(startDate, data.ganttProperties, false);\n if (!isNullOrUndefined(duration)) {\n endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);\n if (taskSettings.duration) {\n remainingDuration = data.ganttProperties.duration - sumOfDuration;\n if (remainingDuration <= 0) {\n continue;\n }\n duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&\n duration > remainingDuration ? remainingDuration : duration;\n endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);\n }\n else if (!taskSettings.duration && taskSettings.endDate) {\n endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() >=\n data.ganttProperties.endDate.getTime() && i == segments.length - 1 ? data.ganttProperties.endDate : endDate;\n duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()\n && endDate.getTime() <= data.ganttProperties.endDate.getTime()) {\n ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n continue;\n }\n }\n }\n else {\n endDate = this.getDateFromFormat(endDate);\n if (endDate && (isNullOrUndefined(duration) || String(duration) === '')) {\n if (endDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {\n this.setTime(this.parent.defaultEndTime, endDate);\n }\n }\n endDate = this.checkEndDate(endDate, data.ganttProperties, false);\n duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n if (taskSettings.duration) {\n remainingDuration = data.ganttProperties.duration - sumOfDuration - 1;\n if (remainingDuration <= 0) {\n continue;\n }\n duration = i === segments.length - 1 ? remainingDuration : remainingDuration > 0 &&\n duration > remainingDuration ? remainingDuration : duration;\n endDate = this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false);\n }\n else if (!taskSettings.duration && taskSettings.endDate) {\n endDate = (!isNullOrUndefined(data.ganttProperties.endDate)) && endDate.getTime() <\n data.ganttProperties.endDate.getTime() && i == segments.length - 1 ? data.ganttProperties.endDate : endDate;\n duration = this.getDuration(startDate, endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n if (ganttSegments.length > 0 && endDate.getTime() < startDate.getTime()\n && endDate.getTime() <= data.ganttProperties.endDate.getTime()) {\n ganttSegments[i - 1].duration = this.getDuration(ganttSegments[i - 1].startDate, data.ganttProperties.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n continue;\n }\n }\n }\n segment = {};\n if (!(startDate && endDate) || !(startDate && duration)) {\n break;\n }\n sumOfDuration += Number(duration);\n segment.startDate = startDate;\n segment.endDate = endDate;\n segment.duration = Number(duration);\n segment.width = 0;\n segment.left = 0;\n segment.segmentIndex = i;\n ganttSegments.push(segment);\n if (!isNullOrUndefined(ganttSegments[i - 1])) {\n var offsetDuration = this.getDuration(ganttSegments[i - 1].endDate, ganttSegments[i].startDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n segment.offsetDuration = offsetDuration;\n if (offsetDuration < 1) {\n segment.startDate = this.getEndDate(ganttSegments[i - 1].endDate, 1, data.ganttProperties.durationUnit, data.ganttProperties, false);\n segment.startDate = this.checkStartDate(segment.startDate, data.ganttProperties, false);\n segment.endDate = this.getEndDate(segment.startDate, segment.duration, data.ganttProperties.durationUnit, data.ganttProperties, false);\n segment.endDate = !taskSettings.duration && taskSettings.endDate\n && segment.endDate > data.ganttProperties.endDate ? data.ganttProperties.endDate : segment.endDate;\n segment.offsetDuration = 1;\n segment.duration = this.getDuration(segment.startDate, segment.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);\n }\n }\n else {\n segment.offsetDuration = 0;\n }\n taskData.push(this.setSegmentTaskData(segment, segments[i]));\n }\n this.parent.setRecordValue('duration', sumOfDuration, data.ganttProperties, true);\n if (!isNullOrUndefined(ganttSegments[ganttSegments.length - 1])) {\n this.parent.setRecordValue('endDate', ganttSegments[ganttSegments.length - 1].endDate, data.ganttProperties, true);\n }\n if (!isNullOrUndefined(taskSettings.endDate) && !isNullOrUndefined(ganttSegments[ganttSegments.length - 1])) {\n this.parent.setRecordValue(this.parent.taskFields.endDate, ganttSegments[ganttSegments.length - 1].endDate, data, true);\n }\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.segments, taskData, data);\n }\n }\n if (ganttSegments.length > 1) {\n this.parent.setRecordValue('segments', ganttSegments, data.ganttProperties, true);\n }\n else {\n ganttSegments = null;\n }\n return ganttSegments;\n };\n TaskProcessor.prototype.setSegmentTaskData = function (segments, segmenttaskData) {\n var taskSettings = this.parent.taskFields;\n var taskData = extend({}, {}, segmenttaskData, true);\n if (!isNullOrUndefined(taskSettings.startDate)) {\n taskData[this.parent.taskFields.startDate] = segments.startDate;\n }\n if (!isNullOrUndefined(taskSettings.endDate)) {\n taskData[this.parent.taskFields.endDate] = segments.endDate;\n }\n if (!isNullOrUndefined(taskSettings.duration)) {\n taskData[this.parent.taskFields.duration] = Number(segments.duration);\n }\n return taskData;\n };\n /**\n * Method to calculate work based on resource unit and duration.\n *\n * @param {IGanttData} ganttData .\n * @returns {void} .\n */\n TaskProcessor.prototype.updateWorkWithDuration = function (ganttData) {\n var resources = ganttData.ganttProperties.resourceInfo;\n var work = 0;\n if (!isNullOrUndefined(resources) && !ganttData.hasChildRecords) {\n var resourcesLength = resources.length;\n var index = void 0;\n var resourceUnit = void 0;\n var resourceOneDayWork = void 0;\n var actualOneDayWork = (this.parent.secondsPerDay) / 3600;\n var durationInDay = this.getDurationInDay(ganttData.ganttProperties.duration, ganttData.ganttProperties.durationUnit);\n for (index = 0; index < resourcesLength; index++) {\n resourceUnit = resources[index][this.parent.resourceFields.unit]; //in percentage\n resourceOneDayWork = resourceUnit > 0 ? (actualOneDayWork * resourceUnit) / 100 : actualOneDayWork; //in hours\n work += (resourceOneDayWork * durationInDay);\n }\n //Update work as per defined unit.\n if (ganttData.ganttProperties.workUnit === 'minute') {\n work = work * 60;\n }\n if (ganttData.ganttProperties.workUnit === 'day') {\n work = work / actualOneDayWork;\n }\n //To check the decimal places.\n if (work % 1 !== 0) {\n work = parseFloat(work.toFixed(2));\n }\n }\n if (ganttData.childRecords) {\n if (ganttData.childRecords.length > 0 && this.parent.isOnEdit) {\n var childCompletedWorks = 0;\n for (var i = 0; i < ganttData.childRecords.length; i++) {\n childCompletedWorks += ganttData.childRecords[i].ganttProperties.work;\n }\n work += childCompletedWorks;\n }\n }\n this.parent.setRecordValue('work', work, ganttData.ganttProperties, true);\n if (!isNullOrUndefined(this.parent.taskFields.work)) {\n this.parent.dataOperation.updateMappingData(ganttData, 'work');\n }\n };\n /**\n *\n * @param {IGanttData} parent .\n * @returns {IParent} .\n * @private\n */\n TaskProcessor.prototype.getCloneParent = function (parent) {\n if (!isNullOrUndefined(parent)) {\n var cloneParent = {};\n cloneParent.uniqueID = parent.uniqueID;\n cloneParent.expanded = parent.expanded;\n cloneParent.level = parent.level;\n cloneParent.index = parent.index;\n cloneParent.taskId = parent.ganttProperties.rowUniqueID;\n return cloneParent;\n }\n else {\n return null;\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.reUpdateResources = function () {\n if (this.parent.flatData.length > 0) {\n var data = void 0;\n var ganttProperties = void 0;\n var ganttData = void 0;\n for (var index = 0; index < this.parent.flatData.length; index++) {\n data = this.parent.flatData[index].taskData;\n ganttProperties = this.parent.flatData[index].ganttProperties;\n ganttData = this.parent.flatData[index];\n this.parent.setRecordValue('resourceInfo', this.setResourceInfo(data), ganttProperties, true);\n this.updateResourceName(ganttData);\n }\n }\n };\n TaskProcessor.prototype.addTaskData = function (ganttData, data, isLoad) {\n var _this = this;\n var taskSettings = this.parent.taskFields;\n var dataManager = this.parent.dataSource;\n if (isLoad) {\n if (taskSettings.parentID || (dataManager instanceof DataManager &&\n dataManager.dataSource.json && dataManager.dataSource.offline)) {\n if (taskSettings.parentID) {\n var id = data[taskSettings.id];\n var index = this.taskIds.indexOf(id.toString());\n var tempData_1 = (index > -1) ? this.dataArray[index] : {};\n if (!isNullOrUndefined(this.parent.taskFields.segmentId)) {\n var segmentDataCollection = this.segmentCollection.\n filter(function (x) { return x.key === tempData_1[_this.parent.taskFields.id]; });\n if (segmentDataCollection.length > 0) {\n tempData_1[this.parent.taskFields.segments] = segmentDataCollection[0].items;\n }\n }\n this.parent.setRecordValue('taskData', tempData_1, ganttData);\n }\n else {\n this.parent.setRecordValue('taskData', data, ganttData);\n }\n }\n else {\n this.parent.setRecordValue('taskData', data, ganttData);\n }\n }\n else {\n this.parent.setRecordValue('taskData', data, ganttData);\n }\n };\n TaskProcessor.prototype.updateExpandStateMappingValue = function (ganttData, data) {\n var expandStateMapping = this.parent.taskFields.expandState;\n var mappingValue = data[expandStateMapping];\n var updatableValue;\n if (expandStateMapping && ganttData.hasChildRecords) {\n if (!isNullOrUndefined(mappingValue)) {\n updatableValue = mappingValue.toString() === 'true' ? true : false;\n }\n else if (isNullOrUndefined(mappingValue) && !this.parent.collapseAllParentTasks) {\n updatableValue = true;\n }\n else if (isNullOrUndefined(mappingValue) && this.parent.collapseAllParentTasks) {\n updatableValue = false;\n }\n this.parent.setRecordValue('taskData.' + expandStateMapping, updatableValue, ganttData);\n this.parent.setRecordValue(expandStateMapping, updatableValue, ganttData);\n this.parent.setRecordValue('expanded', updatableValue, ganttData);\n }\n };\n /**\n * @param {IGanttData} ganttData .\n * @param {object} data .\n * @returns {void} .\n */\n TaskProcessor.prototype.setValidatedDates = function (ganttData, data) {\n var ganttProperties = ganttData.ganttProperties;\n var taskSettings = this.parent.taskFields;\n var duration = data[taskSettings.duration];\n var startDate = this.getDateFromFormat(data[taskSettings.startDate], true);\n var endDate = this.getDateFromFormat(data[taskSettings.endDate], true);\n duration = isNullOrUndefined(duration) || duration === '' ? null : duration;\n this.parent.setRecordValue('startDate', new Date(startDate.getTime()), ganttProperties, true);\n if (!isNullOrUndefined(duration) && duration !== '') {\n this.updateDurationValue(duration, ganttProperties);\n }\n else {\n this.calculateDuration(ganttData);\n }\n this.parent.setRecordValue('endDate', new Date((endDate.getTime())), ganttProperties, true);\n };\n /**\n *\n * @param {IGanttData} ganttData .\n * @param {object} data .\n * @param {boolean} isLoad .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.calculateScheduledValues = function (ganttData, data, isLoad) {\n var taskSettings = this.parent.taskFields;\n var ganttProperties = ganttData.ganttProperties;\n var duration = data[taskSettings.duration];\n duration = isNullOrUndefined(duration) || duration === '' ? null : duration;\n var startDate;\n var endDate;\n if (ganttProperties.startDate && ganttProperties.endDate) {\n startDate = this.getDateFromFormat(ganttProperties.startDate, true);\n endDate = this.getDateFromFormat(ganttProperties.endDate, true);\n }\n else {\n startDate = this.getDateFromFormat(data[taskSettings.startDate], true);\n endDate = this.getDateFromFormat(data[taskSettings.endDate], true);\n }\n var segments = taskSettings.segments ? (data[taskSettings.segments] ||\n ganttData.taskData[taskSettings.segments]) : null;\n var isMileStone = taskSettings.milestone ? data[taskSettings.milestone] ? true : false : false;\n var durationMapping = data[taskSettings.durationUnit] ? data[taskSettings.durationUnit] : '';\n this.parent.setRecordValue('durationUnit', this.validateDurationUnitMapping(durationMapping), ganttProperties, true);\n var work = !isNullOrUndefined(data[taskSettings.work]) ? parseFloat(data[taskSettings.work]) : 0;\n this.parent.setRecordValue('workUnit', this.validateWorkUnitMapping(this.parent.workUnit), ganttProperties, true);\n var taskTypeMapping = data[taskSettings.type] ? data[taskSettings.type] : '';\n var tType = this.validateTaskTypeMapping(taskTypeMapping);\n this.parent.setRecordValue('taskType', tType, ganttProperties, true);\n if (isLoad && !this.parent.enableValidation && startDate && endDate) {\n this.setValidatedDates(ganttData, data);\n }\n else {\n if (!endDate && !startDate && (isNullOrUndefined(duration) || duration === '')) {\n if (this.parent.allowUnscheduledTasks) {\n return;\n }\n else {\n this.parent.setRecordValue('duration', 1, ganttProperties, true);\n this.parent.setRecordValue('startDate', this.getProjectStartDate(ganttProperties, isLoad), ganttProperties, true);\n this.calculateEndDate(ganttData);\n }\n }\n else if (startDate) {\n this.calculateDateFromStartDate(startDate, endDate, duration, ganttData, isLoad);\n }\n else if (endDate) {\n this.calculateDateFromEndDate(endDate, duration, ganttData);\n }\n else if (!isNullOrUndefined(duration) && duration !== '') {\n this.updateDurationValue(duration, ganttProperties);\n if (this.parent.allowUnscheduledTasks) {\n this.parent.setRecordValue('startDate', null, ganttProperties, true);\n this.parent.setRecordValue('endDate', null, ganttProperties, true);\n }\n else {\n this.parent.setRecordValue('startDate', this.getProjectStartDate(ganttProperties, isLoad), ganttProperties, true);\n this.calculateEndDate(ganttData);\n }\n }\n }\n if (!this.parent.autoCalculateDateScheduling) {\n if (!isNullOrUndefined(ganttData.ganttProperties.startDate)) {\n ganttData[this.parent.taskFields.startDate] = ganttData.ganttProperties.startDate;\n ganttData.taskData[this.parent.taskFields.startDate] = ganttData.ganttProperties.startDate;\n }\n if (!isNullOrUndefined(ganttData.ganttProperties.endDate)) {\n ganttData[this.parent.taskFields.endDate] = ganttData.ganttProperties.endDate;\n ganttData.taskData[this.parent.taskFields.endDate] = ganttData.ganttProperties.endDate;\n }\n }\n if (!isNullOrUndefined(segments)) {\n this.parent.setRecordValue('segments', this.setSegmentsInfo(ganttData, true), ganttProperties, true);\n }\n if (ganttProperties.duration === 0) {\n this.parent.setRecordValue('isMilestone', true, ganttProperties, true);\n this.parent.setRecordValue('endDate', ganttProperties.startDate, ganttProperties, true);\n }\n if (!isNullOrUndefined(isMileStone) && isMileStone) {\n this.parent.setRecordValue('duration', 0, ganttProperties, true);\n this.parent.setRecordValue('isMilestone', true, ganttProperties, true);\n this.parent.setRecordValue('endDate', ganttProperties.startDate, ganttProperties, true);\n }\n if (!isNullOrUndefined(taskSettings.work)) {\n this.parent.setRecordValue('durationUnit', this.parent.durationUnit, ganttProperties, true);\n if (isNaN(work) || isNullOrUndefined(work)) {\n this.parent.setRecordValue('work', 0, ganttProperties, true);\n this.parent.setRecordValue('duration', 0, ganttProperties, true);\n this.parent.setRecordValue('isMilestone', true, ganttProperties, true);\n this.parent.setRecordValue('endDate', ganttProperties.startDate, ganttProperties, true);\n }\n else {\n this.parent.setRecordValue('work', work, ganttProperties, true);\n switch (tType) {\n case 'FixedDuration':\n this.updateWorkWithDuration(ganttData);\n break;\n case 'FixedWork':\n this.updateUnitWithWork(ganttData);\n break;\n case 'FixedUnit':\n this.updateDurationWithWork(ganttData);\n break;\n }\n if (!isNullOrUndefined(taskSettings.type)) {\n this.parent.dataOperation.updateMappingData(ganttData, 'type');\n }\n if (ganttProperties.duration === 0) {\n this.parent.setRecordValue('isMilestone', true, ganttProperties, true);\n this.parent.setRecordValue('endDate', ganttProperties.startDate, ganttProperties, true);\n }\n else if (!isNullOrUndefined(ganttProperties.startDate) && !isNullOrUndefined(ganttProperties.duration)) {\n this.parent.setRecordValue('isMilestone', false, ganttProperties, true);\n this.calculateEndDate(ganttData);\n }\n }\n this.parent.dataOperation.updateMappingData(ganttData, 'work');\n }\n else if (taskSettings.type && ganttProperties.taskType) {\n this.parent.dataOperation.updateMappingData(ganttData, 'type');\n }\n };\n /**\n * Method to update duration with work value.\n *\n * @param {IGanttData} ganttData .\n * @returns {void} .\n */\n TaskProcessor.prototype.updateDurationWithWork = function (ganttData) {\n var ganttProperties = ganttData.ganttProperties;\n var resources = ganttProperties.resourceInfo;\n if (!isNullOrUndefined(resources)) {\n var resourcesLength = !isNullOrUndefined(resources) ? resources.length : 0;\n var totalResourceOneDayWork = 0;\n var actualOneDayWork = (this.parent.secondsPerDay) / 3600;\n var updatedDuration = 0;\n var resourceUnit = void 0;\n var index = void 0;\n for (index = 0; index < resourcesLength; index++) {\n resourceUnit = resources[index][this.parent.resourceFields.unit]; //in percentage\n totalResourceOneDayWork += (resourceUnit > 0 ? (actualOneDayWork * resourceUnit) / 100 : actualOneDayWork); //in hours\n }\n var totalHours = this.getWorkInHour(ganttProperties.work, ganttProperties.workUnit);\n if (resourcesLength > 0) {\n updatedDuration += (totalHours / totalResourceOneDayWork);\n }\n //Update duration as per defined unit.\n if (ganttProperties.durationUnit === 'minute') {\n updatedDuration = updatedDuration * actualOneDayWork * 60;\n }\n if (ganttProperties.durationUnit === 'hour') {\n updatedDuration = updatedDuration * actualOneDayWork;\n }\n //To check the decimal places.\n if (updatedDuration % 1 !== 0) {\n updatedDuration = parseFloat(updatedDuration.toFixed(2));\n }\n if (!isNullOrUndefined(ganttProperties.duration)) {\n this.parent.setRecordValue('duration', updatedDuration, ganttProperties, true);\n }\n this.parent.dataOperation.updateMappingData(ganttData, 'duration');\n }\n };\n /**\n * Update units of resources with respect to duration and work of a task.\n *\n * @param {IGanttData} ganttData .\n * @returns {void} .\n */\n TaskProcessor.prototype.updateUnitWithWork = function (ganttData) {\n var ganttProperties = ganttData.ganttProperties;\n var resources = ganttProperties.resourceInfo;\n var resourcesLength = !isNullOrUndefined(resources) ? resources.length : 0;\n var actualOneDayWork = (this.parent.secondsPerDay) / 3600;\n if (resourcesLength === 0) {\n return;\n }\n var durationInDay = this.getDurationInDay(ganttData.ganttProperties.duration, ganttData.ganttProperties.durationUnit);\n var totalHours = this.getWorkInHour(ganttProperties.work, ganttProperties.workUnit);\n var totalUnitInPercentage = durationInDay > 0 ? (totalHours / (durationInDay * actualOneDayWork)) * 100 : 0;\n var individualUnit = totalUnitInPercentage > 0 ? totalUnitInPercentage / resourcesLength : 100;\n //To check the decimal places.\n if (individualUnit % 1 !== 0) {\n individualUnit = parseFloat(individualUnit.toFixed(2));\n }\n for (var index = 0; index < resourcesLength; index++) {\n resources[index][this.parent.resourceFields.unit] = individualUnit;\n }\n //To update the unit value in data source\n this.updateResourceName(ganttData);\n };\n TaskProcessor.prototype.calculateDateFromEndDate = function (endDate, duration, ganttData) {\n var ganttProperties = ganttData.ganttProperties;\n if (endDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {\n this.setTime(this.parent.defaultEndTime, endDate);\n }\n var validateAsMilestone = (parseInt(duration, 10) === 0) ? true : null;\n this.parent.setRecordValue('endDate', this.checkEndDate(endDate, ganttData.ganttProperties, validateAsMilestone), ganttProperties, true);\n if (isNullOrUndefined(duration) || duration === '') {\n if (this.parent.allowUnscheduledTasks) {\n this.parent.setRecordValue('startDate', null, ganttProperties, true);\n this.parent.setRecordValue('duration', null, ganttProperties, true);\n }\n else {\n this.parent.setRecordValue('duration', 1, ganttProperties, true);\n this.parent.setRecordValue('startDate', this.getStartDate(ganttProperties.endDate, ganttProperties.duration, ganttProperties.durationUnit, ganttProperties), ganttProperties, true);\n }\n }\n else if (!isNullOrUndefined(duration) && duration !== '') {\n this.updateDurationValue(duration, ganttProperties);\n this.parent.setRecordValue('startDate', this.getStartDate(ganttProperties.endDate, ganttProperties.duration, ganttProperties.durationUnit, ganttProperties), ganttProperties, true);\n }\n };\n TaskProcessor.prototype.calculateDateFromStartDate = function (startDate, endDate, duration, ganttData, isLoad) {\n var ganttProperties = ganttData.ganttProperties;\n var validateAsMilestone = (parseInt(duration, 10) === 0 || ((startDate && endDate) &&\n (new Date(startDate.getTime()) === new Date(endDate.getTime())))) ? true : null;\n this.parent.setRecordValue('startDate', this.checkStartDate(startDate, ganttProperties, validateAsMilestone, isLoad), ganttProperties, true);\n if (this.parent.isTreeGridRendered && ganttData) {\n this.updateTaskData(ganttData);\n }\n if (!endDate && (isNullOrUndefined(duration) || duration === '')) {\n if (this.parent.allowUnscheduledTasks) {\n this.parent.setRecordValue('endDate', null, ganttProperties, true);\n this.parent.setRecordValue('duration', null, ganttProperties, true);\n }\n else {\n this.parent.setRecordValue('duration', 1, ganttProperties, true);\n this.calculateEndDate(ganttData);\n }\n }\n else if (!isNullOrUndefined(duration) && !endDate) {\n this.updateDurationValue(duration, ganttProperties);\n this.calculateEndDate(ganttData);\n }\n else if (endDate && (isNullOrUndefined(duration) || duration === '')) {\n if (endDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {\n this.setTime(this.parent.defaultEndTime, endDate);\n }\n this.parent.setRecordValue('endDate', this.checkEndDate(endDate, ganttData.ganttProperties), ganttProperties, true);\n if (this.compareDates(ganttProperties.startDate, ganttProperties.endDate) === 1) {\n this.parent.setRecordValue('endDate', ganttProperties.startDate, ganttProperties, true);\n this.parent.setRecordValue('isMilestone', true, ganttProperties, true);\n this.parent.setRecordValue('duration', 0, ganttProperties, true);\n }\n else {\n this.calculateDuration(ganttData);\n }\n }\n else {\n this.updateDurationValue(duration, ganttProperties);\n if (this.parent.autoCalculateDateScheduling) {\n this.calculateEndDate(ganttData);\n }\n else {\n this.parent.setRecordValue('endDate', endDate, ganttProperties, true);\n }\n }\n };\n /**\n *\n * @param {number} parentWidth .\n * @param {number} percent .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.getProgressWidth = function (parentWidth, percent) {\n return (parentWidth * percent) / 100;\n };\n /**\n *\n * @param {IGanttData} ganttData .\n * @param {boolean} isAuto .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateWidth = function (ganttData, isAuto) {\n var ganttProp = ganttData.ganttProperties;\n var sDate = isAuto ? ganttProp.autoStartDate : ganttProp.startDate;\n var eDate = isAuto ? ganttProp.autoEndDate : ganttProp.endDate;\n var unscheduledTaskWidth = 3;\n if (isNullOrUndefined(sDate) && isNullOrUndefined(eDate)) {\n sDate = this.getValidStartDate(ganttProp, isAuto);\n eDate = this.getValidEndDate(ganttProp, isAuto);\n }\n if (isNullOrUndefined(sDate) || isNullOrUndefined(eDate)) {\n return unscheduledTaskWidth;\n }\n else if (ganttProp.isMilestone && (!ganttData.hasChildRecords || ganttProp.isAutoSchedule)) {\n //let taskBarHeight: number = this.getTaskbarHeight();\n return 0;\n }\n else {\n return this.getTaskWidth(sDate, eDate, ganttProp);\n }\n };\n TaskProcessor.prototype.getTaskbarHeight = function () {\n var rowHeight = this.parent.rowHeight;\n var taskBarHeight = this.parent.taskbarHeight;\n if (taskBarHeight < rowHeight) {\n return taskBarHeight;\n }\n else {\n return rowHeight;\n }\n };\n /**\n * Method to calculate left\n *\n * @param {ITaskData} ganttProp .\n * @param {boolean} isAuto .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateLeft = function (ganttProp, isAuto) {\n var sDate = null;\n var left = -300;\n var startDate = isAuto ? ganttProp.autoStartDate : ganttProp.startDate;\n var endDate = isAuto ? ganttProp.autoEndDate : ganttProp.endDate;\n var duration = isAuto ? ganttProp.autoDuration : ganttProp.duration; // eslint-disable-line\n var milestone = ganttProp.isMilestone;\n if (startDate) {\n sDate = new Date(startDate.getTime());\n }\n else if (endDate) {\n sDate = new Date(endDate.getTime());\n milestone = isNullOrUndefined(startDate) && this.parent.allowUnscheduledTasks ? false : true;\n }\n else {\n sDate = this.getValidStartDate(ganttProp);\n }\n if (!isNullOrUndefined(sDate)) {\n left = this.getTaskLeft(sDate, milestone);\n }\n return left;\n };\n /**\n * calculate the left position of the auto scheduled taskbar\n *\n * @param {ITaskData} ganttProperties - Defines the gantt data.\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateAutoLeft = function (ganttProperties) {\n return this.getTaskLeft(ganttProperties.autoStartDate, ganttProperties.isMilestone);\n };\n /**\n * To calculate duration of Gantt record with auto scheduled start date and auto scheduled end date\n *\n * @param {ITaskData} ganttProperties - Defines the gantt data.\n * @returns {number} .\n */\n TaskProcessor.prototype.calculateAutoDuration = function (ganttProperties) {\n return this.getDuration(ganttProperties.autoStartDate, ganttProperties.autoEndDate, ganttProperties.durationUnit, false, ganttProperties.isMilestone);\n };\n /**\n * calculate the with between auto scheduled start date and auto scheduled end date\n *\n * @param {ITaskData} ganttProperties - Defines the gantt data.\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateAutoWidth = function (ganttProperties) {\n return this.getTaskWidth(ganttProperties.autoStartDate, ganttProperties.autoEndDate);\n };\n /**\n * calculate the left margin of the baseline element\n *\n * @param {ITaskData} ganttProperties .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateBaselineLeft = function (ganttProperties) {\n var baselineStartDate = this.getDateFromFormat(ganttProperties.baselineStartDate);\n var baselineEndDate = this.getDateFromFormat(ganttProperties.baselineEndDate);\n if (baselineStartDate && baselineEndDate) {\n return (this.getTaskLeft(baselineStartDate, ganttProperties.isMilestone));\n }\n else {\n return 0;\n }\n };\n /**\n * calculate the width between baseline start date and baseline end date.\n *\n * @param {ITaskData} ganttProperties .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.calculateBaselineWidth = function (ganttProperties) {\n var baselineStartDate = this.getDateFromFormat(ganttProperties.baselineStartDate);\n var baselineEndDate = this.getDateFromFormat(ganttProperties.baselineEndDate);\n if (baselineStartDate && baselineEndDate && (baselineStartDate.getTime() !== baselineEndDate.getTime())) {\n return (this.getTaskWidth(baselineStartDate, baselineEndDate));\n }\n else {\n return 0;\n }\n };\n /**\n * To get tasks width value\n *\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.getTaskWidth = function (startDate, endDate, ganttData) {\n var sDate = new Date(startDate.getTime());\n var eDate = new Date(endDate.getTime());\n var tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :\n this.parent.timelineModule.topTier;\n var isValid = false;\n var modifiedsDate = new Date(startDate.getTime());\n var hour = 0;\n if (!isNullOrUndefined(ganttData) && ganttData.durationUnit == 'hour') {\n modifiedsDate = new Date(modifiedsDate.getTime() + ganttData.duration * 60 * 60 * 1000);\n }\n if (!isNullOrUndefined(ganttData) && (ganttData.durationUnit == 'minute') || !isNullOrUndefined(ganttData) && ganttData.durationUnit == \"day\" && ganttData.duration < 1) {\n modifiedsDate = new Date(modifiedsDate.getTime() + ganttData.duration * 60 * 1000);\n }\n for (var i = 0; i < this.parent.dayWorkingTime.length; i++) {\n hour = hour + this.parent.dayWorkingTime[i].to - this.parent.dayWorkingTime[i].from;\n }\n var dateDiff = modifiedsDate.getTime() - sDate.getTime();\n if (!isNullOrUndefined(ganttData) && (ganttData.durationUnit == 'minute' && ganttData.duration < (hour * 60)) || !isNullOrUndefined(ganttData) && ganttData.durationUnit == \"day\" && ganttData.duration < 1) {\n if (tierMode === 'Day') {\n if ((Math.floor((dateDiff / (1000 * 60 * 60)) % 24) >= hour || dateDiff === 0)) {\n isValid = true;\n }\n if (this.getSecondsInDecimal(sDate) === this.parent.defaultStartTime && isValid) {\n sDate.setHours(0, 0, 0, 0);\n }\n if (this.getSecondsInDecimal(eDate) === this.parent.defaultEndTime && isValid) {\n eDate.setHours(24);\n }\n if (this.getSecondsInDecimal(eDate) === this.parent.defaultStartTime) {\n eDate.setHours(0, 0, 0, 0);\n }\n }\n else {\n isValid = true;\n }\n if ((sDate).getTime() === (eDate).getTime()) {\n return (this.parent.perDayWidth);\n }\n else {\n if (isValid) {\n return ((this.getTimeDifference(sDate, eDate, true) / (1000 * 60 * 60 * 24)) * this.parent.perDayWidth);\n }\n else {\n if (ganttData.durationUnit === \"day\" && ganttData.duration < 1 && isNullOrUndefined(this.parent.taskFields.duration)) {\n return (ganttData.duration * this.parent.perDayWidth);\n }\n else {\n return ((this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60 * hour)) * this.parent.perDayWidth);\n }\n }\n }\n }\n else {\n if (tierMode === 'Day') {\n if (this.getSecondsInDecimal(sDate) === this.parent.defaultStartTime) {\n sDate.setHours(0, 0, 0, 0);\n }\n if (this.getSecondsInDecimal(eDate) === this.parent.defaultEndTime) {\n eDate.setHours(24);\n eDate.setHours(0, 0, 0, 0);\n }\n if (this.getSecondsInDecimal(eDate) === this.parent.defaultStartTime) {\n eDate.setHours(0, 0, 0, 0);\n }\n }\n if ((sDate).getTime() === (eDate).getTime()) {\n return (this.parent.perDayWidth);\n }\n else {\n return ((this.getTimeDifference(sDate, eDate) / (1000 * 60 * 60 * 24)) * this.parent.perDayWidth);\n }\n }\n };\n /**\n * Get task left value\n *\n * @param {Date} startDate .\n * @param {boolean} isMilestone .\n * @returns {number} .\n * @private\n */\n TaskProcessor.prototype.getTaskLeft = function (startDate, isMilestone, isFromTimelineVirtulization) {\n var date = new Date(startDate.getTime());\n var tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :\n this.parent.timelineModule.topTier;\n if (tierMode === 'Day') {\n if (this.getSecondsInDecimal(date) === this.parent.defaultStartTime) {\n date.setHours(0, 0, 0, 0);\n }\n else if (isMilestone && this.getSecondsInDecimal(date) === this.parent.defaultEndTime) {\n date.setHours(24);\n }\n else if (this.getSecondsInDecimal(date) === this.parent.defaultEndTime && this.parent.allowUnscheduledTasks) {\n date.setHours(22);\n }\n }\n var leftValueForStartDate;\n var isValid = true;\n if ((this.parent.editModule && ((this.parent.editModule.taskbarEditModule && this.parent.editModule.taskbarEditModule.taskBarEditAction) || (this.parent.editModule.dialogModule && this.parent.editModule.dialogModule['isEdit']) ||\n (this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit) ||\n this.parent.ganttChartModule.scrollObject['isSetScrollLeft'])) && !isFromTimelineVirtulization) {\n isValid = false;\n }\n if (this.parent.enableTimelineVirtualization && isValid && !this.parent.timelineModule['performedTimeSpanAction']) {\n leftValueForStartDate = (this.parent.enableTimelineVirtualization && this.parent.ganttChartModule.scrollObject.element.scrollLeft != 0)\n ? this.parent.ganttChartModule.scrollObject.getTimelineLeft() : null;\n }\n var timelineStartDate = (this.parent.enableTimelineVirtualization && !isNullOrUndefined(leftValueForStartDate))\n ? new Date((this.parent.timelineModule['dateByLeftValue'](leftValueForStartDate)).toString()) : new Date(this.parent.timelineModule.timelineStartDate);\n if (timelineStartDate) {\n var leftValue = (date.getTime() - timelineStartDate.getTime()) / (1000 * 60 * 60 * 24) * this.parent.perDayWidth;\n if (this.parent.isInDst(timelineStartDate) && !this.parent.isInDst(startDate) && (this.parent.timelineModule.topTier == 'Hour' || this.parent.timelineModule.bottomTier == 'Hour')) {\n leftValue = leftValue - this.parent.timelineSettings.timelineUnitSize;\n }\n return leftValue;\n }\n else {\n return 0;\n }\n };\n TaskProcessor.prototype.getSplitTaskWidth = function (sDate, duration, data) {\n var startDate = new Date(sDate.getTime());\n var endDate = new Date((this.getEndDate(startDate, duration, data.ganttProperties.durationUnit, data.ganttProperties, false).getTime()));\n var tierViewMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :\n this.parent.timelineModule.topTier;\n if (tierViewMode === 'Day') {\n if (this.getSecondsInDecimal(startDate) === this.parent.defaultStartTime) {\n startDate.setHours(0, 0, 0, 0);\n }\n if (this.getSecondsInDecimal(endDate) === this.parent.defaultEndTime) {\n endDate.setHours(24);\n }\n if (this.getSecondsInDecimal(endDate) === this.parent.defaultStartTime) {\n endDate.setHours(0, 0, 0, 0);\n }\n }\n return ((this.getTimeDifference(startDate, endDate) / (1000 * 60 * 60 * 24)) * this.parent.perDayWidth);\n };\n TaskProcessor.prototype.getSplitTaskLeft = function (sDate, segmentTaskStartDate) {\n var stDate = new Date(sDate.getTime());\n var tierViewMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :\n this.parent.timelineModule.topTier;\n if (tierViewMode === 'Day') {\n if (this.getSecondsInDecimal(stDate) === this.parent.defaultStartTime) {\n stDate.setHours(0, 0, 0, 0);\n }\n if (this.getSecondsInDecimal(segmentTaskStartDate) === this.parent.defaultStartTime) {\n segmentTaskStartDate.setHours(0, 0, 0, 0);\n }\n }\n if (segmentTaskStartDate) {\n return (stDate.getTime() - segmentTaskStartDate.getTime()) / (1000 * 60 * 60 * 24) * this.parent.perDayWidth;\n }\n else {\n return 0;\n }\n };\n /**\n *\n * @param {IGanttData} ganttData .\n * @param {string} fieldName .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateMappingData = function (ganttData, fieldName) {\n var columnMapping = this.parent.columnMapping;\n var ganttProp = ganttData.ganttProperties;\n if (isNullOrUndefined(columnMapping[fieldName]) && fieldName !== 'taskType' && fieldName !== 'segments') {\n return;\n }\n if (fieldName === 'predecessorName') {\n //\n }\n else if (fieldName === 'resourceInfo') {\n var resourceData = ganttProp.resourceInfo;\n var resourceSettings = this.parent.resourceFields;\n // eslint-disable-next-line\n var resourcesId = [];\n var resourcesName = [];\n if (!isNullOrUndefined(resourceData)) {\n for (var i = 0; i < resourceData.length; i++) {\n resourcesId.push(resourceData[i][resourceSettings.id]);\n var resName = resourceData[i][resourceSettings.name];\n var resourceUnit = resourceData[i][resourceSettings.unit];\n if (resourceUnit !== 100) {\n resName += '[' + resourceUnit + '%' + ']';\n }\n if (resName) {\n resourcesName.push(resName);\n }\n }\n }\n this.parent.setRecordValue('resourceNames', resourcesName.join(','), ganttProp, true);\n if (this.isResourceString) {\n ganttData.taskData[this.parent.taskFields.resourceInfo] = ganttData.taskData[this.parent.taskFields.resourceInfo][0][resourceSettings.name];\n this.updateTaskDataResource(ganttData);\n }\n else {\n this.updateTaskDataResource(ganttData);\n }\n this.parent.setRecordValue(columnMapping[fieldName], resourcesName.join(','), ganttData);\n }\n else if (fieldName === 'startDate' || fieldName === 'endDate') {\n this.setRecordDate(ganttData, ganttProp[fieldName], columnMapping[fieldName]);\n }\n else if (fieldName === 'duration') {\n this.setRecordDuration(ganttData, columnMapping[fieldName]);\n }\n else if (fieldName === 'work') {\n this.parent.setRecordValue('taskData.' + columnMapping[fieldName], this.getWorkString(ganttProp.work, ganttProp.workUnit), ganttData);\n this.parent.setRecordValue(columnMapping[fieldName], ganttProp[fieldName], ganttData);\n }\n else if (fieldName === 'type') {\n this.parent.setRecordValue('taskData.' + columnMapping[fieldName], ganttProp[fieldName], ganttData);\n this.parent.setRecordValue(columnMapping[fieldName], ganttProp[fieldName], ganttData);\n }\n else if (fieldName === 'manual') {\n this.parent.setRecordValue('taskData.' + columnMapping[fieldName], !ganttProp.isAutoSchedule, ganttData);\n this.parent.setRecordValue(columnMapping[fieldName], !ganttProp.isAutoSchedule, ganttData);\n }\n else if (fieldName === 'segments') {\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.segments, this.segmentTaskData(ganttData), ganttData);\n }\n else {\n this.parent.setRecordValue('taskData.' + columnMapping[fieldName], ganttProp[fieldName], ganttData);\n this.parent.setRecordValue(columnMapping[fieldName], ganttProp[fieldName], ganttData);\n }\n };\n TaskProcessor.prototype.segmentTaskData = function (data) {\n var segments = data.ganttProperties.segments;\n var taskSettings = this.parent.taskFields;\n if (isNullOrUndefined(segments)) {\n return null;\n }\n var taskData = extend([], [], data.taskData[taskSettings.segments], true);\n for (var i = 0; i < segments.length; i++) {\n if (this.parent.isEdit || (this.parent.editModule && this.parent.editModule.dialogModule &&\n getValue('isEdit', this.parent.editModule.dialogModule)) || (this.parent.contextMenuModule && getValue('isEdit', this.parent.contextMenuModule))) {\n taskData[i] = {};\n }\n if (!isNullOrUndefined(taskSettings.startDate)) {\n taskData[i][this.parent.taskFields.startDate] = segments[i].startDate;\n }\n if (!isNullOrUndefined(taskSettings.endDate)) {\n taskData[i][this.parent.taskFields.endDate] = segments[i].endDate;\n }\n if (!isNullOrUndefined(taskSettings.duration)) {\n taskData[i][this.parent.taskFields.duration] = Number(segments[i].duration);\n }\n }\n return taskData;\n };\n /**\n * Method to update the task data resource values\n *\n * @param {IGanttData} ganttData .\n * @returns {void} .\n */\n TaskProcessor.prototype.updateTaskDataResource = function (ganttData) {\n var resourceData = ganttData.ganttProperties.resourceInfo;\n var preTaskResources = ganttData.taskData[this.parent.taskFields.resourceInfo];\n var resourceSettings = this.parent.resourceFields;\n if (isNullOrUndefined(preTaskResources)) {\n ganttData.taskData[this.parent.taskFields.resourceInfo] = resourceData;\n }\n else if (resourceData.length) {\n for (var i = 0; i < resourceData.length; i++) {\n var isAdded = false;\n if (typeof (preTaskResources) == \"string\") {\n if (typeof preTaskResources === 'string') {\n if ((preTaskResources) === (resourceData[i][resourceSettings.name])) {\n preTaskResources = resourceData[i][resourceSettings.name];\n isAdded = true;\n break;\n }\n }\n }\n else {\n for (var j = 0; j < preTaskResources.length; j++) {\n if (typeof preTaskResources[j] === 'number' || typeof preTaskResources[j] === 'string') {\n if (parseInt(preTaskResources[j], 10) === parseInt(resourceData[i][resourceSettings.id], 10)) {\n preTaskResources[j] = resourceData[i];\n isAdded = true;\n break;\n }\n }\n else if (preTaskResources[j][resourceSettings.id] === resourceData[i][resourceSettings.id] && typeof preTaskResources[j] !== 'number') {\n preTaskResources[j] = extend({}, preTaskResources[j], resourceData[i], true);\n isAdded = true;\n break;\n }\n }\n }\n if (!isAdded) {\n if (typeof (preTaskResources) == \"string\") {\n preTaskResources = resourceData[i][resourceSettings.name];\n }\n else {\n preTaskResources.push(resourceData[i]);\n }\n }\n }\n var data_1 = [];\n if (typeof (preTaskResources) != \"string\") {\n var _loop_4 = function (k) {\n resourceData.filter(function (resourceInfo) {\n if (resourceInfo[resourceSettings.id] === preTaskResources[k][resourceSettings.id] && data_1.indexOf(preTaskResources[k]) === -1) {\n data_1.push(preTaskResources[k]);\n }\n });\n };\n for (var k = 0; k < preTaskResources.length; k++) {\n _loop_4(k);\n }\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.resourceInfo, data_1, ganttData);\n }\n else {\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.resourceInfo, preTaskResources, ganttData);\n }\n }\n else {\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.resourceInfo, [], ganttData);\n }\n };\n TaskProcessor.prototype.setRecordDate = function (task, value, mapping) {\n var tempDate = typeof value === 'string' ? new Date(value) : value;\n if (!isNullOrUndefined(value)) {\n value = new Date(tempDate.getTime());\n }\n this.parent.setRecordValue(mapping, value, task);\n if (!isNullOrUndefined(value)) {\n value = new Date(tempDate.getTime());\n }\n if (!this.parent.isLoad && !this.parent.isDynamicData) {\n this.parent.setRecordValue('taskData.' + mapping, value, task);\n }\n this.parent.isDynamicData = false;\n };\n TaskProcessor.prototype.getDurationInDay = function (duration, durationUnit) {\n if (durationUnit === 'day') {\n return duration;\n }\n else if (durationUnit === 'hour') {\n return duration / (this.parent.secondsPerDay / 3600);\n }\n else {\n return duration / (this.parent.secondsPerDay / 60);\n }\n };\n TaskProcessor.prototype.setRecordDuration = function (task, mapping) {\n var duration = task.ganttProperties.duration;\n var durationUnit = task.ganttProperties.durationUnit;\n if (!isNullOrUndefined(duration)) {\n this.parent.setRecordValue(mapping, task.ganttProperties.duration, task);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var durationValue = (getValue(mapping, task.taskData));\n if (isNaN(durationValue) && isNullOrUndefined(this.parent.taskFields.durationUnit) && !isNullOrUndefined(durationValue)) {\n this.parent.setRecordValue('taskData.' + mapping, this.getDurationString(duration, durationUnit), task);\n }\n else {\n if (typeof durationValue === 'string') {\n this.parent.setRecordValue('taskData.' + mapping, duration.toString(), task);\n }\n else {\n this.parent.setRecordValue('taskData.' + mapping, duration, task);\n }\n }\n }\n else {\n this.parent.setRecordValue(mapping, duration, task);\n this.parent.setRecordValue('taskData.' + mapping, duration, task);\n }\n if (this.parent.taskFields.durationUnit) {\n task.taskData[this.parent.taskFields.durationUnit] = task.ganttProperties.durationUnit;\n }\n };\n TaskProcessor.prototype.setDataSource = function (data) {\n var createData = [];\n var length = data.length;\n for (var i = 0; i < length; i++) {\n var record = data[i];\n createData.push(record);\n if (!(isNullOrUndefined(data[i][this.parent.taskFields.child]))) {\n this.setDataSource(data[i][this.parent.taskFields.child]);\n }\n }\n return createData;\n };\n TaskProcessor.prototype.setStartDate = function (task) {\n var _this = this;\n var hierarchicalData = [];\n if (!isNullOrUndefined(this.parent.taskFields.parentID) && !isNullOrUndefined(this.parent.taskFields.id)) {\n hierarchicalData = this.setDataSource(this.parent.dataSource);\n }\n else {\n hierarchicalData = this.parent.dataSource;\n }\n hierarchicalData.map(function (record) {\n if (task.ganttProperties.taskId === record[_this.parent.taskFields.id]) {\n if (!isNullOrUndefined(_this.parent.taskFields.startDate)) {\n task[_this.parent.taskFields.startDate] = record[_this.parent.taskFields.startDate];\n }\n if (!isNullOrUndefined(_this.parent.taskFields.endDate)) {\n task[_this.parent.taskFields.endDate] = record[_this.parent.taskFields.endDate];\n }\n }\n });\n };\n TaskProcessor.prototype.getWorkInHour = function (work, workUnit) {\n if (workUnit === 'day') {\n return work * (this.parent.secondsPerDay / 3600);\n }\n else if (workUnit === 'minute') {\n return work / 60;\n }\n else {\n return work;\n }\n };\n /**\n *\n * @param {IGanttData} ganttData .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateTaskData = function (ganttData) {\n var dataMapping = this.parent.taskFields;\n var ganttProperties = ganttData.ganttProperties;\n if (!isNullOrUndefined(ganttData.taskData)) {\n var data = ganttData.taskData;\n if (dataMapping.id) {\n this.parent.setRecordValue('taskData.' + dataMapping.id, ganttProperties.taskId, ganttData);\n this.parent.setRecordValue(dataMapping.id, ganttProperties.taskId, ganttData);\n }\n if (dataMapping.name) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.name, ganttProperties.taskName, ganttData);\n }\n this.parent.setRecordValue(dataMapping.name, ganttProperties.taskName, ganttData);\n }\n if (dataMapping.startDate) {\n this.setRecordDate(ganttData, ganttProperties.startDate, dataMapping.startDate);\n }\n if (dataMapping.endDate) {\n this.setRecordDate(ganttData, ganttProperties.endDate, dataMapping.endDate);\n }\n if (dataMapping.duration) {\n if (!isNullOrUndefined(dataMapping.milestone) && !ganttData.taskData[dataMapping.milestone]) {\n this.setRecordDuration(ganttData, dataMapping.duration);\n }\n }\n if (dataMapping.durationUnit) {\n data[dataMapping.durationUnit] = ganttProperties.durationUnit;\n }\n if (dataMapping.progress) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.progress, ganttProperties.progress, ganttData);\n }\n this.parent.setRecordValue(dataMapping.progress, ganttProperties.progress, ganttData);\n }\n if (dataMapping.baselineStartDate) {\n this.setRecordDate(ganttData, ganttProperties.baselineStartDate, dataMapping.baselineStartDate);\n }\n if (dataMapping.baselineEndDate) {\n this.setRecordDate(ganttData, ganttProperties.baselineEndDate, dataMapping.baselineEndDate);\n }\n if (dataMapping.notes) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.notes, ganttProperties.notes, ganttData);\n }\n this.parent.setRecordValue(dataMapping.notes, ganttProperties.notes, ganttData);\n }\n if (dataMapping.cssClass) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.cssClass, ganttProperties.cssClass, ganttData);\n }\n this.parent.setRecordValue(dataMapping.cssClass, ganttProperties.cssClass, ganttData);\n }\n if (dataMapping.indicators) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.indicators, ganttProperties.indicators, ganttData);\n }\n this.parent.setRecordValue(dataMapping.indicators, ganttProperties.indicators, ganttData);\n }\n if (dataMapping.parentID) {\n var parentID = this.parent.viewType === 'ProjectView' ? ganttProperties.parentId : data[dataMapping.parentID];\n this.parent.setRecordValue('taskData.' + dataMapping.parentID, parentID, ganttData);\n this.parent.setRecordValue(dataMapping.parentID, ganttProperties.parentId, ganttData);\n }\n if (dataMapping.work) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.work, this.getWorkString(ganttProperties.work, ganttProperties.workUnit), ganttData);\n }\n this.parent.setRecordValue(dataMapping.work, ganttProperties.work, ganttData);\n }\n if (dataMapping.type) {\n if (!this.parent.isLoad) {\n this.parent.setRecordValue('taskData.' + dataMapping.type, ganttProperties.taskType, ganttData);\n }\n this.parent.setRecordValue(dataMapping.type, ganttProperties.taskType, ganttData);\n }\n }\n };\n /**\n * To set resource value in Gantt record\n *\n * @param {object} data .\n * @returns {object[]} .\n * @private\n */\n TaskProcessor.prototype.setResourceInfo = function (data) {\n var _this = this;\n // eslint-disable-next-line\n var resourceIdCollection;\n if (isNullOrUndefined(data[this.parent.taskFields.resourceInfo])) {\n return resourceIdCollection;\n }\n resourceIdCollection = data[this.parent.taskFields.resourceInfo];\n var resourceData;\n if (!isNullOrUndefined(this.parent.editModule) && !isNullOrUndefined(this.parent.editModule.dialogModule)\n && this.parent.editModule.dialogModule.isAddNewResource) {\n resourceData = this.parent.editModule.dialogModule.ganttResources;\n }\n else {\n resourceData = this.parent.resources;\n }\n var resourceIDMapping = this.parent.resourceFields.id;\n var resourceUnitMapping = this.parent.resourceFields.unit;\n var resourceGroup = this.parent.resourceFields.group;\n var resources = [];\n if (typeof (resourceIdCollection) == \"string\" && resourceIdCollection !== \"\") {\n var resource_1;\n resourceData.forEach(function (resourceInfo) {\n if (resourceIdCollection === resourceInfo[_this.parent.resourceFields.name]) {\n var resourceName = resourceInfo[_this.parent.resourceFields.name];\n resource_1 = [resourceInfo];\n }\n });\n var ganttDataResource = extend({}, resource_1[0]);\n resources.push(ganttDataResource);\n if (!isNullOrUndefined(resourceUnitMapping) && !isNullOrUndefined(resourceIdCollection[resourceUnitMapping])) {\n ganttDataResource[resourceUnitMapping] = resourceIdCollection[resourceUnitMapping];\n }\n if (!isNullOrUndefined(resourceGroup) && !isNullOrUndefined(resourceIdCollection[resourceGroup])) {\n ganttDataResource[resourceGroup] = resourceIdCollection[resourceGroup];\n }\n }\n else {\n var _loop_5 = function (count) {\n var resource = resourceData.filter(function (resourceInfo) {\n if (typeof (resourceIdCollection[count]) === 'object' &&\n resourceIdCollection[count][resourceIDMapping] === resourceInfo[resourceIDMapping]) {\n return true;\n }\n else {\n return (resourceIdCollection[count] === resourceInfo[resourceIDMapping]);\n }\n });\n var ganttDataResource = extend({}, resource[0]);\n resources.push(ganttDataResource);\n if (!isNullOrUndefined(resourceUnitMapping) && !isNullOrUndefined(resourceIdCollection[count][resourceUnitMapping])) {\n ganttDataResource[resourceUnitMapping] = resourceIdCollection[count][resourceUnitMapping];\n }\n if (!isNullOrUndefined(resourceGroup) && !isNullOrUndefined(resourceIdCollection[count][resourceGroup])) {\n ganttDataResource[resourceGroup] = resourceIdCollection[count][resourceGroup];\n }\n };\n for (var count = 0; count < resourceIdCollection.length; count++) {\n _loop_5(count);\n }\n }\n this.updateResourceUnit(resources);\n return resources;\n };\n /**\n * To set resource unit in Gantt record\n *\n * @param {object[]} resourceData .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateResourceUnit = function (resourceData) {\n var resourceUnit = this.parent.resourceFields.unit;\n if (!isNullOrUndefined(resourceUnit)) {\n var length_1 = resourceData.length;\n var index = void 0;\n for (index = 0; index < length_1; index++) {\n if (isNullOrUndefined(resourceData[index][resourceUnit])) {\n resourceData[index][resourceUnit] = 100;\n }\n }\n }\n };\n /**\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateResourceName = function (data) {\n var resourceInfo = data.ganttProperties.resourceInfo;\n var resourceName = [];\n var taskMapping = this.parent.taskFields;\n if (resourceInfo && resourceInfo.length > 0) {\n var resourceLength = resourceInfo.length;\n if (typeof data.taskData[this.parent.taskFields.resourceInfo] == \"string\") {\n var taskResources = data.taskData[this.parent.taskFields.resourceInfo];\n var stringResourceName = taskResources;\n this.parent.setRecordValue('resourceNames', stringResourceName, data.ganttProperties, true);\n this.parent.setRecordValue(this.parent.taskFields.resourceInfo, stringResourceName, data, true);\n this.updateTaskDataResource(data);\n }\n else {\n var taskResources = extend([], [], data.taskData[this.parent.taskFields.resourceInfo], true);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.resourceInfo, [], data);\n for (var i = 0; i < resourceLength; i++) {\n var resource = resourceInfo[i];\n var resName = resource[this.parent.resourceFields.name];\n var resourceUnit = resource[this.parent.resourceFields.unit];\n if (resourceUnit !== 100) {\n resName += '[' + resourceUnit + '%' + ']';\n }\n if (!isNullOrUndefined(resName)) {\n resourceName.push(resName);\n }\n if (data.taskData) {\n var mapping = taskMapping.resourceInfo;\n // eslint-disable-next-line\n if (taskResources[i] && typeof (taskResources[i] === 'object')) {\n data.taskData[mapping].push(taskResources[i]);\n }\n else {\n data.taskData[mapping].push(resource[this.parent.resourceFields.id]);\n }\n }\n }\n this.parent.setRecordValue('resourceNames', resourceName.join(','), data.ganttProperties, true);\n this.parent.setRecordValue(this.parent.taskFields.resourceInfo, resourceName.join(','), data, true);\n this.updateTaskDataResource(data);\n }\n }\n };\n TaskProcessor.prototype.dataReorder = function (flatCollection, rootCollection) {\n var result = [];\n while (flatCollection.length > 0 && rootCollection.length > 0) {\n var index = rootCollection.indexOf(flatCollection[0]);\n if (index === -1) {\n flatCollection.shift();\n }\n else {\n result.push(flatCollection.shift());\n rootCollection.splice(index, 1);\n }\n }\n return result;\n };\n TaskProcessor.prototype.validateDurationUnitMapping = function (durationUnit) {\n var unit = durationUnit;\n if ((unit === 'minute') || (unit === 'minutes') || (unit === 'm') || (unit === 'min')) {\n unit = 'minute';\n }\n else if ((unit === 'hour') || (unit === 'hours') || (unit === 'h') || (unit === 'hr')) {\n unit = 'hour';\n }\n else if ((unit === 'day') || (unit === 'days') || (unit === 'd')) {\n unit = 'day';\n }\n else {\n unit = this.parent.durationUnit.toLocaleLowerCase();\n }\n return unit;\n };\n TaskProcessor.prototype.validateTaskTypeMapping = function (taskType) {\n var type = taskType;\n if (type === 'FixedDuration') {\n type = 'FixedDuration';\n }\n else if (type === 'FixedUnit') {\n type = 'FixedUnit';\n }\n else if (type === 'FixedWork') {\n type = 'FixedWork';\n }\n else {\n type = this.parent.taskType;\n }\n return type;\n };\n TaskProcessor.prototype.validateWorkUnitMapping = function (workUnit) {\n var unit = workUnit;\n if (unit === 'minute') {\n unit = 'minute';\n }\n else if (unit === 'hour') {\n unit = 'hour';\n }\n else if (unit === 'day') {\n unit = 'day';\n }\n else {\n unit = this.parent.workUnit.toLocaleLowerCase();\n }\n return unit;\n };\n /**\n * To update duration value in Task\n *\n * @param {string} duration .\n * @param {ITaskData} ganttProperties .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateDurationValue = function (duration, ganttProperties) {\n var tempDuration = this.getDurationValue(duration);\n if (!isNaN(getValue('duration', tempDuration)) && !(this.parent.viewType === \"ResourceView\" && tempDuration[\"duration\"] === 0 && this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit)) {\n this.parent.setRecordValue('duration', getValue('duration', tempDuration), ganttProperties, true);\n }\n if (!isNullOrUndefined(getValue('durationUnit', tempDuration))) {\n this.parent.setRecordValue('durationUnit', getValue('durationUnit', tempDuration), ganttProperties, true);\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.reUpdateGanttData = function () {\n if (this.parent.flatData.length > 0) {\n var data = void 0;\n var ganttData = void 0;\n this.parent.secondsPerDay = this.getSecondsPerDay();\n for (var index = 0; index < this.parent.flatData.length; index++) {\n data = this.parent.flatData[index].taskData;\n ganttData = this.parent.flatData[index];\n if (!isNullOrUndefined(this.parent.taskFields.duration)) {\n this.setRecordDuration(ganttData, this.parent.taskFields.duration);\n }\n if (this.parent.isLoad) {\n this.setStartDate(ganttData);\n }\n this.calculateScheduledValues(ganttData, data, false);\n }\n this.updateGanttData();\n }\n };\n //check day is fall between from and to date range\n TaskProcessor.prototype._isInStartDateRange = function (day, from, to) {\n var isInRange = false;\n if (day.getTime() >= from.getTime() && day.getTime() < to.getTime()) {\n isInRange = true;\n }\n return isInRange;\n };\n //check day is fall between from and to date range\n TaskProcessor.prototype._isInEndDateRange = function (day, from, to) {\n var isInRange = false;\n if (day.getTime() > from.getTime() && day.getTime() <= to.getTime()) {\n isInRange = true;\n }\n return isInRange;\n };\n /**\n * Method to find overlapping value of the parent task\n *\n * @param {IGanttData} resourceTask .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateOverlappingValues = function (resourceTask) {\n var tasks = resourceTask.childRecords;\n var currentTask;\n var ranges = [];\n if (tasks.length <= 1) {\n resourceTask.ganttProperties.workTimelineRanges = [];\n return;\n }\n tasks = this.setSortedChildTasks(resourceTask);\n this.updateOverlappingIndex(tasks);\n for (var count = 1; count < tasks.length; count++) {\n currentTask = tasks[count];\n var cStartDate = void 0;\n var cEndDate = void 0;\n if (currentTask.ganttProperties.startDate) {\n cStartDate = new Date(currentTask.ganttProperties.startDate.getTime());\n }\n if (currentTask.ganttProperties.endDate) {\n cEndDate = new Date(currentTask.ganttProperties.endDate.getTime()); //task 2\n }\n var range = [];\n // eslint-disable-next-line\n var rangeObj = {};\n for (var index = 0; index < count; index++) {\n var tStartDate = tasks[index].ganttProperties.startDate;\n var tEndDate = tasks[index].ganttProperties.endDate; // task 1\n var rangeObj_1 = {};\n if (cStartDate && cEndDate && tEndDate && (this._isInStartDateRange(cStartDate, tStartDate, tEndDate) || this._isInEndDateRange(cEndDate, tStartDate, tEndDate))) {\n if ((tStartDate.getTime() > cStartDate.getTime() && tStartDate.getTime() < cEndDate.getTime()\n && tEndDate.getTime() > cStartDate.getTime() && tEndDate.getTime() >= cEndDate.getTime())\n || (cStartDate.getTime() === tStartDate.getTime() && cEndDate.getTime() <= tEndDate.getTime())) {\n rangeObj_1.from = tStartDate;\n rangeObj_1.to = cEndDate;\n }\n else if (cStartDate.getTime() === tStartDate.getTime() && cEndDate.getTime() > tEndDate.getTime()) {\n rangeObj_1.from = tStartDate;\n rangeObj_1.to = tEndDate;\n }\n else if (cStartDate.getTime() > tStartDate.getTime() && cEndDate.getTime() >= tEndDate.getTime()) {\n rangeObj_1.from = cStartDate;\n rangeObj_1.to = tEndDate;\n }\n else if (cStartDate.getTime() > tStartDate.getTime() && cEndDate.getTime() < tEndDate.getTime()) {\n rangeObj_1.from = cStartDate;\n rangeObj_1.to = cEndDate;\n }\n range.push(rangeObj_1);\n }\n }\n // eslint-disable-next-line\n ranges.push.apply(ranges, this.mergeRangeCollections(range));\n }\n this.parent.setRecordValue('workTimelineRanges', this.mergeRangeCollections(ranges, true), resourceTask.ganttProperties, true);\n this.calculateRangeLeftWidth(resourceTask.ganttProperties.workTimelineRanges);\n };\n /**\n * @param {IGanttData[]} tasks .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateOverlappingIndex = function (tasks) {\n for (var i = 0; i < tasks.length; i++) {\n tasks[i].ganttProperties.eOverlapIndex = i;\n }\n };\n /**\n * Method to calculate the left and width value of oarlapping ranges\n *\n * @param {IWorkTimelineRanges[]} ranges .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.calculateRangeLeftWidth = function (ranges) {\n for (var count = 0; count < ranges.length; count++) {\n ranges[count].left = this.getTaskLeft(ranges[count].from, false);\n ranges[count].width = this.getTaskWidth(ranges[count].from, ranges[count].to);\n }\n };\n /**\n * @param {IWorkTimelineRanges[]} ranges .\n * @param {boolean} isSplit .\n * @returns {IWorkTimelineRanges[]} .\n * @private\n */\n TaskProcessor.prototype.mergeRangeCollections = function (ranges, isSplit) {\n var finalRange = [];\n var currentTopRange = {};\n var cCompareRange = {};\n var cStartDate;\n var cEndDate;\n var tStartDate;\n var tEndDate;\n var sortedRanges = new DataManager(ranges).executeLocal(new Query()\n .sortBy(this.parent.taskFields.startDate, 'Ascending'));\n for (var i = 0; i < sortedRanges.length; i++) {\n if (finalRange.length === 0 && i === 0) {\n finalRange.push(sortedRanges[i]);\n continue;\n }\n currentTopRange = finalRange[finalRange.length - 1];\n cStartDate = currentTopRange.from;\n cEndDate = currentTopRange.to;\n cCompareRange = sortedRanges[i];\n tStartDate = cCompareRange.from;\n tEndDate = cCompareRange.to;\n if ((cStartDate.getTime() === tStartDate.getTime() && cEndDate.getTime() >= tEndDate.getTime())\n || (cStartDate.getTime() < tStartDate.getTime() && cEndDate.getTime() >= tEndDate.getTime())) {\n continue;\n }\n /* eslint-disable-next-line */\n else if ((cStartDate.getTime() <= tStartDate.getTime() && cEndDate.getTime() >= tStartDate.getTime() && cEndDate.getTime() < tEndDate.getTime())\n || (cEndDate.getTime() < tStartDate.getTime() && this.checkStartDate(cEndDate).getTime() === tStartDate.getTime())) {\n currentTopRange.to = tEndDate;\n }\n else if (cEndDate.getTime() < tStartDate.getTime() && this.checkStartDate(cEndDate).getTime() !== tStartDate.getTime()) {\n finalRange.push(sortedRanges[i]);\n }\n }\n if (isSplit) {\n finalRange = this.splitRangeCollection(finalRange);\n }\n return finalRange;\n };\n /**\n * Sort resource child records based on start date\n *\n * @param {IGanttData} resourceTask .\n * @returns {IGanttData} .\n * @private\n */\n TaskProcessor.prototype.setSortedChildTasks = function (resourceTask) {\n var sortedRecords = [];\n sortedRecords = new DataManager(resourceTask.childRecords).executeLocal(new Query()\n .sortBy(this.parent.taskFields.startDate, 'Ascending'));\n return sortedRecords;\n };\n TaskProcessor.prototype.splitRangeCollection = function (rangeCollection, fromField, toField) {\n var splitArray = [];\n var unit;\n if (this.parent.timelineModule.isSingleTier) {\n unit = this.parent.timelineModule.bottomTier !== 'None' ?\n this.parent.timelineModule.bottomTier : this.parent.timelineModule.topTier;\n }\n else {\n unit = this.parent.timelineModule.bottomTier;\n }\n if (unit === 'Week' || unit === 'Month' || unit === 'Year') {\n splitArray = rangeCollection;\n }\n else if (unit === 'Day') {\n splitArray = this.getRangeWithWeek(rangeCollection, fromField, toField);\n }\n else {\n if (this.parent.workingTimeRanges[0].from === 0 && this.parent.workingTimeRanges[0].to === 86400) {\n splitArray = this.getRangeWithWeek(rangeCollection, fromField, toField);\n }\n else {\n splitArray = this.getRangeWithDay(rangeCollection, fromField, toField);\n }\n }\n return splitArray;\n };\n TaskProcessor.prototype.getRangeWithDay = function (ranges, fromField, toField) {\n var splitArray = [];\n for (var i = 0; i < ranges.length; i++) {\n // eslint-disable-next-line\n splitArray.push.apply(splitArray, this.splitRangeForDayMode(ranges[i], fromField, toField));\n }\n return splitArray;\n };\n TaskProcessor.prototype.splitRangeForDayMode = function (range, fromField, toField) {\n var fromString = fromField ? fromField : 'from';\n var toString = toField ? toField : 'to';\n var tempStart = new Date(range[fromString]);\n var end = new Date(range[toString]);\n var ranges = [];\n var rangeObject = {};\n if (tempStart.getTime() < end.getTime()) {\n do {\n var nStart = new Date(tempStart.getTime());\n var nEndDate = new Date(tempStart.getTime());\n var nextAvailDuration = 0;\n var sHour = this.parent.dataOperation.getSecondsInDecimal(tempStart);\n var startRangeIndex = -1;\n for (var i = 0; i < this.parent.workingTimeRanges.length; i++) {\n var val = this.parent.workingTimeRanges[i];\n if (sHour >= val.from && sHour <= val.to) {\n startRangeIndex = i;\n break;\n }\n }\n if (startRangeIndex !== -1) {\n nextAvailDuration = Math.round(this.parent.workingTimeRanges[startRangeIndex].to - sHour);\n nEndDate.setSeconds(nEndDate.getSeconds() + nextAvailDuration);\n }\n var taskName = 'task';\n if (nEndDate.getTime() < end.getTime()) {\n rangeObject = {};\n if (range.task) {\n rangeObject[taskName] = extend([], range.task);\n }\n rangeObject[fromString] = nStart;\n rangeObject[toString] = nEndDate;\n rangeObject.isSplit = true;\n ranges.push(rangeObject);\n }\n else {\n rangeObject = {};\n if (range.task) {\n rangeObject[taskName] = extend([], range.task);\n }\n rangeObject[fromString] = nStart;\n rangeObject[toString] = end;\n rangeObject.isSplit = true;\n ranges.push(rangeObject);\n }\n tempStart = this.checkStartDate(nEndDate);\n } while (tempStart.getTime() < end.getTime());\n }\n else {\n ranges.push(range);\n }\n return ranges;\n };\n TaskProcessor.prototype.getRangeWithWeek = function (ranges, fromField, toField) {\n var splitArray = [];\n for (var i = 0; i < ranges.length; i++) {\n // eslint-disable-next-line\n splitArray.push.apply(splitArray, this.splitRangeForWeekMode(ranges[i], fromField, toField));\n }\n return splitArray;\n };\n TaskProcessor.prototype.splitRangeForWeekMode = function (range, fromField, toField) {\n var from = fromField ? fromField : 'from';\n var to = toField ? toField : 'to';\n var start = new Date(range[from]);\n var tempStart = new Date(range[from]);\n var end = new Date(range[to]);\n var isInSplit = false;\n var ranges = [];\n var rangeObj = {};\n tempStart.setDate(tempStart.getDate() + 1);\n if (tempStart.getTime() < end.getTime()) {\n do {\n if (this.parent.dataOperation.isOnHolidayOrWeekEnd(tempStart, null)) {\n var tempEndDate = new Date(tempStart.getTime());\n tempEndDate.setDate(tempStart.getDate() - 1);\n this.setTime(this.parent.defaultEndTime, tempEndDate);\n rangeObj = {};\n rangeObj[from] = start;\n rangeObj.isSplit = true;\n rangeObj[to] = tempEndDate;\n if (range.task) {\n rangeObj.task = extend([], range.task, true);\n }\n if (start.getTime() !== tempEndDate.getTime()) {\n ranges.push(rangeObj);\n }\n start = this.checkStartDate(tempEndDate);\n tempStart = new Date(start.getTime());\n isInSplit = true;\n }\n else {\n tempStart.setDate(tempStart.getDate() + 1);\n }\n } while (tempStart.getTime() < end.getTime());\n if (isInSplit) {\n if (start.getTime() !== end.getTime()) {\n rangeObj = {};\n if (range.task) {\n rangeObj.task = extend([], range.task, true);\n }\n rangeObj[from] = start;\n rangeObj[to] = end;\n rangeObj.isSplit = true;\n ranges.push(rangeObj);\n }\n }\n else {\n ranges.push(range);\n }\n }\n else {\n ranges.push(range);\n }\n return ranges;\n };\n /**\n * Update all gantt data collection width, progress width and left value\n *\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateGanttData = function () {\n var flatData = this.parent.flatData;\n var length = flatData.length;\n for (var i = 0; i < length; i++) {\n var data = flatData[i];\n this.updateTaskLeftWidth(data);\n }\n };\n /**\n * Update all gantt data collection width, progress width and left value\n *\n * @param {IGanttData} data .\n * @returns {void} .\n * @public\n */\n TaskProcessor.prototype.updateTaskLeftWidth = function (data) {\n var task = data.ganttProperties;\n if (!data.hasChildRecords || !this.parent.autoCalculateDateScheduling) {\n this.updateWidthLeft(data);\n }\n this.parent.setRecordValue('baselineLeft', this.calculateBaselineLeft(task), task, true);\n this.parent.setRecordValue('baselineWidth', this.calculateBaselineWidth(task), task, true);\n var childData = [];\n var parentItem;\n if (data.parentItem) {\n parentItem = this.parent.getParentTask(data.parentItem);\n childData = parentItem.childRecords;\n }\n if (parentItem && childData.indexOf(data) === childData.length - 1 && !data.hasChildRecords && this.parent.enableValidation) {\n if (this.parent.autoCalculateDateScheduling || this.parent.viewType === \"ResourceView\") {\n this.updateParentItems(parentItem);\n }\n if (!this.parent.autoCalculateDateScheduling) {\n this.updateWidthLeft(parentItem);\n }\n }\n else if (parentItem && !this.parent.enableValidation) {\n this.updateWidthLeft(parentItem);\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.reUpdateGanttDataPosition = function () {\n var flatData;\n if (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport && this.parent.pdfExportModule.helper.exportProps &&\n this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings && this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth) {\n flatData = this.parent.pdfExportModule.helper.beforeSinglePageExport['cloneFlatData'];\n }\n else {\n flatData = this.parent.flatData;\n }\n var length = flatData.length;\n for (var i = 0; i < length; i++) {\n var data = flatData[i];\n var task = data.ganttProperties;\n this.updateWidthLeft(data);\n if (this.parent.taskMode !== 'Auto' && data.hasChildRecords) {\n this.updateAutoWidthLeft(data);\n }\n this.parent.setRecordValue('baselineLeft', this.calculateBaselineLeft(task), task, true);\n this.parent.setRecordValue('baselineWidth', this.calculateBaselineWidth(task), task, true);\n this.parent.dataOperation.updateTaskData(data);\n }\n };\n /**\n * method to update left, width, progress width in record\n *\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateWidthLeft = function (data) {\n var ganttRecord = data.ganttProperties;\n var totalSegmentsProgressWidth = 0;\n // task endDate may be changed in segment calculation so this must be calculated first.\n // task width calculating was based on endDate\n if (!isNullOrUndefined(ganttRecord.segments) && ganttRecord.segments.length > 0) {\n var segments = ganttRecord.segments;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (i === 0 && !isNullOrUndefined(ganttRecord.startDate) && !isNullOrUndefined(segment.startDate) && !isNullOrUndefined(segment.startDate.getTime()) &&\n segment.startDate.getTime() !== ganttRecord.startDate.getTime()) {\n segment.startDate = ganttRecord.startDate;\n var endDate = this.parent.dataOperation.getEndDate(segment.startDate, segment.duration, ganttRecord.durationUnit, ganttRecord, false);\n segment.endDate = this.parent.dataOperation.checkEndDate(endDate, ganttRecord, false);\n this.parent.chartRowsModule.incrementSegments(segments, 0, data);\n }\n segment.width = this.getSplitTaskWidth(segment.startDate, segment.duration, data);\n totalSegmentsProgressWidth = totalSegmentsProgressWidth + segment.width;\n segment.showProgress = false;\n segment.progressWidth = -1;\n if (i !== 0) {\n var pStartDate = new Date(ganttRecord.startDate.getTime());\n segment.left = this.getSplitTaskLeft(segment.startDate, pStartDate);\n }\n }\n var setProgress = this.parent.dataOperation.getProgressWidth(totalSegmentsProgressWidth, ganttRecord.progress);\n var isValid = true;\n for (var i = 0; i < segments.length; i++) {\n if (isValid) {\n if (setProgress <= segments[i].width) {\n segments[i].progressWidth = setProgress;\n segments[i].showProgress = true;\n isValid = false;\n }\n else {\n segments[i].progressWidth = segments[i].width;\n setProgress = setProgress - segments[i].progressWidth;\n }\n }\n }\n this.parent.setRecordValue('segments', ganttRecord.segments, ganttRecord, true);\n this.parent.dataOperation.updateMappingData(data, 'segments');\n }\n this.parent.setRecordValue('width', this.parent.dataOperation.calculateWidth(data), ganttRecord, true);\n this.parent.setRecordValue('left', this.parent.dataOperation.calculateLeft(ganttRecord), ganttRecord, true);\n if (!isNullOrUndefined(ganttRecord.segments) && ganttRecord.segments.length > 0) {\n this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth(totalSegmentsProgressWidth, ganttRecord.progress), ganttRecord, true);\n }\n else {\n this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth((ganttRecord.isAutoSchedule || !data.hasChildRecords ? ganttRecord.width : ganttRecord.autoWidth), ganttRecord.progress), ganttRecord, true);\n }\n };\n /**\n * method to update left, width, progress width in record\n *\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateAutoWidthLeft = function (data) {\n var ganttRecord = data.ganttProperties;\n this.parent.setRecordValue('autoWidth', this.calculateWidth(data, true), ganttRecord, true);\n this.parent.setRecordValue('autoLeft', this.calculateLeft(ganttRecord, true), ganttRecord, true);\n this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth((ganttRecord.isAutoSchedule ||\n !data.hasChildRecords ? ganttRecord.width : ganttRecord.autoWidth), ganttRecord.progress), ganttRecord, true);\n };\n /**\n * To calculate parent progress value\n *\n * @param {IGanttData} childGanttRecord .\n * @returns {object} .\n * @private\n */\n TaskProcessor.prototype.getParentProgress = function (childGanttRecord) {\n var durationInDay = 0;\n var progressValues = {};\n switch (childGanttRecord.ganttProperties.durationUnit) {\n case 'hour':\n durationInDay = (childGanttRecord.ganttProperties.duration / (this.parent.secondsPerDay / 3600));\n break;\n case 'minute':\n durationInDay = (childGanttRecord.ganttProperties.duration / (this.parent.secondsPerDay / 60));\n break;\n default:\n durationInDay = childGanttRecord.ganttProperties.duration;\n }\n if (childGanttRecord.hasChildRecords) {\n setValue('totalProgress', childGanttRecord.ganttProperties.totalProgress, progressValues);\n setValue('totalDuration', childGanttRecord.ganttProperties.totalDuration ? childGanttRecord.ganttProperties.totalDuration : 0, progressValues);\n }\n else {\n setValue('totalProgress', childGanttRecord.ganttProperties.progress * durationInDay, progressValues);\n setValue('totalDuration', durationInDay, progressValues);\n }\n return progressValues;\n };\n TaskProcessor.prototype.resetDependency = function (record) {\n var dependency = this.parent.taskFields.dependency;\n if (!isNullOrUndefined(dependency)) {\n var recordProp = record.ganttProperties;\n this.parent.setRecordValue('predecessor', [], recordProp, true);\n this.parent.setRecordValue('predecessorsName', null, recordProp, true);\n this.parent.setRecordValue('taskData.' + dependency, null, record);\n this.parent.setRecordValue(dependency, null, record);\n }\n };\n /**\n * @param {IParent | IGanttData} cloneParent .\n * @param {boolean} isParent .\n * @returns {void} .\n * @private\n */\n TaskProcessor.prototype.updateParentItems = function (cloneParent, isParent) {\n var _this = this;\n var parentData = isParent ? cloneParent : this.parent.getParentTask(cloneParent);\n parentData = parentData ? parentData : cloneParent;\n var deleteUpdate = false;\n var ganttProp = !isNullOrUndefined(parentData) ? parentData.ganttProperties : null;\n if (this.parent.autoCalculateDateScheduling || this.parent.viewType === \"ResourceView\") {\n if (parentData && parentData.childRecords && parentData.childRecords.length > 0) {\n var previousStartDate = ganttProp.isAutoSchedule ? ganttProp.startDate : ganttProp.autoStartDate;\n var previousEndDate = ganttProp.isAutoSchedule ? ganttProp.endDate :\n ganttProp.autoEndDate;\n var childRecords_1 = parentData.childRecords;\n var childLength = childRecords_1.length;\n var totalDuration = 0;\n var progressValues = {};\n var minStartDate = null;\n var maxEndDate = null;\n var milestoneCount = 0;\n var totalProgress = 0;\n var childCompletedWorks = 0;\n var childData = void 0;\n var _loop_6 = function (count) {\n if (!this_4.parent.loadChildOnDemand && this_4.parent.taskFields.hasChildMapping) {\n childData = this_4.parent.currentViewData.filter(function (item) { return item.ganttProperties.taskId === childRecords_1[count][_this.parent.taskFields.id]; })[0];\n }\n else {\n childData = childRecords_1[count];\n }\n if (this_4.parent.isOnDelete && childData.isDelete) {\n if (childLength === 1 && this_4.parent.viewType === 'ProjectView') {\n deleteUpdate = true;\n }\n return \"continue\";\n }\n var startDate = this_4.getValidStartDate(childData.ganttProperties);\n if (parentData.hasChildRecords && !ganttProp.isAutoSchedule && !isNullOrUndefined(childData.ganttProperties.autoStartDate)) {\n startDate = childData.ganttProperties.autoStartDate;\n }\n var endDate = this_4.getValidEndDate(childData.ganttProperties);\n if (parentData.hasChildRecords && !ganttProp.isAutoSchedule && !isNullOrUndefined(childData.ganttProperties.autoEndDate)) {\n endDate = childData.ganttProperties.autoEndDate;\n }\n if (isNullOrUndefined(minStartDate)) {\n minStartDate = this_4.getDateFromFormat(startDate);\n }\n if (isNullOrUndefined(maxEndDate)) {\n maxEndDate = this_4.getDateFromFormat(endDate);\n }\n if (!isNullOrUndefined(endDate) && this_4.compareDates(endDate, maxEndDate) === 1) {\n maxEndDate = this_4.getDateFromFormat(endDate);\n }\n if (!isNullOrUndefined(startDate) && this_4.compareDates(startDate, minStartDate) === -1) {\n minStartDate = this_4.getDateFromFormat(startDate);\n }\n if (!childData.ganttProperties.isMilestone && isScheduledTask(childData.ganttProperties)) {\n progressValues = this_4.getParentProgress(childData);\n totalProgress += getValue('totalProgress', progressValues);\n if (childData[this_4.parent.taskFields.duration] < 1) {\n totalDuration += getValue('totalDuration', progressValues);\n totalDuration = Number(totalDuration.toFixed(4));\n }\n else {\n totalDuration += getValue('totalDuration', progressValues);\n }\n }\n else {\n milestoneCount++;\n }\n work = childData.ganttProperties.work;\n if (typeof work === 'string') {\n // If it's a string, convert it to a number\n numericValue = parseFloat(work);\n if (!isNaN(numericValue)) {\n childCompletedWorks += numericValue;\n }\n }\n else if (typeof work === 'number') {\n // If it's already a number, simply add it to childCompletedWorks\n childCompletedWorks += work;\n }\n };\n var this_4 = this, work, numericValue;\n for (var count = 0; count < childLength; count++) {\n _loop_6(count);\n }\n if (!deleteUpdate) {\n var taskCount = void 0;\n if (this.parent.isOnDelete && childData.isDelete) {\n taskCount = childLength - milestoneCount - 1;\n }\n else {\n taskCount = childLength - milestoneCount;\n }\n var parentProgress = (taskCount > 0 && totalDuration > 0) ? Number((totalProgress / totalDuration).toFixed(2)) : 0;\n var parentProp = parentData.ganttProperties;\n var milestone = (taskCount === 0) && minStartDate && maxEndDate &&\n minStartDate.getTime() === maxEndDate.getTime() ? true : false;\n if (this.compareDates(previousStartDate, minStartDate) !== 0) {\n this.parent.setRecordValue(ganttProp.isAutoSchedule ? 'startDate' : 'autoStartDate', minStartDate, parentData.ganttProperties, true);\n if ((((!isNullOrUndefined(ganttProp.autoDuration)) ? ganttProp.autoDuration === 0 : ganttProp.duration === 0)) && parentData['isManual'] && milestone && (parentData.hasChildRecords && parentData.ganttProperties.isAutoSchedule && this.parent.editModule.taskbarEditModule.taskbarEditedArgs.action !== \"TaskbarEditing\")) {\n this.parent.setRecordValue('startDate', minStartDate, parentData.ganttProperties, true);\n }\n }\n if (this.compareDates(previousEndDate, maxEndDate) !== 0) {\n this.parent.setRecordValue(ganttProp.isAutoSchedule ? 'endDate' : 'autoEndDate', maxEndDate, parentData.ganttProperties, true);\n if ((((!isNullOrUndefined(ganttProp.autoDuration)) ? ganttProp.autoDuration === 0 : ganttProp.duration === 0)) && parentData['isManual'] && milestone && (parentData.hasChildRecords && parentData.ganttProperties.isAutoSchedule && this.parent.editModule.taskbarEditModule.taskbarEditedArgs.action !== \"TaskbarEditing\")) {\n this.parent.setRecordValue('endDate', maxEndDate, parentData.ganttProperties, true);\n }\n }\n this.parent.setRecordValue('isMilestone', milestone, parentProp, true);\n if (!isNullOrUndefined(this.parent.taskFields.milestone)) {\n this.updateMappingData(parentData, 'milestone');\n }\n if (parentProp.isAutoSchedule) {\n this.calculateDuration(parentData);\n }\n this.updateWorkWithDuration(parentData);\n var parentWork = parentProp.work;\n parentWork = this.parent.isOnEdit ? parentWork : (parentWork + childCompletedWorks);\n this.parent.setRecordValue('work', parentWork, parentProp, true);\n this.parent.setRecordValue('taskType', 'FixedDuration', parentProp, true);\n if (!isNullOrUndefined(this.parent.taskFields.type)) {\n this.updateMappingData(parentData, 'type');\n }\n this.parent.setRecordValue('progress', Math.floor(parentProgress), parentProp, true);\n this.parent.setRecordValue('totalProgress', totalProgress, parentProp, true);\n this.parent.setRecordValue('totalDuration', totalDuration, parentProp, true);\n this.parent.setRecordValue('autoDuration', parentProp.duration, parentProp, true);\n if (!parentProp.isAutoSchedule) {\n this.parent.setRecordValue('autoDuration', this.calculateAutoDuration(parentProp), parentProp, true);\n this.updateAutoWidthLeft(parentData);\n }\n if (!this.parent.allowParentDependency) {\n this.resetDependency(parentData);\n }\n this.updateWidthLeft(parentData);\n this.updateTaskData(parentData);\n }\n }\n }\n else {\n parentData.ganttProperties.endDate = parentData.taskData[this.parent.taskFields.endDate];\n }\n if (deleteUpdate && parentData.childRecords.length === 1 && parentData.ganttProperties.duration === 0) {\n this.parent.setRecordValue('isMilestone', true, parentData.ganttProperties, true);\n this.updateWidthLeft(parentData);\n this.updateTaskData(parentData);\n }\n var parentItem = !isNullOrUndefined(parentData) ? this.parent.getParentTask(parentData.parentItem) : null;\n if (parentItem) {\n if (this.parent.autoCalculateDateScheduling || this.parent.viewType === \"ResourceView\") {\n this.updateParentItems(parentItem);\n }\n }\n deleteUpdate = false;\n };\n return TaskProcessor;\n}(DateProcessor));\nexport { TaskProcessor };\n","/**\n * CSS Constants\n */\n/** @hidden */\nexport var root = 'e-gantt';\nexport var ganttChartPane = 'e-gantt-chart-pane';\nexport var treeGridPane = 'e-gantt-tree-grid-pane';\nexport var splitter = 'e-gantt-splitter';\nexport var ganttChart = 'e-gantt-chart';\nexport var chartBodyContainer = 'e-chart-root-container';\nexport var toolbar = 'e-gantt-toolbar';\nexport var chartScrollElement = 'e-chart-scroll-container';\nexport var chartBodyContent = 'e-chart-rows-container';\nexport var scrollContent = 'e-content';\nexport var adaptive = 'e-device';\nexport var focusCell = 'e-grid';\n// Timeline-Class\nexport var taskTable = 'e-task-table';\nexport var zeroSpacing = 'e-zero-spacing';\nexport var timelineHeaderContainer = 'e-timeline-header-container';\nexport var timelineHeaderTableContainer = 'e-timeline-header-table-container';\nexport var timelineHeaderTableBody = 'e-timeline-header-table-body';\nexport var timelineTopHeaderCell = 'e-timeline-top-header-cell';\nexport var timelineHeaderCellLabel = 'e-header-cell-label';\nexport var weekendHeaderCell = 'e-weekend-header-cell';\nexport var timelineSingleHeaderCell = 'e-timeline-single-header-cell';\nexport var timelineSingleHeaderOuterDiv = 'e-timeline-single-header-outer-div';\nexport var virtualTable = 'e-virtualtable';\nexport var virtualTrack = 'e-virtualtrack';\n// Chart Rows-Class\nexport var leftLabelContainer = 'e-left-label-container';\nexport var leftLabelTempContainer = 'e-left-label-container e-left-label-temp-container';\nexport var leftLabelInnerDiv = 'e-left-label-inner-div';\nexport var rightLabelContainer = 'e-right-label-container';\nexport var rightLabelTempContainer = 'e-right-label-container e-right-label-temp-container';\nexport var rightLabelInnerDiv = 'e-right-label-inner-div';\nexport var taskBarMainContainer = 'e-taskbar-main-container';\nexport var parentTaskBarInnerDiv = 'e-gantt-parent-taskbar-inner-div';\nexport var parentProgressBarInnerDiv = 'e-gantt-parent-progressbar-inner-div';\nexport var taskLabel = 'e-task-label';\nexport var childTaskBarInnerDiv = 'e-gantt-child-taskbar-inner-div';\nexport var childProgressBarInnerDiv = 'e-gantt-child-progressbar-inner-div';\nexport var criticalChildTaskBarInnerDiv = 'e-gantt-child-critical-taskbar-inner-div';\nexport var criticalChildProgressBarInnerDiv = 'e-gantt-child-critical-progressbar-inner-div';\nexport var criticalMilestone = 'e-critical-milestone';\nexport var baselineBar = 'e-baseline-bar';\nexport var baselineMilestoneContainer = 'e-baseline-gantt-milestone-container';\nexport var baselineMilestoneDiv = 'e-baseline-gantt-milestone';\nexport var chartRowCell = 'e-chart-row-cell';\nexport var chartRow = 'e-chart-row';\nexport var rowExpand = 'e-row-expand';\nexport var rowCollapse = 'e-row-collapse';\nexport var collapseParent = 'e-collapse-parent';\nexport var taskBarLeftResizer = 'e-taskbar-left-resizer';\nexport var taskBarRightResizer = 'e-taskbar-right-resizer';\nexport var childProgressResizer = 'e-child-progress-resizer';\nexport var progressBarHandler = 'e-progressbar-handler';\nexport var progressHandlerElement = 'e-progressbar-handler-element';\nexport var progressBarHandlerAfter = 'e-progressbar-handler-after';\nexport var icon = 'e-icon';\nexport var traceMilestone = 'e-gantt-milestone';\nexport var parentMilestone = 'e-gantt-parent-milestone';\nexport var traceChildTaskBar = 'e-gantt-child-taskbar';\nexport var traceChildProgressBar = 'e-gantt-child-progressbar';\nexport var manualParentMainContainer = 'e-manualparent-main-container';\nexport var manualParentTaskBar = 'e-gantt-manualparenttaskbar';\nexport var manualParentMilestone = 'e-gantt-manualparent-milestone';\nexport var manualChildTaskBar = 'e-gantt-child-manualtaskbar';\nexport var manualChildProgressBar = 'e-gantt-child-manualprogressbar';\nexport var manualParentRightResizer = 'e-gantt-manualparenttaskbar-right';\nexport var manualParentLeftResizer = 'e-gantt-manualparenttaskbar-left';\nexport var traceManualUnscheduledTask = 'e-gantt-unscheduled-manualtask';\nexport var traceParentTaskBar = 'e-gantt-parent-taskbar';\nexport var traceParentProgressBar = 'e-gantt-parent-progressbar';\nexport var traceUnscheduledTask = 'e-gantt-unscheduled-task';\nexport var criticalUnscheduledTask = 'e-gantt-critical-unscheduled-taskbar';\nexport var taskIndicatorDiv = 'e-indicator-span';\nexport var leftResizeGripper = 'e-left-resize-gripper';\nexport var rightResizeGripper = 'e-right-resize-gripper';\nexport var progressResizeGripper = 'e-progress-resize-gripper';\nexport var label = 'e-label';\n//event Markers classes\nexport var eventMarkersContainer = 'e-event-markers-container';\nexport var eventMarkersChild = 'e-event-markers';\nexport var eventMarkersSpan = 'e-span-label';\n//holiday classes\nexport var nonworkingContainer = 'e-nonworking-day-container';\nexport var holidayContainer = 'e-holiday-container';\nexport var holidayElement = 'e-holiday';\nexport var holidayLabel = 'e-span';\n//weekend classes\nexport var weekendContainer = 'e-weekend-container';\nexport var weekend = 'e-weekend';\n//Unscheduled Taskbar\nexport var unscheduledTaskbarLeft = 'e-gantt-unscheduled-taskbar-left';\nexport var unscheduledTaskbarRight = 'e-gantt-unscheduled-taskbar-right';\nexport var unscheduledTaskbar = 'e-gantt-unscheduled-taskbar';\nexport var unscheduledMilestoneTop = 'e-unscheduled-milestone-top';\nexport var unscheduledMilestoneBottom = 'e-unscheduled-milestone-bottom';\n//Connector Line\nexport var dependencyViewContainer = 'e-gantt-dependency-view-container';\nexport var connectorLineContainer = 'e-connector-line-container';\nexport var connectorLine = 'e-line';\nexport var connectorLineSVG = 'e-connector-line';\nexport var criticalConnectorLineSVG = 'e-critical-line';\nexport var criticalConnectorArrowSVG = 'e-critical-line-arrow';\nexport var connectorLineArrow = 'e-connector-line-arrow';\nexport var criticalConnectorLine = 'e-criticalconnector-line';\nexport var criticalConnectorLineRightArrow = 'e-criticalconnector-line-right-arrow';\nexport var criticalConnectorLineLeftArrow = 'e-criticalconnector-line-left-arrow';\nexport var connectorLineRightArrow = 'e-connector-line-right-arrow';\nexport var connectorLineLeftArrow = 'e-connector-line-left-arrow';\nexport var connectorLineZIndex = 'e-connector-line-z-index';\nexport var connectorLineHover = 'e-connector-line-hover';\nexport var criticalConnectorLineHover = 'e-critical-connector-line-hover';\nexport var connectorLineHoverZIndex = 'e-connector-line-hover-z-index';\nexport var connectorLineRightArrowHover = 'e-connector-line-right-arrow-hover';\nexport var connectorLineLeftArrowHover = 'e-connector-line-left-arrow-hover';\nexport var criticalConnectorLineRightArrowHover = 'e-critical-connector-line-right-arrow-hover';\nexport var criticalConnectorLineLeftArrowHover = 'e-critical-connector-line-left-arrow-hover';\nexport var connectorTouchPoint = 'e-connectortouchpoint';\nexport var connectorPointLeft = 'e-connectorpoint-left';\nexport var connectorPointRight = 'e-connectorpoint-right';\nexport var connectorPointLeftHover = 'e-connectorpoint-left-hover';\nexport var connectorPointRightHover = 'e-connectorpoint-right-hover';\nexport var falseLine = 'e-gantt-false-line';\nexport var connectorTooltipTaskName = 'e-tooltiptaskname';\nexport var connectorTooltipFalse = 'e-predecessor-false';\nexport var connectorTooltipTrue = 'e-predecessor-true';\nexport var rightConnectorPointOuterDiv = 'e-right-connectorpoint-outer-div';\nexport var leftConnectorPointOuterDiv = 'e-left-connectorpoint-outer-div';\nexport var connectorPointAllowBlock = 'e-connectorpoint-allow-block';\nexport var ganttTooltip = 'e-gantt-tooltip';\n// Context Menu\nexport var columnHeader = '.e-gridheader';\nexport var content = '.e-content';\nexport var editForm = '.e-gridform';\nexport var deleteIcon = 'e-delete';\nexport var saveIcon = 'e-save';\nexport var cancelIcon = 'e-cancel';\nexport var ascendingIcon = 'e-icon-ascending';\nexport var descendingIcon = 'e-icon-descending';\nexport var editIcon = 'e-edit';\nexport var indentIcon = 'e-indent';\nexport var outdentIcon = 'e-outdent';\nexport var addIcon = 'e-add';\nexport var criticalPathIcon = 'e-critical-path';\nexport var addAboveIcon = 'e-add-above';\nexport var addBelowIcon = 'e-add-below';\n//Predecessor touch mode\nexport var activeParentTask = 'e-active-parent-task';\nexport var activeChildTask = 'e-active-child-task';\nexport var activeConnectedTask = 'e-active-connected-task';\nexport var touchMode = 'e-predecessor-touch-mode';\n//Over allocation range container\nexport var rangeContainer = 'e-rangecontainer';\nexport var rangeChildContainer = 'e-rg-rangdiv';\nexport var rangeChildMiddleContainer = 'e-rg-middlerangdiv';\n","import { formatUnit, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * To handle scroll event on chart and from TreeGrid\n *\n * @hidden\n */\nvar ChartScroll = /** @class */ (function () {\n /**\n * Constructor for the scrolling.\n *\n * @param {Gantt} parent .\n * @hidden\n */\n function ChartScroll(parent) {\n this.previousCount = -1;\n this.isSetScrollLeft = false;\n this.previousScroll = { top: 0, left: 0 };\n this.parent = parent;\n this.element = this.parent.ganttChartModule.scrollElement;\n this.addEventListeners();\n }\n /**\n * Bind event\n *\n * @returns {void} .\n */\n ChartScroll.prototype.addEventListeners = function () {\n this.parent.on('grid-scroll', this.gridScrollHandler, this);\n EventHandler.add(this.element, 'scroll', this.onScroll, this);\n this.parent.treeGrid.grid.on('showGanttShimmer', this.updateShimmer, this);\n this.parent.treeGrid.grid.on('removeGanttShimmer', this.removeShimmer, this);\n };\n /**\n * Unbind events\n *\n * @returns {void} .\n */\n ChartScroll.prototype.removeEventListeners = function () {\n EventHandler.remove(this.element, 'scroll', this.onScroll);\n this.parent.off('grid-scroll', this.gridScrollHandler);\n this.parent.treeGrid.grid.off('showGanttShimmer', this.updateShimmer);\n this.parent.treeGrid.grid.off('removeGanttShimmer', this.removeShimmer);\n };\n /**\n *\n * @param {object} args .\n * @returns {void} .\n */\n ChartScroll.prototype.gridScrollHandler = function (args) {\n this.element.scrollTop = getValue('top', args);\n this.isFromTreeGrid = true;\n };\n /**\n * Method to update vertical grid line, holiday, event markers and weekend container's top position on scroll action\n *\n * @returns {void} .\n * @private\n */\n ChartScroll.prototype.updateContent = function () {\n var ganttElement = this.parent.element;\n var currentCount = Math.round(this.element.scrollLeft / ganttElement.offsetWidth);\n if (this.previousCount != currentCount || this.parent.timelineModule['performedTimeSpanAction']) {\n this.deleteTableElements();\n this.parent.timelineModule.createTimelineSeries();\n if (this.parent.gridLines === 'Vertical' || this.parent.gridLines === 'Both') {\n this.parent['renderChartVerticalLines']();\n }\n if (this.parent.dayMarkersModule) {\n this.parent.dayMarkersModule['eventMarkerRender'].renderEventMarkers();\n }\n this.parent.timelineModule['performedTimeSpanAction'] = false;\n if (this.parent.dayMarkersModule) {\n this.parent.dayMarkersModule.nonworkingDayRender.renderWeekends();\n this.parent.dayMarkersModule.nonworkingDayRender.renderHolidays();\n }\n this.updateChartElementStyles();\n this.previousCount = currentCount;\n if (this.isSetScrollLeft) {\n this.parent.ganttChartModule.chartTimelineContainer.scrollLeft = this.element.scrollLeft;\n }\n }\n };\n ChartScroll.prototype.getTimelineLeft = function () {\n var tLeft;\n var ganttElement = this.parent.element;\n var resultantWidth = this.parent.timelineModule.wholeTimelineWidth - ganttElement.offsetWidth * 3;\n if (this.element.scrollLeft == (this.parent.enableRtl ? -resultantWidth : resultantWidth)) {\n tLeft = this.element.scrollLeft;\n }\n else {\n var left = this.parent.enableRtl ? -this.element.scrollLeft : this.element.scrollLeft;\n tLeft = (left > ganttElement.offsetWidth) ? left - ganttElement.offsetWidth : 0;\n }\n if (tLeft >= resultantWidth) {\n tLeft = resultantWidth;\n }\n if ((tLeft <= ganttElement.offsetWidth) && this.isBackwardScrolled) {\n tLeft = 0;\n }\n if (this.parent.timelineModule.isZoomToFit || this.parent.timelineModule.isZooming) {\n tLeft = 0;\n }\n return tLeft;\n };\n ChartScroll.prototype.deleteTableElements = function () {\n var tableContainer = this.parent.element.getElementsByClassName('e-timeline-header-table-container');\n do {\n tableContainer[0].remove();\n } while (tableContainer.length > 0);\n if (this.parent.element.querySelector('#ganttContainerline-container')) {\n this.parent.element.querySelector('#ganttContainerline-container').innerHTML = '';\n }\n if (this.parent.element.querySelector('.e-nonworking-day-container')) {\n this.parent.element.querySelector('.e-nonworking-day-container').outerHTML = null;\n }\n };\n ChartScroll.prototype.updateChartElementStyles = function () {\n var translateXValue = this.getTimelineLeft();\n if (this.parent.enableTimelineVirtualization) {\n // updating connector line & task table styles\n var dependencyViewer = this.parent.connectorLineModule.dependencyViewContainer;\n var taskTable = this.parent.chartRowsModule.taskTable;\n if (!this.parent.enableRtl) {\n dependencyViewer.style.left = -translateXValue + \"px\";\n taskTable.style.left = -translateXValue + \"px\";\n }\n else {\n dependencyViewer.style.left = translateXValue + \"px\";\n }\n taskTable.style.width = this.parent.timelineModule.wholeTimelineWidth + \"px\";\n }\n };\n ChartScroll.prototype.updateTopPosition = function () {\n var content = this.parent.treeGrid.element.querySelector('.e-content');\n var contentScrollTop = content.scrollTop;\n var scrollTop;\n if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {\n var top_1 = this.parent.virtualScrollModule.getTopPosition();\n scrollTop = contentScrollTop - top_1;\n }\n else {\n scrollTop = contentScrollTop;\n }\n if (!isNullOrUndefined(this.parent.dayMarkersModule)) {\n var holidayContainer = getValue('nonworkingDayRender.holidayContainer', this.parent.dayMarkersModule);\n var weekendContainer = getValue('nonworkingDayRender.weekendContainer', this.parent.dayMarkersModule);\n var eventMarkersContainer = getValue('eventMarkerRender.eventMarkersContainer', this.parent.dayMarkersModule);\n if (holidayContainer) {\n holidayContainer.style.top = formatUnit(scrollTop);\n }\n if (weekendContainer) {\n weekendContainer.style.top = formatUnit(scrollTop);\n }\n if (eventMarkersContainer) {\n eventMarkersContainer.style.top = formatUnit(scrollTop);\n }\n }\n if (this.parent.chartVerticalLineContainer) {\n this.parent.chartVerticalLineContainer.style.top = formatUnit(scrollTop);\n }\n };\n ChartScroll.prototype.removeShimmer = function () {\n var parent = this.parent;\n setTimeout(function () {\n parent.hideMaskRow();\n if (!parent.allowTaskbarOverlap && parent.showOverAllocation) {\n for (var i = 0; i < parent.currentViewData.length; i++) {\n var tr = parent.chartRowsModule.ganttChartTableBody.childNodes[i];\n if (tr['style'].display !== 'none' && parent.currentViewData[i].hasChildRecords && !parent.currentViewData[i].expanded) {\n if (parent.ganttChartModule.isExpandAll || parent.ganttChartModule.isCollapseAll) {\n parent.treeGrid.getRowByIndex(i)['style'].height = tr['style'].height;\n }\n else {\n parent.treeGrid.getRows()[i]['style'].height = tr['style'].height;\n }\n }\n }\n parent.contentHeight = parent.enableRtl ? parent['element'].getElementsByClassName('e-content')[2].children[0]['offsetHeight'] :\n parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];\n parent.element.getElementsByClassName('e-chart-rows-container')[0]['style'].height = parent.contentHeight + 'px';\n }\n }, 0);\n };\n ChartScroll.prototype.updateShimmer = function () {\n var parent = this.parent;\n setTimeout(function () {\n parent.showMaskRow();\n }, 0);\n };\n ChartScroll.prototype.updateSpinner = function () {\n var parent = this.parent;\n this.parent.showSpinner();\n window.clearTimeout(this.isScrolling);\n this.isScrolling = setTimeout(function () {\n parent.hideSpinner();\n }, 200);\n };\n /**\n * Scroll event handler\n *\n * @returns {void} .\n */\n ChartScroll.prototype.onScroll = function () {\n var scrollArgs = {};\n if (this.element.scrollTop !== this.previousScroll.top) {\n // eslint-disable-next-line\n !this.isFromTreeGrid ? this.parent.notify('chartScroll', { top: this.element.scrollTop }) : (this.isFromTreeGrid = false);\n scrollArgs.previousScrollTop = this.previousScroll.top;\n this.previousScroll.top = this.element.scrollTop;\n scrollArgs.scrollTop = this.element.scrollTop;\n scrollArgs.scrollDirection = 'Vertical';\n scrollArgs.action = 'VerticalScroll';\n this.updateTopPosition();\n }\n if (this.element.scrollLeft !== this.previousScroll.left) {\n this.isBackwardScrolled = (this.element.scrollLeft < this.previousScroll.left && !this.parent.enableRtl);\n this.parent.ganttChartModule.chartTimelineContainer.scrollLeft = this.element.scrollLeft;\n scrollArgs.previousScrollLeft = this.previousScroll.left;\n this.previousScroll.left = this.element.scrollLeft;\n scrollArgs.scrollLeft = this.element.scrollLeft;\n scrollArgs.scrollDirection = 'Horizontal';\n scrollArgs.action = 'HorizontalScroll';\n if (this.parent.enableTimelineVirtualization && this.parent.timelineModule.wholeTimelineWidth > this.parent.element.offsetWidth * 3) {\n this.isSetScrollLeft = true;\n if (this.parent.timelineModule.totalTimelineWidth > this.parent.element.offsetWidth * 3) {\n this.updateContent();\n }\n this.parent.ganttChartModule.updateWidthAndHeight();\n if (this.parent.element.getElementsByClassName('e-weekend-container')[0]) {\n this.parent.element.getElementsByClassName('e-weekend-container')[0]['style'].height = '100%';\n }\n if (this.parent.element.getElementsByClassName('e-holiday-container')[0]) {\n this.parent.element.getElementsByClassName('e-holiday-container')[0]['style'].height = '100%';\n }\n }\n }\n this.parent.timelineModule['performedTimeSpanAction'] = false;\n if ((!isNullOrUndefined(scrollArgs.scrollDirection)) && (this.parent.enableVirtualization === true || this.parent.enableTimelineVirtualization === true) && (this.parent.isToolBarClick\n || isNullOrUndefined(this.parent.isToolBarClick))) {\n this.parent.isVirtualScroll = true;\n if (this.parent.showIndicator || isNullOrUndefined(this.parent.showIndicator)) {\n if (!this.parent.enableVirtualMaskRow && this.parent.enableVirtualization && this.parent.loadingIndicator.indicatorType === 'Spinner') {\n this.updateSpinner();\n }\n else if (this.parent.enableTimelineVirtualization && !this.parent['isRowSelected'] && Math.abs(this.element.scrollLeft - scrollArgs.previousScrollLeft) > 1000) {\n if (!this.parent.enableVirtualMaskRow && this.parent.loadingIndicator.indicatorType === 'Spinner') {\n this.updateSpinner();\n }\n else {\n this.parent.showMaskRow();\n var parent_1 = this;\n setTimeout(function () {\n parent_1.removeShimmer();\n }, 0);\n }\n }\n this.parent['isRowSelected'] = false;\n }\n }\n this.isSetScrollLeft = false;\n this.parent.isToolBarClick = true;\n scrollArgs.requestType = 'scroll';\n this.parent.trigger('actionComplete', scrollArgs);\n };\n /**\n * To set height for chart scroll container\n *\n * @param {string | number} height - To set height for scroll container in chart side\n * @returns {void} .\n * @private\n */\n ChartScroll.prototype.setHeight = function (height) {\n this.element.style.height = formatUnit(height);\n };\n /**\n * To set width for chart scroll container\n *\n * @param {string | number} width - To set width to scroll container\n * @returns {void} .\n * @private\n */\n ChartScroll.prototype.setWidth = function (width) {\n this.element.style.width = formatUnit(width);\n };\n /**\n * To set scroll top for chart scroll container\n *\n * @param {number} scrollTop - To set scroll top for scroll container\n * @returns {void} .\n * @private\n */\n ChartScroll.prototype.setScrollTop = function (scrollTop) {\n this.element.scrollTop = scrollTop;\n this.parent.treeGrid.element.querySelector('.e-content').scrollTop = scrollTop;\n };\n /**\n * To set scroll left for chart scroll container\n *\n * @param {number} scrollLeft - To set scroll left for scroll container\n * @param {number} leftSign - specifies left sign\n * @returns {void} .\n */\n ChartScroll.prototype.setScrollLeft = function (scrollLeft, leftSign) {\n if (leftSign) {\n scrollLeft = leftSign === -1 && this.parent.enableRtl ? -scrollLeft : scrollLeft;\n }\n this.isSetScrollLeft = true;\n this.element.scrollLeft = scrollLeft;\n this.parent.ganttChartModule.chartTimelineContainer.scrollLeft = this.element.scrollLeft;\n if (!this.parent.enableTimelineVirtualization || (!this.parent.enableTimelineVirtualization && this.parent.timelineModule.totalTimelineWidth > this.parent.element.offsetWidth * 3)) {\n this.previousScroll.left = this.element.scrollLeft;\n }\n };\n /**\n * Destroy scroll related elements and unbind the events\n *\n * @returns {void} .\n * @private\n */\n ChartScroll.prototype.destroy = function () {\n this.removeEventListeners();\n };\n return ChartScroll;\n}());\nexport { ChartScroll };\n","import { createElement } from '@syncfusion/ej2-base';\n/**\n * virtual Content renderer for Gantt\n */\nvar VirtualContentRenderer = /** @class */ (function () {\n function VirtualContentRenderer(parent) {\n this.parent = parent;\n }\n /**\n * To render a wrapper for chart body content when virtualization is enabled.\n *\n * @returns {void} .\n * @hidden\n */\n VirtualContentRenderer.prototype.renderWrapper = function () {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: 'position: absolute; transform: translate(0px, 0px);' });\n this.parent.ganttChartModule.scrollElement.appendChild(this.wrapper);\n this.virtualTrack = createElement('div', { className: 'e-virtualtrack', styles: 'position: relative; pointer-events: none; width: 100%;' });\n this.parent.ganttChartModule.scrollElement.appendChild(this.virtualTrack);\n this.wrapper.appendChild(this.parent.ganttChartModule.chartBodyContent);\n };\n /**\n * To append child elements for wrappered element when virtualization is enabled.\n *\n * @param {HTMLElement} element .\n * @returns {void} .\n * @hidden\n */\n VirtualContentRenderer.prototype.appendChildElements = function (element) {\n this.wrapper.appendChild(element);\n };\n /**\n * To adjust gantt content table's style when virtualization is enabled\n *\n * @returns {void} .\n * @hidden\n */\n VirtualContentRenderer.prototype.adjustTable = function () {\n var content = this.parent.treeGrid.getContent().querySelector('.e-content').querySelector('.e-virtualtable');\n if (this.parent.enableTimelineVirtualization) {\n var virtualTable = document.getElementsByClassName('e-virtualtable')[1].style.transform;\n var treegridVirtualHeight = this.parent.treeGrid.element.getElementsByClassName('e-virtualtable')[0].style.transform;\n var translateXValue = void 0;\n if (virtualTable !== \"\") {\n translateXValue = virtualTable.match(/translate.*\\((.+)\\)/)[1].split(', ')[0];\n }\n else {\n var chartTransform = this.parent.ganttChartModule.scrollElement.getElementsByClassName('e-virtualtable')[0].style.transform;\n translateXValue = chartTransform.match(/translate.*\\((.+)\\)/)[1].split(', ')[0];\n }\n var translateYValue = treegridVirtualHeight.match(/translate.*\\((.+)\\)/)[1].split(', ')[1];\n this.parent.ganttChartModule.virtualRender.wrapper.style.transform = \"translate(\" + translateXValue + \", \" + translateYValue + \")\";\n }\n else {\n this.parent.ganttChartModule.virtualRender.wrapper.style.transform = content.style.transform;\n }\n };\n return VirtualContentRenderer;\n}());\nexport { VirtualContentRenderer };\n","import { createElement, formatUnit, EventHandler, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, closest, addClass, removeClass, getValue, setValue } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nimport { ChartScroll } from '../actions/chart-scroll';\nimport { click } from '@syncfusion/ej2-grids';\nimport { VirtualContentRenderer } from '../renderer/virtual-content-render';\n/**\n * module to render gantt chart - project view\n */\nvar GanttChart = /** @class */ (function () {\n function GanttChart(parent) {\n this.isExpandCollapseFromChart = false;\n this.isExpandAll = false;\n this.isCollapseAll = false;\n this.isGanttElement = false;\n this.parent = parent;\n this.chartTimelineContainer = null;\n this.rangeViewContainer =\n createElement('div', { className: cls.rangeContainer });\n this.rangeViewContainer.setAttribute(\"role\", \"button\");\n this.rangeViewContainer.setAttribute(\"aria-label\", \"RangeContainer\");\n this.virtualRender = new VirtualContentRenderer(this.parent);\n this.addEventListener();\n }\n GanttChart.prototype.addEventListener = function () {\n this.parent.on('renderPanels', this.renderChartContainer, this);\n this.parent.on('recordsUpdated', this.renderChartElements, this);\n this.parent.on('dataReady', this.renderInitialContents, this);\n this.parent.on('tree-grid-created', this.renderChartContents, this);\n this.parent.on('destroy', this.destroy, this);\n };\n GanttChart.prototype.renderChartContents = function () {\n this.parent.notify('refreshDayMarkers', {});\n this.wireEvents();\n };\n /**\n * Method to render top level containers in Gantt chart\n *\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.renderChartContainer = function () {\n this.chartElement = createElement('div', { id: this.parent.element.id + 'GanttChart', className: cls.ganttChart });\n this.parent.chartPane.appendChild(this.chartElement);\n this.renderTimelineContainer();\n this.renderBodyContainers();\n // render top level div header and content\n // Get timeline header from timeline class file and append to header div\n // render content div\n // Render scroll able div\n // Render container for all element like, table, weekend and holidays\n // Get rows element from rows renderer class\n // Get label related info label renderer class\n // Get baseline from baseline renderer class\n // Get weekend elements from weekend-holidays renderer class\n };\n /**\n * method to render timeline, holidays, weekends at load time\n *\n * @returns {void} .\n */\n GanttChart.prototype.renderInitialContents = function () {\n this.parent.timelineModule.createTimelineSeries();\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.renderOverAllocationContainer = function () {\n for (var i = 0; i < this.parent.flatData.length; i++) {\n var data = this.parent.flatData[i];\n if (data.childRecords.length > 0) {\n this.parent.dataOperation.updateOverlappingValues(data);\n }\n }\n var rangeContainer = this.parent.element.querySelector('.' + cls.rangeContainer);\n if (rangeContainer) {\n rangeContainer.innerHTML = '';\n }\n if (this.parent.treeGrid.grid.filterSettings.columns.length === 0) {\n this.renderRangeContainer(this.parent.currentViewData);\n }\n };\n GanttChart.prototype.renderChartElements = function () {\n if (this.parent.isFromOnPropertyChange) {\n this.rangeViewContainer.innerHTML = '';\n this.parent.updateProjectDates(this.parent.cloneProjectStartDate, this.parent.cloneProjectEndDate, this.parent.isTimelineRoundOff);\n this.parent.isFromOnPropertyChange = false;\n }\n else {\n this.parent.chartRowsModule.renderChartRows();\n if (this.parent.predecessorModule && this.parent.taskFields.dependency) {\n this.parent.connectorLineIds = [];\n this.parent.updatedConnectorLineCollection = [];\n this.parent.predecessorModule.createConnectorLinesCollection();\n }\n this.parent.connectorLineModule.renderConnectorLines(this.parent.updatedConnectorLineCollection);\n for (var i = 0; i < this.parent.chartRowsModule.ganttChartTableBody.children.length; i++) {\n if (this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[4]) {\n this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[1].setAttribute('tabindex', '-1');\n this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[2].setAttribute('tabindex', '-1');\n this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[4].setAttribute('tabindex', '-1');\n }\n else {\n if (this.parent.viewType === 'ProjectView') {\n if (!isNullOrUndefined(this.parent.chartRowsModule.ganttChartTableBody.children[parseInt(i.toString(), 10)].children[0].children[1].children[1])) {\n this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[1].setAttribute('tabindex', '-1');\n }\n }\n else if (this.parent.chartRowsModule.ganttChartTableBody.children[parseInt(i.toString(), 10)].children[0].children[1].children[0]) {\n this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[0].setAttribute('tabindex', '-1');\n }\n }\n }\n var criticalModule = this.parent.criticalPathModule;\n if (this.parent.enableCriticalPath && criticalModule && criticalModule.criticalPathCollection) {\n this.parent.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, this.parent.enableCriticalPath, criticalModule.predecessorCollectionTaskIds);\n }\n if (this.parent.showOverAllocation) {\n this.renderOverAllocationContainer();\n }\n }\n this.updateWidthAndHeight();\n this.parent.notify('selectRowByIndex', {});\n if (this.parent.timelineModule.isZoomToFit) {\n this.parent.timelineModule.processZoomToFit();\n }\n };\n /**\n * @param {IGanttData[]} records .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.renderRangeContainer = function (records) {\n var recordLength = records.length;\n var count;\n var ganttRecord;\n var rangeCollection;\n if (this.parent.treeGrid.grid.filterSettings.columns.length === 0) {\n for (count = 0; count < recordLength; count++) {\n ganttRecord = records[count];\n rangeCollection = ganttRecord.ganttProperties.workTimelineRanges;\n if (rangeCollection) {\n this.renderRange(rangeCollection, ganttRecord);\n }\n }\n }\n };\n GanttChart.prototype.getTopValue = function (currentRecord) {\n var updatedRecords = this.parent.getExpandedRecords(this.parent.currentViewData);\n var recordIndex = updatedRecords.indexOf(currentRecord);\n if (currentRecord.parentItem && recordIndex === -1) {\n var nestedParent = this.parent.getRecordByID(currentRecord.parentItem.taskId);\n recordIndex = updatedRecords.indexOf(nestedParent);\n }\n if (!currentRecord.expanded) {\n return (recordIndex * this.parent.rowHeight);\n }\n return ((recordIndex + 1) * this.parent.rowHeight);\n };\n /*get height for range bar*/\n GanttChart.prototype.getRangeHeight = function (data) {\n if (!data.expanded && data.hasChildRecords) {\n return (this.parent.rowHeight - Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight)));\n }\n return (data.childRecords.length * this.parent.rowHeight) -\n Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight));\n };\n GanttChart.prototype.renderRange = function (rangeCollection, currentRecord) {\n var topValue = 0;\n var rowIndex = this.parent.currentViewData.indexOf(currentRecord);\n if (!this.parent.allowTaskbarOverlap && this.parent.enableMultiTaskbar) {\n topValue = !currentRecord.expanded ? this.parent.getRowByIndex(rowIndex).offsetTop : this.parent.getRowByIndex(rowIndex).offsetTop + this.parent.rowHeight;\n }\n else {\n topValue = this.getTopValue(currentRecord);\n }\n var sameIDElement = this.rangeViewContainer.querySelector('.' + 'rangeContainer' + currentRecord.ganttProperties.rowUniqueID);\n if (sameIDElement) {\n sameIDElement.remove();\n }\n var parentDiv = createElement('div', {\n className: 'rangeContainer' + currentRecord.ganttProperties.rowUniqueID, styles: \"top:\" + topValue + \"px; position: absolute;\"\n });\n if (currentRecord.level === 0 && !currentRecord.expanded && isNullOrUndefined(currentRecord.parentItem)\n && !this.parent.enableMultiTaskbar) {\n return;\n }\n if (currentRecord.level > 0 && currentRecord.expanded && !this.parent.getRecordByID(currentRecord.parentItem.taskId).expanded) {\n return;\n }\n for (var i = 0; i < rangeCollection.length; i++) {\n var height = void 0;\n if (!this.parent.allowTaskbarOverlap && !currentRecord.expanded && this.parent.enableMultiTaskbar && !this.isCollapseAll) {\n height = parseInt(this.parent.chartRowsModule.ganttChartTableBody.childNodes[rowIndex].style.height) -\n (this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight);\n }\n else {\n height = this.getRangeHeight(currentRecord);\n }\n var leftDiv = createElement('div', {\n className: cls.rangeChildContainer + ' ' + 'e-leftarc', styles: (this.parent.enableRtl ? 'right:' : 'left:') +\n ((this.parent.enableRtl ? rangeCollection[i].left + rangeCollection[i].width - 5 : rangeCollection[i].left) + \"px;\\n top: \" + Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2) + \"px;\\n height: \" + (height + 1) + \"px; border-right: 0px;\\n z-index: \" + ((this.parent.viewType === 'ProjectView') ? currentRecord.childRecords.length > 1 ? currentRecord.childRecords.length + 1 : currentRecord.childRecords.length : 6))\n });\n var rightDiv = createElement('div', {\n className: cls.rangeChildContainer + ' ' + 'e-rightarc',\n styles: (this.parent.enableRtl ? 'right:' : 'left:') + ((this.parent.enableRtl ? rangeCollection[i].left :\n rangeCollection[i].left + rangeCollection[i].width - 5) + \"px;\\n top: \" + Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2) + \"px; height: \" + (height + 1) + \"px;\\n border-left: 0px;\\n z-index: \" + ((this.parent.viewType === 'ProjectView') ? currentRecord.childRecords.length > 1 ? currentRecord.childRecords.length + 1 : currentRecord.childRecords.length : 6))\n });\n parentDiv.appendChild(leftDiv);\n parentDiv.appendChild(rightDiv);\n this.rangeViewContainer.appendChild(parentDiv);\n }\n this.parent.ganttChartModule.chartBodyContent.appendChild(this.rangeViewContainer);\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.renderTimelineContainer = function () {\n this.chartTimelineContainer =\n createElement('div', { className: cls.timelineHeaderContainer });\n if (this.parent.enableRtl) {\n this.chartTimelineContainer.style.borderLeftWidth = '1px';\n this.chartTimelineContainer.style.borderRightWidth = '0px';\n }\n this.chartTimelineContainer.setAttribute(\"role\", \"presentation\");\n this.chartElement.appendChild(this.chartTimelineContainer);\n };\n /**\n * initiate chart container\n *\n * @returns {void} .\n */\n GanttChart.prototype.renderBodyContainers = function () {\n this.chartBodyContainer = createElement('div', { className: cls.chartBodyContainer });\n this.chartElement.appendChild(this.chartBodyContainer);\n this.scrollElement = createElement('div', {\n className: cls.chartScrollElement + ' ' + cls.scrollContent, styles: 'position:relative;'\n });\n this.chartBodyContainer.appendChild(this.scrollElement);\n this.chartBodyContent = createElement('div', { className: cls.chartBodyContent, styles: 'position:relative; overflow:hidden ' });\n if (this.parent.virtualScrollModule && this.parent.enableVirtualization || this.parent.enableTimelineVirtualization) {\n this.parent.ganttChartModule.virtualRender.renderWrapper();\n }\n else {\n this.scrollElement.appendChild(this.chartBodyContent);\n }\n // this.parent.chartRowsModule.createChartTable();\n this.scrollObject = new ChartScroll(this.parent);\n //this.scrollObject.setWidth(this.chartProperties.width);\n var toolbarHeight = 0;\n if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {\n toolbarHeight = this.parent.toolbarModule.element.offsetHeight;\n }\n this.scrollObject.\n setHeight(this.parent.ganttHeight - this.chartTimelineContainer.offsetHeight - toolbarHeight);\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.updateWidthAndHeight = function () {\n //empty row height\n var emptydivHeight = 36;\n var emptyHeight = this.parent.contentHeight === 0 ? this.parent.flatData.length > 1 ? emptydivHeight : 0 : this.parent.contentHeight;\n var contentElement = this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0];\n if (emptyHeight >= contentElement['offsetHeight'] || this.parent.height === 'auto' || (contentElement['offsetHeight'] - emptyHeight) < emptydivHeight) {\n this.chartBodyContent.style.height = formatUnit(emptyHeight);\n }\n else {\n var scrollHeight = this.parent.element.getElementsByClassName('e-chart-rows-container')[0]['offsetHeight'];\n if (contentElement['offsetHeight'] >= scrollHeight) {\n this.chartBodyContent.style.height = contentElement['offsetHeight'] - 17 + 'px';\n }\n else {\n this.chartBodyContent.style.height = contentElement['offsetHeight'] + 'px';\n }\n } //let element: HTMLElement = this.chartTimelineContainer.querySelector('.' + cls.timelineHeaderTableContainer);\n this.chartBodyContent.style.width = (this.parent.enableTimelineVirtualization && (this.parent.timelineModule.totalTimelineWidth > this.parent.element.offsetWidth * 3)) ? formatUnit(this.parent.element.offsetWidth * 3)\n : formatUnit(this.parent.timelineModule.totalTimelineWidth);\n this.setVirtualHeight();\n this.parent.notify('updateHeight', {});\n this.parent.updateGridLineContainerHeight();\n this.updateLastRowBottomWidth();\n };\n GanttChart.prototype.setVirtualHeight = function () {\n if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {\n var wrapper = getValue('virtualTrack', this.parent.ganttChartModule.virtualRender);\n wrapper.style.height = this.parent.treeGrid.element.getElementsByClassName('e-virtualtrack')[0].style.height;\n var wrapper1 = getValue('wrapper', this.parent.ganttChartModule.virtualRender);\n var treegridVirtualHeight = this.parent.treeGrid.element.getElementsByClassName('e-virtualtable')[0].style.transform;\n var virtualTable = document.getElementsByClassName('e-virtualtable')[1].style.transform;\n if (this.parent.enableTimelineVirtualization) {\n var translateXValue = void 0;\n if (virtualTable !== \"\") {\n translateXValue = virtualTable.match(/translate.*\\((.+)\\)/)[1].split(', ')[0];\n }\n else {\n var chartTransform = this.parent.ganttChartModule.scrollElement.getElementsByClassName('e-virtualtable')[0].style.transform;\n translateXValue = chartTransform.match(/translate.*\\((.+)\\)/)[1].split(', ')[0];\n }\n var translateYValue = treegridVirtualHeight.match(/translate.*\\((.+)\\)/)[1].split(', ')[1];\n wrapper1.style.transform = \"translate(\" + translateXValue + \", \" + translateYValue + \")\";\n }\n else {\n wrapper1.style.transform = treegridVirtualHeight;\n }\n }\n };\n /**\n * Method to update bottom border for chart rows\n *\n * @returns {void} .\n */\n GanttChart.prototype.updateLastRowBottomWidth = function () {\n if (this.parent.currentViewData.length > 0 && this.parent.height !== 'auto') {\n var expandedRecords = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n this.parent.currentViewData : this.parent.getExpandedRecords(this.parent.currentViewData);\n var lastExpandedRow = expandedRecords[expandedRecords.length - 1];\n var lastExpandedRowIndex = this.parent.currentViewData.indexOf(lastExpandedRow);\n var lastRow = this.parent.getRowByIndex(lastExpandedRowIndex);\n var table = this.parent.chartRowsModule.ganttChartTableBody;\n if (table.querySelectorAll('.e-chart-row-cell.e-chart-row-border.e-lastrow')) {\n removeClass(table.querySelectorAll('.e-chart-row-cell.e-chart-row-border.e-lastrow'), 'e-lastrow');\n }\n if (this.chartBodyContent.clientHeight < this.chartBodyContainer.clientHeight) {\n if (lastRow) {\n addClass(lastRow.querySelectorAll('td'), 'e-lastrow');\n var emptydivHeight = 36;\n var emptyHeight = this.parent.contentHeight === 0 ? this.parent.flatData.length > 1 ? emptydivHeight : 0 : this.parent.contentHeight;\n var contentElement = this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0];\n if (emptyHeight >= contentElement['offsetHeight'] || (contentElement['offsetHeight'] - emptyHeight) < emptydivHeight) {\n this.chartBodyContent.style.height = formatUnit(emptyHeight);\n }\n else {\n var scrollHeight = this.parent.element.getElementsByClassName('e-chart-rows-container')[0]['offsetHeight'];\n if (contentElement['offsetHeight'] >= scrollHeight) {\n this.chartBodyContent.style.height = contentElement['offsetHeight'] - 17 + 'px';\n }\n else {\n this.chartBodyContent.style.height = contentElement['offsetHeight'] + 'px';\n }\n }\n }\n }\n }\n };\n GanttChart.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('renderPanels', this.renderChartContainer);\n this.parent.off('recordsUpdated', this.renderChartElements);\n this.parent.off('dataReady', this.renderInitialContents);\n this.parent.off('tree-grid-created', this.renderChartContents);\n this.parent.off('destroy', this.destroy);\n };\n /**\n * Click event handler in chart side\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n */\n GanttChart.prototype.ganttChartMouseDown = function (e) {\n var cancel = false;\n if (this.parent.allowTaskbarDragAndDrop && this.parent.editModule && this.parent.editSettings.allowTaskbarEditing) {\n var editAction = this.parent.editModule.taskbarEditModule['getTaskBarAction'](e);\n if (editAction === 'ChildDrag' || editAction === 'ParentDrag' || editAction === 'MilestoneDrag' || editAction === 'ManualParentDrag') {\n var args = {\n cancel: cancel,\n data: this.getRecordByTaskBar(e.target),\n target: e.target,\n chartRow: closest(e.target, 'tr')\n };\n this.parent.trigger('rowDragStartHelper', args);\n cancel = args['cancel'];\n }\n }\n if (!cancel) {\n if (e.which !== 3 && this.parent.editSettings.allowTaskbarEditing) {\n this.parent.notify('chartMouseDown', e);\n this.parent.element.tabIndex = 0;\n }\n var isTaskbarEdited = false;\n if (this.parent.editSettings.allowTaskbarEditing && (this.parent.element.querySelector('.e-left-resize-gripper') || this.parent.element.querySelector('.e-left-connectorpoint-outer-div'))) {\n isTaskbarEdited = true;\n }\n if (!isTaskbarEdited || e.button == 2) {\n if (this.parent.editSettings.allowEditing && this.parent.treeGrid.element.getElementsByClassName('e-editedbatchcell').length > 0) {\n this.parent.treeGrid.endEdit();\n }\n }\n }\n };\n GanttChart.prototype.ganttChartMouseClick = function (e) {\n if (this.parent.autoFocusTasks) {\n this.scrollToTarget(e); /** Scroll to task */\n }\n this.parent.notify('chartMouseClick', e);\n };\n GanttChart.prototype.ganttChartMouseUp = function (e) {\n if (e.type === \"touchend\") {\n var resizeCheck = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-taskbar-resize-div');\n if (!isNullOrUndefined(resizeCheck)) {\n resizeCheck.remove();\n }\n var Check = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-clone-taskbar') || this.parent.chartPane.querySelector('.e-clone-taskbar');\n if (!isNullOrUndefined(Check)) {\n var clonetbody = Check.parentElement;\n var cloneTable = clonetbody.parentElement;\n cloneTable.remove();\n }\n var falseline = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-gantt-false-line');\n if (!isNullOrUndefined(falseline)) {\n this.parent.editModule.taskbarEditModule.removeFalseLine(true);\n }\n }\n if (this.parent.editSettings.allowTaskbarEditing) {\n this.parent.notify('chartMouseUp', e);\n }\n if (!this.parent.editSettings.allowEditing) {\n var isTaskbarEdited = false;\n if (this.parent.editSettings.allowTaskbarEditing &&\n getValue('editModule.taskbarEditModule.isMouseDragged', this.parent) &&\n getValue('editModule.taskbarEditModule.taskBarEditAction', this.parent)) {\n isTaskbarEdited = true;\n }\n if (!isTaskbarEdited) {\n /** Expand/collapse action */\n var target = e.target;\n var isOnTaskbarElement = e.target.classList.contains(cls.taskBarMainContainer)\n || closest(e.target, '.' + cls.taskBarMainContainer);\n if (closest(target, '.e-gantt-parent-taskbar') && !this.parent.editSettings.allowEditing) {\n this.chartExpandCollapseRequest(e);\n }\n else if (!isOnTaskbarElement && this.parent.autoFocusTasks) {\n this.scrollToTarget(e); /** Scroll to task */\n }\n }\n }\n };\n /**\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n */\n GanttChart.prototype.scrollToTarget = function (e) {\n var row = closest(e.target, 'tr');\n if (row && this.parent.element.contains(row) &&\n (this.parent.element.querySelectorAll('.e-chart-rows-container')[0].contains(e.target) ||\n this.parent.element.querySelectorAll('.e-gridcontent')[0].contains(e.target)) &&\n this.parent.currentViewData.length > 0) {\n var rowIndex = getValue('rowIndex', closest(e.target, 'tr'));\n var dateObject = this.parent.currentViewData[rowIndex].ganttProperties.startDate;\n var dateObjLeft = this.parent.currentViewData[rowIndex].ganttProperties.left;\n if (!isNullOrUndefined(dateObject)) {\n var left = !this.parent.enableTimelineVirtualization ? this.parent.dataOperation.getTaskLeft(dateObject, false) : {};\n if (this.parent.autoFocusTasks) {\n this.parent.enableTimelineVirtualization ? this.updateScrollLeft(dateObjLeft) : this.updateScrollLeft(left);\n }\n }\n }\n };\n /**\n * To focus selected task in chart side\n *\n * @param {number} scrollLeft .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.updateScrollLeft = function (scrollLeft) {\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n scrollLeft = this.scrollElement.scrollWidth <= scrollLeft ? this.scrollElement.scrollWidth : scrollLeft;\n if ((this.scrollElement.offsetWidth + this.parent.ganttChartModule.scrollElement.scrollLeft) < scrollLeft\n || (this.scrollElement.scrollLeft > scrollLeft)) {\n this.scrollObject.setScrollLeft(scrollLeft - 50, this.parent.enableRtl ? -1 : 0);\n }\n // this.parent.ganttChartModule.scrollObject.updateLeftPosition();\n };\n /**\n * Method trigger while perform mouse up action.\n *\n * @param {PointerEvent} e .\n * @returns {void}\n * @private\n */\n GanttChart.prototype.mouseUp = function (e) {\n if (!isNullOrUndefined(this.parent.editModule) && !isNullOrUndefined(this.parent.editModule.taskbarEditModule)) {\n this.parent.editModule.taskbarEditModule.removeFalseLine(false);\n }\n var resizeCheck = this.parent.element.querySelector(\".e-taskbar-resize-div\");\n if (!isNullOrUndefined(resizeCheck)) {\n resizeCheck.remove();\n }\n if (this.parent.allowTaskbarDragAndDrop && this.parent.editModule && this.parent.editModule.taskbarEditModule) {\n this.parent.editModule.taskbarEditModule['previousLeftValue'] = 0;\n }\n if (this.parent.allowRowDragAndDrop) {\n var ganttDragElemet = this.parent.element.querySelector('.e-ganttdrag');\n if (ganttDragElemet) {\n ganttDragElemet.remove();\n }\n }\n if (!this.isGanttElement) {\n this.parent.notify('chartMouseUp', e);\n }\n this.isGanttElement = false;\n };\n /**\n * Method trigger while perform mouse up action.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.documentMouseUp = function (e) {\n this.isGanttElement = true;\n if (e.target.classList.contains('e-treegridexpand') ||\n e.target.classList.contains('e-treegridcollapse')) {\n if (getValue('isEditCollapse', this.parent.treeGrid) === true) {\n setValue('isEditCollapse', false, this.parent.treeGrid);\n }\n }\n if (this.parent.allowRowDragAndDrop) {\n var ganttDragElemet = this.parent.element.querySelector('.e-ganttdrag');\n if (ganttDragElemet) {\n ganttDragElemet.remove();\n }\n }\n if (this.parent.isDestroyed || e.which === 3) {\n return;\n }\n var resizeCheck = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-taskbar-resize-div');\n if (!isNullOrUndefined(resizeCheck)) {\n resizeCheck.remove();\n }\n var Check = this.parent.element.getElementsByClassName('e-clone-taskbar')[0];\n if (!isNullOrUndefined(Check)) {\n var clonetbody = Check.parentElement;\n var cloneTable = clonetbody.parentElement;\n cloneTable.remove();\n }\n var isTaskbarEdited = false;\n if (this.parent.editSettings.allowTaskbarEditing &&\n getValue('editModule.taskbarEditModule.isMouseDragged', this.parent) &&\n getValue('editModule.taskbarEditModule.taskBarEditAction', this.parent)) {\n isTaskbarEdited = true;\n }\n this.parent.notify('chartMouseUp', e);\n if (this.parent.showActiveElement) {\n this.parent.showIndicator = true;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n if (this.focusedElement && !e.target.classList.contains('e-split-bar')) {\n this.focusedElement.tabIndex = this.focusedElement.tabIndex === 0 ? -1 : this.focusedElement.tabIndex;\n removeClass([this.focusedElement], 'e-active-container');\n }\n }\n if (!isTaskbarEdited) {\n /** Expand/collapse action */\n var target = e.target;\n var isOnTaskbarElement = e.target.classList.contains(cls.taskBarMainContainer)\n || closest(e.target, '.' + cls.taskBarMainContainer);\n if (closest(target, '.e-gantt-parent-taskbar') && !this.parent.editSettings.allowEditing) {\n this.chartExpandCollapseRequest(e);\n }\n else if (!isOnTaskbarElement && this.parent.autoFocusTasks) {\n this.scrollToTarget(e); /** Scroll to task */\n }\n }\n if (this.parent.editModule && this.parent.editModule.taskbarEditModule) {\n this.parent.editModule.taskbarEditModule.removeFalseLine(true);\n }\n if (!isNullOrUndefined(this.parent.onTaskbarClick) && !isTaskbarEdited) {\n var target = e.target;\n var taskbarElement = closest(target, '.e-gantt-parent-taskbar,.e-gantt-child-taskbar,.e-gantt-milestone');\n if (taskbarElement) {\n this.onTaskbarClick(e, target, taskbarElement);\n }\n }\n };\n /**\n * This event triggered when click on taskbar element\n *\n * @param {PointerEvent | KeyboardEventArgs} e .\n * @param {EventTarget} target .\n * @param {Element} taskbarElement .\n * @returns {void}\n */\n GanttChart.prototype.onTaskbarClick = function (e, target, taskbarElement) {\n var chartRow = closest(target, 'tr');\n var rowIndex = getValue('rowIndex', chartRow);\n var data = this.getRecordByTarget(e);\n var args = {\n data: data,\n taskbarElement: taskbarElement,\n rowIndex: rowIndex,\n target: target\n };\n this.parent.trigger('onTaskbarClick', args);\n };\n /**\n * Method trigger while perform mouse leave action.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.ganttChartLeave = function (e) {\n if (this.parent.editSettings.allowTaskbarEditing) {\n this.parent.notify('chartMouseLeave', e);\n }\n };\n /**\n * Method trigger while perform mouse move action.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.ganttChartMove = function (e) {\n if (this.parent.editSettings.allowTaskbarEditing) {\n if (this.parent.element.getElementsByClassName('e-clone-taskbar').length > 0 && !this.parent.enableRtl) {\n var xValue = void 0;\n if (e.type === 'touchmove' || e.type === 'touchstart' || e.type === 'touchend') {\n xValue = e['changedTouches'][0].pageX;\n }\n else {\n xValue = e.pageX;\n }\n if (xValue <= this.parent.getOffsetRect(this.parent.ganttChartModule.chartElement).left) {\n return;\n }\n }\n this.parent.notify('chartMouseMove', e);\n if (!isNullOrUndefined(this.parent.taskFields.dependency) && this.parent.connectorLineEditModule) {\n this.parent.connectorLineEditModule.updateConnectorLineEditElement(e);\n }\n }\n };\n /**\n * Method trigger while perform right click action.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.contextClick = function (e) {\n if (this.parent.allowFiltering && this.parent.filterModule) {\n this.parent.filterModule.closeFilterOnContextClick(e.srcElement);\n }\n if (this.parent.allowTaskbarDragAndDrop) {\n var Check = this.parent.chartPane.querySelector('.e-clone-taskbar');\n if (!isNullOrUndefined(Check)) {\n var clonetbody = Check.parentElement;\n var cloneTable = clonetbody.parentElement;\n cloneTable.remove();\n }\n }\n };\n /**\n * Method to trigger while perform mouse move on Gantt.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.mouseMoveHandler = function (e) {\n if (!isNullOrUndefined(this.parent.onMouseMove) &&\n (this.parent.flatData.length ||\n e.target.classList.contains('e-header-cell-label') ||\n e.target.classList.contains('e-headercell'))) {\n var target = e.target;\n var args = { originalEvent: e };\n var element = closest(target, '.e-chart-row-cell,.e-connector-line-container,' +\n '.e-event-markers,.e-header-cell-label,.e-rowcell,.e-headercell,.e-indicator-span');\n if (element) {\n var rowData = void 0;\n var rowElement = closest(target, '.e-rowcell,.e-chart-row-cell');\n var columnElement = closest(target, '.e-rowcell,.e-headercell');\n if (rowElement) {\n rowData = this.parent.ganttChartModule.getRecordByTarget(e);\n args.data = rowData;\n }\n if (columnElement) {\n var cellIndex = getValue('cellIndex', columnElement);\n args.column = this.parent.treeGrid.columns[cellIndex];\n }\n if (closest(target, '.e-indicator-span')) {\n var index = 0;\n var indicators = rowData.ganttProperties.indicators;\n if (indicators.length > 1) {\n for (index = 0; index < indicators.length; index++) {\n if (indicators[index].name === (element.innerText).trim()) {\n break;\n }\n }\n }\n args.indicator = indicators[index];\n }\n if (closest(target, '.e-connector-line-container')) {\n var obj = {};\n obj.target = element;\n args.predecessor = this.parent.tooltipModule.getPredecessorTooltipData(obj);\n }\n if (closest(target, '.e-event-markers')) {\n var obj = {};\n obj.target = element;\n args.eventMarkers = this.parent.tooltipModule.getMarkerTooltipData(obj);\n }\n if (target.classList.contains('e-header-cell-label')) {\n args.date = new Date(target.dataset.content);\n }\n }\n this.parent.trigger('onMouseMove', args);\n }\n };\n /**\n * Double click handler for chart\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n */\n GanttChart.prototype.doubleClickHandler = function (e) {\n var target = e.target;\n var row = closest(target, 'tr');\n var rowIndex = getValue('rowIndex', row);\n var rowData = this.parent.ganttChartModule.getRecordByTarget(e);\n if (this.parent.editSettings.allowEditing && this.parent.treeGrid.element.getElementsByClassName('e-editedbatchcell').length > 0) {\n this.parent.treeGrid.endEdit();\n }\n this.parent.notify('chartDblClick', e);\n var args = {\n row: row,\n rowData: rowData,\n rowIndex: rowIndex,\n target: target\n };\n this.recordDoubleClick(args);\n };\n /**\n * To trigger record double click event.\n *\n * @param {RecordDoubleClickEventArgs} args .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.recordDoubleClick = function (args) {\n this.parent.trigger('recordDoubleClick', args);\n };\n /**\n * @param {PointerEvent | KeyboardEventArgs} e .\n * @returns {IGanttData} .\n * @private\n */\n GanttChart.prototype.getRecordByTarget = function (e) {\n var ganttData;\n var row = closest(e.target, 'div.' + cls.taskBarMainContainer);\n if (!isNullOrUndefined(row)) {\n var id = row.getAttribute('rowUniqueId');\n ganttData = this.parent.getRecordByID(id);\n }\n else {\n row = closest(e.target, 'tr');\n if (row) {\n var rowIndex = getValue('rowIndex', closest(e.target, 'tr'));\n ganttData = this.parent.currentViewData[rowIndex];\n }\n }\n return ganttData;\n };\n /**\n * To get gantt chart row elements\n *\n * @returns {NodeListOf} .\n * @private\n */\n GanttChart.prototype.getChartRows = function () {\n if (document.getElementById(this.parent.element.id + 'GanttTaskTableBody') != null) {\n return document.getElementById(this.parent.element.id + 'GanttTaskTableBody').querySelectorAll('.e-chart-row');\n }\n else {\n return null;\n }\n };\n /**\n * Expand Collapse operations from gantt chart side\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.chartExpandCollapseRequest = function (e) {\n if (this.parent.enableMultiTaskbar) {\n return;\n }\n var target = e.target;\n var parentElement = closest(target, '.e-gantt-parent-taskbar');\n var record = this.getRecordByTarget(e);\n var chartRow = closest(target, 'tr');\n var rowIndex = getValue('rowIndex', chartRow);\n var gridRow = this.parent.treeGrid.getRows()[rowIndex];\n var args = { data: record, gridRow: gridRow, chartRow: chartRow, cancel: false };\n this.isExpandCollapseFromChart = true;\n if (parentElement.classList.contains('e-row-expand')) {\n this.collapseGanttRow(args);\n }\n else if (parentElement.classList.contains('e-row-collapse')) {\n this.expandGanttRow(args);\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.reRenderConnectorLines = function () {\n this.parent.connectorLineModule.dependencyViewContainer.innerHTML = '';\n this.parent.connectorLineIds = [];\n this.parent.updatedConnectorLineCollection = [];\n this.parent.predecessorModule.createConnectorLinesCollection();\n this.parent.connectorLineModule.renderConnectorLines(this.parent.updatedConnectorLineCollection);\n var criticalModule = this.parent.criticalPathModule;\n if (this.parent.enableCriticalPath && criticalModule && criticalModule.criticalPathCollection) {\n criticalModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n };\n /**\n * To collapse gantt rows\n *\n * @param {object} args .\n * @param {boolean} isCancel .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.collapseGanttRow = function (args, isCancel) {\n var _this = this;\n if (isCancel) {\n this.collapsedGanttRow(args);\n }\n else {\n this.parent.trigger('collapsing', args, function (arg) {\n if (_this.isExpandCollapseFromChart && !getValue('cancel', arg)) {\n _this.collapsedGanttRow(arg);\n }\n _this.isExpandCollapseFromChart = false;\n });\n }\n };\n /**\n * @returns {void} .\n * @param {object} args .\n * @private\n */\n GanttChart.prototype.collapsedGanttRow = function (args) {\n var _this = this;\n if ((isNullOrUndefined(args['gridRow']) && this.parent.enableVirtualization) || isNullOrUndefined(args['chartRow'])) {\n return;\n }\n var record;\n if (!this.parent.loadChildOnDemand && this.parent.taskFields.hasChildMapping) {\n record = this.parent.currentViewData.filter(function (item) { return item.ganttProperties[_this.parent.taskFields.id] === args['data'][_this.parent.taskFields.id]; })[0];\n }\n else {\n record = getValue('data', args);\n }\n if (this.isExpandCollapseFromChart) {\n this.expandCollapseChartRows('collapse', getValue('chartRow', args), record, null);\n var idField_1 = this.parent.taskFields.id;\n if (!this.parent.loadChildOnDemand && this.parent.taskFields.hasChildMapping) {\n var gridRec = this.parent.treeGrid.getCurrentViewRecords().filter(function (item) { return item[idField_1] == args['data'][idField_1]; })[0];\n this.parent.treeGrid.collapseRow(getValue('gridRow', args), gridRec);\n }\n else {\n this.parent.treeGrid.collapseRow(getValue('gridRow', args), record);\n }\n this.isExpandCollapseFromChart = false;\n }\n else {\n this.expandCollapseChartRows('collapse', getValue('chartRow', args), record, null);\n }\n // To render the child record on parent row after collapsing\n if (this.parent.viewType === 'ResourceView' || this.parent.viewType === 'ProjectView') {\n this.renderMultiTaskbar(record);\n }\n if (!this.parent.enableVirtualization) {\n this.parent.updateContentHeight();\n }\n this.updateWidthAndHeight();\n this.reRenderConnectorLines();\n getValue('chartRow', args).setAttribute('aria-expanded', 'false');\n };\n /**\n * To expand gantt rows\n *\n * @returns {void} .\n * @param {object} args .\n * @param {boolean} isCancel .\n * @private\n */\n GanttChart.prototype.expandGanttRow = function (args, isCancel) {\n var _this = this;\n if (isCancel) {\n this.expandedGanttRow(args);\n }\n else {\n this.parent.trigger('expanding', args, function (arg) {\n if (_this.isExpandCollapseFromChart && !getValue('cancel', arg)) {\n _this.expandedGanttRow(arg);\n }\n _this.isExpandCollapseFromChart = false;\n });\n }\n };\n /**\n * @returns {void} .\n * @param {object} args .\n * @private\n */\n GanttChart.prototype.expandedGanttRow = function (args) {\n var _this = this;\n if ((isNullOrUndefined(args['gridRow']) && this.parent.enableVirtualization) || isNullOrUndefined(args['chartRow'])) {\n return;\n }\n var record;\n if (!this.parent.loadChildOnDemand && this.parent.taskFields.hasChildMapping) {\n record = this.parent.currentViewData.filter(function (item) { return item.ganttProperties.taskId == args['data'][_this.parent.taskFields.id]; })[0];\n }\n else {\n record = getValue('data', args);\n }\n if (this.isExpandCollapseFromChart) {\n this.expandCollapseChartRows('expand', getValue('chartRow', args), record, null);\n var idField_2 = this.parent.taskFields.id;\n if (!this.parent.loadChildOnDemand && this.parent.taskFields.hasChildMapping) {\n var gridRec = this.parent.treeGrid.getCurrentViewRecords().filter(function (item) { return item[idField_2] == args['data'][idField_2]; })[0];\n this.parent.treeGrid.expandRow(getValue('gridRow', args), gridRec);\n }\n else {\n this.parent.treeGrid.expandRow(getValue('gridRow', args), record);\n }\n this.isExpandCollapseFromChart = false;\n }\n else {\n if (!this.parent.isExpandCollapseLevelMethod) {\n this.expandCollapseChartRows('expand', getValue('chartRow', args), record, null);\n }\n this.parent.isExpandCollapseLevelMethod = false;\n }\n // To render the child record on parent row after expanding.\n if (this.parent.viewType === 'ResourceView' || this.parent.viewType === 'ProjectView') {\n this.renderMultiTaskbar(record);\n }\n if (!this.parent.enableVirtualization) {\n this.parent.updateContentHeight();\n }\n this.updateWidthAndHeight();\n this.reRenderConnectorLines();\n getValue('chartRow', args).setAttribute('aria-expanded', 'true');\n };\n GanttChart.prototype.renderMultiTaskbar = function (record) {\n if (this.parent.enableMultiTaskbar) {\n this.parent.chartRowsModule.refreshRecords([record], true);\n }\n else if (this.parent.showOverAllocation) {\n this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);\n }\n };\n /**\n * On expand collapse operation row properties will be updated here.\n *\n * @param {string} action .\n * @param {Node} rowElement .\n * @param {IGanttData} record .\n * @param {boolean} isChild .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.expandCollapseChartRows = function (action, rowElement, record, isChild) {\n var displayType;\n if (action === 'expand') {\n displayType = 'table-row';\n if (!isChild) {\n record.expanded = true;\n }\n var targetElement = rowElement.querySelectorAll('.e-row-collapse');\n for (var t = 0; t < targetElement.length; t++) {\n addClass([targetElement[t]], 'e-row-expand');\n removeClass([targetElement[t]], 'e-row-collapse');\n }\n }\n else if (action === 'collapse') {\n displayType = 'none';\n if (!isChild) {\n record.expanded = false;\n }\n var targetElement = rowElement.querySelectorAll('.e-row-expand');\n for (var t = 0; t < targetElement.length; t++) {\n addClass([targetElement[t]], 'e-row-collapse');\n removeClass([targetElement[t]], 'e-row-expand');\n }\n }\n if (!this.parent.enableVirtualization) {\n var childRecords = record.childRecords;\n var chartRows = this.getChartRows();\n var rows = [];\n for (var i = 0; i < chartRows.length; i++) {\n if (chartRows[i].classList.contains(\"gridrowtaskId\" +\n record.ganttProperties.rowUniqueID +\n \"level\" +\n (record.level + 1))) {\n rows.push(chartRows[i]);\n }\n }\n for (var i = 0; i < rows.length; i++) {\n rows[i].style.display = displayType;\n if (childRecords[i].childRecords &&\n childRecords[i].childRecords.length &&\n (action === \"collapse\" ||\n childRecords[i].expanded ||\n this.isExpandAll)) {\n this.expandCollapseChartRows(action, rows[i], childRecords[i], true);\n }\n }\n }\n };\n /**\n * Public method to expand or collapse all the rows of Gantt\n *\n * @returns {void}\n * @param {string} action .\n * @private\n */\n GanttChart.prototype.expandCollapseAll = function (action) {\n if (action === 'expand') {\n this.isExpandAll = true;\n this.parent.treeGrid.expandAll();\n }\n else {\n this.isCollapseAll = true;\n this.parent.treeGrid.collapseAll();\n if (this.isCollapseAll && !this.parent.allowTaskbarOverlap) {\n var treeGridContentHeight = this.parent.enableRtl ? this.parent['element'].getElementsByClassName('e-content')[2].children[0]['offsetHeight'] :\n this.parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];\n this.parent.contentHeight = treeGridContentHeight;\n document.getElementsByClassName('e-chart-rows-container')[0]['style'].height = this.parent.contentHeight + 'px';\n }\n }\n this.isExpandAll = false;\n this.isCollapseAll = false;\n };\n /**\n * Public method to expand particular level of rows.\n *\n * @returns {void} .\n * @param {number} level .\n * @private\n */\n GanttChart.prototype.expandAtLevel = function (level) {\n this.parent.treeGrid.expandAtLevel(level);\n };\n /**\n * Public method to collapse particular level of rows.\n *\n * @returns {void} .\n * @param {number} level .\n * @private\n */\n GanttChart.prototype.collapseAtLevel = function (level) {\n if (this.parent.enableVirtualization) {\n this.parent.isExpandCollapseLevelMethod = true;\n }\n this.parent.treeGrid.collapseAtLevel(level);\n };\n /**\n * Event Binding for gantt chart click\n *\n * @returns {void} .\n */\n GanttChart.prototype.wireEvents = function () {\n var isIE11Pointer = Browser.isPointer; // eslint-disable-line\n var mouseDown = Browser.touchStartEvent;\n var mouseUp = Browser.touchEndEvent;\n var mouseMove = Browser.touchMoveEvent;\n var cancel = isIE11Pointer ? 'pointerleave' : 'mouseleave';\n EventHandler.add(this.parent.chartPane, mouseDown, this.ganttChartMouseDown, this);\n EventHandler.add(this.parent.chartPane, cancel, this.ganttChartLeave, this);\n EventHandler.add(this.parent.chartPane, mouseMove, this.ganttChartMove, this);\n if (this.parent.isAdaptive) {\n EventHandler.add(this.parent.chartPane, click, this.ganttChartMouseClick, this);\n EventHandler.add(this.parent.chartPane, mouseUp, this.ganttChartMouseUp, this);\n }\n if (!this.parent.isAdaptive) {\n EventHandler.add(this.parent.element, mouseUp, this.documentMouseUp, this);\n EventHandler.add(document, mouseUp, this.mouseUp, this);\n }\n EventHandler.add(this.parent.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(document.body, 'contextmenu', this.contextClick, this);\n EventHandler.add(document, 'mouseup', this.contextClick, this);\n EventHandler.add(this.parent.chartRowsModule.ganttChartTableBody, 'dblclick', this.doubleClickHandler, this);\n };\n GanttChart.prototype.unWireEvents = function () {\n var isIE11Pointer = Browser.isPointer; // eslint-disable-line\n var mouseDown = Browser.touchStartEvent;\n var mouseUp = Browser.touchEndEvent;\n var mouseMove = Browser.touchMoveEvent;\n var cancel = isIE11Pointer ? 'pointerleave' : 'mouseleave';\n if (!isNullOrUndefined(this.parent.chartRowsModule.ganttChartTableBody)) {\n EventHandler.remove(this.parent.chartRowsModule.ganttChartTableBody, mouseDown, this.ganttChartMouseDown);\n }\n if (!isNullOrUndefined(this.parent.chartPane)) {\n EventHandler.remove(this.parent.chartPane, cancel, this.ganttChartLeave);\n EventHandler.remove(this.parent.chartPane, mouseMove, this.ganttChartMove);\n }\n if (this.parent.isAdaptive) {\n if (!isNullOrUndefined(this.parent.chartPane)) {\n EventHandler.remove(this.parent.chartPane, click, this.ganttChartMouseClick);\n EventHandler.remove(this.parent.chartPane, mouseUp, this.ganttChartMouseUp);\n }\n }\n if (!this.parent.isAdaptive) {\n if (!isNullOrUndefined(this.parent.element)) {\n EventHandler.remove(this.parent.element, mouseUp, this.documentMouseUp);\n }\n if (!isNullOrUndefined(document)) {\n EventHandler.remove(document, mouseUp, this.mouseUp);\n }\n }\n if (!isNullOrUndefined(this.parent.element)) {\n EventHandler.remove(this.parent.element, 'mousemove', this.mouseMoveHandler);\n }\n if (!isNullOrUndefined(document)) {\n EventHandler.remove(document, 'mouseup', this.contextClick);\n if (!isNullOrUndefined(document.body)) {\n EventHandler.remove(document.body, 'contextmenu', this.contextClick);\n }\n }\n if (!isNullOrUndefined(this.parent.chartRowsModule.ganttChartTableBody)) {\n EventHandler.remove(this.parent.chartRowsModule.ganttChartTableBody, 'dblclick', this.doubleClickHandler);\n }\n };\n /**\n * To get record by taskbar element.\n *\n * @param {Element} target .\n * @returns {IGanttData} .\n * @private\n */\n GanttChart.prototype.getRecordByTaskBar = function (target) {\n var item;\n if (this.parent.enableVirtualization && this.parent.enableMultiTaskbar) {\n item = this.parent.flatData[this.getIndexByTaskBar(target)];\n }\n else {\n item = this.parent.currentViewData[this.getIndexByTaskBar(target)];\n }\n return item;\n };\n /**\n * Trigger Tab & Shift + Tab keypress to highlight active element.\n *\n * @param {KeyboardEventArgs} e .\n * @returns {void} .\n * @private\n */\n GanttChart.prototype.onTabAction = function (e) {\n this.parent.treeGrid.grid.enableHeaderFocus = this.parent.enableHeaderFocus;\n var isInEditedState = this.parent.editModule && this.parent.editModule.cellEditModule &&\n this.parent.editModule.cellEditModule.isCellEdit;\n if (!this.parent.showActiveElement && !isInEditedState) {\n return;\n }\n var $target = isInEditedState ? e.target.closest('.e-rowcell') : e.target;\n if ($target.closest('.e-rowcell') || $target.closest('.e-chart-row')) {\n this.parent.focusModule.setActiveElement($target);\n }\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.focusedRowIndex = $target.closest('.e-rowcell') ? $target.parentElement.rowIndex :\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n $target.closest('.e-chart-row') ? $target.closest('.e-chart-row').rowIndex : -1;\n var isTab = (e.action === 'tab') ? true : false;\n var nextElement = this.getNextElement($target, isTab, isInEditedState);\n if (nextElement && $target.classList.contains('e-headercell')) {\n var colIndex = parseInt(nextElement.getAttribute('data-colindex'));\n if (e.action === 'shiftTab') {\n while (colIndex != -1 && !this.parent.treeGrid.columns[colIndex]['visible']) {\n colIndex = colIndex - 1;\n }\n if (colIndex != -1) {\n nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[colIndex];\n }\n else {\n var toolbarItems = document.getElementsByClassName('e-toolbar-item');\n for (var i = toolbarItems.length - 1; i > 0; i--) {\n if (!document.getElementsByClassName('e-toolbar-item')[i].classList.contains('e-hidden')) {\n nextElement = document.getElementsByClassName('e-toolbar-item')[i];\n break;\n }\n }\n }\n }\n else {\n while (!this.parent.treeGrid.columns[colIndex]['visible']) {\n colIndex = colIndex + 1;\n }\n nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[colIndex];\n }\n }\n if (!nextElement && e.action === 'shiftTab' && $target.classList.contains('e-headercell')) {\n var toolbarItems = document.getElementsByClassName('e-toolbar-item');\n for (var i = toolbarItems.length - 1; i > 0; i--) {\n if (!document.getElementsByClassName('e-toolbar-item')[i].classList.contains('e-hidden')) {\n nextElement = document.getElementsByClassName('e-toolbar-item')[i];\n break;\n }\n }\n }\n if ($target.classList.contains('e-treegrid') && !nextElement) {\n for (var i = 0; i < this.parent.treeGrid.columns.length; i++) {\n if (this.parent.treeGrid.columns[i]['visible']) {\n nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[i];\n break;\n }\n }\n }\n if (!nextElement && $target.classList.contains('e-headercell')) {\n nextElement = document.getElementsByClassName('e-timeline-header-container')[0];\n }\n if (e.action !== 'shiftTab' && $target.classList.contains('e-timeline-header-container')) {\n for (var i = 0; i < this.parent.treeGrid.columns.length; i++) {\n if (this.parent.treeGrid.columns[i]['visible']) {\n nextElement = document.getElementsByClassName('e-row')[0].childNodes[i];\n break;\n }\n }\n }\n if (e.action === 'shiftTab' && !nextElement) {\n nextElement = document.getElementsByClassName('e-timeline-header-container')[0];\n }\n if (e.action === 'shiftTab' && $target.classList.contains('e-timeline-header-container')) {\n for (var i = this.parent.treeGrid.columns.length - 1; i > 0; i--) {\n if (this.parent.treeGrid.columns[i]['visible']) {\n nextElement = document.getElementsByClassName('e-columnheader')[0].childNodes[i];\n break;\n }\n }\n }\n this.tempNextElement = nextElement;\n if (!isNullOrUndefined(nextElement) && !isNullOrUndefined(nextElement['cellIndex'])) {\n if (this.parent.allowRowDragAndDrop) {\n this.childrenIndex = nextElement['cellIndex'];\n this.nextElementIndex = nextElement['cellIndex'] - 1;\n }\n else {\n this.childrenIndex = nextElement['cellIndex'];\n this.nextElementIndex = nextElement['cellIndex'];\n }\n if (!this.parent.ganttColumns[this.nextElementIndex]['allowEditing'] && this.parent.ganttColumns[this.nextElementIndex]['field'] !== this.parent.taskFields.id) {\n this.isEditableElement = true;\n }\n else {\n this.isEditableElement = false;\n }\n }\n if (nextElement === 'noNextRow') {\n this.manageFocus($target, 'remove', true);\n return;\n }\n if (typeof nextElement !== 'string') {\n if ($target.classList.contains('e-rowcell') || $target.closest('.e-chart-row-cell') ||\n $target.classList.contains('e-headercell') || $target.closest('.e-segmented-taskbar') || $target.classList.contains('e-timeline-header-container')) {\n e.preventDefault();\n }\n if (isTab && $target.classList.contains('e-rowdragdrop')) {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n return;\n }\n if ($target.classList.contains('e-rowcell') && (nextElement && nextElement.classList.contains('e-rowcell')) ||\n $target.classList.contains('e-headercell')) { // eslint-disable-line \n if (isTab) {\n if (this.parent.editSettings.allowNextRowEdit) {\n var rowData = this.parent.currentViewData[this.focusedRowIndex];\n var columnName = this.parent.ganttColumns[nextElement.getAttribute('data-colindex')].field;\n if (rowData.hasChildRecords) {\n if (columnName === this.parent.taskFields.endDate || columnName ===\n this.parent.taskFields.duration || columnName === this.parent.taskFields.dependency ||\n columnName === this.parent.taskFields.progress || columnName === this.parent.taskFields.work ||\n columnName === 'taskType') {\n this.parent.treeGrid.grid.endEdit();\n this.parent.treeGrid.grid.notify('key-pressed', e);\n }\n else if (columnName === this.parent.taskFields.name || columnName === this.parent.taskFields.startDate) {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n }\n else {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n if (isInEditedState) {\n this.parent.treeGrid.editCell(this.focusedRowIndex, columnName); // eslint-disable-line\n }\n }\n }\n else {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n }\n }\n else {\n if (!nextElement || nextElement && !nextElement.classList.contains('e-headercell')) {\n if ($target.classList.contains('e-headercell')) {\n this.manageFocus($target, 'remove', false);\n }\n if (!nextElement || $target.classList.contains('e-editedbatchcell')) {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n }\n }\n }\n }\n else {\n if (!nextElement.classList.contains('e-headercell') && !nextElement.classList.contains('e-rowcell')\n && !nextElement.classList.contains('e-toolbar-item')) {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n }\n }\n }\n if (!(this.parent.editModule && this.parent.editModule.cellEditModule\n && !isNullOrUndefined(this.parent.editModule.cellEditModule.editedColumn))) {\n if (nextElement) {\n if ($target.classList.contains('e-rowcell')) {\n this.manageFocus($target, 'remove', false);\n }\n else {\n this.manageFocus($target, 'remove', true);\n }\n if ((nextElement.classList.contains('e-rowcell') && $target.nextElementSibling && !$target.classList.contains('e-timeline-header-container'))\n || $target.classList.contains('e-right-label-container')) {\n if (!$target.classList.contains('e-rowcell')) {\n this.parent.treeGrid.grid.notify('key-pressed', e);\n var fmodule = getValue('focusModule', this.parent.treeGrid.grid);\n fmodule.currentInfo.element = nextElement;\n fmodule.currentInfo.elementToFocus = nextElement;\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n fmodule.content.matrix.current = [nextElement.parentElement.rowIndex, nextElement.cellIndex];\n }\n this.manageFocus(nextElement, 'add', false);\n }\n else {\n if (nextElement && (nextElement.classList.contains('e-toolbar-item') || nextElement.classList.contains('e-headercell')\n || nextElement.classList.contains(\"e-rowcell\"))) {\n this.manageFocus($target, 'remove', false);\n this.manageFocus(nextElement, 'add', false);\n if ($target.classList.contains('e-treegrid')) {\n e.preventDefault();\n }\n }\n else {\n this.manageFocus(nextElement, 'add', true);\n }\n }\n this.parent.focusModule.setActiveElement(nextElement);\n }\n }\n }\n };\n /**\n * Get next/previous sibling element.\n *\n * @param {Element} $target .\n * @param {boolean} isTab .\n * @param {boolean} isInEditedState .\n * @returns {Element | string} .\n */\n GanttChart.prototype.getNextElement = function ($target, isTab, isInEditedState) {\n var nextElement = isTab ? $target.nextElementSibling : $target.previousElementSibling;\n while (nextElement && nextElement.parentElement.classList.contains('e-row')) {\n if (!nextElement.matches('.e-hide') && !nextElement.matches('.e-rowdragdrop')) {\n return nextElement;\n }\n nextElement = isTab ? nextElement.nextElementSibling : nextElement.previousElementSibling;\n }\n if (!isNullOrUndefined(nextElement) && (nextElement.classList.contains('e-taskbar-main-container')\n || nextElement.classList.contains('e-right-connectorpoint-outer-div'))) {\n var record = this.parent.currentViewData[this.focusedRowIndex];\n if (!isNullOrUndefined(record.ganttProperties.segments) && record.ganttProperties.segments.length > 0) {\n nextElement = nextElement.classList.contains('e-right-connectorpoint-outer-div')\n ? nextElement.parentElement.nextElementSibling\n : nextElement.getElementsByClassName('e-gantt-child-taskbar-inner-div')[0];\n }\n }\n if (this.validateNextElement(nextElement)) {\n return nextElement;\n }\n else {\n var rowIndex = -1;\n var rowElement = null;\n var childElement = void 0;\n if ($target.classList.contains('e-rowcell') && isInEditedState && this.parent.editSettings.allowNextRowEdit) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n rowIndex = $target.parentElement.rowIndex;\n rowElement = this.getNextRowElement(rowIndex, isTab, true);\n childElement = this.getChildElement(rowElement, isTab);\n return childElement;\n }\n else if ($target.classList.contains('e-rowcell')) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n rowIndex = $target.parentElement.rowIndex;\n if (isTab) {\n rowElement = this.parent.getRowByIndex(rowIndex);\n if (this.validateNextElement(rowElement, 'e-left-label-container')) {\n return rowElement.getElementsByClassName('e-left-label-container')[0];\n }\n else if (this.validateNextElement(rowElement, 'e-taskbar-main-container')) {\n return rowElement.getElementsByClassName('e-taskbar-main-container')[0];\n }\n else if (this.validateNextElement(rowElement, 'e-right-label-container')) {\n return rowElement.getElementsByClassName('e-right-label-container')[0];\n }\n }\n else {\n rowElement = this.getNextRowElement(rowIndex, isTab, false);\n if (this.validateNextElement(rowElement, 'e-right-label-container')) {\n return rowElement.getElementsByClassName('e-right-label-container')[0];\n }\n else if (this.validateNextElement(rowElement, 'e-taskbar-main-container')) {\n return rowElement.getElementsByClassName('e-taskbar-main-container')[0];\n }\n else if (this.validateNextElement(rowElement, 'e-left-label-container')) {\n return rowElement.getElementsByClassName('e-left-label-container')[0];\n }\n }\n }\n else if ($target.parentElement.classList.contains('e-chart-row-cell') ||\n $target.parentElement.parentElement.classList.contains('e-chart-row-cell')) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n rowIndex = closest($target, '.e-chart-row').rowIndex;\n if (isTab) {\n rowElement = this.getNextRowElement(rowIndex, isTab, true);\n }\n else {\n rowElement = this.parent.treeGrid.grid.getRowByIndex(rowIndex);\n }\n var childElement_1 = this.getChildElement(rowElement, isTab);\n return childElement_1;\n }\n nextElement = $target;\n if (nextElement && nextElement.parentElement.classList.contains('e-toolbar-item') && this.parent.toolbarModule) {\n while (nextElement && nextElement.parentElement.classList.contains('e-toolbar-item') && nextElement.parentElement.nextElementSibling.classList.contains('e-toolbar-item')) {\n if (nextElement.parentElement.nextElementSibling.classList.contains('e-hidden')) {\n nextElement = nextElement.parentElement.nextElementSibling.childNodes[0];\n }\n else {\n return nextElement.parentElement.nextElementSibling;\n }\n }\n }\n }\n return null;\n };\n /**\n * Get next/previous row element.\n *\n * @param {number} rowIndex .\n * @param {boolean} isTab .\n * @param {boolean} isChartRow .\n * @returns {Element} .\n */\n GanttChart.prototype.getNextRowElement = function (rowIndex, isTab, isChartRow) {\n var expandedRecords = this.parent.getExpandedRecords(this.parent.currentViewData);\n var currentItem = this.parent.currentViewData[rowIndex];\n var expandedRecordIndex = expandedRecords.indexOf(currentItem);\n var nextRecord = isTab ? expandedRecords[expandedRecordIndex + 1] : expandedRecords[expandedRecordIndex - 1];\n var nextRowIndex = this.parent.currentViewData.indexOf(nextRecord);\n if (nextRecord) {\n return isChartRow ? this.parent.treeGrid.grid.getRowByIndex(nextRowIndex) : this.parent.getRowByIndex(nextRowIndex);\n }\n else {\n return null;\n }\n };\n /**\n * Validate next/previous sibling element haschilds.\n *\n * @param {Element} $target .\n * @param {string} className .\n * @returns {boolean} .\n */\n GanttChart.prototype.validateNextElement = function ($target, className) {\n if ($target && $target.classList.contains('e-rowcell')) {\n return true;\n }\n if ($target && className) {\n var elementByClass = $target.getElementsByClassName(className)[0];\n return (elementByClass && elementByClass.hasChildNodes()) ? true : false;\n }\n else if ($target) {\n return (!isNullOrUndefined($target) && $target.hasChildNodes()) ? true : false;\n }\n return false;\n };\n /**\n * Getting child element based on row element.\n *\n * @param {Element} rowElement .\n * @param {boolean} isTab .\n * @returns {Element | string} .\n */\n GanttChart.prototype.getChildElement = function (rowElement, isTab) {\n var childElement;\n if (rowElement) {\n childElement = isTab ? rowElement.children[0] : rowElement.children[rowElement.children.length - 1];\n while (childElement) {\n if (!childElement.matches('.e-hide') && !childElement.matches('.e-rowdragdrop')) {\n return childElement;\n }\n childElement = isTab ? childElement.nextElementSibling : childElement.previousElementSibling;\n }\n }\n else {\n return 'noNextRow';\n }\n return childElement;\n };\n /**\n * Add/Remove active element.\n *\n * @private\n * @param {HTMLElement} element .\n * @param {string} focus .\n * @param {boolean} isChartElement .\n * @returns {void} .\n */\n GanttChart.prototype.manageFocus = function (element, focus, isChartElement) {\n if (isChartElement) {\n var childElement = null;\n if (element.classList.contains('e-left-label-container') ||\n element.classList.contains('e-right-label-container')) {\n childElement = element.getElementsByTagName('span')[0];\n }\n else if (element.classList.contains('e-taskbar-main-container')\n || element.classList.contains('e-gantt-child-taskbar-inner-div')) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var rowIndex = closest(element, '.e-chart-row').rowIndex;\n var data = this.parent.currentViewData[rowIndex];\n var className = data.hasChildRecords ? data.ganttProperties.isAutoSchedule ? 'e-gantt-parent-taskbar' :\n 'e-manualparent-main-container' :\n data.ganttProperties.isMilestone ? 'e-gantt-milestone' : !isNullOrUndefined(data.ganttProperties.segments)\n && data.ganttProperties.segments.length > 0 ? 'e-segmented-taskbar' : 'e-gantt-child-taskbar';\n childElement = element.getElementsByClassName(className)[0];\n if (isNullOrUndefined(childElement)) {\n childElement = element;\n }\n }\n if (element.classList.contains('e-right-label-temp-container') || element.classList.contains('e-left-label-temp-container') || element.classList.contains('e-indicator-span') || element.classList.contains(\"e-timeline-header-container\")) {\n if (focus === 'add') {\n element.setAttribute('tabIndex', '0');\n addClass([element], 'e-active-container');\n element.focus();\n }\n else {\n removeClass([element], 'e-active-container');\n element.setAttribute('tabIndex', '-1');\n element.blur();\n }\n }\n if (focus === 'add' && !isNullOrUndefined(childElement)) {\n element.setAttribute('tabIndex', '0');\n addClass([childElement], 'e-active-container');\n element.focus();\n this.focusedElement = childElement;\n }\n else if (!isNullOrUndefined(childElement)) {\n removeClass([childElement], 'e-active-container');\n element.setAttribute('tabIndex', '-1');\n element.blur();\n }\n }\n else {\n if (focus === 'add') {\n element.setAttribute('tabIndex', '0');\n addClass([element], ['e-focused', 'e-focus']);\n element.focus();\n }\n else {\n element.setAttribute('tabIndex', '-1');\n removeClass([element], ['e-focused', 'e-focus']);\n element.blur();\n }\n }\n };\n /**\n * To get index by taskbar element.\n *\n * @param {Element} target .\n * @returns {number} .\n * @private\n */\n GanttChart.prototype.getIndexByTaskBar = function (target) {\n var row;\n var recordIndex;\n if (!target.classList.contains(cls.taskBarMainContainer)) {\n row = closest(target, 'div.' + cls.taskBarMainContainer);\n }\n else {\n row = target;\n }\n if (isNullOrUndefined(row)) {\n row = closest(target, 'tr.' + cls.chartRow);\n recordIndex = [].slice.call(this.parent.chartRowsModule.ganttChartTableBody.childNodes).indexOf(row);\n }\n else {\n var id = row.getAttribute('rowUniqueId');\n var record = this.parent.getRecordByID(id);\n if (this.parent.enableVirtualization && this.parent.enableMultiTaskbar) {\n recordIndex = this.parent.flatData.indexOf(record);\n }\n else {\n if (this.parent.pdfExportModule && this.parent.pdfExportModule.helper.exportProps && this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings &&\n this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth && this.parent.pdfExportModule.isPdfExport) {\n recordIndex = this.parent.ids.indexOf(record.ganttProperties.taskId.toString());\n }\n else {\n recordIndex = this.parent.currentViewData.indexOf(record);\n }\n }\n }\n return recordIndex;\n };\n GanttChart.prototype.destroy = function () {\n this.removeEventListener();\n this.unWireEvents();\n this.rangeViewContainer = null;\n this.chartBodyContent = null;\n this.scrollElement = null;\n this.chartTimelineContainer = null;\n this.chartBodyContainer = null;\n if (!isNullOrUndefined(this.scrollObject)) {\n this.scrollObject.destroy();\n this.scrollObject = null;\n }\n };\n return GanttChart;\n}());\nexport { GanttChart };\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 { createElement, isNullOrUndefined, getValue, addClass, removeClass, extend } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * Configures the `Timeline` of the gantt.\n */\nvar Timeline = /** @class */ (function () {\n function Timeline(ganttObj) {\n this.isZoomIn = false;\n this.isZooming = false;\n this.isZoomToFit = false;\n this.topTierCollection = [];\n this.bottomTierCollection = [];\n this.pdfExportTopTierCollection = [];\n this.pdfExportBottomTierCollection = [];\n this.restrictRender = true;\n this.performedTimeSpanAction = false;\n this.isZoomedToFit = false;\n this.parent = ganttObj;\n this.initProperties();\n }\n /**\n * To initialize the public property.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.initProperties = function () {\n this.timelineStartDate = null;\n this.timelineEndDate = null;\n this.totalTimelineWidth = 0;\n this.customTimelineSettings = null;\n this.parent.isTimelineRoundOff = this.isZoomToFit ? false : isNullOrUndefined(this.parent.projectStartDate) ? true : false;\n if (this.parent.enablePersistence && this.parent.isLoad) {\n this.parent.timelineSettings = this.parent.currentZoomingLevel;\n }\n };\n /**\n * To render timeline header series.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.validateTimelineProp = function () {\n this.roundOffDays();\n this.processTimelineProperty();\n this.timelineWidthCalculation();\n };\n /**\n * Function used to refresh Gantt rows.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.refreshTimeline = function () {\n this.initProperties();\n this.processTimelineUnit();\n this.parent.dataOperation.calculateProjectDates();\n if (!this.parent.isFromOnPropertyChange) {\n this.parent.updateProjectDates(this.parent.cloneProjectStartDate, this.parent.cloneProjectEndDate, this.parent.isTimelineRoundOff);\n }\n var timelineContainer = this.parent.element.getElementsByClassName('e-timeline-header-container')[0]['offsetHeight'];\n this.parent.element.getElementsByClassName('e-gridcontent')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';\n // eslint-disable-next-line\n this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';\n };\n /**\n * Function used to refresh Gantt rows.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.refreshTimelineByTimeSpan = function () {\n this.validateTimelineProp();\n if (!this.parent.pdfExportModule || (this.parent.pdfExportModule && !this.parent.pdfExportModule.isPdfExport) || (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport && this.parent.pdfExportModule.helper.exportProps && !this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth)) {\n this.parent.ganttChartModule.chartTimelineContainer.innerHTML = '';\n }\n this.createTimelineSeries();\n };\n /**\n * Function used to refresh Gantt rows.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.updateChartByNewTimeline = function () {\n this.parent.chartRowsModule.refreshChartByTimeline();\n var currentScrollLeft = this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0].scrollLeft;\n this.parent.element.getElementsByClassName('e-timeline-header-container')[0].scrollLeft = currentScrollLeft;\n this.parent.notify('refreshDayMarkers', {});\n };\n /**\n * Function used to perform Zoomin and Zoomout actions in Gantt control.\n *\n * @param {boolean} isZoomIn .\n * @private\n * @returns {void}\n */\n Timeline.prototype.processZooming = function (isZoomIn) {\n this.isZoomToFit = false;\n this.isZoomedToFit = false;\n var action = isZoomIn ? \"ZoomIn\" : 'ZoomOut';\n if (this.parent.undoRedoModule && this.parent['isUndoRedoItemPresent'](action)) {\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['disableRedo']();\n }\n this.parent.undoRedoModule['createUndoCollection']();\n var previousTimeline = {};\n previousTimeline['action'] = action;\n previousTimeline['previousZoomingLevel'] = extend({}, {}, this.parent.currentZoomingLevel, true);\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = previousTimeline;\n }\n if (!this.parent['isProjectDateUpdated']) {\n this.parent.dateValidationModule.calculateProjectDates();\n }\n if (!isNullOrUndefined(this.parent.zoomingProjectStartDate)) {\n this.parent.cloneProjectStartDate = this.parent.zoomingProjectStartDate;\n this.parent.cloneProjectEndDate = this.parent.zoomingProjectEndDate;\n }\n this.parent.zoomingProjectStartDate = null;\n this.parent.zoomingProjectEndDate = null;\n var currentZoomingLevel = this.checkCurrentZoomingLevel();\n this.isZoomIn = isZoomIn;\n this.isZooming = true;\n var currentLevel;\n var level = isZoomIn ? currentZoomingLevel + 1 : currentZoomingLevel - 1;\n var foundLevel = this.parent.zoomingLevels.find(function (tempLevel) { return tempLevel.level === level; });\n if (foundLevel) {\n currentLevel = level;\n }\n else {\n currentLevel = currentZoomingLevel;\n }\n if (this.parent.toolbarModule) {\n if (isZoomIn) {\n if (currentLevel === this.parent.zoomingLevels[this.parent.zoomingLevels.length - 1].level) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin'], false); // disable toolbar items.\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomout'], true);\n }\n else {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomout'], true); // disable toolbar items.\n }\n }\n else {\n if (currentLevel === this.parent.zoomingLevels[0].level) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomout'], false); // disable toolbar items.\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin'], true);\n }\n else {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin'], true); // enable toolbar items.\n }\n }\n }\n currentLevel = this.parent.zoomingLevels.findIndex(function (tempLevel) {\n return tempLevel.level === currentLevel;\n });\n var newTimeline = this.parent.zoomingLevels[currentLevel];\n var args = {\n requestType: isZoomIn ? 'beforeZoomIn' : 'beforeZoomOut',\n timeline: newTimeline,\n cancel: false\n };\n this.parent.trigger('actionBegin', args);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.showMaskRow();\n }\n else {\n this.parent.showSpinner();\n }\n if (!args.cancel) {\n newTimeline = args.timeline;\n this.changeTimelineSettings(newTimeline);\n }\n };\n /**\n * To change the timeline settings property values based upon the Zooming levels.\n *\n * @param {ZoomTimelineSettings} newTimeline .\n * @returns {void}\n * @private\n */\n Timeline.prototype.changeTimelineSettings = function (newTimeline) {\n var _this = this;\n if (this.isZoomToFit) {\n this.isSingleTier = this.customTimelineSettings.topTier.unit === 'None' || this.customTimelineSettings.bottomTier.unit === 'None' ? true : false;\n }\n else if (!this.isZoomIn) {\n this.isSingleTier = newTimeline.topTier.unit === 'None' || newTimeline.bottomTier.unit === 'None' ? true : false;\n }\n var skipProperty = this.isSingleTier ?\n this.customTimelineSettings.topTier.unit === 'None' ?\n 'topTier' : 'bottomTier' : null;\n Object.keys(this.customTimelineSettings).forEach(function (property) {\n if (property !== skipProperty) {\n _this.customTimelineSettings[property] = (typeof newTimeline[property] === 'object'\n && !isNullOrUndefined(newTimeline[property])) ? __assign({}, newTimeline[property]) : newTimeline[property];\n }\n else {\n var value = property === 'topTier' ? 'bottomTier' : 'topTier';\n var assignValue = 'bottomTier';\n if (newTimeline[\"\" + assignValue].unit != \"None\") {\n _this.customTimelineSettings[value] = __assign({}, newTimeline[assignValue]);\n }\n }\n });\n this.parent.isTimelineRoundOff = this.isZoomToFit ? false : isNullOrUndefined(this.parent.projectStartDate) ? true : false;\n this.processTimelineUnit();\n this.parent.updateProjectDates(this.parent.cloneProjectStartDate, this.parent.cloneProjectEndDate, this.parent.isTimelineRoundOff);\n var criticalModule = this.parent.criticalPathModule;\n if (this.parent.enableCriticalPath && criticalModule) {\n criticalModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n if (this.isZooming || this.isZoomToFit) {\n var args = {\n requestType: this.isZoomIn ? 'AfterZoomIn' : this.isZoomToFit ? 'AfterZoomToProject' : 'AfterZoomOut',\n timeline: this.parent.currentZoomingLevel\n };\n this.parent.trigger('actionComplete', args);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n }\n var tier = this.topTier === 'None' ? 'bottomTier' : 'topTier';\n if (this.parent.enableTimelineVirtualization && (!this.parent.pdfExportModule || this.parent.pdfExportModule && !this.parent.pdfExportModule.isPdfExport)) {\n this.wholeTimelineWidth = this.calculateWidthBetweenTwoDate(tier, this.parent.timelineModule.timelineStartDate, this.parent.timelineModule.timelineEndDate);\n this.parent.element.querySelectorAll(\".e-chart-scroll-container\")[0].querySelector(\".e-virtualtrack\")['style'].width = this.wholeTimelineWidth + 'px';\n this.parent.element.querySelectorAll(\".e-timeline-header-container\")[0].querySelector(\".e-virtualtrack\")['style'].width = this.wholeTimelineWidth + 'px';\n this.parent.ganttChartModule.updateWidthAndHeight();\n }\n };\n /**\n * To perform the zoom to fit operation in Gantt.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.processZoomToFit = function () {\n this.isZoomToFit = true;\n this.isZooming = false;\n this.isZoomedToFit = true;\n var previousTimeline = {};\n if (this.parent.undoRedoModule && !this.parent.undoRedoModule['isUndoRedoPerformed'] && this.parent['isUndoRedoItemPresent']('ZoomToFit')) {\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['disableRedo']();\n }\n this.parent.undoRedoModule['createUndoCollection']();\n previousTimeline['action'] = 'ZoomToFit';\n previousTimeline['previousTimelineStartDate'] = extend([], [], [this.parent.cloneProjectStartDate], true)[0];\n previousTimeline['previousTimelineEndDate'] = extend([], [], [this.parent.cloneProjectEndDate], true)[0];\n previousTimeline['previousZoomingLevel'] = extend({}, {}, this.parent.currentZoomingLevel, true);\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = previousTimeline;\n }\n if (!this.parent.zoomingProjectStartDate) {\n this.parent.zoomingProjectStartDate = this.parent.cloneProjectStartDate;\n this.parent.zoomingProjectEndDate = this.parent.cloneProjectEndDate;\n }\n if (this.parent.zoomingProjectStartDate > this.parent.cloneProjectStartDate) {\n this.parent.cloneProjectStartDate = new Date(this.parent.allowUnscheduledTasks ? this.parent.zoomingProjectStartDate : this.parent.cloneProjectStartDate);\n }\n this.parent.dataOperation.calculateProjectDates();\n var timeDifference = (this.parent.cloneProjectEndDate.getTime() - this.parent.cloneProjectStartDate.getTime());\n var totalDays = (timeDifference / (1000 * 3600 * 24));\n var chartWidth = this.parent.ganttChartModule.chartElement.offsetWidth;\n var perDayWidth = chartWidth / totalDays;\n var zoomingLevel;\n var firstValue;\n var secondValue;\n var zoomingCollections = this.parent.zoomingLevels.slice();\n var sortedCollectons = zoomingCollections.sort(function (a, b) {\n return (!a.perDayWidth && !b.perDayWidth ? 0 : (a.perDayWidth < b.perDayWidth) ? 1 : -1);\n });\n if (perDayWidth === 0) { // return when the Gantt chart is not in viewable state.\n return;\n }\n for (var i = 0; i < sortedCollectons.length; i++) {\n firstValue = sortedCollectons[i];\n if (i === sortedCollectons.length - 1) {\n zoomingLevel = sortedCollectons[i];\n break;\n }\n else {\n secondValue = sortedCollectons[i + 1];\n }\n if (perDayWidth >= firstValue.perDayWidth) {\n zoomingLevel = sortedCollectons[i];\n break;\n }\n if (perDayWidth < firstValue.perDayWidth && perDayWidth > secondValue.perDayWidth) {\n zoomingLevel = sortedCollectons[i + 1];\n break;\n }\n }\n var newTimeline = extend({}, {}, zoomingLevel, true);\n this.roundOffDateToZoom(this.parent.cloneProjectStartDate, true, perDayWidth, newTimeline.bottomTier.unit, zoomingLevel);\n this.roundOffDateToZoom(this.parent.cloneProjectEndDate, false, perDayWidth, newTimeline.bottomTier.unit, zoomingLevel);\n var numberOfCells = this.calculateNumberOfTimelineCells(newTimeline);\n var scrollHeight = this.parent.ganttChartModule.scrollElement.offsetHeight - 17; //17 is horizontal scrollbar width\n var contentHeight = this.parent.ganttChartModule.chartBodyContent.offsetHeight;\n var emptySpace = contentHeight <= scrollHeight ? 0 : 17;\n newTimeline.timelineUnitSize = Math.abs((chartWidth - emptySpace)) / numberOfCells;\n var args = {\n requestType: 'beforeZoomToProject',\n timeline: newTimeline\n };\n if (this.parent.toolbarModule) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin', this.parent.controlId + '_zoomout'], true);\n }\n this.parent.trigger('actionBegin', args);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.showMaskRow();\n }\n else {\n this.parent.showSpinner();\n }\n this.changeTimelineSettings(newTimeline);\n this.parent.isTimelineRoundOff = isNullOrUndefined(this.parent.projectStartDate) ? true : false;\n this.isZoomToFit = false;\n };\n Timeline.prototype.bottomTierCellWidthCalc = function (mode, zoomLevel, date) {\n var convertedMilliSeconds;\n switch (mode) {\n case 'Minutes':\n convertedMilliSeconds = zoomLevel.bottomTier.count * (60 * 1000);\n break;\n case 'Hour':\n convertedMilliSeconds = zoomLevel.bottomTier.count * (60 * 60 * 1000);\n break;\n case 'Week':\n convertedMilliSeconds = zoomLevel.bottomTier.count * (7 * 24 * 60 * 60 * 1000);\n break;\n case 'Day':\n convertedMilliSeconds = zoomLevel.bottomTier.count * (24 * 60 * 60 * 1000);\n break;\n case 'Month':\n var daysInMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n convertedMilliSeconds = zoomLevel.bottomTier.count * (60 * 60 * 24 * daysInMonth * 1000);\n break;\n case 'Year':\n var daysInYear = (date.getFullYear() % 400 === 0 || (date.getFullYear() % 100 !== 0 && date.getFullYear() % 4 === 0)) ? 366 : 365;\n convertedMilliSeconds = zoomLevel.bottomTier.count * (60 * 60 * 24 * daysInYear * 1000);\n break;\n }\n return convertedMilliSeconds;\n };\n Timeline.prototype.roundOffDateToZoom = function (date, isStartDate, perDayWidth, tierMode, zoomingLevel) {\n var roundOffTime = this.bottomTierCellWidthCalc(tierMode, zoomingLevel, date);\n if (isStartDate) {\n date.setTime(date.getTime() - roundOffTime);\n }\n else {\n date.setTime(date.getTime() + roundOffTime);\n }\n };\n Timeline.prototype.calculateNumberOfTimelineCells = function (newTimeline) {\n var sDate = new Date(this.parent.cloneProjectStartDate.getTime());\n var eDate = new Date(this.parent.cloneProjectEndDate.getTime());\n this.parent.dateValidationModule['updateDateWithTimeZone'](sDate, eDate);\n var numberOfDays = Math.abs((eDate.getTime() - sDate.getTime()) / (24 * 60 * 60 * 1000));\n var count = newTimeline.bottomTier.count;\n var unit = newTimeline.bottomTier.unit;\n if (unit === 'Day') {\n return numberOfDays / count;\n }\n else if (unit === 'Week') {\n return (numberOfDays / count) / 7;\n }\n else if (unit === 'Month') {\n return (numberOfDays / count) / 28;\n }\n else if (unit === 'Year') {\n return (numberOfDays / count) / (12 * 28);\n }\n else if (unit === 'Hour') {\n return numberOfDays * (24 / count);\n }\n else {\n return numberOfDays * ((60 * 24) / count);\n }\n };\n /**\n * To validate time line unit.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.processTimelineUnit = function () {\n var directProperty = ['timelineViewMode', 'timelineUnitSize', 'weekStartDay', 'weekendBackground'];\n var innerProperty = {\n 'topTier': ['unit', 'format', 'count', 'formatter'],\n 'bottomTier': ['unit', 'format', 'count', 'formatter']\n };\n var tierUnits = ['Year', 'Month', 'Week', 'Day', 'Hour', 'Minutes'];\n this.customTimelineSettings = this.customTimelineSettings ? this.customTimelineSettings :\n this.extendFunction(this.parent.timelineSettings, directProperty, innerProperty);\n if ((tierUnits.indexOf(this.customTimelineSettings.topTier.unit) === -1) &&\n (tierUnits.indexOf(this.customTimelineSettings.bottomTier.unit) === -1)) {\n this.customTimelineSettings.topTier.unit = tierUnits.indexOf(this.customTimelineSettings.timelineViewMode) !== -1 ?\n this.customTimelineSettings.timelineViewMode : 'Week';\n this.customTimelineSettings.bottomTier.unit = tierUnits.indexOf(this.customTimelineSettings.topTier.unit) !== 5 ?\n tierUnits[tierUnits.indexOf(this.customTimelineSettings.topTier.unit) + 1] : 'None';\n }\n else if ((tierUnits.indexOf(this.customTimelineSettings.topTier.unit) !== -1 &&\n tierUnits.indexOf(this.customTimelineSettings.bottomTier.unit) !== -1)\n && (tierUnits.indexOf(this.customTimelineSettings.topTier.unit) >\n tierUnits.indexOf(this.customTimelineSettings.bottomTier.unit))) {\n this.customTimelineSettings.bottomTier.unit = this.customTimelineSettings.topTier.unit;\n }\n else {\n this.customTimelineSettings.topTier.unit = tierUnits.indexOf(this.customTimelineSettings.topTier.unit) === -1 ?\n 'None' : this.customTimelineSettings.topTier.unit;\n this.customTimelineSettings.bottomTier.unit = tierUnits.indexOf(this.customTimelineSettings.bottomTier.unit) === -1 ?\n 'None' : this.customTimelineSettings.bottomTier.unit;\n }\n this.topTier = this.customTimelineSettings.topTier.unit;\n this.bottomTier = this.customTimelineSettings.bottomTier.unit;\n this.previousIsSingleTier = this.isSingleTier;\n this.isSingleTier = this.topTier === 'None' || this.bottomTier === 'None' ? true : false;\n };\n /**\n * To validate timeline properties.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.processTimelineProperty = function () {\n this.customTimelineSettings.topTier.count = (this.topTier === 'None') ?\n 1 : this.validateCount(this.customTimelineSettings.topTier.unit, this.customTimelineSettings.topTier.count, 'topTier');\n this.customTimelineSettings.bottomTier.count = this.customTimelineSettings.bottomTier.unit === 'None' ?\n 1 : this.validateCount(this.customTimelineSettings.bottomTier.unit, this.customTimelineSettings.bottomTier.count, 'bottomTier');\n this.customTimelineSettings.bottomTier.format = this.validateFormat(this.customTimelineSettings.bottomTier.unit, this.customTimelineSettings.bottomTier.format);\n this.customTimelineSettings.topTier.format = this.validateFormat(this.topTier, this.customTimelineSettings.topTier.format);\n this.customTimelineSettings.weekStartDay = this.customTimelineSettings.weekStartDay >= 0 &&\n this.customTimelineSettings.weekStartDay <= 6 ? this.customTimelineSettings.weekStartDay : 0;\n if (!(this.parent.pdfExportModule && this.parent.pdfExportModule.helper.exportProps &&\n this.parent.pdfExportModule.isPdfExport && this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth)) {\n this.checkCurrentZoomingLevel();\n }\n };\n /**\n * To find the current zooming level of the Gantt control.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.calculateZoomingLevelsPerDayWidth = function () {\n var collections = this.parent.zoomingLevels;\n for (var i = 0; i < collections.length; i++) {\n var perDayWidth = this.getPerDayWidth(collections[i].timelineUnitSize, collections[i].bottomTier.count, collections[i].bottomTier.unit);\n collections[i].perDayWidth = perDayWidth;\n }\n };\n /**\n * To find the current zooming level of the Gantt control.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.checkCurrentZoomingLevel = function () {\n var count = this.customTimelineSettings.bottomTier.unit !== 'None' ?\n this.customTimelineSettings.bottomTier.count : this.customTimelineSettings.topTier.count;\n var unit = this.customTimelineSettings.bottomTier.unit !== 'None' ?\n this.customTimelineSettings.bottomTier.unit : this.customTimelineSettings.topTier.unit;\n var tier = this.customTimelineSettings.bottomTier.unit !== 'None' ?\n \"bottomTier\" : \"topTier\";\n var zoomLevel = this.getCurrentZoomingLevel(unit, count, tier);\n if (this.parent.toolbarModule) {\n if (zoomLevel === this.parent.zoomingLevels[this.parent.zoomingLevels.length - 1].level) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin'], false);\n }\n else if (zoomLevel === this.parent.zoomingLevels[0].level) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomout'], false);\n }\n }\n this.parent.currentZoomingLevel = this.parent.zoomingLevels[zoomLevel];\n return zoomLevel;\n };\n /**\n * @param {string} unit .\n * @param {number} count .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.getCurrentZoomingLevel = function (unit, count, tier) {\n var level;\n var currentZoomCollection;\n var checkSameCountLevels;\n var secondValue;\n var firstValue;\n if (!this.parent.zoomingLevels.length) {\n this.parent.zoomingLevels = this.parent.getZoomingLevels();\n }\n var sameUnitLevels = this.parent.zoomingLevels.filter(function (tempLevel) {\n if (tier === \"bottomTier\") {\n return tempLevel.bottomTier.unit === unit;\n }\n else {\n return tempLevel.topTier.unit === unit;\n }\n });\n if (sameUnitLevels.length === 0) {\n var closestUnit_1 = this.getClosestUnit(unit, '', false);\n sameUnitLevels = this.parent.zoomingLevels.filter(function (tempLevel) {\n if (tier === \"bottomTier\") {\n return tempLevel.bottomTier.unit === closestUnit_1;\n }\n else {\n return tempLevel.topTier.unit === closestUnit_1;\n }\n });\n }\n var sortedUnitLevels = sameUnitLevels.sort(function (a, b) {\n if (tier === \"bottomTier\") {\n return (!a.bottomTier.count || !b.bottomTier.count) ? 0 : ((a.bottomTier.count < b.bottomTier.count) ? 1 : -1);\n }\n else {\n return (!a.topTier.count || !b.topTier.count) ? 0 : ((a.topTier.count < b.topTier.count) ? 1 : -1);\n }\n });\n for (var i = 0; i < sortedUnitLevels.length; i++) {\n firstValue = sortedUnitLevels[i];\n if (i === sortedUnitLevels.length - 1) {\n level = sortedUnitLevels[i].level;\n break;\n }\n else {\n secondValue = sortedUnitLevels[i + 1];\n }\n if (count >= firstValue[\"\" + tier].count) {\n currentZoomCollection = sortedUnitLevels[i];\n checkSameCountLevels = sortedUnitLevels.filter(function (tempLevel) {\n if (tier === \"bottomTier\") {\n return tempLevel.bottomTier.count === currentZoomCollection.bottomTier.count;\n }\n else {\n return tempLevel.topTier.count === currentZoomCollection.topTier.count;\n }\n });\n if (checkSameCountLevels.length > 1) {\n level = this.checkCollectionsWidth(checkSameCountLevels);\n }\n else {\n level = checkSameCountLevels[0].level;\n }\n break;\n }\n else if (count < firstValue[\"\" + tier].count && count > secondValue[\"\" + tier].count) {\n currentZoomCollection = sortedUnitLevels[i + 1];\n checkSameCountLevels = sortedUnitLevels.filter(function (tempLevel) {\n if (tier === \"bottomTier\") {\n return tempLevel.bottomTier.count === currentZoomCollection.bottomTier.count;\n }\n else {\n return tempLevel.topTier.count === currentZoomCollection.topTier.count;\n }\n });\n if (checkSameCountLevels.length > 1) {\n level = this.checkCollectionsWidth(checkSameCountLevels);\n }\n else {\n level = checkSameCountLevels[0].level;\n }\n break;\n }\n }\n return level;\n };\n /**\n * Getting closest zooimg level.\n *\n * @param {string} unit .\n * @param {string} closetUnit .\n * @param {boolean} isCont .\n * @returns {string} .\n * @private\n */\n Timeline.prototype.getClosestUnit = function (unit, closetUnit, isCont) {\n var bottomTierUnits = ['Year', 'Month', 'Week', 'Day', 'Hour', 'Minutes'];\n var index = bottomTierUnits.indexOf(unit);\n if (index === 0) {\n isCont = true;\n }\n if (this.isZoomIn || isCont) {\n unit = bottomTierUnits[index + 1];\n }\n else {\n unit = bottomTierUnits[index - 1];\n }\n var sameUnitLevels = this.parent.zoomingLevels.filter(function (tempLevel) {\n return tempLevel.bottomTier.unit === unit;\n });\n if (sameUnitLevels.length === 0) {\n if (unit === 'Year') {\n isCont = true;\n }\n closetUnit = unit;\n return this.getClosestUnit(unit, closetUnit, isCont);\n }\n else {\n return unit;\n }\n };\n Timeline.prototype.checkCollectionsWidth = function (checkSameLevels) {\n var zoomLevels = checkSameLevels;\n var width = this.customTimelineSettings.timelineUnitSize;\n var level;\n var secondValue;\n var firstValue;\n var sortedZoomLevels = zoomLevels.sort(function (a, b) {\n return (a.timelineUnitSize < b.timelineUnitSize) ? 1 : -1;\n });\n for (var i = 0; i < sortedZoomLevels.length; i++) {\n firstValue = sortedZoomLevels[i];\n if (i === sortedZoomLevels.length - 1) {\n level = sortedZoomLevels[i].level;\n break;\n }\n else {\n secondValue = sortedZoomLevels[i + 1];\n }\n if (width >= firstValue.timelineUnitSize) {\n level = sortedZoomLevels[i].level;\n break;\n }\n else if (width < firstValue.timelineUnitSize && width > secondValue.timelineUnitSize) {\n level = sortedZoomLevels[i + 1].level;\n break;\n }\n }\n return level;\n };\n /**\n * To create timeline header template.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.updateTimelineHeaderHeight = function () {\n if (this.parent.timelineModule.isSingleTier) {\n addClass([this.parent.ganttChartModule.chartTimelineContainer], cls.timelineSingleHeaderOuterDiv);\n if (this.parent.treeGrid.element) {\n addClass(this.parent.treeGrid.element.querySelectorAll('.e-headercell'), cls.timelineSingleHeaderOuterDiv);\n addClass(this.parent.treeGrid.element.querySelectorAll('.e-columnheader'), cls.timelineSingleHeaderOuterDiv);\n }\n }\n else {\n removeClass([this.parent.ganttChartModule.chartTimelineContainer], cls.timelineSingleHeaderOuterDiv);\n if (this.parent.treeGrid.element) {\n removeClass(this.parent.treeGrid.element.querySelectorAll('.e-headercell'), cls.timelineSingleHeaderOuterDiv);\n removeClass(this.parent.treeGrid.element.querySelectorAll('.e-columnheader'), cls.timelineSingleHeaderOuterDiv);\n }\n }\n if (this.previousIsSingleTier !== this.isSingleTier) {\n var toolbarHeight = 0;\n if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {\n toolbarHeight = this.parent.toolbarModule.element.offsetHeight;\n }\n this.parent.ganttChartModule.scrollObject.\n setHeight(this.parent.ganttHeight - this.parent.ganttChartModule.chartTimelineContainer.offsetHeight - toolbarHeight);\n this.parent.treeGrid.height = this.parent.ganttHeight - toolbarHeight -\n this.parent.ganttChartModule.chartTimelineContainer.offsetHeight;\n }\n };\n Timeline.prototype.dateByLeftValue = function (left, isMilestone, property) {\n var pStartDate = new Date(this.parent.timelineModule.timelineStartDate.toString());\n var milliSecondsPerPixel = (24 * 60 * 60 * 1000) / this.parent.perDayWidth;\n pStartDate.setTime(pStartDate.getTime() + (left * milliSecondsPerPixel));\n /* To render the milestone in proper date while editing */\n if (isMilestone && !isNullOrUndefined(property.predecessorsName) && property.predecessorsName !== '') {\n pStartDate.setDate(pStartDate.getDate() - 1);\n this.parent.dateValidationModule.setTime(this.parent.defaultEndTime, pStartDate);\n pStartDate = this.parent.dateValidationModule.checkStartDate(pStartDate, property, true);\n }\n var tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.topTier :\n this.parent.timelineModule.bottomTier;\n if (tierMode !== 'Hour' && tierMode !== 'Minutes') {\n if (this.parent.isInDst(new Date(this.parent.timelineModule.timelineStartDate.toString())) && !this.parent.isInDst(pStartDate)) {\n pStartDate.setTime(pStartDate.getTime() + (60 * 60 * 1000));\n }\n else if (!this.parent.isInDst(new Date(this.parent.timelineModule.timelineStartDate.toString())) && this.parent.isInDst(pStartDate)) {\n pStartDate.setTime(pStartDate.getTime() - (60 * 60 * 1000));\n }\n }\n return pStartDate;\n };\n /**\n * To create timeline header template.\n *\n * @returns {void}\n * @private\n */\n Timeline.prototype.createTimelineSeries = function () {\n var tr;\n var td;\n var div;\n var table;\n var thead;\n var virtualTableDiv;\n var virtualTrackDiv;\n var loopCount = this.isSingleTier ? 1 : 2;\n var tier = this.topTier === 'None' ? 'bottomTier' : 'topTier';\n this.topTierCollection = [];\n this.bottomTierCollection = [];\n if (this.restrictRender == true) {\n this.updateTimelineHeaderHeight();\n this.wholeTimelineWidth = this.calculateWidthBetweenTwoDate(tier, this.parent.timelineModule.timelineStartDate, this.parent.timelineModule.timelineEndDate);\n }\n if (this.parent.enableTimelineVirtualization && (this.wholeTimelineWidth > this.parent.element.offsetWidth * 3)) {\n for (var count = 0; count < loopCount; count++) {\n table = createElement('table', { className: cls.timelineHeaderTableContainer, styles: 'display: block;' });\n table.setAttribute('role', 'none');\n thead = createElement('thead', { className: cls.timelineHeaderTableBody, styles: 'display:block; border-collapse:collapse' });\n tr = createElement('tr', { innerHTML: this.createTimelineTemplate(tier) });\n td = createElement('td');\n div = createElement('div', { styles: 'width: 20px' });\n virtualTableDiv = createElement('div', { className: cls.virtualTable });\n virtualTrackDiv = createElement('div', { className: cls.virtualTrack });\n td.appendChild(div);\n tr.appendChild(td);\n virtualTableDiv.appendChild(tr);\n thead.appendChild(virtualTableDiv);\n thead.appendChild(virtualTrackDiv);\n table.appendChild(thead);\n this.parent.ganttChartModule.chartTimelineContainer.appendChild(table);\n tier = 'bottomTier';\n tr = null;\n this.restrictRender = false;\n }\n if (this.parent.height === \"Auto\" || this.parent.timelineModule.isSingleTier) {\n var timelineContainer = this.parent.element.getElementsByClassName('e-timeline-header-container')[0]['offsetHeight'];\n this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';\n if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-gridcontent')[0])) {\n this.parent.treeGrid.element.getElementsByClassName('e-gridcontent')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';\n }\n }\n this.timelineVirtualizationStyles();\n }\n else {\n for (var count = 0; count < loopCount; count++) {\n table = createElement('table', { className: cls.timelineHeaderTableContainer, styles: 'display: block;' });\n table.setAttribute('role', 'none');\n thead = createElement('thead', { className: cls.timelineHeaderTableBody, styles: 'display:block; border-collapse:collapse' });\n tr = createElement('tr', { innerHTML: this.createTimelineTemplate(tier) });\n td = createElement('td');\n div = createElement('div', { styles: 'width: 20px' });\n td.appendChild(div);\n tr.appendChild(td);\n thead.appendChild(tr);\n table.appendChild(thead);\n this.parent.ganttChartModule.chartTimelineContainer.appendChild(table);\n tier = 'bottomTier';\n tr = null;\n }\n if (this.parent.height === \"Auto\" || this.parent.timelineModule.isSingleTier) {\n var timelineContainer = this.parent.element.getElementsByClassName('e-timeline-header-container')[0]['offsetHeight'];\n this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';\n if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-gridcontent')[0])) {\n this.parent.treeGrid.element.getElementsByClassName('e-gridcontent')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';\n }\n }\n }\n };\n Timeline.prototype.timelineVirtualizationStyles = function () {\n var translateXValue = 0;\n var translateYValue = 0;\n var trackWidth = this.wholeTimelineWidth;\n if (this.parent.enableTimelineVirtualization) {\n //e-content styles updating\n translateXValue = (this.parent.enableTimelineVirtualization && !isNullOrUndefined(this.parent.ganttChartModule.scrollObject.element.scrollLeft)\n && this.parent.ganttChartModule.scrollObject.element.scrollLeft != 0) ? this.parent.ganttChartModule.scrollObject.getTimelineLeft() : 0;\n if (this.parent.enableRtl) {\n translateXValue = -(translateXValue);\n }\n var contentVirtualTable = this.parent.element.querySelectorAll(\".e-chart-scroll-container\")[0].querySelector(\".e-virtualtable\");\n contentVirtualTable.style.transform = \"translate(\" + translateXValue + \"px, \" + translateYValue + \"px)\";\n var contentVirtualTrack = this.parent.element.querySelectorAll(\".e-chart-scroll-container\")[0].querySelector(\".e-virtualtrack\");\n contentVirtualTrack.style.position = \"relative\";\n contentVirtualTrack.style.width = trackWidth + 'px';\n //timeline styles updating\n if (this.parent.ganttChartModule.scrollObject['isSetScrollLeft']) {\n var virtualTableStylesT = this.parent.element.querySelectorAll(\".e-timeline-header-table-container\")[0].querySelector(\".e-virtualtable\");\n var virtualTableStylesB = this.parent.element.querySelectorAll(\".e-timeline-header-table-container\")[1].querySelector(\".e-virtualtable\");\n virtualTableStylesT.style.transform = \"translate(\" + translateXValue + \"px, \" + translateYValue + \"px)\";\n virtualTableStylesB.style.transform = \"translate(\" + translateXValue + \"px, \" + translateYValue + \"px)\";\n }\n var virtualTrackStylesT = this.parent.element.querySelectorAll(\".e-timeline-header-table-container\")[0].querySelector(\".e-virtualtrack\");\n var virtualTrackStylesB = this.parent.element.querySelectorAll(\".e-timeline-header-table-container\")[1].querySelector(\".e-virtualtrack\");\n virtualTrackStylesT.style.position = \"relative\";\n virtualTrackStylesB.style.position = \"relative\";\n virtualTrackStylesT.style.width = trackWidth + 'px';\n virtualTrackStylesB.style.width = trackWidth + 'px';\n //dependency viewer styles updating\n var dependencyViewer = this.parent.connectorLineModule.svgObject;\n dependencyViewer['style'].width = trackWidth + 'px';\n // timeline header container width updating\n var timelineHeader = this.parent.element.querySelector('.' + cls.timelineHeaderContainer);\n timelineHeader['style'].width = 'calc(100% - ' + 17 + 'px)';\n if (this.parent.timelineModule.isZooming || this.parent.timelineModule.isZoomToFit) {\n this.parent.ganttChartModule.scrollElement.scrollLeft = 0;\n this.parent.ganttChartModule.scrollObject.updateChartElementStyles();\n }\n }\n };\n /**\n * To validate timeline tier count.\n *\n * @param {string} mode .\n * @param {number} count .\n * @param {string} tier .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.validateCount = function (mode, count, tier) {\n var tierCount = !isNullOrUndefined(count) && parseInt(count.toString(), 10) > 0 ? parseInt(count.toString(), 10) : 1;\n var timeDifference = Math.abs(this.timelineRoundOffEndDate.getTime() - this.timelineStartDate.getTime());\n var difference;\n switch (mode) {\n case 'Year':\n difference = Math.round((timeDifference / (1000 * 3600 * 24)) / (12 * 28));\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? difference : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n case 'Month':\n difference = Math.round((timeDifference / (1000 * 3600 * 24)) / 28);\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? (difference + 1) : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n case 'Week':\n difference = Math.round((timeDifference / (1000 * 3600 * 24)) / 7);\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? difference : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n case 'Day':\n difference = Math.round(timeDifference / (1000 * 3600 * 24));\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? difference : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n case 'Hour':\n difference = Math.round(timeDifference / (1000 * 3600));\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? difference : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n case 'Minutes':\n difference = Math.round(timeDifference / (1000 * 60));\n tierCount = tierCount <= difference ? tierCount : difference > 0 ? difference : 1;\n if (this.topTier !== 'None' && tier === 'bottomTier') {\n tierCount = this.validateBottomTierCount(mode, tierCount);\n }\n break;\n }\n if (count !== tierCount && this.isZooming && this.parent.toolbarModule && (tier === 'bottomTier' || this.isSingleTier)) {\n if (this.isZoomIn) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomin'], false);\n }\n else {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_zoomout'], false);\n }\n }\n return tierCount;\n };\n /**\n * To validate bottom tier count.\n *\n * @param {string} mode .\n * @param {number} tierCount .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.validateBottomTierCount = function (mode, tierCount) {\n var count;\n switch (mode) {\n case 'Year':\n count = tierCount <= this.customTimelineSettings.topTier.count ?\n tierCount : this.customTimelineSettings.topTier.count;\n break;\n case 'Month':\n count = this.topTier === 'Year' ? tierCount <= (this.customTimelineSettings.topTier.count * 12) ?\n tierCount : (this.customTimelineSettings.topTier.count * 12) :\n tierCount <= this.customTimelineSettings.topTier.count ?\n tierCount : this.customTimelineSettings.topTier.count;\n break;\n case 'Week':\n count = this.topTier === 'Year' ? tierCount <= (this.customTimelineSettings.topTier.count * (12 * 4)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (12 * 4)) :\n this.topTier === 'Month' ? tierCount <= (this.customTimelineSettings.topTier.count * 4) ?\n tierCount : (this.customTimelineSettings.topTier.count * 4) :\n tierCount <= this.customTimelineSettings.topTier.count ?\n tierCount : this.customTimelineSettings.topTier.count;\n break;\n case 'Day':\n count = this.topTier === 'Year' ? tierCount <= (this.customTimelineSettings.topTier.count * (12 * 28)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (12 * 28)) :\n this.topTier === 'Month' ? tierCount <= (this.customTimelineSettings.topTier.count * 28) ?\n tierCount : (this.customTimelineSettings.topTier.count * 28) :\n this.topTier === 'Week' ? tierCount <= (this.customTimelineSettings.topTier.count * 7) ?\n tierCount : (this.customTimelineSettings.topTier.count * 7) :\n tierCount <= this.customTimelineSettings.topTier.count ? tierCount : this.customTimelineSettings.topTier.count;\n break;\n case 'Hour':\n count = this.topTier === 'Year' ? tierCount <= (this.customTimelineSettings.topTier.count * (12 * 28 * 24)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (12 * 28 * 24)) :\n this.topTier === 'Month' ? tierCount <= (this.customTimelineSettings.topTier.count * (28 * 24)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (28 * 24)) :\n this.topTier === 'Week' ? tierCount <= (this.customTimelineSettings.topTier.count * 7 * 24) ?\n tierCount : (this.customTimelineSettings.topTier.count * 7 * 24) :\n this.topTier === 'Day' ? tierCount <= (this.customTimelineSettings.topTier.count * 24) ?\n tierCount : (this.customTimelineSettings.topTier.count * 24) :\n tierCount <= this.customTimelineSettings.topTier.count ?\n tierCount : this.customTimelineSettings.topTier.count;\n break;\n case 'Minutes':\n count = this.topTier === 'Year' ? tierCount <= (this.customTimelineSettings.topTier.count * (12 * 28 * 24 * 60)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (12 * 28 * 24 * 60)) :\n this.topTier === 'Month' ? tierCount <= (this.customTimelineSettings.topTier.count * (28 * 24 * 60)) ?\n tierCount : (this.customTimelineSettings.topTier.count * (28 * 24 * 60)) :\n this.topTier === 'Week' ? tierCount <= (this.customTimelineSettings.topTier.count * 7 * 24 * 60) ?\n tierCount : (this.customTimelineSettings.topTier.count * 7 * 24 * 60) :\n this.topTier === 'Day' ? tierCount <= (this.customTimelineSettings.topTier.count * 24 * 60) ?\n tierCount : (this.customTimelineSettings.topTier.count * 24 * 60) :\n this.topTier === 'Hour' ? tierCount <= (this.customTimelineSettings.topTier.count * 60) ?\n tierCount : (this.customTimelineSettings.topTier.count * 60) :\n tierCount <= this.customTimelineSettings.topTier.count ?\n tierCount : this.customTimelineSettings.topTier.count;\n break;\n }\n return count;\n };\n /**\n * To validate timeline tier format.\n *\n * @param {string} mode .\n * @param {string} format .\n * @returns {string} .\n * @private\n */\n Timeline.prototype.validateFormat = function (mode, format) {\n var tierFormat;\n switch (mode) {\n case 'Week':\n tierFormat = !format ? 'MMM dd, yyyy' : format;\n break;\n case 'Day':\n case 'None':\n tierFormat = !format ? '' : format;\n break;\n case 'Hour':\n tierFormat = !format ? 'H' : format;\n break;\n case 'Month':\n tierFormat = !format ? 'MMM yyyy' : format;\n break;\n case 'Year':\n tierFormat = !format ? 'yyyy' : format;\n break;\n case 'Minutes':\n tierFormat = !format ? 'm' : format;\n break;\n }\n return tierFormat;\n };\n /**\n * To perform extend operation.\n *\n * @param {object} cloneObj .\n * @param {string[]} propertyCollection .\n * @param {object} innerProperty .\n * @returns {object} .\n * @private\n */\n Timeline.prototype.extendFunction = function (cloneObj, propertyCollection, innerProperty) {\n var _this = this;\n var tempObj = {};\n for (var index = 0; index < propertyCollection.length; index++) {\n tempObj[propertyCollection[index]] = cloneObj[propertyCollection[index]];\n }\n if (innerProperty) {\n Object.keys(innerProperty).forEach(function (key) {\n tempObj[key] = _this.extendFunction(cloneObj[key], innerProperty[key], null);\n });\n }\n return tempObj;\n };\n /**\n * To format date.\n *\n * @param {string} dayFormat .\n * @param {Date} data .\n * @returns {string} .\n * @private\n */\n Timeline.prototype.formatDateHeader = function (dayFormat, data) {\n var date = new Date(data.getTime());\n var dateString;\n if (dayFormat === '') {\n dateString = this.parent.globalize.formatDate(date, { format: 'E' });\n if (this.parent.locale === 'zh') {\n dateString = dateString.slice(1);\n }\n else {\n if (this.parent.locale === 'ar') {\n dateString = dateString;\n }\n else {\n dateString = dateString.slice(0, 1);\n }\n }\n }\n else {\n dateString = this.parent.globalize.formatDate(date, { format: dayFormat });\n }\n return dateString;\n };\n /**\n * Custom Formatting.\n *\n * @param {Date} date .\n * @param {string} format .\n * @param {string} tier .\n * @param {string} mode .\n * @param {string | ITimelineFormatter} formatter .\n * @returns {string} .\n * @private\n */\n Timeline.prototype.customFormat = function (date, format, tier, mode, formatter) {\n formatter = (typeof formatter === 'string' ? getValue(formatter, window) : formatter);\n return formatter(date, format, tier, mode);\n };\n /**\n * To create timeline template .\n *\n * @param {string} tier .\n * @returns {string} .\n * @private\n */\n Timeline.prototype.createTimelineTemplate = function (tier) {\n var isFirstCell = false;\n var parent = this.parent;\n var parentTh = '';\n var parentTr = '';\n var mode = tier === 'topTier' ?\n parent.timelineModule.customTimelineSettings.topTier.unit : parent.timelineModule.customTimelineSettings.bottomTier.unit;\n var count = tier === 'topTier' ? parent.timelineModule.customTimelineSettings.topTier.count :\n parent.timelineModule.customTimelineSettings.bottomTier.count;\n var increment;\n var newTime;\n var leftValueForStartDate = (this.parent.enableTimelineVirtualization && this.parent.ganttChartModule.scrollObject.element.scrollLeft != 0)\n ? this.parent.ganttChartModule.scrollObject.getTimelineLeft() : null;\n var startDate = (this.parent.enableTimelineVirtualization && !isNullOrUndefined(leftValueForStartDate))\n ? new Date((this.dateByLeftValue(leftValueForStartDate)).toString()) : new Date(this.parent.timelineModule.timelineStartDate.toString());\n var endDate = new Date(this.timelineRoundOffEndDate.toString());\n var scheduleDateCollection = [];\n var width = 0;\n var WidthForVirtualTable = this.parent.element.offsetWidth * 3;\n do {\n // PDf export collection\n var timelineCell = {};\n timelineCell.startDate = new Date(startDate.getTime());\n if (mode === 'Month' && tier === 'bottomTier' && (count != 1) && scheduleDateCollection.length === 0) {\n isFirstCell = true;\n }\n parentTr = this.getHeaterTemplateString(new Date(startDate.toString()), mode, tier, false, count, timelineCell, isFirstCell);\n scheduleDateCollection.push(new Date(startDate.toString()));\n if (isFirstCell) {\n newTime = this.calculateQuarterEndDate(startDate, count).getTime();\n }\n else {\n increment = this.getIncrement(startDate, count, mode);\n newTime = startDate.getTime() + increment;\n }\n isFirstCell = false;\n startDate.setTime(newTime);\n if (startDate.getHours() === 5 && count === 2 && tier === 'bottomTier' &&\n this.parent.timelineSettings.bottomTier.unit === 'Hour') {\n startDate.setTime(startDate.getTime() - (1000 * 60 * 60));\n }\n if (startDate >= endDate) {\n /* eslint-disable-next-line */\n parentTr = this.getHeaterTemplateString(scheduleDateCollection[scheduleDateCollection.length - 1], mode, tier, true, count, timelineCell);\n }\n parentTh = parentTh + parentTr;\n var tierCollection = tier === 'topTier' ? this.topTierCollection : this.bottomTierCollection;\n timelineCell.endDate = new Date(startDate.getTime());\n if (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport && this.parent.enableTimelineVirtualization) {\n if (tier == 'topTier') {\n this.pdfExportTopTierCollection.push(timelineCell);\n }\n else {\n this.pdfExportBottomTierCollection.push(timelineCell);\n }\n }\n else {\n tierCollection.push(timelineCell);\n }\n width += timelineCell.width;\n this.weekendEndDate = timelineCell.endDate >= endDate ? endDate : timelineCell.endDate;\n } while ((this.parent.enableTimelineVirtualization && (!this.parent.pdfExportModule || this.parent.pdfExportModule && !this.parent.pdfExportModule.isPdfExport)) ? (width < WidthForVirtualTable) && (startDate < endDate) : (startDate < endDate));\n return parentTh;\n };\n Timeline.prototype.updateTimelineAfterZooming = function (endDate, resized) {\n var timeDiff;\n var perDayWidth;\n var totWidth;\n var contentElement = document.getElementsByClassName('e-chart-scroll-container e-content')[0];\n if (!isNullOrUndefined(contentElement)) {\n var contentWidth = contentElement['offsetWidth'];\n var contentHeight = contentElement['offsetHeight'];\n var scrollHeight = document.getElementsByClassName('e-chart-rows-container')[0]['offsetHeight'];\n timeDiff = Math.abs(this.timelineStartDate.getTime() - endDate.getTime());\n timeDiff = timeDiff / (1000 * 3600 * 24);\n if (this.bottomTier === 'None') {\n perDayWidth = this.getPerDayWidth(this.customTimelineSettings.timelineUnitSize, this.customTimelineSettings.topTier.count, this.topTier);\n }\n else {\n perDayWidth = this.getPerDayWidth(this.customTimelineSettings.timelineUnitSize, this.customTimelineSettings.bottomTier.count, this.bottomTier);\n }\n if (contentHeight < scrollHeight) {\n totWidth = (perDayWidth * timeDiff) + 17;\n }\n else {\n totWidth = (perDayWidth * timeDiff);\n }\n if (contentWidth >= totWidth) {\n var widthDiff = contentWidth - totWidth;\n widthDiff = Math.round(widthDiff / perDayWidth);\n endDate.setDate(endDate.getDate() + widthDiff);\n this.parent.timelineModule.timelineEndDate = endDate;\n if (resized) {\n this.parent.updateProjectDates(this.timelineStartDate, this.timelineEndDate, this.parent.isTimelineRoundOff);\n }\n }\n }\n };\n Timeline.prototype.getTimelineRoundOffEndDate = function (date) {\n var tierMode = this.topTier === 'None' ? this.bottomTier : this.topTier;\n var endDate = new Date(date.toString());\n if (this.parent.isTimelineRoundOff) {\n if (tierMode === 'Hour') {\n endDate.setMinutes(60);\n }\n else if (tierMode === 'Minutes') {\n endDate.setSeconds(60);\n }\n else {\n endDate.setHours(24, 0, 0, 0);\n }\n }\n if (isNullOrUndefined(this.parent.projectEndDate)) {\n this.updateTimelineAfterZooming(endDate, false);\n }\n return endDate;\n };\n /**\n *\n * @param {Date} startDate .\n * @param {number} count .\n * @param {string} mode .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.getIncrement = function (startDate, count, mode) {\n var firstDay = new Date(startDate.getTime());\n var lastDay = new Date(startDate.getTime());\n var increment;\n switch (mode) {\n case 'Year':\n firstDay = startDate;\n lastDay = new Date(startDate.getFullYear() + (count - 1), 11, 31);\n increment = (lastDay.getTime() - firstDay.getTime()) + (1000 * 60 * 60 * 24);\n break;\n case 'Month':\n firstDay = startDate;\n lastDay = new Date(startDate.getFullYear(), startDate.getMonth() + count, 1);\n increment = lastDay.getTime() - firstDay.getTime();\n break;\n case 'Week':\n {\n var dayIndex = this.parent.timelineModule.customTimelineSettings.weekStartDay;\n var dayIntervel = startDate.getDay() < dayIndex ? (dayIndex - startDate.getDay()) :\n (6 - startDate.getDay()) + dayIndex;\n count = dayIntervel > 0 ? count - 1 : 0;\n lastDay.setHours(24, 0, 0, 0);\n dayIntervel = startDate.getDay() < dayIndex ? dayIntervel > 0 ?\n dayIntervel - 1 : dayIntervel : dayIntervel;\n lastDay.setDate(lastDay.getDate() + (dayIntervel + (7 * count)));\n increment = lastDay.getTime() - firstDay.getTime();\n break;\n }\n case 'Day':\n lastDay.setHours(24, 0, 0, 0);\n increment = (lastDay.getTime() - firstDay.getTime()) + (1000 * 60 * 60 * 24 * (count - 1));\n increment = this.checkDate(firstDay, lastDay, increment, count, mode);\n break;\n case 'Hour':\n lastDay.setMinutes(60);\n lastDay.setSeconds(0);\n increment = (lastDay.getTime() - firstDay.getTime()) + (1000 * 60 * 60 * (count - 1));\n increment = this.checkDate(firstDay, lastDay, increment, count, mode);\n break;\n case 'Minutes':\n lastDay.setSeconds(60);\n increment = (lastDay.getTime() - firstDay.getTime()) + (1000 * 60 * (count - 1));\n increment = this.checkDate(firstDay, lastDay, increment, count, mode);\n break;\n }\n return increment;\n };\n Timeline.prototype.checkDate = function (firstDay, lastDay, increment, count, mode) {\n var date = new Date(firstDay.getTime());\n date.setTime(date.getTime() + increment);\n if (mode === \"Day\" && count !== 1 && ((date.getTime() - lastDay.getTime()) / (1000 * 60 * 60 * 24)) != count && (firstDay.getTimezoneOffset() !== date.getTimezoneOffset())) {\n var diffCount = count - (date.getTime() - lastDay.getTime()) / (1000 * 60 * 60 * 24);\n if (!this.parent.isInDst(date)) {\n increment += (1000 * 60 * 60 * diffCount);\n }\n else if (this.parent.isInDst(date) && count !== 2) {\n increment -= (1000 * 60 * 60 * diffCount);\n }\n }\n else if (mode === \"Hour\" && count !== 1 && ((date.getTime() - lastDay.getTime()) / (1000 * 60 * 60)) != count && (firstDay.getTimezoneOffset() !== date.getTimezoneOffset())) {\n var diffCount = count - (date.getTime() - lastDay.getTime()) / (1000 * 60 * 60);\n if (!this.parent.isInDst(date)) {\n increment += (1000 * 60 * 60 * diffCount);\n }\n else if (this.parent.isInDst(date) && count !== 2) {\n increment -= (1000 * 60 * 60 * diffCount);\n }\n }\n else if (mode === \"Minutes\" && count !== 1 && ((date.getTime() - lastDay.getTime()) / (1000 * 60)) != count && (firstDay.getTimezoneOffset() !== date.getTimezoneOffset())) {\n var diffCount = count - (date.getTime() - lastDay.getTime()) / (1000 * 60);\n if (!this.parent.isInDst(date)) {\n increment += (1000 * 60 * 60 * diffCount);\n }\n else if (this.parent.isInDst(date) && count !== 2) {\n increment -= (1000 * 60 * 60 * diffCount);\n }\n }\n return increment;\n };\n /**\n * Method to find header cell was weekend or not\n *\n * @param {string} mode .\n * @param {string} tier .\n * @param {Date} day .\n * @returns {boolean} .\n */\n Timeline.prototype.isWeekendHeaderCell = function (mode, tier, day) {\n return (mode === 'Day' || mode === 'Hour' || mode === 'Minutes') && (this.customTimelineSettings[tier].count === 1 ||\n mode === 'Hour' || mode === 'Minutes') &&\n this.parent.nonWorkingDayIndex.indexOf(day.getDay()) !== -1;\n };\n Timeline.prototype.calculateQuarterEndDate = function (date, count) {\n var month = date.getMonth();\n if (count === 3) {\n if (month >= 0 && month <= 2) {\n return new Date(date.getFullYear(), 3, 1);\n }\n else if (month >= 3 && month <= 5) {\n return new Date(date.getFullYear(), 6, 1);\n }\n else if (month >= 6 && month <= 8) {\n return new Date(date.getFullYear(), 9, 1);\n }\n else {\n return new Date(date.getFullYear() + 1, 0, 1);\n }\n }\n else {\n if (month >= 0 && month <= 5) {\n return new Date(date.getFullYear(), 6, 1);\n }\n else {\n return new Date(date.getFullYear() + 1, 0, 1);\n }\n }\n };\n /**\n * To construct template string.\n *\n * @param {Date} scheduleWeeks .\n * @param {string} mode .\n * @param {string} tier .\n * @param {boolean} isLast .\n * @param {number} count .\n * @param {TimelineFormat} timelineCell .\n * @returns {string} .\n * @private\n */\n /* eslint-disable-next-line */\n Timeline.prototype.getHeaterTemplateString = function (scheduleWeeks, mode, tier, isLast, count, timelineCell, isFirstCell) {\n var parentTr = '';\n var td = '';\n var format = tier === 'topTier' ?\n this.parent.timelineModule.customTimelineSettings.topTier.format :\n this.parent.timelineModule.customTimelineSettings.bottomTier.format;\n var formatter = tier === 'topTier' ?\n this.parent.timelineModule.customTimelineSettings.topTier.formatter :\n this.parent.timelineModule.customTimelineSettings.bottomTier.formatter;\n var thWidth;\n var date = isNullOrUndefined(formatter) ?\n this.parent.globalize.formatDate(scheduleWeeks, { format: this.parent.getDateFormat() }) :\n this.customFormat(scheduleWeeks, format, tier, mode, formatter);\n thWidth = (this.getIncrement(scheduleWeeks, count, mode) / (1000 * 60 * 60 * 24)) * this.parent.perDayWidth;\n var newDate = new Date(scheduleWeeks.getTime() + this.getIncrement(scheduleWeeks, count, mode));\n if ((!this.parent.isInDst(newDate) && this.parent.isInDst(scheduleWeeks)) ||\n (this.parent.isInDst(newDate) && !this.parent.isInDst(scheduleWeeks))) {\n var temp = void 0;\n if ((!this.parent.isInDst(newDate) && this.parent.isInDst(scheduleWeeks))) {\n temp = this.getIncrement(scheduleWeeks, count, mode) - (1000 * 60 * 60);\n }\n else {\n temp = this.getIncrement(scheduleWeeks, count, mode) + (1000 * 60 * 60);\n }\n thWidth = (temp / (1000 * 60 * 60 * 24)) * this.parent.perDayWidth;\n }\n var cellWidth = thWidth;\n thWidth = isLast || isFirstCell ? isLast ? this.calculateWidthBetweenTwoDate(mode, scheduleWeeks, this.timelineRoundOffEndDate) : this.calculateWidthBetweenTwoDate(mode, scheduleWeeks, this.calculateQuarterEndDate(scheduleWeeks, count))\n : thWidth;\n var isWeekendCell = this.isWeekendHeaderCell(mode, tier, scheduleWeeks);\n var textClassName = tier === 'topTier' ? ' e-gantt-top-cell-text' : '';\n var value = (isNullOrUndefined(formatter) ? this.formatDateHeader(format, scheduleWeeks) :\n this.customFormat(scheduleWeeks, format, tier, mode, formatter));\n td += this.parent.timelineModule.isSingleTier ?\n '';\n parentTr += td;\n parentTr += '';\n if ((this.isSingleTier || tier === 'topTier') && !isLast) {\n this.totalTimelineWidth = this.totalTimelineWidth + thWidth;\n }\n else if ((this.isSingleTier || tier === 'topTier') && isLast) {\n this.totalTimelineWidth = (this.totalTimelineWidth - cellWidth) + thWidth;\n }\n // PDf export collection\n timelineCell.value = value;\n timelineCell.isWeekend = isWeekendCell;\n timelineCell.width = thWidth;\n return parentTr;\n };\n /**\n * To calculate last 'th' width.\n *\n * @param {string} mode .\n * @param {Date} scheduleWeeks .\n * @param {Date} endDate .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.calculateWidthBetweenTwoDate = function (mode, scheduleWeeks, endDate) {\n var sDate = new Date(scheduleWeeks.getTime());\n var eDate = new Date(endDate.getTime());\n this.parent.dateValidationModule['updateDateWithTimeZone'](sDate, eDate);\n var timeDifference = (eDate.getTime() - sDate.getTime());\n var balanceDay = (timeDifference / (1000 * 60 * 60 * 24));\n return balanceDay * this.parent.perDayWidth;\n };\n /**\n * To calculate timeline width.\n *\n * @returns {void} .\n * @private\n */\n Timeline.prototype.timelineWidthCalculation = function () {\n var timelineUnitSize = this.customTimelineSettings.timelineUnitSize;\n var bottomTierCount = this.customTimelineSettings.bottomTier.count;\n var topTierCount = this.customTimelineSettings.topTier.count;\n this.bottomTierCellWidth = timelineUnitSize;\n if (this.bottomTier === 'None') {\n this.parent.perDayWidth = this.getPerDayWidth(timelineUnitSize, topTierCount, this.topTier);\n }\n else {\n this.parent.perDayWidth = this.getPerDayWidth(timelineUnitSize, bottomTierCount, this.bottomTier);\n }\n this.topTierCellWidth = this.bottomTier !== 'None' ? this.topTier === 'Week' ?\n this.parent.perDayWidth * 7 : this.topTier === 'Hour' ?\n this.parent.perDayWidth / 24 : this.topTier === 'Minutes' ?\n this.parent.perDayWidth / (24 * 60) : this.parent.perDayWidth : timelineUnitSize;\n this.topTierCellWidth = this.isSingleTier ? this.topTierCellWidth : this.topTierCellWidth * topTierCount;\n };\n /**\n * To validate per day width.\n *\n * @param {number} timelineUnitSize .\n * @param {number} bottomTierCount .\n * @param {string} mode .\n * @returns {number} .\n * @private\n */\n Timeline.prototype.getPerDayWidth = function (timelineUnitSize, bottomTierCount, mode) {\n var perDayWidth;\n switch (mode) {\n case 'Year':\n perDayWidth = (timelineUnitSize / bottomTierCount) / (12 * 28);\n break;\n case 'Month':\n perDayWidth = (timelineUnitSize / bottomTierCount) / 28;\n break;\n case 'Week':\n perDayWidth = (timelineUnitSize / bottomTierCount) / 7;\n break;\n case 'Day':\n perDayWidth = timelineUnitSize / bottomTierCount;\n break;\n case 'Hour':\n perDayWidth = (24 / bottomTierCount) * timelineUnitSize;\n break;\n case 'Minutes':\n perDayWidth = ((60 * 24) / bottomTierCount) * timelineUnitSize;\n break;\n }\n return perDayWidth;\n };\n /**\n * To validate project start date and end date.\n *\n * @returns {void} .\n * @private\n */\n Timeline.prototype.roundOffDays = function () {\n var startDate = this.parent.cloneProjectStartDate;\n var endDate = this.parent.cloneProjectEndDate;\n var tierMode = this.topTier === 'None' ? this.bottomTier : this.topTier;\n if (this.parent.isTimelineRoundOff) {\n if (tierMode === 'Year') {\n startDate = new Date(startDate.getFullYear(), 0, 1);\n endDate = new Date(endDate.getFullYear(), 11, 31);\n }\n else if (tierMode === 'Month') {\n startDate = new Date(startDate.getFullYear(), startDate.getMonth(), 1);\n endDate = new Date(endDate.getFullYear(), endDate.getMonth() + 1, 0);\n }\n else if (tierMode === 'Week') {\n var dayIndex = !isNullOrUndefined(this.customTimelineSettings.weekStartDay) ? this.parent.timelineModule.customTimelineSettings.weekStartDay : 0;\n var roundOffStartDate = startDate.getDay() < dayIndex ?\n (startDate.getDate()) - (7 - dayIndex + startDate.getDay()) :\n (startDate.getDate()) - startDate.getDay() + dayIndex;\n startDate.setDate(roundOffStartDate);\n var first = endDate.getDate() - endDate.getDay();\n var last = first + 6 + dayIndex;\n endDate.setDate(last);\n }\n if (tierMode === 'Hour') {\n startDate.setMinutes(0);\n }\n else if (tierMode === 'Minutes') {\n startDate.setSeconds(0);\n }\n else {\n startDate.setHours(0, 0, 0, 0);\n }\n }\n this.timelineStartDate = startDate;\n this.timelineEndDate = endDate;\n this.timelineRoundOffEndDate = this.getTimelineRoundOffEndDate(this.timelineEndDate);\n };\n /**\n * To validate project start date and end date.\n *\n * @param {string} mode .\n * @param {string} span .\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @returns {void} .\n * @private\n */\n Timeline.prototype.updateScheduleDatesByToolBar = function (mode, span, startDate, endDate) {\n if (mode === 'Year') {\n if (span === 'prevTimeSpan') {\n if (startDate.getMonth() === 0) {\n startDate = new Date(startDate.getFullYear() - 1, 0, 1);\n }\n else {\n startDate = new Date(startDate.getFullYear(), 0, 1);\n }\n }\n else {\n if (endDate.getMonth() === 11) {\n endDate = new Date(endDate.getFullYear() + 1, 0, 1);\n }\n else {\n endDate = new Date(endDate.getFullYear(), 12, 1);\n }\n }\n }\n if (mode === 'Month') {\n if (span === 'prevTimeSpan') {\n if (startDate.getDate() === 1) {\n startDate = new Date(startDate.getFullYear(), startDate.getMonth() - 1, 1);\n }\n else {\n startDate = new Date(startDate.getFullYear(), startDate.getMonth(), 1);\n }\n }\n else {\n endDate = new Date(endDate.getFullYear(), endDate.getMonth() + 1, 1);\n }\n }\n if (mode === 'Week') {\n var dayIndex = this.parent.timelineModule.customTimelineSettings.weekStartDay;\n var dayIntervel = void 0;\n if (span === 'prevTimeSpan') {\n dayIntervel = startDate.getDay() < dayIndex ? 7 - (dayIndex - startDate.getDay()) :\n startDate.getDay() - dayIndex;\n startDate.setHours(0, 0, 0, 0);\n if (dayIntervel === 0) {\n startDate.setDate(startDate.getDate() - 7);\n }\n else {\n startDate.setDate(startDate.getDate() - dayIntervel);\n }\n }\n else {\n dayIntervel = endDate.getDay() < dayIndex ? (dayIndex - endDate.getDay()) :\n (7 - endDate.getDay()) + dayIndex;\n endDate.setHours(0, 0, 0, 0);\n if (dayIntervel === 0) {\n endDate.setDate(endDate.getDate() + 6);\n }\n else {\n endDate.setDate(endDate.getDate() + dayIntervel);\n }\n }\n }\n if (mode === 'Day') {\n if (span === 'prevTimeSpan') {\n if (startDate.getHours() === 0) {\n startDate.setTime(startDate.getTime() - (1000 * 60 * 60 * 24));\n }\n else {\n startDate.setHours(0);\n }\n }\n else {\n if (endDate.getHours() === 0) {\n endDate.setTime(endDate.getTime() + (1000 * 60 * 60 * 24));\n }\n else {\n endDate.setHours(24);\n }\n }\n }\n if (mode === 'Hour') {\n if (span === 'prevTimeSpan') {\n if (startDate.getMinutes() === 0) {\n startDate.setTime(startDate.getTime() - (1000 * 60 * 60));\n }\n else {\n startDate.setMinutes(0);\n }\n }\n else {\n if (endDate.getMinutes() === 0) {\n endDate.setTime(endDate.getTime() + (1000 * 60 * 60));\n }\n else {\n endDate.setMinutes(60);\n }\n }\n }\n if (mode === 'Minutes') {\n if (span === 'prevTimeSpan') {\n if (startDate.getSeconds() === 0) {\n startDate.setTime(startDate.getTime() - (1000 * 60));\n }\n else {\n startDate.setSeconds(0);\n }\n }\n else {\n if (endDate.getSeconds() === 0) {\n endDate.setTime(endDate.getTime() + (1000 * 60));\n }\n else {\n endDate.setSeconds(60);\n }\n }\n }\n this.parent.cloneProjectStartDate = startDate;\n this.parent.cloneProjectEndDate = endDate;\n };\n /**\n * To validate project start date and end date.\n *\n * @param {IGanttData[]} tempArray .\n * @param {string} action .\n * @returns {void} .\n * @private\n */\n Timeline.prototype.updateTimeLineOnEditing = function (tempArray, action) {\n if (tempArray[0].length >= 1) {\n for (var i = 0; i < tempArray.length; i++) {\n /* eslint-disable-next-line */\n var temp = tempArray[i];\n var filteredStartDateRecord = temp.filter(function (pdc) { return !isNullOrUndefined(pdc.ganttProperties.startDate); });\n var filteredEndDateRecord = temp.filter(function (pdc) { return !isNullOrUndefined(pdc.ganttProperties.endDate); });\n var minStartDate = filteredStartDateRecord.length > 0 ?\n new Date(DataUtil.aggregates.min(filteredStartDateRecord, 'ganttProperties.startDate')) : null;\n var maxEndDate = filteredEndDateRecord.length > 0 ?\n new Date(DataUtil.aggregates.max(filteredEndDateRecord, 'ganttProperties.endDate')) : null;\n var validStartDate = new Date(this.parent.dataOperation.checkStartDate(this.timelineStartDate).getTime());\n var validEndDate = new Date(this.parent.dataOperation.checkEndDate(this.timelineEndDate).getTime());\n var maxStartLeft = isNullOrUndefined(minStartDate) ?\n null : this.parent.dataOperation.getTaskLeft(minStartDate, false);\n var maxEndLeft = isNullOrUndefined(maxEndDate) ?\n null : this.parent.dataOperation.getTaskLeft(maxEndDate, false);\n var validStartLeft = this.parent.dataOperation.getTaskLeft(validStartDate, false);\n var validEndLeft = this.parent.dataOperation.getTaskLeft(validEndDate, false);\n var isChanged = void 0;\n var taskbarModule = this.parent.editModule.taskbarEditModule;\n if (!isNullOrUndefined(maxStartLeft) && (((!isNullOrUndefined(taskbarModule)) && (!isNullOrUndefined(taskbarModule.taskBarEditAction)\n && taskbarModule.taskBarEditAction !== 'ProgressResizing' &&\n taskbarModule.taskBarEditAction !== 'RightResizing' && taskbarModule.taskBarEditAction !== 'LeftResizing')) || ((taskbarModule)\n && isNullOrUndefined(taskbarModule.taskBarEditAction))) && (maxStartLeft < this.bottomTierCellWidth || maxStartLeft <= validStartLeft)) {\n isChanged = 'prevTimeSpan';\n minStartDate = minStartDate > this.timelineStartDate ? this.timelineStartDate : minStartDate;\n }\n else {\n minStartDate = this.timelineStartDate;\n }\n if (!isNullOrUndefined(maxEndLeft) && (maxEndLeft >= ((this.parent.enableTimelineVirtualization ? this.wholeTimelineWidth : this.totalTimelineWidth) - this.bottomTierCellWidth) ||\n maxEndLeft > validEndLeft)) {\n isChanged = isChanged === 'prevTimeSpan' ? 'both' : 'nextTimeSpan';\n maxEndDate = maxEndDate < this.timelineEndDate ? this.timelineEndDate : maxEndDate;\n }\n else {\n maxEndDate = this.timelineEndDate;\n }\n if (isChanged) {\n this.performTimeSpanAction(isChanged, action, minStartDate, maxEndDate);\n }\n else if (!isNullOrUndefined(temp[0].ganttProperties.segments)) {\n this.parent.dataOperation.updateWidthLeft(temp[0]);\n }\n break;\n }\n }\n };\n /**\n * To validate project start date and end date on editing action\n *\n * @param {string} type .\n * @param {string} isFrom .\n * @param {Date} startDate .\n * @param {Date} endDate .\n * @param {string} mode .\n * @returns {void} .\n * @private\n */\n Timeline.prototype.performTimeSpanAction = function (type, isFrom, startDate, endDate, mode) {\n mode = !isNullOrUndefined(mode) ? mode : this.parent.timelineModule.topTier === 'None' ?\n this.parent.timelineModule.bottomTier : this.parent.timelineModule.topTier;\n var projectStartDate = new Date(this.parent.cloneProjectStartDate.getTime());\n var projectEndDate = new Date(this.parent.cloneProjectEndDate.getTime());\n if (isFrom !== 'publicMethod' && type === 'both') {\n this.updateScheduleDatesByToolBar(mode, 'prevTimeSpan', startDate, endDate);\n this.updateScheduleDatesByToolBar(mode, 'nextTimeSpan', new Date(this.parent.cloneProjectStartDate.getTime()), endDate);\n }\n else {\n this.updateScheduleDatesByToolBar(mode, type, startDate, endDate);\n }\n var args = this.timeSpanActionEvent('actionBegin', type, isFrom);\n if (!args.cancel) {\n this.restrictRender = true;\n this.performedTimeSpanAction = true;\n var previousScrollLeft = this.parent.ganttChartModule.scrollElement.scrollLeft;\n this.parent.updateProjectDates(args.projectStartDate, args.ProjectEndDate, args.isTimelineRoundOff, isFrom);\n if (type === 'prevTimeSpan' && isFrom === 'publicMethod') {\n this.parent.ganttChartModule.updateScrollLeft(0);\n this.parent.timelineModule.isZoomToFit = false;\n }\n else if (type === 'nextTimeSpan' && isFrom === 'publicMethod') {\n this.parent.ganttChartModule.updateScrollLeft(this.parent.enableTimelineVirtualization ? this.wholeTimelineWidth : this.totalTimelineWidth);\n this.parent.timelineModule.isZoomToFit = false;\n }\n else if (type === 'nextTimeSpan' && isFrom === 'TaskbarEditing') {\n var currentScrollLeft = document.getElementsByClassName('e-chart-scroll-container e-content')[0].scrollLeft;\n this.parent.element.querySelector('.e-timeline-header-container').scrollLeft = currentScrollLeft;\n this.parent.timelineModule.isZoomToFit = false;\n }\n if (isFrom === 'TaskbarEditing' && this.parent.enableTimelineVirtualization && this.wholeTimelineWidth > this.parent.element.offsetWidth * 3) {\n this.parent.ganttChartModule.scrollObject.setScrollLeft(previousScrollLeft);\n this.parent.ganttChartModule.scrollObject.updateContent();\n }\n this.parent.timelineModule.timeSpanActionEvent('actionComplete', type, isFrom);\n }\n else {\n this.parent.cloneProjectStartDate = projectStartDate;\n this.parent.cloneProjectEndDate = projectEndDate;\n }\n };\n /**\n * To validate project start date and end date.\n *\n * @param {string} eventType .\n * @param {string} requestType .\n * @param {string} isFrom .\n * @returns {void}\n * @private\n */\n Timeline.prototype.timeSpanActionEvent = function (eventType, requestType, isFrom) {\n var args = {};\n args.projectStartDate = new Date(this.parent.cloneProjectStartDate.getTime());\n args.ProjectEndDate = new Date(this.parent.cloneProjectEndDate.getTime());\n args.requestType = isFrom === 'publicMethod' ? requestType : isFrom === 'beforeAdd' ?\n 'TimelineRefreshOnAdd' : isFrom === 'TaskbarEditing' ? 'TimelineRefreshOnEdit' : requestType;\n if (eventType === 'actionBegin') {\n args.isTimelineRoundOff = this.parent.isTimelineRoundOff;\n args.cancel = false;\n }\n args.action = 'TimescaleUpdate';\n this.parent.trigger(eventType, args);\n return args;\n };\n return Timeline;\n}());\nexport { Timeline };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, Property } from '@syncfusion/ej2-base';\n/**\n * Represents TreeGrid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options) {\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n *\n * @default null\n */\n this.filter = {};\n merge(this, options);\n }\n /**\n * Update the State changes reflected for TreeGrid columndirective in react platform.\n *\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent['isReact'] && keys[parseInt(i.toString(), 10)] === 'template') {\n var refreshReactColumnTemplateByUid = 'refreshReactColumnTemplateByUid';\n this.parent.clipboardModule['treeGridParent'].renderModule[\"\" + refreshReactColumnTemplateByUid](this.uid);\n }\n }\n };\n return Column;\n}());\nexport { Column };\n/**\n * Defines TreeGrid column\n */\nvar TreeGridColumn = /** @class */ (function (_super) {\n __extends(TreeGridColumn, _super);\n function TreeGridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TreeGridColumn.prototype, \"columns\", void 0);\n return TreeGridColumn;\n}(Column));\nexport { TreeGridColumn };\n/**\n * Defines stacked tree grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(TreeGridColumn));\nexport { StackedColumn };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Loading Indicator of the Tree Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Represents the Tree Grid predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property('Parent')\n ], FilterSettings.prototype, \"hierarchyMode\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the textwrap behavior of the TreeGrid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Logger as GridLogger, Grid, detailLists } from '@syncfusion/ej2-grids';\n/**\n * Logger module for TreeGrid\n *\n * @hidden\n */\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/treegrid';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar WARNING = '[EJ2TreeGrid.Warning]';\nvar ERROR = '[EJ2TreeGrid.Error]';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar INFO = '[EJ2TreeGrid.Info]';\nvar IsRowDDEnabled = false;\nvar Logger = /** @class */ (function (_super) {\n __extends(Logger, _super);\n function Logger(parent) {\n var _this = this;\n Grid.Inject(GridLogger);\n _this = _super.call(this, parent) || this;\n return _this;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n var message = item.generateMessage(args, this.parent, cOp.options);\n message = message.replace('EJ2Grid', 'EJ2TreeGrid').replace('* Hierarchy Grid', '').replace('* Grouping', '');\n if (IsRowDDEnabled && type[parseInt(i.toString(), 10)] === 'primary_column_missing') {\n message = message.replace('Editing', 'Row DragAndDrop');\n IsRowDDEnabled = false;\n }\n var index = message.indexOf('https');\n var gridurl = message.substring(index);\n if (type[parseInt(i.toString(), 10)] === 'module_missing') {\n message = message.replace(gridurl, DOC_URL + '/modules');\n }\n else if (type[parseInt(i.toString(), 10)] === 'primary_column_missing' || type[parseInt(i.toString(), 10)] === 'selection_key_missing') {\n message = message.replace(gridurl, BASE_DOC_URL + '/api/treegrid/column/#isprimarykey');\n }\n else if (type[parseInt(i.toString(), 10)] === 'grid_remote_edit') {\n message = message.replace(gridurl, DOC_URL + '/edit');\n }\n else if (type[parseInt(i.toString(), 10)] === 'virtual_height') {\n message = message.replace(gridurl, DOC_URL + '/virtual');\n }\n else if (type[parseInt(i.toString(), 10)] === 'check_datasource_columns') {\n message = message.replace(gridurl, DOC_URL + '/columns');\n }\n else if (type[parseInt(i.toString(), 10)] === 'locale_missing') {\n message = message.replace(gridurl, DOC_URL + '/global-local/#localization');\n }\n if (type[parseInt(i.toString(), 10)] === 'datasource_syntax_mismatch') {\n if (!isNullOrUndefined(this.treeGridObj) && !isNullOrUndefined(this.treeGridObj.dataStateChange)) {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n else {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n }\n };\n Logger.prototype.treeLog = function (types, args, treeGrid) {\n this.treeGridObj = treeGrid;\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n if (treeGrid.allowRowDragAndDrop && !treeGrid.columns.filter(function (column) { return column.isPrimaryKey; }).length) {\n IsRowDDEnabled = true;\n this.log('primary_column_missing', args);\n }\n for (var i = 0; i < type.length; i++) {\n var item = treeGridDetails[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, treeGrid);\n if (cOp.success) {\n var message = item.generateMessage(args, treeGrid, cOp.options);\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n };\n return Logger;\n}(GridLogger));\nexport { Logger };\nexport var treeGridDetails = {\n // eslint-disable-next-line camelcase\n mapping_fields_missing: {\n type: 'mapping_fields_missing',\n logType: 'error',\n check: function (args, parent) {\n var opt = { success: false };\n if ((isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.childMapping)\n && isNullOrUndefined(parent.parentIdMapping)) ||\n (!isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.parentIdMapping)) ||\n (isNullOrUndefined(parent.idMapping) && !isNullOrUndefined(parent.parentIdMapping))) {\n opt = { success: true };\n }\n return opt;\n },\n generateMessage: function () {\n return ERROR + ':' + ' MAPPING FIELDS MISSING \\n' + 'One of the following fields is missing. It is ' +\n 'required for the hierarchical relationship of records in TreeGrid:\\n' +\n '* childMapping\\n' + '* idMapping\\n' + '* parentIdMapping\\n' +\n 'Refer to the following documentation links for more details.\\n' +\n (BASE_DOC_URL + \"/api/treegrid#childmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#idmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#$parentidmapping\");\n }\n }\n};\n","/**\n * @hidden\n */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var checkboxChange = 'checkboxChange';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var expanded = 'expanded';\n/** @hidden */\nexport var expanding = 'expanding';\n/** @hidden */\nexport var collapsed = 'collapsed';\n/** @hidden */\nexport var collapsing = 'collapsing';\n/** @hidden */\nexport var remoteExpand = 'remoteExpand';\n/** @hidden */\nexport var localPagedExpandCollapse = 'localPagedExpandCollapse';\n/** @hidden */\nexport var pagingActions = 'pagingActions';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var savePreviousRowPosition = 'savePreviousRowPosition';\n/** @hidden */\nexport var crudAction = 'crudAction';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var beginAdd = 'beginAdd';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var batchSave = 'batchSave';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var virtualColumnIndex = 'virtualColumnIndex';\n/** @hidden */\nexport var virtualActionArgs = 'virtual-action-args';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var dataListener = 'data-listener';\n/** @hidden */\nexport var indexModifier = 'index-modifier';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowsAdd = 'rows-add';\n/** @hidden */\nexport var rowsRemove = 'rows-remove';\n/** @hidden */\nexport var rowdraging = 'row-draging';\n/** @hidden */\nexport var rowDropped = 'row-dropped';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 events from '../base/constant';\nimport { isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Clipboard as GridClipboard } from '@syncfusion/ej2-grids';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n *\n * @hidden\n */\nvar TreeClipboard = /** @class */ (function (_super) {\n __extends(TreeClipboard, _super);\n function TreeClipboard(parent, serviceLocator) {\n var _this = _super.call(this, parent.grid, serviceLocator) || this;\n _this.treeCopyContent = '';\n _this.copiedUniqueIdCollection = [];\n _this.treeGridParent = parent;\n _this.serviceLocator = serviceLocator;\n return _this;\n }\n TreeClipboard.prototype.setCopyData = function (withHeader) {\n var copyContent = 'copyContent';\n var getCopyData = 'getCopyData';\n var isSelect = 'isSelect';\n var uniqueID = 'uniqueID';\n var currentRecords = this.treeGridParent.getCurrentViewRecords();\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this[\"\" + copyContent] = '';\n var rows = this.treeGridParent.grid.getRows();\n if (this.treeGridParent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.treeGridParent.getSelectedRowIndexes().sort(function (a, b) {\n return a - b;\n });\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.treeCopyContent += '\\n';\n }\n if (!rows[selectedIndexes[parseInt(i.toString(), 10)]].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].querySelectorAll('.e-rowcell'));\n var uniqueid = this.treeGridParent.getSelectedRecords()[parseInt(i.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n if (this.treeGridParent.copyHierarchyMode === 'Parent' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.parentContentData(currentRecords, selectedIndexes[parseInt(i.toString(), 10)], rows, withHeader, i);\n }\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += this[\"\" + copyContent];\n this.copiedUniqueIdCollection.push(uniqueid);\n this[\"\" + copyContent] = '';\n if (this.treeGridParent.copyHierarchyMode === 'Child' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.childContentData(currentRecords, selectedIndexes[parseInt(i.toString(), 10)], rows, withHeader);\n }\n }\n }\n }\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.treeGridParent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] =\n this.treeGridParent.getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this[\"\" + getCopyData](headerTextArray, false, '\\t', withHeader);\n this.treeCopyContent = this[\"\" + copyContent] + '\\n' + this.treeCopyContent;\n }\n var args = {\n data: this.treeCopyContent,\n cancel: false\n };\n this.treeGridParent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this[\"\" + copyContent] = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this[\"\" + isSelect] = true;\n this.copiedUniqueIdCollection = [];\n this.treeCopyContent = '';\n }\n else {\n _super.prototype.setCopyData.call(this, withHeader);\n }\n }\n };\n TreeClipboard.prototype.parentContentData = function (currentRecords, selectedIndex, rows, withHeader, index) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var level = 'level';\n if (!isNullOrUndefined(currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem])) {\n var treeLevel = currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem][\"\" + level];\n for (var i = 0; i < treeLevel + 1; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem]) &&\n currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID] === currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem][\"\" + uniqueID]) {\n selectedIndex = j;\n var cells = [].slice.call(rows[parseInt(selectedIndex.toString(), 10)].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n if (index > 0) {\n this.treeCopyContent = this.treeCopyContent + this[\"\" + copyContent] + '\\n';\n }\n else {\n this.treeCopyContent = this[\"\" + copyContent] + '\\n' + this.treeCopyContent;\n }\n this.copiedUniqueIdCollection.push(uniqueid);\n this[\"\" + copyContent] = '';\n break;\n }\n }\n }\n }\n }\n };\n TreeClipboard.prototype.copy = function (withHeader) {\n _super.prototype.copy.call(this, withHeader);\n };\n TreeClipboard.prototype.paste = function (data, rowIndex, colIndex) {\n _super.prototype.paste.call(this, data, rowIndex, colIndex);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns clipboard module name\n */\n TreeClipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n TreeClipboard.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n TreeClipboard.prototype.childContentData = function (currentRecords, selectedIndex, rows, withHeader) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var childRecords = 'childRecords';\n var hasChildRecords = 'hasChildRecords';\n var uniqueID = 'uniqueID';\n if (currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + hasChildRecords]) {\n var childData = currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + childRecords];\n for (var i = 0; i < childData.length; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(childData[parseInt(i.toString(), 10)][\"\" + uniqueID]) && currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID] === childData[parseInt(i.toString(), 10)][\"\" + uniqueID]) {\n if ((!isNullOrUndefined(rows[parseInt(j.toString(), 10)])) && !rows[parseInt(j.toString(), 10)].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[parseInt(j.toString(), 10)].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += ('\\n' + this[\"\" + copyContent]);\n this[\"\" + copyContent] = '';\n this.copiedUniqueIdCollection.push(uniqueid);\n this.childContentData(currentRecords, j, rows, withHeader);\n }\n }\n break;\n }\n }\n }\n }\n };\n return TreeClipboard;\n}(GridClipboard));\nexport { TreeClipboard };\n","import { getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, ODataAdaptor, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { WebApiAdaptor, WebMethodAdaptor, CacheAdaptor } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Specifies whether remote data binding\n */\nexport function isRemoteData(parent) {\n if (parent.dataSource instanceof DataManager) {\n var adaptor = parent.dataSource.adaptor;\n return (adaptor instanceof ODataAdaptor ||\n (adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||\n (adaptor instanceof CacheAdaptor) || adaptor instanceof UrlAdaptor);\n }\n return false;\n}\n/**\n * @param {TreeGrid | IGrid} parent - Tree Grid or Grid instance\n * @returns {boolean} - Returns whether custom binding\n */\nexport function isCountRequired(parent) {\n if (parent.dataSource && 'result' in parent.dataSource) {\n return true;\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether checkbox column is enabled\n */\nexport function isCheckboxcolumn(parent) {\n for (var i = 0; i < parent.columns.length; i++) {\n if (parent.columns[parseInt(i.toString(), 10)].showCheckbox) {\n return true;\n }\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether filtering and searching done\n */\nexport function isFilterChildHierarchy(parent) {\n if ((!isNullOrUndefined(parent.grid.searchSettings.key) && parent.grid.searchSettings.key !== '' &&\n (parent.searchSettings.hierarchyMode === 'Child' || parent.searchSettings.hierarchyMode === 'None')) ||\n (parent.allowFiltering && parent.grid.filterSettings.columns.length &&\n (parent.filterSettings.hierarchyMode === 'Child' || parent.filterSettings.hierarchyMode === 'None'))) {\n return true;\n }\n return false;\n}\n/**\n * @param {Object} records - Define records for which parent records has to be found\n * @hidden\n * @returns {Object} - Returns parent records collection\n */\nexport function findParentRecords(records) {\n var datas = [];\n var recordsLength = Object.keys(records).length;\n for (var i = 0, len = recordsLength; i < len; i++) {\n var hasChild = getObject('hasChildRecords', records[parseInt(i.toString(), 10)]);\n if (hasChild) {\n datas.push(records[parseInt(i.toString(), 10)]);\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns the expand status of record\n * @param {ITreeData} record - Define the record for which expand status has be found\n * @param {ITreeData[]} parents - Parent Data collection\n * @hidden\n */\nexport function getExpandStatus(parent, record, parents) {\n var parentRecord = isNullOrUndefined(record.parentItem) ? null :\n getParentData(parent, record.parentItem.uniqueID);\n var childParent;\n if (parentRecord != null) {\n if (parent.initialRender && !isNullOrUndefined(parentRecord[parent.expandStateMapping])\n && !parentRecord[parent.expandStateMapping]) {\n parentRecord.expanded = false;\n return false;\n }\n else if (parentRecord.expanded === false) {\n return false;\n }\n else if (parentRecord.parentItem) {\n childParent = getParentData(parent, parentRecord.parentItem.uniqueID);\n if (childParent && parent.initialRender && !isNullOrUndefined(childParent[parent.expandStateMapping])\n && !childParent[parent.expandStateMapping]) {\n childParent.expanded = false;\n return false;\n }\n if (childParent && childParent.expanded === false) {\n return false;\n }\n else if (childParent) {\n return getExpandStatus(parent, childParent, parents);\n }\n return true;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n}\n/**\n * @param {ITreeData} records - Define the record for which child records has to be found\n * @returns {Object[]} - Returns child records collection\n * @hidden\n */\nexport function findChildrenRecords(records) {\n var datas = [];\n if (isNullOrUndefined(records) || (!records.hasChildRecords && !isNullOrUndefined(records.childRecords)\n && !records.childRecords.length)) {\n return [];\n }\n if (!isNullOrUndefined(records.childRecords)) {\n var childRecords = records.childRecords.filter(function (item) { return !item.isSummaryRow; });\n var keys = Object.keys(childRecords);\n for (var i = 0, len = keys.length; i < len; i++) {\n datas.push(childRecords[parseInt(i.toString(), 10)]);\n if (childRecords[parseInt(i.toString(), 10)].hasChildRecords ||\n (!isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].childRecords) &&\n childRecords[parseInt(i.toString(), 10)].childRecords.length)) {\n datas = datas.concat(findChildrenRecords(childRecords[parseInt(i.toString(), 10)]));\n }\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether local data binding\n */\nexport function isOffline(parent) {\n if (isRemoteData(parent)) {\n var dm = parent.dataSource;\n return !isNullOrUndefined(dm.ready);\n }\n return true;\n}\n/**\n * @param {Object[]} array - Defines the array to be cloned\n * @returns {Object[]} - Returns cloned array collection\n */\nexport function extendArray(array) {\n var objArr = [];\n var obj;\n var keys;\n for (var i = 0; array && i < array.length; i++) {\n keys = Object.keys(array[parseInt(i.toString(), 10)]);\n obj = {};\n for (var j = 0; j < keys.length; j++) {\n obj[keys[parseInt(j.toString(), 10)]] = array[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n objArr.push(obj);\n }\n return objArr;\n}\n/**\n * @param {ITreeData} value - Defined the dirty data to be cleaned\n * @returns {ITreeData} - Returns cleaned original data\n */\nexport function getPlainData(value) {\n delete value.hasChildRecords;\n delete value.childRecords;\n delete value.index;\n delete value.parentItem;\n delete value.level;\n delete value.taskData;\n delete value.uniqueID;\n return value;\n}\n/**\n * @param {TreeGrid} parent - TreeGrid instance\n * @param {string} value - IdMapping field name\n * @param {boolean} requireFilter - Specified whether treegrid data is filtered\n * @returns {ITreeData} - Returns IdMapping matched record\n */\nexport function getParentData(parent, value, requireFilter) {\n if (requireFilter) {\n var idFilter = 'uniqueIDFilterCollection';\n return parent[\"\" + idFilter][\"\" + value];\n }\n else {\n var id = 'uniqueIDCollection';\n return parent[\"\" + id][\"\" + value];\n }\n}\n/**\n * @param {HTMLTableRowElement} el - Row element\n * @returns {boolean} - Returns whether hidden\n */\nexport function isHidden(el) {\n var style = window.getComputedStyle(el);\n return ((style.display === 'none') || (style.visibility === 'hidden'));\n}\n","import { isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, getObject } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { getParentData, isRemoteData, isCheckboxcolumn, findChildrenRecords } from '../utils';\n/**\n * TreeGrid Selection module\n *\n * @hidden\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for Selection module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Selection(parent) {\n this.parent = parent;\n this.selectedItems = [];\n this.selectedIndexes = [];\n this.filteredList = [];\n this.searchingRecords = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Selection module name\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n Selection.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.headerCheckbox, this);\n this.parent.on('columnCheckbox', this.columnCheckbox, this);\n this.parent.on('updateGridActions', this.updateGridActions, this);\n this.parent.grid.on('colgroup-refresh', this.headerCheckbox, this);\n this.parent.on('checkboxSelection', this.checkboxSelection, this);\n };\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.headerCheckbox);\n this.parent.off('columnCheckbox', this.columnCheckbox);\n this.parent.grid.off('colgroup-refresh', this.headerCheckbox);\n this.parent.off('checkboxSelection', this.checkboxSelection);\n this.parent.off('updateGridActions', this.updateGridActions);\n };\n /**\n * To destroy the Selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n this.removeEventListener();\n };\n Selection.prototype.checkboxSelection = function (args) {\n var target = getObject('target', args);\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n var checkBox;\n if (checkWrap && checkWrap.querySelectorAll('.e-treecheckselect').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n var rowIndex = [];\n rowIndex.push(target.closest('tr').rowIndex);\n this.selectCheckboxes(rowIndex);\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'), target.closest('tr'));\n }\n else if (checkWrap && checkWrap.querySelectorAll('.e-treeselectall').length > 0 && this.parent.autoCheckHierarchy) {\n var checkBoxvalue = !checkWrap.querySelector('.e-frame').classList.contains('e-check')\n && !checkWrap.querySelector('.e-frame').classList.contains('e-stop');\n this.headerSelection(checkBoxvalue);\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n this.triggerChkChangeEvent(checkBox, checkBoxvalue, target.closest('tr'));\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState, rowElement) {\n var data = this.parent.getCurrentViewRecords()[rowElement.rowIndex];\n var args = { checked: checkState, target: checkBox, rowElement: rowElement,\n rowData: checkBox.classList.contains('e-treeselectall')\n ? this.parent.getCheckedRecords() : data };\n this.parent.trigger(events.checkboxChange, args);\n };\n Selection.prototype.getCheckboxcolumnIndex = function () {\n var mappingUid;\n var columnIndex;\n var stackedHeader = 'stackedHeader';\n var columnModel = 'columnModel';\n var columns = this.parent[\"\" + stackedHeader] ? this.parent[\"\" + columnModel] : (this.parent.columns);\n for (var col = 0; col < columns.length; col++) {\n if (columns[parseInt(col.toString(), 10)].showCheckbox) {\n mappingUid = columns[parseInt(col.toString(), 10)].uid;\n }\n }\n var headerCelllength = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv').length;\n for (var j = 0; j < headerCelllength; j++) {\n var headercell = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[parseInt(j.toString(), 10)];\n if (headercell.getAttribute('e-mappinguid') === mappingUid) {\n columnIndex = j;\n }\n }\n return columnIndex;\n };\n Selection.prototype.headerCheckbox = function () {\n this.columnIndex = this.getCheckboxcolumnIndex();\n if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length === 0) {\n var headerElement = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[this.columnIndex];\n var value = false;\n var rowChkBox = this.parent.createElement('input', { className: 'e-treeselectall', attrs: { 'type': 'checkbox' } });\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n if (!isNullOrUndefined(headerElement)) {\n headerElement.insertBefore(checkWrap, headerElement.firstChild);\n }\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n else if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length > 0) {\n var checkWrap = this.parent.getHeaderContent().querySelectorAll('.e-checkbox-wrapper')[0];\n var checkBoxvalue = checkWrap.querySelector('.e-frame').classList.contains('e-check');\n if (this.parent.autoCheckHierarchy && checkBoxvalue) {\n this.headerSelection(checkBoxvalue);\n }\n }\n };\n Selection.prototype.renderColumnCheckbox = function (args) {\n var rowChkBox = this.parent.createElement('input', { className: 'e-treecheckselect', attrs: { 'type': 'checkbox', 'aria-label': 'checkbox' } });\n var data = args.data;\n args.cell.classList.add('e-treegridcheckbox');\n args.cell.setAttribute('aria-label', 'checkbox');\n var value = (isNullOrUndefined(data.checkboxState) || data.checkboxState === 'uncheck') ? false : true;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n if (this.parent.allowTextWrap) {\n checkWrap.querySelector('.e-frame').style.width = '18px';\n }\n if (data.checkboxState === 'indeterminate') {\n var checkbox = checkWrap.querySelectorAll('.e-frame')[0];\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n checkWrap.querySelector('.e-frame').classList.add('e-stop');\n }\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n return checkWrap;\n };\n Selection.prototype.columnCheckbox = function (container) {\n var checkWrap = this.renderColumnCheckbox(container);\n var containerELe = container.cell.querySelector('.e-treecolumn-container');\n if (!isNullOrUndefined(containerELe)) {\n if (!container.cell.querySelector('.e-hierarchycheckbox')) {\n containerELe.insertBefore(checkWrap, containerELe.querySelectorAll('.e-treecell')[0]);\n }\n }\n else {\n var spanEle = this.parent.createElement('span', { className: 'e-treecheckbox' });\n var data = container.cell.innerHTML;\n container.cell.innerHTML = '';\n spanEle.innerHTML = data;\n var divEle = this.parent.createElement('div', { className: 'e-treecheckbox-container' });\n divEle.appendChild(checkWrap);\n divEle.appendChild(spanEle);\n container.cell.appendChild(divEle);\n }\n };\n Selection.prototype.selectCheckboxes = function (rowIndexes) {\n for (var i = 0; i < rowIndexes.length; i++) {\n var record = this.parent.getCurrentViewRecords()[rowIndexes[parseInt(i.toString(), 10)]];\n var flatRecord = getParentData(this.parent, record.uniqueID);\n record = flatRecord;\n var checkboxState = (record.checkboxState === 'uncheck') ? 'check' : 'uncheck';\n record.checkboxState = checkboxState;\n var keys = Object.keys(record);\n for (var j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(flatRecord, keys[parseInt(j.toString(), 10)])) {\n flatRecord[keys[parseInt(j.toString(), 10)]] = record[keys[parseInt(j.toString(), 10)]];\n }\n }\n this.traverSelection(record, checkboxState, false);\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n };\n Selection.prototype.traverSelection = function (record, checkboxState, ischildItem) {\n var length = 0;\n this.updateSelectedItems(record, checkboxState);\n if (!ischildItem && record.parentItem && this.parent.autoCheckHierarchy) {\n this.updateParentSelection(record.parentItem);\n }\n if (record.childRecords && this.parent.autoCheckHierarchy) {\n var childRecords = record.childRecords;\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords.length;\n for (var count = 0; count < length; count++) {\n if (!childRecords[parseInt(count.toString(), 10)].isSummaryRow) {\n if (childRecords[parseInt(count.toString(), 10)].hasChildRecords) {\n this.traverSelection(childRecords[parseInt(count.toString(), 10)], checkboxState, true);\n }\n else {\n this.updateSelectedItems(childRecords[parseInt(count.toString(), 10)], checkboxState);\n }\n }\n }\n }\n };\n Selection.prototype.getFilteredChildRecords = function (childRecords) {\n var _this = this;\n var filteredChildRecords = childRecords.filter(function (e) {\n return _this.parent.filterModule.filteredResult.indexOf(e) > -1;\n });\n return filteredChildRecords;\n };\n Selection.prototype.updateParentSelection = function (parentRecord) {\n var length = 0;\n var childRecords = [];\n var record = getParentData(this.parent, parentRecord.uniqueID);\n if (record && record.childRecords) {\n childRecords = record.childRecords;\n }\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords && childRecords.length;\n var indeter = 0;\n var checkChildRecords = 0;\n if (!isNullOrUndefined(record)) {\n for (var i = 0; i < childRecords.length; i++) {\n var currentRecord = getParentData(this.parent, childRecords[parseInt(i.toString(), 10)].uniqueID);\n var checkBoxRecord = currentRecord;\n if (!isNullOrUndefined(checkBoxRecord)) {\n if (checkBoxRecord.checkboxState === 'indeterminate') {\n indeter++;\n }\n else if (checkBoxRecord.checkboxState === 'check') {\n checkChildRecords++;\n }\n }\n }\n if (indeter > 0 || (checkChildRecords > 0 && checkChildRecords !== length)) {\n record.checkboxState = 'indeterminate';\n }\n else if (checkChildRecords === 0 && (!record.hasFilteredChildRecords || isNullOrUndefined(record.hasFilteredChildRecords)) && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check') {\n record.checkboxState = 'check';\n }\n else if ((checkChildRecords === 0 && indeter === 0) || (checkChildRecords === 0 && record.hasFilteredChildRecords && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check')) {\n record.checkboxState = 'uncheck';\n }\n else {\n record.checkboxState = 'check';\n }\n this.updateSelectedItems(record, record.checkboxState);\n if (record.parentItem) {\n this.updateParentSelection(record.parentItem);\n }\n }\n };\n Selection.prototype.headerSelection = function (checkAll) {\n var _this = this;\n var index = -1;\n var length = 0;\n //This property used to maintain the check state of the currentview data after clear filtering\n var multiFilterCheckState = false;\n if (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) {\n var filterResult = this.parent.filterModule.filteredResult;\n if (this.filteredList.length === 0) {\n this.filteredList = filterResult;\n }\n if (this.parent.grid.searchSettings.key.length) {\n this.searchingRecords = filterResult;\n }\n else {\n if (this.filteredList !== filterResult) {\n this.filteredList = filterResult;\n multiFilterCheckState = true;\n }\n else {\n multiFilterCheckState = false;\n }\n }\n }\n if (this.filteredList.length > 0) {\n if (!this.parent.filterSettings.columns.length && this.filteredList.length && !this.parent.grid.searchSettings.key.length) {\n this.filteredList = [];\n }\n if (this.searchingRecords.length && !isNullOrUndefined(checkAll)) {\n this.filteredList = this.searchingRecords;\n }\n }\n var data;\n if (!(isNullOrUndefined(this.parent.filterModule)) &&\n this.parent.filterModule.filteredResult.length === 0 && this.parent.getCurrentViewRecords().length === 0 &&\n this.parent.filterSettings.columns.length > 0) {\n data = this.filteredList;\n }\n else {\n data = (!isNullOrUndefined(this.parent.filterModule) &&\n (this.filteredList.length > 0)) ? this.filteredList : this.parent.flatData;\n }\n data = isRemoteData(this.parent) ? this.parent.getCurrentViewRecords() : data;\n if (!isNullOrUndefined(checkAll)) {\n for (var i = 0; i < data.length; i++) {\n if (checkAll) {\n if (data[parseInt(i.toString(), 10)].checkboxState === 'check') {\n continue;\n }\n if (multiFilterCheckState) {\n continue;\n }\n data[parseInt(i.toString(), 10)].checkboxState = 'check';\n this.updateSelectedItems(data[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)].checkboxState);\n }\n else {\n index = this.selectedItems.indexOf(data[parseInt(i.toString(), 10)]);\n if (index > -1) {\n data[parseInt(i.toString(), 10)].checkboxState = 'uncheck';\n this.updateSelectedItems(data[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)].checkboxState);\n if (this.parent.autoCheckHierarchy) {\n this.updateParentSelection(data[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n }\n if (checkAll === false && this.parent.enableVirtualization) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n data.filter(function (rec) {\n rec.checkboxState = 'uncheck';\n _this.updateSelectedItems(rec, rec.checkboxState);\n });\n }\n length = this.selectedItems.length;\n var checkbox = this.parent.getHeaderContent().querySelectorAll('.e-frame')[0];\n if (length > 0 && data.length > 0) {\n if (length !== data.length && !checkAll) {\n removeClass([checkbox], ['e-check']);\n checkbox.classList.add('e-stop');\n }\n else {\n removeClass([checkbox], ['e-stop']);\n checkbox.classList.add('e-check');\n }\n }\n else {\n removeClass([checkbox], ['e-check', 'e-stop']);\n }\n };\n Selection.prototype.updateSelectedItems = function (currentRecord, checkState) {\n var record = this.parent.grid.currentViewData.filter(function (e) {\n return e.uniqueID === currentRecord.uniqueID;\n });\n var checkedRecord;\n var recordIndex = this.parent.grid.currentViewData.indexOf(record[0]);\n var checkboxRecord = getParentData(this.parent, currentRecord.uniqueID);\n var tr = this.parent.getRows()[parseInt(recordIndex.toString(), 10)];\n var checkbox;\n if (recordIndex > -1) {\n var movableTr = void 0;\n if (this.parent.frozenRows || this.parent.getFrozenColumns()) {\n movableTr = this.parent.getDataRows()[parseInt(recordIndex.toString(), 10)];\n }\n checkbox = tr.querySelectorAll('.e-hierarchycheckbox .e-frame')[0] ? tr.querySelectorAll('.e-hierarchycheckbox .e-frame')[0]\n : movableTr.querySelectorAll('.e-hierarchycheckbox .e-frame')[0];\n if (!isNullOrUndefined(checkbox)) {\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n }\n }\n checkedRecord = checkboxRecord;\n if (isNullOrUndefined(checkedRecord)) {\n checkedRecord = currentRecord;\n }\n checkedRecord.checkboxState = checkState;\n if (checkState === 'check' && isNullOrUndefined(currentRecord.isSummaryRow)) {\n if (recordIndex !== -1 && this.selectedIndexes.indexOf(recordIndex) === -1) {\n this.selectedIndexes.push(recordIndex);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (recordIndex !== -1 &&\n (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (this.parent.enableVirtualization || this.parent.allowPaging) && ((!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length === 0)) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && isNullOrUndefined(this.parent.filterModule)) {\n this.selectedItems.push(checkedRecord);\n }\n }\n else if ((checkState === 'uncheck' || checkState === 'indeterminate') && isNullOrUndefined(currentRecord.isSummaryRow)) {\n var index = this.selectedItems.indexOf(checkedRecord);\n if (index !== -1) {\n this.selectedItems.splice(index, 1);\n }\n if (this.selectedIndexes.indexOf(recordIndex) !== -1) {\n var checkedIndex = this.selectedIndexes.indexOf(recordIndex);\n this.selectedIndexes.splice(checkedIndex, 1);\n }\n }\n var checkBoxclass = checkState === 'indeterminate' ? 'e-stop' : 'e-' + checkState;\n if (recordIndex > -1) {\n if (!isNullOrUndefined(checkbox)) {\n checkbox.classList.add(checkBoxclass);\n var chkstate = checkState === 'check' ? 'checked' : checkState === 'uncheck' ? 'unchecked' : 'mixed';\n tr.querySelector('.e-treecheckselect').setAttribute('aria-checked', checkState === 'check' ? 'true' : checkState === 'uncheck' ? 'false' : 'mixed');\n }\n }\n };\n Selection.prototype.updateGridActions = function (args) {\n var _this = this;\n var requestType = args.requestType;\n var childData;\n var childLength;\n if (isCheckboxcolumn(this.parent)) {\n if (this.parent.autoCheckHierarchy) {\n if ((requestType === 'sorting' || requestType === 'paging')) {\n var rows = this.parent.grid.getRows();\n childData = this.parent.getCurrentViewRecords();\n childLength = childData.length;\n this.selectedIndexes = [];\n for (var i = 0; i < childLength; i++) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains('e-summaryrow')) {\n this.updateSelectedItems(childData[parseInt(i.toString(), 10)], childData[parseInt(i.toString(), 10)].checkboxState);\n }\n }\n }\n else if (requestType === 'delete' || args.action === 'add') {\n var updatedData = [];\n if (requestType === 'delete') {\n updatedData = args.data;\n }\n else {\n updatedData.push(args.data);\n }\n for (var i = 0; i < updatedData.length; i++) {\n if (requestType === 'delete') {\n var index = this.parent.flatData.indexOf(updatedData[parseInt(i.toString(), 10)]);\n var checkedIndex = this.selectedIndexes.indexOf(index);\n this.selectedIndexes.splice(checkedIndex, 1);\n this.updateSelectedItems(updatedData[parseInt(i.toString(), 10)], 'uncheck');\n }\n if (!isNullOrUndefined(updatedData[parseInt(i.toString(), 10)].parentItem)) {\n this.updateParentSelection(updatedData[parseInt(i.toString(), 10)].parentItem);\n }\n }\n }\n else if (args.requestType === 'add' && this.parent.autoCheckHierarchy) {\n args.data.checkboxState = 'uncheck';\n }\n else if (requestType === 'filtering' || requestType === 'searching' || requestType === 'refresh'\n && !isRemoteData(this.parent)) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n childData = (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) ?\n this.parent.filterModule.filteredResult : this.parent.flatData;\n childData.forEach(function (record) {\n if (_this.parent.enableVirtualization) {\n if (record.hasChildRecords && record.childRecords.length > 0) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n var child = findChildrenRecords(record);\n child = _this.getFilteredChildRecords(child);\n for (var i = 0; i < child.length; i++) {\n if (child[parseInt(i.toString(), 10)].hasChildRecords) {\n _this.updateParentSelection(child[parseInt(i.toString(), 10)]);\n }\n else if (!(child[parseInt(i.toString(), 10)].hasChildRecords) &&\n !isNullOrUndefined(child[parseInt(i.toString(), 10)])) {\n _this.updateSelectedItems(child[parseInt(i.toString(), 10)], child[parseInt(i.toString(), 10)].checkboxState);\n }\n }\n }\n else {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n }\n });\n this.headerSelection();\n }\n }\n }\n };\n Selection.prototype.getCheckedrecords = function () {\n return this.selectedItems;\n };\n Selection.prototype.getCheckedRowIndexes = function () {\n return this.selectedIndexes;\n };\n return Selection;\n}());\nexport { Selection };\n","/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Search\"] = 5] = \"Search\";\n ToolbarItem[ToolbarItem[\"ExpandAll\"] = 6] = \"ExpandAll\";\n ToolbarItem[ToolbarItem[\"CollapseAll\"] = 7] = \"CollapseAll\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 8] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 9] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"Print\"] = 11] = \"Print\";\n ToolbarItem[ToolbarItem[\"RowIndent\"] = 12] = \"RowIndent\";\n ToolbarItem[ToolbarItem[\"RowOutdent\"] = 13] = \"RowOutdent\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines predefined contextmenu items.\n *\n * @hidden\n */\nexport var ContextMenuItems;\n(function (ContextMenuItems) {\n ContextMenuItems[ContextMenuItems[\"AutoFit\"] = 0] = \"AutoFit\";\n ContextMenuItems[ContextMenuItems[\"AutoFitAll\"] = 1] = \"AutoFitAll\";\n ContextMenuItems[ContextMenuItems[\"SortAscending\"] = 2] = \"SortAscending\";\n ContextMenuItems[ContextMenuItems[\"SortDescending\"] = 3] = \"SortDescending\";\n ContextMenuItems[ContextMenuItems[\"Edit\"] = 4] = \"Edit\";\n ContextMenuItems[ContextMenuItems[\"Delete\"] = 5] = \"Delete\";\n ContextMenuItems[ContextMenuItems[\"Save\"] = 6] = \"Save\";\n ContextMenuItems[ContextMenuItems[\"Cancel\"] = 7] = \"Cancel\";\n ContextMenuItems[ContextMenuItems[\"PdfExport\"] = 8] = \"PdfExport\";\n ContextMenuItems[ContextMenuItems[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ContextMenuItems[ContextMenuItems[\"CsvExport\"] = 10] = \"CsvExport\";\n ContextMenuItems[ContextMenuItems[\"FirstPage\"] = 11] = \"FirstPage\";\n ContextMenuItems[ContextMenuItems[\"PrevPage\"] = 12] = \"PrevPage\";\n ContextMenuItems[ContextMenuItems[\"LastPage\"] = 13] = \"LastPage\";\n ContextMenuItems[ContextMenuItems[\"NextPage\"] = 14] = \"NextPage\";\n ContextMenuItems[ContextMenuItems[\"AddRow\"] = 15] = \"AddRow\";\n ContextMenuItems[ContextMenuItems[\"RowIndent\"] = 16] = \"RowIndent\";\n ContextMenuItems[ContextMenuItems[\"RowOutdent\"] = 17] = \"RowOutdent\";\n})(ContextMenuItems || (ContextMenuItems = {}));\n","import * as events from '../base/constant';\nimport { Grid, getObject, Print as GridPrint } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Print module\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Print module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Print(parent) {\n this.parent = parent;\n Grid.Inject(GridPrint);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Print module name\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Print.prototype.addEventListener = function () {\n this.parent.grid.on(events.printGridInit, this.printTreeGrid, this);\n };\n Print.prototype.removeEventListener = function () {\n this.parent.grid.off(events.printGridInit, this.printTreeGrid);\n };\n Print.prototype.printTreeGrid = function (printGrid) {\n var grid = getObject('printgrid', printGrid);\n var gridElement = getObject('element', printGrid);\n grid.addEventListener(events.queryCellInfo, this.parent.grid.queryCellInfo);\n grid.addEventListener(events.rowDataBound, this.parent.grid.rowDataBound);\n grid.addEventListener(events.beforeDataBound, this.parent.grid.beforeDataBound);\n addClass([gridElement], 'e-treegrid');\n };\n Print.prototype.print = function () {\n this.parent.grid.print();\n };\n /**\n * To destroy the Print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Print;\n}());\nexport { Print };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"hierarchyMode\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the selection behavior of the TreeGrid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n","import { getObject, appendChildren } from '@syncfusion/ej2-grids';\nimport { templateCompiler, extend, CellRenderer } from '@syncfusion/ej2-grids';\nimport { addClass, createElement, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isRemoteData, isOffline, getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * TreeGrid render module\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Render(parent) {\n this.parent = parent;\n this.templateResult = null;\n this.parent.grid.on('template-result', this.columnTemplateResult, this);\n this.parent.grid.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n /**\n * Updated row elements for TreeGrid\n *\n * @param {RowDataBoundEventArgs} args - Row details before its bound to DOM\n * @returns {void}\n */\n Render.prototype.RowModifier = function (args) {\n if (!args.data) {\n return;\n }\n var data = args.data;\n var parentData = data.parentItem;\n if (!isNullOrUndefined(data.parentItem) && !isFilterChildHierarchy(this.parent) &&\n (!(this.parent.allowPaging && !(this.parent.pageSettings.pageSizeMode === 'Root')) ||\n (isRemoteData(this.parent) && !isOffline(this.parent)))) {\n var collapsed = (this.parent.initialRender && (!(isNullOrUndefined(parentData[this.parent.expandStateMapping]) ||\n parentData[this.parent.expandStateMapping]) || this.parent.enableCollapseAll)) ||\n !getExpandStatus(this.parent, args.data, this.parent.grid.getCurrentViewRecords());\n if (collapsed && !isNullOrUndefined(args.row)) {\n args.row.style.display = 'none';\n var rowsObj = this.parent.grid.getRowsObject();\n if (!this.parent.grid.isFrozenGrid() && !isNullOrUndefined(args.row.getAttribute('data-uid'))) {\n rowsObj.filter(function (e) { return e.uid === args.row.getAttribute('data-uid'); })[0].visible = false;\n }\n }\n }\n if (isRemoteData(this.parent) && !isOffline(this.parent)) {\n var proxy_1 = this.parent;\n var parentrec = this.parent.getCurrentViewRecords().filter(function (rec) {\n return getValue(proxy_1.idMapping, rec) === getValue(proxy_1.parentIdMapping, data);\n });\n if (parentrec.length > 0 && !parentrec[0].isSummaryRow && !isNullOrUndefined(args.row)) {\n var display = parentrec[0].expanded ? 'table-row' : 'none';\n args.row.setAttribute('style', 'display: ' + display + ';');\n }\n }\n //addClass([args.row], 'e-gridrowindex' + index + 'level' + (args.data).level);\n var summaryRow = getObject('isSummaryRow', args.data);\n if (summaryRow) {\n addClass([args.row], 'e-summaryrow');\n }\n if (!isNullOrUndefined(args.row)) {\n if (args.row.querySelector('.e-treegridexpand')) {\n args.row.setAttribute('aria-expanded', 'true');\n }\n else if (args.row.querySelector('.e-treegridcollapse')) {\n args.row.setAttribute('aria-expanded', 'false');\n }\n if (this.parent.enableCollapseAll && this.parent.initialRender) {\n if (!isNullOrUndefined(data.parentItem)) {\n args.row.style.display = 'none';\n }\n }\n }\n var dragStartData = 'dragStartData';\n var draggedRecord = 'draggedRecord';\n if (this.parent.rowDragAndDropModule && this.parent.grid.rowDragAndDropModule && (this.parent.grid.rowDragAndDropModule[\"\" + dragStartData] ||\n this.parent.rowDragAndDropModule[\"\" + draggedRecord]) && this.parent.getContentTable().scrollHeight <= this.parent.getContent().clientHeight) {\n var lastRowBorder = 'lastRowBorder';\n var lastVisualData = this.parent.getVisibleRecords()[this.parent.getVisibleRecords().length - 1];\n if (lastVisualData.uniqueID === args.data.uniqueID && !isNullOrUndefined(args.row) && !args.row.cells[0].classList.contains('e-lastrowcell')) {\n this.parent[\"\" + lastRowBorder](args.row, true);\n }\n }\n if (this.parent.isReact) {\n var renderReactTemplates = 'renderReactTemplates';\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n // tslint:disable-next-line:typedef\n thisRef_1.parent[\"\" + renderReactTemplates](function () {\n thisRef_1.parent.trigger(events.rowDataBound, args);\n });\n }\n else {\n this.parent.trigger(events.rowDataBound, args);\n }\n };\n /**\n * cell renderer for tree column index cell\n *\n * @param {QueryCellInfoEventArgs} args - Cell detail before its bound to DOM\n * @returns {void}\n */\n Render.prototype.cellRender = function (args) {\n if (!args.data) {\n return;\n }\n var grid = this.parent.grid;\n var data = args.data;\n var index;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n var totalIconsWidth = 0;\n var cellElement;\n var column = this.parent.getColumnByUid(args.column.uid);\n var summaryRow = data.isSummaryRow;\n var frozenColumns = this.parent.getFrozenColumns();\n if (!isNullOrUndefined(data.parentItem)) {\n index = data.parentItem.index;\n }\n else {\n index = data.index;\n }\n var columnIndex;\n var getVirtualColIndexByUid = 'getVirtualColIndexByUid';\n if (this.parent.enableColumnVirtualization && !this.parent.initialRender) {\n columnIndex = this.parent[\"\" + getVirtualColIndexByUid](args.column.uid);\n }\n else {\n columnIndex = grid.getColumnIndexByUid(args.column.uid);\n }\n if (columnIndex === this.parent.treeColumnIndex && (args.requestType === 'add' || args.requestType\n === 'rowDragAndDrop' || args.requestType === 'delete' || isNullOrUndefined(args.cell.querySelector('.e-treecell')))) {\n var container = createElement('div', { className: 'e-treecolumn-container' });\n var emptyExpandIcon = createElement('span', {\n className: 'e-icons e-none',\n styles: 'width: 10px; display: inline-block'\n });\n for (var n = 0; n < pad; n++) {\n totalIconsWidth += 10;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n var iconRequired = !isNullOrUndefined(data.hasFilteredChildRecords)\n ? data.hasFilteredChildRecords : data.hasChildRecords;\n if (iconRequired && !isNullOrUndefined(data.childRecords)) {\n if (this.parent['isFromGantt'] && !this.parent.loadChildOnDemand) {\n iconRequired = data.hasChildRecords;\n }\n else {\n iconRequired = !(data.childRecords.length === 0);\n }\n }\n if (iconRequired) {\n addClass([args.cell], 'e-treerowcell');\n args.cell.setAttribute('aria-expanded', data.expanded ? 'true' : 'false');\n var expandIcon = createElement('span', { className: 'e-icons' });\n var expand = void 0;\n if (this.parent.initialRender) {\n expand = data.expanded &&\n (isNullOrUndefined(data[this.parent.expandStateMapping]) || data[this.parent.expandStateMapping]) &&\n !this.parent.enableCollapseAll;\n }\n else {\n expand = !(!data.expanded || !getExpandStatus(this.parent, data, this.parent.grid.getCurrentViewRecords()));\n }\n addClass([expandIcon], (expand) ? 'e-treegridexpand' : 'e-treegridcollapse');\n totalIconsWidth += 18;\n container.appendChild(expandIcon);\n emptyExpandIcon.style.width = '4px';\n totalIconsWidth += 7;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n else if (pad || !pad && !data.level) {\n // icons width\n totalIconsWidth += 20;\n container.appendChild(emptyExpandIcon.cloneNode());\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n //should add below code when paging funcitonality implemented\n // if (data.hasChildRecords) {\n // addClass([expandIcon], data.expanded ? 'e-treegridexpand' : 'e-treegridcollapse');\n // }\n cellElement = createElement('span', { className: 'e-treecell' });\n if (this.parent.allowTextWrap) {\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n this.updateTreeCell(args, cellElement);\n container.appendChild(cellElement);\n args.cell.appendChild(container);\n }\n else if (this.templateResult) {\n this.templateResult = null;\n }\n var freeze = (grid.getFrozenLeftColumnsCount() > 0 || grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (!freeze) {\n if (frozenColumns > this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === frozenColumns) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns < this.parent.treeColumnIndex && frozenColumns > 0 &&\n (grid.getColumnIndexByUid(args.column.uid) === frozenColumns\n || grid.getColumnIndexByUid(args.column.uid) === frozenColumns - 1)) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns === this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex - 1) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n else {\n var freezerightColumns = grid.getFrozenRightColumns();\n var freezeLeftColumns = grid.getFrozenLeftColumns();\n var movableColumns = grid.getMovableColumns();\n if ((freezerightColumns.length > 0) && freezerightColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((freezeLeftColumns.length > 0) && freezeLeftColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((movableColumns.length > 0) && movableColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n if (!isNullOrUndefined(column) && column.showCheckbox) {\n this.parent.notify('columnCheckbox', args);\n if (this.parent.allowTextWrap) {\n var checkboxElement = args.cell.querySelectorAll('.e-frame')[0];\n var width = parseInt(checkboxElement.style.width, 16);\n totalIconsWidth += width;\n totalIconsWidth += 10;\n if (grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n cellElement = args.cell.querySelector('.e-treecell');\n }\n else {\n cellElement = args.cell.querySelector('.e-treecheckbox');\n }\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n }\n if (summaryRow) {\n addClass([args.cell], 'e-summarycell');\n var summaryData = getObject(args.column.field, args.data);\n summaryData = isNullOrUndefined(summaryData) ? null : summaryData;\n if (args.cell.querySelector('.e-treecell') != null) {\n args.cell.querySelector('.e-treecell').innerHTML = summaryData;\n }\n else {\n if (args.column.template) {\n args.cell.innerHTML = null;\n }\n else {\n args.cell.innerHTML = summaryData;\n }\n }\n }\n this.parent['args'] = args;\n var columnModel = getValue('columnModel', this.parent);\n var treeColumn = columnModel[this.parent.treeColumnIndex];\n if ((isNullOrUndefined(this.parent.rowTemplate) && !(this.parent.isReact))\n || ((this.parent.isReact) &&\n !args.column['template'])) {\n this.parent.trigger(events.queryCellInfo, args);\n }\n else if (((this.parent.isReact) &&\n treeColumn.field !== args.column.field)) {\n var renderReactTemplates = 'renderReactTemplates';\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n // tslint:disable-next-line:typedef\n thisRef_2.parent[\"\" + renderReactTemplates](function () {\n thisRef_2.parent.trigger(events.queryCellInfo, args);\n });\n }\n };\n Render.prototype.updateTreeCell = function (args, cellElement) {\n var columnModel = getValue('columnModel', this.parent);\n var treeColumn = columnModel[this.parent.treeColumnIndex];\n var templateFn = 'templateFn';\n var colindex = args.column.index;\n if (isNullOrUndefined(treeColumn.field)) {\n args.cell.setAttribute('data-colindex', colindex + '');\n }\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n args.column.template = treeColumn.template;\n args.column[\"\" + templateFn] = templateCompiler(args.column.template);\n args.cell.classList.add('e-templatecell');\n }\n var textContent = args.cell.querySelector('.e-treecell') != null ?\n args.cell.querySelector('.e-treecell').innerHTML : args.cell.innerHTML;\n if (typeof (args.column.template) === 'object' && this.templateResult) {\n appendChildren(cellElement, this.templateResult);\n this.templateResult = null;\n args.cell.innerHTML = '';\n }\n else if (args.cell.classList.contains('e-templatecell')) {\n var len = args.cell.children.length;\n var tempID = this.parent.element.id + args.column.uid;\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n var portals = 'portals';\n var renderReactTemplates = 'renderReactTemplates';\n if (this.parent.isReact && typeof (args.column.template) !== 'string') {\n args.column[\"\" + templateFn](args.data, this.parent, 'columnTemplate', tempID, null, null, cellElement);\n if (isNullOrUndefined(this.parent.grid[\"\" + portals])) {\n this.parent.grid[\"\" + portals] = this.parent[\"\" + portals];\n }\n this.parent.notify('renderReactTemplate', this.parent[\"\" + portals]);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_3 = this;\n // tslint:disable-next-line:typedef\n thisRef_3.parent[\"\" + renderReactTemplates](function () {\n thisRef_3.parent.trigger(events.queryCellInfo, args);\n });\n }\n else {\n var str = 'isStringTemplate';\n var result = args.column[\"\" + templateFn](extend({ 'index': '' }, args.data), this.parent, 'template', tempID, this.parent[\"\" + str]);\n appendChildren(cellElement, result);\n }\n delete args.column.template;\n delete args.column[\"\" + templateFn];\n args.cell.innerHTML = '';\n }\n else {\n for (var i = 0; i < len; len = args.cell.children.length) {\n cellElement.appendChild(args.cell.children[parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n cellElement.innerHTML = textContent;\n args.cell.innerHTML = '';\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Render.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.parent.grid.getRowsObject();\n var rows = _this.parent.getDataRows();\n var indent = _this.parent.grid.getIndentCount();\n var cellIndex = _this.parent.grid.getNormalizedColumnIndex(columnUid);\n if (rows.length !== 0) {\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[parseInt(j.toString(), 10)].isDataRow\n && !isNullOrUndefined(rowsObj[parseInt(j.toString(), 10)].index)) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n var cellRenderer = new CellRenderer(_this.parent.grid, _this.parent.grid.serviceLocator);\n var td = _this.parent.getCellFromIndex(rowsObj[parseInt(j.toString(), 10)].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[parseInt(j.toString(), 10)].data, { index: rowsObj[parseInt(j.toString(), 10)][\"\" + rowIdx] });\n var treecell = _this.parent.getRows()[parseInt(j.toString(), 10)]\n .cells[parseInt(cellIndex.toString(), 10)];\n _this.cellRender({ data: rowsObj[parseInt(j.toString(), 10)].data, cell: treecell, column: cell.column });\n }\n }\n }\n });\n }\n };\n Render.prototype.columnTemplateResult = function (args) {\n this.templateResult = args.template;\n };\n // eslint-disable-next-line\n Render.prototype.reactTemplateRender = function (args, callBack) {\n var renderReactTemplates = 'renderReactTemplates';\n var portals = 'portals';\n this.parent[\"\" + portals] = args;\n this.parent.notify('renderReactTemplate', this.parent[\"\" + portals]);\n this.parent[\"\" + renderReactTemplates](callBack);\n };\n Render.prototype.destroy = function () {\n this.parent.grid.off('template-result', this.columnTemplateResult);\n this.parent.grid.off('reactTemplateRender', this.reactTemplateRender);\n };\n return Render;\n}());\nexport { Render };\n","import { extend, isNullOrUndefined, setValue, getValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { getObject, getUid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, isCountRequired, getExpandStatus } from '../utils';\nimport * as events from './constant';\n/**\n * Internal dataoperations for tree grid\n *\n * @hidden\n */\nvar DataManipulation = /** @class */ (function () {\n function DataManipulation(grid) {\n this.addedRecords = 'addedRecords';\n this.parent = grid;\n this.parentItems = [];\n this.taskIds = [];\n this.hierarchyData = [];\n this.storedIndex = -1;\n this.sortedData = [];\n this.isSortAction = false;\n this.addEventListener();\n this.dataResults = {};\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n }\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.addEventListener = function () {\n this.parent.on('updateRemoteLevel', this.updateParentRemoteData, this);\n this.parent.grid.on('sorting-begin', this.beginSorting, this);\n this.parent.on('updateAction', this.updateData, this);\n this.parent.on(events.remoteExpand, this.collectExpandingRecs, this);\n this.parent.on('dataProcessor', this.dataProcessor, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.remoteExpand, this.collectExpandingRecs);\n this.parent.off('updateRemoteLevel', this.updateParentRemoteData);\n this.parent.off('updateAction', this.updateData);\n this.parent.off('dataProcessor', this.dataProcessor);\n this.parent.grid.off('sorting-begin', this.beginSorting);\n };\n /**\n * To destroy the dataModule\n *\n * @returns {void}\n * @hidden\n */\n DataManipulation.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {boolean} -Returns whether remote data binding\n */\n DataManipulation.prototype.isRemote = function () {\n if (!(this.parent.dataSource instanceof DataManager)) {\n return false;\n }\n return true;\n // let gridData: DataManager = this.parent.dataSource;\n // return gridData.dataSource.offline !== true && gridData.dataSource.url !== undefined;\n };\n /**\n * Function to manipulate datasource\n *\n * @param {Object} data - Provide tree grid datasource to convert to flat data\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.convertToFlatData = function (data) {\n var _this = this;\n this.parent.flatData = (Object.keys(data).length === 0 && !(this.parent.dataSource instanceof DataManager) ?\n this.parent.dataSource : []);\n this.parent.parentData = [];\n if ((isRemoteData(this.parent) && !isOffline(this.parent)) && data instanceof DataManager && !(data instanceof Array)) {\n var dm = this.parent.dataSource;\n if (this.parent.parentIdMapping) {\n this.parent.query = isNullOrUndefined(this.parent.query) ?\n new Query() : this.parent.query;\n if (this.parent.parentIdMapping) {\n var filterKey = this.parent.query.params.filter(function (param) { return param.key === 'IdMapping'; });\n if (this.parent.initialRender && !filterKey.length) {\n this.parent.query.where(this.parent.parentIdMapping, 'equal', null);\n this.parent.query.addParams('IdMapping', this.parent.idMapping);\n }\n }\n if (!this.parent.hasChildMapping) {\n var qry = this.parent.query.clone();\n qry.queries = [];\n qry = qry.select([this.parent.parentIdMapping]);\n qry.isCountRequired = true;\n dm.executeQuery(qry).then(function (e) {\n _this.parentItems = DataUtil.distinct(e.result, _this.parent.parentIdMapping, false);\n var req;\n if (e.result) {\n req = 0;\n }\n else {\n req = 1;\n }\n if (req === 0) {\n setValue('grid.contentModule.isLoaded', true, _this.parent);\n if (!isNullOrUndefined(_this.zerothLevelData)) {\n setValue('cancel', false, _this.zerothLevelData);\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(_this.zerothLevelData);\n _this.zerothLevelData = null;\n }\n _this.parent.grid.hideSpinner();\n }\n });\n }\n }\n }\n else if (data instanceof Array) {\n this.convertJSONData(data);\n }\n };\n DataManipulation.prototype.convertJSONData = function (data) {\n this.hierarchyData = [];\n this.taskIds = [];\n if (!this.parent.idMapping) {\n this.hierarchyData = data;\n }\n else {\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var tempData = data[parseInt(i.toString(), 10)];\n this.hierarchyData.push(extend({}, tempData));\n if (!isNullOrUndefined(tempData[this.parent.idMapping])) {\n this.taskIds.push(tempData[this.parent.idMapping]);\n }\n }\n }\n if (this.isSelfReference) {\n var selfData = [];\n var mappingData = new DataManager(this.hierarchyData).executeLocal(new Query()\n .group(this.parent.parentIdMapping));\n for (var i = 0; i < mappingData.length; i++) {\n var groupData = mappingData[parseInt(i.toString(), 10)];\n var index = this.taskIds.indexOf(groupData.key);\n if (!isNullOrUndefined(groupData.key)) {\n if (index > -1) {\n var childData = (groupData.items);\n this.hierarchyData[parseInt(index.toString(), 10)][this.parent.childMapping] = childData;\n continue;\n }\n }\n selfData.push.apply(selfData, groupData.items);\n }\n this.hierarchyData = this.selfReferenceUpdate(selfData);\n }\n if (!Object.keys(this.hierarchyData).length) {\n var isGantt = 'isGantt';\n var referenceData = !(this.parent.dataSource instanceof DataManager) && this.parent[\"\" + isGantt];\n this.parent.flatData = referenceData ? (this.parent.dataSource) : [];\n }\n else {\n this.createRecords(this.hierarchyData);\n }\n this.storedIndex = -1;\n };\n // private crudActions(): void {\n // if (this.parent.dataSource instanceof DataManager && (this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n // let oldUpdate: Function = this.parent.dataSource.adaptor.update;\n // this.parent.dataSource.adaptor.update =\n // function (dm: DataManager, keyField: string, value: Object, tableName?: string, query?: Query, original?: Object): Object {\n // value = getPlainData(value);\n // return oldUpdate.apply(this, [dm, keyField, value, tableName, query, original]);\n // }\n // }\n // }\n DataManipulation.prototype.selfReferenceUpdate = function (selfData) {\n var result = [];\n while (this.hierarchyData.length > 0 && selfData.length > 0) {\n var index = selfData.indexOf(this.hierarchyData[0]);\n if (index === -1) {\n this.hierarchyData.shift();\n }\n else {\n result.push(this.hierarchyData.shift());\n selfData.splice(index, 1);\n }\n }\n return result;\n };\n /**\n * Function to update the zeroth level parent records in remote binding\n *\n * @param {BeforeDataBoundArgs} args - contains data before its bounds to tree grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.updateParentRemoteData = function (args) {\n var actionArgs = 'actionArgs';\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && args[\"\" + actionArgs].requestType === 'virtualscroll') {\n this.parent.hideSpinner();\n }\n var records = args.result;\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && (args[\"\" + actionArgs].requestType === 'virtualscroll' || args[\"\" + actionArgs].action === 'clearFilter' || args[\"\" + actionArgs].searchString === '')) {\n this.parent.query.expands = [];\n }\n if (!this.parent.hasChildMapping && !this.parentItems.length &&\n (!this.parent.loadChildOnDemand)) {\n this.zerothLevelData = args;\n setValue('cancel', true, args);\n }\n else {\n if (!this.parent.loadChildOnDemand) {\n var _loop_1 = function (rec) {\n if (isCountRequired(this_1.parent) && records[parseInt(rec.toString(), 10)].hasChildRecords &&\n this_1.parent.initialRender) {\n records[parseInt(rec.toString(), 10)].expanded = false;\n }\n if (isRemoteData(this_1.parent) && this_1.parent.enableVirtualization) {\n var childRecords_1 = [];\n var parent_1 = this_1.parent;\n records.filter(function (e) {\n if (e[\"\" + parent_1.parentIdMapping] === records[parseInt(rec.toString(), 10)][\"\" + parent_1.idMapping]) {\n childRecords_1.push(e);\n }\n });\n if (childRecords_1.length) {\n records[parseInt(rec.toString(), 10)].expanded = true;\n }\n else if (records[parseInt(rec.toString(), 10)].hasChildRecords) {\n records[parseInt(rec.toString(), 10)].expanded = false;\n }\n }\n if (isNullOrUndefined(records[parseInt(rec.toString(), 10)].index)) {\n records[parseInt(rec.toString(), 10)].taskData = extend({}, records[parseInt(rec.toString(), 10)]);\n records[parseInt(rec.toString(), 10)].uniqueID = getUid(this_1.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + records[parseInt(rec.toString(), 10)].uniqueID, records[parseInt(rec.toString(), 10)], this_1.parent);\n records[parseInt(rec.toString(), 10)].level = 0;\n if (isRemoteData(this_1.parent) && this_1.parent.enableVirtualization && records[parseInt(rec.toString(), 10)][\"\" + this_1.parent.parentIdMapping] && records[parseInt(rec.toString(), 10)].level === 0) {\n records[parseInt(rec.toString(), 10)].level = records[parseInt(rec.toString(), 10)].level + 1;\n }\n records[parseInt(rec.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n if ((records[parseInt(rec.toString(), 10)][this_1.parent.hasChildMapping] ||\n this_1.parentItems.indexOf(records[parseInt(rec.toString(), 10)][this_1.parent.idMapping]) !== -1)) {\n records[parseInt(rec.toString(), 10)].hasChildRecords = true;\n }\n records[parseInt(rec.toString(), 10)].checkboxState = 'uncheck';\n }\n };\n var this_1 = this;\n for (var rec = 0; rec < records.length; rec++) {\n _loop_1(rec);\n }\n }\n else {\n var dataResults = 'dataResults';\n var expandRecord = 'expandRecord';\n if (!isNullOrUndefined(records) && !((this.parent.loadChildOnDemand) && isCountRequired(this.parent) && !isNullOrUndefined(this.parent[\"\" + dataResults][\"\" + expandRecord])) &&\n !(isRemoteData(this.parent) && this.parent.loadChildOnDemand && args[\"\" + actionArgs].isExpandCollapse && this.parent.enableVirtualization)) {\n this.convertToFlatData(records);\n }\n }\n }\n if (isRemoteData(this.parent) && this.parent.loadChildOnDemand && args[\"\" + actionArgs].isExpandCollapse && this.parent.enableVirtualization) {\n args.result = records;\n }\n else if (isRemoteData(this.parent) && this.parent.enableVirtualization && !this.parent.loadChildOnDemand) {\n args.result = records;\n }\n else {\n args.result = this.parent.loadChildOnDemand ? this.parent.flatData : records;\n }\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && this.parent.loadChildOnDemand\n && this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var query = 'query';\n var summaryQuery = args[\"\" + query].queries.filter(function (q) { return q.fn === 'onAggregates'; });\n args.result = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n this.parent.notify('updateResults', args);\n };\n /**\n * Function to manipulate datasource\n *\n * @param {{record: ITreeData, rows: HTMLTableRowElement[], parentRow: HTMLTableRowElement}} rowDetails - Row details for which child rows has to be fetched\n * @param {ITreeData} rowDetails.record - current expanding record\n * @param {HTMLTableRowElement[]} rowDetails.rows - Expanding Row element\n * @param {HTMLTableRowElement} rowDetails.parentRow - Curent expanding row element\n * @param {boolean} isChild - Specified whether current record is already a child record\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.collectExpandingRecs = function (rowDetails, isChild) {\n var gridRows = this.parent.getRows();\n var name = 'name';\n if (this.parent.rowTemplate) {\n var rows = this.parent.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var childRecord;\n if (rowDetails.rows.length > 0) {\n if (!isChild) {\n rowDetails.record.expanded = true;\n }\n for (var i = 0; i < rowDetails.rows.length; i++) {\n rowDetails.rows[parseInt(i.toString(), 10)].style.display = 'table-row';\n if (this.parent.loadChildOnDemand) {\n var targetEle = rowDetails.rows[parseInt(i.toString(), 10)].getElementsByClassName('e-treegridcollapse')[0];\n childRecord = this.parent.rowTemplate ?\n this.parent.grid.getCurrentViewRecords()[rowDetails.rows[parseInt(i.toString(), 10)].rowIndex] :\n this.parent.grid.getRowObjectFromUID(rowDetails.rows[parseInt(i.toString(), 10)].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(targetEle) && childRecord.expanded) {\n addClass([targetEle], 'e-treegridexpand');\n removeClass([targetEle], 'e-treegridcollapse');\n }\n var childRows = [];\n childRows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1));\n });\n if (childRows.length && childRecord.expanded) {\n this.collectExpandingRecs({ record: childRecord, rows: childRows, parentRow: rowDetails.parentRow }, true);\n }\n }\n var expandingTd = rowDetails.rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowcollapse');\n if (!isNullOrUndefined(expandingTd)) {\n this.parent.grid.detailRowModule.expand(expandingTd);\n }\n }\n }\n else {\n this.fetchRemoteChildData({ action: rowDetails[\"\" + name], record: rowDetails.record, rows: rowDetails.rows, parentRow: rowDetails.parentRow });\n }\n };\n DataManipulation.prototype.fetchRemoteChildData = function (rowDetails) {\n var _this = this;\n var args = { row: rowDetails.parentRow, data: rowDetails.record };\n var dm = this.parent.dataSource;\n var qry = this.parent.grid.getDataModule().generateQuery();\n var clonequries = qry.queries.filter(function (e) { return e.fn !== 'onPage' && e.fn !== 'onWhere'; });\n qry.queries = clonequries;\n qry.isCountRequired = true;\n if (this.parent.enableVirtualization && rowDetails.action === 'remoteExpand') {\n qry.take(this.parent.pageSettings.pageSize);\n var expandDetail = [];\n expandDetail.push('ExpandingAction', parseInt(rowDetails.record[this.parent.idMapping], 10).toString());\n qry.expand(expandDetail);\n }\n else if (this.parent.enableVirtualization && rowDetails.action === 'collapse') {\n qry.take(this.parent.grid.pageSettings.pageSize);\n var expandDetail = [];\n expandDetail.push('CollapsingAction', parseInt(rowDetails.record[this.parent.idMapping], 10).toString());\n qry.expand(expandDetail);\n }\n qry.where(this.parent.parentIdMapping, 'equal', rowDetails.record[this.parent.idMapping]);\n if (rowDetails.action === 'remoteExpand' && this.parent.grid.filterModule && this.parent.grid.filterModule['value']) {\n var filterqry = this.parent.grid.getDataModule().generateQuery().queries.filter(function (e) { return e.fn !== 'onPage' && typeof e.e.predicates !== 'undefined'; });\n qry.queries.push(filterqry[0]);\n }\n showSpinner(this.parent.element);\n dm.executeQuery(qry).then(function (e) {\n var remoteExpandedData = 'remoteExpandedData';\n var remoteCollapsedData = 'remoteCollapsedData';\n var level = 'level';\n var datas = _this.parent.grid.currentViewData.slice();\n var inx;\n var idMapping = _this.parent.idMapping;\n if (_this.parent['isGantt'] && !_this.parent.loadChildOnDemand && _this.parent.hasChildMapping) {\n for (var i = 0; i < _this.parent.grid.currentViewData.length; i++) {\n if (rowDetails.record[idMapping] === _this.parent.grid.currentViewData[i][idMapping]) {\n inx = i;\n break;\n }\n }\n }\n else {\n inx = datas.indexOf(rowDetails.record);\n }\n if (_this.parent.enableVirtualization && (rowDetails.action === 'collapse' || rowDetails.action === 'remoteExpand')) {\n datas = [];\n for (var i = 0; i < inx; i++) {\n datas.push(_this.parent.grid.currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (inx === -1) {\n _this.parent.grid.getRowsObject().forEach(function (rows) {\n if (rows.data.uniqueID === rowDetails.record.uniqueID) {\n inx = rows.index;\n }\n });\n }\n var haveChild = getObject('actual.nextLevel', e);\n var result = e.result;\n var resultChildData = [];\n if (rowDetails.action === 'remoteExpand' && _this.parent.grid.filterModule && _this.parent.grid.filterModule['value']) {\n for (var i = 0; i < datas.length; i++) {\n if (Object.prototype.hasOwnProperty.call(datas[parseInt(i.toString(), 10)], _this.parent.parentIdMapping) && datas[parseInt(i.toString(), 10)]['' + _this.parent.parentIdMapping] !== null && datas[parseInt(i.toString(), 10)].level === 0) {\n datas.splice(i, 1);\n i--;\n }\n }\n for (var i = 0; i < result.length; i++) {\n if (rowDetails.record['' + _this.parent.idMapping] !== result[parseInt(i.toString(), 10)]['' + _this.parent.idMapping] &&\n rowDetails.record['' + _this.parent.idMapping] === result[parseInt(i.toString(), 10)]['' + _this.parent.parentIdMapping]) {\n if (Object.prototype.hasOwnProperty.call(result, i)) {\n resultChildData.push(result[parseInt(i.toString(), 10)]);\n }\n }\n }\n result = resultChildData;\n }\n if (_this.parent.enableVirtualization && rowDetails.action === 'remoteExpand') {\n rowDetails.record.childRecords = [];\n for (var i = 0; i < result.length; i++) {\n if (rowDetails.record['' + _this.parent.idMapping] !== result[parseInt(i.toString(), 10)]['' + _this.parent.idMapping] &&\n rowDetails.record['' + _this.parent.idMapping] === result[parseInt(i.toString(), 10)]['' + _this.parent.parentIdMapping] && Object.prototype.hasOwnProperty.call(result, i)) {\n rowDetails.record.childRecords.push(result[parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n rowDetails.record.childRecords = result;\n }\n for (var r = 0; r < result.length; r++) {\n if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action === 'remoteExpand') {\n _this.parent[\"\" + remoteExpandedData].push(rowDetails.record);\n }\n else if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action === 'collapse') {\n for (var i = 0; i < _this.parent[\"\" + remoteExpandedData].length; i++) {\n if (rowDetails.record[\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n _this.parent[\"\" + remoteExpandedData].splice(i, 1);\n }\n }\n }\n result[parseInt(r.toString(), 10)].taskData = extend({}, result[parseInt(r.toString(), 10)]);\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping] && _this.parent.enableVirtualization && _this.parent[\"\" + remoteExpandedData].length) {\n for (var i = 0; i < _this.parent[\"\" + remoteExpandedData].length; i++) {\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping] === _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].level = _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + level] + 1;\n var parentData = _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)];\n delete parentData.childRecords;\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n }\n }\n else if (_this.parent.enableVirtualization) {\n if ((result[parseInt(r.toString(), 10)][\"\" + _this.parent.hasChildMapping] ||\n _this.parentItems.indexOf(result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) !== -1)\n && !(haveChild && !haveChild[parseInt(r.toString(), 10)])) {\n if (isNullOrUndefined(result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping])) {\n result[parseInt(r.toString(), 10)].level = 0;\n if (rowDetails.action === 'remoteExpand') {\n result[parseInt(r.toString(), 10)].childRecords = [];\n result[parseInt(r.toString(), 10)].childRecords = rowDetails.record.childRecords;\n }\n }\n else {\n result[parseInt(r.toString(), 10)].level = rowDetails.record.level;\n }\n }\n else {\n var parentData = extend({}, rowDetails.record);\n delete parentData.childRecords;\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n }\n else {\n result[parseInt(r.toString(), 10)].level = rowDetails.record.level + 1;\n var parentData = extend({}, rowDetails.record);\n delete parentData.childRecords;\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n result[parseInt(r.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n result[parseInt(r.toString(), 10)].uniqueID = getUid(_this.parent.element.id + '_data_');\n result[parseInt(r.toString(), 10)].checkboxState = 'uncheck';\n if (_this.parent.enableVirtualization && isNullOrUndefined(result[parseInt(r.toString(), 10)].level)) {\n for (var p = 0; p < _this.parent.grid.currentViewData.length; p++) {\n if (_this.parent.grid.currentViewData[parseInt(p.toString(), 10)][\"\" + _this.parent.idMapping] === result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping]) {\n result[parseInt(r.toString(), 10)].level = _this.parent.grid.currentViewData[parseInt(p.toString(), 10)]['level'] + 1;\n }\n }\n }\n setValue('uniqueIDCollection.' + result[parseInt(r.toString(), 10)].uniqueID, result[parseInt(r.toString(), 10)], _this.parent);\n // delete result[r].parentItem.childRecords;\n if ((result[parseInt(r.toString(), 10)][\"\" + _this.parent.hasChildMapping] ||\n _this.parentItems.indexOf(result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) !== -1)\n && !(haveChild && !haveChild[parseInt(r.toString(), 10)])) {\n result[parseInt(r.toString(), 10)].hasChildRecords = true;\n if (_this.parent.enableVirtualization && _this.parent.loadChildOnDemand) {\n for (var i = 0; i < _this.parent[\"\" + remoteCollapsedData].length; i++) {\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].expanded = _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)]['expanded'];\n }\n }\n if (rowDetails.action === 'collapse' && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] !== rowDetails.record[\"\" + _this.parent.idMapping] && result[parseInt(r.toString(), 10)].expanded !== false) {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n else if (rowDetails.action === 'collapse' && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].expanded = false;\n _this.parent[\"\" + remoteCollapsedData].push(rowDetails.record);\n }\n else if (rowDetails.action === 'remoteExpand') {\n for (var i = 0; i < _this.parent.grid.currentViewData.length; i++) {\n if (_this.parent.grid.currentViewData[parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping] === result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result.splice(r, 1, _this.parent.grid.currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (result[parseInt(r.toString(), 10)][_this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping]) {\n for (var i = 0; i < _this.parent[\"\" + remoteCollapsedData].length; i++) {\n if (rowDetails.record[\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n _this.parent[\"\" + remoteCollapsedData].splice(i, 1);\n }\n }\n }\n if (result[parseInt(r.toString(), 10)].expanded !== false) {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n }\n }\n else if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action !== 'collapse') {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n else if (!(_this.parent.enableVirtualization && _this.parent.loadChildOnDemand)) {\n result[parseInt(r.toString(), 10)].expanded = false;\n }\n }\n datas.splice(inx + r + 1, 0, result[parseInt(r.toString(), 10)]);\n }\n setValue('result', datas, e);\n setValue('action', 'beforecontentrender', e);\n _this.parent.trigger(events.actionComplete, e);\n hideSpinner(_this.parent.element);\n if (_this.parent.grid.aggregates.length > 0 && !_this.parent.enableVirtualization) {\n var gridQuery = getObject('query', e);\n var result_1 = 'result';\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', _this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(gridQuery)) {\n var summaryQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n e[\"\" + result_1] = _this.parent.summaryModule.calculateSummaryValue(summaryQuery, e[\"\" + result_1], true);\n }\n }\n if (_this.parent.enableVirtualization) {\n _this.parent.grid.pageSettings.totalRecordsCount = e.count;\n }\n e.count = _this.parent.grid.pageSettings.totalRecordsCount;\n var virtualArgs = {};\n if (_this.parent.enableVirtualization) {\n _this.remoteVirtualAction(virtualArgs);\n }\n var notifyArgs = { index: inx, childData: result };\n if (_this.parent.enableInfiniteScrolling) {\n _this.parent.notify('infinite-remote-expand', notifyArgs);\n }\n else {\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(e, virtualArgs);\n }\n _this.parent.trigger(events.expanded, args);\n });\n };\n DataManipulation.prototype.remoteVirtualAction = function (virtualArgs) {\n virtualArgs.requestType = 'refresh';\n setValue('isExpandCollapse', true, virtualArgs);\n var contentModule = getValue('grid.contentModule', this.parent);\n var currentInfo = getValue('currentInfo', contentModule);\n var prevInfo = getValue('prevInfo', contentModule);\n if (currentInfo.loadNext && this.parent.grid.pageSettings.currentPage === currentInfo.nextInfo.page) {\n this.parent.grid.pageSettings.currentPage = prevInfo.page;\n }\n };\n DataManipulation.prototype.beginSorting = function () {\n this.isSortAction = true;\n if (isRemoteData(this.parent) && this.parent.enableVirtualization) {\n var index = this.parent.query.queries.indexOf(this.parent.query.queries.filter(function (q) { return q.fn === 'onSortBy'; })[0]);\n if (index !== -1) {\n this.parent.query.queries.splice(index, 1);\n }\n if (this.parent.grid.sortSettings.columns.length === 0) {\n this.parent.query.sortBy(null, null);\n }\n }\n };\n DataManipulation.prototype.createRecords = function (data, parentRecords) {\n var treeGridData = [];\n var keys = Object.keys(data);\n for (var i = 0, len = keys.length; i < len; i++) {\n var currentData = extend({}, data[parseInt(i.toString(), 10)]);\n currentData.taskData = data[parseInt(i.toString(), 10)];\n var level = 0;\n this.storedIndex++;\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = this.storedIndex;\n }\n if ((!isNullOrUndefined(currentData[this.parent.childMapping]) && !isCountRequired(this.parent)) ||\n ((currentData[this.parent.hasChildMapping]) && isCountRequired(this.parent))) {\n currentData.hasChildRecords = true;\n if (this.parent.enableCollapseAll || !isNullOrUndefined(this.parent.dataStateChange)\n && isNullOrUndefined(currentData[this.parent.childMapping])) {\n currentData.expanded = false;\n }\n else {\n currentData.expanded = !isNullOrUndefined(currentData[this.parent.expandStateMapping])\n ? currentData[this.parent.expandStateMapping] : true;\n }\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = currentData.hasChildRecords ? this.storedIndex : this.storedIndex;\n }\n if (this.isSelfReference && isNullOrUndefined(currentData[this.parent.parentIdMapping])) {\n this.parent.parentData.push(currentData);\n }\n currentData.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + currentData.uniqueID, currentData, this.parent);\n if (!isNullOrUndefined(parentRecords)) {\n var parentData = extend({}, parentRecords);\n delete parentData.childRecords;\n delete parentData[this.parent.childMapping];\n if (this.isSelfReference) {\n delete parentData.taskData[this.parent.childMapping];\n }\n currentData.parentItem = parentData;\n currentData.parentUniqueID = parentData.uniqueID;\n level = parentRecords.level + 1;\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'level')) {\n currentData.level = level;\n }\n currentData.checkboxState = 'uncheck';\n var remoteCollapsedData = 'remoteCollapsedData';\n if (this.parent.enableVirtualization && this.parent.loadChildOnDemand && isRemoteData(this.parent)\n && !this.parent.initialRender) {\n if (!currentData.hasChildRecords && isNullOrUndefined(currentData[\"\" + this.parent.parentIdMapping])) {\n currentData.hasChildRecords = true;\n for (var c = 0; c < this.parent[\"\" + remoteCollapsedData].length; c++) {\n if (this.parent[\"\" + remoteCollapsedData][parseInt(c.toString(), 10)][\"\" + this.parent.idMapping] === currentData[\"\" + this.parent.idMapping]) {\n currentData.expanded = false;\n }\n }\n }\n else if (currentData.level === 0 && isNullOrUndefined(parentRecords) && !currentData.hasChildRecords) {\n currentData.level = currentData.level + 1;\n }\n if (currentData[\"\" + this.parent.hasChildMapping] && !isNullOrUndefined(currentData[\"\" + this.parent.expandStateMapping])) {\n currentData.expanded = currentData[\"\" + this.parent.expandStateMapping];\n currentData.hasChildRecords = true;\n }\n this.parent.flatData.push(currentData);\n }\n else if (isNullOrUndefined(currentData[\"\" + this.parent.parentIdMapping]) || currentData.parentItem) {\n this.parent.flatData.push(currentData);\n this.parent['infiniteScrollData'].push(currentData);\n }\n if (!this.isSelfReference && currentData.level === 0) {\n this.parent.parentData.push(currentData);\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping] && currentData[this.parent.childMapping].length)) {\n var record = this.createRecords(currentData[this.parent.childMapping], currentData);\n currentData.childRecords = record;\n }\n treeGridData.push(currentData);\n }\n return treeGridData;\n };\n /**\n * Function to perform filtering/sorting action for local data\n *\n * @param {BeforeDataBoundArgs} args - data details to be processed before binding to grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.dataProcessor = function (args) {\n var isExport = getObject('isExport', args);\n var expresults = getObject('expresults', args);\n var exportType = getObject('exportType', args);\n var isPrinting = getObject('isPrinting', args);\n var dataObj;\n var actionArgs = getObject('actionArgs', args);\n var requestType = getObject('requestType', args);\n var actionData = getObject('data', args);\n var action = getObject('action', args);\n var actionAddArgs = actionArgs;\n var primaryKeyColumnName = this.parent.getPrimaryKeyFieldNames()[0];\n var dataValue = getObject('data', actionAddArgs);\n if ((!isNullOrUndefined(actionAddArgs)) && (!isNullOrUndefined(actionAddArgs.action)) && (actionAddArgs.action === 'add')\n && (!isNullOrUndefined(actionAddArgs.data)) && isNullOrUndefined(actionAddArgs.data[\"\" + primaryKeyColumnName])) {\n actionAddArgs.data[\"\" + primaryKeyColumnName] = args.result[actionAddArgs.index][\"\" + primaryKeyColumnName];\n dataValue.taskData[\"\" + primaryKeyColumnName] = args.result[actionAddArgs.index][\"\" + primaryKeyColumnName];\n }\n if ((!isNullOrUndefined(actionArgs) && Object.keys(actionArgs).length) || requestType === 'save') {\n requestType = requestType ? requestType : actionArgs.requestType;\n actionData = actionData ? actionData : getObject('data', actionArgs);\n action = action ? action : getObject('action', actionArgs);\n if (this.parent.editSettings.mode === 'Batch') {\n this.batchChanges = this.parent.grid.editModule.getBatchChanges();\n }\n if (this.parent.isLocalData) {\n this.updateAction(actionData, action, requestType);\n }\n }\n if (isExport && !isNullOrUndefined(expresults)) {\n dataObj = expresults;\n }\n else {\n dataObj = isCountRequired(this.parent) ? getValue('result', this.parent.grid.dataSource)\n : this.parent.grid.dataSource;\n }\n var results = dataObj instanceof DataManager ? dataObj.dataSource.json : dataObj;\n var count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var qry = new Query();\n var gridQuery = getObject('query', args);\n var filterQuery;\n var searchQuery;\n if (!isNullOrUndefined(gridQuery)) {\n filterQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n searchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n }\n if ((this.parent.grid.allowFiltering && this.parent.grid.filterSettings.columns.length) ||\n (this.parent.grid.searchSettings.key.length > 0) || (!isNullOrUndefined(gridQuery) &&\n (filterQuery.length || searchQuery.length) && this.parent.isLocalData)) {\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = new Query();\n gridQuery = getValue('grid.renderModule.data', this.parent).filterQuery(gridQuery);\n gridQuery = getValue('grid.renderModule.data', this.parent).searchQuery(gridQuery);\n }\n var fltrQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n var srchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n qry.queries = fltrQuery.concat(srchQuery);\n var filteredData = new DataManager(results).executeLocal(qry);\n this.parent.notify('updateFilterRecs', { data: filteredData });\n results = this.dataResults.result;\n this.dataResults.result = null;\n if (this.parent.grid.aggregates.length > 0) {\n var query = getObject('query', args);\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(query)) {\n var summaryQuery = query.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, results, true);\n }\n }\n }\n if (this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var gridQuery_1 = getObject('query', args);\n if (isNullOrUndefined(gridQuery_1)) {\n gridQuery_1 = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n var summaryQuery = gridQuery_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n if (this.parent.grid.sortSettings.columns.length > 0 || this.isSortAction) {\n this.isSortAction = false;\n var parentData = this.parent.parentData;\n var query = getObject('query', args);\n var srtQry = new Query();\n for (var srt = this.parent.grid.sortSettings.columns.length - 1; srt >= 0; srt--) {\n var getColumnByField = 'getColumnByField';\n var col = this.parent.grid.renderModule.data[\"\" + getColumnByField](this.parent.grid.\n sortSettings.columns[parseInt(srt.toString(), 10)].field);\n var compFun = col.sortComparer && isOffline(this.parent) ?\n col.sortComparer.bind(col) :\n this.parent.grid.sortSettings.columns[parseInt(srt.toString(), 10)].direction;\n srtQry.sortBy(this.parent.grid.sortSettings.columns[parseInt(srt.toString(), 10)].field, compFun);\n }\n var modifiedData = new DataManager(parentData).executeLocal(srtQry);\n if (this.parent.allowRowDragAndDrop && !isNullOrUndefined(this.parent.rowDragAndDropModule['draggedRecord']) &&\n this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {\n var dragdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);\n modifiedData.splice(dragdIndex, 1);\n var dropdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);\n if (this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {\n modifiedData.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {\n modifiedData.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n }\n var sortArgs = { modifiedData: modifiedData, filteredData: results, srtQry: srtQry };\n this.parent.notify('createSort', sortArgs);\n results = sortArgs.modifiedData;\n this.dataResults.result = null;\n this.sortedData = results;\n this.parent.notify('updateModel', {});\n if (this.parent.grid.aggregates.length > 0 && !isNullOrUndefined(query)) {\n var isSort = false;\n var query_1 = getObject('query', args);\n var summaryQuery = query_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.sortedData, isSort);\n }\n }\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var temp = this.paging(results, count, isExport, isPrinting, exportType, args);\n results = temp.result;\n count = temp.count;\n args.result = results;\n args.count = count;\n this.parent.notify('updateResults', args);\n };\n DataManipulation.prototype.paging = function (results, count, isExport, isPrinting, exportType, args) {\n if (this.parent.allowPaging && (!isExport || exportType === 'CurrentPage')\n && (!isPrinting || this.parent.printMode === 'CurrentPage')) {\n this.parent.notify(events.pagingActions, { result: results, count: count, actionArgs: args });\n results = this.dataResults.result;\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : this.dataResults.count;\n }\n else if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && (!isExport || exportType === 'CurrentPage')\n && getValue('requestType', args) !== 'save') {\n var actArgs = this.parent.enableInfiniteScrolling ? args : getValue('actionArgs', args);\n this.parent.notify(events.pagingActions, { result: results, count: count, actionArgs: actArgs });\n results = this.dataResults.result;\n count = this.dataResults.count;\n }\n var isPdfExport = 'isPdfExport';\n var isCollapsedStatePersist = 'isCollapsedStatePersist';\n if ((isPrinting === true || (args[\"\" + isPdfExport] && (isNullOrUndefined(args[\"\" + isCollapsedStatePersist])\n || args[\"\" + isCollapsedStatePersist]))) && this.parent.printMode === 'AllPages') {\n var actualResults = [];\n for (var i = 0; i < results.length; i++) {\n var expandStatus = getExpandStatus(this.parent, results[parseInt(i.toString(), 10)], this.parent.parentData);\n if (expandStatus) {\n actualResults.push(results[parseInt(i.toString(), 10)]);\n }\n }\n results = actualResults;\n count = results.length;\n }\n var value = { result: results, count: count };\n return value;\n };\n DataManipulation.prototype.updateData = function (dataResult) {\n this.dataResults = dataResult;\n };\n DataManipulation.prototype.updateAction = function (actionData, action, requestType) {\n if ((requestType === 'delete' || requestType === 'save')) {\n this.parent.notify(events.crudAction, { value: actionData, action: action || requestType });\n }\n if (requestType === 'batchsave' && this.parent.editSettings.mode === 'Batch') {\n this.parent.notify(events.batchSave, {});\n }\n };\n return DataManipulation;\n}());\nexport { DataManipulation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the TreeGrid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n __decorate([\n Property('All')\n ], PageSettings.prototype, \"pageSizeMode\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Collection, getEnumValue, compile } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\nimport { CellType } from '@syncfusion/ej2-grids';\n/**\n * Configures the TreeGrid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.intl = new Internationalization();\n _this.templateFn = {};\n return _this;\n }\n /**\n * Custom format function\n *\n * @hidden\n * @param {string} cultureName - culture name to format\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AggregateColumn.prototype.setFormatter = function (cultureName) {\n if (this.format && (this.format.skeleton || this.format.format)) {\n this.formatFn = this.getFormatFunction(this.format);\n }\n };\n /**\n * @param {NumberFormatOptions | DateFormatOptions} format - formatting options for number and date values\n * @hidden\n * @returns {Function} - return formatter function\n */\n AggregateColumn.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n /**\n * @hidden\n * @returns {Function} - Returns formatter function\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - Specified the helper\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - updates aggregate properties without change detection\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], AggregateRow.prototype, \"showChildSummary\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Configures the edit behavior of the TreeGrid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Cell')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Property, Collection } from '@syncfusion/ej2-base';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of TreeGrid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n","import { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { extendArray, getPlainData, getParentData } from '../utils';\n/**\n * Performs CRUD update to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {string} columnName - Column field name\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function editAction(details, control, isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord) {\n var value = details.value;\n var action = details.action;\n var changedRecords = 'changedRecords';\n var i;\n var j;\n var addedRecords = 'addedRecords';\n var batchChanges;\n var key = control.grid.getPrimaryKeyFieldNames()[0];\n var treeData = control.dataSource instanceof DataManager ?\n control.dataSource.dataSource.json : control.dataSource;\n var modifiedData = [];\n var originalData = value;\n var isSkip = false;\n if (control.editSettings.mode === 'Batch') {\n batchChanges = control.grid.editModule.getBatchChanges();\n }\n if (action === 'add' || (action === 'batchsave' && (control.editSettings.mode === 'Batch'\n && batchChanges[\"\" + addedRecords].length))) {\n var addAct = addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord);\n value = addAct.value;\n isSkip = addAct.isSkip;\n }\n if (value instanceof Array) {\n modifiedData = extendArray(value);\n }\n else {\n modifiedData.push(extend({}, value));\n }\n if (!isSkip && (action !== 'add' ||\n (control.editSettings.newRowPosition !== 'Top' && control.editSettings.newRowPosition !== 'Bottom'))) {\n for (var k = 0; k < modifiedData.length; k++) {\n if (typeof (modifiedData[parseInt(k.toString(), 10)][\"\" + key]) === 'object') {\n modifiedData[parseInt(k.toString(), 10)] = modifiedData[parseInt(k.toString(), 10)][\"\" + key];\n }\n var keys = modifiedData[parseInt(k.toString(), 10)].taskData ?\n Object.keys(modifiedData[parseInt(k.toString(), 10)].taskData) :\n Object.keys(modifiedData[parseInt(k.toString(), 10)]);\n i = treeData.length;\n var _loop_1 = function () {\n if (treeData[parseInt(i.toString(), 10)][\"\" + key] === modifiedData[parseInt(k.toString(), 10)][\"\" + key]) {\n if (action === 'delete') {\n var currentData_1 = treeData[parseInt(i.toString(), 10)];\n treeData.splice(i, 1);\n if (isSelfReference) {\n if (!isNullOrUndefined(currentData_1[\"\" + control.parentIdMapping])) {\n var parentData = control.flatData.filter(function (e) {\n return e[\"\" + control.idMapping] === currentData_1[\"\" + control.parentIdMapping];\n })[0];\n var childRecords = parentData ? parentData[\"\" + control.childMapping] : [];\n for (var p = childRecords.length - 1; p >= 0; p--) {\n if (childRecords[parseInt(p.toString(), 10)][\"\" + control.idMapping] === currentData_1[\"\" + control.idMapping]) {\n if (!control.enableImmutableMode && parentData.childRecords.length === parentData['Children'].length) {\n parentData['childRecords'].splice(p, 1);\n }\n childRecords.splice(p, 1);\n if (!childRecords.length) {\n parentData.hasChildRecords = false;\n updateParentRow(key, parentData, action, control, isSelfReference);\n }\n break;\n }\n }\n }\n return \"break\";\n }\n }\n else {\n if (action === 'edit') {\n for (j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(treeData[parseInt(i.toString(), 10)], keys[parseInt(j.toString(), 10)]) && ((control.editSettings.mode !== 'Cell'\n || (!isNullOrUndefined(batchChanges) && batchChanges[\"\" + changedRecords].length === 0))\n || keys[parseInt(j.toString(), 10)] === columnName)) {\n var editedData = getParentData(control, modifiedData[parseInt(k.toString(), 10)].uniqueID);\n treeData[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]] =\n modifiedData[parseInt(k.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n if (editedData && editedData.taskData) {\n editedData.taskData[keys[parseInt(j.toString(), 10)]] = editedData[keys[parseInt(j.toString(), 10)]]\n = treeData[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n }\n else if (action === 'add' || action === 'batchsave') {\n var index = void 0;\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData.taskData[\"\" + control.parentIdMapping] = treeData[parseInt(i.toString(), 10)][\"\" + control.idMapping];\n treeData.splice(i + 1, 0, originalData.taskData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(treeData[parseInt(i.toString(), 10)], control.childMapping)) {\n treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping] = [];\n }\n treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping].push(originalData.taskData);\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n treeData.splice(i + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[i + 1], action, control, isSelfReference, originalData);\n }\n }\n else if (!addRowIndex) {\n index = 0;\n treeData.splice(index, 0, originalData.taskData);\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n treeData.splice(i, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n }\n return \"break\";\n }\n }\n else if (!isNullOrUndefined(treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping])) {\n if (removeChildRecords(treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping], modifiedData[parseInt(k.toString(), 10)], action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference);\n }\n }\n };\n while (i-- && i >= 0) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n }\n }\n}\n/**\n * Performs Add action to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {Object[]} treeData - Tree Grid data source\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord) {\n var value;\n var isSkip = false;\n var currentViewRecords = control.grid.getCurrentViewRecords();\n value = extend({}, details.value);\n value = getPlainData(value);\n switch (control.editSettings.newRowPosition) {\n case 'Top':\n treeData.unshift(value);\n isSkip = true;\n break;\n case 'Bottom':\n treeData.push(value);\n isSkip = true;\n break;\n case 'Above':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n value = extend({}, currentViewRecords[addRowIndex + 1]);\n value = getPlainData(value);\n }\n break;\n case 'Below':\n case 'Child':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var currentdata = currentViewRecords[parseInt(addRowIndex.toString(), 10)];\n if (!isNullOrUndefined(currentdata) && currentdata[\"\" + primaryKeys] === details.value[\"\" + primaryKeys] || selectedIndex !== -1) {\n value = extend({}, currentdata);\n }\n else {\n value = extend({}, details.value);\n }\n value = getPlainData(value);\n var internalProperty = 'internalProperties';\n control.editModule[\"\" + internalProperty].taskData = value;\n }\n if (selectedIndex === -1) {\n treeData.unshift(value);\n isSkip = true;\n }\n }\n return { value: value, isSkip: isSkip };\n}\n/**\n * @param {ITreeData[]} childRecords - Child Records collection\n * @param {Object} modifiedData - Modified data in crud action\n * @param {string} action - crud action type\n * @param {string} key - Primary key field name\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether Self Referential data binding\n * @param {ITreeData} originalData - Non updated data from data source, of edited data\n * @param {string} columnName - column field name\n * @returns {boolean} Returns whether child records exists\n */\nexport function removeChildRecords(childRecords, modifiedData, action, key, control, isSelfReference, originalData, columnName) {\n var isChildAll = false;\n var j = childRecords.length;\n while (j-- && j >= 0) {\n if (childRecords[parseInt(j.toString(), 10)][\"\" + key] === modifiedData[\"\" + key] ||\n (isSelfReference && childRecords[parseInt(j.toString(), 10)][control.parentIdMapping] === modifiedData[control.idMapping])) {\n if (action === 'edit') {\n var keys = Object.keys(modifiedData);\n var editedData = getParentData(control, modifiedData.uniqueID);\n for (var i = 0; i < keys.length; i++) {\n if (Object.prototype.hasOwnProperty.call(childRecords[parseInt(j.toString(), 10)], keys[parseInt(i.toString(), 10)]) &&\n (control.editSettings.mode !== 'Cell' || keys[parseInt(i.toString(), 10)] === columnName)) {\n editedData[keys[parseInt(i.toString(), 10)]] =\n editedData.taskData[keys[parseInt(i.toString(), 10)]] =\n childRecords[parseInt(j.toString(), 10)][keys[parseInt(i.toString(), 10)]] =\n modifiedData[keys[parseInt(i.toString(), 10)]];\n if (control.grid.editSettings.mode === 'Normal' && control.editSettings.mode === 'Cell') {\n var editModule = 'editModule';\n control.grid.editModule[\"\" + editModule].editRowIndex = modifiedData.index;\n control.grid.editModule[\"\" + editModule].updateCurrentViewData(modifiedData);\n }\n }\n }\n break;\n }\n else if (action === 'add' || action === 'batchsave') {\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData[\"\" + control.parentIdMapping] = childRecords[parseInt(j.toString(), 10)][control.idMapping];\n childRecords.splice(j + 1, 0, originalData);\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(childRecords[parseInt(j.toString(), 10)], control.childMapping)) {\n childRecords[parseInt(j.toString(), 10)][control.childMapping] = [];\n }\n childRecords[parseInt(j.toString(), 10)][control.childMapping].push(originalData.taskData);\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n childRecords.splice(j, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n childRecords.splice(j + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n }\n else {\n childRecords.splice(j, 1);\n if (!childRecords.length) {\n isChildAll = true;\n }\n }\n }\n else if (!isNullOrUndefined(childRecords[parseInt(j.toString(), 10)][control.childMapping])) {\n if (removeChildRecords(childRecords[parseInt(j.toString(), 10)][control.childMapping], modifiedData, action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference);\n }\n }\n }\n return isChildAll;\n}\n/**\n * @param {string} key - Primary key field name\n * @param {ITreeData} record - Parent Record which has to be updated\n * @param {string} action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether self referential data binding\n * @param {ITreeData} child - Specifies child record\n * @returns {void}\n */\nexport function updateParentRow(key, record, action, control, isSelfReference, child) {\n if ((control.editSettings.newRowPosition === 'Above' || control.editSettings.newRowPosition === 'Below')\n && ((action === 'add' || action === 'batchsave')) && !isNullOrUndefined(child.parentItem)) {\n var parentData = getParentData(control, child.parentItem.uniqueID);\n parentData.childRecords.push(child);\n }\n else {\n var currentRecords = control.grid.getCurrentViewRecords();\n var index_1;\n currentRecords.map(function (e, i) { if (e[\"\" + key] === record[\"\" + key]) {\n index_1 = i;\n return;\n } });\n if (control.enableVirtualization && isNullOrUndefined(index_1)) {\n var updatedParent = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n record = updatedParent;\n }\n if (!isNullOrUndefined(index_1)) {\n record = currentRecords[parseInt(index_1.toString(), 10)];\n }\n if (control.enableVirtualization && isNullOrUndefined(record) && !isNullOrUndefined(child)) {\n record = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n }\n if (!isSelfReference && !isNullOrUndefined(record.childRecords) && record.childRecords.length) {\n record.hasChildRecords = true;\n }\n else {\n record.hasChildRecords = false;\n }\n if (action === 'add' || action === 'batchsave') {\n record.expanded = true;\n record.hasChildRecords = true;\n if (control.sortSettings.columns.length && isNullOrUndefined(child)) {\n child = currentRecords.filter(function (e) {\n if (e.parentUniqueID === record.uniqueID) {\n return e;\n }\n else {\n return null;\n }\n });\n }\n var childRecords = child ? child instanceof Array ? child[0] : child : currentRecords[index_1 + 1];\n if (control.editSettings.newRowPosition !== 'Below') {\n if (!Object.prototype.hasOwnProperty.call(record, 'childRecords')) {\n record.childRecords = [];\n }\n else {\n if (!isNullOrUndefined(child) && record[\"\" + key] !== child[\"\" + key]) {\n record.childRecords.push(child);\n }\n }\n if (record.childRecords.indexOf(childRecords) === -1 && record[\"\" + key] !== child[\"\" + key]) {\n record.childRecords.unshift(childRecords);\n }\n if (isSelfReference) {\n if (!Object.prototype.hasOwnProperty.call(record, control.childMapping)) {\n record[control.childMapping] = [];\n }\n if (record[\"\" + control.childMapping].indexOf(childRecords) === -1 && record[\"\" + key] !== child[\"\" + key]) {\n record[control.childMapping].unshift(childRecords);\n }\n }\n }\n }\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var data = control.grid.dataSource instanceof DataManager ?\n control.grid.dataSource.dataSource.json : control.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n if (data[parseInt(i.toString(), 10)][\"\" + primaryKeys] === record[\"\" + primaryKeys]) {\n data[parseInt(i.toString(), 10)] = record;\n break;\n }\n }\n control.grid.setRowData(key, record);\n var row = control.getRowByIndex(index_1);\n if (control.editSettings.mode === 'Batch') {\n if (action === 'add') {\n row = control.getRows()[control.grid.getCurrentViewRecords().indexOf(record)];\n }\n else {\n row = control.getRows()[control.grid.getRowIndexByPrimaryKey(record[\"\" + key])];\n }\n }\n var movableRow = void 0;\n if (control.frozenRows || control.getFrozenColumns()) {\n movableRow = control.getRowByIndex(index_1);\n }\n if (!control.enableVirtualization && !isNullOrUndefined(row) || !isNullOrUndefined(movableRow)) {\n var index_2 = control.treeColumnIndex;\n if (control.allowRowDragAndDrop && control.enableImmutableMode) {\n index_2 = index_2 + 1;\n }\n control.renderModule.cellRender({\n data: record, cell: row.cells[parseInt(index_2.toString(), 10)] ? row.cells[parseInt(index_2.toString(), 10)]\n : movableRow.cells[index_2 - control.getFrozenColumns()],\n column: control.grid.getColumns()[control.treeColumnIndex],\n requestType: action\n });\n if (control.enableImmutableMode && control['action'] === 'indenting' || control['action'] === 'outdenting') {\n control.renderModule.RowModifier({\n data: record, row: row\n });\n }\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the infinite scroll behavior of Tree Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, addClass, createElement, EventHandler, isNullOrUndefined, extend, merge, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { removeClass, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { Event, Property, NotifyPropertyChanges, setValue, KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { getNumberFormat } from '@syncfusion/ej2-grids';\nimport { RowDropSettings, getUid } from '@syncfusion/ej2-grids';\nimport { LoadingIndicator } from '../models/loading-indicator';\nimport { FilterSettings } from '../models/filter-settings';\nimport { TextWrapSettings } from '../models/textwrap-settings';\nimport { Logger as TreeLogger } from '../actions/logger';\nimport { TreeClipboard } from '../actions/clipboard';\nimport { Selection as TreeGridSelection } from '../actions/selection';\nimport { Print } from '../actions/print';\nimport * as events from '../base/constant';\nimport { SearchSettings } from '../models/search-settings';\nimport { SelectionSettings } from '../models/selection-settings';\nimport { getActualProperties, getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, RemoteSaveAdaptor, Query, JsonAdaptor, Deferred, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { isRemoteData, isOffline, extendArray, isCountRequired, findChildrenRecords } from '../utils';\nimport { Grid, Logger } from '@syncfusion/ej2-grids';\nimport { Render } from '../renderer/render';\nimport { DataManipulation } from './data';\nimport { iterateArrayOrObject } from '@syncfusion/ej2-grids';\nimport { ToolbarItem, ContextMenuItems } from '../enum';\nimport { PageSettings } from '../models/page-settings';\nimport { AggregateRow } from '../models/summary';\nimport { EditSettings } from '../models/edit-settings';\nimport { SortSettings } from '../models/sort-settings';\nimport { isHidden, getExpandStatus } from '../utils';\nimport { editAction } from '../actions/crud-actions';\nimport { InfiniteScrollSettings } from '../models/infinite-scroll-settings';\nimport * as literals from '../base/constant';\n/**\n * Represents the TreeGrid component.\n * ```html\n *
    \n * \n * ```\n */\nvar TreeGrid = /** @class */ (function (_super) {\n __extends(TreeGrid, _super);\n function TreeGrid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.dataResults = {};\n _this.uniqueIDCollection = {};\n _this.uniqueIDFilterCollection = {};\n _this.changedRecords = 'changedRecords';\n _this.deletedRecords = 'deletedRecords';\n _this.addedRecords = 'addedRecords';\n _this.indentOutdentAction = 'indentOutdentAction';\n _this.modifiedRecords = [];\n _this.stackedHeader = false;\n _this.objectEqualityChecker = function (old, current) {\n if (old) {\n var keys = Object.keys(old);\n var isEqual = true;\n var excludeKeys = ['Children', 'childRecords', 'taskData', 'uniqueID', 'parentItem', 'parentUniqueID', 'index'];\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== current[keys[parseInt(i.toString(), 10)]] &&\n excludeKeys.indexOf(keys[parseInt(i.toString(), 10)]) === -1) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date &&\n current[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]].getTime() !==\n current[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n }\n else {\n return false;\n }\n };\n TreeGrid_1.Inject(TreeGridSelection, TreeLogger);\n setValue('mergePersistData', _this.mergePersistTreeGridData, _this);\n var logger = 'Logger';\n if (!isNullOrUndefined(_this.injectedModules[\"\" + logger])) {\n Grid.Inject(Logger);\n }\n _this.grid = new Grid();\n return _this;\n }\n TreeGrid_1 = TreeGrid;\n /**\n * Export TreeGrid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties | TreeGridExcelExportProperties} excelExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.excelExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, false);\n };\n /**\n * Export TreeGrid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the TreeGrid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.csvExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, true);\n };\n /**\n * Export TreeGrid data to PDF document.\n *\n * @param {PdfExportProperties | TreeGridPdfExportProperties} pdfExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Object} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} - Returns promise object of export action\n */\n TreeGrid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule.Map(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n };\n /**\n * Sends a post request to export tree grid to excel file in server side.\n *\n * @param {string} url - Pass URL for server side excel export action.\n * @returns {void}\n */\n TreeGrid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportTreeGrid(url);\n };\n /**\n * Sends a post request to export tree grid to pdf file in server side.\n *\n * @param {string} url - Pass URL for server-side pdf export action.\n * @returns {void}\n */\n TreeGrid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportTreeGrid(url);\n };\n /**\n * Sends a Post request to export Tree Grid to CSV file in server side.\n *\n * @param {string} url - Pass URL for server-side csv export action.\n * @returns {void}\n */\n TreeGrid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportTreeGrid(url);\n };\n /**\n * Exports the TreeGrid data to the specified URL using a POST request.\n * @param {string} url - Defines exporting url\n * @returns {void}\n */\n TreeGrid.prototype.exportTreeGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treegrid = this;\n var query = treegrid.grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var treeGridModel = JSON.parse(this.addOnPersist(['allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'columns', 'locale', 'searchSettings', 'idMapping', 'parentIdMapping', 'childMapping', 'treeColumnIndex']));\n var include = ['field', 'headerText', 'type', 'format', 'visible',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n treeGridModel.filterSettings.columns = queries.where;\n treeGridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n treeGridModel.sortSettings.columns = queries.sorted;\n treeGridModel.columns = this.setHeaderText(treeGridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var treeGridInput = this.createElement('input', { id: 'treeGridInput', attrs: { name: 'treeGridModel' } });\n treeGridInput.value = JSON.stringify(treeGridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(treeGridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * Sets the header text and other properties for an array of columns based on specified criteria.\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n */\n TreeGrid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n if (this.stackedHeader && isNullOrUndefined(column)) {\n column = !isNullOrUndefined(columns[parseInt(i.toString(), 10)].field) ?\n this.getColumnByField(columns[parseInt(i.toString(), 10)].field) : columns[parseInt(i.toString(), 10)];\n }\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(column.format), column.type, false, this.currencyCode);\n if (!this.isExcel && (column.type === 'datetime' || column.type === 'date')) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)].format.toString().replace('AM/PM', 'tt');\n }\n columns[parseInt(i.toString(), 10)].type = column.type;\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n /**\n * Retrieves the appropriate format string from the given format options.\n *\n * @param {string | NumberFormatOptions | DateFormatOptions} format - The format options to retrieve the format string from.\n * @returns {string} The format string extracted from the provided format options.\n */\n TreeGrid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns TreeGrid module name\n */\n TreeGrid.prototype.getModuleName = function () {\n return 'treegrid';\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.preRender = function () {\n this.TreeGridLocale();\n this.initProperties();\n this.defaultLocale = {\n Above: 'Above',\n Below: 'Below',\n Child: 'Child',\n AddRow: 'Add Row',\n ExpandAll: 'Expand All',\n CollapseAll: 'Collapse All',\n RowIndent: 'Indent',\n RowOutdent: 'Outdent'\n };\n this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n if (this.isSelfReference && isNullOrUndefined(this.childMapping)) {\n this.childMapping = 'Children';\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n TreeGrid.prototype.sortByColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Searches TreeGrid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n TreeGrid.prototype.search = function (searchString) {\n this.grid.search(searchString);\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n *\n */\n TreeGrid.prototype.autoFitColumns = function (fieldNames) {\n this.resizeModule.autoFitColumns(fieldNames);\n this.updateColumnModel();\n };\n /**\n * Changes the TreeGrid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n TreeGrid.prototype.reorderColumns = function (fromFName, toFName) {\n this.grid.reorderColumns(fromFName, toFName);\n };\n TreeGrid.prototype.TreeGridLocale = function () {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var locale = L10n.locale;\n var localeObject = {};\n setValue(this.locale, {}, localeObject);\n var gridLocale;\n gridLocale = {};\n gridLocale = getObject(this.locale, locale);\n var treeGridLocale;\n treeGridLocale = {};\n treeGridLocale = getObject(this.getModuleName(), gridLocale);\n setValue('grid', treeGridLocale, getObject(this.locale, localeObject));\n L10n.load(localeObject);\n };\n /**\n * By default, prints all the pages of the TreeGrid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n TreeGrid.prototype.print = function () {\n this.printModule.print();\n };\n TreeGrid.prototype.treeGridkeyActionHandler = function (e) {\n if (this.allowKeyboard) {\n var target = void 0;\n var parentTarget = void 0;\n var column = void 0;\n var row = void 0;\n var summaryElement = void 0;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'ctrlShiftUpArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n if (!isNullOrUndefined(column)) {\n row = column.closest('tr');\n if (!isNullOrUndefined(row) && !(isNullOrUndefined(row.getElementsByClassName('e-treegridexpand')[0]))) {\n this.expandCollapseRequest(row.querySelector('.e-treegridexpand'));\n }\n }\n break;\n case 'ctrlShiftDownArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n if (!isNullOrUndefined(column)) {\n row = column.closest('tr');\n if (!isNullOrUndefined(row) && !(isNullOrUndefined(row.getElementsByClassName('e-treegridcollapse')[0]))) {\n this.expandCollapseRequest(row.querySelector('.e-treegridcollapse'));\n }\n }\n break;\n case 'downArrow':\n if (!this.enableVirtualization) {\n target = e.target;\n parentTarget = target.parentElement;\n var cellIndex = parentTarget.cellIndex;\n if (this.grid.getColumnByIndex(cellIndex).editType === 'dropdownedit' && isNullOrUndefined(this.grid.getColumnByIndex(cellIndex).edit['obj'])) {\n parentTarget = target;\n }\n summaryElement = this.findnextRowElement(parentTarget);\n if (summaryElement !== null) {\n var cellIndex_1 = e.target.cellIndex;\n var row_1 = summaryElement.children[parseInt(cellIndex_1.toString(), 10)];\n addClass([row_1], 'e-focused');\n addClass([row_1], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n break;\n case 'upArrow':\n if (!this.enableVirtualization) {\n target = e.target;\n parentTarget = target.parentElement;\n var cellIndex = parentTarget.cellIndex;\n if (this.grid.getColumnByIndex(cellIndex).editType === 'dropdownedit' && isNullOrUndefined(this.grid.getColumnByIndex(cellIndex).edit['obj'])) {\n parentTarget = target;\n }\n summaryElement = this.findPreviousRowElement(parentTarget);\n if (summaryElement !== null) {\n var cIndex = e.target.cellIndex;\n var rows = summaryElement.children[parseInt(cIndex.toString(), 10)];\n addClass([rows], 'e-focused');\n addClass([rows], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n }\n }\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findnextRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.nextElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findnextRowElement(rowElement);\n }\n return rowElement;\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findPreviousRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.previousElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findPreviousRowElement(rowElement);\n }\n return rowElement;\n };\n TreeGrid.prototype.initProperties = function () {\n this.defaultLocale = {};\n this.flatData = [];\n this.infiniteScrollData = [];\n this.remoteCollapsedData = [];\n this.remoteExpandedData = [];\n this.parentData = [];\n this.columnModel = [];\n this.isExpandAll = false;\n this.isCollapseAll = false;\n this.keyConfigs = {\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlShiftUpArrow: 'ctrl+shift+uparrow',\n ctrlShiftDownArrow: 'ctrl+shift+downarrow',\n downArrow: 'downArrow',\n upArrow: 'upArrow'\n };\n this.isLocalData = (!(this.dataSource instanceof DataManager) || this.dataSource.dataSource.offline\n || (!isNullOrUndefined(this.dataSource.ready)) || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.isSelfReference = !isNullOrUndefined(this.parentIdMapping);\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.wireEvents = function () {\n EventHandler.add(this.grid.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.treeGridkeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - Returns TreeGrid modules collection\n * @hidden\n */\n TreeGrid.prototype.requiredModules = function () {\n var modules = [];\n var splitFrozenCount = 'splitFrozenCount';\n this.grid[\"\" + splitFrozenCount](this.getColumns());\n if (this.isDestroyed) {\n return modules;\n }\n modules.push({\n member: 'filter', args: [this, this.filterSettings],\n name: 'Filter'\n });\n if (!isNullOrUndefined(this.toolbar)) {\n modules.push({\n member: 'toolbar',\n args: [this],\n name: 'Toolbar'\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this],\n name: 'ContextMenu'\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings],\n name: 'Page'\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this],\n name: 'Reorder'\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this],\n name: 'Sort'\n });\n }\n if (this.aggregates.length > 0) {\n modules.push({\n member: 'summary', args: [this],\n name: 'Aggregate'\n });\n }\n if (this.allowResizing) {\n modules.push({\n member: 'resize', args: [this],\n name: 'Resize'\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport', args: [this],\n name: 'ExcelExport'\n });\n }\n var freezePresent = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'freeze';\n });\n if ((this.frozenColumns || this.frozenRows || this.getFrozenColumns() ||\n this.grid.getFrozenLeftColumnsCount() || this.grid.getFrozenRightColumnsCount()) && freezePresent.length > 0) {\n modules.push({\n member: 'freeze', args: [this],\n name: 'Freeze'\n });\n }\n if (this.detailTemplate) {\n modules.push({\n member: 'detailRow', args: [this],\n name: 'DetailRow'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport', args: [this],\n name: 'PdfExport'\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu', args: [this],\n name: 'ColumnMenu'\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'ColumnChooser', args: [this],\n name: 'ColumnChooser'\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n TreeGrid.prototype.extendRequiredModules = function (modules) {\n var IsRowDDInjected = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'rowDragAndDrop';\n });\n if (this.allowRowDragAndDrop || IsRowDDInjected.length) {\n if ((!isNullOrUndefined(this.toolbar) && (this.toolbar['includes']('Indent') ||\n this.toolbar['includes']('Outdent')))) {\n this.isIndentEnabled = true;\n }\n modules.push({\n member: 'rowDragAndDrop',\n args: [this],\n name: 'RowDD'\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this],\n name: 'Edit'\n });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this],\n name: 'CommandColumn'\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this],\n name: 'Selection'\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualScroll',\n args: [this],\n name: 'VirtualScroll'\n });\n }\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this],\n name: 'InfiniteScroll'\n });\n }\n modules.push({\n member: 'logger',\n args: [this.grid]\n });\n };\n TreeGrid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.unwireEvents = function () {\n if (this.grid && this.grid.element) {\n EventHandler.remove(this.grid.element, 'click', this.mouseClickHandler);\n }\n if (this.element) {\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n this.keyboardModule = null;\n }\n if (this.allowKeyboard) {\n this.element.removeAttribute('tabIndex');\n }\n }\n };\n /**\n * Logs tree grid error message on console\n *\n * @param {string | string[]} types - Tree Grid error type\n * @param {object} args - Error details\n * @hidden\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.log = function (types, args) {\n if (this.loggerModule) {\n this.loggerModule.treeLog(types, args, this);\n }\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.render = function () {\n var _this = this;\n if (this.isReact) {\n this.grid.isReact = true;\n this.grid.portals = [];\n }\n if (this.isVue) {\n this.grid.isVue = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid.vueInstance = this.vueInstance;\n }\n createSpinner({ target: this.element }, this.createElement);\n this.log(['mapping_fields_missing']);\n this.renderModule = new Render(this);\n this.dataModule = new DataManipulation(this);\n this.printModule = new Print(this);\n this.trigger(events.load);\n this.autoGenerateColumns();\n this.initialRender = true;\n if (!isNullOrUndefined(this.dataSource)) {\n this.convertTreeData(this.dataSource);\n }\n this.loadGrid();\n if (this.element.classList.contains('e-treegrid') && this.rowDropSettings.targetID) {\n this.grid.rowDropSettings.targetID += '_gridcontrol';\n }\n this.addListener();\n var gridContainer = createElement('div', { id: this.element.id + '_gridcontrol' });\n addClass([this.element], 'e-treegrid');\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.element.appendChild(gridContainer);\n var gridRequiredModules = this.grid.requiredModules;\n this.grid.requiredModules = function () {\n var modules = [];\n modules = gridRequiredModules.apply(this);\n for (var i = 0; i < modules.length; i++) {\n if (modules[parseInt(i.toString(), 10)].member === 'virtualscroll') {\n modules[parseInt(i.toString(), 10)].member = 'treeVirtualScroll';\n }\n }\n return modules;\n };\n var root = 'root';\n this.grid[\"\" + root] = this[\"\" + root] ? this[\"\" + root] : this;\n this.grid.appendTo(gridContainer);\n var gridContent = this.element.getElementsByClassName('e-gridcontent')[0].childNodes[0];\n gridContent.setAttribute('tabindex', '0');\n var contentTable = this.element.getElementsByClassName('e-content')[0].querySelector('.e-table');\n if (!isNullOrUndefined(contentTable)) {\n contentTable.setAttribute('role', 'treegrid');\n }\n if (this.isIndentEnabled) {\n this.refreshToolbarItems();\n }\n this.wireEvents();\n this.renderComplete();\n var destroyTemplate = 'destroyTemplate';\n var destroyTemplateFn = this.grid[\"\" + destroyTemplate];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid[\"\" + destroyTemplate] = function (args, index) {\n destroyTemplateFn.apply(_this.grid);\n var portals = 'portals';\n if (!(_this.isReact && isNullOrUndefined(_this[\"\" + portals]))) {\n _this.clearTemplate(args, index);\n }\n };\n };\n TreeGrid.prototype.refreshToolbarItems = function () {\n var toolbarElement = this.toolbarModule.getToolbar();\n var indentID = this.element.id + '_gridcontrol_indent';\n var outdentID = this.element.id + '_gridcontrol_outdent';\n var indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n var outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n };\n TreeGrid.prototype.afterGridRender = function () {\n if (!isNullOrUndefined(this.grid.clipboardModule)) {\n this.grid.clipboardModule.destroy();\n }\n this.clipboardModule = this.grid.clipboardModule = new TreeClipboard(this, this.grid.serviceLocator);\n };\n TreeGrid.prototype.convertTreeData = function (data) {\n var _this = this;\n if (isCountRequired(this)) {\n data = getValue('result', data);\n }\n if (data instanceof Array && data.length > 0 && Object.prototype.hasOwnProperty.call(data[0], 'level')) {\n this.flatData = data;\n this.flatData.filter(function (e) {\n setValue('uniqueIDCollection.' + e.uniqueID, e, _this);\n if (e.level === 0) {\n _this.parentData.push(e);\n }\n });\n }\n else {\n if (isCountRequired(this)) {\n var griddata = getValue('result', this.dataSource);\n this.dataModule.convertToFlatData(griddata);\n }\n else {\n this.dataModule.convertToFlatData(data);\n }\n }\n };\n // private getGridData(): Object {\n // if (isRemoteData(this)) {\n // return this.dataSource;\n // } else if (this.isLocalData && this.dataSource instanceof DataManager) {\n // this.dataSource.dataSource.json = this.flatData;\n // return this.dataSource;\n // }\n // return this.flatData;\n // }\n TreeGrid.prototype.bindGridProperties = function () {\n this.bindedDataSource();\n this.grid.enableRtl = this.enableRtl;\n this.grid.allowKeyboard = this.allowKeyboard;\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.allowExcelExport = this.allowExcelExport;\n this.grid.allowPdfExport = this.allowPdfExport;\n this.grid.query = this.query;\n this.grid.columnQueryMode = this.columnQueryMode;\n this.grid.allowPaging = this.allowPaging;\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.pagerTemplate = this.pagerTemplate;\n this.grid.showColumnMenu = this.showColumnMenu;\n this.grid.allowSorting = this.allowSorting;\n this.grid.allowFiltering = this.allowFiltering;\n this.grid.enableVirtualization = this.enableVirtualization;\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n this.grid.infiniteScrollSettings = this.infiniteScrollSettings;\n this.grid.enableVirtualMaskRow = this.enableVirtualMaskRow;\n this.grid.loadingIndicator = this.loadingIndicator;\n this.grid.width = this.width;\n this.grid.height = this.height;\n this.grid.enableAltRow = this.enableAltRow;\n this.grid.allowReordering = this.allowReordering;\n this.grid.allowTextWrap = this.allowTextWrap;\n this.grid.allowResizing = this.allowResizing;\n this.grid.enableHover = this.enableHover;\n this.grid.enableAutoFill = this.enableAutoFill;\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n this.grid.enableImmutableMode = this.enableImmutableMode;\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n this.grid.rowDropSettings = getActualProperties(this.rowDropSettings);\n this.grid.rowHeight = this.rowHeight;\n this.grid.gridLines = this.gridLines;\n this.grid.allowSelection = this.allowSelection;\n this.grid.toolbar = getActualProperties(this.getGridToolbar());\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.toolbarTemplate = this.toolbarTemplate;\n this.grid.showColumnChooser = this.showColumnChooser;\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.aggregates = getActualProperties(this.aggregates);\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n this.grid.printMode = getActualProperties(this.printMode);\n this.grid.locale = getActualProperties(this.locale);\n this.grid.selectedRowIndex = this.selectedRowIndex;\n this.grid.contextMenuItems = getActualProperties(this.getContextMenu());\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n this.grid.editSettings = this.getGridEditSettings();\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n this.grid.frozenRows = this.frozenRows;\n this.grid.frozenColumns = this.frozenColumns;\n this.grid.clipMode = getActualProperties(this.clipMode);\n var templateInstance = 'templateDotnetInstance';\n this.grid[\"\" + templateInstance] = this[\"\" + templateInstance];\n var isJsComponent = 'isJsComponent';\n this.grid[\"\" + isJsComponent] = true;\n var enableHtmlSanitizer = 'enableHtmlSanitizer';\n this.grid[\"\" + enableHtmlSanitizer] = this.enableHtmlSanitizer;\n };\n TreeGrid.prototype.triggerEvents = function (args) {\n this.trigger(getObject('name', args), args);\n };\n TreeGrid.prototype.IsExpandCollapseClicked = function (args) {\n if (!isNullOrUndefined(args.target) && (args.target.classList.contains('e-treegridexpand')\n || args.target.classList.contains('e-treegridcollapse') || args.target.classList.contains('e-summarycell'))\n && !this.selectionSettings.checkboxOnly) {\n if ((!isNullOrUndefined(args.data) && args.data['hasChildRecords']) || (args.rowIndex !== -1 && isNullOrUndefined(args.data))) {\n args.cancel = true;\n return;\n }\n }\n };\n TreeGrid.prototype.bindGridEvents = function () {\n var _this = this;\n this.grid.rowSelecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowSelecting, args);\n };\n this.grid.rowDeselecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowDeselecting, args);\n };\n this.grid.rowSelected = function (args) {\n if (_this.enableVirtualization && args.isHeaderCheckboxClicked &&\n _this.grid.currentViewData.length !== _this.grid.selectionModule.selectedRowIndexes.length) {\n var updateRowSelection = 'updateRowSelection';\n for (var i = 0; i < _this.getRows().length; i++) {\n if (_this.getRows()[parseInt(i.toString(), 10)].getElementsByClassName('e-frame e-icons e-uncheck').length) {\n _this.grid.selectionModule[\"\" + updateRowSelection](_this.getRows()[parseInt(i.toString(), 10)], _this.getCurrentViewRecords()[parseInt(i.toString(), 10)].index);\n }\n }\n }\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n _this.notify(events.rowSelected, args);\n _this.trigger(events.rowSelected, args);\n };\n this.grid.rowDeselected = function (args) {\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n if (!isNullOrUndefined(args.data)) {\n _this.notify(events.rowDeselected, args);\n }\n _this.trigger(events.rowDeselected, args);\n };\n this.grid.resizeStop = function (args) {\n _this.updateColumnModel();\n _this.trigger(events.resizeStop, args);\n };\n this.grid.excelQueryCellInfo = function (args) {\n _this.notify('excelCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.pdfQueryCellInfo = function (args) {\n _this.notify('pdfCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.checkBoxChange = function (args) {\n _this.trigger(events.checkboxChange, args);\n };\n this.grid.pdfExportComplete = this.triggerEvents.bind(this);\n this.grid.excelExportComplete = this.triggerEvents.bind(this);\n this.grid.excelHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.pdfHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.dataSourceChanged = this.triggerEvents.bind(this);\n this.grid.recordDoubleClick = this.triggerEvents.bind(this);\n this.grid.cellDeselected = this.triggerEvents.bind(this);\n this.grid.cellDeselecting = this.triggerEvents.bind(this);\n this.grid.columnMenuOpen = this.triggerEvents.bind(this);\n this.grid.columnMenuClick = this.triggerEvents.bind(this);\n this.grid.cellSelected = this.triggerEvents.bind(this);\n this.grid.headerCellInfo = this.triggerEvents.bind(this);\n this.grid.resizeStart = this.triggerEvents.bind(this);\n this.grid.resizing = this.triggerEvents.bind(this);\n this.grid.columnDrag = this.triggerEvents.bind(this);\n this.grid.columnDragStart = this.triggerEvents.bind(this);\n this.grid.columnDrop = this.triggerEvents.bind(this);\n this.grid.beforePrint = this.triggerEvents.bind(this);\n this.grid.beforeCopy = this.triggerEvents.bind(this);\n this.grid.beforePaste = function (args) {\n var rows = _this.getRows();\n var rowIndex = 'rowIndex';\n while (rows[args[\"\" + rowIndex]].classList.contains('e-summaryrow')) {\n args[\"\" + rowIndex]++;\n }\n _this.trigger(events.beforePaste, args);\n };\n this.grid.load = function () {\n _this.grid.on('initial-end', _this.afterGridRender, _this);\n if (!isNullOrUndefined(_this.loggerModule)) {\n var loggerModule = 'loggerModule';\n _this.loggerModule = _this.grid[\"\" + loggerModule] = new TreeLogger(_this.grid);\n }\n };\n this.grid.printComplete = this.triggerEvents.bind(this);\n this.grid.actionFailure = this.triggerEvents.bind(this);\n this.extendedGridDataBoundEvent();\n this.extendedGridEvents();\n this.extendedGridActionEvents();\n this.extendedGridEditEvents();\n this.bindGridDragEvents();\n this.bindCallBackEvents();\n };\n TreeGrid.prototype.lastRowBorder = function (visiblerow, isAddBorder) {\n for (var j = 0; j < visiblerow.cells.length; j++) {\n if (isAddBorder) {\n addClass([visiblerow.cells[parseInt(j.toString(), 10)]], 'e-lastrowcell');\n }\n else {\n removeClass([visiblerow.cells[parseInt(j.toString(), 10)]], 'e-lastrowcell');\n }\n }\n };\n TreeGrid.prototype.isPixelHeight = function () {\n if (this.height !== 'auto' && this.height.toString().indexOf('%') === -1) {\n return true;\n }\n else {\n return false;\n }\n };\n TreeGrid.prototype.extendedGridDataBoundEvent = function () {\n var _this = this;\n this.grid.dataBound = function (args) {\n _this.updateRowTemplate();\n _this.updateColumnModel();\n _this.updateAltRow(_this.getRows());\n _this.notify('dataBoundArg', args);\n if (isRemoteData(_this) && !isOffline(_this) && !_this.hasChildMapping) {\n var req = void 0;\n if (_this.dataResults.result) {\n req = 0;\n }\n else {\n req = 1;\n }\n setValue('grid.contentModule.isLoaded', !(req > 0), _this);\n }\n if (_this.isPixelHeight() && _this.initialRender) {\n var rows = _this.getContentTable().rows;\n var totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i > 0; i--) {\n if (!isHidden(totalRows[parseInt(i.toString(), 10)])) {\n if (totalRows[parseInt(i.toString(), 10)].nextElementSibling) {\n _this.lastRowBorder(totalRows[parseInt(i.toString(), 10)], true);\n }\n break;\n }\n }\n }\n var action = 'action';\n if (_this.enableVirtualization && _this.selectionSettings.persistSelection && (_this.dataResults[\"\" + action] === 'expand' || _this.dataResults[\"\" + action] === 'collapse')) {\n var refreshPersistSelection = 'refreshPersistSelection';\n _this.grid.selectionModule[\"\" + refreshPersistSelection]();\n if (_this.grid.selectionSettings.type === 'Single') {\n var updateRowSelection = 'updateRowSelection';\n var index = _this.getCurrentViewRecords().indexOf(_this.grid.selectionModule['data']);\n _this.grid.selectionModule[\"\" + updateRowSelection](_this.getRows()[parseInt(index.toString(), 10)], index);\n }\n }\n _this.trigger(events.dataBound, args);\n _this.initialRender = false;\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.beforeDataBound = function (args) {\n var dataSource = 'dataSource';\n var requestType = getObject('action', args);\n if (((isRemoteData(treeGrid) && !isOffline(treeGrid)) || isCountRequired(this)) && requestType !== 'edit') {\n treeGrid.notify('updateRemoteLevel', args);\n args = (treeGrid.dataResults);\n }\n else if (treeGrid.flatData.length === 0 && isOffline(treeGrid) && treeGrid.dataSource instanceof DataManager) {\n var dm = treeGrid.dataSource;\n treeGrid.dataModule.convertToFlatData(dm.dataSource.json);\n args.result = treeGrid.grid.dataSource[\"\" + dataSource].json = treeGrid.flatData;\n }\n if (!isRemoteData(treeGrid) && !isCountRequired(this) && !isNullOrUndefined(treeGrid.dataSource)) {\n if (this.isPrinting) {\n setValue('isPrinting', true, args);\n }\n treeGrid.notify('dataProcessor', args);\n //args = treeGrid.dataModule.dataProcessor(args);\n }\n extend(args, treeGrid.dataResults);\n if (treeGrid.enableImmutableMode) {\n args.result = args.result.slice();\n }\n if (treeGrid.initialRender) {\n this.contentModule.objectEqualityChecker = treeGrid.objectEqualityChecker;\n }\n // treeGrid.notify(events.beforeDataBound, args);\n if (!this.isPrinting) {\n var callBackPromise_1 = new Deferred();\n treeGrid.trigger(events.beforeDataBound, args, function (beforeDataBoundArgs) {\n callBackPromise_1.resolve(beforeDataBoundArgs);\n });\n return callBackPromise_1;\n }\n };\n this.grid.log = function (type, args) {\n if (_this.loggerModule) {\n _this.loggerModule.log(type, args);\n }\n };\n };\n TreeGrid.prototype.bindCallBackEvents = function () {\n var _this = this;\n this.grid.toolbarClick = function (args) {\n if ((args.item.id === _this.grid.element.id + '_excelexport' && _this.allowExcelExport === false) ||\n (args.item.id === _this.grid.element.id + '_pdfexport' && _this.allowPdfExport === false) ||\n (args.item.id === _this.grid.element.id + '_csvexport' && _this.allowExcelExport === false)) {\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.toolbarClick, args, function (toolbarargs) {\n if (!toolbarargs.cancel) {\n _this.notify(events.toolbarClick, args);\n }\n callBackPromise.resolve(toolbarargs);\n });\n return callBackPromise;\n };\n this.grid.cellSelecting = function (args) {\n var actualTarget = 'actualTarget';\n var target = _this.grid.selectionModule[\"\" + actualTarget];\n if (!isNullOrUndefined(target) && (target.classList.contains('e-treegridexpand') || target.classList.contains('e-treegridcollapse'))) {\n args.cancel = true;\n }\n var callBackPromise = new Deferred();\n _this.trigger(getObject('name', args), args, function (cellselectingArgs) {\n callBackPromise.resolve(cellselectingArgs);\n });\n return callBackPromise;\n };\n this.grid.beginEdit = function (args) {\n if (!isNullOrUndefined(args.row) && args.row.classList.contains('e-summaryrow')) {\n args.cancel = true;\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.beginEdit, args, function (begineditArgs) {\n callBackPromise.resolve(begineditArgs);\n });\n return callBackPromise;\n };\n };\n TreeGrid.prototype.extendedGridEditEvents = function () {\n var _this = this;\n this.grid.dataStateChange = function (args) {\n if (_this.isExpandRefresh) {\n _this.isExpandRefresh = false;\n _this.grid.dataSource = { result: _this.flatData, count: getValue('count', _this.grid.dataSource) };\n }\n else {\n if (args.action.requestType !== 'infiniteScroll') {\n _this.infiniteScrollData = [];\n }\n _this.trigger(events.dataStateChange, args);\n }\n };\n this.grid.cellSave = function (args) {\n if (_this.grid.isContextMenuOpen()) {\n var contextitems = _this.grid.contextMenuModule.contextMenu.element.getElementsByClassName('e-selected')[0];\n if ((isNullOrUndefined(contextitems) || contextitems.id !== _this.element.id + '_gridcontrol_cmenu_Save')) {\n args.cancel = true;\n }\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.cellSave, args, function (cellsaveArgs) {\n if (!cellsaveArgs.cancel) {\n _this.notify(events.cellSave, cellsaveArgs);\n }\n callBackPromise.resolve(cellsaveArgs);\n });\n return callBackPromise;\n };\n this.grid.cellSaved = function (args) {\n _this.trigger(events.cellSaved, args);\n _this.notify(events.cellSaved, args);\n };\n this.grid.cellEdit = function (args) {\n var prom = 'promise';\n var promise = new Deferred();\n args[\"\" + prom] = promise;\n _this.notify(events.cellEdit, args);\n return promise;\n };\n this.grid.batchAdd = function (args) {\n _this.trigger(events.batchAdd, args);\n _this.notify(events.batchAdd, args);\n };\n this.grid.beforeBatchSave = function (args) {\n _this.trigger(events.beforeBatchSave, args);\n _this.notify(events.beforeBatchSave, args);\n };\n this.grid.beforeBatchAdd = function (args) {\n _this.trigger(events.beforeBatchAdd, args);\n _this.notify(events.beforeBatchAdd, args);\n };\n this.grid.batchDelete = function (args) {\n _this.trigger(events.batchDelete, args);\n _this.notify(events.batchDelete, args);\n };\n this.grid.beforeBatchDelete = function (args) {\n _this.trigger(events.beforeBatchDelete, args);\n _this.notify(events.beforeBatchDelete, args);\n };\n this.grid.batchCancel = function (args) {\n if (_this.editSettings.mode !== 'Cell') {\n _this.trigger(events.batchCancel, args);\n }\n _this.notify(events.batchCancel, args);\n };\n };\n TreeGrid.prototype.updateRowTemplate = function () {\n var _this = this;\n if (this.rowTemplate) {\n if (this.isReact && this.getContentTable().rows.length === 0) {\n setTimeout(function () {\n _this.treeColumnRowTemplate();\n if (_this.enableCollapseAll) {\n var currentData = _this.getCurrentViewRecords();\n var rows = _this.getContentTable().rows;\n for (var i = 0; i < rows.length; i++) {\n var args = { data: currentData[parseInt(i.toString(), 10)],\n row: rows[parseInt(i.toString(), 10)] };\n _this.renderModule.RowModifier(args);\n }\n }\n }, 0);\n }\n else {\n this.treeColumnRowTemplate();\n }\n }\n };\n TreeGrid.prototype.bindedDataSource = function () {\n var dataSource = 'dataSource';\n var isDataAvailable = 'isDataAvailable';\n var adaptor = 'adaptor';\n var ready = 'ready';\n if (this.dataSource && isCountRequired(this)) {\n var data = this.flatData;\n var datacount = getValue('count', this.dataSource);\n this.grid.dataSource = { result: data, count: datacount };\n }\n else {\n this.grid.dataSource = !(this.dataSource instanceof DataManager) ?\n this.flatData : new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\n }\n if (this.dataSource instanceof DataManager && (this.dataSource.dataSource.offline || this.dataSource.ready)) {\n this.grid.dataSource[\"\" + dataSource].json = extendArray(this.dataSource[\"\" + dataSource].json);\n this.grid.dataSource[\"\" + ready] = this.dataSource.ready;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n if (!isNullOrUndefined(this.grid.dataSource[\"\" + ready])) {\n this.grid.dataSource[\"\" + ready].then(function (e) {\n var dm = proxy_1.grid.dataSource;\n dm[\"\" + dataSource].offline = true;\n dm[\"\" + isDataAvailable] = true;\n dm[\"\" + dataSource].json = e.result;\n dm[\"\" + adaptor] = new JsonAdaptor();\n });\n }\n }\n };\n TreeGrid.prototype.extendedGridActionEvents = function () {\n var _this = this;\n this.grid.actionBegin = function (args) {\n if (args.requestType === 'sorting' && args.target && args.target.parentElement &&\n args.target.parentElement.classList.contains('e-hierarchycheckbox')) {\n args.cancel = true;\n }\n var requestType = getObject('requestType', args);\n if (requestType === 'reorder') {\n _this.notify('getColumnIndex', {});\n }\n if (isRemoteData(_this) && _this.enableVirtualization) {\n if (args.requestType === 'virtualscroll') {\n _this.query.expand('VirtualScrollingAction');\n _this.showSpinner();\n }\n else if (args.requestType === 'searching' && args.searchString === '') {\n _this.query.expand('ClearSearchingAction');\n }\n else if (args.action === 'clearFilter') {\n _this.query.expand('ClearFilteringAction');\n }\n }\n _this.notify('actionBegin', { editAction: args });\n if (!isRemoteData(_this) && !isNullOrUndefined(_this.filterModule) && !isCountRequired(_this)\n && (_this.grid.filterSettings.columns.length === 0 && _this.grid.searchSettings.key.length === 0)) {\n _this.notify('clearFilters', { flatData: _this.grid.dataSource });\n _this.grid.setProperties({ dataSource: _this.dataResults.result }, true);\n if (isNullOrUndefined(_this.grid['changedProperties'].dataSource)) {\n _this.grid.renderModule.data.dataManager = _this.grid.dataSource instanceof DataManager ?\n _this.grid.dataSource :\n (isNullOrUndefined(_this.grid.dataSource) ? new DataManager() : new DataManager(_this.grid.dataSource));\n _this.grid.renderModule.data.isQueryInvokedFromData = true;\n _this.grid.query = _this.grid.query instanceof Query ? _this.grid.query : new Query();\n }\n }\n if (_this.action !== 'indenting' && _this.action !== 'outdenting') {\n var callBackPromise_2 = new Deferred();\n _this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n _this.notify(events.beginEdit, actionArgs);\n }\n callBackPromise_2.resolve(actionArgs);\n });\n return callBackPromise_2;\n }\n };\n this.grid.actionComplete = function (args) {\n _this.notify('actioncomplete', args);\n _this.updateColumnModel();\n _this.updateTreeGridModel();\n if (args.requestType === 'reorder') {\n _this.notify('setColumnIndex', {});\n }\n _this.notify('actionComplete', { editAction: args });\n if (args.requestType === 'add' && (_this.editSettings.newRowPosition !== 'Top' && _this.editSettings.newRowPosition !== 'Bottom')) {\n _this.notify(events.beginAdd, args);\n }\n if (args.requestType === 'batchsave') {\n _this.notify(events.batchSave, args);\n }\n _this.notify('updateGridActions', args);\n if (args.requestType === 'save' && _this.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n _this.grid.refresh();\n }\n if (args.action === 'filter') {\n if (_this.filterModule['currentFilterObject'] !== '' && _this.enableVirtualization && !_this.initialRender && !(isRemoteData(_this) && _this.enableVirtualization)) {\n _this.expandAll();\n }\n }\n if (args.requestType === 'searching') {\n if (_this.searchSettings.key !== '' && _this.enableVirtualization && !_this.initialRender && !(isRemoteData(_this) && _this.enableVirtualization)) {\n _this.expandAll();\n }\n }\n if (args.action === 'clearFilter' && _this.enableCollapseAll) {\n _this.collapseAll();\n }\n if (_this.action === 'indenting' || _this.action === 'outdenting') {\n _this.action = _this.action === 'indenting' ? 'indented' : 'outdented';\n var selectedItem_1 = [_this.selectedRecords];\n var actionArgs = {\n data: selectedItem_1,\n dropIndex: _this.dropIndex,\n dropPosition: _this.dropPosition,\n modifiedRecords: _this.modifiedRecords,\n requestType: _this.action,\n row: _this.selectedRows\n };\n _this.trigger(events.actionComplete, actionArgs);\n var currentPageItem = _this.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === selectedItem_1[0].uniqueID;\n });\n if (!currentPageItem.length) {\n _this.refreshToolbarItems();\n }\n _this.action = '';\n _this.selectedRecords = _this.selectedRows = _this.modifiedRecords = [];\n }\n else {\n if (_this.grid.isFrozenGrid() && _this.enableVirtualization && args['tableName'] === 'movable') {\n var movableContent = _this.grid.element.querySelector('.' + literals.movableContent);\n var frozenContent = _this.grid.element.querySelector('.' + literals.frozenContent);\n movableContent.style.height = frozenContent.style.height = 'auto';\n }\n _this.trigger(events.actionComplete, args);\n }\n };\n };\n TreeGrid.prototype.extendedGridEvents = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.recordDoubleClick = function (args) {\n _this.trigger(events.recordDoubleClick, args);\n _this.notify(events.recordDoubleClick, args);\n };\n this.grid.detailDataBound = function (args) {\n _this.notify('detaildataBound', args);\n _this.trigger(events.detailDataBound, args);\n };\n this.grid.rowDataBound = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.RowModifier(args);\n };\n this.grid.queryCellInfo = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.cellRender(args);\n };\n this.grid.contextMenuClick = function (args) {\n _this.notify(events.contextMenuClick, args);\n _this.trigger(events.contextMenuClick, args);\n };\n this.grid.contextMenuOpen = function (args) {\n _this.notify(events.contextMenuOpen, args);\n _this.trigger(events.contextMenuOpen, args);\n };\n this.grid.queryCellInfo = function (args) {\n _this.renderModule.cellRender(args);\n };\n };\n TreeGrid.prototype.bindGridDragEvents = function () {\n var _this = this;\n this.grid.rowDragStartHelper = function (args) {\n _this.trigger(events.rowDragStartHelper, args);\n };\n this.grid.rowDragStart = function (args) {\n _this.trigger(events.rowDragStart, args);\n };\n this.grid.rowDrag = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowdraging, args);\n _this.trigger(events.rowDrag, args);\n };\n this.grid.rowDrop = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowDropped, args);\n args.cancel = true;\n };\n };\n /**\n * Renders TreeGrid component\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.loadGrid = function () {\n this.bindGridProperties();\n this.bindGridEvents();\n setValue('registeredTemplate', this.registeredTemplate, this.grid);\n var ref = 'viewContainerRef';\n setValue('viewContainerRef', this[\"\" + ref], this.grid);\n };\n /**\n * AutoGenerate TreeGrid columns from first record\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.autoGenerateColumns = function () {\n if (!this.columns.length && (!this.dataModule.isRemote() && Object.keys(this.dataSource).length)) {\n this.columns = [];\n // if (this.dataSource instanceof DataManager) {\n // record = (this.dataSource).dataSource.json[0];\n // } else {\n var record = this.dataSource[0];\n // }\n var keys = Object.keys(record);\n for (var i = 0; i < keys.length; i++) {\n if ([this.childMapping, this.parentIdMapping].indexOf(keys[parseInt(i.toString(), 10)]) === -1) {\n this.columns.push(keys[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n TreeGrid.prototype.getGridEditSettings = function () {\n var edit = {};\n var guid = 'guid';\n edit.allowAdding = this.editSettings.allowAdding;\n edit.allowEditing = this.editSettings.allowEditing;\n edit.allowDeleting = this.editSettings.allowDeleting;\n edit.newRowPosition = this.editSettings.newRowPosition === 'Bottom' ? 'Bottom' : 'Top';\n edit.allowEditOnDblClick = this.editSettings.allowEditOnDblClick;\n edit.showConfirmDialog = this.editSettings.showConfirmDialog;\n edit.template = this.editSettings.template;\n edit.showDeleteConfirmDialog = this.editSettings.showDeleteConfirmDialog;\n edit.allowNextRowEdit = this.editSettings.allowNextRowEdit;\n edit[\"\" + guid] = this.editSettings[\"\" + guid];\n edit.dialog = this.editSettings.dialog;\n switch (this.editSettings.mode) {\n case 'Dialog':\n edit.mode = this.editSettings.mode;\n break;\n case 'Batch':\n edit.mode = this.editSettings.mode;\n break;\n case 'Row':\n edit.mode = 'Normal';\n break;\n case 'Cell':\n edit.mode = 'Normal';\n edit.showConfirmDialog = false;\n break;\n }\n return edit;\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - returns context menu items\n */\n TreeGrid.prototype.getContextMenu = function () {\n if (this.contextMenuItems) {\n var items = [];\n for (var i = 0; i < this.contextMenuItems.length; i++) {\n switch (this.contextMenuItems[parseInt(i.toString(), 10)]) {\n case 'AddRow':\n case ContextMenuItems.AddRow:\n items.push({ text: this.l10n.getConstant('AddRow'),\n target: '.e-content', id: this.element.id + '_gridcontrol_cmenu_AddRow',\n items: [{ text: this.l10n.getConstant('Above'), id: 'Above' }, { text: this.l10n.getConstant('Below'), id: 'Below' }, { text: this.l10n.getConstant('Child'), id: 'Child' }] });\n break;\n case 'Indent':\n case ContextMenuItems.RowIndent:\n items.push({ text: this.l10n.getConstant('RowIndent'),\n target: '.e-content', iconCss: 'e-indent e-icons', id: this.element.id + '_gridcontrol_cmenu_Indent' });\n break;\n case 'Outdent':\n case ContextMenuItems.RowOutdent:\n items.push({ text: this.l10n.getConstant('RowOutdent'),\n target: '.e-content', iconCss: 'e-outdent e-icons', id: this.element.id + '_gridcontrol_cmenu_Outdent' });\n break;\n default:\n items.push(this.contextMenuItems[parseInt(i.toString(), 10)]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - Returns toolbar items\n */\n TreeGrid.prototype.getGridToolbar = function () {\n if (this.toolbar) {\n this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n var items = [];\n var tooltipText = void 0;\n for (var i = 0; i < this.toolbar.length; i++) {\n switch (this.toolbar[parseInt(i.toString(), 10)]) {\n case 'Search':\n case ToolbarItem.Search:\n items.push('Search');\n break;\n case 'Print':\n case ToolbarItem.Print:\n items.push('Print');\n break;\n case 'ExpandAll':\n case ToolbarItem.ExpandAll:\n tooltipText = this.l10n.getConstant('ExpandAll');\n items.push({ text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-expand', id: this.element.id + '_gridcontrol_expandall' });\n break;\n case 'CollapseAll':\n case ToolbarItem.CollapseAll:\n tooltipText = this.l10n.getConstant('CollapseAll');\n items.push({ text: tooltipText,\n tooltipText: tooltipText, prefixIcon: 'e-collapse', id: this.element.id + '_gridcontrol_collapseall'\n });\n break;\n case 'Indent':\n case ToolbarItem.RowIndent:\n tooltipText = this.l10n.getConstant('RowIndent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-indent', id: this.element.id + '_gridcontrol_indent'\n });\n break;\n case 'Outdent':\n case ToolbarItem.RowOutdent:\n tooltipText = this.l10n.getConstant('RowOutdent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-outdent', id: this.element.id + '_gridcontrol_outdent'\n });\n break;\n default:\n items.push(this.toolbar[parseInt(i.toString(), 10)]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n TreeGrid.prototype.getGridColumns = function (columns, isEmptyColumnModel, index) {\n if (isEmptyColumnModel === void 0) { isEmptyColumnModel = true; }\n if (index === void 0) { index = 0; }\n var column = columns;\n var stackedColumn = 'columns';\n if (isEmptyColumnModel) {\n this.columnModel = [];\n }\n var treeGridColumn;\n var gridColumn;\n if (this.columnModel.length === 0) {\n index = index === 0 ? -1 : index;\n }\n var gridColumnCollection = [];\n for (var i = 0; i < column.length; i++) {\n index = index + 1;\n var treeColumn = this.grid.getColumnByUid(column[parseInt(i.toString(), 10)].uid);\n gridColumn = treeColumn ? treeColumn : {};\n treeGridColumn = {};\n if (typeof this.columns[parseInt(i.toString(), 10)] === 'string') {\n gridColumn.field = treeGridColumn.field = this.columns[parseInt(i.toString(), 10)];\n }\n else {\n for (var _i = 0, _a = Object.keys(column[parseInt(i.toString(), 10)]); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (index === this.treeColumnIndex && prop === 'template') {\n treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n else if (prop === 'columns' && !isNullOrUndefined(column[parseInt(i.toString(), 10)][\"\" + prop])) {\n gridColumn[\"\" + prop] = this.getGridColumns(column[parseInt(i.toString(), 10)][\"\" + prop], false, this.columnModel.length - 1);\n treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n else if (this.initialRender && !isNullOrUndefined(treeColumn) && this.enablePersistence && prop === 'edit') {\n gridColumn[\"\" + prop] = treeGridColumn[\"\" + prop] = treeColumn[\"\" + prop];\n }\n else if (!(treeColumn) || prop !== 'sortComparer') {\n gridColumn[\"\" + prop] = treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n }\n }\n if (!treeGridColumn[\"\" + stackedColumn]) {\n this.columnModel.push(new Column(treeGridColumn));\n }\n gridColumnCollection.push(gridColumn);\n if (!isNullOrUndefined(this.columnModel[this.treeColumnIndex]) && this.enableRtl) {\n if (gridColumn.field === this.columnModel[this.treeColumnIndex].field) {\n if (isNullOrUndefined(this.treeColumnTextAlign)) {\n this.treeColumnTextAlign = this.columnModel[this.treeColumnIndex].textAlign;\n this.treeColumnField = this.columnModel[this.treeColumnIndex].field;\n }\n gridColumn.textAlign = 'Right';\n }\n }\n }\n return gridColumnCollection;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeGridModel} newProp - properties details which has to be modified\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.onPropertyChanged = function (newProp) {\n var properties = Object.keys(newProp);\n var requireRefresh = false;\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'treeColumnIndex':\n this.grid.refreshColumns();\n break;\n case 'allowPaging':\n this.grid.allowPaging = this.allowPaging;\n break;\n case 'pageSettings':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n requireRefresh = true;\n break;\n case 'enableVirtualization':\n this.grid.enableVirtualization = this.enableVirtualization;\n break;\n case 'enableColumnVirtualization':\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n break;\n case 'toolbar':\n this.grid.toolbar = this.getGridToolbar();\n break;\n case 'allowSelection':\n this.grid.allowSelection = this.allowSelection;\n break;\n case 'selectionSettings':\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n break;\n case 'allowSorting':\n this.grid.allowSorting = this.allowSorting;\n break;\n case 'allowMultiSorting':\n this.grid.allowMultiSorting = this.allowMultiSorting;\n break;\n case 'sortSettings':\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n break;\n case 'searchSettings':\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n break;\n case 'allowFiltering':\n this.grid.allowFiltering = this.allowFiltering;\n break;\n case 'filterSettings':\n if (!this.initialRender) {\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n }\n break;\n case 'showColumnMenu':\n this.grid.showColumnMenu = this.showColumnMenu;\n break;\n case 'allowRowDragAndDrop':\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n break;\n case 'aggregates':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.aggregates = getActualProperties(this.aggregates);\n break;\n case 'enableInfiniteScrolling':\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n break;\n case 'dataSource':\n this.isLocalData = (!(this.dataSource instanceof DataManager) || (!isNullOrUndefined(this.dataSource.ready))\n || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.convertTreeData(this.dataSource);\n if (this.isLocalData) {\n if (isCountRequired(this)) {\n var count = getValue('count', this.dataSource);\n this.grid.dataSource = { result: this.flatData, count: count };\n }\n else {\n var data = this.dataSource;\n this.grid.dataSource = !(data instanceof DataManager) ?\n this.flatData : new DataManager(data.dataSource, data.defaultQuery, data.adaptor);\n }\n if (this.enableVirtualization) {\n this.grid.contentModule.isDataSourceChanged = true;\n }\n }\n else {\n this.bindedDataSource();\n if (this.enableVirtualization) {\n this.grid.contentModule.removeEventListener();\n this.grid.contentModule.eventListener('on');\n this.grid.contentModule.renderTable();\n }\n }\n break;\n case 'query':\n this.grid.query = this.query;\n break;\n case 'enableCollapseAll':\n if (newProp[\"\" + prop]) {\n this.collapseAll();\n }\n else {\n this.expandAll();\n }\n break;\n case 'expandStateMapping':\n this.grid.refresh();\n break;\n case 'gridLines':\n this.grid.gridLines = this.gridLines;\n break;\n case 'rowTemplate':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n break;\n case 'frozenRows':\n this.grid.frozenRows = this.frozenRows;\n break;\n case 'frozenColumns':\n this.grid.frozenColumns = this.frozenColumns;\n break;\n case 'rowHeight':\n this.grid.rowHeight = this.rowHeight;\n break;\n case 'height':\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n this.grid.height = this.height;\n break;\n case 'width':\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.grid.width = this.width;\n break;\n case 'locale':\n this.grid.locale = this.locale;\n this.TreeGridLocale();\n this.grid.toolbar = this.getGridToolbar();\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'selectedRowIndex':\n this.grid.selectedRowIndex = this.selectedRowIndex;\n break;\n case 'enableAltRow':\n this.grid.enableAltRow = this.enableAltRow;\n break;\n case 'enableHover':\n this.grid.enableHover = this.enableHover;\n break;\n case 'enableAutoFill':\n this.grid.enableAutoFill = this.enableAutoFill;\n break;\n case 'enableAdaptiveUI':\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n break;\n case 'enableImmutableMode':\n this.grid.enableImmutableMode = this.enableImmutableMode;\n break;\n case 'allowExcelExport':\n this.grid.allowExcelExport = this.allowExcelExport;\n break;\n case 'allowPdfExport':\n this.grid.allowPdfExport = this.allowPdfExport;\n break;\n case 'enableRtl':\n if (!isNullOrUndefined(this.treeColumnField)) {\n this.updateTreeColumnTextAlign();\n }\n this.grid.enableRtl = this.enableRtl;\n break;\n case 'allowReordering':\n this.grid.allowReordering = this.allowReordering;\n break;\n case 'allowResizing':\n this.grid.allowResizing = this.allowResizing;\n break;\n case 'textWrapSettings':\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n break;\n case 'allowTextWrap':\n this.grid.allowTextWrap = getActualProperties(this.allowTextWrap);\n this.grid.refresh();\n break;\n case 'contextMenuItems':\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'showColumnChooser':\n this.grid.showColumnChooser = this.showColumnChooser;\n break;\n case 'detailTemplate':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n break;\n case 'columnMenuItems':\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n break;\n case 'editSettings':\n if (this.grid.isEdit && this.grid.editSettings.mode === 'Normal' && newProp[\"\" + prop].mode &&\n (newProp[\"\" + prop].mode === 'Cell' || newProp[\"\" + prop].mode === 'Row')) {\n this.grid.closeEdit();\n }\n this.grid.editSettings = this.getGridEditSettings();\n break;\n }\n if (requireRefresh) {\n this.grid.refresh();\n }\n }\n };\n TreeGrid.prototype.updateTreeColumnTextAlign = function () {\n var gridColumn = this.grid.getColumnByField(this.treeColumnField);\n gridColumn.textAlign = this.enableRtl ? 'Right' : this.treeColumnTextAlign;\n this.grid.refreshColumns();\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @method destroy\n * @returns {void}\n */\n TreeGrid.prototype.destroy = function () {\n var treeGridElement = this.element;\n if (!treeGridElement) {\n return;\n }\n var hasTreeGridChild = treeGridElement.querySelector('.' + 'e-gridheader') &&\n treeGridElement.querySelector('.' + 'e-gridcontent') ? true : false;\n if (hasTreeGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n if (hasTreeGridChild) {\n _super.prototype.destroy.call(this);\n }\n if (this.grid) {\n this.grid.destroy();\n }\n if (this.dataModule) {\n this.dataModule.destroy();\n }\n var modules = ['dataModule', 'sortModule', 'renderModule', 'filterModule', 'printModule', 'clipboardModule',\n 'excelExportModule', 'pdfExportModule', 'toolbarModule', 'summaryModule', 'reorderModule', 'resizeModule',\n 'pagerModule', 'keyboardModule', 'columnMenuModule', 'contextMenuModule', 'editModule', 'virtualScrollModule',\n 'selectionModule', 'detailRow', 'rowDragAndDropModule', 'freezeModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n this.grid = null;\n };\n /**\n * Update the TreeGrid model\n *\n * @method dataBind\n * @returns {void}\n * @private\n */\n TreeGrid.prototype.dataBind = function () {\n if (isNullOrUndefined(this.grid)) {\n return;\n }\n if (!isNullOrUndefined(this.rowDropSettings.targetID) &&\n isNullOrUndefined(document.getElementById(this.grid.rowDropSettings.targetID))) {\n document.getElementById(this.rowDropSettings.targetID).id = this.grid.rowDropSettings.targetID;\n this.rowDropSettings.targetID = this.grid.rowDropSettings.targetID;\n }\n _super.prototype.dataBind.call(this);\n this.grid.dataBind();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns persist properties details\n * @hidden\n */\n TreeGrid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'treeColumnIndex'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'pageSizeMode', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent', 'hierarchyMode'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var k = 0, val = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; (!isNullOrUndefined(val) && k < val.length); k++) {\n var objVal = val[parseInt(k.toString(), 10)];\n delete currentObject[\"\" + objVal];\n }\n }\n this.ignoreInArrays(ignoreOnColumn, this.columns);\n return this.addOnPersist(keyEntity);\n };\n TreeGrid.prototype.ignoreInArrays = function (ignoreOnColumn, columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.ignoreInColumn(ignoreOnColumn, columns[parseInt(i.toString(), 10)]);\n this.ignoreInArrays(ignoreOnColumn, columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n this.ignoreInColumn(ignoreOnColumn, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n TreeGrid.prototype.ignoreInColumn = function (ignoreOnColumn, column) {\n if (isNullOrUndefined(column.template)) {\n for (var i = 0; i < ignoreOnColumn.length; i++) {\n delete column[ignoreOnColumn[parseInt(i.toString(), 10)]];\n column.filter = {};\n }\n }\n };\n TreeGrid.prototype.mouseClickHandler = function (e) {\n if (!isNullOrUndefined(e.touches)) {\n return;\n }\n var target = e.target;\n if ((target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && (!this.isEditCollapse && !this.grid.isEdit)) {\n this.expandCollapseRequest(target);\n }\n var isEllipsisTooltip = 'isEllipsisTooltip';\n if ((target.classList.contains('e-treegridexpand') || target.classList.contains('e-treegridcollapse')) &&\n (this.grid[\"\" + isEllipsisTooltip]())) {\n this.grid['toolTipObj'].close();\n }\n this.isEditCollapse = false;\n this.notify('checkboxSelection', { target: target });\n if (this.grid.isCheckBoxSelection && !this.grid.isPersistSelection) {\n if (this.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n var checkedTarget = this.grid.getHeaderContent().querySelector('.e-checkselectall');\n var checkedLen = this.grid.getSelectedRowIndexes().length;\n var totalRecords = this.getCurrentViewRecords().length;\n if (checkedLen === totalRecords) {\n var spanEle = checkedTarget.nextElementSibling;\n removeClass([spanEle], ['e-stop', 'e-uncheck']);\n addClass([spanEle], ['e-check']);\n }\n }\n }\n };\n /**\n * Returns TreeGrid rows\n *\n * @returns {HTMLTableRowElement[]} - Returns row elements collection\n */\n TreeGrid.prototype.getRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets the pager of the TreeGrid.\n *\n * @returns {Element} - Returns pager element\n */\n TreeGrid.prototype.getPager = function () {\n return this.grid.getPager(); //get element from pager\n };\n /**\n * Adds a new record to the TreeGrid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added.\n * @param {RowPosition} position - Defines the new row position to be added.\n * @returns {void}\n */\n TreeGrid.prototype.addRecord = function (data, index, position) {\n if (this.editModule) {\n var isAddedRowByMethod = 'isAddedRowByMethod';\n this.editModule[\"\" + isAddedRowByMethod] = true;\n this.editModule.addRecord(data, index, position);\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n TreeGrid.prototype.closeEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.closeEdit();\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n TreeGrid.prototype.saveCell = function () {\n if (this.grid.editModule) {\n this.grid.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n TreeGrid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.grid.editModule) {\n this.grid.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n TreeGrid.prototype.updateRow = function (index, data) {\n if (this.grid.editModule) {\n if (!isNullOrUndefined(index)) {\n var griddata = this.grid.getCurrentViewRecords()[parseInt(index.toString(), 10)];\n extend(griddata, data);\n this.grid.editModule.updateRow(index, griddata);\n }\n else {\n this.grid.editModule.updateRow(index, data);\n }\n }\n };\n /**\n * Delete a record with Given options. If fieldName and data is not given then TreeGrid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldName - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRecord = function (fieldName, data) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRecord(fieldName, data);\n }\n };\n /**\n * To edit any particular row by TR element.\n *\n * @param {HTMLTableRowElement} row - Defines the table row to be edited.\n * @returns {void}\n */\n TreeGrid.prototype.startEdit = function (row) {\n if (this.grid.editModule) {\n this.grid.editModule.startEdit(row);\n }\n };\n /**\n * To edit any particular cell using row index and cell index.\n *\n * @param {number} rowIndex - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform cell edit.\n * @returns {void}\n */\n TreeGrid.prototype.editCell = function (rowIndex, field) {\n if (this.editModule) {\n this.editModule.editCell(rowIndex, field);\n }\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n */\n TreeGrid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.grid.toolbarModule) {\n this.grid.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * If TreeGrid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n TreeGrid.prototype.endEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.endEdit();\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n * @returns {void}\n */\n TreeGrid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRow = function (tr) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRow(tr);\n }\n };\n /**\n * Get the names of the primary key columns of the TreeGrid.\n *\n * @returns {string[]} - Returns primary key collection\n */\n TreeGrid.prototype.getPrimaryKeyFieldNames = function () {\n return this.grid.getPrimaryKeyFieldNames();\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n TreeGrid.prototype.setCellValue = function (key, field, value) {\n this.grid.setCellValue(key, field, value);\n var rowIndex = this.grid.getRowIndexByPrimaryKey(key);\n var record = this.getCurrentViewRecords()[parseInt(rowIndex.toString(), 10)];\n if (!isNullOrUndefined(record)) {\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, field);\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n * @returns {void}\n */\n TreeGrid.prototype.setRowData = function (key, rowData) {\n var currentRecords = this.getCurrentViewRecords();\n var primaryKey = this.grid.getPrimaryKeyFieldNames()[0];\n var level = 0;\n var record = {};\n currentRecords.some(function (value) {\n if (value[\"\" + primaryKey] === key) {\n record = value;\n return true;\n }\n else {\n return false;\n }\n });\n level = record.level;\n rowData.level = level;\n rowData.index = record.index;\n rowData.childRecords = record.childRecords;\n rowData.taskData = record.taskData;\n rowData.uniqueID = record.uniqueID;\n rowData.parentItem = record.parentItem;\n rowData.checkboxState = record.checkboxState;\n rowData.hasChildRecords = record.hasChildRecords;\n rowData.parentUniqueID = record.parentUniqueID;\n rowData.expanded = record.expanded;\n this.grid.setRowData(key, rowData);\n var visibleRecords = this.getVisibleRecords();\n if (visibleRecords.length > 0 && key === (visibleRecords[visibleRecords.length - 1])[\"\" + primaryKey]) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(this.getRows()[currentRecords.indexOf(record)], sHeight <= clientHeight);\n }\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n TreeGrid.prototype.goToPage = function (pageNo) {\n if (this.grid.pagerModule) {\n this.grid.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n TreeGrid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.grid.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns cell element in grid content\n */\n TreeGrid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.columnModel, function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByUid = function (uid) {\n var Columns = this.initialRender ? this.grid.columns : this.columns;\n var columnModel = 'columnModel';\n if (this.grid.columns.length !== this.columnModel.length) {\n Columns = this.grid[\"\" + columnModel];\n }\n return iterateArrayOrObject(Columns, function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} - Returns column field name as collection\n */\n TreeGrid.prototype.getColumnFieldNames = function () {\n return this.grid.getColumnFieldNames();\n };\n /**\n * Gets the footer div of the TreeGrid.\n *\n * @returns {Element} - Returns footer content div element\n */\n TreeGrid.prototype.getFooterContent = function () {\n return this.grid.getFooterContent();\n };\n /**\n * Gets the footer table element of the TreeGrid.\n *\n * @returns {Element} - Returns footer content table element\n */\n TreeGrid.prototype.getFooterContentTable = function () {\n return this.grid.getFooterContentTable();\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.showColumns = function (keys, showBy) {\n this.grid.showColumns(keys, showBy);\n this.updateColumnModel();\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.hideColumns = function (keys, hideBy) {\n this.grid.hideColumns(keys, hideBy);\n this.updateColumnModel();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByField = function (field) {\n return this.grid.getColumnHeaderByField(field);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByUid = function (uid) {\n return this.grid.getColumnHeaderByUid(uid);\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByField = function (field) {\n return this.grid.getColumnIndexByField(field);\n };\n TreeGrid.prototype.getVirtualColIndexByUid = function (uid) {\n var columnModel = 'columnModel';\n var index = iterateArrayOrObject(this.grid[\"\" + columnModel], function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByUid = function (uid) {\n return this.grid.getColumnIndexByUid(uid);\n };\n /**\n * Gets the columns from the TreeGrid.\n *\n * @param {boolean} isRefresh - Defined whether to update DOM\n * @returns {Column[]} - Returns treegrid columns collection\n */\n TreeGrid.prototype.getColumns = function (isRefresh) {\n this.updateColumnModel(this.grid.getColumns(isRefresh));\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnModel = function (column) {\n var temp;\n var field;\n var gridColumns = isNullOrUndefined(column) ? this.grid.getColumns() : column;\n if (this.treeColumnIndex !== -1 && this.columnModel[this.treeColumnIndex] &&\n !isNullOrUndefined(this.columnModel[this.treeColumnIndex].template)) {\n temp = this.columnModel[this.treeColumnIndex].template;\n field = this.columnModel[this.treeColumnIndex].field;\n }\n var gridColumn;\n if (!this.enableColumnVirtualization || (this.enableColumnVirtualization && this.columnModel.length === gridColumns.length)) {\n this.columnModel = [];\n for (var i = 0; i < gridColumns.length; i++) {\n gridColumn = {};\n for (var _i = 0, _a = Object.keys(gridColumns[parseInt(i.toString(), 10)]); _i < _a.length; _i++) {\n var prop = _a[_i];\n gridColumn[\"\" + prop] = gridColumns[parseInt(i.toString(), 10)][\"\" + prop];\n }\n this.columnModel.push(new Column(gridColumn));\n if (field === this.columnModel[parseInt(i.toString(), 10)].field && this.columnModel[parseInt(i.toString(), 10)].type !== 'checkbox' && (!isNullOrUndefined(temp) && temp !== '')) {\n this.columnModel[parseInt(i.toString(), 10)].template = temp;\n }\n }\n }\n var deepMerge = 'deepMerge';\n this[\"\" + deepMerge] = ['columns']; // Workaround for blazor updateModel\n if (this.grid.columns.length !== this.columnModel.length) {\n this.stackedHeader = true;\n }\n if (this.stackedHeader && this.allowResizing) {\n this.updateColumnsWidth(this.columns);\n }\n if (!this.stackedHeader) {\n merge(this.columns, this.columnModel);\n }\n this[\"\" + deepMerge] = undefined; // Workaround for blazor updateModel\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnsWidth = function (columns) {\n var _this = this;\n columns.forEach(function (column) {\n if (column.columns) {\n _this.updateColumnsWidth(column.columns);\n }\n else if (column.field) {\n var currentColumn = _this.grid.getColumnByField(column.field);\n if (!isNullOrUndefined(currentColumn)) {\n column.width = currentColumn.width;\n }\n }\n });\n };\n /**\n * Gets the content div of the TreeGrid.\n *\n * @returns {Element} - Return tree grid content element\n */\n TreeGrid.prototype.getContent = function () {\n return this.grid.getContent();\n };\n TreeGrid.prototype.mergePersistTreeGridData = function () {\n var persist1 = 'mergePersistGridData';\n this.grid[\"\" + persist1].apply(this);\n };\n TreeGrid.prototype.mergeColumns = function (storedColumn, columns) {\n var persist2 = 'mergeColumns';\n this.grid[\"\" + persist2].apply(this, [storedColumn, columns]);\n };\n TreeGrid.prototype.setFrozenCount = function () {\n var persist3 = 'setFrozenCount';\n this.grid[\"\" + persist3].apply(this);\n };\n TreeGrid.prototype.splitFrozenCount = function (columns) {\n var persist4 = 'splitFrozenCount';\n this.grid[\"\" + persist4].apply(this, [columns]);\n };\n TreeGrid.prototype.isFrozenGrid = function () {\n return this.grid.isFrozenGrid();\n };\n TreeGrid.prototype.updateTreeGridModel = function () {\n this.setProperties({ filterSettings: getObject('properties', this.grid.filterSettings) }, true);\n this.setProperties({ pageSettings: getObject('properties', this.grid.pageSettings) }, true);\n this.setProperties({ searchSettings: getObject('properties', this.grid.searchSettings) }, true);\n this.setProperties({ sortSettings: getObject('properties', this.grid.sortSettings) }, true);\n };\n /**\n * Gets the content table of the TreeGrid.\n *\n * @returns {Element} - Returns content table element\n */\n TreeGrid.prototype.getContentTable = function () {\n return this.grid.getContentTable();\n };\n /**\n * Gets all the TreeGrid's data rows.\n *\n * @returns {Element[]} - Returns row elements\n */\n TreeGrid.prototype.getDataRows = function () {\n var dRows = [];\n var rows = this.grid.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains('e-summaryrow')) {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n return dRows;\n };\n /**\n * Get current visible data of TreeGrid.\n *\n * @returns {Object[]} - Returns current view records\n * @isGenericType true\n */\n TreeGrid.prototype.getCurrentViewRecords = function () {\n var isSummaryRow = 'isSummaryRow';\n return this.grid.currentViewData.filter(function (e) { return isNullOrUndefined(e[\"\" + isSummaryRow]); });\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} - Returns batch changes\n */\n TreeGrid.prototype.getBatchChanges = function () {\n return this.grid.editModule.getBatchChanges();\n };\n /**\n * Gets the header div of the TreeGrid.\n *\n * @returns {Element} - Returns Header content element\n */\n TreeGrid.prototype.getHeaderContent = function () {\n return this.grid.getHeaderContent();\n };\n /**\n * Gets the header table element of the TreeGrid.\n *\n * @returns {Element} - Return header table element\n */\n TreeGrid.prototype.getHeaderTable = function () {\n return this.grid.getHeaderTable();\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns row element\n */\n TreeGrid.prototype.getRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - Target row element\n * @returns {RowInfo} - Returns row information in a JSON object\n */\n TreeGrid.prototype.getRowInfo = function (target) {\n return this.grid.getRowInfo(target);\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} - Returns unique id based on column field name given\n */\n TreeGrid.prototype.getUidByColumnField = function (field) {\n return this.grid.getUidByColumnField(field);\n };\n /**\n * Gets the visible columns from the TreeGrid.\n *\n * @returns {Column[]} - Returns visible columns collection\n */\n TreeGrid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * By default, TreeGrid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n TreeGrid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually shown spinner needs to hide by `hideSpinnner`.\n *\n * @returns {void}\n */\n TreeGrid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * Refreshes the TreeGrid header and content.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refresh = function () {\n this.uniqueIDCollection = {};\n this.convertTreeData(this.dataSource);\n if (!isCountRequired(this)) {\n if (!(this.dataSource instanceof DataManager)) {\n this.grid.dataSource = this.flatData;\n }\n else {\n this.grid.setProperties({\n dataSource: new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor)\n }, true);\n }\n }\n this.grid.refresh();\n };\n /**\n * Get the records of checked rows.\n *\n * @returns {Object[]} - Returns records that has been checked\n * @isGenericType true\n */\n TreeGrid.prototype.getCheckedRecords = function () {\n return this.selectionModule.getCheckedrecords();\n };\n /**\n * Get the visible records corresponding to rows visually displayed.\n *\n * @returns {Object[]} - Returns visible records based on collapse state of rows\n * @isGenericType true\n */\n TreeGrid.prototype.getVisibleRecords = function () {\n var visibleRecords = [];\n var currentViewRecords = this.getCurrentViewRecords();\n if (!this.allowPaging) {\n for (var i = 0; i < currentViewRecords.length; i++) {\n visibleRecords.push(currentViewRecords[parseInt(i.toString(), 10)]);\n if (!currentViewRecords[parseInt(i.toString(), 10)].expanded) {\n i += findChildrenRecords(currentViewRecords[parseInt(i.toString(), 10)]).length;\n }\n }\n }\n else {\n visibleRecords = currentViewRecords;\n }\n return visibleRecords;\n };\n /**\n * Get the indexes of checked rows.\n *\n * @returns {number[]} - Returns checked row indexes\n */\n TreeGrid.prototype.getCheckedRowIndexes = function () {\n return this.selectionModule.getCheckedRowIndexes();\n };\n /**\n * Checked the checkboxes using rowIndexes.\n *\n * @param {number[]} indexes - row indexes\n * @returns {void}\n */\n TreeGrid.prototype.selectCheckboxes = function (indexes) {\n this.selectionModule.selectCheckboxes(indexes);\n };\n /**\n * Refreshes the TreeGrid column changes.\n *\n * @param {boolean} refreshUI - Defined whether to refresh the DOM\n * @returns {void}\n */\n TreeGrid.prototype.refreshColumns = function (refreshUI) {\n if (isNullOrUndefined(refreshUI) || refreshUI) {\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.refreshColumns();\n }\n else {\n this.grid.setProperties({ columns: this.getGridColumns(this.columns) }, true);\n }\n };\n /**\n * Refreshes the TreeGrid header.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refreshHeader = function () {\n this.grid.refreshHeader();\n };\n /**\n * Expands or collapse child records\n *\n * @param {HTMLElement} target - Expand collapse icon cell as target element\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.expandCollapseRequest = function (target) {\n if (this.editSettings.mode === 'Batch') {\n var obj = 'dialogObj';\n var showDialog = 'showDialog';\n if ((this.getBatchChanges()[this.changedRecords].length || this.getBatchChanges()[this.deletedRecords].length ||\n this.getBatchChanges()[this.addedRecords].length) && this.editSettings.showConfirmDialog) {\n var dialogObj = this.grid.editModule[\"\" + obj];\n this.grid.editModule[\"\" + showDialog]('CancelEdit', dialogObj);\n this.targetElement = target;\n return;\n }\n }\n if (this.rowTemplate) {\n var rowInfo = target.closest('.e-treerowcell').parentElement;\n var record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo, record);\n }\n else {\n this.expandRow(rowInfo, record);\n }\n }\n else {\n var rowInfo_1 = this.grid.getRowInfo(target);\n var record = rowInfo_1.rowData;\n if (this.grid.isFrozenGrid() && this.enableVirtualization && !Object.keys(record).length) {\n var freezeRows = 'freezeRows';\n record = this.grid.contentModule[\"\" + freezeRows].filter(function (e) { return e.uid === rowInfo_1.row.getAttribute('data-uid'); })[0].data;\n }\n if (this.enableImmutableMode) {\n record = this.getCurrentViewRecords()[rowInfo_1.rowIndex];\n }\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo_1.row, record);\n }\n else {\n this.expandRow(rowInfo_1.row, record);\n }\n }\n };\n /**\n * Expands child rows\n *\n * @param {HTMLTableRowElement} row - Expands the given row\n * @param {Object} record - Expands the given record\n * @param {Object} key - Primary key value\n * @param {number} level - Specifies the hierarchical level of the record\n * @returns {void}\n */\n TreeGrid.prototype.expandRow = function (row, record, key, level) {\n var _this = this;\n var parentRec = this.parentData;\n if (!this.enableVirtualization) {\n parentRec = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n record = this.getCollapseExpandRecords(row, record);\n if (!isNullOrUndefined(row) && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n if (this.isExpandAll && !isRemoteData(this)) {\n var args = { data: parentRec, row: row, cancel: false };\n var pagerValuePresent = false;\n if (this.grid.pagerModule && !isNullOrUndefined(this.grid.pagerModule.pagerObj.pagerdropdownModule)) {\n pagerValuePresent = this.grid.pagerModule.pagerObj.pagerdropdownModule['dropDownListObject'].value ? true : false;\n }\n if (!this.isExpandingEventTriggered) {\n this.trigger(events.expanding, args, function (expandingArgs) {\n _this.expandAllPrevent = expandingArgs.cancel;\n if (!expandingArgs.cancel) {\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n _this.expandRows(row, record, parentRec, key, level);\n }\n });\n }\n else if ((!this.allowPaging || (pagerValuePresent && this.grid.pagerModule.pagerObj.pagerdropdownModule['dropDownListObject'].value === 'All')) &&\n !this.expandAllPrevent && this.isExpandingEventTriggered) {\n this.expandRows(row, record, parentRec, key, level);\n }\n this.isExpandingEventTriggered = true;\n }\n else if (!this.isExpandAll || (this.isExpandAll && isRemoteData(this))) {\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.expanding, args, function (expandingArgs) {\n if (!expandingArgs.cancel) {\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n _this.expandRows(row, record, parentRec, key, level);\n }\n });\n }\n };\n // Internal method to handle the rows expand\n TreeGrid.prototype.expandRows = function (row, record, parentRec, key, level) {\n this.expandCollapse('expand', row, record);\n var children = 'Children';\n if (!(isRemoteData(this) && !isOffline(this)) && (!isCountRequired(this) || !isNullOrUndefined(record[\"\" + children]))) {\n var expandArgs = { data: record, row: row };\n if (!isNullOrUndefined(this.expandStateMapping)) {\n this.updateExpandStateMapping(expandArgs.data, true);\n }\n if (this.isExpandAll && !this.isExpandedEventTriggered) {\n this.isExpandedEventTriggered = true;\n expandArgs = { data: parentRec, row: row };\n this.trigger(events.expanded, expandArgs);\n }\n else if (!this.isExpandAll) {\n this.trigger(events.expanded, expandArgs);\n }\n }\n };\n TreeGrid.prototype.expandCollapseAllChildren = function (record, action, key, level) {\n if ((!isNullOrUndefined(key) && record[this.getPrimaryKeyFieldNames()[0]] !== key) ||\n (!isNullOrUndefined(level) && level !== record.level)) {\n return;\n }\n var records = findChildrenRecords(record).filter(function (e) {\n return e.hasChildRecords;\n });\n records.unshift(record);\n for (var i = 0; i < records.length; i++) {\n this.expandCollapse(action, null, records[parseInt(i.toString(), 10)]);\n }\n };\n TreeGrid.prototype.getCollapseExpandRecords = function (row, record) {\n if (this.allowPaging && this.pageSettings.pageSizeMode === 'All' && this.isExpandAll && isNullOrUndefined(record) &&\n !isRemoteData(this)) {\n record = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n else if (isNullOrUndefined(record)) {\n if (this.detailTemplate) {\n record = this.grid.getCurrentViewRecords()[row.getAttribute('data-rowindex')];\n }\n else {\n if (this.enableVirtualization && this.isCollapseAll) {\n if (this.isExpandAll && row.rowIndex === -1) {\n record = this.grid.getCurrentViewRecords()[parseInt(row.getAttribute('data-rowindex'), 10)];\n }\n else {\n record = this.grid.getCurrentViewRecords()[row.rowIndex];\n }\n }\n else if (this.rowTemplate) {\n record = this.grid.getCurrentViewRecords()[row.rowIndex];\n }\n else {\n record = this.grid.getCurrentViewRecords()[parseInt(row.getAttribute('data-rowindex'), 10)];\n }\n }\n }\n return record;\n };\n /**\n * Collapses child rows\n *\n * @param {HTMLTableRowElement} row - Collapse the given row\n * @param {Object} record - Collapse the given record\n * @param {Object} key - Primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseRow = function (row, record, key) {\n var _this = this;\n var parentRec = this.parentData;\n if (!this.enableVirtualization) {\n parentRec = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n record = this.getCollapseExpandRecords(row, record);\n if (this.isCollapseAll && !isRemoteData(this)) {\n var args = { data: parentRec, row: row, cancel: false };\n if (!this.isCollapsingEventTriggered) {\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n _this.collapseAllPrevent = collapsingArgs.cancel;\n if (!collapsingArgs.cancel) {\n if (collapsingArgs.collapseAll) {\n _this.expandCollapseAllChildren(record, 'collapse', key);\n }\n _this.collapseRows(row, record, parentRec, key);\n }\n });\n }\n else if (!this.allowPaging && !this.collapseAllPrevent && this.isCollapsingEventTriggered) {\n this.collapseRows(row, record, parentRec, key);\n }\n this.isCollapsingEventTriggered = true;\n }\n else if (!this.isCollapseAll || (this.isCollapseAll && isRemoteData(this))) {\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n if (!collapsingArgs.cancel) {\n _this.collapseRows(row, record, parentRec, key);\n }\n });\n }\n };\n // Internal method for handling the rows collapse\n TreeGrid.prototype.collapseRows = function (row, record, parentRec, key) {\n this.expandCollapse('collapse', row, record);\n var collapseArgs = { data: record, row: row };\n if (!isRemoteData(this)) {\n if (!isNullOrUndefined(this.expandStateMapping)) {\n this.updateExpandStateMapping(collapseArgs.data, false);\n }\n if (this.isCollapseAll && !this.isCollapsedEventTriggered) {\n this.isCollapsedEventTriggered = true;\n collapseArgs = { data: parentRec, row: row };\n this.trigger(events.collapsed, collapseArgs);\n }\n else if (!this.isCollapseAll) {\n this.trigger(events.collapsed, collapseArgs);\n }\n if (this.enableInfiniteScrolling) {\n var scrollHeight = this.grid.getContent().firstElementChild.scrollHeight;\n var scrollTop = this.grid.getContent().firstElementChild.scrollTop;\n if ((scrollHeight - scrollTop) < this.grid.getRowHeight() + +this.height) {\n this.grid.getContent().firstElementChild.scrollBy(0, this.grid.getRowHeight());\n }\n }\n }\n };\n TreeGrid.prototype.updateExpandStateMapping = function (record, state) {\n var totalRecords = record;\n if (totalRecords.length) {\n for (var i = 0; i < totalRecords.length; i++) {\n totalRecords[parseInt(i.toString(), 10)][this.expandStateMapping] = state;\n editAction({ value: totalRecords[parseInt(i.toString(), 10)], action: 'edit' }, this, this.isSelfReference, totalRecords[parseInt(i.toString(), 10)].index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n }\n else {\n record[\"\" + this.expandStateMapping] = state;\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n };\n /**\n * Expands the records at specific hierarchical level\n *\n * @param {number} level - Expands the parent rows at given level\n * @returns {void}\n */\n TreeGrid.prototype.expandAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var rec = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = true;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.expandAction(rec, null, level, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var record = getObject('records', rec);\n this.expandAction(record, null, level);\n }\n };\n /**\n * Expands the records by given primary key value\n *\n * @param {Object} key - Expands the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.expandByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Expand');\n };\n TreeGrid.prototype.expandAction = function (record, key, level, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n var _loop_1 = function (i) {\n if (!isNullOrUndefined(record[parseInt(i.toString(), 10)].parentItem)) {\n var puniqueID_1 = record[parseInt(i.toString(), 10)].parentItem.uniqueID;\n var parentItem = this_1.flatData.filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n if (isRemoteData(this_1)) {\n parentItem = this_1.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n }\n if (parentItem[0].expanded === false) {\n record.push(parentItem[0]);\n parentItem[0].expanded = true;\n }\n else {\n if (!getExpandStatus(this_1, parentItem[0], this_1.parentData)) {\n if (parentItem[0].expanded && parentItem[0].parentItem !== undefined) {\n record.push(parentItem[0]);\n }\n }\n }\n }\n if (!isPaging) {\n this_1.expandRow(null, record[parseInt(i.toString(), 10)], key, level);\n }\n };\n var this_1 = this;\n for (var i = 0; i < record.length; i++) {\n _loop_1(i);\n }\n if (isPaging) {\n this.expandRow(null, record, key, level);\n }\n };\n TreeGrid.prototype.getRecordDetails = function (level) {\n var rows = this.getRows().filter(function (e) {\n return (e.className.indexOf('level' + level) !== -1\n && (e.querySelector('.e-treegridcollapse') || e.querySelector('.e-treegridexpand')));\n });\n var records = this.getCurrentViewRecords().filter(function (e) {\n return e.level === level && e.hasChildRecords;\n });\n var obj = { records: records, rows: rows };\n return obj;\n };\n /**\n * Collapses the records at specific hierarchical level\n *\n * @param {number} level - Define the parent row level which needs to be collapsed\n * @returns {void}\n */\n TreeGrid.prototype.collapseAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var record = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = false;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.collapseAction(record, null, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var records = getObject('records', rec);\n this.collapseAction(records);\n }\n };\n /**\n * Collapses the records by given primary key value\n *\n * @param {Object} key - Collapses the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Collapse');\n };\n TreeGrid.prototype.expandCollapseActionByKey = function (key, action) {\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n var dataSource = isRemoteData(this) ? this.getCurrentViewRecords() : this.grid.dataSource;\n if (!isNullOrUndefined(primaryKeyField)) {\n var rec = dataSource.filter(function (e) {\n return e[\"\" + primaryKeyField].toString() === key.toString();\n });\n if (action === 'Expand') {\n this.expandAction(rec, key, null);\n }\n else {\n this.collapseAction(rec, key);\n }\n }\n };\n TreeGrid.prototype.collapseAction = function (record, key, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n if (isPaging) {\n this.collapseRow(null, record);\n }\n else {\n for (var i = 0; i < record.length; i++) {\n this.collapseRow(null, record[parseInt(i.toString(), 10)], key);\n }\n }\n if (!this.grid.contentModule.isDataSourceChanged && this.enableVirtualization && this.getRows()\n && this.parentData.length === this.getRows().length) {\n var endIndex = 'endIndex';\n this.grid.contentModule.startIndex = -1;\n this.grid.contentModule[\"\" + endIndex] = -1;\n }\n };\n /**\n * Expands All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.expandAll = function () {\n this.isExpandedEventTriggered = false;\n this.isExpandingEventTriggered = false;\n this.expandCollapseAll('expand');\n };\n /**\n * Collapses All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.collapseAll = function () {\n this.isCollapsedEventTriggered = false;\n this.isCollapsingEventTriggered = false;\n this.expandCollapseAll('collapse');\n };\n TreeGrid.prototype.expandCollapseAll = function (action) {\n var rows;\n if (this.rowTemplate) {\n rows = [].slice.call(this.grid.getContentTable().querySelectorAll('tr')).filter(function (e) {\n return e.querySelector('.e-treegrid' + (action === 'expand' ? 'collapse' : 'expand'));\n });\n }\n else {\n rows = this.getRows().filter(function (e) {\n return e.querySelector('.e-treegrid' + (action === 'expand' ? 'collapse' : 'expand'));\n });\n }\n this.isExpandAll = true;\n this.isCollapseAll = true;\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)) {\n this.flatData.filter(function (e) {\n if (e.hasChildRecords) {\n e.expanded = action === 'collapse' ? false : true;\n }\n });\n if (rows.length) {\n for (var i = 0; i < rows.length; i++) {\n if (action === 'collapse') {\n if (!isNullOrUndefined(this.getCurrentViewRecords()[rows[parseInt(i.toString(), 10)].rowIndex])) {\n this.collapseRow(rows[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (!this.enableVirtualization) {\n this.expandRow(rows[parseInt(i.toString(), 10)]);\n }\n else if (rows[0].getAttribute('aria-expanded') !== 'true') {\n this.expandRow(rows[0]);\n }\n }\n }\n }\n else if (this.allowPaging) {\n var isExpandCollapseall = this.enableCollapseAll;\n this.setProperties({ enableCollapseAll: true }, true);\n this.grid.pagerModule.goToPage(1);\n this.setProperties({ enableCollapseAll: isExpandCollapseall }, true);\n }\n }\n else {\n for (var i = 0; i < rows.length; i++) {\n if (action === 'collapse') {\n this.collapseRow(rows[parseInt(i.toString(), 10)]);\n }\n else {\n this.expandRow(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n this.isExpandAll = false;\n this.isCollapseAll = false;\n };\n TreeGrid.prototype.expandCollapse = function (action, row, record, isChild) {\n var _this = this;\n var expandingArgs = { row: row, data: record, childData: [], requestType: action };\n var childRecords = this.grid.currentViewData.filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n var targetEle;\n if ((!isRemoteData(this) && action === 'expand' && this.isSelfReference && isCountRequired(this) && !childRecords.length) || (action === 'collapse' || (this.isExpandAll && this.loadChildOnDemand) && !isRemoteData(this) && this.isSelfReference && isCountRequired(this))) {\n this.updateChildOnDemand(expandingArgs);\n }\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var rowIndex;\n if (isNullOrUndefined(row)) {\n rowIndex = this.grid.currentViewData.indexOf(record);\n row = gridRows[parseInt(rowIndex.toString(), 10)];\n }\n else {\n rowIndex = +row.getAttribute('data-rowindex');\n }\n if (!isNullOrUndefined(row)) {\n row.setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n }\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)\n && !isCountRequired(this)) {\n this.notify(events.localPagedExpandCollapse, { action: action, row: row, record: record });\n }\n else {\n var displayAction = void 0;\n if (action === 'expand') {\n displayAction = 'table-row';\n if (!isChild) {\n record.expanded = true;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridexpand')) {\n addClass([targetEle], 'e-treegridexpand');\n }\n removeClass([targetEle], 'e-treegridcollapse');\n }\n else {\n displayAction = 'none';\n if (!isChild || isCountRequired(this)) {\n record.expanded = false;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n !record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridcollapse')) {\n addClass([targetEle], 'e-treegridcollapse');\n }\n removeClass([targetEle], 'e-treegridexpand');\n }\n row.querySelectorAll('.e-treerowcell')[0].setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (isRemoteData(this) && !isOffline(this)) {\n this.remoteExpand(action, row, record);\n }\n else {\n if ((!isCountRequired(this) || childRecords.length) || action === 'collapse') {\n this.localExpand(action, row, record);\n }\n var lastrowIdx = this.getVisibleRecords()[this.getVisibleRecords().length - 1]['index'];\n var lastRow = this.getRowByIndex(lastrowIdx);\n if (this.grid.getContentTable().clientHeight <= this.grid.getContent().clientHeight && !isNullOrUndefined(lastRow) && !lastRow.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(lastRow, true);\n }\n }\n if (isCountRequired(this) && action === 'expand') {\n var currentData = this.getCurrentViewRecords();\n var visibleRecords = currentData.filter(function (e) {\n return getExpandStatus(_this, e, _this.parentData);\n });\n this.dataResults.result = visibleRecords;\n }\n if (!isNullOrUndefined(targetEle) && targetEle.closest('.e-treerowcell').classList.contains('e-cellselectionbackground')) {\n targetEle.closest('.e-treerowcell').classList.remove('e-cellselectionbackground');\n targetEle.closest('.e-treerowcell').removeAttribute('aria-selected');\n }\n if (this.isPixelHeight() && !row.cells[0].classList.contains('e-lastrowcell')) {\n var totalRows = this.getRows();\n var rows = this.getContentTable().rows;\n totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i >= 0; i--) {\n if (!isHidden(totalRows[parseInt(i.toString(), 10)])) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(totalRows[parseInt(i.toString(), 10)], sHeight <= clientHeight);\n break;\n }\n }\n }\n this.notify('rowExpandCollapse', { detailrows: detailrows, action: displayAction, record: record, row: row });\n this.updateAltRow(gridRows);\n }\n };\n TreeGrid.prototype.updateChildOnDemand = function (expandingArgs) {\n var _this = this;\n if (expandingArgs.requestType === 'collapse' && isCountRequired(this)) {\n var flatDataRecords = this.flatData.slice();\n for (var i = 0; i < flatDataRecords.length; i++) {\n if (flatDataRecords[parseInt(i.toString(), 10)]['parentUniqueID'] === expandingArgs.data['uniqueID']) {\n flatDataRecords.splice(i, 1);\n i = i - 1;\n }\n }\n this.dataResults.result = flatDataRecords;\n return;\n }\n var deff = new Deferred();\n var childDataBind = 'childDataBind';\n expandingArgs[\"\" + childDataBind] = deff.resolve;\n var record = expandingArgs.data;\n this.trigger(events.dataStateChange, expandingArgs);\n deff.promise.then(function () {\n if (expandingArgs.childData.length) {\n if (isCountRequired(_this)) {\n _this.flatData = _this.dataResults.result;\n }\n if (_this.enableInfiniteScrolling && isCountRequired(_this)) {\n _this.flatData = _this.infiniteScrollData;\n }\n var currentData = (_this.flatData);\n var index = 0;\n for (var i = 0; i < currentData.length; i++) {\n if (currentData[parseInt(i.toString(), 10)].taskData === record.taskData) {\n index = i;\n break;\n }\n }\n var data_1 = getValue('result', _this.dataSource);\n var childData = extendArray(expandingArgs.childData);\n var length_1 = record[_this.childMapping] ? record[_this.childMapping].length > childData.length ?\n record[_this.childMapping].length : childData.length : childData.length;\n for (var i = 0; i < length_1; i++) {\n if (record[_this.childMapping]) {\n data_1.filter(function (e, i) {\n if (e[_this.parentIdMapping] === record[_this.idMapping]) {\n data_1.splice(i, 1);\n }\n });\n }\n if (childData[parseInt(i.toString(), 10)]) {\n childData[parseInt(i.toString(), 10)].level = record.level + 1;\n childData[parseInt(i.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n childData[parseInt(i.toString(), 10)].parentItem = extend({}, record);\n childData[parseInt(i.toString(), 10)].taskData = extend({}, childData[parseInt(i.toString(), 10)]);\n delete childData[parseInt(i.toString(), 10)].parentItem.childRecords;\n delete childData[parseInt(i.toString(), 10)].taskData.parentItem;\n childData[parseInt(i.toString(), 10)].parentUniqueID = record.uniqueID;\n childData[parseInt(i.toString(), 10)].uniqueID = getUid(_this.element.id + '_data_');\n setValue('uniqueIDCollection.' + childData[parseInt(i.toString(), 10)].uniqueID, childData[parseInt(i.toString(), 10)], _this);\n if (!isNullOrUndefined(childData[parseInt(i.toString(), 10)][_this.childMapping]) ||\n (childData[parseInt(i.toString(), 10)][_this.hasChildMapping] && isCountRequired(_this))) {\n childData[parseInt(i.toString(), 10)].hasChildRecords = true;\n }\n if (isCountRequired(_this) && record[_this.childMapping] && record[_this.childMapping][parseInt(i.toString(), 10)]) {\n currentData.splice(index + 1 + i, 0, childData[parseInt(i.toString(), 10)]);\n }\n else {\n currentData.splice(index + 1 + i, record[_this.childMapping] &&\n record[_this.childMapping][parseInt(i.toString(), 10)] ? 1 : 0, childData[parseInt(i.toString(), 10)]);\n }\n }\n else {\n currentData.splice(index + 1 + i, 1);\n }\n }\n currentData[parseInt(index.toString(), 10)][\"\" + _this.childMapping] = childData;\n currentData[parseInt(index.toString(), 10)].childRecords = childData;\n currentData[parseInt(index.toString(), 10)].expanded = true;\n setValue('uniqueIDCollection.' + currentData[parseInt(index.toString(), 10)].uniqueID, currentData[parseInt(index.toString(), 10)], _this);\n for (var j = 0; j < expandingArgs.childData.length; j++) {\n data_1.push(expandingArgs.childData[parseInt(j.toString(), 10)]);\n }\n }\n if (isCountRequired(_this) && _this.loadChildOnDemand && expandingArgs.requestType === 'expand') {\n _this.dataResults['expandRecord'] = {};\n _this.dataResults['expandRecord'] = expandingArgs.data;\n }\n _this.isExpandRefresh = true;\n var scrollHeightBeforeRefresh = _this.getContentTable().parentElement.scrollTop;\n _this.grid.refresh();\n if (_this.enableInfiniteScrolling) {\n _this.getContentTable().parentElement.scrollTop = scrollHeightBeforeRefresh;\n }\n _this.trigger(events.expanded, expandingArgs);\n });\n };\n TreeGrid.prototype.remoteExpand = function (action, row, record) {\n var gridRows = this.getRows();\n var fetchRemoteChildData = 'fetchRemoteChildData';\n if (this.rowTemplate) {\n var rows_1 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_1);\n }\n var args = { data: record, row: row };\n var rows = [];\n rows = gridRows.filter(function (r) {\n return ((r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1))) || (r.querySelector('.e-gridrowindex' + record.index + 'level0' + '.e-summarycell')));\n });\n if (action === 'expand') {\n this.notify(events.remoteExpand, { record: record, rows: rows, parentRow: row });\n var args_1 = { row: row, data: record };\n if (rows.length > 0) {\n this.trigger(events.expanded, args_1);\n }\n }\n else if (action === 'collapse' && this.enableVirtualization) {\n this.dataModule[\"\" + fetchRemoteChildData]({ action: action, record: args.data, rows: null, parentRow: args.row });\n }\n else {\n this.collapseRemoteChild({ record: record, rows: rows });\n this.trigger(events.collapsed, args);\n }\n };\n TreeGrid.prototype.localExpand = function (action, row, record) {\n var rows;\n var childRecords = this.grid.currentViewData.filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n if (this.isPixelHeight() && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var movableRows;\n var freezeRightRows;\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_2 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_2);\n }\n var displayAction = (action === 'expand') ? 'table-row' : 'none';\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n if (this.enableImmutableMode && !this.allowPaging) {\n rows = [];\n for (var i = 0; i < childRecords.length; i++) {\n var rowIndex = this.grid.getRowIndexByPrimaryKey(childRecords[parseInt(i.toString(), 10)][\"\" + primaryKeyField]);\n rows.push(this.getRows()[parseInt(rowIndex.toString(), 10)]);\n }\n }\n else {\n rows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.frozenRows || this.frozenColumns || this.getFrozenColumns() || freeze) {\n movableRows = this.getRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n if (freeze) {\n freezeRightRows = this.getRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n var gridRowsObject = this.grid.getRowsObject();\n var currentViewData = this.grid.currentViewData;\n var currentRecord = currentViewData.filter(function (e) {\n return e.uniqueID === record.uniqueID;\n });\n var currentIndex = currentViewData.indexOf(currentRecord[0]);\n if (!isNullOrUndefined(gridRowsObject[parseInt(currentIndex.toString(), 10)].visible) &&\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible !== false) {\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible = true;\n }\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n for (var i = 0; i < rows.length; i++) {\n if (!isNullOrUndefined(rows[parseInt(i.toString(), 10)])) {\n rows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n if (!isNullOrUndefined(rows[parseInt(i.toString(), 10)]) && !this.allowPaging && !(this.enableVirtualization\n || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[rows[parseInt(i.toString(), 10)].rowIndex].visible = displayAction !== 'none' ? true : false;\n var parentRecord = currentViewData.filter(function (e) {\n return e.uniqueID === currentRecord[0].parentUniqueID;\n });\n if (!isNullOrUndefined(parentRecord[0]) && gridRows[currentViewData.indexOf(parentRecord[0])].getElementsByClassName('e-treegridcollapse').length) {\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible = false;\n }\n }\n if (!isNullOrUndefined(movableRows)) {\n movableRows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n if (!isNullOrUndefined(freezeRightRows)) {\n freezeRightRows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n this.notify('childRowExpand', { row: rows[parseInt(i.toString(), 10)] });\n if ((!isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].childRecords) && childRecords[parseInt(i.toString(), 10)].childRecords.length > 0) && (action !== 'expand' ||\n isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].expanded) || childRecords[parseInt(i.toString(), 10)].expanded)) {\n this.expandCollapse(action, rows[parseInt(i.toString(), 10)], childRecords[parseInt(i.toString(), 10)], true);\n if (this.frozenColumns <= this.treeColumnIndex && !isNullOrUndefined(movableRows)) {\n this.expandCollapse(action, movableRows[parseInt(i.toString(), 10)], childRecords[parseInt(i.toString(), 10)], true);\n }\n }\n }\n for (var i = 0; i < detailrows.length; i++) {\n if (!isNullOrUndefined(detailrows[parseInt(i.toString(), 10)]) && !this.allowPaging && !(this.enableVirtualization ||\n this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[detailrows[parseInt(i.toString(), 10)].rowIndex].visible = displayAction !== 'none' ? true : false;\n detailrows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n }\n if (!this.allowPaging && !(this.enableVirtualization || this.enableInfiniteScrolling || isRemoteData(this)\n || isCountRequired(this))) {\n this.grid.notify('refresh-Expand-and-Collapse', { rows: this.grid.getRowsObject() });\n }\n };\n TreeGrid.prototype.updateAltRow = function (rows) {\n if (this.enableAltRow && !this.rowTemplate) {\n var visibleRowCount = 0;\n for (var i = 0; rows && i < rows.length; i++) {\n var gridRow = rows[parseInt(i.toString(), 10)];\n if (gridRow.style.display !== 'none') {\n if (gridRow.classList.contains('e-altrow')) {\n removeClass([gridRow], 'e-altrow');\n }\n if (visibleRowCount % 2 !== 0 && !gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n addClass([gridRow], 'e-altrow');\n }\n if (!gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n visibleRowCount++;\n }\n }\n }\n }\n };\n TreeGrid.prototype.treeColumnRowTemplate = function () {\n var rows = this.getContentTable().rows;\n rows = [].slice.call(rows);\n var rowsObject = this.grid.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n var rcell = this.grid.getContentTable().rows[parseInt(i.toString(), 10)]\n .cells[this.treeColumnIndex];\n var row = rows[parseInt(i.toString(), 10)];\n var rowData = rowsObject.length !== 0 ? rowsObject[parseInt(i.toString(), 10)].data : new Object();\n var arg = { data: rowData, row: row, cell: rcell, column: this.getColumns()[this.treeColumnIndex] };\n this.renderModule.cellRender(arg);\n }\n };\n TreeGrid.prototype.collapseRemoteChild = function (rowDetails, isChild) {\n if (!isNullOrUndefined(isChild) && !isChild && !this.loadChildOnDemand) {\n rowDetails.record.expanded = false;\n }\n var rows = rowDetails.rows;\n var row;\n var childRecord;\n var movablerows = [];\n var rightrows = [];\n var freeze = (this.getFrozenLeftColumnsCount() > 0 || this.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n movablerows = this.getRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n rightrows = this.getRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].style.display = 'none';\n row = rows[parseInt(i.toString(), 10)];\n var collapsingTd = rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowexpand');\n if (!isNullOrUndefined(collapsingTd)) {\n this.grid.detailRowModule.collapse(collapsingTd);\n }\n if (freeze) {\n movablerows[parseInt(i.toString(), 10)].style.display = 'none';\n rightrows[parseInt(i.toString(), 10)].style.display = 'none';\n if (!rows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n if (movablerows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = movablerows[parseInt(i.toString(), 10)];\n }\n else if (rightrows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = rightrows[parseInt(i.toString(), 10)];\n }\n }\n }\n if (row.querySelector('.e-treecolumn-container .e-treegridexpand')) {\n var expandElement = row.querySelector('.e-treecolumn-container .e-treegridexpand');\n childRecord = this.rowTemplate ? this.grid.getCurrentViewRecords()[rows[parseInt(i.toString(), 10)].rowIndex] :\n this.grid.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(expandElement) && childRecord.expanded) {\n removeClass([expandElement], 'e-treegridexpand');\n addClass([expandElement], 'e-treegridcollapse');\n }\n var cRow = [];\n var eRows = this.getRows();\n for (var i_1 = 0; i_1 < eRows.length; i_1++) {\n if (eRows[parseInt(i_1.toString(), 10)].querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1))) {\n cRow.push(eRows[parseInt(i_1.toString(), 10)]);\n }\n }\n if (cRow.length && childRecord.expanded) {\n this.collapseRemoteChild({ record: childRecord, rows: cRow }, false);\n }\n }\n }\n };\n /**\n * Method to sanitize html element\n *\n * @param {any} value - Specifies the html value to sanitize\n * @returns {any} Returns the sanitized html value\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeGrid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer && typeof (value) === 'string') {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * Updates the rows and cells\n *\n * @param {Object[]} records - Updates the given records\n * @param {HTMLTableRowElement[]} rows - Updates the given rows\n * @param {number} index - Updates the given cell index\n * @returns {void}\n */\n TreeGrid.prototype.updateRowAndCellElements = function (records, rows, index) {\n for (var i = 0; i < records.length; i++) {\n this.renderModule.cellRender({\n data: records[parseInt(i.toString(), 10)], cell: rows[parseInt(i.toString(), 10)].cells[parseInt(index.toString(), 10)],\n column: this.grid.getColumns()[this.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n if (this['action'] === 'indenting' || this['action'] === 'outdenting') {\n this.renderModule.RowModifier({\n data: records[parseInt(i.toString(), 10)], row: rows[parseInt(i.toString(), 10)]\n });\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.addListener = function () {\n this.on('updateResults', this.updateResultModel, this);\n this.grid.on('initial-end', this.afterGridRender, this);\n };\n TreeGrid.prototype.updateResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off('updateResults', this.updateResultModel);\n this.grid.off('initial-end', this.afterGridRender);\n };\n /**\n * Filters TreeGrid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the TreeGrid filters the records with exact match. if false, it filters\n * case insensitive records (uppercase and lowercase letters are treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent is set to true,\n * then filter ignores diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for filter column.\n * @param {string} actualOperator - Defines the actual filter operator for filter column.\n * @returns {void}\n */\n TreeGrid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n this.grid.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n };\n /**\n * Clears all the filtered rows of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearFiltering = function () {\n this.grid.clearFiltering();\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n this.grid.removeFilteredColsByField(field, isClearFilterBar);\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectRow = function (index, isToggle) {\n this.grid.selectRow(index, isToggle);\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n TreeGrid.prototype.selectRows = function (rowIndexes) {\n this.grid.selectRows(rowIndexes);\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSelection = function () {\n this.grid.clearSelection();\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n TreeGrid.prototype.copy = function (withHeader) {\n this.clipboardModule.copy(withHeader);\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n TreeGrid.prototype.paste = function (data, rowIndex, colIndex) {\n this.clipboardModule.paste(data, rowIndex, colIndex);\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectCell = function (cellIndex, isToggle) {\n this.grid.selectCell(cellIndex, isToggle);\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} - Returns selected row elements collection\n */\n TreeGrid.prototype.getSelectedRows = function () {\n return this.grid.getSelectedRows();\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns movable cell element from the indexes passed\n *\n\n */\n TreeGrid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets all the TreeGrid's movable table data rows.\n *\n * @returns {Element[]} - Returns element collection of movable rows\n *\n\n */\n TreeGrid.prototype.getMovableDataRows = function () {\n return this.grid.getDataRows();\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns movable row based on index passed\n *\n\n */\n TreeGrid.prototype.getMovableRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Gets the TreeGrid's movable content rows from frozen treegrid.\n *\n * @returns {Element[]}: Returns movable row element\n\n */\n TreeGrid.prototype.getMovableRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n *\n\n */\n TreeGrid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Gets the Tree Grid's frozen right content rows from frozen Tree Grid.\n *\n * @returns {Element[]} returns the element\n *\n\n */\n TreeGrid.prototype.getFrozenRightRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets all the Tree Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n *\n\n */\n TreeGrid.prototype.getFrozenRightDataRows = function () {\n return this.grid.getDataRows();\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n *\n\n */\n TreeGrid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n *\n\n */\n TreeGrid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n *\n\n */\n TreeGrid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n *\n\n */\n TreeGrid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n TreeGrid.prototype.getMovableColumnsCount = function () {\n return this.grid.getMovableColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n TreeGrid.prototype.getFrozenLeftColumnsCount = function () {\n return this.grid.getFrozenLeftColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n TreeGrid.prototype.getFrozenRightColumnsCount = function () {\n return this.grid.getFrozenRightColumnsCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenLeftColumns = function () {\n this.updateColumnModel(this.grid.getFrozenLeftColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenRightColumns = function () {\n this.updateColumnModel(this.grid.getFrozenRightColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n TreeGrid.prototype.getVisibleMovableCount = function () {\n return this.grid.getVisibleMovableCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n TreeGrid.prototype.getVisibleFrozenRightCount = function () {\n return this.grid.getVisibleFrozenRightCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n TreeGrid.prototype.getVisibleFrozenLeftCount = function () {\n return this.grid.getVisibleFrozenLeftCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getMovableColumns = function () {\n this.updateColumnModel(this.grid.getMovableColumns());\n return this.columnModel;\n };\n /**\n * Gets the number of frozen column in tree grid\n *\n * @hidden\n * @returns {number} - Returns frozen column count\n */\n TreeGrid.prototype.getFrozenColumns = function () {\n return this.getFrozenCount(this.columns, 0) + this.frozenColumns;\n };\n TreeGrid.prototype.getFrozenCount = function (cols, cnt) {\n for (var j = 0, len = cols.length; j < len; j++) {\n if (cols[parseInt(j.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(j.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(j.toString(), 10)].isFrozen) {\n cnt++;\n }\n }\n }\n return cnt;\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} - Returns selected rows index collection\n */\n TreeGrid.prototype.getSelectedRowIndexes = function () {\n return this.grid.getSelectedRowIndexes();\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {ISelectedCell[]} - Returns selected cell's index details\n */\n TreeGrid.prototype.getSelectedRowCellIndexes = function () {\n return this.grid.getSelectedRowCellIndexes();\n };\n /**\n * Gets the collection of selected records.\n *\n * @isGenericType true\n * @returns {Object[]} - Returns selected records collection\n */\n TreeGrid.prototype.getSelectedRecords = function () {\n return this.grid.getSelectedRecords();\n };\n /**\n * Gets the data module.\n *\n * @returns {{baseModule: Data, treeModule: DataManipulation}}: Returns grid and treegrid data module\n */\n TreeGrid.prototype.getDataModule = function () {\n return { baseModule: this.grid.getDataModule(), treeModule: this.dataModule };\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @param {number[]} fromIndexes - Source indexes of rows\n * @param {number} toIndex - Destination index of row\n * @param {string} position - Defines drop position as above or below or child\n * @returns {void}\n */\n TreeGrid.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex, position);\n };\n /**\n * Indents the record to one level of hierarchy. Moves the selected row as the last child of its previous row.\n *\n * @param {Object} record – specifies the record to do indented\n * @returns {void}\n */\n TreeGrid.prototype.indent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'indent');\n }\n };\n /**\n * Outdent the record to one level of hierarchy. Moves the selected row as sibling to its parent row.\n *\n * @param {Object} record – specifies the record to do outdented\n * @returns {void}\n */\n TreeGrid.prototype.outdent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'outdent');\n }\n };\n var TreeGrid_1;\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('Ellipsis')\n ], TreeGrid.prototype, \"clipMode\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"childMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"hasChildMapping\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"treeColumnIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"idMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"parentIdMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableCollapseAll\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"expandStateMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"query\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"cloneQuery\", void 0);\n __decorate([\n Property('AllPages')\n ], TreeGrid.prototype, \"printMode\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPaging\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"loadChildOnDemand\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], TreeGrid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"autoCheckHierarchy\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], TreeGrid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], TreeGrid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Property('USD')\n ], TreeGrid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], TreeGrid.prototype, \"sortSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], TreeGrid.prototype, \"aggregates\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], TreeGrid.prototype, \"editSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], TreeGrid.prototype, \"filterSettings\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], TreeGrid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property('Default')\n ], TreeGrid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property('Parent')\n ], TreeGrid.prototype, \"copyHierarchyMode\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"width\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], TreeGrid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], TreeGrid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property('All')\n ], TreeGrid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowSelection\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"checkboxChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrop\", void 0);\n __decorate([\n Property(-1)\n ], TreeGrid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeGrid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfExportComplete\", void 0);\n TreeGrid = TreeGrid_1 = __decorate([\n NotifyPropertyChanges\n ], TreeGrid);\n return TreeGrid;\n}(Component));\nexport { TreeGrid };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Configures column collection in Gantt.\n */\nvar Column = /** @class */ (function () {\n function Column(options) {\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n merge(this, options);\n }\n return Column;\n}());\nexport { Column };\n","import { TreeGrid } from '@syncfusion/ej2-treegrid';\nimport { createElement, isNullOrUndefined, getValue, extend, EventHandler, deleteObject, remove } from '@syncfusion/ej2-base';\nimport { setValue } from '@syncfusion/ej2-base';\nimport { Deferred, Query } from '@syncfusion/ej2-data';\nimport { Column as GanttColumn } from '../models/column';\nimport { isCountRequired } from './utils';\n/**\n * TreeGrid related code goes here\n *\n * @param {object} args .\n * @returns {void} .\n */\nvar GanttTreeGrid = /** @class */ (function () {\n function GanttTreeGrid(parent) {\n var _this = this;\n this.previousScroll = { top: 0, left: 0 };\n this.queryCellInfo = function (args) {\n _this.parent.trigger('queryCellInfo', args);\n };\n this.headerCellInfo = function (args) {\n _this.parent.trigger('headerCellInfo', args);\n };\n this.rowDataBound = function (args) {\n _this.parent.trigger('rowDataBound', args);\n };\n this.columnMenuOpen = function (args) {\n _this.parent.notify('columnMenuOpen', args);\n _this.parent.trigger('columnMenuOpen', args);\n document.querySelector(\".e-colmenu\").addEventListener('mousemove', function (event) {\n var filPopOptions = document.querySelector(\".e-filter-popup\");\n var filOptions = document.querySelector(\".e-filter-item\");\n if (!isNullOrUndefined(filPopOptions)) {\n if (!filOptions.classList.contains('e-focused')) {\n remove(_this.parent.filterModule.filterMenuElement);\n }\n }\n });\n };\n this.columnMenuClick = function (args) {\n _this.parent.trigger('columnMenuClick', args);\n };\n // eslint-disable-next-line valid-jsdoc\n this.objectEqualityChecker = function (old, current) {\n if (old) {\n var keys = Object.keys(old);\n var isEqual = true;\n var excludeKeys = ['Children', 'childRecords', 'taskData', 'uniqueID', 'parentItem', 'parentUniqueID', 'ganttProperties'];\n for (var i = 0; i < keys.length; i++) {\n /* eslint-disable-next-line */\n var oldKey = old[keys[i]] instanceof Date ? new Date(old[keys[i]]).getTime() : old[keys[i]];\n /* eslint-disable-next-line */\n var currentKey = current[keys[i]] instanceof Date ? new Date(current[keys[i]]).getTime() : current[keys[i]];\n if (oldKey !== currentKey && excludeKeys.indexOf(keys[i]) === -1) {\n _this.parent.modifiedRecords.push(current);\n isEqual = false;\n break;\n }\n }\n return isEqual;\n }\n else {\n return false;\n }\n };\n this.parent = parent;\n this.parent.treeGrid = new TreeGrid();\n this.parent.treeGrid.allowSelection = false;\n this.parent.treeGrid.allowKeyboard = this.parent.allowKeyboard;\n this.parent.treeGrid['${enableHtmlSanitizer}'] = this.parent.enableHtmlSanitizer;\n this.parent.treeGrid.enableImmutableMode = this.parent.enableImmutableMode;\n this.treeGridColumns = [];\n if (!this.parent.isLocaleChanged && this.parent.isLoad) {\n this.parent.previousGanttColumns = extend([], [], this.parent.columns, true);\n }\n this.validateGanttColumns();\n if (this.parent.isLocaleChanged) {\n this.parent.isLocaleChanged = false;\n }\n this.addEventListener();\n }\n GanttTreeGrid.prototype.addEventListener = function () {\n this.parent.on('renderPanels', this.createContainer, this);\n this.parent.on('chartScroll', this.updateScrollTop, this);\n this.parent.on('destroy', this.destroy, this);\n this.parent.treeGrid.on('renderReactTemplate', this.renderReactTemplate, this);\n };\n GanttTreeGrid.prototype.renderReactTemplate = function (args) {\n var portals = 'portals';\n this.parent[portals] = args;\n this.parent.renderTemplates();\n };\n GanttTreeGrid.prototype.createContainer = function () {\n //let height: number = this.parent.ganttHeight - this.parent.toolbarModule.element.offsetHeight - 46;\n this.treeGridElement = createElement('div', {\n id: 'treeGrid' + this.parent.element.id, className: 'e-gantt-tree-grid'\n // styles: 'height:' + height + 'px;'\n });\n var tempHeader = createElement('div', { className: 'e-gantt-temp-header' });\n this.parent.treeGridPane.appendChild(this.treeGridElement);\n this.treeGridElement.appendChild(tempHeader);\n this.parent.treeGridPane.classList.add('e-temp-content');\n };\n /**\n * Method to initiate TreeGrid\n *\n * @returns {void} .\n */\n GanttTreeGrid.prototype.renderTreeGrid = function () {\n this.composeProperties();\n this.bindEvents();\n var root = 'root';\n this.parent.treeGrid[root] = this.parent[root] ? this.parent[root] : this.parent;\n setValue('registeredTemplate', this.registeredTemplate, this.parent.treeGrid);\n var ref = 'viewContainerRef';\n setValue('viewContainerRef', this.parent[\"\" + ref], this.parent.treeGrid);\n this.parent.treeGrid.appendTo(this.treeGridElement);\n if (this.parent.treeGrid.grid && this.parent.toolbarModule && this.parent.isReact) {\n this.parent.treeGrid.grid.portals = this.parent.portals;\n }\n this.wireEvents();\n };\n GanttTreeGrid.prototype.composeProperties = function () {\n this.parent.treeGrid.hasChildMapping = this.parent.taskFields.hasChildMapping;\n this.parent.treeGrid.query = this.parent.query;\n this.parent.treeGrid.loadChildOnDemand = this.parent.loadChildOnDemand;\n this.parent.treeGrid['isFromGantt'] = true;\n this.parent.treeGrid.parentIdMapping = this.parent.taskFields.parentID;\n if (this.parent.taskFields.parentID) {\n this.parent.treeGrid.idMapping = this.parent.taskFields.id;\n }\n this.parent.treeGrid.showColumnMenu = this.parent.showColumnMenu;\n this.parent.treeGrid.enableCollapseAll = this.parent.collapseAllParentTasks;\n this.parent.treeGrid.columnMenuItems = this.parent.columnMenuItems;\n this.parent.treeGrid.enableRtl = this.parent.enableRtl;\n this.parent.treeGrid.childMapping = isNullOrUndefined(this.parent.taskFields.child) ? '' : this.parent.taskFields.child;\n this.parent.treeGrid.treeColumnIndex = this.parent.treeColumnIndex;\n this.parent.treeGrid.columns = this.treeGridColumns;\n this.parent.treeGrid.loadingIndicator = this.parent.loadingIndicator;\n this.parent.treeGrid.enableVirtualMaskRow = this.parent.enableVirtualMaskRow;\n if (this.parent.dataSource instanceof Object && isCountRequired(this.parent)) {\n // In order to bind the observable data at load time, hasChildMapping is necessary to be mapped.\n this.parent.treeGrid.hasChildMapping = 'isParent';\n var count = getValue('count', this.parent.dataSource);\n this.parent.treeGrid.dataSource = { result: this.parent.flatData, count: count };\n }\n else {\n if (!this.parent.treeGrid.loadChildOnDemand && this.parent.taskFields.hasChildMapping) {\n this.parent.autoCalculateDateScheduling = false;\n this.parent.treeGrid.dataSource = this.parent.dataSource;\n }\n else {\n this.parent.treeGrid.hasChildMapping = null;\n this.parent.treeGrid.dataSource = this.parent.flatData;\n }\n }\n this.parent.treeGrid.expandStateMapping = this.parent.taskFields.expandState;\n var isGantt = 'isGantt';\n this.parent.treeGrid[isGantt] = true;\n this.parent.treeGrid.rowHeight = this.parent.rowHeight;\n this.parent.treeGrid.gridLines = this.parent.gridLines;\n if (this.parent.searchSettings.fields.length !== 0 || this.parent.searchSettings.key !== '') {\n this.parent.treeGrid.searchSettings = this.parent.searchSettings;\n }\n var isJsComponent = 'isJsComponent';\n this.parent.treeGrid[isJsComponent] = true;\n var toolbarHeight = 0;\n if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {\n toolbarHeight = this.parent.toolbarModule.element.offsetHeight;\n }\n this.parent.treeGrid.height =\n this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['offsetHeight'] - (this.parent.flatData.length == 0 ? 0 : 19);\n };\n GanttTreeGrid.prototype.getContentDiv = function () {\n return this.treeGridElement.querySelector('.e-content');\n };\n GanttTreeGrid.prototype.getHeaderDiv = function () {\n return this.treeGridElement.querySelector('.e-headercontent');\n };\n GanttTreeGrid.prototype.getScrollbarWidth = function () {\n var outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll';\n outer.style.msOverflowStyle = 'scrollbar';\n var inner = document.createElement('div');\n outer.appendChild(inner);\n this.parent.element.appendChild(outer);\n var scrollbarWidth = (outer.offsetWidth - inner.offsetWidth);\n outer.parentNode.removeChild(outer);\n return scrollbarWidth;\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttTreeGrid.prototype.ensureScrollBar = function () {\n var content = this.getContentDiv();\n var headerDiv = this.getHeaderDiv();\n var scrollWidth = this.getScrollbarWidth();\n var isMobile = /Android|Mac|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n if (scrollWidth !== 0) {\n content.style.cssText += 'width: calc(100% + ' + (scrollWidth + 1) + 'px);'; //actual scrollbar width 17 px but here scrollbar width set to 16px hence adding increment of 1\n }\n else {\n content.classList.add('e-gantt-scroll-padding');\n }\n if (scrollWidth === 0 && isMobile) {\n headerDiv.style.cssText += 'width: calc(100% + 17px);';\n }\n };\n GanttTreeGrid.prototype.bindEvents = function () {\n this.parent.treeGrid.dataBound = this.dataBound.bind(this);\n this.parent.treeGrid.collapsing = this.collapsing.bind(this);\n this.parent.treeGrid.collapsed = this.collapsed.bind(this);\n this.parent.treeGrid.expanding = this.expanding.bind(this);\n this.parent.treeGrid.expanded = this.expanded.bind(this);\n this.parent.treeGrid.actionBegin = this.actionBegin.bind(this);\n this.parent.treeGrid.actionComplete = this.treeActionComplete.bind(this);\n this.parent.treeGrid.created = this.created.bind(this);\n this.parent.treeGrid.actionFailure = this.actionFailure.bind(this);\n this.parent.treeGrid.queryCellInfo = this.queryCellInfo.bind(this);\n this.parent.treeGrid.headerCellInfo = this.headerCellInfo.bind(this);\n this.parent.treeGrid.rowDataBound = this.rowDataBound.bind(this);\n this.parent.treeGrid.columnMenuOpen = this.columnMenuOpen.bind(this);\n this.parent.treeGrid.columnMenuClick = this.columnMenuClick.bind(this);\n this.parent.treeGrid.beforeDataBound = this.beforeDataBound.bind(this);\n this.parent.treeGrid.dataStateChange = this.dataStateChange.bind(this);\n };\n GanttTreeGrid.prototype.beforeDataBound = function (args) {\n this.parent.updatedRecords = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n getValue('virtualScrollModule.visualData', this.parent.treeGrid) : getValue('result', args);\n if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {\n this.parent.updateContentHeight(args);\n }\n setValue('contentModule.objectEqualityChecker', this.objectEqualityChecker, this.parent.treeGrid.grid);\n };\n GanttTreeGrid.prototype.dataBound = function (args) {\n this.ensureScrollBar();\n this.parent.treeDataBound(args);\n if (this.parent.isVirtualScroll) {\n if ((this.parent.enableVirtualMaskRow && this.parent.enableVirtualization) ||\n (this.parent.enableVirtualization && !this.parent.enableVirtualMaskRow && this.parent.loadingIndicator.indicatorType === \"Shimmer\") ||\n (this.parent.loadingIndicator.indicatorType === \"Shimmer\")) {\n this.parent.hideMaskRow();\n }\n this.parent.isVirtualScroll = false;\n }\n this.prevCurrentView = extend([], [], this.parent.currentViewData, true);\n };\n GanttTreeGrid.prototype.dataStateChange = function (args) {\n if (args.action && args.action.requestType === 'refresh') {\n this.parent.treeGrid.dataSource = {\n result: getValue('result', this.parent.treeGrid.dataSource),\n count: getValue('count', this.parent.treeGrid.dataSource)\n };\n }\n this.parent.trigger('dataStateChange', args);\n };\n GanttTreeGrid.prototype.collapsing = function (args) {\n // Collapsing event\n var callBackPromise = new Deferred();\n var collapsingArgs;\n var record = getValue('data', args);\n var recordLength = record.length;\n if (!this.parent.ganttChartModule.isExpandCollapseFromChart) {\n if (!isNullOrUndefined(recordLength)) {\n for (var i = 0; i < recordLength; i++) {\n collapsingArgs = this.createExpandCollapseArgs(args, record[i]);\n this.parent.ganttChartModule.collapseGanttRow(collapsingArgs);\n }\n setValue('cancel', getValue('cancel', collapsingArgs), args);\n }\n else {\n collapsingArgs = this.createExpandCollapseArgs(args, null);\n this.parent.ganttChartModule.collapseGanttRow(collapsingArgs);\n setValue('cancel', getValue('cancel', collapsingArgs), args);\n }\n }\n };\n GanttTreeGrid.prototype.expanding = function (args) {\n // Expanding event\n var callBackPromise = new Deferred();\n var expandingArgs;\n var record = getValue('data', args);\n var recordLength = record.length;\n if (!this.parent.ganttChartModule.isExpandCollapseFromChart) {\n if (!isNullOrUndefined(recordLength)) {\n for (var i = 0; i < recordLength; i++) {\n expandingArgs = this.createExpandCollapseArgs(args, record[i]);\n this.parent.ganttChartModule.expandGanttRow(expandingArgs);\n }\n setValue('cancel', getValue('cancel', expandingArgs), args);\n }\n else {\n expandingArgs = this.createExpandCollapseArgs(args, null);\n this.parent.ganttChartModule.expandGanttRow(expandingArgs);\n setValue('cancel', getValue('cancel', expandingArgs), args);\n }\n }\n };\n GanttTreeGrid.prototype.collapsed = function (args) {\n if (!this.parent.ganttChartModule.isExpandCollapseFromChart && !this.parent.isExpandCollapseLevelMethod) {\n var collapsedArgs = void 0;\n var record = getValue('data', args);\n var recordLength = record.length;\n if (!isNullOrUndefined(recordLength)) {\n for (var i = 0; i < recordLength; i++) {\n collapsedArgs = this.createExpandCollapseArgs(args, record[i]);\n this.parent.ganttChartModule.collapsedGanttRow(collapsedArgs);\n }\n }\n else {\n collapsedArgs = this.createExpandCollapseArgs(args, null);\n this.parent.ganttChartModule.collapsedGanttRow(collapsedArgs);\n }\n if (!this.parent.allowTaskbarOverlap && !this.parent.ganttChartModule.isCollapseAll && collapsedArgs['gridRow']) {\n collapsedArgs['gridRow'].style.height = collapsedArgs['chartRow'].style.height;\n this.parent.contentHeight = this.parent.enableRtl ? this.parent['element'].getElementsByClassName('e-content')[2].children[0]['offsetHeight'] :\n this.parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];\n document.getElementsByClassName('e-chart-rows-container')[0]['style'].height = this.parent.contentHeight + 'px';\n }\n }\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n this.parent.trigger('collapsed', args);\n };\n GanttTreeGrid.prototype.expanded = function (args) {\n if (!this.parent.ganttChartModule.isExpandCollapseFromChart && !this.parent.isExpandCollapseLevelMethod) {\n var expandedArgs = void 0;\n var record = getValue('data', args);\n var recordLength = record.length;\n if (!isNullOrUndefined(recordLength)) {\n for (var i = 0; i < recordLength; i++) {\n expandedArgs = this.createExpandCollapseArgs(args, record[i]);\n this.parent.ganttChartModule.expandedGanttRow(expandedArgs);\n }\n }\n else {\n expandedArgs = this.createExpandCollapseArgs(args, null);\n this.parent.ganttChartModule.expandedGanttRow(expandedArgs);\n }\n if (!this.parent.allowTaskbarOverlap && !this.parent.ganttChartModule.isExpandAll && args['row']) {\n args['row'].style.height = this.parent.rowHeight + 'px';\n this.parent.contentHeight = this.parent.enableRtl ? this.parent['element'].getElementsByClassName('e-content')[2].children[0]['offsetHeight'] :\n this.parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];\n document.getElementsByClassName('e-chart-rows-container')[0]['style'].height = this.parent.contentHeight + 'px';\n }\n }\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n this.parent.trigger('expanded', args);\n };\n GanttTreeGrid.prototype.actionBegin = function (args) {\n if (this.parent.undoRedoModule && (args.requestType == 'filtering' || args.requestType == 'searching' || args.requestType == 'sorting' || args.requestType == 'filterAfterOpen')) {\n this.parent.undoRedoModule['canUpdateIndex'] = false;\n }\n this.parent.notify('actionBegin', args);\n var flag = getValue('doubleClickTarget', this.parent.treeGrid.editModule);\n if (flag !== null) {\n setValue('doubleClickTarget', null, this.parent.treeGrid.editModule);\n }\n this.parent.trigger('actionBegin', args);\n if (args.requestType != \"virtualscroll\" && args.type != \"edit\" && args.requestType != \"beginEdit\") {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.showMaskRow();\n }\n else {\n this.parent.showSpinner();\n }\n }\n }; // eslint-disable-next-line\n GanttTreeGrid.prototype.created = function (args) {\n this.updateKeyConfigSettings();\n };\n GanttTreeGrid.prototype.actionFailure = function (args) {\n this.parent.trigger('actionFailure', args);\n };\n GanttTreeGrid.prototype.createExpandCollapseArgs = function (args, currentRecord) {\n var chartRow;\n var record = getValue('data', args);\n var recordLength = record.length;\n if (!isNullOrUndefined(recordLength)) {\n var gridRow = getValue('row', args);\n chartRow = this.parent.ganttChartModule.getChartRows()[this.parent.currentViewData.indexOf(currentRecord)];\n var eventArgs = { data: currentRecord, gridRow: gridRow, chartRow: chartRow, cancel: false };\n return eventArgs;\n }\n else {\n var record_1 = getValue('data', args);\n var gridRow = getValue('row', args);\n chartRow = this.parent.ganttChartModule.getChartRows()[this.parent.currentViewData.indexOf(record_1)];\n var eventArgs = { data: record_1, gridRow: gridRow, chartRow: chartRow, cancel: false };\n return eventArgs;\n }\n };\n GanttTreeGrid.prototype.treeActionComplete = function (args) {\n var _this = this;\n var updatedArgs = extend({}, args);\n if (getValue('requestType', args) === 'reorder') {\n if (this.parent.undoRedoModule && !this.parent.undoRedoModule['isFromUndoRedo'] && this.parent['isUndoRedoItemPresent']('ColumnReorder')) {\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['disableRedo']();\n }\n this.parent.undoRedoModule['createUndoCollection']();\n var record = {};\n record['action'] = 'ColumnReorder';\n record['fromIndex'] = extend([], [], [args['fromIndex']], true)[0];\n record['toIndex'] = extend([], [], [args['toIndex']], true)[0];\n record['toColumn'] = extend([], [], [this.parent.treeGrid.columns[args['toIndex']]['field']], true)[0];\n record['fromColumn'] = extend([], [], [this.parent.treeGrid.columns[args['fromIndex']]['field']], true)[0];\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = record;\n }\n }\n if (getValue('requestType', args) === 'columnstate') {\n if (this.parent.undoRedoModule && !this.parent.undoRedoModule['isFromUndoRedo'] && this.parent['isUndoRedoItemPresent']('ColumnState')) {\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['disableRedo']();\n }\n this.parent.undoRedoModule['createUndoCollection']();\n var record = {};\n record['action'] = 'ColumnState';\n record['showhideColumns'] = extend([], [], args['columns'], true);\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = record;\n }\n }\n if (getValue('requestType', args) === 'sorting') {\n if (this.parent.undoRedoModule && this.parent['isUndoRedoItemPresent']('Sorting')) {\n if (!this.parent.undoRedoModule['isFromUndoRedo']) {\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['disableRedo']();\n }\n this.parent.undoRedoModule['createUndoCollection']();\n var record = {};\n record['action'] = 'Sorting';\n record['sortColumns'] = [];\n record['sortColumns'] = this.parent.undoRedoModule['previousSortedColumns'];\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = record;\n }\n this.parent.undoRedoModule['previousSortedColumns'] = this.parent.treeGrid.sortSettings.columns;\n }\n this.parent.notify('updateModel', {});\n deleteObject(updatedArgs, 'isFrozen');\n }\n else if (getValue('requestType', args) === 'filtering') {\n if (this.parent.undoRedoModule && !this.parent.undoRedoModule['isFromUndoRedo'] && this.parent['isUndoRedoItemPresent']('Filtering')) {\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['disableRedo']();\n }\n this.parent.undoRedoModule['createUndoCollection']();\n var record = {};\n record['action'] = 'Filtering';\n record['filteredColumns'] = extend([], [], args['columns'], true);\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = record;\n }\n this.parent.notify('updateModel', {});\n var focussedElement = this.parent.element.querySelector('.e-treegrid');\n focussedElement.focus();\n }\n else if (getValue('type', args) === 'save') {\n if (this.parent.editModule && this.parent.editModule.cellEditModule) {\n var data = getValue('data', args);\n if (!isNullOrUndefined(data) && !isNullOrUndefined(this.parent.getTaskByUniqueID(data.uniqueID))) {\n /* eslint-disable-next-line */\n this.parent.getTaskByUniqueID(data.uniqueID).taskData[this.parent.taskFields.duration] = data.taskData[this.parent.taskFields.duration];\n if (!isNullOrUndefined(data.taskData[this.parent.taskFields.resourceInfo])) {\n /* eslint-disable-next-line */\n this.parent.getTaskByUniqueID(data.uniqueID).taskData[this.parent.taskFields.resourceInfo] = data.taskData[this.parent.taskFields.resourceInfo];\n }\n }\n this.parent.editModule.cellEditModule.initiateCellEdit(args, this.currentEditRow);\n this.parent.editModule.cellEditModule.isCellEdit = false;\n this.currentEditRow = {};\n }\n }\n if (getValue('requestType', args) === 'filterAfterOpen') {\n this.parent.notify('actionComplete', args);\n }\n if (getValue('requestType', args) === 'searching') {\n if (this.parent.undoRedoModule && this.parent['isUndoRedoItemPresent']('Search')) {\n if (!this.parent.undoRedoModule['isFromUndoRedo']) {\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['disableRedo']();\n }\n this.parent.undoRedoModule['createUndoCollection']();\n var record = {};\n record['action'] = 'Search';\n record['searchString'] = this.parent.undoRedoModule['searchString'];\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = record;\n }\n this.parent.undoRedoModule['searchString'] = this.parent.treeGrid.searchSettings.key;\n }\n this.parent.notify('actionComplete', args);\n }\n if (!isNullOrUndefined(getValue('batchChanges', args)) && !isNullOrUndefined(this.parent.toolbarModule)) {\n this.parent.toolbarModule.refreshToolbarItems();\n }\n if (this.parent.isCancelled) {\n setValue('requestType', 'cancel', updatedArgs);\n setValue('action', 'CellEditing', updatedArgs);\n this.parent.isCancelled = false;\n }\n if (getValue('requestType', args) === 'refresh' && isNullOrUndefined(getValue('type', args)) && this.parent.addDeleteRecord) {\n if (this.parent.selectedRowIndex != -1) {\n this.parent.selectRow(this.parent.selectedRowIndex);\n if (this.parent.selectedRowIndex > this.parent.currentViewData.length - 1) {\n this.parent.selectedRowIndex = -1;\n }\n }\n else {\n var indexvalue = 0;\n this.parent.currentViewData.map(function (data, index) {\n if (!isNullOrUndefined(_this.parent.currentSelection) && ((data.ganttProperties.taskId === _this.parent.currentSelection[_this.parent.taskFields.id])) || (!isNullOrUndefined(_this.parent.currentSelection)) && (data.ganttProperties.taskId === _this.parent.currentSelection.taskId)) {\n indexvalue = index;\n }\n });\n this.addedRecord = true;\n this.parent.selectRow((isNullOrUndefined(indexvalue) ? 0 : indexvalue));\n }\n this.parent.addDeleteRecord = false;\n }\n if (this.parent.undoRedoModule) {\n this.parent.undoRedoModule['isFromUndoRedo'] = false;\n }\n this.parent.trigger('actionComplete', updatedArgs);\n if (!this.parent.allowTaskbarOverlap && this.parent.showOverAllocation) {\n for (var i = 0; i < this.parent.currentViewData.length; i++) {\n if (this.parent.currentViewData[i].hasChildRecords && !this.parent.currentViewData[i].expanded) {\n this.parent.chartRowsModule.updateDragDropRecords(this.parent.currentViewData[i]);\n }\n }\n this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);\n }\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n };\n GanttTreeGrid.prototype.updateKeyConfigSettings = function () {\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.delete;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.insert;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.upArrow;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.downArrow;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.ctrlHome;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.ctrlEnd;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.enter;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.tab;\n delete this.parent.treeGrid.grid.keyboardModule.keyConfigs.shiftTab;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.enter;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.upArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.downArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.ctrlShiftUpArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.ctrlShiftDownArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.ctrlUpArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.ctrlDownArrow;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.tab;\n delete this.parent.treeGrid.keyboardModule.keyConfigs.shiftTab;\n };\n /**\n * Method to bind internal events on TreeGrid element\n *\n * @returns {void} .\n */\n GanttTreeGrid.prototype.wireEvents = function () {\n var content = this.parent.treeGrid.element.querySelector('.e-content');\n if (content) {\n EventHandler.add(content, 'scroll', this.scrollHandler, this);\n }\n if (this.parent.isAdaptive) {\n EventHandler.add(this.parent.treeGridPane, 'click', this.treeGridClickHandler, this);\n }\n };\n GanttTreeGrid.prototype.unWireEvents = function () {\n var content = this.parent.treeGrid.element &&\n this.parent.treeGrid.element.querySelector('.e-content');\n if (content) {\n EventHandler.remove(content, 'scroll', this.scrollHandler);\n }\n if (this.parent.isAdaptive) {\n EventHandler.remove(this.parent.treeGridPane, 'click', this.treeGridClickHandler);\n }\n };\n // eslint-disable-next-line\n GanttTreeGrid.prototype.scrollHandler = function (e) {\n var content = this.parent.treeGrid.element.querySelector('.e-content');\n if (content.scrollTop !== this.previousScroll.top) {\n this.parent.notify('grid-scroll', { top: content.scrollTop });\n }\n this.previousScroll.top = content.scrollTop;\n if (this.parent.contextMenuModule && this.parent.contextMenuModule.isOpen) {\n this.parent.contextMenuModule.contextMenu.close();\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n GanttTreeGrid.prototype.validateGanttColumns = function () {\n var ganttObj = this.parent;\n var length = ganttObj.columns.length;\n var tasks = this.parent.taskFields;\n this.parent.columnMapping = {};\n this.parent.columnByField = {};\n this.parent.customColumns = [];\n var tasksMapping = ['id', 'name', 'startDate', 'endDate', 'duration', 'dependency',\n 'progress', 'baselineStartDate', 'baselineEndDate', 'resourceInfo', 'notes', 'work', 'manual', 'type', 'milestone', 'segments'];\n var _loop_1 = function (i) {\n var column = {};\n if (typeof ganttObj.columns[i] === 'string') {\n column.field = ganttObj.columns[i];\n }\n else {\n column = ganttObj.columns[i];\n }\n var columnName = [];\n if (tasksMapping.length > 0) {\n columnName = tasksMapping.filter(function (name) {\n return column.field === tasks[name];\n });\n }\n if (columnName.length === 0) {\n if (column.field === this_1.parent.resourceFields.group) {\n return \"continue\";\n }\n this_1.parent.customColumns.push(column.field);\n column.headerText = column.headerText ? column.headerText : column.field;\n column.width = column.width ? column.width : 150;\n column.editType = column.editType ? column.editType : 'stringedit';\n column.type = column.type ? column.type : 'string';\n this_1.bindTreeGridColumnProperties(column, true);\n return \"continue\";\n }\n else {\n var index = tasksMapping.indexOf(columnName[0]);\n tasksMapping.splice(index, 1);\n this_1.createTreeGridColumn(column, true);\n this_1.parent.columnMapping[columnName[0]] = column.field;\n }\n };\n var this_1 = this;\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n /** Create default columns with task settings property */\n for (var j = 0; j < tasksMapping.length; j++) {\n var column = {};\n if (!isNullOrUndefined(tasks[tasksMapping[j]])) {\n column.field = tasks[tasksMapping[j]];\n this.createTreeGridColumn(column, length === 0);\n this.parent.columnMapping[tasksMapping[j]] = column.field;\n }\n }\n if (this.parent.viewType !== 'ProjectView') {\n var column = {};\n this.composeUniqueIDColumn(column);\n this.createTreeGridColumn(column, true);\n }\n };\n /**\n *\n * @param {GanttColumnModel} column .\n * @param {boolean} isDefined .\n * @returns {void} .\n */\n GanttTreeGrid.prototype.createTreeGridColumn = function (column, isDefined) {\n var taskSettings = this.parent.taskFields;\n var previousColumn = this.parent.previousGanttColumns.filter(function (prevcolumn) {\n return column.field == prevcolumn.field;\n })[0];\n column.disableHtmlEncode = !isNullOrUndefined(column.disableHtmlEncode) ? column.disableHtmlEncode : this.parent.disableHtmlEncode;\n if (taskSettings.id !== column.field) {\n column.clipMode = column.clipMode ? column.clipMode : 'EllipsisWithTooltip';\n }\n if (taskSettings.id === column.field) {\n /** Id column */\n this.composeIDColumn(column);\n }\n else if (taskSettings.name === column.field) {\n /** Name column */\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('name');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('name');\n }\n column.width = column.width ? column.width : 150;\n column.editType = column.editType ? column.editType : 'stringedit';\n column.type = column.type ? column.type : 'string';\n }\n else if (taskSettings.startDate === column.field) {\n /** Name column */\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('startDate');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('startDate');\n }\n column.editType = column.editType ? column.editType :\n this.parent.getDateFormat().toLowerCase().indexOf('hh') !== -1 ? 'datetimepickeredit' : 'datepickeredit';\n column.format = column.format ? column.format : { type: 'date', format: this.parent.getDateFormat() };\n column.width = column.width ? column.width : 150;\n if (column.edit && column.edit.params) {\n column.edit.params['renderDayCell'] = this.parent.renderWorkingDayCell.bind(this.parent);\n }\n else {\n if (column.edit) {\n column.edit.params = { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) };\n }\n else {\n column.edit = { params: { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) } };\n }\n }\n }\n else if (taskSettings.endDate === column.field) {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('endDate');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('endDate');\n }\n column.format = column.format ? column.format : { type: 'date', format: this.parent.getDateFormat() };\n column.editType = column.editType ? column.editType :\n this.parent.getDateFormat().toLowerCase().indexOf('hh') !== -1 ? 'datetimepickeredit' : 'datepickeredit';\n column.width = column.width ? column.width : 150;\n if (column.edit && column.edit.params) {\n column.edit.params['renderDayCell'] = this.parent.renderWorkingDayCell.bind(this.parent);\n }\n else {\n if (column.edit) {\n column.edit.params = { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) };\n }\n else {\n column.edit = { params: { renderDayCell: this.parent.renderWorkingDayCell.bind(this.parent) } };\n }\n }\n }\n else if (taskSettings.duration === column.field) {\n column.width = column.width ? column.width : 150;\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('duration');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('duration');\n }\n column.valueAccessor = column.valueAccessor ? column.valueAccessor : !isNullOrUndefined(column.edit) && !isNullOrUndefined(column.edit.read) ? null :\n this.durationValueAccessor.bind(this);\n column.editType = column.editType ? column.editType : 'stringedit';\n column.type = column.type ? column.type : 'string';\n }\n else if (taskSettings.progress === column.field) {\n this.composeProgressColumn(column);\n }\n else if (taskSettings.dependency === column.field) {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('dependency');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('dependency');\n }\n column.width = column.width ? column.width : 150;\n column.editType = column.editType ? column.editType : 'stringedit';\n column.type = 'string';\n column.allowFiltering = column.allowFiltering === false ? false : true;\n }\n else if (taskSettings.resourceInfo === column.field) {\n this.composeResourceColumn(column);\n }\n else if (taskSettings.notes === column.field) {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('notes');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('notes');\n }\n column.width = column.width ? column.width : 150;\n column.editType = column.editType ? column.editType : 'stringedit';\n if (!this.parent.showInlineNotes) {\n if (!column.template) {\n column.template = '
    ' +\n '
    ';\n }\n }\n }\n else if (taskSettings.baselineStartDate === column.field ||\n taskSettings.baselineEndDate === column.field) {\n var colName = (taskSettings.baselineEndDate === column.field) ? 'baselineEndDate' :\n 'baselineStartDate';\n column.width = column.width ? column.width : 150;\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant(colName);\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant(colName);\n }\n column.format = column.format ? column.format : { type: 'date', format: this.parent.getDateFormat() };\n column.editType = column.editType ? column.editType :\n this.parent.getDateFormat().toLowerCase().indexOf('hh') !== -1 ? 'datetimepickeredit' : 'datepickeredit';\n }\n else if (taskSettings.work === column.field) {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('work');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('work');\n }\n column.width = column.width ? column.width : 150;\n column.valueAccessor = column.valueAccessor ? column.valueAccessor : this.workValueAccessor.bind(this);\n column.editType = column.editType ? column.editType : 'numericedit';\n }\n else if (taskSettings.type === column.field) {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('taskType');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('taskType');\n }\n column.width = column.width ? column.width : 150;\n //column.type = 'string';\n column.editType = 'dropdownedit';\n column.valueAccessor = column.valueAccessor ? column.valueAccessor : this.taskTypeValueAccessor.bind(this);\n }\n else if (taskSettings.manual === column.field && this.parent.taskMode === 'Custom') {\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('taskMode');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('taskMode');\n }\n column.width = column.width ? column.width : 120;\n column.editType = column.editType ? column.editType : 'dropdownedit';\n column.valueAccessor = column.valueAccessor ? column.valueAccessor : this.modeValueAccessor.bind(this);\n column.edit = {\n params: {\n query: new Query(),\n dataSource: [\n { id: 1, text: this.parent.localeObj.getConstant('manual'), value: true },\n { id: 2, text: this.parent.localeObj.getConstant('auto'), value: false }\n ],\n fields: { text: 'text', value: 'value' }\n }\n };\n }\n this.bindTreeGridColumnProperties(column, isDefined);\n };\n /**\n * Compose Resource columns\n *\n * @param {GanttColumnModel} column .\n * @returns {void} .\n */\n GanttTreeGrid.prototype.composeResourceColumn = function (column) {\n var previousColumn = this.parent.previousGanttColumns.filter(function (prevcolumn) {\n return column.field == prevcolumn.field;\n })[0];\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('resourceName');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('resourceName');\n }\n column.width = column.width ? column.width : 150;\n column.type = 'string';\n column.valueAccessor = column.valueAccessor ? column.valueAccessor : this.resourceValueAccessor.bind(this);\n column.allowFiltering = column.allowFiltering === false ? false : true;\n };\n /**\n * @param {IGanttData} data .\n * @returns {object} .\n * @private\n */\n GanttTreeGrid.prototype.getResourceIds = function (data) {\n var value = getValue(this.parent.taskFields.resourceInfo, data.taskData);\n var id = [];\n if (!isNullOrUndefined(value)) {\n for (var i = 0; i < value.length; i++) {\n id.push(typeof value[i] === 'object' ? value[i][this.parent.resourceFields.id] : value[i]);\n }\n return id;\n }\n else {\n return value;\n }\n };\n /**\n * Create Id column\n *\n * @param {GanttColumnModel} column .\n * @returns {void} .\n */\n GanttTreeGrid.prototype.composeIDColumn = function (column) {\n var isProjectView = this.parent.viewType === 'ProjectView';\n var lengthDataSource = this.parent.dataSource ? this.parent.dataSource['length'] : 0;\n var taskIDName;\n column.isPrimaryKey = isProjectView ? true : false;\n if (this.parent.isLocaleChanged) {\n var previousColumn = this.parent.previousGanttColumns.filter(function (prevcolumn) {\n return column.field == prevcolumn.field;\n })[0];\n if (previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('id');\n }\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('id');\n }\n column.width = column.width ? column.width : 100;\n for (var i = 0; i < lengthDataSource; i++) {\n if (!isNullOrUndefined(this.parent.dataSource[i][this.parent.taskFields.id])) {\n taskIDName = this.parent.dataSource[i][this.parent.taskFields.id];\n break;\n }\n }\n if (typeof (taskIDName) === \"string\" || isNullOrUndefined(taskIDName)) {\n if (this.parent.viewType === 'ResourceView') {\n column.allowEditing = column.allowEditing ? column.allowEditing : false;\n }\n else {\n column.allowEditing = column.allowEditing ? column.allowEditing : true;\n }\n column.editType = column.editType ? column.editType : 'stringedit';\n }\n else {\n column.allowEditing = column.allowEditing ? column.allowEditing : false;\n column.editType = column.editType ? column.editType : 'numericedit';\n }\n column.valueAccessor = isProjectView ? null : this.idValueAccessor.bind(this);\n };\n GanttTreeGrid.prototype.composeUniqueIDColumn = function (column) {\n column.field = 'rowUniqueID';\n column.isPrimaryKey = true;\n column.headerText = 'UniqueID';\n column.allowEditing = false;\n column.visible = false;\n };\n /**\n * Create progress column\n *\n * @param {GanttColumnModel} column .\n * @returns {void} .\n */\n GanttTreeGrid.prototype.composeProgressColumn = function (column) {\n var previousColumn = this.parent.previousGanttColumns.filter(function (prevcolumn) {\n return column.field == prevcolumn.field;\n })[0];\n if (this.parent.isLocaleChanged && previousColumn) {\n column.headerText = previousColumn.headerText ? previousColumn.headerText : this.parent.localeObj.getConstant('progress');\n }\n else {\n column.headerText = column.headerText ? column.headerText : this.parent.localeObj.getConstant('progress');\n }\n column.width = column.width ? column.width : 150;\n column.editType = column.editType ? column.editType : 'numericedit';\n };\n /**\n * @param {GanttColumnModel} newGanttColumn .\n * @param {boolean} isDefined .\n * @returns {void} .\n */\n GanttTreeGrid.prototype.bindTreeGridColumnProperties = function (newGanttColumn, isDefined) {\n var treeGridColumn = {};\n var ganttColumn = {};\n for (var _i = 0, _a = Object.keys(newGanttColumn); _i < _a.length; _i++) {\n var prop = _a[_i];\n treeGridColumn[prop] = ganttColumn[prop] = newGanttColumn[prop];\n }\n this.parent.columnByField[ganttColumn.field] = ganttColumn;\n this.parent.ganttColumns.push(new GanttColumn(ganttColumn));\n if (isDefined) {\n this.treeGridColumns.push(treeGridColumn);\n }\n }; // eslint-disable-next-line\n GanttTreeGrid.prototype.durationValueAccessor = function (field, data, column) {\n if (!isNullOrUndefined(data) && !isNullOrUndefined(data.ganttProperties)) {\n var ganttProp = data.ganttProperties;\n return this.parent.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);\n }\n else if (!this.parent.loadChildOnDemand && this.parent.taskFields.hasChildMapping) {\n return this.parent.dataOperation.getDurationString(parseInt(data[this.parent.taskFields.duration]), this.parent.durationUnit);\n }\n return '';\n }; // eslint-disable-next-line\n GanttTreeGrid.prototype.resourceValueAccessor = function (field, data, column) {\n var ganttProp = data.ganttProperties;\n if (!isNullOrUndefined(ganttProp)) {\n return ganttProp.resourceNames;\n }\n return '';\n };\n GanttTreeGrid.prototype.workValueAccessor = function (field, data, column) {\n var ganttProp = data.ganttProperties;\n if (!isNullOrUndefined(ganttProp)) {\n return this.parent.dataOperation.getWorkString(ganttProp.work, ganttProp.workUnit);\n }\n return '';\n };\n GanttTreeGrid.prototype.taskTypeValueAccessor = function (field, data, column) {\n var ganttProp = data.ganttProperties;\n if (!isNullOrUndefined(ganttProp)) {\n return ganttProp.taskType;\n }\n return '';\n };\n GanttTreeGrid.prototype.modeValueAccessor = function (field, data, column) {\n if (data[field]) {\n return 'Manual';\n }\n else {\n return 'Auto';\n }\n };\n GanttTreeGrid.prototype.idValueAccessor = function (field, data, column) {\n return data.level === 0 ? 'R-' + data.ganttProperties.taskId : 'T-' + data.ganttProperties.taskId;\n };\n GanttTreeGrid.prototype.updateScrollTop = function (args) {\n var newScrollTop;\n newScrollTop = getValue('top', args);\n this.treeGridElement.querySelector('.e-content').scrollTop = newScrollTop;\n this.previousScroll.top = this.treeGridElement.querySelector('.e-content').scrollTop;\n };\n GanttTreeGrid.prototype.treeGridClickHandler = function (e) {\n this.parent.notify('treeGridClick', e);\n };\n GanttTreeGrid.prototype.removeEventListener = function () {\n this.parent.off('renderPanels', this.createContainer);\n this.parent.off('chartScroll', this.updateScrollTop);\n this.parent.off('destroy', this.destroy);\n this.parent.treeGrid.off('reactTemplateRender', this.renderReactTemplate);\n };\n GanttTreeGrid.prototype.destroy = function () {\n this.removeEventListener();\n this.unWireEvents();\n if (this.parent.treeGrid.element) {\n this.parent.treeGrid.destroy();\n }\n };\n return GanttTreeGrid;\n}());\nexport { GanttTreeGrid };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Property, Collection } from '@syncfusion/ej2-base';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Gantt.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Property } from \"@syncfusion/ej2-base\";\n/**\n * Configures the Loading Indicator of the Gantt.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Defines working time of day in project.\n */\nvar DayWorkingTime = /** @class */ (function (_super) {\n __extends(DayWorkingTime, _super);\n function DayWorkingTime() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], DayWorkingTime.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], DayWorkingTime.prototype, \"to\", void 0);\n return DayWorkingTime;\n}(ChildProperty));\nexport { DayWorkingTime };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Defines holidays of project.\n */\nvar Holiday = /** @class */ (function (_super) {\n __extends(Holiday, _super);\n function Holiday() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Holiday.prototype, \"from\", void 0);\n __decorate([\n Property(null)\n ], Holiday.prototype, \"to\", void 0);\n __decorate([\n Property(null)\n ], Holiday.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], Holiday.prototype, \"cssClass\", void 0);\n return Holiday;\n}(ChildProperty));\nexport { Holiday };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Defines event marker collection in Gantt.\n */\nvar EventMarker = /** @class */ (function (_super) {\n __extends(EventMarker, _super);\n function EventMarker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], EventMarker.prototype, \"day\", void 0);\n __decorate([\n Property(null)\n ], EventMarker.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], EventMarker.prototype, \"cssClass\", void 0);\n return EventMarker;\n}(ChildProperty));\nexport { EventMarker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Defines mapping property to get task details from data source.\n */\nvar TaskFields = /** @class */ (function (_super) {\n __extends(TaskFields, _super);\n function TaskFields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"id\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"name\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"hasChildMapping\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"startDate\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"endDate\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"dependency\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"progress\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"child\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"milestone\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"duration\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"durationUnit\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"baselineStartDate\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"baselineEndDate\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"resourceInfo\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"expandState\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"indicators\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"notes\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"work\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"manual\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"segments\", void 0);\n __decorate([\n Property(null)\n ], TaskFields.prototype, \"segmentId\", void 0);\n return TaskFields;\n}(ChildProperty));\nexport { TaskFields };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex } from '@syncfusion/ej2-base';\n/**\n * Configures timeline settings of Gantt.\n */\nvar TimelineTierSettings = /** @class */ (function (_super) {\n __extends(TimelineTierSettings, _super);\n function TimelineTierSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TimelineTierSettings.prototype, \"format\", void 0);\n __decorate([\n Property('None')\n ], TimelineTierSettings.prototype, \"unit\", void 0);\n __decorate([\n Property(1)\n ], TimelineTierSettings.prototype, \"count\", void 0);\n __decorate([\n Property(null)\n ], TimelineTierSettings.prototype, \"formatter\", void 0);\n return TimelineTierSettings;\n}(ChildProperty));\nexport { TimelineTierSettings };\n/**\n * Configures the timeline settings property in the Gantt.\n */\nvar TimelineSettings = /** @class */ (function (_super) {\n __extends(TimelineSettings, _super);\n function TimelineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Week')\n ], TimelineSettings.prototype, \"timelineViewMode\", void 0);\n __decorate([\n Complex({}, TimelineTierSettings)\n ], TimelineSettings.prototype, \"topTier\", void 0);\n __decorate([\n Complex({}, TimelineTierSettings)\n ], TimelineSettings.prototype, \"bottomTier\", void 0);\n __decorate([\n Property(33)\n ], TimelineSettings.prototype, \"timelineUnitSize\", void 0);\n __decorate([\n Property(0)\n ], TimelineSettings.prototype, \"weekStartDay\", void 0);\n __decorate([\n Property(null)\n ], TimelineSettings.prototype, \"weekendBackground\", void 0);\n __decorate([\n Property(true)\n ], TimelineSettings.prototype, \"showTooltip\", void 0);\n __decorate([\n Property(true)\n ], TimelineSettings.prototype, \"updateTimescaleView\", void 0);\n return TimelineSettings;\n}(ChildProperty));\nexport { TimelineSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures edit settings of Gantt.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Auto')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowTaskbarEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the selection behavior of the Gantt.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Defines labels for task, this will be placed right, left and inner side of taskbar.\n */\nvar LabelSettings = /** @class */ (function (_super) {\n __extends(LabelSettings, _super);\n function LabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LabelSettings.prototype, \"rightLabel\", void 0);\n __decorate([\n Property(null)\n ], LabelSettings.prototype, \"leftLabel\", void 0);\n __decorate([\n Property(null)\n ], LabelSettings.prototype, \"taskLabel\", void 0);\n return LabelSettings;\n}(ChildProperty));\nexport { LabelSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures tooltip settings for Gantt.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"showTooltip\", void 0);\n __decorate([\n Property()\n ], TooltipSettings.prototype, \"taskbar\", void 0);\n __decorate([\n Property()\n ], TooltipSettings.prototype, \"baseline\", void 0);\n __decorate([\n Property()\n ], TooltipSettings.prototype, \"connectorLine\", void 0);\n __decorate([\n Property()\n ], TooltipSettings.prototype, \"editing\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Collection } from '@syncfusion/ej2-base';\nimport { Predicate } from '@syncfusion/ej2-grids';\n/**\n * Configures the filtering behavior of the Gantt.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('Menu')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property('Parent')\n ], FilterSettings.prototype, \"hierarchyMode\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures splitter position and splitter bar.\n */\nvar SplitterSettings = /** @class */ (function (_super) {\n __extends(SplitterSettings, _super);\n function SplitterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], SplitterSettings.prototype, \"position\", void 0);\n __decorate([\n Property(-1)\n ], SplitterSettings.prototype, \"columnIndex\", void 0);\n __decorate([\n Property(4)\n ], SplitterSettings.prototype, \"separatorSize\", void 0);\n __decorate([\n Property(null)\n ], SplitterSettings.prototype, \"minimum\", void 0);\n __decorate([\n Property('Default')\n ], SplitterSettings.prototype, \"view\", void 0);\n return SplitterSettings;\n}(ChildProperty));\nexport { SplitterSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Defines mapping property to get resource details from resource collection.\n */\nvar ResourceFields = /** @class */ (function (_super) {\n __extends(ResourceFields, _super);\n function ResourceFields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ResourceFields.prototype, \"id\", void 0);\n __decorate([\n Property(null)\n ], ResourceFields.prototype, \"name\", void 0);\n __decorate([\n Property(null)\n ], ResourceFields.prototype, \"unit\", void 0);\n __decorate([\n Property(null)\n ], ResourceFields.prototype, \"group\", void 0);\n return ResourceFields;\n}(ChildProperty));\nexport { ResourceFields };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the searching behavior of the Gantt.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('Parent')\n ], SearchSettings.prototype, \"hierarchyMode\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement, isNullOrUndefined, extend, compile, getValue, setValue, SanitizeHtmlHelper, append } from '@syncfusion/ej2-base';\nimport { formatUnit, addClass } from '@syncfusion/ej2-base';\nimport { isScheduledTask } from '../base/utils';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as cls from '../base/css-constants';\nimport { DateProcessor } from '../base/date-processor';\n/**\n * To render the chart rows in Gantt\n */\nvar ChartRows = /** @class */ (function (_super) {\n __extends(ChartRows, _super);\n function ChartRows(ganttObj) {\n var _this = _super.call(this, ganttObj) || this;\n _this.taskBarHeight = 0;\n _this.milestoneHeight = 0;\n _this.milesStoneRadius = 0;\n _this.baselineTop = 0;\n _this.baselineHeight = 8;\n _this.touchLeftConnectorpoint = '';\n _this.touchRightConnectorpoint = '';\n _this.dropSplit = false;\n _this.refreshedTr = [];\n _this.refreshedData = [];\n _this.isUpdated = true;\n _this.taskBaselineTemplateNode = null;\n _this.parent = ganttObj;\n _this.initPublicProp();\n _this.addEventListener();\n return _this;\n }\n /**\n * To initialize the public property.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.initPublicProp = function () {\n this.ganttChartTableBody = null;\n };\n ChartRows.prototype.addEventListener = function () {\n this.parent.on('renderPanels', this.createChartTable, this);\n this.parent.on('dataReady', this.initiateTemplates, this);\n this.parent.on('destroy', this.destroy, this);\n };\n ChartRows.prototype.refreshChartByTimeline = function () {\n this.taskTable.style.width = formatUnit(this.parent.enableTimelineVirtualization ? this.parent.timelineModule.wholeTimelineWidth : this.parent.timelineModule.totalTimelineWidth);\n var prevDate = getValue('prevProjectStartDate', this.parent.dataOperation);\n var isUpdated = false;\n if (prevDate) {\n isUpdated = prevDate.getTime() === this.parent.cloneProjectStartDate.getTime();\n }\n this.isUpdated = this.parent.isFromOnPropertyChange && isUpdated &&\n getValue('mutableData', this.parent.treeGrid.grid.contentModule) ? true : false;\n this.refreshGanttRows();\n this.isUpdated = true;\n };\n /**\n * To render chart rows.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.createChartTable = function () {\n this.taskTable = createElement('table', {\n className: cls.taskTable + ' ' + cls.zeroSpacing, id: 'GanttTaskTable' + this.parent.element.id,\n styles: 'position: absolute;width:' + (this.parent.enableTimelineVirtualization ? this.parent.timelineModule.wholeTimelineWidth : this.parent.timelineModule.totalTimelineWidth) + 'px;',\n attrs: { cellspacing: '0.25px' }\n });\n var colgroup = createElement('colgroup');\n var column = createElement('col', { styles: 'width:' + this.parent.timelineModule.totalTimelineWidth + 'px;' });\n colgroup.appendChild(column);\n this.taskTable.appendChild(colgroup);\n this.ganttChartTableBody = createElement('tbody', {\n id: this.parent.element.id + 'GanttTaskTableBody'\n });\n this.taskTable.appendChild(this.ganttChartTableBody);\n this.parent.ganttChartModule.chartBodyContent.appendChild(this.taskTable);\n };\n ChartRows.prototype.initiateTemplates = function () {\n this.taskTable.style.width = formatUnit(this.parent.enableTimelineVirtualization ? this.parent.timelineModule.wholeTimelineWidth : this.parent.timelineModule.totalTimelineWidth);\n this.initChartHelperPrivateVariable();\n this.initializeChartTemplate();\n };\n /**\n * To render chart rows.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.renderChartRows = function () {\n this.createTaskbarTemplate();\n this.parent.isGanttChartRendered = true;\n };\n /**\n * To get gantt Indicator.\n *\n * @param {IIndicator} indicator .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getIndicatorNode = function (indicator) {\n var templateString = '';\n return this.createDivElement(templateString);\n };\n /**\n * To get gantt Indicator.\n *\n * @param {Date | string} date .\n * @returns {number} .\n * @private\n */\n ChartRows.prototype.getIndicatorleft = function (date) {\n date = this.parent.dateValidationModule.getDateFromFormat(date);\n var left = this.parent.dataOperation.getTaskLeft(date, false);\n return left;\n };\n /**\n * To get child taskbar Node.\n *\n * @param {number} i .\n * @param {NodeList} rootElement .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getChildTaskbarNode = function (i, rootElement) {\n var childTaskbarNode = null;\n var data = this.templateData;\n var direction;\n if (this.parent.enableRtl) {\n direction = 'right:';\n }\n else {\n direction = 'left:';\n }\n if (this.childTaskbarTemplateFunction) {\n childTaskbarNode = this.childTaskbarTemplateFunction(extend({ index: i }, data), this.parent, 'TaskbarTemplate', this.getTemplateID('TaskbarTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);\n }\n else {\n var labelString = '';\n var taskLabel = '';\n var taskbarInnerDiv = void 0;\n var progressDiv = void 0;\n if (data.ganttProperties.startDate && data.ganttProperties.endDate\n && data.ganttProperties.duration) {\n taskbarInnerDiv = this.createDivElement('
    ');\n progressDiv = this.createDivElement('
    ' +\n '
    ');\n }\n var tempDiv = createElement('div');\n if (this.taskLabelTemplateFunction && !isNullOrUndefined(progressDiv) && progressDiv.length > 0) {\n var taskLabelTemplateNode = this.taskLabelTemplateFunction(extend({ index: i }, data), this.parent, 'TaskLabelTemplate', this.getTemplateID('TaskLabelTemplate'), false, undefined, progressDiv[0]);\n if (taskLabelTemplateNode && taskLabelTemplateNode.length > 0) {\n append(taskLabelTemplateNode, tempDiv);\n labelString = tempDiv.innerHTML;\n }\n }\n else {\n var field = this.parent.labelSettings.taskLabel;\n labelString = this.getTaskLabel(field);\n labelString = labelString === 'isCustomTemplate' ? this.parent.labelSettings.taskLabel : labelString;\n if (this.parent.enableHtmlSanitizer && typeof (labelString) === 'string') {\n labelString = SanitizeHtmlHelper.sanitize(labelString);\n }\n }\n if (labelString.indexOf('null') === -1) {\n if (this.getTaskLabel(this.parent.labelSettings.taskLabel) === 'isCustomTemplate' &&\n !this.isTemplate(this.parent.labelSettings.taskLabel)) {\n labelString = '';\n }\n if (isNaN(parseInt(labelString))) {\n taskLabel = '';\n }\n else {\n taskLabel = '';\n }\n }\n var template = !isNullOrUndefined(data.ganttProperties.segments) && data.ganttProperties.segments.length > 0 ?\n this.splitTaskbar(data, labelString) : (data.ganttProperties.startDate && data.ganttProperties.endDate\n && data.ganttProperties.duration) ? (taskLabel) :\n (data.ganttProperties.startDate && !data.ganttProperties.endDate && !data.ganttProperties.duration) ? ('
    ') :\n (data.ganttProperties.endDate && !data.ganttProperties.startDate && !data.ganttProperties.duration) ?\n ('
    ') :\n (data.ganttProperties.duration && !data.ganttProperties.startDate && !data.ganttProperties.endDate) ?\n ('
    ') : '';\n if (data.ganttProperties.startDate && data.ganttProperties.endDate && data.ganttProperties.duration &&\n (isNullOrUndefined(data.ganttProperties.segments) || (!isNullOrUndefined(data.ganttProperties.segments) &&\n data.ganttProperties.segments.length === 0))) {\n if (template !== '' && !isNullOrUndefined(progressDiv) && progressDiv.length > 0) {\n var templateElement = this.createDivElement(template)[0];\n if (this.parent.disableHtmlEncode) {\n templateElement.innerText = labelString;\n }\n else {\n templateElement.innerHTML = labelString;\n }\n var childLabel = this.parent.labelSettings.taskLabel;\n if (childLabel && childLabel['elementRef'])\n templateElement.appendChild(tempDiv);\n progressDiv[0].appendChild(templateElement);\n if (progressDiv[0].querySelectorAll('.e-task-label')[0].textContent !== '' &&\n !this.isTemplate(childLabel) &&\n progressDiv[0].querySelectorAll('.e-task-label')[0].children[0])\n progressDiv[0].querySelectorAll('.e-task-label')[0].children[0].remove();\n if (progressDiv[0].querySelectorAll('.e-task-label')[0].textContent === '' &&\n childLabel && !childLabel['elementRef'] && tempDiv.innerHTML !== '')\n progressDiv[0].querySelectorAll('.e-task-label')[0].textContent = childLabel;\n }\n if (!isNullOrUndefined(taskbarInnerDiv) && taskbarInnerDiv.length > 0) {\n taskbarInnerDiv[0].appendChild([].slice.call(progressDiv)[0]);\n }\n childTaskbarNode = taskbarInnerDiv;\n }\n else {\n childTaskbarNode = this.createDivElement(template);\n }\n }\n if (this.parent.enableRtl && !isNullOrUndefined(childTaskbarNode) && childTaskbarNode[0] && childTaskbarNode[0].querySelector('.e-task-label')) {\n childTaskbarNode[0].querySelector('.e-task-label').style.marginLeft = '15px';\n childTaskbarNode[0].querySelector('.e-task-label').style.marginRight = '8px';\n if (childTaskbarNode[0].querySelector('.e-gantt-child-progressbar')) {\n childTaskbarNode[0].querySelector('.e-gantt-child-progressbar').style.textAlign = 'left';\n }\n }\n return childTaskbarNode;\n };\n ChartRows.prototype.splitTaskbar = function (data, labelString) {\n var splitTasks = '';\n for (var i = 0; i < data.ganttProperties.segments.length; i++) {\n var segment = data.ganttProperties.segments[i];\n var progressBarVisible = void 0;\n if (!segment.showProgress) {\n progressBarVisible = 'hidden';\n }\n else {\n progressBarVisible = 'initial';\n }\n var segmentPosition = (i === 0) ? 'e-segment-first' : (i === data.ganttProperties.segments.length - 1)\n ? 'e-segment-last' : 'e-segment-inprogress';\n splitTasks += (\n //split taskbar\n '
    ' +\n this.getSplitTaskbarLeftResizerNode() +\n //split progress bar\n '
    = 0 ? 'block;' : 'none;') +\n 'width:' + segment.progressWidth + 'px;height:100%;' + 'text-align:' + (this.parent.enableRtl ? 'left;' : 'right;') +\n 'border-top-right-radius:' + this.getSplitTaskBorderRadius(segment) + 'px;' +\n 'border-bottom-right-radius:' + this.getSplitTaskBorderRadius(segment) + 'px;\">' +\n // progress label\n '' + labelString + '' +\n '
    ' +\n this.getSplitTaskbarRightResizerNode(segment) +\n (segment.showProgress ? this.getSplitProgressResizerNode(segment) : '') +\n '
    ');\n }\n return splitTasks;\n };\n ChartRows.prototype.getSplitTaskbarLeftResizerNode = function () {\n var lResizerLeft = (!isNullOrUndefined(document.body.className) && document.body.className.includes(\"e-bigger\")) ? 5 : -2;\n var template = '
    ';\n return template;\n };\n ChartRows.prototype.getSplitTaskbarRightResizerNode = function (segment) {\n var rResizerLeft = (!isNullOrUndefined(document.body.className) && document.body.className.includes(\"e-bigger\")) ? -17 : -10;\n var template = '
    ';\n return template;\n };\n ChartRows.prototype.getSplitProgressResizerNode = function (segment) {\n var width = this.parent.enableRtl ? (segment.progressWidth + 8) : (segment.progressWidth - 6);\n var template = '
    ' +\n '
    ';\n return template;\n };\n ChartRows.prototype.getSegmentIndex = function (splitStartDate, record) {\n var segmentIndex = -1;\n var ganttProp = record.ganttProperties;\n var segments = ganttProp.segments;\n if (!isNullOrUndefined(segments)) {\n segments.sort(function (a, b) {\n return a.startDate.getTime() - b.startDate.getTime();\n });\n var length_1 = segments.length;\n for (var i = 0; i < length_1; i++) {\n var segment = segments[i];\n // To find if user tend to split the start date of a main taskbar\n // purpose of this to restrict the split action\n if (splitStartDate.getTime() === ganttProp.startDate.getTime()) {\n this.dropSplit = true;\n segmentIndex = 0;\n // To find the if user tend to split the first date of already segmented task.\n // purpose of this to move on day of a segment\n }\n else if (splitStartDate.getTime() === segment.startDate.getTime()) {\n this.dropSplit = true;\n var sDate = segment.startDate;\n sDate.setDate(sDate.getDate() + 1);\n sDate = segment.startDate = this.parent.dataOperation.checkStartDate(sDate, ganttProp, false);\n segment.startDate = sDate;\n var eDate = segment.endDate;\n eDate = this.parent.dataOperation.getEndDate(sDate, segment.duration, ganttProp.durationUnit, ganttProp, false);\n segment.endDate = eDate;\n if (i === segments.length - 1) {\n this.parent.setRecordValue('endDate', eDate, ganttProp, true);\n }\n this.incrementSegments(segments, i, record);\n segmentIndex = segment.segmentIndex;\n // To find if the user tend to split the segment and find the segment index\n }\n else {\n segment.endDate = this.parent.dataOperation.getEndDate(segment.startDate, segment.duration, ganttProp.durationUnit, ganttProp, false);\n if (splitStartDate.getTime() >= segment.startDate.getTime() && splitStartDate.getTime() <= segment.endDate.getTime()) {\n segmentIndex = segment.segmentIndex;\n }\n }\n this.parent.setRecordValue('segments', ganttProp.segments, ganttProp, true);\n }\n }\n if (segmentIndex === -1) {\n this.dropSplit = true;\n }\n return segmentIndex;\n };\n ChartRows.prototype.mergeTask = function (taskId, segmentIndexes) {\n var mergeArrayLength = segmentIndexes.length;\n var taskFields = this.parent.taskFields;\n var mergeData = this.parent.flatData.filter(function (x) {\n if (x[taskFields.id] === taskId) {\n return x;\n }\n else {\n return null;\n }\n })[0];\n if (this.parent.undoRedoModule && !this.parent.undoRedoModule['isUndoRedoPerformed']) {\n var details = {};\n details['action'] = 'MergeTaskbar';\n if (this.parent['isUndoRedoItemPresent']('Edit')) {\n this.parent.undoRedoModule['createUndoCollection']();\n details['modifiedRecords'] = extend([], [mergeData], [], true);\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = details;\n }\n }\n var segments = mergeData.ganttProperties.segments;\n segmentIndexes = segmentIndexes.sort(function (a, b) {\n return b.firstSegmentIndex - a.firstSegmentIndex;\n });\n for (var arrayLength = 0; arrayLength < mergeArrayLength; arrayLength++) {\n var firstSegment = segments[segmentIndexes[arrayLength].firstSegmentIndex];\n var secondSegment = segments[segmentIndexes[arrayLength].secondSegmentIndex];\n var duration = firstSegment.duration + secondSegment.duration;\n var endDate = this.parent.dataOperation.getEndDate(firstSegment.startDate, duration, mergeData.ganttProperties.durationUnit, mergeData.ganttProperties, false);\n var segment = {\n startDate: firstSegment.startDate,\n endDate: endDate,\n duration: duration\n };\n var insertIndex = segmentIndexes[arrayLength].firstSegmentIndex;\n segments.splice(insertIndex, 2, segment);\n this.parent.setRecordValue('segments', segments, mergeData.ganttProperties, true);\n this.parent.dataOperation.updateMappingData(mergeData, 'segments');\n if (segments.length === 1) {\n this.parent.setRecordValue('endDate', endDate, mergeData.ganttProperties, true);\n this.parent.setRecordValue('EndDate', endDate, mergeData, true);\n this.parent.setRecordValue('segments', null, mergeData.ganttProperties, true);\n this.parent.dataOperation.updateMappingData(mergeData, 'segments');\n }\n else if (mergeData.ganttProperties.endDate !== segments[segments.length - 1].endDate) {\n this.parent.setRecordValue('endDate', segments[segments.length - 1].endDate, mergeData.ganttProperties, true);\n }\n }\n var segmentFields = Object.keys(mergeData[taskFields.segments][0]);\n var modifiedSegments = [];\n for (var i = 0; i < segments.length; i++) {\n if (!modifiedSegments[i]) {\n modifiedSegments[i] = {};\n }\n if (segmentFields.indexOf('StartDate') != -1) {\n modifiedSegments[i][taskFields.startDate] = segments[i].startDate;\n }\n if (segmentFields.indexOf('EndDate') != -1) {\n modifiedSegments[i][taskFields.endDate] = segments[i].endDate;\n }\n if (segmentFields.indexOf('Duration') != -1) {\n modifiedSegments[i][taskFields.duration] = segments[i].duration;\n }\n }\n mergeData[taskFields.segments] = modifiedSegments;\n this.refreshChartAfterSegment(mergeData, 'mergeSegment');\n };\n ChartRows.prototype.refreshChartAfterSegment = function (data, requestType) {\n this.parent.setRecordValue('segments', this.parent.dataOperation.setSegmentsInfo(data, false), data.ganttProperties, true);\n this.parent.dataOperation.updateMappingData(data, 'segments');\n this.parent.dataOperation.updateWidthLeft(data);\n if (this.parent.predecessorModule && this.parent.taskFields.dependency) {\n this.parent.predecessorModule.updatedRecordsDateByPredecessor();\n this.parent.connectorLineModule.removePreviousConnectorLines(this.parent.flatData);\n this.parent.connectorLineEditModule.refreshEditedRecordConnectorLine(this.parent.flatData);\n if (data.parentItem && this.parent.getParentTask(data.parentItem).ganttProperties.isAutoSchedule\n && this.parent.isInPredecessorValidation) {\n this.parent.dataOperation.updateParentItems(data.parentItem);\n }\n this.refreshRecords(this.parent.currentViewData);\n }\n else {\n this.refreshRow(this.parent.currentViewData.indexOf(data));\n }\n var tr = this.ganttChartTableBody.querySelectorAll('tr')[this.parent.currentViewData.indexOf(data)];\n var args = {\n requestType: requestType,\n rowData: data\n };\n this.triggerQueryTaskbarInfoByIndex(tr, data);\n this.parent.selectionModule.clearSelection();\n var segments = args.rowData.taskData[this.parent.taskFields.segments];\n if (this.parent.timezone && segments != null) {\n for (var i = 0; i < segments.length; i++) {\n segments[i][this.parent.taskFields.startDate] = this.parent.dateValidationModule.remove(args.rowData.ganttProperties.segments[i].startDate, this.parent.timezone);\n if (this.parent.taskFields.endDate) {\n segments[i][this.parent.taskFields.endDate] = this.parent.dateValidationModule.remove(args.rowData.ganttProperties.segments[i].endDate, this.parent.timezone);\n }\n }\n }\n this.parent.trigger('actionComplete', args);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n setValue('isEdit', false, this.parent.contextMenuModule);\n setValue('isEdit', false, this.parent);\n };\n /**\n * public method to split task bar.\n *\n * @public\n */\n ChartRows.prototype.splitTask = function (taskId, splitDates) {\n var taskFields = this.parent.taskFields;\n var splitDate = splitDates;\n var splitRecord = this.parent.flatData.filter(function (x) {\n if (x[taskFields.id] === taskId) {\n return x;\n }\n else {\n return null;\n }\n })[0];\n if (this.parent.undoRedoModule && !this.parent.undoRedoModule['isUndoRedoPerformed']) {\n var details = {};\n details['action'] = 'MergeTaskbar';\n if (this.parent['isUndoRedoItemPresent']('Edit')) {\n this.parent.undoRedoModule['createUndoCollection']();\n details['modifiedRecords'] = extend([], [splitRecord], [], true);\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = details;\n }\n }\n var ganttProp = splitRecord.ganttProperties;\n this.dropSplit = false;\n var segmentIndex = -1;\n var segments = ganttProp.segments;\n if (isNullOrUndefined(splitDates.length) || splitDates.length < 0) {\n var splitStartDate = this.parent.dataOperation.checkStartDate(splitDate, ganttProp, false);\n if (splitStartDate.getTime() !== ganttProp.startDate.getTime()) {\n if (ganttProp.isAutoSchedule) {\n if (!isNullOrUndefined(segments) && segments.length > 0) {\n segmentIndex = this.getSegmentIndex(splitStartDate, splitRecord);\n }\n //check atleast one day difference is there to split\n if (this.dropSplit === false && splitDate.getTime() > ganttProp.startDate.getTime() &&\n splitDate.getTime() < ganttProp.endDate.getTime()) {\n segments = segmentIndex !== -1 ? segments : [];\n var startDate = segmentIndex !== -1 ?\n segments[segmentIndex].startDate : new Date(ganttProp.startDate.getTime());\n var endDate = segmentIndex !== -1 ? segments[segmentIndex].endDate : new Date(ganttProp.endDate.getTime());\n var segmentDuration = this.parent.dataOperation.getDuration(startDate, endDate, ganttProp.durationUnit, ganttProp.isAutoSchedule, ganttProp.isMilestone);\n this.parent.setRecordValue('segments', this.splitSegmentedTaskbar(startDate, endDate, splitDate, segmentIndex, segments, splitRecord, segmentDuration), ganttProp, true);\n var modifiedSegments = [];\n for (var i = 0; i < segments.length; i++) {\n if (!modifiedSegments[i]) {\n modifiedSegments[i] = {};\n }\n modifiedSegments[i][taskFields.startDate] = segments[i].startDate;\n modifiedSegments[i][taskFields.endDate] = segments[i].endDate;\n modifiedSegments[i][taskFields.duration] = segments[i].duration;\n }\n splitRecord[taskFields.segments] = modifiedSegments;\n if (segmentIndex !== -1) {\n this.incrementSegments(segments, segmentIndex + 1, splitRecord);\n }\n this.parent.setRecordValue('endDate', segments[segments.length - 1].endDate, ganttProp, true);\n if (this.parent.taskFields.endDate) {\n this.parent.dataOperation.updateMappingData(splitRecord, 'endDate');\n }\n }\n this.refreshChartAfterSegment(splitRecord, 'splitTaskbar');\n }\n }\n }\n else {\n splitDates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n this.parent.setRecordValue('segments', this.constructSegments(splitDates, splitRecord.ganttProperties), splitRecord.ganttProperties, true);\n this.refreshChartAfterSegment(splitRecord, 'splitTask');\n }\n };\n ChartRows.prototype.constructSegments = function (dates, taskData) {\n var segmentsArray = [];\n var segment;\n var startDate = new Date();\n var endDate;\n var duration;\n for (var i = 0; i < dates.length + 1; i++) {\n startDate = i === 0 ? taskData.startDate : startDate;\n startDate = this.parent.dataOperation.checkStartDate(startDate, taskData, false);\n endDate = i !== dates.length ? new Date(dates[i].getTime()) > taskData.endDate ? taskData.endDate\n : new Date(dates[i].getTime()) : taskData.endDate;\n endDate = this.parent.dataOperation.checkEndDate(endDate, taskData, false);\n duration = this.parent.dataOperation.getDuration(startDate, endDate, taskData.durationUnit, taskData.isAutoSchedule, taskData.isMilestone);\n if (endDate.getTime() >= startDate.getTime()) {\n segment = {\n startDate: startDate,\n endDate: endDate,\n duration: duration\n };\n segmentsArray.push(segment);\n }\n if (i === dates.length) {\n break;\n }\n startDate = new Date(dates[i].getTime());\n startDate.setDate(dates[i].getDate() + 1);\n }\n return segmentsArray;\n };\n ChartRows.prototype.splitSegmentedTaskbar = function (startDate, endDate, splitDate, segmentIndex, segments, ganttData, segmentDuration) {\n var ganttProp = ganttData.ganttProperties;\n var checkClickState;\n var endDateState;\n if (this.parent.includeWeekend) {\n checkClickState = -1;\n }\n else {\n checkClickState = this.parent.nonWorkingDayIndex.indexOf(splitDate.getDay());\n }\n var increment = checkClickState === -1 ? 0 : checkClickState === 0 ? 1 : 2;\n startDate = this.parent.dataOperation.checkStartDate(startDate, ganttProp, false);\n var segmentEndDate = new Date(splitDate.getTime());\n segmentEndDate = this.parent.dataOperation.checkEndDate(segmentEndDate, ganttProp, false);\n for (var i = 0; i < 2; i++) {\n var segment = {\n startDate: startDate,\n endDate: segmentEndDate,\n duration: this.parent.dataOperation.getDuration(startDate, segmentEndDate, ganttProp.durationUnit, ganttProp.isAutoSchedule, ganttProp.isMilestone),\n offsetDuration: 1\n };\n if (this.parent.includeWeekend) {\n endDateState = -1;\n }\n else {\n endDateState = this.parent.nonWorkingDayIndex.indexOf(segmentEndDate.getDay());\n }\n if (segmentIndex !== -1) {\n segments.splice(segmentIndex, 1);\n segmentIndex = -1;\n }\n segments.push(segment);\n var mode = this.parent.timelineModule.customTimelineSettings.bottomTier.unit;\n if (mode === 'Hour' || mode === 'Minutes') {\n startDate = new Date(splitDate.getTime());\n startDate = this.parent.dataOperation.checkStartDate(startDate, ganttProp, false);\n var count = this.parent.timelineModule.customTimelineSettings.bottomTier.count;\n var mode_1 = this.parent.timelineModule.customTimelineSettings.bottomTier.unit;\n var timeIncrement = this.parent.timelineModule.getIncrement(startDate, count, mode_1);\n var newTime = startDate.getTime() + timeIncrement;\n startDate.setTime(newTime + increment);\n segmentEndDate = new Date(endDate.getTime());\n timeIncrement = this.parent.timelineModule.getIncrement(segmentEndDate, count, mode_1);\n newTime = segmentEndDate.getTime() + timeIncrement;\n segmentEndDate.setTime(newTime + increment);\n }\n else {\n startDate = new Date(splitDate.getTime());\n startDate.setDate(startDate.getDate() + 1 + increment);\n this.setTime(this.parent.defaultStartTime, startDate);\n startDate = this.parent.dataOperation.checkStartDate(startDate, ganttProp, false);\n segmentEndDate = new Date(endDate.getTime());\n segmentEndDate.setDate(segmentEndDate.getDate() + 1);\n }\n if (endDateState !== -1) {\n var diff = segmentDuration - segment.duration;\n segmentEndDate =\n this.parent.dataOperation.getEndDate(startDate, diff, ganttProp.durationUnit, ganttProp, false);\n }\n else {\n segmentEndDate = this.parent.dataOperation.checkEndDate(segmentEndDate, ganttProp, false);\n }\n }\n segments.sort(function (a, b) {\n return a.startDate.getTime() - b.startDate.getTime();\n });\n return segments;\n };\n ChartRows.prototype.incrementSegments = function (segments, segmentIndex, ganttData) {\n var ganttProp = ganttData.ganttProperties;\n for (var i = segmentIndex + 1; i < segments.length; i++) {\n var segment = segments[i];\n var startDate = i !== 0 ? new Date(segments[i - 1].endDate.getTime()) : new Date(segment.startDate.getTime());\n startDate = this.parent.dataOperation.getEndDate(startDate, segment.offsetDuration, ganttProp.durationUnit, ganttProp, false);\n startDate = this.parent.dataOperation.checkStartDate(startDate, ganttProp, false);\n segment.startDate = startDate;\n var endDate = segment.endDate = this.parent.dataOperation.getEndDate(startDate, segment.duration, ganttProp.durationUnit, ganttProp, false);\n segment.endDate = endDate;\n if (i === segments.length - 1) {\n this.parent.setRecordValue('endDate', endDate, ganttProp, true);\n if (this.parent.taskFields.endDate) {\n this.parent.dataOperation.updateMappingData(ganttData, 'endDate');\n }\n }\n }\n segments.sort(function (a, b) {\n return a.startDate.getTime() - b.startDate.getTime();\n });\n this.parent.setRecordValue('segments', segments, ganttProp, true);\n this.parent.dataOperation.updateMappingData(ganttData, 'segments');\n };\n /**\n * To get milestone node.\n *\n * @param {number} i .\n * @param {NodeList} rootElement .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getMilestoneNode = function (i, rootElement) {\n var milestoneNode = null;\n var data = this.templateData;\n if (this.milestoneTemplateFunction) {\n milestoneNode = this.milestoneTemplateFunction(extend({ index: i }, data), this.parent, 'MilestoneTemplate', this.getTemplateID('MilestoneTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);\n }\n else {\n var template = '
    ';\n milestoneNode = this.createDivElement(template);\n }\n return milestoneNode;\n };\n /**\n * To get task baseline Node.\n *\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getTaskBaselineNode = function () {\n var data = this.templateData;\n var template = '
    ';\n return this.createDivElement(template);\n };\n ChartRows.prototype.updateTaskBaselineNode = function (childData) {\n var template = '
    ';\n return this.createDivElement(template);\n };\n /**\n * To get milestone baseline node.\n *\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getMilestoneBaselineNode = function () {\n var data = this.templateData;\n var baselineMilestoneHeight = this.parent.renderBaseline ? 5 : 2;\n var template = '
    ';\n return this.createDivElement(template);\n };\n /**\n * To get left label node.\n *\n * @param {number} i .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getLeftLabelNode = function (i) {\n var leftLabelNode = this.leftLabelContainer();\n if (this.generateTaskLabelAriaLabel('left') !== \"\") {\n leftLabelNode[0].setAttribute('aria-label', this.generateTaskLabelAriaLabel('left'));\n }\n var leftLabelTemplateNode = null;\n if (this.leftTaskLabelTemplateFunction) {\n leftLabelTemplateNode = this.leftTaskLabelTemplateFunction(extend({ index: i }, this.templateData), this.parent, 'LeftLabelTemplate', this.getTemplateID('LeftLabelTemplate'), false, undefined, leftLabelNode[0], this.parent.treeGrid['root']);\n }\n else {\n var field = this.parent.labelSettings.leftLabel;\n var labelString = this.getTaskLabel(field);\n if (labelString) {\n labelString = labelString === 'isCustomTemplate' ? field : labelString;\n leftLabelTemplateNode = this.getLableText(labelString, cls.leftLabelInnerDiv);\n if (this.parent.enableHtmlSanitizer && typeof (labelString) === 'string') {\n labelString = SanitizeHtmlHelper.sanitize(labelString);\n labelString = labelString === 'isCustomTemplate' ? field : labelString;\n leftLabelTemplateNode = this.getLableText(labelString, cls.leftLabelInnerDiv);\n }\n }\n }\n if (leftLabelTemplateNode && leftLabelTemplateNode.length > 0) {\n if (leftLabelTemplateNode[0]['data'] === 'null') {\n leftLabelTemplateNode[0]['data'] = '';\n }\n append(leftLabelTemplateNode, leftLabelNode[0]);\n }\n if (this.parent.enableRtl) {\n leftLabelNode[0].style.paddingLeft = '25px';\n leftLabelNode[0].style.paddingRight = '0px';\n }\n return leftLabelNode;\n };\n ChartRows.prototype.getLableText = function (labelString, labelDiv) {\n var leftLabelHeight = this.parent.renderBaseline ? ((this.parent.rowHeight - this.taskBarHeight) / 2) : this.taskBarMarginTop;\n var templateString = createElement('div', {\n className: labelDiv, styles: 'height:' + (this.taskBarHeight) + 'px;' +\n 'margin-top:' + leftLabelHeight + 'px;'\n });\n var spanElem = createElement('span', { className: cls.label });\n var property = this.parent.disableHtmlEncode ? 'textContent' : 'innerHTML';\n spanElem[property] = labelString;\n templateString.appendChild(spanElem);\n var div = createElement('div');\n div.appendChild(templateString);\n return div.childNodes;\n };\n /**\n * To get right label node.\n *\n * @param {number} i .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getRightLabelNode = function (i) {\n var rightLabelNode = this.rightLabelContainer();\n if (this.generateTaskLabelAriaLabel('right') !== \"\") {\n rightLabelNode[0].setAttribute('aria-label', this.generateTaskLabelAriaLabel('right'));\n }\n var rightLabelTemplateNode = null;\n if (this.rightTaskLabelTemplateFunction) {\n rightLabelTemplateNode = this.rightTaskLabelTemplateFunction(extend({ index: i }, this.templateData), this.parent, 'RightLabelTemplate', this.getTemplateID('RightLabelTemplate'), false, undefined, rightLabelNode[0], this.parent.treeGrid['root']);\n }\n else {\n var field = this.parent.labelSettings.rightLabel;\n var labelString = this.getTaskLabel(field);\n if (labelString) {\n labelString = labelString === 'isCustomTemplate' ? field : labelString;\n rightLabelTemplateNode = this.getLableText(labelString, cls.rightLabelInnerDiv);\n if (this.parent.enableHtmlSanitizer && typeof (labelString) === 'string') {\n labelString = SanitizeHtmlHelper.sanitize(labelString);\n labelString = labelString === 'isCustomTemplate' ? field : labelString;\n rightLabelTemplateNode = this.getLableText(labelString, cls.rightLabelInnerDiv);\n }\n }\n }\n if (rightLabelTemplateNode && rightLabelTemplateNode.length > 0) {\n if (rightLabelTemplateNode[0]['data'] === 'null') {\n rightLabelTemplateNode[0]['data'] = '';\n }\n append(rightLabelTemplateNode, rightLabelNode[0]);\n }\n if (this.parent.enableRtl) {\n rightLabelNode[0].style.marginLeft = '0px';\n rightLabelNode[0].style.paddingRight = '25px';\n }\n return rightLabelNode;\n };\n ChartRows.prototype.getManualTaskbar = function () {\n var data = this.templateData;\n var taskbarHeight = (this.taskBarHeight / 2 - 1);\n var innerDiv = (data.ganttProperties.startDate && data.ganttProperties.endDate && (data.ganttProperties.duration || data.hasChildRecords)) ?\n ('
    ') :\n (!data.ganttProperties.startDate && !data.ganttProperties.endDate && data.ganttProperties.duration) ?\n ('
    ') : ('
    ');\n var template = '
    ' + innerDiv + ((data.ganttProperties.startDate && data.ganttProperties.endDate &&\n (data.ganttProperties.duration || data.hasChildRecords)) || data.ganttProperties.duration ? '
    ' +\n '
    ' + '
    ' : '');\n var milestoneTemplate = '
    40 ? 0 : 2) + 'px;left:' + (this.parent.renderBaseline ? 2 : 1) + 'px;\">
    ';\n return this.createDivElement((data.ganttProperties.duration !== 0 || data.hasChildRecords) ? template : milestoneTemplate);\n };\n /**\n * To get parent taskbar node.\n *\n * @param {number} i .\n * @param {NodeList} rootElement .\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getParentTaskbarNode = function (i, rootElement) {\n var parentTaskbarNode = null;\n var data = this.templateData;\n if (this.parentTaskbarTemplateFunction) {\n parentTaskbarNode = this.parentTaskbarTemplateFunction(extend({ index: i }, data), this.parent, 'ParentTaskbarTemplate', this.getTemplateID('ParentTaskbarTemplate'), false, undefined, rootElement[0], this.parent.treeGrid['root']);\n }\n else {\n var labelString = '';\n var labelDiv = void 0;\n var tHeight = this.taskBarHeight / 5;\n var template = this.createDivElement('
    ' +\n '
    ');\n var progressBarInnerDiv = this.createDivElement('
    ');\n var div = createElement('div');\n if (this.taskLabelTemplateFunction) {\n var parentTaskLabelNode = this.taskLabelTemplateFunction(extend({ index: i }, data), this.parent, 'TaskLabelTemplate', this.getTemplateID('TaskLabelTemplate'), false, undefined, progressBarInnerDiv[0]);\n if (parentTaskLabelNode && parentTaskLabelNode.length > 0) {\n append(parentTaskLabelNode, div);\n labelString = div.innerHTML;\n }\n }\n else {\n labelString = this.getTaskLabel(this.parent.labelSettings.taskLabel);\n labelString = labelString === 'isCustomTemplate' ? this.parent.labelSettings.taskLabel : labelString;\n if (this.parent.enableHtmlSanitizer && typeof (labelString) === 'string') {\n labelString = SanitizeHtmlHelper.sanitize(labelString);\n }\n }\n if (labelString.indexOf('null') === -1) {\n if (this.getTaskLabel(this.parent.labelSettings.taskLabel) === 'isCustomTemplate' &&\n !this.isTemplate(this.parent.labelSettings.taskLabel)) {\n labelString = '';\n }\n if (isNaN(parseInt(labelString))) {\n labelDiv = '';\n }\n else {\n labelDiv = '';\n }\n var labelElement = this.createDivElement(labelDiv)[0];\n if (this.parent.disableHtmlEncode) {\n labelElement.innerText = labelString;\n }\n else {\n labelElement.innerHTML = labelString;\n }\n var parentLabel = this.parent.labelSettings.taskLabel;\n if (parentLabel && parentLabel['elementRef'])\n labelElement.appendChild(div);\n progressBarInnerDiv[0].appendChild(labelElement);\n if (progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent !== '' &&\n !this.isTemplate(parentLabel) &&\n progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].children[0])\n progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].children[0].remove();\n if (progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent === '' &&\n parentLabel && !parentLabel['elementRef'] && div.innerHTML !== '')\n progressBarInnerDiv[0].querySelectorAll('.e-task-label')[0].textContent = parentLabel;\n }\n var milestoneTemplate = '
    40 ? 0 : 2) + 'px;left:' + (this.parent.renderBaseline ? 2 : 1) + 'px;\">
    ';\n template[0].appendChild([].slice.call(progressBarInnerDiv)[0]);\n parentTaskbarNode = data.ganttProperties.isMilestone ?\n this.createDivElement(data.ganttProperties.isAutoSchedule ? milestoneTemplate : '') : template;\n }\n if (this.parent.enableRtl && parentTaskbarNode[0] && parentTaskbarNode[0].querySelector('.e-task-label')) {\n parentTaskbarNode[0].querySelector('.e-task-label').style.marginLeft = '15px';\n parentTaskbarNode[0].querySelector('.e-task-label').style.marginRight = '8px';\n if (parentTaskbarNode[0].querySelector('.e-gantt-parent-progressbar')) {\n parentTaskbarNode[0].querySelector('.e-gantt-parent-progressbar').style.textAlign = 'left';\n }\n }\n return parentTaskbarNode;\n };\n /**\n * To get taskbar row('TR') node\n *\n * @returns {NodeList} .\n * @private\n */\n ChartRows.prototype.getTableTrNode = function (i) {\n var table = createElement('table');\n var className = (this.parent.gridLines === 'Horizontal' || this.parent.gridLines === 'Both') ?\n 'e-chart-row-border' : '';\n var rows = this.parent.treeGrid.grid.contentModule.getRows()[i];\n var activecls;\n if (rows && rows.isSelected) {\n activecls = 'e-active';\n }\n else {\n activecls = '';\n }\n table.innerHTML = '' +\n '';\n return table.childNodes;\n };\n /**\n * To initialize chart templates.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.initializeChartTemplate = function () {\n if (!isNullOrUndefined(this.parent.parentTaskbarTemplate)) {\n this.parentTaskbarTemplateFunction = this.templateCompiler(this.parent.parentTaskbarTemplate);\n }\n if (!isNullOrUndefined(this.parent.labelSettings.leftLabel) &&\n this.isTemplate(this.parent.labelSettings.leftLabel)) {\n this.leftTaskLabelTemplateFunction = this.templateCompiler(this.parent.labelSettings.leftLabel);\n }\n if (!isNullOrUndefined(this.parent.labelSettings.rightLabel) &&\n this.isTemplate(this.parent.labelSettings.rightLabel)) {\n this.rightTaskLabelTemplateFunction = this.templateCompiler(this.parent.labelSettings.rightLabel);\n }\n if (!isNullOrUndefined(this.parent.labelSettings.taskLabel) &&\n this.isTemplate(this.parent.labelSettings.taskLabel)) {\n this.taskLabelTemplateFunction = this.templateCompiler(this.parent.labelSettings.taskLabel);\n }\n if (!isNullOrUndefined(this.parent.taskbarTemplate)) {\n this.childTaskbarTemplateFunction = this.templateCompiler(this.parent.taskbarTemplate);\n }\n if (!isNullOrUndefined(this.parent.milestoneTemplate)) {\n this.milestoneTemplateFunction = this.templateCompiler(this.parent.milestoneTemplate);\n }\n };\n ChartRows.prototype.createDivElement = function (template) {\n var div = createElement('div');\n div.innerHTML = template;\n return div.childNodes;\n };\n ChartRows.prototype.isTemplate = function (template) {\n var result = false;\n for (var i = 0; i < this.parent.ganttColumns.length; i++) {\n if (template === this.parent.ganttColumns[i].field) {\n result = true;\n break;\n }\n }\n if (typeof template !== 'string' || template.indexOf('#') === 0 || template.indexOf('<') > -1\n || template.indexOf('$') > -1 || !result) {\n result = true;\n }\n else {\n result = false;\n }\n return result;\n };\n /**\n * @param {string} templateName .\n * @returns {string} .\n * @private\n */\n ChartRows.prototype.getTemplateID = function (templateName) {\n var ganttID = this.parent.element.id;\n return ganttID + templateName;\n };\n ChartRows.prototype.leftLabelContainer = function () {\n var template = '
    ';\n return this.createDivElement(template);\n };\n ChartRows.prototype.taskbarContainer = function () {\n var data = this.templateData;\n var manualParent = this.parent.editModule && this.parent.editSettings.allowTaskbarEditing &&\n this.parent.editModule.taskbarEditModule.taskBarEditAction === 'ParentResizing' ?\n true : false;\n var template = '
    ';\n return this.createDivElement(template);\n };\n ChartRows.prototype.rightLabelContainer = function () {\n var template = '
    ';\n return this.createDivElement(template);\n };\n ChartRows.prototype.childTaskbarLeftResizer = function () {\n var lResizerLeft = (!isNullOrUndefined(document.body.className) && document.body.className.includes(\"e-bigger\")) ? 5 : -2;\n var template = '
    ';\n return this.createDivElement(template);\n };\n ChartRows.prototype.childTaskbarRightResizer = function () {\n var rResizerLeft = (!isNullOrUndefined(document.body.className) && document.body.className.includes(\"e-bigger\")) ? -17 : -10;\n var template = '
    ';\n return this.createDivElement(template);\n };\n ChartRows.prototype.childTaskbarProgressResizer = function () {\n var width = this.parent.enableRtl ? (this.templateData.ganttProperties.progressWidth + 8) : (this.templateData.ganttProperties.progressWidth - 6);\n var template = '
    ' +\n '
    ';\n return this.createDivElement(template);\n };\n ChartRows.prototype.getLeftPointNode = function () {\n var data = this.templateData;\n var left = (!isNullOrUndefined(document.body.className) && document.body.className.includes(\"e-bigger\")) ? 12 : 0;\n var mileStoneLeftValue = (!isNullOrUndefined(document.body.className) && document.body.className.includes(\"e-bigger\")) ? 6 : 3;\n var pointerLeft = -(3 + this.connectorPointWidth + left);\n var mileStoneLeft = -(this.connectorPointWidth + 4 + mileStoneLeftValue);\n var pointerTop = Math.floor(this.milesStoneRadius - (this.connectorPointWidth / 2));\n var marginTop;\n if ((!this.templateData.ganttProperties.isAutoSchedule && this.templateData.hasChildRecords) && this.parent.allowParentDependency) {\n marginTop = '';\n }\n else {\n marginTop = 'margin-top:' + this.connectorPointMargin + 'px';\n }\n var template = '
    ' +\n '
    ' + this.touchLeftConnectorpoint + '
    ';\n return this.createDivElement(template);\n };\n ChartRows.prototype.getRightPointNode = function () {\n var data = this.templateData;\n var right = (!isNullOrUndefined(document.body.className) && document.body.className.includes(\"e-bigger\")) ? -12 : 0;\n var pointerRight = -(3 + right);\n var pointerTop = Math.floor(this.milesStoneRadius - (this.connectorPointWidth / 2));\n var marginTop;\n if ((!this.templateData.ganttProperties.isAutoSchedule && this.templateData.hasChildRecords) && this.parent.allowParentDependency) {\n marginTop = '';\n }\n else {\n marginTop = 'margin-top:' + this.connectorPointMargin + 'px';\n }\n var template = '
    ' +\n '
    ' +\n this.touchRightConnectorpoint + '
    ';\n return this.createDivElement(template);\n };\n /**\n * To get task label.\n *\n * @param {string} field .\n * @returns {string} .\n * @private\n */\n ChartRows.prototype.getTaskLabel = function (field) {\n var length = this.parent.ganttColumns.length;\n var resultString = null;\n if (!isNullOrUndefined(field) && field !== '') {\n if (field === this.parent.taskFields.resourceInfo) {\n resultString = this.getResourceName(this.templateData);\n }\n else {\n for (var i = 0; i < length; i++) {\n if (field === this.parent.ganttColumns[i].field) {\n resultString = this.getFieldValue(this.templateData[field]).toString();\n break;\n }\n }\n if (isNullOrUndefined(resultString)) {\n return 'isCustomTemplate';\n }\n }\n }\n else {\n resultString = '';\n }\n return resultString;\n };\n ChartRows.prototype.getExpandDisplayProp = function (data) {\n data = this.templateData;\n if (this.parent.getExpandStatus(data)) {\n return 'table-row';\n }\n return 'none';\n };\n ChartRows.prototype.getRowClassName = function (data) {\n data = this.templateData;\n var rowClass = 'gridrowtaskId';\n var parentItem = data.parentItem;\n if (parentItem) {\n rowClass += parentItem.taskId.toString();\n }\n rowClass += 'level';\n rowClass += data.level.toString();\n return rowClass;\n };\n ChartRows.prototype.getBorderRadius = function (data) {\n data = this.templateData;\n var diff = data.ganttProperties.width - data.ganttProperties.progressWidth;\n if (diff <= 4) {\n return 4 - diff;\n }\n else {\n return 0;\n }\n };\n ChartRows.prototype.getSplitTaskBorderRadius = function (data) {\n var diff = data.width - data.progressWidth;\n if (diff <= 4) {\n return 4 - diff;\n }\n else {\n return 0;\n }\n };\n ChartRows.prototype.taskNameWidth = function (ganttData) {\n ganttData = this.templateData;\n var ganttProp = ganttData.ganttProperties;\n var width;\n if (ganttData.ganttProperties.isMilestone) {\n width = (ganttData.ganttProperties.left - (this.parent.getTaskbarHeight() / 2));\n }\n else if (ganttData.hasChildRecords && !ganttProp.isAutoSchedule) {\n if (!this.parent.allowUnscheduledTasks) {\n width = (ganttProp.autoStartDate.getTime() < ganttProp.startDate.getTime()) ?\n ganttProp.autoLeft : ganttProp.left;\n }\n else {\n width = ganttProp.left < ganttProp.autoLeft ? ganttProp.left : ganttProp.autoLeft;\n }\n }\n else {\n width = ganttData.ganttProperties.left;\n }\n if (width < 0) {\n width = 0;\n }\n return width + 'px';\n };\n ChartRows.prototype.getRightLabelLeft = function (ganttData) {\n ganttData = this.templateData;\n var ganttProp = ganttData.ganttProperties;\n var left;\n var endLeft;\n var width;\n if (ganttData.ganttProperties.isMilestone) {\n return ganttData.ganttProperties.left + (this.parent.getTaskbarHeight() / 2);\n }\n else if (ganttData.hasChildRecords && !ganttProp.isAutoSchedule) {\n if (!this.parent.allowUnscheduledTasks) {\n left = ganttProp.autoStartDate.getTime() < ganttProp.startDate.getTime() ? ganttProp.autoLeft : ganttProp.left;\n endLeft = ganttProp.autoEndDate.getTime() < ganttProp.endDate.getTime() ?\n this.parent.dataOperation.getTaskLeft(ganttProp.endDate, ganttProp.isMilestone) :\n this.parent.dataOperation.getTaskLeft(ganttProp.autoEndDate, ganttProp.isMilestone);\n width = endLeft - left;\n }\n else {\n left = ganttProp.left < ganttProp.autoLeft ? ganttProp.autoLeft : ganttProp.left;\n width = ganttProp.autoWidth;\n }\n return left + width;\n }\n else {\n return ganttData.ganttProperties.left + ganttData.ganttProperties.width;\n }\n };\n ChartRows.prototype.getExpandClass = function (data) {\n data = this.templateData;\n if (data.expanded) {\n return cls.rowExpand;\n }\n else if (!data.expanded && data.hasChildRecords) {\n return cls.rowCollapse;\n }\n return '';\n };\n ChartRows.prototype.getFieldValue = function (field) {\n return isNullOrUndefined(field) ? '' : field;\n };\n ChartRows.prototype.getResourceName = function (ganttData) {\n ganttData = this.templateData;\n var resource = null;\n if (!isNullOrUndefined(ganttData.ganttProperties.resourceInfo)) {\n var length_2 = ganttData.ganttProperties.resourceInfo.length;\n if (length_2 > 0) {\n for (var i = 0; i < length_2; i++) {\n var resourceName = ganttData.ganttProperties.resourceInfo[i][this.parent.resourceFields.name];\n var resourceUnit = ganttData.ganttProperties.resourceInfo[i][this.parent.resourceFields.unit];\n if (resourceUnit !== 100) {\n resourceName += '[' + resourceUnit + '%' + ']';\n }\n if (isNullOrUndefined(resource)) {\n resource = resourceName;\n }\n else {\n resource += ' , ' + resourceName;\n }\n }\n return resource;\n }\n else {\n return '';\n }\n }\n return '';\n };\n /**\n * To initialize private variable help to render task bars.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.initChartHelperPrivateVariable = function () {\n var taskbarHeightValue = this.parent.renderBaseline ? 0.45 : ((!isNullOrUndefined(document.body.className) && document.body.className.includes(\"e-bigger\")) ? 0.7 : 0.62);\n var taskBarMarginTopValue = this.parent.renderBaseline ? 4 : 2;\n var milestoneHeightValue = this.parent.renderBaseline ? 1.13 : 0.82;\n this.baselineColor = !isNullOrUndefined(this.parent.baselineColor) &&\n this.parent.baselineColor !== '' ? this.parent.baselineColor : null;\n this.taskBarHeight = isNullOrUndefined(this.parent.taskbarHeight) || this.parent.taskbarHeight >= this.parent.rowHeight ?\n Math.floor(this.parent.rowHeight * taskbarHeightValue) : this.parent.taskbarHeight; // 0.62 -- Standard Ratio.\n if (this.parent.renderBaseline) {\n var height = void 0;\n if ((this.taskBarHeight + this.baselineHeight) <= this.parent.rowHeight) {\n height = this.taskBarHeight;\n }\n else {\n height = this.taskBarHeight - (this.baselineHeight + 1);\n }\n this.taskBarHeight = height;\n }\n this.milestoneHeight = Math.floor(this.taskBarHeight * milestoneHeightValue); // 0.82 -- Standard Ratio.\n this.taskBarMarginTop = Math.floor((this.parent.rowHeight - this.taskBarHeight) / taskBarMarginTopValue);\n this.milestoneMarginTop = Math.floor((this.parent.rowHeight - this.milestoneHeight) / 2);\n this.milesStoneRadius = Math.floor((this.milestoneHeight) / 2);\n this.baselineTop = -(Math.floor((this.parent.rowHeight - (this.taskBarHeight + this.taskBarMarginTop))) - 4);\n this.connectorPointWidth = this.parent.isAdaptive ? Math.round(this.taskBarHeight / 2) : 8;\n this.connectorPointMargin = Math.floor((this.taskBarHeight / 2) - (this.connectorPointWidth / 2));\n };\n /**\n * Function used to refresh Gantt rows.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.refreshGanttRows = function () {\n this.parent.currentViewData = this.parent.treeGrid.getCurrentViewRecords().slice();\n this.createTaskbarTemplate();\n if (this.parent.showOverAllocation) {\n for (var i = 0; i < this.parent.currentViewData.length; i++) {\n var data = this.parent.currentViewData[i];\n if (data.childRecords.length > 0) {\n this.parent.setRecordValue('workTimelineRanges', this.parent.dataOperation.mergeRangeCollections(data.ganttProperties.workTimelineRanges, true), data.ganttProperties, true);\n this.parent.dataOperation.calculateRangeLeftWidth(data.ganttProperties.workTimelineRanges);\n }\n }\n this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);\n }\n this.parent.ganttChartModule.updateLastRowBottomWidth();\n };\n /**\n * To render taskbars.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.createTaskbarTemplate = function () {\n var _a;\n var trs = [].slice.call(this.ganttChartTableBody.querySelectorAll('tr'));\n this.ganttChartTableBody.innerHTML = '';\n var collapsedResourceRecord = [];\n var prevCurrentView = this.parent.treeGridModule.prevCurrentView;\n this.refreshedTr = [];\n this.refreshedData = [];\n if (this.parent.enableImmutableMode && prevCurrentView && prevCurrentView.length > 0 && this.isUpdated) {\n var oldKeys = {};\n var oldRowElements = [];\n var key = this.parent.treeGrid.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < prevCurrentView.length; i++) {\n oldRowElements[i] = trs[i];\n oldKeys[prevCurrentView[i][key]] = i;\n }\n for (var index = 0; index < this.parent.currentViewData.length; index++) {\n var oldIndex = oldKeys[this.parent.currentViewData[index][key]];\n var modifiedRecIndex = this.parent.modifiedRecords.indexOf(this.parent.currentViewData[index]);\n if (isNullOrUndefined(oldIndex) || modifiedRecIndex !== -1 || this.parent.isFromRenderBaseline) {\n var tRow = this.getGanttChartRow(index, this.parent.currentViewData[index]);\n this.ganttChartTableBody.appendChild(tRow);\n this.refreshedTr.push(this.ganttChartTableBody.querySelectorAll('tr')[index]);\n this.refreshedData.push(this.parent.currentViewData[index]);\n }\n else {\n this.ganttChartTableBody.appendChild(oldRowElements[oldIndex]);\n }\n this.ganttChartTableBody.querySelectorAll('tr')[index].setAttribute('data-rowindex', index.toString());\n }\n }\n else {\n var dupChartBody = void 0;\n dupChartBody = createElement('tbody', {\n id: this.parent.element.id + 'GanttTaskTableBody'\n });\n for (var i = 0; i < this.parent.currentViewData.length; i++) {\n var tempTemplateData = this.parent.currentViewData[i];\n if (!tempTemplateData.expanded && this.parent.enableMultiTaskbar) {\n collapsedResourceRecord.push(tempTemplateData);\n }\n var tRow = this.getGanttChartRow(i, tempTemplateData);\n dupChartBody.appendChild(tRow);\n if (this.parent.enableImmutableMode) {\n this.refreshedTr.push(dupChartBody.querySelectorAll('tr')[i]);\n this.refreshedData.push(this.parent.currentViewData[i]);\n }\n // To maintain selection when virtualization is enabled\n if (this.parent.selectionModule && this.parent.allowSelection) {\n this.parent.selectionModule.maintainSelectedRecords(parseInt(tRow.getAttribute('data-rowindex'), 10));\n }\n }\n (_a = this.ganttChartTableBody).replaceChildren.apply(_a, dupChartBody.childNodes);\n this.parent.initialChartRowElements = this.parent.ganttChartModule.getChartRows();\n }\n if (this.parent.enableCriticalPath && this.parent.criticalPathModule) {\n var criticalModule = this.parent.criticalPathModule;\n if (criticalModule.criticalPathCollection) {\n this.parent.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n }\n this.parent.renderTemplates();\n this.triggerQueryTaskbarInfo();\n this.parent.modifiedRecords = [];\n if (this.parent.showOverAllocation) {\n this.updateOverlapped();\n }\n if (collapsedResourceRecord.length) {\n for (var j = 0; j < collapsedResourceRecord.length; j++) {\n if (collapsedResourceRecord[j].hasChildRecords) {\n this.parent.isGanttChartRendered = true;\n this.parent.chartRowsModule.refreshRecords([collapsedResourceRecord[j]]);\n }\n }\n }\n this.parent.isGanttChartRendered = true;\n this.parent.renderTemplates();\n };\n /**\n * To render taskbars.\n *\n * @param {number} i .\n * @param {IGanttData} tempTemplateData .\n * @returns {Node} .\n * @private\n */\n ChartRows.prototype.getGanttChartRow = function (i, tempTemplateData) {\n this.templateData = tempTemplateData;\n var parentTrNode = this.getTableTrNode(i);\n var leftLabelNode = this.getLeftLabelNode(i);\n var taskbarContainerNode = this.taskbarContainer();\n taskbarContainerNode[0].setAttribute('aria-label', this.generateAriaLabel(this.templateData));\n taskbarContainerNode[0].setAttribute('rowUniqueId', this.templateData.ganttProperties.rowUniqueID);\n var connectorLineLeftNode;\n var connectorLineRightNode;\n connectorLineLeftNode = this.getLeftPointNode();\n if ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType === 'ProjectView') || !this.templateData.hasChildRecords) {\n taskbarContainerNode[0].appendChild([].slice.call(connectorLineLeftNode)[0]);\n }\n if (this.templateData.hasChildRecords) {\n var parentTaskbarTemplateNode = void 0;\n if (!this.parent.enableMultiTaskbar || (this.parent.enableMultiTaskbar && this.templateData.expanded)) {\n parentTaskbarTemplateNode = this.getParentTaskbarNode(i, taskbarContainerNode);\n }\n else {\n taskbarContainerNode = [];\n for (var j = 0; j < this.templateData.childRecords.length; j++) {\n this.templateData = this.templateData.childRecords[j];\n var taskbarContainerNode1 = this.taskbarContainer();\n taskbarContainerNode1[0].setAttribute('aria-label', this.generateAriaLabel(this.templateData));\n taskbarContainerNode1[0].setAttribute('rowUniqueId', this.templateData.ganttProperties.rowUniqueID);\n if (!this.parent.allowParentDependency) {\n connectorLineLeftNode = this.getLeftPointNode();\n taskbarContainerNode1[0].appendChild([].slice.call(connectorLineLeftNode)[0]);\n }\n else {\n connectorLineLeftNode = this.getLeftPointNode();\n if ((this.templateData.ganttProperties.isAutoSchedule) || !this.templateData.hasChildRecords) {\n taskbarContainerNode1[0].appendChild([].slice.call(connectorLineLeftNode)[0]);\n }\n }\n this.appendChildTaskbars(tempTemplateData, i, taskbarContainerNode1, connectorLineRightNode, taskbarContainerNode);\n }\n }\n if (!this.templateData.ganttProperties.isAutoSchedule) {\n var manualTaskbar = this.getManualTaskbar();\n if (!isNullOrUndefined(manualTaskbar[0])) {\n if (this.parent.allowParentDependency) {\n manualTaskbar[0].appendChild([].slice.call(connectorLineLeftNode)[0]);\n var connectorLineRightNode_1 = this.getRightPointNode();\n manualTaskbar[0].appendChild([].slice.call(connectorLineRightNode_1)[0]);\n }\n taskbarContainerNode[0].appendChild([].slice.call(manualTaskbar)[0]);\n }\n }\n if ((this.templateData.ganttProperties.autoDuration !== 0) && !this.templateData.ganttProperties.isMilestone && parentTaskbarTemplateNode && parentTaskbarTemplateNode.length > 0) {\n append(parentTaskbarTemplateNode, taskbarContainerNode[0]);\n }\n else if ((this.templateData.ganttProperties.duration === 0 && this.templateData.ganttProperties.isMilestone && this.templateData.ganttProperties.isAutoSchedule)) {\n var milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);\n if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {\n append(milestoneTemplateNode, taskbarContainerNode[0]);\n }\n }\n if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&\n this.templateData.ganttProperties.baselineEndDate) {\n this.taskBaselineTemplateNode = ((this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.baselineEndDate.getTime()) || ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))\n && (!isNullOrUndefined(this.templateData.ganttProperties.baselineEndDate) && !isNullOrUndefined(this.templateData.ganttProperties.endDate) && (this.templateData.ganttProperties.baselineEndDate.getTime() === this.templateData.ganttProperties.endDate.getTime())) &&\n this.templateData.ganttProperties.isMilestone))\n ? this.getMilestoneBaselineNode() : this.getTaskBaselineNode();\n }\n if (!this.parent.enableMultiTaskbar || (this.parent.enableMultiTaskbar && this.templateData.expanded)) {\n if (this.parent.allowParentDependency && ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType === 'ProjectView') || !this.templateData.hasChildRecords)) {\n connectorLineRightNode = this.getRightPointNode();\n taskbarContainerNode[0].appendChild([].slice.call(connectorLineRightNode)[0]);\n }\n else if (!this.parent.allowParentDependency) {\n connectorLineRightNode = this.getRightPointNode();\n taskbarContainerNode[0].appendChild([].slice.call(connectorLineRightNode)[0]);\n }\n }\n }\n else {\n this.appendChildTaskbars(tempTemplateData, i, taskbarContainerNode, connectorLineRightNode);\n }\n var rightLabelNode = this.getRightLabelNode(i);\n if (this.parent.enableMultiTaskbar && this.templateData.hasChildRecords && !this.templateData.expanded) {\n var collapseParent = createElement('div', {\n className: 'e-collapse-parent'\n });\n parentTrNode[0].childNodes[0].childNodes[0].appendChild(collapseParent);\n for (var j = 0; j < taskbarContainerNode.length; j++) {\n addClass([taskbarContainerNode[j]], 'collpse-parent-border');\n parentTrNode[0].childNodes[0].childNodes[0].childNodes[0].appendChild([].slice.call(taskbarContainerNode)[j]);\n }\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(leftLabelNode)[0]);\n if (this.templateData.ganttProperties.indicators && this.templateData.ganttProperties.indicators.length > 0) {\n this.appendIndicators(i, parentTrNode);\n }\n }\n else {\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(leftLabelNode)[0]);\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(taskbarContainerNode)[0]);\n if (this.templateData.ganttProperties.indicators && this.templateData.ganttProperties.indicators.length > 0) {\n this.appendIndicators(i, parentTrNode);\n }\n if (rightLabelNode && rightLabelNode.length > 0) {\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(rightLabelNode)[0]);\n }\n }\n if (!isNullOrUndefined(this.taskBaselineTemplateNode)) {\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(this.taskBaselineTemplateNode)[0]);\n }\n this.taskBaselineTemplateNode = null;\n var tRow = parentTrNode[0].childNodes[0];\n this.setAriaRowIndex(tempTemplateData, tRow);\n return tRow;\n };\n /**\n * To set data-rowindex for chart rows\n *\n * @returns {void} .\n * @private\n */\n ChartRows.prototype.setAriaRowIndex = function (tempTemplateData, tRow) {\n var _this = this;\n var dataSource = this.parent.treeGrid.getCurrentViewRecords();\n var visualData = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n getValue('virtualScrollModule.visualData', this.parent.treeGrid) : dataSource;\n var index;\n if (!this.parent.loadChildOnDemand && this.parent.taskFields.hasChildMapping) {\n var gridData = this.parent.treeGrid.grid.contentModule['rows'];\n var data = gridData.filter(function (x) {\n if (x['data'][_this.parent.taskFields.id] === tempTemplateData.ganttProperties.taskId) {\n return x;\n }\n })[0];\n tRow.setAttribute('data-rowindex', data['index'].toString());\n }\n else {\n index = visualData.indexOf(tempTemplateData);\n tRow.setAttribute('aria-rowindex', (index + 1).toString());\n tRow.setAttribute('data-rowindex', index.toString());\n }\n };\n /**\n * To trigger query taskbar info event.\n *\n * @returns {void}\n * @private\n */\n ChartRows.prototype.triggerQueryTaskbarInfo = function () {\n if (!this.parent.queryTaskbarInfo) {\n return;\n }\n var length = this.parent.enableImmutableMode ?\n this.refreshedTr.length : this.ganttChartTableBody.querySelectorAll('tr').length;\n var trElement;\n var data;\n for (var index = 0; index < length; index++) {\n trElement = this.parent.enableImmutableMode ? this.refreshedTr[index] : this.ganttChartTableBody.querySelectorAll('tr')[index];\n data = this.refreshedData.length > 0 ? this.refreshedData[index] : this.parent.currentViewData[index];\n var segmentLength = !isNullOrUndefined(data.ganttProperties.segments) && data.ganttProperties.segments.length;\n if (segmentLength > 0) {\n for (var i = 0; i < segmentLength; i++) {\n var segmentedTasks = trElement.getElementsByClassName('e-segmented-taskbar');\n var segmentElement = segmentedTasks[i];\n this.triggerQueryTaskbarInfoByIndex(segmentElement, data);\n }\n }\n else if (trElement) {\n this.triggerQueryTaskbarInfoByIndex(trElement, data);\n }\n }\n };\n ChartRows.prototype.appendIndicators = function (i, parentTrNode) {\n var taskIndicatorNode;\n var taskIndicatorTextFunction;\n var taskIndicatorTextNode;\n var indicators = this.templateData.ganttProperties.indicators;\n for (var indicatorIndex = 0; indicatorIndex < indicators.length; indicatorIndex++) {\n taskIndicatorNode = this.getIndicatorNode(indicators[indicatorIndex]);\n taskIndicatorNode[0].setAttribute('aria-label', indicators[indicatorIndex].name);\n if (indicators[indicatorIndex].name.indexOf('$') > -1 || indicators[indicatorIndex].name.indexOf('#') > -1) {\n taskIndicatorTextFunction = this.templateCompiler(indicators[indicatorIndex].name);\n taskIndicatorTextNode = taskIndicatorTextFunction(extend({ index: i }, this.templateData), this.parent, 'indicatorLabelText');\n }\n else {\n var text = createElement('Text');\n text.innerHTML = indicators[indicatorIndex].name;\n if (this.parent.enableHtmlSanitizer && typeof (indicators[indicatorIndex].name) === 'string') {\n indicators[indicatorIndex].name = SanitizeHtmlHelper.sanitize(indicators[indicatorIndex].name);\n }\n taskIndicatorTextNode = text.childNodes;\n }\n taskIndicatorNode[0].appendChild([].slice.call(taskIndicatorTextNode)[0]);\n taskIndicatorNode[0].title =\n !isNullOrUndefined(indicators[indicatorIndex].tooltip) ? indicators[indicatorIndex].tooltip : '';\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(taskIndicatorNode)[0]);\n }\n };\n ChartRows.prototype.appendChildTaskbars = function (tempTemplateData, i, taskbarContainerNode, connectorLineRightNode, taskbarCollection) {\n if (this.templateData.ganttProperties.isMilestone) {\n var milestoneTemplateNode = this.getMilestoneNode(i, taskbarContainerNode);\n if (milestoneTemplateNode && milestoneTemplateNode.length > 0) {\n append(milestoneTemplateNode, taskbarContainerNode[0]);\n }\n if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&\n this.templateData.ganttProperties.baselineEndDate) {\n this.taskBaselineTemplateNode = ((this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.baselineEndDate.getTime()) || ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))\n && (!isNullOrUndefined(this.templateData.ganttProperties.baselineEndDate) && !isNullOrUndefined(this.templateData.ganttProperties.endDate) && (this.templateData.ganttProperties.baselineEndDate.getTime() === this.templateData.ganttProperties.endDate.getTime())) &&\n this.templateData.ganttProperties.isMilestone))\n ? this.getMilestoneBaselineNode() : this.getTaskBaselineNode();\n }\n if (taskbarCollection) {\n taskbarCollection.push(taskbarContainerNode[0]);\n this.templateData = tempTemplateData;\n }\n }\n else {\n var scheduledTask = isScheduledTask(this.templateData.ganttProperties); // eslint-disable-line\n var childTaskbarProgressResizeNode = null;\n var childTaskbarRightResizeNode = null;\n var childTaskbarLeftResizeNode = null;\n if (!isNullOrUndefined(scheduledTask)) {\n if (scheduledTask || this.templateData.ganttProperties.duration) {\n if (scheduledTask && (isNullOrUndefined(this.templateData.ganttProperties.segments)\n || this.templateData.ganttProperties.segments.length <= 0)) {\n childTaskbarProgressResizeNode = this.childTaskbarProgressResizer();\n childTaskbarLeftResizeNode = this.childTaskbarLeftResizer();\n childTaskbarRightResizeNode = this.childTaskbarRightResizer();\n }\n }\n var childTaskbarTemplateNode = this.getChildTaskbarNode(i, taskbarContainerNode);\n if (childTaskbarLeftResizeNode) {\n taskbarContainerNode[0].appendChild([].slice.call(childTaskbarLeftResizeNode)[0]);\n }\n if (childTaskbarTemplateNode && childTaskbarTemplateNode.length > 0) {\n if (this.templateData.ganttProperties.segments && this.templateData.ganttProperties.segments.length > 0) {\n var length_3 = this.templateData.ganttProperties.segments.length;\n var connector = ('
    ');\n var segmentConnector = null;\n segmentConnector = this.createDivElement(connector);\n taskbarContainerNode[0].appendChild([].slice.call(segmentConnector)[0]);\n for (var i_1 = 0; i_1 < length_3; i_1++) {\n append(childTaskbarTemplateNode, taskbarContainerNode[0]);\n }\n }\n else {\n append(childTaskbarTemplateNode, taskbarContainerNode[0]);\n }\n }\n if (childTaskbarProgressResizeNode) {\n taskbarContainerNode[0].appendChild([].slice.call(childTaskbarProgressResizeNode)[0]);\n }\n if (childTaskbarRightResizeNode) {\n taskbarContainerNode[0].appendChild([].slice.call(childTaskbarRightResizeNode)[0]);\n }\n }\n if (this.parent.renderBaseline && this.templateData.ganttProperties.baselineStartDate &&\n this.templateData.ganttProperties.baselineEndDate) {\n this.taskBaselineTemplateNode = ((this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.baselineEndDate.getTime()) || ((!isNullOrUndefined(this.templateData.ganttProperties.baselineStartDate) && !isNullOrUndefined(this.templateData.ganttProperties.startDate) && (this.templateData.ganttProperties.baselineStartDate.getTime() === this.templateData.ganttProperties.startDate.getTime()))\n && (!isNullOrUndefined(this.templateData.ganttProperties.baselineEndDate) && !isNullOrUndefined(this.templateData.ganttProperties.endDate) && (this.templateData.ganttProperties.baselineEndDate.getTime() === this.templateData.ganttProperties.endDate.getTime())) &&\n this.templateData.ganttProperties.isMilestone))\n ? this.getMilestoneBaselineNode() : this.getTaskBaselineNode();\n }\n }\n if (this.parent.allowParentDependency && ((this.templateData.ganttProperties.isAutoSchedule && this.parent.viewType === 'ProjectView') || !this.templateData.hasChildRecords)) {\n connectorLineRightNode = this.getRightPointNode();\n taskbarContainerNode[0].appendChild([].slice.call(connectorLineRightNode)[0]);\n }\n else if (!this.parent.allowParentDependency) {\n connectorLineRightNode = this.getRightPointNode();\n taskbarContainerNode[0].appendChild([].slice.call(connectorLineRightNode)[0]);\n }\n if (taskbarCollection) {\n taskbarCollection.push(taskbarContainerNode[0]);\n this.templateData = tempTemplateData;\n }\n };\n /**\n *\n * @param {Element} trElement .\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n ChartRows.prototype.triggerQueryTaskbarInfoByIndex = function (trElement, data) {\n var _this = this;\n // eslint-disable-next-line\n var taskbarElement = !isNullOrUndefined(data.ganttProperties.segments) && data.ganttProperties.segments.length > 0 ? trElement :\n trElement.querySelector('.' + cls.taskBarMainContainer);\n var rowElement;\n var segmentRowElement;\n if (data.ganttProperties.segments && data.ganttProperties.segments.length > 0) {\n segmentRowElement = trElement.parentElement.parentElement.parentElement;\n }\n var triggerTaskbarElement;\n var args = {\n data: data,\n rowElement: trElement,\n taskbarElement: taskbarElement,\n taskbarType: data.hasChildRecords ? 'ParentTask' : data.ganttProperties.isMilestone ? 'Milestone' : 'ChildTask'\n };\n var classCollections = this.getClassName(args);\n if (args.taskbarType === 'Milestone') {\n args.milestoneColor = taskbarElement.querySelector(classCollections[0]) ?\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor : null;\n args.baselineColor = trElement.querySelector(classCollections[1]) ?\n getComputedStyle(trElement.querySelector(classCollections[1])).backgroundColor :\n (trElement.querySelector('.' + cls.baselineBar) ? getComputedStyle(trElement.querySelector('.' + cls.baselineBar)).backgroundColor : null);\n }\n else if (taskbarElement) {\n var childTask = taskbarElement.querySelector(classCollections[0]);\n var progressTask = taskbarElement.querySelector(classCollections[1]);\n args.taskbarBgColor = isNullOrUndefined(childTask) ? null : taskbarElement.classList.contains(cls.traceChildTaskBar) ?\n getComputedStyle(taskbarElement).backgroundColor :\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor;\n args.taskbarBorderColor = isNullOrUndefined(childTask) ? null : taskbarElement.classList.contains(cls.traceChildTaskBar) ?\n getComputedStyle(taskbarElement).backgroundColor :\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).outlineColor;\n args.progressBarBgColor = isNullOrUndefined(progressTask) ? null :\n taskbarElement.classList.contains(cls.traceChildProgressBar) ?\n getComputedStyle(taskbarElement).backgroundColor :\n getComputedStyle(taskbarElement.querySelector(classCollections[1])).backgroundColor;\n // args.progressBarBorderColor = taskbarElement.querySelector(progressBarClass) ?\n // getComputedStyle(taskbarElement.querySelector(progressBarClass)).borderColor : null;\n if (segmentRowElement) {\n args.baselineColor = segmentRowElement.querySelector('.' + cls.baselineBar) ?\n getComputedStyle(segmentRowElement.querySelector('.' + cls.baselineBar)).backgroundColor : null;\n }\n else {\n args.baselineColor = trElement.querySelector('.' + cls.baselineBar) ?\n getComputedStyle(trElement.querySelector('.' + cls.baselineBar)).backgroundColor : null;\n }\n args.taskLabelColor = taskbarElement.querySelector('.' + cls.taskLabel) ?\n getComputedStyle(taskbarElement.querySelector('.' + cls.taskLabel)).color : null;\n }\n if (segmentRowElement) {\n args.rightLabelColor = segmentRowElement.querySelector('.' + cls.rightLabelContainer) &&\n (segmentRowElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label) ?\n getComputedStyle((segmentRowElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label)).color : null;\n args.leftLabelColor = segmentRowElement.querySelector('.' + cls.leftLabelContainer) &&\n (segmentRowElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label) ?\n getComputedStyle((segmentRowElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label)).color : null;\n }\n else {\n args.rightLabelColor = trElement.querySelector('.' + cls.rightLabelContainer) &&\n (trElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label) ?\n getComputedStyle((trElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label)).color : null;\n args.leftLabelColor = trElement.querySelector('.' + cls.leftLabelContainer) &&\n (trElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label) ?\n getComputedStyle((trElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label)).color : null;\n }\n this.parent.trigger('queryTaskbarInfo', args, function (taskbarArgs) {\n _this.updateQueryTaskbarInfoArgs(taskbarArgs, rowElement, triggerTaskbarElement);\n });\n };\n /**\n * To update query taskbar info args.\n *\n * @param {IQueryTaskbarInfoEventArgs} args .\n * @param {Element} rowElement .\n * @param {Element} taskBarElement .\n * @returns {void}\n * @private\n */\n ChartRows.prototype.updateQueryTaskbarInfoArgs = function (args, rowElement, taskBarElement) {\n var trElement = args.rowElement;\n var taskbarElement = this.parent.enableVirtualization ? args.rowElement : args.taskbarElement;\n var classCollections = this.getClassName(args);\n var segmentRowElement;\n if (args.data.ganttProperties.segments && args.data.ganttProperties.segments.length > 0) {\n segmentRowElement = trElement.parentElement.parentElement.parentElement;\n }\n if (args.taskbarType === 'Milestone') {\n if (taskbarElement.querySelector(classCollections[0]) &&\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor !== args.milestoneColor) {\n taskbarElement.querySelector(classCollections[0]).style.backgroundColor = args.milestoneColor;\n }\n if (trElement.querySelector(classCollections[1]) &&\n getComputedStyle(trElement.querySelector(classCollections[1])).backgroundColor !== args.baselineColor) {\n trElement.querySelector(classCollections[1]).style.backgroundColor = args.baselineColor;\n }\n if (trElement.querySelector('.' + cls.baselineBar) &&\n getComputedStyle(trElement.querySelector('.' + cls.baselineBar)).borderTopColor !== args.baselineColor) {\n trElement.querySelector('.' + cls.baselineBar).style.backgroundColor = args.baselineColor;\n }\n }\n else if (taskbarElement) {\n if (taskbarElement.querySelector(classCollections[0]) &&\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor !== args.taskbarBgColor) {\n taskbarElement.querySelector(classCollections[0]).style.backgroundColor = args.taskbarBgColor;\n }\n if (taskbarElement.querySelector(classCollections[0]) &&\n getComputedStyle(taskbarElement.querySelector(classCollections[0])).outlineColor !== args.taskbarBorderColor) {\n taskbarElement.querySelector(classCollections[0]).style.outlineColor = args.taskbarBorderColor;\n }\n if (taskbarElement.querySelector(classCollections[1]) &&\n getComputedStyle(taskbarElement.querySelector(classCollections[1])).backgroundColor !== args.progressBarBgColor) {\n taskbarElement.querySelector(classCollections[1]).style.backgroundColor = args.progressBarBgColor;\n }\n if (taskbarElement.classList.contains(cls.traceChildTaskBar) &&\n getComputedStyle(taskbarElement).backgroundColor !== args.taskbarBgColor) {\n taskbarElement.style.backgroundColor = args.taskbarBgColor;\n }\n if (taskbarElement.classList.contains(cls.traceChildTaskBar) &&\n getComputedStyle(taskbarElement).outlineColor !== args.taskbarBorderColor) {\n taskbarElement.style.outlineColor = args.taskbarBorderColor;\n }\n if (taskbarElement.classList.contains(cls.traceChildProgressBar) &&\n getComputedStyle(taskbarElement).backgroundColor !== args.progressBarBgColor) {\n taskbarElement.style.backgroundColor = args.progressBarBgColor;\n }\n // if (taskbarElement.querySelector(progressBarClass) &&\n // getComputedStyle(taskbarElement.querySelector(progressBarClass)).borderColor !== args.progressBarBorderColor) {\n // (taskbarElement.querySelector(progressBarClass) as HTMLElement).style.borderColor = args.progressBarBorderColor;\n // }\n if (taskbarElement.querySelector('.' + cls.taskLabel) &&\n getComputedStyle(taskbarElement.querySelector('.' + cls.taskLabel)).color !== args.taskLabelColor) {\n taskbarElement.querySelector('.' + cls.taskLabel).style.color = args.taskLabelColor;\n }\n if (segmentRowElement) {\n if (segmentRowElement.querySelector('.' + cls.baselineBar) &&\n getComputedStyle(segmentRowElement.querySelector('.' + cls.baselineBar)).backgroundColor !== args.baselineColor) {\n segmentRowElement.querySelector('.' + cls.baselineBar).style.backgroundColor = args.baselineColor;\n }\n }\n else {\n if (trElement.querySelector('.' + cls.baselineBar) &&\n getComputedStyle(trElement.querySelector('.' + cls.baselineBar)).backgroundColor !== args.baselineColor) {\n trElement.querySelector('.' + cls.baselineBar).style.backgroundColor = args.baselineColor;\n }\n }\n }\n if (segmentRowElement) {\n if (segmentRowElement.querySelector('.' + cls.leftLabelContainer) &&\n (segmentRowElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label) &&\n getComputedStyle((segmentRowElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label)).color !== args.leftLabelColor) {\n (segmentRowElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label).style.color = args.leftLabelColor;\n }\n if (segmentRowElement.querySelector('.' + cls.rightLabelContainer) &&\n (segmentRowElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label) &&\n getComputedStyle((segmentRowElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label)).color !== args.rightLabelColor) {\n (segmentRowElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label).style.color = args.rightLabelColor;\n }\n }\n else {\n if (trElement.querySelector('.' + cls.leftLabelContainer) &&\n (trElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label) &&\n getComputedStyle((trElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label)).color !== args.leftLabelColor) {\n (trElement.querySelector('.' + cls.leftLabelContainer)).querySelector('.' + cls.label).style.color = args.leftLabelColor;\n }\n if (trElement.querySelector('.' + cls.rightLabelContainer) &&\n (trElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label) &&\n getComputedStyle((trElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label)).color !== args.rightLabelColor) {\n (trElement.querySelector('.' + cls.rightLabelContainer)).querySelector('.' + cls.label).style.color = args.rightLabelColor;\n }\n }\n };\n ChartRows.prototype.getClassName = function (args) {\n var classCollection = [];\n classCollection.push('.' + (args.taskbarType === 'ParentTask' ?\n cls.traceParentTaskBar : args.taskbarType === 'ChildTask' ? cls.traceChildTaskBar : cls.traceMilestone));\n classCollection.push('.' + (args.taskbarType === 'ParentTask' ?\n cls.traceParentProgressBar : args.taskbarType === 'ChildTask' ? cls.traceChildProgressBar : cls.baselineMilestoneContainer));\n return classCollection;\n };\n /**\n * To compile template string.\n *\n * @param {string} template .\n * @returns {Function} .\n * @private\n */\n ChartRows.prototype.templateCompiler = function (template) {\n if (!isNullOrUndefined(template) && template !== '') {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim(), this.parent);\n }\n else {\n return compile(template, this.parent);\n }\n }\n catch (e) {\n return compile(template, this.parent);\n }\n }\n return null;\n };\n // to update the eOverlapped property\n ChartRows.prototype.updateOverlapped = function () {\n for (var k = 0; k < this.parent.treeGrid.parentData.length; k++) {\n var childRecords = this.parent.treeGrid.parentData[k].childRecords;\n for (var i = 0; i < childRecords.length; i++) {\n if (childRecords[i + 1]) {\n childRecords[i].ganttProperties.eOverlapped = undefined;\n }\n for (var j = i + 1; j < childRecords.length; j++) {\n childRecords[j].ganttProperties.eOverlapped = undefined;\n if (childRecords[i].ganttProperties.startDate.getTime() < childRecords[j].ganttProperties.endDate.getTime() &&\n childRecords[i].ganttProperties.endDate.getTime() > childRecords[j].ganttProperties.startDate.getTime()) {\n childRecords[j].ganttProperties.eOverlapped = true;\n childRecords[i].ganttProperties.eOverlapped = true;\n }\n else {\n if (isNullOrUndefined(childRecords[j].ganttProperties.eOverlapped)) {\n childRecords[j].ganttProperties.eOverlapped = false;\n }\n if (isNullOrUndefined(childRecords[i].ganttProperties.eOverlapped)) {\n childRecords[i].ganttProperties.eOverlapped = false;\n }\n }\n }\n }\n }\n };\n // To update the row height when allow overallocation set to false\n ChartRows.prototype.updateDragDropRecords = function (data, tr) {\n var childRecords = data.childRecords;\n var rowIndex = this.parent.currentViewData.indexOf(data);\n var treeGridContentHeight = this.parent.enableRtl ? this.parent['element'].getElementsByClassName('e-content')[2].children[0]['offsetHeight'] :\n this.parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];\n if (!tr) {\n tr = this.ganttChartTableBody.childNodes[rowIndex];\n }\n if (this.parent.ganttChartModule.isExpandAll || this.parent.ganttChartModule.isCollapseAll) {\n tr['style'].height = this.parent.treeGrid.getRowByIndex(rowIndex)['style'].height = this.parent.rowHeight + 'px';\n }\n else {\n tr['style'].height = this.parent.treeGrid.getRows()[rowIndex]['style'].height = this.parent.rowHeight + 'px';\n }\n this.parent.contentHeight = treeGridContentHeight;\n var rowIDs = [];\n var rowCounts = 0;\n if (data) {\n for (var i = 0; i < childRecords.length; i++) {\n for (var j = i + 1; j < childRecords.length; j++) {\n var taskbarContainer = tr.getElementsByClassName('e-taskbar-main-container');\n for (var k = 0; k < taskbarContainer.length; k++) {\n var rowuniqueid = this.parent.viewType === 'ResourceView' ? childRecords[j]['rowUniqueID'] : childRecords[j].ganttProperties.rowUniqueID;\n if (childRecords[i].ganttProperties.startDate.getTime() < childRecords[j].ganttProperties.endDate.getTime() &&\n childRecords[i].ganttProperties.endDate.getTime() > childRecords[j].ganttProperties.startDate.getTime()) {\n if (taskbarContainer[k].getAttribute('rowuniqueid') === rowuniqueid &&\n rowIDs.indexOf(rowuniqueid) === -1) {\n rowIDs.push(rowuniqueid);\n rowCounts++;\n tr.children[0]['style'].verticalAlign = 'baseline';\n tr.getElementsByClassName('e-taskbar-main-container')[k]['style'].marginTop = (rowCounts * this.parent.rowHeight) + this.taskBarMarginTop + 'px';\n if (this.parent.ganttChartModule.isExpandAll || this.parent.ganttChartModule.isCollapseAll) {\n tr['style'].height = this.parent.treeGrid.getRowByIndex(rowIndex)['style'].height = parseInt(tr['style'].height) + this.parent.rowHeight + 'px';\n }\n else {\n tr['style'].height = this.parent.treeGrid.getRows()[rowIndex]['style'].height = parseInt(tr['style'].height) + this.parent.rowHeight + 'px';\n }\n }\n }\n else {\n if (taskbarContainer[k].getAttribute('rowuniqueid') === rowuniqueid &&\n rowIDs.indexOf(rowuniqueid) === -1 && this.parent.rowDragAndDropModule &&\n this.parent.rowDragAndDropModule['draggedRecord'] && taskbarContainer[k].getAttribute('rowuniqueid') ===\n this.parent.rowDragAndDropModule['draggedRecord']['rowUniqueID'] && this.parent.rowDragAndDropModule['draggedRecord']['rowUniqueID'] === childRecords[j]['rowUniqueID']) {\n tr.getElementsByClassName('e-taskbar-main-container')[k]['style'].marginTop =\n this.parent.editModule.taskbarEditModule.draggedRecordMarginTop;\n }\n }\n }\n }\n }\n this.parent.contentHeight = treeGridContentHeight;\n document.getElementsByClassName('e-chart-rows-container')[0]['style'].height = this.parent.contentHeight + 'px';\n }\n };\n /**\n * To refresh edited TR\n *\n * @param {number} index .\n * @param {boolean} isValidateRange .\n * @returns {void} .\n * @private\n */\n ChartRows.prototype.refreshRow = function (index, isValidateRange, isUndoRedo) {\n var _this = this;\n var tr = this.ganttChartTableBody.childNodes[index];\n var selectedItem;\n if (isUndoRedo) {\n selectedItem = this.parent.previousFlatData[index];\n }\n else {\n selectedItem = this.parent.currentViewData[index];\n }\n if (index !== -1 && selectedItem) {\n var data = selectedItem;\n if (!this.parent.allowTaskbarOverlap && data.expanded) {\n if (this.parent.ganttChartModule.isExpandAll || this.parent.ganttChartModule.isCollapseAll) {\n tr['style'].height = this.parent.treeGrid.getRowByIndex(index)['style'].height = this.parent.rowHeight + 'px';\n }\n else {\n tr['style'].height = this.parent.treeGrid.getRows()[index]['style'].height = this.parent.rowHeight + 'px';\n }\n }\n if (data.hasChildRecords && !data.expanded && this.parent.enableMultiTaskbar) {\n tr.replaceChild(this.getResourceParent(data).childNodes[0], tr.childNodes[0]);\n if (this.parent.renderBaseline) {\n data.childRecords.forEach(function (childRecord) {\n if (!isNullOrUndefined(childRecord.ganttProperties.baselineStartDate && childRecord.ganttProperties.baselineEndDate)) {\n tr.childNodes[0].appendChild((_this.updateTaskBaselineNode(childRecord))[0]);\n }\n });\n }\n }\n else {\n if (this.parent.allowTaskbarDragAndDrop && !data.expanded) {\n tr.replaceWith(this.getGanttChartRow(index, data));\n }\n else {\n tr.replaceChild(this.getGanttChartRow(index, data).childNodes[0], tr.childNodes[0]);\n }\n }\n this.parent.renderTemplates();\n if (data.hasChildRecords && this.parent.showOverAllocation && this.parent.allowTaskbarOverlap) {\n if (isValidateRange) {\n this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);\n }\n else {\n this.parent.dataOperation.updateOverlappingValues(data);\n this.parent.ganttChartModule.renderRangeContainer([data]);\n }\n }\n var segmentLength = !isNullOrUndefined(data.ganttProperties.segments) && data.ganttProperties.segments.length;\n if (segmentLength > 0) {\n for (var i = 0; i < segmentLength; i++) {\n var segmentedTasks = tr.getElementsByClassName('e-segmented-taskbar');\n var segmentElement = segmentedTasks[i];\n this.triggerQueryTaskbarInfoByIndex(segmentElement, data);\n }\n }\n else {\n this.triggerQueryTaskbarInfoByIndex(tr, data);\n }\n var dataId = this.parent.viewType === 'ProjectView' ? data.ganttProperties.taskId : data.ganttProperties.rowUniqueID;\n if (!this.parent.ganttChartModule.isExpandAll && !this.parent.ganttChartModule.isCollapseAll) {\n this.parent.treeGrid.grid.setRowData(dataId, data);\n }\n if (data.hasChildRecords && !data.expanded && this.parent.enableMultiTaskbar && !this.parent.allowTaskbarOverlap) {\n this.updateDragDropRecords(selectedItem, tr);\n }\n if (data.hasChildRecords && this.parent.showOverAllocation && !this.parent.allowTaskbarOverlap) {\n this.parent.dataOperation.updateOverlappingValues(data);\n this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);\n }\n var nextEditableElement = this.parent.ganttChartModule.tempNextElement;\n if (this.parent.ganttChartModule.isEditableElement && nextEditableElement) {\n this.parent.treeGrid.grid.focusModule.focus();\n addClass([this.parent.treeGrid.getRows()[tr['ariaRowIndex']].children[this.parent.ganttChartModule.childrenIndex]], 'e-focused');\n this.parent.ganttChartModule.tempNextElement = null;\n }\n var row = this.parent.treeGrid.grid.getRowObjectFromUID(this.parent.treeGrid.grid.getDataRows()[index].getAttribute('data-uid'));\n if (!isNullOrUndefined(row)) {\n row.data = data;\n }\n }\n };\n ChartRows.prototype.updateResourceTaskbarElement = function (tRow, parentTr) {\n var cloneElement = tRow.querySelector('.e-taskbar-main-container');\n if (this.parent.viewType === 'ProjectView' && tRow.querySelector('.e-collapse-parent')) {\n cloneElement = tRow.querySelector('.e-collapse-parent');\n }\n if (tRow.querySelector('.e-collapse-parent') === null) {\n addClass([cloneElement], 'collpse-parent-border');\n }\n var id = tRow.querySelector('.' + cls.taskBarMainContainer).getAttribute('rowUniqueId');\n var ganttData = this.parent.getRecordByID(id);\n if (!(isNullOrUndefined(ganttData)) && ganttData.ganttProperties.segments && ganttData.ganttProperties.segments.length > 0) {\n var segmentedTasks = cloneElement.getElementsByClassName('e-segmented-taskbar');\n for (var i = 0; i < segmentedTasks.length; i++) {\n this.triggerQueryTaskbarInfoByIndex(segmentedTasks[i], ganttData);\n }\n }\n else if (this.parent.queryTaskbarInfo) {\n var mainTaskbar = (cloneElement.querySelector('.e-gantt-child-taskbar'));\n if (!isNullOrUndefined(mainTaskbar)) {\n this.triggerQueryTaskbarInfoByIndex(mainTaskbar, ganttData);\n }\n }\n var zIndex = \"\";\n if (ganttData && !isNullOrUndefined(ganttData.ganttProperties.eOverlapIndex)) {\n zIndex = (ganttData.ganttProperties.eOverlapIndex).toString();\n }\n var cloneChildElement = cloneElement.cloneNode(true);\n cloneChildElement.style.zIndex = zIndex;\n parentTr[0].childNodes[0].childNodes[0].childNodes[0].appendChild(cloneChildElement);\n };\n ChartRows.prototype.getResourceParent = function (record) {\n var chartRows = this.parent.ganttChartModule.getChartRows();\n //Below code is for rendering taskbartemplate in resource view with multi taskbar\n if (this.parent.initialChartRowElements && (!this.parent.allowTaskbarDragAndDrop && this.parent.allowTaskbarOverlap)) {\n for (var j = 0; j < this.parent.initialChartRowElements.length; j++) {\n if (!isNullOrUndefined(chartRows[j])) {\n if (!isNullOrUndefined(chartRows[j].childNodes[0].childNodes[1].childNodes[2]) &&\n !isNullOrUndefined(this.parent.initialChartRowElements[j].childNodes[0].childNodes[1].childNodes[2])) {\n // eslint-disable-next-line\n chartRows[j].childNodes[0].childNodes[1].childNodes[2]['innerHTML'] = this.parent.initialChartRowElements[j].childNodes[0].childNodes[1].childNodes[2]['innerHTML'];\n }\n }\n }\n }\n this.templateData = record;\n var parentTrNode = this.getTableTrNode();\n var leftLabelNode = this.leftLabelContainer();\n var collapseParent = createElement('div', {\n className: 'e-collapse-parent'\n });\n parentTrNode[0].childNodes[0].childNodes[0].appendChild(collapseParent);\n var tasks = this.parent.dataOperation.setSortedChildTasks(record);\n this.parent.dataOperation.updateOverlappingIndex(tasks);\n var tRow;\n if (this.parent.enableVirtualization) {\n for (var i = 0; i < record.childRecords.length; i++) {\n tRow = this.getGanttChartRow(record.childRecords[i].index, this.parent.flatData[record.childRecords[i].index]);\n this.updateResourceTaskbarElement(tRow, parentTrNode);\n }\n }\n else {\n for (var i = 0; i < chartRows.length; i++) {\n if (chartRows[i].classList.contains('gridrowtaskId'\n + record.ganttProperties.rowUniqueID + 'level' + (record.level + 1))) {\n this.updateResourceTaskbarElement(chartRows[i], parentTrNode);\n }\n else if (record.hasChildRecords) {\n for (var j = 0; j < record.childRecords.length; j++) {\n if (record.childRecords[j].childRecords && !record.childRecords[j].expanded) {\n if (chartRows[i].classList.contains('gridrowtaskId'\n + tasks[j].ganttProperties.rowUniqueID + 'level' + (tasks[j].level + 1))) {\n this.updateResourceTaskbarElement(chartRows[i], parentTrNode);\n }\n }\n }\n }\n }\n }\n parentTrNode[0].childNodes[0].childNodes[0].appendChild([].slice.call(leftLabelNode)[0]);\n return parentTrNode[0].childNodes[0];\n };\n /**\n * To refresh all edited records\n *\n * @param {IGanttData} items .\n * @param {boolean} isValidateRange .\n * @returns {void} .\n * @private\n */\n ChartRows.prototype.refreshRecords = function (items, isValidateRange, isUndoRedo) {\n if (this.parent.isGanttChartRendered) {\n this.parent.renderTemplates();\n if (this.parent.enableMultiTaskbar) {\n var sortedRecords = [];\n sortedRecords = new DataManager(items).executeLocal(new Query()\n .sortBy('expanded', 'Descending'));\n items = sortedRecords;\n }\n for (var i = 0; i < items.length; i++) {\n var index = void 0;\n if (isUndoRedo) {\n index = this.parent.ids.indexOf(items[i].ganttProperties.taskId.toString());\n }\n else {\n index = this.parent.currentViewData.indexOf(items[i]);\n }\n if (!this.parent.enableMultiTaskbar ||\n (this.parent.enableMultiTaskbar && (items[i].expanded || !this.parent.isLoad))) {\n this.refreshRow(index, isValidateRange, isUndoRedo);\n }\n }\n this.parent.ganttChartModule.updateLastRowBottomWidth();\n }\n };\n ChartRows.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('renderPanels', this.createChartTable);\n this.parent.off('dataReady', this.initiateTemplates);\n this.parent.off('destroy', this.destroy);\n };\n ChartRows.prototype.destroy = function () {\n this.removeEventListener();\n };\n ChartRows.prototype.generateAriaLabel = function (data) {\n data = this.templateData;\n var defaultValue = '';\n var nameConstant = this.parent.localeObj.getConstant('name');\n var startDateConstant = this.parent.localeObj.getConstant('startDate');\n var endDateConstant = this.parent.localeObj.getConstant('endDate');\n var durationConstant = this.parent.localeObj.getConstant('duration');\n var taskNameVal = data.ganttProperties.taskName;\n var startDateVal = data.ganttProperties.startDate;\n var endDateVal = data.ganttProperties.endDate;\n var durationVal = data.ganttProperties.duration;\n if (data.ganttProperties.isMilestone) {\n defaultValue = nameConstant + ' ' + taskNameVal + ' ' + startDateConstant + ' '\n + this.parent.getFormatedDate(startDateVal);\n }\n else {\n if (taskNameVal) {\n defaultValue += nameConstant + ' ' + taskNameVal + ' ';\n }\n if (startDateVal) {\n defaultValue += startDateConstant + ' ' + this.parent.getFormatedDate(startDateVal) + ' ';\n }\n if (endDateVal) {\n defaultValue += endDateConstant + ' ' + this.parent.getFormatedDate(endDateVal) + ' ';\n }\n if (durationVal) {\n defaultValue += durationConstant + ' '\n + this.parent.getDurationString(durationVal, data.ganttProperties.durationUnit);\n }\n }\n return defaultValue;\n };\n ChartRows.prototype.generateBaselineAriaLabel = function (data) {\n data = this.templateData;\n var defaultValue = '';\n var nameConstant = this.parent.localeObj.getConstant('name');\n var startDateConstant = this.parent.localeObj.getConstant('startDate');\n var endDateConstant = this.parent.localeObj.getConstant('endDate');\n var taskNameVal = data.ganttProperties.taskName;\n var startDateVal = data.ganttProperties.baselineStartDate;\n var endDateVal = data.ganttProperties.baselineEndDate;\n defaultValue += 'Baseline' + ' ';\n defaultValue += nameConstant + ' ' + taskNameVal + ' ';\n defaultValue += startDateConstant + ' ' + this.parent.getFormatedDate(startDateVal) + ' ';\n defaultValue += endDateConstant + ' ' + this.parent.getFormatedDate(endDateVal) + ' ';\n return defaultValue;\n };\n ChartRows.prototype.generateSpiltTaskAriaLabel = function (data, ganttProp) {\n var defaultValue = '';\n var startDateConstant = this.parent.localeObj.getConstant('startDate');\n var endDateConstant = this.parent.localeObj.getConstant('endDate');\n var durationConstant = this.parent.localeObj.getConstant('duration');\n var startDateVal = data.startDate;\n var endDateVal = data.endDate;\n var durationVal = data.duration;\n if (startDateVal) {\n defaultValue += startDateConstant + ' ' + this.parent.getFormatedDate(startDateVal) + ' ';\n }\n if (endDateVal) {\n defaultValue += endDateConstant + ' ' + this.parent.getFormatedDate(endDateVal) + ' ';\n }\n if (durationVal) {\n defaultValue += durationConstant + ' '\n + this.parent.getDurationString(durationVal, ganttProp.durationUnit);\n }\n return defaultValue;\n };\n ChartRows.prototype.generateTaskLabelAriaLabel = function (type) {\n var label = '';\n if (type === 'left' && this.parent.labelSettings.leftLabel && !this.leftTaskLabelTemplateFunction) {\n label += this.parent.localeObj.getConstant('leftTaskLabel') +\n ' ' + this.getTaskLabel(this.parent.labelSettings.leftLabel);\n }\n else if (type === 'right' && this.parent.labelSettings.rightLabel && !this.rightTaskLabelTemplateFunction) {\n label += this.parent.localeObj.getConstant('rightTaskLabel') +\n ' ' + this.getTaskLabel(this.parent.labelSettings.rightLabel);\n }\n return label;\n };\n return ChartRows;\n}(DateProcessor));\nexport { ChartRows };\n","import { isScheduledTask } from '../base/utils';\nimport { getValue, isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nvar Dependency = /** @class */ (function () {\n function Dependency(gantt) {\n this.parentRecord = [];\n this.parentIds = [];\n this.parentPredecessors = [];\n this.validatedParentIds = [];\n this.storeId = null;\n this.parent = gantt;\n this.dateValidateModule = this.parent.dateValidationModule;\n }\n /**\n * Method to populate predecessor collections in records\n *\n * @returns {void} .\n * @private\n */\n Dependency.prototype.ensurePredecessorCollection = function () {\n var predecessorTasks = this.parent.predecessorsCollection;\n var length = predecessorTasks.length - 1;\n for (var count = length; count >= 0; count--) {\n var ganttData = predecessorTasks[count];\n var ganttProp = ganttData.ganttProperties;\n if ((!ganttData.hasChildRecords && !this.parent.allowParentDependency) || this.parent.allowParentDependency) {\n this.ensurePredecessorCollectionHelper(ganttData, ganttProp);\n }\n }\n };\n /**\n *\n * @param {IGanttData} ganttData .\n * @param {ITaskData} ganttProp .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.ensurePredecessorCollectionHelper = function (ganttData, ganttProp) {\n var predecessorVal = ganttProp.predecessorsName;\n if (predecessorVal && (typeof predecessorVal === 'string' || typeof predecessorVal === 'number')) {\n this.parent.setRecordValue('predecessor', this.calculatePredecessor(predecessorVal, ganttData), ganttProp, true);\n }\n else if (predecessorVal && typeof predecessorVal === 'object' && predecessorVal.length) {\n var preValues = [];\n for (var c = 0; c < predecessorVal.length; c++) {\n var predecessorItem = predecessorVal[c];\n var preValue = {};\n preValue.from = getValue('from', predecessorItem) ? getValue('from', predecessorItem) : predecessorVal[c];\n preValue.to = getValue('to', predecessorItem) ? getValue('to', predecessorItem) : ganttProp.rowUniqueID;\n preValue.type = getValue('type', predecessorItem) ? getValue('type', predecessorItem) : 'FS';\n var offsetUnits = getValue('offset', predecessorItem);\n if (isNullOrUndefined(offsetUnits)) {\n preValue.offset = 0;\n preValue.offsetUnit = this.parent.durationUnit.toLocaleLowerCase();\n }\n else if (typeof offsetUnits === 'string') {\n var tempOffsetUnits = this.getOffsetDurationUnit(getValue('offset', predecessorItem));\n preValue.offset = tempOffsetUnits.duration;\n preValue.offsetUnit = tempOffsetUnits.durationUnit;\n }\n else {\n preValue.offset = parseFloat(offsetUnits.toString());\n preValue.offsetUnit = this.parent.durationUnit.toLocaleLowerCase();\n }\n var isOwnParent = this.checkIsParent(preValue.from.toString());\n if (!isOwnParent) {\n preValues.push(preValue);\n }\n }\n this.parent.setRecordValue('predecessor', preValues, ganttProp, true);\n }\n this.parent.setRecordValue('predecessorsName', this.getPredecessorStringValue(ganttData), ganttProp, true);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.dependency, ganttProp.predecessorsName, ganttData);\n this.parent.setRecordValue(this.parent.taskFields.dependency, ganttProp.predecessorsName, ganttData);\n };\n /**\n * To render unscheduled empty task with 1 day duration during predecessor map\n *\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.updateUnscheduledDependency = function (data) {\n var task = this.parent.taskFields;\n var prdList = !isNullOrUndefined(data[task.dependency]) ?\n data[task.dependency].toString().split(',') : [];\n for (var i = 0; i < prdList.length; i++) {\n var predId = parseInt(prdList[i], 10);\n if (!isNaN(predId)) {\n var predData = this.parent.getRecordByID(predId.toString());\n var record = !isNullOrUndefined(predData) ?\n extend({}, {}, predData.taskData, true) : null;\n if (!isNullOrUndefined(record) && isNullOrUndefined(record[task.startDate])\n && isNullOrUndefined(record[task.duration]) && isNullOrUndefined(record[task.endDate])) {\n record[task.duration] = 1;\n record[task.startDate] = this.parent.projectStartDate;\n this.parent.updateRecordByID(record);\n }\n }\n }\n };\n /**\n *\n * @param {string} fromId .\n * @returns {boolean} .\n */\n Dependency.prototype.checkIsParent = function (fromId) {\n var boolValue = false;\n var task = this.parent.connectorLineModule.getRecordByID(fromId);\n if (task.hasChildRecords) {\n boolValue = true;\n }\n return boolValue;\n };\n /**\n * Get predecessor collection object from predecessor string value\n *\n * @param {string | number} predecessorValue .\n * @param {IGanttData} ganttRecord .\n * @returns {IPredecessor[]} .\n * @private\n */\n Dependency.prototype.calculatePredecessor = function (predecessorValue, ganttRecord) {\n var _this = this;\n var predecessor = predecessorValue.toString();\n var collection = [];\n var match;\n var isrelationship;\n var values = [];\n var offsetValue;\n var predecessorText;\n var parentRecords = [];\n predecessor.split(',').forEach(function (el) {\n var isGUId = false;\n var firstPart;\n var predecessorName;\n var isAlpha = false;\n var regex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n var elSplit = el.split('-');\n var id;\n if (elSplit.length === 6) {\n elSplit[4] = elSplit[4] + '-' + elSplit[5];\n elSplit.pop();\n }\n if (elSplit.length === 5 && elSplit[4].length >= 12) {\n id = el.substring(0, 36);\n if (regex.test(id)) {\n isGUId = true;\n }\n }\n if (el.includes('-')) {\n var lastIndex = el.lastIndexOf(\"-\");\n var lastPart = el.substring(lastIndex + 1);\n var lengthToSlice = void 0;\n if (el.includes('days')) {\n lengthToSlice = lastPart.includes('.') ? 11 : 9;\n }\n else if (el.includes('day')) {\n lengthToSlice = lastPart.includes('.') ? 10 : 8;\n }\n else {\n lengthToSlice = 2;\n }\n predecessorName = el.slice(-lengthToSlice).toString();\n if (el.includes('-') && /[A-Za-z]/.test(predecessorName)) {\n var indexFS = el.indexOf(predecessorName);\n if (indexFS !== -1) {\n firstPart = el.substring(0, indexFS);\n if (firstPart.includes('-')) {\n isAlpha = true;\n }\n }\n }\n }\n if (isGUId) {\n var split = void 0;\n split = elSplit[4].split('+');\n var spliceLength = void 0;\n ;\n if (split.length === 1) {\n values[0] = el;\n }\n else {\n spliceLength = split[1].length;\n values[0] = el.slice(0, -(spliceLength + 1));\n values[1] = split[1];\n }\n offsetValue = '+';\n if (elSplit[4].indexOf('-') >= 0) {\n split = elSplit[4].split('-');\n if (split.length === 1) {\n values[0] = el;\n }\n else {\n spliceLength = split[1].length;\n values[0] = el.slice(0, -(spliceLength + 1));\n values[1] = split[1];\n }\n offsetValue = '-';\n }\n }\n else {\n if (isAlpha && firstPart.includes('-')) {\n values[0] = firstPart;\n }\n else {\n values = el.split('+');\n offsetValue = '+';\n if (el.indexOf('-') >= 0) {\n values = el.split('-');\n offsetValue = '-';\n }\n }\n }\n match = [];\n var ids = _this.parent.viewType === 'ResourceView' ? _this.parent.getTaskIds() : _this.parent.ids;\n var isExist1 = _this.parent.viewType === 'ResourceView' ? ids.indexOf('T' + values[0]) : ids.indexOf(values[0]);\n if (isExist1 !== -1) {\n match[0] = values[0];\n }\n else {\n if (ids.indexOf(values[0]) === -1) {\n match = values[0].split(\" \");\n if (match.length === 1) {\n if (match[0].indexOf(\" \") != -1) {\n match = values[0].match(/(\\d+|[A-z]+)/g);\n }\n else {\n match[0] = values[0].slice(0, -2);\n match[1] = values[0].slice(-2);\n }\n }\n }\n else {\n match[0] = values[0];\n }\n }\n var isExist = _this.parent.viewType === 'ResourceView' ? ids.indexOf('T' + match[0]) : ids.indexOf(match[0]);\n /*Validate for appropriate predecessor*/\n if (match[0] && isExist !== -1) {\n if (match.length > 1) {\n var type = match[1].toUpperCase();\n if (type === 'FS' || type === 'FF' || type === 'SF' || type === 'SS') {\n predecessorText = type;\n }\n else {\n predecessorText = 'FS';\n }\n }\n else if (el.includes('-') && /[A-Za-z]/.test(predecessorName) && firstPart.includes('-')) {\n var type = el.slice(-2).toString();\n type.toUpperCase();\n if (type === 'FS' || type === 'FF' || type === 'SF' || type === 'SS') {\n predecessorText = type;\n }\n else {\n predecessorText = 'FS';\n }\n }\n else {\n predecessorText = 'FS';\n }\n }\n else {\n return; // exit current loop for invalid id (match[0])\n }\n var tempOffset = values.length > 1 ? offsetValue + '' + values[1] : '0';\n var offsetUnits = _this.getOffsetDurationUnit(tempOffset);\n var obj = {\n from: match[0],\n type: predecessorText,\n isDrawn: false,\n to: _this.parent.viewType === 'ResourceView' ? ganttRecord.ganttProperties.taskId.toString()\n : ganttRecord.ganttProperties.rowUniqueID.toString(),\n offsetUnit: offsetUnits.durationUnit,\n offset: offsetUnits.duration\n };\n var isOwnParent = _this.checkIsParent(match[0]);\n if (!_this.parent.allowParentDependency) {\n if (!isOwnParent) {\n collection.push(obj);\n }\n }\n else {\n var fromData = _this.parent.connectorLineModule.getRecordByID(obj.to);\n var toData = _this.parent.connectorLineModule.getRecordByID(obj.from);\n var isValid = void 0;\n if (_this.parent.connectorLineEditModule && toData && fromData) {\n isValid = _this.parent.connectorLineEditModule.validateParentPredecessor(toData, fromData);\n if (isValid) {\n collection.push(obj);\n if (parentRecords.indexOf(toData) == -1 && toData.hasChildRecords && _this.parent.editModule.cellEditModule && _this.parent.editModule.cellEditModule.isCellEdit) {\n parentRecords.push(extend([], [], [toData], true)[0]);\n }\n }\n }\n else {\n collection.push(obj);\n }\n match.splice(0);\n }\n });\n if (parentRecords.length > 0 && this.parent.undoRedoModule && this.parent.editModule && this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit) {\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1]['connectedRecords'] = parentRecords;\n }\n return collection;\n };\n /**\n * Get predecessor value as string with offset values\n *\n * @param {IGanttData} data .\n * @returns {string} .\n * @private\n */\n Dependency.prototype.getPredecessorStringValue = function (data) {\n var predecessors = data.ganttProperties.predecessor;\n var durationUnitTexts = this.parent.durationUnitTexts;\n var resultString = '';\n var temp1;\n var match;\n match = [];\n if (predecessors) {\n var length_1 = predecessors.length;\n for (var i = 0; i < length_1; i++) {\n var currentValue = predecessors[i];\n var temp = '';\n var id = this.parent.viewType === 'ResourceView' ? data.ganttProperties.taskId\n : data.ganttProperties.rowUniqueID;\n if (currentValue.from !== id.toString()) {\n temp = currentValue.from + currentValue.type;\n if (typeof (data.ganttProperties.taskId) === \"string\") {\n match[0] = temp.slice(0, -2);\n match[1] = temp.slice(-2);\n temp1 = match[0] + \" \" + match[1];\n }\n else {\n temp1 = temp;\n }\n temp = temp1;\n if (currentValue.offset !== 0) {\n temp += currentValue.offset > 0 ? ('+' + currentValue.offset + ' ') : (currentValue.offset + ' ');\n var multiple = currentValue.offset !== 1;\n if (currentValue.offsetUnit === 'day') {\n temp += multiple ? getValue('days', durationUnitTexts) : getValue('day', durationUnitTexts);\n }\n else if (currentValue.offsetUnit === 'hour') {\n temp += multiple ? getValue('hours', durationUnitTexts) : getValue('hour', durationUnitTexts);\n }\n else {\n temp += multiple ? getValue('minutes', durationUnitTexts) : getValue('minute', durationUnitTexts);\n }\n }\n if (resultString.length > 0) {\n resultString = resultString + ',' + temp;\n }\n else {\n resultString = temp;\n }\n }\n }\n }\n return resultString;\n };\n /*Get duration and duration unit value from tasks*/\n Dependency.prototype.getOffsetDurationUnit = function (val) {\n var duration = 0;\n var durationUnit = this.parent.durationUnit.toLocaleLowerCase();\n var durationUnitLabels = this.parent.durationUnitEditText;\n if (typeof val === 'string') {\n var values = val.match(/[^0-9]+|[0-9]+/g);\n for (var x = 0; x < values.length; x++) {\n values[x] = (values[x]).trim();\n }\n if (values[0] === '-' && values[1]) {\n values[1] = values[0] + values[1];\n values.shift();\n }\n else if (values[0] === '+') {\n values.shift();\n }\n if (values[1] === '.' && !isNaN(parseInt(values[2], 10))) {\n values[0] += values[1] + values[2];\n values.splice(1, 2);\n }\n if (values && values.length <= 2) {\n duration = parseFloat(values[0]);\n durationUnit = values[1] ? (values[1].toLowerCase()).trim() : '';\n if (getValue('minute', durationUnitLabels).indexOf(durationUnit) !== -1) {\n durationUnit = 'minute';\n }\n else if (getValue('hour', durationUnitLabels).indexOf(durationUnit) !== -1) {\n durationUnit = 'hour';\n }\n else if (getValue('day', durationUnitLabels).indexOf(durationUnit) !== -1) {\n durationUnit = 'day';\n }\n else {\n durationUnit = this.parent.durationUnit.toLocaleLowerCase();\n }\n }\n }\n else {\n duration = val;\n durationUnit = this.parent.durationUnit.toLocaleLowerCase();\n }\n if (isNaN(duration)) {\n duration = 0;\n durationUnit = this.parent.durationUnit.toLocaleLowerCase();\n }\n return {\n duration: duration,\n durationUnit: durationUnit\n };\n };\n /**\n * Update predecessor object in both from and to tasks collection\n *\n * @returns {void} .\n * @private\n */\n Dependency.prototype.updatePredecessors = function () {\n var predecessorsCollection = this.parent.predecessorsCollection;\n var ganttRecord;\n var length = predecessorsCollection.length;\n for (var count = 0; count < length; count++) {\n ganttRecord = predecessorsCollection[count];\n if ((!ganttRecord.hasChildRecords && !this.parent.allowParentDependency) || this.parent.allowParentDependency) {\n this.updatePredecessorHelper(ganttRecord, predecessorsCollection);\n if (!ganttRecord.ganttProperties.isAutoSchedule && this.parent.editSettings.allowEditing) {\n this.parent.connectorLineEditModule['calculateOffset'](ganttRecord);\n }\n }\n }\n };\n /**\n * To update predecessor collection to successor tasks\n *\n * @param {IGanttData} ganttRecord .\n * @param {IGanttData[]} predecessorsCollection .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.updatePredecessorHelper = function (ganttRecord, predecessorsCollection) {\n var connectorsCollection = ganttRecord.ganttProperties.predecessor;\n var successorGanttRecord;\n var connectorCount = connectorsCollection.length;\n predecessorsCollection = isNullOrUndefined(predecessorsCollection) ? [] : predecessorsCollection;\n for (var i = 0; i < connectorCount; i++) {\n var connector = connectorsCollection[i];\n successorGanttRecord = this.parent.connectorLineModule.getRecordByID(connector.from);\n var id = this.parent.viewType === 'ResourceView' ? ganttRecord.ganttProperties.taskId\n : ganttRecord.ganttProperties.rowUniqueID;\n if (connector.from !== id.toString()) {\n if (successorGanttRecord) {\n var predecessorCollection = void 0;\n if (successorGanttRecord.ganttProperties.predecessor) {\n predecessorCollection = (extend([], successorGanttRecord.ganttProperties.predecessor, [], true));\n predecessorCollection.push(connector);\n this.parent.setRecordValue('predecessor', predecessorCollection, successorGanttRecord.ganttProperties, true);\n // successorGanttRecord.ganttProperties.predecessor.push(connector);\n }\n else {\n predecessorCollection = [];\n predecessorCollection.push(connector);\n this.parent.setRecordValue('predecessor', predecessorCollection, successorGanttRecord.ganttProperties, true);\n // this.parent.setRecordValue('predecessor', [], successorGanttRecord.ganttProperties, true);\n // successorGanttRecord.ganttProperties.predecessor.push(connector);\n predecessorsCollection.push(successorGanttRecord);\n }\n }\n }\n }\n };\n /**\n * Method to validate date of tasks with predecessor values for all records\n *\n * @returns {void} .\n * @private\n */\n Dependency.prototype.updatedRecordsDateByPredecessor = function () {\n var _this = this;\n if (!this.parent.autoCalculateDateScheduling) {\n return;\n }\n var flatData = this.parent.flatData;\n var totLength = this.parent.flatData.length;\n var traverseParents = function (record) {\n _this.parent.dataOperation.updateParentItems(record);\n };\n for (var count = 0; count < totLength; count++) {\n if (flatData[count].ganttProperties.predecessorsName) {\n this.validatePredecessorDates(flatData[count]);\n var predecessorCollection = flatData[count].ganttProperties.predecessor;\n if (predecessorCollection && predecessorCollection.length > 1) {\n for (var i = 0; i < predecessorCollection.length; i++) {\n var validateRecord = this.parent.getRecordByID(predecessorCollection[i].to);\n if (validateRecord) {\n this.validatePredecessorDates(validateRecord);\n }\n }\n }\n if (flatData[count].hasChildRecords && this.parent.editModule && flatData[count].ganttProperties.startDate\n && this.parent.allowParentDependency) {\n this.updateChildItems(flatData[count]);\n }\n if (flatData[count].parentItem && !this.parent.isLoad) {\n var recordId = flatData[count].parentItem.taskId;\n traverseParents(this.parent.getRecordByID(recordId));\n }\n }\n }\n };\n Dependency.prototype.updateParentPredecessor = function () {\n if (this.parent.enablePredecessorValidation) {\n var parentPredecessorLength = this.parentPredecessors.length;\n for (var i = parentPredecessorLength - 1; i >= 0; i--) {\n var item = this.parentPredecessors[i];\n this.validatePredecessorDates(item);\n if (item.ganttProperties.startDate) {\n this.updateChildItems(item);\n }\n }\n }\n };\n /**\n * To validate task date values with dependency\n *\n * @param {IGanttData} ganttRecord .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.validatePredecessorDates = function (ganttRecord) {\n if (ganttRecord.ganttProperties.predecessor) {\n var predecessorsCollection = ganttRecord.ganttProperties.predecessor;\n var count = void 0;\n var parentGanttRecord = void 0;\n var record = null;\n var currentTaskId_1 = this.parent.viewType === 'ResourceView' ? ganttRecord.ganttProperties.taskId.toString()\n : ganttRecord.ganttProperties.rowUniqueID.toString();\n var predecessors = predecessorsCollection.filter(function (data) {\n if (data.to === currentTaskId_1) {\n return data;\n }\n else {\n return null;\n }\n });\n for (count = 0; count < predecessors.length; count++) {\n var predecessor = predecessors[count];\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor.from);\n record = this.parent.connectorLineModule.getRecordByID(predecessor.to);\n if (this.parent.viewType === 'ProjectView' && this.parent.allowTaskbarDragAndDrop) {\n var index = void 0;\n if (isNullOrUndefined(record)) {\n index = this.parent.editModule.taskbarEditModule.previousIds.indexOf(predecessor.to);\n record = this.parent.editModule.taskbarEditModule.previousFlatData[index];\n }\n else if (isNullOrUndefined(parentGanttRecord)) {\n index = this.parent.editModule.taskbarEditModule.previousIds.indexOf(predecessor.from);\n parentGanttRecord = this.parent.editModule.taskbarEditModule.previousFlatData[index];\n }\n }\n if (this.parent.allowParentDependency && this.parent.isLoad && this.parentPredecessors.indexOf(ganttRecord) === -1\n && (ganttRecord.hasChildRecords || record.hasChildRecords)) {\n this.parentPredecessors.push(ganttRecord);\n }\n if (record.ganttProperties.isAutoSchedule || this.parent.validateManualTasksOnLinking) {\n this.validateChildGanttRecord(parentGanttRecord, record);\n }\n }\n }\n };\n /**\n * Method to validate task with predecessor\n *\n * @param {IGanttData} parentGanttRecord .\n * @param {IGanttData} childGanttRecord .\n * @returns {void} .\n */\n Dependency.prototype.validateChildGanttRecord = function (parentGanttRecord, childGanttRecord) {\n if (this.parent.editedTaskBarItem === childGanttRecord || (parentGanttRecord && isNullOrUndefined(isScheduledTask(parentGanttRecord.ganttProperties)))\n || (childGanttRecord && isNullOrUndefined(isScheduledTask(childGanttRecord.ganttProperties)))) {\n return;\n }\n if (this.parent.isInPredecessorValidation && (childGanttRecord.ganttProperties.isAutoSchedule ||\n this.parent.validateManualTasksOnLinking)) {\n var childRecordProperty = childGanttRecord.ganttProperties;\n var currentTaskId_2 = this.parent.viewType === 'ResourceView' ? childRecordProperty.taskId.toString()\n : childRecordProperty.rowUniqueID.toString();\n var predecessorsCollection = childRecordProperty.predecessor;\n var childPredecessor = predecessorsCollection.filter(function (data) {\n if (data.to === currentTaskId_2) {\n return data;\n }\n else {\n return null;\n }\n });\n var startDate = this.getPredecessorDate(childGanttRecord, childPredecessor);\n this.parent.setRecordValue('startDate', startDate, childRecordProperty, true);\n this.parent.dataOperation.updateMappingData(childGanttRecord, 'startDate');\n var segments = childGanttRecord.ganttProperties.segments;\n if (isNullOrUndefined(segments)) {\n this.dateValidateModule.calculateEndDate(childGanttRecord);\n }\n this.parent.dataOperation.updateWidthLeft(childGanttRecord);\n if (!this.parent.isLoad && !this.parent.isFromOnPropertyChange && childGanttRecord.parentItem && this.parent.isInPredecessorValidation &&\n this.parent.getParentTask(childGanttRecord.parentItem).ganttProperties.isAutoSchedule) {\n if (this.parentIds.indexOf(childGanttRecord.parentItem.uniqueID) === -1) {\n this.parentIds.push(childGanttRecord.parentItem.uniqueID);\n this.parentRecord.push(childGanttRecord.parentItem);\n }\n }\n }\n };\n /**\n *\n * @param {IGanttData} ganttRecord .\n * @param {IPredecessor[]} predecessorsCollection .\n * @returns {Date} .\n * @private\n */\n Dependency.prototype.getPredecessorDate = function (ganttRecord, predecessorsCollection) {\n var _this = this;\n var maxStartDate;\n var tempStartDate;\n var parentGanttRecord;\n var childGanttRecord;\n var validatedPredecessor = predecessorsCollection.filter(function (data) {\n var id = _this.parent.viewType === 'ResourceView' ? ganttRecord.ganttProperties.taskId\n : ganttRecord.ganttProperties.rowUniqueID;\n if (data.to === id.toString()) {\n return data;\n }\n else {\n return null;\n }\n });\n if (validatedPredecessor) {\n var length_2 = validatedPredecessor.length;\n for (var i = 0; i < length_2; i++) {\n var predecessor = validatedPredecessor[i];\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor.from);\n childGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor.to);\n if (this.parent.viewType === 'ProjectView' && this.parent.allowTaskbarDragAndDrop && !(isNullOrUndefined(childGanttRecord) && isNullOrUndefined(parentGanttRecord))) {\n childGanttRecord = isNullOrUndefined(childGanttRecord) ? this.getRecord(parentGanttRecord, childGanttRecord, predecessor) : childGanttRecord;\n parentGanttRecord = isNullOrUndefined(parentGanttRecord) ? this.getRecord(parentGanttRecord, childGanttRecord, predecessor) : parentGanttRecord;\n }\n if (childGanttRecord && parentGanttRecord) {\n tempStartDate =\n this.getValidatedStartDate(childGanttRecord.ganttProperties, parentGanttRecord.ganttProperties, predecessor);\n }\n if (maxStartDate == null || this.dateValidateModule.compareDates(tempStartDate, maxStartDate) === 1) {\n maxStartDate = tempStartDate;\n }\n }\n }\n return maxStartDate;\n };\n /**\n * Get validated start date as per predecessor type\n *\n * @param {ITaskData} ganttProperty .\n * @param {ITaskData} parentRecordProperty .\n * @param {IPredecessor} predecessor .\n * @returns {Date} .\n */\n Dependency.prototype.getValidatedStartDate = function (ganttProperty, parentRecordProperty, predecessor) {\n var type = predecessor.type;\n var offset = predecessor.offset;\n var tempDate;\n var returnStartDate;\n switch (type) {\n case 'FS':\n tempDate = this.dateValidateModule.getValidEndDate(parentRecordProperty);\n if (!ganttProperty.isMilestone || offset !== 0) {\n tempDate = this.dateValidateModule.checkStartDate(tempDate, ganttProperty);\n }\n if (offset !== 0) {\n tempDate = this.updateDateByOffset(tempDate, predecessor, ganttProperty);\n }\n if (!ganttProperty.isMilestone) {\n returnStartDate = this.dateValidateModule.checkStartDate(tempDate, ganttProperty);\n }\n else {\n returnStartDate = tempDate;\n }\n break;\n case 'FF':\n case 'SF':\n tempDate = type === 'FF' ? this.dateValidateModule.getValidEndDate(parentRecordProperty) :\n this.dateValidateModule.getValidStartDate(parentRecordProperty);\n if (offset !== 0) {\n tempDate = this.updateDateByOffset(tempDate, predecessor, ganttProperty);\n }\n if (!ganttProperty.isMilestone) {\n tempDate = this.dateValidateModule.checkEndDate(tempDate, ganttProperty);\n }\n returnStartDate = this.dateValidateModule.getStartDate(tempDate, ganttProperty.duration, ganttProperty.durationUnit, ganttProperty);\n break;\n case 'SS':\n tempDate = this.dateValidateModule.getValidStartDate(parentRecordProperty);\n if (offset !== 0) {\n tempDate = this.updateDateByOffset(tempDate, predecessor, ganttProperty);\n }\n if (!ganttProperty.isMilestone) {\n returnStartDate = this.dateValidateModule.checkStartDate(tempDate, ganttProperty);\n }\n else {\n returnStartDate = tempDate;\n }\n break;\n }\n return returnStartDate;\n };\n /**\n *\n * @param {Date} date .\n * @param {IPredecessor} predecessor .\n * @param {ITaskData} record .\n * @returns {void} .\n */\n Dependency.prototype.updateDateByOffset = function (date, predecessor, record) {\n var resultDate;\n var offsetValue = predecessor.offset;\n var durationUnit = predecessor.offsetUnit;\n if (offsetValue < 0) {\n resultDate = this.dateValidateModule.getStartDate(this.dateValidateModule.checkEndDate(date, record), (offsetValue * -1), durationUnit, record, true);\n }\n else {\n resultDate = this.dateValidateModule.getEndDate(date, offsetValue, durationUnit, record, false);\n if (!record.isMilestone) {\n resultDate = this.dateValidateModule.checkStartDate(resultDate, record);\n }\n }\n return resultDate;\n };\n /**\n *\n * @param {IGanttData} records .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.createConnectorLinesCollection = function (records) {\n var ganttRecords = records ? records : this.parent.currentViewData;\n if (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport && this.parent.pdfExportModule.helper.exportProps && this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings &&\n this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth && this.parent.pdfExportModule.isPdfExport) {\n ganttRecords = this.parent.pdfExportModule.helper.beforeSinglePageExport['cloneCurrentViewData'];\n }\n var recordLength = ganttRecords.length;\n var count;\n var ganttRecord;\n var predecessorsCollection;\n if (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport && this.parent.pdfExportModule.helper.exportProps && this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings &&\n this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth && this.parent.pdfExportModule.isPdfExport) {\n this.parent.connectorLineModule.expandedRecords = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n this.parent.pdfExportModule.helper.beforeSinglePageExport['cloneFlatData'] : this.parent.getExpandedRecords(this.parent.pdfExportModule.helper.beforeSinglePageExport['cloneFlatData']);\n }\n else {\n this.parent.connectorLineModule.expandedRecords = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n this.parent.updatedRecords : this.parent.getExpandedRecords(this.parent.updatedRecords);\n }\n for (count = 0; count < recordLength; count++) {\n if (this.parent.editModule && this.parent.editModule.deletedTaskDetails.length > 0) {\n if (ganttRecords[count].parentItem) {\n var parentItem = this.parent.getRecordByID(ganttRecords[count].parentItem.taskId.toString());\n this.parent.setRecordValue('parentItem', this.parent.dataOperation.getCloneParent(parentItem), ganttRecords[count]);\n }\n }\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['canUpdateIndex']) {\n ganttRecords[count].index = count;\n if (ganttRecords[count].parentItem && this.parent.getParentTask(ganttRecords[count].parentItem)) {\n ganttRecords[count].parentItem.index = this.parent.getParentTask(ganttRecords[count].parentItem).index;\n }\n }\n ganttRecord = ganttRecords[count];\n predecessorsCollection = ganttRecord.ganttProperties.predecessor;\n if (predecessorsCollection) {\n this.addPredecessorsCollection(predecessorsCollection);\n }\n }\n };\n /**\n *\n * @param {object[]} predecessorsCollection .\n * @returns {void} .\n */\n Dependency.prototype.addPredecessorsCollection = function (predecessorsCollection) {\n var predecessorsLength;\n var predecessorCount;\n var predecessor;\n var parentGanttRecord;\n var childGanttRecord;\n if (predecessorsCollection) {\n predecessorsLength = predecessorsCollection.length;\n for (predecessorCount = 0; predecessorCount < predecessorsLength; predecessorCount++) {\n predecessor = predecessorsCollection[predecessorCount];\n var from = 'from';\n var to = 'to';\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor[from]);\n childGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor[to]);\n var isValid = true;\n if (((parentGanttRecord && parentGanttRecord.hasChildRecords && !parentGanttRecord.expanded) || (childGanttRecord && childGanttRecord.hasChildRecords && !childGanttRecord.expanded)) &&\n !this.parent.allowTaskbarOverlap && this.parent.viewType == 'ProjectView') {\n isValid = false;\n }\n if (isValid && this.parent.connectorLineModule.expandedRecords &&\n this.parent.connectorLineModule.expandedRecords.indexOf(parentGanttRecord) !== -1 &&\n this.parent.connectorLineModule.expandedRecords.indexOf(childGanttRecord) !== -1) {\n this.updateConnectorLineObject(parentGanttRecord, childGanttRecord, predecessor);\n }\n }\n }\n };\n /**\n * To refresh connector line object collections\n *\n * @param {IGanttData} parentGanttRecord .\n * @param {IGanttData} childGanttRecord .\n * @param {IPredecessor} predecessor .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.updateConnectorLineObject = function (parentGanttRecord, childGanttRecord, predecessor) {\n var connectorObj = this.parent.connectorLineModule.createConnectorLineObject(parentGanttRecord, childGanttRecord, predecessor);\n if (connectorObj) {\n if (childGanttRecord.isCritical && parentGanttRecord.isCritical) {\n connectorObj.isCritical = true;\n }\n if ((this.parent.connectorLineIds.length > 0 && this.parent.connectorLineIds.indexOf(connectorObj.connectorLineId) === -1) ||\n this.parent.connectorLineIds.length === 0) {\n this.parent.updatedConnectorLineCollection.push(connectorObj);\n this.parent.connectorLineIds.push(connectorObj.connectorLineId);\n }\n else if (this.parent.connectorLineIds.indexOf(connectorObj.connectorLineId) !== -1) {\n var index = this.parent.connectorLineIds.indexOf(connectorObj.connectorLineId);\n this.parent.updatedConnectorLineCollection[index] = connectorObj;\n }\n predecessor.isDrawn = true;\n }\n return connectorObj;\n };\n /**\n *\n * @param {IGanttData} childGanttRecord .\n * @param {IPredecessor[]} previousValue .\n * @param {string} validationOn .\n * @returns {void} .\n * @private\n */\n Dependency.prototype.validatePredecessor = function (childGanttRecord, previousValue, validationOn) {\n if (!this.parent.isInPredecessorValidation) {\n return;\n }\n if (childGanttRecord.ganttProperties.predecessor) {\n var taskBarModule = this.parent.editModule.taskbarEditModule;\n var ganttProp = void 0;\n if (taskBarModule) {\n ganttProp = taskBarModule.taskBarEditRecord;\n }\n var predecessorsCollection = childGanttRecord.ganttProperties.predecessor;\n var parentGanttRecord = void 0;\n var record = null;\n var predecessor = void 0;\n var successor = void 0;\n var currentTaskId_3 = this.parent.viewType === 'ResourceView' ? childGanttRecord.ganttProperties.taskId.toString()\n : childGanttRecord.ganttProperties.rowUniqueID.toString();\n var predecessors = predecessorsCollection.filter(function (data) {\n if (data.to === currentTaskId_3) {\n return data;\n }\n else {\n return null;\n }\n });\n var successors = predecessorsCollection.filter(function (data) {\n if (data.from === currentTaskId_3) {\n return data;\n }\n else {\n return null;\n }\n });\n var parentRec = void 0;\n for (var count = 0; count < predecessors.length; count++) {\n predecessor = predecessors[count];\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor.from);\n record = this.parent.connectorLineModule.getRecordByID(predecessor.to);\n if (record.parentItem) {\n parentRec = this.parent.getTaskByUniqueID(record.parentItem.uniqueID);\n if (this.parent.editModule['updateParentRecords'].indexOf(parentRec) == -1) {\n this.parent.editModule['updateParentRecords'].push(parentRec);\n }\n }\n if (parentGanttRecord.parentItem) {\n parentRec = this.parent.getTaskByUniqueID(parentGanttRecord.parentItem.uniqueID);\n if (this.parent.editModule['updateParentRecords'].indexOf(parentRec) == -1) {\n this.parent.editModule['updateParentRecords'].push(parentRec);\n }\n }\n if (this.parent.viewType === 'ProjectView' && this.parent.allowTaskbarDragAndDrop && !(isNullOrUndefined(record) && isNullOrUndefined(parentGanttRecord))) {\n record = isNullOrUndefined(record) ? this.getRecord(parentGanttRecord, record, predecessor) : record;\n parentGanttRecord = isNullOrUndefined(parentGanttRecord) ? this.getRecord(parentGanttRecord, record, predecessor) : parentGanttRecord;\n }\n if (this.parent.isInPredecessorValidation && record.ganttProperties.isAutoSchedule) {\n this.parent.isValidationEnabled = true;\n }\n else {\n this.parent.isValidationEnabled = false;\n }\n var id = this.parent.viewType === 'ResourceView' ? childGanttRecord.ganttProperties.taskId\n : childGanttRecord.ganttProperties.rowUniqueID;\n if ((id.toString() === predecessor.to\n || id.toString() === predecessor.from)\n && (!validationOn || validationOn === 'predecessor')) {\n this.validateChildGanttRecord(parentGanttRecord, record);\n if (this.parent.editModule['editedRecord'] && this.parent.editModule['editedRecord'].hasChildRecords && !this.parent.editModule['editedRecord'].parentItem) {\n this.isValidatedParentTaskID = record.ganttProperties.taskId;\n }\n }\n }\n for (var count = 0; count < successors.length; count++) {\n successor = successors[count];\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(successor.from);\n record = this.parent.connectorLineModule.getRecordByID(successor.to);\n if (record.parentItem) {\n parentRec = this.parent.getTaskByUniqueID(record.parentItem.uniqueID);\n if (this.parent.editModule['updateParentRecords'].indexOf(parentRec) == -1) {\n this.parent.editModule['updateParentRecords'].push(parentRec);\n }\n }\n if (parentGanttRecord.parentItem) {\n parentRec = this.parent.getTaskByUniqueID(parentGanttRecord.parentItem.uniqueID);\n if (this.parent.editModule['updateParentRecords'].indexOf(parentRec) == -1) {\n this.parent.editModule['updateParentRecords'].push(parentRec);\n }\n }\n if (this.parent.viewType === 'ProjectView' && this.parent.allowTaskbarDragAndDrop && !(isNullOrUndefined(record) && isNullOrUndefined(parentGanttRecord))) {\n record = isNullOrUndefined(record) ? this.getRecord(parentGanttRecord, record, successor) : record;\n parentGanttRecord = isNullOrUndefined(parentGanttRecord) ? this.getRecord(parentGanttRecord, record, successor) : parentGanttRecord;\n }\n if (this.parent.isInPredecessorValidation && record.ganttProperties.isAutoSchedule) {\n this.parent.isValidationEnabled = true;\n }\n else {\n this.parent.isValidationEnabled = false;\n }\n if (validationOn !== 'predecessor' && this.parent.isValidationEnabled) {\n this.validateChildGanttRecord(parentGanttRecord, record);\n if (record && record.hasChildRecords && this.isValidatedParentTaskID != record.ganttProperties.taskId) {\n this.updateChildItems(record);\n this.isValidatedParentTaskID = record.ganttProperties.taskId;\n }\n if (this.parent.editModule['editedRecord'] && this.parent.editModule['editedRecord'].hasChildRecords && !this.parent.editModule['editedRecord'].parentItem) {\n this.isValidatedParentTaskID = record.ganttProperties.taskId;\n }\n }\n else if (!record.ganttProperties.isAutoSchedule && this.parent.UpdateOffsetOnTaskbarEdit) {\n this.parent.connectorLineEditModule['calculateOffset'](record);\n }\n if (parentGanttRecord.expanded === false || record.expanded === false) {\n if (record) {\n this.validatePredecessor(record, undefined, 'successor');\n }\n continue;\n }\n if (record) {\n if (this.parent.editModule.isFirstCall) {\n this.storeId = JSON.parse(JSON.stringify(this.parent.ids));\n this.parent.editModule.isFirstCall = false;\n }\n if (this.storeId) {\n var index = (this.storeId.indexOf(record[this.parent.taskFields.id].toString()) !== -1) ? this.storeId.indexOf(record[this.parent.taskFields.id].toString()) : -1;\n if (index !== -1) {\n this.storeId = this.storeId.slice(0, index).concat(this.storeId.slice(index + 1));\n this.validatePredecessor(record, undefined, 'successor');\n }\n }\n else {\n this.validatePredecessor(record, undefined, 'successor');\n }\n }\n }\n if (record && !record.hasChildRecords && record.parentItem && this.validatedParentIds.indexOf(record.parentItem.taskId) === -1) {\n this.validatedParentIds.push(record.parentItem.taskId);\n }\n ;\n var validUpdate = true;\n if (record && record.hasChildRecords && this.validatedParentIds.indexOf(record.ganttProperties.taskId.toString()) !== -1) {\n validUpdate = false;\n }\n if (validUpdate) {\n if (record && record.ganttProperties.taskId !== this.isValidatedParentTaskID && ganttProp) {\n if ((taskBarModule.taskBarEditAction !== 'ParentDrag' && taskBarModule.taskBarEditAction !== 'ChildDrag')) {\n if (!ganttProp.hasChildRecords && record.hasChildRecords) {\n this.updateChildItems(record);\n this.isValidatedParentTaskID = record.ganttProperties.taskId;\n }\n }\n else if ((!record.hasChildRecords && taskBarModule.taskBarEditAction == 'ChildDrag') ||\n (record.hasChildRecords && (taskBarModule.taskBarEditAction == 'ChildDrag' || taskBarModule.taskBarEditAction == 'ParentDrag'))) {\n this.updateChildItems(record);\n this.isValidatedParentTaskID = record.ganttProperties.taskId;\n }\n if (record.parentItem) {\n this.parent.dataOperation.updateParentItems(record, true);\n var parentData = this.parent.getParentTask(record.parentItem);\n var index = (this.storeId && this.storeId.indexOf(parentData[this.parent.taskFields.id].toString()) !== -1) ? this.storeId.indexOf(parentData[this.parent.taskFields.id].toString()) : -1;\n if (parentData.ganttProperties.predecessor && parentData.ganttProperties.predecessor.length > 0 && index !== -1) {\n for (var i = 0; i < parentData.ganttProperties.predecessor.length; i++) {\n if (parentData.ganttProperties.predecessor[i].to != parentData.ganttProperties.taskId.toString()) {\n var childRec = this.parent.flatData[this.parent.ids.indexOf(parentData.ganttProperties.predecessor[i].to)];\n if (childRec && childRec.parentItem) {\n this.validateChildGanttRecord(record, childRec);\n }\n }\n }\n }\n }\n }\n else if (record && record.hasChildRecords && this.isValidatedParentTaskID != record.ganttProperties.taskId && !ganttProp) {\n this.updateChildItems(record);\n this.isValidatedParentTaskID = record.ganttProperties.taskId;\n }\n }\n }\n };\n /**\n *\n * @param {IGanttData} ganttRecord .\n * @returns {void} .\n */\n Dependency.prototype.updateChildItems = function (ganttRecord) {\n var previousData = this.parent.previousRecords[ganttRecord.uniqueID];\n var previousStartDate;\n if (isNullOrUndefined(previousData) ||\n (isNullOrUndefined(previousData) && !isNullOrUndefined(previousData.ganttProperties))) {\n previousStartDate = new Date(ganttRecord.ganttProperties.startDate.getTime());\n }\n else {\n if (!isNullOrUndefined(previousData.ganttProperties.startDate)) {\n previousStartDate = new Date(previousData.ganttProperties.startDate.getTime());\n }\n }\n var currentStartDate = ganttRecord.ganttProperties.startDate;\n var childRecords = [];\n var validStartDate;\n var validEndDate;\n var calcEndDate;\n var isRightMove;\n var durationDiff;\n this.getUpdatableChildRecords(ganttRecord, childRecords);\n if (childRecords.length === 0) {\n return;\n }\n if (!isNullOrUndefined(previousStartDate) && !isNullOrUndefined(currentStartDate) && previousStartDate.getTime() > currentStartDate.getTime()) {\n validStartDate = this.parent.dateValidationModule.checkStartDate(currentStartDate);\n validEndDate = this.parent.dateValidationModule.checkEndDate(previousStartDate, ganttRecord.ganttProperties);\n isRightMove = false;\n }\n else {\n validStartDate = this.parent.dateValidationModule.checkStartDate(previousStartDate);\n validEndDate = this.parent.dateValidationModule.checkEndDate(currentStartDate, ganttRecord.ganttProperties);\n isRightMove = true;\n }\n //Get Duration\n if (!isNullOrUndefined(validStartDate) && !isNullOrUndefined(validEndDate) && validStartDate.getTime() >= validEndDate.getTime()) {\n durationDiff = 0;\n }\n else {\n durationDiff = this.parent.dateValidationModule.getDuration(validStartDate, validEndDate, 'minute', true, false);\n }\n for (var i = 0; i < childRecords.length; i++) {\n if (childRecords[i].ganttProperties.isAutoSchedule) {\n if (durationDiff > 0) {\n var startDate = isScheduledTask(childRecords[i].ganttProperties) ?\n childRecords[i].ganttProperties.startDate : childRecords[i].ganttProperties.startDate ?\n childRecords[i].ganttProperties.startDate : childRecords[i].ganttProperties.endDate ?\n childRecords[i].ganttProperties.endDate : new Date(previousStartDate.toString());\n if (isRightMove) {\n calcEndDate = this.parent.dateValidationModule.getEndDate(this.parent.dateValidationModule.checkStartDate(startDate, childRecords[i].ganttProperties, childRecords[i].ganttProperties.isMilestone), durationDiff, 'minute', childRecords[i].ganttProperties, false);\n }\n else {\n calcEndDate = this.parent.dateValidationModule.getStartDate(this.parent.dateValidationModule.checkEndDate(startDate, childRecords[i].ganttProperties), durationDiff, 'minute', childRecords[i].ganttProperties);\n }\n this.calculateDateByRoundOffDuration(childRecords[i], calcEndDate);\n if (this.parent.isOnEdit && this.validatedChildItems.indexOf(childRecords[i]) === -1) {\n this.validatedChildItems.push(childRecords[i]);\n }\n }\n else if (isNullOrUndefined(previousData)) {\n calcEndDate = previousStartDate;\n this.calculateDateByRoundOffDuration(childRecords[i], calcEndDate);\n if (this.parent.isOnEdit && this.validatedChildItems.indexOf(childRecords[i]) === -1) {\n this.validatedChildItems.push(childRecords[i]);\n }\n }\n if (!this.parent.isLoad && childRecords[i].ganttProperties.predecessor && childRecords[i].ganttProperties.predecessor.length > 0) {\n this.validatePredecessor(childRecords[i], [], '');\n }\n }\n }\n if (childRecords.length) {\n this.parent.dataOperation.updateParentItems(ganttRecord, true);\n }\n };\n /**\n * To get updated child records.\n *\n * @param {IGanttData} parentRecord .\n * @param {IGanttData} childLists .\n * @returns {void} .\n */\n Dependency.prototype.getUpdatableChildRecords = function (parentRecord, childLists) {\n var childRecords = parentRecord.childRecords;\n for (var i = 0; i < childRecords.length; i++) {\n if (childRecords[i].ganttProperties.isAutoSchedule) {\n childLists.push(childRecords[i]);\n if (childRecords[i].hasChildRecords) {\n this.getUpdatableChildRecords(childRecords[i], childLists);\n }\n }\n }\n };\n /**\n *\n * @param {IGanttData} data .\n * @param {Date} newStartDate .\n * @returns {void} .\n */\n Dependency.prototype.calculateDateByRoundOffDuration = function (data, newStartDate) {\n var ganttRecord = data;\n var taskData = ganttRecord.ganttProperties;\n var projectStartDate = new Date(newStartDate.getTime());\n if (!isNullOrUndefined(taskData.endDate) && isNullOrUndefined(taskData.startDate)) {\n var endDate = this.parent.dateValidationModule.checkStartDate(projectStartDate, taskData, null);\n this.parent.setRecordValue('endDate', this.parent.dateValidationModule.checkEndDate(endDate, ganttRecord.ganttProperties), taskData, true);\n }\n else {\n this.parent.setRecordValue('startDate', this.parent.dateValidationModule.checkStartDate(projectStartDate, taskData, false), taskData, true);\n if (!isNullOrUndefined(taskData.duration)) {\n this.parent.dateValidationModule.calculateEndDate(ganttRecord);\n }\n }\n this.parent.dataOperation.updateWidthLeft(data);\n this.parent.dataOperation.updateTaskData(ganttRecord);\n };\n Dependency.prototype.getRecord = function (parentGanttRecord, record, predecessor) {\n var index;\n var data;\n if (isNullOrUndefined(record)) {\n index = this.parent.editModule.taskbarEditModule.previousIds.indexOf(predecessor.to);\n data = this.parent.editModule.taskbarEditModule.previousFlatData[index];\n }\n else if (isNullOrUndefined(parentGanttRecord)) {\n index = this.parent.editModule.taskbarEditModule.previousIds.indexOf(predecessor.from);\n data = this.parent.editModule.taskbarEditModule.previousFlatData[index];\n }\n return data;\n };\n /**\n * Method to get validate able predecessor alone from record\n *\n * @param {IGanttData} record .\n * @returns {IPredecessor[]} .\n * @private\n */\n Dependency.prototype.getValidPredecessor = function (record) {\n var _this = this;\n var validPredecessor = [];\n if (!isNullOrUndefined(record)) {\n var recPredecessor = record.ganttProperties.predecessor;\n if (recPredecessor && recPredecessor.length > 0) {\n validPredecessor = recPredecessor.filter(function (value) {\n var id = _this.parent.viewType === 'ResourceView' ? record.ganttProperties.taskId\n : record.ganttProperties.rowUniqueID;\n return value.from !== id.toString();\n });\n }\n }\n return validPredecessor;\n };\n return Dependency;\n}());\nexport { Dependency };\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar SvgRenderer = /** @class */ (function () {\n /* End-Properties */\n function SvgRenderer(rootID) {\n //Internal Variables\n this.svgLink = 'http://www.w3.org/2000/svg';\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n SvgRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n }; /* tslint:enable */\n /**\n * To create a Html5 SVG element\n *\n * @param {SVGAttributes} options - Options to create SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createSvg = function (options) {\n if (isNullOrUndefined(options.id)) {\n options.id = this.rootId + '_svg';\n }\n this.svgObj = document.getElementById(options.id);\n if (isNullOrUndefined(document.getElementById(options.id))) {\n this.svgObj = document.createElementNS(this.svgLink, 'svg');\n }\n this.svgObj = this.setElementAttributes(options, this.svgObj);\n this.setSVGSize(options.width, options.height);\n return this.svgObj;\n };\n // method to set the height and width for the SVG element\n SvgRenderer.prototype.setSVGSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width) || this.width <= 0) {\n this.svgObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.svgObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height) || this.height <= 0) {\n this.svgObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.svgObj.setAttribute('height', this.height.toString());\n }\n };\n /**\n * To draw a path\n *\n * @param {PathAttributes} options - Options to draw a path in SVG\n * @returns {Element} It returns a appropriate path\n */\n SvgRenderer.prototype.drawPath = function (options) {\n var path = document.getElementById(options.id);\n if (path === null) {\n path = document.createElementNS(this.svgLink, 'path');\n }\n path = this.setElementAttributes(options, path);\n return path;\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - Options to draw a line in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawLine = function (options) {\n var line = document.getElementById(options.id);\n if (line === null) {\n line = document.createElementNS(this.svgLink, 'line');\n }\n line = this.setElementAttributes(options, line);\n return line;\n };\n /**\n * To draw a rectangle\n *\n * @param {BaseAttibutes} options - Required options to draw a rectangle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawRectangle = function (options) {\n var rectangle = document.getElementById(options.id);\n if (rectangle === null) {\n rectangle = document.createElementNS(this.svgLink, 'rect');\n }\n rectangle = this.setElementAttributes(options, rectangle);\n return rectangle;\n };\n /**\n * To draw a circle\n *\n * @param {CircleAttributes} options - Required options to draw a circle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircle = function (options) {\n var circle = document.getElementById(options.id);\n if (circle === null) {\n circle = document.createElementNS(this.svgLink, 'circle');\n }\n circle = this.setElementAttributes(options, circle);\n return circle;\n };\n /**\n * To draw a polyline\n *\n * @param {PolylineAttributes} options - Options required to draw a polyline\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolyline = function (options) {\n var polyline = document.getElementById(options.id);\n if (polyline === null) {\n polyline = document.createElementNS(this.svgLink, 'polyline');\n }\n polyline = this.setElementAttributes(options, polyline);\n return polyline;\n };\n /**\n * To draw an ellipse\n *\n * @param {EllipseAttributes} options - Options required to draw an ellipse\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawEllipse = function (options) {\n var ellipse = document.getElementById(options.id);\n if (ellipse === null) {\n ellipse = document.createElementNS(this.svgLink, 'ellipse');\n }\n ellipse = this.setElementAttributes(options, ellipse);\n return ellipse;\n };\n /**\n * To draw a polygon\n *\n * @param {PolylineAttributes} options - Options needed to draw a polygon in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolygon = function (options) {\n var polygon = document.getElementById(options.id);\n if (polygon === null) {\n polygon = document.createElementNS(this.svgLink, 'polygon');\n }\n polygon = this.setElementAttributes(options, polygon);\n return polygon;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - Required options to draw an image in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawImage = function (options) {\n var img = document.createElementNS(this.svgLink, 'image');\n img.setAttributeNS(null, 'height', options.height.toString());\n img.setAttributeNS(null, 'width', options.width.toString());\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', options.href);\n img.setAttributeNS(null, 'x', options.x.toString());\n img.setAttributeNS(null, 'y', options.y.toString());\n img.setAttributeNS(null, 'id', options.id);\n img.setAttributeNS(null, 'visibility', options.visibility);\n if (!isNullOrUndefined(this.getOptionValue(options, 'clip-path'))) {\n img.setAttributeNS(null, 'clip-path', this.getOptionValue(options, 'clip-path'));\n }\n if (!isNullOrUndefined(options.preserveAspectRatio)) {\n img.setAttributeNS(null, 'preserveAspectRatio', options.preserveAspectRatio);\n }\n return img;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - Options needed to draw a text in SVG\n * @param {string} label - Label of the text\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createText = function (options, label) {\n var text = document.createElementNS(this.svgLink, 'text');\n text = this.setElementAttributes(options, text);\n if (!isNullOrUndefined(label)) {\n text.textContent = label;\n }\n return text;\n };\n /**\n * To create a tSpan\n *\n * @param {TextAttributes} options - Options to create tSpan\n * @param {string} label - The text content which is to be rendered in the tSpan\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTSpan = function (options, label) {\n var tSpan = document.createElementNS(this.svgLink, 'tspan');\n tSpan = this.setElementAttributes(options, tSpan);\n if (!isNullOrUndefined(label)) {\n tSpan.textContent = label;\n }\n return tSpan;\n };\n /**\n * To create a title\n *\n * @param {string} text - The text content which is to be rendered in the title\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTitle = function (text) {\n var title = document.createElementNS(this.svgLink, 'title');\n title.textContent = text;\n return title;\n };\n /**\n * To create defs element in SVG\n *\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createDefs = function () {\n var defs = document.createElementNS(this.svgLink, 'defs');\n return defs;\n };\n /**\n * To create clip path in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createClipPath = function (options) {\n var clipPath = document.createElementNS(this.svgLink, 'clipPath');\n clipPath = this.setElementAttributes(options, clipPath);\n return clipPath;\n };\n /**\n * To create foreign object in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create foreign object\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createForeignObject = function (options) {\n var foreignObject = document.createElementNS(this.svgLink, 'foreignObject');\n foreignObject = this.setElementAttributes(options, foreignObject);\n return foreignObject;\n };\n /**\n * To create group element in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create group\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createGroup = function (options) {\n var group = document.createElementNS(this.svgLink, 'g');\n group = this.setElementAttributes(options, group);\n return group;\n };\n /**\n * To create pattern in SVG\n *\n * @param {PatternAttributes} options - Required options to create pattern in SVG\n * @param {string} element - Specifies the name of the pattern\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createPattern = function (options, element) {\n var pattern = document.createElementNS(this.svgLink, element);\n pattern = this.setElementAttributes(options, pattern);\n return pattern;\n };\n /**\n * To create radial gradient in SVG\n *\n * @param {string[]} colors - Specifies the colors required to create radial gradient\n * @param {string} name - Specifies the name of the gradient\n * @param {RadialGradient} options - value for radial gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createRadialGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'radialGradient',\n 'cx': options.cx + '%',\n 'cy': options.cy + '%',\n 'r': options.r + '%',\n 'fx': options.fx + '%',\n 'fy': options.fy + '%'\n };\n this.drawGradient('radialGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'radialGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To create linear gradient in SVG\n *\n * @param {GradientColor[]} colors - Array of string specifies the values for color\n * @param {string} name - Specifies the name of the gradient\n * @param {LinearGradient} options - Specifies the options for gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createLinearGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'linearGradient',\n 'x1': options.x1 + '%',\n 'y1': options.y1 + '%',\n 'x2': options.x2 + '%',\n 'y2': options.y2 + '%'\n };\n this.drawGradient('linearGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'linearGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To render the gradient element in SVG\n *\n * @param {string} gradientType - Specifies the type of the gradient\n * @param {RadialGradient | LinearGradient} options - Options required to render a gradient\n * @param {string[]} colors - Array of string specifies the values for color\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawGradient = function (gradientType, options, colors) {\n var defs = this.createDefs();\n var gradient = document.createElementNS(this.svgLink, gradientType);\n gradient = this.setElementAttributes(options, gradient);\n for (var i = 0; i < colors.length; i++) {\n var stop_1 = document.createElementNS(this.svgLink, 'stop');\n stop_1.setAttribute('offset', colors[i].colorStop);\n stop_1.setAttribute('stop-color', colors[i].color);\n stop_1.setAttribute('stop-opacity', colors[i].opacity ? (colors[i].opacity) : '1');\n if (!isNullOrUndefined(colors[i].style)) {\n stop_1.style.cssText = colors[i].style;\n }\n gradient.appendChild(stop_1);\n }\n defs.appendChild(gradient);\n return defs;\n };\n /**\n * To render a clip path\n *\n * @param {BaseAttibutes} options - Options required to render a clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Rect';\n var rect = this.drawRectangle(options);\n clipPath.appendChild(rect);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To create circular clip path in SVG\n *\n * @param {CircleAttributes} options - Options required to create circular clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircularClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Circle';\n var circle = this.drawCircle(options);\n clipPath.appendChild(circle);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {Element} element - The element to which the attributes need to be set\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'style') {\n element.style.cssText = options[keys[i]];\n }\n else {\n element.setAttribute(keys[i], options[keys[i]]);\n }\n }\n return element;\n };\n /**\n * To create a Html5 canvas element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n SvgRenderer.prototype.createCanvas = function () {\n return null;\n };\n return SvgRenderer;\n}());\nexport { SvgRenderer };\n","/* eslint-disable no-case-declarations */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils.\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @private\n */\nvar CanvasRenderer = /** @class */ (function () {\n /* End-Properties */\n function CanvasRenderer(rootID) {\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n CanvasRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n };\n /* tslint:enable */\n /**\n * To create a Html5 canvas element\n *\n * @param {BaseAttibutes} options - Options to create canvas\n * @returns {HTMLCanvasElement} Creating a canvas\n */\n CanvasRenderer.prototype.createCanvas = function (options) {\n var canvasObj = document.createElement('canvas');\n canvasObj.setAttribute('id', this.rootId + '_canvas');\n this.ctx = canvasObj.getContext('2d');\n this.canvasObj = canvasObj;\n this.setCanvasSize(options.width, options.height);\n return this.canvasObj;\n };\n /**\n * To set the width and height for the Html5 canvas element\n *\n * @param {number} width - width of the canvas\n * @param {number} height - height of the canvas\n * @returns {void} Setting canvas size\n */\n CanvasRenderer.prototype.setCanvasSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width)) {\n this.canvasObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.canvasObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height)) {\n this.canvasObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.canvasObj.setAttribute('height', this.height.toString());\n }\n };\n // To set the values to the attributes\n CanvasRenderer.prototype.setAttributes = function (options) {\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n var dashArray = this.getOptionValue(options, 'stroke-dasharray');\n if (!isNullOrUndefined(dashArray)) {\n var dashArrayString = dashArray.split(',');\n this.ctx.setLineDash([parseInt(dashArrayString[0], 10), parseInt(dashArrayString[1], 10)]);\n }\n this.ctx.strokeStyle = this.getOptionValue(options, 'stroke');\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - required options to draw a line on the canvas\n * @returns {void} To draw a line\n */\n CanvasRenderer.prototype.drawLine = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.moveTo(options.x1, options.y1);\n this.ctx.lineTo(options.x2, options.y2);\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw a rectangle\n *\n * @param {RectAttributes} options - required options to draw a rectangle on the canvas.\n * @param {Int32Array} canvasTranslate TO get a translate value of canvas.\n * @returns {void} To draw rectangle.\n */\n CanvasRenderer.prototype.drawRectangle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var cornerRadius = options.rx;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = this.getOptionValue(options, 'opacity');\n this.setAttributes(options);\n this.ctx.rect(options.x, options.y, options.width, options.height);\n if (cornerRadius !== null && cornerRadius >= 0) {\n this.drawCornerRadius(options);\n }\n else {\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n this.ctx.fillRect(options.x, options.y, options.width, options.height);\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return (this.canvasObj);\n };\n // To draw the corner of a rectangle\n CanvasRenderer.prototype.drawCornerRadius = function (options) {\n var cornerRadius = options.rx;\n var x = options.x;\n var y = options.y;\n var width = options.width;\n var height = options.height;\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n if (width < 2 * cornerRadius) {\n cornerRadius = width / 2;\n }\n if (height < 2 * cornerRadius) {\n cornerRadius = height / 2;\n }\n this.ctx.beginPath();\n this.ctx.moveTo(x + width - cornerRadius, y);\n this.ctx.arcTo(x + width, y, x + width, y + height, cornerRadius);\n this.ctx.arcTo(x + width, y + height, x, y + height, cornerRadius);\n this.ctx.arcTo(x, y + height, x, y, cornerRadius);\n this.ctx.arcTo(x, y, x + width, y, cornerRadius);\n this.ctx.closePath();\n this.ctx.fill();\n this.ctx.stroke();\n };\n /**\n * To draw a path on the canvas\n *\n * @param {PathAttributes} options - options needed to draw path.\n * @param {Int32Array} canvasTranslate - Array of numbers to translate the canvas.\n * @returns {Element} To draw a path.\n */\n CanvasRenderer.prototype.drawPath = function (options, canvasTranslate) {\n var path = options.d;\n var dataSplit = path.split(' ');\n var borderWidth = this.getOptionValue(options, 'stroke-width');\n var canvasCtx = this.ctx;\n var flag = true;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = options.opacity ? options.opacity : this.getOptionValue(options, 'fill-opacity');\n this.setAttributes(options);\n for (var i = 0; i < dataSplit.length; i = i + 3) {\n var x1 = parseFloat(dataSplit[i + 1]);\n var y1 = parseFloat(dataSplit[i + 2]);\n switch (dataSplit[i]) {\n case 'M':\n if (!options.innerR && !options.cx) {\n this.ctx.moveTo(x1, y1);\n }\n break;\n case 'L':\n if (!options.innerR) {\n this.ctx.lineTo(x1, y1);\n }\n break;\n case 'Q':\n var q1 = parseFloat(dataSplit[i + 3]);\n var q2 = parseFloat(dataSplit[i + 4]);\n this.ctx.quadraticCurveTo(x1, y1, q1, q2);\n i = i + 2;\n break;\n case 'C':\n var c1 = parseFloat(dataSplit[i + 3]);\n var c2 = parseFloat(dataSplit[i + 4]);\n var c3 = parseFloat(dataSplit[i + 5]);\n var c4 = parseFloat(dataSplit[i + 6]);\n this.ctx.bezierCurveTo(x1, y1, c1, c2, c3, c4);\n i = i + 4;\n break;\n case 'A':\n if (!options.innerR) {\n if (options.cx) {\n this.ctx.arc(options.cx, options.cy, options.radius, 0, 2 * Math.PI, options.counterClockWise);\n }\n else {\n this.ctx.moveTo(options.x, options.y);\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.lineTo(options.x, options.y);\n }\n }\n else if (flag) {\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.arc(options.x, options.y, options.innerR, options.end, options.start, !options.counterClockWise);\n flag = false;\n }\n i = i + 5;\n break;\n case 'z':\n case 'Z':\n this.ctx.closePath();\n //since for loop is incremented by 3, to get next value after 'z' i is decremented for 2.\n i = i - 2;\n break;\n }\n }\n if (options.fill !== 'none' && options.fill !== undefined) {\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n }\n if (borderWidth > 0) {\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - options required to draw text\n * @param {string} label - Specifies the text which has to be drawn on the canvas\n * @param {number} transX - Specifies the text of translate X\n * @param {number} transY - Specifies the text of translate Y\n * @param {number} dy - Specifies the text of translate dy\n * @param {boolean} isTSpan - Specifies the boolean value of span value\n * @returns {void}\n */\n CanvasRenderer.prototype.createText = function (options, label, transX, transY, dy, isTSpan) {\n var fontWeight = this.getOptionValue(options, 'font-weight');\n if (!isNullOrUndefined(fontWeight) && fontWeight.toLowerCase() === 'regular') {\n fontWeight = 'normal';\n }\n var fontSize = this.getOptionValue(options, 'font-size');\n var fontFamily = this.getOptionValue(options, 'font-family');\n var fontStyle = this.getOptionValue(options, 'font-style').toLowerCase();\n var font = (fontStyle + ' ' + fontWeight + ' ' + fontSize + ' ' + fontFamily);\n var anchor = this.getOptionValue(options, 'text-anchor');\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n if (anchor === 'middle') {\n anchor = 'center';\n }\n this.ctx.save();\n this.ctx.fillStyle = options.fill;\n this.ctx.font = font;\n this.ctx.textAlign = anchor;\n this.ctx.globalAlpha = opacity;\n if (options.baseline) {\n this.ctx.textBaseline = options.baseline;\n }\n if (!isTSpan) {\n var txtlngth = 0;\n this.ctx.translate(options.x + (txtlngth / 2) + (transX ? transX : 0), options.y + (transY ? transY : 0));\n this.ctx.rotate(options.labelRotation * Math.PI / 180);\n }\n this.ctx.fillText(label, isTSpan ? options.x : 0, isTSpan ? dy : 0);\n this.ctx.restore();\n return this.canvasObj;\n };\n /**\n * To draw circle on the canvas\n *\n * @param {CircleAttributes} options - required options to draw the circle\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawCircle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(options.cx, options.cy, options.r, 0, 2 * Math.PI);\n this.ctx.fillStyle = options.fill;\n this.ctx.globalAlpha = options.opacity;\n this.ctx.fill();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.setAttributes(options);\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw polyline\n *\n * @param {PolylineAttributes} options - options needed to draw polyline\n * @returns {void}\n */\n CanvasRenderer.prototype.drawPolyline = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n var points = options.points.split(' ');\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i].split(',');\n var x = parseFloat(point[0]);\n var y = parseFloat(point[1]);\n if (i === 0) {\n this.ctx.moveTo(x, y);\n }\n else {\n this.ctx.lineTo(x, y);\n }\n }\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw an ellipse on the canvas\n *\n * @param {EllipseAttributes} options - options needed to draw ellipse\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawEllipse = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var circumference = Math.max(options.rx, options.ry);\n var scaleX = options.rx / circumference;\n var scaleY = options.ry / circumference;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.translate(options.cx, options.cy);\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.save();\n this.ctx.scale(scaleX, scaleY);\n this.ctx.arc(0, 0, circumference, 0, 2 * Math.PI, false);\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n this.ctx.restore();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - options required to draw an image on the canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawImage = function (options) {\n this.ctx.save();\n var imageObj = new Image();\n if (!isNullOrUndefined(options.href)) {\n imageObj.src = options.href;\n this.ctx.drawImage(imageObj, options.x, options.y, options.width, options.height);\n }\n this.ctx.restore();\n };\n /**\n * To create a linear gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns color\n */\n CanvasRenderer.prototype.createLinearGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createLinearGradient(0, 0, 0, this.canvasObj.height);\n }\n var color = this.setGradientValues(colors, myGradient);\n return color;\n };\n /**\n * To create a radial gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns gradient color\n */\n CanvasRenderer.prototype.createRadialGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createRadialGradient(0, 0, 0, 0, 0, this.canvasObj.height);\n }\n var colorName = this.setGradientValues(colors, myGradient);\n return colorName;\n };\n // To set the gradient values\n CanvasRenderer.prototype.setGradientValues = function (colors, myGradient) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n for (var i = 0; i <= colors.length - 1; i++) {\n var color = colors[i].color;\n var newColorStop = (colors[i].colorStop).slice(0, -1);\n var stopColor = parseInt(newColorStop, 10) / 100;\n myGradient.addColorStop(stopColor, color);\n }\n colorName = myGradient.toString();\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {HTMLElement} element - The element to which the attributes need to be set\n * @returns {HTMLElement} It returns null value\n */\n CanvasRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n var values = Object.keys(options).map(function (key) { return options[key]; });\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], values[i]);\n }\n return null;\n };\n /**\n * To update the values of the canvas element attributes\n *\n * @param {SVGCanvasAttributes} options - Specifies the colors required to create gradient\n * @returns {void}\n */\n CanvasRenderer.prototype.updateCanvasAttributes = function (options) {\n this.setElementAttributes(options, this.canvasObj);\n var ctx = this.ctx;\n if (!isNullOrUndefined(this.dataUrl)) {\n var img_1 = new Image;\n img_1.onload = function () {\n ctx.drawImage(img_1, 0, 0);\n };\n img_1.src = this.dataUrl;\n }\n };\n /**\n * This method clears the given rectangle region\n *\n * @param {Rect} rect The rect parameter as passed\n */\n CanvasRenderer.prototype.clearRect = function (rect) {\n this.ctx.restore();\n this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);\n };\n /**\n * For canvas rendering in chart\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createGroup = function () {\n return null;\n };\n /**\n * To render a clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawClipPath = function () {\n return null;\n };\n /**\n * To render a Circular clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawCircularClipPath = function () {\n return null;\n };\n /**\n * Clip method to perform clip in canvas mode\n *\n * @param {BaseAttibutes} options The canvas clip of options\n */\n CanvasRenderer.prototype.canvasClip = function (options) {\n this.ctx.save();\n this.ctx.fillStyle = 'transparent';\n this.ctx.rect(options.x, options.y, options.width, options.height);\n this.ctx.fill();\n this.ctx.clip();\n };\n /**\n * Tp restore the canvas\n */\n CanvasRenderer.prototype.canvasRestore = function () {\n this.ctx.restore();\n };\n /**\n * To draw a polygon\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawPolygon = function () {\n return null;\n };\n /**\n * To create defs element in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createDefs = function () {\n return null;\n };\n /**\n * To create clip path in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createClipPath = function () {\n return null;\n };\n /**\n * To create a Html5 SVG element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createSvg = function () {\n return null;\n };\n return CanvasRenderer;\n}());\nexport { CanvasRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { SvgRenderer } from '../svg-render/index';\nimport { createElement, remove, merge } from '@syncfusion/ej2-base';\n/**\n * Function to measure the height and width of the text.\n *\n * @private\n * @param {string} text To get a text\n * @param {FontModel} font To get a font of the text\n * @returns {Size} measureText\n */\nexport function measureText(text, font, themeFontStyle) {\n var breakText = text || ''; // For avoid NuLL value\n var htmlObject = document.getElementById('chartmeasuretext');\n if (htmlObject === null) {\n htmlObject = createElement('text', { id: 'chartmeasuretext' });\n document.body.appendChild(htmlObject);\n }\n if (typeof (text) === 'string' && (text.indexOf('<') > -1 || text.indexOf('>') > -1)) {\n var textArray = text.split(' ');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].indexOf('
    ') === -1) {\n textArray[i] = textArray[i].replace(/[<>]/g, '&');\n }\n }\n text = textArray.join(' ');\n }\n htmlObject.innerHTML = (breakText.indexOf('
    ') > -1 || breakText.indexOf('
    ') > -1) ? breakText : text;\n htmlObject.style.position = 'fixed';\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontFamily = font.fontFamily || themeFontStyle.fontFamily;\n htmlObject.style.visibility = 'hidden';\n htmlObject.style.top = '-100';\n htmlObject.style.left = '0';\n htmlObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n htmlObject.style.lineHeight = 'normal';\n return new Size(htmlObject.clientWidth, htmlObject.clientHeight);\n}\n/** @private */\nexport function withInAreaBounds(x, y, areaBounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= areaBounds.x - width && x <= areaBounds.x + areaBounds.width + width && y >= areaBounds.y - height\n && y <= areaBounds.y + areaBounds.height + height);\n}\n/** @private */\nexport function findDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY, controlName) {\n if (controlName === void 0) { controlName = ''; }\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY + ' ' +\n ' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n if (controlName === 'RangeNavigator') {\n if ((arrowLocation.x - arrowPadding) > width / 2) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX + arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x) + ' ' + height);\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX - arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n if ((arrowLocation.x - arrowPadding) > startX) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (arrowLocation.y));\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY)\n + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height) +\n ' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (width) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (startX) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY) +\n ' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n/** @private */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/** @private */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\nvar Side = /** @class */ (function () {\n function Side(bottom, right) {\n this.isRight = right;\n this.isBottom = bottom;\n }\n return Side;\n}());\nexport { Side };\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar TextOption = /** @class */ (function (_super) {\n __extends(TextOption, _super);\n function TextOption(id, x, y, anchor, text, transform, baseLine, labelRotation) {\n if (transform === void 0) { transform = ''; }\n var _this = _super.call(this, id) || this;\n _this.transform = '';\n _this.baseLine = 'auto';\n _this.labelRotation = 0;\n _this.x = x;\n _this.y = y;\n _this.anchor = anchor;\n _this.text = text;\n _this.transform = transform;\n _this.baseLine = baseLine;\n _this.labelRotation = labelRotation;\n return _this;\n }\n return TextOption;\n}(CustomizeOption));\nexport { TextOption };\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function removeElement(id) {\n var element = getElement(id);\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var renderer = new SvgRenderer('');\n var temp = calculateShapes(location, size, shape, options, url);\n var htmlObject = renderer['draw' + temp.functionName](temp.renderOption);\n htmlObject.setAttribute('aria-label', label);\n return htmlObject;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url) {\n var path;\n var functionName = 'Path';\n var width = size.width;\n var height = size.height;\n var locX = location.x;\n var locY = location.y;\n var x = location.x + (-width / 2);\n var y = location.y + (-height / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': locX, 'cy': locY });\n break;\n case 'Plus':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'Cross':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'HorizontalLine':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY;\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'VerticalLine':\n path = 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' + (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'Diamond':\n path = 'M' + ' ' + x + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + locY + ' z';\n merge(options, { 'd': path });\n break;\n case 'Rectangle':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (-height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Triangle':\n path = 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'InvertedTriangle':\n path = 'M' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + (locX - (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Pentagon':\n var eq = 72;\n var xValue = void 0;\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n path = 'M' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ';\n }\n else {\n path = path.concat('L' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ');\n }\n }\n path = path.concat('Z');\n merge(options, { 'd': path });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nvar PathOption = /** @class */ (function (_super) {\n __extends(PathOption, _super);\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n var _this = _super.call(this, id) || this;\n _this.opacity = opacity;\n _this.fill = fill;\n _this.stroke = color;\n _this['stroke-width'] = width;\n _this['stroke-dasharray'] = dashArray;\n _this.d = d;\n return _this;\n }\n return PathOption;\n}(CustomizeOption));\nexport { PathOption };\n/** @private */\nexport function textElement(options, font, color, parent, themeStyle) {\n var renderOptions = {};\n var renderer = new SvgRenderer('');\n renderOptions = {\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily || themeStyle.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine\n };\n var text = typeof options.text === 'string' ? options.text : options.text[0];\n var htmlObject = renderer.createText(renderOptions, text);\n if (parent) {\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\nvar TooltipLocation = /** @class */ (function () {\n function TooltipLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return TooltipLocation;\n}());\nexport { TooltipLocation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 security/detect-object-injection */\n/* eslint-disable no-useless-escape */\n/* eslint-disable security/detect-non-literal-regexp */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\nimport { NotifyPropertyChanges, Property, Event, Complex, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { extend, compile as templateComplier, Component, resetBlazorTemplate, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '../svg-render/index';\nimport { ChildProperty, createElement, remove, Browser, Animation, animationMode } from '@syncfusion/ej2-base';\nimport { getTooltipThemeColor } from './interface';\nimport { Size, Rect, Side, measureText, getElement, findDirection, drawSymbol, textElement } from './helper';\nimport { removeElement, TextOption, TooltipLocation, PathOption, withInAreaBounds } from './helper';\n/**\n * Configures the fonts in charts.\n *\n * @private\n */\nvar TextStyle = /** @class */ (function (_super) {\n __extends(TextStyle, _super);\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TextStyle.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Segoe UI')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], TextStyle.prototype, \"opacity\", void 0);\n return TextStyle;\n}(ChildProperty));\nexport { TextStyle };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar TooltipBorder = /** @class */ (function (_super) {\n __extends(TooltipBorder, _super);\n function TooltipBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], TooltipBorder.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"dashArray\", void 0);\n return TooltipBorder;\n}(ChildProperty));\nexport { TooltipBorder };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar AreaBounds = /** @class */ (function (_super) {\n __extends(AreaBounds, _super);\n function AreaBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"height\", void 0);\n return AreaBounds;\n}(ChildProperty));\nexport { AreaBounds };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar ToolLocation = /** @class */ (function (_super) {\n __extends(ToolLocation, _super);\n function ToolLocation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"y\", void 0);\n return ToolLocation;\n}(ChildProperty));\nexport { ToolLocation };\n/**\n * Represents the Tooltip control.\n * ```html\n *
    \n * \n * ```\n *\n * @private\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Tooltip(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n */\n Tooltip.prototype.preRender = function () {\n this.allowServerDataBinding = false;\n this.initPrivateVariable();\n if (!this.isCanvas) {\n this.removeSVG();\n }\n this.createTooltipElement();\n };\n Tooltip.prototype.initPrivateVariable = function () {\n this.renderer = new SvgRenderer(this.element.id);\n this.themeStyle = getTooltipThemeColor(this.theme);\n this.formattedText = [];\n this.padding = 5;\n this.highlightPadding = 3;\n this.areaMargin = 10;\n this.isFirst = true;\n this.markerPoint = [];\n };\n Tooltip.prototype.removeSVG = function () {\n var svgObject = document.getElementById(this.element.id + '_svg');\n var templateObject = document.getElementById(this.element.id + 'parent_template');\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n if (svgObject && svgObject.parentNode) {\n remove(svgObject);\n }\n if (templateObject && templateObject.parentNode) {\n remove(templateObject);\n }\n };\n /**\n * To Initialize the control rendering.\n */\n Tooltip.prototype.render = function () {\n this.fadeOuted = false;\n if (!this.template) {\n this.renderText(this.isFirst);\n var argsData = {\n cancel: false, name: 'tooltipRender', tooltip: this\n };\n this.trigger('tooltipRender', argsData);\n var markerSide = this.renderTooltipElement(this.areaBounds, this.location);\n this.drawMarker(markerSide.isBottom, markerSide.isRight, this.markerSize);\n }\n else {\n this.updateTemplateFn();\n this.createTemplate(this.areaBounds, this.location);\n }\n this.trigger('loaded', { tooltip: this });\n var element = document.getElementById('chartmeasuretext');\n if (element) {\n remove(element);\n }\n this.allowServerDataBinding = true;\n };\n Tooltip.prototype.createTooltipElement = function () {\n this.textElements = [];\n if (!this.template || this.shared) {\n // SVG element for tooltip\n if (this.enableRTL) {\n this.element.setAttribute('dir', 'ltr');\n }\n var svgObject = this.renderer.createSvg({ id: this.element.id + '_svg' });\n this.element.appendChild(svgObject);\n // Group to hold text and path.\n var groupElement = document.getElementById(this.element.id + '_group');\n if (!groupElement) {\n groupElement = this.renderer.createGroup({ id: this.element.id + '_group' });\n groupElement.setAttribute('transform', 'translate(0,0)');\n }\n svgObject.appendChild(groupElement);\n var pathElement = this.renderer.drawPath({\n 'id': this.element.id + '_path', 'stroke-width': ((this.theme === 'Fabric' || this.theme === 'Fluent') && !this.border.width) ? 1 : this.border.width,\n 'fill': this.fill || this.themeStyle.tooltipFill, 'opacity': ((this.theme === 'TailwindDark' || this.theme === 'Tailwind' || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark') && this.opacity === 0.75) ?\n 1 : this.opacity,\n 'stroke': this.border.color || (this.theme === 'Fabric' || this.theme === 'Fluent' ? '#D2D0CE' : this.border.color)\n });\n groupElement.appendChild(pathElement);\n }\n };\n Tooltip.prototype.drawMarker = function (isBottom, isRight, size) {\n if (this.shapes.length <= 0) {\n return null;\n }\n var shapeOption;\n var count = 0;\n var markerGroup = this.renderer.createGroup({ id: this.element.id + '_trackball_group' });\n var groupElement = getElement(this.element.id + '_group');\n if (!groupElement) {\n return null;\n }\n var x = ((this.enableRTL) ? this.elementSize.width - (size / 2) :\n (this.marginX * 2) + (size / 2)) + (isRight ? this.arrowPadding : 0);\n for (var _i = 0, _a = this.shapes; _i < _a.length; _i++) {\n var shape = _a[_i];\n if (shape !== 'None') {\n shapeOption = new PathOption(this.element.id + '_Trackball_' + count, this.palette[count], 1, '#cccccc', 1, null);\n if (this.markerPoint[count]) {\n var padding = 0;\n if (this.header.indexOf(' -1) {\n padding = this.header.split(//g).length + count;\n }\n markerGroup.appendChild(drawSymbol(new TooltipLocation(x, this.markerPoint[count] - this.padding + (isBottom ? this.arrowPadding : padding)), shape, new Size(size, size), '', shapeOption, null));\n }\n count++;\n }\n }\n groupElement.appendChild(markerGroup);\n };\n Tooltip.prototype.renderTooltipElement = function (areaBounds, location) {\n var tooltipDiv = getElement(this.element.id);\n var arrowLocation = new TooltipLocation(0, 0);\n var tipLocation = new TooltipLocation(0, 0);\n var svgObject = getElement(this.element.id + '_svg');\n var groupElement = getElement(this.element.id + '_group');\n var pathElement = getElement(this.element.id + '_path');\n var rect;\n var isTop = false;\n var isLeft = false;\n var isBottom = false;\n var x = 0;\n var y = 0;\n if (!isNullOrUndefined(groupElement)) {\n if (this.header !== '') {\n this.elementSize.height += this.marginY;\n }\n if (this.isFixed) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n rect = new Rect(location.x, location.y, width, height);\n }\n else if (this.content.length > 1) {\n rect = this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y);\n isTop = true;\n }\n else {\n rect = this.tooltipLocation(areaBounds, location, arrowLocation, tipLocation);\n if (!this.inverted) {\n isTop = (rect.y < (location.y + this.clipBounds.y));\n isBottom = !isTop;\n y = (isTop ? 0 : this.arrowPadding);\n }\n else {\n isLeft = (rect.x < (location.x + this.clipBounds.x));\n x = (isLeft ? 0 : this.arrowPadding);\n if (this.allowHighlight) {\n rect.x += isLeft ? this.highlightPadding : -(2 * this.highlightPadding);\n }\n }\n }\n if (this.header !== '') {\n var wrapPadding = 2;\n var padding = 0;\n var wrapHeader = this.isWrap ? this.wrappedText : this.header;\n if (this.isWrap && typeof (wrapHeader) === 'string' && (wrapHeader.indexOf('<') > -1 || wrapHeader.indexOf('>') > -1)) {\n var textArray = wrapHeader.split('
    ');\n wrapPadding = textArray.length;\n }\n if (this.header.indexOf(' -1) {\n padding = 5 * (this.header.split(//g).length - 1);\n }\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var headerSize = measureText(this.isWrap ? this.wrappedText : this.header, font, this.themeStyle.textStyle).height +\n (this.marginY * wrapPadding) + (isBottom ? this.arrowPadding : 0) + (this.isWrap ? 5 : padding); //header padding;\n var xLength = (this.marginX * 3) + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0);\n var direction = 'M ' + xLength + ' ' + headerSize +\n 'L ' + (rect.width + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0) - (this.marginX * 2)) +\n ' ' + headerSize;\n var pathElement_1 = this.renderer.drawPath({\n 'id': this.element.id + '_header_path', 'stroke-width': 1,\n 'fill': null, 'opacity': this.theme === ('Material3' || 'Material3Dark') ? 0.2 : 0.8, 'stroke': this.themeStyle.tooltipHeaderLine, 'd': direction\n });\n groupElement.appendChild(pathElement_1);\n }\n var start = this.border.width / 2;\n var pointRect = new Rect(start + x, start + y, rect.width - start, rect.height - start);\n groupElement.setAttribute('opacity', '1');\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(tooltipDiv, rect);\n }\n else {\n this.updateDiv(tooltipDiv, rect.x, rect.y);\n }\n // eslint-disable-next-line no-extra-boolean-cast\n svgObject.setAttribute('height', (rect.height + this.border.width + (!((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('width', (rect.width + this.border.width + (((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('opacity', '1');\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n isTop = this.tooltipPlacement.indexOf('Top') > -1;\n isBottom = this.tooltipPlacement.indexOf('Bottom') > -1;\n isLeft = this.tooltipPlacement.indexOf('Left') > -1;\n }\n pathElement.setAttribute('d', findDirection(this.rx, this.ry, pointRect, arrowLocation, this.arrowPadding, isTop, isBottom, isLeft, tipLocation.x, tipLocation.y, this.controlName));\n if (this.enableShadow && this.theme !== 'Bootstrap4') {\n // To fix next chart initial tooltip opacity issue in tab control\n var shadowId = this.element.id + '_shadow';\n if (this.theme === 'Tailwind' || this.theme === 'TailwindDark'\n || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark') {\n pathElement.setAttribute('box-shadow', '0px 1px 2px rgba(0, 0, 0, 0.06), 0px 1px 3px rgba(0, 0, 0, 0.1)');\n }\n else {\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n }\n var shadow = '';\n shadow += '';\n shadow += '';\n var defElement = this.renderer.createDefs();\n defElement.setAttribute('id', this.element.id + 'SVG_tooltip_definition');\n groupElement.appendChild(defElement);\n defElement.innerHTML = shadow;\n }\n var borderColor = ((this.theme === 'Fabric' || this.theme === 'Fluent') && !this.border.color) ? '#D2D0CE' : this.border.color;\n pathElement.setAttribute('stroke', borderColor);\n if (!isNullOrUndefined(this.border.dashArray)) {\n pathElement.setAttribute('stroke-dasharray', this.border.dashArray);\n }\n this.changeText(new TooltipLocation(x, y), isBottom, !isLeft && !isTop && !isBottom);\n if (this.revert) {\n this.inverted = !this.inverted;\n this.revert = false;\n }\n }\n return new Side(isBottom, !isLeft && !isTop && !isBottom);\n };\n Tooltip.prototype.changeText = function (point, isBottom, isRight) {\n var element = document.getElementById(this.element.id + '_text');\n if (isBottom) {\n element.setAttribute('transform', 'translate(0,' + this.arrowPadding + ')');\n }\n if (isRight) {\n element.setAttribute('transform', 'translate(' + this.arrowPadding + ' 0)');\n }\n };\n Tooltip.prototype.findFormattedText = function () {\n this.formattedText = [];\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n this.formattedText = this.formattedText.concat(this.header);\n }\n this.formattedText = this.formattedText.concat(this.content);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.renderText = function (isRender) {\n var height = 0;\n var width = 0; // Padding for text;\n var subWidth = 0;\n var lines;\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var groupElement = getElement(this.element.id + '_group');\n var tspanElement;\n var textCollection;\n var tspanStyle = '';\n var line;\n var tspanOption;\n this.findFormattedText();\n this.isWrap = false;\n var isRtlEnabled = document.body.getAttribute('dir') === 'rtl';\n var anchor = isRtlEnabled && !this.enableRTL ? 'end' : 'start';\n this.leftSpace = this.areaBounds.x + this.location.x;\n this.rightSpace = (this.areaBounds.x + this.areaBounds.width) - this.leftSpace;\n var headerContent = this.header.replace(//g, '').replace(/<\\/b>/g, '').trim();\n var isBoldTag = this.header.indexOf('') > -1 && this.header.indexOf('') > -1;\n var headerWidth = measureText(this.formattedText[0], font, this.themeStyle.textStyle).width\n + (2 * this.marginX) + this.arrowPadding;\n var isLeftSpace = (this.location.x - headerWidth) < this.location.x;\n var isRightSpace = (this.areaBounds.x + this.areaBounds.width) < (this.location.x + headerWidth);\n var header;\n var headerSpace = (headerContent !== '') ? this.marginY : 0;\n var isRow = true;\n var isColumn = true;\n this.markerPoint = [];\n var markerSize = (this.shapes.length > 0) ? 10 : 0;\n var markerPadding = (this.shapes.length > 0) ? 5 : 0;\n var spaceWidth = 4;\n var subStringLength;\n var fontSize = '12px';\n var fontWeight = '400';\n var labelColor = this.themeStyle.tooltipLightLabel;\n var dy = (22 / parseFloat(fontSize)) * (parseFloat(font.size));\n var contentWidth = [];\n var textHeight = 0;\n if (!isRender || this.isCanvas) {\n removeElement(this.element.id + '_text');\n removeElement(this.element.id + '_header_path');\n removeElement(this.element.id + '_trackball_group');\n removeElement(this.element.id + 'SVG_tooltip_definition');\n }\n // Condition to resolve the text size issue only in chart.\n if (this.controlName === 'Chart' && parseFloat(fontSize) < parseFloat(font.size)) {\n textHeight = (parseFloat(font.size) - parseFloat(fontSize));\n }\n var options = new TextOption(this.element.id + '_text', this.marginX * 2, (textHeight + this.marginY * 2 + this.padding * 2 + (this.marginY === 2 ? this.controlName === 'RangeNavigator' ? 5 : 3 : 0)), anchor, '');\n var parentElement = textElement(options, font, font.color || this.themeStyle.tooltipBoldLabel, groupElement, this.themeStyle.textStyle);\n var withoutHeader = this.formattedText.length === 1 && this.formattedText[0].indexOf(' : ') > -1;\n var isHeader = this.header !== '';\n var size = isHeader && isBoldTag ? 16 : 13;\n for (var k = 0, pointsLength = this.formattedText.length; k < pointsLength; k++) {\n textCollection = this.formattedText[k].replace(/<(b|strong)>/g, '')\n .replace(/<\\/(b|strong)>/g, '')\n .split(//g);\n if (this.isTextWrap && this.header !== this.formattedText[k] && this.formattedText[k].indexOf(' this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n textCollection = this.formattedText[k].match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n }\n if (k === 0 && !withoutHeader && this.isTextWrap &&\n (this.leftSpace < headerWidth || isLeftSpace) &&\n (this.rightSpace < headerWidth || isRightSpace)) {\n subStringLength = Math.round(this.leftSpace > this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n header = headerContent !== '' ? headerContent : this.formattedText[k];\n textCollection = header.match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n this.wrappedText = isBoldTag ? '' + textCollection.join('
    ') + '
    ' : textCollection.join('
    ');\n this.isWrap = textCollection.length > 1;\n }\n if (textCollection[0] === '') {\n continue;\n }\n if ((k !== 0) || (headerContent === '')) {\n this.markerPoint.push((headerContent !== '' ? (this.marginY) : 0) + options.y + height - (textHeight !== 0 ? ((textHeight / this.markerSize) * (parseFloat(font.size) / this.markerSize)) : 0));\n }\n for (var i = 0, len = textCollection.length; i < len; i++) { // string value of unicode for LTR is \\u200E\n lines = textCollection[i].replace(//g, '
    ').replace(/<\\/b>/g, '
    ').replace(/:/g, (this.enableRTL) ? '
    \\u200E:
    ' : '
    \\u200E:
    ')\n .split('
    ');\n if (this.enableRTL && lines.length > 0 && textCollection[i].match(/:/g)) {\n lines[0] = lines[0].trim();\n lines.reverse();\n }\n subWidth = 0;\n isColumn = true;\n height += dy;\n for (var j = 0, len_1 = lines.length; j < len_1; j++) {\n line = lines[j];\n if (this.enableRTL && line !== '' && this.isRTLText(line)) {\n line = line.concat('\\u200E');\n }\n if (!/\\S/.test(line) && line !== '') {\n line = ' '; //to trim multiple white spaces to single white space\n }\n if ((!isColumn && line === ' ') || (line.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '')) {\n subWidth += line !== ' ' ? spaceWidth : 0;\n if (isColumn && !isRow) {\n if (this.header.indexOf(' -1 && k !== 0) {\n headerSpace += this.header.split(//g).length;\n }\n tspanOption = {\n x: (this.marginX * 2) + (markerSize + markerPadding),\n dy: dy + ((isColumn) ? headerSpace : 0), fill: ''\n };\n headerSpace = null;\n }\n else {\n if (isRow && isColumn) {\n tspanOption = {\n x: (headerContent === '') ? ((this.marginX * 2) + (markerSize + markerPadding))\n : (this.marginX * 2) + (this.isWrap ? (markerSize + markerPadding) : 0)\n };\n }\n else {\n tspanOption = {};\n }\n }\n isColumn = false;\n tspanElement = this.renderer.createTSpan(tspanOption, '');\n parentElement.appendChild(tspanElement);\n if (line.indexOf('') > -1 || ((isBoldTag && j === 0 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = '600';\n labelColor = this.themeStyle.tooltipBoldLabel;\n tspanStyle = 'font-weight:' + fontWeight;\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n else {\n tspanStyle = fontWeight === '600' ? 'font-weight:' + fontWeight : '';\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n if (line.indexOf('') > -1 || ((isBoldTag && j === len_1 - 1 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'Normal';\n labelColor = this.themeStyle.tooltipLightLabel;\n }\n // eslint-disable-next-line no-useless-escape\n if (tspanStyle !== '') {\n tspanElement.style.fontWeight = tspanStyle.split('font-weight:')[1];\n tspanElement.style.color = tspanElement.getAttribute('fill');\n }\n // 'inherit' will apply css style from parent element.\n tspanElement.style.fontFamily = 'inherit';\n tspanElement.style.fontStyle = 'inherit';\n tspanElement.style.fontSize = (this.header === this.formattedText[k]) ? font.size : this.textStyle.size;\n tspanElement.style.fontWeight = (this.header === this.formattedText[k] && (this.header.indexOf('') || this.header.indexOf('')) === -1) ? (this.textStyle.fontWeight || '600') : line.indexOf('') > -1 || line.indexOf('') > -1 ? 'bold' : (this.textStyle.fontWeight || font.fontWeight);\n var textFont = extend({}, this.textStyle, null, true)[key];\n textFont.fontWeight = tspanElement.style.fontWeight;\n isRow = false;\n (tspanElement).textContent = line = this.getTooltipTextContent(line);\n subWidth += measureText(line, textFont, this.themeStyle.textStyle).width;\n }\n }\n subWidth -= spaceWidth;\n width = Math.max(width, subWidth);\n contentWidth.push(subWidth);\n }\n }\n this.elementSize = new Size(width + (width > 0 ? (2 * this.marginX) : 0), height);\n this.elementSize.width += (markerSize + markerPadding); // marker size + marker Spacing\n var element = (parentElement.childNodes[0]);\n if (headerContent !== '' && element && !this.isWrap) {\n font.fontWeight = '600';\n var width_1 = (this.elementSize.width + (2 * this.padding)) / 2 - measureText(headerContent, font, this.themeStyle.textStyle).width / 2;\n element.setAttribute('x', width_1.toString());\n }\n this.renderContentRTL(parentElement, isHeader, markerSize + markerPadding, contentWidth);\n };\n Tooltip.prototype.renderContentRTL = function (textElement, isHeader, markerSize, contentWidth) {\n if (this.enableRTL) {\n var tspanElement = void 0;\n var contentWidthIndex = isHeader ? 1 : 0;\n for (var i = 0; i < textElement.childNodes.length; i++) {\n tspanElement = (textElement.childNodes[i]);\n if ((!isHeader || i > 0) && !isNullOrUndefined(tspanElement.getAttribute('x'))) {\n tspanElement.setAttribute('x', (this.elementSize.width - (markerSize + contentWidth[contentWidthIndex])).toString());\n contentWidthIndex++;\n }\n }\n }\n };\n Tooltip.prototype.getTooltipTextContent = function (tooltipText) {\n var characterCollection = tooltipText.match(/<[a-zA-Z\\/](.|\\n)*?>/g);\n if (isNullOrUndefined(characterCollection)) {\n return tooltipText;\n }\n var isRtlText = this.isRTLText(tooltipText);\n for (var i = 0; i < characterCollection.length; i++) {\n if (this.isValidHTMLElement(characterCollection[i].replace('<', '').replace('/', '').replace('>', '').trim())) {\n tooltipText = tooltipText.replace(characterCollection[i], isRtlText ? '\\u200E' : '');\n }\n }\n return tooltipText;\n };\n Tooltip.prototype.isValidHTMLElement = function (element) {\n return document.createElement(element).toString() !== '[object HTMLUnknownElement]';\n };\n Tooltip.prototype.isRTLText = function (tooltipContent) {\n return /[\\u0590-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]/.test(tooltipContent);\n };\n Tooltip.prototype.createTemplate = function (areaBounds, location) {\n var argsData = { cancel: false, name: 'tooltipRender', tooltip: this };\n this.trigger('tooltipRender', argsData);\n var parent = document.getElementById(this.element.id);\n if (this.isCanvas) {\n this.removeSVG();\n }\n var firstElement = parent.firstElementChild;\n if (firstElement) {\n remove(firstElement);\n }\n if (!argsData.cancel) {\n var elem = createElement('div', { id: this.element.id + 'parent_template' });\n var templateElement = void 0;\n if (this.controlName === 'Chart' && this.shared) {\n for (var i = 0; i < this.data.length; i++) {\n var sharedTemplateElement = this.templateFn(this.data[i], this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n if (i === 0) {\n templateElement = sharedTemplateElement;\n }\n else {\n if (sharedTemplateElement.length > 1) {\n templateElement[i].outerHTML = sharedTemplateElement[i].outerHTML || sharedTemplateElement[i].textContent;\n }\n else {\n templateElement[templateElement.length - 1].outerHTML += sharedTemplateElement[0].outerHTML;\n }\n }\n }\n }\n else {\n templateElement = this.templateFn(this.data, this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n }\n while (templateElement && templateElement.length > 0) {\n if (isBlazor() || templateElement.length === 1) {\n elem.appendChild(templateElement[0]);\n templateElement = null;\n }\n else {\n elem.appendChild(templateElement[0]);\n }\n }\n parent.appendChild(elem);\n var element = this.isCanvas ? elem : this.element;\n var rect = element.getBoundingClientRect();\n this.padding = 0;\n this.elementSize = new Size(rect.width, rect.height);\n var tooltipRect = this.shared ? this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y)\n : this.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(this.element, tooltipRect);\n }\n else {\n this.updateDiv(element, tooltipRect.x, tooltipRect.y);\n }\n if (this.blazorTemplate) {\n //Customer issue - F149037 Call back function to handle the blazor tooltip alignment issues\n var tooltipRendered = function () {\n var rect1 = getElement(thisObject_1.element.id).getBoundingClientRect();\n thisObject_1.elementSize = new Size(rect1.width, rect1.height);\n var tooltipRect1 = thisObject_1.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n thisObject_1.updateDiv(getElement(thisObject_1.element.id), tooltipRect1.x, tooltipRect1.y);\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisObject_1 = this;\n tooltipRendered.bind(thisObject_1, areaBounds, location);\n updateBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate', this.blazorTemplate.name, this.blazorTemplate.parent, undefined, tooltipRendered);\n }\n }\n else {\n remove(getElement(this.element.id + '_tooltip'));\n }\n };\n Tooltip.prototype.sharedTooltipLocation = function (bounds, x, y) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var tooltipRect = new Rect(x + 2 * this.padding, y - height - this.padding, width, height);\n if (tooltipRect.y < bounds.y) {\n tooltipRect.y += (tooltipRect.height + 2 * this.padding);\n }\n if (tooltipRect.y + tooltipRect.height > bounds.y + bounds.height) {\n tooltipRect.y = Math.max((bounds.y + bounds.height) - (tooltipRect.height + 2 * this.padding), bounds.y);\n }\n if (tooltipRect.x + tooltipRect.width > bounds.x + bounds.width) {\n tooltipRect.x = (bounds.x + this.location.x) - (tooltipRect.width + 4 * this.padding);\n }\n if (tooltipRect.x < bounds.x) {\n tooltipRect.x = bounds.x;\n }\n return tooltipRect;\n };\n Tooltip.prototype.getCurrentPosition = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n var position = this.tooltipPlacement;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var markerHeight = this.offset;\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n if (position === 'Top' || position === 'Bottom') {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (position === 'Bottom') {\n location.y = symbolLocation.y + clipY + markerHeight;\n }\n if (bounds.x + bounds.width < location.x + width) {\n location.x = (bounds.width > width) ? ((bounds.x + bounds.width) - width + 6) : bounds.x;\n arrowLocation.x = tipLocation.x = (bounds.width > width) ? (bounds.x + symbolLocation.x - location.x) : symbolLocation.x;\n }\n else if (bounds.x > location.x) {\n location.x = bounds.x;\n arrowLocation.x = tipLocation.x = symbolLocation.x;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if (position === 'Left') {\n location.x = symbolLocation.x + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (bounds.y + bounds.height < location.y + height) {\n location.y = (bounds.height > height) ? ((bounds.y + bounds.height) - height + 6) : bounds.y;\n arrowLocation.y = tipLocation.y = (bounds.height > height) ? (bounds.y + symbolLocation.y - location.y) : symbolLocation.y;\n }\n else if (bounds.y > location.y) {\n location.y = bounds.y;\n arrowLocation.y = tipLocation.y = symbolLocation.y;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.tooltipLocation = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n var tooltipRect = this.getCurrentPosition(bounds, symbolLocation, arrowLocation, tipLocation);\n return tooltipRect;\n }\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var markerHeight = this.offset;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var boundsX = bounds.x;\n var boundsY = bounds.y;\n this.outOfBounds = false;\n if (!this.inverted) {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * (this.allowHighlight ? this.highlightPadding : this.padding)) -\n this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if ((location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n if (location.y + height + this.arrowPadding > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight;\n }\n if (((location.x + width > boundsX + bounds.width) && location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > boundsX + bounds.width && !(this.controlName === 'Progressbar')) {\n arrowLocation.x += ((location.x + width) - (boundsX + bounds.width));\n tipLocation.x += ((location.x + width) - (boundsX + bounds.width));\n location.x -= ((location.x + width) - (boundsX + bounds.width));\n }\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (arrowLocation.x + this.arrowPadding > width - this.rx) {\n arrowLocation.x = width - this.rx - this.arrowPadding;\n tipLocation.x = width - this.rx - this.arrowPadding;\n }\n if (arrowLocation.x - this.arrowPadding < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if (((bounds.x + bounds.width) - (location.x + arrowLocation.x)) < this.areaMargin + this.arrowPadding ||\n (location.x + arrowLocation.x) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n this.revert = true;\n location = new TooltipLocation(symbolLocation.x + markerHeight + clipX, symbolLocation.y + clipY - this.elementSize.height / 2 - (this.padding));\n tipLocation.x = arrowLocation.x = 0;\n tipLocation.y = arrowLocation.y = height / 2;\n if ((location.x + this.arrowPadding + width > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > boundsX + bounds.width ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (this.arrowPadding + width);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + markerHeight + clipX;\n }\n if (location.y <= boundsY) {\n tipLocation.y -= (boundsY - location.y);\n arrowLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= bounds.height + boundsY) {\n arrowLocation.y += ((location.y + height) - (bounds.height + boundsY));\n tipLocation.y += ((location.y + height) - (bounds.height + boundsY));\n location.y -= ((location.y + height) - (bounds.height + boundsY));\n }\n if ((this.arrowPadding) + arrowLocation.y > height - this.ry) {\n arrowLocation.y = height - this.arrowPadding - this.ry;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = (this.arrowPadding) + this.ry;\n tipLocation.y = 0;\n }\n }\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + clipX + markerHeight;\n }\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.y <= boundsY) {\n arrowLocation.y -= (boundsY - location.y);\n tipLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= boundsY + bounds.height) {\n arrowLocation.y += ((location.y + height) - (boundsY + bounds.height));\n tipLocation.y += ((location.y + height) - (boundsY + bounds.height));\n location.y -= ((location.y + height) - (boundsY + bounds.height));\n }\n if (arrowLocation.y + this.arrowPadding > height - this.ry) {\n arrowLocation.y = height - this.ry - this.arrowPadding;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = tipLocation.y = this.ry + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if ((location.y + arrowLocation.y) < this.areaMargin + this.arrowPadding ||\n ((bounds.y + bounds.height) - (location.y + arrowLocation.y)) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n location = new TooltipLocation(symbolLocation.x + clipX - this.padding - this.elementSize.width / 2, symbolLocation.y + clipY - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding);\n this.revert = true;\n tipLocation.x = arrowLocation.x = width / 2;\n tipLocation.y = arrowLocation.y = 0;\n if (location.y < boundsY || (this.isNegative)) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + markerHeight + clipY;\n }\n if (location.y + this.arrowPadding + height > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX) {\n tipLocation.x -= (boundsX - location.x);\n arrowLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > bounds.width + boundsX) {\n arrowLocation.x += ((location.x + width) - (bounds.width + boundsX));\n tipLocation.x += ((location.x + width) - (bounds.width + boundsX));\n location.x -= ((location.x + width) - (bounds.width + boundsX));\n }\n if ((this.arrowPadding) + arrowLocation.x > width - this.rx) {\n tipLocation.x = width - this.rx - (this.arrowPadding);\n arrowLocation.x = width - this.rx - (this.arrowPadding);\n }\n if (arrowLocation.x - (this.arrowPadding) < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + (this.arrowPadding);\n }\n }\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n Tooltip.prototype.animateTooltipDiv = function (tooltipDiv, rect) {\n var _this = this;\n var x = parseFloat(tooltipDiv.style.left);\n var y = parseFloat(tooltipDiv.style.top);\n var currenDiff;\n new Animation({}).animate(tooltipDiv, {\n duration: (this.duration === 0 && animationMode === 'Enable') ? 300 : this.duration,\n progress: function (args) {\n currenDiff = (args.timeStamp / args.duration);\n tooltipDiv.style.animation = null;\n if ((_this.controlName === 'Chart' && _this.shared) && !_this.enableRTL) {\n tooltipDiv.style.transition = isBlazor() ? 'transform 0.3s' : 'transform 0.1s';\n tooltipDiv.style.transform = 'translate(' + (x + currenDiff * (rect.x - x)) + 'px,' + (y + currenDiff * (rect.y - y)) + 'px)';\n tooltipDiv.style.left = '';\n tooltipDiv.style.top = '';\n }\n else {\n tooltipDiv.style.left = (x + currenDiff * (rect.x - x)) + 'px';\n tooltipDiv.style.top = (y + currenDiff * (rect.y - y)) + 'px';\n tooltipDiv.style.transform = _this.controlName === 'RangeNavigator' ? tooltipDiv.style.transform : '';\n }\n },\n end: function (model) {\n _this.updateDiv(tooltipDiv, rect.x, rect.y);\n _this.trigger('animationComplete', { tooltip: _this });\n }\n });\n };\n Tooltip.prototype.updateDiv = function (tooltipDiv, x, y) {\n if ((this.controlName === 'Chart' && this.shared && !this.crosshair) && !this.enableRTL) {\n tooltipDiv.style.transform = 'translate(' + x + 'px,' + y + 'px)';\n tooltipDiv.style.left = '';\n tooltipDiv.style.top = '';\n }\n else {\n tooltipDiv.style.left = x + 'px';\n tooltipDiv.style.top = y + 'px';\n tooltipDiv.style.transform = this.controlName === 'RangeNavigator' ? tooltipDiv.style.transform : '';\n }\n };\n Tooltip.prototype.updateTemplateFn = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.templateFn = templateComplier(document.querySelector(this.template).innerHTML.trim());\n }\n else {\n this.templateFn = templateComplier(this.template);\n }\n }\n catch (e) {\n this.templateFn = templateComplier(this.template);\n }\n }\n };\n /** @private */\n Tooltip.prototype.fadeOut = function () {\n var _this = this;\n var tooltipElement = (this.isCanvas && !this.template) ? getElement(this.element.id + '_svg') :\n getElement(this.element.id);\n var tooltipDiv = getElement(this.element.id);\n if (tooltipElement) {\n var tooltipGroup_1 = tooltipElement.firstChild;\n if (tooltipGroup_1.nodeType !== Node.ELEMENT_NODE) {\n tooltipGroup_1 = tooltipElement.firstElementChild;\n }\n if (this.isCanvas && !this.template) {\n tooltipGroup_1 = document.getElementById(this.element.id + '_group') ? document.getElementById(this.element.id + '_group') :\n tooltipGroup_1;\n }\n if (!tooltipGroup_1) {\n return null;\n }\n var opacity_1 = parseFloat(tooltipGroup_1.getAttribute('opacity'));\n opacity_1 = !isNullOrUndefined(opacity_1) ? opacity_1 : 1;\n new Animation({}).animate(tooltipGroup_1, {\n duration: 200,\n progress: function (args) {\n // tooltipGroup.removeAttribute('e-animate');\n _this.progressAnimation(tooltipGroup_1, opacity_1, (args.timeStamp / args.duration));\n },\n end: function () {\n _this.fadeOuted = true;\n _this.endAnimation(tooltipGroup_1);\n tooltipDiv.style.transition = '';\n }\n });\n }\n };\n Tooltip.prototype.progressAnimation = function (tooltipGroup, opacity, timeStamp) {\n tooltipGroup.style.animation = '';\n tooltipGroup.setAttribute('opacity', (opacity - timeStamp).toString());\n };\n /*\n * @hidden\n */\n Tooltip.prototype.endAnimation = function (tooltipGroup) {\n tooltipGroup.setAttribute('opacity', '0');\n if (this.template) {\n tooltipGroup.style.display = 'none';\n }\n this.trigger('animationComplete', { tooltip: this });\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n var keyEntity = [];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Get component name\n *\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * To destroy the accumulationcharts\n *\n * @private\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-tooltip');\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n this.isFirst = false;\n this.render();\n };\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"shared\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"crosshair\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableShadow\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"fill\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], Tooltip.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ size: '12px', fontWeight: null, color: null, fontStyle: 'Normal', fontFamily: null }, TextStyle)\n ], Tooltip.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], Tooltip.prototype, \"duration\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"inverted\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isNegative\", void 0);\n __decorate([\n Complex({ color: null, width: null }, TooltipBorder)\n ], Tooltip.prototype, \"border\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property(10)\n ], Tooltip.prototype, \"markerSize\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"clipBounds\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"palette\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"shapes\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"location\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offset\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"rx\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"ry\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginX\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginY\", void 0);\n __decorate([\n Property(7)\n ], Tooltip.prototype, \"arrowPadding\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"data\", void 0);\n __decorate([\n Property('Material')\n ], Tooltip.prototype, \"theme\", void 0);\n __decorate([\n Complex({ x: 0, y: 0, width: 0, height: 0 }, AreaBounds)\n ], Tooltip.prototype, \"areaBounds\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"availableSize\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"blazorTemplate\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isCanvas\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isTextWrap\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isFixed\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"tooltipPlacement\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"controlInstance\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"controlName\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"animationComplete\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableRTL\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"allowHighlight\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","import { createElement, isNullOrUndefined, isObject, remove } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nimport { isScheduledTask } from '../base/utils';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * To render the connector line in Gantt\n */\nvar ConnectorLine = /** @class */ (function () {\n function ConnectorLine(ganttObj) {\n this.transform = '';\n this.connectorLinePath = '';\n this.arrowPath = '';\n this.taskLineValue = 0;\n this.expandedRecords = [];\n this.parent = ganttObj;\n this.dependencyViewContainer =\n createElement('div', { className: cls.dependencyViewContainer,\n });\n Object.assign(this.dependencyViewContainer.style, {\n width: \"100%\",\n height: \"100%\",\n zIndex: 2,\n position: \"absolute\",\n pointerEvents: \"none\"\n });\n this.renderer = new SvgRenderer(this.parent.element.id);\n this.initPublicProp();\n this.svgObject = this.renderer.createSvg({\n id: this.parent.element.id + '_svg'\n });\n this.svgObject.setAttribute('height', '100%');\n if (!this.parent.enableTimelineVirtualization) {\n this.svgObject.setAttribute('width', '100%');\n }\n }\n /**\n * To get connector line gap.\n *\n * @param {IConnectorLineObject} data .\n * @returns {number} .\n * @private\n */\n ConnectorLine.prototype.getconnectorLineGap = function (data) {\n var width = 0;\n width = (data.milestoneChild ?\n ((this.parent.chartRowsModule.milestoneMarginTop / 2) + (this.parent.chartRowsModule.milestoneHeight / 2)) :\n ((this.parent.chartRowsModule.taskBarMarginTop / 2) + (this.parent.chartRowsModule.taskBarHeight / 2)));\n return width;\n };\n /**\n * To initialize the public property.\n *\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.initPublicProp = function () {\n this.lineColor = this.parent.connectorLineBackground;\n this.lineStroke = (this.parent.connectorLineWidth) > 4 ? 4 : this.parent.connectorLineWidth;\n this.createConnectorLineTooltipTable();\n };\n ConnectorLine.prototype.getTaskbarMidpoint = function (isMilestone) {\n return Math.floor(isMilestone ?\n (this.parent.chartRowsModule.milestoneMarginTop + (this.parent.chartRowsModule.milestoneHeight / 2)) :\n (this.parent.chartRowsModule.taskBarMarginTop + (this.parent.chartRowsModule.taskBarHeight / 2))) + 1;\n };\n /**\n * To connector line object collection.\n *\n * @param {IGanttData} parentGanttData .\n * @param {IGanttData} childGanttData .\n * @param {IPredecessor} predecessor .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.createConnectorLineObject = function (parentGanttData, childGanttData, predecessor) {\n var connectorObj = {};\n var updatedRecords;\n if (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport && this.parent.pdfExportModule.helper.exportProps &&\n this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings && this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth) {\n updatedRecords = this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport ?\n this.parent.pdfExportModule.helper.beforeSinglePageExport['cloneFlatData'] : this.expandedRecords;\n }\n else {\n updatedRecords = this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport ?\n this.parent.flatData : this.expandedRecords;\n }\n var parentIndex;\n var childIndex;\n if (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport && this.parent.pdfExportModule.helper.exportProps &&\n this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings && this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth) {\n var parentData = this.parent.flatData.filter(function (data) {\n return data.ganttProperties.taskId.toString() == parentGanttData.ganttProperties.taskId.toString();\n })[0];\n var childData = this.parent.flatData.filter(function (data) {\n return data.ganttProperties.taskId.toString() == childGanttData.ganttProperties.taskId.toString();\n })[0];\n parentIndex = parentData.index;\n childIndex = childData.index;\n }\n else {\n parentIndex = updatedRecords.indexOf(parentGanttData);\n childIndex = updatedRecords.indexOf(childGanttData);\n }\n var parentGanttRecord = parentGanttData.ganttProperties;\n var childGanttRecord = childGanttData.ganttProperties;\n var currentData;\n if (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport && this.parent.pdfExportModule.helper.exportProps &&\n this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings && this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth) {\n currentData = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n this.parent.pdfExportModule.helper.beforeSinglePageExport['cloneFlatData'] : this.parent.getExpandedRecords(this.parent.pdfExportModule.helper.beforeSinglePageExport['cloneFlatData']);\n }\n else {\n currentData = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n this.parent.currentViewData : this.parent.getExpandedRecords(this.parent.currentViewData);\n }\n connectorObj.parentIndexInCurrentView = currentData.indexOf(parentGanttData);\n connectorObj.childIndexInCurrentView = currentData.indexOf(childGanttData);\n var isVirtualScroll = this.parent.virtualScrollModule && this.parent.enableVirtualization;\n if ((!isVirtualScroll && (connectorObj.parentIndexInCurrentView === -1 || connectorObj.childIndexInCurrentView === -1)) ||\n connectorObj.parentIndexInCurrentView === -1 && connectorObj.childIndexInCurrentView === -1) {\n return null;\n }\n else {\n connectorObj.parentLeft = parentGanttRecord.isMilestone ?\n parentGanttRecord.left - (this.parent.chartRowsModule.milestoneHeight / 2) : parentGanttRecord.left;\n connectorObj.childLeft = childGanttRecord.isMilestone ?\n childGanttRecord.left - (this.parent.chartRowsModule.milestoneHeight / 2) : childGanttRecord.left;\n connectorObj.parentWidth = parentGanttRecord.width === 0 || parentGanttRecord.isMilestone ?\n (Math.floor(this.parent.chartRowsModule.milestoneHeight)) : parentGanttRecord.width;\n connectorObj.childWidth = childGanttRecord.width === 0 || childGanttRecord.isMilestone ?\n (Math.floor(this.parent.chartRowsModule.milestoneHeight)) : childGanttRecord.width;\n connectorObj.parentIndex = parentIndex;\n connectorObj.childIndex = childIndex;\n var rowHeight = !isNullOrUndefined(this.parent.ganttChartModule.getChartRows()) && this.parent.ganttChartModule.getChartRows()[0] &&\n this.parent.ganttChartModule.getChartRows()[0].getBoundingClientRect().height;\n connectorObj.rowHeight = rowHeight && !isNaN(rowHeight) ? rowHeight : this.parent.rowHeight;\n connectorObj.type = predecessor.type;\n var parentId = this.parent.viewType === 'ResourceView' ? parentGanttRecord.taskId : parentGanttRecord.rowUniqueID;\n var childId = this.parent.viewType === 'ResourceView' ? childGanttRecord.taskId : childGanttRecord.rowUniqueID;\n connectorObj.connectorLineId = 'parent' + parentId + 'child' + childId;\n connectorObj.milestoneParent = parentGanttRecord.isMilestone ? true : false;\n connectorObj.milestoneChild = childGanttRecord.isMilestone ? true : false;\n connectorObj.parentEndPoint = connectorObj.parentLeft + connectorObj.parentWidth;\n connectorObj.childEndPoint = connectorObj.childLeft + connectorObj.childWidth;\n if (isNullOrUndefined(isScheduledTask(parentGanttRecord)) || isNullOrUndefined(isScheduledTask(childGanttRecord))) {\n return null;\n }\n else {\n return connectorObj;\n }\n }\n };\n /**\n * To render connector line.\n *\n * @param {IConnectorLineObject} connectorLinesCollection .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.renderConnectorLines = function (connectorLinesCollection) {\n var connectorLine = '';\n var ariaConnector = [];\n for (var index = 0; index < connectorLinesCollection.length; index++) {\n connectorLine = connectorLine + this.getConnectorLineTemplate(connectorLinesCollection[index]);\n ariaConnector.push(connectorLinesCollection[index]);\n }\n this.svgObject.innerHTML = connectorLine;\n var childNodes = this.parent.connectorLineModule.svgObject.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var innerChild = childNodes[i].childNodes;\n for (var j = 0; j < innerChild.length; j++) {\n var ariaString = 'Connector Line ' + this.parent.connectorLineModule.generateAriaLabel(ariaConnector[i]);\n innerChild[j].setAttribute('aria-label', ariaString);\n innerChild[j].setAttribute('role', 'img');\n }\n }\n this.parent.ganttChartModule.chartBodyContent.insertBefore(this.dependencyViewContainer, this.parent.ganttChartModule.chartBodyContent.lastChild);\n this.dependencyViewContainer.appendChild(this.svgObject);\n for (var i = 0; i < this.svgObject.children.length; i++) {\n this.svgObject.children[i].children[0].setAttribute('tabindex', '-1');\n }\n };\n /**\n * To get parent position.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getParentPosition = function (data) {\n if (data.parentIndex < data.childIndex) {\n if (data.type === 'FF') {\n if ((data.childLeft + data.childWidth) >= (data.parentLeft + data.parentWidth)) {\n return 'FFType2';\n }\n else {\n return 'FFType1';\n }\n }\n else if ((data.parentLeft < data.childLeft) && (data.childLeft > (data.parentLeft + data.parentWidth + 25))) {\n if (data.type === 'FS') {\n return 'FSType1';\n }\n if (data.type === 'SF') {\n return 'SFType1';\n }\n else if (data.type === 'SS') {\n return 'SSType2';\n }\n else if (data.type === 'FF') {\n return 'FFType2';\n }\n }\n else if ((data.parentLeft < data.childLeft && (data.childLeft < (data.parentLeft + data.parentWidth)))\n || (data.parentLeft === data.childLeft || data.parentLeft > data.childLeft)) {\n if (data.parentLeft > (data.childLeft + data.childWidth + 25)) {\n if (data.type === 'SF') {\n return 'SFType2';\n }\n }\n if (data.parentLeft > data.childLeft) {\n if (data.type === 'SS') {\n return 'SSType1';\n }\n if (data.type === 'SF') {\n return 'SFType1';\n }\n if (data.type === 'FF') {\n return 'FFType1';\n }\n }\n else if ((data.childLeft + data.childWidth) > (data.parentLeft + data.parentWidth)) {\n if (data.type === 'FF') {\n return 'FFType2';\n }\n }\n if (data.type === 'FS') {\n return 'FSType2';\n }\n else if (data.type === 'SS') {\n return 'SSType2';\n }\n else if (data.type === 'FF') {\n return 'FFType1';\n }\n else if (data.type === 'SF') {\n return 'SFType1';\n }\n }\n else if ((data.parentLeft) < data.childLeft) {\n if (data.type === 'FS') {\n return 'FSType2';\n }\n else if (data.type === 'FF') {\n return 'FFType2';\n }\n else if (data.type === 'SS') {\n return 'SSType2';\n }\n else if (data.type === 'SF') {\n return 'SFType1';\n }\n }\n }\n else if (data.parentIndex > data.childIndex) {\n if ((data.parentLeft < data.childLeft) && (data.childLeft > (data.parentLeft + data.parentWidth))) {\n if (data.type === 'FS') {\n if (30 >= (data.childLeft - (data.milestoneParent ?\n (data.parentLeft + data.parentWidth + 4) : (data.parentLeft + data.parentWidth)))) {\n return 'FSType3';\n }\n else {\n return 'FSType4';\n }\n }\n if (data.parentLeft < data.childLeft || ((data.childLeft + data.childWidth) > (data.parentLeft + data.parentWidth))) {\n if (data.type === 'SS') {\n return 'SSType4';\n }\n if (data.type === 'FF') {\n return 'FFType4';\n }\n if (data.type === 'SF') {\n return 'SFType4';\n }\n // eslint-disable-next-line\n }\n else if ((data.childLeft + data.childWidth) > (data.parentLeft + data.parentWidth)) {\n if (data.type === 'FF') {\n return 'FFType4';\n }\n }\n }\n else if ((data.parentLeft < data.childLeft && (data.childLeft < (data.parentLeft + data.parentWidth)))\n || (data.parentLeft === data.childLeft || data.parentLeft > data.childLeft)) {\n if ((data.childLeft + data.childWidth) <= (data.parentLeft + data.parentWidth)) {\n if (data.type === 'FF') {\n return 'FFType3';\n }\n if (data.type === 'SF') {\n if ((data.childLeft + data.childWidth + 25) < (data.parentLeft)) {\n return 'SFType3';\n }\n else {\n return 'SFType4';\n }\n }\n if (data.type === 'SS') {\n if (data.childLeft <= data.parentLeft) {\n return 'SSType3';\n }\n else {\n return 'SSType4';\n }\n }\n }\n else if ((data.childLeft + data.childWidth) > (data.parentLeft + data.parentWidth)) {\n if (data.type === 'FF') {\n return 'FFType4';\n }\n if (data.type === 'SF') {\n return 'SFType4';\n }\n if (data.type === 'SS') {\n if (data.childLeft <= data.parentLeft) {\n return 'SSType3';\n }\n else {\n return 'SSType4';\n }\n }\n }\n if (data.type === 'FS') {\n return 'FSType3';\n }\n }\n else if (data.parentLeft < data.childLeft) {\n if (data.type === 'FS') {\n return 'FSType3';\n }\n if (data.type === 'SS') {\n return 'SSType4';\n }\n if (data.type === 'FF') {\n return 'FFType4';\n }\n if (data.type === 'SF') {\n return 'SFType4';\n }\n }\n }\n return null;\n };\n /**\n * To get line height.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getHeightValue = function (data) {\n if (this.parent.showOverAllocation && !this.parent.allowTaskbarOverlap) {\n return (data.parentIndex * this.parent.rowHeight) > (data.childIndex * this.parent.rowHeight) ?\n ((data.parentIndex * this.parent.rowHeight) - (data.childIndex * this.parent.rowHeight)) :\n ((data.childIndex * this.parent.rowHeight) - (data.parentIndex * this.parent.rowHeight));\n }\n else {\n return (data.parentIndex * data.rowHeight) > (data.childIndex * data.rowHeight) ?\n ((data.parentIndex * data.rowHeight) - (data.childIndex * data.rowHeight)) :\n ((data.childIndex * data.rowHeight) - (data.parentIndex * data.rowHeight));\n }\n };\n /**\n * To get sstype2 inner element width.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getInnerElementWidthSSType2 = function (data) {\n if (data.parentLeft === data.childLeft) {\n return 10;\n }\n return (data.childLeft - data.parentLeft);\n };\n /**\n * To get sstype2 inner element left.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getInnerElementLeftSSType2 = function (data) {\n if (data.parentLeft === data.childLeft) {\n return (data.parentLeft - 20);\n }\n return (data.parentLeft - 10);\n };\n /**\n * To get sstype2 inner child element width.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getInnerChildWidthSSType2 = function (data) {\n if ((data.parentLeft + data.parentWidth) < data.childLeft) {\n return 10;\n }\n if (data.parentLeft === data.childLeft) {\n return 20;\n }\n if ((data.parentLeft + data.parentWidth) >= data.childLeft) {\n return 10;\n }\n return (data.childLeft - data.parentLeft);\n };\n ConnectorLine.prototype.getBorderStyles = function (cssType, unit) {\n var borderWidth = 'border-' + cssType + '-width:' + unit + 'px;';\n var borderStyle = 'border-' + cssType + '-style:solid;';\n var borderColor = !isNullOrUndefined(this.lineColor) ? 'border-' + cssType + '-color:' + this.lineColor + ';' : '';\n return (borderWidth + borderStyle + borderColor);\n };\n /**\n * To get connector line template.\n *\n * @param {IConnectorLineObject} data .\n * @returns {void}\n * @private\n */\n ConnectorLine.prototype.getConnectorLineTemplate = function (data) {\n var setInnerChildWidthSSType2 = this.getInnerChildWidthSSType2(data);\n var setInnerElementWidthSSType2 = this.getInnerElementWidthSSType2(data);\n var setInnerElementLeftSSType2 = this.getInnerElementLeftSSType2(data);\n var height = this.getHeightValue(data);\n var isMilestoneParent = data.milestoneParent ? true : false;\n var isMilestone = data.milestoneChild ? true : false;\n var connectorContainer = '';\n var isVirtual = this.parent.virtualScrollModule && this.parent.enableVirtualization;\n var connectorLine = this.getPosition(data, this.getParentPosition(data), height);\n var rowPosition = this.getPosition(data, this.getParentPosition(data), height);\n var rowPositionHeight = rowPosition.top;\n var isMilestoneValue = 0;\n if (this.parent.renderBaseline) {\n isMilestoneValue = (data.milestoneParent && data.milestoneChild) ? 0 : data.milestoneParent ? -5 : data.milestoneChild ? 5 : 0;\n }\n var heightValue = isVirtual ? connectorLine.height : (height + isMilestoneValue);\n var borderTopWidth = 0;\n var addTop = 0;\n var parentOverlapTopValue = 0;\n var childOverlapTopValue = 0;\n var count = 0;\n if (this.parent.showOverAllocation && !this.parent.allowTaskbarOverlap) {\n for (var i = 0; i < this.parent.currentViewData.length; i++) {\n if (this.parent.getRowByIndex(i).style.display != 'none') {\n if (count < data.parentIndex) {\n count++;\n parentOverlapTopValue = parentOverlapTopValue + this.parent.getRowByIndex(i).offsetHeight;\n }\n }\n }\n count = 0;\n for (var j = 0; j < this.parent.currentViewData.length; j++) {\n if (this.parent.getRowByIndex(j).style.display != 'none') {\n if (count < data.childIndex) {\n count++;\n childOverlapTopValue = childOverlapTopValue + this.parent.getRowByIndex(j).offsetHeight;\n }\n }\n }\n if (!this.parent.enableVirtualization) {\n heightValue = Math.abs(parentOverlapTopValue - childOverlapTopValue);\n }\n }\n if (this.parent.currentViewData[data.parentIndex] && this.parent.currentViewData[data.childIndex] && this.parent.allowParentDependency) {\n var fromRecordIsParent = this.parent.currentViewData[data.parentIndex].hasChildRecords;\n var toRecordIsParent = this.parent.currentViewData[data.childIndex].hasChildRecords;\n var fromRecordIsManual = this.parent.currentViewData[data.parentIndex].ganttProperties.isAutoSchedule;\n var toRecordIsManual = this.parent.currentViewData[data.childIndex].ganttProperties.isAutoSchedule;\n var isValid = true;\n if (((fromRecordIsParent && fromRecordIsManual) && !toRecordIsParent) || ((toRecordIsParent && toRecordIsManual) &&\n !fromRecordIsParent) || (fromRecordIsParent && fromRecordIsManual && toRecordIsManual && toRecordIsParent)\n || (!fromRecordIsParent && !toRecordIsParent)) {\n isValid = false;\n }\n if (isValid) {\n if (((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {\n addTop = -11;\n }\n else if (!((fromRecordIsParent && !fromRecordIsManual) && (toRecordIsParent && !toRecordIsManual))) {\n if (data.childIndex > data.parentIndex) {\n if (!fromRecordIsParent && toRecordIsParent) {\n borderTopWidth = -11;\n }\n else {\n borderTopWidth = 11;\n addTop = -11;\n }\n }\n else {\n if ((fromRecordIsParent && !toRecordIsParent)) {\n borderTopWidth = -11;\n }\n else {\n borderTopWidth = 11;\n addTop = -11;\n }\n }\n }\n if (this.parent.currentViewData[data.parentIndex].ganttProperties.isMilestone) {\n if (data.parentIndex > data.childIndex) {\n addTop = -11;\n borderTopWidth = 12;\n }\n else if (data.type === 'SS' || data.type === 'FF') {\n addTop = -5;\n }\n }\n else if (this.parent.currentViewData[data.childIndex].ganttProperties.isMilestone) {\n if (data.parentIndex > data.childIndex) {\n addTop = 5;\n borderTopWidth = -10;\n }\n else if (data.parentIndex < data.childIndex) {\n if (data.type === 'SS' || data.type === 'FF') {\n addTop = -10;\n }\n }\n }\n else {\n if (data.parentIndex < data.childIndex && fromRecordIsManual && !toRecordIsManual) {\n addTop = 0;\n borderTopWidth = -11;\n }\n else if (data.childIndex < data.parentIndex && !fromRecordIsManual && toRecordIsManual) {\n addTop = 0;\n borderTopWidth = -11;\n }\n }\n }\n }\n if (this.getParentPosition(data)) {\n // Create the group element\n this.transform = this.parent.enableRtl ? \"translate(\" + (this.parent.enableTimelineVirtualization ? this.parent.timelineModule.wholeTimelineWidth : this.parent.timelineModule.totalTimelineWidth) + \", 0) scale(-1, 1)\" : '';\n this.connectorId = \"ConnectorLine\" + data.connectorLineId;\n this.groupObject = this.renderer.createGroup({\n id: this.connectorId,\n transform: this.transform,\n style: 'pointer-events: stroke',\n class: cls.connectorLineContainer,\n });\n // Create the path element for the connector line\n this.connectorPath = this.renderer.drawPath({\n class: cls.connectorLineSVG,\n d: this.connectorLinePath,\n fill: 'transparent',\n \"stroke-width\": 1,\n });\n // Create the path element for the arrow\n this.arrowlinePath = this.renderer.drawPath({\n d: this.arrowPath,\n class: cls.connectorLineArrow\n });\n var outlineColor = (this.lineColor) && !(this.parent.enableCriticalPath) ? this.lineColor : '';\n this.connectorPath.setAttribute('style', \"stroke: \" + outlineColor);\n this.arrowlinePath.setAttribute('style', \"fill: \" + outlineColor);\n // Append the path element to the group element\n this.groupObject.appendChild(this.connectorPath);\n this.groupObject.appendChild(this.arrowlinePath);\n if (this.getParentPosition(data) === 'FSType1') {\n this.taskLineValue = data.milestoneChild ? 1 : 0;\n this.x1 = data.parentEndPoint + (data.milestoneParent ? -1 : (data.milestoneChild ? -1 : 0));\n this.x2 = data.milestoneParent ? ((((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10) + 1) : (((data.childLeft - (data.parentLeft + data.parentWidth + 10)) + this.lineStroke) - 10);\n this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue));\n this.y2 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;\n this.connectorLinePath = \"M \" + this.x1 + \" \" + (this.y1) + \" L \" + (this.x1 + this.x2) + \" \" + (this.y1) + \" L \" + (this.x1 + this.x2) + \" \" + (this.y1 + this.y2) +\n \" L \" + (this.x1 + this.x2 + 12) + \" \" + (this.y1 + this.y2);\n this.arrowPath = \"M \" + (this.x1 + this.x2 + 20) + \" \" + (this.y1 + this.y2) +\n \" L \" + (this.x1 + this.x2 + 12) + \" \" + (this.y1 + this.y2 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + this.x2 + 12) + \" \" + (this.y1 + this.y2 + 4) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FSType2') {\n this.x1 = data.parentLeft;\n this.x2 = data.parentWidth + (data.milestoneParent ? -1 : 0);\n this.x3 = this.x2 + (data.milestoneParent ? 11 : 10);\n this.x4 = data.parentWidth - ((data.parentEndPoint - data.childLeft) + 20);\n this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue));\n this.y2 = heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke;\n this.y3 = this.getconnectorLineGap(data);\n this.y4 = (!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (this.y1 + this.y2 - ((this.y1 + this.y2) % data.rowHeight)));\n this.connectorLinePath = \"M \" + (this.x1 + this.x2) + \" \" + (this.y1) + \" \" + \" L \" + (this.x1 + this.x3) + \" \" + (this.y1) + \" L \" + (this.x1 + this.x3) + \" \" + this.y4 +\n \" L \" + (this.x1 + this.x4) + \" \" + this.y4 + \" L \" + (this.x1 + this.x4) + \" \" + (this.y1 + this.y2 + this.y3) + \" L \" + (this.x1 + this.x4 + 12) + \" \" + (this.y1 + this.y2 + this.y3);\n this.arrowPath = \"M \" + (this.x1 + this.x4 + 20) + \" \" + (this.y1 + this.y2 + this.y3) +\n \" L \" + (this.x1 + this.x4 + 12) + \" \" + (this.y1 + this.y2 + this.y3 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + this.x4 + 12) + \" \" + (this.y1 + this.y2 + this.y3 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FSType3') {\n this.taskLineValue = data.milestoneChild ? 1 : 0;\n this.point1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1) - isMilestoneValue));\n this.x1 = (data.childLeft + (data.milestoneChild ? -1 : 0) + (data.milestoneParent ? 1 : 0)) - 20;\n this.x2 = (data.parentEndPoint - data.childLeft) + 30;\n this.y1 = this.point1 + (this.parent.renderBaseline ? (data.milestoneChild && !(data.milestoneParent) ? 11 : data.milestoneParent && !(data.milestoneChild) ? -12 : 0) : 0);\n this.y2 = this.point1 + heightValue + borderTopWidth - this.getconnectorLineGap(data) - this.lineStroke + this.taskLineValue;\n this.y3 = this.getconnectorLineGap(data);\n this.y4 = this.y2 - (this.y2 % data.rowHeight);\n this.connectorLinePath = \"M \" + (this.x1 + 12) + \" \" + (this.y1) + \" L \" + this.x1 + \" \" + (this.y1) + \" L \" + this.x1 + \" \" + this.y4 +\n \" L \" + (this.x1 + this.x2) + \" \" + this.y4 + \" L \" + (this.x1 + this.x2) + \" \" + (this.y2 + this.y3) + \" L \" + (this.x1 + this.x2 - 12) + \" \" + (this.y2 + this.y3);\n this.arrowPath = \"M \" + (this.x1 + 20) + \" \" + (this.y1) +\n \" L \" + (this.x1 + 12) + \" \" + (this.y1 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + 12) + \" \" + (this.y1 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FSType4') {\n this.point1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.x1 = data.parentEndPoint + (data.milestoneChild ? -1 : 0) + (data.milestoneParent ? 1 : 0);\n this.x2 = data.childLeft - data.parentEndPoint - 20;\n this.y1 = this.point1 + (data.milestoneChild ? -1 : 0);\n this.y2 = this.point1 + heightValue + borderTopWidth - this.lineStroke + 1 + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneChild && !(data.milestoneParent) ? -12 : data.milestoneParent && !(data.milestoneChild) ? 11 : 0) : 0);\n this.connectorLinePath = \"M \" + (this.x1 + this.x2 + 12) + \" \" + (this.y1) + \" L \" + (this.x1 + this.x2) + \" \" + (this.y1) + \" L \" + (this.x1 + this.x2) + \" \" + this.y2 +\n \" L \" + this.x1 + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x1 + this.x2 + 20) + \" \" + (this.y1) +\n \" L \" + (this.x1 + this.x2 + 12) + \" \" + (this.y1 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + this.x2 + 12) + \" \" + (this.y1 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SSType4') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.point1 = heightValue + this.taskLineValue + borderTopWidth;\n this.point2 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));\n this.x1 = data.parentLeft - 10;\n this.x2 = data.childLeft - data.parentLeft;\n this.y1 = this.point2 + (data.milestoneChild ? 1 : 0);\n this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneParent && !(data.milestoneChild) ? 10 : data.milestoneChild && !(data.milestoneParent) ? -13 : 0) : 0);\n this.connectorLinePath = \"M \" + (this.x1 + this.x2) + \" \" + (this.y1) + \" L \" + this.x1 + \" \" + (this.y1) +\n \" L \" + this.x1 + \" \" + this.y2 + \" L \" + (this.x1 + 10) + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x1 + this.x2 + 8) + \" \" + (this.y1) +\n \" L \" + (this.x1 + this.x2) + \" \" + (this.y1 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + this.x2) + \" \" + (this.y1 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SSType3') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;\n this.point1 = heightValue + this.taskLineValue + borderTopWidth - (this.lineStroke - 1);\n this.x1 = data.childLeft - 20;\n this.y1 = (data.milestoneChild ? 1 : 0) + (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));\n this.x2 = data.parentLeft - data.childLeft + 21;\n this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild && !(data.milestoneParent) ? -11 : data.milestoneParent && !(data.milestoneChild) ? 10 : 0) : 0);\n this.connectorLinePath = \"M \" + (this.x1 + 12) + \" \" + (this.y1) + \" L \" + this.x1 + \" \" + (this.y1) +\n \" L \" + this.x1 + \" \" + this.y2 + \" L \" + (this.x1 + this.x2) + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x1 + 20) + \" \" + (this.y1) +\n \" L \" + (this.x1 + 12) + \" \" + (this.y1 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + 12) + \" \" + (this.y1 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SSType2') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;\n this.point1 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;\n this.x1 = setInnerElementLeftSSType2;\n this.x2 = setInnerChildWidthSSType2 + 1;\n this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1)));\n this.y2 = this.y1 + this.point1;\n this.connectorLinePath = \"M \" + (this.x1 + this.x2) + \" \" + (this.y1) + \" L \" + this.x1 + \" \" + (this.y1) + \" L \" + this.x1 + \" \" + this.y2 +\n \" L \" + (this.x1 + setInnerElementWidthSSType2) + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x1 + setInnerElementWidthSSType2 + 8) + \" \" + (this.y2) +\n \" L \" + (this.x1 + setInnerElementWidthSSType2) + \" \" + (this.y2 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + setInnerElementWidthSSType2) + \" \" + (this.y2 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SSType1') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;\n this.point1 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;\n this.x1 = data.childLeft - 20;\n this.x2 = data.parentLeft - data.childLeft + 21;\n this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1)));\n this.y2 = this.y1 + this.point1;\n this.connectorLinePath = \"M \" + (this.x1 + this.x2) + \" \" + (this.y1) + \" L \" + this.x1 + \" \" + (this.y1) + \" L \" + this.x1 + \" \" + this.y2 +\n \" L \" + (this.x1 + 12) + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x1 + 20) + \" \" + (this.y2) +\n \" L \" + (this.x1 + 12) + \" \" + (this.y2 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + 12) + \" \" + (this.y2 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FFType1') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? 1 : 0);\n this.x1 = data.childEndPoint;\n this.x2 = data.parentEndPoint + (data.milestoneParent ? -1 : 0);\n this.x3 = data.milestoneParent ? 22 : 21;\n this.x4 = data.milestoneChild ? 4 : 8;\n this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1)));\n this.y2 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;\n this.connectorLinePath = \"M \" + this.x2 + \" \" + (this.y1) + \" L \" + (this.x2 + this.x3) + \" \" + (this.y1) + \" L \" + (this.x2 + this.x3) + \" \" + (this.y1 + this.y2) +\n \" L \" + (this.x1 + this.x4) + \" \" + (this.y1 + this.y2);\n this.arrowPath = \"M \" + this.x1 + \" \" + (this.y1 + this.y2) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y1 + this.y2 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y1 + this.y2 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FFType2') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? 1 : 0);\n this.x1 = data.parentEndPoint;\n this.x2 = data.childEndPoint + (data.milestoneParent ? 22 : 21);\n this.x3 = data.childEndPoint + (data.milestoneChild ? 9 : 8);\n this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(data.milestoneParent) - (this.lineStroke - 1)));\n this.y2 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;\n this.connectorLinePath = \"M \" + this.x1 + \" \" + (this.y1) + \" L \" + this.x2 + \" \" + (this.y1) + \" L \" + this.x2 + \" \" + (this.y1 + this.y2) +\n \" L \" + this.x3 + \" \" + (this.y1 + this.y2);\n this.arrowPath = \"M \" + (this.x3 - 8) + \" \" + (this.y1 + this.y2) +\n \" L \" + this.x3 + \" \" + (this.y1 + this.y2 - (4 + this.lineStroke)) +\n \" L \" + this.x3 + \" \" + (this.y1 + this.y2 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FFType3') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.x1 = data.childEndPoint;\n this.x2 = this.x1 + (data.milestoneChild ? 4 : 8);\n this.x3 = data.parentEndPoint - data.childEndPoint + (data.milestoneChild ? 16 : 10);\n this.x4 = data.parentEndPoint + (data.milestoneParent ? -1 : 0);\n this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));\n this.y2 = heightValue + this.taskLineValue + borderTopWidth - this.lineStroke + (this.parent.renderBaseline ? (data.milestoneParent && !(data.milestoneChild) ? 10 : data.milestoneChild && !(data.milestoneParent) ? -11 : 0) : 0);\n this.connectorLinePath = \"M \" + this.x2 + \" \" + (this.y1) + \" L \" + (this.x2 + this.x3) + \" \" + (this.y1) + \" L \" + (this.x2 + this.x3) + \" \" + (this.y1 + this.y2) +\n \" L \" + this.x4 + \" \" + (this.y1 + this.y2);\n this.arrowPath = \"M \" + this.x1 + \" \" + (this.y1) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y1 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y1 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'FFType4') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.x1 = data.parentEndPoint;\n this.x2 = data.childEndPoint + (data.milestoneChild ? 7 : 8);\n this.x3 = this.x2 + (data.milestoneChild ? 12 : 11);\n this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));\n this.y2 = heightValue + this.taskLineValue + borderTopWidth + (this.parent.renderBaseline ? (data.milestoneParent && !(data.milestoneChild) ? 10 : data.milestoneChild && !(data.milestoneParent) ? -12 : 0) : 0) - this.lineStroke + 1;\n this.connectorLinePath = \"M \" + this.x2 + \" \" + (this.y1) + \" L \" + this.x3 + \" \" + (this.y1) + \" L \" + this.x3 + \" \" + (this.y1 + this.y2) +\n \" L \" + this.x1 + \" \" + (this.y1 + this.y2);\n this.arrowPath = \"M \" + (this.x2 - 8) + \" \" + (this.y1) +\n \" L \" + this.x2 + \" \" + (this.y1 - (4 + this.lineStroke)) +\n \" L \" + this.x2 + \" \" + (this.y1 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SFType4') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : (data.milestoneChild ? -1 : 0);\n this.point1 = (this.taskLineValue + heightValue + borderTopWidth - this.getconnectorLineGap(data) - (this.lineStroke - 1));\n this.point2 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue));\n this.x1 = data.parentLeft - 10;\n this.x2 = this.x1 + ((data.childEndPoint - data.parentLeft) + 18);\n this.x3 = this.x2 + (data.milestoneChild ? 16 : 11);\n this.y1 = this.point2 + (data.milestoneChild ? 2 : 0) + (this.parent.renderBaseline ? (data.milestoneParent ? -5 : 0) : 0);\n this.y2 = this.y1 + this.point1 + (this.parent.renderBaseline ? (data.milestoneChild && !(data.milestoneParent) ? -9 : data.milestoneParent && !(data.milestoneChild) ? 9 : 0) : 0);\n this.y3 = this.getconnectorLineGap(data);\n this.y4 = this.y2 - (this.y2 % data.rowHeight);\n this.connectorLinePath = \"M \" + this.x2 + \" \" + (this.y1) + \" L \" + this.x3 + \" \" + (this.y1) + \" L \" + this.x3 + \" \" + this.y4 + \" L \" + this.x1 + \" \" + this.y4 +\n \" L \" + this.x1 + \" \" + (this.y2 + this.y3) + \" L \" + (this.x1 + 11) + \" \" + (this.y2 + this.y3);\n this.arrowPath = \"M \" + (this.x2 - 8) + \" \" + (this.y1) +\n \" L \" + this.x2 + \" \" + (this.y1 - (4 + this.lineStroke)) +\n \" L \" + this.x2 + \" \" + (this.y1 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SFType3') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.point1 = (data.parentLeft - (data.childEndPoint + (data.milestoneParent ? 23 : 20))) + 1;\n this.point2 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? childOverlapTopValue : (data.childIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1)));\n this.x1 = data.childEndPoint;\n this.x2 = this.x1 + (data.milestoneChild ? 9 : 8);\n this.x3 = this.x2 + (data.milestoneChild ? 17 : 11);\n this.y1 = this.point2;\n this.y2 = this.y1 + heightValue + borderTopWidth - (this.lineStroke - 1) + this.taskLineValue + (this.parent.renderBaseline ? (data.milestoneChild && !(data.milestoneParent) ? -12 : data.milestoneParent && !(data.milestoneChild) ? 10 : 0) : 0);\n this.connectorLinePath = \"M \" + this.x2 + \" \" + (this.y1) + \" L \" + this.x3 + \" \" + (this.y1) +\n \" L \" + this.x3 + \" \" + this.y2 + \" L \" + (this.x3 + this.point1) + \" \" + this.y2;\n this.arrowPath = \"M \" + (this.x2 - 8) + \" \" + (this.y1) +\n \" L \" + this.x2 + \" \" + (this.y1 - (4 + this.lineStroke)) +\n \" L \" + this.x2 + \" \" + (this.y1 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SFType1') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : data.milestoneChild ? 1 : 0;\n this.point1 = heightValue + borderTopWidth - this.getconnectorLineGap(data) + this.taskLineValue - this.lineStroke;\n this.point2 = this.getconnectorLineGap(data);\n this.x1 = data.parentLeft - 10;\n this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1) - isMilestoneValue));\n this.x2 = (data.childEndPoint - data.parentLeft) + 31;\n this.y2 = this.y1 + this.point1;\n this.x3 = (data.childEndPoint - data.parentLeft) + 18;\n this.y3 = this.y2 - (this.y2 % data.rowHeight);\n this.connectorLinePath = \"M \" + (this.x1 + 11) + \" \" + (this.y1) + \" L \" + this.x1 + \" \" + (this.y1) + \" L \" + this.x1 + \" \" + this.y3 +\n \" L \" + (this.x1 + this.x2) + \" \" + this.y3 + \" L \" + (this.x1 + this.x2) + \" \" + (this.y2 + this.point2) + \" L \" + (this.x1 + this.x3) + \" \" + (this.y2 + this.point2);\n this.arrowPath = \"M \" + (this.x1 + this.x3 - 8) + \" \" + (this.y2 + this.point2) +\n \" L \" + (this.x1 + this.x3) + \" \" + (this.y2 + this.point2 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + this.x3) + \" \" + (this.y2 + this.point2 + 4 + this.lineStroke) + \" Z\";\n }\n if (this.getParentPosition(data) === 'SFType2') {\n this.taskLineValue = this.parent.renderBaseline ? this.taskLineValue : 0;\n this.x1 = data.childEndPoint;\n this.y1 = (this.parent.enableVirtualization ? rowPositionHeight : ((!this.parent.allowTaskbarOverlap ? parentOverlapTopValue : (data.parentIndex * data.rowHeight)) + addTop + this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1)));\n this.x2 = (data.parentLeft - data.childEndPoint);\n this.y2 = this.y1 + heightValue + this.taskLineValue + borderTopWidth - this.lineStroke;\n this.connectorLinePath = \"M \" + (this.x1 + this.x2 + 1) + \" \" + (this.y1) + \" L \" + (this.x1 + this.x2 - 10) + \" \" + (this.y1) +\n \" L \" + (this.x1 + this.x2 - 10) + \" \" + this.y2 + \" L \" + (this.x1 + 8) + \" \" + this.y2;\n this.arrowPath = \"M \" + this.x1 + \" \" + (this.y2) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y2 - (4 + this.lineStroke)) +\n \" L \" + (this.x1 + 8) + \" \" + (this.y2 + 4 + this.lineStroke) + \" Z\";\n }\n this.connectorPath.setAttribute(\"d\", this.connectorLinePath);\n this.arrowlinePath.setAttribute(\"d\", this.arrowPath);\n }\n return this.groupObject.outerHTML;\n };\n /**\n * @param {IConnectorLineObject} data .\n * @param {string} type .\n * @param {number} heightValue .\n * @returns {number} .\n * @private\n */\n ConnectorLine.prototype.getPosition = function (data, type, heightValue) {\n var topPosition = 0;\n var lineHeight = 0;\n if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {\n var isMilestoneParent = data.milestoneParent ? true : false;\n var isMilestone = data.milestoneChild ? true : false;\n var midPointParent = this.getTaskbarMidpoint(isMilestoneParent) - (this.lineStroke - 1);\n var midPoint = this.getTaskbarMidpoint(isMilestone) - (this.lineStroke - 1);\n var isParentIndex = data.parentIndexInCurrentView !== -1;\n var isChildIndex = data.childIndexInCurrentView !== -1;\n var lastRowIndex = this.parent.currentViewData.length - 1;\n if (type === 'SSType1' || type === 'SSType2' || type === 'FFType1' || type === 'FFType2' || type === 'SFType2') {\n topPosition = isParentIndex ? (data.parentIndexInCurrentView * data.rowHeight) + midPointParent : 0;\n lineHeight = (isParentIndex && isChildIndex) ? heightValue : isChildIndex ?\n (data.childIndexInCurrentView * data.rowHeight) + midPointParent : (lastRowIndex * data.rowHeight) + midPointParent;\n }\n else if (type === 'SSType3' || type === 'SSType4' || type === 'FSType4' || type === 'FFType3' ||\n type === 'FFType4' || type === 'SFType4' || type === 'SFType3') {\n topPosition = isChildIndex ? (data.childIndexInCurrentView * data.rowHeight) + midPoint : 0;\n lineHeight = (isParentIndex && isChildIndex) ? heightValue : isParentIndex ?\n (data.parentIndexInCurrentView * data.rowHeight) + midPoint :\n (lastRowIndex * data.rowHeight) + midPoint;\n }\n else if (type === 'FSType3') {\n topPosition = isChildIndex ? (data.childIndexInCurrentView * data.rowHeight) + midPointParent : 0;\n lineHeight = (isParentIndex && isChildIndex) ? heightValue : isParentIndex ?\n (data.parentIndexInCurrentView * data.rowHeight) + midPoint :\n (lastRowIndex * data.rowHeight) + midPointParent;\n }\n else if (type === 'SFType1' || type === 'FSType1' || type === 'FSType2') {\n topPosition = isParentIndex ? (data.parentIndexInCurrentView * data.rowHeight) + midPoint : 0;\n lineHeight = (isParentIndex && isChildIndex) ? heightValue : isChildIndex ?\n (data.childIndexInCurrentView * data.rowHeight) + midPoint :\n (lastRowIndex * data.rowHeight) + midPoint;\n }\n }\n return { top: topPosition, height: lineHeight };\n };\n /**\n * @returns {void} .\n * @private\n */\n ConnectorLine.prototype.createConnectorLineTooltipTable = function () {\n this.tooltipTable = createElement('table', { className: '.e-tooltiptable', styles: 'margin-top:0px', attrs: { 'cellspacing': '2px', 'cellpadding': '2px' } });\n var tooltipBody = createElement('tbody');\n tooltipBody.innerHTML = '';\n this.tooltipTable.appendChild(tooltipBody);\n };\n /**\n * @param {string} fromTaskName .\n * @param {string} fromPredecessorText .\n * @param {string} toTaskName .\n * @param {string} toPredecessorText .\n * @returns {string} .\n * @private\n */\n ConnectorLine.prototype.getConnectorLineTooltipInnerTd = function (fromTaskName, fromPredecessorText, toTaskName, toPredecessorText) {\n var innerTd = '' + this.parent.localeObj.getConstant('from') + ' ';\n innerTd = innerTd + fromTaskName + ' ' + this.parent.localeObj.getConstant(fromPredecessorText) + ' ';\n innerTd = innerTd + '' + this.parent.localeObj.getConstant('to') + ' ' + toTaskName;\n innerTd = innerTd + ' ' + this.parent.localeObj.getConstant(toPredecessorText) + ' ';\n return innerTd;\n };\n /**\n * Generate aria-label for connectorline\n *\n * @param {IConnectorLineObject} data .\n * @returns {string} .\n * @private\n */\n ConnectorLine.prototype.generateAriaLabel = function (data) {\n var type = data.type;\n var updatedRecords = this.expandedRecords;\n var fromName = updatedRecords[data.parentIndex].ganttProperties.taskName;\n var toName = updatedRecords[data.childIndex].ganttProperties.taskName;\n var start = this.parent.localeObj.getConstant('start');\n var finish = this.parent.localeObj.getConstant('finish');\n var value = '';\n if (type === 'FS') {\n value = fromName + ' ' + finish + ' to ' + toName + ' ' + start;\n }\n else if (type === 'FF') {\n value = fromName + ' ' + finish + ' to ' + toName + ' ' + finish;\n }\n else if (type === 'SS') {\n value = fromName + ' ' + start + ' to ' + toName + ' ' + start;\n }\n else {\n value = fromName + ' ' + start + ' to ' + toName + ' ' + finish;\n }\n return value;\n };\n /**\n * To get the record based on the predecessor value\n *\n * @param {string} id .\n * @returns {IGanttData} .\n * @private\n */\n ConnectorLine.prototype.getRecordByID = function (id) {\n if (isNullOrUndefined(id)) {\n return null;\n }\n if (this.parent.pdfExportModule && this.parent.pdfExportModule.isPdfExport && this.parent.pdfExportModule.helper.exportProps &&\n this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings && this.parent.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth) {\n var a = this.parent.pdfExportModule.helper.beforeSinglePageExport['cloneFlatData'].filter(function (data) {\n return data.ganttProperties.taskId.toString() === id.toString();\n })[0];\n return a;\n }\n else {\n return this.parent.viewType === 'ResourceView' ? this.parent.flatData[this.parent.getTaskIds().indexOf('T' + id.toString())] :\n this.parent.flatData[this.parent.ids.indexOf(id.toString())];\n }\n };\n /**\n * Method to remove connector line from DOM\n *\n * @param {IGanttData[] | object} records .\n * @returns {void} .\n * @private\n */\n ConnectorLine.prototype.removePreviousConnectorLines = function (records) {\n var isObjectType;\n if (isObject(records) === true) {\n isObjectType = true;\n }\n else {\n isObjectType = false;\n }\n var length = isObjectType ? Object.keys(records).length : records.length;\n var keys = Object.keys(records);\n for (var i = 0; i < length; i++) {\n var data = void 0;\n if (isObjectType) {\n var uniqueId = keys[i];\n data = records[uniqueId];\n }\n else {\n data = records[i];\n }\n var predecessors = data.ganttProperties && data.ganttProperties.predecessor;\n if (predecessors && predecessors.length > 0) {\n for (var pre = 0; pre < predecessors.length; pre++) {\n var lineId = 'parent' + predecessors[pre].from + 'child' + predecessors[pre].to;\n this.removeConnectorLineById(lineId);\n }\n }\n }\n };\n /**\n * @param {string} id .\n * @returns {void} .\n * @private\n */\n ConnectorLine.prototype.removeConnectorLineById = function (id) {\n var element = this.parent.connectorLineModule.dependencyViewContainer.querySelector('#ConnectorLine' + id);\n if (!isNullOrUndefined(element)) {\n remove(element);\n }\n };\n return ConnectorLine;\n}());\nexport { ConnectorLine };\n","/** @private */\nexport function getTooltipThemeColor(theme) {\n var style;\n switch (theme) {\n case 'Highcontrast':\n case 'HighContrast':\n style = {\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n textStyle: { fontFamily: 'Segoe UI', color: '#000000' }\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n tooltipFill: theme === 'MaterialDark' ? '#F4F4F4' : theme === 'FabricDark' ? '#A19F9D' : '#F0F0F0',\n tooltipBoldLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipLightLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipHeaderLine: '#9A9A9A',\n textStyle: theme === 'MaterialDark' ? { fontFamily: 'Roboto', color: 'rgba(18, 18, 18, 1)' } : theme === 'FabricDark' ? { fontFamily: 'Segoe UI', color: '#DADADA' } : { fontFamily: 'Helvetica', color: '#1A1A1A' }\n };\n break;\n case 'Bootstrap4':\n style = {\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: 'rgba(255, 255, 255, 0.2)',\n textStyle: { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n case 'Tailwind':\n style = {\n tooltipFill: '#111827',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n textStyle: { fontFamily: 'Inter', color: '#F9FAFB' }\n };\n break;\n case 'TailwindDark':\n style = {\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#1F2937',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n textStyle: { fontFamily: 'Inter', color: '#1F2937' }\n };\n break;\n case 'Bootstrap5':\n style = {\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#9CA3AF',\n textStyle: { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n case 'Bootstrap5Dark':\n style = {\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#212529',\n tooltipLightLabel: '#212529',\n tooltipHeaderLine: '#ADB5BD',\n textStyle: { fontFamily: 'Helvetica', color: '#212529' }\n };\n break;\n case 'Fluent':\n style = {\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#323130',\n tooltipLightLabel: '#323130',\n tooltipHeaderLine: '#D2D0CE',\n textStyle: { fontFamily: 'Segoe UI', color: '#323130' }\n };\n break;\n case 'FluentDark':\n style = {\n tooltipFill: '#323130',\n tooltipBoldLabel: '#F3F2F2',\n tooltipLightLabel: '#F3F2F1',\n tooltipHeaderLine: '#3B3A39',\n textStyle: { fontFamily: 'Segoe UI', color: '#F3F2F1' }\n };\n break;\n case 'Material3':\n style = {\n tooltipFill: '#313033',\n tooltipBoldLabel: '#F4EFF4',\n tooltipLightLabel: '#F4EFF4',\n tooltipHeaderLine: '#F4EFF4',\n textStyle: { fontFamily: 'Roboto', color: '#F4EFF4' }\n };\n break;\n case 'Material3Dark':\n style = {\n tooltipFill: '#E6E1E5',\n tooltipBoldLabel: '#313033',\n tooltipLightLabel: '#313033',\n tooltipHeaderLine: '#313033',\n textStyle: { fontFamily: 'Roboto', color: '#313033' }\n };\n break;\n default:\n style = {\n tooltipFill: theme === 'Material' ? '#000816' : theme === 'Fabric' ? '#FFFFFF' : '#212529',\n tooltipBoldLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipLightLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipHeaderLine: theme === 'Fabric' ? '#D2D0CE' : '#ffffff',\n textStyle: theme === 'Material' ? { fontFamily: 'Roboto', color: 'rgba(249, 250, 251, 1)' } : theme === 'Fabric' ? { fontFamily: 'Segoe UI', color: '#333333' } : { fontFamily: 'Helvetica', color: '#F9FAFB' }\n };\n break;\n }\n return style;\n}\n","import { createElement, isNullOrUndefined, addClass } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nimport { Splitter as SplitterLayout } from '@syncfusion/ej2-layouts';\nimport { Deferred } from '@syncfusion/ej2-data';\n/**\n * Splitter module is used to define the splitter position in Gantt layout.\n */\nvar Splitter = /** @class */ (function () {\n function Splitter(ganttObj) {\n this.parent = ganttObj;\n this.parent.on('destroy', this.destroy, this);\n }\n /**\n * @returns {void} .\n * @private\n */\n Splitter.prototype.renderSplitter = function () {\n var _this = this;\n var splitterPosition = this.calculateSplitterPosition(this.parent.splitterSettings);\n this.parent.splitterElement = createElement('div', { className: cls.splitter });\n this.parent.treeGridPane = createElement('div', { className: cls.treeGridPane });\n this.parent.chartPane = createElement('div', { className: cls.ganttChartPane });\n addClass([this.parent.chartPane], 'e-droppable');\n if (this.parent.enableRtl) {\n this.parent.splitterElement.appendChild(this.parent.chartPane);\n this.parent.splitterElement.appendChild(this.parent.treeGridPane);\n }\n else {\n this.parent.splitterElement.appendChild(this.parent.treeGridPane);\n this.parent.splitterElement.appendChild(this.parent.chartPane);\n }\n this.splitterObject = new SplitterLayout({\n height: null,\n width: this.parent.ganttWidth.toString(),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n separatorSize: this.parent.splitterSettings.separatorSize,\n paneSettings: [\n {\n resizable: true,\n size: splitterPosition,\n min: this.getSpliterPositionInPercentage(this.parent.splitterSettings.minimum)\n },\n {\n resizable: true\n }\n ],\n orientation: 'Horizontal',\n resizeStart: function (args) {\n if (_this.parent.contextMenuModule && _this.parent.contextMenuModule.isOpen) {\n _this.parent.contextMenuModule.contextMenu.close();\n }\n var leftPane = args.pane[0];\n var rightPane = args.pane[1];\n _this.splitterPreviousPositionGrid = leftPane.scrollWidth + 1 + 'px';\n _this.splitterPreviousPositionChart = rightPane.scrollWidth + 1 + 'px';\n var callBackPromise = new Deferred();\n _this.parent.trigger('splitterResizeStart', args, function (resizeStartArgs) {\n callBackPromise.resolve(resizeStartArgs);\n });\n return callBackPromise;\n },\n resizing: function (args) {\n _this.parent.trigger('splitterResizing', args);\n if (_this.parent.timelineModule.isZoomToFit) {\n _this.parent.timelineModule.updateTimelineAfterZooming(_this.parent.timelineModule.timelineEndDate, true);\n }\n },\n resizeStop: function (args) {\n _this.parent['calculateDimensions']();\n var leftPane = args.pane[0];\n _this.splitterPreviousPositionGrid = leftPane.scrollWidth + 1 + 'px';\n _this.splitterObject.paneSettings[0].size = _this.getSpliterPositionInPercentage(_this.splitterPreviousPositionGrid);\n _this.splitterObject.paneSettings[1].size = (_this.parent.ganttWidth - parseInt(_this.splitterPreviousPositionGrid) - 4) + 'px';\n var callBackPromise = new Deferred();\n _this.parent.trigger('splitterResized', args, function (splitterResizedArgs) {\n if (splitterResizedArgs.cancel === true) {\n _this.splitterObject.paneSettings[0].size = null;\n _this.splitterObject.paneSettings[0].size = _this.getSpliterPositionInPercentage(_this.splitterPreviousPositionGrid);\n _this.splitterObject.paneSettings[1].size = null;\n _this.splitterObject.paneSettings[1].size = _this.getSpliterPositionInPercentage(_this.splitterPreviousPositionChart);\n }\n if (isNullOrUndefined(_this.parent.projectEndDate)) {\n _this.parent.timelineModule.updateTimelineAfterZooming(_this.parent.timelineModule.timelineEndDate, true);\n }\n callBackPromise.resolve(splitterResizedArgs);\n });\n return callBackPromise;\n }\n });\n this.parent.element.appendChild(this.parent.splitterElement);\n this.splitterObject.appendTo(this.parent.splitterElement);\n var splitterLeftPane = this.splitterObject.element.querySelector('.e-split-bar');\n if (splitterLeftPane) {\n var numericValue = parseFloat(splitterPosition.replace('%', ''));\n var ariaValueNow = Math.min(100, Math.max(0, numericValue));\n splitterLeftPane.setAttribute('aria-valuenow', ariaValueNow.toString());\n }\n };\n /**\n * @param {SplitterSettingsModel} splitter .\n \n * @returns {string} .\n * @private\n */\n Splitter.prototype.calculateSplitterPosition = function (splitter) {\n if (!isNullOrUndefined(this.splitterObject) && this.parent.enablePersistence) {\n return this.splitterObject.paneSettings[0].size;\n }\n if (splitter.view === 'Grid') {\n return this.parent.enableRtl ? '0%' : '100%';\n }\n else if (splitter.view === 'Chart') {\n return this.parent.enableRtl ? '100%' : '0%';\n }\n else {\n if (!isNullOrUndefined(splitter.position) && splitter.position !== '') {\n return this.getSpliterPositionInPercentage(splitter.position);\n }\n else if (!isNullOrUndefined(splitter.columnIndex) && splitter.columnIndex >= 0) {\n if ((splitter.columnIndex * 150) < this.parent.ganttWidth || !this.parent.element.classList.contains('e-device')) {\n return this.getSpliterPositionInPercentage(this.getTotalColumnWidthByIndex(splitter.columnIndex).toString() + 'px');\n }\n else {\n return this.getSpliterPositionInPercentage((splitter.columnIndex * 130) + 'px');\n }\n }\n else {\n var ganttWidth = this.parent.ganttWidth;\n var width = ganttWidth - 250;\n var widthAsString = width + 'px';\n return (this.parent.enableRtl) ? this.getSpliterPositionInPercentage(widthAsString) : this.getSpliterPositionInPercentage('250px');\n }\n }\n };\n /**\n * @param {string} position .\n * @returns {string} .\n */\n Splitter.prototype.getSpliterPositionInPercentage = function (position) {\n var value = !isNullOrUndefined(position) && position !== '' ? position : null;\n if (!isNullOrUndefined(value)) {\n if (position.indexOf('px') !== -1) {\n var intValue = parseInt(position, 10);\n value = (((intValue / this.parent.ganttWidth) * 100) <= 100 ? ((intValue / this.parent.ganttWidth) * 100) + '%' :\n '25%');\n }\n else {\n if (this.parent.enableRtl) {\n var newPosition = 100 - parseFloat(position);\n value = newPosition + '%';\n }\n else {\n value = position.indexOf('%') === -1 ?\n position + '%' : position;\n }\n }\n }\n return value;\n };\n /**\n * @param {number} index .\n * @returns {number} .\n */\n Splitter.prototype.getTotalColumnWidthByIndex = function (index) {\n var width = 0;\n var ganttWidth = this.parent.ganttWidth;\n var originalArray = this.parent.ganttColumns;\n var newArray = originalArray.filter(function (obj) { return obj.visible === undefined || obj.visible === true; });\n var deepCopiedArray = newArray.map(function (obj) { return Object.assign({}, obj); });\n var tr = deepCopiedArray;\n index = tr.length > index ? index : tr.length;\n if (this.parent.enableRtl) {\n for (var column = 0; column < index; column++) {\n width += parseInt(tr[column].width);\n }\n width = ganttWidth - width;\n }\n else {\n for (var column = 0; column < index; column++) {\n width += parseInt(tr[column].width);\n }\n }\n return width;\n };\n /**\n * @returns {void} .\n * @private\n */\n Splitter.prototype.updateSplitterPosition = function () {\n this.splitterObject.separatorSize = this.parent.splitterSettings.separatorSize >= 4 ?\n this.parent.splitterSettings.separatorSize : 4;\n var splitterPosition = this.calculateSplitterPosition(this.parent.splitterSettings);\n this.splitterObject.paneSettings[0].min = this.getSpliterPositionInPercentage(this.parent.splitterSettings.minimum);\n this.splitterObject.dataBind();\n this.splitterObject.paneSettings[0].size = splitterPosition;\n };\n /**\n * @returns {void} .\n * @private\n */\n Splitter.prototype.triggerCustomResizedEvent = function () {\n var pane1 = this.splitterObject.element.querySelectorAll('.e-pane')[0];\n var pane2 = this.splitterObject.element.querySelectorAll('.e-pane')[1];\n var eventArgs = {\n event: null,\n element: this.splitterObject.element,\n pane: [pane1, pane2],\n index: [0, 1],\n separator: this.splitterObject.element.querySelector('.e-split-bar'),\n paneSize: [pane1.offsetWidth, pane2.offsetWidth]\n };\n this.parent.trigger('splitterResized', eventArgs);\n if (eventArgs.cancel === true) {\n this.splitterObject.paneSettings[0].size = this.getSpliterPositionInPercentage(this.splitterPreviousPositionGrid);\n this.splitterObject.paneSettings[1].size = this.getSpliterPositionInPercentage(this.splitterPreviousPositionChart);\n }\n };\n Splitter.prototype.destroy = function () {\n this.splitterObject.destroy();\n this.parent.off('destroy', this.destroy);\n };\n return Splitter;\n}());\nexport { Splitter };\n","import { Tooltip as TooltipComponent } from '@syncfusion/ej2-popups';\nimport { parentsUntil } from '../base/utils';\nimport * as cls from '../base/css-constants';\nimport { extend, isNullOrUndefined, getValue, EventHandler, closest, SanitizeHtmlHelper, initializeCSPTemplate, append } from '@syncfusion/ej2-base';\nimport { Deferred } from '@syncfusion/ej2-data';\n/**\n * File for handling tooltip in Gantt.\n */\nvar Tooltip = /** @class */ (function () {\n function Tooltip(gantt) {\n this.parent = gantt;\n this.createTooltip();\n this.parent.on('destroy', this.destroy, this);\n }\n /**\n * To create tooltip.\n *\n * @returns {void} .\n * @private\n */\n Tooltip.prototype.createTooltip = function () {\n this.toolTipObj = new TooltipComponent();\n this.toolTipObj.target = '.e-header-cell-label, .e-gantt-child-taskbar,' +\n '.e-gantt-parent-taskbar, .e-gantt-milestone, .e-gantt-unscheduled-taskbar' +\n '.e-event-markers, .e-baseline-bar, .e-event-markers,' +\n '.e-connector-line-container, .e-indicator-span, .e-notes-info, .e-gantt-manualparent-milestone,' +\n '.e-taskbar-left-resizer, .e-taskbar-right-resizer, .e-baseline-gantt-milestone-container, .e-gantt-manualparenttaskbar';\n this.toolTipObj.position = 'BottomCenter';\n this.toolTipObj.openDelay = 700;\n this.toolTipObj.enableRtl = this.parent.enableRtl;\n this.toolTipObj.enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n this.toolTipObj.cssClass = cls.ganttTooltip;\n this.toolTipObj.animation = { open: { effect: 'None', delay: 0 }, close: { effect: 'None', delay: 0 } };\n this.toolTipObj.afterOpen = this.updateTooltipPosition.bind(this);\n this.toolTipObj.showTipPointer = false;\n this.toolTipObj.beforeRender = this.tooltipBeforeRender.bind(this);\n this.toolTipObj.afterClose = this.tooltipCloseHandler.bind(this);\n this.toolTipObj.isStringTemplate = true;\n this.toolTipObj.appendTo(this.parent.element);\n };\n Tooltip.prototype.tooltipBeforeRender = function (args) {\n var parent = this.parent;\n if (parent.isOnEdit) {\n args.cancel = true;\n return;\n }\n var element;\n var row = closest(args.target, 'div.' + cls.taskBarMainContainer);\n if (!isNullOrUndefined(row)) {\n element = args.target;\n }\n else {\n element = parentsUntil(args.target, cls.chartRowCell);\n }\n var data;\n var argsData = {\n data: {},\n args: args,\n cancel: false,\n content: ''\n };\n if (args.target.classList.contains('e-header-cell-label')) {\n if (parent.timelineSettings.showTooltip) {\n argsData.content = this.toolTipObj.content = parent.tooltipModule.getTooltipContent('timeline', data, parent, args);\n }\n else {\n args.cancel = true;\n }\n }\n else {\n if (parent.tooltipSettings.showTooltip) {\n if (element) {\n argsData.data = parent.ganttChartModule.getRecordByTaskBar(element);\n data = argsData.data;\n }\n if (args.target.classList.contains('e-gantt-child-taskbar') ||\n args.target.classList.contains('e-gantt-parent-taskbar') ||\n args.target.classList.contains('e-gantt-milestone') ||\n args.target.classList.contains('e-gantt-unscheduled-taskbar') ||\n args.target.classList.contains('e-taskbar-left-resizer') ||\n args.target.classList.contains('e-taskbar-right-resizer') ||\n (args.target.classList.contains('e-gantt-manualparenttaskbar') && parent.tooltipSettings.taskbar)) {\n var taskbarTemplateNode = void 0;\n if (parent.tooltipSettings.taskbar) {\n taskbarTemplateNode = parent.tooltipModule.templateCompiler(parent.tooltipSettings.taskbar, parent, data, 'TooltipTaskbarTemplate');\n }\n var tooltipTemplate = document.createElement('div');\n if (taskbarTemplateNode) {\n append(taskbarTemplateNode, tooltipTemplate);\n }\n argsData.content = this.toolTipObj.content = taskbarTemplateNode ? tooltipTemplate : data ?\n parent.tooltipModule.getTooltipContent((data.ganttProperties.isMilestone ? 'milestone' : 'taskbar'), data, parent, args) : \"\";\n }\n else if (args.target.classList.contains('e-baseline-bar') ||\n args.target.classList.contains('e-baseline-gantt-milestone-container')) {\n var baseLineTemplateNode = void 0;\n if ((parent.tooltipSettings.baseline)) {\n baseLineTemplateNode = parent.tooltipModule.templateCompiler(parent.tooltipSettings.baseline, parent, data, 'TooltipBaselineTemplate');\n }\n var baselineTemplate = document.createElement('div');\n if (baseLineTemplateNode) {\n append(baseLineTemplateNode, baselineTemplate);\n }\n argsData.content = this.toolTipObj.content = baseLineTemplateNode ? baselineTemplate : data ?\n parent.tooltipModule.getTooltipContent((data.ganttProperties.isMilestone ? 'milestone' : 'baseline'), data, parent, args) : \"\";\n }\n else if (args.target.classList.contains('e-event-markers')) {\n argsData.content = this.toolTipObj.content = parent.tooltipModule.getTooltipContent('marker', data, parent, args);\n }\n else if (args.target.classList.contains('e-connector-line-container')) {\n var dependencyLineTemplateNode = void 0;\n parent.tooltipModule.predecessorTooltipData = parent.tooltipModule.getPredecessorTooltipData(args);\n argsData.data = this.predecessorTooltipData;\n if ((parent.tooltipSettings.connectorLine)) {\n dependencyLineTemplateNode = parent.tooltipModule.templateCompiler(parent.tooltipSettings.connectorLine, parent, parent.tooltipModule.predecessorTooltipData, 'TooltipConnectorLineTemplate');\n }\n argsData.content = this.toolTipObj.content = dependencyLineTemplateNode ?\n dependencyLineTemplateNode[0] :\n parent.tooltipModule.getTooltipContent('connectorLine', data, parent, args);\n }\n else if (args.target.classList.contains('e-indicator-span')) {\n argsData.content = this.toolTipObj.content =\n parent.tooltipModule.getTooltipContent('indicator', data, parent, args);\n if (isNullOrUndefined(argsData.content)) {\n args.cancel = true;\n }\n }\n else if (args.target.classList.contains('e-notes-info')) {\n var ganttData = this.parent.ganttChartModule.getRecordByTarget(args.event);\n argsData.content = this.toolTipObj.content = ganttData.ganttProperties.notes;\n if (isNullOrUndefined(argsData.content)) {\n args.cancel = true;\n }\n }\n else if (args.target.classList.contains('e-gantt-manualparenttaskbar')) {\n argsData.content = this.toolTipObj.content = parent.tooltipModule.getTooltipContent('manualtaskbar', data, parent, args);\n if (isNullOrUndefined(argsData.content)) {\n args.cancel = true;\n }\n }\n else if (args.target.classList.contains('e-gantt-manualparent-milestone')) {\n argsData.content = this.toolTipObj.content = parent.tooltipModule.getTooltipContent('manualmilestone', data, parent, args);\n if (isNullOrUndefined(argsData.content)) {\n args.cancel = true;\n }\n }\n }\n else {\n args.cancel = true;\n }\n }\n if (args.cancel === false) {\n var callBackPromise_1 = new Deferred();\n parent.trigger('beforeTooltipRender', argsData, function (argData) {\n callBackPromise_1.resolve(argData);\n if (argData.cancel) {\n args.cancel = true;\n }\n });\n this.toolTipObj.content = argsData.content;\n if (!this.parent.isAdaptive && args.event.type === 'mouseover') {\n this.currentTarget = args.target;\n EventHandler.add(this.currentTarget, 'mousemove', this.mouseMoveHandler.bind(this));\n }\n this.parent.renderTemplates();\n return callBackPromise_1;\n }\n };\n // eslint-disable-next-line\n Tooltip.prototype.tooltipCloseHandler = function (args) {\n this.tooltipMouseEvent = null;\n if (!this.parent.isAdaptive && !isNullOrUndefined(this.currentTarget)) {\n EventHandler.remove(this.currentTarget, 'mousemove', this.mouseMoveHandler);\n }\n this.currentTarget = null;\n };\n Tooltip.prototype.mouseMoveHandler = function (e) {\n this.tooltipMouseEvent = e;\n };\n /**\n * Method to update tooltip position\n *\n * @param {TooltipEventArgs} args .\n * @returns {void} .\n */\n Tooltip.prototype.updateTooltipPosition = function (args) {\n args.element.style.visibility = 'visible';\n var parentWithZoomStyle = this.parent.element.closest('[style*=\"zoom\"]');\n if (isNullOrUndefined(parentWithZoomStyle)) {\n if (isNullOrUndefined(this.tooltipMouseEvent) || args.target.classList.contains('e-notes-info')) {\n return;\n }\n var postion = this.getPointorPosition(this.tooltipMouseEvent);\n var containerPosition = this.parent.getOffsetRect(this.parent.chartPane);\n var topEnd = containerPosition.top + this.parent.chartPane.offsetHeight;\n var leftEnd = containerPosition.left + this.parent.chartPane.offsetWidth;\n var tooltipPositionX = postion.x;\n var tooltipPositionY = postion.y;\n if (leftEnd < (tooltipPositionX + args.element.offsetWidth + 10)) {\n while (leftEnd < (tooltipPositionX + args.element.offsetWidth + 10)) {\n tooltipPositionX = leftEnd - args.element.offsetWidth - 10;\n args.element.style.left = tooltipPositionX + 'px';\n }\n }\n else {\n tooltipPositionX = tooltipPositionX + 10;\n args.element.style.left = tooltipPositionX + 'px';\n }\n if (window.innerHeight < args.element.offsetHeight + tooltipPositionY) {\n tooltipPositionY = tooltipPositionY - args.element.offsetHeight - 10;\n }\n if ((topEnd < (tooltipPositionY + args.element.offsetHeight + 20))) {\n tooltipPositionY = tooltipPositionY - args.element.offsetHeight - 10;\n }\n else {\n tooltipPositionY = tooltipPositionY + 10;\n }\n args.element.style.top = tooltipPositionY + 'px';\n }\n };\n /**\n * Method to get mouse pointor position\n *\n * @param {Event} e .\n * @returns {number} .\n */\n Tooltip.prototype.getPointorPosition = function (e) {\n var posX;\n var posY;\n if (!isNullOrUndefined(getValue('pageX', e)) || !isNullOrUndefined(getValue('pageY', e))) {\n posX = getValue('pageX', e);\n posY = getValue('pageY', e);\n }\n else if (!isNullOrUndefined(getValue('clientX', e)) || !isNullOrUndefined(getValue('clientY', e))) {\n posX = getValue('clientX', e) + document.body.scrollLeft + document.documentElement.scrollLeft;\n posY = getValue('clientY', e) + document.body.scrollTop + document.documentElement.scrollTop;\n }\n return { x: posX, y: posY };\n };\n /**\n * Getting tooltip content for different elements\n *\n * @param {string} elementType .\n * @param {IGanttData} ganttData .\n * @param {Gantt} parent .\n * @param {TooltipEventArgs} args .\n * @returns {string | Function} .\n */\n Tooltip.prototype.getTooltipContent = function (elementType, ganttData, parent, args) {\n var content;\n var data;\n var taskName;\n if (ganttData) {\n data = ganttData.ganttProperties;\n var taskNameValue = data.taskName;\n if (this.parent.enableHtmlSanitizer && typeof (taskNameValue) === 'string') {\n taskNameValue = SanitizeHtmlHelper.sanitize(taskNameValue);\n }\n taskName = !isNullOrUndefined(taskNameValue) ? '' : '';\n }\n switch (elementType) {\n case 'milestone':\n {\n var milestoneStartDate = void 0;\n if (args.target.className.includes('e-baseline-gantt-milestone-container') && !isNullOrUndefined(data.baselineStartDate)) {\n milestoneStartDate = data.baselineStartDate;\n }\n else if (!isNullOrUndefined(data.startDate)) {\n milestoneStartDate = data.startDate;\n }\n var sDateValue = this.parent.getFormatedDate(milestoneStartDate, this.parent.getDateFormat());\n if (this.parent.enableHtmlSanitizer && typeof (sDateValue) === 'string') {\n sDateValue = SanitizeHtmlHelper.sanitize(sDateValue);\n }\n var sDate_1 = !isNullOrUndefined(milestoneStartDate) ? '' +\n '' : '';\n var contentTemp_1 = function () {\n return '
    ' +\n (this.parent.disableHtmlEncode ? taskNameValue.replace(//g, \">\") : taskNameValue) + '
    Date:' +\n sDateValue + '
    ' +\n taskName + sDate_1 + '
    ';\n };\n content = initializeCSPTemplate(contentTemp_1);\n break;\n }\n case 'taskbar':\n {\n var scheduledTask = !ganttData.hasChildRecords || data.isAutoSchedule ? true : false;\n var startDateValue = this.parent.getFormatedDate(scheduledTask ? data.startDate : data.autoStartDate, this.parent.getDateFormat());\n var endDateValue = this.parent.getFormatedDate(scheduledTask ? data.endDate : data.autoEndDate, this.parent.getDateFormat());\n var durationValue = this.parent.getDurationString((scheduledTask ? data.duration : data.autoDuration), data.durationUnit);\n var progressValue = data.progress;\n if (this.parent.enableHtmlSanitizer) {\n startDateValue = typeof (startDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(startDateValue) : startDateValue;\n endDateValue = typeof (endDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(endDateValue) : endDateValue;\n durationValue = typeof (durationValue) === 'string' ? SanitizeHtmlHelper.sanitize(durationValue) : durationValue;\n progressValue = typeof (progressValue) === 'string' ? SanitizeHtmlHelper.sanitize(progressValue) : progressValue;\n }\n var startDate_1 = data.startDate ? '' +\n this.parent.localeObj.getConstant(scheduledTask ? 'startDate' : 'subTasksStartDate') +\n ':' + ' ' + startDateValue + '' : '';\n var endDate_1 = data.endDate ? '' +\n this.parent.localeObj.getConstant(scheduledTask ? 'endDate' : 'subTasksEndDate') +\n ':' + '' + endDateValue + '' : '';\n var duration_1 = !isNullOrUndefined(data.duration) ? '' +\n this.parent.localeObj.getConstant('duration') + ':' +\n ' ' + durationValue +\n '' : '';\n var progress_1 = !isNullOrUndefined(data.progress) ? '' +\n this.parent.localeObj.getConstant('progress') + ':' + progressValue +\n '' : '';\n var contentTemp_2 = function () {\n return '' +\n taskName + startDate_1 + endDate_1 + duration_1 + progress_1 + '
    ';\n };\n content = initializeCSPTemplate(contentTemp_2);\n break;\n }\n case 'baseline':\n {\n var baselineStartDateValue_1 = this.parent.getFormatedDate(data.baselineStartDate, this.parent.getDateFormat());\n var baselineEndDateValue_1 = this.parent.getFormatedDate(data.baselineEndDate, this.parent.getDateFormat());\n if (this.parent.enableHtmlSanitizer) {\n baselineStartDateValue_1 = typeof (baselineStartDateValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(baselineStartDateValue_1) : baselineStartDateValue_1;\n baselineEndDateValue_1 = typeof (baselineEndDateValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(baselineEndDateValue_1) : baselineEndDateValue_1;\n }\n var contentTemp_3 = function () {\n return '' +\n taskName + '' + '' +\n '
    ' +\n this.parent.localeObj.getConstant('baselineStartDate') + ':' +\n baselineStartDateValue_1 + '
    ' + this.parent.localeObj.getConstant('baselineEndDate') +\n ':' +\n baselineEndDateValue_1 + '
    ';\n };\n content = initializeCSPTemplate(contentTemp_3, this);\n break;\n }\n case 'marker':\n {\n var markerTooltipElement = parent.tooltipModule.getMarkerTooltipData(args);\n var markerTooltipElementValue_1 = this.parent.getFormatedDate(this.parent.dateValidationModule.getDateFromFormat(markerTooltipElement.day), this.parent.getDateFormat());\n var markerLabel_1 = markerTooltipElement.label ? markerTooltipElement.label : '';\n if (this.parent.enableHtmlSanitizer) {\n markerLabel_1 = typeof (markerLabel_1) === 'string' ? SanitizeHtmlHelper.sanitize(markerLabel_1) : markerLabel_1;\n markerTooltipElementValue_1 = typeof (markerTooltipElementValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(markerTooltipElementValue_1) : markerTooltipElementValue_1;\n }\n var contentTemp_4 = function () {\n return '
    ' +\n markerTooltipElementValue_1 + '
    ' + (this.parent.disableHtmlEncode ? markerLabel_1.replace(//g, \">\") : markerLabel_1) + '
    ';\n };\n content = initializeCSPTemplate(contentTemp_4, this);\n break;\n }\n case 'connectorLine':\n {\n var fromNameValue_1 = parent.tooltipModule.predecessorTooltipData.fromName;\n var fromIdValue_1 = parent.tooltipModule.predecessorTooltipData.fromId;\n var toNameValue_1 = parent.tooltipModule.predecessorTooltipData.toName;\n var toIdValue_1 = parent.tooltipModule.predecessorTooltipData.toId;\n var linkTextValue_1 = parent.tooltipModule.predecessorTooltipData.linkText;\n var offsetStringValue_1 = parent.tooltipModule.predecessorTooltipData.offsetString;\n if (this.parent.enableHtmlSanitizer) {\n fromNameValue_1 = typeof (fromNameValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(fromNameValue_1) : fromNameValue_1;\n fromIdValue_1 = typeof (fromIdValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(fromIdValue_1) : fromIdValue_1;\n toNameValue_1 = typeof (toNameValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(toNameValue_1) : toNameValue_1;\n toIdValue_1 = typeof (toIdValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(toIdValue_1) : toIdValue_1;\n linkTextValue_1 = typeof (linkTextValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(linkTextValue_1) : linkTextValue_1;\n offsetStringValue_1 = typeof (offsetStringValue_1) === 'string' ? SanitizeHtmlHelper.sanitize(offsetStringValue_1) : offsetStringValue_1;\n }\n var contentTemp_5 = function () {\n return '' +\n '' + '
    ' +\n this.parent.localeObj.getConstant('from') + ':' + (this.parent.disableHtmlEncode ? fromNameValue_1.replace(//g, \">\") : fromNameValue_1) + ' (' +\n (this.parent.disableHtmlEncode ? (typeof (fromIdValue_1) === 'string' ? fromIdValue_1.replace(//g, \">\") : fromIdValue_1) : fromIdValue_1) + ')' + '
    ' +\n this.parent.localeObj.getConstant('to') + ':' +\n (this.parent.disableHtmlEncode ? toNameValue_1.replace(//g, \">\") : toNameValue_1) + ' (' + toIdValue_1 + ')' + '
    ' + this.parent.localeObj.getConstant('taskLink') +\n ': ' + linkTextValue_1 +\n '
    ' + this.parent.localeObj.getConstant('lag') +\n ':' +\n offsetStringValue_1 + '
    ';\n };\n content = initializeCSPTemplate(contentTemp_5, this);\n break;\n }\n case 'indicator':\n if (args.target.title.length) {\n var titleValue_1 = args.target.title;\n if (this.parent.enableHtmlSanitizer && typeof (titleValue_1) === 'string') {\n titleValue_1 = SanitizeHtmlHelper.sanitize(titleValue_1);\n }\n var contentTemp_6 = function () {\n return '' + titleValue_1 + '
    ';\n };\n content = initializeCSPTemplate(contentTemp_6);\n }\n break;\n case 'timeline':\n var timlineTitleValue_1 = args.target.title;\n if (this.parent.enableHtmlSanitizer && typeof (timlineTitleValue_1) === 'string') {\n timlineTitleValue_1 = SanitizeHtmlHelper.sanitize(timlineTitleValue_1);\n }\n var contentTemp = function () {\n return '' + timlineTitleValue_1 + '
    ';\n };\n content = initializeCSPTemplate(contentTemp);\n break;\n case 'manualtaskbar':\n {\n var autoStartDateValue = this.parent.getFormatedDate(data.autoStartDate, this.parent.getDateFormat());\n var autoEndDateValue = this.parent.getFormatedDate(data.autoEndDate, this.parent.getDateFormat());\n var durationUnitValue = this.parent.getDurationString(data.duration, data.durationUnit);\n var manualStartDateValue = this.parent.getFormatedDate(data.startDate, this.parent.getDateFormat());\n var manualEndDateValue = this.parent.getFormatedDate(data.endDate, this.parent.getDateFormat());\n if (this.parent.enableHtmlSanitizer) {\n autoStartDateValue = typeof (autoStartDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoStartDateValue) : autoStartDateValue;\n autoEndDateValue = typeof (autoEndDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoEndDateValue) : autoEndDateValue;\n durationUnitValue = typeof (durationUnitValue) === 'string' ? SanitizeHtmlHelper.sanitize(durationUnitValue) : durationUnitValue;\n manualStartDateValue = typeof (manualStartDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(manualStartDateValue) : manualStartDateValue;\n manualEndDateValue = typeof (manualEndDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(manualEndDateValue) : manualEndDateValue;\n }\n var autoStartDate_1 = data.autoStartDate ? '' +\n this.parent.localeObj.getConstant('subTasksStartDate') + ':' + ' ' +\n autoStartDateValue + '' : '';\n var autoEndDate_1 = data.autoEndDate ? '' +\n this.parent.localeObj.getConstant('subTasksEndDate') + ':' + '' +\n autoEndDateValue + '' : '';\n var durationValue_1 = !isNullOrUndefined(data.duration) ? '' +\n this.parent.localeObj.getConstant('duration') + ':' +\n ' ' + durationUnitValue +\n '' : '';\n var manualStartDate_1 = data.startDate ? '' +\n this.parent.localeObj.getConstant('startDate') + ':' + ' ' +\n manualStartDateValue + '' : '';\n var manualEndDate_1 = data.endDate ? '' +\n this.parent.localeObj.getConstant('endDate') + ':' + '' +\n manualEndDateValue + '' : '';\n var contentTemp_7 = function () {\n return '' +\n taskName + manualStartDate_1 + autoStartDate_1 + manualEndDate_1 + autoEndDate_1 + durationValue_1 + '
    ';\n };\n content = initializeCSPTemplate(contentTemp_7);\n break;\n }\n case 'manualmilestone':\n {\n var autoStartValue = this.parent.getFormatedDate(data.autoStartDate, this.parent.getDateFormat());\n var autoEndValue = this.parent.getFormatedDate(data.autoEndDate, this.parent.getDateFormat());\n var dateValue = this.parent.getFormatedDate(data.startDate, this.parent.getDateFormat());\n if (this.parent.enableHtmlSanitizer) {\n autoStartValue = typeof (autoStartValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoStartValue) : autoStartValue;\n autoEndValue = typeof (autoEndValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoEndValue) : autoEndValue;\n dateValue = typeof (dateValue) === 'string' ? SanitizeHtmlHelper.sanitize(dateValue) : dateValue;\n }\n var autoStart_1 = data.autoStartDate ? '' +\n this.parent.localeObj.getConstant('subTasksStartDate') + ':' + ' ' +\n autoStartValue + '' : '';\n var autoEnd_1 = data.autoEndDate ? '' +\n this.parent.localeObj.getConstant('subTasksEndDate') + ':' + '' +\n autoEndValue + '' : '';\n var date_1 = ' Date:' +\n '' +\n dateValue + '';\n var contentTemp_8 = function () {\n return '' +\n taskName + date_1 + autoStart_1 + autoEnd_1 + '
    ';\n };\n content = initializeCSPTemplate(contentTemp_8);\n break;\n }\n }\n return content;\n };\n /**\n * To get the details of an event marker.\n *\n * @param {TooltipEventArgs} args .\n * @returns {EventMarkerModel} .\n * @private\n */\n Tooltip.prototype.getMarkerTooltipData = function (args) {\n var markerTooltipId = (args.target.id).match(/\\d+/g);\n var markerTooltipElement = this.parent.eventMarkers[Number(markerTooltipId)];\n return markerTooltipElement;\n };\n /**\n * To get the details of a connector line.\n *\n * @param {TooltipEventArgs} args .\n * @returns {PredecessorTooltip} .\n * @private\n */\n Tooltip.prototype.getPredecessorTooltipData = function (args) {\n var predeceesorParent = args.target.id;\n if (this.parent.enableHtmlSanitizer && typeof (predeceesorParent) === 'string') {\n predeceesorParent = SanitizeHtmlHelper.sanitize(predeceesorParent);\n }\n var taskIds = predeceesorParent.match(/ConnectorLineparent(.*)child(.*)/);\n taskIds.shift();\n var fromTask;\n var toTask;\n if (this.parent.viewType === 'ResourceView') {\n fromTask = this.parent.flatData[this.parent.getTaskIds().indexOf('T' + taskIds[0])];\n toTask = this.parent.flatData[this.parent.getTaskIds().indexOf('T' + taskIds[1])];\n }\n else {\n fromTask = this.parent.flatData[this.parent.ids.indexOf(taskIds[0])];\n toTask = this.parent.flatData[this.parent.ids.indexOf(taskIds[1])];\n }\n var predecessor = (fromTask.ganttProperties.predecessor).filter(function (pdc) { return pdc.to === taskIds[1]; });\n var predecessorTooltipData = {\n fromId: this.parent.viewType === 'ResourceView' ? fromTask.ganttProperties.taskId : fromTask.ganttProperties.rowUniqueID,\n toId: this.parent.viewType === 'ResourceView' ? toTask.ganttProperties.taskId : toTask.ganttProperties.rowUniqueID,\n fromName: fromTask.ganttProperties.taskName,\n toName: toTask.ganttProperties.taskName,\n linkType: predecessor[0].type,\n linkText: this.parent.getPredecessorTextValue(predecessor[0].type),\n offset: predecessor[0].offset,\n offsetUnit: predecessor[0].offsetUnit,\n offsetString: this.parent.getDurationString(predecessor[0].offset, predecessor[0].offsetUnit)\n };\n return predecessorTooltipData;\n };\n /**\n * To compile template string.\n *\n * @param {string | Function} template .\n * @param {Gantt} parent .\n * @param {IGanttData|PredecessorTooltip} data .\n * @param {string} propName .\n * @returns {NodeList} .\n * @private\n */\n Tooltip.prototype.templateCompiler = function (template, parent, data, propName) {\n var tooltipFunction = parent.chartRowsModule.templateCompiler(template);\n var templateID = parent.chartRowsModule.getTemplateID(propName);\n var templateNode = tooltipFunction(extend({ index: 0 }, data), parent, propName, templateID, true);\n return templateNode;\n };\n Tooltip.prototype.destroy = function () {\n this.toolTipObj.destroy();\n };\n return Tooltip;\n}());\nexport { Tooltip };\n","import { isNullOrUndefined, getValue, removeClass } from '@syncfusion/ej2-base';\n/**\n * Focus module is used to handle certain action on focus elements in keyboard navigations.\n */\nvar FocusModule = /** @class */ (function () {\n function FocusModule(parent) {\n this.parent = parent;\n this.activeElement = null;\n this.previousActiveElement = null;\n }\n FocusModule.prototype.getActiveElement = function (isPreviousActiveElement) {\n return isPreviousActiveElement ? this.previousActiveElement : this.activeElement;\n };\n FocusModule.prototype.setActiveElement = function (element) {\n this.previousActiveElement = this.activeElement;\n this.activeElement = element;\n };\n /**\n * To perform key interaction in Gantt\n *\n * @param {KeyboardEventArgs} e .\n * @returns {void} .\n * @private\n */\n FocusModule.prototype.onKeyPress = function (e) {\n var ganttObj = this.parent;\n var expandedRecords = ganttObj.getExpandedRecords(ganttObj.currentViewData);\n if (isNullOrUndefined(this.parent.focusModule.getActiveElement()) && (e.action === 'expandAll' || e.action === 'collapseAll')) {\n var focussedElement = this.parent.element.querySelector('.e-treegrid');\n focussedElement.focus();\n }\n var targetElement = this.parent.focusModule.getActiveElement();\n if (e.action === 'home' || e.action === 'end' || e.action === 'downArrow' || e.action === 'upArrow' || e.action === 'delete' ||\n e.action === 'rightArrow' || e.action === 'leftArrow' || e.action === 'focusTask' || e.action === 'focusSearch' ||\n e.action === 'expandAll' || e.action === 'collapseAll' || e.action === 'undo' || e.action === 'redo') {\n if (!isNullOrUndefined(ganttObj.editModule) && !isNullOrUndefined(ganttObj.editModule.cellEditModule) &&\n ganttObj.editModule.cellEditModule.isCellEdit === true) {\n return;\n }\n }\n if (ganttObj.isAdaptive) {\n if (e.action === 'addRowDialog' || e.action === 'editRowDialog' || e.action === 'delete'\n || e.action === 'addRow') {\n if (ganttObj.selectionModule && ganttObj.selectionSettings.type === 'Multiple') {\n ganttObj.selectionModule.hidePopUp();\n document.getElementsByClassName('e-gridpopup')[0].style.display = 'none';\n }\n }\n }\n switch (e.action) {\n case 'home':\n if (ganttObj.selectionModule && ganttObj.selectionSettings.mode !== 'Cell') {\n if (ganttObj.selectedRowIndex === 0) {\n return;\n }\n ganttObj.selectionModule.selectRow(0, false, true);\n }\n break;\n case 'end':\n if (ganttObj.selectionModule && ganttObj.selectionSettings.mode !== 'Cell') {\n var currentSelectingRecord = expandedRecords[expandedRecords.length - 1];\n if (ganttObj.selectedRowIndex === ganttObj.flatData.indexOf(currentSelectingRecord)) {\n return;\n }\n ganttObj.selectionModule.selectRow(ganttObj.flatData.indexOf(currentSelectingRecord), false, true);\n }\n break;\n case 'downArrow':\n case 'upArrow':\n {\n var searchElement = ganttObj.element.querySelector('#' + ganttObj.element.id + '_searchbar');\n if (searchElement && searchElement.parentElement.classList.contains('e-input-focus')) {\n ganttObj.selectionModule.clearSelection();\n }\n if (!ganttObj.element.classList.contains('e-scroll-disabled')) {\n this.upDownKeyNavigate(e);\n if (!isNullOrUndefined(targetElement) && !isNullOrUndefined(targetElement.closest('.e-chart-row'))) {\n ganttObj.ganttChartModule.manageFocus(this.getActiveElement(), 'remove', true);\n }\n }\n break;\n }\n case 'expandAll':\n ganttObj.ganttChartModule.expandCollapseAll('expand');\n break;\n case 'collapseAll':\n ganttObj.ganttChartModule.expandCollapseAll('collapse');\n break;\n case 'expandRow':\n case 'collapseRow':\n this.expandCollapseKey(e);\n break;\n case 'saveRequest':\n if (!isNullOrUndefined(ganttObj.editModule) && !isNullOrUndefined(ganttObj.editModule.cellEditModule) &&\n ganttObj.editModule.cellEditModule.isCellEdit) {\n var col = ganttObj.editModule.cellEditModule.editedColumn;\n if (col.field === ganttObj.columnMapping.duration && !isNullOrUndefined(col.edit) &&\n !isNullOrUndefined(col.edit.read)) {\n var textBox = e.target.ej2_instances[0];\n var textValue = e.target.value;\n var ganttProp = ganttObj.currentViewData[ganttObj.selectedRowIndex].ganttProperties;\n var tempValue = void 0;\n if (col.field === ganttObj.columnMapping.duration) {\n tempValue = !isNullOrUndefined(col.edit) && !isNullOrUndefined(col.edit.read) ? col.edit.read() :\n // eslint-disable-next-line\n !isNullOrUndefined(col.valueAccessor) ? col.valueAccessor(ganttObj.columnMapping.duration, ganttObj.editedRecords, col) :\n ganttObj.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);\n if (textValue !== tempValue.toString()) {\n textBox.value = textValue;\n textBox.dataBind();\n }\n }\n }\n if (ganttObj.editModule.dialogModule.dialogObj && getValue('dialogOpen', ganttObj.editModule.dialogModule.dialogObj)) {\n return;\n }\n ganttObj.treeGrid.grid.saveCell();\n var focussedElement = ganttObj.element.querySelector('.e-treegrid');\n focussedElement.focus();\n }\n if (!isNullOrUndefined(this.parent.onTaskbarClick) && !isNullOrUndefined(targetElement)\n && !isNullOrUndefined(targetElement.closest('.e-chart-row'))) {\n var target = e.target;\n var taskbarElement = targetElement.querySelector('.e-gantt-parent-taskbar,' +\n '.e-gantt-child-taskbar,.e-gantt-milestone');\n if (taskbarElement) {\n this.parent.ganttChartModule.onTaskbarClick(e, target, taskbarElement);\n }\n }\n break;\n case 'cancelRequest':\n if (!isNullOrUndefined(ganttObj.editModule) && !isNullOrUndefined(ganttObj.editModule.cellEditModule)) {\n ganttObj.editModule.cellEditModule.isCellEdit = false;\n if (!isNullOrUndefined(ganttObj.toolbarModule)) {\n ganttObj.toolbarModule.refreshToolbarItems();\n }\n }\n break;\n case 'addRow':\n {\n if (ganttObj.editModule && ganttObj.editModule.cellEditModule && ganttObj.editModule.cellEditModule.isCellEdit) {\n e.stopPropagation();\n }\n else if (isNullOrUndefined(document.getElementById(this.parent.element.id + '_dialog'))) {\n e.preventDefault();\n ganttObj.addRecord(undefined, this.parent.editSettings.newRowPosition, this.parent.selectedRowIndex);\n var focussedElement = ganttObj.element;\n focussedElement.focus();\n }\n break;\n }\n case 'addRowDialog':\n e.preventDefault();\n if (ganttObj.editModule && ganttObj.editModule.dialogModule && ganttObj.editSettings.allowAdding) {\n if (ganttObj.editModule.dialogModule.dialogObj && getValue('dialogOpen', ganttObj.editModule.dialogModule.dialogObj)) {\n return;\n }\n ganttObj.editModule.dialogModule.openAddDialog();\n }\n break;\n case 'editRowDialog':\n {\n e.preventDefault();\n var focussedTreeElement = ganttObj.element.querySelector('.e-treegrid');\n focussedTreeElement.focus();\n if (ganttObj.editModule && ganttObj.editModule.dialogModule && ganttObj.editSettings.allowEditing) {\n if (ganttObj.editModule.dialogModule.dialogObj && getValue('dialogOpen', ganttObj.editModule.dialogModule.dialogObj)) {\n return;\n }\n ganttObj.editModule.dialogModule.openToolbarEditDialog();\n }\n break;\n }\n case 'delete':\n if (ganttObj.selectionModule && ganttObj.editModule && ganttObj.editModule.dialogModule &&\n (!ganttObj.editModule.dialogModule.dialogObj || (ganttObj.editModule.dialogModule.dialogObj &&\n !ganttObj.editModule.dialogModule.dialogObj.visible)) && (!ganttObj.editSettings.allowTaskbarEditing\n || (ganttObj.editSettings.allowTaskbarEditing && !ganttObj.editModule.taskbarEditModule.touchEdit))) {\n if ((ganttObj.selectionSettings.mode !== 'Cell' && ganttObj.selectionModule.selectedRowIndexes.length)\n || (ganttObj.selectionSettings.mode === 'Cell' && ganttObj.selectionModule.getSelectedRowCellIndexes().length)) {\n if (!isNullOrUndefined(e.target)) {\n if (e.target['tagName'] !== 'INPUT') {\n ganttObj.editModule.startDeleteAction();\n }\n }\n else {\n ganttObj.editModule.startDeleteAction();\n }\n }\n }\n break;\n case 'focusTask':\n {\n e.preventDefault();\n var selectedId = void 0;\n if (ganttObj.selectionModule) {\n var currentViewData = ganttObj.currentViewData;\n if (ganttObj.selectionSettings.mode !== 'Cell' &&\n !isNullOrUndefined(currentViewData[ganttObj.selectedRowIndex])) {\n selectedId = ganttObj.currentViewData[ganttObj.selectedRowIndex].ganttProperties.rowUniqueID;\n }\n else if (ganttObj.selectionSettings.mode === 'Cell' &&\n ganttObj.selectionModule.getSelectedRowCellIndexes().length > 0) {\n var selectCellIndex = ganttObj.selectionModule.getSelectedRowCellIndexes();\n selectedId = currentViewData[selectCellIndex[selectCellIndex.length - 1].rowIndex].ganttProperties.rowUniqueID;\n }\n }\n if (selectedId) {\n ganttObj.scrollToTask(selectedId.toString());\n }\n break;\n }\n case 'focusSearch':\n {\n if (ganttObj.element.querySelector('#' + ganttObj.element.id + '_searchbar')) {\n var searchElement = ganttObj.element.querySelector('#' + ganttObj.element.id + '_searchbar');\n searchElement.setAttribute('tabIndex', '-1');\n searchElement.focus();\n }\n break;\n }\n case 'tab':\n case 'shiftTab':\n if (!ganttObj.element.classList.contains('e-scroll-disabled')) {\n ganttObj.ganttChartModule.onTabAction(e);\n }\n break;\n case 'contextMenu':\n {\n var contextMenu = document.getElementById(this.parent.element.id +\n '_contextmenu').ej2_instances[0];\n var containerPosition = this.parent.getOffsetRect(e.target);\n var top_1 = containerPosition.top + (containerPosition.height / 2);\n var left = containerPosition.left + (containerPosition.width / 2);\n this.setActiveElement(e.target);\n contextMenu.open(top_1, left);\n e.preventDefault();\n break;\n }\n case 'undo':\n {\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['getUndoCollection'].length > 0) {\n this.parent.undo();\n }\n break;\n }\n case 'redo':\n {\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['getRedoCollection'].length > 0) {\n this.parent.redo();\n }\n break;\n }\n default:\n {\n var eventArgs = {\n requestType: 'keyPressed',\n action: e.action,\n keyEvent: e\n };\n ganttObj.trigger('actionComplete', eventArgs);\n break;\n }\n }\n };\n FocusModule.prototype.upDownKeyNavigate = function (e) {\n e.preventDefault();\n var ganttObj = this.parent;\n var expandedRecords = ganttObj.getExpandedRecords(ganttObj.currentViewData);\n if (ganttObj.selectionModule) {\n if (ganttObj.selectionSettings.mode !== 'Cell' && ganttObj.selectedRowIndex !== -1) {\n var selectedItem = ganttObj.currentViewData[ganttObj.selectedRowIndex];\n var focussedElement = ganttObj.element.querySelector('.e-focused');\n if (focussedElement) {\n removeClass([focussedElement], 'e-focused');\n }\n var focusedRowIndex = this.parent.ganttChartModule.focusedRowIndex;\n var selectingRowIndex = expandedRecords.indexOf(selectedItem);\n var currentSelectingRecord = e.action === 'downArrow' ? expandedRecords[selectingRowIndex + 1] :\n expandedRecords[selectingRowIndex - 1];\n var activeElement = this.parent['args'];\n if (document.activeElement != activeElement) {\n ganttObj.selectionModule.selectRow(ganttObj.currentViewData.indexOf(currentSelectingRecord), false, true);\n }\n }\n else if (ganttObj.selectionSettings.mode === 'Cell' && ganttObj.selectionModule.getSelectedRowCellIndexes().length > 0) {\n var selectCellIndex = ganttObj.selectionModule.getSelectedRowCellIndexes();\n var selectedCellItem = selectCellIndex[selectCellIndex.length - 1];\n var currentCellIndex = selectedCellItem.cellIndexes[selectedCellItem.cellIndexes.length - 1];\n var selectedItem = ganttObj.currentViewData[selectedCellItem.rowIndex];\n var selectingRowIndex = expandedRecords.indexOf(selectedItem);\n var currentSelectingRecord = e.action === 'downArrow' ? expandedRecords[selectingRowIndex + 1] :\n expandedRecords[selectingRowIndex - 1];\n var cellInfo = {\n rowIndex: ganttObj.currentViewData.indexOf(currentSelectingRecord),\n cellIndex: currentCellIndex\n };\n ganttObj.selectionModule.selectCell(cellInfo);\n }\n this.parent.ganttChartModule.focusedRowIndex = this.parent.selectedRowIndex;\n }\n };\n FocusModule.prototype.expandCollapseKey = function (e) {\n var ganttObj = this.parent;\n if (ganttObj.selectionModule && ganttObj.selectedRowIndex !== -1) {\n var selectedRowIndex = void 0;\n if (ganttObj.selectionSettings.mode !== 'Cell') {\n selectedRowIndex = ganttObj.selectedRowIndex;\n }\n else if (ganttObj.selectionSettings.mode === 'Cell' && ganttObj.selectionModule.getSelectedRowCellIndexes().length > 0) {\n var selectCellIndex = ganttObj.selectionModule.getSelectedRowCellIndexes();\n selectedRowIndex = selectCellIndex[selectCellIndex.length - 1].rowIndex;\n }\n if (e.action === 'expandRow') {\n ganttObj.expandByIndex(selectedRowIndex);\n }\n else {\n ganttObj.collapseByIndex(selectedRowIndex);\n }\n }\n };\n return FocusModule;\n}());\nexport { FocusModule };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, createElement, Complex, addClass, removeClass, Event, formatUnit, Browser, closest } from '@syncfusion/ej2-base';\nimport { Internationalization, extend, getValue, isObjectArray, isObject, setValue, isUndefined } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, L10n, EventHandler } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, KeyboardEvents, Collection, append, remove } from '@syncfusion/ej2-base';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { TaskProcessor } from './task-processor';\nimport { GanttChart } from './gantt-chart';\nimport { Timeline } from '../renderer/timeline';\nimport { GanttTreeGrid } from './tree-grid';\nimport { SortSettings } from '../models/models';\nimport { LoadingIndicator } from '../models/models';\nimport { TaskFields, TimelineSettings, Holiday, EventMarker, DayWorkingTime, EditSettings, SelectionSettings } from '../models/models';\nimport { FilterSettings, SplitterSettings, TooltipSettings, LabelSettings } from '../models/models';\nimport { SearchSettings, ResourceFields } from '../models/models';\nimport { DateProcessor } from './date-processor';\nimport { ChartRows } from '../renderer/chart-rows';\nimport { Dependency } from '../actions/dependency';\nimport * as cls from './css-constants';\nimport { TreeGrid } from '@syncfusion/ej2-treegrid';\nimport { getActualProperties } from '@syncfusion/ej2-grids';\nimport { ConnectorLine } from '../renderer/connector-line';\nimport { Splitter } from './splitter';\nimport { Tooltip } from '../renderer/tooltip';\nimport { FocusModule } from '../actions/keyboard';\nimport { isCountRequired } from './utils';\n/**\n *\n * Represents the Gantt chart component.\n * ```html\n *
    \n * \n * ```\n */\nvar Gantt = /** @class */ (function (_super) {\n __extends(Gantt, _super);\n function Gantt(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRowSelected = false;\n _this.showIndicator = true;\n _this.singleTier = 0;\n _this.isLocaleChanged = false;\n _this.totalUndoAction = 0;\n _this.previousFlatData = [];\n /** @hidden */\n _this.isCancelled = false;\n /** @hidden */\n _this.previousRecords = {};\n /** @hidden */\n _this.editedRecords = [];\n /** @hidden */\n _this.modifiedRecords = [];\n /** @hidden */\n _this.isOnEdit = false;\n /** @hidden */\n _this.isOnDelete = false;\n /** @hidden */\n _this.isOnAdded = false;\n /** @hidden */\n _this.isExpandCollapseLevelMethod = false;\n /** @hidden */\n _this.isDynamicData = false;\n /** @hidden */\n _this.isConnectorLineUpdate = false;\n /** @hidden */\n _this.staticSelectedRowIndex = -1;\n _this.needsID = true;\n /** @hidden */\n _this.showActiveElement = true;\n /** @hidden */\n _this.addDeleteRecord = false;\n /** @hidden */\n _this.enableHeaderFocus = true;\n /** @hidden */\n _this.enableValidation = true;\n /**\n * @private\n */\n _this.isTreeGridRendered = false;\n /**\n * @private\n */\n _this.isFromOnPropertyChange = false;\n /**\n * @private\n */\n _this.isFromRenderBaseline = false;\n /**\n * @private\n */\n _this.isGanttChartRendered = false;\n /**\n * @private\n */\n _this.isEdit = false;\n /**\n * To get the module name\n *\n * @returns {string} .\n * @private\n */\n _this.eventMarkerColloction = [];\n setValue('mergePersistData', _this.mergePersistGanttData, _this);\n return _this;\n }\n Gantt.prototype.getModuleName = function () {\n return 'gantt';\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void} .\n * @private\n */\n Gantt.prototype.preRender = function () {\n this.initProperties();\n };\n Gantt.prototype.initProperties = function () {\n this.globalize = new Internationalization(this.locale);\n this.isAdaptive = Browser.isDevice;\n this.flatData = [];\n this.currentViewData = [];\n this.updatedRecords = [];\n this.ids = [];\n this.ganttColumns = [];\n this.localeObj = new L10n(this.getModuleName(), this.getDefaultLocale(), this.locale);\n this.dataOperation = new TaskProcessor(this);\n this.nonWorkingHours = [];\n this.nonWorkingTimeRanges = [];\n this.workingTimeRanges = [];\n this.defaultEndTime = null;\n this.defaultStartTime = null;\n this.durationUnitTexts = {\n days: 'days',\n hours: 'hours',\n minutes: 'minutes',\n day: 'day',\n hour: 'hour',\n minute: 'minute'\n };\n this.durationUnitEditText = {\n minute: ['m', 'min', 'minute', 'minutes'],\n hour: ['h', 'hr', 'hour', 'hours'],\n day: ['d', 'dy', 'day', 'days']\n };\n this.perDayWidth = null;\n this.isMileStoneEdited = false;\n this.chartVerticalLineContainer = null;\n this.updatedConnectorLineCollection = [];\n this.connectorLineIds = [];\n this.predecessorsCollection = [];\n this.isInPredecessorValidation = this.enablePredecessorValidation;\n this.isValidationEnabled = true;\n this.isLoad = true;\n this.editedTaskBarItem = null;\n this.validationDialogElement = null;\n this.currentEditedArgs = {};\n this.dialogValidateMode = {\n respectLink: false,\n removeLink: false,\n preserveLinkWithEditing: true\n };\n this.secondsPerDay = this.dataOperation.getSecondsPerDay();\n this.nonWorkingDayIndex = [];\n this.dataOperation.getNonWorkingDayIndex();\n this.columnMapping = {};\n this.controlId = this.element.id;\n this.cloneProjectStartDate = this.enablePersistence && this.cloneProjectStartDate ?\n this.cloneProjectStartDate : null;\n this.cloneProjectEndDate = this.enablePersistence && this.cloneProjectEndDate ?\n this.cloneProjectEndDate : null;\n this.totalHolidayDates = this.dataOperation.getHolidayDates();\n this.ganttChartModule = new GanttChart(this);\n this.timelineModule = new Timeline(this);\n this.chartRowsModule = new ChartRows(this);\n this.treeGridModule = new GanttTreeGrid(this);\n this.dateValidationModule = new DateProcessor(this);\n this.predecessorModule = new Dependency(this);\n this.connectorLineModule = new ConnectorLine(this);\n this.splitterModule = new Splitter(this);\n this.tooltipModule = new Tooltip(this);\n this.keyConfig = {\n home: 'home',\n end: 'end',\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n collapseAll: 'ctrl+uparrow',\n expandAll: 'ctrl+downarrow',\n collapseRow: 'ctrl+shift+uparrow',\n expandRow: 'ctrl+shift+downarrow',\n saveRequest: '13',\n cancelRequest: '27',\n addRow: 'insert',\n addRowDialog: 'ctrl+insert',\n editRowDialog: 'ctrl+f2',\n delete: 'delete',\n tab: 'tab',\n shiftTab: 'shift+tab',\n focusTask: 'shift+f5',\n indentLevel: 'shift+leftarrow',\n outdentLevel: 'shift+rightarrow',\n focusSearch: 'ctrl+shift+70',\n contextMenu: 'shift+F10',\n undo: 'ctrl+z',\n redo: 'ctrl+y' //F Key\n };\n this.focusModule = new FocusModule(this);\n if (this.zoomingLevels.length === 0) {\n this.setProperties({ zoomingLevels: this.getZoomingLevels() }, true);\n }\n this.resourceFieldsMapping();\n if (isNullOrUndefined(this.resourceFields.unit)) { //set resourceUnit as unit if not mapping\n this.setProperties({ resourceFields: { unit: 'unit' } }, true);\n }\n this.taskIds = [];\n };\n Gantt.prototype.isUndoRedoItemPresent = function (action) {\n if (this.undoRedoModule && this.undoRedoActions && this.undoRedoActions.indexOf(action) != -1) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @returns {string} .\n * @private\n */\n Gantt.prototype.getDateFormat = function () {\n if (!isNullOrUndefined(this.dateFormat)) {\n return this.dateFormat;\n }\n else {\n var ganttDateFormat = this.globalize.getDatePattern({ skeleton: 'yMd' });\n return ganttDateFormat;\n }\n };\n /**\n * To get timezone offset.\n *\n * @returns {number} .\n * @private\n */\n Gantt.prototype.getDefaultTZOffset = function () {\n var janMonth = new Date(new Date().getFullYear(), 0, 1);\n var julMonth = new Date(new Date().getFullYear(), 6, 1); //Because there is no reagions DST inbetwwen this range\n return Math.max(janMonth.getTimezoneOffset(), julMonth.getTimezoneOffset());\n };\n /**\n * To check whether the date is in DST.\n *\n * @param {Date} date - Defines the date to check whether it is DST.\n * @returns {boolean} .\n * @private\n */\n Gantt.prototype.isInDst = function (date) {\n return date.getTimezoneOffset() < this.getDefaultTZOffset();\n };\n /**\n * Method to map resource fields.\n *\n * @returns {void} .\n */\n Gantt.prototype.resourceFieldsMapping = function () {\n var resourceSettings = this.resourceFields;\n resourceSettings.id = !isNullOrUndefined(resourceSettings.id) ? resourceSettings.id : this.resourceIDMapping;\n resourceSettings.name = !isNullOrUndefined(resourceSettings.name) ? resourceSettings.name : this.resourceNameMapping;\n };\n /**\n * To validate height and width\n *\n * @param {string | number} value .\n * @returns {string} .\n */\n Gantt.prototype.validateDimentionValue = function (value) {\n if (!isNullOrUndefined(value)) {\n if (typeof (value) === 'string' && value !== 'auto' && value.indexOf('%') === -1) {\n return value.indexOf('px') === -1 ? value + 'px' : value;\n }\n else if (typeof (value) === 'number') {\n return value + 'px';\n }\n else {\n return value.toString();\n }\n }\n else {\n return null;\n }\n };\n /**\n * To calculate dimensions of Gantt control\n *\n * @returns {void} .\n */\n Gantt.prototype.calculateDimensions = function () {\n var settingsHeight = this.validateDimentionValue(this.height);\n var settingsWidth = this.validateDimentionValue(this.width);\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n settingsWidth = this.width;\n }\n var elementStyleHeight = this.element.style.height;\n var elementStyleWidth = this.element.style.width;\n if (settingsWidth) {\n this.element.style.width = settingsWidth;\n }\n if (settingsHeight) {\n this.element.style.height = settingsHeight;\n }\n if (!settingsHeight && !elementStyleHeight) {\n this.element.style.height = 'auto'; // old 450px\n }\n if (!settingsWidth && !elementStyleWidth) {\n this.element.style.width = 'auto';\n }\n this.ganttHeight = this.element.offsetHeight;\n this.ganttWidth = this.element.offsetWidth;\n };\n /**\n * @returns {void} .\n * @private\n */\n Gantt.prototype.render = function () {\n if (this.isReact) {\n this.treeGrid.isReact = true;\n this.treeGrid.grid.isReact = true;\n }\n if (this.isVue) {\n this.treeGrid.isVue = true;\n this.treeGrid.grid.isVue = true;\n this.treeGrid.vueInstance = this.vueInstance;\n this.treeGrid.grid.vueInstance = this.vueInstance;\n }\n this.element.setAttribute('role', 'application');\n createSpinner({ target: this.element }, this.createElement);\n this.trigger('load', {});\n this.element.classList.add(cls.root);\n this.rowHeight = (!isNullOrUndefined(document.body.className) && document.body.className.includes(\"e-bigger\")) ? (this.rowHeight === 36) ? 46 : this.rowHeight : this.rowHeight;\n if (this.isAdaptive) {\n this.element.classList.add(cls.adaptive);\n }\n else {\n this.element.classList.remove(cls.adaptive);\n }\n this.calculateDimensions();\n if (!isNullOrUndefined(this.toolbarModule)) {\n this.renderToolbar();\n }\n this.splitterModule.renderSplitter();\n this.notify('renderPanels', null);\n if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === \"Shimmer\") {\n this.showMaskRow();\n }\n else {\n this.showSpinner();\n }\n this.dataOperation.checkDataBinding();\n };\n Gantt.prototype.hideMaskRow = function () {\n var isTablePresent = this.element.querySelectorAll('.e-masked-table').length;\n if (!isNullOrUndefined(this.contentMaskTable) && (isTablePresent != 0 || this.contentMaskTable)) {\n var maskTable = this.contentMaskTable;\n remove(maskTable);\n this.contentMaskTable = null;\n }\n isTablePresent = this.element.querySelectorAll('.e-masked-table').length;\n if (!isNullOrUndefined(this.headerMaskTable) && (isTablePresent != 0 || this.headerMaskTable)) {\n var maskTable = this.headerMaskTable;\n remove(maskTable);\n this.headerMaskTable = null;\n }\n while ((this.element.querySelectorAll('.e-table-background')).length != 0) {\n this.element.querySelectorAll('.e-table-background')[0].remove();\n }\n while ((this.element.querySelectorAll('.e-temp-timeline')).length != 0) {\n this.element.querySelectorAll('.e-temp-timeline')[0].remove();\n }\n if (this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer).length != 0) {\n for (var i = 0; i < this.singleTier; i++) {\n if (!isNullOrUndefined(this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer)[parseInt(i.toString(), 10)])) {\n this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer)[parseInt(i.toString(), 10)]['style'].visibility = \"visible\";\n }\n }\n }\n if (!isNullOrUndefined(this.element.querySelector('.' + cls.timelineHeaderContainer))) {\n this.element.querySelector('.' + cls.timelineHeaderContainer)['style'].position = \"relative\";\n }\n if (!isNullOrUndefined(this.element.getElementsByClassName(cls.chartBodyContent)[0])) {\n this.element.getElementsByClassName(cls.chartBodyContent)[0]['style'].visibility = \"visible\";\n }\n };\n Gantt.prototype.showMaskRow = function () {\n var ganttHeader = this.chartPane.childNodes[0].childNodes[0];\n this.scrollLeftValue = this.chartPane.childNodes[0].childNodes[0]['scrollLeft'];\n var ganttContent = this.chartPane.childNodes[0].childNodes[1];\n if (this.treeGrid.element) {\n this.ganttChartModule['setVirtualHeight']();\n }\n if (!this.contentMaskTable) {\n if (ganttContent) {\n var content = ganttContent;\n this.renderBackGround(content);\n if (this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer).length != 0) {\n this.singleTier = this.timelineModule.isSingleTier ? 1 : 2;\n for (var i = 0; i < this.singleTier; i++) {\n this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer)[parseInt(i.toString(), 10)]['style'].visibility = \"hidden\";\n }\n }\n if (this.singleTier === 0) {\n this.singleTier = 2;\n }\n this.element.getElementsByClassName(cls.chartBodyContent)[0]['style'].visibility = \"hidden\";\n this.contentMaskTable = this.contentMaskTable = this.createMaskTable(content);\n }\n if (ganttHeader) {\n this.element.querySelector('.' + cls.timelineHeaderContainer)['style'].position = \"static\";\n var content = ganttHeader;\n this.renderHeaderBackground(content);\n this.headerMaskTable = this.headerMaskTable = this.createMaskTable(content);\n }\n }\n };\n Gantt.prototype.renderHeaderBackground = function (element) {\n var parentElement = element;\n var timelineHeight = element.getBoundingClientRect().height;\n var header = closest(parentElement, '.' + cls.timelineHeaderContainer) ? true : false;\n if (header) {\n var div = this.createElement('div', { className: 'e-table-background' });\n var tempRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + timelineHeight + 'px;'\n } });\n var backgroundLines = 0;\n var containerWidth = Math.round(element.getBoundingClientRect().width);\n for (var i = 0; i < 3; i++) {\n if (this.enableRtl) {\n div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {\n style: 'left: ' + (containerWidth -= ((160))) + 'px; top:0px;'\n } }));\n }\n else {\n div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {\n style: 'left: ' + (backgroundLines += ((160))) + 'px; top:0px;'\n } }));\n }\n }\n parentElement.insertBefore(div, parentElement.firstChild);\n }\n };\n Gantt.prototype.renderBackGround = function (element) {\n var parentElement = element;\n var timelineHeight = element.getBoundingClientRect().height;\n var content = closest(parentElement, '.' + cls.chartBodyContainer) ? true : false;\n if (content) {\n var div = this.createElement('div', { className: 'e-table-background' });\n var tempRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + timelineHeight + 'px;'\n } });\n var backgroundLines = 0;\n var containerWidth = Math.round(element.getBoundingClientRect().width);\n for (var i = 0; i < 3; i++) {\n if (this.enableRtl) {\n div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {\n style: 'left: ' + (containerWidth -= (160)) + 'px;z-index:1;'\n } }));\n }\n else {\n div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {\n style: 'left: ' + (backgroundLines += (160)) + 'px;z-index:1;'\n } }));\n }\n }\n parentElement.insertBefore(div, parentElement.firstChild);\n }\n };\n Gantt.prototype.createMaskTable = function (element) {\n var parentElement = element;\n var shimmerContainerHeight = element.getBoundingClientRect().height;\n var header = closest(parentElement, '.' + cls.timelineHeaderContainer) ? true : false;\n var maskTable;\n if (header) {\n maskTable = this.createEmptyTimeLineTable(shimmerContainerHeight);\n maskTable.style.position = 'sticky';\n maskTable.style.left = 0 + 'px';\n if (this.enableRtl) {\n maskTable.style.removeProperty('left');\n }\n }\n else {\n maskTable = this.createEmptyMaskTable(shimmerContainerHeight);\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = 1;\n }\n if (!header) {\n maskTable.style.height = element.getBoundingClientRect().height + 'px';\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n }\n else {\n maskTable.style.height = element.getBoundingClientRect().height + 'px';\n var div = this.createElement('div', { className: 'e-temp-timeline' });\n div.style.width = this.element.getElementsByClassName('e-timeline-header-container')[0]['offsetWidth'] + 'px';\n div.style.position = 'sticky';\n if (this.enableRtl) {\n div.style['margin-right'] = Math.abs(this.scrollLeftValue) + 'px';\n }\n else {\n div.style['margin-left'] = this.scrollLeftValue + 'px';\n }\n div.appendChild(maskTable);\n parentElement.insertBefore(div, parentElement.firstChild);\n }\n return maskTable;\n };\n Gantt.prototype.createEmptyTimeLineTable = function (timelineHeight) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = [];\n var duplicateRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + timelineHeight / 2 + 'px;'\n } });\n for (var i = 0; i < this.singleTier; i++) {\n row.push(duplicateRow.cloneNode(true));\n }\n this.topBottomHeader = 0;\n for (var i = 0; i < row.length; i++) {\n tbody.appendChild(this.applyTimelineMaskRow(row[parseInt(i.toString(), 10)]));\n this.topBottomHeader = this.topBottomHeader + 1;\n }\n table.appendChild(tbody);\n table.style.width = 100 + '%';\n return table;\n };\n Gantt.prototype.applyTimelineMaskRow = function (row) {\n var maskRow = row;\n var num = 4;\n if (this.element.getElementsByClassName('e-timeline-header-container')[0]['offsetWidth'] / 166 > 4) {\n num = this.element.getElementsByClassName('e-timeline-header-container')[0]['offsetWidth'] / 166;\n }\n for (var i = 0; i < num; i++) {\n maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));\n }\n for (var i = 0; i < maskRow.childNodes.length - 1; i++) {\n maskRow.childNodes[parseInt(i.toString(), 10)]['style']['width'] = 166 + 'px';\n }\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n switch (this.topBottomHeader) {\n case 0:\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -20 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n break;\n case 1:\n maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));\n maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));\n maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));\n var innerMaskCells = [].slice.call(maskCell.childNodes);\n for (var i_1 = 0; i_1 < innerMaskCells.length; i_1++) {\n var htmlInner = innerMaskCells[parseInt(i_1.toString(), 10)];\n if (i_1 === 0) {\n if (this.enableRtl) {\n htmlInner.innerHTML = '';\n htmlInner.children[0]['style'].left = -14 + 'px';\n }\n else {\n htmlInner.innerHTML = '';\n }\n }\n else if (i_1 === 1) {\n if (this.enableRtl) {\n htmlInner.innerHTML = '';\n htmlInner.children[0]['style'].left = -30 + 'px';\n }\n else {\n htmlInner.innerHTML = '';\n }\n }\n else {\n if (this.enableRtl) {\n htmlInner.innerHTML = '';\n htmlInner.children[0]['style'].left = -60 + 'px';\n }\n else {\n htmlInner.innerHTML = '';\n }\n }\n }\n break;\n }\n }\n return maskRow;\n };\n Gantt.prototype.createEmptyMaskTable = function (timelineHeight) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = [];\n var duplicateRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + timelineHeight / 7 + 'px;'\n } });\n this.columnLoop = 0;\n for (var i = 0; i < 6; i++) {\n row.push(duplicateRow.cloneNode(true));\n }\n for (var j = 0; j < row.length; j++) {\n if (this.columnLoop < 4) {\n this.columnLoop = this.columnLoop + 1;\n }\n else if (this.columnLoop === 4) {\n this.columnLoop = 1;\n }\n tbody.appendChild(this.applyMaskRow(row[parseInt(j.toString(), 10)]));\n }\n table.appendChild(tbody);\n table.style.width = 100 + '%';\n var div = this.createElement('div', { className: 'e-temp-container' });\n div.style.width = 'calc(100% - ' + 17 + 'px)';\n div.style.overflow = 'hidden';\n div.appendChild(table);\n return div;\n };\n Gantt.prototype.applyMaskRow = function (row) {\n var maskRow = row;\n if (this.columnLoop < 4) {\n var num = 2;\n if (this.element.getElementsByClassName('e-timeline-header-container')[0]['offsetWidth'] / 300 > 2) {\n num = this.element.getElementsByClassName('e-timeline-header-container')[0]['offsetWidth'] / 300;\n }\n for (var i = 0; i < num; i++) {\n maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));\n }\n }\n else {\n maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));\n }\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n switch (this.columnLoop) {\n case 1:\n if (i === 0) {\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -14 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n }\n else {\n maskCell.innerHTML = '';\n }\n break;\n case 2:\n if (i === 0) {\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -14 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n }\n else {\n maskCell.innerHTML = '';\n }\n break;\n case 3:\n if (i === 0) {\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -64 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n }\n else {\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -192 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n }\n break;\n case 4:\n if (this.enableRtl) {\n maskCell.innerHTML = '';\n maskCell.children[0]['style'].left = -388 + 'px';\n }\n else {\n maskCell.innerHTML = '';\n }\n break;\n }\n }\n return maskRow;\n };\n /**\n * Method used to show spinner.\n *\n * @returns {void} .\n */\n Gantt.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Method used to hide spinner.\n *\n * @returns {void} .\n */\n Gantt.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * @returns {void} .\n * @private\n */\n Gantt.prototype.processTimeline = function () {\n this.timelineModule.processTimelineUnit();\n this.timelineModule.calculateZoomingLevelsPerDayWidth(); // To calculate the perDaywidth\n };\n /**\n * @param {boolean} isChange -Defines whether task data is changed.\n * @returns {void} .\n * @private\n */\n Gantt.prototype.renderGantt = function (isChange) {\n if (isChange) {\n this.isFromOnPropertyChange = isChange;\n }\n if (this.enableValidation) {\n this.dataOperation.calculateProjectDates();\n this.timelineModule.validateTimelineProp();\n }\n if (this.allowParentDependency) {\n this.predecessorModule.updateParentPredecessor();\n }\n // predecessor calculation\n if (this.predecessorModule && this.taskFields.dependency) {\n this.predecessorModule['parentIds'] = [];\n this.predecessorModule['parentRecord'] = [];\n this.predecessorModule.updatePredecessors();\n if (this.isInPredecessorValidation && this.enableValidation && this.autoCalculateDateScheduling) {\n this.predecessorModule.updatedRecordsDateByPredecessor();\n }\n }\n if (this.enableValidation) {\n this.dataOperation.updateGanttData();\n }\n if (isChange) {\n if (this.dataSource instanceof Object && isCountRequired(this)) {\n var count = getValue('count', this.dataSource);\n this.treeGrid.dataSource = { result: this.flatData, count: count };\n }\n else {\n this.treeGrid.setProperties({ dataSource: this.flatData }, false);\n }\n }\n else {\n this.treeGridPane.classList.remove('e-temp-content');\n remove(this.treeGridPane.querySelector('.e-gantt-temp-header'));\n this.notify('dataReady', {});\n if (this.enableContextMenu) {\n this.notify('initiate-contextMenu', {});\n }\n this.renderTreeGrid();\n this.wireEvents();\n this.notify('initPredessorDialog', {});\n }\n if (!this.isFromOnPropertyChange) {\n this.splitterModule.updateSplitterPosition();\n }\n if ((this.gridLines === 'Vertical' || this.gridLines === 'Both') && (!this.dayMarkersModule)) {\n this.renderChartVerticalLines();\n }\n };\n Gantt.prototype.removeCriticalPathStyles = function () {\n var ganttChartElement = this.ganttChartModule.chartElement;\n removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-taskbar-inner-div'), cls.criticalChildTaskBarInnerDiv);\n removeClass(ganttChartElement.querySelectorAll('.e-gantt-child-progressbar-inner-div'), cls.criticalChildProgressBarInnerDiv);\n removeClass(ganttChartElement.querySelectorAll('.e-critical-milestone'), cls.criticalMilestone);\n removeClass(this.element.querySelectorAll('.e-connector-line'), cls.criticalConnectorLineSVG);\n removeClass(this.element.querySelectorAll('.e-connector-line-arrow'), cls.criticalConnectorArrowSVG);\n };\n Gantt.prototype.wireEvents = function () {\n if (this.allowKeyboard) {\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfig,\n eventName: 'keydown'\n });\n }\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n Gantt.prototype.unwireEvents = function () {\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n this.keyboardModule = null;\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n };\n Gantt.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n this.ganttChartModule.manageFocus(this.treeGrid.element.childNodes[1], 'remove', false);\n this.ganttChartModule.manageFocus(this.element, 'add', false);\n }\n }\n };\n /**\n * Method trigger while user perform window resize.\n *\n * @returns {void} .\n * @private\n */\n Gantt.prototype.windowResize = function () {\n if (!isNullOrUndefined(this.element)) {\n this.updateContentHeight();\n this.ganttChartModule.updateWidthAndHeight(); // Updating chart scroll conatiner height for row mismatch\n this.treeGridModule.ensureScrollBar();\n if (this.predecessorModule && this.taskFields.dependency) {\n this.updateRowHeightInConnectorLine(this.updatedConnectorLineCollection);\n this.connectorLineModule.renderConnectorLines(this.updatedConnectorLineCollection);\n }\n var criticalModule = this.criticalPathModule;\n if (this.enableCriticalPath && criticalModule && criticalModule.criticalPathCollection) {\n this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n this.calculateDimensions();\n var pane1 = this.splitterModule.splitterObject.element.querySelectorAll('.e-pane')[0];\n var pane2 = this.splitterModule.splitterObject.element.querySelectorAll('.e-pane')[1];\n this.splitterModule.splitterPreviousPositionGrid = pane1.scrollWidth + 1 + 'px';\n this.splitterModule.splitterPreviousPositionChart = pane2.scrollWidth + 1 + 'px';\n this.splitterModule.splitterObject.paneSettings[1].size = (this.ganttWidth - parseInt(this.splitterModule.splitterPreviousPositionGrid) - 4) + 'px';\n var proxy_1 = this;\n if (this.timelineModule.isZoomToFit) {\n setTimeout(function () {\n proxy_1.timelineModule.processZoomToFit();\n }, 0);\n }\n }\n };\n Gantt.prototype.keyActionHandler = function (e) {\n if (this.enableContextMenu && this.contextMenuModule && (e.action === 'downArrow' || e.action === 'upArrow') && document.getElementById(this.element.id + '_contextmenu') && this['args']) {\n var firstMenuItem = this['args'];\n if (!isNullOrUndefined(firstMenuItem)) {\n (firstMenuItem).focus();\n }\n }\n if (e.target && (e.action === 'downArrow' || e.action === 'upArrow') && e.target === this.element.querySelector('.e-rowcell')) {\n this.treeGrid.grid.notify('key-pressed', e);\n }\n else {\n this.focusModule.onKeyPress(e);\n }\n };\n /**\n * Method for updating row height value in connector line collections\n *\n * @param {IConnectorLineObject[]} collection -Defines the CollectorLine collection.\n * @returns {void} .\n * @private\n */\n Gantt.prototype.updateRowHeightInConnectorLine = function (collection) {\n if (collection && collection.length) {\n var rowHeight = this.ganttChartModule.getChartRows()[0]\n && this.ganttChartModule.getChartRows()[0].getBoundingClientRect().height;\n if (rowHeight && !isNaN(rowHeight)) {\n for (var count = 0; count < collection.length; count++) {\n collection[count].rowHeight = rowHeight;\n }\n }\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n Gantt.prototype.renderToolbar = function () {\n if (!isNullOrUndefined(this.toolbarModule)) {\n this.toolbarModule.renderToolbar();\n this.toolbarModule.refreshToolbarItems();\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n Gantt.prototype.renderTreeGrid = function () {\n this.treeGridModule.renderTreeGrid();\n };\n Gantt.prototype.updateCurrentViewData = function () {\n var _this = this;\n this.currentViewData = this.treeGrid.getCurrentViewRecords().slice();\n if (!this.loadChildOnDemand && this.taskFields.hasChildMapping && this.currentViewData.length > 0) {\n this.autoCalculateDateScheduling = false;\n this.flatData = [];\n this.dataOperation.taskIds = [];\n this.ids = [];\n this.dataOperation.recordIndex = 0;\n this.dataOperation.dataArray = this.currentViewData;\n this.dataOperation.cloneDataSource();\n if (this.predecessorModule && this.taskFields.dependency) {\n this.predecessorModule['parentIds'] = [];\n this.predecessorModule['parentRecord'] = [];\n this.predecessorModule.updatePredecessors();\n }\n var gridData = this.treeGrid.grid.contentModule['rows'];\n var data = gridData.filter(function (x) {\n if (x['data'][_this.taskFields.id] === _this.flatData[0].ganttProperties.taskId) {\n return x;\n }\n })[0];\n var index = data['index'];\n for (var i = 0; i < this.flatData.length; i++) {\n this.flatData[i].index = index;\n index++;\n }\n this.currentViewData = this.flatData;\n this.treeGrid.grid.currentViewData = this.flatData;\n if (!isNullOrUndefined(this.treeGrid['virtualScrollModule'])) {\n this.treeGrid['virtualScrollModule'].visualData = this.flatData;\n this.updatedRecords = this.flatData;\n }\n }\n };\n /**\n * @param {IGanttData} records -Defines the delete record collections.\n * @returns {IGanttData} .\n * @private\n */\n Gantt.prototype.getRecordFromFlatdata = function (records) {\n var updatedRecord = [];\n for (var i = 0; i < records.length; i++) {\n updatedRecord.push(this.getTaskByUniqueID(records[i].uniqueID));\n }\n return updatedRecord;\n };\n /**\n * @param {object} args -Update the gantt element content height.\n * @returns {void} .\n * @private\n */\n Gantt.prototype.updateContentHeight = function (args) {\n if ((!this.allowTaskbarOverlap && !this.ganttChartModule.isCollapseAll && !this.ganttChartModule.isExpandAll) && !this.isLoad) {\n return;\n }\n else {\n if (this.virtualScrollModule && this.enableVirtualization && !isNullOrUndefined(args)) {\n var length_1 = getValue('result.length', args);\n this.contentHeight = length_1 * this.rowHeight;\n }\n else {\n var expandedRecords = this.virtualScrollModule && this.enableVirtualization ?\n this.currentViewData : this.getExpandedRecords(this.currentViewData);\n var height = void 0;\n var chartRow = !isNullOrUndefined(this.ganttChartModule.getChartRows()) ? this.ganttChartModule.getChartRows()[0] : null;\n if (!isNullOrUndefined(chartRow) && chartRow.getBoundingClientRect().height > 0) {\n height = chartRow.getBoundingClientRect().height;\n }\n else {\n height = this.rowHeight;\n }\n this.contentHeight = expandedRecords.length * height;\n }\n }\n };\n /**\n * To get expand status.\n *\n * @param {IGanttData} data .\n * @returns {boolean} .\n * @private\n */\n Gantt.prototype.getExpandStatus = function (data) {\n var parentRecord = this.getParentTask(data.parentItem);\n if (!isNullOrUndefined(parentRecord)) {\n if (parentRecord.expanded === false) {\n return false;\n }\n else if (parentRecord.parentItem) {\n var parentData = this.getParentTask(parentRecord.parentItem);\n if (parentData.expanded === false) {\n return false;\n }\n else {\n return this.getExpandStatus(this.getParentTask(parentRecord.parentItem));\n }\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n /**\n * Get expanded records from given record collection.\n *\n * @param {IGanttData[]} records - Defines record collection.\n * @returns {IGanttData[]} .\n\n */\n Gantt.prototype.getExpandedRecords = function (records) {\n var _this = this;\n if (isNullOrUndefined(records)) {\n return [];\n }\n var expandedRecords = records.filter(function (record) {\n return _this.getExpandStatus(record) === true;\n });\n return expandedRecords;\n };\n /**\n * Getting the Zooming collections of the Gantt control\n *\n * @returns {ZoomTimelineSettings} .\n * @private\n */\n Gantt.prototype.getZoomingLevels = function () {\n var _WeekStartDay = this.timelineSettings.weekStartDay;\n var zoomingLevels = [\n {\n topTier: { unit: 'Year', format: 'yyyy', count: 50 },\n bottomTier: { unit: 'Year', format: 'yyyy', count: 10 }, timelineUnitSize: 99, level: 0,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'yyyy', count: 20 },\n bottomTier: { unit: 'Year', format: 'yyyy', count: 5 }, timelineUnitSize: 99, level: 1,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'yyyy', count: 5 },\n bottomTier: { unit: 'Year', format: 'yyyy', count: 1 }, timelineUnitSize: 99, level: 2,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'MMM, yy', count: 1 },\n bottomTier: {\n unit: 'Month', formatter: this.displayHalfValue, count: 6\n }, timelineUnitSize: 66, level: 3,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'MMM, yy', count: 1 },\n bottomTier: {\n unit: 'Month', formatter: this.displayHalfValue, count: 6\n }, timelineUnitSize: 99, level: 4,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'MMM, yy', count: 1 },\n bottomTier: {\n unit: 'Month', formatter: this.displayQuarterValue, count: 3\n }, timelineUnitSize: 66, level: 5,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'yyyy', count: 1 },\n bottomTier: {\n unit: 'Month', formatter: this.displayQuarterValue, count: 3\n }, timelineUnitSize: 99, level: 6,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Year', format: 'yyyy', count: 1 },\n bottomTier: { unit: 'Month', format: 'MMM yyyy', count: 1 }, timelineUnitSize: 99, level: 7,\n timelineViewMode: 'Year', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Month', format: 'MMM, yy', count: 1 },\n bottomTier: { unit: 'Week', format: 'dd', count: 1 }, timelineUnitSize: 33, level: 8,\n timelineViewMode: 'Month', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Month', format: 'MMM, yyyy', count: 1 },\n bottomTier: { unit: 'Week', format: 'dd MMM', count: 1 }, timelineUnitSize: 66, level: 9,\n timelineViewMode: 'Month', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Month', format: 'MMM, yyyy', count: 1 },\n bottomTier: { unit: 'Week', format: 'dd MMM', count: 1 }, timelineUnitSize: 99, level: 10,\n timelineViewMode: 'Month', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Week', format: 'MMM dd, yyyy', count: 1 },\n bottomTier: { unit: 'Day', format: 'd', count: 1 }, timelineUnitSize: 33, level: 11,\n timelineViewMode: 'Week', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Week', format: 'MMM dd, yyyy', count: 1 },\n bottomTier: { unit: 'Day', format: 'd', count: 1 }, timelineUnitSize: 66, level: 12,\n timelineViewMode: 'Week', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Week', format: 'MMM dd, yyyy', count: 1 },\n bottomTier: { unit: 'Day', format: 'd', count: 1 }, timelineUnitSize: 99, level: 13,\n timelineViewMode: 'Week', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 12 }, timelineUnitSize: 66, level: 14,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 12 }, timelineUnitSize: 99, level: 15,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 6 }, timelineUnitSize: 66, level: 16,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 6 }, timelineUnitSize: 99, level: 17,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 2 }, timelineUnitSize: 66, level: 18,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 2 }, timelineUnitSize: 99, level: 19,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 1 }, timelineUnitSize: 66, level: 20,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Day', format: 'E dd yyyy', count: 1 },\n bottomTier: { unit: 'Hour', format: 'hh a', count: 1 }, timelineUnitSize: 99, level: 21,\n timelineViewMode: 'Day', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Hour', format: 'ddd MMM, h a', count: 1 },\n bottomTier: { unit: 'Minutes', format: 'mm', count: 30 }, timelineUnitSize: 66, level: 22,\n timelineViewMode: 'Hour', weekStartDay: 0, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Hour', format: 'ddd MMM, h a', count: 1 },\n bottomTier: { unit: 'Minutes', format: 'mm', count: 15 }, timelineUnitSize: 66, level: 23,\n timelineViewMode: 'Hour', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n },\n {\n topTier: { unit: 'Hour', format: 'ddd MMM, h a', count: 1 },\n bottomTier: { unit: 'Minutes', format: 'mm', count: 1 }, timelineUnitSize: 66, level: 24,\n timelineViewMode: 'Hour', weekStartDay: _WeekStartDay, updateTimescaleView: true, weekendBackground: null, showTooltip: true\n }\n ];\n return zoomingLevels;\n };\n Gantt.prototype.displayQuarterValue = function (date) {\n var month = date.getMonth();\n if (month >= 0 && month <= 2) {\n return 'Q1';\n }\n else if (month >= 3 && month <= 5) {\n return 'Q2';\n }\n else if (month >= 6 && month <= 8) {\n return 'Q3';\n }\n else {\n return 'Q4';\n }\n };\n Gantt.prototype.displayHalfValue = function (date) {\n var month = date.getMonth();\n if (month >= 0 && month <= 5) {\n return 'H1';\n }\n else {\n return 'H2';\n }\n };\n /**\n *\n * @param {Date} date .\n * @param {string} format .\n * @returns {string} .\n */\n Gantt.prototype.getFormatedDate = function (date, format) {\n if (isNullOrUndefined(date)) {\n return null;\n }\n if (isNullOrUndefined(format)) {\n format = this.getDateFormat();\n }\n return this.globalize.formatDate(date, { format: format });\n };\n /**\n * Get duration value as string combined with duration and unit values.\n *\n * @param {number} duration - Defines the duration.\n * @param {string} durationUnit - Defines the duration unit.\n * @returns {string} .\n */\n Gantt.prototype.getDurationString = function (duration, durationUnit) {\n var value = this.dateValidationModule.getDurationString(duration, durationUnit);\n return value;\n };\n /**\n * Get work value as string combined with work and unit values.\n *\n * @param {number} work - Defines the work value.\n * @param {string} workUnit - Defines the work unit.\n * @returns {string} .\n */\n Gantt.prototype.getWorkString = function (work, workUnit) {\n var value = this.dateValidationModule.getWorkString(work, workUnit);\n return value;\n };\n Gantt.prototype.updateTreeColumns = function () {\n var temp;\n var field;\n var gridColumns = this.treeGrid.grid.getColumns();\n if (this.treeColumnIndex !== -1 && this.columns[this.treeColumnIndex] &&\n !isNullOrUndefined(this.columns[this.treeColumnIndex]['template'])) {\n temp = this.columns[this.treeColumnIndex]['template'];\n field = this.columns[this.treeColumnIndex]['field'];\n }\n var gridColumn;\n for (var i = 0; i < gridColumns.length; i++) {\n gridColumn = {};\n for (var j = 0; j < this.columns.length; j++) {\n if (this.columns[j]['field'] == gridColumns[i].field) {\n for (var _i = 0, _a = Object.keys(this.columns[j]); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (!isUndefined(this.columns[j][prop])) {\n gridColumn[prop] = gridColumns[i][prop];\n }\n gridColumn.visible = gridColumns[i].visible;\n gridColumn.width = gridColumns[i].width;\n }\n this.columns[j] = (gridColumn);\n if (this.columns[j]['type'] !== 'checkbox' && (!isNullOrUndefined(temp) && temp !== '')) {\n this.columns[j]['template'] = temp;\n }\n }\n }\n }\n if (this.columns.length > 0) {\n this.treeGrid.setProperties({ columns: this.columns }, true);\n }\n };\n /**\n *\n * @param {object} args .\n * @returns {void} .\n * @private\n */\n Gantt.prototype.treeDataBound = function (args) {\n if (this.isLoad && this.undoRedoModule) {\n if (this.sortSettings.columns.length > 0) {\n this.undoRedoModule['previousSortedColumns'] = this.sortSettings.columns;\n }\n else if (this.searchSettings.key != \"\") {\n this.undoRedoModule['searchString'] = this.searchSettings.key;\n }\n }\n this.element.getElementsByClassName('e-chart-root-container')[0]['style'].height = '100%';\n var gridHeight = this.element.getElementsByClassName('e-gridcontent')[0]['style'].height;\n var gridContent = this.element.getElementsByClassName('e-gridcontent')[0].childNodes[0];\n gridContent.setAttribute('tabindex', '0');\n var treeGridrole = this.element.getElementsByClassName('e-gridcontent')[0].childNodes[0].childNodes[0];\n treeGridrole.setAttribute('role', 'treegrid');\n var timelineContainer = this.element.getElementsByClassName('e-timeline-header-container')[0]['offsetHeight'];\n gridHeight = 'calc(100% - ' + timelineContainer + 'px)';\n // eslint-disable-next-line\n // this.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';\n var scrollContainer = this.element.getElementsByClassName('e-chart-scroll-container e-content')[0];\n scrollContainer['style'].height = 'calc(100% - ' + timelineContainer + 'px)';\n scrollContainer.setAttribute('tabindex', '0');\n if (!isNullOrUndefined(this.toolbarModule) && !isNullOrUndefined(this.toolbarModule.element)) {\n this.splitterElement.style.height = 'calc(100% - ' + this.toolbarModule.element.offsetHeight + 'px)';\n }\n else {\n this.splitterElement.style.height = '100%';\n }\n if (this.isLoad) {\n if (this.enablePersistence) {\n this.updateTreeColumns();\n }\n this.updateCurrentViewData();\n if (!this.enableVirtualization) {\n this.updateContentHeight();\n }\n if (!this.isTreeGridRendered) {\n this.isTreeGridRendered = true;\n var toolbarHeight = 0;\n if (!isNullOrUndefined(this.toolbarModule) && !isNullOrUndefined(this.toolbarModule.element)) {\n toolbarHeight = this.toolbarModule.element.offsetHeight;\n }\n if (this.timelineModule.isSingleTier) {\n addClass(this.treeGrid.element.querySelectorAll('.e-headercell'), cls.timelineSingleHeaderOuterDiv);\n addClass(this.treeGrid.element.querySelectorAll('.e-columnheader'), cls.timelineSingleHeaderOuterDiv);\n }\n else {\n removeClass(this.treeGrid.element.querySelectorAll('.e-headercell'), cls.timelineSingleHeaderOuterDiv);\n removeClass(this.treeGrid.element.querySelectorAll('.e-columnheader'), cls.timelineSingleHeaderOuterDiv);\n }\n this.treeGrid.height = '100%';\n this.notify('tree-grid-created', {});\n this.createGanttPopUpElement();\n if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === \"Shimmer\") {\n this.hideMaskRow();\n }\n else {\n this.hideSpinner();\n }\n setValue('isGanttCreated', true, args);\n this.renderComplete();\n }\n }\n else {\n this.getCurrentRecords(args);\n }\n if (!this.loadChildOnDemand && this.taskFields.hasChildMapping) {\n this.updateContentHeight();\n }\n if (this.enableCriticalPath && this.criticalPathModule) {\n this.criticalPathModule.showCriticalPath(this.enableCriticalPath);\n }\n this.notify('recordsUpdated', {});\n for (var i = 0; i < document.getElementsByClassName('e-timeline-header-table-container').length; i++) {\n for (var j = 0; j < document.getElementsByClassName('e-timeline-header-table-container')[i].children[0].children[0].children.length; j++) {\n document.getElementsByClassName('e-timeline-header-table-container')[i].children[0].children[0].children[j].children[0].setAttribute('tabindex', '-1');\n }\n }\n var criticalModule = this.criticalPathModule;\n if (this.enableCriticalPath && criticalModule && criticalModule.criticalPathCollection) {\n this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n this.initialChartRowElements = this.ganttChartModule.getChartRows();\n this.isLoad = false;\n if (!this.loadChildOnDemand && this.taskFields.hasChildMapping) {\n this.autoCalculateDateScheduling = true;\n }\n this.previousFlatData = extend([], this.flatData, [], true);\n this.trigger('dataBound', args);\n };\n /**\n * @param {object} args .\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Gantt.prototype.getCurrentRecords = function (args) {\n if (this.predecessorModule && this.taskFields.dependency) {\n this.connectorLineModule.removePreviousConnectorLines(this.currentViewData);\n }\n this.updateCurrentViewData();\n if (!this.enableVirtualization) {\n this.updateContentHeight();\n }\n // this.chartRowsModule.refreshGanttRows();\n if (this.virtualScrollModule && this.enableVirtualization) {\n this.ganttChartModule.virtualRender.adjustTable();\n this.ganttChartModule.scrollObject.updateTopPosition();\n }\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @param {GanttModel} newProp - Defines the New GanttModel.\n * @param {GanttModel} oldProp - Defines the old GanttModel.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Gantt.prototype.onPropertyChanged = function (newProp, oldProp) {\n var isRefresh = false;\n // eslint-disable-next-line\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowSelection':\n case 'allowRowDragAndDrop':\n case 'allowFiltering':\n case 'showColumnMenu':\n case 'allowResizing':\n case 'allowReordering':\n case 'enableImmutableMode':\n this.treeGrid[prop] = this[prop];\n this.treeGrid.dataBind();\n break;\n case 'workWeek':\n this.dataOperation.getNonWorkingDayIndex();\n this.dataOperation.reUpdateGanttData();\n this.chartRowsModule.initiateTemplates();\n if (this.taskFields.dependency) {\n this.predecessorModule.updatedRecordsDateByPredecessor();\n }\n this.chartRowsModule.refreshGanttRows();\n this.treeGrid.refreshColumns();\n this.timelineModule.refreshTimeline();\n break;\n case 'toolbar':\n this.notify('ui-toolbarupdate', { module: 'toolbar', properties: newProp });\n break;\n case 'columnMenuItems':\n this.treeGrid.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n break;\n case 'eventMarkers':\n case 'highlightWeekends':\n this.notify('ui-update', { module: 'day-markers', properties: newProp });\n break;\n case 'sortSettings':\n this.treeGrid.sortSettings = getActualProperties(this.sortSettings);\n this.treeGrid.dataBind();\n break;\n case 'timelineSettings':\n this.timelineModule.refreshTimeline();\n break;\n case 'rowHeight':\n case 'taskbarHeight':\n this.treeGrid.rowHeight = this.rowHeight;\n this.treeGrid.dataBind();\n this.chartRowsModule.initiateTemplates();\n this.timelineModule.updateChartByNewTimeline();\n if (this.taskFields.dependency) {\n this.ganttChartModule.reRenderConnectorLines();\n }\n break;\n case 'timezone':\n this.dataOperation.checkDataBinding(true);\n break;\n case 'enableCriticalPath':\n if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === \"Shimmer\") {\n this.hideMaskRow();\n }\n else {\n this.hideSpinner();\n }\n if (this.enableCriticalPath && this.criticalPathModule) {\n this.criticalPathModule.showCriticalPath(this.enableCriticalPath);\n var criticalModule = this.criticalPathModule;\n if (criticalModule.criticalPathCollection) {\n this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n }\n else {\n this.removeCriticalPathStyles();\n }\n break;\n case 'filterSettings':\n this.treeGrid.filterSettings = getActualProperties(this.filterSettings);\n this.treeGrid.dataBind();\n break;\n case 'gridLines':\n this.treeGrid.gridLines = this.gridLines;\n this.treeGrid.dataBind();\n this.renderChartGridLines();\n break;\n case 'tooltipSettings':\n if (this.tooltipModule.toolTipObj) {\n this.tooltipModule.toolTipObj.destroy();\n }\n this.tooltipModule.createTooltip();\n break;\n case 'splitterSettings':\n this.splitterModule.updateSplitterPosition();\n break;\n case 'selectionSettings':\n this.treeGrid.selectionSettings = getActualProperties(this.selectionSettings);\n this.treeGrid.grid.selectionSettings.enableToggle = this.selectionSettings.enableToggle;\n this.treeGrid.dataBind();\n break;\n case 'searchSettings':\n if (newProp.searchSettings.key !== (\"\" || undefined)) {\n this.treeGrid.grid.searchSettings = getActualProperties(this.searchSettings);\n this.treeGrid.grid.dataBind();\n }\n this.treeGrid.searchSettings = getActualProperties(this.searchSettings);\n this.treeGrid.dataBind();\n if (this.toolbarModule) {\n this.toolbarModule.updateSearchTextBox();\n }\n break;\n case 'labelSettings':\n case 'renderBaseline':\n case 'baselineColor':\n this.isFromRenderBaseline = true;\n this.chartRowsModule.initiateTemplates();\n this.chartRowsModule.refreshGanttRows();\n this.isFromRenderBaseline = false;\n break;\n case 'resourceIDMapping':\n case 'resourceNameMapping':\n case 'resources':\n this.dataOperation.reUpdateResources();\n this.treeGrid.refreshColumns();\n this.chartRowsModule.initiateTemplates();\n this.chartRowsModule.refreshGanttRows();\n break;\n case 'includeWeekend':\n case 'allowUnscheduledTasks':\n case 'holidays':\n this.isLoad = true;\n if (prop === 'holidays') {\n this.totalHolidayDates = this.dataOperation.getHolidayDates();\n this.notify('ui-update', { module: 'day-markers', properties: newProp });\n }\n this.dataOperation.reUpdateGanttData();\n this.treeGrid.refreshColumns();\n this.chartRowsModule.initiateTemplates();\n this.chartRowsModule.refreshGanttRows();\n this.isLoad = false;\n if (this.taskFields.dependency) {\n this.predecessorModule.updatedRecordsDateByPredecessor();\n this.treeGrid.refreshColumns();\n this.chartRowsModule.refreshGanttRows();\n }\n break;\n case 'dayWorkingTime':\n this.isLoad = true;\n this.dataOperation.reUpdateGanttData();\n this.treeGrid.refreshColumns();\n this.chartRowsModule.initiateTemplates();\n this.chartRowsModule.refreshGanttRows();\n this.isLoad = false;\n break;\n case 'addDialogFields':\n case 'editDialogFields':\n if (this.editModule && this.editModule.dialogModule) {\n this.editModule.dialogModule.processDialogFields();\n }\n break;\n case 'columns':\n this.treeGridModule.treeGridColumns = [];\n this.treeGridModule.validateGanttColumns();\n this.treeGrid.columns = this.treeGridModule.treeGridColumns;\n this.treeGrid.refreshColumns();\n this.chartRowsModule.initiateTemplates();\n this.timelineModule.updateChartByNewTimeline();\n break;\n case 'width':\n case 'height':\n this.reUpdateDimention();\n break;\n case 'editSettings':\n this.treeGrid.editSettings.allowAdding = this.editSettings.allowAdding;\n this.treeGrid.editSettings.allowDeleting = this.editSettings.allowDeleting;\n this.treeGrid.editSettings.showDeleteConfirmDialog = this.editSettings.showDeleteConfirmDialog;\n this.treeGrid.editSettings.allowEditing = this.editSettings.allowEditing;\n this.treeGrid.editSettings.allowNextRowEdit = this.editSettings.allowNextRowEdit;\n if (!isNullOrUndefined(this.editModule)) {\n this.editModule.reUpdateEditModules();\n }\n if (!isNullOrUndefined(this.toolbarModule)) {\n this.toolbarModule.refreshToolbarItems();\n }\n break;\n case 'connectorLineBackground':\n case 'connectorLineWidth':\n if (this.taskFields.dependency) {\n this.connectorLineModule.initPublicProp();\n this.ganttChartModule.reRenderConnectorLines();\n }\n break;\n case 'treeColumnIndex':\n this.treeGrid.treeColumnIndex = this.treeColumnIndex;\n break;\n case 'projectStartDate':\n case 'projectEndDate':\n this.timelineModule.isZoomToFit = false;\n this.dataOperation.calculateProjectDates();\n this.updateProjectDates(this.cloneProjectStartDate, this.cloneProjectEndDate, this.isTimelineRoundOff);\n break;\n case 'selectedRowIndex':\n if (!isNullOrUndefined(this.selectionModule)) {\n this.selectionModule.selectRowByIndex();\n }\n break;\n case 'dataSource':\n this.closeGanttActions();\n if (this.dataSource instanceof Object && isCountRequired(this)) {\n // In order to bind the observable data at load time, hasChildMapping is necessary to be mapped.\n this.treeGrid.hasChildMapping = 'isParent';\n var count = getValue('count', this.dataSource);\n this.treeGrid.dataSource = { result: this.flatData, count: count };\n }\n else {\n this.treeGrid.hasChildMapping = null;\n }\n this.dataOperation.checkDataBinding(true);\n break;\n case 'enableContextMenu':\n case 'contextMenuItems':\n if (this.enableContextMenu || prop === 'contextMenuItems') {\n this.notify('reRender-contextMenu', { module: 'contextMenu', enable: this.contextMenuItems });\n }\n else {\n this.treeGrid.contextMenuItems = [];\n }\n this.treeGrid.dataBind();\n break;\n case 'currencyCode':\n case 'locale':\n case 'enableRtl':\n case 'readOnly':\n case 'viewType':\n case 'taskFields':\n case 'allowTaskbarDragAndDrop':\n case 'allowTaskbarOverlap':\n case 'allowParentDependency':\n case 'enableMultiTaskbar':\n if (prop === 'locale') {\n this.isLocaleChanged = true;\n }\n if (prop === 'taskFields') {\n if (!isNullOrUndefined(newProp.taskFields.child)) {\n return;\n }\n }\n if (prop !== 'allowTaskbarDragAndDrop') {\n isRefresh = true;\n }\n break;\n case 'validateManualTasksOnLinking':\n this.validateManualTasksOnLinking = newProp.validateManualTasksOnLinking;\n break;\n case 'showOverAllocation':\n this.updateOverAllocationCotainer();\n break;\n }\n }\n if (isRefresh) {\n if (this.isLoad && this.contentMaskTable) {\n this.contentMaskTable = null;\n }\n this.refresh();\n }\n };\n Gantt.prototype.updateOverAllocationCotainer = function () {\n if (this.showOverAllocation) {\n this.ganttChartModule.renderOverAllocationContainer();\n }\n else {\n var rangeContainer = this.element.querySelector('.' + cls.rangeContainer);\n if (rangeContainer) {\n rangeContainer.innerHTML = '';\n }\n }\n };\n /**\n * Returns the properties to be maintained in persisted state.\n *\n * @returns {string} .\n * @private\n */\n Gantt.prototype.getPersistData = function () {\n var keyEntity = ['sortSettings',\n 'filterSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'treeColumnIndex', 'currentZoomingLevel', 'cloneProjectStartDate', 'cloneProjectEndDate'];\n var ignoreOnPersist = {\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent', 'hierarchyMode'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var k = 0, val = ignoreOnPersist[keyEntity[i]]; (!isNullOrUndefined(val) && k < val.length); k++) {\n var objVal = val[k];\n delete currentObject[objVal];\n }\n }\n this.ignoreInArrays(ignoreOnColumn, this.columns);\n return this.addOnPersist(keyEntity);\n };\n Gantt.prototype.ignoreInArrays = function (ignoreOnColumn, columns) {\n for (var i = 0; i < columns.length; i++) {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n }\n };\n Gantt.prototype.ignoreInColumn = function (ignoreOnColumn, column) {\n for (var i = 0; i < ignoreOnColumn.length; i++) {\n delete column[ignoreOnColumn[i]];\n column.filter = {};\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n Gantt.prototype.destroy = function () {\n this.notify('destroy', {});\n this.unwireEvents();\n if (!isNullOrUndefined(this.validationDialogElement) && !this.validationDialogElement.isDestroyed) {\n this.validationDialogElement.destroy();\n }\n var modules = ['ganttChartModule', 'timelineModule', 'chartRowsModule',\n 'treeGridModule', 'ganttDataUpdatesModule', 'dateValidationModule', 'tooltipModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n if (this.editModule && this.editModule.dialogModule) {\n this.editModule.dialogModule.destroy();\n }\n if (this.splitterModule) {\n this.splitterModule['destroy'];\n }\n if (!isNullOrUndefined(this.dayMarkersModule) && !isNullOrUndefined(this.dayMarkersModule[\"eventMarkerRender\"]) && !isNullOrUndefined(this.dayMarkersModule[\"eventMarkerRender\"].eventMarkersContainer)) {\n this.dayMarkersModule[\"eventMarkerRender\"].eventMarkersContainer = null;\n }\n if (this.connectorLineModule) {\n this.connectorLineModule.dependencyViewContainer = null;\n this.connectorLineModule.svgObject = null;\n this.connectorLineModule.renderer = null;\n this.connectorLineModule.tooltipTable = null;\n }\n this.treeGridPane = null;\n this.initialChartRowElements = null;\n _super.prototype.destroy.call(this);\n this.chartVerticalLineContainer = null;\n this.element.innerHTML = '';\n removeClass([this.element], cls.root);\n this.element.innerHTML = '';\n this.isTreeGridRendered = false;\n this.resetTemplates();\n };\n /**\n * Method to get taskbarHeight.\n *\n * @returns {number} .\n * @public\n */\n Gantt.prototype.getTaskbarHeight = function () {\n return this.chartRowsModule.taskBarHeight;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} .\n * @hidden\n */\n Gantt.prototype.requiredModules = function () {\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this]\n });\n }\n if (this.allowFiltering || (this.toolbar && this.toolbar.indexOf('Search') !== -1)) {\n modules.push({\n member: 'filter',\n args: [this]\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'excelExport',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop || this.allowTaskbarDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.enableCriticalPath) {\n modules.push({\n member: 'criticalPath',\n args: [this]\n });\n }\n if (this.enableUndoRedo) {\n modules.push({\n member: 'undoRedo',\n args: [this]\n });\n }\n if (this.allowResizing) {\n modules.push({\n member: 'resize',\n args: [this]\n });\n }\n if (this.toolbar && this.toolbar.length > 0) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowEditing || this.editSettings.allowDeleting\n || this.editSettings.allowTaskbarEditing || this.allowRowDragAndDrop) {\n modules.push({\n member: 'edit',\n args: [this]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this]\n });\n }\n if (this.tooltipSettings.showTooltip) {\n modules.push({\n member: 'tooltip',\n args: [this]\n });\n }\n if (this.highlightWeekends || (this.holidays && this.holidays.length > 0)\n || (this.eventMarkers && this.eventMarkers.length > 0)) {\n modules.push({\n member: 'dayMarkers',\n args: [this]\n });\n }\n if (this.enableContextMenu) {\n modules.push({\n member: 'contextMenu',\n args: [this]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'pdfExport',\n args: [this]\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualScroll',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void} .\n */\n Gantt.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule && this.allowSorting) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n Gantt.prototype.mergePersistGanttData = function () {\n if (!this.treeGrid) {\n this.treeGrid = new TreeGrid();\n }\n var persist1 = 'mergePersistGridData';\n this.treeGrid.grid[persist1].apply(this);\n };\n Gantt.prototype.mergeColumns = function (storedColumn, columns) {\n var persist2 = 'mergeColumns';\n this.treeGrid.grid[persist2].apply(this, [storedColumn, columns]);\n };\n /**\n * Clears all the sorted columns of the Gantt.\n *\n * @returns {void} .\n */\n Gantt.prototype.clearSorting = function () {\n this.sortModule.clearSorting();\n };\n /**\n * To validate and render chart horizontal and vertical lines in the Gantt\n *\n * @returns {void} .\n * @hidden\n */\n Gantt.prototype.renderChartGridLines = function () {\n var className = 'e-chart-row-border';\n var verticalLines = this.chartVerticalLineContainer;\n var chartRowsTD = document.getElementById(this.element.id + 'GanttTaskTableBody').querySelectorAll('td');\n if (this.gridLines === 'Vertical') {\n if (isNullOrUndefined(verticalLines)) {\n this.renderChartVerticalLines();\n }\n else {\n if (verticalLines.style.display === 'none') {\n verticalLines.style.display = 'block';\n }\n }\n if (chartRowsTD[0].classList.contains(className)) {\n for (var c = 0; c < chartRowsTD.length; c++) {\n removeClass([chartRowsTD[c]], className);\n }\n }\n }\n else if (this.gridLines === 'Horizontal') {\n if (!isNullOrUndefined(verticalLines)) {\n verticalLines.style.display = 'none';\n }\n if (!chartRowsTD[0].classList.contains(className)) {\n for (var c = 0; c < chartRowsTD.length; c++) {\n addClass([chartRowsTD[c]], className);\n }\n }\n }\n else if (this.gridLines === 'Both') {\n if (isNullOrUndefined(verticalLines)) {\n this.renderChartVerticalLines();\n }\n else {\n if (verticalLines.style.display === 'none') {\n verticalLines.style.display = 'block';\n }\n }\n if (!chartRowsTD[0].classList.contains(className)) {\n for (var c = 0; c < chartRowsTD.length; c++) {\n addClass([chartRowsTD[c]], className);\n }\n }\n }\n else if (this.gridLines === 'None') {\n if (!isNullOrUndefined(verticalLines) && verticalLines.style.display !== 'none') {\n verticalLines.style.display = 'none';\n }\n if (chartRowsTD[0].classList.contains(className)) {\n for (var c = 0; c < chartRowsTD.length; c++) {\n removeClass([chartRowsTD[c]], className);\n }\n }\n }\n };\n /**\n * To update height of the Grid lines in the Gantt chart side.\n *\n * @returns {void} .\n * @private\n */\n Gantt.prototype.updateGridLineContainerHeight = function () {\n if (this.chartVerticalLineContainer) {\n this.chartVerticalLineContainer.style.height = formatUnit(this.getContentHeight());\n }\n };\n /**\n * To get actual height of grid lines, holidays, weekend and event markers.\n *\n * @returns {number} .\n * @private\n */\n Gantt.prototype.getContentHeight = function () {\n var scrollHeight = this.ganttChartModule.scrollElement.offsetHeight - 16; //16 is horizontal scrollbar height\n var contentHeight = this.ganttChartModule.chartBodyContent.offsetHeight;\n var height = contentHeight < scrollHeight ? contentHeight : scrollHeight;\n return height;\n };\n /**\n * To update height of the Grid lines in the Gantt chart side.\n *\n * @returns {void} .\n * @private\n */\n Gantt.prototype.reUpdateDimention = function () {\n var toolbarHeight = 0;\n this.calculateDimensions();\n if (!isNullOrUndefined(this.toolbarModule) && !isNullOrUndefined(this.toolbarModule.element)) {\n this.toolbarModule.toolbar.refresh();\n this.toolbarModule.refreshToolbarItems();\n toolbarHeight = this.toolbarModule.element.offsetHeight;\n }\n this.treeGrid.height = this.ganttHeight - toolbarHeight -\n this.treeGrid.grid.getHeaderContent().offsetHeight;\n this.splitterModule.splitterObject.height = (this.ganttHeight - toolbarHeight).toString();\n if (!isNullOrUndefined(this.chartVerticalLineContainer)) {\n this.chartVerticalLineContainer.style.height = this.ganttHeight + 'px';\n }\n if (!isNullOrUndefined(this.dayMarkersModule)) {\n var holidayContainer = getValue('nonworkingDayRender.holidayContainer', this.dayMarkersModule);\n var weekendContainer = getValue('nonworkingDayRender.weekendContainer', this.dayMarkersModule);\n var eventMarkersContainer = getValue('eventMarkerRender.eventMarkersContainer', this.dayMarkersModule);\n if (holidayContainer) {\n holidayContainer.style.height = this.ganttHeight + 'px';\n }\n if (weekendContainer) {\n weekendContainer.style.height = this.ganttHeight + 'px';\n }\n if (eventMarkersContainer) {\n eventMarkersContainer.style.height = this.ganttHeight + 'px';\n }\n }\n this.splitterModule.splitterObject.width = this.ganttWidth.toString();\n this.ganttChartModule.scrollObject.\n setHeight(this.ganttHeight - this.ganttChartModule.chartTimelineContainer.offsetHeight - toolbarHeight);\n };\n /**\n * To render vertical lines in the Gantt chart side.\n *\n * @returns {void} .\n */\n Gantt.prototype.renderChartVerticalLines = function () {\n if (!this.element.contains(this.chartVerticalLineContainer)) {\n this.chartVerticalLineContainer = createElement('div', {\n id: this.element.id + 'line-container',\n styles: 'position:absolute;height:100%;'\n });\n this.ganttChartModule.chartBodyContent.insertBefore(this.chartVerticalLineContainer, this.ganttChartModule.chartBodyContent.lastChild);\n }\n this.chartVerticalLineContainer.innerHTML = '';\n var headerTable = this.element.getElementsByClassName('e-timeline-header-table-container')[1];\n if (isNullOrUndefined(headerTable)) {\n headerTable = this.element.getElementsByClassName('e-timeline-header-table-container')[0];\n }\n var thElements = headerTable.getElementsByTagName('th');\n var thLength = thElements.length;\n var thWidth;\n var leftPos = 0;\n var containerDiv = createElement('div');\n for (var n = 0; n < thLength; n++) {\n leftPos = n === 0 ? -1 : (leftPos + parseFloat(thWidth));\n thWidth = thElements[n].style.width;\n var divElement = createElement('div', {\n className: 'e-line-container-cell',\n styles: (this.enableRtl ? 'right:' + (leftPos + 1) : 'left:' + leftPos) + 'px'\n });\n containerDiv.appendChild(divElement);\n }\n this.chartVerticalLineContainer.innerHTML = containerDiv.innerHTML;\n };\n /**\n * Method to get default localized text of the Gantt.\n *\n * @returns {void} .\n * @hidden\n */\n Gantt.prototype.getDefaultLocale = function () {\n var ganttLocale = {\n emptyRecord: 'No records to display',\n id: 'ID',\n name: 'Name',\n startDate: 'Start Date',\n endDate: 'End Date',\n duration: 'Duration',\n progress: 'Progress',\n dependency: 'Dependency',\n notes: 'Notes',\n criticalPath: 'Critical Path',\n undo: 'Undo',\n redo: 'Redo',\n baselineStartDate: 'Baseline Start Date',\n baselineEndDate: 'Baseline End Date',\n taskMode: 'Task Mode',\n changeScheduleMode: 'Change Schedule Mode',\n subTasksStartDate: 'SubTasks Start Date',\n subTasksEndDate: 'SubTasks End Date',\n scheduleStartDate: 'Schedule Start Date',\n scheduleEndDate: 'Schedule End Date',\n auto: 'Auto',\n manual: 'Manual',\n type: 'Type',\n offset: 'Offset',\n resourceName: 'Resources',\n resourceID: 'Resource ID',\n day: 'day',\n hour: 'hour',\n minute: 'minute',\n days: 'days',\n hours: 'hours',\n minutes: 'minutes',\n generalTab: 'General',\n customTab: 'Custom Columns',\n writeNotes: 'Write Notes',\n addDialogTitle: 'New Task',\n editDialogTitle: 'Task Information',\n add: 'Add',\n edit: 'Edit',\n update: 'Update',\n delete: 'Delete',\n cancel: 'Cancel',\n search: 'Search',\n task: ' task',\n tasks: ' tasks',\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n zoomToFit: 'Zoom to fit',\n excelExport: 'Excel export',\n csvExport: 'CSV export',\n pdfExport: 'PDF export',\n expandAll: 'Expand all',\n collapseAll: 'Collapse all',\n nextTimeSpan: 'Next timespan',\n prevTimeSpan: 'Previous timespan',\n saveButton: 'Save',\n taskBeforePredecessorFS: 'You moved \"{0}\" to start before \"{1}\" finishes and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskAfterPredecessorFS: 'You moved \"{0}\" away from \"{1}\" and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskBeforePredecessorSS: 'You moved \"{0}\" to start before \"{1}\" starts and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskAfterPredecessorSS: 'You moved \"{0}\" to start after \"{1}\" starts and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskBeforePredecessorFF: 'You moved \"{0}\" to finish before \"{1}\" finishes and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskAfterPredecessorFF: 'You moved \"{0}\" to finish after \"{1}\" finishes and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskBeforePredecessorSF: 'You moved \"{0}\" away from \"{1}\" to starts and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n taskAfterPredecessorSF: 'You moved \"{0}\" to finish after \"{1}\" starts and the two tasks are linked.'\n + 'As the result, the links cannot be honored. Select one action below to perform',\n okText: 'Ok',\n confirmDelete: 'Are you sure you want to Delete Record?',\n from: 'From',\n to: 'To',\n taskLink: 'Task Link',\n lag: 'Lag',\n start: 'Start',\n finish: 'Finish',\n enterValue: 'Enter the value',\n taskInformation: 'Task Information',\n deleteTask: 'Delete Task',\n deleteDependency: 'Delete Dependency',\n convert: 'Convert',\n save: 'Save',\n above: 'Above',\n below: 'Below',\n child: 'Child',\n milestone: 'Milestone',\n toTask: 'To Task',\n toMilestone: 'To Milestone',\n eventMarkers: 'Event markers',\n leftTaskLabel: 'Left task label',\n rightTaskLabel: 'Right task label',\n timelineCell: 'Timeline cell',\n confirmPredecessorDelete: 'Are you sure you want to remove dependency link?',\n unit: 'Unit',\n work: 'Work',\n taskType: 'Task Type',\n unassignedTask: 'Unassigned Task',\n group: 'Group',\n indent: 'Indent',\n outdent: 'Outdent',\n segments: 'Segments',\n splitTask: 'Split Task',\n mergeTask: 'Merge Task',\n left: 'Left',\n right: 'Right'\n };\n return ganttLocale;\n };\n /**\n * To remove sorted records of particular column.\n *\n * @param {string} columnName - Defines the sorted column name.\n * @returns {void} .\n */\n Gantt.prototype.removeSortColumn = function (columnName) {\n this.sortModule.removeSortColumn(columnName);\n };\n /**\n *\n * @param {object} args -Defines the edited event args.\n * @returns {void} .\n * @private\n */\n Gantt.prototype.actionBeginTask = function (args) {\n this.trigger('actionBegin', args);\n if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === \"Shimmer\") {\n this.showMaskRow();\n }\n else {\n this.showSpinner();\n }\n };\n /**\n * To move horizontal scroll bar of Gantt to specific date.\n *\n * @param {string} date - Defines the task date of data.\n * @returns {void} .\n */\n Gantt.prototype.scrollToDate = function (date) {\n var tempDate = this.dateValidationModule.getDateFromFormat(date);\n var left = this.dataOperation.getTaskLeft(tempDate, false);\n this.ganttChartModule.updateScrollLeft(left);\n };\n /**\n * To move horizontal scroll bar of Gantt to specific task id.\n *\n * @param {string} taskId - Defines the task id of data.\n * @returns {void} .\n */\n Gantt.prototype.scrollToTask = function (taskId) {\n if (this.ids.indexOf(taskId) !== -1) {\n var left = this.flatData[this.ids.indexOf(taskId)].ganttProperties.left;\n this.ganttChartModule.updateScrollLeft(left);\n }\n };\n /**\n * To set scroll left and top in chart side.\n *\n * @param {number} left - Defines the scroll left value of chart side.\n * @param {number} top - Defines the scroll top value of chart side.\n * @returns {void} .\n */\n Gantt.prototype.updateChartScrollOffset = function (left, top) {\n if (!isNullOrUndefined(left)) {\n left = this.ganttChartModule.scrollElement.scrollWidth <= left ?\n this.ganttChartModule.scrollElement.scrollWidth : left;\n this.ganttChartModule.scrollObject.setScrollLeft(left, this.enableRtl ? -1 : 0);\n }\n if (!isNullOrUndefined(top)) {\n top = this.ganttChartModule.scrollElement.scrollHeight <= top ? this.ganttChartModule.scrollElement.scrollHeight : top;\n this.ganttChartModule.scrollObject.setScrollTop(top);\n }\n };\n /**\n * Get parent task by clone parent item.\n *\n * @param {IParent} cloneParent - Defines the clone parent item.\n * @returns {IGanttData} .\n * @hidden\n */\n Gantt.prototype.getParentTask = function (cloneParent) {\n if (!isNullOrUndefined(cloneParent)) {\n var parent_1 = this.flatData.filter(function (val) {\n return cloneParent.uniqueID === val.uniqueID;\n });\n if (parent_1.length > 0) {\n return parent_1[0];\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n };\n /**\n * Get parent task by clone parent item.\n *\n * @param {IGanttData} ganttRecord -Defines the Gantt record.\n * @param {number} level -Defines the selected record level.\n * @returns {IGanttData} .\n * @hidden\n */\n Gantt.prototype.getRootParent = function (ganttRecord, level) {\n if (ganttRecord.level === level) {\n return ganttRecord;\n }\n return this.getRootParent(this.getParentTask(ganttRecord.parentItem), level);\n };\n /**\n * Filters TreeGrid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean | number[] | string[] | Date[] | boolean[]} filterValue - Defines the value\n * used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, TreeGrid filters the records with exact match.if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @returns {void} .\n */\n Gantt.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent) {\n this.treeGrid.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent);\n };\n /**\n * Export Gantt data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Gantt.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} .\n */\n Gantt.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n /* eslint-disable-next-line */\n workbook, isBlob) {\n return this.excelExportModule ? this.treeGrid.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob) : null;\n };\n /**\n * Export Gantt data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Gantt.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} .\n */\n Gantt.prototype.csvExport = function (excelExportProperties, \n /* eslint-disable-next-line */\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ? this.treeGrid.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob) : null;\n };\n /**\n * Export Gantt data to PDF document.\n *\n * @param {PdfExportProperties} pdfExportProperties - Defines the export properties of the Gantt.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If the 'isBlob' parameter is set to true, the method returns PDF data as a blob instead of exporting it as a down-loadable PDF file. The default value is false.\n * @returns {Promise} .\n */\n Gantt.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n if (pdfExportProperties && pdfExportProperties.fitToWidthSettings && pdfExportProperties.fitToWidthSettings.isFitToWidth) {\n pdfExportProperties.pageOrientation == 'Landscape';\n }\n return this.pdfExportModule ? this.pdfExportModule.export(pdfExportProperties, isMultipleExport, pdfDoc, isBlob)\n : null;\n };\n /**\n * Clears the filtered columns in Gantt.\n *\n * Can also be used to clear filtering of a specific column in Gantt.\n *\n * @param {string[]} fields - Defines the specific column to remove filter.\n * @returns {void} .\n */\n Gantt.prototype.clearFiltering = function (fields) {\n this.treeGrid.grid.clearFiltering(fields);\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @returns {void} .\n * @hidden\n */\n Gantt.prototype.removeFilteredColsByField = function (field) {\n this.treeGrid.removeFilteredColsByField(field, false);\n };\n /**\n * Method to set holidays and non working days in date time and date picker controls\n *\n * @param {RenderDayCellEventArgs} args .\n * @returns {void} .\n * @private\n */\n Gantt.prototype.renderWorkingDayCell = function (args) {\n var includeWeekend = this.taskMode !== 'Auto' ? true : (this.includeWeekend || !this.autoCalculateDateScheduling) ? true : false;\n var nonWorkingDays = !includeWeekend ? this.nonWorkingDayIndex : [];\n var holidays = this.totalHolidayDates;\n if (nonWorkingDays.length > 0 && nonWorkingDays.indexOf(args.date.getDay()) !== -1) {\n args.isDisabled = true;\n }\n else if (holidays.length > 0) {\n var tempDate = new Date(args.date.getTime());\n tempDate.setHours(0, 0, 0);\n if (holidays.indexOf(tempDate.getTime()) !== -1) {\n if (!this.autoCalculateDateScheduling) {\n args.isDisabled = false;\n }\n else {\n args.isDisabled = true;\n }\n }\n }\n };\n /**\n * To update timeline at start point with one unit.\n *\n * @param {string} mode - Render previous span of Timeline.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.previousTimeSpan = function (mode) {\n if (this.undoRedoModule && this['isUndoRedoItemPresent']('PreviousTimeSpan')) {\n if (this.undoRedoModule['redoEnabled']) {\n this.undoRedoModule['disableRedo']();\n }\n this.undoRedoModule['createUndoCollection']();\n var timeSpan = {};\n timeSpan['action'] = 'PreviousTimeSpan';\n timeSpan['previousTimelineStartDate'] = extend([], [], [this.timelineModule.timelineStartDate], true)[0];\n timeSpan['previousTimelineEndDate'] = extend([], [], [this.timelineModule.timelineEndDate], true)[0];\n this.undoRedoModule['getUndoCollection'][this.undoRedoModule['getUndoCollection'].length - 1] = timeSpan;\n }\n this.timelineModule.performTimeSpanAction('prevTimeSpan', 'publicMethod', new Date(this.timelineModule.timelineStartDate.getTime()), new Date(this.timelineModule.timelineEndDate.getTime()), mode);\n };\n /**\n * To update timeline at end point with one unit.\n *\n * @param {string} mode - Render next span of Timeline.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.nextTimeSpan = function (mode) {\n if (this.undoRedoModule && this['isUndoRedoItemPresent']('NextTimeSpan')) {\n if (this.undoRedoModule['redoEnabled']) {\n this.undoRedoModule['disableRedo']();\n }\n this.undoRedoModule['createUndoCollection']();\n var timeSpan = {};\n timeSpan['action'] = 'NextTimeSpan';\n timeSpan['previousTimelineStartDate'] = extend([], [], [this.timelineModule.timelineStartDate], true)[0];\n timeSpan['previousTimelineEndDate'] = extend([], [], [this.timelineModule.timelineEndDate], true)[0];\n this.undoRedoModule['getUndoCollection'][this.undoRedoModule['getUndoCollection'].length - 1] = timeSpan;\n }\n this.timelineModule.performTimeSpanAction('nextTimeSpan', 'publicMethod', new Date(this.timelineModule.timelineStartDate.getTime()), new Date(this.timelineModule.timelineEndDate.getTime()), mode);\n };\n /**\n * To validate project start date and end date.\n *\n * @param {Date} startDate - Defines start date of project.\n * @param {Date} endDate - Defines end date of project.\n * @param {boolean} isTimelineRoundOff - Defines project start date and end date need to be round off or not.\n * @param {string} isFrom .\n * @returns {void} .\n * @public\n */\n Gantt.prototype.updateProjectDates = function (startDate, endDate, isTimelineRoundOff, isFrom) {\n this.timelineModule.totalTimelineWidth = 0;\n this.cloneProjectStartDate = startDate;\n this.cloneProjectEndDate = endDate;\n this.isTimelineRoundOff = isTimelineRoundOff;\n this.timelineModule.refreshTimelineByTimeSpan();\n this.dataOperation.reUpdateGanttDataPosition();\n if (!this.pdfExportModule || (this.pdfExportModule && !this.pdfExportModule.isPdfExport) || (this.pdfExportModule && this.pdfExportModule.isPdfExport && this.pdfExportModule.helper.exportProps &&\n this.pdfExportModule.helper.exportProps.fitToWidthSettings && !this.pdfExportModule.helper.exportProps.fitToWidthSettings.isFitToWidth)) {\n this.timelineModule.updateChartByNewTimeline();\n this.ganttChartModule.chartBodyContent.style.width = formatUnit(this.timelineModule.totalTimelineWidth);\n this.ganttChartModule.updateLastRowBottomWidth();\n if (this.taskFields.dependency) {\n this.ganttChartModule.reRenderConnectorLines();\n }\n if (isFrom !== 'beforeAdd') {\n this.notify('selectRowByIndex', {});\n }\n }\n };\n /**\n * Split the taskbar into segment by the given date\n *\n * @param {string} taskId - Defines the id of a task to be split.\n * @param {string} splitDate - Defines in which date the taskbar must be split up.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.splitTask = function (taskId, splitDate) {\n this.isEdit = true;\n this.chartRowsModule.splitTask(taskId, splitDate);\n };\n /**\n * merge the split taskbar with the given segment indexes.\n *\n * @param {string} taskId - Defines the id of a task to be split.\n * @param {string} segmentIndexes - Defines the object array of indexes which must be merged.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.mergeTask = function (taskId, segmentIndexes) {\n this.chartRowsModule.mergeTask(taskId, segmentIndexes);\n };\n /**\n * Changes the TreeGrid column positions by field names.\n *\n * @param {string} fromFName - Defines origin field name.\n * @param {string} toFName - Defines destination field name.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.reorderColumns = function (fromFName, toFName) {\n this.treeGrid.reorderColumns(fromFName, toFName);\n };\n /**\n * Method to clear edited collections in gantt set edit flag value\n *\n * @param {boolean} isStart -Defines whether to initiate edit action.\n * @returns {void} .\n * @private\n */\n Gantt.prototype.initiateEditAction = function (isStart) {\n this.isOnEdit = isStart;\n this.previousRecords = {};\n this.editedRecords = [];\n };\n /**\n *\n * @param {string} field Method to update value in Gantt record and make clone record for this\n * @param {IGanttData | ITaskData} record .\n * @param {boolean} isTaskData .\n * @returns {void} .\n * @private\n */\n /* eslint-disable-next-line */\n Gantt.prototype.setRecordValue = function (field, value, record, isTaskData) {\n value = isUndefined(value) ? null : value;\n if (this.isOnEdit || this.isOnDelete) {\n this.makeCloneData(field, record, isTaskData);\n var ganttData = isTaskData ? record : record.ganttProperties;\n var id = ganttData.rowUniqueID;\n var task_1 = this.getRecordByID(id);\n var isValid = false;\n if (isNullOrUndefined(value) || (!isNullOrUndefined(value) && !isNullOrUndefined(record[\"\" + field]) && (value instanceof Date ? value.getTime() !==\n record[\"\" + field].getTime() : record[\"\" + field] !== value))) {\n isValid = true;\n }\n if (task_1 && ((this.editedRecords.indexOf(task_1) === -1 && isValid) || this.editedRecords.length === 0)) {\n if (this.editModule['draggedRecord'] && this.editModule['draggedRecord'].ganttProperties.taskId === ganttData.taskId) {\n this.editedRecords.splice(0, 0, task_1);\n }\n else {\n this.editedRecords.push(task_1);\n }\n if (this.undoRedoModule) {\n if (this.undoRedoModule['changedRecords'].indexOf(task_1) == -1) {\n this.undoRedoModule['changedRecords'].push(extend({}, {}, task_1, true));\n }\n var currentAction = this.undoRedoModule['getUndoCollection'].length > 0 ? this.undoRedoModule['getUndoCollection'][this.undoRedoModule['getUndoCollection'].length - 1]['action'] : null;\n if (this.editModule && this.editSettings.allowEditing && !this.undoRedoModule['isUndoRedoPerformed'] && !this.isOnDelete && !this.isOnAdded && currentAction !== 'outdent' && currentAction !== 'indent' &&\n currentAction !== 'RowDragAndDrop' && currentAction !== 'TaskbarDragAndDrop') {\n var oldRecord = this.previousFlatData.filter(function (data) {\n return data.ganttProperties.taskId === task_1.ganttProperties.taskId;\n })[0];\n if (oldRecord && this.undoRedoModule['getUndoCollection'][this.undoRedoModule['getUndoCollection'].length - 1] && this.undoRedoModule['getUndoCollection'][this.undoRedoModule['getUndoCollection'].length - 1]['modifiedRecords']) {\n this.undoRedoModule['getUndoCollection'][this.undoRedoModule['getUndoCollection'].length - 1]['modifiedRecords'].push(oldRecord);\n }\n }\n }\n if (this.enableImmutableMode) {\n this.modifiedRecords.push(task_1);\n }\n }\n }\n setValue(field, value, record);\n };\n Gantt.prototype.makeCloneData = function (field, record, isTaskData) {\n var cloneData;\n /* eslint-disable-next-line */\n var value = getValue(field, record);\n /* eslint-disable-next-line */\n var prevValue;\n /* eslint-disable-next-line */\n var clonedValue;\n if (isTaskData) {\n field = 'ganttProperties.' + field;\n }\n if (isNullOrUndefined(this.previousRecords[record.uniqueID])) {\n var tempData = {};\n this.previousRecords[record.uniqueID] = tempData;\n }\n /* eslint-disable-next-line */\n cloneData = this.previousRecords[record.uniqueID];\n /* eslint-disable-next-line */\n prevValue = getValue(field, cloneData);\n if (isUndefined(prevValue)) {\n if (value instanceof Date) {\n clonedValue = new Date(value.getTime());\n }\n else if (isObjectArray(value)) {\n clonedValue = extend([], value, [], true);\n }\n else if (isObject(value)) {\n clonedValue = extend({}, {}, value, true);\n }\n else {\n clonedValue = value;\n }\n if (!isUndefined(clonedValue)) {\n setValue(field, clonedValue, cloneData);\n }\n else {\n setValue(field, null, cloneData);\n }\n }\n };\n Gantt.prototype.closeGanttActions = function () {\n if (this.editModule) {\n if (this.editModule.cellEditModule && this.editModule.cellEditModule.isCellEdit) {\n this.treeGrid.closeEdit();\n this.editModule.cellEditModule.isCellEdit = false;\n if (!isNullOrUndefined(this.toolbarModule)) {\n this.toolbarModule.refreshToolbarItems();\n }\n }\n else if (this.editModule.dialogModule && this.editModule.dialogModule.dialogObj &&\n this.editModule.dialogModule.dialogObj.visible) {\n this.editModule.dialogModule.dialogObj.hide();\n this.editModule.dialogModule.dialogClose();\n }\n }\n };\n /**\n * Method to get task by uniqueId value.\n *\n * @param {string} id - Defines the task id.\n * @returns {IGanttData} .\n * @isGenericType true\n */\n Gantt.prototype.getTaskByUniqueID = function (id) {\n var value = this.flatData.filter(function (val) {\n return val.uniqueID === id;\n });\n if (value.length > 0) {\n return value[0];\n }\n else {\n return null;\n }\n };\n /**\n * Method to get record by id value.\n *\n * @param {string} id - Defines the id of record.\n * @returns {IGanttData} .\n * @isGenericType true\n */\n Gantt.prototype.getRecordByID = function (id) {\n if (isNullOrUndefined(id)) {\n return null;\n }\n return this.flatData[this.ids.indexOf(id.toString())];\n };\n /**\n * Method to set splitter position.\n *\n * @param {string|number} value - Define value to splitter settings property.\n * @param {string} type - Defines name of internal splitter settings property.\n * @returns {void} .\n */\n Gantt.prototype.setSplitterPosition = function (value, type) {\n var tempSplitterSettings = {};\n tempSplitterSettings[type] = value;\n var splitterPosition = this.splitterModule.calculateSplitterPosition(tempSplitterSettings);\n switch (type) {\n case 'view':\n this.splitterSettings.view = tempSplitterSettings[type];\n break;\n case 'columnIndex':\n this.splitterSettings.columnIndex = tempSplitterSettings[type];\n break;\n case 'position':\n this.splitterSettings.position = tempSplitterSettings[type];\n break;\n default:\n break;\n }\n var pane1 = this.splitterModule.splitterObject.element.querySelectorAll('.e-pane')[0];\n var pane2 = this.splitterModule.splitterObject.element.querySelectorAll('.e-pane')[1];\n this.splitterModule.splitterPreviousPositionGrid = pane1.scrollWidth + 1 + 'px';\n this.splitterModule.splitterPreviousPositionChart = pane2.scrollWidth + 1 + 'px';\n this.splitterModule.splitterObject.paneSettings[0].size = splitterPosition;\n this.splitterModule.splitterObject.paneSettings[1].size = (parseFloat('99.75%') - parseFloat(splitterPosition)) + '%';\n this.splitterModule.triggerCustomResizedEvent();\n };\n /**\n * Expand the records by index value.\n *\n * @param {number[] | number} index - Defines the index of rows to be expand.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.expandByIndex = function (index) {\n if (typeof index === 'number') {\n var args = this.contructExpandCollapseArgs(null, index);\n this.ganttChartModule.isExpandCollapseFromChart = true;\n this.ganttChartModule.expandGanttRow(args);\n }\n else {\n for (var i = 0; i < index.length; i++) {\n if (typeof index[i] === 'number') {\n var ind = index[i];\n var args = this.contructExpandCollapseArgs(null, ind);\n this.ganttChartModule.isExpandCollapseFromChart = true;\n this.ganttChartModule.expandGanttRow(args);\n }\n }\n }\n };\n /**\n * Expand the record by task id.\n *\n * @param {number} id - Defines the id of task.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.expandByID = function (id) {\n var args = this.contructExpandCollapseArgs(id);\n this.ganttChartModule.isExpandCollapseFromChart = true;\n this.ganttChartModule.expandGanttRow(args);\n };\n /**\n * Collapse the record by index value.\n *\n * @param {number} index - Defines the index of row.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.collapseByIndex = function (index) {\n var args = this.contructExpandCollapseArgs(null, index);\n this.ganttChartModule.isExpandCollapseFromChart = true;\n this.ganttChartModule.collapseGanttRow(args);\n };\n /**\n * Collapse the record by id value.\n *\n * @param {number} id - Defines the id of task.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.collapseByID = function (id) {\n var args = this.contructExpandCollapseArgs(id);\n this.ganttChartModule.isExpandCollapseFromChart = true;\n this.ganttChartModule.collapseGanttRow(args);\n };\n /**\n * Method to add record.\n *\n * @param {Object[] | IGanttData | Object} data - Defines record to add.\n * @param {RowPosition} rowPosition - Defines the position of row.\n * @param {number} rowIndex - Defines the row index.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.addRecord = function (data, rowPosition, rowIndex) {\n if (this.editModule && this.editSettings.allowAdding) {\n if (this.viewType === 'ResourceView') {\n this.editModule.addRowPosition = rowPosition;\n this.editModule.addRowIndex = rowIndex;\n var resources = void 0;\n if (!isNullOrUndefined(data)) {\n if (this.undoRedoModule && this.undoRedoModule['isUndoRedoPerformed']) {\n resources = data.ganttProperties.resourceInfo;\n }\n else {\n resources = data[this.taskFields.resourceInfo];\n }\n }\n var id = void 0;\n var parentTask = void 0;\n if (!isNullOrUndefined(resources) && resources.length) {\n for (var i = 0; i < resources.length; i++) {\n id = (typeof resources[i] === 'object') ? resources[i][this.resourceFields.id] :\n resources[0];\n parentTask = this.flatData[this.getTaskIds().indexOf('R' + id)];\n if (parentTask) {\n break;\n }\n }\n if (parentTask && parentTask.childRecords.length || parentTask.level === 0) {\n var dropChildRecord = parentTask.childRecords[rowIndex];\n if (this.viewType === 'ResourceView' && this.undoRedoModule && this.undoRedoModule['isUndoRedoPerformed']) {\n this.editModule.addRecord(data, rowPosition, rowIndex);\n }\n else if (dropChildRecord) {\n var position = rowPosition === 'Above' || rowPosition === 'Below' ? rowPosition :\n 'Child';\n if (position === 'Child') {\n this.editModule.addRecord(data, position, this.getTaskIds().indexOf('R' + id));\n }\n else {\n this.editModule.addRecord(data, position, this.flatData.indexOf(dropChildRecord));\n }\n }\n else {\n this.editModule.addRecord(data, 'Child', this.getTaskIds().indexOf('R' + id));\n }\n }\n else {\n this.editModule.addRecord(data, 'Bottom');\n }\n }\n else {\n if (this.undoRedoModule && this.undoRedoModule['isUndoRedoPerformed']) {\n this.editModule.addRecord(data, rowPosition, rowIndex);\n }\n else {\n this.editModule.addRecord(data, 'Bottom');\n }\n }\n this.editModule.addRowPosition = null;\n this.editModule.addRowIndex = null;\n }\n else {\n this.editModule.addRecord(data, rowPosition, rowIndex);\n if (rowPosition === 'Bottom') {\n this.selectedRowIndex = rowIndex;\n }\n if (rowPosition === 'Above' || rowPosition === 'Below' || rowPosition === 'Child') {\n this.currentSelection = !isNullOrUndefined(data) ? data : this.currentSelection;\n }\n }\n }\n };\n /**\n * Method to update record by ID.\n *\n * @param {Object} data - Defines the data to modify.\n * @returns {void} .\n * @public\n * > In order to update the custom columns using `updateRecordByID`, it is necessary to define the respective fieldName in the column settings.\n */\n Gantt.prototype.updateRecordByID = function (data) {\n if (this.editModule && this.editSettings.allowEditing) {\n this.editModule.updateRecordByID(data);\n }\n };\n /**\n * To update existing taskId with new unique Id.\n *\n * @param {number | string} currentId - Defines the current Id of the record.\n * @param {number | string} newId - Defines the new Id of the record.\n * @returns {void} .\n */\n Gantt.prototype.updateTaskId = function (currentId, newId) {\n if (this.editModule && this.editSettings.allowEditing) {\n this.editModule.updateTaskId(currentId, newId);\n }\n };\n /**\n * Public method to expand particular level of rows.\n *\n * @returns {void} .\n * @param {number} level .\n * @private\n */\n Gantt.prototype.expandAtLevel = function (level) {\n if (this.enableVirtualization) {\n this.isExpandCollapseLevelMethod = true;\n }\n this.ganttChartModule.expandAtLevel(level);\n };\n /**\n * To indent the level of selected task to the hierarchical Gantt task.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.indent = function () {\n if (this.editModule && this.editSettings.allowEditing) {\n this.editModule.indent();\n }\n };\n /**\n * To outdent the level of selected task from the hierarchical Gantt task.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.outdent = function () {\n if (this.editModule && this.editSettings.allowEditing) {\n this.editModule.outdent();\n }\n };\n /**\n * To retrieve the collection of previously recorded actions. This method returns an object as a collection that holds the following details.\n * `modifiedRecords` - retrieves the modified records.\n * `action` - shows the current performed action such as 'sorting','columnReorder','columnResize','progressResizing','rightResizing','leftResizing','add','delete','search','filtering','zoomIn','zoomOut','zoomToFit','columnState','previousTimeSpan','nextTimeSpan','indent','outdent','rowDragAndDrop','taskbarDragAndDrop','dialogEdit'\n * @returns {Object[]}\n * @public\n */\n Gantt.prototype.getUndoActions = function () {\n if (this.undoRedoModule) {\n return this.undoRedoModule['getUndoCollection'];\n }\n else {\n return [];\n }\n };\n /**\n * To retrieve the collection of actions to reapply.\n * `modifiedRecords` - retrieves the modified records.\n * `action` - shows the current performed action such as 'sorting','columnReorder','columnResize','progressResizing','rightResizing','leftResizing','add','delete','search','filtering','zoomIn','zoomOut','zoomToFit','columnState','previousTimeSpan','nextTimeSpan','indent','outdent','rowDragAndDrop','taskbarDragAndDrop','dialogEdit'\n * @returns {Object[]}\n * @public\n */\n Gantt.prototype.getRedoActions = function () {\n if (this.undoRedoModule) {\n return this.undoRedoModule['getRedoCollection'];\n }\n else {\n return [];\n }\n };\n /**\n * Clears the stack collection for undo action.\n * @public\n */\n Gantt.prototype.clearUndoCollection = function () {\n if (this.undoRedoModule) {\n this.undoRedoModule['getUndoCollection'] = [];\n if (this.toolbarModule) {\n this.toolbarModule.enableItems([this.controlId + '_undo'], false);\n }\n }\n };\n /**\n * Clears the stack collection for redo action.\n * @public\n */\n Gantt.prototype.clearRedoCollection = function () {\n if (this.undoRedoModule) {\n this.undoRedoModule['getRedoCollection'] = [];\n if (this.toolbarModule) {\n this.toolbarModule.enableItems([this.controlId + '_redo'], false);\n }\n }\n };\n /**\n * Initiates an undo action to revert the most recent change performed.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.undo = function () {\n if (this.undoRedoModule) {\n this.undoRedoModule['undoAction']();\n }\n };\n /**\n * Initiates a redo action to reapply the most recent undone change performed.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.redo = function () {\n if (this.undoRedoModule) {\n this.undoRedoModule['redoAction']();\n }\n };\n /**\n * To render the critical path tasks in Gantt.\n *\n * @returns {void} .\n * @param {boolean} isCritical- whether to render critical path or not .\n * @public\n */\n Gantt.prototype.showCriticalPath = function (isCritical) {\n if (this.criticalPathModule) {\n this.criticalPathModule.showCriticalPath(isCritical);\n var criticalModule = this.criticalPathModule;\n this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n };\n /**\n * To get all the critical tasks in Gantt.\n *\n * @returns {IGanttData[]} .\n * @public\n */\n Gantt.prototype.getCriticalTasks = function () {\n if (!isNullOrUndefined(this.criticalPathModule) && this.enableCriticalPath) {\n return this.criticalPathModule.getCriticalTasks();\n }\n else {\n return null;\n }\n };\n /**\n * To perform Zoom in action on Gantt timeline.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.zoomIn = function () {\n this.timelineModule.processZooming(true);\n };\n /**\n * To perform zoom out action on Gantt timeline.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.zoomOut = function () {\n this.timelineModule.processZooming(false);\n };\n /**\n * To show all project task in available chart width\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.fitToProject = function () {\n this.timelineModule.processZoomToFit();\n this.ganttChartModule.updateScrollLeft(0);\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @param {number[]} fromIndexes - Defines the Dragged record index.\n * @param {number} toIndex - Defines the Dropped record index.\n * @param {string} position -Defines the position of the dropped row.\n * @returns {void} .\n */\n Gantt.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex, position);\n };\n /**\n * Method to update record by Index.\n *\n * @param {number} index - Defines the index of data to modify.\n * @param {object} data - Defines the data to modify.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.updateRecordByIndex = function (index, data) {\n if (this.editModule && this.editSettings.allowEditing) {\n var tasks = this.taskFields;\n var record = this.updatedRecords.length > 0 ?\n !isNullOrUndefined(this.updatedRecords[index]) ? this.updatedRecords[index] : null : null;\n if (!isNullOrUndefined(record)) {\n data[tasks.id] = record[tasks.id];\n this.editModule.updateRecordByID(data);\n }\n }\n };\n /**\n * To add dependency for Task.\n *\n * @param {number} id - Defines the ID of data to modify.\n * @param {string} predecessorString - Defines the predecessor string to add.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.addPredecessor = function (id, predecessorString) {\n var ganttRecord = this.getRecordByID(id.toString());\n if (this.editModule && !isNullOrUndefined(ganttRecord) && this.editSettings.allowTaskbarEditing) {\n this.connectorLineEditModule.addPredecessor(ganttRecord, predecessorString);\n }\n };\n /**\n * To remove dependency from task.\n *\n * @param {number} id - Defines the ID of task to modify.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.removePredecessor = function (id) {\n var ganttRecord = this.getRecordByID(id.toString());\n if (this.editModule && !isNullOrUndefined(ganttRecord) && this.editSettings.allowTaskbarEditing) {\n this.connectorLineEditModule.removePredecessor(ganttRecord);\n }\n };\n /**\n * To modify current dependency values of Task by task id.\n *\n * @param {number} id - Defines the ID of data to modify.\n * @param {string} predecessorString - Defines the predecessor string to update.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.updatePredecessor = function (id, predecessorString) {\n var ganttRecord = this.getRecordByID(id.toString());\n if (this.editModule && !isNullOrUndefined(ganttRecord) && this.editSettings.allowTaskbarEditing) {\n this.connectorLineEditModule.updatePredecessor(ganttRecord, predecessorString);\n }\n };\n /**\n * Method to open Add dialog.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.openAddDialog = function () {\n if (this.editModule && this.editModule.dialogModule && this.editSettings.allowAdding) {\n this.editModule.dialogModule.openAddDialog();\n }\n };\n /**\n * Method to open Edit dialog.\n *\n * @param {number } taskId - Defines the id of task.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.openEditDialog = function (taskId) {\n if (this.editModule && this.editModule.dialogModule && this.editSettings.allowEditing) {\n this.editModule.dialogModule.openEditDialog(taskId);\n }\n };\n /**\n * Changes the TreeGrid column positions by field names.\n *\n * @param {string | number} id .\n * @param {number} index .\n * @returns {void} .\n * @private\n */\n Gantt.prototype.contructExpandCollapseArgs = function (id, index) {\n var chartRow;\n var record;\n var rowIndex;\n if (isNullOrUndefined(index)) {\n record = this.getRecordByID(id.toString());\n chartRow = this.getRowByID(id);\n if (!isNullOrUndefined(chartRow)) {\n rowIndex = getValue('rowIndex', chartRow);\n }\n }\n else if (!isNullOrUndefined(index)) {\n chartRow = this.getRowByIndex(index);\n rowIndex = getValue('rowIndex', chartRow);\n record = this.currentViewData[rowIndex];\n }\n var gridRow = this.treeGrid.getRows()[rowIndex];\n return { data: record, gridRow: gridRow, chartRow: chartRow, cancel: false };\n };\n /**\n * Method to get chart row value by index.\n *\n * @param {number} index - Defines the index of row.\n * @returns {HTMLElement} .\n */\n Gantt.prototype.getRowByIndex = function (index) {\n try {\n var gridRows = this.element.querySelectorAll('.e-chart-row');\n if (!isNullOrUndefined(index)) {\n return gridRows[index];\n }\n else {\n return null;\n }\n }\n catch (e) {\n return null;\n }\n };\n /**\n * Method to get the row element by task id.\n *\n * @param {string | number} id - Defines the id of task.\n * @returns {HTMLElement} .\n */\n Gantt.prototype.getRowByID = function (id) {\n var _this = this;\n var record = this.getRecordByID(id.toString());\n var index;\n if (!this.loadChildOnDemand && this.taskFields.hasChildMapping) {\n index = this.updatedRecords.map(function (item) { return item[_this.taskFields.id]; }).indexOf(record.ganttProperties.taskId);\n }\n else {\n index = this.updatedRecords.indexOf(record);\n }\n if (index !== -1) {\n return this.getRowByIndex(index);\n }\n else {\n return null;\n }\n };\n /**\n * Method to get class name for unscheduled tasks\n *\n * @param {ITaskData} ganttProp .\n * @returns {string} .\n * @private\n */\n Gantt.prototype.getUnscheduledTaskClass = function (ganttProp) {\n if (isNullOrUndefined(ganttProp.startDate) && isNullOrUndefined(ganttProp.endDate) &&\n isNullOrUndefined(ganttProp.duration)) {\n return ' ' + cls.traceUnscheduledTask;\n }\n else if (isNullOrUndefined(ganttProp.startDate) || isNullOrUndefined(ganttProp.endDate) ||\n isNullOrUndefined(ganttProp.duration)) {\n return ' ' + cls.traceUnscheduledTask;\n }\n else {\n return '';\n }\n };\n /**\n * Method to get class name for unscheduled tasks\n *\n * @param {ITaskData} ganttProp -Defines the Gantt propertie.\n * @returns {boolean} .\n * @private\n */\n Gantt.prototype.isUnscheduledTask = function (ganttProp) {\n if (isNullOrUndefined(ganttProp.startDate) || isNullOrUndefined(ganttProp.endDate) ||\n isNullOrUndefined(ganttProp.duration)) {\n return true;\n }\n else {\n return false;\n }\n };\n Gantt.prototype.createGanttPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-ganttpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: 'e-content', attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n document.getElementById(this.element.id + 'GanttChart').appendChild(popup);\n };\n /**\n * Method to get predecessor value as string.\n *\n * @param {string} type .\n * @returns {HTMLElement} .\n * @private\n */\n Gantt.prototype.getPredecessorTextValue = function (type) {\n var textValue;\n switch (type) {\n case 'SS':\n textValue = this.localeObj.getConstant('start') + '-' + this.localeObj.getConstant('start');\n break;\n case 'FF':\n textValue = this.localeObj.getConstant('finish') + '-' + this.localeObj.getConstant('finish');\n break;\n case 'SF':\n textValue = this.localeObj.getConstant('start') + '-' + this.localeObj.getConstant('finish');\n break;\n case 'FS':\n textValue = this.localeObj.getConstant('finish') + '-' + this.localeObj.getConstant('start');\n break;\n }\n return textValue;\n };\n /**\n * Method to perform search action in Gantt.\n *\n * @param {string} keyVal - Defines key value to search.\n * @returns {void} .\n */\n Gantt.prototype.search = function (keyVal) {\n if (this.filterModule) {\n this.searchSettings.key = keyVal;\n this.dataBind();\n }\n };\n /**\n * Method to get offset rect value\n *\n * @param {HTMLElement} element .\n * @returns {number} .\n * @hidden\n */\n Gantt.prototype.getOffsetRect = function (element) {\n var box = element.getBoundingClientRect();\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop\n || document.body.scrollTop;\n var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft ||\n document.body.scrollLeft;\n var clientTop = document.documentElement.clientTop || document.body.clientTop || 0;\n var clientLeft = document.documentElement.clientLeft || document.body.clientLeft || 0;\n var top = box.top + scrollTop - clientTop;\n var left = this.enableRtl ? box.right + scrollLeft - clientLeft : box.left + scrollLeft - clientLeft;\n return { top: Math.round(top), left: Math.round(left), width: box.width, height: box.height };\n };\n /**\n * Method to expand all the rows of Gantt.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.expandAll = function () {\n this.ganttChartModule.expandCollapseAll('expand');\n };\n /**\n * Method to update data source.\n *\n * @returns {void} .\n * @param {object[]} dataSource - Defines a collection of data.\n * @param {object} args - Defines the projectStartDate and projectEndDate values.\n * @public\n */\n Gantt.prototype.updateDataSource = function (dataSource, args) {\n this.isDynamicData = true;\n if (!isNullOrUndefined(args)) {\n for (var _i = 0, _a = Object.keys(args); _i < _a.length; _i++) { // eslint-disable-line\n var prop = _a[_i];\n switch (prop) {\n case 'projectStartDate':\n this.setProperties({ projectStartDate: args[prop] }, true);\n break;\n case 'projectEndDate':\n this.setProperties({ projectEndDate: args[prop] }, true);\n break;\n }\n }\n }\n this.dataSource = dataSource;\n };\n /**\n * Method to collapse all the rows of Gantt.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.collapseAll = function () {\n this.ganttChartModule.expandCollapseAll('collapse');\n };\n /**\n * Gets the columns from the TreeGrid.\n *\n * @returns {Column[]} .\n * @public\n */\n Gantt.prototype.getGridColumns = function () {\n return this.treeGrid.getColumns();\n };\n /**\n * Method to column from given column collection based on field value\n *\n * @param {string} field .\n * @param {ColumnModel[]} columns .\n * @returns {ColumnModel} .\n * @private\n */\n Gantt.prototype.getColumnByField = function (field, columns) {\n var column = columns.filter(function (value) {\n return value.field === field;\n });\n return column.length > 0 ? column[0] : null;\n };\n /**\n * Gets the Gantt columns.\n *\n * @returns {ColumnModel[]} .\n * @public\n */\n Gantt.prototype.getGanttColumns = function () {\n return this.ganttColumns;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.showColumn = function (keys, showBy) {\n this.treeGrid.showColumns(keys, showBy);\n this.updateTreeColumns();\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.hideColumn = function (keys, hideBy) {\n this.treeGrid.hideColumns(keys, hideBy);\n this.updateTreeColumns();\n };\n /**\n * To set scroll top for chart scroll container.\n *\n * @param {number} scrollTop - Defines scroll top value for scroll container.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.setScrollTop = function (scrollTop) {\n this.ganttChartModule.scrollObject.setScrollTop(scrollTop);\n };\n /**\n * Cancels edited state.\n *\n * @returns {void} .\n * @public\n */\n Gantt.prototype.cancelEdit = function () {\n this.isCancelled = true;\n this.closeGanttActions();\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void} .\n */\n Gantt.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void} .\n */\n Gantt.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void} .\n */\n Gantt.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} records - Defines the collection of row indexes.\n * @returns {void} .\n */\n Gantt.prototype.selectRows = function (records) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(records);\n }\n };\n /**\n * Method to delete record.\n *\n * @param {number | string } taskDetail - Defines the details of data to delete.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.deleteRecord = function (taskDetail) {\n if (this.editModule) {\n this.editModule.deleteRecord(taskDetail);\n }\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void} .\n */\n Gantt.prototype.enableItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void} .\n */\n Gantt.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * @param {ITaskAddedEventArgs | IActionBeginEventArgs} args .\n * @returns {ITaskAddedEventArgs | IActionBeginEventArgs} .\n * @hidden\n */\n Gantt.prototype.updateDataArgs = function (args) {\n if (!Array.isArray(args.data)) {\n var customData = [];\n customData.push(args.data);\n setValue('data', customData, args);\n }\n return args;\n };\n /**\n * Method to convert task data to milestone data.\n *\n * @param {string} id - Defines id of record.\n * @returns {void} .\n * @public\n */\n Gantt.prototype.convertToMilestone = function (id) {\n var rowData = this.getRecordByID(id);\n if (!isNullOrUndefined(rowData)) {\n var data = extend({}, {}, rowData.taskData, true);\n var taskfields = this.taskFields;\n if (data[taskfields.startDate]) {\n this.setRecordValue(taskfields.startDate, rowData.ganttProperties.startDate, data, true);\n }\n if (!isNullOrUndefined(taskfields.duration)) {\n data[taskfields.duration] = 0;\n }\n else {\n data[taskfields.startDate] = new Date(rowData.ganttProperties.startDate);\n data[taskfields.endDate] = new Date(rowData.ganttProperties.endDate);\n }\n if (!isNullOrUndefined(taskfields.milestone)) {\n if (data[taskfields.milestone] === false) {\n data[taskfields.milestone] = true;\n }\n }\n if (!isNullOrUndefined(taskfields.progress)) {\n data[taskfields.progress] = 0;\n }\n if (!isNullOrUndefined(taskfields.child) && data[taskfields.child]) {\n data[taskfields.child] = [];\n }\n if (!isNullOrUndefined(taskfields.parentID) && data[taskfields.parentID]) {\n data[taskfields.parentID] = null;\n }\n if (!isNullOrUndefined(taskfields.segments)) {\n data[taskfields.segments] = null;\n }\n if (!isNullOrUndefined(this.contextMenuModule) &&\n this.contextMenuModule.isOpen &&\n this.contextMenuModule.item === 'Milestone') {\n if (!isNullOrUndefined(taskfields.dependency)) {\n data[taskfields.dependency] = null;\n }\n var position = this.editSettings.newRowPosition;\n this.addRecord(data, position, this.selectedRowIndex);\n }\n else {\n if (!rowData.hasChildRecords && !rowData.ganttProperties.isMilestone) {\n this.updateRecordByID(data);\n }\n }\n }\n };\n /**\n * To change the mode of a record.\n *\n * @param {object} data - Use to change the TaskMode either manual, auto or custom.\n * @returns {void} .\n */\n Gantt.prototype.changeTaskMode = function (data) {\n if (this.undoRedoModule && !this.undoRedoModule['isUndoRedoPerformed']) {\n if (this.undoRedoModule['redoEnabled']) {\n this.undoRedoModule['disableRedo']();\n }\n this.undoRedoModule['createUndoCollection']();\n var details = {};\n details['action'] = 'TaskMode';\n details['modifiedRecords'] = extend([], [data], [], true);\n this.undoRedoModule['getUndoCollection'][this.undoRedoModule['getUndoCollection'].length - 1] = details;\n }\n var tasks = this.taskFields;\n var ganttData = this.getRecordByID(data[tasks.id]);\n var ganttProp = ganttData.ganttProperties;\n this.isOnEdit = true;\n this.setRecordValue('isAutoSchedule', !ganttProp.isAutoSchedule, ganttProp, true);\n if (!isNullOrUndefined(this.taskFields.manual)) {\n this.setRecordValue('taskData.' + tasks.manual, !ganttProp.isAutoSchedule, ganttData);\n this.setRecordValue(tasks.manual, !ganttProp.isAutoSchedule, ganttData);\n }\n this.editModule.updateTaskScheduleModes(ganttData);\n var args = {\n data: ganttData\n };\n this.editModule.initiateUpdateAction(args);\n };\n /**\n * @returns {string[]} .\n * @private\n */\n Gantt.prototype.getTaskIds = function () {\n return this.taskIds;\n };\n /**\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n Gantt.prototype.setTaskIds = function (data) {\n if (this.viewType !== 'ProjectView') {\n var id = data.ganttProperties.taskId;\n id = data.level === 0 ? 'R' + id : 'T' + id;\n this.taskIds.push(id);\n }\n };\n /**\n * To render the react templates\n *\n * @returns {void} .\n * @hidden\n */\n Gantt.prototype.renderTemplates = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To reset the react templates\n *\n * @returns {void} .\n * @hidden\n */\n Gantt.prototype.resetTemplates = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n __decorate([\n Property(true)\n ], Gantt.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"allowParentDependency\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"disableHtmlEncode\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Gantt.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"loadChildOnDemand\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"UpdateOffsetOnTaskbarEdit\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"autoCalculateDateScheduling\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"autoFocusTasks\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"enablePredecessorValidation\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property()\n ], Gantt.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property(['Sorting', 'Add', 'ColumnReorder', 'ColumnResize', 'ColumnState', 'Delete', 'Edit', 'Filtering', 'Indent', 'Outdent', 'NextTimeSpan', 'PreviousTimeSpan', 'RowDragAndDrop', 'Search'])\n ], Gantt.prototype, \"undoRedoActions\", void 0);\n __decorate([\n Property()\n ], Gantt.prototype, \"timezone\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"collapseAllParentTasks\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"highlightWeekends\", void 0);\n __decorate([\n Property(0)\n ], Gantt.prototype, \"treeColumnIndex\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"dataSource\", void 0);\n __decorate([\n Property('day')\n ], Gantt.prototype, \"durationUnit\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"dateFormat\", void 0);\n __decorate([\n Property('auto')\n ], Gantt.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"renderBaseline\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowTaskbarDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], Gantt.prototype, \"allowTaskbarOverlap\", void 0);\n __decorate([\n Property('Horizontal')\n ], Gantt.prototype, \"gridLines\", void 0);\n __decorate([\n Complex({}, LabelSettings)\n ], Gantt.prototype, \"labelSettings\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"taskbarTemplate\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"parentTaskbarTemplate\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"milestoneTemplate\", void 0);\n __decorate([\n Property()\n ], Gantt.prototype, \"baselineColor\", void 0);\n __decorate([\n Property('auto')\n ], Gantt.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableTimelineVirtualization\", void 0);\n __decorate([\n Property()\n ], Gantt.prototype, \"toolbar\", void 0);\n __decorate([\n Property(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'])\n ], Gantt.prototype, \"workWeek\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"includeWeekend\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowUnscheduledTasks\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"showInlineNotes\", void 0);\n __decorate([\n Property(36)\n ], Gantt.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"taskbarHeight\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"projectStartDate\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"projectEndDate\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"resourceIDMapping\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"resourceNameMapping\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"resources\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"segmentData\", void 0);\n __decorate([\n Property(null)\n ], Gantt.prototype, \"connectorLineBackground\", void 0);\n __decorate([\n Property(1)\n ], Gantt.prototype, \"connectorLineWidth\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"columns\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"addDialogFields\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"editDialogFields\", void 0);\n __decorate([\n Property(-1)\n ], Gantt.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Property('hour')\n ], Gantt.prototype, \"workUnit\", void 0);\n __decorate([\n Property('FixedUnit')\n ], Gantt.prototype, \"taskType\", void 0);\n __decorate([\n Property('ProjectView')\n ], Gantt.prototype, \"viewType\", void 0);\n __decorate([\n Collection([{ from: 8, to: 12 }, { from: 13, to: 17 }], DayWorkingTime)\n ], Gantt.prototype, \"dayWorkingTime\", void 0);\n __decorate([\n Collection([], Holiday)\n ], Gantt.prototype, \"holidays\", void 0);\n __decorate([\n Collection([], EventMarker)\n ], Gantt.prototype, \"eventMarkers\", void 0);\n __decorate([\n Complex({}, TaskFields)\n ], Gantt.prototype, \"taskFields\", void 0);\n __decorate([\n Complex({}, ResourceFields)\n ], Gantt.prototype, \"resourceFields\", void 0);\n __decorate([\n Complex({}, TimelineSettings)\n ], Gantt.prototype, \"timelineSettings\", void 0);\n __decorate([\n Property([])\n ], Gantt.prototype, \"zoomingLevels\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Gantt.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Gantt.prototype, \"editSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], Gantt.prototype, \"tooltipSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Gantt.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"readOnly\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableContextMenu\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableCriticalPath\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableUndoRedo\", void 0);\n __decorate([\n Property(10)\n ], Gantt.prototype, \"undoRedoStepsCount\", void 0);\n __decorate([\n Property()\n ], Gantt.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"validateManualTasksOnLinking\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"enableMultiTaskbar\", void 0);\n __decorate([\n Property(false)\n ], Gantt.prototype, \"showOverAllocation\", void 0);\n __decorate([\n Property('Auto')\n ], Gantt.prototype, \"taskMode\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Gantt.prototype, \"filterSettings\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Gantt.prototype, \"searchSettings\", void 0);\n __decorate([\n Complex({}, SplitterSettings)\n ], Gantt.prototype, \"splitterSettings\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"queryTaskbarInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"collapsing\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"taskbarEdited\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"endEdit\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"taskbarEditing\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"splitterResizeStart\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"splitterResizing\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"splitterResized\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"beforeTooltipRender\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"onTaskbarClick\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"onMouseMove\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"pdfQueryTaskbarInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"pdfQueryTimelineCellInfo\", void 0);\n __decorate([\n Event()\n ], Gantt.prototype, \"pdfColumnHeaderQueryCellInfo\", void 0);\n Gantt = __decorate([\n NotifyPropertyChanges\n ], Gantt);\n return Gantt;\n}(Component));\nexport { Gantt };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Gantt } from '@syncfusion/ej2-gantt';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `GanttComponent` represents the react Gantt.\n * ```tsx\n * \n * ```\n */\nvar GanttComponent = /** @class */ (function (_super) {\n __extends(GanttComponent, _super);\n function GanttComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'columns': 'column', 'addDialogFields': 'addDialogField', 'editDialogFields': 'editDialogField', 'dayWorkingTimeCollection': 'dayWorkingTime', 'holidays': 'holiday', 'eventMarkers': 'eventMarker' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n GanttComponent.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 GanttComponent;\n}(Gantt));\nexport { GanttComponent };\napplyMixins(GanttComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ColumnDirective` represent a column of the react Gantt.\n * It must be contained in a Gantt component(`GanttComponent`).\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `EventMarkersDirective` represent a event marker collection in Gantt\n * It must be contained in a Gantt component(`GanttComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * ```\n */\nvar EventMarkerDirective = /** @class */ (function (_super) {\n __extends(EventMarkerDirective, _super);\n function EventMarkerDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EventMarkerDirective.moduleName = 'eventMarker';\n return EventMarkerDirective;\n}(ComplexBase));\nexport { EventMarkerDirective };\nvar EventMarkersDirective = /** @class */ (function (_super) {\n __extends(EventMarkersDirective, _super);\n function EventMarkersDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EventMarkersDirective.propertyName = 'eventMarkers';\n EventMarkersDirective.moduleName = 'eventMarkers';\n return EventMarkersDirective;\n}(ComplexBase));\nexport { EventMarkersDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `HolidaysDirective` represent a holidays collection in Gantt..\n * It must be contained in a Gantt component(`GanttComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar HolidayDirective = /** @class */ (function (_super) {\n __extends(HolidayDirective, _super);\n function HolidayDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HolidayDirective.moduleName = 'holiday';\n return HolidayDirective;\n}(ComplexBase));\nexport { HolidayDirective };\nvar HolidaysDirective = /** @class */ (function (_super) {\n __extends(HolidaysDirective, _super);\n function HolidaysDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HolidaysDirective.propertyName = 'holidays';\n HolidaysDirective.moduleName = 'holidays';\n return HolidaysDirective;\n}(ComplexBase));\nexport { HolidaysDirective };\n","import { isNullOrUndefined, addClass, extend } from '@syncfusion/ej2-base';\nimport { appendChildren, setStyleAndAttributes, addFixedColumnBorder, addStickyColumnPosition, resetColandRowSpanStickyPosition } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar InlineEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - returns the IGrid\n */\n function InlineEditRender(parent) {\n this.parent = parent;\n }\n InlineEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n var tbody;\n if ((this.parent.frozenRows || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.parent.editSettings.showAddNewRow)) && this.parent.editSettings.newRowPosition === 'Top') {\n tbody = this.parent.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = this.parent.getContentTable().querySelector(literals.tbody);\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow' });\n if (this.parent.getContentTable().querySelector('.e-emptyrow') && !this.parent.editSettings.showAddNewRow) {\n var emptyRow = this.parent.getContentTable().querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.parent.frozenRows && this.parent.element.querySelector('.e-frozenrow-empty')) {\n this.parent.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(args.row, tbody.firstChild);\n }\n else {\n tbody.appendChild(args.row);\n }\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n };\n InlineEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n var tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add(literals.editedRow);\n this.parent.editModule.checkLastRow(args.row, args);\n };\n // eslint-disable-next-line max-len\n InlineEditRender.prototype.getEditElement = function (elements, isEdit, tdElement, args, isFrozen) {\n var gObj = this.parent;\n var gLen = 0;\n var isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n var td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: {\n colspan: (gObj.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length +\n this.parent.getIndentCount()).toString()\n }\n });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n var table = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25', role: 'grid' } });\n table.appendChild(gObj.getContentTable().querySelector(literals.colGroup).cloneNode(true));\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var tr = this.parent.createElement('tr');\n var i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n var m = 0;\n i = 0;\n var inputValue;\n var cols = args.isCustomFormValidation ? this.parent.columnModel : gObj.getColumns();\n while ((isEdit && m < tdElement.length && i < cols.length) || i < cols.length) {\n var span = isEdit && tdElement[parseInt(m.toString(), 10)] ?\n tdElement[parseInt(m.toString(), 10)].getAttribute('colspan') : null;\n var col = cols[parseInt(i.toString(), 10)];\n inputValue = (elements[col.uid]).value;\n var td_1 = this.parent.createElement('td', {\n className: literals.rowCell, attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td_1.appendChild(elements[col.uid]);\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(td_1, { 'data-cell': col.headerText });\n if (i === 0) {\n td_1.classList.add('e-responsive-editcell');\n }\n }\n if (col.editType === 'booleanedit') {\n td_1.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td_1], 'e-unboundcell');\n }\n }\n else {\n td_1.classList.add('e-hide');\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, col, td_1);\n if (this.parent.isSpan) {\n var colSpan = td_1.getAttribute('colspan') ? parseInt(td_1.getAttribute('colspan'), 10) : 1;\n resetColandRowSpanStickyPosition(this.parent, col, td_1, colSpan);\n }\n if (this.parent.enableColumnVirtualization) {\n if (col.freeze === 'Left' && !isNullOrUndefined(col.valueX)) {\n td_1.style.left = (col.valueX - this.parent.translateX) + 'px';\n }\n else if (col.freeze === 'Right' && !isNullOrUndefined(col.valueX)) {\n td_1.style.right = (col.valueX + this.parent.translateX) + 'px';\n }\n else if (col.freeze === 'Fixed') {\n td_1.style.left = (this.parent.leftrightColumnWidth('left') - this.parent.translateX) + 'px';\n td_1.style.right = (this.parent.leftrightColumnWidth('right') + this.parent.translateX) + 'px';\n }\n }\n }\n td_1.setAttribute('aria-label', inputValue + this.parent.localeObj.getConstant('ColumnHeader') + col.headerText);\n tr.appendChild(td_1);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n addFixedColumnBorder(tr);\n tbody.appendChild(tr);\n table.appendChild(tbody);\n form.appendChild(table);\n td.appendChild(form);\n return td;\n };\n InlineEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n InlineEditRender.prototype.appendChildren = function (form, data, isFrozen) {\n var _this = this;\n var dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n if (this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string') {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n // eslint-disable-next-line\n var setRules = function () {\n var cols = _this.parent.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[cols[parseInt(i.toString(), 10)].field] =\n cols[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n };\n return InlineEditRender;\n}());\nexport { InlineEditRender };\n","import { classList } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar BatchEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function BatchEditRender(parent) {\n this.parent = parent;\n }\n BatchEditRender.prototype.update = function (elements, args) {\n if (this.parent.isReact && args.columnObject && args.columnObject.template) {\n var parentRow = args.cell.parentElement;\n var newTd = args.cell.cloneNode(true);\n parentRow.insertBefore(newTd, args.cell);\n newTd.focus();\n args.cell.remove();\n args.cell = newTd;\n }\n args.cell.setAttribute('aria-label', args.cell.innerHTML + this.parent.localeObj.getConstant('ColumnHeader') + args.columnObject.field);\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, [literals.editedRow, 'e-batchrow'], []);\n };\n BatchEditRender.prototype.getEditElement = function (elements, args) {\n var gObj = this.parent;\n var form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n };\n BatchEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n return BatchEditRender;\n}());\nexport { BatchEditRender };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { remove, extend, updateBlazorTemplate, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, applyBiggerTheme, addBiggerDialog } from '../base/util';\nimport { ResponsiveDialogRenderer } from './responsive-dialog-renderer';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar DialogEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function DialogEditRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.dialogDestroy, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n DialogEditRender.prototype.setLocaleObj = function () {\n this.l10n = this.serviceLocator.getService('localization');\n };\n DialogEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.createDialogHeader = function (args) {\n var _this = this;\n var gObj = this.parent;\n var header;\n if (this.parent.enableAdaptiveUI) {\n var responsiveDlgRenderer = new ResponsiveDialogRenderer(this.parent, this.serviceLocator);\n responsiveDlgRenderer.action = this.isEdit ? ResponsiveDialogAction.isEdit : ResponsiveDialogAction.isAdd;\n return responsiveDlgRenderer.renderResponsiveHeader(undefined, args);\n }\n else {\n if (gObj.editSettings.headerTemplate) {\n header = initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('HeaderTemplate', args).outerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n else if (this.isEdit) {\n header = this.l10n.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else {\n header = this.l10n.getConstant('AddFormTitle');\n }\n }\n return header;\n };\n DialogEditRender.prototype.createDialog = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n this.dialog = this.parent.createElement('div', { id: gObj.element.id + '_dialogEdit_wrapper', styles: 'width: auto' });\n if (gObj.enableAdaptiveUI) {\n this.dialog.classList.add('e-responsive-dialog');\n }\n gObj.element.appendChild(this.dialog);\n this.setLocaleObj();\n this.dialog.setAttribute('aria-label', this.l10n.getConstant('DialogEdit'));\n // let position: PositionDataModel = this.parent.element.getBoundingClientRect().height < 400 ?\n // { X: 'center', Y: 'top' } : { X: 'center', Y: 'center' };\n this.dialogObj = new Dialog(extend({\n header: this.createDialogHeader(args), isModal: true, visible: true,\n cssClass: this.parent.cssClass ? 'e-edit-dialog' + ' ' + this.parent.cssClass : 'e-edit-dialog',\n content: this.getEditElement(elements, args),\n showCloseIcon: true,\n allowDragging: true,\n // position: position,\n close: this.dialogClose.bind(this),\n created: this.dialogCreated.bind(this),\n closeOnEscape: true, width: gObj.editSettings.template ? 'auto' : '330px',\n target: args.target ? args.target : document.body, animationSettings: { effect: 'None' },\n footerTemplate: gObj.editSettings.footerTemplate ? initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('FooterTemplate', args).outerHTML;\n }) : null,\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('SaveButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n { click: this.btnClick.bind(this),\n buttonModel: {\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton')\n } }]\n }, gObj.editSettings.dialog ? (gObj.editSettings.dialog.params || {}) : {}));\n args.dialog = this.dialogObj;\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dialogObj.appendTo(this.dialog);\n applyBiggerTheme(this.parent.element, this.dialogObj.element.parentElement);\n if (gObj.enableAdaptiveUI) {\n this.dialogObj.show(true);\n }\n };\n DialogEditRender.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n DialogEditRender.prototype.renderResponsiveDialog = function () {\n var _this = this;\n if (this.parent.enableAdaptiveUI) {\n if (this.parent.adaptiveDlgTarget) {\n this.dialogObj.target = this.parent.adaptiveDlgTarget;\n }\n this.dialogObj.buttons = [{}];\n this.dialogObj.showCloseIcon = true;\n this.dialogObj.visible = false;\n this.dialogObj.width = '100%';\n this.dialogObj.open = function () {\n _this.dialogObj.element.style.maxHeight = '100%';\n };\n }\n };\n DialogEditRender.prototype.btnClick = function (e) {\n if (this.l10n.getConstant('CancelButton').toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n this.dialogClose();\n }\n else {\n this.parent.endEdit();\n }\n };\n DialogEditRender.prototype.dialogClose = function () {\n this.parent.closeEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DialogEditRender.prototype.destroy = function (args) {\n var dialogEditTemplates = ['template', 'headerTemplate', 'footerTemplate'];\n for (var i = 0; i < dialogEditTemplates.length; i++) {\n if (this.parent.editSettings[dialogEditTemplates[parseInt(i.toString(), 10)]]) {\n var templateName = dialogEditTemplates[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + dialogEditTemplates[parseInt(i.toString(), 10)].slice(1);\n var editTemplateID = this.parent.element.id + 'editSettings' + templateName;\n updateBlazorTemplate(editTemplateID, templateName, this.parent.editSettings);\n }\n }\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.parent.notify(events.toolbarRefresh, {});\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n };\n DialogEditRender.prototype.getDialogEditTemplateElement = function (dialogTemp, args) {\n var tempDiv = this.parent.createElement('div', { className: 'e-dialog' + dialogTemp });\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var templateID = this.parent.element.id + 'editSettings' + dialogTemp;\n appendChildren(tempDiv, (dialogTemp === 'HeaderTemplate' ? this.parent.getEditHeaderTemplate() :\n this.parent.getEditFooterTemplate())(dummyData, this.parent, 'editSettings' + dialogTemp, templateID));\n updateBlazorTemplate(templateID, dialogTemp, this.parent.editSettings);\n return tempDiv;\n };\n DialogEditRender.prototype.getEditElement = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n var div = this.parent.createElement('div', { className: this.isEdit ? literals.editedRow : 'e-insertedrow' });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var isReactCompiler = this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n var setRules = function () {\n var columns = _this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[columns[parseInt(i.toString(), 10)].field] =\n columns[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n div.appendChild(form);\n return div;\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '6px', role: 'grid' } });\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editModule.checkColumnIsGrouped(cols[parseInt(i.toString(), 10)]) || cols[parseInt(i.toString(), 10)].commands\n || cols[parseInt(i.toString(), 10)].commandsTemplate || cols[parseInt(i.toString(), 10)].type === 'checkbox') {\n continue;\n }\n var tr = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var dataCell = this.parent.createElement('td', {\n className: literals.rowCell, attrs: {\n style: 'text-align:' + (this.parent.enableRtl ? 'right' : 'left') + ';width:190px'\n }\n });\n elements[cols[parseInt(i.toString(), 10)].uid].classList.remove('e-input');\n dataCell.appendChild(elements[cols[parseInt(i.toString(), 10)].uid]);\n tr.appendChild(dataCell);\n tbody.appendChild(tr);\n }\n table.appendChild(tbody);\n form.appendChild(table);\n div.appendChild(form);\n return div;\n };\n DialogEditRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dialogDestroy, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return DialogEditRender;\n}());\nexport { DialogEditRender };\n","import { isNullOrUndefined, closest, extend } from '@syncfusion/ej2-base';\nimport { InlineEditRender } from './inline-edit-renderer';\nimport { BatchEditRender } from './batch-edit-renderer';\nimport { DialogEditRender } from './dialog-edit-renderer';\nimport { attributes, classList, select } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { getComplexFieldID, getObject, appendChildren, parentsUntil, extendObjWithFn, padZero } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar EditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent -specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function EditRender(parent, serviceLocator) {\n //Internal variables\n this.editType = {\n 'Inline': InlineEditRender,\n 'Normal': InlineEditRender, 'Batch': BatchEditRender, 'Dialog': DialogEditRender\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = new this.editType[this.parent.editSettings.mode](parent, serviceLocator);\n this.focus = serviceLocator.getService('focus');\n }\n EditRender.prototype.addNew = function (args) {\n this.renderer.addNew(this.getEditElements(args), args);\n this.convertWidget(args);\n };\n EditRender.prototype.update = function (args) {\n this.renderer.update(this.getEditElements(args), args);\n var isCustomFormValidation = args.isCustomFormValidation;\n if (!isCustomFormValidation) {\n this.parent.notify(events.beforeStartEdit, args);\n this.convertWidget(args);\n }\n };\n EditRender.prototype.convertWidget = function (args) {\n var gObj = this.parent;\n var isFocused;\n var cell;\n var value;\n var form = gObj.editSettings.mode === 'Dialog' ?\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document) : gObj.editSettings.showAddNewRow &&\n gObj.element.querySelector('.e-editedrow') ? gObj.element.querySelector('.e-editedrow').getElementsByClassName('e-gridform')[0]\n : gObj.element.getElementsByClassName('e-gridform')[0];\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n var cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n // eslint-disable-next-line\n value = (col.valueAccessor(col.field, args.rowData, col));\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n var temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && isNullOrUndefined(cell.getAttribute('disabled')) && !parentsUntil(cell, 'e-checkbox-disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EditRender.prototype.focusElement = function (elem, type) {\n var chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox) && chkBox.nextElementSibling) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n var isFocus = (this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && this.parent.editSettings.mode === 'Normal' ? false : true;\n var focusElement = elem.classList.contains('e-dropdownlist') ? elem.parentElement : elem;\n if ((isFocus || ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, literals.addedRow))) && (!this.parent.editSettings.showAddNewRow ||\n (this.parent.editSettings.showAddNewRow && (!parentsUntil(elem, literals.addedRow)) || this.parent.addNewRowFocus))) {\n focusElement.focus();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n focusElement.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n };\n EditRender.prototype.getEditElements = function (args) {\n var gObj = this.parent;\n var elements = {};\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (args.isCustomFormValidation) {\n cols = this.parent.columnModel;\n }\n if (this.parent.editSettings.template) {\n return {};\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.commands || col.commandsTemplate) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var model = new RowModelGenerator(this.parent);\n var cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n var cells = model.generateRows(args.rowData)[0].cells;\n var cell = cells.filter(function (cell) { return cell.rowID; });\n var td = cellRenderer.render(cell[parseInt(i.toString(), 10)], args.rowData, { 'index': args.row ? args.row.getAttribute(literals.dataRowIndex) : 0 }, this.parent.enableVirtualization);\n var div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n if (col.type === 'dateonly' && args.rowData[col.field] instanceof Date) {\n var cellValue = args.rowData[col.field];\n args.rowData[col.field] = cellValue.getFullYear() + '-' + padZero(cellValue.getMonth() + 1) + '-' + padZero(cellValue.getDate());\n }\n var value = (col.valueAccessor(col.field, args.rowData, col));\n var tArgs = { column: col, value: value, type: args.requestType, data: args.rowData };\n var temp = col.edit.create;\n var input = void 0;\n if (col.editTemplate) {\n input = this.parent.createElement('span', { attrs: { 'e-mappinguid': col.uid } });\n var tempID = this.parent.element.id + col.uid + 'editTemplate';\n var tempData = extendObjWithFn({}, args.rowData, { column: col });\n var isReactCompiler = this.parent.isReact && typeof (col.editTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID, null, null, input);\n this.parent.renderTemplates();\n }\n else {\n var template = col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID);\n appendChildren(input, template);\n }\n }\n else {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n input = temp(tArgs);\n }\n else {\n input = col.edit.create(tArgs);\n }\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n var isInput = input.tagName !== 'input' && input.querySelectorAll('input').length;\n var complexFieldName = getComplexFieldID(col.field);\n attributes(isInput ? input.querySelector('input') : input, {\n name: complexFieldName, 'e-mappinguid': col.uid,\n id: gObj.element.id + complexFieldName\n });\n classList(input, ['e-input', 'e-field'], []);\n if (col.textAlign === 'Right') {\n input.classList.add('e-ralign');\n }\n if ((col.isPrimaryKey || col.isIdentity) && args.requestType === 'beginEdit' ||\n (col.isIdentity && args.requestType === 'add')) { // already disabled in cell plugins\n input.setAttribute('disabled', '');\n }\n }\n elements[col.uid] = input;\n }\n return elements;\n };\n EditRender.prototype.destroy = function () {\n this.renderer.removeEventListener();\n };\n return EditRender;\n}());\nexport { EditRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, setValue } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var wrapper = this.getWrapper();\n var rippleSpan = null;\n var frameSpan = null;\n if (wrapper) {\n frameSpan = wrapper.getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = wrapper.getElementsByClassName(RIPPLE)[0];\n }\n }\n if (state === 'check') {\n if (frameSpan) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n if (frameSpan) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n }\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n if (frameSpan) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n this.element = wrapper;\n if (this.refreshing) {\n ['e-control', 'e-checkbox', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.getLabel = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n if (this.element.parentNode) {\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(label, 'mouseleave', this.labelMouseLeaveHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.getWrapper();\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","import { createEditElement } from '../base/util';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar EditCellBase = /** @class */ (function () {\n function EditCellBase(parent) {\n this.parent = parent;\n }\n EditCellBase.prototype.create = function (args) {\n return createEditElement(this.parent, args.column, 'e-field', { type: 'text' });\n };\n EditCellBase.prototype.read = function (element) {\n return element.ej2_instances[0].value;\n };\n EditCellBase.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n if (this.removeEventHandler) {\n this.removeEventHandler();\n }\n this.obj.destroy();\n }\n };\n return EditCellBase;\n}());\nexport { EditCellBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { extend } from '@syncfusion/ej2-base';\nimport { isEditable, addRemoveActiveClasses, createEditElement, getObject } from '../base/util';\nimport * as literals from '../base/string-literals';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `BooleanEditCell` is used to handle boolean cell type editing.\n *\n * @hidden\n */\nvar BooleanEditCell = /** @class */ (function (_super) {\n __extends(BooleanEditCell, _super);\n function BooleanEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeClasses = ['e-selectionbackground', 'e-active'];\n return _this;\n }\n BooleanEditCell.prototype.create = function (args) {\n var col = args.column;\n var classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n this.removeEventHandler = this.removeEventListener;\n return createEditElement(this.parent, args.column, classNames, { type: 'checkbox', value: args.value });\n };\n BooleanEditCell.prototype.read = function (element) {\n return element.checked;\n };\n BooleanEditCell.prototype.write = function (args) {\n var selectChkBox;\n var chkState;\n if (!isNullOrUndefined(args.row)) {\n selectChkBox = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n chkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(selectChkBox) && args.column.type === 'checkbox') {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n chkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.getElementsByClassName(literals.rowCell)), chkState].concat(this.activeClasses));\n }\n this.obj = new CheckBox(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: chkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, args.column.edit.params));\n this.addEventListener();\n this.obj.appendTo(args.element);\n };\n BooleanEditCell.prototype.addEventListener = function () {\n this.cbChange = this.checkBoxChange.bind(this);\n this.obj.addEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.checkBoxChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var add = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n add = true;\n this.editRow.setAttribute('aria-selected', add.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.getElementsByClassName(literals.rowCell)), add].concat(this.activeClasses));\n }\n };\n return BooleanEditCell;\n}(EditCellBase));\nexport { BooleanEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, isNullOrUndefined, select } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { Query, DataManager, DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport { isEditable, getComplexFieldID, getObject } from '../base/util';\nimport { parentsUntil } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar DropDownEditCell = /** @class */ (function (_super) {\n __extends(DropDownEditCell, _super);\n function DropDownEditCell(parent) {\n var _this = \n //constructor\n _super.call(this) || this;\n _this.parent = parent;\n _this.flag = false;\n _this.removeEventHandler = _this.removeEventListener;\n return _this;\n }\n DropDownEditCell.prototype.write = function (args) {\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.column = args.column;\n var pred = new Predicate(args.column.field, 'notequal', null, true, false);\n var params = {};\n if (args.column.edit.params) {\n var keys = Object.keys(args.column.edit.params);\n for (var i = 0; i < keys.length; i++) {\n params[keys[parseInt(i.toString(), 10)]] = keys[parseInt(i.toString(), 10)] === 'query' ?\n args.column.edit.params[keys[parseInt(i.toString(), 10)]].clone() :\n args.column.edit.params[keys[parseInt(i.toString(), 10)]];\n }\n }\n this.obj = new DropDownList(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always',\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? this.parent.cssClass : null,\n close: this.dropDownClose.bind(this)\n }, params));\n if (this.parent.enableVirtualization) {\n if (params.dataSource) {\n this.obj.dataSource = params.dataSource;\n }\n else {\n this.obj.dataSource = args.column.isForeignColumn() ? [args.foreignKeyData[0]] : [args.rowData];\n }\n }\n this.addEventListener();\n this.obj.query.params = this.parent.query.params;\n this.obj.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n DropDownEditCell.prototype.dropDownClose = function (args) {\n if (args.event && args.event.action === 'escape') {\n this.parent.editModule.editCellDialogClose = true;\n }\n };\n DropDownEditCell.prototype.addEventListener = function () {\n this.ddCreated = this.dropdownCreated.bind(this);\n this.ddOpen = this.dropDownOpen.bind(this);\n this.ddBeforeOpen = this.dropdownBeforeOpen.bind(this);\n this.ddComplete = this.ddActionComplete.bind(this);\n this.obj.addEventListener(literals.create, this.ddCreated);\n this.obj.addEventListener(literals['open'], this.ddOpen);\n this.obj.addEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.addEventListener(events.actionComplete, this.ddComplete);\n };\n DropDownEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.create, this.ddCreated);\n this.obj.removeEventListener(literals['open'], this.ddOpen);\n this.obj.removeEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.removeEventListener(events.actionComplete, this.ddComplete);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownEditCell.prototype.dropdownCreated = function (e) {\n this.flag = true;\n };\n DropDownEditCell.prototype.dropdownBeforeOpen = function () {\n if (this.parent.enableVirtualization) {\n if (this.column.edit.params && this.column.edit.params.dataSource) {\n this.obj.dataSource = this.column.edit.params.dataSource;\n }\n else {\n this.obj.dataSource = !this.column.isForeignColumn() ? (this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource))\n : this.column.dataSource instanceof DataManager ?\n this.column.dataSource : new DataManager(this.column.dataSource);\n }\n }\n };\n DropDownEditCell.prototype.ddActionComplete = function (e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource && !(this.column.edit.params &&\n this.column.edit.params.ddEditedData)) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n };\n DropDownEditCell.prototype.dropDownOpen = function (args) {\n var dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n };\n return DropDownEditCell;\n}(EditCellBase));\nexport { DropDownEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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","import { extend, Internationalization } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { isEditable, getComplexFieldID, getObject, createEditElement } from '../base/util';\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n *\n * @hidden\n */\nvar NumericEditCell = /** @class */ (function () {\n function NumericEditCell(parent) {\n this.parent = parent;\n }\n NumericEditCell.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumericEditCell.prototype.create = function (args) {\n this.instances = new Internationalization(this.parent.locale);\n return createEditElement(this.parent, args.column, 'e-field', {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericEditCell.prototype.read = function (element) {\n return this.obj.value;\n };\n NumericEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.edit.params));\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n this.obj.appendTo(args.element);\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n };\n NumericEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return NumericEditCell;\n}());\nexport { NumericEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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.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') {\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { isEditable, createEditElement } from '../base/util';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DefaultEditCell` is used to handle default cell type editing.\n *\n * @hidden\n */\nvar DefaultEditCell = /** @class */ (function (_super) {\n __extends(DefaultEditCell, _super);\n function DefaultEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultEditCell.prototype.create = function (args) {\n var attr = {\n type: 'text', value: !isNullOrUndefined(args.value) ? args.value : '', style: 'text-align:' + args.column.textAlign\n };\n return createEditElement(this.parent, args.column, 'e-field e-input e-defaultcell', attr);\n };\n DefaultEditCell.prototype.read = function (element) {\n return element.value;\n };\n DefaultEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new TextBox(extend({\n element: args.element, floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n enableRtl: this.parent.enableRtl, enabled: isEditable(args.column, args.requestType, args.element),\n placeholder: isInline ? '' : args.column.headerText,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, col.edit.params));\n this.obj.appendTo(args.element);\n if (this.parent.editSettings.mode === 'Batch') {\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n }\n };\n DefaultEditCell.prototype.keyEventHandler = function (args) {\n if (args.key === 'Enter' || args.key === 'Tab') {\n var evt = new Event('change', { bubbles: false, cancelable: true });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n DefaultEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return DefaultEditCell;\n}(EditCellBase));\nexport { DefaultEditCell };\n","import { extend, select } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive, refreshForeignData, getObject } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n *\n * @hidden\n */\nvar NormalEdit = /** @class */ (function () {\n function NormalEdit(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n NormalEdit.prototype.clickHandler = function (e) {\n var target = e.target;\n var gObj = this.parent;\n if (gObj.editSettings.showAddNewRow && isNullOrUndefined(gObj.element.querySelector('.' + literals.editedRow))) {\n return;\n }\n if ((((parentsUntil(target, literals.gridContent) &&\n parentsUntil(parentsUntil(target, literals.gridContent), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, literals.headerContent))) && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, literals.rowCell)\n ? parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n };\n NormalEdit.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, literals.rowCell) && this.parent.editSettings.allowEditOnDblClick &&\n (!this.parent.editSettings.showAddNewRow || (this.parent.editSettings.showAddNewRow &&\n !parentsUntil(e.target, 'e-addedrow')))) {\n this.parent.editModule.startEdit(parentsUntil(e.target, literals.row));\n }\n };\n /**\n * The function used to trigger editComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.editComplete = function (e) {\n this.parent.isEdit = this.parent.editSettings.showAddNewRow ? true : false;\n var action = 'action';\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[\"\" + action] !== 'edit' && (!this.parent.editSettings.showAddNewRow ||\n (this.parent.editSettings.showAddNewRow && e[\"\" + action] !== 'add'))) {\n this.parent.selectRow(e['index']);\n }\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'save',\n type: events.actionComplete\n }));\n break;\n case 'delete':\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'delete',\n type: events.actionComplete\n }));\n if (!this.parent.isCheckBoxSelection) {\n this.parent.selectRow(this.editRowIndex);\n }\n break;\n }\n };\n NormalEdit.prototype.getEditArgs = function (editedData, rowObj, isScroll) {\n var primaryKeys = this.parent.getPrimaryKeyFieldNames();\n var primaryKeyValues = [];\n for (var i = 0; i < primaryKeys.length; i++) {\n primaryKeyValues.push(getObject(primaryKeys[parseInt(i.toString(), 10)], editedData));\n }\n var args = {\n primaryKey: primaryKeys, primaryKeyValue: primaryKeyValues, requestType: 'beginEdit',\n rowData: editedData, rowIndex: this.rowIndex, type: 'edit', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData, target: undefined, isScroll: isScroll\n };\n return args;\n };\n NormalEdit.prototype.startEdit = function (tr) {\n var _this = this;\n var gObj = this.parent;\n this.rowIndex = this.editRowIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n if (gObj.enableVirtualization || gObj.enableColumnVirtualization || gObj.enableInfiniteScrolling) {\n var selector = '.e-row[data-rowindex=\"' + this.rowIndex + '\"]';\n var virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n var e = { data: undefined, index: this.rowIndex, isScroll: false };\n this.parent.notify(events.virtualScrollEditActionBegin, e);\n if (isGroupAdaptive(gObj)) {\n var rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (this.parent.enableVirtualization || this.parent.enableColumnVirtualization ||\n (this.parent.enableInfiniteScrolling && !this.previousData)) {\n this.previousData = e.data;\n }\n else if (!this.parent.enableVirtualization) {\n this.previousData = extend({}, {}, gObj.getCurrentViewRecords()[this.rowIndex], true);\n }\n var editedData = extend({}, {}, e.data || this.previousData, true);\n this.uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(this.uid);\n var args = this.getEditArgs(editedData, rowObj, e.isScroll);\n args.row = tr;\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.beginEdit, args, function (begineditargs) {\n begineditargs.type = 'actionBegin';\n gObj.trigger(events.actionBegin, begineditargs, function (editargs) {\n if (!editargs.cancel) {\n _this.inlineEditHandler(editargs, tr);\n }\n });\n });\n }\n else {\n this.inlineEditHandler(args, tr);\n }\n };\n NormalEdit.prototype.disabledShowAddRow = function (disable, prevent) {\n var addRow = this.parent.element.querySelector('.e-addedrow');\n var inputs = [].slice.call(addRow ? addRow.querySelectorAll('.e-input') : []);\n if (addRow && addRow.querySelector('.e-unboundcell')) {\n var buttons = [].slice.call(addRow.querySelector('.e-unboundcell').querySelectorAll('.e-btn'));\n for (var i = 0; i < buttons.length; i++) {\n if (!disable) {\n buttons[parseInt(i.toString(), 10)].classList.add('e-disabled');\n buttons[parseInt(i.toString(), 10)].setAttribute('disabled', 'disabled');\n }\n else {\n buttons[parseInt(i.toString(), 10)].classList.remove('e-disabled');\n buttons[parseInt(i.toString(), 10)].removeAttribute('disabled');\n }\n }\n }\n if (inputs.length) {\n for (var i = 0; i < inputs.length; i++) {\n var input = inputs[parseInt(i.toString(), 10)];\n var uid = input.getAttribute('e-mappinguid');\n var column = this.parent.getColumnByUid(uid);\n var error = parentsUntil(input, 'e-rowcell').querySelector('.e-error');\n if (error) {\n error.classList.remove('e-error');\n }\n if (input.ej2_instances) {\n if (prevent && isNullOrUndefined(column.defaultValue)) {\n input.ej2_instances[0].value = null;\n input.value = null;\n }\n if (!isNullOrUndefined(disable)) {\n input.ej2_instances[0].enabled = disable && column.allowEditing ? true : false;\n }\n }\n else {\n if (prevent && input.value && input.value.length &&\n isNullOrUndefined(column.defaultValue)) {\n input.value = null;\n }\n if (!isNullOrUndefined(disable)) {\n if (!disable) {\n input.classList.add('e-disabled');\n input.setAttribute('disabled', 'disabled');\n }\n else if (column.allowEditing) {\n input.classList.remove('e-disabled');\n input.removeAttribute('disabled');\n }\n }\n }\n }\n }\n };\n NormalEdit.prototype.inlineEditHandler = function (editargs, tr) {\n var gObj = this.parent;\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n this.renderer.update(editargs);\n this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n if (gObj.editSettings.showAddNewRow && !tr.classList.contains('e-addedrow')) {\n this.disabledShowAddRow(false, true);\n }\n editargs.type = 'actionComplete';\n gObj.trigger(events.actionComplete, editargs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, editargs.form.ej2_instances[0].rules);\n }\n this.args = editargs;\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n };\n NormalEdit.prototype.updateRow = function (index, data) {\n var _this = this;\n var gObj = this.parent;\n this.editRowIndex = index;\n var args = {\n requestType: 'save', action: 'edit', type: events.actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[parseInt(index.toString(), 10)],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n if (gObj.enableInfiniteScrolling) {\n this.uid = args.row.getAttribute('data-uid');\n var index_1 = parseInt(args.row.getAttribute('data-rowindex'), 10);\n this.parent.notify(events.refreshInfiniteEditrowindex, { index: index_1 });\n }\n gObj.notify(events.updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n if (!gObj.enableInfiniteScrolling) {\n gObj.refresh();\n }\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var isValid = gObj.editModule.editFormValidate();\n var validationArgs = {\n prevData: this.previousData, isValid: true, editIdx: this.editRowIndex, addIdx: this.addedRowIndex\n };\n gObj.notify(events.validateVirtualForm, validationArgs);\n return (isValid && validationArgs.isValid);\n };\n NormalEdit.prototype.endEdit = function () {\n var _this = this;\n var gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n var editedData = extend({}, {}, this.previousData, true);\n var args = extend(this.args, {\n requestType: 'save', type: events.actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n var isDlg = gObj.editSettings.mode === 'Dialog';\n var dlgWrapper = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n var dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.editSettings.showAddNewRow &&\n gObj.element.querySelector('.' + literals.editedRow) ? gObj.element.querySelector('.' + literals.editedRow).getElementsByClassName('e-gridform')[0] : gObj.element.getElementsByClassName('e-gridform')[0];\n var data = {\n virtualData: extend({}, {}, this.previousData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && Object.keys(data.virtualData).length) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n var eleLength = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow)).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.getElementsByClassName(literals.editedRow).length : eleLength) {\n args.action = 'edit';\n gObj.trigger(events.actionBegin, args, function (endEditArgs) {\n if (endEditArgs.cancel) {\n return;\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Spinner') {\n gObj.showSpinner();\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n _this.parent.showMaskRow();\n }\n if (gObj.editSettings.showAddNewRow) {\n _this.disabledShowAddRow(true);\n }\n gObj.notify(events.updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(events.virtualScrollEditSuccess, {});\n gObj.notify(events.modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.notify(events.showAddNewRowFocus, {});\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n this.disabledShowAddRow(true, true);\n }\n }\n }\n };\n NormalEdit.prototype.destroyElements = function () {\n var gObj = this.parent;\n if (!gObj.editSettings.showAddNewRow || (gObj.editSettings.showAddNewRow && gObj.element.querySelector('.e-editedrow'))) {\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n }\n this.parent.notify(events.dialogDestroy, {});\n };\n NormalEdit.prototype.editHandler = function (args) {\n var _this = this;\n if (args.promise) {\n args.promise.then(function (e) { return _this.edSucc(e, args); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n this.editSuccess(args.data, args);\n }\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.editModule.applyFormValidation();\n }\n };\n NormalEdit.prototype.edSucc = function (e, args) {\n this.editSuccess(e, args);\n };\n NormalEdit.prototype.edFail = function (e) {\n this.editFailure(e);\n };\n NormalEdit.prototype.updateCurrentViewData = function (data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n };\n NormalEdit.prototype.requestSuccess = function (args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add' &&\n this.parent.selectionModule) {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n };\n NormalEdit.prototype.editSuccess = function (e, args) {\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n var rowData = 'rowData';\n args.data = extend({}, extend({}, args[\"\" + rowData], args.data), e);\n }\n this.requestSuccess(args);\n this.parent.trigger(events.beforeDataBound, args);\n args.type = events.actionComplete;\n this.parent.isEdit = this.parent.editSettings.showAddNewRow ? true : false;\n this.refreshRow(args.data);\n this.parent.notify(events.virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n this.editRowIndex = null;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length\n && this.parent.groupSettings.showGroupedColumn) {\n var dragRow = args.row;\n var rows = this.parent.getRowsObject();\n var dragRowUid = dragRow.getAttribute('data-uid');\n var dragRowObject_1 = this.parent.getRowObjectFromUID(dragRowUid);\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef = this_1;\n rows = rows.filter(function (data) {\n var flag = data.isDataRow && data !== dragRowObject_1;\n if (flag) {\n var groupedColumn = thisRef.parent.groupSettings.columns[parseInt(i.toString(), 10)].split('.');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var comparer1 = data.data[groupedColumn[0]];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var comparer2 = args.data[groupedColumn[0]];\n for (var j = 1; j < groupedColumn.length; j++) {\n comparer1 = comparer1[groupedColumn[j]];\n comparer2 = comparer2[groupedColumn[j]];\n }\n return flag && comparer1 === comparer2;\n }\n else {\n return flag;\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n _loop_1(i);\n }\n var dropRowObject = rows[0];\n if (!isNullOrUndefined(dragRowObject_1) && !isNullOrUndefined(dropRowObject) &&\n dragRowObject_1.parentUid !== dropRowObject.parentUid) {\n this.parent['groupModule'].groupedRowReorder(dragRowObject_1, dropRowObject);\n }\n else if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n }\n else if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n this.parent.trigger(events.actionComplete, args);\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection) && !this.parent.selectionSettings.checkboxOnly) {\n if (this.parent.editSettings.mode !== 'Dialog') {\n this.parent.selectRow(this.rowIndex > -1 ? this.rowIndex : this.editRowIndex);\n }\n }\n if (this.parent.aggregates.length && this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length\n && (this.parent.groupModule.getGroupAggregateTemplates(true).length\n || this.parent.groupModule.getGroupAggregateTemplates(false).length)) {\n return;\n }\n this.parent.removeMaskRow();\n this.parent.hideSpinner();\n };\n NormalEdit.prototype.closeForm = function () {\n if (!this.cloneRow && this.parent.isEdit) {\n this.stopEditStatus();\n }\n if (this.cloneRow) {\n this.cloneRow.remove();\n this.cloneRow = null;\n this.originalRow.classList.remove('e-hiddenrow');\n }\n if (this.cloneFrozen) {\n this.cloneFrozen.remove();\n if (this.frozen) {\n this.frozen.classList.remove('e-hiddenrow');\n }\n }\n };\n NormalEdit.prototype.blazorTemplate = function () {\n var cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (var i = 0; i < cols.length; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n };\n NormalEdit.prototype.editFailure = function (e) {\n this.parent.removeMaskRow();\n this.parent.trigger(events.actionFailure, ({ error: e }));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n };\n NormalEdit.prototype.needRefresh = function () {\n var refresh = true;\n var editedRow = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow) {\n refresh = false;\n }\n return refresh;\n };\n NormalEdit.prototype.refreshRow = function (data) {\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(events.refreshVirtualCache, { data: data });\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row.refresh(rowObj, this.parent.getColumns(), true);\n }\n var tr = [].slice.call(this.parent.element.querySelectorAll('[data-rowindex=\"' + rowObj.index + '\"]'));\n for (var i = 0; i < tr.length; i++) {\n addFixedColumnBorder(tr[parseInt(i.toString(), 10)]);\n if (this.parent.enableColumnVirtualization &&\n tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-rightfreeze,.e-fixedfreeze').length) {\n var cols = this.parent.getColumns();\n var leftrightCells = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-rightfreeze.e-fixedfreeze'));\n for (var j = 0; j < leftrightCells.length; j++) {\n if (leftrightCells[parseInt(j.toString(), 10)].classList.contains('e-leftfreeze')) {\n leftrightCells[parseInt(j.toString(), 10)].style.left = (cols[parseInt(j.toString(), 10)].valueX - this.parent.translateX) + 'px';\n }\n else if (leftrightCells[parseInt(j.toString(), 10)].classList.contains('e-rightfreeze')) {\n var idx = parseInt(leftrightCells[parseInt(j.toString(), 10)].getAttribute('data-colindex'), 10);\n leftrightCells[parseInt(j.toString(), 10)].style.right = ((cols[parseInt(idx.toString(), 10)].valueX + this.parent.translateX)) + 'px';\n }\n else {\n leftrightCells[parseInt(j.toString(), 10)].style.left = (this.parent.leftrightColumnWidth('left') -\n this.parent.translateX) + 'px';\n leftrightCells[parseInt(j.toString(), 10)].style.right = (this.parent.leftrightColumnWidth('right') +\n this.parent.translateX) + 'px';\n }\n }\n }\n }\n }\n };\n NormalEdit.prototype.closeEdit = function () {\n var _this = this;\n if (!this.parent.isEdit || (this.parent.editSettings.showAddNewRow && this.parent.element.querySelector('.e-addedrow') &&\n isNullOrUndefined(this.parent.element.querySelector('.' + literals.editedRow)))) {\n if (this.parent.editSettings.showAddNewRow) {\n this.disabledShowAddRow(true, true);\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n return;\n }\n var gObj = this.parent;\n var args = extend(this.args, {\n requestType: 'cancel', type: events.actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(events.virtualScrollEditCancel, args);\n this.blazorTemplate();\n gObj.trigger(events.actionBegin, args, function (closeEditArgs) {\n if (closeEditArgs.cancel) {\n return;\n }\n if (_this.parent.editSettings.mode === 'Dialog') {\n _this.parent.notify(events.dialogDestroy, {});\n }\n closeEditArgs.type = events.actionComplete;\n if (!_this.parent.editSettings.showAddNewRow) {\n gObj.isEdit = false;\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n _this.refreshRow(closeEditArgs.data);\n }\n _this.stopEditStatus();\n gObj.isEdit = false;\n if (gObj.editSettings.showAddNewRow) {\n _this.disabledShowAddRow(true);\n gObj.editModule.applyFormValidation();\n gObj.isEdit = true;\n }\n var isLazyLoad = gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length\n && !gObj.getContentTable().querySelector('tr.e-emptyrow');\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row') && !isLazyLoad) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(_this.rowIndex);\n }\n gObj.trigger(events.actionComplete, closeEditArgs);\n });\n };\n NormalEdit.prototype.addRecord = function (data, index) {\n var _this = this;\n var gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(events.modelChanged, {\n requestType: 'save', type: events.actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n var cols = gObj.getColumns();\n var rowData = { virtualData: {}, isScroll: false };\n if (!gObj.editSettings.showAddNewRow) {\n this.parent.notify(events.getVirtualData, rowData);\n }\n for (var i = 0; i < cols.length; i++) {\n if (rowData.isScroll) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].field) {\n if (cols[parseInt(i.toString(), 10)].type === 'string') {\n cols[parseInt(i.toString(), 10)].defaultValue = this.parent.sanitize(cols[parseInt(i.toString(), 10)].defaultValue);\n }\n DataUtil.setValue(cols[parseInt(i.toString(), 10)].field, cols[parseInt(i.toString(), 10)].defaultValue, this.previousData);\n }\n }\n var args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: events.actionBegin, index: index,\n rowData: this.previousData, target: undefined, isScroll: rowData.isScroll\n };\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n if (gObj.editSettings.showAddNewRow) {\n this.inlineAddHandler(args);\n }\n else {\n gObj.trigger(events.actionBegin, args, function (addArgs) {\n if (addArgs.cancel) {\n return;\n }\n _this.inlineAddHandler(addArgs);\n });\n }\n }\n else {\n this.inlineAddHandler(args);\n }\n };\n NormalEdit.prototype.inlineAddHandler = function (addArgs) {\n var gObj = this.parent;\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = events.actionComplete;\n addArgs.row = gObj.element.querySelector('.' + literals.addedRow);\n if (!gObj.editSettings.showAddNewRow) {\n gObj.trigger(events.actionComplete, addArgs);\n }\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, addArgs.form.ej2_instances[0].rules);\n }\n this.args = addArgs;\n };\n NormalEdit.prototype.deleteRecord = function (fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n var gObj = this.parent;\n var dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n var _loop_2 = function (i) {\n var _a;\n var tmpRecord;\n var contained = gObj.currentViewData.some(function (record) {\n tmpRecord = record;\n return data[parseInt(i.toString(), 10)] === getObject(fieldname, record) || data[parseInt(i.toString(), 10)] === record;\n });\n data[parseInt(i.toString(), 10)] = contained ? tmpRecord : data[parseInt(i.toString(), 10)][\"\" + fieldname] ?\n data[parseInt(i.toString(), 10)] : (_a = {}, _a[fieldname] = data[parseInt(i.toString(), 10)], _a);\n };\n for (var i = 0; i < dataLen; i++) {\n _loop_2(i);\n }\n }\n var args = {\n requestType: 'delete', type: events.actionBegin, foreignKeyData: {},\n data: data ? data : this.parent.getSelectedRecords(), tr: this.parent.getSelectedRows(), cancel: false\n };\n if (!isNullOrUndefined(this.parent.commandDelIndex)) {\n args.data[0] =\n this.parent.getRowObjectFromUID(this.parent.getRowByIndex(this.parent.commandDelIndex).getAttribute('data-uid')).data;\n }\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && args.data.length > 1) {\n var uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n args.data = [this.parent.getRowObjectFromUID(uid).data];\n }\n this.parent.notify(events.modelChanged, args);\n };\n NormalEdit.prototype.stopEditStatus = function () {\n var gObj = this.parent;\n var addElements = [].slice.call(gObj.editSettings.showAddNewRow ? [] :\n gObj.element.getElementsByClassName(literals.addedRow));\n var editElements = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow));\n for (var i = 0; i < addElements.length; i++) {\n remove(addElements[parseInt(i.toString(), 10)]);\n }\n for (var i = 0; i < editElements.length; i++) {\n editElements[parseInt(i.toString(), 10)].classList.remove(literals.editedRow);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.crudAction, handler: this.editHandler },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.click, handler: this.clickHandler },\n { event: events.recordAdded, handler: this.requestSuccess },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.deleteComplete, handler: this.editComplete },\n { event: events.saveComplete, handler: this.editComplete },\n { event: events.rowModeChange, handler: this.closeEdit },\n { event: events.closeInline, handler: this.closeForm }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.destroy = function () {\n this.removeEventListener();\n this.renderer.destroy();\n };\n return NormalEdit;\n}());\nexport { NormalEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `InlineEdit` module is used to handle inline editing actions.\n *\n * @hidden\n */\nvar InlineEdit = /** @class */ (function (_super) {\n __extends(InlineEdit, _super);\n function InlineEdit(parent, serviceLocator, renderer) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n InlineEdit.prototype.closeEdit = function () {\n _super.prototype.closeEdit.call(this);\n };\n InlineEdit.prototype.addRecord = function (data, index) {\n _super.prototype.addRecord.call(this, data, index);\n };\n InlineEdit.prototype.endEdit = function () {\n _super.prototype.endEdit.call(this);\n };\n InlineEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n InlineEdit.prototype.deleteRecord = function (fieldname, data) {\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n InlineEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return InlineEdit;\n}(NormalEdit));\nexport { InlineEdit };\n","import { extend, addClass, removeClass, setValue, closest, select, EventHandler } from '@syncfusion/ej2-base';\nimport { remove, classList } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { parentsUntil, refreshForeignData, getObject, addRemoveEventListener, getCellFromRow } from '../base/util';\nimport { getCellByColAndRowIndex, addFixedColumnBorder } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.initialRender = true;\n this.validationColObj = [];\n /** @hidden */\n this.addBatchRow = false;\n this.prevEditedBatchCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.click, handler: this.clickHandler },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.beforeCellFocused, handler: this.onBeforeCellFocused },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.keyPressed, handler: this.keyDownHandler },\n { event: events.editNextValCell, handler: this.editNextValCell },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n EventHandler.add(this.parent.element, 'mousedown', this.mouseDownHandler, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.addEventListener(events.batchCancel, this.batchCancelFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n EventHandler.remove(this.parent.element, 'mousedown', this.mouseDownHandler);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(events.batchCancel, this.batchCancelFunction);\n };\n BatchEdit.prototype.batchCancel = function () {\n this.parent.focusModule.restoreFocus();\n };\n BatchEdit.prototype.dataBound = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n BatchEdit.prototype.mouseDownHandler = function (e) {\n if (!isNullOrUndefined(this.parent.element.querySelector('.e-gridform'))) {\n this.mouseDownElement = e.target;\n }\n else {\n this.mouseDownElement = undefined;\n }\n };\n BatchEdit.prototype.clickHandler = function (e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if ((this.parent.isEdit && closest(this.form, 'td') !== closest(e.target, 'td'))\n && isNullOrUndefined(this.mouseDownElement) || this.mouseDownElement === e.target) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, literals.rowCell) && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n };\n BatchEdit.prototype.dblClickHandler = function (e) {\n var target = parentsUntil(e.target, literals.rowCell);\n var tr = parentsUntil(e.target, literals.row);\n var rowIndex = tr && parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n var colIndex = target && parseInt(target.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(target) && !isNullOrUndefined(rowIndex) && !isNaN(colIndex)\n && !target.parentElement.classList.contains(literals.editedRow) &&\n this.parent.getColumns()[parseInt(colIndex.toString(), 10)].allowEditing) {\n this.editCell(rowIndex, this.parent.getColumns()[parseInt(colIndex.toString(), 10)].field, this.isAddRow(rowIndex));\n }\n };\n BatchEdit.prototype.onBeforeCellFocused = function (e) {\n if (this.parent.isEdit && this.validateFormObj() &&\n (e.byClick || (['tab', 'shiftTab', 'enter', 'shiftEnter'].indexOf(e.keyArgs.action) > -1))) {\n e.cancel = true;\n if (e.byClick) {\n e.clickArgs.preventDefault();\n }\n else {\n e.keyArgs.preventDefault();\n }\n }\n };\n BatchEdit.prototype.onCellFocused = function (e) {\n var clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (this.parent.focusModule.active) {\n this.prevEditedBatchCell = this.parent.focusModule.active.matrix.current.toString() === this.prevEditedBatchCellMatrix()\n .toString();\n this.crtRowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(closest(e.element, 'tr'));\n }\n if (!e.byKey || clear) {\n if ((this.parent.isEdit && clear)) {\n this.saveCell();\n }\n return;\n }\n var _a = e.container.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var actualIndex = e.element.getAttribute('data-colindex') ? parseInt(e.element.getAttribute('data-colindex'), 10) : cellIndex;\n if (actualIndex !== cellIndex) {\n cellIndex = actualIndex;\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += ((this.parent.getContent().querySelector('.e-hiddenrow') ? 0 : this.parent.frozenRows) +\n this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length);\n }\n var isEdit = this.parent.isEdit;\n if (!this.parent.element.getElementsByClassName('e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n // eslint-disable-next-line no-case-declarations\n var indent = this.parent.isRowDragable() && this.parent.isDetail() ? 2 :\n this.parent.isRowDragable() || this.parent.isDetail() ? 1 : 0;\n // eslint-disable-next-line no-case-declarations\n var col = this.parent.getColumns()[cellIndex - indent];\n if (col && !this.parent.isEdit) {\n this.editCell(rowIndex, col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n // eslint-disable-next-line no-case-declarations\n var args = { cancel: false, keyArgs: e.keyArgs };\n this.parent.notify('beforeFocusCellEdit', args);\n if (!args.cancel && isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n };\n BatchEdit.prototype.isAddRow = function (index) {\n return this.parent.getDataRows()[parseInt(index.toString(), 10)].classList.contains('e-insertedrow');\n };\n BatchEdit.prototype.editCellFromIndex = function (rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[parseInt(cellIdx.toString(), 10)].field, this.isAddRow(rowIdx));\n };\n BatchEdit.prototype.closeEdit = function () {\n var gObj = this.parent;\n var rows = this.parent.getRowsObject();\n var argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(events.beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n for (var i = 0; i < rows.length; i++) {\n var isInsert = false;\n var isDirty = rows[parseInt(i.toString(), 10)].isDirty;\n isInsert = this.removeBatchElementChanges(rows[parseInt(i.toString(), 10)], isDirty);\n if (isInsert) {\n rows.splice(i, 1);\n }\n if (isInsert) {\n i--;\n }\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n var args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n gObj.notify(events.batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.notify(events.toolbarRefresh, {});\n this.parent.notify(events.tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(events.batchCancel, args);\n };\n BatchEdit.prototype.removeBatchElementChanges = function (row, isDirty) {\n var gObj = this.parent;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInstertedRemoved = false;\n if (isDirty) {\n row.isDirty = isDirty;\n var tr = gObj.getRowElementByUID(row.uid);\n if (tr) {\n if (tr.classList.contains('e-insertedrow')) {\n remove(tr);\n isInstertedRemoved = true;\n }\n else {\n refreshForeignData(row, this.parent.getForeignKeyColumns(), row.data);\n delete row.changes;\n delete row.edit;\n row.isDirty = false;\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(row, gObj.getColumns(), false);\n }\n if (this.parent.aggregates.length > 0) {\n var type = 'type';\n var editType = [];\n editType[\"\" + type] = 'cancel';\n this.parent.notify(events.refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, editType);\n }\n }\n }\n }\n return isInstertedRemoved;\n };\n BatchEdit.prototype.deleteRecord = function (fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n if (!(this.parent.isReact || this.parent.isVue)) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, {});\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n }\n };\n BatchEdit.prototype.addRecord = function (data) {\n this.bulkAddRow(data);\n };\n BatchEdit.prototype.endEdit = function () {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n };\n BatchEdit.prototype.validateFormObj = function () {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n };\n BatchEdit.prototype.batchSave = function () {\n var gObj = this.parent;\n var deletedRecords = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n var checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n var changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[\"\" + deletedRecords].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[\"\" + deletedRecords] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n var original = {\n changedRecords: this.parent.getRowsObject()\n .filter(function (row) { return row.isDirty && ['add', 'delete'].indexOf(row.edit) === -1; })\n .map(function (row) { return row.data; })\n };\n var args = { batchChanges: changes, cancel: false };\n gObj.trigger(events.beforeBatchSave, args, function (beforeBatchSaveArgs) {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.bulkSave, { changes: changes, original: original });\n });\n };\n BatchEdit.prototype.getBatchChanges = function () {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var rows = this.parent.getRowsObject();\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isDirty) {\n switch (row.edit) {\n case 'add':\n changes.addedRecords.push(row.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row.data);\n break;\n default:\n changes.changedRecords.push(row.changes);\n }\n }\n }\n return changes;\n };\n /**\n * @param {string} uid - specifes the uid\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeRowObjectFromUID = function (uid) {\n var rows = this.parent.getRowsObject();\n var i = 0;\n for (var len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].uid === uid) {\n break;\n }\n }\n rows.splice(i, 1);\n };\n /**\n * @param {Row} row - specifies the row object\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addRowObject = function (row) {\n var gObj = this.parent;\n var isTop = gObj.editSettings.newRowPosition === 'Top';\n var rowClone = row.clone();\n if (isTop) {\n gObj.getRowsObject().unshift(rowClone);\n }\n else {\n gObj.getRowsObject().push(rowClone);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkDelete = function (fieldname, data) {\n var _this = this;\n this.removeSelectedData = [];\n var gObj = this.parent;\n var index = gObj.selectedRowIndex;\n var selectedRows = gObj.getSelectedRows();\n var args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeBatchDelete, args, function (beforeBatchDeleteArgs) {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n _this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[parseInt(index.toString(), 10)] : selectedRows[0];\n if (selectedRows.length === 1 || data) {\n var uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && _this.parent.editModule.deleteRowUid ? uid = _this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute(literals.dataRowIndex), 10);\n }\n for (var i = 0; i < selectedRows.length; i++) {\n var uniqueid = selectedRows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (selectedRows[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[parseInt(i.toString(), 10)]);\n }\n else {\n classList(selectedRows[parseInt(i.toString(), 10)], ['e-hiddenrow', 'e-updatedtd'], []);\n var selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[parseInt(i.toString(), 10)];\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n }\n }\n _this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n }\n if (!gObj.isCheckBoxSelection) {\n gObj.selectRow(index);\n }\n gObj.trigger(events.batchDelete, beforeBatchDeleteArgs);\n gObj.notify(events.batchDelete, { rows: _this.parent.getRowsObject() });\n gObj.notify(events.toolbarRefresh, {});\n });\n };\n BatchEdit.prototype.refreshRowIdx = function () {\n var gObj = this.parent;\n var rows = gObj.getAllDataRows(true);\n var dataObjects = gObj.getRowsObject().filter(function (row) { return !row.isDetailRow; });\n for (var i = 0, j = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow')) {\n rows[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, j.toString());\n rows[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (j + 1).toString());\n dataObjects[parseInt(i.toString(), 10)].index = j;\n j++;\n }\n else {\n rows[parseInt(i.toString(), 10)].removeAttribute(literals.dataRowIndex);\n rows[parseInt(i.toString(), 10)].removeAttribute(literals.ariaRowIndex);\n dataObjects[parseInt(i.toString(), 10)].index = -1;\n }\n }\n };\n BatchEdit.prototype.bulkAddRow = function (data) {\n var _this = this;\n var gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n if (gObj.isEdit) {\n this.saveCell();\n }\n return;\n }\n if (gObj.isEdit) {\n this.saveCell();\n this.parent.notify(events.editNextValCell, {});\n }\n if (this.validateFormObj()) {\n return;\n }\n if (this.initialRender) {\n var visibleColumns = gObj.getVisibleColumns();\n for (var i = 0; i < visibleColumns.length; i++) {\n if (visibleColumns[parseInt(i.toString(), 10)].validationRules &&\n visibleColumns[parseInt(i.toString(), 10)].validationRules['required']) {\n var obj = { field: (visibleColumns[parseInt(i.toString(), 10)]['field']).slice(), cellIdx: i };\n this.validationColObj.push(obj);\n }\n }\n this.initialRender = false;\n }\n this.parent.element.classList.add('e-editing');\n var defaultData = data ? data : this.getDefaultData();\n var args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(events.beforeBatchAdd, args, function (beforeBatchAddArgs) {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n _this.isAdded = true;\n gObj.clearSelection();\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n var tr = row.render(modelData[0], gObj.getColumns());\n addFixedColumnBorder(tr);\n var col;\n var index;\n for (var i = 0; i < _this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n var tbody = gObj.getContentTable().querySelector(literals.tbody);\n tr.classList.add('e-insertedrow');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-empty')) {\n gObj.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody = gObj.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = gObj.getContentTable().querySelector(literals.tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(tr, tbody.firstChild);\n }\n else {\n tbody.appendChild(tr);\n }\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0]);\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject() });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[literals.addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey,\n cell: !isNullOrUndefined(index) ? tr.cells[parseInt(index.toString(), 10)] : undefined\n };\n gObj.trigger(events.batchAdd, args1);\n });\n };\n BatchEdit.prototype.findNextEditableCell = function (columnIndex, isAdd, isValOnly) {\n var cols = this.parent.getColumns();\n var endIndex = cols.length;\n var validation;\n for (var i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[parseInt(i.toString(), 10)].validationRules) : false;\n // if (!isAdd && this.checkNPCell(cols[parseInt(i.toString(), 10)])) {\n // return i;\n // } else\n if (isAdd && (!cols[parseInt(i.toString(), 10)].template || cols[parseInt(i.toString(), 10)].field)\n && cols[parseInt(i.toString(), 10)].allowEditing && cols[parseInt(i.toString(), 10)].visible &&\n !(cols[parseInt(i.toString(), 10)].isIdentity && cols[parseInt(i.toString(), 10)].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n };\n BatchEdit.prototype.getDefaultData = function () {\n var gObj = this.parent;\n var data = {};\n var dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field) {\n setValue(col.field, Object.keys(col).indexOf('defaultValue') >= 0 ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n };\n BatchEdit.prototype.setCellIdx = function (target) {\n var gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n };\n BatchEdit.prototype.editCell = function (index, field, isAdd) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n var checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index && this.prevEditedBatchCell));\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex].classList.contains('e-insertedrow')))) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n };\n BatchEdit.prototype.editCellExtend = function (index, field, isAdd) {\n var _this = this;\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n var rowData = extend({}, {}, this.getDataByIndex(index), true);\n var row = gObj.getDataRows()[parseInt(index.toString(), 10)];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n if ((keys[0] === col.field && !row.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity) || col.commands) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n var rowObj = gObj.getRowObjectFromUID(row.getAttribute('data-uid'));\n var cells = [].slice.apply(row.cells);\n var args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n gObj.trigger(events.cellEdit, args, function (cellEditArgs) {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[_this.getColIndex(cells, _this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n // cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n _this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute(literals.dataColIndex), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n _this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(_this.cellDetails.rowIndex, true);\n }\n _this.renderer.update(cellEditArgs);\n _this.parent.notify(events.batchEditFormRendered, cellEditArgs);\n _this.form = select('#' + gObj.element.id + 'EditForm', gObj.element);\n gObj.editModule.applyFormValidation([col]);\n _this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n };\n BatchEdit.prototype.updateCell = function (rowIndex, field, value) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var index = gObj.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey && col.allowEditing) {\n var td_1 = this.parent.isSpan ? getCellFromRow(gObj, rowIndex, index) :\n getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n if (this.parent.isSpan && !td_1) {\n return;\n }\n var rowObj_1 = gObj.getRowObjectFromUID(td_1.parentElement.getAttribute('data-uid'));\n if (gObj.isEdit ||\n (!rowObj_1.changes && ((!(value instanceof Date) && rowObj_1.data['' + field] !== value) ||\n ((value instanceof Date) && new Date(rowObj_1.data['' + field]).toString() !== new Date(value).toString()))) ||\n (rowObj_1.changes && ((!(value instanceof Date) && rowObj_1.changes['' + field] !== value) ||\n ((value instanceof Date) && new Date(rowObj_1.changes['' + field]).toString() !== new Date(value).toString())))) {\n this.refreshTD(td_1, col, rowObj_1, value);\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && col.template) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n var newReactTd_1 = this.newReactTd;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.queryCellInfo, {\n cell: newReactTd_1 || td_1, column: col, data: rowObj_1.changes\n });\n });\n }\n else if ((this.parent.isReact || isReactChild) && col.template) {\n this.parent.renderTemplates();\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\n }\n else {\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\n }\n }\n }\n };\n BatchEdit.prototype.setChanges = function (rowObj, field, value) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n if (typeof value === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[\"\" + field] !== value) {\n var type = this.parent.getColumnByField(field).type;\n if ((type === 'date' || type === 'datetime')) {\n if (new Date(rowObj.data[\"\" + field]).toString() !== new Date(value).toString()) {\n rowObj.isDirty = true;\n }\n }\n else {\n rowObj.isDirty = true;\n }\n }\n };\n BatchEdit.prototype.updateRow = function (index, data) {\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var col = keys_1[_i];\n this.updateCell(index, col, data[\"\" + col]);\n }\n };\n BatchEdit.prototype.getCellIdx = function (uid) {\n var cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n };\n BatchEdit.prototype.refreshTD = function (td, column, rowObj, value) {\n var cell = new CellRenderer(this.parent, this.serviceLocator);\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n if (rowObj) {\n this.setChanges(rowObj, column.field, value);\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n }\n var rowcell = rowObj ? rowObj.cells : undefined;\n var parentElement;\n var cellIndex;\n if (this.parent.isReact) {\n parentElement = td.parentElement;\n cellIndex = td.cellIndex;\n }\n var index = 0;\n if (rowObj) {\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - index], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n }\n if (this.parent.isReact) {\n this.newReactTd = parentElement.cells[parseInt(cellIndex.toString(), 10)];\n parentElement.cells[parseInt(cellIndex.toString(), 10)].classList.add('e-updatedtd');\n }\n else {\n td.classList.add('e-updatedtd');\n }\n td.classList.add('e-updatedtd');\n this.parent.notify(events.toolbarRefresh, {});\n };\n BatchEdit.prototype.getColIndex = function (cells, index) {\n var cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n };\n BatchEdit.prototype.editNextValCell = function () {\n var gObj = this.parent;\n var insertedRows = gObj.element.querySelectorAll('.e-insertedrow');\n var isSingleInsert = insertedRows.length === 1 ? true : false;\n if (isSingleInsert && this.isAdded && !gObj.isEdit) {\n var btmIdx = this.getBottomIndex();\n for (var i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n var index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n var col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (col) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n this.editCell(btmIdx, col.field, true);\n }\n else {\n var args = { index: 0, column: col };\n this.parent.notify(events.nextCellIndex, args);\n this.editCell(args.index, col.field, true);\n }\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n else if (!isSingleInsert && this.isAdded && !gObj.isEdit) {\n for (var i = 0; i < insertedRows.length; i++) {\n if (!gObj.isEdit) {\n for (var j = 0; j < this.validationColObj.length; j++) {\n if (gObj.isEdit) {\n break;\n }\n else if (insertedRows[parseInt(i.toString(), 10)].querySelectorAll('td:not(.e-hide)')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx].innerHTML === '') {\n this.editCell(parseInt(insertedRows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10), this.validationColObj[parseInt(j.toString(), 10)].field);\n if (this.validateFormObj()) {\n this.saveCell();\n }\n }\n }\n }\n else {\n break;\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n };\n BatchEdit.prototype.escapeCellEdit = function () {\n var args = this.generateCellArgs();\n args.value = args.previousValue;\n if (args.value || !this.cellDetails.column.validationRules) {\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n }\n };\n BatchEdit.prototype.generateCellArgs = function () {\n var gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n var column = this.cellDetails.column;\n var obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n var editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n var cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n var value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n var args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n args.cell = this.form.parentElement;\n args.columnObject = column;\n return args;\n };\n BatchEdit.prototype.saveCell = function (isForceSave) {\n if (this.preventSaveCell || !this.form) {\n return;\n }\n var gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n var args = this.generateCellArgs();\n var tr = args.cell.parentElement;\n var col = args.column;\n args.cell.removeAttribute('aria-label');\n if (!isForceSave) {\n gObj.trigger(events.cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(events.batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n };\n BatchEdit.prototype.successCallBack = function (cellSaveArgs, tr, column, isEscapeCellEdit) {\n var _this = this;\n return function (cellSaveArgs) {\n var gObj = _this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : _this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n // cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n _this.parent.notify(events.tooltipDestroy, {});\n var rowObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n _this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n if (_this.parent.isReact) {\n cellSaveArgs.cell = _this.newReactTd;\n }\n removeClass([tr], [literals.editedRow, 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString() && !_this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(rowObj.data[column.field]) &&\n isNullOrUndefined(_this.cellDetails.value) && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n var isReactCompiler = gObj.isReact && column.template && typeof (column.template) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj\n && gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n if (gObj.requireTemplateRef) {\n gObj.renderTemplates(function () {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n });\n }\n else {\n gObj.renderTemplates();\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n }\n else {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n }\n gObj.notify(events.toolbarRefresh, {});\n _this.isColored = false;\n if (_this.parent.aggregates.length > 0) {\n if (!(_this.parent.isReact || _this.parent.isVue)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n if (_this.parent.groupSettings.columns.length > 0 && !_this.isAddRow(_this.cellDetails.rowIndex)) {\n _this.parent.notify(events.groupAggregates, {});\n }\n if (_this.parent.isReact || _this.parent.isVue) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n }\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field && _this.prevEditedBatchCell) {\n return;\n }\n var col = gObj.getColumnByField(_this.field);\n if (col && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex].classList.contains('e-insertedrow')))) {\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(events.restoreFocus, {});\n }\n };\n };\n BatchEdit.prototype.prevEditedBatchCellMatrix = function () {\n var editedBatchCellMatrix = [];\n var gObj = this.parent;\n var editedBatchCell = gObj.focusModule.active.getTable().querySelector('.e-editedbatchcell');\n if (editedBatchCell) {\n var tr = editedBatchCell.parentElement;\n var rowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(tr);\n var cellIndex = [].slice.call(tr.cells).indexOf(editedBatchCell);\n editedBatchCellMatrix = [rowIndex, cellIndex];\n }\n return editedBatchCellMatrix;\n };\n BatchEdit.prototype.getDataByIndex = function (index) {\n var row = this.parent.getRowObjectFromUID(this.parent.getDataRows()[parseInt(index.toString(), 10)].getAttribute('data-uid'));\n return row.changes ? row.changes : row.data;\n };\n BatchEdit.prototype.keyDownHandler = function (e) {\n if (this.addBatchRow || ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit)) {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n var rowcell = parentsUntil(e.target, literals.rowCell);\n if (this.addBatchRow || (rowcell && !this.parent.isReact)) {\n var cell = void 0;\n if (rowcell) {\n cell = rowcell.querySelector('.e-field');\n }\n if (this.addBatchRow || cell) {\n var visibleColumns = this.parent.getVisibleColumns();\n var columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (this.addBatchRow\n || visibleColumns[parseInt(columnIndex.toString(), 10)].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n this.addBatchRow = false;\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addCancelWhilePaging = function () {\n if (this.validateFormObj()) {\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.editNext = false;\n this.mouseDownElement = undefined;\n this.isColored = false;\n }\n };\n BatchEdit.prototype.getBottomIndex = function () {\n var changes = this.getBatchChanges();\n return this.parent.getCurrentViewRecords().length + changes[literals.addedRecords].length -\n changes[literals.deletedRecords].length - 1;\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `DialogEdit` module is used to handle dialog editing actions.\n *\n * @hidden\n */\nvar DialogEdit = /** @class */ (function (_super) {\n __extends(DialogEdit, _super);\n function DialogEdit(parent, serviceLocator, renderer) {\n var _this = \n //constructor\n _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n DialogEdit.prototype.closeEdit = function () {\n //closeEdit\n _super.prototype.closeEdit.call(this);\n };\n DialogEdit.prototype.addRecord = function (data, index) {\n //addRecord\n _super.prototype.addRecord.call(this, data, index);\n };\n DialogEdit.prototype.endEdit = function () {\n //endEdit\n _super.prototype.endEdit.call(this);\n };\n DialogEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n DialogEdit.prototype.deleteRecord = function (fieldname, data) {\n //deleteRecord\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n DialogEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return DialogEdit;\n}(NormalEdit));\nexport { DialogEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.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(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)\n && (!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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar CONTENTTABLE = 'e-calendar-content-table';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar FOCUSEDCELL = 'e-focused-cell';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n var tabIndexAttr = { 'tabindex': '0' };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n attributes(this.previousIcon, tabIndexAttr);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n attributes(this.nextIcon, tabIndexAttr);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n attributes(this.headerTitleElement, tabIndexAttr);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { 'class': CONTENTTABLE, 'tabIndex': '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n if (this.getModuleName() != 'daterangepicker') {\n EventHandler.add(this.table, 'focus', this.addContentFocus, this);\n EventHandler.add(this.table, 'blur', this.removeContentFocus, this);\n }\n };\n CalendarBase.prototype.addContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.add(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.add(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.removeContentFocus = function (args) {\n var focusedDate = !isNullOrUndefined(this.tableBodyElement) ? this.tableBodyElement.querySelector('tr td.e-focused-date') : null;\n var selectedDate = !isNullOrUndefined(this.tableBodyElement) ? this.tableBodyElement.querySelector('tr td.e-selected') : null;\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.remove(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.remove(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n this.todayElement.setAttribute('tabindex', '0');\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveRight':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveUp':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n }\n break;\n case 'select':\n if (e.target === this.headerTitleElement) {\n this.navigateTitle(e);\n }\n else if (e.target === this.previousIcon) {\n this.navigatePrevious(e);\n }\n else if (e.target === this.nextIcon) {\n this.navigateNext(e);\n }\n else if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n case 'tab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.todayElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n case 'shiftTab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.headerTitleElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n dayLink.setAttribute('aria-disabled', 'true');\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n dayLink.setAttribute('aria-disabled', 'true');\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n var title = this.globalize.formatDate(localDate, { type: 'date', format: 'MMM y' });\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + title);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n dayLink.setAttribute('aria-disabled', 'true');\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + dayLink.textContent);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n if (this.getModuleName() === 'calendar') {\n var l10nLocale = { today: 'Today' };\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n }\n this.l10.setLocale(this.locale);\n if (this.showTodayButton) {\n this.updateFooter();\n }\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.todayButtonEvent = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n !Browser.isDevice && e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n !Browser.isDevice && eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n e && e.type === 'click' && e.currentTarget.classList.contains(OTHERMONTH) ? this.changeHandler(e) : this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n this.changedArgs = null;\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, Touch } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.isBlur = false;\n _this.isKeyAction = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false', 'aria-label': this.getModuleName()\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select', 'role': 'button' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyupHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'keyup', this.keyupHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))\n && (!target.classList.contains('e-dlg-overlay'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n {\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start === 0 && end === length_1) || (end !== length_1 && e.action === 'tab') || (start !== 0 && e.action === 'shiftTab')) {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n if (e.action === 'tab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n e.preventDefault();\n this.headerTitleElement.focus();\n }\n if (e.action === 'shiftTab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n break;\n }\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (((this.getModuleName() !== 'datetimepicker') && (+this.value !== +this.previousDate)) || ((this.getModuleName() === 'datetimepicker') && (+this.value !== +this.previousDateTime)))) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n else {\n format = this.formatString;\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n var modifiedValue = this.inputElement.value.replace(/(am|pm|Am|aM|pM|Pm)/g, function (match) { return match.toLocaleUpperCase(); });\n date = this.globalize.parseDate(modifiedValue, dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER, id: this.inputElement.id + '_options' });\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 (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : (this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' }),\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : (this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }),\n open: function () {\n if (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.TouchStartHandler, _this);\n }\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector(\"button.e-today\");\n h2.classList.add(\"e-day-wrapper\");\n modelTodayButton.classList.add(\"e-outline\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode)\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.modelCloseHandler = function (e) {\n this.hide();\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.keyupHandler = function (e) {\n this.isKeyAction = (this.inputElement.value !== this.previousElementValue) ? true : false;\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked && !(this.isBlur || this.isKeyAction)) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobilePopupWrapper.appendChild(dlgOverlay);\n }\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper) && (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n _super.prototype.destroy.call(this);\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-label': this.getModuleName()\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime', isBlur: isBlur\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n attributes(this.inputElement, { 'aria-controls': this.inputElement.id });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else if (!isNullOrUndefined(this.inputWrapper)) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.datepickerOptions && this.datepickerOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","import { L10n, getValue, getDefaultDateObject, cldrData } from '@syncfusion/ej2-base';\nvar ARROWLEFT = 'ArrowLeft';\nvar ARROWRIGHT = 'ArrowRight';\nvar ARROWUP = 'ArrowUp';\nvar ARROWDOWN = 'ArrowDown';\nvar TAB = 'Tab';\nvar SHIFTTAB = 'shiftTab';\nvar END = 'End';\nvar HOME = 'Home';\nvar MaskedDateTime = /** @class */ (function () {\n function MaskedDateTime(parent) {\n this.mask = '';\n this.defaultConstant = {\n day: 'day',\n month: 'month',\n year: 'year',\n hour: 'hour',\n minute: 'minute',\n second: 'second',\n dayOfTheWeek: 'day of the week'\n };\n this.hiddenMask = '';\n this.validCharacters = 'dMyhmHfasz';\n this.isDayPart = false;\n this.isMonthPart = false;\n this.isYearPart = false;\n this.isHourPart = false;\n this.isMinutePart = false;\n this.isSecondsPart = false;\n this.isMilliSecondsPart = false;\n this.monthCharacter = '';\n this.periodCharacter = '';\n this.isHiddenMask = false;\n this.isComplete = false;\n this.isNavigate = false;\n this.navigated = false;\n this.isBlur = false;\n this.formatRegex = /EEEEE|EEEE|EEE|EE|E|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|HH|H|hh|h|mm|m|fff|ff|f|aa|a|ss|s|zzzz|zzz|zz|z|'[^']*'|'[^']*'/g;\n this.isDeletion = false;\n this.isShortYear = false;\n this.isDeleteKey = false;\n this.isDateZero = false;\n this.isMonthZero = false;\n this.isYearZero = false;\n this.isLeadingZero = false;\n this.dayTypeCount = 0;\n this.monthTypeCount = 0;\n this.hourTypeCount = 0;\n this.minuteTypeCount = 0;\n this.secondTypeCount = 0;\n this.parent = parent;\n this.dateformat = this.getCulturedFormat();\n this.maskDateValue = this.parent.value != null ? new Date(+this.parent.value) : new Date();\n this.maskDateValue.setMonth(0);\n this.maskDateValue.setHours(0);\n this.maskDateValue.setMinutes(0);\n this.maskDateValue.setSeconds(0);\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.removeEventListener();\n this.addEventListener();\n }\n MaskedDateTime.prototype.getModuleName = function () {\n return 'MaskedDateTime';\n };\n MaskedDateTime.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('createMask', this.createMask, this);\n this.parent.on('setMaskSelection', this.validCharacterCheck, this);\n this.parent.on('inputHandler', this.maskInputHandler, this);\n this.parent.on('keyDownHandler', this.maskKeydownHandler, this);\n this.parent.on('clearHandler', this.clearHandler, this);\n };\n MaskedDateTime.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('createMask', this.createMask);\n this.parent.off('setMaskSelection', this.validCharacterCheck);\n this.parent.off('inputHandler', this.maskInputHandler);\n this.parent.off('keyDownHandler', this.maskKeydownHandler);\n this.parent.off('clearHandler', this.clearHandler);\n };\n MaskedDateTime.prototype.createMask = function (mask) {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.dateformat = this.getCulturedFormat();\n if (this.parent.maskPlaceholder.day) {\n this.defaultConstant['day'] = this.parent.maskPlaceholder.day;\n }\n if (this.parent.maskPlaceholder.month) {\n this.defaultConstant['month'] = this.parent.maskPlaceholder.month;\n }\n if (this.parent.maskPlaceholder.year) {\n this.defaultConstant['year'] = this.parent.maskPlaceholder.year;\n }\n if (this.parent.maskPlaceholder.hour) {\n this.defaultConstant['hour'] = this.parent.maskPlaceholder.hour;\n }\n if (this.parent.maskPlaceholder.minute) {\n this.defaultConstant['minute'] = this.parent.maskPlaceholder.minute;\n }\n if (this.parent.maskPlaceholder.second) {\n this.defaultConstant['second'] = this.parent.maskPlaceholder.second;\n }\n if (this.parent.maskPlaceholder.dayOfTheWeek) {\n this.defaultConstant['dayOfTheWeek'] = this.parent.maskPlaceholder.dayOfTheWeek.toString();\n }\n this.getCUltureMaskFormat();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.mask = this.previousValue = inputValue;\n this.parent.maskedDateValue = this.mask;\n if (this.parent.value) {\n this.navigated = true;\n this.isBlur = mask.isBlur;\n this.setDynamicValue();\n }\n };\n MaskedDateTime.prototype.getCUltureMaskFormat = function () {\n this.l10n = new L10n(this.parent.moduleName, this.defaultConstant, this.parent.locale);\n this.objectString = Object.keys(this.defaultConstant);\n for (var i = 0; i < this.objectString.length; i++) {\n this.defaultConstant[this.objectString[i].toString()] =\n this.l10n.getConstant(this.objectString[i].toString());\n }\n };\n MaskedDateTime.prototype.validCharacterCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n if (this.parent.moduleName !== 'timepicker') {\n if (start === this.hiddenMask.length && this.mask === this.parent.inputElement.value) {\n start = 0;\n }\n }\n for (var i = start, j = start - 1; i < this.hiddenMask.length || j >= 0; i++, j--) {\n if (i < this.hiddenMask.length && this.validCharacters.indexOf(this.hiddenMask[i]) !== -1) {\n this.setSelection(this.hiddenMask[i]);\n return;\n }\n if (j >= 0 && this.validCharacters.indexOf(this.hiddenMask[j]) !== -1) {\n this.setSelection(this.hiddenMask[j]);\n return;\n }\n }\n };\n MaskedDateTime.prototype.setDynamicValue = function () {\n this.maskDateValue = new Date(+this.parent.value);\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = true;\n this.updateValue();\n if (!this.isBlur) {\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.setSelection = function (validChar) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === validChar) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n this.parent.inputElement.setSelectionRange(start, end);\n };\n MaskedDateTime.prototype.maskKeydownHandler = function (args) {\n this.dayTypeCount = this.monthTypeCount = this.hourTypeCount = this.minuteTypeCount = this.secondTypeCount = 0;\n if (args.e.key === 'Delete') {\n this.isDeleteKey = true;\n return;\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWLEFT || args.e.key === ARROWRIGHT\n || args.e.key === SHIFTTAB || args.e.key === TAB || args.e.action === SHIFTTAB ||\n args.e.key === END || args.e.key === HOME)) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var length_1 = this.parent.inputElement.value.length;\n if ((start === 0 && end === length_1) && (args.e.key === TAB || args.e.action === SHIFTTAB)) {\n var index = args.e.action === SHIFTTAB ? end : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = index;\n }\n if (args.e.key === END || args.e.key === HOME) {\n var range = args.e.key === END ? length_1 : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = range;\n }\n this.navigateSelection(args.e.key === ARROWLEFT || args.e.action === SHIFTTAB || args.e.key === END ? true : false);\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWUP || args.e.key === ARROWDOWN)) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.dateAlteration(args.e.key === ARROWDOWN ? true : false);\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.isPersist = function () {\n var isPersist = this.parent.isFocused || this.navigated;\n return isPersist;\n };\n MaskedDateTime.prototype.differenceCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n var inputValue = this.parent.inputElement.value;\n var previousVal = this.previousValue.substring(0, start + this.previousValue.length - inputValue.length);\n var newVal = inputValue.substring(0, start);\n var newDateValue = new Date(+this.maskDateValue);\n var maxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (previousVal.indexOf(newVal) === 0 && (newVal.length === 0 ||\n this.previousHiddenMask[newVal.length - 1] !== this.previousHiddenMask[newVal.length])) {\n for (var i = newVal.length; i < previousVal.length; i++) {\n if (this.previousHiddenMask[i] !== '' && this.validCharacters.indexOf(this.previousHiddenMask[i]) >= 0) {\n this.isDeletion = this.handleDeletion(this.previousHiddenMask[i], false);\n }\n }\n if (this.isDeletion) {\n return;\n }\n }\n switch (this.previousHiddenMask[start - 1]) {\n case 'd':\n {\n var date = (this.isDayPart && newDateValue.getDate().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getDate() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.isDateZero = (newVal[start - 1] === '0');\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(date)) {\n return;\n }\n for (var i = 0; date > maxDate; i++) {\n date = parseInt(date.toString().slice(1), 10);\n }\n if (date >= 1) {\n newDateValue.setDate(date);\n this.isNavigate = date.toString().length === 2;\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n if (newDateValue.getMonth() !== this.maskDateValue.getMonth()) {\n return;\n }\n this.isDayPart = true;\n this.dayTypeCount = this.dayTypeCount + 1;\n }\n else {\n this.isDayPart = false;\n this.dayTypeCount = this.isDateZero ? this.dayTypeCount + 1 : this.dayTypeCount;\n }\n break;\n }\n case 'M':\n {\n var month = void 0;\n if (newDateValue.getMonth().toString().length < 2 && !this.isPersist()) {\n month = (this.isMonthPart ? (newDateValue.getMonth() + 1) * 10 : 0) + parseInt(newVal[start - 1], 10);\n }\n else {\n month = parseInt(newVal[start - 1], 10);\n }\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n this.isMonthZero = (newVal[start - 1] === '0');\n if (!isNaN(month)) {\n while (month > 12) {\n month = parseInt(month.toString().slice(1), 10);\n }\n if (month >= 1) {\n newDateValue.setMonth(month - 1);\n if (month >= 10 || month == 1) {\n if (this.isLeadingZero && month == 1) {\n this.isNavigate = month.toString().length === 1;\n this.isLeadingZero = false;\n }\n else {\n this.isNavigate = month.toString().length === 2;\n }\n }\n else {\n this.isNavigate = month.toString().length === 1;\n }\n if (newDateValue.getMonth() !== month - 1) {\n newDateValue.setDate(1);\n newDateValue.setMonth(month - 1);\n }\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isMonthPart = true;\n this.monthTypeCount = this.monthTypeCount + 1;\n }\n else {\n newDateValue.setMonth(0);\n this.isLeadingZero = true;\n this.isMonthPart = false;\n this.monthTypeCount = this.isMonthZero ? this.monthTypeCount + 1 : this.monthTypeCount;\n }\n }\n else {\n var monthString = (this.getCulturedValue('months[stand-alone].wide'));\n var monthValue = Object.keys(monthString);\n this.monthCharacter += newVal[start - 1].toLowerCase();\n while (this.monthCharacter.length > 0) {\n var i = 1;\n for (var _i = 0, monthValue_1 = monthValue; _i < monthValue_1.length; _i++) {\n var months = monthValue_1[_i];\n if (monthString[i].toLowerCase().indexOf(this.monthCharacter) === 0) {\n newDateValue.setMonth(i - 1);\n this.isMonthPart = true;\n this.maskDateValue = newDateValue;\n return;\n }\n i++;\n }\n this.monthCharacter = this.monthCharacter.substring(1, this.monthCharacter.length);\n }\n }\n break;\n }\n case 'y':\n {\n var year = (this.isYearPart && (newDateValue.getFullYear().toString().length < 4\n && !this.isShortYear) ? newDateValue.getFullYear() * 10 : 0) + parseInt(newVal[start - 1], 10);\n var yearValue = (this.dateformat.match(/y/g) || []).length;\n yearValue = yearValue !== 2 ? 4 : yearValue;\n this.isShortYear = false;\n this.isYearZero = (newVal[start - 1] === '0');\n if (isNaN(year)) {\n return;\n }\n while (year > 9999) {\n year = parseInt(year.toString().slice(1), 10);\n }\n if (year < 1) {\n this.isYearPart = false;\n }\n else {\n newDateValue.setFullYear(year);\n if (year.toString().length === yearValue) {\n this.isNavigate = true;\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isYearPart = true;\n }\n break;\n }\n case 'h':\n this.hour = (this.isHourPart && (newDateValue.getHours() % 12 || 12).toString().length < 2\n && !this.isPersist() ? (newDateValue.getHours() % 12 || 12) * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n while (this.hour > 12) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(Math.floor(newDateValue.getHours() / 12) * 12 + (this.hour % 12));\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'H':\n this.hour = (this.isHourPart && newDateValue.getHours().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getHours() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n for (var i = 0; this.hour > 23; i++) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(this.hour);\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'm':\n {\n var minutes = (this.isMinutePart && newDateValue.getMinutes().toString().length < 2\n && !this.isPersist() ? newDateValue.getMinutes() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(minutes)) {\n return;\n }\n for (var i = 0; minutes > 59; i++) {\n minutes = parseInt(minutes.toString().slice(1), 10);\n }\n newDateValue.setMinutes(minutes);\n this.isNavigate = minutes.toString().length === 2;\n this.isMinutePart = true;\n this.minuteTypeCount = this.minuteTypeCount + 1;\n break;\n }\n case 's':\n {\n var seconds = (this.isSecondsPart && newDateValue.getSeconds().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getSeconds() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(seconds)) {\n return;\n }\n for (var i = 0; seconds > 59; i++) {\n seconds = parseInt(seconds.toString().slice(1), 10);\n }\n newDateValue.setSeconds(seconds);\n this.isNavigate = seconds.toString().length === 2;\n this.isSecondsPart = true;\n this.secondTypeCount = this.secondTypeCount + 1;\n break;\n }\n case 'a':\n {\n this.periodCharacter += newVal[start - 1].toLowerCase();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var periodString = (this.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n for (var i = 0; this.periodCharacter.length > 0; i++) {\n if ((periodString[periodkeys[0]].toLowerCase().indexOf(this.periodCharacter) === 0\n && newDateValue.getHours() >= 12) || (periodString[periodkeys[1]].toLowerCase().\n indexOf(this.periodCharacter) === 0 && newDateValue.getHours() < 12)) {\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n this.maskDateValue = newDateValue;\n }\n this.periodCharacter = this.periodCharacter.substring(1, this.periodCharacter.length);\n }\n break;\n }\n default:\n break;\n }\n this.maskDateValue = newDateValue;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MaskedDateTime.prototype.formatCheck = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n function formatValueSpecifier(formattext) {\n var result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysAbbreviated = proxy.getCulturedValue('days[stand-alone].abbreviated');\n var dayKeyAbbreviated = Object.keys(daysAbbreviated);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysWide = (proxy.getCulturedValue('days[stand-alone].wide'));\n var dayKeyWide = Object.keys(daysWide);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysNarrow = (proxy.getCulturedValue('days[stand-alone].narrow'));\n var dayKeyNarrow = Object.keys(daysNarrow);\n var monthAbbreviated = (proxy.getCulturedValue('months[stand-alone].abbreviated'));\n var monthWide = (proxy.getCulturedValue('months[stand-alone].wide'));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var periodString = (proxy.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n var milliseconds;\n var dateOptions;\n switch (formattext) {\n case 'ddd':\n case 'dddd':\n case 'd':\n result = proxy.isDayPart ? proxy.maskDateValue.getDate().toString() : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'dd':\n result = proxy.isDayPart ? proxy.roundOff(proxy.maskDateValue.getDate(), 2) : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'E':\n case 'EE':\n case 'EEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysAbbreviated[dayKeyAbbreviated[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysWide[dayKeyWide[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysNarrow[dayKeyNarrow[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'M':\n result = proxy.isMonthPart ? (proxy.maskDateValue.getMonth() + 1).toString() : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MM':\n result = proxy.isMonthPart ? proxy.roundOff(proxy.maskDateValue.getMonth() + 1, 2) : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MMM':\n result = proxy.isMonthPart ? monthAbbreviated[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'MMMM':\n result = proxy.isMonthPart ? monthWide[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'yy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear() % 100, 2) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'y':\n case 'yyy':\n case 'yyyy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear(), 4) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'h':\n result = proxy.isHourPart ? (proxy.maskDateValue.getHours() % 12 || 12).toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'hh':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours() % 12 || 12, 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'H':\n result = proxy.isHourPart ? proxy.maskDateValue.getHours().toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'HH':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours(), 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'm':\n result = proxy.isMinutePart ? proxy.maskDateValue.getMinutes().toString() : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 'mm':\n result = proxy.isMinutePart ? proxy.roundOff(proxy.maskDateValue.getMinutes(), 2) : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 's':\n result = proxy.isSecondsPart ? proxy.maskDateValue.getSeconds().toString() : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'ss':\n result = proxy.isSecondsPart ? proxy.roundOff(proxy.maskDateValue.getSeconds(), 2) : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'f':\n result = Math.floor(proxy.maskDateValue.getMilliseconds() / 100).toString();\n break;\n case 'ff':\n milliseconds = proxy.maskDateValue.getMilliseconds();\n if (proxy.maskDateValue.getMilliseconds() > 99) {\n milliseconds = Math.floor(proxy.maskDateValue.getMilliseconds() / 10);\n }\n result = proxy.roundOff(milliseconds, 2);\n break;\n case 'fff':\n result = proxy.roundOff(proxy.maskDateValue.getMilliseconds(), 3);\n break;\n case 'a':\n case 'aa':\n result = proxy.maskDateValue.getHours() < 12 ? periodString[periodkeys[0]] : periodString[periodkeys[1]];\n break;\n case 'z':\n case 'zz':\n case 'zzz':\n case 'zzzz':\n dateOptions = {\n format: formattext,\n type: 'dateTime', skeleton: 'yMd', calendar: proxy.parent.calendarMode\n };\n result = proxy.parent.globalize.formatDate(proxy.maskDateValue, dateOptions);\n break;\n }\n result = result !== undefined ? result : formattext.slice(1, formattext.length - 1);\n if (proxy.isHiddenMask) {\n var hiddenChar = '';\n for (var i = 0; i < result.length; i++) {\n hiddenChar += formattext[0];\n }\n return hiddenChar;\n }\n else {\n return result;\n }\n }\n return formatValueSpecifier;\n };\n MaskedDateTime.prototype.maskInputHandler = function () {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.differenceCheck();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isDateZero = this.isMonthZero = this.isYearZero = false;\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n if ((this.isNavigate || this.isDeletion) && !this.isDeleteKey) {\n var isbackward = this.isNavigate ? false : true;\n this.isNavigate = this.isDeletion = false;\n this.navigateSelection(isbackward);\n }\n if (this.isDeleteKey) {\n this.isDeletion = false;\n }\n this.isDeleteKey = false;\n };\n MaskedDateTime.prototype.navigateSelection = function (isbackward) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var formatIndex = isbackward ? start - 1 : end;\n this.navigated = true;\n while (formatIndex < this.hiddenMask.length && formatIndex >= 0) {\n if (this.validCharacters.indexOf(this.hiddenMask[formatIndex]) >= 0) {\n this.setSelection(this.hiddenMask[formatIndex]);\n break;\n }\n formatIndex = formatIndex + (isbackward ? -1 : 1);\n }\n };\n MaskedDateTime.prototype.roundOff = function (val, count) {\n var valueText = val.toString();\n var length = count - valueText.length;\n var result = '';\n for (var i = 0; i < length; i++) {\n result += '0';\n }\n return result + valueText;\n };\n MaskedDateTime.prototype.zeroCheck = function (isZero, isDayPart, resultValue) {\n var result = resultValue;\n if (isZero && !isDayPart) {\n result = '0';\n }\n return result;\n };\n MaskedDateTime.prototype.handleDeletion = function (format, isSegment) {\n switch (format) {\n case 'd':\n this.isDayPart = isSegment;\n break;\n case 'M':\n this.isMonthPart = isSegment;\n if (!isSegment) {\n this.maskDateValue.setMonth(0);\n this.monthCharacter = '';\n }\n break;\n case 'y':\n this.isYearPart = isSegment;\n break;\n case 'H':\n case 'h':\n this.isHourPart = isSegment;\n if (!isSegment) {\n this.periodCharacter = '';\n }\n break;\n case 'm':\n this.isMinutePart = isSegment;\n break;\n case 's':\n this.isSecondsPart = isSegment;\n break;\n default:\n return false;\n }\n return true;\n };\n MaskedDateTime.prototype.dateAlteration = function (isDecrement) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n else {\n return;\n }\n var newDateValue = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n var incrementValue = isDecrement ? -1 : 1;\n switch (formatText) {\n case 'd':\n newDateValue.setDate(newDateValue.getDate() + incrementValue);\n break;\n case 'M':\n {\n var newMonth = newDateValue.getMonth() + incrementValue;\n newDateValue.setDate(1);\n newDateValue.setMonth(newMonth);\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n break;\n }\n case 'y':\n newDateValue.setFullYear(newDateValue.getFullYear() + incrementValue);\n break;\n case 'H':\n case 'h':\n newDateValue.setHours(newDateValue.getHours() + incrementValue);\n break;\n case 'm':\n newDateValue.setMinutes(newDateValue.getMinutes() + incrementValue);\n break;\n case 's':\n newDateValue.setSeconds(newDateValue.getSeconds() + incrementValue);\n break;\n case 'a':\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n break;\n default:\n break;\n }\n this.maskDateValue = newDateValue.getFullYear() > 0 ? newDateValue : this.maskDateValue;\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n this.handleDeletion(this.hiddenMask[start], true);\n }\n };\n MaskedDateTime.prototype.getCulturedValue = function (format) {\n var locale = this.parent.locale;\n var result;\n if (locale === 'en' || locale === 'en-US') {\n result = getValue(format, getDefaultDateObject());\n }\n else {\n result = getValue('main.' + '' + locale + ('.dates.calendars.gregorian.' + format), cldrData);\n }\n return result;\n };\n MaskedDateTime.prototype.getCulturedFormat = function () {\n var formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.moduleName === 'datepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.format && this.parent.formatString) {\n formatString = this.parent.formatString;\n }\n }\n if (this.parent.moduleName === 'datetimepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.dateTimeFormat) {\n formatString = this.parent.dateTimeFormat;\n }\n }\n if (this.parent.moduleName === 'timepicker') {\n formatString = this.parent.cldrTimeFormat();\n }\n return formatString;\n };\n MaskedDateTime.prototype.clearHandler = function () {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.updateValue();\n };\n MaskedDateTime.prototype.updateValue = function () {\n this.monthCharacter = this.periodCharacter = '';\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.updateInputValue(inputValue);\n };\n MaskedDateTime.prototype.destroy = function () {\n this.removeEventListener();\n };\n return MaskedDateTime;\n}());\nexport { MaskedDateTime };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.formatRegex = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|'[^']*'|'[^']*'/g;\n _this.dateFormatString = '';\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (typeof (this.min) === 'string') {\n this.min = this.checkDateValue(new Date(this.min));\n }\n if (typeof (this.max) === 'string') {\n this.max = this.checkDateValue(new Date(this.max));\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n this.cldrDateTimeFormat().replace(this.formatRegex, this.TimePopupFormat());\n if (this.dateFormatString === '') {\n this.dateFormatString = this.cldrDateTimeFormat();\n }\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.dateFormatString, type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_options' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.timeModal.appendChild(dlgOverlay);\n }\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION,\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container && !target.classList.contains('e-dlg-overlay')) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.display = \"flex\";\n this.popupObject.element.style.maxHeight = \"100%\";\n this.popupObject.element.style.width = \"100%\";\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.TimePopupFormat = function () {\n var format = '';\n var formatCount = 0;\n var proxy = this;\n function formatValueSpecifier(formattext) {\n switch (formattext) {\n case 'd':\n case 'dd':\n case 'ddd':\n case 'dddd':\n case 'M':\n case 'MM':\n case 'MMM':\n case 'MMMM':\n case 'y':\n case 'yy':\n case 'yyy':\n case 'yyyy':\n if (format == '') {\n format = format + formattext;\n }\n else {\n format = format + \"/\" + formattext;\n }\n formatCount = formatCount + 1;\n break;\n }\n if (formatCount > 2) {\n proxy.dateFormatString = format;\n }\n return format;\n }\n return formatValueSpecifier;\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateTimeOptions && this.dateTimeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n }\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { DatePicker, DateTimePicker, MaskedDateTime } from '@syncfusion/ej2-calendars';\nimport { isEditable, getObject, getCustomDateFormat } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nDatePicker.Inject(MaskedDateTime);\n/**\n * `DatePickerEditCell` is used to handle datepicker cell type editing.\n *\n * @hidden\n */\nvar DatePickerEditCell = /** @class */ (function (_super) {\n __extends(DatePickerEditCell, _super);\n function DatePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DatePickerEditCell.prototype.write = function (args) {\n this.edit = this.parent.editModule;\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n this.obj.appendTo(args.element);\n };\n return DatePickerEditCell;\n}(EditCellBase));\nexport { DatePickerEditCell };\n// eslint-disable-next-line\nfunction dateanddatetimerender(args, mode, rtl, css, datePickerEditCell) {\n var isInline = mode !== 'Dialog';\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: css ? css : null,\n close: datePickerClose.bind(datePickerEditCell)\n };\n}\n// eslint-disable-next-line\nfunction datePickerClose(args) {\n if (args.event && args.event.action === 'escape') {\n this.edit.editCellDialogClose = true;\n }\n}\n","/**\n * `TemplateEditCell` is used to handle template cell.\n *\n * @hidden\n */\nvar TemplateEditCell = /** @class */ (function () {\n function TemplateEditCell(parent) {\n this.parent = parent;\n }\n TemplateEditCell.prototype.read = function (element, value) {\n return value;\n };\n TemplateEditCell.prototype.write = function () {\n //\n };\n TemplateEditCell.prototype.destroy = function () {\n //\n };\n return TemplateEditCell;\n}());\nexport { TemplateEditCell };\n","import { closest, addClass, select } from '@syncfusion/ej2-base';\nimport { extend, getValue } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { EditRender } from '../renderer/edit-renderer';\nimport { BooleanEditCell } from '../renderer/boolean-edit-cell';\nimport { DropDownEditCell } from '../renderer/dropdown-edit-cell';\nimport { NumericEditCell } from '../renderer/numeric-edit-cell';\nimport { DefaultEditCell } from '../renderer/default-edit-cell';\nimport { InlineEdit } from './inline-edit';\nimport { BatchEdit } from './batch-edit';\nimport { DialogEdit } from './dialog-edit';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { parentsUntil, getComplexFieldID, getParsedFieldID, setComplexFieldID, getScrollBarWidth, setValidationRuels } from '../base/util';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport { DatePickerEditCell } from '../renderer/datepicker-edit-cell';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { TemplateEditCell } from '../renderer/template-edit-cell';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, padZero } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for the Grid editing module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the servicelocator\n * @hidden\n */\n function Edit(parent, serviceLocator) {\n /** @hidden */\n this.isShowAddedRowValidate = false;\n this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.fieldname = '';\n this.data = {};\n /* @hidden */\n this.editCellDialogClose = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n Edit.prototype.updateColTypeObj = function () {\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[parseInt(i.toString(), 10)].editTemplate) {\n var templteCell = 'templateedit';\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[\"\" + templteCell](this.parent), cols[parseInt(i.toString(), 10)].edit || {});\n }\n else {\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[cols[parseInt(i.toString(), 10)].editType\n && Edit.editCellType[cols[parseInt(i.toString(), 10)].editType] ?\n cols[parseInt(i.toString(), 10)].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[parseInt(i.toString(), 10)].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = gObj.editSettings.showAddNewRow ? true : false;\n gObj.refresh();\n break;\n }\n }\n };\n Edit.prototype.updateEditObj = function () {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n };\n Edit.prototype.initialEnd = function () {\n this.updateColTypeObj();\n };\n /**\n * Edits any bound record in the Grid by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n * @returns {void}\n */\n Edit.prototype.startEdit = function (tr) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowEditing || (gObj.isEdit && (!gObj.editSettings.showAddNewRow ||\n (gObj.editSettings.showAddNewRow && !isNullOrUndefined(gObj.element.querySelector('.' + literals.editedRow)))))\n || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length || isNullOrUndefined(this.parent.getRowByIndex(parseInt(this.parent.getSelectedRows()[0].getAttribute('data-rowindex'), 10)))) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal') {\n var idx = parseInt(tr.getAttribute('data-rowindex'), 10);\n tr = this.parent.getRowByIndex(idx);\n }\n var lastTr = gObj.getContent().querySelector('tr:last-child');\n var hdrTbody = gObj.getHeaderContent().querySelector('tbody');\n if (gObj.frozenRows && isNullOrUndefined(lastTr) && hdrTbody && hdrTbody.querySelector('tr:last-child')) {\n this.isLastRow = tr.rowIndex === parseInt(gObj.getHeaderContent().querySelector('tbody').querySelector('tr:last-child').getAttribute('data-rowindex'), 10);\n }\n else if (lastTr) {\n this.isLastRow = tr.rowIndex === lastTr.rowIndex;\n }\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n if (gObj.editSettings.showAddNewRow) {\n this.destroyToolTip();\n }\n };\n /**\n * @param {Element} tr - specifies the tr element\n * @param {object} args - specifies the object\n * @param {Element} args.row -specfifes the row\n * @param {string} args.requestType - specifies the request type\n * @returns {void}\n * @hidden\n */\n Edit.prototype.checkLastRow = function (tr, args) {\n var checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args && args.requestType === 'add' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowcell');\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Edit.prototype.closeEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.getElementsByClassName('e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n this.refreshToolbar();\n this.parent.notify(events.closeEdit, {});\n if (this.parent.editSettings.showAddNewRow) {\n this.destroyToolTip();\n }\n };\n Edit.prototype.refreshToolbar = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n var args = { startEdit: true };\n if (!data) {\n this.parent.notify(events.virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n };\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n * @returns {void}\n */\n Edit.prototype.deleteRecord = function (fieldname, data) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.fieldname = fieldname;\n this.data = data;\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n };\n /**\n * Deletes a visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Edit.prototype.deleteRow = function (tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n var rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Edit.prototype.endEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(events.editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Edit.prototype.updateCell = function (rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Edit.prototype.updateRow = function (index, data) {\n this.editModule.updateRow(index, data);\n };\n /**\n * Resets added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchCancel = function () {\n this.closeEdit();\n };\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchSave = function () {\n this.endEdit();\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Edit.prototype.editCell = function (index, field) {\n this.editModule.editCell(index, field);\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} returns whether the form is validated\n */\n Edit.prototype.editFormValidate = function () {\n var form1 = this.formObj ? this.formObj.validate() : true;\n var form2 = this.mFormObj ? this.mFormObj.validate() : true;\n var form3 = this.frFormObj ? this.frFormObj.validate() : true;\n return form1 && form2 && form3;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getBatchChanges = function () {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n };\n /**\n * Gets the current value of the edited component.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getCurrentEditCellData = function () {\n var obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n Edit.prototype.saveCell = function () {\n this.editModule.saveCell();\n };\n Edit.prototype.endEditing = function () {\n if (!this.parent.editSettings.showAddNewRow) {\n this.parent.element.classList.remove('e-editing');\n }\n this.editModule.endEdit();\n this.isShowAddedRowValidate = false;\n this.refreshToolbar();\n };\n Edit.prototype.showDialog = function (content, obj) {\n obj.content = '
    ' + this.l10n.getConstant(content) + '
    ';\n obj.dataBind();\n obj.show();\n if (this.parent.enableRtl) {\n obj.refresh();\n }\n };\n Edit.prototype.getValueFromType = function (col, value) {\n var val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n case 'dateonly':\n // eslint-disable-next-line no-cond-assign\n val = value && (value = new Date(value)) ?\n value.getFullYear() + '-' + padZero(value.getMonth() + 1) + '-' + padZero(value.getDate()) : null;\n break;\n }\n return val;\n };\n Edit.prototype.destroyToolTip = function () {\n var elements = [].slice.call(this.parent.element.getElementsByClassName('e-griderror'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n this.parent.getContent().firstElementChild.style.position = 'relative';\n if (this.parent.isFrozenGrid()) {\n if (this.parent.element.querySelector('.e-gridheader')) {\n this.parent.element.querySelector('.e-gridheader').style.position = '';\n }\n this.parent.element.querySelector('.e-gridcontent').style.position = '';\n }\n };\n Edit.prototype.createConfirmDlg = function () {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n };\n Edit.prototype.createAlertDlg = function () {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n isPrimary: true }\n }\n ], 'EditAlert');\n };\n Edit.prototype.alertClick = function () {\n this.alertDObj.hide();\n };\n Edit.prototype.dlgWidget = function (btnOptions, name) {\n var div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n var options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n };\n options.buttons = btnOptions;\n var obj = new Dialog(options);\n var isStringTemplate = 'isStringTemplate';\n obj[\"\" + isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n };\n Edit.prototype.dlgCancel = function () {\n if (this.parent.pagerModule) {\n this.parent.pagerModule.isForceCancel = false;\n }\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n this.parent.notify('cancelcnfrmDlg', {});\n };\n Edit.prototype.dlgOk = function () {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord(this.fieldname, this.data);\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n }\n if (this.parent.pagerModule) {\n this.parent.pagerModule.isForceCancel = false;\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n };\n Edit.prototype.destroyEditComponents = function () {\n if (this.parent.isEdit) {\n this.destroyWidgets();\n this.destroyForm();\n }\n this.destroy();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.eventDetails = [{ event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.initialEnd, handler: this.initialEnd },\n { event: events.keyPressed, handler: this.keyPressHandler },\n { event: events.autoCol, handler: this.updateColTypeObj },\n { event: events.tooltipDestroy, handler: this.destroyToolTip },\n { event: events.preventBatch, handler: this.preventBatch },\n { event: events.destroyForm, handler: this.destroyForm },\n { event: events.destroy, handler: this.destroyEditComponents }];\n addRemoveEventListener(this.parent, this.eventDetails, true, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventDetails, false);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n };\n Edit.prototype.actionComplete = function (e) {\n var actions = ['add', 'beginEdit', 'save', 'delete', 'cancel', 'filterAfterOpen', 'filterchoicerequest'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = this.parent.editSettings.showAddNewRow ? true : false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n };\n /**\n * @param {Element} form - specifies the element\n * @param {Object} editedData - specifies the edited data\n * @returns {Object} returns the object\n * @hidden\n */\n Edit.prototype.getCurrentEditedData = function (form, editedData) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n var elements = [].slice.call(form.elements);\n for (var k = 0; k < elements.length; k++) {\n if (((elements[parseInt(k.toString(), 10)].hasAttribute('name') && (elements[parseInt(k.toString(), 10)].className !== 'e-multi-hidden')) ||\n elements[parseInt(k.toString(), 10)].classList.contains('e-multiselect')) && !(elements[parseInt(k.toString(), 10)].type === 'hidden' &&\n (parentsUntil(elements[parseInt(k.toString(), 10)], 'e-switch-wrapper') || parentsUntil(elements[parseInt(k.toString(), 10)], 'e-checkbox-wrapper')))) {\n var field = (elements[parseInt(k.toString(), 10)].hasAttribute('name')) ? setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('name')) :\n setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('id'));\n var column = gObj.getColumnByField(field) || { field: field, type: elements[parseInt(k.toString(), 10)].getAttribute('type') };\n var value = void 0;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[parseInt(k.toString(), 10)].checked;\n }\n else if (elements[parseInt(k.toString(), 10)].value) {\n value = elements[parseInt(k.toString(), 10)].value;\n if (elements[parseInt(k.toString(), 10)].ej2_instances &&\n elements[parseInt(k.toString(), 10)].ej2_instances.length &&\n !isNullOrUndefined(elements[parseInt(k.toString(), 10)].ej2_instances[0].value)) {\n elements[parseInt(k.toString(), 10)].blur();\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n }\n else if (elements[parseInt(k.toString(), 10)].ej2_instances) {\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[parseInt(k.toString(), 10)], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[parseInt(k.toString(), 10)], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n if (elements[parseInt(k.toString(), 10)].type === 'radio') {\n if (elements[parseInt(k.toString(), 10)].checked) {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n else {\n if (typeof value === 'string') {\n this.parent.sanitize(value);\n }\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n }\n return editedData;\n }\n var col = gObj.columnModel.filter(function (col) { return col.editTemplate; });\n for (var j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]) {\n var inputElements = [].slice.call(form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]);\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]];\n var temp = inputElements.filter(function (e) {\n return !isNullOrUndefined((e.ej2_instances));\n });\n if (temp.length === 0) {\n temp = inputElements.filter(function (e) { return e.hasAttribute('name'); });\n }\n for (var k = 0; k < temp.length; k++) {\n var value = this.getValue(col[parseInt(j.toString(), 10)], temp[parseInt(k.toString(), 10)], editedData);\n if (col[parseInt(j.toString(), 10)].type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col[parseInt(j.toString(), 10)].field, value, editedData);\n }\n }\n }\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col_1 = gObj.getColumnByUid(inputs[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (col_1 && col_1.field) {\n var value = this.getValue(col_1, inputs[parseInt(i.toString(), 10)], editedData);\n if (col_1.type === 'string' && !(col_1.isForeignColumn() && typeof value !== 'string')) {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col_1.field, value, editedData);\n }\n }\n return editedData;\n };\n Edit.prototype.getValue = function (col, input, editedData) {\n var value = input.ej2_instances ?\n input.ej2_instances[0].value : input.value;\n var gObj = this.parent;\n var temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onActionBegin = function (e) {\n if ((e.requestType === 'columnstate' || (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache\n && e.requestType === 'sorting')) && this.parent.isEdit && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n var editRow = this.parent.element.querySelector('.' + literals.editedRow);\n var addRow = this.parent.element.querySelector('.' + literals.addedRow);\n if (editRow && this.parent.frozenRows && e.requestType === 'virtualscroll'\n && parseInt(parentsUntil(editRow, literals.row).getAttribute(literals.dataRowIndex), 10) < this.parent.frozenRows) {\n return;\n }\n var restrictedRequestTypes = ['filterAfterOpen', 'filterBeforeOpen', 'filterchoicerequest', 'filterSearchBegin', 'save', 'infiniteScroll', 'virtualscroll'];\n var isRestrict = restrictedRequestTypes.indexOf(e.requestType) === -1;\n var isAddRows = !this.parent.editSettings.showAddNewRow || (this.parent.editSettings.showAddNewRow &&\n !isNullOrUndefined(this.parent.element.querySelector('.e-editedrow')));\n var isDestroyVirtualForm = (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && this.formObj\n && isAddRows && !this.formObj.isDestroyed && (editRow || addRow || e.requestType === 'cancel') && isRestrict;\n if ((!this.parent.enableVirtualization && isAddRows && this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && isRestrict && !e.cancel) || isDestroyVirtualForm) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n };\n /**\n * @param {Column[]} cols - specfies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyWidgets = function (cols) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n this.parent.destroyTemplate(['editSettingsTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n cols = cols ? cols : this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization);\n if (cols.some(function (column) { return !isNullOrUndefined(column.editTemplate); })) {\n this.parent.destroyTemplate(['editTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var temp = col.edit.destroy;\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n var elements = [].slice.call(this.formObj.element.elements);\n for (var i = 0; i < elements.length; i++) {\n if (elements[parseInt(i.toString(), 10)].hasAttribute('name')) {\n var instanceElement = elements[parseInt(i.toString(), 10)].parentElement.classList.contains('e-ddl') ?\n elements[parseInt(i.toString(), 10)].parentElement.querySelector('input') : elements[parseInt(i.toString(), 10)];\n if (instanceElement.ej2_instances &&\n instanceElement.ej2_instances.length &&\n !instanceElement.ej2_instances[0].isDestroyed) {\n instanceElement.ej2_instances[0].destroy();\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyForm = function () {\n this.destroyToolTip();\n var formObjects = [this.formObj, this.mFormObj, this.frFormObj, this.virtualFormObj];\n for (var i = 0; i < formObjects.length; i++) {\n if (formObjects[parseInt(i.toString(), 10)] && formObjects[parseInt(i.toString(), 10)].element\n && !formObjects[parseInt(i.toString(), 10)].isDestroyed) {\n formObjects[parseInt(i.toString(), 10)].destroy();\n if (this.parent.isReact && this.parent.editSettings.mode === 'Dialog'\n && !isNullOrUndefined(this.parent.editSettings.template)) {\n formObjects[parseInt(i.toString(), 10)].element.remove();\n }\n }\n }\n this.destroyToolTip();\n };\n /**\n * To destroy the editing.\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n var elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n };\n Edit.prototype.keyPressHandler = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey && e.action === 'ctrlEnter') {\n e.action = 'insert';\n }\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open.e-edit-dialog')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, literals.gridContent) || ((this.parent.frozenRows ||\n (this.parent.editSettings.showAddNewRow && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)))\n && parentsUntil(e.target, literals.headerContent)))\n && !document.getElementsByClassName('e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit && !this.editCellDialogClose) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.curretRowFocus(e);\n }\n }\n if (this.editCellDialogClose) {\n this.editCellDialogClose = false;\n }\n break;\n case 'tab':\n case 'shiftTab':\n this.curretRowFocus(e);\n break;\n }\n };\n Edit.prototype.curretRowFocus = function (e) {\n if (this.parent.isEdit && this.parent.editSettings.mode !== 'Batch') {\n var editedRow = parentsUntil(e.target, 'e-editedrow') || parentsUntil(e.target, 'e-addedrow');\n if (editedRow) {\n var focusableEditCells = [].slice.call(editedRow.querySelectorAll('.e-input:not(.e-disabled)'));\n var commandColCell = [].slice.call(editedRow.querySelectorAll('.e-unboundcell'));\n if (commandColCell) {\n for (var i = 0; i < commandColCell.length; i++) {\n focusableEditCells = focusableEditCells.concat([].slice\n .call(commandColCell[parseInt(i.toString(), 10)].querySelectorAll('.e-btn:not(.e-hide)')));\n }\n }\n var rowCell = parentsUntil(e.target, 'e-rowcell');\n if ((rowCell === parentsUntil(focusableEditCells[focusableEditCells.length - 1], 'e-rowcell')\n && e.action === 'tab' && !rowCell.classList.contains('e-unboundcell'))\n || (rowCell === parentsUntil(focusableEditCells[0], 'e-rowcell') && e.action === 'shiftTab' &&\n !this.parent.editSettings.showAddNewRow) || e.action === 'escape') {\n var uid = editedRow.getAttribute('data-uid');\n var rows = this.parent.getRows();\n var rowIndex = rows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (this.parent.frozenRows && parentsUntil(editedRow, 'e-content')) {\n rowIndex = rowIndex - this.parent.frozenRows;\n }\n if (editedRow.classList.contains('e-addedrow')) {\n rowIndex = 0;\n }\n if (e.action === 'escape') {\n this.closeEdit();\n }\n else {\n this.isShowAddedRowValidate = true;\n this.endEdit();\n this.isShowAddedRowValidate = false;\n }\n if (this.parent.focusModule.active && (!this.parent.editSettings.showAddNewRow ||\n editedRow.classList.contains('e-editedrow') || (this.parent.editSettings.showAddNewRow &&\n (editedRow.classList.contains('e-addedrow') && isNullOrUndefined(this.parent.element.querySelector('.e-griderror:not([style*=\"display: none\"])')))))) {\n this.parent.focusModule.active.matrix.current = [rowIndex, 0];\n }\n }\n if (this.parent.editSettings.showAddNewRow && e.action === 'tab' && parentsUntil(e.target, 'e-addedrow')) {\n this.isShowAddedRowValidate = true;\n }\n }\n }\n };\n Edit.prototype.preventBatch = function (args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n };\n Edit.prototype.executeAction = function () {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n };\n /**\n * @param {Column[]} cols - specifies the column\n * @param {Object} newRule - specifies the new rule object\n * @returns {void}\n * @hidden\n */\n Edit.prototype.applyFormValidation = function (cols, newRule) {\n var gObj = this.parent;\n var idx = 0;\n var form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.editSettings.showAddNewRow && gObj.element.querySelector('.' + literals.editedRow) ?\n gObj.element.querySelector('.' + literals.editedRow).getElementsByClassName('e-gridform')[parseInt(idx.toString(), 10)] :\n gObj.element.getElementsByClassName('e-gridform')[parseInt(idx.toString(), 10)] :\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document);\n var index = 1;\n var rules = {};\n var mRules = {};\n var frRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible && (gObj.editSettings.mode !== 'Dialog' || (gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) === -1\n && gObj.editSettings.mode === 'Dialog'))) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].validationRules && isNullOrUndefined(newRule)) {\n setValidationRuels(cols[parseInt(i.toString(), 10)], index, rules, mRules, frRules, cols.length);\n }\n }\n rules = extend(rules, mRules, frRules);\n this.parent.editModule.formObj = this.createFormObj(form, newRule ? newRule : rules);\n };\n /**\n * @param {HTMLFormElement} form - Defined Form element\n * @param {Object} rules - Defines form rules\n * @returns {FormValidator} Returns formvalidator instance\n * @hidden\n */\n Edit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var uid = inputElement.getAttribute('e-mappinguid');\n var args = {\n column: _this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value\n };\n if ((!(event && event['relatedTarget'] && event['relatedTarget'].classList.contains('e-cancelbutton')) &&\n !_this.parent.editSettings.showAddNewRow) || (_this.parent.editSettings.showAddNewRow && event && event.target &&\n (parentsUntil(event.target, _this.parent.element.id + '_update', true) ||\n (parentsUntil(event.target, 'e-grid-menu') && (event.target.classList.contains('e-save') ||\n event.target.querySelector('.e-save'))) || _this.isShowAddedRowValidate ||\n (parentsUntil(event.target, 'e-unboundcell') && parentsUntil(event.target, 'e-update')) ||\n (event['action'] === 'enter' && (parentsUntil(event.target, 'e-content') || parentsUntil(event.target, 'e-addedrow'))))) ||\n (_this.parent.editSettings.showAddNewRow && !isNullOrUndefined(_this.parent.element.querySelector('.' + literals.editedRow)))) {\n _this.valErrorPlacement(inputElement, error);\n }\n _this.isShowAddedRowValidate = false;\n _this.parent.notify(events.valCustomPlacement, args);\n }\n });\n };\n Edit.prototype.valErrorPlacement = function (inputElement, error) {\n if (this.parent.isEdit) {\n var id = error.getAttribute('for');\n var elem = this.getElemTable(inputElement).querySelector('#' + getParsedFieldID(id) + '_Error');\n if (!elem) {\n this.createTooltip(inputElement, error, id, '');\n }\n else {\n elem.querySelector('.e-tip-content').innerHTML = error.outerHTML;\n }\n }\n };\n Edit.prototype.getElemTable = function (inputElement) {\n var isFrozenHdr;\n var gObj = this.parent;\n var table;\n if (gObj.editSettings.mode !== 'Dialog') {\n isFrozenHdr = (gObj.frozenRows && closest(inputElement, '.' + literals.row) && gObj.frozenRows\n > (parseInt(closest(inputElement, '.' + literals.row).getAttribute(literals.dataRowIndex), 10) || 0));\n table = this.parent.isFrozenGrid() ? gObj.element : isFrozenHdr || (gObj.editSettings.showAddNewRow &&\n (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) ? gObj.getHeaderTable() : gObj.getContentTable();\n }\n else {\n table = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n }\n return table;\n };\n Edit.prototype.resetElemPosition = function (elem, args) {\n var td = parentsUntil(args.element, literals.rowCell);\n if (td) {\n var tdRight = td.getBoundingClientRect().right;\n var elemRight = elem.getBoundingClientRect().right;\n if (elemRight > tdRight) {\n var offSet = elemRight - tdRight;\n elem.style.left = (elem.offsetLeft - offSet) + 'px';\n }\n }\n };\n Edit.prototype.validationComplete = function (args) {\n if (this.parent.isEdit) {\n var elem = this.getElemTable(args.element).querySelector('#' + getParsedFieldID(args.inputName) + '_Error');\n if (this.parent.editSettings.showAddNewRow && !elem && args.element) {\n var error = parentsUntil(args.element, 'e-rowcell').querySelector('.e-error');\n if (error) {\n error.classList.remove('e-error');\n }\n }\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n this.resetElemPosition(elem, args);\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n };\n Edit.prototype.createTooltip = function (element, error, name, display) {\n var formObj = this.formObj.element;\n var customForm = parentsUntil(element, 'e-virtual-validation');\n if (customForm) {\n formObj = this.virtualFormObj.element;\n }\n var gcontent = this.parent.getContent().firstElementChild;\n var isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var td = closest(element, '.' + literals.rowCell);\n var row = closest(element, '.' + literals.row);\n var isFHdr;\n var isFHdrLastRow = false;\n var validationForBottomRowPos;\n var isBatchModeLastRow = false;\n var isAddNewRow = this.parent.editSettings.showAddNewRow && !isNullOrUndefined(parentsUntil(element, literals.addedRow))\n && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling);\n var viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n var rows = [].slice.call(this.parent.getContent().getElementsByClassName(literals.row));\n if (this.parent.editSettings.mode === 'Batch') {\n rows = [].slice.call(this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (viewPortRowCount >= 1 && rows.length >= viewPortRowCount\n && rows[rows.length - 1].getAttribute(literals.dataRowIndex) === row.getAttribute(literals.dataRowIndex)) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows || isAddNewRow) {\n var headerRows = this.parent.editSettings.showAddNewRow ? '.e-row:not(.e-hiddenrow.e-addedrow)' :\n '.e-row:not(.e-hiddenrow)';\n var fHearderRows = [].slice.call(this.parent.getHeaderTable().querySelector(literals.tbody).querySelectorAll(headerRows));\n isFHdr = fHearderRows.length > (parseInt(row.getAttribute(literals.dataRowIndex), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row.getAttribute(literals.dataRowIndex), 10) === fHearderRows.length - 1;\n var insertRow = [].slice.call(this.parent.getHeaderTable().querySelector(literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (insertRow.length === 1 && (insertRow[0].classList.contains('e-addedrow') || insertRow[0].classList.contains('e-insertedrow'))) {\n isFHdrLastRow = true;\n }\n }\n if (isFHdrLastRow || (viewPortRowCount >= 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row.classList.contains(literals.addedRow)))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n var table = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper .e-dlg-content', document);\n var client = table.getBoundingClientRect();\n var left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n var input = closest(element, 'td');\n var inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n var div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top) + table.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (this.parent.cssClass) {\n div.classList.add(this.parent.cssClass);\n }\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n var content = this.parent.createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content);\n div.appendChild(arrow);\n if (!customForm && (this.parent.frozenRows || isAddNewRow) && this.parent.editSettings.mode !== 'Dialog') {\n var getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.' + literals.table);\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.' + literals.frozenContent) || closest(element, '.' + literals.frozenHeader))\n || (this.parent.frozenRows || isAddNewRow)) {\n if (this.parent.isFrozenGrid()) {\n if (td.classList.contains('e-unfreeze')) {\n addClass([div], 'e-unfreeze');\n formObj.appendChild(div);\n }\n else {\n var elem = closest(td, '.e-gridheader') ? this.parent.element.querySelector('.e-gridheader') :\n rows.length === 1 ? this.parent.element.querySelector('.e-gridcontent').querySelector('.e-content') :\n this.parent.element.querySelector('.e-gridcontent');\n elem.appendChild(div);\n elem.style.position = 'relative';\n }\n }\n else {\n formObj.appendChild(div);\n }\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n if (customForm) {\n this.virtualFormObj.element.appendChild(div);\n }\n else {\n if (this.parent.editSettings.mode !== 'Dialog' && this.parent.isFrozenGrid()) {\n if (td.classList.contains('e-unfreeze')) {\n addClass([div], 'e-unfreeze');\n this.formObj.element.appendChild(div);\n }\n else {\n var elem = closest(td, '.e-gridheader') ? this.parent.element.querySelector('.e-gridheader') :\n rows.length === 1 ? this.parent.element.querySelector('.e-gridcontent').querySelector('.e-content') :\n this.parent.element.querySelector('.e-gridcontent');\n elem.appendChild(div);\n elem.style.position = 'relative';\n }\n }\n else {\n this.formObj.element.appendChild(div);\n }\n }\n }\n if (!isNullOrUndefined(td)) {\n if (td.classList.contains('e-fixedfreeze')) {\n div.classList.add('e-fixederror');\n }\n else if (td.classList.contains('e-leftfreeze') || td.classList.contains('e-rightfreeze')) {\n div.classList.add('e-freezeerror');\n }\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n var contentDiv = this.parent.getContent().querySelector('.e-content');\n if (this.parent.currentViewData.length === 0 && contentDiv.scrollTop === 0) {\n contentDiv.scrollTop = div.offsetHeight + arrow.scrollHeight;\n }\n else {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n }\n var lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if ((this.parent.frozenRows || isAddNewRow) && this.parent.editSettings.mode !== 'Dialog') {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || (this.parent.frozenRows || isAddNewRow)) {\n // gcontent.style.position = 'static';\n var pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (validationForBottomRowPos) {\n if (isScroll && this.parent.height !== 'auto' && (!this.parent.frozenRows || !isAddNewRow)\n && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling && !(div.classList.contains('e-freezeerror')\n && div.classList.contains('e-fixederror'))) {\n var scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n var gHeight = this.parent.height.toString().indexOf('%') === -1 ?\n parseInt(this.parent.height, 10) : gcontent.offsetHeight;\n div.style.bottom = (gHeight - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n var rowsCount = this.parent.frozenRows ? (isAddNewRow ? this.parent.frozenRows + 1 : this.parent.frozenRows) +\n (rows.length - 1) : rows.length - 1;\n var rowsHeight = rowsCount * this.parent.getRowHeight();\n var position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n };\n /**\n * @param {Column} col - specfies the column\n * @returns {boolean} returns the whether column is grouped\n * @hidden\n */\n Edit.prototype.checkColumnIsGrouped = function (col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n };\n /**\n * @param {object} editors -specfies the editors\n * @returns {void}\n * @hidden\n */\n Edit.AddEditors = function (editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n };\n Edit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n };\n return Edit;\n}());\nexport { Edit };\n","import { isNullOrUndefined, extend, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, extendArray } from '../utils';\nimport { getUid } from '@syncfusion/ej2-grids';\nimport { updateParentRow, editAction } from './crud-actions';\nimport { classList } from '@syncfusion/ej2-base';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent) {\n this.batchChildCount = 0;\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.batchAddedRecords = [];\n this.batchDeletedRecords = [];\n this.batchAddRowRecord = [];\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.batchRecords = [];\n this.currentViewRecords = [];\n this.isAdd = false;\n this.addEventListener();\n }\n BatchEdit.prototype.addEventListener = function () {\n this.parent.on(events.cellSaved, this.cellSaved, this);\n this.parent.on(events.batchAdd, this.batchAdd, this);\n this.parent.on(events.beforeBatchAdd, this.beforeBatchAdd, this);\n this.parent.on(events.batchSave, this.batchSave, this);\n this.parent.on(events.beforeBatchDelete, this.beforeBatchDelete, this);\n this.parent.on(events.beforeBatchSave, this.beforeBatchSave, this);\n this.parent.on('batchPageAction', this.batchPageAction, this);\n this.parent.on('batchCancelAction', this.batchCancelAction, this);\n this.parent.grid.on('immutable-batch-cancel', this.immutableBatchAction, this);\n this.parent.grid.on('next-cell-index', this.nextCellIndex, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cellSaved, this.cellSaved);\n this.parent.off(events.batchAdd, this.batchAdd);\n this.parent.off(events.batchSave, this.batchSave);\n this.parent.off(events.beforeBatchAdd, this.beforeBatchAdd);\n this.parent.off(events.beforeBatchDelete, this.beforeBatchDelete);\n this.parent.off(events.beforeBatchSave, this.beforeBatchSave);\n this.parent.off('batchPageAction', this.batchPageAction);\n this.parent.off('batchCancelAction', this.batchCancelAction);\n this.parent.grid.off('immutable-batch-cancel', this.immutableBatchAction);\n this.parent.grid.off('next-cell-index', this.nextCellIndex);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {Object[]} Returns modified records in batch editing.\n */\n BatchEdit.prototype.getBatchRecords = function () {\n return this.batchRecords;\n };\n /**\n * @hidden\n * @returns {number} Returns index of newly add row\n */\n BatchEdit.prototype.getAddRowIndex = function () {\n return this.addRowIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns selected row index\n */\n BatchEdit.prototype.getSelectedIndex = function () {\n return this.selectedIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns newly added child count\n */\n BatchEdit.prototype.getBatchChildCount = function () {\n return this.batchChildCount;\n };\n BatchEdit.prototype.batchPageAction = function () {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var index;\n if (!isNullOrUndefined(this.batchAddedRecords) && this.batchAddedRecords.length) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[\"\" + primaryKey]; }).indexOf(this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]);\n data.splice(index, 1);\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.batchDeletedRecords = this.currentViewRecords = [];\n };\n BatchEdit.prototype.cellSaved = function (args) {\n var actualCellIndex = args.column.index;\n if (actualCellIndex === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.column.index)\n });\n }\n if (this.isAdd && this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var added = void 0;\n var level = 'level';\n var primaryKey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var currentDataIndex = void 0;\n var indexvalue = void 0;\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var parentRecord = this.selectedIndex > -1 ? this.batchRecords[parseInt(this.addRowIndex.toString(), 10)][\"\" + parentItem] : null;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentIdMapping = void 0;\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Top' || this.selectedIndex === -1 ? 0 :\n this.parent.editSettings.newRowPosition === 'Above' ? this.addRowIndex\n : this.addRowIndex + 1;\n rowObjectIndex = this.getActualRowObjectIndex(rowObjectIndex);\n if (this.newBatchRowAdded) {\n if (this.batchRecords.length) {\n idMapping = this.batchRecords[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = this.batchRecords[this.addRowIndex][this.parent.parentIdMapping];\n if (this.batchRecords[parseInt(this.addRowIndex.toString(), 10)][\"\" + parentItem]) {\n parentUniqueID = this.batchRecords[parseInt(this.addRowIndex.toString(), 10)][\"\" + parentItem][\"\" + uniqueID];\n }\n }\n this.batchAddedRecords = extendArray(this.batchAddedRecords);\n this.batchAddRowRecord = extendArray(this.batchAddRowRecord);\n this.batchAddRowRecord.push(this.batchRecords[this.addRowIndex]);\n added = this.parent.grid.getRowsObject()[parseInt(rowObjectIndex.toString(), 10)].changes;\n added.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + added.uniqueID, added, this.parent);\n if (!Object.prototype.hasOwnProperty.call(added, 'level')) {\n this.batchIndex = this.selectedIndex === -1 ? 0 : this.batchIndex;\n if (this.parent.editSettings.newRowPosition === 'Child') {\n added.primaryParent = parentRecord;\n if (this.selectedIndex > -1) {\n added.parentItem = extend({}, this.batchRecords[this.addRowIndex]);\n added.parentUniqueID = added.parentItem.uniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n added.level = added.parentItem.level + 1;\n added.index = this.batchIndex;\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[\"\" + primaryKey_1]; }).indexOf(record[\"\" + primaryKey_1]);\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = idMapping;\n }\n updateParentRow(primaryKey_1, added.parentItem, 'add', this.parent, this.isSelfReference, added);\n }\n }\n else if ((this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below')\n && !isNullOrUndefined(this.batchRecords[this.addRowIndex])) {\n added.level = this.batchRecords[parseInt(this.addRowIndex.toString(), 10)][\"\" + level];\n if (added.level && this.selectedIndex > -1) {\n added.parentItem = parentRecord;\n added.parentUniqueID = parentUniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n }\n added.index = this.parent.editSettings.newRowPosition === 'Below' ? this.batchIndex : this.batchIndex - 1;\n if (this.parent.editSettings.newRowPosition === 'Below' && this.selectedIndex > -1) {\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[\"\" + primaryKey_1]; }).indexOf(record[\"\" + primaryKey_1]);\n }\n if (this.parent.editSettings.newRowPosition === 'Above' && this.selectedIndex > -1) {\n var record = this.batchRecords[this.addRowIndex];\n currentDataIndex = data.map(function (e) { return e[\"\" + primaryKey_1]; }).indexOf(record[\"\" + primaryKey_1]);\n }\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = parentIdMapping;\n }\n }\n added.index = added.index === -1 ? 0 : added.index;\n added.hasChildRecords = false;\n added.childRecords = [];\n this.batchRecords.splice(added.index, 0, added);\n this.currentViewRecords.splice(added.index, 0, added);\n if (currentDataIndex) {\n indexvalue = currentDataIndex;\n }\n else {\n indexvalue = added.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Above') {\n indexvalue = added.index === 0 ? indexvalue : indexvalue + 1;\n }\n data.splice(indexvalue, 0, added);\n this.batchAddedRecords.push(added);\n }\n this.parent.grid.getRowsObject()[parseInt(rowObjectIndex.toString(), 10)].data = added;\n this.newBatchRowAdded = false;\n }\n }\n };\n BatchEdit.prototype.beforeBatchAdd = function (e) {\n var isTabLastRow = 'isTabLastRow';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.editModule[\"\" + isTabLastRow]) {\n e.cancel = true;\n this.parent.editModule[\"\" + isTabLastRow] = false;\n return;\n }\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex']) &&\n !this.parent.editModule['isAddedRowByContextMenu'] && (this.parent.grid.selectedRowIndex === -1 || this.parent.editModule['batchEditModule'].isAdd)) {\n this.selectedIndex = this.parent.editModule['selectedIndex'];\n this.addRowIndex = this.parent.editModule['addRowIndex'];\n this.addRowRecord = this.batchRecords.length ? this.batchRecords[this.selectedIndex]\n : this.parent.getCurrentViewRecords()[this.selectedIndex];\n }\n else {\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.parent.editModule['addRowIndex'] = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n };\n BatchEdit.prototype.batchAdd = function (e) {\n if (this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.isAdd = true;\n this.newBatchRowAdded = true;\n var actualIndex = 0;\n if (!this.batchRecords.length) {\n this.batchAddedRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex'])) {\n classList(this.parent.grid.getDataRows()[0], ['e-batchrow'], []);\n }\n if (this.parent.editSettings.newRowPosition !== 'Top') {\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n records = this.batchRecords;\n }\n this.updateChildCount(records);\n this.parent.notify(events.beginAdd, {});\n this.batchChildCount = 0;\n }\n this.updateRowIndex();\n // update focus module, need to refix this once grid source modified.\n var focusModule = getValue('focusModule', this.parent.grid);\n var table = this.parent.getContentTable();\n if (this.parent.getBatchChanges()[this.deletedRecords].length && this.parent.editSettings.newRowPosition === 'Above') {\n actualIndex = e.row.rowIndex;\n focusModule.getContent().matrix.matrix = this.matrix;\n }\n else {\n actualIndex = table.getElementsByClassName('e-batchrow')[0].rowIndex;\n // if (this.parent.frozenRows || this.parent.frozenColumns) {\n // actualIndex = this.batchIndex;\n // }\n }\n focusModule.getContent().matrix.current = [actualIndex, focusModule.getContent().matrix.current[1]];\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex']) && !this.parent.editModule['isAddedRowByContextMenu']) {\n var newlyAddedRecords = this.parent.getBatchChanges()['addedRecords'];\n var index = parseInt(this.parent.getContentTable().getElementsByClassName('e-insertedrow')[newlyAddedRecords.length - 1].getAttribute('data-rowindex'), 10);\n this.batchRecords.splice(index, 0, newlyAddedRecords[newlyAddedRecords.length - 1]);\n }\n }\n };\n BatchEdit.prototype.beforeBatchDelete = function (args) {\n if (!this.batchRecords.length) {\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n var focusModule = getValue('focusModule', this.parent.grid);\n this.matrix = focusModule.getContent().matrix.matrix;\n var row = [];\n var records = [];\n var primarykey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var data;\n var childs;\n var uid;\n if (!isNullOrUndefined(args.row) && this.parent.getSelectedRows().indexOf(args.row) === -1) {\n data = args.rowData;\n childs = findChildrenRecords(data);\n uid = args.row.getAttribute('data-uid');\n }\n else {\n data = this.parent.grid.getSelectedRecords()[this.parent.grid.getSelectedRecords().length - 1];\n childs = findChildrenRecords(data);\n uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n }\n var parentRowIndex = parseInt(this.parent.grid.getRowElementByUID(uid).getAttribute('data-rowindex'), 10);\n if (childs.length) {\n var totalCount = parentRowIndex + childs.length;\n var firstChildIndex = parentRowIndex + 1;\n for (var i = firstChildIndex; i <= totalCount; i++) {\n row.push(this.parent.grid.getDataRows()[parseInt(i.toString(), 10)]);\n if (this.parent.frozenRows || this.parent.frozenColumns || this.parent.getFrozenColumns()) {\n row.push(this.parent.grid.getHeaderContent()[parseInt(i.toString(), 10)]);\n }\n }\n }\n if (!isNullOrUndefined(data.parentItem)) {\n var parentItem = getParentData(this.parent, data.parentItem.uniqueID);\n if (!isNullOrUndefined(parentItem) && parentItem.hasChildRecords) {\n var childIndex = parentItem.childRecords.indexOf(data);\n parentItem.childRecords.splice(childIndex, 1);\n }\n this.batchDeletedRecords = extendArray(this.batchDeletedRecords);\n this.batchDeletedRecords.push(data);\n }\n childs.push(data);\n records = childs;\n for (var i = 0; i < records.length; i++) {\n var indexvalue = this.batchRecords.map(function (e) { return e[\"\" + primarykey]; }).indexOf(records[parseInt(i.toString(), 10)][\"\" + primarykey]);\n if (indexvalue !== -1) {\n this.batchRecords.splice(indexvalue, 1);\n }\n }\n for (var i = 0; i < row.length; i++) {\n if (!isNullOrUndefined(row[parseInt(i.toString(), 10)])) {\n this.parent.grid.selectionModule.selectedRecords.push(row[parseInt(i.toString(), 10)]);\n }\n }\n };\n BatchEdit.prototype.updateRowIndex = function () {\n var rows = this.parent.grid.getDataRows();\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].setAttribute('data-rowindex', i.toString());\n }\n };\n BatchEdit.prototype.updateChildCount = function (records) {\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var addedRecords = 'addedRecords';\n var parentItem = this.parent.editSettings.newRowPosition === 'Child' ? 'primaryParent' : 'parentItem';\n for (var i = 0; i < this.parent.getBatchChanges()[\"\" + addedRecords].length; i++) {\n if (!isNullOrUndefined(this.parent.getBatchChanges()[\"\" + addedRecords][parseInt(i.toString(), 10)][\"\" + parentItem])) {\n if (this.parent.getBatchChanges()[\"\" + addedRecords][parseInt(i.toString(), 10)][\"\" + parentItem][\"\" + primaryKey] === records[parseInt(this.addRowIndex.toString(), 10)][\"\" + primaryKey]) {\n this.batchChildCount = this.batchChildCount + 1;\n }\n }\n }\n };\n BatchEdit.prototype.beforeBatchSave = function (e) {\n var changeRecords = 'changedRecords';\n var deleterecords = 'deletedRecords';\n var changedRecords = e.batchChanges[\"\" + changeRecords];\n if (e.batchChanges[\"\" + changeRecords].length) {\n var columnName = void 0;\n for (var i = 0; i < changedRecords.length; i++) {\n editAction({ value: changedRecords[parseInt(i.toString(), 10)], action: 'edit' }, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, columnName);\n }\n }\n if (e.batchChanges[\"\" + deleterecords].length) {\n var deletedRecords = e.batchChanges[\"\" + deleterecords];\n var record = deletedRecords;\n for (var i = 0; i < record.length; i++) {\n this.deleteUniqueID(record[parseInt(i.toString(), 10)].uniqueID);\n var childs = findChildrenRecords(record[parseInt(i.toString(), 10)]);\n for (var c = 0; c < childs.length; c++) {\n this.deleteUniqueID(childs[parseInt(c.toString(), 10)].uniqueID);\n }\n e.batchChanges[\"\" + deleterecords] = e.batchChanges[\"\" + deleterecords].concat(childs);\n }\n }\n this.isAdd = false;\n };\n BatchEdit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[\"\" + idFilter][\"\" + value];\n var id = 'uniqueIDCollection';\n delete this.parent[\"\" + id][\"\" + value];\n };\n BatchEdit.prototype.batchCancelAction = function () {\n var targetElement = 'targetElement';\n var index;\n var parentItem = 'parentItem';\n var indexvalue = 'index';\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var childRecords = 'childRecords';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n if (!isNullOrUndefined(this.batchAddedRecords)) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[\"\" + primaryKey]; }).indexOf(this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]);\n if (index !== -1) {\n data.splice(index, 1);\n }\n if (this.parent.editSettings.newRowPosition === 'Child') {\n index = currentViewRecords.map(function (e) { return e[\"\" + primaryKey]; })\n .indexOf(this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + parentItem] ? this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + parentItem][\"\" + primaryKey]\n : this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]);\n if (!isNullOrUndefined(currentViewRecords[parseInt(index.toString(), 10)])) {\n var children = currentViewRecords[parseInt(index.toString(), 10)][\"\" + childRecords];\n for (var j = 0; children && j < children.length; j++) {\n if (children[parseInt(j.toString(), 10)][\"\" + primaryKey] === this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]) {\n currentViewRecords[parseInt(index.toString(), 10)][\"\" + childRecords].splice(j, 1);\n }\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(this.parent[\"\" + targetElement])) {\n var row = this.parent[\"\" + targetElement].closest('tr');\n this.parent.collapseRow(row);\n this.parent[\"\" + targetElement] = null;\n }\n if (!isNullOrUndefined(this.batchDeletedRecords)) {\n for (var i = 0; i < this.batchDeletedRecords.length; i++) {\n if (!isNullOrUndefined(this.batchDeletedRecords[parseInt(i.toString(), 10)][\"\" + parentItem])) {\n index = currentViewRecords.map(function (e) { return e[\"\" + primaryKey]; })\n .indexOf(this.batchDeletedRecords[parseInt(i.toString(), 10)][\"\" + parentItem][\"\" + primaryKey]);\n var positionIndex = this.batchDeletedRecords[parseInt(i.toString(), 10)][\"\" + indexvalue] === 0 ? this.batchDeletedRecords[parseInt(i.toString(), 10)][\"\" + indexvalue] :\n this.batchDeletedRecords[parseInt(i.toString(), 10)][\"\" + indexvalue] - 1;\n if (!isNullOrUndefined(currentViewRecords[parseInt(index.toString(), 10)])) {\n currentViewRecords[parseInt(index.toString(), 10)][\"\" + childRecords].splice(positionIndex, 0, this.batchDeletedRecords[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.currentViewRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchIndex = 0;\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchDeletedRecords = [];\n this.parent.grid.renderModule.refresh();\n };\n BatchEdit.prototype.batchSave = function (args) {\n if (this.parent.editSettings.mode === 'Batch') {\n var i = void 0;\n var batchChanges = Object.hasOwnProperty.call(args, 'updatedRecords') ? args.updatedRecords : this.parent.getBatchChanges();\n var deletedRecords = 'deletedRecords';\n var addedRecords = 'addedRecords';\n var index = 'index';\n var uniqueID = 'uniqueID';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var primarykey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var level = 'level';\n var addRecords = batchChanges[\"\" + addedRecords];\n var parentItem = 'parentItem';\n var selectedIndex = void 0;\n var addRowIndex = void 0;\n var columnName = void 0;\n var addRowRecord = void 0;\n var childRecords = 'childRecords';\n if (addRecords.length > 1 && this.parent.editSettings.newRowPosition !== 'Bottom') {\n addRecords.reverse();\n }\n if (this.parent.editSettings.newRowPosition !== 'Bottom' && !Object.hasOwnProperty.call(args, 'updatedRecords')) {\n data.splice(data.length - addRecords.length, addRecords.length);\n if (this.parent.editModule['isAddedRowByMethod'] && addRecords.length && !isNullOrUndefined(this.parent.editModule['addRowIndex']) && !this.parent.editModule['isAddedRowByContextMenu']) {\n addRecords.reverse();\n for (var i_1 = 0; i_1 < addRecords.length; i_1++) {\n var index_1 = parseInt(this.parent.getContentTable().getElementsByClassName('e-insertedrow')[parseInt(i_1.toString(), 10)].getAttribute('data-rowindex'), 10);\n data.splice(index_1, 0, addRecords[parseInt(i_1.toString(), 10)]);\n }\n }\n if (!this.parent.allowPaging && data.length !== currentViewRecords.length) {\n if (currentViewRecords.length > addRecords.length) {\n currentViewRecords.splice(currentViewRecords.length - addRecords.length, addRecords.length);\n }\n }\n else {\n var totalRecords = extendArray(data);\n if (totalRecords.length) {\n var startIndex = totalRecords.map(function (e) { return e[\"\" + primarykey_1]; })\n .indexOf(currentViewRecords[0][\"\" + primarykey_1]);\n var endIndex = startIndex + this.parent.grid.pageSettings.pageSize;\n currentViewRecords = totalRecords.splice(startIndex, endIndex);\n }\n }\n }\n if (this.batchAddRowRecord.length === 0) {\n this.batchAddRowRecord.push(this.parent.flatData[args.index]);\n }\n if (this.parent.editModule['isAddedRowByContextMenu']) {\n addRecords.reverse();\n }\n for (i = 0; i < addRecords.length; i++) {\n var taskData = extend({}, addRecords[parseInt(i.toString(), 10)]);\n delete taskData.parentItem;\n delete taskData.uniqueID;\n delete taskData.index;\n delete taskData.level;\n delete taskData.hasChildRecords;\n delete taskData.childRecords;\n delete taskData.parentUniqueID;\n if (!isNullOrUndefined(taskData.primaryParent)) {\n delete taskData.primaryParent;\n }\n if (addRecords.length > 1 && this.parent.editModule['isAddedRowByContextMenu']) {\n var rowPosition = this.parent.editSettings.newRowPosition;\n this.parent.editSettings.newRowPosition = this.parent.editModule['previousNewRowPosition'];\n this.parent.editModule['previousNewRowPosition'] = rowPosition;\n }\n addRecords[parseInt(i.toString(), 10)].taskData = taskData;\n addRowRecord = this.batchAddRowRecord[parseInt(i.toString(), 10)];\n if (isNullOrUndefined(addRowRecord)) {\n addRowRecord = this.batchAddRowRecord[i - 1];\n }\n if (this.isSelfReference) {\n if (!isNullOrUndefined(addRecords[parseInt(i.toString(), 10)].parentItem)) {\n updateParentRow(primarykey_1, addRecords[parseInt(i.toString(), 10)].parentItem, 'add', this.parent, this.isSelfReference, addRecords[parseInt(i.toString(), 10)]);\n }\n }\n if (!isNullOrUndefined(addRowRecord)) {\n addRowIndex = addRowRecord.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n if (isNullOrUndefined(addRecords[parseInt(i.toString(), 10)].parentItem) && this.selectedIndex === -1) {\n selectedIndex = -1;\n addRowRecord = null;\n }\n }\n editAction({ value: addRecords[parseInt(i.toString(), 10)], action: 'add' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n selectedIndex = null;\n if (this.parent.editSettings.newRowPosition === 'Child' && !isNullOrUndefined(addRecords[parseInt(i.toString(), 10)][\"\" + parentItem]) &&\n (isNullOrUndefined(this.parent.editModule['addRowIndex']) || this.isSelfReference)) {\n var indexValue = currentViewRecords.map(function (e) { return e[\"\" + primarykey_1]; })\n .indexOf(addRecords[parseInt(i.toString(), 10)][\"\" + parentItem][\"\" + primarykey_1]);\n var children = currentViewRecords[parseInt(indexValue.toString(), 10)][\"\" + childRecords];\n for (var j = 0; j < children.length; j++) {\n if (children[parseInt(j.toString(), 10)][\"\" + primarykey_1] === addRecords[parseInt(i.toString(), 10)][\"\" + primarykey_1]) {\n currentViewRecords[parseInt(indexValue.toString(), 10)][\"\" + childRecords].splice(j, 1);\n }\n }\n }\n }\n if (batchChanges[\"\" + deletedRecords].length) {\n for (i = 0; i < batchChanges[\"\" + deletedRecords].length; i++) {\n editAction({ value: batchChanges[\"\" + deletedRecords][parseInt(i.toString(), 10)], action: 'delete' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n }\n }\n this.parent.parentData = [];\n for (var i_2 = 0; i_2 < data.length; i_2++) {\n data[parseInt(i_2.toString(), 10)][\"\" + index] = i_2;\n setValue('uniqueIDCollection.' + data[parseInt(i_2.toString(), 10)][\"\" + uniqueID] + '.index', i_2, this.parent);\n if (!data[parseInt(i_2.toString(), 10)][\"\" + level]) {\n this.parent.parentData.push(data[parseInt(i_2.toString(), 10)]);\n }\n }\n }\n this.batchAddRowRecord = this.batchAddedRecords = this.batchRecords = this.batchDeletedRecords = this.currentViewRecords = [];\n if (this.parent.editModule['isAddedRowByContextMenu']) {\n this.parent.editModule['isAddedRowByContextMenu'] = false;\n }\n };\n BatchEdit.prototype.getActualRowObjectIndex = function (index) {\n var rows = this.parent.grid.getDataRows();\n if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && this.selectedIndex > -1) {\n if (!isNullOrUndefined(this.batchRecords[this.addRowIndex]) && this.batchRecords[this.addRowIndex].expanded) {\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n }\n }\n if (index >= rows.length) {\n index = rows.length - 1;\n }\n this.updateChildCount(this.parent.grid.getCurrentViewRecords());\n if (this.batchChildCount) {\n index += this.batchChildCount;\n }\n this.batchChildCount = 0;\n }\n return index;\n };\n BatchEdit.prototype.immutableBatchAction = function (e) {\n e.args.cancel = true;\n var changes = this.parent.grid.getBatchChanges();\n var addedRecords = [];\n var index = 'index';\n if (Object.keys(changes).length) {\n addedRecords = changes.addedRecords;\n }\n for (var i = 0; i < addedRecords.length; i++) {\n e.rows.splice(addedRecords[parseInt(i.toString(), 10)][\"\" + index], 1);\n }\n };\n BatchEdit.prototype.nextCellIndex = function (args) {\n var index = 'index';\n var rowIndex = 'rowIndex';\n if (this.parent.getSelectedRows().length) {\n args[\"\" + index] = this.parent.getSelectedRows()[0][\"\" + rowIndex];\n }\n else {\n args[\"\" + index] = this.batchIndex;\n }\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","import { Grid, Edit as GridEdit, getUid, getObject, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { parentsUntil } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, extend, setValue, removeClass, addClass, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, isCountRequired, isRemoteData } from '../utils';\nimport { editAction, updateParentRow } from './crud-actions';\nimport { BatchEdit } from './batch-edit';\n/**\n * TreeGrid Edit Module\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for Edit module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Edit(parent) {\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.prevAriaRowIndex = '-1';\n this.isAddedRowByMethod = false;\n this.isAddedRowByContextMenu = false;\n Grid.Inject(GridEdit);\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.previousNewRowPosition = null;\n this.internalProperties = {};\n this.batchEditModule = new BatchEdit(this.parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Edit module name\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.addEventListener = function () {\n this.parent.on(events.crudAction, this.crudAction, this);\n this.parent.on(events.beginEdit, this.beginEdit, this);\n this.parent.on(events.beginAdd, this.beginAdd, this);\n this.parent.on(events.recordDoubleClick, this.recordDoubleClick, this);\n this.parent.on(events.cellSave, this.cellSave, this);\n this.parent.on(events.batchCancel, this.batchCancel, this);\n this.parent.grid.on(events.keyPressed, this.keyPressed, this);\n this.parent.grid.on('batchedit-form', this.lastCellTab, this);\n this.parent.grid.on('content-ready', this.contentready, this);\n this.parent.on(events.cellEdit, this.cellEdit, this);\n this.parent.on('actionBegin', this.editActionEvents, this);\n this.parent.on('actionComplete', this.editActionEvents, this);\n this.parent.grid.on(events.doubleTap, this.recordDoubleClick, this);\n this.parent.grid.on('dblclick', this.gridDblClick, this);\n this.parent.grid.on('recordAdded', this.customCellSave, this);\n this.parent.on('savePreviousRowPosition', this.savePreviousRowPosition, this);\n // this.parent.on(events.beforeDataBound, this.beforeDataBound, this);\n this.parent.grid.on(events.beforeStartEdit, this.beforeStartEdit, this);\n this.parent.grid.on(events.beforeBatchCancel, this.beforeBatchCancel, this);\n this.parent.grid.on('reset-edit-props', this.resetIsOnBatch, this);\n this.parent.grid.on('get-row-position', this.getRowPosition, this);\n };\n Edit.prototype.gridDblClick = function (e) {\n this.doubleClickTarget = e.target;\n if (e.target.classList.contains('e-frame') && this.parent.getCurrentViewRecords().length === 0) {\n this.doubleClickTarget = null;\n }\n if (e.target.classList.contains('e-treegridcollapse') || e.target.classList.contains('e-treegridexpand')) {\n var tr = parentsUntil(e.target, 'e-row');\n var rowIndex = tr && parseInt(tr.getAttribute('data-rowindex'), 10);\n if (!isNullOrUndefined(rowIndex) && rowIndex >= 0 && this.parent.allowPaging) {\n /* eslint-disable-next-line */\n this.parent.grid.getDataRows()[rowIndex].dataset.uid = this.parent.grid.contentModule.getRows()[rowIndex].uid;\n }\n }\n };\n Edit.prototype.getRowPosition = function (addArgs) {\n addArgs.newRowPosition = this.parent.editSettings.newRowPosition;\n addArgs.addRowIndex = this.addRowIndex;\n addArgs.dataRowIndex = +this.prevAriaRowIndex;\n };\n Edit.prototype.beforeStartEdit = function (args) {\n if (this.parent.editSettings.mode === 'Cell') {\n this.parent.trigger(events.actionBegin, args);\n }\n };\n Edit.prototype.beforeBatchCancel = function (args) {\n if (this.parent.editSettings.mode === 'Cell') {\n args['requestType'] = 'cancel';\n this.parent.trigger(events.actionComplete, args);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.crudAction, this.crudAction);\n this.parent.off(events.beginEdit, this.beginEdit);\n this.parent.off(events.beginAdd, this.beginAdd);\n this.parent.off(events.recordDoubleClick, this.recordDoubleClick);\n this.parent.off(events.batchCancel, this.batchCancel);\n this.parent.grid.off(events.keyPressed, this.keyPressed);\n this.parent.grid.off('batchedit-form', this.lastCellTab);\n this.parent.grid.off('content-ready', this.contentready);\n this.parent.off(events.cellEdit, this.cellEdit);\n this.parent.off('actionBegin', this.editActionEvents);\n this.parent.off('actionComplete', this.editActionEvents);\n this.parent.grid.off('recordAdded', this.customCellSave);\n this.parent.grid.off(events.doubleTap, this.recordDoubleClick);\n this.parent.off('savePreviousRowPosition', this.savePreviousRowPosition);\n this.parent.grid.off(events.beforeStartEdit, this.beforeStartEdit);\n this.parent.grid.off(events.beforeBatchCancel, this.beforeBatchCancel);\n this.parent.grid.off('dblclick', this.gridDblClick);\n this.parent.grid.off('reset-edit-props', this.resetIsOnBatch);\n this.parent.grid.off('get-row-position', this.getRowPosition);\n //this.parent.grid.off('click', this.gridSingleClick);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {Column[]} cols - Column property Collection\n * @hidden\n * @returns {void}\n */\n Edit.prototype.applyFormValidation = function (cols) {\n this.parent.grid.editModule.applyFormValidation(cols);\n };\n Edit.prototype.editActionEvents = function (args) {\n var eventArgs = getObject('editAction', args);\n var eventName = getObject('name', eventArgs);\n var treeObj = this.parent;\n var adaptor = treeObj.dataSource.adaptor;\n if ((isRemoteData(treeObj) || adaptor instanceof RemoteSaveAdaptor) &&\n (eventArgs.requestType === 'save' && eventArgs.action === 'add') &&\n (treeObj.editSettings.newRowPosition === 'Child' || treeObj.editSettings.newRowPosition === 'Below'\n || treeObj.editSettings.newRowPosition === 'Above')) {\n if (eventName === 'actionBegin') {\n var rowIndex = isNullOrUndefined(eventArgs.row) || !Object.keys(eventArgs.row).length ? this.selectedIndex :\n eventArgs.row.rowIndex - 1;\n var keyData = (!isNullOrUndefined(rowIndex) && rowIndex !== -1) ?\n treeObj.getCurrentViewRecords()[parseInt(rowIndex.toString(), 10)][treeObj.getPrimaryKeyFieldNames()[0]] : -1;\n treeObj.grid.query.addParams('relationalKey', keyData);\n }\n else if (eventName === 'actionComplete') {\n var paramsLength = treeObj.grid.query.params.length;\n for (var i = 0; i < paramsLength; i++) {\n if (treeObj.grid.query.params[parseInt(i.toString(), 10)].key === 'relationalKey') {\n treeObj.grid.query.params.splice(i);\n }\n }\n }\n }\n if (this.parent.enableInfiniteScrolling && eventName === 'actionComplete') {\n this.infiniteAddAction(eventArgs);\n }\n if (this.parent.editSettings.mode === 'Batch' && eventArgs.requestType === 'paging') {\n this.parent.notify('batchPageAction', {});\n }\n };\n Edit.prototype.infiniteAddAction = function (args) {\n if ((args.requestType === 'save' && args.action === 'add') || args.requestType === 'delete') {\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.selectedIndex !== -1\n && (args.requestType === 'save' && args.action === 'add')) {\n var rowObjects = this.parent.grid.getRowsObject();\n var newRowObject = rowObjects.splice(0, 1)[0];\n var newRowObjectIndex = this.addRowIndex;\n var currentData = this.parent.getCurrentViewRecords();\n if (this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n newRowObjectIndex += findChildrenRecords(currentData[newRowObjectIndex + 1]).length;\n }\n newRowObjectIndex = this.parent.editSettings.newRowPosition === 'Below' ? newRowObjectIndex + 1 : newRowObjectIndex;\n rowObjects.splice(newRowObjectIndex, 0, newRowObject);\n var newRecord = currentData.splice(0, 1)[0];\n currentData.splice(newRowObjectIndex, 0, newRecord);\n this.updateInfiniteCurrentViewData(newRecord, this.addRowIndex);\n }\n var movableRows = this.parent.grid.getRows();\n var movableRowsObject = this.parent.grid.getRowsObject();\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (!isCache) {\n resetRowIndex(this.parent.grid, this.parent.grid.getRowsObject(), this.parent.grid.getRows(), 0);\n this.updateIndex(this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n }\n if (!isCache && this.parent.getFrozenColumns() > 0) {\n resetRowIndex(this.parent.grid, movableRowsObject, movableRows, 0);\n this.updateIndex(this.parent.grid.dataSource, movableRows, this.parent.getCurrentViewRecords());\n }\n }\n };\n Edit.prototype.updateInfiniteCurrentViewData = function (newRecord, newRowIndex) {\n var _this = this;\n var infiniteData = 'infiniteCurrentViewData';\n var updateCurrentViewData = 'updateCurrentViewData';\n var size = Math.ceil(newRowIndex / this.parent.grid.pageSettings.pageSize);\n var page = size > 0 ? size : 1;\n var dataIndex = newRowIndex - ((page - 1) * this.parent.pageSettings.pageSize);\n var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[\"\" + infiniteData];\n infiniteCurrentViewData[1].splice(0, 1);\n var data = infiniteCurrentViewData[parseInt(page.toString(), 10)];\n if (!isNullOrUndefined(this.addRowRecord)) {\n data.filter(function (e, index) {\n if (e.uniqueID === _this.addRowRecord.uniqueID) {\n dataIndex = index;\n }\n });\n if (this.addRowRecord.hasChildRecords && this.addRowRecord.childRecords.length &&\n this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n dataIndex += findChildrenRecords(this.addRowRecord).length;\n }\n }\n if (dataIndex >= this.parent.pageSettings.pageSize) {\n page += 1;\n data = infiniteCurrentViewData[parseInt(page.toString(), 10)];\n dataIndex = dataIndex - this.parent.pageSettings.pageSize >= 0 ? dataIndex - this.parent.pageSettings.pageSize : 0;\n }\n dataIndex = this.parent.editSettings.newRowPosition === 'Below' ? dataIndex + 1 : dataIndex;\n data.splice(dataIndex, 0, newRecord);\n this.parent.grid.infiniteScrollModule[\"\" + updateCurrentViewData]();\n };\n Edit.prototype.recordDoubleClick = function (args) {\n var target = args.target;\n if (isNullOrUndefined(target.closest('td.e-rowcell'))) {\n return;\n }\n if (!(this.parent.grid.editSettings.allowEditing) || this.parent.grid.isEdit) {\n return;\n }\n var column = this.parent.grid.getColumnByIndex(+target.closest('td.e-rowcell').getAttribute('data-colindex'));\n if (this.parent.editSettings.mode === 'Cell' && !this.isOnBatch && column && !column.isPrimaryKey &&\n this.parent.editSettings.allowEditing && column.allowEditing && !(target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && this.parent.editSettings.allowEditOnDblClick) {\n this.isOnBatch = true;\n this.parent.grid.setProperties({ selectedRowIndex: args.rowIndex }, true);\n if (this.parent.enableVirtualization) {\n var tr = parentsUntil(args.target, 'e-row');\n this.prevAriaRowIndex = tr.getAttribute('data-rowindex');\n tr.setAttribute('data-rowindex', tr.rowIndex + '');\n }\n this.updateGridEditMode('Batch');\n }\n else if (this.parent.editSettings.mode === 'Cell' && (!column.allowEditing || column.isPrimaryKey)) {\n this.isOnBatch = true;\n this.updateGridEditMode('Batch');\n }\n };\n Edit.prototype.updateGridEditMode = function (mode) {\n this.parent.grid.setProperties({ editSettings: { mode: mode } }, true);\n var updateMethod = getObject('updateEditObj', this.parent.grid.editModule);\n updateMethod.apply(this.parent.grid.editModule);\n this.parent.grid.isEdit = false;\n };\n Edit.prototype.resetIsOnBatch = function () {\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Cell') {\n this.isOnBatch = false;\n this.updateGridEditMode('Normal');\n }\n };\n Edit.prototype.keyPressed = function (args) {\n if (this.isOnBatch) {\n this.keyPress = args.action;\n }\n if (args.action === 'f2') {\n this.recordDoubleClick(args);\n }\n if (args.action === 'escape') {\n this.parent.closeEdit();\n }\n };\n Edit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[\"\" + idFilter][\"\" + value];\n var id = 'uniqueIDCollection';\n delete this.parent[\"\" + id][\"\" + value];\n };\n Edit.prototype.cellEdit = function (args) {\n var _this = this;\n var promise = 'promise';\n var prom = args[\"\" + promise];\n delete args[\"\" + promise];\n if (this.parent.enableVirtualization && !isNullOrUndefined(this.prevAriaRowIndex) && this.prevAriaRowIndex !== '-1') {\n args.row.setAttribute('data-rowindex', this.prevAriaRowIndex);\n this.prevAriaRowIndex = undefined;\n }\n if (this.keyPress !== 'enter') {\n this.parent.trigger(events.cellEdit, args, function (celleditArgs) {\n if (!celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.enableToolbarItems('edit');\n }\n else if (celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.isOnBatch = false;\n _this.updateGridEditMode('Normal');\n }\n if (!isNullOrUndefined(prom)) {\n prom.resolve(celleditArgs);\n }\n });\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-summarycell'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell') {\n if (this.keyPress === 'tab' || this.keyPress === 'shiftTab') {\n this.keyPress = null;\n }\n else if (this.keyPress === 'enter') {\n args.cancel = true;\n this.keyPress = null;\n setValue('isEditCollapse', false, this.parent);\n }\n if (!args.columnObject.allowEditing) {\n args.cancel = true;\n }\n }\n if (this.parent.enableVirtualization) {\n this.parent.grid.contentModule['editedRowIndex'] = this.parent.grid.editModule.editModule['index'];\n }\n // if (this.isAdd && this.parent.editSettings.mode === 'Batch' && !args.cell.parentElement.classList.contains('e-insertedrow')) {\n // this.isAdd = false;\n // }\n };\n Edit.prototype.enableToolbarItems = function (request) {\n if (!isNullOrUndefined(this.parent.grid.toolbarModule)) {\n var toolbarID = this.parent.element.id + '_gridcontrol_';\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'add', toolbarID + 'edit', toolbarID + 'delete'], request === 'save');\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'update', toolbarID + 'cancel'], request === 'edit');\n }\n };\n Edit.prototype.batchCancel = function () {\n if (this.parent.editSettings.mode === 'Cell') {\n var cellDetails = getValue('editModule.cellDetails', this.parent.grid.editModule);\n var treeCell = this.parent.getCellFromIndex(cellDetails.rowIndex, this.parent.treeColumnIndex);\n this.parent.renderModule.cellRender({\n data: cellDetails.rowData,\n cell: treeCell,\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex]\n });\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.notify('batchCancelAction', {});\n }\n };\n Edit.prototype.customCellSave = function (args) {\n if (isCountRequired(this.parent) && this.parent.editSettings.mode === 'Cell' && args.action === 'edit') {\n this.updateCell(args, args.rowIndex);\n this.afterCellSave(args, args.row, args.rowIndex);\n }\n };\n Edit.prototype.cellSave = function (args) {\n var _this = this;\n if (this.parent.editSettings.mode === 'Cell' && this.parent.element.querySelector('form')) {\n args.cancel = true;\n var editModule = 'editModule';\n setValue('isEditCollapse', true, this.parent);\n args.rowData[args.columnName] = args.value;\n var row_1;\n if (isNullOrUndefined(args.cell)) {\n row_1 = this.parent.grid.editModule[\"\" + editModule].form.parentElement.parentNode;\n }\n else {\n row_1 = args.cell.parentNode;\n }\n var rowIndex_1;\n var primaryKeys_1 = this.parent.getPrimaryKeyFieldNames();\n if (isNullOrUndefined(row_1)) {\n this.parent.grid.getCurrentViewRecords().filter(function (e, i) {\n if (e[primaryKeys_1[0]] === args.rowData[primaryKeys_1[0]]) {\n rowIndex_1 = i;\n return;\n }\n });\n }\n else {\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (this.parent.getRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getRows().indexOf(row_1);\n }\n else {\n rowIndex_1 = this.parent.getRows().indexOf(row_1);\n }\n }\n else {\n rowIndex_1 = (this.parent.getRows().indexOf(row_1) === -1 && (this.parent.getFrozenColumns() > 0)) ?\n this.parent.grid.getRows().indexOf(row_1) : this.parent.getRows().indexOf(row_1);\n }\n }\n var arg = {};\n extend(arg, args);\n arg.cancel = false;\n arg.type = 'save';\n row_1 = this.parent.grid.getRows()[row_1.rowIndex];\n this.parent.trigger(events.actionBegin, arg);\n if (!arg.cancel) {\n if ((row_1.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'tab') {\n this.isTabLastRow = true;\n }\n if (!isRemoteData(this.parent) &&\n !(this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n if (isCountRequired(this.parent)) {\n var eventPromise = 'eventPromise';\n var editArgs = { requestType: 'save', data: args.rowData, action: 'edit', row: row_1,\n rowIndex: rowIndex_1, rowData: args.rowData, columnName: args.columnName,\n filterChoiceCount: null, excelSearchOperator: null };\n this.parent.grid.getDataModule()[\"\" + eventPromise](editArgs, this.parent.grid.query);\n }\n else {\n this.updateCell(args, rowIndex_1);\n setValue('isEdit', false, this.parent.grid);\n this.afterCellSave(args, row_1, rowIndex_1);\n }\n }\n else if (isRemoteData(this.parent) ||\n (this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n var query = this.parent.grid.query;\n if (this.parent['isGantt'] && !this.parent.loadChildOnDemand) {\n this.updateCell(args, rowIndex_1);\n setValue('isEdit', false, this.parent.grid);\n this.afterCellSave(args, row_1, rowIndex_1);\n }\n else {\n var crud = null;\n crud = this.parent.grid.dataSource.update(primaryKeys_1[0], args.rowData, query.fromTable, query, args.previousValue);\n crud.then(function (e) {\n if (!isNullOrUndefined(e)) {\n args.rowData[args.columnName] = e[args.columnName];\n }\n _this.updateCell(args, rowIndex_1);\n setValue('isEdit', false, _this.parent.grid);\n _this.afterCellSave(args, row_1, rowIndex_1);\n });\n }\n }\n }\n else {\n this.parent.grid.isEdit = true;\n }\n }\n if (this.parent.enableVirtualization) {\n this.parent.grid.contentModule['virtualData'] = {};\n }\n };\n Edit.prototype.afterCellSave = function (args, row, rowIndex) {\n if (this.parent.grid.aggregateModule) {\n this.parent.grid.aggregateModule.refresh(args.rowData);\n }\n this.parent.grid.editModule.destroyWidgets([this.parent.grid.getColumnByField(args.columnName)]);\n this.parent.grid.editModule.formObj.destroy();\n if (this.keyPress !== 'tab' && this.keyPress !== 'shiftTab') {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n this.enableToolbarItems('save');\n removeClass([row], ['e-editedrow', 'e-batchrow']);\n removeClass(row.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n if (this.parent['isCellSaveFocus'] !== false) {\n this.parent.grid.focusModule.restoreFocus();\n }\n editAction({ value: args.rowData, action: 'edit' }, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, args.columnName);\n if ((row.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'enter') {\n this.keyPress = null;\n }\n var saveArgs = {\n type: 'save', column: this.parent.getColumnByField(args.columnName), data: args.rowData,\n previousData: args.previousValue, row: row, target: args.cell\n };\n if (this.parent.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n this.parent.grid.refresh();\n }\n this.parent.trigger(events.actionComplete, saveArgs);\n };\n Edit.prototype.lastCellTab = function () {\n if (!this.parent.grid.isEdit && this.isOnBatch && this.keyPress === 'tab' && this.parent.editSettings.mode === 'Cell') {\n if (!this.parent.editSettings.allowNextRowEdit) {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n this.keyPress = null;\n }\n else {\n this.enableToolbarItems('edit');\n }\n }\n };\n Edit.prototype.updateCell = function (args, rowIndex) {\n this.parent.grid.editModule.updateCell(rowIndex, args.columnName, args.rowData[args.columnName]);\n this.parent.grid.getRowsObject()[parseInt(rowIndex.toString(), 10)].data = args.rowData;\n };\n Edit.prototype.crudAction = function (details, columnName) {\n editAction(details, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, columnName, this.addRowRecord);\n this.parent.parentData = [];\n var data = this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n data[parseInt(i.toString(), 10)].index = i;\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n if (details.value[\"\" + key] === data[parseInt(i.toString(), 10)][\"\" + key]) {\n if (details.action === 'add') {\n data[parseInt(i.toString(), 10)].level = this.internalProperties.level;\n data[parseInt(i.toString(), 10)].taskData = this.internalProperties.taskData;\n data[parseInt(i.toString(), 10)].uniqueID = this.internalProperties.uniqueID;\n if (!isNullOrUndefined(this.internalProperties.parentItem)) {\n data[parseInt(i.toString(), 10)].parentItem = this.internalProperties.parentItem;\n data[parseInt(i.toString(), 10)].parentUniqueID = this.internalProperties.parentUniqueID;\n }\n data[parseInt(i.toString(), 10)].childRecords = this.internalProperties.childRecords;\n }\n }\n setValue('uniqueIDCollection.' + data[parseInt(i.toString(), 10)].uniqueID + '.index', i, this.parent);\n var adaptor = this.parent.dataSource.adaptor;\n if ((isRemoteData(this.parent) || adaptor instanceof RemoteSaveAdaptor)) {\n setValue('uniqueIDCollection.' + data[parseInt(i.toString(), 10)].uniqueID, data[parseInt(i.toString(), 10)], this.parent);\n }\n if (!data[parseInt(i.toString(), 10)].level) {\n this.parent.parentData.push(data[parseInt(i.toString(), 10)]);\n }\n }\n if (!this.parent.enableInfiniteScrolling) {\n if (details.action === 'add' && this.previousNewRowPosition != null) {\n this.parent.setProperties({ editSettings: { newRowPosition: this.previousNewRowPosition } }, true);\n this.previousNewRowPosition = null;\n }\n }\n };\n Edit.prototype.updateIndex = function (data, rows, records) {\n for (var j = 0; j < this.parent.getDataRows().length; j++) {\n var data1 = records[parseInt(j.toString(), 10)];\n if (!isNullOrUndefined(data1)) {\n var index = getValue('uniqueIDCollection.' + data1.uniqueID + '.index', this.parent);\n data1.index = index;\n if (!isNullOrUndefined(data1.parentItem)) {\n var parentIndex = getValue('uniqueIDCollection.' + data1.parentItem.uniqueID + '.index', this.parent);\n data1.parentItem.index = parentIndex;\n }\n }\n }\n var count = -1;\n var treeColIndex = this.parent.treeColumnIndex;\n if (this.parent.getFrozenColumns() > 0) {\n var cells = rows[0].querySelectorAll('.e-rowcell');\n for (var l = 0; l < cells.length; l++) {\n if (cells[parseInt(l.toString(), 10)].classList.contains('e-gridrowindex0level0')) {\n treeColIndex = l;\n break;\n }\n }\n }\n for (var k = 0; k < this.parent.getRows().length; k++) {\n if (!rows[parseInt(k.toString(), 10)].classList.contains('e-detailrow')) {\n count++;\n }\n var data2 = records[parseInt(count.toString(), 10)];\n if (!isNullOrUndefined(data2)) {\n var index = data2.index;\n var level = data2.level;\n var row = rows[parseInt(k.toString(), 10)];\n if (!isNullOrUndefined(data2.parentItem)) {\n index = getValue('uniqueIDCollection.' + data2.parentItem.uniqueID + '.index', this.parent);\n }\n var treecell = row.cells[parseInt(treeColIndex.toString(), 10)];\n if (!isNullOrUndefined(treecell)) {\n for (var l = 0; l < treecell.classList.length; l++) {\n var value = treecell.classList[parseInt(l.toString(), 10)];\n var remove = /e-gridrowindex/i;\n var removed = /e-griddetailrowindex/i;\n var result = value.match(remove);\n var results = value.match(removed);\n if (result != null) {\n removeClass([treecell], value);\n }\n if (results != null) {\n removeClass([treecell], value);\n }\n }\n if (!rows[parseInt(k.toString(), 10)].classList.contains('e-detailrow')) {\n addClass([treecell], 'e-gridrowindex' + index + 'level' + level);\n }\n else {\n addClass([treecell], 'e-griddetailrowindex' + index + 'level' + level);\n }\n }\n }\n }\n };\n Edit.prototype.beginAdd = function () {\n var position;\n var index = this.addRowIndex;\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch') {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n records = this.batchEditModule.getBatchRecords();\n }\n }\n var rows = this.parent.grid.getDataRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('data-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n if (this.parent.editSettings.mode !== 'Dialog') {\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n }\n else if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n position = 'after';\n if (!isNullOrUndefined(records[parseInt(index.toString(), 10)]) &&\n records[parseInt(index.toString(), 10)].expanded) {\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n index += findChildrenRecords(records[parseInt(index.toString(), 10)]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.batchEditModule.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else if (!this.parent.enableVirtualization) {\n index += findChildrenRecords(records[parseInt(index.toString(), 10)]).length;\n }\n }\n }\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange\n && (index || (this.parent.editSettings.newRowPosition === 'Child'\n || this.parent.editSettings.newRowPosition === 'Below'))) {\n if (index >= rows.length - 1) {\n index = rows.length - 2;\n }\n var r = 'rows';\n var newRowObject = this.parent.grid.contentModule[\"\" + r][0];\n var focussedElement = document.activeElement;\n rows[index + 1][\"\" + position](rows[0]);\n setValue('batchIndex', index + 1, this.batchEditModule);\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Above' ? index : index + 1;\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.grid.contentModule[\"\" + r].splice(0, 1);\n this.parent.grid.contentModule[\"\" + r].splice(rowObjectIndex, 0, newRowObject);\n }\n if (this.parent.editSettings.mode === 'Row' || this.parent.editSettings.mode === 'Cell') {\n var errors = this.parent.grid.getContentTable().querySelectorAll('.e-griderror');\n for (var i = 0; i < errors.length; i++) {\n errors[parseInt(i.toString(), 10)].remove();\n }\n setValue('errorRules', [], this.parent.grid.editModule.formObj);\n }\n if (isVirtualization) {\n this.prevAriaRowIndex = '-1';\n }\n if (!this.parent.enableVirtualization || this.parent.enableVirtualization && !Object.keys(this.parent.grid.contentModule['emptyRowData']).length) {\n focussedElement.focus();\n }\n if (this.parent.enableVirtualization && !Object.keys(this.parent.grid.contentModule['emptyRowData']).length) {\n this.parent.grid.contentModule['createEmptyRowdata']();\n }\n }\n }\n if (this.parent.editSettings.mode === 'Batch' && !isNullOrUndefined(this.addRowIndex) && this.addRowIndex !== -1 && this['isAddedRowByMethod'] && !this.isAddedRowByContextMenu) {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n var batchAddedRecords = this.parent.getBatchChanges()['addedRecords'];\n var newlyAddedRecord = void 0;\n if (batchAddedRecords.length) {\n for (var i = 0; i < batchAddedRecords.length; i++) {\n if (isNullOrUndefined(batchAddedRecords[parseInt(i.toString(), 10)].uniqueID)) {\n newlyAddedRecord = batchAddedRecords[parseInt(i.toString(), 10)];\n }\n }\n }\n var args = {\n action: 'add',\n data: newlyAddedRecord,\n index: index,\n seletedRow: 0\n };\n this.beginAddEdit(args);\n this.batchEditModule['batchAddRowRecord'].push(this.batchEditModule['addRowRecord']);\n this.batchEditModule['batchAddedRecords'].push(args['data']);\n }\n };\n // private beforeDataBound(args: BeforeDataBoundArgs): void {\n // if (this.parent.grid.isEdit && this.parent.dataSource instanceof DataManager &&\n // this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor) {\n // let action: string = getValue('action', args);\n // let data: Object = getValue('data', args);\n // if (action === 'edit' && !isNullOrUndefined(this.editedData)) {\n // data = extend(this.editedData, data);\n // this.editedData = null;\n // }\n // if (!isNullOrUndefined(this.addedData)) {\n // let addedData: Object = args.result[args.result.length - 1];\n // addedData = extend(this.addedData, addedData);\n // this.addedData = null;\n // args.result.splice(this.addedIndex, 0, addedData);\n // args.result.splice(args.result.length, 1);\n // }\n // }\n // }\n Edit.prototype.beginEdit = function (args) {\n if (args.requestType === 'refresh' && this.isOnBatch) {\n args.cancel = true;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell' && args.requestType === 'beginEdit') {\n args.cancel = true;\n return;\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-frame'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (args.requestType === 'delete') {\n var data_1 = args.data;\n if (isNullOrUndefined(args.data[0].uniqueID)) {\n var primaryKeys_2 = this.parent.getPrimaryKeyFieldNames();\n var _loop_1 = function (i) {\n this_1.parent.flatData.filter(function (e) {\n if (e[\"\" + primaryKeys_2[0]] === args.data[parseInt(i.toString(), 10)][primaryKeys_2[0]]) {\n data_1[parseInt(i.toString(), 10)] = e;\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < data_1.length; i++) {\n _loop_1(i);\n }\n }\n for (var i = 0; i < data_1.length; i++) {\n this.deleteUniqueID(data_1[parseInt(i.toString(), 10)].uniqueID);\n var childs = findChildrenRecords(data_1[parseInt(i.toString(), 10)]);\n for (var c = 0; c < childs.length; c++) {\n this.deleteUniqueID(childs[parseInt(c.toString(), 10)].uniqueID);\n }\n args.data = args.data.concat(childs);\n }\n }\n if (args.requestType === 'add' || (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling))) {\n if (!(this.parent.grid.selectedRowIndex === -1 && this.isAddedRowByMethod)\n && args.index === this.parent.grid.selectedRowIndex || args.index === 0) {\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n }\n if (this.parent.enableVirtualization) {\n var selector = '.e-row[data-rowindex=\"' + this.selectedIndex + '\"]';\n var row = void 0;\n if (this.selectedIndex > -1 && this.parent.editSettings.newRowPosition !== 'Top' &&\n this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.prevAriaRowIndex = this.selectedIndex.toString();\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n if (this.prevAriaRowIndex && this.prevAriaRowIndex !== '-1') {\n selector = '.e-row[data-rowindex=\"' + this.prevAriaRowIndex + '\"]';\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n this.addRowIndex = 0;\n }\n }\n }\n else {\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n if (args.index !== 0) {\n this.addRowIndex = args.index;\n }\n else {\n this.addRowIndex = this.parent.grid.selectedRowIndex;\n }\n }\n else {\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n }\n }\n if ((this.isAddedRowByMethod || (this.isAddedRowByContextMenu && this.parent.grid.selectedRowIndex !== -1)) &&\n (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.addRowRecord = this.parent.flatData[this.parent.grid.selectedRowIndex];\n if (this.parent.enableVirtualization && this.isAddedRowByContextMenu) {\n this.addRowRecord = this.parent.getCurrentViewRecords()[this.addRowIndex];\n }\n }\n else {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n }\n if (this.isAddedRowByMethod && args.index !== 0) {\n this.addRowRecord = this.parent.flatData[args.index];\n this.addRowIndex = args.index;\n }\n if (this.parent.editSettings.newRowPosition === 'Child' &&\n !isNullOrUndefined(this.parent.getSelectedRecords()[0])) {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n if (isNullOrUndefined(this.addRowRecord) && this.parent.getCurrentViewRecords().length > this.addRowIndex &&\n args.requestType === 'save' && this.parent.getSelectedRecords().length !== 0) {\n this.addRowRecord = this.parent.getCurrentViewRecords()[this.addRowIndex];\n }\n this.isAddedRowByMethod = false;\n args = this.beginAddEdit(args);\n // if (args.requestType === 'save' &&\n // ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor))) {\n // if (args.action === 'edit') {\n // this.editedData = args.data;\n // } else if (args.action === 'add') {\n // this.addedData = value;\n // }\n // }\n };\n Edit.prototype.savePreviousRowPosition = function () {\n if (this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n };\n Edit.prototype.beginAddEdit = function (args) {\n var value = args.data;\n if (args.action === 'add') {\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var position = null;\n value.taskData = isNullOrUndefined(value.taskData) ? extend({}, args.data) : value.taskData;\n var currentData = void 0;\n if (this.parent.enableVirtualization && args.index !== 0) {\n currentData = this.parent.flatData;\n }\n else if (this.parent.editSettings.mode === 'Batch' && this['isAddedRowByMethod'] && !isNullOrUndefined(this.addRowIndex)) {\n currentData = this.batchEditModule['batchRecords'];\n }\n else {\n currentData = this.parent.grid.getCurrentViewRecords();\n }\n if (this.parent.enableVirtualization && args.index !== 0) {\n this.addRowIndex = this.parent.flatData.indexOf(this.addRowRecord);\n this.selectedIndex = this.addRowIndex;\n }\n var index = this.addRowIndex;\n value.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + value.uniqueID, value, this.parent);\n var level = 0;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentItem = void 0;\n var parentIdMapping = void 0;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? currentData.indexOf(currentData[0]) : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withinRange = this.parent.enableVirtualization && args.index !== 0 ? true :\n this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n if (currentData.length) {\n idMapping = currentData[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = currentData[this.addRowIndex][this.parent.parentIdMapping];\n if (currentData[this.addRowIndex].parentItem) {\n parentUniqueID = currentData[this.addRowIndex].parentItem.uniqueID;\n }\n parentItem = currentData[this.addRowIndex].parentItem;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && currentData.length) {\n level = currentData[this.addRowIndex].level;\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n index = currentData[this.addRowIndex].index;\n }\n else if (this.parent.editSettings.newRowPosition === 'Below') {\n position = 'after';\n var childRecordCount = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex = currentData[this.addRowIndex].index;\n index = (childRecordCount > 0) ? (currentDataIndex + childRecordCount) : (currentDataIndex);\n }\n else if (this.parent.editSettings.newRowPosition === 'Child') {\n position = 'after';\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange) {\n value.parentItem = extend({}, currentData[this.addRowIndex]);\n value.parentUniqueID = value.parentItem.uniqueID;\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n var childRecordCount1 = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex1 = currentData[this.addRowIndex].index;\n if (this.selectedIndex >= 0) {\n value.level = level + 1;\n }\n index = (childRecordCount1 > 0) ? (currentDataIndex1 + childRecordCount1) : (currentDataIndex1);\n if (this.isSelfReference) {\n if (!this.parent.isLocalData && this.parent.editModule.selectedIndex === -1) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = null;\n }\n else {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = idMapping;\n }\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below') {\n if ((this.selectedIndex > -1 || isVirtualization) && level && withinRange) {\n value.parentUniqueID = parentUniqueID;\n value.parentItem = extend({}, parentItem);\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n value.level = level;\n if (this.isSelfReference) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = parentIdMapping;\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (position != null && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n args.index = position === 'before' ? index : index + 1;\n }\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n var dataSource = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n args.index = dataSource.length;\n }\n }\n if (isNullOrUndefined(value.level)) {\n value.level = level;\n }\n value.hasChildRecords = false;\n value.childRecords = [];\n value.index = 0;\n }\n if (args.action === 'add') {\n this.internalProperties = { level: value.level, parentItem: value.parentItem, uniqueID: value.uniqueID,\n taskData: value.taskData, parentUniqueID: isNullOrUndefined(value.parentItem) ? undefined : value.parentItem.uniqueID,\n childRecords: value.childRecords };\n }\n if (args.requestType === 'delete') {\n var deletedValues = args.data;\n for (var i = 0; i < deletedValues.length; i++) {\n if (deletedValues[parseInt(i.toString(), 10)].parentItem) {\n var parentItem = getParentData(this.parent, deletedValues[parseInt(i.toString(), 10)].parentItem.uniqueID);\n if (!isNullOrUndefined(parentItem) && parentItem.hasChildRecords) {\n var childIndex = parentItem.childRecords.indexOf(deletedValues[parseInt(i.toString(), 10)]);\n parentItem.childRecords.splice(childIndex, 1);\n }\n }\n }\n }\n return args;\n };\n /**\n * If the data,index and position given, Adds the record to treegrid rows otherwise it will create edit form.\n *\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index, position) {\n if (this.parent.editSettings.newRowPosition === this.previousNewRowPosition || this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n if (!this.isSelfReference && !isNullOrUndefined(data) && Object.hasOwnProperty.call(data, this.parent.childMapping)) {\n var addRecords = [];\n var previousEditMode = this.parent.editSettings.mode;\n var previousGridEditMode = this.parent.grid.editSettings.mode;\n addRecords.push(data);\n this.parent.setProperties({ editSettings: { mode: 'Batch' } }, true);\n this.parent.grid.setProperties({ editSettings: { mode: 'Batch' } }, true);\n if (!isNullOrUndefined(position)) {\n this.parent.setProperties({ editSettings: { newRowPosition: position } }, true);\n }\n var updatedRecords = { addedRecords: addRecords, changedRecords: [], deletedRecords: [] };\n this.parent.notify(events.batchSave, { updatedRecords: updatedRecords, index: index });\n this.parent.setProperties({ editSettings: { mode: previousEditMode } }, true);\n this.parent.grid.setProperties({ editSettings: { mode: previousGridEditMode } }, true);\n this.parent.refresh();\n }\n else {\n if (data) {\n if (index > -1) {\n this.selectedIndex = index;\n this.addRowIndex = index;\n }\n else {\n this.selectedIndex = this.parent.selectedRowIndex;\n this.addRowIndex = this.parent.selectedRowIndex;\n }\n if (position) {\n this.parent.setProperties({ editSettings: { newRowPosition: position } }, true);\n }\n this.parent.grid.editModule.addRecord(data, index);\n }\n else {\n this.parent.grid.editModule.addRecord(data, index);\n }\n }\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} Returns form validation results\n */\n Edit.prototype.editFormValidate = function () {\n return this.parent.grid.editModule.editFormValidate();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.destroyForm = function () {\n this.parent.grid.editModule.destroyForm();\n };\n Edit.prototype.contentready = function (e) {\n if (!isNullOrUndefined(e.args.requestType)\n && (e.args.requestType.toString() === 'delete' || e.args.requestType.toString() === 'save'\n || (this.parent.editSettings.mode === 'Batch' && e.args.requestType.toString() === 'batchsave'))) {\n this.updateIndex(this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns) {\n if (this.parent.grid.dataSource.length === this.parent.getDataRows().length) {\n this.updateIndex(this.parent.grid.dataSource, this.parent.getDataRows(), this.parent.getCurrentViewRecords());\n }\n }\n }\n };\n /**\n * If the row index and field is given, edits the particular cell in a row.\n *\n * @returns {void}\n */\n Edit.prototype.editCell = function (rowIndex, field) {\n if (this.parent.editSettings.mode === 'Cell' || this.parent.editSettings.mode === 'Batch') {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.isOnBatch = true;\n this.updateGridEditMode('Batch');\n }\n this.parent.grid.editModule.editCell(rowIndex, field);\n }\n };\n return Edit;\n}());\nexport { Edit };\n","import { isNullOrUndefined as isNOU, getValue, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { TreeGrid, Edit } from '@syncfusion/ej2-treegrid';\nimport { Deferred } from '@syncfusion/ej2-data';\n/**\n * To handle cell edit action on default columns and custom columns\n */\nvar CellEdit = /** @class */ (function () {\n function CellEdit(ganttObj) {\n /**\n * @private\n */\n this.isCellEdit = false;\n this.isResourceCellEdited = false;\n this.parent = ganttObj;\n this.bindTreeGridProperties();\n }\n /**\n * Bind all editing related properties from Gantt to TreeGrid\n *\n * @returns {void} .\n */\n CellEdit.prototype.bindTreeGridProperties = function () {\n this.parent.treeGrid.editSettings.allowEditing = this.parent.editSettings.allowEditing;\n this.parent.treeGrid.editSettings.allowNextRowEdit = this.parent.editSettings.allowNextRowEdit;\n this.parent.treeGrid.editSettings.mode = 'Cell';\n this.parent.treeGrid.cellEdit = this.ensureEditCell.bind(this);\n if (this.parent.editSettings.allowEditing) {\n TreeGrid.Inject(Edit);\n }\n };\n /**\n * Ensure current cell was editable or not\n *\n * @param {CellEditArgs} args .\n * @returns {void | Deferred} .\n */\n CellEdit.prototype.ensureEditCell = function (args) {\n var _this = this;\n var data = args.rowData;\n var field = args.columnName;\n this.editedColumn = this.parent.getColumnByField(field, this.parent.ganttColumns);\n var taskSettings = this.parent.taskFields;\n if (this.parent.readOnly) {\n args.cancel = true;\n return;\n }\n if (this.parent.editSettings.mode === 'Dialog') {\n args.cancel = true;\n return;\n }\n if (data.hasChildRecords && !this.parent.allowParentDependency && ((field === taskSettings.endDate && ((!isNullOrUndefined(data['isManual']) &&\n data['isManual'] === false) || this.parent.taskMode === 'Auto')) || field === taskSettings.duration\n || field === taskSettings.dependency || field === taskSettings.progress || field === taskSettings.work || field === 'taskType')) {\n if ((field === taskSettings.dependency && !this.parent.allowParentDependency) || field !== taskSettings.dependency) {\n args.cancel = true;\n }\n }\n else {\n var callBackPromise_1 = new Deferred();\n var parentReference_1 = this.parent;\n this.parent.trigger('cellEdit', args, function (arg) {\n if (arg.columnName == parentReference_1.taskFields.progress && arg.rowData.hasChildRecords) {\n arg.cancel = true;\n }\n if (data.level === 0 && _this.parent.viewType === 'ResourceView') {\n arg.cancel = true;\n }\n callBackPromise_1.resolve(arg);\n if (!arg.cancel) {\n if (arg.columnName === _this.parent.taskFields.notes) {\n _this.openNotesEditor(arg);\n }\n else {\n _this.isCellEdit = true;\n if (!isNOU(_this.parent.toolbarModule)) {\n _this.parent.toolbarModule.refreshToolbarItems();\n }\n }\n }\n });\n return callBackPromise_1;\n }\n };\n /**\n * To render edit dialog and to focus on notes tab\n *\n * @param {CellEditArgs} args .\n * @returns {void} .\n */\n CellEdit.prototype.openNotesEditor = function (args) {\n var taskSettings = this.parent.taskFields;\n var data = args.rowData;\n var field = args.columnName;\n if ((field === taskSettings.notes && !this.parent.showInlineNotes)) {\n args.cancel = true;\n var columnTypes = this.parent.editModule.dialogModule.updatedEditFields.map(function (x) { return x.type; });\n var index = columnTypes.indexOf('Notes');\n if (index !== -1) {\n this.parent.editModule.dialogModule.openEditDialog(data.ganttProperties.rowUniqueID);\n var tabObj = document.getElementById(this.parent.element.id + '_Tab').ej2_instances[0];\n tabObj.selectedItem = index;\n }\n }\n if (field === taskSettings.notes && this.parent.showInlineNotes === true) {\n this.isCellEdit = true;\n }\n };\n CellEdit.prototype.isValueChange = function (args, field) {\n var data = getValue('data', args);\n var editedValue = data[\"\" + field];\n var previousValue = getValue('previousData', args);\n if ((isNOU(editedValue) && !isNOU(previousValue)) || (!isNOU(editedValue) && isNOU(previousValue))) {\n return true;\n }\n else if (!isNOU(editedValue) && !isNOU(previousValue)) {\n if (editedValue instanceof Date) {\n return editedValue.getTime() !== data.taskData[field].getTime() ? true : false;\n }\n else if (field === this.parent.taskFields.resourceInfo) {\n return editedValue !== previousValue ? true : false;\n }\n else if (editedValue !== data.taskData[field]) {\n return true;\n }\n }\n return false;\n };\n /**\n * Initiate cell save action on Gantt with arguments from TreeGrid\n *\n * @param {object} args .\n * @param {object} editedObj .\n * @returns {void} .\n * @private\n */\n CellEdit.prototype.initiateCellEdit = function (args, editedObj) {\n var isValid = true;\n if (args['name'] == 'actionComplete' && args['previousData'] == args['data'][args['column'].field]) {\n isValid = false;\n }\n if (this.parent.undoRedoModule && this.parent['isUndoRedoItemPresent']('Edit')) {\n if (isValid) {\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['disableRedo']();\n }\n this.parent.undoRedoModule['createUndoCollection']();\n var action = {};\n action['action'] = 'CellEditing';\n action['editedColumn'] = args['column'].field;\n action['modifiedRecords'] = [];\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = action;\n }\n }\n var column = getValue('column', args);\n var data = getValue('data', args);\n var editedArgs = {};\n editedArgs.action = 'CellEditing';\n editedArgs.data = this.parent.getTaskByUniqueID(data.uniqueID);\n var previousValue = getValue('previousData', args);\n var editedValue = this.parent.allowUnscheduledTasks ? data[column.field] : ((isNullOrUndefined(data[column.field])\n || data[column.field] === '') && (this.parent.taskFields.duration === column.field ||\n this.parent.taskFields.startDate === column.field || this.parent.taskFields.endDate === column.field)) ? previousValue\n : data[column.field];\n if (!isNOU(data)) {\n data[column.field] = previousValue;\n editedArgs.data[column.field] = previousValue;\n this.parent.initiateEditAction(true);\n this.parent.setRecordValue(column.field, editedValue, editedArgs.data);\n if (column.field === this.parent.taskFields.name) {\n this.taskNameEdited(editedArgs);\n }\n else if (column.field === this.parent.taskFields.startDate) {\n this.startDateEdited(editedArgs);\n }\n else if (column.field === this.parent.taskFields.endDate) {\n this.endDateEdited(editedArgs);\n }\n else if (column.field === this.parent.taskFields.duration) {\n this.durationEdited(editedArgs);\n }\n else if (column.field === this.parent.taskFields.resourceInfo) {\n this.resourceEdited(editedArgs, editedObj, data);\n }\n else if (column.field === this.parent.taskFields.progress) {\n this.progressEdited(editedArgs);\n }\n else if (column.field === this.parent.taskFields.baselineStartDate\n || column.field === this.parent.taskFields.baselineEndDate) {\n this.baselineEdited(editedArgs);\n }\n else if (column.field === this.parent.taskFields.dependency) {\n this.dependencyEdited(editedArgs, previousValue);\n }\n else if (column.field === this.parent.taskFields.notes) {\n this.notedEdited(editedArgs);\n }\n else if (column.field === this.parent.taskFields.work) {\n this.workEdited(editedArgs);\n }\n else if (column.field === 'taskType' && !isNOU(this.parent.taskFields.work)) {\n this.typeEdited(editedArgs, editedObj);\n }\n else if (column.field === this.parent.taskFields.manual) {\n this.taskmodeEdited(editedArgs);\n }\n else {\n this.parent.setRecordValue('taskData.' + column.field, editedArgs.data[column.field], editedArgs.data);\n this.parent.editModule.initiateSaveAction(editedArgs);\n }\n }\n else {\n this.parent.editModule.endEditAction(args);\n }\n this.isCellEdit = false;\n if (!isNullOrUndefined(this.parent.editModule.cellEditModule.editedColumn)) {\n this.parent.editModule.cellEditModule.editedColumn = null;\n }\n if (!isNOU(this.parent.toolbarModule)) {\n this.parent.toolbarModule.refreshToolbarItems();\n }\n };\n /**\n * To update task name cell with new value\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n */\n CellEdit.prototype.taskNameEdited = function (args) {\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.name, args.data[this.parent.taskFields.name], args.data);\n this.parent.setRecordValue('taskName', args.data[this.parent.taskFields.name], args.data.ganttProperties, true);\n this.updateEditedRecord(args);\n };\n /**\n * To update task notes cell with new value\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n */\n CellEdit.prototype.notedEdited = function (args) {\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.notes, args.data[this.parent.taskFields.notes], args.data);\n this.parent.setRecordValue('notes', args.data[this.parent.taskFields.notes], args.data.ganttProperties, true);\n this.updateEditedRecord(args);\n };\n /**\n * To update task schedule mode cell with new value\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n */\n CellEdit.prototype.taskmodeEdited = function (args) {\n this.parent.setRecordValue('isAutoSchedule', !args.data[this.parent.taskFields.manual], args.data.ganttProperties, true);\n this.parent.editModule.updateTaskScheduleModes(args.data);\n this.updateEditedRecord(args);\n };\n /**\n * To update task start date cell with new value\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n */\n CellEdit.prototype.startDateEdited = function (args) {\n var ganttData = args.data;\n var ganttProb = args.data.ganttProperties;\n var currentValue = args.data[this.parent.taskFields.startDate];\n currentValue = currentValue ? new Date(currentValue.getTime()) : null;\n currentValue = this.parent.dateValidationModule.checkStartDate(currentValue, ganttData.ganttProperties, ganttData.ganttProperties.isMilestone);\n if (isNOU(currentValue)) {\n if (!ganttData.hasChildRecords) {\n this.parent.setRecordValue('startDate', null, ganttProb, true);\n this.parent.setRecordValue('duration', null, ganttProb, true);\n this.parent.setRecordValue('isMilestone', false, ganttProb, true);\n // if (this.parent.allowUnscheduledTasks && isNOU(this.parent.taskFields.endDate)) {\n // this.parent.setRecordValue('endDate', null, ganttProb, true);\n // }\n }\n }\n else if (ganttProb.endDate || !isNOU(ganttProb.duration)) {\n this.parent.setRecordValue('startDate', new Date(currentValue.getTime()), ganttProb, true);\n this.parent.dateValidationModule.calculateEndDate(ganttData);\n }\n else if (isNOU(ganttProb.endDate) && isNOU(ganttProb.duration)) {\n this.parent.setRecordValue('startDate', new Date(currentValue.getTime()), ganttProb, true);\n }\n this.parent.setRecordValue('isMilestone', ganttProb.duration === 0 ? true : false, ganttProb, true);\n this.parent.dataOperation.updateWidthLeft(args.data);\n this.parent.dataOperation.updateMappingData(ganttData, 'startDate');\n this.parent.dataOperation.updateMappingData(ganttData, 'endDate');\n this.parent.dataOperation.updateMappingData(ganttData, 'duration');\n this.updateEditedRecord(args);\n };\n CellEdit.prototype.validateEndDateWithSegments = function (ganttProp) {\n var ganttSegments = [];\n var segments = ganttProp.segments;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[parseInt(i.toString(), 10)];\n var endDate = segment.endDate;\n endDate = (!isNullOrUndefined(ganttProp.endDate)) && endDate.getTime() <\n ganttProp.endDate.getTime() && i !== segments.length - 1 ? endDate : ganttProp.endDate;\n segment.duration = this.parent.dataOperation.getDuration(segment.startDate, endDate, ganttProp.durationUnit, ganttProp.isAutoSchedule, ganttProp.isMilestone);\n if (segments.length > 0 && endDate.getTime() < segment.startDate.getTime()\n && endDate.getTime() <= ganttProp.endDate.getTime()) {\n segments[i - 1].duration = this.parent.dataOperation.getDuration(segments[i - 1].startDate, ganttProp.endDate, ganttProp.durationUnit, ganttProp.isAutoSchedule, ganttProp.isMilestone);\n continue;\n }\n ganttSegments.push(segment);\n }\n return ganttSegments;\n };\n /**\n * To update task end date cell with new value\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n */\n CellEdit.prototype.endDateEdited = function (args) {\n var ganttProb = args.data.ganttProperties;\n var currentValue = args.data[this.parent.taskFields.endDate];\n currentValue = currentValue ? new Date(currentValue.getTime()) : null;\n if (isNOU(currentValue)) {\n this.parent.setRecordValue('endDate', currentValue, ganttProb, true);\n this.parent.setRecordValue('duration', null, ganttProb, true);\n this.parent.setRecordValue('isMilestone', false, ganttProb, true);\n }\n else {\n if ((currentValue.getHours() === 0 && this.parent.defaultEndTime !== 86400)) {\n this.parent.dateValidationModule.setTime(this.parent.defaultEndTime, currentValue);\n }\n currentValue = this.parent.dateValidationModule.checkEndDate(currentValue, ganttProb);\n this.parent.setRecordValue('endDate', currentValue, ganttProb, true);\n if (!isNOU(ganttProb.startDate) && isNOU(ganttProb.duration)) {\n if (this.parent.dateValidationModule.compareDates(ganttProb.endDate, ganttProb.startDate) === -1) {\n this.parent.setRecordValue('endDate', new Date(ganttProb.startDate.getTime()), ganttProb, true);\n this.parent.dateValidationModule.setTime(this.parent.defaultEndTime, ganttProb.endDate);\n }\n }\n else if (!isNOU(ganttProb.duration) && isNOU(ganttProb.startDate)) {\n this.parent.setRecordValue('startDate', this.parent.dateValidationModule.getStartDate(ganttProb.endDate, ganttProb.duration, ganttProb.durationUnit, ganttProb), ganttProb, true);\n }\n if (!isNullOrUndefined(ganttProb.segments)) {\n ganttProb.segments = this.validateEndDateWithSegments(ganttProb);\n }\n if (this.compareDatesFromRecord(ganttProb) === -1) {\n this.parent.dateValidationModule.calculateDuration(args.data);\n }\n else {\n this.parent.editModule.revertCellEdit(args);\n }\n this.parent.setRecordValue('isMilestone', (ganttProb.duration === 0 ? true : false), ganttProb, true);\n if (ganttProb.isMilestone) {\n this.parent.setRecordValue('startDate', this.parent.dateValidationModule.checkStartDate(ganttProb.startDate, ganttProb), ganttProb, true);\n }\n }\n if (!isNullOrUndefined(args.data.ganttProperties.segments) && args.data.ganttProperties.segments.length > 0) {\n this.parent.setRecordValue('segments', this.parent.dataOperation.setSegmentsInfo(args.data, false), args.data.ganttProperties, true);\n this.parent.dataOperation.updateMappingData(args.data, 'segments');\n }\n this.parent.dataOperation.updateWidthLeft(args.data);\n this.parent.dataOperation.updateMappingData(args.data, 'startDate');\n this.parent.dataOperation.updateMappingData(args.data, 'endDate');\n this.parent.dataOperation.updateMappingData(args.data, 'duration');\n this.parent.editModule.updateResourceRelatedFields(args.data, 'endDate');\n this.updateEditedRecord(args);\n };\n /**\n * To update duration cell with new value\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n */\n CellEdit.prototype.durationEdited = function (args) {\n if (parseInt(args.data[this.parent.taskFields.duration]) < 0) {\n args.data[this.parent.taskFields.duration] = 0;\n }\n var ganttProb = args.data.ganttProperties;\n var durationString = args.data[this.parent.taskFields.duration];\n this.parent.dataOperation.updateDurationValue(durationString, ganttProb);\n this.updateDates(args);\n this.parent.editModule.updateResourceRelatedFields(args.data, 'duration');\n this.updateEditedRecord(args);\n };\n /**\n * To update start date, end date based on duration\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n */\n CellEdit.prototype.updateDates = function (args) {\n var ganttProb = args.data.ganttProperties;\n var endDate = this.parent.dateValidationModule.getDateFromFormat(ganttProb.endDate);\n var startDate = this.parent.dateValidationModule.getDateFromFormat(ganttProb.startDate);\n var currentDuration = ganttProb.duration;\n if (isNOU(currentDuration)) {\n this.parent.setRecordValue('isMilestone', false, ganttProb, true);\n if (args.data[this.parent.taskFields.duration] != null) {\n this.parent.setRecordValue('endDate', null, ganttProb, true);\n }\n }\n else {\n if (isNOU(startDate) && !isNOU(endDate)) {\n this.parent.setRecordValue('startDate', this.parent.dateValidationModule.getStartDate(endDate, currentDuration, ganttProb.durationUnit, ganttProb), ganttProb, true);\n }\n if (currentDuration !== 0 && ganttProb.isMilestone) {\n this.parent.setRecordValue('isMilestone', false, ganttProb, true);\n this.parent.setRecordValue('startDate', this.parent.dateValidationModule.checkStartDate(ganttProb.startDate, ganttProb), ganttProb, true);\n }\n if (!isNullOrUndefined(ganttProb.segments) && ganttProb.segments.length > 0) {\n this.parent.setRecordValue('segments', this.parent.dataOperation.setSegmentsInfo(args.data, false), ganttProb, true);\n this.parent.dataOperation.updateMappingData(args.data, 'segments');\n }\n this.parent.setRecordValue('isMilestone', (ganttProb.duration === 0 ? true : false), ganttProb, true);\n this.parent.dateValidationModule.calculateEndDate(args.data);\n }\n this.parent.dataOperation.updateWidthLeft(args.data);\n this.parent.dataOperation.updateMappingData(args.data, 'endDate');\n this.parent.dataOperation.updateMappingData(args.data, 'startDate');\n this.parent.dataOperation.updateMappingData(args.data, 'duration');\n };\n /**\n * To update progress cell with new value\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n */\n CellEdit.prototype.progressEdited = function (args) {\n var ganttRecord = args.data;\n this.parent.setRecordValue('progress', (ganttRecord[this.parent.taskFields.progress] > 100 ? 100 : ganttRecord[this.parent.taskFields.progress]), ganttRecord.ganttProperties, true);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.progress, (ganttRecord[this.parent.taskFields.progress] > 100 ? 100 : ganttRecord[this.parent.taskFields.progress]), args.data);\n if (!ganttRecord.ganttProperties.isAutoSchedule) {\n this.parent.setRecordValue('autoWidth', this.parent.dataOperation.calculateWidth(ganttRecord, false), ganttRecord.ganttProperties, true);\n }\n if (!isNullOrUndefined(args.data.ganttProperties.segments) && args.data.ganttProperties.segments.length > 0 &&\n !isNullOrUndefined(this.parent.editModule.taskbarEditModule)) {\n this.parent.editModule.taskbarEditModule.updateSegmentProgress(args.data.ganttProperties);\n }\n if (!args.data.hasChildRecords) {\n var width = ganttRecord.ganttProperties.isAutoSchedule ? ganttRecord.ganttProperties.width :\n ganttRecord.ganttProperties.autoWidth;\n this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth(width, ganttRecord.ganttProperties.progress), ganttRecord.ganttProperties, true);\n }\n this.updateEditedRecord(args);\n };\n /**\n * To update baselines with new baseline start date and baseline end date\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n */\n CellEdit.prototype.baselineEdited = function (args) {\n var ganttRecord = args.data.ganttProperties;\n var baseLineStartDate = args.data[this.parent.taskFields.baselineStartDate];\n var baseLineEndDate = args.data[this.parent.taskFields.baselineEndDate];\n if (baseLineEndDate && baseLineEndDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {\n this.parent.dateValidationModule.setTime(this.parent.defaultEndTime, baseLineEndDate);\n }\n this.parent.setRecordValue('baselineStartDate', this.parent.dateValidationModule.checkBaselineStartDate(baseLineStartDate), ganttRecord, true);\n this.parent.setRecordValue('baselineEndDate', this.parent.dateValidationModule.checkBaselineEndDate(baseLineEndDate), ganttRecord, true);\n if (ganttRecord.baselineStartDate && ganttRecord.baselineEndDate) {\n this.parent.setRecordValue('baselineLeft', this.parent.dataOperation.calculateBaselineLeft(ganttRecord), ganttRecord, true);\n this.parent.setRecordValue('baselineWidth', this.parent.dataOperation.calculateBaselineWidth(ganttRecord), ganttRecord, true);\n }\n this.updateEditedRecord(args);\n };\n /**\n * To update task's resource cell with new value\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @param {object} editedObj .\n * @param {IGanttData} previousData .\n * @returns {void} .\n */\n CellEdit.prototype.resourceEdited = function (args, editedObj, previousData) {\n var resourceSettings = this.parent.resourceFields;\n var editedResourceId = editedObj[this.parent.taskFields.resourceInfo];\n if (editedResourceId) {\n this.isResourceCellEdited = true;\n var tempResourceInfo = this.parent.dataOperation.setResourceInfo(editedObj);\n var editedResouceLength = tempResourceInfo.length;\n var previousResource = previousData.ganttProperties.resourceInfo;\n var index = void 0;\n var editedResources = [];\n var resourceData = this.parent.resources;\n var newIndex = void 0;\n var _loop_1 = function (count) {\n if (previousResource) {\n var previousResourceLength = previousResource.length;\n for (newIndex = 0; newIndex < previousResourceLength; newIndex++) {\n if (previousResource[newIndex][resourceSettings.id] === editedResourceId[count]) {\n index = newIndex;\n break;\n }\n else {\n index = -1;\n }\n }\n }\n if (!isNOU(index) && index !== -1) {\n editedResources.push(previousResource[parseInt(index.toString(), 10)]);\n }\n else {\n var resource = resourceData.filter(function (resourceInfo) {\n return (editedResourceId[count] === resourceInfo[resourceSettings.id]);\n });\n var ganttDataResource = extend({}, resource[0]);\n ganttDataResource[resourceSettings.unit] = 100;\n editedResources.push(ganttDataResource);\n }\n };\n for (var count = 0; count < editedResouceLength; count++) {\n _loop_1(count);\n }\n args.data.ganttProperties.resourceInfo = editedResources;\n this.parent.dataOperation.updateMappingData(args.data, 'resourceInfo');\n this.parent.editModule.updateResourceRelatedFields(args.data, 'resource');\n if (this.parent.viewType === 'ResourceView') {\n this.parent.editModule.dialogModule.isResourceUpdate = true;\n this.parent.editModule.dialogModule.previousResource = previousResource;\n }\n this.updateDates(args);\n this.updateEditedRecord(args);\n }\n };\n /**\n * To update task's predecessor cell with new value\n *\n * @param {ITaskbarEditedEventArgs} editedArgs .\n * @param {object} cellEditArgs .\n * @returns {void} .\n */\n CellEdit.prototype.dependencyEdited = function (editedArgs, cellEditArgs) {\n this.parent.predecessorModule.updateUnscheduledDependency(editedArgs.data);\n if (!this.parent.connectorLineEditModule.updatePredecessor(editedArgs.data, editedArgs.data[this.parent.taskFields.dependency], editedArgs)) {\n this.parent.editModule.revertCellEdit(cellEditArgs);\n }\n };\n /**\n * To update task's work cell with new value\n *\n * @param {ITaskbarEditedEventArgs} editedArgs .\n * @returns {void} .\n */\n CellEdit.prototype.workEdited = function (editedArgs) {\n var ganttProb = editedArgs.data.ganttProperties;\n if (editedArgs.data[this.parent.taskFields.work] < 0) {\n editedArgs.data[this.parent.taskFields.work] = 0;\n }\n var workValue = editedArgs.data[this.parent.taskFields.work];\n this.parent.setRecordValue('work', workValue, ganttProb, true);\n this.parent.editModule.updateResourceRelatedFields(editedArgs.data, 'work');\n this.updateDates(editedArgs);\n this.updateEditedRecord(editedArgs);\n };\n /**\n * To update task type cell with new value\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @param {object} editedObj .\n * @returns {void} .\n */\n CellEdit.prototype.typeEdited = function (args, editedObj) {\n var key = 'taskType';\n var ganttProb = args.data.ganttProperties;\n var taskType = editedObj[\"\" + key];\n this.parent.setRecordValue('taskType', taskType, ganttProb, true);\n //this.parent.dataOperation.updateMappingData(args.data, 'taskType');\n this.updateEditedRecord(args);\n };\n /**\n * To compare start date and end date from Gantt record\n *\n * @param {ITaskData} ganttRecord .\n * @returns {number} .\n */\n CellEdit.prototype.compareDatesFromRecord = function (ganttRecord) {\n var sDate = this.parent.dateValidationModule.getValidStartDate(ganttRecord);\n var eDate = this.parent.dateValidationModule.getValidEndDate(ganttRecord);\n return this.parent.dateValidationModule.compareDates(sDate, eDate);\n };\n /**\n * To start method save action with edited cell value\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n */\n CellEdit.prototype.updateEditedRecord = function (args) {\n this.parent.editModule.initiateUpdateAction(args);\n };\n /**\n * To remove all public private properties\n *\n * @returns {void} .\n * @private\n */\n CellEdit.prototype.destroy = function () {\n // Destroy Method\n this.parent.editModule.cellEditModule = undefined;\n };\n return CellEdit;\n}());\nexport { CellEdit };\n","import { getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport * as cls from '../base/css-constants';\n/**\n * File for handling taskbar editing tooltip in Gantt.\n */\nvar EditTooltip = /** @class */ (function () {\n function EditTooltip(gantt, taskbarEdit) {\n this.parent = gantt;\n this.taskbarEdit = taskbarEdit;\n }\n /**\n * To create tooltip.\n *\n * @param {string} opensOn .\n * @param {boolean} mouseTrail .\n * @param {string} target .\n * @returns {void}\n * @private\n */\n EditTooltip.prototype.createTooltip = function (opensOn, mouseTrail, target) {\n var _this = this;\n this.toolTipObj = new Tooltip({\n opensOn: opensOn,\n position: 'TopRight',\n enableRtl: this.parent.enableRtl,\n mouseTrail: mouseTrail,\n cssClass: cls.ganttTooltip,\n target: target ? target : null,\n animation: { open: { effect: 'None' }, close: { effect: 'None' } }\n });\n this.toolTipObj.beforeRender = function (args) {\n var argsData = {\n data: _this.taskbarEdit.taskBarEditRecord,\n args: args,\n content: _this.toolTipObj.content\n };\n _this.parent.trigger('beforeTooltipRender', argsData);\n };\n this.toolTipObj.afterOpen = function (args) {\n _this.updateTooltipPosition(args);\n };\n this.toolTipObj.isStringTemplate = true;\n this.toolTipObj.appendTo(this.parent.chartPane);\n };\n /**\n * Method to update tooltip position\n *\n * @param {TooltipEventArgs} args .\n * @returns {void} .\n */\n EditTooltip.prototype.updateTooltipPosition = function (args) {\n args.element.style.visibility = 'visible';\n var parentWithZoomStyle = this.parent.element.closest('[style*=\"zoom\"]');\n if (isNullOrUndefined(parentWithZoomStyle)) {\n var containerPosition = this.parent.getOffsetRect(this.parent.chartPane);\n var leftEnd = containerPosition.left + this.parent.chartPane.offsetWidth;\n var tooltipPositionX = args.element.offsetLeft;\n if (leftEnd < (tooltipPositionX + args.element.offsetWidth)) {\n tooltipPositionX += leftEnd - (tooltipPositionX + args.element.offsetWidth);\n }\n args.element.style.left = tooltipPositionX + 'px';\n args.element.style.visibility = 'visible';\n }\n };\n /**\n * To show/hide taskbar edit tooltip.\n *\n * @param {boolean} bool .\n * @param {number} segmentIndex .\n * @returns {void}\n * @private\n */\n EditTooltip.prototype.showHideTaskbarEditTooltip = function (bool, segmentIndex) {\n if (bool && this.parent.tooltipSettings.showTooltip) {\n this.createTooltip('Custom', false);\n this.parent.tooltipModule.toolTipObj.close();\n this.updateTooltip(segmentIndex);\n if (this.taskbarEdit.connectorSecondAction === 'ConnectorPointLeftDrag') {\n this.toolTipObj.open(this.taskbarEdit.connectorSecondElement.querySelector('.' + cls.connectorPointLeft));\n }\n else if (this.taskbarEdit.connectorSecondAction === 'ConnectorPointRightDrag') {\n this.toolTipObj.open(this.taskbarEdit.connectorSecondElement.querySelector('.' + cls.connectorPointRight));\n }\n else {\n this.toolTipObj.open(this.taskbarEdit.taskBarEditElement);\n }\n }\n else if (!isNullOrUndefined(this.toolTipObj)) {\n this.toolTipObj.destroy();\n this.toolTipObj = null;\n }\n };\n /**\n * To update tooltip content and position.\n *\n * @param {number} segmentIndex .\n * @returns {void} .\n * @private\n */\n EditTooltip.prototype.updateTooltip = function (segmentIndex) {\n var ganttProp = this.taskbarEdit.taskBarEditRecord.ganttProperties;\n var taskWidth = segmentIndex === -1 ? ganttProp.width :\n ganttProp.segments[segmentIndex].width;\n var progressWidth = segmentIndex === -1 ? ganttProp.progressWidth :\n ganttProp.segments[segmentIndex].progressWidth;\n var left = segmentIndex === -1 ? ganttProp.left : ganttProp.left + ganttProp.segments[segmentIndex].left;\n if (!isNullOrUndefined(this.toolTipObj)) {\n if (this.taskbarEdit.taskBarEditAction === 'ConnectorPointLeftDrag' ||\n this.taskbarEdit.taskBarEditAction === 'ConnectorPointRightDrag') {\n this.toolTipObj.content = this.getTooltipText(segmentIndex);\n this.toolTipObj.offsetY = -3;\n }\n else {\n this.toolTipObj.content = this.getTooltipText(segmentIndex);\n this.toolTipObj.refresh(this.taskbarEdit.taskBarEditElement);\n if (this.parent.enableRtl && this.toolTipObj['tooltipEle']) {\n this.toolTipObj['tooltipEle'].style.left = this.parent.editModule.taskbarEditModule['tooltipValue'] + 10 + 'px';\n }\n if (this.taskbarEdit.taskBarEditAction === 'LeftResizing') {\n if (this.parent.enableRtl) {\n this.toolTipObj.offsetX = 0;\n }\n else {\n this.toolTipObj.offsetX = -taskWidth;\n }\n }\n else if (this.taskbarEdit.taskBarEditAction === 'RightResizing' ||\n this.taskbarEdit.taskBarEditAction === 'ParentResizing') {\n if (this.parent.enableRtl) {\n this.toolTipObj.offsetX = -taskWidth;\n }\n else {\n this.toolTipObj.offsetX = 0;\n }\n }\n else if (this.taskbarEdit.taskBarEditAction === 'ProgressResizing') {\n if (this.parent.enableRtl) {\n this.toolTipObj.offsetX = -(progressWidth);\n }\n else {\n this.toolTipObj.offsetX = -(taskWidth - progressWidth);\n }\n }\n else if (this.taskbarEdit.taskBarEditAction === 'MilestoneDrag') {\n this.toolTipObj.offsetX = -(this.parent.chartRowsModule.milestoneHeight / 2);\n }\n else if (taskWidth > 5) {\n this.toolTipObj.offsetX = -(taskWidth + left - this.taskbarEdit.tooltipPositionX);\n }\n }\n }\n };\n /**\n * To get updated tooltip text.\n *\n * @param {number} segmentIndex .\n * @returns {void} .\n * @private\n */\n EditTooltip.prototype.getTooltipText = function (segmentIndex) {\n var tooltipString = '';\n var instance = this.parent.globalize;\n var editRecord = this.taskbarEdit.taskBarEditRecord.ganttProperties;\n if (!isNullOrUndefined(editRecord.segments) && editRecord.segments.length > 0 && segmentIndex !== -1\n && this.taskbarEdit.taskBarEditAction !== 'ProgressResizing') {\n editRecord = editRecord.segments[segmentIndex];\n }\n if (this.parent.tooltipSettings.editing) {\n var templateNode = this.parent.tooltipModule.templateCompiler(this.parent.tooltipSettings.editing, this.parent, this.taskbarEdit.taskBarEditRecord, 'TooltipEditingTemplate');\n if (getValue('tooltipEle', this.toolTipObj)) {\n this.parent.renderTemplates();\n }\n tooltipString = templateNode[0];\n }\n else {\n var startDate = void 0;\n var endDate = void 0;\n var duration = void 0;\n if (!isNullOrUndefined(editRecord.startDate)) {\n startDate = '' + this.parent.localeObj.getConstant('startDate') +\n ':' +\n instance.formatDate(editRecord.startDate, { format: this.parent.getDateFormat() }) + '';\n }\n if (!isNullOrUndefined(editRecord.endDate)) {\n endDate = '' + this.parent.localeObj.getConstant('endDate') +\n ':' +\n instance.formatDate(editRecord.endDate, { format: this.parent.getDateFormat() }) + '';\n }\n if (!isNullOrUndefined(editRecord.duration)) {\n duration = '' + this.parent.localeObj.getConstant('duration') +\n ':' +\n this.parent.getDurationString(editRecord.duration, editRecord.durationUnit) + '';\n }\n switch (this.taskbarEdit.taskBarEditAction) {\n case 'ProgressResizing':\n var progress = '' + this.parent.localeObj.getConstant('progress') +\n ':' + editRecord.progress + '';\n tooltipString = '' +\n progress + '
    ';\n break;\n case 'LeftResizing':\n tooltipString = '' +\n startDate + duration + '
    ';\n break;\n case 'RightResizing':\n case 'ParentResizing':\n tooltipString = '' +\n endDate + duration + '
    ';\n break;\n case 'ChildDrag':\n case 'ParentDrag':\n case 'MilestoneDrag':\n case 'ManualParentDrag':\n var sDate = '';\n var eDate = '';\n if (!isNullOrUndefined(this.taskbarEdit.taskBarEditRecord.ganttProperties.startDate)) {\n sDate = startDate;\n }\n if (!isNullOrUndefined(this.taskbarEdit.taskBarEditRecord.ganttProperties.endDate)) {\n eDate = endDate;\n }\n tooltipString = '' + sDate + eDate + '
    ';\n break;\n case 'ConnectorPointLeftDrag':\n case 'ConnectorPointRightDrag':\n tooltipString = this.parent.connectorLineModule.tooltipTable;\n if (isNullOrUndefined(this.toolTipObj)) {\n this.parent.connectorLineModule.tooltipTable.innerHTML =\n this.parent.connectorLineModule.getConnectorLineTooltipInnerTd(this.parent.editModule.taskbarEditModule.taskBarEditRecord.ganttProperties.taskName, this.parent.editModule.taskbarEditModule.fromPredecessorText, '', '');\n }\n break;\n }\n }\n return tooltipString;\n };\n return EditTooltip;\n}());\nexport { EditTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { isNullOrUndefined, createElement, extend, addClass, remove, removeClass, closest, merge, classList, getValue } from '@syncfusion/ej2-base';\nimport { parentsUntil } from '../base/utils';\nimport { DateProcessor } from '../base/date-processor';\nimport * as cls from '../base/css-constants';\nimport { EditTooltip } from '../renderer/edit-tooltip';\n/**\n * File for handling taskbar editing operation in Gantt.\n */\nvar TaskbarEdit = /** @class */ (function (_super) {\n __extends(TaskbarEdit, _super);\n function TaskbarEdit(ganttObj) {\n var _this = _super.call(this, ganttObj) || this;\n _this.leftValue = 0;\n _this.previousLeftValue = 0;\n _this.isMouseDragged = false;\n _this.dependencyCancel = false;\n _this.editElement = null;\n _this.elementOffsetLeft = 0;\n _this.elementOffsetTop = 0;\n _this.elementOffsetWidth = 0;\n _this.elementOffsetHeight = 0;\n _this.segmentIndex = -1;\n _this.currentItemTop = 0;\n _this.currentItemPrevTop = 0;\n _this.topValue = 0;\n _this.draggedRecordMarginTop = '0px';\n _this.isClonedElement = false;\n _this.updatePosition = false;\n _this.tooltipValue = 0;\n _this.parent = ganttObj;\n _this.initPublicProp();\n _this.wireEvents();\n _this.editTooltip = new EditTooltip(_this.parent, _this);\n return _this;\n }\n TaskbarEdit.prototype.wireEvents = function () {\n this.parent.on('chartMouseDown', this.mouseDownHandler, this);\n this.parent.on('chartMouseUp', this.mouseUpHandler, this);\n this.parent.on('chartMouseLeave', this.mouseLeaveHandler, this);\n this.parent.on('chartMouseMove', this.mouseMoveAction, this);\n this.parent.on('chartMouseClick', this.mouseClickHandler, this);\n };\n /**\n * To initialize the public property.\n *\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.initPublicProp = function () {\n this.taskBarEditElement = null;\n this.taskBarEditRecord = null;\n this.taskBarEditAction = null;\n this.connectorSecondElement = null;\n this.connectorSecondRecord = null;\n this.connectorSecondAction = null;\n this.highlightedSecondElement = null;\n this.fromPredecessorText = null;\n this.toPredecessorText = null;\n this.finalPredecessor = null;\n this.drawPredecessor = false;\n this.roundOffDuration = true;\n this.dragMouseLeave = false;\n this.isMouseDragged = false;\n this.previousItemProperty = ['left', 'progress', 'duration', 'isMilestone', 'startDate', 'endDate', 'width', 'progressWidth',\n 'autoLeft', 'autoDuration', 'autoStartDate', 'autoEndDate', 'autoWidth', 'segments'];\n this.tapPointOnFocus = false;\n this.touchEdit = false;\n };\n TaskbarEdit.prototype.mouseDownHandler = function (e) {\n if (this.parent.editSettings.allowTaskbarEditing && !this.parent.readOnly) {\n this.canDrag = false;\n if (this.taskBarEditElement) {\n var targetElement = this.getElementByPosition(e);\n var element = parentsUntil(targetElement, cls.taskBarMainContainer);\n if ((element && element.innerHTML === this.taskBarEditElement.innerHTML || this.taskBarEditElement.classList.contains(\"e-segmented-taskbar\") || this.taskBarEditElement.classList.contains(\"collpse-parent-border\"))) {\n this.updateTaskBarEditElement(e);\n this.canDrag = true;\n e.preventDefault();\n }\n }\n else if (!this.parent.isAdaptive) {\n this.updateTaskBarEditElement(e);\n }\n }\n };\n TaskbarEdit.prototype.mouseClickHandler = function (e) {\n if (!this.parent.editSettings.allowTaskbarEditing) {\n return;\n }\n var targetElement = this.getElementByPosition(e);\n var element = parentsUntil(targetElement, cls.taskBarMainContainer);\n if (this.parent.selectionModule && this.parent.selectionModule.enableSelectMultiTouch) {\n if (this.tapPointOnFocus) {\n this.updateTaskBarEditElement(e);\n }\n return;\n }\n if (this.tapPointOnFocus && !isNullOrUndefined(this.taskBarEditElement) && element && element.innerHTML !== this.taskBarEditElement.innerHTML) {\n this.connectorSecondRecord = this.parent.ganttChartModule.getRecordByTaskBar(element);\n this.connectorSecondAction = 'ConnectorPointLeftDrag';\n this.connectorSecondElement = element;\n this.fromPredecessorText = 'Finish';\n if (this.validateConnectorPoint()) {\n this.taskBarEditingAction(e, true);\n }\n this.showHideActivePredecessors(false);\n this.initPublicProp();\n }\n else if (targetElement.classList.contains(cls.connectorPointLeftHover)) {\n this.canDrag = false;\n this.multipleSelectionEnabled();\n this.showHideTaskBarEditingElements(targetElement, this.taskBarEditElement);\n this.tapPointOnFocus = true;\n this.taskBarEditAction = 'ConnectorPointLeftDrag';\n this.connectorSecondRecord = this.taskBarEditRecord;\n this.taskBarEditingAction(e, false);\n }\n else if (targetElement.classList.contains(cls.connectorPointRightHover)) {\n this.canDrag = false;\n this.multipleSelectionEnabled();\n this.showHideTaskBarEditingElements(targetElement, this.taskBarEditElement);\n this.tapPointOnFocus = true;\n this.taskBarEditAction = 'ConnectorPointRightDrag';\n this.connectorSecondRecord = this.taskBarEditRecord;\n this.taskBarEditingAction(e, false);\n }\n else {\n if (this.tapPointOnFocus) {\n this.showHideActivePredecessors(false);\n this.showHideTaskBarEditingElements(element, this.taskBarEditElement);\n }\n this.updateTaskBarEditElement(e);\n }\n };\n TaskbarEdit.prototype.showHideActivePredecessors = function (show) {\n var ganttProp = this.taskBarEditRecord.ganttProperties;\n var predecessors = ganttProp.predecessor;\n var id = this.parent.viewType === 'ResourceView' ? ganttProp.taskId : ganttProp.rowUniqueID;\n if (predecessors) {\n for (var i = 0; i < predecessors.length; i++) {\n var predecessor = predecessors[i];\n if (id.toString() === predecessor.from || id.toString() === predecessor.to) {\n this.applyActiveColor(predecessor.from, predecessor.to, show);\n }\n }\n }\n var chartContent = this.parent.ganttChartModule.chartBodyContainer;\n if (show) {\n addClass([this.taskBarEditElement], [cls.activeChildTask]);\n addClass([chartContent], [cls.touchMode]);\n }\n else {\n removeClass([this.taskBarEditElement], [cls.activeChildTask]);\n removeClass([chartContent], [cls.touchMode]);\n }\n this.touchEdit = show;\n if (!isNullOrUndefined(this.parent.toolbarModule)) {\n this.parent.toolbarModule.refreshToolbarItems();\n }\n };\n TaskbarEdit.prototype.applyActiveColor = function (from, to, enable) {\n var taskId = this.parent.viewType === 'ProjectView' ? this.taskBarEditRecord.ganttProperties.taskId.toString() :\n this.taskBarEditRecord.ganttProperties.rowUniqueID.toString();\n var ganttRecord = (taskId === from) ? this.parent.connectorLineModule.getRecordByID(to) :\n this.parent.connectorLineModule.getRecordByID(from);\n var $tr = this.parent.ganttChartModule.getChartRows()[this.parent.currentViewData.indexOf(ganttRecord)];\n if (!isNullOrUndefined($tr)) {\n var $taskbar = $tr.querySelector('.' + cls.taskBarMainContainer);\n var $connectorElement = this.parent.element.querySelector('#ConnectorLineparent' + from + 'child' + to);\n if (enable) {\n addClass([$taskbar], [cls.activeConnectedTask]);\n if ($connectorElement) {\n addClass([$connectorElement], [cls.activeConnectedTask]);\n }\n }\n else {\n removeClass([$taskbar], [cls.activeConnectedTask]);\n if ($connectorElement) {\n removeClass([$connectorElement], [cls.activeConnectedTask]);\n }\n }\n }\n };\n TaskbarEdit.prototype.validateConnectorPoint = function () {\n var parentRecord = this.taskBarEditRecord.ganttProperties;\n var childRecord = this.connectorSecondRecord.ganttProperties;\n var isValid = true;\n var parentId = this.parent.viewType === 'ResourceView' ? parentRecord.taskId : parentRecord.rowUniqueID;\n var childId = this.parent.viewType === 'ResourceView' ? childRecord.taskId : childRecord.rowUniqueID;\n if (this.connectorSecondRecord.hasChildRecords) {\n isValid = false;\n }\n else if (childRecord.predecessor) {\n for (var i = 0; i < childRecord.predecessor.length; i++) {\n var predecessor = childRecord.predecessor[i];\n if (predecessor.from === parentId.toString() &&\n predecessor.to === childId.toString()) {\n this.parent.connectorLineEditModule.childRecord = this.connectorSecondRecord;\n this.parent.connectorLineEditModule.predecessorIndex = i;\n this.parent.connectorLineEditModule.renderPredecessorDeleteConfirmDialog();\n isValid = false;\n break;\n }\n else if (predecessor.from === childId.toString() &&\n predecessor.to === parentId.toString()) {\n this.parent.connectorLineEditModule.childRecord = this.taskBarEditRecord;\n this.parent.connectorLineEditModule.predecessorIndex = i;\n this.parent.connectorLineEditModule.renderPredecessorDeleteConfirmDialog();\n isValid = false;\n break;\n }\n }\n }\n return isValid;\n };\n // eslint-disable-next-line\n TaskbarEdit.prototype.mouseLeaveHandler = function (e) {\n if (this.taskBarEditAction === \"ChildDrag\" || this.taskBarEditAction === \"ParentDrag\" || this.taskBarEditAction === \"ProgressResizing\" || this.taskBarEditAction === \"LeftResizing\" || this.taskBarEditAction === \"RightResizing\") {\n this.dragMouseLeave = false;\n }\n else {\n this.dragMouseLeave = true;\n }\n };\n /**\n * To update taskbar edited elements on mouse down action.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.updateTaskBarEditElement = function (e) {\n var target = this.getElementByPosition(e);\n var element;\n if (target.classList.contains(cls.manualParentRightResizer) || target.classList.contains(cls.manualParentMainContainer)\n || target.classList.contains(cls.manualParentTaskBar)) {\n element = parentsUntil(target, cls.manualParentMainContainer);\n }\n else if (target.classList.contains(cls.manualParentMilestone)) {\n element = parentsUntil(target, cls.manualParentMilestone);\n }\n else {\n element = parentsUntil(target, cls.taskBarMainContainer);\n if (!isNullOrUndefined(element) && !target.classList.contains('e-connectorpoint-left') &&\n !target.classList.contains('e-connectorpoint-right')) {\n var currentRecord = this.parent.ganttChartModule.getRecordByTaskBar(element);\n if (!isNullOrUndefined(currentRecord.ganttProperties.segments) && currentRecord.ganttProperties.segments.length > 0) {\n element = parentsUntil(target, cls.childTaskBarInnerDiv);\n }\n }\n }\n if (this.parent.editSettings.allowTaskbarEditing && element) {\n this.showHideTaskBarEditingElements(element, this.editElement);\n this.editElement = element;\n this.realTaskbarElement = this.editElement;\n var index = this.editElement.getAttribute('data-segment-index');\n if (!isNullOrUndefined(index)) {\n this.segmentIndex = Number(index);\n }\n else {\n this.segmentIndex = -1;\n }\n this.taskBarEditRecord = this.parent.ganttChartModule.getRecordByTaskBar(this.editElement);\n if (e.type === 'mousedown' || e.type === 'touchstart' || e.type === 'click') {\n this.taskBarEditAction = this.getTaskBarAction(e);\n var index_1 = this.editElement.getAttribute('data-segment-index');\n var currentRecord = this.parent.ganttChartModule.getRecordByTaskBar(element);\n var ganttprop = currentRecord.ganttProperties;\n var parentleft = this.editElement.parentElement.offsetLeft;\n this.currentData = currentRecord;\n var resizeElement = createElement('div', { styles: 'height:100%;border-style:dashed;border-bottom:none;border-top:none;border-width:1px;position:absolute;z-index:10000' });\n addClass([resizeElement], 'e-taskbar-resize-div');\n resizeElement.style.setProperty(\"width\", ganttprop.width + \"px\");\n var currentindex = this.editElement.getAttribute('data-segment-index');\n if (!isNullOrUndefined(ganttprop.segments) && this.parent.allowTaskbarDragAndDrop && this.taskBarEditAction !== 'LeftResizing' && this.taskBarEditAction !== 'RightResizing' && this.taskBarEditAction !== 'ProgressResizing') {\n resizeElement.style.setProperty(\"left\", ((!isNullOrUndefined(ganttprop.segments) ? parentleft + \"px\" : (ganttprop.left) + \"px\")));\n }\n else {\n resizeElement.style.setProperty(\"left\", (((!isNullOrUndefined(ganttprop.segments) && ganttprop.segments.length !== 0) ? parentleft + ganttprop.segments[Number(currentindex)].left + \"px\" : (ganttprop.left) + \"px\")));\n }\n var resizeTable = this.parent.createElement('table');\n var resizetableBody = this.parent.createElement(\"tbody\");\n resizetableBody.appendChild(resizeElement);\n resizeTable.appendChild(resizetableBody);\n var Check = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-clone-taskbar');\n var createTable = null;\n if ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && !isNullOrUndefined(index_1) && !isNullOrUndefined(index_1) ? Number(index_1) === 0 : false) {\n var cloneTaskBar = this.editElement.parentElement.cloneNode(true);\n }\n else {\n if (this.segmentIndex !== -1 && this.parent.allowTaskbarDragAndDrop && this.taskBarEditAction !== 'LeftResizing' && this.taskBarEditAction !== 'RightResizing' && this.taskBarEditAction !== 'ProgressResizing') {\n var cloneTaskBar = this.editElement.parentElement.cloneNode(true);\n }\n else {\n var cloneTaskBar = this.editElement.cloneNode(true);\n }\n }\n if (!Check) {\n addClass([cloneTaskBar], 'e-clone-taskbar');\n cloneTaskBar.style.setProperty(\"position\", \"absolute\");\n if (currentRecord.hasChildRecords && !currentRecord.ganttProperties.isAutoSchedule) {\n var containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);\n var taskbarPosition = this.parent.getOffsetRect(this.editElement);\n cloneTaskBar.style.setProperty(this.parent.enableRtl ? \"right\" : \"left\", Math.abs(taskbarPosition.left - containerPosition.left + Math.abs(this.parent.ganttChartModule.scrollElement.scrollLeft)) + \"px\");\n }\n cloneTaskBar.style.setProperty(\"top\", 0 + \"px\");\n createTable = this.parent.createElement('table');\n var tableBody = this.parent.createElement(\"tbody\");\n tableBody.appendChild(cloneTaskBar);\n createTable.appendChild(tableBody);\n }\n if ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && !isNullOrUndefined(index_1) && !isNullOrUndefined(index_1) ? Number(index_1) === 0 : false) {\n var segmentedTasks = cloneTaskBar.getElementsByClassName('e-segmented-taskbar');\n this.cloneTaskbarElement = segmentedTasks[Number(index_1)];\n }\n else {\n this.cloneTaskbarElement = cloneTaskBar;\n }\n this.taskBarEditElement = this.cloneTaskbarElement;\n this.taskbarElement = createTable;\n this.taskbarResizer = resizeTable;\n this.currentIndex = index_1;\n this.roundOffDuration = true;\n if ((this.taskBarEditAction === 'ConnectorPointLeftDrag' || this.taskBarEditAction === 'ConnectorPointRightDrag') &&\n isNullOrUndefined(this.parent.taskFields.dependency)) {\n this.taskBarEditAction = null;\n }\n this.updateMouseDownProperties(e);\n if (this.parent.viewType === 'ResourceView' || this.parent.viewType === 'ProjectView') {\n if (this.taskBarEditRecord.level === 0) {\n return;\n }\n else if (this.parent.enableMultiTaskbar) {\n var parentRecord = this.parent.getTaskByUniqueID(this.taskBarEditRecord.parentItem.uniqueID);\n if (!isNullOrUndefined(parentRecord) && !parentRecord.expanded) {\n this.prevZIndex = (this.taskBarEditElement).style.zIndex;\n (this.taskBarEditElement).style.zIndex = '1000';\n if (this.taskBarEditElement.querySelector('.e-gantt-child-taskbar')) {\n addClass([this.taskBarEditElement.querySelector('.e-gantt-child-taskbar')], 'e-collapsed-taskbar-drag');\n }\n }\n }\n }\n }\n }\n else {\n if (this.parent.isAdaptive) {\n if (this.taskBarEditElement) {\n this.showHideTaskBarEditingElements(element, this.editElement);\n }\n this.initPublicProp();\n }\n else {\n this.showHideTaskBarEditingElements(element, this.editElement);\n }\n }\n };\n /**\n * To show/hide taskbar editing elements.\n *\n * @param {Element} element .\n * @param {Element} secondElement .\n * @param {boolean} fadeConnectorLine .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.showHideTaskBarEditingElements = function (element, secondElement, fadeConnectorLine) {\n secondElement = secondElement ? secondElement : this.editElement;\n var isShowProgressResizer = this.parent.taskFields.progress ? true : false;\n var isShowConnectorPoints = true;\n if (this.parent.readOnly) {\n return;\n }\n if (this.parent.enableMultiTaskbar && element) {\n var record = this.parent.ganttChartModule.getRecordByTaskBar(element);\n var parentRecord = this.parent.getParentTask(record.parentItem);\n if (!isNullOrUndefined(parentRecord)) {\n if (!parentRecord.expanded) {\n isShowProgressResizer = false;\n isShowConnectorPoints = false;\n }\n }\n }\n if (element) {\n if (element.querySelector('.' + cls.taskBarLeftResizer)) {\n addClass([element.querySelector('.' + cls.taskBarLeftResizer)], [cls.leftResizeGripper]);\n addClass([element.querySelector('.' + cls.taskBarRightResizer)], [cls.rightResizeGripper]);\n if (isShowProgressResizer) {\n var progressElement = element.querySelector('.' + cls.childProgressResizer);\n if (!isNullOrUndefined(progressElement)) {\n addClass([progressElement], [cls.progressResizeGripper]);\n progressElement.style.top = '3px';\n }\n }\n }\n else if (this.parent.isAdaptive && isShowProgressResizer) {\n var record = this.parent.ganttChartModule.getRecordByTaskBar(element);\n if (record.hasChildRecords) {\n addClass([element], [cls.activeParentTask]);\n }\n }\n addClass(this.parent.ganttChartModule.scrollElement.querySelectorAll('.' + cls.connectorLineContainer), [cls.connectorLineZIndex]);\n if (!isNullOrUndefined(this.parent.taskFields.dependency)\n && (element.querySelector('.' + cls.connectorPointLeft)\n || element.parentElement.querySelector('.' + cls.connectorPointLeft))\n && isShowConnectorPoints) {\n var connectorElement = !isNullOrUndefined(element.querySelector('.' + cls.connectorPointLeft)) ?\n element : element.parentElement;\n if (!isNullOrUndefined(connectorElement.querySelector('.' + cls.connectorPointLeft))) {\n addClass([connectorElement.querySelector('.' + cls.connectorPointLeft)], [cls.connectorPointLeftHover]);\n }\n if (!isNullOrUndefined(connectorElement.querySelector('.' + cls.connectorPointRight))) {\n addClass([connectorElement.querySelector('.' + cls.connectorPointRight)], [cls.connectorPointRightHover]);\n }\n }\n }\n else if (!fadeConnectorLine) {\n removeClass(this.parent.ganttChartModule.scrollElement.querySelectorAll('.' + cls.connectorLineContainer), [cls.connectorLineZIndex]);\n }\n if (secondElement && element !== secondElement) {\n if (secondElement.querySelector('.' + cls.taskBarLeftResizer)) {\n removeClass([secondElement.querySelector('.' + cls.taskBarLeftResizer)], [cls.leftResizeGripper]);\n removeClass([secondElement.querySelector('.' + cls.taskBarRightResizer)], [cls.rightResizeGripper]);\n if (secondElement.querySelector('.' + cls.childProgressResizer)) {\n removeClass([secondElement.querySelector('.' + cls.childProgressResizer)], [cls.progressResizeGripper]);\n }\n }\n if (!isNullOrUndefined(this.parent.taskFields.dependency)\n && (secondElement.querySelector('.' + cls.connectorPointLeft)\n || secondElement.parentElement.querySelector('.' + cls.connectorPointLeft))) {\n var connectorElement = !isNullOrUndefined(secondElement.querySelector('.' + cls.connectorPointLeft)) ?\n secondElement : secondElement.parentElement;\n removeClass([connectorElement.querySelector('.' + cls.connectorPointLeft)], [cls.connectorPointLeftHover]);\n removeClass([connectorElement.querySelector('.' + cls.connectorPointRight)], [cls.connectorPointRightHover]);\n }\n else if (this.parent.isAdaptive) {\n var record = this.parent.ganttChartModule.getRecordByTaskBar(secondElement);\n if (record && record.hasChildRecords) {\n removeClass([secondElement], [cls.activeParentTask]);\n }\n }\n this.editElement = null;\n }\n };\n /**\n * To get taskbar edit actions.\n *\n * @param {PointerEvent} e .\n * @returns {string} .\n * @private\n */\n TaskbarEdit.prototype.getTaskBarAction = function (e) {\n var mouseDownElement = this.getElementByPosition(e);\n var data = this.taskBarEditRecord;\n var action = '';\n if (mouseDownElement.classList.contains(cls.taskBarLeftResizer)) {\n action = 'LeftResizing';\n }\n else if (mouseDownElement.classList.contains(cls.taskBarRightResizer)) {\n action = 'RightResizing';\n }\n else if ((mouseDownElement.classList.contains(cls.childProgressResizer) ||\n closest(mouseDownElement, '.' + cls.childProgressResizer)) && (this.parent.taskFields.progress)) {\n action = 'ProgressResizing';\n }\n else if (mouseDownElement.classList.contains(cls.connectorPointLeft)) {\n action = 'ConnectorPointLeftDrag';\n }\n else if (mouseDownElement.classList.contains(cls.connectorPointRight)) {\n action = 'ConnectorPointRightDrag';\n }\n else if (mouseDownElement.classList.contains(cls.manualParentRightResizer)) {\n action = 'ParentResizing';\n }\n else if (mouseDownElement.classList.contains(cls.manualParentTaskBar) ||\n mouseDownElement.classList.contains(cls.manualParentMainContainer) ||\n mouseDownElement.classList.contains(cls.manualParentMilestone)) {\n action = 'ManualParentDrag';\n }\n else if (data) {\n action = data.hasChildRecords ? 'ParentDrag'\n : data.ganttProperties.isMilestone ? 'MilestoneDrag' : 'ChildDrag';\n }\n return action;\n };\n /**\n * To update property while perform mouse down.\n *\n * @param {PointerEvent} event .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.updateMouseDownProperties = function (event) {\n var e = this.getCoordinate(event);\n var parentWithZoomStyle = this.parent.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n var zoom1 = parseFloat(getComputedStyle(parentWithZoomStyle).zoom);\n e.pageX = e.pageX / zoom1;\n e.pageY = e.pageY / zoom1;\n }\n if (e.pageX || e.pageY) {\n var containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);\n if (this.parent.enableRtl) {\n this.mouseDownX = Math.abs(e.pageX - (containerPosition.left +\n Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));\n }\n else {\n this.mouseDownX = (e.pageX - containerPosition.left) +\n this.parent.ganttChartModule.scrollObject.previousScroll.left;\n }\n this.tooltipPositionX = this.mouseDownX;\n this.mouseDownY = this.dragMoveY = e.pageY - containerPosition.top +\n this.parent.ganttChartModule.scrollObject.previousScroll.top;\n }\n if (this.taskBarEditAction === 'ConnectorPointLeftDrag' || this.taskBarEditAction === 'ConnectorPointRightDrag') {\n this.fromPredecessorText = this.taskBarEditAction === 'ConnectorPointLeftDrag' ? 'start' : 'finish';\n this.parent.connectorLineModule.tooltipTable.innerHTML = this.parent.connectorLineModule.getConnectorLineTooltipInnerTd(this.taskBarEditRecord.ganttProperties.taskName, this.fromPredecessorText, '', '');\n }\n };\n TaskbarEdit.prototype.isMouseDragCheck = function () {\n if (!this.isMouseDragged && this.taskBarEditAction && ((this.mouseDownX !== this.mouseMoveX) &&\n ((this.mouseDownX + 3) < this.mouseMoveX || (this.mouseDownX - 3) > this.mouseMoveX)\n || (this.mouseDownY !== this.mouseMoveY) &&\n ((this.mouseDownY + 3) < this.mouseMoveY || (this.mouseDownY - 3) > this.mouseMoveY))) {\n this.isMouseDragged = true;\n this.parent.initiateEditAction(true);\n var item = this.taskBarEditRecord.ganttProperties;\n this.previousItem = this.parent.timelineModule.extendFunction(item, this.previousItemProperty);\n if (this.taskBarEditAction !== 'ConnectorPointLeftDrag' &&\n this.taskBarEditAction !== 'ConnectorPointRightDrag' &&\n !(this.parent.viewType == 'ResourceView' && this.taskBarEditAction == 'ParentDrag')) {\n this.editTooltip.showHideTaskbarEditTooltip(true, this.segmentIndex);\n }\n this.taskBarEditElement.setAttribute('aria-grabbed', 'true');\n }\n };\n TaskbarEdit.prototype.removeFirstBorder = function (element) {\n var canremove = this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment';\n if (this.parent.element.getElementsByClassName('e-firstrow-border').length > 0 && element &&\n (element.getAttribute('data-rowindex') !== 0 || canremove)) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n };\n ;\n TaskbarEdit.prototype.removeLastBorder = function (element) {\n var isEmptyRow = element && (element.classList.contains('e-emptyrow') || element.classList.contains('e-columnheader')\n || element.classList.contains('e-detailrow'));\n var islastRowIndex;\n if (this.parent.enableVirtualization) {\n islastRowIndex = element && !isEmptyRow &&\n this.parent.treeGrid.getRows()[this.parent.treeGrid.getCurrentViewRecords().length - 1].getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n else {\n islastRowIndex = element && !isEmptyRow &&\n this.parent.treeGrid.getRowByIndex(this.parent.treeGrid.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n var canremove = islastRowIndex || this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment';\n if (this.parent.element.getElementsByClassName('e-lastrow-border').length > 0 && element && (islastRowIndex || canremove)) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n };\n ;\n TaskbarEdit.prototype.removetopOrBottomBorder = function () {\n var border;\n border = [].slice.call(this.parent.element.querySelectorAll('.e-dropbottom, .e-droptop'));\n if (border.length) {\n this.addRemoveClasses(border, false, 'e-dropbottom');\n this.addRemoveClasses(border, false, 'e-droptop');\n }\n };\n ;\n TaskbarEdit.prototype.topOrBottomBorder = function (target) {\n var rowElement;\n if (this.parent.enableVirtualization) {\n var gridElement = this.parent.treeGrid.getRows().filter(function (data) {\n return data.getAttribute('data-rowindex') === target.getAttribute('data-rowindex');\n })[0];\n var index = this.parent.treeGrid.getRows().indexOf(gridElement);\n rowElement = this.parent.getRowByIndex(index).children;\n }\n else {\n rowElement = this.parent.getRowByIndex(parseInt(target.getAttribute('data-rowindex'))).children;\n }\n if (rowElement) {\n if (this.parent.rowDragAndDropModule['dropPosition'] === 'above') {\n this.addRemoveClasses(rowElement, true, 'e-droptop');\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0) {\n this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0].remove();\n }\n }\n if (this.parent.rowDragAndDropModule['dropPosition'] === 'below') {\n this.addRemoveClasses(rowElement, true, 'e-dropbottom');\n }\n }\n };\n ;\n TaskbarEdit.prototype.removeChildBorder = function () {\n var borderElem;\n borderElem = [].slice.call(this.parent.element.querySelectorAll('.e-childborder'));\n if (borderElem.length > 0) {\n this.addRemoveClasses(borderElem, false, 'e-childborder');\n }\n };\n ;\n TaskbarEdit.prototype.addRemoveClasses = function (cells, add, className) {\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n cells[parseInt(i.toString(), 10)].classList.add(className);\n }\n else {\n cells[parseInt(i.toString(), 10)].classList.remove(className);\n }\n }\n };\n ;\n TaskbarEdit.prototype.addErrorElem = function () {\n var dragelem = document.getElementsByClassName('e-clone-taskbar')[0];\n var errorelem = document.querySelectorAll('.e-errorelem').length;\n if (!errorelem) {\n var ele = document.createElement('div');\n classList(ele, ['e-errorcontainer'], []);\n classList(ele, ['e-icons', 'e-errorelem'], []);\n if (this.taskBarEditRecord.ganttProperties.segments && this.taskBarEditRecord.ganttProperties.segments.length > 0) {\n ele.style.paddingTop = this.parent.taskbarHeight + 'px';\n }\n dragelem.appendChild(ele);\n }\n };\n TaskbarEdit.prototype.removeErrorElem = function () {\n var errorelem = document.querySelector('.e-errorelem');\n if (errorelem) {\n errorelem.remove();\n }\n };\n ;\n TaskbarEdit.prototype.ensurePosition = function (draggedRecords, currentRecord) {\n var _this = this;\n draggedRecords.filter(function (draggedRecord) {\n if (draggedRecord.hasChildRecords && !isNullOrUndefined(draggedRecord.childRecords)) {\n var valid = draggedRecord.childRecords.indexOf(currentRecord);\n if (valid === -1) {\n _this.ensurePosition(draggedRecord.childRecords, currentRecord);\n }\n else {\n _this.parent.rowDragAndDropModule['dropPosition'] = 'Invalid';\n _this.addErrorElem();\n return;\n }\n }\n });\n };\n ;\n /**\n * To handle mouse move action in chart\n *\n * @param {PointerEvent} event .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.mouseMoveAction = function (event) {\n var _this = this;\n if (this.parent.isAdaptive) {\n if (!this.canDrag) {\n return;\n }\n else {\n this.multipleSelectionEnabled();\n }\n }\n var containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);\n var e = this.getCoordinate(event);\n if (this.parent.enableRtl) {\n this.mouseMoveX = Math.abs(e.pageX - (containerPosition.left +\n Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));\n }\n else {\n this.mouseMoveX = e.pageX - containerPosition.left +\n this.parent.ganttChartModule.scrollObject.previousScroll.left;\n }\n this.mouseMoveY = e.pageY - containerPosition.top +\n this.parent.ganttChartModule.scrollObject.previousScroll.top;\n this.dragMouseLeave = false;\n var cancel = false;\n if (this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'ParentDrag' || this.taskBarEditAction === 'ManualParentDrag' || this.taskBarEditAction === 'MilestoneDrag') {\n var ganttRowElement = void 0;\n if (this.parent.enableVirtualization) {\n var index = this.parent.currentViewData.indexOf(this.taskBarEditRecord);\n ganttRowElement = this.parent.getRowByIndex(index);\n }\n else {\n ganttRowElement = this.parent.getRowByIndex(this.taskBarEditRecord.index);\n }\n var eventArgs = {\n cancel: cancel,\n cloneElement: this.taskbarElement,\n data: this.taskBarEditRecord,\n target: event.target,\n rows: ganttRowElement\n };\n this.parent.trigger('rowDrag', eventArgs);\n cancel = eventArgs['cancel'];\n }\n if (!cancel) {\n this.isMouseDragCheck();\n }\n if (this.isMouseDragged && this.taskBarEditAction) {\n event.preventDefault();\n if (!isNullOrUndefined(this.taskbarElement) && !isNullOrUndefined(this.editElement) && (this.taskBarEditAction !== \"ConnectorPointRightDrag\" && this.taskBarEditAction !== \"ConnectorPointLeftDrag\") && !(this.parent.viewType === 'ResourceView' && this.currentData.hasChildRecords)) {\n var currentElement = this.editElement.parentElement;\n currentElement.style.setProperty(\"position\", \"absolute\");\n if ((this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'LeftResizing') && !isNullOrUndefined(this.currentIndex) && !isNullOrUndefined(this.currentIndex) ? Number(this.currentIndex) === 0 : false) {\n this.taskbarElement.childNodes[0].childNodes[0].style.setProperty(\"top\", currentElement.parentElement.offsetTop + \"px\");\n if (this.parent.allowTaskbarDragAndDrop && this.taskBarEditAction !== 'LeftResizing' && this.taskBarEditAction !== 'RightResizing' && this.taskBarEditAction !== 'ProgressResizing') {\n this.parent.chartPane.getElementsByClassName('e-gantt-chart')[0].appendChild(this.taskbarElement);\n }\n else {\n currentElement.parentElement.appendChild(this.taskbarElement);\n }\n }\n else {\n if (this.parent.allowTaskbarDragAndDrop && this.taskBarEditAction !== 'LeftResizing' && this.taskBarEditAction !== 'RightResizing' && this.taskBarEditAction !== 'ProgressResizing') {\n this.parent.chartPane.getElementsByClassName('e-gantt-chart')[0].appendChild(this.taskbarElement);\n }\n else {\n currentElement.appendChild(this.taskbarElement);\n }\n }\n if (this.taskBarEditAction !== 'ProgressResizing') {\n var rootElement = this.parent.ganttChartModule.chartBodyContainer.querySelectorAll(\".e-chart-rows-container\");\n rootElement[0].appendChild(this.taskbarResizer);\n }\n }\n if (this.parent.allowTaskbarDragAndDrop && (this.taskBarEditAction === \"ChildDrag\" || this.taskBarEditAction === \"ParentDrag\" ||\n this.taskBarEditAction === \"MilestoneDrag\" || this.taskBarEditAction === \"ManualParentDrag\")) {\n var taskbarPosition = this.parent.getOffsetRect(this.taskBarEditElement);\n var left = (!isNullOrUndefined(document.body.className) && document.body.className.includes(\"e-bigger\")) ? 12 : 0;\n var pointerLeft = (3 + this.parent.chartRowsModule.connectorPointWidth + left);\n var xValue = void 0;\n if (this.parent.enableRtl) {\n xValue = Math.abs(taskbarPosition.left + pointerLeft + 1);\n }\n else {\n xValue = Math.abs(taskbarPosition.left - pointerLeft - 1);\n }\n if (!this.isClonedElement && !this.parent.enableRtl) {\n xValue = xValue - this.parent.ganttChartModule.scrollElement.scrollLeft;\n this.isClonedElement = true;\n }\n var rowPositionHeight = 0;\n this.parent.rowDragAndDropModule['dropPosition'] = undefined;\n var target = void 0;\n var yValue = void 0;\n if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {\n yValue = event['changedTouches'][0].pageY;\n }\n else {\n yValue = event.y;\n }\n if (this.parent.enableRtl) {\n target = document.elementFromPoint(this.parent.ganttChartModule.chartBodyContainer.offsetWidth, yValue);\n if (target.classList.contains('e-taskbar-resize-div')) {\n target = document.elementFromPoint(this.parent.ganttChartModule.chartBodyContainer.offsetWidth - target['offsetWidth'], yValue);\n }\n }\n else {\n target = document.elementFromPoint(xValue, yValue);\n }\n var draggedTreeGridRowElement = void 0;\n if (this.parent.enableVirtualization) {\n if (!this.draggedTreeGridRowElement) {\n var currentElement = this.editElement.parentElement;\n draggedTreeGridRowElement = currentElement.parentElement;\n this.draggedTreeGridRowElement = draggedTreeGridRowElement;\n this.draggedTreeGridRowHeight = this.draggedTreeGridRowElement.offsetHeight;\n }\n }\n else {\n draggedTreeGridRowElement = this.parent.treeGrid.getRows()[this.parent.flatData.indexOf(this.taskBarEditRecord)];\n this.draggedTreeGridRowElement = draggedTreeGridRowElement;\n if (this.parent.enableMultiTaskbar) {\n if (this.taskBarEditRecord.parentItem && !isNullOrUndefined(this.parent.getRowByID(this.taskBarEditRecord.parentItem.taskId))) {\n this.draggedTreeGridRowHeight = this.parent.getRowByID(this.taskBarEditRecord.parentItem.taskId).offsetHeight;\n if (this.parent.viewType === 'ProjectView' && this.draggedTreeGridRowHeight === 0) {\n var nestedParent = this.parent.getRecordByID(this.taskBarEditRecord.parentItem.taskId);\n while (nestedParent.parentItem) {\n nestedParent = this.parent.getRecordByID(nestedParent.parentItem.taskId);\n this.draggedTreeGridRowHeight = this.parent.getRowByID(nestedParent['TaskID']).offsetHeight;\n }\n }\n }\n else {\n var currentElement = this.editElement.parentElement;\n this.draggedTreeGridRowElement = currentElement.parentElement;\n this.draggedTreeGridRowHeight = this.draggedTreeGridRowElement.offsetHeight;\n }\n }\n else {\n this.draggedTreeGridRowHeight = this.draggedTreeGridRowElement.offsetHeight;\n }\n }\n var chartRowElement_1;\n if (target) {\n chartRowElement_1 = closest(target, 'tr.' + cls.chartRow);\n }\n if (chartRowElement_1) {\n var droppedTreeGridRowElement = void 0;\n if (this.parent.enableVirtualization) {\n droppedTreeGridRowElement = this.parent.treeGrid.getRows().filter(function (data) {\n return data.getAttribute('data-rowindex') === chartRowElement_1.getAttribute('data-rowindex');\n })[0];\n }\n else {\n droppedTreeGridRowElement = this.parent.treeGrid.getRows()[parseInt(chartRowElement_1.getAttribute('data-rowindex'))];\n }\n this.removeFirstBorder(droppedTreeGridRowElement);\n this.removeLastBorder(droppedTreeGridRowElement);\n if (!isNullOrUndefined(droppedTreeGridRowElement) && droppedTreeGridRowElement.getAttribute('data-uid') === this.draggedTreeGridRowElement.getAttribute('data-uid')\n || !parentsUntil(target, 'e-chart-rows-container')) {\n this.parent.rowDragAndDropModule['dropPosition'] = 'Invalid';\n this.addErrorElem();\n }\n var tObj = this.parent;\n var rowTop = 0;\n var toolHeight = tObj.toolbarModule ?\n this.parent.toolbarModule.element.offsetHeight : 0;\n var positionOffSet = this.parent.getOffsetRect(tObj.element);\n var contentHeight = tObj.treeGrid.getHeaderContent().offsetHeight + positionOffSet.top + toolHeight;\n var scrollTop = tObj.treeGrid.getContent().firstElementChild.scrollTop;\n if (!isNullOrUndefined(droppedTreeGridRowElement)) {\n rowPositionHeight = droppedTreeGridRowElement.offsetTop - scrollTop;\n }\n if (this.parent.enableVirtualization) {\n rowTop = this.parent.getOffsetRect(droppedTreeGridRowElement).top;\n }\n else {\n rowTop = rowPositionHeight + contentHeight;\n }\n var rowBottom = rowTop + this.draggedTreeGridRowHeight;\n var difference = rowBottom - rowTop;\n var divide = difference / 3;\n var topRowSegment = rowTop + divide;\n var middleRowSegment = topRowSegment + divide;\n var bottomRowSegment = middleRowSegment + divide;\n var posy = (event.type === 'mousemove') ? event.pageY : ((!isNullOrUndefined(event['changedTouches'])) ? event['changedTouches'][0].pageY : null);\n var isTopSegment = posy <= topRowSegment;\n var isMiddleRowSegment = (posy > topRowSegment && posy <= middleRowSegment);\n var isBottomRowSegment = (posy > middleRowSegment && posy <= bottomRowSegment);\n if (isTopSegment || isMiddleRowSegment || isBottomRowSegment) {\n var rowElement = void 0;\n if (this.parent.enableVirtualization) {\n var index = this.parent.treeGrid.getRows().indexOf(droppedTreeGridRowElement);\n rowElement = this.parent.getRowByIndex(index);\n }\n else {\n rowElement = this.parent.getRowByIndex(parseInt(droppedTreeGridRowElement.getAttribute('data-rowindex')));\n }\n var rowIndex = getValue('rowIndex', rowElement);\n var droppedTreeGridRecord = this.parent.flatData[rowIndex];\n var isValid = true;\n if (this.parent.viewType === 'ResourceView' && !this.taskBarEditRecord.hasChildRecords && !droppedTreeGridRecord.hasChildRecords && !isNullOrUndefined(droppedTreeGridRecord.parentItem) && this.taskBarEditRecord.parentItem.taskId === droppedTreeGridRecord.parentItem.taskId) {\n isValid = false;\n }\n if (droppedTreeGridRecord) {\n this.ensurePosition([this.taskBarEditRecord], droppedTreeGridRecord);\n }\n if (isValid) {\n if (isTopSegment && this.parent.rowDragAndDropModule['dropPosition'] !== 'Invalid') {\n this.parent.rowDragAndDropModule['dropPosition'] = 'above';\n this.removeChildBorder();\n this.removeErrorElem();\n this.removetopOrBottomBorder();\n this.topOrBottomBorder(rowElement);\n }\n if (isMiddleRowSegment && this.parent.rowDragAndDropModule['dropPosition'] !== 'Invalid') {\n this.parent.rowDragAndDropModule['dropPosition'] = 'child';\n this.removetopOrBottomBorder();\n this.addRemoveClasses(rowElement.children, true, 'e-childborder');\n }\n if (isBottomRowSegment && this.parent.rowDragAndDropModule['dropPosition'] !== 'Invalid') {\n this.parent.rowDragAndDropModule['dropPosition'] = 'below';\n this.removetopOrBottomBorder();\n this.removeErrorElem();\n this.removeChildBorder();\n this.removeFirstBorder(droppedTreeGridRowElement);\n this.topOrBottomBorder(droppedTreeGridRowElement);\n }\n }\n }\n }\n }\n var args_1 = {\n cancel: false,\n requestType: 'taskbarediting',\n taskBarEditAction: this.taskBarEditAction,\n data: this.taskBarEditRecord\n };\n if (this.segmentIndex !== -1) {\n args_1.requestType = 'mergeSegment';\n }\n this.parent.trigger('actionBegin', args_1, function (arg) {\n if (args_1.taskBarEditAction === \"ConnectorPointRightDrag\" || args_1.taskBarEditAction === \"ConnectorPointLeftDrag\"\n || args_1.taskBarEditAction === \"LeftResizing\" || args_1.taskBarEditAction === \"RightResizing\"\n || args_1.taskBarEditAction === \"ProgressResizing\" || args_1.taskBarEditAction === \"ChildDrag\" || args_1.taskBarEditAction === \"ParentDrag\" || args_1.taskBarEditAction === \"MilestoneDrag\" || args_1.taskBarEditAction === \"ManualParentDrag\") {\n _this.parent.showIndicator = false;\n if (_this.parent.undoRedoModule && _this.parent['isUndoRedoItemPresent']('Edit')) {\n if (_this.parent.undoRedoModule['redoEnabled']) {\n _this.parent.undoRedoModule['disableRedo']();\n }\n var action = {};\n if (_this.parent.undoRedoModule['getUndoCollection'].length === 0) {\n action['modifiedRecords'] = [];\n action['action'] = args_1.taskBarEditAction;\n _this.parent.undoRedoModule['createUndoCollection']();\n _this.parent.undoRedoModule['getUndoCollection'][_this.parent.undoRedoModule['getUndoCollection'].length - 1] = action;\n _this.parent.editModule['createArray'] = false;\n _this.parent.undoRedoModule['changedRecords'] = [];\n }\n else if (_this.parent.editModule['createArray']) {\n action['modifiedRecords'] = [];\n action['action'] = args_1.taskBarEditAction;\n _this.parent.undoRedoModule['createUndoCollection']();\n _this.parent.undoRedoModule['getUndoCollection'][_this.parent.undoRedoModule['getUndoCollection'].length - 1] = action;\n _this.parent.editModule['createArray'] = false;\n _this.parent.undoRedoModule['changedRecords'] = [];\n }\n }\n }\n if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === \"Shimmer\" && _this.parent.showIndicator) {\n _this.parent.showMaskRow();\n }\n else if (_this.parent.showIndicator) {\n _this.parent.showSpinner();\n }\n if (arg.cancel === false) {\n _this.taskBarEditingAction(event, false);\n }\n });\n }\n else if (!this.parent.isAdaptive && !this.taskBarEditAction) {\n this.updateTaskBarEditElement(event);\n }\n };\n /**\n * Method to update taskbar editing action on mous move.\n *\n * @param {PointerEvent} e .\n * @param {boolean} isMouseClick .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.taskBarEditingAction = function (e, isMouseClick) {\n var _this = this;\n var args = {};\n var recordIndex = this.parent.ganttChartModule.getIndexByTaskBar(this.taskBarEditElement);\n if (this.taskBarEditRecord !== null) {\n args.editingFields = this.taskBarEditRecord.ganttProperties;\n args.data = this.taskBarEditRecord;\n if (this.parent.viewType === 'ResourceView' && args.data.level === 0) {\n return;\n }\n args.recordIndex = recordIndex;\n args.taskBarEditAction = this.taskBarEditAction;\n args.roundOffDuration = this.roundOffDuration;\n args.cancel = false;\n args.previousData = this.previousItem;\n args.segmentIndex = this.segmentIndex;\n this.roundOffDuration = args.roundOffDuration;\n this.targetElement = args.target = closest(e.target, '.e-gantt-child-taskbar');\n this.updateMouseMoveProperties(e);\n if (!this.oldData) {\n this.oldData = extend([], [], [this.taskBarEditRecord], true)[0];\n }\n if (this.taskBarEditAction === 'ProgressResizing') {\n this.performProgressResize(e);\n }\n else if (this.taskBarEditAction === 'LeftResizing') {\n this.enableLeftResizing(e);\n }\n else if (this.taskBarEditAction === 'RightResizing' || this.taskBarEditAction === 'ParentResizing') {\n this.enableRightResizing(e);\n }\n else if (this.taskBarEditAction === 'ParentDrag' || this.taskBarEditAction === 'ChildDrag' ||\n this.taskBarEditAction === 'MilestoneDrag' || this.taskBarEditAction === 'ManualParentDrag') {\n this.enableDragging(e);\n }\n else if (this.taskBarEditAction === 'ConnectorPointLeftDrag' ||\n this.taskBarEditAction === 'ConnectorPointRightDrag') {\n this.updateConnectorLineSecondProperties(e);\n this.triggerDependencyEvent(e);\n this.drawFalseLine();\n }\n if (this.parent.allowTaskbarDragAndDrop && this.taskBarEditAction !== 'LeftResizing' && this.taskBarEditAction !== 'RightResizing' && this.taskBarEditAction !== 'ProgressResizing') {\n var parentClientRect = this.parent.getOffsetRect(this.parent.chartPane);\n var coordinates = this.getCoordinate(e);\n var position = { top: coordinates.pageY, left: coordinates.pageX };\n var pos = { left: Math.abs(position.left - parentClientRect.left), top: position.top - parentClientRect.top };\n if (this.parent.viewType === 'ResourceView' && this.parent.enableMultiTaskbar) {\n var parentRecord = this.parent.getRecordByID(this.taskBarEditRecord.parentItem.taskId);\n if (!this.parent.allowTaskbarOverlap && this.taskBarEditRecord.parentItem && !parentRecord.expanded) {\n var reduceHeight = 0;\n if (parseInt(this.editElement['style'].marginTop) > this.parent.rowHeight) {\n for (var i = 0; i < parentRecord.childRecords.length; i++) {\n if (parentRecord.childRecords[i].ganttProperties.taskId !== this.taskBarEditRecord.ganttProperties.taskId) {\n reduceHeight = reduceHeight + this.parent.rowHeight;\n }\n else {\n break;\n }\n }\n pos.top = pos.top - reduceHeight;\n }\n }\n }\n this.topValue = pos.top;\n var xValue = void 0;\n var yValue = void 0;\n if (e.type === 'touchmove' || e.type === 'touchstart' || e.type === 'touchend') {\n xValue = e['changedTouches'][0].pageX;\n yValue = e['changedTouches'][0].pageY;\n }\n else {\n xValue = e.pageX;\n yValue = e.pageY;\n }\n if (this.parent.enableRtl) {\n this.leftValue = pos.left - Math.abs(xValue - (this.parent.getOffsetRect(this.taskBarEditElement).left)) - (this.previousLeftValue !== 0 ? xValue - this.previousLeftValue : 0);\n }\n else {\n this.leftValue = pos.left - (xValue - this.parent.getOffsetRect(this.taskBarEditElement).left) + (this.previousLeftValue !== 0 ? xValue - this.previousLeftValue : 0);\n }\n if (this.previousLeftValue == 0) {\n if (!this.parent.enableRtl) {\n this.leftValue = this.leftValue - this.parent.ganttChartModule.scrollObject.previousScroll.left;\n }\n else {\n this.leftValue = this.leftValue - (this.parent.ganttChartModule.scrollObject.previousScroll.left);\n if (this.parent.ganttChartModule.scrollObject.previousScroll.left == 0) {\n this.leftValue = this.leftValue - 60;\n }\n }\n }\n this.previousLeftValue = xValue;\n }\n else {\n this.leftValue = this.taskBarEditRecord.ganttProperties.left;\n }\n this.setItemPosition();\n this.updateEditedItem();\n this.tooltipValue = (e.type === 'touchmove' || e.type === 'touchstart' || e.type === 'touchend') ? e['changedTouches'][0].pageX : e.pageX;\n this.editTooltip.updateTooltip(this.segmentIndex);\n if (isMouseClick) {\n this.taskBarEditedAction(e);\n }\n this.parent.trigger('taskbarEditing', args, function (arg) {\n if (arg.cancel && _this.taskBarEditRecord !== null) {\n _this.tapPointOnFocus = false;\n merge(_this.taskBarEditRecord.ganttProperties, arg.previousData);\n }\n });\n }\n };\n /**\n * To update property while perform mouse move.\n *\n * @param {PointerEvent} event .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.updateMouseMoveProperties = function (event) {\n var containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);\n var e = this.getCoordinate(event);\n var parentWithZoomStyle = this.parent.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n var zoom1 = parseFloat(getComputedStyle(parentWithZoomStyle).zoom);\n e.pageX = e.pageX / zoom1;\n e.pageY = e.pageY / zoom1;\n }\n if (e.pageX || e.pageY) {\n if (this.parent.enableRtl) {\n this.mouseMoveX = Math.abs(e.pageX - (containerPosition.left +\n Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));\n }\n else {\n this.mouseMoveX = e.pageX - containerPosition.left +\n this.parent.ganttChartModule.scrollObject.previousScroll.left;\n }\n this.tooltipPositionX = this.mouseMoveX;\n this.mouseMoveY = e.pageY - containerPosition.top +\n this.parent.ganttChartModule.scrollObject.previousScroll.top;\n }\n var isConnectorLineEdit = (this.taskBarEditAction === 'ConnectorPointLeftDrag' ||\n this.taskBarEditAction === 'ConnectorPointRightDrag') ?\n true : false;\n if (((this.taskBarEditRecord.ganttProperties.width > 3 || this.taskBarEditRecord.ganttProperties.isMilestone) && !(this.taskBarEditAction === 'ProgressResizing' &&\n (this.taskBarEditRecord.ganttProperties.progress === 0 || this.taskBarEditRecord.ganttProperties.progress === 100))) ||\n isConnectorLineEdit) {\n var mouseX = 0;\n if (this.parent.enableRtl) {\n mouseX = Math.abs(Math.abs(this.mouseMoveX) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left) +\n containerPosition.left);\n }\n else {\n mouseX = this.mouseMoveX - this.parent.ganttChartModule.scrollObject.previousScroll.left +\n containerPosition.left;\n }\n var mouseY = this.mouseMoveY - this.parent.ganttChartModule.scrollObject.previousScroll.top +\n containerPosition.top;\n if ((mouseX + 20) >\n containerPosition.left + this.parent.ganttChartModule.chartBodyContainer.offsetWidth) {\n this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;\n this.startScrollTimer('right');\n }\n else if ((mouseX + 40) >\n containerPosition.left + this.parent.ganttChartModule.chartBodyContainer.offsetWidth && this.parent.enableRtl && this.parent.ganttChartModule.scrollObject.previousScroll.left == 0) {\n this.parent.ganttChartModule.scrollObject.previousScroll.left = -1;\n this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;\n this.startScrollTimer('right');\n }\n else if ((mouseX - 20) < containerPosition.left) {\n this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;\n this.startScrollTimer('left');\n }\n else if (((mouseY + 80) >\n containerPosition.top + this.parent.ganttChartModule.chartBodyContainer.offsetHeight)) {\n this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.top;\n this.startScrollTimer('bottom');\n }\n else if (((mouseY - 20) < containerPosition.top)) {\n this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.top;\n this.startScrollTimer('top');\n }\n else {\n this.stopScrollTimer();\n }\n }\n else {\n this.stopScrollTimer();\n }\n };\n /**\n * To start the scroll timer.\n *\n * @param {string} direction .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.startScrollTimer = function (direction) {\n var _this = this;\n this.stopScrollTimer();\n var leftSign = 0;\n this.scrollTimer = window.setInterval(function () {\n if (Math.sign(_this.timerCount) == -1) {\n leftSign = -1;\n _this.timerCount = Math.abs(_this.timerCount);\n }\n if (direction === 'right') {\n var timelineWidth = _this.parent.enableTimelineVirtualization ? _this.parent.timelineModule.wholeTimelineWidth : _this.parent.timelineModule.totalTimelineWidth;\n _this.timerCount = (_this.timerCount + 1) >= timelineWidth ?\n timelineWidth : (_this.timerCount + 1);\n }\n else if (direction === 'bottom') {\n _this.timerCount = _this.timerCount + 1;\n }\n else {\n _this.timerCount = (_this.timerCount - 1) < 0 ? 0 : (_this.timerCount - 1);\n }\n if (direction === 'bottom' || direction === 'top') {\n _this.parent.ganttChartModule.scrollObject.setScrollTop(_this.timerCount);\n }\n else {\n _this.parent.ganttChartModule.scrollObject.setScrollLeft(_this.timerCount, leftSign);\n }\n if (_this.taskBarEditAction === 'ConnectorPointLeftDrag'\n || _this.taskBarEditAction === 'ConnectorPointRightDrag') {\n _this.drawFalseLine();\n }\n }, 0);\n };\n /**\n * To stop the scroll timer.\n *\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.stopScrollTimer = function () {\n window.clearInterval(this.scrollTimer);\n this.scrollTimer = null;\n };\n /**\n * To update left and width while perform taskbar drag operation.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n TaskbarEdit.prototype.enableDragging = function (e) {\n var item = this.taskBarEditRecord.ganttProperties;\n var timelineWidth = this.parent.enableTimelineVirtualization ? this.parent.timelineModule.wholeTimelineWidth : this.parent.timelineModule.totalTimelineWidth;\n var differenceWidth = 0;\n if (this.taskBarEditElement.classList.contains('e-segmented-taskbar') &&\n !this.taskBarEditElement.classList.contains('e-segment-first')) {\n var segments = this.taskBarEditRecord.ganttProperties.segments.map(function (e) { return (__assign({}, e)); });\n var segment = segments[this.segmentIndex];\n if (this.mouseDownX > this.mouseMoveX) {\n differenceWidth = isNullOrUndefined(this.previousMouseMove) ?\n (this.mouseDownX - this.mouseMoveX) : (this.previousMouseMove - this.mouseMoveX);\n this.previousMouseMove = this.mouseMoveX;\n segment.left = segment.left - differenceWidth;\n }\n else {\n differenceWidth = isNullOrUndefined(this.previousMouseMove) ?\n (this.mouseMoveX - this.mouseDownX) : (this.mouseMoveX - this.previousMouseMove);\n this.previousMouseMove = this.mouseMoveX;\n segment.left = segment.left + differenceWidth;\n }\n var previousSegment = segments[this.segmentIndex - 1];\n var nextSegment = segments[this.segmentIndex + 1];\n var left = void 0;\n if (this.taskBarEditElement.classList.contains('e-segment-inprogress')) {\n left = segment.left < (previousSegment.left + previousSegment.width) ? (previousSegment.left + previousSegment.width) :\n ((segment.width + segment.left) > (nextSegment.left)) ? nextSegment.left - segment.width : segment.left;\n }\n else {\n left = segment.left < (previousSegment.left + previousSegment.width) ? (previousSegment.left + previousSegment.width) :\n (item.left + segment.width + segment.left) >= timelineWidth ?\n (timelineWidth - segment.width) : segment.left;\n }\n segment.left = left;\n this.parent.setRecordValue('segments', segments, item, true);\n this.parent.dataOperation.updateMappingData(this.taskBarEditRecord, 'segments');\n }\n else {\n if (this.mouseDownX > this.mouseMoveX) {\n differenceWidth = this.mouseDownX - this.mouseMoveX;\n if (differenceWidth > 0) {\n this.parent.setRecordValue('left', this.previousItem.left - differenceWidth, item, true);\n }\n }\n else {\n differenceWidth = this.mouseMoveX - this.mouseDownX;\n this.parent.setRecordValue('left', this.previousItem.left + differenceWidth, item, true);\n }\n var left = item.left < 0 ? 0 : (item.left + item.width) >= timelineWidth ?\n (timelineWidth - item.width) : item.left;\n this.parent.setRecordValue('left', left, item, true);\n }\n };\n /**\n * To update left and width while perform progress resize operation.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n TaskbarEdit.prototype.performProgressResize = function (e) {\n var item = this.taskBarEditRecord.ganttProperties;\n var diffrenceWidth = 0;\n if (this.mouseDownX > this.mouseMoveX) {\n if (this.mouseMoveX > item.left &&\n (this.mouseMoveX < (item.left + item.width)) && item.left > 0) {\n diffrenceWidth = this.mouseMoveX - item.left;\n this.parent.setRecordValue('progressWidth', diffrenceWidth, item, true);\n }\n else {\n if (this.mouseMoveX >= (item.left + item.width)) {\n this.parent.setRecordValue('progressWidth', item.width, item, true);\n }\n else {\n this.parent.setRecordValue('progressWidth', 0, item, true);\n }\n }\n }\n else {\n if (this.mouseMoveX > item.left &&\n (this.mouseMoveX < (item.left + item.width))) {\n diffrenceWidth = this.mouseMoveX - item.left;\n this.parent.setRecordValue('progressWidth', diffrenceWidth, item, true);\n }\n else {\n if (this.mouseMoveX <= item.left) {\n this.parent.setRecordValue('progressWidth', 0, item, true);\n }\n else {\n this.parent.setRecordValue('progressWidth', item.width, item, true);\n }\n }\n }\n var widthValue = item.progressWidth > item.width ?\n item.width : item.progressWidth;\n widthValue = item.progressWidth < 0 ? 0 : item.progressWidth;\n this.parent.setRecordValue('progressWidth', widthValue, item, true);\n var diff = item.width - item.progressWidth;\n if (diff <= 4) {\n this.progressBorderRadius = 4 - diff;\n }\n else {\n this.progressBorderRadius = 0;\n }\n };\n /**\n * To update left and width while perform taskbar left resize operation.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.enableLeftResizing = function (e) {\n var item = this.taskBarEditRecord.ganttProperties;\n var differenceWidth = 0;\n if (this.taskBarEditElement.classList.contains('e-segmented-taskbar')) {\n this.enableSplitTaskLeftResize(item);\n }\n else {\n if (this.mouseDownX > this.mouseMoveX) {\n if (this.mouseMoveX < (item.left + item.width)) {\n differenceWidth = this.mouseDownX - this.mouseMoveX;\n if (item.left > 0) {\n this.parent.setRecordValue('left', this.previousItem.left - differenceWidth, item, true);\n this.parent.setRecordValue('width', this.previousItem.width + differenceWidth, item, true);\n }\n }\n else {\n if (this.mouseMoveX > (item.left + item.width)) {\n differenceWidth = this.mouseDownX - this.mouseMoveX;\n this.parent.setRecordValue('left', this.previousItem.left - differenceWidth, item, true);\n this.parent.setRecordValue('width', 3, item, true);\n }\n }\n }\n else {\n if (this.mouseMoveX < (item.left + item.width)) {\n differenceWidth = this.mouseMoveX - this.mouseDownX;\n if ((item.left) < (item.left + item.width) &&\n ((this.previousItem.left + differenceWidth) <= (this.previousItem.left + this.previousItem.width))) {\n this.parent.setRecordValue('left', this.previousItem.left + differenceWidth, item, true);\n this.parent.setRecordValue('width', this.previousItem.width - differenceWidth, item, true);\n }\n }\n else {\n differenceWidth = this.mouseMoveX - this.mouseDownX;\n this.parent.setRecordValue('left', this.previousItem.left + differenceWidth, item, true);\n this.parent.setRecordValue('width', 3, item, true);\n }\n }\n this.updateEditPosition(e, item);\n this.parent.setRecordValue('left', (this.previousItem.left + this.previousItem.width - item.width), item, true);\n }\n };\n TaskbarEdit.prototype.enableSplitTaskLeftResize = function (item) {\n var segments = this.taskBarEditRecord.ganttProperties.segments.map(function (e) { return (__assign({}, e)); });\n var segment = segments[this.segmentIndex];\n var differenceWidth = 0;\n //when decrease the left and increase the width\n if (this.mouseDownX > this.mouseMoveX) {\n if (this.mouseMoveX < (item.left + segment.width + segment.left)) {\n differenceWidth = isNullOrUndefined(this.previousMouseMove) ?\n (this.mouseDownX - this.mouseMoveX) : (this.previousMouseMove - this.mouseMoveX);\n this.previousMouseMove = this.mouseMoveX;\n // when resize other than 0th segment\n if (segment.left > 0) {\n segment.left = segment.left - differenceWidth;\n segment.width = segment.width + differenceWidth;\n if (this.segmentIndex !== 0) {\n var previousSegment = segments[this.segmentIndex - 1];\n if ((item.left + segment.left) < (item.left + previousSegment.left + previousSegment.width)) {\n var difference = (item.left + previousSegment.left + previousSegment.width) - (item.left + segment.left);\n segment.width -= difference;\n segment.left = segment.left + difference;\n }\n }\n }\n else if (segment.left <= 0 && this.segmentIndex === 0) {\n this.parent.setRecordValue('left', item.left - differenceWidth, item, true);\n this.parent.setRecordValue('width', item.width + differenceWidth, item, true);\n segment.width = segment.width + differenceWidth;\n for (var i = 1; i < item.segments.length; i++) {\n var segment_1 = segments[i];\n segment_1.left = segment_1.left + differenceWidth;\n }\n }\n }\n else {\n if (this.mouseMoveX > (item.left + segment.width + segment.left)) {\n differenceWidth = isNullOrUndefined(this.previousMouseMove) ?\n (this.mouseDownX - this.mouseMoveX) : (this.previousMouseMove - this.mouseMoveX);\n this.previousMouseMove = this.mouseMoveX;\n segment.left = segment.left - differenceWidth;\n segment.width = this.parent.perDayWidth;\n }\n }\n }\n else {\n // when increase left value and decrease width of segment\n if (this.mouseMoveX < (item.left + segment.width + segment.left - this.parent.perDayWidth)) {\n differenceWidth = isNullOrUndefined(this.previousMouseMove) ?\n (this.mouseMoveX - this.mouseDownX) : (this.mouseMoveX - this.previousMouseMove);\n this.previousMouseMove = this.mouseMoveX;\n // when decrease the first segment width\n if (this.segmentIndex === 0 && segment.left <= 0) {\n this.parent.setRecordValue('left', item.left + differenceWidth, item, true);\n this.parent.setRecordValue('width', item.width - differenceWidth, item, true);\n segment.width = segment.width - differenceWidth;\n for (var i = 1; i < item.segments.length; i++) {\n var segment_2 = segments[i];\n segment_2.left = segment_2.left - differenceWidth;\n }\n // when decrease remaining segments\n }\n else if ((segment.left) < (segment.left + segment.width) &&\n ((segment.left + differenceWidth) <= (segment.left + segment.width))) {\n segment.left = segment.left + differenceWidth;\n segment.width = segment.width - differenceWidth;\n }\n // when mouse move goes beyond one day width of task bar.\n }\n else {\n if (this.mouseMoveX < (item.left + segment.left + segment.width)) {\n if (segment.width > this.parent.perDayWidth) {\n differenceWidth = isNullOrUndefined(this.previousMouseMove) ?\n (this.mouseMoveX - this.mouseDownX) : (this.mouseMoveX - this.previousMouseMove);\n this.previousMouseMove = this.mouseMoveX;\n var singleDayDifference = (segment.width - differenceWidth) < this.parent.perDayWidth ?\n this.parent.perDayWidth > segment.width ?\n this.parent.perDayWidth - segment.width : segment.width - this.parent.perDayWidth : 0;\n differenceWidth -= singleDayDifference;\n if (this.segmentIndex === 0) {\n this.parent.setRecordValue('width', item.width - differenceWidth, item, true);\n this.parent.setRecordValue('left', item.left + differenceWidth, item, true);\n segment.width = segment.width - differenceWidth;\n for (var i = 1; i < item.segments.length; i++) {\n var segment_3 = segments[i];\n segment_3.left = segment_3.left - differenceWidth;\n }\n }\n else {\n segment.left = segment.left + differenceWidth;\n segment.width = segment.width - differenceWidth;\n }\n }\n }\n }\n }\n this.parent.setRecordValue('segments', segments, item, true);\n this.parent.dataOperation.updateMappingData(this.taskBarEditRecord, 'segments');\n };\n /**\n * Update mouse position and edited item value\n *\n * @param {PointerEvent} e .\n * @param {ITaskData} item .\n * @returns {void} .\n */\n TaskbarEdit.prototype.updateEditPosition = function (e, item) {\n this.updateIsMilestone(item);\n this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth(item.width, item.progress), item, true);\n };\n /**\n * To update milestone property.\n *\n * @param {ITaskData} item .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.updateIsMilestone = function (item) {\n if (item.width <= 3) {\n this.parent.setRecordValue('width', 3, item, true);\n this.parent.setRecordValue('isMilestone', true, item, true);\n }\n else {\n this.parent.setRecordValue('width', item.width, item, true);\n this.parent.setRecordValue('isMilestone', false, item, true);\n }\n };\n /**\n * To update left and width while perform taskbar right resize operation.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.enableRightResizing = function (e) {\n var item = this.taskBarEditRecord.ganttProperties;\n var differenceWidth = 0;\n if (this.taskBarEditElement.classList.contains('e-segmented-taskbar')) {\n var segments = this.taskBarEditRecord.ganttProperties.segments.map(function (e) { return (__assign({}, e)); });\n var segment = segments[this.segmentIndex];\n if (this.mouseDownX > this.mouseMoveX) {\n if (this.mouseMoveX > (item.left + segment.left) && (this.mouseDownX - this.mouseMoveX) > 3) {\n differenceWidth = isNullOrUndefined(this.previousMouseMove) ?\n (this.mouseDownX - this.mouseMoveX) : (this.previousMouseMove - this.mouseMoveX);\n this.previousMouseMove = this.mouseMoveX;\n segment.width = segment.width - differenceWidth;\n }\n else {\n if (this.mouseMoveX < (item.left + segment.left)) {\n var segmentWidth = (this.parent.timelineModule.isSingleTier &&\n (this.parent.timelineModule.customTimelineSettings.bottomTier.unit === \"Hour\" ||\n this.parent.timelineModule.customTimelineSettings.topTier.unit === \"Hour\" ||\n this.parent.timelineModule.customTimelineSettings.bottomTier.unit === \"Minutes\" ||\n this.parent.timelineModule.customTimelineSettings.topTier.unit === \"Minutes\")) ||\n (this.parent.timelineModule.customTimelineSettings.bottomTier.unit === \"Hour\" ||\n this.parent.timelineModule.customTimelineSettings.bottomTier.unit === \"Minutes\") ?\n this.parent.timelineModule.customTimelineSettings.timelineUnitSize :\n this.parent.perDayWidth;\n segment.width = segmentWidth;\n }\n }\n }\n else {\n if (this.mouseMoveX > segment.left) {\n differenceWidth = isNullOrUndefined(this.previousMouseMove) ?\n (this.mouseMoveX - this.mouseDownX) : (this.mouseMoveX - this.previousMouseMove);\n this.previousMouseMove = this.mouseMoveX;\n segment.width = segment.width + differenceWidth;\n }\n }\n var width = void 0;\n var nextSegment = this.segmentIndex !== segments.length - 1 ? segments[this.segmentIndex + 1] : null;\n if (!isNullOrUndefined(nextSegment)) {\n if (!this.taskBarEditElement.classList.contains('e-segment-last')) {\n width = (segment.left + segment.width) > nextSegment.left ? (nextSegment.left - segment.left) : segment.width;\n }\n segment.width = width;\n }\n if (this.segmentIndex === item.segments.length - 1) {\n if (this.segmentIndex === 0) {\n this.parent.setRecordValue('width', segment.width, item, true);\n }\n }\n this.parent.setRecordValue('segments', segments, item, true);\n this.parent.dataOperation.updateMappingData(this.taskBarEditRecord, 'segments');\n }\n else {\n if (this.mouseDownX > this.mouseMoveX) {\n if (this.mouseMoveX > item.left && (this.mouseDownX - this.mouseMoveX) > 3) {\n differenceWidth = this.mouseDownX - this.mouseMoveX;\n this.parent.setRecordValue('width', this.previousItem.width - differenceWidth, item, true);\n }\n else {\n if (this.mouseMoveX < item.left) {\n this.parent.setRecordValue('width', 3, item, true);\n }\n }\n }\n else {\n if (this.mouseMoveX > item.left) {\n differenceWidth = this.mouseMoveX - this.mouseDownX;\n this.parent.setRecordValue('width', this.previousItem.width + differenceWidth, item, true);\n }\n }\n this.updateEditPosition(e, item);\n }\n };\n /**\n * To updated startDate and endDate while perform taskbar edit operation.\n *\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.updateEditedItem = function () {\n var item = this.taskBarEditRecord.ganttProperties;\n var left;\n var projectStartDate;\n var endDate;\n var startDate;\n switch (this.taskBarEditAction) {\n case 'ProgressResizing':\n this.parent.setRecordValue('progress', this.getProgressPercent(item.width, item.progressWidth), item, true);\n break;\n case 'LeftResizing':\n if (this.segmentIndex === -1) {\n left = this.getRoundOffStartLeft(item, this.roundOffDuration);\n projectStartDate = this.getDateByLeft(left);\n if (isNullOrUndefined(item.endDate)) {\n endDate = this.parent.dateValidationModule.getValidEndDate(item);\n this.parent.setRecordValue('endDate', endDate, item, true);\n }\n startDate = this.parent.dateValidationModule.checkStartDate(projectStartDate, item, null);\n this.parent.setRecordValue('startDate', new Date(startDate.getTime()), item, true);\n if (this.parent.dateValidationModule.compareDates(item.startDate, item.endDate) === 0\n && isNullOrUndefined(item.isMilestone) && item.isMilestone === false && item.duration === 0) {\n this.parent.setRecordValue('duration', 1, item, true);\n }\n if (item.isMilestone) {\n this.parent.setRecordValue('endDate', new Date(startDate.getTime()), item, true);\n }\n this.parent.dateValidationModule.calculateDuration(this.taskBarEditRecord);\n this.parent.editModule.updateResourceRelatedFields(this.taskBarEditRecord, 'duration');\n }\n else {\n this.updateSplitLeftResize(item);\n }\n break;\n case 'RightResizing':\n case 'ParentResizing':\n if (this.segmentIndex === -1) {\n left = this.getRoundOffEndLeft(item, this.roundOffDuration);\n var tempEndDate = this.getDateByLeft(left);\n if (isNullOrUndefined(item.startDate)) {\n startDate = this.parent.dateValidationModule.getValidStartDate(item);\n this.parent.setRecordValue('startDate', startDate, item, true);\n }\n var tempdate = isNullOrUndefined(item.startDate) ? startDate : item.startDate;\n endDate = item.isMilestone ? tempdate :\n this.parent.dateValidationModule.checkEndDate(tempEndDate, this.taskBarEditRecord.ganttProperties);\n this.parent.setRecordValue('endDate', new Date(endDate.getTime()), item, true);\n this.parent.dateValidationModule.calculateDuration(this.taskBarEditRecord);\n this.parent.editModule.updateResourceRelatedFields(this.taskBarEditRecord, 'duration');\n }\n else {\n this.updateSplitRightResizing(item);\n }\n break;\n case 'ParentDrag':\n case 'ChildDrag':\n case 'MilestoneDrag':\n case 'ManualParentDrag':\n if (this.segmentIndex === -1 || this.segmentIndex === 0 || (this.segmentIndex != -1 && this.parent.allowTaskbarDragAndDrop)) {\n this.updateChildDrag(item);\n }\n else {\n this.setSplitTaskDrag(item);\n }\n break;\n }\n };\n TaskbarEdit.prototype.updateChildDrag = function (item) {\n var left = this.getRoundOffStartLeft(item, this.roundOffDuration);\n var projectStartDate = this.getDateByLeft(left, item.isMilestone, item);\n var endDate;\n if (this.segmentIndex === 0) {\n this.parent.setRecordValue('startDate', this.parent.dateValidationModule.checkStartDate(projectStartDate, item, null), item, true);\n item.segments[0].startDate = projectStartDate;\n item.segments[0].endDate = this.parent.dataOperation.getEndDate(item.segments[0].startDate, item.segments[0].duration, item.durationUnit, item, false);\n this.parent.setRecordValue('segments', item.segments, item, true);\n this.parent.dataOperation.updateMappingData(this.taskBarEditRecord, 'segments');\n this.parent.chartRowsModule.incrementSegments(item.segments, 0, this.taskBarEditRecord);\n this.parent.setRecordValue('endDate', item.segments[item.segments.length - 1].endDate, item, true);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.segments, item.segments, this.taskBarEditRecord, true);\n }\n else {\n if (!isNullOrUndefined(item.endDate) && isNullOrUndefined(item.startDate)) {\n endDate = this.parent.dateValidationModule.checkStartDate(projectStartDate, item, null);\n endDate = this.parent.dateValidationModule.checkEndDate(endDate, this.taskBarEditRecord.ganttProperties);\n this.parent.setRecordValue('endDate', endDate, item, true);\n }\n else {\n this.parent.setRecordValue('startDate', this.parent.dateValidationModule.checkStartDate(projectStartDate, item, null), item, true);\n if (!isNullOrUndefined(item.duration)) {\n this.parent.dateValidationModule.calculateEndDate(this.taskBarEditRecord);\n }\n }\n }\n };\n TaskbarEdit.prototype.updateSplitLeftResize = function (item) {\n var segment = item.segments[this.segmentIndex];\n var left = this.segmentIndex === 0 ? this.getRoundOffStartLeft(item, this.roundOffDuration) :\n this.getRoundOffStartLeft(segment, this.roundOffDuration);\n var projectStartDate = this.segmentIndex === 0 ? this.getDateByLeft(left) : this.getDateByLeft(item.left + left);\n var startDate = this.parent.dataOperation.checkStartDate(projectStartDate, item, false);\n var duration = this.parent.dataOperation.getDuration(startDate, segment.endDate, item.durationUnit, item.isAutoSchedule, item.isMilestone);\n segment.startDate = new Date(startDate.getTime());\n segment.duration = duration;\n this.parent.setRecordValue('duration', this.sumOfDuration(item.segments), item, true);\n if (this.segmentIndex === 0) {\n this.parent.setRecordValue('startDate', segment.startDate, item, true);\n }\n this.parent.editModule.updateResourceRelatedFields(this.taskBarEditRecord, 'duration');\n if (!isNullOrUndefined(item.segments[this.segmentIndex - 1])) {\n var segmentOffsetDuration = this.parent.dataOperation.getDuration(item.segments[this.segmentIndex - 1].endDate, item.segments[this.segmentIndex].startDate, item.durationUnit, item.isAutoSchedule, item.isMilestone);\n segment.offsetDuration = segmentOffsetDuration;\n }\n this.parent.setRecordValue('segments', item.segments, item, true);\n this.parent.dataOperation.updateMappingData(this.taskBarEditRecord, 'segments');\n };\n TaskbarEdit.prototype.updateSplitRightResizing = function (item) {\n var segment = item.segments[this.segmentIndex];\n var left = this.getRoundOffEndLeft(item, this.roundOffDuration);\n var tempEndDate = this.getDateByLeft(left);\n var endDate = this.parent.dataOperation.checkEndDate(tempEndDate, item, false);\n var duration = this.parent.dataOperation.getDuration(segment.startDate, endDate, item.durationUnit, item.isAutoSchedule, item.isMilestone);\n segment.endDate = new Date(endDate.getTime());\n segment.duration = duration;\n // update next segment offset duration\n if (!isNullOrUndefined(item.segments[this.segmentIndex + 1])) {\n var nextSegment = item.segments[this.segmentIndex + 1];\n var segmentOffset = this.parent.dataOperation.getDuration(item.segments[this.segmentIndex].endDate, nextSegment.startDate, item.durationUnit, item.isAutoSchedule, item.isMilestone);\n segment.offsetDuration = segmentOffset;\n }\n this.parent.setRecordValue('segments', item.segments, item, true);\n this.parent.dataOperation.updateMappingData(this.taskBarEditRecord, 'segments');\n this.parent.setRecordValue('duration', this.sumOfDuration(item.segments), item, true);\n this.parent.setRecordValue('endDate', item.segments[item.segments.length - 1].endDate, item, true);\n this.parent.editModule.updateResourceRelatedFields(this.taskBarEditRecord, 'duration');\n };\n TaskbarEdit.prototype.sumOfDuration = function (segments) {\n var duration = 0;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n duration += segment.duration;\n }\n return duration;\n };\n TaskbarEdit.prototype.setSplitTaskDrag = function (item) {\n var segment = item.segments[this.segmentIndex];\n var left = this.getRoundOffStartLeft(segment, this.roundOffDuration);\n var projectStartDate = this.getDateByLeft(item.left + left);\n projectStartDate = this.parent.dateValidationModule.checkStartDate(projectStartDate, item, null);\n segment.startDate = projectStartDate;\n segment.endDate = this.parent.dataOperation.getEndDate(segment.startDate, segment.duration, item.durationUnit, item, false);\n segment.duration = this.parent.dataOperation.getDuration(segment.startDate, segment.endDate, item.durationUnit, item.isAutoSchedule, item.isMilestone);\n this.parent.setRecordValue('duration', this.sumOfDuration(item.segments), item, true);\n this.parent.setRecordValue('endDate', item.segments[item.segments.length - 1].endDate, item, true);\n if (!isNullOrUndefined(this.parent.taskFields.endDate)) {\n this.parent.dataOperation.updateMappingData(this.taskBarEditRecord, 'endDate');\n }\n //set offset if previous record present\n if (!isNullOrUndefined(item.segments[this.segmentIndex - 1])) {\n var offsetDuration = this.parent.dataOperation.getDuration(item.segments[this.segmentIndex - 1].endDate, item.segments[this.segmentIndex].startDate, item.durationUnit, item.isAutoSchedule, item.isMilestone);\n if (segment.startDate.getDay() === 1 && offsetDuration === 0 && !this.parent.includeWeekend) {\n offsetDuration = 1;\n }\n segment.offsetDuration = offsetDuration;\n }\n //set next record offset if present\n if (!isNullOrUndefined(item.segments[this.segmentIndex + 1])) {\n var nextSegment = item.segments[this.segmentIndex + 1];\n var offsetDuration = this.parent.dataOperation.getDuration(item.segments[this.segmentIndex].endDate, nextSegment.startDate, item.durationUnit, item.isAutoSchedule, item.isMilestone);\n if (nextSegment.startDate.getDay() === 1 && offsetDuration === 0 && !this.parent.includeWeekend) {\n offsetDuration = 1;\n }\n nextSegment.offsetDuration = offsetDuration;\n }\n this.parent.setRecordValue('segments', item.segments, item, true);\n this.parent.dataOperation.updateMappingData(this.taskBarEditRecord, 'segments');\n };\n /**\n * To get roundoff enddate.\n *\n * @param {ITaskData} ganttRecord .\n * @param {boolean} isRoundOff .\n * @returns {number} .\n * @private\n */\n TaskbarEdit.prototype.getRoundOffEndLeft = function (ganttRecord, isRoundOff) {\n var tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :\n this.parent.timelineModule.topTier;\n var totalLeft = ganttRecord.width + ganttRecord.left;\n if (this.segmentIndex !== -1) {\n var segment = ganttRecord.segments[this.segmentIndex];\n totalLeft = totalLeft - ganttRecord.width + segment.width + segment.left;\n }\n var remainingContribution = (1 / (this.parent.timelineModule.getIncrement(this.getDateByLeft(totalLeft), 1, 'Day') / (1000 * 60 * 60 * 24)));\n var remainingLeft = this.parent.perDayWidth - (this.parent.perDayWidth / remainingContribution);\n var positionValue = remainingLeft / this.parent.perDayWidth;\n if (isRoundOff === undefined) {\n isRoundOff = false;\n }\n /*Rounding the decimal value for week-month-year schedule mode*/\n if (!isRoundOff) {\n if ((tierMode !== 'Hour' && tierMode !== 'Minutes')) {\n if (positionValue > 0.5) {\n totalLeft = totalLeft - remainingLeft + this.parent.perDayWidth;\n }\n else if (positionValue < 0.5) {\n totalLeft = (totalLeft - remainingLeft) + (this.parent.perDayWidth / 2);\n }\n }\n }\n else if (isRoundOff) {\n if (tierMode === 'Hour') {\n var inHour = (this.parent.perDayWidth / 24);\n remainingContribution =\n (1 / (this.parent.timelineModule.getIncrement(this.getDateByLeft(totalLeft), 1, 'Hour') / (1000 * 60 * 60)));\n remainingLeft = (this.parent.perDayWidth / 24) - ((this.parent.perDayWidth / 24) / remainingContribution);\n if (remainingLeft !== 0) {\n totalLeft = (totalLeft - remainingLeft) + inHour;\n }\n }\n else if (tierMode === 'Minutes') {\n var inMinutes = (this.parent.perDayWidth / (24 * 60));\n remainingContribution =\n (1 / (this.parent.timelineModule.getIncrement(this.getDateByLeft(totalLeft), 1, 'Minutes') / (1000 * 60)));\n remainingLeft = (this.parent.perDayWidth / (24 * 60)) - ((this.parent.perDayWidth / (24 * 60)) / remainingContribution);\n if (remainingLeft !== 0) {\n totalLeft = (totalLeft - remainingLeft) + inMinutes;\n }\n }\n else {\n if (remainingLeft !== 0) {\n totalLeft = (totalLeft - remainingLeft) + this.parent.perDayWidth;\n }\n }\n }\n return totalLeft;\n };\n /**\n * To get roundoff startdate.\n *\n * @param {ITaskData | ITaskSegment} ganttRecord .\n * @param {boolean} isRoundOff .\n * @returns {number} .\n * @private\n */\n TaskbarEdit.prototype.getRoundOffStartLeft = function (ganttRecord, isRoundOff) {\n var left = isNullOrUndefined(ganttRecord) ? ganttRecord.left\n : ganttRecord.left;\n var tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.bottomTier :\n this.parent.timelineModule.topTier;\n var remainingContribution = (1 / (this.parent.timelineModule.getIncrement(this.getDateByLeft(left, isNullOrUndefined(ganttRecord) ? ganttRecord.isMilestone : null, ganttRecord), 1, 'Day') / (1000 * 60 * 60 * 24)));\n var remainDays = this.parent.perDayWidth - (this.parent.perDayWidth / remainingContribution);\n var remainDaysInDecimal = remainDays / this.parent.perDayWidth;\n if (isRoundOff === undefined) {\n isRoundOff = false;\n }\n /*Rounding the decimal value for week-month-year schedule mode*/\n if (!isRoundOff) {\n if ((tierMode !== 'Hour' && tierMode !== 'Minutes')) {\n if (remainDaysInDecimal <= 0.5) {\n left = left - remainDays;\n }\n else if (remainDaysInDecimal > 0.5) {\n left = (left - remainDays) + this.parent.perDayWidth / 2;\n }\n }\n }\n else if (isRoundOff) {\n if (tierMode === 'Hour') {\n remainingContribution =\n (1 / (this.parent.timelineModule.getIncrement(this.getDateByLeft(left), 1, 'Hour') / (1000 * 60 * 60)));\n remainDays = (this.parent.perDayWidth / 24) - ((this.parent.perDayWidth / 24) / remainingContribution);\n left = left - remainDays;\n }\n else if (tierMode === 'Minutes') {\n remainingContribution =\n (1 / (this.parent.timelineModule.getIncrement(this.getDateByLeft(left), 1, 'Minutes') / (1000 * 60)));\n remainDays = (this.parent.perDayWidth / (24 * 60)) - ((this.parent.perDayWidth / (24 * 60)) / remainingContribution);\n left = left - remainDays;\n }\n else {\n left = left - remainDays;\n }\n }\n return left;\n };\n /**\n * To get date by left value.\n *\n * @param {number} left .\n * @returns {Date} .\n * @private\n */\n TaskbarEdit.prototype.getDateByLeft = function (left, isMilestone, property) {\n var pStartDate = new Date(this.parent.timelineModule.timelineStartDate.toString());\n var milliSecondsPerPixel = (24 * 60 * 60 * 1000) / this.parent.perDayWidth;\n pStartDate.setTime(pStartDate.getTime() + (left * milliSecondsPerPixel));\n /* To render the milestone in proper date while editing */\n if (isMilestone && !isNullOrUndefined(property.predecessorsName) && property.predecessorsName !== '') {\n // pStartDate.setDate(pStartDate.getDate()-1);\n this.parent.dateValidationModule.setTime(this.parent.defaultEndTime, pStartDate);\n pStartDate = this.parent.dateValidationModule.checkStartDate(pStartDate, property, true);\n }\n var tierMode = this.parent.timelineModule.bottomTier !== 'None' ? this.parent.timelineModule.topTier :\n this.parent.timelineModule.bottomTier;\n if (tierMode !== 'Hour' && tierMode !== 'Minutes') {\n if (this.parent.isInDst(new Date(this.parent.timelineModule.timelineStartDate.toString())) && !this.parent.isInDst(pStartDate)) {\n pStartDate.setTime(pStartDate.getTime() + (60 * 60 * 1000));\n }\n // else if (!this.parent.isInDst(new Date(this.parent.timelineModule.timelineStartDate.toString())) && this.parent.isInDst(pStartDate)) {\n // pStartDate.setTime(pStartDate.getTime() - (60 * 60 * 1000));\n // }\n }\n return pStartDate;\n };\n /**\n * To set item position.\n *\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.setItemPosition = function () {\n if (!isNullOrUndefined(this.editElement)) {\n var currentElement = this.editElement.parentElement;\n if (this.parent.allowTaskbarDragAndDrop && this.taskBarEditAction === 'ChildDrag') {\n currentElement.style.position = null;\n }\n else {\n currentElement.style.setProperty(\"position\", \"absolute\");\n }\n }\n var item = this.taskBarEditRecord.ganttProperties;\n var position = this.parent.enableRtl ? \"right\" : \"left\";\n var segment = !isNullOrUndefined(item.segments) ? item.segments[this.segmentIndex] : null;\n var width = this.taskBarEditAction === 'MilestoneDrag' || item.isMilestone ?\n this.parent.chartRowsModule.milestoneHeight : item.width;\n var rightResizer = this.parent.isAdaptive ? (width - 2) : (width - 10);\n if (!isNullOrUndefined(segment)) {\n rightResizer = this.parent.isAdaptive ? (segment.width - 2) : (segment.width - 10);\n }\n this.taskBarEditElement.style.setProperty(\"opacity\", '.75');\n var taskBarMainContainer;\n if (this.parent.allowTaskbarDragAndDrop && !item.isAutoSchedule && this.taskBarEditRecord.hasChildRecords) {\n taskBarMainContainer = this.taskBarEditElement;\n }\n else {\n taskBarMainContainer = (!this.taskBarEditElement.classList.contains(cls.taskBarMainContainer)) ? ((this.taskBarEditAction === 'ChildDrag' ||\n this.taskBarEditAction === 'LeftResizing') && this.segmentIndex === 0) ? this.taskBarEditElement.parentElement : closest(this.taskBarEditElement, 'tr.' + cls.chartRow)\n .querySelector('.' + cls.taskBarMainContainer) : this.taskBarEditElement;\n }\n var segmentedTaskBarContainer = (this.taskBarEditElement.classList.contains('e-segmented-taskbar') ||\n this.taskBarEditElement.querySelector('.e-segmented-taskbar')) ? true : false;\n var traceChildProgressBar = this.taskBarEditElement.querySelector('.' + cls.traceChildProgressBar);\n var traceChildTaskBar = this.taskBarEditElement.querySelector('.' + cls.traceChildTaskBar);\n var childProgressResizer = this.taskBarEditElement.querySelector('.' + cls.childProgressResizer);\n var taskBarRightResizer = this.taskBarEditElement.querySelector('.' + cls.taskBarRightResizer);\n var traceParentTaskBar = this.taskBarEditElement.querySelector('.' + cls.traceParentTaskBar);\n var traceParentProgressBar = this.taskBarEditElement.querySelector('.' + cls.traceParentProgressBar);\n var traceConnectorPointRight = this.taskBarEditElement.querySelector('.' + cls.rightConnectorPointOuterDiv);\n var segmentConnectorPointRight = taskBarMainContainer.querySelector('.' + cls.rightConnectorPointOuterDiv);\n var manualParentTaskbar = this.taskBarEditElement;\n var manualTaskbar = this.taskBarEditElement.querySelector('.' + cls.manualParentTaskBar);\n var manualParentRight = this.taskBarEditElement.querySelector('.' + cls.manualParentRightResizer);\n var manualParentLeft = this.taskBarEditElement.querySelector('.' + cls.manualParentLeftResizer);\n var resizeLine = this.parent.ganttChartModule.chartBodyContainer.querySelector('.e-taskbar-resize-div');\n if (this.parent.allowTaskbarDragAndDrop && !this.updatePosition) {\n this.leftValue = this.leftValue + 30;\n this.updatePosition = true;\n }\n if (this.taskBarEditAction !== 'ConnectorPointRightDrag' &&\n this.taskBarEditAction !== 'ConnectorPointLeftDrag') {\n if (this.taskBarEditAction !== 'ParentResizing' && this.taskBarEditAction !== 'ManualParentDrag') {\n if (segmentedTaskBarContainer && !isNullOrUndefined(item.segments)\n && (this.taskBarEditAction === 'RightResizing' || this.segmentIndex !== 0)) {\n if (!isNullOrUndefined(resizeLine)) {\n if (!this.parent.allowTaskbarDragAndDrop || (this.parent.allowTaskbarDragAndDrop && this.parent.rowDragAndDropModule && this.taskBarEditAction !== 'ChildDrag' &&\n this.taskBarEditAction !== 'ParentDrag')) {\n resizeLine.style.width = (segment.width) + \"px\";\n }\n }\n this.taskBarEditElement.style.width = (segment.width) + 'px';\n if (this.parent.enableRtl) {\n this.taskBarEditElement.style.right = (segment.left) + 'px';\n }\n else {\n this.taskBarEditElement.style.left = (segment.left) + 'px';\n if (!isNullOrUndefined(resizeLine)) {\n if (!this.parent.allowTaskbarDragAndDrop || (this.parent.allowTaskbarDragAndDrop && this.parent.rowDragAndDropModule && this.taskBarEditAction !== 'ChildDrag'\n && this.taskBarEditAction !== 'ParentDrag')) {\n resizeLine.style.left = (segment.left + this.editElement.parentElement.offsetLeft) + \"px\";\n }\n }\n }\n }\n taskBarMainContainer.style.setProperty(position, (this.parent.allowTaskbarDragAndDrop ? this.leftValue : (item.left)) + 'px');\n taskBarMainContainer.style.width = (width) + 'px';\n if (segmentedTaskBarContainer && segmentConnectorPointRight) {\n segmentConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width + 2)) + 'px';\n }\n if (this.parent.allowTaskbarDragAndDrop && this.parent.rowDragAndDropModule && this.taskBarEditAction !== 'LeftResizing' &&\n this.taskBarEditAction !== 'RightResizing' && this.taskBarEditAction !== 'ProgressResizing') {\n var addTop = this.parent.taskbarHeight / 2;\n taskBarMainContainer.style.setProperty('top', (this.topValue + addTop) + 'px');\n taskBarMainContainer.style.zIndex = '4';\n }\n if (this.taskBarEditAction === 'LeftResizing' && this.segmentIndex === 0) {\n this.taskBarEditElement.style.setProperty(\"opacity\", '.75');\n var parent_1 = this.taskBarEditElement.parentElement;\n var segmentedTasks = parent_1.getElementsByClassName('e-segmented-taskbar');\n for (var i = 0; i < item.segments.length; i++) {\n var segment_4 = item.segments[i];\n var segmentElement = segmentedTasks[i];\n segmentElement.style.width = (segment_4.width) + 'px';\n if (i === 0) {\n resizeLine.style.width = (segment_4.width) + \"px\";\n resizeLine.style.setProperty(position, (segment_4.left + item.left) + 'px');\n }\n if (this.parent.enableRtl) {\n segmentElement.style.right = (segment_4.left) + 'px';\n }\n else {\n segmentElement.style.left = (segment_4.left) + 'px';\n }\n }\n }\n if (this.taskBarEditAction === 'ChildDrag' && (this.segmentIndex === 0 || (this.segmentIndex !== -1 && this.parent.allowTaskbarDragAndDrop))) {\n resizeLine.style.width = (width) + \"px\";\n resizeLine.style.setProperty(position, item.left + 'px');\n taskBarMainContainer.style.setProperty(\"opacity\", '.75');\n }\n }\n if (traceConnectorPointRight) {\n if (this.parent.enableRtl) {\n traceConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width - 2)) + 'px';\n }\n else {\n traceConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width + 2)) + 'px';\n }\n }\n if (this.taskBarEditAction === 'MilestoneDrag' || item.isMilestone) {\n taskBarMainContainer.style.setProperty(position, (this.parent.allowTaskbarDragAndDrop ? this.leftValue : (item.left - (width / 2))) + 'px');\n resizeLine.style.setProperty(position, (item.left - (width / 2)) + 'px');\n resizeLine.style.width = (width) + \"px\";\n }\n else if (this.taskBarEditAction === 'ProgressResizing') {\n if (this.segmentIndex === -1) {\n traceChildTaskBar.style.setProperty(position, (item.left + item.progressWidth - 10) + 'px');\n if (!isNullOrUndefined(traceChildProgressBar)) {\n traceChildProgressBar.style.width = item.progressWidth + 'px';\n traceChildProgressBar.style.borderBottomRightRadius = this.progressBorderRadius + 'px';\n traceChildProgressBar.style.borderTopRightRadius = this.progressBorderRadius + 'px';\n var width_1 = this.parent.enableRtl ? item.progressWidth + 8 : item.progressWidth - 8;\n childProgressResizer.style.setProperty(position, width_1 + 'px');\n }\n }\n else {\n this.updateSegmentProgress(this.taskBarEditRecord.ganttProperties);\n traceChildProgressBar.style.width = item.segments[this.segmentIndex].progressWidth + 'px';\n traceChildProgressBar.style.borderBottomRightRadius = this.progressBorderRadius + 'px';\n traceChildProgressBar.style.borderTopRightRadius = this.progressBorderRadius + 'px';\n var width_2 = this.parent.enableRtl ? item.segments[this.segmentIndex].progressWidth + 8 : item.segments[this.segmentIndex].progressWidth - 8;\n childProgressResizer.style.setProperty(position, width_2 + 'px');\n }\n }\n else if (this.taskBarEditAction === 'RightResizing' && !isNullOrUndefined(traceChildTaskBar)) {\n resizeLine.style.width = (width) + 'px';\n traceChildTaskBar.style.width = (width) + 'px';\n if (!isNullOrUndefined(traceChildProgressBar)) {\n traceChildProgressBar.style.width = (item.progressWidth) + 'px';\n taskBarRightResizer.style.setProperty(position, rightResizer + 'px');\n if (!isNullOrUndefined(childProgressResizer)) {\n childProgressResizer.style.setProperty(position, item.progressWidth - 10 + 'px');\n }\n }\n }\n else if (this.taskBarEditAction === 'ParentDrag') {\n resizeLine.style.setProperty(position, item.left + 'px');\n resizeLine.style.width = (width) + \"px\";\n resizeLine.style.width = (item.width) + 'px';\n if (!isNullOrUndefined(traceParentTaskBar)) {\n traceParentTaskBar.style.width = (width) + 'px';\n resizeLine.style.width = (item.width) + 'px';\n }\n if (!isNullOrUndefined(traceChildProgressBar)) {\n traceParentProgressBar.style.width = (item.progressWidth) + 'px';\n }\n }\n else if (this.taskBarEditAction === 'ParentResizing') {\n resizeLine.style.width = (item.width) + 'px';\n resizeLine.style.setProperty(position, item.left + 'px');\n manualParentTaskbar.style.width = manualTaskbar.style.width = (item.width) + 'px';\n manualParentRight.style.setProperty(position, item.width - manualParentLeft.offsetLeft + 'px');\n }\n else if (this.taskBarEditAction === 'ManualParentDrag') {\n resizeLine.style.width = (item.width) + 'px';\n resizeLine.style.setProperty(position, item.left + 'px');\n manualParentTaskbar.style.setProperty(position, item.left - item.autoLeft + 'px');\n if (this.parent.allowTaskbarDragAndDrop) {\n manualParentTaskbar.style.setProperty(position, this.leftValue + 'px');\n manualParentTaskbar.style.setProperty('top', (this.topValue) + 'px');\n manualParentTaskbar.style.zIndex = '4';\n }\n }\n else {\n if (!isNullOrUndefined(traceChildTaskBar) && !segmentedTaskBarContainer) {\n traceChildTaskBar.style.width = (item.width) + 'px';\n traceChildTaskBar.style.left = (item.left) + 'px';\n this.taskBarEditElement.style.width = (item.width) + 'px';\n this.taskBarEditElement.style.left = ((this.parent.allowTaskbarDragAndDrop ? this.leftValue : (item.left))) + \"px\";\n resizeLine.style.setProperty(position, item.left + 'px');\n resizeLine.style.width = (item.width) + \"px\";\n }\n if (!isNullOrUndefined(traceChildProgressBar)) {\n taskBarRightResizer.style.setProperty(position, rightResizer + 'px');\n traceChildProgressBar.style.width = (item.progressWidth) + 'px';\n if (!isNullOrUndefined(childProgressResizer)) {\n childProgressResizer.style.setProperty(position, item.progressWidth - 10 + 'px');\n }\n }\n if (segmentedTaskBarContainer) {\n taskBarRightResizer.style.setProperty(position, rightResizer + 'px');\n traceChildProgressBar.style.width = (segment.width) + 'px';\n if (!isNullOrUndefined(childProgressResizer)) {\n childProgressResizer.style.setProperty(position, segment.width - 10 + 'px');\n }\n }\n }\n }\n if (this.parent.allowTaskbarDragAndDrop && (this.taskBarEditAction === 'ChildDrag' || this.taskBarEditAction === 'ParentDrag' || this.taskBarEditAction === 'ManualParentDrag' || this.taskBarEditAction === 'MilestoneDrag')) {\n var resizeValue = this.parent.enableRtl ? parseInt(resizeLine.style.right) : parseInt(resizeLine.style.left);\n if (this.parent.enableRtl) {\n resizeLine.style.right = (resizeValue - 30) + 'px';\n }\n else {\n resizeLine.style.left = (resizeValue + 30) + 'px';\n }\n }\n };\n /**\n * To handle mouse up event in chart\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.mouseUpHandler = function (e) {\n var mouseDragged = this.isMouseDragged;\n this.previousMouseMove = null;\n this.editTooltip.showHideTaskbarEditTooltip(false, this.segmentIndex);\n if (this.taskBarEditAction && this.isMouseDragged) {\n if ((!this.dragMouseLeave && this.taskBarEditedAction) || (this.parent.allowTaskbarDragAndDrop)) {\n if (e.type === 'touchmove' || e.type === 'touchstart' || e.type === 'touchend') {\n var coordinates = this.getCoordinate(e);\n this['droppedTarget'] = document.elementFromPoint(coordinates.pageX, coordinates.pageY);\n }\n else {\n if (this.taskBarEditRecord.hasChildRecords && !this.taskBarEditRecord.ganttProperties.isAutoSchedule) {\n var taskbarPosition = this.parent.getOffsetRect(this.taskBarEditElement);\n var left = (!isNullOrUndefined(document.body.className) && document.body.className.includes(\"e-bigger\")) ? 12 : 0;\n var pointerLeft = (3 + this.parent.chartRowsModule.connectorPointWidth + left);\n var xValue = void 0;\n if (this.parent.enableRtl) {\n xValue = Math.abs(taskbarPosition.left + pointerLeft + 1);\n }\n else {\n xValue = Math.abs(Math.abs(taskbarPosition.left - pointerLeft - 1) - this.parent.ganttChartModule.scrollElement.scrollLeft);\n }\n this['droppedTarget'] = document.elementFromPoint(xValue, e.y);\n }\n else {\n this['droppedTarget'] = document.elementFromPoint(e.x, e.y);\n }\n if (this['droppedTarget'] && this['droppedTarget'].classList.contains('e-span-label')) {\n this['droppedTarget'] = document.elementFromPoint(e.x + this['droppedTarget']['offsetWidth'], e.y);\n }\n }\n this.previousIds = this.parent.ids.slice();\n this.previousFlatData = this.parent.flatData.slice();\n this.taskBarEditedAction(e);\n this.isMouseDragged = false;\n }\n else {\n this.parent.isOnEdit = false;\n this.cancelTaskbarEditActionInMouseLeave();\n if (this.parent.enableCriticalPath && this.parent.criticalPathModule) {\n var criticalModule = this.parent.criticalPathModule;\n criticalModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n }\n }\n if (this.parent.enableMultiTaskbar && !isNullOrUndefined(this.taskBarEditElement)) {\n if (!isNullOrUndefined(this.taskBarEditElement.querySelector('.e-gantt-child-taskbar'))) {\n if (this.taskBarEditElement.querySelector('.e-gantt-child-taskbar').classList.contains('e-collapsed-taskbar-drag')) {\n removeClass([this.taskBarEditElement.querySelector('.e-gantt-child-taskbar')], 'e-collapsed-taskbar-drag');\n this.taskBarEditElement.style.zIndex = this.prevZIndex;\n this.prevZIndex = '';\n }\n }\n }\n if (!this.parent.isAdaptive || mouseDragged) {\n this.initPublicProp();\n }\n this.stopScrollTimer();\n };\n /**\n * To perform taskbar edit operation.\n *\n * @param {PointerEvent} event .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.taskBarEditedAction = function (event) {\n var args = {};\n var x1 = this.mouseDownX;\n var y1 = this.mouseDownY;\n var item = this.taskBarEditRecord;\n var recordIndex = this.parent.ganttChartModule.getIndexByTaskBar(this.taskBarEditElement);\n var x2 = this.mouseMoveX;\n var e = this.getCoordinate(event);\n var resMouseY = e.pageY - this.parent.ganttChartModule.chartBodyContainer.offsetTop;\n if ((this.taskBarEditAction === 'ConnectorPointLeftDrag' ||\n this.taskBarEditAction === 'ConnectorPointRightDrag') && !this.drawPredecessor) {\n this.dependencyCancel = true;\n }\n var parentRecord = [];\n if ((this.taskBarEditAction === 'ConnectorPointLeftDrag' ||\n this.taskBarEditAction === 'ConnectorPointRightDrag') && this.drawPredecessor && (!this.connectorSecondRecord.hasChildRecords ||\n this.connectorSecondRecord.hasChildRecords && this.parent.allowParentDependency)) {\n parentRecord.push(extend([], [], [this.taskBarEditRecord], true)[0]);\n if (this.parent.undoRedoModule) {\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1]['connectedRecords'] = parentRecord;\n if (this.parent.toolbarModule) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_undo'], true);\n }\n }\n this.parent.connectorLineEditModule.updatePredecessor(this.connectorSecondRecord, this.finalPredecessor);\n }\n else {\n if ((this.taskBarEditAction === 'ConnectorPointLeftDrag' ||\n this.taskBarEditAction === 'ConnectorPointRightDrag') || (this.oldData && JSON.stringify(item.ganttProperties) == JSON.stringify(this.oldData.ganttProperties))) {\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['getUndoCollection'].length > 0) {\n this.parent['totalUndoAction']--;\n this.parent.undoRedoModule['getUndoCollection'].splice(this.parent.undoRedoModule['getUndoCollection'].length - 1, 1);\n if (this.parent.toolbarModule) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_undo'], false);\n }\n }\n }\n else {\n if (this.parent.undoRedoModule && this.parent.toolbarModule && this.parent.undoRedoModule['getUndoCollection'].length > 0) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_undo'], true);\n }\n }\n if (x1 !== x2 || (Math.abs(y1 - resMouseY) >= (this.parent.rowHeight - this.parent.taskbarHeight) / 2)) {\n if (item !== null) {\n args.editingFields = item.ganttProperties;\n args.data = item;\n args.recordIndex = recordIndex;\n args.previousData = this.previousItem;\n args.taskBarEditAction = this.taskBarEditAction;\n args.action = 'TaskbarEditing';\n args.roundOffDuration = this.roundOffDuration;\n args.target = this.targetElement;\n this.taskbarEditedArgs = args;\n this.taskbarEdited(args);\n }\n }\n }\n this.parent['isProjectDateUpdated'] = false;\n };\n /**\n * To cancel the taskbar edt action.\n *\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.cancelTaskbarEditActionInMouseLeave = function () {\n this.parent.editModule.reUpdatePreviousRecords(true);\n };\n TaskbarEdit.prototype.updateSegmentProgress = function (taskData) {\n var segments = taskData.segments;\n var fixedWidth = true;\n var totalTaskWidth = this.splitTasksDuration(segments) * this.parent.perDayWidth;\n var totalProgressWidth = this.parent.dataOperation.getProgressWidth(totalTaskWidth, taskData.progress);\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n delete segment.progressWidth;\n if (totalProgressWidth > 0 && totalProgressWidth > segment.width) {\n totalProgressWidth = totalProgressWidth - segment.width;\n segment.progressWidth = segment.width;\n segment.showProgress = false;\n }\n else if (fixedWidth) {\n segment.progressWidth = totalProgressWidth;\n segment.showProgress = true;\n totalProgressWidth = totalProgressWidth - segment.width;\n fixedWidth = false;\n }\n }\n };\n /**\n * To trigger taskbar edited event.\n *\n * @param {ITaskbarEditedEventArgs} arg .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.taskbarEdited = function (arg) {\n var args = extend({}, arg);\n var ganttRecord = args.data;\n var taskData = ganttRecord.ganttProperties;\n var draggedRecIndex = this.parent.flatData.indexOf(ganttRecord);\n if (this.parent.allowTaskbarDragAndDrop && this.dragMoveY > 0 && ((this.parent.viewType === 'ResourceView' && !ganttRecord.hasChildRecords) || this.parent.viewType === 'ProjectView')) {\n if (this.parent.rowDragAndDropModule) {\n var flatRecordCol = this.parent.currentViewData;\n if (this.taskBarEditRecord.parentItem && flatRecordCol[this.taskBarEditRecord.parentItem.index] && ((this.parent.editedRecords.indexOf(flatRecordCol[this.taskBarEditRecord.parentItem.index]) === -1))) {\n this.parent.editedRecords.push(flatRecordCol[this.taskBarEditRecord.parentItem.index]);\n }\n this.removeChildBorder();\n this.removeErrorElem();\n this.removetopOrBottomBorder();\n var droppedRecord = void 0;\n this.updatePosition = false;\n this.draggedRecordMarginTop = this.taskBarEditElement.style.marginTop;\n var row = closest(this.droppedTarget, 'tr.' + cls.chartRow);\n if (row) {\n var recordIndex = parseInt(row.getAttribute('data-rowindex'));\n droppedRecord = this.parent.flatData[recordIndex];\n var droppedParentRecordIndex = this.parent.getRootParent(droppedRecord, 0).index;\n var draggedParentRecordIndex = this.parent.getRootParent(this.taskBarEditRecord, 0).index;\n var e = {\n cancel: false,\n data: this.taskBarEditRecord,\n fromIndex: this.taskBarEditRecord.index,\n dropIndex: droppedRecord.index,\n dropPosition: this.parent.rowDragAndDropModule['dropPosition'],\n dropRecord: droppedRecord,\n };\n this.parent.trigger('rowDrop', e);\n if (!e['cancel'] && droppedRecord && recordIndex !== draggedRecIndex && ((droppedParentRecordIndex !== draggedParentRecordIndex || (this.taskBarEditRecord.hasChildRecords && droppedRecord.hasChildRecords)) || !this.taskBarEditRecord.hasChildRecords)) {\n var droppedRecordIndex = this.parent.flatData.indexOf(droppedRecord);\n var position = void 0;\n if (this.parent.viewType === 'ProjectView' && !isNullOrUndefined(this.parent.rowDragAndDropModule['dropPosition'])) {\n position = this.parent.rowDragAndDropModule['dropPosition'];\n }\n else {\n position = (droppedRecord.hasChildRecords || (!droppedRecord.parentItem &&\n droppedRecord.childRecords.length == 0)) ? 'child' : this.parent.rowDragAndDropModule['dropPosition'];\n }\n if (this.parent.rowDragAndDropModule) {\n if (this.parent.viewType === 'ResourceView' && (position === 'child' && !droppedRecord.hasChildRecords) && !isNullOrUndefined(droppedRecord.parentItem)) {\n position = 'Invalid';\n this.parent.rowDragAndDropModule['dropPosition'] = 'Invalid';\n }\n if (position) {\n this.parent.rowDragAndDropModule.reorderRows([draggedRecIndex], droppedRecordIndex, position);\n }\n }\n this.dragMoveY = 0;\n }\n }\n this.isClonedElement = false;\n }\n if (this.parent.showOverAllocation) {\n this.parent.ganttChartModule.renderOverAllocationContainer();\n }\n }\n if (args.taskBarEditAction === 'ProgressResizing') {\n if (args.previousData.progress !== taskData.progress) {\n this.parent.setRecordValue('progress', this.getProgressPercent(taskData.width, taskData.progressWidth), taskData, true);\n if (ganttRecord.parentItem) {\n this.parent.editModule.updateParentProgress(ganttRecord.parentItem);\n }\n if (!isNullOrUndefined(taskData.segments)) {\n this.updateSegmentProgress(taskData);\n }\n }\n }\n else {\n var segments = args.data.ganttProperties.segments;\n if (!isNullOrUndefined(segments) && segments.length > 0\n && ((this.taskBarEditAction === 'LeftResizing' && this.segmentIndex !== 0)\n || (this.taskBarEditAction === 'ChildDrag' && this.segmentIndex !== 0)\n || (this.taskBarEditAction === 'RightResizing'))) {\n var segment = segments[this.segmentIndex];\n var ganttProp = this.taskBarEditRecord.ganttProperties;\n var previousSegment = this.segmentIndex === 0 ? null\n : segments[this.segmentIndex - 1];\n var nextSegment = this.segmentIndex === segments.length - 1 ? null\n : segments[this.segmentIndex + 1];\n var sDate = !isNullOrUndefined(nextSegment) ?\n new Date(nextSegment.startDate.getTime()) : this.parent.cloneProjectEndDate;\n var eDate = !isNullOrUndefined(previousSegment) ?\n new Date(previousSegment.endDate.getTime()) : this.parent.cloneProjectStartDate;\n var cStartDate = new Date(segment.startDate.getTime());\n var cEndDate = new Date(segment.endDate.getTime());\n if (this.parent.timelineModule.topTier === 'Day' && this.parent.timelineModule.bottomTier === 'Hour') {\n cStartDate.setHours(cStartDate.getHours() - 1);\n cEndDate.setHours(cEndDate.getHours() + 1);\n }\n else {\n cStartDate.setDate(cStartDate.getDate());\n cEndDate.setDate(cEndDate.getDate());\n }\n if (this.parent.includeWeekend) {\n sDate.setHours(0, 0, 0, 0);\n eDate.setHours(0, 0, 0, 0);\n cStartDate.setDate(cStartDate.getDate() - 1);\n cEndDate.setDate(cEndDate.getDate() + 1);\n cStartDate.setHours(0, 0, 0, 0);\n cEndDate.setHours(0, 0, 0, 0);\n if (cStartDate.getTime() <= eDate.getTime() && !isNullOrUndefined(previousSegment) && !isNullOrUndefined(segment)) {\n var segmentIndexes_1 = [\n { 'firstSegmentIndex': previousSegment.segmentIndex, 'secondSegmentIndex': segment.segmentIndex }\n ];\n this.parent.chartRowsModule.mergeTask(ganttProp.taskId, segmentIndexes_1);\n }\n else if (cEndDate.getTime() >= sDate.getTime() && this.segmentIndex !== segments.length - 1) {\n var segmentIndexes_2 = [\n { 'firstSegmentIndex': segment.segmentIndex, 'secondSegmentIndex': nextSegment.segmentIndex }\n ];\n this.parent.chartRowsModule.mergeTask(ganttProp.taskId, segmentIndexes_2);\n }\n else if (cEndDate.getTime() >= sDate.getTime()) {\n segment.endDate.setDate(this.parent.cloneProjectEndDate.getDate() - 1);\n segment.startDate = this.parent.dataOperation.getStartDate(segment.endDate, segment.duration, ganttProp.durationUnit, ganttProp);\n // eslint-disable-next-line\n for (var i = segments.length - 2; i >= 0; i++) {\n var segment_5 = segments[i];\n var eDate_1 = segment_5.endDate;\n eDate_1.setDate(eDate_1.getDate() - segment_5.offsetDuration);\n segment_5.endDate = eDate_1;\n segment_5.startDate = this.parent.dataOperation.getStartDate(segment_5.endDate, segment_5.duration, ganttProp.durationUnit, ganttProp);\n }\n }\n }\n else {\n //Hits while dragging taskbar toward right & taskbar rightside resizing:\n if (cEndDate.getTime() <= sDate.getTime() && this.segmentIndex !== segments.length - 1 && !this.parent.includeWeekend && this.parent.dataOperation.getDuration((this.parent.dataOperation.checkStartDate(cEndDate, taskData, false)), sDate, taskData.durationUnit, false, false) === 0) {\n var segmentIndexes = [\n { 'firstSegmentIndex': segment.segmentIndex, 'secondSegmentIndex': nextSegment.segmentIndex }\n ];\n this.parent.chartRowsModule.mergeTask(ganttProp.taskId, segmentIndexes);\n }\n //Hits while dragging taskbar toward left & taskbar leftside resizing:\n else if (cStartDate.getTime() >= eDate.getTime() && !isNullOrUndefined(previousSegment) && !isNullOrUndefined(segment) && !this.parent.includeWeekend && this.parent.dataOperation.getDuration((this.parent.dataOperation.checkEndDate(cStartDate, taskData, false)), eDate, taskData.durationUnit, false, false) === 0) {\n var segmentIndexes = [\n { 'firstSegmentIndex': previousSegment.segmentIndex, 'secondSegmentIndex': segment.segmentIndex }\n ];\n this.parent.chartRowsModule.mergeTask(ganttProp.taskId, segmentIndexes);\n }\n }\n }\n this.parent.dataOperation.updateWidthLeft(args.data);\n }\n this.parent.dataOperation.updateTaskData(ganttRecord);\n this.parent.editModule.initiateUpdateAction(args);\n };\n /**\n * To get progress in percentage.\n *\n * @param {number} parentwidth .\n * @param {number} progresswidth .\n * @returns {number} .\n * @private\n */\n TaskbarEdit.prototype.getProgressPercent = function (parentwidth, progresswidth) {\n return Math.ceil(((progresswidth / parentwidth) * 100));\n };\n /**\n * false line implementation.\n *\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.drawFalseLine = function () {\n var x1 = this.mouseDownX;\n var y1 = this.mouseDownY;\n var x2 = this.mouseMoveX;\n var y2 = this.mouseMoveY;\n var length = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n var angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;\n var transform = 'rotate(' + (this.parent.enableRtl ? -angle : angle) + 'deg)';\n var left;\n var width = 0;\n if (!isNullOrUndefined(document.querySelectorAll(\".e-chart-row\")[0])) {\n width = document.querySelectorAll(\".e-chart-row\")[0].offsetWidth;\n }\n if (this.taskBarEditAction === 'ConnectorPointLeftDrag') {\n if (this.parent.enableRtl) {\n left = ((width - (this.elementOffsetLeft + (this.parent.chartRowsModule.connectorPointWidth / 2)))) -\n Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);\n }\n else {\n left = (this.elementOffsetLeft - (this.parent.chartRowsModule.connectorPointWidth / 2)) -\n this.parent.ganttChartModule.scrollObject.previousScroll.left;\n }\n }\n if (this.taskBarEditAction === 'ConnectorPointRightDrag') {\n if (this.parent.enableRtl) {\n left = (width - (this.elementOffsetLeft + this.elementOffsetWidth +\n (this.parent.chartRowsModule.connectorPointWidth / 2))) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);\n }\n else {\n left = (this.elementOffsetLeft + this.elementOffsetWidth) +\n (this.parent.chartRowsModule.connectorPointWidth / 2) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);\n }\n }\n var top = ((this.elementOffsetTop) + (this.elementOffsetHeight / 2) +\n this.parent.ganttChartModule.chartBodyContainer.offsetTop) - this.parent.ganttChartModule.scrollObject.previousScroll.top;\n this.removeFalseLine(false);\n this.falseLine = createElement('div', {\n className: cls.falseLine, id: 'ganttfalseline' + this.parent.element.id,\n styles: 'position: absolute;transform:' + transform + ';' +\n 'border-top-width: 1px;border-top-style: dashed;z-index: 5;width:' + (length - 3) + 'px;' +\n 'top:' + top + 'px;'\n });\n if (this.parent.enableRtl) {\n this.falseLine.style.left = 'auto';\n this.falseLine.style.right = left + 'px';\n this.falseLine.style.transformOrigin = '100% 0%';\n }\n else {\n this.falseLine.style.right = 'auto';\n this.falseLine.style.left = left + 'px';\n this.falseLine.style.transformOrigin = '0% 100%';\n }\n this.parent.ganttChartModule.chartBodyContainer.appendChild(this.falseLine);\n };\n /**\n *\n * @param {boolean} isRemoveConnectorPointDisplay .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.removeFalseLine = function (isRemoveConnectorPointDisplay) {\n if (this.falseLine) {\n remove(this.falseLine);\n this.falseLine = null;\n if (isRemoveConnectorPointDisplay) {\n this.elementOffsetLeft = 0;\n this.elementOffsetTop = 0;\n this.elementOffsetWidth = 0;\n this.elementOffsetHeight = 0;\n removeClass(this.parent.ganttChartModule.scrollElement.querySelectorAll('.' + cls.connectorLineContainer), [cls.connectorLineZIndex]);\n }\n }\n };\n /**\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.updateConnectorLineSecondProperties = function (e) {\n var target = this.getElementByPosition(e);\n var element = parentsUntil(target, cls.taskBarMainContainer);\n var isBigger = document.body.className.includes(\"e-bigger\");\n this.connectorSecondAction = null;\n var scrollTop = 0;\n if (parentsUntil(target, cls.connectorPointLeft)) {\n this.connectorSecondAction = 'ConnectorPointLeftDrag';\n this.toPredecessorText = 'Start';\n }\n else if (parentsUntil(target, cls.connectorPointRight)) {\n this.connectorSecondAction = 'ConnectorPointRightDrag';\n this.toPredecessorText = 'Finish';\n }\n else {\n this.connectorSecondAction = null;\n this.toPredecessorText = null;\n }\n if (this.taskBarEditElement !== element && this.taskBarEditElement !== this.highlightedSecondElement) {\n if (this.parent.virtualScrollModule && this.parent.enableVirtualization) {\n var top_1 = this.parent.virtualScrollModule.getTopPosition();\n scrollTop = top_1;\n }\n if ((this.parent.virtualScrollModule && this.parent.enableVirtualization &&\n !this.elementOffsetLeft) || !this.parent.enableVirtualization) {\n if (!this.parent.allowParentDependency) {\n this.elementOffsetLeft = this.realTaskbarElement.offsetLeft - ((isBigger) ? 10 : 0);\n this.elementOffsetTop = this.realTaskbarElement.parentElement.offsetTop + this.realTaskbarElement.offsetHeight / 3 + scrollTop;\n }\n else {\n if (this.taskBarEditElement.children[0].classList.contains('e-manualparent-main-container')) {\n this.elementOffsetLeft = this.realTaskbarElement.children[0]['offsetLeft'] + this.realTaskbarElement.offsetLeft - ((isBigger) ? 10 : 0);\n this.elementOffsetTop = ((this.realTaskbarElement.parentElement.offsetTop + this.realTaskbarElement.offsetHeight / 3 - 5) + this.taskBarEditElement.children[0]['offsetTop']) + scrollTop;\n }\n else {\n this.elementOffsetLeft = this.realTaskbarElement.offsetLeft - ((isBigger) ? 10 : 0);\n this.elementOffsetTop = this.realTaskbarElement.parentElement.offsetTop + this.realTaskbarElement.offsetHeight / 3 + scrollTop;\n }\n }\n this.elementOffsetWidth = this.realTaskbarElement.offsetWidth + ((isBigger) ? 20 : 0);\n this.elementOffsetHeight = this.realTaskbarElement.offsetHeight;\n }\n this.showHideTaskBarEditingElements(element, this.highlightedSecondElement, true);\n }\n if (isNullOrUndefined(this.connectorSecondAction) && !isNullOrUndefined(this.connectorSecondElement) &&\n (!this.connectorSecondRecord.hasChildRecords || this.connectorSecondRecord.hasChildRecords &&\n this.parent.allowParentDependency)) {\n this.editTooltip.showHideTaskbarEditTooltip(false, this.segmentIndex);\n removeClass([this.connectorSecondElement.querySelector('.' + cls.connectorPointLeft)], [cls.connectorPointAllowBlock]);\n removeClass([this.connectorSecondElement.querySelector('.' + cls.connectorPointRight)], [cls.connectorPointAllowBlock]);\n }\n this.connectorSecondElement = this.connectorSecondAction ? element : null;\n this.highlightedSecondElement = element;\n this.connectorSecondRecord = isNullOrUndefined(this.connectorSecondElement) ?\n null : this.parent.ganttChartModule.getRecordByTaskBar(this.connectorSecondElement);\n };\n // eslint-disable-next-line\n TaskbarEdit.prototype.triggerDependencyEvent = function (e, mouseUp) {\n var parentWithZoomStyle = this.parent.element.closest('[style*=\"zoom\"]');\n var zoomedPageY;\n if (parentWithZoomStyle) {\n var zoom1 = parseFloat(getComputedStyle(parentWithZoomStyle).zoom);\n zoomedPageY = e.pageY / zoom1;\n }\n var fromItem = this.taskBarEditRecord.ganttProperties;\n var toItem = this.connectorSecondRecord ? this.connectorSecondRecord.ganttProperties : null;\n var predecessor;\n var currentTarget;\n var target = this.getElementByPosition(e);\n var element = target;\n var uniqueId = this.parent.viewType === 'ResourceView' ? fromItem.taskId : fromItem.rowUniqueID;\n if (this.taskBarEditAction === 'ConnectorPointLeftDrag') {\n predecessor = uniqueId + (this.parent.enableRtl ? 'F' : 'S');\n }\n else if (this.taskBarEditAction === 'ConnectorPointRightDrag') {\n predecessor = uniqueId + (this.parent.enableRtl ? 'S' : 'F');\n }\n if (this.connectorSecondAction) {\n if (this.connectorSecondAction === 'ConnectorPointLeftDrag') {\n predecessor += this.parent.enableRtl ? 'F' : 'S';\n currentTarget = this.parent.enableRtl ? 'finish' : 'start';\n }\n else if (this.connectorSecondAction === 'ConnectorPointRightDrag') {\n predecessor += this.parent.enableRtl ? 'S' : 'F';\n currentTarget = this.parent.enableRtl ? 'start' : 'finish';\n }\n }\n if (isNullOrUndefined(toItem)) {\n this.drawPredecessor = false;\n return;\n }\n if (toItem.predecessorsName) {\n this.finalPredecessor = toItem.predecessorsName + ',' + predecessor;\n }\n else {\n this.finalPredecessor = predecessor;\n }\n var isValidLink = this.parent.connectorLineEditModule.validatePredecessorRelation(this.connectorSecondRecord, this.finalPredecessor);\n // eslint-disable-next-line\n var predecessorArray = this.parent.predecessorModule.calculatePredecessor(predecessor, this.connectorSecondRecord);\n var args = {};\n args.fromItem = fromItem;\n args.toItem = toItem;\n args.newPredecessorString = this.finalPredecessor;\n args.predecessor = predecessorArray && predecessorArray[0];\n args.isValidLink = isValidLink;\n args.requestType = 'ValidateDependency';\n this.parent.trigger('actionBegin', args);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\" && args.requestType != \"ValidateDependency\") {\n this.parent.showMaskRow();\n }\n else if (args.requestType != \"ValidateDependency\") {\n this.parent.showSpinner();\n }\n args.isValidLink = !isValidLink && args.isValidLink ? false : args.isValidLink;\n if (args.isValidLink) {\n if (!this.editTooltip.toolTipObj && !this.parent.isAdaptive) {\n this.editTooltip.showHideTaskbarEditTooltip(true, this.segmentIndex);\n }\n if (this.editTooltip.toolTipObj) {\n this.parent.connectorLineModule.tooltipTable.innerHTML = this.parent.connectorLineModule.getConnectorLineTooltipInnerTd(this.parent.editModule.taskbarEditModule.taskBarEditRecord.ganttProperties.taskName, this.parent.editModule.taskbarEditModule.fromPredecessorText, '', '');\n var table = this.parent.connectorLineModule.tooltipTable.querySelector('#toPredecessor').querySelectorAll('td');\n table[1].innerText = toItem.taskName;\n table[2].innerText = this.parent.localeObj.getConstant(currentTarget);\n var tooltipElement = this.parent.connectorLineModule.tooltipTable.parentElement.parentElement;\n if (tooltipElement.offsetTop + tooltipElement.offsetHeight > zoomedPageY) {\n tooltipElement.style.top = (e.pageY - tooltipElement.offsetHeight - 20) + 'px';\n }\n }\n this.drawPredecessor = true;\n }\n else {\n if (this.parent.isAdaptive) {\n if (target.classList.contains(cls.connectorPointLeft) ||\n target.classList.contains(cls.connectorPointRight)) {\n this.showHideActivePredecessors(true);\n }\n }\n else {\n addClass([element], [cls.connectorPointAllowBlock]);\n }\n this.drawPredecessor = false;\n }\n };\n // Get XY coordinates for touch and non-touch device\n TaskbarEdit.prototype.getCoordinate = function (event) {\n var coordinates = {};\n var e = event;\n coordinates.pageX = e.pageX;\n coordinates.pageY = e.pageY;\n if (event && event.type !== 'click') {\n var e_1 = event;\n if (e_1.type === 'touchmove' || e_1.type === 'touchstart' || e_1.type === 'touchend') {\n coordinates.pageX = e_1.changedTouches[0].pageX;\n coordinates.pageY = e_1.changedTouches[0].pageY;\n }\n }\n return coordinates;\n };\n // Get current target element by mouse position\n // window.pageXOffset && window.pageYOffset is used to find the accurate element position in IPad/IPhone\n TaskbarEdit.prototype.getElementByPosition = function (event) {\n if (!this.parent.isAdaptive) {\n return event.target;\n }\n else {\n var e = this.getCoordinate(event);\n return document.elementFromPoint((e.pageX - window.pageXOffset), (e.pageY - window.pageYOffset));\n }\n };\n TaskbarEdit.prototype.multipleSelectionEnabled = function () {\n if (this.parent.selectionModule &&\n this.parent.selectionSettings.mode !== 'Cell'\n && this.parent.selectionSettings.type === 'Multiple') {\n this.parent.selectionModule.hidePopUp();\n }\n };\n TaskbarEdit.prototype.unWireEvents = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('chartMouseDown', this.mouseDownHandler);\n this.parent.off('chartMouseUp', this.mouseUpHandler);\n this.parent.off('chartMouseLeave', this.mouseLeaveHandler);\n this.parent.off('chartMouseMove', this.mouseMoveAction);\n this.parent.off('chartMouseClick', this.mouseClickHandler);\n };\n /**\n * @returns {void} .\n * @private\n */\n TaskbarEdit.prototype.destroy = function () {\n this.unWireEvents();\n this.stopScrollTimer();\n this.parent.editModule.taskbarEditModule = undefined;\n };\n return TaskbarEdit;\n}(DateProcessor));\nexport { TaskbarEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
    \n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
    \n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
    \n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n var isClickBinded = itemObj && !isNOU(itemObj.click) && typeof itemObj.click == 'object' ? !isNOU(itemObj.click.observers) && itemObj.click.observers.length > 0 : !isNOU(itemObj) && !isNOU(itemObj.click);\n if (isClickBinded) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n popObj.width = this.getToolbarPopupWidth(this.element);\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n Toolbar.prototype.getToolbarPopupWidth = function (ele) {\n var eleStyles = window.getComputedStyle(ele);\n return parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = this.getToolbarPopupWidth(this.element);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n if (this.overflowMode !== 'Extended') {\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n }\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else if (this.overflowMode !== 'Extended') {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n else {\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n if (this.overflowMode !== 'Extended') {\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n }\n else if (this.isVertical && this.overflowMode !== 'Extended') {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ?\n SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n var previousEle = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n if (previousEle) {\n previousEle.removeAttribute('tabindex');\n }\n previousEle = this.activeEle;\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n if (!isNOU(this.element.querySelector('.e-hor-nav')) && this.element.querySelector('.e-hor-nav').classList.contains('e-nav-active')) {\n this.updateTabIndex('0');\n this.getDataTabindex(previousEle) === '-1' ? previousEle.setAttribute('tabindex', '0') :\n previousEle.setAttribute('tabindex', this.getDataTabindex(previousEle));\n }\n else {\n this.updateTabIndex('-1');\n }\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle)) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n this.popObj.width = this.getToolbarPopupWidth(this.element);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, closest, Collection, Complex, attributes, detach, isNullOrUndefined, animationMode } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { getRandomId, SanitizeHtmlHelper, Draggable } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\nvar CLS_REORDER_ACTIVE_ITEM = 'e-reorder-active-item';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n __decorate([\n Property(-1)\n ], TabItem.prototype, \"tabIndex\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
    \n * \n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.isInteracted = false;\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActiveTabBorder.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n this.tbObj = null;\n }\n this.unWireEvents();\n this.element.removeAttribute('aria-disabled');\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n if (this.btnCls) {\n this.btnCls = null;\n }\n this.hdrEle = null;\n this.cntEle = null;\n this.tbItems = null;\n this.tbItem = null;\n this.tbPop = null;\n this.prevItem = null;\n this.popEle = null;\n this.bdrLine = null;\n this.content = null;\n this.dragItem = null;\n this.cloneElement = null;\n this.draggingItems = [];\n if (this.draggableItems && this.draggableItems.length > 0) {\n for (var i = 0; i < this.draggableItems.length; i++) {\n this.draggableItems[i].destroy();\n this.draggableItems[i] = null;\n }\n this.draggableItems = [];\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.refresh.call(this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwiped = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (this.allowDragAndDrop) {\n this.dragArea = !isNOU(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER);\n }\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { 'aria-disabled': 'false' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n var _this = this;\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n if (!isNOU(_this.tbObj)) {\n _this.tbObj.refreshOverflow();\n }\n _this.refreshActiveBorder();\n });\n }\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNOU(item.id) && !isNOU(item.setProperties)) {\n item.setProperties({ id: TABITEMPREFIX + index.toString() }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i));\n }\n if (count > 0) {\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', {\n className: CLS_WRAP, innerHTML: cont,\n attrs: { role: 'tab', tabIndex: '-1', 'aria-selected': 'false', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-disabled': 'false' }\n });\n wrap.querySelector('.' + CLS_TEXT).appendChild(item);\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n cssClass: this.cssClass\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { role: 'tablist' });\n if (!isNOU(this.element.getAttribute('aria-label'))) {\n this.hdrEle.setAttribute('aria-label', this.element.getAttribute('aria-label'));\n this.element.removeAttribute('aria-label');\n }\n else if (!isNOU(this.element.getAttribute('aria-labelledby'))) {\n this.hdrEle.setAttribute('aria-labelledby', this.element.getAttribute('aria-labelledby'));\n this.element.removeAttribute('aria-labelledby');\n }\n this.setCloseButton(this.showCloseButton);\n var toolbarHeader = this.tbObj.element.querySelector('.' + CLS_TB_ITEMS);\n if (!isNOU(toolbarHeader)) {\n if (isNOU(toolbarHeader.id) || toolbarHeader.id === '') {\n toolbarHeader.id = this.element.id + '_' + 'tab_header_items';\n }\n }\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n addClass([contents.item(i)], CLS_ITEM);\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbItems = Array.prototype.slice.call(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var maxId = this.lastIndex;\n if (!this.isReplace && tbItems.length > 0) {\n var idList_1 = [];\n tbItems.forEach(function (item) {\n idList_1.push(_this.getIndexFromEle(item.id));\n });\n maxId = Math.max.apply(Math, idList_1);\n }\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n var itemIndex;\n if (_this.isReplace && !isNOU(_this.tbId) && _this.tbId !== '') {\n itemIndex = parseInt(_this.tbId.substring(_this.tbId.lastIndexOf('_') + 1), 10);\n _this.tbId = '';\n }\n else {\n itemIndex = index + i;\n }\n _this.lastIndex = ((tbItems.length === 0) ? i : ((_this.isReplace) ? (itemIndex) : (maxId + 1 + i)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'false', 'aria-disabled': 'false' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray instanceof Array) {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, 'data-id': item.id\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden + ' '\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n }\n else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n [].slice.call(tabItems).forEach(function (node) { return node.firstElementChild.setAttribute('aria-selected', 'false'); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n }\n else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.tbObj.refreshOverflow();\n this.refreshActiveTabBorder();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n var isPrevent = isNOU(this.animation) || isNOU(this.animation.next.effect) || isNOU(this.animation.previous.effect)\n || this.animation.previous.effect === 'None' || this.animation.next.effect === 'None';\n if (this.initRender || value === false || isPrevent) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: (this.animation.previous.duration === 0 && animationMode === 'Enable') ? 600 : this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: (this.animation.next.duration === 0 && animationMode === 'Enable') ? 600 : this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.selectTab(trgIndex, null, true);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n if (this.isVue) {\n templateFn = compile(this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val);\n }\n else {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val;\n }\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n cnt = isNOU(cnt) ? '' : cnt;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNOU(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.clientHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n this.cntEle.style.height = 'calc(100% - ' + this.hdrEle.offsetHeight + 'px)';\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate(['content']);\n }\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE);\n }\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (isNOU(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n if (trgHdrEle && !trgHdrEle.classList.contains(CLS_REORDER_ACTIVE_ITEM)) {\n trgHdrEle.classList.add(CLS_REORDER_ACTIVE_ITEM);\n }\n }\n else if (trgHdrEle) {\n trgHdrEle.classList.remove(CLS_REORDER_ACTIVE_ITEM);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n if (this.overflowMode === 'MultiRow') {\n var top_1 = this.headerPlacement === 'Bottom' ? trg.offsetTop : trg.offsetHeight + trg.offsetTop;\n setStyle(bar, { 'top': top_1 + 'px', 'height': '' });\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind, isInteracted) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (value < 0 || isNaN(value) || this.tbItem.length === 0 || !isNOU(trg) && trg.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n attributes(trg.firstElementChild, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n trg.firstElementChild.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwiped,\n isInteracted: isInteracted,\n preventFocus: false\n };\n this.trigger('selected', eventArg, function (selectEventArgs) {\n if (!selectEventArgs.preventFocus) {\n trg.firstElementChild.focus();\n }\n });\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop && tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left' || this.element.classList.contains(CLS_RTL)) ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var tabHeader = this.element.querySelector('.' + CLS_HEADER);\n if (tabHeader) {\n var items = Array.prototype.slice.call(tabHeader.querySelectorAll('.' + CLS_TB_ITEM));\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle) && !isNOU(this.touchModule)) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (!isNOU(trgParent) && (trgIndex !== this.selectedItem)) {\n this.selectTab(trgIndex, args.originalEvent, true);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n if (this.isNested) {\n this.element.setAttribute('data-swipe', 'true');\n }\n var nestedTab = this.element.querySelector('[data-swipe=\"true\"]');\n if (nestedTab) {\n nestedTab.removeAttribute('data-swipe');\n return;\n }\n this.isSwiped = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.selectTab(k, null, true);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.selectTab(i, null, true);\n break;\n }\n }\n }\n this.isSwiped = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', trg.getAttribute('data-tabindex'));\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n if (!isNOU(actEle) && actEle.children.item(0).getAttribute('tabindex') === '-1') {\n actEle.children.item(0).setAttribute('tabindex', '0');\n }\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.getIndexFromEle = function (id) {\n return parseInt(id.substring(id.lastIndexOf('_') + 1), 10);\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n var _this = this;\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var properties = Object.keys(newProp.items[index]);\n for (var j = 0; j < properties.length; j++) {\n var oldVal = Object(oldProp.items[index])[properties[j]];\n var newVal = Object(newProp.items[index])[properties[j]];\n var hdr = this.element.querySelectorAll('.' + CLS_TB_ITEM)[index];\n var itemIndex = void 0;\n if (hdr && !isNOU(hdr.id) && hdr.id !== '') {\n itemIndex = this.getIndexFromEle(hdr.id);\n }\n else {\n itemIndex = index;\n }\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if (properties[j] === 'headerTemplate') {\n this.clearTabTemplate(hdrItem, properties[j], CLS_TB_ITEM);\n }\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n this.tbId = hdr.id;\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (properties[j] === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (this.isAngular || this.isReact) {\n this.clearTabTemplate(cntItem, properties[j], CLS_ITEM);\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (properties[j] === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (properties[j] === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (properties[j] === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshActiveTabBorder();\n });\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n this.draggableItems = [];\n this.bindDraggable();\n }\n }\n };\n Tab.prototype.clearTabTemplate = function (templateEle, templateName, className) {\n if (!this.clearTemplates) {\n return;\n }\n if (this.registeredTemplate && this.registeredTemplate[templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[templateName].length; index++) {\n var registeredItem = registeredTemplates[templateName][index].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], [registeredTemplates[templateName][index]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[index];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNOU(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER) {\n _this.trigger('dragging', dragArgs);\n }\n else {\n if (!(e.target.closest(_this.dragArea)) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN);\n if (_this.dragItem.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.dragItem], CLS_HIDDEN);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n }\n else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.cloneElement], CLS_HIDDEN);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNOU(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNOU(scrollLeftNavEle) && Math.abs((scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth) -\n _this.cloneElement.offsetLeft) > (scrollLeftNavEle.offsetWidth / 2)) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n dropItem = closest(e.target, '.' + CLS_TB_ITEM + '.e-draggable');\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) &&\n dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex &&\n (Math.abs((dropItem.offsetLeft + dropItem.offsetWidth) -\n _this.cloneElement.offsetLeft) > (dropItem.offsetWidth / 2))) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex &&\n (Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft -\n scrollContentWidth) < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = (e.element.cloneNode(true));\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNOU(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) { return x; });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabItemDragArgs) {\n if (tabItemDragArgs.cancel) {\n var dragObj = e.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\n detach(_this.cloneElement);\n }\n else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement.lastChild), this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n var lastEle = (dropItem.parentElement).lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.cloneElement = null;\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n }\n else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = _this.droppedIndex;\n _this.refresh();\n }\n else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.selectTab(_this.droppedIndex, null, true);\n }\n }\n });\n this.dragItem = null;\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', tbItems.firstElementChild.getAttribute('data-tabindex'));\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.firstElementChild.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n this.bindDraggable();\n }\n else {\n var itemsCount = selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems_2 = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) || isNOU(textValue_1) ||\n (textValue_1.length === 0) && !isNOU(item.header) && isNOU(item.header.iconCss))) {\n if (tabItems_2[place]) {\n if (isNOU(item.id)) {\n item.id = CLS_ITEM + _this.tabId + '_' + TABITEMPREFIX + (lastEleIndex + place).toString();\n }\n tabItems_2[place].htmlAttributes['data-id'] = item.id;\n }\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems_2, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n var header = select('#' + CLS_ITEM + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_TB_ITEMS, _this.element));\n if (!isNOU(header)) {\n _this.clearTabTemplate(header, 'headerTemplate', CLS_TB_ITEM);\n }\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && (index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id))) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n var targetEleIndex = _this.itemIndexArray.indexOf(trg.id);\n _this.items.splice(targetEleIndex, 1);\n _this.itemIndexArray.splice(targetEleIndex, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n _this.clearTabTemplate(cntTrg, 'content', CLS_ITEM);\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (_this.draggableItems && _this.draggableItems.length > 0) {\n _this.draggableItems[index].destroy();\n _this.draggableItems[index] = null;\n _this.draggableItems.splice(index, 1);\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n else if (index !== _this.selectedItem) {\n if (index < _this.selectedItem) {\n index = _this.itemIndexArray.indexOf(_this.tbItem[_this.selectedItem].id);\n _this.setProperties({ selectedItem: index > -1 ? index : _this.selectedItem }, true);\n _this.prevIndex = _this.selectedItem;\n }\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n if (!isNullOrUndefined(item.firstElementChild)) {\n item.firstElementChild.setAttribute('aria-hidden', '' + value);\n }\n if (this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n Tab.prototype.selectTab = function (args, event, isInteracted) {\n if (event === void 0) { event = null; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.isInteracted = isInteracted;\n this.select(args, event);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', this.prevItem.firstElementChild.getAttribute('tabindex'));\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwiped,\n isInteracted: this.isInteracted,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args, _this.isInteracted);\n }\n });\n }\n else {\n this.selectingContent(args, this.isInteracted);\n }\n this.isInteracted = false;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n this.prevItem = this.tbItem[this.prevIndex];\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP) && this.reorderActiveTab) {\n this.setActive(this.popupHandler(this.tbItem[args]), null, isInteracted);\n if ((!isNOU(this.items) && this.items.length > 0) && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n var itemId = this.itemIndexArray[args];\n this.itemIndexArray.splice(args, 1);\n this.itemIndexArray.splice(this.tbItem.length - 1, 0, itemId);\n }\n }\n else {\n this.setActive(args, null, isInteracted);\n }\n }\n else {\n this.setActive(0, null, isInteracted);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args), null, isInteracted);\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n var headerEle = this.element.querySelector('.' + CLS_HEADER);\n if (oldProp.cssClass !== '' && !isNullOrUndefined(oldProp.cssClass)) {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, oldProp.cssClass, false);\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'reorderActiveTab':\n this.refreshActiveTabBorder();\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActiveTabBorder();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n /**\n * To refresh the active tab contents.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact && this.isTemplate) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAtt = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'true', 'aria-disabled': 'false' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var index = this.getIndexFromEle(element.id);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE, id: CLS_ITEM + this.tabId + '_' + index\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var tabIndex = element.firstElementChild.getAttribute('data-tabindex');\n var wrap = this.createElement('div', {\n className: CLS_WRAP, innerHTML: conte,\n attrs: { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-controls': CLS_CONTENT + this.tabId + '_' + index, 'aria-selected': 'true', 'aria-disabled': 'false' }\n });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To refresh the active tab indicator.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTabBorder = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle) && this.reorderActiveTab) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"reorderActiveTab\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"clearTemplates\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, getValue, closest } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { appendChildren, addStickyColumnPosition } from '../base/util';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport * as events from '../base/constant';\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @class */ (function (_super) {\n __extends(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell', attrs: { role: 'columnheader' } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string} returns the gui\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell'\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : ''\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true, cssClass: this.parent.cssClass\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n var clearIconElem = innerDIV.querySelector('.e-clear-icon');\n if (clearIconElem) {\n clearIconElem.setAttribute('title', this.parent.localeObj.getConstant('ClearButton'));\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar' &&\n !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate) && isNullOrUndefined(column.filterBarTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @returns {Element} retruns the element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var operators;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n if (column.filter && column.filter.operator) {\n operators = column.filter.operator;\n }\n else if (gObj.filterSettings.columns.length) {\n for (var i = 0, a = gObj.filterSettings.columns; i < a.length; i++) {\n var col = a[parseInt(i.toString(), 10)];\n if (col.field === column.field) {\n operators = col.operator;\n break;\n }\n else {\n operators = 'equal';\n }\n }\n }\n else {\n operators = 'equal';\n }\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[parseInt(i.toString(), 10)].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n cssClass: this.parent.cssClass ? 'e-popup-flbar' + ' ' + this.parent.cssClass : 'e-popup-flbar'\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(events.getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\nexport { FilterCellRenderer };\n","import { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.ddOpen = this.dropDownOpen.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(events.destroy, this.destroyDropDownList, this);\n }\n }\n /**\n * @param {Element} dlgConetntEle - specifies the content element\n * @param {Element} target - specifies the target\n * @param {Column} column - specifies the column\n * @param {Dialog} dlgObj - specifies the dialog\n * @param {Object[]} operator - specifies the operator list\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line max-len\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[\"\" + optr])) ?\n this.parent.filterSettings.operators[\"\" + optr] : this.customFilterOperators[\"\" + optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n enableRtl: this.parent.enableRtl,\n text: selectedValue,\n // eslint-disable-next-line @typescript-eslint/tslint/config\n change: function () {\n var valInput = document.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (this.value === 'isempty' || this.value === 'isnotempty' ||\n this.value === 'isnull' || this.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n });\n this.dropOptr.addEventListener(literals['open'], this.ddOpen);\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[parseInt(i.toString(), 10)].value === col.filter.operator) {\n selValue = this.optrData[parseInt(i.toString(), 10)].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @returns {string} returns the operator\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n FlMenuOptrUI.prototype.destroyDropDownList = function () {\n if (this.dropOptr.isDestroyed) {\n return;\n }\n this.dropOptr.removeEventListener(literals['open'], this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(events.filterMenuClose, this.destroyDropDownList);\n this.parent.off(events.destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\nexport { FlMenuOptrUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n value = this.allowObjectBinding && !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n if (this.allowObjectBinding) {\n value = this.getDataByValue(value);\n }\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if ((!this.allowObjectBinding && (this.previousValue !== this.value)) || (this.allowObjectBinding && this.previousValue && this.value && !this.isObjectInArray(this.previousValue, [this.value]))) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var li = this.getElementByValue(currentValue);\n var doesItemExist = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue_1 = 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_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\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_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\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 if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) || (this.allowCustom && this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\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 activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem.item) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n 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 activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n activeItem.index = activeItem.index + this.incrementalStartIndex;\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeItem.index) {\n if ((!(this.viewPortInfo.startIndex >= activeItem.index)) || (!(activeItem.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0 ? activeItem.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var index_1 = this.getIndexByValue(activeItem.item.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 activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\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 if (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n if (!this.enableVirtualization) {\n this.list.scrollTop = count * height + fixedHead;\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 if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? activeElement.offsetTop + (this.virtualListInfo.startIndex * activeElement.offsetHeight) : activeElement.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * activeElement.offsetHeight);\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if ((e && e.type === 'keydown' && e.action === 'enter') || (e && e.type === 'click')) {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(value);\n var dataItem = this.getItemData();\n var setValue = this.allowObjectBinding ? this.itemData : dataItem.value;\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': setValue }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && ((!this.allowObjectBinding && this.previousValue !== currentFillValue)) || (this.allowObjectBinding && this.previousValue && currentFillValue && !this.isObjectInArray(this.previousValue, [this.getDataByValue(currentFillValue)]))) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(activeElement.getAttribute('data-value'))) : this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (!isNullOrUndefined(this.inputElement) && this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n var newValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.autofill && ((!this.allowObjectBinding && previousValue === this.value) || (this.allowObjectBinding && previousValue && this.isObjectInArray(previousValue, [this.value]))) && ((!this.allowObjectBinding && currentValue !== this.value) || (this.allowObjectBinding && currentValue && !this.isObjectInArray(currentValue, [this.value])))) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n this.isObjectCustomValue = true;\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if ((!this.allowObjectBinding && previousValue_1 !== this.value) || (this.allowObjectBinding && previousValue_1 && this.value && !this.isObjectInArray(previousValue_1, [this.value]))) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var _this = this;\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var emptyObject = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : Object.keys(this.itemData);\n if ((!(this.listData && this.listData.length > 0)) && (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'combobox' && this.allowFiltering))) {\n keys = this.firstItem ? Object.keys(this.firstItem) : Object.keys(this.itemData);\n }\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, _this.itemData) : null;\n });\n }\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: this.allowObjectBinding ? emptyObject : getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n this.isObjectCustomValue = false;\n if ((!this.allowObjectBinding && (previousValue !== this.value)) || (this.allowObjectBinding && ((previousValue == null && this.value !== null) || (previousValue && !this.isObjectInArray(previousValue, [this.value]))))) {\n this.onChangeEvent(e, true);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp, oldProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowObjectBinding\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n var isHtmlElement = /<[^>]*>/g.test(element.innerText);\n if (isHtmlElement) {\n element.innerText = element.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var filterType = (this.queryString === '' && !isNullOrUndefined(value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(value)) ? value : this.queryString;\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization) {\n var queryTakeValue = 0;\n var querySkipValue = 0;\n var takeValue = this.getTakeValue();\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ? filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (querySkipValue > 0 && this.virtualItemStartIndex <= querySkipValue) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n if (queryTakeValue > 0 && takeValue <= queryTakeValue) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.customFilterQuery = query;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\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, e);\n if (this.enableVirtualization && isNoDataElement && !this.list.classList.contains('e-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 if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n this.checkAndResetCache();\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.enableVirtualization) {\n this.fixedHeaderElement = null;\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (this.allowObjectBinding) {\n oldValue = !isNullOrUndefined(oldValue) ? getValue((this.fields.value) ? this.fields.value : '', oldValue) : oldValue;\n value = !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n }\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? _this_2.allowObjectBinding ? e.result[0] : e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n isHighlight = null;\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","import { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { Browser, isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { getZIndexCalcualtion, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `string filterui` render string column.\n *\n * @hidden\n */\nvar StringFilterUI = /** @class */ (function () {\n function StringFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n StringFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.processDataOperation(args);\n };\n StringFilterUI.prototype.processDataOperation = function (args) {\n var _this = this;\n if (args.column.isForeignColumn()) {\n this.parent.getDataModule().dataManager.executeQuery(this.parent.getDataModule().generateQuery(true))\n .then(function (result) { _this.getAutoCompleteOptions(args, result); });\n return;\n }\n this.getAutoCompleteOptions(args);\n };\n StringFilterUI.prototype.getAutoCompleteOptions = function (args, result) {\n var isForeignColumn = args.column.isForeignColumn();\n var foreignColumnQuery;\n if (isForeignColumn) {\n var filteredData = CheckBoxFilterBase.getDistinct(result.result, args.column.field)\n .records || [];\n var filterQuery = void 0;\n for (var i = 0; i < filteredData.length; i++) {\n if (filterQuery) {\n filterQuery = filterQuery.or(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n else {\n filterQuery = new Predicate(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n }\n foreignColumnQuery = new Query().where(filterQuery);\n foreignColumnQuery.params = this.parent.query.params;\n }\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n var autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: isForeignColumn ? foreignColumnQuery : this.parent.getDataModule().generateQuery(true, true),\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue'),\n actionBegin: function () {\n if (this.query.queries.length && this.query.queries[0].fn === 'onWhere' && this.query.queries[0].e\n && this.query.queries[0].e.predicates) {\n for (var i = 0; i < this.query.queries[0].e.predicates.length; i++) {\n if (this.properties.fields.value === this.query.queries[0].e.predicates[\"\" + i].field) {\n this.query.queries[0].e.predicates.splice(i, 1);\n i = i - 1;\n }\n }\n if (!this.query.queries[0].e.predicates.length) {\n this.query.queries.splice(0, 1);\n }\n }\n }\n }, args.column.filter.params));\n this.acFocus = this.focus(autoComplete, args);\n this.acComplete = this.actionComplete(autoComplete);\n this.acOpen = this.openPopup.bind(this);\n autoComplete.addEventListener(literals.focus, this.acFocus);\n autoComplete.addEventListener(literals['open'], this.acOpen);\n autoComplete.addEventListener(events.actionComplete, this.acComplete);\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n this.actObj = autoComplete;\n this.actObj.appendTo(this.instance);\n if (isForeignColumn) {\n this.parent.filterModule.filterModule.afterRenderFilterUI();\n }\n };\n StringFilterUI.prototype.write = function (args) {\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n var struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n };\n StringFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n var filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n };\n StringFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n StringFilterUI.prototype.focus = function (actObj, args) {\n return function () {\n actObj.filterType = args.getOptrInstance.getFlOperator();\n };\n };\n StringFilterUI.prototype.actionComplete = function (actObj) {\n return function (e) {\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObj) {\n return (getValue(actObj.fields.value, mapObj));\n }).indexOf(getValue((actObj.fields.value), obj)) === index;\n });\n };\n };\n StringFilterUI.prototype.destroy = function () {\n if (!this.actObj || this.actObj.isDestroyed) {\n return;\n }\n this.actObj.removeEventListener(literals.focus, this.acFocus);\n this.actObj.removeEventListener(literals['open'], this.acOpen);\n this.actObj.removeEventListener(events.actionComplete, this.acComplete);\n this.actObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return StringFilterUI;\n}());\nexport { StringFilterUI };\n","import { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { extend, isUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `numberfilterui` render number column.\n *\n * @hidden\n */\nvar NumberFilterUI = /** @class */ (function () {\n function NumberFilterUI(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n NumberFilterUI.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumberFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n };\n NumberFilterUI.prototype.write = function (args) {\n var numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.element.addEventListener('keydown', this.keyEventHandler);\n numberuiObj.value = args.filteredValue;\n };\n NumberFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n var filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n NumberFilterUI.prototype.destroy = function () {\n if (!this.numericTxtObj || this.numericTxtObj.isDestroyed) {\n return;\n }\n this.numericTxtObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return NumberFilterUI;\n}());\nexport { NumberFilterUI };\n","import { getZIndexCalcualtion } from '../base/util';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `boolfilterui` render boolean column.\n *\n * @hidden\n */\nvar BooleanFilterUI = /** @class */ (function () {\n function BooleanFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n BooleanFilterUI.prototype.create = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.ddOpen = this.openPopup.bind(this);\n this.ddComplete = this.actionComplete(fields);\n this.dropInstance.addEventListener(literals['open'], this.ddOpen);\n this.dropInstance.addEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.appendTo(this.elem);\n };\n BooleanFilterUI.prototype.write = function (args) {\n var drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.value = args.filteredValue;\n }\n };\n BooleanFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n var filterValue = (drpuiObj.value);\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n };\n BooleanFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n BooleanFilterUI.prototype.actionComplete = function (fields) {\n return function (e) {\n e.result = DataUtil.distinct(e.result, fields, true);\n };\n };\n BooleanFilterUI.prototype.destroy = function () {\n if (!this.dropInstance || this.dropInstance.isDestroyed) {\n return;\n }\n this.dropInstance.removeEventListener(literals['open'], this.ddOpen);\n this.dropInstance.removeEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return BooleanFilterUI;\n}());\nexport { BooleanFilterUI };\n","import { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getCustomDateFormat } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.dpOpen = this.openPopup.bind(this);\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n this.datePickerObj.addEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n DateFilterUI.prototype.destroy = function () {\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\nexport { DateFilterUI };\n","import { isNullOrUndefined, getValue, remove } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { FlMenuOptrUI } from './filter-menu-operator';\nimport { StringFilterUI } from './string-filter-ui';\nimport { NumberFilterUI } from './number-filter-ui';\nimport { BooleanFilterUI } from './boolean-filter-ui';\nimport { DateFilterUI } from './date-filter-ui';\nimport { getFilterMenuPostion, parentsUntil, appendChildren, clearReactVueTemplates } from '../base/util';\nimport * as events from '../base/constant';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'dateonly': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n if (!this.dlgObj) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(events.filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n this.dlgObj.destroy();\n remove(elem);\n }\n this.parent.notify(events.filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-flmenu-okbtn' + ' ' + this.parent.cssClass : 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'),\n cssClass: this.parent.cssClass ? 'e-flmenu-cancelbtn' + ' ' + this.parent.cssClass : 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? 'e-filter-popup' + ' ' + this.parent.cssClass : 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj);\n }\n this.currentDialogCreatedColumn = column;\n this.renderFilterUI(target, column);\n if (!(column.isForeignColumn() && !(!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)))) {\n this.afterRenderFilterUI();\n }\n if (!isNullOrUndefined(column.filterTemplate)) {\n this.dlgDiv.querySelector('.e-flmenu-valuediv').firstElementChild.focus();\n this.dlgDiv.querySelector('.e-flmenu-valuediv').firstElementChild.classList.add('e-input-focus');\n }\n else if (!isNullOrUndefined(this.dlgDiv.querySelector('.e-flmenu-input'))) {\n this.dlgDiv.querySelector('.e-flmenu-input').focus();\n this.dlgDiv.querySelector('.e-flmenu-input').parentElement.classList.add('e-input-focus');\n }\n };\n /**\n * Function to notify filterDialogCreated and trigger actionComplete\n *\n * @returns {void}\n * @hidden\n */\n FilterMenuRenderer.prototype.afterRenderFilterUI = function () {\n var column = this.currentDialogCreatedColumn;\n if (column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n var optrInput = this.dlgObj.element.querySelector('.e-flm_optrdiv').querySelector('input');\n var valInput = this.dlgObj.element.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (optrInput.value === 'Empty' || optrInput.value === 'Not Empty' ||\n optrInput.value === 'Null' || optrInput.value === 'Not Null') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput && valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[\"\" + valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n var flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isNullOrUndefined(element.children[0].ej2_instances)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fltrValue = (this.parent.isAngular ? element.children[0] :\n element.querySelector('input')).ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n if (!isNullOrUndefined(eControl)) {\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n // eslint-disable-next-line\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n if (this.parent.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\nexport { FilterMenuRenderer };\n","import * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n *\n * @returns {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.destroy();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function () {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(events.actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function () {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(events.fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cBoxFltrBegin, this.actionBegin);\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.parent.off(events.fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\nexport { CheckBoxFilter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest, setValue } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n this.element = this.wrapper;\n if (this.refreshing) {\n ['e-control', 'e-radio', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element.parentElement) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element.nextElementSibling) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n if (this.element.parentNode) {\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.element.parentElement;\n if (ATTRIBUTES.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n else {\n this.element.parentElement.setAttribute('role', 'dialog');\n this.element.parentElement.setAttribute('aria-label', 'context menu');\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else if (action === 'tab' && cli.classList.contains(SEPARATOR)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli && (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE))) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + '-' + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n var aEle = fli.querySelector('.e-menu-url');\n if (item.url && aEle) {\n switch (aEle.getAttribute('target')) {\n case '_blank':\n window.open(item.url, '_blank');\n break;\n case '_parent':\n window.parent.location.href = item.url;\n break;\n default:\n window.location.href = item.url;\n }\n }\n this.closeMenu(null, e);\n var sli = this.getLIByClass(this.getUlByNavIdx(), SELECTED);\n if (sli) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (_this.navIdx.length === 0 && e && e.type === 'keyup') {\n _this.showSubMenu = false;\n }\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && (e.target.classList.contains('e-vscroll') || e.target.classList.contains('e-scroll-nav')))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n if (!(e && e.target.classList.contains('e-nav-arrow'))) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent('click', true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MenuBase.prototype.copyObject = function (source, destination) {\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n if (cul) {\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n this.isTapHold = this.isTapHold ? false : this.isTapHold;\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n if (isNullOrUndefined(cul)) {\n return;\n }\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n if (ul) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (this_1.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n var item;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n item = this.getItems(navIdx);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : item[index].text.toString();\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else if (!ishide && validUl === items[i]) {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(true)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
    \n *
      \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, remove, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { distinctStringValues, isComplexField, getComplexFieldID, getCustomDateFormat, applyBiggerTheme, performComplexDataOperation, registerEventHandlers, removeEventHandlers, clearReactVueTemplates } from '../base/util';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { parentsUntil, appendChildren, extend, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @class */ (function (_super) {\n __extends(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n *\n * @param {IXLFilter} parent - parent details\n * @param {Object} customFltrOperators - operator details\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.childRefs = [];\n _this.eventHandlers = {};\n _this.isDevice = false;\n _this.focusedMenuItem = null;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', 'NotContains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n options.dateonly = options.number;\n var model = [];\n for (var i = 0; i < options[\"\" + type].length; i++) {\n if (options[\"\" + type][parseInt(i.toString(), 10)].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[\"\" + type][parseInt(i.toString(), 10)].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.closeDialog.call(this);\n }\n if (!this.isDevice && this.menuObj) {\n var li = this.menuObj.element.querySelector('li.e-focused');\n if (!(li && parentsUntil(li, 'e-excel-menu'))) {\n this.destroyCMenu();\n }\n }\n if (this.dlgObj && !this.dlgObj.isDestroyed) {\n this.removeDialog();\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', dateonly: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n if (this.parent.cssClass) {\n this.menu.classList.add(this.parent.cssClass);\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[\"\" + type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(events.beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(events.refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.tabIndex = li.classList.contains('e-disabled') ? -1 : 0;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName, attrs: { 'aria-hidden': 'true' } }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n if (!Browser.isDevice) {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n }\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyUp, this);\n EventHandler.add(this.dlg, 'keydown', this.keyDown, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n if (!Browser.isDevice) {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n }\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyUp);\n EventHandler.remove(this.dlg, 'keydown', this.keyDown);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if ((this.options.isResponsiveFilter || Browser.isDevice)\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.focusNextOrPrevElement = function (e, focusableElements, focusClassName) {\n var nextIndex = (e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)) ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var focusClass = nextElement.classList.contains('e-chk-hidden') ? 'e-chkfocus' : focusClassName;\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : parentsUntil(nextElement, 'e-menu-item');\n this.excelSetFocus(target, focusClass);\n }\n };\n ExcelFilterBase.prototype.keyUp = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab') {\n var focusClass = e.target.classList.contains('e-chk-hidden') ? 'e-chkfocus' : 'e-menufocus';\n var target = e.target.classList.contains('e-menu-item')\n ? parentsUntil(e.target, 'e-menu-item') : parentsUntil(e.target, 'e-ftrchk');\n this.excelSetFocus(target, focusClass);\n }\n else if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey) {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"]), .e-menu-item:not(.e-disabled):not(.e-separator)'));\n this.focusNextOrPrevElement(e, focusableElements, 'e-menufocus');\n }\n else if ((e.key === 'Enter' || e.code === 'ArrowRight') && e.target.classList.contains('e-menu-item')) {\n e.preventDefault();\n e.target.click();\n if (e.target.classList.contains('e-submenu')) {\n this.hoverHandler(e);\n this.menuObj.element.querySelector('.e-menu-item').focus();\n this.excelSetFocus(parentsUntil(this.menuObj.element.querySelector('.e-menu-item'), 'e-menu-item'), 'e-focused');\n this.focusedMenuItem = this.menuObj.element.querySelector('.e-menu-item');\n }\n }\n };\n ExcelFilterBase.prototype.keyDown = function (e) {\n //prevented up and down arrow key press default functionality to prevent the browser scroll when performing keyboard navigation in excel filter element.\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n }\n };\n ExcelFilterBase.prototype.excelSetFocus = function (elem, className) {\n var prevElem = document.querySelector('.' + className);\n if (prevElem) {\n prevElem.classList.remove(className);\n }\n if (elem) {\n elem.classList.add(className);\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n EventHandler.remove(this.menuObj.element, 'keydown', this.contextKeyDownHandler);\n remove(this.cmenu);\n this.parent.notify(events.renderResponsiveCmenu, { target: null, header: '', isOpen: false, col: this.options.column });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n animationSettings: { effect: 'None' },\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter && this.parent.cssClass ?\n 'e-res-contextmenu-wrapper' + ' ' + this.parent.cssClass : this.options.isResponsiveFilter ?\n 'e-res-contextmenu-wrapper' : this.parent.cssClass ? this.parent.cssClass : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n EventHandler.add(this.menuObj.element, 'keydown', this.contextKeyDownHandler, this);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj['open'](height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(events.renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n this.isDevice = true;\n var contextRect = this.getContextBounds();\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n this.isDevice = false;\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg);\n }\n this.menuObj['open'](pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.contextKeyDownHandler = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab') {\n e.preventDefault();\n var focusableElements = Array.from(this.menuObj.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"]), .e-menu-item:not(.e-disabled):not(.e-separator)'));\n // Focus the next / previous context menu item\n this.focusNextOrPrevElement(e, focusableElements, 'e-focused');\n }\n else if (e.key === 'ArrowLeft' || e.key === 'Escape') {\n e.preventDefault();\n this.menuObj.close();\n this.focusedMenuItem = null;\n document.querySelector('.e-submenu.e-menu-item').classList.remove('e-selected');\n document.querySelector('.e-submenu.e-menu-item').focus();\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function () {\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target) {\n var contextWidth = this.getContextBounds().width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n if (options.cancel) {\n return;\n }\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n if (options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.closeDialog();\n this.renderDialogue(e);\n }\n };\n /**\n * @hidden\n * @param {MenuEventArgs} e - event args\n * @returns {void}\n */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n locale: this.parent.locale,\n closeOnEscape: true,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var rows = [].slice.call(_this.dlgObj.element.querySelectorAll('table.e-xlfl-table tr.e-xlfl-fields'));\n for (var i = 0; i < rows.length; i++) {\n var valInput = rows[i].children[1].querySelector('.e-control');\n var dropDownList = rows[i]\n .querySelector('.e-dropdownlist.e-control')['ej2_instances'][0];\n if (dropDownList.value === 'isempty' || dropDownList.value === 'isnotempty' ||\n dropDownList.value === 'isnull' || dropDownList.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (valInput && !isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n var row = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n var templateField_1 = isComplexField(_this.options.column.field) ?\n getComplexFieldID(_this.options.column.field) : _this.options.column.field;\n var isReactCompiler = _this.parent.isReact && typeof (_this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n _this.parent.renderTemplates(function () {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n });\n }\n else {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n }\n }\n else {\n //(row.cells[1].querySelector('input:not([type=hidden])') as HTMLElement).focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-xlfl-okbtn' + ' ' + this.parent.cssClass : 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'),\n cssClass: this.parent.cssClass ? 'e-xlfl-cancelbtn' + ' ' + this.parent.cssClass : 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.childRefs.unshift(this.dlgObj);\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelFilterBase.prototype.removeDialog = function () {\n this.parent.notify(events.customFilterClose, {});\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n this.removeObjects(this.childRefs);\n remove(this.dlgDiv);\n this.parent.notify(events.filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(events.beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /**\n * @hidden\n * @param {string} col - Defines column details\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(events.fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: arg.arg3,\n type: this.options.type\n });\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), arg.arg3, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: arg.arg8,\n type: this.options.type\n });\n mPredicate = mPredicate[\"\" + predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields', attrs: { role: 'row' } });\n table.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[\"\" + optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n var dropOptr = new DropDownList(extend({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.filter.params));\n this.childRefs.unshift(dropOptr);\n var evt = { 'open': this.dropDownOpen.bind(this), 'change': this.dropDownValueChange.bind(this) };\n registerEventHandlers(optrInput.id, [literals.open, literals.change], evt, this);\n dropOptr.addEventListener(literals['open'], this.eventHandlers[optrInput.id][literals.open]);\n dropOptr.addEventListener(literals.change, this.eventHandlers[optrInput.id][literals.change]);\n dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.removeHandlersFromComponent = function (component) {\n if (component.element.classList.contains('e-dropdownlist')) {\n removeEventHandlers(component, [literals.open, literals.change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [events.actionComplete, literals.focus], this);\n }\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n var valInput = args.element.closest('.e-xlfl-fields').children[1].querySelector('.e-control');\n var dropDownList = args.element['ej2_instances'][0];\n if (dropDownList.value === 'isempty' || dropDownList.value === 'isnotempty' ||\n dropDownList.value === 'isnull' || dropDownList.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns filter UI\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[\"\" + column];\n var table = this.parent.createElement('table', { className: 'e-xlfl-table', attrs: { role: 'grid' } });\n dlgConetntEle.appendChild(table);\n var colGroup = this.parent.createElement(literals.colGroup);\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n var optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate', attrs: { role: 'row' } });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n var andRadio = new RadioButton({\n label: this.getLocalizedLabel('AND'),\n name: 'default', checked: true,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.unshift(andRadio);\n // Initialize OR RadioButton component.\n var orRadio = new RadioButton({\n label: this.getLocalizedLabel('OR'),\n name: 'default',\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.unshift(orRadio);\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n andRadio.element.nextElementSibling.classList.add('e-xlfl-radio-and');\n orRadio.element.nextElementSibling.classList.add('e-xlfl-radio-or');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n this.removeHandlersFromComponent(obj);\n obj.destroy();\n }\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n }\n if (isReactCompiler || isReactChild) {\n this.parent.renderTemplates(function () {\n valueDiv.querySelector('input').id = isComplex ? complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.parent.isAngular ? valueDiv.children[0] : valueDiv.querySelector('input')).id = isComplex ?\n complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n }\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n if (isNullOrUndefined(flValue)) {\n flValue = undefined;\n }\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'dateonly': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[parseInt(predIndex.toString(), 10)] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ?\n this.options.column.columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue] :\n fltrPredicates[parseInt(indx.toString(), 10)].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column\n .columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.unshift(checkbox);\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type) || options.format;\n var datePicker = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.unshift(datePicker);\n datePicker.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var dateTimePicker = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.unshift(dateTimePicker);\n dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n var numericTextBox = new NumericTextBox(extend({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, options.column.filter.params));\n this.childRefs.unshift(numericTextBox);\n numericTextBox.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n this.childRefs.unshift(actObj);\n var evt = { 'actionComplete': this.acActionComplete(actObj, column), 'focus': this.acFocus(actObj, column, options, inputValue) };\n registerEventHandlers(inputValue.id, [events.actionComplete, literals.focus], evt, this);\n actObj.addEventListener(literals.focus, this.eventHandlers[inputValue.id][literals.focus]);\n actObj.addEventListener(events.actionComplete, this.eventHandlers[inputValue.id][events.actionComplete]);\n actObj.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.acActionComplete = function (actObj, column) {\n return function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[actObj.fields.value]) === index;\n });\n };\n };\n ExcelFilterBase.prototype.acFocus = function (actObj, column, options, inputValue) {\n var _this = this;\n return function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n };\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\nexport { ExcelFilterBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ExcelFilterBase } from '../common/excel-filter-base';\nimport { CheckBoxFilter } from './checkbox-filter';\nimport * as events from '../base/constant';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @class */ (function (_super) {\n __extends(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the Filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @param {object} customFltrOperators - specifies the customFltrOperators\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\nexport { ExcelFilter };\n","import { EventHandler, isNullOrUndefined, extend, closest, getValue } from '@syncfusion/ej2-base';\nimport { getActualPropFromColl, isActionPrevent, getColumnByForeignKeyValue } from '../base/util';\nimport { remove, matches } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { CellType, ResponsiveDialogAction } from '../base/enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport { FilterCellRenderer } from '../renderer/filter-cell-renderer';\nimport { parentsUntil, addFixedColumnBorder, applyStickyLeftRightPosition } from '../base/util';\nimport { FilterMenuRenderer } from '../renderer/filter-menu-renderer';\nimport { CheckBoxFilter } from '../actions/checkbox-filter';\nimport { ExcelFilter } from '../actions/excel-filter';\nimport * as literals from '../base/string-literals';\nimport { Input } from '@syncfusion/ej2-inputs';\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Grid filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filterSettings\n * @param {ServiceLocator} serviceLocator - specifes the serviceLocator\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e)) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar', attrs: { role: 'row' } });\n var row = this.generateRow();\n row.data = this.values;\n this.parent.getHeaderContent().querySelector('thead:not(.e-masked-thead)').appendChild(rowRenderer.element);\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n if (this.element.querySelectorAll('.e-leftfreeze').length &&\n (this.element.querySelectorAll('.e-indentcell').length || this.element.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = this.element.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n addFixedColumnBorder(this.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n if (rowdrag.classList.contains('e-leftfreeze')) {\n rowdrag.className = 'e-dragheadercell e-mastercell e-leftfreeze';\n }\n else {\n rowdrag.className = 'e-filterbarcell e-mastercell';\n }\n }\n var gCells = [].slice.call(this.element.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(events.freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n Filter.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n /**\n * To create the filter module.\n *\n * @param {Column} col - specifies the filtering column name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[\"\" + type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowFiltering)) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n var dropdownlist = [].slice.call(this.element.getElementsByClassName('e-filterbaroperator'));\n for (var i = 0; i < dropdownlist.length; i++) {\n if (dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0]) {\n dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function () {\n var options = {};\n var row = new Row(options);\n row.cells = this.generateCells();\n return row;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n var moduleName = this.parent.dataSource.adaptor && this.parent.dataSource.adaptor.getModuleName ? this.parent.dataSource.adaptor.getModuleName() : undefined;\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n var isMenuNotEqual = this.operator === 'notequal';\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[parseInt(i.toString(), 10)], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[parseInt(index.toString(), 10)] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n if (!this.column.isForeignColumn() && isNullOrUndefined(this.value) && (this.operator === 'equal' ||\n this.operator === 'notequal') && (moduleName !== 'ODataAdaptor' && moduleName !== 'ODataV4Adaptor')) {\n for (var i_1 = 0; i_1 < this.filterSettings.columns.length; i_1++) {\n if (this.filterSettings.columns[\"\" + i_1].field === field &&\n (this.filterSettings.columns[\"\" + i_1].operator === 'equal' || this.filterSettings.columns[\"\" + i_1].operator === 'notequal')\n && isNullOrUndefined(this.filterSettings.columns[\"\" + i_1].value)) {\n this.filterSettings.columns.splice(i_1, 1);\n i_1 = i_1 - 1;\n }\n }\n if (col.type === 'string') {\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: ''\n });\n }\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: undefined\n });\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: null\n });\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].uid === col.uid || (col.isForeignColumn()\n && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: events.actionComplete\n } : {\n requestType: 'filtering', type: events.actionComplete\n };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.parent.modelObserver.boundedEvents)) {\n this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length) {\n this.initialEnd();\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator, col.isForeignKey);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.filterComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.headerRefreshed, this.render, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.filterMenuClose, this.filterMenuClose, this);\n this.parent.on(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction, this);\n this.docClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.docClickHandler, this);\n EventHandler.add(this.parent.element, 'mousedown', this.refreshClearIcon, this);\n this.parent.on(events.filterOpen, this.columnMenuFilter, this);\n this.parent.on(events.click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(events.closeFilterDialog, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.docClickHandler);\n EventHandler.remove(this.parent.element, 'mousedown', this.refreshClearIcon);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.filterComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.keyPressed, this.keyUpHandler);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.off(events.headerRefreshed, this.render);\n this.parent.off(events.filterOpen, this.columnMenuFilter);\n this.parent.off(events.filterMenuClose, this.filterMenuClose);\n this.parent.off(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction);\n this.parent.off(events.click, this.filterIconClickHandler);\n this.parent.off(events.closeFilterDialog, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n Filter.prototype.refreshClearIcon = function (e) {\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' &&\n e.target.closest('th') && e.target.closest('th').classList.contains('e-filterbarcell') &&\n e.target.classList.contains('e-clear-icon')) {\n var targetText = e.target.previousElementSibling;\n Input.setValue(null, targetText, 'Never', true);\n if (this.filterSettings.mode === 'Immediate') {\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterMenuClose = function () {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
      filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @param {boolean} isForeignColumn - Defines whether it is a foreign key column.\n * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator, isForeignColumn) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName, isForeignColumn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator\n && isNullOrUndefined(this.column.filterBarTemplate) && isNullOrUndefined(this.column.filterTemplate)) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (filterOperator === 'like' && filterValue && filterValue.indexOf('%') === -1) {\n filterValue = '%' + filterValue + '%';\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) ? filterValue.toString() : filterValue;\n if (filterValue === '') {\n filterValue = null;\n }\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if ((filterValue && filterValue.length < 1) || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = (filterValue && filterValue.length < 1) ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var _this = this;\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') && filterValue &&\n Array.isArray(this.value) && filterValue.split(',').length > 1) {\n this.values[this.column.field] = ((filterValue).split(',')).map(function (val) {\n if (val === '') {\n val = null;\n }\n return _this.setFormatForFlColumn(new Date(val), _this.column);\n });\n }\n else {\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[parseInt(i.toString(), 10)]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var col = 'columns';\n // eslint-disable-next-line no-case-declarations\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: events.actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[\"\" + col])) {\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n if ((this.filterSettings.type === 'CheckBox' || this.filterSettings.type === 'Excel')) {\n this.filterSettings.columns = (this.actualData.length <= 1) ? this.checkboxPrevFilterObject :\n this.checkboxFilterObject;\n this.actualPredicate[this.column.field] = this.filterSettings.columns;\n var col_1 = this.parent.getColumnByField(this.column.field);\n var iconClass = this.parent.showColumnMenu && col_1.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(this.column.field)\n .querySelector(iconClass);\n if (this.checkboxPrevFilterObject.length === 0) {\n filterIconElement.classList.remove('e-filtered');\n }\n else {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n }\n return;\n }\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[\"\" + prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n if (this.parent.height === '100%') {\n this.parent.scrollModule.refresh();\n }\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[parseInt(i.toString(), 10)].uid);\n var filterValue = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[parseInt(i.toString(), 10)].field;\n this.values[\"\" + key] = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[parseInt(i.toString(), 10)].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[parseInt(i.toString(), 10)].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[parseInt(i.toString(), 10)].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n * @returns {void}\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - returns the fields\n * @returns {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[parseInt(i.toString(), 10)]).field, false);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.isresetFocus = false;\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /**\n * Create filter dialog options\n *\n * @param {Column} col - Filtering column detail.\n * @param {Element} target - Filter dialog target.\n * @param {number} left - Filter dialog left position.\n * @param {number} top - Filter dialog top position.\n * @returns {Object} returns the created dialog options\n * @hidden\n */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal',\n parentTotalDataCount: gObj.getDataModule().isRemote() && gObj.allowPaging ? gObj.pagerModule.pagerObj.totalRecordsCount :\n gObj.getDataModule().isRemote() ? gObj.totalDataRecordsCount : gObj.getFilteredRecords().length,\n parentCurrentViewDataCount: gObj.currentViewData.length,\n parentFilteredLocalRecords: !gObj.getDataModule().isRemote() ? gObj.getFilteredRecords() : []\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(events.preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n if (!isNullOrUndefined(this.column)) {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(field);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n }\n var _loop_1 = function (i, len) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this_1.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[parseInt(i.toString(), 10)]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[\"\" + field];\n }\n }\n while (len_1--) {\n if (cols[parseInt(len_1.toString(), 10)].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n if (this_1.filterSettings.type !== 'FilterBar' || this_1.parent.showColumnMenu) {\n var iconClass = this_1.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[\"\" + field]) {\n delete this_1.actualPredicate[\"\" + field];\n }\n if (this_1.values[\"\" + field]) {\n delete this_1.values[\"\" + field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar' && !parentsUntil(e.target, 'e-toolbar')\n && isNullOrUndefined(this.parent.element.querySelector('.e-filter-popup'))) {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(events.restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[parseInt(index.toString(), 10)].uid)\n || gObj.grabColumnByFieldFromAllCols(columns[parseInt(index.toString(), 10)]\n .field, columns[parseInt(index.toString(), 10)].isForeignKey);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), (column.type === 'dateonly' ? 'date' : column.type)) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging\n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[\"\" + value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent, this.column.isForeignColumn());\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[parseInt(i.toString(), 10)]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n if (value.indexOf('*') !== -1 || value.indexOf('?') !== -1 || value.indexOf('%3f') !== -1) {\n this.operator = this.filterOperators.wildCard;\n }\n else if (value.indexOf('%') !== -1) {\n this.operator = this.filterOperators.like;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n // eslint-disable-next-line no-prototype-builtins\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[\"\" + singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[\"\" + multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnull', text: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', text: this.l10n.getConstant('NotNull') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'isempty', text: this.l10n.getConstant('IsEmpty') },\n { value: 'doesnotstartwith', text: this.l10n.getConstant('NotStartsWith') },\n { value: 'doesnotendwith', text: this.l10n.getConstant('NotEndsWith') },\n { value: 'doesnotcontain', text: this.l10n.getConstant('NotContains') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnotempty', text: this.l10n.getConstant('IsNotEmpty') },\n { value: 'like', text: this.l10n.getConstant('Like') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n dateonlyOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter(false);\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n var filterOperatorElement = closest(e.target, 'div').\n querySelector('.e-filterbaroperator');\n if (filterOperatorElement) {\n filterOperatorElement.focus();\n }\n else {\n e.target.focus();\n }\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.classList.contains('e-device') ? document.querySelector('.e-filter-popup')\n : this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((this.filterModule && hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && !parentsUntil(target, 'e-date-overflow') && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle\n && !(parentsUntil(target, 'e-search-wrapper') && !hasDialogClosed)) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id && !(parentsUntil(target, 'e-search-wrapper')\n && hasDialogClosed);\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n this.actualData = Object.keys(this.actualPredicate);\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n this.checkboxFilterObject = dataManager.dataSource.json;\n this.checkboxPrevFilterObject = dataManager.executeLocal(query);\n for (var i = 0; i < this.checkboxPrevFilterObject.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (this.checkboxPrevFilterObject[parseInt(i.toString(), 10)].field ===\n this.filterSettings.columns[parseInt(j.toString(), 10)].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var col = this.parent.getColumnByField(args.field);\n var iconClass = this.parent.showColumnMenu && col.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field) ||\n getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[parseInt(i.toString(), 10)].field;\n if (!this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field)) {\n fieldName = getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns()).field;\n }\n this.refreshFilterIcon(fieldName, cols[parseInt(i.toString(), 10)].operator, cols[parseInt(i.toString(), 10)].value, cols[parseInt(i.toString(), 10)].type, cols[parseInt(i.toString(), 10)].predicate, cols[parseInt(i.toString(), 10)].matchCase, cols[parseInt(i.toString(), 10)].ignoreAccent, cols[parseInt(i.toString(), 10)].uid);\n }\n };\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n if (this.actualPredicate[\"\" + fieldName]) {\n this.actualPredicate[\"\" + fieldName].push(obj);\n }\n else {\n this.actualPredicate[\"\" + fieldName] = [obj];\n }\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n var col = this.parent.getColumnByField(fieldName);\n if (this.parent.showColumnMenu && col.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (col) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, classList } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { setCssInGridPopUp, getActualPropFromColl, isActionPrevent, iterateExtend, parentsUntil } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n /**\n * Constructor for Grid sorting module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SortSettings} sortSettings - specifies the SortSettings\n * @param {string[]} sortedColumns - specifies the string\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[parseInt(i.toString(), 10)], sortedCols);\n if (this.columnName === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[parseInt(i.toString(), 10)]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n // eslint-disable-next-line no-self-assign\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: events.actionComplete\n } : { requestType: 'sorting', type: events.actionComplete };\n this.isRemove = false;\n this.parent.trigger(events.actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols;\n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[parseInt(i.toString(), 10)]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: events.actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: events.actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(events.modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[parseInt(i.toString(), 10)].isFromGroup) {\n this.sortedColumns.push(sortColumns[parseInt(i.toString(), 10)].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[parseInt(i.toString(), 10)].field);\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n var args = { requestType: 'sorting', type: events.actionBegin, target: this.currentTarget };\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(events.modelChanged, args);\n }\n break;\n }\n }\n if (!args.cancel) {\n this.addSortIcons();\n }\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.setFullScreenDialog },\n { event: events.renderResponsiveChangeAction, handler: this.renderResponsiveChangeAction },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.sortComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.click, handler: this.clickHandler },\n { event: events.headerRefreshed, handler: this.refreshSortIcons },\n { event: events.keyPressed, handler: this.keyPressed },\n { event: events.cancelBegin, handler: this.cancelBeginEvent },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the sorting\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowSorting)) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.getElementsByClassName('e-ascending').length ? 'Ascending' :\n 'Descending';\n this.isMultiSort = e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey);\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.getElementsByClassName('e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n }\n else {\n this.sortColumn(field, direction, this.isMultiSort);\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, (cols[parseInt(i.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n };\n Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping\n && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1\n && !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[parseInt(i.toString(), 10)].field === field) {\n return this.sortSettings.columns[parseInt(i.toString(), 10)];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function () {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n };\n Sort.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n /**\n * To show the responsive custom sort dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Sort.prototype.showCustomSort = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { attributes, createElement, classList, append } from '@syncfusion/ej2-base';\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @class */ (function () {\n /**\n * Constructor for numericContainer module\n *\n * @param {Pager} pagerModule - specifies the pagerModule\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n *\n * @returns {void}\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.refreshAriaAttrLabel();\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { tabindex: '-1', 'aria-label': pagerObj.getLocalizedLabel('Page') + i + pagerObj.getLocalizedLabel('Of') +\n pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'), href: '#' }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n link.setAttribute('aria-current', 'page');\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n EventHandler.add(this.pagerElement, 'auxclick', this.auxiliaryClickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n EventHandler.remove(this.pagerModule.element, 'auxclick', this.auxiliaryClickHandler);\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.refreshAriaAttrLabel = function () {\n var pagerObj = this.pagerModule;\n var numericContainer = pagerObj.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (links[parseInt(i.toString(), 10)].hasAttribute('aria-label') && links[parseInt(i.toString(), 10)].hasAttribute('index')) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-label', pagerObj.getLocalizedLabel('Page') + links[parseInt(i.toString(), 10)].getAttribute('index')\n + pagerObj.getLocalizedLabel('Of') + pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'));\n }\n }\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem')) {\n e.preventDefault();\n }\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!this.target.classList.contains('e-disable') && !isNullOrUndefined(this.target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(this.target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.auxiliaryClickHandler = function (e) {\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem') && (e.button === 1)) {\n e.preventDefault();\n }\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var isLastSet;\n var pageNo;\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n if (pagerObj.isPagerResized) {\n var focusedItem = this.pagerElement.querySelector('.e-focus');\n var focusedorTarget = this.target ? this.target : focusedItem ? focusedItem : null;\n var prevFocused = false;\n var nextFocused = false;\n var firstFocused = false;\n var lastFocused = false;\n var numItemFocused = false;\n var npFocused = false;\n var ppFocused = false;\n if (focusedorTarget) {\n var classList_1 = focusedorTarget.classList;\n if (classList_1.contains('e-icons')) {\n switch (true) {\n case classList_1.contains('e-prev'):\n prevFocused = true;\n break;\n case classList_1.contains('e-next'):\n nextFocused = true;\n break;\n case classList_1.contains('e-first'):\n firstFocused = true;\n break;\n case classList_1.contains('e-last'):\n lastFocused = true;\n break;\n }\n }\n else if (classList_1.contains('e-numericitem')) {\n switch (true) {\n case classList_1.contains('e-np'):\n npFocused = true;\n break;\n case classList_1.contains('e-pp'):\n ppFocused = true;\n break;\n default:\n numItemFocused = classList_1.contains('e-numericitem');\n break;\n }\n }\n }\n isLastSet = lastFocused || (this.pagerModule.keyAction === 'End');\n numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var isPageAvailable = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.currentPage; });\n //Setting pageNo to render based on key action or click action.\n if (firstFocused || this.pagerModule.keyAction === 'Home') {\n pageNo = 1 + i;\n }\n else if (lastFocused || this.pagerModule.keyAction === 'End') {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n else if (nextFocused || this.pagerModule.keyAction === 'ArrowRight' || prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n if (isPageAvailable) {\n pageNo = parseInt(numItems[0].getAttribute('index'), 10) + i;\n }\n else if (prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n pageNo = parseInt(this.PP.getAttribute('index'), 10) + i;\n }\n else {\n pageNo = pagerObj.currentPage + i;\n }\n }\n else if (npFocused || ppFocused) {\n pageNo = pagerObj.currentPage + i;\n }\n else if (numItemFocused) {\n pageNo = (parseInt(numItems[0].getAttribute('index'), 10) + i);\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n if (pageNo <= pagerObj.totalPages) {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-hide');\n this.links[parseInt(i.toString(), 10)].style.display = '';\n this.links[parseInt(i.toString(), 10)].setAttribute('index', pageNo.toString());\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[parseInt(i.toString(), 10)].classList.add('e-pager-default');\n }\n else {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[parseInt(i.toString(), 10)].style.display = 'none';\n }\n classList(this.links[parseInt(i.toString(), 10)], [], ['e-currentitem', 'e-active']);\n this.links[parseInt(i.toString(), 10)].removeAttribute('aria-current');\n }\n attributes(this.first, {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mfirst'), {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip')\n });\n attributes(this.last, {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mlast'), {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip')\n });\n attributes(this.prev, {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mprev'), {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip')\n });\n attributes(this.next, {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mnext'), {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip')\n });\n var ppIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? isLastSet\n ? parseInt(numItems[0].getAttribute('index'), 10) - pagerObj.avgNumItems\n : parseInt(numItems[0].getAttribute('index'), 10) - numItems.length\n : parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount;\n attributes(this.PP, {\n 'index': ((ppIndex < 1) ? '1' : ppIndex.toString()),\n 'title': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip')\n });\n var NPIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? parseInt(numItems[numItems.length - 1].getAttribute('index'), 10)\n : parseInt(this.links[this.links.length - 1].getAttribute('index'), 10);\n attributes(this.NP, {\n 'index': (NPIndex + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip')\n });\n this.target = undefined;\n };\n NumericContainer.prototype.updateStyles = function () {\n var _this = this;\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n var currentPageIndex = this.links.findIndex(function (link) { return link.getAttribute('index') === _this.pagerModule.currentPage.toString(); });\n var currentPage = (this.pagerModule.isPagerResized && currentPageIndex !== -1) ? currentPageIndex\n : ((this.pagerModule.currentPage - 1) % this.pagerModule.pageCount);\n classList(this.links[parseInt(currentPage.toString(), 10)], ['e-currentitem', 'e-active'], []);\n this.links[parseInt(currentPage.toString(), 10)].setAttribute('aria-current', 'page');\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount || (this.pagerModule.isPagerResized\n && this.links.findIndex(function (link) { return parseInt(link.getAttribute('index'), 10) === 1; }))) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)\n || (pagerObj.isPagerResized && Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.totalPages; }))) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\nexport { NumericContainer };\n","import { createElement, append } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar' });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n this.pageNoMsgElem.parentElement.classList.remove('e-hide');\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n /**\n * To format the PagerMessage\n *\n * @function format\n * @param {string} str - specifies the string\n * @param {number[]} args - specifies the argument\n * @returns {string} returns the format string\n * @hidden\n */\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n var regExp = RegExp;\n for (var i = 0; i < args.length; i++) {\n regx = new regExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[parseInt(i.toString(), 10)].toString());\n }\n return str;\n };\n return PagerMessage;\n}());\nexport { PagerMessage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, L10n, Browser, addClass, removeClass, classList } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, Event, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { NumericContainer } from './numeric-container';\nimport { PagerMessage } from './pager-message';\nimport { appendChildren, parentsUntil } from '../grid/base/util';\nimport * as events from '../grid/base/constant';\n/**\n * Represents the `Pager` component.\n * ```html\n *
      \n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n /**\n * Constructor for creating the component.\n *\n * @param {PagerModel} options - specifies the options\n * @param {string} element - specifies the element\n * @param {string} parent - specifies the pager parent\n * @hidden\n */\n function Pager(options, element, parent) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n _this.checkAll = true;\n _this.pageRefresh = 'pager-refresh';\n _this.firstPagerFocus = false;\n /** @hidden */\n _this.isCancel = false;\n _this.parent = parent;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} returns the modules declaration\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this],\n name: 'ExternalMessage'\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this],\n name: 'PagerDropDown'\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager items',\n previousPagerTooltip: 'Go to previous pager items',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager items',\n PreviousPagerTooltip: 'Go to previous pager items',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All',\n Container: 'Pager Container',\n Information: 'Pager Information',\n ExternalMsg: 'Pager external message',\n Page: 'Page ',\n Of: ' of ',\n Pages: ' Pages'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n *\n * @returns {void}\n */\n Pager.prototype.render = function () {\n this.element.setAttribute('data-role', 'pager');\n this.element.setAttribute('tabindex', '-1');\n this.initLocalization();\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n addClass([this.element], this.cssClass.split(' '));\n }\n else {\n addClass([this.element], [this.cssClass]);\n }\n }\n if (!this.hasParent) {\n this.element.setAttribute('tabindex', '0');\n }\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on(this.pageRefresh, this.pagerTemplate, this);\n this.notify(this.pageRefresh, {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n this.wireEvents();\n this.addListener();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n *\n * @method destroy\n * @returns {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.isReactTemplate()) {\n this.off(this.pageRefresh, this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\n this.removeListener();\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - Defines the index\n */\n // eslint-disable-next-line\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PagerModel} newProp - specifies the new property\n * @param {PagerModel} oldProp - specifies the old propety\n * @returns {void}\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if ((newProp.pageSize === this.getLocalizedLabel('All')) && oldProp.pageSize === this.totalRecordsCount) {\n this.pageSize = this.totalRecordsCount;\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n if (this.isCancel && this.hasParent) {\n this.parent\n .setProperties({ pageSettings: { pageSize: oldProp.pageSize } }, true);\n }\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n this.resizePager();\n };\n Pager.prototype.wireEvents = function () {\n if (!this.hasParent) {\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resizePager, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'load', this.resizePager, this);\n };\n Pager.prototype.unwireEvents = function () {\n if (!this.hasParent) {\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resizePager);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'load', this.resizePager);\n };\n Pager.prototype.onFocusIn = function (e) {\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n if (isNullOrUndefined(focusedTabIndexElement)) {\n var target = e.target;\n var dropDownPage = this.getDropDownPage();\n if (!this.hasParent) {\n this.element.tabIndex = -1;\n }\n if (target === this.element && !this.hasParent) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n this.addFocus(focusablePagerElements[0], true);\n return;\n }\n if (target === this.element) {\n this.element.tabIndex = 0;\n return;\n }\n if (target !== dropDownPage && !target.classList.contains('e-disable')) {\n this.addFocus(target, true);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.onFocusOut = function (e) {\n var focusedElement = this.getFocusedElement();\n var dropDownPage = this.getDropDownPage();\n if (!isNullOrUndefined(focusedElement)) {\n this.removeFocus(focusedElement, true);\n }\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n this.removeFocus(dropDownPage, true);\n }\n this.setTabIndexForFocusLastElement();\n if (!this.hasParent) {\n this.element.tabIndex = 0;\n }\n if (this.hasParent) {\n this.element.tabIndex = -1;\n }\n };\n Pager.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n }\n }\n };\n Pager.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.notify(events.keyPressed, presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Pager.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.on(events.keyPressed, this.onKeyPress, this);\n }\n };\n Pager.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.off(events.keyPressed, this.onKeyPress);\n }\n };\n Pager.prototype.onKeyPress = function (e) {\n if (!this.hasParent) {\n if (this.checkPagerHasFocus()) {\n this.changePagerFocus(e);\n }\n else {\n e.preventDefault();\n this.setPagerFocus();\n }\n }\n };\n /**\n * @returns {boolean} - Return the true value if pager has focus\n * @hidden */\n Pager.prototype.checkPagerHasFocus = function () {\n return this.getFocusedTabindexElement() ? true : false;\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerContainerFocus = function () {\n this.element.focus();\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerFocus = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n };\n Pager.prototype.setPagerFocusForActiveElement = function () {\n var currentActivePage = this.getActiveElement();\n if (currentActivePage) {\n currentActivePage.focus();\n }\n };\n Pager.prototype.setTabIndexForFocusLastElement = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && !isNullOrUndefined(dropDownPage.offsetParent)) {\n dropDownPage.tabIndex = 0;\n }\n else if (focusablePagerElements.length > 0) {\n focusablePagerElements[focusablePagerElements.length - 1].tabIndex = 0;\n }\n };\n /**\n * @param {KeyboardEventArgs} e - Keyboard Event Args\n * @returns {void}\n * @hidden */\n Pager.prototype.changePagerFocus = function (e) {\n this.keyAction = e.key;\n if (e.shiftKey && e.keyCode === 9) {\n this.changeFocusByShiftTab(e);\n }\n else if (e.keyCode === 9) {\n this.changeFocusByTab(e);\n }\n else if (e.keyCode === 13 || e.keyCode === 32) {\n this.navigateToPageByEnterOrSpace(e);\n }\n else if (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 35 || e.keyCode === 36) {\n this.navigateToPageByKey(e);\n }\n this.keyAction = '';\n };\n Pager.prototype.getFocusedTabindexElement = function () {\n var focusedTabIndexElement;\n var tabindexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n for (var i = 0; i < tabindexElements.length; i++) {\n var element = tabindexElements[parseInt(i.toString(), 10)];\n if (element && (element.classList.contains('e-focused') || element.classList.contains('e-input-focus'))) {\n focusedTabIndexElement = element;\n break;\n }\n }\n return focusedTabIndexElement;\n };\n Pager.prototype.changeFocusByTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (focusablePagerElements.length > 0) {\n if (this.pageSizes && dropDownPage && currentItemPagerFocus === focusablePagerElements[focusablePagerElements.length - 1]) {\n dropDownPage.tabIndex = 0;\n }\n else {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var incrementNumber = i + 1;\n if (incrementNumber < focusablePagerElements.length) {\n e.preventDefault();\n focusablePagerElements[parseInt(incrementNumber.toString(), 10)].focus();\n }\n break;\n }\n }\n }\n }\n };\n Pager.prototype.changeFocusByShiftTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n dropDownPage.tabIndex = -1;\n this.addFocus(focusablePagerElements[focusablePagerElements.length - 1], true);\n }\n else if (focusablePagerElements.length > 0) {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var decrementNumber = i - 1;\n if (decrementNumber >= 0) {\n e.preventDefault();\n focusablePagerElements[parseInt(decrementNumber.toString(), 10)].focus();\n }\n else if (this.hasParent) {\n var rows = this.parent.getRows();\n var lastRow = rows[rows.length - 1];\n var lastCell = lastRow.lastChild;\n e.preventDefault();\n lastCell.focus();\n this.firstPagerFocus = true;\n }\n break;\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.checkFirstPagerFocus = function () {\n if (this.firstPagerFocus) {\n this.firstPagerFocus = false;\n return true;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.navigateToPageByEnterOrSpace = function (e) {\n var currentItemPagerFocus = this.getFocusedElement();\n if (currentItemPagerFocus) {\n this.goToPage(parseInt(currentItemPagerFocus.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n var selectedClass = this.getClass(currentItemPagerFocus);\n var classElement = this.getElementByClass(selectedClass);\n if ((selectedClass === 'e-first' || selectedClass === 'e-prev' || selectedClass === 'e-next'\n || selectedClass === 'e-last' || selectedClass === 'e-pp' || selectedClass === 'e-np')\n && classElement && !classElement.classList.contains('e-disable')) {\n classElement.focus();\n }\n else if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.navigateToPageByKey = function (e) {\n var actionClass = e.keyCode === 37 ? '.e-prev' : e.keyCode === 39 ? '.e-next'\n : e.keyCode === 35 ? '.e-last' : e.keyCode === 36 ? '.e-first' : '';\n var pagingItem = this.element.querySelector(actionClass);\n var currentItemPagerFocus = this.getFocusedElement();\n if (!isNullOrUndefined(pagingItem) && pagingItem.hasAttribute('index')\n && !isNaN(parseInt(pagingItem.getAttribute('index'), 10))) {\n this.goToPage(parseInt(pagingItem.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.checkFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n return selectedClass === 'e-mfirst' || selectedClass === 'e-mprev' || selectedClass === 'e-mnext'\n || selectedClass === 'e-mlast' ? true : false;\n };\n Pager.prototype.changeFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n var classElement = this.getElementByClass(selectedClass);\n if (classElement && classElement.classList.contains('e-disable')) {\n if (selectedClass === 'e-mnext' || selectedClass === 'e-mlast') {\n var mPrev = this.element.querySelector('.e-mprev');\n mPrev.focus();\n }\n else {\n this.setPagerFocus();\n }\n }\n };\n Pager.prototype.removeTabindexLastElements = function () {\n var tabIndexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n if (tabIndexElements.length > 1) {\n for (var i = 1; i < tabIndexElements.length; i++) {\n var element = tabIndexElements[parseInt(i.toString(), 10)];\n if (element) {\n element.tabIndex = -1;\n }\n }\n }\n };\n Pager.prototype.getActiveElement = function () {\n return this.element.querySelector('.e-active');\n };\n /**\n * @returns {Element} - Returns DropDown Page\n * @hidden */\n Pager.prototype.getDropDownPage = function () {\n var dropDownPageHolder = this.element.querySelector('.e-pagerdropdown');\n var dropDownPage;\n if (dropDownPageHolder) {\n dropDownPage = dropDownPageHolder.children[0];\n }\n return dropDownPage;\n };\n Pager.prototype.getFocusedElement = function () {\n return this.element.querySelector('.e-focused');\n };\n Pager.prototype.getClass = function (element) {\n var currentClass;\n var classList = ['e-mfirst', 'e-mprev', 'e-first', 'e-prev', 'e-pp',\n 'e-np', 'e-next', 'e-last', 'e-mnext', 'e-mlast'];\n for (var i = 0; i < classList.length; i++) {\n if (element && element.classList.contains(classList[parseInt(i.toString(), 10)])) {\n currentClass = classList[parseInt(i.toString(), 10)];\n return currentClass;\n }\n }\n return currentClass;\n };\n Pager.prototype.getElementByClass = function (className) {\n return this.element.querySelector('.' + className);\n };\n /**\n * @param {Element} element - Pager element\n * @param {Element[]} previousElements - Iterating pager element\n * @returns {Element[]} - Returns focusable pager element\n * @hidden */\n Pager.prototype.getFocusablePagerElements = function (element, previousElements) {\n var target = element;\n var targetChildrens = target.children;\n var pagerElements = previousElements;\n for (var i = 0; i < targetChildrens.length; i++) {\n var element_1 = targetChildrens[parseInt(i.toString(), 10)];\n if (element_1.children.length > 0 && !element_1.classList.contains('e-pagesizes')) {\n pagerElements = this.getFocusablePagerElements(element_1, pagerElements);\n }\n else {\n var tabindexElement = targetChildrens[parseInt(i.toString(), 10)];\n if (tabindexElement.hasAttribute('tabindex') && !element_1.classList.contains('e-disable')\n && element_1.style.display !== 'none'\n && !isNullOrUndefined(element_1.offsetParent)) {\n pagerElements.push(tabindexElement);\n }\n }\n }\n return pagerElements;\n };\n Pager.prototype.addFocus = function (element, addFocusClass) {\n if (!isNullOrUndefined(element)) {\n if (addFocusClass) {\n addClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = 0;\n }\n };\n Pager.prototype.removeFocus = function (element, removeFocusClass) {\n if (removeFocusClass) {\n removeClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = -1;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - specifies the key\n * @returns {string} returns the localized label\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n *\n * @param {number} pageNo - Defines page number.\n * @returns {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @param {number} pageSize - specifies the pagesize\n * @returns {void}\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.isCancel = false;\n this.refresh();\n }\n else {\n this.isCancel = true;\n if (oldProp && oldProp.pageSize) {\n this.setProperties({ pageSize: oldProp.pageSize }, true);\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.setDropDownValue('value', oldProp.pageSize);\n this.pagerdropdownModule['dropDownListObject'].text = oldProp.pageSize + '';\n }\n }\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate() && !this.isVue) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = this.isVue ? this.getPagerTemplate()(data, this, 'template') : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = this.isAllPage ? 1 : (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string | Function} template - specifies the template\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.compile = function (template) {\n if (template) {\n try {\n if (typeof template === 'function') {\n this.templateFn = templateCompiler(template);\n }\n else {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n }\n catch (e) {\n this.templateFn = templateCompiler(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n this.containerModule.refresh();\n this.removeTabindexLastElements();\n if (focusedTabIndexElement && focusedTabIndexElement.classList.contains('e-disable')) {\n if (this.checkFocusInAdaptiveMode(focusedTabIndexElement)) {\n this.changeFocusInAdaptiveMode(focusedTabIndexElement);\n }\n else {\n this.setPagerFocusForActiveElement();\n }\n }\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n this.setTabIndexForFocusLastElement();\n this.resizePager();\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n var regExp = RegExp;\n var regx = new regExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: this.getLocalizedLabel('firstPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[parseInt(i.toString(), 10)]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return (this.isReact || this.isVue) && this.template && typeof (this.template) !== 'string';\n };\n /**\n * Loop through all the inner elements of pager to calculate the required width for pager child elements.\n *\n * @returns {number} returns the actual width occupied by pager elements.\n */\n Pager.prototype.calculateActualWidth = function () {\n var pagerElements = this.element.querySelectorAll(\n /* tslint:disable-next-line:max-line-length */\n '.e-mfirst, .e-mprev, .e-icon-first, .e-icon-prev, .e-pp:not(.e-disable), .e-numericitem:not(.e-hide), .e-numericitem.e-active.e-hide, .e-np:not(.e-disable), .e-icon-next, .e-icon-last, .e-parentmsgbar, .e-mnext, .e-mlast, .e-pagerdropdown, .e-pagerconstant');\n var actualWidth = 0;\n for (var i = 0; i < pagerElements.length; i++) {\n if (getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).display !== 'none') {\n actualWidth += pagerElements[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginRight);\n }\n }\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n actualWidth += parseFloat(getComputedStyle(pagerContainer).marginLeft)\n + parseFloat(getComputedStyle(pagerContainer).marginRight);\n return actualWidth;\n };\n /**\n * Resize pager component by hiding pager component's numeric items based on total width available for pager.\n *\n * @returns {void}\n */\n Pager.prototype.resizePager = function () {\n var _this = this;\n var isStyleApplied = this.element.classList.contains('e-pager') ? getComputedStyle(this.element).getPropertyValue('border-style').includes('solid') : null;\n if (!(this.template) && isStyleApplied) {\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var actualWidth = this.calculateActualWidth();\n var pagerWidth = this.element.clientWidth\n - parseFloat(getComputedStyle(this.element).paddingLeft)\n - parseFloat(getComputedStyle(this.element).paddingRight)\n - parseFloat(getComputedStyle(this.element).marginLeft)\n - parseFloat(getComputedStyle(this.element).marginRight);\n var numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var hiddenNumItems = pagerContainer.querySelectorAll('.e-numericitem.e-hide:not([style*=\"display: none\"])');\n var hideFrom = numItems.length;\n var showFrom = 1;\n var bufferWidth = (!isNullOrUndefined(parentsUntil(this.element, 'e-bigger'))) ? 10 : 5;\n var NP = pagerContainer.querySelector('.e-np');\n var PP = pagerContainer.querySelector('.e-pp');\n var detailItems = this.element.querySelectorAll('.e-parentmsgbar:not(.e-hide):not([style*=\"display: none\"]), .e-pagesizes:not(.e-hide):not([style*=\"display: none\"])');\n var totDetailWidth_1 = 0;\n if (detailItems.length) {\n detailItems.forEach(function (item) {\n totDetailWidth_1 += item.offsetWidth;\n });\n this.averageDetailWidth = totDetailWidth_1 / detailItems.length;\n }\n var totalWidth = 0;\n /**\n * Loop to calculate average width of numeric item.\n */\n for (var i = 0; i < numItems.length; i++) {\n totalWidth += numItems[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginRight);\n }\n var numericItemWidth = totalWidth / numItems.length;\n /**\n * Condition to hide numeric items when calculated actual width exceeds available pager space.\n */\n if (pagerWidth > 0 && (actualWidth >= (pagerWidth - (numericItemWidth ? numericItemWidth : 0)))) {\n this.isPagerResized = true;\n if (this.currentPage !== this.totalPages) {\n classList(NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n actualWidth = this.calculateActualWidth();\n var diff = Math.abs((actualWidth) - pagerWidth);\n // To calculate number of numeric items need to be hidden.\n var numToHide = Math.ceil(diff / (numericItemWidth));\n numToHide = (numToHide === 0) ? 1 : (numToHide > numItems.length) ? (numItems.length - 1) : numToHide;\n for (var i = 1; i <= numToHide; i++) {\n var hideIndex = hideFrom - parseInt(i.toString(), 10);\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (this.currentPage !== 1 && ((parseInt(numItems[Math.abs(hideIndex)].getAttribute('index'), 10) === this.currentPage)\n || parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.currentPage)) {\n hideIndex = 0;\n classList(PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n if (numItems[Math.abs(hideIndex)] && !(numItems[Math.abs(hideIndex)].classList.contains('e-currentitem'))) {\n numItems[Math.abs(hideIndex)].classList.add('e-hide');\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n // To hide Pager message elements when no more numeric items available to hide.\n if (numItems.length <= 1 && detailItems.length && window.innerWidth >= 768) {\n var pagerDetailItemsWidth = this.calculateActualWidth();\n if ((pagerDetailItemsWidth) > (pagerWidth - bufferWidth)) {\n var detailtoHide = Math.floor((pagerWidth - (pagerDetailItemsWidth - totDetailWidth_1))\n / this.averageDetailWidth);\n detailtoHide = detailItems.length - detailtoHide;\n for (var i = 0; i < (detailtoHide > detailItems.length ? detailItems.length : detailtoHide); i++) {\n detailItems[parseInt(i.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n }\n /**\n * Condition to show numeric items when space availble in pager at dom.\n */\n else if (actualWidth < (pagerWidth) && hiddenNumItems.length) {\n var diff = Math.abs(pagerWidth - (actualWidth));\n var hiddenDetailItems = this.element.querySelectorAll('.e-parentmsgbar.e-hide, .e-pagesizes.e-hide');\n // To show Pager message elements.\n if (hiddenDetailItems.length && (diff > (this.averageDetailWidth + (this.averageDetailWidth / 4)))) {\n hiddenDetailItems[(hiddenDetailItems.length - 1)].classList.remove('e-hide');\n }\n if ((diff > (numericItemWidth * 2) && !hiddenDetailItems.length && window.innerWidth >= 768)) {\n // To calculate number of numeric items need to be shown.\n var numToShow = Math.floor((diff) / (numericItemWidth + bufferWidth));\n numToShow = (numToShow > hiddenNumItems.length) ? hiddenNumItems.length : (numToShow - 1);\n //Seggregating hidden num items as less index and greater index values than current page value.\n var lesserIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) < _this.currentPage; }).sort(function (a, b) { return parseInt(b.getAttribute('index'), 10) - parseInt(a.getAttribute('index'), 10); });\n var greaterIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) > _this.currentPage; });\n var showItems = (lesserIndexItems.length && lesserIndexItems)\n || (greaterIndexItems.length && greaterIndexItems);\n for (var i = 1; i <= numToShow; i++) {\n var showItem = showItems && showItems[Math.abs(showFrom - i)];\n if (showItem) {\n showItem.classList.remove('e-hide');\n if (showItem === showItems[showItems.length - 1]) {\n showItems = null;\n }\n }\n }\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (numItems.length) {\n if (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.totalPages) {\n classList(NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n if (parseInt(numItems[0].getAttribute('index'), 10) === 1) {\n classList(PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n var isLastSet = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === _this.totalPages; });\n var ppIndex = (parseInt(numItems[0].getAttribute('index'), 10) - (isLastSet ? this.avgNumItems : numItems.length));\n PP.setAttribute('index', (ppIndex < 1) ? '1' : ppIndex.toString());\n NP.setAttribute('index', (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) + 1).toString());\n this.avgNumItems = isLastSet ? this.avgNumItems : numItems.length;\n }\n /**\n * Condition to add adaptive class name and set pagermessage content with \"/\" when media query css has been applied.\n */\n if (((this.element.offsetWidth < 769) && window.getComputedStyle(this.element.querySelector('.e-mfirst')).getPropertyValue('display') !== 'none') && this.pageSizes) {\n this.element.querySelector('.e-pagesizes').classList.remove('e-hide');\n this.element.querySelector('.e-parentmsgbar').classList.remove('e-hide');\n this.element.classList.add('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.element.offsetWidth < 481 ? (this.currentPage + ' / ' + this.totalPages) : this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n else {\n this.element.classList.remove('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n }\n };\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"cssClass\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\nexport { Pager };\n","import { createElement, remove } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n *\n * @returns {void}\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '-1' } });\n this.pagerCons = createElement('span', {\n className: 'e-constant', innerHTML: this.pagerModule.getLocalizedLabel('pagerDropDown')\n });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n placeholder: this.pagerModule.getLocalizedLabel('pagerDropDown'),\n cssClass: this.pagerModule.cssClass ? 'e-alldrop' + ' ' + this.pagerModule.cssClass : 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n *\n * @param {ChangeEventArgs} e - specifies the changeeventargs\n * @returns {void}\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.pagerModule.isAllPage = true;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n this.pagerModule.isAllPage = false;\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n if (!this.pagerModule.isCancel) {\n this.pagerModule.trigger('dropDownChanged', {\n pageSize: this.pagerModule.isAllPage ||\n (this.pagerModule.isAllPage === undefined && this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) ?\n this.pagerModule.totalRecordsCount : parseInt(this.dropDownListObject.value, 10)\n });\n }\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.isPageSizeAll(this.pagerModule.pageSize)) {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n this.pagerCons.parentElement.classList.add('e-page-all');\n }\n else {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerDropDown');\n this.pagerCons.parentElement.classList.remove('e-page-all');\n }\n this.pagerDropDownDiv.classList.remove('e-hide');\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[parseInt(i.toString(), 10)] = parseInt(item[parseInt(i.toString(), 10)], 10) ?\n item[parseInt(i.toString(), 10)].toString() : (this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) : item[parseInt(i.toString(), 10)];\n }\n return item;\n };\n PagerDropDown.prototype.isPageSizeAll = function (value) {\n var pageSizeNum = typeof (value) === 'string' && value !== this.pagerModule.getLocalizedLabel('All') ?\n parseInt(value, 10) : value;\n if (pageSizeNum === this.pagerModule.totalRecordsCount || value === this.pagerModule.getLocalizedLabel('All')) {\n return true;\n }\n else {\n return false;\n }\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n var isbeforeAll = this.pagerModule.isAllPage;\n this.pagerModule.isAllPage = this.isPageSizeAll(value);\n this.pagerModule.checkAll = (isbeforeAll && this.pagerModule.isAllPage) ? true : false;\n this.dropDownListObject[\"\" + prop] = this.pagerModule.isAllPage ? this.pagerModule.getLocalizedLabel('All') : value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': this.pagerModule.getLocalizedLabel('ExternalMsg') } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n *\n * @returns {void}s\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n if (this.element && this.element.parentElement) {\n remove(this.element);\n }\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent, addRemoveEventListener, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n /** @hidden */\n this.isCancel = false;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n pagerObj.cssClass = this.parent.cssClass ? this.parent.cssClass : '';\n this.pagerObj = new Pager(pagerObj, undefined, this.parent);\n this.pagerObj.hasParent = true;\n this.pagerObj.on(events.pagerRefresh, this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.getContentTable().id + ' ' + (i + 1));\n }\n else {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table' + ' ' + (i + 1));\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[parseInt(i.toString(), 10)]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList.length; j++) {\n var element = this.element.querySelector(classList[parseInt(j.toString(), 10)]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id + classList[parseInt(j.toString(), 10)].replace('.e-', ' '));\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @param {number} pageSize - specifies the page size\n * @returns {void}\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n *\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n if (this.pagerObj.isAllPage) {\n this.parent.pageSettings.pageSize = this.parent.pageSettings.totalRecordsCount;\n }\n if ((e.action === 'add' && e.requestType === 'save') || (e.requestType === 'batchsave')) {\n if (this.pagerObj.isAllPage && (e.count === this.pageSettings.pageSize)) {\n this.pagerObj.setProperties({ pageSize: e.count }, true);\n }\n }\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[\"\" + prop] = newProp[\"\" + prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving && !this.isCancel) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.setProperties({ pageSize: e.oldProp.pageSize }, true);\n this.parent.setProperties({ pageSettings: { pageSize: e.oldProp.pageSize } }, true);\n this.pagerObj.setProperties({\n currentPage: gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage\n }, true);\n }\n else if (e.currentPage) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, pageSize: gObj.pageSettings.pageSize, type: events.actionBegin\n };\n if (!this.isCancel) {\n this.pageSettings.currentPage = e.currentPage;\n this.parent.notify(events.modelChanged, args);\n }\n if (args.cancel) {\n e.cancel = true;\n this.parent.setProperties({ pageSettings: { currentPage: prevPage } }, true);\n this.pagerObj.setProperties({ currentPage: prevPage }, true);\n this.isCancel = true;\n return;\n }\n this.isCancel = false;\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.addEventListener(literals.create, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: events.initialLoad, handler: this.handlers.load },\n { event: events.initialEnd, handler: this.handlers.end },\n { event: events.dataReady, handler: this.handlers.ready },\n { event: events.pageComplete, handler: this.handlers.complete },\n { event: events.uiUpdate, handler: this.handlers.updateLayout },\n { event: events.inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: events.keyPressed, handler: this.handlers.keyPress },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return (this.parent.isReact || this.parent.isVue) && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n var result = void 0;\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n if (this.parent.isReact) {\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n else {\n result = this.pagerObj.templateFn(data, this.parent, 'pagerTemplate');\n appendChildren(this.pagerObj.element, result);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.removeEventListener(literals.create, this.handlers.created);\n }\n this.parent.off(events.pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","import { Draggable, Droppable, EventHandler } from '@syncfusion/ej2-base';\nimport { createElement, closest, remove, classList, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { parentsUntil, isActionPrevent, isGroupAdaptive, updatecloneRow, getComplexFieldID, getParsedFieldID, isComplexField, findCellIndex, resetRowIndex } from '../base/util';\nimport { resetCachedRowIndex, groupReorderRowObject } from '../base/util';\nimport { generateExpandPredicates, getPredicates, capitalizeFirstLetter } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\nimport { RowRenderer } from '../renderer/row-renderer';\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * The `Group` module is used to handle group action.\n */\nvar Group = /** @class */ (function () {\n /**\n * Constructor for Grid group module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {GroupSettingsModel} groupSettings - specifies the GroupSettingsModel\n * @param {string[]} sortedColumns - specifies the sortedColumns\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Group(parent, groupSettings, sortedColumns, serviceLocator) {\n var _this = this;\n //Internal variables\n this.sortRequired = true;\n /** @hidden */\n this.groupSortFocus = false;\n /** @hidden */\n this.groupTextFocus = false;\n /** @hidden */\n this.groupCancelFocus = false;\n this.isAppliedGroup = false;\n this.isAppliedUnGroup = false;\n this.isAppliedCaptionRowBorder = false;\n this.reorderingColumns = [];\n this.visualElement = createElement('div', {\n className: 'e-cloneproperties e-dragclone e-gdclone',\n styles: 'line-height:23px', attrs: { action: 'grouping' }\n });\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = e.sender.target;\n var element = target.classList.contains('e-groupheadercell') ? target :\n parentsUntil(target, 'e-groupheadercell');\n if (!element || (!target.classList.contains('e-drag') && _this.groupSettings.allowReordering)) {\n return false;\n }\n _this.column = gObj.getColumnByField(element.firstElementChild.getAttribute('ej-mappingname'));\n _this.visualElement.textContent = element.textContent;\n _this.visualElement.style.width = element.offsetWidth + 2 + 'px';\n _this.visualElement.style.height = element.offsetHeight + 2 + 'px';\n _this.visualElement.setAttribute('e-mappinguid', _this.column.uid);\n gObj.element.appendChild(_this.visualElement);\n return _this.visualElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.dragStart = function (e) {\n _this.parent.element.classList.add('e-ungroupdrag');\n };\n this.drag = function (e) {\n if (_this.groupSettings.allowReordering) {\n _this.animateDropper(e);\n }\n var target = e.target;\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n _this.parent.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: _this.column });\n if (!_this.groupSettings.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!(parentsUntil(target, literals.gridContent) || parentsUntil(target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n };\n this.dragStop = function (e) {\n _this.parent.element.classList.remove('e-ungroupdrag');\n var preventDrop = !(parentsUntil(e.target, literals.gridContent) || parentsUntil(e.target, 'e-gridheader'));\n if (_this.groupSettings.allowReordering && preventDrop) {\n remove(e.helper);\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n _this.rearrangeGroup();\n }\n else if (!(parentsUntil(e.target, 'e-grid'))) {\n var field = _this.parent.getColumnByUid(e.helper.getAttribute('e-mappinguid')).field;\n if (_this.groupSettings.columns.indexOf(field) !== -1) {\n _this.ungroupColumn(field);\n }\n }\n return;\n }\n else if (preventDrop) {\n remove(e.helper);\n return;\n }\n };\n this.animateDropper = function (e) {\n var uid = _this.parent.element.querySelector('.e-cloneproperties').getAttribute('e-mappinguid');\n var dragField = _this.parent.getColumnByUid(uid).field;\n var parent = parentsUntil(e.target, 'e-groupdroparea');\n var dropTarget = parentsUntil(e.target, 'e-group-animator');\n var grouped = [].slice.call(_this.element.getElementsByClassName('e-groupheadercell'))\n .map(function (e) { return e.querySelector('div').getAttribute('ej-mappingname'); });\n var cols = JSON.parse(JSON.stringify(grouped));\n if (dropTarget || parent) {\n if (dropTarget) {\n var dropField = dropTarget.querySelector('div[ej-mappingname]').getAttribute('ej-mappingname');\n var dropIndex = +(dropTarget.getAttribute('index'));\n if (dropField !== dragField) {\n var dragIndex = cols.indexOf(dragField);\n if (dragIndex !== -1) {\n cols.splice(dragIndex, 1);\n }\n var flag = dropIndex !== -1 && dragIndex === dropIndex;\n cols.splice(dropIndex + (flag ? 1 : 0), 0, dragField);\n }\n }\n else if (parent && cols.indexOf(dragField) === -1) {\n cols.push(dragField);\n }\n _this.element.innerHTML = '';\n if (cols.length && !_this.element.classList.contains('e-grouped')) {\n _this.element.classList.add('e-grouped');\n }\n _this.reorderingColumns = cols;\n for (var c = 0; c < cols.length; c++) {\n _this.addColToGroupDrop(cols[parseInt(c.toString(), 10)]);\n }\n }\n else {\n _this.addLabel();\n _this.removeColFromGroupDrop(dragField);\n }\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n _this.element.classList.remove('e-hover');\n remove(e.droppedElement);\n _this.aria.setDropTarget(_this.parent.element.querySelector('.e-groupdroparea'), false);\n _this.aria.setGrabbed(_this.parent.getHeaderTable().querySelector('[aria-grabbed=true]'), false);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n _this.parent.log('action_disabled_column', { moduleName: _this.getModuleName(), columnName: column ? column.headerText : undefined });\n return;\n }\n _this.groupColumn(column.field);\n };\n this.contentRefresh = true;\n this.aria = new AriaService();\n this.parent = parent;\n this.groupSettings = groupSettings;\n this.serviceLocator = serviceLocator;\n this.sortedColumns = sortedColumns;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n this.groupGenerator = new GroupModelGenerator(this.parent);\n }\n Group.prototype.addLabel = function () {\n if (!this.element.getElementsByClassName('e-group-animator').length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n };\n Group.prototype.rearrangeGroup = function () {\n this.sortRequired = false;\n this.updateModel();\n };\n Group.prototype.columnDrag = function (e) {\n if (this.groupSettings.allowReordering && e.column.allowGrouping) {\n this.animateDropper(e);\n }\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n if (!this.parent.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n }\n if (!(e.column.allowGrouping && (parentsUntil(e.target, 'e-groupdroparea') ||\n (parentsUntil(e.target, 'e-headercell') &&\n parentsUntil(e.target, 'e-headercell').isEqualNode(this.parent.getColumnHeaderByField(e.column.field))))) &&\n !(this.parent.allowReordering && parentsUntil(e.target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n if (e.target.classList.contains('e-groupdroparea')) {\n this.element.classList.add('e-hover');\n }\n else {\n this.element.classList.remove('e-hover');\n }\n };\n Group.prototype.columnDragStart = function (e) {\n if (e.target.classList.contains('e-stackedheadercell')) {\n return;\n }\n var dropArea = this.parent.element.querySelector('.e-groupdroparea');\n this.aria.setDropTarget(dropArea, e.column.allowGrouping);\n var element = e.target.classList.contains('e-headercell') ? e.target : parentsUntil(e.target, 'e-headercell');\n this.aria.setGrabbed(element, true, !e.column.allowGrouping);\n };\n Group.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') === 'grouping') {\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n return;\n }\n this.ungroupColumn(column.field);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Group.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.groupComplete, this.onActionComplete, this);\n this.parent.on(events.ungroupComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.columnDrag, this.columnDrag, this);\n this.parent.on(events.columnDragStart, this.columnDragStart, this);\n this.parent.on(events.headerDrop, this.columnDrop, this);\n this.parent.on(events.columnDrop, this.columnDrop, this);\n this.parent.on(events.headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(events.sortComplete, this.refreshSortIcons, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.groupAggregates, this.onGroupAggregates, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on('group-expand-collapse', this.updateExpand, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Group.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.groupComplete, this.onActionComplete);\n this.parent.off(events.ungroupComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.columnDrag, this.columnDrag);\n this.parent.off(events.columnDragStart, this.columnDragStart);\n this.parent.off(events.columnDrop, this.columnDrop);\n this.parent.off(events.headerDrop, this.columnDrop);\n this.parent.off(events.headerRefreshed, this.refreshSortIcons);\n this.parent.off(events.sortComplete, this.refreshSortIcons);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.groupAggregates, this.onGroupAggregates);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off('group-expand-collapse', this.updateExpand);\n };\n Group.prototype.initialEnd = function () {\n var gObj = this.parent;\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.onEmpty, this.initialEnd);\n if (this.parent.getColumns().length && this.groupSettings.columns.length) {\n this.contentRefresh = false;\n for (var _i = 0, _a = gObj.groupSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.groupColumn(col);\n }\n this.contentRefresh = true;\n }\n };\n Group.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.target && parentsUntil(e.target, 'e-groupheadercell') && (e.action === 'tab' || e.action === 'shiftTab')) {\n var focusableGroupedItems = this.getFocusableGroupedItems();\n if ((e.action === 'tab' && e.target === focusableGroupedItems[focusableGroupedItems.length - 1])\n || (e.action === 'shiftTab' && e.target === focusableGroupedItems[0])) {\n return;\n }\n for (var i = 0; i < focusableGroupedItems.length; i++) {\n if (e.target === focusableGroupedItems[parseInt(i.toString(), 10)]) {\n e.preventDefault();\n var index = e.action === 'tab' ? i + 1 : i - 1;\n focusableGroupedItems[parseInt(index.toString(), 10)].focus();\n return;\n }\n }\n }\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'downArrow') {\n e.action = 'ctrlDownArrow';\n }\n else if (e.action === 'upArrow') {\n e.action = 'ctrlUpArrow';\n }\n }\n if (e.action !== 'ctrlSpace' && (!this.groupSettings.columns.length ||\n ['altDownArrow', 'altUpArrow', 'ctrlDownArrow', 'ctrlUpArrow', 'enter'].indexOf(e.action) === -1)) {\n return;\n }\n switch (e.action) {\n case 'altDownArrow':\n case 'altUpArrow':\n // eslint-disable-next-line no-case-declarations\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n e.preventDefault();\n var rows = gObj.getContentTable().querySelector(literals.tbody).children;\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var grpRow = void 0;\n for (var i = dataRow.rowIndex; i >= 0; i--) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains(literals.row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-detailrow')) {\n grpRow = rows[parseInt(i.toString(), 10)];\n break;\n }\n }\n this.expandCollapseRows(grpRow.querySelector(e.action === 'altUpArrow' ?\n '.e-recordplusexpand' : '.e-recordpluscollapse'));\n }\n break;\n case 'ctrlDownArrow':\n e.preventDefault();\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n e.preventDefault();\n this.collapseAll();\n break;\n case 'enter':\n if (e.target.classList.contains('e-groupsort')) {\n this.groupSortFocus = true;\n e.preventDefault();\n this.applySortFromTarget(e.target);\n break;\n }\n else if (e.target.classList.contains('e-ungroupbutton')) {\n this.groupCancelFocus = true;\n e.preventDefault();\n this.unGroupFromTarget(e.target);\n break;\n }\n if (this.parent.isEdit || (closest(e.target, '#' + this.parent.element.id + '_searchbar') !== null) ||\n parentsUntil(e.target, 'e-pager') || parentsUntil(e.target, 'e-toolbar')) {\n return;\n }\n // eslint-disable-next-line no-case-declarations\n var element = this.focus.getFocusedElement();\n if (element && (element.classList.contains('e-icon-grightarrow') || element.classList.contains('e-icon-gdownarrow'))) {\n element = element.parentElement;\n }\n // eslint-disable-next-line no-case-declarations\n var row = element ? element.parentElement.querySelector('[class^=\"e-record\"]') : null;\n if (!row) {\n break;\n }\n if (element.children.length && (element.children[0].classList.contains('e-icon-grightarrow') ||\n element.children[0].classList.contains('e-icon-gdownarrow'))) {\n e.preventDefault();\n this.expandCollapseRows(row);\n }\n break;\n case 'ctrlSpace':\n // eslint-disable-next-line no-case-declarations\n var elem = gObj.focusModule.currentInfo.element;\n if (elem && elem.classList.contains('e-headercell')) {\n e.preventDefault();\n var column = gObj.getColumnByUid(elem.firstElementChild.getAttribute('e-mappinguid'));\n if (column.field && gObj.groupSettings.columns.indexOf(column.field) < 0) {\n this.groupColumn(column.field);\n }\n else {\n this.ungroupColumn(column.field);\n }\n }\n break;\n }\n };\n /**\n * @returns {Element[]} - Return the focusable grouping items\n * @hidden */\n Group.prototype.getFocusableGroupedItems = function () {\n var focusableGroupedItems = [];\n if (this.groupSettings.columns.length) {\n var focusableGroupedHeaderItems = this.element.querySelectorAll('.e-groupheadercell');\n for (var i = 0; i < focusableGroupedHeaderItems.length; i++) {\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-grouptext'));\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-groupsort'));\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-ungroupbutton'));\n }\n }\n return focusableGroupedItems;\n };\n Group.prototype.wireEvent = function () {\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n EventHandler.add(this.parent.element, 'auxclick', this.auxilaryclickHandler, this);\n };\n Group.prototype.unWireEvent = function () {\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n EventHandler.remove(this.parent.element, 'auxclick', this.auxilaryclickHandler);\n };\n Group.prototype.onFocusIn = function (e) {\n if (this.parent.focusModule.currentInfo && this.parent.focusModule.currentInfo.element) {\n removeClass([this.parent.focusModule.currentInfo.element, this.parent.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.parent.focusModule.currentInfo.element.tabIndex = -1;\n }\n this.addOrRemoveFocus(e);\n };\n Group.prototype.onFocusOut = function (e) {\n this.addOrRemoveFocus(e);\n };\n Group.prototype.addOrRemoveFocus = function (e) {\n if (e.target.classList.contains('e-groupdroparea') || e.target.classList.contains('e-grouptext')\n || e.target.classList.contains('e-groupsort')\n || e.target.classList.contains('e-ungroupbutton')) {\n var target = e.target.classList.contains('e-grouptext') ?\n e.target.parentElement.parentElement : e.target;\n if (e.type === 'focusin') {\n this.parent.focusModule.currentInfo.element = e.target;\n this.parent.focusModule.currentInfo.elementToFocus = e.target;\n addClass([target], ['e-focused', 'e-focus']);\n e.target.tabIndex = 0;\n }\n else {\n removeClass([target], ['e-focused', 'e-focus']);\n e.target.tabIndex = -1;\n }\n }\n };\n Group.prototype.clickHandler = function (e) {\n if (e.target.classList.contains('e-grouptext')) {\n this.groupTextFocus = true;\n }\n if (e.target.classList.contains('e-groupsort')) {\n this.groupSortFocus = true;\n }\n if (e.target.classList.contains('e-ungroupbutton')) {\n this.groupCancelFocus = true;\n }\n if (e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow')) {\n e.preventDefault();\n }\n var trgtEle = parentsUntil(e.target, 'e-recordplusexpand') ||\n parentsUntil(e.target, 'e-recordpluscollapse');\n if (trgtEle && (trgtEle.children[0].classList.contains('e-icon-gdownarrow') || trgtEle.children[0].classList.contains('e-icon-grightarrow'))) {\n this.expandCollapseRows(e.target);\n }\n this.applySortFromTarget(e.target);\n this.unGroupFromTarget(e.target);\n this.toogleGroupFromHeader(e.target);\n };\n Group.prototype.auxilaryclickHandler = function (e) {\n if (e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow')\n && (e.button === 1)) {\n e.preventDefault();\n }\n };\n Group.prototype.unGroupFromTarget = function (target) {\n if (target.classList.contains('e-ungroupbutton')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n };\n Group.prototype.toogleGroupFromHeader = function (target) {\n if (this.groupSettings.showToggleButton) {\n if (target.classList.contains('e-grptogglebtn')) {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n else {\n this.groupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n }\n else {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n }\n }\n };\n Group.prototype.applySortFromTarget = function (target) {\n var gObj = this.parent;\n var gHeader = closest(target, '.e-groupheadercell');\n if (gObj.allowSorting && gHeader && !target.classList.contains('e-ungroupbutton') &&\n !target.classList.contains('e-toggleungroup')) {\n var field = gHeader.firstElementChild.getAttribute('ej-mappingname');\n if (gObj.getColumnHeaderByField(field).getElementsByClassName('e-ascending').length) {\n gObj.sortColumn(field, 'Descending', true);\n }\n else {\n gObj.sortColumn(field, 'Ascending', true);\n }\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n Group.prototype.expandCollapseRows = function (target) {\n var trgt = parentsUntil(target, 'e-recordplusexpand') ||\n parentsUntil(target, 'e-recordpluscollapse');\n if (trgt) {\n var rowNodes = [].slice.call(this.parent.getContentTable().querySelector(literals.tbody).children);\n if (this.parent.editSettings.showAddNewRow) {\n if (rowNodes[0].classList.contains('e-addedrow')) {\n rowNodes.shift();\n }\n else if (rowNodes[rowNodes.length - 1].classList.contains('e-addedrow')) {\n rowNodes.pop();\n }\n }\n var isHide = void 0;\n var dataManager = void 0;\n var query = void 0;\n var gObj = this.parent;\n var indent = trgt.parentElement.getElementsByClassName('e-indentcell').length;\n var uid = trgt.parentElement.getAttribute('data-uid');\n var captionRow = gObj.getRowObjectFromUID(uid);\n var expand = false;\n if (trgt.classList.contains('e-recordpluscollapse')) {\n addClass([trgt], 'e-recordplusexpand');\n removeClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n trgt.firstElementChild.setAttribute('title', 'expanded');\n expand = true;\n captionRow.isExpand = true;\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, expand, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n if ((this.parent.filterSettings.columns.length || this.parent.sortSettings.columns.length ||\n this.parent.searchSettings.key.length) && this.parent.getContent().firstElementChild.scrollTop === 0) {\n this.parent.contentModule.isTop = true;\n }\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).captionExpand(trgt.parentElement);\n }\n }\n else {\n isHide = true;\n captionRow.isExpand = false;\n removeClass([trgt], 'e-recordplusexpand');\n addClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n trgt.firstElementChild.setAttribute('title', 'collapsed');\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, !isHide, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).captionCollapse(trgt.parentElement);\n }\n }\n this.aria.setExpand(trgt, expand);\n if (!isGroupAdaptive(gObj) && !this.parent.groupSettings.enableLazyLoading) {\n var rowObjs = gObj.getRowsObject();\n var startIdx = rowObjs.indexOf(captionRow);\n var rowsState = {};\n var cacheStartIdx = gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings &&\n gObj.infiniteScrollSettings.enableCache && rowObjs.length !== rowNodes.length ?\n Array.from(rowNodes).indexOf(trgt.parentElement) : undefined;\n for (var i = startIdx; i < rowObjs.length; i++) {\n if (i > startIdx && rowObjs[parseInt(i.toString(), 10)].indent === indent) {\n break;\n }\n if (rowObjs[parseInt(i.toString(), 10)].isDetailRow) {\n var visible = rowObjs[i - 1].isExpand && rowObjs[i - 1].visible;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = visible ? '' : 'none';\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = visible ? '' : 'none';\n }\n }\n else if (rowsState[rowObjs[parseInt(i.toString(), 10)].parentUid] === false) {\n rowObjs[parseInt(i.toString(), 10)].visible = false;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = 'none';\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = 'none';\n }\n }\n else {\n if (!(rowObjs[parseInt(i.toString(), 10)].isDataRow || rowObjs[parseInt(i.toString(), 10)].isCaptionRow\n || rowObjs[parseInt(i.toString(), 10)].isDetailRow || rowObjs[parseInt(i.toString(), 10)].isAggregateRow)) {\n var visible = rowObjs[parseInt(i.toString(), 10)].cells\n .some(function (cell) { return cell.isDataCell && cell.visible; });\n if (visible === rowObjs[parseInt(i.toString(), 10)].visible) {\n continue;\n }\n }\n rowObjs[parseInt(i.toString(), 10)].visible = true;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = '';\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].classList.remove('e-hide');\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = '';\n rowNodes[parseInt(i.toString(), 10)].classList.remove('e-hide');\n }\n }\n if (rowObjs[parseInt(i.toString(), 10)].isCaptionRow) {\n rowsState[rowObjs[parseInt(i.toString(), 10)].uid] = rowObjs[parseInt(i.toString(), 10)].isExpand\n && rowObjs[parseInt(i.toString(), 10)].visible;\n }\n if (!isNullOrUndefined(cacheStartIdx)) {\n cacheStartIdx++;\n }\n }\n this.lastCaptionRowBorder();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n if (!this.parent.enableInfiniteScrolling || !this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.captionActionComplete, { isCollapse: isHide, parentUid: uid });\n }\n }\n };\n /**\n * The function is used to set border in last row\n *\n * @returns { void }\n * @hidden\n */\n Group.prototype.lastCaptionRowBorder = function () {\n var table = this.parent.getContentTable();\n var clientHeight = this.parent.getContent().clientHeight;\n if ((!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) ||\n this.parent.groupSettings.enableLazyLoading) {\n if (table.scrollHeight < clientHeight || this.isAppliedCaptionRowBorder) {\n if (this.isAppliedCaptionRowBorder || table.querySelector('.e-lastrowcell')) {\n var borderCells = table.querySelectorAll('.e-lastrowcell');\n for (var i = 0, len = borderCells.length; i < len; i++) {\n removeClass([borderCells[parseInt(i.toString(), 10)]], 'e-lastrowcell');\n }\n this.isAppliedCaptionRowBorder = false;\n }\n var rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var lastRow = rowNodes[rowNodes.length - 1];\n if (lastRow.style.display !== 'none' && !lastRow.classList.contains('e-groupcaptionrow')) {\n if (table.scrollHeight < clientHeight) {\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n this.isAppliedCaptionRowBorder = true;\n }\n }\n else {\n for (var i = rowNodes.length - 1, len = 0; i > len; i--) {\n if (rowNodes[parseInt(i.toString(), 10)].style.display !== 'none'\n && rowNodes[parseInt(i.toString(), 10)].classList.contains('e-groupcaptionrow')) {\n if (rowNodes[parseInt(i.toString(), 10)].querySelector('.e-recordpluscollapse')) {\n addClass(rowNodes[parseInt(i.toString(), 10)].childNodes, 'e-lastrowcell');\n this.isAppliedCaptionRowBorder = true;\n break;\n }\n }\n }\n }\n }\n }\n };\n Group.prototype.updateVirtualRows = function (gObj, target, isExpand, query, dataManager) {\n var rObj = gObj.getRowObjectFromUID(target.closest('tr').getAttribute('data-uid'));\n rObj.isExpand = isExpand;\n updatecloneRow(gObj);\n this.parent.notify(events.refreshVirtualMaxPage, {});\n query = gObj.getDataModule().generateQuery(false);\n query.queries = gObj.getDataModule().aggregateQuery(gObj.getQuery().clone()).queries;\n var args = { requestType: 'virtualscroll', rowObject: rObj };\n if (gObj.contentModule) {\n args.virtualInfo = gObj.contentModule.prevInfo;\n }\n dataManager = gObj.getDataModule().getData(args, query.requiresCount());\n dataManager.then(function (e) { return gObj.renderModule.dataManagerSuccess(e, args); });\n };\n Group.prototype.expandCollapse = function (isExpand) {\n if (!this.parent.groupSettings.columns.length) {\n return;\n }\n if (!isExpand) {\n this.parent.notify(events.initialCollapse, isExpand);\n }\n var rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var rowObjs = this.parent.getRowsObject();\n var row;\n for (var i = 0, len = rowNodes.length; i < len; i++) {\n if (rowNodes[parseInt(i.toString(), 10)].querySelectorAll('.e-recordplusexpand, .e-recordpluscollapse').length) {\n row = rowNodes[parseInt(i.toString(), 10)].querySelector(isExpand ? '.e-recordpluscollapse' : '.e-recordplusexpand');\n if (row) {\n if (isExpand) {\n row.className = 'e-recordplusexpand';\n row.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n row.setAttribute('aria-expanded', 'true');\n row.firstElementChild.setAttribute('title', 'expanded');\n }\n else {\n row.className = 'e-recordpluscollapse';\n row.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n row.setAttribute('aria-expanded', 'false');\n row.firstElementChild.setAttribute('title', 'collapsed');\n }\n }\n if (!(rowNodes[parseInt(i.toString(), 10)].firstElementChild.classList.contains('e-recordplusexpand') ||\n rowNodes[parseInt(i.toString(), 10)].firstElementChild.classList.contains('e-recordpluscollapse'))) {\n rowNodes[parseInt(i.toString(), 10)].style.display = isExpand ? '' : 'none';\n }\n }\n else {\n rowNodes[parseInt(i.toString(), 10)].style.display = isExpand ? '' : 'none';\n }\n if (rowObjs[parseInt(i.toString(), 10)].isCaptionRow) {\n rowObjs[parseInt(i.toString(), 10)].isExpand = isExpand ? true : false;\n }\n }\n this.parent.updateVisibleExpandCollapseRows();\n this.lastCaptionRowBorder();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.expandAll = function () {\n this.expandCollapse(true);\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.collapseAll = function () {\n this.expandCollapse(false);\n };\n /**\n * The function is used to render grouping\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderGroupDropArea();\n this.initDragAndDrop();\n this.refreshToggleBtn();\n this.wireEvent();\n };\n Group.prototype.renderGroupDropArea = function () {\n var groupElem = this.parent.element.querySelector('.e-groupdroparea');\n if (groupElem) {\n remove(groupElem);\n }\n this.element = this.parent.createElement('div', { className: 'e-groupdroparea', attrs: { 'tabindex': '-1' } });\n if (this.groupSettings.allowReordering) {\n this.element.classList.add('e-group-animate');\n }\n this.updateGroupDropArea();\n this.parent.element.insertBefore(this.element, this.parent.element.firstChild);\n if (!this.groupSettings.showDropArea || this.parent.rowRenderingMode === 'Vertical') {\n this.element.style.display = 'none';\n }\n };\n Group.prototype.updateGroupDropArea = function (clear) {\n if (this.groupSettings.showDropArea && !this.groupSettings.columns.length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n else {\n if ((this.element.innerHTML === this.l10n.getConstant('GroupDropArea') && (this.groupSettings.columns.length === 1\n || !this.isAppliedGroup && !this.isAppliedUnGroup)) || clear) {\n this.element.innerHTML = '';\n }\n this.element.classList.add('e-grouped');\n }\n };\n Group.prototype.initDragAndDrop = function () {\n this.initializeGHeaderDrop();\n this.initializeGHeaderDrag();\n };\n Group.prototype.initializeGHeaderDrag = function () {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drag = new Draggable(this.element, {\n dragTarget: this.groupSettings.allowReordering ? '.e-drag' : '.e-groupheadercell',\n distance: this.groupSettings.allowReordering ? -10 : 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop\n });\n };\n Group.prototype.initializeGHeaderDrop = function () {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drop = new Droppable(this.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n * @returns {void}\n */\n Group.prototype.groupColumn = function (columnName) {\n var gObj = this.parent;\n var column = gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n (this.contentRefresh && this.groupSettings.columns.indexOf(columnName) > -1)) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.groupColumn, arg1: columnName });\n return;\n }\n column.visible = gObj.groupSettings.showGroupedColumn;\n this.colName = columnName;\n this.isAppliedGroup = true;\n if (this.contentRefresh) {\n this.updateModel();\n }\n else {\n this.addColToGroupDrop(columnName);\n }\n this.updateGroupDropArea();\n this.isAppliedGroup = false;\n };\n /**\n * Ungroups a column by column name.\n *\n * @param {string} columnName - Defines the column name to ungroup.\n * @returns {void}\n */\n Group.prototype.ungroupColumn = function (columnName) {\n var gObj = this.parent;\n var column = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (c) { return c.field === columnName; })[0] : gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false || this.groupSettings.columns.indexOf(columnName) < 0) {\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.ungroupColumn, arg1: columnName });\n return;\n }\n column.visible = true;\n this.colName = column.field;\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns.splice(columns.indexOf(this.colName), 1);\n if (this.sortedColumns.indexOf(columnName) < 0) {\n for (var i = 0, len = gObj.sortSettings.columns.length; i < len; i++) {\n if (columnName === gObj.sortSettings.columns[parseInt(i.toString(), 10)].field) {\n gObj.sortSettings.columns.splice(i, 1);\n break;\n }\n }\n }\n if (this.groupSettings.allowReordering) {\n this.reorderingColumns = columns;\n }\n this.groupSettings.columns = columns;\n if (gObj.allowGrouping) {\n this.isAppliedUnGroup = true;\n this.parent.dataBind();\n }\n };\n /**\n * The function used to update groupSettings\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.updateModel = function () {\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns = this.reorderingColumns.length ? JSON.parse(JSON.stringify(this.reorderingColumns)) : columns;\n if (this.sortRequired) {\n if (columns.indexOf(this.colName) === -1) {\n columns.push(this.colName);\n }\n this.groupAddSortingQuery(this.colName);\n }\n this.sortRequired = true;\n this.parent.groupSettings.columns = columns;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Group.prototype.onActionComplete = function (e) {\n if (e.requestType === 'grouping') {\n this.addColToGroupDrop(this.colName);\n }\n else {\n this.removeColFromGroupDrop(this.colName);\n }\n var args = this.groupSettings.columns.indexOf(this.colName) > -1 ? {\n columnName: this.colName, requestType: 'grouping', type: events.actionComplete\n } : { requestType: 'ungrouping', type: events.actionComplete };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.colName = null;\n };\n Group.prototype.groupAddSortingQuery = function (colName) {\n var i = 0;\n while (i < this.parent.sortSettings.columns.length) {\n if (this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field === colName) {\n break;\n }\n i++;\n }\n if (this.parent.sortSettings.columns.length === i) {\n this.parent.sortSettings.columns.push({ field: colName, direction: 'Ascending', isFromGroup: true });\n }\n else if (!this.parent.allowSorting) {\n this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction = 'Ascending';\n }\n };\n Group.prototype.createElement = function (field) {\n var gObj = this.parent;\n var direction = 'Ascending';\n var animator = this.parent.createElement('div', { className: 'e-grid-icon e-group-animator' });\n var groupedColumn = this.parent.createElement('div', { className: 'e-grid-icon e-groupheadercell' });\n var childDiv = this.parent.createElement('div', { attrs: { 'ej-mappingname': field } });\n if (isComplexField(field)) {\n childDiv.setAttribute('ej-complexname', getComplexFieldID(field));\n }\n var column = this.parent.getColumnByField(field);\n //Todo headerTemplateID for grouped column, disableHtmlEncode\n var headerCell = gObj.getColumnHeaderByUid(column.uid);\n // if (!isNullOrUndefined(column.headerTemplate)) {\n // if (column.headerTemplate.indexOf('#') !== -1) {\n // childDiv.innerHTML = document.querySelector(column.headerTemplate).innerHTML.trim();\n // } else {\n // childDiv.innerHTML = column.headerTemplate;\n // }\n // childDiv.firstElementChild.classList.add('e-grouptext');\n // } else {\n if (this.groupSettings.allowReordering) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-drag e-icons e-icon-drag', innerHTML: ' ',\n attrs: { title: 'Drag', tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedDrag') }\n }));\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-grouptext', innerHTML: column.headerText,\n attrs: { tabindex: '-1' }\n }));\n // }\n if (this.groupSettings.showToggleButton) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-togglegroupbutton e-icons e-icon-ungroup e-toggleungroup', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('UnGroupAria') }\n }));\n }\n if (headerCell.querySelectorAll('.e-ascending,.e-descending').length) {\n direction = headerCell.querySelector('.e-ascending') ? 'Ascending' : 'Descending';\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-groupsort e-icons ' +\n ('e-' + direction.toLowerCase() + ' e-icon-' + direction.toLowerCase()), innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedSortIcon') + column.headerText, role: 'button' }\n }));\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-ungroupbutton e-icons e-icon-hide', innerHTML: ' ',\n attrs: { title: this.l10n.getConstant('UnGroup'),\n tabindex: '-1', 'aria-label': this.l10n.getConstant('UnGroupIcon') + column.headerText, role: 'button' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n }));\n groupedColumn.appendChild(childDiv);\n if (this.groupSettings.allowReordering) {\n animator.appendChild(groupedColumn);\n animator.appendChild(this.createSeparator());\n groupedColumn = animator;\n }\n return groupedColumn;\n };\n Group.prototype.addColToGroupDrop = function (field) {\n var groupElem = isComplexField(field) ? this.parent.element.querySelector('.e-groupdroparea div[ej-complexname=' +\n getParsedFieldID(getComplexFieldID(field)) + ']') : this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + getParsedFieldID(field) + ']');\n if (this.groupSettings.allowReordering && groupElem) {\n return;\n }\n var column = this.parent.getColumnByField(field);\n if (isNullOrUndefined(column)) {\n return;\n }\n var groupedColumn = this.createElement(field);\n if (this.groupSettings.allowReordering) {\n var index = this.element.getElementsByClassName('e-group-animator').length;\n groupedColumn.setAttribute('index', index.toString());\n }\n this.element.appendChild(groupedColumn);\n var focusModule = this.parent.focusModule;\n focusModule.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (focusModule.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(focusModule.active.matrix.matrix, firstContentCellIndex, true);\n }\n focusModule.active.matrix.current = firstContentCellIndex;\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n else {\n focusModule.focus();\n }\n //Todo: rtl\n };\n Group.prototype.createSeparator = function () {\n return this.parent.createElement('span', {\n className: 'e-nextgroup e-icons e-icon-next', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupSeperator') },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n });\n };\n Group.prototype.refreshToggleBtn = function (isRemove) {\n if (this.groupSettings.showToggleButton) {\n var headers = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-headercelldiv'));\n for (var i = 0, len = headers.length; i < len; i++) {\n if (!((headers[parseInt(i.toString(), 10)].classList.contains('e-emptycell')) || (headers[parseInt(i.toString(), 10)].classList.contains('e-headerchkcelldiv')))) {\n var column = this.parent.getColumnByUid(headers[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (!this.parent.showColumnMenu || (this.parent.showColumnMenu && !column.showColumnMenu)) {\n if (headers[parseInt(i.toString(), 10)].getElementsByClassName('e-grptogglebtn').length) {\n remove(headers[parseInt(i.toString(), 10)].querySelectorAll('.e-grptogglebtn')[0]);\n }\n if (!isRemove) {\n headers[parseInt(i.toString(), 10)].appendChild(this.parent.createElement('span', {\n className: 'e-grptogglebtn e-icons ' + (this.groupSettings.columns.indexOf(column.field) > -1 ?\n 'e-toggleungroup e-icon-ungroup' : 'e-togglegroup e-icon-group'), attrs: { tabindex: '-1',\n 'aria-label': isNullOrUndefined(this.l10n) ? this.parent.localeObj.getConstant('GroupButton')\n : this.l10n.getConstant('GroupButton') }\n }));\n }\n }\n }\n }\n }\n };\n Group.prototype.removeColFromGroupDrop = function (field) {\n if (!isNullOrUndefined(this.getGHeaderCell(field))) {\n var elem = this.getGHeaderCell(field);\n if (this.groupSettings.allowReordering) {\n var parent_1 = parentsUntil(elem, 'e-group-animator');\n remove(parent_1);\n }\n else {\n remove(elem);\n }\n this.updateGroupDropArea();\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n this.isAppliedUnGroup = false;\n };\n Group.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var args = void 0;\n if (this.contentRefresh) {\n if (!this.isAppliedUnGroup) {\n if (!this.isAppliedGroup) {\n this.updateGroupDropArea(true);\n for (var j = 0; j < this.parent.sortSettings.columns.length; j++) {\n if (this.parent.sortSettings.columns[parseInt(j.toString(), 10)].isFromGroup) {\n this.parent.sortSettings.columns.splice(j, 1);\n j--;\n }\n }\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.colName = this.groupSettings.columns[parseInt(i.toString(), 10)];\n var col = this.parent.getColumnByField(this.colName);\n col.visible = this.parent.groupSettings.showGroupedColumn;\n this.groupAddSortingQuery(this.colName);\n if (i < this.groupSettings.columns.length - 1) {\n this.addColToGroupDrop(this.groupSettings.columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n args = {\n columnName: this.colName, requestType: e.properties[\"\" + prop].length ? 'grouping' : 'ungrouping',\n type: events.actionBegin\n };\n }\n else {\n args = { columnName: this.colName, requestType: 'ungrouping', type: events.actionBegin };\n }\n if (!this.groupSettings.showGroupedColumn) {\n var columns = e.oldProperties[\"\" + prop];\n for (var i = 0; i < columns.length; i++) {\n if (e.properties[\"\" + prop].indexOf(columns[parseInt(i.toString(), 10)]) === -1) {\n this.parent.getColumnByField(columns[parseInt(i.toString(), 10)]).visible = true;\n }\n }\n }\n this.parent.notify(events.modelChanged, args);\n }\n break;\n case 'showDropArea':\n this.updateGroupDropArea();\n if (this.groupSettings.showDropArea) {\n this.element.style.display = '';\n this.parent.headerModule.refreshUI();\n }\n else {\n this.element.style.display = 'none';\n }\n if (this.parent.height === '100%') {\n this.parent.scrollModule.refresh();\n }\n break;\n case 'showGroupedColumn':\n this.updateGroupedColumn(this.groupSettings.showGroupedColumn);\n this.parent.notify(events.modelChanged, { requestType: 'refresh' });\n break;\n case 'showUngroupButton':\n this.updateButtonVisibility(this.groupSettings.showUngroupButton, 'e-ungroupbutton');\n break;\n case 'showToggleButton':\n this.updateButtonVisibility(this.groupSettings.showToggleButton, 'e-togglegroupbutton ');\n this.parent.refreshHeader();\n break;\n case 'enableLazyLoading':\n this.parent.freezeRefresh();\n break;\n }\n }\n };\n Group.prototype.updateGroupedColumn = function (isVisible) {\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.parent.getColumnByField(this.groupSettings.columns[parseInt(i.toString(), 10)]).visible = isVisible;\n }\n };\n Group.prototype.updateButtonVisibility = function (isVisible, className) {\n var gHeader = [].slice.call(this.element.getElementsByClassName(className));\n for (var i = 0; i < gHeader.length; i++) {\n gHeader[parseInt(i.toString(), 10)].style.display = isVisible ? '' : 'none';\n }\n };\n Group.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.parent.isDestroyed || !this.parent.allowGrouping) && !this.parent.refreshing) {\n this.clearGrouping();\n }\n this.unWireEvent();\n this.removeEventListener();\n this.refreshToggleBtn(true);\n if (this.element.parentNode) {\n remove(this.element);\n }\n //call ejdrag and drop destroy\n };\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.clearGrouping = function () {\n var cols = JSON.parse(JSON.stringify(this.groupSettings.columns));\n this.contentRefresh = false;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (i === (len - 1)) {\n this.contentRefresh = true;\n }\n this.ungroupColumn(cols[parseInt(i.toString(), 10)]);\n }\n this.contentRefresh = true;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Group.prototype.getModuleName = function () {\n return 'group';\n };\n Group.prototype.refreshSortIcons = function () {\n var gObj = this.parent;\n var header;\n var cols = gObj.sortSettings.columns;\n var gCols = gObj.groupSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n this.refreshToggleBtn();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (!gObj.allowSorting && (this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1 ||\n this.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1)) {\n classList(header.querySelector('.e-sortfilterdiv'), ['e-ascending', 'e-icon-ascending'], []);\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').appendChild(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }));\n }\n }\n else if (this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field) && this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).getElementsByClassName('e-groupsort').length) {\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).querySelector('.e-groupsort'), ['e-ascending', 'e-icon-ascending'], ['e-descending', 'e-icon-descending']);\n }\n else {\n classList(this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).querySelector('.e-groupsort'), ['e-descending', 'e-icon-descending'], ['e-ascending', 'e-icon-ascending']);\n }\n }\n }\n for (var i = 0, len = gCols.length; i < len; i++) {\n if (fieldNames.indexOf(gCols[parseInt(i.toString(), 10)]) === -1) {\n continue;\n }\n gObj.getColumnHeaderByField(gCols[parseInt(i.toString(), 10)]).setAttribute('aria-grouped', 'true');\n }\n };\n Group.prototype.getGHeaderCell = function (field) {\n if (this.element && this.element.querySelector('[ej-mappingname=\"' + field + '\"]')) {\n return this.element.querySelector('[ej-mappingname=\"' + field + '\"]').parentElement;\n }\n return null;\n };\n Group.prototype.onGroupAggregates = function (editedData) {\n if (this.parent.groupSettings.enableLazyLoading) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.updateLazyLoadGroupAggregates(editedData);\n }\n return;\n }\n var aggregates = this.iterateGroupAggregates(editedData);\n var rowData = this.groupGenerator.generateRows(aggregates, {});\n var summaryRows = this.parent.getRowsObject().filter(function (row) { return !row.isDataRow; });\n var updateSummaryRows = rowData.filter(function (data) { return !data.isDataRow; });\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.destroyTemplate(['groupFooterTemplate', 'groupCaptionTemplate', 'footerTemplate']);\n }\n for (var i = 0; i < updateSummaryRows.length; i++) {\n var row = updateSummaryRows[parseInt(i.toString(), 10)];\n var cells = row.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: row.data, dataUid: summaryRows[parseInt(i.toString(), 10)] ? summaryRows[parseInt(i.toString(), 10)].uid : '' };\n this.parent.notify(events.refreshAggregateCell, args);\n }\n };\n Group.prototype.updateLazyLoadGroupAggregates = function (data, remoteResult) {\n var _this = this;\n var groupCaptionTemplates = this.getGroupAggregateTemplates(true);\n var groupFooterTemplates = this.getGroupAggregateTemplates(false);\n if (!groupCaptionTemplates.length && !groupFooterTemplates.length) {\n return;\n }\n var gObj = this.parent;\n var isRemote = gObj.getDataModule().isRemote();\n var updatedData = data[0];\n var editedRow = data.row;\n var groupedCols = gObj.groupSettings.columns;\n var groupLazyLoadRenderer = gObj.contentModule;\n var groupCache = groupLazyLoadRenderer.getGroupCache();\n var currentPageGroupCache = groupCache[gObj.pageSettings.currentPage];\n var result = remoteResult ? remoteResult : [];\n var _loop_1 = function (i) {\n var groupField = groupedCols[parseInt(i.toString(), 10)];\n var groupKey = updatedData[\"\" + groupField];\n var groupCaptionRowObject = this_1.getGroupCaptionRowObject(editedRow, groupedCols.length - i);\n if (isRemote && result.length) {\n if (i !== 0) {\n var prevGroupField = groupedCols[i - 1];\n var prevGroupKey_1 = updatedData[\"\" + prevGroupField];\n result = result.find(function (data) {\n return data.key === prevGroupKey_1;\n }).items;\n }\n this_1.updateLazyLoadGroupAggregatesRow(result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates);\n }\n else {\n var query = gObj.renderModule.data.generateQuery();\n if (i !== 0) {\n var currentLevelCaptionRowObjects = currentPageGroupCache.filter(function (data) {\n return data.isCaptionRow && data.parentUid === groupCaptionRowObject.parentUid;\n });\n var index = currentLevelCaptionRowObjects.indexOf(groupCaptionRowObject);\n var fields = gObj.groupSettings.columns.slice(0, i).reverse();\n var keys = fields.map(function (data) {\n return updatedData[\"\" + data];\n });\n var pred = generateExpandPredicates(fields, keys, groupLazyLoadRenderer);\n var predicateList = getPredicates(pred);\n var lazyLoad = { level: i, skip: index, take: 1, where: predicateList };\n query.lazyLoad.push({ key: 'onDemandGroupInfo', value: lazyLoad });\n }\n gObj.renderModule.data.getData({}, query).then(function (e) {\n if (isRemote) {\n _this.updateLazyLoadGroupAggregates(data, e.result);\n }\n else {\n _this.updateLazyLoadGroupAggregatesRow(e.result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates);\n }\n if (i === groupedCols.length - 1 || isRemote) {\n _this.destroyRefreshGroupCaptionFooterTemplate();\n }\n }).catch(function (e) { return gObj.renderModule.dataManagerFailure(e, { requestType: 'grouping' }); });\n if (isRemote) {\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (var i = 0; i < groupedCols.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n };\n Group.prototype.destroyRefreshGroupCaptionFooterTemplate = function () {\n var gObj = this.parent;\n if (gObj.isAngular || gObj.isReact || gObj.isVue) {\n gObj.destroyTemplate(['groupCaptionTemplate', 'groupFooterTemplate']);\n }\n gObj.refreshGroupCaptionFooterTemplate();\n gObj.removeMaskRow();\n gObj.hideSpinner();\n };\n Group.prototype.updateLazyLoadGroupAggregatesRow = function (result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates) {\n var updatedGroupCaptionData = result.find(function (data) {\n return data.key === groupKey;\n });\n if (groupCaptionTemplates.length) {\n this.updateLazyLoadGroupAggregatesCell(updatedGroupCaptionData, groupCaptionRowObject, groupCaptionTemplates);\n }\n if (groupFooterTemplates.length) {\n var groupFooterRowObject = currentPageGroupCache.find(function (data) {\n return data.isAggregateRow && data.parentUid === groupCaptionRowObject.uid;\n });\n this.updateLazyLoadGroupAggregatesCell(updatedGroupCaptionData, groupFooterRowObject, groupFooterTemplates);\n }\n };\n Group.prototype.updateLazyLoadGroupAggregatesCell = function (updatedGroupCaptionData, captionFooterRowObject, captionFooterTemplates) {\n var prevCaptionFooterData = captionFooterRowObject.data;\n var updatedGroupCaptionDataAggregates = updatedGroupCaptionData.aggregates;\n if (captionFooterRowObject.isCaptionRow) {\n prevCaptionFooterData.aggregates = updatedGroupCaptionDataAggregates;\n }\n for (var i = 0; i < captionFooterTemplates.length; i++) {\n var template = captionFooterTemplates[parseInt(i.toString(), 10)];\n var key = template.field + ' - ' + template.type;\n var fieldData = prevCaptionFooterData[template.field];\n fieldData[\"\" + key] = updatedGroupCaptionDataAggregates[\"\" + key];\n fieldData[capitalizeFirstLetter(template.type)] = updatedGroupCaptionDataAggregates[\"\" + key];\n if (fieldData[template.type]) {\n fieldData[template.type] = updatedGroupCaptionDataAggregates[\"\" + key];\n }\n }\n };\n Group.prototype.getGroupCaptionRowObject = function (element, groupCaptionIndex) {\n var gObj = this.parent;\n var uid = element.getAttribute('data-uid');\n var parentCaptionRowObject = gObj.getRowObjectFromUID(uid);\n for (var i = 0; i < groupCaptionIndex; i++) {\n parentCaptionRowObject = gObj.getRowObjectFromUID(parentCaptionRowObject.parentUid);\n }\n return parentCaptionRowObject;\n };\n /**\n * @param { boolean } groupCaptionTemplate - Defines template either group caption or footer\n * @returns { Object[] } - Returns template array\n * @hidden\n */\n Group.prototype.getGroupAggregateTemplates = function (groupCaptionTemplate) {\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n if ((groupCaptionTemplate && row.columns[parseInt(k.toString(), 10)].groupCaptionTemplate)\n || (!groupCaptionTemplate && row.columns[parseInt(k.toString(), 10)].groupFooterTemplate)) {\n var aggr = {};\n var type = row.columns[parseInt(k.toString(), 10)].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[parseInt(k.toString(), 10)].field };\n aggregates.push(aggr);\n }\n }\n }\n return aggregates;\n };\n /**\n * @param { Row } fromRowObj - Defines group key changed Data row object.\n * @param { Row } toRowObj - Defines group key setting reference Data row object.\n * @returns { void }\n * @hidden\n */\n Group.prototype.groupedRowReorder = function (fromRowObj, toRowObj) {\n var dragRow = this.parent.getRowElementByUID(fromRowObj.uid);\n var dropRow = this.parent.getRowElementByUID(toRowObj.uid);\n var dropArgs = {\n rows: [dragRow], target: dropRow, fromIndex: fromRowObj.index, dropIndex: toRowObj.index\n };\n if (!isNullOrUndefined(fromRowObj) && !isNullOrUndefined(toRowObj) &&\n fromRowObj.parentUid !== toRowObj.parentUid) {\n if (dropRow) {\n if (dropRow['style'].display === 'none') {\n dragRow['style'].display = 'none';\n }\n if (dropArgs.fromIndex > dropArgs.dropIndex) {\n this.parent.getContentTable().querySelector(literals.tbody).insertBefore(dragRow, dropRow);\n }\n else {\n this.parent.getContentTable().querySelector(literals.tbody).insertBefore(dragRow, dropRow.nextSibling);\n }\n }\n else {\n remove(dragRow);\n }\n this.groupReorderHandler(fromRowObj, toRowObj);\n var tr = [].slice.call(this.parent.getContentTable().getElementsByClassName(literals.row));\n groupReorderRowObject(this.parent, dropArgs, tr, toRowObj);\n if (this.parent.enableVirtualization) {\n resetCachedRowIndex(this.parent);\n }\n else {\n resetRowIndex(this.parent, this.parent.getRowsObject().filter(function (data) { return data.isDataRow; }), tr);\n }\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n };\n Group.prototype.groupReorderHandler = function (dragRowObject, dropRowObject) {\n var gObj = this.parent;\n var dragRowObjectData = dragRowObject.data;\n var dropRowObjectData = dropRowObject.data;\n var groupAggregateTemplate = gObj['groupModule'].getGroupAggregateTemplates(false);\n var dropParentRowObject = gObj.getRowObjectFromUID(dropRowObject.parentUid);\n var dragParentRowObject = gObj.getRowObjectFromUID(dragRowObject.parentUid);\n var dropRootParentRowObjects = [dropParentRowObject];\n var dragRootParentRowObjects = [dragParentRowObject];\n var groupColumns = gObj.groupSettings.columns;\n for (var j = 0; j < groupColumns.length; j++) {\n dragRowObjectData[groupColumns[parseInt(j.toString(), 10)]] = dropRowObjectData[groupColumns[parseInt(j.toString(), 10)]];\n if (j > 0) {\n dropRootParentRowObjects.push(gObj.getRowObjectFromUID(dropRootParentRowObjects[j - 1].parentUid));\n dragRootParentRowObjects.push(gObj.getRowObjectFromUID(dragRootParentRowObjects[j - 1].parentUid));\n }\n }\n dragRowObject.parentUid = dropRowObject.parentUid;\n dragRowObject.visible = dropRowObject.visible;\n dragRowObject['parentGid'] = dropRowObject['parentGid'];\n if (dragRowObject.changes !== dragRowObjectData) {\n dragRowObject.changes = dragRowObjectData;\n }\n var updatedCurrentViewData = this.iterateGroupAggregates([{ dragRowObjects: dragRootParentRowObjects,\n dropRowObjects: dropRootParentRowObjects }]);\n var updatedDragCurrentViewData = updatedCurrentViewData.filter(function (object) {\n return (object['key'] === dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key'] ||\n (object['key'] instanceof Date && object['key'].toString() ===\n dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key'].toString()));\n });\n var updatedDropCurrentViewData = updatedCurrentViewData.filter(function (object) {\n return (object['key'] === dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key'] ||\n (object['key'] instanceof Date && object['key'].toString() ===\n dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key'].toString()));\n });\n updatedCurrentViewData = [];\n if (!isNullOrUndefined(updatedDragCurrentViewData[0])) {\n updatedCurrentViewData.push(updatedDragCurrentViewData[0]);\n }\n if (!isNullOrUndefined(updatedDropCurrentViewData[0])) {\n updatedCurrentViewData.push(updatedDropCurrentViewData[0]);\n }\n var currentViewData = gObj.currentViewData;\n for (var i = 0; i < currentViewData.length; i++) {\n if (isNullOrUndefined(updatedDragCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] ===\n dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key']) {\n currentViewData.splice(i, 1);\n i--;\n }\n else if (isNullOrUndefined(updatedDropCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] ===\n dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key']) {\n currentViewData.splice(i, 1);\n i--;\n }\n else if (!isNullOrUndefined(updatedDragCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] === updatedDragCurrentViewData[0]['key']) {\n currentViewData[parseInt(i.toString(), 10)] = updatedDragCurrentViewData[0];\n }\n else if (!isNullOrUndefined(updatedDropCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] === updatedDropCurrentViewData[0]['key']) {\n currentViewData[parseInt(i.toString(), 10)] = updatedDropCurrentViewData[0];\n }\n }\n var updatedRowObject = this.groupGenerator.generateRows(updatedCurrentViewData, {});\n var dragRootParentAggregateRowObject = [];\n var dropRootParentAggregateRowObject = [];\n for (var i = 0; i < dragRootParentRowObjects.length; i++) {\n dragRootParentAggregateRowObject\n .push.apply(dragRootParentAggregateRowObject, this.getGroupParentFooterAggregateRowObject(dragRootParentRowObjects[parseInt(i.toString(), 10)].uid));\n }\n for (var i = 0; i < dropRootParentRowObjects.length; i++) {\n dropRootParentAggregateRowObject\n .push.apply(dropRootParentAggregateRowObject, this.getGroupParentFooterAggregateRowObject(dropRootParentRowObjects[parseInt(i.toString(), 10)].uid));\n }\n dragRootParentRowObjects.push.apply(dragRootParentRowObjects, dragRootParentAggregateRowObject);\n dropRootParentRowObjects.push.apply(dropRootParentRowObjects, dropRootParentAggregateRowObject);\n this.updatedRowObjChange(dragRootParentRowObjects, updatedRowObject, groupAggregateTemplate, true);\n this.updatedRowObjChange(dropRootParentRowObjects, updatedRowObject, groupAggregateTemplate);\n this.groupReorderRefreshHandler(dragRootParentRowObjects);\n this.groupReorderRefreshHandler(dropRootParentRowObjects);\n };\n Group.prototype.updatedRowObjChange = function (rootParentRowObjects, updatedRowObjects, groupAggregateTemplate, isDraggedRow) {\n var gObj = this.parent;\n var rowObjects = gObj.getRowsObject();\n var cache = {};\n var virtualCacheRowObjects = [];\n if (gObj.enableVirtualization) {\n cache = gObj.contentModule['vgenerator'].cache;\n virtualCacheRowObjects = gObj.vcRows;\n }\n for (var i = 0; i < rootParentRowObjects.length; i++) {\n var keyPresent = false;\n var parentRowObject = rootParentRowObjects[parseInt(i.toString(), 10)];\n for (var j = 0; j < updatedRowObjects.length; j++) {\n var updatedRowObject = updatedRowObjects[parseInt(j.toString(), 10)];\n if (!isNullOrUndefined(updatedRowObject) && !isNullOrUndefined(parentRowObject.data['key']) &&\n !isNullOrUndefined(updatedRowObject.data['key']) && ((parentRowObject.data['key'] ===\n updatedRowObject.data['key'] || (parentRowObject.data['key'] instanceof Date &&\n parentRowObject.data['key'].toString() === updatedRowObject.data['key'].toString())))) {\n var isParentKeyPresent = true;\n var nextParentObject = rootParentRowObjects[parseInt((i + 1).toString(), 10)];\n if (isDraggedRow && nextParentObject && !nextParentObject.isAggregateRow) {\n var key = nextParentObject.data['key'].toString();\n var field = nextParentObject.data['field'];\n var groupedData = updatedRowObject.data['items'].records ?\n updatedRowObject.data['items'].records : updatedRowObject.data['items'];\n if (groupedData && groupedData.length && groupedData[0][\"\" + field] &&\n groupedData[0][\"\" + field].toString() !== key) {\n isParentKeyPresent = false;\n }\n }\n if (!isParentKeyPresent && isDraggedRow) {\n continue;\n }\n var index = rowObjects.indexOf(parentRowObject);\n if (index !== -1) {\n rowObjects[parseInt(index.toString(), 10)].data = updatedRowObject.data;\n rowObjects[parseInt(index.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n if (gObj.enableVirtualization) {\n var vIndex = virtualCacheRowObjects.indexOf(parentRowObject);\n if (vIndex !== -1) {\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)].data = updatedRowObject.data;\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n }\n parentRowObject.data = updatedRowObject.data;\n parentRowObject['gSummary'] = ['gSummary'];\n updatedRowObjects.splice(j, 1);\n j--;\n keyPresent = true;\n break;\n }\n else if (parentRowObject.isAggregateRow &&\n updatedRowObject.isAggregateRow) {\n for (var l = 0; l < groupAggregateTemplate.length; l++) {\n if (this.evaluateGroupAggregateValueChange(parentRowObject, updatedRowObject, groupAggregateTemplate[parseInt(l.toString(), 10)])) {\n var index = rowObjects.indexOf(parentRowObject);\n if (index !== -1) {\n rowObjects[parseInt(index.toString(), 10)].data = updatedRowObject.data;\n rowObjects[parseInt(index.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n if (gObj.enableVirtualization) {\n var vIndex = virtualCacheRowObjects.indexOf(parentRowObject);\n if (vIndex !== -1) {\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)].data = updatedRowObject.data;\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n }\n parentRowObject.data = updatedRowObject.data;\n parentRowObject['gSummary'] = updatedRowObject['gSummary'];\n keyPresent = true;\n break;\n }\n }\n if (keyPresent) {\n break;\n }\n }\n }\n if (!keyPresent) {\n var removeElem = gObj.getRowElementByUID(parentRowObject.uid);\n if (!isNullOrUndefined(removeElem)) {\n remove(removeElem);\n }\n rowObjects.splice(rowObjects.indexOf(parentRowObject), 1);\n if (gObj.enableVirtualization) {\n virtualCacheRowObjects.splice(virtualCacheRowObjects.indexOf(parentRowObject), 1);\n for (var k = 1; k <= Object.keys(cache).length; k++) {\n var vcIndex = cache[parseInt(k.toString(), 10)].indexOf(parentRowObject);\n if (vcIndex !== -1) {\n cache[parseInt(k.toString(), 10)].splice([parseInt(vcIndex.toString(), 10)], 1);\n }\n }\n }\n if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache) {\n gObj.infiniteScrollModule.resetInfiniteCache(rowObjects);\n }\n }\n }\n };\n Group.prototype.groupReorderRefreshHandler = function (parentRowObjects) {\n var gObj = this.parent;\n var row = new RowRenderer(gObj['serviceLocator'], null, gObj);\n var columns = gObj.getColumns();\n for (var j = 0; j < parentRowObjects.length; j++) {\n var rowObject = parentRowObjects[parseInt(j.toString(), 10)];\n if (!isNullOrUndefined(rowObject.uid) &&\n !isNullOrUndefined(gObj.getRowElementByUID(rowObject.uid))) {\n row.refresh(rowObject, columns, false);\n }\n }\n };\n Group.prototype.getGroupParentFooterAggregateRowObject = function (parentUid) {\n var rowObjects = this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache &&\n this.parent.groupSettings.columns.length ? this.parent.contentModule['rows'] : this.parent.getRowsObject();\n var parentFooterAggregates = [];\n for (var i = 0; i < rowObjects.length; i++) {\n var rowObject = rowObjects[parseInt(i.toString(), 10)];\n if (rowObject.parentUid === parentUid && rowObject.isAggregateRow) {\n parentFooterAggregates.push(rowObject);\n }\n }\n return parentFooterAggregates;\n };\n Group.prototype.evaluateGroupAggregateValueChange = function (rowObjects, updatedRowObject, groupAggregateTemplate) {\n var change = false;\n if (rowObjects.data[groupAggregateTemplate['field']]['field'] === updatedRowObject.data[groupAggregateTemplate['field']]['field']\n && rowObjects.data[groupAggregateTemplate['field']]['key'] === updatedRowObject.data[groupAggregateTemplate['field']]['key'] &&\n rowObjects.data[groupAggregateTemplate['field']]\n // eslint-disable-next-line no-prototype-builtins\n .hasOwnProperty(groupAggregateTemplate['field'] + ' - ' + groupAggregateTemplate['type']) &&\n updatedRowObject.data[groupAggregateTemplate['field']]\n // eslint-disable-next-line no-prototype-builtins\n .hasOwnProperty(groupAggregateTemplate['field'] + ' - ' + groupAggregateTemplate['type'])) {\n change = true;\n }\n return change;\n };\n Group.prototype.gettingVirtualData = function (parentRowObjs, curViewRec, pK) {\n var datas = [];\n var _loop_2 = function (i) {\n if (curViewRec.indexOf(parentRowObjs[parseInt(i.toString(), 10)].data) === -1) {\n datas.push(parentRowObjs[parseInt(i.toString(), 10)].data);\n }\n if (parentRowObjs[parseInt(i.toString(), 10)].data['field'] === this_2.parent.groupSettings.columns[0]) {\n var draggedData_1 = parentRowObjs[parseInt(i.toString(), 10)].data['items'];\n if (!isNullOrUndefined(draggedData_1['records'])) {\n draggedData_1 = draggedData_1['records'];\n }\n var _loop_3 = function (j) {\n if (pK && curViewRec.findIndex(function (data) { return data[pK.toString()] ===\n draggedData_1[parseInt(j.toString(), 10)][pK.toString()]; }) === -1) {\n datas.push(draggedData_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < draggedData_1.length; j++) {\n _loop_3(j);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < parentRowObjs.length; i++) {\n _loop_2(i);\n }\n return datas;\n };\n Group.prototype.iterateGroupAggregates = function (editedData) {\n var _this = this;\n var updatedData = editedData instanceof Array ? editedData : [];\n var rows = this.parent.getRowsObject();\n var initData = this.parent.getCurrentViewRecords().slice();\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n var dragParentRowObjects = editedData && editedData.length ?\n editedData[0] && editedData[0]['dragRowObjects'] : null;\n var dropParentRowObjects = editedData && editedData.length ?\n editedData[0] && editedData[0]['dropRowObjects'] : null;\n var dropRootKey = null;\n var dragRootKey = null;\n if (this.parent.enableVirtualization && this.parent.allowGrouping && this.parent.groupSettings.columns.length &&\n (!isNullOrUndefined(dragParentRowObjects) || !isNullOrUndefined(dropParentRowObjects))) {\n if (dragParentRowObjects) {\n initData.push.apply(initData, this.gettingVirtualData(dragParentRowObjects, initData, field));\n }\n if (dropParentRowObjects) {\n initData.push.apply(initData, this.gettingVirtualData(dropParentRowObjects, initData, field));\n }\n }\n var isInfiniteGroup = this.parent.enableInfiniteScrolling && this.parent.allowGrouping && editedData.length &&\n this.parent.groupSettings.columns.length && !isNullOrUndefined(dragParentRowObjects) &&\n !isNullOrUndefined(dropParentRowObjects);\n if (isInfiniteGroup) {\n initData = [];\n dropRootKey = dropParentRowObjects[dropParentRowObjects.length - 1].data['key'];\n dragRootKey = dragParentRowObjects[dragParentRowObjects.length - 1].data['key'];\n this.parent.getRowsObject().map(function (row) {\n var groupKey = row.data[_this.parent.groupSettings.columns[0]];\n if (row.isDataRow &&\n ((groupKey === dropRootKey || groupKey === dragRootKey) || (groupKey instanceof Date &&\n (groupKey.toString() === dropRootKey.toString() || groupKey.toString() === dragRootKey.toString())))) {\n initData.push(row.data);\n }\n });\n }\n var deletedCols = [];\n var changeds = rows.map(function (row) {\n if (row.edit === 'delete') {\n deletedCols.push(row.data);\n }\n return row.changes instanceof Object ? row.changes : row.data;\n });\n changeds = updatedData.length === 0 ? changeds : updatedData;\n var mergeData = initData.map(function (item) {\n var pKeyVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = changeds.some(function (cItem) {\n value = cItem;\n return pKeyVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n var eData = editedData;\n if (!(eData.type && eData.type === 'cancel') && deletedCols.length > 0) {\n for (var i = 0; i < deletedCols.length; i++) {\n var index = mergeData.indexOf(deletedCols[parseInt(i.toString(), 10)]);\n mergeData.splice(index, 1);\n }\n }\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var aggr = {};\n var type = row.columns[parseInt(k.toString(), 10)].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[parseInt(k.toString(), 10)].field };\n aggregates.push(aggr);\n }\n }\n var result;\n var aggrds;\n var groupedCols = this.parent.groupSettings.columns;\n for (var l = 0; l < groupedCols.length; l++) {\n aggrds = result ? result : mergeData;\n result = DataUtil.group(aggrds, groupedCols[parseInt(l.toString(), 10)], aggregates, null, null);\n }\n if (isInfiniteGroup) {\n var lastGroupKey = this.parent.currentViewData[this.parent.currentViewData.length - 1]['key'];\n if ((lastGroupKey instanceof Date && (lastGroupKey.toString() === dropRootKey.toString() ||\n lastGroupKey.toString() === dragRootKey.toString())) ||\n (lastGroupKey === dropRootKey || lastGroupKey === dragRootKey)) {\n var groups_1 = [];\n for (var i = 0; i < result.length; i++) {\n groups_1.push(result[parseInt(i.toString(), 10)]);\n }\n var predicate_1 = [];\n var addWhere = function (input) {\n for (var i = 0; i < groups_1.length; i++) {\n predicate_1.push(new Predicate('field', '==', groups_1[parseInt(i.toString(), 10)].field).\n and(_this.parent.renderModule.getPredicate('key', 'equal', groups_1[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate_1));\n };\n var newQuery = this.parent.getDataModule().generateQuery(true);\n addWhere(newQuery);\n var updatedGroupData = this.parent.getDataModule().dataManager.executeLocal(newQuery);\n this.parent.renderModule.updateGroupInfo(result, updatedGroupData);\n }\n }\n return result;\n };\n Group.prototype.updateExpand = function (args) {\n var uid = args.uid;\n var isExpand = args.isExpand;\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n if (row.uid === uid || isNullOrUndefined(uid)) {\n row.isExpand = isExpand;\n var _loop_4 = function (j) {\n var childRow = rows[parseInt(j.toString(), 10)];\n var closestParent = void 0;\n if (childRow.parentUid !== row.uid) {\n closestParent = rows.filter(function (x) { return x.uid === childRow.parentUid; })[0];\n }\n if (childRow.parentUid === row.uid) {\n childRow.visible = row.isExpand;\n }\n else if (!isNullOrUndefined(closestParent) && childRow.parentUid === closestParent.uid) {\n if (closestParent.isExpand && closestParent.visible === true) {\n childRow.visible = true;\n }\n else if (closestParent.isExpand && closestParent.visible === false) {\n childRow.visible = false;\n }\n }\n if (isNullOrUndefined(uid)) {\n return \"break\";\n }\n };\n for (var j = i + 1; j < rows.length; j++) {\n var state_2 = _loop_4(j);\n if (state_2 === \"break\")\n break;\n }\n }\n }\n this.parent.notify(events.contentReady, { rows: rows, args: { isFrozen: false, rows: rows } });\n };\n return Group;\n}());\nexport { Group };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit, removeClass } from '@syncfusion/ej2-base';\nimport { colGroupRefresh, columnWidthChanged, scroll, columnVisibilityChanged, refreshFooterRenderer } from '../base/constant';\nimport { ContentRender } from './content-renderer';\nimport { RowRenderer } from './row-renderer';\nimport { SummaryModelGenerator } from '../services/summary-model-generator';\nimport { calculateAggregate, iterateExtend, addRemoveEventListener, applyStickyLeftRightPosition } from '../base/util';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * Footer module is used to render grid content\n *\n * @hidden\n */\nvar FooterRenderer = /** @class */ (function (_super) {\n __extends(FooterRenderer, _super);\n function FooterRenderer(gridModule, serviceLocator) {\n var _this = _super.call(this, gridModule, serviceLocator) || this;\n _this.aggregates = {};\n _this.parent = gridModule;\n _this.locator = serviceLocator;\n _this.modelGenerator = new SummaryModelGenerator(_this.parent);\n _this.addEventListener();\n return _this;\n }\n /**\n * The function is used to render grid footer div\n *\n * @returns {void}\n */\n FooterRenderer.prototype.renderPanel = function () {\n var div = this.parent.createElement('div', { className: literals.gridFooter });\n var innerDiv = this.parent.createElement('div', { className: 'e-summarycontent' });\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (this.parent.getPager() != null) {\n this.parent.element.insertBefore(div, this.parent.getPager());\n }\n else {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid footer table\n *\n * @returns {void}\n */\n FooterRenderer.prototype.renderTable = function () {\n var innerDiv = this.createContentTable('_footer_table');\n var table = innerDiv.querySelector('.' + literals.table);\n var tFoot = this.parent.createElement('tfoot');\n table.appendChild(tFoot);\n this.setTable(table);\n };\n FooterRenderer.prototype.renderSummaryContent = function (e, table, cStart, cEnd) {\n var input = this.parent.dataSource instanceof Array ? !this.parent.getDataModule().isRemote() &&\n this.parent.parentDetails ? this.getData() : this.parent.dataSource : this.parent.currentViewData;\n var summaries = this.modelGenerator.getData();\n var dummies = isNullOrUndefined(cStart) ? this.modelGenerator.getColumns() :\n this.modelGenerator.getColumns(cStart);\n // eslint-disable-next-line max-len\n var rows = isNullOrUndefined(cStart) ? this.modelGenerator.generateRows(input, e || this.aggregates) :\n this.modelGenerator.generateRows(input, e || this.aggregates, cStart, cEnd);\n var fragment = document.createDocumentFragment();\n var rowrenderer = new RowRenderer(this.locator, null, this.parent);\n rowrenderer.element = this.parent.createElement('TR', { className: 'e-summaryrow', attrs: { role: 'row' } });\n for (var srow = 0, len = summaries.length; srow < len; srow++) {\n var row = rows[parseInt(srow.toString(), 10)];\n if (!row) {\n continue;\n }\n var tr = rowrenderer.render(row, dummies);\n if (tr.querySelectorAll('.e-leftfreeze').length && tr.querySelectorAll('.e-indentcell').length) {\n var td = tr.querySelectorAll('.e-indentcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n if (this.parent.isFrozenGrid() && tr.querySelectorAll('.e-summarycell').length) {\n removeClass([].slice.call(tr.querySelectorAll('.e-summarycell')), ['e-freezeleftborder', 'e-freezerightborder']);\n }\n fragment.appendChild(tr);\n }\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if ((this.parent.isReact || isReactChild) && summaries.length && this.parent.isInitialLoad) {\n this.parent.renderTemplates(function () {\n table.tFoot.innerHTML = '';\n table.tFoot.appendChild(fragment);\n });\n }\n else {\n table.tFoot.appendChild(fragment);\n }\n this.aggregates = !isNullOrUndefined(e) ? e : this.aggregates;\n };\n FooterRenderer.prototype.refresh = function (e) {\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (!(this.parent.isReact || isReactChild) || !this.parent.isInitialLoad) {\n this.getTable().tFoot.innerHTML = '';\n }\n this.renderSummaryContent(e, this.getTable(), undefined, undefined);\n if (isNullOrUndefined(e) && this.parent.isAutoFitColumns) {\n this.parent.autoFitColumns();\n }\n this.onScroll();\n };\n FooterRenderer.prototype.refreshCol = function () {\n // frozen table\n var mheaderCol = this.parent.element.querySelector('.' + literals.gridHeader).querySelector(literals.colGroup).cloneNode(true);\n this.getTable().replaceChild(mheaderCol, this.getColGroup());\n this.setColGroup(mheaderCol);\n };\n FooterRenderer.prototype.onWidthChange = function (args) {\n this.getColFromIndex(args.index).style.width = formatUnit(args.width);\n if (this.parent.allowResizing && args.module === 'resize') {\n this.updateFooterTableWidth(this.getTable());\n }\n };\n FooterRenderer.prototype.onScroll = function (e) {\n if (e === void 0) { e = {\n left: this.parent.getContent().firstChild.scrollLeft\n }; }\n this.getTable().parentElement.scrollLeft = e.left;\n };\n FooterRenderer.prototype.getColFromIndex = function (index) {\n return this.getColGroup().children[parseInt(index.toString(), 10)];\n };\n FooterRenderer.prototype.columnVisibilityChanged = function () {\n this.refresh();\n };\n FooterRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: colGroupRefresh, handler: this.refreshCol },\n { event: columnWidthChanged, handler: this.onWidthChange },\n { event: scroll, handler: this.onScroll },\n { event: columnVisibilityChanged, handler: this.columnVisibilityChanged },\n { event: refreshFooterRenderer, handler: this.refreshFooterRenderer }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FooterRenderer.prototype.removeEventListener = function () {\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FooterRenderer.prototype.updateFooterTableWidth = function (tFoot) {\n var tHead = this.parent.getHeaderTable();\n if (tHead && tFoot) {\n tFoot.style.width = tHead.style.width;\n }\n };\n FooterRenderer.prototype.refreshFooterRenderer = function (editedData) {\n var aggregates = this.onAggregates(editedData);\n this.refresh(aggregates);\n };\n FooterRenderer.prototype.getIndexByKey = function (data, ds) {\n var key = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < ds.length; i++) {\n if (ds[parseInt(i.toString(), 10)][\"\" + key] === data[\"\" + key]) {\n return i;\n }\n }\n return -1;\n };\n FooterRenderer.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n FooterRenderer.prototype.onAggregates = function (editedData) {\n editedData = editedData instanceof Array ? editedData : [];\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n var dataSource = [];\n var isModified = false;\n var batchChanges = {};\n var gridData = 'dataSource';\n var isFiltered = false;\n if (!(this.parent.renderModule.data.isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((this.parent.allowFiltering\n && this.parent.filterSettings.columns.length) || this.parent.searchSettings.key.length)) {\n isFiltered = true;\n }\n var currentViewData;\n if (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) {\n currentViewData = this.parent.getCurrentViewRecords();\n }\n else {\n currentViewData = this.parent.dataSource instanceof Array ?\n (isFiltered ? this.parent.getFilteredRecords() : this.parent.dataSource) : (this.parent.dataSource[\"\" + gridData].json.length ?\n (isFiltered ? this.parent.getFilteredRecords() : this.parent.dataSource[\"\" + gridData].json)\n : this.parent.getCurrentViewRecords());\n }\n if (this.parent.parentDetails && !this.parent.getDataModule().isRemote()) {\n currentViewData = this.getData();\n }\n if (this.parent.editModule) {\n batchChanges = this.parent.editModule.getBatchChanges();\n }\n if (Object.keys(batchChanges).length) {\n for (var i = 0; i < currentViewData.length; i++) {\n isModified = false;\n // eslint-disable-next-line max-len\n if (batchChanges[literals.changedRecords].length && this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[literals.changedRecords]) > -1) {\n isModified = true;\n // eslint-disable-next-line max-len\n dataSource.push(batchChanges[literals.changedRecords][this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[literals.changedRecords])]);\n }\n // eslint-disable-next-line max-len\n if (batchChanges[literals.deletedRecords].length && this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[literals.deletedRecords]) > -1) {\n isModified = true;\n }\n else if (!isModified) {\n dataSource.push(currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (batchChanges[literals.addedRecords].length) {\n for (var i = 0; i < batchChanges[literals.addedRecords].length; i++) {\n dataSource.push(batchChanges[literals.addedRecords][parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n if (editedData.length) {\n var data = iterateExtend(currentViewData);\n dataSource = data.map(function (item) {\n var idVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = editedData.some(function (cItem) {\n value = cItem;\n return idVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n }\n else {\n dataSource = currentViewData;\n }\n }\n var eData = editedData;\n if ((eData.type && eData.type === 'cancel')) {\n dataSource = currentViewData;\n }\n var aggregate = {};\n var agrVal;\n var aggregateRows = this.parent.aggregates;\n for (var i = 0; i < aggregateRows.length; i++) {\n for (var j = 0; j < aggregateRows[parseInt(i.toString(), 10)].columns.length; j++) {\n var data = [];\n var type = aggregateRows[parseInt(i.toString(), 10)]\n .columns[parseInt(j.toString(), 10)].type.toString();\n data = dataSource;\n agrVal = calculateAggregate(type, data, aggregateRows[parseInt(i.toString(), 10)]\n .columns[parseInt(j.toString(), 10)], this.parent);\n aggregate[aggregateRows[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].field + ' - ' + type.toLowerCase()] = agrVal;\n }\n }\n var result = {\n result: dataSource,\n count: dataSource.length,\n aggregates: aggregate\n };\n return result;\n };\n return FooterRenderer;\n}(ContentRender));\nexport { FooterRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { refreshAggregateCell } from '../base/constant';\n/**\n * SummaryCellRenderer class which responsible for building summary cell content.\n *\n * @hidden\n */\nvar SummaryCellRenderer = /** @class */ (function (_super) {\n __extends(SummaryCellRenderer, _super);\n function SummaryCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-summarycell', attrs: { tabindex: '-1', role: 'gridcell' } });\n return _this;\n }\n SummaryCellRenderer.prototype.getValue = function (field, data, column) {\n var key = !isNullOrUndefined(column.type) ?\n column.field + ' - ' + (typeof column.type === 'string' ? column.type.toLowerCase() : '') : column.columnName;\n return data[column.columnName] ? data[column.columnName][\"\" + key] : '';\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n SummaryCellRenderer.prototype.evaluate = function (node, cell, data, attributes) {\n var column = cell.column;\n this.parent.on(refreshAggregateCell, this.refreshWithAggregate(node, cell), this);\n if (!(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)) {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.style.display = 'none';\n }\n return true;\n }\n else {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.classList.add('e-lastsummarycell');\n }\n }\n var tempObj = column.getTemplate(cell.cellType);\n var tempID = '';\n var gColumn = this.parent.getColumnByField(data[column.columnName].field);\n if (!isNullOrUndefined(gColumn)) {\n data[column.columnName].headerText = gColumn.headerText;\n if (gColumn.isForeignColumn()) {\n var fData = gColumn.columnData.filter(function (e) {\n return e[gColumn.foreignKeyField] === data[column.columnName].key;\n })[0];\n if (fData) {\n data[column.columnName].foreignKey = fData[gColumn.foreignKeyValue];\n }\n }\n }\n var isReactCompiler = this.parent.isReact && (column.footerTemplate ?\n typeof (column.footerTemplate) !== 'string' : column.groupFooterTemplate ? typeof (column.groupFooterTemplate) !== 'string'\n : column.groupCaptionTemplate ? typeof (column.groupCaptionTemplate) !== 'string' : false);\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var prop = data[column.columnName];\n if (tempObj.property === 'groupCaptionTemplate' || tempObj.property === 'groupFooterTemplate') {\n var groupKey = 'groupKey';\n var key = 'key';\n prop[\"\" + groupKey] = prop[\"\" + key];\n }\n tempObj.fn(prop, this.parent, tempObj.property, tempID, null, null, node);\n if (!this.parent.isInitialLoad) {\n this.parent.renderTemplates();\n }\n }\n else {\n appendChildren(node, tempObj.fn(data[column.columnName], this.parent, tempObj.property, tempID));\n }\n return false;\n };\n SummaryCellRenderer.prototype.refreshWithAggregate = function (node, cell) {\n var _this = this;\n var cellNode = cell;\n return function (args) {\n var cell = cellNode;\n var field = cell.column.columnName ? cell.column.columnName : null;\n var curCell = (!isNullOrUndefined(field) ? args.cells.filter(function (cell) {\n return cell.column.columnName === field;\n })[0] : null);\n if (node.parentElement && node.parentElement.getAttribute('data-uid') === args.dataUid && field && curCell &&\n field === curCell.column.columnName) {\n _this.refreshTD(node, curCell, args.data);\n }\n };\n };\n return SummaryCellRenderer;\n}(CellRenderer));\nexport { SummaryCellRenderer };\n","import { remove, extend, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, addClass } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { uiUpdate, initialEnd, dataReady, modelChanged, refreshAggregates, refreshFooterRenderer, groupAggregates, destroy } from '../base/constant';\nimport { FooterRenderer } from '../renderer/footer-renderer';\nimport { SummaryCellRenderer } from '../renderer/summary-cell-renderer';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport * as literals from '../base/string-literals';\n/**\n * Summary Action controller.\n */\nvar Aggregate = /** @class */ (function () {\n function Aggregate(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n Aggregate.prototype.getModuleName = function () {\n return 'aggregate';\n };\n Aggregate.prototype.initiateRender = function () {\n var _this = this;\n var cellFac = this.locator.getService('cellRendererFactory');\n var instance = new SummaryCellRenderer(this.parent, this.locator);\n var type = [CellType.Summary, CellType.CaptionSummary, CellType.GroupSummary];\n for (var i = 0; i < type.length; i++) {\n cellFac.addCellRenderer(type[parseInt(i.toString(), 10)], instance);\n }\n this.footerRenderer = new FooterRenderer(this.parent, this.locator);\n this.footerRenderer.renderPanel();\n this.footerRenderer.renderTable();\n var footerContent = this.footerRenderer.getPanel();\n if (this.parent.element.scrollHeight >= this.parent.getHeight(this.parent.height)\n && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n this.locator.register('footerRenderer', this.footerRenderer);\n var fn = function () {\n _this.prepareSummaryInfo();\n _this.parent.off(dataReady, fn);\n };\n this.parent.on(dataReady, fn, this);\n this.parent.on(dataReady, this.footerRenderer.refresh, this.footerRenderer);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Aggregate.prototype.prepareSummaryInfo = function () {\n var _this = this;\n summaryIterator(this.parent.aggregates, function (column) {\n var cFormat = getValue('customFormat', column);\n if (!isNullOrUndefined(cFormat)) {\n column.setPropertiesSilent({ format: cFormat });\n }\n if (typeof (column.format) === 'object') {\n var valueFormatter = new ValueFormatter();\n column.setFormatter(valueFormatter.getFormatFunction(extend({}, column.format)));\n }\n else if (typeof (column.format) === 'string') {\n var fmtr = _this.locator.getService('valueFormatter');\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n }\n column.setPropertiesSilent({ columnName: column.columnName || column.field });\n });\n };\n Aggregate.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (isNullOrUndefined(this.footerRenderer)) {\n this.initiateRender();\n }\n this.prepareSummaryInfo();\n this.footerRenderer.refresh();\n var cModel = new CaptionSummaryModelGenerator(this.parent);\n var gModel = new GroupSummaryModelGenerator(this.parent);\n if (gModel.getData().length !== 0 || !cModel.isEmpty()) {\n this.parent.notify(modelChanged, {});\n }\n };\n Aggregate.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.initiateRender, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(refreshAggregates, this.refresh, this);\n this.parent.on(destroy, this.destroy, this);\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.footerRenderer.removeEventListener();\n this.parent.off(initialEnd, this.initiateRender);\n this.parent.off(dataReady, this.footerRenderer.refresh);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(refreshAggregates, this.refresh);\n this.parent.off(destroy, this.destroy);\n if (this.parent.element.querySelector('.' + literals.gridFooter)) {\n remove(this.parent.element.querySelector('.' + literals.gridFooter));\n }\n };\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\n };\n Aggregate.prototype.refresh = function (data, element) {\n var editedData = data instanceof Array ? data : [data];\n this.parent.notify(refreshFooterRenderer, editedData);\n if (element) {\n editedData.row = element;\n }\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(groupAggregates, editedData);\n }\n };\n return Aggregate;\n}());\nexport { Aggregate };\n/**\n * @param {AggregateRowModel[]} aggregates - specifies the AggregateRowModel\n * @param {Function} callback - specifies the Function\n * @returns {void}\n * @private\n */\nexport function summaryIterator(aggregates, callback) {\n for (var i = 0; i < aggregates.length; i++) {\n for (var j = 0; j < aggregates[parseInt(i.toString(), 10)].columns.length; j++) {\n callback(aggregates[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)], aggregates[parseInt(i.toString(), 10)]);\n }\n }\n}\n","import { classList, addClass, removeClass, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { EventHandler, closest } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { Dialog, calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { createCboxWithWrap, toogleCheckbox, parentsUntil, removeAddCboxClasses, setChecked } from '../base/util';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { SearchBox } from '../services/focus-strategy';\nimport * as literals from '../base/string-literals';\n/**\n * The `ColumnChooser` module is used to show or hide columns dynamically.\n */\nvar ColumnChooser = /** @class */ (function () {\n /**\n * Constructor for the Grid ColumnChooser module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function ColumnChooser(parent, serviceLocator) {\n this.showColumn = [];\n this.hideColumn = [];\n this.changedColumns = [];\n this.unchangedColumns = [];\n this.isDlgOpen = false;\n this.initialOpenDlg = true;\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.isInitialOpen = false;\n this.isCustomizeOpenCC = false;\n this.searchOperator = 'startswith';\n this.prevShowedCols = [];\n this.hideDialogFunction = this.hideDialog.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n if (this.parent.enableAdaptiveUI) {\n this.setFullScreenDialog();\n }\n }\n ColumnChooser.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement.querySelector('.' + literals.gridContent) && (!gridElement.querySelector('.' + literals.gridHeader)) || !gridElement) {\n return;\n }\n this.removeEventListener();\n this.unWireEvents();\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.element && !this.dlgObj.isDestroyed) {\n this.dlgObj.destroy();\n }\n };\n ColumnChooser.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isColumnChooser);\n }\n };\n ColumnChooser.prototype.rtlUpdate = function () {\n if (!isNullOrUndefined(this.innerDiv)) {\n if (this.parent.enableRtl) {\n addClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n else {\n removeClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(document, 'click', this.clickHandler, this);\n this.parent.on(events.uiUpdate, this.enableAfterRenderEle, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.addEventListener(events.dataBound, this.hideDialogFunction);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.rtlUpdated, this.rtlUpdate, this);\n this.parent.on(events.resetColumns, this.onResetColumns, this);\n if (this.parent.enableAdaptiveUI) {\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.renderResponsiveColumnChooserDiv, this.renderResponsiveColumnChooserDiv, this);\n this.parent.on(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction, this);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'click', this.clickHandler);\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.uiUpdate, this.enableAfterRenderEle);\n this.parent.off(events.rtlUpdated, this.rtlUpdate);\n this.parent.off(events.resetColumns, this.onResetColumns);\n this.parent.removeEventListener(events.dataBound, this.hideDialogFunction);\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n if (this.parent.enableAdaptiveUI) {\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.renderResponsiveColumnChooserDiv, this.renderResponsiveColumnChooserDiv);\n this.parent.off(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction);\n }\n };\n ColumnChooser.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n if (!this.parent.enableAdaptiveUI) {\n this.renderDlgContent();\n }\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n };\n ColumnChooser.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n if (!this.isCustomizeOpenCC) {\n if (!isNullOrUndefined(closest(targetElement, '.e-cc-toolbar')) || !isNullOrUndefined(closest(targetElement, '.e-cc'))) {\n if (targetElement.classList.contains('e-columnchooser-btn') || targetElement.classList.contains('e-cc-toolbar')) {\n if ((this.initialOpenDlg && this.dlgObj.visible) || !this.isDlgOpen) {\n this.isDlgOpen = true;\n return;\n }\n }\n else if (targetElement.classList.contains('e-cc-cancel')) {\n targetElement.parentElement.querySelector('.e-ccsearch').value = '';\n this.columnChooserSearch('');\n this.removeCancelIcon();\n this.refreshCheckboxButton();\n }\n }\n else {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible && !targetElement.classList.contains('e-toolbar-items')) {\n this.dlgObj.hide();\n this.clearActions();\n this.refreshCheckboxState();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.targetdlg = e.target;\n }\n }\n if (this.isCustomizeOpenCC && e.target.classList.contains('e-cc-cancel')) {\n this.refreshCheckboxState();\n }\n if (!this.parent.enableAdaptiveUI) {\n this.rtlUpdate();\n }\n else {\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n }\n };\n ColumnChooser.prototype.hideDialog = function () {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible) {\n this.dlgObj.hide();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n };\n /**\n * To render columnChooser when showColumnChooser enabled.\n *\n * @param {number} x - specifies the position x\n * @param {number} y - specifies the position y\n * @param {Element} target - specifies the target\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.renderColumnChooser = function (x, y, target) {\n if (!this.dlgObj.visible && (this.parent.detailTemplate || this.parent.childGrid)) {\n this.hideOpenedDialog();\n }\n if (!this.dlgObj.visible) {\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (target) {\n this.targetdlg = target;\n }\n this.refreshCheckboxState();\n this.dlgObj.dataBind();\n this.dlgObj.element.style.maxHeight = '430px';\n var elementVisible = this.dlgObj.element.style.display;\n this.dlgObj.element.style.display = 'block';\n var isSticky = this.parent.getHeaderContent().classList.contains('e-sticky');\n var toolbarItem = closest(target, '.e-toolbar-item');\n var newpos = void 0;\n if (isSticky) {\n newpos = toolbarItem.getBoundingClientRect();\n this.dlgObj.element.classList.add('e-sticky');\n }\n else {\n this.dlgObj.element.classList.remove('e-sticky');\n newpos = calculateRelativeBasedPosition(toolbarItem, this.dlgObj.element);\n }\n this.dlgObj.element.style.display = elementVisible;\n this.dlgObj.element.style.top = newpos.top + closest(target, '.e-cc-toolbar').getBoundingClientRect().height + 'px';\n var dlgWidth = 250;\n if (!isNullOrUndefined(closest(target, '.e-bigger'))) {\n this.dlgObj.width = 258;\n }\n if (Browser.isDevice) {\n this.dlgObj.target = document.body;\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n this.dlgObj.open = this.mOpenDlg.bind(this);\n }\n else {\n if (this.parent.enableRtl) {\n this.dlgObj.element.style.left = target.offsetLeft + 'px';\n }\n else {\n this.dlgObj.element.style.left = ((newpos.left - dlgWidth) + closest(target, '.e-cc-toolbar').clientWidth) + 2 + 'px';\n }\n }\n this.removeCancelIcon();\n this.dlgObj.show();\n this.parent.notify(events.columnChooserOpened, { dialog: this.dlgObj });\n }\n else {\n // this.unWireEvents();\n this.hideDialog();\n this.addcancelIcon();\n this.clearActions();\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n this.isCustomizeOpenCC = true;\n if (this.parent.enableAdaptiveUI) {\n this.renderDlgContent();\n }\n if (this.dlgObj.visible) {\n this.hideDialog();\n return;\n }\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (!this.isInitialOpen) {\n this.dlgObj.content = this.renderChooserList();\n this.updateIntermediateBtn();\n }\n else {\n this.refreshCheckboxState();\n }\n this.dlgObj.dataBind();\n this.dlgObj.position = { X: 'center', Y: 'center' };\n if (isNullOrUndefined(X)) {\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n }\n this.dlgObj.refreshPosition();\n }\n else {\n this.dlgObj.element.style.top = '';\n this.dlgObj.element.style.left = '';\n this.dlgObj.element.style.top = Y + 'px';\n this.dlgObj.element.style.left = X + 'px';\n }\n this.dlgObj.beforeOpen = this.customDialogOpen.bind(this);\n this.dlgObj.show();\n this.isInitialOpen = true;\n this.dlgObj.beforeClose = this.customDialogClose.bind(this);\n };\n ColumnChooser.prototype.enableAfterRenderEle = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n ColumnChooser.prototype.keyUpHandler = function (e) {\n if (e.key === 'Escape') {\n this.hideDialog();\n }\n this.setFocus(parentsUntil(e.target, 'e-cclist'));\n };\n ColumnChooser.prototype.setFocus = function (elem) {\n var prevElem = this.dlgDiv.querySelector('.e-colfocus');\n if (prevElem) {\n prevElem.classList.remove('e-colfocus');\n }\n if (elem) {\n elem.classList.add('e-colfocus');\n }\n };\n ColumnChooser.prototype.customDialogOpen = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.add(searchElement, 'keyup', this.columnChooserManualSearch, this);\n };\n ColumnChooser.prototype.customDialogClose = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.remove(searchElement, 'keyup', this.columnChooserManualSearch);\n };\n ColumnChooser.prototype.getColumns = function () {\n var columns = this.parent.getColumns().filter(function (column) { return (column.type !== 'checkbox'\n && column.showInColumnChooser === true) || (column.type === 'checkbox' && column.field !== undefined); });\n return columns;\n };\n ColumnChooser.prototype.renderDlgContent = function () {\n var isAdaptive = this.parent.enableAdaptiveUI;\n this.dlgDiv = this.parent.createElement('div', { className: 'e-ccdlg e-cc', id: this.parent.element.id + '_ccdlg' });\n if (!isAdaptive) {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.parent.enableAdaptiveUI ? null : this.l10n.getConstant('ChooseColumns'),\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n target: document.getElementById(this.parent.element.id),\n content: this.renderChooserList(),\n width: 250,\n cssClass: this.parent.cssClass ? 'e-cc' + ' ' + this.parent.cssClass : 'e-cc',\n animationSettings: { effect: 'None' }\n });\n if (!isAdaptive) {\n this.dlgObj.buttons = [{\n click: this.confirmDlgBtnClick.bind(this),\n buttonModel: {\n content: this.l10n.getConstant('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-cc e-cc_okbtn' + ' ' + this.parent.cssClass : 'e-cc e-cc_okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this),\n buttonModel: {\n cssClass: this.parent.cssClass ?\n 'e-flat e-cc e-cc-cnbtn' + ' ' + this.parent.cssClass : 'e-flat e-cc e-cc-cnbtn',\n content: this.l10n.getConstant('CancelButton')\n }\n }];\n }\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.dlgObj.appendTo(this.dlgDiv);\n if (isAdaptive) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n if (responsiveCnt) {\n responsiveCnt.appendChild(this.dlgDiv);\n }\n this.dlgObj.open = this.mOpenDlg.bind(this);\n this.dlgObj.target = document.querySelector('.e-rescolumnchooser > .e-dlg-content > .e-mainfilterdiv');\n }\n this.wireEvents();\n };\n ColumnChooser.prototype.renderChooserList = function () {\n this.mainDiv = this.parent.createElement('div', { className: 'e-main-div e-cc' });\n var searchDiv = this.parent.createElement('div', { className: 'e-cc-searchdiv e-cc e-input-group' });\n var ccsearchele = this.parent.createElement('input', {\n className: 'e-ccsearch e-cc e-input',\n attrs: { placeholder: this.l10n.getConstant('Search'), cssClass: this.parent.cssClass }\n });\n var ccsearchicon = this.parent.createElement('span', {\n className: 'e-ccsearch-icon e-icons e-cc e-input-group-icon',\n attrs: { title: this.l10n.getConstant('Search') }\n });\n var conDiv = this.parent.createElement('div', { className: 'e-cc-contentdiv' });\n this.innerDiv = this.parent.createElement('div', { className: 'e-innerdiv e-cc' });\n searchDiv.appendChild(ccsearchele);\n searchDiv.appendChild(ccsearchicon);\n this.searchBoxObj = new SearchBox(ccsearchele, this.serviceLocator);\n var innerDivContent = this.refreshCheckboxList(this.parent.getColumns());\n this.innerDiv.appendChild(innerDivContent);\n conDiv.appendChild(this.innerDiv);\n if (this.parent.enableAdaptiveUI) {\n var searchBoxDiv = this.parent.createElement('div', { className: 'e-cc-searchBox' });\n searchBoxDiv.appendChild(searchDiv);\n this.mainDiv.appendChild(searchBoxDiv);\n }\n else {\n this.mainDiv.appendChild(searchDiv);\n }\n this.mainDiv.appendChild(conDiv);\n return this.mainDiv;\n };\n ColumnChooser.prototype.confirmDlgBtnClick = function (args) {\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.changedColumns = (this.changedColumns.length > 0) ? this.changedColumns : this.unchangedColumns;\n this.changedColumnState(this.changedColumns);\n var uncheckedLength = this.ulElement.querySelector('.e-uncheck') &&\n this.ulElement.querySelectorAll('.e-uncheck:not(.e-selectall)').length;\n if (!isNullOrUndefined(args)) {\n if (uncheckedLength < this.parent.getColumns().length) {\n if (this.hideColumn.length) {\n this.columnStateChange(this.hideColumn, false);\n }\n if (this.showColumn.length) {\n this.columnStateChange(this.showColumn, true);\n }\n this.getShowHideService.setVisible(this.stateChangeColumns, this.changedStateColumns);\n this.clearActions();\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n if (this.parent.getCurrentViewRecords().length === 0) {\n var emptyRowCell = this.parent.element.querySelector('.e-emptyrow').querySelector('td');\n emptyRowCell.setAttribute('colSpan', this.parent.getVisibleColumns().length.toString());\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.scrollModule) {\n this.parent.scrollModule.refresh();\n }\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n };\n ColumnChooser.prototype.onResetColumns = function (e) {\n if (e.requestType === 'columnstate') {\n this.resetColumnState();\n return;\n }\n };\n ColumnChooser.prototype.renderResponsiveColumnChooserDiv = function (args) {\n if (args.action === 'open') {\n this.openColumnChooser();\n }\n else if (args.action === 'clear') {\n this.clearBtnClick();\n }\n else if (args.action === 'confirm') {\n this.confirmDlgBtnClick(true);\n }\n };\n ColumnChooser.prototype.resetColumnState = function () {\n this.showColumn = [];\n this.hideColumn = [];\n this.changedColumns = [];\n this.hideDialog();\n };\n ColumnChooser.prototype.changedColumnState = function (changedColumns) {\n for (var index = 0; index < changedColumns.length; index++) {\n var colUid = changedColumns[parseInt(index.toString(), 10)];\n var currentCol = this.parent.getColumnByUid(colUid);\n this.changedStateColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.columnStateChange = function (stateColumns, state) {\n for (var index = 0; index < stateColumns.length; index++) {\n var colUid = stateColumns[parseInt(index.toString(), 10)];\n var currentCol = this.parent.getColumnByUid(colUid);\n if (currentCol.type !== 'checkbox') {\n currentCol.visible = state;\n }\n this.stateChangeColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.clearActions = function () {\n this.resetColumnState();\n this.addcancelIcon();\n };\n ColumnChooser.prototype.clearBtnClick = function () {\n this.clearActions();\n this.parent.notify(events.columnChooserCancelBtnClick, { dialog: this.dlgObj });\n };\n ColumnChooser.prototype.checkstatecolumn = function (isChecked, coluid, selectAll) {\n if (selectAll === void 0) { selectAll = false; }\n var currentCol = this.parent.getColumnByUid(coluid);\n if (isChecked) {\n if (this.hideColumn.indexOf(coluid) !== -1) {\n this.hideColumn.splice(this.hideColumn.indexOf(coluid), 1);\n }\n if (this.showColumn.indexOf(coluid) === -1 && !(currentCol && currentCol.visible)) {\n this.showColumn.push(coluid);\n }\n }\n else {\n if (this.showColumn.indexOf(coluid) !== -1) {\n this.showColumn.splice(this.showColumn.indexOf(coluid), 1);\n }\n if (this.hideColumn.indexOf(coluid) === -1 && (currentCol && currentCol.visible)) {\n this.hideColumn.push(coluid);\n }\n }\n if (selectAll) {\n if (!isChecked) {\n this.changedColumns.push(coluid);\n }\n else {\n this.unchangedColumns.push(coluid);\n }\n }\n else if (this.changedColumns.indexOf(coluid) !== -1) {\n this.changedColumns.splice(this.changedColumns.indexOf(coluid), 1);\n }\n else {\n this.changedColumns.push(coluid);\n }\n };\n ColumnChooser.prototype.columnChooserSearch = function (searchVal) {\n var clearSearch = false;\n var fltrCol;\n var okButton;\n var buttonEle = this.dlgDiv.querySelector('.e-footer-content');\n var selectedCbox = this.ulElement.querySelector('.e-check') &&\n this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n this.isInitialOpen = true;\n if (buttonEle) {\n okButton = buttonEle.querySelector('.e-btn').ej2_instances[0];\n }\n if (searchVal === '') {\n this.removeCancelIcon();\n fltrCol = this.getColumns();\n clearSearch = true;\n }\n else {\n fltrCol = new DataManager(this.getColumns()).executeLocal(new Query()\n .where('headerText', this.searchOperator, searchVal, true, this.parent.columnChooserSettings.ignoreAccent));\n }\n if (fltrCol.length) {\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.classList.remove('e-ccnmdiv');\n this.innerDiv.appendChild(this.refreshCheckboxList(fltrCol));\n if (!clearSearch) {\n this.addcancelIcon();\n this.refreshCheckboxButton();\n }\n else {\n if (okButton && selectedCbox) {\n okButton.disabled = false;\n }\n if (selectedCbox && this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: false });\n }\n }\n }\n else {\n var nMatchele = this.parent.createElement('span', { className: 'e-cc e-nmatch' });\n nMatchele.innerHTML = this.l10n.getConstant('Matchs');\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.appendChild(nMatchele);\n this.innerDiv.classList.add('e-ccnmdiv');\n if (okButton) {\n okButton.disabled = true;\n }\n if (this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: true });\n }\n }\n this.flag = true;\n this.stopTimer();\n };\n ColumnChooser.prototype.wireEvents = function () {\n EventHandler.add(this.dlgObj.element, 'click', this.checkBoxClickHandler, this);\n EventHandler.add(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch, this);\n EventHandler.add(this.dlgObj.element, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n };\n ColumnChooser.prototype.unWireEvents = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.dlgObj && this.dlgObj.element) {\n EventHandler.remove(this.dlgObj.element, 'click', this.checkBoxClickHandler);\n EventHandler.remove(this.dlgObj.element, 'keyup', this.keyUpHandler);\n }\n if (this.searchBoxObj) {\n EventHandler.remove(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch);\n this.searchBoxObj.unWireEvent();\n }\n };\n ColumnChooser.prototype.checkBoxClickHandler = function (e) {\n var checkstate;\n var elem = parentsUntil(e.target, 'e-checkbox-wrapper');\n if (elem) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateSelectAll(!elem.querySelector('.e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n elem.querySelector('.e-chk-hidden').focus();\n if (elem.querySelector('.e-check')) {\n checkstate = true;\n }\n else if (elem.querySelector('.e-uncheck')) {\n checkstate = false;\n }\n this.updateIntermediateBtn();\n var columnUid = parentsUntil(elem, 'e-ccheck').getAttribute('uid');\n var column = this.parent.getColumns();\n if (columnUid === 'grid-selectAll') {\n this.changedColumns = [];\n this.unchangedColumns = [];\n for (var i = 0; i < column.length; i++) {\n if (column[parseInt(i.toString(), 10)].showInColumnChooser) {\n this.checkstatecolumn(checkstate, column[parseInt(i.toString(), 10)].uid, true);\n }\n }\n }\n else {\n this.checkstatecolumn(checkstate, columnUid);\n }\n this.refreshCheckboxButton();\n this.setFocus(parentsUntil(e.target, 'e-cclist'));\n }\n };\n ColumnChooser.prototype.updateIntermediateBtn = function () {\n var cnt = this.ulElement.children.length - 1;\n var className = [];\n var elem = this.ulElement.children[0].querySelector('.e-frame');\n var selected = this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n var btn;\n if (!this.parent.enableAdaptiveUI) {\n btn = this.dlgObj.btnObj[0];\n btn.disabled = false;\n }\n else if (this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: false });\n }\n var inputElem = elem.parentElement.querySelector('input');\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(inputElem, true);\n }\n else if (selected) {\n className = ['e-stop'];\n inputElem.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n setChecked(inputElem, false);\n if (!this.parent.enableAdaptiveUI) {\n btn.disabled = true;\n }\n else if (this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: true });\n }\n }\n if (!this.parent.enableAdaptiveUI) {\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n };\n ColumnChooser.prototype.updateSelectAll = function (checked) {\n var cBoxes = [].slice.call(this.ulElement.getElementsByClassName('e-frame'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n var cBoxInput = cBox.parentElement.querySelector('input');\n if (cBox.classList.contains('e-check')) {\n setChecked(cBoxInput, true);\n }\n else if (cBox.classList.contains('e-uncheck')) {\n setChecked(cBoxInput, false);\n }\n }\n };\n ColumnChooser.prototype.refreshCheckboxButton = function () {\n var visibleCols = this.parent.getVisibleColumns();\n for (var i = 0; i < visibleCols.length; i++) {\n var columnUID = visibleCols[parseInt(i.toString(), 10)].uid;\n if (this.prevShowedCols.indexOf(columnUID) === -1 && visibleCols[parseInt(i.toString(), 10)].type !== 'checkbox') {\n this.prevShowedCols.push(columnUID);\n }\n }\n for (var i = 0; i < this.hideColumn.length; i++) {\n var index = this.prevShowedCols.indexOf(this.hideColumn[parseInt(i.toString(), 10)]);\n if (index !== -1) {\n this.prevShowedCols.splice(index, 1);\n }\n }\n var selected = this.showColumn.length !== 0 ? 1 : this.prevShowedCols.length;\n var btn;\n if (!this.parent.enableAdaptiveUI) {\n btn = this.dlgDiv.querySelector('.e-footer-content').querySelector('.e-btn').ej2_instances[0];\n btn.disabled = false;\n }\n else if (this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: false });\n }\n var srchShowCols = [];\n var searchData = [].slice.call(this.parent.element.getElementsByClassName('e-cc-chbox'));\n for (var i = 0, itemsLen = searchData.length; i < itemsLen; i++) {\n var element = searchData[parseInt(i.toString(), 10)];\n var columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n srchShowCols.push(columnUID);\n }\n var hideCols = this.showColumn.filter(function (column) { return srchShowCols.indexOf(column) !== -1; });\n if (selected === 0 && hideCols.length === 0) {\n if (!this.parent.enableAdaptiveUI) {\n btn.disabled = true;\n }\n else if (this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: true });\n }\n }\n if (!this.parent.enableAdaptiveUI) {\n btn.dataBind();\n }\n };\n ColumnChooser.prototype.refreshCheckboxList = function (gdCol) {\n this.ulElement = this.parent.createElement('ul', { className: 'e-ccul-ele e-cc' });\n var selectAllValue = this.l10n.getConstant('SelectAll');\n var cclist = this.parent.createElement('li', { className: 'e-cclist e-cc e-cc-selectall' });\n var selectAll = this.createCheckBox(selectAllValue, false, 'grid-selectAll');\n if (gdCol.length) {\n selectAll.querySelector('.e-checkbox-wrapper').firstElementChild.classList.add('e-selectall');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n this.checkState(selectAll.querySelector('.e-icons'), true);\n cclist.appendChild(selectAll);\n this.ulElement.appendChild(cclist);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([selectAll], this.parent.cssClass.split(' '));\n }\n else {\n addClass([selectAll], [this.parent.cssClass]);\n }\n }\n for (var i = 0; i < gdCol.length; i++) {\n var columns = gdCol[parseInt(i.toString(), 10)];\n this.renderCheckbox(columns);\n }\n return this.ulElement;\n };\n ColumnChooser.prototype.refreshCheckboxState = function () {\n this.dlgObj.element.querySelector('.e-cc.e-input').value = '';\n this.columnChooserSearch('');\n var gridObject = this.parent;\n var currentCheckBoxColls = this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)');\n for (var i = 0, itemLen = currentCheckBoxColls.length; i < itemLen; i++) {\n var element = currentCheckBoxColls[parseInt(i.toString(), 10)];\n var columnUID = void 0;\n if (this.parent.childGrid || this.parent.detailTemplate) {\n columnUID = parentsUntil(this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)')[parseInt(i.toString(), 10)], 'e-ccheck').getAttribute('uid');\n }\n else {\n columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n }\n var column = gridObject.getColumnByUid(columnUID);\n var uncheck = [].slice.call(element.parentElement.getElementsByClassName('e-uncheck'));\n if (column.visible && !uncheck.length) {\n element.checked = true;\n this.checkState(element.parentElement.querySelector('.e-icons'), true);\n }\n else {\n element.checked = false;\n this.checkState(element.parentElement.querySelector('.e-icons'), false);\n }\n }\n };\n ColumnChooser.prototype.checkState = function (element, state) {\n if (state) {\n classList(element, ['e-check'], ['e-uncheck']);\n }\n else {\n classList(element, ['e-uncheck'], ['e-check']);\n }\n };\n ColumnChooser.prototype.createCheckBox = function (label, checked, uid) {\n var cbox = checked ? this.cBoxTrue.cloneNode(true) : this.cBoxFalse.cloneNode(true);\n var cboxLabel = cbox.querySelector('.e-label');\n var inputcbox = cbox.querySelector('input');\n setChecked(inputcbox, checked);\n cboxLabel.setAttribute('id', uid + 'label');\n cboxLabel.innerHTML = label;\n inputcbox.setAttribute('aria-labelledby', cboxLabel.id);\n return createCboxWithWrap(uid, cbox, 'e-ccheck');\n };\n ColumnChooser.prototype.renderCheckbox = function (column) {\n var cclist;\n var hideColState;\n var showColState;\n if (column.showInColumnChooser) {\n cclist = this.parent.createElement('li', { className: 'e-cclist e-cc', styles: 'list-style:None', id: 'e-ccli_' + column.uid });\n hideColState = this.hideColumn.indexOf(column.uid) === -1 ? false : true;\n showColState = this.showColumn.indexOf(column.uid) === -1 ? false : true;\n var cccheckboxlist = this.createCheckBox(column.headerText, (column.visible && !hideColState) || showColState, column.uid);\n cclist.appendChild(cccheckboxlist);\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([cccheckboxlist], this.parent.cssClass.split(' '));\n }\n else {\n addClass([cccheckboxlist], [this.parent.cssClass]);\n }\n }\n this.ulElement.appendChild(cclist);\n }\n if (this.isInitialOpen) {\n this.updateIntermediateBtn();\n }\n };\n ColumnChooser.prototype.columnChooserManualSearch = function (e) {\n this.addcancelIcon();\n this.searchValue = e.target.value;\n this.stopTimer();\n this.startTimer(e);\n };\n ColumnChooser.prototype.startTimer = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var interval = !proxy.flag && e.keyCode !== 13 ? 500 : 0;\n this.timer = window.setInterval(function () { proxy.columnChooserSearch(proxy.searchValue); }, interval);\n };\n ColumnChooser.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ColumnChooser.prototype.addcancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.add('e-cc-cancel');\n this.dlgDiv.querySelector('.e-cc-cancel').setAttribute('title', this.l10n.getConstant('Clear'));\n };\n ColumnChooser.prototype.removeCancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.remove('e-cc-cancel');\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').setAttribute('title', this.l10n.getConstant('Search'));\n };\n ColumnChooser.prototype.mOpenDlg = function () {\n if (Browser.isDevice) {\n this.dlgObj.element.querySelector('.e-cc-searchdiv').classList.remove('e-input-focus');\n this.dlgObj.element.querySelectorAll('.e-cc-chbox')[0].focus();\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.querySelector('.e-cc-searchdiv').classList.add('e-input-focus');\n }\n };\n // internally use\n ColumnChooser.prototype.getModuleName = function () {\n return 'columnChooser';\n };\n ColumnChooser.prototype.hideOpenedDialog = function () {\n var openCC = [].slice.call(document.getElementsByClassName('e-ccdlg')).filter(function (dlgEle) {\n return dlgEle.classList.contains('e-popup-open');\n });\n for (var i = 0, dlgLen = openCC.length; i < dlgLen; i++) {\n if (this.parent.element.id + '_ccdlg' !== openCC[parseInt(i.toString(), 10)].id || openCC[parseInt(i.toString(), 10)].classList.contains('e-dialog')) {\n openCC[parseInt(i.toString(), 10)].ej2_instances[0].hide();\n }\n }\n };\n ColumnChooser.prototype.beforeOpenColumnChooserEvent = function () {\n var args1 = {\n requestType: 'beforeOpenColumnChooser', element: this.parent.element,\n columns: this.getColumns(), cancel: false,\n searchOperator: this.parent.columnChooserSettings.operator\n };\n this.parent.trigger(events.beforeOpenColumnChooser, args1);\n this.searchOperator = args1.searchOperator;\n return args1;\n };\n ColumnChooser.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n /**\n * To show the responsive custom sort dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.showCustomColumnChooser = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return ColumnChooser;\n}());\nexport { ColumnChooser };\n","import { EventHandler, detach, formatUnit, Browser, closest } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as events from '../base/constant';\nimport { getScrollBarWidth, parentsUntil, Global, frozenDirection, isChildColumn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos } from '../base/util';\nimport { isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nexport var resizeClassList = {\n root: 'e-rhandler',\n suppress: 'e-rsuppress',\n icon: 'e-ricon',\n helper: 'e-rhelper',\n header: 'th.e-headercell',\n cursor: 'e-rcursor'\n};\n/**\n * `Resize` module is used to handle Resize to fit for columns.\n *\n * @hidden\n * @private\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for the Grid resize module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Resize(parent) {\n this.tapped = false;\n this.isDblClk = true;\n /** @hidden */\n this.resizeProcess = false;\n this.isCancelAutoFit = false;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @param {number} startRowIndex - Specifies the start row index.\n * @param {number} endRowIndex - Specifies the end row index.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName, startRowIndex, endRowIndex) {\n var columnName = (fName === undefined || fName === null || fName.length <= 0) ?\n this.parent.getColumns().map(function (x) { return x.field; }) : (typeof fName === 'string') ? [fName] : fName;\n this.parent.isAutoFitColumns = true;\n if (this.parent.enableAdaptiveUI) {\n this.parent.element.classList.add('e-grid-autofit');\n }\n this.findColumn(columnName, startRowIndex, endRowIndex);\n };\n Resize.prototype.autoFit = function () {\n var newarray = this.parent.getColumns().filter(function (c) { return c.autoFit === true; })\n .map(function (c) { return c.field || c.headerText; });\n if (newarray.length > 0) {\n this.autoFitColumns(newarray);\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n this.widthService.setWidthToTable();\n }\n };\n Resize.prototype.getCellElementsByColumnIndex = function (columnIndex) {\n if (this.parent.frozenRows) {\n return [].slice.call(this.parent.getHeaderTable().querySelectorAll(\"td.e-rowcell:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption):not(.e-detailcell)\")).concat([].slice.call(this.parent.getContentTable().querySelectorAll(\"td.e-rowcell:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption):not(.e-detailcell)\")));\n }\n else {\n return [].slice.call(this.parent.getContentTable().querySelectorAll(\"td.e-rowcell:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption):not(.e-detailcell)\"));\n }\n };\n Resize.prototype.resizeColumn = function (fName, index, id, startRowIndex, endRowIndex) {\n var gObj = this.parent;\n var tWidth = 0;\n var headerTable = gObj.getHeaderTable();\n var contentTable = gObj.getContentTable();\n var footerTable;\n var headerDivTag = 'e-gridheader';\n var contentDivTag = literals.gridContent;\n var footerDivTag = literals.gridFooter;\n var indentWidth = 0;\n var uid = id ? id : this.parent.getUidByColumnField(fName);\n var columnIndex = this.parent.getNormalizedColumnIndex(uid);\n var headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n var contentTextClone = this.getCellElementsByColumnIndex(columnIndex);\n var footerTextClone;\n var columnIndexByField = this.parent.getColumnIndexByField(fName);\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n }\n var indentWidthClone = [].slice.call(headerTable.querySelector('tr').getElementsByClassName('e-grouptopleftcell'));\n if (indentWidthClone.length > 0) {\n for (var i = 0; i < indentWidthClone.length; i++) {\n indentWidth += indentWidthClone[parseInt(i.toString(), 10)].offsetWidth;\n }\n }\n var detailsElement = contentTable.querySelector('.e-detailrowcollapse') ||\n contentTable.querySelector('.e-detailrowexpand');\n if ((this.parent.detailTemplate || this.parent.childGrid) && detailsElement) {\n indentWidth += detailsElement.offsetWidth;\n }\n var headerText = [headerTextClone];\n var contentText = [];\n var footerText = [];\n if (footerTable) {\n for (var i = 0; i < footerTextClone.length; i++) {\n footerText[parseInt(i.toString(), 10)] = footerTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n }\n for (var i = 0; i < contentTextClone.length; i++) {\n contentText[parseInt(i.toString(), 10)] = contentTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n var wHeader = this.createTable(headerTable, headerText, headerDivTag);\n var wFooter = null;\n var wContent = null;\n if (gObj.getCurrentViewRecords().length) {\n wContent = this.createTable(contentTable, contentText, contentDivTag, startRowIndex, endRowIndex);\n }\n if (footerText.length) {\n wFooter = this.createTable(footerTable, footerText, footerDivTag);\n }\n var columnbyindex = gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)];\n var width = columnbyindex.width = formatUnit(Math.max(wHeader, wContent, wFooter));\n var colMaxWidth = columnbyindex.maxWidth && parseFloat(columnbyindex.maxWidth.toString());\n if (parseInt(width, 10) > colMaxWidth) {\n columnbyindex.width = colMaxWidth;\n }\n this.widthService.setColumnWidth(gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)]);\n var result = gObj.getColumns().some(function (x) { return x.width === null\n || x.width === undefined || x.width.length <= 0; });\n if (result === false) {\n var element = gObj.getColumns();\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].visible) {\n tWidth = tWidth + parseFloat(element[parseInt(i.toString(), 10)].width);\n }\n }\n }\n var calcTableWidth = tWidth + indentWidth;\n if (tWidth > 0) {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }));\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n calcTableWidth = '100%';\n }\n headerTable.style.width = formatUnit(calcTableWidth);\n contentTable.style.width = formatUnit(calcTableWidth);\n if (!isNullOrUndefined(footerTable)) {\n footerTable.style.width = formatUnit(calcTableWidth);\n }\n }\n if (gObj.isFrozenGrid() && gObj.enableColumnVirtualization) {\n this.widthService.refreshFrozenScrollbar();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n Resize.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.widthService = null;\n this.unwireEvents();\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n Resize.prototype.findColumn = function (fName, startRowIndex, endRowIndex) {\n for (var i = 0; i < fName.length; i++) {\n var fieldName = fName[parseInt(i.toString(), 10)];\n var columnIndex = this.parent.getColumnIndexByField(fieldName);\n var column = this.parent.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (columnIndex > -1 && !isNullOrUndefined(column) && column.visible === true) {\n this.resizeColumn(fieldName, columnIndex, null, startRowIndex, endRowIndex);\n }\n }\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshResizefrzCols(true, true);\n }\n };\n /**\n * To create table for autofit\n *\n * @param {Element} table - specifies the table\n * @param {Element[]} text - specifies the text\n * @param {string} tag - specifies the tag name\n * @param {number} startRowIndex - Specifies the start row index.\n * @param {number} endRowIndex - Specifies the end row index.\n * @returns {number} returns the number\n * @hidden\n */\n Resize.prototype.createTable = function (table, text, tag, startRowIndex, endRowIndex) {\n if (startRowIndex === void 0) { startRowIndex = 1; }\n if (endRowIndex === void 0) { endRowIndex = text.length; }\n if (startRowIndex > endRowIndex) {\n startRowIndex ^= endRowIndex;\n endRowIndex ^= startRowIndex;\n startRowIndex ^= endRowIndex;\n }\n var myTableDiv = this.parent.createElement('div');\n var adaptiveClass = this.parent.enableAdaptiveUI ? ' e-bigger' : '';\n myTableDiv.className = this.parent.element.className + adaptiveClass;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.parent.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.parent.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table.className;\n myTable.classList.add('e-resizetable');\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var myTr = this.parent.createElement('tr');\n for (var i = (startRowIndex <= 0 ? 1 : startRowIndex); i <= (endRowIndex > text.length ? text.length : endRowIndex); i++) {\n var tr = myTr.cloneNode();\n tr.className = table.querySelector('tr').className;\n tr.appendChild(text[parseInt((i - 1).toString(), 10)]);\n myTable.appendChild(tr);\n }\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n var offsetWidthValue = myTable.getBoundingClientRect().width;\n document.body.removeChild(myTableDiv);\n return Math.ceil(offsetWidthValue);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerRefreshed, this.refreshHeight, this);\n this.parent.on(events.refreshResizePosition, this.refreshResizePosition, this);\n this.parent.on(events.initialEnd, this.wireEvents, this);\n this.parent.on(events.contentReady, this.autoFit, this);\n this.parent.on(events.refreshHandlers, this.refreshHeight, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.headerRefreshed, this.refreshHeight);\n this.parent.off(events.refreshResizePosition, this.refreshResizePosition);\n this.parent.off(events.initialEnd, this.wireEvents);\n this.parent.off(events.refreshHandlers, this.refreshHeight);\n this.parent.off(events.destroy, this.destroy);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.render = function () {\n this.unwireEvents();\n this.wireEvents();\n this.setHandlerHeight();\n };\n Resize.prototype.refreshHeight = function () {\n if (this.parent.getHeaderTable()) {\n var element = this.getResizeHandlers();\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].parentElement.offsetHeight > 0) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n }\n this.setHandlerHeight();\n }\n };\n Resize.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart, this);\n EventHandler.add(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit, this);\n };\n Resize.prototype.unwireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart);\n EventHandler.remove(this.parent.getHeaderContent(), events.dblclick, this.callAutoFit);\n };\n Resize.prototype.getResizeHandlers = function () {\n return [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.root));\n };\n Resize.prototype.setHandlerHeight = function () {\n var element = [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.suppress));\n for (var i = 0; i < element.length; i++) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.callAutoFit = function (e) {\n if (e.target.classList.contains('e-rhandler') && !this.isCancelAutoFit) {\n var col = this.getTargetColumn(e);\n if (col.columns) {\n return;\n }\n this.resizeColumn(col.field, this.parent.getNormalizedColumnIndex(col.uid), col.uid);\n if (this.parent.isFrozenGrid()) {\n this.refreshResizefrzCols(true, true);\n }\n var header = closest(e.target, resizeClassList.header);\n header.classList.add('e-resized');\n }\n };\n Resize.prototype.touchResizeStart = function (e) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n return this.resizeStart(e);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.callAutoFit(e);\n }\n };\n Resize.prototype.resizeStart = function (e) {\n var _this = this;\n if (e.target.classList.contains('e-rhandler')) {\n this.isCancelAutoFit = false;\n var args = { e: e, column: this.getTargetColumn(e) };\n this.parent.trigger(events.resizeStart, args, function (args) {\n if (args.cancel || _this.parent.isEdit) {\n _this.cancelResizeAction();\n _this.isCancelAutoFit = true;\n return;\n }\n });\n if (!this.isCancelAutoFit) {\n if (!this.helper) {\n if (this.getScrollBarWidth() === 0) {\n this.resizeProcess = true;\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n for (var _i = 0, _a = this.refreshColumnWidth(); _i < _a.length; _i++) {\n var col = _a[_i];\n this.widthService.setColumnWidth(col);\n }\n this.widthService.setWidthToTable();\n this.resizeProcess = false;\n }\n this.refreshStackedColumnWidth();\n this.element = e.target;\n this.parentElementWidth = this.parent.element.getBoundingClientRect().width;\n this.appendHelper();\n this.column = this.getTargetColumn(e);\n this.pageX = this.getPointX(e);\n if (this.column.getFreezeTableName() === literals.frozenRight) {\n if (this.parent.enableRtl) {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n else {\n this.minMove = parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n }\n else if (this.parent.enableRtl) {\n this.minMove = parseFloat(this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n else {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n this.minMove += this.pageX;\n }\n if (Browser.isDevice && !this.helper.classList.contains(resizeClassList.icon)) {\n this.helper.classList.add(resizeClassList.icon);\n EventHandler.add(document, Browser.touchStartEvent, this.removeHelper, this);\n EventHandler.add(this.helper, Browser.touchStartEvent, this.resizeStart, this);\n }\n else {\n EventHandler.add(document, Browser.touchEndEvent, this.resizeEnd, this);\n EventHandler.add(this.parent.element, Browser.touchMoveEvent, this.resizing, this);\n this.updateCursor('add');\n }\n }\n }\n };\n Resize.prototype.cancelResizeAction = function (removeEvents) {\n if (removeEvents) {\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n }\n if (Browser.isDevice && !isNullOrUndefined(this.helper)) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n }\n if (!isNullOrUndefined(this.helper)) {\n detach(this.helper);\n }\n this.refresh();\n };\n Resize.prototype.getWidth = function (width, minWidth, maxWidth) {\n if (minWidth && width < minWidth) {\n return minWidth;\n }\n else if ((maxWidth && width > maxWidth)) {\n return maxWidth;\n }\n else {\n return width;\n }\n };\n Resize.prototype.updateResizeEleHeight = function () {\n var elements = [].slice.call(this.parent.getHeaderContent().getElementsByClassName('e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[parseInt(i.toString(), 10)].style.height = this.element.parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.getColData = function (column, mousemove) {\n return {\n width: parseFloat(isNullOrUndefined(this.widthService.getWidth(column)) || this.widthService.getWidth(column) === 'auto' ? '0'\n : this.widthService.getWidth(column).toString()) + mousemove,\n minWidth: column.minWidth ? parseFloat(column.minWidth.toString()) : null,\n maxWidth: column.maxWidth ? parseFloat(column.maxWidth.toString()) : null\n };\n };\n Resize.prototype.refreshResizeFixedCols = function (pos) {\n var cols = this.parent.getColumns();\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n var th = [].slice.call(this.parent.getHeaderContent().querySelector('tbody').querySelectorAll('.e-fixedfreeze')).concat([].slice.call(this.parent.getContent().querySelectorAll('.e-fixedfreeze')));\n for (var i = 0; i < th.length; i++) {\n var node = th[parseInt(i.toString(), 10)];\n var column = void 0;\n if (node.classList.contains('e-summarycell')) {\n var uid = node.getAttribute('e-mappinguid');\n column = this.parent.getColumnByUid(uid);\n }\n else {\n var index = parseInt(node.getAttribute('data-colindex'), 10);\n column = cols[parseInt(index.toString(), 10)];\n }\n var width = 0;\n if (pos === 'Left') {\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var j = 0; j < cols.length; j++) {\n if (column.index > cols[parseInt(j.toString(), 10)].index) {\n if (column.uid === cols[parseInt(j.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(j.toString(), 10)].freeze === 'Left' || cols[parseInt(j.toString(), 10)].isFrozen) ||\n cols[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(j.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(j.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, ((width === 0 ? width : width - 1) - translateX), this.parent.enableRtl, 'Left');\n }\n if (pos === 'Right') {\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var j = cols.length - 1; j >= 0; j--) {\n if (column.uid === cols[parseInt(j.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(j.toString(), 10)].freeze === 'Right' || cols[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(j.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(j.toString(), 10)].width.toString());\n }\n }\n }\n var colSpanwidth = 0;\n if (node.colSpan > 1) {\n colSpanwidth = this.calculateColspanWidth(cols, node, column.index);\n }\n applyStickyLeftRightPosition(node, (width - colSpanwidth) + translateX, this.parent.enableRtl, 'Right');\n }\n }\n };\n Resize.prototype.calculateColspanWidth = function (cols, node, index) {\n var width = 0;\n for (var j = index + 1; j < index + node.colSpan; j++) {\n width += parseInt(cols[parseInt(j.toString(), 10)].width.toString(), 10);\n }\n return width;\n };\n Resize.prototype.refreshResizePosition = function () {\n this.refreshResizefrzCols(true);\n };\n Resize.prototype.refreshResizefrzCols = function (freezeRefresh, isAutoFitCol) {\n var _this = this;\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n if (freezeRefresh || ((this.column.freeze === 'Left' || this.column.isFrozen) ||\n (this.column.columns && frozenDirection(this.column) === 'Left'))) {\n var width_1 = this.parent.getIndentCount() * 30;\n var columns = this.parent.getColumns().filter(function (col) { return col.freeze === 'Left' || col.isFrozen; });\n if (!freezeRefresh || isAutoFitCol) {\n this.frzHdrRefresh('Left');\n }\n for (var i = 0; i < columns.length; i++) {\n if (freezeRefresh || (columns[parseInt(i.toString(), 10)].index > this.column.index)) {\n var elements = [];\n if (this.parent.frozenRows) {\n elements = [].slice.call(this.parent.getHeaderContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')).concat([].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')));\n }\n else {\n elements = [].slice.call(this.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]'));\n }\n elements.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width_1 - translateX, _this.parent.enableRtl, 'Left');\n });\n if (this.parent.enableColumnVirtualization) {\n columns[parseInt(i.toString(), 10)].valueX = width_1;\n }\n }\n if (columns[parseInt(i.toString(), 10)].visible) {\n width_1 += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n }\n this.refreshResizeFixedCols('Left');\n }\n if (freezeRefresh || (this.column.freeze === 'Right' || (this.column.columns && frozenDirection(this.column) === 'Right'))) {\n var width_2 = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n var columns_1 = this.parent.getColumns();\n if (!freezeRefresh || isAutoFitCol) {\n this.frzHdrRefresh('Right');\n }\n var columnsRight = columns_1.filter(function (col) { return col.freeze === 'Right'; });\n var _loop_1 = function (i) {\n var elements = [];\n if (this_1.parent.frozenRows) {\n elements = [].slice.call(this_1.parent.getHeaderContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')).concat([].slice.call(this_1.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]')));\n }\n else {\n elements = [].slice.call(this_1.parent.getContent().querySelectorAll('td[data-colindex=\"' + i + '\"]'));\n }\n elements.filter(function (cell) {\n var colSpanwidth = 0;\n if (cell.colSpan > 1) {\n colSpanwidth = _this.calculateColspanWidth(columns_1, cell, columns_1[parseInt(i.toString(), 10)].index);\n }\n applyStickyLeftRightPosition(cell, (width_2 - colSpanwidth) + translateX, _this.parent.enableRtl, 'Right');\n });\n if (this_1.parent.enableColumnVirtualization) {\n columns_1[parseInt(i.toString(), 10)].valueX = width_2;\n }\n if (columns_1[parseInt(i.toString(), 10)].visible) {\n width_2 = width_2 + parseFloat(columns_1[parseInt(i.toString(), 10)].width.toString());\n }\n };\n var this_1 = this;\n for (var i = columns_1.length - 1; i >= columns_1.length - columnsRight.length; i--) {\n _loop_1(i);\n }\n this.refreshResizeFixedCols('Right');\n }\n if (this.column && (this.column.freeze === 'Fixed' || (this.column.columns && frozenDirection(this.column) === 'Fixed'))) {\n this.refreshResizeFixedCols('Left');\n this.refreshResizeFixedCols('Right');\n this.frzHdrRefresh('Left');\n this.frzHdrRefresh('Right');\n }\n if (this.parent.groupSettings.columns.length && this.parent.aggregates.length &&\n this.parent.getContent().querySelector('.e-groupcaptionrow')) {\n this.refreshGroupCaptionRow();\n }\n };\n Resize.prototype.refreshGroupCaptionRow = function () {\n var capRow = [].slice.call(this.parent.getContent().querySelectorAll('.e-groupcaptionrow'));\n for (var i = 0; i < capRow.length; i++) {\n var tr = capRow[parseInt(i.toString(), 10)];\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n }\n };\n Resize.prototype.frzHdrRefresh = function (pos) {\n var _this = this;\n var translateX = this.parent.enableColumnVirtualization ? this.parent.translateX : 0;\n if (pos === 'Left') {\n var tr = [].slice.call(this.parent.getHeaderContent().querySelector('thead').querySelectorAll('tr'));\n for (var i = 0; i < tr.length; i++) {\n var th = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-fixedfreeze'));\n var _loop_2 = function (j) {\n var node = th[parseInt(j.toString(), 10)];\n if (node.classList.contains('e-rowdragheader') || node.classList.contains('e-dragheadercell') ||\n node.classList.contains('e-grouptopleftcell')) {\n return \"continue\";\n }\n var column = this_2.getParticularCol(node);\n var cols = this_2.parent.getColumns();\n var width = 0;\n var summarycell = [];\n if (this_2.parent.aggregates.length && this_2.parent.getFooterContent()) {\n if (this_2.parent.getContent().querySelectorAll('.e-summaryrow').length) {\n var summaryRows = [].slice.call(this_2.parent.getContent().querySelectorAll('.e-summaryrow'));\n summaryRows.filter(function (row) {\n summarycell.push(row.querySelector('[e-mappinguid=\"' + column.uid + '\"]'));\n });\n }\n summarycell = summarycell.concat([].slice.call(this_2.parent.getFooterContent().querySelectorAll('[e-mappinguid=\"' + column.uid + '\"]')));\n }\n if (node.classList.contains('e-fixedfreeze')) {\n if (this_2.parent.getVisibleFrozenLeftCount()) {\n width = this_2.parent.getIndentCount() * 30;\n }\n else if (this_2.parent.getFrozenMode() === 'Right') {\n width = this_2.parent.groupSettings.columns.length * 30;\n }\n for (var w = 0; w < cols.length; w++) {\n if (column.index > cols[parseInt(w.toString(), 10)].index) {\n if (column.uid === cols[parseInt(w.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(w.toString(), 10)].freeze === 'Left' || cols[parseInt(w.toString(), 10)].isFrozen) ||\n cols[parseInt(w.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(w.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(w.toString(), 10)].width.toString(), 10);\n }\n }\n }\n }\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, ((width === 0 ? width : width - 1) - translateX), this_2.parent.enableRtl, 'Left');\n }\n else {\n width = this_2.parent.getIndentCount() * 30;\n if (column.index === 0) {\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, width - translateX, this_2.parent.enableRtl, 'Left');\n if (this_2.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n else {\n for (var k = 0; k < cols.length; k++) {\n if (column.index < cols[parseInt(k.toString(), 10)].index ||\n column.uid === cols[parseInt(k.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(k.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(k.toString(), 10)].width.toString(), 10);\n }\n }\n if (summarycell && summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width - translateX, _this.parent.enableRtl, 'Left');\n });\n }\n applyStickyLeftRightPosition(node, width - translateX, this_2.parent.enableRtl, 'Left');\n if (this_2.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n };\n var this_2 = this;\n for (var j = 0; j < th.length; j++) {\n _loop_2(j);\n }\n }\n }\n if (pos === 'Right') {\n var tr = [].slice.call(this.parent.getHeaderContent().querySelector('thead').querySelectorAll('tr'));\n for (var i = 0; i < tr.length; i++) {\n var th = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-rightfreeze, .e-fixedfreeze'));\n var _loop_3 = function (j) {\n var node = th[parseInt(j.toString(), 10)];\n var column = this_3.getParticularCol(node);\n var cols = this_3.parent.getColumns();\n var width = 0;\n var summarycell = [];\n if (this_3.parent.aggregates.length && this_3.parent.getFooterContent()) {\n if (this_3.parent.getContent().querySelectorAll('.e-summaryrow').length) {\n var summaryRows = [].slice.call(this_3.parent.getContent().querySelectorAll('.e-summaryrow'));\n summaryRows.filter(function (row) {\n summarycell.push(row.querySelector('[e-mappinguid=\"' + column.uid + '\"]'));\n });\n }\n summarycell = summarycell.concat([].slice.call(this_3.parent.getFooterContent().querySelectorAll('[e-mappinguid=\"' + column.uid + '\"]')));\n }\n if (node.classList.contains('e-fixedfreeze')) {\n width = this_3.parent.getFrozenMode() === 'Right' && this_3.parent.isRowDragable() ? 30 : 0;\n for (var w = cols.length - 1; w >= 0; w--) {\n if (column.index < cols[parseInt(w.toString(), 10)].index) {\n if ((column.columns && isChildColumn(column, cols[parseInt(w.toString(), 10)].uid)) ||\n column.index > cols[parseInt(w.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(w.toString(), 10)].freeze === 'Right' ||\n cols[parseInt(w.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(w.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(w.toString(), 10)].width.toString());\n }\n }\n }\n }\n if (summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width + translateX, _this.parent.enableRtl, 'Right');\n });\n }\n applyStickyLeftRightPosition(node, width + translateX, this_3.parent.enableRtl, 'Right');\n }\n else {\n width = this_3.parent.getFrozenMode() === 'Right' && this_3.parent.isRowDragable() ? 30 : 0;\n for (var k = cols.length - 1; k >= 0; k--) {\n if ((column.columns && isChildColumn(column, cols[parseInt(k.toString(), 10)].uid)) ||\n column.index > cols[parseInt(k.toString(), 10)].index ||\n column.uid === cols[parseInt(k.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(k.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(k.toString(), 10)].width.toString(), 10);\n }\n }\n if (summarycell.length) {\n summarycell.filter(function (cell) {\n applyStickyLeftRightPosition(cell, width + translateX, _this.parent.enableRtl, 'Right');\n });\n }\n applyStickyLeftRightPosition(node, width + translateX, this_3.parent.enableRtl, 'Right');\n if (this_3.parent.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n };\n var this_3 = this;\n for (var j = th.length - 1; j >= 0; j--) {\n _loop_3(j);\n }\n }\n }\n };\n Resize.prototype.getParticularCol = function (node) {\n var uid = node.classList.contains('e-filterbarcell') ? node.getAttribute('e-mappinguid') :\n node.querySelector('[e-mappinguid]').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.resizing = function (e) {\n if (isNullOrUndefined(this.column)) {\n return;\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshResizefrzCols();\n }\n var offsetWidth = 0;\n if (isNullOrUndefined(this.column)) {\n offsetWidth = parentsUntil(this.element, 'th').offsetWidth;\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.setHelperHeight();\n }\n var pageX = this.getPointX(e);\n var mousemove = this.parent.enableRtl ? -(pageX - this.pageX) : (pageX - this.pageX);\n var colData = this.getColData(this.column, mousemove);\n if (!colData.width) {\n colData.width = closest(this.element, 'th').offsetWidth;\n }\n var width = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n this.parent.log('resize_min_max', { column: this.column, width: width });\n if (((!this.parent.enableRtl && this.minMove >= pageX) || (this.parent.enableRtl && this.minMove <= pageX))) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n if (width !== parseFloat(isNullOrUndefined(this.column.width) || this.column.width === 'auto' ?\n offsetWidth.toString() : this.column.width.toString())) {\n this.pageX = pageX;\n this.column.width = formatUnit(width);\n var args = {\n e: e,\n column: this.column\n };\n this.parent.trigger(events.onResize, args);\n if (args.cancel) {\n this.cancelResizeAction(true);\n return;\n }\n var columns = [this.column];\n var finalColumns = [this.column];\n if (this.column.columns) {\n columns = this.getSubColumns(this.column, []);\n columns = this.calulateColumnsWidth(columns, false, mousemove);\n finalColumns = this.calulateColumnsWidth(columns, true, mousemove);\n }\n this.resizeProcess = true;\n for (var _i = 0, finalColumns_1 = finalColumns; _i < finalColumns_1.length; _i++) {\n var col = finalColumns_1[_i];\n this.widthService.setColumnWidth(col, null, 'resize');\n }\n this.resizeProcess = false;\n this.updateHelper();\n }\n this.isDblClk = false;\n };\n Resize.prototype.calulateColumnsWidth = function (columns, isUpdate, mousemove) {\n var finalColumns = [];\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n var totalWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n totalWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n var colData = this.getColData(col, (parseFloat(col.width)) * mousemove / totalWidth);\n var colWidth = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n if ((colWidth !== parseFloat(col.width.toString()))) {\n if (isUpdate) {\n col.width = formatUnit(colWidth < 1 ? 1 : colWidth);\n }\n finalColumns.push(col);\n }\n }\n return finalColumns;\n };\n Resize.prototype.getSubColumns = function (column, subColumns) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false && col.allowResizing) {\n if (col.columns) {\n this.getSubColumns(col, subColumns);\n }\n else {\n subColumns.push(col);\n }\n }\n }\n return subColumns;\n };\n Resize.prototype.resizeEnd = function (e) {\n if (!this.helper || this.parent.isDestroyed) {\n return;\n }\n var gObj = this.parent;\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n detach(this.helper);\n var args = { e: e, column: this.column };\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var cTable = content;\n if (cTable.scrollHeight > cTable.clientHeight) {\n this.parent.scrollModule.setPadding();\n cTable.style.overflowY = 'scroll';\n }\n this.parent.trigger(events.resizeStop, args);\n closest(this.element, '.e-headercell').classList.add('e-resized');\n this.isFrozenColResized = false;\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.parent.notify(events.textWrapRefresh, { case: 'textwrap' });\n }\n var headerTable = gObj.getHeaderTable();\n var contentTable = gObj.getContentTable();\n var footerTable;\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n this.refresh();\n this.doubleTapEvent(e);\n this.isDblClk = true;\n };\n Resize.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Resize.prototype.refreshColumnWidth = function () {\n var columns = this.parent.getColumns();\n for (var _i = 0, _a = [].slice.apply(this.parent.getHeaderContent().querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, columns_3 = columns; _b < columns_3.length; _b++) {\n var column = columns_3[_b];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === column.uid && column.visible) {\n column.width = ele.getBoundingClientRect().width;\n break;\n }\n }\n }\n return columns;\n };\n Resize.prototype.refreshStackedColumnWidth = function () {\n for (var _i = 0, _a = this.parent.getStackedColumns(this.parent.columns); _i < _a.length; _i++) {\n var stackedColumn = _a[_i];\n stackedColumn.width = this.getStackedWidth(stackedColumn, 0);\n }\n };\n Resize.prototype.getStackedWidth = function (column, width) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false) {\n if (col.columns) {\n width = this.getStackedWidth(col, width);\n }\n else {\n width += parseFloat(col.width.toString());\n }\n }\n }\n return width;\n };\n Resize.prototype.getTargetColumn = function (e) {\n var cell = closest(e.target, resizeClassList.header);\n cell = cell.querySelector('.e-headercelldiv') || cell.querySelector('.e-stackedheadercelldiv');\n var uid = cell.getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.updateCursor = function (action) {\n var headerRows = [].slice.call(this.parent.getHeaderContent().querySelectorAll('th'));\n headerRows.push(this.parent.element);\n for (var _i = 0, headerRows_1 = headerRows; _i < headerRows_1.length; _i++) {\n var row = headerRows_1[_i];\n row.classList[\"\" + action](resizeClassList.cursor);\n }\n };\n Resize.prototype.refresh = function () {\n this.column = null;\n this.pageX = null;\n this.element = null;\n this.helper = null;\n };\n Resize.prototype.appendHelper = function () {\n this.helper = this.parent.createElement('div', {\n className: resizeClassList.helper\n });\n this.parent.element.appendChild(this.helper);\n this.setHelperHeight();\n };\n Resize.prototype.setHelperHeight = function () {\n var height = this.parent.getContent().offsetHeight - this.getScrollBarWidth();\n var rect = closest(this.element, resizeClassList.header);\n var tr = [].slice.call(this.parent.getHeaderContent().querySelectorAll('tr'));\n for (var i = tr.indexOf(rect.parentElement); i < tr.length && i > -1; i++) {\n height += tr[parseInt(i.toString(), 10)].offsetHeight;\n }\n var pos = this.calcPos(rect);\n pos.left += (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2);\n this.helper.style.cssText = 'height: ' + height + 'px; top: ' + pos.top + 'px; left:' + Math.floor(pos.left) + 'px;';\n if (this.parent.enableVirtualization) {\n this.helper.classList.add('e-virtual-rhandler');\n }\n };\n Resize.prototype.getScrollBarWidth = function (height) {\n var ele = this.parent.getContent().firstChild;\n return (ele.scrollHeight > ele.clientHeight && height) ||\n ele.scrollWidth > ele.clientWidth ? getScrollBarWidth() : 0;\n };\n Resize.prototype.removeHelper = function (e) {\n var cls = e.target.classList;\n if (!(cls.contains(resizeClassList.root) || cls.contains(resizeClassList.icon)) && this.helper) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n detach(this.helper);\n this.refresh();\n }\n };\n Resize.prototype.updateHelper = function () {\n var rect = closest(this.element, resizeClassList.header);\n var left;\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2));\n var borderWidth = 2; // to maintain the helper inside of grid element.\n if (left > this.parentElementWidth) {\n left = this.parentElementWidth - borderWidth;\n }\n this.helper.style.left = left + 'px';\n };\n Resize.prototype.calcPos = function (elem) {\n var parentOffset = {\n top: 0,\n left: 0\n };\n var offset = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var offsetParent = parentsUntil(elem, 'e-grid') || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n };\n Resize.prototype.doubleTapEvent = function (e) {\n var _this = this;\n if (this.getUserAgent() && this.isDblClk) {\n if (!this.tapped) {\n this.tapped = setTimeout(function () {\n _this.tapped = null;\n }, 300);\n }\n else {\n clearTimeout(this.tapped);\n this.callAutoFit(e);\n this.tapped = null;\n }\n }\n };\n Resize.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n Resize.prototype.timeoutHandler = function () {\n this.tapped = null;\n };\n return Resize;\n}());\nexport { Resize };\n","import { EventHandler, closest, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { parentsUntil, applyBiggerTheme } from '../base/util';\nimport * as events from '../base/constant';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Group } from '../actions/group';\nimport { Sort } from '../actions/sort';\nimport { Filter } from '../actions/filter';\nimport { Resize } from '../actions/resize';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * 'column menu module used to handle column menu actions'\n *\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n function ColumnMenu(parent, serviceLocator) {\n this.defaultItems = {};\n this.localeText = this.setLocaleKey();\n this.disableItems = [];\n this.hiddenItems = [];\n this.isOpen = false;\n // default class names\n this.GROUP = 'e-icon-group';\n this.UNGROUP = 'e-icon-ungroup';\n this.ASCENDING = 'e-icon-ascending';\n this.DESCENDING = 'e-icon-descending';\n this.ROOT = 'e-columnmenu';\n this.FILTER = 'e-icon-filter';\n this.POP = 'e-filter-popup';\n this.WRAP = 'e-col-menu';\n this.COL_POP = 'e-colmenu-popup';\n this.CHOOSER = '_chooser_';\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n if (this.parent.enableAdaptiveUI) {\n this.setFullScreenDialog();\n }\n }\n ColumnMenu.prototype.wireEvents = function () {\n if (!this.parent.enableAdaptiveUI) {\n var elements = this.getColumnMenuHandlers();\n for (var i = 0; i < elements.length; i++) {\n EventHandler.add(elements[parseInt(i.toString(), 10)], 'mousedown', this.columnMenuHandlerDown, this);\n }\n }\n };\n ColumnMenu.prototype.unwireEvents = function () {\n if (!this.parent.enableAdaptiveUI) {\n var elements = this.getColumnMenuHandlers();\n for (var i = 0; i < elements.length; i++) {\n EventHandler.remove(elements[parseInt(i.toString(), 10)], 'mousedown', this.columnMenuHandlerDown);\n }\n }\n };\n ColumnMenu.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isColMenu);\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement.querySelector('.' + literals.gridContent) && (!gridElement.querySelector('.' + literals.gridHeader)) || !gridElement) {\n return;\n }\n if (this.columnMenu) {\n this.columnMenu.destroy();\n }\n this.removeEventListener();\n this.unwireFilterEvents();\n this.unwireEvents();\n if (!this.parent.enableAdaptiveUI && this.element.parentNode) {\n remove(this.element);\n }\n };\n ColumnMenu.prototype.columnMenuHandlerClick = function (e) {\n if (e.target.classList.contains('e-columnmenu')) {\n if (this.parent.enableAdaptiveUI) {\n this.headerCell = this.getHeaderCell(e);\n var col = this.getColumn();\n this.responsiveDialogRenderer.isCustomDialog = true;\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n this.parent.notify(events.filterOpen, { col: col, target: e.target, isClose: null, id: null });\n this.responsiveDialogRenderer.showResponsiveDialog(null, col);\n }\n else {\n this.columnMenu.items = this.getItems();\n this.columnMenu.dataBind();\n if ((this.isOpen && this.headerCell !== this.getHeaderCell(e)) ||\n document.querySelector('.e-grid-menu .e-menu-parent.e-ul')) {\n this.columnMenu.close();\n this.openColumnMenu(e);\n }\n else if (!this.isOpen) {\n this.openColumnMenu(e);\n }\n else {\n this.columnMenu.close();\n }\n }\n }\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.openColumnMenuByField = function (field) {\n this.openColumnMenu({ target: this.parent.getColumnHeaderByField(field).querySelector('.e-columnmenu') });\n };\n ColumnMenu.prototype.afterFilterColumnMenuClose = function () {\n if (this.columnMenu) {\n this.columnMenu.items = this.getItems();\n this.columnMenu.dataBind();\n this.columnMenu.close();\n }\n };\n ColumnMenu.prototype.openColumnMenu = function (e) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n var headerEle = this.parent.getHeaderContent();\n var headerElemCliRect = headerEle.getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n this.element.style.cssText = 'display:block;visibility:hidden';\n var elePos = this.element.getBoundingClientRect();\n var gClient = this.parent.element.getBoundingClientRect();\n this.element.style.cssText = 'display:none;visibility:visible';\n this.headerCell = this.getHeaderCell(e);\n if (this.parent.enableRtl) {\n pos = this.parent.enableStickyHeader ? calculatePosition(this.headerCell, 'left', 'bottom', true) :\n calculatePosition(this.headerCell, 'left', 'bottom');\n }\n else {\n pos = this.parent.enableStickyHeader ? calculatePosition(this.headerCell, 'right', 'bottom', true) :\n calculatePosition(this.headerCell, 'right', 'bottom');\n pos.left -= elePos.width;\n if (headerEle.classList.contains('e-sticky')) {\n pos.top = this.parent.element.offsetTop + headerElemCliRect.top + headerElemCliRect.height;\n if (headerElemCliRect.top + headerElemCliRect.height > contentRect.top) {\n pos.top += ((headerElemCliRect.top + headerElemCliRect.height) - contentRect.top);\n }\n }\n else if (this.parent.enableStickyHeader) {\n pos.top = this.parent.element.offsetTop + headerEle.offsetTop + headerElemCliRect.height;\n }\n if ((pos.left + elePos.width + 1) >= gClient.right) {\n pos.left -= 35;\n }\n }\n this.columnMenu['open'](pos.top, pos.left);\n if (e.preventDefault) {\n e.preventDefault();\n }\n applyBiggerTheme(this.parent.element, this.columnMenu.element.parentElement);\n };\n ColumnMenu.prototype.columnMenuHandlerDown = function () {\n this.isOpen = !(this.element.style.display === 'none' || this.element.style.display === '');\n };\n ColumnMenu.prototype.getColumnMenuHandlers = function () {\n return [].slice.call(this.parent.getHeaderTable().getElementsByClassName(this.ROOT));\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerRefreshed, this.wireEvents, this);\n this.parent.on(events.uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(events.initialEnd, this.render, this);\n if (this.isFilterItemAdded()) {\n this.parent.on(events.filterDialogCreated, this.filterPosition, this);\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction, this);\n this.parent.on(events.click, this.columnMenuHandlerClick, this);\n this.parent.on(events.afterFilterColumnMenuClose, this.afterFilterColumnMenuClose, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.headerRefreshed, this.unwireEvents);\n this.parent.off(events.uiUpdate, this.enableAfterRenderMenu);\n this.parent.off(events.initialEnd, this.render);\n if (this.isFilterItemAdded()) {\n this.parent.off(events.filterDialogCreated, this.filterPosition);\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction);\n this.parent.off(events.click, this.columnMenuHandlerClick);\n this.parent.on(events.afterFilterColumnMenuClose, this.afterFilterColumnMenuClose);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n ColumnMenu.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.action === 'altDownArrow') {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openColumnMenuByField(column.field);\n }\n }\n };\n ColumnMenu.prototype.enableAfterRenderMenu = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.columnMenu) {\n this.columnMenu.destroy();\n remove(this.element);\n }\n if (!this.parent.enableAdaptiveUI) {\n this.render();\n }\n }\n };\n ColumnMenu.prototype.render = function () {\n if (this.parent.enableAdaptiveUI) {\n return;\n }\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_columnmenu', className: 'e-colmenu' });\n this.element.setAttribute('aria-label', this.l10n.getConstant('ColumnMenuDialogARIA'));\n this.parent.element.appendChild(this.element);\n this.columnMenu = new Menu({\n cssClass: this.parent.cssClass ? 'e-grid-menu' + ' ' + this.parent.cssClass : 'e-grid-menu',\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n items: this.getItems(),\n select: this.columnMenuItemClick.bind(this),\n beforeOpen: this.columnMenuBeforeOpen.bind(this),\n onOpen: this.columnMenuOnOpen.bind(this),\n onClose: this.columnMenuOnClose.bind(this),\n beforeItemRender: this.beforeMenuItemRender.bind(this),\n beforeClose: this.columnMenuBeforeClose.bind(this)\n });\n if (this.element && parentsUntil(this.element, 'e-popup')) {\n this.element.classList.add(this.COL_POP);\n }\n this.columnMenu.appendTo(this.element);\n this.wireFilterEvents();\n };\n ColumnMenu.prototype.wireFilterEvents = function () {\n if (!Browser.isDevice && this.isFilterItemAdded()) {\n EventHandler.add(this.element, 'mouseover', this.appendFilter, this);\n }\n };\n ColumnMenu.prototype.unwireFilterEvents = function () {\n if (!Browser.isDevice && this.isFilterItemAdded() && !this.parent.enableAdaptiveUI) {\n EventHandler.remove(this.element, 'mouseover', this.appendFilter);\n }\n };\n ColumnMenu.prototype.beforeMenuItemRender = function (args) {\n var _a;\n if (this.isChooserItem(args.item)) {\n var field_1 = this.getKeyFromId(args.item.id, this.CHOOSER);\n var column = this.parent.columnModel.filter(function (col) { return col.field === field_1; });\n var check = createCheckBox(this.parent.createElement, false, {\n label: args.item.text,\n checked: column[0].visible\n });\n if (this.parent.enableRtl) {\n check.classList.add('e-rtl');\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n (_a = check.classList).add.apply(_a, this.parent.cssClass.split(' '));\n }\n else {\n check.classList.add(this.parent.cssClass);\n }\n }\n args.element.innerHTML = '';\n args.element.appendChild(check);\n }\n else if (args.item.id && this.getKeyFromId(args.item.id) === 'Filter') {\n args.element.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n args.element.className += 'e-filter-item e-menu-caret-icon';\n }\n };\n ColumnMenu.prototype.columnMenuBeforeClose = function (args) {\n var colChooser = args.event ? closest(args.event.target, '.e-menu-item') : null;\n if (!isNullOrUndefined(args.parentItem) &&\n this.getKeyFromId(args.parentItem.id) === 'ColumnChooser' &&\n colChooser && this.isChooserItem(colChooser)) {\n args.cancel = args.event && args.event.code === 'Escape' ? false : true;\n }\n else if (args.event && (closest(args.event.target, '.' + this.POP)\n || (args.event.currentTarget && args.event.currentTarget.activeElement &&\n parentsUntil(args.event.currentTarget.activeElement, 'e-filter-popup'))\n || (parentsUntil(args.event.target, 'e-popup') && parentsUntil(args.event.target, 'e-colmenu-popup'))\n || (parentsUntil(args.event.target, 'e-popup-wrapper'))) && !Browser.isDevice) {\n args.cancel = true;\n }\n else if (args.event && args.event.target && args.event.target.classList.contains('e-filter-item') && args.event.key === 'Enter') {\n args.cancel = true;\n }\n };\n ColumnMenu.prototype.isChooserItem = function (item) {\n return item.id && item.id.indexOf('_colmenu_') >= 0 &&\n this.getKeyFromId(item.id, this.CHOOSER).indexOf('_colmenu_') === -1;\n };\n ColumnMenu.prototype.columnMenuBeforeOpen = function (args) {\n args.column = this.targetColumn = this.getColumn();\n this.parent.trigger(events.columnMenuOpen, args);\n for (var _i = 0, _a = args.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var key = this.getKeyFromId(item.id);\n var dItem = this.defaultItems[\"\" + key];\n if (this.getDefaultItems().indexOf(key) !== -1 && this.ensureDisabledStatus(key) && !dItem.hide) {\n this.disableItems.push(item.text);\n }\n if (item.hide) {\n this.hiddenItems.push(item.text);\n }\n }\n this.columnMenu.enableItems(this.disableItems, false);\n this.columnMenu.hideItems(this.hiddenItems);\n };\n ColumnMenu.prototype.columnMenuOnOpen = function (args) {\n if (args.element.className === 'e-menu-parent e-ul ') {\n if (args.element.offsetHeight > window.innerHeight || this.parent.element.offsetHeight > window.innerHeight) {\n args.element.style.maxHeight = (window.innerHeight) * 0.8 + 'px';\n args.element.style.overflowY = 'auto';\n if (this.parent.enableStickyHeader) {\n args.element.style.position = 'fixed';\n }\n }\n }\n };\n ColumnMenu.prototype.ensureDisabledStatus = function (item) {\n var status = false;\n switch (item) {\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0 ||\n this.targetColumn && !this.targetColumn.allowGrouping)) {\n status = true;\n }\n break;\n case 'AutoFitAll':\n case 'AutoFit':\n status = !this.parent.ensureModuleInjected(Resize);\n break;\n case 'Ungroup':\n if (!this.parent.ensureModuleInjected(Group) || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'SortDescending':\n case 'SortAscending':\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)\n && this.parent.sortSettings.columns.length > 0 && this.targetColumn && this.targetColumn.allowSorting) {\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === this.targetColumn.field\n && sortColumns[parseInt(i.toString(), 10)].direction.toLocaleLowerCase() === item.toLocaleLowerCase().replace('sort', '')) {\n status = true;\n }\n }\n }\n else if (!this.parent.allowSorting || !this.parent.ensureModuleInjected(Sort) ||\n this.parent.allowSorting && this.targetColumn && !this.targetColumn.allowSorting) {\n status = true;\n }\n break;\n case 'Filter':\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar')\n && this.parent.ensureModuleInjected(Filter) && this.targetColumn && this.targetColumn.allowFiltering) {\n status = false;\n }\n else if (this.parent.ensureModuleInjected(Filter) && this.parent.allowFiltering\n && this.targetColumn && (!this.targetColumn.allowFiltering || this.parent.filterSettings.type === 'FilterBar')) {\n status = true;\n }\n }\n return status;\n };\n ColumnMenu.prototype.columnMenuItemClick = function (args) {\n var item = this.isChooserItem(args.item) ? 'ColumnChooser' : this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'SortAscending':\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'ColumnChooser':\n // eslint-disable-next-line no-case-declarations\n var key = this.getKeyFromId(args.item.id, this.CHOOSER);\n // eslint-disable-next-line no-case-declarations\n var checkbox = args.element.querySelector('.e-checkbox-wrapper .e-frame');\n if (checkbox && checkbox.classList.contains('e-check')) {\n checkbox.classList.remove('e-check');\n this.parent.hideColumns(key, 'field');\n }\n else if (checkbox) {\n this.parent.showColumns(key, 'field');\n checkbox.classList.add('e-check');\n }\n break;\n case 'Filter':\n this.getFilter(args.element, args.item.id);\n break;\n }\n args.column = this.targetColumn;\n this.parent.trigger(events.columnMenuClick, args);\n };\n ColumnMenu.prototype.columnMenuOnClose = function (args) {\n var parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][\"\" + parent] instanceof Menu) {\n this.columnMenu.enableItems(this.disableItems, false);\n this.disableItems = [];\n this.columnMenu.showItems(this.hiddenItems);\n this.hiddenItems = [];\n if (this.isFilterPopupOpen()) {\n this.getFilter(args.element, args.element.id, true);\n }\n }\n if (!isNullOrUndefined(args.parentItem) && this.getKeyFromId(args.parentItem.id) === 'ColumnChooser'\n && this.columnMenu.element.querySelector('.e-selected')) {\n this.columnMenu.element.querySelector('.e-selected').focus();\n }\n else {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ColumnMenu.prototype.getDefaultItems = function () {\n return ['AutoFitAll', 'AutoFit', 'SortAscending', 'SortDescending', 'Group', 'Ungroup', 'ColumnChooser', 'Filter'];\n };\n ColumnMenu.prototype.getItems = function () {\n var items = [];\n var defultItems = this.parent.columnMenuItems ? this.parent.columnMenuItems : this.getDefault();\n for (var _i = 0, defultItems_1 = defultItems; _i < defultItems_1.length; _i++) {\n var item = defultItems_1[_i];\n if (typeof item === 'string') {\n if (item === 'ColumnChooser') {\n var col = this.getDefaultItem(item);\n col.items = this.createChooserItems();\n items.push(col);\n }\n else {\n items.push(this.getDefaultItem(item));\n }\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n ColumnMenu.prototype.getDefaultItem = function (item) {\n var menuItem = {};\n switch (item) {\n case 'SortAscending':\n menuItem = { iconCss: this.ASCENDING };\n break;\n case 'SortDescending':\n menuItem = { iconCss: this.DESCENDING };\n break;\n case 'Group':\n menuItem = { iconCss: this.GROUP };\n break;\n case 'Ungroup':\n menuItem = { iconCss: this.UNGROUP };\n break;\n case 'Filter':\n menuItem = { iconCss: this.FILTER };\n break;\n }\n this.defaultItems[\"\" + item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : null\n };\n return this.defaultItems[\"\" + item];\n };\n ColumnMenu.prototype.getLocaleText = function (item) {\n return this.l10n.getConstant(this.localeText[\"\" + item]);\n };\n ColumnMenu.prototype.generateID = function (item, append) {\n return this.gridID + '_colmenu_' + (append ? append + item : item);\n };\n ColumnMenu.prototype.getKeyFromId = function (id, append) {\n return id.indexOf('_colmenu_') > 0 &&\n id.replace(this.gridID + '_colmenu_' + (append ? append : ''), '');\n };\n /**\n * @returns {HTMLElement} returns the HTMLElement\n * @hidden\n */\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.element;\n };\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n ColumnMenu.prototype.setLocaleKey = function () {\n var localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'ColumnChooser': 'Columnchooser',\n 'Filter': 'FilterMenu'\n };\n return localeKeys;\n };\n ColumnMenu.prototype.getHeaderCell = function (e) {\n return closest(e.target, 'th.e-headercell');\n };\n ColumnMenu.prototype.getColumn = function () {\n if (this.headerCell) {\n var uid = this.headerCell.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n return null;\n };\n ColumnMenu.prototype.createChooserItems = function () {\n var items = [];\n for (var _i = 0, _a = this.parent.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.showInColumnChooser && col.field) {\n items.push({ id: this.generateID(col.field, this.CHOOSER), text: col.headerText ? col.headerText : col.field });\n }\n }\n return items;\n };\n ColumnMenu.prototype.appendFilter = function (e) {\n var filter = 'Filter';\n if (!this.defaultItems[\"\" + filter]) {\n return;\n }\n else {\n var key = this.defaultItems[\"\" + filter].id;\n if (closest(e.target, '#' + key) && !this.isFilterPopupOpen()) {\n this.getFilter(e.target, key);\n }\n else if (!closest(e.target, '#' + key) && this.isFilterPopupOpen()) {\n this.getFilter(e.target, key, true);\n }\n }\n };\n ColumnMenu.prototype.getFilter = function (target, id, isClose) {\n var filterPopup = this.getFilterPop();\n if (filterPopup) {\n filterPopup.style.display = !Browser.isDevice && isClose ? 'none' : 'block';\n }\n else {\n this.parent.notify(events.filterOpen, {\n col: this.targetColumn, target: target, isClose: isClose, id: id\n });\n }\n };\n ColumnMenu.prototype.setPosition = function (li, ul) {\n var gridPos = this.parent.element.getBoundingClientRect();\n var liPos = li.getBoundingClientRect();\n var left = liPos.left - gridPos.left;\n var top = liPos.top - gridPos.top;\n if (gridPos.height < top) {\n top = top - ul.offsetHeight + liPos.height;\n }\n else if (gridPos.height < top + ul.offsetHeight) {\n top = gridPos.height - ul.offsetHeight;\n }\n if (window.innerHeight < ul.offsetHeight + top + gridPos.top) {\n top = window.innerHeight - ul.offsetHeight - gridPos.top;\n }\n if (top + gridPos.top < 0) {\n top = 0;\n }\n left += (this.parent.enableRtl ? -ul.offsetWidth : liPos.width);\n if (gridPos.width <= left + ul.offsetWidth) {\n left -= liPos.width + ul.offsetWidth;\n if (liPos.left < ul.offsetWidth) {\n left = liPos.left + ul.offsetWidth / 2;\n }\n }\n else if (left < 0) {\n left += ul.offsetWidth + liPos.width;\n }\n ul.style.top = top + 'px';\n ul.style.left = left + 'px';\n };\n ColumnMenu.prototype.filterPosition = function () {\n var filterPopup = this.getFilterPop();\n if (this.parent.enableAdaptiveUI) {\n return;\n }\n filterPopup.classList.add(this.WRAP);\n if (!Browser.isDevice) {\n var disp = filterPopup.style.display;\n filterPopup.style.cssText += 'display:block;visibility:hidden';\n var li = this.element.querySelector('.' + this.FILTER);\n if (li) {\n this.setPosition(li.parentElement, filterPopup);\n filterPopup.style.cssText += 'display:' + disp + ';visibility:visible';\n }\n }\n };\n ColumnMenu.prototype.getDefault = function () {\n var items = [];\n if (this.parent.ensureModuleInjected(Resize)) {\n items.push('AutoFitAll');\n items.push('AutoFit');\n }\n if (this.parent.allowGrouping && this.parent.ensureModuleInjected(Group)) {\n items.push('Group');\n items.push('Ungroup');\n }\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)) {\n items.push('SortAscending');\n items.push('SortDescending');\n }\n items.push('ColumnChooser');\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar') &&\n this.parent.ensureModuleInjected(Filter)) {\n items.push('Filter');\n }\n return items;\n };\n ColumnMenu.prototype.isFilterPopupOpen = function () {\n var filterPopup = this.getFilterPop();\n return filterPopup && filterPopup.style.display !== 'none';\n };\n ColumnMenu.prototype.getFilterPop = function () {\n if (!isNullOrUndefined(this.targetColumn) && this.parent.filterSettings.type === 'Menu' && Browser.isDevice) {\n return document.getElementById(this.targetColumn.uid + '-flmdlg');\n }\n return this.parent.element.querySelector('.' + this.POP);\n };\n ColumnMenu.prototype.isFilterItemAdded = function () {\n return (this.parent.columnMenuItems &&\n this.parent.columnMenuItems.indexOf('Filter') >= 0) || !this.parent.columnMenuItems;\n };\n ColumnMenu.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","/**\n * Used to `write a string` into output file.\n * @private\n */\nvar PdfWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfWriter` class.\n * @private\n */\n function PdfWriter(stream) {\n this.streamWriter = stream;\n }\n Object.defineProperty(PdfWriter.prototype, \"document\", {\n //properties\n /**\n * Gets and Sets the `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"position\", {\n /**\n * Gets the `position`.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"length\", {\n /**\n * Gets the `length` of the stream'.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"stream\", {\n /**\n * Gets the `stream`.\n * @private\n */\n get: function () {\n var result = this.streamWriter;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n //public Methods\n /**\n * `Writes the specified data`.\n * @private\n */\n PdfWriter.prototype.write = function (overload) {\n var data = [];\n var tempOverload = overload;\n this.streamWriter.write(tempOverload);\n };\n return PdfWriter;\n}());\nexport { PdfWriter };\n","/**\n * @private\n * @hidden\n */\nexport function defaultToString(item) {\n // if (item === null) {\n // return 'COLLECTION_NULL';\n // } else if (typeof item === 'undefined') {\n // return 'COLLECTION_UNDEFINED';\n // } else if (Object.prototype.toString.call(item) === '[object String]') {\n if (Object.prototype.toString.call(item) === '[object String]') {\n return '$s' + item;\n }\n else {\n return '$o' + item.toString();\n }\n}\n","/**\n * Dictionary.ts class for EJ2-PDF\n * @private\n * @hidden\n */\nimport { defaultToString } from './utils';\n/**\n * @private\n * @hidden\n */\nvar Dictionary = /** @class */ (function () {\n /**\n * @private\n * @hidden\n */\n function Dictionary(toStringFunction) {\n this.table = {};\n this.nElements = 0;\n this.toStr = toStringFunction || defaultToString;\n }\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.getValue = function (key) {\n var pair = this.table['$' + this.toStr(key)];\n if (typeof pair === 'undefined') {\n return undefined;\n }\n return pair.value;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.setValue = function (key, value) {\n // if (typeof key === 'undefined' || typeof value === 'undefined') {\n // return undefined;\n // }\n var ret;\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement === 'undefined') {\n this.nElements++;\n ret = undefined;\n // }\n this.table[k] = {\n key: key,\n value: value\n };\n return ret;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.remove = function (key) {\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement !== 'undefined') {\n delete this.table[k];\n this.nElements--;\n return previousElement.value;\n // }\n // return undefined;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.keys = function () {\n var keysArray = [];\n var namesOfKeys = Object.keys(this.table);\n for (var index1 = 0; index1 < namesOfKeys.length; index1++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfKeys[index1])) {\n var pair1 = this.table[namesOfKeys[index1]];\n keysArray.push(pair1.key);\n // }\n }\n return keysArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.values = function () {\n var valuesArray = [];\n var namesOfValues = Object.keys(this.table);\n for (var index2 = 0; index2 < namesOfValues.length; index2++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfValues[index2])) {\n var pair2 = this.table[namesOfValues[index2]];\n valuesArray.push(pair2.value);\n // }\n }\n return valuesArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.containsKey = function (key) {\n var retutnValue = true;\n if (typeof this.getValue(key) === 'undefined') {\n retutnValue = true;\n }\n else {\n retutnValue = false;\n }\n return !retutnValue;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.clear = function () {\n this.table = {};\n this.nElements = 0;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.size = function () {\n return this.nElements;\n };\n return Dictionary;\n}()); // End of dictionary\nexport { Dictionary };\n","/**\n * public Enum for `CompositeFontType`.\n * @private\n */\nexport var ObjectStatus;\n(function (ObjectStatus) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Registered`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"Registered\"] = 1] = \"Registered\";\n})(ObjectStatus || (ObjectStatus = {}));\n","/**\n * PdfMainObjectCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\nimport { ObjectStatus } from './enum';\n/**\n * The collection of all `objects` within a PDF document.\n * @private\n */\nvar PdfMainObjectCollection = /** @class */ (function () {\n function PdfMainObjectCollection() {\n //Fields\n /**\n * The collection of the `indirect objects`.\n * @default []\n * @private\n */\n this.objectCollections = [];\n /**\n * The collection of the `Indirect objects`.\n * @default new Dictionary()\n * @private\n */\n this.mainObjectCollection = new Dictionary();\n /**\n * The collection of `primitive objects`.\n * @private\n */\n this.primitiveObjectCollection = new Dictionary();\n }\n Object.defineProperty(PdfMainObjectCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.objectCollections.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the value of `ObjectInfo` from object collection.\n * @private\n */\n PdfMainObjectCollection.prototype.items = function (index) {\n return this.objectCollections[index];\n };\n Object.defineProperty(PdfMainObjectCollection.prototype, \"outIsNew\", {\n //Methods\n /**\n * Specifies the value of `IsNew`.\n * @private\n */\n get: function () {\n return this.isNew;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element.\n * @private\n */\n PdfMainObjectCollection.prototype.add = function (element) {\n var objInfo = new ObjectInfo(element);\n this.objectCollections.push(objInfo);\n if (!this.primitiveObjectCollection.containsKey(element)) {\n this.primitiveObjectCollection.setValue(element, this.objectCollections.length - 1);\n }\n element.position = this.index = this.objectCollections.length - 1;\n element.status = ObjectStatus.Registered;\n };\n /**\n * `Looks` through the collection for the object specified.\n * @private\n */\n PdfMainObjectCollection.prototype.lookFor = function (obj) {\n var index = -1;\n if (obj.position !== -1) {\n return obj.position;\n }\n if (this.primitiveObjectCollection.containsKey(obj) && this.count === this.primitiveObjectCollection.size()) {\n index = this.primitiveObjectCollection.getValue(obj);\n }\n else {\n for (var i = this.count - 1; i >= 0; i--) {\n var oi = this.objectCollections[i];\n if (oi.object === obj) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * Gets the `reference of the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.getReference = function (index, isNew) {\n this.index = this.lookFor(index);\n var reference;\n this.isNew = false;\n var oi = this.objectCollections[this.index];\n reference = oi.reference;\n var obj = { reference: reference, wasNew: isNew };\n return obj;\n };\n /**\n * Tries to set the `reference to the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.trySetReference = function (obj, reference, found) {\n var result = true;\n found = true;\n this.index = this.lookFor(obj);\n var oi = this.objectCollections[this.index];\n oi.setReference(reference);\n return result;\n };\n PdfMainObjectCollection.prototype.destroy = function () {\n for (var _i = 0, _a = this.objectCollections; _i < _a.length; _i++) {\n var obj = _a[_i];\n if (obj !== undefined) {\n obj.pdfObject.position = -1;\n obj.pdfObject.isSaving = undefined;\n obj.pdfObject.objectCollectionIndex = undefined;\n obj.pdfObject.position = undefined;\n }\n }\n this.objectCollections = [];\n this.mainObjectCollection = new Dictionary();\n this.primitiveObjectCollection = new Dictionary();\n };\n return PdfMainObjectCollection;\n}());\nexport { PdfMainObjectCollection };\nvar ObjectInfo = /** @class */ (function () {\n function ObjectInfo(obj, reference) {\n this.pdfObject = obj;\n this.pdfReference = reference;\n }\n Object.defineProperty(ObjectInfo.prototype, \"object\", {\n //Properties\n /**\n * Gets the `object`.\n * @private\n */\n get: function () {\n return this.pdfObject;\n },\n set: function (value) {\n this.pdfObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ObjectInfo.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `reference`.\n * @private\n */\n ObjectInfo.prototype.setReference = function (reference) {\n this.pdfReference = reference;\n };\n return ObjectInfo;\n}());\nexport { ObjectInfo };\n","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nvar Save = /** @class */ (function () {\n /**\n * Initialize new instance of {save}\n */\n function Save() {\n // tslint:disable\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n Save.save = function (fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n var extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n var mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n var downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n };\n Save.saveInternal = function (fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n var dataUrl_1 = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n downloadLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n dataUrl_1 = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n var url = window.URL.createObjectURL(buffer);\n var isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n var reader_1 = new FileReader();\n reader_1.onloadend = function () {\n var isPopupBlocked = window.open(reader_1.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader_1.result;\n }\n };\n reader_1.readAsDataURL(buffer);\n }\n }\n };\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n Save.getMimeType = function (extension) {\n var mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n };\n return Save;\n}());\nexport { Save };\n","/**\n * `PdfString` class is used to perform string related primitive operations.\n * @private\n */\nexport var InternalEnum;\n(function (InternalEnum) {\n //Internals\n /**\n * public Enum for `ForceEncoding`.\n * @private\n */\n var ForceEncoding;\n (function (ForceEncoding) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Ascii`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Ascii\"] = 1] = \"Ascii\";\n /**\n * Specifies the type of `Unicode`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Unicode\"] = 2] = \"Unicode\";\n })(ForceEncoding = InternalEnum.ForceEncoding || (InternalEnum.ForceEncoding = {}));\n /**\n * public Enum for `SourceType`.\n * @private\n */\n var SourceType;\n (function (SourceType) {\n /**\n * Specifies the type of `StringValue`.\n * @private\n */\n SourceType[SourceType[\"StringValue\"] = 0] = \"StringValue\";\n /**\n * Specifies the type of `ByteBuffer`.\n * @private\n */\n SourceType[SourceType[\"ByteBuffer\"] = 1] = \"ByteBuffer\";\n })(SourceType || (SourceType = {}));\n})(InternalEnum || (InternalEnum = {}));\nvar PdfString = /** @class */ (function () {\n function PdfString(value) {\n /**\n * Value indicating whether the string was converted to hex.\n * @default false\n * @private\n */\n this.bHex = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position1 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject1 = null;\n /**\n * `Shows` if the data of the stream was decrypted.\n * @default false\n * @private\n */\n this.bDecrypted = false;\n /**\n * Shows if the data of the stream `was decrypted`.\n * @default false\n * @private\n */\n this.isParentDecrypted = false;\n /**\n * Gets a value indicating whether the object is `packed or not`.\n * @default false\n * @private\n */\n this.isPacked = false;\n /**\n * @hidden\n * @private\n */\n this.isFormField = false;\n /**\n * @hidden\n * @private\n */\n this.isColorSpace = false;\n /**\n * @hidden\n * @private\n */\n this.isHexString = true;\n if (typeof value === 'undefined') {\n this.bHex = false;\n }\n else {\n if (!(value.length > 0 && value[0] === '0xfeff')) {\n this.stringValue = value;\n this.data = [];\n for (var i = 0; i < value.length; ++i) {\n this.data.push(value.charCodeAt(i));\n }\n }\n }\n }\n Object.defineProperty(PdfString.prototype, \"hex\", {\n //Property\n /**\n * Gets a value indicating whether string is in `hex`.\n * @private\n */\n get: function () {\n return this.bHex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"value\", {\n /**\n * Gets or sets string `value` of the object.\n * @private\n */\n get: function () {\n return this.stringValue;\n },\n set: function (value) {\n this.stringValue = value;\n this.data = null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status1;\n },\n set: function (value) {\n this.status1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving1;\n },\n set: function (value) {\n this.isSaving1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index1;\n },\n set: function (value) {\n this.index1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position1;\n },\n set: function (value) {\n this.position1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"converted\", {\n /**\n * Gets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n get: function () {\n return this.bConverted;\n },\n /**\n * sets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n set: function (value) {\n this.bConverted = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"encode\", {\n /**\n * Gets value indicating whether we should convert data to Unicode.\n */\n get: function () {\n return this.bForceEncoding;\n },\n set: function (value) {\n this.bForceEncoding = value;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * Converts `bytes to string using hex format` for representing string.\n * @private\n */\n PdfString.bytesToHex = function (bytes) {\n if (bytes == null) {\n return '';\n }\n var builder = '';\n return builder;\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfString.prototype.save = function (writer) {\n if (writer === null) {\n throw new Error('ArgumentNullException : writer');\n }\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n writer.write(this.pdfEncode());\n }\n else {\n writer.write(PdfString.stringMark[0] + this.value + PdfString.stringMark[1]);\n }\n };\n PdfString.prototype.pdfEncode = function () {\n var result = '';\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n var data = this.escapeSymbols(this.value);\n for (var i = 0; i < data.length; i++) {\n result += String.fromCharCode(data[i]);\n }\n result = PdfString.stringMark[0] + result + PdfString.stringMark[1];\n }\n else {\n result = this.value;\n }\n return result;\n };\n PdfString.prototype.escapeSymbols = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n var currentData = value.charCodeAt(i);\n switch (currentData) {\n case 40:\n case 41:\n data.push(92);\n data.push(currentData);\n break;\n case 13:\n data.push(92);\n data.push(114);\n break;\n case 92:\n data.push(92);\n data.push(currentData);\n break;\n default:\n data.push(currentData);\n break;\n }\n }\n return data;\n };\n /**\n * Creates a `copy of PdfString`.\n * @private\n */\n PdfString.prototype.clone = function (crossTable) {\n if (this.clonedObject1 !== null && this.clonedObject1.CrossTable === crossTable) {\n return this.clonedObject1;\n }\n else {\n this.clonedObject1 = null;\n }\n var newString = new PdfString(this.stringValue);\n newString.bHex = this.bHex;\n newString.crossTable = crossTable;\n newString.isColorSpace = this.isColorSpace;\n this.clonedObject1 = newString;\n return newString;\n };\n /**\n * Converts string to array of unicode symbols.\n */\n PdfString.toUnicodeArray = function (value, bAddPrefix) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var startIndex = 0;\n var output = [];\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n output.push(code / 256 >>> 0);\n output.push(code & 0xff);\n }\n return output;\n };\n /**\n * Converts byte data to string.\n */\n PdfString.byteToString = function (data) {\n if (data == null) {\n throw new Error('Argument Null Exception : stream');\n }\n var result = '';\n for (var i = 0; i < data.length; ++i) {\n result += String.fromCharCode(data[i]);\n }\n return result;\n };\n //constants = ;\n /**\n * `General markers` for string.\n * @private\n */\n PdfString.stringMark = '()';\n /**\n * `Hex markers` for string.\n * @private\n */\n PdfString.hexStringMark = '<>';\n /**\n * Format of password data.\n * @private\n */\n PdfString.hexFormatPattern = '{0:X2}';\n return PdfString;\n}());\nexport { PdfString };\n","import { Encoding, validateNullOrUndefined } from './encoding';\nimport { Save } from './save';\n/**\n * StreamWriter class contains the implementation for writing characters to a file in a particular encoding\n * ```typescript\n * let writer = new StreamWriter();\n * writer.write('Hello World');\n * writer.save('Sample.txt');\n * writer.dispose();\n * ```\n */\nvar StreamWriter = /** @class */ (function () {\n /**\n * Initializes a new instance of the StreamWriter class by using the specified encoding.\n * @param {Encoding} encoding?- The character encoding to use.\n */\n function StreamWriter(encoding) {\n this.bufferBlob = new Blob(['']);\n this.bufferText = '';\n this.init(encoding);\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(StreamWriter.prototype, \"buffer\", {\n /**\n * Gets the content written to the StreamWriter as Blob.\n * @returns Blob\n */\n get: function () {\n this.flush();\n return this.bufferBlob;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StreamWriter.prototype, \"encoding\", {\n /**\n * Gets the encoding.\n * @returns Encoding\n */\n get: function () {\n return this.enc;\n },\n enumerable: true,\n configurable: true\n });\n StreamWriter.prototype.init = function (encoding) {\n if (encoding === null || encoding === undefined) {\n this.enc = new Encoding(false);\n this.enc.type = 'Utf8';\n }\n else {\n this.enc = encoding;\n this.setBomByte();\n }\n };\n /**\n * Private method to set Byte Order Mark(BOM) value based on EncodingType\n */\n StreamWriter.prototype.setBomByte = function () {\n if (this.encoding.includeBom) {\n switch (this.encoding.type) {\n case 'Unicode':\n var arrayUnicode = new ArrayBuffer(2);\n var uint8 = new Uint8Array(arrayUnicode);\n uint8[0] = 255;\n uint8[1] = 254;\n this.bufferBlob = new Blob([arrayUnicode]);\n break;\n case 'Utf8':\n var arrayUtf8 = new ArrayBuffer(3);\n var utf8 = new Uint8Array(arrayUtf8);\n utf8[0] = 239;\n utf8[1] = 187;\n utf8[2] = 191;\n this.bufferBlob = new Blob([arrayUtf8]);\n break;\n default:\n this.bufferBlob = new Blob(['']);\n break;\n }\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - The file name to save\n * @returns {void}\n */\n StreamWriter.prototype.save = function (fileName) {\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n };\n /**\n * Writes the specified string.\n * @param {string} value - The string to write. If value is null or undefined, nothing is written.\n * @returns {void}\n */\n StreamWriter.prototype.write = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText += value;\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n StreamWriter.prototype.flush = function () {\n if (this.bufferText === undefined || this.bufferText === null || this.bufferText.length === 0) {\n return;\n }\n var bufferArray = this.encoding.getBytes(this.bufferText, 0, this.bufferText.length);\n this.bufferText = '';\n this.bufferBlob = new Blob([this.bufferBlob, bufferArray]);\n };\n /**\n * Writes the specified string followed by a line terminator\n * @param {string} value - The string to write. If value is null or undefined, nothing is written\n * @returns {void}\n */\n StreamWriter.prototype.writeLine = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText = this.bufferText + value + '\\r\\n';\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n /**\n * Releases the resources used by the StreamWriter\n * @returns {void}\n */\n StreamWriter.prototype.destroy = function () {\n this.bufferBlob = undefined;\n this.bufferText = undefined;\n if (this.enc instanceof Encoding) {\n this.enc.destroy();\n }\n this.enc = undefined;\n };\n return StreamWriter;\n}());\nexport { StreamWriter };\n","import { Encoding, StreamWriter } from '@syncfusion/ej2-file-utils';\nimport { PdfDocument } from './pdf-document';\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nvar PdfDocumentBase = /** @class */ (function () {\n function PdfDocumentBase(document) {\n /**\n * If the stream is copied, then it specifies true.\n * @private\n */\n this.isStreamCopied = false;\n if (document instanceof PdfDocument) {\n this.document = document;\n }\n }\n Object.defineProperty(PdfDocumentBase.prototype, \"pdfObjects\", {\n //Prpperties\n /**\n * Gets the `PDF objects` collection, which stores all objects and references to it..\n * @private\n */\n get: function () {\n return this.objects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"crossTable\", {\n /**\n * Gets the `cross-reference` table.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"currentSavingObj\", {\n /**\n * Gets or sets the current saving `object number`.\n * @private\n */\n get: function () {\n return this.currentSavingObject;\n },\n set: function (value) {\n this.currentSavingObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"catalog\", {\n /**\n * Gets the PDF document `catalog`.\n * @private\n */\n get: function () {\n return this.pdfCatalog;\n },\n set: function (value) {\n this.pdfCatalog = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"viewerPreferences\", {\n /**\n * Gets viewer preferences for presenting the PDF document in a viewer.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets viewer preferences\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfCatalog.viewerPreferences;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Sets the `main object collection`.\n * @private\n */\n PdfDocumentBase.prototype.setMainObjectCollection = function (mainObjectCollection) {\n this.objects = mainObjectCollection;\n };\n /**\n * Sets the `cross table`.\n * @private\n */\n PdfDocumentBase.prototype.setCrossTable = function (cTable) {\n this.pdfCrossTable = cTable;\n };\n /**\n * Sets the `catalog`.\n * @private\n */\n PdfDocumentBase.prototype.setCatalog = function (catalog) {\n this.pdfCatalog = catalog;\n };\n PdfDocumentBase.prototype.save = function (filename) {\n var _this = this;\n var encoding = new Encoding(true);\n var SW = new StreamWriter(encoding);\n if (typeof filename === 'undefined') {\n var encoding_1 = new Encoding(true);\n var SW_1 = new StreamWriter(encoding_1);\n return new Promise(function (resolve, reject) {\n /* tslint:disable-next-line:no-any */\n var obj = {};\n obj.blobData = new Blob([_this.document.docSave(SW_1, true)], { type: 'application/pdf' });\n resolve(obj);\n });\n }\n else {\n this.document.docSave(SW, filename, true);\n }\n };\n /**\n * `Clone` of parent object - PdfDocument.\n * @private\n */\n PdfDocumentBase.prototype.clone = function () {\n return this.document;\n };\n return PdfDocumentBase;\n}());\nexport { PdfDocumentBase };\n","/**\n * `PdfName` class is used to perform name (element names) related primitive operations.\n * @private\n */\nvar PdfName = /** @class */ (function () {\n function PdfName(value) {\n /**\n * `Start symbol` of the name object.\n * @default /\n * @private\n */\n this.stringStartMark = '/';\n /**\n * `Value` of the element.\n * @private\n */\n this.internalValue = '';\n /**\n * Indicates if the object is currently in `saving state or not`.\n * @default false\n * @private\n */\n this.isSaving6 = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position6 = -1;\n this.internalValue = this.normalizeValue(value);\n }\n Object.defineProperty(PdfName.prototype, \"status\", {\n //property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status6;\n },\n set: function (value) {\n this.status6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving6;\n },\n set: function (value) {\n this.isSaving6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index6;\n },\n set: function (value) {\n this.index6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position6;\n },\n set: function (value) {\n this.position6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the object.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n set: function (value) {\n // if (value !== this.value) {\n var val = value;\n if (value !== null && value.length > 0) {\n // val = (value.substring(0, 1) === this.stringStartMark) ? value.substring(1) : value;\n val = value;\n this.internalValue = this.normalizeValue(val);\n }\n else {\n this.internalValue = val;\n }\n // }\n },\n enumerable: true,\n configurable: true\n });\n //public methods\n /**\n * `Saves` the name using the specified writer.\n * @private\n */\n PdfName.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.toString());\n };\n /**\n * Gets `string` representation of the primitive.\n * @private\n */\n PdfName.prototype.toString = function () {\n return (this.stringStartMark + this.escapeString(this.value));\n };\n /**\n * Creates a `copy of PdfName`.\n * @private\n */\n PdfName.prototype.clone = function (crossTable) {\n var newName = new PdfName();\n newName.value = this.internalValue;\n return newName;\n };\n /**\n * Replace some characters with its `escape sequences`.\n * @private\n */\n PdfName.prototype.escapeString = function (stringValue) {\n // if (str === null) {\n // throw new Error('ArgumentNullException : str');\n // }\n // if (str === '') {\n // return str;\n // }\n var result = '';\n var len = 0;\n for (var i = 0, len_1 = stringValue.length; i < len_1; i++) {\n var ch = stringValue[i];\n var index = PdfName.delimiters.indexOf(ch);\n // switch (ch) {\n // case '\\r' :\n // result = result + '\\\\r';\n // break;\n // case '\\n' :\n // result = result + '\\n';\n // break;\n // case '(' :\n // case ')' :\n // case '\\\\' :\n // //result.Append( '\\\\' ).Append( ch );\n // result = result + ch;\n // break;\n // default :\n // result = result + ch;\n // break;\n // }\n result = result + ch;\n }\n return result;\n };\n //methiods\n /**\n * Replace a symbol with its code with the precedence of the `sharp sign`.\n * @private\n */\n PdfName.prototype.normalizeValue = function (value, c) {\n // if (typeof c === undefined) {\n // let str : string = value;\n // for (let i : number = 0; i < PdfName.replacements.length; i++) {\n // str = this.normalizeValue(str, c);\n // }\n // return str;\n // } else {\n var strFormat = '#{0:X}';\n //return value.replace(c.toString(),String.format(strFormat,c));\n return value;\n // }\n };\n /**\n * PDF `special characters`.\n * @private\n */\n PdfName.delimiters = '()<>[]{}/%}';\n /**\n * The symbols that are not allowed in PDF names and `should be replaced`.\n * @private\n */\n PdfName.replacements = [' ', '\\t', '\\n', '\\r'];\n return PdfName;\n}());\nexport { PdfName };\n","/**\n * PdfOperators.ts class for EJ2-PDF\n * Class of string PDF common operators.\n * @private\n */\nvar Operators = /** @class */ (function () {\n /**\n * Create an instance of `PdfOperator` class.\n * @private\n */\n function Operators() {\n /**\n * Specifies the value of `test`.\n * @private\n */\n this.forTest = 'test';\n this.forTest = Operators.obj;\n }\n /**\n * Specifies the value of `obj`.\n * @private\n */\n Operators.obj = 'obj';\n /**\n * Specifies the value of `endObj`.\n * @private\n */\n Operators.endObj = 'endobj';\n /**\n * Specifies the value of `R`.\n * @private\n */\n Operators.r = 'R';\n /**\n * Specifies the value of ` `.\n * @private\n */\n Operators.whiteSpace = ' ';\n /**\n * Specifies the value of `/`.\n * @private\n */\n Operators.slash = '/';\n /**\n * Specifies the value of `\\r\\n`.\n * @private\n */\n Operators.newLine = '\\r\\n';\n /**\n * Specifies the value of `stream`.\n * @private\n */\n Operators.stream = 'stream';\n /**\n * Specifies the value of `endStream`.\n * @private\n */\n Operators.endStream = 'endstream';\n /**\n * Specifies the value of `xref`.\n * @private\n */\n Operators.xref = 'xref';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.f = 'f';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.n = 'n';\n /**\n * Specifies the value of `trailer`.\n * @private\n */\n Operators.trailer = 'trailer';\n /**\n * Specifies the value of `startxref`.\n * @private\n */\n Operators.startxref = 'startxref';\n /**\n * Specifies the value of `eof`.\n * @private\n */\n Operators.eof = '%%EOF';\n /**\n * Specifies the value of `header`.\n * @private\n */\n Operators.header = '%PDF-1.5';\n /**\n * Specifies the value of `beginText`.\n * @private\n */\n Operators.beginText = 'BT';\n /**\n * Specifies the value of `endText`.\n * @private\n */\n Operators.endText = 'ET';\n /**\n * Specifies the value of `m`.\n * @private\n */\n Operators.beginPath = 'm';\n /**\n * Specifies the value of `l`.\n * @private\n */\n Operators.appendLineSegment = 'l';\n /**\n * Specifies the value of `S`.\n * @private\n */\n Operators.stroke = 'S';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.fill = 'f';\n /**\n * Specifies the value of `f*`.\n * @private\n */\n Operators.fillEvenOdd = 'f*';\n /**\n * Specifies the value of `B`.\n * @private\n */\n Operators.fillStroke = 'B';\n /**\n * Specifies the value of `B*`.\n * @private\n */\n Operators.fillStrokeEvenOdd = 'B*';\n /**\n * Specifies the value of `c`.\n * @private\n */\n Operators.appendbeziercurve = 'c';\n /**\n * Specifies the value of `re`.\n * @private\n */\n Operators.appendRectangle = 're';\n /**\n * Specifies the value of `q`.\n * @private\n */\n Operators.saveState = 'q';\n /**\n * Specifies the value of `Q`.\n * @private\n */\n Operators.restoreState = 'Q';\n /**\n * Specifies the value of `Do`.\n * @private\n */\n Operators.paintXObject = 'Do';\n /**\n * Specifies the value of `cm`.\n * @private\n */\n Operators.modifyCtm = 'cm';\n /**\n * Specifies the value of `Tm`.\n * @private\n */\n Operators.modifyTM = 'Tm';\n /**\n * Specifies the value of `w`.\n * @private\n */\n Operators.setLineWidth = 'w';\n /**\n * Specifies the value of `J`.\n * @private\n */\n Operators.setLineCapStyle = 'J';\n /**\n * Specifies the value of `j`.\n * @private\n */\n Operators.setLineJoinStyle = 'j';\n /**\n * Specifies the value of `d`.\n * @private\n */\n Operators.setDashPattern = 'd';\n /**\n * Specifies the value of `i`.\n * @private\n */\n Operators.setFlatnessTolerance = 'i';\n /**\n * Specifies the value of `h`.\n * @private\n */\n Operators.closePath = 'h';\n /**\n * Specifies the value of `s`.\n * @private\n */\n Operators.closeStrokePath = 's';\n /**\n * Specifies the value of `b`.\n * @private\n */\n Operators.closeFillStrokePath = 'b';\n /**\n * Specifies the value of `setCharacterSpace`.\n * @private\n */\n Operators.setCharacterSpace = 'Tc';\n /**\n * Specifies the value of `setWordSpace`.\n * @private\n */\n Operators.setWordSpace = 'Tw';\n /**\n * Specifies the value of `setHorizontalScaling`.\n * @private\n */\n Operators.setHorizontalScaling = 'Tz';\n /**\n * Specifies the value of `setTextLeading`.\n * @private\n */\n Operators.setTextLeading = 'TL';\n /**\n * Specifies the value of `setFont`.\n * @private\n */\n Operators.setFont = 'Tf';\n /**\n * Specifies the value of `setRenderingMode`.\n * @private\n */\n Operators.setRenderingMode = 'Tr';\n /**\n * Specifies the value of `setTextRise`.\n * @private\n */\n Operators.setTextRise = 'Ts';\n /**\n * Specifies the value of `setTextScaling`.\n * @private\n */\n Operators.setTextScaling = 'Tz';\n /**\n * Specifies the value of `setCoords`.\n * @private\n */\n Operators.setCoords = 'Td';\n /**\n * Specifies the value of `goToNextLine`.\n * @private\n */\n Operators.goToNextLine = 'T*';\n /**\n * Specifies the value of `setText`.\n * @private\n */\n Operators.setText = 'Tj';\n /**\n * Specifies the value of `setTextWithFormatting`.\n * @private\n */\n Operators.setTextWithFormatting = 'TJ';\n /**\n * Specifies the value of `setTextOnNewLine`.\n * @private\n */\n Operators.setTextOnNewLine = '\\'';\n /**\n * Specifies the value of `selectcolorspaceforstroking`.\n * @private\n */\n Operators.selectcolorspaceforstroking = 'CS';\n /**\n * Specifies the value of `selectcolorspacefornonstroking`.\n * @private\n */\n Operators.selectcolorspacefornonstroking = 'cs';\n /**\n * Specifies the value of `setrbgcolorforstroking`.\n * @private\n */\n Operators.setrbgcolorforstroking = 'RG';\n /**\n * Specifies the value of `setrbgcolorfornonstroking`.\n * @private\n */\n Operators.setrbgcolorfornonstroking = 'rg';\n /**\n * Specifies the value of `K`.\n * @private\n */\n Operators.setcmykcolorforstroking = 'K';\n /**\n * Specifies the value of `k`.\n * @private\n */\n Operators.setcmykcolorfornonstroking = 'k';\n /**\n * Specifies the value of `G`.\n * @private\n */\n Operators.setgraycolorforstroking = 'G';\n /**\n * Specifies the value of `g`.\n * @private\n */\n Operators.setgraycolorfornonstroking = 'g';\n /**\n * Specifies the value of `W`.\n * @private\n */\n Operators.clipPath = 'W';\n /**\n * Specifies the value of `clipPathEvenOdd`.\n * @private\n */\n Operators.clipPathEvenOdd = 'W*';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.endPath = 'n';\n /**\n * Specifies the value of `setGraphicsState`.\n * @private\n */\n Operators.setGraphicsState = 'gs';\n /**\n * Specifies the value of `%`.\n * @private\n */\n Operators.comment = '%';\n /**\n * Specifies the value of `*`.\n * @private\n */\n Operators.evenOdd = '*';\n /**\n * Specifies the value of `M`.\n * @private\n */\n Operators.setMiterLimit = 'M';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For non-stroking operations.\n * @public\n */\n Operators.setColorAndPattern = 'scn';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For stroking.\n */\n Operators.setColorAndPatternStroking = 'SCN';\n return Operators;\n}());\nexport { Operators };\n","/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nvar DictionaryProperties = /** @class */ (function () {\n /**\n * Initialize an instance for `PdfDictionaryProperties` class.\n * @private\n */\n function DictionaryProperties() {\n /**\n * Specifies the value of `Pages`.\n * @private\n */\n this.pages = 'Pages';\n /**\n * Specifies the value of `Kids`.\n * @private\n */\n this.kids = 'Kids';\n /**\n * Specifies the value of `Count`.\n * @private\n */\n this.count = 'Count';\n /**\n * Specifies the value of `Resources`.\n * @private\n */\n this.resources = 'Resources';\n /**\n * Specifies the value of `Type`.\n * @private\n */\n this.type = 'Type';\n /**\n * Specifies the value of `Size`.\n * @private\n */\n this.size = 'Size';\n /**\n * Specifies the value of `MediaBox`.\n * @private\n */\n this.mediaBox = 'MediaBox';\n /**\n * Specifies the value of `Parent`.\n * @private\n */\n this.parent = 'Parent';\n /**\n * Specifies the value of `Root`.\n * @private\n */\n this.root = 'Root';\n /**\n * Specifies the value of `DecodeParms`.\n * @private\n */\n this.decodeParms = 'DecodeParms';\n /**\n * Specifies the value of `Filter`.\n * @private\n */\n this.filter = 'Filter';\n /**\n * Specifies the value of `Font`.\n * @private\n */\n this.font = 'Font';\n /**\n * Specifies the value of `Type1`.\n * @private\n */\n this.type1 = 'Type1';\n /**\n * Specifies the value of `BaseFont`.\n * @private\n */\n this.baseFont = 'BaseFont';\n /**\n * Specifies the value of `Encoding`.\n * @private\n */\n this.encoding = 'Encoding';\n /**\n * Specifies the value of `Subtype`.\n * @private\n */\n this.subtype = 'Subtype';\n /**\n * Specifies the value of `Contents`.\n * @private\n */\n this.contents = 'Contents';\n /**\n * Specifies the value of `ProcSet`.\n * @private\n */\n this.procset = 'ProcSet';\n /**\n * Specifies the value of `ColorSpace`.\n * @private\n */\n this.colorSpace = 'ColorSpace';\n /**\n * Specifies the value of `ExtGState`.\n * @private\n */\n this.extGState = 'ExtGState';\n /**\n * Specifies the value of `Pattern`.\n * @private\n */\n this.pattern = 'Pattern';\n /**\n * Specifies the value of `XObject`.\n * @private\n */\n this.xObject = 'XObject';\n /**\n * Specifies the value of `Length`.\n * @private\n */\n this.length = 'Length';\n /**\n * Specifies the value of `Width`.\n * @private\n */\n this.width = 'Width';\n /**\n * Specifies the value of `Height`.\n * @private\n */\n this.height = 'Height';\n /**\n * Specifies the value of `BitsPerComponent`.\n * @private\n */\n this.bitsPerComponent = 'BitsPerComponent';\n /**\n * Specifies the value of `Image`.\n * @private\n */\n this.image = 'Image';\n /**\n * Specifies the value of `dctdecode`.\n * @private\n */\n this.dctdecode = 'DCTDecode';\n /**\n * Specifies the value of `Columns`.\n * @private\n */\n this.columns = 'Columns';\n /**\n * Specifies the value of `BlackIs1`.\n * @private\n */\n this.blackIs1 = 'BlackIs1';\n /**\n * Specifies the value of `K`.\n * @private\n */\n this.k = 'K';\n /**\n * Specifies the value of `S`.\n * @private\n */\n this.s = 'S';\n /**\n * Specifies the value of `Predictor`.\n * @private\n */\n this.predictor = 'Predictor';\n /**\n * Specifies the value of `DeviceRGB`.\n * @private\n */\n this.deviceRgb = 'DeviceRGB';\n /**\n * Specifies the value of `Next`.\n * @private\n */\n this.next = 'Next';\n /**\n * Specifies the value of `Action`.\n * @private\n */\n this.action = 'Action';\n /**\n * Specifies the value of `Link`.\n * @private\n */\n this.link = 'Link';\n /**\n *\n * Specifies the value of `A`.\n * @private\n */\n this.a = 'A';\n /**\n * Specifies the value of `Annot`.\n * @private\n */\n this.annot = 'Annot';\n /**\n * Specifies the value of `P`.\n * @private\n */\n this.p = 'P';\n /**\n * Specifies the value of `C`.\n * @private\n */\n this.c = 'C';\n /**\n * Specifies the value of `Rect`.\n * @private\n */\n this.rect = 'Rect';\n /**\n * Specifies the value of `URI`.\n * @private\n */\n this.uri = 'URI';\n /**\n * Specifies the value of `Annots`.\n * @private\n */\n this.annots = 'Annots';\n /**\n * Specifies the value of `ca`.\n * @private\n */\n this.ca = 'ca';\n /**\n * Specifies the value of `CA`.\n * @private\n */\n this.CA = 'CA';\n /**\n * Specifies the value of `XYZ`.\n * @private\n */\n this.xyz = 'XYZ';\n /**\n * Specifies the value of `Fit`.\n * @private\n */\n this.fit = 'Fit';\n /**\n * Specifies the value of `Dest`.\n * @private\n */\n this.dest = 'Dest';\n /**\n * Specifies the value of `BM`.\n * @private\n */\n this.BM = 'BM';\n /**\n * Specifies the value of `flatedecode`.\n * @private\n */\n this.flatedecode = 'FlateDecode';\n /**\n * Specifies the value of `Rotate`.\n * @private\n */\n this.rotate = 'Rotate';\n /**\n * Specifies the value of 'bBox'.\n * @private\n */\n this.bBox = 'BBox';\n /**\n * Specifies the value of 'form'.\n * @private\n */\n this.form = 'Form';\n /**\n * Specifies the value of 'w'.\n * @private\n */\n this.w = 'W';\n /**\n * Specifies the value of 'cIDFontType2'.\n * @private\n */\n this.cIDFontType2 = 'CIDFontType2';\n /**\n * Specifies the value of 'cIDToGIDMap'.\n * @private\n */\n this.cIDToGIDMap = 'CIDToGIDMap';\n /**\n * Specifies the value of 'identity'.\n * @private\n */\n this.identity = 'Identity';\n /**\n * Specifies the value of 'dw'.\n * @private\n */\n this.dw = 'DW';\n /**\n * Specifies the value of 'fontDescriptor'.\n * @private\n */\n this.fontDescriptor = 'FontDescriptor';\n /**\n * Specifies the value of 'cIDSystemInfo'.\n * @private\n */\n this.cIDSystemInfo = 'CIDSystemInfo';\n /**\n * Specifies the value of 'fontName'.\n * @private\n */\n this.fontName = 'FontName';\n /**\n * Specifies the value of 'flags'.\n * @private\n */\n this.flags = 'Flags';\n /**\n * Specifies the value of 'fontBBox'.\n * @private\n */\n this.fontBBox = 'FontBBox';\n /**\n * Specifies the value of 'missingWidth'.\n * @private\n */\n this.missingWidth = 'MissingWidth';\n /**\n * Specifies the value of 'stemV'.\n * @private\n */\n this.stemV = 'StemV';\n /**\n * Specifies the value of 'italicAngle'.\n * @private\n */\n this.italicAngle = 'ItalicAngle';\n /**\n * Specifies the value of 'capHeight'.\n * @private\n */\n this.capHeight = 'CapHeight';\n /**\n * Specifies the value of 'ascent'.\n * @private\n */\n this.ascent = 'Ascent';\n /**\n * Specifies the value of 'descent'.\n * @private\n */\n this.descent = 'Descent';\n /**\n * Specifies the value of 'leading'.\n * @private\n */\n this.leading = 'Leading';\n /**\n * Specifies the value of 'avgWidth'.\n * @private\n */\n this.avgWidth = 'AvgWidth';\n /**\n * Specifies the value of 'fontFile2'.\n * @private\n */\n this.fontFile2 = 'FontFile2';\n /**\n * Specifies the value of 'maxWidth'.\n * @private\n */\n this.maxWidth = 'MaxWidth';\n /**\n * Specifies the value of 'xHeight'.\n * @private\n */\n this.xHeight = 'XHeight';\n /**\n * Specifies the value of 'stemH'.\n * @private\n */\n this.stemH = 'StemH';\n /**\n * Specifies the value of 'registry'.\n * @private\n */\n this.registry = 'Registry';\n /**\n * Specifies the value of 'ordering'.\n * @private\n */\n this.ordering = 'Ordering';\n /**\n * Specifies the value of 'supplement'.\n * @private\n */\n this.supplement = 'Supplement';\n /**\n * Specifies the value of 'type0'.\n * @private\n */\n this.type0 = 'Type0';\n /**\n * Specifies the value of 'identityH'.\n * @private\n */\n this.identityH = 'Identity-H';\n /**\n * Specifies the value of 'toUnicode'.\n * @private\n */\n this.toUnicode = 'ToUnicode';\n /**\n * Specifies the value of 'descendantFonts'.\n * @private\n */\n this.descendantFonts = 'DescendantFonts';\n /**\n * Specifies the value of 'background'.\n * @private\n */\n this.background = 'Background';\n /**\n * Specifies the value of 'shading'.\n * @private\n */\n this.shading = 'Shading';\n /**\n * Specifies the value of 'matrix'.\n * @private\n */\n this.matrix = 'Matrix';\n /**\n * Specifies the value of 'antiAlias'.\n * @private\n */\n this.antiAlias = 'AntiAlias';\n /**\n * Specifies the value of 'function'.\n * @private\n */\n this.function = 'Function';\n /**\n * Specifies the value of 'extend'.\n * @private\n */\n this.extend = 'Extend';\n /**\n * Specifies the value of 'shadingType'.\n * @private\n */\n this.shadingType = 'ShadingType';\n /**\n * Specifies the value of 'coords'.\n * @private\n */\n this.coords = 'Coords';\n /**\n * Specifies the value of 'domain'.\n * @private\n */\n this.domain = 'Domain';\n /**\n * Specifies the value of 'range'.\n * @private\n */\n this.range = 'Range';\n /**\n * Specifies the value of 'functionType'.\n * @private\n */\n this.functionType = 'FunctionType';\n /**\n * Specifies the value of 'bitsPerSample'.\n * @private\n */\n this.bitsPerSample = 'BitsPerSample';\n /**\n * Specifies the value of 'patternType'.\n * @private\n */\n this.patternType = 'PatternType';\n /**\n * Specifies the value of 'paintType'.\n * @private\n */\n this.paintType = 'PaintType';\n /**\n * Specifies the value of 'tilingType'.\n * @private\n */\n this.tilingType = 'TilingType';\n /**\n * Specifies the value of 'xStep'.\n * @private\n */\n this.xStep = 'XStep';\n /**\n * Specifies the value of 'yStep'.\n * @private\n */\n this.yStep = 'YStep';\n /**\n * Specifies the value of viewer preferences.\n * @private\n */\n this.viewerPreferences = 'ViewerPreferences';\n /**\n * Specifies the value of center window.\n * @private\n */\n this.centerWindow = 'CenterWindow';\n /**\n * Specifies the value of display title.\n * @private\n */\n this.displayTitle = 'DisplayTitle';\n /**\n * Specifies the value of fit window.\n * @private\n */\n this.fitWindow = 'FitWindow';\n /**\n * Specifies the value of hide menu bar.\n * @private\n */\n this.hideMenuBar = 'HideMenubar';\n /**\n * Specifies the value of hide tool bar.\n * @private\n */\n this.hideToolBar = 'HideToolbar';\n /**\n * Specifies the value of hide window UI.\n * @private\n */\n this.hideWindowUI = 'HideWindowUI';\n /**\n * Specifies the value of page mode.\n * @private\n */\n this.pageMode = 'PageMode';\n /**\n * Specifies the value of page layout.\n * @private\n */\n this.pageLayout = 'PageLayout';\n /**\n * Specifies the value of duplex.\n * @private\n */\n this.duplex = 'Duplex';\n /**\n * Specifies the value of print scaling.\n * @private\n */\n this.printScaling = 'PrintScaling';\n //\n }\n return DictionaryProperties;\n}());\nexport { DictionaryProperties };\n","import { Dictionary } from './../collections/dictionary';\nimport { PdfName } from './pdf-name';\nimport { Operators } from './../input-output/pdf-operators';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfDictionary` class is used to perform primitive operations.\n * @private\n */\nvar PdfDictionary = /** @class */ (function () {\n function PdfDictionary(dictionary) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position7 = -1;\n /**\n * The `IPdfSavable` with the specified key.\n * @private\n */\n this.primitiveItems = new Dictionary();\n /**\n * `Start marker` for dictionary.\n * @private\n */\n this.prefix = '<<';\n /**\n * `End marker` for dictionary.\n * @private\n */\n this.suffix = '>>';\n /**\n * @hidden\n * @private\n */\n this.resources = [];\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.object = null;\n /**\n * Flag for PDF file formar 1.5 is dictionary `archiving` needed.\n * @default true\n * @private\n */\n this.archive = true;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isResource = false;\n if (typeof dictionary === 'undefined') {\n this.primitiveItems = new Dictionary();\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n else {\n this.primitiveItems = new Dictionary();\n var keys = dictionary.items.keys();\n var values = dictionary.items.values();\n for (var index = 0; index < dictionary.items.size(); index++) {\n this.primitiveItems.setValue(keys[index], values[index]);\n }\n this.status = dictionary.status;\n this.freezeChanges(this);\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n }\n Object.defineProperty(PdfDictionary.prototype, \"items\", {\n //Properties\n /**\n * Gets or sets the `IPdfSavable` with the specified key.\n * @private\n */\n get: function () {\n return this.primitiveItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status7;\n },\n set: function (value) {\n this.status7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving7;\n },\n set: function (value) {\n this.isSaving7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index7;\n },\n set: function (value) {\n this.index7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position7;\n },\n set: function (value) {\n this.position7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.primitiveItems.size();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Dictionary\", {\n /**\n * Collection of `items` in the object.\n * @private\n */\n get: function () {\n return this;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.getArchive = function () {\n return this.archive;\n };\n /**\n * Set flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.setArchive = function (value) {\n this.archive = value;\n };\n /**\n * Sets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.setEncrypt = function (value) {\n this.encrypt = value;\n this.modify();\n };\n /**\n * Gets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.getEncrypt = function () {\n return this.encrypt;\n };\n /**\n * `Freezes` the changes.\n * @private\n */\n PdfDictionary.prototype.freezeChanges = function (freezer) {\n this.bChanged = false;\n };\n /**\n * Creates a `copy of PdfDictionary`.\n * @private\n */\n PdfDictionary.prototype.clone = function (crossTable) {\n //Need to add more codings\n var newDict = new PdfDictionary();\n return newDict;\n };\n /**\n * `Mark` this instance modified.\n * @private\n */\n PdfDictionary.prototype.modify = function () {\n this.bChanged = true;\n };\n /**\n * `Removes` the specified key.\n * @private\n */\n PdfDictionary.prototype.remove = function (key) {\n if (typeof key !== 'string') {\n this.primitiveItems.remove(key.value);\n this.modify();\n }\n else {\n this.remove(new PdfName(key));\n }\n };\n /**\n * `Determines` whether the dictionary contains the key.\n * @private\n */\n PdfDictionary.prototype.containsKey = function (key) {\n var returnValue = false;\n returnValue = this.primitiveItems.containsKey(key.toString());\n return returnValue;\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginSave = function () {\n this.beginSave.sender.beginSave();\n };\n /**\n * Raises event `Font Dictionary BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onFontDictionaryBeginSave = function () {\n this.fontDictionaryBeginSave.sender.fontDictionaryBeginSave();\n };\n /**\n * Raises event `Descendant Font BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onDescendantFontBeginSave = function () {\n this.descendantFontBeginSave.sender.descendantFontBeginSave();\n };\n /**\n * Raises event 'BeginSave'.\n * @private\n */\n PdfDictionary.prototype.onTemplateBeginSave = function () {\n this.pageBeginDrawTemplate.sender.pageBeginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginAnnotationSave = function () {\n this.annotationBeginSave.sender.beginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onSectionBeginSave = function (writer) {\n var saveEvent = this.sectionBeginSave;\n saveEvent.sender.beginSave(saveEvent.state, writer);\n };\n PdfDictionary.prototype.save = function (writer, bRaiseEvent) {\n if (typeof bRaiseEvent === 'undefined') {\n this.save(writer, true);\n }\n else {\n writer.write(this.prefix);\n if (typeof this.beginSave !== 'undefined') {\n this.onBeginSave();\n }\n if (typeof this.descendantFontBeginSave !== 'undefined') {\n this.onDescendantFontBeginSave();\n }\n if (typeof this.fontDictionaryBeginSave !== 'undefined') {\n this.onFontDictionaryBeginSave();\n }\n if (typeof this.annotationBeginSave !== 'undefined') {\n this.onBeginAnnotationSave();\n }\n if (typeof this.sectionBeginSave !== 'undefined') {\n this.onSectionBeginSave(writer);\n }\n if (typeof this.pageBeginDrawTemplate !== 'undefined') {\n this.onTemplateBeginSave();\n }\n // }\n if (this.Count > 0) {\n this.saveItems(writer);\n }\n writer.write(this.suffix);\n writer.write(Operators.newLine);\n }\n };\n /**\n * `Save dictionary items`.\n * @private\n */\n PdfDictionary.prototype.saveItems = function (writer) {\n writer.write(Operators.newLine);\n var keys = this.primitiveItems.keys();\n var values = this.primitiveItems.values();\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n var name_1 = new PdfName(key);\n name_1.save(writer);\n writer.write(Operators.whiteSpace);\n var resources = values[index];\n resources.save(writer);\n writer.write(Operators.newLine);\n }\n };\n return PdfDictionary;\n}());\nexport { PdfDictionary };\nvar SaveSectionCollectionEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveSectionCollectionEventHandler(sender) {\n this.sender = sender;\n }\n return SaveSectionCollectionEventHandler;\n}());\nexport { SaveSectionCollectionEventHandler };\nvar SaveDescendantFontEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveDescendantFontEventHandler(sender) {\n this.sender = sender;\n }\n return SaveDescendantFontEventHandler;\n}());\nexport { SaveDescendantFontEventHandler };\nvar SaveFontDictionaryEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontDictionaryEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontDictionaryEventHandler;\n}());\nexport { SaveFontDictionaryEventHandler };\nvar SaveAnnotationEventHandler = /** @class */ (function () {\n /**\n * New instance for `save annotation event handler` class.\n * @private\n */\n function SaveAnnotationEventHandler(sender) {\n this.sender = sender;\n }\n return SaveAnnotationEventHandler;\n}());\nexport { SaveAnnotationEventHandler };\nvar SaveSectionEventHandler = /** @class */ (function () {\n // constructors\n /**\n * New instance for `save section event handler` class.\n * @private\n */\n function SaveSectionEventHandler(sender, state) {\n this.sender = sender;\n this.state = state;\n }\n return SaveSectionEventHandler;\n}());\nexport { SaveSectionEventHandler };\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nvar SaveTemplateEventHandler = /** @class */ (function () {\n /**\n * New instance for save section collection event handler class.\n * @public\n */\n function SaveTemplateEventHandler(sender) {\n this.sender = sender;\n }\n return SaveTemplateEventHandler;\n}());\nexport { SaveTemplateEventHandler };\n","/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nvar PdfNumber = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfNumber` class.\n * @private\n */\n function PdfNumber(value) {\n /**\n * Sotres the `position`.\n * @default -1\n * @private\n */\n this.position5 = -1;\n this.value = value;\n }\n Object.defineProperty(PdfNumber.prototype, \"intValue\", {\n /**\n * Gets or sets the `integer` value.\n * @private\n */\n get: function () {\n return this.value;\n },\n set: function (value) {\n this.value = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isInteger\", {\n /**\n * Gets or sets a value indicating whether this instance `is integer`.\n * @private\n */\n get: function () {\n return this.integer;\n },\n set: function (value) {\n this.integer = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status5;\n },\n set: function (value) {\n this.status5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving5;\n },\n set: function (value) {\n this.isSaving5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index5;\n },\n set: function (value) {\n this.index5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position5;\n },\n set: function (value) {\n this.position5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves the object`.\n * @private\n */\n PdfNumber.prototype.save = function (writer) {\n writer.write(this.intValue.toString()); //tostring(CultureInfo.InletiantCulture)\n };\n /**\n * Creates a `copy of PdfNumber`.\n * @private\n */\n PdfNumber.prototype.clone = function (crossTable) {\n var newNumber = new PdfNumber(this.value);\n return newNumber;\n };\n /**\n * Converts a `float value to a string` using Adobe PDF rules.\n * @private\n */\n PdfNumber.floatToString = function (number) {\n // let tempString1 : string = number.toString();\n // let tempString2 : string = tempString1.indexOf('.') != -1 ? tempString1.substring(0, tempString1.indexOf('.')) : tempString1;\n var returnString = number.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n // let prefixLength : number = (22 - tempString2.length) >= 0 ? (22 - tempString2.length) : 0;\n // for (let index : number = 0; index < prefixLength; index++) {\n // returnString += '0';\n // }\n // returnString += tempString2 + '.00';\n // returnString += (tempString3.length > 6) ? tempString3.substring(0,6) : tempString3;\n // let suffixLength : number = (6 - tempString3.length) >= 0 ? (6 - tempString3.length) : 0;\n // for (let index : number = 0; index < suffixLength; index++) {\n // returnString += '0';\n // }\n return returnString;\n };\n /**\n * Determines the `minimum of the three values`.\n * @private\n */\n PdfNumber.min = function (x, y, z) {\n var r = Math.min(x, y);\n return Math.min(z, r);\n };\n return PdfNumber;\n}());\nexport { PdfNumber };\n","import { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @class */ (function () {\n function PdfArray(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n var tempNumberArray = array;\n for (var index = 0; index < tempNumberArray.length; index++) {\n var pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n var tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (var index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n PdfArray.prototype.items = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n Object.defineProperty(PdfArray.prototype, \"count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.internalElements.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status9;\n },\n set: function (value) {\n this.status9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving9;\n },\n set: function (value) {\n this.isSaving9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject9;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position9;\n },\n set: function (value) {\n this.position9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index9;\n },\n set: function (value) {\n this.index9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"elements\", {\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get: function () {\n return this.internalElements;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n PdfArray.prototype.add = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markedChange = function () {\n this.bChanged = true;\n };\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n PdfArray.prototype.contains = function (element) {\n var returnValue = false;\n for (var index = 0; index < this.internalElements.length; index++) {\n var tempElement = this.internalElements[index];\n var inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n };\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n PdfArray.prototype.getItems = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfArray.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (var i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n };\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n PdfArray.prototype.clone = function (crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n var newArray = new PdfArray();\n for (var index = 0; index < this.internalElements.length; index++) {\n var obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n };\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n PdfArray.fromRectangle = function (bounds) {\n var values = [bounds.x, bounds.y, bounds.width, bounds.height];\n var array = new PdfArray(values);\n return array;\n };\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n PdfArray.prototype.insert = function (index, element) {\n if (index < this.internalElements.length && index > 0) {\n var tempElements = [];\n for (var i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (var i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n };\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n PdfArray.prototype.indexOf = function (element) {\n return this.internalElements.indexOf(element);\n };\n /**\n * `Removes` element from the array.\n * @private\n */\n PdfArray.prototype.remove = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n var index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n };\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n PdfArray.prototype.removeAt = function (index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n var tempArray = [];\n for (var i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (var i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n };\n /**\n * `Clear` the array.\n * @private\n */\n PdfArray.prototype.clear = function () {\n this.internalElements = [];\n this.markChanged();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markChanged = function () {\n this.bChanged = true;\n };\n return PdfArray;\n}());\nexport { PdfArray };\n","/* eslint-disable */\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * array literal codes\n */\nvar ARR_LITERAL_CODES = new Int16Array(286);\nvar ARR_LITERAL_LENGTHS = new Uint8Array(286);\nvar ARR_DISTANCE_CODES = new Int16Array(30);\nvar ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nvar CompressedStreamWriter = /** @class */ (function () {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n function CompressedStreamWriter(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n Object.defineProperty(CompressedStreamWriter.prototype, \"compressedData\", {\n /**\n * get compressed data\n */\n get: function () {\n return this.stream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressedStreamWriter.prototype, \"getCompressedString\", {\n get: function () {\n var compressedString = '';\n if (this.stream !== undefined) {\n for (var i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n CompressedStreamWriter.prototype.write = function (data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n var end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n var encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n };\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n CompressedStreamWriter.prototype.writeZLibHeader = function () {\n /* Initialize header.*/\n var headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n };\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n CompressedStreamWriter.prototype.pendingBufferWriteShortBytes = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n };\n CompressedStreamWriter.prototype.compressData = function (finish) {\n var success;\n do {\n this.fillWindow();\n var canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n };\n CompressedStreamWriter.prototype.compressSlow = function (flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n var prevMatch = this.matchStart;\n var prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n };\n CompressedStreamWriter.prototype.discardMatch = function () {\n var hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n };\n CompressedStreamWriter.prototype.matchPreviousAvailable = function () {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n };\n CompressedStreamWriter.prototype.matchPreviousBest = function (prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n };\n CompressedStreamWriter.prototype.lookAheadCompleted = function (finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n };\n CompressedStreamWriter.prototype.huffmanIsFull = function (finish) {\n var len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n var lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n };\n CompressedStreamWriter.prototype.fillWindow = function () {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n var more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n };\n CompressedStreamWriter.prototype.slideWindow = function () {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (var i = 0; i < this.hashSize; ++i) {\n var m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (var i = 0; i < this.windowSize; i++) {\n var m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n };\n CompressedStreamWriter.prototype.insertString = function () {\n var match;\n var hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n };\n CompressedStreamWriter.prototype.findLongestMatch = function (curMatch) {\n var chainLen = 4096;\n var niceLen = 258;\n var scan = this.stringStart;\n var match;\n var bestEnd = this.stringStart + this.matchLength;\n var bestLength = Math.max(this.matchLength, 3 - 1);\n var limit = Math.max(this.stringStart - this.maxDist, 0);\n var stringEnd = this.stringStart + 258 - 1;\n var scanEnd1 = this.dataWindow[bestEnd - 1];\n var scanEnd = this.dataWindow[bestEnd];\n var data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n };\n CompressedStreamWriter.prototype.updateHash = function () {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n };\n CompressedStreamWriter.prototype.huffmanTallyLit = function (literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanTallyDist = function (dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n var lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n var dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanFlushBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n var blTreeCodes = 4;\n for (var i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n var opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n var static_len = this.extraBits;\n for (var i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (var i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n };\n CompressedStreamWriter.prototype.huffmanFlushStoredBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n };\n CompressedStreamWriter.prototype.huffmanLengthCode = function (len) {\n if (len === 255) {\n return 285;\n }\n var code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n };\n CompressedStreamWriter.prototype.huffmanDistanceCode = function (distance) {\n var code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n };\n CompressedStreamWriter.prototype.huffmanSendAllTrees = function (blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (var rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n };\n CompressedStreamWriter.prototype.huffmanReset = function () {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n };\n CompressedStreamWriter.prototype.huffmanCompressBlock = function () {\n for (var i = 0; i < this.bufferPosition; i++) {\n var literalLen = this.arrLiterals[i] & 255;\n var dist = this.arrDistances[i];\n if (dist-- !== 0) {\n var lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n var bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n var dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n };\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n CompressedStreamWriter.prototype.pendingBufferWriteBits = function (b, count) {\n var uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n };\n CompressedStreamWriter.prototype.pendingBufferFlush = function (isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n var array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n };\n CompressedStreamWriter.prototype.pendingBufferFlushBits = function () {\n var result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteByteBlock = function (data, offset, length) {\n var array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteShort = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n };\n CompressedStreamWriter.prototype.pendingBufferAlignToByte = function () {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n };\n /**\n * Huffman Tree literal calculation\n * @private\n */\n CompressedStreamWriter.initHuffmanTree = function () {\n var i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n };\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n CompressedStreamWriter.prototype.close = function () {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n CompressedStreamWriter.prototype.destroy = function () {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n };\n CompressedStreamWriter.isHuffmanTreeInitiated = false;\n return CompressedStreamWriter;\n}());\nexport { CompressedStreamWriter };\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @class */ (function () {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n function CompressorHuffmanTree(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n Object.defineProperty(CompressorHuffmanTree.prototype, \"treeLength\", {\n get: function () {\n return this.codeCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeLengths\", {\n get: function () {\n return this.codeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeFrequencies\", {\n get: function () {\n return this.codeFrequency;\n },\n enumerable: true,\n configurable: true\n });\n CompressorHuffmanTree.prototype.setStaticCodes = function (codes, lengths) {\n var temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n var lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n };\n /**\n * reset all code data in tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.reset = function () {\n for (var i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n };\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeCodeToStream = function (code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n };\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildCodes = function () {\n var nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n var code = 0;\n for (var bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (var i = 0; i < this.codeCount; i++) {\n var bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n };\n CompressorHuffmanTree.bitReverse = function (value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n };\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n CompressorHuffmanTree.prototype.getEncodedLength = function () {\n var len = 0;\n for (var i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n };\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.calculateBLFreq = function (blTree) {\n var maxCount;\n var minCount;\n var count;\n var curLen = -1;\n var i = 0;\n while (i < this.codeCount) {\n count = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n };\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeTree = function (blTree) {\n var maxRepeatCount;\n var minRepeatCount;\n var currentRepeatCount;\n var currentCodeLength = -1;\n var i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n };\n /**\n * Build huffman tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildTree = function () {\n var codesCount = this.codeFrequency.length;\n var arrTree = new Int32Array(codesCount);\n var treeLength = 0;\n var maxCount = 0;\n for (var n = 0; n < codesCount; n++) {\n var freq = this.codeFrequency[n];\n if (freq !== 0) {\n var pos = treeLength++;\n var pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n var leafsCount = treeLength;\n var nodesCount = leafsCount;\n var child = new Int32Array(4 * treeLength - 2);\n var values = new Int32Array(2 * treeLength - 1);\n for (var i = 0; i < treeLength; i++) {\n var node = arrTree[i];\n var iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n };\n CompressorHuffmanTree.prototype.constructHuffmanTree = function (arrTree, treeLength, values, nodesCount, child) {\n do {\n var first = arrTree[0];\n var last = arrTree[--treeLength];\n var lastVal = values[last];\n var pPos = 0;\n var path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n var second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n var minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n };\n CompressorHuffmanTree.prototype.buildLength = function (child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n var numNodes = Math.floor(child.length / 2);\n var numLeafs = Math.floor((numNodes + 1) / 2);\n var overflow = 0;\n for (var i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n var iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n };\n CompressorHuffmanTree.prototype.recreateTree = function (child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n var nodePtr = 2 * numLeafs;\n for (var bits = this.maxLength; bits !== 0; bits--) {\n var n = this.lengthCount[bits - 1];\n while (n > 0) {\n var childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n };\n CompressorHuffmanTree.prototype.calculateOptimalCodeLength = function (child, overflow, numNodes) {\n var lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (var i = numNodes - 1; i >= 0; i--) {\n var childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n var bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n var bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n };\n CompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n CompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return CompressorHuffmanTree;\n}());\nexport { CompressorHuffmanTree };\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n ChecksumCalculator.checksumUpdate = function (checksum, buffer, offset, length) {\n var uint = new Uint32Array(1);\n uint[0] = checksum;\n var checksum_uint = uint[0];\n var s1 = uint[0] = checksum_uint & 65535;\n var s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n var steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n };\n ChecksumCalculator.checkSumBitOffset = 16;\n ChecksumCalculator.checksumBase = 65521;\n ChecksumCalculator.checksumIterationCount = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfDictionary } from './pdf-dictionary';\nimport { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\nimport { PdfName } from './pdf-name';\nimport { PdfArray } from './pdf-array';\nimport { PdfReferenceHolder } from './pdf-reference';\nimport { CompressedStreamWriter } from '@syncfusion/ej2-compression';\n/**\n * `PdfStream` class is used to perform stream related primitive operations.\n * @private\n */\nvar PdfStream = /** @class */ (function (_super) {\n __extends(PdfStream, _super);\n function PdfStream(dictionary, data) {\n var _this = _super.call(this, dictionary) || this;\n //Constants\n /**\n * @hidden\n * @private\n */\n _this.dicPrefix = 'stream';\n /**\n * @hidden\n * @private\n */\n _this.dicSuffix = 'endstream';\n /**\n * Internal variable to hold `cloned object`.\n * @private\n */\n _this.clonedObject2 = null;\n /**\n * @hidden\n * @private\n */\n _this.bCompress = true;\n if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {\n _this.dataStream2 = [];\n _this.dataStream2 = data;\n _this.bCompress2 = false;\n }\n else {\n _this.dataStream2 = [];\n _this.bCompress2 = true;\n //Pending\n }\n return _this;\n }\n Object.defineProperty(PdfStream.prototype, \"internalStream\", {\n /**\n * Gets the `internal` stream.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"compress\", {\n /**\n * Gets or sets `compression` flag.\n * @private\n */\n get: function () {\n return this.bCompress;\n },\n set: function (value) {\n this.bCompress = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"data\", {\n /**\n * Gets or sets the `data`.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clear` the internal stream.\n * @private\n */\n PdfStream.prototype.clearStream = function () {\n this.internalStream = [];\n if (this.items.containsKey(this.dictionaryProperties.filter)) {\n this.remove(this.dictionaryProperties.filter);\n }\n this.bCompress = true;\n this.modify();\n };\n /**\n * `Writes` the specified string.\n * @private\n */\n PdfStream.prototype.write = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (text.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty string, text');\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * `Writes` the specified bytes.\n * @private\n */\n PdfStream.prototype.writeBytes = function (data) {\n if (data === null) {\n throw new Error('ArgumentNullException:data');\n }\n if (data.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty bytes, data');\n }\n var text = '';\n for (var i = 0; i < data.length; i++) {\n text += String.fromCharCode(data[i]);\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * Raises event `Cmap BeginSave`.\n * @private\n */\n PdfStream.prototype.onCmapBeginSave = function () {\n this.cmapBeginSave.sender.cmapBeginSave();\n };\n /**\n * Raises event `Font Program BeginSave`.\n * @private\n */\n PdfStream.prototype.onFontProgramBeginSave = function () {\n this.fontProgramBeginSave.sender.fontProgramBeginSave();\n };\n /**\n * `Compresses the content` if it's required.\n * @private\n */\n PdfStream.prototype.compressContent = function (data, writer) {\n if (this.bCompress) {\n var byteArray = [];\n for (var i = 0; i < data.length; i++) {\n byteArray.push(data.charCodeAt(i));\n }\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n // data = 'Hello World!!!';\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n data = sw.getCompressedString;\n this.addFilter(this.dictionaryProperties.flatedecode);\n }\n return data;\n };\n /**\n * `Adds a filter` to the filter array.\n * @private\n */\n PdfStream.prototype.addFilter = function (filterName) {\n var obj = this.items.getValue(this.dictionaryProperties.filter);\n if (obj instanceof PdfReferenceHolder) {\n var rh = obj;\n obj = rh.object;\n }\n var array = obj;\n var name = obj;\n if (name != null) {\n array = new PdfArray();\n array.insert(0, name);\n this.items.setValue(this.dictionaryProperties.filter, array);\n }\n name = new PdfName(filterName);\n if (array == null) {\n this.items.setValue(this.dictionaryProperties.filter, name);\n }\n else {\n array.insert(0, name);\n }\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfStream.prototype.save = function (writer) {\n if (typeof this.cmapBeginSave !== 'undefined') {\n this.onCmapBeginSave();\n }\n if (typeof this.fontProgramBeginSave !== 'undefined') {\n this.onFontProgramBeginSave();\n }\n var data = '';\n for (var i = 0; i < this.data.length; i++) {\n data = data + this.data[i];\n }\n if (data.length > 1 && !this.isResource) {\n data = 'q\\r\\n' + data + 'Q\\r\\n';\n }\n data = this.compressContent(data, writer);\n var length = data.length;\n this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));\n _super.prototype.save.call(this, writer, false);\n writer.write(this.dicPrefix);\n writer.write(Operators.newLine);\n if (data.length > 0) {\n writer.write(data);\n }\n writer.write(Operators.newLine);\n writer.write(this.dicSuffix);\n writer.write(Operators.newLine);\n };\n /**\n * Converts `bytes to string`.\n * @private\n */\n PdfStream.bytesToString = function (byteArray) {\n var output = '';\n for (var i = 0; i < byteArray.length; i++) {\n output = output + String.fromCharCode(byteArray[i]);\n }\n return output;\n };\n return PdfStream;\n}(PdfDictionary));\nexport { PdfStream };\nvar SaveCmapEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveCmapEventHandler(sender) {\n this.sender = sender;\n }\n return SaveCmapEventHandler;\n}());\nexport { SaveCmapEventHandler };\nvar SaveFontProgramEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontProgramEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontProgramEventHandler;\n}());\nexport { SaveFontProgramEventHandler };\n","/**\n * public Enum for `ObjectType`.\n * @private\n */\nexport var ObjectType;\n(function (ObjectType) {\n /**\n * Specifies the type of `Free`.\n * @private\n */\n ObjectType[ObjectType[\"Free\"] = 0] = \"Free\";\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n ObjectType[ObjectType[\"Normal\"] = 1] = \"Normal\";\n /**\n * Specifies the type of `Packed`.\n * @private\n */\n ObjectType[ObjectType[\"Packed\"] = 2] = \"Packed\";\n})(ObjectType || (ObjectType = {}));\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfString } from './../primitives/pdf-string';\n/**\n * `PdfReference` class is used to perform reference related primitive operations.\n * @private\n */\nvar PdfReference = /** @class */ (function () {\n function PdfReference(objNumber, genNumber) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index3 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position3 = -1;\n /**\n * Holds the `object number`.\n * @default 0\n * @private\n */\n this.objNumber = 0;\n /**\n * Holds the `generation number` of the object.\n * @default 0\n * @private\n */\n this.genNumber = 0;\n if (typeof objNumber === 'number' && typeof genNumber === 'number') {\n this.objNumber = objNumber;\n this.genNumber = genNumber;\n // } else if (typeof objNum === 'string' && typeof genNum === 'string') {\n }\n else {\n this.objNumber = Number(objNumber);\n this.genNumber = Number(genNumber);\n }\n }\n Object.defineProperty(PdfReference.prototype, \"status\", {\n //Property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status3;\n },\n set: function (value) {\n this.status3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving3;\n },\n set: function (value) {\n this.isSaving3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index3;\n },\n set: function (value) {\n this.index3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position3;\n },\n set: function (value) {\n this.position3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var returnObject3 = null;\n return returnObject3;\n },\n enumerable: true,\n configurable: true\n });\n //IPdfPrimitives methods\n /**\n * `Saves` the object.\n * @private\n */\n PdfReference.prototype.save = function (writer) {\n writer.write(this.toString());\n };\n /**\n * Returns a `string` representing the object.\n * @private\n */\n PdfReference.prototype.toString = function () {\n return this.objNumber.toString() + ' ' + this.genNumber.toString() + ' R';\n };\n /**\n * Creates a `deep copy` of the IPdfPrimitive object.\n * @private\n */\n PdfReference.prototype.clone = function (crossTable) {\n return null;\n };\n return PdfReference;\n}());\nexport { PdfReference };\n/**\n * `PdfReferenceHolder` class is used to perform reference holder related primitive operations.\n * @private\n */\nvar PdfReferenceHolder = /** @class */ (function () {\n function PdfReferenceHolder(obj1, obj2) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index4 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position4 = -1;\n /**\n * The `index` of the object within the object collection.\n * @default -1\n * @private\n */\n this.objectIndex = -1;\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (typeof obj2 === 'undefined') {\n this.initialize(obj1);\n // }\n // else {\n // if (obj2 === null) {\n // throw new Error('ArgumentNullException : crossTable');\n // }\n // if (obj1 === null) {\n // throw new Error('ArgumentNullException : reference');\n // }\n // this.crossTable = obj2;\n // let tempObj1 : PdfReference = obj1;\n // this.reference = tempObj1;\n // }\n }\n Object.defineProperty(PdfReferenceHolder.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status4;\n },\n set: function (value) {\n this.status4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving4;\n },\n set: function (value) {\n this.isSaving4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index4;\n },\n set: function (value) {\n this.index4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position4;\n },\n set: function (value) {\n this.position4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"object\", {\n /**\n * Gets the `object` the reference is of.\n * @private\n */\n get: function () {\n // if ((this.reference != null) || (this.object == null)) {\n // this.object = this.GetterObject();\n // }\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"index\", {\n /**\n * Gets the `index` of the object.\n * @private\n */\n get: function () {\n // let items : PdfMainObjectCollection = this.crossTable.PdfObjects;\n // this.objectIndex = items.GetObjectIndex(this.reference);\n // if (this.objectIndex < 0) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.reference);\n // this.objectIndex = items.Count - 1;\n // }\n return this.objectIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"element\", {\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n PdfReferenceHolder.prototype.initialize = function (obj1) {\n if (obj1 instanceof PdfArray\n || obj1 instanceof PdfDictionary\n || obj1 instanceof PdfName\n || obj1 instanceof PdfNumber\n || obj1 instanceof PdfStream\n || obj1 instanceof PdfReference\n || obj1 instanceof PdfString) {\n this.primitiveObject = obj1;\n }\n else {\n var tempObj = obj1;\n this.initialize(tempObj.element);\n }\n };\n /**\n * `Writes` a reference into a PDF document.\n * @private\n */\n PdfReferenceHolder.prototype.save = function (writer) {\n // if (writer == null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n var position = writer.position;\n var cTable = writer.document.crossTable;\n // if (cTable.Document instanceof PdfDocument) {\n this.object.isSaving = true;\n // }\n var reference = null;\n // if (writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true) {\n // if (this.reference === null) {\n // reference = cTable.GetReference(this.Object);\n // } else {\n // reference = this.reference;\n // }\n // } else {\n // reference = cTable.GetReference(this.Object);\n // }\n // if (!(writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true)) {\n reference = cTable.getReference(this.object);\n // }\n // if (writer.Position !== position) {\n // writer.Position = position;\n // }\n reference.save(writer);\n };\n /**\n * Creates a `copy of PdfReferenceHolder`.\n * @private\n */\n PdfReferenceHolder.prototype.clone = function (crossTable) {\n var refHolder = null;\n var temp = null;\n var refNum = '';\n var reference = null;\n // Restricts addition of same object multiple time.\n /* if (this.Reference != null && this.crossTable != null && this.crossTable.PageCorrespondance.containsKey(this.Reference)) {\n refHolder = new PdfReferenceHolder(this.crossTable.PageCorrespondance.getValue(this.Reference) as PdfReference, crossTable);\n return refHolder;\n }\n if (Object instanceof PdfNumber) {\n return new PdfNumber((Object as PdfNumber).IntValue);\n }\n */\n // if (Object instanceof PdfDictionary) {\n // // Meaning the referenced page is not available for import.\n // let type : PdfName = new PdfName(this.dictionaryProperties.type);\n // let dict : PdfDictionary = Object as PdfDictionary;\n // if (dict.ContainsKey(type)) {\n // let pageName : PdfName = dict.Items.getValue(type.Value) as PdfName;\n // if (pageName !== null) {\n // if (pageName.Value === 'Page') {\n // return new PdfNull();\n // }\n // }\n // }\n // }\n /* if (Object instanceof PdfName) {\n return new PdfName ((Object as PdfName ).Value);\n }\n */\n // Resolves circular references.\n // if (crossTable.PrevReference !== null && (crossTable.PrevReference.indexOf(this.Reference) !== -1)) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.Reference).ClonedObject;\n // if (obj !== null) {\n // reference = crossTable.GetReference(obj);\n // return new PdfReferenceHolder(reference, crossTable);\n // } else {\n // return new PdfNull();\n // }\n // }\n /*if (this.Reference !== null) {\n crossTable.PrevReference.push(this.Reference);\n }\n reference = crossTable.GetReference(temp);\n refHolder = new PdfReferenceHolder(reference, crossTable);\n return refHolder;\n */\n return null;\n };\n return PdfReferenceHolder;\n}());\nexport { PdfReferenceHolder };\n","/**\n * `PdfBoolean` class is used to perform boolean related primitive operations.\n * @private\n */\nvar PdfBoolean = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfBoolean` class.\n * @private\n */\n function PdfBoolean(value) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.currentPosition = -1;\n this.value = value;\n }\n Object.defineProperty(PdfBoolean.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.objectStatus;\n },\n set: function (value) {\n this.objectStatus = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.saving;\n },\n set: function (value) {\n this.saving = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index;\n },\n set: function (value) {\n this.index = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfBoolean.prototype.save = function (writer) {\n writer.write(this.boolToStr(this.value));\n };\n /**\n * Creates a `copy of PdfBoolean`.\n * @private\n */\n PdfBoolean.prototype.clone = function (crossTable) {\n var newNumber = new PdfBoolean(this.value);\n return newNumber;\n };\n // Implementation\n /**\n * Converts `boolean to string` - 0/1 'true'/'false'.\n * @private\n */\n PdfBoolean.prototype.boolToStr = function (value) {\n return value ? 'true' : 'false';\n };\n return PdfBoolean;\n}());\nexport { PdfBoolean };\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfBoolean } from './../primitives/pdf-boolean';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Defines the way the document is to be presented on the screen or in print.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets viewer preferences\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfViewerPreferences = /** @class */ (function () {\n /**\n * Initialize a new instance of `PdfViewerPreferences` class.\n *\n * @private\n * ```\n */\n function PdfViewerPreferences(catalog) {\n this._dictionaryProperties = new DictionaryProperties();\n this._centerWindow = false;\n this._fitWindow = false;\n this._displayTitle = false;\n this._splitWindow = false;\n this._hideMenuBar = false;\n this._hideToolBar = false;\n this._hideWindowUI = false;\n this._pageMode = PdfPageMode.UseNone;\n this._pageLayout = PdfPageLayout.SinglePage;\n this._dictionary = new PdfDictionary();\n this._duplex = DuplexMode.None;\n this._catalog = catalog;\n }\n Object.defineProperty(PdfViewerPreferences.prototype, \"centerWindow\", {\n /**\n * A flag specifying whether to position the document’s window in the center of the screen.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the center window\n * let centerWindow : boolean = viewerPreferences.centerWindow;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._centerWindow;\n },\n /**\n * A flag specifying whether to position the document’s window in the center of the screen.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the center window\n * viewerPreferences.centerWindow = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._centerWindow = value;\n this._dictionary.items.setValue(this._dictionaryProperties.centerWindow, new PdfBoolean(this._centerWindow));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"displayTitle\", {\n /**\n * A flag specifying whether the window’s title bar should display the document title taken\n * from the Title entry of the document information dictionary. If false, the title bar\n * should instead display the name of the PDF file containing the document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the display title\n * let displayTitle : boolean = viewerPreferences.displayTitle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._displayTitle;\n },\n /**\n * A flag specifying whether the window’s title bar should display the document title taken\n * from the Title entry of the document information dictionary. If false, the title bar\n * should instead display the name of the PDF file containing the document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the display title\n * viewerPreferences.displayTitle = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._displayTitle = value;\n this._dictionary.items.setValue(this._dictionaryProperties.displayTitle, new PdfBoolean(this._displayTitle));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"fitWindow\", {\n /**\n * A flag specifying whether to resize the document’s window to fit the size of the first\n * displayed page.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the fit window\n * let fitWindow : boolean = viewerPreferences.fitWindow;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._fitWindow;\n },\n /**\n * A flag specifying whether to resize the document’s window to fit the size of the first\n * displayed page.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the fit window\n * viewerPreferences.fitWindow = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._fitWindow = value;\n this._dictionary.items.setValue(this._dictionaryProperties.fitWindow, new PdfBoolean(this._fitWindow));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideMenuBar\", {\n /**\n * A flag specifying whether to hide the viewer application’s menu bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide menu bar\n * let hideMenuBar: boolean = viewerPreferences.hideMenuBar;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideMenuBar;\n },\n /**\n * A flag specifying whether to hide the viewer application’s menu bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide menu bar\n * viewerPreferences.hideMenuBar = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideMenuBar = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideMenuBar, new PdfBoolean(this._hideMenuBar));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideToolBar\", {\n /**\n * A flag specifying whether to hide the viewer application’s tool bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide tool bar\n * let hideToolBar: boolean = viewerPreferences.hideToolBar;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideToolBar;\n },\n /**\n * A flag specifying whether to hide the viewer application’s tool bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide tool bar\n * viewerPreferences.hideToolbar = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideToolBar = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideToolBar, new PdfBoolean(this._hideToolBar));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideWindowUI\", {\n /**\n * A flag specifying whether to hide user interface elements in the document’s window\n * (such as scroll bars and navigation controls), leaving only the document’s contents displayed.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide window UI\n * let hideWindowUI: boolean = viewerPreferences.hideWindowUI;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideWindowUI;\n },\n /**\n * A flag specifying whether to hide user interface elements in the document’s window\n * (such as scroll bars and navigation controls), leaving only the document’s contents displayed.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide window UI\n * viewerPreferences.hideWindowUI = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideWindowUI = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideWindowUI, new PdfBoolean(this._hideWindowUI));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageMode\", {\n /**\n * A name object specifying how the document should be displayed when opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page mode\n * let pageMode: PdfPageMode = viewerPreferences.pageMode;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageMode;\n },\n /**\n * A name object specifying how the document should be displayed when opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page mode\n * viewerPreferences.pageMode = PdfPageMode.UseOutlines;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageMode = value;\n this._catalog.items.setValue(this._dictionaryProperties.pageMode, new PdfName(this._mapPageMode(this._pageMode)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"duplex\", {\n /**\n * Gets print duplex mode handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the duplex\n * let duplex : DuplexMode = viewerPreferences.duplex;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._duplex;\n },\n /**\n * Sets print duplex mode handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the duplex\n * viewerPreferences.duplex = DuplexMode.DuplexFlipLongEdge;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._duplex = value;\n this._catalog.items.setValue(this._dictionaryProperties.duplex, new PdfName(this._mapDuplexMode(this._duplex)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageLayout\", {\n /**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page layout\n * let pageLayout : PdfPageLayout = viewerPreferences.pageLayout;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageLayout;\n },\n /**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page layout\n * viewerPreferences.pageLayout = PdfPageLayout.TwoColumnLeft;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageLayout = value;\n this._catalog.items.setValue(this._dictionaryProperties.pageLayout, new PdfName(this._mapPageLayout(this._pageLayout)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageScaling\", {\n /**\n * Gets the page scaling option to be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page scaling\n * let pageScaling : PageScalingMode = viewerPreferences.pageScaling;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageScaling;\n },\n /**\n * Sets the page scaling option to be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page scaling\n * viewerPreferences.pageScaling = PageScalingMode.None;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageScaling = value;\n if (this._pageScaling === PageScalingMode.AppDefault && this._dictionary.items.containsKey(this._dictionaryProperties.printScaling)) {\n this._dictionary.items.remove(this._dictionaryProperties.printScaling);\n }\n else if (this._pageScaling === PageScalingMode.None) {\n this._dictionary.items.setValue(this._dictionaryProperties.printScaling, new PdfName('None'));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"element\", {\n /**\n * Primivie element\n *\n * @private\n */\n get: function () {\n return this._dictionary;\n },\n enumerable: true,\n configurable: true\n });\n PdfViewerPreferences.prototype._mapDuplexMode = function (mode) {\n switch (mode) {\n case DuplexMode.Simplex:\n return 'Simplex';\n case DuplexMode.DuplexFlipShortEdge:\n return 'DuplexFlipShortEdge';\n case DuplexMode.DuplexFlipLongEdge:\n return 'DuplexFlipLongEdge';\n case DuplexMode.None:\n return 'None';\n }\n };\n PdfViewerPreferences.prototype._mapPageMode = function (mode) {\n switch (mode) {\n case PdfPageMode.UseNone:\n return 'UseNone';\n case PdfPageMode.UseOutlines:\n return 'UseOutlines';\n case PdfPageMode.UseThumbs:\n return 'UseThumbs';\n case PdfPageMode.FullScreen:\n return 'FullScreen';\n case PdfPageMode.UseOC:\n return 'UseOC';\n case PdfPageMode.UseAttachments:\n return 'UseAttachments';\n }\n };\n PdfViewerPreferences.prototype._mapPageLayout = function (layout) {\n switch (layout) {\n case PdfPageLayout.SinglePage:\n return 'SinglePage';\n case PdfPageLayout.OneColumn:\n return 'OneColumn';\n case PdfPageLayout.TwoColumnLeft:\n return 'TwoColumnLeft';\n case PdfPageLayout.TwoColumnRight:\n return 'TwoColumnRight';\n case PdfPageLayout.TwoPageLeft:\n return 'TwoPageLeft';\n case PdfPageLayout.TwoPageRight:\n return 'TwoPageRight';\n }\n };\n return PdfViewerPreferences;\n}());\nexport { PdfViewerPreferences };\n/**\n * Represents mode of document displaying.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page mode\n * viewerPreferences.pageMode = PdfPageMode.UseOutlines;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfPageMode;\n(function (PdfPageMode) {\n /**\n * Default value. Neither document outline nor thumbnail images visible.\n */\n PdfPageMode[PdfPageMode[\"UseNone\"] = 0] = \"UseNone\";\n /**\n * Document outline visible.\n */\n PdfPageMode[PdfPageMode[\"UseOutlines\"] = 1] = \"UseOutlines\";\n /**\n * Thumbnail images visible.\n */\n PdfPageMode[PdfPageMode[\"UseThumbs\"] = 2] = \"UseThumbs\";\n /**\n * Full-screen mode, with no menu bar, window controls, or any other window visible.\n */\n PdfPageMode[PdfPageMode[\"FullScreen\"] = 3] = \"FullScreen\";\n /**\n * Optional content group panel visible.\n */\n PdfPageMode[PdfPageMode[\"UseOC\"] = 4] = \"UseOC\";\n /**\n * Attachments are visible.\n */\n PdfPageMode[PdfPageMode[\"UseAttachments\"] = 5] = \"UseAttachments\";\n})(PdfPageMode || (PdfPageMode = {}));\n/**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page layout\n * viewerPreferences.pageLayout = PdfPageLayout.TwoColumnLeft;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfPageLayout;\n(function (PdfPageLayout) {\n /**\n * Default Value. Display one page at a time.\n */\n PdfPageLayout[PdfPageLayout[\"SinglePage\"] = 0] = \"SinglePage\";\n /**\n * Display the pages in one column.\n */\n PdfPageLayout[PdfPageLayout[\"OneColumn\"] = 1] = \"OneColumn\";\n /**\n * Display the pages in two columns, with odd numbered\n * pages on the left.\n */\n PdfPageLayout[PdfPageLayout[\"TwoColumnLeft\"] = 2] = \"TwoColumnLeft\";\n /**\n * Display the pages in two columns, with odd numbered\n * pages on the right.\n */\n PdfPageLayout[PdfPageLayout[\"TwoColumnRight\"] = 3] = \"TwoColumnRight\";\n /**\n * Display the pages two at a time, with odd-numbered pages on the left.\n */\n PdfPageLayout[PdfPageLayout[\"TwoPageLeft\"] = 4] = \"TwoPageLeft\";\n /**\n * Display the pages two at a time, with odd-numbered pages on the right.\n */\n PdfPageLayout[PdfPageLayout[\"TwoPageRight\"] = 5] = \"TwoPageRight\";\n})(PdfPageLayout || (PdfPageLayout = {}));\n/**\n * The paper handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the duplex\n * viewerPreferences.duplex = DuplexMode.DuplexFlipLongEdge;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var DuplexMode;\n(function (DuplexMode) {\n /**\n * Print single-sided.\n */\n DuplexMode[DuplexMode[\"Simplex\"] = 0] = \"Simplex\";\n /**\n * Duplex and flip on the short edge of the sheet.\n */\n DuplexMode[DuplexMode[\"DuplexFlipShortEdge\"] = 1] = \"DuplexFlipShortEdge\";\n /**\n * Duplex and flip on the long edge of the sheet.\n */\n DuplexMode[DuplexMode[\"DuplexFlipLongEdge\"] = 2] = \"DuplexFlipLongEdge\";\n /**\n * Default value.\n */\n DuplexMode[DuplexMode[\"None\"] = 3] = \"None\";\n})(DuplexMode || (DuplexMode = {}));\n/**\n * Specifies the different page scaling option that shall be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page scaling\n * viewerPreferences.pageScaling = PageScalingMode.None;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PageScalingMode;\n(function (PageScalingMode) {\n /**\n * Indicates the conforming reader’s default print scaling.\n */\n PageScalingMode[PageScalingMode[\"AppDefault\"] = 0] = \"AppDefault\";\n /**\n * Indicates no page scaling.\n */\n PageScalingMode[PageScalingMode[\"None\"] = 1] = \"None\";\n})(PageScalingMode || (PageScalingMode = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCatalog.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfViewerPreferences } from './pdf-viewer-preferences';\n/**\n * `PdfCatalog` class represents internal catalog of the Pdf document.\n * @private\n */\nvar PdfCatalog = /** @class */ (function (_super) {\n __extends(PdfCatalog, _super);\n //constructor\n /**\n * Initializes a new instance of the `PdfCatalog` class.\n * @private\n */\n function PdfCatalog() {\n var _this = _super.call(this) || this;\n //fields\n /**\n * Internal variable to store collection of `sections`.\n * @default null\n * @private\n */\n _this.sections = null;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n _this.tempDictionaryProperties = new DictionaryProperties();\n _this.items.setValue(new DictionaryProperties().type, new PdfName('Catalog'));\n return _this;\n }\n Object.defineProperty(PdfCatalog.prototype, \"pages\", {\n //Properties\n /**\n * Gets or sets the sections, which contain `pages`.\n * @private\n */\n get: function () {\n return this.sections;\n },\n set: function (value) {\n var dictionary = value.element;\n // if (this.sections !== value) {\n // this.sections = value;\n // this.Items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n // }\n this.sections = value;\n this.items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCatalog.prototype, \"viewerPreferences\", {\n /**\n * Gets the viewer preferences of the PDF document.\n * @private\n */\n get: function () {\n if (this._viewerPreferences === null || typeof this._viewerPreferences === 'undefined') {\n this._viewerPreferences = new PdfViewerPreferences(this);\n this.items.setValue(this.tempDictionaryProperties.viewerPreferences, new PdfReferenceHolder(this._viewerPreferences.element));\n }\n return this._viewerPreferences;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCatalog;\n}(PdfDictionary));\nexport { PdfCatalog };\n","/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nexport var PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `Portrait`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n /**\n * Specifies the type of `Landscape`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * public Enum for `PdfPageRotateAngle`.\n * @private\n */\nexport var PdfPageRotateAngle;\n(function (PdfPageRotateAngle) {\n /**\n * Specifies the type of `RotateAngle0`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle0\"] = 0] = \"RotateAngle0\";\n /**\n * Specifies the type of `RotateAngle90`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle90\"] = 1] = \"RotateAngle90\";\n /**\n * Specifies the type of `RotateAngle180`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle180\"] = 2] = \"RotateAngle180\";\n /**\n * Specifies the type of `RotateAngle270`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle270\"] = 3] = \"RotateAngle270\";\n})(PdfPageRotateAngle || (PdfPageRotateAngle = {}));\n/**\n * public Enum for `PdfNumberStyle`.\n * @private\n */\nexport var PdfNumberStyle;\n(function (PdfNumberStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Numeric`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"Numeric\"] = 1] = \"Numeric\";\n /**\n * Specifies the type of `LowerLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerLatin\"] = 2] = \"LowerLatin\";\n /**\n * Specifies the type of `LowerRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerRoman\"] = 3] = \"LowerRoman\";\n /**\n * Specifies the type of `UpperLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperLatin\"] = 4] = \"UpperLatin\";\n /**\n * Specifies the type of `UpperRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperRoman\"] = 5] = \"UpperRoman\";\n})(PdfNumberStyle || (PdfNumberStyle = {}));\n/**\n * public Enum for `PdfDockStyle`.\n * @private\n */\nexport var PdfDockStyle;\n(function (PdfDockStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Bottom\"] = 1] = \"Bottom\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Top\"] = 2] = \"Top\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Right\"] = 4] = \"Right\";\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Fill\"] = 5] = \"Fill\";\n})(PdfDockStyle || (PdfDockStyle = {}));\n/**\n * public Enum for `PdfAlignmentStyle`.\n * @private\n */\nexport var PdfAlignmentStyle;\n(function (PdfAlignmentStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `TopLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopLeft\"] = 1] = \"TopLeft\";\n /**\n * Specifies the type of `TopCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopCenter\"] = 2] = \"TopCenter\";\n /**\n * Specifies the type of `TopRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopRight\"] = 3] = \"TopRight\";\n /**\n * Specifies the type of `MiddleLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n /**\n * Specifies the type of `MiddleCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n /**\n * Specifies the type of `MiddleRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleRight\"] = 6] = \"MiddleRight\";\n /**\n * Specifies the type of `BottomLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomLeft\"] = 7] = \"BottomLeft\";\n /**\n * Specifies the type of `BottomCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomCenter\"] = 8] = \"BottomCenter\";\n /**\n * Specifies the type of `BottomRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomRight\"] = 9] = \"BottomRight\";\n})(PdfAlignmentStyle || (PdfAlignmentStyle = {}));\n/**\n * public Enum for `TemplateType`.\n * @private\n */\nexport var TemplateType;\n(function (TemplateType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n TemplateType[TemplateType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n TemplateType[TemplateType[\"Top\"] = 1] = \"Top\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n TemplateType[TemplateType[\"Bottom\"] = 2] = \"Bottom\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n TemplateType[TemplateType[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n TemplateType[TemplateType[\"Right\"] = 4] = \"Right\";\n})(TemplateType || (TemplateType = {}));\n","import { ObjectStatus } from './../input-output/enum';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './pdf-dictionary-properties';\nimport { Operators } from './pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfReference } from './../primitives/pdf-reference';\nimport { ObjectType } from './cross-table';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfCatalog } from './../document/pdf-catalog';\n/**\n * `PdfCrossTable` is responsible for intermediate level parsing\n * and savingof a PDF document.\n * @private\n */\nvar PdfCrossTable = /** @class */ (function () {\n function PdfCrossTable() {\n /**\n * The modified `objects` that should be saved.\n * @private\n */\n this.objects = new Dictionary();\n /**\n * Holds `maximal generation number` or offset to object.\n * @default 0\n * @private\n */\n this.maxGenNumIndex = 0;\n /**\n * The `number of the objects`.\n * @default 0\n * @private\n */\n this.objectCount = 0;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new PdfDictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n }\n Object.defineProperty(PdfCrossTable.prototype, \"isMerging\", {\n //Properties\n /**\n * Gets or sets if the document `is merged`.\n * @private\n */\n get: function () {\n return this.merging;\n },\n set: function (value) {\n this.merging = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"trailer\", {\n /**\n * Gets the `trailer`.\n * @private\n */\n get: function () {\n if (this.internalTrailer == null) {\n this.internalTrailer = new PdfStream();\n }\n return this.internalTrailer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"document\", {\n /**\n * Gets or sets the main `PdfDocument` class instance.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n this.items = this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"pdfObjects\", {\n /**\n * Gets the catched `PDF object` main collection.\n * @private\n */\n get: function () {\n return this.items;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"objectCollection\", {\n /**\n * Gets the `object collection`.\n * @private\n */\n get: function () {\n return this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"count\", {\n /**\n * Gets or sets the `number of the objects` within the document.\n * @private\n */\n get: function () {\n return this.objectCount;\n },\n set: function (value) {\n this.objectCount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"nextObjNumber\", {\n /**\n * Returns `next available object number`.\n * @private\n */\n get: function () {\n this.count = this.count + 1;\n return this.count;\n },\n enumerable: true,\n configurable: true\n });\n PdfCrossTable.prototype.save = function (writer, filename) {\n this.saveHead(writer);\n var state = false;\n this.mappedReferences = null;\n this.objects.clear();\n this.markTrailerReferences();\n this.saveObjects(writer);\n var saveCount = this.count;\n var xrefPos = writer.position;\n this.registerObject(0, new PdfReference(0, -1), true);\n var prevXRef = 0;\n writer.write(Operators.xref);\n writer.write(Operators.newLine);\n this.saveSections(writer);\n this.saveTrailer(writer, this.count, prevXRef);\n this.saveTheEndess(writer, xrefPos);\n this.count = saveCount;\n for (var i = 0; i < this.objectCollection.count; ++i) {\n var oi = this.objectCollection.items(i);\n oi.object.isSaving = false;\n }\n if (typeof filename === 'undefined') {\n return writer.stream.buffer;\n }\n else {\n writer.stream.save(filename);\n }\n };\n /**\n * `Saves the endess` of the file.\n * @private\n */\n PdfCrossTable.prototype.saveTheEndess = function (writer, xrefPos) {\n writer.write(Operators.newLine + Operators.startxref + Operators.newLine);\n writer.write(xrefPos.toString() + Operators.newLine);\n writer.write(Operators.eof + Operators.newLine);\n };\n /**\n * `Saves the new trailer` dictionary.\n * @private\n */\n PdfCrossTable.prototype.saveTrailer = function (writer, count, prevXRef) {\n writer.write(Operators.trailer + Operators.newLine);\n // Save the dictionary.\n var trailer = this.trailer;\n trailer.items.setValue(this.dictionaryProperties.size, new PdfNumber(this.objectCount + 1));\n trailer = new PdfDictionary(trailer); // Make it real dictionary.\n trailer.setEncrypt(false);\n trailer.save(writer);\n };\n /**\n * `Saves the xref section`.\n * @private\n */\n PdfCrossTable.prototype.saveSections = function (writer) {\n var objectNum = 0;\n var count = 0;\n do {\n count = this.prepareSubsection(objectNum);\n this.saveSubsection(writer, objectNum, count);\n objectNum += count;\n } while (count !== 0);\n };\n /**\n * `Saves a subsection`.\n * @private\n */\n PdfCrossTable.prototype.saveSubsection = function (writer, objectNum, count) {\n if (count <= 0 || objectNum >= this.count) {\n return;\n }\n var subsectionHead = '{0} {1}{2}';\n writer.write(objectNum + ' ' + (count + 1) + Operators.newLine);\n for (var i = objectNum; i <= objectNum + count; ++i) {\n var obj = this.objects.getValue(i);\n var str = '';\n if (obj.type === ObjectType.Free) {\n str = this.getItem(obj.offset, 65535, true);\n }\n else {\n str = this.getItem(obj.offset, obj.generation, false);\n }\n writer.write(str);\n }\n };\n /**\n * Generates string for `xref table item`.\n * @private\n */\n PdfCrossTable.prototype.getItem = function (offset, genNumber, isFree) {\n var returnString = '';\n var addOffsetLength = 10 - offset.toString().length;\n if (genNumber <= 0) {\n genNumber = 0;\n }\n var addGenNumberLength = (5 - genNumber.toString().length) <= 0 ? 0 : (5 - genNumber.toString().length);\n for (var index = 0; index < addOffsetLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + offset.toString() + ' ';\n for (var index = 0; index < addGenNumberLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + genNumber.toString() + ' ';\n returnString = returnString + ((isFree) ? Operators.f : Operators.n) + Operators.newLine;\n return returnString;\n };\n /**\n * `Prepares a subsection` of the current section within the cross-reference table.\n * @private\n */\n PdfCrossTable.prototype.prepareSubsection = function (objectNum) {\n var count = 0;\n var i;\n var total = this.count;\n for (var k = 0; k < this.document.pdfObjects.count; k++) {\n var reference = this.document.pdfObjects.items(k).reference;\n var refString = reference.toString();\n var refArray = refString.split(' ');\n }\n if (objectNum >= total) {\n return count;\n }\n // search for first changed indirect object.\n for (i = objectNum; i < total; ++i) {\n break;\n }\n objectNum = i;\n // look up for all indirect objects in one subsection.\n for (; i < total; ++i) {\n ++count;\n }\n return count;\n };\n /**\n * `Marks the trailer references` being saved.\n * @private\n */\n PdfCrossTable.prototype.markTrailerReferences = function () {\n var tempArray;\n var keys = this.trailer.items.keys();\n var values = this.trailer.items.values();\n };\n /**\n * `Saves the head`.\n * @private\n */\n PdfCrossTable.prototype.saveHead = function (writer) {\n var version = this.generateFileVersion(writer.document);\n writer.write('%PDF-' + version);\n writer.write(Operators.newLine);\n };\n /**\n * Generates the `version` of the file.\n * @private\n */\n PdfCrossTable.prototype.generateFileVersion = function (document) {\n var iVersion = 4;\n var version = '1.' + iVersion.toString();\n return version;\n };\n PdfCrossTable.prototype.getReference = function (obj, bNew) {\n if (typeof bNew === 'undefined') {\n var wasNew = false;\n return this.getReference(obj, wasNew);\n }\n else {\n //code splitted for reducing lines of code exceeds 100.\n return this.getSubReference(obj, bNew);\n }\n };\n /**\n * Retrieves the `reference` of the object given.\n * @private\n */\n PdfCrossTable.prototype.getSubReference = function (obj, bNew) {\n var isNew = false;\n var wasNew;\n var reference = null;\n // if (obj.IsSaving) {\n if (this.items.count > 0 && obj.objectCollectionIndex > 0 && this.items.count > obj.objectCollectionIndex - 1) {\n var tempObj = this.document.pdfObjects.getReference(obj, wasNew);\n reference = tempObj.reference;\n wasNew = tempObj.wasNew;\n }\n if (reference == null) {\n if (obj.status === ObjectStatus.Registered) {\n wasNew = false;\n }\n else {\n wasNew = true;\n }\n }\n else {\n wasNew = false;\n }\n // need to add mapped reference code\n if (reference == null) {\n var objnumber = this.nextObjNumber;\n reference = new PdfReference(objnumber, 0);\n var found = void 0;\n if (wasNew) {\n this.document.pdfObjects.add(obj);\n this.document.pdfObjects.trySetReference(obj, reference, found);\n var tempIndex = this.document.pdfObjects.count - 1;\n var tempkey = this.document.pdfObjects.objectCollections[tempIndex].reference.objNumber;\n var tempvalue = this.document.pdfObjects.objectCollections[this.document.pdfObjects.count - 1];\n this.document.pdfObjects.mainObjectCollection.setValue(tempkey, tempvalue);\n obj.position = -1;\n }\n else {\n this.document.pdfObjects.trySetReference(obj, reference, found);\n }\n obj.objectCollectionIndex = reference.objNumber;\n obj.status = ObjectStatus.None;\n isNew = true;\n }\n bNew = isNew || this.bForceNew;\n return reference;\n };\n /**\n * `Saves all objects` in the collection.\n * @private\n */\n PdfCrossTable.prototype.saveObjects = function (writer) {\n var objectCollection = this.objectCollection;\n for (var i = 0; i < objectCollection.count; ++i) {\n var oi = objectCollection.items(i);\n var obj = oi.object;\n obj.isSaving = true;\n this.saveIndirectObject(obj, writer);\n }\n };\n /**\n * `Saves indirect object`.\n * @private\n */\n PdfCrossTable.prototype.saveIndirectObject = function (obj, writer) {\n var reference = this.getReference(obj);\n if (obj instanceof PdfCatalog) {\n this.trailer.items.setValue(this.dictionaryProperties.root, reference);\n }\n // NOTE : This is needed for correct string objects encryption.\n this.pdfDocument.currentSavingObj = reference;\n var tempArchive = false;\n tempArchive = obj.getArchive();\n var allowedType = !((obj instanceof PdfStream) || !tempArchive || (obj instanceof PdfCatalog));\n var sigFlag = false;\n this.registerObject(writer.position, reference);\n this.doSaveObject(obj, reference, writer);\n };\n /**\n * Performs `real saving` of the save object.\n * @private\n */\n PdfCrossTable.prototype.doSaveObject = function (obj, reference, writer) {\n var correctPosition = writer.length;\n writer.write(reference.objNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(reference.genNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(Operators.obj);\n writer.write(Operators.newLine);\n obj.save(writer);\n var stream = writer.stream;\n writer.write(Operators.endObj);\n writer.write(Operators.newLine);\n };\n PdfCrossTable.prototype.registerObject = function (offset, reference, free) {\n if (typeof free === 'boolean') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference, free));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n else if (typeof free === 'undefined') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n };\n /**\n * `Dereferences` the specified primitive object.\n * @private\n */\n PdfCrossTable.dereference = function (obj) {\n var rh = obj;\n if (rh != null) {\n obj = rh.object;\n }\n return obj;\n };\n return PdfCrossTable;\n}());\nexport { PdfCrossTable };\nvar RegisteredObject = /** @class */ (function () {\n function RegisteredObject(offset, reference, free) {\n var tempOffset = offset;\n this.offsetNumber = tempOffset;\n var tempReference = reference;\n this.generation = tempReference.genNumber;\n this.object = tempReference.objNumber;\n if (typeof free === 'undefined') {\n this.type = ObjectType.Normal;\n }\n else {\n this.type = ObjectType.Free;\n }\n }\n Object.defineProperty(RegisteredObject.prototype, \"objectNumber\", {\n //Properties\n /**\n * Gets the `object number`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RegisteredObject.prototype, \"offset\", {\n /**\n * Gets the `offset`.\n * @private\n */\n get: function () {\n var result;\n result = this.offsetNumber;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n return RegisteredObject;\n}());\nexport { RegisteredObject };\n","/**\n * Coordinates of Position for `PointF`.\n * @private\n */\nvar PointF = /** @class */ (function () {\n function PointF(x, y) {\n if (typeof x === 'undefined') {\n this.x = 0;\n this.y = 0;\n }\n else {\n if (x !== null) {\n this.x = x;\n }\n else {\n this.x = 0;\n }\n if (y !== null) {\n this.y = y;\n }\n else {\n this.y = 0;\n }\n }\n }\n return PointF;\n}());\nexport { PointF };\n/**\n * Width and Height as `Size`.\n * @private\n */\nvar SizeF = /** @class */ (function () {\n function SizeF(width, height) {\n if (typeof height === 'undefined') {\n this.height = 0;\n this.width = 0;\n }\n else {\n if (height !== null) {\n this.height = height;\n }\n else {\n this.height = 0;\n }\n if (width !== null) {\n this.width = width;\n }\n else {\n this.width = 0;\n }\n }\n }\n return SizeF;\n}());\nexport { SizeF };\n/**\n * `RectangleF` with Position and size.\n * @private\n */\nvar RectangleF = /** @class */ (function () {\n function RectangleF(arg1, arg2, arg3, arg4) {\n if (typeof arg1 === typeof arg1 && typeof arg1 === 'undefined') {\n this.x = 0;\n this.y = 0;\n this.height = 0;\n this.width = 0;\n }\n else {\n if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n var pointf = arg1;\n this.x = pointf.x;\n this.y = pointf.y;\n var sizef = arg2;\n this.height = sizef.height;\n this.width = sizef.width;\n }\n else {\n var x = arg1;\n var y = arg2;\n var width = arg3;\n var height = arg4;\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n }\n }\n return RectangleF;\n}());\nexport { RectangleF };\n/**\n * `Rectangle` with left, right, top and bottom.\n * @private\n */\nvar Rectangle = /** @class */ (function () {\n /**\n * Instance of `RectangleF` class with X, Y, Width and Height.\n * @private\n */\n function Rectangle(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n Object.defineProperty(Rectangle.prototype, \"width\", {\n /**\n * Gets a value of width\n */\n get: function () {\n return this.right - this.left;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n /**\n * Gets a value of height\n */\n get: function () {\n return this.bottom - this.top;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"topLeft\", {\n /**\n * Gets a value of Top and Left\n */\n get: function () {\n return new PointF(this.left, this.top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"size\", {\n /**\n * Gets a value of size\n */\n get: function () {\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Rectangle.prototype.toString = function () {\n return this.topLeft + 'x' + this.size;\n };\n return Rectangle;\n}());\nexport { Rectangle };\n","/**\n * PdfPageSize.ts class for EJ2-PDF\n */\nimport { SizeF } from './../drawing/pdf-drawing';\n/**\n * Represents information about various predefined `page sizes`.\n */\nvar PdfPageSize = /** @class */ (function () {\n //constructor\n /**\n * Initialize an instance for `PdfPageSize` class.\n * @private\n */\n function PdfPageSize() {\n // \n }\n /**\n * Specifies the size of `letter`.\n * @private\n */\n PdfPageSize.letter = new SizeF(612, 792);\n /**\n * Specifies the size of `note`.\n * @private\n */\n PdfPageSize.note = new SizeF(540, 720);\n /**\n * Specifies the size of `legal`.\n * @private\n */\n PdfPageSize.legal = new SizeF(612, 1008);\n /**\n * Specifies the size of `a0`.\n * @private\n */\n PdfPageSize.a0 = new SizeF(2380, 3368);\n /**\n * Specifies the size of `a1`.\n * @private\n */\n PdfPageSize.a1 = new SizeF(1684, 2380);\n /**\n * Specifies the size of `a2`.\n * @private\n */\n PdfPageSize.a2 = new SizeF(1190, 1684);\n /**\n * Specifies the size of `a3`.\n * @private\n */\n PdfPageSize.a3 = new SizeF(842, 1190);\n /**\n * Specifies the size of `a4`.\n * @private\n */\n PdfPageSize.a4 = new SizeF(595, 842);\n /**\n * Specifies the size of `a5`.\n * @private\n */\n PdfPageSize.a5 = new SizeF(421, 595);\n /**\n * Specifies the size of `a6`.\n * @private\n */\n PdfPageSize.a6 = new SizeF(297, 421);\n /**\n * Specifies the size of `a7`.\n * @private\n */\n PdfPageSize.a7 = new SizeF(210, 297);\n /**\n * Specifies the size of `a8`.\n * @private\n */\n PdfPageSize.a8 = new SizeF(148, 210);\n /**\n * Specifies the size of `a9`.\n * @private\n */\n PdfPageSize.a9 = new SizeF(105, 148);\n /**\n * Specifies the size of `a10`.\n * @private\n */\n PdfPageSize.a10 = new SizeF(74, 105);\n /**\n * Specifies the size of `b0`.\n * @private\n */\n PdfPageSize.b0 = new SizeF(2836, 4008);\n /**\n * Specifies the size of `b1`.\n * @private\n */\n PdfPageSize.b1 = new SizeF(2004, 2836);\n /**\n * Specifies the size of `b2`.\n * @private\n */\n PdfPageSize.b2 = new SizeF(1418, 2004);\n /**\n * Specifies the size of `b3`.\n * @private\n */\n PdfPageSize.b3 = new SizeF(1002, 1418);\n /**\n * Specifies the size of `b4`.\n * @private\n */\n PdfPageSize.b4 = new SizeF(709, 1002);\n /**\n * Specifies the size of `b5`.\n * @private\n */\n PdfPageSize.b5 = new SizeF(501, 709);\n /**\n * Specifies the size of `archE`.\n * @private\n */\n PdfPageSize.archE = new SizeF(2592, 3456);\n /**\n * Specifies the size of `archD`.\n * @private\n */\n PdfPageSize.archD = new SizeF(1728, 2592);\n /**\n * Specifies the size of `archC`.\n * @private\n */\n PdfPageSize.archC = new SizeF(1296, 1728);\n /**\n * Specifies the size of `archB`.\n * @private\n */\n PdfPageSize.archB = new SizeF(864, 1296);\n /**\n * Specifies the size of `archA`.\n * @private\n */\n PdfPageSize.archA = new SizeF(648, 864);\n /**\n * Specifies the size of `flsa`.\n * @private\n */\n PdfPageSize.flsa = new SizeF(612, 936);\n /**\n * Specifies the size of `halfLetter`.\n * @private\n */\n PdfPageSize.halfLetter = new SizeF(396, 612);\n /**\n * Specifies the size of `letter11x17`.\n * @private\n */\n PdfPageSize.letter11x17 = new SizeF(792, 1224);\n /**\n * Specifies the size of `ledger`.\n * @private\n */\n PdfPageSize.ledger = new SizeF(1224, 792);\n return PdfPageSize;\n}());\nexport { PdfPageSize };\n","/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nvar PdfMargins = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfMargins` class.\n * @private\n */\n function PdfMargins() {\n /**\n * Represents the `Default Page Margin` value.\n * @default 0.0\n * @private\n */\n this.pdfMargin = 40.0;\n this.setMargins(this.pdfMargin);\n }\n Object.defineProperty(PdfMargins.prototype, \"left\", {\n //Properties\n /**\n * Gets or sets the `left margin` size.\n * @private\n */\n get: function () {\n return this.leftMargin;\n },\n set: function (value) {\n this.leftMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"top\", {\n /**\n * Gets or sets the `top margin` size.\n * @private\n */\n get: function () {\n return this.topMargin;\n },\n set: function (value) {\n this.topMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"right\", {\n /**\n * Gets or sets the `right margin` size.\n * @private\n */\n get: function () {\n return this.rightMargin;\n },\n set: function (value) {\n this.rightMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom margin` size.\n * @private\n */\n get: function () {\n return this.bottomMargin;\n },\n set: function (value) {\n this.bottomMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"all\", {\n /**\n * Sets the `margins`.\n * @private\n */\n set: function (value) {\n this.setMargins(value);\n },\n enumerable: true,\n configurable: true\n });\n PdfMargins.prototype.setMargins = function (margin1, margin2, margin3, margin4) {\n if (typeof margin2 === 'undefined') {\n this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;\n }\n else {\n if (typeof margin3 === 'undefined') {\n this.leftMargin = this.rightMargin = margin1;\n this.bottomMargin = this.topMargin = margin2;\n }\n else {\n this.leftMargin = margin1;\n this.topMargin = margin2;\n this.rightMargin = margin3;\n this.bottomMargin = margin4;\n }\n }\n };\n /**\n * `Clones` the object.\n * @private\n */\n PdfMargins.prototype.clone = function () {\n return this;\n };\n return PdfMargins;\n}());\nexport { PdfMargins };\n","/**\n * public Enum for `PdfHorizontalAlignment`.\n * @private\n */\nexport var PdfHorizontalAlignment;\n(function (PdfHorizontalAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Right\"] = 2] = \"Right\";\n})(PdfHorizontalAlignment || (PdfHorizontalAlignment = {}));\n/**\n * public Enum for `PdfVerticalAlignment`.\n * @private\n */\nexport var PdfVerticalAlignment;\n(function (PdfVerticalAlignment) {\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Top\"] = 0] = \"Top\";\n /**\n * Specifies the type of `Middle`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Middle\"] = 1] = \"Middle\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n})(PdfVerticalAlignment || (PdfVerticalAlignment = {}));\n/**\n * public Enum for `public`.\n * @private\n */\nexport var PdfTextAlignment;\n(function (PdfTextAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Right\"] = 2] = \"Right\";\n /**\n * Specifies the type of `Justify`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Justify\"] = 3] = \"Justify\";\n})(PdfTextAlignment || (PdfTextAlignment = {}));\n/**\n * public Enum for `TextRenderingMode`.\n * @private\n */\nexport var TextRenderingMode;\n(function (TextRenderingMode) {\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n /**\n * Specifies the type of `Stroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Stroke\"] = 1] = \"Stroke\";\n /**\n * Specifies the type of `FillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"FillStroke\"] = 2] = \"FillStroke\";\n /**\n * Specifies the type of `None`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"None\"] = 3] = \"None\";\n /**\n * Specifies the type of `ClipFlag`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFlag\"] = 4] = \"ClipFlag\";\n /**\n * Specifies the type of `ClipFill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFill\"] = 4] = \"ClipFill\";\n /**\n * Specifies the type of `ClipStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipStroke\"] = 5] = \"ClipStroke\";\n /**\n * Specifies the type of `ClipFillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFillStroke\"] = 6] = \"ClipFillStroke\";\n /**\n * Specifies the type of `Clip`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\n/**\n * public Enum for `PdfLineJoin`.\n * @private\n */\nexport var PdfLineJoin;\n(function (PdfLineJoin) {\n /**\n * Specifies the type of `Miter`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Miter\"] = 0] = \"Miter\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Bevel`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Bevel\"] = 2] = \"Bevel\";\n})(PdfLineJoin || (PdfLineJoin = {}));\n/**\n * public Enum for `PdfLineCap`.\n * @private\n */\nexport var PdfLineCap;\n(function (PdfLineCap) {\n /**\n * Specifies the type of `Flat`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Flat\"] = 0] = \"Flat\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Square`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Square\"] = 2] = \"Square\";\n})(PdfLineCap || (PdfLineCap = {}));\n/**\n * public Enum for `PdfDashStyle`.\n * @private\n */\nexport var PdfDashStyle;\n(function (PdfDashStyle) {\n /**\n * Specifies the type of `Solid`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Solid\"] = 0] = \"Solid\";\n /**\n * Specifies the type of `Dash`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dash\"] = 1] = \"Dash\";\n /**\n * Specifies the type of `Dot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dot\"] = 2] = \"Dot\";\n /**\n * Specifies the type of `DashDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDot\"] = 3] = \"DashDot\";\n /**\n * Specifies the type of `DashDotDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDotDot\"] = 4] = \"DashDotDot\";\n /**\n * Specifies the type of `Custom`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Custom\"] = 5] = \"Custom\";\n})(PdfDashStyle || (PdfDashStyle = {}));\n/**\n * public Enum for `PdfFillMode`.\n * @private\n */\nexport var PdfFillMode;\n(function (PdfFillMode) {\n /**\n * Specifies the type of `Winding`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Winding\"] = 0] = \"Winding\";\n /**\n * Specifies the type of `Alternate`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Alternate\"] = 1] = \"Alternate\";\n})(PdfFillMode || (PdfFillMode = {}));\n/**\n * public Enum for `PdfColorSpace`.\n * @private\n */\nexport var PdfColorSpace;\n(function (PdfColorSpace) {\n /**\n * Specifies the type of `Rgb`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Rgb\"] = 0] = \"Rgb\";\n /**\n * Specifies the type of `Cmyk`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Cmyk\"] = 1] = \"Cmyk\";\n /**\n * Specifies the type of `GrayScale`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"GrayScale\"] = 2] = \"GrayScale\";\n /**\n * Specifies the type of `Indexed`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Indexed\"] = 3] = \"Indexed\";\n})(PdfColorSpace || (PdfColorSpace = {}));\n/**\n * public Enum for `PdfBlendMode`.\n * @private\n */\nexport var PdfBlendMode;\n(function (PdfBlendMode) {\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Normal\"] = 0] = \"Normal\";\n /**\n * Specifies the type of `Multiply`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Multiply\"] = 1] = \"Multiply\";\n /**\n * Specifies the type of `Screen`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Screen\"] = 2] = \"Screen\";\n /**\n * Specifies the type of `Overlay`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Overlay\"] = 3] = \"Overlay\";\n /**\n * Specifies the type of `Darken`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Darken\"] = 4] = \"Darken\";\n /**\n * Specifies the type of `Lighten`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Lighten\"] = 5] = \"Lighten\";\n /**\n * Specifies the type of `ColorDodge`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorDodge\"] = 6] = \"ColorDodge\";\n /**\n * Specifies the type of `ColorBurn`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorBurn\"] = 7] = \"ColorBurn\";\n /**\n * Specifies the type of `HardLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"HardLight\"] = 8] = \"HardLight\";\n /**\n * Specifies the type of `SoftLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"SoftLight\"] = 9] = \"SoftLight\";\n /**\n * Specifies the type of `Difference`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Difference\"] = 10] = \"Difference\";\n /**\n * Specifies the type of `Exclusion`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Exclusion\"] = 11] = \"Exclusion\";\n /**\n * Specifies the type of `Hue`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Hue\"] = 12] = \"Hue\";\n /**\n * Specifies the type of `Saturation`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Saturation\"] = 13] = \"Saturation\";\n /**\n * Specifies the type of `Color`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Color\"] = 14] = \"Color\";\n /**\n * Specifies the type of `Luminosity`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Luminosity\"] = 15] = \"Luminosity\";\n})(PdfBlendMode || (PdfBlendMode = {}));\n/**\n * public Enum for `PdfGraphicsUnit`.\n * @private\n */\nexport var PdfGraphicsUnit;\n(function (PdfGraphicsUnit) {\n /**\n * Specifies the type of `Centimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Centimeter\"] = 0] = \"Centimeter\";\n /**\n * Specifies the type of `Pica`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pica\"] = 1] = \"Pica\";\n /**\n * Specifies the type of `Pixel`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pixel\"] = 2] = \"Pixel\";\n /**\n * Specifies the type of `Point`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Point\"] = 3] = \"Point\";\n /**\n * Specifies the type of `Inch`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Inch\"] = 4] = \"Inch\";\n /**\n * Specifies the type of `Document`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Document\"] = 5] = \"Document\";\n /**\n * Specifies the type of `Millimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Millimeter\"] = 6] = \"Millimeter\";\n})(PdfGraphicsUnit || (PdfGraphicsUnit = {}));\n/**\n * public Enum for `PdfGridImagePosition`.\n * @private\n */\nexport var PdfGridImagePosition;\n(function (PdfGridImagePosition) {\n /**\n * Specifies the type of `Fit`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Fit\"] = 0] = \"Fit\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Stretch`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Stretch\"] = 2] = \"Stretch\";\n /**\n * Specifies the type of `Tile`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Tile\"] = 3] = \"Tile\";\n})(PdfGridImagePosition || (PdfGridImagePosition = {}));\n/**\n * public Enum for `the text rendering direction`.\n * @private\n */\nexport var PdfTextDirection;\n(function (PdfTextDirection) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `LeftToRight`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"LeftToRight\"] = 1] = \"LeftToRight\";\n /**\n * Specifies the type of `RightToLeft`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"RightToLeft\"] = 2] = \"RightToLeft\";\n})(PdfTextDirection || (PdfTextDirection = {}));\n","/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nexport var PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the type of `Regular`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Regular\"] = 0] = \"Regular\";\n /**\n * Specifies the type of `Bold`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Bold\"] = 1] = \"Bold\";\n /**\n * Specifies the type of `Italic`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Italic\"] = 2] = \"Italic\";\n /**\n * Specifies the type of `Underline`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Underline\"] = 4] = \"Underline\";\n /**\n * Specifies the type of `Strikeout`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Strikeout\"] = 8] = \"Strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Specifies the font family from the standard font.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * ```\n */\nexport var PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `Helvetica` font.\n */\n PdfFontFamily[PdfFontFamily[\"Helvetica\"] = 0] = \"Helvetica\";\n /**\n * Specifies the `Courier` font.\n */\n PdfFontFamily[PdfFontFamily[\"Courier\"] = 1] = \"Courier\";\n /**\n * Specifies the `TimesRoman` font.\n */\n PdfFontFamily[PdfFontFamily[\"TimesRoman\"] = 2] = \"TimesRoman\";\n /**\n * Specifies the `Symbol` font.\n */\n PdfFontFamily[PdfFontFamily[\"Symbol\"] = 3] = \"Symbol\";\n /**\n * Specifies the `ZapfDingbats` font.\n */\n PdfFontFamily[PdfFontFamily[\"ZapfDingbats\"] = 4] = \"ZapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * public Enum for `PdfFontType`.\n * @private\n */\nexport var PdfFontType;\n(function (PdfFontType) {\n /**\n * Specifies the type of `Standard`.\n * @private\n */\n PdfFontType[PdfFontType[\"Standard\"] = 0] = \"Standard\";\n /**\n * Specifies the type of `TrueType`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueType\"] = 1] = \"TrueType\";\n /**\n * Specifies the type of `TrueTypeEmbedded`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueTypeEmbedded\"] = 2] = \"TrueTypeEmbedded\";\n})(PdfFontType || (PdfFontType = {}));\n/**\n * public Enum for `PdfWordWrapType`.\n * @private\n */\nexport var PdfWordWrapType;\n(function (PdfWordWrapType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Word`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Word\"] = 1] = \"Word\";\n /**\n * Specifies the type of `WordOnly`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"WordOnly\"] = 2] = \"WordOnly\";\n /**\n * Specifies the type of `Character`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Character\"] = 3] = \"Character\";\n})(PdfWordWrapType || (PdfWordWrapType = {}));\n/**\n * public Enum for `PdfSubSuperScript`.\n * @private\n */\nexport var PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `SuperScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SuperScript\"] = 1] = \"SuperScript\";\n /**\n * Specifies the type of `SubScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SubScript\"] = 2] = \"SubScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * public Enum for `FontEncoding`.\n * @private\n */\nexport var FontEncoding;\n(function (FontEncoding) {\n /**\n * Specifies the type of `Unknown`.\n * @private\n */\n FontEncoding[FontEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `StandardEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"StandardEncoding\"] = 1] = \"StandardEncoding\";\n /**\n * Specifies the type of `MacRomanEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacRomanEncoding\"] = 2] = \"MacRomanEncoding\";\n /**\n * Specifies the type of `MacExpertEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacExpertEncoding\"] = 3] = \"MacExpertEncoding\";\n /**\n * Specifies the type of `WinAnsiEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"WinAnsiEncoding\"] = 4] = \"WinAnsiEncoding\";\n /**\n * Specifies the type of `PdfDocEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"PdfDocEncoding\"] = 5] = \"PdfDocEncoding\";\n /**\n * Specifies the type of `IdentityH`.\n * @private\n */\n FontEncoding[FontEncoding[\"IdentityH\"] = 6] = \"IdentityH\";\n})(FontEncoding || (FontEncoding = {}));\n/**\n * public Enum for `TtfCmapFormat`.\n * @private\n */\nexport var TtfCmapFormat;\n(function (TtfCmapFormat) {\n /**\n * This is the Apple standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Apple\"] = 0] = \"Apple\";\n /**\n * This is the Microsoft standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Microsoft\"] = 4] = \"Microsoft\";\n /**\n * Format 6: Trimmed table mapping.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Trimmed\"] = 6] = \"Trimmed\";\n})(TtfCmapFormat || (TtfCmapFormat = {}));\n/**\n * Enumerator that implements CMAP encodings.\n * @private\n */\nexport var TtfCmapEncoding;\n(function (TtfCmapEncoding) {\n /**\n * Unknown encoding.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * When building a symbol font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Symbol\"] = 1] = \"Symbol\";\n /**\n * When building a Unicode font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unicode\"] = 2] = \"Unicode\";\n /**\n * For font that will be used on a Macintosh.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Macintosh\"] = 3] = \"Macintosh\";\n})(TtfCmapEncoding || (TtfCmapEncoding = {}));\n/**\n * Ttf platform ID.\n * @private\n */\nexport var TtfPlatformID;\n(function (TtfPlatformID) {\n /**\n * Apple platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"AppleUnicode\"] = 0] = \"AppleUnicode\";\n /**\n * Macintosh platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Macintosh\"] = 1] = \"Macintosh\";\n /**\n * Iso platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Iso\"] = 2] = \"Iso\";\n /**\n * Microsoft platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Microsoft\"] = 3] = \"Microsoft\";\n})(TtfPlatformID || (TtfPlatformID = {}));\n/**\n * Microsoft encoding ID.\n * @private\n */\nexport var TtfMicrosoftEncodingID;\n(function (TtfMicrosoftEncodingID) {\n /**\n * Undefined encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Undefined\"] = 0] = \"Undefined\";\n /**\n * Unicode encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Unicode\"] = 1] = \"Unicode\";\n})(TtfMicrosoftEncodingID || (TtfMicrosoftEncodingID = {}));\n/**\n * Macintosh encoding ID.\n * @private\n */\nexport var TtfMacintoshEncodingID;\n(function (TtfMacintoshEncodingID) {\n /**\n * Roman encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Roman\"] = 0] = \"Roman\";\n /**\n * Japanese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Japanese\"] = 1] = \"Japanese\";\n /**\n * Chinese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Chinese\"] = 2] = \"Chinese\";\n})(TtfMacintoshEncodingID || (TtfMacintoshEncodingID = {}));\n/**\n * Enumerator that implements font descriptor flags.\n * @private\n */\nexport var FontDescriptorFlags;\n(function (FontDescriptorFlags) {\n /**\n * All glyphs have the same width (as opposed to proportional or variable-pitch fonts, which have different widths).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"FixedPitch\"] = 1] = \"FixedPitch\";\n /**\n * Glyphs have serifs, which are short strokes drawn at an angle on the top and\n * bottom of glyph stems (as opposed to sans serif fonts, which do not).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Serif\"] = 2] = \"Serif\";\n /**\n * Font contains glyphs outside the Adobe standard Latin character set. The\n * flag and the nonsymbolic flag cannot both be set or both be clear.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Symbolic\"] = 4] = \"Symbolic\";\n /**\n * Glyphs resemble cursive handwriting.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Script\"] = 8] = \"Script\";\n /**\n * Font uses the Adobe standard Latin character set or a subset of it.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Nonsymbolic\"] = 32] = \"Nonsymbolic\";\n /**\n * Glyphs have dominant vertical strokes that are slanted.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Italic\"] = 64] = \"Italic\";\n /**\n * Bold font.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"ForceBold\"] = 262144] = \"ForceBold\";\n})(FontDescriptorFlags || (FontDescriptorFlags = {}));\n/**\n * true type font composite glyph flags.\n * @private\n */\nexport var TtfCompositeGlyphFlags;\n(function (TtfCompositeGlyphFlags) {\n /**\n * The Arg1And2AreWords.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n /**\n * The ArgsAreXyValues.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n /**\n * The RoundXyToGrid.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n /**\n * The WeHaveScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n /**\n * The Reserved.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Reserved\"] = 16] = \"Reserved\";\n /**\n * The MoreComponents.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"MoreComponents\"] = 32] = \"MoreComponents\";\n /**\n * The WeHaveAnXyScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n /**\n * The WeHaveTwoByTwo\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n /**\n * The WeHaveInstructions.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n /**\n * The UseMyMetrics.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(TtfCompositeGlyphFlags || (TtfCompositeGlyphFlags = {}));\n","/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\nimport { SizeF, PointF } from './../drawing/pdf-drawing';\nimport { PdfPageSize } from './pdf-page-size';\nimport { PdfPageRotateAngle, PdfPageOrientation } from './enum';\nimport { PdfMargins } from './../graphics/pdf-margins';\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @class */ (function () {\n function PdfPageSettings(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n Object.defineProperty(PdfPageSettings.prototype, \"size\", {\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.setSize(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"orientation\", {\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"margins\", {\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get: function () {\n return this.pageMargins;\n },\n set: function (value) {\n this.pageMargins = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.width;\n },\n set: function (value) {\n this.pageSize.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.height;\n },\n set: function (value) {\n this.pageSize.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"origin\", {\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"rotate\", {\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get: function () {\n return this.rotateAngle;\n },\n set: function (value) {\n this.rotateAngle = value;\n this.isRotation = true;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n PdfPageSettings.prototype.updateSize = function (orientation) {\n var min = Math.min(this.pageSize.width, this.pageSize.height);\n var max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n };\n /**\n * Creates a `clone` of the object.\n * @private\n */\n PdfPageSettings.prototype.clone = function () {\n var settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n };\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n PdfPageSettings.prototype.getActualSize = function () {\n var width = this.width - (this.margins.left + this.margins.right);\n var height = this.height - (this.margins.top + this.margins.bottom);\n var size = new SizeF(width, height);\n return size;\n };\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n PdfPageSettings.prototype.setSize = function (size) {\n var min = Math.min(size.width, size.height);\n var max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n };\n return PdfPageSettings;\n}());\nexport { PdfPageSettings };\n","import { Operators } from './pdf-operators';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PointF, RectangleF } from './../drawing/pdf-drawing';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nvar PdfStreamWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfStreamWriter` class.\n * @private\n */\n function PdfStreamWriter(stream) {\n if (stream == null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.stream = stream;\n }\n //Implementation\n /**\n * `Clear` the stream.\n * @public\n */\n PdfStreamWriter.prototype.clear = function () {\n this.stream.clearStream();\n };\n PdfStreamWriter.prototype.setGraphicsState = function (dictionaryName) {\n if (dictionaryName instanceof PdfName) {\n this.stream.write(dictionaryName.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n else {\n this.stream.write(Operators.slash);\n this.stream.write(dictionaryName);\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n };\n /**\n * `Executes the XObject`.\n * @private\n */\n PdfStreamWriter.prototype.executeObject = function (name) {\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.paintXObject);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes path object`.\n * @private\n */\n PdfStreamWriter.prototype.closePath = function () {\n this.writeOperator(Operators.closePath);\n };\n /**\n * `Clips the path`.\n * @private\n */\n PdfStreamWriter.prototype.clipPath = function (useEvenOddRule) {\n this.stream.write(Operators.clipPath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n }\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.endPath);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes, then fills and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.closeFillStrokePath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills and strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.fillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.fillStroke);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills path`.\n * @private\n */\n PdfStreamWriter.prototype.fillPath = function (useEvenOddRule) {\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Ends the path`.\n * @private\n */\n PdfStreamWriter.prototype.endPath = function () {\n this.writeOperator(Operators.n);\n };\n /**\n * `Closes and fills the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillPath = function (useEvenOddRule) {\n this.writeOperator(Operators.closePath);\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Closes and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeStrokePath = function () {\n this.writeOperator(Operators.closeStrokePath);\n };\n /**\n * `Sets the text scaling`.\n * @private\n */\n PdfStreamWriter.prototype.setTextScaling = function (textScaling) {\n this.stream.write(PdfNumber.floatToString(textScaling));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextScaling);\n };\n /**\n * `Strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.strokePath = function () {\n this.writeOperator(Operators.stroke);\n };\n /**\n * `Restores` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.restoreGraphicsState = function () {\n this.writeOperator(Operators.restoreState);\n };\n /**\n * `Saves` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.saveGraphicsState = function () {\n this.writeOperator(Operators.saveState);\n };\n PdfStreamWriter.prototype.startNextLine = function (arg1, arg2) {\n if (typeof arg1 === 'undefined') {\n this.writeOperator(Operators.goToNextLine);\n }\n else if (arg1 instanceof PointF) {\n this.writePoint(arg1);\n this.writeOperator(Operators.setCoords);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.setCoords);\n }\n };\n /**\n * Shows the `text`.\n * @private\n */\n PdfStreamWriter.prototype.showText = function (text) {\n this.checkTextParam(text);\n this.writeText(text);\n this.writeOperator(Operators.setText);\n };\n /**\n * Sets `text leading`.\n * @private\n */\n PdfStreamWriter.prototype.setLeading = function (leading) {\n this.stream.write(PdfNumber.floatToString(leading));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextLeading);\n };\n /**\n * `Begins the path`.\n * @private\n */\n PdfStreamWriter.prototype.beginPath = function (x, y) {\n this.writePoint(x, y);\n this.writeOperator(Operators.beginPath);\n };\n /**\n * `Begins text`.\n * @private\n */\n PdfStreamWriter.prototype.beginText = function () {\n this.writeOperator(Operators.beginText);\n };\n /**\n * `Ends text`.\n * @private\n */\n PdfStreamWriter.prototype.endText = function () {\n this.writeOperator(Operators.endText);\n };\n PdfStreamWriter.prototype.appendRectangle = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writeOperator(Operators.appendRectangle);\n }\n };\n PdfStreamWriter.prototype.appendLineSegment = function (arg1, arg2) {\n if (arg1 instanceof PointF) {\n this.appendLineSegment(arg1.x, arg1.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.appendLineSegment);\n }\n };\n /**\n * Sets the `text rendering mode`.\n * @private\n */\n PdfStreamWriter.prototype.setTextRenderingMode = function (renderingMode) {\n this.stream.write(renderingMode.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setRenderingMode);\n };\n /**\n * Sets the `character spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setCharacterSpacing = function (charSpacing) {\n this.stream.write(PdfNumber.floatToString(charSpacing));\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.setCharacterSpace);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `word spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setWordSpacing = function (wordSpacing) {\n this.stream.write(PdfNumber.floatToString(wordSpacing));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setWordSpace);\n };\n PdfStreamWriter.prototype.showNextLineText = function (arg1, arg2) {\n if (arg1 instanceof PdfString) {\n this.checkTextParam(arg1);\n this.writeText(arg1);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n else {\n this.checkTextParam(arg1);\n this.writeText(arg1, arg2);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n };\n PdfStreamWriter.prototype.setColorSpace = function (arg1, arg2) {\n if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {\n var temparg1 = arg1;\n var temparg2 = arg2;\n // if (temparg1 == null) {\n // throw new Error('ArgumentNullException:name');\n // }\n var op = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;\n this.stream.write(temparg1.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(op);\n this.stream.write(Operators.newLine);\n }\n else {\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.setColorSpace(new PdfName(temparg1), temparg2);\n }\n };\n /**\n * Modifies current `transformation matrix`.\n * @private\n */\n PdfStreamWriter.prototype.modifyCtm = function (matrix) {\n if (matrix == null) {\n throw new Error('ArgumentNullException:matrix');\n }\n this.stream.write(matrix.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.modifyCtm);\n };\n PdfStreamWriter.prototype.setFont = function (font, name, size) {\n if (typeof name === 'string') {\n this.setFont(font, new PdfName(name), size);\n }\n else {\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(PdfNumber.floatToString(size));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setFont);\n }\n };\n /**\n * `Writes the operator`.\n * @private\n */\n PdfStreamWriter.prototype.writeOperator = function (opcode) {\n this.stream.write(opcode);\n this.stream.write(Operators.newLine);\n };\n PdfStreamWriter.prototype.checkTextParam = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (typeof text === 'string' && text === '') {\n throw new Error('ArgumentException:The text can not be an empty string, text');\n }\n };\n PdfStreamWriter.prototype.writeText = function (arg1, arg2) {\n if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {\n this.stream.write(arg1.pdfEncode());\n }\n else {\n var start = void 0;\n var end = void 0;\n if (arg2) {\n start = PdfString.hexStringMark[0];\n end = PdfString.hexStringMark[1];\n }\n else {\n start = PdfString.stringMark[0];\n end = PdfString.stringMark[1];\n }\n this.stream.write(start);\n this.stream.write(arg1);\n this.stream.write(end);\n }\n };\n PdfStreamWriter.prototype.writePoint = function (arg1, arg2) {\n if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {\n this.writePoint(arg1.x, arg1.y);\n }\n else {\n var temparg1 = arg1;\n this.stream.write(PdfNumber.floatToString(temparg1));\n this.stream.write(Operators.whiteSpace);\n // NOTE: Change Y co-ordinate because we shifted co-ordinate system only.\n arg2 = this.updateY(arg2);\n this.stream.write(PdfNumber.floatToString(arg2));\n this.stream.write(Operators.whiteSpace);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfStreamWriter.prototype.updateY = function (arg) {\n return -arg;\n };\n /**\n * `Writes string` to the file.\n * @private\n */\n PdfStreamWriter.prototype.write = function (string) {\n var builder = '';\n builder += string;\n builder += Operators.newLine;\n this.writeOperator(builder);\n };\n /**\n * `Writes comment` to the file.\n * @private\n */\n PdfStreamWriter.prototype.writeComment = function (comment) {\n if (comment != null && comment.length > 0) {\n var builder = '';\n builder += Operators.comment;\n builder += Operators.whiteSpace;\n builder += comment;\n //builder.Append( Operators.NewLine );\n this.writeOperator(builder);\n }\n else {\n throw new Error('Invalid comment');\n }\n };\n /**\n * Sets the `color and space`.\n * @private\n */\n PdfStreamWriter.prototype.setColorAndSpace = function (color, colorSpace, forStroking) {\n if (!color.isEmpty) {\n // bool test = color is PdfExtendedColor;\n this.stream.write(color.toString(colorSpace, forStroking));\n this.stream.write(Operators.newLine);\n }\n };\n // public setLineDashPattern(pattern : number[], patternOffset : number) : void\n // {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n // }\n // private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void\n // {\n // pattern.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // patternOffset.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // this.writeOperator(Operators.setDashPattern);\n // }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPattern = function (pattern, patternOffset) {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n this.setLineDashPatternHelper(pattern, patternOffset);\n };\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPatternHelper = function (pattern, patternOffset) {\n var tempPattern = '[';\n if (pattern.length > 1) {\n for (var index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString();\n }\n else {\n tempPattern += pattern[index].toString() + ' ';\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' ' + Operators.setDashPattern;\n this.stream.write(tempPattern);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `miter limit`.\n * @private\n */\n PdfStreamWriter.prototype.setMiterLimit = function (miterLimit) {\n this.stream.write(PdfNumber.floatToString(miterLimit));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setMiterLimit);\n };\n /**\n * Sets the `width of the line`.\n * @private\n */\n PdfStreamWriter.prototype.setLineWidth = function (width) {\n this.stream.write(PdfNumber.floatToString(width));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineWidth);\n };\n /**\n * Sets the `line cap`.\n * @private\n */\n PdfStreamWriter.prototype.setLineCap = function (lineCapStyle) {\n this.stream.write((lineCapStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineCapStyle);\n };\n /**\n * Sets the `line join`.\n * @private\n */\n PdfStreamWriter.prototype.setLineJoin = function (lineJoinStyle) {\n this.stream.write((lineJoinStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineJoinStyle);\n };\n Object.defineProperty(PdfStreamWriter.prototype, \"position\", {\n //IPdfWriter members\n /**\n * Gets or sets the current `position` within the stream.\n * @private\n */\n get: function () {\n return this.stream.position;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"length\", {\n /**\n * Gets `stream length`.\n * @private\n */\n get: function () {\n var returnValue = 0;\n if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {\n for (var index = 0; index < this.stream.data.length; index++) {\n returnValue += this.stream.data[index].length;\n }\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"document\", {\n /**\n * Gets and Sets the `current document`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /* tslint:disable-next-line:max-line-length */\n PdfStreamWriter.prototype.appendBezierSegment = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {\n this.writePoint(arg1.x, arg1.y);\n this.writePoint(arg2.x, arg2.y);\n this.writePoint(arg3.x, arg3.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writePoint(arg5, arg6);\n }\n this.writeOperator(Operators.appendbeziercurve);\n };\n PdfStreamWriter.prototype.setColourWithPattern = function (colours, patternName, forStroking) {\n if ((colours != null)) {\n var count = colours.length;\n var i = 0;\n for (i = 0; i < count; ++i) {\n this.stream.write(colours[i].toString());\n this.stream.write(Operators.whiteSpace);\n }\n }\n if ((patternName != null)) {\n this.stream.write(patternName.toString());\n this.stream.write(Operators.whiteSpace);\n }\n if (forStroking) {\n this.writeOperator(Operators.setColorAndPatternStroking);\n }\n else {\n this.writeOperator(Operators.setColorAndPattern);\n }\n };\n return PdfStreamWriter;\n}());\nexport { PdfStreamWriter };\n","import { SizeF, RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfWordWrapType } from './enum';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Class `lay outing the text`.\n */\nvar PdfStringLayouter = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n function PdfStringLayouter() {\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n //\n }\n PdfStringLayouter.prototype.layout = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg4 instanceof RectangleF) {\n this.initialize(arg1, arg2, arg3, arg4, arg5);\n this.isOverloadWithPosition = arg6;\n this.clientSize = arg7;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n else {\n this.initialize(arg1, arg2, arg3, arg4);\n this.isOverloadWithPosition = arg5;\n this.clientSize = arg6;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n };\n PdfStringLayouter.prototype.initialize = function (text, font, format, rectSize, pageHeight) {\n if (typeof pageHeight === 'number') {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.text = text;\n this.font = font;\n this.format = format;\n this.size = new SizeF(rectSize.width, rectSize.height);\n this.rectangle = rectSize;\n this.pageHeight = pageHeight;\n this.reader = new StringTokenizer(text);\n }\n else {\n this.initialize(text, font, format, new RectangleF(new PointF(0, 0), rectSize), 0);\n }\n };\n /**\n * `Clear` all resources.\n * @private\n */\n PdfStringLayouter.prototype.clear = function () {\n this.font = null;\n this.format = null;\n this.reader.close();\n this.reader = null;\n this.text = null;\n };\n /**\n * `Layouts` the text.\n * @private\n */\n PdfStringLayouter.prototype.doLayout = function () {\n var result = new PdfStringLayoutResult();\n var lineResult = new PdfStringLayoutResult();\n var lines = [];\n var line = this.reader.peekLine();\n var lineIndent = this.getLineIndent(true);\n while (line != null) {\n lineResult = this.layoutLine(line, lineIndent);\n if (lineResult !== null || typeof lineResult !== 'undefined') {\n var numSymbolsInserted = 0;\n /* tslint:disable */\n var returnedValue = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);\n /* tslint:enable */\n var success = returnedValue.success;\n numSymbolsInserted = returnedValue.numInserted;\n if (!success) {\n this.reader.read(numSymbolsInserted);\n break;\n }\n }\n // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {\n // break;\n // }\n this.reader.readLine();\n line = this.reader.peekLine();\n lineIndent = this.getLineIndent(false);\n }\n this.finalizeResult(result, lines);\n return result;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineIndent = function (firstLine) {\n var lineIndent = 0;\n if (this.format != null) {\n lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;\n lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates `height` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineHeight = function () {\n var height = this.font.height;\n if (this.format != null && this.format.lineSpacing !== 0) {\n height = this.format.lineSpacing + this.font.height;\n }\n return height;\n };\n /**\n * Calculates `width` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineWidth = function (line) {\n var width = this.font.getLineWidth(line, this.format);\n return width;\n };\n // tslint:disable\n /**\n * `Layouts` line.\n * @private\n */\n PdfStringLayouter.prototype.layoutLine = function (line, lineIndent) {\n var lineResult = new PdfStringLayoutResult();\n lineResult.layoutLineHeight = this.getLineHeight();\n var lines = [];\n var maxWidth = this.size.width;\n var lineWidth = this.getLineWidth(line) + lineIndent;\n var lineType = LineType.FirstParagraphLine;\n var readWord = true;\n // line is in bounds.\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);\n }\n else {\n var builder = '';\n var curLine = '';\n lineWidth = lineIndent;\n var curIndent = lineIndent;\n var reader = new StringTokenizer(line);\n var word = reader.peekWord();\n var isSingleWord = false;\n if (word.length !== reader.length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader.position += 1;\n word = reader.peekWord();\n }\n }\n while (word != null) {\n curLine = curLine + word;\n var curLineWidth = this.getLineWidth(curLine.toString()) + curIndent /*)*/;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this.getWrapType() === PdfWordWrapType.None) {\n break;\n }\n if (curLine.length === word.length) {\n // Character wrap is disabled or one symbol is greater than bounds.\n if (this.getWrapType() === PdfWordWrapType.WordOnly) {\n lineResult.textRemainder = line.substring(reader.position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader.peek().toString();\n continue;\n }\n }\n else {\n if (this.getLineWidth(word.toString()) > maxWidth) {\n this.format.wordWrap = PdfWordWrapType.Character;\n }\n else {\n if (typeof this.format !== 'undefined' && this.format !== null) {\n this.format.wordWrap = PdfWordWrapType.Word;\n }\n }\n if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {\n var ln = builder.toString();\n // if (ln.indexOf(' ') === -1) {\n // isSingleWord = true;\n // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);\n // } else {\n // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n // } \n if (ln !== ' ') {\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n }\n if (this.isOverloadWithPosition) {\n maxWidth = this.clientSize.width;\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = LineType.None;\n // if (isSingleWord) {\n // reader.readWord();\n // readWord = false;\n // }\n word = (readWord) ? word : reader.peekWord();\n //isSingleWord = false;\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader.peek().toString();\n }\n continue;\n }\n }\n /*tslint:disable:max-func-body-length */\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader.readWord();\n word = reader.peekWord();\n //isSingleWord = false;\n }\n else {\n reader.read();\n word = reader.peek().toString();\n }\n }\n if (builder.length > 0) {\n var ln = builder.toString();\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);\n }\n reader.close();\n }\n lineResult.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n lineResult.layoutLines.push(lines[index]);\n }\n lines = [];\n return lineResult;\n };\n /**\n * `Adds` line to line result.\n * @private\n */\n PdfStringLayouter.prototype.addToLineResult = function (lineResult, lines, line, lineWidth, breakType) {\n var info = new LineInfo();\n info.text = line;\n info.width = lineWidth;\n info.lineType = breakType;\n lines.push(info);\n var size = lineResult.actualSize;\n size.height += this.getLineHeight();\n size.width = Math.max(size.width, lineWidth);\n lineResult.size = size;\n };\n /**\n * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.\n * @private\n */\n PdfStringLayouter.prototype.copyToResult = function (result, lineResult, lines, \n /*out*/ numInserted) {\n var success = true;\n var allowPartialLines = (this.format != null && !this.format.lineLimit);\n var height = result.actualSize.height;\n var maxHeight = this.size.height;\n if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {\n maxHeight = this.rectangle.y - this.pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n numInserted = 0;\n if (lineResult.lines != null) {\n for (var i = 0, len = lineResult.lines.length; i < len; i++) {\n var expHeight = height + lineResult.lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n var info = lineResult.lines[i];\n numInserted += info.text.length;\n info = this.trimLine(info, (lines.length === 0));\n lines.push(info);\n // Update width.\n var size = result.actualSize;\n size.width = Math.max(size.width, info.width);\n result.size = size;\n // The part of the line fits only and it's allowed to use partial lines.\n // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)\n // {\n // let shouldClip : boolean = (this.format == null || !this.format.noClip);\n // if (shouldClip)\n // {\n // let exceededHeight : number = expHeight - maxHeight;\n // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;\n // height = /*Utils.Round(*/ height + fitHeight /*)*/;\n // }\n // else\n // {\n // height = expHeight;\n // }\n // success = false;\n // break;\n // } else {\n height = expHeight;\n // }\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height != result.size.height) {\n var size1 = result.actualSize;\n size1.height = height;\n result.size = size1;\n }\n return { success: success, numInserted: numInserted };\n };\n /**\n * `Finalizes` final result.\n * @private\n */\n PdfStringLayouter.prototype.finalizeResult = function (result, lines) {\n result.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n result.layoutLines.push(lines[index]);\n }\n result.layoutLineHeight = this.getLineHeight();\n if (!this.reader.end) {\n result.textRemainder = this.reader.readToEnd();\n }\n lines = [];\n };\n /**\n * `Trims` whitespaces at the line.\n * @private\n */\n PdfStringLayouter.prototype.trimLine = function (info, firstLine) {\n var line = info.text;\n var lineWidth = info.width;\n // Trim start whitespaces if the line is not a start of the paragraph only.\n var trimStartSpaces = ((info.lineType & LineType.FirstParagraphLine) === 0);\n var start = (this.format == null || !this.format.rightToLeft);\n var spaces = StringTokenizer.spaces;\n line = (start) ? line.trim() : line.trim();\n // Recalculate line width.\n if (line.length !== info.text.length) {\n lineWidth = this.getLineWidth(line);\n if ((info.lineType & LineType.FirstParagraphLine) > 0) {\n lineWidth += this.getLineIndent(firstLine);\n }\n }\n info.text = line;\n info.width = lineWidth;\n return info;\n };\n /**\n * Returns `wrap` type.\n * @private\n */\n PdfStringLayouter.prototype.getWrapType = function () {\n var wrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;\n return wrapType;\n };\n return PdfStringLayouter;\n}());\nexport { PdfStringLayouter };\n//Internal declaration\nvar PdfStringLayoutResult = /** @class */ (function () {\n function PdfStringLayoutResult() {\n }\n Object.defineProperty(PdfStringLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets the `text` which is not lay outed.\n * @private\n */\n get: function () {\n return this.textRemainder;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"actualSize\", {\n /**\n * Gets the actual layout text `bounds`.\n * @private\n */\n get: function () {\n if (typeof this.size === 'undefined') {\n this.size = new SizeF(0, 0);\n }\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lines\", {\n /**\n * Gets layout `lines` information.\n * @private\n */\n get: function () {\n return this.layoutLines;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineHeight\", {\n /**\n * Gets the `height` of the line.\n * @private\n */\n get: function () {\n return this.layoutLineHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"empty\", {\n /**\n * Gets value that indicates whether any layout text [`empty`].\n * @private\n */\n get: function () {\n return (this.layoutLines == null || this.layoutLines.length === 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineCount\", {\n /**\n * Gets `number of` the layout lines.\n * @private\n */\n get: function () {\n var count = (!this.empty) ? this.layoutLines.length : 0;\n return count;\n },\n enumerable: true,\n configurable: true\n });\n return PdfStringLayoutResult;\n}());\nexport { PdfStringLayoutResult };\nvar LineInfo = /** @class */ (function () {\n function LineInfo() {\n }\n Object.defineProperty(LineInfo.prototype, \"lineType\", {\n //Properties\n /**\n * Gets the `type` of the line text.\n * @private\n */\n get: function () {\n return this.type;\n },\n set: function (value) {\n this.type = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"text\", {\n /**\n * Gets the line `text`.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"width\", {\n /**\n * Gets `width` of the line text.\n * @private\n */\n get: function () {\n return this.lineWidth;\n },\n set: function (value) {\n this.lineWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n return LineInfo;\n}());\nexport { LineInfo };\n/**\n* Break type of the `line`.\n* @private\n*/\nexport var LineType;\n(function (LineType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n LineType[LineType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `NewLineBreak`.\n * @private\n */\n LineType[LineType[\"NewLineBreak\"] = 1] = \"NewLineBreak\";\n /**\n * Specifies the type of `LayoutBreak`.\n * @private\n */\n LineType[LineType[\"LayoutBreak\"] = 2] = \"LayoutBreak\";\n /**\n * Specifies the type of `FirstParagraphLine`.\n * @private\n */\n LineType[LineType[\"FirstParagraphLine\"] = 4] = \"FirstParagraphLine\";\n /**\n * Specifies the type of `LastParagraphLine`.\n * @private\n */\n LineType[LineType[\"LastParagraphLine\"] = 8] = \"LastParagraphLine\";\n})(LineType || (LineType = {}));\n","import { PdfColorSpace } from './enum';\nimport { Operators } from './../input-output/pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfArray } from './../primitives/pdf-array';\n/**\n * Implements structures and routines working with `color`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // set color\n * let brushColor : PdfColor = new PdfColor(0, 0, 0);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(brushColor);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default black color\n */\nvar PdfColor = /** @class */ (function () {\n function PdfColor(color1, color2, color3, color4) {\n if (typeof color1 === 'undefined') {\n if (typeof color2 !== 'undefined' && typeof color3 !== 'undefined' && typeof color4 !== 'undefined') {\n this.assignRGB(color2, color3, color4);\n }\n else {\n this.filled = false;\n }\n }\n else if (color1 instanceof PdfColor) {\n this.redColor = color1.r;\n this.greenColor = color1.g;\n this.blueColor = color1.b;\n this.grayColor = color1.gray;\n this.alpha = color1.alpha;\n this.filled = (this.alpha !== 0);\n /* tslint:disable-next-line:max-line-length */\n }\n else if (typeof color1 === 'number' && typeof color2 === 'undefined' && typeof color3 === 'undefined' && typeof color4 === 'undefined') {\n if (color1 < 0) {\n color1 = 0;\n }\n if (color1 > 1) {\n color1 = 1;\n }\n this.redColor = color1 * PdfColor.maxColourChannelValue;\n this.greenColor = color1 * PdfColor.maxColourChannelValue;\n this.blueColor = color1 * PdfColor.maxColourChannelValue;\n this.cyanColor = color1;\n this.magentaColor = color1;\n this.yellowColor = color1;\n this.blackColor = color1;\n this.grayColor = color1;\n this.alpha = PdfColor.maxColourChannelValue;\n this.filled = true;\n }\n else if (typeof color4 === 'undefined') {\n this.assignRGB(color1, color2, color3);\n }\n else {\n this.assignRGB(color2, color3, color4, color1);\n }\n }\n /**\n * `Assign` red, green, blue colors with alpha value..\n * @private\n */\n PdfColor.prototype.assignRGB = function (r, g, b, a) {\n if (typeof r === 'undefined' || typeof g === 'undefined' || typeof b === 'undefined') {\n this.filled = false;\n }\n else {\n this.cyanColor = 0;\n this.magentaColor = 0;\n this.yellowColor = 0;\n this.blackColor = 0;\n this.grayColor = 0;\n this.redColor = r;\n this.greenColor = g;\n this.blueColor = b;\n if (typeof a === 'undefined') {\n this.alpha = PdfColor.maxColourChannelValue;\n }\n else {\n this.alpha = a;\n }\n this.filled = true;\n this.assignCMYK(r, g, b);\n }\n };\n /**\n * `Calculate and assign` cyan, megenta, yellow colors from rgb values..\n * @private\n */\n PdfColor.prototype.assignCMYK = function (r, g, b) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n var black = PdfNumber.min(1 - red, 1 - green, 1 - blue);\n var cyan = (black === 1.0) ? 0 : (1 - red - black) / (1 - black);\n var magenta = (black === 1.0) ? 0 : (1 - green - black) / (1 - black);\n var yellow = (black === 1.0) ? 0 : (1 - blue - black) / (1 - black);\n this.blackColor = black;\n this.cyanColor = cyan;\n this.magentaColor = magenta;\n this.yellowColor = yellow;\n };\n Object.defineProperty(PdfColor.prototype, \"r\", {\n //Properties\n // public static get Empty():PdfColor\n // {\n // return this.s_emptyColor\n // }\n /**\n * Gets or sets `Red` channel value.\n * @private\n */\n get: function () {\n return this.redColor;\n },\n set: function (value) {\n this.redColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"red\", {\n /**\n * Gets the `Red` color\n * @private\n */\n get: function () {\n return (this.r / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"b\", {\n /**\n * Gets or sets `Blue` channel value.\n * @private\n */\n get: function () {\n return this.blueColor;\n },\n set: function (value) {\n this.blueColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"blue\", {\n /**\n * Gets the `blue` color.\n * @private\n */\n get: function () {\n return (this.b / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"c\", {\n /**\n * Gets or sets `Cyan` channel value.\n * @private\n */\n get: function () {\n return this.cyanColor;\n },\n set: function (value) {\n if (value < 0) {\n this.cyanColor = 0;\n }\n else if (value > 1) {\n this.cyanColor = 1;\n }\n else {\n this.cyanColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"k\", {\n /**\n * Gets or sets `Black` channel value.\n * @private\n */\n get: function () {\n return this.blackColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.blackColor = 0;\n }\n else if ((value > 1)) {\n this.blackColor = 1;\n }\n else {\n this.blackColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"m\", {\n /**\n * Gets or sets `Magenta` channel value.\n * @private\n */\n get: function () {\n return this.magentaColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.magentaColor = 0;\n }\n else if ((value > 1)) {\n this.magentaColor = 1;\n }\n else {\n this.magentaColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"y\", {\n /**\n * Gets or sets `Yellow` channel value.\n * @private\n */\n get: function () {\n return this.yellowColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.yellowColor = 0;\n }\n else if ((value > 1)) {\n this.yellowColor = 1;\n }\n else {\n this.yellowColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"g\", {\n /**\n * Gets or sets `Green` channel value.\n * @private\n */\n get: function () {\n return this.greenColor;\n },\n set: function (value) {\n this.greenColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"green\", {\n /**\n * Gets the `Green` color.\n * @private\n */\n get: function () {\n return (this.g / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"gray\", {\n /**\n * Gets or sets `Gray` channel value.\n * @private\n */\n get: function () {\n return ((((this.redColor + this.greenColor) + this.blueColor)) / (PdfColor.maxColourChannelValue * 3));\n },\n set: function (value) {\n if (value < 0) {\n this.grayColor = 0;\n }\n else if (value > 1) {\n this.grayColor = 1;\n }\n else {\n this.grayColor = value;\n }\n this.r = (this.grayColor * PdfColor.maxColourChannelValue);\n this.g = (this.grayColor * PdfColor.maxColourChannelValue);\n this.b = (this.grayColor * PdfColor.maxColourChannelValue);\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"isEmpty\", {\n /**\n * Gets whether the PDFColor `is Empty` or not.\n * @private\n */\n get: function () {\n return !this.filled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"a\", {\n /**\n * Gets or sets `Alpha` channel value.\n * @private\n */\n get: function () {\n return this.alpha;\n },\n set: function (value) {\n if (value < 0) {\n this.alpha = 0;\n }\n else {\n // if (this.alpha !== value) {\n this.alpha = value;\n // }\n }\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Converts `PDFColor to PDF string` representation.\n * @private\n */\n PdfColor.prototype.toString = function (colorSpace, stroke) {\n if (this.isEmpty) {\n return '';\n }\n var str = '';\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n str = this.rgbToString(stroke);\n break;\n case PdfColorSpace.GrayScale:\n str = this.grayScaleToString(stroke);\n break;\n case PdfColorSpace.Cmyk:\n str = this.cmykToString(stroke);\n break;\n }\n return str;\n };\n /**\n * Sets `GrayScale` color.\n * @private\n */\n PdfColor.prototype.grayScaleToString = function (ifStroking) {\n var gray = this.gray;\n var colour = '';\n var obj = null;\n /* tslint:disable-next-line:max-line-length */\n obj = (ifStroking) ? PdfColor.grayStringsSroke.containsKey(gray) ? PdfColor.grayStringsSroke.getValue(gray) : null : PdfColor.grayStringsFill.containsKey(gray) ? PdfColor.grayStringsFill.getValue(gray) : null;\n if (obj == null) {\n if (ifStroking) {\n colour = gray.toString() + ' G';\n PdfColor.grayStringsSroke.setValue(gray, colour);\n }\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /**\n * Sets `RGB` color.\n * @private\n */\n PdfColor.prototype.rgbToString = function (ifStroking) {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var key = (r << 16) + (g << 8) + b;\n if (ifStroking) {\n key += 1 << 24;\n }\n var colour = '';\n var obj = null;\n if (PdfColor.rgbStrings.containsKey(key)) {\n obj = PdfColor.rgbStrings.getValue(key);\n }\n if (obj == null) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n if (ifStroking) {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' RG';\n }\n else {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' rg';\n }\n PdfColor.rgbStrings.setValue(key, colour);\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /***\n * Sets `CMYK` color.\n * @private\n */\n PdfColor.prototype.cmykToString = function (ifStroking) {\n var cyan = this.c;\n var magenta = this.m;\n var yellow = this.y;\n var black = this.b;\n var colour = '';\n colour = cyan.toString() + ' ' + magenta.toString() + ' ' + yellow.toString() + ' ' + black.toString() + ' K';\n return colour + Operators.newLine;\n };\n /**\n * Converts `colour to a PDF array`.\n * @private\n */\n PdfColor.prototype.toArray = function (colorSpace) {\n var array = new PdfArray();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n array.add(new PdfNumber(this.red));\n array.add(new PdfNumber(this.green));\n array.add(new PdfNumber(this.blue));\n break;\n }\n return array;\n };\n //Fields\n /**\n * Holds `RGB colors` converted into strings.\n * @private\n */\n PdfColor.rgbStrings = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `stroking`.\n * @private\n */\n PdfColor.grayStringsSroke = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `filling`.\n * @private\n */\n PdfColor.grayStringsFill = new Dictionary();\n /**\n * `Max value` of color channel.\n * @private\n */\n PdfColor.maxColourChannelValue = 255.0;\n return PdfColor;\n}());\nexport { PdfColor };\n","/**\n * `PdfBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrush = /** @class */ (function () {\n /**\n * Creates instanceof `PdfBrush` class.\n * @hidden\n * @private\n */\n function PdfBrush() {\n //\n }\n //IClonable implementation\n PdfBrush.prototype.clone = function () {\n return this;\n };\n return PdfBrush;\n}());\nexport { PdfBrush };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColor } from './../pdf-color';\nimport { PdfColorSpace } from './../enum';\nimport { PdfBrush } from './pdf-brush';\n/**\n * Represents a brush that fills any object with a solid color.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSolidBrush = /** @class */ (function (_super) {\n __extends(PdfSolidBrush, _super);\n //Constructors\n /**\n * Initializes a new instance of the `PdfSolidBrush` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param color color of the brush\n */\n function PdfSolidBrush(color) {\n var _this = _super.call(this) || this;\n _this.pdfColor = color;\n return _this;\n }\n Object.defineProperty(PdfSolidBrush.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color` of the brush.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Monitors` the changes of the brush and modify PDF state respectively.\n * @private\n */\n PdfSolidBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n if (streamWriter == null) {\n throw new Error('ArgumentNullException:streamWriter');\n }\n var diff = false;\n if (brush == null) {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n else {\n var sBrush = brush;\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n };\n /**\n * `Resets` the changes, which were made by the brush.\n * @private\n */\n PdfSolidBrush.prototype.resetChanges = function (streamWriter) {\n streamWriter.setColorAndSpace(new PdfColor(0, 0, 0), PdfColorSpace.Rgb, false);\n };\n return PdfSolidBrush;\n}(PdfBrush));\nexport { PdfSolidBrush };\n","/**\n * PdfPen.ts class for EJ2-PDF\n */\nimport { PdfColor } from './pdf-color';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfDashStyle, PdfColorSpace } from './enum';\nimport { PdfBrush } from './brushes/pdf-brush';\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @class */ (function () {\n function PdfPen(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n Object.defineProperty(PdfPen.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashOffset\", {\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get: function () {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n },\n set: function (value) {\n this.dashOffsetValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashPattern\", {\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get: function () {\n return this.penDashPattern;\n },\n set: function (value) {\n this.penDashPattern = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashStyle\", {\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfDashStyle;\n },\n set: function (value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineCap\", {\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineCap;\n },\n set: function (value) {\n this.pdfLineCap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineJoin\", {\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineJoin;\n },\n set: function (value) {\n this.pdfLineJoin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"miterLimit\", {\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get: function () {\n return this.internalMiterLimit;\n },\n set: function (value) {\n this.internalMiterLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"width\", {\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.penWidth;\n },\n set: function (value) {\n this.penWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n PdfPen.prototype.clone = function () {\n var pen = this;\n return pen;\n };\n /**\n * `Sets the brush`.\n * @private\n */\n PdfPen.prototype.setBrush = function (brush) {\n var sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n };\n /**\n * `Monitors the changes`.\n * @private\n */\n PdfPen.prototype.monitorChanges = function (currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n var diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n var miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n var brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n };\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n PdfPen.prototype.dashControl = function (pen, saveState, streamWriter) {\n saveState = true;\n var lineWidth = this.width;\n var pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n };\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n PdfPen.prototype.getPattern = function () {\n var pattern = this.dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n };\n return PdfPen;\n}());\nexport { PdfPen };\n","/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\nimport { PdfVerticalAlignment } from './../../graphics/enum';\nimport { PdfSubSuperScript, PdfWordWrapType } from './../../graphics/fonts/enum';\n/**\n * `PdfStringFormat` class represents the text layout information on PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStringFormat = /** @class */ (function () {\n function PdfStringFormat(arg1, arg2) {\n /**\n * The `scaling factor` of the text being drawn.\n * @private\n */\n this.scalingFactor = 100.0;\n /**\n * Indicates text `wrapping` type.\n * @private\n */\n this.wordWrapType = PdfWordWrapType.Word;\n this.internalLineLimit = true;\n this.wordWrapType = PdfWordWrapType.Word;\n if ((typeof arg1 !== 'undefined') && (typeof arg1 !== 'string')) {\n this.textAlignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.verticalAlignment = arg2;\n }\n }\n Object.defineProperty(PdfStringFormat.prototype, \"alignment\", {\n //Properties\n /**\n * Gets or sets the `horizontal` text alignment\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.textAlignment;\n },\n set: function (value) {\n this.textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"textDirection\", {\n get: function () {\n return this.direction;\n },\n set: function (value) {\n this.direction = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineAlignment\", {\n /**\n * Gets or sets the `vertical` text alignment.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.verticalAlignment === 'undefined' || this.verticalAlignment == null) {\n return PdfVerticalAlignment.Top;\n }\n else {\n return this.verticalAlignment;\n }\n },\n set: function (value) {\n this.verticalAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"rightToLeft\", {\n /**\n * Gets or sets the value that indicates text `direction` mode.\n * @private\n */\n get: function () {\n if (typeof this.isRightToLeft === 'undefined' || this.isRightToLeft == null) {\n return false;\n }\n else {\n return this.isRightToLeft;\n }\n },\n set: function (value) {\n this.isRightToLeft = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"characterSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the characters in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set character spacing\n * stringFormat.characterSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalCharacterSpacing === 'undefined' || this.internalCharacterSpacing == null) {\n return 0;\n }\n else {\n return this.internalCharacterSpacing;\n }\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the words in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set word spacing\n * stringFormat.wordSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalWordSpacing === 'undefined' || this.internalWordSpacing == null) {\n return 0;\n }\n else {\n return this.internalWordSpacing;\n }\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineSpacing\", {\n /**\n * Gets or sets value that indicates the `vertical distance` between the baselines of adjacent lines of text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set string\n * let text : string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n * incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitati';\n * // set rectangle bounds\n * let rectangle : RectangleF = new RectangleF({x : 0, y : 0}, {width : 300, height : 100})\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set line spacing\n * stringFormat.lineSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString(text, font, blackBrush, rectangle, stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.leading === 'undefined' || this.leading == null) {\n return 0;\n }\n else {\n return this.leading;\n }\n },\n set: function (value) {\n this.leading = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"clipPath\", {\n /**\n * Gets or sets a value indicating whether the text is `clipped` or not.\n * @private\n */\n get: function () {\n if (typeof this.clip === 'undefined' || this.clip == null) {\n return false;\n }\n else {\n return this.clip;\n }\n },\n set: function (value) {\n this.clip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"subSuperScript\", {\n /**\n * Gets or sets value indicating whether the text is in `subscript or superscript` mode.\n * @private\n */\n get: function () {\n if (typeof this.pdfSubSuperScript === 'undefined' || this.pdfSubSuperScript == null) {\n return PdfSubSuperScript.None;\n }\n else {\n return this.pdfSubSuperScript;\n }\n },\n set: function (value) {\n this.pdfSubSuperScript = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"paragraphIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the paragraph.\n * @private\n */\n get: function () {\n if (typeof this.internalParagraphIndent === 'undefined' || this.internalParagraphIndent == null) {\n return 0;\n }\n else {\n return this.internalParagraphIndent;\n }\n },\n set: function (value) {\n this.internalParagraphIndent = value;\n this.firstLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineLimit\", {\n /**\n * Gets or sets a value indicating whether [`line limit`].\n * @private\n */\n get: function () {\n return this.internalLineLimit;\n },\n set: function (value) {\n this.internalLineLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"measureTrailingSpaces\", {\n /**\n * Gets or sets a value indicating whether [`measure trailing spaces`].\n * @private\n */\n get: function () {\n if (typeof this.trailingSpaces === 'undefined' || this.trailingSpaces == null) {\n return false;\n }\n else {\n return this.trailingSpaces;\n }\n },\n set: function (value) {\n this.trailingSpaces = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"noClip\", {\n /**\n * Gets or sets a value indicating whether [`no clip`].\n * @private\n */\n get: function () {\n if (typeof this.isNoClip === 'undefined' || this.isNoClip == null) {\n return false;\n }\n else {\n return this.isNoClip;\n }\n },\n set: function (value) {\n this.isNoClip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordWrap\", {\n /**\n * Gets or sets value indicating type of the text `wrapping`.\n * @private\n */\n get: function () {\n // if (typeof this.wrapType === 'undefined' || this.wrapType == null) {\n // return PdfWordWrapType.Word;\n // } else {\n return this.wordWrapType;\n // }\n },\n set: function (value) {\n this.wordWrapType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"horizontalScalingFactor\", {\n /**\n * Gets or sets the `scaling factor`.\n * @private\n */\n get: function () {\n // if (typeof this.scalingFactor === 'undefined' || this.scalingFactor == null) {\n // return 100;\n // } else {\n return this.scalingFactor;\n // }\n },\n set: function (value) {\n if (value <= 0) {\n throw new Error('ArgumentOutOfRangeException:The scaling factor cant be less of equal to zero, ScalingFactor');\n }\n this.scalingFactor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"firstLineIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the text.\n * @private\n */\n get: function () {\n if (typeof this.initialLineIndent === 'undefined' || this.initialLineIndent == null) {\n return 0;\n }\n else {\n return this.initialLineIndent;\n }\n },\n set: function (value) {\n this.initialLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clones` the object.\n * @private\n */\n //IClonable implementation\n PdfStringFormat.prototype.clone = function () {\n var format = this;\n return format;\n };\n return PdfStringFormat;\n}());\nexport { PdfStringFormat };\n","/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n function StringTokenizer(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n Object.defineProperty(StringTokenizer.prototype, \"length\", {\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get: function () {\n return this.text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"end\", {\n get: function () {\n return (this.currentPosition === this.text.length);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"position\", {\n /**\n * Gets or sets the position.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n StringTokenizer.getCharsCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n var numSymbols = 0;\n var curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n var count = 0;\n for (var i = 0, len = text.length; i < len; i++) {\n var ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.readLine = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.peekLine = function () {\n var pos = this.currentPosition;\n var line = this.readLine();\n this.currentPosition = pos;\n return line;\n };\n /**\n * Reads a word from the text.\n * @private\n */\n StringTokenizer.prototype.readWord = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n var textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Peeks a word from the text.\n * @private\n */\n StringTokenizer.prototype.peekWord = function () {\n var pos = this.currentPosition;\n var word = this.readWord();\n this.currentPosition = pos;\n return word;\n };\n StringTokenizer.prototype.read = function (count) {\n if (typeof count === 'undefined') {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n var num = 0;\n var builder = '';\n while (!this.end && num < count) {\n var ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n };\n /**\n * Peeks char form the data.\n * @private\n */\n StringTokenizer.prototype.peek = function () {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n };\n /**\n * Closes a reader.\n * @private\n */\n StringTokenizer.prototype.close = function () {\n this.text = null;\n };\n StringTokenizer.prototype.readToEnd = function () {\n var text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substr(this.currentPosition, this.length - this.currentPosition);\n }\n this.currentPosition = this.length;\n return text;\n };\n //Implementation\n /**\n * Checks whether array contains a symbol.\n * @private\n */\n StringTokenizer.contains = function (array, symbol) {\n var contains = false;\n for (var i = 0; i < array.length; i++) {\n if (array[i] === symbol) {\n contains = true;\n break;\n }\n }\n return contains;\n };\n // Constants\n /**\n * `Whitespace` symbol.\n * @private\n */\n StringTokenizer.whiteSpace = ' ';\n /**\n * `tab` symbol.\n * @private\n */\n StringTokenizer.tab = '\\t';\n /**\n * Array of `spaces`.\n * @private\n */\n StringTokenizer.spaces = [StringTokenizer.whiteSpace, StringTokenizer.tab];\n /**\n * `Pattern` for WhiteSpace.\n * @private\n */\n StringTokenizer.whiteSpacePattern = '^[ \\t]+$';\n return StringTokenizer;\n}());\nexport { StringTokenizer };\n","/**\n * PdfFont.ts class for EJ2-PDF\n */\nimport { PdfFontStyle } from './enum';\nimport { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfStringFormat } from './pdf-string-format';\nimport { PdfStringLayouter } from './string-layouter';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nvar PdfFont = /** @class */ (function () {\n function PdfFont(size, style) {\n /**\n * `Style` of the font.\n * @private\n */\n this.fontStyle = PdfFontStyle.Regular;\n if (typeof size === 'number' && typeof style === 'undefined') {\n this.fontSize = size;\n }\n else {\n this.fontSize = size;\n this.setStyle(style);\n }\n }\n Object.defineProperty(PdfFont.prototype, \"name\", {\n //Properties\n /**\n * Gets the face name of this Font.\n * @private\n */\n get: function () {\n return this.metrics.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"size\", {\n /**\n * Gets the size of this font.\n * @private\n */\n get: function () {\n return this.fontSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"height\", {\n /**\n * Gets the height of the font in points.\n * @private\n */\n get: function () {\n return this.metrics.getHeight(null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"style\", {\n /**\n * Gets the style information for this font.\n * @private\n */\n get: function () {\n return this.fontStyle;\n },\n set: function (value) {\n this.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"bold\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `bold`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Bold) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"italic\", {\n /**\n * Gets a value indicating whether this `PdfFont` has the `italic` style applied.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Italic) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"strikeout\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `strikeout`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Strikeout) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"underline\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `underline`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Underline) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"metrics\", {\n /**\n * Gets or sets the `metrics` for this font.\n * @private\n */\n get: function () {\n return this.fontMetrics;\n },\n set: function (value) {\n this.fontMetrics = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"element\", {\n // /**\n // * Gets and Sets the font `internals`.\n // * @private\n // */\n // public get fontInternal() : IPdfPrimitive {\n // return this.pdfFontInternals;\n // }\n // public set fontInternal(value : IPdfPrimitive) {\n // this.pdfFontInternals = value;\n // }\n //IPdfWrapper Members\n /**\n * Gets the `element` representing the font.\n * @private\n */\n get: function () {\n return this.pdfFontInternals;\n },\n enumerable: true,\n configurable: true\n });\n PdfFont.prototype.measureString = function (text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n var temparg2 = arg2;\n var charactersFitted = 0;\n var linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'number' && typeof arg4 === 'number') {\n var temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n var layoutArea = new SizeF(arg2, 0);\n var temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else {\n if (text == null) {\n throw Error(\"ArgumentNullException(\\\"text\\\")\");\n }\n var temparg2 = arg2;\n var temparg3 = arg3;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(text, this, temparg3, temparg2, false, new SizeF(0, 0));\n // arg4 = (result.Remainder == null) ? text.length : text.length - result.Remainder.length;\n arg4 = text.length;\n arg5 = (result.empty) ? 0 : result.lines.length;\n return result.actualSize;\n }\n };\n /* tslint:enable */\n //IPdfCache Members\n /**\n * `Checks` whether the object is similar to another object.\n * @private\n */\n PdfFont.prototype.equalsTo = function (obj) {\n var result = this.equalsToFont(obj);\n return result;\n };\n /**\n * Returns `internals` of the object.\n * @private\n */\n PdfFont.prototype.getInternals = function () {\n return this.pdfFontInternals;\n };\n /**\n * Sets `internals` to the object.\n * @private\n */\n PdfFont.prototype.setInternals = function (internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this.pdfFontInternals = internals;\n };\n /**\n * Sets the `style` of the font.\n * @private\n */\n PdfFont.prototype.setStyle = function (style) {\n this.fontStyle = style;\n };\n /**\n * Applies `settings` to the default line width.\n * @private\n */\n PdfFont.prototype.applyFormatSettings = function (line, format, width) {\n // if (line == null) {\n // throw new Error(`ArgumentNullException:line`);\n // }\n var realWidth = width;\n if (format != null && width > 0) {\n // Space among characters is not default.\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n // Space among words is not default.\n if (format.wordSpacing !== 0) {\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n realWidth += whitespacesCount * format.wordSpacing;\n }\n }\n return realWidth;\n };\n //Constants\n /**\n * `Multiplier` of the symbol width.\n * @default 0.001\n * @private\n */\n PdfFont.charSizeMultiplier = 0.001;\n /**\n * `Synchronization` object.\n * @private\n */\n PdfFont.syncObject = new Object();\n return PdfFont;\n}());\nexport { PdfFont };\n","/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nexport var PdfLayoutType;\n(function (PdfLayoutType) {\n /**\n * Specifies the type of `Paginate`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"Paginate\"] = 0] = \"Paginate\";\n /**\n * Specifies the type of `OnePage`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"OnePage\"] = 1] = \"OnePage\";\n})(PdfLayoutType || (PdfLayoutType = {}));\n/**\n * public Enum for `PdfLayoutBreakType`.\n * @private\n */\nexport var PdfLayoutBreakType;\n(function (PdfLayoutBreakType) {\n /**\n * Specifies the type of `FitPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitPage\"] = 0] = \"FitPage\";\n /**\n * Specifies the type of `FitElement`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitElement\"] = 1] = \"FitElement\";\n /**\n * Specifies the type of `FitColumnsToPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitColumnsToPage\"] = 2] = \"FitColumnsToPage\";\n})(PdfLayoutBreakType || (PdfLayoutBreakType = {}));\nexport var PathPointType;\n(function (PathPointType) {\n /**\n * Specifies the path point type of `Start`.\n * @private\n */\n PathPointType[PathPointType[\"Start\"] = 0] = \"Start\";\n /**\n * Specifies the path point type of `Line`.\n * @private\n */\n PathPointType[PathPointType[\"Line\"] = 1] = \"Line\";\n /**\n * Specifies the path point type of `Bezier3`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier3\"] = 3] = \"Bezier3\";\n /**\n * Specifies the path point type of `Bezier`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier\"] = 3] = \"Bezier\";\n /**\n * Specifies the path point type of `PathTypeMask`.\n * @private\n */\n PathPointType[PathPointType[\"PathTypeMask\"] = 7] = \"PathTypeMask\";\n /**\n * Specifies the path point type of `DashMode`.\n * @private\n */\n PathPointType[PathPointType[\"DashMode\"] = 16] = \"DashMode\";\n /**\n * Specifies the path point type of `PathMarker`.\n * @private\n */\n PathPointType[PathPointType[\"PathMarker\"] = 32] = \"PathMarker\";\n /**\n * Specifies the path point type of `CloseSubpath`.\n * @private\n */\n PathPointType[PathPointType[\"CloseSubpath\"] = 128] = \"CloseSubpath\";\n})(PathPointType || (PathPointType = {}));\n","/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\nimport { PointF } from './../drawing/pdf-drawing';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * Class for representing Root `transformation matrix`.\n */\nvar PdfTransformationMatrix = /** @class */ (function () {\n function PdfTransformationMatrix(value) {\n /**\n * Value for `angle converting`.\n * @default 180.0 / Math.PI\n * @private\n */\n this.radDegFactor = 180.0 / Math.PI;\n if (typeof value === 'undefined') {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, 1.00, 0.00, 0.00);\n }\n else {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, -1.00, 0.00, 0.00);\n }\n }\n Object.defineProperty(PdfTransformationMatrix.prototype, \"matrix\", {\n // Properties\n /**\n * Gets or sets the `internal matrix object`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n set: function (value) {\n this.transformationMatrix = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.translate = function (offsetX, offsetY) {\n this.transformationMatrix.translate(offsetX, offsetY);\n };\n /**\n * `Scales` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.scale = function (scaleX, scaleY) {\n this.transformationMatrix.elements[0] = scaleX;\n this.transformationMatrix.elements[3] = scaleY;\n };\n /**\n * `Rotates` coordinate system in counterclockwise direction.\n * @private\n */\n PdfTransformationMatrix.prototype.rotate = function (angle) {\n //Convert from degree to radian \n angle = (angle * Math.PI) / 180;\n //Rotation \n this.transformationMatrix.elements[0] = Math.cos(angle);\n this.transformationMatrix.elements[1] = Math.sin(angle);\n this.transformationMatrix.elements[2] = -Math.sin(angle);\n this.transformationMatrix.elements[3] = Math.cos(angle);\n };\n // Overrides\n /**\n * Gets `PDF representation`.\n * @private\n */\n PdfTransformationMatrix.prototype.toString = function () {\n var builder = '';\n var whitespace = ' ';\n for (var i = 0, len = this.transformationMatrix.elements.length; i < len; i++) {\n var temp = this.matrix.elements[i];\n builder += PdfNumber.floatToString(this.transformationMatrix.elements[i]);\n builder += whitespace;\n }\n return builder;\n };\n // Implementation\n /**\n * `Multiplies` matrices (changes coordinate system.)\n * @private\n */\n PdfTransformationMatrix.prototype.multiply = function (matrix) {\n this.transformationMatrix.multiply(matrix.matrix);\n };\n /**\n * Converts `degrees to radians`.\n * @private\n */\n PdfTransformationMatrix.degreesToRadians = function (degreesX) {\n return this.degRadFactor * degreesX;\n };\n /**\n * Converts `radians to degrees`.\n * @private\n */\n PdfTransformationMatrix.prototype.radiansToDegrees = function (radians) {\n return this.radDegFactor * radians;\n };\n /**\n * `Clones` this instance of PdfTransformationMatrix.\n * @private\n */\n PdfTransformationMatrix.prototype.clone = function () {\n return this;\n };\n // Constants\n /**\n * Value for `angle converting`.\n * @default Math.PI / 180.0\n * @private\n */\n PdfTransformationMatrix.degRadFactor = Math.PI / 180.0;\n return PdfTransformationMatrix;\n}());\nexport { PdfTransformationMatrix };\nvar Matrix = /** @class */ (function () {\n function Matrix(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this.metrixElements = [];\n }\n else if (typeof arg1 === 'number') {\n this.metrixElements = [];\n this.metrixElements.push(arg1);\n this.metrixElements.push(arg2);\n this.metrixElements.push(arg3);\n this.metrixElements.push(arg4);\n this.metrixElements.push(arg5);\n this.metrixElements.push(arg6);\n }\n else {\n this.metrixElements = arg1;\n }\n }\n Object.defineProperty(Matrix.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `elements`.\n * @private\n */\n get: function () {\n return this.metrixElements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetX\", {\n /**\n * Gets the off set `X`.\n * @private\n */\n get: function () {\n return this.metrixElements[4];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetY\", {\n /**\n * Gets the off set `Y`.\n * @private\n */\n get: function () {\n return this.metrixElements[5];\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n Matrix.prototype.translate = function (offsetX, offsetY) {\n this.metrixElements[4] = offsetX;\n this.metrixElements[5] = offsetY;\n };\n /**\n * `Translates` the specified offset X.\n * @private\n */\n Matrix.prototype.transform = function (point) {\n var x = point.x;\n var y = point.y;\n var x2 = x * this.elements[0] + y * this.elements[2] + this.offsetX;\n var y2 = x * this.elements[1] + y * this.elements[3] + this.offsetY;\n return new PointF(x2, y2);\n };\n /**\n * `Multiplies matrices` (changes coordinate system.)\n * @private\n */\n Matrix.prototype.multiply = function (matrix) {\n var tempMatrix = [];\n tempMatrix.push(this.elements[0] * matrix.elements[0] + this.elements[1] * matrix.elements[2]);\n tempMatrix[1] = (this.elements[0] * matrix.elements[1] + this.elements[1] * matrix.elements[3]);\n tempMatrix[2] = (this.elements[2] * matrix.elements[0] + this.elements[3] * matrix.elements[2]);\n tempMatrix[3] = (this.elements[2] * matrix.elements[1] + this.elements[3] * matrix.elements[3]);\n tempMatrix[4] = (this.offsetX * matrix.elements[0] + this.offsetY * matrix.elements[2] + matrix.offsetX);\n tempMatrix[5] = (this.offsetX * matrix.elements[1] + this.offsetY * matrix.elements[3] + matrix.offsetY);\n for (var i = 0; i < tempMatrix.length; i++) {\n this.elements[i] = tempMatrix[i];\n }\n };\n // IDisposable Members\n /**\n * `Dispose` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.dispose = function () {\n this.metrixElements = null;\n };\n // ICloneable Members\n /**\n * `Clones` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.clone = function () {\n var m = new Matrix(this.metrixElements);\n return m;\n };\n return Matrix;\n}());\nexport { Matrix };\n","/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nvar ProcedureSets = /** @class */ (function () {\n function ProcedureSets() {\n /**\n * Specifies the `PDF` procedure set.\n * @private\n */\n this.pdf = 'PDF';\n /**\n * Specifies the `Text` procedure set.\n * @private\n */\n this.text = 'Text';\n /**\n * Specifies the `ImageB` procedure set.\n * @private\n */\n this.imageB = 'ImageB';\n /**\n * Specifies the `ImageC` procedure set.\n * @private\n */\n this.imageC = 'ImageC';\n /**\n * Specifies the `ImageI` procedure set.\n * @private\n */\n this.imageI = 'ImageI';\n }\n return ProcedureSets;\n}());\nexport { ProcedureSets };\n","/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @class */ (function () {\n function TemporaryDictionary() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.size = function () {\n return this.mKeys.length;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.add = function (key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.keys = function () {\n return this.mKeys;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.values = function () {\n return this.mValues;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.getValue = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.setValue = function (key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.remove = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.containsKey = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.clear = function () {\n this.mKeys = [];\n this.mValues = [];\n };\n return TemporaryDictionary;\n}());\nexport { TemporaryDictionary };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents a simple `transparency`.\n * @private\n */\nvar PdfTransparency = /** @class */ (function () {\n // Properties\n // /**\n // * Gets the `stroke` operation alpha value.\n // * @private\n // */\n // public get stroke() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.CA);\n // return result;\n // }\n // /**\n // * Gets the `fill` operation alpha value.\n // * @private\n // */\n // public get fill() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.ca);\n // return result;\n // }\n // /**\n // * Gets the `blend mode`.\n // * @private\n // */\n // public get mode() : PdfBlendMode {\n // let result : string = this.getName(this.dictionaryProperties.ca);\n // return PdfBlendMode.Normal;\n // }\n // Constructors\n /**\n * Initializes a new instance of the `Transparency` class.\n * @private\n */\n function PdfTransparency(stroke, fill, mode) {\n // Fields\n /**\n * Internal variable to store `dictionary`.\n * @default new PdfDictionary()\n * @private\n */\n this.dictionary = new PdfDictionary();\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new DictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.dictionary.items.setValue(this.dictionaryProperties.CA, new PdfNumber(stroke));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(fill));\n this.dictionary.items.setValue(this.dictionaryProperties.BM, new PdfName(mode.toString()));\n }\n Object.defineProperty(PdfTransparency.prototype, \"element\", {\n // // Implementation\n // /**\n // * Gets the `number value`.\n // * @private\n // */\n // private getNumber(keyName : string) : number {\n // let result : number = 0.0;\n // let numb : PdfNumber = this.dictionary.items.getValue(keyName) as PdfNumber;\n // result = numb.intValue;\n // return result;\n // }\n // /**\n // * Gets the `name value`.\n // * @private\n // */\n // private getName(keyName : string) : string {\n // let result : string = null;\n // let name : PdfName = this.dictionary.items.getValue(keyName) as PdfName;\n // result = name.value;\n // return result;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTransparency;\n}());\nexport { PdfTransparency };\n","/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nvar PdfAutomaticFieldInfoCollection = /** @class */ (function () {\n /**\n * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.\n * @private\n */\n function PdfAutomaticFieldInfoCollection() {\n /**\n * Internal variable to store instance of `pageNumberFields` class.\n * @private\n */\n this.automaticFieldsInformation = [];\n //\n }\n Object.defineProperty(PdfAutomaticFieldInfoCollection.prototype, \"automaticFields\", {\n /**\n * Gets the `page number fields collection`.\n * @private\n */\n get: function () {\n return this.automaticFieldsInformation;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /// Adds the specified field info.\n /**\n * Add page number field into collection.\n * @private\n */\n PdfAutomaticFieldInfoCollection.prototype.add = function (fieldInfo) {\n return this.automaticFields.push(fieldInfo);\n };\n return PdfAutomaticFieldInfoCollection;\n}());\nexport { PdfAutomaticFieldInfoCollection };\n","/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfGraphicsElement = /** @class */ (function () {\n // Constructors\n function PdfGraphicsElement() {\n //\n }\n /**\n * `Draws` the page number field.\n * @public\n */\n PdfGraphicsElement.prototype.drawHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0 || y !== 0);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n return PdfGraphicsElement;\n}());\nexport { PdfGraphicsElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfDocument } from './../pdf-document';\nimport { PdfGraphicsElement } from './../../graphics/figures/base/graphics-element';\nimport { PdfAutomaticFieldInfo } from './automatic-field-info';\n/**\n * Represents a fields which is calculated before the document saves.\n */\nvar PdfAutomaticField = /** @class */ (function (_super) {\n __extends(PdfAutomaticField, _super);\n // Constructors\n function PdfAutomaticField() {\n var _this = _super.call(this) || this;\n // Fields\n _this.internalBounds = new RectangleF(0, 0, 0, 0);\n _this.internalTemplateSize = new SizeF(0, 0);\n return _this;\n }\n Object.defineProperty(PdfAutomaticField.prototype, \"bounds\", {\n // Properties\n get: function () {\n return this.internalBounds;\n },\n set: function (value) {\n this.internalBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"size\", {\n get: function () {\n return new SizeF(this.bounds.width, this.bounds.height);\n },\n set: function (value) {\n this.bounds.width = value.width;\n this.bounds.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"location\", {\n get: function () {\n return new PointF(this.bounds.x, this.bounds.y);\n },\n set: function (value) {\n this.bounds.x = value.x;\n this.bounds.y = value.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"font\", {\n get: function () {\n return this.internalFont;\n },\n set: function (value) {\n this.internalFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"brush\", {\n get: function () {\n return this.internalBrush;\n },\n set: function (value) {\n this.internalBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"pen\", {\n get: function () {\n return this.internalPen;\n },\n set: function (value) {\n this.internalPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"stringFormat\", {\n get: function () {\n return this.internalStringFormat;\n },\n set: function (value) {\n this.internalStringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfAutomaticField.prototype.performDrawHelper = function (graphics, location, scalingX, scalingY) {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n var text = this.getValue(graphics);\n this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);\n }\n };\n PdfAutomaticField.prototype.draw = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n var location_1 = new PointF(0, 0);\n this.draw(arg1, location_1);\n }\n else if (arg2 instanceof PointF) {\n this.draw(arg1, arg2.x, arg2.y);\n }\n else {\n this.drawHelper(arg1, arg2, arg3);\n var info = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));\n arg1.automaticFields.add(info);\n }\n };\n PdfAutomaticField.prototype.getSize = function () {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n return this.internalTemplateSize;\n }\n else {\n return this.size;\n }\n };\n PdfAutomaticField.prototype.drawInternal = function (graphics) {\n //\n };\n /* tslint:disable */\n PdfAutomaticField.prototype.getBrush = function () {\n return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;\n };\n PdfAutomaticField.prototype.getFont = function () {\n return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;\n };\n /* tslint:enable */\n PdfAutomaticField.prototype.getPageFromGraphics = function (graphics) {\n if (typeof graphics.page !== 'undefined' && graphics.page !== null) {\n var page = graphics.page;\n return page;\n }\n else {\n var page = graphics.currentPage;\n return page;\n }\n };\n return PdfAutomaticField;\n}(PdfGraphicsElement));\nexport { PdfAutomaticField };\n","/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\nimport { PointF } from './../../drawing/pdf-drawing';\nimport { PdfAutomaticField } from './automatic-field';\n/**\n * Represents information about the automatic field.\n * @private\n */\nvar PdfAutomaticFieldInfo = /** @class */ (function () {\n function PdfAutomaticFieldInfo(field, location, scaleX, scaleY) {\n // Fields\n /**\n * Internal variable to store location of the field.\n * @private\n */\n this.pageNumberFieldLocation = new PointF();\n /**\n * Internal variable to store field.\n * @private\n */\n this.pageNumberField = null;\n /**\n * Internal variable to store x scaling factor.\n * @private\n */\n this.scaleX = 1;\n /**\n * Internal variable to store y scaling factor.\n * @private\n */\n this.scaleY = 1;\n if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {\n this.pageNumberField = field.field;\n this.pageNumberFieldLocation = field.location;\n this.scaleX = field.scalingX;\n this.scaleY = field.scalingY;\n }\n else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n }\n else {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n }\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"location\", {\n /* tslint:enable */\n // Properties\n /**\n * Gets or sets the location.\n * @private\n */\n get: function () {\n return this.pageNumberFieldLocation;\n },\n set: function (value) {\n this.pageNumberFieldLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"field\", {\n /**\n * Gets or sets the field.\n * @private\n */\n get: function () {\n return this.pageNumberField;\n },\n set: function (value) {\n this.pageNumberField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingX\", {\n /**\n * Gets or sets the scaling X factor.\n * @private\n */\n get: function () {\n return this.scaleX;\n },\n set: function (value) {\n this.scaleX = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingY\", {\n /**\n * Gets or sets the scaling Y factor.\n * @private\n */\n get: function () {\n return this.scaleY;\n },\n set: function (value) {\n this.scaleY = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAutomaticFieldInfo;\n}());\nexport { PdfAutomaticFieldInfo };\n","/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nvar ByteArray = /** @class */ (function () {\n /**\n * Initialize the new instance for `byte-array` class\n * @hidden\n * @private\n */\n function ByteArray(length) {\n /**\n * Current stream `position`.\n * @default 0\n * @private\n */\n this.mPosition = 0;\n this.buffer = new Uint8Array(length);\n this.dataView = new DataView(this.buffer.buffer);\n }\n Object.defineProperty(ByteArray.prototype, \"position\", {\n /**\n * Gets and Sets a current `position` of byte array.\n * @hidden\n * @private\n */\n get: function () {\n return this.mPosition;\n },\n set: function (value) {\n this.mPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Read` from current stream position.\n * @default 0\n * @hidden\n * @private\n */\n ByteArray.prototype.read = function (buffer, offset, count) {\n for (var index = offset; index < count; index++) {\n var position = this.position;\n buffer.buffer[index] = this.readByte(position);\n this.position++;\n }\n };\n /**\n * @hidden\n */\n ByteArray.prototype.getBuffer = function (index) {\n return this.buffer[index];\n };\n /**\n * @hidden\n */\n ByteArray.prototype.writeFromBase64String = function (base64) {\n var arr = this.encodedString(base64);\n this.buffer = arr;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var enc1;\n var enc2;\n var enc3;\n var enc4;\n var i = 0;\n var resultIndex = 0;\n var dataUrlPrefix = 'data:';\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n var output = new Uint8Array(totalLength | 0);\n while (i < input.length) {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output[resultIndex++] = chr1;\n output[resultIndex++] = chr2;\n output[resultIndex++] = chr3;\n }\n return output;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.readByte = function (offset) {\n return (this.buffer[offset]);\n };\n Object.defineProperty(ByteArray.prototype, \"internalBuffer\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ByteArray.prototype, \"count\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * 'readNextTwoBytes' stream\n * @hidden\n * @private\n */\n ByteArray.prototype.readNextTwoBytes = function (stream) {\n var data = stream.readByte(this.position);\n this.position++;\n data <<= 8;\n data |= stream.readByte(this.position);\n this.position++;\n return data;\n };\n return ByteArray;\n}());\nexport { ByteArray };\n","/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nvar TtfTableInfo = /** @class */ (function () {\n function TtfTableInfo() {\n }\n Object.defineProperty(TtfTableInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this table is empty.\n * @private\n */\n get: function () {\n var empty = (this.offset === this.length && this.length === this.checksum && this.checksum === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n return TtfTableInfo;\n}());\nexport { TtfTableInfo };\n","var TtfNameTable = /** @class */ (function () {\n function TtfNameTable() {\n }\n return TtfNameTable;\n}());\nexport { TtfNameTable };\n","/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nvar TtfNameRecord = /** @class */ (function () {\n function TtfNameRecord() {\n }\n return TtfNameRecord;\n}());\nexport { TtfNameRecord };\n","/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nvar TtfHeadTable = /** @class */ (function () {\n function TtfHeadTable() {\n }\n return TtfHeadTable;\n}());\nexport { TtfHeadTable };\n","var TtfMetrics = /** @class */ (function () {\n function TtfMetrics() {\n }\n Object.defineProperty(TtfMetrics.prototype, \"isItalic\", {\n //Properties\n /**\n * Gets a value indicating whether this instance is italic.\n */\n get: function () {\n return ((this.macStyle & 2) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfMetrics.prototype, \"isBold\", {\n /**\n * Gets a value indicating whether this instance is bold.\n */\n get: function () {\n return ((this.macStyle & 1) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n return TtfMetrics;\n}());\nexport { TtfMetrics };\n","/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nvar TtfHorizontalHeaderTable = /** @class */ (function () {\n function TtfHorizontalHeaderTable() {\n }\n return TtfHorizontalHeaderTable;\n}());\nexport { TtfHorizontalHeaderTable };\n","/**\n * TtfOS2Table.ts class for EJ2-PDF\n * The OS/2 table consists of a set of metrics that are required by Windows and OS/2.\n */\nvar TtfOS2Table = /** @class */ (function () {\n function TtfOS2Table() {\n }\n return TtfOS2Table;\n}());\nexport { TtfOS2Table };\n","/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nvar TtfPostTable = /** @class */ (function () {\n function TtfPostTable() {\n }\n return TtfPostTable;\n}());\nexport { TtfPostTable };\n","/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nvar TtfLongHorMetric = /** @class */ (function () {\n function TtfLongHorMetric() {\n }\n return TtfLongHorMetric;\n}());\nexport { TtfLongHorMetric };\n","/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfCmapSubTable = /** @class */ (function () {\n function TtfCmapSubTable() {\n }\n return TtfCmapSubTable;\n}());\nexport { TtfCmapSubTable };\n","/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nvar TtfCmapTable = /** @class */ (function () {\n function TtfCmapTable() {\n }\n return TtfCmapTable;\n}());\nexport { TtfCmapTable };\n","/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nvar TtfGlyphInfo = /** @class */ (function () {\n function TtfGlyphInfo() {\n }\n Object.defineProperty(TtfGlyphInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this TtfGlyphInfo is empty.\n */\n get: function () {\n var empty = (this.index === this.width && this.width === this.charCode && this.charCode === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n //IComparable implementation\n /**\n * Compares two WidthDescriptor objects.\n */\n TtfGlyphInfo.prototype.compareTo = function (obj) {\n var glyph = obj;\n return this.index - glyph.index;\n };\n return TtfGlyphInfo;\n}());\nexport { TtfGlyphInfo };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfLocaTable = /** @class */ (function () {\n function TtfLocaTable() {\n }\n return TtfLocaTable;\n}());\nexport { TtfLocaTable };\n","/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfAppleCmapSubTable = /** @class */ (function () {\n function TtfAppleCmapSubTable() {\n }\n return TtfAppleCmapSubTable;\n}());\nexport { TtfAppleCmapSubTable };\n","/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfMicrosoftCmapSubTable = /** @class */ (function () {\n function TtfMicrosoftCmapSubTable() {\n }\n return TtfMicrosoftCmapSubTable;\n}());\nexport { TtfMicrosoftCmapSubTable };\n","/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfTrimmedCmapSubTable = /** @class */ (function () {\n function TtfTrimmedCmapSubTable() {\n }\n return TtfTrimmedCmapSubTable;\n}());\nexport { TtfTrimmedCmapSubTable };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfGlyphHeader = /** @class */ (function () {\n function TtfGlyphHeader() {\n }\n return TtfGlyphHeader;\n}());\nexport { TtfGlyphHeader };\n","/**\n * Writes data in BigEndian order.\n */\nvar BigEndianWriter = /** @class */ (function () {\n //Constructors\n /**\n * Creates a new writer.\n */\n function BigEndianWriter(capacity) {\n //Constants\n /**\n * Size of Int32 type.\n */\n this.int32Size = 4;\n /**\n * Size of Int16 type.\n */\n this.int16Size = 2;\n /**\n * Size of long type.\n */\n this.int64Size = 8;\n this.bufferLength = capacity;\n this.buffer = [];\n }\n Object.defineProperty(BigEndianWriter.prototype, \"data\", {\n //Properties\n /**\n * Gets data written to the writer.\n */\n get: function () {\n if (this.buffer.length < this.bufferLength) {\n var length_1 = this.bufferLength - this.buffer.length;\n for (var i = 0; i < length_1; i++) {\n this.buffer.push(0);\n }\n }\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BigEndianWriter.prototype, \"position\", {\n /// \n /// Gets position of the internal buffer.\n /// \n get: function () {\n if (this.internalPosition === undefined || this.internalPosition === null) {\n this.internalPosition = 0;\n }\n return this.internalPosition;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes short value.\n */\n BigEndianWriter.prototype.writeShort = function (value) {\n var bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes int value.\n */\n BigEndianWriter.prototype.writeInt = function (value) {\n var i1 = (value & 0xff000000) >> 24;\n i1 = i1 < 0 ? 256 + i1 : i1;\n var i2 = (value & 0x00ff0000) >> 16;\n i2 = i2 < 0 ? 256 + i2 : i2;\n var i3 = (value & 0x0000ff00) >> 8;\n i3 = i3 < 0 ? 256 + i3 : i3;\n var i4 = value & 0x000000ff;\n i4 = i4 < 0 ? 256 + i4 : i4;\n var bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes u int value.\n */\n BigEndianWriter.prototype.writeUInt = function (value) {\n var buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(buff);\n };\n /**\n * Writes string value.\n */\n BigEndianWriter.prototype.writeString = function (value) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var bytes = [];\n for (var i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this.flush(bytes);\n };\n /**\n * Writes byte[] value.\n */\n BigEndianWriter.prototype.writeBytes = function (value) {\n this.flush(value);\n };\n // //Implementation\n BigEndianWriter.prototype.flush = function (buff) {\n if (buff === null) {\n throw new Error('Argument Null Exception : buff');\n }\n var position = this.position;\n for (var i = 0; i < buff.length; i++) {\n this.buffer[position] = buff[i];\n position++;\n }\n this.internalPosition += buff.length;\n };\n return BigEndianWriter;\n}());\nexport { BigEndianWriter };\n","/**\n * TtfReader.ts class for EJ2-PDF\n */\nimport { TtfTableInfo } from './ttf-table-info';\nimport { Dictionary } from './../../collections/dictionary';\nimport { TtfNameTable } from './ttf-name-table';\nimport { TtfNameRecord } from './ttf-name-record';\nimport { TtfHeadTable } from './ttf-head-table';\nimport { TtfMetrics } from './ttf-metrics';\nimport { TtfHorizontalHeaderTable } from './ttf-horizontal-header-table';\nimport { TtfOS2Table } from './ttf-OS2-Table';\nimport { TtfPostTable } from './ttf-post-table';\nimport { TtfLongHorMetric } from './ttf-long-hor-metric';\nimport { TtfCmapSubTable } from './ttf-cmap-sub-table';\nimport { TtfCmapTable } from './ttf-cmap-table';\nimport { TtfGlyphInfo } from './ttf-glyph-info';\nimport { TtfLocaTable } from './ttf-loca-table';\nimport { TtfAppleCmapSubTable } from './ttf-apple-cmap-sub-table';\nimport { TtfMicrosoftCmapSubTable } from './ttf-microsoft-cmap-sub-table';\nimport { TtfTrimmedCmapSubTable } from './ttf-trimmed-cmap-sub-table';\nimport { TtfGlyphHeader } from './ttf-glyph-header';\nimport { Rectangle } from './../../drawing/pdf-drawing';\nimport { StringTokenizer } from './string-tokenizer';\nimport { TtfCmapFormat, TtfCmapEncoding, TtfPlatformID } from './enum';\nimport { TtfMicrosoftEncodingID, TtfMacintoshEncodingID, TtfCompositeGlyphFlags } from './enum';\nimport { BigEndianWriter } from './../../input-output/big-endian-writer';\nvar TtfReader = /** @class */ (function () {\n //Constructors\n function TtfReader(fontData) {\n this.int32Size = 4;\n this.isTtcFont = false;\n this.isMacTtf = false;\n this.metricsName = '';\n this.isMacTTF = false;\n this.missedGlyphs = 0;\n this.tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this.entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this.fontData = fontData;\n this.initialize();\n }\n Object.defineProperty(TtfReader.prototype, \"macintosh\", {\n //Properties\n /**\n * Gets glyphs for Macintosh or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.macintoshDictionary === null || this.macintoshDictionary === undefined) {\n this.macintoshDictionary = new Dictionary();\n }\n return this.macintoshDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoft\", {\n /**\n * Gets glyphs for Microsoft or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.microsoftDictionary === null || this.microsoftDictionary === undefined) {\n this.microsoftDictionary = new Dictionary();\n }\n return this.microsoftDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"macintoshGlyphs\", {\n /**\n * Gets glyphs for Macintosh or Symbol fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMacintoshGlyphs === null || this.internalMacintoshGlyphs === undefined) {\n this.internalMacintoshGlyphs = new Dictionary();\n }\n return this.internalMacintoshGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoftGlyphs\", {\n /**\n * Gets glyphs for Microsoft Unicode fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMicrosoftGlyphs === null || this.internalMicrosoftGlyphs === undefined) {\n this.internalMicrosoftGlyphs = new Dictionary();\n }\n return this.internalMicrosoftGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n TtfReader.prototype.initialize = function () {\n if (this.metrics === undefined) {\n this.metrics = new TtfMetrics();\n }\n this.readFontDictionary();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.initializeFontName(nameTable);\n this.metrics.macStyle = headTable.macStyle;\n };\n TtfReader.prototype.readFontDictionary = function () {\n this.offset = 0;\n var version = this.checkPreambula();\n //this.offset += 4;\n var numTables = this.readInt16(this.offset);\n var searchRange = this.readInt16(this.offset);\n var entrySelector = this.readInt16(this.offset);\n var rangeShift = this.readInt16(this.offset);\n if (this.tableDirectory === undefined) {\n this.tableDirectory = new Dictionary();\n }\n for (var i = 0; i < numTables; ++i) {\n var table = new TtfTableInfo();\n var tableKey = this.readString(this.int32Size);\n table.checksum = this.readInt32(this.offset);\n table.offset = this.readInt32(this.offset);\n table.length = this.readInt32(this.offset);\n this.tableDirectory.setValue(tableKey, table);\n }\n this.lowestPosition = this.offset;\n if (!this.isTtcFont) {\n this.fixOffsets();\n }\n };\n TtfReader.prototype.fixOffsets = function () {\n var minOffset = Number.MAX_VALUE;\n // Search for a smallest offset and compare it with the lowest position found.\n var tableKeys = this.tableDirectory.keys();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n var offset = value.offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this.lowestPosition) {\n break;\n }\n }\n }\n var shift = minOffset - this.lowestPosition;\n if (shift !== 0) {\n var table = new Dictionary();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n value.offset -= shift;\n table.setValue(tableKeys[i], value);\n }\n this.tableDirectory = table;\n }\n };\n TtfReader.prototype.checkPreambula = function () {\n var version = this.readInt32(this.offset);\n this.isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this.isTtcFont = true;\n this.offset = 0;\n var fontTag = this.readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n //skip 4\n this.offset += 4;\n var ttcIdentificationNumber = this.readInt32(this.offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this.offset = this.readInt32(this.offset);\n version = this.readInt32(this.offset);\n }\n return version;\n };\n TtfReader.prototype.readNameTable = function () {\n var tableInfo = this.getTable('name');\n this.offset = tableInfo.offset;\n var table = new TtfNameTable();\n table.formatSelector = this.readUInt16(this.offset);\n table.recordsCount = this.readUInt16(this.offset);\n table.offset = this.readUInt16(this.offset);\n table.nameRecords = [];\n var recordSize = 12;\n var position = this.offset;\n for (var i = 0; i < table.recordsCount; i++) {\n this.offset = position;\n var record = new TtfNameRecord();\n record.platformID = this.readUInt16(this.offset);\n record.encodingID = this.readUInt16(this.offset);\n record.languageID = this.readUInt16(this.offset);\n record.nameID = this.readUInt16(this.offset);\n record.length = this.readUInt16(this.offset);\n record.offset = this.readUInt16(this.offset);\n this.offset = tableInfo.offset + table.offset + record.offset;\n var unicode = (record.platformID === 0 || record.platformID === 3);\n record.name = this.readString(record.length, unicode);\n table.nameRecords[i] = record;\n position += recordSize;\n }\n return table;\n };\n TtfReader.prototype.readHeadTable = function () {\n var tableInfo = this.getTable('head');\n this.offset = tableInfo.offset;\n var table = new TtfHeadTable();\n table.version = this.readFixed(this.offset);\n table.fontRevision = this.readFixed(this.offset);\n table.checkSumAdjustment = this.readUInt32(this.offset);\n table.magicNumber = this.readUInt32(this.offset);\n table.flags = this.readUInt16(this.offset);\n table.unitsPerEm = this.readUInt16(this.offset);\n table.created = this.readInt64(this.offset);\n table.modified = this.readInt64(this.offset);\n table.xMin = this.readInt16(this.offset);\n table.yMin = this.readInt16(this.offset);\n table.xMax = this.readInt16(this.offset);\n table.yMax = this.readInt16(this.offset);\n table.macStyle = this.readUInt16(this.offset);\n table.lowestReadableSize = this.readUInt16(this.offset);\n table.fontDirectionHint = this.readInt16(this.offset);\n table.indexToLocalFormat = this.readInt16(this.offset);\n table.glyphDataFormat = this.readInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readHorizontalHeaderTable = function () {\n var tableInfo = this.getTable('hhea');\n this.offset = tableInfo.offset;\n var table = new TtfHorizontalHeaderTable();\n table.version = this.readFixed(this.offset);\n table.ascender = this.readInt16(this.offset);\n table.descender = this.readInt16(this.offset);\n table.lineGap = this.readInt16(this.offset);\n table.advanceWidthMax = this.readUInt16(this.offset);\n table.minLeftSideBearing = this.readInt16(this.offset);\n table.minRightSideBearing = this.readInt16(this.offset);\n table.xMaxExtent = this.readInt16(this.offset);\n table.caretSlopeRise = this.readInt16(this.offset);\n table.caretSlopeRun = this.readInt16(this.offset);\n //skip 2 * 5\n this.offset += 10;\n table.metricDataFormat = this.readInt16(this.offset);\n table.numberOfHMetrics = this.readUInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readOS2Table = function () {\n var tableInfo = this.getTable('OS/2');\n this.offset = tableInfo.offset;\n var table = new TtfOS2Table();\n table.version = this.readUInt16(this.offset);\n table.xAvgCharWidth = this.readInt16(this.offset);\n table.usWeightClass = this.readUInt16(this.offset);\n table.usWidthClass = this.readUInt16(this.offset);\n table.fsType = this.readInt16(this.offset);\n table.ySubscriptXSize = this.readInt16(this.offset);\n table.ySubscriptYSize = this.readInt16(this.offset);\n table.ySubscriptXOffset = this.readInt16(this.offset);\n table.ySubscriptYOffset = this.readInt16(this.offset);\n table.ySuperscriptXSize = this.readInt16(this.offset);\n table.ySuperscriptYSize = this.readInt16(this.offset);\n table.ySuperscriptXOffset = this.readInt16(this.offset);\n table.ySuperscriptYOffset = this.readInt16(this.offset);\n table.yStrikeoutSize = this.readInt16(this.offset);\n table.yStrikeoutPosition = this.readInt16(this.offset);\n table.sFamilyClass = this.readInt16(this.offset);\n table.panose = this.readBytes(10);\n table.ulUnicodeRange1 = this.readUInt32(this.offset);\n table.ulUnicodeRange2 = this.readUInt32(this.offset);\n table.ulUnicodeRange3 = this.readUInt32(this.offset);\n table.ulUnicodeRange4 = this.readUInt32(this.offset);\n table.vendorIdentifier = this.readBytes(4);\n table.fsSelection = this.readUInt16(this.offset);\n table.usFirstCharIndex = this.readUInt16(this.offset);\n table.usLastCharIndex = this.readUInt16(this.offset);\n table.sTypoAscender = this.readInt16(this.offset);\n table.sTypoDescender = this.readInt16(this.offset);\n table.sTypoLineGap = this.readInt16(this.offset);\n table.usWinAscent = this.readUInt16(this.offset);\n table.usWinDescent = this.readUInt16(this.offset);\n table.ulCodePageRange1 = this.readUInt32(this.offset);\n table.ulCodePageRange2 = this.readUInt32(this.offset);\n if (table.version > 1) {\n table.sxHeight = this.readInt16(this.offset);\n table.sCapHeight = this.readInt16(this.offset);\n table.usDefaultChar = this.readUInt16(this.offset);\n table.usBreakChar = this.readUInt16(this.offset);\n table.usMaxContext = this.readUInt16(this.offset);\n }\n else {\n table.sxHeight = 0;\n table.sCapHeight = 0;\n table.usDefaultChar = 0;\n table.usBreakChar = 0;\n table.usMaxContext = 0;\n }\n return table;\n };\n TtfReader.prototype.readPostTable = function () {\n var tableInfo = this.getTable('post');\n this.offset = tableInfo.offset;\n var table = new TtfPostTable();\n table.formatType = this.readFixed(this.offset);\n table.italicAngle = this.readFixed(this.offset);\n table.underlinePosition = this.readInt16(this.offset);\n table.underlineThickness = this.readInt16(this.offset);\n table.isFixedPitch = this.readUInt32(this.offset);\n table.minType42 = this.readUInt32(this.offset);\n table.maxType42 = this.readUInt32(this.offset);\n table.minType1 = this.readUInt32(this.offset);\n table.maxType1 = this.readUInt32(this.offset);\n return table;\n };\n /**\n * Reads Width of the glyphs.\n */\n TtfReader.prototype.readWidthTable = function (glyphCount, unitsPerEm) {\n var tableInfo = this.getTable('hmtx');\n this.offset = tableInfo.offset;\n var width = [];\n for (var i = 0; i < glyphCount; i++) {\n var glyph = new TtfLongHorMetric();\n glyph.advanceWidth = this.readUInt16(this.offset);\n glyph.lsb = this.readInt16(this.offset);\n var glyphWidth = glyph.advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n };\n /**\n * Reads the cmap table.\n */\n TtfReader.prototype.readCmapTable = function () {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset;\n var table = new TtfCmapTable();\n table.version = this.readUInt16(this.offset);\n table.tablesCount = this.readUInt16(this.offset);\n var position = this.offset;\n var subTables = [];\n for (var i = 0; i < table.tablesCount; i++) {\n this.offset = position;\n var subTable = new TtfCmapSubTable();\n subTable.platformID = this.readUInt16(this.offset);\n subTable.encodingID = this.readUInt16(this.offset);\n subTable.offset = this.readUInt32(this.offset);\n position = this.offset;\n this.readCmapSubTable(subTable);\n subTables[i] = subTable;\n }\n return subTables;\n };\n /**\n * Reads the cmap sub table.\n */\n TtfReader.prototype.readCmapSubTable = function (subTable) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var format = this.readUInt16(this.offset);\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n var platform = (encoding === TtfCmapEncoding.Macintosh) ? TtfPlatformID.Macintosh : TtfPlatformID.Microsoft;\n if (encoding !== TtfCmapEncoding.Unknown) {\n switch (format) {\n case TtfCmapFormat.Apple:\n this.readAppleCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Microsoft:\n this.readMicrosoftCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Trimmed:\n this.readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readAppleCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfAppleCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n if (this.maxMacIndex === null || this.maxMacIndex === undefined) {\n this.maxMacIndex = 0;\n }\n for (var i = 0; i < 256; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readByte(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readMicrosoftCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var collection = (encoding === TtfCmapEncoding.Unicode) ? this.microsoft : this.macintosh;\n var table = new TtfMicrosoftCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.segCountX2 = this.readUInt16(this.offset);\n table.searchRange = this.readUInt16(this.offset);\n table.entrySelector = this.readUInt16(this.offset);\n table.rangeShift = this.readUInt16(this.offset);\n var segCount = table.segCountX2 / 2;\n table.endCount = this.readUshortArray(segCount);\n table.reservedPad = this.readUInt16(this.offset);\n table.startCount = this.readUshortArray(segCount);\n table.idDelta = this.readUshortArray(segCount);\n table.idRangeOffset = this.readUshortArray(segCount);\n var length = (table.length / 2 - 8) - (segCount * 4);\n table.glyphID = this.readUshortArray(length);\n // Process glyphIdArray array.\n var codeOffset = 0;\n var index = 0;\n for (var j = 0; j < segCount; j++) {\n for (var k = table.startCount[j]; k <= table.endCount[j] && k !== 65535; k++) {\n if (table.idRangeOffset[j] === 0) {\n codeOffset = (k + table.idDelta[j]) & 65535;\n }\n else {\n index = j + table.idRangeOffset[j] / 2 - segCount + k - table.startCount[j];\n if (index >= table.glyphID.length) {\n continue;\n }\n codeOffset = (table.glyphID[index] + table.idDelta[j]) & 65535;\n }\n var glyph = new TtfGlyphInfo();\n glyph.index = codeOffset;\n glyph.width = this.getWidth(glyph.index);\n var id = (encoding === TtfCmapEncoding.Symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph.charCode = id;\n collection.setValue(id, glyph);\n this.addGlyph(glyph, encoding);\n }\n }\n };\n /**\n * Reads Trimed cmap table.\n */\n TtfReader.prototype.readTrimmedCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfTrimmedCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.firstCode = this.readUInt16(this.offset);\n table.entryCount = this.readUInt16(this.offset);\n for (var i = 0; i < table.entryCount; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readUInt16(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i + table.firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n TtfReader.prototype.initializeFontName = function (nameTable) {\n for (var i = 0; i < nameTable.recordsCount; i++) {\n var record = nameTable.nameRecords[i];\n if (record.nameID === 1) {\n //font family\n this.metrics.fontFamily = record.name;\n }\n else if (record.nameID === 6) {\n //post script name\n this.metrics.postScriptName = record.name;\n }\n /* tslint:disable */\n if (this.metrics.fontFamily !== null && this.metrics.fontFamily !== undefined && this.metrics.postScriptName !== null && this.metrics.postScriptName !== undefined) {\n break;\n }\n /* tslint:disable */\n }\n };\n TtfReader.prototype.getTable = function (name) {\n // if (name === null) {\n // throw new Error('Argument Null Exception : name');\n // }\n var table = new TtfTableInfo();\n var obj;\n if (this.tableDirectory.containsKey(name)) {\n obj = this.tableDirectory.getValue(name);\n }\n if (obj !== null && obj !== undefined) {\n table = obj;\n }\n return table;\n };\n /**\n * Returns width of the glyph.\n */\n TtfReader.prototype.getWidth = function (glyphCode) {\n glyphCode = (glyphCode < this.width.length) ? glyphCode : this.width.length - 1;\n return this.width[glyphCode];\n };\n /**\n * Gets CMAP encoding based on platform ID and encoding ID.\n */\n /* tslint:disable */\n TtfReader.prototype.getCmapEncoding = function (platformID, encodingID) {\n var format = TtfCmapEncoding.Unknown;\n if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Undefined) {\n // When building a symbol font for Windows,\n // the platform ID should be 3 and the encoding ID should be 0.\n format = TtfCmapEncoding.Symbol;\n }\n else if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Unicode) {\n // When building a Unicode font for Windows,\n // the platform ID should be 3 and the encoding ID should be 1.\n format = TtfCmapEncoding.Unicode;\n }\n else if (platformID == TtfPlatformID.Macintosh && encodingID == TtfMacintoshEncodingID.Roman) {\n // When building a font that will be used on the Macintosh,\n // the platform ID should be 1 and the encoding ID should be 0.\n format = TtfCmapEncoding.Macintosh;\n }\n return format;\n };\n /* tslint:enable */\n /**\n * Adds glyph to the collection.\n */\n TtfReader.prototype.addGlyph = function (glyph, encoding) {\n var collection = null;\n switch (encoding) {\n case TtfCmapEncoding.Unicode:\n collection = this.microsoftGlyphs;\n break;\n case TtfCmapEncoding.Macintosh:\n case TtfCmapEncoding.Symbol:\n collection = this.macintoshGlyphs;\n break;\n }\n collection.setValue(glyph.index, glyph);\n };\n /**\n * Initializes metrics.\n */\n /* tslint:disable */\n TtfReader.prototype.initializeMetrics = function (nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n /* tslint:enable */\n // if (cmapTables === null) {\n // throw new Error('ArgumentNullException : cmapTables');\n // }\n this.initializeFontName(nameTable);\n // Get font encoding.\n var bSymbol = false;\n for (var i = 0; i < cmapTables.length; i++) {\n var subTable = cmapTables[i];\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n if (encoding === TtfCmapEncoding.Symbol) {\n bSymbol = true;\n break;\n }\n }\n this.metrics.isSymbol = bSymbol;\n this.metrics.macStyle = headTable.macStyle;\n this.metrics.isFixedPitch = (postTable.isFixedPitch !== 0);\n this.metrics.italicAngle = postTable.italicAngle;\n var factor = 1000 / headTable.unitsPerEm;\n this.metrics.winAscent = os2Table.sTypoAscender * factor;\n this.metrics.macAscent = horizontalHeadTable.ascender * factor;\n //m_metrics.MacAscent = os2Table.UsWinAscent * factor;\n // NOTE: This is stange workaround. The value is good if os2Table.SCapHeight != 0, otherwise it should be properly computed.\n this.metrics.capHeight = (os2Table.sCapHeight !== 0) ? os2Table.sCapHeight : 0.7 * headTable.unitsPerEm * factor;\n this.metrics.winDescent = os2Table.sTypoDescender * factor;\n this.metrics.macDescent = horizontalHeadTable.descender * factor;\n //m_metrics.MacDescent = -os2Table.UsWinDescent * factor;\n this.metrics.leading = (os2Table.sTypoAscender - os2Table.sTypoDescender + os2Table.sTypoLineGap) * factor;\n this.metrics.lineGap = Math.ceil(horizontalHeadTable.lineGap * factor);\n var left = headTable.xMin * factor;\n var top = Math.ceil(this.metrics.macAscent + this.metrics.lineGap);\n var right = headTable.xMax * factor;\n var bottom = this.metrics.macDescent;\n this.metrics.fontBox = new Rectangle(left, top, right, bottom);\n // NOTE: Strange!\n this.metrics.stemV = 80;\n this.metrics.widthTable = this.updateWidth();\n this.metrics.contains = this.tableDirectory.containsKey('CFF');\n this.metrics.subScriptSizeFactor = headTable.unitsPerEm / os2Table.ySubscriptYSize;\n this.metrics.superscriptSizeFactor = headTable.unitsPerEm / os2Table.ySuperscriptYSize;\n };\n /**\n * Updates chars structure which is used in the case of ansi encoding (256 bytes).\n */\n TtfReader.prototype.updateWidth = function () {\n var count = 256;\n var bytes = [];\n if (this.metrics.isSymbol) {\n for (var i = 0; i < count; i++) {\n var glyphInfo = this.getGlyph(String.fromCharCode(i));\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n else {\n var byteToProcess = [];\n var unknown = '?';\n var space = String.fromCharCode(32);\n for (var i = 0; i < count; i++) {\n byteToProcess[0] = i;\n var text = this.getString(byteToProcess, 0, byteToProcess.length);\n var ch = (text.length > 0) ? text[0] : unknown;\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n bytes[i] = glyphInfo.width;\n }\n else {\n glyphInfo = this.getGlyph(space);\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n }\n return bytes;\n };\n /**\n * Returns default glyph.\n */\n TtfReader.prototype.getDefaultGlyph = function () {\n var glyph = this.getGlyph(StringTokenizer.whiteSpace);\n return glyph;\n };\n /**\n * Reads unicode string from byte array.\n */\n TtfReader.prototype.getString = function (byteToProcess, start, length) {\n var result = '';\n for (var index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n };\n /**\n * Reads loca table.\n */\n TtfReader.prototype.readLocaTable = function (bShort) {\n var tableInfo = this.getTable('loca');\n this.offset = tableInfo.offset;\n var table = new TtfLocaTable();\n var buffer = null;\n if (bShort) {\n var len = tableInfo.length / 2;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt16(this.offset) * 2;\n }\n }\n else {\n var len = tableInfo.length / 4;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt32(this.offset);\n }\n }\n table.offsets = buffer;\n return table;\n };\n /**\n * Updates hash table of used glyphs.\n */\n TtfReader.prototype.updateGlyphChars = function (glyphChars, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Add zero key.\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n var clone = new Dictionary();\n var glyphCharKeys = glyphChars.keys();\n for (var i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[i], glyphChars.getValue(glyphCharKeys[i]));\n }\n for (var i = 0; i < glyphCharKeys.length; i++) {\n var nextKey = glyphCharKeys[i];\n this.processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n };\n /**\n * Checks if glyph is composite or not.\n */\n TtfReader.prototype.processCompositeGlyph = function (glyphChars, glyph, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Is in range.\n if (glyph < locaTable.offsets.length - 1) {\n var glyphOffset = locaTable.offsets[glyph];\n if (glyphOffset !== locaTable.offsets[glyph + 1]) {\n var tableInfo = this.getTable('glyf');\n this.offset = tableInfo.offset + glyphOffset;\n var glyphHeader = new TtfGlyphHeader();\n glyphHeader.numberOfContours = this.readInt16(this.offset);\n glyphHeader.xMin = this.readInt16(this.offset);\n glyphHeader.yMin = this.readInt16(this.offset);\n glyphHeader.xMax = this.readInt16(this.offset);\n glyphHeader.yMax = this.readInt16(this.offset);\n // Glyph is composite.\n if (glyphHeader.numberOfContours < 0) {\n var skipBytes = 0;\n var entry = true;\n while (entry) {\n var flags = this.readUInt16(this.offset);\n var glyphIndex = this.readUInt16(this.offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & TtfCompositeGlyphFlags.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & TtfCompositeGlyphFlags.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & TtfCompositeGlyphFlags.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this.offset += skipBytes;\n }\n }\n }\n }\n };\n /**\n * Creates new glyph tables based on chars that are used for output.\n */\n /* tslint:disable */\n TtfReader.prototype.generateGlyphTable = function (glyphChars, locaTable, newLocaTable, newGlyphTable) {\n /* tslint:enable */\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n newLocaTable = [];\n // Sorting used glyphs keys.\n var activeGlyphs = glyphChars.keys();\n activeGlyphs.sort(function (a, b) { return a - b; });\n var glyphSize = 0;\n for (var i = 0; i < activeGlyphs.length; i++) {\n var glyphIndex = activeGlyphs[i];\n if (locaTable.offsets.length > 0) {\n glyphSize += locaTable.offsets[glyphIndex + 1] - locaTable.offsets[glyphIndex];\n }\n }\n var glyphSizeAligned = this.align(glyphSize);\n newGlyphTable = [];\n for (var i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n var nextGlyphOffset = 0;\n var nextGlyphIndex = 0;\n var table = this.getTable('glyf');\n // Creating NewLocaTable - that would hold offsets for filtered glyphs.\n for (var i = 0; i < locaTable.offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[nextGlyphIndex] === i) {\n ++nextGlyphIndex;\n newLocaTable[i] = nextGlyphOffset;\n var oldGlyphOffset = locaTable.offsets[i];\n var oldNextGlyphOffset = locaTable.offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this.offset = table.offset + oldGlyphOffset;\n var result = this.read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n };\n /**\n * Updates new Loca table.\n */\n /* tslint:disable */\n TtfReader.prototype.updateLocaTable = function (newLocaTable, bLocaIsShort, newLocaTableOut) {\n /* tslint:enable */\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTable');\n }\n var size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n var count = this.align(size);\n //BigEndianWiter\n var writer = new BigEndianWriter(count);\n for (var i = 0; i < newLocaTable.length; i++) {\n var value = newLocaTable[i];\n if (bLocaIsShort) {\n value /= 2;\n writer.writeShort(value);\n }\n else {\n writer.writeInt(value);\n }\n }\n return { newLocaUpdated: writer.data, newLocaSize: size };\n };\n /**\n * Aligns number to be divisible on 4.\n */\n TtfReader.prototype.align = function (value) {\n return (value + 3) & (~3);\n };\n /**\n * Returns font program data.\n */\n /* tslint:disable */\n TtfReader.prototype.getFontProgram = function (newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var result = this.getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n var fontProgramLength = result.fontProgramLength;\n var numTables = result.numTables;\n var writer = new BigEndianWriter(fontProgramLength);\n writer.writeInt(0x10000);\n writer.writeShort(numTables);\n var entrySelector = this.entrySelectors[numTables];\n writer.writeShort((1 << (entrySelector & 31)) * 16);\n writer.writeShort(entrySelector);\n writer.writeShort((numTables - (1 << (entrySelector & 31))) * 16);\n // Writing to destination buffer - checksums && sizes of used tables.\n this.writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n // // Writing to destination buffer - used glyphs.\n this.writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer.data;\n };\n /* tslint:disable */\n TtfReader.prototype.getFontProgramLength = function (newLocaTableOut, newGlyphTable, numTables) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n // glyf and loca are used by default;\n numTables = 2;\n var tableNames = this.tableNames;\n var fontProgramLength = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n var table = this.getTable(tableName);\n if (!table.empty) {\n ++numTables;\n fontProgramLength += this.align(table.length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n var usedTablesSize = numTables * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n return { fontProgramLength: fontProgramLength, numTables: numTables };\n };\n /**\n * Writing to destination buffer - checksums and sizes of used tables.\n */\n /* tslint:disable */\n TtfReader.prototype.writeCheckSums = function (writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var usedTablesSize = numTables * 16 + (3 * 4);\n var nextTableSize = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n writer.writeString(tableName);\n if (tableName === 'glyf') {\n var checksum = this.calculateCheckSum(newGlyphTable);\n writer.writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n var checksum = this.calculateCheckSum(newLocaTableOut);\n writer.writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer.writeInt(tableInfo.checksum);\n nextTableSize = tableInfo.length;\n }\n writer.writeUInt(usedTablesSize);\n writer.writeUInt(nextTableSize);\n usedTablesSize += this.align(nextTableSize);\n }\n };\n /**\n * Gets checksum from source buffer.\n */\n TtfReader.prototype.calculateCheckSum = function (bytes) {\n if (bytes === null) {\n throw new Error('Argument Null Exception : bytes');\n }\n var pos = 0;\n var byte1 = 0;\n var byte2 = 0;\n var byte3 = 0;\n var byte4 = 0;\n for (var i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n var result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n return result;\n };\n /**\n * Writing to destination buffer - used glyphs.\n */\n TtfReader.prototype.writeGlyphs = function (writer, newLocaTable, newGlyphTable) {\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer.writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer.writeBytes(newLocaTable);\n }\n else {\n var count = this.align(tableInfo.length);\n var buff = [];\n for (var i_1 = 0; i_1 < count; i_1++) {\n buff.push(0);\n }\n this.offset = tableInfo.offset;\n var result = this.read(buff, 0, tableInfo.length);\n writer.writeBytes(result.buffer);\n }\n }\n };\n //public methods\n /**\n * Sets position value of font data.\n */\n TtfReader.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Creates font Internals\n * @private\n */\n TtfReader.prototype.createInternals = function () {\n this.metrics = new TtfMetrics();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.bIsLocaShort = (headTable.indexToLocalFormat === 0);\n var horizontalHeadTable = this.readHorizontalHeaderTable();\n var os2Table = this.readOS2Table();\n var postTable = this.readPostTable();\n this.width = this.readWidthTable(horizontalHeadTable.numberOfHMetrics, headTable.unitsPerEm);\n var subTables = this.readCmapTable();\n this.initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n };\n TtfReader.prototype.getGlyph = function (charCode) {\n if (typeof charCode === 'number') {\n var obj1 = null;\n if (!this.metrics.isSymbol && this.microsoftGlyphs != null) {\n if (this.microsoftGlyphs.containsKey(charCode)) {\n obj1 = this.microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this.metrics.isSymbol && this.macintoshGlyphs != null) {\n if (this.macintoshGlyphs.containsKey(charCode)) {\n obj1 = this.macintoshGlyphs.getValue(charCode);\n }\n }\n var glyph = (obj1 != null) ? obj1 : this.getDefaultGlyph();\n return glyph;\n }\n else {\n var obj = null;\n var code = charCode.charCodeAt(0);\n if (!this.metrics.isSymbol && this.microsoft !== null) {\n if (this.microsoft.containsKey(code)) {\n obj = this.microsoft.getValue(code);\n if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = true;\n }\n }\n else if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = false;\n }\n }\n else if (this.metrics.isSymbol && this.macintosh !== null || this.isMacTTF) {\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n if (this.maxMacIndex !== 0) {\n code %= this.maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this.isFontPresent = true;\n }\n }\n // Fix for StackOverFlow exception in XPS to PDF converter\n if (charCode === StringTokenizer.whiteSpace && obj === null) {\n obj = new TtfGlyphInfo();\n }\n var glyph = (obj !== null) ? obj : this.getDefaultGlyph();\n return glyph;\n }\n };\n /**\n * Gets hash table with chars indexed by glyph index.\n */\n TtfReader.prototype.getGlyphChars = function (chars) {\n if (chars === null || chars === undefined) {\n throw new Error('Argument Null Exception : chars');\n }\n var dictionary = new Dictionary();\n var charKeys = chars.keys();\n for (var i = 0; i < charKeys.length; i++) {\n var ch = charKeys[i];\n var glyph = this.getGlyph(ch);\n if (!glyph.empty) {\n dictionary.setValue(glyph.index, ch.charCodeAt(0));\n }\n }\n return dictionary;\n };\n /**\n * Gets all glyphs.\n */\n TtfReader.prototype.getAllGlyphs = function () {\n var allGlyphInfo = [];\n var info = new TtfGlyphInfo();\n var index = 0;\n for (var i = 0; i < this.width.length; i++) {\n var width = this.width[i];\n info.index = index;\n info.width = width;\n allGlyphInfo.push(info);\n index++;\n }\n return allGlyphInfo;\n };\n /**\n * Reads a font's program.\n * @private\n */\n TtfReader.prototype.readFontProgram = function (chars) {\n var glyphChars = this.getGlyphChars(chars);\n var locaTable = this.readLocaTable(this.bIsLocaShort);\n if (glyphChars.size() < chars.size()) {\n this.missedGlyphs = chars.size() - glyphChars.size();\n }\n this.updateGlyphChars(glyphChars, locaTable);\n /* tslint:disable */\n var result1 = this.generateGlyphTable(glyphChars, locaTable, null, null);\n /* tslint:enable */\n var glyphTableSize = result1.glyphTableSize;\n var newLocaTable = result1.newLocaTable;\n var newGlyphTable = result1.newGlyphTable;\n var result2 = this.updateLocaTable(newLocaTable, this.bIsLocaShort, null);\n var newLocaSize = result2.newLocaSize;\n var newLocaUpdated = result2.newLocaUpdated;\n var fontProgram = this.getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n };\n /**\n * Reconverts string to be in proper format saved into PDF file.\n */\n TtfReader.prototype.convertString = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n var glyph = '';\n var i = 0;\n for (var k = 0; k < text.length; k++) {\n var ch = text[k];\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n glyph += String.fromCharCode(glyphInfo.index);\n i++;\n }\n }\n return glyph;\n };\n /**\n * Gets char width.\n */\n TtfReader.prototype.getCharWidth = function (code) {\n var glyphInfo = this.getGlyph(code);\n glyphInfo = (!glyphInfo.empty) ? glyphInfo : this.getDefaultGlyph();\n var codeWidth = (!glyphInfo.empty) ? glyphInfo.width : 0;\n return codeWidth;\n };\n TtfReader.prototype.readString = function (length, isUnicode) {\n if (isUnicode === undefined) {\n return this.readString(length, false);\n }\n else {\n //let buffer : number[] = this.readBytes(length);\n var result = '';\n if (isUnicode) {\n for (var i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this.fontData[this.offset]);\n }\n this.offset += 1;\n }\n }\n else {\n for (var i = 0; i < length; i++) {\n result += String.fromCharCode(this.fontData[this.offset]);\n this.offset += 1;\n }\n }\n return result;\n }\n };\n TtfReader.prototype.readFixed = function (offset) {\n var integer = this.readInt16(offset);\n var sFraction = this.readInt16(offset + 2);\n var fraction = sFraction / 16384;\n return integer + fraction;\n };\n TtfReader.prototype.readInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n };\n TtfReader.prototype.readUInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n };\n // private readInt16(offset : number) : number {\n // let result : number = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n // this.offset += 2;\n // return result;\n // }\n TtfReader.prototype.readInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this.offset += 2;\n return result;\n };\n TtfReader.prototype.readInt64 = function (offset) {\n var low = this.readInt32(offset + 4);\n var n = this.readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n };\n TtfReader.prototype.readUInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) | this.fontData[offset + 1];\n this.offset += 2;\n return result;\n };\n /**\n * Reads ushort array.\n */\n TtfReader.prototype.readUshortArray = function (length) {\n var buffer = [];\n for (var i = 0; i < length; i++) {\n buffer[i] = this.readUInt16(this.offset);\n }\n return buffer;\n };\n TtfReader.prototype.readBytes = function (length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(this.fontData[this.offset]);\n this.offset += 1;\n }\n return result;\n };\n TtfReader.prototype.readByte = function (offset) {\n var result = this.fontData[offset];\n this.offset += 1;\n return result;\n };\n /**\n * Reads bytes to array in BigEndian order.\n * @private\n */\n TtfReader.prototype.read = function (buffer, index, count) {\n if (buffer === null) {\n throw new Error('Argument Null Exception : buffer');\n }\n var written = 0;\n var read = 0;\n do {\n for (var i = 0; (i < count - written) && (this.offset + i < this.fontData.length); i++) {\n buffer[index + i] = this.fontData[this.offset + i];\n }\n read = count - written;\n this.offset += read;\n written += read;\n } while (written < count);\n return { buffer: buffer, written: written };\n };\n return TtfReader;\n}());\nexport { TtfReader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFont } from './pdf-font';\nimport { PdfSubSuperScript } from './enum';\nimport { PdfArray } from './../../primitives/pdf-array';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar PdfFontMetrics = /** @class */ (function () {\n function PdfFontMetrics() {\n /**\n * `Line gap`.\n * @private\n */\n this.lineGap = 0;\n }\n // Public methods\n /**\n * Returns `ascent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getAscent = function (format) {\n var returnValue = this.ascent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `descent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getDescent = function (format) {\n var returnValue = this.descent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `Line gap` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getLineGap = function (format) {\n var returnValue = this.lineGap * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `height` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getHeight = function (format) {\n var height;\n var clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n var clearTypeFontCollection = [];\n for (var index = 0; index < clearTypeFonts.length; index++) {\n var font = clearTypeFonts[index];\n clearTypeFontCollection.push(font);\n }\n if (this.getDescent(format) < 0) {\n // if ((clearTypeFontCollection.indexOf(this.name.toLowerCase()) !== -1) && !this.isUnicodeFont) {\n // height = (this.GetAscent(format) - this.GetDescent(format) - this.GetLineGap(format));\n // } else {\n height = (this.getAscent(format) - this.getDescent(format) + this.getLineGap(format));\n // }\n }\n else {\n height = (this.getAscent(format) + this.getDescent(format) + this.getLineGap(format));\n }\n return height;\n };\n /**\n * Calculates `size` of the font depending on the subscript/superscript value.\n * @private\n */\n PdfFontMetrics.prototype.getSize = function (format) {\n var size = this.size;\n if (format != null) {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.SubScript:\n size /= this.subScriptSizeFactor;\n break;\n case PdfSubSuperScript.SuperScript:\n size /= this.superscriptSizeFactor;\n break;\n }\n }\n return size;\n };\n /**\n * `Clones` the metrics.\n * @private\n */\n PdfFontMetrics.prototype.clone = function () {\n var metrics = this;\n metrics.widthTable = WidthTable.clone();\n return metrics;\n };\n Object.defineProperty(PdfFontMetrics.prototype, \"widthTable\", {\n // Properies\n /**\n * Gets or sets the `width table`.\n * @private\n */\n get: function () {\n return this.internalWidthTable;\n },\n set: function (value) {\n this.internalWidthTable = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFontMetrics;\n}());\nexport { PdfFontMetrics };\nvar WidthTable = /** @class */ (function () {\n function WidthTable() {\n }\n /**\n * Static `clones` this instance of the WidthTable class.\n * @private\n */\n WidthTable.clone = function () {\n return null;\n };\n return WidthTable;\n}());\nexport { WidthTable };\nvar StandardWidthTable = /** @class */ (function (_super) {\n __extends(StandardWidthTable, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StandardWidthTable` class.\n * @private\n */\n function StandardWidthTable(widths) {\n var _this = _super.call(this) || this;\n if (widths == null) {\n throw new Error('ArgumentNullException:widths');\n }\n _this.widths = widths;\n return _this;\n }\n //Properties\n /**\n * Gets the `32 bit number` at the specified index.\n * @private\n */\n StandardWidthTable.prototype.items = function (index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('ArgumentOutOfRangeException:index, The character is not supported by the font.');\n }\n var result = this.widths[index];\n return result;\n };\n Object.defineProperty(StandardWidthTable.prototype, \"length\", {\n /**\n * Gets the `length` of the internal array.\n * @private\n */\n get: function () {\n return this.widths.length;\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * `Clones` this instance of the WidthTable class.\n * @private\n */\n StandardWidthTable.prototype.clone = function () {\n var swt = this;\n swt.widths = this.widths;\n return swt;\n };\n /**\n * Converts width table to a `PDF array`.\n * @private\n */\n StandardWidthTable.prototype.toArray = function () {\n var arr = new PdfArray(this.widths);\n return arr;\n };\n return StandardWidthTable;\n}(WidthTable));\nexport { StandardWidthTable };\n","/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nimport { ByteArray } from './../../graphics/images/index';\nimport { TtfReader } from './ttf-reader';\nimport { PdfDictionary, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler } from './../../primitives/pdf-dictionary';\nimport { SaveFontProgramEventHandler, SaveCmapEventHandler } from './../../primitives/pdf-stream';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfString } from './../../primitives/pdf-string';\nimport { PdfReferenceHolder } from './../../primitives/pdf-reference';\nimport { PdfFontMetrics } from './pdf-font-metrics';\nimport { StandardWidthTable } from './pdf-font-metrics';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { Dictionary } from './../../collections/dictionary';\nimport { FontDescriptorFlags } from './enum';\nimport { RectangleF } from './../../drawing/pdf-drawing';\nimport { Operators } from './../../input-output/pdf-operators';\nvar UnicodeTrueTypeFont = /** @class */ (function () {\n /* tslint:enable */\n //Constructors\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n function UnicodeTrueTypeFont(base64String, size) {\n // Fields\n this.nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Indicates whether the font program is compressed or not.\n * @private\n */\n this.isCompress = false;\n /**\n * Indicates whether the font is embedded or not.\n */\n this.isEmbedFont = false;\n /**\n * Cmap table's start prefix.\n */\n /* tslint:disable */\n this.cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + Operators.newLine + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange' + Operators.newLine;\n /* tslint:enable */\n /**\n * Cmap table's start suffix.\n */\n this.cmapEndCodespaceRange = 'endcodespacerange' + Operators.newLine;\n /**\n * Cmap's begin range marker.\n */\n this.cmapBeginRange = 'beginbfrange' + Operators.newLine;\n /**\n * Cmap's end range marker.\n */\n this.cmapEndRange = 'endbfrange' + Operators.newLine;\n /**\n * Cmap table's end\n */\n /* tslint:disable */\n this.cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + Operators.newLine;\n if (base64String === null || base64String === undefined) {\n throw new Error('ArgumentNullException:base64String');\n }\n this.fontSize = size;\n this.fontString = base64String;\n this.Initialize();\n }\n //Implementation\n /**\n * Returns width of the char symbol.\n */\n UnicodeTrueTypeFont.prototype.getCharWidth = function (charCode) {\n var codeWidth = this.ttfReader.getCharWidth(charCode);\n return codeWidth;\n };\n /**\n * Returns width of the text line.\n */\n UnicodeTrueTypeFont.prototype.getLineWidth = function (line) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n var width = 0;\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidth(ch);\n width += charWidth;\n }\n return width;\n };\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n UnicodeTrueTypeFont.prototype.Initialize = function () {\n var byteArray = new ByteArray(this.fontString.length);\n byteArray.writeFromBase64String(this.fontString);\n this.fontData = byteArray.internalBuffer;\n this.ttfReader = new TtfReader(this.fontData);\n this.ttfMetrics = this.ttfReader.metrics;\n };\n UnicodeTrueTypeFont.prototype.createInternals = function () {\n this.fontDictionary = new PdfDictionary();\n this.fontProgram = new PdfStream();\n this.cmap = new PdfStream();\n this.descendantFont = new PdfDictionary();\n this.metrics = new PdfFontMetrics();\n this.ttfReader.createInternals();\n this.ttfMetrics = this.ttfReader.metrics;\n this.initializeMetrics();\n // Create all the dictionaries of the font.\n this.subsetName = this.getFontName();\n this.createDescendantFont();\n this.createCmap();\n this.createFontDictionary();\n this.createFontProgram();\n };\n UnicodeTrueTypeFont.prototype.getInternals = function () {\n return this.fontDictionary;\n };\n /**\n * Initializes metrics.\n */\n UnicodeTrueTypeFont.prototype.initializeMetrics = function () {\n var ttfMetrics = this.ttfReader.metrics;\n this.metrics.ascent = ttfMetrics.macAscent;\n this.metrics.descent = ttfMetrics.macDescent;\n this.metrics.height = ttfMetrics.macAscent - ttfMetrics.macDescent + ttfMetrics.lineGap;\n this.metrics.name = ttfMetrics.fontFamily;\n this.metrics.postScriptName = ttfMetrics.postScriptName;\n this.metrics.size = this.fontSize;\n this.metrics.widthTable = new StandardWidthTable(ttfMetrics.widthTable);\n this.metrics.lineGap = ttfMetrics.lineGap;\n this.metrics.subScriptSizeFactor = ttfMetrics.subScriptSizeFactor;\n this.metrics.superscriptSizeFactor = ttfMetrics.superscriptSizeFactor;\n this.metrics.isBold = ttfMetrics.isBold;\n };\n /**\n * Gets random string.\n */\n UnicodeTrueTypeFont.prototype.getFontName = function () {\n var builder = '';\n var name;\n // if (this.isEmbed === false) {\n for (var i = 0; i < 6; i++) {\n var index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this.nameString[index];\n }\n builder += '+';\n // }\n builder += this.ttfReader.metrics.postScriptName;\n name = builder.toString();\n // if (name === '') {\n // name = this.ttfReader.metrics.fontFamily;\n // }\n name = this.formatName(name);\n return name;\n };\n /**\n * Generates name of the font.\n */\n UnicodeTrueTypeFont.prototype.formatName = function (fontName) {\n // if (fontName === null) {\n // throw new Error('ArgumentNullException : fontName');\n // }\n // if (fontName === '') {\n // throw new Error('ArgumentOutOfRangeException : fontName, Parameter can not be empty');\n // }\n var ret = fontName.replace('(', '#28');\n ret = ret.replace(')', '#29');\n ret = ret.replace('[', '#5B');\n ret = ret.replace(']', '#5D');\n ret = ret.replace('<', '#3C');\n ret = ret.replace('>', '#3E');\n ret = ret.replace('{', '#7B');\n ret = ret.replace('}', '#7D');\n ret = ret.replace('/', '#2F');\n ret = ret.replace('%', '#25');\n return ret.replace(' ', '#20');\n };\n /**\n * Creates descendant font.\n */\n UnicodeTrueTypeFont.prototype.createDescendantFont = function () {\n // Set property used to clone Font every time\n this.descendantFont.isResource = true;\n this.descendantFont.descendantFontBeginSave = new SaveDescendantFontEventHandler(this);\n this.descendantFont.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.descendantFont.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.cIDFontType2));\n this.descendantFont.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDToGIDMap, new PdfName(this.dictionaryProperties.identity));\n this.descendantFont.items.setValue(this.dictionaryProperties.dw, new PdfNumber(1000));\n this.fontDescriptor = this.createFontDescriptor();\n this.descendantFont.items.setValue(this.dictionaryProperties.fontDescriptor, new PdfReferenceHolder(this.fontDescriptor));\n var systemInfo = this.createSystemInfo();\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDSystemInfo, systemInfo);\n };\n /**\n * Creates font descriptor.\n */\n UnicodeTrueTypeFont.prototype.createFontDescriptor = function () {\n var descriptor = new PdfDictionary();\n var metrics = this.ttfReader.metrics;\n // Set property used to clone Font every time\n descriptor.isResource = true;\n descriptor.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.fontDescriptor));\n descriptor.items.setValue(this.dictionaryProperties.fontName, new PdfName(this.subsetName));\n descriptor.items.setValue(this.dictionaryProperties.flags, new PdfNumber(this.getDescriptorFlags()));\n descriptor.items.setValue(this.dictionaryProperties.fontBBox, PdfArray.fromRectangle(this.getBoundBox()));\n descriptor.items.setValue(this.dictionaryProperties.missingWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.stemV, new PdfNumber(metrics.stemV));\n descriptor.items.setValue(this.dictionaryProperties.italicAngle, new PdfNumber(metrics.italicAngle));\n descriptor.items.setValue(this.dictionaryProperties.capHeight, new PdfNumber(metrics.capHeight));\n descriptor.items.setValue(this.dictionaryProperties.ascent, new PdfNumber(metrics.winAscent));\n descriptor.items.setValue(this.dictionaryProperties.descent, new PdfNumber(metrics.winDescent));\n descriptor.items.setValue(this.dictionaryProperties.leading, new PdfNumber(metrics.leading));\n descriptor.items.setValue(this.dictionaryProperties.avgWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.fontFile2, new PdfReferenceHolder(this.fontProgram));\n descriptor.items.setValue(this.dictionaryProperties.maxWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.xHeight, new PdfNumber(0));\n descriptor.items.setValue(this.dictionaryProperties.stemH, new PdfNumber(0));\n return descriptor;\n };\n /**\n * Generates cmap.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createCmap = function () {\n this.cmap.cmapBeginSave = new SaveCmapEventHandler(this);\n };\n /**\n * Generates font dictionary.\n */\n UnicodeTrueTypeFont.prototype.createFontDictionary = function () {\n // Set property used to clone Font every time\n this.fontDictionary.isResource = true;\n this.fontDictionary.fontDictionaryBeginSave = new SaveFontDictionaryEventHandler(this);\n this.fontDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.fontDictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.fontDictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type0));\n this.fontDictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(this.dictionaryProperties.identityH));\n var descFonts = new PdfArray();\n var reference = new PdfReferenceHolder(this.descendantFont);\n // Set property used to clone Font every time\n descFonts.isFont = true;\n descFonts.add(reference);\n this.fontDictionary.items.setValue(this.dictionaryProperties.descendantFonts, descFonts);\n };\n /**\n * Creates font program.\n */\n UnicodeTrueTypeFont.prototype.createFontProgram = function () {\n this.fontProgram.fontProgramBeginSave = new SaveFontProgramEventHandler(this);\n };\n /**\n * Creates system info dictionary for CID font.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createSystemInfo = function () {\n var systemInfo = new PdfDictionary();\n systemInfo.items.setValue(this.dictionaryProperties.registry, new PdfString('Adobe'));\n systemInfo.items.setValue(this.dictionaryProperties.ordering, new PdfString(this.dictionaryProperties.identity));\n systemInfo.items.setValue(this.dictionaryProperties.supplement, new PdfNumber(0));\n return systemInfo;\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.descendantFontBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var width = this.getDescendantWidth();\n if (width !== null) {\n this.descendantFont.items.setValue(this.dictionaryProperties.w, width);\n }\n }\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.cmapBeginSave = function () {\n this.generateCmap();\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n /* tslint:disable */\n UnicodeTrueTypeFont.prototype.fontDictionaryBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0 && !this.fontDictionary.containsKey(this.dictionaryProperties.toUnicode)) {\n this.fontDictionary.items.setValue(this.dictionaryProperties.toUnicode, new PdfReferenceHolder(this.cmap));\n }\n };\n /* tslint:enable */\n /**\n * Runs before font program stream save.\n */\n UnicodeTrueTypeFont.prototype.fontProgramBeginSave = function () {\n this.isCompress = true;\n this.generateFontProgram();\n };\n /**\n * Gets width description pad array for c i d font.\n */\n UnicodeTrueTypeFont.prototype.getDescendantWidth = function () {\n var array = new PdfArray();\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphInfo = [];\n // if (!this.isEmbedFont) {\n var keys = this.usedChars.keys();\n for (var i = 0; i < keys.length; i++) {\n var chLen = keys[i];\n var glyph = this.ttfReader.getGlyph(chLen);\n if (glyph.empty) {\n continue;\n }\n glyphInfo.push(glyph);\n }\n // } else {\n // glyphInfo = this.ttfReader.getAllGlyphs();\n // }\n glyphInfo.sort(function (a, b) { return a.index - b.index; });\n var firstGlyphIndex = 0;\n var lastGlyphIndex = 0;\n var firstGlyphIndexWasSet = false;\n var widthDetails = new PdfArray();\n // if (!this.isEmbedFont) {\n for (var i = 0; i < glyphInfo.length; i++) {\n var glyph = glyphInfo[i];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph.index;\n lastGlyphIndex = glyph.index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // Add glyph index / width.\n array.add(new PdfNumber(firstGlyphIndex));\n if (i !== 0) {\n array.add(widthDetails);\n }\n firstGlyphIndex = glyph.index;\n widthDetails = new PdfArray();\n }\n widthDetails.add(new PdfNumber(glyph.width));\n if (i + 1 === glyphInfo.length) {\n array.add(new PdfNumber(firstGlyphIndex));\n array.add(widthDetails);\n }\n lastGlyphIndex = glyph.index;\n }\n // } else {\n // for (let i : number = 0; i < glyphInfo.length; i++) {\n // let glyph : TtfGlyphInfo = glyphInfo[i];\n // if (!firstGlyphIndexWasSet) {\n // firstGlyphIndexWasSet = true;\n // lastGlyphIndex = glyph.index - 1;\n // }\n // firstGlyphIndex = glyph.index;\n // if ((lastGlyphIndex + 1 === glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // // Add glyph index / width.\n // widthDetails.add(new PdfNumber(glyph.width));\n // array.add(new PdfNumber(firstGlyphIndex));\n // array.add(widthDetails);\n // widthDetails = new PdfArray();\n // }\n // lastGlyphIndex = glyph.index;\n // }\n // }\n }\n return array;\n };\n /**\n * Creates cmap.\n */\n UnicodeTrueTypeFont.prototype.generateCmap = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphChars = this.ttfReader.getGlyphChars(this.usedChars);\n if (glyphChars.size() > 0) {\n var keys = glyphChars.keys().sort();\n // add first and last glyph indexes\n var first = keys[0];\n var last = keys[keys.length - 1];\n var middlePart = this.toHexString(first, false) + this.toHexString(last, false) + Operators.newLine;\n var builder = '';\n builder += this.cmapPrefix;\n builder += middlePart;\n builder += this.cmapEndCodespaceRange;\n var nextRange = 0;\n for (var i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this.cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += Operators.whiteSpace;\n builder += this.cmapBeginRange;\n }\n nextRange -= 1;\n var key = keys[i];\n /* tslint:disable */\n builder += this.toHexString(key, true) + this.toHexString(key, true) + this.toHexString(glyphChars.getValue(key), true) + '\\n';\n /* tslint:enable */\n }\n builder += this.cmapSuffix;\n this.cmap.clearStream();\n this.cmap.isResource = true;\n this.cmap.write(builder);\n }\n }\n };\n /**\n * Generates font program.\n */\n UnicodeTrueTypeFont.prototype.generateFontProgram = function () {\n var fontProgram = null;\n this.usedChars = (this.usedChars === null || this.usedChars === undefined) ? new Dictionary() : this.usedChars;\n this.ttfReader.setOffset(0);\n fontProgram = this.ttfReader.readFontProgram(this.usedChars);\n this.fontProgram.clearStream();\n this.fontProgram.isResource = true;\n this.fontProgram.writeBytes(fontProgram);\n };\n /**\n * Calculates flags for the font descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getDescriptorFlags = function () {\n var flags = 0;\n var metrics = this.ttfReader.metrics;\n if (metrics.isFixedPitch) {\n flags |= FontDescriptorFlags.FixedPitch;\n }\n if (metrics.isSymbol) {\n flags |= FontDescriptorFlags.Symbolic;\n }\n else {\n flags |= FontDescriptorFlags.Nonsymbolic;\n }\n if (metrics.isItalic) {\n flags |= FontDescriptorFlags.Italic;\n }\n if (metrics.isBold) {\n flags |= FontDescriptorFlags.ForceBold;\n }\n return flags;\n };\n /**\n * Calculates BoundBox of the descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getBoundBox = function () {\n var rect = this.ttfReader.metrics.fontBox;\n var width = Math.abs(rect.right - rect.left);\n var height = Math.abs(rect.top - rect.bottom);\n var rectangle = new RectangleF(rect.left, rect.bottom, width, height);\n return rectangle;\n };\n /**\n * Converts integer of decimal system to hex integer.\n */\n UnicodeTrueTypeFont.prototype.toHexString = function (n, isCaseChange) {\n var s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n };\n /**\n * Stores used symbols.\n */\n UnicodeTrueTypeFont.prototype.setSymbols = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n if (this.usedChars === null || this.usedChars === undefined) {\n this.usedChars = new Dictionary();\n }\n for (var i = 0; i < text.length; i++) {\n var ch = text[i];\n this.usedChars.setValue(ch, String.fromCharCode(0));\n }\n // else {\n // if (text === null) {\n // throw new Error('Argument Null Exception : glyphs');\n // }\n // if (this.usedChars === null || this.usedChars === undefined) {\n // this.usedChars = new Dictionary();\n // }\n // for (let i : number = 0; i < text.length; i++) {\n // let glyphIndex : number = text[i];\n // let glyph : TtfGlyphInfo = this.ttfReader.getGlyph(glyphIndex);\n // if (!glyph == null) {\n // let c : string = glyph.charCode.toLocaleString();\n // this.usedChars.setValue(c, String.fromCharCode(0));\n // }\n // }\n // }\n if (this.isEmbedFont === false) {\n this.getDescendantWidth();\n }\n };\n return UnicodeTrueTypeFont;\n}());\nexport { UnicodeTrueTypeFont };\n","/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\nvar ArabicShapeRenderer = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function ArabicShapeRenderer() {\n //#region Constants\n this.arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'],\n ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'],\n ['\\u0625', '\\uFE87', '\\uFE88'],\n ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'],\n ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'],\n ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'],\n ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'],\n ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'],\n ['\\u062F', '\\uFEA9', '\\uFEAA'],\n ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'],\n ['\\u0632', '\\uFEAF', '\\uFEB0'],\n ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'],\n ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'],\n ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'],\n ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'],\n ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'],\n ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'],\n ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'],\n ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'],\n ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'],\n ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'],\n ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'],\n ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'],\n ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'],\n ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'],\n ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'],\n ['\\u0688', '\\uFB88', '\\uFB89'],\n ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'],\n ['\\u068E', '\\uFB86', '\\uFB87'],\n ['\\u0691', '\\uFB8C', '\\uFB8D'],\n ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'],\n ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'],\n ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'],\n ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'],\n ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'],\n ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'],\n ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'],\n ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'],\n ['\\u06C7', '\\uFBD7', '\\uFBD8'],\n ['\\u06C8', '\\uFBDB', '\\uFBDC'],\n ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'],\n ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'],\n ['\\u06D2', '\\uFBAE', '\\uFBAF'],\n ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this.alef = '\\u0627';\n this.alefHamza = '\\u0623';\n this.alefHamzaBelow = '\\u0625';\n this.alefMadda = '\\u0622';\n this.lam = '\\u0644';\n this.hamza = '\\u0621';\n this.zeroWidthJoiner = '\\u200D';\n this.hamzaAbove = '\\u0654';\n this.hamzaBelow = '\\u0655';\n this.wawHamza = '\\u0624';\n this.yehHamza = '\\u0626';\n this.waw = '\\u0648';\n this.alefMaksura = '\\u0649';\n this.yeh = '\\u064A';\n this.farsiYeh = '\\u06CC';\n this.shadda = '\\u0651';\n this.madda = '\\u0653';\n this.lwa = '\\uFEFB';\n this.lwawh = '\\uFEF7';\n this.lwawhb = '\\uFEF9';\n this.lwawm = '\\uFEF5';\n this.bwhb = '\\u06D3';\n this.fathatan = '\\u064B';\n this.superScriptalef = '\\u0670';\n this.vowel = 0x1;\n // #endregion\n //#region Fields\n this.arabicMapTable = new Dictionary();\n for (var i = 0; i < this.arabicCharTable.length; i++) {\n this.arabicMapTable.setValue(this.arabicCharTable[i][0], this.arabicCharTable[i]);\n }\n }\n //#endregion\n //#region implementation\n ArabicShapeRenderer.prototype.getCharacterShape = function (input, index) {\n if ((input >= this.hamza) && (input <= this.bwhb)) {\n var value = [];\n if (this.arabicMapTable.getValue(input)) {\n value = this.arabicMapTable.getValue(input);\n return value[index + 1];\n }\n }\n else if (input >= this.lwawm && input <= this.lwa) {\n return (input);\n }\n return input;\n };\n ArabicShapeRenderer.prototype.shape = function (text, level) {\n var builder = '';\n var str2 = '';\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c >= '؀' && c <= 'ۿ') {\n //if(c>= 0x0600.toString() && c<= 0x06FF.toString()) {\n str2 = str2 + c;\n }\n else {\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n str2 = '';\n }\n builder = builder + c;\n }\n }\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n }\n return builder.toString();\n };\n ArabicShapeRenderer.prototype.doShape = function (input, level) {\n var str = '';\n var ligature = 0;\n var len = 0;\n var i = 0;\n var next = '';\n var previous = new ArabicShape();\n var present = new ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this.ligature(next, present);\n if (ligature === 0) {\n var shapeCount = this.getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous.Shapes > 2) {\n len += 1;\n }\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n previous = present;\n present = new ArabicShape();\n present.Value = next;\n present.Shapes = shapeCount;\n present.Ligature++;\n }\n }\n len = (previous.Shapes > 2) ? 1 : 0;\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n str = this.append(str, present, level);\n return str.toString();\n };\n ArabicShapeRenderer.prototype.append = function (builder, shape, level) {\n if (shape.Value !== '') {\n builder = builder + shape.Value;\n shape.Ligature -= 1;\n if (shape.Type !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.Type;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n if (shape.vowel !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.vowel;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n }\n return builder;\n };\n ArabicShapeRenderer.prototype.ligature = function (value, shape) {\n if (shape.Value !== '') {\n var result = 0;\n if ((value >= this.fathatan && value <= this.hamzaBelow) || value === this.superScriptalef) {\n result = 1;\n if ((shape.vowel !== '') && (value !== this.shadda)) {\n result = 2;\n }\n if (value === this.shadda) {\n if (shape.Type == null) {\n shape.Type = this.shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this.hamzaBelow) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamzaBelow;\n result = 2;\n }\n else if (value === this.lwa) {\n shape.Value = this.lwawhb;\n result = 2;\n }\n else {\n shape.Type = this.hamzaBelow;\n }\n }\n else if (value === this.hamzaAbove) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamza;\n result = 2;\n }\n else if (shape.Value === this.lwa) {\n shape.Value = this.lwawh;\n result = 2;\n }\n else if (shape.Value === this.waw) {\n shape.Value = this.wawHamza;\n result = 2;\n }\n else if (shape.Value === this.yeh || shape.Value === this.alefMaksura || shape.Value === this.farsiYeh) {\n shape.Value = this.yehHamza;\n result = 2;\n }\n else {\n shape.Type = this.hamzaAbove;\n }\n }\n else if (value === this.madda) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefMadda;\n result = 2;\n }\n }\n else {\n shape.vowel = value;\n }\n if (result === 1) {\n shape.Ligature++;\n }\n return result;\n }\n if (shape.vowel !== '') {\n return 0;\n }\n if (shape.Value === this.lam) {\n if (value === this.alef) {\n shape.Value = this.lwa;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamza) {\n shape.Value = this.lwawh;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamzaBelow) {\n shape.Value = this.lwawhb;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefMadda) {\n shape.Value = this.lwawm;\n shape.Shapes = 2;\n result = 3;\n }\n }\n // else if (shape.Value === '') {\n // shape.Value = value;\n // shape.Shapes = this.getShapeCount(value);\n // result = 1;\n // }\n return result;\n }\n else {\n return 0;\n }\n };\n ArabicShapeRenderer.prototype.getShapeCount = function (shape) {\n if ((shape >= this.hamza) && (shape <= this.bwhb) && !((shape >= this.fathatan && shape <= this.hamzaBelow)\n || shape === this.superScriptalef)) {\n var c = [];\n if (this.arabicMapTable.getValue(shape)) {\n c = this.arabicMapTable.getValue(shape);\n return c.length - 1;\n }\n }\n else if (shape === this.zeroWidthJoiner) {\n return 4;\n }\n return 1;\n };\n return ArabicShapeRenderer;\n}());\nexport { ArabicShapeRenderer };\n//#endregion\n//#region Internals\nvar ArabicShape = /** @class */ (function () {\n function ArabicShape() {\n //#region Fields\n this.shapeValue = '';\n this.shapeType = '';\n this.shapeVowel = '';\n this.shapeLigature = 0;\n this.shapeShapes = 1;\n //#endregion\n }\n Object.defineProperty(ArabicShape.prototype, \"Value\", {\n //#endregion\n //#region Properties \n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeValue;\n },\n set: function (value) {\n this.shapeValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Type\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeType;\n },\n set: function (value) {\n this.shapeType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"vowel\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeVowel;\n },\n set: function (value) {\n this.shapeVowel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Ligature\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeLigature;\n },\n set: function (value) {\n this.shapeLigature = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Shapes\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeShapes;\n },\n set: function (value) {\n this.shapeShapes = value;\n },\n enumerable: true,\n configurable: true\n });\n return ArabicShape;\n}());\nexport { ArabicShape };\n//#endregion\n","/**\n * Bidi.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar Bidi = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function Bidi() {\n //#region Fields\n this.indexes = [];\n this.indexLevels = [];\n this.mirroringShapeCharacters = new Dictionary();\n this.update();\n }\n //#endregion\n //#region implementation\n Bidi.prototype.doMirrorShaping = function (text) {\n var result = [];\n for (var i = 0; i < text.length; i++) {\n if (((this.indexLevels[i] & 1) === 1) && this.mirroringShapeCharacters.containsKey(text[i].charCodeAt(0))) {\n result[i] = String.fromCharCode(this.mirroringShapeCharacters.getValue(text[i].charCodeAt(0)));\n }\n else {\n result[i] = text[i].toString();\n }\n }\n var res = '';\n for (var j = 0; j < result.length; j++) {\n res = res + result[j];\n }\n return res;\n };\n Bidi.prototype.getLogicalToVisualString = function (inputText, isRtl) {\n var rtlCharacters = new RtlCharacters();\n this.indexLevels = rtlCharacters.getVisualOrder(inputText, isRtl);\n this.setDefaultIndexLevel();\n this.doOrder(0, this.indexLevels.length - 1);\n var text = this.doMirrorShaping(inputText);\n //let text : string = inputText;\n var resultBuilder = '';\n for (var i = 0; i < this.indexes.length; i++) {\n var index = this.indexes[i];\n resultBuilder += text[index];\n }\n return resultBuilder.toString();\n };\n Bidi.prototype.setDefaultIndexLevel = function () {\n for (var i = 0; i < this.indexLevels.length; i++) {\n this.indexes[i] = i;\n }\n };\n Bidi.prototype.doOrder = function (sIndex, eIndex) {\n var max = this.indexLevels[sIndex];\n var min = max;\n var odd = max;\n var even = max;\n for (var i = sIndex + 1; i <= eIndex; ++i) {\n var data = this.indexLevels[i];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this.reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n var pstart = sIndex;\n /*tslint:disable:no-constant-condition */\n while (true) {\n while (pstart <= eIndex) {\n if (this.indexLevels[pstart] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n var pend = pstart + 1;\n while (pend <= eIndex) {\n if (this.indexLevels[pend] < max) {\n break;\n }\n pend += 1;\n }\n this.reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n };\n Bidi.prototype.reArrange = function (i, j) {\n var length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n var temp = this.indexes[i];\n this.indexes[i] = this.indexes[j];\n this.indexes[j] = temp;\n }\n };\n Bidi.prototype.update = function () {\n this.mirroringShapeCharacters.setValue(40, 41);\n this.mirroringShapeCharacters.setValue(41, 40);\n this.mirroringShapeCharacters.setValue(60, 62);\n this.mirroringShapeCharacters.setValue(62, 60);\n this.mirroringShapeCharacters.setValue(91, 93);\n this.mirroringShapeCharacters.setValue(93, 91);\n this.mirroringShapeCharacters.setValue(123, 125);\n this.mirroringShapeCharacters.setValue(125, 123);\n this.mirroringShapeCharacters.setValue(171, 187);\n this.mirroringShapeCharacters.setValue(187, 171);\n this.mirroringShapeCharacters.setValue(8249, 8250);\n this.mirroringShapeCharacters.setValue(8250, 8249);\n this.mirroringShapeCharacters.setValue(8261, 8262);\n this.mirroringShapeCharacters.setValue(8262, 8261);\n this.mirroringShapeCharacters.setValue(8317, 8318);\n this.mirroringShapeCharacters.setValue(8318, 8317);\n this.mirroringShapeCharacters.setValue(8333, 8334);\n this.mirroringShapeCharacters.setValue(8334, 8333);\n this.mirroringShapeCharacters.setValue(8712, 8715);\n this.mirroringShapeCharacters.setValue(8713, 8716);\n this.mirroringShapeCharacters.setValue(8714, 8717);\n this.mirroringShapeCharacters.setValue(8715, 8712);\n this.mirroringShapeCharacters.setValue(8716, 8713);\n this.mirroringShapeCharacters.setValue(8717, 8714);\n this.mirroringShapeCharacters.setValue(8725, 10741);\n this.mirroringShapeCharacters.setValue(8764, 8765);\n this.mirroringShapeCharacters.setValue(8765, 8764);\n this.mirroringShapeCharacters.setValue(8771, 8909);\n this.mirroringShapeCharacters.setValue(8786, 8787);\n this.mirroringShapeCharacters.setValue(8787, 8786);\n this.mirroringShapeCharacters.setValue(8788, 8789);\n this.mirroringShapeCharacters.setValue(8789, 8788);\n this.mirroringShapeCharacters.setValue(8804, 8805);\n this.mirroringShapeCharacters.setValue(8805, 8804);\n this.mirroringShapeCharacters.setValue(8806, 8807);\n this.mirroringShapeCharacters.setValue(8807, 8806);\n this.mirroringShapeCharacters.setValue(8808, 8809);\n this.mirroringShapeCharacters.setValue(8809, 8808);\n this.mirroringShapeCharacters.setValue(8810, 8811);\n this.mirroringShapeCharacters.setValue(8811, 8810);\n this.mirroringShapeCharacters.setValue(8814, 8815);\n this.mirroringShapeCharacters.setValue(8815, 8814);\n this.mirroringShapeCharacters.setValue(8816, 8817);\n this.mirroringShapeCharacters.setValue(8817, 8816);\n this.mirroringShapeCharacters.setValue(8818, 8819);\n this.mirroringShapeCharacters.setValue(8819, 8818);\n this.mirroringShapeCharacters.setValue(8820, 8821);\n this.mirroringShapeCharacters.setValue(8821, 8820);\n this.mirroringShapeCharacters.setValue(8822, 8823);\n this.mirroringShapeCharacters.setValue(8823, 8822);\n this.mirroringShapeCharacters.setValue(8824, 8825);\n this.mirroringShapeCharacters.setValue(8825, 8824);\n this.mirroringShapeCharacters.setValue(8826, 8827);\n this.mirroringShapeCharacters.setValue(8827, 8826);\n this.mirroringShapeCharacters.setValue(8828, 8829);\n this.mirroringShapeCharacters.setValue(8829, 8828);\n this.mirroringShapeCharacters.setValue(8830, 8831);\n this.mirroringShapeCharacters.setValue(8831, 8830);\n this.mirroringShapeCharacters.setValue(8832, 8833);\n this.mirroringShapeCharacters.setValue(8833, 8832);\n this.mirroringShapeCharacters.setValue(8834, 8835);\n this.mirroringShapeCharacters.setValue(8835, 8834);\n this.mirroringShapeCharacters.setValue(8836, 8837);\n this.mirroringShapeCharacters.setValue(8837, 8836);\n this.mirroringShapeCharacters.setValue(8838, 8839);\n this.mirroringShapeCharacters.setValue(8839, 8838);\n this.mirroringShapeCharacters.setValue(8840, 8841);\n this.mirroringShapeCharacters.setValue(8841, 8840);\n this.mirroringShapeCharacters.setValue(8842, 8843);\n this.mirroringShapeCharacters.setValue(8843, 8842);\n this.mirroringShapeCharacters.setValue(8847, 8848);\n this.mirroringShapeCharacters.setValue(8848, 8847);\n this.mirroringShapeCharacters.setValue(8849, 8850);\n this.mirroringShapeCharacters.setValue(8850, 8849);\n this.mirroringShapeCharacters.setValue(8856, 10680);\n this.mirroringShapeCharacters.setValue(8866, 8867);\n this.mirroringShapeCharacters.setValue(8867, 8866);\n this.mirroringShapeCharacters.setValue(8870, 10974);\n this.mirroringShapeCharacters.setValue(8872, 10980);\n this.mirroringShapeCharacters.setValue(8873, 10979);\n this.mirroringShapeCharacters.setValue(8875, 10981);\n this.mirroringShapeCharacters.setValue(8880, 8881);\n this.mirroringShapeCharacters.setValue(8881, 8880);\n this.mirroringShapeCharacters.setValue(8882, 8883);\n this.mirroringShapeCharacters.setValue(8883, 8882);\n this.mirroringShapeCharacters.setValue(8884, 8885);\n this.mirroringShapeCharacters.setValue(8885, 8884);\n /*tslint:disable:max-func-body-length */\n this.mirroringShapeCharacters.setValue(8886, 8887);\n this.mirroringShapeCharacters.setValue(8887, 8886);\n this.mirroringShapeCharacters.setValue(8905, 8906);\n this.mirroringShapeCharacters.setValue(8906, 8905);\n this.mirroringShapeCharacters.setValue(8907, 8908);\n this.mirroringShapeCharacters.setValue(8908, 8907);\n this.mirroringShapeCharacters.setValue(8909, 8771);\n this.mirroringShapeCharacters.setValue(8912, 8913);\n this.mirroringShapeCharacters.setValue(8913, 8912);\n this.mirroringShapeCharacters.setValue(8918, 8919);\n this.mirroringShapeCharacters.setValue(8919, 8918);\n this.mirroringShapeCharacters.setValue(8920, 8921);\n this.mirroringShapeCharacters.setValue(8921, 8920);\n this.mirroringShapeCharacters.setValue(8922, 8923);\n this.mirroringShapeCharacters.setValue(8923, 8922);\n this.mirroringShapeCharacters.setValue(8924, 8925);\n this.mirroringShapeCharacters.setValue(8925, 8924);\n this.mirroringShapeCharacters.setValue(8926, 8927);\n this.mirroringShapeCharacters.setValue(8927, 8926);\n this.mirroringShapeCharacters.setValue(8928, 8929);\n this.mirroringShapeCharacters.setValue(8929, 8928);\n this.mirroringShapeCharacters.setValue(8930, 8931);\n this.mirroringShapeCharacters.setValue(8931, 8930);\n this.mirroringShapeCharacters.setValue(8932, 8933);\n this.mirroringShapeCharacters.setValue(8933, 8932);\n this.mirroringShapeCharacters.setValue(8934, 8935);\n this.mirroringShapeCharacters.setValue(8935, 8934);\n this.mirroringShapeCharacters.setValue(8936, 8937);\n this.mirroringShapeCharacters.setValue(8937, 8936);\n this.mirroringShapeCharacters.setValue(8938, 8939);\n this.mirroringShapeCharacters.setValue(8939, 8938);\n this.mirroringShapeCharacters.setValue(8940, 8941);\n this.mirroringShapeCharacters.setValue(8941, 8940);\n this.mirroringShapeCharacters.setValue(8944, 8945);\n this.mirroringShapeCharacters.setValue(8945, 8944);\n this.mirroringShapeCharacters.setValue(8946, 8954);\n this.mirroringShapeCharacters.setValue(8947, 8955);\n this.mirroringShapeCharacters.setValue(8948, 8956);\n this.mirroringShapeCharacters.setValue(8950, 8957);\n this.mirroringShapeCharacters.setValue(8951, 8958);\n this.mirroringShapeCharacters.setValue(8954, 8946);\n this.mirroringShapeCharacters.setValue(8955, 8947);\n this.mirroringShapeCharacters.setValue(8956, 8948);\n this.mirroringShapeCharacters.setValue(8957, 8950);\n this.mirroringShapeCharacters.setValue(8958, 8951);\n this.mirroringShapeCharacters.setValue(8968, 8969);\n this.mirroringShapeCharacters.setValue(8969, 8968);\n this.mirroringShapeCharacters.setValue(8970, 8971);\n this.mirroringShapeCharacters.setValue(8971, 8970);\n this.mirroringShapeCharacters.setValue(9001, 9002);\n this.mirroringShapeCharacters.setValue(9002, 9001);\n this.mirroringShapeCharacters.setValue(10088, 10089);\n this.mirroringShapeCharacters.setValue(10089, 10088);\n this.mirroringShapeCharacters.setValue(10090, 10091);\n this.mirroringShapeCharacters.setValue(10091, 10090);\n this.mirroringShapeCharacters.setValue(10092, 10093);\n this.mirroringShapeCharacters.setValue(10093, 10092);\n this.mirroringShapeCharacters.setValue(10094, 10095);\n this.mirroringShapeCharacters.setValue(10095, 10094);\n this.mirroringShapeCharacters.setValue(10096, 10097);\n this.mirroringShapeCharacters.setValue(10097, 10096);\n this.mirroringShapeCharacters.setValue(10098, 10099);\n this.mirroringShapeCharacters.setValue(10099, 10098);\n this.mirroringShapeCharacters.setValue(10100, 10101);\n this.mirroringShapeCharacters.setValue(10101, 10100);\n this.mirroringShapeCharacters.setValue(10197, 10198);\n this.mirroringShapeCharacters.setValue(10198, 10197);\n this.mirroringShapeCharacters.setValue(10205, 10206);\n this.mirroringShapeCharacters.setValue(10206, 10205);\n this.mirroringShapeCharacters.setValue(10210, 10211);\n this.mirroringShapeCharacters.setValue(10211, 10210);\n this.mirroringShapeCharacters.setValue(10212, 10213);\n this.mirroringShapeCharacters.setValue(10213, 10212);\n this.mirroringShapeCharacters.setValue(10214, 10215);\n this.mirroringShapeCharacters.setValue(10215, 10214);\n this.mirroringShapeCharacters.setValue(10216, 10217);\n this.mirroringShapeCharacters.setValue(10217, 10216);\n this.mirroringShapeCharacters.setValue(10218, 10219);\n this.mirroringShapeCharacters.setValue(10219, 10218);\n this.mirroringShapeCharacters.setValue(10627, 10628);\n this.mirroringShapeCharacters.setValue(10628, 10627);\n this.mirroringShapeCharacters.setValue(10629, 10630);\n this.mirroringShapeCharacters.setValue(10630, 10629);\n this.mirroringShapeCharacters.setValue(10631, 10632);\n this.mirroringShapeCharacters.setValue(10632, 10631);\n this.mirroringShapeCharacters.setValue(10633, 10634);\n this.mirroringShapeCharacters.setValue(10634, 10633);\n this.mirroringShapeCharacters.setValue(10635, 10636);\n this.mirroringShapeCharacters.setValue(10636, 10635);\n this.mirroringShapeCharacters.setValue(10637, 10640);\n this.mirroringShapeCharacters.setValue(10638, 10639);\n this.mirroringShapeCharacters.setValue(10639, 10638);\n this.mirroringShapeCharacters.setValue(10640, 10637);\n this.mirroringShapeCharacters.setValue(10641, 10642);\n this.mirroringShapeCharacters.setValue(10642, 10641);\n this.mirroringShapeCharacters.setValue(10643, 10644);\n this.mirroringShapeCharacters.setValue(10644, 10643);\n this.mirroringShapeCharacters.setValue(10645, 10646);\n this.mirroringShapeCharacters.setValue(10646, 10645);\n this.mirroringShapeCharacters.setValue(10647, 10648);\n this.mirroringShapeCharacters.setValue(10648, 10647);\n this.mirroringShapeCharacters.setValue(10680, 8856);\n this.mirroringShapeCharacters.setValue(10688, 10689);\n this.mirroringShapeCharacters.setValue(10689, 10688);\n this.mirroringShapeCharacters.setValue(10692, 10693);\n this.mirroringShapeCharacters.setValue(10693, 10692);\n this.mirroringShapeCharacters.setValue(10703, 10704);\n this.mirroringShapeCharacters.setValue(10704, 10703);\n this.mirroringShapeCharacters.setValue(10705, 10706);\n this.mirroringShapeCharacters.setValue(10706, 10705);\n this.mirroringShapeCharacters.setValue(10708, 10709);\n this.mirroringShapeCharacters.setValue(10709, 10708);\n this.mirroringShapeCharacters.setValue(10712, 10713);\n this.mirroringShapeCharacters.setValue(10713, 10712);\n this.mirroringShapeCharacters.setValue(10714, 10715);\n this.mirroringShapeCharacters.setValue(10715, 10714);\n this.mirroringShapeCharacters.setValue(10741, 8725);\n this.mirroringShapeCharacters.setValue(10744, 10745);\n this.mirroringShapeCharacters.setValue(10745, 10744);\n this.mirroringShapeCharacters.setValue(10748, 10749);\n this.mirroringShapeCharacters.setValue(10749, 10748);\n this.mirroringShapeCharacters.setValue(10795, 10796);\n this.mirroringShapeCharacters.setValue(10796, 10795);\n this.mirroringShapeCharacters.setValue(10797, 10796);\n this.mirroringShapeCharacters.setValue(10798, 10797);\n this.mirroringShapeCharacters.setValue(10804, 10805);\n this.mirroringShapeCharacters.setValue(10805, 10804);\n this.mirroringShapeCharacters.setValue(10812, 10813);\n this.mirroringShapeCharacters.setValue(10813, 10812);\n this.mirroringShapeCharacters.setValue(10852, 10853);\n this.mirroringShapeCharacters.setValue(10853, 10852);\n this.mirroringShapeCharacters.setValue(10873, 10874);\n this.mirroringShapeCharacters.setValue(10874, 10873);\n this.mirroringShapeCharacters.setValue(10877, 10878);\n this.mirroringShapeCharacters.setValue(10878, 10877);\n this.mirroringShapeCharacters.setValue(10879, 10880);\n this.mirroringShapeCharacters.setValue(10880, 10879);\n this.mirroringShapeCharacters.setValue(10881, 10882);\n this.mirroringShapeCharacters.setValue(10882, 10881);\n this.mirroringShapeCharacters.setValue(10883, 10884);\n this.mirroringShapeCharacters.setValue(10884, 10883);\n this.mirroringShapeCharacters.setValue(10891, 10892);\n this.mirroringShapeCharacters.setValue(10892, 10891);\n this.mirroringShapeCharacters.setValue(10897, 10898);\n this.mirroringShapeCharacters.setValue(10898, 10897);\n this.mirroringShapeCharacters.setValue(10899, 10900);\n this.mirroringShapeCharacters.setValue(10900, 10899);\n this.mirroringShapeCharacters.setValue(10901, 10902);\n this.mirroringShapeCharacters.setValue(10902, 10901);\n this.mirroringShapeCharacters.setValue(10903, 10904);\n this.mirroringShapeCharacters.setValue(10904, 10903);\n this.mirroringShapeCharacters.setValue(10905, 10906);\n this.mirroringShapeCharacters.setValue(10906, 10905);\n this.mirroringShapeCharacters.setValue(10907, 10908);\n this.mirroringShapeCharacters.setValue(10908, 10907);\n this.mirroringShapeCharacters.setValue(10913, 10914);\n this.mirroringShapeCharacters.setValue(10914, 10913);\n this.mirroringShapeCharacters.setValue(10918, 10919);\n this.mirroringShapeCharacters.setValue(10919, 10918);\n this.mirroringShapeCharacters.setValue(10920, 10921);\n this.mirroringShapeCharacters.setValue(10921, 10920);\n this.mirroringShapeCharacters.setValue(10922, 10923);\n this.mirroringShapeCharacters.setValue(10923, 10922);\n this.mirroringShapeCharacters.setValue(10924, 10925);\n this.mirroringShapeCharacters.setValue(10925, 10924);\n this.mirroringShapeCharacters.setValue(10927, 10928);\n this.mirroringShapeCharacters.setValue(10928, 10927);\n this.mirroringShapeCharacters.setValue(10931, 10932);\n this.mirroringShapeCharacters.setValue(10932, 10931);\n this.mirroringShapeCharacters.setValue(10939, 10940);\n this.mirroringShapeCharacters.setValue(10940, 10939);\n this.mirroringShapeCharacters.setValue(10941, 10942);\n this.mirroringShapeCharacters.setValue(10942, 10941);\n this.mirroringShapeCharacters.setValue(10943, 10944);\n this.mirroringShapeCharacters.setValue(10944, 10943);\n this.mirroringShapeCharacters.setValue(10945, 10946);\n this.mirroringShapeCharacters.setValue(10946, 10945);\n this.mirroringShapeCharacters.setValue(10947, 10948);\n this.mirroringShapeCharacters.setValue(10948, 10947);\n this.mirroringShapeCharacters.setValue(10949, 10950);\n this.mirroringShapeCharacters.setValue(10950, 10949);\n this.mirroringShapeCharacters.setValue(10957, 10958);\n this.mirroringShapeCharacters.setValue(10958, 10957);\n this.mirroringShapeCharacters.setValue(10959, 10960);\n this.mirroringShapeCharacters.setValue(10960, 10959);\n this.mirroringShapeCharacters.setValue(10961, 10962);\n this.mirroringShapeCharacters.setValue(10962, 10961);\n this.mirroringShapeCharacters.setValue(10963, 10964);\n this.mirroringShapeCharacters.setValue(10964, 10963);\n this.mirroringShapeCharacters.setValue(10965, 10966);\n this.mirroringShapeCharacters.setValue(10966, 10965);\n this.mirroringShapeCharacters.setValue(10974, 8870);\n this.mirroringShapeCharacters.setValue(10979, 8873);\n this.mirroringShapeCharacters.setValue(10980, 8872);\n this.mirroringShapeCharacters.setValue(10981, 8875);\n this.mirroringShapeCharacters.setValue(10988, 10989);\n this.mirroringShapeCharacters.setValue(10989, 10988);\n this.mirroringShapeCharacters.setValue(10999, 11000);\n this.mirroringShapeCharacters.setValue(11000, 10999);\n this.mirroringShapeCharacters.setValue(11001, 11002);\n this.mirroringShapeCharacters.setValue(11002, 11001);\n this.mirroringShapeCharacters.setValue(12296, 12297);\n this.mirroringShapeCharacters.setValue(12297, 12296);\n this.mirroringShapeCharacters.setValue(12298, 12299);\n this.mirroringShapeCharacters.setValue(12299, 12298);\n this.mirroringShapeCharacters.setValue(12300, 12301);\n this.mirroringShapeCharacters.setValue(12301, 12300);\n this.mirroringShapeCharacters.setValue(12302, 12303);\n this.mirroringShapeCharacters.setValue(12303, 12302);\n this.mirroringShapeCharacters.setValue(12304, 12305);\n this.mirroringShapeCharacters.setValue(12305, 12304);\n this.mirroringShapeCharacters.setValue(12308, 12309);\n this.mirroringShapeCharacters.setValue(12309, 12308);\n this.mirroringShapeCharacters.setValue(12310, 12311);\n this.mirroringShapeCharacters.setValue(12311, 12310);\n this.mirroringShapeCharacters.setValue(12312, 12313);\n this.mirroringShapeCharacters.setValue(12313, 12312);\n this.mirroringShapeCharacters.setValue(12314, 12315);\n this.mirroringShapeCharacters.setValue(12315, 12314);\n this.mirroringShapeCharacters.setValue(65288, 65289);\n this.mirroringShapeCharacters.setValue(65289, 65288);\n this.mirroringShapeCharacters.setValue(65308, 65310);\n this.mirroringShapeCharacters.setValue(65310, 65308);\n this.mirroringShapeCharacters.setValue(65339, 65341);\n this.mirroringShapeCharacters.setValue(65341, 65339);\n this.mirroringShapeCharacters.setValue(65371, 65373);\n this.mirroringShapeCharacters.setValue(65373, 65371);\n this.mirroringShapeCharacters.setValue(65375, 65376);\n this.mirroringShapeCharacters.setValue(65376, 65375);\n this.mirroringShapeCharacters.setValue(65378, 65379);\n this.mirroringShapeCharacters.setValue(65379, 65378);\n };\n return Bidi;\n}());\nexport { Bidi };\nvar RtlCharacters = /** @class */ (function () {\n //#endregion\n //#region constructors\n function RtlCharacters() {\n //#region fields\n /// \n /// Specifies the character types.\n /// \n this.types = [];\n /// \n /// Specifies the text order (RTL or LTR).\n /// \n this.textOrder = -1;\n /// \n /// Specifies the RTL character types.\n /// \n /* tslint:disable-next-line:prefer-array-literal */\n this.rtlCharacterTypes = new Array(65536);\n //#endregion\n //#region constants\n /// \n /// Left-to-Right (Non-European or non-Arabic digits).\n /// \n this.L = 0;\n /// \n /// Left-to-Right Embedding\n /// \n this.LRE = 1;\n /// \n /// Left-to-Right Override\n /// \n this.LRO = 2;\n /// \n /// Right-to-Left (Hebrew alphabet, and related punctuation).\n /// \n this.R = 3;\n /// \n /// Right-to-Left Arabic \n /// \n this.AL = 4;\n /// \n /// Right-to-Left Embedding.\n /// \n this.RLE = 5;\n /// \n /// Right-to-Left Override\n /// \n this.RLO = 6;\n /// \n /// Pop Directional Format\n /// \n this.PDF = 7;\n /// \n /// European Number (European digits, Eastern Arabic-Indic digits).\n /// \n this.EN = 8;\n /// \n /// European Number Separator (Plus sign, Minus sign).\n /// \n this.ES = 9;\n /// \n /// European Number Terminator (Degree sign, currency symbols).\n /// \n this.ET = 10;\n /// \n /// Arabic Number (Arabic-Indic digits, Arabic decimal and thousands separators).\n /// \n this.AN = 11;\n /// \n /// Common Number Separator (Colon, Comma, Full Stop, No-Break Space.\n /// \n this.CS = 12;\n /// \n /// Nonspacing Mark (Characters with the General_Category values).\n /// \n this.NSM = 13;\n /// \n /// Boundary Neutral (Default ignorables, non-characters, and control characters, other than those explicitly given other types.)\n /// \n this.BN = 14;\n /// \n /// Paragraph Separator (Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination).\n /// \n this.B = 15;\n /// \n /// \tSegment Separator (tab).\n /// \n this.S = 16;\n /// \n /// Whitespace (Space, Figure space, Line separator, Form feed, General Punctuation spaces).\n /// \n this.WS = 17;\n /// \n /// Other Neutrals (All other characters, including object replacement character).\n /// \n this.ON = 18;\n /// \n /// RTL character types.\n /// \n this.charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.NSM, this.NSM, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34,\n this.ON, 35, 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS,\n 47, 47, this.CS, 48, 57, this.EN, 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L,\n 123, 126, this.ON, 127, 132, this.BN, 133, 133, this.B, 134, 159, this.BN, 160, 160, this.CS,\n 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175, this.ON,\n 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON,\n 185, 185, this.EN, 186, 186, this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON,\n 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698, this.ON, 699, 705, this.L,\n 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON,\n 750, 750, this.L, 751, 767, this.ON, 768, 855, this.NSM, 856, 860, this.L, 861, 879, this.NSM,\n 880, 883, this.L, 884, 885, this.ON, 886, 893, this.L, 894, 894, this.ON, 895, 899, this.L,\n 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014, this.ON,\n 1015, 1154, this.L, 1155, 1158, this.NSM, 1159, 1159, this.L, 1160, 1161, this.NSM,\n 1162, 1417, this.L, 1418, 1418, this.ON, 1419, 1424, this.L, 1425, 1441, this.NSM,\n 1442, 1442, this.L, 1443, 1465, this.NSM, 1466, 1466, this.L, 1467, 1469, this.NSM,\n 1470, 1470, this.R, 1471, 1471, this.NSM, 1472, 1472, this.R, 1473, 1474, this.NSM,\n 1475, 1475, this.R, 1476, 1476, this.NSM, 1477, 1487, this.L, 1488, 1514, this.R,\n 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON,\n 1552, 1557, this.NSM, 1558, 1562, this.L, 1563, 1563, this.AL, 1564, 1566, this.L,\n 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L,\n 1600, 1610, this.AL, 1611, 1624, this.NSM, 1625, 1631, this.L, 1632, 1641, this.AN,\n 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647, this.AL, 1648, 1648, this.NSM,\n 1649, 1749, this.AL, 1750, 1756, this.NSM, 1757, 1757, this.AL, 1758, 1764, this.NSM,\n 1765, 1766, this.AL, 1767, 1768, this.NSM, 1769, 1769, this.ON, 1770, 1773, this.NSM,\n 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805, this.AL, 1806, 1806, this.L,\n 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.NSM, 1810, 1839, this.AL,\n 1840, 1866, this.NSM, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L,\n 1920, 1957, this.AL, 1958, 1968, this.NSM, 1969, 1969, this.AL, 1970, 2304, this.L,\n 2305, 2306, this.NSM, 2307, 2363, this.L, 2364, 2364, this.NSM, 2365, 2368, this.L,\n 2369, 2376, this.NSM, 2377, 2380, this.L, 2381, 2381, this.NSM, 2382, 2384, this.L,\n 2385, 2388, this.NSM, 2389, 2401, this.L, 2402, 2403, this.NSM, 2404, 2432, this.L,\n 2433, 2433, this.NSM, 2434, 2491, this.L, 2492, 2492, this.NSM, 2493, 2496, this.L,\n 2497, 2500, this.NSM, 2501, 2508, this.L, 2509, 2509, this.NSM, 2510, 2529, this.L,\n 2530, 2531, this.NSM, 2532, 2545, this.L, 2546, 2547, this.ET, 2548, 2560, this.L,\n 2561, 2562, this.NSM, 2563, 2619, this.L, 2620, 2620, this.NSM, 2621, 2624, this.L,\n 2625, 2626, this.NSM, 2627, 2630, this.L, 2631, 2632, this.NSM, 2633, 2634, this.L,\n 2635, 2637, this.NSM, 2638, 2671, this.L, 2672, 2673, this.NSM, 2674, 2688, this.L,\n 2689, 2690, this.NSM, 2691, 2747, this.L, 2748, 2748, this.NSM, 2749, 2752, this.L,\n 2753, 2757, this.NSM, 2758, 2758, this.L, 2759, 2760, this.NSM, 2761, 2764, this.L,\n 2765, 2765, this.NSM, 2766, 2785, this.L, 2786, 2787, this.NSM, 2788, 2800, this.L,\n 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.NSM, 2818, 2875, this.L,\n 2876, 2876, this.NSM, 2877, 2878, this.L, 2879, 2879, this.NSM, 2880, 2880, this.L,\n 2881, 2883, this.NSM, 2884, 2892, this.L, 2893, 2893, this.NSM, 2894, 2901, this.L,\n 2902, 2902, this.NSM, 2903, 2945, this.L, 2946, 2946, this.NSM, 2947, 3007, this.L,\n 3008, 3008, this.NSM, 3009, 3020, this.L, 3021, 3021, this.NSM, 3022, 3058, this.L,\n 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066, this.ON, 3067, 3133, this.L,\n 3134, 3136, this.NSM, 3137, 3141, this.L, 3142, 3144, this.NSM, 3145, 3145, this.L,\n 3146, 3149, this.NSM, 3150, 3156, this.L, 3157, 3158, this.NSM, 3159, 3259, this.L,\n 3260, 3260, this.NSM, 3261, 3275, this.L, 3276, 3277, this.NSM, 3278, 3392, this.L,\n 3393, 3395, this.NSM, 3396, 3404, this.L, 3405, 3405, this.NSM, 3406, 3529, this.L,\n 3530, 3530, this.NSM, 3531, 3537, this.L, 3538, 3540, this.NSM, 3541, 3541, this.L,\n 3542, 3542, this.NSM, 3543, 3632, this.L, 3633, 3633, this.NSM, 3634, 3635, this.L,\n 3636, 3642, this.NSM, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L,\n 3655, 3662, this.NSM, 3663, 3760, this.L, 3761, 3761, this.NSM, 3762, 3763, this.L,\n 3764, 3769, this.NSM, 3770, 3770, this.L, 3771, 3772, this.NSM, 3773, 3783, this.L,\n 3784, 3789, this.NSM, 3790, 3863, this.L, 3864, 3865, this.NSM, 3866, 3892, this.L,\n 3893, 3893, this.NSM, 3894, 3894, this.L, 3895, 3895, this.NSM, 3896, 3896, this.L,\n 3897, 3897, this.NSM, 3898, 3901, this.ON, 3902, 3952, this.L, 3953, 3966, this.NSM,\n 3967, 3967, this.L, 3968, 3972, this.NSM, 3973, 3973, this.L, 3974, 3975, this.NSM,\n 3976, 3983, this.L, 3984, 3991, this.NSM, 3992, 3992, this.L, 3993, 4028, this.NSM,\n 4029, 4037, this.L, 4038, 4038, this.NSM, 4039, 4140, this.L, 4141, 4144, this.NSM,\n 4145, 4145, this.L, 4146, 4146, this.NSM, 4147, 4149, this.L, 4150, 4151, this.NSM,\n 4152, 4152, this.L, 4153, 4153, this.NSM, 4154, 4183, this.L, 4184, 4185, this.NSM,\n 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786, this.L, 5787, 5788, this.ON,\n 5789, 5905, this.L, 5906, 5908, this.NSM, 5909, 5937, this.L, 5938, 5940, this.NSM,\n 5941, 5969, this.L, 5970, 5971, this.NSM, 5972, 6001, this.L, 6002, 6003, this.NSM,\n 6004, 6070, this.L, 6071, 6077, this.NSM, 6078, 6085, this.L, 6086, 6086, this.NSM,\n 6087, 6088, this.L, 6089, 6099, this.NSM, 6100, 6106, this.L, 6107, 6107, this.ET,\n 6108, 6108, this.L, 6109, 6109, this.NSM, 6110, 6127, this.L, 6128, 6137, this.ON,\n 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157, this.NSM, 6158, 6158, this.WS,\n 6159, 6312, this.L, 6313, 6313, this.NSM, 6314, 6431, this.L, 6432, 6434, this.NSM,\n 6435, 6438, this.L, 6439, 6443, this.NSM, 6444, 6449, this.L, 6450, 6450, this.NSM,\n 6451, 6456, this.L, 6457, 6459, this.NSM, 6460, 6463, this.L, 6464, 6464, this.ON,\n 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON,\n 6656, 8124, this.L, 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON,\n 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157, 8159, this.ON,\n 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON,\n 8191, 8191, this.L, 8192, 8202, this.WS, 8203, 8205, this.BN, 8206, 8206, this.L,\n 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.LRE, 8235, 8235, this.RLE, 8236, 8236, this.PDF, 8237, 8237, this.LRO,\n 8238, 8238, this.RLO, 8239, 8239, this.WS, 8240, 8244, this.ET, 8245, 8276, this.ON,\n 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS,\n 8288, 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN,\n 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315, this.ET, 8316, 8318, this.ON,\n 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON,\n 8335, 8351, this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.NSM,\n 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L, 8451, 8454, this.ON,\n 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON,\n 8469, 8469, this.L, 8470, 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON,\n 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487, this.ON,\n 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET,\n 8495, 8497, this.L, 8498, 8498, this.ON, 8499, 8505, this.L, 8506, 8507, this.ON,\n 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON,\n 8524, 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON,\n 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082, this.L, 9083, 9108, this.ON,\n 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON,\n 9255, 9279, this.L, 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN,\n 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752, 9752, this.L,\n 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L,\n 9888, 9889, this.ON, 9890, 9984, this.L, 9985, 9988, this.ON, 9989, 9989, this.L,\n 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024, this.L,\n 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L,\n 10063, 10066, this.ON, 10067, 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L,\n 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON, 10133, 10135, this.L,\n 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L,\n 10192, 10219, this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L,\n 11904, 11929, this.ON, 11930, 11930, this.L, 11931, 12019, this.ON, 12020, 12031, this.L,\n 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON,\n 12321, 12329, this.L, 12330, 12335, this.NSM, 12336, 12336, this.ON, 12337, 12341, this.L,\n 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352, 12440, this.L,\n 12441, 12442, this.NSM, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON,\n 12449, 12538, this.L, 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON,\n 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923, this.L, 12924, 12925, this.ON,\n 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON,\n 13008, 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON,\n 13280, 13310, this.L, 13311, 13311, this.ON, 13312, 19903, this.L, 19904, 19967, this.ON,\n 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285, this.R,\n 64286, 64286, this.NSM, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R,\n 64311, 64311, this.L, 64312, 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R,\n 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323, 64324, this.R,\n 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L,\n 64467, 64829, this.AL, 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL,\n 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007, this.L, 65008, 65020, this.AL,\n 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.NSM, 65040, 65055, this.L,\n 65056, 65059, this.NSM, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS,\n 65105, 65105, this.ON, 65106, 65106, this.CS, 65107, 65107, this.L, 65108, 65108, this.ON,\n 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121, this.ON,\n 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON,\n 65129, 65130, this.ET, 65131, 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL,\n 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L, 65279, 65279, this.BN,\n 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON,\n 65291, 65291, this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS,\n 65295, 65295, this.ES, 65296, 65305, this.EN, 65306, 65306, this.CS, 65307, 65312, this.ON,\n 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET,\n 65511, 65511, this.L, 65512, 65518, this.ON, 65519, 65528, this.L, 65529, 65531, this.BN,\n 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (var i = 0; i < this.charTypes.length; ++i) {\n var start = this.charTypes[i];\n var end = this.charTypes[++i];\n var b = this.charTypes[++i];\n while (start <= end) {\n this.rtlCharacterTypes[start++] = b;\n }\n }\n }\n //#endregion\n //#region implementation\n RtlCharacters.prototype.getVisualOrder = function (inputText, isRtl) {\n this.types = this.getCharacterCode(inputText);\n this.textOrder = isRtl ? this.LRE : this.L;\n this.doVisualOrder();\n var result = [];\n for (var i = 0; i < this.levels.length; i++) {\n result[i] = this.levels[i];\n }\n return result;\n };\n RtlCharacters.prototype.getCharacterCode = function (text) {\n var characterCodes = [];\n for (var i = 0; i < text.length; i++) {\n characterCodes[i] = this.rtlCharacterTypes[text[i].charCodeAt(0)];\n }\n return characterCodes;\n };\n RtlCharacters.prototype.setDefaultLevels = function () {\n for (var i = 0; i < this.length; i++) {\n this.levels[i] = this.textOrder;\n }\n };\n RtlCharacters.prototype.setLevels = function () {\n this.setDefaultLevels();\n for (var n = 0; n < this.length; ++n) {\n var level = this.levels[n];\n if ((level & 0x80) !== 0) {\n level &= 0x7f;\n this.result[n] = ((level & 0x1) === 0) ? this.L : this.R;\n }\n this.levels[n] = level;\n }\n };\n RtlCharacters.prototype.updateLevels = function (index, level, length) {\n if ((level & 1) === 0) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.R) {\n this.levels[i] += 1;\n }\n else if (this.result[i] !== this.L) {\n this.levels[i] += 2;\n }\n }\n }\n else {\n for (var i = index; i < length; ++i) {\n if (this.result[i] !== this.R) {\n this.levels[i] += 1;\n }\n }\n }\n };\n RtlCharacters.prototype.doVisualOrder = function () {\n this.length = this.types.length;\n this.result = this.types;\n this.levels = [];\n this.setLevels();\n this.length = this.getEmbeddedCharactersLength();\n var preview = this.textOrder;\n var i = 0;\n while (i < this.length) {\n var level = this.levels[i];\n var preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n var length_1 = i + 1;\n while (length_1 < this.length && this.levels[length_1] === level) {\n ++length_1;\n }\n var success = length_1 < this.length ? this.levels[length_1] : this.textOrder;\n var type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this.checkNSM(i, length_1, level, preType, type);\n this.updateLevels(i, level, length_1);\n preview = level;\n i = length_1;\n }\n this.checkEmbeddedCharacters(this.length);\n };\n RtlCharacters.prototype.getEmbeddedCharactersLength = function () {\n var index = 0;\n for (var i = 0; i < this.length; ++i) {\n if (!(this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN)) {\n this.result[index] = this.result[i];\n this.levels[index] = this.levels[i];\n index++;\n }\n }\n return index;\n };\n RtlCharacters.prototype.checkEmbeddedCharacters = function (length) {\n for (var i = this.types.length - 1; i >= 0; --i) {\n if (this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN) {\n this.result[i] = this.types[i];\n this.levels[i] = -1;\n }\n else {\n length -= 1;\n this.result[i] = this.result[length];\n this.levels[i] = this.levels[length];\n }\n }\n for (var i = 0; i < this.types.length; i++) {\n if (this.levels[i] === -1) {\n if (i === 0) {\n this.levels[i] = this.textOrder;\n }\n else {\n this.levels[i] = this.levels[i - 1];\n }\n }\n }\n };\n RtlCharacters.prototype.checkNSM = function (index, length, level, startType, endType) {\n var charType = startType;\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.NSM) {\n this.result[i] = charType;\n }\n else {\n charType = this.result[i];\n }\n }\n this.checkEuropeanDigits(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanDigits = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R || this.result[j] === this.AL) {\n if (this.result[j] === this.AL) {\n this.result[i] = this.AN;\n }\n break;\n }\n }\n }\n }\n this.checkArabicCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkArabicCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.AL) {\n this.result[i] = this.R;\n }\n }\n this.checkEuropeanNumberSeparator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberSeparator = function (index, length, level, startType, endType) {\n for (var i = index + 1; i < length - 1; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.CS) {\n var preview = this.result[i - 1];\n var success = this.result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this.result[i] = this.EN;\n }\n else if (this.result[i] === this.CS && preview === this.AN && success === this.AN) {\n this.result[i] = this.AN;\n }\n }\n }\n this.checkEuropeanNumberTerminator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberTerminator = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ET) {\n var s = i;\n var b = [];\n b.push(this.ET);\n var l = this.getLength(s, length, b);\n var data = s === index ? startType : this.result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this.result[l];\n }\n if (data === this.EN) {\n for (var j = s; j < l; ++j) {\n this.result[j] = this.EN;\n }\n }\n i = l;\n }\n }\n this.checkOtherNeutrals(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherNeutrals = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.ET || this.result[i] === this.CS) {\n this.result[i] = this.ON;\n }\n }\n this.checkOtherCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n var pst = startType;\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R) {\n pst = this.result[j];\n break;\n }\n }\n if (pst === this.L) {\n this.result[i] = this.L;\n }\n }\n }\n this.checkCommanCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.getLength = function (index, length, validSet) {\n --index;\n while (++index < length) {\n var t = this.result[index];\n for (var i = 0; i < validSet.length; ++i) {\n if (t === validSet[i]) {\n index = this.getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n };\n RtlCharacters.prototype.checkCommanCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.WS || this.result[i] === this.ON || this.result[i] === this.B ||\n this.result[i] === this.S) {\n var s = i;\n var byte = [this.B, this.S, this.WS, this.ON];\n var l = this.getLength(s, length, byte);\n var lt = 0;\n var tt = 0;\n var rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this.result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this.result[l];\n if (tt === this.AN) {\n tt = this.R;\n }\n else if (tt === this.EN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (var j = s; j < l; ++j) {\n this.result[j] = rt;\n }\n i = l;\n }\n }\n };\n return RtlCharacters;\n}());\nexport { RtlCharacters };\n","import { PdfString } from './../../primitives/pdf-string';\nimport { ArabicShapeRenderer } from './rtl/rtl-text-shape';\nimport { PdfTextDirection } from './../enum';\nimport { Bidi } from './rtl/rtl-bidirectional';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar RtlRenderer = /** @class */ (function () {\n function RtlRenderer() {\n //region Constants\n /// Open bracket symbol.\n /// \n this.openBracket = '(';\n /// \n /// Close bracket symbol.\n /// \n this.closeBracket = ')';\n //#endregion\n }\n //#region Constructors\n /// \n /// Initializes a new instance of the class.\n /// \n // public constructor() {\n // }\n //#region Public Methods\n /// \n /// Layouts text. Changes blocks position in the RTL text.\n /// Ligates the text if needed.\n /// \n /// Line of the text.\n /// Font to be used for string printing.\n /// Font alignment.\n /// Indicates whether Word Spacing used or not.\n /// Layout string.\n RtlRenderer.prototype.layout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var result = [];\n if (font.Unicode) {\n result = this.customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n return result;\n };\n /// \n /// Layouts a string and splits it by the words and using correct lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n RtlRenderer.prototype.splitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var words = [];\n var system = false;\n if (!system || words == null) {\n words = this.customSplitLayout(line, font, rtl, wordSpace, format);\n }\n return words;\n };\n //#endregion\n //#region Implementation\n // private isEnglish( word : string) : boolean\n // {\n // let c : string = (word.length > 0) ? word[0] : '';\n // return (c >= '0' && c < 'ÿ');\n // }\n // private keepOrder( words : string, startIndex : number, count: number, result : string[], resultIndex : number) : void\n // {\n // for (let i : number = 0, ri = resultIndex - count + 1; i < count; ++i, ++ri) {\n // result[ri] = words[i + startIndex];\n // }\n // }\n /// \n /// Uses system API to layout the text.\n /// \n /// Line of the text to be layouted.\n /// Font which is used for text printing.\n /// Indicates whether we use RTL or RTL lay outing of the text container.\n /// Layout string.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.getGlyphIndex = function (line, font, rtl, /*out*/ glyphs, custom) {\n var success = true;\n var fail = false;\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n glyphs = null;\n if (line.length === 0) {\n return { success: fail, glyphs: glyphs };\n }\n var renderer = new ArabicShapeRenderer();\n var text = renderer.shape(line, 0);\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n glyphs = new Uint16Array(text.length);\n var i = 0;\n for (var k = 0, len = text.length; k < len; k++) {\n var ch = text[k];\n var glyphInfo = ttfReader.getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo).index;\n }\n }\n return { success: success, glyphs: glyphs };\n };\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customLayout = function (line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var result = null;\n //bidirectional order.\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var bidi = new Bidi();\n result = bidi.getLogicalToVisualString(line, rtl);\n }\n return result;\n }\n else {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var layouted = null;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var renderer = new ArabicShapeRenderer();\n var txt = renderer.shape(line, 0);\n layouted = this.customLayout(txt, rtl, format);\n }\n // else {\n // layouted = this.customLayout(line, rtl, format);\n // }\n // We have unicode font, but from the file. \n var result = [];\n // Split the text by words if word spacing is not default.\n if (wordSpace) {\n var words = layouted.split('');\n var count = words.length;\n for (var i = 0; i < count; i++) {\n words[i] = this.addChars(font, words[i]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this.addChars(font, layouted);\n }\n return result;\n }\n };\n /// \n /// Add information about used glyphs to the font.\n /// \n /// Font used for text rendering.\n /// Array of used glyphs.\n /// String in the form to be written to the file.\n RtlRenderer.prototype.addChars = function (font, glyphs) {\n var line = glyphs;\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var text = line;\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n font.setSymbols(text);\n // Reconvert string according to unicode standard.\n text = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(text, false);\n text = PdfString.byteToString(bytes);\n return text;\n // else {\n // if (font == null) {\n // throw new Error('ArgumentNullException : font');\n // }\n // if (glyphs == null) {\n // throw new Error('ArgumentNullException : glyphs');\n // }\n // // Mark the chars as used.\n // let text : string = '';\n // font.setSymbols(glyphs);\n // // Create string from the glyphs.\n // \n // let chars : string[] = [];\n // for (let i : number = 0; i < glyphs.length; i++) {\n // chars[i] = glyphs[i].toString();\n // }\n // for (let j : number = 0 ; j < chars.length; j++) {\n // text = text + chars[j];\n // }\n // let bytes : number[] = PdfString.toUnicodeArray(text, false);\n // text = PdfString.byteToString(bytes);\n // return text;\n // }\n };\n /// \n /// Layouts a string and splits it by the words by using custom lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customSplitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var reversedLine = this.customLayout(line, rtl, format);\n var words = reversedLine.split('');\n return words;\n };\n return RtlRenderer;\n}());\nexport { RtlRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColorSpace } from './../enum';\nimport { PdfColor } from './../pdf-color';\nimport { PdfBrush } from './pdf-brush';\nimport { PdfDictionary } from '../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from '../../primitives/pdf-name';\nimport { PdfNumber } from '../../primitives/pdf-number';\nimport { PdfReferenceHolder } from '../../primitives/pdf-reference';\n/**\n * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfGradientBrush = /** @class */ (function (_super) {\n __extends(PdfGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfGradientBrush(shading) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the background color.\n * @private\n */\n _this.mbackground = new PdfColor(255, 255, 255);\n /**\n * Local variable to store the stroking color.\n * @private\n */\n _this.mbStroking = false;\n /**\n * Local variable to store the function.\n * @private\n */\n _this.mfunction = null;\n /**\n * Local variable to store the DictionaryProperties.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.mpatternDictionary = new PdfDictionary();\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.type, new PdfName(_this.dictionaryProperties.pattern));\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.patternType, new PdfNumber(2));\n _this.shading = shading;\n _this.colorSpace = PdfColorSpace.Rgb;\n return _this;\n }\n Object.defineProperty(PdfGradientBrush.prototype, \"background\", {\n //Properties\n /**\n * Gets or sets the background color of the brush.\n * @public\n */\n get: function () {\n return this.mbackground;\n },\n set: function (value) {\n this.mbackground = value;\n var sh = this.shading;\n if (value.isEmpty) {\n sh.remove(this.dictionaryProperties.background);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"antiAlias\", {\n /**\n * Gets or sets a value indicating whether use anti aliasing algorithm.\n * @public\n */\n get: function () {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n return aa.value;\n },\n set: function (value) {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa == null && typeof aa === 'undefined')) {\n aa = new PdfBoolean(value);\n sh.items.setValue(this.dictionaryProperties.antiAlias, aa);\n }\n else {\n aa.value = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"function\", {\n /**\n * Gets or sets the function of the brush.\n * @protected\n */\n get: function () {\n return this.mfunction;\n },\n set: function (value) {\n this.mfunction = value;\n if (value != null && typeof value !== 'undefined') {\n this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));\n }\n else {\n this.shading.remove(this.dictionaryProperties.function);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"bBox\", {\n /**\n * Gets or sets the boundary box of the brush.\n * @protected\n */\n get: function () {\n var sh = this.shading;\n var box = (sh.items.getValue(this.dictionaryProperties.bBox));\n return box;\n },\n set: function (value) {\n var sh = this.shading;\n if (value == null && typeof value === 'undefined') {\n sh.remove(this.dictionaryProperties.bBox);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.bBox, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"colorSpace\", {\n /**\n * Gets or sets the color space of the brush.\n * @public\n */\n get: function () {\n return this.mcolorSpace;\n },\n set: function (value) {\n var colorSpace = this.shading.items.getValue(this.dictionaryProperties.colorSpace);\n if ((value !== this.mcolorSpace) || (colorSpace == null)) {\n this.mcolorSpace = value;\n var csValue = this.colorSpaceToDeviceName(value);\n this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfGradientBrush is stroking.\n * @public\n */\n get: function () {\n return this.mbStroking;\n },\n set: function (value) {\n this.mbStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"patternDictionary\", {\n /**\n * Gets the pattern dictionary.\n * @protected\n */\n get: function () {\n if (this.mpatternDictionary == null) {\n this.mpatternDictionary = new PdfDictionary();\n }\n return this.mpatternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"shading\", {\n /**\n * Gets or sets the shading dictionary.\n * @protected\n */\n get: function () {\n return this.mshading;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Shading');\n }\n if (value !== this.mshading) {\n this.mshading = value;\n this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"matrix\", {\n /**\n * Gets or sets the transformation matrix.\n * @public\n */\n get: function () {\n return this.mmatrix;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Matrix');\n }\n if (value !== this.mmatrix) {\n this.mmatrix = value.clone();\n var m = new PdfArray(this.mmatrix.matrix.elements);\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);\n }\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush.\n * @param streamWriter The stream writer.\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGradientBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush instanceof PdfGradientBrush) {\n if ((this.colorSpace !== currentColorSpace)) {\n this.colorSpace = currentColorSpace;\n this.resetFunction();\n }\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mbStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mbStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfGradientBrush.prototype.resetChanges = function (streamWriter) {\n // Unable reset.\n };\n //Implementation\n /**\n * Converts colorspace enum to a PDF name.\n * @param colorSpace The color space enum value.\n */\n PdfGradientBrush.prototype.colorSpaceToDeviceName = function (colorSpace) {\n var result;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n result = 'DeviceRGB';\n break;\n }\n return result;\n };\n /**\n * Resets the pattern dictionary.\n * @param dictionary A new pattern dictionary.\n */\n PdfGradientBrush.prototype.resetPatternDictionary = function (dictionary) {\n this.mpatternDictionary = dictionary;\n };\n /**\n * Clones the anti aliasing value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneAntiAliasingValue = function (brush) {\n if ((brush == null)) {\n throw new Error('ArgumentNullException : brush');\n }\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa != null)) {\n brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));\n }\n };\n /**\n * Clones the background value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneBackgroundValue = function (brush) {\n var background = this.background;\n if (!background.isEmpty) {\n brush.background = background;\n }\n };\n Object.defineProperty(PdfGradientBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.patternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGradientBrush;\n}(PdfBrush));\nexport { PdfGradientBrush };\n","/**\n * ImageDecoder class\n */\nimport { ByteArray } from './byte-array';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\n/**\n * Specifies the image `format`.\n * @private\n */\nexport var ImageFormat;\n(function (ImageFormat) {\n /**\n * Specifies the type of `Unknown`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `Bmp`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Bmp\"] = 1] = \"Bmp\";\n /**\n * Specifies the type of `Emf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Emf\"] = 2] = \"Emf\";\n /**\n * Specifies the type of `Gif`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Gif\"] = 3] = \"Gif\";\n /**\n * Specifies the type of `Jpeg`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Jpeg\"] = 4] = \"Jpeg\";\n /**\n * Specifies the type of `Png`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Png\"] = 5] = \"Png\";\n /**\n * Specifies the type of `Wmf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Wmf\"] = 6] = \"Wmf\";\n /**\n * Specifies the type of `Icon`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Icon\"] = 7] = \"Icon\";\n})(ImageFormat || (ImageFormat = {}));\n/**\n * `Decode the image stream`.\n * @private\n */\nvar ImageDecoder = /** @class */ (function () {\n /**\n * Initialize the new instance for `image-decoder` class.\n * @private\n */\n function ImageDecoder(stream) {\n /**\n * Start of file markers.\n * @hidden\n * @private\n */\n this.sof1Marker = 0x00C1;\n this.sof2Marker = 0x00C2;\n this.sof3Marker = 0x00C3;\n this.sof5Marker = 0x00C5;\n this.sof6Marker = 0x00C6;\n this.sof7Marker = 0x00C7;\n this.sof9Marker = 0x00C9;\n this.sof10Marker = 0x00CA;\n this.sof11Marker = 0x00CB;\n this.sof13Marker = 0x00CD;\n this.sof14Marker = 0x00CE;\n this.sof15Marker = 0x00CF;\n /**\n * Specifies `format` of image.\n * @hidden\n * @private\n */\n this.mFormat = ImageFormat.Unknown;\n /**\n * `Bits per component`.\n * @default 8\n * @hidden\n * @private\n */\n this.mbitsPerComponent = 8;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.mStream = stream;\n this.initialize();\n }\n Object.defineProperty(ImageDecoder.prototype, \"height\", {\n /**\n * Gets the `height` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"width\", {\n /**\n * Gets the `width` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"bitsPerComponent\", {\n /**\n * Gets `bits per component`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mbitsPerComponent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"size\", {\n /**\n * Gets the `size` of an image data.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageData\", {\n /**\n * Gets the value of an `image data`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageDataAsNumberArray\", {\n /**\n * Gets the value of an `image data as number array`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.internalBuffer.buffer;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize` image data and image stream.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.initialize = function () {\n if (this.mFormat === ImageFormat.Unknown && this.checkIfJpeg()) {\n this.mFormat = ImageFormat.Jpeg;\n this.parseJpegImage();\n }\n else {\n throw new TypeError('Only the JPEG format is supported');\n }\n this.reset();\n this.mImageData = new ByteArray(this.mStream.count);\n this.mStream.read(this.mImageData, 0, this.mImageData.count);\n };\n /**\n * `Reset` stream position into 0.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.reset = function () {\n this.mStream.position = 0;\n };\n /**\n * `Parse` Jpeg image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.parseJpegImage = function () {\n this.reset();\n var imgData = new ByteArray(this.mStream.count);\n this.mStream.read(imgData, 0, imgData.count);\n var i = 4;\n var isLengthExceed = false;\n /* tslint:disable */\n var length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n while (i < imgData.count) {\n i += length;\n if (i < imgData.count) {\n if (imgData.getBuffer(i + 1) === 192) {\n this.mHeight = imgData.getBuffer(i + 5) * 256 + imgData.getBuffer(i + 6);\n this.mWidth = imgData.getBuffer(i + 7) * 256 + imgData.getBuffer(i + 8);\n return;\n }\n else {\n i += 2;\n length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n }\n }\n else {\n isLengthExceed = true;\n break;\n }\n }\n if (isLengthExceed) {\n this.mStream.position = 0;\n this.skip(this.mStream, 2);\n this.readExceededJPGImage(this.mStream);\n }\n /* tslint:enable */\n };\n Object.defineProperty(ImageDecoder.prototype, \"format\", {\n /**\n * Gets the image `format`.\n * @private\n * @hidden\n */\n get: function () {\n return this.mFormat;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Checks if JPG`.\n * @private\n * @hidden\n */\n ImageDecoder.prototype.checkIfJpeg = function () {\n this.reset();\n for (var i = 0; i < ImageDecoder.mJpegHeader.length; i++) {\n if (ImageDecoder.mJpegHeader[i] !== this.mStream.readByte(i)) {\n return false;\n }\n this.mStream.position++;\n }\n return true;\n };\n /**\n * Return image `dictionary`.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getImageDictionary = function () {\n if (this.mFormat === ImageFormat.Jpeg) {\n var tempArrayBuffer = this.imageData.internalBuffer.length;\n this.imageStream = new PdfStream();\n this.imageStream.isResource = true;\n var tempString = '';\n var decodedString = '';\n for (var i = 0; i < this.imageDataAsNumberArray.byteLength; i++) {\n tempString += String.fromCharCode(null, this.mStream.readByte(i));\n }\n for (var i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[i];\n }\n }\n this.imageStream.data = [decodedString];\n this.imageStream.compress = false;\n this.imageStream.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.xObject));\n this.imageStream.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.image));\n this.imageStream.items.setValue(this.dictionaryProperties.width, new PdfNumber(this.width));\n this.imageStream.items.setValue(this.dictionaryProperties.height, new PdfNumber(this.height));\n this.imageStream.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n this.imageStream.items.setValue(this.dictionaryProperties.filter, new PdfName(this.dictionaryProperties.dctdecode));\n this.imageStream.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(this.getColorSpace()));\n this.imageStream.items.setValue(this.dictionaryProperties.decodeParms, this.getDecodeParams());\n return this.imageStream;\n }\n else {\n return this.imageStream;\n }\n };\n /**\n * Return `colorSpace` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getColorSpace = function () {\n return this.dictionaryProperties.deviceRgb;\n };\n /**\n * Return `decode parameters` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getDecodeParams = function () {\n var decodeParams = new PdfDictionary();\n decodeParams.items.setValue(this.dictionaryProperties.columns, new PdfNumber(this.width));\n decodeParams.items.setValue(this.dictionaryProperties.blackIs1, new PdfBoolean(true));\n decodeParams.items.setValue(this.dictionaryProperties.k, new PdfNumber(-1));\n decodeParams.items.setValue(this.dictionaryProperties.predictor, new PdfNumber(15));\n decodeParams.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n return decodeParams;\n };\n /**\n * 'readExceededJPGImage' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.readExceededJPGImage = function (stream) {\n this.mStream = stream;\n var isContinueReading = true;\n while (isContinueReading) {\n var marker = this.getMarker(stream);\n switch (marker) {\n case this.sof1Marker:\n case this.sof2Marker:\n case this.sof3Marker:\n case this.sof5Marker:\n case this.sof6Marker:\n case this.sof7Marker:\n case this.sof9Marker:\n case this.sof10Marker:\n case this.sof11Marker:\n case this.sof13Marker:\n case this.sof14Marker:\n case this.sof15Marker:\n stream.position += 3;\n this.mHeight = this.mStream.readNextTwoBytes(stream);\n this.mWidth = this.mStream.readNextTwoBytes(stream);\n isContinueReading = false;\n break;\n default:\n this.skipStream(stream);\n break;\n }\n }\n };\n /**\n * 'skip' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skip = function (stream, noOfBytes) {\n this.mStream = stream;\n var temp = new ByteArray(noOfBytes);\n this.mStream.read(temp, 0, temp.count);\n };\n /**\n * 'getMarker' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getMarker = function (stream) {\n var skippedByte = 0;\n var marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\n skippedByte++;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n }\n do {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n } while (marker === 255);\n return marker;\n };\n /**\n * 'skipStream' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skipStream = function (stream) {\n var markerLength = this.mStream.readNextTwoBytes(stream) - 2;\n if (markerLength > 0) {\n stream.position += markerLength;\n }\n };\n /**\n * Number array for `png header`.\n * @hidden\n * @private\n */\n ImageDecoder.mPngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n /**\n * Number Array for `jpeg header`.\n * @hidden\n * @private\n */\n ImageDecoder.mJpegHeader = [255, 216];\n /**\n * Number array for `gif header`.\n * @hidden\n * @private\n */\n ImageDecoder.GIF_HEADER = 'G,I,F,8';\n /**\n * Number array for `bmp header.`\n * @hidden\n * @private\n */\n ImageDecoder.BMP_HEADER = 'B,M';\n return ImageDecoder;\n}());\nexport { ImageDecoder };\n","/**\n * PdfTemplate.ts class for EJ2-PDF\n */\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PointF, SizeF, RectangleF } from './../../drawing/pdf-drawing';\nimport { GetResourceEventHandler } from './../pdf-graphics';\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nvar PdfTemplate = /** @class */ (function () {\n function PdfTemplate(arg1, arg2) {\n /**\n * Initialize an instance for `DictionaryProperties` class.\n * @private\n * @hidden\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the transformation 'is performed'.\n * @default true\n * @private\n */\n this.writeTransformation = true;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.content = new PdfStream();\n var tempSize = new SizeF(arg1.width, arg1.height);\n this.setSize(tempSize);\n this.initialize();\n }\n else {\n this.content = new PdfStream();\n this.setSize(new SizeF(arg1, arg2));\n this.initialize();\n }\n }\n Object.defineProperty(PdfTemplate.prototype, \"size\", {\n //Properties\n /**\n * Gets the size of the 'PdfTemplate'.\n */\n get: function () {\n return this.templateSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"width\", {\n /**\n * Gets the width of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"height\", {\n /**\n * Gets the height of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"graphics\", {\n /**\n * Gets the `graphics` of the 'PdfTemplate'.\n */\n get: function () {\n if (this.pdfGraphics == null || typeof this.pdfGraphics === 'undefined') {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.content);\n this.pdfGraphics = g;\n // if(this.writeTransformation) {\n // Transform co-ordinates to Top/Left.\n this.pdfGraphics.initializeCoordinates();\n // }\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @private\n */\n PdfTemplate.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.content.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n // Public methods\n /**\n * `Initialize` the type and subtype of the template.\n * @private\n */\n PdfTemplate.prototype.initialize = function () {\n this.addType();\n this.addSubType();\n };\n /**\n * `Adds type key`.\n * @private\n */\n PdfTemplate.prototype.addType = function () {\n var value = new PdfName(this.dictionaryProperties.xObject);\n this.content.items.setValue(this.dictionaryProperties.type, value);\n };\n /**\n * `Adds SubType key`.\n * @private\n */\n PdfTemplate.prototype.addSubType = function () {\n var value = new PdfName(this.dictionaryProperties.form);\n this.content.items.setValue(this.dictionaryProperties.subtype, value);\n };\n PdfTemplate.prototype.reset = function (size) {\n if (typeof size === 'undefined') {\n if (this.resources != null) {\n this.resources = null;\n this.content.remove(this.dictionaryProperties.resources);\n }\n if (this.graphics != null) {\n this.graphics.reset(this.size);\n }\n }\n else {\n this.setSize(size);\n this.reset();\n }\n };\n /**\n * `Set the size` of the 'PdfTemplate'.\n * @private\n */\n PdfTemplate.prototype.setSize = function (size) {\n var rect = new RectangleF(new PointF(0, 0), size);\n var val = PdfArray.fromRectangle(rect);\n this.content.items.setValue(this.dictionaryProperties.bBox, val);\n this.templateSize = size;\n };\n Object.defineProperty(PdfTemplate.prototype, \"element\", {\n // /**\n // * Returns the value of current graphics.\n // * @private\n // */\n // public GetGraphics(g : PdfGraphics) : PdfGraphics {\n // if (this.graphics == null || typeof this.graphics === 'undefined') {\n // this.graphics = g;\n // this.graphics.Size = this.Size;\n // this.graphics.StreamWriter = new PdfStreamWriter(this.content)\n // this.graphics.Initialize();\n // if(this.writeTransformation) {\n // this.graphics.InitializeCoordinates();\n // }\n // }\n // return this.graphics;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `content stream` of 'PdfTemplate' class.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplate;\n}());\nexport { PdfTemplate };\n","/**\n * public Enum for `PdfBorderOverlapStyle`.\n * @private\n */\nexport var PdfBorderOverlapStyle;\n(function (PdfBorderOverlapStyle) {\n /**\n * Specifies the type of `Overlap`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Overlap\"] = 0] = \"Overlap\";\n /**\n * Specifies the type of `Inside`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Inside\"] = 1] = \"Inside\";\n})(PdfBorderOverlapStyle || (PdfBorderOverlapStyle = {}));\n","/**\n * Used to perform `convertion between pixels and points`.\n * @private\n */\nvar PdfUnitConverter = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `UnitConvertor` class with DPI value.\n * @private\n */\n function PdfUnitConverter(dpi) {\n this.updateProportionsHelper(dpi);\n }\n /**\n * `Converts` the value, from one graphics unit to another graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertUnits = function (value, from, to) {\n return this.convertFromPixels(this.convertToPixels(value, from), to);\n };\n /**\n * Converts the value `to pixel` from specified graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertToPixels = function (value, from) {\n var index = from;\n var result = (value * this.proportions[index]);\n return result;\n };\n /**\n * Converts value, to specified graphics unit `from Pixel`.\n * @private\n */\n PdfUnitConverter.prototype.convertFromPixels = function (value, to) {\n var index = to;\n var result = (value / this.proportions[index]);\n return result;\n };\n /**\n * `Update proportions` matrix according to Graphics settings.\n * @private\n */\n PdfUnitConverter.prototype.updateProportionsHelper = function (pixelPerInch) {\n this.proportions = [\n pixelPerInch / 2.54,\n pixelPerInch / 6.0,\n 1,\n pixelPerInch / 72.0,\n pixelPerInch,\n pixelPerInch / 300.0,\n pixelPerInch / 25.4 // Millimeter\n ];\n };\n //Fields\n /**\n * Indicates default `horizontal resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.horizontalResolution = 96;\n /**\n * Indicates default `vertical resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.verticalResolution = 96;\n return PdfUnitConverter;\n}());\nexport { PdfUnitConverter };\n","import { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfGraphicsUnit } from './../enum';\nimport { PdfUnitConverter } from './../unit-convertor';\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nvar PdfImage = /** @class */ (function () {\n function PdfImage() {\n }\n Object.defineProperty(PdfImage.prototype, \"width\", {\n /**\n * Gets and Sets the `width` of an image.\n * @private\n */\n get: function () {\n return this.imageWidth;\n },\n set: function (value) {\n this.imageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"height\", {\n /**\n * Gets and Sets the `height` of an image.\n * @private\n */\n get: function () {\n return this.imageHeight;\n },\n set: function (value) {\n this.imageHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"size\", {\n /**\n * Gets or sets the size of the image.\n * @private\n */\n set: function (value) {\n this.width = value.width;\n this.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"physicalDimension\", {\n /**\n * Gets the `physical dimension` of an image.\n * @private\n */\n get: function () {\n this.imagePhysicalDimension = this.getPointSize(this.width, this.height, this.horizontalResolution, this.verticalResolution);\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"element\", {\n // /**\n // * Gets the `image stream as string`.\n // * @private\n // */\n // public static fromString(string : string) : PdfImage {\n // let image : PdfImage = new PdfBitmap(string);\n // return image;\n // }\n /**\n * Gets the `element` image stream.\n * @private\n */\n get: function () {\n return this.imageStream;\n },\n enumerable: true,\n configurable: true\n });\n PdfImage.prototype.getPointSize = function (width, height, horizontalResolution, verticalResolution) {\n if (typeof horizontalResolution === 'undefined') {\n var dpiX = PdfUnitConverter.horizontalResolution;\n var dpiY = PdfUnitConverter.verticalResolution;\n var size = this.getPointSize(width, height, dpiX, dpiY);\n return size;\n }\n else {\n var ucX = new PdfUnitConverter(horizontalResolution);\n var ucY = new PdfUnitConverter(verticalResolution);\n var ptWidth = ucX.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var ptHeight = ucY.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var size = new SizeF(ptWidth, ptHeight);\n return size;\n }\n };\n return PdfImage;\n}());\nexport { PdfImage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfBitmap.ts class for EJ2-PDF\n */\nimport { ImageDecoder } from './../../graphics/images/image-decoder';\nimport { ByteArray } from './../../graphics/images/byte-array';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfImage } from './pdf-image';\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBitmap = /** @class */ (function (_super) {\n __extends(PdfBitmap, _super);\n /**\n * Create an instance for `PdfBitmap` class.\n * @param encodedString Base64 string of an image.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * //\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * //\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n function PdfBitmap(encodedString) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * Specifies the `status` of an image.\n * @default true.\n * @hidden\n * @private\n */\n _this.imageStatus = true;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.loadImage(encodedString);\n return _this;\n }\n /**\n * `Load image`.\n * @hidden\n * @private\n */\n PdfBitmap.prototype.loadImage = function (encodedString) {\n var task = this.initializeAsync(encodedString);\n };\n /**\n * `Initialize` image parameters.\n * @private\n */\n PdfBitmap.prototype.initializeAsync = function (encodedString) {\n var byteArray = new ByteArray(encodedString.length);\n byteArray.writeFromBase64String(encodedString);\n this.decoder = new ImageDecoder(byteArray);\n this.height = this.decoder.height;\n this.width = this.decoder.width;\n // FrameCount = BitmapImageDecoder.FrameCount;\n this.bitsPerComponent = this.decoder.bitsPerComponent;\n };\n /**\n * `Saves` the image into stream.\n * @private\n */\n PdfBitmap.prototype.save = function () {\n this.imageStatus = true;\n this.imageStream = this.decoder.getImageDictionary();\n };\n return PdfBitmap;\n}(PdfImage));\nexport { PdfBitmap };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfResources.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTemplate } from './figures/pdf-template';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfBitmap } from './../graphics/images/pdf-bitmap';\nimport { PdfImage } from './../graphics/images/pdf-image';\nimport { PdfGradientBrush } from './brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfResources` class used to set resource contents like font, image.\n * @private\n */\nvar PdfResources = /** @class */ (function (_super) {\n __extends(PdfResources, _super);\n function PdfResources(baseDictionary) {\n var _this = _super.call(this, baseDictionary) || this;\n /**\n * Dictionary for the `properties names`.\n * @private\n */\n _this.properties = new PdfDictionary();\n return _this;\n }\n Object.defineProperty(PdfResources.prototype, \"names\", {\n //Properties\n /**\n * Gets the `font names`.\n * @private\n */\n get: function () {\n return this.getNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfResources.prototype, \"document\", {\n /**\n * Get or set the `page document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public Methods\n /**\n * `Generates name` for the object and adds to the resource if the object is new.\n * @private\n */\n PdfResources.prototype.getName = function (obj) {\n var primitive = obj.element;\n var name = null;\n if (this.names.containsKey(primitive)) {\n name = this.names.getValue(primitive);\n }\n // Object is new.\n if (name == null) {\n var sName = this.generateName();\n name = new PdfName(sName);\n this.names.setValue(primitive, name);\n if (obj instanceof PdfFont) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTemplate) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfGradientBrush || obj instanceof PdfTilingBrush) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTransparency) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfImage || obj instanceof PdfBitmap) {\n this.add(obj, name);\n }\n }\n return name;\n };\n /**\n * Gets `resource names` to font dictionaries.\n * @private\n */\n PdfResources.prototype.getNames = function () {\n if (this.pdfNames == null) {\n this.pdfNames = new TemporaryDictionary();\n }\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n var dictionary = fonts;\n dictionary = PdfCrossTable.dereference(fonts);\n }\n return this.pdfNames;\n };\n /**\n * Add `RequireProcedureSet` into procset array.\n * @private\n */\n PdfResources.prototype.requireProcedureSet = function (procedureSetName) {\n if (procedureSetName == null) {\n throw new Error('ArgumentNullException:procedureSetName');\n }\n var procSets = this.items.getValue(this.dictionaryProperties.procset);\n if (procSets == null) {\n procSets = new PdfArray();\n this.items.setValue(this.dictionaryProperties.procset, procSets);\n }\n var name = new PdfName(procedureSetName);\n if (!procSets.contains(name)) {\n procSets.add(name);\n }\n };\n //Helper Methods\n /**\n * `Remove font` from array.\n * @private\n */\n PdfResources.prototype.removeFont = function (name) {\n var key = null;\n var keys = this.pdfNames.keys();\n for (var index = 0; index < this.pdfNames.size(); index++) {\n if (this.pdfNames.getValue(keys[index]) === new PdfName(name)) {\n key = keys[index];\n break;\n }\n }\n if (key != null) {\n this.pdfNames.remove(key);\n }\n };\n /**\n * Generates `Unique string name`.\n * @private\n */\n PdfResources.prototype.generateName = function () {\n var name = Guid.getNewGuidString();\n return name;\n };\n PdfResources.prototype.add = function (arg1, arg2) {\n if (arg1 instanceof PdfFont) {\n var dictionary = null;\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n dictionary = fonts;\n dictionary = fonts;\n }\n else {\n dictionary = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.font, dictionary);\n }\n dictionary.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfTemplate) {\n var xobjects = void 0;\n xobjects = this.items.getValue(this.dictionaryProperties.xObject);\n // Create fonts dictionary.\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n xobjects.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfBrush) {\n if (arg1 instanceof PdfGradientBrush || arg1 instanceof PdfTilingBrush) {\n var savable = arg1.element;\n if (savable != null) {\n var pattern = this.items.getValue(this.dictionaryProperties.pattern);\n // Create a new pattern dictionary.\n if (pattern == null) {\n pattern = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.pattern, pattern);\n }\n pattern.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n }\n }\n else if (arg1 instanceof PdfTransparency) {\n var savable = arg1.element;\n var transDic = null;\n transDic = this.items.getValue(this.dictionaryProperties.extGState);\n // Create a new pattern dictionary.\n if (transDic == null) {\n transDic = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.extGState, transDic);\n }\n transDic.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n else {\n /* tslint:disable */\n var xobjects = this.Dictionary.items.getValue(this.dictionaryProperties.xObject);\n var parentXObjects = void 0;\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects = this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.getValue(this.dictionaryProperties.xObject);\n }\n var values = this.Dictionary.items.values();\n var hasSameImageStream = false;\n var oldReference = void 0;\n if (typeof this.pdfDocument !== 'undefined' && (typeof parentXObjects === undefined || parentXObjects == null)) {\n parentXObjects = new PdfDictionary();\n this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.setValue(this.dictionaryProperties.xObject, parentXObjects);\n }\n else if (typeof this.pdfDocument !== 'undefined') {\n var values_1 = parentXObjects.items.values();\n for (var i = 0; i < values_1.length; i++) {\n if (typeof values_1[i] !== 'undefined' && typeof values_1[i].element !== 'undefined') {\n if (values_1[i].element.data[0] === arg1.element.data[0]) {\n oldReference = values_1[i];\n hasSameImageStream = true;\n }\n }\n }\n }\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.Dictionary.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n if (hasSameImageStream && typeof oldReference !== 'undefined') {\n xobjects.items.setValue(arg2.value, oldReference);\n }\n else {\n var reference = new PdfReferenceHolder(arg1.element);\n xobjects.items.setValue(arg2.value, reference);\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects.items.setValue(arg2.value, reference);\n }\n }\n /* tslint:enable */\n }\n };\n return PdfResources;\n}(PdfDictionary));\nexport { PdfResources };\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nvar Guid = /** @class */ (function () {\n function Guid() {\n }\n /**\n * Generate `new GUID`.\n * @private\n */\n Guid.getNewGuidString = function () {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, function (c) {\n var random = Math.random() * 16 | 0;\n var result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n };\n return Guid;\n}());\nexport { Guid };\n/* tslint:enable */ \n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { GetResourceEventHandler } from './../pdf-graphics';\nimport { PdfBrush } from './pdf-brush';\nimport { PointF, SizeF, RectangleF, Rectangle } from './../../drawing/pdf-drawing';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfPage } from './../../pages/pdf-page';\n/**\n * `PdfTilingBrush` Implements a colored tiling brush.\n */\nvar PdfTilingBrush = /** @class */ (function (_super) {\n __extends(PdfTilingBrush, _super);\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @public\n */\n function PdfTilingBrush(arg1, arg2) {\n var _this = _super.call(this) || this;\n /**\n * Local variable to store Stroking.\n * @private\n */\n _this.mStroking = false;\n /**\n * Local variable to store the tile start location.\n * @private\n */\n _this.mLocation = new PointF(0, 0);\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n var rect = null;\n if (arg1 instanceof Rectangle) {\n rect = arg1;\n }\n else if (arg1 instanceof SizeF) {\n rect = new Rectangle(0, 0, arg1.width, arg1.height);\n }\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n }\n _this.brushStream = new PdfStream();\n _this.mResources = new PdfResources();\n _this.brushStream.items.setValue(_this.mDictionaryProperties.resources, _this.mResources);\n _this.setBox(rect);\n _this.setObligatoryFields();\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n _this.graphics.colorSpace = arg2.document.colorSpace;\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @private\n * @param rectangle The size of the smallest brush cell.\n * @param page The Current Page Object.\n * @param location The Tile start location.\n * @param matrix The matrix.\n */\n PdfTilingBrush.prototype.initialize = function (rectangle, page, location, matrix) {\n this.mPage = page;\n this.mLocation = location;\n this.mTransformationMatrix = matrix;\n this.tempBrushStream = this.brushStream;\n this.brushStream = new PdfStream();\n var tempResource = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, tempResource);\n this.setBox(rectangle);\n this.setObligatoryFields();\n return this;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"location\", {\n //Properties\n /**\n * Location representing the start position of the tiles.\n * @public\n */\n get: function () {\n return this.mLocation;\n },\n set: function (value) {\n this.mLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the obligatory fields.\n * @private\n */\n PdfTilingBrush.prototype.setObligatoryFields = function () {\n this.brushStream.items.setValue(this.mDictionaryProperties.patternType, new PdfNumber(1));\n // Tiling brush.\n this.brushStream.items.setValue(this.mDictionaryProperties.paintType, new PdfNumber(1));\n // Coloured.\n this.brushStream.items.setValue(this.mDictionaryProperties.tilingType, new PdfNumber(1));\n // Constant spacing.\n this.brushStream.items.setValue(this.mDictionaryProperties.xStep, new PdfNumber((this.mBox.right - this.mBox.left)));\n this.brushStream.items.setValue(this.mDictionaryProperties.yStep, new PdfNumber((this.mBox.bottom - this.mBox.top)));\n if ((this.mPage != null) && (this.mLocation != null)) {\n if ((this.mTransformationMatrix == null && typeof this.mTransformationMatrix === 'undefined')) {\n // Transform the tile origin to fit the location\n var tileTransform = (this.mPage.size.height % this.rectangle.size.height) - (this.mLocation.y);\n /* tslint:disable-next-line:max-line-length */\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([1, 0, 0, 1, this.mLocation.x, tileTransform]));\n }\n else {\n var tileTransform = 0;\n // Transform the tile origin to fit the location\n var elements = this.mTransformationMatrix.matrix.elements;\n if ((this.mPage.size.height > this.rectangle.size.height)) {\n tileTransform = (this.mTransformationMatrix.matrix.offsetY\n - (this.mPage.size.height % this.rectangle.size.height));\n }\n else {\n tileTransform = ((this.mPage.size.height % this.rectangle.size.height) + this.mTransformationMatrix.matrix.offsetY);\n }\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([\n elements[0], elements[1], elements[2], elements[3], elements[4], tileTransform\n ]));\n }\n }\n };\n /**\n * Sets the BBox coordinates.\n * @private\n */\n PdfTilingBrush.prototype.setBox = function (box) {\n this.mBox = box;\n var rect = new RectangleF(this.mBox.left, this.mBox.top, this.mBox.right, this.mBox.bottom);\n this.brushStream.items.setValue(this.mDictionaryProperties.bBox, PdfArray.fromRectangle(rect));\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"rectangle\", {\n //Properties\n /**\n * Gets the boundary box of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"size\", {\n /**\n * Gets the size of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"graphics\", {\n /**\n * Gets Graphics context of the brush.\n */\n get: function () {\n if ((this.mGraphics == null && typeof this.mGraphics === 'undefined')) {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.brushStream);\n this.mGraphics = g;\n this.mResources = this.getResources();\n this.mGraphics.initializeCoordinates();\n }\n return this.mGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @public\n */\n PdfTilingBrush.prototype.getResources = function () {\n return this.mResources;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfTilingBrush\n * is used for stroking operations.\n */\n get: function () {\n return this.mStroking;\n },\n set: function (value) {\n this.mStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n //PdfBrush methods\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfTilingBrush.prototype.clone = function () {\n var brush = this.initialize(this.rectangle, this.mPage, this.location, this.mTransformationMatrix);\n if ((this.mTransformationMatrix != null) && (this.mTransformationMatrix.matrix != null)) {\n /* tslint:disable-next-line:max-line-length */\n brush.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray(this.mTransformationMatrix.matrix.elements));\n }\n brush.brushStream.data = this.tempBrushStream.data;\n brush.mResources = new PdfResources(this.mResources);\n brush.brushStream.items.setValue(this.mDictionaryProperties.resources, brush.mResources);\n return brush;\n };\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush\n * @param streamWriter The stream writer\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfTilingBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush !== this) {\n // Set the Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources1 = getResources.getResources();\n var name1 = resources1.getName(this);\n streamWriter.setColourWithPattern(null, name1, this.mStroking);\n diff = true;\n }\n else if (brush instanceof PdfTilingBrush) {\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfTilingBrush.prototype.resetChanges = function (streamWriter) {\n // We shouldn't do anything to reset changes.\n // All changes will be reset automatically by setting a new colour space.\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @public\n */\n get: function () {\n return this.brushStream;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTilingBrush;\n}(PdfBrush));\nexport { PdfTilingBrush };\n","/**\n * PdfGraphics.ts class for EJ2-PDF\n */\nimport { PdfColorSpace, TextRenderingMode, PdfFillMode, PdfTextAlignment } from './enum';\nimport { PdfVerticalAlignment, PdfBlendMode } from './enum';\nimport { PdfSubSuperScript } from './fonts/enum';\nimport { PdfStreamWriter } from './../input-output/pdf-stream-writer';\nimport { PdfPen } from './pdf-pen';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTransformationMatrix, Matrix } from './pdf-transformation-matrix';\nimport { PointF, SizeF, RectangleF } from './../drawing/pdf-drawing';\nimport { ProcedureSets } from './constants';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfStringFormat } from './fonts/pdf-string-format';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfStringLayouter, LineType } from './fonts/string-layouter';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { StringTokenizer } from './fonts/string-tokenizer';\nimport { PdfAutomaticFieldInfoCollection } from './../document/automatic-fields/automatic-field-info-collection';\nimport { PdfAutomaticFieldInfo } from './../document/automatic-fields/automatic-field-info';\nimport { Operators } from './../input-output/pdf-operators';\nimport { UnicodeTrueTypeFont } from './fonts/unicode-true-type-font';\nimport { InternalEnum } from './../primitives/pdf-string';\nimport { RtlRenderer } from './fonts/rtl-renderer';\nimport { PdfTextDirection } from './enum';\nimport { PathPointType } from './figures/enum';\nimport { PdfGradientBrush } from './../../implementation/graphics/brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @class */ (function () {\n function PdfGraphics(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"stringLayoutResult\", {\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get: function () {\n return this.pdfStringLayoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"size\", {\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get: function () {\n return this.canvasSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"mediaBoxUpperRightBound\", {\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get: function () {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n },\n set: function (value) {\n this.internalMediaBoxUpperRightBound = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"clientSize\", {\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get: function () {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"colorSpace\", {\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get: function () {\n return this.currentColorSpace;\n },\n set: function (value) {\n this.currentColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"streamWriter\", {\n /**\n * Gets the `stream writer`.\n * @private\n */\n get: function () {\n return this.pdfStreamWriter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"matrix\", {\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get: function () {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"layer\", {\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"page\", {\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer.page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"automaticFields\", {\n get: function () {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n PdfGraphics.prototype.initialize = function () {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n };\n PdfGraphics.prototype.drawPdfTemplate = function (template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n var scaleX = (template.width > 0) ? size.width / template.width : 1;\n var scaleY = (template.height > 0) ? size.height / template.height : 1;\n var bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n var state = this.save();\n // Take into consideration that rect location is bottom/left.\n var matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n var name_1 = resources.getName(template);\n this.pdfStreamWriter.executeObject(name_1);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n var g = template.graphics;\n if (g != null) {\n for (var index = 0; index < g.automaticFields.automaticFields.length; index++) {\n var fieldInfo = g.automaticFields.automaticFields[index];\n var newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n var scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n var scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n };\n /**\n * @public\n */\n PdfGraphics.prototype.drawString = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n var temparg7 = arg7;\n var temparg8 = arg8;\n var temparg9 = arg9;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n var rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n };\n PdfGraphics.prototype.drawLine = function (arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n var temparg2 = arg2;\n var temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n this.stateControl(arg1, null, null);\n var sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n };\n PdfGraphics.prototype.drawRectangle = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n var xOffset = (this.matrix.matrix.offsetX + temparg3);\n var yOffset = void 0;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n };\n /**\n * Draw rounded rectangle specified by a brush, pen, coordinate pair, a width, a height and a radius.\n * ```typescript\n * // Create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // Create a new page\n * let page : PdfPage = document.pages.add();\n * // Create brush for draw rectangle\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(238, 130, 238));\n * // Create a new PDF pen\n * let pen: PdfPen = new PdfPen(new PdfColor(255, 0, 0), 1);\n * // Draw rounded rectangle\n * page.graphics.drawRoundedRectangle(pen, brush, 20, 20, 100, 50, 5);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Stoke color of the rectangle.\n * @param brush Fill color of the rectangle.\n * @param x The x-coordinate of the upper-left corner of the rectangle to draw.\n * @param y The y-coordinate of the upper-left corner of the rectangle to draw.\n * @param width Width of the rectangle to draw.\n * @param height Height of the rectangle to draw.\n * @param radius Radius of the arcs to draw.\n */\n PdfGraphics.prototype.drawRoundedRectangle = function (pen, brush, x, y, width, height, radius) {\n if (pen === null) {\n throw new Error('pen');\n }\n if (brush === null) {\n throw new Error('brush');\n }\n if (radius === 0) {\n this.drawRectangle(pen, brush, x, y, width, height);\n }\n else {\n var bounds = [x, y, width, height];\n var diameter = radius * 2;\n var size = [diameter, diameter];\n var arc = [bounds[0], bounds[1], size[0], size[1]];\n this._pathPoints = [];\n this._pathTypes = [];\n var startFigure = true;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 180, 90, startFigure);\n arc[0] = (bounds[0] + bounds[2]) - diameter;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 270, 90, startFigure);\n arc[1] = (bounds[1] + bounds[3]) - diameter;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 0, 90, startFigure);\n arc[0] = bounds[0];\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 90, 90, startFigure);\n var index = this._pathPoints.length - 1;\n var type = ((this._pathTypes[index]));\n type = (type | PathPointType.CloseSubpath);\n this._pathTypes[index] = (type);\n this._drawPath(pen, brush, this._pathPoints, this._pathTypes, PdfFillMode.Alternate);\n this._pathPoints = [];\n this._pathTypes = [];\n }\n };\n PdfGraphics.prototype._addArc = function (x, y, width, height, startAngle, sweepAngle, startFigure) {\n var points = this._getBezierArcPoints(x, y, (x + width), (y + height), startAngle, sweepAngle);\n for (var i = 0; i < points.length; i = i + 8) {\n var point = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n startFigure = this._addArcPoints(point, PathPointType.Bezier3, startFigure);\n }\n return startFigure;\n };\n PdfGraphics.prototype._addArcPoints = function (points, pointType, startFigure) {\n for (var i = 0; i < points.length; i++) {\n var point = new PointF(points[i], points[(i + 1)]);\n if (i === 0) {\n if (this._pathPoints.length === 0 || startFigure) {\n this._addPoint(point, PathPointType.Start);\n startFigure = false;\n }\n else if (point.x !== this._getLastPoint().x || point.y !== this._getLastPoint().y) {\n this._addPoint(point, PathPointType.Line);\n }\n }\n else {\n this._addPoint(point, pointType);\n }\n i++;\n }\n return startFigure;\n };\n PdfGraphics.prototype._getLastPoint = function () {\n var lastPoint = new PointF(0, 0);\n var count = this._pathPoints.length;\n if (count > 0) {\n lastPoint.x = this._pathPoints[(count - 1)].x;\n lastPoint.y = this._pathPoints[(count - 1)].y;\n }\n return lastPoint;\n };\n PdfGraphics.prototype._addPoint = function (point, type) {\n this._pathPoints.push(point);\n this._pathTypes.push(type);\n };\n PdfGraphics.prototype._getBezierArcPoints = function (x1, y1, x2, y2, s1, e1) {\n if ((x1 > x2)) {\n var tmp = void 0;\n tmp = x1;\n x1 = x2;\n x2 = tmp;\n }\n if ((y2 > y1)) {\n var tmp = void 0;\n tmp = y1;\n y1 = y2;\n y2 = tmp;\n }\n var fragAngle;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle = (e1 / numFragments);\n }\n var xcen = ((x1 + x2) / 2);\n var ycen = ((y1 + y2) / 2);\n var rx = ((x2 - x1) / 2);\n var ry = ((y2 - y1) / 2);\n var halfAng = ((fragAngle * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointList = [];\n for (var i = 0; (i < numFragments); i++) {\n var theta0 = (((s1 + (i * fragAngle)) * (Math.PI / 180)));\n var theta1 = (((s1 + ((i + 1) * fragAngle)) * (Math.PI / 180)));\n var cos0 = (Math.cos(theta0));\n var cos1 = (Math.cos(theta1));\n var sin0 = (Math.sin(theta0));\n var sin1 = (Math.sin(theta1));\n if ((fragAngle > 0)) {\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointList;\n };\n PdfGraphics.prototype.drawPathHelper = function (arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n var temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var isPen = arg1 != null;\n var isBrush = arg2 != null;\n var isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n };\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n arg1.save();\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n var name_2 = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name_2);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n var resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n };\n //Implementation\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n PdfGraphics.prototype.getLineBounds = function (lineIndex, result, font, layoutRectangle, format) {\n var bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n var line = result.lines[lineIndex];\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n var lineWidth = line.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x = layoutRectangle.x + hShift;\n var width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent;\n var height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n };\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n PdfGraphics.prototype.checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n };\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n PdfGraphics.prototype.setLayer = function (layer) {\n this.pageLayer = layer;\n var page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n };\n /**\n * Adding page number field before page saving.\n * @private\n */\n PdfGraphics.prototype.pageSave = function (page) {\n if (page.graphics.automaticFields != null) {\n for (var i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n };\n /**\n * `Draws a layout result`.\n * @private\n */\n PdfGraphics.prototype.drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n var textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n var height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n var subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n var shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n var resultHeight = 0;\n var remainingString = '';\n for (var i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (var j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n var bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n var page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n };\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGraphics.prototype.getNextPage = function () {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n };\n PdfGraphics.prototype.setClip = function (rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n };\n /**\n * Applies all the `text settings`.\n * @private\n */\n PdfGraphics.prototype.applyStringSettings = function (font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n var setLineWidth = false;\n var tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n var cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n var ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n };\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n PdfGraphics.prototype.getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n /**\n * `Draws layout result`.\n * @private\n */\n PdfGraphics.prototype.drawLayoutResult = function (result, font, format, layoutRectangle) {\n var vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n var ttfFont = font;\n var unicode = (ttfFont != null && ttfFont.isUnicode);\n var embed = (ttfFont != null && ttfFont.isEmbedFont);\n var lines = result.lines;\n for (var i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n };\n /**\n * `Draws Ascii line`.\n * @private\n */\n PdfGraphics.prototype.drawAsciiLine = function (lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n var value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n var line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n };\n /**\n * Draws unicode line.\n * @private\n */\n PdfGraphics.prototype.drawUnicodeLine = function (lineInfo, layoutRectangle, font, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n var ttfFont = font;\n var wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n var rtlRender = new RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None)) {\n var blocks = null;\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.Right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = null;\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this.breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this.convertToUnicode(line, ttfFont);\n var value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n };\n /**\n * Draws array of unicode tokens.\n */\n PdfGraphics.prototype.drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i];\n var word = words[i];\n var tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n var val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n };\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n PdfGraphics.prototype.breakUnicodeLine = function (line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n var tokens = [];\n for (var i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n var word = words[i];\n var token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n };\n /**\n * Creates PdfString from the unicode text.\n */\n PdfGraphics.prototype.getUnicodeString = function (token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n var val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n };\n /**\n * Converts to unicode format.\n */\n PdfGraphics.prototype.convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n var ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n };\n /**\n * `Justifies` the line if needed.\n * @private\n */\n PdfGraphics.prototype.justifyLine = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n var hasWordSpacing = (format != null && format.wordSpacing !== 0);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n var difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n };\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n PdfGraphics.prototype.reset = function (size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n };\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n PdfGraphics.prototype.shouldJustify = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n var goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n var shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify));\n return shouldJustify;\n };\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n PdfGraphics.prototype.underlineStrikeoutText = function (pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n var linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n var strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n var lines = result.lines;\n // Run through the text and draw lines.\n for (var i = 0, len = result.lineCount; i < len; i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x1 = layoutRectangle.x + hShift;\n var x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n if (font.underline) {\n var y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n var y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n };\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n PdfGraphics.prototype.createUnderlineStikeoutPen = function (pen, brush, font, format) {\n // Calculate line width.\n var lineWidth = font.metrics.getSize(format) / 20;\n var linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n };\n /**\n * Return `text rendering mode`.\n * @private\n */\n PdfGraphics.prototype.getTextRenderingMode = function (pen, brush, format) {\n var tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfGraphics.prototype.getLineIndent = function (lineInfo, format, layoutBounds, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n PdfGraphics.prototype.getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n PdfGraphics.prototype.rightToLeft = function (format) {\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n };\n PdfGraphics.prototype.stateControl = function (pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n var saveState = false;\n if (brush !== null) {\n var solidBrush = brush;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n var pdfPen = pen;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n };\n /**\n * Initializes the `current color space`.\n * @private\n */\n PdfGraphics.prototype.initCurrentColorSpace = function (colorspace) {\n var re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n };\n /**\n * Controls the `pen state`.\n * @private\n */\n PdfGraphics.prototype.penControl = function (pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n this.currentPen = pen.clone();\n }\n };\n /**\n * Controls the `brush state`.\n * @private\n */\n PdfGraphics.prototype.brushControl = function (brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n var b = brush.clone();\n var lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n var m = lgb.matrix;\n var matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n var br = (brush);\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n this.currentBrush = brush;\n brush = null;\n }\n };\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n PdfGraphics.prototype.fontControl = function (font, format, saveState) {\n if (font != null) {\n var curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n var prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None;\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n var resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n var size = font.metrics.getSize(format);\n this.isEmfTextScaled = false;\n var fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n };\n PdfGraphics.prototype.setTransparency = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n var transp = null;\n var td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n var resources = this.getResources.getResources();\n var name_3 = resources.getName(transp);\n var sw = this.streamWriter;\n sw.setGraphicsState(name_3);\n }\n };\n PdfGraphics.prototype.clipTranslateMargins = function (x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n var clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfGraphics.prototype.updateY = function (y) {\n return -y;\n };\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n PdfGraphics.prototype.translateTransform = function (offsetX, offsetY) {\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getTranslateTransform = function (x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n };\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getScaleTransform = function (x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n };\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Initializes coordinate system`.\n * @private\n */\n PdfGraphics.prototype.initializeCoordinates = function () {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n };\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getRotateTransform = function (angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n };\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n };\n PdfGraphics.prototype.restore = function (state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n var popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n };\n /**\n * `Restores graphics state`.\n * @private\n */\n PdfGraphics.prototype.doRestoreState = function () {\n var state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n };\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n PdfGraphics.prototype.drawPath = function (pen, brush, path) {\n this._drawPath(pen, brush, path.pathPoints, path.pathTypes, path.fillMode);\n };\n PdfGraphics.prototype._drawPath = function (pen, brush, pathPoints, pathTypes, fillMode) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(pathPoints, pathTypes);\n this.drawPathHelper(pen, brush, fillMode, false);\n };\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.drawArc = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n };\n /**\n * Builds up the path.\n * @private\n */\n PdfGraphics.prototype.buildUpPath = function (arg1, arg2) {\n var cnt = arg1.length;\n for (var i = 0; i < cnt; ++i) {\n var typeValue = 0;\n var point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n var p2 = new PointF(0, 0);\n var p3 = new PointF(0, 0);\n var result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n };\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.getBezierPoints = function (points, types, i, p2, p3) {\n var errorMsg = 'Malforming path.';\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n };\n /**\n * Checks path point type flags.\n * @private\n */\n PdfGraphics.prototype.checkFlags = function (type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n };\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n PdfGraphics.prototype.constructArcPath = function (x1, y1, x2, y2, startAng, sweepAngle) {\n var points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n var pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n var i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n };\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n PdfGraphics.prototype.getBezierArc = function (numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n var tmp = void 0;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n var tmp = void 0;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n var fragAngle1;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n var xcen = ((numX1 + numX2) / 2);\n var ycen = ((numY1 + numY2) / 2);\n var rx = ((numX2 - numX1) / 2);\n var ry = ((numY2 - numY1) / 2);\n var halfAng = ((fragAngle1 * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointsList = [];\n for (var i = 0; (i < numFragments); i++) {\n var thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n var thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n var cos0 = (Math.cos(thetaValue0));\n var cos1 = (Math.cos(thetaValue1));\n var sin0 = (Math.sin(thetaValue0));\n var sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n };\n /* tslint:disable */\n // Constants\n /**\n * Specifies the mask of `path type values`.\n * @private\n */\n PdfGraphics.pathTypesValuesMask = 0xf;\n /**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\n PdfGraphics.transparencyObject = false;\n return PdfGraphics;\n}());\nexport { PdfGraphics };\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @class */ (function () {\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n function GetResourceEventHandler(sender) {\n this.sender = sender;\n }\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n GetResourceEventHandler.prototype.getResources = function () {\n return this.sender.getResources();\n };\n return GetResourceEventHandler;\n}());\nexport { GetResourceEventHandler };\nvar PdfGraphicsState = /** @class */ (function () {\n function PdfGraphicsState(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n var elements_1 = [];\n graphics.matrix.matrix.elements.forEach(function (element) {\n elements_1.push(element);\n });\n this.transformationMatrix = new PdfTransformationMatrix();\n this.transformationMatrix.matrix = new Matrix(elements_1);\n }\n }\n Object.defineProperty(PdfGraphicsState.prototype, \"graphics\", {\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"matrix\", {\n /**\n * Gets the `current matrix`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"characterSpacing\", {\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get: function () {\n return this.internalCharacterSpacing;\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"wordSpacing\", {\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get: function () {\n return this.internalWordSpacing;\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textScaling\", {\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get: function () {\n return this.internalTextScaling;\n },\n set: function (value) {\n this.internalTextScaling = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"pen\", {\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"brush\", {\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"font\", {\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"colorSpace\", {\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textRenderingMode\", {\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get: function () {\n return this.internalTextRenderingMode;\n },\n set: function (value) {\n this.internalTextRenderingMode = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGraphicsState;\n}());\nexport { PdfGraphicsState };\nvar TransparencyData = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n function TransparencyData(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n return TransparencyData;\n}());\n/* tslint:enable */\n","import { PdfStream } from './../primitives/pdf-stream';\nimport { PdfGraphics, GetResourceEventHandler } from './../graphics/pdf-graphics';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nvar PdfPageLayer = /** @class */ (function () {\n function PdfPageLayer(page, streamClipPageTemplates) {\n // private bSaved : boolean;\n /**\n * Local Variable to store the `color space` of the document.\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n /**\n * Local Variable to set `visibility`.\n * @default true\n * @private\n */\n this.isVisible = true;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Local variable to store `length` of the graphics.\n * @default 0\n * @private\n */\n this.contentLength = 0;\n /**\n * Instance for `PdfDictionaryProperties` Class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n if (page === null) {\n throw new Error('ArgumentNullException:page');\n }\n this.pdfPage = page;\n this.clipPageTemplates = true;\n if (typeof streamClipPageTemplates === 'undefined') {\n this.content = new PdfStream();\n }\n else if (streamClipPageTemplates instanceof PdfStream || streamClipPageTemplates === null) {\n if (streamClipPageTemplates === null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.content = streamClipPageTemplates;\n }\n else {\n this.content = new PdfStream();\n this.clipPageTemplates = streamClipPageTemplates;\n }\n }\n Object.defineProperty(PdfPageLayer.prototype, \"colorSpace\", {\n // Properties\n /**\n * Get or set the `color space`.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"page\", {\n /**\n * Gets parent `page` of the layer.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layerId\", {\n /**\n * Gets and Sets the `id of the layer`.\n * @private\n */\n get: function () {\n return this.layerid;\n },\n set: function (value) {\n this.layerid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"name\", {\n /**\n * Gets or sets the `name` of the layer.\n * @private\n */\n get: function () {\n return this.layerName;\n },\n set: function (value) {\n this.layerName = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"visible\", {\n /**\n * Gets or sets the `visibility` of the layer.\n * @private\n */\n get: function () {\n return this.isVisible;\n },\n set: function (value) {\n this.isVisible = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"graphics\", {\n /**\n * Gets `Graphics` context of the layer, used to draw various graphical content on layer.\n * @private\n */\n get: function () {\n if ((this.pdfGraphics == null)) {\n this.initializeGraphics(this.page);\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layers\", {\n /**\n * Gets the collection of `PdfPageLayer`, this collection handle by the class 'PdfPageLayerCollection'.\n * @private\n */\n get: function () {\n if (this.layer == null) {\n this.layer = new PdfPageLayerCollection(this.page);\n this.layer.sublayer = true;\n return this.layer;\n }\n else {\n return this.layer;\n }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Adds` a new PDF Page layer.\n * @private\n */\n PdfPageLayer.prototype.add = function () {\n var layer = new PdfPageLayer(this.pdfPage);\n layer.name = '';\n return layer;\n };\n /**\n * Returns a value indicating the `sign` of a single-precision floating-point number.\n * @private\n */\n PdfPageLayer.prototype.sign = function (number) {\n if (number === 0) {\n return 0;\n }\n else if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n };\n /**\n * `Initializes Graphics context` of the layer.\n * @private\n */\n PdfPageLayer.prototype.initializeGraphics = function (page) {\n var oPage = page;\n var gr = new GetResourceEventHandler(this.page);\n var cropBox = null;\n this.pdfGraphics = new PdfGraphics(page.size, gr, this.content);\n this.pdfGraphics.mediaBoxUpperRightBound = 0;\n if (oPage != null) {\n var sc = oPage.section.parent;\n if (sc != null) {\n this.pdfGraphics.colorSpace = sc.document.colorSpace;\n this.colorSpace = sc.document.colorSpace;\n }\n }\n // Transform coordinates to the left/top and activate margins.\n var isSame = (this.sign(page.origin.y) === this.sign(page.origin.x));\n // if (page != null) {\n if (page.origin.x >= 0 && page.origin.y >= 0 || !(isSame)) {\n this.pdfGraphics.initializeCoordinates();\n }\n else {\n // this.m_graphics.InitializeCoordinates(page);\n }\n var clipRect = oPage.section.getActualBounds(oPage, true);\n var margins = oPage.section.pageSettings.margins;\n if (this.clipPageTemplates) {\n if (page.origin.x >= 0 && page.origin.y >= 0) {\n this.pdfGraphics.clipTranslateMargins(clipRect);\n }\n }\n else {\n this.graphics.clipTranslateMargins(clipRect.x, clipRect.y, margins.left, margins.top, margins.right, margins.bottom);\n }\n this.pdfGraphics.setLayer(this);\n // this.bSaved = false;\n };\n Object.defineProperty(PdfPageLayer.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPageLayer;\n}());\nexport { PdfPageLayer };\n","/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nvar PdfCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `Collection` class.\n * @private\n */\n function PdfCollection() {\n //\n }\n Object.defineProperty(PdfCollection.prototype, \"count\", {\n // Properties\n /**\n * Gets the `Count` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCollection.prototype, \"list\", {\n /**\n * Gets the `list` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCollection;\n}());\nexport { PdfCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageLayerCollection.ts class for EJ2-PDF\n */\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfPageLayer } from './pdf-page-layer';\nimport { PdfCollection } from './../general/pdf-collection';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfStream } from './../primitives/pdf-stream';\n/**\n * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nvar PdfPageLayerCollection = /** @class */ (function (_super) {\n __extends(PdfPageLayerCollection, _super);\n function PdfPageLayerCollection(page) {\n var _this = _super.call(this) || this;\n /**\n * Stores the `number of first level layers` in the document.\n * @default 0\n * @private\n */\n _this.parentLayerCount = 0;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n _this.sublayer = false;\n /**\n * Stores the `optional content dictionary`.\n * @private\n */\n _this.optionalContent = new PdfDictionary();\n if (page instanceof PdfPageBase) {\n // if (page == null) {\n // throw new Error('ArgumentNullException:page');\n // }\n _this.page = page;\n var lPage = page;\n // if (lPage != null) {\n _this.parseLayers(lPage);\n // }\n }\n return _this;\n }\n PdfPageLayerCollection.prototype.items = function (index, value) {\n if (typeof index === 'number' && typeof value === 'undefined') {\n var obj = this.list[index];\n return obj;\n }\n else {\n if (value == null) {\n throw new Error('ArgumentNullException: layer');\n }\n if (value.page !== this.page) {\n throw new Error('ArgumentException: The layer belongs to another page');\n }\n // // Add/remove the layer.\n // let layer : PdfPageLayer = this.items(index);\n // if (layer != null) {\n // this.RemoveLayer(layer);\n // }\n // this.List[index] = value;\n // this.InsertLayer(index, value);\n }\n };\n PdfPageLayerCollection.prototype.add = function (firstArgument, secondArgument) {\n if (typeof firstArgument === 'undefined') {\n var layer = new PdfPageLayer(this.page);\n layer.name = '';\n this.add(layer);\n return layer;\n }\n else if (firstArgument instanceof PdfPageLayer) {\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var index = this.list.push(firstArgument);\n // Register layer.\n this.addLayer(index, firstArgument);\n return index;\n }\n else {\n return 0;\n }\n };\n /**\n * Registers `layer` at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.addLayer = function (index, layer) {\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.add(reference);\n };\n // private RemoveLayer(layer : PdfPageLayer) : void {\n // if (layer == null) {\n // throw new Error('ArgumentNullException:layer');\n // }\n // let reference : PdfReferenceHolder = new PdfReferenceHolder(layer);\n // if (this.page != null) {\n // this.page.Contents.Remove(reference);\n // }\n // }\n /**\n * Inserts `PdfPageLayer` into the collection at specified index.\n * @private\n */\n PdfPageLayerCollection.prototype.insert = function (index, layer) {\n // if (index < 0)\n // throw new ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\");\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var list = [];\n var length = this.list.length;\n for (var i = index; i < length; i++) {\n list.push(this.list.pop());\n }\n this.list.push(layer);\n for (var i = 0; i < list.length; i++) {\n this.list.push(list[i]);\n }\n // Register layer.\n this.insertLayer(index, layer);\n };\n /**\n * Registers layer at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.insertLayer = function (index, layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException:layer');\n }\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.insert(index, reference);\n };\n // tslint:disable\n /**\n * `Parses the layers`.\n * @private\n */\n PdfPageLayerCollection.prototype.parseLayers = function (loadedPage) {\n // if (loadedPage == null) {\n // throw new Error('ArgumentNullException:loadedPage');\n // }\n var contents = this.page.contents;\n var resource = this.page.getResources();\n var crossTable = null;\n var ocproperties = null;\n var propertie = null;\n var isLayerAdded = false;\n // if (loadedPage instanceof PdfPage) {\n crossTable = loadedPage.crossTable;\n // } else {\n // crossTable = (loadedPage as PdfLoadedPage).CrossTable;\n // Propertie = PdfCrossTable.Dereference(Resource[DictionaryProperties.Properties]) as PdfDictionary;\n // ocproperties = PdfCrossTable.Dereference((loadedPage as PdfLoadedPage).\n // Document.Catalog[DictionaryProperties.OCProperties]) as PdfDictionary;\n // }\n var saveStream = new PdfStream();\n var restoreStream = new PdfStream();\n var saveState = 'q';\n var newLine = '\\n';\n var restoreState = 'Q';\n // for (let index : number = 0; index < contents.Items.length; index++) {\n // let obj : IPdfPrimitive = contents[index];\n // let stream : PdfStream = crossTable.GetObject(obj) as PdfStream;\n // if (stream == null)\n // throw new PdfDocumentException(\"Invalid contents array.\");\n // // if (stream.Compress)\n // {\n // if (!loadedPage.Imported)\n // stream.Decompress();\n // }\n // byte[] contentId = stream.Data;\n // string str = PdfString.ByteToString(contentId);\n // if (!loadedPage.Imported && (contents.Count == 1) && ((stream.Data[stream.Data.Length - 2] ==\n // RestoreState) || (stream.Data[stream.Data.Length - 1] == RestoreState)))\n // {\n // byte[] content = stream.Data;\n // byte[] data = new byte[content.Length + 4];\n // data[0] = SaveState;\n // data[1] = NewLine;\n // content.CopyTo(data, 2);\n // data[data.Length - 2] = NewLine;\n // data[data.Length - 1] = RestoreState;\n // stream.Data = data;\n // }\n // if (ocproperties != null)\n // {\n // if (Propertie != null)\n // {\n // foreach (KeyValuePair prop in Propertie.Items)\n // {\n // String Key = prop.Key.ToString();\n // PdfReferenceHolder refh = prop.Value as PdfReferenceHolder;\n // PdfDictionary Dict = null;\n // if (refh != null)\n // {\n // Dict = refh.Object as PdfDictionary;\n // }\n // else\n // {\n // Dict = prop.Value as PdfDictionary;\n // }\n // PdfDictionary m_usage = PdfCrossTable.Dereference(Dict[DictionaryProperties.Usage]) as PdfDictionary;\n // if (m_usage != null)\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // PdfDictionary printoption = PdfCrossTable.Dereference(m_usage[DictionaryProperties.Print])\n // as PdfDictionary;\n // if (printoption != null)\n // {\n // layer.m_printOption = printoption;\n // foreach (KeyValuePair value in printoption.Items)\n // {\n // if (value.Key.Value.Equals(DictionaryProperties.PrintState))\n // {\n // string printState = (value.Value as PdfName).Value;\n // if (printState.Equals(DictionaryProperties.OCGON))\n // {\n // layer.PrintState = PdfPrintState.AlwaysPrint;\n // break;\n // }\n // else\n // {\n // layer.PrintState = PdfPrintState.NeverPrint;\n // break;\n // }\n // }\n // }\n // }\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // List.add(layer);\n // isLayerAdded = true;\n // if(!str.Contains(\"EMC\"))\n // break;\n // }\n // }\n // else\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // if(Dict.ContainsKey(DictionaryProperties.Name))\n // {\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // }\n // isLayerAdded = true;\n // break;\n // }\n // }\n // }\n // }\n // }\n // if (!isLayerAdded)\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // }\n // else\n // isLayerAdded = false;\n // }\n var saveData = [];\n saveData.push(saveState);\n saveStream.data = saveData;\n contents.insert(0, new PdfReferenceHolder(saveStream));\n saveData = [];\n saveData.push(restoreState);\n restoreStream.data = saveData;\n contents.insert(contents.count, new PdfReferenceHolder(restoreStream));\n };\n /**\n * Returns `index of` the `PdfPageLayer` in the collection if exists, -1 otherwise.\n * @private\n */\n PdfPageLayerCollection.prototype.indexOf = function (layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException: layer');\n }\n var index = this.list.indexOf(layer);\n return index;\n };\n return PdfPageLayerCollection;\n}(PdfCollection));\nexport { PdfPageLayerCollection };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfResources } from './../graphics/pdf-resources';\n/**\n * The abstract base class for all pages,\n * `PdfPageBase` class provides methods and properties to create PDF pages and its elements.\n * @private\n */\nvar PdfPageBase = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `PdfPageBase` class.\n * @private\n */\n function PdfPageBase(dictionary) {\n /**\n * `Index` of the default layer.\n * @default -1.\n * @private\n */\n this.defLayerIndex = -1;\n /**\n * Local variable to store if page `updated`.\n * @default false.\n * @private\n */\n this.modified = false;\n /**\n * Instance of `DictionaryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pageDictionary = dictionary;\n }\n Object.defineProperty(PdfPageBase.prototype, \"section\", {\n //Properties\n /**\n * Gets the `section` of a page.\n * @private\n */\n get: function () {\n // if (this.pdfSection === null) {\n // throw new Error('PdfException : Page must be added to some section before using.');\n // }\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"dictionary\", {\n /**\n * Gets the page `dictionary`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayer\", {\n /**\n * Gets the `default layer` of the page (Read only).\n * @private\n */\n get: function () {\n var layer = this.layers;\n var index = this.defaultLayerIndex;\n var returnlayer = layer.items(index);\n return returnlayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayerIndex\", {\n /**\n * Gets or sets `index of the default layer`.\n * @private\n */\n get: function () {\n if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {\n var layer = this.layerCollection.add();\n this.defLayerIndex = this.layerCollection.indexOf(layer);\n }\n return this.defLayerIndex;\n },\n /**\n * Gets or sets` index of the default layer`.\n * @private\n */\n set: function (value) {\n if (value < 0 || value > this.layers.count - 1) {\n throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');\n }\n else {\n this.defLayerIndex = value;\n this.modified = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"layers\", {\n /**\n * Gets the collection of the page's `layers` (Read only).\n * @private\n */\n get: function () {\n if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {\n this.layerCollection = new PdfPageLayerCollection(this);\n }\n return this.layerCollection;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return an instance of `PdfResources` class.\n * @private\n */\n PdfPageBase.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n Object.defineProperty(PdfPageBase.prototype, \"contents\", {\n /**\n * Gets `array of page's content`.\n * @private\n */\n get: function () {\n var obj = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);\n var contents = obj;\n var rh = obj;\n if (contents == null) {\n contents = new PdfArray();\n this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);\n }\n return contents;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `resources`.\n * @private\n */\n PdfPageBase.prototype.setResources = function (res) {\n this.resources = res;\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n this.modified = true;\n };\n return PdfPageBase;\n}());\nexport { PdfPageBase };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { SizeF, RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nvar PdfAnnotationCollection = /** @class */ (function () {\n function PdfAnnotationCollection(page) {\n // Constants\n /**\n * `Error` constant message.\n * @private\n */\n this.alreadyExistsAnnotationError = 'This annotatation had been already added to page';\n /**\n * `Error` constant message.\n * @private\n */\n this.missingAnnotationException = 'Annotation is not contained in collection.';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Array of the `annotations`.\n * @private\n */\n this.internalAnnotations = new PdfArray();\n /**\n * privte `list` for the annotations.\n * @private\n */\n this.lists = [];\n if (typeof page !== 'undefined') {\n this.page = page;\n }\n }\n Object.defineProperty(PdfAnnotationCollection.prototype, \"annotations\", {\n /**\n * Gets the `PdfAnnotation` object at the specified index. Read-Only.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n set: function (value) {\n this.internalAnnotations = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Adds` a new annotation to the collection.\n * @private\n */\n PdfAnnotationCollection.prototype.add = function (annotation) {\n // this.SetPrint(annotation);\n this.doAdd(annotation);\n };\n /**\n * `Adds` a Annotation to collection.\n * @private\n */\n /* tslint:disable */\n PdfAnnotationCollection.prototype.doAdd = function (annotation) {\n if (typeof annotation.destination !== 'undefined') {\n var layout = new PdfStringLayouter();\n var layoutResult = layout.layout(annotation.text, annotation.font, annotation.stringFormat, new SizeF((annotation.bounds.width), 0), false, new SizeF(0, 0));\n var lastPosition = annotation.bounds.y;\n if (layoutResult.lines.length === 1) {\n var size = annotation.font.measureString(layoutResult.lines[0].text);\n annotation.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annotation.text = layoutResult.lines[0].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, annotation.bounds.y, annotation.bounds.width, annotation.bounds.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n }\n else {\n for (var i = 0; i < layoutResult.lines.length; i++) {\n var size = annotation.font.measureString(layoutResult.lines[i].text);\n if (i === 0) {\n annotation.bounds = new RectangleF(annotation.bounds.x, lastPosition, size.width, size.height);\n annotation.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, lastPosition, size.width, size.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n //Update y for drawing next line of the text.\n lastPosition += annotation.bounds.height;\n }\n else {\n var annot = annotation.clone();\n annot.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annot.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annot.text, annot.font, null, annot.brush, annot.bounds.x, annot.bounds.y, annot.bounds.width, annot.bounds.height, null);\n //Add annotation to dictionary.\n annot.setPage(this.page);\n this.setColor(annot);\n this.internalAnnotations.add(new PdfReferenceHolder(annot));\n this.lists.push(annot);\n //Update y for drawing next line of the text.\n lastPosition += annot.bounds.height;\n }\n }\n }\n }\n else {\n annotation.setPage(this.page);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n return this.lists.push(annotation);\n }\n };\n /* tslint:enable */\n /**\n * `Set a color of an annotation`.\n * @private\n */\n PdfAnnotationCollection.prototype.setColor = function (annotation) {\n var cs = PdfColorSpace.Rgb;\n var colours = annotation.color.toArray(cs);\n annotation.dictionary.items.setValue(this.dictionaryProperties.c, colours);\n };\n Object.defineProperty(PdfAnnotationCollection.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` representing this object.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationCollection;\n}());\nexport { PdfAnnotationCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary, SaveTemplateEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { SizeF } from './../drawing/pdf-drawing';\nimport { PdfAnnotationCollection } from './../annotations/annotation-collection';\nimport { PdfPageLayer } from './pdf-page-layer';\n/**\n * Provides methods and properties to create pages and its elements.\n * `PdfPage` class inherited from the `PdfPageBase` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPage = /** @class */ (function (_super) {\n __extends(PdfPage, _super);\n //constructors\n /**\n * Initialize the new instance for `PdfPage` class.\n * @private\n */\n function PdfPage() {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Stores the instance of `PdfAnnotationCollection` class.\n * @hidden\n * @default null\n * @private\n */\n _this.annotationCollection = null;\n /**\n * Stores the instance of `PageBeginSave` event for Page Number Field.\n * @default null\n * @private\n */\n _this.beginSave = null;\n _this.initialize();\n return _this;\n }\n Object.defineProperty(PdfPage.prototype, \"document\", {\n //Properties\n /**\n * Gets current `document`.\n * @private\n */\n get: function () {\n if (this.section !== null && this.section.parent !== null) {\n return this.section.parent.document;\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"graphics\", {\n /**\n * Get the current `graphics`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // get graphics\n * let graphics : PdfGraphics = page1.graphics;\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var result = this.defaultLayer.graphics;\n result.currentPage = this;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"crossTable\", {\n /**\n * Gets the `cross table`.\n * @private\n */\n get: function () {\n if (this.section === null) {\n throw new Error('PdfDocumentException : Page is not created');\n }\n return this.section.parent === null ? this.section.parentDocument.crossTable : this.section.parent.document.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"size\", {\n /**\n * Gets the size of the PDF page- Read only.\n * @public\n */\n get: function () {\n return this.section.pageSettings.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"origin\", {\n /**\n * Gets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.section.pageSettings.origin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"annotations\", {\n /**\n * Gets a collection of the `annotations` of the page- Read only.\n * @private\n */\n get: function () {\n if (this.annotationCollection == null) {\n this.annotationCollection = new PdfAnnotationCollection(this);\n // if (!this.Dictionary.ContainsKey(this.dictionaryProperties.annots)) {\n this.dictionary.items.setValue(this.dictionaryProperties.annots, this.annotationCollection.element);\n // }\n this.annotationCollection.annotations = this.dictionary.items.getValue(this.dictionaryProperties.annots);\n }\n return this.annotationCollection;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` a page.\n * @private\n */\n PdfPage.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName('Page'));\n this.dictionary.pageBeginDrawTemplate = new SaveTemplateEventHandler(this);\n };\n /**\n * Sets parent `section` to the page.\n * @private\n */\n PdfPage.prototype.setSection = function (section) {\n this.section = section;\n this.dictionary.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(section));\n };\n /**\n * `Resets the progress`.\n * @private\n */\n PdfPage.prototype.resetProgress = function () {\n this.isProgressOn = false;\n };\n /**\n * Get the page size reduced by page margins and page template dimensions.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the specified point using `getClientSize` method\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfPage.prototype.getClientSize = function () {\n var returnValue = this.section.getActualBounds(this, true);\n return new SizeF(returnValue.width, returnValue.height);\n };\n /**\n * Helper method to retrive the instance of `PageBeginSave` event for header and footer elements.\n * @private\n */\n PdfPage.prototype.pageBeginSave = function () {\n var doc = this.document;\n if (typeof doc !== undefined && doc != null) {\n this.drawPageTemplates(doc);\n }\n if (this.beginSave != null && typeof this.beginSave !== 'undefined') {\n this.beginSave(this);\n }\n };\n /**\n * Helper method to draw template elements.\n * @private\n */\n PdfPage.prototype.drawPageTemplates = function (document) {\n // Draw Background templates.\n var hasBackTemplates = this.section.containsTemplates(document, this, false);\n if (hasBackTemplates) {\n var backLayer = new PdfPageLayer(this, false);\n this.layers.insert(0, backLayer);\n this.section.drawTemplates(this, backLayer, document, false);\n if (backLayer.graphics !== null && typeof backLayer.graphics !== 'undefined') {\n for (var i = 0; i < backLayer.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = backLayer.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(backLayer.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n // Draw Foreground templates.\n var hasFrontTemplates = this.section.containsTemplates(document, this, true);\n if (hasFrontTemplates) {\n var frontLayer = new PdfPageLayer(this, false);\n this.layers.add(frontLayer);\n this.section.drawTemplates(this, frontLayer, document, true);\n }\n };\n return PdfPage;\n}(PdfPageBase));\nexport { PdfPage };\n","/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nvar PageAddedEventArgs = /** @class */ (function () {\n function PageAddedEventArgs(page) {\n if (typeof page !== 'undefined') {\n this.pdfPage = page;\n }\n else {\n this.pdfPage = null;\n }\n }\n Object.defineProperty(PageAddedEventArgs.prototype, \"page\", {\n /**\n * Gets the `newly added page`.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return PageAddedEventArgs;\n}());\nexport { PageAddedEventArgs };\n","/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nvar PdfSectionPageCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfSectionPageCollection` class.\n * @private\n */\n function PdfSectionPageCollection(section) {\n // Fields\n /**\n * @hidden\n * @private\n */\n this.pdfSection = null;\n if (section == null) {\n throw Error('ArgumentNullException(\"section\")');\n }\n this.section = section;\n }\n Object.defineProperty(PdfSectionPageCollection.prototype, \"section\", {\n // Properties\n /**\n * Gets the `PdfPage` at the specified index.\n * @private\n */\n get: function () {\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public Methods\n /**\n * `Determines` whether the specified page is within the collection.\n * @private\n */\n PdfSectionPageCollection.prototype.contains = function (page) {\n return this.section.contains(page);\n };\n /**\n * `Removes` the specified page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.remove = function (page) {\n this.section.remove(page);\n };\n /**\n * `Adds` a new page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.add = function () {\n return this.section.add();\n };\n return PdfSectionPageCollection;\n}());\nexport { PdfSectionPageCollection };\n","import { TemplateType } from './../pages/enum';\n// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;\n/**\n * `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.\n * @private\n */\nvar PdfDocumentTemplate = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfDocumentTemplate` class.\n * @public\n */\n function PdfDocumentTemplate() {\n //\n }\n Object.defineProperty(PdfDocumentTemplate.prototype, \"left\", {\n // private m_stamps : PdfStampCollection;\n // Properties\n /**\n * `Left` page template object.\n * @public\n */\n get: function () {\n return this.leftTemplate;\n },\n set: function (value) {\n this.leftTemplate = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"top\", {\n /**\n * `Top` page template object.\n * @public\n */\n get: function () {\n return this.topTemplate;\n },\n set: function (value) {\n this.topTemplate = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"right\", {\n /**\n * `Right` page template object.\n * @public\n */\n get: function () {\n return this.rightTemplate;\n },\n set: function (value) {\n this.rightTemplate = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"bottom\", {\n /**\n * `Bottom` page template object.\n * @public\n */\n get: function () {\n return this.bottomTemplate;\n },\n set: function (value) {\n this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenLeft\", {\n /**\n * `EvenLeft` page template object.\n * @public\n */\n get: function () {\n return this.evenLeft;\n },\n set: function (value) {\n this.evenLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenTop\", {\n /**\n * `EvenTop` page template object.\n * @public\n */\n get: function () {\n return this.evenTop;\n },\n set: function (value) {\n this.evenTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenRight\", {\n /**\n * `EvenRight` page template object.\n * @public\n */\n get: function () {\n return this.evenRight;\n },\n set: function (value) {\n this.evenRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenBottom\", {\n /**\n * `EvenBottom` page template object.\n * @public\n */\n get: function () {\n return this.evenBottom;\n },\n set: function (value) {\n this.evenBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddLeft\", {\n /**\n * `OddLeft` page template object.\n * @public\n */\n get: function () {\n return this.oddLeft;\n },\n set: function (value) {\n this.oddLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddTop\", {\n /**\n * `OddTop` page template object.\n * @public\n */\n get: function () {\n return this.oddTop;\n },\n set: function (value) {\n this.oddTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddRight\", {\n /**\n * `OddRight` page template object.\n * @public\n */\n get: function () {\n return this.oddRight;\n },\n set: function (value) {\n this.oddRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddBottom\", {\n /**\n * `OddBottom` page template object.\n * @public\n */\n get: function () {\n return this.oddBottom;\n },\n set: function (value) {\n this.oddBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Returns `left` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getLeft = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenLeft != null) ? this.EvenLeft : this.left;\n }\n else {\n template = (this.OddLeft != null) ? this.OddLeft : this.left;\n }\n // }\n return template;\n };\n /**\n * Returns `top` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getTop = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenTop != null) ? this.EvenTop : this.top;\n }\n else {\n template = (this.OddTop != null) ? this.OddTop : this.top;\n }\n // }\n return template;\n };\n /**\n * Returns `right` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getRight = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenRight != null) ? this.EvenRight : this.right;\n }\n else {\n template = (this.OddRight != null) ? this.OddRight : this.right;\n }\n // }\n return template;\n };\n /**\n * Returns `bottom` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getBottom = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;\n }\n else {\n template = (this.OddBottom != null) ? this.OddBottom : this.bottom;\n }\n // }\n return template;\n };\n /**\n * Checks whether the page `is even`.\n * @private\n */\n PdfDocumentTemplate.prototype.isEven = function (page) {\n var pages = page.section.document.pages;\n var index = 0;\n if (pages.pageCollectionIndex.containsKey(page)) {\n index = pages.pageCollectionIndex.getValue(page) + 1;\n }\n else {\n index = pages.indexOf(page) + 1;\n }\n var even = ((index % 2) === 0);\n return even;\n };\n /**\n * Checks a `template element`.\n * @private\n */\n PdfDocumentTemplate.prototype.checkElement = function (templateElement, type) {\n if (templateElement != null) {\n if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {\n throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');\n }\n templateElement.type = type;\n }\n return templateElement;\n };\n return PdfDocumentTemplate;\n}());\nexport { PdfDocumentTemplate };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSectionTemplate.ts class for EJ2-PDF\n */\nimport { PdfDocumentTemplate } from './../document/pdf-document-template';\n/**\n * Represents a `page template` for all the pages in the section.\n */\nvar PdfSectionTemplate = /** @class */ (function (_super) {\n __extends(PdfSectionTemplate, _super);\n // Constructors\n /**\n * `Creates a new object`.\n * @private\n */\n function PdfSectionTemplate() {\n var _this = _super.call(this) || this;\n _this.leftValue = _this.topValue = _this.rightValue = _this.bottomValue = _this.stampValue = true;\n return _this;\n }\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentLeftTemplate\", {\n // Properties\n /**\n * Gets or sets value indicating whether parent `Left page template should be used or not`.\n * @private\n */\n get: function () {\n return this.leftValue;\n },\n set: function (value) {\n this.leftValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentTopTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Top page template should be used or not`.\n * @private\n */\n get: function () {\n return this.topValue;\n },\n set: function (value) {\n this.topValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentRightTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Right page template should be used or not`.\n * @private\n */\n get: function () {\n return this.rightValue;\n },\n set: function (value) {\n this.rightValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentBottomTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Bottom page template should be used or not`.\n * @private\n */\n get: function () {\n return this.bottomValue;\n },\n set: function (value) {\n this.bottomValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentStamps\", {\n /**\n * Gets or sets value indicating whether the `stamp value` is true or not.\n * @private\n */\n get: function () {\n return this.stampValue;\n },\n set: function (value) {\n this.stampValue = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfSectionTemplate;\n}(PdfDocumentTemplate));\nexport { PdfSectionTemplate };\n","import { PdfPage } from './pdf-page';\nimport { PageAddedEventArgs } from './page-added-event-arguments';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { SaveSectionEventHandler } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfSectionCollection } from './pdf-section-collection';\nimport { PdfSectionPageCollection } from './pdf-section-page-collection';\nimport { RectangleF } from './../drawing/pdf-drawing';\nimport { PdfSectionTemplate } from './pdf-section-templates';\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nvar PdfSection = /** @class */ (function () {\n function PdfSection(document, pageSettings) {\n //Fields\n //public PageAdded() : PageAddedEventArgs.PageAddedEventHandler = new PageAddedEventArgs.PageAddedEventHandler(Object,args)\n /**\n * @hidden\n * @private\n */\n this.pageAdded = new PageAddedEventArgs();\n /**\n * @hidden\n * @private\n */\n this.pdfPages = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pdfDocument = document;\n if (typeof pageSettings === 'undefined') {\n this.settings = document.pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n else {\n this.settings = pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n this.initialize();\n }\n Object.defineProperty(PdfSection.prototype, \"parent\", {\n //Property\n /**\n * Gets or sets the `parent`.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n set: function (value) {\n this.sectionCollection = value;\n this.section.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"parentDocument\", {\n /**\n * Gets the `parent document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pageSettings\", {\n /**\n * Gets or sets the `page settings` of the section.\n * @private\n */\n get: function () {\n return this.settings;\n },\n set: function (value) {\n if (value != null) {\n this.settings = value;\n }\n else {\n throw Error('Value can not be null.');\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.section;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"count\", {\n /**\n * Gets the `count` of the pages in the section.\n * @private\n */\n get: function () {\n return this.pagesReferences.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"template\", {\n /**\n * Gets or sets a `template` for the pages in the section.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfSectionTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"document\", {\n /**\n * Gets the `document`.\n * @private\n */\n get: function () {\n return this.sectionCollection.document;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pages\", {\n /**\n * Gets the collection of `pages` in a section (Read only)\n * @private\n */\n get: function () {\n if (this.pagesCollection == null || typeof this.pagesCollection === 'undefined') {\n this.pagesCollection = new PdfSectionPageCollection(this);\n }\n return this.pagesCollection;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * `Return the page collection` of current section.\n * @private\n */\n PdfSection.prototype.getPages = function () {\n return this.pdfPages;\n };\n /**\n * `Translates` point into native coordinates of the page.\n * @private\n */\n PdfSection.prototype.pointToNativePdf = function (page, point) {\n var bounds = this.getActualBounds(page, true);\n point.x += bounds.x;\n point.y = this.pageSettings.height - (point.y);\n return point;\n };\n /**\n * Sets the page setting of the current section.\n * @public\n * @param settings Instance of `PdfPageSettings`\n */\n PdfSection.prototype.setPageSettings = function (settings) {\n this.settings = settings;\n this.state.orientation = settings.orientation;\n this.state.rotate = settings.rotate;\n this.state.size = settings.size;\n this.state.origin = settings.origin;\n };\n /**\n * `Initializes` the object.\n * @private\n */\n PdfSection.prototype.initialize = function () {\n this.pagesReferences = new PdfArray();\n this.section = new PdfDictionary();\n this.state = new PageSettingsState(this.pdfDocument);\n this.section.sectionBeginSave = new SaveSectionEventHandler(this, this.state);\n this.pageCount = new PdfNumber(0);\n this.section.items.setValue(this.dictionaryProperties.count, this.pageCount);\n this.section.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pages));\n this.section.items.setValue(this.dictionaryProperties.kids, this.pagesReferences);\n };\n /**\n * Checks whether any template should be printed on this layer.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground Layer z-order.\n * @returns True - if some content should be printed on the layer, False otherwise.\n */\n PdfSection.prototype.containsTemplates = function (document, page, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionTemplates = this.getSectionTemplates(page, foreground);\n return (documentHeaders.length > 0 || sectionTemplates.length > 0);\n };\n /**\n * Returns array of the document templates.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param headers If true - return headers/footers, if false - return simple templates.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the document templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getDocumentTemplates = function (document, page, foreground) {\n var templates = [];\n if (this.template.applyDocumentTopTemplate && document.template.getTop(page) != null) {\n if ((!(document.template.getTop(page).foreground || foreground)) || (document.template.getTop(page).foreground && foreground)) {\n templates.push(document.template.getTop(page));\n }\n }\n if (this.template.applyDocumentBottomTemplate && document.template.getBottom(page) != null) {\n if ((!(document.template.getBottom(page).foreground || foreground)) || (document.template.getBottom(page).foreground && foreground)) {\n templates.push(document.template.getBottom(page));\n }\n }\n if (this.template.applyDocumentLeftTemplate && document.template.getLeft(page) != null) {\n if ((!(document.template.getLeft(page).foreground || foreground)) || (document.template.getLeft(page).foreground && foreground)) {\n templates.push(document.template.getLeft(page));\n }\n }\n if (this.template.applyDocumentRightTemplate && document.template.getRight(page) != null) {\n if ((!(document.template.getRight(page).foreground || foreground)) || (document.template.getRight(page).foreground && foreground)) {\n templates.push(document.template.getRight(page));\n }\n }\n return templates;\n };\n /**\n * Returns array of the section templates.\n * @private\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the section templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getSectionTemplates = function (page, foreground) {\n var templates = [];\n if (this.template.getTop(page) != null) {\n var pageTemplate = this.template.getTop(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getBottom(page) != null) {\n var pageTemplate = this.template.getBottom(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getLeft(page) != null) {\n var pageTemplate = this.template.getLeft(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getRight(page) != null) {\n var pageTemplate = this.template.getRight(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n return templates;\n };\n /* tslint:enable */\n /**\n * `Adds` the specified page.\n * @private\n */\n PdfSection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var r = this.checkPresence(page);\n this.pdfPages.push(page);\n this.pagesReferences.add(r);\n page.setSection(this);\n page.resetProgress();\n this.pageAddedMethod(page);\n }\n };\n /**\n * `Checks the presence`.\n * @private\n */\n PdfSection.prototype.checkPresence = function (page) {\n var rh = new PdfReferenceHolder(page);\n var contains = false;\n var sc = this.parent;\n for (var index = 0; index < sc.section.length; index++) {\n var section = sc.section[index];\n contains = contains || section.contains(page);\n }\n return rh;\n };\n /**\n * `Determines` whether the page in within the section.\n * @private\n */\n PdfSection.prototype.contains = function (page) {\n var index = this.indexOf(page);\n return (0 <= index);\n };\n /**\n * Get the `index of` the page.\n * @private\n */\n PdfSection.prototype.indexOf = function (page) {\n for (var index = 0; index < this.pdfPages.length; index++) {\n if (this.pdfPages[index] === page) {\n return this.pdfPages.indexOf(page);\n }\n }\n var r = new PdfReferenceHolder(page);\n return this.pagesReferences.indexOf(r);\n };\n /**\n * Call two event's methods.\n * @hidden\n * @private\n */\n PdfSection.prototype.pageAddedMethod = function (page) {\n //Create event's arguments\n var args = new PageAddedEventArgs(page);\n this.onPageAdded(args);\n var parent = this.parent;\n parent.document.pages.onPageAdded(args);\n this.pageCount.intValue = this.count;\n };\n /**\n * Called when the page has been added.\n * @hidden\n * @private\n */\n PdfSection.prototype.onPageAdded = function (args) {\n //\n };\n PdfSection.prototype.getActualBounds = function (arg1, arg2, arg3) {\n if (arg1 instanceof PdfPage && typeof arg2 === 'boolean') {\n var result = void 0;\n var document_1 = this.parent.document;\n result = this.getActualBounds(document_1, arg1, arg2);\n return result;\n }\n else {\n arg1 = arg1;\n arg2 = arg2;\n arg3 = arg3;\n var bounds = new RectangleF(0, 0, 0, 0);\n bounds.height = (arg3) ? this.pageSettings.size.height : this.pageSettings.getActualSize().height;\n bounds.width = (arg3) ? this.pageSettings.size.width : this.pageSettings.getActualSize().width;\n var left = this.getLeftIndentWidth(arg1, arg2, arg3);\n var top_1 = this.getTopIndentHeight(arg1, arg2, arg3);\n var right = this.getRightIndentWidth(arg1, arg2, arg3);\n var bottom = this.getBottomIndentHeight(arg1, arg2, arg3);\n bounds.x += left;\n bounds.y += top_1;\n bounds.width -= (left + right);\n bounds.height -= (top_1 + bottom);\n return bounds;\n }\n };\n /**\n * Calculates width of the `left indent`.\n * @private\n */\n PdfSection.prototype.getLeftIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.left : 0;\n var templateWidth = (this.template.getLeft(page) != null) ? this.template.getLeft(page).width : 0;\n var docTemplateWidth = (document.template.getLeft(page) != null) ? document.template.getLeft(page).width : 0;\n value += (this.template.applyDocumentLeftTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the top indent.\n * @private\n */\n PdfSection.prototype.getTopIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.top : 0;\n var templateHeight = (this.template.getTop(page) != null) ? this.template.getTop(page).height : 0;\n var docTemplateHeight = (document.template.getTop(page) != null) ? document.template.getTop(page).height : 0;\n value += (this.template.applyDocumentTopTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * Calculates `width` of the right indent.\n * @private\n */\n PdfSection.prototype.getRightIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.right : 0;\n var templateWidth = (this.template.getRight(page) != null) ? this.template.getRight(page).width : 0;\n var docTemplateWidth = (document.template.getRight(page) != null) ? document.template.getRight(page).width : 0;\n value += (this.template.applyDocumentRightTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the bottom indent.\n * @private\n */\n PdfSection.prototype.getBottomIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.bottom : 0;\n var templateHeight = (this.template.getBottom(page) != null) ? this.template.getBottom(page).height : 0;\n var docTemplateHeight = (document.template.getBottom(page) != null) ? document.template.getBottom(page).height : 0;\n value += (this.template.applyDocumentBottomTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * `Removes` the page from the section.\n * @private\n */\n PdfSection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var index = this.pdfPages.indexOf(page);\n this.pagesReferences.removeAt(index);\n var temproaryPages = [];\n for (var j = 0; j < index; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n for (var j = index + 1; j < this.pdfPages.length; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n this.pdfPages = temproaryPages;\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSection.prototype.applyPageSettings = function (container, parentSettings, state) {\n var bounds = new RectangleF(state.origin, state.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n var rotate = 0;\n rotate = PdfSectionCollection.rotateFactor * state.rotate;\n var angle = new PdfNumber(rotate);\n container.items.setValue(this.dictionaryProperties.rotate, angle);\n };\n /**\n * Catches the Save event of the dictionary.\n * @hidden\n * @private\n */\n PdfSection.prototype.beginSave = function (state, writer) {\n var doc = writer.document;\n this.applyPageSettings(this.section, doc.pageSettings, state);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplates = function (page, layer, document, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionHeaders = this.getSectionTemplates(page, foreground);\n this.drawTemplatesHelper(layer, document, documentHeaders);\n this.drawTemplatesHelper(layer, document, sectionHeaders);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplatesHelper = function (layer, document, templates) {\n if (templates != null && templates.length > 0) {\n var len = templates.length;\n for (var i = 0; i < len; i++) {\n var template = templates[i];\n template.draw(layer, document);\n }\n }\n };\n return PdfSection;\n}());\nexport { PdfSection };\nvar PageSettingsState = /** @class */ (function () {\n //Public Constructor\n /**\n * New instance to store the `PageSettings`.\n * @private\n */\n function PageSettingsState(document) {\n this.pageOrientation = document.pageSettings.orientation;\n this.pageRotate = document.pageSettings.rotate;\n this.pageSize = document.pageSettings.size;\n this.pageOrigin = document.pageSettings.origin;\n }\n Object.defineProperty(PageSettingsState.prototype, \"orientation\", {\n //public Properties\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (value) {\n this.pageOrientation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"rotate\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageRotate;\n },\n set: function (value) {\n this.pageRotate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"size\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.pageSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"origin\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n return PageSettingsState;\n}());\nexport { PageSettingsState };\n","import { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfDictionary, SaveSectionCollectionEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfSection } from './pdf-section';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nvar PdfSectionCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n function PdfSectionCollection(document) {\n /**\n * @hidden\n * @private\n */\n this.sections = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (document === null) {\n // throw new Error('ArgumentNullException : document');\n // }\n this.pdfDocument = document.clone();\n this.initialize();\n }\n Object.defineProperty(PdfSectionCollection.prototype, \"section\", {\n //Properties\n /**\n * Gets the `Section` collection.\n */\n get: function () {\n return this.sections;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"document\", {\n /**\n * Gets a parent `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"count\", {\n /**\n * Gets the `number of sections` in a document.\n * @private\n */\n get: function () {\n return this.sections.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pages;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Initializes the object`.\n * @private\n */\n PdfSectionCollection.prototype.initialize = function () {\n this.sectionCount = new PdfNumber(0);\n this.sectionCollection = new PdfArray();\n this.pages = new PdfDictionary();\n this.pages.beginSave = new SaveSectionCollectionEventHandler(this);\n this.pages.items.setValue(this.dictionaryProperties.type, new PdfName('Pages'));\n this.pages.items.setValue(this.dictionaryProperties.kids, this.sectionCollection);\n this.pages.items.setValue(this.dictionaryProperties.count, this.sectionCount);\n this.pages.items.setValue(this.dictionaryProperties.resources, new PdfDictionary());\n this.setPageSettings(this.pages, this.pdfDocument.pageSettings);\n };\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n PdfSectionCollection.prototype.pdfSectionCollection = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException()');\n }\n return this.sections[index];\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSectionCollection.prototype.setPageSettings = function (container, pageSettings) {\n // if (container === null) {\n // throw new Error('ArgumentNullException : container');\n // }\n // if (pageSettings === null) {\n // throw new Error('ArgumentNullException : pageSettings');\n // }\n var bounds = new RectangleF(new PointF(), pageSettings.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n };\n /**\n * `Adds` the specified section.\n * @private\n */\n PdfSectionCollection.prototype.add = function (section) {\n if (typeof section === 'undefined') {\n var section_1 = new PdfSection(this.pdfDocument);\n this.add(section_1);\n return section_1;\n }\n else {\n // if (section === null) {\n // throw new Error('ArgumentNullException : section');\n // }\n var r = this.checkSection(section);\n this.sections.push(section);\n section.parent = this;\n this.sectionCollection.add(r);\n return this.sections.indexOf(section);\n }\n };\n /**\n * `Checks` if the section is within the collection.\n * @private\n */\n PdfSectionCollection.prototype.checkSection = function (section) {\n var r = new PdfReferenceHolder(section);\n var contains = this.sectionCollection.contains(r);\n // if (contains) {\n // throw new Error('ArgumentException : The object can not be added twice to the collection,section');\n // }\n return r;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @private\n */\n PdfSectionCollection.prototype.countPages = function () {\n var count = 0;\n this.sections.forEach(function (n) { return (count += n.count); });\n return count;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @hidden\n * @private\n */\n PdfSectionCollection.prototype.beginSave = function () {\n this.sectionCount.intValue = this.countPages();\n };\n //Fields\n /**\n * Rotate factor for page `rotation`.\n * @default 90\n * @private\n */\n PdfSectionCollection.rotateFactor = 90;\n return PdfSectionCollection;\n}());\nexport { PdfSectionCollection };\n","import { PdfPage } from './pdf-page';\nimport { Dictionary } from './../collections/dictionary';\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nvar PdfDocumentPageCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfPageCollection` class.\n * @private\n */\n function PdfDocumentPageCollection(document) {\n /**\n * It holds the page collection with the `index`.\n * @private\n */\n this.pdfPageCollectionIndex = new Dictionary();\n this.document = document;\n }\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"count\", {\n //Property\n /**\n * Gets the total `number of the pages`.\n * @private\n */\n get: function () {\n return this.countPages();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"pageCollectionIndex\", {\n /**\n * Gets a `page index` from the document.\n * @private\n */\n get: function () {\n return this.pdfPageCollectionIndex;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocumentPageCollection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var section = this.getLastSection();\n section.add(page);\n }\n };\n /**\n * Returns `last section` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getLastSection = function () {\n var sc = this.document.sections;\n if (sc.section.length === 0) {\n sc.add();\n }\n var section = sc.section[sc.section.length - 1];\n return section;\n };\n /**\n * Called when `new page has been added`.\n * @private\n */\n PdfDocumentPageCollection.prototype.onPageAdded = function (args) {\n // if (PageAdded !== null)\n // {\n // PageAdded(this, args);\n // }\n };\n /**\n * Gets the `total number of pages`.\n * @private\n */\n PdfDocumentPageCollection.prototype.countPages = function () {\n var sc = this.document.sections;\n var count = 0;\n for (var index = 0; index < sc.section.length; index++) {\n count += sc.section[index].count;\n }\n return count;\n };\n /**\n * Gets the `page object` from page index.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPageByIndex = function (index) {\n return this.getPage(index);\n };\n /**\n * Gets a page by its `index` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPage = function (index) {\n if ((index < 0) || (index >= this.count)) {\n throw Error('ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\")');\n }\n var page = null;\n var sectionStartIndex = 0;\n var sectionCount = 0;\n var pageIndex = 0;\n var length = this.document.sections.count;\n for (var i = 0; i < length; i++) {\n var section = this.document.sections.section[i];\n sectionCount = section.count;\n pageIndex = index - sectionStartIndex;\n // We found a section containing the page.\n if ((index >= sectionStartIndex && pageIndex < sectionCount)) {\n page = section.getPages()[pageIndex];\n break;\n }\n sectionStartIndex += sectionCount;\n }\n return page;\n };\n /**\n * Gets the `index of` the page in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.indexOf = function (page) {\n var index = -1;\n if (page == null) {\n throw new Error('ArgumentNullException: page');\n }\n else {\n var numPages = 0;\n for (var i = 0, len = this.document.sections.count; i < len; i++) {\n var section = this.document.sections.pdfSectionCollection(i);\n index = section.indexOf(page);\n if (index >= 0) {\n index += numPages;\n break;\n }\n else {\n index = -1;\n }\n numPages += section.count;\n }\n }\n return index;\n };\n /**\n * `Removes` the specified page.\n * @private\n */\n PdfDocumentPageCollection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var section = null;\n var len;\n for (var i = 0, len_1 = this.document.sections.count; i < len_1; i++) {\n section = this.document.sections.pdfSectionCollection(i);\n if (section.pages.contains(page)) {\n section.pages.remove(page);\n break;\n }\n }\n return section;\n };\n return PdfDocumentPageCollection;\n}());\nexport { PdfDocumentPageCollection };\n","/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\n/**\n * `Collection of the cached objects`.\n * @private\n */\nvar PdfCacheCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfCacheCollection` class.\n * @private\n */\n function PdfCacheCollection() {\n this.referenceObjects = [];\n this.pdfFontCollection = new Dictionary();\n }\n // Public methods\n /**\n * `Searches` for the similar cached object. If is not found - adds the object to the cache.\n * @private\n */\n PdfCacheCollection.prototype.search = function (obj) {\n var result = null;\n var group = this.getGroup(obj);\n if (group == null) {\n group = this.createNewGroup();\n }\n else if (group.length > 0) {\n result = group[0];\n }\n group.push(obj);\n return result;\n };\n // Implementation\n /**\n * `Creates` a new group.\n * @private\n */\n PdfCacheCollection.prototype.createNewGroup = function () {\n var group = [];\n this.referenceObjects.push(group);\n return group;\n };\n /**\n * `Find and Return` a group.\n * @private\n */\n PdfCacheCollection.prototype.getGroup = function (result) {\n var group = null;\n if (result !== null) {\n var len = this.referenceObjects.length;\n for (var i = 0; i < len; i++) {\n if (this.referenceObjects.length > 0) {\n var tGroup = this.referenceObjects[i];\n if (tGroup.length > 0) {\n var representative = tGroup[0];\n if (result.equalsTo(representative)) {\n group = tGroup;\n break;\n }\n }\n else {\n this.removeGroup(tGroup);\n }\n }\n len = this.referenceObjects.length;\n }\n }\n return group;\n };\n /**\n * Remove a group from the storage.\n */\n PdfCacheCollection.prototype.removeGroup = function (group) {\n if (group !== null) {\n var index = this.referenceObjects.indexOf(group);\n this.referenceObjects.slice(index, index + 1);\n }\n };\n PdfCacheCollection.prototype.destroy = function () {\n this.pdfFontCollection = undefined;\n this.referenceObjects = undefined;\n };\n return PdfCacheCollection;\n}());\nexport { PdfCacheCollection };\n","/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\nimport { PdfFontStyle, PdfFontFamily } from './enum';\nimport { PdfFontMetrics, StandardWidthTable } from './pdf-font-metrics';\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nvar PdfStandardFontMetricsFactory = /** @class */ (function () {\n function PdfStandardFontMetricsFactory() {\n }\n /**\n * Returns `metrics` of the font.\n * @private\n */\n PdfStandardFontMetricsFactory.getMetrics = function (fontFamily, fontStyle, size) {\n var metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.Helvetica:\n metrics = this.getHelveticaMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Courier:\n metrics = this.getCourierMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.TimesRoman:\n metrics = this.getTimesMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Symbol:\n metrics = this.getSymbolMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.ZapfDingbats:\n metrics = this.getZapfDingbatsMetrics(fontFamily, fontStyle, size);\n break;\n default:\n metrics = this.getHelveticaMetrics(PdfFontFamily.Helvetica, fontStyle, size);\n break;\n }\n metrics.name = fontFamily.toString();\n metrics.subScriptSizeFactor = this.subSuperScriptFactor;\n metrics.superscriptSizeFactor = this.subSuperScriptFactor;\n return metrics;\n };\n // Implementation\n /**\n * Creates `Helvetica font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getHelveticaMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaBoldItalicAscent;\n metrics.descent = this.helveticaBoldItalicDescent;\n metrics.postScriptName = this.helveticaBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.helveticaBoldAscent;\n metrics.descent = this.helveticaBoldDescent;\n metrics.postScriptName = this.helveticaBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaItalicAscent;\n metrics.descent = this.helveticaItalicDescent;\n metrics.postScriptName = this.helveticaItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.helveticaAscent;\n metrics.descent = this.helveticaDescent;\n metrics.postScriptName = this.helveticaName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Courier font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getCourierMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierBoldItalicAscent;\n metrics.descent = this.courierBoldItalicDescent;\n metrics.postScriptName = this.courierBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.courierBoldAscent;\n metrics.descent = this.courierBoldDescent;\n metrics.postScriptName = this.courierBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierItalicAscent;\n metrics.descent = this.courierItalicDescent;\n metrics.postScriptName = this.courierItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.courierAscent;\n metrics.descent = this.courierDescent;\n metrics.postScriptName = this.courierName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Times font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getTimesMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesBoldItalicAscent;\n metrics.descent = this.timesBoldItalicDescent;\n metrics.postScriptName = this.timesBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldItalicWidths);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.timesBoldAscent;\n metrics.descent = this.timesBoldDescent;\n metrics.postScriptName = this.timesBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesItalicAscent;\n metrics.descent = this.timesItalicDescent;\n metrics.postScriptName = this.timesItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanItalicWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.timesAscent;\n metrics.descent = this.timesDescent;\n metrics.postScriptName = this.timesName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Symbol font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getSymbolMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.symbolAscent;\n metrics.descent = this.symbolDescent;\n metrics.postScriptName = this.symbolName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.symbolWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * Creates `ZapfDingbats font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getZapfDingbatsMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.zapfDingbatsAscent;\n metrics.descent = this.zapfDingbatsDescent;\n metrics.postScriptName = this.zapfDingbatsName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.zapfDingbatsWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * `Multiplier` os subscript superscript.\n * @private\n */\n PdfStandardFontMetricsFactory.subSuperScriptFactor = 1.52;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaName = 'Helvetica';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldName = 'Helvetica-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicName = 'Helvetica-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicName = 'Helvetica-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierName = 'Courier';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldName = 'Courier-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicName = 'Courier-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicName = 'Courier-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesAscent = 898;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesName = 'Times-Roman';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldAscent = 935;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldName = 'Times-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicAscent = 883;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicDescent = -217;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicName = 'Times-Italic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicAscent = 921;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicName = 'Times-BoldItalic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolAscent = 1010;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolDescent = -293;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolName = 'Symbol';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsAscent = 820;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsDescent = -143;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsName = 'ZapfDingbats';\n /**\n * `Arial` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Arial bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n ];\n /**\n * `Fixed` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n ];\n /**\n * `Times` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n ];\n /**\n * `Times bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Times italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n ];\n /**\n * `Times bold italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n ];\n /**\n * `Symbol` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n ];\n /**\n * `Zip dingbats` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n ];\n return PdfStandardFontMetricsFactory;\n}());\nexport { PdfStandardFontMetricsFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFontFamily, PdfFontStyle, FontEncoding } from './enum';\nimport { PdfFont } from './pdf-font';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStandardFontMetricsFactory } from './pdf-standard-font-metrics-factory';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\n/**\n * Represents one of the 14 standard fonts.\n * It's used to create a standard PDF font to draw the text in to the PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStandardFont = /** @class */ (function (_super) {\n __extends(PdfStandardFont, _super);\n function PdfStandardFont(fontFamilyPrototype, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? ((fontFamilyPrototype instanceof PdfStandardFont) ? fontFamilyPrototype.style : PdfFontStyle.Regular) : style) || this;\n /**\n * Gets `ascent` of the font.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n /**\n * Gets `encodings` for internal class use.\n * @hidden\n * @private\n */\n _this.encodings = ['Unknown', 'StandardEncoding', 'MacRomanEncoding', 'MacExpertEncoding',\n 'WinAnsiEncoding', 'PDFDocEncoding', 'IdentityH'];\n if (typeof fontFamilyPrototype === 'undefined') {\n _this.pdfFontFamily = PdfFontFamily.Helvetica;\n }\n else if ((fontFamilyPrototype instanceof PdfStandardFont)) {\n _this.pdfFontFamily = fontFamilyPrototype.fontFamily;\n }\n else {\n _this.pdfFontFamily = fontFamilyPrototype;\n }\n _this.checkStyle();\n _this.initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfStandardFont.prototype, \"fontFamily\", {\n /* tslint:enable */\n //Properties\n /**\n * Gets the `FontFamily`.\n * @private\n */\n get: function () {\n return this.pdfFontFamily;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * Checks font `style` of the font.\n * @private\n */\n PdfStandardFont.prototype.checkStyle = function () {\n if (this.fontFamily === PdfFontFamily.Symbol || this.fontFamily === PdfFontFamily.ZapfDingbats) {\n var style = this.style;\n style &= ~(PdfFontStyle.Bold | PdfFontStyle.Italic);\n this.setStyle(style);\n }\n };\n /**\n * Returns `width` of the line.\n * @public\n */\n PdfStandardFont.prototype.getLineWidth = function (line, format) {\n if (line == null) {\n throw new Error('ArgumentNullException:line');\n }\n var width = 0;\n var name = this.name;\n line = PdfStandardFont.convert(line);\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidthInternal(ch, format);\n width += charWidth;\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Checks whether fonts are `equals`.\n * @private\n */\n PdfStandardFont.prototype.equalsToFont = function (font) {\n var equal = false;\n var stFont = font;\n if (stFont != null) {\n var fontFamilyEqual = (this.fontFamily === stFont.fontFamily);\n var lineReducer = (~(PdfFontStyle.Underline | PdfFontStyle.Strikeout));\n var styleEqual = (this.style & lineReducer) === (stFont.style & lineReducer);\n equal = (fontFamilyEqual && styleEqual);\n }\n return equal;\n };\n /**\n * `Initializes` font internals..\n * @private\n */\n PdfStandardFont.prototype.initializeInternals = function () {\n var equalFont = null;\n // if (PdfDocument.EnableCache) {\n equalFont = PdfDocument.cache.search(this);\n // }\n var internals = null;\n // if (equalFont == null) {\n // Create font metrics.\n var metrics = PdfStandardFontMetricsFactory.getMetrics(this.pdfFontFamily, this.style, this.size);\n this.metrics = metrics;\n internals = this.createInternals();\n this.setInternals(internals);\n };\n /**\n * `Creates` font`s dictionary.\n * @private\n */\n PdfStandardFont.prototype.createInternals = function () {\n var dictionary = new PdfDictionary();\n dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type1));\n dictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.metrics.postScriptName));\n if (this.fontFamily !== PdfFontFamily.Symbol && this.fontFamily !== PdfFontFamily.ZapfDingbats) {\n var encoding = this.encodings[FontEncoding.WinAnsiEncoding];\n dictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(encoding));\n }\n return dictionary;\n };\n /**\n * Returns `width` of the char. This methods doesn`t takes into consideration font`s size.\n * @private\n */\n PdfStandardFont.prototype.getCharWidthInternal = function (charCode, format) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this.name === '0' || this.name === '1' || this.name === '2' ||\n this.name === '3' || this.name === '4') {\n code = code - PdfStandardFont.charOffset;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var metrics = this.metrics;\n var widthTable = metrics.widthTable;\n width = widthTable.items(code);\n return width;\n };\n /**\n * `Converts` the specified text.\n * @private\n */\n PdfStandardFont.convert = function (text) {\n return text;\n };\n //Constants\n /**\n * First character `position`.\n * @private\n */\n PdfStandardFont.charOffset = 32;\n return PdfStandardFont;\n}(PdfFont));\nexport { PdfStandardFont };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfWriter } from './../input-output/pdf-writer';\nimport { PdfMainObjectCollection } from './../input-output/pdf-main-object-collection';\nimport { PdfDocumentBase } from './pdf-document-base';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfCatalog } from './pdf-catalog';\nimport { PdfPageSettings } from './../pages/pdf-page-settings';\nimport { PdfSectionCollection } from './../pages/pdf-section-collection';\nimport { PdfDocumentPageCollection } from './../pages/pdf-document-page-collection';\nimport { PdfCacheCollection } from './../general/pdf-cache-collection';\nimport { PdfColorSpace } from './../graphics/enum';\nimport { PdfDocumentTemplate } from './pdf-document-template';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\n/**\n * Represents a PDF document and can be used to create a new PDF document from the scratch.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocument = /** @class */ (function (_super) {\n __extends(PdfDocument, _super);\n function PdfDocument(isMerging) {\n var _this = _super.call(this) || this;\n /**\n * Default `margin` value.\n * @default 40.0\n * @private\n */\n _this.defaultMargin = 40.0;\n /**\n * Internal variable to store instance of `StreamWriter` classes..\n * @default null\n * @private\n */\n _this.streamWriter = null;\n _this.document = _this;\n var isMerge = false;\n if (typeof isMerging === 'undefined') {\n PdfDocument.cacheCollection = new PdfCacheCollection();\n isMerge = false;\n }\n else {\n isMerge = isMerging;\n }\n var objects = new PdfMainObjectCollection();\n _this.setMainObjectCollection(objects);\n var crossTable = new PdfCrossTable();\n crossTable.isMerging = isMerge;\n crossTable.document = _this;\n _this.setCrossTable(crossTable);\n var catalog = new PdfCatalog();\n _this.setCatalog(catalog);\n objects.add(catalog);\n catalog.position = -1;\n _this.sectionCollection = new PdfSectionCollection(_this);\n _this.documentPageCollection = new PdfDocumentPageCollection(_this);\n catalog.pages = _this.sectionCollection;\n return _this;\n }\n Object.defineProperty(PdfDocument, \"defaultFont\", {\n //Properties\n /**\n * Gets the `default font`. It is used for complex objects when font is not explicitly defined.\n * @private\n */\n get: function () {\n if (this.defaultStandardFont == null) {\n this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);\n }\n return this.defaultStandardFont;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"sections\", {\n /**\n * Gets the collection of the `sections` in the document.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pageSettings\", {\n /**\n * Gets the document's page setting.\n * @public\n */\n get: function () {\n if (this.settings == null) {\n this.settings = new PdfPageSettings(this.defaultMargin);\n }\n return this.settings;\n },\n /**\n * Sets the document's page setting.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n *\n * // sets the right margin of the page\n * document.pageSettings.margins.right = 0;\n * // set the page size.\n * document.pageSettings.size = new SizeF(500, 500);\n * // change the page orientation to landscape\n * document.pageSettings.orientation = PdfPageOrientation.Landscape;\n * // apply 90 degree rotation on the page\n * document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;\n *\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set the specified Point\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this.settings = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pages\", {\n /**\n * Represents the collection of pages in the PDF document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // get the collection of pages in the document\n * let pageCollection : PdfDocumentPageCollection = document.pages;\n * //\n * // add pages\n * let page1 : PdfPage = pageCollection.add();\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.documentPageCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"cache\", {\n /**\n * Gets collection of the `cached objects`.\n * @private\n */\n get: function () {\n if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {\n return new PdfCacheCollection();\n }\n return PdfDocument.cacheCollection;\n },\n /**\n * Sets collection of the `cached objects`.\n * @private\n */\n set: function (value) {\n this.cacheCollection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"enableCache\", {\n /**\n * Gets the value of enable cache.\n * @private\n */\n get: function () {\n return this.isCacheEnabled;\n },\n /**\n * Sets thie value of enable cache.\n * @private\n */\n set: function (value) {\n this.isCacheEnabled = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"colorSpace\", {\n /* tslint:disable */\n /**\n * Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.\n * @private\n */\n get: function () {\n if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)\n || (this.pdfColorSpace === PdfColorSpace.GrayScale))) {\n return this.pdfColorSpace;\n }\n else {\n return PdfColorSpace.Rgb;\n }\n },\n set: function (value) {\n if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||\n (value === PdfColorSpace.GrayScale))) {\n this.pdfColorSpace = value;\n }\n else {\n this.pdfColorSpace = PdfColorSpace.Rgb;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"template\", {\n /* tslint:enable */\n /**\n * Gets or sets a `template` to all pages in the document.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfDocumentTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocument.prototype.docSave = function (stream, arg2, arg3) {\n this.checkPagesPresence();\n if (stream === null) {\n throw new Error('ArgumentNullException : stream');\n }\n this.streamWriter = stream;\n var writer = new PdfWriter(stream);\n writer.document = this;\n if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {\n return this.crossTable.save(writer);\n }\n else {\n this.crossTable.save(writer, arg2);\n }\n };\n /**\n * Checks the pages `presence`.\n * @private\n */\n PdfDocument.prototype.checkPagesPresence = function () {\n if (this.pages.count === 0) {\n this.pages.add();\n }\n };\n /**\n * disposes the current instance of `PdfDocument` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.destroy = function () {\n this.catalog = undefined;\n this.colorSpace = undefined;\n this.currentSavingObj = undefined;\n this.documentPageCollection = undefined;\n this.isStreamCopied = undefined;\n this.pageSettings = undefined;\n this.pageTemplate = undefined;\n this.pdfColorSpace = undefined;\n this.sectionCollection = undefined;\n PdfDocument.cache.destroy();\n this.crossTable.pdfObjects.destroy();\n PdfDocument.cache = undefined;\n this.streamWriter.destroy();\n };\n /**\n * `Font` used in complex objects to draw strings and text when it is not defined explicitly.\n * @default null\n * @private\n */\n PdfDocument.defaultStandardFont = null;\n /**\n * Indicates whether enable cache or not\n * @default true\n * @private\n */\n PdfDocument.isCacheEnabled = true;\n return PdfDocument;\n}(PdfDocumentBase));\nexport { PdfDocument };\n","/**\n * PdfBorders.ts class for EJ2-PDF\n */\nimport { PdfPen } from './../../../graphics/pdf-pen';\nimport { PdfDashStyle } from './../../../graphics/enum';\nimport { PdfColor } from './../../../graphics/pdf-color';\n/**\n * `PdfBorders` class used represents the cell border of the PDF grid.\n */\nvar PdfBorders = /** @class */ (function () {\n // Constructor\n /**\n * Create a new instance for `PdfBorders` class.\n * @private\n */\n function PdfBorders() {\n var defaultBorderPenLeft = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenLeft.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenRight = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenRight.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenTop = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenTop.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenBottom = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenBottom.dashStyle = PdfDashStyle.Solid;\n this.leftPen = defaultBorderPenLeft;\n this.rightPen = defaultBorderPenRight;\n this.topPen = defaultBorderPenTop;\n this.bottomPen = defaultBorderPenBottom;\n }\n Object.defineProperty(PdfBorders.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `Left`.\n * @private\n */\n get: function () {\n return this.leftPen;\n },\n set: function (value) {\n this.leftPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"right\", {\n /**\n * Gets or sets the `Right`.\n * @private\n */\n get: function () {\n return this.rightPen;\n },\n set: function (value) {\n this.rightPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"top\", {\n /**\n * Gets or sets the `Top`.\n * @private\n */\n get: function () {\n return this.topPen;\n },\n set: function (value) {\n this.topPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"bottom\", {\n /**\n * Gets or sets the `Bottom`.\n * @private\n */\n get: function () {\n return this.bottomPen;\n },\n set: function (value) {\n this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"all\", {\n /**\n * sets the `All`.\n * @private\n */\n set: function (value) {\n this.leftPen = this.rightPen = this.topPen = this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"isAll\", {\n /**\n * Gets a value indicating whether this instance `is all`.\n * @private\n */\n get: function () {\n return ((this.leftPen === this.rightPen) && (this.leftPen === this.topPen) && (this.leftPen === this.bottomPen));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders, \"default\", {\n /**\n * Gets the `default`.\n * @private\n */\n get: function () {\n return new PdfBorders();\n },\n enumerable: true,\n configurable: true\n });\n return PdfBorders;\n}());\nexport { PdfBorders };\nvar PdfPaddings = /** @class */ (function () {\n function PdfPaddings(left, right, top, bottom) {\n /**\n * The 'left' border padding set.\n * @private\n */\n this.hasLeftPad = false;\n /**\n * The 'right' border padding set.\n * @private\n */\n this.hasRightPad = false;\n /**\n * The 'top' border padding set.\n * @private\n */\n this.hasTopPad = false;\n /**\n * The 'bottom' border padding set.\n * @private\n */\n this.hasBottomPad = false;\n if (typeof left === 'undefined') {\n //5.76 and 0 are taken from ms-word default table margins.\n this.leftPad = this.rightPad = 5.76;\n //0.5 is set for top and bottom by default.\n this.bottomPad = this.topPad = 0.5;\n }\n else {\n this.leftPad = left;\n this.rightPad = right;\n this.topPad = top;\n this.bottomPad = bottom;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n }\n }\n Object.defineProperty(PdfPaddings.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `left` value of the edge\n * @private\n */\n get: function () {\n return this.leftPad;\n },\n set: function (value) {\n this.leftPad = value;\n this.hasLeftPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"right\", {\n /**\n * Gets or sets the `right` value of the edge.\n * @private\n */\n get: function () {\n return this.rightPad;\n },\n set: function (value) {\n this.rightPad = value;\n this.hasRightPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"top\", {\n /**\n * Gets or sets the `top` value of the edge\n * @private\n */\n get: function () {\n return this.topPad;\n },\n set: function (value) {\n this.topPad = value;\n this.hasTopPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom` value of the edge.\n * @private\n */\n get: function () {\n return this.bottomPad;\n },\n set: function (value) {\n this.bottomPad = value;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"all\", {\n /**\n * Sets value to all sides `left,right,top and bottom`.s\n * @private\n */\n set: function (value) {\n this.leftPad = this.rightPad = this.topPad = this.bottomPad = value;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPaddings;\n}());\nexport { PdfPaddings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfBorders, PdfPaddings } from './pdf-borders';\nimport { PdfBorderOverlapStyle } from './../../tables/light-tables/enum';\n/**\n * Base class for the `grid style`,\n */\nvar PdfGridStyleBase = /** @class */ (function () {\n function PdfGridStyleBase() {\n }\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridBackgroundBrush;\n },\n set: function (value) {\n this.gridBackgroundBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridTextBrush;\n },\n set: function (value) {\n this.gridTextBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridTextPen;\n },\n set: function (value) {\n this.gridTextPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridFont;\n },\n set: function (value) {\n this.gridFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `background Image`.\n * @private\n */\n get: function () {\n return this.gridBackgroundImage;\n },\n set: function (value) {\n this.gridBackgroundImage = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyleBase;\n}());\nexport { PdfGridStyleBase };\n/**\n * `PdfGridStyle` class provides customization of the appearance for the 'PdfGrid'.\n */\nvar PdfGridStyle = /** @class */ (function (_super) {\n __extends(PdfGridStyle, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGridStyle` class.\n * @private\n */\n function PdfGridStyle() {\n var _this = _super.call(this) || this;\n _this.gridBorderOverlapStyle = PdfBorderOverlapStyle.Overlap;\n _this.bAllowHorizontalOverflow = false;\n _this.gridHorizontalOverflowType = PdfHorizontalOverflowType.LastPage;\n return _this;\n }\n Object.defineProperty(PdfGridStyle.prototype, \"cellSpacing\", {\n //Properties\n /**\n * Gets or sets the `cell spacing` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n if (typeof this.gridCellSpacing === 'undefined') {\n this.gridCellSpacing = 0;\n }\n return this.gridCellSpacing;\n },\n set: function (value) {\n this.gridCellSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"horizontalOverflowType\", {\n /**\n * Gets or sets the type of the `horizontal overflow` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridHorizontalOverflowType;\n },\n set: function (value) {\n this.gridHorizontalOverflowType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"allowHorizontalOverflow\", {\n /**\n * Gets or sets a value indicating whether to `allow horizontal overflow`.\n * @private\n */\n get: function () {\n return this.bAllowHorizontalOverflow;\n },\n set: function (value) {\n this.bAllowHorizontalOverflow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n return this.gridCellPadding;\n },\n set: function (value) {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n this.gridCellPadding = value;\n }\n else {\n this.gridCellPadding = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"borderOverlapStyle\", {\n /**\n * Gets or sets the `border overlap style` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridBorderOverlapStyle;\n },\n set: function (value) {\n this.gridBorderOverlapStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyle;\n}(PdfGridStyleBase));\nexport { PdfGridStyle };\n/**\n * `PdfGridCellStyle` class provides customization of the appearance for the 'PdfGridCell'.\n */\nvar PdfGridCellStyle = /** @class */ (function (_super) {\n __extends(PdfGridCellStyle, _super);\n /**\n * Initializes a new instance of the `PdfGridCellStyle` class.\n * @private\n */\n function PdfGridCellStyle() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridCellBorders = PdfBorders.default;\n return _this;\n }\n Object.defineProperty(PdfGridCellStyle.prototype, \"stringFormat\", {\n //Properties\n /**\n * Gets the `string format` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"borders\", {\n /**\n * Gets or sets the `border` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridCellBorders;\n },\n set: function (value) {\n this.gridCellBorders = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n return this.gridCellPadding;\n },\n set: function (value) {\n if (this.gridCellPadding == null || typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n this.gridCellPadding = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridCellStyle;\n}(PdfGridStyleBase));\nexport { PdfGridCellStyle };\n/**\n * `PdfGridRowStyle` class provides customization of the appearance for the `PdfGridRow`.\n */\nvar PdfGridRowStyle = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowStyle` class.\n * @private\n */\n function PdfGridRowStyle() {\n //\n }\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBackgroundBrush = function (value) {\n this.gridRowBackgroundBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.backgroundBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridRowTextBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextBrush = function (value) {\n this.gridRowTextBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridRowTextPen;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextPen = function (value) {\n this.gridRowTextPen = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textPen = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridRowFont;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setFont = function (value) {\n this.gridRowFont = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.font = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"border\", {\n /**\n * Gets or sets the `border` of the current row.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBorder === 'undefined') {\n this.setBorder(new PdfBorders());\n }\n return this.gridRowBorder;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBorder = function (value) {\n this.gridRowBorder = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.borders = value;\n }\n }\n };\n /**\n * sets the `parent row` of the current object.\n * @private\n */\n PdfGridRowStyle.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundImage;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n PdfGridRowStyle.prototype.setBackgroundImage = function (value) {\n this.gridRowBackgroundImage = value;\n };\n return PdfGridRowStyle;\n}());\nexport { PdfGridRowStyle };\n/**\n * public Enum for `PdfHorizontalOverflowType`.\n * @private\n */\nexport var PdfHorizontalOverflowType;\n(function (PdfHorizontalOverflowType) {\n /**\n * Specifies the type of `NextPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"NextPage\"] = 0] = \"NextPage\";\n /**\n * Specifies the type of `LastPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"LastPage\"] = 1] = \"LastPage\";\n})(PdfHorizontalOverflowType || (PdfHorizontalOverflowType = {}));\n","/**\n * ElementLayouter.ts class for EJ2-PDF\n */\nimport { RectangleF } from './../../../drawing/pdf-drawing';\n/**\n * Base class for `elements lay outing`.\n * @private\n */\nvar ElementLayouter = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `ElementLayouter` class.\n * @private\n */\n function ElementLayouter(element) {\n this.layoutElement = element;\n }\n Object.defineProperty(ElementLayouter.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.layoutElement;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `element`.\n * @private\n */\n ElementLayouter.prototype.getElement = function () {\n return this.layoutElement;\n };\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n ElementLayouter.prototype.layout = function (param) {\n return this.layoutInternal(param);\n };\n ElementLayouter.prototype.Layouter = function (param) {\n return this.layoutInternal(param);\n };\n /**\n * Returns the `next page`.\n * @private\n */\n ElementLayouter.prototype.getNextPage = function (currentPage) {\n var section = currentPage.section;\n var nextPage = section.add();\n return nextPage;\n };\n ElementLayouter.prototype.getPaginateBounds = function (param) {\n if ((param == null)) {\n throw new Error('ArgumentNullException : param');\n }\n var result = param.format.usePaginateBounds ? param.format.paginateBounds\n : new RectangleF(param.bounds.x, 0, param.bounds.width, param.bounds.height);\n return result;\n };\n return ElementLayouter;\n}());\nexport { ElementLayouter };\nvar PdfLayoutFormat = /** @class */ (function () {\n function PdfLayoutFormat(baseFormat) {\n if (typeof baseFormat === 'undefined') {\n //\n }\n else {\n this.break = baseFormat.break;\n this.layout = baseFormat.layout;\n this.paginateBounds = baseFormat.paginateBounds;\n this.boundsSet = baseFormat.usePaginateBounds;\n }\n }\n Object.defineProperty(PdfLayoutFormat.prototype, \"layout\", {\n // Properties\n /**\n * Gets or sets `layout` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.layoutType === 'undefined' || this.layoutType == null) {\n // this.layoutType = PdfLayoutType.Paginate;\n // }\n return this.layoutType;\n },\n set: function (value) {\n this.layoutType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"break\", {\n /**\n * Gets or sets `break` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.breakType === 'undefined' || this.boundsSet == null) {\n // this.breakType = PdfLayoutBreakType.FitPage;\n // }\n return this.breakType;\n },\n set: function (value) {\n this.breakType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"paginateBounds\", {\n /**\n * Gets or sets the `bounds` on the next page.\n * @private\n */\n get: function () {\n if (typeof this.layoutPaginateBounds === 'undefined' && this.layoutPaginateBounds == null) {\n this.layoutPaginateBounds = new RectangleF(0, 0, 0, 0);\n }\n return this.layoutPaginateBounds;\n },\n set: function (value) {\n this.layoutPaginateBounds = value;\n this.boundsSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"usePaginateBounds\", {\n /**\n * Gets a value indicating whether [`use paginate bounds`].\n * @private\n */\n get: function () {\n // if (typeof this.boundsSet === 'undefined' || this.boundsSet == null) {\n // this.boundsSet = false;\n // }\n return this.boundsSet;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutFormat;\n}());\nexport { PdfLayoutFormat };\nvar PdfLayoutParams = /** @class */ (function () {\n function PdfLayoutParams() {\n }\n Object.defineProperty(PdfLayoutParams.prototype, \"page\", {\n // Properties\n /**\n * Gets or sets the layout `page` for the element.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n set: function (value) {\n this.pdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"bounds\", {\n /**\n * Gets or sets layout `bounds` for the element.\n * @private\n */\n get: function () {\n return new RectangleF(this.layoutBounds.x, this.layoutBounds.y, this.layoutBounds.width, this.layoutBounds.height);\n },\n set: function (value) {\n this.layoutBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"format\", {\n /**\n * Gets or sets `layout settings` for the element.\n * @private\n */\n get: function () {\n return this.layoutFormat;\n },\n set: function (value) {\n this.layoutFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutParams;\n}());\nexport { PdfLayoutParams };\nvar PdfLayoutResult = /** @class */ (function () {\n // Constructors\n /**\n * Initializes the new instance of `PdfLayoutResult` class.\n * @private\n */\n function PdfLayoutResult(page, bounds) {\n this.pdfPage = page;\n this.layoutBounds = bounds;\n }\n Object.defineProperty(PdfLayoutResult.prototype, \"page\", {\n // Properties\n /**\n * Gets the last `page` where the element was drawn.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutResult.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of the element on the last page where it was drawn.\n * @private\n */\n get: function () {\n return this.layoutBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutResult;\n}());\nexport { PdfLayoutResult };\n","/**\n * Defines types of Render\n *\n * @hidden\n\n */\nexport var RenderType;\n(function (RenderType) {\n /* eslint-disable */\n /** Defines RenderType as Toolbar */\n RenderType[RenderType[\"Toolbar\"] = 0] = \"Toolbar\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Popup */\n RenderType[RenderType[\"Popup\"] = 2] = \"Popup\";\n /** Defines RenderType as LinkToolbar */\n RenderType[RenderType[\"LinkToolbar\"] = 3] = \"LinkToolbar\";\n /** Defines RenderType as TextToolbar */\n RenderType[RenderType[\"TextToolbar\"] = 4] = \"TextToolbar\";\n /** Defines RenderType as ImageToolbar */\n RenderType[RenderType[\"ImageToolbar\"] = 5] = \"ImageToolbar\";\n /** Defines RenderType as AudioToolbar */\n RenderType[RenderType[\"AudioToolbar\"] = 6] = \"AudioToolbar\";\n /** Defines RenderType as AudioToolbar */\n RenderType[RenderType[\"VideoToolbar\"] = 7] = \"VideoToolbar\";\n /** Defines RenderType as InlineToolbar */\n RenderType[RenderType[\"InlineToolbar\"] = 8] = \"InlineToolbar\";\n /** Defines RenderType as TableToolbar */\n RenderType[RenderType[\"TableToolbar\"] = 9] = \"TableToolbar\";\n /* eslint-enable */\n})(RenderType || (RenderType = {}));\n/**\n * Defines types to be used as Toolbar.\n */\nexport var ToolbarType;\n(function (ToolbarType) {\n /* eslint-disable */\n /** Defines ToolbarType as Standard */\n ToolbarType[\"Expand\"] = \"Expand\";\n /** Defines ToolbarType as MultiRow */\n ToolbarType[\"MultiRow\"] = \"MultiRow\";\n /** Defines ToolbarType as Scrollable */\n ToolbarType[\"Scrollable\"] = \"Scrollable\";\n /* eslint-enable */\n})(ToolbarType || (ToolbarType = {}));\n/**\n * Defines the type of dialog, which open or close in the Rich Text Editor.\n */\nexport var DialogType;\n(function (DialogType) {\n /* eslint-disable */\n /** Defines ToolbarType as Standard */\n DialogType[\"InsertLink\"] = \"InsertLink\";\n /** Defines ToolbarType as MultiRow */\n DialogType[\"InsertImage\"] = \"InsertImage\";\n /** Defines DialogType as Audio*/\n DialogType[\"InsertAudio\"] = \"InsertAudio\";\n /** Defines DialogType as Video*/\n DialogType[\"InsertVideo\"] = \"InsertVideo\";\n /** Defines ToolbarType as Scrollable */\n DialogType[\"InsertTable\"] = \"InsertTable\";\n /* eslint-enable */\n})(DialogType || (DialogType = {}));\n/**\n * Defines types to be used as inserted image.\n */\nexport var UploadRequest;\n(function (UploadRequest) {\n /** Defines UploadRequest as Uploaded */\n UploadRequest[\"Uploaded\"] = \"Uploaded\";\n /** Defines UploadRequest as Dropped */\n UploadRequest[\"Dropped\"] = \"Dropped\";\n /** Defines UploadRequest as Pasted */\n UploadRequest[\"Pasted\"] = \"Pasted\";\n})(UploadRequest || (UploadRequest = {}));\n","import { RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutParams, PdfLayoutFormat } from './base/element-layouter';\nimport { PdfBorders } from './../../structured-elements/grid/styles/pdf-borders';\n/**\n * `PdfLayoutElement` class represents the base class for all elements that can be layout on the pages.\n * @private\n */\nvar PdfLayoutElement = /** @class */ (function () {\n function PdfLayoutElement() {\n }\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseBeginPageLayout\", {\n // Property\n /**\n * Gets a value indicating whether the `start page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseEndPageLayout\", {\n /**\n * Gets a value indicating whether the `ending page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n //Event Handlers\n PdfLayoutElement.prototype.onBeginPageLayout = function (args) {\n if (this.beginPageLayout) {\n this.beginPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.onEndPageLayout = function (args) {\n if (this.endPageLayout) {\n this.endPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.drawHelper = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n return this.drawHelper(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawHelper(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n this.bEmbedFonts = arg4;\n return this.drawHelper(arg2, arg3, null);\n }\n else {\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n if (param != null) {\n var x = param.bounds.x;\n var y = param.bounds.y;\n if (param.bounds.x === 0) {\n x = PdfBorders.default.right.width / 2;\n }\n if (param.bounds.y === 0) {\n y = PdfBorders.default.top.width / 2;\n }\n var newBound = new RectangleF(x, y, param.bounds.width, param.bounds.height);\n param.bounds = newBound;\n }\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n var result = this.layout(param);\n return result;\n }\n };\n return PdfLayoutElement;\n}());\nexport { PdfLayoutElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * TextLayouter.ts class for EJ2-PDF\n */\nimport { ElementLayouter, PdfLayoutResult } from './element-layouter';\nimport { RectangleF, SizeF } from './../../../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../../fonts/string-layouter';\nimport { PdfLayoutBreakType } from './../../figures/enum';\nimport { PdfColor } from './../../pdf-color';\nimport { PdfTextWebLink } from './../../../annotations/pdf-text-web-link';\n/**\n * Class that `layouts the text`.\n * @private\n */\nvar TextLayouter = /** @class */ (function (_super) {\n __extends(TextLayouter, _super);\n // Constructors\n /**\n * Initializes a new instance of the `TextLayouter` class.\n * @private\n */\n function TextLayouter(element) {\n return _super.call(this, element) || this;\n }\n Object.defineProperty(TextLayouter.prototype, \"element\", {\n /**\n * Gets the layout `element`.\n * @private\n */\n get: function () {\n return _super.prototype.getElement.call(this);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n TextLayouter.prototype.layoutInternal = function (param) {\n /* tslint:disable */\n this.format = (this.element.stringFormat !== null && typeof this.element.stringFormat !== 'undefined') ? this.element.stringFormat : null;\n var currentPage = param.page;\n var currentBounds = param.bounds;\n var text = this.element.value;\n var result = null;\n var pageResult = new TextPageLayoutResult();\n pageResult.page = currentPage;\n pageResult.remainder = text;\n for (;;) {\n pageResult = this.layoutOnPage(text, currentPage, currentBounds, param);\n result = this.getLayoutResult(pageResult);\n break;\n }\n /* tslint:enable */\n return result;\n };\n /**\n * Raises `PageLayout` event if needed.\n * @private\n */\n TextLayouter.prototype.getLayoutResult = function (pageResult) {\n var result = new PdfTextLayoutResult(pageResult.page, pageResult.bounds, pageResult.remainder, pageResult.lastLineBounds);\n return result;\n };\n /* tslint:disable */\n /**\n * `Layouts` the text on the page.\n * @private\n */\n TextLayouter.prototype.layoutOnPage = function (text, currentPage, currentBounds, param) {\n var result = new TextPageLayoutResult();\n result.remainder = text;\n result.page = currentPage;\n currentBounds = this.checkCorrectBounds(currentPage, currentBounds);\n var layouter = new PdfStringLayouter();\n var stringResult = layouter.layout(text, this.element.font, this.format, currentBounds, currentPage.getClientSize().height, false, new SizeF(0, 0));\n var textFinished = (stringResult.remainder == null);\n var doesntFit = (param.format.break === PdfLayoutBreakType.FitElement);\n var canDraw = !(doesntFit || stringResult.empty);\n // Draw the text.\n var graphics = currentPage.graphics;\n var brush = this.element.getBrush();\n if (this.element instanceof PdfTextWebLink) {\n brush.color = new PdfColor(0, 0, 255);\n }\n graphics.drawStringLayoutResult(stringResult, this.element.font, this.element.pen, brush, currentBounds, this.format);\n var lineInfo = stringResult.lines[stringResult.lineCount - 1];\n result.lastLineBounds = graphics.getLineBounds(stringResult.lineCount - 1, stringResult, this.element.font, currentBounds, this.format);\n result.bounds = this.getTextPageBounds(currentPage, currentBounds, stringResult);\n result.remainder = stringResult.remainder;\n result.end = (textFinished);\n return result;\n };\n /* tslint:enable */\n /**\n * `Corrects current bounds` on the page.\n * @private\n */\n TextLayouter.prototype.checkCorrectBounds = function (currentPage, currentBounds) {\n var pageSize = currentPage.graphics.clientSize;\n currentBounds.height = (currentBounds.height > 0) ? currentBounds.height : pageSize.height - currentBounds.y;\n return currentBounds;\n };\n /**\n * Returns a `rectangle` where the text was printed on the page.\n * @private\n */\n /* tslint:disable */\n TextLayouter.prototype.getTextPageBounds = function (currentPage, currentBounds, stringResult) {\n var textSize = stringResult.actualSize;\n var x = currentBounds.x;\n var y = currentBounds.y;\n var width = (currentBounds.width > 0) ? currentBounds.width : textSize.width;\n var height = textSize.height;\n var shiftedRect = currentPage.graphics.checkCorrectLayoutRectangle(textSize, currentBounds.x, currentBounds.y, this.format);\n // if (currentBounds.width <= 0) {\n x = shiftedRect.x;\n // }\n var verticalShift = currentPage.graphics.getTextVerticalAlignShift(textSize.height, currentBounds.height, this.format);\n y += verticalShift;\n var bounds = new RectangleF(x, y, width, height);\n return bounds;\n };\n return TextLayouter;\n}(ElementLayouter));\nexport { TextLayouter };\nvar TextPageLayoutResult = /** @class */ (function () {\n function TextPageLayoutResult() {\n }\n return TextPageLayoutResult;\n}());\nexport { TextPageLayoutResult };\nvar PdfTextLayoutResult = /** @class */ (function (_super) {\n __extends(PdfTextLayoutResult, _super);\n // Constructors\n /**\n * Initializes the new instance of `PdfTextLayoutResult` class.\n * @private\n */\n function PdfTextLayoutResult(page, bounds, remainder, lastLineBounds) {\n var _this = _super.call(this, page, bounds) || this;\n _this.remainderText = remainder;\n _this.lastLineTextBounds = lastLineBounds;\n return _this;\n }\n Object.defineProperty(PdfTextLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets a value that contains the `text` that was not printed.\n * @private\n */\n get: function () {\n return this.remainderText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextLayoutResult.prototype, \"lastLineBounds\", {\n /**\n * Gets a value that indicates the `bounds` of the last line that was printed on the page.\n * @private\n */\n get: function () {\n return this.lastLineTextBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTextLayoutResult;\n}(PdfLayoutResult));\nexport { PdfTextLayoutResult };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfTextElement.ts class for EJ2-PDF\n */\nimport { PdfLayoutElement } from './../figures/layout-element';\nimport { PdfBrush } from './../brushes/pdf-brush';\nimport { PdfFont } from './../fonts/pdf-font';\nimport { PdfStandardFont } from './../fonts/pdf-standard-font';\nimport { PdfPen } from './../pdf-pen';\nimport { PdfLayoutParams } from './../figures/base/element-layouter';\nimport { TextLayouter } from './base/text-layouter';\nimport { PdfSolidBrush } from './../brushes/pdf-solid-brush';\nimport { PdfColor } from './../pdf-color';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutFormat } from './base/element-layouter';\nimport { PdfStringLayouter } from './../fonts/string-layouter';\nimport { PdfTextAlignment } from './../enum';\n/**\n * `PdfTextElement` class represents the text area with the ability to span several pages\n * and inherited from the 'PdfLayoutElement' class.\n * @private\n */\nvar PdfTextElement = /** @class */ (function (_super) {\n __extends(PdfTextElement, _super);\n function PdfTextElement(arg1, arg2, arg3, arg4, arg5) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * `Text` data.\n * @private\n */\n _this.content = '';\n /**\n * `Value` of text data.\n * @private\n */\n _this.elementValue = '';\n /**\n * indicate whether the drawText with PointF overload is called or not.\n * @default false\n * @private\n */\n _this.hasPointOverload = false;\n /**\n * indicate whether the PdfGridCell value is `PdfTextElement`\n * @default false\n * @private\n */\n _this.isPdfTextElement = false;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (typeof arg1 === 'string' && typeof arg2 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && typeof arg3 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfPen && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfBrush && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfBrush = arg3;\n }\n else {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n _this.pdfBrush = arg4;\n _this.format = arg5;\n }\n return _this;\n }\n Object.defineProperty(PdfTextElement.prototype, \"text\", {\n // Properties\n /**\n * Gets or sets a value indicating the `text` that should be printed.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.elementValue = value;\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"value\", {\n //get value\n /**\n * Gets or sets a `value` indicating the text that should be printed.\n * @private\n */\n get: function () {\n return this.elementValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"pen\", {\n //get pen\n /**\n * Gets or sets a `PdfPen` that determines the color, width, and style of the text\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n //Set pen value\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"brush\", {\n //get brush\n /**\n * Gets or sets the `PdfBrush` that will be used to draw the text with color and texture.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n //Set brush value\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"font\", {\n //get font\n /**\n * Gets or sets a `PdfFont` that defines the text format.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * //\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n if (this.pdfFont instanceof PdfStandardFont && this.content != null) {\n this.elementValue = PdfStandardFont.convert(this.content);\n }\n else {\n this.elementValue = this.content;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `PdfStringFormat` that will be used to set the string format\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Gets a `brush` for drawing.\n * @private\n */\n PdfTextElement.prototype.getBrush = function () {\n return (this.pdfBrush == null || typeof this.pdfBrush === 'undefined') ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.pdfBrush;\n };\n // /**\n // * `Draws` an element on the Graphics.\n // * @private\n // */\n // public drawInternal(graphics : PdfGraphics) : void {\n // graphics.drawString(this.elementValue, this.pdfFont, this.pdfPen, this.getBrush(), 0, 0, this.stringFormat);\n // }\n /**\n * `Layouts` the element.\n * @private\n */\n PdfTextElement.prototype.layout = function (param) {\n var layouter = new TextLayouter(this);\n var result = layouter.layout(param);\n return result;\n };\n PdfTextElement.prototype.drawText = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawText(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n this.hasPointOverload = true;\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawText(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n return this.drawText(arg2, arg3, null);\n }\n else {\n var layout = new PdfStringLayouter();\n if (this.hasPointOverload) {\n var stringLayoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg2.graphics.clientSize.width - arg3.x), 0), true, arg2.graphics.clientSize);\n var layoutResult = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n var previousPage = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (stringLayoutResult.lines.length > 1) {\n this.text = stringLayoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n layoutResult = this.layout(param);\n var bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, arg2.graphics.clientSize.width, stringLayoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < stringLayoutResult.lines.length; i++) {\n param.page = layoutResult.page;\n param.bounds = new RectangleF(new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n this.text = stringLayoutResult.layoutLines[i].text;\n if (bounds.y + stringLayoutResult.lineHeight > layoutResult.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (layoutResult.page.graphics.clientSize.height - layoutResult.bounds.height)) {\n bounds = new RectangleF(0, layoutResult.bounds.height, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(0, 0, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n layoutResult = this.layout(param);\n if (i !== (stringLayoutResult.lines.length - 1)) {\n bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n layoutResult = this.calculateResultBounds(layoutResult, lineWidth, layoutResult.page.graphics.clientSize.width, 0);\n }\n }\n }\n return layoutResult;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n layoutResult = this.layout(param);\n layoutResult = this.calculateResultBounds(layoutResult, lineSize.width, layoutResult.page.graphics.clientSize.width, 0);\n }\n return layoutResult;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg3.width, 0), false, arg2.graphics.clientSize);\n var result = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (layoutResult.lines.length > 1) {\n this.text = layoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n result = this.layout(param);\n var bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n var isPaginate = false;\n for (var i = 1; i < layoutResult.lines.length; i++) {\n param.page = result.page;\n param.bounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n this.text = layoutResult.layoutLines[i].text;\n if (bounds.y + layoutResult.lineHeight > result.page.graphics.clientSize.height) {\n isPaginate = true;\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (result.page.graphics.clientSize.height - result.bounds.height)) {\n bounds = new RectangleF(temparg3.x, layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(temparg3.x, 0, temparg3.width, layoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n result = this.layout(param);\n if (i !== (layoutResult.lines.length - 1)) {\n bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n result = this.calculateResultBounds(result, lineWidth, temparg3.width, temparg3.x);\n }\n }\n }\n return result;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n result = this.layout(param);\n result = this.calculateResultBounds(result, lineSize.width, temparg3.width, temparg3.x);\n }\n return result;\n }\n }\n }\n };\n PdfTextElement.prototype.calculateResultBounds = function (result, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth);\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n result.bounds.x = startPosition;\n result.bounds.width = maximumWidth;\n }\n else {\n result.bounds.width = startPosition;\n result.bounds.width = lineWidth;\n }\n return result;\n };\n return PdfTextElement;\n}(PdfLayoutElement));\nexport { PdfTextElement };\n","import { PdfColor } from './../graphics/pdf-color';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfDictionary, SaveAnnotationEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfString } from './../primitives/pdf-string';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfSolidBrush } from './../graphics/brushes/pdf-solid-brush';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStringFormat } from './../graphics/fonts/pdf-string-format';\nimport { PdfTextAlignment } from './../graphics/enum';\n/**\n * `PdfAnnotation` class represents the base class for annotation objects.\n * @private\n */\nvar PdfAnnotation = /** @class */ (function () {\n function PdfAnnotation(arg1) {\n // Fields\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * `Color` of the annotation\n * @private\n */\n this.pdfColor = new PdfColor(255, 255, 255);\n /**\n * `Bounds` of the annotation.\n * @private\n */\n this.rectangle = new RectangleF(0, 0, 0, 0);\n /**\n * Parent `page` of the annotation.\n * @private\n */\n this.pdfPage = null;\n /**\n * `Brush of the text` of the annotation.\n * @default new PdfSolidBrush(new PdfColor(0, 0, 0))\n * @private\n */\n this.textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n /**\n * `Font of the text` of the annotation.\n * @default new PdfStandardFont(PdfFontFamily.TimesRoman, 10)\n * @private\n */\n this.textFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 10);\n /**\n * `StringFormat of the text` of the annotation.\n * @default new PdfStringFormat(PdfTextAlignment.Left)\n * @private\n */\n this.format = new PdfStringFormat(PdfTextAlignment.Left);\n /**\n * `Text` of the annotation.\n * @private\n */\n this.content = '';\n /**\n * Internal variable to store `dictionary`.\n * @private\n */\n this.pdfDictionary = new PdfDictionary();\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n this.internalColor = new PdfColor();\n /**\n * `opacity or darkness` of the annotation.\n * @private\n * @default 1.0\n */\n this.darkness = 1.0;\n if (typeof arg1 === 'undefined') {\n this.initialize();\n }\n else {\n this.initialize();\n this.bounds = arg1;\n }\n }\n Object.defineProperty(PdfAnnotation.prototype, \"color\", {\n // Properties\n /**\n * `Color` of the annotation\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"innerColor\", {\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n get: function () {\n return this.internalColor;\n },\n set: function (value) {\n this.internalColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"bounds\", {\n /**\n * `bounds` of the annotation.\n * @private\n */\n get: function () {\n return this.rectangle;\n },\n set: function (value) {\n this.rectangle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"page\", {\n /**\n * Parent `page` of the annotation.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"font\", {\n /**\n * To specifying the `Font of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textFont;\n },\n set: function (value) {\n this.textFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"stringFormat\", {\n /**\n * To specifying the `StringFormat of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"brush\", {\n /**\n * To specifying the `Brush of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textBrush;\n },\n set: function (value) {\n this.textBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"text\", {\n /**\n * `Text` of the annotation.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n this.dictionary.items.setValue(this.dictionaryProperties.contents, new PdfString(this.content));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"dictionary\", {\n /**\n * Internal variable to store `dictionary`.\n * @hidden\n */\n get: function () {\n return this.pdfDictionary;\n },\n set: function (value) {\n this.pdfDictionary = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the annotation event handler and specifies the type of the annotation.\n * @private\n */\n PdfAnnotation.prototype.initialize = function () {\n this.pdfDictionary.annotationBeginSave = new SaveAnnotationEventHandler(this);\n this.pdfDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.annot));\n };\n /**\n * Sets related `page` of the annotation.\n * @private\n */\n PdfAnnotation.prototype.setPage = function (page) {\n this.pdfPage = page;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.p, new PdfReferenceHolder(this.pdfPage));\n };\n /**\n * Handles the `BeginSave` event of the Dictionary.\n * @private\n */\n PdfAnnotation.prototype.beginSave = function () {\n this.save();\n };\n /**\n * `Saves` an annotation.\n * @private\n */\n /* tslint:disable */\n PdfAnnotation.prototype.save = function () {\n var nativeRectangle = new RectangleF(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n var section = this.pdfPage.section;\n var initialHeight = nativeRectangle.height;\n var tempLoacation = section.pointToNativePdf(this.page, new PointF(nativeRectangle.x, nativeRectangle.y));\n nativeRectangle.x = tempLoacation.x;\n nativeRectangle.width = tempLoacation.x + nativeRectangle.width;\n nativeRectangle.y = (tempLoacation.y - this.page.document.pageSettings.margins.top);\n nativeRectangle.height = nativeRectangle.y - initialHeight;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.rect, PdfArray.fromRectangle(nativeRectangle));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(this.darkness));\n };\n Object.defineProperty(PdfAnnotation.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotation;\n}());\nexport { PdfAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfAnnotation } from './annotation';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfLinkAnnotation` class represents the ink annotation class.\n * @private\n */\nvar PdfLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfLinkAnnotation, _super);\n function PdfLinkAnnotation(rectangle) {\n return _super.call(this, rectangle) || this;\n }\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfLinkAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n };\n return PdfLinkAnnotation;\n}(PdfAnnotation));\nexport { PdfLinkAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfLinkAnnotation } from './link-annotation';\n/**\n * Represents base class for `link annotations` with associated action.\n * @private\n */\nvar PdfActionLinkAnnotation = /** @class */ (function (_super) {\n __extends(PdfActionLinkAnnotation, _super);\n // Constructors\n /**\n * Specifies the constructor for `ActionLinkAnnotation`.\n * @private\n */\n function PdfActionLinkAnnotation(rectangle) {\n var _this = _super.call(this, rectangle) || this;\n // Fields\n /**\n * Internal variable to store annotation's `action`.\n * @default null\n * @private\n */\n _this.pdfAction = null;\n return _this;\n }\n //Public method\n /**\n * get and set the `action`.\n * @hidden\n */\n PdfActionLinkAnnotation.prototype.getSetAction = function (value) {\n if (typeof value === 'undefined') {\n return this.pdfAction;\n }\n else {\n this.pdfAction = value;\n }\n };\n return PdfActionLinkAnnotation;\n}(PdfLinkAnnotation));\nexport { PdfActionLinkAnnotation };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfAction` class represents base class for all action types.\n * @private\n */\nvar PdfAction = /** @class */ (function () {\n // Constructors\n /**\n * Initialize instance for `Action` class.\n * @private\n */\n function PdfAction() {\n /**\n * Specifies the Next `action` to perform.\n * @private\n */\n this.action = null;\n /**\n * Specifies the Internal variable to store `dictionary properties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // super(); -> Object()\n this.initialize();\n }\n Object.defineProperty(PdfAction.prototype, \"next\", {\n // Properties\n /**\n * Gets and Sets the `Next` action to perform.\n * @private\n */\n get: function () {\n return this.action;\n },\n set: function (value) {\n // if (this.action !== value) {\n this.action = value;\n this.dictionary.items.setValue(this.dictionaryProperties.next, new PdfReferenceHolder(this.action));\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAction.prototype, \"dictionary\", {\n /**\n * Gets and Sets the instance of PdfDictionary class for `Dictionary`.\n * @private\n */\n get: function () {\n if (typeof this.pdfDictionary === 'undefined') {\n this.pdfDictionary = new PdfDictionary();\n }\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the action type.\n * @private\n */\n PdfAction.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.action));\n };\n Object.defineProperty(PdfAction.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` as IPdfPrimitive class.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAction;\n}());\nexport { PdfAction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfAction } from './action';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * `PdfUriAction` class for initialize the uri related internals.\n * @private\n */\nvar PdfUriAction = /** @class */ (function (_super) {\n __extends(PdfUriAction, _super);\n function PdfUriAction(uri) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Specifies the `uri` string.\n * @default ''.\n * @private\n */\n _this.uniformResourceIdentifier = '';\n return _this;\n }\n Object.defineProperty(PdfUriAction.prototype, \"uri\", {\n // Properties\n /**\n * Gets and Sets the value of `Uri`.\n * @private\n */\n get: function () {\n return this.uniformResourceIdentifier;\n },\n set: function (value) {\n this.uniformResourceIdentifier = value;\n this.dictionary.items.setValue(this.dictionaryProperties.uri, new PdfString(this.uniformResourceIdentifier));\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the internals.\n * @private\n */\n PdfUriAction.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.s, new PdfName(this.dictionaryProperties.uri));\n };\n return PdfUriAction;\n}(PdfAction));\nexport { PdfUriAction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfActionLinkAnnotation } from './action-link-annotation';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfUriAction } from './../actions/uri-action';\n/**\n * `PdfUriAnnotation` class represents the Uri annotation.\n * @private\n */\nvar PdfUriAnnotation = /** @class */ (function (_super) {\n __extends(PdfUriAnnotation, _super);\n function PdfUriAnnotation(rectangle, uri) {\n var _this = _super.call(this, rectangle) || this;\n if (typeof uri !== 'undefined') {\n _this.uri = uri;\n }\n return _this;\n }\n Object.defineProperty(PdfUriAnnotation.prototype, \"uriAction\", {\n /**\n * Get `action` of the annotation.\n * @private\n */\n get: function () {\n if (typeof this.pdfUriAction === 'undefined') {\n this.pdfUriAction = new PdfUriAction();\n }\n return this.pdfUriAction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"uri\", {\n // Properties\n /**\n * Gets or sets the `Uri` address.\n * @private\n */\n get: function () {\n return this.uriAction.uri;\n },\n set: function (value) {\n if (this.uriAction.uri !== value) {\n this.uriAction.uri = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"action\", {\n /**\n * Gets or sets the `action`.\n * @private\n */\n get: function () {\n return this.getSetAction();\n },\n set: function (value) {\n this.getSetAction(value);\n this.uriAction.next = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfUriAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n var tempPrimitive = this.uriAction.element;\n this.dictionary.items.setValue(this.dictionaryProperties.a, this.uriAction.element);\n };\n return PdfUriAnnotation;\n}(PdfActionLinkAnnotation));\nexport { PdfUriAnnotation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPage } from './../pages/pdf-page';\nimport { PointF, RectangleF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTextElement } from './../graphics/figures/text-element';\nimport { PdfUriAnnotation } from './uri-annotation';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfFontStyle } from './../graphics/fonts/enum';\nimport { PdfTextAlignment } from './../graphics/enum';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * `PdfTextWebLink` class represents the class for text web link annotation.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * //\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTextWebLink = /** @class */ (function (_super) {\n __extends(PdfTextWebLink, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfTextWebLink` class.\n * @private\n */\n function PdfTextWebLink() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Internal variable to store `Url`.\n * @default ''\n * @private\n */\n _this.uniformResourceLocator = '';\n /**\n * Internal variable to store `Uri Annotation` object.\n * @default null\n * @private\n */\n _this.uriAnnotation = null;\n /**\n * Checks whether the drawTextWebLink method with `PointF` overload is called or not.\n * If it set as true, then the start position of each lines excluding firest line is changed as (0, Y).\n * @private\n * @hidden\n */\n _this.recalculateBounds = false;\n _this.defaultBorder = new PdfArray();\n for (var i = 0; i < 3; i++) {\n _this.defaultBorder.add(new PdfNumber(0));\n }\n return _this;\n }\n Object.defineProperty(PdfTextWebLink.prototype, \"url\", {\n // Properties\n /**\n * Gets or sets the `Uri address`.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * //\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.uniformResourceLocator;\n },\n set: function (value) {\n if (value.length === 0) {\n throw new Error('ArgumentException : Url - string can not be empty');\n }\n this.uniformResourceLocator = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfTextWebLink.prototype.draw = function (arg1, arg2) {\n if (arg1 instanceof PdfPage) {\n var layout = new PdfStringLayouter();\n var previousFontStyle = this.font.style;\n if (arg2 instanceof PointF) {\n this.recalculateBounds = true;\n this.font.style = PdfFontStyle.Underline;\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg1.graphics.clientSize.width - arg2.x), 0), true, arg1.graphics.clientSize);\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(arg2, textSize);\n rect = this.calculateBounds(rect, textSize.width, arg1.graphics.clientSize.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var result = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n else {\n var result = this.drawMultipleLineWithPoint(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg2.width, 0), false, new SizeF(0, 0));\n this.font.style = PdfFontStyle.Underline;\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(new PointF(arg2.x, arg2.y), textSize);\n rect = this.calculateBounds(rect, textSize.width, arg2.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var returnValue = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n else {\n var returnValue = this.drawMultipleLineWithBounds(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n }\n }\n else {\n var page = new PdfPage();\n page = arg1.page;\n return this.draw(page, arg2);\n }\n };\n /* tslint:enable */\n //Private methods\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified location.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithPoint = function (result, page, location) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var bounds = new RectangleF(location, size);\n if (i !== 0) {\n bounds.x = 0;\n }\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(0, 0, page.graphics.clientSize.width, size.height);\n location.y = 0;\n }\n else {\n break;\n }\n }\n bounds = this.calculateBounds(bounds, size.width, page.graphics.clientSize.width, bounds.x);\n this.uriAnnotation = new PdfUriAnnotation(bounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n if (i !== 0) {\n layoutResult = this.drawText(page, new PointF(0, bounds.y));\n }\n else {\n layoutResult = this.drawText(page, bounds.x, bounds.y);\n }\n location.y += size.height;\n }\n return layoutResult;\n };\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified bounds.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithBounds = function (result, page, bounds) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var internalBounds = new RectangleF(new PointF(bounds.x, bounds.y), size);\n internalBounds = this.calculateBounds(internalBounds, size.width, bounds.width, bounds.x);\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(bounds.x, 0, bounds.width, size.height);\n internalBounds.y = 0;\n }\n else {\n break;\n }\n }\n this.uriAnnotation = new PdfUriAnnotation(internalBounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n layoutResult = this.drawText(page, bounds);\n bounds.y += size.height;\n }\n return layoutResult;\n };\n /* tslint:disable */\n PdfTextWebLink.prototype.calculateBounds = function (currentBounds, lineWidth, maximumWidth, startPosition) {\n var shift = 0;\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth);\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n currentBounds.x = startPosition;\n currentBounds.width = maximumWidth;\n }\n else {\n currentBounds.width = startPosition;\n currentBounds.width = lineWidth;\n }\n return currentBounds;\n };\n return PdfTextWebLink;\n}(PdfTextElement));\nexport { PdfTextWebLink };\n","import { PdfGrid } from './pdf-grid';\nimport { PdfGridCellStyle } from './styles/style';\nimport { PdfStringLayouter } from './../../graphics/fonts/string-layouter';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\nimport { RectangleF, PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfDashStyle, PdfLineCap } from './../../graphics/enum';\nimport { PdfBorderOverlapStyle } from './../tables/light-tables/enum';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfImage } from './../../graphics/images/pdf-image';\nimport { PdfBitmap } from './../../graphics/images/pdf-bitmap';\nimport { PdfTextWebLink } from './../../annotations/pdf-text-web-link';\nimport { PdfLayoutType } from './../../graphics/figures/enum';\nimport { PdfGridLayouter, PdfGridLayoutFormat } from './../../structured-elements/grid/layout/grid-layouter';\nimport { PdfLayoutParams } from '../../../implementation/graphics/figures/base/element-layouter';\n/**\n * `PdfGridCell` class represents the schema of a cell in a 'PdfGrid'.\n */\nvar PdfGridCell = /** @class */ (function () {\n function PdfGridCell(row) {\n /**\n * `Width` of the cell.\n * @default 0\n * @private\n */\n this.cellWidth = 0;\n /**\n * `Height` of the cell.\n * @default 0\n * @private\n */\n this.cellHeight = 0;\n /**\n * `tempval`to stores current width .\n * @default 0\n * @private\n */\n this.tempval = 0;\n this.fontSpilt = false;\n /**\n * Specifies weather the `cell is drawn`.\n * @default true\n * @private\n */\n this.finsh = true;\n /**\n * The `remaining height` of row span.\n * @default 0\n * @private\n */\n this.rowSpanRemainingHeight = 0;\n this.hasRowSpan = false;\n this.hasColSpan = false;\n /**\n * the 'isFinish' is set to page finish\n */\n this.isFinish = true;\n /**\n * The `present' to store the current cell.\n * @default false\n * @private\n */\n this.present = false;\n this.gridRowSpan = 1;\n this.colSpan = 1;\n if (typeof row !== 'undefined') {\n this.gridRow = row;\n }\n }\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeContinue\", {\n //Properties\n get: function () {\n return this.internalIsCellMergeContinue;\n },\n set: function (value) {\n this.internalIsCellMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeContinue\", {\n get: function () {\n return this.internalIsRowMergeContinue;\n },\n set: function (value) {\n this.internalIsRowMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeStart\", {\n get: function () {\n return this.internalIsCellMergeStart;\n },\n set: function (value) {\n this.internalIsCellMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeStart\", {\n get: function () {\n return this.internalIsRowMergeStart;\n },\n set: function (value) {\n this.internalIsRowMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"remainingString\", {\n /**\n * Gets or sets the `remaining string` after the row split between pages.\n * @private\n */\n get: function () {\n return this.remaining;\n },\n set: function (value) {\n this.remaining = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"FinishedDrawingCell\", {\n /**\n * Gets or sets the `FinishedDrawingCell` .\n * @private\n */\n get: function () {\n return this.isFinish;\n },\n set: function (value) {\n this.isFinish = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `string format`.\n * @private\n */\n get: function () {\n if (this.format == null) {\n this.format = new PdfStringFormat();\n }\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"row\", {\n /**\n * Gets or sets the parent `row`.\n * @private\n */\n get: function () {\n return this.gridRow;\n },\n set: function (value) {\n this.gridRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the cell.\n * @private\n */\n get: function () {\n return this.objectValue;\n },\n set: function (value) {\n this.objectValue = value;\n if (this.objectValue instanceof PdfGrid) {\n this.row.grid.isSingleGrid = false;\n var grid = this.objectValue;\n grid.ParentCell = this;\n this.objectValue.isChildGrid = true;\n var rowCount = this.row.grid.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.row.grid.rows.getRow(i);\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cell.parent = this;\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"rowSpan\", {\n /**\n * Gets or sets a value that indicates the total number of rows that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.gridRowSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw new Error('ArgumentException : Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.gridRowSpan = value;\n this.row.rowSpanExists = true;\n this.row.grid.hasRowSpanSpan = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"style\", {\n /**\n * Gets or sets the cell `style`.\n * @private\n */\n get: function () {\n if (this.cellStyle == null) {\n this.cellStyle = new PdfGridCellStyle();\n }\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"height\", {\n /**\n * Gets the `height` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellHeight === 0) {\n this.cellHeight = this.measureHeight();\n }\n return this.cellHeight;\n },\n set: function (value) {\n this.cellHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"columnSpan\", {\n /**\n * Gets or sets a value that indicates the total number of columns that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.colSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw Error('Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.colSpan = value;\n this.row.columnSpanExists = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"width\", {\n /**\n * Gets the `width` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellWidth === 0 || this.row.grid.isComplete) {\n this.cellWidth = this.measureWidth();\n }\n return Math.round(this.cellWidth);\n },\n set: function (value) {\n this.cellWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the width`.\n * @private\n */\n PdfGridCell.prototype.measureWidth = function () {\n // .. Calculate the cell text width.\n // .....Add border widths, cell spacings and paddings to the width.\n var width = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string') {\n /* tslint:disable */\n var slr = layouter.layout(this.objectValue, this.getTextFont(), this.stringFormat, new SizeF(Number.MAX_VALUE, Number.MAX_VALUE), false, new SizeF(0, 0));\n width += slr.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n width = this.objectValue.size.width;\n //width += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n width += this.objectValue.width;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n var result = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(0, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n width += result.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding != null) {\n width += (this.style.cellPadding.left + this.style.cellPadding.right);\n }\n else {\n width += (this.row.grid.style.cellPadding.left + this.row.grid.style.cellPadding.right);\n }\n }\n else {\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n width += this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n width += this.style.cellPadding.right;\n }\n }\n else {\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n width += this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n width += this.row.grid.style.cellPadding.right;\n }\n }\n }\n width += this.row.grid.style.cellSpacing;\n return width;\n };\n /**\n * Draw the `cell background`.\n * @private\n */\n PdfGridCell.prototype.drawCellBackground = function (graphics, bounds) {\n var backgroundBrush = this.getBackgroundBrush();\n //graphics.isTemplateGraphics = true;\n if (backgroundBrush != null) {\n graphics.save();\n graphics.drawRectangle(backgroundBrush, bounds.x, bounds.y, bounds.width, bounds.height);\n graphics.restore();\n }\n if (this.style.backgroundImage != null) {\n var image = this.getBackgroundImage();\n graphics.drawImage(this.style.backgroundImage, bounds.x, bounds.y, bounds.width, bounds.height);\n }\n };\n /**\n * `Adjusts the text layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustContentLayoutArea = function (bounds) {\n //Add Padding value to its Cell Bounds\n var returnBounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n if (!(this.objectValue instanceof PdfGrid)) {\n if (typeof this.style.cellPadding === 'undefined' || this.style.cellPadding == null) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n returnBounds.height -= (this.gridRow.grid.style.cellPadding.bottom + this.gridRow.grid.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n else {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.style.cellPadding.bottom + this.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n if (this.rowSpan === 1) {\n returnBounds.width -= (this.style.borders.left.width);\n }\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.gridRow.grid.style.cellPadding.left !== 'undefined' && this.gridRow.grid.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.gridRow.grid.style.cellPadding.left;\n }\n if (typeof this.gridRow.grid.style.cellPadding.top !== 'undefined' && this.gridRow.grid.style.cellPadding.hasTopPad) {\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.gridRow.grid.style.cellPadding.top;\n }\n if (typeof this.gridRow.grid.style.cellPadding.right !== 'undefined' && this.gridRow.grid.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.gridRow.grid.style.cellPadding.right;\n }\n if (typeof this.gridRow.grid.style.cellPadding.bottom !== 'undefined' && this.gridRow.grid.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.gridRow.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.style.cellPadding.right;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.style.cellPadding.bottom;\n }\n }\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n return returnBounds;\n };\n /**\n * `Draws` the specified graphics.\n * @private\n */\n PdfGridCell.prototype.draw = function (graphics, bounds, cancelSubsequentSpans) {\n var isrowbreak = false;\n /*if (!this.row.grid.isSingleGrid)\n {\n //Check whether the Grid Span to Nextpage\n if ((this.remainingString != null) || (PdfGridLayouter.repeatRowIndex != -1))\n {\n this.DrawParentCells(graphics, bounds, true);\n }\n else if (this.row.grid.rows.count > 1)\n {\n for (let i : number = 0; i < this.row.grid.rows.count; i++)\n {\n if (this.row == this.row.grid.rows.getRow(i))\n {\n if (this.row.grid.rows.getRow(i).rowBreakHeight > 0)\n isrowbreak = true;\n if ((i > 0) && (isrowbreak))\n this.DrawParentCells(graphics, bounds, false);\n }\n }\n }\n } */\n var result = null;\n /*if (cancelSubsequentSpans)\n {\n //..Cancel all subsequent cell spans, if no space exists.\n let currentCellIndex : number = this.row.cells.indexOf(this);\n for (let i : number = currentCellIndex + 1; i <= currentCellIndex + this.colSpan; i++)\n {\n this.row.cells.getCell(i).isCellMergeContinue = false;\n this.row.cells.getCell(i).isRowMergeContinue = false;\n }\n this.colSpan = 1;\n }*/\n //..Skip cells which were already covered by spanmap.\n if (this.internalIsCellMergeContinue || this.internalIsRowMergeContinue) {\n if (this.internalIsCellMergeContinue && this.row.grid.style.allowHorizontalOverflow) {\n if ((this.row.rowOverflowIndex > 0 && (this.row.cells.indexOf(this) != this.row.rowOverflowIndex + 1)) || (this.row.rowOverflowIndex == 0 && this.internalIsCellMergeContinue)) {\n return result;\n }\n }\n else {\n return result;\n }\n }\n //Adjust bounds with Row and Column Spacing\n bounds = this.adjustOuterLayoutArea(bounds, graphics);\n this.drawCellBackground(graphics, bounds);\n var textPen = this.getTextPen();\n var textBrush = this.getTextBrush();\n if (typeof textPen === 'undefined' && typeof textBrush === 'undefined') {\n textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var font = this.getTextFont();\n var strFormat = this.getStringFormat();\n var innerLayoutArea = bounds;\n if (innerLayoutArea.height >= graphics.clientSize.height) {\n // If to break row to next page.\n if (this.row.grid.allowRowBreakAcrossPages) {\n innerLayoutArea.height -= innerLayoutArea.y;\n if (typeof this._rowHeight !== 'undefined' && this._rowHeight !== null && innerLayoutArea.height > this._rowHeight) {\n innerLayoutArea.height = this._rowHeight;\n }\n //bounds.height -= bounds.y;\n // if(this.row.grid.isChildGrid)\n // {\n // innerLayoutArea.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n // if user choose to cut the row whose height is more than page height.\n // else\n // {\n // innerLayoutArea.height = graphics.clientSize.height;\n // bounds.height = graphics.clientSize.height;\n // }\n }\n innerLayoutArea = this.adjustContentLayoutArea(innerLayoutArea);\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var temp = void 0;\n var layoutRectangle = void 0;\n if (innerLayoutArea.height < font.height)\n layoutRectangle = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, font.height);\n else\n layoutRectangle = innerLayoutArea;\n if (innerLayoutArea.height < font.height && this.row.grid.isChildGrid && this.row.grid.ParentCell != null) {\n var height = layoutRectangle.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom - this.row.grid.style.cellPadding.bottom;\n if (this.row.grid.splitChildRowIndex != -1) {\n this.fontSpilt = true;\n this.row.rowFontSplit = true;\n }\n if (height > 0 && height < font.height)\n layoutRectangle.height = height;\n // else if (height + this.row.grid.style.cellPadding.bottom > 0 && height + this.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = height + this.row.grid.style.cellPadding.bottom;\n // else if (bounds.height < font.height)\n // layoutRectangle.height = bounds.height;\n // else if (bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom; \n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n layoutRectangle.width -= this.gridRow.grid.style.cellSpacing;\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n if (this.isFinish) {\n // if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined'){\n // this.remaining = '';\n // graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // } else {\n temp = this.remaining === '' ? this.remaining : this.objectValue;\n graphics.drawString(temp, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined') {\n this.remaining = '';\n //graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n }\n else {\n if (typeof this.remaining == 'undefined' || this.remaining === null) {\n this.remaining = '';\n }\n if (this.row.repeatFlag) {\n graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n // else {\n // if(this.row.grid.ParentCell.row.repeatFlag) {\n // graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat); \n // } else {\n // layoutRectangle.height = this.row.height;\n // graphics.drawString((this.objectValue as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // bounds.height = this.row.height;\n // }\n // }\n this.isFinish = true;\n //graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n result = graphics.stringLayoutResult;\n // if(this.row.grid.isChildGrid && this.row.rowBreakHeight > 0 && result !=null) {\n // bounds.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n else if (this.objectValue instanceof PdfGrid) {\n var childGrid = this.objectValue;\n childGrid.isChildGrid = true;\n childGrid.ParentCell = this;\n var layoutRect = void 0;\n layoutRect = innerLayoutArea;\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n // layoutRect = bounds;\n // if (this.style.cellPadding != null){\n // layoutRect = bounds; \n // } else if((this.row.grid.style.cellPadding != null) && (childGrid.style.cellPadding.bottom === 0.5) && (childGrid.style.cellPadding.top === 0.5)\n // && (childGrid.style.cellPadding.left === 5.76) && (childGrid.style.cellPadding.right === 5.76)\n // && (this.gridRow.grid.style.cellSpacing === 0) && (childGrid.style.cellSpacing === 0)) {\n // layoutRect = innerLayoutArea;\n // }\n // if(this.objectValue.style.cellPadding != null && typeof this.objectValue.style.cellPadding !== 'undefined'){\n // layoutRect = bounds;\n // } \n var layouter = new PdfGridLayouter(childGrid);\n var format = new PdfGridLayoutFormat();\n if (this.row.grid.LayoutFormat != null)\n format = this.row.grid.LayoutFormat;\n else\n format.layout = PdfLayoutType.Paginate;\n var param = new PdfLayoutParams();\n if (graphics.layer != null) {\n // Define layout parameters.\n param.page = graphics.page;\n param.bounds = layoutRect;\n param.format = format;\n //Set the span \n childGrid.setSpan();\n childGrid.checkSpan();\n // Draw the child grid.\n var childGridResult = layouter.Layouter(param);\n //let childGridResult : PdfLayoutResult = layouter.innerLayout(param);\n this.value = childGrid;\n if (this.row.grid.splitChildRowIndex !== -1) {\n this.height = this.row.rowBreakHeightValue;\n }\n if (param.page != childGridResult.page) //&& (isWidthGreaterthanParent != true))\n {\n if (this.row.rowBreakHeightValue !== null && typeof this.row.rowBreakHeightValue !== 'undefined')\n childGridResult.bounds.height = this.row.rowBreakHeightValue;\n if (this.row.rowBreakHeight == 0)\n this.row.NestedGridLayoutResult = childGridResult;\n else\n this.row.rowBreakHeight = this.row.rowBreakHeightValue;\n //bounds.height = this.row.rowBreakHeight;\n //After drawing paginated nested grid, the bounds of the parent grid in start page should be corrected for borders.\n //bounds.height = graphics.clientSize.height - bounds.y;\n }\n }\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n var imageBounds = void 0;\n if (this.objectValue.width <= innerLayoutArea.width) {\n imageBounds = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, this.objectValue.width, innerLayoutArea.height);\n }\n else {\n imageBounds = innerLayoutArea;\n }\n graphics.drawImage(this.objectValue, imageBounds.x, imageBounds.y, imageBounds.width, imageBounds.height);\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n this.objectValue.draw(graphics.currentPage, innerLayoutArea);\n }\n else if (typeof this.objectValue === 'undefined') {\n this.objectValue = \"\";\n graphics.drawString(this.objectValue, font, textPen, textBrush, innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, innerLayoutArea.height, strFormat);\n if (this.style.cellPadding != null && this.style.cellPadding.bottom == 0 && this.style.cellPadding.left == 0 && this.style.cellPadding.right == 0 && this.style.cellPadding.top == 0) {\n bounds.width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n }\n if (this.style.borders != null) {\n if (!this.fontSpilt)\n this.drawCellBorders(graphics, bounds);\n else {\n if (this.row.grid.ParentCell.row.grid.splitChildRowIndex != -1) {\n this.row.rowFontSplit = false;\n this.drawCellBorders(graphics, bounds);\n }\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Draws the `cell border` constructed by drawing lines.\n * @private\n */\n PdfGridCell.prototype.drawCellBorders = function (graphics, bounds) {\n if (this.row.grid.style.borderOverlapStyle === PdfBorderOverlapStyle.Inside) {\n bounds.x += this.style.borders.left.width;\n bounds.y += this.style.borders.top.width;\n bounds.width -= this.style.borders.right.width;\n bounds.height -= this.style.borders.bottom.width;\n }\n var p1 = new PointF(bounds.x, bounds.y + bounds.height);\n var p2 = new PointF(bounds.x, bounds.y);\n var pen = this.cellStyle.borders.left;\n if (this.cellStyle.borders.left.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n // SetTransparency(ref graphics, pen);\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n pen = this.cellStyle.borders.right;\n if ((bounds.x + bounds.width) > (graphics.clientSize.width - (pen.width / 2))) {\n p1 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y);\n p2 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y + bounds.height);\n }\n if (this.cellStyle.borders.right.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y);\n pen = this.cellStyle.borders.top;\n if (this.cellStyle.borders.top.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n p2 = new PointF(bounds.x, bounds.y + bounds.height);\n pen = this.cellStyle.borders.bottom;\n if ((bounds.y + bounds.height) > (graphics.clientSize.height - (pen.width / 2))) {\n p1 = new PointF((bounds.x + bounds.width), (graphics.clientSize.height - (pen.width / 2)));\n p2 = new PointF(bounds.x, (graphics.clientSize.height - (pen.width / 2)));\n }\n if (this.cellStyle.borders.bottom.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n };\n // private setTransparency(graphics : PdfGraphics, pen : PdfPen) : void {\n // let alpha : number = (pen.color.a / 255) as number;\n // graphics.save();\n // graphics.setTransparency(alpha);\n // }\n /**\n * `Adjusts the outer layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustOuterLayoutArea = function (bounds, g) {\n var isHeader = false;\n var cellSpacing = this.row.grid.style.cellSpacing;\n if (cellSpacing > 0) {\n bounds = new RectangleF(bounds.x + cellSpacing, bounds.y + cellSpacing, bounds.width - cellSpacing, bounds.height - cellSpacing);\n }\n var currentColIndex = this.row.cells.indexOf(this);\n if (this.columnSpan > 1 || (this.row.rowOverflowIndex > 0 && (currentColIndex == this.row.rowOverflowIndex + 1) && this.isCellMergeContinue)) {\n var span = this.columnSpan;\n if (span == 1 && this.isCellMergeContinue) {\n for (var j = currentColIndex + 1; j < this.row.grid.columns.count; j++) {\n if (this.row.cells.getCell(j).isCellMergeContinue)\n span++;\n else\n break;\n }\n }\n var totalWidth = 0;\n for (var i = currentColIndex; i < currentColIndex + span; i++) {\n if (this.row.grid.style.allowHorizontalOverflow) {\n var width = void 0;\n var compWidth = this.row.grid.size.width < g.clientSize.width ? this.row.grid.size.width : g.clientSize.width;\n if (this.row.grid.size.width > g.clientSize.width) {\n width = bounds.x + totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n else {\n width = totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n if (width > compWidth) {\n break;\n }\n }\n totalWidth += this.row.grid.columns.getColumn(i).width;\n }\n totalWidth -= this.row.grid.style.cellSpacing;\n bounds.width = totalWidth;\n }\n if (this.rowSpan > 1 || this.row.rowSpanExists) {\n var span = this.rowSpan;\n var currentRowIndex = this.row.grid.rows.rowCollection.indexOf(this.row);\n if (currentRowIndex == -1) {\n currentRowIndex = this.row.grid.headers.indexOf(this.row);\n if (currentRowIndex != -1) {\n isHeader = true;\n }\n }\n // if (span == 1 && this.isCellMergeContinue) {\n // for (let j : number = currentRowIndex + 1; j < this.row.grid.rows.count; j++)\n // {\n // let flag : boolean = (isHeader ? this.row.grid.headers.getHeader(j).cells.getCell(currentColIndex).isCellMergeContinue : this.row.grid.rows.getRow(j).cells.getCell(currentColIndex).isCellMergeContinue);\n // if (flag)\n // span++;\n // else\n // break;\n // }\n // }\n var totalHeight = 0;\n var max = 0;\n for (var i = currentRowIndex; i < currentRowIndex + span; i++) {\n totalHeight += (isHeader ? this.row.grid.headers.getHeader(i).height : this.row.grid.rows.getRow(i).height);\n var row = this.row.grid.rows.getRow(i);\n var rowIndex = this.row.grid.rows.rowCollection.indexOf(row);\n /*if (this.rowSpan > 1)\n {\n for (let k : number = 0; k < this.row.cells.count; k++) {\n let cell : PdfGridCell = this.row.cells.getCell(k);\n if(cell.rowSpan>1)\n {\n let tempHeight : number =0;\n \n for (let j :number = i; j < i +cell.rowSpan; j++)\n {\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = false;\n tempHeight += this.row.grid.rows.getRow(j).height;\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = true;\n }\n //To check the Row spanned cell height is greater than the total spanned row height.\n if(cell.height>tempHeight)\n {\n if (max < (cell.height - tempHeight))\n {\n max = cell.height - tempHeight;\n if (this.rowSpanRemainingHeight != 0 && max > this.rowSpanRemainingHeight)\n {\n max += this.rowSpanRemainingHeight;\n }\n let index :number = row.cells.indexOf(cell);\n //set the m_rowspanRemainingHeight to last rowspanned row.\n this.row.grid.rows.getRow((rowIndex +cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight = max;\n this.rowSpanRemainingHeight = this.row.grid.rows.getRow((rowIndex + cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight;\n }\n }\n }\n }\n }\n if (!this.row.grid.rows.getRow(i).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(i).isRowHeightSet = true;*/\n }\n var cellIndex = this.row.cells.indexOf(this);\n totalHeight -= this.row.grid.style.cellSpacing;\n // if (this.row.cells.getCell(cellIndex).height > totalHeight && (!this.row.grid.rows.getRow((currentRowIndex + span) - 1).isRowHeightSet)) {\n // this.row.grid.rows.getRow((currentRowIndex + span) - 1).cells.getCell(cellIndex).rowSpanRemainingHeight = this.row.cells.getCell(cellIndex).height - totalHeight;\n // totalHeight = this.row.cells.getCell(cellIndex).height;\n // bounds.height = totalHeight;\n // } else {\n bounds.height = totalHeight;\n // }\n if (!this.row.rowMergeComplete) {\n bounds.height = totalHeight;\n }\n }\n return bounds;\n };\n /* tslint:enable */\n /**\n * Gets the `text font`.\n * @private\n */\n PdfGridCell.prototype.getTextFont = function () {\n if (typeof this.style.font !== 'undefined' && this.style.font != null) {\n return this.style.font;\n }\n else if (typeof this.row.style.font !== 'undefined' && this.row.style.font != null) {\n return this.row.style.font;\n }\n else if (typeof this.row.grid.style.font !== 'undefined' && this.row.grid.style.font != null) {\n return this.row.grid.style.font;\n }\n else {\n return PdfDocument.defaultFont;\n }\n };\n /**\n * Gets the `text brush`.\n * @private\n */\n PdfGridCell.prototype.getTextBrush = function () {\n if (typeof this.style.textBrush !== 'undefined' && this.style.textBrush != null) {\n return this.style.textBrush;\n }\n else if (typeof this.row.style.textBrush !== 'undefined' && this.row.style.textBrush != null) {\n return this.row.style.textBrush;\n }\n else {\n return this.row.grid.style.textBrush;\n }\n };\n /**\n * Gets the `text pen`.\n * @private\n */\n PdfGridCell.prototype.getTextPen = function () {\n if (typeof this.style.textPen !== 'undefined' && this.style.textPen != null) {\n return this.style.textPen;\n }\n else if (typeof this.row.style.textPen !== 'undefined' && this.row.style.textPen != null) {\n return this.row.style.textPen;\n }\n else {\n return this.row.grid.style.textPen;\n }\n };\n /**\n * Gets the `background brush`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundBrush = function () {\n if (typeof this.style.backgroundBrush !== 'undefined' && this.style.backgroundBrush != null) {\n return this.style.backgroundBrush;\n }\n else if (typeof this.row.style.backgroundBrush !== 'undefined' && this.row.style.backgroundBrush != null) {\n return this.row.style.backgroundBrush;\n }\n else {\n return this.row.grid.style.backgroundBrush;\n }\n };\n /**\n * Gets the `background image`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundImage = function () {\n if (typeof this.style.backgroundImage !== 'undefined' && this.style.backgroundImage != null) {\n return this.style.backgroundImage;\n }\n else if (typeof this.row.style.backgroundImage !== 'undefined' && this.row.style.backgroundImage != null) {\n return this.row.style.backgroundImage;\n }\n else {\n return this.row.grid.style.backgroundImage;\n }\n };\n /**\n * Gets the current `StringFormat`.\n * @private\n */\n PdfGridCell.prototype.getStringFormat = function () {\n if (typeof this.style.stringFormat !== 'undefined' && this.style.stringFormat != null) {\n return this.style.stringFormat;\n }\n else {\n return this.stringFormat;\n }\n };\n /**\n * Calculates the `height`.\n * @private\n */\n PdfGridCell.prototype.measureHeight = function () {\n // .. Calculate the cell text height.\n // .....Add border widths, cell spacings and paddings to the height.\n var width = this.calculateWidth();\n // //check whether the Current PdfGridCell has padding\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n //width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n var height = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var currentValue = this.objectValue;\n /* tslint:disable */\n if (!this.isFinish)\n currentValue = !(this.remaining === null || this.remaining === '' ||\n typeof this.remaining === 'undefined') ? this.remaining : this.objectValue;\n var slr = null;\n var cellIndex = this.row.cells.indexOf(this);\n if (this.gridRow.grid.style.cellSpacing != 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n }\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n if (this.gridRow.grid.isChildGrid) {\n if (width < 0) {\n this.tempval = width;\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n this.tempval += (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n this.tempval += (this.style.cellPadding.right + this.style.cellPadding.left);\n this.tempval += (this.style.borders.left.width + this.style.borders.right.width);\n }\n }\n else {\n this.tempval = width;\n }\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(this.tempval, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n else {\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n }\n /* tslint:enable */\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n var cellIndex = this.row.cells.indexOf(this);\n var internalWidth = 0;\n if ((this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n internalWidth -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n internalWidth -= this.style.cellPadding.right;\n }\n }\n else if ((this.row.grid.style.cellPadding != null || typeof this.row.grid.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n internalWidth -= this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n internalWidth -= this.row.grid.style.cellPadding.right;\n }\n }\n else {\n internalWidth = this.calculateWidth();\n }\n this.objectValue.tempWidth = internalWidth;\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n height = this.objectValue.size.height;\n }\n else {\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n if (this.gridRow.grid.style.cellSpacing !== 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n //height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (this.row.grid.style.cellPadding.hasBottomPad && typeof this.row.grid.style.cellPadding.bottom !== 'undefined') {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n height += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n height += this.objectValue.height;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n /* tslint:disable */\n var slr = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n height += slr.actualSize.height;\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (typeof this.objectValue === 'undefined') {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n //Add padding top and bottom value to height\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n else {\n height += (this.style.cellPadding.top + this.style.cellPadding.bottom);\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (typeof this.row.grid.style.cellPadding.bottom !== 'undefined' && this.row.grid.style.cellPadding.hasBottomPad) {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n height += this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n height += this.style.cellPadding.bottom;\n }\n }\n }\n height += this.row.grid.style.cellSpacing;\n return height;\n };\n /**\n * return the calculated `width` of the cell.\n * @private\n */\n PdfGridCell.prototype.calculateWidth = function () {\n var cellIndex = this.row.cells.indexOf(this);\n var rowindex = this.row.grid.rows.rowCollection.indexOf(this.row);\n var columnSpan = this.columnSpan;\n var width = 0;\n if (columnSpan === 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n }\n }\n else if (columnSpan > 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n if ((i + 1) < columnSpan) {\n this.row.cells.getCell(cellIndex + i + 1).hasColSpan = true;\n }\n }\n }\n if (this.parent != null && this.parent.row.width > 0) {\n if ((this.row.grid.isChildGrid) && this.parent != null && (this.row.width > this.parent.row.width)) {\n width = 0;\n for (var j = 0; j < this.parent.columnSpan; j++) {\n width += this.parent.row.grid.columns.getColumn(j).width;\n }\n width = width / this.row.cells.count;\n }\n }\n return width;\n };\n return PdfGridCell;\n}());\nexport { PdfGridCell };\n/**\n * `PdfGridCellCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridCell' objects.\n * @private\n */\nvar PdfGridCellCollection = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridCellCollection` class with the row.\n * @private\n */\n function PdfGridCellCollection(row) {\n /**\n * @hidden\n * @private\n */\n this.cells = [];\n this.gridRow = row;\n }\n //Properties\n /**\n * Gets the current `cell`.\n * @private\n */\n PdfGridCellCollection.prototype.getCell = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException');\n }\n return this.cells[index];\n };\n Object.defineProperty(PdfGridCellCollection.prototype, \"count\", {\n /**\n * Gets the cells `count`.[Read-Only].\n * @private\n */\n get: function () {\n return this.cells.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridCellCollection.prototype.add = function (cell) {\n if (typeof cell === 'undefined') {\n var tempcell = new PdfGridCell();\n this.add(tempcell);\n return cell;\n }\n else {\n cell.row = this.gridRow;\n this.cells.push(cell);\n }\n };\n /**\n * Returns the `index of` a particular cell in the collection.\n * @private\n */\n PdfGridCellCollection.prototype.indexOf = function (cell) {\n return this.cells.indexOf(cell);\n };\n return PdfGridCellCollection;\n}());\nexport { PdfGridCellCollection };\n","import { PdfGridCell } from './pdf-grid-cell';\nimport { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';\n/**\n * `PdfGridColumn` class represents the schema of a column in a 'PdfGrid'.\n */\nvar PdfGridColumn = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumn` class with the parent grid.\n * @private\n */\n function PdfGridColumn(grid) {\n /**\n * The `width` of the column.\n * @default 0\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n }\n Object.defineProperty(PdfGridColumn.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the 'PdfGridColumn'.\n * @private\n */\n get: function () {\n return this.columnWidth;\n },\n set: function (value) {\n this.isCustomWidth = true;\n this.columnWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumn.prototype, \"format\", {\n /**\n * Gets or sets the information about the text `formatting`.\n * @private\n */\n get: function () {\n if (this.stringFormat == null) {\n this.stringFormat = new PdfStringFormat(); //GetDefaultFormat();\n }\n return this.stringFormat;\n },\n set: function (value) {\n this.stringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridColumn;\n}());\nexport { PdfGridColumn };\n/**\n * `PdfGridColumnCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridColumn' objects.\n * @private\n */\nvar PdfGridColumnCollection = /** @class */ (function () {\n //properties\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumnCollection` class with the parent grid.\n * @private\n */\n function PdfGridColumnCollection(grid) {\n /**\n * @hidden\n * @private\n */\n this.internalColumns = [];\n /**\n * @hidden\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n this.internalColumns = [];\n }\n //Iplementation\n /**\n * `Add` a new column to the 'PdfGrid'.\n * @private\n */\n PdfGridColumnCollection.prototype.add = function (count) {\n // public add(column : PdfGridColumn) : void\n // public add(arg : number|PdfGridColumn) : void {\n // if (typeof arg === 'number') {\n for (var i = 0; i < count; i++) {\n this.internalColumns.push(new PdfGridColumn(this.grid));\n for (var index = 0; index < this.grid.rows.count; index++) {\n var row = this.grid.rows.getRow(index);\n var cell = new PdfGridCell();\n cell.value = '';\n row.cells.add(cell);\n }\n }\n // } else {\n // let column : PdfGridColumn = new PdfGridColumn(this.grid);\n // this.columns.push(column);\n // return column;\n // }\n };\n Object.defineProperty(PdfGridColumnCollection.prototype, \"count\", {\n /**\n * Gets the `number of columns` in the 'PdfGrid'.[Read-Only].\n * @private\n */\n get: function () {\n return this.internalColumns.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"width\", {\n /**\n * Gets the `widths`.\n * @private\n */\n get: function () {\n if (this.columnWidth === 0) {\n this.columnWidth = this.measureColumnsWidth();\n }\n if (this.grid.initialWidth !== 0 && this.columnWidth !== this.grid.initialWidth && !this.grid.style.allowHorizontalOverflow) {\n this.columnWidth = this.grid.initialWidth;\n this.grid.isPageWidth = true;\n }\n return this.columnWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"columns\", {\n /**\n * Gets the `array of PdfGridColumn`.[Read-Only]\n * @private\n */\n get: function () {\n return this.internalColumns;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `PdfGridColumn` from the specified index.[Read-Only]\n * @private\n */\n PdfGridColumnCollection.prototype.getColumn = function (index) {\n if (index >= 0 && index <= this.columns.length) {\n return this.columns[index];\n }\n else {\n throw Error('can not get the column from the index: ' + index);\n }\n };\n //Implementation\n /**\n * `Calculates the column widths`.\n * @private\n */\n PdfGridColumnCollection.prototype.measureColumnsWidth = function () {\n var totalWidth = 0;\n this.grid.measureColumnsWidth();\n for (var i = 0, count = this.internalColumns.length; i < count; i++) {\n totalWidth += this.internalColumns[i].width;\n }\n return totalWidth;\n };\n /**\n * Gets the `widths of the columns`.\n * @private\n */\n PdfGridColumnCollection.prototype.getDefaultWidths = function (totalWidth) {\n var widths = [];\n var summ = 0.0;\n var subFactor = this.count;\n for (var i = 0; i < this.count; i++) {\n if (this.grid.isPageWidth && totalWidth >= 0 && !this.internalColumns[i].isCustomWidth) {\n this.internalColumns[i].width = 0;\n }\n else {\n widths[i] = this.internalColumns[i].width;\n if (this.internalColumns[i].width > 0 && this.internalColumns[i].isCustomWidth) {\n totalWidth -= this.internalColumns[i].width;\n subFactor--;\n }\n else {\n widths[i] = 0;\n }\n }\n }\n for (var i = 0; i < this.count; i++) {\n var width = totalWidth / subFactor;\n if (widths[i] <= 0) {\n widths[i] = width;\n }\n }\n return widths;\n };\n return PdfGridColumnCollection;\n}());\nexport { PdfGridColumnCollection };\n","import { PdfGridCell, PdfGridCellCollection } from './pdf-grid-cell';\nimport { PdfGridRowStyle } from './styles/style';\n/**\n * `PdfGridRow` class provides customization of the settings for the particular row.\n */\nvar PdfGridRow = /** @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridRow` class with the parent grid.\n * @private\n */\n function PdfGridRow(grid) {\n /**\n * Stores the index of the overflowing row.\n * @private\n */\n this.gridRowOverflowIndex = 0;\n /**\n * The `height` of the row.\n * @private\n */\n this.rowHeight = 0;\n /**\n * The `width` of the row.\n * @private\n */\n this.rowWidth = 0;\n /**\n * The `isFinish` of the row.\n * @private\n */\n this.isrowFinish = false;\n /**\n * Check whether the Row span row height `is set explicitly`.\n * @default false\n * @public\n */\n this.isRowSpanRowHeightSet = false;\n /**\n * The `page count` of the row.\n * @public\n */\n this.noOfPageCount = 0;\n /**\n * Check whether the row height `is set explicitly`.\n * @default false\n * @private\n */\n this.isRowHeightSet = false;\n this.isPageBreakRowSpanApplied = false;\n /**\n * Check weather the row merge `is completed` or not.\n * @default true\n * @private\n */\n this.isRowMergeComplete = true;\n this.repeatFlag = false;\n this.rowFontSplit = false;\n this.isHeaderRow = false;\n this.pdfGrid = grid;\n }\n Object.defineProperty(PdfGridRow.prototype, \"rowSpanExists\", {\n //Properties\n /**\n * Gets or sets a value indicating [`row span exists`].\n * @private\n */\n get: function () {\n return this.bRowSpanExists;\n },\n set: function (value) {\n this.bRowSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"cells\", {\n /**\n * Gets the `cells` from the selected row.[Read-Only].\n * @private\n */\n get: function () {\n if (this.gridCells == null) {\n this.gridCells = new PdfGridCellCollection(this);\n }\n return this.gridCells;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"grid\", {\n /**\n * Gets or sets the parent `grid`.\n * @private\n */\n get: function () {\n return this.pdfGrid;\n },\n set: function (value) {\n this.pdfGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"style\", {\n /**\n * Gets or sets the row `style`.\n * @private\n */\n get: function () {\n if (typeof this.rowStyle === 'undefined') {\n this.rowStyle = new PdfGridRowStyle();\n this.rowStyle.setParent(this);\n }\n return this.rowStyle;\n },\n set: function (value) {\n this.rowStyle = value;\n for (var i = 0; i < this.cells.count; i++) {\n this.cells.getCell(i).style.borders = value.border;\n if (typeof value.font !== 'undefined') {\n this.cells.getCell(i).style.font = value.font;\n }\n if (typeof value.backgroundBrush !== 'undefined') {\n this.cells.getCell(i).style.backgroundBrush = value.backgroundBrush;\n }\n if (typeof value.backgroundImage !== 'undefined') {\n this.cells.getCell(i).style.backgroundImage = value.backgroundImage;\n }\n if (typeof value.textBrush !== 'undefined') {\n this.cells.getCell(i).style.textBrush = value.textBrush;\n }\n if (typeof value.textPen !== 'undefined') {\n this.cells.getCell(i).style.textPen = value.textPen;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowBreakHeight\", {\n /**\n * `Height` of the row yet to be drawn after split.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBreakHeight === 'undefined') {\n this.gridRowBreakHeight = 0;\n }\n return this.gridRowBreakHeight;\n },\n set: function (value) {\n this.gridRowBreakHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowOverflowIndex\", {\n /**\n * `over flow index` of the row.\n * @private\n */\n get: function () {\n return this.gridRowOverflowIndex;\n },\n set: function (value) {\n this.gridRowOverflowIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the row.\n * @private\n */\n get: function () {\n if (!this.isRowHeightSet) {\n this.rowHeight = this.measureHeight();\n }\n return this.rowHeight;\n },\n set: function (value) {\n this.rowHeight = value;\n this.isRowHeightSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the row.\n * @private\n */\n get: function () {\n if (this.rowWidth === 0 || typeof this.rowWidth === 'undefined') {\n this.rowWidth = this.measureWidth();\n }\n return this.rowWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"NestedGridLayoutResult\", {\n /**\n * Gets or sets the row `Nested grid Layout Result`.\n * @private\n */\n get: function () {\n return this.gridResult;\n },\n set: function (value) {\n this.gridResult = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"columnSpanExists\", {\n /**\n * Gets or sets a value indicating [`column span exists`].\n * @private\n */\n get: function () {\n return this.bColumnSpanExists;\n },\n set: function (value) {\n this.bColumnSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowMergeComplete\", {\n /**\n * Check whether the Row `has row span or row merge continue`.\n * @private\n */\n get: function () {\n return this.isRowMergeComplete;\n },\n set: function (value) {\n this.isRowMergeComplete = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowIndex\", {\n /**\n * Returns `index` of the row.\n * @private\n */\n get: function () {\n return this.grid.rows.rowCollection.indexOf(this);\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the height`.\n * @private\n */\n PdfGridRow.prototype.measureHeight = function () {\n var rowSpanRemainingHeight = 0;\n var rowHeight;\n var maxHeight = 0;\n if (this.cells.getCell(0).rowSpan > 1) {\n rowHeight = 0;\n }\n else {\n rowHeight = this.cells.getCell(0).height;\n }\n for (var i = 0; i < this.cells.count; i++) {\n var cell = this.cells.getCell(i);\n //get the maximum rowspan remaining height.\n if (cell.rowSpanRemainingHeight > rowSpanRemainingHeight) {\n rowSpanRemainingHeight = cell.rowSpanRemainingHeight;\n }\n //skip the cell if row spanned.\n // if (cell.isRowMergeContinue) {\n // continue;\n // }\n // if (!cell.isRowMergeContinue) {\n // this.rowMergeComplete = false;\n // }\n this.rowMergeComplete = false;\n if (cell.rowSpan > 1) {\n var cellIn = i;\n var rowin = this.isHeaderRow ? this.grid.headers.indexOf(this) : this.grid.rows.rowCollection.indexOf(this);\n for (var j = 0; j < cell.rowSpan; j++) {\n if ((j + 1) < cell.rowSpan) {\n (this.isHeaderRow ? this.grid.headers.getHeader(rowin + j + 1) : this.grid.rows.getRow(rowin + j + 1)).cells.getCell(cellIn).hasRowSpan = true;\n }\n }\n if (maxHeight < cell.height) {\n maxHeight = cell.height;\n }\n continue;\n }\n rowHeight = Math.max(rowHeight, cell.height);\n }\n if (maxHeight > rowHeight) {\n rowHeight = maxHeight;\n }\n if (rowHeight === 0) {\n rowHeight = maxHeight;\n }\n else if (rowSpanRemainingHeight > 0) {\n rowHeight += rowSpanRemainingHeight;\n }\n return rowHeight;\n };\n PdfGridRow.prototype.measureWidth = function () {\n var rowWid = 0;\n for (var i = 0; i < this.grid.columns.count; i++) {\n var column = this.grid.columns.getColumn(i);\n rowWid += column.width;\n }\n return rowWid;\n };\n return PdfGridRow;\n}());\nexport { PdfGridRow };\n/**\n * `PdfGridRowCollection` class provides access to an ordered, strongly typed collection of 'PdfGridRow' objects.\n * @private\n */\nvar PdfGridRowCollection = /** @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowCollection` class with the parent grid.\n * @private\n */\n function PdfGridRowCollection(grid) {\n this.rows = [];\n this.grid = grid;\n }\n Object.defineProperty(PdfGridRowCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the number of header in the `PdfGrid`.[Read-Only].\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRowCollection.prototype, \"rowCollection\", {\n //Implementation\n /**\n * Return the row collection of the `grid`.\n * @private\n */\n get: function () {\n return this.rows;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowCollection.prototype.addRow = function (arg) {\n if (typeof arg === 'undefined') {\n var temprow = new PdfGridRow(this.grid);\n this.addRow(temprow);\n return temprow;\n }\n else {\n arg.style.setBackgroundBrush(this.grid.style.backgroundBrush);\n arg.style.setFont(this.grid.style.font);\n arg.style.setTextBrush(this.grid.style.textBrush);\n arg.style.setTextPen(this.grid.style.textPen);\n if (arg.cells.count === 0) {\n for (var i = 0; i < this.grid.columns.count; i++) {\n arg.cells.add(new PdfGridCell());\n }\n }\n this.rows.push(arg);\n }\n };\n /**\n * Return the row by index.\n * @private\n */\n PdfGridRowCollection.prototype.getRow = function (index) {\n return this.rows[index];\n };\n return PdfGridRowCollection;\n}());\nexport { PdfGridRowCollection };\n/**\n * `PdfGridHeaderCollection` class provides customization of the settings for the header.\n * @private\n */\nvar PdfGridHeaderCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfGridHeaderCollection` class with the parent grid.\n * @private\n */\n function PdfGridHeaderCollection(grid) {\n /**\n * The array to store the `rows` of the grid header.\n * @private\n */\n this.rows = [];\n this.grid = grid;\n this.rows = [];\n }\n //Properties\n /**\n * Gets a 'PdfGridRow' object that represents the `header` row in a 'PdfGridHeaderCollection' control.[Read-Only].\n * @private\n */\n PdfGridHeaderCollection.prototype.getHeader = function (index) {\n // if (index < 0 || index >= Count) {\n // throw new IndexOutOfRangeException();\n // }\n return (this.rows[index]);\n };\n Object.defineProperty(PdfGridHeaderCollection.prototype, \"count\", {\n /**\n * Gets the `number of header` in the 'PdfGrid'.[Read-Only]\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridHeaderCollection.prototype.add = function (arg) {\n if (typeof arg === 'number') {\n var row = void 0;\n for (var i = 0; i < arg; i++) {\n row = new PdfGridRow(this.grid);\n row.isHeaderRow = true;\n for (var j = 0; j < this.grid.columns.count; j++) {\n row.cells.add(new PdfGridCell());\n }\n this.rows.push(row);\n }\n return this.rows;\n }\n else {\n this.rows.push(arg);\n }\n };\n PdfGridHeaderCollection.prototype.indexOf = function (row) {\n return this.rows.indexOf(row);\n };\n return PdfGridHeaderCollection;\n}());\nexport { PdfGridHeaderCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfGrid.ts class for EJ2-PDF\n */\nimport { PdfGridColumnCollection } from './pdf-grid-column';\nimport { PdfGridRowCollection, PdfGridHeaderCollection } from './pdf-grid-row';\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfLayoutElement } from './../../graphics/figures/layout-element';\nimport { PdfLayoutFormat } from './../../graphics/figures/base/element-layouter';\nimport { PdfGridStyle } from './styles/style';\nimport { PdfBorders } from './styles/pdf-borders';\nimport { PdfGridLayouter } from './../../structured-elements/grid/layout/grid-layouter';\nvar PdfGrid = /** @class */ (function (_super) {\n __extends(PdfGrid, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGrid() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n /**\n * Check the child grid is ' split or not'\n */\n _this.isGridSplit = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.splitChildRowIndex = -1;\n /**\n * The event raised on `begin cell lay outing`.\n * @event\n * @private\n */\n //public beginPageLayout : Function;\n /**\n * The event raised on `end cell lay outing`.\n * @event\n * @private\n */\n //public endPageLayout : Function;\n _this.hasRowSpanSpan = false;\n _this.hasColumnSpan = false;\n _this.isSingleGrid = true;\n return _this;\n }\n Object.defineProperty(PdfGrid.prototype, \"raiseBeginCellDraw\", {\n //Properties\n /**\n * Gets a value indicating whether the `start cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginCellDraw !== 'undefined' && typeof this.beginCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"raiseEndCellDraw\", {\n /**\n * Gets a value indicating whether the `end cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endCellDraw !== 'undefined' && typeof this.endCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"repeatHeader\", {\n /**\n * Gets or sets a value indicating whether to `repeat header`.\n * @private\n */\n get: function () {\n if (this.bRepeatHeader == null || typeof this.bRepeatHeader === 'undefined') {\n this.bRepeatHeader = false;\n }\n return this.bRepeatHeader;\n },\n set: function (value) {\n this.bRepeatHeader = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"allowRowBreakAcrossPages\", {\n /**\n * Gets or sets a value indicating whether to split or cut rows that `overflow a page`.\n * @private\n */\n get: function () {\n return this.breakRow;\n },\n set: function (value) {\n this.breakRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"columns\", {\n /**\n * Gets the `column` collection of the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridColumns == null || typeof this.gridColumns === 'undefined') {\n this.gridColumns = new PdfGridColumnCollection(this);\n }\n return this.gridColumns;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"rows\", {\n /**\n * Gets the `row` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridRows == null) {\n this.gridRows = new PdfGridRowCollection(this);\n }\n return this.gridRows;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"headers\", {\n /**\n * Gets the `headers` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridHeaders == null || typeof this.gridHeaders === 'undefined') {\n this.gridHeaders = new PdfGridHeaderCollection(this);\n }\n return this.gridHeaders;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"initialWidth\", {\n /**\n * Indicating `initial width` of the page.\n * @private\n */\n get: function () {\n return this.gridInitialWidth;\n },\n set: function (value) {\n this.gridInitialWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"style\", {\n /**\n * Gets or sets the `grid style`.\n * @private\n */\n get: function () {\n if (this.gridStyle == null) {\n this.gridStyle = new PdfGridStyle();\n }\n return this.gridStyle;\n },\n set: function (value) {\n if (this.gridStyle == null) {\n this.gridStyle = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isPageWidth\", {\n /**\n * Gets a value indicating whether the grid column width is considered to be `page width`.\n * @private\n */\n get: function () {\n return this.ispageWidth;\n },\n set: function (value) {\n this.ispageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isChildGrid\", {\n /**\n * Gets or set if grid `is nested grid`.\n * @private\n */\n get: function () {\n return this.ischildGrid;\n },\n set: function (value) {\n this.ischildGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"size\", {\n /**\n * Gets or set if grid ' is split or not'\n * @public\n */\n // public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }\n /**\n * Gets the `size`.\n * @private\n */\n get: function () {\n if ((this.gridSize.width === 0 || typeof this.gridSize.width === 'undefined') && this.gridSize.height === 0) {\n this.gridSize = this.measure();\n }\n return this.gridSize;\n // } else {\n // return this.gridSize;\n // }\n },\n set: function (value) {\n this.gridSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"ParentCell\", {\n get: function () {\n return this.parentCell;\n },\n set: function (value) {\n this.parentCell = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"LayoutFormat\", {\n get: function () {\n return this.layoutFormat;\n },\n enumerable: true,\n configurable: true\n });\n PdfGrid.prototype.draw = function (arg1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2.x, arg2.y);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg1, arg2, arg3, null);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\n }\n else if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null)) {\n var width = (arg1.graphics.clientSize.width - arg2);\n var layoutRectangle = new RectangleF(arg2, arg3, width, 0);\n return this.drawHelper(arg1, layoutRectangle, arg4);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'boolean') {\n return this.drawHelper(arg1, arg2, null);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n };\n /**\n * `measures` this instance.\n * @private\n */\n PdfGrid.prototype.measure = function () {\n var height = 0;\n var width = this.columns.width;\n for (var i = 0; i < this.headers.count; i++) {\n var row = this.headers.getHeader(i);\n height += row.height;\n }\n for (var i = 0; i < this.rows.count; i++) {\n var row = this.rows.getRow(i);\n height += row.height;\n }\n return new SizeF(width, height);\n };\n PdfGrid.prototype.onBeginCellDraw = function (args) {\n if (this.raiseBeginCellDraw) {\n this.beginCellDraw(this, args);\n }\n };\n PdfGrid.prototype.onEndCellDraw = function (args) {\n if (this.raiseEndCellDraw) {\n this.endCellDraw(this, args);\n }\n };\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n PdfGrid.prototype.layout = function (param) {\n var width = param.bounds.width;\n var height = param.bounds.height;\n var hasChanged = false;\n if (typeof param.bounds.width === 'undefined' || param.bounds.width === 0) {\n width = param.page.getClientSize().width - param.bounds.x;\n hasChanged = true;\n }\n if (typeof param.bounds.height === 'undefined' || param.bounds.height === 0) {\n height = param.page.getClientSize().height - param.bounds.y;\n hasChanged = true;\n }\n if (hasChanged) {\n param.bounds = new RectangleF(param.bounds.x, param.bounds.y, width, height);\n }\n if (this.rows.count !== 0) {\n var currentRow = this.rows.getRow(0).cells.getCell(0).style;\n if (currentRow.borders != null && ((currentRow.borders.left != null && currentRow.borders.left.width !== 1) ||\n (currentRow.borders.top != null && currentRow.borders.top.width !== 1))) {\n var x = currentRow.borders.left.width / 2;\n var y = currentRow.borders.top.width / 2;\n if (param.bounds.x === PdfBorders.default.right.width / 2 && param.bounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.gridSize.width, this.gridSize.height);\n param.bounds = newBound;\n }\n }\n }\n this.setSpan();\n this.checkSpan();\n this.layoutFormat = param.format;\n this.gridLocation = param.bounds;\n var layouter = new PdfGridLayouter(this);\n var result = (layouter.Layouter(param));\n return result;\n };\n PdfGrid.prototype.setSpan = function () {\n var colSpan = 1;\n var rowSpan = 1;\n var currentCellIndex = 0;\n var currentRowIndex = 0;\n var maxSpan = 0;\n var rowCount = this.headers.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.headers.getHeader(i);\n maxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.headers.count) {\n throw new Error('Invalid span specified at Header ' + j.toString() + ' column ' + i.toString());\n }\n // if (this.rows.count !== 0 && cell.rowSpan + i > this.rows.count) {\n // throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n // }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n colSpan = cell.columnSpan;\n rowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n row.cells.getCell(currentCellIndex).rowSpan = rowSpan;\n colSpan--;\n }\n currentCellIndex = j;\n colSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n rowSpan--;\n while (colSpan > 1) {\n currentCellIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n colSpan--;\n }\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n colSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n rowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n rowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = maxSpan;\n }\n };\n PdfGrid.prototype.checkSpan = function () {\n var cellcolSpan;\n var cellrowSpan = 1;\n var cellmaxSpan = 0;\n var currentCellIndex;\n var currentRowIndex = 0;\n cellcolSpan = cellrowSpan = 1;\n currentCellIndex = currentRowIndex = 0;\n if (this.hasRowSpanSpan || this.hasColumnSpan) {\n var rowCount = this.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.rows.getRow(i);\n cellmaxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cellmaxSpan = Math.max(cellmaxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue\n && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.rows.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n cellcolSpan = cell.columnSpan;\n cellrowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n currentCellIndex = j;\n cellcolSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellrowSpan--;\n while (cellcolSpan > 1) {\n currentCellIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n cellcolSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n cellrowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n cellrowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = cellmaxSpan;\n }\n }\n };\n PdfGrid.prototype.measureColumnsWidth = function (bounds) {\n if (typeof bounds !== 'undefined') {\n this.isPageWidth = false;\n var widths = this.columns.getDefaultWidths(bounds.width - bounds.x);\n //let tempWidth : number = this.columns.getColumn(0).width;\n for (var i = 0, count = this.columns.count; i < count; i++) {\n // if (this.columns.getColumn(i).width < 0)\n // this.columns.getColumn(i).columnWidth = widths[i];\n // else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth && widths[i]>0 && this.isComplete)\n this.columns.getColumn(i).columnWidth = widths[i];\n this.tempWidth = widths[i];\n }\n if (this.ParentCell != null && this.style.allowHorizontalOverflow == false && this.ParentCell.row.grid.style.allowHorizontalOverflow == false) {\n var padding = 0;\n var columnWidth = 0;\n var columnCount = this.columns.count;\n var childGridColumnWidth = 0;\n if (this.ParentCell.style.cellPadding != null || typeof this.ParentCell.style.cellPadding !== 'undefined') {\n if (typeof this.ParentCell.style.cellPadding.left != 'undefined' && this.ParentCell.style.cellPadding.hasLeftPad) {\n padding += this.ParentCell.style.cellPadding.left;\n }\n if (typeof this.ParentCell.style.cellPadding.right != 'undefined' && this.ParentCell.style.cellPadding.hasRightPad) {\n padding += this.ParentCell.style.cellPadding.right;\n }\n }\n for (var i = 0; i < this.ParentCell.columnSpan; i++) {\n columnWidth += this.ParentCell.row.grid.columns.getColumn(this.parentCellIndex + i).width;\n }\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n columnWidth -= this.gridColumns.getColumn(j).width;\n columnCount--;\n }\n }\n if ((this.ParentCell.row.grid.style.cellPadding != null || typeof this.ParentCell.row.grid.style.cellPadding != 'undefined')) {\n if (typeof this.ParentCell.row.grid.style.cellPadding.top != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasTopPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.top;\n }\n if (typeof this.ParentCell.row.grid.style.cellPadding.bottom != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasBottomPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n columnWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n if (columnWidth > padding) {\n childGridColumnWidth = (columnWidth - padding) / columnCount;\n this.tempWidth = childGridColumnWidth;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColumnWidth;\n }\n }\n }\n }\n // if (this.ParentCell != null && this.ParentCell.row.width > 0)\n // {\n // if (this.isChildGrid && this.gridSize.width > this.ParentCell.row.width)\n // {\n // widths = this.columns.getDefaultWidths(bounds.width);\n // for (let i : number = 0; i < this.columns.count; i++)\n // {\n // this.columns.getColumn(i).width = widths[i];\n // }\n // }\n // }\n }\n else {\n var widths = [this.columns.count];\n for (var n = 0; n < this.columns.count; n++) {\n widths[n] = 0;\n }\n var cellWidth = 0;\n var cellWidths = 0;\n if ((typeof this.isChildGrid === 'undefined' && typeof this.gridLocation !== 'undefined') || (this.isChildGrid === null && typeof this.gridLocation !== 'undefined')) {\n this.initialWidth = this.gridLocation.width;\n }\n if (this.headers.count > 0) {\n var colCount_1 = this.headers.getHeader(0).cells.count;\n var rowCount = this.headers.count;\n for (var i = 0; i < colCount_1; i++) {\n cellWidth = 0;\n for (var j = 0; j < rowCount; j++) {\n var rowWidth = Math.min(this.initialWidth, this.headers.getHeader(j).cells.getCell(i).width);\n cellWidth = Math.max(cellWidth, rowWidth);\n }\n widths[i] = cellWidth;\n }\n }\n // else {\n // let colCount : number = this.rows.getRow(0).cells.count;\n // let rowCount : number = this.rows.count;\n // for (let i : number = 0; i < colCount; i++) {\n // cellWidth = 0;\n // for (let j : number = 0; j < rowCount; j++) {\n // let rowWidth : number = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n // cellWidth = Math.max(cellWidth, rowWidth);\n // }\n // widths[i] = cellWidth;\n // }\n // }\n cellWidth = 0;\n for (var i = 0, colCount_2 = this.columns.count; i < colCount_2; i++) {\n for (var j = 0, rowCount = this.rows.count; j < rowCount; j++) {\n if ((this.rows.getRow(j).cells.getCell(i).columnSpan == 1 && !this.rows.getRow(j).cells.getCell(i).isCellMergeContinue) || this.rows.getRow(j).cells.getCell(i).value != null) {\n if (this.rows.getRow(j).cells.getCell(i).value != null && !this.rows.getRow(j).grid.style.allowHorizontalOverflow) {\n var value = this.rows.getRow(j).grid.style.cellPadding.right +\n this.rows.getRow(j).grid.style.cellPadding.left\n + this.rows.getRow(j).cells.getCell(i).style.borders.left.width / 2;\n // if (this.initialWidth != 0 )\n // (this.rows.getRow(j).cells.getCell(i).value as PdfGrid).initialWidth = this.initialWidth - value;\n }\n var rowWidth = 0;\n rowWidth = this.initialWidth > 0.0 ? Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width) : this.rows.getRow(j).cells.getCell(i).width;\n // let internalWidth : number = this.rows.getRow(j).cells.getCell(i).width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.left.width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.right.width;\n // let internalHeight : number = this.rows.getRow(j).cells.getCell(i).height;\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.top.width);\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.bottom.width);\n // let isCorrectWidth : boolean = (internalWidth + this.gridLocation.x) > this.currentGraphics.clientSize.width;\n // let isCorrectHeight : boolean = (internalHeight + this.gridLocation.y) > this.currentGraphics.clientSize.height;\n // if (isCorrectWidth || isCorrectHeight) {\n // throw Error('Image size exceeds client size of the page. Can not insert this image');\n // }\n // rowWidth = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n cellWidth = Math.max(widths[i], Math.max(cellWidth, rowWidth));\n cellWidth = Math.max(this.columns.getColumn(i).width, cellWidth);\n }\n }\n if (this.rows.count != 0)\n widths[i] = cellWidth;\n cellWidth = 0;\n }\n for (var i = 0, RowCount = this.rows.count; i < RowCount; i++) {\n for (var j = 0, ColCount = this.columns.count; j < ColCount; j++) {\n if (this.rows.getRow(i).cells.getCell(j).columnSpan > 1) {\n var total = widths[j];\n for (var k = 1; k < this.rows.getRow(i).cells.getCell(j).columnSpan; k++) {\n total += widths[j + k];\n }\n // if (this.rows.getRow(i).cells.getCell(j).width > total)\n // {\n // let extendedWidth : number = this.rows.getRow(i).cells.getCell(j).width - total;\n // extendedWidth = extendedWidth / this.rows.getRow(i).cells.getCell(j).columnSpan;\n // for (let k : number = j; k < j + this.rows.getRow(i).cells.getCell(j).columnSpan; k++)\n // widths[k] += extendedWidth;\n // }\n }\n }\n }\n // if (this.isChildGrid && this.initialWidth != 0)\n // {\n // widths = this.columns.getDefaultWidths(this.initialWidth);\n // }\n for (var i = 0, count = this.columns.count; i < count; i++) {\n if (this.columns.getColumn(i).width <= 0)\n this.columns.getColumn(i).columnWidth = widths[i];\n else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth)\n this.columns.getColumn(i).columnWidth = widths[i];\n }\n var padding = 0;\n var colWidth = 0;\n var colCount = this.columns.count;\n var childGridColWidth = 0;\n colWidth = this.tempWidth;\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n colWidth -= this.gridColumns.getColumn(j).width;\n colCount--;\n }\n }\n // if (this.style.cellSpacing != 0){\n // colWidth -= this.style.cellSpacing * 2;\n // }\n if (colWidth > 0) {\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n colWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n }\n if (colWidth > padding) {\n childGridColWidth = (colWidth) / colCount;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColWidth;\n }\n }\n }\n }\n };\n return PdfGrid;\n}(PdfLayoutElement));\nexport { PdfGrid };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfGrid } from '../pdf-grid';\nimport { PdfStringFormat } from './../../../graphics/fonts/pdf-string-format';\nimport { SizeF, RectangleF, PointF } from './../../../drawing/pdf-drawing';\nimport { PdfBorders } from '../styles/pdf-borders';\nimport { PdfLayoutType, PdfLayoutBreakType } from './../../../graphics/figures/enum';\nimport { PdfLayoutResult, PdfLayoutFormat, ElementLayouter } from './../../../graphics/figures/base/element-layouter';\nimport { PdfHorizontalOverflowType } from '../styles/style';\nimport { TemporaryDictionary } from './../../../collections/object-object-pair/dictionary';\nimport { PdfStringLayouter } from './../../../graphics/fonts/string-layouter';\nimport { PdfDocument } from './../../../document/pdf-document';\n/**\n * Class `lay outing the text`.\n *\n */\nvar PdfGridLayouter = /** @class */ (function (_super) {\n __extends(PdfGridLayouter, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGridLayouter(baseFormat) {\n var _this = _super.call(this, baseFormat) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridInitialWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n _this.childheight = 0;\n /**\n * Check weather it is `child grid or not`.\n * @private\n */\n _this.isChildGrid = false;\n /**\n * @hidden\n * @private\n */\n _this.hasRowSpanSpan = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.flag = true;\n /**\n * @hidden\n * @private\n */\n _this.columnRanges = [];\n /**\n * @hidden\n * @private\n */\n _this.currentLocation = new PointF(0, 0);\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.slr = null;\n _this.remainderText = null;\n _this.isPaginate = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n _this.isOverloadWithPosition = false;\n return _this;\n }\n Object.defineProperty(PdfGridLayouter.prototype, \"Grid\", {\n //Properties\n get: function () {\n return this.elements;\n },\n enumerable: true,\n configurable: true\n });\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n //Public methods\n /**\n * `Layouts` the text.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /*public layout(graphics : PdfLayoutParams) : PdfLayoutResult\n public layout(graphics : PdfGraphics, bounds : RectangleF) : void\n public layout(graphics : PdfGraphics, bounds : PointF) : void\n public layout(graphics ?: PdfGraphics | PdfLayoutParams, bounds ?: PointF | RectangleF) : void | PdfLayoutResult {\n if (graphics instanceof PdfGraphics) {\n if (bounds instanceof PointF) {\n if (bounds.x === 0) {\n bounds.x = PdfBorders.default.right.width / 2;\n }\n if (bounds.y === 0) {\n bounds.y = PdfBorders.default.top.width / 2;\n }\n let boundaries : RectangleF = new RectangleF(bounds, new SizeF(0, 0));\n this.layout(graphics, boundaries);\n } else {\n let width : number = graphics.clientSize.width;\n let parameter : PdfLayoutParams = new PdfLayoutParams();\n parameter.bounds = bounds;\n this.currentGraphics = graphics;\n if (graphics.layer != null) {\n let index : number = 0;\n if (this.currentGraphics.page instanceof PdfPage) {\n index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n } else {\n index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n }\n } else {\n this.layoutInternal(parameter);\n }\n }\n }\n }*/\n /**\n * Gets the `format`.\n * @private\n */\n PdfGridLayouter.prototype.getFormat = function (format) {\n var f = format;\n return f;\n };\n /**\n * `Layouts` the element.\n * @private\n */\n PdfGridLayouter.prototype.layoutInternal = function (param) {\n var format = this.getFormat(param.format);\n this.gridLayoutFormat = this.getFormat(param.format);\n this.currentPage = param.page;\n if (this.currentPage !== null) {\n var pageHeight = this.currentPage.getClientSize().height;\n var pageWidth = this.currentPage.getClientSize().width;\n this.currentPageBounds = this.currentPage.getClientSize();\n }\n else {\n throw Error('Can not set page as null');\n //this.currentPageBounds = this.currentGraphics.clientSize;\n }\n this.currentGraphics = this.currentPage.graphics;\n //this.currentGraphics = (this.currentPage != null ) ? this.currentPage.graphics : this.currentGraphics;\n // if (this.currentGraphics.layer !== null) {\n // let index : number = 0;\n // if (this.currentGraphics.page instanceof PdfPage) {\n // index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n // } else {\n // index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n // }\n // this.listOfNavigatePages.push(index);\n // }\n var index = 0;\n index = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n this.listOfNavigatePages.push(index);\n if (format != null && format.break === PdfLayoutBreakType.FitColumnsToPage) {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), new SizeF(this.Grid.columns.width, this.currentGraphics.clientSize.height));\n }\n else {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n }\n //this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n if (this.Grid.rows.count !== 0) {\n this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width :\n (this.currentBounds.width - this.Grid.rows.getRow(0).cells.getCell(0).style.borders.left.width / 2);\n }\n else if (this.Grid.headers.count !== 0) {\n // this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width : (this.currentBounds.width -\n // this.Grid.headers.getHeader(0).cells.getCell(0).style.borders.left.width / 2);\n this.currentBounds.width = param.bounds.width;\n }\n else {\n throw Error('Please add row or header into grid');\n }\n this.startLocation = new PointF(param.bounds.x, param.bounds.y);\n // if (this.Grid.style.allowHorizontalOverflow && this.currentBounds.width > this.currentGraphics.clientSize.width) {\n // this.currentBounds.width = this.currentGraphics.clientSize.width;\n // this.currentBounds.width -= this.currentBounds.x;\n // }\n // if (this.Grid.isChildGrid) {\n // this.childheight = param.bounds.height;\n // }\n // if (param.format !== null && param.format.usePaginateBounds) {\n // if (param.format.paginateBounds.height > 0) {\n // this.currentBounds.height = param.format.paginateBounds.height;\n // }\n //} else \n if (param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (!this.Grid.isChildGrid) {\n this.hType = this.Grid.style.horizontalOverflowType;\n }\n if (!this.Grid.style.allowHorizontalOverflow) {\n this.columnRanges = [];\n if (typeof this.Grid.isChildGrid !== 'undefined' && typeof this.Grid.isChildGrid) {\n this.Grid.measureColumnsWidth(this.currentBounds);\n }\n else {\n this.Grid.measureColumnsWidth(new RectangleF(this.currentBounds.x, this.currentBounds.y, this.currentBounds.x + this.currentBounds.width, this.currentBounds.height));\n }\n this.columnRanges.push([0, this.Grid.columns.count - 1]);\n }\n else {\n this.Grid.measureColumnsWidth();\n this.determineColumnDrawRanges();\n }\n if (this.Grid.hasRowSpanSpan) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n if (this.Grid.rows.getRow(i).height !== -1 && !this.Grid.rows.getRow(i).isRowHeightSet) {\n this.Grid.rows.getRow(i).isRowHeightSet = true;\n }\n }\n }\n var result = this.layoutOnPage(param);\n return result;\n };\n // /* tslint:enable */\n /**\n * `Determines the column draw ranges`.\n * @private\n */\n PdfGridLayouter.prototype.determineColumnDrawRanges = function () {\n var startColumn = 0;\n var endColumn = 0;\n var cellWidths = 0;\n var availableWidth = this.currentGraphics.clientSize.width - this.currentBounds.x;\n for (var i = 0; i < this.Grid.columns.count; i++) {\n cellWidths += this.Grid.columns.getColumn(i).width;\n if (cellWidths >= availableWidth) {\n var subWidths = 0;\n for (var j = startColumn; j <= i; j++) {\n subWidths += this.Grid.columns.getColumn(j).width;\n if (subWidths > availableWidth) {\n break;\n }\n endColumn = j;\n }\n this.columnRanges.push([startColumn, endColumn]);\n startColumn = endColumn + 1;\n endColumn = startColumn;\n cellWidths = (endColumn <= i) ? this.Grid.columns.getColumn(i).width : 0;\n }\n }\n // if (startColumn !== this.columns.Count) {\n this.columnRanges.push([startColumn, this.Grid.columns.count - 1]);\n // }\n };\n /**\n * `Layouts the on page`.\n * @private\n */\n PdfGridLayouter.prototype.layoutOnPage = function (param) {\n /* tslint:disable */\n this.pageBounds.x = param.bounds.x;\n this.pageBounds.y = param.bounds.y;\n this.pageBounds.height = param.bounds.height;\n var format = this.getFormat(param.format);\n var endArgs = null;\n var result = null;\n var layoutedPages = new TemporaryDictionary();\n var startPage = param.page;\n var isParentCell = false;\n var cellBounds = [];\n for (var index = 0; index < this.columnRanges.length; index++) {\n var range = this.columnRanges[index];\n this.cellStartIndex = range[0];\n this.cellEndIndex = range[1];\n var returnObject = this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex);\n this.currentBounds = returnObject.currentBounds;\n this.currentRowIndex = returnObject.currentRowIndex;\n // if (returnObject.returnValue) {\n // result = new PdfGridLayoutResult(this.currentPage, this.currentBounds);\n // break;\n // }\n //Draw Headers.\n var drawHeader = void 0;\n for (var i_1 = 0; i_1 < this.Grid.headers.count; i_1++) {\n var row = this.Grid.headers.getHeader(i_1);\n var headerHeight = this.currentBounds.y;\n this.isHeader = true;\n if (startPage != this.currentPage) {\n for (var k = this.cellStartIndex; k <= this.cellEndIndex; k++) {\n if (row.cells.getCell(k).isCellMergeContinue) {\n row.cells.getCell(k).isCellMergeContinue = false;\n row.cells.getCell(k).value = \"\";\n }\n }\n }\n // RowLayoutResult\n var headerResult = this.drawRow(row);\n if (headerHeight === this.currentBounds.y) {\n drawHeader = true;\n if (PdfGridLayouter.repeatRowIndex === -1) {\n PdfGridLayouter.repeatRowIndex = i_1;\n }\n }\n else {\n drawHeader = false;\n }\n if (!headerResult.isFinish && startPage !== null\n && format.layout !== PdfLayoutType.OnePage && drawHeader) {\n this.startLocation.x = this.currentBounds.x;\n this.currentPage = this.getNextPageformat(format);\n this.startLocation.y = this.currentBounds.y;\n if (typeof format.paginateBounds !== 'undefined' && format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 && format.paginateBounds.height === 0)\n this.currentBounds.x += this.startLocation.x;\n this.drawRow(row);\n }\n this.isHeader = false;\n }\n var i = 0;\n var length_1 = this.Grid.rows.count;\n var repeatRow = void 0;\n var startingHeight = 0;\n var flag = true;\n //Here is to draw parent Grid and Cells\n cellBounds = [];\n //Draw row by row with the specified cell range.\n for (var j = 0; j < this.Grid.rows.count; j++) {\n var row = this.Grid.rows.getRow(j);\n i++;\n this.currentRowIndex = i - 1;\n var originalHeight = this.currentBounds.y;\n startPage = this.currentPage;\n PdfGridLayouter.repeatRowIndex = -1;\n if (flag && row.grid.isChildGrid) {\n startingHeight = originalHeight;\n flag = false;\n }\n var rowResult = null;\n ///rowResult = this.drawRow(row);\n /*if(!row.isrowFinish) {\n if(!row.grid.isgridSplit){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n } else {\n if(!row.isrowDraw){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n row.grid.isgridSplit = false;\n } else {\n rowResult = null;\n break;\n }\n }\n }\n else {\n //row.isrowFinish = false;\n //rowResult = this.drawRow(row);\n rowResult = null;\n break;\n \n } */\n if (this.Grid.splitChildRowIndex == -1) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else {\n if (row.grid.ParentCell.row.grid.isGridSplit && this.Grid.splitChildRowIndex <= row.rowIndex) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else if (row.isrowFinish) {\n continue;\n }\n else {\n break;\n }\n }\n //rowResult = this.drawRow(row);\n cellBounds.push(rowResult.bounds.width);\n /*if (row.isRowBreaksNextPage)\n {\n let x : number = 0;\n for (let l : number = 0; l < row.cells.count; l++)\n {\n let isNestedRowBreak : boolean = false;\n if (row.height == row.cells.getCell(l).height)\n {\n let n : number;\n let grid : PdfGrid = row.cells.getCell(l).value as PdfGrid;\n for (let m : number = grid.rows.count; 0 < m; m--)\n {\n if ((grid.rows.getRow(m - 1).rowBreakHeight > 0))\n {\n isNestedRowBreak = true;\n break;\n }\n if (grid.rows.getRow(m - 1).isRowBreaksNextPage)\n {\n row.rowBreakHeightValue = grid.rows.getRow(m - 1).rowBreakHeightValue;\n break;\n }\n row.rowBreakHeightValue += grid.rows.getRow(m - 1).height;\n }\n }\n if (isNestedRowBreak)\n break;\n }\n for (let j : number = 0; j < row.cells.count; j++)\n {\n\n if (row.height > row.cells.getCell(j).height)\n {\n row.cells.getCell(j).value = \" \";\n let rect : RectangleF ;\n let page : PdfPage = this.getNextPage(this.currentPage);\n let section : PdfSection = this.currentPage.section;\n let index : number = section.indexOf(page);\n for (let k : number = 0; k < (section.count - 1) - index; k++)\n {\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, page.getClientSize().height);\n PdfGridLayouter.repeatRowIndex = -1;\n row.cells.getCell(j).draw(page.graphics, rect, false);\n page = this.getNextPage(page);\n }\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, row.rowBreakHeightValue);\n\n row.cells.getCell(j).draw(page.graphics, rect, false);\n }\n x += row.grid.columns.getColumn(j).width;\n }\n }*/\n //if height remains same, it is understood that row is not drawn in the page\n if (originalHeight === this.currentBounds.y) {\n repeatRow = true;\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n else {\n repeatRow = false;\n PdfGridLayouter.repeatRowIndex = -1;\n }\n while (!rowResult.isFinish && startPage != null) {\n var tempResult = this.getLayoutResult();\n /*if (startPage != this.currentPage)\n {\n if (row.grid.isChildGrid && row.grid.ParentCell != null)\n {\n let bounds : RectangleF= new RectangleF(new PointF(format.paginateBounds.x,format.paginateBounds.y), new SizeF(param.bounds.width, tempResult.bounds.height));\n bounds.x += param.bounds.x;\n if (row.grid.ParentCell.row.grid.style.cellPadding != null)\n {\n bounds.y += row.grid.ParentCell.row.grid.style.cellPadding.top;\n if (bounds.height > this.currentPageBounds.height)\n {\n bounds.height = this.currentPageBounds.height - bounds.y;\n bounds.height -= (row.grid.ParentCell.row.grid.style.cellPadding.bottom);\n }\n }\n // Draw border for cells in the nested grid cell's row.\n for (let c : number = 0; c < row.cells.count; c++)\n {\n let cell : PdfGridCell = row.cells.getCell(c);\n let cellWidth : number= 0;\n if (cell.columnSpan > 1)\n {\n for (; c < cell.columnSpan; c++)\n cellWidth += row.grid.columns.getColumn(c).width;\n }\n else\n cellWidth = Math.max(cell.width, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(this.currentGraphics, new RectangleF(new PointF(bounds.x,bounds.y), new SizeF(cellWidth, bounds.height)));\n bounds.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n }\n */\n endArgs = this.raisePageLayouted(tempResult);\n if (endArgs.cancel || repeatRow)\n break;\n else if (this.Grid.allowRowBreakAcrossPages) {\n //If there is no space in the current page, add new page and then draw the remaining row.\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n var location_1 = new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n if ((format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 &&\n format.paginateBounds.height === 0) && (this.startLocation.x === location_1.x && this.startLocation.y === location_1.y)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n }\n if (this.isPaginate) {\n this.startLocation.y = this.currentBounds.y;\n this.isPaginate = false;\n }\n if (this.Grid.isChildGrid && row.grid.ParentCell != null) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n if (row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top < this.currentBounds.height) {\n this.currentBounds.y = this.Grid.ParentCell.row.grid.style.cellPadding.top;\n }\n }\n }\n if (row.grid.ParentCell != null) {\n row.grid.ParentCell.row.isRowBreaksNextPage = true;\n row.grid.ParentCell.row.rowBreakHeightValue = row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top + this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n for (var i_2 = row.rowIndex + 1; i_2 < row.grid.rows.count; i_2++) {\n row.grid.ParentCell.row.rowBreakHeightValue += row.grid.rows.getRow(i_2).height;\n }\n //row.rowBreakHeight = row.grid.ParentCell.row.rowBreakHeightValue;\n }\n /*if (row.noOfPageCount > 1)\n {\n let temp : number = row.rowBreakHeightValue;\n for (let j : number = 1; j < row.noOfPageCount; j++)\n {\n row.rowBreakHeightValue = 0;\n row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n this.currentPage = this.getNextPageformat(format);\n startPage = this.currentPage;\n }\n row.rowBreakHeightValue = temp;\n row.noOfPageCount = 1;\n rowResult = this.drawRow(row);\n } else {\n rowResult = this.drawRow(row);\n }\n /*if(row.grid.isChildGrid){\n row.isrowFinish = false;\n row.isrowDraw = false;\n row.grid.isgridSplit = true;\n row.grid.ParentCell.row.grid.isgridSplit = true;\n //rowResult.isFinish = false;\n break;\n }*/\n if (row.grid.isChildGrid) {\n //row.grid.isgridSplit = true;\n row.isrowFinish = false;\n //row.grid.ParentCell.row.grid.isgridSplit = true;\n row.grid.splitChildRowIndex = row.rowIndex;\n row.grid.ParentCell.row.grid.splitChildRowIndex = row.grid.ParentCell.row.rowIndex;\n if (row.grid.ParentCell.row.grid.isGridSplit) {\n row.grid.ParentCell.row.noOfPageCount += 1;\n row.grid.ParentCell.row.grid.isGridSplit = false;\n }\n break;\n }\n if (row.noOfPageCount < 1) {\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n if (row.style.border != null && ((row.style.border.left != null && row.style.border.left.width !== 1)\n || (row.style.border.top != null && row.style.border.top.width !== 1))) {\n var x = row.style.border.left.width / 2;\n var y = row.style.border.top.width / 2;\n if (this.currentBounds.x === PdfBorders.default.right.width / 2 && this.currentBounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.currentBounds.width, this.currentBounds.height);\n this.currentBounds = newBound;\n }\n }\n if (this.Grid.repeatHeader) {\n for (var j_1 = 0; j_1 < this.Grid.headers.count; j_1++) {\n var headerRepeat = this.Grid.headers.getHeader(j_1);\n this.drawRow(headerRepeat);\n }\n }\n rowResult = this.drawRow(row);\n if (row.noOfPageCount >= 1) {\n var temp = row.rowBreakHeightValue;\n for (var j_2 = 0; j_2 < row.noOfPageCount; j_2++) {\n //this.currentPage.section.add();\n var tempResult1 = this.getLayoutResult();\n endArgs = this.raisePageLayouted(tempResult1);\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n //row.rowBreakHeightValue = 0;\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n this.currentBounds.y = 0.5;\n if (this.Grid.repeatHeader) {\n for (var i_3 = 0; i_3 < this.Grid.headers.count; i_3++) {\n var header = this.Grid.headers.getHeader(i_3);\n this.drawRow(header);\n }\n }\n //row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n }\n // row.rowBreakHeight = temp;\n // row.noOfPageCount = 1;\n // rowResult = this.drawRow(row);\n }\n row.grid.splitChildRowIndex = -1;\n row.grid.isGridSplit = false;\n rowResult.isFinish = this.checkIsFisished(row);\n //row.NestedGridLayoutResult.bounds.height = row.rowBreakHeightValue;\n //this.currentBounds.y = rowResult.bounds.y;\n for (var i_4 = 0; i_4 < row.cells.count; i_4++) {\n if (row.cells.getCell(i_4).value instanceof PdfGrid) {\n row.cells.getCell(i_4).value.splitChildRowIndex = -1;\n }\n }\n }\n }\n // else if (!this.Grid.allowRowBreakAcrossPages && i < length)\n // {\n // this.currentPage = this.getNextPageformat(format);\n // break;\n // }\n // else if (i >= length)\n // break;\n }\n if (!rowResult.isFinish && startPage !== null && format.layout !== PdfLayoutType.OnePage && repeatRow) {\n // During pagination, cell position is maintained here.\n this.startLocation.x = this.currentBounds.x;\n var isAddNextPage = false;\n this.currentPage = this.getNextPageformat(format);\n /*if (!this.Grid.isSingleGrid)\n {\n for ( let j : number= 0; j < this.Grid.rows.count; j++)\n {\n let isWidthGreaterthanParent : boolean = false;\n for (let k : number = 0; k < this.Grid.rows.getRow(j).cells.count; k++)\n {\n if (this.Grid.rows.getRow(j).cells.getCell(k).width > this.currentPageBounds.width)\n isWidthGreaterthanParent = true;\n }\n if (isWidthGreaterthanParent && this.Grid.rows.getRow(j).cells.getCell(this.rowBreakPageHeightCellIndex).pageCount > 0)\n {\n isAddNextPage = true;\n }\n }\n }\n if (!this.Grid.isRearranged && isAddNextPage)\n {\n let section : PdfSection = this.currentPage.section;\n \n //this.currentPage = section.add();\n \n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0,0), this.currentPage.getClientSize());\n \n let pageindex : number = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n }\n else\n {\n this.currentPage = this.getNextPageformat(format);\n }\n if (format.paginateBounds.y == 0)\n this.currentBounds.y = PdfBorders.default.top.width/2;\n else\n {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n \n }*/\n if (this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex).returnValue) {\n break;\n }\n if ((param.format !== null) && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (typeof param.format !== 'undefined' && param.format != null && typeof param.format.usePaginateBounds !== 'undefined' && !param.format.usePaginateBounds && !(param.format.paginateBounds.x === 0 && param.format.paginateBounds.y === 0 && param.format.paginateBounds.width === 0 && param.format.paginateBounds.height === 0) && param.format.paginateBounds.y === 0) {\n this.currentBounds.y = PdfBorders.default.top.width / 2;\n }\n else {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n if (format != null && (format.paginateBounds.x !== 0 || format.paginateBounds.y !== 0 || format.paginateBounds.height !== 0 || format.paginateBounds.width !== 0)) {\n this.currentBounds.x = format.paginateBounds.x;\n this.currentBounds.width = format.paginateBounds.width;\n this.currentBounds.height = format.paginateBounds.height;\n }\n }\n if (typeof param.format !== 'undefined' && (param.format !== null) && typeof param.format.usePaginateBounds !== 'undefined' && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.y > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.y = param.bounds.y;\n }\n this.startLocation.y = this.currentBounds.y;\n if ((format.paginateBounds.x === format.paginateBounds.y) &&\n (format.paginateBounds.y === format.paginateBounds.height) &&\n (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n }\n if (this.currentBounds.x === PdfBorders.default.left.width / 2) {\n this.currentBounds.y += this.startLocation.x;\n }\n if (this.Grid.repeatHeader) {\n for (var i_5 = 0; i_5 < this.Grid.headers.count; i_5++) {\n var header = this.Grid.headers.getHeader(i_5);\n this.drawRow(header);\n }\n }\n this.drawRow(row);\n if (this.currentPage !== null && !layoutedPages.containsKey(this.currentPage)) {\n layoutedPages.add(this.currentPage, range);\n }\n }\n if (row.NestedGridLayoutResult != null) {\n // Position for next row in the grid.\n this.currentPage = row.NestedGridLayoutResult.page;\n this.currentGraphics = this.currentPage.graphics; //If not, next row will not be drawn in the layouted page.\n this.startLocation = new PointF(row.NestedGridLayoutResult.bounds.x, row.NestedGridLayoutResult.bounds.y);\n var recalHeight = this.ReCalculateHeight(row, row.NestedGridLayoutResult.bounds.height);\n this.currentBounds.y = recalHeight;\n //this.currentBounds.y = row.NestedGridLayoutResult.bounds.height;\n if (startPage != this.currentPage) {\n var section = this.currentPage.section;\n var startIndex = section.indexOf(startPage) + 1;\n var endIndex = section.indexOf(this.currentPage);\n for (var page = startIndex; page < endIndex + 1; page++) {\n var pageGraphics = section.getPages()[page].graphics;\n var location_2 = new PointF(format.paginateBounds.x, format.paginateBounds.y);\n var height = page == endIndex ? (row.NestedGridLayoutResult.bounds.height - param.bounds.y) :\n (this.currentBounds.height - location_2.y);\n if (height <= pageGraphics.clientSize.height)\n height += param.bounds.y;\n // if (row.grid.isChildGrid && row.grid.ParentCell != null)\n // location.x += param.bounds.x;\n location_2.y = format == null ? 0.5 : format.paginateBounds.y;\n // Draw border for last paginated row containing nested grid.\n for (var c = 0; c < row.cells.count; c++) {\n var cell = row.cells.getCell(c);\n var cellWidth = 0;\n var totalwidth = 0;\n if (cell.value instanceof PdfGrid) {\n for (var i_6 = 0; i_6 < cell.value.columns.count; i_6++) {\n totalwidth += cell.value.columns.getColumn(i_6).columnWidth;\n }\n }\n else {\n totalwidth = cell.width;\n }\n if (cell.columnSpan > 1) {\n for (; c < cell.columnSpan; c++)\n cellWidth += row.grid.columns.getColumn(c).width;\n }\n else\n cellWidth = Math.max(totalwidth, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(cellWidth, height)));\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(this.Grid.rows.getRow(this.Grid.rows.count - 1).width, height)));\n location_2.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n // So, nested grid drawing is completed for the current row. Update page.\n // Otherwise, the next nested grid of the parent will draw borders from start.\n startPage = this.currentPage;\n }\n }\n }\n var isPdfGrid = false;\n var maximumCellBoundsWidth = 0;\n if (cellBounds.length > 0) {\n maximumCellBoundsWidth = cellBounds[0];\n }\n var largeNavigatePage = [[1, 2]];\n for (var c = 0; c < this.Grid.rows.count; c++) {\n if (this.cellEndIndex != -1 && this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value instanceof PdfGrid) {\n var grid = this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value;\n this.rowLayoutBoundsWidth = grid.rowLayoutBoundsWidth;\n isPdfGrid = true;\n // if (largeNavigatePage[0][0] < grid.listOfNavigatePages.length)\n // {\n // largeNavigatePage[0][0] = grid.listOfNavigatePages.length;\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n // else if ((largeNavigatePage[0][0] == grid.listOfNavigatePages.length) && (largeNavigatePage[0][1] < cellBounds[c]))\n // {\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n }\n }\n if (!isPdfGrid && cellBounds.length > 0) {\n for (var c = 0; c < i - 1; c++) {\n if (maximumCellBoundsWidth < cellBounds[c]) {\n maximumCellBoundsWidth = cellBounds[c];\n }\n }\n this.rowLayoutBoundsWidth = maximumCellBoundsWidth;\n }\n else {\n this.rowLayoutBoundsWidth = largeNavigatePage[0][1];\n }\n if (this.columnRanges.indexOf(range) < this.columnRanges.length - 1\n && startPage != null && format.layout != PdfLayoutType.OnePage) {\n isParentCell = this.Grid.isChildGrid;\n if (largeNavigatePage[0][0] != 0) {\n var section = this.currentPage.section;\n var pageIndex = section.indexOf(this.currentPage);\n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0, 0), this.currentPage.getClientSize());\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n }\n else {\n this.currentPage = this.getNextPageformat(format);\n }\n // let locationGrid : PointF= new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n // if (format.paginateBounds == new RectangleF(0,0,0,0) && this.startLocation == locationGrid)\n // {\n // this.currentBounds.x += this.startLocation.x;\n // this.currentBounds.y += this.startLocation.y;\n // }\n }\n if (this.columnRanges.length - 1 !== index && this.columnRanges.length > 1 && format.layout !== PdfLayoutType.OnePage) {\n this.currentPage = this.getNextPageformat(format);\n if ((format.paginateBounds.x === format.paginateBounds.y) && (format.paginateBounds.y === format.paginateBounds.height)\n && (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n //this.currentBounds.height = this.pageBounds.height;\n }\n }\n }\n result = this.getLayoutResult();\n if (this.Grid.style.allowHorizontalOverflow && this.Grid.style.horizontalOverflowType == PdfHorizontalOverflowType.NextPage) {\n this.reArrangePages(layoutedPages);\n }\n this.raisePageLayouted(result);\n return result;\n };\n PdfGridLayouter.prototype.checkIsFisished = function (row) {\n var result = true;\n for (var i = 0; i < row.cells.count; i++) {\n if (!row.cells.getCell(i).FinishedDrawingCell) {\n result = false;\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGridLayouter.prototype.getNextPageformat = function (format) {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n this.flag = false;\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n this.currentGraphics = nextPage.graphics;\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n if (!(this.listOfNavigatePages.indexOf(pageindex) !== -1)) {\n this.listOfNavigatePages.push(pageindex);\n }\n this.currentBounds = new RectangleF(new PointF(0, 0), nextPage.getClientSize());\n if ((typeof format !== 'undefined') && format != null && format.usePaginateBounds && (typeof format.paginateBounds !== 'undefined') && format.paginateBounds != null && (format.paginateBounds.x !== format.paginateBounds.y) && (format.paginateBounds.y !== format.paginateBounds.height)\n && (format.paginateBounds.height !== format.paginateBounds.width) && (format.paginateBounds.width !== 0)) {\n this.currentBounds.x = format.paginateBounds.x;\n this.currentBounds.y = format.paginateBounds.y;\n this.currentBounds.height = format.paginateBounds.height;\n }\n return nextPage;\n };\n PdfGridLayouter.prototype.CheckIfDefaultFormat = function (format) {\n var defaultFormat = new PdfStringFormat();\n return (format.alignment === defaultFormat.alignment && format.characterSpacing === defaultFormat.characterSpacing &&\n format.clipPath === defaultFormat.clipPath && format.firstLineIndent === defaultFormat.firstLineIndent &&\n format.horizontalScalingFactor === defaultFormat.horizontalScalingFactor &&\n format.lineAlignment === defaultFormat.lineAlignment\n && format.lineLimit === defaultFormat.lineLimit && format.lineSpacing === defaultFormat.lineSpacing &&\n format.measureTrailingSpaces === defaultFormat.measureTrailingSpaces && format.noClip === defaultFormat.noClip &&\n format.paragraphIndent === defaultFormat.paragraphIndent && format.rightToLeft === defaultFormat.rightToLeft &&\n format.subSuperScript === defaultFormat.subSuperScript && format.wordSpacing === defaultFormat.wordSpacing &&\n format.wordWrap === defaultFormat.wordWrap);\n };\n /**\n * `Raises BeforeCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.RaiseBeforeCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, style) {\n var args = null;\n if (this.Grid.raiseBeginCellDraw) {\n args = new PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style);\n this.Grid.onBeginCellDraw(args);\n style = args.style;\n }\n return style;\n };\n /**\n * `Raises AfterCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseAfterCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, cellstyle) {\n var args = null;\n if (this.Grid.raiseEndCellDraw) {\n args = new PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, cellstyle);\n this.Grid.onEndCellDraw(args);\n }\n };\n PdfGridLayouter.prototype.reArrangePages = function (layoutedPages) {\n var document = this.currentPage.document;\n var pages = [];\n var keys = layoutedPages.keys();\n var values = layoutedPages.values();\n for (var i = 0; i < keys.length; i++) {\n var page = keys[i];\n page.section = null;\n pages.push(page);\n document.pages.remove(page);\n }\n /* tslint:disable */\n for (var i = 0; i < layoutedPages.size(); i++) {\n var count = 0;\n for (var j = i, count_1 = (layoutedPages.size() / this.columnRanges.length); j < layoutedPages.size(); j += count_1) {\n var page = pages[j];\n if (typeof page !== 'undefined' && document.pages.indexOf(page) === -1) {\n document.pages.add(page);\n }\n }\n }\n /* tslint:enable */\n };\n /**\n * Gets the `layout result`.\n * @private\n */\n PdfGridLayouter.prototype.getLayoutResult = function () {\n if (this.Grid.isChildGrid && this.Grid.allowRowBreakAcrossPages) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n var row = this.Grid.rows.getRow(i);\n if (row.rowBreakHeight > 0 && row.repeatFlag) {\n this.startLocation.y = this.currentPage.origin.y;\n }\n }\n }\n var bounds;\n if (!this.isChanged) {\n bounds = new RectangleF(this.startLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n this.startLocation.y));\n }\n // else {\n // bounds = new RectangleF(this.currentLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n // this.currentLocation.y));\n // }\n /* tslint:enable */\n return new PdfGridLayoutResult(this.currentPage, bounds);\n };\n /**\n * `Recalculate row height` for the split cell to be drawn.\n * @private\n */\n PdfGridLayouter.prototype.ReCalculateHeight = function (row, height) {\n var newHeight = 0.0;\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n if (!(row.cells.getCell(i).remainingString === null || row.cells.getCell(i).remainingString === '' ||\n typeof row.cells.getCell(i).remainingString === 'undefined')) {\n newHeight = Math.max(newHeight, row.cells.getCell(i).measureHeight());\n }\n }\n return Math.max(height, newHeight);\n };\n /**\n * `Raises BeforePageLayout event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseBeforePageLayout = function (currentPage, currentBounds, currentRow) {\n var cancel = false;\n if (this.Grid.raiseBeginPageLayout) {\n var args = new PdfGridBeginPageLayoutEventArgs(currentBounds, currentPage, currentRow);\n this.Grid.onBeginPageLayout(args);\n // if (currentBounds !== args.Bounds) {\n // this.isChanged = true;\n // this.currentLocation = new PointF(args.Bounds.x, args.Bounds.y);\n // this.measureColumnsWidth(new RectangleF(new PointF(args.Bounds.x, args.Bounds.y) ,\n // new SizeF(args.Bounds.width + args.Bounds.x ,\n // args.Bounds.height)));\n // }\n cancel = (typeof args.cancel === 'undefined' ? false : args.cancel);\n currentBounds = args.bounds;\n currentRow = args.startRowIndex;\n }\n return { returnValue: cancel, currentBounds: currentBounds, currentRowIndex: currentRow };\n };\n /**\n * `Raises PageLayout event` if needed.\n * @private\n */\n PdfGridLayouter.prototype.raisePageLayouted = function (result) {\n var args = new PdfGridEndPageLayoutEventArgs(result);\n if (this.Grid.raiseEndPageLayout) {\n this.Grid.onEndPageLayout(args);\n }\n return args;\n };\n PdfGridLayouter.prototype.drawRow = function (row, result, height) {\n if (typeof result === 'undefined') {\n //.. Check if required space available.\n //.....If the row conains spans which falls through more than one page, then draw the row to next page. \n var result_1 = new RowLayoutResult();\n var rowHeightWithSpan = 0;\n var location_3 = new PointF(0, 0);\n var size = new SizeF(0, 0);\n var isHeader = false;\n if (row.rowSpanExists) {\n var maxSpan = 0;\n var currRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n if (currRowIndex === -1) {\n currRowIndex = this.Grid.headers.indexOf(row);\n if (currRowIndex !== -1) {\n isHeader = true;\n }\n }\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n }\n for (var i = currRowIndex; i < currRowIndex + maxSpan; i++) {\n rowHeightWithSpan += (isHeader ? this.Grid.headers.getHeader(i).height : this.Grid.rows.getRow(i).height);\n }\n // let rowMaxHeight : number = rowHeightWithSpan;\n // for (let i : number = 0; i < row.cells.count; i++ ) {\n // rowMaxHeight = rowMaxHeight > row.cells.getCell(i).height ? rowMaxHeight : row.cells.getCell(i).height;\n // }\n // let flag : boolean = true;\n // let nextRow : PdfGridRow = this.Grid.headers.getHeader(this.Grid.headers.indexOf(row) + 1);\n // for (let i : number = 0; i < nextRow.cells.count; i++ ) {\n // if (nextRow.cells.getCell(i).value !== '' && nextRow.cells.getCell(i).value !== undefined) {\n // flag = false;\n // break;\n // }\n // }\n // if ((rowMaxHeight > rowHeightWithSpan) && flag) {\n // row.height += (rowMaxHeight - rowHeightWithSpan);\n // } \n }\n var calculatedHeight = row.rowBreakHeight > 0.0 ? row.rowBreakHeight : row.height;\n if (typeof this.Grid.isChildGrid !== 'undefined' && this.Grid.isChildGrid && typeof this.Grid.ParentCell !== 'undefined' && this.Grid.ParentCell != null) {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n // if (calculatedHeight + this.Grid.ParentCell.row.grid.style.cellPadding.bottom +\n // this.Grid.ParentCell.row.grid.style.cellPadding.top > this.currentPageBounds.height) {\n // if (this.Grid.allowRowBreakAcrossPages) {\n // result.isFinish = true;\n // if ( this.Grid.isChildGrid && row.rowBreakHeight > 0 ) {\n // if (this.Grid.ParentCell.row.grid.style.cellPadding !== null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n // result.bounds = this.currentBounds ;\n // this.drawRowWithBreak(result, row, calculatedHeight);\n // } else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page. \n // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // calculatedHeight = this.currentBounds.height - this.currentBounds.y -\n // this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n // } else\n if (this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom + calculatedHeight >\n this.currentPageBounds.height || this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom\n + calculatedHeight > this.currentBounds.height || this.currentBounds.y +\n this.Grid.ParentCell.row.grid.style.cellPadding.bottom + rowHeightWithSpan > this.currentPageBounds.height) {\n //If a row is repeated and still cannot fit in page, proceed draw.\n if (typeof this.Grid.ParentCell.row.grid.LayoutFormat !== 'undefined' && this.Grid.ParentCell.row.grid.LayoutFormat.break === PdfLayoutBreakType.FitPage) {\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n this.Grid.splitChildRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n // if (this.Grid.isChildGrid && row.rowBreakHeightValue > 0) {\n // // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n result_1.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n }\n // else {\n // result.isFinish = false;\n // row.repeatFlag = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n // else {\n // result.isFinish = false;\n // }\n }\n else {\n result_1.isFinish = true;\n if (row.grid.ParentCell.row.rowBreakHeightValue > 0) {\n row.repeatFlag = true;\n }\n else {\n row.repeatFlag = false;\n calculatedHeight = row.height;\n }\n if (this.Grid.isChildGrid && row.rowBreakHeight > 0) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n calculatedHeight += this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n if (calculatedHeight > this.currentPageBounds.height) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n //result.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.isrowFinish = true;\n row.repeatFlag = true;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n // else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page.\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n else if (this.currentBounds.y + calculatedHeight > this.currentPageBounds.height ||\n this.currentBounds.y + calculatedHeight > (this.currentBounds.height + this.startLocation.y) ||\n this.currentBounds.y + rowHeightWithSpan > this.currentPageBounds.height) {\n // If a row is repeated and still cannot fit in page, proceed draw.\n var isFit = false;\n if ((this.Grid.allowRowBreakAcrossPages && !this.Grid.repeatHeader && !row.isRowHeightSet && !row.rowMergeComplete)) {\n if (this.Grid.LayoutFormat !== null && this.Grid.LayoutFormat.paginateBounds.height > 0) {\n isFit = this.isFitToCell((this.currentBounds.height + this.startLocation.y) - this.currentBounds.y, this.Grid, row);\n }\n else\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (isFit) {\n this.isPaginate = true;\n }\n }\n else if (this.Grid.allowRowBreakAcrossPages && this.Grid.LayoutFormat != null && this.Grid.LayoutFormat.layout == PdfLayoutType.Paginate && this.Grid.LayoutFormat.break != PdfLayoutBreakType.FitElement && row.isRowHeightSet && this.currentBounds.y + height > this.currentPageBounds.height) {\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (!isFit)\n isFit = !(this.slr !== null && this.slr.actualSize.height == 0 && this.slr.remainder != null && this.slr.remainder.length > 0 && this.remainderText == this.slr.remainder);\n if (isFit && this.slr != null && this.slr.lineCount > 1) {\n //It may text cutoff issue\n isFit = false;\n }\n this.remainderText = null;\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex || isFit) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = false;\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = true;\n this.drawRow(row, result_1, calculatedHeight);\n row.repeatFlag = false;\n }\n }\n return result_1;\n }\n else {\n var skipcell = false;\n var location_4 = new PointF(this.currentBounds.x, this.currentBounds.y);\n // if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x && row.width <\n // this.currentPage.getClientSize().width) {\n // location.x = this.startLocation.x;\n // }\n result.bounds = new RectangleF(location_4, new SizeF(0, 0));\n height = this.ReCalculateHeight(row, height);\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var cancelSpans = ((i > this.cellEndIndex + 1) && (row.cells.getCell(i).columnSpan > 1));\n // let cancelSpans : boolean = false;\n if (!cancelSpans) {\n for (var j = 1; j < row.cells.getCell(i).columnSpan; j++) {\n row.cells.getCell(i + j).isCellMergeContinue = true;\n }\n }\n var size = new SizeF(this.Grid.columns.getColumn(i).width, height);\n // if (size.width > this.currentGraphics.clientSize.width) {\n // size.width = this.currentGraphics.clientSize.width;\n // }\n // if (this.Grid.isChildGrid && this.Grid.style.allowHorizontalOverflow) {\n // if (size.width >= this.currentGraphics.clientSize.width) {\n // size.width -= 2 * this.currentBounds.x;\n // }\n // }\n /* tslint:disable */\n if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n this.CheckIfDefaultFormat(row.cells.getCell(i).stringFormat)) {\n row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n }\n var cellstyle = row.cells.getCell(i).style;\n var tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n row.cells.getCell(i).style = this.RaiseBeforeCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, cellstyle);\n //row.cells.getCell(i).style = cellstyle;\n if (!skipcell) {\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n grid.parentCellIndex = i;\n }\n var stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location_4, size), cancelSpans);\n if (row.grid.style.allowHorizontalOverflow && (row.cells.getCell(i).columnSpan > this.cellEndIndex ||\n i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1) && this.cellEndIndex < row.cells.count - 1) {\n row.rowOverflowIndex = this.cellEndIndex;\n }\n if (row.grid.style.allowHorizontalOverflow && (row.rowOverflowIndex > 0 && (row.cells.getCell(i).columnSpan >\n this.cellEndIndex || i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1)) &&\n row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1 > 0) {\n row.cells.getCell(row.rowOverflowIndex + 1).value = stringResult !== null ? (stringResult.remainder !== undefined) ?\n stringResult.remainder : '' : '';\n row.cells.getCell(row.rowOverflowIndex + 1).stringFormat = row.cells.getCell(i).stringFormat;\n row.cells.getCell(row.rowOverflowIndex + 1).style = row.cells.getCell(i).style;\n row.cells.getCell(row.rowOverflowIndex + 1).columnSpan = row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1;\n }\n }\n /* tslint:enable */\n tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n if (!cancelSpans) {\n this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, row.cells.getCell(i).style);\n }\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n if (this.Grid.columns.getColumn(i).width >= this.currentGraphics.clientSize.width) {\n location_4.x = grid.rowLayoutBoundsWidth;\n location_4.x += grid.style.cellSpacing;\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n if (!row.rowMergeComplete || row.isRowHeightSet) {\n this.currentBounds.y += height;\n }\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location_4.x, location_4.y));\n }\n };\n PdfGridLayouter.prototype.isFitToCell = function (currentHeight, grid, gridRow) {\n var isFit = false;\n var layouter = new PdfStringLayouter();\n for (var i = 0; i < gridRow.cells.count; i++) {\n var cell = gridRow.cells.getCell(i);\n if (typeof cell.value !== 'undefined' && cell.value !== null && typeof cell.value === 'string') {\n var font = null;\n if (typeof cell.style.font !== 'undefined' && cell.style.font != null) {\n font = cell.style.font;\n }\n else if (typeof cell.row.style.font !== 'undefined' && cell.row.style.font != null) {\n font = cell.row.style.font;\n }\n else if (typeof cell.row.grid.style.font !== 'undefined' && cell.row.grid.style.font != null) {\n font = cell.row.grid.style.font;\n }\n else {\n font = PdfDocument.defaultFont;\n }\n this.remainderText = cell.value;\n var width = cell.width;\n var column = grid.columns.getColumn(i);\n if (column.isCustomWidth && cell.width > column.width) {\n width = column.width;\n }\n this.slr = layouter.layout(cell.value, font, cell.stringFormat, new SizeF(width, currentHeight), false, this.currentPageBounds);\n var height = this.slr.actualSize.height;\n if (cell.value !== '' && height === 0) {\n isFit = false;\n break;\n }\n if (cell.style !== null && cell.style.borders !== null && cell.style.borders.top !== null && cell.style.borders.bottom !== null) {\n height += (cell.style.borders.top.width + cell.style.borders.bottom.width) * 2;\n }\n if (this.slr.lineCount > 1 && cell.stringFormat != null && cell.stringFormat.lineSpacing != 0) {\n height += (this.slr.lineCount - 1) * (cell.style.stringFormat.lineSpacing);\n }\n if (cell.style.cellPadding === null) {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n else {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n height += grid.style.cellSpacing;\n if (currentHeight > height || (typeof this.slr.remainder !== 'undefined' && this.slr.remainder !== null)) {\n isFit = true;\n break;\n }\n }\n }\n return isFit;\n };\n PdfGridLayouter.prototype.drawRowWithBreak = function (result, row, calculateHeight) {\n var location = new PointF(this.currentBounds.x, this.currentBounds.y);\n if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x) {\n location.x = this.startLocation.x;\n }\n result.bounds = new RectangleF(location, new SizeF(0, 0));\n this.gridHeight = row.rowBreakHeight > 0 ? this.currentPageBounds.height : 0;\n // Calculate the remaining height.\n if (row.grid.style.cellPadding.top + this.currentBounds.y + row.grid.style.cellPadding.bottom < this.currentPageBounds.height) {\n row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n }\n // else {\n // row.rowBreakHeight = calculateHeight;\n // result.isFinish = false;\n // return;\n // }\n // No need to explicit break if the row height is equal to grid height.\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n var cellHeight = cell.measureHeight();\n if (cellHeight === calculateHeight && cell.value instanceof PdfGrid) {\n row.rowBreakHeight = 0;\n }\n // else if (cellHeight === calculateHeight && (cell.value as PdfGrid) === null) {\n // row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n // }\n }\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var gridColumnWidth = this.Grid.columns.getColumn(i).width;\n var cancelSpans = ((row.cells.getCell(i).columnSpan + i > this.cellEndIndex + 1) &&\n (row.cells.getCell(i).columnSpan > 1));\n if (!cancelSpans) {\n for (var k = 1; k < row.cells.getCell(i).columnSpan; k++) {\n row.cells.getCell(i + k).isCellMergeContinue = true;\n gridColumnWidth += this.Grid.columns.getColumn(i + k).width;\n }\n }\n var size = new SizeF(gridColumnWidth, this.gridHeight > 0.0 ? this.gridHeight :\n this.currentPageBounds.height);\n // if (size.width === 0) {\n // size = new SizeF(row.cells.getCell(i).width, size.height);\n // }\n // if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n // this.CheckIfDefaultFormat((row.cells.getCell(i).stringFormat))) {\n // row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n // }\n var cellstyle1 = row.cells.getCell(i).style;\n row.cells.getCell(i).style = cellstyle1;\n var skipcell = false;\n var stringResult = null;\n if (!skipcell) {\n row.cells.getCell(i)._rowHeight = row.height;\n stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location, size), cancelSpans);\n }\n //If still row is to be drawn, set cell finished drawing cell as false and update the text to be drawn.\n if (row.rowBreakHeight > 0.0) {\n if (stringResult != null && typeof stringResult.remainder !== 'undefined') {\n row.cells.getCell(i).FinishedDrawingCell = false;\n row.cells.getCell(i).remainingString = stringResult.remainder == null ? ' ' : stringResult.remainder;\n row.rowBreakHeight = calculateHeight - stringResult.actualSize.height;\n }\n }\n result.isFinish = (!result.isFinish) ? result.isFinish : row.cells.getCell(i).FinishedDrawingCell;\n // let tempValue : string = ((typeof row.cells.getCell(i).value === 'string' &&\n //row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '') as string;\n // if (!cancelSpans) {\n // // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i,\n // // new RectangleF(location, size), tempValue, row.cells.getCell(i).style); \n // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location, size),\n // (row.cells.getCell(i).value as string) ? row.cells.getCell(i).value.toString() : ' ',\n // row.cells.getCell(i).style);\n // } \n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n this.rowBreakPageHeightCellIndex = i;\n // row.cells.getCell(i).pageCount = grid.listOfNavigatePages.length;\n // for (let j : number = 0;j= this.currentGraphics.clientSize.width) {\n location.x = this.rowLayoutBoundsWidth;\n location.x += grid.style.cellSpacing;\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n this.currentBounds.y += this.gridHeight > 0.0 ? this.gridHeight : calculateHeight;\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location.x, location.y));\n };\n /**\n * @hidden\n * @private\n */\n PdfGridLayouter.repeatRowIndex = -1;\n return PdfGridLayouter;\n}(ElementLayouter));\nexport { PdfGridLayouter };\n// recalculateBounds : boolean, clientSize : SizeF\n//Implementation\n/**\n * `Initializes` internal data.\n * @private\n */\n//Internal declaration\nvar PdfGridLayoutResult = /** @class */ (function (_super) {\n __extends(PdfGridLayoutResult, _super);\n /**\n * Constructor\n * @private\n */\n function PdfGridLayoutResult(page, bounds) {\n return _super.call(this, page, bounds) || this;\n }\n return PdfGridLayoutResult;\n}(PdfLayoutResult));\nexport { PdfGridLayoutResult };\n/**\n * `PdfGridLayoutFormat` class represents a flexible grid that consists of columns and rows.\n */\nvar PdfGridLayoutFormat = /** @class */ (function (_super) {\n __extends(PdfGridLayoutFormat, _super);\n /**\n * Initializes a new instance of the `PdfGridLayoutFormat` class.\n * @private\n */\n function PdfGridLayoutFormat(baseFormat) {\n return _super.call(this, baseFormat) || this;\n }\n return PdfGridLayoutFormat;\n}(PdfLayoutFormat));\nexport { PdfGridLayoutFormat };\nvar GridCellEventArgs = /** @class */ (function () {\n // Constructors\n /**\n * Initialize a new instance for `GridCellEventArgs` class.\n * @private\n */\n function GridCellEventArgs(graphics, rowIndex, cellIndex, bounds, value) {\n this.gridRowIndex = rowIndex;\n this.gridCellIndex = cellIndex;\n this.internalValue = value;\n this.gridBounds = bounds;\n this.pdfGraphics = graphics;\n }\n Object.defineProperty(GridCellEventArgs.prototype, \"rowIndex\", {\n // Properties\n /**\n * Gets the value of current `row index`.\n * @private\n */\n get: function () {\n return this.gridRowIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"cellIndex\", {\n /**\n * Gets the value of current `cell index`.\n * @private\n */\n get: function () {\n return this.gridCellIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"value\", {\n /**\n * Gets the actual `value` of current cell.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of current cell.\n * @private\n */\n get: function () {\n return this.gridBounds;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"graphics\", {\n /**\n * Gets the instance of `current graphics`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n return GridCellEventArgs;\n}());\nexport { GridCellEventArgs };\nvar PdfGridBeginCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StartCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.style = style;\n return _this;\n }\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"skip\", {\n // Properties\n /**\n * Gets or sets a value indicating whether the value of this cell should be `skipped`.\n * @private\n */\n get: function () {\n return this.bSkip;\n },\n set: function (value) {\n this.bSkip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"style\", {\n /**\n * Gets or sets a `style` value of the cell.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridBeginCellDrawEventArgs };\nvar PdfGridEndCellDrawEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfGridEndCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.cellStyle = style;\n return _this;\n }\n Object.defineProperty(PdfGridEndCellDrawEventArgs.prototype, \"style\", {\n // Propertise\n /**\n * Get the `PdfGridCellStyle`.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridEndCellDrawEventArgs;\n}(GridCellEventArgs));\nexport { PdfGridEndCellDrawEventArgs };\nvar PdfCancelEventArgs = /** @class */ (function () {\n function PdfCancelEventArgs() {\n }\n Object.defineProperty(PdfCancelEventArgs.prototype, \"cancel\", {\n // Properties\n /**\n * Gets and Sets the value of `cancel`.\n * @private\n */\n get: function () {\n return this.isCancel;\n },\n set: function (value) {\n this.isCancel = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCancelEventArgs;\n}());\nexport { PdfCancelEventArgs };\nvar BeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(BeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `BeginPageLayoutEventArgs` class with the specified rectangle and page.\n * @private\n */\n function BeginPageLayoutEventArgs(bounds, page) {\n var _this = _super.call(this) || this;\n _this.bounds = bounds;\n _this.pdfPage = page;\n return _this;\n }\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"bounds\", {\n // Properties\n /**\n * Gets or sets value that indicates the lay outing `bounds` on the page.\n * @private\n */\n get: function () {\n return this.cellBounds;\n },\n set: function (value) {\n this.cellBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"page\", {\n /**\n * Gets the `page` where the lay outing should start.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return BeginPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { BeginPageLayoutEventArgs };\n/**\n * `EndPageLayoutEventArgs` class is alternate for end page layout events.\n */\nvar EndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(EndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `EndPageLayoutEventArgs` class. with the specified 'PdfLayoutResult'.\n * @private\n */\n function EndPageLayoutEventArgs(result) {\n var _this = _super.call(this) || this;\n _this.layoutResult = result;\n return _this;\n }\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"result\", {\n // Properties\n /**\n * Gets the lay outing `result` of the page.\n * @private\n */\n get: function () {\n return this.layoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"nextPage\", {\n /**\n * Gets or sets a value indicating the `next page` where the element should be layout.\n * @private\n */\n get: function () {\n return this.nextPdfPage;\n },\n set: function (value) {\n this.nextPdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n return EndPageLayoutEventArgs;\n}(PdfCancelEventArgs));\nexport { EndPageLayoutEventArgs };\n/**\n * `PdfGridBeginPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridBeginPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridBeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridBeginPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginPageLayoutEventArgs(bounds, page, startRow) {\n var _this = _super.call(this, bounds, page) || this;\n _this.startRow = startRow;\n return _this;\n }\n Object.defineProperty(PdfGridBeginPageLayoutEventArgs.prototype, \"startRowIndex\", {\n // Properties\n /**\n * Gets the `start row index`.\n * @private\n */\n get: function () {\n return this.startRow;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginPageLayoutEventArgs;\n}(BeginPageLayoutEventArgs));\nexport { PdfGridBeginPageLayoutEventArgs };\n/**\n * `PdfGridEndPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridEndPageLayoutEventArgs = /** @class */ (function (_super) {\n __extends(PdfGridEndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridEndPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndPageLayoutEventArgs(result) {\n return _super.call(this, result) || this;\n }\n return PdfGridEndPageLayoutEventArgs;\n}(EndPageLayoutEventArgs));\nexport { PdfGridEndPageLayoutEventArgs };\nvar RowLayoutResult = /** @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `RowLayoutResult` class.\n * @private\n */\n function RowLayoutResult() {\n this.layoutedBounds = new RectangleF(0, 0, 0, 0);\n }\n Object.defineProperty(RowLayoutResult.prototype, \"isFinish\", {\n /**\n * Gets or sets a value indicating whether this instance `is finish`.\n * @private\n */\n get: function () {\n return this.bIsFinished;\n },\n set: function (value) {\n this.bIsFinished = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RowLayoutResult.prototype, \"bounds\", {\n /**\n * Gets or sets the `bounds`.\n * @private\n */\n get: function () {\n return this.layoutedBounds;\n },\n set: function (value) {\n this.layoutedBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n return RowLayoutResult;\n}());\nexport { RowLayoutResult };\n","/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\nimport { PdfDockStyle, PdfAlignmentStyle, TemplateType } from './enum';\nimport { PointF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTemplate } from './../graphics/figures/pdf-template';\nimport { PdfPage } from './pdf-page';\nimport { RectangleF } from './../drawing/pdf-drawing';\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nvar PdfPageTemplateElement = /** @class */ (function () {\n /* tslint:disable */\n function PdfPageTemplateElement(arg1, arg2, arg3, arg4, arg5) {\n if (arg1 instanceof RectangleF && typeof arg2 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, null);\n }\n else if (arg1 instanceof RectangleF && arg2 instanceof PdfPage && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, arg2);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, null);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, arg3);\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.InitiateBounds(0, 0, arg1.width, arg1.height, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, arg3);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n }\n else {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /* tslint:enable */\n }\n Object.defineProperty(PdfPageTemplateElement.prototype, \"dock\", {\n // Properties\n /**\n * Gets or sets the `dock style` of the page template element.\n * @private\n */\n get: function () {\n return this.dockStyle;\n },\n set: function (value) {\n // if (this.dockStyle !== value && this.Type === TemplateType.None) {\n this.dockStyle = value;\n // Reset alignment.\n this.resetAlignment();\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"alignment\", {\n /**\n * Gets or sets `alignment` of the page template element.\n * @private\n */\n get: function () {\n return this.alignmentStyle;\n },\n set: function (value) {\n // if (this.alignmentStyle !== value) {\n this.setAlignment(value);\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"foreground\", {\n /**\n * Indicates whether the page template is located `in front of the page layers or behind of it`.\n * @private\n */\n get: function () {\n return this.isForeground;\n },\n set: function (value) {\n // if (this.foreground !== value) {\n this.isForeground = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"background\", {\n /**\n * Indicates whether the page template is located `behind of the page layers or in front of it`.\n * @private\n */\n get: function () {\n return !this.isForeground;\n },\n set: function (value) {\n this.isForeground = !value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"location\", {\n /**\n * Gets or sets `location` of the page template element.\n * @private\n */\n get: function () {\n return this.currentLocation;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"x\", {\n /**\n * Gets or sets `X` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.x : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.x = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"y\", {\n /**\n * Gets or sets `Y` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.y : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.y = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"size\", {\n /**\n * Gets or sets `size` of the page template element.\n * @private\n */\n get: function () {\n return this.template.size;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.template.reset(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"width\", {\n /**\n * Gets or sets `width` of the page template element.\n * @private\n */\n get: function () {\n return this.template.width;\n },\n set: function (value) {\n if (this.template.width !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.width = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"height\", {\n /**\n * Gets or sets `height` of the page template element.\n * @private\n */\n get: function () {\n return this.template.height;\n },\n set: function (value) {\n if (this.template.height !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.height = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"graphics\", {\n /**\n * Gets `graphics` context of the page template element.\n * @private\n */\n get: function () {\n return this.template.graphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"template\", {\n /**\n * Gets Pdf `template` object.\n * @private\n */\n get: function () {\n // if (typeof this.pdfTemplate === 'undefined' || this.pdfTemplate == null) {\n // this.pdfTemplate = new PdfTemplate(this.size);\n // }\n return this.pdfTemplate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"type\", {\n /**\n * Gets or sets `type` of the usage of this page template.\n * @private\n */\n get: function () {\n return this.templateType;\n },\n set: function (value) {\n this.updateDocking(value);\n this.templateType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"bounds\", {\n /**\n * Gets or sets `bounds` of the page template.\n * @public\n */\n get: function () {\n return new RectangleF(new PointF(this.x, this.y), this.size);\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.location = new PointF(value.x, value.y);\n this.size = new SizeF(value.width, value.height);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize Bounds` Initialize the bounds value of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.InitiateBounds = function (arg1, arg2, arg3, arg4, arg5) {\n this.x = arg1;\n this.y = arg2;\n this.pdfTemplate = new PdfTemplate(arg3, arg4);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n };\n /**\n * `Updates Dock` property if template is used as header/footer.\n * @private\n */\n PdfPageTemplateElement.prototype.updateDocking = function (type) {\n if (type !== TemplateType.None) {\n switch (type) {\n case TemplateType.Top:\n this.dock = PdfDockStyle.Top;\n break;\n case TemplateType.Bottom:\n this.dock = PdfDockStyle.Bottom;\n break;\n case TemplateType.Left:\n this.dock = PdfDockStyle.Left;\n break;\n case TemplateType.Right:\n this.dock = PdfDockStyle.Right;\n break;\n }\n this.resetAlignment();\n }\n };\n /**\n * `Resets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.resetAlignment = function () {\n this.alignment = PdfAlignmentStyle.None;\n };\n /**\n * `Sets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.setAlignment = function (alignment) {\n if (this.dock === PdfDockStyle.None) {\n this.alignmentStyle = alignment;\n }\n else {\n // Template is docked and alignment has been changed.\n var canBeSet = false;\n switch (this.dock) {\n case PdfDockStyle.Left:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.MiddleLeft ||\n alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Top:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.TopCenter ||\n alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Right:\n canBeSet = (alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.MiddleRight ||\n alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Bottom:\n canBeSet = (alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.BottomCenter\n || alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Fill:\n canBeSet = (alignment === PdfAlignmentStyle.MiddleCenter || alignment === PdfAlignmentStyle.None);\n break;\n }\n if (canBeSet) {\n this.alignmentStyle = alignment;\n }\n }\n };\n /**\n * Draws the template.\n * @private\n */\n PdfPageTemplateElement.prototype.draw = function (layer, document) {\n var page = layer.page;\n var bounds = this.calculateBounds(page, document);\n layer.graphics.drawPdfTemplate(this.template, new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n };\n /**\n * Calculates bounds of the page template.\n * @private\n */\n PdfPageTemplateElement.prototype.calculateBounds = function (page, document) {\n var result = this.bounds;\n if (this.alignmentStyle !== PdfAlignmentStyle.None) {\n result = this.getAlignmentBounds(page, document);\n }\n else if (this.dockStyle !== PdfDockStyle.None) {\n result = this.getDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getAlignmentBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleAlignmentBounds(page, document);\n }\n else {\n result = this.getTemplateAlignmentBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleAlignmentBounds = function (page, document) {\n var bounds = this.bounds;\n var pdfSection = page.section;\n var actualBounds = pdfSection.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n x = 0;\n y = 0;\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = 0;\n break;\n case PdfAlignmentStyle.TopRight:\n x = actualBounds.width - this.width;\n y = 0;\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = 0;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n x = 0;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n x = actualBounds.width - this.width;\n y = actualBounds.height - this.height;\n break;\n }\n bounds.x = x;\n bounds.y = y;\n return bounds;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateAlignmentBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n if (this.type === TemplateType.Left) {\n x = this.convertSign(actualBounds.x);\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = this.convertSign(actualBounds.x);\n y = this.convertSign(actualBounds.y);\n }\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = this.convertSign(actualBounds.y);\n break;\n case PdfAlignmentStyle.TopRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = this.convertSign(actualBounds.y);\n }\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = this.convertSign(actualBounds.x);\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n if (this.type === TemplateType.Left) {\n x = this.convertSign(actualBounds.x);\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = this.convertSign(actualBounds.x);\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n }\n result.x = x;\n result.y = y;\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getDockBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleDockBounds(page, document);\n }\n else {\n result = this.getTemplateDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = 0;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = 0;\n y = 0;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = 0;\n y = actualBounds.height - this.height;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Calculates template bounds basing on docking if template is a page template.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var actualSize = section.pageSettings.getActualSize();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = this.convertSign(actualBounds.x);\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = this.convertSign(actualBounds.x);\n y = this.convertSign(actualBounds.y);\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y = actualSize.height - actualBounds.y;\n }\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = this.convertSign(actualBounds.x);\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y -= actualSize.height;\n }\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Ignore value zero, otherwise convert sign.\n * @private\n */\n PdfPageTemplateElement.prototype.convertSign = function (value) {\n return (value !== 0 || (value === 0 && 1 / value === -Infinity)) ? -value : value;\n };\n return PdfPageTemplateElement;\n}());\nexport { PdfPageTemplateElement };\n","/**\n * PdfNumbersConvertor.ts class for EJ2-PDF\n * @private\n */\nimport { PdfNumberStyle } from './../../pages/enum';\n/**\n * `PdfNumbersConvertor` for convert page number into numbers, roman letters, etc.,\n * @private\n */\nvar PdfNumbersConvertor = /** @class */ (function () {\n function PdfNumbersConvertor() {\n }\n // Static methods\n /**\n * Convert string value from page number with correct format.\n * @private\n */\n PdfNumbersConvertor.convert = function (intArabic, numberStyle) {\n var result = '';\n switch (numberStyle) {\n case PdfNumberStyle.None:\n result = '';\n break;\n case PdfNumberStyle.Numeric:\n result = intArabic.toString();\n break;\n case PdfNumberStyle.LowerLatin:\n result = this.arabicToLetter(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.LowerRoman:\n result = this.arabicToRoman(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.UpperLatin:\n result = this.arabicToLetter(intArabic);\n break;\n case PdfNumberStyle.UpperRoman:\n result = this.arabicToRoman(intArabic);\n break;\n }\n return result;\n };\n /**\n * Converts `arabic to roman` letters.\n * @private\n */\n PdfNumbersConvertor.arabicToRoman = function (intArabic) {\n var retval = '';\n var retvalM = this.generateNumber(intArabic, 1000, 'M');\n retval += retvalM.returnValue;\n intArabic = retvalM.intArabic;\n var retvalCM = this.generateNumber(intArabic, 900, 'CM');\n retval += retvalCM.returnValue;\n intArabic = retvalCM.intArabic;\n var retvalD = this.generateNumber(intArabic, 500, 'D');\n retval += retvalD.returnValue;\n intArabic = retvalD.intArabic;\n var retvalCD = this.generateNumber(intArabic, 400, 'CD');\n retval += retvalCD.returnValue;\n intArabic = retvalCD.intArabic;\n var retvalC = this.generateNumber(intArabic, 100, 'C');\n retval += retvalC.returnValue;\n intArabic = retvalC.intArabic;\n var retvalXC = this.generateNumber(intArabic, 90, 'XC');\n retval += retvalXC.returnValue;\n intArabic = retvalXC.intArabic;\n var retvalL = this.generateNumber(intArabic, 50, 'L');\n retval += retvalL.returnValue;\n intArabic = retvalL.intArabic;\n var retvalXL = this.generateNumber(intArabic, 40, 'XL');\n retval += retvalXL.returnValue;\n intArabic = retvalXL.intArabic;\n var retvalX = this.generateNumber(intArabic, 10, 'X');\n retval += retvalX.returnValue;\n intArabic = retvalX.intArabic;\n var retvalIX = this.generateNumber(intArabic, 9, 'IX');\n retval += retvalIX.returnValue;\n intArabic = retvalIX.intArabic;\n var retvalV = this.generateNumber(intArabic, 5, 'V');\n retval += retvalV.returnValue;\n intArabic = retvalV.intArabic;\n var retvalIV = this.generateNumber(intArabic, 4, 'IV');\n retval += retvalIV.returnValue;\n intArabic = retvalIV.intArabic;\n var retvalI = this.generateNumber(intArabic, 1, 'I');\n retval += retvalI.returnValue;\n intArabic = retvalI.intArabic;\n return retval.toString();\n };\n /**\n * Converts `arabic to normal letters`.\n * @private\n */\n PdfNumbersConvertor.arabicToLetter = function (arabic) {\n var stack = this.convertToLetter(arabic);\n var result = '';\n while (stack.length > 0) {\n var num = stack.pop();\n result = this.appendChar(result, num);\n }\n return result.toString();\n };\n /**\n * Generate a string value of an input number.\n * @private\n */\n PdfNumbersConvertor.generateNumber = function (value, magnitude, letter) {\n var numberstring = '';\n while (value >= magnitude) {\n value -= magnitude;\n numberstring += letter;\n }\n return { returnValue: numberstring.toString(), intArabic: value };\n };\n /**\n * Convert a input number into letters.\n * @private\n */\n PdfNumbersConvertor.convertToLetter = function (arabic) {\n if (arabic <= 0) {\n throw Error('ArgumentOutOfRangeException-arabic, Value can not be less 0');\n }\n var stack = [];\n while (arabic > this.letterLimit) {\n var remainder = arabic % this.letterLimit;\n if (remainder === 0.0) {\n arabic = arabic / this.letterLimit - 1;\n remainder = this.letterLimit;\n }\n else {\n arabic /= this.letterLimit;\n }\n stack.push(remainder);\n }\n stack.push(arabic);\n return stack;\n };\n /**\n * Convert number to actual string value.\n * @private\n */\n PdfNumbersConvertor.appendChar = function (builder, value) {\n var letter = String.fromCharCode(PdfNumbersConvertor.acsiiStartIndex + value);\n builder += letter;\n return builder;\n };\n // Fields\n /**\n * numbers of letters in english [readonly].\n * @default = 26.0\n * @private\n */\n PdfNumbersConvertor.letterLimit = 26.0;\n /**\n * Resturns `acsii start index` value.\n * @default 64\n * @private\n */\n PdfNumbersConvertor.acsiiStartIndex = (65 - 1);\n return PdfNumbersConvertor;\n}());\nexport { PdfNumbersConvertor };\n","/**\n * Represent class to store information about `template and value pairs`.\n * @private\n */\nvar PdfTemplateValuePair = /** @class */ (function () {\n function PdfTemplateValuePair(template, value) {\n // Fields\n /**\n * Internal variable to store template.\n * @default null\n * @private\n */\n this.pdfTemplate = null;\n /**\n * Intenal variable to store value.\n * @private\n */\n this.content = '';\n if (typeof template === 'undefined') {\n //\n }\n else {\n this.template = template;\n this.value = value;\n }\n }\n Object.defineProperty(PdfTemplateValuePair.prototype, \"template\", {\n // Properties\n /**\n * Gets or sets the template.\n * @private\n */\n get: function () {\n return this.pdfTemplate;\n },\n set: function (value) {\n this.pdfTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplateValuePair.prototype, \"value\", {\n /**\n * Gets or sets the value.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplateValuePair;\n}());\nexport { PdfTemplateValuePair };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value within the `PdfGraphics`.\n */\nvar PdfMultipleValueField = /** @class */ (function (_super) {\n __extends(PdfMultipleValueField, _super);\n function PdfMultipleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the instance of dictionary values of `graphics and template value pair`.\n * @private\n */\n _this.list = new TemporaryDictionary();\n return _this;\n }\n // Implementation\n /* tslint:disable */\n PdfMultipleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var value = this.getValue(graphics);\n var template = new PdfTemplate(this.getSize());\n this.list.setValue(graphics, new PdfTemplateValuePair(template, value));\n var g = template.graphics;\n var size = this.getSize();\n template.graphics.drawString(value, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n };\n return PdfMultipleValueField;\n}(PdfAutomaticField));\nexport { PdfMultipleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents PDF document `page number field`.\n * @public\n */\nvar PdfPageNumberField = /** @class */ (function (_super) {\n __extends(PdfPageNumberField, _super);\n function PdfPageNumberField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the page number field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageNumberField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the page number field.\n * @private\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return the `string` value of page number field.\n * @public\n */\n PdfPageNumberField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n result = this.internalGetValue(page);\n return result;\n };\n /**\n * Internal method to `get actual value of page number`.\n * @private\n */\n PdfPageNumberField.prototype.internalGetValue = function (page) {\n var document = page.document;\n var pageIndex = document.pages.indexOf(page) + 1;\n return PdfNumbersConvertor.convert(pageIndex, this.numberStyle);\n };\n return PdfPageNumberField;\n}(PdfMultipleValueField));\nexport { PdfPageNumberField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCompositeField.ts class for EJ2-PDF\n */\nimport { PdfMultipleValueField } from './multiple-value-field';\n/**\n * Represents class which can concatenate multiple automatic fields into single string.\n */\nvar PdfCompositeField = /** @class */ (function (_super) {\n __extends(PdfCompositeField, _super);\n // Constructor\n /**\n * Initialize a new instance of `PdfCompositeField` class.\n * @param font Font of the field.\n * @param brush Color of the field.\n * @param text Content of the field.\n * @param list List of the automatic fields in specific order based on the text content.\n */\n function PdfCompositeField(font, brush, text) {\n var list = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n list[_i - 3] = arguments[_i];\n }\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the array of automatic fields.\n * @private\n */\n _this.internalAutomaticFields = null;\n /**\n * Stores the text value of the field.\n * @private\n */\n _this.internalText = '';\n _this.font = font;\n _this.brush = brush;\n _this.text = text;\n _this.automaticFields = list;\n return _this;\n }\n Object.defineProperty(PdfCompositeField.prototype, \"text\", {\n // Properties\n /**\n * Gets and sets the content of the field.\n * @public\n */\n get: function () {\n return this.internalText;\n },\n set: function (value) {\n this.internalText = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCompositeField.prototype, \"automaticFields\", {\n /**\n * Gets and sets the list of the field to drawn.\n * @public\n */\n get: function () {\n return this.internalAutomaticFields;\n },\n set: function (value) {\n this.internalAutomaticFields = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value generated from the list of automatic fields.\n * @public\n */\n PdfCompositeField.prototype.getValue = function (graphics) {\n var values = [];\n var text = this.text.toString();\n if (typeof this.automaticFields !== 'undefined' && this.automaticFields != null && this.automaticFields.length > 0) {\n for (var i = 0; i < this.automaticFields.length; i++) {\n var automaticField = this.automaticFields[i];\n text = text.replace('{' + i + '}', automaticField.getValue(graphics));\n }\n }\n return text;\n };\n return PdfCompositeField;\n}(PdfMultipleValueField));\nexport { PdfCompositeField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSingleValueField.ts class for EJ2-PDF\n */\nimport { PdfAutomaticField } from './automatic-field';\nimport { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';\nimport { PdfTemplateValuePair } from './pdf-template-value-pair';\nimport { PointF, SizeF } from './../../drawing/pdf-drawing';\nimport { PdfTemplate } from './../../graphics/figures/pdf-template';\n/**\n * Represents automatic field which has the same value in the whole document.\n */\nvar PdfSingleValueField = /** @class */ (function (_super) {\n __extends(PdfSingleValueField, _super);\n // Constructors\n function PdfSingleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /* tslint:disable */\n _this.list = new TemporaryDictionary();\n /* tslint:enable */\n _this.painterGraphics = [];\n return _this;\n }\n PdfSingleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var page = this.getPageFromGraphics(graphics);\n var document = page.document;\n var textValue = this.getValue(graphics);\n /* tslint:disable */\n if (this.list.containsKey(document)) {\n var pair = this.list.getValue(document);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(pair.template, drawLocation, new SizeF(pair.template.width * scalingX, pair.template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n else {\n var size = this.getSize();\n var template = new PdfTemplate(size);\n this.list.setValue(document, new PdfTemplateValuePair(template, textValue));\n template.graphics.drawString(textValue, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n /* tslint:enable */\n };\n return PdfSingleValueField;\n}(PdfAutomaticField));\nexport { PdfSingleValueField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageCountField.ts class for EJ2-PDF\n */\nimport { PdfSingleValueField } from './single-value-field';\nimport { PdfNumberStyle } from './../../pages/enum';\nimport { PdfBrush } from './../../graphics/brushes/pdf-brush';\nimport { PdfNumbersConvertor } from './pdf-numbers-convertor';\n/**\n * Represents total PDF document page count automatic field.\n */\nvar PdfPageCountField = /** @class */ (function (_super) {\n __extends(PdfPageCountField, _super);\n function PdfPageCountField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageCountField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the field.\n * @public\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value of the content to drawn.\n * @public\n */\n PdfPageCountField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n var document = page.section.parent.document;\n var count = document.pages.count;\n result = PdfNumbersConvertor.convert(count, this.numberStyle);\n return result;\n };\n return PdfPageCountField;\n}(PdfSingleValueField));\nexport { PdfPageCountField };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfTrueTypeFont.ts class for EJ2-PDF\n */\nimport { UnicodeTrueTypeFont } from './unicode-true-type-font';\nimport { PdfFont } from './pdf-font';\nimport { PdfFontStyle } from './enum';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfTextDirection } from './../enum';\nimport { RtlRenderer } from './rtl-renderer';\n//https://www.giftofspeed.com/base64-encoder/\nvar PdfTrueTypeFont = /** @class */ (function (_super) {\n __extends(PdfTrueTypeFont, _super);\n function PdfTrueTypeFont(base64String, size, style) {\n var _this = _super.call(this, size) || this;\n /**\n * Indicates whether the font is embedded or not.\n * @private\n */\n _this.isEmbedFont = false;\n /**\n * Indicates whether the font is unicoded or not.\n * @private\n */\n _this.isUnicode = true;\n if (style !== undefined) {\n _this.createFontInternal(base64String, style);\n }\n else {\n _this.createFontInternal(base64String, PdfFontStyle.Regular);\n }\n return _this;\n }\n PdfTrueTypeFont.prototype.equalsToFont = function (font) {\n var result = false;\n //let result : boolean = this.fontInternal.equalsToFont(font);\n return result;\n };\n PdfTrueTypeFont.prototype.getLineWidth = function (line, format) {\n var width = 0;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var returnValue = this.getUnicodeLineWidth(line, /*out*/ width, format);\n width = returnValue.width;\n }\n else {\n width = this.fontInternal.getLineWidth(line);\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Returns width of the char.\n */\n PdfTrueTypeFont.prototype.getCharWidth = function (charCode, format) {\n var codeWidth = this.fontInternal.getCharWidth(charCode);\n var size = this.metrics.getSize(format);\n codeWidth *= (0.001 * size);\n return codeWidth;\n };\n //Implementation\n PdfTrueTypeFont.prototype.createFontInternal = function (base64String, style) {\n this.fontInternal = new UnicodeTrueTypeFont(base64String, this.size);\n this.calculateStyle(style);\n this.initializeInternals();\n };\n PdfTrueTypeFont.prototype.calculateStyle = function (style) {\n var iStyle = this.fontInternal.ttfMetrics.macStyle;\n if ((style & PdfFontStyle.Underline) !== 0) {\n iStyle |= PdfFontStyle.Underline;\n }\n if ((style & PdfFontStyle.Strikeout) !== 0) {\n iStyle |= PdfFontStyle.Strikeout;\n }\n this.setStyle(iStyle);\n };\n PdfTrueTypeFont.prototype.initializeInternals = function () {\n var equalFont = null;\n if (PdfDocument.enableCache) {\n // Search for the similar fonts.\n equalFont = PdfDocument.cache.search(this);\n }\n var internals = null;\n // There is not equal font in the cache.\n if (equalFont !== null && equalFont !== undefined) {\n // Get the settings from the cached font.\n internals = equalFont.getInternals();\n var metrics = equalFont.metrics;\n metrics = metrics.clone();\n metrics.size = this.size;\n this.metrics = metrics;\n this.fontInternal = equalFont.fontInternal;\n }\n else {\n if (equalFont == null) {\n if (this.fontInternal instanceof UnicodeTrueTypeFont) {\n this.fontInternal.isEmbed = this.isEmbedFont;\n }\n this.fontInternal.createInternals();\n internals = this.fontInternal.getInternals();\n this.metrics = this.fontInternal.metrics;\n }\n }\n this.metrics.isUnicodeFont = true;\n this.setInternals(internals);\n //this.ttfReader = (this.fontInternal as UnicodeTrueTypeFont).ttfReader;\n };\n /**\n * Stores used symbols.\n */\n PdfTrueTypeFont.prototype.setSymbols = function (text) {\n var internalFont = this.fontInternal;\n if (internalFont != null) {\n internalFont.setSymbols(text);\n }\n };\n Object.defineProperty(PdfTrueTypeFont.prototype, \"Unicode\", {\n /**\n * Property\n *\n */\n get: function () {\n return this.isUnicode;\n },\n enumerable: true,\n configurable: true\n });\n // public get Font() : UnicodeTrueTypeFont {\n // return this.fontInternal as UnicodeTrueTypeFont;\n // }\n PdfTrueTypeFont.prototype.getUnicodeLineWidth = function (line, /*out*/ width, format) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n width = 0;\n var glyphIndices = null;\n var rtlRender = new RtlRenderer();\n /* tslint:disable-next-line:max-line-length */\n var result = rtlRender.getGlyphIndex(line, this, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, /*out*/ glyphIndices, true);\n var resultGlyph = result.success;\n glyphIndices = result.glyphs;\n if (resultGlyph && glyphIndices !== null) {\n var ttfReader = this.fontInternal.ttfReader;\n for (var i = 0, len = glyphIndices.length; i < len; i++) {\n var glyphIndex = glyphIndices[i];\n var glyph = ttfReader.getGlyph(glyphIndex);\n if (glyph !== null && typeof glyph !== 'undefined') {\n width += glyph.width;\n }\n }\n }\n return { success: resultGlyph, width: width };\n };\n return PdfTrueTypeFont;\n}(PdfFont));\nexport { PdfTrueTypeFont };\n","import { Row } from './../models/row';\nimport { CellType } from '../base/enum';\nimport { isNullOrUndefined, Internationalization, getValue, createElement } from '@syncfusion/ej2-base';\nimport { Cell } from '../models/cell';\nimport { ValueFormatter } from './../services/value-formatter';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getForeignData, measureColumnDepth, getUid } from '../base/util';\nimport { Grid } from '../base/grid';\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nvar ExportHelper = /** @class */ (function () {\n function ExportHelper(parent, foreignKeyData) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n if (!parent.parentDetails && foreignKeyData) {\n this.foreignKeyData = foreignKeyData;\n }\n }\n ExportHelper.getQuery = function (parent, data) {\n var query = data.generateQuery(true).requiresCount();\n if (data.isRemote()) {\n if (parent.groupSettings.enableLazyLoading && parent.groupSettings.columns.length) {\n query.lazyLoad = [];\n }\n else {\n query.take(parent.pageSettings.totalRecordsCount);\n }\n }\n return query;\n };\n ExportHelper.prototype.getFData = function (value, column) {\n var foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n };\n ExportHelper.prototype.getGridRowModel = function (columns, dataSource, gObj, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n var rows = [];\n var length = dataSource.length;\n if (length) {\n for (var i = 0; i < length; i++, startIndex++) {\n var options = { isExpand: false };\n options.data = dataSource[parseInt(i.toString(), 10)];\n options.index = startIndex;\n if (gObj.childGrid || gObj.detailTemplate) {\n if (gObj.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (gObj.hierarchyPrintMode === 'Expanded' &&\n this.parent.expandedRows && this.parent.expandedRows[parseInt(startIndex.toString(), 10)]) {\n options.isExpand = gObj.expandedRows[parseInt(startIndex.toString(), 10)].isExpand;\n }\n }\n var row = new Row(options);\n row.cells = this.generateCells(columns, gObj);\n rows.push(row);\n }\n this.processColumns(rows);\n }\n return rows;\n };\n ExportHelper.prototype.generateCells = function (columns, gObj) {\n var cells = [];\n if (gObj.childGridLevel) {\n var len = gObj.childGridLevel;\n for (var i = 0; len > i; i++) {\n cells.push(this.generateCell({}, CellType.Indent));\n }\n }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n cells.push(this.generateCell(col, CellType.Data));\n }\n return cells;\n };\n ExportHelper.prototype.getColumnData = function (gridObj) {\n var _this = this;\n var columnPromise = [];\n var promise;\n var fColumns = gridObj.getForeignKeyColumns();\n if (fColumns.length) {\n for (var i = 0; i < fColumns.length; i++) {\n var colData = ('result' in fColumns[parseInt(i.toString(), 10)].dataSource) ?\n new DataManager(fColumns[parseInt(i.toString(), 10)].dataSource.result) :\n fColumns[parseInt(i.toString(), 10)].dataSource;\n columnPromise.push(colData.executeQuery(new Query()));\n }\n promise = Promise.all(columnPromise).then(function (e) {\n for (var j = 0; j < fColumns.length; j++) {\n _this.foreignKeyData[fColumns[parseInt(j.toString(), 10)].field] = e[parseInt(j.toString(), 10)].result;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n return promise;\n };\n ExportHelper.prototype.getHeaders = function (columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n var rows = [];\n for (var i = 0; i < this.colDepth; i++) {\n rows[parseInt(i.toString(), 10)] = new Row({});\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.processColumns(rows);\n rows = this.processHeaderCells(rows, columns);\n return { rows: rows, columns: this.generateActualColumns(columns) };\n };\n ExportHelper.prototype.getConvertedWidth = function (input) {\n var value = parseFloat(input);\n return (input.indexOf('%') !== -1) ? (this.parent.element.getBoundingClientRect().width * value / 100) : value;\n };\n ExportHelper.prototype.generateActualColumns = function (columns, actualColumns) {\n if (actualColumns === void 0) { actualColumns = []; }\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var column = columns_2[_i];\n if (column.commands) {\n continue;\n }\n if (!column.columns) {\n if (column.visible || this.hideColumnInclude) {\n actualColumns.push(column);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n var colSpan = this.getCellCount(column, 0);\n if (colSpan !== 0) {\n this.generateActualColumns(column.columns, actualColumns);\n }\n }\n }\n }\n return actualColumns;\n };\n ExportHelper.prototype.processHeaderCells = function (rows, cols) {\n var columns = cols;\n for (var i = 0; i < columns.length; i++) {\n if (!columns[parseInt(i.toString(), 10)].commands) {\n rows = this.appendGridCells(columns[parseInt(i.toString(), 10)], rows, 0);\n }\n }\n return rows;\n };\n ExportHelper.prototype.appendGridCells = function (cols, gridRows, index) {\n if (!cols.columns && (cols.visible !== false || this.hideColumnInclude) && !cols.commands) {\n gridRows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, index));\n }\n else if (cols.columns) {\n var colSpan = this.getCellCount(cols, 0);\n if (colSpan) {\n gridRows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols, colSpan: colSpan\n }));\n }\n var isIgnoreFirstCell = void 0;\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n if (cols.columns[parseInt(i.toString(), 10)].visible && !isIgnoreFirstCell) {\n isIgnoreFirstCell = true;\n }\n gridRows = this.appendGridCells(cols.columns[parseInt(i.toString(), 10)], gridRows, index + 1);\n }\n }\n return gridRows;\n };\n ExportHelper.prototype.generateCell = function (gridColumn, cellType, rowSpan, rowIndex) {\n var option = {\n 'visible': gridColumn.visible,\n 'isDataCell': cellType === CellType.Data,\n 'column': gridColumn,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'index': rowIndex\n };\n if (!option.rowSpan || option.rowSpan < 2) {\n delete option.rowSpan;\n }\n return new Cell(option);\n };\n ExportHelper.prototype.processColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gridObj = this.parent;\n var columnIndexes = [];\n if (gridObj.enableColumnVirtualization) {\n columnIndexes = gridObj.getColumnIndexesInView();\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gridObj.allowGrouping) {\n for (var j = 0, len_1 = gridObj.groupSettings.columns.length - 1; j < len_1; j++) {\n if (gridObj.enableColumnVirtualization && columnIndexes.indexOf(j) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.splice(0, 0, this.generateCell({}, CellType.HeaderIndent));\n }\n }\n }\n return rows;\n };\n ExportHelper.prototype.getCellCount = function (column, count) {\n if (column.columns) {\n for (var i = 0; i < column.columns.length; i++) {\n count = this.getCellCount(column.columns[parseInt(i.toString(), 10)], count);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n count++;\n }\n }\n return count;\n };\n ExportHelper.prototype.checkAndExport = function (gridPool, globalResolve) {\n var bool = Object.keys(gridPool).some(function (key) {\n return !gridPool[\"\" + key];\n });\n if (!bool) {\n globalResolve();\n }\n };\n ExportHelper.prototype.failureHandler = function (gridPool, childGridObj, resolve) {\n var _this = this;\n return function () {\n gridPool[childGridObj.id] = true;\n _this.checkAndExport(gridPool, resolve);\n };\n };\n ExportHelper.prototype.createChildGrid = function (gObj, row, exportType, gridPool) {\n var childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n var parent = 'parentDetails';\n childGridObj[\"\" + parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n var exportId = getUid('child-grid');\n var element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[\"\" + exportId] = false;\n childGridObj.isExportGrid = true;\n return { childGrid: childGridObj, element: element };\n };\n ExportHelper.prototype.getGridExportColumns = function (columns) {\n var actualGridColumns = [];\n for (var i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[parseInt(i.toString(), 10)]);\n }\n }\n return actualGridColumns;\n };\n /**\n * Gets the foreignkey data.\n *\n * @returns {ForeignKeyFormat} returns the foreignkey data\n * @hidden\n */\n ExportHelper.prototype.getForeignKeyData = function () {\n return this.foreignKeyData;\n };\n return ExportHelper;\n}());\nexport { ExportHelper };\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nvar ExportValueFormatter = /** @class */ (function () {\n function ExportValueFormatter(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n ExportValueFormatter.prototype.returnFormattedValue = function (args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n };\n /**\n * Used to format the exporting cell value\n *\n * @param {ExportHelperArgs} args - Specifies cell details.\n * @returns {string} returns formated value\n * @hidden\n */\n ExportValueFormatter.prototype.formatCellValue = function (args) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n if (typeof args.column.format === 'string') {\n args.column.format = { format: args.column.format };\n }\n return args.value || args.value === 0 ?\n this.internationalization.getNumberFormat(args.column.format)(args.value) : '';\n }\n else if (args.column.type === 'boolean' && args.value !== '') {\n return args.value ? 'true' : 'false';\n /* tslint:disable-next-line:max-line-length */\n }\n else if ((args.column.type === 'date' || args.column.type === 'dateonly' || args.column.type === 'datetime' || args.column.type === 'time') && args.column.format !== undefined) {\n if (typeof args.value === 'string') {\n args.value = new Date(args.value);\n }\n if (typeof args.column.format === 'string') {\n var format = void 0;\n var cFormat = args.column.format;\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n format = { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = { type: 'time', skeleton: cFormat };\n }\n else {\n format = { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n var customFormat = void 0;\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n customFormat = {\n type: args.column.format.type,\n format: args.column.format.format, skeleton: args.column.format.skeleton\n };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n };\n return ExportValueFormatter;\n}());\nexport { ExportValueFormatter };\n","import * as events from '../base/constant';\nimport { PdfDocument, PdfGrid, PdfBorders, PdfPen, PdfPaddings, PdfGridLayoutFormat, PdfLayoutType, PdfLayoutBreakType } from '@syncfusion/ej2-pdf-export';\nimport { PdfStandardFont, PdfFontFamily, PdfFontStyle, PdfBitmap } from '@syncfusion/ej2-pdf-export';\nimport { PdfStringFormat, PdfTextAlignment, PdfColor, PdfSolidBrush, PdfTextWebLink } from '@syncfusion/ej2-pdf-export';\nimport { PdfVerticalAlignment, RectangleF, PdfPageTemplateElement } from '@syncfusion/ej2-pdf-export';\nimport { PointF, PdfPageNumberField, PdfCompositeField } from '@syncfusion/ej2-pdf-export';\nimport { PdfPageCountField, SizeF, PdfPageSettings, PdfPageOrientation } from '@syncfusion/ej2-pdf-export';\nimport { PdfTrueTypeFont } from '@syncfusion/ej2-pdf-export';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { Data } from '../actions/data';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { compile, getEnumValue, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { getValue } from '@syncfusion/ej2-base';\nimport { getUid, getPrintGridModel, measureColumnDepth, isExportColumns, updateColumnTypeForExportColumns, prepareColumns } from '../base/util';\n/**\n * `PDF Export` module is used to handle the exportToPDF action.\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for the Grid PDF Export module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function PdfExport(parent) {\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.customDataSource = false;\n this.isGrouping = false;\n this.headerOnPages = [];\n this.drawPosition = { xPosition: 0, yPosition: 0 };\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.gridPool = {};\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n PdfExport.prototype.getModuleName = function () {\n return 'PdfExport';\n };\n PdfExport.prototype.init = function (parent) {\n this.exportValueFormatter = new ExportValueFormatter(parent.locale);\n this.pdfDocument = undefined;\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.parent = parent;\n this.isGrouping = false;\n this.isExporting = true;\n parent.id = getUid('main-grid');\n this.gridPool[parent.id] = false;\n this.pdfPageSettings = new PdfPageSettings();\n };\n PdfExport.prototype.exportWithData = function (parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject) {\n var _this = this;\n this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n this.pdfDocument = pdfDoc;\n }\n else {\n this.pdfDocument = new PdfDocument();\n }\n this.processExport(parent, returnType, pdfExportProperties, isMultipleExport).then(function () {\n _this.isExporting = false;\n parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise } : { gridInstance: _this.parent });\n _this.parent.log('exporting_complete', _this.getModuleName());\n resolve(_this.pdfDocument);\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(events.actionFailure, e);\n });\n };\n /**\n * Used to map the input data\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PdfExportProperties} pdfExportProperties - specifies the PdfExportProperties\n * @param {boolean} isMultipleExport - specifies the isMultipleExport\n * @param {Object} pdfDoc - specifies the pdfDoc\n * @param {boolean} isBlob - speciies whether it is Blob or not\n * @returns {void}\n */\n PdfExport.prototype.Map = function (parent, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n var _this = this;\n this.data = new Data(this.parent);\n this.isBlob = isBlob;\n this.gridPool = {};\n var query = pdfExportProperties && pdfExportProperties.query ? pdfExportProperties.query : new Query();\n if ((parent.childGrid || parent.detailTemplate) && !(!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.hierarchyExportMode === 'None')) {\n parent.expandedRows = getPrintGridModel(parent).expandedRows;\n }\n var args = {\n requestType: 'beforePdfExport', cancel: false,\n headerPageNumbers: [], gridDrawPosition: { xPosition: 0, yPosition: 0 }, generateQuery: false\n };\n var gridObject = 'gridObject';\n args[\"\" + gridObject] = parent;\n var can = 'cancel';\n var generateQuery = 'generateQuery';\n var header = 'headerPageNumbers';\n var drawPos = 'gridDrawPosition';\n parent.trigger(events.beforePdfExport, args);\n if (args[\"\" + can] === true) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n return resolve();\n });\n }\n if (isExportColumns(pdfExportProperties)) {\n updateColumnTypeForExportColumns(pdfExportProperties, parent);\n }\n if (args[\"\" + generateQuery]) {\n query = ExportHelper.getQuery(parent, this.data);\n }\n this.headerOnPages = args[\"\" + header];\n this.drawPosition = args[\"\" + drawPos];\n this.parent.log('exporting_begin', this.getModuleName());\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)) {\n pdfExportProperties.dataSource = pdfExportProperties.dataSource instanceof DataManager ?\n pdfExportProperties.dataSource : new DataManager(pdfExportProperties.dataSource);\n if (isNullOrUndefined(query.isCountRequired) || parent.aggregates) {\n query.isCountRequired = true;\n }\n return new Promise(function (resolve, reject) {\n pdfExportProperties.dataSource.executeQuery(query).then(function (returnType) {\n _this.exportWithData(parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject);\n });\n });\n }\n else if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve, reject) {\n _this.exportWithData(parent, pdfDoc, resolve, _this.parent.getCurrentViewRecords(), pdfExportProperties, isMultipleExport, reject);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(parent, this.data)));\n allPromise_1.push(this.helper.getColumnData(parent));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n _this.pdfDocument = pdfDoc['document'];\n }\n else {\n _this.pdfDocument = new PdfDocument();\n }\n _this.processExport(parent, e[0], pdfExportProperties, isMultipleExport, pdfDoc).then(function (results) {\n _this.isExporting = false;\n parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise }\n : { gridInstance: _this.parent });\n _this.parent.log('exporting_complete', _this.getModuleName());\n if (pdfExportProperties && pdfExportProperties.multipleExport && pdfExportProperties.multipleExport.type === 'AppendToPage') {\n resolve(results);\n }\n else {\n resolve(_this.pdfDocument);\n }\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n });\n }\n };\n PdfExport.prototype.processExport = function (gObj, returnType, pdfExportProperties, isMultipleExport, pdfDoc) {\n var _this = this;\n var section = !(pdfDoc && pdfExportProperties && pdfExportProperties.multipleExport &&\n pdfExportProperties.multipleExport.type === 'AppendToPage') ? this.pdfDocument.sections.add() : null;\n var pdfGrid;\n this.processSectionExportProperties(section, pdfExportProperties);\n var pdfPage = pdfDoc && pdfExportProperties && pdfExportProperties.multipleExport &&\n pdfExportProperties.multipleExport.type === 'AppendToPage' ? pdfDoc['result'].page : section.pages.add();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n pdfGrid = _this.processGridExport(gObj, returnType, pdfExportProperties);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n // draw the grid\n var xPosition = _this.drawPosition['xPosition'];\n var yPosition;\n if (pdfDoc && pdfExportProperties && pdfExportProperties.multipleExport && pdfExportProperties.multipleExport.type === 'AppendToPage') {\n yPosition = pdfDoc['result'].bounds.y + pdfDoc['result'].bounds.height;\n if (pdfExportProperties.multipleExport.blankSpace) {\n yPosition = pdfDoc['result'].bounds.y + pdfDoc['result'].bounds.height + pdfExportProperties.multipleExport.blankSpace;\n }\n }\n else {\n yPosition = _this.drawPosition['yPosition'];\n }\n var result;\n if (isMultipleExport) {\n var layoutFormat = new PdfGridLayoutFormat();\n layoutFormat.layout = PdfLayoutType.Paginate;\n layoutFormat.break = PdfLayoutBreakType.FitPage;\n //Set pagination bounds of PDF grid\n layoutFormat.paginateBounds = new RectangleF(0, 0, pdfPage.getClientSize().width, pdfPage.getClientSize().height);\n result = pdfGrid.draw(pdfPage, xPosition, yPosition, layoutFormat);\n }\n else {\n result = pdfGrid.draw(pdfPage, xPosition, yPosition);\n }\n _this.drawHeader(pdfExportProperties);\n if (!isMultipleExport) {\n // save the PDF\n if (!_this.isBlob) {\n if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.fileName) {\n _this.pdfDocument.save(pdfExportProperties.fileName);\n }\n else {\n _this.pdfDocument.save('Export.pdf');\n }\n }\n else {\n _this.blobPromise = _this.pdfDocument.save();\n }\n _this.pdfDocument.destroy();\n delete gObj.expandedRows;\n }\n if (pdfExportProperties && pdfExportProperties.multipleExport && pdfExportProperties.multipleExport.type === 'AppendToPage') {\n return { document: _this.pdfDocument, result: result };\n }\n else {\n return _this.pdfDocument;\n }\n });\n };\n PdfExport.prototype.processSectionExportProperties = function (section, pdfExportProperties) {\n if (!isNullOrUndefined(pdfExportProperties) && (!isNullOrUndefined(pdfExportProperties.pageOrientation)\n || !isNullOrUndefined(pdfExportProperties.pageSize))) {\n this.pdfPageSettings.orientation = (pdfExportProperties.pageOrientation === 'Landscape') ?\n PdfPageOrientation.Landscape : PdfPageOrientation.Portrait;\n this.pdfPageSettings.size = this.getPageSize(pdfExportProperties.pageSize);\n section.setPageSettings(this.pdfPageSettings);\n }\n return section;\n };\n PdfExport.prototype.processGridExport = function (gObj, returnType, pdfExportProperties) {\n var allowHorizontalOverflow = true;\n if (!isNullOrUndefined(pdfExportProperties)) {\n this.gridTheme = pdfExportProperties.theme;\n allowHorizontalOverflow = isNullOrUndefined(pdfExportProperties.allowHorizontalOverflow) ?\n true : pdfExportProperties.allowHorizontalOverflow;\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var dataSource = this.processExportProperties(pdfExportProperties, returnType.result);\n var columns = isExportColumns(pdfExportProperties) ?\n prepareColumns(pdfExportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(gObj.columns);\n columns = columns.filter(function (columns) { return isNullOrUndefined(columns.commands); });\n var isGrouping = false;\n if (gObj.groupSettings.columns.length) {\n isGrouping = true;\n }\n if ((gObj.childGrid || gObj.detailTemplate) && !isNullOrUndefined(pdfExportProperties)) {\n gObj.hierarchyPrintMode = pdfExportProperties.hierarchyExportMode || 'Expanded';\n }\n // create a grid\n var pdfGrid = new PdfGrid();\n // get header theme style\n var headerThemeStyle = this.getHeaderThemeStyle();\n var border = headerThemeStyle.border;\n var headerFont = headerThemeStyle.font;\n var headerBrush = headerThemeStyle.brush;\n var returnValue = helper.getHeaders(columns, this.hideColumnInclude);\n // Column collection with respect to the records in the grid\n var gridColumns = returnValue.columns;\n // process grid header content\n pdfGrid = this.processGridHeaders(gObj.groupSettings.columns.length, pdfGrid, returnValue.rows, gridColumns, border, headerFont, headerBrush, gObj, allowHorizontalOverflow, columns);\n // set alignment, width and type of the values of the column\n this.setColumnProperties(gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow);\n var captionThemeStyle = this.getSummaryCaptionThemeStyle();\n if (!isNullOrUndefined(dataSource) && dataSource.length) {\n if (isGrouping) {\n if (!isNullOrUndefined(captionThemeStyle.border)) {\n border = captionThemeStyle.border;\n }\n this.processGroupedRecords(pdfGrid, dataSource, gridColumns, gObj, border, 0, captionThemeStyle.font, captionThemeStyle.\n brush, captionThemeStyle.backgroundBrush, returnType, pdfExportProperties, helper, 0);\n }\n else {\n this.processRecord(border, gridColumns, gObj, dataSource, pdfGrid, 0, pdfExportProperties, helper, 0);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var sRows = void 0;\n var column = summaryModel.getColumns();\n column = column.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n if (this.customDataSource) {\n sRows = summaryModel.generateRows(dataSource, returnType.aggregates, null, null, column);\n }\n else if (this.currentViewData) {\n sRows = summaryModel.generateRows(this.parent.getCurrentViewRecords(), returnType.aggregates);\n }\n else if (isGrouping) {\n sRows = summaryModel.generateRows(dataSource.records, returnType.aggregates);\n }\n else {\n sRows = summaryModel.generateRows(returnType.result, returnType.aggregates, null, null, column);\n }\n this.processAggregates(sRows, pdfGrid, border, captionThemeStyle.font, captionThemeStyle.brush, captionThemeStyle.backgroundBrush, false, null, null, null, isGrouping ? false : true);\n }\n }\n else {\n var row = pdfGrid.rows.addRow();\n row.style.setBorder(border);\n }\n return pdfGrid;\n };\n PdfExport.prototype.getSummaryCaptionThemeStyle = function () {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.caption)) {\n var fontSize = !isNullOrUndefined(this.gridTheme.caption.fontSize) ? this.gridTheme.caption.fontSize : 9.75;\n var fontFamily = !isNullOrUndefined(this.gridTheme.caption.fontName) ?\n this.getFontFamily(this.gridTheme.caption.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.caption);\n var pdfColor = new PdfColor(0, 0, 0);\n if (!isNullOrUndefined(this.gridTheme.caption.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.caption.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var borderCaption = this.gridTheme.caption.border ? this.getBorderStyle(this.gridTheme.caption.border) : null;\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.caption.font)) {\n font = this.gridTheme.caption.font;\n }\n return { font: font, brush: new PdfSolidBrush(pdfColor), backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)),\n border: borderCaption };\n }\n else {\n //Material theme\n return { font: new PdfStandardFont(PdfFontFamily.Helvetica, 9.75), brush: new PdfSolidBrush(new PdfColor(0, 0, 0)),\n backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)) };\n }\n };\n PdfExport.prototype.getGridPdfFont = function (args) {\n var fontFamily = 'fontFamily';\n var fontSize = 'fontSize';\n var fontStyle = 'fontStyle';\n var isTrueType = 'isTrueType';\n var style = 0;\n if (args.header && args.header.font) {\n var headerFont = args.header.font[\"\" + fontFamily];\n var headerSize = args.header.font[\"\" + fontSize];\n var headerStyle = args.header.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + headerStyle]) ? 0 : PdfFontStyle[\"\" + headerStyle]);\n if (args.header.font[\"\" + isTrueType]) {\n args.header.font = new PdfTrueTypeFont(headerFont, headerSize, style);\n }\n else {\n var fontFamily_1 = !isNullOrUndefined(headerFont) ?\n this.getFontFamily(headerFont) : PdfFontFamily.Helvetica;\n args.header.font = new PdfStandardFont(fontFamily_1, headerSize, style);\n }\n }\n if (args.caption && args.caption.font) {\n var captionFont = args.caption.font[\"\" + fontFamily];\n var captionSize = args.caption.font[\"\" + fontSize];\n var captionStyle = args.caption.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + captionStyle]) ? 0 : PdfFontStyle[\"\" + captionStyle]);\n if (args.caption.font[\"\" + isTrueType]) {\n args.caption.font = new PdfTrueTypeFont(captionFont, captionSize, style);\n }\n else {\n var fontFamily_2 = !isNullOrUndefined(captionFont) ?\n this.getFontFamily(captionFont) : PdfFontFamily.Helvetica;\n args.caption.font = new PdfStandardFont(fontFamily_2, captionSize, style);\n }\n }\n if (args.record && args.record.font) {\n var recordFont = args.record.font[\"\" + fontFamily];\n var recordSize = args.record.font[\"\" + fontSize];\n var recordStyle = args.record.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + recordStyle]) ? 0 : PdfFontStyle[\"\" + recordStyle]);\n if (args.record.font[\"\" + isTrueType]) {\n args.record.font = new PdfTrueTypeFont(recordFont, recordSize, style);\n }\n else {\n var fontFamily_3 = !isNullOrUndefined(recordFont) ?\n this.getFontFamily(recordFont) : PdfFontFamily.Helvetica;\n args.record.font = new PdfStandardFont(fontFamily_3, recordSize, style);\n }\n }\n };\n PdfExport.prototype.getHeaderThemeStyle = function () {\n var border = new PdfBorders();\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.header)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.header.fontName) ?\n this.getFontFamily(this.gridTheme.header.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.header);\n var fontSize = !isNullOrUndefined(this.gridTheme.header.fontSize) ? this.gridTheme.header.fontSize : 10.5;\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.header.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.header.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.header.font)) {\n font = this.gridTheme.header.font;\n }\n return { border: this.getBorderStyle(this.gridTheme.header.border), font: font, brush: new PdfSolidBrush(pdfColor) };\n }\n else {\n //Material theme\n border.all = new PdfPen(new PdfColor(234, 234, 234));\n return { border: border, font: new PdfStandardFont(PdfFontFamily.Helvetica, 10.5),\n brush: new PdfSolidBrush(new PdfColor(102, 102, 102)) };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.processGroupedRecords = function (pdfGrid, dataSource, gridColumns, gObj, border, level, font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index) {\n var _this = this;\n var groupIndex = level;\n var _loop_1 = function (dataSourceItems) {\n var row = pdfGrid.rows.addRow();\n var col = gObj.getColumnByField(dataSourceItems.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: dataSourceItems.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(dataSourceItems.field).headerText + ': ' + (!col.enableGroupByFormat ? this_1.exportValueFormatter.formatCellValue(args) : dataSourceItems.key) + ' - ' + dataSourceItems.count + (dataSource.count > 1 ? ' items' : ' item');\n var cArgs = { captionText: value, type: 'PDF', data: dataSourceItems, style: undefined };\n this_1.parent.trigger(events.exportGroupCaption, cArgs, function (cArgs) {\n row.cells.getCell(groupIndex).value = cArgs.captionText;\n row.cells.getCell(groupIndex).style.stringFormat = new PdfStringFormat(PdfTextAlignment.Left);\n row.style.setBorder(border);\n row.style.setFont(font);\n row.style.setTextBrush(brush);\n row.style.setBackgroundBrush(backgroundBrush);\n if (!isNullOrUndefined(cArgs.style)) {\n _this.processCellStyle(row.cells.getCell(groupIndex), cArgs);\n }\n var sRows;\n var captionSummaryModel = new CaptionSummaryModelGenerator(gObj);\n if (!isNullOrUndefined(dataSourceItems.items.records)) {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n }\n else {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n }\n if (!isNullOrUndefined(sRows) && sRows.length === 0) {\n row.cells.getCell(groupIndex + 1).columnSpan = pdfGrid.columns.count - (groupIndex + 1);\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex, null, null, gObj);\n _this.processGroupedRecords(pdfGrid, dataSourceItems.items, gridColumns, gObj, border, (groupIndex + 1), font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index);\n index = _this.rowIndex;\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false);\n }\n else {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex, null, null, gObj);\n index = _this.processRecord(border, gridColumns, gObj, dataSourceItems.items, pdfGrid, (groupIndex + 1), pdfExportProperties, helper, index);\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n var isGroupedFooter = true;\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false, null, null, isGroupedFooter, null, gObj);\n }\n });\n };\n var this_1 = this;\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var dataSourceItems = dataSource_1[_i];\n _loop_1(dataSourceItems);\n }\n };\n PdfExport.prototype.processGridHeaders = function (childLevels, pdfGrid, rows, gridColumn, border, headerFont, headerBrush, grid, allowHorizontalOverflow, eCols) {\n var _this = this;\n var columnCount = gridColumn.length + childLevels;\n var depth = measureColumnDepth(eCols);\n var cols = eCols;\n var index = 0;\n var rowNumber = [];\n for (var i = 0; i < rows.length; i++) {\n rowNumber[parseInt(i.toString(), 10)] = 0;\n }\n if (grid.groupSettings.columns.length) {\n index = grid.groupSettings.columns.length - 1;\n columnCount = columnCount - 1;\n }\n pdfGrid.columns.add(columnCount);\n pdfGrid.headers.add(rows.length);\n var applyTextAndSpan = function (rowIdx, colIdx, col, rowSpan, colSpan) {\n var gridHeader = pdfGrid.headers.getHeader(rowIdx);\n var pdfCell = gridHeader.cells.getCell(colIdx);\n var cell = rows[parseInt(rowIdx.toString(), 10)].cells[grid.groupSettings.columns.length ?\n colIdx : rowNumber[parseInt(rowIdx.toString(), 10)]];\n rowNumber[parseInt(rowIdx.toString(), 10)] = rowNumber[parseInt(rowIdx.toString(), 10)] + 1;\n if (!isNullOrUndefined(col.headerTextAlign)) {\n pdfCell.style.stringFormat = _this.getHorizontalAlignment(col.headerTextAlign);\n }\n if (rowSpan > 0) {\n pdfCell.rowSpan = rowSpan;\n pdfCell.style.stringFormat = _this.getVerticalAlignment('Bottom', pdfCell.style.stringFormat, col.textAlign);\n }\n if (colSpan > 0) {\n pdfCell.columnSpan = colSpan;\n }\n gridHeader.style.setBorder(border);\n gridHeader.style.setFont(headerFont);\n gridHeader.style.setTextBrush(headerBrush);\n pdfCell.value = col.headerText;\n if (!isNullOrUndefined(cell) && (cell.cellType === CellType.HeaderIndent || cell.cellType === CellType.DetailHeader)) {\n pdfCell.value = '';\n pdfCell.width = 20;\n }\n var args = {\n cell: pdfCell,\n gridCell: cell,\n style: pdfCell.style\n };\n _this.parent.trigger(events.pdfHeaderQueryCellInfo, args);\n var evtArgs = args;\n var setCellBorder = args.style.borders;\n var setCellFont = args.style.font;\n var setHeaderBrush = args.style.textBrush;\n if (!isNullOrUndefined(setCellBorder)) {\n gridHeader.style.setBorder(setCellBorder);\n }\n if (!isNullOrUndefined(setCellFont)) {\n gridHeader.style.setFont(setCellFont);\n }\n if (!isNullOrUndefined(setHeaderBrush)) {\n gridHeader.style.setTextBrush(setHeaderBrush);\n }\n if (!isNullOrUndefined(evtArgs.style.verticalAlignment)) {\n pdfCell.style.stringFormat = _this.getVerticalAlignment(evtArgs.style.verticalAlignment, pdfCell.style.stringFormat);\n }\n if (!isNullOrUndefined(evtArgs.image)) {\n pdfCell.value = new PdfBitmap(evtArgs.image.base64);\n }\n if (!isNullOrUndefined(evtArgs.hyperLink)) {\n pdfCell.value = _this.setHyperLink(evtArgs);\n }\n };\n var recuHeader = function (cols, depth, spanCnt, colIndex, rowIndex, isRoot) {\n var cidx = 0;\n for (var i = 0; i < cols.length; i++) {\n if (isRoot) {\n cidx = cidx + spanCnt + (i === 0 ? 0 : -1);\n colIndex = cidx;\n spanCnt = 0;\n }\n if (!isRoot && !cols[parseInt(i.toString(), 10)].visible) {\n colIndex = colIndex - 1;\n }\n if (cols[parseInt(i.toString(), 10)].columns && cols[parseInt(i.toString(), 10)].columns.length) {\n var newSpanCnt = recuHeader(cols[parseInt(i.toString(), 10)]\n .columns, depth - 1, 0, i + colIndex, rowIndex + 1, false);\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[parseInt(i.toString(), 10)], 0, newSpanCnt);\n spanCnt = spanCnt + newSpanCnt;\n colIndex = colIndex + newSpanCnt - 1;\n }\n else if (cols[parseInt(i.toString(), 10)].visible || _this.hideColumnInclude) {\n spanCnt++;\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[parseInt(i.toString(), 10)], depth, 0);\n }\n }\n return spanCnt;\n };\n recuHeader(cols, depth, 0, 0, 0, true);\n if (pdfGrid.columns.count >= 6 && allowHorizontalOverflow) {\n pdfGrid.style.allowHorizontalOverflow = true;\n }\n return pdfGrid;\n };\n PdfExport.prototype.processExportProperties = function (pdfExportProperties, dataSource) {\n if (!isNullOrUndefined(pdfExportProperties)) {\n if (!isNullOrUndefined(pdfExportProperties.theme)) {\n this.gridTheme = pdfExportProperties.theme;\n }\n var clientSize = this.pdfPageSettings.size;\n this.drawHeader(pdfExportProperties);\n if (!isNullOrUndefined(pdfExportProperties.footer)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footer = pdfExportProperties.footer;\n var position = new PointF(0, ((clientSize.width - 80) - (footer.fromBottom * 0.75)));\n var size = new SizeF((clientSize.width - 80), (footer.height * 0.75));\n var bounds = new RectangleF(position, size);\n this.pdfDocument.template.bottom = this.drawPageTemplate(new PdfPageTemplateElement(bounds), footer);\n }\n if (!isNullOrUndefined(pdfExportProperties.includeHiddenColumn) && !this.isGrouping) {\n this.hideColumnInclude = pdfExportProperties.includeHiddenColumn;\n }\n if (!isNullOrUndefined(pdfExportProperties.dataSource)) {\n this.customDataSource = true;\n this.currentViewData = false;\n }\n else if (!isNullOrUndefined(pdfExportProperties.exportType)) {\n if (pdfExportProperties.exportType === 'CurrentPage') {\n dataSource = this.parent.currentViewData;\n this.currentViewData = true;\n this.customDataSource = false;\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n return dataSource;\n };\n PdfExport.prototype.drawHeader = function (pdfExportProperties) {\n var _this = this;\n var clientSize = this.pdfPageSettings.size;\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.header)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var header = pdfExportProperties.header;\n var position = new PointF(0, header.fromTop);\n var size = new SizeF((clientSize.width - 80), (header.height * 0.75));\n var bounds = new RectangleF(position, size);\n if (!this.headerOnPages.length) {\n this.pdfDocument.template.top = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n }\n else {\n var headerTemplate_1 = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n this.headerOnPages.filter(function (index) {\n if (index - 1 >= 0 && index - 1 <= _this.pdfDocument.pages.count - 1) {\n _this.pdfDocument.pages.getPageByIndex(index - 1).graphics\n .drawPdfTemplate(headerTemplate_1.template, new PointF(0, 0));\n }\n });\n }\n }\n };\n PdfExport.prototype.drawPageTemplate = function (template, element) {\n for (var _i = 0, _a = element.contents; _i < _a.length; _i++) {\n var content = _a[_i];\n this.processContentValidation(content);\n switch (content.type) {\n case 'Text':\n if (content.value === '' || content.value === undefined || content.value === null || typeof content.value !== 'string') {\n throw new Error('please enter the valid input value in text content...');\n }\n this.drawText(template, content);\n break;\n case 'PageNumber':\n this.drawPageNumber(template, content);\n break;\n case 'Image':\n if (content.src === undefined || content.src === null || content.src === '') {\n throw new Error('please enter the valid base64 string in image content...');\n }\n this.drawImage(template, content);\n break;\n case 'Line':\n this.drawLine(template, content);\n break;\n default:\n throw new Error('Please set valid content type...');\n }\n }\n return template;\n };\n PdfExport.prototype.processContentValidation = function (content) {\n if (content.type === undefined || content.type === null) {\n throw new Error('please set valid content type...');\n }\n else {\n if (content.type === 'Line') {\n if (content.points === undefined || content.points === null) {\n throw new Error('please enter valid points in ' + content.type + ' content...');\n }\n else {\n if (content.points.x1 === undefined || content.points.x1 === null || typeof content.points.x1 !== 'number') {\n throw new Error('please enter valid x1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y1 === undefined || content.points.y1 === null || typeof content.points.y1 !== 'number') {\n throw new Error('please enter valid y1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.x2 === undefined || content.points.x2 === null || typeof content.points.x2 !== 'number') {\n throw new Error('please enter valid x2 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y2 === undefined || content.points.y2 === null || typeof content.points.y2 !== 'number') {\n throw new Error('please enter valid y2 co-ordinate in ' + content.type + ' points...');\n }\n }\n }\n else {\n if (content.position === undefined || content.position === null) {\n throw new Error('please enter valid position in ' + content.type + ' content...');\n }\n else {\n if (content.position.x === undefined || content.position.x === null || typeof content.position.x !== 'number') {\n throw new Error('please enter valid x co-ordinate in ' + content.type + ' position...');\n }\n if (content.position.y === undefined || content.position.y === null || typeof content.position.y !== 'number') {\n throw new Error('please enter valid y co-ordinate in ' + content.type + ' position...');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawText = function (pageTemplate, content) {\n var font = this.getFont(content);\n var brush = this.getBrushFromContent(content);\n var pen = null;\n if (!isNullOrUndefined(content.style.textPenColor)) {\n var penColor = this.hexToRgb(content.style.textPenColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n if (brush == null && pen == null) {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var value = content.value.toString();\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var format = new PdfStringFormat();\n if (!isNullOrUndefined(content.style.stringFormat)) {\n format.alignment = content.style.stringFormat.alignment;\n }\n var result = this.setContentFormat(content, format);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, result.size.width, result.size.height, result.format);\n }\n else {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, format);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawPageNumber = function (documentHeader, content) {\n var font = this.getFont(content);\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n else {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var pageNumber = new PdfPageNumberField(font, brush);\n pageNumber.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n var compositeField;\n var format;\n if (!isNullOrUndefined(content.format)) {\n var total = '$total';\n var current = '$current';\n if (content.format.indexOf(total) !== -1 && content.format.indexOf(current) !== -1) {\n var pageCount = new PdfPageCountField(font);\n pageCount.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n if (content.format.indexOf(total) > content.format.indexOf(current)) {\n format = content.format.replace(current, '0');\n format = format.replace(total, '1');\n }\n else {\n format = content.format.replace(current, '1');\n format = format.replace(total, '0');\n }\n compositeField = new PdfCompositeField(font, brush, format, pageNumber, pageCount);\n }\n else if (content.format.indexOf(current) !== -1 && content.format.indexOf(total) === -1) {\n format = content.format.replace(current, '0');\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n else {\n var pageCount = new PdfPageCountField(font);\n format = content.format.replace(total, '0');\n compositeField = new PdfCompositeField(font, brush, format, pageCount);\n }\n }\n else {\n format = '{0}';\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var result = this.setContentFormat(content, compositeField.stringFormat);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n compositeField.stringFormat = result.format;\n compositeField.bounds = new RectangleF(x, y, result.size.width, result.size.height);\n }\n compositeField.draw(documentHeader.graphics, x, y);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawImage = function (documentHeader, content) {\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var width = (!isNullOrUndefined(content.size)) ? (content.size.width * 0.75) : undefined;\n var height = (!isNullOrUndefined(content.size)) ? (content.size.height * 0.75) : undefined;\n var image = new PdfBitmap(content.src);\n if (!isNullOrUndefined(width)) {\n documentHeader.graphics.drawImage(image, x, y, width, height);\n }\n else {\n documentHeader.graphics.drawImage(image, x, y);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawLine = function (documentHeader, content) {\n var x1 = content.points.x1 * 0.75;\n var y1 = content.points.y1 * 0.75;\n var x2 = content.points.x2 * 0.75;\n var y2 = content.points.y2 * 0.75;\n var pen = this.getPenFromContent(content);\n if (!isNullOrUndefined(content.style) && content.style !== null) {\n if (!isNullOrUndefined(content.style.penSize) && content.style.penSize !== null && typeof content.style.penSize === 'number') {\n pen.width = content.style.penSize * 0.75;\n }\n pen.dashStyle = this.getDashStyle(content.style.dashStyle);\n }\n documentHeader.graphics.drawLine(pen, x1, y1, x2, y2);\n };\n PdfExport.prototype.processAggregates = function (sRows, pdfGrid, border, font, brush, backgroundBrush, isCaption, captionRow, groupIndex, isGroupedFooter, isAggregate, gObj) {\n for (var _i = 0, sRows_1 = sRows; _i < sRows_1.length; _i++) {\n var row = sRows_1[_i];\n var leastCaptionSummaryIndex = -1;\n var index = 0;\n var isEmpty = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = [];\n var aggIdx = isAggregate ? 0 : 1;\n var gridRow = void 0;\n if (isNullOrUndefined(captionRow)) {\n gridRow = pdfGrid.rows.addRow();\n gridRow.style.setBorder(border);\n gridRow.style.setFont(font);\n gridRow.style.setTextBrush(brush);\n gridRow.style.setBackgroundBrush(backgroundBrush);\n }\n for (var i = 0; i < pdfGrid.columns.count + aggIdx; i++) {\n var cell = row.cells[parseInt(index.toString(), 10)];\n if (cell.cellType === CellType.DetailFooterIntent) {\n i--;\n index++;\n continue;\n }\n if (!this.hideColumnInclude) {\n while (cell.visible === undefined) {\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if (!isNullOrUndefined(captionRow)) {\n if (!isNullOrUndefined(captionRow.cells.getCell(i).value)) {\n value.push(captionRow.cells.getCell(i).value);\n isEmpty = false;\n if (!isCaption) {\n i += 1;\n }\n }\n else {\n value.push('');\n }\n }\n else {\n value.push('');\n }\n i += 1;\n index = index + 1;\n cell = row.cells[parseInt(index.toString(), 10)];\n }\n while (!isNullOrUndefined(cell.visible) && !cell.visible) {\n index = index + 1;\n cell = row.cells[parseInt(index.toString(), 10)];\n }\n }\n if (cell.isDataCell) {\n var templateFn = {};\n var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n if (footerTemplate || groupCaptionTemplate || groupFooterTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getTemplateFunction(templateFn, i, leastCaptionSummaryIndex, cell);\n templateFn = result.templateFunction;\n leastCaptionSummaryIndex = result.leastCaptionSummaryIndex;\n var txt = void 0;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if ((this.parent.isReact || this.parent.isVue || this.parent.isVue3 || this.parent.isAngular) &&\n !(typeof cell.column.footerTemplate === 'string' || typeof cell.column.groupFooterTemplate === 'string' || typeof cell.column.groupCaptionTemplate === 'string')) {\n txt = data[(cell.column.type)];\n txt = !isNullOrUndefined(txt) ? txt : '';\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n txt = !isNullOrUndefined(txt[0]) ? txt[0].textContent : '';\n }\n isEmpty = false;\n var args = {\n row: row,\n type: footerTemplate ? 'Footer' : groupFooterTemplate ? 'GroupFooter' : 'GroupCaption',\n style: isNullOrUndefined(captionRow) ? gridRow.cells : captionRow.cells,\n cell: cell,\n value: txt\n };\n this.parent.trigger(events.pdfAggregateQueryCellInfo, args);\n value.push(args.value);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getSummaryWithoutTemplate(row.data[cell.column.field]);\n if (!isNullOrUndefined(result)) {\n value.push(result);\n }\n }\n }\n else {\n value.push('');\n }\n if (isEmpty && value[parseInt(i.toString(), 10)] !== '' && !isNullOrUndefined(value[parseInt(i.toString(), 10)]) && value[parseInt(i.toString(), 10)] !== null) {\n isEmpty = false;\n }\n index += 1;\n }\n if (!isAggregate) {\n if (!isCaption) {\n value.splice(0, 1);\n }\n else {\n for (var i = gObj.groupSettings.columns.length; i < value.length - 1; i++) {\n value[parseInt(i.toString(), 10)] = value[i + 1];\n value[i + 1] = value[i + 2] ? value[i + 2] : '';\n }\n }\n }\n if (!isEmpty) {\n if (!isCaption) {\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n gridRow.cells.getCell(i).value = value[parseInt(i.toString(), 10)].toString();\n }\n }\n else {\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n captionRow.cells.getCell(i).value = value[parseInt(i.toString(), 10)].toString();\n if (i === groupIndex && leastCaptionSummaryIndex !== -1 && leastCaptionSummaryIndex !== 1) {\n captionRow.cells.getCell(i).columnSpan = (leastCaptionSummaryIndex - 1) - groupIndex;\n }\n else if (i === groupIndex && leastCaptionSummaryIndex === -1) {\n captionRow.cells.getCell(i).columnSpan = pdfGrid.columns.count - groupIndex;\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getTemplateFunction = function (templateFn, index, leastCaptionSummaryIndex, cell) {\n if (!isNullOrUndefined(cell.column.footerTemplate) && cell.cellType === CellType.Summary) {\n templateFn[getEnumValue(CellType, CellType.Summary)] = compile(cell.column.footerTemplate);\n }\n else if (!isNullOrUndefined(cell.column.groupCaptionTemplate)) {\n if (leastCaptionSummaryIndex === -1) {\n leastCaptionSummaryIndex = index;\n }\n templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = compile(cell.column.groupCaptionTemplate);\n }\n else {\n templateFn[getEnumValue(CellType, CellType.GroupSummary)] = compile(cell.column.groupFooterTemplate);\n }\n return { templateFunction: templateFn, leastCaptionSummaryIndex: leastCaptionSummaryIndex };\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getSummaryWithoutTemplate = function (data) {\n if (!isNullOrUndefined(data.Sum)) {\n return data.Sum;\n }\n else if (!isNullOrUndefined(data.Average)) {\n return data.Average;\n }\n else if (!isNullOrUndefined(data.Max)) {\n return data.Max;\n }\n else if (!isNullOrUndefined(data.Min)) {\n return data.Min;\n }\n else if (!isNullOrUndefined(data.Count)) {\n return data.Count;\n }\n else if (!isNullOrUndefined(data.TrueCount)) {\n return data.TrueCount;\n }\n else if (!isNullOrUndefined(data.FalseCount)) {\n return data.FalseCount;\n }\n else if (!isNullOrUndefined(data.Custom)) {\n return data.Custom;\n }\n };\n /**\n * Set alignment, width and type of the values of the column\n *\n * @param {Column[]} gridColumns - specifies the grid column\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {ExportHelper} helper - specifies the helper\n * @param {IGrid} gObj - specifies the IGrid\n * @param {boolean} allowHorizontalOverflow - specifies the allowHorizontalOverflow\n * @returns {void}\n */\n PdfExport.prototype.setColumnProperties = function (gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow) {\n var startIndex = gObj.groupSettings.columns.length ? gObj.groupSettings.columns.length - 1 : 0;\n for (var i = 0; i < startIndex; i++) {\n pdfGrid.columns.getColumn(i).width = 20;\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (!isNullOrUndefined(gridColumns[parseInt(i.toString(), 10)].textAlign)) {\n pdfGrid.columns.getColumn(i + startIndex).format = this\n .getHorizontalAlignment(gridColumns[parseInt(i.toString(), 10)].textAlign);\n }\n // Need to add width consideration with % value\n if (pdfGrid.style.allowHorizontalOverflow && !isNullOrUndefined(gridColumns[parseInt(i.toString(), 10)].width)\n && allowHorizontalOverflow) {\n pdfGrid.columns.getColumn(i + startIndex).width = typeof gridColumns[parseInt(i.toString(), 10)].width === 'number' ?\n gridColumns[parseInt(i.toString(), 10)].width * 0.75 :\n helper.getConvertedWidth(gridColumns[parseInt(i.toString(), 10)].width) * 0.75;\n }\n }\n };\n /**\n * set default style properties of each rows in exporting grid\n *\n * @param {PdfGridRow} row - specifies the PdfGridRow\n * @param {PdfBorders} border - specifies the PdfBorders\n * @returns {PdfGrid} returns the pdfgrid\n * @private\n */\n PdfExport.prototype.setRecordThemeStyle = function (row, border) {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.record)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.record.fontName) ?\n this.getFontFamily(this.gridTheme.record.fontName) : PdfFontFamily.Helvetica;\n var fontSize = !isNullOrUndefined(this.gridTheme.record.fontSize) ? this.gridTheme.record.fontSize : 9.75;\n var fontStyle = this.getFontStyle(this.gridTheme.record);\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.record.font)) {\n font = this.gridTheme.record.font;\n }\n row.style.setFont(font);\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.record.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.record.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n row.style.setTextBrush(new PdfSolidBrush(pdfColor));\n }\n else {\n row.style.setTextBrush(new PdfSolidBrush(new PdfColor(0, 0, 0)));\n }\n var borderRecord = this.gridTheme && this.gridTheme.record &&\n this.gridTheme.record.border ? this.getBorderStyle(this.gridTheme.record.border) : border;\n row.style.setBorder(borderRecord);\n return row;\n };\n /**\n * generate the formatted cell values\n *\n * @param {PdfBorders} border - specifies the border\n * @param {Column[]} columns - specifies the columns\n * @param {IGrid} gObj - specifies the IGrid\n * @param {Object[]} dataSource - specifies the datasource\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {number} startIndex - specifies the startindex\n * @param {PdfExportProperties} pdfExportProperties - specifies the pdfExportProperties\n * @param {ExportHelper} helper - specifies the helper\n * @param {number} rowIndex - specifies the rowIndex\n * @returns {number} returns the number of records\n * @private\n */\n PdfExport.prototype.processRecord = function (border, columns, gObj, dataSource, pdfGrid, startIndex, pdfExportProperties, helper, rowIndex) {\n var rows = helper.getGridRowModel(columns, dataSource, gObj, rowIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n rowIndex++;\n this.rowIndex = rowIndex;\n // create a new row and set default style properties\n var gridRow = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var cellLength = row.cells.length;\n for (var j = 0; j < cellLength; j++) {\n var gridCell = row.cells[parseInt(j.toString(), 10)];\n if (gridCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gridCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n var foreignKeyData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n foreignKeyData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, foreignKeyData);\n }\n var data = row.data;\n var cell = gridRow.cells.getCell(j);\n var args = {\n data: data,\n value: value,\n column: column,\n style: undefined,\n colSpan: 1,\n cell: cell\n };\n args.value = args.column.type === 'boolean' && typeof args.value === 'string' ? args.value :\n this.exportValueFormatter.formatCellValue(args);\n this.parent.trigger(events.pdfQueryCellInfo, args);\n if (!isNullOrUndefined(args.image)) {\n args.value = new PdfBitmap(args.image.base64);\n args.value.height = args.image.height || args.value.height;\n args.value.width = args.image.width || args.value.width;\n }\n cell.value = args.value;\n if (!isNullOrUndefined(args.hyperLink)) {\n cell.value = this.setHyperLink(args);\n }\n if (!isNullOrUndefined(args.style)) {\n this.processCellStyle(cell, args);\n }\n if (args.colSpan > 1) {\n if ((j + 1 + args.colSpan) > gridRow.cells.count) {\n args.colSpan = gridRow.cells.count - (j + 1);\n }\n cell.columnSpan = args.colSpan;\n for (var i = 1; i < cell.columnSpan; i++) {\n var spanCell = gridRow.cells.getCell(j + i);\n spanCell.value = '';\n }\n j += (args.colSpan - 1);\n }\n }\n if (row.isExpand) {\n var gridRow_1 = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var startIndexVal = (this.parent.childGrid || this.parent.detailTemplate) ? 0 : startIndex;\n var cell = gridRow_1.cells.getCell(startIndexVal);\n cell.columnSpan = gridRow_1.cells.count - (startIndexVal);\n cell.style.cellPadding = new PdfPaddings(10, 10, 10, 10);\n if (this.parent.childGrid) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType) ?\n pdfExportProperties.exportType : 'AllPages';\n var returnValue = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnValue.childGrid;\n var element = returnValue.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n var args = {\n childGrid: childGridObj, row: row, cell: cell, exportProperties: pdfExportProperties\n };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(cell, childGridObj, pdfExportProperties);\n childGridObj.appendTo(element);\n }\n else if (this.parent.detailTemplate) {\n var args = { parentRow: row, row: gridRow_1, value: {}, action: 'pdfexport', gridInstance: gObj };\n this.parent.trigger(events.exportDetailTemplate, args);\n cell.value = this.processDetailTemplate(args);\n }\n }\n this.parent.notify(events.exportRowDataBound, { type: 'pdf', rowObj: row });\n }\n return rowIndex;\n };\n PdfExport.prototype.processDetailTemplate = function (templateData) {\n var _this = this;\n if (templateData.value.columnHeader || templateData.value.rows) {\n // create a grid\n var pdfGrid = new PdfGrid();\n // get header theme style\n var headerThemeStyle = this.getHeaderThemeStyle();\n var border_1 = headerThemeStyle.border;\n var headerFont_1 = headerThemeStyle.font;\n var headerBrush_1 = headerThemeStyle.brush;\n var processRow = function (row, gridRow, isHeader) {\n if (isHeader) {\n gridRow.style.setBorder(border_1);\n gridRow.style.setFont(headerFont_1);\n gridRow.style.setTextBrush(headerBrush_1);\n }\n for (var j = 0; j < row.cells.length; j++) {\n var currentCell = row.cells[parseInt(j.toString(), 10)];\n var pdfCell = gridRow.cells.getCell(currentCell.index ? currentCell.index : j);\n if (currentCell.rowSpan > 0) {\n pdfCell.rowSpan = currentCell.rowSpan;\n }\n if (currentCell.colSpan > 0) {\n pdfCell.columnSpan = currentCell.colSpan;\n }\n pdfCell.value = currentCell.value;\n if (!isNullOrUndefined(currentCell.image)) {\n pdfCell.value = new PdfBitmap(currentCell.image.base64);\n pdfCell.value.height = currentCell.image.height;\n pdfCell.value.width = currentCell.image.width;\n }\n if (!isNullOrUndefined(currentCell.hyperLink)) {\n pdfCell.value = _this.setHyperLink(currentCell);\n }\n if (!isNullOrUndefined(currentCell.style)) {\n var cellStyle = {\n style: {\n backgroundColor: currentCell.style.backColor,\n textAlignment: currentCell.style.pdfTextAlignment,\n verticalAlignment: currentCell.style.pdfVerticalAlignment,\n textBrushColor: currentCell.style.fontColor,\n textPenColor: currentCell.style.pdfTextPenColor,\n fontFamily: currentCell.style.pdfFontFamily,\n fontSize: currentCell.style.fontSize,\n bold: currentCell.style.bold,\n italic: currentCell.style.italic,\n underline: currentCell.style.underline,\n strikeout: currentCell.style.strikeThrough,\n border: currentCell.style.pdfBorder,\n paragraphIndent: currentCell.style.pdfParagraphIndent,\n cellPadding: currentCell.style.pdfCellPadding\n }\n };\n _this.processCellStyle(pdfCell, cellStyle);\n }\n }\n };\n if (templateData.value.columnCount) {\n pdfGrid.columns.add(templateData.value.columnCount);\n }\n else {\n if (templateData.value.columnHeader && templateData.value.columnHeader.length) {\n pdfGrid.columns.add(templateData.value.columnHeader[0].cells.length);\n }\n else if (templateData.value.rows && templateData.value.rows.length) {\n pdfGrid.columns.add(templateData.value.rows[0].cells.length);\n }\n }\n if (templateData.value.columnHeader) {\n pdfGrid.headers.add(templateData.value.columnHeader.length);\n for (var i = 0; i < templateData.value.columnHeader.length; i++) {\n var gridHeader = pdfGrid.headers.getHeader(parseInt(i.toString(), 10));\n processRow(templateData.value.columnHeader[parseInt(i.toString(), 10)], gridHeader, true);\n }\n }\n if (templateData.value.rows) {\n for (var _i = 0, _a = templateData.value.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n // create a new row and set default style properties\n var gridRow = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border_1);\n processRow(row, gridRow, false);\n }\n }\n return pdfGrid;\n }\n else if (templateData.value.image) {\n return new PdfBitmap(templateData.value.image.base64);\n }\n else if (templateData.value.text) {\n return templateData.value.text;\n }\n else if (templateData.value.hyperLink) {\n return this.setHyperLink(templateData.value);\n }\n return '';\n };\n PdfExport.prototype.setHyperLink = function (args) {\n // create the Text Web Link\n var textLink = new PdfTextWebLink();\n // set the hyperlink\n textLink.url = args.hyperLink.target;\n // set the link text\n textLink.text = args.hyperLink.displayText || args.hyperLink.target;\n // set the font\n textLink.font = new PdfStandardFont(PdfFontFamily.Helvetica, 9.75);\n // set the brush and pen for the text color\n textLink.brush = new PdfSolidBrush(new PdfColor(51, 102, 187));\n return textLink;\n };\n PdfExport.prototype.childGridCell = function (cell, childGridObj, pdfExportProperties) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n cell.value = _this.processGridExport(childGridObj, result, pdfExportProperties);\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return cell;\n };\n };\n PdfExport.prototype.processCellStyle = function (cell, args) {\n if (!isNullOrUndefined(args.style.backgroundColor)) {\n var backColor = this.hexToRgb(args.style.backgroundColor);\n cell.style.backgroundBrush = new PdfSolidBrush(new PdfColor(backColor.r, backColor.g, backColor.b));\n }\n if (!isNullOrUndefined(args.style.textAlignment)) {\n cell.style.stringFormat = this.getHorizontalAlignment(args.style.textAlignment);\n }\n if (!isNullOrUndefined(args.style.cellPadding)) {\n cell.style.cellPadding = args.style.cellPadding;\n }\n if (!isNullOrUndefined(args.style.verticalAlignment)) {\n cell.style.stringFormat = this.getVerticalAlignment(args.style.verticalAlignment, cell.style.stringFormat);\n }\n if (!isNullOrUndefined(args.style.textBrushColor)) {\n var textBrushColor = this.hexToRgb(args.style.textBrushColor);\n cell.style.textBrush = new PdfSolidBrush(new PdfColor(textBrushColor.r, textBrushColor.g, textBrushColor.b));\n }\n if (!isNullOrUndefined(args.style.textPenColor)) {\n var textPenColor = this.hexToRgb(args.style.textPenColor);\n cell.style.textPen = new PdfPen(new PdfColor(textPenColor.r, textPenColor.g, textPenColor.b));\n }\n if (!isNullOrUndefined(args.style.fontFamily) || !isNullOrUndefined(args.style.fontSize) || !isNullOrUndefined(args.style.bold) ||\n !isNullOrUndefined(args.style.italic) || !isNullOrUndefined(args.style.underline) || !isNullOrUndefined(args.style.strikeout)) {\n cell.style.font = this.getFont(args);\n }\n if (!isNullOrUndefined(args.style.border)) {\n var border = new PdfBorders();\n var borderWidth = args.style.border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? (borderWidth * 0.75) : (undefined);\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(args.style.border.color)) {\n var borderColor = this.hexToRgb(args.style.border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(args.style.border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(args.style.border.dashStyle);\n }\n border.all = pen;\n cell.style.borders = border;\n }\n if (!isNullOrUndefined(args.style.paragraphIndent)) {\n cell.style.stringFormat = new PdfStringFormat();\n cell.style.stringFormat.paragraphIndent = args.style.paragraphIndent;\n }\n };\n /**\n * set text alignment of each columns in exporting grid\n *\n * @param {string} textAlign - specifies the textAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @returns {PdfStringFormat} returns the PdfStringFormat\n * @private\n */\n PdfExport.prototype.getHorizontalAlignment = function (textAlign, format) {\n if (format === undefined) {\n format = new PdfStringFormat();\n }\n switch (textAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n case 'Left':\n format.alignment = PdfTextAlignment.Left;\n break;\n }\n return format;\n };\n /**\n * set vertical alignment of each columns in exporting grid\n *\n * @param {string} verticalAlign - specifies the verticalAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @param {string} textAlign - specifies the text align\n * @returns {PdfStringFormat} returns the PdfStringFormat\n * @private\n */\n PdfExport.prototype.getVerticalAlignment = function (verticalAlign, format, textAlign) {\n if (format === undefined) {\n format = new PdfStringFormat();\n format = this.getHorizontalAlignment(textAlign, format);\n }\n switch (verticalAlign) {\n case 'Bottom':\n format.lineAlignment = PdfVerticalAlignment.Bottom;\n break;\n case 'Middle':\n format.lineAlignment = PdfVerticalAlignment.Middle;\n break;\n case 'Top':\n format.lineAlignment = PdfVerticalAlignment.Top;\n break;\n }\n return format;\n };\n PdfExport.prototype.getFontFamily = function (fontFamily) {\n switch (fontFamily) {\n case 'TimesRoman':\n return 2;\n case 'Courier':\n return 1;\n case 'Symbol':\n return 3;\n case 'ZapfDingbats':\n return 4;\n default:\n return 0;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getFont = function (content) {\n if (content.font) {\n return content.font;\n }\n var fontSize = (!isNullOrUndefined(content.style.fontSize)) ? (content.style.fontSize * 0.75) : 9.75;\n var fontFamily = (!isNullOrUndefined(content.style.fontFamily)) ?\n (this.getFontFamily(content.style.fontFamily)) : PdfFontFamily.TimesRoman;\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(content.style.bold) && content.style.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(content.style.italic) && content.style.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(content.style.underline) && content.style.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(content.style.strikeout) && content.style.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return new PdfStandardFont(fontFamily, fontSize, fontStyle);\n };\n PdfExport.prototype.getPageNumberStyle = function (pageNumberType) {\n switch (pageNumberType) {\n case 'LowerLatin':\n return 2;\n case 'LowerRoman':\n return 3;\n case 'UpperLatin':\n return 4;\n case 'UpperRoman':\n return 5;\n default:\n return 1;\n }\n };\n PdfExport.prototype.setContentFormat = function (content, format) {\n if (!isNullOrUndefined(content.size)) {\n var width = content.size.width * 0.75;\n var height = content.size.height * 0.75;\n format = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);\n if (!isNullOrUndefined(content.style.hAlign)) {\n switch (content.style.hAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n default:\n format.alignment = PdfTextAlignment.Left;\n }\n }\n if (!isNullOrUndefined(content.style.vAlign)) {\n format = this.getVerticalAlignment(content.style.vAlign, format);\n }\n return { format: format, size: new SizeF(width, height) };\n }\n return null;\n };\n PdfExport.prototype.getPageSize = function (pageSize) {\n switch (pageSize) {\n case 'Letter':\n return new SizeF(612, 792);\n case 'Note':\n return new SizeF(540, 720);\n case 'Legal':\n return new SizeF(612, 1008);\n case 'A0':\n return new SizeF(2380, 3368);\n case 'A1':\n return new SizeF(1684, 2380);\n case 'A2':\n return new SizeF(1190, 1684);\n case 'A3':\n return new SizeF(842, 1190);\n case 'A5':\n return new SizeF(421, 595);\n case 'A6':\n return new SizeF(297, 421);\n case 'A7':\n return new SizeF(210, 297);\n case 'A8':\n return new SizeF(148, 210);\n case 'A9':\n return new SizeF(105, 148);\n // case 'A10':\n // return new SizeF(74, 105);\n case 'B0':\n return new SizeF(2836, 4008);\n case 'B1':\n return new SizeF(2004, 2836);\n case 'B2':\n return new SizeF(1418, 2004);\n case 'B3':\n return new SizeF(1002, 1418);\n case 'B4':\n return new SizeF(709, 1002);\n case 'B5':\n return new SizeF(501, 709);\n case 'Archa':\n return new SizeF(648, 864);\n case 'Archb':\n return new SizeF(864, 1296);\n case 'Archc':\n return new SizeF(1296, 1728);\n case 'Archd':\n return new SizeF(1728, 2592);\n case 'Arche':\n return new SizeF(2592, 3456);\n case 'Flsa':\n return new SizeF(612, 936);\n case 'HalfLetter':\n return new SizeF(396, 612);\n case 'Letter11x17':\n return new SizeF(792, 1224);\n case 'Ledger':\n return new SizeF(1224, 792);\n default:\n return new SizeF(595, 842);\n }\n };\n PdfExport.prototype.getDashStyle = function (dashStyle) {\n switch (dashStyle) {\n case 'Dash':\n return 1;\n case 'Dot':\n return 2;\n case 'DashDot':\n return 3;\n case 'DashDotDot':\n return 4;\n default:\n return 0;\n }\n };\n PdfExport.prototype.getPenFromContent = function (content) {\n var pen = new PdfPen(new PdfColor(0, 0, 0));\n if (!isNullOrUndefined(content.style) && content.style !== null && !isNullOrUndefined(content.style.penColor)) {\n var penColor = this.hexToRgb(content.style.penColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n return pen;\n };\n PdfExport.prototype.getBrushFromContent = function (content) {\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n /* tslint:disable-next-line:max-line-length */\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n return brush;\n };\n PdfExport.prototype.hexToRgb = function (hex) {\n if (hex === null || hex === '' || hex.length !== 7) {\n throw new Error('please set valid hex value for color...');\n }\n hex = hex.substring(1);\n var bigint = parseInt(hex, 16);\n var r = (bigint >> 16) & 255;\n var g = (bigint >> 8) & 255;\n var b = bigint & 255;\n return { r: r, g: g, b: b };\n };\n PdfExport.prototype.getFontStyle = function (theme) {\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(theme) && theme.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(theme) && theme.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(theme) && theme.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(theme) && theme.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return fontStyle;\n };\n PdfExport.prototype.getBorderStyle = function (border) {\n var borders = new PdfBorders();\n if (!isNullOrUndefined(border)) {\n var borderWidth = border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? borderWidth * 0.75 : undefined;\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(border.color)) {\n var borderColor = this.hexToRgb(border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(border.dashStyle);\n }\n borders.all = pen;\n }\n else {\n borders.all = new PdfPen(new PdfColor(234, 234, 234));\n }\n return borders;\n };\n PdfExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheets class\n * @private\n */\nvar Worksheets = /** @class */ (function (_super) {\n __extends(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\nexport { Worksheets };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Worksheet = /** @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\nexport { Worksheet };\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\nexport { HyperLink };\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\nexport { Grouping };\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\nexport { FreezePane };\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\nexport { MergeCell };\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (mergeCell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var mCell = _a[_i];\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n var intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (_this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n _this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(mergeCell);\n }\n return mergeCell;\n };\n return _this;\n }\n MergeCells.isIntersecting = function (base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n };\n return MergeCells;\n}(Array));\nexport { MergeCells };\n","/**\n * CellStyle class\n * @private\n */\nvar CellStyle = /** @class */ (function () {\n function CellStyle() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 10.5;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.strikeThrough = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n return CellStyle;\n}());\nexport { CellStyle };\n/**\n * Font Class\n * @private\n */\nvar Font = /** @class */ (function () {\n function Font() {\n this.sz = 10.5;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n this.strike = false;\n }\n return Font;\n}());\nexport { Font };\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\nexport { CellXfs };\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\nexport { Alignment };\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\nexport { CellStyleXfs };\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\nexport { CellStyles };\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\nexport { NumFmt };\n/**\n * Border class\n * @private\n */\nvar Border = /** @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\nexport { Border };\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @class */ (function () {\n function Borders() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n return Borders;\n}());\nexport { Borders };\n","/**\n * Column class\n * @private\n */\nvar Column = /** @class */ (function () {\n function Column() {\n }\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Row class\n * @private\n */\nvar Row = /** @class */ (function () {\n function Row() {\n }\n return Row;\n}());\nexport { Row };\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @class */ (function (_super) {\n __extends(Rows, _super);\n function Rows() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (row) {\n _this.push(row);\n };\n return _this;\n }\n return Rows;\n}(Array));\nexport { Rows };\n","/**\n * Image class\n * @private\n */\nvar Image = /** @class */ (function () {\n function Image() {\n }\n return Image;\n}());\nexport { Image };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Worksheet class\n * @private\n */\nvar Cell = /** @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\nexport { Cell };\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\nexport { Cells };\n","/* eslint-disable */\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n Utils.bitReverse = function (value) {\n return (Utils.reverseBits[value & 15] << 12\n | Utils.reverseBits[(value >> 4) & 15] << 8\n | Utils.reverseBits[(value >> 8) & 15] << 4\n | Utils.reverseBits[value >> 12]);\n };\n Utils.bitConverterToInt32 = function (value, index) {\n return value[index] | value[index + 1] << 8 | value[index + 2] << 16 | value[index + 3] << 24;\n };\n Utils.bitConverterToInt16 = function (value, index) {\n return value[index] | value[index + 1] << 8;\n };\n Utils.bitConverterToUInt32 = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterToUInt16 = function (value, index) {\n var uint = new Uint16Array(1);\n uint[0] = (value[index] | value[index + 1] << 8);\n return uint[0];\n };\n Utils.bitConverterUintToInt32 = function (value) {\n var uint = new Int32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToUint = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToInt16 = function (value) {\n var uint = new Int16Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.byteToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.byteIntToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.arrayCopy = function (source, sourceIndex, destination, destinationIndex, dataToCopy) {\n var temp = new Uint8Array(source.buffer, sourceIndex);\n var data = temp.subarray(0, dataToCopy);\n destination.set(data, destinationIndex);\n };\n Utils.mergeArray = function (arrayOne, arrayTwo) {\n var mergedArray = new Uint8Array(arrayOne.length + arrayTwo.length);\n mergedArray.set(arrayOne);\n mergedArray.set(arrayTwo, arrayOne.length);\n return mergedArray;\n };\n /**\n * @private\n */\n Utils.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var encode1;\n var encode2;\n var encode3;\n var encode4;\n var count = 0;\n var resultIndex = 0;\n /*let dataUrlPrefix: string = 'data:';*/\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (input.charAt(input.length - 2) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error('Invalid base64 input, bad content length.');\n }\n var output = new Uint8Array(totalLength | 0);\n while (count < input.length) {\n encode1 = keyStr.indexOf(input.charAt(count++));\n encode2 = keyStr.indexOf(input.charAt(count++));\n encode3 = keyStr.indexOf(input.charAt(count++));\n encode4 = keyStr.indexOf(input.charAt(count++));\n chr1 = (encode1 << 2) | (encode2 >> 4);\n chr2 = ((encode2 & 15) << 4) | (encode3 >> 2);\n chr3 = ((encode3 & 3) << 6) | encode4;\n output[resultIndex++] = chr1;\n if (encode3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (encode4 !== 64) {\n output[resultIndex++] = chr3;\n }\n }\n return output;\n };\n Utils.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n Utils.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return Utils;\n}());\nexport { Utils };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { Utils } from './index';\nvar DecompressorHuffmanTree = /** @class */ (function () {\n function DecompressorHuffmanTree(lengths) {\n this.buildTree(lengths);\n }\n DecompressorHuffmanTree.init = function () {\n var lengths;\n var index;\n // Generate huffman tree for lengths.\n lengths = new Uint8Array(288);\n index = 0;\n while (index < 144) {\n lengths[index++] = 8;\n }\n while (index < 256) {\n lengths[index++] = 9;\n }\n while (index < 280) {\n lengths[index++] = 7;\n }\n while (index < 288) {\n lengths[index++] = 8;\n }\n DecompressorHuffmanTree.m_LengthTree = new DecompressorHuffmanTree(lengths);\n // Generate huffman tree for distances.\n lengths = new Uint8Array(32);\n index = 0;\n while (index < 32) {\n lengths[index++] = 5;\n }\n DecompressorHuffmanTree.m_DistanceTree = new DecompressorHuffmanTree(lengths);\n };\n /// \n /// Prepares data for generating huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Array of code lengths.\n /// Calculated tree size.\n /// Code.\n DecompressorHuffmanTree.prototype.prepareData = function (blCount, nextCode, lengths) {\n var code = 0;\n var treeSize = 512;\n // Count number of codes for each code length.\n for (var i = 0; i < lengths.length; i++) {\n var length_1 = lengths[i];\n if (length_1 > 0) {\n blCount[length_1]++;\n }\n }\n for (var bits = 1; bits <= DecompressorHuffmanTree.MAX_BITLEN; bits++) {\n nextCode[bits] = code;\n code += blCount[bits] << (16 - bits);\n if (bits >= 10) {\n var start = nextCode[bits] & 0x1ff80;\n var end = code & 0x1ff80;\n treeSize += (end - start) >> (16 - bits);\n }\n }\n /* if( code != 65536 )\n throw new ZipException( \"Code lengths don't add up properly.\" );*/\n return { 'code': code, 'treeSize': treeSize };\n };\n /// \n /// Generates huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Precalculated code.\n /// Array of code lengths.\n /// Calculated size of the tree.\n /// Generated tree.\n DecompressorHuffmanTree.prototype.treeFromData = function (blCount, nextCode, lengths, code, treeSize) {\n var tree = new Int16Array(treeSize);\n var pointer = 512;\n var increment = 1 << 7;\n for (var bits = DecompressorHuffmanTree.MAX_BITLEN; bits >= 10; bits--) {\n var end = code & 0x1ff80;\n code -= blCount[bits] << (16 - bits);\n var start = code & 0x1ff80;\n for (var i = start; i < end; i += increment) {\n tree[Utils.bitReverse(i)] = Utils.bitConverterInt32ToInt16((-pointer << 4) | bits);\n pointer += 1 << (bits - 9);\n }\n }\n for (var i = 0; i < lengths.length; i++) {\n var bits = lengths[i];\n if (bits == 0) {\n continue;\n }\n code = nextCode[bits];\n var revcode = Utils.bitReverse(code);\n if (bits <= 9) {\n do {\n tree[revcode] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < 512);\n }\n else {\n var subTree = tree[revcode & 511];\n var treeLen = 1 << (subTree & 15);\n subTree = -(subTree >> 4);\n do {\n tree[subTree | (revcode >> 9)] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < treeLen);\n }\n nextCode[bits] = code + (1 << (16 - bits));\n }\n return tree;\n };\n /// \n /// Builds huffman tree from array of code lengths.\n /// \n /// Array of code lengths.\n DecompressorHuffmanTree.prototype.buildTree = function (lengths) {\n // Count of codes for each code length.\n var blCount = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n // Numerical value of the smallest code for each code length.\n var nextCode = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n var prepareData = this.prepareData(blCount, nextCode, lengths);\n this.m_Tree = this.treeFromData(blCount, nextCode, lengths, prepareData.code, prepareData.treeSize);\n };\n /// \n /// Reads and decompresses one symbol.\n /// \n /// \n /// \n DecompressorHuffmanTree.prototype.unpackSymbol = function (input) {\n var lookahead;\n var symbol;\n if ((lookahead = input.peekBits(9)) >= 0) {\n if ((symbol = this.m_Tree[lookahead]) >= 0) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n var subtree = -(symbol >> 4);\n var bitlen = symbol & 15;\n if ((lookahead = input.peekBits(bitlen)) >= 0) {\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n if ((symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[lookahead];\n if (symbol >= 0 && (symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n };\n Object.defineProperty(DecompressorHuffmanTree, \"lengthTree\", {\n /// \n /// GET huffman tree for encoding and decoding lengths.\n /// \n get: function () {\n return this.m_LengthTree;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DecompressorHuffmanTree, \"distanceTree\", {\n /// \n /// GET huffman tree for encoding and decoding distances.\n /// \n get: function () {\n return this.m_DistanceTree;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Maximum count of bits.\n /// \n DecompressorHuffmanTree.MAX_BITLEN = 15;\n return DecompressorHuffmanTree;\n}());\nexport { DecompressorHuffmanTree };\n/* eslint-enable */ \n","/* eslint-disable */\n/// \n/// Checksum calculator, based on Adler32 algorithm.\n/// \nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Current checksum.\n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumUpdate = function (checksum, buffer, offset, length) {\n var checkSumUInt = checksum;\n var s1 = checkSumUInt & 65535;\n var s2 = checkSumUInt >> this.DEF_CHECKSUM_BIT_OFFSET;\n while (length > 0) {\n var steps = Math.min(length, this.DEF_CHECKSUM_ITERATIONSCOUNT);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (buffer[offset++] & 255);\n s2 = s2 + s1;\n }\n s1 %= this.DEF_CHECKSUM_BASE;\n s2 %= this.DEF_CHECKSUM_BASE;\n }\n checkSumUInt = (s2 << this.DEF_CHECKSUM_BIT_OFFSET) | s1;\n checksum = checkSumUInt;\n };\n /// \n /// Generates checksum by calculating checksum of the\n /// given buffer.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumGenerate = function (buffer, offset, length) {\n var result = 1;\n ChecksumCalculator.ChecksumUpdate(result, buffer, offset, length);\n return result;\n };\n /// \n /// Bits offset, used in adler checksum calculation.\n /// \n ChecksumCalculator.DEF_CHECKSUM_BIT_OFFSET = 16;\n /// \n /// Lagrest prime, less than 65535\n /// \n ChecksumCalculator.DEF_CHECKSUM_BASE = 65521;\n /// \n /// Count of iteration used in calculated of the adler checksumm.\n /// \n ChecksumCalculator.DEF_CHECKSUM_ITERATIONSCOUNT = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { DecompressorHuffmanTree } from './decompressor-huffman-tree';\nimport { Utils } from './utils';\nimport { ChecksumCalculator } from './checksum-calculator';\nvar CompressedStreamReader = /** @class */ (function () {\n function CompressedStreamReader(stream, bNoWrap) {\n /// \n /// Code lengths for the code length alphabet.\n /// \n this.defaultHuffmanDynamicTree = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n /// \n /// Mask for compression method to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_METHOD_MASK = 15 << 8;\n /// \n /// Mask for compression info to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_INFO_MASK = 240 << 8;\n /// \n /// Mask for check bits to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FCHECK = 31;\n /// \n /// Mask for dictionary presence to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FDICT = 32;\n /// \n /// Mask for compression level to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FLEVEL = 192;\n /// \n /// Maximum size of the data window.\n /// \n this.DEF_MAX_WINDOW_SIZE = 65535;\n /// \n /// Maximum length of the repeatable block.\n /// \n this.DEF_HUFFMAN_REPEATE_MAX = 258;\n /// \n /// End of the block sign.\n /// \n this.DEF_HUFFMAN_END_BLOCK = 256;\n /// \n /// Minimal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE = 257;\n /// \n /// Maximal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE = 285;\n /// \n /// Maximal distance code.\n /// \n this.DEF_HUFFMAN_DISTANCE_MAXIMUMCODE = 29;\n /// \n /// Currently calculated checksum,\n /// based on Adler32 algorithm.\n /// \n this.mCheckSum = 1;\n /// \n /// Currently read 4 bytes.\n /// \n this.tBuffer = 0;\n /// \n /// Count of bits that are in buffer.\n /// \n this.mBufferedBits = 0;\n /// \n /// Temporary buffer.\n /// \n this.mTempBuffer = new Uint8Array(4);\n /// \n /// 32k buffer for unpacked data.\n /// \n this.mBlockBuffer = new Uint8Array(this.DEF_MAX_WINDOW_SIZE);\n /// \n /// No wrap mode.\n /// \n this.mbNoWrap = false;\n /// \n /// Window size, can not be larger than 32k.\n /// \n this.mWindowSize = 0;\n /// \n /// Current position in output stream.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mCurrentPosition = 0;\n /// \n /// Data length.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mDataLength = 0;\n /// \n /// Specifies wheather next block can to be read.\n /// Reading can be denied because the header of the last block have been read.\n /// \n this.mbCanReadNextBlock = true;\n /// \n /// Specifies wheather user can read more data from stream.\n /// \n this.mbCanReadMoreData = true;\n /// \n /// Specifies wheather checksum has been read.\n /// \n this.mbCheckSumRead = false;\n if (stream == null) {\n throw new DOMException('stream');\n }\n if (stream.length === 0) {\n throw new DOMException('stream - string can not be empty');\n }\n DecompressorHuffmanTree.init();\n this.mInputStream = new Stream(stream);\n this.mbNoWrap = bNoWrap;\n if (!this.mbNoWrap) {\n this.readZLibHeader();\n }\n this.decodeBlockHeader();\n }\n Object.defineProperty(CompressedStreamReader.prototype, \"mBuffer\", {\n get: function () {\n return this.tBuffer;\n },\n set: function (value) {\n this.tBuffer = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n /// \n /// Reads specified count of bits without adjusting position.\n /// \n /// Count of bits to be read.\n /// Read value.\n CompressedStreamReader.prototype.peekBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count > 32) {\n throw new DOMException('count', 'Count of bits is too large.');\n }\n // If buffered data is not enough to give result,\n // fill buffer.\n if (this.mBufferedBits < count) {\n this.fillBuffer();\n }\n // If you want to read 4 bytes and there is partial data in\n // buffer, than you will fail.\n if (this.mBufferedBits < count) {\n return -1;\n }\n // Create bitmask for reading of count bits\n var bitMask = ~(4294967295 << count);\n var result = Utils.bitConverterUintToInt32(this.mBuffer & bitMask);\n //Debug.WriteLine( /*new string( ' ', 32 - mBufferedBits + (int)( ( 32 - mBufferedBits ) / 8 ) ) + BitsToString( (int)mBuffer, mBufferedBits ) + \" \" + BitsToString( result, count ) +*/ \" \" + result.ToString() );\n return result;\n };\n CompressedStreamReader.prototype.fillBuffer = function () {\n var length = 4 - (this.mBufferedBits >> 3) -\n (((this.mBufferedBits & 7) !== 0) ? 1 : 0);\n if (length === 0) {\n return;\n }\n //TODO: fix this\n var bytesRead = this.mInputStream.read(this.mTempBuffer, 0, length);\n for (var i = 0; i < bytesRead; i++) {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer |\n (Utils.bitConverterInt32ToUint(this.mTempBuffer[i] << this.mBufferedBits)));\n this.mBufferedBits += 8;\n }\n //TODO: fix this\n };\n /// \n /// Skips specified count of bits.\n /// \n /// Count of bits to be skipped.\n CompressedStreamReader.prototype.skipBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count === 0) {\n return;\n }\n if (count >= this.mBufferedBits) {\n count -= this.mBufferedBits;\n this.mBufferedBits = 0;\n this.mBuffer = 0;\n // if something left, skip it.\n if (count > 0) {\n // Skip entire bytes.\n this.mInputStream.position += (count >> 3); //TODO: fix this\n count &= 7;\n // Skip bits.\n if (count > 0) {\n this.fillBuffer();\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n }\n }\n else {\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n };\n Object.defineProperty(CompressedStreamReader.prototype, \"availableBits\", {\n get: function () {\n return this.mBufferedBits;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Reads ZLib header with compression method and flags.\n /// \n CompressedStreamReader.prototype.readZLibHeader = function () {\n // first 8 bits - compression Method and flags\n // 8 other - flags\n var header = this.readInt16();\n //Debug.WriteLine( BitsToString( header ) );\n if (header === -1) {\n throw new DOMException('Header of the stream can not be read.');\n }\n if (header % 31 !== 0) {\n throw new DOMException('Header checksum illegal');\n }\n if ((header & this.DEF_HEADER_METHOD_MASK) !== (8 << 8)) {\n throw new DOMException('Unsupported compression method.');\n }\n this.mWindowSize = Math.pow(2, ((header & this.DEF_HEADER_INFO_MASK) >> 12) + 8);\n if (this.mWindowSize > 65535) {\n throw new DOMException('Unsupported window size for deflate compression method.');\n }\n if ((header & this.DEF_HEADER_FLAGS_FDICT) >> 5 === 1) {\n // Get dictionary.\n throw new DOMException('Custom dictionary is not supported at the moment.');\n }\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16 = function () {\n var result = (this.readBits(8) << 8);\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Reads specified count of bits from stream.\n /// \n /// Count of bits to be read.\n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readBits = function (count) {\n var result = this.peekBits(count);\n if (result === -1) {\n return -1;\n }\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n return result;\n };\n /// \n /// Reads and decodes block of data.\n /// \n /// True if buffer was empty and new data was read, otherwise - False.\n CompressedStreamReader.prototype.decodeBlockHeader = function () {\n if (!this.mbCanReadNextBlock) {\n return false;\n }\n var bFinalBlock = this.readBits(1);\n if (bFinalBlock === -1) {\n return false;\n }\n var blockType = this.readBits(2);\n if (blockType === -1) {\n return false;\n }\n this.mbCanReadNextBlock = (bFinalBlock === 0);\n // ChecksumReset();\n switch (blockType) {\n case 0:\n // Uncompressed data\n this.mbReadingUncompressed = true;\n this.skipToBoundary();\n var length_1 = this.readInt16Inverted();\n var lengthComplement = this.readInt16Inverted();\n if (length_1 !== (lengthComplement ^ 0xffff)) {\n throw new DOMException('Wrong block length.');\n }\n if (length_1 > 65535) {\n throw new DOMException('Uncompressed block length can not be more than 65535.');\n }\n this.mUncompressedDataLength = length_1;\n this.mCurrentLengthTree = null;\n this.mCurrentDistanceTree = null;\n break;\n case 1:\n // Compressed data with fixed huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n this.mCurrentLengthTree = DecompressorHuffmanTree.lengthTree;\n this.mCurrentDistanceTree = DecompressorHuffmanTree.distanceTree;\n break;\n case 2:\n // Compressed data with dynamic huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n var trees = this.decodeDynamicHeader(this.mCurrentLengthTree, this.mCurrentDistanceTree);\n this.mCurrentLengthTree = trees.lengthTree;\n this.mCurrentDistanceTree = trees.distanceTree;\n break;\n default:\n throw new DOMException('Wrong block type.');\n }\n return true;\n };\n /// \n /// Discards left-most partially used byte.\n /// \n CompressedStreamReader.prototype.skipToBoundary = function () {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> (this.mBufferedBits & 7));\n this.mBufferedBits &= ~7;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16Inverted = function () {\n var result = (this.readBits(8));\n result |= this.readBits(8) << 8;\n return result;\n };\n /// \n /// Reades dynamic huffman codes from block header.\n /// \n /// Literals/Lengths tree.\n /// Distances tree.\n CompressedStreamReader.prototype.decodeDynamicHeader = function (lengthTree, distanceTree) {\n var bLastSymbol = 0;\n var iLengthsCount = this.readBits(5);\n var iDistancesCount = this.readBits(5);\n var iCodeLengthsCount = this.readBits(4);\n if (iLengthsCount < 0 || iDistancesCount < 0 || iCodeLengthsCount < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n iLengthsCount += 257;\n iDistancesCount += 1;\n var iResultingCodeLengthsCount = iLengthsCount + iDistancesCount;\n var arrResultingCodeLengths = new Uint8Array(iResultingCodeLengthsCount);\n var arrDecoderCodeLengths = new Uint8Array(19);\n iCodeLengthsCount += 4;\n var iCurrentCode = 0;\n while (iCurrentCode < iCodeLengthsCount) {\n var len = this.readBits(3);\n if (len < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n arrDecoderCodeLengths[this.defaultHuffmanDynamicTree[iCurrentCode++]] = len;\n }\n var treeInternalDecoder = new DecompressorHuffmanTree(arrDecoderCodeLengths);\n iCurrentCode = 0;\n for (;;) {\n var symbol = void 0;\n var bNeedBreak = false;\n symbol = treeInternalDecoder.unpackSymbol(this);\n while ((symbol & ~15) === 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol = symbol;\n if (iCurrentCode === iResultingCodeLengthsCount) {\n bNeedBreak = true;\n break;\n }\n symbol = treeInternalDecoder.unpackSymbol(this);\n }\n if (bNeedBreak) {\n break;\n }\n if (symbol < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n if (symbol >= 17) {\n bLastSymbol = 0;\n }\n else if (iCurrentCode === 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n var miRepSymbol = symbol - 16;\n var bits = CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS[miRepSymbol];\n var count = this.readBits(bits);\n if (count < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n count += CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS[miRepSymbol];\n if (iCurrentCode + count > iResultingCodeLengthsCount) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n while (count-- > 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol;\n }\n if (iCurrentCode === iResultingCodeLengthsCount) {\n break;\n }\n }\n var tempArray = new Uint8Array(iLengthsCount);\n tempArray.set(arrResultingCodeLengths.subarray(0, iLengthsCount), 0);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n //Array.copy( arrResultingCodeLengths, 0, tempArray, 0, iLengthsCount );\n lengthTree = new DecompressorHuffmanTree(tempArray);\n tempArray = arrResultingCodeLengths.slice(iLengthsCount, iLengthsCount + iDistancesCount);\n //Array.copy( arrResultingCodeLengths, iLengthsCount, tempArray, 0, iDistancesCount );\n distanceTree = new DecompressorHuffmanTree(tempArray);\n return { 'lengthTree': lengthTree, 'distanceTree': distanceTree };\n };\n /// \n /// Decodes huffman codes.\n /// \n /// True if some data was read.\n CompressedStreamReader.prototype.readHuffman = function () {\n var free = this.DEF_MAX_WINDOW_SIZE - (this.mDataLength - this.mCurrentPosition);\n var dataRead = false;\n //long maxdistance = DEF_MAX_WINDOW_SIZE >> 1;\n var readdata = {};\n // DEF_HUFFMAN_REPEATE_MAX - longest repeatable block, we should always reserve space for it because\n // if we should not, we will have buffer overrun.\n while (free >= this.DEF_HUFFMAN_REPEATE_MAX) {\n var symbol = void 0;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n // Only codes 0..255 are valid independent symbols.\n while (((symbol) & ~0xff) === 0) {\n readdata[(this.mDataLength + 1) % this.DEF_MAX_WINDOW_SIZE] = symbol;\n this.mBlockBuffer[this.mDataLength++ % this.DEF_MAX_WINDOW_SIZE] = symbol;\n dataRead = true;\n if (--free < this.DEF_HUFFMAN_REPEATE_MAX) {\n return true;\n }\n //if( (mDataLength - mCurrentPosition ) < maxdistance ) return true;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n }\n if (symbol < this.DEF_HUFFMAN_LENGTH_MINIMUMCODE) {\n if (symbol < this.DEF_HUFFMAN_END_BLOCK) {\n throw new DOMException('Illegal code.');\n }\n var numDataRead = dataRead ? 1 : 0;\n this.mbCanReadMoreData = this.decodeBlockHeader();\n var numReadMore = (this.mbCanReadMoreData) ? 1 : 0;\n return (numDataRead | numReadMore) ? true : false;\n }\n if (symbol > this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE) {\n throw new DOMException('Illegal repeat code length.');\n }\n var iRepeatLength = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n var iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatLength += extra;\n }\n // Unpack repeat distance.\n symbol = this.mCurrentDistanceTree.unpackSymbol(this);\n if (symbol < 0 || symbol > CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE.length) {\n throw new DOMException('Wrong distance code.');\n }\n var iRepeatDistance = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE[symbol];\n iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION[symbol];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatDistance += extra;\n }\n // Copy data in slow repeat mode\n for (var i = 0; i < iRepeatLength; i++) {\n this.mBlockBuffer[this.mDataLength % this.DEF_MAX_WINDOW_SIZE] =\n this.mBlockBuffer[(this.mDataLength - iRepeatDistance) % this.DEF_MAX_WINDOW_SIZE];\n this.mDataLength++;\n free--;\n }\n dataRead = true;\n }\n return dataRead;\n };\n /// \n /// Reads data to buffer.\n /// \n /// Output buffer for data.\n /// Offset in output data.\n /// Length of the data to be read.\n /// Count of bytes actually read.\n CompressedStreamReader.prototype.read = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset', 'Offset does not belong to specified buffer.');\n }\n if (length < 0 || length > buffer.length - offset) {\n throw new DOMException('length', 'Length is illegal.');\n }\n var initialLength = length;\n while (length > 0) {\n // Read from internal buffer.\n if (this.mCurrentPosition < this.mDataLength) {\n // Position in buffer array.\n var inBlockPosition = (this.mCurrentPosition % this.DEF_MAX_WINDOW_SIZE);\n // We can not read more than we have in buffer at once,\n // and we not read more than till the array end.\n var dataToCopy = Math.min(this.DEF_MAX_WINDOW_SIZE - inBlockPosition, (this.mDataLength - this.mCurrentPosition));\n // Reading not more, than the rest of the buffer.\n dataToCopy = Math.min(dataToCopy, length);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n // Copy data.\n //Array.Copy( mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy );\n //buffer.set(this.mBlockBuffer.slice(inBlockPosition, dataToCopy), offset);\n Utils.arrayCopy(this.mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy);\n // Correct position, length,\n this.mCurrentPosition += dataToCopy;\n offset += dataToCopy;\n length -= dataToCopy;\n }\n else {\n if (!this.mbCanReadMoreData) {\n break;\n }\n var oldDataLength = this.mDataLength;\n if (!this.mbReadingUncompressed) {\n if (!this.readHuffman()) {\n break;\n }\n }\n else {\n if (this.mUncompressedDataLength === 0) {\n // If there is no more data in stream, just exit.\n this.mbCanReadMoreData = this.decodeBlockHeader();\n if (!(this.mbCanReadMoreData)) {\n break;\n }\n }\n else {\n // Position of the data end in block buffer.\n var inBlockPosition = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n var dataToRead = Math.min(this.mUncompressedDataLength, this.DEF_MAX_WINDOW_SIZE - inBlockPosition);\n var dataRead = this.readPackedBytes(this.mBlockBuffer, inBlockPosition, dataToRead);\n if (dataToRead !== dataRead) {\n throw new DOMException('Not enough data in stream.');\n }\n this.mUncompressedDataLength -= dataRead;\n this.mDataLength += dataRead;\n }\n }\n if (oldDataLength < this.mDataLength) {\n var start = (oldDataLength % this.DEF_MAX_WINDOW_SIZE);\n var end = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n if (start < end) {\n this.checksumUpdate(this.mBlockBuffer, start, end - start);\n }\n else {\n this.checksumUpdate(this.mBlockBuffer, start, this.DEF_MAX_WINDOW_SIZE - start);\n if (end > 0) {\n this.checksumUpdate(this.mBlockBuffer, 0, end);\n }\n }\n }\n }\n }\n if (!this.mbCanReadMoreData && !this.mbCheckSumRead && !this.mbNoWrap) {\n this.skipToBoundary();\n var checkSum = this.readInt32();\n //Debug.Assert( checkSum == mCheckSum, \"\" );\n if (checkSum !== this.mCheckSum) {\n throw new DOMException('Checksum check failed.');\n }\n this.mbCheckSumRead = true;\n }\n return initialLength - length;\n };\n /// \n /// Reads array of bytes.\n /// \n /// Output buffer.\n /// Offset in output buffer.\n /// Length of the data to be read.\n /// Count of bytes actually read to the buffer.\n CompressedStreamReader.prototype.readPackedBytes = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset\", \"Offset can not be less than zero or greater than buffer length - 1.');\n }\n if (length < 0) {\n throw new DOMException('length\", \"Length can not be less than zero.');\n }\n if (length > buffer.length - offset) {\n throw new DOMException('length\", \"Length is too large.');\n }\n if ((this.mBufferedBits & 7) !== 0) {\n throw new DOMException('Reading of unalligned data is not supported.');\n }\n if (length === 0) {\n return 0;\n }\n var result = 0;\n while (this.mBufferedBits > 0 && length > 0) {\n buffer[offset++] = (this.mBuffer);\n this.mBufferedBits -= 8;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> 8);\n length--;\n result++;\n }\n if (length > 0) {\n //TODO: Fix this.\n result += this.mInputStream.read(buffer, offset, length);\n }\n return result;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt32 = function () {\n var result = this.readBits(8) << 24;\n result |= this.readBits(8) << 16;\n result |= this.readBits(8) << 8;\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n CompressedStreamReader.prototype.checksumUpdate = function (buffer, offset, length) {\n ChecksumCalculator.ChecksumUpdate(this.mCheckSum, buffer, offset, length);\n };\n CompressedStreamReader.DEF_REVERSE_BITS = new Uint8Array([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]);\n /// \n /// Minimum count of repetions.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS = [3, 3, 11];\n /// \n /// Bits, that responds for different repetion modes.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS = [2, 3, 7];\n /// \n /// Length bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE = [\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258\n ];\n /// \n /// Length extended bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION = [\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,\n 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0\n ];\n /// \n /// Distance bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE = [\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577\n ];\n /// \n /// Distance extanded bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION = [\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,\n 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,\n 12, 12, 13, 13\n ];\n return CompressedStreamReader;\n}());\nexport { CompressedStreamReader };\nvar Stream = /** @class */ (function () {\n function Stream(input) {\n this.position = 0;\n this.inputStream = new Uint8Array(input.buffer);\n }\n Object.defineProperty(Stream.prototype, \"length\", {\n get: function () {\n return this.inputStream.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n Stream.prototype.read = function (buffer, start, length) {\n var temp = new Uint8Array(this.inputStream.buffer, this.position + start);\n var data = temp.subarray(0, length);\n buffer.set(data, 0);\n this.position += data.byteLength;\n return data.byteLength;\n };\n Stream.prototype.readByte = function () {\n return this.inputStream[this.position++];\n };\n Stream.prototype.write = function (inputBuffer, offset, count) {\n Utils.arrayCopy(inputBuffer, 0, this.inputStream, this.position + offset, count);\n // this.inputStream = new Uint8Array(this.inputStream.buffer, this.position + offset);\n // this.inputStream.set(inputBuffer, offset);\n this.position += count;\n };\n Stream.prototype.toByteArray = function () {\n return new Uint8Array(this.inputStream.buffer);\n };\n return Stream;\n}());\nexport { Stream };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { CompressedStreamWriter, Stream, CompressedStreamReader } from './index';\nimport { Save } from '@syncfusion/ej2-file-utils';\nimport { Utils } from './utils';\nvar CRC32TABLE = [];\n/// \n/// Size of the int value in bytes.\n/// \nvar INT_SIZE = 4;\n/// \n/// Size of the short value in bytes.\n/// \nvar SHORT_SIZE = 2;\n/// \n/// End of central directory signature.\n/// \nvar CentralDirectoryEndSignature = 0x06054b50;\n/// \n/// Offset to the size field in the End of central directory record.\n/// \nvar CentralDirSizeOffset = 12;\n/// \n/// Central header signature.\n/// \nvar CentralHeaderSignature = 0x02014b50;\n/// \n/// Buffer size.\n/// \nvar BufferSize = 4096;\n/**\n * class provide compression library\n * ```typescript\n * let archive = new ZipArchive();\n * archive.compressionLevel = 'Normal';\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * archive.addItem(archiveItem);\n * archive.save(fileName.zip);\n * ```\n */\nvar ZipArchive = /** @class */ (function () {\n /**\n * constructor for creating ZipArchive instance\n */\n function ZipArchive() {\n if (CRC32TABLE.length === 0) {\n ZipArchive.initCrc32Table();\n }\n this.files = [];\n this.level = 'Normal';\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(ZipArchive.prototype, \"items\", {\n get: function () {\n return this.files;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"compressionLevel\", {\n /**\n * gets compression level\n */\n get: function () {\n return this.level;\n },\n /**\n * sets compression level\n */\n set: function (level) {\n this.level = level;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"length\", {\n /**\n * gets items count\n */\n get: function () {\n if (this.files === undefined) {\n return 0;\n }\n return this.files.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * add new item to archive\n * @param {ZipArchiveItem} item - item to be added\n * @returns {void}\n */\n ZipArchive.prototype.addItem = function (item) {\n if (item === null || item === undefined) {\n throw new Error('ArgumentException: item cannot be null or undefined');\n }\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n if (file.name === item.name) {\n throw new Error('item with same name already exist');\n }\n }\n }\n this.files.push(item);\n };\n /**\n * add new directory to archive\n * @param directoryName directoryName to be created\n * @returns {void}\n */\n ZipArchive.prototype.addDirectory = function (directoryName) {\n if (directoryName === null || directoryName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (directoryName.length === 0) {\n throw new Error('ArgumentException: string cannot be empty');\n }\n if (directoryName.slice(-1) !== '/') {\n directoryName += '/';\n }\n if (this.files.indexOf(directoryName) !== -1) {\n throw new Error('item with same name already exist');\n }\n this.files.push(directoryName);\n };\n /**\n * gets item at specified index\n * @param {number} index - item index\n * @returns {ZipArchiveItem}\n */\n ZipArchive.prototype.getItem = function (index) {\n if (index >= 0 && index < this.files.length) {\n return this.files[index];\n }\n return undefined;\n };\n /**\n * determines whether an element is in the collection\n * @param {string | ZipArchiveItem} item - item to search\n * @returns {boolean}\n */\n ZipArchive.prototype.contains = function (item) {\n return this.files.indexOf(item) !== -1 ? true : false;\n };\n ZipArchive.prototype.open = function (base64String) {\n //return promise = new Promise((resolve: Function, reject: Function) => {\n var zipArchive = this;\n var zipByteArray = Utils.encodedString(base64String);\n if (zipByteArray.length == 0)\n throw new DOMException(\"stream\");\n var stream = new Stream(zipByteArray);\n //let lCentralDirEndPosition = this.findValueFromEnd( arrBuffer, Constants.CentralDirectoryEndSignature, 65557 );\n var lCentralDirEndPosition = ZipArchive.findValueFromEnd(stream, CentralDirectoryEndSignature, 65557);\n if (lCentralDirEndPosition < 0)\n throw new DOMException(\"Can't locate end of central directory record. Possible wrong file format or archive is corrupt.\");\n // Step2. Locate central directory and iterate through all items\n stream.position = lCentralDirEndPosition + CentralDirSizeOffset;\n var iCentralDirSize = ZipArchive.ReadInt32(stream);\n var lCentralDirPosition = lCentralDirEndPosition - iCentralDirSize;\n // verify that this is really central directory\n stream.position = lCentralDirPosition;\n this.readCentralDirectoryDataAndExtractItems(stream);\n //});\n // let zipArchive: ZipArchive = this;\n //let promise: Promise;\n // return promise = new Promise((resolve: Function, reject: Function) => {\n // let reader: FileReader = new FileReader();\n // reader.onload = (e: Event) => {\n // let data: Uint8Array = new Uint8Array((e.target as any).result);\n // let zipReader: ZipReader = new ZipReader(data);\n // zipReader.readEntries().then((entries: ZipEntry[]) => {\n // for (let i: number = 0; i < entries.length; i++) {\n // let entry: ZipEntry = entries[i];\n // let item: ZipArchiveItem = new ZipArchiveItem(zipArchive, entry.fileName);\n // item.data = entry.data;\n // item.compressionMethod = entry.compressionMethod;\n // item.crc = entry.crc;\n // item.lastModified = entry.lastModified;\n // item.lastModifiedDate = entry.lastModifiedDate;\n // item.size = entry.size;\n // item.uncompressedSize = entry.uncompressedSize;\n // zipArchive.addItem(item);\n // }\n // resolve(zipArchive);\n // });\n // };\n // reader.readAsArrayBuffer(fileName);\n // });\n };\n /// \n /// Read central directory record from the stream.\n /// \n /// Stream to read from.\n ZipArchive.prototype.readCentralDirectoryDataAndExtractItems = function (stream) {\n if (stream == null)\n throw new DOMException(\"stream\");\n var itemHelper;\n while (ZipArchive.ReadInt32(stream) == CentralHeaderSignature) {\n itemHelper = new ZipArchiveItemHelper();\n itemHelper.readCentralDirectoryData(stream);\n itemHelper;\n // let item: ZipArchiveItem = new ZipArchiveItem(this);\n // item.ReadCentralDirectoryData(stream);\n // m_arrItems.Add(item);\n }\n itemHelper.readData(stream, itemHelper.checkCrc);\n itemHelper.decompressData();\n this.files.push(new ZipArchiveItem(itemHelper.unCompressedStream.buffer, itemHelper.name));\n };\n /**\n * save archive with specified file name\n * @param {string} fileName save archive with specified file name\n * @returns {Promise}\n */\n ZipArchive.prototype.save = function (fileName) {\n if (fileName === null || fileName === undefined || fileName.length === 0) {\n throw new Error('ArgumentException: fileName cannot be null or undefined');\n }\n if (this.files.length === 0) {\n throw new Error('InvalidOperation');\n }\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal(fileName, false).then(function () {\n resolve(zipArchive);\n });\n });\n };\n /**\n * Save archive as blob\n * @return {Promise}\n */\n ZipArchive.prototype.saveAsBlob = function () {\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal('', true).then(function (blob) {\n resolve(blob);\n });\n });\n };\n ZipArchive.prototype.saveInternal = function (fileName, skipFileSave) {\n var _this = this;\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n var zipData = [];\n var dirLength = 0;\n for (var i = 0; i < zipArchive.files.length; i++) {\n var compressedObject = _this.getCompressedData(_this.files[i]);\n compressedObject.then(function (data) {\n dirLength = zipArchive.constructZippedObject(zipData, data, dirLength, data.isDirectory);\n if (zipData.length === zipArchive.files.length) {\n var blob = zipArchive.writeZippedContent(fileName, zipData, dirLength, skipFileSave);\n resolve(blob);\n }\n });\n }\n });\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchive.prototype.destroy = function () {\n if (this.files !== undefined && this.files.length > 0) {\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n file.destroy();\n }\n file = undefined;\n }\n this.files = [];\n }\n this.files = undefined;\n this.level = undefined;\n };\n ZipArchive.prototype.getCompressedData = function (item) {\n var zipArchive = this;\n var promise = new Promise(function (resolve, reject) {\n if (item instanceof ZipArchiveItem) {\n var reader_1 = new FileReader();\n reader_1.onload = function () {\n var input = new Uint8Array(reader_1.result);\n var data = {\n fileName: item.name, crc32Value: 0, compressedData: [],\n compressedSize: undefined, uncompressedDataSize: input.length, compressionType: undefined,\n isDirectory: false\n };\n if (zipArchive.level === 'Normal') {\n zipArchive.compressData(input, data, CRC32TABLE);\n var length_1 = 0;\n for (var i = 0; i < data.compressedData.length; i++) {\n length_1 += data.compressedData[i].length;\n }\n data.compressedSize = length_1;\n data.compressionType = '\\x08\\x00'; //Deflated = 8\n }\n else {\n data.compressedSize = input.length;\n data.crc32Value = zipArchive.calculateCrc32Value(0, input, CRC32TABLE);\n data.compressionType = '\\x00\\x00'; // Stored = 0\n data.compressedData.push(input);\n }\n resolve(data);\n };\n reader_1.readAsArrayBuffer(item.data);\n }\n else {\n var data = {\n fileName: item, crc32Value: 0, compressedData: '', compressedSize: 0, uncompressedDataSize: 0,\n compressionType: '\\x00\\x00', isDirectory: true\n };\n resolve(data);\n }\n });\n return promise;\n };\n ZipArchive.prototype.compressData = function (input, data, crc32Table) {\n var compressor = new CompressedStreamWriter(true);\n var currentIndex = 0;\n var nextIndex = 0;\n do {\n if (currentIndex >= input.length) {\n compressor.close();\n break;\n }\n nextIndex = Math.min(input.length, currentIndex + 16384);\n var subArray = input.subarray(currentIndex, nextIndex);\n data.crc32Value = this.calculateCrc32Value(data.crc32Value, subArray, crc32Table);\n compressor.write(subArray, 0, nextIndex - currentIndex);\n currentIndex = nextIndex;\n } while (currentIndex <= input.length);\n data.compressedData = compressor.compressedData;\n compressor.destroy();\n };\n ZipArchive.prototype.constructZippedObject = function (zipParts, data, dirLength, isDirectory) {\n var extFileAttr = 0;\n var date = new Date();\n if (isDirectory) {\n extFileAttr = extFileAttr | 0x00010; // directory flag\n }\n extFileAttr = extFileAttr | (0 & 0x3F);\n var header = this.writeHeader(data, date);\n var localHeader = 'PK\\x03\\x04' + header + data.fileName;\n var centralDir = this.writeCentralDirectory(data, header, dirLength, extFileAttr);\n zipParts.push({ localHeader: localHeader, centralDir: centralDir, compressedData: data });\n return dirLength + localHeader.length + data.compressedSize;\n };\n ZipArchive.prototype.writeHeader = function (data, date) {\n var zipHeader = '';\n zipHeader += '\\x0A\\x00' + '\\x00\\x00'; // version needed to extract & general purpose bit flag\n zipHeader += data.compressionType; // compression method Deflate=8,Stored=0\n zipHeader += this.getBytes(this.getModifiedTime(date), 2); // last modified Time\n zipHeader += this.getBytes(this.getModifiedDate(date), 2); // last modified date\n zipHeader += this.getBytes(data.crc32Value, 4); // crc-32 value\n zipHeader += this.getBytes(data.compressedSize, 4); // compressed file size\n zipHeader += this.getBytes(data.uncompressedDataSize, 4); // uncompressed file size\n zipHeader += this.getBytes(data.fileName.length, 2); // file name length\n zipHeader += this.getBytes(0, 2); // extra field length\n return zipHeader;\n };\n ZipArchive.prototype.writeZippedContent = function (fileName, zipData, localDirLen, skipFileSave) {\n var cenDirLen = 0;\n var buffer = [];\n for (var i = 0; i < zipData.length; i++) {\n var item = zipData[i];\n cenDirLen += item.centralDir.length;\n buffer.push(this.getArrayBuffer(item.localHeader));\n while (item.compressedData.compressedData.length) {\n buffer.push(item.compressedData.compressedData.shift().buffer);\n }\n }\n for (var i = 0; i < zipData.length; i++) {\n buffer.push(this.getArrayBuffer(zipData[i].centralDir));\n }\n buffer.push(this.getArrayBuffer(this.writeFooter(zipData, cenDirLen, localDirLen)));\n var blob = new Blob(buffer, { type: 'application/zip' });\n if (!skipFileSave) {\n Save.save(fileName, blob);\n }\n return blob;\n };\n ZipArchive.prototype.writeCentralDirectory = function (data, localHeader, offset, externalFileAttribute) {\n var directoryHeader = 'PK\\x01\\x02' +\n this.getBytes(0x0014, 2) + localHeader + // inherit from file header\n this.getBytes(0, 2) + // comment length\n '\\x00\\x00' + '\\x00\\x00' + // internal file attributes \n this.getBytes(externalFileAttribute, 4) + // external file attributes\n this.getBytes(offset, 4) + // local fileHeader relative offset\n data.fileName;\n return directoryHeader;\n };\n ZipArchive.prototype.writeFooter = function (zipData, centralLength, localLength) {\n var dirEnd = 'PK\\x05\\x06' + '\\x00\\x00' + '\\x00\\x00' +\n this.getBytes(zipData.length, 2) + this.getBytes(zipData.length, 2) +\n this.getBytes(centralLength, 4) + this.getBytes(localLength, 4) +\n this.getBytes(0, 2);\n return dirEnd;\n };\n ZipArchive.prototype.getArrayBuffer = function (input) {\n var a = new Uint8Array(input.length);\n for (var j = 0; j < input.length; ++j) {\n a[j] = input.charCodeAt(j) & 0xFF;\n }\n return a.buffer;\n };\n ZipArchive.prototype.getBytes = function (value, offset) {\n var bytes = '';\n for (var i = 0; i < offset; i++) {\n bytes += String.fromCharCode(value & 0xff);\n value = value >>> 8;\n }\n return bytes;\n };\n ZipArchive.prototype.getModifiedTime = function (date) {\n var modTime = date.getHours();\n modTime = modTime << 6;\n modTime = modTime | date.getMinutes();\n modTime = modTime << 5;\n return modTime = modTime | date.getSeconds() / 2;\n };\n ZipArchive.prototype.getModifiedDate = function (date) {\n var modiDate = date.getFullYear() - 1980;\n modiDate = modiDate << 4;\n modiDate = modiDate | (date.getMonth() + 1);\n modiDate = modiDate << 5;\n return modiDate = modiDate | date.getDate();\n };\n ZipArchive.prototype.calculateCrc32Value = function (crc32Value, input, crc32Table) {\n crc32Value ^= -1;\n for (var i = 0; i < input.length; i++) {\n crc32Value = (crc32Value >>> 8) ^ crc32Table[(crc32Value ^ input[i]) & 0xFF];\n }\n return (crc32Value ^ (-1));\n };\n /**\n * construct cyclic redundancy code table\n * @private\n */\n ZipArchive.initCrc32Table = function () {\n var i;\n for (var j = 0; j < 256; j++) {\n i = j;\n for (var k = 0; k < 8; k++) {\n i = ((i & 1) ? (0xEDB88320 ^ (i >>> 1)) : (i >>> 1));\n }\n CRC32TABLE[j] = i;\n }\n };\n ZipArchive.findValueFromEnd = function (stream, value, maxCount) {\n if (stream == null)\n throw new DOMException(\"stream\");\n // if( !stream.CanSeek || !stream.CanRead )\n // throw new ArgumentOutOfRangeException( \"We need to have seekable and readable stream.\" );\n // read last 4 bytes and compare with required value\n var lStreamSize = stream.inputStream.buffer.byteLength;\n if (lStreamSize < 4)\n return -1;\n var arrBuffer = new Uint8Array(4);\n var lLastPos = Math.max(0, lStreamSize - maxCount);\n var lCurrentPosition = lStreamSize - 1 - INT_SIZE;\n stream.position = lCurrentPosition;\n stream.read(arrBuffer, 0, INT_SIZE);\n var uiCurValue = arrBuffer[0];\n var bFound = (uiCurValue == value);\n if (!bFound) {\n while (lCurrentPosition > lLastPos) {\n // remove unnecessary byte and replace it with new value.\n uiCurValue <<= 8;\n lCurrentPosition--;\n stream.position = lCurrentPosition;\n uiCurValue += stream.readByte();\n if (uiCurValue == value) {\n bFound = true;\n break;\n }\n }\n }\n return bFound ? lCurrentPosition : -1;\n };\n /// \n /// Extracts Int32 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt32 = function (stream) {\n var buffer = new Uint8Array(INT_SIZE);\n if (stream.read(buffer, 0, INT_SIZE) != INT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt32(buffer, 0);\n };\n /// \n /// Extracts Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt16 = function (stream) {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n };\n /// \n /// Extracts unsigned Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadUInt16 = function (stream) {\n {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n }\n };\n return ZipArchive;\n}());\nexport { ZipArchive };\nvar ZipArchiveItemHelper = /** @class */ (function () {\n function ZipArchiveItemHelper() {\n /// \n /// Zip header signature.\n /// \n this.headerSignature = 0x04034b50;\n /// \n /// Indicates whether we should check Crc value when reading item's data. Check\n /// is performed when user gets access to decompressed data for the first time.\n /// \n this.checkCrc = true;\n /// \n /// Crc.\n /// \n this.crc32 = 0;\n }\n /// \n /// Read data from the stream based on the central directory.\n /// \n /// Stream to read data from, stream.Position must point at just after correct file header.\n ZipArchiveItemHelper.prototype.readCentralDirectoryData = function (stream) {\n // on the current moment we ignore \"version made by\" and \"version needed to extract\" fields.\n stream.position += 4;\n this.options = ZipArchive.ReadInt16(stream);\n this.compressionMethod = ZipArchive.ReadInt16(stream);\n this.checkCrc = (this.compressionMethod != 99); //COmpression.Defalte != SecurityConstants.AES\n //m_bCompressed = true;\n // on the current moment we ignore \"last mod file time\" and \"last mod file date\" fields.\n var lastModified = ZipArchive.ReadInt32(stream);\n //LastModified = ConvertToDateTime(lastModified);\n this.crc32 = Utils.bitConverterToUInt32(ZipArchive.ReadInt32(stream));\n this.compressedSize = ZipArchive.ReadInt32(stream);\n this.originalSize = ZipArchive.ReadInt32(stream);\n var iFileNameLength = ZipArchive.ReadInt16(stream);\n var iExtraFieldLenth = ZipArchive.ReadInt16(stream);\n var iCommentLength = ZipArchive.ReadInt16(stream);\n // on the current moment we ignore and \"disk number start\" (2 bytes),\n // \"internal file attributes\" (2 bytes).\n stream.position += 4;\n this.externalAttributes = ZipArchive.ReadInt32(stream);\n this.localHeaderOffset = ZipArchive.ReadInt32(stream);\n var arrBuffer = new Uint8Array(iFileNameLength);\n stream.read(arrBuffer, 0, iFileNameLength);\n var m_strItemName = Utils.byteToString(arrBuffer);\n m_strItemName = m_strItemName.replace(\"\\\\\", \"/\");\n this.name = m_strItemName;\n stream.position += iExtraFieldLenth + iCommentLength;\n if (this.options != 0)\n this.options = 0;\n };\n /// \n /// Reads zipped data from the stream.\n /// \n /// Stream to read data from.\n /// Indicates whether we should check crc value after data decompression.\n ZipArchiveItemHelper.prototype.readData = function (stream, checkCrc) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n stream.position = this.localHeaderOffset;\n this.checkCrc = checkCrc;\n this.readLocalHeader(stream);\n this.readCompressedData(stream);\n };\n ZipArchiveItemHelper.prototype.decompressData = function () {\n if (this.compressionMethod == 8) {\n if (this.originalSize > 0) {\n this.decompressDataOld();\n }\n }\n };\n ZipArchiveItemHelper.prototype.decompressDataOld = function () {\n var reader = new CompressedStreamReader(this.compressedStream, true);\n var decompressedData;\n if (this.originalSize > 0)\n decompressedData = new Stream(new Uint8Array(this.originalSize));\n var arrBuffer = new Uint8Array(BufferSize);\n var iReadBytes;\n var past = new Uint8Array(0);\n while ((iReadBytes = reader.read(arrBuffer, 0, BufferSize)) > 0) {\n // past = new Uint8Array(decompressedData.length);\n // let currentBlock: Uint8Array = arrBuffer.subarray(0, iReadBytes);\n decompressedData.write(arrBuffer.subarray(0, iReadBytes), 0, iReadBytes);\n }\n this.unCompressedStream = decompressedData.toByteArray();\n // this.originalSize = decompressedData.Length;\n // m_bControlStream = true;\n // m_streamData = decompressedData;\n // decompressedData.SetLength( m_lOriginalSize );\n // decompressedData.Capacity = ( int )m_lOriginalSize;\n if (this.checkCrc) {\n //TODO: fix this\n //CheckCrc(decompressedData.ToArray());\n }\n //m_streamData.Position = 0;\n };\n /// \n /// Extracts local header from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readLocalHeader = function (stream) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n if (ZipArchive.ReadInt32(stream) != this.headerSignature)\n throw new DOMException(\"Can't find local header signature - wrong file format or file is corrupt.\");\n // TODO: it is good to verify data read from the central directory record,\n // but on the current moment we simply skip it.\n stream.position += 22;\n var iNameLength = ZipArchive.ReadInt16(stream);\n var iExtraLength = ZipArchive.ReadUInt16(stream);\n if (this.compressionMethod == 99) //SecurityConstants.AES\n {\n // stream.Position += iNameLength + 8;\n // m_archive.EncryptionAlgorithm = (EncryptionAlgorithm)stream.ReadByte();\n // m_actualCompression = new byte[2];\n // stream.Read(m_actualCompression, 0, 2);\n }\n else if (iExtraLength > 2) {\n stream.position += iNameLength;\n var headerVal = ZipArchive.ReadInt16(stream);\n if (headerVal == 0x0017) //PKZipEncryptionHeader\n throw new DOMException(\"UnSupported\");\n else\n stream.position += iExtraLength - 2;\n }\n else\n stream.position += iNameLength + iExtraLength;\n };\n /// \n /// Extracts compressed data from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readCompressedData = function (stream) {\n var dataStream;\n if (this.compressedSize > 0) {\n var iBytesLeft = this.compressedSize;\n dataStream = new Stream(new Uint8Array(iBytesLeft));\n var arrBuffer = new Uint8Array(BufferSize);\n while (iBytesLeft > 0) {\n var iBytesToRead = Math.min(iBytesLeft, BufferSize);\n if (stream.read(arrBuffer, 0, iBytesToRead) != iBytesToRead)\n throw new DOMException(\"End of file reached - wrong file format or file is corrupt.\");\n dataStream.write(arrBuffer.subarray(0, iBytesToRead), 0, iBytesToRead);\n iBytesLeft -= iBytesToRead;\n }\n // if(m_archive.Password != null)\n // {\n // byte[] dataBuffer = new byte[dataStream.Length];\n // dataBuffer = dataStream.ToArray();\n // dataStream=new MemoryStream( Decrypt(dataBuffer));\n // }\n this.compressedStream = new Uint8Array(dataStream.inputStream);\n // m_bControlStream = true;\n }\n else if (this.compressedSize < 0) //If compression size is negative, then read until the next header signature reached.\n {\n // MemoryStream dataStream = new MemoryStream();\n // int bt = 0;\n // bool proceed=true;\n // while (proceed)\n // {\n // if ((bt = stream.ReadByte()) == Constants.HeaderSignatureStartByteValue)\n // {\n // stream.Position -= 1;\n // int headerSignature = ZipArchive.ReadInt32(stream);\n // if (headerSignature==Constants.CentralHeaderSignature || headerSignature==Constants.CentralHeaderSignature)\n // {\n // proceed = false;\n // }\n // stream.Position -= 3;\n // }\n // if (proceed)\n // dataStream.WriteByte((byte)bt);\n // }\n // m_streamData = dataStream;\n // m_lCompressedSize = m_streamData.Length;\n // m_bControlStream = true;\n }\n else if (this.compressedSize == 0) {\n // m_streamData = new MemoryStream();\n }\n };\n return ZipArchiveItemHelper;\n}());\nexport { ZipArchiveItemHelper };\n/**\n * Class represent unique ZipArchive item\n * ```typescript\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * ```\n */\nvar ZipArchiveItem = /** @class */ (function () {\n /**\n * constructor for creating {ZipArchiveItem} instance\n * @param {Blob|ArrayBuffer} data file data\n * @param {itemName} itemName absolute file path\n */\n function ZipArchiveItem(data, itemName) {\n if (data === null || data === undefined) {\n throw new Error('ArgumentException: data cannot be null or undefined');\n }\n if (itemName === null || itemName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (itemName.length === 0) {\n throw new Error('string cannot be empty');\n }\n this.data = data;\n this.name = itemName;\n }\n Object.defineProperty(ZipArchiveItem.prototype, \"dataStream\", {\n get: function () {\n return this.decompressedStream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchiveItem.prototype, \"name\", {\n /**\n * Get the name of archive item\n * @returns string\n */\n get: function () {\n return this.fileName;\n },\n /**\n * Set the name of archive item\n * @param {string} value\n */\n set: function (value) {\n this.fileName = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchiveItem.prototype.destroy = function () {\n this.fileName = undefined;\n this.data = undefined;\n };\n return ZipArchiveItem;\n}());\nexport { ZipArchiveItem };\n/* eslint-enable */ \n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\n// import { IValueFormatter } from '../base/interface';\n/**\n * ValueFormatter class to globalize the value.\n * @private\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n // if (!isNullOrUndefined(cultureName)) {\n // this.intl.culture = cultureName;\n // }\n }\n ValueFormatter.prototype.getFormatFunction = function (format, isServerRendered) {\n if (format.type) {\n if (isServerRendered) {\n format.isServerRendered = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n // public getParserFunction(format: NumberFormatOptions | DateFormatOptions): Function {\n // if ((format).type) {\n // return this.intl.getDateParser(format);\n // } else {\n // return this.intl.getNumberParser(format);\n // }\n // }\n // public fromView(value: string, format: Function, type?: string): string | number | Date {\n // if (type === 'date' || type === 'datetime' || type === 'number') {\n // return format(value);\n // } else {\n // return value;\n // }\n // }\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n // public setCulture(cultureName: string): void {\n // if (!isNullOrUndefined(cultureName)) {\n // setCulture(cultureName);\n // }\n // }\n /* tslint:disable:no-any */\n ValueFormatter.prototype.displayText = function (value, format, isServerRendered) {\n return this.toView(value, this.getFormatFunction(format, isServerRendered));\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { ValueFormatter } from './value-formatter';\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * CsvHelper class\n * @private\n */\nvar CsvHelper = /** @class */ (function () {\n /* tslint:disable:no-any */\n function CsvHelper(json, separator) {\n this.csvStr = '';\n if (separator === null || separator === undefined) {\n this.separator = ',';\n }\n else {\n this.separator = separator;\n }\n this.formatter = new ValueFormatter();\n this.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n if (json.isServerRendered !== null && json.isServerRendered !== undefined) {\n this.isServerRendered = json.isServerRendered;\n }\n if (json.styles !== null && json.styles !== undefined) {\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined && json.styles[i].numberFormat !== undefined) {\n this.globalStyles.set(json.styles[i].name, json.styles[i].numberFormat);\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parseWorksheet(json.worksheets[0]);\n }\n //this.csvStr = 'a1,a2,a3\\nb1,b2,b3';\n }\n CsvHelper.prototype.parseWorksheet = function (json) {\n //Rows\n if (json.rows !== null && json.rows !== undefined) {\n this.parseRows(json.rows);\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRows = function (rows) {\n var count = 1;\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n //Row index\n if (row.index !== null && row.index !== undefined) {\n while (count < row.index) {\n this.csvStr += '\\r\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\n }\n this.csvStr += '\\r\\n';\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRow = function (row) {\n if (row.cells !== null && row.cells !== undefined) {\n var count = 1;\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n //cell index\n if (cell.index !== null && cell.index !== undefined) {\n while (count < cell.index) {\n this.csvStr += this.separator;\n count++;\n }\n this.parseCell(cell);\n }\n else {\n throw Error('Cell index is missing.');\n }\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseCell = function (cell) {\n var csv = this.csvStr;\n if (cell.value !== undefined) {\n if (cell.value instanceof Date) {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: cell.style.numberFormat }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: cell.style.numberFormat }, this.isServerRendered));\n }\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n }\n else {\n csv += cell.value;\n }\n }\n else if (typeof (cell.value) === 'boolean') {\n csv += cell.value ? 'TRUE' : 'FALSE';\n }\n else if (typeof (cell.value) === 'number') {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: cell.style.numberFormat }, this.isServerRendered));\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n else {\n csv += cell.value;\n }\n }\n else {\n csv += this.parseCellValue(cell.value);\n }\n }\n this.csvStr = csv;\n };\n CsvHelper.prototype.parseCellValue = function (value) {\n var val = '';\n var length = value.length;\n for (var start = 0; start < length; start++) {\n if (value[start] === '\\\"') {\n val += value[start].replace('\\\"', '\\\"\\\"');\n }\n else {\n val += value[start];\n }\n }\n value = val;\n if (value.indexOf(this.separator) !== -1 || value.indexOf('\\n') !== -1 || value.indexOf('\\\"') !== -1) {\n return value = '\\\"' + value + '\\\"';\n }\n else {\n return value;\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n */\n CsvHelper.prototype.save = function (fileName) {\n this.buffer = new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(this.buffer, fileName);\n }\n else {\n var dataUrl_1 = window.URL.createObjectURL(this.buffer);\n var dwlLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n dwlLink.download = fileName;\n dwlLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n dwlLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n });\n }\n };\n /**\n * Returns a Blob object containing CSV data with optional encoding.\n * @param {string} [encodingType] - The supported encoding types are \"ansi\", \"unicode\" and \"utf8\".\n */\n /* tslint:disable:no-any */\n CsvHelper.prototype.saveAsBlob = function (encodingType) {\n if (encodingType != undefined) {\n var encoding = new Encoding();\n var encodeString = 'UTF-8';\n if (encodingType.toUpperCase() == \"ANSI\") {\n encoding.type = 'Ansi';\n encodeString = 'ANSI';\n }\n else if (encodingType.toUpperCase() == \"UNICODE\") {\n encoding.type = 'Unicode';\n encodeString = 'UNICODE';\n }\n else {\n encoding.type = 'Utf8';\n encodeString = 'UTF-8';\n }\n var buffer = encoding.getBytes(this.csvStr, 0, this.csvStr.length);\n return new Blob([buffer], { type: 'text/csv;charset=' + encodeString });\n }\n else\n return new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n };\n return CsvHelper;\n}());\nexport { CsvHelper };\n","/**\n * BlobHelper class\n * @private\n */\nvar BlobHelper = /** @class */ (function () {\n function BlobHelper() {\n /* tslint:disable:no-any */\n this.parts = [];\n }\n /* tslint:disable:no-any */\n BlobHelper.prototype.append = function (part) {\n this.parts.push(part);\n this.blob = undefined; // Invalidate the blob\n };\n BlobHelper.prototype.getBlob = function () {\n return new Blob(this.parts, { type: 'text/plain' });\n };\n return BlobHelper;\n}());\nexport { BlobHelper };\n","/**\n * AutoFilters class\n * @private\n */\nvar AutoFilters = /** @class */ (function () {\n function AutoFilters() {\n }\n return AutoFilters;\n}());\nexport { AutoFilters };\n","import { Worksheets } from './worksheets';\nimport { Worksheet, FreezePane, MergeCell, MergeCells, HyperLink, Grouping } from './worksheet';\nimport { CellStyle, Font, Borders, CellXfs, Alignment, NumFmt, CellStyleXfs, CellStyles } from './cell-style';\nimport { Column } from './column';\nimport { Row, Rows } from './row';\nimport { Image } from './image';\nimport { Cell, Cells } from './cell';\nimport { ZipArchive, ZipArchiveItem } from '@syncfusion/ej2-compression';\nimport { CsvHelper } from './csv-helper';\nimport { Internationalization, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { BlobHelper } from './blob-helper';\nimport { AutoFilters } from './auto-filters';\n/**\n * Workbook class\n */\nvar Workbook = /** @class */ (function () {\n /* tslint:disable:no-any */\n function Workbook(json, saveType, culture, currencyString, separator) {\n this.sharedStringCount = 0;\n this.unitsProportions = [\n 96 / 75.0,\n 96 / 300.0,\n 96,\n 96 / 25.4,\n 96 / 2.54,\n 1,\n 96 / 72.0,\n 96 / 72.0 / 12700,\n ];\n /* tslint:disable:no-any */\n this.hyperlinkStyle = { fontColor: '#0000FF', underline: true };\n if (culture !== undefined) {\n this.culture = culture;\n }\n else {\n this.culture = 'en-US';\n }\n if (currencyString !== undefined) {\n this.currency = currencyString;\n }\n else {\n this.currency = 'USD';\n }\n this.intl = new Internationalization(this.culture);\n this.mSaveType = saveType;\n if (saveType === 'xlsx') {\n this.mArchive = new ZipArchive();\n this.sharedString = [];\n this.mFonts = [];\n this.mBorders = [];\n this.mStyles = [];\n this.printTitles = new Map();\n this.cellStyles = new Map();\n this.mNumFmt = new Map();\n this.mFills = new Map();\n this.mStyles.push(new CellStyle());\n this.mFonts.push(new Font());\n /* tslint:disable */\n this.cellStyles.set('Normal', new CellStyles());\n /* tslint:enable */\n this.mCellXfs = [];\n this.mCellStyleXfs = [];\n this.drawingCount = 0;\n this.imageCount = 0;\n if (json.styles !== null && json.styles !== undefined) {\n /* tslint:disable-next-line:no-any */\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined) {\n if (!this.cellStyles.has(json.styles[i].name)) {\n var cellStyle = new CellStyle();\n cellStyle.isGlobalStyle = true;\n this.parserCellStyle(json.styles[i], cellStyle, 'none');\n var cellStylesIn = new CellStyles();\n cellStylesIn.name = cellStyle.name;\n cellStylesIn.xfId = (cellStyle.index - 1);\n this.cellStyles.set(cellStylesIn.name, cellStylesIn);\n /* tslint:disable-next-line:no-any */\n var tFormat = {};\n if (json.styles[i].numberFormat !== undefined) {\n tFormat.format = json.styles[i].numberFormat;\n }\n if (json.styles[i].type !== undefined) {\n tFormat.type = json.styles[i].type;\n }\n else {\n tFormat.type = 'datetime';\n }\n if (tFormat.format !== undefined) {\n this.globalStyles.set(json.styles[i].name, tFormat);\n }\n }\n else {\n throw Error('Style name ' + json.styles[i].name + ' is already existed');\n }\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parserWorksheets(json.worksheets);\n }\n else {\n throw Error('Worksheet is expected.');\n }\n // Parses the BuiltInProperties data to DOM. \n if (json.builtInProperties !== null && json.builtInProperties !== undefined) {\n this.builtInProperties = new BuiltInProperties();\n this.parserBuiltInProperties(json.builtInProperties, this.builtInProperties);\n }\n }\n else {\n this.csvHelper = new CsvHelper(json, separator);\n }\n }\n /* tslint:disable:no-any */\n Workbook.prototype.parserBuiltInProperties = function (jsonBuiltInProperties, builtInProperties) {\n //Author\n if (jsonBuiltInProperties.author !== null && jsonBuiltInProperties.author !== undefined) {\n builtInProperties.author = jsonBuiltInProperties.author;\n }\n //Comments\n if (jsonBuiltInProperties.comments !== null && jsonBuiltInProperties.comments !== undefined) {\n builtInProperties.comments = jsonBuiltInProperties.comments;\n }\n //Category\n if (jsonBuiltInProperties.category !== null && jsonBuiltInProperties.category !== undefined) {\n builtInProperties.category = jsonBuiltInProperties.category;\n }\n //Company\n if (jsonBuiltInProperties.company !== null && jsonBuiltInProperties.company !== undefined) {\n builtInProperties.company = jsonBuiltInProperties.company;\n }\n //Manager\n if (jsonBuiltInProperties.manager !== null && jsonBuiltInProperties.manager !== undefined) {\n builtInProperties.manager = jsonBuiltInProperties.manager;\n }\n //Subject\n if (jsonBuiltInProperties.subject !== null && jsonBuiltInProperties.subject !== undefined) {\n builtInProperties.subject = jsonBuiltInProperties.subject;\n }\n //Title\n if (jsonBuiltInProperties.title !== null && jsonBuiltInProperties.title !== undefined) {\n builtInProperties.title = jsonBuiltInProperties.title;\n }\n //Creation date\n if (jsonBuiltInProperties.createdDate !== null && jsonBuiltInProperties.createdDate !== undefined) {\n builtInProperties.createdDate = jsonBuiltInProperties.createdDate;\n }\n //Modified date\n if (jsonBuiltInProperties.modifiedDate !== null && jsonBuiltInProperties.modifiedDate !== undefined) {\n builtInProperties.modifiedDate = jsonBuiltInProperties.modifiedDate;\n }\n //Tags\n if (jsonBuiltInProperties.tags !== null && jsonBuiltInProperties.tags !== undefined) {\n builtInProperties.tags = jsonBuiltInProperties.tags;\n }\n //Status\n if (jsonBuiltInProperties.status !== null && jsonBuiltInProperties.status !== undefined) {\n builtInProperties.status = jsonBuiltInProperties.status;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserWorksheets = function (json) {\n this.worksheets = new Worksheets();\n var length = json.length;\n for (var i = 0; i < length; i++) {\n var jsonSheet = json[i];\n var sheet = new Worksheet();\n this.mergeCells = new MergeCells();\n this.mergedCellsStyle = new Map();\n this.mHyperLinks = [];\n //Name\n if (jsonSheet.name !== null && jsonSheet.name !== undefined) {\n sheet.name = jsonSheet.name;\n }\n else {\n sheet.name = 'Sheet' + (i + 1).toString();\n }\n if (jsonSheet.enableRtl !== null && jsonSheet.enableRtl !== undefined) {\n sheet.enableRtl = jsonSheet.enableRtl;\n }\n sheet.index = (i + 1);\n //Columns\n if (jsonSheet.columns !== null && jsonSheet.columns !== undefined) {\n this.parserColumns(jsonSheet.columns, sheet);\n }\n //Rows\n if (jsonSheet.rows !== null && jsonSheet.rows !== undefined) {\n this.parserRows(jsonSheet.rows, sheet);\n }\n //showGridLines\n if (jsonSheet.showGridLines !== null && jsonSheet.showGridLines !== undefined) {\n sheet.showGridLines = jsonSheet.showGridLines;\n }\n //FreezePanes\n if (jsonSheet.freeze !== null && jsonSheet.freeze !== undefined) {\n this.parserFreezePanes(jsonSheet.freeze, sheet);\n }\n //Print Title\n if (jsonSheet.printTitle !== null && jsonSheet.printTitle !== undefined) {\n this.parserPrintTitle(jsonSheet.printTitle, sheet);\n }\n if (jsonSheet.pageSetup !== undefined) {\n if (jsonSheet.pageSetup.isSummaryRowBelow !== undefined) {\n sheet.isSummaryRowBelow = jsonSheet.pageSetup.isSummaryRowBelow;\n }\n }\n if (jsonSheet.images !== undefined) {\n this.parserImages(jsonSheet.images, sheet);\n }\n if (jsonSheet.autoFilters !== null && jsonSheet.autoFilters !== undefined) {\n this.parseFilters(jsonSheet.autoFilters, sheet);\n }\n sheet.index = (i + 1);\n sheet.mergeCells = this.mergeCells;\n sheet.hyperLinks = this.mHyperLinks;\n this.worksheets.push(sheet);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.mergeOptions = function (fromJson, toJson) {\n /* tslint:disable:no-any */\n var result = {};\n this.applyProperties(fromJson, result);\n this.applyProperties(toJson, result);\n return result;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.applyProperties = function (sourceJson, destJson) {\n var keys = Object.keys(sourceJson);\n for (var index = 0; index < keys.length; index++) {\n if (keys[index] !== 'name') {\n destJson[keys[index]] = sourceJson[keys[index]];\n }\n }\n };\n Workbook.prototype.getCellName = function (row, column) {\n return this.getColumnName(column) + row.toString();\n };\n Workbook.prototype.getColumnName = function (col) {\n col--;\n var strColumnName = '';\n do {\n var iCurrentDigit = col % 26;\n col = col / 26 - 1;\n strColumnName = String.fromCharCode(65 + iCurrentDigit) + strColumnName;\n } while (col >= 0);\n return strColumnName;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserPrintTitle = function (json, sheet) {\n var printTitleName = '';\n var titleRowName;\n if (json.fromRow !== null && json.fromRow !== undefined) {\n var fromRow = json.fromRow;\n var toRow = void 0;\n if (json.toRow !== null && json.toRow !== undefined) {\n toRow = json.toRow;\n }\n else {\n toRow = json.fromRow;\n }\n titleRowName = '$' + fromRow + ':$' + toRow;\n }\n var titleColName;\n if (json.fromColumn !== null && json.fromColumn !== undefined) {\n var fromColumn = json.fromColumn;\n var toColumn = void 0;\n if (json.toColumn !== null && json.toColumn !== undefined) {\n toColumn = json.toColumn;\n }\n else {\n toColumn = json.fromColumn;\n }\n titleColName = '$' + this.getColumnName(fromColumn) + ':$' + this.getColumnName(toColumn);\n }\n if (titleRowName !== undefined) {\n printTitleName += (sheet.name + '!' + titleRowName);\n }\n if (titleColName !== undefined && titleRowName !== undefined) {\n printTitleName += ',' + (sheet.name + '!' + titleColName);\n }\n else if (titleColName !== undefined) {\n printTitleName += (sheet.name + '!' + titleColName);\n }\n if (printTitleName !== '') {\n this.printTitles.set(sheet.index - 1, printTitleName);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserFreezePanes = function (json, sheet) {\n sheet.freezePanes = new FreezePane();\n if (json.row !== null && json.row !== undefined) {\n sheet.freezePanes.row = json.row;\n }\n else {\n sheet.freezePanes.row = 0;\n }\n if (json.column !== null && json.column !== undefined) {\n sheet.freezePanes.column = json.column;\n }\n else {\n sheet.freezePanes.column = 0;\n }\n sheet.freezePanes.leftCell = this.getCellName(sheet.freezePanes.row + 1, sheet.freezePanes.column + 1);\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserColumns = function (json, sheet) {\n var columnsLength = json.length;\n sheet.columns = [];\n for (var column = 0; column < columnsLength; column++) {\n var col = new Column();\n if (json[column].index !== null && json[column].index !== undefined) {\n col.index = json[column].index;\n }\n else {\n throw Error('Column index is missing.');\n }\n if (json[column].width !== null && json[column].width !== undefined) {\n col.width = json[column].width;\n }\n sheet.columns.push(col);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRows = function (json, sheet) {\n var rowsLength = json.length;\n sheet.rows = new Rows();\n var rowId = 0;\n for (var r = 0; r < rowsLength; r++) {\n var row = this.parserRow(json[r], rowId);\n rowId = row.index;\n sheet.rows.add(row);\n }\n this.insertMergedCellsStyle(sheet);\n };\n Workbook.prototype.insertMergedCellsStyle = function (sheet) {\n var _this = this;\n if (this.mergeCells.length > 0) {\n this.mergedCellsStyle.forEach(function (value, key) {\n var row = sheet.rows.filter(function (item) {\n return item.index === value.y;\n })[0];\n if (!isNullOrUndefined(row)) {\n var cell = row.cells.filter(function (item) {\n return item.index === value.x;\n })[0];\n if (!isNullOrUndefined(cell)) {\n cell.styleIndex = value.styleIndex;\n }\n else {\n var cells = row.cells.filter(function (item) {\n return item.index <= value.x;\n });\n var insertIndex = 0;\n if (cells.length > 0) {\n insertIndex = row.cells.indexOf(cells[cells.length - 1]) + 1;\n }\n row.cells.splice(insertIndex, 0, _this.createCell(value, key));\n }\n }\n else {\n var rows = sheet.rows.filter(function (item) {\n return item.index <= value.y;\n });\n var rowToInsert = new Row();\n rowToInsert.index = value.y;\n rowToInsert.cells = new Cells();\n rowToInsert.cells.add(_this.createCell(value, key));\n var insertIndex = 0;\n if (rows.length > 0) {\n insertIndex = sheet.rows.indexOf(rows[rows.length - 1]) + 1;\n }\n sheet.rows.splice(insertIndex, 0, rowToInsert);\n }\n });\n }\n };\n Workbook.prototype.createCell = function (value, key) {\n var cellToInsert = new Cell();\n cellToInsert.refName = key;\n cellToInsert.index = value.x;\n cellToInsert.cellStyle = new CellStyle();\n cellToInsert.styleIndex = value.styleIndex;\n return cellToInsert;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRow = function (json, rowIndex) {\n var row = new Row();\n //Row Height\n if (json.height !== null && json.height !== undefined) {\n row.height = json.height;\n }\n //Row index\n if (json.index !== null && json.index !== undefined) {\n row.index = json.index;\n }\n else {\n throw Error('Row index is missing.');\n }\n if (json.grouping !== null && json.grouping !== undefined) {\n this.parseGrouping(json.grouping, row);\n }\n this.parseCells(json.cells, row);\n return row;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseGrouping = function (json, row) {\n row.grouping = new Grouping();\n if (json.outlineLevel !== undefined) {\n row.grouping.outlineLevel = json.outlineLevel;\n }\n if (json.isCollapsed !== undefined) {\n row.grouping.isCollapsed = json.isCollapsed;\n }\n if (json.isHidden !== undefined) {\n row.grouping.isHidden = json.isHidden;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseCells = function (json, row) {\n row.cells = new Cells();\n var cellsLength = json !== undefined ? json.length : 0;\n var spanMin = 1;\n var spanMax = 1;\n var curCellIndex = 0;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n /* tslint:disable:no-any */\n var jsonCell = json[cellId];\n var cell = new Cell();\n //cell index\n if (jsonCell.index !== null && jsonCell.index !== undefined) {\n cell.index = jsonCell.index;\n }\n else {\n throw Error('Cell index is missing.');\n }\n if (cell.index < spanMin) {\n spanMin = cell.index;\n }\n else if (cell.index > spanMax) {\n spanMax = cell.index;\n }\n //Update the Cell name\n cell.refName = this.getCellName(row.index, cell.index);\n //Row span\n if (jsonCell.rowSpan !== null && jsonCell.rowSpan !== undefined) {\n cell.rowSpan = jsonCell.rowSpan - 1;\n }\n else {\n cell.rowSpan = 0;\n }\n //Column span\n if (jsonCell.colSpan !== null && jsonCell.colSpan !== undefined) {\n cell.colSpan = jsonCell.colSpan - 1;\n }\n else {\n cell.colSpan = 0;\n }\n //Hyperlink\n if (jsonCell.hyperlink !== null && jsonCell.hyperlink !== undefined) {\n var hyperLink = new HyperLink();\n if (jsonCell.hyperlink.target !== undefined) {\n hyperLink.target = jsonCell.hyperlink.target;\n if (jsonCell.hyperlink.displayText !== undefined) {\n cell.value = jsonCell.hyperlink.displayText;\n }\n else {\n cell.value = jsonCell.hyperlink.target;\n }\n cell.type = this.getCellValueType(cell.value);\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n cell.cellStyle = new CellStyle();\n /* tslint:disable-next-line:max-line-length */\n this.parserCellStyle((jsonCell.style !== undefined ? this.mergeOptions(jsonCell.style, this.hyperlinkStyle) : this.hyperlinkStyle), cell.cellStyle, 'string');\n cell.styleIndex = cell.cellStyle.index;\n }\n }\n // formulas\n if (jsonCell.formula !== null && jsonCell.formula !== undefined) {\n cell.formula = jsonCell.formula;\n cell.type = 'formula';\n }\n //Cell value\n if (jsonCell.value !== null && jsonCell.value !== undefined) {\n if (cell.formula !== undefined) {\n cell.value = 0;\n }\n else {\n cell.value = jsonCell.value;\n cell.type = this.getCellValueType(cell.value);\n }\n }\n if (jsonCell.style !== null && jsonCell.style !== undefined && cell.styleIndex === undefined) {\n cell.cellStyle = new CellStyle();\n if (cell.value instanceof Date) {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type, 14);\n }\n else {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type);\n }\n cell.styleIndex = cell.cellStyle.index;\n }\n else if (cell.value instanceof Date) {\n cell.cellStyle = new CellStyle();\n this.parserCellStyle({}, cell.cellStyle, cell.type, 14);\n cell.styleIndex = cell.cellStyle.index;\n }\n this.parseCellType(cell);\n this.mergeCells = this.processMergeCells(cell, row.index, this.mergeCells);\n row.cells.add(cell);\n curCellIndex = (cell.index + 1);\n }\n row.spans = (spanMin) + ':' + (spanMax);\n };\n Workbook.prototype.GetColors = function () {\n var colors;\n colors = new Map();\n /* tslint:disable */\n colors.set('WHITE', 'FFFFFFFF');\n /* tslint:disable */\n colors.set('SILVER', 'FFC0C0C0');\n /* tslint:disable */\n colors.set('GRAY', 'FF808080');\n /* tslint:disable */\n colors.set('BLACK', 'FF000000');\n /* tslint:disable */\n colors.set('RED', 'FFFF0000');\n /* tslint:disable */\n colors.set('MAROON', 'FF800000');\n /* tslint:disable */\n colors.set('YELLOW', 'FFFFFF00');\n /* tslint:disable */\n colors.set('OLIVE', 'FF808000');\n /* tslint:disable */\n colors.set('LIME', 'FF00FF00');\n /* tslint:disable */\n colors.set('GREEN', 'FF008000');\n /* tslint:disable */\n colors.set('AQUA', 'FF00FFFF');\n /* tslint:disable */\n colors.set('TEAL', 'FF008080');\n /* tslint:disable */\n colors.set('BLUE', 'FF0000FF');\n /* tslint:disable */\n colors.set('NAVY', 'FF000080');\n /* tslint:disable */\n colors.set('FUCHSIA', 'FFFF00FF');\n /* tslint:disable */\n colors.set('PURPLE', 'FF800080');\n return colors;\n };\n Workbook.prototype.processColor = function (colorVal) {\n if (colorVal.indexOf('#') === 0) {\n return colorVal.replace('#', 'FF');\n }\n colorVal = colorVal.toUpperCase();\n this.rgbColors = this.GetColors();\n if (this.rgbColors.has(colorVal)) {\n colorVal = this.rgbColors.get(colorVal);\n }\n else {\n colorVal = 'FF000000';\n }\n return colorVal;\n };\n Workbook.prototype.processCellValue = function (value, cell) {\n var cellValue = value;\n if (value.indexOf(\"\") !== -1 ||\n value.indexOf(\"\") !== -1 || value.indexOf(\"\") !== -1) {\n var processedVal = '';\n var startindex = value.indexOf('<', 0);\n var endIndex = value.indexOf('>', startindex + 1);\n if (startindex >= 0 && endIndex >= 0) {\n if (startindex !== 0) {\n processedVal += '' + this.processString(value.substring(0, startindex)) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n var subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n var text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n var subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (var _i = 0, subSplit_1 = subSplit; _i < subSplit_1.length; _i++) {\n var element = subSplit_1[_i];\n var start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n var hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n var style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + this.processString(text) + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n };\n Workbook.prototype.applyGlobalStyle = function (json, cellStyle) {\n var index = 0;\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter(function (a) { return (a.name === json.name); })[0].index;\n cellStyle.name = json.name;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserCellStyle = function (json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //strikeThrough\n if (json.strikeThrough !== null && json.strikeThrough !== undefined) {\n cellStyle.strikeThrough = json.strikeThrough;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n };\n Workbook.prototype.switchNumberFormat = function (numberFormat, type) {\n var format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n var numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXfs = _a[_i];\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (var _b = 0, _c = this.mCellXfs; _b < _c.length; _b++) {\n var cellXfs = _c[_b];\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n };\n Workbook.prototype.changeNumberFormats = function (value) {\n if (typeof value == \"string\") {\n var regex = new RegExp(this.currency, 'g');\n value = value.replace(regex, '[$' + this.currency + ']');\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n value[i] = value[i].replace(this.currency, '[$' + this.currency + ']');\n }\n }\n return value;\n };\n Workbook.prototype.getNumberFormat = function (numberFormat, type) {\n var returnFormat;\n switch (type) {\n case 'number':\n try {\n returnFormat = this.intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n if (this.currency.length > 1) {\n returnFormat = this.changeNumberFormats(returnFormat);\n }\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n break;\n case 'datetime':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'date':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'time':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n default:\n returnFormat = numberFormat;\n break;\n }\n return returnFormat;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserBorder = function (json, border) {\n if (json.color !== null && json.color !== undefined) {\n border.color = json.color;\n }\n else {\n border.color = '#000000';\n }\n if (json.lineStyle !== null && json.lineStyle !== undefined) {\n border.lineStyle = json.lineStyle;\n }\n else {\n border.lineStyle = 'thin';\n }\n };\n Workbook.prototype.processCellStyle = function (style) {\n if (style.isGlobalStyle) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n var compareResult = this.compareStyle(style);\n if (!compareResult.result) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n //Return the index of the already existing style.\n return compareResult.index;\n }\n }\n };\n Workbook.prototype.processNumFormatId = function (style) {\n if (style.numberFormat !== 'GENERAL' && !this.mNumFmt.has(style.numberFormat)) {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n }\n };\n Workbook.prototype.isNewFont = function (toCompareStyle) {\n var result = false;\n var index = 0;\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n index++;\n var fontColor = undefined;\n if (toCompareStyle.fontColor !== undefined) {\n fontColor = ('FF' + toCompareStyle.fontColor.replace('#', ''));\n }\n result = font.color === fontColor &&\n font.b === toCompareStyle.bold &&\n font.i === toCompareStyle.italic &&\n font.u === toCompareStyle.underline &&\n font.strike === toCompareStyle.strikeThrough &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index: index, result: result };\n };\n Workbook.prototype.isNewBorder = function (toCompareStyle) {\n var bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n };\n Workbook.prototype.isAllBorder = function (toCompareBorder) {\n var allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n };\n Workbook.prototype.compareStyle = function (toCompareStyle) {\n var result = true;\n var index = 0;\n var globalStyleIndex = 0;\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var baseStyle = _a[_i];\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.strikeThrough === toCompareStyle.strikeThrough &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index: index, result: result };\n };\n Workbook.prototype.contains = function (array, item) {\n var index = array.indexOf(item);\n return index > -1 && index < array.length;\n };\n Workbook.prototype.getCellValueType = function (value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n };\n Workbook.prototype.parseCellType = function (cell) {\n var type = cell.type;\n var saveType;\n var value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n var value_1 = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value_1.format, value_1.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n var sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n };\n Workbook.prototype.parserImages = function (json, sheet) {\n var imagesLength = json.length;\n sheet.images = [];\n var imageId = 0;\n for (var p = 0; p < imagesLength; p++) {\n var image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n };\n Workbook.prototype.parseFilters = function (json, sheet) {\n sheet.autoFilters = new AutoFilters();\n if (json.row !== null && json.row !== undefined)\n sheet.autoFilters.row = json.row;\n else\n throw new Error('Argument Null Exception: row null or empty');\n if (json.lastRow !== null && json.lastRow !== undefined)\n sheet.autoFilters.lastRow = json.lastRow;\n else\n throw new Error('Argument Null Exception: lastRow cannot be null or empty');\n if (json.column !== null && json.column !== undefined)\n sheet.autoFilters.column = json.column;\n else\n throw new Error('Argument Null Exception: column cannot be null or empty');\n if (json.lastColumn !== null && json.row !== undefined)\n sheet.autoFilters.lastColumn = json.lastColumn;\n else\n throw new Error('Argument Null Exception: lastColumn cannot be null or empty');\n };\n Workbook.prototype.parserImage = function (json) {\n var image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n };\n /**\n * Returns a Promise with a Blob based on the specified BlobSaveType and optional encoding.\n * @param {BlobSaveType} blobSaveType - A string indicating the type of Blob to generate ('text/csv' or other).\n * @param {string} [encodingType] - The supported encoding types are \"ansi\", \"unicode\" and \"utf8\".\n */\n /* tslint:disable:no-any */\n Workbook.prototype.saveAsBlob = function (blobSaveType, encodingType) {\n var _this = this;\n switch (blobSaveType) {\n case 'text/csv':\n return new Promise(function (resolve, reject) {\n var obj = {};\n obj.blobData = _this.csvHelper.saveAsBlob(encodingType);\n resolve(obj);\n });\n default:\n return new Promise(function (resolve, reject) {\n _this.saveInternal();\n _this.mArchive.saveAsBlob().then(function (blob) {\n var obj = {};\n obj.blobData = new Blob([blob], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n resolve(obj);\n });\n });\n }\n };\n Workbook.prototype.save = function (fileName, proxyUrl) {\n var _this = this;\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('Argument Null Exception: fileName cannot be null or empty');\n }\n var xlsxMatch = fileName.match('.xlsx$');\n var csvMatch = fileName.match('.csv$');\n if (xlsxMatch !== null && xlsxMatch[0] === ('.' + this.mSaveType)) {\n this.saveInternal();\n this.mArchive.save(fileName).then(function () {\n _this.mArchive.destroy();\n });\n }\n else if (csvMatch !== null && csvMatch[0] === ('.' + this.mSaveType)) {\n this.csvHelper.save(fileName);\n }\n else {\n throw Error('Save type and file extension is different.');\n }\n };\n Workbook.prototype.saveInternal = function () {\n this.saveWorkbook();\n this.saveWorksheets();\n this.saveSharedString();\n this.saveStyles();\n this.saveApp(this.builtInProperties);\n this.saveCore(this.builtInProperties);\n this.saveContentType();\n this.saveTopLevelRelation();\n this.saveWorkbookRelation();\n };\n Workbook.prototype.saveWorkbook = function () {\n /* tslint:disable-next-line:max-line-length */\n var workbookTemp = '';\n var sheets = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n var sheetName = this.worksheets[i].name;\n sheetName = sheetName.replace(\"&\", \"&\");\n sheetName = sheetName.replace(\"<\", \"<\");\n sheetName = sheetName.replace(\">\", \">\");\n sheetName = sheetName.replace(\"\\\"\", \""\");\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n var printTitle_1 = '';\n this.printTitles.forEach(function (value, key) {\n printTitle_1 += '' + value + '';\n });\n printTitle_1 += '';\n workbookTemp += printTitle_1;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n };\n Workbook.prototype.saveWorksheets = function () {\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n };\n Workbook.prototype.saveWorksheet = function (sheet, index) {\n var sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n var colString = '';\n for (var _i = 0, _a = sheet.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (var _b = 0, _c = sheet.rows; _b < _c.length; _b++) {\n var row = _c[_b];\n var rowString = '');\n for (var _d = 0, _e = row.cells; _d < _e.length; _d++) {\n var cell = _e[_d];\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n /* tslint:disable-next-line:max-line-length */\n if (sheet.autoFilters !== null && sheet.autoFilters !== undefined)\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (var _f = 0, _g = sheet.mergeCells; _f < _g.length; _f++) {\n var mCell = _g[_f];\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (var _h = 0, _j = sheet.hyperLinks; _h < _j.length; _h++) {\n var hLink = _j[_h];\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n };\n Workbook.prototype.saveDrawings = function (sheet, index) {\n var drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetDrawingString = '';\n if (sheet.images !== undefined) {\n var imgId = 0;\n for (var _i = 0, _a = sheet.images; _i < _a.length; _i++) {\n var pic = _a[_i];\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n pic.lastRow -= 1;\n pic.lastColumn -= 1;\n }\n else if (pic.lastRow !== undefined && pic.lastColumn !== undefined) {\n pic.lastRowOffset = 0;\n pic.lastColOffset = 0;\n }\n imgId++;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.column - 1;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.row - 1;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.lastColumn;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += pic.lastColOffset;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.lastRow;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += pic.lastRowOffset;\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += ' ';\n sheetDrawingString += ' ';\n sheetDrawingString += '';\n /* tslint:disable-next-line:max-line-length */\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '= -3600) {\n sheetDrawingString += ' rot=\"' + (pic.rotation * 60000) + '\"';\n }\n if (pic.verticalFlip != undefined && pic.verticalFlip != false) {\n sheetDrawingString += ' flipV=\"1\"';\n }\n if (pic.horizontalFlip != undefined && pic.horizontalFlip != false) {\n sheetDrawingString += ' flipH=\"1\"';\n }\n sheetDrawingString += '/>';\n sheetDrawingString += '';\n sheetDrawingString += '';\n var imageFile = new BlobHelper();\n var imageData = this.convertBase64toImage(pic.image);\n this.imageCount += 1;\n this.addToArchive(imageData, 'xl/media/image' + this.imageCount + '.png');\n }\n drawings.append(sheetDrawingString);\n drawings.append('');\n this.saveDrawingRelations(sheet);\n this.addToArchive(drawings.getBlob(), 'xl/drawings/drawing' + this.drawingCount + '.xml');\n }\n };\n Workbook.prototype.updatelastRowOffset = function (sheet, picture) {\n var iCurHeight = picture.height;\n var iCurRow = picture.row;\n var iCurOffset = 0;\n while (iCurHeight >= 0) {\n var iRowHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n iRowHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n iRowHeight = this.convertToPixels(15);\n var iSpaceInCell = iRowHeight - (iCurOffset * iRowHeight / 256);\n if (iSpaceInCell > iCurHeight) {\n picture.lastRow = iCurRow;\n picture.lastRowOffset = iCurOffset + (iCurHeight * 256 / iRowHeight);\n var rowHiddenHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n rowHiddenHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n rowHiddenHeight = this.convertToPixels(15);\n picture.lastRowOffset = (rowHiddenHeight * picture.lastRowOffset) / 256;\n picture.lastRowOffset = Math.round(picture.lastRowOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurHeight -= iSpaceInCell;\n iCurRow++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.updatelastColumnOffSet = function (sheet, picture) {\n var iCurWidth = picture.width;\n var iCurCol = picture.column;\n var iCurOffset = 0;\n while (iCurWidth >= 0) {\n var iColWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n iColWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n iColWidth = this.ColumnWidthToPixels(8.43);\n var iSpaceInCell = iColWidth - (iCurOffset * iColWidth / 1024);\n if (iSpaceInCell > iCurWidth) {\n picture.lastColumn = iCurCol;\n picture.lastColOffset = iCurOffset + (iCurWidth * 1024 / iColWidth);\n var colHiddenWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n colHiddenWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n colHiddenWidth = this.ColumnWidthToPixels(8.43);\n picture.lastColOffset = (colHiddenWidth * picture.lastColOffset) / 1024;\n picture.lastColOffset = Math.round(picture.lastColOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurWidth -= iSpaceInCell;\n iCurCol++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.convertToPixels = function (value) {\n return value * this.unitsProportions[6];\n };\n Workbook.prototype.convertBase64toImage = function (img) {\n var byteStr = window.atob(img);\n var buffer = new ArrayBuffer(byteStr.length);\n var data = new Uint8Array(buffer);\n for (var i = 0; i < byteStr.length; i++) {\n data[i] = byteStr.charCodeAt(i);\n }\n var blob = new Blob([data], { type: 'image/png' });\n return blob;\n };\n Workbook.prototype.saveDrawingRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var drawingRelation = '';\n var length = sheet.images.length;\n var id = this.imageCount - sheet.images.length;\n for (var i = 1; i <= length; i++) {\n id++;\n /* tslint:disable-next-line:max-line-length */\n drawingRelation += '';\n }\n this.addToArchive((drawingRelation + ''), 'xl/drawings/_rels/drawing' + this.drawingCount + '.xml.rels');\n };\n Workbook.prototype.pixelsToColumnWidth = function (pixels) {\n var dDigitWidth = 7;\n var val = (pixels > dDigitWidth + 5) ?\n this.trunc((pixels - 5) / dDigitWidth * 100 + 0.5) / 100 :\n pixels / (dDigitWidth + 5);\n return (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n };\n Workbook.prototype.ColumnWidthToPixels = function (val) {\n var dDigitWidth = 7;\n var fileWidth = (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n return this.trunc(((256 * fileWidth + this.trunc(128 / dDigitWidth)) / 256) * dDigitWidth);\n };\n Workbook.prototype.trunc = function (x) {\n var n = x - x % 1;\n return n === 0 && (x < 0 || (x === 0 && (1 / x !== 1 / 0))) ? -0 : n;\n };\n Workbook.prototype.pixelsToRowHeight = function (pixels) {\n return (pixels * this.unitsProportions[5] / this.unitsProportions[6]);\n };\n Workbook.prototype.saveSheetRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var relStr = '';\n for (var _i = 0, _a = sheet.hyperLinks; _i < _a.length; _i++) {\n var hLink = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n if (sheet.images != undefined && sheet.images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n relStr += '';\n return relStr;\n };\n Workbook.prototype.saveSheetView = function (sheet) {\n var paneString = ' 0) {\n /* tslint:disable-next-line:max-line-length */\n var sstStart = '';\n var si = '';\n for (var i = 0; i < length; i++) {\n if (this.sharedString[i].indexOf('') !== 0) {\n si += '';\n si += this.processString(this.sharedString[i]);\n si += '';\n }\n else {\n si += '';\n si += this.sharedString[i];\n si += '';\n }\n }\n si += '';\n this.addToArchive(sstStart + si, 'xl/sharedStrings.xml');\n }\n };\n Workbook.prototype.processString = function (value) {\n if (typeof value == \"string\") {\n if (value.indexOf('&') !== -1) {\n value = value.replace(/&/g, '&');\n }\n if (value.indexOf('<') !== -1) {\n value = value.replace(/') !== -1) {\n value = value.replace(/>/g, '>');\n }\n if (value.indexOf('\\v') !== -1) {\n value = value.replace(/\\v/g, '_x000B_');\n }\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n if (value[i].indexOf('&') !== -1) {\n value[i] = value[i].replace(/&/g, '&');\n }\n if (value[i].indexOf('<') !== -1) {\n value[i] = value[i].replace(/') !== -1) {\n value[i] = value[i].replace(/>/g, '>');\n }\n if (value[i].indexOf('\\v') !== -1) {\n value[i] = value[i].replace(/\\v/g, '_x000B_');\n }\n }\n }\n return value;\n };\n Workbook.prototype.saveStyles = function () {\n this.updateCellXfsStyleXfs();\n /* tslint:disable-next-line:max-line-length */\n var styleTemp = '';\n styleTemp += this.saveNumberFormats();\n styleTemp += this.saveFonts();\n styleTemp += this.saveFills();\n styleTemp += this.saveBorders();\n styleTemp += this.saveCellStyleXfs();\n styleTemp += this.saveCellXfs();\n styleTemp += this.saveCellStyles();\n this.addToArchive(styleTemp + '', 'xl/styles.xml');\n };\n Workbook.prototype.updateCellXfsStyleXfs = function () {\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var style = _a[_i];\n var cellXfs = undefined;\n if (style.isGlobalStyle) {\n cellXfs = new CellStyleXfs();\n cellXfs.xfId = (style.index - 1);\n }\n else {\n cellXfs = new CellXfs();\n cellXfs.xfId = 0;\n }\n //Add font\n var compareFontResult = this.isNewFont(style);\n if (!compareFontResult.result) {\n var font = new Font();\n font.b = style.bold;\n font.i = style.italic;\n font.name = style.fontName;\n font.sz = style.fontSize;\n font.u = style.underline;\n font.strike = style.strikeThrough;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n var backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n var fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n var fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n var numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n };\n Workbook.prototype.saveNumberFormats = function () {\n if (this.mNumFmt.size >= 1) {\n var numFmtStyle_1 = '';\n this.mNumFmt.forEach(function (value, key) {\n numFmtStyle_1 += '';\n });\n return (numFmtStyle_1 += '');\n }\n else {\n return '';\n }\n };\n Workbook.prototype.saveFonts = function () {\n /* tslint:disable-next-line:max-line-length */\n var fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n if (font.strike) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n };\n Workbook.prototype.saveFills = function () {\n /* tslint:disable-next-line:max-line-length */\n var fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach(function (value, key) {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n };\n Workbook.prototype.saveBorders = function () {\n /* tslint:disable-next-line:max-line-length */\n var bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (var _i = 0, _a = this.mBorders; _i < _a.length; _i++) {\n var borders = _a[_i];\n if (this.isAllBorder(borders)) {\n var color = borders.all.color.replace('#', '');\n var lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n };\n Workbook.prototype.saveCellStyles = function () {\n var _this = this;\n var cellStyleString = '';\n this.cellStyles.forEach(function (value, key) {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveCellXfs = function () {\n /* tslint:disable-next-line:max-line-length */\n var cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellXfs; _i < _a.length; _i++) {\n var cellXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveAlignment = function (cellXf) {\n var alignString = '';\n return alignString;\n };\n Workbook.prototype.saveApp = function (builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n var appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n };\n Workbook.prototype.saveCore = function (builtInProperties) {\n var createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n var coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n };\n Workbook.prototype.saveTopLevelRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n };\n Workbook.prototype.saveWorkbookRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var wbRelation = '';\n var length = this.worksheets.length;\n var count = 0;\n for (var i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n };\n Workbook.prototype.saveContentType = function () {\n /* tslint:disable-next-line:max-line-length */\n var contentTypeString = '';\n var sheetsOverride = '';\n var length = this.worksheets.length;\n var drawingIndex = 0;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n if (this.worksheets[i].images != undefined && this.worksheets[i].images.length > 0) {\n drawingIndex++;\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n }\n }\n if (this.imageCount > 0)\n sheetsOverride += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n contentTypeString += '';\n }\n this.addToArchive((contentTypeString + sheetsOverride + ''), '[Content_Types].xml');\n };\n Workbook.prototype.addToArchive = function (xmlString, itemName) {\n if (typeof (xmlString) === 'string') {\n var blob = new Blob([xmlString], { type: 'text/plain' });\n var archiveItem = new ZipArchiveItem(blob, itemName);\n this.mArchive.addItem(archiveItem);\n }\n else {\n var archiveItem = new ZipArchiveItem(xmlString, itemName);\n this.mArchive.addItem(archiveItem);\n }\n };\n Workbook.prototype.processMergeCells = function (cell, rowIndex, mergeCells) {\n if (cell.rowSpan !== 0 || cell.colSpan !== 0) {\n var mCell = new MergeCell();\n mCell.x = cell.index;\n mCell.width = cell.colSpan;\n mCell.y = rowIndex;\n mCell.height = cell.rowSpan;\n var startCell = this.getCellName(mCell.y, mCell.x);\n var endCell = this.getCellName(rowIndex + mCell.height, cell.index + mCell.width);\n mCell.ref = startCell + ':' + endCell;\n var mergedCell = mergeCells.add(mCell);\n var start = { x: mCell.x, y: mCell.y };\n var end = {\n x: (cell.index + mCell.width), y: (rowIndex + mCell.height)\n };\n this.updatedMergedCellStyles(start, end, cell);\n }\n return mergeCells;\n };\n Workbook.prototype.updatedMergedCellStyles = function (sCell, eCell, cell) {\n for (var x = sCell.x; x <= eCell.x; x++) {\n for (var y = sCell.y; y <= eCell.y; y++) {\n this.mergedCellsStyle.set(this.getCellName(y, x), { x: x, y: y, styleIndex: cell.styleIndex });\n }\n }\n };\n /**\n * Returns the tick count corresponding to the given year, month, and day.\n * @param year number value of year\n * @param month number value of month\n * @param day number value of day\n */\n Workbook.prototype.dateToTicks = function (year, month, day) {\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysToMonth365 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n var daysToMonth366 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\n if (year >= 1 && year <= 9999 && month >= 1 && month <= 12) {\n var days = this.isLeapYear(year) ? daysToMonth366 : daysToMonth365;\n var y = year - 1;\n var n = y * 365 + ((y / 4) | 0) - ((y / 100) | 0) + ((y / 400) | 0) + days[month - 1] + day - 1;\n return n * ticksPerDay;\n }\n throw new Error('Not a valid date');\n };\n /**\n * Return the tick count corresponding to the given hour, minute, second.\n * @param hour number value of hour\n * @param minute number value if minute\n * @param second number value of second\n */\n Workbook.prototype.timeToTicks = function (hour, minute, second) {\n if (hour >= 0 && hour < 24 && minute >= 0 && minute < 60 && second >= 0 && second < 60) {\n var totalSeconds = hour * 3600 + minute * 60 + second;\n return totalSeconds * 10000 * 1000;\n }\n throw new Error('Not valid time');\n };\n /**\n * Checks if given year is a leap year.\n * @param year Year value.\n */\n Workbook.prototype.isLeapYear = function (year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n };\n /**\n * Converts `DateTime` to the equivalent OLE Automation date.\n */\n Workbook.prototype.toOADate = function (date) {\n var ticks = 0;\n /* tslint:disable-next-line:max-line-length */\n ticks = this.dateToTicks(date.getFullYear(), (date.getMonth() + 1), date.getDate()) + this.timeToTicks(date.getHours(), date.getMinutes(), date.getSeconds());\n if (ticks === 0) {\n return 0.0;\n }\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysTo1899 = (((365 * 4 + 1) * 25 - 1) * 4 + 1) * 4 + ((365 * 4 + 1) * 25 - 1) * 3 - 367;\n var doubleDateOffset = daysTo1899 * ticksPerDay;\n var oaDateMinAsTicks = (((365 * 4 + 1) * 25 - 1) - 365) * ticksPerDay;\n if (ticks < oaDateMinAsTicks) {\n throw new Error('Arg_OleAutDateInvalid');\n }\n var millisPerDay = 1000 * 60 * 60 * 24;\n return ((ticks - doubleDateOffset) / 10000) / millisPerDay;\n };\n return Workbook;\n}());\nexport { Workbook };\n/**\n * BuiltInProperties Class\n * @private\n */\nvar BuiltInProperties = /** @class */ (function () {\n function BuiltInProperties() {\n }\n return BuiltInProperties;\n}());\nexport { BuiltInProperties };\n","import * as events from '../base/constant';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { isNullOrUndefined, getEnumValue, compile, getValue, detach, extend } from '@syncfusion/ej2-base';\nimport { Data } from '../actions/data';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { CellType } from '../base/enum';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getPrintGridModel, getUid, isExportColumns, updateColumnTypeForExportColumns, prepareColumns, measureColumnDepth } from '../base/util';\nimport { defaultCurrencyCode } from '@syncfusion/ej2-base';\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for the Grid Excel Export module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function ExcelExport(parent, locator) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isChild = false;\n this.isElementIdChanged = false;\n this.gridPool = {};\n this.sheet = {};\n this.grpFooterTemplates = [];\n this.footerTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.locator = locator;\n this.l10n = this.locator.getService('localization');\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n ExcelExport.prototype.init = function (gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n };\n /**\n * Export Grid to Excel file.\n *\n * @param {IGrid} grid - Defines the grid.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {Workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {boolean} isCsv - true if export to CSV.\n * @param {boolean} isBlob - true if isBlob is enabled.\n * @returns {Promise} - Returns the map for export.\n */\n // eslint-disable-next-line\n ExcelExport.prototype.Map = function (grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n var gObj = grid;\n var cancel = 'cancel';\n var isBlb = 'isBlob';\n var Child = 'isChild';\n var csv = 'isCsv';\n var workbk = 'workbook';\n var isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if ((grid.childGrid || grid.detailTemplate) && !(!isNullOrUndefined(exportProperties) && exportProperties.hierarchyExportMode === 'None')) {\n grid.expandedRows = getPrintGridModel(grid).expandedRows;\n }\n var args = {\n requestType: 'beforeExcelExport', gridObject: gObj, cancel: false,\n isMultipleExport: isMultipleExport, workbook: workbook, isCsv: isCsv, isBlob: isBlob, isChild: this.isChild,\n grpFooterTemplates: this.grpFooterTemplates\n };\n gObj.trigger(events.beforeExcelExport, args);\n if (args[\"\" + cancel]) {\n return new Promise(function (resolve) {\n return resolve();\n });\n }\n this.parent.log('exporting_begin', this.getModuleName());\n this.data = new Data(gObj);\n this.isExporting = true;\n this.isBlob = args[\"\" + isBlb];\n this.isChild = args[\"\" + Child];\n this.grpFooterTemplates = args['grpFooterTemplates'];\n if (args[\"\" + csv]) {\n this.isCsvExport = args[\"\" + csv];\n }\n else {\n this.isCsvExport = false;\n }\n if (isExportColumns(exportProperties)) {\n updateColumnTypeForExportColumns(exportProperties, gObj);\n }\n return this.processRecords(gObj, exportProperties, args[\"\" + isMultiEx], args[\"\" + workbk]);\n };\n ExcelExport.prototype.exportingSuccess = function (resolve) {\n this.isExporting = false;\n this.parent.trigger(events.excelExportComplete, this.isBlob ? { promise: this.blobPromise } : { gridInstance: this.parent });\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (gObj.allowGrouping && gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length) {\n if (isNullOrUndefined(exportProperties)) {\n exportProperties = { hierarchyExportMode: 'All' };\n }\n else {\n exportProperties.hierarchyExportMode = exportProperties.hierarchyExportMode || 'All';\n }\n }\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource)) {\n exportProperties.dataSource = exportProperties.dataSource instanceof DataManager ?\n exportProperties.dataSource : new DataManager(exportProperties.dataSource);\n var query_1 = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query_1.isCountRequired) || gObj.aggregates) {\n query_1.isCountRequired = true;\n }\n return new Promise(function (resolve) {\n var dataManager = exportProperties.dataSource.executeQuery(query_1);\n dataManager.then(function (r) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(function () {\n _this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, _this.parent.getCurrentViewRecords());\n _this.exportingSuccess(resolve);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise_1.push(this.helper.getColumnData(gObj));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(function () {\n _this.exportingSuccess(resolve);\n });\n }).catch(function (e) {\n reject(_this.book);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n }\n };\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, r) {\n var _this = this;\n this.groupedColLength = gObj.groupSettings.columns.length;\n var blankRows = 5;\n var separator;\n var rows = [];\n var colDepth = measureColumnDepth(gObj.columns);\n var isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.sheet.images = [];\n }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\n this.sheet.images = [];\n this.styles = workbook.styles;\n }\n else {\n this.workSheet = [];\n this.rows = workbook.worksheets[0].rows;\n this.columns = workbook.worksheets[0].columns;\n this.styles = workbook.styles;\n this.sheet.images = workbook.worksheets[0].images;\n this.rowLength = (this.rows[this.rows.length - 1].index + blankRows);\n this.rowLength++;\n }\n if (isExportPropertiesPresent) {\n if (!isNullOrUndefined(isMultipleExport)) {\n if (!isNullOrUndefined(exportProperties.header) && (isMultipleExport || this.expType === 'NewSheet')) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n if (this.expType === 'AppendToSheet') {\n if (!isMultipleExport) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n else {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n else {\n if (!isNullOrUndefined(exportProperties.header)) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n this.includeHiddenColumn = (isExportPropertiesPresent ? exportProperties.includeHiddenColumn : false);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n gObj.childGridLevel = 0;\n rows = _this.processGridExport(gObj, exportProperties, r);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n var organisedRows = [];\n _this.organiseRows(rows, rows[0].index, organisedRows);\n _this.rows = _this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(_this.footer)) {\n if ((_this.expType === 'AppendToSheet' && !isMultipleExport) || (_this.expType === 'NewSheet')) {\n _this.processExcelFooter(_this.footer);\n }\n }\n if (_this.columns.length > 0) {\n _this.sheet.columns = _this.columns;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.sheet.rows = _this.rows;\n _this.sheet.enableRtl = _this.parent.enableRtl;\n if (_this.parent.allowFiltering && gObj.getVisibleColumns().length && isExportPropertiesPresent &&\n exportProperties.enableFilter) {\n var headerRowLen = exportProperties.header ? exportProperties.header.headerRows ||\n exportProperties.header.rows.length : 0;\n var autoFilters = {\n row: colDepth + headerRowLen, column: _this.groupedColLength ? _this.groupedColLength + 1 :\n _this.sheet.columns[0].index, lastRow: _this.sheet.rows.length, lastColumn: _this.sheet.columns.length\n };\n _this.sheet.autoFilters = autoFilters;\n }\n _this.workSheet.push(_this.sheet);\n _this.book.worksheets = _this.workSheet;\n _this.book.styles = _this.styles;\n gObj.notify('finalPageSetup', _this.book);\n if (!isMultipleExport) {\n if (_this.isCsvExport) {\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n var book = new Workbook(_this.book, 'csv', gObj.locale, defaultCurrencyCode, separator);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.csv');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('text/csv');\n }\n }\n else {\n var book = new Workbook(_this.book, 'xlsx', gObj.locale, defaultCurrencyCode);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.xlsx');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n }\n }\n if (_this.isElementIdChanged) {\n gObj.element.id = '';\n }\n delete gObj.expandedRows;\n }\n return workbook;\n });\n };\n ExcelExport.prototype.organiseRows = function (rows, initialIndex, organisedRows) {\n if (!rows.length) {\n return initialIndex;\n }\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n var childRows = row.childRows;\n if (childRows) {\n row.index = initialIndex++;\n delete row.childRows;\n organisedRows.push(row);\n initialIndex = this.organiseRows(childRows, initialIndex, organisedRows);\n }\n else {\n row.index = initialIndex++;\n organisedRows.push(row);\n }\n }\n return initialIndex;\n };\n ExcelExport.prototype.processGridExport = function (gObj, exportProperties, r) {\n var excelRows = [];\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if ((gObj.childGrid || gObj.detailTemplate) && !isNullOrUndefined(exportProperties)) {\n gObj.hierarchyPrintMode = exportProperties.hierarchyExportMode || 'Expanded';\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var gColumns = isExportColumns(exportProperties) ?\n prepareColumns(exportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(gObj.columns);\n var headerRow = helper.getHeaders(gColumns, this.includeHiddenColumn);\n var groupIndent = gObj.groupSettings.columns.length ? gObj.groupSettings.columns.length - 1 : 0;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length &&\n isNullOrUndefined(exportProperties.dataSource)) {\n if (exportProperties.exportType === 'CurrentPage' && (!gObj.groupSettings.enableLazyLoading\n || gObj.getDataModule().isRemote())) {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\n }\n else if (gObj.groupSettings.enableLazyLoading && !gObj.getDataModule().isRemote()) {\n var groupData = void 0;\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length) {\n var isAllPage = exportProperties.exportType === 'CurrentPage'\n ? false : true;\n var groupQuery = gObj.getDataModule().generateQuery(isAllPage);\n var lazyloadData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n groupQuery.lazyLoad = [];\n var fName = 'fn';\n if (!isAllPage) {\n for (var i = 0; i < groupQuery.queries.length; i++) {\n if (groupQuery.queries[parseInt(i.toString(), 10)]['' + fName] === 'onPage') {\n groupQuery.queries[parseInt(i.toString(), 10)].e.pageSize = lazyloadData.reduce(function (acc, curr) { return acc + curr['count']; }, 0);\n }\n }\n }\n if (exportProperties.hierarchyExportMode === 'All') {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n }\n else if (exportProperties.hierarchyExportMode === 'Expanded' || exportProperties.hierarchyExportMode === 'None' ||\n isNullOrUndefined(exportProperties.hierarchyExportMode)) {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n var lazQuery = this.parent.contentModule.lazyLoadQuery;\n for (var i = 0; i < lazQuery.length; i++) {\n var query = lazQuery[parseInt(i.toString(), 10)];\n var where = query[0];\n for (var j = 0; j < groupData.length; j++) {\n var data = groupData[parseInt(j.toString(), 10)];\n if (data['key'] === where['value']) {\n lazyloadData[parseInt(i.toString(), 10)] = groupData[parseInt(j.toString(), 10)];\n }\n }\n }\n groupData = lazyloadData;\n }\n }\n else {\n groupData = gObj.currentViewData;\n }\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, groupData, excelRows, helper);\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n gObj.notify(events.exportDataBound, { excelRows: excelRows, type: 'excel' });\n this.capTemplate = undefined;\n this.footerTemplates = [];\n this.grpFooterTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\n return excelRows;\n };\n ExcelExport.prototype.processRecordContent = function (gObj, returnType, headerRow, exportProperties, currentViewRecords, excelRow, helper) {\n var record;\n if (!isNullOrUndefined(currentViewRecords) && currentViewRecords.length) {\n record = currentViewRecords;\n }\n else {\n record = returnType.result;\n }\n if (!isNullOrUndefined(record.level)) {\n this.processGroupedRows(gObj, record, headerRow, record.level, 0, exportProperties, excelRow, helper);\n }\n else {\n this.processRecordRows(gObj, record, headerRow, 0, 0, exportProperties, excelRow, helper);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n if (!isNullOrUndefined(currentViewRecords) && !this.parent.groupSettings.enableLazyLoading) {\n this.processAggregates(gObj, returnType.result, excelRow, currentViewRecords);\n }\n else {\n var result = returnType.result.GroupGuid ?\n returnType.result.records : returnType.result;\n this.processAggregates(gObj, result, excelRow);\n }\n }\n return excelRow;\n };\n ExcelExport.prototype.processGroupedRows = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n var cells = [];\n var index = 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = {};\n cell.index = (index + level) - 1;\n var col = gObj.getColumnByField(item.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel', data: item };\n this.parent.trigger(events.exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n if (!isNullOrUndefined(cArgs.style)) {\n cell.style = this.mergeOptions(cell.style, cArgs.style);\n }\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, (dataSource.level + dataSource.childLevels) - 1, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n var lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n var hIndex = 0;\n for (var _a = 0, _b = excelRows[excelRows.length - 1].cells; _a < _b.length; _a++) {\n var tCell = _b[_a];\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level - 1), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1), true);\n }\n }\n };\n ExcelExport.prototype.processRecordRows = function (gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n var index = 1;\n var cells = [];\n var columns = headerRow.columns;\n var rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n cells = [];\n startIndex++;\n index = 1;\n var templateRowHeight = void 0;\n for (var c = 0, len = row.cells.length; c < len; c++) {\n var gCell = row.cells[parseInt(c.toString(), 10)];\n if (gCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n var fkData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n fkData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, fkData);\n }\n if (!isNullOrUndefined(value)) {\n var cell = {};\n var idx = index + level + gObj.childGridLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(events.excelQueryCellInfo, excelCellArgs);\n if (!isNullOrUndefined(excelCellArgs.image) && !isNullOrUndefined(excelCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelCellArgs, idx);\n if (excelCellArgs.image.height && excelCellArgs.value !== '') {\n templateRowHeight += 30;\n }\n }\n if (!isNullOrUndefined(excelCellArgs.hyperLink)) {\n excelCellArgs.cell.hyperlink = { target: excelCellArgs.hyperLink.target };\n excelCellArgs.value = excelCellArgs.hyperLink.displayText || excelCellArgs.value;\n }\n cell = excelCellArgs.cell;\n cell.index = idx;\n cell.value = excelCellArgs.value;\n if (excelCellArgs.data === '' && gObj.childGridLevel && index === 1) {\n var style = {};\n style.hAlign = 'left';\n excelCellArgs = { style: style };\n cell.colSpan = gObj.getVisibleColumns().length;\n cell.value = this.l10n.getConstant('EmptyRecord');\n }\n if (excelCellArgs.colSpan > 1) {\n cell.colSpan = excelCellArgs.colSpan;\n }\n if (!isNullOrUndefined(excelCellArgs.style)) {\n var styleIndex = this.getColumnStyle(gObj, index + level);\n cell.style = this.mergeOptions(this.styles[parseInt(styleIndex.toString(), 10)], excelCellArgs.style);\n }\n else {\n cell.style = { name: gObj.element.id + 'column' + (index + level) };\n }\n cells.push(cell);\n }\n index++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n if (this.groupedColLength && this.groupedColLength < 8 && (level + 1) > 0) {\n excelRow.grouping = { outlineLevel: (level + 1), isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if ((row.isExpand || this.isChild) && (!isNullOrUndefined(gObj.childGrid) || !isNullOrUndefined(gObj.detailTemplate))) {\n if (!isNullOrUndefined(gObj.childGrid)) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(excelExportProperties) && excelExportProperties.exportType) ?\n excelExportProperties.exportType : 'AllPages';\n var returnVal = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnVal.childGrid;\n var element = returnVal.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n childGridObj.childGridLevel = gObj.childGridLevel + 1;\n var args = { childGrid: childGridObj, row: row, exportProperties: excelExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(excelRow, childGridObj, excelExportProperties, row);\n childGridObj.appendTo(element);\n }\n else {\n var args = { parentRow: row, row: excelRow, value: {}, action: 'excelexport', gridInstance: gObj };\n this.parent.trigger(events.exportDetailTemplate, args);\n excelRow.childRows = this.processDetailTemplate(args);\n }\n }\n gObj.notify(events.exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\n };\n ExcelExport.prototype.processDetailTemplate = function (templateData) {\n var _this = this;\n var rows = [];\n var templateRowHeight;\n var detailIndent = 2;\n var detailCellIndex;\n if (templateData.value.columnHeader || templateData.value.rows) {\n var processCell_1 = function (currentCell, isHeader) {\n var cell = {};\n if (isNullOrUndefined(currentCell.index)) {\n currentCell.index = detailCellIndex;\n detailCellIndex++;\n }\n cell.index = currentCell.index + detailIndent;\n if (!isNullOrUndefined(currentCell.value)) {\n cell.value = currentCell.value;\n }\n if (!isNullOrUndefined(currentCell.colSpan)) {\n cell.colSpan = currentCell.colSpan;\n }\n if (!isNullOrUndefined(currentCell.rowSpan)) {\n cell.rowSpan = currentCell.rowSpan;\n }\n if (isHeader) {\n cell.style = _this.getHeaderThemeStyle(_this.theme);\n }\n else {\n cell.style = _this.getRecordThemeStyle(_this.theme);\n }\n if (!isNullOrUndefined(currentCell.style)) {\n var cellStyle = {\n fontColor: currentCell.style.fontColor,\n fontName: currentCell.style.fontName,\n fontSize: currentCell.style.fontSize,\n hAlign: currentCell.style.excelHAlign,\n vAlign: currentCell.style.excelVAlign,\n rotation: currentCell.style.excelRotation,\n bold: currentCell.style.bold,\n indent: currentCell.style.indent,\n italic: currentCell.style.italic,\n underline: currentCell.style.underline,\n backColor: currentCell.style.backColor,\n wrapText: currentCell.style.wrapText,\n borders: currentCell.style.excelBorders,\n numberFormat: currentCell.style.excelNumberFormat,\n type: currentCell.style.excelType,\n strikeThrough: currentCell.style.strikeThrough\n };\n cell.style = _this.mergeOptions(cellStyle, cell.style);\n }\n if (!isNullOrUndefined(currentCell.image) && !isNullOrUndefined(currentCell.image.base64)) {\n if (currentCell.rowSpan > 1) {\n _this.setImage(currentCell, cell.index);\n }\n else {\n templateRowHeight = _this.setImage(currentCell, cell.index);\n if (currentCell.image.height && currentCell.value !== '') {\n templateRowHeight += 30;\n }\n }\n }\n if (!isNullOrUndefined(currentCell.hyperLink)) {\n cell.hyperlink = { target: currentCell.hyperLink.target };\n cell.value = currentCell.hyperLink.displayText;\n }\n return cell;\n };\n var processRow = function (currentRow, isHeader) {\n var excelDetailCells = [];\n detailCellIndex = 0;\n for (var j = 0; j < currentRow.cells.length; j++) {\n var currentCell = currentRow.cells[parseInt(j.toString(), 10)];\n var detailCell = processCell_1(currentCell, isHeader);\n excelDetailCells.push(detailCell);\n }\n var row = { index: _this.rowLength++, cells: excelDetailCells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row.height = templateRowHeight;\n templateRowHeight = null;\n }\n rows.push(row);\n };\n if (templateData.value.columnHeader) {\n for (var i = 0; i < templateData.value.columnHeader.length; i++) {\n processRow(templateData.value.columnHeader[parseInt(i.toString(), 10)], true);\n }\n }\n if (templateData.value.rows) {\n for (var i = 0; i < templateData.value.rows.length; i++) {\n processRow(templateData.value.rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n else if (templateData.value.image) {\n templateRowHeight = this.setImage(templateData.value, detailIndent);\n var row = {\n index: this.rowLength++,\n cells: [{\n index: detailIndent,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row.height = templateRowHeight;\n templateRowHeight = null;\n }\n rows.push(row);\n }\n else if (templateData.value.text) {\n var row = {\n index: this.rowLength++,\n cells: [{\n index: detailIndent,\n value: templateData.value.text,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n rows.push(row);\n }\n else if (templateData.value.hyperLink) {\n var row = {\n index: this.rowLength++,\n cells: [{\n index: 2,\n hyperlink: { target: templateData.value.hyperLink.target },\n value: templateData.value.hyperLink.displayText,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n rows.push(row);\n }\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].grouping = {\n outlineLevel: 1, isCollapsed: !templateData.parentRow.isExpand, isHidden: !templateData.parentRow.isExpand\n };\n }\n return rows;\n };\n ExcelExport.prototype.setImage = function (args, idx) {\n if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelImage = {\n image: args.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n if (args.image.width && args.image.height) {\n excelImage.width = args.image.width;\n excelImage.height = args.image.height;\n }\n this.sheet.images.push(excelImage);\n this.columns[idx - 1].width = args.image.width || this.columns[idx - 1].width;\n return args.image.height || 50;\n };\n ExcelExport.prototype.childGridCell = function (excelRow, childGridObj, excelExportProps, gRow) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = _this.processGridExport(childGridObj, excelExportProps, result);\n var intent = _this.parent.groupSettings.columns.length;\n var rows = excelRow.childRows;\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].grouping = { outlineLevel: intent + childGridObj\n .childGridLevel, isCollapsed: !gRow.isExpand, isHidden: !gRow.isExpand };\n }\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return excelRow;\n };\n };\n ExcelExport.prototype.processAggregates = function (gObj, rec, excelRows, currentViewRecords, indent, byGroup) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var columns = summaryModel.getColumns();\n columns = columns.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n var data = undefined;\n if (!isNullOrUndefined(currentViewRecords)) {\n data = currentViewRecords;\n }\n else {\n data = rec;\n }\n if (indent === undefined) {\n indent = 0;\n }\n if (gObj.groupSettings.columns.length > 0 && byGroup) {\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n var groupSummaryRows = groupSummaryModel.generateRows(data, { level: data.level });\n if (groupSummaryRows.length > 0) {\n excelRows = this.fillAggregates(gObj, groupSummaryRows, indent, excelRows);\n }\n }\n else {\n indent = gObj.groupSettings.columns.length > 0 && !byGroup ? gObj.groupSettings.columns.length : indent;\n var sRows = summaryModel.generateRows(data, rec.aggregates, null, null, columns);\n if (sRows.length > 0 && !byGroup) {\n indent = gObj.groupSettings.columns.length ? indent - 1 : indent;\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eCell = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var columnsDetails = {};\n if (!isNullOrUndefined(cell.attributes.index)) {\n columnsDetails = this.parent.getColumnByIndex(cell.attributes.index);\n }\n if (cell.cellType === CellType.DetailFooterIntent || columnsDetails.type === 'checkbox' || columnsDetails.commands) {\n continue;\n }\n if ((cell.visible || this.includeHiddenColumn)) {\n index++;\n if (cell.isDataCell) {\n isEmpty = false;\n var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n eCell.index = index + indent + gObj.childGridLevel;\n if (footerTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.CaptionSummary, cell.column.groupCaptionTemplate, cell, row);\n }\n else {\n for (var _c = 0, _d = Object.keys(row.data[cell.column.field]); _c < _d.length; _c++) {\n var key = _d[_c];\n if (key === cell.column.type) {\n if (!isNullOrUndefined(row.data[cell.column.field].Sum)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - sum\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Average)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - average\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Max)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - max\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Min)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - min\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Count)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - count\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].TrueCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - truecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].FalseCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - falsecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Custom)) {\n eCell.value = row.data[cell.column.field].Custom;\n }\n }\n }\n }\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n this.aggregateStyle(cell.column, eCell.style, cell.column.field);\n var gridCellStyle = cell.attributes.style;\n if (gridCellStyle.textAlign) {\n eCell.style.hAlign = gridCellStyle.textAlign.toLowerCase();\n }\n var args = {\n row: row,\n type: footerTemplate ? 'Footer' : groupFooterTemplate ? 'GroupFooter' : 'GroupCaption',\n style: eCell,\n cell: cell\n };\n this.parent.trigger(events.excelAggregateQueryCellInfo, args);\n cells.push(eCell);\n }\n else {\n if (customIndex === undefined) {\n eCell.index = index + indent + gObj.childGridLevel;\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n cells.push(eCell);\n }\n }\n }\n }\n if (!isNullOrUndefined(customIndex)) {\n excelRows.push({ index: customIndex, cells: cells });\n }\n else {\n var row_1 = {};\n var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\n if (this.groupedColLength < 8 && this.groupedColLength > 0 && !(gObj.groupSettings.enableLazyLoading && isNullOrUndefined(excelRows[excelRows.length - 1][\"\" + dummyGrouping]))) {\n var level = excelRows[excelRows.length - 1][\"\" + dummyGrouping][\"\" + dummyOutlineLevel];\n var grouping = { outlineLevel: level, isCollapsed: true };\n row_1 = { index: this.rowLength++, cells: cells, grouping: grouping };\n }\n else {\n row_1 = { index: this.rowLength++, cells: cells };\n }\n if (!isEmpty) {\n excelRows.push(row_1);\n }\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.aggregateStyle = function (col, style, field) {\n var column = this.parent.getColumnByField(field);\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n }\n if (!isNullOrUndefined(column) && isNullOrUndefined(style.type)) {\n style.type = column.type.toLowerCase();\n }\n };\n ExcelExport.prototype.getAggreateValue = function (gObj, cellType, template, cell, row) {\n var templateFn = {};\n templateFn[getEnumValue(CellType, cell.cellType)] = compile(template);\n var txt;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if ((this.parent.isReact || this.parent.isVue || this.parent.isVue3 || this.parent.isAngular) &&\n !(typeof cell.column.footerTemplate === 'string' || typeof cell.column.groupFooterTemplate === 'string' || typeof cell.column.groupCaptionTemplate === 'string')) {\n txt = data[(cell.column.type)];\n return !isNullOrUndefined(txt) ? (txt) : '';\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n return !isNullOrUndefined(txt[0]) ? txt[0].textContent : '';\n };\n ExcelExport.prototype.mergeOptions = function (JSON1, JSON2) {\n var result = {};\n var attrname = Object.keys(JSON1);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON1[attrname[parseInt(index.toString(), 10)]];\n }\n }\n attrname = Object.keys(JSON2);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON2[attrname[parseInt(index.toString(), 10)]];\n }\n }\n return result;\n };\n ExcelExport.prototype.getColumnStyle = function (gObj, columnIndex) {\n var index = 0;\n for (var _i = 0, _a = this.styles; _i < _a.length; _i++) {\n var style = _a[_i];\n if (style.name === gObj.element.id + 'column' + columnIndex) {\n return index;\n }\n index++;\n }\n return undefined;\n };\n ExcelExport.prototype.headerRotation = function (args) {\n var degree = args.style.rotation;\n if (degree <= 90 && degree >= 0) {\n args.style.hAlign = 'Left';\n }\n else if (degree > 90 && degree <= 180) {\n args.style.hAlign = 'Right';\n }\n else {\n degree = 180;\n args.style.hAlign = 'Right';\n }\n args.style.rotation = degree;\n };\n ExcelExport.prototype.processHeaderContent = function (gObj, headerRow, indent, excelRows) {\n var rowIndex = 1;\n var gridRows = headerRow.rows;\n // Column collection with respect to the records in the grid\n var gridColumns = headerRow.columns;\n var spannedCells = [];\n if (indent > 0) {\n var index = 0;\n while (index !== indent) {\n this.columns.push({ index: index + 1, width: 30 });\n index++;\n }\n }\n for (var col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[parseInt(col.toString(), 10)], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n var templateRowHeight;\n for (var row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[parseInt(row.toString(), 10)].cells.length; column++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var style = {};\n var cell = {};\n var gridCell = gridRows[parseInt(row.toString(), 10)].cells[parseInt(column.toString(), 10)];\n if (gridCell.cellType === CellType.HeaderIndent || gridCell.cellType === CellType.DetailHeader) {\n continue;\n }\n var result = { contains: true, index: 1 };\n while (result.contains) {\n result = this.getIndex(spannedCells, rowIndex, currentCellIndex);\n currentCellIndex = result.index;\n if (!result.contains) {\n cell.index = result.index + gObj.childGridLevel;\n break;\n }\n }\n if (!isNullOrUndefined(gridCell.rowSpan) && gridCell.rowSpan !== 1) {\n cell.rowSpan = gridCell.rowSpan;\n for (var i = rowIndex; i < gridCell.rowSpan + rowIndex; i++) {\n var spannedCell = { rowIndex: 0, columnIndex: 0 };\n spannedCell.rowIndex = i;\n spannedCell.columnIndex = currentCellIndex;\n spannedCells.push(spannedCell);\n }\n }\n if (!isNullOrUndefined(gridCell.colSpan) && gridCell.colSpan !== 1) {\n cell.colSpan = gridCell.colSpan;\n currentCellIndex = currentCellIndex + cell.colSpan - 1;\n }\n cell.value = gridCell.column.headerText;\n style = this.getHeaderThemeStyle(this.theme);\n if (!isNullOrUndefined(gridCell.column.textAlign)) {\n style.hAlign = gridCell.column.textAlign.toLowerCase();\n }\n if (!isNullOrUndefined(gridCell.column.headerTextAlign)) {\n style.hAlign = gridCell.column.headerTextAlign.toLowerCase();\n }\n var excelHeaderCellArgs = { cell: cell, gridCell: gridCell, style: style };\n gObj.trigger(events.excelHeaderQueryCellInfo, excelHeaderCellArgs);\n if (excelHeaderCellArgs.style.rotation) {\n this.headerRotation(excelHeaderCellArgs);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.image) && !isNullOrUndefined(excelHeaderCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelHeaderCellArgs, currentCellIndex);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.hyperLink)) {\n excelHeaderCellArgs.cell.hyperlink = { target: excelHeaderCellArgs.hyperLink.target };\n cell.value = excelHeaderCellArgs.hyperLink.displayText || cell.value;\n }\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n excelRows.push(excelRow);\n }\n return excelRows;\n };\n ExcelExport.prototype.getHeaderThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n };\n ExcelExport.prototype.updateThemeStyle = function (themestyle, style) {\n return extend(style, themestyle);\n };\n ExcelExport.prototype.getCaptionThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n };\n ExcelExport.prototype.getRecordThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n };\n ExcelExport.prototype.processExcelHeader = function (header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n var noRows = void 0;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (var row = 0; row < noRows; row++) {\n var json = header.rows[parseInt(row.toString(), 10)];\n //Row index\n if (!(json.index !== null && !isNullOrUndefined(json.index))) {\n json.index = (row + 1);\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.updatedCellIndex = function (json) {\n var cellsLength = json.cells.length;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n var jsonCell = json.cells[parseInt(cellId.toString(), 10)];\n //cell index\n if (!(jsonCell.index !== null && !isNullOrUndefined(jsonCell.index))) {\n jsonCell.index = (cellId + 1);\n }\n }\n this.rows.push(json);\n };\n ExcelExport.prototype.processExcelFooter = function (footer) {\n if (!isNullOrUndefined(footer.rows)) {\n var noRows = void 0;\n if (footer.footerRows === undefined) {\n this.rowLength += footer.rows.length;\n }\n else {\n if (footer.footerRows > footer.rows.length) {\n this.rowLength += (footer.footerRows - footer.rows.length);\n noRows = footer.rows.length;\n }\n else {\n noRows = footer.footerRows;\n }\n }\n for (var row = 0; row < noRows; row++) {\n var json = footer.rows[parseInt(row.toString(), 10)];\n //Row index\n if (json.index === null || json.index === undefined) {\n json.index = this.rowLength++;\n }\n else {\n json.index += this.rowLength;\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.getIndex = function (spannedCells, rowIndex, columnIndex) {\n for (var _i = 0, spannedCells_1 = spannedCells; _i < spannedCells_1.length; _i++) {\n var spannedCell = spannedCells_1[_i];\n if ((spannedCell.rowIndex === rowIndex) && (spannedCell.columnIndex === columnIndex)) {\n columnIndex = columnIndex + 1;\n return { contains: true, index: columnIndex };\n }\n }\n return { contains: false, index: columnIndex };\n };\n ExcelExport.prototype.parseStyles = function (gObj, col, style, index) {\n if (!isNullOrUndefined(col.format)) {\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type === 'dateonly' ? 'date' : format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = col.type === 'dateonly' ? 'date' : col.type;\n }\n }\n if (!isNullOrUndefined(col.textAlign)) {\n style.hAlign = col.textAlign.toLowerCase();\n }\n if (Object.keys(style).length > 0) {\n style.name = gObj.element.id + 'column' + index;\n this.styles.push(style);\n }\n if (!isNullOrUndefined(col.width) && col.width !== 'auto' && !gObj.childGridLevel) {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n };\n ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","import { closest, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { Resize } from '../actions/resize';\nimport { Page } from '../actions/page';\nimport { parentsUntil, applyBiggerTheme } from '../base/util';\nimport { Group } from '../actions/group';\nimport { Sort } from '../actions/sort';\nimport { PdfExport } from '../actions/pdf-export';\nimport { ExcelExport } from '../actions/excel-export';\nimport * as literals from '../base/string-literals';\nexport var menuClass = {\n header: '.' + literals.gridHeader,\n content: '.' + literals.gridContent,\n edit: '.e-inline-edit',\n batchEdit: '.e-editedbatchcell',\n editIcon: 'e-edit',\n pager: '.e-gridpager',\n delete: 'e-delete',\n save: 'e-save',\n cancel: 'e-cancel',\n copy: 'e-copy',\n pdf: 'e-pdfexport',\n group: 'e-icon-group',\n ungroup: 'e-icon-ungroup',\n csv: 'e-csvexport',\n excel: 'e-excelexport',\n fPage: 'e-icon-first',\n nPage: 'e-icon-next',\n lPage: 'e-icon-last',\n pPage: 'e-icon-prev',\n ascending: 'e-icon-ascending',\n descending: 'e-icon-descending',\n groupHeader: 'e-groupdroparea',\n touchPop: 'e-gridpopup'\n};\n/**\n * The `ContextMenu` module is used to handle context menu actions.\n */\nvar ContextMenu = /** @class */ (function () {\n function ContextMenu(parent, serviceLocator) {\n this.defaultItems = {};\n this.disableItems = [];\n this.hiddenItems = [];\n this.localeText = this.setLocaleKey();\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(events.initialLoad, this.render, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialLoad, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRenderMenu);\n this.parent.off(events.destroy, this.destroy);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler.bind(this));\n };\n ContextMenu.prototype.keyDownHandler = function (e) {\n if (e.code === 'Tab' || e.which === 9) {\n this.contextMenu.close();\n }\n if (e.code === 'Escape') {\n this.contextMenu.close();\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ContextMenu.prototype.render = function () {\n this.parent.element.classList.add('e-noselect');\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_cmenu' });\n EventHandler.add(this.element, 'keydown', this.keyDownHandler.bind(this));\n this.parent.element.appendChild(this.element);\n var target = '#' + this.gridID;\n this.contextMenu = new Menu({\n items: this.getMenuItems(),\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n target: target,\n select: this.contextMenuItemClick.bind(this),\n beforeOpen: this.contextMenuBeforeOpen.bind(this),\n onOpen: this.contextMenuOpen.bind(this),\n onClose: this.contextMenuOnClose.bind(this),\n cssClass: this.parent.cssClass ? 'e-grid-menu' + ' ' + this.parent.cssClass : 'e-grid-menu'\n });\n this.contextMenu.appendTo(this.element);\n };\n ContextMenu.prototype.enableAfterRenderMenu = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.contextMenu) {\n this.contextMenu.destroy();\n remove(this.element);\n this.parent.element.classList.remove('e-noselect');\n }\n this.render();\n }\n };\n ContextMenu.prototype.getMenuItems = function () {\n var menuItems = [];\n var exportItems = [];\n for (var _i = 0, _a = this.parent.contextMenuItems; _i < _a.length; _i++) {\n var item = _a[_i];\n if (typeof item === 'string' && this.getDefaultItems().indexOf(item) !== -1) {\n if (item.toLocaleLowerCase().indexOf('export') !== -1) {\n exportItems.push(this.buildDefaultItems(item));\n }\n else {\n menuItems.push(this.buildDefaultItems(item));\n }\n }\n else if (typeof item !== 'string') {\n menuItems.push(item);\n }\n }\n if (exportItems.length > 0) {\n var exportGroup = this.buildDefaultItems('export');\n exportGroup.items = exportItems;\n menuItems.push(exportGroup);\n }\n return menuItems;\n };\n ContextMenu.prototype.getLastPage = function () {\n var totalpage = Math.floor(this.parent.pageSettings.totalRecordsCount / this.parent.pageSettings.pageSize);\n if (this.parent.pageSettings.totalRecordsCount % this.parent.pageSettings.pageSize) {\n totalpage += 1;\n }\n return totalpage;\n };\n ContextMenu.prototype.contextMenuOpen = function () {\n this.isOpen = true;\n };\n /**\n * @param {ContextMenuClickEventArgs} args - specifies the ContextMenuClickEventArgs argument type\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.contextMenuItemClick = function (args) {\n var item = this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Edit':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode === 'Batch') {\n if (this.row && this.cell && !isNaN(parseInt(this.cell.getAttribute(literals.dataColIndex), 10))) {\n this.parent.editModule.editCell(parseInt(this.row.getAttribute(literals.dataRowIndex), 10), \n // eslint-disable-next-line\n this.parent.getColumns()[parseInt(this.cell.getAttribute(literals.dataColIndex), 10)].field);\n }\n }\n else {\n this.parent.editModule.endEdit();\n this.parent.editModule.startEdit(this.row);\n }\n }\n break;\n case 'Delete':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.parent.editModule.endEdit();\n }\n if (this.parent.getSelectedRecords().length === 1) {\n this.parent.editModule.deleteRow(this.row);\n }\n else {\n this.parent.deleteRecord();\n }\n }\n break;\n case 'Save':\n if (this.parent.editModule) {\n this.parent.editModule.endEdit();\n }\n break;\n case 'Cancel':\n if (this.parent.editModule) {\n this.parent.editModule.closeEdit();\n }\n break;\n case 'Copy':\n this.parent.copy();\n break;\n case 'PdfExport':\n this.parent.pdfExport();\n break;\n case 'ExcelExport':\n this.parent.excelExport();\n break;\n case 'CsvExport':\n this.parent.csvExport();\n break;\n case 'SortAscending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'FirstPage':\n this.parent.goToPage(1);\n break;\n case 'PrevPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage - 1);\n break;\n case 'LastPage':\n this.parent.goToPage(this.getLastPage());\n break;\n case 'NextPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage + 1);\n break;\n }\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(events.contextMenuClick, args);\n };\n ContextMenu.prototype.contextMenuOnClose = function (args) {\n var parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][\"\" + parent] instanceof Menu) {\n this.updateItemStatus();\n }\n this.parent.notify(events.selectRowOnContextOpen, { isOpen: false });\n };\n ContextMenu.prototype.getLocaleText = function (item) {\n return this.l10n.getConstant(this.localeText[\"\" + item]);\n };\n ContextMenu.prototype.updateItemStatus = function () {\n this.contextMenu.showItems(this.hiddenItems);\n this.contextMenu.enableItems(this.disableItems);\n this.hiddenItems = [];\n this.disableItems = [];\n this.isOpen = false;\n };\n ContextMenu.prototype.contextMenuBeforeOpen = function (args) {\n var closestGrid = closest(args.event.target, '.e-grid');\n if (args.event && closestGrid && closestGrid !== this.parent.element) {\n args.cancel = true;\n }\n else if (args.event && (closest(args.event.target, '.' + menuClass.groupHeader)\n || closest(args.event.target, '.' + menuClass.touchPop) ||\n closest(args.event.target, '.e-summarycell') ||\n closest(args.event.target, '.e-groupcaption') ||\n closest(args.event.target, '.e-filterbarcell')) ||\n (this.parent.editSettings.showAddNewRow && closest(args.event.target, '.e-addedrow')\n && this.parent.element.querySelector('.e-editedrow'))) {\n args.cancel = true;\n }\n else {\n this.targetColumn = this.getColumn(args.event);\n if (parentsUntil(args.event.target, 'e-grid')) {\n this.targetRowdata = this.parent.getRowInfo(args.event.target);\n }\n if ((isNullOrUndefined(args.parentItem)) && this.targetColumn) {\n if (this.targetRowdata.cell) {\n this.parent.notify(events.selectRowOnContextOpen, { isOpen: true });\n this.selectRow(args.event, (this.targetRowdata.cell.classList.contains('e-selectionbackground')\n && this.parent.selectionSettings.type === 'Multiple') ? false : true);\n }\n }\n var hideSepItems = [];\n var showSepItems = [];\n for (var _i = 0, _a = args.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var key = this.getKeyFromId(item.id);\n var dItem = this.defaultItems[\"\" + key];\n if (this.getDefaultItems().indexOf(key) !== -1) {\n if (this.ensureDisabledStatus(key)) {\n this.disableItems.push(item.text);\n }\n if (args.event && (this.ensureTarget(args.event.target, menuClass.edit) ||\n this.ensureTarget(args.event.target, menuClass.batchEdit))) {\n if (key !== 'Save' && key !== 'Cancel') {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.parent.editModule && this.parent.editSettings.mode === 'Batch' &&\n ((closest(args.event.target, '.e-gridform')) ||\n this.parent.editModule.getBatchChanges()[literals.changedRecords].length ||\n this.parent.editModule.getBatchChanges()[literals.addedRecords].length ||\n this.parent.editModule.getBatchChanges()[literals.deletedRecords].length) && (key === 'Save' || key === 'Cancel')) {\n continue;\n }\n else if (isNullOrUndefined(args.parentItem) && args.event\n && !this.ensureTarget(args.event.target, dItem.target)) {\n this.hiddenItems.push(item.text);\n }\n }\n else if (item.target && args.event &&\n !this.ensureTarget(args.event.target, item.target)) {\n if (item.separator) {\n hideSepItems.push(item.id);\n }\n else {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.ensureTarget(args.event.target, item.target) && item.separator) {\n showSepItems.push(item.id);\n }\n }\n if (showSepItems.length > 0) {\n this.contextMenu.showItems(showSepItems, true);\n }\n this.contextMenu.enableItems(this.disableItems, false);\n this.contextMenu.hideItems(this.hiddenItems);\n if (hideSepItems.length > 0) {\n this.contextMenu.hideItems(hideSepItems, true);\n }\n this.eventArgs = args.event;\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(events.contextMenuOpen, args);\n if (args.cancel || (this.hiddenItems.length === args.items.length && !args.parentItem)) {\n this.updateItemStatus();\n args.cancel = true;\n }\n }\n applyBiggerTheme(this.parent.element, this.contextMenu.element.parentElement);\n };\n ContextMenu.prototype.ensureTarget = function (targetElement, selector) {\n var target = targetElement;\n if (this.ensureFrozenHeader(targetElement) && (selector === menuClass.header || selector === menuClass.content)) {\n target = closest(targetElement, selector === menuClass.header ? 'thead' : literals.tbody);\n }\n else if (selector === menuClass.content || selector === menuClass.header) {\n target = parentsUntil(closest(targetElement, '.' + literals.table), selector.substr(1, selector.length));\n }\n else {\n target = closest(targetElement, selector);\n }\n return target && parentsUntil(target, 'e-grid') === this.parent.element;\n };\n ContextMenu.prototype.ensureFrozenHeader = function (targetElement) {\n return (this.parent.frozenRows)\n && closest(targetElement, menuClass.header) ? true : false;\n };\n ContextMenu.prototype.ensureDisabledStatus = function (item) {\n var status = false;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n status = !(this.parent.ensureModuleInjected(Resize) && !this.parent.isEdit)\n || (this.targetColumn && !this.targetColumn.field && item === 'AutoFit');\n break;\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n break;\n case 'Ungroup':\n if (!this.parent.allowGrouping || !this.parent.ensureModuleInjected(Group)\n || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'Edit':\n case 'Delete':\n case 'Save':\n case 'Cancel':\n if (!this.parent.editModule || (this.parent.getDataRows().length === 0)) {\n status = true;\n }\n break;\n case 'Copy':\n if ((this.parent.getSelectedRowIndexes().length === 0 && this.parent.getSelectedRowCellIndexes().length === 0) ||\n this.parent.getCurrentViewRecords().length === 0) {\n status = true;\n }\n break;\n case 'export':\n if ((!this.parent.allowExcelExport || !this.parent.excelExport) ||\n !this.parent.ensureModuleInjected(PdfExport) && !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'PdfExport':\n if (!(this.parent.allowPdfExport) || !this.parent.ensureModuleInjected(PdfExport)) {\n status = true;\n }\n break;\n case 'ExcelExport':\n case 'CsvExport':\n if (!(this.parent.allowExcelExport) || !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'SortAscending':\n case 'SortDescending':\n if ((!this.parent.allowSorting) || !this.parent.ensureModuleInjected(Sort) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n else if (this.parent.ensureModuleInjected(Sort) && this.parent.sortSettings.columns.length > 0 && this.targetColumn) {\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === this.targetColumn.field\n && sortColumns[parseInt(i.toString(), 10)].direction.toLowerCase() === item.toLowerCase().replace('sort', '').toLocaleLowerCase()) {\n status = true;\n }\n }\n }\n break;\n case 'FirstPage':\n case 'PrevPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === 1)) {\n status = true;\n }\n break;\n case 'LastPage':\n case 'NextPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === this.getLastPage())) {\n status = true;\n }\n break;\n }\n return status;\n };\n /**\n * Gets the context menu element from the Grid.\n *\n * @returns {Element} returns the element\n */\n ContextMenu.prototype.getContextMenu = function () {\n return this.element;\n };\n /**\n * Destroys the context menu component in the Grid.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ContextMenu.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.contextMenu.destroy();\n if (this.element.parentNode) {\n remove(this.element);\n }\n this.removeEventListener();\n this.parent.element.classList.remove('e-noselect');\n };\n ContextMenu.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n ContextMenu.prototype.generateID = function (item) {\n return this.gridID + '_cmenu_' + item;\n };\n ContextMenu.prototype.getKeyFromId = function (id) {\n return id.replace(this.gridID + '_cmenu_', '');\n };\n ContextMenu.prototype.buildDefaultItems = function (item) {\n var menuItem;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n menuItem = { target: menuClass.header };\n break;\n case 'Group':\n menuItem = { target: menuClass.header, iconCss: menuClass.group };\n break;\n case 'Ungroup':\n menuItem = { target: menuClass.header, iconCss: menuClass.ungroup };\n break;\n case 'Edit':\n menuItem = { target: menuClass.content, iconCss: menuClass.editIcon };\n break;\n case 'Delete':\n menuItem = { target: menuClass.content, iconCss: menuClass.delete };\n break;\n case 'Save':\n menuItem = { target: menuClass.edit, iconCss: menuClass.save };\n break;\n case 'Cancel':\n menuItem = { target: menuClass.edit, iconCss: menuClass.cancel };\n break;\n case 'Copy':\n menuItem = { target: menuClass.content, iconCss: menuClass.copy };\n break;\n case 'export':\n menuItem = { target: menuClass.content };\n break;\n case 'PdfExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.pdf };\n break;\n case 'ExcelExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.excel };\n break;\n case 'CsvExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.csv };\n break;\n case 'SortAscending':\n menuItem = { target: menuClass.header, iconCss: menuClass.ascending };\n break;\n case 'SortDescending':\n menuItem = { target: menuClass.header, iconCss: menuClass.descending };\n break;\n case 'FirstPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.fPage };\n break;\n case 'PrevPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.pPage };\n break;\n case 'LastPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.lPage };\n break;\n case 'NextPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.nPage };\n break;\n }\n this.defaultItems[\"\" + item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n target: menuItem.target, iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : ''\n };\n return this.defaultItems[\"\" + item];\n };\n ContextMenu.prototype.getDefaultItems = function () {\n return ['AutoFitAll', 'AutoFit',\n 'Group', 'Ungroup', 'Edit', 'Delete', 'Save', 'Cancel', 'Copy', 'export',\n 'PdfExport', 'ExcelExport', 'CsvExport', 'SortAscending', 'SortDescending',\n 'FirstPage', 'PrevPage', 'LastPage', 'NextPage'];\n };\n ContextMenu.prototype.setLocaleKey = function () {\n var localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Copy': 'Copy',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'Edit': 'EditRecord',\n 'Delete': 'DeleteRecord',\n 'Save': 'Save',\n 'Cancel': 'CancelButton',\n 'PdfExport': 'Pdfexport',\n 'ExcelExport': 'Excelexport',\n 'CsvExport': 'Csvexport',\n 'export': 'Export',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'FirstPage': 'FirstPage',\n 'LastPage': 'LastPage',\n 'PrevPage': 'PreviousPage',\n 'NextPage': 'NextPage'\n };\n return localeKeys;\n };\n ContextMenu.prototype.getColumn = function (e) {\n var cell = closest(e.target, 'th.e-headercell');\n if (cell) {\n var uid = cell.querySelector('.e-headercelldiv, .e-stackedheadercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n else {\n var ele = (this.parent.getRowInfo(e.target).column);\n return ele || null;\n }\n };\n ContextMenu.prototype.selectRow = function (e, isSelectable) {\n this.cell = e.target;\n this.row = closest(e.target, 'tr.e-row') || this.row;\n if (this.row && isSelectable && !parentsUntil(e.target, 'e-gridpager')) {\n this.parent.selectRow(parseInt(this.row.getAttribute(literals.dataRowIndex), 10));\n }\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest as closestElement, removeClass, classList, remove } from '@syncfusion/ej2-base';\nimport { getElementIndex, inArray, parentsUntil, getPosition, isActionPrevent } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Reorder` module is used for reordering columns.\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for the Grid reorder module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Reorder(parent) {\n this.idx = 0;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.reorderComplete, this.onActionComplete, this);\n this.parent.on(events.columnDrag, this.drag, this);\n this.parent.on(events.columnDragStart, this.dragStart, this);\n this.parent.on(events.columnDragStop, this.dragStop, this);\n this.parent.on(events.headerDrop, this.headerDrop, this);\n this.parent.on(events.headerRefreshed, this.createReorderElement, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n Reorder.prototype.chkDropPosition = function (srcElem, destElem) {\n var col = this.parent.getColumnByUid(destElem.firstElementChild.getAttribute('e-mappinguid'));\n var bool = col ? !col.lockColumn : true;\n return ((srcElem.parentElement.isEqualNode(destElem.parentElement) || this.parent.enableColumnVirtualization)\n || (this.parent.isFrozenGrid()\n && Array.prototype.indexOf.call(closestElement(srcElem, 'thead').children, srcElem.parentElement)\n === Array.prototype.indexOf.call(closestElement(destElem, 'thead').children, destElem.parentElement)))\n && this.targetParentContainerIndex(srcElem, destElem) > -1 && bool;\n };\n Reorder.prototype.chkDropAllCols = function (srcElem, destElem) {\n var isFound;\n var headers = this.getHeaderCells();\n var header;\n while (!isFound && headers.length > 0) {\n header = headers.pop();\n isFound = srcElem !== header && this.targetParentContainerIndex(srcElem, destElem) > -1;\n }\n return isFound;\n };\n Reorder.prototype.findColParent = function (col, cols, parent) {\n // eslint-disable-next-line no-self-assign\n parent = parent;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (col === cols[parseInt(i.toString(), 10)]) {\n return true;\n }\n else if (cols[parseInt(i.toString(), 10)].columns) {\n var cnt = parent.length;\n parent.push(cols[parseInt(i.toString(), 10)]);\n if (!this.findColParent(col, cols[parseInt(i.toString(), 10)].columns, parent)) {\n parent.splice(cnt, parent.length - cnt);\n }\n else {\n return true;\n }\n }\n }\n return false;\n };\n Reorder.prototype.getColumnsModel = function (cols, isNotStackedHeader) {\n var columnModel = [];\n var subCols = [];\n for (var i = 0, len = cols.length; i < len; i++) {\n if (!isNullOrUndefined(cols[parseInt(i.toString(), 10)])) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n else if (isNotStackedHeader) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n if (cols[parseInt(i.toString(), 10)].columns) {\n subCols = subCols.concat(cols[parseInt(i.toString(), 10)].columns);\n }\n }\n }\n if (subCols.length) {\n columnModel = columnModel.concat(this.getColumnsModel(subCols));\n }\n return columnModel;\n };\n Reorder.prototype.headerDrop = function (e) {\n var gObj = this.parent;\n var dropElement = this.element.querySelector('.e-headercelldiv') || this.element.querySelector('.e-stackedheadercelldiv');\n var uId = dropElement.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uId);\n if (!closestElement(e.target, 'th') || (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column });\n return;\n }\n var destElem = closestElement(e.target, '.e-headercell');\n var destElemDiv = destElem.querySelector('.e-headercelldiv') || destElem.querySelector('.e-stackedheadercelldiv');\n var destElemUid = destElemDiv.getAttribute('e-mappinguid');\n if (!isNullOrUndefined(destElemUid)) {\n var destColumn = gObj.getColumnByUid(destElemUid);\n if (isNullOrUndefined(destColumn) || !destColumn.allowReordering || destColumn.lockColumn) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column, destColumn: destColumn });\n return;\n }\n }\n if (destElem && !(!this.chkDropPosition(this.element, destElem) || !this.chkDropAllCols(this.element, destElem))) {\n if (this.parent.enableColumnVirtualization) {\n var columns = this.parent.columns;\n var sourceUid_1 = this.element.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n var col = this.parent.columns.filter(function (col) { return col.uid === sourceUid_1; });\n var colMatchIndex_1 = null;\n var column_1 = col[0];\n var destUid_1 = destElem.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n columns.some(function (col, index) {\n if (col.uid === destUid_1) {\n colMatchIndex_1 = index;\n return col.uid === destUid_1;\n }\n return false;\n });\n if (!isNullOrUndefined(colMatchIndex_1)) {\n this.moveColumns(colMatchIndex_1, column_1);\n }\n }\n else {\n var newIndex = this.targetParentContainerIndex(this.element, destElem);\n var uid = this.element.firstElementChild.getAttribute('e-mappinguid');\n this.destElement = destElem;\n this.parent.notify(events.setReorderDestinationElement, { ele: destElem });\n if (uid) {\n this.moveColumns(newIndex, this.parent.getColumnByUid(uid));\n }\n else {\n var headers = this.getHeaderCells();\n var oldIdx = getElementIndex(this.element, headers);\n var columns = this.getColumnsModel(this.parent.columns);\n this.moveColumns(newIndex, columns[parseInt(oldIdx.toString(), 10)]);\n }\n }\n }\n };\n Reorder.prototype.isActionPrevent = function (gObj) {\n return isActionPrevent(gObj);\n };\n Reorder.prototype.moveColumns = function (destIndex, column, reorderByColumn, preventRefresh) {\n var gObj = this.parent;\n if (this.isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.moveColumns, arg1: destIndex, arg2: column });\n return;\n }\n var parent = this.getColParent(column, this.parent.columns);\n var cols = parent ? parent.columns : this.parent.columns;\n var srcIdx = inArray(column, cols);\n if ((parent || this.parent.lockcolPositionCount) && !reorderByColumn &&\n !this.parent.enableColumnVirtualization) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === column.field) {\n srcIdx = i;\n break;\n }\n }\n var col = this.parent.getColumnByUid(this.destElement.firstElementChild.getAttribute('e-mappinguid'));\n if (col) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === col.field) {\n destIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].headerText === this.destElement.innerText.trim()) {\n destIndex = i;\n }\n }\n }\n }\n if (!gObj.allowReordering || srcIdx === destIndex || srcIdx === -1 || destIndex === -1) {\n return;\n }\n cols.splice(destIndex, 0, cols.splice(srcIdx, 1)[0]);\n var args = { column: column, destIndex: destIndex, columns: cols, parent: parent, cancel: false };\n gObj.notify(events.refreshFrozenColumns, args);\n if (args.cancel) {\n return;\n }\n if (this.parent.isFrozenGrid()) {\n if (this.parent.frozenColumns) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].freeze === 'Left') {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n else {\n if (this.parent.getFrozenLeftCount() > destIndex) {\n column.freeze = 'Left';\n }\n else if ((cols.length - this.parent.getFrozenRightColumnsCount()) <= destIndex) {\n column.freeze = 'Right';\n }\n else {\n column.freeze = column.freeze === 'Fixed' ? 'Fixed' : undefined;\n }\n }\n }\n gObj.getColumns(true);\n gObj.notify(events.columnPositionChanged, { fromIndex: destIndex, toIndex: srcIdx });\n if (preventRefresh !== false) {\n gObj.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'reorder', fromIndex: destIndex, toIndex: srcIdx, toColumnUid: column.uid\n });\n }\n if (this.parent.isFrozenGrid()) {\n var cols_1 = this.parent.columns;\n this.idx = 0;\n this.refreshColumnIndex(cols_1);\n this.parent.notify(events.refreshFrozenPosition, {});\n }\n };\n Reorder.prototype.refreshColumnIndex = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].index = this.idx;\n this.idx++;\n if (cols[parseInt(i.toString(), 10)].columns && cols[parseInt(i.toString(), 10)].columns.length) {\n this.refreshColumnIndex(cols[parseInt(i.toString(), 10)].columns);\n }\n }\n };\n Reorder.prototype.targetParentContainerIndex = function (srcElem, destElem) {\n var cols = this.parent.columns;\n var headers = this.getHeaderCells();\n var stackedHdrColumn = this.parent.getStackedColumns(cols);\n var stackedCols = [];\n if (stackedHdrColumn.length) {\n stackedCols = this.getAllStackedheaderParentColumns(headers);\n }\n var flatColumns = stackedHdrColumn.length && stackedCols.length ?\n this.getColumnsModel(stackedCols) : this.getColumnsModel(cols, true);\n var parent = this.getColParent(flatColumns[getElementIndex(srcElem, headers)], cols);\n cols = parent ? parent.columns : cols;\n return inArray(flatColumns[getElementIndex(destElem, headers)], cols);\n };\n Reorder.prototype.getAllStackedheaderParentColumns = function (headers) {\n var stackedCols = [];\n for (var i = 0; i < headers.length; i++) {\n if (headers[parseInt(i.toString(), 10)].classList.contains('e-hide')) {\n headers.splice(i, 1);\n i--;\n }\n else if (headers[parseInt(i.toString(), 10)].closest('thead').firstChild === headers[parseInt(i.toString(), 10)].parentElement) {\n stackedCols.push(this.parent.getColumnByUid(headers[parseInt(i.toString(), 10)].firstElementChild.getAttribute('e-mappinguid')));\n }\n }\n return stackedCols;\n };\n Reorder.prototype.getHeaderCells = function () {\n return [].slice.call(this.parent.element.getElementsByClassName('e-headercell'));\n };\n Reorder.prototype.getColParent = function (column, columns) {\n var parents = [];\n this.findColParent(column, columns, parents);\n return parents[parents.length - 1];\n };\n Reorder.prototype.reorderSingleColumn = function (fromFName, toFName) {\n var fColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === fromFName; })[0]\n : this.parent.getColumnByField(fromFName);\n var toColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === toFName; })[0]\n : this.parent.getColumnByField(toFName);\n if ((!isNullOrUndefined(fColumn) && (!fColumn.allowReordering || fColumn.lockColumn)) ||\n (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: fColumn, destColumn: toColumn });\n return;\n }\n var column = toColumn;\n var parent = this.getColParent(column, this.parent.columns);\n var columns = parent ? parent.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, fColumn, true);\n }\n };\n Reorder.prototype.reorderMultipleColumns = function (fromFNames, toFName) {\n var toIndex = this.parent.getColumnIndexByField(toFName);\n var toColumn = this.parent.getColumnByField(toFName);\n if (toIndex < 0 || (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n return;\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn)) {\n return;\n }\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByIndex(toIndex);\n var parent_1 = this.getColParent(column, this.parent.columns);\n var columns = parent_1 ? parent_1.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]), true, true);\n }\n if (this.parent.getColumnIndexByField(fromFNames[i + 1]) >= destIndex) {\n toIndex++; //R to L\n }\n }\n };\n Reorder.prototype.moveTargetColumn = function (column, toIndex) {\n if (toIndex > -1) {\n this.moveColumns(toIndex, column, true);\n }\n };\n Reorder.prototype.reorderSingleColumnByTarget = function (fieldName, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByField(fieldName), toIndex);\n };\n Reorder.prototype.reorderMultipleColumnByTarget = function (fieldName, toIndex) {\n for (var i = 0; i < fieldName.length; i++) {\n this.reorderSingleColumnByTarget(fieldName[parseInt(i.toString(), 10)], toIndex);\n }\n };\n /**\n * Changes the position of the Grid columns by field names.\n *\n * @param {string | string[]} fromFName - Defines the origin field names.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n Reorder.prototype.reorderColumns = function (fromFName, toFName) {\n if (typeof fromFName === 'string') {\n this.reorderSingleColumn(fromFName, toFName);\n this.fromCol = fromFName;\n }\n else {\n this.reorderMultipleColumns(fromFName, toFName);\n this.fromCol = fromFName[0];\n }\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByIndex(fromIndex), toIndex);\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {string | string[]} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (typeof fieldName === 'string') {\n this.reorderSingleColumnByTarget(fieldName, toIndex);\n }\n else {\n this.reorderMultipleColumnByTarget(fieldName, toIndex);\n }\n };\n Reorder.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.createReorderElement();\n }\n };\n Reorder.prototype.createReorderElement = function (e) {\n if (e && e.args && e.args.isXaxis) {\n this.setDisplay('none');\n }\n var header = this.parent.element.querySelector('.' + literals.headerContent);\n this.upArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderuparrow e-reorderuparrow', attrs: { style: 'display:none' } }));\n this.downArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderdownarrow e-reorderdownarrow', attrs: { style: 'display:none' } }));\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specified the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, { type: events.actionComplete }));\n var target = this.fromCol && this.parent.getColumnHeaderByField(this.fromCol);\n if (target) {\n this.parent.focusModule.onClick({ target: target }, true);\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + literals.gridHeader) &&\n !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.upArrow.parentNode) {\n remove(this.upArrow);\n }\n if (this.downArrow.parentNode) {\n remove(this.downArrow);\n }\n this.parent.off(events.headerDrop, this.headerDrop);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.reorderComplete, this.onActionComplete);\n this.parent.off(events.columnDrag, this.drag);\n this.parent.off(events.columnDragStart, this.dragStart);\n this.parent.off(events.columnDragStop, this.dragStop);\n this.parent.off(events.headerRefreshed, this.createReorderElement);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.destroy, this.destroy);\n //call ejdrag and drop destroy\n };\n Reorder.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'leftArrow') {\n e.action = 'ctrlLeftArrow';\n }\n else if (e.action === 'rightArrow') {\n e.action = 'ctrlRightArrow';\n }\n }\n switch (e.action) {\n case 'ctrlLeftArrow':\n case 'ctrlRightArrow':\n // eslint-disable-next-line no-case-declarations\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n var visibleCols = gObj.getVisibleColumns();\n var index = visibleCols.indexOf(column);\n var toCol = e.action === 'ctrlLeftArrow' ? visibleCols[index - 1] : visibleCols[index + 1];\n if (toCol && toCol.field && column.field) {\n this.reorderColumns(column.field, toCol.field);\n }\n }\n break;\n }\n };\n Reorder.prototype.drag = function (e) {\n var gObj = this.parent;\n var target = e.target;\n var closest = closestElement(target, '.e-headercell:not(.e-stackedHeaderCell)');\n var cloneElement = gObj.element.querySelector('.e-cloneproperties');\n var content = gObj.getContent().firstElementChild;\n var isLeft = this.x > getPosition(e.event).x + content.scrollLeft;\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n this.setDisplay('none');\n this.stopTimer();\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n this.updateScrollPostion(e.event);\n if (closest && !closest.isEqualNode(this.element)) {\n target = closest;\n //consider stacked, detail header cell\n var uid = target.querySelector('.e-headercelldiv, .e-stackedheadercelldiv').getAttribute('e-mappinguid');\n if (!(!this.chkDropPosition(this.element, target) || !this.chkDropAllCols(this.element, target)) &&\n gObj.getColumnByUid(uid).allowReordering && e.column.allowReordering) {\n this.updateArrowPosition(target, isLeft);\n classList(target, ['e-allowDrop', 'e-reorderindicate'], []);\n }\n else if (!(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n else {\n if (closest && closest.isEqualNode(this.element) &&\n !((gObj.allowGrouping && e.column.allowGrouping) || e.column.allowReordering)) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n else if (!closest && !(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n gObj.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: e.column });\n };\n Reorder.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var x = getPosition(e).x;\n var cliRect = this.parent.element.getBoundingClientRect();\n var cliRectBaseRight = cliRect.right;\n var cliRectBaseLeft = cliRect.left;\n var scrollElem = this.parent.getContent().firstElementChild;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, false); }, 50);\n }\n };\n Reorder.prototype.setScrollLeft = function (scrollElem, isLeft) {\n var scrollLeft = scrollElem.scrollLeft;\n scrollElem.scrollLeft = scrollElem.scrollLeft + (isLeft ? -5 : 5);\n if (scrollLeft !== scrollElem.scrollLeft) {\n this.setDisplay('none');\n }\n };\n Reorder.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Reorder.prototype.updateArrowPosition = function (target, isLeft) {\n var cliRect = target.getBoundingClientRect();\n var cliRectBase = this.parent.element.getBoundingClientRect();\n if ((isLeft && cliRect.left < cliRectBase.left) || (!isLeft && cliRect.right > cliRectBase.right)) {\n return;\n }\n var isSticky = this.parent.getHeaderContent().classList.contains('e-sticky');\n this.upArrow.style.top = isSticky ? cliRect.top + cliRect.height + 'px' : cliRect.top + cliRect.height - cliRectBase.top + 'px';\n this.downArrow.style.top = isSticky ? cliRect.top - 7 + 'px' : cliRect.top - cliRectBase.top - 7 + 'px';\n this.upArrow.style.left = this.downArrow.style.left = isSticky ? (isLeft ? cliRect.left : cliRect.right) - 4 + 'px' :\n (isLeft ? cliRect.left : cliRect.right) - cliRectBase.left - 4 + 'px';\n this.setDisplay('');\n };\n Reorder.prototype.dragStart = function (e) {\n var gObj = this.parent;\n var target = e.target;\n this.element = target.classList.contains('e-headercell') ? target :\n parentsUntil(target, 'e-headercell');\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var content = gObj.getContent().firstElementChild;\n this.x = getPosition(e.event).x + content.scrollLeft;\n gObj.trigger(events.columnDragStart, {\n target: target, draggableType: 'headercell', column: e.column\n });\n };\n Reorder.prototype.dragStop = function (e) {\n var gObj = this.parent;\n this.setDisplay('none');\n this.stopTimer();\n if (!e.cancel) {\n gObj.trigger(events.columnDrop, { target: e.target, draggableType: 'headercell', column: e.column });\n }\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n };\n Reorder.prototype.setDisplay = function (display) {\n this.upArrow.style.display = display;\n this.downArrow.style.display = display;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} return the module name\n * @private\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { removeClass, addClass, extend, EventHandler } from '@syncfusion/ej2-base';\nimport { closest, classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Grid } from '../base/grid';\nimport { parents, getUid, appendChildren, isComplexField, getObject } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * The `DetailRow` module is used to handle detail template and hierarchy Grid operations.\n */\nvar DetailRow = /** @class */ (function () {\n /**\n * Constructor for the Grid detail template module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifes the serviceLocator\n * @hidden\n */\n function DetailRow(parent, locator) {\n //Internal variables\n this.aria = new AriaService();\n this.childRefs = [];\n this.parent = parent;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n DetailRow.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'auxclick', this.auxilaryclickHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.expandChildGrid, this.expand, this);\n this.parent.on(events.columnVisibilityChanged, this.refreshColSpan, this);\n this.parent.on(events.destroy, this.destroyChildGrids, this);\n this.parent.on(events.destroyChildGrid, this.destroyChildGrids, this);\n };\n DetailRow.prototype.clickHandler = function (e) {\n if (e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow')\n && !this.parent.allowGrouping) {\n e.preventDefault();\n }\n this.toogleExpandcollapse(closest(e.target, 'td'));\n };\n DetailRow.prototype.auxilaryclickHandler = function (e) {\n if (e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow')\n && !this.parent.allowGrouping && (e.button === 1)) {\n e.preventDefault();\n }\n };\n DetailRow.prototype.toogleExpandcollapse = function (target) {\n this.l10n = this.serviceLocator.getService('localization');\n var gObj = this.parent;\n var table = this.parent.getContentTable();\n var lastrowIdx = this.parent.getCurrentViewRecords().length - 1;\n var parent = 'parentDetails';\n var childGrid;\n var isExpanded = target && target.classList.contains('e-detailrowcollapse');\n if (!(target && (target.classList.contains('e-detailrowcollapse') || target.classList.contains('e-detailrowexpand')))\n || (target && target.classList.contains('e-masked-cell'))) {\n return;\n }\n var tr = target.parentElement;\n var uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(uid);\n var needToRefresh = false;\n var nextRow = this.parent.getContentTable().querySelector(literals.tbody).children[tr.rowIndex + 1];\n if (target.classList.contains('e-detailrowcollapse')) {\n var data_1 = rowObj.data;\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = '';\n gObj.notify(events.detailStateChange, { data: data_1,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n needToRefresh = true;\n }\n else if (gObj.getDetailTemplate() || gObj.childGrid) {\n var rowId = getUid('grid-row');\n var detailRow = this.parent.createElement('tr', { className: 'e-detailrow', attrs: { 'data-uid': rowId, role: 'row' } });\n var detailCell_1 = this.parent.createElement('th', { className: 'e-detailcell', attrs: { 'scope': 'col', role: 'columnheader' } });\n var colSpan = this.parent.getVisibleColumns().length;\n if (this.parent.allowRowDragAndDrop) {\n colSpan++;\n }\n detailCell_1.setAttribute('colspan', colSpan.toString());\n var row = new Row({\n isDataRow: true,\n isExpand: true,\n uid: rowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n row.parentUid = rowObj.uid;\n for (var i = 0, len = gObj.groupSettings.columns.length; i < len; i++) {\n detailRow.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n row.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n detailRow.appendChild(this.parent.createElement('th', { className: 'e-detailindentcell', attrs: { 'scope': 'col' } }));\n detailRow.appendChild(detailCell_1);\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n var isReactCompiler = void 0;\n var isReactChild = void 0;\n if (gObj.detailTemplate) {\n isReactCompiler = this.parent.isReact && typeof (gObj.detailTemplate) !== 'string';\n isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n if (isReactCompiler || isReactChild) {\n gObj.getDetailTemplate()(data_1, gObj, 'detailTemplate', detailTemplateID, null, null, detailCell_1);\n this.parent.renderTemplates(function () {\n gObj.trigger(events.detailDataBound, { detailElement: detailCell_1, data: data_1, childGrid: childGrid });\n });\n }\n else {\n appendChildren(detailCell_1, gObj.getDetailTemplate()(data_1, gObj, 'detailTemplate', detailTemplateID, undefined, undefined, undefined, this.parent['root']));\n }\n }\n else {\n childGrid = new Grid(this.getGridModel(gObj, rowObj, gObj.printMode));\n this.childRefs.push(childGrid);\n if (childGrid.query) {\n childGrid.query = childGrid.query.clone();\n }\n childGrid[\"\" + parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: gObj.childGrid.queryString && isComplexField(gObj.childGrid.queryString) ?\n getObject(gObj.childGrid.queryString, data_1) : data_1[gObj.childGrid.queryString],\n parentRowData: data_1\n };\n if (gObj.isReact) {\n childGrid.parentDetails.parentInstObj = gObj;\n }\n else if (gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact) {\n childGrid.parentDetails.parentInstObj = gObj.parentDetails.parentInstObj;\n }\n childGrid.isLegacyTemplate = gObj.isReact\n || gObj.isLegacyTemplate;\n if (gObj.isPrinting) {\n childGrid.isPrinting = true;\n childGrid.on(events.contentReady, this.promiseResolve(childGrid), this);\n childGrid.on(events.onEmpty, this.promiseResolve(childGrid), this);\n }\n rowObj.childGrid = childGrid;\n var modules = childGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n childGrid.setInjectedModules(injectedModues);\n }\n var gridElem = this.parent.createElement('div', {\n id: 'child' + parents(tr, 'e-grid').length +\n '_grid' + tr.rowIndex + getUid(''), className: 'e-childgrid'\n });\n detailCell_1.appendChild(gridElem);\n childGrid.appendTo(gridElem);\n }\n detailRow.appendChild(detailCell_1);\n if (tr.nextSibling) {\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n }\n else {\n tr.parentNode.appendChild(detailRow);\n }\n var rowElems = gObj.getRows();\n var rowObjs = gObj.getRowsObject();\n rowElems.splice(rowElems.indexOf(tr) + 1, 0, detailRow);\n rowObjs.splice(rowObjs.indexOf(rowObj) + 1, 0, row);\n if (!isReactCompiler || !isReactChild) {\n gObj.trigger(events.detailDataBound, { detailElement: detailCell_1, data: data_1, childGrid: childGrid });\n }\n gObj.notify(events.detailDataBound, { rows: rowObjs });\n }\n classList(target, ['e-detailrowexpand'], ['e-detailrowcollapse']);\n classList(target.firstElementChild, ['e-dtdiagonaldown', 'e-icon-gdownarrow'], ['e-dtdiagonalright', 'e-icon-grightarrow']);\n rowObj.isExpand = true;\n if (target.classList.contains('e-lastrowcell') && this.parent.getContent().clientHeight > table.scrollHeight) {\n removeClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n var detailrowIdx = table.querySelector(literals.tbody).getElementsByClassName('e-detailrow').length - 1;\n addClass(table.querySelector(literals.tbody).getElementsByClassName('e-detailrow')[parseInt(detailrowIdx.toString(), 10)].childNodes, ['e-lastrowcell']);\n this.lastrowcell = true;\n }\n this.aria.setExpand(target, true);\n target.firstElementChild.setAttribute('title', this.l10n.getConstant('Expanded'));\n }\n else {\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = 'none';\n gObj.notify(events.detailStateChange, { data: rowObj.data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n }\n classList(target, ['e-detailrowcollapse'], ['e-detailrowexpand']);\n classList(target.firstElementChild, ['e-dtdiagonalright', 'e-icon-grightarrow'], ['e-dtdiagonaldown', 'e-icon-gdownarrow']);\n if (parseInt(tr.getAttribute(literals.dataRowIndex), 10) === lastrowIdx && this.lastrowcell) {\n addClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n this.lastrowcell = false;\n }\n rowObj.isExpand = false;\n needToRefresh = true;\n this.aria.setExpand(target, false);\n target.firstElementChild.setAttribute('title', this.l10n.getConstant('Collapsed'));\n }\n if (!isNullOrUndefined(gObj.detailTemplate) || (gObj.childGrid && needToRefresh)) {\n gObj.updateVisibleExpandCollapseRows();\n gObj.notify(events.refreshExpandandCollapse, { rows: gObj.getRowsObject() });\n }\n if (this.parent.allowTextWrap && this.parent.height === 'auto') {\n if (this.parent.getContentTable().scrollHeight > this.parent.getContent().clientHeight) {\n this.parent.scrollModule.setPadding();\n }\n else {\n this.parent.scrollModule.removePadding();\n }\n }\n };\n /**\n * @hidden\n * @param {IGrid} gObj - specifies the grid Object\n * @param {Row}rowObj - specifies the row object\n * @param {string} printMode - specifies the printmode\n * @returns {Object} returns the object\n */\n DetailRow.prototype.getGridModel = function (gObj, rowObj, printMode) {\n var gridModel;\n if (gObj.isPrinting && rowObj.isExpand && gObj.expandedRows &&\n gObj.expandedRows[rowObj.index] && gObj.expandedRows[rowObj.index].gridModel) {\n gObj.expandedRows[rowObj.index].gridModel.hierarchyPrintMode = gObj.childGrid.hierarchyPrintMode;\n gridModel = extend({}, gObj.expandedRows[rowObj.index].gridModel, gObj.childGrid, true);\n }\n else {\n if (gObj.isPrinting && gObj.childGrid.allowPaging) {\n gObj.childGrid.allowPaging = printMode === 'CurrentPage';\n }\n gridModel = extend({}, {}, gObj.childGrid, true);\n }\n return gridModel;\n };\n DetailRow.prototype.promiseResolve = function (grid) {\n var _this = this;\n return function () {\n grid.off(events.contentReady, _this.promiseResolve);\n grid.off(events.onEmpty, _this.promiseResolve);\n grid.notify(events.hierarchyPrint, {});\n };\n };\n DetailRow.prototype.isDetailRow = function (row) {\n return row && row.classList.contains('e-detailrow');\n };\n DetailRow.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + literals.gridHeader) &&\n !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n EventHandler.remove(this.parent.element, 'auxclick', this.auxilaryclickHandler);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.expandChildGrid, this.expand);\n this.parent.off(events.columnVisibilityChanged, this.refreshColSpan);\n this.parent.off(events.destroy, this.destroyChildGrids);\n this.parent.off(events.destroyChildGrid, this.destroyChildGrids);\n };\n DetailRow.prototype.getTDfromIndex = function (index, className) {\n var tr = !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n if (tr && tr.querySelector(className)) {\n return tr.querySelector(className);\n }\n return null;\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n DetailRow.prototype.expand = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowcollapse');\n }\n if (target && target.classList.contains('e-detailrowcollapse')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n DetailRow.prototype.collapse = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowexpand');\n }\n if (target && target.classList.contains('e-detailrowexpand')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n DetailRow.prototype.expandAll = function () {\n this.expandCollapse(true);\n this.parent.trigger(events.actionComplete, { requestType: 'expandAllComplete', type: events.actionComplete, moduleObj: this });\n };\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n DetailRow.prototype.collapseAll = function () {\n this.expandCollapse(false);\n this.parent.trigger(events.actionComplete, { requestType: 'collapseAllComplete', type: events.actionComplete, moduleObj: this });\n };\n DetailRow.prototype.expandCollapse = function (isExpand) {\n var td;\n var rows = this.parent.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n td = rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n if (isExpand) {\n this.expand(td);\n }\n else {\n this.collapse(td);\n }\n }\n };\n DetailRow.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'downArrow') {\n e.action = 'ctrlDownArrow';\n }\n else if (e.action === 'upArrow') {\n e.action = 'ctrlUpArrow';\n }\n }\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'altUpArrow':\n case 'altDownArrow':\n // eslint-disable-next-line no-case-declarations\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var td = dataRow.querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n if (e.action === 'altDownArrow') {\n this.expand(td);\n }\n else {\n this.collapse(td);\n }\n }\n break;\n case 'enter':\n if (this.parent.isEdit) {\n return;\n }\n // eslint-disable-next-line no-case-declarations\n var element = this.focus.getFocusedElement();\n if (element && (element.classList.contains('e-icon-grightarrow') || element.classList.contains('e-icon-gdownarrow'))) {\n element = element.parentElement;\n }\n if (element && !element.classList.contains('e-detailrowcollapse') &&\n !element.classList.contains('e-detailrowexpand')) {\n break;\n }\n this.toogleExpandcollapse(element);\n break;\n }\n };\n DetailRow.prototype.refreshColSpan = function () {\n var detailrows = this.parent.contentModule.getTable().querySelectorAll('tr.e-detailrow');\n var colSpan = this.parent.getVisibleColumns().length;\n for (var i = 0; i < detailrows.length; i++) {\n detailrows[parseInt(i.toString(), 10)].querySelector('.e-detailcell').setAttribute('colspan', colSpan + '');\n }\n };\n DetailRow.prototype.destroyChildGrids = function () {\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].childGrid = null;\n }\n for (var i = 0; i < this.childRefs.length; i++) {\n if (!this.childRefs[parseInt(i.toString(), 10)].isDestroyed) {\n this.childRefs[parseInt(i.toString(), 10)].destroy();\n }\n }\n this.childRefs = [];\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n DetailRow.prototype.getModuleName = function () {\n return 'detailRow';\n };\n return DetailRow;\n}());\nexport { DetailRow };\n","import { Draggable, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest as closestElement, classList, extend } from '@syncfusion/ej2-base';\nimport { parentsUntil, removeElement, getPosition, addRemoveActiveClasses, isActionPrevent } from '../base/util';\nimport { resetRowIndex, resetCachedRowIndex, groupReorderRowObject } from '../base/util';\nimport * as events from '../base/constant';\nimport { Scroll } from '../actions/scroll';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * Reorder module is used to handle row reordering.\n *\n * @hidden\n */\nvar RowDD = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function RowDD(parent) {\n var _this = this;\n this.selectedRows = [];\n this.isOverflowBorder = true;\n this.selectedRowColls = [];\n this.isRefresh = true;\n this.isReplaceDragEle = true;\n this.istargetGrid = false;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var visualElement = _this.parent.createElement('div', {\n className: 'e-cloneproperties e-draganddrop e-grid e-dragclone',\n styles: 'height:\"auto\", z-index:2, width:' + gObj.element.offsetWidth\n });\n var table = _this.parent.createElement('table', { styles: 'width:' + gObj.element.offsetWidth, attrs: { role: 'grid' } });\n var tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n if (document.getElementsByClassName('e-griddragarea').length ||\n (gObj.rowDropSettings.targetID && ((!target.classList.contains('e-selectionbackground')\n && gObj.selectionSettings.type !== 'Single') || !parentsUntil(target, 'e-rowcell'))) ||\n (!gObj.rowDropSettings.targetID && !parentsUntil(target, 'e-rowdragdrop'))) {\n return false;\n }\n if (gObj.rowDropSettings.targetID &&\n gObj.selectionSettings.mode === 'Row' && gObj.selectionSettings.type === 'Single') {\n gObj.selectRow(parseInt(_this.draggable.currentStateTarget.parentElement.getAttribute(literals.dataRowIndex), 10));\n }\n _this.startedRow = closestElement(target, 'tr').cloneNode(true);\n if (_this.parent.isFrozenGrid()) {\n var nodes = [].slice.call(_this.startedRow.querySelectorAll('.e-rowcell'));\n for (var i = 0; i < nodes.length; i++) {\n removeClass([nodes[parseInt(i.toString(), 10)]], ['e-leftfreeze', 'e-freezeleftborder', 'e-fixedfreeze', 'e-freezerightborder', 'e-rightfreeze', 'e-unfreeze']);\n nodes[parseInt(i.toString(), 10)].removeAttribute('style');\n }\n }\n _this.processArgs(target);\n var args = {\n selectedRow: _this.rows, dragelement: target,\n cloneElement: visualElement, cancel: false, data: _this.rowData\n };\n var selectedRows = gObj.getSelectedRows();\n gObj.trigger(events.rowDragStartHelper, args);\n var cancel = 'cancel';\n if (args[\"\" + cancel]) {\n return false;\n }\n removeElement(_this.startedRow, '.e-indentcell');\n removeElement(_this.startedRow, '.e-detailrowcollapse');\n removeElement(_this.startedRow, '.e-detailrowexpand');\n if (!(gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache)) {\n _this.removeCell(_this.startedRow, literals.gridChkBox);\n }\n var exp = new RegExp('e-active', 'g'); //high contrast issue\n _this.startedRow.innerHTML = _this.startedRow.innerHTML.replace(exp, '');\n tbody.appendChild(_this.startedRow);\n if (gObj.getSelectedRowIndexes().length > 1 && _this.startedRow.hasAttribute('aria-selected')) {\n var dropCountEle = _this.parent.createElement('span', {\n className: 'e-dropitemscount', innerHTML: '' + selectedRows.length\n });\n visualElement.appendChild(dropCountEle);\n }\n var ele = closestElement(target, 'tr').querySelector('.e-icon-rowdragicon');\n if (ele) {\n ele.classList.add('e-dragstartrow');\n }\n table.appendChild(tbody);\n visualElement.appendChild(table);\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n if ((gObj.enableVirtualization || gObj.infiniteScrollSettings.enableCache) && gObj.allowGrouping &&\n gObj.groupSettings.columns.length && !isNullOrUndefined(e.target.closest('tr'))) {\n var dragTrs = e.dragElement.querySelectorAll('tr');\n var indentCells = e.target.closest('tr').querySelectorAll('.e-indentcell');\n for (var i = 0; i < dragTrs.length; i++) {\n for (var j = 0; j < indentCells.length; j++) {\n var cloneIndentCell = indentCells[parseInt(j.toString(), 10)].cloneNode(true);\n dragTrs[parseInt(i.toString(), 10)].insertBefore(cloneIndentCell, dragTrs[parseInt(i.toString(), 10)].firstElementChild);\n }\n }\n }\n if (gObj.element.classList.contains('e-childgrid')) {\n var parentGrid = _this.getParentGrid(gObj.element);\n parentGrid.appendChild(e.dragElement);\n gObj.element.appendChild(gObj.createElement('div', { className: 'e-drag-ref' }));\n }\n document.body.classList.add('e-prevent-select');\n if (document.getElementsByClassName('e-griddragarea').length) {\n return;\n }\n var target = e.target;\n var spanCssEle = _this.parent.element.querySelector('.e-dropitemscount');\n if (_this.parent.getSelectedRecords().length > 1 && spanCssEle) {\n spanCssEle.style.left = _this.parent.element.querySelector('.e-cloneproperties table')\n .offsetWidth - 5 + 'px';\n }\n _this.processArgs(target);\n gObj.trigger(events.rowDragStart, {\n rows: _this.rows, target: e.target,\n draggableType: 'rows', fromIndex: parseInt(_this.rows[0].getAttribute(literals.dataRowIndex), 10),\n data: (_this.rowData[0] && Object.keys(_this.rowData[0]).length > 0) ? _this.rowData : _this.currentViewData()\n });\n _this.dragStartData = _this.rowData;\n var dropElem = document.getElementById(gObj.rowDropSettings.targetID);\n if (gObj.rowDropSettings.targetID && dropElem && dropElem.ej2_instances &&\n dropElem.ej2_instances[0].getModuleName() === 'grid') {\n dropElem.ej2_instances[0].getContent().classList.add('e-allowRowDrop');\n }\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n _this.isDropGrid = _this.parent;\n _this.istargetGrid = false;\n if (_this.parent.rowDropSettings.targetID) {\n var dropElement = document.getElementById(gObj.rowDropSettings.targetID);\n _this.isDropGrid = dropElement.ej2_instances[0];\n if (parentsUntil(e.target, 'e-grid')) {\n _this.istargetGrid = _this.parent.rowDropSettings.targetID === parentsUntil(e.target, 'e-grid').id;\n }\n }\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (gObj.element.classList.contains('e-childgrid')) {\n var parentGrid = _this.getParentGrid(gObj.element);\n cloneElement = parentGrid.querySelector('.e-cloneproperties');\n }\n var target = _this.getElementFromPosition(cloneElement, e.event);\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur', 'e-movecur', 'e-grabcur']);\n _this.isOverflowBorder = true;\n _this.hoverState = gObj.enableHover;\n var trElement = parentsUntil(target, 'e-grid') ? closestElement(e.target, 'tr') : null;\n if (!e.target) {\n return;\n }\n _this.processArgs(target);\n var args = {\n rows: _this.rows, target: target, draggableType: 'rows',\n data: _this.rowData, originalEvent: e, cancel: false\n };\n gObj.trigger(events.rowDrag, args);\n _this.stopTimer();\n if (args.cancel) {\n return;\n }\n gObj.element.classList.add('e-rowdrag');\n if (trElement && (parentsUntil(target, 'e-grid').id === cloneElement.parentElement.id || parentsUntil(target, 'e-grid').id)) {\n if (_this.isDropGrid.element.querySelector('.e-emptyrow')) {\n _this.dragTarget = 0;\n }\n else {\n _this.dragTarget = parseInt(trElement.getAttribute('data-rowindex'), 10);\n }\n }\n else {\n _this.dragTarget = parseInt(_this.startedRow.getAttribute('data-rowindex'), 10);\n }\n if (gObj.rowDropSettings.targetID) {\n var dragParentElement = document.querySelector('.e-drag-ref');\n if (!parentsUntil(target, 'e-grid') || (dragParentElement\n && parentsUntil(dragParentElement.parentElement, 'e-grid').id === parentsUntil(target, 'e-grid').id) ||\n parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(target, 'e-grid').id) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n else {\n classList(cloneElement, ['e-grabcur'], ['e-notallowedcur']);\n }\n }\n else {\n var element = parentsUntil(target, 'e-grid');\n if (element && element.id === cloneElement.parentElement.id && parentsUntil(target, 'e-row') &&\n !parentsUntil(target, 'e-addedrow')) {\n classList(cloneElement, ['e-movecur'], ['e-defaultcur']);\n }\n else {\n classList(cloneElement, ['e-notallowedcur'], ['e-movecur']);\n }\n }\n if (parentsUntil(_this.isDropGrid.element, 'e-grid')) {\n if ((!_this.isDropGrid.groupSettings.columns.length || _this.isDropGrid.groupSettings.columns.length)\n && !_this.isDropGrid.element.querySelector('.e-emptyrow')) {\n if (parentsUntil(target, 'e-grid') && parentsUntil(target, 'e-grid').id === _this.isDropGrid.element.id) {\n _this.updateScrollPostion(e.event);\n }\n if (((_this.isOverflowBorder || _this.parent.frozenRows > _this.dragTarget) &&\n (parseInt(_this.startedRow.getAttribute(literals.dataRowIndex), 10) !== _this.dragTarget || _this.istargetGrid))\n || (_this.istargetGrid && trElement && _this.isDropGrid.getRowByIndex(_this.isDropGrid.getCurrentViewRecords().length - 1).\n getAttribute('data-uid') === trElement.getAttribute('data-uid'))) {\n _this.moveDragRows(e, _this.startedRow, trElement);\n }\n else {\n var islastRowIndex = void 0;\n if (_this.parent.enableVirtualization) {\n islastRowIndex = trElement && parseInt(trElement.getAttribute(literals.dataRowIndex), 10) ===\n _this.parent.renderModule.data.dataManager.dataSource.json.length - 1;\n }\n else {\n var rowIndex = _this.parent.enableInfiniteScrolling && _this.parent.infiniteScrollSettings.enableCache &&\n !_this.parent.groupSettings.enableLazyLoading ?\n _this.parent.pageSettings.currentPage * _this.parent.pageSettings.pageSize - 1 :\n _this.parent.getCurrentViewRecords().length - 1;\n var lastRow = _this.parent.getRowByIndex(rowIndex);\n islastRowIndex = trElement && lastRow && lastRow.getAttribute('data-uid') === trElement.getAttribute('data-uid') &&\n lastRow.getAttribute('data-uid') !== _this.startedRow.getAttribute('data-uid');\n if (_this.isNewRowAdded() && _this.parent.editSettings.newRowPosition === 'Bottom') {\n islastRowIndex = false;\n }\n }\n if (islastRowIndex && !_this.parent.rowDropSettings.targetID) {\n var bottomborder = _this.parent.createElement('div', { className: 'e-lastrow-dragborder' });\n var gridcontentEle = _this.parent.getContent();\n bottomborder.style.width = _this.parent.element.offsetWidth - _this.getScrollWidth() + 'px';\n if (_this.parent.enableVirtualization) {\n bottomborder.style.zIndex = '1';\n }\n if (!gridcontentEle.getElementsByClassName('e-lastrow-dragborder').length &&\n (!(gObj.allowGrouping && gObj.groupSettings.columns.length) || isNullOrUndefined(trElement.nextSibling))) {\n gridcontentEle.classList.add('e-grid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = _this.getScrollWidth() + 'px';\n }\n }\n _this.removeBorder(trElement);\n }\n }\n if (target && target.classList.contains(literals.content)\n && !_this.isDropGrid.element.querySelector('.e-emptyrow') && _this.istargetGrid) {\n _this.removeBorder(trElement);\n var rowIndex = _this.isDropGrid.getCurrentViewRecords().length - 1;\n var selector = '.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse';\n var groupSelector = '.e-rowcell:not(.e-hide),.e-rowdragdrop:not(.e-hide),.e-detailrowcollapse:not(.e-hide)';\n var rowElement = [];\n if (_this.parent.allowGrouping && _this.parent.groupSettings.columns && _this.parent.groupSettings.columns.length) {\n rowElement = [].slice.call(_this.isDropGrid.getRowByIndex(rowIndex).querySelectorAll(groupSelector));\n }\n else {\n rowElement = [].slice.call(_this.isDropGrid.getRowByIndex(rowIndex).querySelectorAll(selector));\n }\n if (rowElement.length > 0) {\n if (_this.parent.allowGrouping && _this.parent.groupSettings.columns && _this.parent.groupSettings.columns.length) {\n _this.groupRowDDIndicator(rowElement, true);\n }\n else {\n addRemoveActiveClasses(rowElement, true, 'e-dragborder');\n }\n }\n }\n }\n };\n this.dragStop = function (e) {\n if (_this.parent.isCheckBoxSelection && _this.parent.enableInfiniteScrolling) {\n window.getSelection().removeAllRanges();\n }\n document.body.classList.remove('e-prevent-select');\n if (isActionPrevent(_this.parent)) {\n _this.parent.notify(events.preventBatch, {\n instance: _this, handler: _this.processDragStop, arg1: e\n });\n }\n else {\n _this.processDragStop(e);\n }\n };\n this.processDragStop = function (e) {\n var gObj = _this.parent;\n if (_this.parent.isDestroyed) {\n return;\n }\n var targetEle = _this.getElementFromPosition(e.helper, e.event);\n var target = targetEle && !targetEle.classList.contains('e-dlg-overlay') ?\n targetEle : e.target;\n gObj.element.classList.remove('e-rowdrag');\n var dropElement = document.getElementById(gObj.rowDropSettings.targetID);\n if (gObj.rowDropSettings.targetID && dropElement && dropElement.ej2_instances &&\n dropElement.ej2_instances[0].getModuleName() === 'grid') {\n dropElement.ej2_instances[0].getContent().classList.remove('e-allowRowDrop');\n }\n if (parentsUntil(_this.isDropGrid.element, 'e-grid')) {\n _this.stopTimer();\n _this.isDropGrid.enableHover = _this.hoverState;\n _this.isDropGrid.getContent().classList.remove('e-grid-relative');\n _this.removeBorder(targetEle);\n var stRow = _this.isDropGrid.element.querySelector('.e-dragstartrow');\n if (stRow) {\n stRow.classList.remove('e-dragstartrow');\n }\n }\n _this.processArgs(target);\n var args = {\n target: target, draggableType: 'rows',\n cancel: false,\n fromIndex: parseInt(_this.rows[0].getAttribute(literals.dataRowIndex), 10),\n dropIndex: _this.dragTarget, rows: _this.rows,\n data: (Object.keys(_this.dragStartData[0]).length > 0) ? _this.dragStartData : _this.currentViewData()\n };\n gObj.trigger(events.rowDrop, args, function () {\n if (!(parentsUntil(target, literals.row) || parentsUntil(target, 'e-emptyrow')\n || parentsUntil(target, literals.gridContent)) || args.cancel) {\n _this.dragTarget = null;\n remove(e.helper);\n return;\n }\n _this.isRefresh = false;\n var selectedIndexes = _this.parent.getSelectedRowIndexes();\n if (gObj.isRowDragable()) {\n if (!_this.parent.rowDropSettings.targetID &&\n _this.startedRow.querySelector('td.e-selectionbackground') && selectedIndexes.length > 1 &&\n selectedIndexes.length !== _this.parent.getCurrentViewRecords().length) {\n _this.reorderRows(selectedIndexes, args.dropIndex);\n }\n else {\n _this.reorderRows([parseInt(_this.startedRow.getAttribute(literals.dataRowIndex), 10)], _this.dragTarget);\n }\n _this.dragTarget = null;\n if (!gObj.rowDropSettings.targetID) {\n if (e.helper.classList.contains('e-cloneproperties') && document.querySelector('.' + e.helper.classList[0])) {\n remove(e.helper);\n }\n if (gObj.enableVirtualization && (!_this.parent.allowGrouping || !gObj.groupSettings.columns.length)) {\n gObj.refresh();\n }\n else {\n _this.rowOrder(args);\n }\n }\n if (_this.parent.getContentTable().scrollHeight < _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setLastRowCell();\n }\n }\n _this.isRefresh = true;\n });\n };\n this.removeCell = function (targetRow, className) {\n return [].slice.call(targetRow.querySelectorAll('td')).filter(function (cell) {\n if (cell.classList.contains(className)) {\n targetRow.deleteCell(cell.cellIndex);\n }\n });\n };\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialEnd, this.initializeDrag, this);\n this.parent.on(events.columnDrop, this.columnDrop, this);\n this.parent.on(events.rowDragAndDropComplete, this.onActionComplete, this);\n this.onDataBoundFn = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFn);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n RowDD.prototype.getParentGrid = function (childGrid) {\n var parentGrid = childGrid;\n var parentGridObtained = false;\n while (!parentGridObtained) {\n if (parentGrid.ej2_instances[0].parentDetails) {\n parentGrid = document.getElementById(parentGrid.ej2_instances[0].parentDetails.parentID);\n }\n if (!parentGrid.classList.contains('e-childgrid')) {\n parentGridObtained = true;\n }\n }\n return parentGrid;\n };\n RowDD.prototype.isNewRowAdded = function () {\n return this.parent.editSettings && this.parent.editSettings.showAddNewRow &&\n !(this.parent.enableInfiniteScrolling || this.parent.enableVirtualization);\n };\n RowDD.prototype.groupRowDDIndicator = function (rowElement, isAdd) {\n addRemoveActiveClasses([rowElement[0]], isAdd, 'e-dragleft');\n addRemoveActiveClasses(rowElement, isAdd, 'e-dragtop', 'e-dragbottom');\n addRemoveActiveClasses([rowElement[rowElement.length - 1]], isAdd, 'e-dragright');\n };\n RowDD.prototype.refreshRow = function (args, tbody, target) {\n var gObj = this.parent;\n var tbodyContent = gObj.getContentTable().querySelector(literals.tbody);\n var tbodyHeader = gObj.getHeaderTable().querySelector(literals.tbody);\n for (var i = 0, len = args.rows.length; i < len; i++) {\n var row = args.rows[parseInt(i.toString(), 10)];\n if (((gObj.enableVirtualization && gObj.allowGrouping && gObj.groupSettings.columns.length) ||\n (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache)) &&\n args.rows.length === 1) {\n var removeElem = gObj.getRowElementByUID(row.getAttribute('data-uid'));\n if (!isNullOrUndefined(removeElem)) {\n remove(removeElem);\n }\n }\n var dragstartrow = row.querySelector('.e-dragstartrow');\n if (dragstartrow) {\n dragstartrow.classList.remove('e-dragstartrow');\n }\n tbody.insertBefore(row, target);\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n var dragRowUid = row.getAttribute('data-uid');\n var dropRowUid = args.target.parentElement.getAttribute('data-uid');\n var dragRowObject = gObj.getRowObjectFromUID(dragRowUid);\n var dropRowObject = gObj.getRowObjectFromUID(dropRowUid);\n if (dragRowObject.parentUid !== dropRowObject.parentUid) {\n gObj['groupModule'].groupReorderHandler(dragRowObject, dropRowObject);\n }\n }\n }\n var tr = [].slice.call(gObj.editSettings.showAddNewRow ?\n tbody.querySelectorAll('.e-row:not(.e-addedrow)') : tbody.getElementsByClassName(literals.row));\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (gObj.groupSettings.enableLazyLoading || (gObj.enableInfiniteScrolling &&\n gObj.infiniteScrollSettings.enableCache && tr.length > gObj.pageSettings.pageSize * 3)) {\n gObj.refresh();\n }\n else {\n groupReorderRowObject(this.parent, args, tr);\n if (gObj.enableVirtualization || (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache)) {\n resetCachedRowIndex(gObj);\n }\n else {\n resetRowIndex(this.parent, gObj.getRowsObject().filter(function (data) { return data.isDataRow; }), tr);\n }\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: gObj.enableVirtualization ? this.parent.vRows : this.parent.getRowsObject()\n });\n }\n }\n else if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.columns.length) {\n if (tr.length > gObj.pageSettings.pageSize * 3) {\n gObj.refresh();\n }\n else {\n groupReorderRowObject(this.parent, args, tr);\n resetCachedRowIndex(gObj);\n }\n }\n else {\n this.refreshData(tr);\n }\n if (this.parent.frozenRows) {\n for (var i = 0, len = tr.length; i < len; i++) {\n if (i < this.parent.frozenRows) {\n tbodyHeader.appendChild(tr[parseInt(i.toString(), 10)]);\n }\n else {\n tbodyContent.appendChild(tr[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n RowDD.prototype.updateFrozenRowreOrder = function (args) {\n var gObj = this.parent;\n var tbodyC = gObj.getContentTable().querySelector(literals.tbody);\n var tbodyH = gObj.getHeaderTable().querySelector(literals.tbody);\n var tr = [].slice.call(tbodyH.getElementsByClassName(literals.row)).concat([].slice.call(tbodyC.getElementsByClassName(literals.row)));\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n this.parent.clearSelection();\n var targetRow = this.refreshRowTarget(args);\n for (var i = 0, len = tr.length; i < len; i++) {\n tbody.appendChild(tr[parseInt(i.toString(), 10)]);\n }\n this.refreshRow(args, tbody, targetRow);\n };\n RowDD.prototype.refreshRowTarget = function (args) {\n var gObj = this.parent;\n var targetIdx = parseInt(args.target.parentElement.getAttribute(literals.dataRowIndex), 10);\n if (gObj.enableVirtualization && gObj.allowGrouping && gObj.groupSettings.columns.length) {\n targetIdx = this.parent.getDataRows().indexOf(args.target.parentElement);\n }\n if ((args.fromIndex < args.dropIndex || args.fromIndex === args.dropIndex) && (!gObj.allowGrouping ||\n !gObj.groupSettings.columns.length)) {\n targetIdx = targetIdx + 1;\n }\n var targetTR = gObj.getRowByIndex(targetIdx);\n if (targetIdx === gObj.getRows().length && this.isNewRowAdded() && this.parent.editSettings.newRowPosition === 'Bottom') {\n targetTR = this.parent.element.querySelector('.e-row.e-addedrow');\n }\n var tr = gObj.allowGrouping && gObj.groupSettings.columns.length && targetIdx !== -1 &&\n args.fromIndex < args.dropIndex && targetTR ? targetTR.nextSibling : targetTR;\n return tr;\n };\n RowDD.prototype.updateFrozenColumnreOrder = function (args) {\n var gObj = this.parent;\n var tbody = gObj.getContentTable().querySelector(literals.tbody);\n this.parent.clearSelection();\n var targetRow = this.refreshRowTarget(args);\n this.refreshRow(args, tbody, targetRow);\n };\n RowDD.prototype.refreshData = function (tr) {\n var rowObj = {};\n var recordobj = {};\n var rowObjects = this.parent.getRowsObject();\n var currentViewData = this.parent.getCurrentViewRecords();\n for (var i = 0, len = tr.length; i < len; i++) {\n var index = parseInt(tr[parseInt(i.toString(), 10)].getAttribute(literals.dataRowIndex), 10);\n rowObj[parseInt(i.toString(), 10)] = rowObjects[parseInt(index.toString(), 10)];\n recordobj[parseInt(i.toString(), 10)] = currentViewData[parseInt(index.toString(), 10)];\n }\n var rows = this.parent.getRows();\n for (var i = 0, len = tr.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = tr[parseInt(i.toString(), 10)];\n rowObjects[parseInt(i.toString(), 10)] = rowObj[parseInt(i.toString(), 10)];\n currentViewData[parseInt(i.toString(), 10)] = recordobj[parseInt(i.toString(), 10)];\n }\n resetRowIndex(this.parent, rowObjects, tr);\n };\n RowDD.prototype.rowOrder = function (args) {\n if (args.dropIndex === args.fromIndex || isNaN(args.dropIndex)) {\n return;\n }\n if (this.parent.isDetail()) {\n this.parent.detailCollapseAll();\n var rows = [].slice.call(this.parent.getContentTable().querySelector(literals.tbody).children);\n var rowObjects = this.parent.getRowsObject();\n rows.filter(function (row) {\n if (row.classList.contains('e-detailrow')) {\n row.remove();\n }\n });\n for (var i = 0, len = rowObjects.length; i < len; i++) {\n if (!rowObjects[parseInt(i.toString(), 10)]) {\n break;\n }\n if (rowObjects[parseInt(i.toString(), 10)].isDetailRow) {\n this.parent.getRowsObject().splice(i, 1);\n i--;\n }\n }\n }\n if (args.target.classList.contains('e-rowcelldrag') || args.target.classList.contains('e-dtdiagonalright')\n || args.target.classList.contains('e-dtdiagonaldown')) {\n args.target = args.target.parentElement;\n }\n if (!args.target.classList.contains('e-rowcell') && parentsUntil(args.target, 'e-rowcell')) {\n args.target = parentsUntil(args.target, 'e-rowcell');\n }\n if (this.parent.frozenRows) {\n this.updateFrozenRowreOrder(args);\n }\n else {\n this.updateFrozenColumnreOrder(args);\n }\n if ((!this.parent.allowGrouping || !this.parent.groupSettings.columns.length) && this.selectedRowColls.length > 0) {\n this.parent.selectRows(this.selectedRowColls);\n var indexes = [];\n if (this.parent.filterSettings.columns.length || this.parent.sortSettings.columns.length) {\n for (var i = 0, len = args.rows.length; i < len; i++) {\n indexes.push(parseInt(args.rows[parseInt(i.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n }\n this.selectedRowColls = indexes;\n }\n this.selectedRowColls = [];\n }\n else {\n this.selectedRowColls = [];\n }\n };\n RowDD.prototype.currentViewData = function () {\n var selectedIndexes = this.parent.getSelectedRowIndexes();\n var currentVdata = [];\n var fromIdx = parseInt(this.startedRow.getAttribute(literals.dataRowIndex), 10);\n for (var i = 0, n = selectedIndexes.length; i < n; i++) {\n var currentV = 'currentViewData';\n currentVdata[parseInt(i.toString(), 10)] = this.parent[\"\" + currentV][selectedIndexes[parseInt(i.toString(), 10)]];\n }\n if (!this.parent.rowDropSettings.targetID && selectedIndexes.length === 0) {\n currentVdata[0] = this.parent.currentViewData[parseInt(fromIdx.toString(), 10)];\n }\n return currentVdata;\n };\n RowDD.prototype.saveChange = function (changeRecords, query) {\n var _this = this;\n this.parent.getDataModule().saveChanges(changeRecords, this.parent.getPrimaryKeyFieldNames()[0], {}, query)\n .then(function () {\n _this.parent.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'rowdraganddrop'\n });\n }).catch(function (e) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[\"\" + error]) && !isNullOrUndefined(e[\"\" + error][\"\" + message])) {\n e[\"\" + error] = e[\"\" + error][\"\" + message];\n }\n _this.parent.trigger(events.actionFailure, e);\n });\n };\n RowDD.prototype.reorderRows = function (fromIndexes, toIndex) {\n var selectedIndexes = this.parent.getSelectedRowIndexes();\n var selectedRecords = [];\n var draggedRecords = [];\n var currentViewData = this.parent.renderModule.data.dataManager.dataSource.json;\n var skip = this.parent.allowPaging ?\n (this.parent.pageSettings.currentPage * this.parent.pageSettings.pageSize) - this.parent.pageSettings.pageSize : 0;\n var dropIdx = toIndex + skip;\n var actualIdx = fromIndexes[0] + skip;\n for (var i = 0, len = fromIndexes.length; i < len; i++) {\n draggedRecords[parseInt(i.toString(), 10)] = currentViewData[fromIndexes[parseInt(i.toString(), 10)] + skip];\n }\n for (var i = 0, len = selectedIndexes.length; i < len; i++) {\n selectedRecords[parseInt(i.toString(), 10)] = currentViewData[selectedIndexes[parseInt(i.toString(), 10)] + skip];\n }\n for (var i = 0, len = draggedRecords.length; i < len; i++) {\n if (i !== 0) {\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[parseInt(j.toString(), 10)]) ===\n JSON.stringify(draggedRecords[parseInt(i.toString(), 10)])) {\n actualIdx = j;\n break;\n }\n }\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[parseInt(j.toString(), 10)]) === JSON\n .stringify(draggedRecords[i - 1])) {\n if (actualIdx > j) {\n dropIdx = j + 1;\n }\n break;\n }\n }\n }\n this.reorderRow(actualIdx - skip, dropIdx - skip);\n }\n if (this.isRefresh) {\n this.parent.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'rowdraganddrop'\n });\n }\n for (var i = 0, len = selectedRecords.length; i < len; i++) {\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[parseInt(j.toString(), 10)]) === JSON\n .stringify(selectedRecords[parseInt(i.toString(), 10)])) {\n selectedIndexes[parseInt(i.toString(), 10)] = j - skip;\n break;\n }\n }\n }\n this.selectedRowColls = selectedIndexes;\n };\n RowDD.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n RowDD.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, { type: events.actionComplete, requestType: 'rowdraganddrop' }));\n };\n RowDD.prototype.initializeDrag = function () {\n var gObj = this.parent;\n this.draggable = new Draggable(gObj.element, {\n dragTarget: '.e-rowcelldrag, .e-rowdragdrop, .e-rowcell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n isReplaceDragEle: this.isReplaceDragEle,\n isPreventSelect: false\n });\n };\n RowDD.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var y = getPosition(e).y;\n var cliRect = this.isDropGrid.getContent().getBoundingClientRect();\n var rowHeight = this.isDropGrid.getRowHeight() - 15;\n var scrollElem = this.isDropGrid.getContent().firstElementChild;\n var virtualScrollbtm = this.parent.enableVirtualization ? 20 : 0;\n if (cliRect.top >= y) {\n var scrollPixel_1 = -(this.isDropGrid.getRowHeight());\n this.isOverflowBorder = false;\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollElem, scrollPixel_1); }, 200);\n }\n else if (cliRect.top + this.isDropGrid.getContent().clientHeight - rowHeight - 33 - virtualScrollbtm <= y) {\n var scrollPixel_2 = (this.isDropGrid.getRowHeight());\n this.isOverflowBorder = false;\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollElem, scrollPixel_2); }, 200);\n }\n };\n RowDD.prototype.setScrollDown = function (scrollElem, scrollPixel) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n };\n RowDD.prototype.moveDragRows = function (e, startedRow, targetRow) {\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n if (this.parent.element.classList.contains('e-childgrid')) {\n var parentGrid = this.getParentGrid(this.parent.element);\n cloneElement = parentGrid.querySelector('.e-cloneproperties');\n }\n var element = closestElement(e.target, 'tr');\n if (parentsUntil(element, 'e-grid') &&\n ((!this.parent.rowDropSettings.targetID &&\n parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(element, 'e-grid').id) || this.istargetGrid)) {\n var targetElement = element;\n if (!element) {\n targetElement = startedRow;\n }\n this.setBorder(targetElement, e.event, startedRow, targetRow);\n }\n };\n RowDD.prototype.setBorder = function (element, event, startedRow, targetRow) {\n var node = this.parent.element;\n if (this.istargetGrid) {\n node = this.isDropGrid.element;\n }\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n this.removeBorder(element);\n }\n else {\n this.removeFirstRowBorder(element);\n this.removeLastRowBorder(element);\n }\n if (parentsUntil(element, 'e-grid') && element.classList.contains(literals.row) && ((!this.parent.rowDropSettings.targetID &&\n parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(element, 'e-grid').id) || this.istargetGrid)) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns && this.parent.groupSettings.columns.length) {\n removeClass(node.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'), ['e-dragtop', 'e-dragright',\n 'e-dragbottom', 'e-dragleft']);\n }\n else {\n removeClass(node.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'), ['e-dragborder']);\n }\n var rowElement = [];\n var targetRowIndex = parseInt(targetRow.getAttribute(literals.dataRowIndex), 10);\n if (targetRow && targetRowIndex === 0 &&\n !(this.isNewRowAdded() && this.parent.editSettings.newRowPosition === 'Top')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n element = targetRow;\n rowElement = [].slice.call(element\n .querySelectorAll('.e-groupcaption,.e-summarycell,.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n else {\n var div = this.parent.createElement('div', { className: 'e-firstrow-dragborder' });\n var gridheaderEle = this.isDropGrid.getHeaderContent();\n gridheaderEle.classList.add('e-grid-relative');\n div.style.width = node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.getElementsByClassName('e-firstrow-dragborder').length) {\n if (this.parent.frozenRows) {\n if (this.parent.isFrozenGrid()) {\n div.style.width = this.parent.getContent().firstElementChild.scrollWidth + 'px';\n }\n gridheaderEle.querySelector('thead').appendChild(div);\n div.style.position = 'relative';\n }\n else {\n gridheaderEle.appendChild(div);\n }\n }\n }\n }\n else if (this.parent.rowDropSettings.targetID && targetRow) {\n element = this.isDropGrid.getRowByIndex(targetRowIndex - 1);\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n else if (targetRow && parseInt(startedRow.getAttribute(literals.dataRowIndex), 10) > targetRowIndex) {\n if (this.parent.enableVirtualization && this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n targetRowIndex = this.parent.getDataRows().indexOf(targetRow);\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n element = targetRow;\n rowElement = [].slice.call(element\n .querySelectorAll(\".e-groupcaption,.e-summarycell,.e-rowcell:not(.e-hide),.e-rowdragdrop:not(.e-hide),\\n .e-detailrowcollapse:not(.e-hide)\"));\n }\n else {\n if (targetRowIndex === 0 && this.isNewRowAdded() && this.parent.editSettings.newRowPosition === 'Top') {\n element = this.parent.element.querySelector('.e-row.e-addedrow tr');\n }\n else {\n element = this.parent.getRowByIndex(targetRowIndex - 1);\n }\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse,.e-dragindentcell'));\n }\n }\n else {\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n if (rowElement.length > 0) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns && this.parent.groupSettings.columns.length) {\n this.groupRowDDIndicator(rowElement, true);\n }\n else {\n addRemoveActiveClasses(rowElement, true, 'e-dragborder');\n }\n }\n }\n };\n RowDD.prototype.getScrollWidth = function () {\n var scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n };\n RowDD.prototype.removeFirstRowBorder = function (element) {\n if (this.isDropGrid.element.getElementsByClassName('e-firstrow-dragborder').length > 0 && element &&\n (element.rowIndex !== 0 || element.classList.contains('e-columnheader'))) {\n remove(this.isDropGrid.element.getElementsByClassName('e-firstrow-dragborder')[0]);\n }\n else {\n var addNewRow = this.parent.element.querySelector('.e-row.e-addedrow tr');\n if (addNewRow && addNewRow.querySelector('.e-dragborder')) {\n var rowElement = [].slice.call(addNewRow.\n querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse,.e-dragindentcell'));\n addRemoveActiveClasses(rowElement, false, 'e-dragborder');\n }\n }\n };\n RowDD.prototype.removeLastRowBorder = function (element) {\n var islastRowIndex;\n if (this.parent.enableVirtualization) {\n islastRowIndex = element && parseInt(element.getAttribute(literals.dataRowIndex), 10) !==\n this.parent.renderModule.data.dataManager.dataSource.json.length - 1;\n }\n else {\n var rowIndex = this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache &&\n !this.parent.groupSettings.enableLazyLoading ?\n this.parent.pageSettings.currentPage * this.parent.pageSettings.pageSize - 1 :\n this.parent.getCurrentViewRecords().length - 1;\n var lastRow = this.parent.getRowByIndex(rowIndex);\n islastRowIndex = element && lastRow && lastRow.getAttribute('data-uid') !== element.getAttribute('data-uid');\n }\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0 && element && islastRowIndex) {\n remove(this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0]);\n }\n };\n RowDD.prototype.removeBorder = function (element) {\n this.removeFirstRowBorder(element);\n if (!this.parent.rowDropSettings.targetID) {\n this.removeLastRowBorder(element);\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n element = ([].slice.call(this.isDropGrid.getContentTable().querySelectorAll('tr'))).filter(function (row) {\n return row.querySelector('td.e-dragtop.e-dragbottom');\n })[0];\n }\n else {\n element = (this.isDropGrid.getRows()).filter(function (row) { return row.querySelector('td.e-dragborder'); })[0];\n }\n if (element) {\n var rowElement = this.parent.allowGrouping && this.parent.groupSettings.columns.length ? [].slice.call(element\n .querySelectorAll('.e-dragtop.e-dragbottom')) : [].slice.call(element.getElementsByClassName('e-dragborder'));\n if (this.parent.allowGrouping && this.parent.groupSettings.columns && this.parent.groupSettings.columns.length) {\n this.groupRowDDIndicator(rowElement, false);\n }\n else {\n addRemoveActiveClasses(rowElement, false, 'e-dragborder');\n }\n }\n };\n RowDD.prototype.getElementFromPosition = function (element, event) {\n var position = getPosition(event);\n element.style.display = 'none';\n var target = document.elementFromPoint(position.x, position.y);\n element.style.display = '';\n return target;\n };\n RowDD.prototype.onDataBound = function () {\n if (this.selectedRowColls.length > 0 && (this.parent.enableVirtualization || this.parent.allowRowDragAndDrop)) {\n this.parent.selectRows(this.selectedRowColls);\n this.selectedRowColls = [];\n }\n };\n RowDD.prototype.getTargetIdx = function (targetRow) {\n return targetRow ? parseInt(targetRow.getAttribute(literals.dataRowIndex), 10) : 0;\n };\n RowDD.prototype.singleRowDrop = function (e) {\n var targetRow = closestElement(e.target, 'tr');\n var srcControl = e.droppedElement.parentElement.ej2_instances[0];\n var currentIndex = targetRow ? targetRow.rowIndex : srcControl.currentViewData.length - 1;\n this.reorderRow(this.startedRowIndex, currentIndex);\n };\n RowDD.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') !== 'grouping' &&\n (parentsUntil(e.target, literals.row) || parentsUntil(e.target, 'e-emptyrow') || parentsUntil(e.target, literals.gridContent))) {\n var targetRow = closestElement(e.target, 'tr');\n var srcControl = void 0;\n var currentIndex = void 0;\n var dragParentElement = document.querySelector('.e-drag-ref');\n if ((e.droppedElement.querySelector('tr').getAttribute('single-dragrow') !== 'true' &&\n (e.droppedElement.parentElement.id === gObj.element.id || (dragParentElement\n && dragParentElement.parentElement.id === gObj.element.id)))\n || (e.droppedElement.querySelector('tr').getAttribute('single-dragrow') === 'true' &&\n e.droppedElement.parentElement.id !== gObj.element.id)) {\n return;\n }\n if (e.droppedElement.parentElement.id !== gObj.element.id) {\n if (dragParentElement) {\n srcControl = dragParentElement.parentElement.ej2_instances[0];\n remove(dragParentElement);\n }\n else {\n srcControl = e.droppedElement.parentElement.ej2_instances[0];\n }\n }\n else if (this.isSingleRowDragDrop || e.droppedElement.querySelector('tr').getAttribute('single-dragrow') === 'true') {\n this.singleRowDrop(e);\n return;\n }\n if (srcControl.element.id !== gObj.element.id && srcControl.rowDropSettings.targetID !== gObj.element.id) {\n return;\n }\n var records = srcControl.getSelectedRecords();\n var targetIndex = currentIndex = this.getTargetIdx(targetRow);\n if (e.target && e.target.classList.contains('e-content') && gObj.getCurrentViewRecords().length) {\n var lastrow = gObj.getContentTable().querySelector('tr:last-child');\n if (lastrow) {\n targetIndex = currentIndex = parseInt(lastrow.getAttribute(literals.ariaRowIndex), 10);\n }\n }\n if (isNaN(targetIndex)) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n targetIndex = currentIndex = 0;\n }\n if (gObj.allowPaging) {\n targetIndex = targetIndex + (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize;\n }\n //Todo: drag and drop mapper & BatchChanges\n gObj.notify(events.rowsAdded, { toIndex: targetIndex, records: records });\n gObj.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'rowdraganddrop'\n });\n var selectedRows = srcControl.getSelectedRowIndexes();\n var skip = srcControl.allowPaging ?\n (srcControl.pageSettings.currentPage * srcControl.pageSettings.pageSize) - srcControl.pageSettings.pageSize : 0;\n this.selectedRows = [];\n for (var i = 0, len = records.length; i < len; i++) {\n this.selectedRows.push(skip + selectedRows[parseInt(i.toString(), 10)]);\n }\n srcControl.notify(events.rowsRemoved, { indexes: this.selectedRows, records: records });\n if (srcControl.dataSource instanceof DataManager && srcControl.dataSource.dataSource.offline) {\n srcControl.notify(events.modelChanged, {\n type: events.actionBegin, requestType: 'rowdraganddrop'\n });\n }\n }\n };\n RowDD.prototype.reorderRow = function (fromIndexes, toIndex) {\n var gObj = this.parent;\n if (!gObj.sortSettings.columns.length && !gObj.groupSettings.columns.length && !gObj.filterSettings.columns.length) {\n //Todo: drag and drop mapper & BatchChanges\n var skip = gObj.allowPaging ?\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : 0;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var fromIndex = fromIndexes;\n toIndex = toIndex + skip;\n this.selectedRows = gObj.getSelectedRowIndexes();\n gObj.notify(events.rowPositionChanged, {\n fromIndex: fromIndexes + skip,\n toIndex: toIndex\n });\n }\n };\n RowDD.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.initializeDrag();\n }\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n RowDD.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + literals.gridHeader) &&\n !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.draggable.destroy();\n this.parent.off(events.initialEnd, this.initializeDrag);\n this.parent.off(events.columnDrop, this.columnDrop);\n this.parent.off(events.rowDragAndDropComplete, this.onActionComplete);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFn);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.destroy, this.destroy);\n //destory ejdrag and drop\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n RowDD.prototype.getModuleName = function () {\n return 'rowDragAndDrop';\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDD.prototype.processArgs = function (target) {\n var gObj = this.parent;\n var dragIdx = parseInt(this.startedRow.getAttribute(literals.dataRowIndex), 10);\n if ((gObj.getSelectedRecords().length > 0 && this.startedRow.cells[0].classList.contains('e-selectionbackground') === false)\n || gObj.getSelectedRecords().length === 0) {\n if (gObj.enableVirtualization || (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache)) {\n this.rows = [this.startedRow];\n }\n else {\n this.rows = [gObj.getRowByIndex(dragIdx)];\n }\n this.rowData = [gObj.getRowInfo((this.startedRow).querySelector('.' + literals.rowCell)).rowData];\n if ((gObj.enableVirtualization || (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache))\n && gObj.allowGrouping && gObj.groupSettings.columns.length && gObj.getSelectedRows().length) {\n this.rows = gObj.getSelectedRows();\n this.rowData = gObj.getSelectedRecords();\n }\n }\n else {\n this.rows = gObj.getSelectedRows();\n this.rowData = gObj.getSelectedRecords();\n }\n };\n return RowDD;\n}());\nexport { RowDD };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, select, removeClass } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener, applyBiggerTheme } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.isSearched = false;\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.isRightToolbarMenu = false;\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[\"\" + item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[\"\" + item].text = '';\n this.predefinedItems[\"\" + item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.isRightToolbarMenu = false;\n if (this.parent.enableAdaptiveUI && this.isResponsiveToolbarMenuItems(true) && ((this.parent.rowRenderingMode === 'Horizontal') ||\n (this.parent.rowRenderingMode === 'Vertical' && !this.parent.allowFiltering && !this.parent.allowSorting))) {\n this.isRightToolbarMenu = true;\n }\n if (isAdaptive && this.isResponsiveToolbarMenuItems(false)) {\n this.predefinedItems.responsiveToolbarItems = {\n id: this.gridID + '_' + 'responsivetoolbaritems', cssClass: 'e-responsive-toolbar-items e-menu-toolbar', suffixIcon: 'e-' + 'responsivetoolbaritems-btn',\n align: this.isRightToolbarMenu ? 'Left' : 'Right'\n };\n }\n else {\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n if (this.parent.enableAdaptiveUI) {\n if (isNullOrUndefined(this.responsiveToolbarMenu)) {\n this.renderResponsiveToolbarpopup();\n }\n if (this.toolbar.element) {\n this.toolbar.refreshOverflow();\n }\n }\n };\n Toolbar.prototype.isResponsiveToolbarMenuItems = function (isRight) {\n var items = isRight ? ['Add', 'Edit', 'Delete', 'Search'] : ['Print', 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport'];\n var toolbarItems = this.parent.toolbar || [];\n for (var i = 0; i < items.length; i++) {\n if (toolbarItems.indexOf(items[parseInt(i.toString(), 10)]) >= 0) {\n return isRight ? false : true;\n }\n }\n return isRight ? true : false;\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (this.responsiveToolbarMenu) {\n this.responsiveToolbarMenu.destroy();\n }\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n var classList = this.parent.cssClass ? 'e-input-group e-search ' + this.parent.cssClass\n : 'e-input-group e-search';\n this.element.querySelector('.e-search-wrapper').innerHTML = '
      \\\n \\\n \\\n \\\n
      ';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = '\\\n \\\n
      ';\n }\n }\n if (this.element.querySelector('.e-responsive-toolbar-items')) {\n this.element.querySelector('.e-responsive-toolbar-items').innerHTML = '\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","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n // eslint-disable-next-line\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n // eslint-disable-next-line\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n // eslint-disable-next-line\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n // eslint-disable-next-line\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.isMenuItemClicked = false;\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function () {\n this.menuTarget = null;\n if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule == 'navigationpane') {\n this.parent.pathId.pop();\n var parentKey = [];\n var itemKeys = Object.keys(this.parent.feParent);\n for (var _i = 0, itemKeys_1 = itemKeys; _i < itemKeys_1.length; _i++) {\n var item = itemKeys_1[_i];\n var itemData = getValue(item, this.parent.feParent);\n if (this.parent.pathNames.indexOf(itemData.name) !== -1) {\n parentKey.push(itemData._fm_id);\n }\n }\n this.parent.pathId.push(parentKey[parentKey.length - 1]);\n this.parent.navigationpaneModule.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n }\n this.isMenuItemClicked = false;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var selected = false;\n var uid;\n // eslint-disable-next-line\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest(\"div\");\n }\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n // eslint:disable-next-line\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n // eslint:disable-next-line\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n // eslint:disable-next-line\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n // eslint-disable-next-line\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n // eslint-disable-next-line\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('data-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n /* istanbul ignore next */\n // eslint:disable-next-line\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n else {\n var pasteIndex = this.disabledItems.indexOf('Paste');\n if (pasteIndex !== -1) {\n this.disabledItems.splice(pasteIndex, 1);\n }\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n var selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n }\n else if (this.parent.selectedItems.length !== 1 && this.parent.activeModule !== 'navigationpane') {\n this.disabledItems.push('Rename', 'Paste');\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n if (this.parent.selectedNodes.length === 0) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n // eslint-disable-next-line\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n // eslint-disable-next-line\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n // eslint-disable-next-line\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n _this.isMenuItemClicked = true;\n // eslint:disable-next-line\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if ((_this.parent.activeModule === 'largeiconsview') || (_this.parent.activeModule === 'detailsview')) {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n else {\n _this.parent.folderPath = '';\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n /* istanbul ignore next */\n case 'name':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'size':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'date':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'ascending':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n this.targetElement = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.split(' ').join('').toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\n// eslint-disable-next-line\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\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, isNullOrUndefined, L10n, closest, Collection } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { ToolbarItem } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n *
      \n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n // eslint-disable-next-line\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.isCut = false;\n _this.isSearchCut = false;\n _this.isSearchDrag = false;\n _this.isPasteError = false;\n _this.folderPath = '';\n _this.isSameAction = false;\n _this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n _this.isSortByClicked = false;\n _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n // eslint-disable-next-line\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n // eslint-disable-next-line\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n // eslint-disable-next-line\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n //Specifies whether the operating system is MAC or not \n _this.isMac = false;\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this],\n name: 'Toolbar'\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this],\n name: 'NavigationPane'\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this],\n name: 'DetailsView'\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this],\n name: 'ContextMenu'\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\n args: [this],\n name: 'Virtualization'\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n // eslint-disable-next-line\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n // eslint-disable-next-line\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n // eslint-disable-next-line\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n // eslint-disable-next-line\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadFailure = function (files) {\n // eslint-disable-next-line\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n if (this.toolbarSettings.items.indexOf('Upload') != -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\n break;\n }\n };\n FileManager.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n // eslint:disable-next-line\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'sortBy':\n refresh(this);\n this.notify(events.sortByChange, {});\n if (this.view === 'Details') {\n this.notify(events.sortColumn, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n _super.prototype.destroy.call(this);\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n // eslint-disable-next-line\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showItemCheckBoxes\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Property('name')\n ], FileManager.prototype, \"sortBy\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"sortComparer\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Collection([], ToolbarItem)\n ], FileManager.prototype, \"toolbarItems\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","import { EventHandler, Browser } from '@syncfusion/ej2-base';\nimport { debounce } from '@syncfusion/ej2-base';\n/**\n * InterSectionObserver - class watch whether it enters the viewport.\n *\n * @hidden\n */\nvar InterSectionObserver = /** @class */ (function () {\n function InterSectionObserver(element, options, movableEle) {\n var _this = this;\n this.fromWheel = false;\n this.touchMove = false;\n this.options = {};\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerRect.top;\n var bottom = _this.containerRect.bottom > rect.bottom ? _this.containerRect.bottom - rect.bottom : 0;\n info.entered = top >= 0;\n return top + (_this.options.pageHeight / 2) >= 0 || (bottom > 0 && rect.bottom > 0);\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var bottom = rect.bottom;\n info.entered = rect.bottom <= _this.containerRect.bottom;\n return ((bottom - _this.containerRect.top) - (_this.options.pageHeight / 2)) <= _this.options.pageHeight / 2;\n }, axis: 'Y'\n },\n 'right': {\n check: function (rect, info) {\n var right = rect.right;\n info.entered = right < _this.containerRect.right;\n return right - _this.containerRect.width <= _this.containerRect.right;\n }, axis: 'X'\n },\n 'left': {\n check: function (rect, info) {\n var left = rect.left;\n info.entered = left > 0;\n return left + _this.containerRect.width >= _this.containerRect.left;\n }, axis: 'X'\n }\n };\n this.element = element;\n this.options = options;\n this.movableEle = movableEle;\n }\n InterSectionObserver.prototype.observe = function (callback, onEnterCallback) {\n var _this = this;\n this.containerRect = this.options.container.getBoundingClientRect();\n EventHandler.add(this.options.container, 'wheel', function () { return _this.fromWheel = true; }, this);\n EventHandler.add(this.options.container, 'scroll', this.virtualScrollHandler(callback, onEnterCallback), this);\n };\n InterSectionObserver.prototype.check = function (direction) {\n var info = this.sentinelInfo[\"\" + direction];\n return info.check(this.element.getBoundingClientRect(), info);\n };\n InterSectionObserver.prototype.virtualScrollHandler = function (callback, onEnterCallback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n this.options.prevTop = this.options.prevLeft = 0;\n return function (e) {\n var top = e.target.scrollTop;\n var left = e.target.scrollLeft;\n var direction = _this.options.prevTop < top ? 'down' : 'up';\n direction = _this.options.prevLeft === left ? direction : _this.options.prevLeft < left ? 'right' : 'left';\n _this.options.prevTop = top;\n _this.options.prevLeft = left;\n var current = _this.sentinelInfo[\"\" + direction];\n if (_this.options.axes.indexOf(current.axis) === -1) {\n return;\n }\n _this.containerRect = _this.options.container.getBoundingClientRect();\n var check = _this.check(direction);\n if (current.entered) {\n onEnterCallback(_this.element, current, direction, { top: top, left: left }, _this.fromWheel, check);\n }\n if (check) {\n var fn = debounced100;\n //this.fromWheel ? this.options.debounceEvent ? debounced100 : callback : debounced100;\n if (current.axis === 'X') {\n fn = debounced50;\n }\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n _this.fromWheel = false;\n };\n };\n InterSectionObserver.prototype.setPageHeight = function (value) {\n this.options.pageHeight = value;\n };\n return InterSectionObserver;\n}());\nexport { InterSectionObserver };\n","import { Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getRowIndexFromElement, isGroupAdaptive } from '../base/util';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n */\nvar VirtualRowModelGenerator = /** @class */ (function () {\n function VirtualRowModelGenerator(parent) {\n this.cOffsets = {};\n this.cache = {};\n this.rowCache = {};\n this.data = {};\n this.groups = {};\n this.currentInfo = {};\n this.parent = parent;\n this.model = this.parent.pageSettings;\n this.rowModelGenerator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n }\n VirtualRowModelGenerator.prototype.columnInfiniteRows = function (data, e) {\n var result = [];\n if (e.requestType === 'virtualscroll') {\n var rows = this.parent.getRowsObject();\n // eslint-disable-next-line prefer-spread\n result.push.apply(result, this.rowModelGenerator.refreshRows(rows));\n if (this.parent.infiniteScrollSettings.enableCache) {\n var currentRowStartIndex = this.parent.frozenRows && this.parent.pageSettings.currentPage === 1 ? 0\n : getRowIndexFromElement(this.parent.getContentTable().querySelector('.e-row:not(.e-addedrow)'));\n var newResult = result\n .slice(currentRowStartIndex, currentRowStartIndex + (this.parent.pageSettings.pageSize * 3));\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage !== 1) {\n newResult = result.slice(0, this.parent.frozenRows).concat(newResult);\n }\n result = newResult;\n }\n }\n else {\n // eslint-disable-next-line prefer-spread\n result.push.apply(result, this.rowModelGenerator.generateRows(data, e));\n }\n return result;\n };\n VirtualRowModelGenerator.prototype.generateRows = function (data, e) {\n var _this = this;\n if (this.parent.enableColumnVirtualization && this.parent.enableInfiniteScrolling) {\n return this.columnInfiniteRows(data, e);\n }\n var isManualRefresh = false;\n var info = e.virtualInfo = e.virtualInfo || this.getData();\n var xAxis = info.sentinelInfo && info.sentinelInfo.axis === 'X';\n var page = !xAxis && info.loadNext && !info.loadSelf ? info.nextInfo.page : info.page;\n var result = [];\n var indexes = this.getBlockIndexes(page);\n var loadedBlocks = [];\n if (this.currentInfo.blockIndexes) {\n indexes = info.blockIndexes = e.virtualInfo.blockIndexes = this.includePrevPage ? this.currentInfo.blockIndexes.slice(1)\n : this.currentInfo.blockIndexes.slice(0, this.currentInfo.blockIndexes.length - 1);\n isManualRefresh = true;\n }\n this.checkAndResetCache(e.requestType);\n if (isGroupAdaptive(this.parent) && this.parent.vcRows.length) {\n var dataRows = this.parent.vcRows.filter(function (row) { return row.isDataRow; });\n if ((this.parent.isManualRefresh && dataRows.length === data['records'].length) || !this.parent.isManualRefresh) {\n return result = this.parent.vcRows;\n }\n }\n if (this.parent.enableColumnVirtualization) {\n for (var i = 0; i < info.blockIndexes.length; i++) {\n if (this.isBlockAvailable(info.blockIndexes[parseInt(i.toString(), 10)])) {\n this.cache[info.blockIndexes[parseInt(i.toString(), 10)]] =\n this.rowModelGenerator.refreshRows(this.cache[info.blockIndexes[parseInt(i.toString(), 10)]]);\n }\n }\n }\n var values = info.blockIndexes;\n var _loop_1 = function (i) {\n if (!this_1.isBlockAvailable(values[parseInt(i.toString(), 10)])) {\n var startIdx = !isNullOrUndefined(this_1.startIndex) ? this_1.startIndex :\n this_1.getStartIndex(values[parseInt(i.toString(), 10)], data);\n var rows = this_1.rowModelGenerator.generateRows(data, {\n virtualInfo: info, startIndex: startIdx\n });\n if (isGroupAdaptive(this_1.parent) && !this_1.parent.vcRows.length) {\n this_1.recordsCount = data.records.length;\n this_1.parent.vRows = rows;\n this_1.parent.vcRows = rows;\n this_1.parent.notify(events.refreshVirtualMaxPage, {});\n }\n var median = void 0;\n if (isGroupAdaptive(this_1.parent)) {\n this_1.getGroupVirtualRecordsByIndex(rows);\n }\n else {\n if (isManualRefresh) {\n this_1.setBlockForManualRefresh(this_1.cache, indexes, rows);\n }\n else {\n median = ~~Math.max(rows.length, this_1.model.pageSize) / 2;\n if (!this_1.isBlockAvailable(indexes[0])) {\n this_1.cache[indexes[0]] = rows.slice(0, median);\n }\n if (!this_1.isBlockAvailable(indexes[1])) {\n this_1.cache[indexes[1]] = rows.slice(median);\n }\n }\n }\n }\n if (this_1.parent.groupSettings.columns.length && !xAxis && this_1.cache[values[parseInt(i.toString(), 10)]] &&\n !this_1.parent.groupSettings.enableLazyLoading) {\n this_1.cache[values[parseInt(i.toString(), 10)]] =\n this_1.updateGroupRow(this_1.cache[values[parseInt(i.toString(), 10)]], values[parseInt(i.toString(), 10)]);\n }\n if (!e.renderMovableContent && !e.renderFrozenRightContent && this_1.cache[values[parseInt(i.toString(), 10)]]) {\n // eslint-disable-next-line prefer-spread\n result.push.apply(result, this_1.cache[values[parseInt(i.toString(), 10)]]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var DataRecord_1 = [];\n if (this_1.parent.enableVirtualization && this_1.parent.groupSettings.columns.length) {\n result.forEach(function (data) {\n if (!DataRecord_1.includes(data)) {\n DataRecord_1.push(data);\n }\n });\n }\n result = DataRecord_1.length ? DataRecord_1 : result;\n }\n if (this_1.isBlockAvailable(values[parseInt(i.toString(), 10)])) {\n loadedBlocks.push(values[parseInt(i.toString(), 10)]);\n }\n };\n var this_1 = this;\n for (var i = 0; i < values.length; i++) {\n _loop_1(i);\n }\n info.blockIndexes = loadedBlocks;\n var grouping = 'records';\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n this.parent.currentViewData[\"\" + grouping] = result.map(function (m) { return m.data; });\n }\n else {\n this.parent.currentViewData = result.map(function (m) { return m.data; });\n }\n if (e.requestType === 'grouping') {\n this.parent.currentViewData[\"\" + grouping] = this.parent.currentViewData[\"\" + grouping].filter(function (item, index) {\n return _this.parent.currentViewData[\"\" + grouping].indexOf(item) === index;\n });\n }\n if (isGroupAdaptive(this.parent) && this.parent.vcRows.length) {\n if (['save', 'delete'].some(function (value) { return e.requestType === value; })) {\n return result = this.parent.vcRows;\n }\n }\n return result;\n };\n VirtualRowModelGenerator.prototype.setBlockForManualRefresh = function (cache, blocks, rows) {\n var size = this.model.pageSize / 2;\n if (this.includePrevPage) {\n cache[blocks[0] - 1] = rows.slice(0, size);\n cache[blocks[0]] = rows.slice(size, size * 2);\n cache[blocks[1]] = rows.slice(size * 2, size * 3);\n cache[blocks[2]] = rows.slice(size * 3, size * 4);\n }\n else {\n cache[blocks[0]] = rows.slice(0, size);\n cache[blocks[1]] = rows.slice(size, size * 2);\n cache[blocks[2]] = rows.slice(size * 2, size * 3);\n cache[blocks[2] + 1] = rows.slice(size * 3, size * 4);\n }\n };\n VirtualRowModelGenerator.prototype.getBlockIndexes = function (page) {\n return [page + (page - 1), page * 2];\n };\n VirtualRowModelGenerator.prototype.getPage = function (block) {\n return block % 2 === 0 ? block / 2 : (block + 1) / 2;\n };\n VirtualRowModelGenerator.prototype.isBlockAvailable = function (value) {\n return value in this.cache;\n };\n VirtualRowModelGenerator.prototype.getData = function () {\n return {\n page: this.model.currentPage,\n blockIndexes: this.getBlockIndexes(this.model.currentPage),\n direction: 'down',\n columnIndexes: this.parent.getColumnIndexesInView()\n };\n };\n VirtualRowModelGenerator.prototype.getStartIndex = function (blk, data, full) {\n if (full === void 0) { full = true; }\n var page = this.getPage(blk);\n var even = blk % 2 === 0;\n var index = (page - 1) * this.model.pageSize;\n return full || !even ? index : index + ~~(this.model.pageSize / 2);\n };\n VirtualRowModelGenerator.prototype.getColumnIndexes = function (content) {\n var _this = this;\n if (content === void 0) { content = this.parent.getHeaderContent().querySelector('.' + literals.headerContent); }\n var indexes = [];\n var sLeft = content.scrollLeft | 0;\n var keys = Object.keys(this.cOffsets);\n var cWidth = content.getBoundingClientRect().width;\n sLeft = Math.min(this.cOffsets[keys.length - 1] - cWidth, sLeft);\n var calWidth = Browser.isDevice ? 2 * cWidth : cWidth / 2;\n var left = sLeft + cWidth + (sLeft === 0 ? calWidth : 0);\n var frzLeftWidth = 0;\n if (this.parent.isFrozenGrid()) {\n frzLeftWidth = this.parent.leftrightColumnWidth('left');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var rightCol = this.parent.getVisibleFrozenRightCount();\n keys.splice((keys.length - 1) - rightCol, rightCol);\n }\n }\n keys.some(function (offset) {\n var iOffset = Number(offset);\n var offsetVal = _this.cOffsets[\"\" + offset];\n var border = ((sLeft - calWidth) + frzLeftWidth) <= offsetVal && (left + calWidth) >= offsetVal;\n if (border) {\n indexes.push(iOffset);\n }\n return left + calWidth < offsetVal;\n });\n return indexes;\n };\n VirtualRowModelGenerator.prototype.checkAndResetCache = function (action) {\n var actions = ['paging', 'refresh', 'sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder',\n 'save', 'delete'];\n var clear = actions.some(function (value) { return action === value; });\n if (clear) {\n this.cache = {};\n this.data = {};\n this.groups = {};\n }\n return clear;\n };\n VirtualRowModelGenerator.prototype.refreshColOffsets = function () {\n var _this = this;\n var col = 0;\n this.cOffsets = {};\n var gLen = this.parent.groupSettings.columns.length;\n var cols = this.parent.columns;\n var cLen = cols.length;\n var isVisible = function (column) { return column.visible &&\n (!_this.parent.groupSettings.showGroupedColumn ? _this.parent.groupSettings.columns.indexOf(column.field) < 0 : column.visible); };\n var c = this.parent.groupSettings.columns;\n for (var i = 0; i < c.length; i++) {\n this.cOffsets[parseInt(i.toString(), 10)] = (this.cOffsets[i - 1] | 0) + 30;\n }\n // eslint-disable-next-line prefer-spread\n var blocks = Array.apply(null, Array(cLen)).map(function () { return col++; });\n for (var j = 0; j < blocks.length; j++) {\n blocks[parseInt(j.toString(), 10)] = blocks[parseInt(j.toString(), 10)] + gLen;\n this.cOffsets[blocks[parseInt(j.toString(), 10)]] =\n (this.cOffsets[blocks[parseInt(j.toString(), 10)] - 1] | 0) + (isVisible(cols[parseInt(j.toString(), 10)]) ?\n parseInt(cols[parseInt(j.toString(), 10)].width, 10) : 0);\n }\n };\n VirtualRowModelGenerator.prototype.updateGroupRow = function (current, block) {\n var currentFirst = current[0];\n var rows = [];\n var keys = Object.keys(this.cache);\n for (var i = 0; i < keys.length; i++) {\n if (Number(keys[parseInt(i.toString(), 10)]) < block) {\n rows = rows.concat(this.cache[keys[parseInt(i.toString(), 10)]]);\n }\n }\n if ((currentFirst && currentFirst.isDataRow) || block % 2 === 0) {\n return current;\n }\n return this.iterateGroup(current, rows);\n };\n VirtualRowModelGenerator.prototype.iterateGroup = function (current, rows) {\n var currentFirst = current[0];\n var offset = 0;\n if (currentFirst && currentFirst.isDataRow) {\n return current;\n }\n var isPresent = current.some(function (row) {\n return rows.some(function (oRow, index) {\n var res = oRow && oRow.data.field !== undefined\n && oRow.data.field === row.data.field &&\n oRow.data.key === row.data.key;\n if (res) {\n offset = index;\n }\n return res;\n });\n });\n if (isPresent) {\n current.shift();\n current = this.iterateGroup(current, rows.slice(offset));\n }\n return current;\n };\n VirtualRowModelGenerator.prototype.getRows = function () {\n var rows = [];\n var keys = Object.keys(this.cache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.cache[keys[parseInt(i.toString(), 10)]]);\n }\n return rows;\n };\n VirtualRowModelGenerator.prototype.generateCells = function (foreignKeyData) {\n var cells = [];\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n cells.push(this.rowModelGenerator.generateCell(cols[parseInt(i.toString(), 10)], null, null, null, null, foreignKeyData));\n }\n return cells;\n };\n VirtualRowModelGenerator.prototype.getGroupVirtualRecordsByIndex = function (rows) {\n var blocks = this.parent.contentModule.getGroupedTotalBlocks();\n var blockSize = this.parent.contentModule.getBlockSize();\n for (var i = 1; i <= blocks; i++) {\n var count = 0;\n this.cache[parseInt(i.toString(), 10)] = [];\n for (var j = ((i - 1) * blockSize); j < rows.length; j++) {\n if (count === blockSize) {\n break;\n }\n this.cache[parseInt(i.toString(), 10)].push(rows[parseInt(j.toString(), 10)]);\n if (rows[parseInt(j.toString(), 10)].isDataRow) {\n count++;\n }\n }\n }\n };\n return VirtualRowModelGenerator;\n}());\nexport { VirtualRowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { remove, createElement, closest, formatUnit, Browser, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { dataReady, modelChanged, refreshVirtualBlock, contentReady } from '../base/constant';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { ContentRender } from './content-renderer';\nimport { HeaderRender } from './header-renderer';\nimport { InterSectionObserver } from '../services/intersection-observer';\nimport { VirtualRowModelGenerator } from '../services/virtual-row-model-generator';\nimport { isGroupAdaptive, ensureLastRow, ensureFirstRow, getEditedDataIndex, getTransformValues } from '../base/util';\nimport { setStyleAttribute } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * VirtualContentRenderer\n *\n * @hidden\n */\nvar VirtualContentRenderer = /** @class */ (function (_super) {\n __extends(VirtualContentRenderer, _super);\n function VirtualContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.prevHeight = 0;\n /** @hidden */\n _this.startIndex = 0;\n _this.preStartIndex = 0;\n _this.preventEvent = false;\n _this.actions = ['filtering', 'searching', 'grouping', 'ungrouping'];\n /** @hidden */\n _this.offsets = {};\n _this.tmpOffsets = {};\n /** @hidden */\n _this.virtualEle = new VirtualElementHandler();\n _this.offsetKeys = [];\n _this.isFocused = false;\n _this.isSelection = false;\n _this.isBottom = false;\n _this.diff = 0;\n _this.heightChange = false;\n /** @hidden */\n _this.isTop = false;\n _this.empty = undefined;\n _this.isCancel = false;\n _this.requestTypes = ['beginEdit', 'cancel', 'delete', 'add', 'save', 'sorting'];\n _this.isNormaledit = _this.parent.editSettings.mode === 'Normal';\n /** @hidden */\n _this.virtualData = {};\n _this.virtualInfiniteData = {};\n _this.emptyRowData = {};\n _this.isContextMenuOpen = false;\n _this.isSelectionScroll = false;\n _this.validationCheck = false;\n _this.locator = locator;\n _this.eventListener('on');\n _this.widthServices = locator.getService('widthService');\n _this.parent.on(events.columnVisibilityChanged, _this.setVisible, _this);\n _this.vgenerator = _this.generator;\n return _this;\n }\n VirtualContentRenderer.prototype.renderTable = function () {\n this.header = this.locator.getService('rendererFactory').getRenderer(RenderType.Header);\n _super.prototype.renderTable.call(this);\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualEle.renderWrapper(this.parent.height);\n this.virtualEle.renderPlaceHolder();\n if (!(!this.parent.enableVirtualization && this.parent.enableColumnVirtualization)) {\n this.virtualEle.wrapper.style.position = 'absolute';\n }\n var debounceEvent = (this.parent.dataSource instanceof DataManager && !this.parent.dataSource.dataSource.offline);\n var opt = {\n container: this.content, pageHeight: this.getBlockHeight() * 2, debounceEvent: debounceEvent,\n axes: this.parent.enableColumnVirtualization ? ['X', 'Y'] : ['Y']\n };\n this.observer = new InterSectionObserver(this.virtualEle.wrapper, opt);\n };\n VirtualContentRenderer.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n this.virtualEle.adjustTable(0, 0);\n };\n VirtualContentRenderer.prototype.getReorderedFrozenRows = function (args) {\n var blockIndex = args.virtualInfo.blockIndexes;\n var colsIndex = args.virtualInfo.columnIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n args.virtualInfo.page = 1;\n if (!args.renderMovableContent) {\n args.virtualInfo.columnIndexes = [];\n }\n var recordslength = this.parent.getCurrentViewRecords().length;\n var firstRecords = this.parent.renderModule.data.dataManager.dataSource.json.slice(0, recordslength);\n var virtualRows = this.vgenerator.generateRows(firstRecords, args);\n args.virtualInfo.blockIndexes = blockIndex;\n args.virtualInfo.columnIndexes = colsIndex;\n args.virtualInfo.page = page;\n return virtualRows.splice(0, this.parent.frozenRows);\n };\n VirtualContentRenderer.prototype.scrollListener = function (scrollArgs) {\n if (!this.parent.enableVirtualization && this.parent.enableColumnVirtualization && (scrollArgs.direction === 'up' || scrollArgs.direction === 'down')) {\n return;\n }\n this.scrollAfterEdit();\n if (this.parent.enablePersistence) {\n this.parent.scrollPosition = scrollArgs.offset;\n }\n if (this.preventEvent || this.parent.isDestroyed) {\n this.preventEvent = false;\n return;\n }\n if (this.parent.islazyloadRequest && scrollArgs.direction === 'down') {\n this.parent.removeMaskRow();\n this.parent.islazyloadRequest = false;\n return;\n }\n if (isNullOrUndefined(document.activeElement)) {\n this.isFocused = false;\n }\n else {\n this.isFocused = this.content === closest(document.activeElement, '.' + literals.content) || this.content === document.activeElement;\n }\n var info = scrollArgs.sentinel;\n var viewInfo = this.currentInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset);\n if (isGroupAdaptive(this.parent)) {\n if (viewInfo.blockIndexes && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString()) {\n this.parent.removeMaskRow();\n return;\n }\n else {\n viewInfo.event = 'refresh-virtual-block';\n if (!isNullOrUndefined(viewInfo.offsets)) {\n viewInfo.offsets.top = this.content.scrollTop;\n }\n this.parent.pageSettings.currentPage = viewInfo.page;\n if (this.parent.enableVirtualMaskRow) {\n this.parent.showMaskRow(info.axis);\n this.parent.addShimmerEffect();\n }\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.closeEdit();\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n return;\n }\n }\n if (this.prevInfo && ((info.axis === 'Y' && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString())\n || (info.axis === 'X' && this.prevInfo.columnIndexes.toString() === viewInfo.columnIndexes.toString()))) {\n this.parent.removeMaskRow();\n if (Browser.isIE) {\n this.parent.hideSpinner();\n }\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n if (info.axis === 'Y') {\n this.restoreEdit();\n }\n if (this.parent.groupSettings.enableLazyLoading && this.prevInfo.blockIndexes[0] === 1 && viewInfo.blockIndexes[0] === 1 &&\n scrollArgs.direction === 'up') {\n this.virtualEle.adjustTable(0, viewInfo.offsets.top < this.offsets[1] ? 0 : this.getBlockHeight());\n }\n return;\n }\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n if (!(!this.parent.enableVirtualization && this.parent.enableColumnVirtualization)) {\n this.parent.pageSettings.currentPage = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n }\n this.requestType = 'virtualscroll';\n if (this.parent.enableVirtualMaskRow) {\n this.parent.showMaskRow(info.axis);\n this.parent.addShimmerEffect();\n }\n this.parent.islazyloadRequest = false;\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.closeEdit();\n }\n this.parent.notify(viewInfo.event, {\n requestType: 'virtualscroll', virtualInfo: viewInfo,\n focusElement: scrollArgs.focusElement\n });\n if (this.parent.enableColumnVirtualization && !this.parent.getContentTable().querySelector('tr.e-row')) {\n this.parent.removeMaskRow();\n this.appendContent(undefined, undefined, {\n requestType: 'virtualscroll', virtualInfo: viewInfo,\n focusElement: scrollArgs.focusElement\n });\n this.prevInfo = viewInfo;\n }\n };\n VirtualContentRenderer.prototype.block = function (blk) {\n return this.vgenerator.isBlockAvailable(blk);\n };\n VirtualContentRenderer.prototype.getInfoFromView = function (direction, info, e) {\n var isBlockAdded = false;\n var tempBlocks = [];\n var infoType = { direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.preStartIndex, endIndex: this.preEndIndex };\n infoType.page = this.getPageFromTop(e.top, infoType);\n infoType.blockIndexes = tempBlocks = this.vgenerator.getBlockIndexes(infoType.page);\n infoType.loadSelf = !this.vgenerator.isBlockAvailable(tempBlocks[infoType.block]);\n var blocks = this.ensureBlocks(infoType);\n if (this.activeKey === 'upArrow' && infoType.blockIndexes.toString() !== blocks.toString()) {\n // To avoid dupilcate row index problem in key focus support\n var newBlock = blocks[blocks.length - 1];\n if (infoType.blockIndexes.indexOf(newBlock) === -1) {\n isBlockAdded = true;\n }\n }\n if (!(!this.parent.enableVirtualization && this.parent.enableColumnVirtualization)) {\n infoType.blockIndexes = blocks;\n }\n infoType.loadNext = !blocks.filter(function (val) { return tempBlocks.indexOf(val) === -1; })\n .every(this.block.bind(this));\n infoType.event = (infoType.loadNext || infoType.loadSelf) ? modelChanged : refreshVirtualBlock;\n infoType.nextInfo = infoType.loadNext ? { page: Math.max(1, infoType.page + (direction === 'down' ? 1 : -1)) } : {};\n if (isBlockAdded) {\n infoType.blockIndexes = [infoType.blockIndexes[0] - 1, infoType.blockIndexes[0], infoType.blockIndexes[0] + 1];\n }\n if (this.activeKey === 'downArrow' && !isNaN(this.rowIndex)) {\n var firstBlock = Math.ceil(this.rowIndex / this.getBlockSize());\n if (firstBlock !== 1 && (infoType.blockIndexes[1] !== firstBlock || infoType.blockIndexes.length < 3)) {\n infoType.blockIndexes = [firstBlock - 1, firstBlock, firstBlock + 1];\n }\n }\n infoType.columnIndexes = info.axis === 'X' ? this.vgenerator.getColumnIndexes() : this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && info.axis === 'X') {\n infoType.event = refreshVirtualBlock;\n }\n return infoType;\n };\n VirtualContentRenderer.prototype.ensureBlocks = function (info) {\n var _this = this;\n var index = info.blockIndexes[info.block];\n var mIdx;\n var old = index;\n var max = Math.max;\n var indexes = info.direction === 'down' ? [max(index, 1), ++index, ++index] : [max(index - 1, 1), index, index + 1];\n this.prevInfo = this.prevInfo || this.vgenerator.getData();\n indexes = indexes.filter(function (val, ind) { return indexes.indexOf(val) === ind; });\n if (this.prevInfo.blockIndexes.toString() === indexes.toString()) {\n return indexes;\n }\n if (info.loadSelf || (info.direction === 'down' && this.isEndBlock(old))) {\n indexes = this.vgenerator.getBlockIndexes(info.page);\n }\n indexes.some(function (val, ind) {\n var result = val === (isGroupAdaptive(_this.parent) ? _this.getGroupedTotalBlocks() : _this.getTotalBlocks());\n if (result) {\n mIdx = ind;\n }\n return result;\n });\n if (mIdx !== undefined) {\n indexes = indexes.slice(0, mIdx + 1);\n if (info.block === 0 && indexes.length === 1 && this.vgenerator.isBlockAvailable(indexes[0] - 1)) {\n indexes = [indexes[0] - 1, indexes[0]];\n }\n }\n return indexes;\n };\n // tslint:disable-next-line:max-func-body-length\n VirtualContentRenderer.prototype.appendContent = function (target, newChild, e) {\n var _this = this;\n // currentInfo value will be used if there are multiple dom updates happened due to mousewheel\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' && this.currentInfo.page &&\n this.currentInfo.page !== e.virtualInfo.page ? this.currentInfo : e.virtualInfo;\n this.prevInfo = this.prevInfo || e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n var cOffset = this.getColumnOffset(cBlock);\n var width;\n var blocks = info.blockIndexes;\n if (this.parent.groupSettings.columns.length) {\n this.refreshOffsets();\n }\n if (this.parent.height === '100%') {\n this.parent.element.style.height = '100%';\n }\n var vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.content.getBoundingClientRect().height :\n this.parent.element.getBoundingClientRect().height;\n if (!this.parent.enableVirtualization && this.parent.enableColumnVirtualization) {\n vHeight = 0;\n }\n var reduceWidth = 0;\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n var frzLeftWidth_1 = 0;\n this.parent.getColumns().filter(function (col) {\n if (col.visible) {\n reduceWidth += parseInt(col.width.toString(), 10);\n if (col.freeze === 'Left') {\n frzLeftWidth_1 += parseInt(col.width.toString(), 10);\n }\n }\n });\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n if (cBlock > this.parent.getVisibleFrozenLeftCount()) {\n cOffset = cOffset - frzLeftWidth_1;\n }\n this.resetStickyLeftPos(cOffset, newChild);\n }\n if (!this.requestTypes.some(function (value) { return value === _this.requestType; })) {\n var translate = this.getTranslateY(this.content.scrollTop, vHeight, info);\n if (this.parent.groupSettings.enableLazyLoading && info && this.prevInfo && this.prevInfo.blockIndexes[0] === 1 &&\n info.blockIndexes[0] === 1 && info.direction === 'up') {\n this.virtualEle.adjustTable(0, this.content.scrollTop < this.offsets[1] ? 0 : this.getBlockHeight());\n }\n else {\n this.virtualEle.adjustTable(cOffset, translate);\n }\n }\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(cOffset, 0);\n }\n if (this.parent.enableColumnVirtualization) {\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n if (this.parent.isFrozenGrid()) {\n width = reduceWidth.toString();\n if (this.parent.allowResizing) {\n this.parent.getHeaderTable().style.width = reduceWidth + 'px';\n this.parent.getContentTable().style.width = reduceWidth + 'Px';\n }\n }\n this.header.virtualEle.setWrapperWidth(width);\n }\n this.virtualEle.setWrapperWidth(width, Browser.isIE || Browser.info.name === 'edge');\n if (this.parent.enableColumnVirtualization && isNullOrUndefined(target) && isNullOrUndefined(newChild)) {\n return;\n }\n if (!isNullOrUndefined(target) && !isNullOrUndefined(target.parentNode)) {\n remove(target);\n }\n var tbody = this.parent.element.querySelector('.' + literals.content).querySelector(literals.tbody);\n if (tbody) {\n remove(tbody);\n target = null;\n }\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (!isReact) {\n target = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n target.appendChild(newChild);\n }\n else {\n target = newChild;\n }\n if (this.parent.frozenRows && e.requestType === 'virtualscroll' && (this.parent.pageSettings.currentPage === 1\n || this.isInfiniteColumnvirtualization())) {\n for (var i = 0; i < this.parent.frozenRows; i++) {\n target.children[0].remove();\n }\n }\n this.getTable().appendChild(target);\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n if (!this.parent.enableVirtualization && this.parent.enableColumnVirtualization && (info.direction === 'right' || info.direction === 'left')) {\n this.content.scrollTop = this.currentInfo.offsets.top;\n this.content.scrollLeft = this.currentInfo.offsets.left;\n }\n if (this.parent.groupSettings.columns.length) {\n if (!isGroupAdaptive(this.parent) && info.direction === 'up') {\n var blk = this.offsets[this.getTotalBlocks()] - this.prevHeight;\n var sTop = this.content.scrollTop;\n this.content.scrollTop = sTop + blk;\n }\n this.setVirtualHeight();\n if (!this.parent.groupSettings.enableLazyLoading) {\n this.observer.setPageHeight(this.getOffset(blocks[blocks.length - 1]) - this.getOffset(blocks[0] - 1));\n }\n }\n if (e.requestType === 'ungrouping' && !this.parent.groupSettings.enableLazyLoading &&\n this.parent.groupSettings.columns.length === 0) {\n this.observer.setPageHeight(this.getBlockHeight() * 2);\n }\n this.prevInfo = info;\n if (this.isFocused && this.activeKey !== 'downArrow' && this.activeKey !== 'upArrow') {\n this.content.focus();\n }\n var lastPage = Math.ceil(this.getTotalBlocks() / 2);\n if (this.isBottom) {\n this.isBottom = false;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 1];\n }\n if ((this.parent.pageSettings.currentPage + 1 === lastPage || this.parent.pageSettings.currentPage === lastPage) &&\n blocks.length === 2 && e.requestType === 'delete') {\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 1];\n }\n if ((this.parent.pageSettings.currentPage === lastPage) && blocks.length === 1) {\n this.isBottom = true;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 2];\n }\n if (this.isTop) {\n this.parent.getContent().firstElementChild.scrollTop = 0;\n this.isTop = false;\n }\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(events.autoCol, {});\n }\n this.focusCell(e);\n this.restoreEdit(e);\n this.restoreAdd();\n this.ensureSelectedRowPosition();\n this.validationScrollLeft();\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n this.widthServices.refreshFrozenScrollbar();\n }\n if (!this.initialRowTop) {\n var gridTop = this.parent.element.getBoundingClientRect().top;\n if (this.parent.getRowByIndex(0)) {\n this.initialRowTop = this.parent.getRowByIndex(0).getBoundingClientRect().top - gridTop;\n }\n }\n };\n VirtualContentRenderer.prototype.validationScrollLeft = function () {\n if (this.validationCheck) {\n if (this.validationCol) {\n var offset = this.vgenerator.cOffsets[(this.validationCol.index - this.parent.getVisibleFrozenColumns()) - 1];\n this.validationCol = null;\n this.content.scrollLeft = offset;\n }\n else {\n this.validationCheck = false;\n this.parent.editModule.editFormValidate();\n }\n }\n };\n VirtualContentRenderer.prototype.ensureSelectedRowPosition = function () {\n if (!this.isSelection && this.isSelectionScroll && !isNullOrUndefined(this.selectRowIndex)) {\n this.isSelectionScroll = false;\n var row = this.parent.getRowByIndex(this.selectRowIndex);\n if (row && !this.isRowInView(row)) {\n this.rowSelected({ rowIndex: this.selectRowIndex, row: row }, true);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.focusCell = function (e) {\n if (this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n return;\n }\n var row = this.parent.getRowByIndex(this.rowIndex);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = row.cells[this.cellIndex];\n cell.focus({ preventScroll: true });\n if (!this.parent.selectionSettings.checkboxOnly) {\n this.parent.selectRow(parseInt(row.getAttribute(literals.dataRowIndex), 10));\n }\n this.activeKey = this.empty;\n };\n VirtualContentRenderer.prototype.restoreEdit = function (e) {\n if (this.isNormaledit) {\n if (this.parent.editSettings.allowEditing\n && this.parent.editModule && !isNullOrUndefined(this.editedRowIndex)) {\n var row = this.getRowByIndex(this.editedRowIndex);\n var content = this.content;\n var keys = Object.keys(this.virtualData);\n var isXaxis = e && e.virtualInfo && e.virtualInfo.sentinelInfo.axis === 'X';\n if (keys.length && row && !content.querySelector('.' + literals.editedRow) &&\n ['sorting', 'filtering', 'grouping', 'refresh', 'searching', 'ungrouping', 'reorder'].indexOf(e.requestType) === -1) {\n var top_1 = row.getBoundingClientRect().top;\n if (isXaxis || (top_1 < this.content.offsetHeight && top_1 > this.parent.getRowHeight())) {\n this.parent.isEdit = false;\n this.parent.editModule.startEdit(row);\n }\n }\n if (row && this.content.querySelector('.' + literals.editedRow) && !keys.length) {\n var rowData = (!this.parent.enableVirtualization && this.parent.enableColumnVirtualization) ?\n this.enableCacheOnInfiniteColumnVirtual() ? this.virtualInfiniteData :\n extend({}, this.parent.getCurrentViewRecords()[this.editedRowIndex]) :\n extend({}, this.getRowObjectByIndex(this.editedRowIndex));\n this.virtualData = this.getVirtualEditedData(rowData);\n }\n }\n this.restoreAdd();\n }\n };\n VirtualContentRenderer.prototype.getVirtualEditedData = function (rowData) {\n var editForms = [].slice.call(this.parent.element.getElementsByClassName('e-gridform'));\n var isFormDestroyed = this.parent.editModule && this.parent.editModule.formObj\n && this.parent.editModule.formObj.isDestroyed;\n if (!isFormDestroyed) {\n for (var i = 0; i < editForms.length; i++) {\n rowData = this.parent.editModule.getCurrentEditedData(editForms[parseInt(i.toString(), 10)], rowData);\n }\n }\n return rowData;\n };\n VirtualContentRenderer.prototype.restoreAdd = function () {\n var startAdd = !this.parent.element.querySelector('.' + literals.addedRow);\n if (this.isNormaledit && this.isAdd && startAdd) {\n var isTop = this.parent.editSettings.newRowPosition === 'Top' && this.content.scrollTop < this.parent.getRowHeight();\n var isBottom = this.parent.editSettings.newRowPosition === 'Bottom'\n && this.parent.pageSettings.currentPage === this.maxPage;\n if (isTop || isBottom) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n }\n };\n VirtualContentRenderer.prototype.onDataReady = function (e) {\n if (!isNullOrUndefined(e.count)) {\n this.count = e.count;\n this.maxPage = Math.ceil(e.count / this.parent.pageSettings.pageSize);\n }\n this.vgenerator.checkAndResetCache(e.requestType);\n if (['refresh', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', undefined]\n .some(function (value) { return e.requestType === value; })) {\n this.refreshOffsets();\n }\n this.setVirtualHeight();\n this.resetScrollPosition(e.requestType);\n };\n /**\n * @param {number} height - specifies the height\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.setVirtualHeight = function (height) {\n var width = this.parent.enableColumnVirtualization ?\n this.getColumnOffset(this.parent.columns.length + this.parent.groupSettings.columns.length - 1) + 'px' : '100%';\n var virtualHeight = (this.offsets[isGroupAdaptive(this.parent) && this.count !== 0 ? this.getGroupedTotalBlocks() :\n this.getTotalBlocks()]);\n if (!this.parent.enableVirtualization && this.parent.enableColumnVirtualization) {\n virtualHeight = 0;\n }\n var lastPage = Math.ceil(this.getTotalBlocks() / 2);\n var placeHolderBottom = Math.round(this.virtualEle.placeholder.getBoundingClientRect().bottom);\n var wrapperBottom = Math.round(this.virtualEle.wrapper.getBoundingClientRect().bottom);\n if ((this.currentInfo.page === lastPage || this.currentInfo.page + 1 === lastPage) && this.currentInfo.direction === 'down' &&\n placeHolderBottom > wrapperBottom && !this.diff) {\n this.diff = placeHolderBottom - wrapperBottom;\n }\n if (this.diff && (this.currentInfo.page === lastPage) && placeHolderBottom > wrapperBottom) {\n virtualHeight -= this.diff;\n this.heightChange = true;\n }\n else if (this.diff && this.heightChange && this.requestType === 'virtualscroll') {\n virtualHeight -= this.diff;\n this.heightChange = false;\n }\n this.virtualEle.setVirtualHeight(virtualHeight, width);\n if (this.virtualEle && this.virtualEle.wrapper) {\n if (!this.parent.enableVirtualization && this.parent.enableColumnVirtualization) {\n this.virtualEle.wrapper.style.minHeight = '';\n }\n else {\n this.virtualEle.wrapper.style.minHeight = !isNullOrUndefined(virtualHeight) ? formatUnit(this.parent.height) : '0px';\n }\n }\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.setVirtualHeight(1, width);\n }\n };\n VirtualContentRenderer.prototype.getPageFromTop = function (sTop, info) {\n var _this = this;\n var total = (isGroupAdaptive(this.parent)) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n var page = 0;\n this.offsetKeys.some(function (offset) {\n var iOffset = Number(offset);\n var border = sTop <= _this.offsets[\"\" + offset] || (iOffset === total && sTop > _this.offsets[\"\" + offset]);\n if (border) {\n if (_this.offsetKeys.length % 2 !== 0 && iOffset.toString() === _this.offsetKeys[_this.offsetKeys.length - 2]\n && sTop <= _this.offsets[_this.offsetKeys.length - 1]) {\n iOffset = iOffset + 1;\n }\n info.block = iOffset % 2 === 0 ? 1 : 0;\n page = Math.max(1, Math.min(_this.vgenerator.getPage(iOffset), _this.maxPage));\n }\n return border;\n });\n return page;\n };\n VirtualContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if (info === undefined) {\n info = { page: this.getPageFromTop(sTop, {}) };\n info.blockIndexes = this.vgenerator.getBlockIndexes(info.page);\n }\n var block = (info.blockIndexes[0] || 1) - 1;\n var translate = this.getOffset(block);\n var endTranslate = this.getOffset(info.blockIndexes[info.blockIndexes.length - 1]);\n if (isOnenter) {\n info = this.prevInfo;\n }\n var result = translate > sTop ?\n this.getOffset(block - 1) : endTranslate < (sTop + cHeight) ? this.getOffset(block + 1) : translate;\n var blockHeight = this.offsets[info.blockIndexes[info.blockIndexes.length - 1]] -\n this.tmpOffsets[info.blockIndexes[0]];\n var totalBlocks = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n if (result + blockHeight > this.offsets[parseInt(totalBlocks.toString(), 10)]) {\n result -= (result + blockHeight) - this.offsets[parseInt(totalBlocks.toString(), 10)];\n }\n if (!this.parent.enableVirtualization && this.parent.enableColumnVirtualization) {\n result = 0;\n }\n return result;\n };\n VirtualContentRenderer.prototype.getOffset = function (block) {\n return Math.min(this.offsets[parseInt(block.toString(), 10)] | 0, this.offsets[this.maxBlock] | 0);\n };\n VirtualContentRenderer.prototype.onEntered = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n if ((direction === 'down' || direction === 'up') && !_this.parent.enableVirtualization && _this.parent.enableColumnVirtualization) {\n return;\n }\n if (Browser.isIE && !isWheel && check && !_this.preventEvent && !_this.parent.enableVirtualMaskRow) {\n _this.parent.showSpinner();\n }\n _this.prevInfo = _this.prevInfo || _this.vgenerator.getData();\n if (_this.parent.enableVirtualMaskRow && !_this.preventEvent) {\n var firstOffSetKey = parseInt(_this.offsetKeys[0], 10);\n var lastOffSetKey = parseInt(_this.offsetKeys[_this.offsetKeys.length - 1], 10);\n var blockIndex = _this.currentInfo.blockIndexes;\n var viewInfo = _this.getInfoFromView(direction, current, e);\n var disableShowMaskRow = _this.prevInfo && current.axis === 'X'\n && _this.prevInfo.columnIndexes.toString() === viewInfo.columnIndexes.toString();\n if (!((blockIndex && blockIndex[0] === firstOffSetKey && direction === 'up') ||\n (blockIndex && blockIndex[blockIndex.length - 1] === lastOffSetKey && direction === 'down') || disableShowMaskRow)) {\n setTimeout(function () {\n _this.parent.showMaskRow(current.axis);\n }, 0);\n }\n }\n var xAxis = current.axis === 'X';\n var top = _this.prevInfo.offsets ? _this.prevInfo.offsets.top : null;\n var height = _this.content.getBoundingClientRect().height;\n var x = _this.getColumnOffset(xAxis ? _this.vgenerator.getColumnIndexes()[0] - 1 : _this.prevInfo.columnIndexes[0] - 1);\n if (xAxis) {\n var idx = Object.keys(_this.vgenerator.cOffsets).length - _this.prevInfo.columnIndexes.length;\n var maxLeft = _this.vgenerator.cOffsets[idx - 1];\n x = x > maxLeft ? maxLeft : x; //TODO: This fix horizontal scrollbar jumping issue in column virtualization.\n }\n if (!_this.parent.enableVirtualization && _this.parent.enableColumnVirtualization) {\n _this.virtualEle.adjustTable(x, 0);\n }\n else {\n var y = _this.getTranslateY(e.top, height, xAxis && top === e.top ? _this.prevInfo : undefined, true);\n _this.virtualEle.adjustTable(x, Math.min(y, _this.offsets[_this.maxBlock]));\n }\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(x, 0);\n if (_this.parent.isFrozenGrid()) {\n _this.resetStickyLeftPos(x);\n }\n }\n };\n };\n VirtualContentRenderer.prototype.dataBound = function () {\n this.parent.notify(events.refreshVirtualFrozenHeight, {});\n if (this.isSelection && this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n this.parent.selectRow(this.selectedRowIndex);\n }\n else {\n this.activeKey = this.empty;\n }\n };\n /**\n * To calculate the position of frozen cells\n *\n * @param {number} valueX - specifies the transform X value\n * @param {DocumentFragment | HTMLElement} newChild - specifies the element to transform\n * @returns {void}\n * @hidden\n */\n VirtualContentRenderer.prototype.resetStickyLeftPos = function (valueX, newChild) {\n var cells = [].slice.call(this.parent.getHeaderContent().querySelectorAll('.e-leftfreeze,.e-rightfreeze,.e-fixedfreeze')).concat([].slice.call((newChild ? newChild : this.parent.getContent()).querySelectorAll('.e-leftfreeze,.e-rightfreeze,.e-fixedfreeze')));\n var frzLeftWidth = 0;\n var frzRightWidth = 0;\n if (this.parent.getHeaderContent().querySelectorAll('.e-fixedfreeze').length) {\n frzLeftWidth = this.parent.leftrightColumnWidth('left');\n frzRightWidth = this.parent.leftrightColumnWidth('right');\n }\n if (cells.length) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[parseInt(i.toString(), 10)];\n var col = void 0;\n if (cell.classList.contains('e-rowcell')) {\n if (isNullOrUndefined(cell.getAttribute('data-colindex')) && cell.querySelector('[e-mappinguid]')) {\n var uid = cell.querySelector('[e-mappinguid]').getAttribute('e-mappinguid');\n col = this.parent.getColumnByUid(uid);\n }\n else {\n var idx = parseInt(cell.getAttribute('data-colindex'), 10);\n col = this.parent.getColumnByIndex(parseInt(idx.toString(), 10));\n }\n }\n else {\n if (cell.classList.contains('e-headercell') || cell.classList.contains('e-filterbarcell')) {\n var uid = cell.classList.contains('e-filterbarcell') ? cell.getAttribute('e-mappinguid') :\n cell.querySelector('[e-mappinguid]').getAttribute('e-mappinguid');\n col = this.parent.getColumnByUid(uid);\n }\n }\n if (col.freeze === 'Left') {\n cell.style.left = (col.valueX - valueX) + 'px';\n }\n else if (col.freeze === 'Right') {\n cell.style.right = (col.valueX + valueX) + 'px';\n }\n else if (col.freeze === 'Fixed') {\n cell.style.left = (frzLeftWidth - valueX) + 'px';\n cell.style.right = (frzRightWidth + valueX) + 'px';\n }\n }\n }\n this.parent.translateX = valueX;\n };\n VirtualContentRenderer.prototype.rowSelected = function (args, isSelection) {\n if ((this.isSelection || isSelection) && !this.isLastBlockRow(args.rowIndex)) {\n var transform = getTransformValues(this.content.firstElementChild);\n var gridTop = this.parent.element.getBoundingClientRect().top;\n var rowTop = args.row.getBoundingClientRect().top - gridTop;\n var height = this.content.getBoundingClientRect().height;\n var isBottom = height < rowTop;\n var remainHeight = isBottom ? rowTop - height : this.initialRowTop - rowTop;\n var translateY = isBottom ? transform.height - remainHeight : transform.height + remainHeight;\n this.virtualEle.adjustTable(transform.width, translateY);\n var lastRowTop = this.content.querySelector('tbody').lastElementChild.getBoundingClientRect().top - gridTop;\n if (lastRowTop < height) {\n translateY = translateY + (height - (args.row.getBoundingClientRect().top - gridTop));\n this.virtualEle.adjustTable(transform.width, translateY - (this.parent.getRowHeight() / 2));\n }\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n this.resetStickyLeftPos(transform.width);\n }\n }\n this.isSelection = false;\n };\n VirtualContentRenderer.prototype.isLastBlockRow = function (index) {\n var scrollEle = this.parent.getContent().firstElementChild;\n var visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n var startIdx = (this.maxPage * this.parent.pageSettings.pageSize) - visibleRowCount;\n return index >= startIdx;\n };\n VirtualContentRenderer.prototype.refreshMaxPage = function () {\n if (this.parent.groupSettings.columns.length && this.parent.vcRows.length) {\n this.maxPage = Math.ceil(this.parent.vcRows.length / this.parent.pageSettings.pageSize);\n }\n };\n VirtualContentRenderer.prototype.setVirtualPageQuery = function (args) {\n var row = this.parent.getContent().querySelector('.e-row');\n if (row && this.parent.isManualRefresh && this.currentInfo.blockIndexes && this.currentInfo.blockIndexes.length === 3) {\n this.vgenerator.startIndex = parseInt(row.getAttribute('data-rowindex'), 10);\n this.vgenerator.currentInfo = extend({}, this.currentInfo);\n this.vgenerator.currentInfo.blockIndexes = this.currentInfo.blockIndexes.slice();\n var includePrevPage = this.vgenerator.includePrevPage = this.currentInfo.blockIndexes[0] % 2 === 0;\n if (includePrevPage) {\n this.vgenerator.startIndex = this.vgenerator.startIndex - this.getBlockSize();\n this.vgenerator.currentInfo.blockIndexes.unshift(this.currentInfo.blockIndexes[0] - 1);\n }\n else {\n this.vgenerator.currentInfo.blockIndexes.push(this.currentInfo.blockIndexes[this.currentInfo.blockIndexes.length - 1] + 1);\n }\n var skip = (this.vgenerator.currentInfo.blockIndexes[0] - 1) * this.getBlockSize();\n var take = this.vgenerator.currentInfo.blockIndexes.length * this.getBlockSize();\n args.query.skip(skip);\n args.query.take(take);\n args.skipPage = true;\n }\n };\n VirtualContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n this.parent[\"\" + action](dataReady, this.onDataReady, this);\n this.parent.addEventListener(events.dataBound, this.dataBound.bind(this));\n this.parent.addEventListener(events.actionBegin, this.actionBegin.bind(this));\n this.parent.addEventListener(events.actionComplete, this.actionComplete.bind(this));\n this.parent.addEventListener(events.rowSelected, this.rowSelected.bind(this));\n this.parent[\"\" + action](refreshVirtualBlock, this.refreshContentRows, this);\n this.parent[\"\" + action](events.refreshVirtualLazyLoadCache, this.refreshVirtualLazyLoadCache, this);\n this.parent[\"\" + action](events.selectVirtualRow, this.selectVirtualRow, this);\n this.parent[\"\" + action](events.virtaulCellFocus, this.virtualCellFocus, this);\n this.parent[\"\" + action](events.virtualScrollEditActionBegin, this.editActionBegin, this);\n this.parent[\"\" + action](events.virtualScrollAddActionBegin, this.addActionBegin, this);\n this.parent[\"\" + action](events.virtualScrollEdit, this.restoreEdit, this);\n this.parent[\"\" + action](events.virtualScrollEditSuccess, this.editSuccess, this);\n this.parent[\"\" + action](events.refreshVirtualCache, this.refreshCache, this);\n this.parent[\"\" + action](events.editReset, this.resetIsedit, this);\n this.parent[\"\" + action](events.getVirtualData, this.getVirtualData, this);\n this.parent[\"\" + action](events.virtualScrollEditCancel, this.editCancel, this);\n this.parent[\"\" + action](events.refreshVirtualMaxPage, this.refreshMaxPage, this);\n this.parent[\"\" + action](events.setVirtualPageQuery, this.setVirtualPageQuery, this);\n this.parent[\"\" + action](events.selectRowOnContextOpen, this.selectRowOnContextOpen, this);\n this.parent[\"\" + action](events.resetVirtualFocus, this.resetVirtualFocus, this);\n this.parent[\"\" + action](events.refreshVirtualEditFormCells, this.refreshCells, this);\n this.parent[\"\" + action](events.scrollToEdit, this.scrollToEdit, this);\n var event = this.actions;\n for (var i = 0; i < event.length; i++) {\n this.parent[\"\" + action](event[parseInt(i.toString(), 10)] + \"-begin\", this.onActionBegin, this);\n }\n var fn = function () {\n _this.observer.observe(function (scrollArgs) { return _this.scrollListener(scrollArgs); }, _this.onEntered());\n var gObj = _this.parent;\n if (gObj.enablePersistence && gObj.scrollPosition) {\n _this.content.scrollTop = gObj.scrollPosition.top;\n var scrollValues = { direction: 'down', sentinel: _this.observer.sentinelInfo.down,\n offset: gObj.scrollPosition, focusElement: gObj.element };\n _this.scrollListener(scrollValues);\n if (gObj.enableColumnVirtualization) {\n _this.content.scrollLeft = gObj.scrollPosition.left;\n }\n }\n _this.parent.off(contentReady, fn);\n };\n this.parent.on(contentReady, fn, this);\n };\n VirtualContentRenderer.prototype.refreshVirtualLazyLoadCache = function (e) {\n var blockIndex = this.currentInfo.blockIndexes;\n if (isNullOrUndefined(this.currentInfo.blockIndexes)) {\n blockIndex = [1, 2];\n }\n var block;\n var index;\n var cache;\n for (var i = 0; i < blockIndex.length; i++) {\n var rows = this.vgenerator.cache[blockIndex[parseInt(i.toString(), 10)]];\n for (var j = 0; j < rows.length; j++) {\n if (rows[parseInt(j.toString(), 10)].uid === e.uid) {\n block = blockIndex[parseInt(i.toString(), 10)];\n index = j;\n cache = rows;\n break;\n }\n }\n }\n if (e.count) {\n this.vgenerator.cache[parseInt(block.toString(), 10)].splice(index + 1, e.count);\n }\n else if (e.rows && e.rows.length) {\n this.vgenerator.cache[parseInt(block.toString(), 10)] = ([].slice.call(cache.slice(0, index + 1)).concat([].slice.call(e.rows))).concat([].slice.call(cache.slice(index + 1, cache.length)));\n }\n this.refreshOffsets();\n };\n VirtualContentRenderer.prototype.scrollToEdit = function (col) {\n var allowScroll = true;\n this.validationCheck = true;\n if (this.isAdd && this.content.scrollTop > 0) {\n allowScroll = false;\n var keys = Object.keys(this.offsets);\n this.content.scrollTop = this.parent.editSettings.newRowPosition === 'Top' ? 0 : this.offsets[keys.length - 1];\n }\n var row = this.parent.getRowByIndex(this.editedRowIndex);\n if (!row && !isNullOrUndefined(this.editedRowIndex)) {\n if (!row || !this.isRowInView(row)) {\n var rowIndex = this.parent.getRowHeight();\n var scrollTop = this.editedRowIndex * rowIndex;\n if (!isNullOrUndefined(scrollTop)) {\n allowScroll = false;\n this.content.scrollTop = scrollTop;\n }\n }\n }\n if (col && allowScroll) {\n var offset = this.vgenerator.cOffsets[(col.index - this.parent.getVisibleFrozenColumns()) - 1];\n if (!this.parent.enableColumnVirtualization) {\n var header = this.parent.getHeaderContent().querySelector('.e-headercelldiv[e-mappinguid=\"' + col.uid + '\"]');\n offset = header.parentElement.offsetLeft;\n }\n if (this.parent.enableColumnVirtualization && this.parent.getVisibleFrozenLeftCount()) {\n offset -= this.parent.leftrightColumnWidth('left');\n }\n this.content.scrollLeft = this.parent.enableRtl ? -Math.abs(offset) : offset;\n }\n if (col && !allowScroll) {\n this.validationCol = col;\n }\n };\n VirtualContentRenderer.prototype.refreshCells = function (rowObj) {\n rowObj.cells = this.vgenerator.generateCells(rowObj.foreignKeyData);\n };\n VirtualContentRenderer.prototype.resetVirtualFocus = function (e) {\n this.isCancel = e.isCancel;\n };\n /**\n * @param {Object} data - specifies the data\n * @param {Object} data.virtualData -specifies the data\n * @param {boolean} data.isAdd - specifies isAdd\n * @param {boolean} data.isCancel - specifies boolean in cancel\n * @param {boolean} data.isScroll - specifies boolean for scroll\n * @returns {void}\n * @hidden\n */\n VirtualContentRenderer.prototype.getVirtualData = function (data) {\n if (this.isNormaledit) {\n var error = this.parent.element.querySelector('.e-griderror:not([style*=\"display: none\"])');\n var keys = Object.keys(this.virtualData);\n data.isScroll = keys.length !== 0 && this.currentInfo.sentinelInfo && this.currentInfo.sentinelInfo.axis === 'X';\n if (error) {\n return;\n }\n this.virtualData = keys.length ? this.virtualData : data.virtualData;\n this.getVirtualEditedData(this.virtualData);\n data.virtualData = this.virtualData;\n data.isAdd = this.isAdd || this.parent.editSettings.showAddNewRow;\n data.isCancel = this.isCancel;\n }\n };\n VirtualContentRenderer.prototype.selectRowOnContextOpen = function (args) {\n this.isContextMenuOpen = args.isOpen;\n };\n VirtualContentRenderer.prototype.editCancel = function (args) {\n var dataIndex = getEditedDataIndex(this.parent, args.data);\n if (!isNullOrUndefined(dataIndex)) {\n args.data = this.parent.getCurrentViewRecords()[parseInt(dataIndex.toString(), 10)];\n }\n };\n VirtualContentRenderer.prototype.editSuccess = function (args) {\n if (this.isNormaledit) {\n if (!this.isAdd && args.data) {\n this.updateCurrentViewData(args.data);\n }\n this.isAdd = false;\n }\n };\n VirtualContentRenderer.prototype.updateCurrentViewData = function (data) {\n var dataIndex = getEditedDataIndex(this.parent, data);\n if (!isNullOrUndefined(dataIndex)) {\n this.parent.getCurrentViewRecords()[parseInt(dataIndex.toString(), 10)] = data;\n }\n };\n VirtualContentRenderer.prototype.actionBegin = function (args) {\n if (args.requestType !== 'virtualscroll') {\n this.requestType = args.requestType;\n }\n if (!args.cancel) {\n this.parent.notify(events.refreshVirtualFrozenRows, args);\n }\n };\n VirtualContentRenderer.prototype.virtualCellFocus = function (e) {\n // To decide the action (select or scroll), when using arrow keys for cell focus\n var ele = document.activeElement;\n if (!ele.classList.contains(literals.rowCell) && (ele instanceof HTMLInputElement\n || !isNullOrUndefined(ele.closest('.e-templatecell')))) {\n ele = ele.closest('.e-rowcell');\n }\n if (ele && ele.classList.contains(literals.rowCell)\n && e && (e.action === 'upArrow' || e.action === 'downArrow')) {\n var rowIndex = parseInt(ele.parentElement.getAttribute(literals.dataRowIndex), 10);\n if (e && (e.action === 'downArrow' || e.action === 'upArrow')) {\n var scrollEle = this.parent.getContent().firstElementChild;\n if (e.action === 'downArrow') {\n rowIndex += 1;\n }\n else {\n rowIndex -= 1;\n }\n this.rowIndex = rowIndex;\n this.cellIndex = parseInt(ele.getAttribute(literals.dataColIndex), 10);\n var row = this.parent.getRowByIndex(rowIndex);\n var page = this.parent.pageSettings.currentPage;\n var visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n var emptyRow = false;\n if (isNullOrUndefined(row)) {\n emptyRow = true;\n if ((e.action === 'downArrow' && page === this.maxPage - 1) || (e.action === 'upArrow' && page === 1)) {\n emptyRow = false;\n }\n }\n if (emptyRow || (ensureLastRow(row, this.parent) && e.action === 'downArrow')\n || (ensureFirstRow(row, this.parent.getRowHeight() * 2) && e.action === 'upArrow')) {\n this.activeKey = e.action;\n scrollEle.scrollTop = e.action === 'downArrow' ?\n (rowIndex - visibleRowCount) * this.parent.getRowHeight() : rowIndex * this.parent.getRowHeight();\n }\n else {\n this.activeKey = this.empty;\n }\n if (!this.parent.selectionSettings.checkboxOnly) {\n this.parent.selectRow(rowIndex);\n }\n }\n }\n };\n VirtualContentRenderer.prototype.editActionBegin = function (e) {\n this.editedRowIndex = e.index;\n var rowData = (!this.parent.enableVirtualization && this.parent.enableColumnVirtualization) ?\n extend({}, this.parent.getCurrentViewRecords()[e.index]) : extend({}, this.getRowObjectByIndex(e.index));\n var keys = Object.keys(this.virtualData);\n e.data = keys.length && !this.parent.editSettings.showAddNewRow ? this.virtualData : this.isInfiniteColumnvirtualization() ?\n e.data : rowData;\n if (this.enableCacheOnInfiniteColumnVirtual()) {\n this.virtualInfiniteData = e.data;\n }\n e.isScroll = keys.length !== 0 && this.currentInfo.sentinelInfo && this.currentInfo.sentinelInfo.axis === 'X';\n };\n VirtualContentRenderer.prototype.getEditedRowObject = function () {\n var rowObjects = this.parent.vcRows;\n var editedrow;\n for (var i = 0; i < rowObjects.length; i++) {\n if (rowObjects[parseInt(i.toString(), 10)].index === this.editedRowIndex) {\n editedrow = rowObjects[parseInt(i.toString(), 10)];\n }\n }\n return editedrow;\n };\n VirtualContentRenderer.prototype.refreshCache = function (args) {\n if (this.isInfiniteColumnvirtualization()) {\n return;\n }\n var block = Math.ceil((this.editedRowIndex + 1) / this.getBlockSize());\n if (this.parent.allowPaging && this.parent.enableColumnVirtualization) {\n block = Math.ceil((this.editedRowIndex + 1 + ((this.parent.pageSettings.currentPage - 1) *\n this.parent.pageSettings.pageSize)) / this.getBlockSize());\n }\n var index = (this.parent.allowPaging && this.parent.enableColumnVirtualization) ?\n this.editedRowIndex % this.getBlockSize() : this.editedRowIndex - ((block - 1) * this.getBlockSize());\n if (this.parent.groupSettings.columns.length) {\n var editRowObject = this.getEditedRowObject();\n if (editRowObject) {\n editRowObject.data = args.data;\n }\n }\n else {\n this.vgenerator.cache[parseInt(block.toString(), 10)][parseInt(index.toString(), 10)].data = args.data;\n }\n };\n VirtualContentRenderer.prototype.actionComplete = function (args) {\n if (!(this.parent.enableVirtualization || this.parent.enableColumnVirtualization)) {\n return;\n }\n var editRequestTypes = ['delete', 'save', 'cancel'];\n var dataActionRequestTypes = ['sorting', 'filtering', 'grouping', 'refresh', 'searching', 'ungrouping', 'reorder'];\n if (editRequestTypes.some(function (value) { return value === args.requestType; })) {\n this.refreshOffsets();\n this.refreshVirtualElement();\n }\n if (this.isNormaledit && (dataActionRequestTypes.some(function (value) { return value === args.requestType; })\n || editRequestTypes.some(function (value) { return value === args.requestType; }))) {\n this.isCancel = true;\n this.isAdd = false || this.parent.editSettings.showAddNewRow;\n this.editedRowIndex = this.empty;\n this.virtualData = {};\n this.virtualInfiniteData = {};\n if (this.parent.editModule) {\n this.parent.editModule.editModule.previousData = undefined;\n }\n }\n if (this.parent.enableColumnVirtualization && args.requestType === 'filterAfterOpen'\n && this.currentInfo.columnIndexes && this.currentInfo.columnIndexes[0] > 0) {\n this.parent.resetFilterDlgPosition(args.columnName);\n }\n };\n VirtualContentRenderer.prototype.resetIsedit = function () {\n if (this.parent.enableVirtualization && this.isNormaledit) {\n if ((this.parent.editSettings.allowEditing && Object.keys(this.virtualData).length)\n || (this.parent.editSettings.allowAdding && this.isAdd)) {\n this.parent.isEdit = true;\n }\n }\n };\n VirtualContentRenderer.prototype.scrollAfterEdit = function () {\n if (this.parent.editModule && this.parent.editSettings.allowEditing && this.isNormaledit) {\n if (this.parent.element.querySelector('.e-gridform')) {\n var editForm = this.parent.element.querySelector('.' + literals.editedRow);\n var addForm = this.parent.element.querySelector('.' + literals.addedRow);\n if (editForm || addForm) {\n var rowData = editForm ? extend({}, this.getRowObjectByIndex(this.editedRowIndex))\n : extend({}, this.emptyRowData);\n var keys = Object.keys(this.virtualData);\n this.virtualData = keys.length ? this.getVirtualEditedData(this.virtualData) : this.getVirtualEditedData(rowData);\n }\n }\n }\n };\n VirtualContentRenderer.prototype.createEmptyRowdata = function () {\n var _this = this;\n this.parent.columnModel.filter(function (e) {\n _this.emptyRowData[e.field] = _this.empty;\n });\n };\n VirtualContentRenderer.prototype.addActionBegin = function (args) {\n if (this.isNormaledit) {\n if (!Object.keys(this.emptyRowData).length) {\n this.createEmptyRowdata();\n }\n this.isAdd = true;\n var page = this.parent.pageSettings.currentPage;\n if (!this.parent.frozenRows && this.content.scrollTop > 0 && this.parent.editSettings.newRowPosition === 'Top') {\n this.isAdd = true;\n this.onActionBegin();\n args.startEdit = false;\n this.content.scrollTop = 0;\n }\n if (page < this.maxPage - 1 && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.isAdd = true;\n this.parent.setProperties({ pageSettings: { currentPage: this.maxPage - 1 } }, true);\n args.startEdit = false;\n this.content.scrollTop = this.offsets[this.offsetKeys.length];\n }\n }\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Object} returns the object\n * @hidden\n */\n VirtualContentRenderer.prototype.getRowObjectByIndex = function (index) {\n var data = this.getRowCollection(index, true);\n return data;\n };\n VirtualContentRenderer.prototype.getBlockSize = function () {\n return this.parent.pageSettings.pageSize >> 1;\n };\n VirtualContentRenderer.prototype.getBlockHeight = function () {\n return this.getBlockSize() * this.parent.getRowHeight();\n };\n VirtualContentRenderer.prototype.isEndBlock = function (index) {\n var totalBlocks = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n return index >= totalBlocks || index === totalBlocks - 1;\n };\n VirtualContentRenderer.prototype.getGroupedTotalBlocks = function () {\n var rows = this.parent.vcRows;\n return Math.floor((rows.length / this.getBlockSize()) < 1 ? 1 : rows.length / this.getBlockSize());\n };\n VirtualContentRenderer.prototype.getTotalBlocks = function () {\n return Math.ceil(this.count / this.getBlockSize());\n };\n VirtualContentRenderer.prototype.getColumnOffset = function (block) {\n return this.vgenerator.cOffsets[parseInt(block.toString(), 10)] | 0;\n };\n VirtualContentRenderer.prototype.getModelGenerator = function () {\n return new VirtualRowModelGenerator(this.parent);\n };\n VirtualContentRenderer.prototype.resetScrollPosition = function (action) {\n if (this.actions.some(function (value) { return value === action; })) {\n this.preventEvent = this.content.scrollTop !== 0;\n this.content.scrollTop = 0;\n }\n if (action !== 'virtualscroll') {\n this.isAdd = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.onActionBegin = function (e) {\n //Update property silently..\n this.parent.setProperties({ pageSettings: { currentPage: 1 } }, true);\n };\n VirtualContentRenderer.prototype.getRows = function () {\n return this.isInfiniteColumnvirtualization() ? this.getInfiniteRows() : this.vgenerator.getRows();\n };\n VirtualContentRenderer.prototype.getRowByIndex = function (index) {\n var row;\n if (isGroupAdaptive(this.parent)) {\n if (!isNullOrUndefined(index) && this.parent.enableVirtualization && this.parent.groupSettings.columns.length) {\n for (var i = 0; i < this.parent.getDataRows().length; i++) {\n if (this.parent.getDataRows()[parseInt(i.toString(), 10)].getAttribute(literals.dataRowIndex) === index.toString()) {\n row = this.parent.getDataRows()[parseInt(i.toString(), 10)];\n }\n }\n }\n else {\n row = !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n }\n }\n else if (!this.parent.enableVirtualization && this.parent.enableColumnVirtualization) {\n row = !isNullOrUndefined(index) ? this.enableCacheOnInfiniteColumnVirtual() ?\n this.parent.getDataRows().find(function (element) { return parseInt(element.getAttribute(literals.dataRowIndex), 10) === index; }) :\n this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n }\n else if (this.prevInfo) {\n row = this.getRowCollection(index, false);\n }\n return row;\n };\n VirtualContentRenderer.prototype.getMovableVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, false);\n };\n VirtualContentRenderer.prototype.getFrozenRightVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, false);\n };\n VirtualContentRenderer.prototype.getRowCollection = function (index, isRowObject) {\n var prev = this.prevInfo.blockIndexes;\n var startIdx = (prev[0] - 1) * this.getBlockSize();\n if (this.parent.pageSettings.pageSize % 2 !== 0) {\n startIdx += Math.floor((startIdx / this.getBlockSize()) / 2);\n }\n var rowCollection = this.parent.getDataRows();\n var collection = isRowObject ? this.parent.getCurrentViewRecords() : rowCollection;\n if (isRowObject && this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n startIdx = parseInt(this.parent.getRows()[0].getAttribute(literals.dataRowIndex), 10);\n collection = collection.filter(function (m) { return isNullOrUndefined(m.items); });\n }\n var selectedRow = collection[index - startIdx];\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n if (!isRowObject) {\n selectedRow = index <= this.parent.frozenRows ? rowCollection[parseInt(index.toString(), 10)]\n : rowCollection[(index - startIdx) + this.parent.frozenRows];\n }\n else {\n selectedRow = index <= this.parent.frozenRows ? this.parent.getRowsObject()[parseInt(index.toString(), 10)].data\n : selectedRow;\n }\n }\n return selectedRow;\n };\n VirtualContentRenderer.prototype.getVirtualRowIndex = function (index) {\n var prev = this.prevInfo.blockIndexes;\n var startIdx = (prev[0] - 1) * this.getBlockSize();\n if (this.parent.enableVirtualization && this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n var vGroupedRows = this.vgenerator.cache[prev[0]];\n for (var i = 0; i < vGroupedRows.length; i++) {\n if (vGroupedRows[\"\" + i].isDataRow) {\n startIdx = vGroupedRows[\"\" + i].index;\n break;\n }\n }\n }\n return startIdx + index;\n };\n /**\n * @returns {void}\n * @hidden */\n VirtualContentRenderer.prototype.refreshOffsets = function () {\n var gObj = this.parent;\n var row = 0;\n var bSize = this.getBlockSize();\n var total = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n this.prevHeight = this.offsets[parseInt(total.toString(), 10)];\n this.maxBlock = total % 2 === 0 ? total - 2 : total - 1;\n this.offsets = {};\n //Row offset update\n // eslint-disable-next-line prefer-spread\n var blocks = Array.apply(null, Array(total)).map(function () { return ++row; });\n for (var i = 0; i < blocks.length; i++) {\n var tmp = (this.vgenerator.cache[blocks[parseInt(i.toString(), 10)]] || []).length;\n var rem = !isGroupAdaptive(this.parent) ? this.count % bSize : (gObj.vcRows.length % bSize);\n var size = !isGroupAdaptive(this.parent) && blocks[parseInt(i.toString(), 10)] in this.vgenerator.cache ?\n tmp * this.parent.getRowHeight() : rem && blocks[parseInt(i.toString(), 10)] === total ? rem * this.parent.getRowHeight() :\n this.getBlockHeight();\n // let size: number = this.parent.groupSettings.columns.length && block in this.vgenerator.cache ?\n // tmp * getRowHeight() : this.getBlockHeight();\n this.offsets[blocks[parseInt(i.toString(), 10)]] = (this.offsets[blocks[parseInt(i.toString(), 10)] - 1] | 0) + size;\n this.tmpOffsets[blocks[parseInt(i.toString(), 10)]] = this.offsets[blocks[parseInt(i.toString(), 10)] - 1] | 0;\n }\n this.offsetKeys = Object.keys(this.offsets);\n if (isGroupAdaptive(this.parent)) {\n this.parent.vGroupOffsets = this.offsets;\n }\n //Column offset update\n if (this.parent.enableColumnVirtualization) {\n this.vgenerator.refreshColOffsets();\n }\n };\n VirtualContentRenderer.prototype.refreshVirtualElement = function () {\n this.vgenerator.refreshColOffsets();\n this.setVirtualHeight();\n };\n VirtualContentRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = [];\n rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var isRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n isRefresh = false;\n }\n var tr = gObj.getDataRows();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = gObj.getNormalizedColumnIndex(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n var colGrp = this.getColGroup().children;\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(colGrp[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n if (!isRefresh) {\n var width = void 0;\n if (column.width) {\n if (column.visible) {\n width = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n width = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n }\n if (width > gObj.width) {\n this.setDisplayNone(tr, idx, displayVal, rows);\n if (this.parent.enableColumnVirtualization) {\n this.virtualEle.setWrapperWidth(width + '');\n }\n this.refreshVirtualElement();\n }\n else {\n isRefresh = true;\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (isRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: rows, args: { isFrozen: false, rows: rows } });\n }\n };\n VirtualContentRenderer.prototype.selectVirtualRow = function (args) {\n var _this = this;\n var count = isGroupAdaptive(this.parent) ? this.vgenerator.recordsCount : this.count;\n args.isAvailable = args.selectedIndex < count;\n if (args.isAvailable && !this.isContextMenuOpen && this.activeKey !== 'upArrow'\n && this.activeKey !== 'downArrow' && !this.isSelection && !this.requestTypes.some(function (value) { return value === _this.requestType; })\n && !this.parent.selectionModule.isInteracted) {\n var selectedRow = this.parent.getRowByIndex(args.selectedIndex);\n var rowHeight = this.parent.getRowHeight();\n if (!selectedRow || !this.isRowInView(selectedRow)) {\n this.isSelection = true;\n this.selectedRowIndex = args.selectedIndex;\n var scrollTop = (args.selectedIndex + 1) * rowHeight;\n if (isGroupAdaptive(this.parent)) {\n var selectedRowObjectIndex = this.parent.vcRows\n .findIndex(function (row) { return row.index === args.selectedIndex; });\n scrollTop = selectedRowObjectIndex * rowHeight;\n }\n else if (this.parent.getDataModule().isRemote() && this.parent.groupSettings.columns.length) {\n var page = Math.ceil((args.selectedIndex + 1) / this.parent.pageSettings.pageSize);\n var blockIndexes = this.vgenerator.getBlockIndexes(page);\n scrollTop = this.offsets[blockIndexes[0]];\n }\n if (!isNullOrUndefined(scrollTop)) {\n var direction = this.content.scrollTop < scrollTop ? 'down' : 'up';\n this.selectRowIndex = args.selectedIndex;\n this.content.scrollTop = scrollTop;\n this.isSelectionScroll = this.observer.check(direction);\n }\n }\n }\n this.requestType = this.empty;\n };\n VirtualContentRenderer.prototype.isRowInView = function (row) {\n var top = row.getBoundingClientRect().top;\n var bottom = row.getBoundingClientRect().bottom;\n return (top >= this.content.getBoundingClientRect().top && bottom <= this.content.getBoundingClientRect().bottom);\n };\n return VirtualContentRenderer;\n}(ContentRender));\nexport { VirtualContentRenderer };\n/**\n * @hidden\n */\nvar VirtualHeaderRenderer = /** @class */ (function (_super) {\n __extends(VirtualHeaderRenderer, _super);\n function VirtualHeaderRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.virtualEle = new VirtualElementHandler();\n _this.isMovable = false;\n _this.gen = new VirtualRowModelGenerator(_this.parent);\n _this.parent.on(events.columnVisibilityChanged, _this.setVisible, _this);\n _this.parent.on(refreshVirtualBlock, function (e) { return e.virtualInfo.sentinelInfo.axis === 'X' ? _this.refreshUI() : null; }, _this);\n return _this;\n }\n VirtualHeaderRenderer.prototype.renderTable = function () {\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.' + literals.headerContent)));\n _super.prototype.renderTable.call(this);\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.getPanel().querySelector('.' + literals.headerContent);\n this.virtualEle.content.style.position = 'relative';\n this.virtualEle.renderWrapper();\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n (!(this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && this.parent.enableColumnVirtualization) ?\n this.virtualEle.renderPlaceHolder() : this.virtualEle.renderPlaceHolder('absolute');\n };\n VirtualHeaderRenderer.prototype.appendContent = function (table) {\n this.virtualEle.wrapper.appendChild(table);\n };\n VirtualHeaderRenderer.prototype.refreshUI = function () {\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.' + literals.headerContent)));\n _super.prototype.refreshUI.call(this);\n };\n VirtualHeaderRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var needFullRefresh;\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n var colGrp = this.getColGroup().children;\n setStyleAttribute(colGrp[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (gObj.enableColumnVirtualization && !gObj.groupSettings.columns.length) {\n var tablewidth = void 0;\n if (column.visible) {\n tablewidth = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n tablewidth = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n if (tablewidth > gObj.width) {\n this.setDisplayNone(column, displayVal);\n this.virtualEle.setWrapperWidth(tablewidth + '');\n this.gen.refreshColOffsets();\n }\n else {\n needFullRefresh = true;\n }\n }\n else {\n needFullRefresh = true;\n }\n if (needFullRefresh) {\n this.refreshUI();\n }\n }\n };\n VirtualHeaderRenderer.prototype.setDisplayNone = function (col, displayVal) {\n var table = this.getTable();\n for (var _i = 0, _a = [].slice.apply(table.querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === col.uid) {\n setStyleAttribute(ele, { 'display': displayVal });\n if (displayVal === '') {\n removeClass([ele], 'e-hide');\n }\n break;\n }\n }\n };\n return VirtualHeaderRenderer;\n}(HeaderRender));\nexport { VirtualHeaderRenderer };\n/**\n * @hidden\n */\nvar VirtualElementHandler = /** @class */ (function () {\n function VirtualElementHandler() {\n }\n VirtualElementHandler.prototype.renderWrapper = function (height) {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) });\n this.wrapper.appendChild(this.table);\n this.content.appendChild(this.wrapper);\n };\n VirtualElementHandler.prototype.renderPlaceHolder = function (position) {\n if (position === void 0) { position = 'relative'; }\n this.placeholder = createElement('div', { className: 'e-virtualtrack', styles: \"position:\" + position });\n this.content.appendChild(this.placeholder);\n };\n VirtualElementHandler.prototype.renderFrozenWrapper = function (height) {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) + \"; display: flex\" });\n this.content.appendChild(this.wrapper);\n };\n VirtualElementHandler.prototype.renderFrozenPlaceHolder = function () {\n this.placeholder = createElement('div', { className: 'e-virtualtrack' });\n this.content.appendChild(this.placeholder);\n };\n VirtualElementHandler.prototype.renderMovableWrapper = function (height) {\n this.movableWrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) });\n this.movableContent.appendChild(this.movableWrapper);\n };\n VirtualElementHandler.prototype.renderMovablePlaceHolder = function () {\n this.movablePlaceholder = createElement('div', { className: 'e-virtualtrack' });\n this.movableContent.appendChild(this.movablePlaceholder);\n };\n VirtualElementHandler.prototype.adjustTable = function (xValue, yValue) {\n this.wrapper.style.transform = \"translate(\" + xValue + \"px, \" + yValue + \"px)\";\n };\n VirtualElementHandler.prototype.adjustMovableTable = function (xValue, yValue) {\n this.movableWrapper.style.transform = \"translate(\" + xValue + \"px, \" + yValue + \"px)\";\n };\n VirtualElementHandler.prototype.setMovableWrapperWidth = function (width, full) {\n this.movableWrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n VirtualElementHandler.prototype.setMovableVirtualHeight = function (height, width) {\n this.movablePlaceholder.style.height = height + \"px\";\n this.movablePlaceholder.style.width = width;\n };\n VirtualElementHandler.prototype.setWrapperWidth = function (width, full) {\n if (width && width.indexOf('%') === -1 && !(this.content.getBoundingClientRect().width < parseInt(width, 10))) {\n width = undefined;\n full = true;\n }\n this.wrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n VirtualElementHandler.prototype.setVirtualHeight = function (height, width) {\n this.placeholder.style.height = !isNullOrUndefined(height) ? height + \"px\" : '0px';\n if (width && width.indexOf('%') === -1 && !(this.content.getBoundingClientRect().width < parseInt(width, 10))) {\n width = '100%';\n }\n this.placeholder.style.width = width;\n };\n VirtualElementHandler.prototype.setFreezeWrapperWidth = function (wrapper, width, full) {\n wrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n return VirtualElementHandler;\n}());\nexport { VirtualElementHandler };\n","import { initialLoad } from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { VirtualContentRenderer, VirtualHeaderRenderer } from '../renderer/virtual-content-renderer';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { extend, getValue, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { setComplexFieldID, setValidationRuels, getColumnModelByUid } from '../base/util';\n/**\n * Virtual Scrolling class\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualscroll';\n };\n VirtualScroll.prototype.instantiateRenderer = function () {\n this.parent.log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = this.locator.getService('rendererFactory');\n if (this.parent.enableColumnVirtualization) {\n renderer.addRenderer(RenderType.Header, new VirtualHeaderRenderer(this.parent, this.locator));\n }\n renderer.addRenderer(RenderType.Content, new VirtualContentRenderer(this.parent, this.locator));\n if (!(!this.parent.enableVirtualization && this.parent.enableColumnVirtualization)) {\n this.ensurePageSize();\n }\n };\n VirtualScroll.prototype.ensurePageSize = function () {\n var rowHeight = this.parent.getRowHeight();\n var vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height;\n this.blockSize = ~~(parseFloat(vHeight.toString()) / rowHeight);\n var height = this.blockSize * 2;\n var size = this.parent.pageSettings.pageSize;\n this.parent.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.columnWidthChanged, this.refreshVirtualElement, this);\n this.parent.on(events.createVirtualValidationForm, this.createVirtualValidationForm, this);\n this.parent.on(events.validateVirtualForm, this.virtualEditFormValidation, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.instantiateRenderer);\n this.parent.off(events.columnWidthChanged, this.refreshVirtualElement);\n this.parent.off(events.createVirtualValidationForm, this.createVirtualValidationForm);\n this.parent.off(events.validateVirtualForm, this.virtualEditFormValidation);\n this.parent.off(events.destroy, this.destroy);\n };\n VirtualScroll.prototype.getCurrentEditedData = function (prevData) {\n var data = {\n virtualData: extend({}, {}, prevData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n return data.virtualData;\n };\n VirtualScroll.prototype.createVirtualValidationForm = function (e) {\n var gObj = this.parent;\n if (gObj.enableVirtualization && gObj.editSettings.mode === 'Normal') {\n var cols = gObj.columns;\n var rowRenderer = new RowRenderer(this.locator, null, this.parent);\n var rowObj = extend({}, {}, gObj.getRowObjectFromUID(e.uid), true);\n gObj.notify(events.refreshVirtualEditFormCells, rowObj);\n var args = e.argsCreator(this.getCurrentEditedData(e.prevData), {}, false);\n args.isCustomFormValidation = true;\n args.row = rowRenderer.render(rowObj, cols);\n e.renderer.update(args);\n var rules = {};\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].validationRules) {\n setValidationRuels(cols[parseInt(i.toString(), 10)], 0, rules, {}, {}, cols.length, true);\n }\n }\n args.form.classList.add('e-virtual-validation');\n gObj.editModule.virtualFormObj = gObj.editModule.createFormObj(args.form, rules);\n }\n };\n VirtualScroll.prototype.virtualEditFormValidation = function (args) {\n var gObj = this.parent;\n var error = gObj.element.querySelector('.e-griderror:not([style*=\"display: none\"])');\n if (gObj.editModule.virtualFormObj) {\n if (error && error.style.display !== 'none') {\n var errorDomRect = error.getBoundingClientRect();\n var forms = gObj.element.querySelectorAll('.e-gridform');\n var form = forms[0];\n var contentLeft = gObj.getContent().getBoundingClientRect().left;\n if (forms.length > 1) {\n form = forms[1];\n }\n if (errorDomRect.left < contentLeft || errorDomRect.right > gObj.element.offsetWidth) {\n var tooltip = form.querySelector('.e-tooltip-wrap:not([style*=\"display: none\"])');\n this.scrollToEdit(tooltip, { editIdx: args.editIdx, addIdx: args.addIdx }, true);\n }\n }\n else if (gObj.editModule.virtualFormObj && (!error || error.style.display === 'none')) {\n var existingErrors = gObj.editModule.virtualFormObj.element.querySelectorAll('.e-tooltip-wrap:not([style*=\"display: none\"])');\n for (var i = 0; i < existingErrors.length; i++) {\n remove(existingErrors[parseInt(i.toString(), 10)]);\n }\n this.setEditedDataToValidationForm(gObj.editModule.virtualFormObj.element, this.getCurrentEditedData(args.prevData));\n args.isValid = gObj.editModule.virtualFormObj.validate();\n if (!args.isValid) {\n var tooltip = gObj.editModule.virtualFormObj.element.querySelector('.e-tooltip-wrap:not([style*=\"display: none\"])');\n this.scrollToEdit(tooltip, { editIdx: args.editIdx, addIdx: args.addIdx });\n }\n }\n }\n };\n VirtualScroll.prototype.scrollToEdit = function (tooltip, args, isRenderer) {\n var gObj = this.parent;\n if (tooltip) {\n var cols = gObj.columnModel;\n var field = setComplexFieldID(tooltip.id).split('_')[0];\n var col = gObj.getColumnByField(field);\n var scrollTop = this.parent.getContent().firstElementChild.scrollTop;\n var row = gObj.getRowByIndex(args.editIdx);\n if (isRenderer || !col || (!isNullOrUndefined(args.addIdx) && scrollTop > 0) || (!isNullOrUndefined(args.editIdx) && !row)) {\n var validationCol = void 0;\n for (var i = 0; i < cols.length && !col; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n validationCol = cols[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (isRenderer) {\n validationCol = col;\n }\n this.parent.notify(events.scrollToEdit, validationCol);\n }\n }\n };\n VirtualScroll.prototype.setEditedDataToValidationForm = function (form, editedData) {\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col = getColumnModelByUid(this.parent, inputs[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (col.field) {\n var value = getValue(col.field, editedData);\n value = isNullOrUndefined(value) ? '' : value;\n inputs[parseInt(i.toString(), 10)].value = value;\n }\n }\n };\n VirtualScroll.prototype.refreshVirtualElement = function (args) {\n if (this.parent.enableColumnVirtualization && args.module === 'resize') {\n var renderer = this.locator.getService('rendererFactory');\n renderer.getRenderer(RenderType.Content).refreshVirtualElement();\n }\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable, initializeCSPTemplate, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick',\n persistSelection: (this.parent.enableVirtualization) ? true : false\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: function (args) { args.cancel = true; },\n // eslint-disable-next-line\n load: function (args) {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.reactTemplateRender = function (args) {\n this.parent[\"portals\"] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent[\"portals\"] = this.parent[\"portals\"].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent[\"portals\"]);\n this.parent[\"renderReactTemplates\"]();\n };\n /**\n * Gets the grid height.\n *\n * @returns The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n var enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return \"
      \" + name + \"
      \" + data._fm_modified + \"
      \" + data.size + \"\";\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\n this.adjustWidth(columns, 'name');\n var _loop_1 = function (i, len) {\n columns[i].headerText = getLocaleText(this_1.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {\n var template_1 = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template_1.replace(/\\${name}/g, name);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = columns.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return \"\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return \"\";\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var textEle = args.row.querySelector('.e-fe-text');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n // eslint-disable-next-line\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n var nameColumn = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === _this.parent.sortBy; });\n if (nameColumn && !('sortComparer' in nameColumn)) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, (this.parent.enableVirtualization) ? args.result : this.gridObj.dataSource);\n args.result = items;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop == 0))) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var items = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n // eslint-disable-next-line\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n // eslint-disable-next-line\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n // eslint-disable-next-line\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n // eslint-disable-next-line\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n // eslint-disable-next-line\n var info = null;\n // eslint-disable-next-line\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n // eslint-disable-next-line\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n proxy_1.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (proxy_1.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = proxy_1.gridObj.getRows().indexOf(row);\n proxy_1.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.onBlur = function (e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNOU(this.gridObj.element)) {\n var thElements = this.gridObj.element.querySelectorAll('th');\n for (var i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n // eslint-disable-next-line\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focItem = this.getFocusedItem();\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n // eslint-disable-next-line\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n var direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n var currentField = this.gridObj.getColumnByUid(e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid')).field;\n this.gridObj.sortColumn(currentField, direction);\n if (!isNOU(this.getFocusedItem().nextSibling)) {\n this.getFocusedItem().nextSibling.setAttribute('tabindex', '0');\n }\n }\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n // eslint-disable-next-line\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addHeaderFocus(e);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n // eslint-disable-next-line\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n // eslint-disable-next-line\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.addHeaderFocus = function (e) {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var nameFocus;\n if (!isNOU(e.target) && e.target.classList.contains('e-defaultcursor')) {\n this.addFocus(0);\n nameFocus = e.target.nextElementSibling;\n }\n else if (!isNOU(this.gridObj.element.querySelector('.e-focus')) && (this.gridObj.element.querySelector('.e-focus').tagName === 'TH')) {\n nameFocus = this.gridObj.element.querySelector('.e-focus').nextElementSibling;\n this.addFocus(0);\n }\n else {\n nameFocus = select('th.e-fe-grid-icon', this.element);\n }\n if (!isNOU(nameFocus)) {\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [CLS.FOCUS, CLS.FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [CLS.FOCUS, CLS.FOCUSED]);\n }\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.getRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n // eslint-disable-next-line\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 && !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 && !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 { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule, getPathId } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n // eslint-disable-next-line\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n // eslint-disable-next-line\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n // eslint-disable-next-line\n var directories = getDirectories(files);\n if (directories.length > 0 &&\n (directories[0].filterPath == null || this.getTreeData(target)[0].filterPath == null || directories[0].filterPath !== this.getTreeData(target)[0].filterPath)) {\n var length_1 = 0;\n // eslint-disable-next-line\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line\n folders[length_1]._fm_icon = 'e-fe-folder';\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNOU(childElements)) {\n // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.selectedNodes = [args.node.getAttribute(\"data-uid\")];\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n // eslint-disable-next-line\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.selectedNodes = [node.getAttribute('data-uid')];\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var previousPath = this.parent.path;\n if (!this.isRightClick && this.isSameNodeClicked) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.isNodeClickCalled = true;\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n this.isNodeExpandCalled = true;\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n // eslint-disable-next-line\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData();\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n // eslint-disable-next-line\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n // eslint-disable-next-line\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n // eslint-disable-next-line\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (this.parent.hasId) {\n this.parent.isDropEnd = !this.parent.isPasteError;\n readDropPath(this.parent);\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n // eslint-disable-next-line\n var obj = this.parent.isDragDrop ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n // eslint-disable-next-line\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getTreeData = function (args) {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map(function (item) { return item.name; });\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n // eslint-disable-next-line\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n var _this = this;\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan_1 = '';\n var largeIconSpan_1 = '';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n content: '' + getLocaleText(this.parent, 'View') + '',\n beforeItemRender: function (args) {\n var tickIcon = args.item.iconCss;\n var viewText = args.item.text === getLocaleText(_this.parent, 'View-LargeIcons');\n var iconClass = tickIcon ? ' e-menu-icon ' + tickIcon : '';\n args.element.innerHTML = '' + (viewText ? largeIconSpan_1 : gridSpan_1) + args.item.text;\n var span = args.element.firstChild;\n if (span && span.className === '') {\n args.element.removeChild(span);\n }\n }\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n if (this.parent.portals && this.toolbarObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);\n this.parent['renderReactTemplates']();\n }\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var propItem = void 0;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy': {\n var spanElement = '' + itemText + '';\n if (propItem && propItem.text) {\n spanElement = '' + propItem.text + '';\n }\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: ''\n };\n break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: ''\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = __assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { Browser, detach, closest, isNullOrUndefined as isNOU, EventHandler, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ContextMenu, DetailsView, FileManager as EJ2FileManager } from '@syncfusion/ej2-filemanager';\nimport { NavigationPane, Toolbar } from '@syncfusion/ej2-filemanager';\nimport { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { dispatchEvent } from '../base/util';\n/**\n * `FileManager` module is used to display the directories and images inside the editor.\n */\nvar FileManager = /** @class */ (function () {\n function FileManager(parent, locator) {\n EJ2FileManager.Inject(ContextMenu, DetailsView, NavigationPane, Toolbar);\n this.parent = parent;\n this.i10n = locator.getService('rteLocale');\n this.dialogRenderObj = locator.getService('dialogRenderObject');\n this.rendererFactory = locator.getService('rendererFactory');\n this.addEventListener();\n }\n FileManager.prototype.initialize = function () {\n this.parent.fileManagerModule = this;\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n };\n FileManager.prototype.render = function (e) {\n var _this = this;\n var dlgInsert;\n if (e.selectNode && e.selectNode[0].nodeName === 'IMG') {\n dlgInsert = this.parent.localeObj.getConstant('dialogUpdate');\n }\n else {\n dlgInsert = this.i10n.getConstant('dialogInsert');\n }\n var dlgHeader = this.parent.localeObj.getConstant('fileDialogHeader');\n var dlgCancel = this.i10n.getConstant('dialogCancel');\n this.dlgButtons = [{\n click: this.insertImageUrl.bind(this),\n buttonModel: { content: dlgInsert, cssClass: 'e-flat e-insertImage', isPrimary: true }\n },\n {\n // eslint-disable-next-line\n click: function (e) {\n _this.cancelDialog();\n },\n buttonModel: { cssClass: 'e-flat e-cancel', content: dlgCancel }\n }];\n this.dlgButtons[0].buttonModel.disabled = true;\n this.selectObj = { selection: e.selection, args: e.args, selectParent: e.selectParent };\n var dlgTarget = this.parent.createElement('div', {\n className: 'e-rte-file-manager-dialog', id: this.parent.getID() + '_file-manager-dialog',\n attrs: { 'aria-owns': this.parent.getID() }\n });\n document.body.appendChild(dlgTarget);\n this.fileWrap = this.parent.createElement('div', {\n id: this.parent.getID() + '_rte-file-manager', className: 'e-img-file-wrap'\n });\n dlgTarget.appendChild(this.fileWrap);\n dlgTarget.appendChild(this.getInputUrlElement());\n var dialogModel = {\n visible: false,\n isModal: true, header: dlgHeader,\n target: document.body, locale: this.parent.locale,\n enableRtl: this.parent.enableRtl, cssClass: classes.CLS_RTE_ELEMENTS,\n animationSettings: { effect: 'None' },\n showCloseIcon: true, closeOnEscape: true, width: '720px', height: 'auto',\n position: { X: 'center', Y: 'center' },\n buttons: this.dlgButtons,\n created: this.renderFileManager.bind(this),\n close: function (e) {\n _this.parent.isBlur = false;\n if (e && e.event.returnValue) {\n _this.selectObj.selection.restore();\n }\n _this.destroyComponents();\n _this.dialogRenderObj.close(e);\n }\n };\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n this.dialogObj.createElement = this.parent.createElement;\n this.dialogObj.appendTo(dlgTarget);\n this.dialogObj.show(Browser.isDevice ? true : false);\n this.setCssClass({ cssClass: this.parent.getCssClass() });\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n FileManager.prototype.setCssClass = function (e) {\n if (this.dialogObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n this.dialogObj.setProperties({ cssClass: (this.dialogObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n this.dialogObj.setProperties({ cssClass: (this.dialogObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n FileManager.prototype.renderFileManager = function () {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n this.fileObj = new EJ2FileManager({\n allowMultiSelection: false,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n path: this.parent.fileManagerSettings.path,\n view: this.parent.fileManagerSettings.view,\n enablePersistence: this.parent.enablePersistence,\n cssClass: this.parent.fileManagerSettings.cssClass,\n sortOrder: this.parent.fileManagerSettings.sortOrder,\n ajaxSettings: this.parent.fileManagerSettings.ajaxSettings,\n showThumbnail: this.parent.fileManagerSettings.showThumbnail,\n rootAliasName: this.parent.fileManagerSettings.rootAliasName,\n uploadSettings: this.parent.fileManagerSettings.uploadSettings,\n searchSettings: this.parent.fileManagerSettings.searchSettings,\n toolbarSettings: this.parent.fileManagerSettings.toolbarSettings,\n showHiddenItems: this.parent.fileManagerSettings.showHiddenItems,\n allowDragAndDrop: this.parent.fileManagerSettings.allowDragAndDrop,\n showFileExtension: this.parent.fileManagerSettings.showFileExtension,\n detailsViewSettings: this.parent.fileManagerSettings.detailsViewSettings,\n contextMenuSettings: this.parent.fileManagerSettings.contextMenuSettings,\n navigationPaneSettings: this.parent.fileManagerSettings.navigationPaneSettings,\n beforeSend: this.parent.fileManagerSettings.beforeSend,\n fileSelect: function (e) {\n var selectedFile = e.fileDetails;\n if (selectedFile.isFile && proxy.parent.insertImageSettings.allowedTypes.indexOf(selectedFile.type) > -1) {\n proxy.inputUrl.value = proxy.parent.fileManagerSettings.ajaxSettings.getImageUrl + '?path=' +\n (selectedFile.filterPath && selectedFile.filterPath.replace(/\\\\/g, '/')) + selectedFile.name;\n _this.dlgButtons[0].buttonModel.disabled = false;\n }\n else {\n proxy.inputUrl.value = '';\n _this.dlgButtons[0].buttonModel.disabled = true;\n }\n _this.dialogObj.buttons = _this.dlgButtons;\n },\n created: function () {\n _this.inputUrl.removeAttribute('disabled');\n },\n success: function () {\n _this.fileObj.refreshLayout();\n }\n });\n if (Browser.isDevice) {\n this.fileObj.height = '85%';\n }\n this.fileObj.appendTo(this.fileWrap);\n EventHandler.add(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick, this);\n };\n FileManager.prototype.getInputUrlElement = function () {\n var imgUrl = this.parent.createElement('div', { className: 'imgUrl' });\n var urlLabel = this.parent.createElement('div', { className: 'e-rte-label' });\n urlLabel.innerHTML = '';\n imgUrl.appendChild(urlLabel);\n var placeUrl = this.i10n.getConstant('imageUrl');\n this.inputUrl = this.parent.createElement('input', {\n className: 'e-input e-img-url',\n attrs: { placeholder: placeUrl, spellcheck: 'false', disabled: 'true' }\n });\n imgUrl.appendChild(this.inputUrl);\n return imgUrl;\n };\n // eslint-disable-next-line\n FileManager.prototype.insertImageUrl = function (e) {\n var url = this.inputUrl.value;\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n if (url !== '') {\n if (this.parent.editorMode === 'HTML' &&\n isNOU(closest(this.selectObj.selection.range.startContainer.parentNode, '#' + this.contentModule.getPanel().id))) {\n this.contentModule.getEditPanel().focus();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.contentModule.getDocument());\n this.selectObj.selection = this.parent.formatter.editorManager.nodeSelection.save(range, this.contentModule.getDocument());\n this.selectObj.selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n var regex = /[\\w-]+.(jpg|png|jpeg|gif)/g;\n var matchUrl = (!isNOU(url.match(regex)) && this.parent.editorMode === 'HTML') ? url.match(regex)[0] : '';\n var value = {\n cssClass: (this.parent.insertImageSettings.display === 'inline' ? classes.CLS_IMGINLINE : classes.CLS_IMGBREAK),\n url: url, selection: this.selectObj.selection, altText: matchUrl, selectParent: this.selectObj.selectParent,\n width: {\n width: this.parent.insertImageSettings.width, minWidth: this.parent.insertImageSettings.minWidth,\n maxWidth: this.parent.getInsertImgMaxWidth()\n },\n height: {\n height: this.parent.insertImageSettings.height, minHeight: this.parent.insertImageSettings.minHeight,\n maxHeight: this.parent.insertImageSettings.maxHeight\n }\n };\n this.parent.formatter.process(this.parent, this.selectObj.args, this.selectObj.args.originalEvent, value);\n this.dialogObj.hide({ returnValue: false });\n }\n };\n FileManager.prototype.cancelDialog = function () {\n this.parent.isBlur = false;\n this.dialogObj.hide({ returnValue: true });\n };\n FileManager.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var prevEle = target.nodeName !== '#document' && !isNOU(target.previousElementSibling) && target.previousElementSibling;\n if (!isNOU(this.dialogObj) &&\n (!closest(target, '#' + this.parent.getID() + '_file-manager-dialog') &&\n !closest(target, '#' + this.parent.getID() + '_rte-file-manager_tb_sortby-popup') &&\n !closest(target, '#' + this.parent.getID() + '_rte-file-manager_tb_view-popup') &&\n !closest(target, '#' + this.parent.getID() + '_rte-file-manager_contextmenu') &&\n (!(!isNOU(closest(target, '.e-contextmenu-wrapper')) &&\n closest(target, '.e-contextmenu-wrapper').querySelector('#' + this.parent.getID() + '_rte-file-manager_contextmenu'))) &&\n (!isNOU(prevEle) && !prevEle.classList.contains('e-rte-file-manager-dialog')) &&\n (!isNOU(prevEle) && prevEle.id !== this.parent.getID() + '_rte-file-manager_contextmenu'))) {\n this.dialogObj.hide({ returnValue: true });\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n else {\n this.parent.isRTE = true;\n }\n };\n FileManager.prototype.addEventListener = function () {\n this.parent.on(events.initialEnd, this.initialize, this);\n this.parent.on(events.renderFileManager, this.render, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n FileManager.prototype.removeEventListener = function () {\n EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);\n this.parent.off(events.initialEnd, this.initialize);\n this.parent.off(events.renderFileManager, this.render);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.destroy, this.destroy);\n };\n FileManager.prototype.destroyComponents = function () {\n if (this.fileObj) {\n this.fileObj.destroy();\n this.fileObj = null;\n }\n if (this.dialogObj) {\n this.dialogObj.destroy();\n detach(this.dialogObj.element);\n this.dialogObj = null;\n }\n };\n FileManager.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.destroyComponents();\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string value\n * @hidden\n */\n FileManager.prototype.getModuleName = function () {\n return 'fileManager';\n };\n return FileManager;\n}());\nexport { FileManager };\n","import { addClass, Browser, isNullOrUndefined as isNOU, removeClass } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nvar FormatPainter = /** @class */ (function () {\n function FormatPainter(parent) {\n this.isSticky = false;\n this.isActive = false;\n this.parent = parent;\n this.addEventListener();\n }\n FormatPainter.prototype.addEventListener = function () {\n this.parent.on(events.formatPainterClick, this.toolbarClick, this);\n this.parent.on(events.formatPainterDoubleClick, this.toolbarDoubleClick, this);\n this.parent.on(events.editAreaClick, this.editAreaClick, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n FormatPainter.prototype.toolbarClick = function (clickargs) {\n this.parent.focusIn();\n if (!this.isSticky) {\n this.isActive = true;\n this.actionHandler(clickargs, 'click');\n }\n else {\n // Handling the format painter double click toolbar esape action\n clickargs.args.action = 'escape';\n this.actionHandler(clickargs, 'keyBoard');\n }\n if (this.parent.quickToolbarModule && !isNOU(this.parent.quickToolbarSettings.text) &&\n this.parent.element.ownerDocument.contains(this.parent.quickToolbarModule.textQTBar.element)) {\n this.parent.quickToolbarModule.textQTBar.hidePopup();\n }\n };\n FormatPainter.prototype.toolbarDoubleClick = function (args) {\n this.isActive = true;\n this.isSticky = true;\n this.parent.focusIn();\n this.actionHandler(args, 'dbClick');\n };\n FormatPainter.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n if (!isNOU(originalEvent) && !isNOU(originalEvent.action) && (originalEvent.action === 'format-copy' || originalEvent.action === 'format-paste')\n || (originalEvent.action === 'escape' && (this.previousAction === 'format-copy' || this.previousAction === 'format-paste'))) {\n if ((originalEvent.action === 'format-copy' || originalEvent.action === 'format-paste')) {\n originalEvent.stopPropagation();\n }\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n originalEvent.preventDefault();\n }\n this.actionHandler(event, 'keyBoard');\n }\n };\n FormatPainter.prototype.actionHandler = function (event, type) {\n var action;\n var isKeyboard = false;\n var originalEvent;\n var args;\n var item;\n switch (type) {\n case 'dbClick':\n args = event.args;\n item = args.item;\n originalEvent = event.args.originalEvent;\n action = 'format-copy';\n break;\n case 'keyBoard':\n args = null;\n originalEvent = event.args;\n isKeyboard = true;\n action = event.args.action;\n if (action === 'escape') {\n this.isSticky = false;\n this.isActive = false;\n }\n break;\n case 'click':\n args = event.args;\n item = args.item;\n originalEvent = event.args.originalEvent;\n action = 'format-copy';\n break;\n case 'docClick':\n originalEvent = event;\n action = 'format-paste';\n break;\n }\n this.updateCursor(isKeyboard);\n var enable = type === 'docClick' || action === 'escape' ? false : true;\n this.updateToolbarBtn(enable);\n if (isNOU(item)) {\n item = {\n command: 'FormatPainter',\n subCommand: 'FormatPainter'\n };\n }\n var actionBeginArgs = {\n requestType: 'FormatPainter', originalEvent: originalEvent, name: action, item: item\n };\n var value = {\n formatPainterAction: action\n };\n this.parent.formatter.process(this.parent, actionBeginArgs, originalEvent, value);\n this.previousAction = action;\n };\n FormatPainter.prototype.updateCursor = function (isKeyboard) {\n if (!this.parent.inputElement.classList.contains('e-rte-cursor-brush') && !isKeyboard) {\n addClass([this.parent.inputElement], 'e-rte-cursor-brush');\n }\n else if (!this.isSticky) {\n removeClass([this.parent.inputElement], 'e-rte-cursor-brush');\n }\n };\n FormatPainter.prototype.updateToolbarBtn = function (enable) {\n if (!isNOU(this.parent.element.querySelector('.e-rte-format-painter'))) {\n var toolbarBtn = this.parent.element.querySelector('.e-rte-format-painter').parentElement.parentElement;\n if (enable) {\n addClass([toolbarBtn], 'e-active');\n }\n else if (!this.isSticky) {\n removeClass([toolbarBtn], 'e-active');\n }\n }\n };\n FormatPainter.prototype.editAreaClick = function (args) {\n if (this.isActive) {\n if (!this.isSticky) {\n this.isActive = false;\n }\n this.actionHandler(args, 'docClick');\n this.updateToolbarBtn(false);\n }\n };\n FormatPainter.prototype.destroy = function () {\n if (isNOU(this.parent) || this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.formatPainterClick, this.toolbarClick);\n this.parent.off(events.editAreaClick, this.editAreaClick);\n this.parent.off(events.formatPainterDoubleClick, this.toolbarDoubleClick);\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.destroy, this.destroy);\n if (!isNOU(this.parent.formatter.editorManager.formatPainterEditor)) {\n this.parent.formatter.editorManager.formatPainterEditor.destroy();\n }\n this.parent = undefined;\n this.isSticky = undefined;\n this.isActive = undefined;\n this.previousAction = undefined;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n FormatPainter.prototype.getModuleName = function () {\n return 'formatPainter';\n };\n return FormatPainter;\n}());\nexport { FormatPainter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, 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","/**\n * Is formatted or not.\n *\n * @hidden\n\n */\nvar IsFormatted = /** @class */ (function () {\n function IsFormatted() {\n }\n /**\n * getFormattedNode method\n *\n * @param {Node} node - specifies the node.\n * @param {string} format - specifies the string value.\n * @param {Node} endNode - specifies the end node\n * @returns {Node} - returns the node\n * @hidden\n\n */\n IsFormatted.prototype.getFormattedNode = function (node, format, endNode) {\n var parentNode = this.getFormatParent(node, format, endNode);\n if (parentNode !== null && parentNode !== endNode) {\n return parentNode;\n }\n return null;\n };\n IsFormatted.prototype.getFormatParent = function (node, format, endNode) {\n do {\n node = node.parentNode;\n } while (node && (node !== endNode) && !this.isFormattedNode(node, format));\n return node;\n };\n IsFormatted.prototype.isFormattedNode = function (node, format) {\n switch (format) {\n case 'bold':\n return IsFormatted.isBold(node);\n case 'italic':\n return IsFormatted.isItalic(node);\n case 'underline':\n return IsFormatted.isUnderline(node);\n case 'strikethrough':\n return IsFormatted.isStrikethrough(node);\n case 'superscript':\n return IsFormatted.isSuperscript(node);\n case 'subscript':\n return IsFormatted.isSubscript(node);\n case 'fontcolor':\n return this.isFontColor(node);\n case 'fontname':\n return this.isFontName(node);\n case 'fontsize':\n return this.isFontSize(node);\n case 'backgroundcolor':\n return this.isBackgroundColor(node);\n default:\n return false;\n }\n };\n /**\n * isBold method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isBold = function (node) {\n var validTags = ['strong', 'b'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.fontWeight === 'bold') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isItalic method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isItalic = function (node) {\n var validTags = ['em', 'i'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.fontStyle === 'italic') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isUnderline method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isUnderline = function (node) {\n var validTags = ['u'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n /* eslint-disable */\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && (node.style.textDecoration === 'underline' ||\n node.style.textDecorationLine === 'underline')) {\n /* eslint-enable */\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isStrikethrough method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isStrikethrough = function (node) {\n var validTags = ['del', 'strike'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n /* eslint-disable */\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && (node.style.textDecoration === 'line-through' ||\n node.style.textDecorationLine === 'line-through')) {\n /* eslint-enable */\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isSuperscript method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isSuperscript = function (node) {\n var validTags = ['sup'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isSubscript method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isSubscript = function (node) {\n var validTags = ['sub'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontColor = function (node) {\n var color = node.style && node.style.color;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n color !== null && color !== '' && color !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isBackgroundColor = function (node) {\n var backColor = node.style && node.style.backgroundColor;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n backColor !== null && backColor !== '' && backColor !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontSize = function (node) {\n var size = node.style && node.style.fontSize;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n size !== null && size !== '' && size !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontName = function (node) {\n var name = node.style && node.style.fontFamily;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n name !== null && name !== '' && name !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n // Get Formatted Node\n IsFormatted.inlineTags = [\n 'a',\n 'abbr',\n 'acronym',\n 'b',\n 'bdo',\n 'big',\n 'cite',\n 'code',\n 'dfn',\n 'em',\n 'font',\n 'i',\n 'kbd',\n 'label',\n 'q',\n 'samp',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'tt',\n 'u',\n 'var',\n 'del'\n ];\n return IsFormatted;\n}());\nexport { IsFormatted };\n","/**\n * Constant values for EditorManager\n */\n/**\n * Image plugin events\n *\n * @hidden\n */\nexport var IMAGE = 'INSERT-IMAGE';\nexport var AUDIO = 'INSERT-AUDIO';\nexport var VIDEO = 'INSERT-VIDEO';\nexport var TABLE = 'INSERT-TABLE';\nexport var LINK = 'INSERT-LINK';\nexport var INSERT_ROW = 'INSERT-ROW';\nexport var INSERT_COLUMN = 'INSERT-COLUMN';\nexport var DELETEROW = 'DELETE-ROW';\nexport var DELETECOLUMN = 'DELETE-COLUMN';\nexport var REMOVETABLE = 'REMOVE-TABLE';\nexport var TABLEHEADER = 'TABLE-HEADER';\nexport var TABLE_VERTICAL_ALIGN = 'TABLE_VERTICAL_ALIGN';\nexport var TABLE_MERGE = 'TABLE_MERGE';\nexport var TABLE_VERTICAL_SPLIT = 'TABLE_VERTICAL_SPLIT';\nexport var TABLE_HORIZONTAL_SPLIT = 'TABLE_HORIZONTAL_SPLIT';\nexport var TABLE_MOVE = 'TABLE_MOVE';\n/**\n * Alignments plugin events\n *\n * @hidden\n */\nexport var ALIGNMENT_TYPE = 'alignment-type';\n/**\n * Indents plugin events\n *\n * @hidden\n */\nexport var INDENT_TYPE = 'indent-type';\n/**\n * Constant tag names\n *\n * @hidden\n */\nexport var DEFAULT_TAG = 'p';\n/**\n * @hidden\n */\nexport var BLOCK_TAGS = ['address', 'article', 'aside', 'audio', 'blockquote',\n 'canvas', 'details', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer',\n 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main', 'nav',\n 'noscript', 'ol', 'output', 'p', 'pre', 'section', 'table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr', 'ul', 'video', 'body'];\n/**\n * @hidden\n */\nexport var IGNORE_BLOCK_TAGS = ['td', 'th'];\n/**\n * @hidden\n */\nexport var TABLE_BLOCK_TAGS = ['table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr'];\n/**\n * Selection plugin events\n *\n * @hidden\n */\nexport var SELECTION_TYPE = 'selection-type';\n/**\n * Insert HTML plugin events\n *\n * @hidden\n */\nexport var INSERTHTML_TYPE = 'inserthtml-type';\n/**\n * Insert Text plugin events\n *\n * @hidden\n */\nexport var INSERT_TEXT_TYPE = 'insert-text-type';\n/**\n * Clear Format HTML plugin events\n *\n * @hidden\n */\nexport var CLEAR_TYPE = 'clear-type';\n/**\n * Self closing tags\n *\n * @hidden\n */\nexport var SELF_CLOSING_TAGS = ['area', 'base', 'br', 'embed', 'hr', 'img', 'input', 'param', 'source', 'track', 'wbr', 'iframe', 'td', 'table'];\n/**\n * Source\n *\n * @hidden\n */\nexport var PASTE_SOURCE = ['word', 'excel', 'onenote'];\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `Selection` module is used to handle RTE Selections.\n */\nvar NodeSelection = /** @class */ (function () {\n function NodeSelection() {\n this.startNodeName = [];\n this.endNodeName = [];\n }\n NodeSelection.prototype.saveInstance = function (range, body) {\n this.range = range.cloneRange();\n this.rootNode = this.documentFromRange(range);\n this.body = body;\n this.startContainer = this.getNodeArray(range.startContainer, true);\n this.endContainer = this.getNodeArray(range.endContainer, false);\n this.startOffset = range.startOffset;\n this.endOffset = range.endOffset;\n this.html = this.body.innerHTML;\n return this;\n };\n NodeSelection.prototype.documentFromRange = function (range) {\n return (9 === range.startContainer.nodeType) ? range.startContainer : range.startContainer.ownerDocument;\n };\n NodeSelection.prototype.getRange = function (docElement) {\n var select = this.get(docElement);\n var range = select && select.rangeCount > 0 ? select.getRangeAt(select.rangeCount - 1) : docElement.createRange();\n return (range.startContainer !== docElement || range.endContainer !== docElement\n || range.startOffset || range.endOffset || (range.setStart(docElement.body, 0),\n range.collapse(!0)),\n range);\n };\n /**\n * get method\n *\n * @param {Document} docElement - specifies the get function\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.get = function (docElement) {\n return docElement.defaultView.getSelection();\n };\n /**\n * save method\n *\n * @param {Range} range - range value.\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.save = function (range, docElement) {\n range = (range) ? range.cloneRange() : this.getRange(docElement);\n return this.saveInstance(range, docElement.body);\n };\n /**\n * getIndex method\n *\n * @param {Node} node - specifies the node value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getIndex = function (node) {\n var index;\n var num = 0;\n node = !node.previousSibling && node.tagName === 'BR' ? node : node.previousSibling;\n if (node) {\n for (var type = node.nodeType; node; null) {\n index = node.nodeType;\n num++;\n //eslint-disable-next-line\n type = index;\n node = node.previousSibling;\n }\n }\n return num;\n };\n NodeSelection.prototype.isChildNode = function (nodeCollection, parentNode) {\n for (var index = 0; index < parentNode.childNodes.length; index++) {\n if (nodeCollection.indexOf(parentNode.childNodes[index]) > -1) {\n return true;\n }\n }\n return false;\n };\n NodeSelection.prototype.getNode = function (startNode, endNode, nodeCollection) {\n if (endNode === startNode &&\n (startNode.nodeType === 3 || !startNode.firstChild || nodeCollection.indexOf(startNode.firstChild) !== -1\n || this.isChildNode(nodeCollection, startNode))) {\n return null;\n }\n if (startNode.nodeType === 3 && startNode.previousSibling === endNode && endNode.nodeName === 'IMG') {\n return null;\n }\n if (nodeCollection.indexOf(startNode.firstChild) === -1 && startNode.firstChild && !this.isChildNode(nodeCollection, startNode)) {\n return startNode.firstChild;\n }\n if (startNode.nextSibling) {\n return startNode.nextSibling;\n }\n if (!startNode.parentNode) {\n return null;\n }\n else {\n return startNode.parentNode;\n }\n };\n /**\n * getNodeCollection method\n *\n * @param {Range} range -specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getNodeCollection = function (range) {\n var startNode = range.startContainer.childNodes[range.startOffset]\n || range.startContainer;\n var endNode = range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]\n || range.endContainer;\n if ((startNode === endNode || (startNode.nodeName === 'BR' && startNode === range.endContainer.childNodes[range.endOffset])) &&\n startNode.childNodes.length === 0) {\n return [startNode];\n }\n if (range.startOffset === range.endOffset && range.startOffset !== 0 && range.startContainer.nodeName === 'PRE') {\n return [startNode.nodeName === 'BR' || startNode.nodeName === '#text' ? startNode : startNode.childNodes[0]];\n }\n var nodeCollection = [];\n do {\n if (nodeCollection.indexOf(startNode) === -1) {\n nodeCollection.push(startNode);\n }\n startNode = this.getNode(startNode, endNode, nodeCollection);\n } while (startNode);\n return nodeCollection;\n };\n /**\n * getParentNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getParentNodeCollection = function (range) {\n return this.getParentNodes(this.getNodeCollection(range), range);\n };\n /**\n * getParentNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @param {Range} range - specifies the range values.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getParentNodes = function (nodeCollection, range) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if ((nodeCollection.indexOf(nodeCollection[index].parentNode) !== -1)\n || (nodeCollection[index].nodeType === 3 &&\n range.startContainer !== range.endContainer &&\n range.startContainer.parentNode !== range.endContainer.parentNode)) {\n nodeCollection.splice(index, 1);\n index--;\n }\n else if (nodeCollection[index].nodeType === 3) {\n nodeCollection[index] = nodeCollection[index].parentNode;\n }\n }\n return nodeCollection;\n };\n /**\n * getSelectionNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodeCollection = function (range) {\n return this.getSelectionNodes(this.getNodeCollection(range));\n };\n /**\n * getSelectionNodeCollection along with BR node method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodeCollectionBr = function (range) {\n return this.getSelectionNodesBr(this.getNodeCollection(range));\n };\n /**\n * getParentNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeType !== 3 || (nodeCollection[index].textContent.trim() === '' ||\n (nodeCollection[index].textContent.length === 1 && nodeCollection[index].textContent.match(regEx)))) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * Get selection text nodes with br method.\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodesBr = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeName !== 'BR' &&\n (nodeCollection[index].nodeType !== 3 || (nodeCollection[index].textContent.trim() === '' ||\n (nodeCollection[index].textContent.length === 1 && nodeCollection[index].textContent.match(regEx))))) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * getInsertNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getInsertNodeCollection = function (range) {\n return this.getInsertNodes(this.getNodeCollection(range));\n };\n /**\n * getInsertNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getInsertNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if ((nodeCollection[index].childNodes.length !== 0 &&\n nodeCollection[index].nodeType !== 3) ||\n (nodeCollection[index].nodeType === 3 &&\n nodeCollection[index].textContent === '')) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * getNodeArray method\n *\n * @param {Node} node - specifies the node content.\n * @param {boolean} isStart - specifies the boolean value.\n * @param {Document} root - specifies the root document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getNodeArray = function (node, isStart, root) {\n var array = [];\n // eslint-disable-next-line\n ((isStart) ? (this.startNodeName = []) : (this.endNodeName = []));\n for (; node !== (root ? root : this.rootNode); null) {\n if (isNullOrUndefined(node)) {\n break;\n }\n // eslint-disable-next-line\n (isStart) ? this.startNodeName.push(node.nodeName.toLowerCase()) : this.endNodeName.push(node.nodeName.toLowerCase());\n array.push(this.getIndex(node));\n node = node.parentNode;\n }\n return array;\n };\n NodeSelection.prototype.setRangePoint = function (range, isvalid, num, size) {\n var node = this.rootNode;\n var index = num.length;\n var constant = size;\n for (; index--; null) {\n node = node && node.childNodes[num[index]];\n }\n if (node && constant >= 0 && node.nodeName !== 'html') {\n if (node.nodeType === 3 && node.nodeValue.replace(/\\u00a0/g, ' ') === ' ') {\n constant = node.textContent.length;\n }\n range[isvalid ? 'setStart' : 'setEnd'](node, constant);\n }\n return range;\n };\n /**\n * restore method\n *\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.restore = function () {\n var range = this.range.cloneRange();\n range = this.setRangePoint(range, true, this.startContainer, this.startOffset);\n range = this.setRangePoint(range, false, this.endContainer, this.endOffset);\n this.selectRange(this.rootNode, range);\n return range;\n };\n NodeSelection.prototype.selectRange = function (docElement, range) {\n this.setRange(docElement, range);\n this.save(range, docElement);\n };\n /**\n * setRange method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Range} range - specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setRange = function (docElement, range) {\n var selection = this.get(docElement);\n selection.removeAllRanges();\n selection.addRange(range);\n };\n /**\n * setSelectionText method\n *\n * @param {Document} docElement - specifies the documrent\n * @param {Node} startNode - specifies the starting node.\n * @param {Node} endNode - specifies the the end node.\n * @param {number} startIndex - specifies the starting index.\n * @param {number} endIndex - specifies the end index.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionText = function (docElement, startNode, endNode, startIndex, endIndex) {\n var range = docElement.createRange();\n range.setStart(startNode, startIndex);\n range.setEnd(endNode, endIndex);\n this.setRange(docElement, range);\n };\n /**\n * setSelectionContents method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} element - specifies the node.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionContents = function (docElement, element) {\n var range = docElement.createRange();\n range.selectNode(element);\n this.setRange(docElement, range);\n };\n /**\n * setSelectionNode method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} element - specifies the node.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionNode = function (docElement, element) {\n var range = docElement.createRange();\n range.selectNodeContents(element);\n this.setRange(docElement, range);\n };\n /**\n * getSelectedNodes method\n *\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectedNodes = function (docElement) {\n return this.getNodeCollection(this.getRange(docElement));\n };\n /**\n * Clear method\n *\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.Clear = function (docElement) {\n this.get(docElement).removeAllRanges();\n };\n /**\n * insertParentNode method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} newNode - specicfies the new node.\n * @param {Range} range - specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.insertParentNode = function (docElement, newNode, range) {\n range.surroundContents(newNode);\n this.selectRange(docElement, range);\n };\n /**\n * setCursorPoint method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Element} element - specifies the element.\n * @param {number} point - specifies the point.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setCursorPoint = function (docElement, element, point) {\n var range = docElement.createRange();\n var selection = docElement.defaultView.getSelection();\n range.setStart(element, point);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n };\n return NodeSelection;\n}());\nexport { NodeSelection };\n","import { IsFormatted } from './isformatted';\nimport * as CONSTANT from './../base/constant';\nimport { NodeSelection } from './../../selection/index';\nimport { getDefaultHtmlTbStatus } from './../../common/util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Update Toolbar Status\n *\n * @hidden\n\n */\nexport var statusCollection = getDefaultHtmlTbStatus();\nvar ToolbarStatus = /** @class */ (function () {\n function ToolbarStatus() {\n }\n /**\n * get method\n *\n * @param {Document} docElement - specifies the document element\n * @param {Node} rootNode - specifies the content editable element\n * @param {string[]} formatNode - specifies the format node\n * @param {string[]} fontSize - specifies the font size\n * @param {string[]} fontName - specifies the font name.\n * @param {Node} documentNode - specifies the document node.\n * @returns {IToolbarStatus} - returns the toolbar status\n * @hidden\n\n */\n ToolbarStatus.get = function (docElement, rootNode, formatNode, fontSize, fontName, documentNode) {\n var formatCollection = JSON.parse(JSON.stringify(statusCollection));\n var nodeCollection = JSON.parse(JSON.stringify(statusCollection));\n var nodeSelection = new NodeSelection();\n var range = nodeSelection.getRange(docElement);\n var nodes = documentNode ? [documentNode] : range.collapsed ? nodeSelection.getNodeCollection(range) :\n nodeSelection.getSelectionNodeCollectionBr(range);\n var nodesLength = nodes.length;\n var isNodeChanged = false;\n for (var index = 0; index < nodes.length; index++) {\n while (nodes[index].nodeType === 3 && range.startContainer.nodeType === 3 && nodes[index].parentNode &&\n nodes[index].parentNode.lastElementChild && nodes[index].parentNode.lastElementChild.nodeName !== 'BR' &&\n (this.getImmediateBlockNode(nodes[index].parentNode)).textContent.replace(/\\u200B/g, '').length === 0 &&\n range.startContainer.textContent.replace(/\\u200B/g, '').length === 0 &&\n nodeSelection.get(docElement).toString().replace(/\\u200B/g, '').length === 0) {\n nodes[index] = nodes[index].parentNode.lastElementChild.firstChild;\n isNodeChanged = true;\n }\n if (isNodeChanged && nodes[index]) {\n nodeSelection.setCursorPoint(docElement, nodes[index], nodes[index].textContent.length);\n isNodeChanged = false;\n }\n if ((nodes[index].nodeName !== 'BR' && nodes[index].nodeType !== 3) ||\n (nodesLength > 1 && nodes[index].nodeType === 3 && nodes[index].textContent.trim() === '')) {\n nodes.splice(index, 1);\n index--;\n }\n }\n for (var index = 0; index < nodes.length; index++) {\n // eslint-disable-next-line max-len\n formatCollection = this.getFormatParent(docElement, formatCollection, nodes[index], rootNode, formatNode, fontSize, fontName);\n if ((index === 0 && formatCollection.bold) || !formatCollection.bold) {\n nodeCollection.bold = formatCollection.bold;\n }\n if ((index === 0 && formatCollection.insertcode) || !formatCollection.insertcode) {\n nodeCollection.insertcode = formatCollection.insertcode;\n }\n if ((index === 0 && formatCollection.italic) || !formatCollection.italic) {\n nodeCollection.italic = formatCollection.italic;\n }\n if ((index === 0 && formatCollection.underline) || !formatCollection.underline) {\n nodeCollection.underline = formatCollection.underline;\n }\n if ((index === 0 && formatCollection.strikethrough) || !formatCollection.strikethrough) {\n nodeCollection.strikethrough = formatCollection.strikethrough;\n }\n if ((index === 0 && formatCollection.superscript) || !formatCollection.superscript) {\n nodeCollection.superscript = formatCollection.superscript;\n }\n if ((index === 0 && formatCollection.subscript) || !formatCollection.subscript) {\n nodeCollection.subscript = formatCollection.subscript;\n }\n if ((index === 0 && formatCollection.fontcolor) || !formatCollection.fontcolor) {\n nodeCollection.fontcolor = formatCollection.fontcolor;\n }\n if (index === 0 && formatCollection.fontname) {\n nodeCollection.fontname = formatCollection.fontname;\n }\n else {\n nodeCollection.fontname = formatCollection.fontname === nodeCollection.fontname ? formatCollection.fontname : 'empty';\n }\n if (index === 0 && formatCollection.fontsize) {\n nodeCollection.fontsize = formatCollection.fontsize;\n }\n else {\n nodeCollection.fontsize = formatCollection.fontsize === nodeCollection.fontsize ? formatCollection.fontsize : 'empty';\n }\n if ((index === 0 && formatCollection.backgroundcolor) || !formatCollection.backgroundcolor) {\n nodeCollection.backgroundcolor = formatCollection.backgroundcolor;\n }\n if ((index === 0 && formatCollection.orderedlist) || !formatCollection.orderedlist) {\n nodeCollection.orderedlist = formatCollection.orderedlist;\n }\n if ((index === 0 && formatCollection.unorderedlist) || !formatCollection.unorderedlist) {\n nodeCollection.unorderedlist = formatCollection.unorderedlist;\n }\n if ((index === 0 && formatCollection.alignments) || !formatCollection.alignments) {\n nodeCollection.alignments = formatCollection.alignments;\n }\n if (index === 0 && formatCollection.formats) {\n nodeCollection.formats = formatCollection.formats;\n }\n else {\n nodeCollection.formats = formatCollection.formats === nodeCollection.formats ? formatCollection.formats : 'empty';\n }\n if ((index === 0 && formatCollection.createlink) || !formatCollection.createlink) {\n nodeCollection.createlink = formatCollection.createlink;\n }\n if ((index === 0 && formatCollection.numberFormatList) || !formatCollection.numberFormatList) {\n nodeCollection.numberFormatList = formatCollection.numberFormatList;\n }\n if ((index === 0 && formatCollection.bulletFormatList) || !formatCollection.bulletFormatList) {\n nodeCollection.bulletFormatList = formatCollection.bulletFormatList;\n }\n formatCollection = JSON.parse(JSON.stringify(statusCollection));\n }\n return nodeCollection;\n };\n ToolbarStatus.getImmediateBlockNode = function (node) {\n do {\n node = node.parentNode;\n } while (node && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);\n return node;\n };\n ToolbarStatus.getFormatParent = function (docElement, formatCollection, node, targetNode, formatNode, fontSize, fontName) {\n var isListUpdated = false;\n var isComplexListUpdated = false;\n if (targetNode.contains(node) ||\n (node.nodeType === 3 && targetNode.nodeType !== 3 && targetNode.contains(node.parentNode))) {\n do {\n formatCollection = this.isFormattedNode(docElement, formatCollection, node, isListUpdated, isComplexListUpdated, formatNode, fontSize, fontName);\n if (formatCollection.orderedlist || formatCollection.unorderedlist) {\n isListUpdated = true;\n }\n if (formatCollection.bulletFormatList || formatCollection.numberFormatList) {\n isComplexListUpdated = true;\n }\n node = node.parentNode;\n } while (node && (node !== targetNode));\n }\n return formatCollection;\n };\n ToolbarStatus.isFormattedNode = function (docElement, formatCollection, node, isListUpdated, isComplexListUpdated, formatNode, fontSize, fontName) {\n if (!formatCollection.bold) {\n formatCollection.bold = IsFormatted.isBold(node);\n }\n if (!formatCollection.italic) {\n formatCollection.italic = IsFormatted.isItalic(node);\n }\n if (!formatCollection.underline) {\n formatCollection.underline = IsFormatted.isUnderline(node);\n }\n if (!formatCollection.strikethrough) {\n formatCollection.strikethrough = IsFormatted.isStrikethrough(node);\n }\n if (!formatCollection.superscript) {\n formatCollection.superscript = IsFormatted.isSuperscript(node);\n }\n if (!formatCollection.subscript) {\n formatCollection.subscript = IsFormatted.isSubscript(node);\n }\n if (!formatCollection.fontcolor) {\n formatCollection.fontcolor = this.isFontColor(docElement, node);\n }\n if (!formatCollection.fontname) {\n formatCollection.fontname = this.isFontName(docElement, node, fontName);\n }\n if (!formatCollection.fontsize) {\n formatCollection.fontsize = this.isFontSize(docElement, node, fontSize);\n }\n if (!formatCollection.backgroundcolor) {\n formatCollection.backgroundcolor = this.isBackgroundColor(node);\n }\n if (!formatCollection.orderedlist && !isListUpdated) {\n formatCollection.orderedlist = this.isOrderedList(node);\n }\n if (!formatCollection.unorderedlist && !isListUpdated) {\n formatCollection.unorderedlist = this.isUnorderedList(node);\n }\n if (!formatCollection.alignments) {\n formatCollection.alignments = this.isAlignment(node);\n }\n if (!formatCollection.formats) {\n formatCollection.formats = this.isFormats(node, formatNode);\n if (formatCollection.formats === 'pre') {\n formatCollection.insertcode = true;\n }\n }\n if (!formatCollection.createlink) {\n formatCollection.createlink = this.isLink(node);\n }\n if (!formatCollection.numberFormatList && !isComplexListUpdated) {\n formatCollection.numberFormatList = this.isNumberFormatList(node);\n }\n if (!formatCollection.bulletFormatList && !isComplexListUpdated) {\n formatCollection.bulletFormatList = this.isBulletFormatList(node);\n }\n return formatCollection;\n };\n ToolbarStatus.isFontColor = function (docElement, node) {\n var color = node.style && node.style.color;\n if ((color === null || color === undefined || color === '') && node.nodeType !== 3) {\n color = this.getComputedStyle(docElement, node, 'color');\n }\n if (color !== null && color !== '' && color !== undefined) {\n return color;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isLink = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'a') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isBackgroundColor = function (node) {\n var backColor = node.style && node.style.backgroundColor;\n if (backColor !== null && backColor !== '' && backColor !== undefined) {\n return backColor;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFontSize = function (docElement, node, fontSize) {\n var size = node.style && node.style.fontSize;\n if ((size === null || size === undefined || size === '') && node.nodeType !== 3 &&\n node.parentElement.classList.contains('e-content')) {\n size = this.getComputedStyle(docElement, node, 'font-size');\n }\n if ((size !== null && size !== '' && size !== undefined)\n && (fontSize === null || fontSize === undefined || (fontSize.indexOf(size) > -1))) {\n return size;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFontName = function (docElement, node, fontName) {\n var name = node.style && node.style.fontFamily;\n if ((name === null || name === undefined || name === '') && node.nodeType !== 3) {\n name = this.getComputedStyle(docElement, node, 'font-family');\n }\n var index = null;\n if ((name !== null && name !== '' && name !== undefined)\n && (fontName === null || fontName === undefined || (fontName.filter(function (value, pos) {\n // eslint-disable-next-line\n var pattern = new RegExp(name, 'i');\n if ((value.replace(/\"/g, '').replace(/ /g, '').toLowerCase() === name.replace(/\"/g, '').replace(/ /g, '').toLowerCase()) ||\n (value.split(',')[0] && !isNullOrUndefined(value.split(',')[0].trim().match(pattern)) &&\n value.split(',')[0].trim() === value.split(',')[0].trim().match(pattern)[0])) {\n index = pos;\n }\n }) && (index !== null)))) {\n // eslint-disable-next-line\n return (index !== null) ? fontName[index] : name.replace(/\"/g, '');\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isOrderedList = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'ol') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isUnorderedList = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'ul') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isAlignment = function (node) {\n var align = node.style && node.style.textAlign;\n if (align === 'left') {\n return 'justifyleft';\n }\n else if (align === 'center') {\n return 'justifycenter';\n }\n else if (align === 'right') {\n return 'justifyright';\n }\n else if (align === 'justify') {\n return 'justifyfull';\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFormats = function (node, formatNode) {\n if (((formatNode === undefined || formatNode === null)\n && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) > -1)\n || (formatNode !== null && formatNode !== undefined\n && formatNode.indexOf(node.nodeName.toLocaleLowerCase()) > -1)) {\n return node.nodeName.toLocaleLowerCase();\n }\n else {\n return null;\n }\n };\n ToolbarStatus.getComputedStyle = function (docElement, node, prop) {\n return docElement.defaultView.getComputedStyle(node, null).getPropertyValue(prop);\n };\n ToolbarStatus.isNumberFormatList = function (node) {\n var list = node.style && node.style.listStyleType;\n if (list === 'lower-alpha') {\n return 'Lower Alpha';\n }\n else if (list === 'number') {\n return 'Number';\n }\n else if (list === 'upper-alpha') {\n return 'Upper Alpha';\n }\n else if (list === 'lower-roman') {\n return 'Lower Roman';\n }\n else if (list === 'upper-roman') {\n return 'Upper Roman';\n }\n else if (list === 'lower-greek') {\n return 'Lower Greek';\n }\n else if (list === 'none') {\n return 'None';\n }\n else if (this.isOrderedList(node)) {\n return true;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isBulletFormatList = function (node) {\n var list = node.style && node.style.listStyleType;\n if (list === 'circle') {\n return 'Circle';\n }\n else if (list === 'square') {\n return 'Square';\n }\n else if (list === 'none') {\n return 'None';\n }\n else if (list === 'disc') {\n return 'Disc';\n }\n else if (this.isUnorderedList(node)) {\n return true;\n }\n else {\n return null;\n }\n };\n return ToolbarStatus;\n}());\nexport { ToolbarStatus };\n","import { addClass, Browser, removeClass, formatUnit, isNullOrUndefined, isNullOrUndefined as isNOU, EventHandler } from '@syncfusion/ej2-base';\nimport { getInstance, closest, selectAll } from '@syncfusion/ej2-base';\nimport { Toolbar } from '@syncfusion/ej2-navigations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Popup, Tooltip } from '@syncfusion/ej2-popups';\nimport * as classes from '../base/classes';\nimport * as events from '../base/constant';\nimport { CLS_TOOLBAR, CLS_DROPDOWN_BTN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_INLINE_DROPDOWN, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_BULLETFORMATLIST_TB_BTN, CLS_NUMBERFORMATLIST_TB_BTN, CLS_LIST_PRIMARY_CONTENT } from '../base/classes';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { hasClass } from '../base/util';\nimport { ToolbarStatus } from '../../editor-manager/plugin/toolbar-status';\n/**\n * `Toolbar renderer` module is used to render toolbar in RichTextEditor.\n *\n * @hidden\n\n */\nvar ToolbarRenderer = /** @class */ (function () {\n /**\n * Constructor for toolbar renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function ToolbarRenderer(parent, serviceLocator) {\n this.parent = parent;\n if (serviceLocator) {\n this.l10n = serviceLocator.getService('rteLocale');\n }\n this.wireEvent();\n }\n ToolbarRenderer.prototype.wireEvent = function () {\n this.parent.on(events.destroy, this.unWireEvent, this);\n this.parent.on(events.destroyTooltip, this.destroyTooltip, this);\n this.parent.on(events.closeTooltip, this.closeTooltip, this);\n };\n ToolbarRenderer.prototype.destroyTooltip = function () {\n var currentDocument = this.parent.iframeSettings.enable ? this.parent.contentModule.getPanel().ownerDocument :\n this.parent.contentModule.getDocument();\n if (!isNullOrUndefined(currentDocument.querySelector('.e-tooltip-wrap')) && !isNullOrUndefined(currentDocument.querySelector('[data-tooltip-id]'))) {\n var tooltipTargetEle = currentDocument.querySelector('[data-tooltip-id]');\n var event_1 = new MouseEvent('mouseleave', { bubbles: true, cancelable: true });\n tooltipTargetEle.dispatchEvent(event_1);\n }\n };\n ToolbarRenderer.prototype.unWireEvent = function () {\n this.parent.off(events.destroy, this.unWireEvent);\n this.parent.off(events.destroyTooltip, this.destroyTooltip);\n this.parent.off(events.closeTooltip, this.closeTooltip);\n };\n ToolbarRenderer.prototype.toolbarBeforeCreate = function (e) {\n if (this.mode === 'Extended') {\n e.enableCollision = false;\n }\n };\n ToolbarRenderer.prototype.toolbarCreated = function () {\n this.parent.notify(events.toolbarCreated, this);\n };\n ToolbarRenderer.prototype.toolbarClicked = function (args) {\n if (!this.parent.enabled) {\n return;\n }\n this.parent.trigger('toolbarClick', args);\n if (!this.parent.readonly || isNullOrUndefined(args.item)) {\n this.parent.notify(events.toolbarClick, args);\n }\n };\n ToolbarRenderer.prototype.dropDownSelected = function (args) {\n this.parent.notify(events.dropDownSelect, { element: args.element, item: args.item, originalEvent: args.event });\n this.destroyTooltip();\n };\n ToolbarRenderer.prototype.beforeDropDownItemRender = function (args) {\n if (this.parent.readonly || !this.parent.enabled) {\n return;\n }\n this.parent.notify(events.beforeDropDownItemRender, args);\n };\n ToolbarRenderer.prototype.tooltipBeforeRender = function (args) {\n if (!isNOU(args.target.getAttribute('title'))) {\n var tooltipTarget = args.target.getAttribute('title');\n var tooltipText = void 0;\n switch (tooltipTarget) {\n case 'Minimize':\n tooltipText = this.l10n.getConstant('minimize');\n args.target.setAttribute('title', tooltipText + ' (Esc)');\n break;\n case 'Maximize':\n tooltipText = this.l10n.getConstant('maximize');\n args.target.setAttribute('title', tooltipText + ' (Ctrl+Shift+F)');\n break;\n }\n }\n if (args.target.querySelector('.e-active')) {\n args.cancel = true;\n }\n };\n ToolbarRenderer.prototype.dropDownOpen = function (args) {\n if (args.element.parentElement.getAttribute('id').indexOf('TableCell') > -1 && !isNOU(args.element.parentElement.querySelector('.e-cell-merge')) &&\n (!isNOU(args.element.parentElement.querySelector('.e-cell-horizontal-split')) || !isNOU(args.element.parentElement.querySelector('.e-cell-vertical-split')))) {\n var listEle = args.element.querySelectorAll('li');\n var selectedEles_1 = this.parent.inputElement.querySelectorAll('.e-cell-select');\n if (selectedEles_1.length === 1) {\n addClass([listEle[0]], 'e-disabled');\n removeClass([listEle[1], listEle[2]], 'e-disabled');\n }\n else if (selectedEles_1.length > 1) {\n if (!Array.from(selectedEles_1).every(function (element) {\n return element.tagName.toLowerCase() === selectedEles_1[0].tagName.toLowerCase();\n })) {\n addClass([listEle[0]], 'e-disabled');\n }\n else {\n removeClass([listEle[0]], 'e-disabled');\n }\n addClass([listEle[1], listEle[2]], 'e-disabled');\n }\n }\n this.parent.notify(events.selectionSave, args);\n };\n ToolbarRenderer.prototype.dropDownClose = function (args) {\n this.parent.notify(events.selectionRestore, args);\n };\n /**\n * renderToolbar method\n *\n * @param {IToolbarOptions} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderToolbar = function (args) {\n this.setPanel(args.target);\n this.renderPanel();\n this.mode = args.overflowMode;\n args.rteToolbarObj.toolbarObj = new Toolbar({\n items: args.items,\n width: '100%',\n overflowMode: args.overflowMode,\n beforeCreate: this.toolbarBeforeCreate.bind(this),\n created: this.toolbarCreated.bind(this),\n clicked: this.toolbarClicked.bind(this),\n enablePersistence: args.enablePersistence,\n enableRtl: args.enableRtl,\n cssClass: args.cssClass\n });\n args.rteToolbarObj.toolbarObj.isStringTemplate = true;\n args.rteToolbarObj.toolbarObj.createElement = this.parent.createElement;\n args.rteToolbarObj.toolbarObj.appendTo(args.target);\n if (this.parent.showTooltip) {\n this.tooltip = new Tooltip({\n target: '#' + this.parent.getID() + '_toolbar_wrapper [title]',\n showTipPointer: true,\n openDelay: 400,\n opensOn: 'Hover',\n beforeRender: this.tooltipBeforeRender.bind(this),\n cssClass: this.parent.getCssClass(),\n windowCollision: true,\n position: 'BottomCenter'\n });\n this.tooltip.appendTo(args.target.parentElement);\n }\n };\n /**\n * renderDropDownButton method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderDropDownButton = function (args) {\n var _this = this;\n var css;\n args.element.classList.add(CLS_DROPDOWN_BTN);\n css = args.cssClass + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN;\n if (this.parent.inlineMode.enable && Browser.isDevice) {\n css = css + ' ' + CLS_INLINE_DROPDOWN;\n }\n // eslint-disable-next-line\n var proxy = this;\n var dropDown = new DropDownButton({\n items: args.items,\n iconCss: args.iconCss,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n // eslint-disable-next-line\n // Table styles dropdown preselect\n if (proxy.parent.editorMode !== 'Markdown') {\n var startNode = proxy.parent.getRange().startContainer.parentElement;\n var tableEle = startNode.closest('table');\n var trow = startNode.closest('tr');\n if (!isNOU(tableEle) && tableEle.classList.contains('e-dashed-border')) {\n for (var index = 0; index < args.element.childNodes.length; index++) {\n if (args.element.childNodes[index].classList.contains('e-dashed-borders')) {\n addClass([args.element.childNodes[index]], 'e-active');\n }\n }\n }\n else if (!isNOU(tableEle) && !tableEle.classList.contains('e-dashed-border') && tableEle.classList.contains('e-alternate-rows') && window.getComputedStyle(trow).backgroundColor !== '') {\n for (var index = 0; index < args.element.childNodes.length; index++) {\n if (args.element.childNodes[index].classList.contains('e-alternate-rows')) {\n addClass([args.element.childNodes[index]], 'e-active');\n }\n }\n }\n //Alignments preselect\n var alignEle = proxy.parent.getRange().startContainer;\n while (alignEle !== proxy.parent.inputElement && !isNOU(alignEle.parentElement)) {\n if (alignEle.nodeName === '#text') {\n alignEle = alignEle.parentElement;\n }\n var alignStyle = window.getComputedStyle(alignEle).textAlign;\n if (args.items[0].command === 'Alignments') {\n if ((args.items[0].text === 'Align Left' && (alignStyle === 'left') || alignStyle === 'start')) {\n addClass([args.element.childNodes[0]], 'e-active');\n break;\n }\n else if (args.items[1].text === 'Align Center' && alignStyle === 'center') {\n addClass([args.element.childNodes[1]], 'e-active');\n break;\n }\n else if (args.items[2].text === 'Align Right' && alignStyle === 'right') {\n addClass([args.element.childNodes[2]], 'e-active');\n break;\n }\n else if (args.items[3].text === 'Align Justify' && alignStyle === 'justify') {\n addClass([args.element.childNodes[3]], 'e-active');\n break;\n }\n }\n alignEle = alignEle.parentElement;\n }\n //image preselect\n var closestNode = startNode.closest('img');\n var imageEle = closestNode ? closestNode : startNode.querySelector('img');\n if (args.items[0].command === 'Images') {\n if (!isNOU(imageEle)) {\n var index = void 0;\n if (imageEle.classList.contains('e-imgleft') || imageEle.classList.contains('e-imginline')) {\n index = 0;\n }\n else if (imageEle.classList.contains('e-imgcenter') || imageEle.classList.contains('e-imgbreak')) {\n index = 1;\n }\n else if (imageEle.classList.contains('e-imgright')) {\n index = 2;\n }\n if (!isNOU(args.element.childNodes[index])) {\n addClass([args.element.childNodes[index]], 'e-active');\n }\n }\n }\n //Formats preselect\n if (args.items[0].command === 'Formats' || args.items[0].command === 'Font') {\n var fontName_1 = [];\n var formats_1 = [];\n _this.parent.format.types.forEach(function (item) {\n formats_1.push(item.value.toLocaleLowerCase());\n });\n _this.parent.fontFamily.items.forEach(function (item) {\n fontName_1.push(item.value);\n });\n var toolbarStatus = ToolbarStatus.get(_this.parent.contentModule.getDocument(), _this.parent.contentModule.getEditPanel(), formats_1, null, fontName_1);\n for (var index = 0; index < args.element.childNodes.length; index++) {\n var divNode = _this.parent.createElement('div');\n divNode.innerHTML = dropDown.content.trim();\n if ((divNode.textContent.trim() !== ''\n && args.element.childNodes[index].textContent.trim() === divNode.textContent.trim()) ||\n ((args.items[0].command === 'Formats' && !isNOU(toolbarStatus.formats) && _this.parent.format.types[index].value.toLowerCase() === toolbarStatus.formats.toLowerCase() && args.element.childNodes[index].classList.contains(_this.parent.format.types[index].cssClass))\n || (args.items[0].command === 'Font' && !isNOU(toolbarStatus.fontname) && _this.parent.fontFamily.items[index].value.toLowerCase() === toolbarStatus.fontname.toLowerCase() && args.element.childNodes[index].classList.contains(_this.parent.fontFamily.items[index].cssClass)))) {\n if (!args.element.childNodes[index].classList.contains('e-active')) {\n addClass([args.element.childNodes[index]], 'e-active');\n }\n }\n else {\n removeClass([args.element.childNodes[index]], 'e-active');\n }\n }\n }\n }\n proxy.parent.notify(events.beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n return dropDown;\n };\n ToolbarRenderer.prototype.mouseOutHandler = function () {\n if (!isNOU(this.tooltipTargetEle)) {\n this.tooltipTargetEle.setAttribute('title', this.tooltipTargetEle.getAttribute('data-title'));\n }\n else {\n var currentDocument = this.parent.iframeSettings.enable ? this.parent.contentModule.getPanel().ownerDocument :\n this.parent.contentModule.getDocument();\n this.tooltipTargetEle = currentDocument.querySelector('[data-title]');\n this.tooltipTargetEle.setAttribute('title', this.tooltipTargetEle.getAttribute('data-title'));\n }\n this.tooltipTargetEle.removeAttribute('data-title');\n EventHandler.remove(this.tooltipTargetEle, 'mouseout', this.mouseOutHandler);\n };\n ToolbarRenderer.prototype.closeTooltip = function (args) {\n var currentDocument = this.parent.iframeSettings.enable ? this.parent.contentModule.getPanel().ownerDocument :\n this.parent.contentModule.getDocument();\n this.tooltipTargetEle = closest(args.target, '[data-tooltip-id]');\n if (!isNOU(this.tooltipTargetEle) && this.parent.showTooltip && !isNOU(currentDocument.querySelector('.e-tooltip-wrap'))) {\n this.destroyTooltip();\n if (!this.tooltipTargetEle.closest('.e-rte-quick-popup')) {\n this.tooltipTargetEle.setAttribute('data-title', this.tooltipTargetEle.getAttribute('title'));\n this.tooltipTargetEle.removeAttribute('title');\n EventHandler.add(this.tooltipTargetEle, 'mouseout', this.mouseOutHandler, this);\n }\n }\n };\n /**\n * renderListDropDown method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderListDropDown = function (args) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((args.itemName === 'NumberFormatList') ? CLS_NUMBERFORMATLIST_TB_BTN : CLS_BULLETFORMATLIST_TB_BTN));\n var content = proxy.parent.createElement('span', { className: CLS_LIST_PRIMARY_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n items: args.items,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.editorMode !== 'Markdown') {\n var startNode = proxy.parent.getRange().startContainer.parentElement;\n var listElem = startNode.closest('LI');\n var currentLiElem = !isNOU(listElem) ? listElem.parentElement : null;\n if (!isNOU(currentLiElem) && (currentLiElem.nodeName === 'OL' || currentLiElem.nodeName === 'UL')) {\n if (currentLiElem.nodeName === 'UL' && args.items[0].subCommand === 'NumberFormatList') {\n addClass([args.element.childNodes[0]], 'e-active');\n }\n else if (currentLiElem.nodeName === 'OL' && args.items[0].subCommand === 'BulletFormatList') {\n addClass([args.element.childNodes[0]], 'e-active');\n }\n else {\n var currentListStyle = currentLiElem.style.listStyleType.split('-').join('').toLocaleLowerCase();\n currentListStyle = currentListStyle === 'decimal' ? 'number' : currentListStyle;\n for (var index = 0; index < args.element.childNodes.length; index++) {\n if (currentListStyle === args.element.childNodes[index].innerHTML.split(' ').join('').toLocaleLowerCase()) {\n addClass([args.element.childNodes[index]], 'e-active');\n break;\n }\n else if (currentListStyle === '' && args.element.childNodes[index].innerHTML !== 'None') {\n addClass([args.element.childNodes[index]], 'e-active');\n break;\n }\n }\n }\n }\n else {\n addClass([args.element.childNodes[0]], 'e-active');\n }\n }\n _this.closeTooltip({ target: args.event.target });\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n proxy.parent.notify(events.selectionRestore, {});\n var element = (args.event) ? args.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n if (args.event && args.event.type === 'click' && (element.classList.contains(CLS_LIST_PRIMARY_CONTENT)\n || element.parentElement.classList.contains(CLS_LIST_PRIMARY_CONTENT))) {\n args.cancel = true;\n return;\n }\n proxy.parent.notify(events.beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n args.element.setAttribute('role', 'button');\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n if (args.element.childElementCount === 1) {\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n }\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n dropDown.element.onmousedown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n dropDown.element.onkeydown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n return dropDown;\n };\n ToolbarRenderer.prototype.paletteSelection = function (dropDownArgs, currentElement) {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var colorbox = [].slice.call(selectAll('.e-tile', ele.parentElement));\n removeClass(colorbox, 'e-selected');\n var style = currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n (colorbox.filter(function (colorbox) {\n if (colorbox.style.backgroundColor === style) {\n addClass([colorbox], 'e-selected');\n }\n }));\n };\n /**\n * renderColorPickerDropDown method\n *\n * @param {IColorPickerModel} args - specifies the arguments.\n * @param {string} item - specifies the item.\n * @param {ColorPicker} colorPicker - specifies the colorpicker.\n * @param {string} defaultColor -specifies the defaultColor.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderColorPickerDropDown = function (args, item, colorPicker, defaultColor) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_DROPDOWN : CLS_FONT_COLOR_DROPDOWN));\n css += this.parent.getCssClass(true);\n var content = proxy.parent.createElement('span', { className: CLS_COLOR_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n var range;\n var initialBackgroundColor = (isNullOrUndefined(defaultColor)) ? proxy.parent.backgroundColor.default : defaultColor;\n inlineEle.style.borderBottomColor = (item === 'backgroundcolor') ?\n initialBackgroundColor : proxy.parent.fontColor.default;\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n target: colorPicker.element.parentElement, cssClass: css,\n enablePersistence: this.parent.enablePersistence, enableRtl: this.parent.enableRtl,\n beforeOpen: function (dropDownArgs) {\n colorPicker.inline = true;\n colorPicker.dataBind();\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n dropDownArgs.cancel = true;\n return;\n }\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n proxy.paletteSelection(dropDownArgs, proxy.currentElement);\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n dropDownArgs.cancel = true;\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n proxy.parent.notify(events.selectionRestore, {});\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n var parentNode = range.startContainer.parentNode;\n var closestElement = closest(range.startContainer.parentNode, 'table');\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n (closest(range.startContainer.parentNode, 'td,th')) ||\n (proxy.parent.iframeSettings.enable && !hasClass(parentNode.ownerDocument.querySelector('body'), 'e-lib')))\n && range.collapsed && args.subCommand === 'BackgroundColor' && closest(closestElement, '.' + classes.CLS_RTE)) {\n proxy.parent.notify(events.tableColorPickerChanged, {\n item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n else {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var inst = getInstance(ele, ColorPicker);\n inst.showButtons = (dropDownArgs.element.querySelector('.e-color-palette')) ? false : true;\n inst.dataBind();\n }\n dropDownArgs.element.onclick = function (args) {\n if (args.target.classList.contains('e-cancel')) {\n dropDown.toggle();\n }\n };\n },\n open: function (dropDownArgs) {\n _this.setColorPickerContentWidth(colorPicker);\n var focusEle;\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n if (dropDownArgs.element.querySelector('.e-color-palette')) {\n focusEle = ele.parentElement.querySelector('.e-palette');\n }\n else {\n focusEle = ele.parentElement.querySelector('e-handler');\n }\n if (focusEle) {\n focusEle.focus();\n }\n _this.pickerRefresh(dropDownArgs);\n },\n beforeClose: function (dropDownArgs) {\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed) {\n proxy.parent.notify(events.tableColorPickerChanged, { item: {\n command: args.command, subCommand: args.subCommand,\n value: colorpickerValue\n }\n });\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n },\n close: function (dropDownArgs) {\n proxy.parent.notify(events.selectionRestore, {});\n }\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n args.element.setAttribute('role', 'button');\n dropDown.appendTo(args.element);\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n dropDown.element.onmousedown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n dropDown.element.onkeydown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n return dropDown;\n };\n ToolbarRenderer.prototype.pickerRefresh = function (dropDownArgs) {\n if (this.parent.backgroundColor.mode === 'Picker') {\n var popupElem = dropDownArgs.element.parentElement;\n popupElem.style.width = (popupElem.offsetWidth + 5).toString() + 'px';\n getInstance(popupElem, Popup).refreshPosition(popupElem);\n popupElem.style.width = (popupElem.offsetWidth - 5).toString() + 'px';\n }\n };\n ToolbarRenderer.prototype.setColorPickerContentWidth = function (colorPicker) {\n var colorPickerContent = colorPicker.element.nextSibling;\n if (colorPickerContent.style.width === '0px') {\n colorPickerContent.style.width = '';\n var borderWidth = parseInt(getComputedStyle(colorPickerContent).borderBottomWidth, 10);\n colorPickerContent.style.width = formatUnit(colorPickerContent.children[0].offsetWidth\n + borderWidth + borderWidth);\n }\n };\n /**\n * renderColorPicker method\n *\n * @param {IColorPickerModel} args - specifies the arguments\n * @param {string} item - specifies the string values\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderColorPicker = function (args, item) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var value;\n var colorPicker = new ColorPicker({\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n inline: false,\n value: '#fff',\n created: function () {\n var value = (item === 'backgroundcolor') ? proxy.parent.backgroundColor.default : proxy.parent.fontColor.default;\n colorPicker.setProperties({ value: value });\n },\n mode: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.mode : proxy.parent.fontColor.mode),\n modeSwitcher: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.modeSwitcher : proxy.parent.fontColor.modeSwitcher),\n beforeTileRender: function (args) {\n args.element.classList.add(CLS_COLOR_PALETTE);\n args.element.classList.add(CLS_CUSTOM_TILE);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.getCssClass().split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n args.element.classList.add(allClassName[i]);\n }\n }\n }\n if (args.value === '') {\n args.element.classList.add(CLS_NOCOLOR_ITEM);\n }\n },\n change: function (colorPickerArgs) {\n var colorpickerValue = colorPickerArgs.currentValue.rgba;\n colorPickerArgs.item = {\n command: args.command,\n subCommand: args.subCommand,\n value: colorpickerValue\n };\n proxy.parent.notify(events.selectionRestore, {});\n proxy.currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor = colorpickerValue;\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n var closestElement = closest(range.startContainer.parentNode, 'table');\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' || range.startContainer.nodeName === 'BODY' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed && args.subCommand === 'BackgroundColor' && closest(closestElement, '.' + classes.CLS_RTE)) {\n proxy.parent.notify(events.tableColorPickerChanged, colorPickerArgs);\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, colorPickerArgs);\n }\n proxy.currentDropdown.toggle();\n },\n beforeModeSwitch: function (args) {\n value = colorPicker.value;\n if (value === '') {\n colorPicker.setProperties({ value: ((args.mode === 'Picker') ? '#008000ff' : '') }, true);\n }\n colorPicker.showButtons = args.mode === 'Palette' ? false : true;\n }\n });\n colorPicker.isStringTemplate = true;\n colorPicker.columns = (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns;\n colorPicker.presetColors = (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode :\n this.parent.fontColor.colorCode;\n colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;\n colorPicker.createElement = this.parent.createElement;\n colorPicker.appendTo(document.getElementById(args.target));\n return colorPicker;\n };\n /**\n * The function is used to render Rich Text Editor toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderPanel = function () {\n this.getPanel().classList.add(CLS_TOOLBAR);\n };\n /**\n * Get the toolbar element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n ToolbarRenderer.prototype.getPanel = function () {\n return this.toolbarPanel;\n };\n /**\n * Set the toolbar element of RichTextEditor\n *\n * @returns {void}\n * @param {Element} panel - specifies the element.\n * @hidden\n\n */\n ToolbarRenderer.prototype.setPanel = function (panel) {\n this.toolbarPanel = panel;\n };\n return ToolbarRenderer;\n}());\nexport { ToolbarRenderer };\n","import { addClass, isNullOrUndefined, removeClass, select, closest } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport { getIndex } from '../base/util';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { getDropDownValue, getFormattedFontSize, getTooltipText } from '../base/util';\nimport * as model from '../models/items';\nimport { dispatchEvent } from '../base/util';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar DropDownButtons = /** @class */ (function () {\n function DropDownButtons(parent, serviceLocator) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n DropDownButtons.prototype.initializeInstance = function () {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n };\n DropDownButtons.prototype.beforeRender = function (args) {\n var item = args.item;\n if (item.cssClass) {\n addClass([args.element], item.cssClass);\n }\n if (item.command === 'Alignments' || item.subCommand === 'JustifyLeft'\n || item.subCommand === 'JustifyRight' || item.subCommand === 'JustifyCenter') {\n args.element.setAttribute('title', getTooltipText(item.subCommand.toLocaleLowerCase(), this.locator));\n }\n };\n DropDownButtons.prototype.dropdownContent = function (width, type, content) {\n return ('' +\n '' + content + '');\n };\n /**\n * renderDropDowns method\n *\n * @param {IDropDownRenderArgs} args - specifies the arguments\n * @returns {void}\n * @hidden\n\n */\n DropDownButtons.prototype.renderDropDowns = function (args) {\n var _this = this;\n this.initializeInstance();\n var type = args.containerType;\n var tbElement = args.container;\n model.templateItems.forEach(function (item) {\n var targetElement = undefined;\n if (getIndex(item, args.items) !== -1) {\n switch (item) {\n case 'numberformatlist': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_NumberFormatList', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatOLItem = _this.parent.numberFormatList.types.slice();\n formatOLItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Lists', enumerable: true }, subCommand: { value: 'NumberFormatList', enumerable: true }\n });\n });\n _this.numberFormatListDropDown = _this.toolbarRenderer.renderListDropDown({\n cssClass: 'e-order-list' + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS,\n itemName: 'NumberFormatList', items: formatOLItem, element: targetElement\n });\n break;\n }\n case 'bulletformatlist': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_BulletFormatList', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatULItem = _this.parent.bulletFormatList.types.slice();\n formatULItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Lists', enumerable: true }, subCommand: { value: 'BulletFormatList', enumerable: true }\n });\n });\n _this.bulletFormatListDropDown = _this.toolbarRenderer.renderListDropDown({\n cssClass: 'e-unorder-list' + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS,\n itemName: 'BulletFormatList', items: formatULItem, element: targetElement\n });\n break;\n }\n case 'formats': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_Formats', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatItem = _this.parent.format.types.slice();\n formatItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Formats', enumerable: true }, subCommand: { value: item.value, enumerable: true }\n });\n });\n var formatContent = isNullOrUndefined(_this.parent.format.default) ? formatItem[0].text :\n _this.parent.format.default;\n _this.formatDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: ((type === 'quick') ? 'e-formats e-icons' : ''),\n content: _this.dropdownContent(_this.parent.format.width, type, ((type === 'quick') ? '' : getDropDownValue(formatItem, formatContent, 'text', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FORMATS_TB_BTN,\n itemName: 'Formats', items: formatItem, element: targetElement\n });\n break;\n }\n case 'fontname': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_FontName', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var fontItem = _this.parent.fontFamily.items.slice();\n fontItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontName', enumerable: true }\n });\n });\n var fontNameContent = isNullOrUndefined(_this.parent.fontFamily.default) ? fontItem[0].text :\n _this.parent.fontFamily.default;\n _this.fontNameDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: ((type === 'quick') ? 'e-font-name e-icons' : ''),\n content: _this.dropdownContent(_this.parent.fontFamily.width, type, ((type === 'quick') ? '' : getDropDownValue(fontItem, fontNameContent, 'text', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FONT_NAME_TB_BTN,\n itemName: 'FontName', items: fontItem, element: targetElement\n });\n if (!isNullOrUndefined(_this.parent.fontFamily.default)) {\n _this.getEditNode().style.fontFamily = _this.parent.fontFamily.default;\n }\n break;\n }\n case 'fontsize': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_FontSize', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var fontsize = !isNullOrUndefined(_this.fontSizeDropDown) && !isNullOrUndefined(_this.fontSizeDropDown.items) && _this.fontSizeDropDown.items.length > 0 ? _this.fontSizeDropDown.items : JSON.parse(JSON.stringify(_this.parent.fontSize.items.slice()));\n fontsize.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontSize', enumerable: true }\n });\n });\n var fontSizeContent = isNullOrUndefined(_this.parent.fontSize.default) ? fontsize[1].text :\n _this.parent.fontSize.default;\n _this.fontSizeDropDown = _this.toolbarRenderer.renderDropDownButton({\n content: _this.dropdownContent(_this.parent.fontSize.width, type, getFormattedFontSize(getDropDownValue(fontsize, fontSizeContent.replace(/\\s/g, ''), 'value', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FONT_SIZE_TB_BTN,\n itemName: 'FontSize', items: fontsize, element: targetElement\n });\n if (!isNullOrUndefined(_this.parent.fontSize.default)) {\n _this.getEditNode().style.fontSize = _this.parent.fontSize.default;\n }\n break;\n }\n case 'alignments':\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_Alignments', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n _this.alignDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-justify-left e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_ALIGN_TB_BTN,\n itemName: 'Alignments', items: model.alignmentItems, element: targetElement\n });\n break;\n case 'align':\n case 'videoalign':\n _this.renderAlignmentDropDown(type, tbElement, targetElement, item);\n break;\n case 'display':\n case 'audiolayoutoption':\n case 'videolayoutoption':\n _this.renderDisplayDropDown(type, tbElement, targetElement, item);\n break;\n case 'tablerows':\n _this.rowDropDown(type, tbElement, targetElement);\n break;\n case 'tablecolumns':\n _this.columnDropDown(type, tbElement, targetElement);\n break;\n case 'tablecell':\n _this.cellDropDown(type, tbElement, targetElement);\n break;\n case 'tablecellverticalalign':\n _this.verticalAlignDropDown(type, tbElement, targetElement);\n break;\n case 'styles':\n _this.tableStylesDropDown(type, tbElement, targetElement);\n break;\n }\n }\n });\n if (this.parent.inlineMode.enable) {\n this.setCssClass({ cssClass: this.parent.getCssClass() });\n }\n };\n DropDownButtons.prototype.getUpdateItems = function (items, value) {\n var dropDownItems = items.slice();\n dropDownItems.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: (value === 'Format' ? 'Formats' : 'Font'), enumerable: true },\n subCommand: { value: (value === 'Format' ? item.value : value), enumerable: true }\n });\n });\n return dropDownItems;\n };\n DropDownButtons.prototype.onPropertyChanged = function (model) {\n var newProp = model.newProp;\n var type;\n var content;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'fontFamily':\n if (this.fontNameDropDown) {\n for (var _b = 0, _c = Object.keys(newProp.fontFamily); _b < _c.length; _b++) {\n var fontFamily = _c[_b];\n switch (fontFamily) {\n case 'default':\n case 'width': {\n var fontItems = this.fontNameDropDown.items;\n type = !isNullOrUndefined(closest(this.fontNameDropDown.element, '.' + classes.CLS_QUICK_TB)) ?\n 'quick' : 'toolbar';\n var fontNameContent = isNullOrUndefined(this.parent.fontFamily.default) ? fontItems[0].text :\n this.parent.fontFamily.default;\n content = this.dropdownContent(this.parent.fontFamily.width, type, ((type === 'quick') ? '' : getDropDownValue(fontItems, fontNameContent, 'text', 'text')));\n this.fontNameDropDown.setProperties({ content: content });\n if (!isNullOrUndefined(this.parent.fontFamily.default)) {\n this.getEditNode().style.fontFamily = this.parent.fontFamily.default;\n }\n else {\n this.getEditNode().style.removeProperty('font-family');\n }\n break;\n }\n case 'items':\n this.fontNameDropDown.setProperties({\n items: this.getUpdateItems(newProp.fontFamily.items, 'FontName')\n });\n break;\n }\n }\n }\n break;\n case 'fontSize':\n if (this.fontSizeDropDown) {\n for (var _d = 0, _e = Object.keys(newProp.fontSize); _d < _e.length; _d++) {\n var fontSize = _e[_d];\n switch (fontSize) {\n case 'default':\n case 'width': {\n var fontsize = this.fontSizeDropDown.items;\n type = !isNullOrUndefined(closest(this.fontSizeDropDown.element, '.' + classes.CLS_QUICK_TB)) ? 'quick' : 'toolbar';\n var fontSizeContent = isNullOrUndefined(this.parent.fontSize.default) ? fontsize[1].text :\n this.parent.fontSize.default;\n content = this.dropdownContent(this.parent.fontSize.width, type, getFormattedFontSize(getDropDownValue(fontsize, fontSizeContent.replace(/\\s/g, ''), 'value', 'text')));\n this.fontSizeDropDown.setProperties({ content: content });\n if (!isNullOrUndefined(this.parent.fontSize.default)) {\n this.getEditNode().style.fontSize = this.parent.fontSize.default;\n }\n else {\n this.getEditNode().style.removeProperty('font-size');\n }\n break;\n }\n case 'items':\n this.fontSizeDropDown.setProperties({\n items: this.getUpdateItems(newProp.fontSize.items, 'FontSize')\n });\n break;\n }\n }\n }\n break;\n case 'format':\n if (this.formatDropDown) {\n for (var _f = 0, _g = Object.keys(newProp.format); _f < _g.length; _f++) {\n var format = _g[_f];\n switch (format) {\n case 'default':\n case 'width': {\n var formatItems = this.formatDropDown.items;\n type = !isNullOrUndefined(closest(this.formatDropDown.element, '.' + classes.CLS_QUICK_TB)) ? 'quick' : 'toolbar';\n var formatContent = isNullOrUndefined(this.parent.format.default) ? formatItems[0].text :\n this.parent.format.default;\n content = this.dropdownContent(this.parent.format.width, type, ((type === 'quick') ? '' : getDropDownValue(formatItems, formatContent, 'text', 'text')));\n this.formatDropDown.setProperties({ content: content });\n break;\n }\n case 'types':\n this.formatDropDown.setProperties({\n items: this.getUpdateItems(newProp.format.types, 'Format')\n });\n break;\n }\n }\n }\n break;\n }\n }\n };\n DropDownButtons.prototype.getEditNode = function () {\n return this.parent.contentModule.getEditPanel();\n };\n DropDownButtons.prototype.rowDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableRows', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableRowsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-rows e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableRows',\n items: model.tableRowsItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.columnDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableColumns', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableColumnsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-columns e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableColumns',\n items: model.tableColumnsItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.cellDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableCell', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableCellDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-cell e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableCell',\n items: model.tableCellItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.verticalAlignDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableCellVerticalAlign', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableCellVerticalAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-cell-ver-align e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableCellVerticalAlign',\n items: model.TableCellVerticalAlignItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.renderDisplayDropDown = function (type, tbElement, targetElement, item) {\n targetElement = select('#' + this.parent.getID() + '_' + type + (item === 'display' ? '_Display' : item === 'videolayoutoption' ? '_VideoLayoutOption' : '_AudioLayoutOption'), tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.displayDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: item === 'display' ? 'e-display e-icons' : item === 'videolayoutoption' ? 'e-video-display e-icons' : 'e-audio-display e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: item === 'display' ? 'Display' : item === 'videolayoutoption' ? 'VideoLayoutOption' : 'AudioLayoutOption',\n items: item === 'display' ? model.imageDisplayItems : item === 'videolayoutoption' ? model.videoLayoutOptionItems : model.audioLayoutOptionItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.renderAlignmentDropDown = function (type, tbElement, targetElement, item) {\n targetElement = select('#' + this.parent.getID() + '_' + type + (item === 'align' ? '_Align' : '_VideoAlign'), tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.imageAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-justify-left e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ICONS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: item === 'align' ? 'Align' : 'VideoAlign',\n items: item === 'align' ? model.imageAlignItems : model.videoAlignItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.tableStylesDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_Styles', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.imageAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-style e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ICONS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'Styles',\n items: this.parent.tableSettings.styles,\n element: targetElement\n });\n };\n DropDownButtons.prototype.removeDropDownClasses = function (target) {\n removeClass([target], [\n classes.CLS_DROPDOWN_BTN,\n classes.CLS_DROPDOWN_POPUP,\n classes.CLS_DROPDOWN_ICONS,\n classes.CLS_DROPDOWN_ITEMS\n ]);\n };\n /**\n * destroyDropDowns method\n *\n * @returns {void}\n * @hidden\n\n */\n DropDownButtons.prototype.destroyDropDowns = function () {\n if (this.formatDropDown) {\n this.removeDropDownClasses(this.formatDropDown.element);\n this.formatDropDown.destroy();\n }\n if (this.fontNameDropDown) {\n this.removeDropDownClasses(this.fontNameDropDown.element);\n this.fontNameDropDown.destroy();\n }\n if (this.fontSizeDropDown) {\n this.removeDropDownClasses(this.fontSizeDropDown.element);\n this.fontSizeDropDown.destroy();\n }\n if (this.alignDropDown) {\n this.removeDropDownClasses(this.alignDropDown.element);\n this.alignDropDown.destroy();\n }\n if (this.imageAlignDropDown) {\n this.removeDropDownClasses(this.imageAlignDropDown.element);\n this.imageAlignDropDown.destroy();\n }\n if (this.displayDropDown) {\n this.removeDropDownClasses(this.displayDropDown.element);\n this.displayDropDown.destroy();\n }\n if (this.tableRowsDropDown) {\n this.removeDropDownClasses(this.tableRowsDropDown.element);\n this.tableRowsDropDown.destroy();\n }\n if (this.tableColumnsDropDown) {\n this.removeDropDownClasses(this.tableColumnsDropDown.element);\n this.tableColumnsDropDown.destroy();\n }\n if (this.tableCellDropDown) {\n this.removeDropDownClasses(this.tableCellDropDown.element);\n this.tableCellDropDown.destroy();\n }\n if (this.tableCellVerticalAlignDropDown) {\n this.removeDropDownClasses(this.tableCellVerticalAlignDropDown.element);\n this.tableCellVerticalAlignDropDown.destroy();\n }\n if (this.numberFormatListDropDown) {\n this.removeDropDownClasses(this.numberFormatListDropDown.element);\n this.numberFormatListDropDown.destroy();\n }\n if (this.bulletFormatListDropDown) {\n this.removeDropDownClasses(this.bulletFormatListDropDown.element);\n this.bulletFormatListDropDown.destroy();\n }\n };\n DropDownButtons.prototype.setRtl = function (args) {\n if (this.formatDropDown) {\n this.formatDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.fontNameDropDown) {\n this.fontNameDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.fontSizeDropDown) {\n this.fontSizeDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.alignDropDown) {\n this.alignDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.imageAlignDropDown) {\n this.imageAlignDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.displayDropDown) {\n this.displayDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.numberFormatListDropDown) {\n this.numberFormatListDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.bulletFormatListDropDown) {\n this.bulletFormatListDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n };\n DropDownButtons.prototype.updateCss = function (dropDownObj, e) {\n if (dropDownObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n DropDownButtons.prototype.setCssClass = function (e) {\n var dropDownObj = [\n this.formatDropDown, this.fontNameDropDown, this.fontSizeDropDown, this.alignDropDown, this.imageAlignDropDown,\n this.displayDropDown, this.numberFormatListDropDown, this.bulletFormatListDropDown, this.tableRowsDropDown,\n this.tableColumnsDropDown, this.tableCellDropDown, this.tableCellVerticalAlignDropDown\n ];\n for (var i = 0; i < dropDownObj.length; i++) {\n this.updateCss(dropDownObj[i], e);\n }\n };\n DropDownButtons.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.beforeDropDownItemRender, this.beforeRender, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n };\n DropDownButtons.prototype.onIframeMouseDown = function () {\n if (!isNullOrUndefined(this.parent.getToolbarElement()) && (this.parent.getToolbarElement().querySelectorAll('.e-rte-dropdown-btn[aria-expanded=\"true\"]').length > 0 || this.parent.getToolbarElement().querySelectorAll('.e-dropdown-btn.e-rte-inline-dropdown[aria-expanded=\"true\"]').length > 0)) {\n dispatchEvent(document, 'mousedown');\n }\n };\n DropDownButtons.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.beforeDropDownItemRender, this.beforeRender);\n this.parent.off(events.destroy, this.removeEventListener);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.bindCssClass, this.setCssClass);\n };\n return DropDownButtons;\n}());\nexport { DropDownButtons };\n","import { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { ServiceLocator } from '../services/service-locator';\nimport { RendererFactory } from '../services/renderer-factory';\n/**\n * `ToolbarAction` module is used to toolbar click action\n */\nvar ToolbarAction = /** @class */ (function () {\n function ToolbarAction(parent) {\n this.parent = parent;\n this.addEventListener();\n this.serviceLocator = new ServiceLocator;\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n }\n ToolbarAction.prototype.addEventListener = function () {\n this.parent.on(events.toolbarClick, this.toolbarClick, this);\n this.parent.on(events.dropDownSelect, this.dropDownSelect, this);\n this.parent.on(events.colorPickerChanged, this.renderSelection, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n ToolbarAction.prototype.toolbarClick = function (args) {\n if (isNOU(args.item)) {\n return;\n }\n if (!isNOU(args.item.controlParent)) {\n // eslint-disable-next-line\n var activeEle = args.item.controlParent\n .activeEle;\n if (activeEle) {\n activeEle.tabIndex = -1;\n }\n }\n if (args.item.command === 'NumberFormatList' || args.item.command === 'BulletFormatList') {\n if (args.originalEvent.target.classList.contains('e-order-list') || args.originalEvent.target.classList.contains('e-unorder-list')) {\n args.item.command = 'Lists';\n args.item.subCommand = args.item.subCommand === 'NumberFormatList' ? 'OL' : 'UL';\n }\n }\n if (args.item.command === 'Lists') {\n if (args.originalEvent.target.classList.contains('e-caret') &&\n (args.originalEvent.target.parentElement.classList.contains('e-rte-bulletformatlist-dropdown') || args.originalEvent.target.parentElement.classList.contains('e-rte-numberformatlist-dropdown'))) {\n return;\n }\n }\n this.parent.notify(events.htmlToolbarClick, args);\n this.parent.notify(events.markdownToolbarClick, args);\n };\n ToolbarAction.prototype.dropDownSelect = function (e) {\n this.parent.notify(events.selectionRestore, {});\n if (!(document.body.contains(document.body.querySelector('.e-rte-quick-toolbar'))\n && e.item && (e.item.command === 'Images' || e.item.command === 'Audios' || e.item.command === 'Videos' ||\n e.item.command === 'VideoLayoutOption' || e.item.command === 'Display' || e.item.command === 'Table'))) {\n var value = e.item.controlParent && this.parent.quickToolbarModule && this.parent.quickToolbarModule.tableQTBar\n && this.parent.quickToolbarModule.tableQTBar.element.contains(e.item.controlParent.element) ? 'Table' : null;\n if (e.item.command === 'Lists') {\n var listItem = { listStyle: e.item.value, listImage: e.item.listImage, type: e.item.subCommand };\n this.parent.formatter.process(this.parent, e, e.originalEvent, listItem);\n }\n else {\n this.parent.formatter.process(this.parent, e, e.originalEvent, value);\n }\n }\n this.parent.notify(events.selectionSave, {});\n };\n ToolbarAction.prototype.renderSelection = function (args) {\n this.parent.notify(events.selectionRestore, {});\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n this.parent.notify(events.selectionSave, {});\n };\n ToolbarAction.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarClick, this.toolbarClick);\n this.parent.off(events.dropDownSelect, this.dropDownSelect);\n this.parent.off(events.colorPickerChanged, this.renderSelection);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n return ToolbarAction;\n}());\nexport { ToolbarAction };\n","import { addClass, Browser, EventHandler, detach, removeClass, select, selectAll, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { RenderType, ToolbarType } from '../base/enum';\nimport { setToolbarStatus, updateUndoRedoStatus, getTBarItemsIndex, getCollection, toObjectLowerCase, isIDevice, getTooltipText } from '../base/util';\nimport { updateDropDownFontFormatLocale } from '../base/util';\nimport * as model from '../models/items';\nimport { ToolbarRenderer } from '../renderer/toolbar-renderer';\nimport { BaseToolbar } from './base-toolbar';\nimport { DropDownButtons } from './dropdown-buttons';\nimport { ToolbarAction } from './toolbar-action';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.tools = {};\n this.parent = parent;\n this.isToolbar = false;\n this.locator = serviceLocator;\n this.isTransformChild = false;\n this.renderFactory = this.locator.getService('rendererFactory');\n model.updateDropDownLocale(this.parent);\n updateDropDownFontFormatLocale(this.parent);\n this.renderFactory.addRenderer(RenderType.Toolbar, new ToolbarRenderer(this.parent, this.locator));\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n this.baseToolbar = new BaseToolbar(this.parent, this.locator);\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, model.tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = model.tools;\n }\n }\n Toolbar.prototype.initializeInstance = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.editableElement = this.contentRenderer.getEditPanel();\n this.editPanel = this.contentRenderer.getPanel();\n };\n Toolbar.prototype.toolbarBindEvent = function () {\n if (!this.parent.inlineMode.enable) {\n this.keyBoardModule = new KeyboardEvents(this.getToolbarElement(), {\n keyAction: this.toolBarKeyDown.bind(this), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n }\n };\n Toolbar.prototype.toolBarKeyDown = function (e) {\n switch (e.action) {\n case 'escape':\n this.parent.contentModule.getEditPanel().focus();\n break;\n case 'enter':\n if (e.target.classList.contains('e-hor-nav')) {\n this.adjustContentHeight(e.target, true);\n }\n if (!isNullOrUndefined(e.target) && (e.target.classList.contains(\"e-rte-fontcolor-dropdown\") || e.target.classList.contains(\"e-rte-backgroundcolor-dropdown\"))) {\n this.parent.notify(events.showColorPicker, { toolbarClick: e.target.classList.contains(\"e-rte-fontcolor-dropdown\") ? \"fontcolor\" : \"backgroundcolor\" });\n }\n }\n };\n Toolbar.prototype.createToolbarElement = function () {\n this.tbElement = this.parent.createElement('div', { id: this.parent.getID() + '_toolbar' });\n if (!Browser.isDevice && this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n else {\n if (!this.parent.inlineMode.enable) {\n this.tbWrapper = this.parent.createElement('div', {\n id: this.parent.getID() + '_toolbar_wrapper',\n innerHTML: this.tbElement.outerHTML,\n className: classes.CLS_TB_WRAP\n });\n this.tbElement = this.tbWrapper.firstElementChild;\n this.parent.element.insertBefore(this.tbWrapper, this.editPanel);\n }\n else {\n this.parent.element.insertBefore(this.tbElement, this.editPanel);\n }\n }\n };\n Toolbar.prototype.getToolbarMode = function () {\n var tbMode;\n switch (this.parent.toolbarSettings.type) {\n case ToolbarType.Expand:\n tbMode = 'Extended';\n break;\n case ToolbarType.Scrollable:\n tbMode = 'Scrollable';\n break;\n default:\n tbMode = 'MultiRow';\n }\n if (isIDevice() && this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tbMode = ToolbarType.Scrollable;\n }\n return tbMode;\n };\n Toolbar.prototype.checkToolbarResponsive = function (ele) {\n if (!Browser.isDevice || isIDevice()) {\n return false;\n }\n var tBarMode;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tBarMode = ToolbarType.MultiRow;\n }\n else {\n tBarMode = this.parent.toolbarSettings.type;\n }\n this.baseToolbar.render({\n container: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items,\n mode: tBarMode,\n target: ele,\n cssClass: this.parent.getCssClass()\n });\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([ele], ['e-rte-tb-mobile']);\n if (this.parent.inlineMode.enable) {\n this.addFixedTBarClass();\n }\n else {\n addClass([ele], [classes.CLS_TB_STATIC]);\n }\n }\n this.wireEvents();\n this.dropDownModule.renderDropDowns({\n container: ele,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(events.renderColorPicker, {\n container: this.tbElement,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n return true;\n };\n Toolbar.prototype.checkIsTransformChild = function () {\n this.isTransformChild = false;\n var transformElements = selectAll('[style*=\"transform\"]', document);\n for (var i = 0; i < transformElements.length; i++) {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(transformElements[i].contains) && transformElements[i].contains(this.parent.element)) {\n this.isTransformChild = true;\n break;\n }\n }\n };\n Toolbar.prototype.toggleFloatClass = function (e) {\n var floatOffset = this.parent.floatingToolbarOffset;\n if (this.parent.toolbarSettings.enableFloating) {\n addClass([this.tbElement.parentElement], [classes.CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement.parentElement, { top: (floatOffset) + 'px' });\n }\n else {\n removeClass([this.tbElement.parentElement], [classes.CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement.parentElement, { top: '' });\n }\n };\n Toolbar.prototype.renderToolbar = function () {\n this.initializeInstance();\n this.createToolbarElement();\n if (this.checkToolbarResponsive(this.tbElement)) {\n return;\n }\n if (this.parent.inlineMode.enable) {\n this.parent.notify(events.renderInlineToolbar, {});\n }\n else {\n this.baseToolbar.render({\n container: 'toolbar',\n items: this.parent.toolbarSettings.items,\n mode: this.getToolbarMode(),\n target: this.tbElement,\n cssClass: this.parent.getCssClass()\n });\n if (!this.parent.inlineMode.enable) {\n if (this.parent.toolbarSettings.enableFloating) {\n this.checkIsTransformChild();\n this.toggleFloatClass();\n }\n addClass([this.parent.element], [classes.CLS_RTE_TB_ENABLED]);\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([this.parent.element], [classes.CLS_RTE_EXPAND_TB]);\n }\n }\n }\n this.wireEvents();\n if (this.parent.inlineMode.enable && !isIDevice()) {\n this.addFixedTBarClass();\n }\n if (!this.parent.inlineMode.enable) {\n this.dropDownModule.renderDropDowns({\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(events.renderColorPicker, {\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.refreshToolbarOverflow();\n }\n var divEle = this.parent.element.querySelector('.' + classes.CLS_RTE_SOURCE_CODE_TXTAREA);\n var iframeEle = this.parent.element.querySelector('.e-source-content');\n if ((!this.parent.iframeSettings.enable && (!isNOU(divEle) && divEle.style.display === 'block')) ||\n (this.parent.iframeSettings.enable && (!isNOU(iframeEle) && iframeEle.style.display === 'block'))) {\n this.parent.notify(events.updateToolbarItem, {\n targetItem: 'SourceCode', updateItem: 'Preview',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n this.parent.disableToolbarItem(this.parent.toolbarSettings.items);\n }\n };\n /**\n * addFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.addFixedTBarClass = function () {\n addClass([this.tbElement], [classes.CLS_TB_FIXED]);\n };\n /**\n * removeFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.removeFixedTBarClass = function () {\n removeClass([this.tbElement], [classes.CLS_TB_FIXED]);\n };\n Toolbar.prototype.showFixedTBar = function () {\n addClass([this.tbElement], [classes.CLS_SHOW]);\n if (Browser.isIos) {\n addClass([this.tbElement], [classes.CLS_TB_IOS_FIX]);\n }\n };\n Toolbar.prototype.hideFixedTBar = function () {\n // eslint-disable-next-line\n (!this.isToolbar) ? removeClass([this.tbElement], [classes.CLS_SHOW, classes.CLS_TB_IOS_FIX]) : this.isToolbar = false;\n };\n /**\n * updateItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.updateItem = function (args) {\n var item = this.tools[args.updateItem.toLocaleLowerCase()];\n if (this.parent.locale !== 'en-US') {\n item.tooltip = getTooltipText(args.updateItem.toLocaleLowerCase(), this.locator);\n }\n var trgItem = this.tools[args.targetItem.toLocaleLowerCase()];\n var index = getTBarItemsIndex(getCollection(trgItem.subCommand), args.baseToolbar.toolbarObj.items)[0];\n if (!isNOU(index)) {\n var prefixId = this.parent.inlineMode.enable ? '_quick_' : '_toolbar_';\n args.baseToolbar.toolbarObj.items[index].id = this.parent.getID() + prefixId + item.id;\n args.baseToolbar.toolbarObj.items[index].prefixIcon = item.icon;\n args.baseToolbar.toolbarObj.items[index].tooltipText = item.tooltip;\n args.baseToolbar.toolbarObj.items[index].subCommand = item.subCommand;\n args.baseToolbar.toolbarObj.dataBind();\n args.baseToolbar.toolbarObj.refreshOverflow();\n }\n else {\n this.addTBarItem(args, 0);\n }\n };\n Toolbar.prototype.updateToolbarStatus = function (args) {\n if (!this.tbElement || (this.parent.inlineMode.enable && (isIDevice() || !Browser.isDevice))) {\n return;\n }\n var options = {\n args: args,\n dropDownModule: this.dropDownModule,\n parent: this.parent,\n tbElements: selectAll('.' + classes.CLS_TB_ITEM, this.tbElement),\n tbItems: this.baseToolbar.toolbarObj.items\n };\n setToolbarStatus(options, (this.parent.inlineMode.enable ? true : false), this.parent);\n };\n Toolbar.prototype.fullScreen = function (e) {\n this.parent.fullScreenModule.showFullScreen(e);\n };\n Toolbar.prototype.hideScreen = function (e) {\n this.parent.fullScreenModule.hideFullScreen(e);\n };\n /**\n * getBaseToolbar method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getBaseToolbar = function () {\n return this.baseToolbar;\n };\n /**\n * addTBarItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @param {number} index - specifies the index value.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.addTBarItem = function (args, index) {\n args.baseToolbar.toolbarObj.addItems([args.baseToolbar.getObject(args.updateItem, 'toolbar')], index);\n };\n /**\n * enableTBarItems method\n *\n * @param {BaseToolbar} baseToolbar - specifies the toolbar.\n * @param {string} items - specifies the string value.\n * @param {boolean} isEnable - specifies the boolean value.\n * @param {boolean} muteToolbarUpdate - specifies the toolbar.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.enableTBarItems = function (baseToolbar, items, isEnable, muteToolbarUpdate) {\n var trgItems = getTBarItemsIndex(getCollection(items), baseToolbar.toolbarObj.items);\n this.tbItems = selectAll('.' + classes.CLS_TB_ITEM, baseToolbar.toolbarObj.element);\n for (var i = 0; i < trgItems.length; i++) {\n var item = this.tbItems[trgItems[i]];\n if (item) {\n baseToolbar.toolbarObj.enableItems(item, isEnable);\n }\n }\n if (!select('.' + classes.CLS_RTE_SOURCE_CODE_TXTAREA, this.parent.element) && !muteToolbarUpdate) {\n updateUndoRedoStatus(baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n };\n /**\n * removeTBarItems method\n *\n * @param {string} items - specifies the string value.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.removeTBarItems = function (items) {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var trgItems = getTBarItemsIndex(getCollection(items), this.baseToolbar.toolbarObj.items);\n this.tbItems = (this.parent.inlineMode.enable) ? selectAll('.' + classes.CLS_TB_ITEM, this.baseToolbar.toolbarObj.element)\n : selectAll('.' + classes.CLS_TB_ITEM, this.parent.element);\n for (var i = 0; i < trgItems.length; i++) {\n this.baseToolbar.toolbarObj.removeItems(this.tbItems[trgItems[i]]);\n }\n };\n /**\n * getExpandTBarPopHeight method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getExpandTBarPopHeight = function () {\n var popHeight = 0;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand && this.tbElement.classList.contains('e-extended-toolbar')) {\n var expandPopup = select('.e-toolbar-extended', this.tbElement);\n if (expandPopup && this.tbElement.classList.contains('e-expand-open')\n || expandPopup && expandPopup.classList.contains('e-popup-open')) {\n addClass([expandPopup], [classes.CLS_VISIBLE]);\n popHeight = popHeight + expandPopup.offsetHeight;\n removeClass([expandPopup], [classes.CLS_VISIBLE]);\n }\n else {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n }\n return popHeight;\n };\n /**\n * getToolbarHeight method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getToolbarHeight = function () {\n return this.tbElement.offsetHeight;\n };\n /**\n * getToolbarElement method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getToolbarElement = function () {\n return select('.' + classes.CLS_TOOLBAR, this.parent.element);\n };\n /**\n * refreshToolbarOverflow method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.refreshToolbarOverflow = function () {\n this.parent.element.classList.remove(classes.CLS_RTL);\n this.baseToolbar.toolbarObj.refreshOverflow();\n if (this.parent.enableRtl) {\n this.parent.element.classList.add(classes.CLS_RTL);\n }\n };\n Toolbar.prototype.isToolbarDestroyed = function () {\n return this.baseToolbar.toolbarObj && !this.baseToolbar.toolbarObj.isDestroyed;\n };\n Toolbar.prototype.destroyToolbar = function () {\n if (this.isToolbarDestroyed()) {\n this.parent.unWireScrollElementsEvents();\n this.unWireEvents();\n this.parent.notify(events.destroyColorPicker, {});\n this.dropDownModule.destroyDropDowns();\n this.baseToolbar.toolbarObj.destroy();\n this.removeEventListener();\n removeClass([this.parent.element], [classes.CLS_RTE_TB_ENABLED]);\n removeClass([this.parent.element], [classes.CLS_RTE_EXPAND_TB]);\n var tbWrapper = select('.' + classes.CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + classes.CLS_TOOLBAR, this.parent.element);\n if (!isNullOrUndefined(tbWrapper)) {\n detach(tbWrapper);\n }\n else if (!isNullOrUndefined(tbElement)) {\n detach(tbElement);\n }\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.destroy = function () {\n if (isNOU(this.parent)) {\n return;\n }\n if (this.isToolbarDestroyed()) {\n this.destroyToolbar();\n if (this.keyBoardModule) {\n this.keyBoardModule.destroy();\n }\n }\n };\n Toolbar.prototype.moduleDestroy = function () {\n this.parent = null;\n this.baseToolbar.parent = null;\n this.toolbarActionModule.parent = null;\n this.dropDownModule.parent = null;\n };\n Toolbar.prototype.mouseDownHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.showFixedTBar();\n }\n };\n Toolbar.prototype.focusChangeHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.isToolbar = false;\n this.hideFixedTBar();\n }\n };\n Toolbar.prototype.dropDownBeforeOpenHandler = function () {\n this.isToolbar = true;\n };\n // eslint-disable-next-line\n Toolbar.prototype.tbFocusHandler = function (e) {\n var activeElm = document.activeElement;\n var isToolbaractive = closest(activeElm, '.e-rte-toolbar');\n if (activeElm === this.parent.getToolbarElement() || isToolbaractive === this.parent.getToolbarElement()) {\n var toolbarItem = this.parent.getToolbarElement().querySelectorAll('.e-expended-nav');\n for (var i = 0; i < toolbarItem.length; i++) {\n if (isNOU(this.parent.getToolbarElement().querySelector('.e-insert-table-btn'))) {\n toolbarItem[i].setAttribute('tabindex', '0');\n }\n else {\n toolbarItem[i].setAttribute('tabindex', '1');\n }\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (e) {\n var trg = closest(e.originalEvent.target, '.e-hor-nav');\n this.adjustContentHeight(trg, false);\n };\n Toolbar.prototype.adjustContentHeight = function (trg, isKeyboard) {\n if (trg && this.parent.toolbarSettings.type === ToolbarType.Expand && !isNOU(trg)) {\n var hasActiveClass = trg.classList.contains('e-nav-active');\n var isExpand = isKeyboard ? (hasActiveClass ? false : true) : (hasActiveClass ? true : false);\n if (isExpand) {\n addClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n else {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n this.parent.setContentHeight('Toolbar', isExpand);\n }\n else if (Browser.isDevice || this.parent.inlineMode.enable) {\n this.isToolbar = true;\n }\n if (isNOU(trg) && this.parent.toolbarSettings.type === ToolbarType.Expand && this.parent.toolbarModule.getExpandTBarPopHeight() === 0) {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n if (this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n EventHandler.add(this.tbElement, 'focusin', this.tbFocusHandler, this);\n };\n Toolbar.prototype.unWireEvents = function () {\n EventHandler.remove(this.tbElement, 'focusin', this.tbFocusHandler);\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.dropDownModule = new DropDownButtons(this.parent, this.locator);\n this.toolbarActionModule = new ToolbarAction(this.parent);\n this.parent.on(events.initialEnd, this.renderToolbar, this);\n this.parent.on(events.bindOnEnd, this.toolbarBindEvent, this);\n this.parent.on(events.toolbarUpdated, this.updateToolbarStatus, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.refreshBegin, this.onRefresh, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.enableFullScreen, this.fullScreen, this);\n this.parent.on(events.disableFullScreen, this.hideScreen, this);\n this.parent.on(events.updateToolbarItem, this.updateItem, this);\n this.parent.on(events.beforeDropDownOpen, this.dropDownBeforeOpenHandler, this);\n this.parent.on(events.expandPopupClick, this.parent.setContentHeight, this.parent);\n this.parent.on(events.focusChange, this.focusChangeHandler, this);\n this.parent.on(events.mouseDown, this.mouseDownHandler, this);\n this.parent.on(events.sourceCodeMouseDown, this.mouseDownHandler, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.on(events.toolbarClick, this.toolbarClickHandler, this);\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.renderToolbar);\n this.parent.off(events.bindOnEnd, this.toolbarBindEvent);\n this.parent.off(events.toolbarUpdated, this.updateToolbarStatus);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.refreshBegin, this.onRefresh);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.enableFullScreen, this.parent.fullScreenModule.showFullScreen);\n this.parent.off(events.disableFullScreen, this.parent.fullScreenModule.hideFullScreen);\n this.parent.off(events.updateToolbarItem, this.updateItem);\n this.parent.off(events.beforeDropDownOpen, this.dropDownBeforeOpenHandler);\n this.parent.off(events.expandPopupClick, this.parent.setContentHeight);\n this.parent.off(events.focusChange, this.focusChangeHandler);\n this.parent.off(events.mouseDown, this.mouseDownHandler);\n this.parent.off(events.sourceCodeMouseDown, this.mouseDownHandler);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.off(events.toolbarClick, this.toolbarClickHandler);\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Toolbar.prototype.setCssClass = function (e) {\n if (this.toolbarObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n Toolbar.prototype.onRefresh = function () {\n if (!this.parent.inlineMode.enable) {\n this.refreshToolbarOverflow();\n }\n var isExpand = this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n this.parent.setContentHeight('Refresh', isExpand);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.inlineMode)) {\n for (var _i = 0, _a = Object.keys(e.newProp.inlineMode); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enable':\n this.refreshToolbar();\n break;\n }\n }\n }\n if (!isNullOrUndefined(e.newProp.toolbarSettings)) {\n if (!isNullOrUndefined(e.newProp.toolbarSettings.enableFloating)) {\n this.toggleFloatClass();\n }\n }\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.refreshToolbar();\n };\n Toolbar.prototype.refreshToolbar = function () {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var tbWrapper = select('.' + classes.CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + classes.CLS_TOOLBAR, this.parent.element);\n if (tbElement || tbWrapper) {\n this.destroyToolbar();\n }\n if (this.parent.toolbarSettings.enable) {\n this.addEventListener();\n this.renderToolbar();\n this.parent.wireScrollElementsEvents();\n if (!select('.' + classes.CLS_RTE_SOURCE_CODE_TXTAREA, this.parent.element)) {\n updateUndoRedoStatus(this.baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n this.parent.notify(events.dynamicModule, {});\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { extend, isNullOrUndefined as isNOU, Browser, closest } from '@syncfusion/ej2-base';\nimport * as CONSTANT from '../base/constant';\nimport { updateUndoRedoStatus, isIDevice } from '../base/util';\nimport { KEY_DOWN, KEY_UP } from './../../common/constant';\n/**\n * Formatter\n *\n * @hidden\n\n */\nvar Formatter = /** @class */ (function () {\n function Formatter() {\n }\n /**\n * To execute the command\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {ActionBeginEventArgs} args - specifies the event arguments.\n * @param {MouseEvent|KeyboardEvent} event - specifies the keyboard event.\n * @param {IItemCollectionArgs} value - specifies the collection arguments\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.process = function (self, args, event, value) {\n var _this = this;\n var selection = self.contentModule.getDocument().getSelection();\n var range = (selection.rangeCount > 0) ? selection.getRangeAt(selection.rangeCount - 1) : null;\n var saveSelection;\n var newRange;\n if (!isNOU(value) && !isNOU(value.selection)) {\n newRange = value.selection.range;\n }\n var isKeyboardVideoInsert = (!isNOU(value) && !isNOU(value.cssClass) &&\n value.cssClass !== 'e-video-inline');\n if (self.editorMode === 'HTML') {\n if (!isNOU(args) && !isKeyboardVideoInsert) {\n if (isNOU(args.name) || (!isNOU(args.name) && args.name !== 'showDialog')) {\n if (newRange) {\n saveSelection = this.editorManager.nodeSelection.save(newRange, self.contentModule.getDocument());\n }\n else {\n saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());\n }\n }\n }\n }\n if (!isNOU(args)\n && args.item.command\n && args.item.command !== 'Table'\n && args.item.command !== 'Actions'\n && args.item.command !== 'Links'\n && args.item.command !== 'Images'\n && args.item.command !== 'Files'\n && args.item.command !== 'Audios'\n && args.item.command !== 'Videos'\n && args.item.command !== 'EmojiPicker'\n && range\n && !(self.contentModule.getEditPanel().contains(this.getAncestorNode(range.commonAncestorContainer))\n || self.contentModule.getEditPanel() === range.commonAncestorContainer\n || self.contentModule.getPanel() === range.commonAncestorContainer)) {\n return;\n }\n if (!isNOU(args) && self.maxLength !== -1 && !isNOU(args.item.command)) {\n var currentInsertContentLength = 0;\n if (args.item.command === 'Links') {\n currentInsertContentLength = value.text.length === 0 ? value.url.length : value.text.length;\n }\n if (args.item.command === 'Images' || args.item.command === 'Videos' || args.item.command === 'Table' || args.item.command === 'Files') {\n currentInsertContentLength = 1;\n }\n var currentLength = self.getText().trim().replace(/(\\r\\n|\\n|\\r|\\t)/gm, '').replace(/\\u200B/g, '').length;\n var selectionLength = self.getSelection().length;\n var totalLength = (currentLength - selectionLength) + currentInsertContentLength;\n if (!(self.maxLength === -1 || totalLength <= self.maxLength)) {\n return;\n }\n }\n if (isNOU(args)) {\n var action_1 = event.action;\n args = {};\n var items = {\n originalEvent: event, cancel: false,\n requestType: action_1 || (event.key + 'Key'),\n itemCollection: value\n };\n extend(args, args, items, true);\n if (action_1 !== 'tab' && action_1 !== 'enter' && action_1 !== 'space' && action_1 !== 'escape') {\n if (self.editorMode === 'Markdown' && action_1 === 'insert-table') {\n value = {\n 'headingText': self.localeObj.getConstant('TableHeadingText'),\n 'colText': self.localeObj.getConstant('TableColText')\n };\n }\n self.trigger(CONSTANT.actionBegin, args, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n if (action_1 === 'paste' || action_1 === 'cut' || action_1 === 'copy') {\n event.preventDefault();\n }\n }\n });\n }\n if (!args.cancel) {\n var isTableModule = isNOU(self.tableModule) ? true : self.tableModule ?\n self.tableModule.ensureInsideTableList : false;\n if ((event.which === 9 && isTableModule) || event.which !== 9) {\n if (event.which === 13 && self.editorMode === 'HTML') {\n value = {\n 'enterAction': self.enterKey\n };\n }\n this.editorManager.observer.notify((event.type === 'keydown' ? KEY_DOWN : KEY_UP), {\n event: event,\n callBack: this.onSuccess.bind(this, self),\n value: value,\n enterAction: self.enterKey\n });\n }\n }\n }\n else if (!isNOU(args) && args.item.command && args.item.subCommand && ((args.item.command !== args.item.subCommand\n && args.item.command !== 'Font')\n || ((args.item.subCommand === 'FontName' || args.item.subCommand === 'FontSize') && args.name === 'dropDownSelect')\n || ((args.item.subCommand === 'BackgroundColor' || args.item.subCommand === 'FontColor')\n && args.name === 'colorPickerChanged') || args.item.subCommand === 'FormatPainter' || args.item.subCommand === 'EmojiPicker')) {\n extend(args, args, { requestType: args.item.subCommand, cancel: false, itemCollection: value, selectType: args.name }, true);\n self.trigger(CONSTANT.actionBegin, args, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n var formatPainterCopy = !isNOU(actionBeginArgs.requestType) && actionBeginArgs.requestType === 'FormatPainter' && actionBeginArgs.name === 'format-copy';\n var formatPainterPaste = !isNOU(actionBeginArgs.requestType) && actionBeginArgs.requestType === 'FormatPainter' && actionBeginArgs.name === 'format-paste';\n if ((_this.getUndoRedoStack().length === 0 && actionBeginArgs.item.command !== 'Links' && actionBeginArgs.item.command !== 'Images' && !formatPainterCopy)\n || formatPainterPaste) {\n _this.saveData();\n }\n self.isBlur = false;\n var quickToolbarAction = !isNOU(event) && !isNOU(event.target) && (!isNOU(closest(event.target, \".e-rte-elements.e-dropdown-popup.e-rte-dropdown-popup.e-quick-dropdown.e-popup-open\")) || !isNOU(closest(event.target, \".e-rte-elements.e-rte-quick-popup.e-popup-open\")));\n if (isNOU(saveSelection) || (!quickToolbarAction && (isNOU(closest(saveSelection.range.startContainer.parentElement, \".e-img-caption\")) ? true : !(closest(saveSelection.range.startContainer.parentElement, \".e-img-caption\").getAttribute(\"contenteditable\") == \"false\")))) {\n self.contentModule.getEditPanel().focus();\n }\n if (self.editorMode === 'HTML' && !isKeyboardVideoInsert) {\n if (isNOU(args.selectType) || (!isNOU(args.selectType) && args.selectType !== 'showDialog')) {\n saveSelection.restore();\n }\n }\n var command = actionBeginArgs.item.subCommand.toLocaleLowerCase();\n if (command === 'paste' || command === 'cut' || command === 'copy') {\n self.clipboardAction(command, event);\n }\n else {\n _this.editorManager.observer.notify(CONSTANT.checkUndo, { subCommand: actionBeginArgs.item.subCommand });\n _this.editorManager.execCommand(actionBeginArgs.item.command, actionBeginArgs.item.subCommand, event, _this.onSuccess.bind(_this, self), actionBeginArgs.item.value, actionBeginArgs.item.subCommand === 'Pre' && actionBeginArgs.selectType === 'dropDownSelect' ?\n { name: actionBeginArgs.selectType } : value, ('#' + self.getID() + ' iframe'), self.enterKey);\n }\n }\n });\n }\n if ((isNOU(event) || event && event.action !== 'copy')) {\n this.enableUndo(self);\n }\n };\n Formatter.prototype.getAncestorNode = function (node) {\n node = node.nodeType === 3 ? node.parentNode : node;\n return node;\n };\n /**\n * onKeyHandler method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.onKeyHandler = function (self, e) {\n var _this = this;\n this.editorManager.observer.notify(KEY_UP, {\n event: e, callBack: function () {\n self.notify(CONSTANT.contentChanged, {});\n _this.enableUndo(self);\n },\n enterAction: self.enterKey\n });\n };\n /**\n * onSuccess method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {IMarkdownFormatterCallBack} events - specifies the event call back\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.onSuccess = function (self, events) {\n self.notify(CONSTANT.contentChanged, {});\n if (events && (isNOU(events.event) || events.event.action !== 'copy')) {\n this.enableUndo(self);\n self.notify(CONSTANT.execCommandCallBack, events);\n }\n self.trigger(CONSTANT.actionComplete, events, function (callbackArgs) {\n self.setPlaceHolder();\n if ((callbackArgs.requestType === 'Images' || callbackArgs.requestType === 'Links' || callbackArgs.requestType === 'Audios' || callbackArgs.requestType === 'Videos') && self.editorMode === 'HTML') {\n var args = callbackArgs;\n if (callbackArgs.requestType === 'Links' && callbackArgs.event &&\n callbackArgs.event.type === 'keydown' &&\n callbackArgs.event.keyCode === 32) {\n return;\n }\n self.notify(CONSTANT.insertCompleted, {\n args: args.event, type: callbackArgs.requestType, isNotify: true,\n elements: args.elements\n });\n }\n if (callbackArgs.requestType === 'VideosPlayPause') {\n self.notify('editAreaClick', { args: event });\n }\n self.autoResize();\n });\n };\n /**\n * Save the data for undo and redo action.\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.saveData = function (e) {\n this.editorManager.undoRedoManager.saveData(e);\n };\n /**\n * getUndoStatus method\n *\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.getUndoStatus = function () {\n return this.editorManager.undoRedoManager.getUndoStatus();\n };\n /* eslint-disable */\n /**\n * getUndoRedoStack method\n *\n * @param {IHtmlUndoRedoData} - specifies the redo data.\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n Formatter.prototype.getUndoRedoStack = function () {\n return this.editorManager.undoRedoManager.undoRedoStack;\n };\n /**\n * enableUndo method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.enableUndo = function (self) {\n var status = this.getUndoStatus();\n if (self.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n updateUndoRedoStatus(self.quickToolbarModule.inlineQTBar.quickTBarObj, status);\n }\n else {\n if (self.toolbarModule) {\n updateUndoRedoStatus(self.toolbarModule.baseToolbar, status);\n }\n }\n };\n return Formatter;\n}());\nexport { Formatter };\n","/**\n * Constant values for Markdown Parser\n */\n/**\n * List plugin events\n *\n * @hidden\n */\nexport var LISTS_COMMAND = 'lists-commands';\n/**\n * selectioncommand plugin events\n *\n * @hidden\n */\nexport var selectionCommand = 'command-type';\n/**\n * Link plugin events\n *\n * @hidden\n */\nexport var LINK_COMMAND = 'link-commands';\n/**\n * Clear plugin events\n *\n * @hidden\n */\nexport var CLEAR_COMMAND = 'clear-commands';\n/**\n * Table plugin events\n *\n * @hidden\n */\nexport var MD_TABLE = 'insert-table';\n/**\n * insertText plugin events\n *\n * @hidden\n */\nexport var INSERT_TEXT_COMMAND = 'insert-text';\n","import * as CONSTANT from './../base/constant';\nimport { extend } from '@syncfusion/ej2-base';\nimport * as EVENTS from './../../common/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Lists internal component\n *\n * @hidden\n */\nvar MDLists = /** @class */ (function () {\n /**\n * Constructor for creating the Lists plugin\n *\n * @param {IMDFormats} options - specifies the options\n * @hidden\n */\n function MDLists(options) {\n extend(this, this, options, true);\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDLists.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.LISTS_COMMAND, this.applyListsHandler, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler, this);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, this.keyUpHandler, this);\n };\n MDLists.prototype.keyDownHandler = function (event) {\n switch (event.event.which) {\n case 9:\n this.tabKey(event);\n break;\n }\n switch (event.event.action) {\n case 'ordered-list':\n this.applyListsHandler({ subCommand: 'OL', callBack: event.callBack });\n event.event.preventDefault();\n break;\n case 'unordered-list':\n this.applyListsHandler({ subCommand: 'UL', callBack: event.callBack });\n event.event.preventDefault();\n break;\n }\n };\n MDLists.prototype.keyUpHandler = function (event) {\n switch (event.event.which) {\n case 13:\n this.enterKey(event);\n break;\n }\n };\n MDLists.prototype.tabKey = function (event) {\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var parents = this.selection.getSelectedParentPoints(textArea);\n var addedLength = 0;\n var isNotFirst = this.isNotFirstLine(textArea, parents[0]);\n if (!isNotFirst && !event.event.shiftKey) {\n this.restore(textArea, start, end + addedLength, event);\n return;\n }\n var listFormat = this.olListType();\n var regex = this.getListRegex();\n this.currentAction = this.getAction(parents[0].text);\n for (var i = 0; i < parents.length; i++) {\n // eslint-disable-next-line max-len\n var prevIndex = event.event.shiftKey ? parents[i].line - 1 : parents[i].line - 1;\n var prevLine = this.selection.getLine(textArea, prevIndex);\n if (prevLine && (!event.event.shiftKey && isNotFirst || (event.event.shiftKey))) {\n var prevLineSplit = prevLine.split('. ');\n var tabSpace = '\\t';\n var tabSpaceLength = event.event.shiftKey ? -tabSpace.length : tabSpace.length;\n var splitTab = parents[i].text.split('\\t');\n if (event.event.shiftKey && splitTab.length === 1) {\n break;\n }\n if (this.currentAction === 'OL' && /^\\d+$/.test(prevLineSplit[0].trim()) && listFormat) {\n event.event.preventDefault();\n parents[i].text = event.event.shiftKey ? splitTab.splice(1, splitTab.length).join('\\t') : tabSpace + parents[i].text;\n var curTabSpace = this.getTabSpace(parents[i].text);\n var prevTabSpace = this.getTabSpace(prevLine);\n var splitText = parents[i].text.split('. ');\n if (curTabSpace === prevTabSpace) {\n this.changeTextAreaValue(splitText, this.nextOrderedListValue(prevLineSplit[0].trim()), event, textArea, parents, i, end);\n }\n else if (prevTabSpace < curTabSpace) {\n this.changeTextAreaValue(splitText, '1. ', event, textArea, parents, i, end);\n }\n else {\n for (; prevTabSpace.length > curTabSpace.length; null) {\n prevIndex = prevIndex - 1;\n prevLine = this.selection.getLine(textArea, prevIndex);\n var prevLineSplit_1 = prevLine.trim().split('. ');\n if (/^\\d+$/.test(prevLineSplit_1[0])) {\n prevTabSpace = this.getTabSpace(prevLine);\n if (prevTabSpace.length <= curTabSpace.length) {\n this.changeTextAreaValue(splitText, this.nextOrderedListValue(prevLineSplit_1[0]), event, textArea, parents, i, end);\n break;\n }\n }\n }\n }\n }\n else if (this.currentAction === 'UL' && regex.test(prevLine.trim()) || !listFormat) {\n event.event.preventDefault();\n parents[i].text = event.event.shiftKey ? splitTab.splice(1, splitTab.length).join('\\t') : tabSpace + parents[i].text;\n textArea.value = textArea.value.substr(0, parents[i].start) + parents[i].text + '\\n' +\n textArea.value.substr(parents[i].end, textArea.value.length);\n }\n start = i === 0 ? start + tabSpaceLength : start;\n addedLength += tabSpaceLength;\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n // eslint-disable-next-line max-len\n parents[j].start = j !== 0 ? parents[j].start + tabSpaceLength : parents[j].start;\n parents[j].end = parents[j].end + tabSpaceLength;\n }\n }\n }\n }\n this.restore(textArea, start, end + addedLength, event);\n };\n MDLists.prototype.changeTextAreaValue = function (splitText, prefixValue, event, \n // eslint-disable-next-line\n textArea, parents, k, end) {\n var prefix = prefixValue;\n splitText.splice(0, 1);\n var textAreaLength = this.selection.getAllParents(textArea.value).length;\n var changedList = '';\n var curTabSpace = this.getTabSpace(parents[k].text);\n // eslint-disable-next-line\n var prefixNumber = parseInt(prefix.split('.')[0], null);\n var nestedTabSpace = this.getTabSpace(parents[k].text);\n var nestedlistorder = true;\n var nestedListStart = true;\n var curTabSpaceLength;\n var nextPrefixValue = -1;\n var traversIncreased = true;\n var nextLineLength = 0;\n var lineBreak = '';\n changedList = (this.selection.getLine(textArea, parents[0].line + 1) !== '') ?\n '' : changedList + textArea.value.substr(parents[0].end, textArea.value.length);\n for (var i = 1; i < textAreaLength &&\n !isNullOrUndefined(this.selection.getLine(textArea, parents[0].line + i))\n && this.selection.getLine(textArea, parents[0].line + i) !== ''; i++) {\n var nextLine = this.selection.getLine(textArea, parents[0].line + i);\n var nextTabSpace = this.getTabSpace(nextLine);\n var nextLineSplit = nextLine.split('. ');\n if (nextLineSplit.length === 1) {\n changedList += textArea.value.substr(parents[0].end + nextLineLength, textArea.value.length);\n break;\n }\n else {\n nextLineLength += nextLine.length;\n var shiftTabTargetList = false;\n curTabSpaceLength = event.event.shiftKey ? curTabSpace.length + 1 : curTabSpace.length - 1;\n if (nextTabSpace.length > nestedTabSpace.length) {\n traversIncreased = false;\n }\n if (curTabSpace.length !== nextTabSpace.length && nextTabSpace.length < nestedTabSpace.length) {\n nestedListStart = true;\n nestedlistorder = false;\n shiftTabTargetList = event.event.shiftKey &&\n curTabSpace.length === nextTabSpace.length ? (nestedListStart = false, true) : false;\n }\n else if (traversIncreased && event.event.shiftKey &&\n curTabSpace.length === nextTabSpace.length && nextTabSpace.length === nestedTabSpace.length) {\n nestedListStart = false;\n shiftTabTargetList = true;\n }\n lineBreak = changedList === '' ? '' : '\\n';\n if (curTabSpaceLength === nextTabSpace.length && nestedListStart) {\n var nextPrefix = event.event.shiftKey ?\n (nextPrefixValue++, this.nextOrderedListValue(nextPrefixValue.toString()))\n : this.previousOrderedListValue(nextLineSplit[0]);\n nextLineSplit.splice(0, 1);\n changedList = changedList + lineBreak + nextTabSpace + nextPrefix + nextLineSplit.join('. ');\n }\n else if (curTabSpace.length === nextTabSpace.length && nestedlistorder || shiftTabTargetList) {\n var nextPrefix = this.nextOrderedListValue(prefixNumber.toString());\n prefixNumber++;\n nextLineSplit.splice(0, 1);\n changedList = changedList + lineBreak + nextTabSpace + nextPrefix + nextLineSplit.join('. ');\n }\n else {\n changedList = changedList + lineBreak + nextLine;\n nestedListStart = false;\n }\n nestedTabSpace = this.getTabSpace(nextLine);\n }\n }\n parents[k].text = this.getTabSpace(parents[k].text) + prefix + splitText.join('. ') + '\\n';\n textArea.value = textArea.value.substr(0, parents[k].start) + parents[k].text + changedList;\n };\n MDLists.prototype.getTabSpace = function (line) {\n var split = line.split('\\t');\n var tabs = '';\n for (var i = 0; i < split.length; i++) {\n if (split[i] === '') {\n tabs += '\\t';\n }\n else {\n break;\n }\n }\n return tabs;\n };\n MDLists.prototype.isNotFirstLine = function (textArea, points) {\n var currentLine = points.text;\n var prevIndex = points.line - 1;\n var prevLine = this.selection.getLine(textArea, prevIndex);\n var regex = this.getListRegex();\n var isNotFirst = false;\n var regexFirstCondition;\n if (prevLine) {\n this.currentAction = this.getAction(prevLine);\n var prevLineSplit = prevLine.split('. ');\n regexFirstCondition = this.currentAction === 'OL' ? /^\\d+$/.test(prevLineSplit[0].trim()) : regex.test(prevLine.trim());\n }\n if (prevLine && regexFirstCondition) {\n var curTabSpace = this.getTabSpace(currentLine);\n var prevTabSpace = this.getTabSpace(prevLine);\n isNotFirst = curTabSpace === prevTabSpace ? true : isNotFirst;\n for (; prevTabSpace.length > curTabSpace.length; null) {\n prevIndex = prevIndex - 1;\n prevLine = this.selection.getLine(textArea, prevIndex);\n var prevLineSplit = prevLine.trim().split('. ');\n var regexSecondCondition = this.currentAction === 'OL' ?\n /^\\d+$/.test(prevLineSplit[0]) : regex.test(prevLine.trim());\n if (regexSecondCondition) {\n prevTabSpace = this.getTabSpace(prevLine);\n if (prevTabSpace.length <= curTabSpace.length) {\n isNotFirst = true;\n break;\n }\n }\n }\n }\n return isNotFirst;\n };\n MDLists.prototype.getAction = function (line) {\n var ol = line.split('. ')[0];\n // eslint-disable-next-line\n var currentState = /^\\d+$/.test(ol.trim());\n // eslint-disable-next-line\n var ul = line.trim().split(new RegExp('^(' + this.selection.replaceSpecialChar(this.syntax.UL).trim() + ')'))[1];\n return (currentState ? 'OL' : ul ? 'UL' : 'NOTLIST');\n };\n MDLists.prototype.nextOrderedListValue = function (previousLine) {\n // eslint-disable-next-line\n var currentValue = parseInt(previousLine, null);\n var nextValue = currentValue + 1;\n return nextValue.toString() + '. ';\n };\n MDLists.prototype.previousOrderedListValue = function (previousLine) {\n // eslint-disable-next-line\n var currentValue = parseInt(previousLine, null);\n var nextValue = currentValue - 1;\n return nextValue.toString() + '. ';\n };\n MDLists.prototype.enterKey = function (event) {\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var parents = this.selection.getSelectedParentPoints(textArea);\n var prevLine = this.selection.getLine(textArea, parents[0].line - 1);\n var listFormat = this.olListType();\n var regex = this.getListRegex();\n var prevLineSplit = [];\n if (!isNullOrUndefined(prevLine)) {\n prevLineSplit = prevLine.split('. ');\n this.currentAction = this.getAction(prevLine);\n }\n var addedLength = 0;\n if (this.currentAction === 'OL' && prevLineSplit.length > 1 && /^\\d+$/.test(prevLineSplit[0].trim()) && listFormat\n && prevLineSplit[1] !== '') {\n var tabSpace = this.getTabSpace(prevLine);\n this.currentAction = this.getAction(prevLine);\n var prefix = this.nextOrderedListValue(prevLineSplit[0]);\n parents[0].text = tabSpace + prefix + parents[0].text;\n var textAreaLength = this.selection.getAllParents(textArea.value).length;\n var changedList = '\\n';\n var curTabSpace = this.getTabSpace(prevLine);\n var nestedTabSpace = this.getTabSpace(parents[0].text);\n var nestedListOrder = true;\n for (var i = 1; i < textAreaLength &&\n textArea.value.substr(parents[0].end, textArea.value.length) !== ''; i++) {\n var nextLine = this.selection.getLine(textArea, parents[0].line + i);\n if (isNullOrUndefined(nextLine)) {\n changedList = changedList + '';\n }\n else {\n var nextLineSplit = nextLine.split('. ');\n var nextTabSpace = this.getTabSpace(nextLine);\n if (nextTabSpace.length < nestedTabSpace.length) {\n nestedListOrder = false;\n }\n if (nextLineSplit.length > 1 && /^\\d+$/.test(nextLineSplit[0].trim()) &&\n curTabSpace.length === nextTabSpace.length && nestedListOrder) {\n var nextPrefix = this.nextOrderedListValue(nextLineSplit[0]);\n nextLineSplit.splice(0, 1);\n changedList = changedList + nextTabSpace + nextPrefix + nextLineSplit.join('. ') + '\\n';\n }\n else {\n changedList = changedList + nextLine + '\\n';\n nestedTabSpace = this.getTabSpace(nextLine);\n }\n }\n }\n textArea.value = textArea.value.substr(0, parents[0].start) + curTabSpace +\n prefix + this.selection.getLine(textArea, parents[0].line) + changedList;\n start = start + prefix.length + tabSpace.length;\n addedLength += prefix.length + tabSpace.length;\n }\n else if (this.currentAction === 'UL' && (prevLine && regex.test(prevLine.trim())) &&\n prevLine.trim().replace(regex, '') !== '' || this.currentAction === 'OL' && !listFormat) {\n var tabSpace = this.getTabSpace(prevLine);\n var prefix = this.syntax[this.currentAction];\n parents[0].text = tabSpace + prefix + parents[0].text +\n (parents[0].text.trim().length > 0 ? '\\n' : '');\n textArea.value = textArea.value.substr(0, parents[0].start) + parents[0].text +\n textArea.value.substr(parents[0].end, textArea.value.length);\n start = start + prefix.length + tabSpace.length;\n addedLength += prefix.length + tabSpace.length;\n }\n this.restore(textArea, start, end + addedLength, event);\n };\n MDLists.prototype.olListType = function () {\n var olSyntaxList = this.syntax.OL.split('.,');\n var listType = olSyntaxList.length === 1 ? null :\n // eslint-disable-next-line\n parseInt(olSyntaxList[2].trim(), null) - parseInt(olSyntaxList[0].trim(), null);\n if (listType) {\n return 1;\n }\n else {\n return 0;\n }\n };\n MDLists.prototype.applyListsHandler = function (e) {\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n this.currentAction = e.subCommand;\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var addedLength = 0;\n var startLength = 0;\n var endLength = 0;\n var parents = this.selection.getSelectedParentPoints(textArea);\n var prefix = '';\n var listFormat = this.olListType();\n var regex;\n var perfixObj = {};\n for (var i = 0; i < parents.length; i++) {\n if (listFormat) {\n regex = this.currentAction === 'OL' ? i + listFormat + '. ' : this.syntax[this.currentAction];\n }\n else {\n regex = this.currentAction === 'OL' ? this.syntax.OL : this.syntax[this.currentAction];\n }\n if (!this.selection.isStartWith(parents[i].text, regex)) {\n if (parents[i].text === '' && i === 0) {\n this.selection.save(start, end);\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n parents[j].start = j !== 0 ? 1 + parents[j].start : parents[j].start;\n parents[j].end = 1 + parents[j].end;\n }\n }\n }\n var preLineTabSpaceLength = !isNullOrUndefined(parents[i - 1]) ?\n this.getTabSpace(parents[i - 1].text).length : 0;\n var replace = this.appliedLine(parents[i].text, regex, perfixObj, preLineTabSpaceLength);\n prefix = replace.line ? prefix : regex;\n parents[i].text = replace.line ? replace.line : prefix + parents[i].text;\n replace.space = replace.space ? replace.space : 0;\n textArea.value = textArea.value.substr(0, parents[i].start + endLength) + parents[i].text + '\\n' +\n textArea.value.substr(parents[i].end, textArea.value.length);\n start = i === 0 ? (start + prefix.length + replace.space) > 0 ?\n start + prefix.length + replace.space : 0 : start;\n addedLength += prefix.length + replace.space;\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n parents[j].start = j !== 0 ? prefix.length +\n parents[j].start + replace.space : parents[j].start;\n parents[j].end = prefix.length + parents[j].end + replace.space;\n }\n }\n this.restore(textArea, start, end + addedLength, null);\n }\n else {\n parents[i].text = parents[i].text.replace(regex, '');\n textArea.value = textArea.value.substr(0, parents[i].start + endLength) + parents[i].text + '\\n' +\n textArea.value.substr(parents[i].end + endLength, textArea.value.length);\n endLength -= regex.length;\n startLength = regex.length;\n this.restore(textArea, start - startLength, end + endLength, null);\n }\n }\n this.restore(textArea, null, null, e);\n };\n MDLists.prototype.appliedLine = function (line, prefixPattern, perfixObj, preTabSpaceLength) {\n var points = {};\n // eslint-disable-next-line\n var regex = new RegExp('^[' + this.syntax.UL.trim() + ']');\n var lineSplit = line.split('. ');\n var currentPrefix = lineSplit[0] + '. ';\n var isExist = regex.test(line.trim()) || line.trim() === this.syntax.OL.trim()\n || line.trim() === this.syntax.UL.trim() || /^\\d+$/.test(lineSplit[0].trim());\n var listFormat = this.olListType();\n var curTabSpaceLength = this.getTabSpace(line).length;\n if (this.currentAction === 'OL' && listFormat) {\n perfixObj[curTabSpaceLength.toString()] = !isNullOrUndefined(perfixObj[curTabSpaceLength.toString()]) ?\n perfixObj[curTabSpaceLength.toString()].valueOf() + 1 : 1;\n prefixPattern = perfixObj[curTabSpaceLength.toString()].valueOf().toString() + '. ';\n if (!isNullOrUndefined(preTabSpaceLength) && preTabSpaceLength > curTabSpaceLength) {\n perfixObj[preTabSpaceLength.toString()] = 0;\n }\n }\n if (isExist) {\n var replace = void 0;\n var pattern = void 0;\n // eslint-disable-next-line\n var space = 0;\n if (regex.test(line.trim())) {\n pattern = this.syntax.UL;\n replace = prefixPattern;\n points.space = prefixPattern.trim().length - this.syntax.UL.trim().length;\n }\n else if (/^\\d+$/.test(lineSplit[0].trim()) && listFormat) {\n pattern = lineSplit[0].trim() + '. ';\n replace = prefixPattern;\n points.space = this.syntax.UL.trim().length - currentPrefix.trim().length;\n }\n else if (/^\\d+$/.test(lineSplit[0].trim())) {\n pattern = lineSplit[0].trim() + '. ';\n replace = this.syntax.UL;\n points.space = this.syntax.UL.trim().length - currentPrefix.trim().length;\n }\n points.line = line.replace(pattern, replace);\n }\n return points;\n };\n MDLists.prototype.restore = function (textArea, start, end, event) {\n if (!isNullOrUndefined(start) && !isNullOrUndefined(start)) {\n this.selection.save(start, end);\n }\n if (!isNullOrUndefined(event)) {\n this.selection.restore(textArea);\n }\n if (event && event.callBack) {\n event.callBack({\n requestType: this.currentAction,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n MDLists.prototype.getListRegex = function () {\n var regex = '';\n var configKey = Object.keys(this.syntax);\n for (var j = 0; j < configKey.length; j++) {\n var syntax = this.selection.replaceSpecialChar(this.syntax[configKey[j]]);\n regex += regex === '' ? '^(' + syntax + ')|^(' + syntax.trim() + ')' :\n '|^(' + syntax + ')|^(' + syntax.trim() + ')';\n }\n // eslint-disable-next-line\n return new RegExp(regex);\n };\n return MDLists;\n}());\nexport { MDLists };\n","import { extend } from '@syncfusion/ej2-base';\nimport * as EVENTS from './../../common/constant';\nimport * as CONSTANT from './../../markdown-parser/base/constant';\n/**\n * MDFormats internal plugin\n *\n * @hidden\n\n */\nvar MDFormats = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {IMDFormats} options - specifies the formats\n * @hidden\n\n */\n function MDFormats(options) {\n extend(this, this, options, true);\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDFormats.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.FORMAT_TYPE, this.applyFormats, this);\n };\n MDFormats.prototype.applyFormats = function (e) {\n e.subCommand = e.subCommand.toLowerCase();\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n var parents = this.selection.getSelectedParentPoints(textArea);\n if (this.isAppliedFormat(parents) === e.subCommand) {\n if (e.subCommand === 'pre') {\n if (parents.length > 1) {\n this.applyCodeBlock(textArea, e, parents);\n }\n else {\n return;\n }\n }\n this.cleanFormat(textArea);\n this.restore(textArea, textArea.selectionStart, textArea.selectionEnd, e);\n return;\n }\n if (e.subCommand === 'p') {\n this.cleanFormat(textArea);\n this.restore(textArea, textArea.selectionStart, textArea.selectionEnd, e);\n return;\n }\n else {\n if ((e.subCommand === 'pre' && parents.length !== 1) || e.subCommand !== 'pre') {\n this.cleanFormat(textArea, e.subCommand);\n }\n }\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var addedLength = 0;\n parents = this.selection.getSelectedParentPoints(textArea);\n if (e.subCommand === 'pre') {\n if (parents.length > 1) {\n this.applyCodeBlock(textArea, e, parents);\n }\n else {\n extend(e, e, { subCommand: 'InlineCode' }, true);\n this.parent.observer.notify(CONSTANT.selectionCommand, e);\n }\n return;\n }\n for (var i = 0; i < parents.length; i++) {\n if (parents[i].text !== '' && !this.selection.isStartWith(parents[i].text, '\\\\' + this.syntax[e.subCommand])) {\n parents[i].text = this.syntax[e.subCommand] + parents[i].text;\n textArea.value = textArea.value.substr(0, parents[i].start) + parents[i].text + '\\n' +\n textArea.value.substr(parents[i].end, textArea.value.length);\n start = i === 0 ? start + this.syntax[e.subCommand].length : start;\n addedLength += this.syntax[e.subCommand].length;\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n parents[j].start = j !== 0 ?\n this.syntax[e.subCommand].length + parents[j].start : parents[j].start;\n parents[j].end = this.syntax[e.subCommand].length + parents[j].end;\n }\n }\n }\n else if (parents[i].text === '' && i === 0) {\n this.selection.save(start, end);\n if (this.selection.getSelectedText(textArea).length === 0) {\n parents[i].text = this.syntax[e.subCommand];\n textArea.value = textArea.value.substr(0, parents[i].start) + this.syntax[e.subCommand] +\n textArea.value.substr(parents[i].end, textArea.value.length);\n start = i === 0 ? start + this.syntax[e.subCommand].length : start;\n addedLength += this.syntax[e.subCommand].length;\n }\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n parents[j].start = j !== 0 ? 1 + parents[j].start : parents[j].start;\n parents[j].end = 1 + parents[j].end;\n }\n }\n }\n }\n this.restore(textArea, start, end + addedLength, e);\n };\n MDFormats.prototype.clearRegex = function () {\n var regex = '';\n var configKey = Object.keys(this.syntax);\n for (var j = 0; j < configKey.length && configKey[j] !== 'pre' && configKey[j] !== 'p'; j++) {\n regex += regex === '' ? '^(' + this.selection.replaceSpecialChar(this.syntax[configKey[j]].trim()) + ')' :\n '|^(' + this.selection.replaceSpecialChar(this.syntax[configKey[j]].trim()) + ')';\n }\n return regex;\n };\n MDFormats.prototype.cleanFormat = function (textArea, command) {\n var parents = this.selection.getSelectedParentPoints(textArea);\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var removeLength = 0;\n if (this.selection.isClear(parents, this.clearRegex())) {\n for (var i = 0; i < parents.length; i++) {\n var configKey = Object.keys(this.syntax);\n for (var j = 0; parents[i].text !== '' && j < configKey.length; j++) {\n var removeText = this.syntax[configKey[j]];\n if (configKey[j] === command) {\n continue;\n }\n // eslint-disable-next-line\n var regex = new RegExp('^(' + this.selection.replaceSpecialChar(removeText) + ')', 'gim');\n if (regex.test(parents[i].text)) {\n parents[i].text = parents[i].text.replace(regex, '');\n textArea.value = textArea.value.substr(0, parents[i].start) + parents[i].text + '\\n' +\n textArea.value.substr(parents[i].end, textArea.value.length);\n start = i === 0 ? (start - (removeText.length)) > 0 ? start - (removeText.length) : 0 : start;\n removeLength += removeText.length;\n if (parents.length !== 1) {\n for (var k = 0; k < parents.length; k++) {\n parents[k].start = k !== 0 ?\n parents[k].start - removeText.length : parents[k].start;\n parents[k].end = parents[k].end - removeText.length;\n }\n }\n break;\n }\n }\n if (parents[i].text === '' && i === 0) {\n this.selection.save(start, end);\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n parents[j].start = j !== 0 ? 1 + parents[j].start : parents[j].start;\n parents[j].end = 1 + parents[j].end;\n }\n }\n }\n }\n this.restore(textArea, start, end - removeLength);\n }\n };\n MDFormats.prototype.applyCodeBlock = function (textArea, event, parents) {\n var command = event.subCommand;\n var start = parents[0].start;\n var end = parents[parents.length - 1].end;\n var parentLines = this.selection.getAllParents(textArea.value);\n var firstPrevText = parentLines[parents[0].line - 1];\n var lastNextText = parentLines[(parents.length + 1) + 1];\n // eslint-disable-next-line\n var addedLength = 0;\n if (!this.selection.isStartWith(firstPrevText, this.syntax.pre.split('\\n')[0]) &&\n !this.selection.isStartWith(lastNextText, this.syntax.pre.split('\\n')[0])) {\n var lines = textArea.value.substring(start, end).split('\\n');\n var lastLine = lines[lines.length - 1] === '' ? '' : '\\n';\n textArea.value = textArea.value.substr(0, start) + this.syntax[\"\" + command] + textArea.value.substring(start, end) +\n lastLine + this.syntax[\"\" + command] +\n textArea.value.substr(end, textArea.value.length);\n start = this.selection.selectionStart + this.syntax[\"\" + command].length;\n end = this.selection.selectionEnd + this.syntax[\"\" + command].length - 1;\n }\n else {\n var cmd = this.syntax[\"\" + command];\n var selection = this.parent.markdownSelection.getSelectedInlinePoints(textArea);\n var startNo = textArea.value.substr(0, textArea.selectionStart).lastIndexOf(cmd);\n var endNo = textArea.value.substr(textArea.selectionEnd, textArea.selectionEnd).indexOf(cmd);\n endNo = endNo + selection.end;\n var repStartText = this.replaceAt(textArea.value.substr(0, selection.start), cmd, '', startNo, selection.start);\n var repEndText = this.replaceAt(textArea.value.substr(selection.end, textArea.value.length), cmd, '', 0, endNo);\n textArea.value = repStartText + selection.text + repEndText;\n start = this.selection.selectionStart - cmd.length;\n end = this.selection.selectionEnd - cmd.length;\n }\n this.restore(textArea, start, end, event);\n };\n MDFormats.prototype.replaceAt = function (input, search, replace, start, end) {\n return input.slice(0, start)\n + input.slice(start, end).replace(search, replace)\n + input.slice(end);\n };\n MDFormats.prototype.restore = function (textArea, start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(textArea);\n if (event && event.callBack) {\n event.callBack({\n requestType: event.subCommand,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n MDFormats.prototype.isAppliedFormat = function (lines, documentNode) {\n var format = 'p';\n // eslint-disable-next-line\n var configKey = Object.keys(this.syntax);\n var keys = Object.keys(this.syntax);\n var direction = this.parent.element.selectionDirection;\n var checkLine = direction === 'backward' ? lines[0].text : lines[lines.length - 1].text;\n for (var i = 0; !documentNode && i < keys.length; i++) {\n if (keys[i] !== 'pre' && this.selection.isStartWith(checkLine, this.syntax[keys[i]])) {\n format = keys[i];\n break;\n }\n else if (keys[i] === 'pre') {\n var parentLines = this.selection.getAllParents(this.parent.element.value);\n var firstPrevText = parentLines[lines[0].line - 1];\n var lastNextText = parentLines[lines.length + 1];\n if (this.selection.isStartWith(firstPrevText, this.syntax[keys[i]].split('\\n')[0]) &&\n this.selection.isStartWith(lastNextText, this.syntax[keys[i]].split('\\n')[0])) {\n format = keys[i];\n break;\n }\n }\n }\n return format;\n };\n return MDFormats;\n}());\nexport { MDFormats };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport { extend } from '@syncfusion/ej2-base';\nimport * as EVENTS from './../../common/constant';\n/**\n * SelectionCommands internal component\n *\n * @hidden\n\n */\nvar MDSelectionFormats = /** @class */ (function () {\n function MDSelectionFormats(parent) {\n extend(this, this, parent, true);\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDSelectionFormats.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.selectionCommand, this.applyCommands, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler, this);\n };\n MDSelectionFormats.prototype.keyDownHandler = function (e) {\n switch (e.event.action) {\n case 'bold':\n this.applyCommands({ subCommand: 'Bold', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'italic':\n this.applyCommands({ subCommand: 'Italic', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'strikethrough':\n this.applyCommands({ subCommand: 'StrikeThrough', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'uppercase':\n this.applyCommands({ subCommand: 'UpperCase', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'lowercase':\n this.applyCommands({ subCommand: 'LowerCase', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'superscript':\n this.applyCommands({ subCommand: 'SuperScript', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'subscript':\n this.applyCommands({ subCommand: 'SubScript', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n MDSelectionFormats.prototype.isBold = function (text, cmd) {\n return text.search('\\\\' + cmd + '\\\\' + cmd + '') !== -1;\n };\n MDSelectionFormats.prototype.isItalic = function (text, cmd) {\n return text.search('\\\\' + cmd) !== -1;\n };\n MDSelectionFormats.prototype.isMatch = function (text, cmd) {\n var matchText = [''];\n switch (cmd) {\n case this.syntax.Italic:\n matchText = text.match(this.singleCharRegx(cmd));\n break;\n case this.syntax.InlineCode:\n matchText = text.match(this.singleCharRegx(cmd));\n break;\n case this.syntax.StrikeThrough:\n matchText = text.match(this.singleCharRegx(cmd));\n break;\n }\n return matchText;\n };\n MDSelectionFormats.prototype.multiCharRegx = function (cmd) {\n // eslint-disable-next-line\n return new RegExp('(\\\\' + cmd + '\\\\' + cmd + ')', 'g');\n };\n MDSelectionFormats.prototype.singleCharRegx = function (cmd) {\n // eslint-disable-next-line\n return new RegExp('(\\\\' + cmd + ')', 'g');\n };\n MDSelectionFormats.prototype.isAppliedCommand = function (cmd) {\n // eslint-disable-next-line\n var selectCmd = '';\n var isFormat = false;\n var textArea = this.parent.element;\n var start = textArea.selectionStart;\n var splitAt = function (index) { return function (x) { return [x.slice(0, index), x.slice(index)]; }; };\n var splitText = splitAt(start)(textArea.value);\n var cmdB = this.syntax.Bold.substr(0, 1);\n var cmdI = this.syntax.Italic;\n var selectedText = this.parent.markdownSelection.getSelectedText(textArea);\n if (selectedText !== '' && selectedText === selectedText.toLocaleUpperCase() && cmd === 'UpperCase') {\n return true;\n }\n else if (selectedText === '') {\n var beforeText = textArea.value.substr(splitText[0].length - 1, 1);\n var afterText = splitText[1].substr(0, 1);\n if ((beforeText !== '' && afterText !== '' && beforeText.match(/[a-z]/i)) &&\n beforeText === beforeText.toLocaleUpperCase() && afterText === afterText.toLocaleUpperCase() && cmd === 'UpperCase') {\n return true;\n }\n }\n if (!(this.isBold(splitText[0], cmdB)) && !(this.isItalic(splitText[0], cmdI)) && !(this.isBold(splitText[1], cmdB)) &&\n !(this.isItalic(splitText[1], cmdI))) {\n if ((!isNullOrUndefined(this.isMatch(splitText[0], this.syntax.StrikeThrough)) &&\n !isNullOrUndefined(this.isMatch(splitText[1], this.syntax.StrikeThrough))) &&\n (this.isMatch(splitText[0], this.syntax.StrikeThrough).length % 2 === 1 &&\n this.isMatch(splitText[1], this.syntax.StrikeThrough).length % 2 === 1) && cmd === 'StrikeThrough') {\n isFormat = true;\n }\n if ((!isNullOrUndefined(this.isMatch(splitText[0], this.syntax.InlineCode)) &&\n !isNullOrUndefined(this.isMatch(splitText[1], this.syntax.InlineCode))) &&\n (this.isMatch(splitText[0], this.syntax.InlineCode).length % 2 === 1 &&\n this.isMatch(splitText[1], this.syntax.InlineCode).length % 2 === 1) && cmd === 'InlineCode') {\n isFormat = true;\n }\n /* eslint-disable */\n if ((!isNullOrUndefined(splitText[0].match(/\\/g)) && !isNullOrUndefined(splitText[1].match(/\\<\\/sub>/g))) &&\n (splitText[0].match(/\\/g).length % 2 === 1 &&\n splitText[1].match(/\\<\\/sub>/g).length % 2 === 1) && cmd === 'SubScript') {\n isFormat = true;\n }\n if ((!isNullOrUndefined(splitText[0].match(/\\/g)) && !isNullOrUndefined(splitText[1].match(/\\<\\/sup>/g))) &&\n (splitText[0].match(/\\/g).length % 2 === 1 && splitText[1].match(/\\<\\/sup>/g).length % 2 === 1) &&\n cmd === 'SuperScript') {\n isFormat = true;\n }\n /* eslint-enable */\n }\n if ((this.isBold(splitText[0], cmdB) && this.isBold(splitText[1], cmdB)) &&\n (splitText[0].match(this.multiCharRegx(cmdB)).length % 2 === 1 &&\n splitText[1].match(this.multiCharRegx(cmdB)).length % 2 === 1) && cmd === 'Bold') {\n isFormat = true;\n }\n splitText[0] = this.isBold(splitText[0], cmdB) ? splitText[0].replace(this.multiCharRegx(cmdB), '$%@') : splitText[0];\n splitText[1] = this.isBold(splitText[1], cmdB) ? splitText[1].replace(this.multiCharRegx(cmdB), '$%@') : splitText[1];\n if ((!isNullOrUndefined(this.isMatch(splitText[0], this.syntax.Italic)) &&\n !isNullOrUndefined(this.isMatch(splitText[1], this.syntax.Italic))) &&\n (this.isMatch(splitText[0], this.syntax.Italic).length % 2 === 1 &&\n this.isMatch(splitText[1], this.syntax.Italic).length % 2 === 1) && cmd === 'Italic') {\n isFormat = true;\n }\n if ((!isNullOrUndefined(this.isMatch(splitText[0], this.syntax.StrikeThrough)) &&\n !isNullOrUndefined(this.isMatch(splitText[1], this.syntax.StrikeThrough))) &&\n (this.isMatch(splitText[0], this.syntax.StrikeThrough).length % 2 === 1 &&\n this.isMatch(splitText[1], this.syntax.StrikeThrough).length % 2 === 1) && cmd === 'StrikeThrough') {\n isFormat = true;\n }\n if ((!isNullOrUndefined(this.isMatch(splitText[0], this.syntax.InlineCode)) &&\n !isNullOrUndefined(this.isMatch(splitText[1], this.syntax.InlineCode))) &&\n (this.isMatch(splitText[0], this.syntax.InlineCode).length % 2 === 1 &&\n this.isMatch(splitText[1], this.syntax.InlineCode).length % 2 === 1) && cmd === 'InlineCode') {\n isFormat = true;\n }\n /* eslint-disable */\n if ((!isNullOrUndefined(splitText[0].match(/\\/g)) && !isNullOrUndefined(splitText[1].match(/\\<\\/sub>/g))) &&\n (splitText[0].match(/\\/g).length % 2 === 1 && splitText[1].match(/\\<\\/sub>/g).length % 2 === 1) && cmd === 'SubScript') {\n isFormat = true;\n }\n if ((!isNullOrUndefined(splitText[0].match(/\\/g)) && !isNullOrUndefined(splitText[1].match(/\\<\\/sup>/g))) &&\n (splitText[0].match(/\\/g).length % 2 === 1 && splitText[1].match(/\\<\\/sup>/g).length % 2 === 1) && cmd === 'SuperScript') {\n isFormat = true;\n /* eslint-enable */\n }\n return isFormat;\n };\n MDSelectionFormats.prototype.applyCommands = function (e) {\n this.currentAction = e.subCommand;\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var addedLength = 0;\n var selection = this.parent.markdownSelection.getSelectedInlinePoints(textArea);\n if (this.isAppliedCommand(e.subCommand) && selection.text !== '') {\n var startCmd = this.syntax[e.subCommand];\n var endCmd = e.subCommand === 'SubScript' ? '' :\n e.subCommand === 'SuperScript' ? '' : this.syntax[e.subCommand];\n var startLength = (e.subCommand === 'UpperCase' || e.subCommand === 'LowerCase') ? 0 : startCmd.length;\n var startNo = textArea.value.substr(0, selection.start).lastIndexOf(startCmd);\n var endNo = textArea.value.substr(selection.end, textArea.value.length).indexOf(endCmd);\n endNo = endNo + selection.end;\n var repStartText = this.replaceAt(textArea.value.substr(0, selection.start), startCmd, '', startNo, selection.start);\n var repEndText = this.replaceAt(textArea.value.substr(selection.end, textArea.value.length), endCmd, '', 0, endNo);\n textArea.value = repStartText + selection.text + repEndText;\n this.restore(textArea, start - startLength, end - startLength, e);\n return;\n }\n if (selection.text !== '' && !this.isApplied(selection, e.subCommand)) {\n addedLength = (e.subCommand === 'UpperCase' || e.subCommand === 'LowerCase') ? 0 :\n this.syntax[e.subCommand].length;\n var repStart = textArea.value.substr(selection.start - this.syntax[e.subCommand].length, this.syntax[e.subCommand].length);\n var repEnd = void 0;\n if ((repStart === e.subCommand) || ((selection.start - this.syntax[e.subCommand].length ===\n textArea.value.indexOf(this.syntax[e.subCommand])) && (selection.end === textArea.value.lastIndexOf(this.syntax[e.subCommand]) || selection.end === textArea.value.lastIndexOf('/g, '').replace(/<\\/sub>/g, '');\n break;\n case 'SuperScript':\n text = text.replace(//g, '').replace(/<\\/sup>/g, '');\n break;\n }\n return text;\n };\n MDSelectionFormats.prototype.isApplied = function (line, command) {\n var regx = this.singleCharRegx(this.syntax[\"\" + command]);\n switch (command) {\n case 'SubScript':\n case 'SuperScript':\n regx = this.singleCharRegx(this.syntax[\"\" + command]);\n return regx.test(line.text);\n case 'Bold':\n case 'StrikeThrough':\n regx = this.multiCharRegx(this.syntax[\"\" + command].substr(0, 1));\n return regx.test(line.text);\n case 'UpperCase':\n case 'LowerCase':\n // eslint-disable-next-line\n regx = new RegExp('^[' + this.syntax[\"\" + command] + ']*$', 'g');\n return regx.test(line.text);\n case 'Italic': {\n var regTest = void 0;\n var regxB = this.multiCharRegx(this.syntax[\"\" + command].substr(0, 1));\n if (regxB.test(line.text)) {\n var repText = line.text;\n repText = repText.replace(regxB, '$%#');\n regTest = regx.test(repText);\n }\n else {\n regTest = regx.test(line.text);\n }\n return regTest;\n }\n case 'InlineCode':\n return regx.test(line.text);\n }\n };\n return MDSelectionFormats;\n}());\nexport { MDSelectionFormats };\n","/**\n * MarkdownSelection internal module\n *\n * @hidden\n\n */\nvar MarkdownSelection = /** @class */ (function () {\n function MarkdownSelection() {\n }\n /**\n * markdown getLineNumber method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @param {number} point - specifies the number value\n * @returns {number} - returns the value\n * @hidden\n\n */\n MarkdownSelection.prototype.getLineNumber = function (textarea, point) {\n return textarea.value.substr(0, point).split('\\n').length;\n };\n /**\n * markdown getSelectedText method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @returns {string} - specifies the string value\n * @hidden\n\n */\n MarkdownSelection.prototype.getSelectedText = function (textarea) {\n var start = textarea.selectionStart;\n var end = textarea.selectionEnd;\n return textarea.value.substring(start, end);\n };\n /**\n * markdown getAllParents method\n *\n * @param {string} value - specifies the string value\n * @returns {string[]} - returns the string value\n * @hidden\n\n */\n MarkdownSelection.prototype.getAllParents = function (value) {\n return value.split('\\n');\n };\n /**\n * markdown getSelectedLine method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @returns {string} - returns the string value\n * @hidden\n\n */\n MarkdownSelection.prototype.getSelectedLine = function (textarea) {\n var lines = this.getAllParents(textarea.value);\n var index = this.getLineNumber(textarea, textarea.selectionStart);\n return lines[index - 1];\n };\n /**\n * markdown getLine method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @param {number} index - specifies the number value\n * @returns {string} - returns the string value\n * @hidden\n\n */\n MarkdownSelection.prototype.getLine = function (textarea, index) {\n var lines = this.getAllParents(textarea.value);\n return lines[index];\n };\n /**\n * markdown getSelectedParentPoints method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @returns {string} - returns the string value\n * @hidden\n\n */\n MarkdownSelection.prototype.getSelectedParentPoints = function (textarea) {\n var lines = this.getAllParents(textarea.value);\n var start = this.getLineNumber(textarea, textarea.selectionStart);\n var end = this.getLineNumber(textarea, textarea.selectionEnd);\n var parents = this.getSelectedText(textarea).split('\\n');\n var selectedPoints = [];\n var selectedLine = lines[start - 1];\n var startLength = lines.slice(0, start - 1).join('').length;\n var firstPoint = {};\n firstPoint.line = start - 1;\n firstPoint.start = startLength + firstPoint.line;\n firstPoint.end = selectedLine !== '' ? firstPoint.start +\n selectedLine.length + 1 : firstPoint.start + selectedLine.length;\n firstPoint.text = selectedLine;\n selectedPoints.push(firstPoint);\n if (parents.length > 1) {\n for (var i = 1; i < parents.length - 1; i++) {\n var points = {};\n points.line = selectedPoints[i - 1].line + 1;\n points.start = parents[i] !== '' ? selectedPoints[i - 1].end : selectedPoints[i - 1].end;\n points.end = points.start + parents[i].length + 1;\n points.text = parents[i];\n selectedPoints.push(points);\n }\n var lastPoint = {};\n lastPoint.line = selectedPoints[selectedPoints.length - 1].line + 1;\n lastPoint.start = selectedPoints[selectedPoints.length - 1].end;\n lastPoint.end = lastPoint.start + lines[end - 1].length + 1;\n lastPoint.text = lines[end - 1];\n selectedPoints.push(lastPoint);\n }\n return selectedPoints;\n };\n /**\n * markdown setSelection method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @param {number} start - specifies the start vaulue\n * @param {number} end - specifies the end value\n * @returns {void}\n * @hidden\n\n */\n MarkdownSelection.prototype.setSelection = function (textarea, start, end) {\n textarea.setSelectionRange(start, end);\n textarea.focus();\n };\n /**\n * markdown save method\n *\n * @param {number} start - specifies the start vaulue\n * @param {number} end - specifies the end value\n * @returns {void}\n * @hidden\n\n */\n MarkdownSelection.prototype.save = function (start, end) {\n this.selectionStart = start;\n this.selectionEnd = end;\n };\n /**\n * markdown restore method\n *\n * @param {HTMLTextAreaElement} textArea - specifies the text area element\n * @returns {void}\n * @hidden\n\n */\n MarkdownSelection.prototype.restore = function (textArea) {\n this.setSelection(textArea, this.selectionStart, this.selectionEnd);\n };\n /**\n * markdown isStartWith method\n *\n * @param {string} line - specifies the string value\n * @param {string} command - specifies the string value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n MarkdownSelection.prototype.isStartWith = function (line, command) {\n var isStart = false;\n if (line) {\n var reg = line.trim() === command.trim() ?\n // eslint-disable-next-line\n new RegExp('^(' + this.replaceSpecialChar(command.trim()) + ')', 'gim') :\n // eslint-disable-next-line\n new RegExp('^(' + this.replaceSpecialChar(command) + ')', 'gim');\n isStart = reg.test(line.trim());\n }\n return isStart;\n };\n /**\n * markdown replaceSpecialChar method\n *\n * @param {string} value - specifies the string value\n * @returns {string} - returns the value\n * @hidden\n\n */\n MarkdownSelection.prototype.replaceSpecialChar = function (value) {\n // eslint-disable-next-line\n return value.replace(/[`~!@#$%^&*()_|+\\-=?;:'\",.<>\\{\\}\\[\\]\\\\\\/]/g, '\\\\$&');\n };\n /**\n * markdown isClear method\n *\n * @param {string} parents - specifies the parent element\n * @param {string} regex - specifies the regex value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n MarkdownSelection.prototype.isClear = function (parents, regex) {\n var isClear = false;\n for (var i = 0; i < parents.length; i++) {\n // eslint-disable-next-line\n if (new RegExp(regex, 'gim').test(parents[i].text)) {\n return true;\n }\n }\n return isClear;\n };\n /**\n * markdown getSelectedInlinePoints method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area\n * @returns {void}\n * @hidden\n\n */\n MarkdownSelection.prototype.getSelectedInlinePoints = function (textarea) {\n var start = textarea.selectionStart;\n var end = textarea.selectionEnd;\n var selection = this.getSelectedText(textarea);\n return { start: start, end: end, text: selection };\n };\n return MarkdownSelection;\n}());\nexport { MarkdownSelection };\n","import { debounce, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as EVENTS from './../../common/constant';\n/**\n * `Undo` module is used to handle undo actions.\n */\nvar UndoRedoCommands = /** @class */ (function () {\n function UndoRedoCommands(parent, options) {\n this.undoRedoStack = [];\n this.parent = parent;\n this.undoRedoSteps = !isNullOrUndefined(options) ? options.undoRedoSteps : 30;\n this.undoRedoTimer = !isNullOrUndefined(options) ? options.undoRedoTimer : 300;\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n UndoRedoCommands.prototype.addEventListener = function () {\n var debounceListener = debounce(this.keyUp, this.undoRedoTimer);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, debounceListener, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDown, this);\n this.parent.observer.on(EVENTS.ACTION, this.onAction, this);\n this.parent.observer.on(EVENTS.MODEL_CHANGED_PLUGIN, this.onPropertyChanged, this);\n };\n UndoRedoCommands.prototype.onPropertyChanged = function (props) {\n for (var _i = 0, _a = Object.keys(props.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'undoRedoSteps':\n this.undoRedoSteps = props.newProp.undoRedoSteps;\n break;\n case 'undoRedoTimer':\n this.undoRedoTimer = props.newProp.undoRedoTimer;\n break;\n }\n }\n };\n UndoRedoCommands.prototype.removeEventListener = function () {\n var debounceListener = debounce(this.keyUp, 300);\n this.parent.observer.off(EVENTS.KEY_UP_HANDLER, debounceListener);\n this.parent.observer.off(EVENTS.KEY_DOWN_HANDLER, this.keyDown);\n this.parent.observer.off(EVENTS.ACTION, this.onAction);\n this.parent.observer.off(EVENTS.MODEL_CHANGED_PLUGIN, this.onPropertyChanged);\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n UndoRedoCommands.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * onAction method\n *\n * @param {IMarkdownSubCommands} e - specifies the sub commands\n * @returns {void}\n * @hidden\n\n */\n UndoRedoCommands.prototype.onAction = function (e) {\n if (e.subCommand === 'Undo') {\n this.undo(e);\n }\n else {\n this.redo(e);\n }\n };\n UndoRedoCommands.prototype.keyDown = function (e) {\n var event = e.event;\n // eslint-disable-next-line\n var proxy = this;\n switch (event.action) {\n case 'undo':\n event.preventDefault();\n proxy.undo(e);\n break;\n case 'redo':\n event.preventDefault();\n proxy.redo(e);\n break;\n }\n };\n UndoRedoCommands.prototype.keyUp = function (e) {\n if (e.event.keyCode !== 17 && !e.event.ctrlKey) {\n this.saveData(e);\n }\n };\n /**\n * MD collection stored string format.\n *\n * @param {KeyboardEvent} e - specifies the key board event\n * @function saveData\n * @returns {void}\n * @hidden\n\n */\n UndoRedoCommands.prototype.saveData = function (e) {\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var textValue = this.parent.element.value;\n var changEle = { text: textValue, start: start, end: end };\n if (this.undoRedoStack.length >= this.steps) {\n this.undoRedoStack = this.undoRedoStack.slice(0, this.steps + 1);\n }\n if (this.undoRedoStack.length > 1 && (this.undoRedoStack[this.undoRedoStack.length - 1].start === start) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].end === end)) {\n return;\n }\n this.undoRedoStack.push(changEle);\n this.steps = this.undoRedoStack.length - 1;\n if (this.steps > this.undoRedoSteps) {\n this.undoRedoStack.shift();\n this.steps--;\n }\n if (e && e.callBack) {\n e.callBack();\n }\n };\n /**\n * Undo the editable text.\n *\n * @param {IMarkdownSubCommands} e - specifies the sub commands\n * @function undo\n * @returns {void}\n * @hidden\n\n */\n UndoRedoCommands.prototype.undo = function (e) {\n if (this.steps > 0) {\n this.currentAction = 'Undo';\n var start = this.undoRedoStack[this.steps - 1].start;\n var end = this.undoRedoStack[this.steps - 1].end;\n var removedContent = this.undoRedoStack[this.steps - 1].text;\n this.parent.element.value = removedContent;\n this.parent.element.focus();\n this.steps--;\n this.restore(this.parent.element, start, end, e);\n }\n };\n /**\n * Redo the editable text.\n *\n * @param {IMarkdownSubCommands} e - specifies the sub commands\n * @function redo\n * @returns {void}\n * @hidden\n\n */\n UndoRedoCommands.prototype.redo = function (e) {\n if (this.undoRedoStack[this.steps + 1] != null) {\n this.currentAction = 'Redo';\n var start = this.undoRedoStack[this.steps + 1].start;\n var end = this.undoRedoStack[this.steps + 1].end;\n this.parent.element.value = this.undoRedoStack[this.steps + 1].text;\n this.parent.element.focus();\n this.steps++;\n this.restore(this.parent.element, start, end, e);\n }\n };\n UndoRedoCommands.prototype.restore = function (textArea, start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(textArea);\n if (event && event.callBack) {\n event.callBack({\n requestType: this.currentAction,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n /**\n * getUndoStatus method\n *\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n UndoRedoCommands.prototype.getUndoStatus = function () {\n var status = { undo: false, redo: false };\n if (this.steps > 0) {\n status.undo = true;\n }\n if (this.undoRedoStack[this.steps + 1] != null) {\n status.redo = true;\n }\n return status;\n };\n return UndoRedoCommands;\n}());\nexport { UndoRedoCommands };\n","import * as CONSTANT from './../base/constant';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar MDLink = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {MarkdownParser} parent - specifies the parent element\n * @hidden\n\n */\n function MDLink(parent) {\n this.parent = parent;\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDLink.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.LINK_COMMAND, this.createLink, this);\n };\n MDLink.prototype.createLink = function (e) {\n var textArea = this.parent.element;\n textArea.focus();\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var text = (e.subCommand === 'Image') ? this.selection.getSelectedText(textArea) : e.item.text;\n var startOffset = (e.subCommand === 'Image') ? (start + 2) : (start + 1);\n var endOffset = (e.subCommand === 'Image') ? (end + 2) : (end + 1);\n text = (e.subCommand === 'Image') ? '![' + text + '](' + e.item.url + ')' : '[' + text + '](' + e.item.url + ')';\n textArea.value = textArea.value.substr(0, start)\n + text + textArea.value.substr(end, textArea.value.length);\n this.parent.markdownSelection.setSelection(textArea, startOffset, endOffset);\n this.restore(textArea, startOffset, endOffset, e);\n };\n MDLink.prototype.restore = function (textArea, start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(textArea);\n if (event && event.callBack) {\n event.callBack({\n requestType: event.subCommand,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n return MDLink;\n}());\nexport { MDLink };\n","import * as CONSTANT from './../base/constant';\nimport { extend } from '@syncfusion/ej2-base';\nimport * as EVENTS from './../../common/constant';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar MDTable = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {IMDTable} options - specifies the options\n * @hidden\n\n */\n function MDTable(options) {\n extend(this, this, options, true);\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDTable.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.MD_TABLE, this.createTable, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n MDTable.prototype.removeEventListener = function () {\n this.parent.observer.off(CONSTANT.MD_TABLE, this.createTable);\n this.parent.observer.off(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown);\n };\n /**\n * markdown destroy method\n *\n * @returns {void}\n * @hidden\n\n */\n MDTable.prototype.destroy = function () {\n this.removeEventListener();\n };\n MDTable.prototype.onKeyDown = function (e) {\n if (e.event.action === 'insert-table') {\n e.item = e.value;\n this.createTable(e);\n }\n };\n MDTable.prototype.createTable = function (e) {\n this.element = this.parent.element;\n var start = this.element.selectionStart;\n var end = this.element.selectionEnd;\n var textAreaInitial = this.element.value;\n this.locale = e;\n this.selection.save(start, end);\n this.restore(this.element.selectionStart, this.element.selectionEnd, null);\n this.insertTable(start, end, textAreaInitial, e);\n };\n MDTable.prototype.getTable = function () {\n var table = '';\n table += this.textNonEmpty();\n table += this.tableHeader(this.locale);\n table += this.tableCell(this.locale);\n return table;\n };\n MDTable.prototype.tableHeader = function (e) {\n var text = '';\n for (var i = 1; i <= 2; i++) {\n text += '|';\n for (var j = 1; j <= 2; j++) {\n if (i === 1) {\n text += e.item.headingText + ' ' + j + '|';\n }\n else {\n text += '---------|';\n }\n }\n text += this.insertLine();\n }\n return text;\n };\n MDTable.prototype.tableCell = function (e) {\n var text = '';\n for (var i = 1; i <= 2; i++) {\n text += '|';\n for (var j = 1; j <= 2; j++) {\n text += e.item.colText + ' ' + this.convertToLetters(i) + j + '|';\n }\n text += this.insertLine();\n }\n text += this.insertLine();\n return text;\n };\n MDTable.prototype.insertLine = function () {\n var dummyElement = document.createElement('div');\n dummyElement.innerHTML = '\\n';\n return dummyElement.textContent;\n };\n MDTable.prototype.insertTable = function (start, end, textAreaInitial, e) {\n var parentText = this.selection.getSelectedParentPoints(this.element);\n var lastLineSplit = parentText[parentText.length - 1].text.split(' ', 2);\n var syntaxArr = this.getFormatTag();\n // eslint-disable-next-line\n var syntaxCount = 0;\n if (lastLineSplit.length < 2) {\n this.element.value = this.updateValue(this.getTable());\n this.makeSelection(textAreaInitial, start, end);\n }\n else {\n if (this.ensureFormatApply(parentText[parentText.length - 1].text)) {\n this.checkValid(start, end, this.getTable(), textAreaInitial, e, lastLineSplit, parentText, syntaxArr);\n }\n else {\n this.element.value = this.updateValue(this.getTable());\n this.makeSelection(textAreaInitial, start, end);\n }\n }\n this.restore(this.element.selectionStart, this.element.selectionEnd, e);\n };\n MDTable.prototype.makeSelection = function (textAreaInitial, start, end) {\n end = start + (textAreaInitial.length > 0 ? 12 : 10); //end is added 12 or 10 because to make the table heading selected\n start += textAreaInitial.length > 0 ? 3 : 1; // Start is added 3 or 1 because new lines are added when inserting table\n this.selection.setSelection(this.element, start, end);\n };\n MDTable.prototype.getFormatTag = function () {\n var syntaxFormatKey = Object.keys(this.syntaxTag.Formats);\n var syntaxListKey = Object.keys(this.syntaxTag.List);\n var syntaxArr = [];\n for (var i = 0; i < syntaxFormatKey.length; i++) {\n syntaxArr.push(this.syntaxTag.Formats[syntaxFormatKey[i]]);\n }\n for (var j = 0; j < syntaxListKey.length; j++) {\n syntaxArr.push(this.syntaxTag.List[syntaxListKey[j]]);\n }\n return syntaxArr;\n };\n MDTable.prototype.ensureFormatApply = function (line) {\n var formatTags = this.getFormatTag();\n var formatSplitZero = line.trim().split(' ', 2)[0] + ' ';\n for (var i = 0; i < formatTags.length; i++) {\n if (formatSplitZero === formatTags[i] || /^[\\d.]+[ ]+$/.test(formatSplitZero)) {\n return true;\n }\n }\n return false;\n };\n MDTable.prototype.ensureStartValid = function (firstLine, parentText) {\n var firstLineSplit = parentText[0].text.split(' ', 2);\n for (var i = firstLine + 1; i <= firstLine + firstLineSplit[0].length + 1; i++) {\n if (this.element.selectionStart === i || this.element.selectionEnd === i) {\n return false;\n }\n }\n return true;\n };\n MDTable.prototype.ensureEndValid = function (lastLine, formatSplitLength) {\n for (var i = lastLine + 1; i <= lastLine + formatSplitLength + 1; i++) {\n if (this.element.selectionEnd === i) {\n return false;\n }\n }\n return true;\n };\n MDTable.prototype.updateValueWithFormat = function (formatSplit, text) {\n var textApplyFormat = this.element.value.substring(this.element.selectionEnd, this.element.value.length);\n text += textApplyFormat.replace(textApplyFormat, (formatSplit[0] + ' ' + textApplyFormat));\n return this.element.value.substr(0, this.element.selectionStart) + text;\n };\n MDTable.prototype.updateValue = function (text) {\n return this.element.value.substr(0, this.element.selectionStart) + text +\n this.element.value.substr(this.element.selectionEnd, this.element.value.length);\n };\n MDTable.prototype.checkValid = function (start, end, text, textAreaInitial, \n // eslint-disable-next-line\n e, formatSplit, parentText, syntaxArr) {\n if (this.ensureStartValid(parentText[0].start, parentText) &&\n this.ensureEndValid(parentText[parentText.length - 1].start, formatSplit[0].length)) {\n if (start === parentText[0].start) {\n if (start !== end && end !== (parentText[parentText.length - 1].end - 1)) {\n this.element.value = this.updateValueWithFormat(formatSplit, text);\n }\n else {\n this.element.value = this.updateValue(text);\n }\n }\n else if (end === parentText[parentText.length - 1].end - 1) {\n this.element.value = this.updateValue(text);\n }\n else {\n this.element.value = this.updateValueWithFormat(formatSplit, text);\n }\n this.makeSelection(textAreaInitial, start, end);\n }\n };\n MDTable.prototype.convertToLetters = function (rowNumber) {\n var baseChar = ('A').charCodeAt(0);\n var letters = '';\n do {\n rowNumber -= 1;\n letters = String.fromCharCode(baseChar + (rowNumber % 26)) + letters;\n rowNumber = (rowNumber / 26) >> 0;\n } while (rowNumber > 0);\n return letters;\n };\n MDTable.prototype.textNonEmpty = function () {\n var emptyText = '';\n if (this.isCursorBased() || this.isSelectionBased()) {\n if (this.element.value.length > 0) {\n emptyText += this.insertLine();\n emptyText += this.insertLine(); // to append two new line when textarea having content.\n }\n }\n return emptyText;\n };\n MDTable.prototype.isCursorBased = function () {\n return this.element.selectionStart === this.element.selectionEnd;\n };\n MDTable.prototype.isSelectionBased = function () {\n return this.element.selectionStart !== this.element.selectionEnd;\n };\n MDTable.prototype.restore = function (start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(this.element);\n if (event && event.callBack) {\n event.callBack({\n requestType: event.subCommand,\n selectedText: this.selection.getSelectedText(this.element),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n return MDTable;\n}());\nexport { MDTable };\n","import * as CONSTANT from './../base/constant';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar ClearFormat = /** @class */ (function () {\n /**\n * Constructor for creating the clear format plugin\n *\n * @param {MarkdownParser} parent - specifies the parent element\n * @hidden\n\n */\n function ClearFormat(parent) {\n this.parent = parent;\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n ClearFormat.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.CLEAR_COMMAND, this.clear, this);\n };\n ClearFormat.prototype.replaceRegex = function (data) {\n /* eslint-disable */\n return data.replace(/\\*/ig, '\\\\*').replace(/\\&/ig, '\\\\&')\n .replace(/\\-/ig, '\\\\-').replace(/\\^/ig, '\\\\^')\n .replace(/\\$/ig, '\\\\$').replace(/\\./ig, '\\\\.')\n .replace(/\\|/ig, '\\\\|').replace(/\\?/ig, '\\\\?')\n .replace(/\\+/ig, '\\\\+').replace(/\\-/ig, '\\\\-')\n .replace(/\\&/ig, '\\\\&');\n /* eslint-enable */\n };\n ClearFormat.prototype.clearSelectionTags = function (text) {\n var data = this.parent.selectionTags;\n var keys = Object.keys(data);\n for (var num = 0; num < keys.length; num++) {\n var key = keys[num];\n // eslint-disable-next-line\n if (data.hasOwnProperty(key) && data[key] !== '') {\n var expString = this.replaceRegex(data[\"\" + key]);\n var regExp = void 0;\n var startExp = data[\"\" + key].length;\n var endExp = (data[\"\" + key] === '' || data[\"\" + key] === '') ? data[\"\" + key].length + 1 : data[\"\" + key].length;\n if (data[\"\" + key] === '') {\n // eslint-disable-next-line\n regExp = new RegExp('(.*?)<\\/sup>', 'ig');\n }\n else if (data[\"\" + key] === '') {\n // eslint-disable-next-line\n regExp = new RegExp('(.*?)<\\/sub>', 'ig');\n }\n else {\n // eslint-disable-next-line\n regExp = new RegExp(expString + '(.*?)' + expString, 'ig');\n }\n var val = text.match(regExp);\n for (var index = 0; val && index < val.length && val[index] !== ''; index++) {\n // eslint-disable-next-line max-len\n text = text.replace(val[index], val[index].substr(startExp, val[index].length - endExp - startExp));\n }\n }\n }\n return text;\n };\n ClearFormat.prototype.clearFormatTags = function (text) {\n var lines = text.split('\\n');\n return this.clearFormatLines(lines);\n };\n ClearFormat.prototype.clearFormatLines = function (lines) {\n var tags = [this.parent.formatTags, this.parent.listTags];\n var str = '';\n for (var len = 0; len < lines.length; len++) {\n for (var num = 0; num < tags.length; num++) {\n var data = tags[num];\n var keys = Object.keys(data);\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n // eslint-disable-next-line\n if (data.hasOwnProperty(key) && data[key] !== '') {\n if (lines[len].indexOf(data[\"\" + key]) === 0) {\n lines[len] = lines[len].replace(data[\"\" + key], '');\n lines[len] = this.clearFormatLines([lines[len]]);\n }\n }\n }\n }\n str = str + lines[len] + ((len !== lines.length - 1) ? '\\n' : '');\n }\n return str;\n };\n ClearFormat.prototype.clear = function (e) {\n var textArea = this.parent.element;\n textArea.focus();\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var text = this.selection.getSelectedText(textArea);\n text = this.clearSelectionTags(text);\n text = this.clearFormatTags(text);\n textArea.value = textArea.value.substr(0, start)\n + text + textArea.value.substr(end, textArea.value.length);\n this.parent.markdownSelection.setSelection(textArea, start, start + text.length);\n this.restore(textArea, start, start + text.length, e);\n };\n ClearFormat.prototype.restore = function (textArea, start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(textArea);\n if (event && event.callBack) {\n event.callBack({\n requestType: event.subCommand,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n return ClearFormat;\n}());\nexport { ClearFormat };\n","import * as CONSTANT from './../base/constant';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar MDInsertText = /** @class */ (function () {\n /**\n * Constructor for creating the insert text plugin\n *\n * @param {MarkdownParser} parent - specifies the parent element\n * @hidden\n\n */\n function MDInsertText(parent) {\n this.parent = parent;\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDInsertText.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INSERT_TEXT_COMMAND, this.InsertTextExec, this);\n };\n MDInsertText.prototype.InsertTextExec = function (e) {\n var textArea = this.parent.element;\n textArea.focus();\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var text = e.value.text;\n var startOffset = start + text.length;\n var endOffset = end + text.length;\n textArea.value = textArea.value.substr(0, start)\n + text + textArea.value.substr(end, textArea.value.length);\n this.parent.markdownSelection.setSelection(textArea, startOffset, endOffset);\n this.restore(textArea, startOffset, endOffset, e);\n };\n MDInsertText.prototype.restore = function (textArea, start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(textArea);\n if (event && event.callBack) {\n event.callBack({\n requestType: event.subCommand,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n return MDInsertText;\n}());\nexport { MDInsertText };\n","import { Observer } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './constant';\nimport { MDLists } from './../plugin/lists';\nimport { MDFormats } from './../plugin/formats';\nimport { MDSelectionFormats } from './../plugin/md-selection-formats';\nimport { MarkdownSelection } from './../plugin/markdown-selection';\nimport { extend } from '@syncfusion/ej2-base';\nimport { markdownFormatTags, markdownListsTags, markdownSelectionTags } from './../../common/config';\nimport { UndoRedoCommands } from './../plugin/undo';\nimport { MDLink } from './../plugin/link';\nimport { MDTable } from './../plugin/table';\nimport * as EVENTS from './../../common/constant';\nimport { ClearFormat } from './../plugin/clearformat';\nimport { MDInsertText } from './../plugin/insert-text';\n/**\n * MarkdownParser internal component\n *\n * @hidden\n\n */\nvar MarkdownParser = /** @class */ (function () {\n /**\n * Constructor for creating the component\n *\n * @param {IMarkdownParserModel} options - specifies the options\n * @hidden\n\n */\n function MarkdownParser(options) {\n this.initialize();\n extend(this, this, options, true);\n this.observer = new Observer(this);\n this.markdownSelection = new MarkdownSelection();\n this.listObj = new MDLists({ parent: this, syntax: this.listTags });\n this.formatObj = new MDFormats({ parent: this, syntax: this.formatTags });\n this.undoRedoManager = new UndoRedoCommands(this, options.options);\n this.mdSelectionFormats = new MDSelectionFormats({ parent: this, syntax: this.selectionTags });\n this.linkObj = new MDLink(this);\n this.tableObj = new MDTable({ parent: this, syntaxTag: ({ Formats: this.formatTags, List: this.listTags }) });\n this.clearObj = new ClearFormat(this);\n this.insertTextObj = new MDInsertText(this);\n this.wireEvents();\n }\n MarkdownParser.prototype.initialize = function () {\n this.formatTags = markdownFormatTags;\n this.listTags = markdownListsTags;\n this.selectionTags = markdownSelectionTags;\n };\n MarkdownParser.prototype.wireEvents = function () {\n this.observer.on(EVENTS.KEY_DOWN, this.editorKeyDown, this);\n this.observer.on(EVENTS.KEY_UP, this.editorKeyUp, this);\n this.observer.on(EVENTS.MODEL_CHANGED, this.onPropertyChanged, this);\n };\n MarkdownParser.prototype.onPropertyChanged = function (props) {\n this.observer.notify(EVENTS.MODEL_CHANGED_PLUGIN, props);\n };\n MarkdownParser.prototype.editorKeyDown = function (e) {\n this.observer.notify(EVENTS.KEY_DOWN_HANDLER, e);\n };\n MarkdownParser.prototype.editorKeyUp = function (e) {\n this.observer.notify(EVENTS.KEY_UP_HANDLER, e);\n };\n /* eslint-disable */\n /**\n * markdown execCommand method\n *\n * @param {MarkdownExecCommand} command - specifies the command\n * @param {T} - specifies the value\n * @param {Event} event - specifies the event\n * @param {Function} callBack - specifies the call back function\n * @param {string} text - specifies the string value\n * @param {T} exeValue - specifies the value\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n MarkdownParser.prototype.execCommand = function (command, value, event, callBack, text, exeValue) {\n switch (command.toLocaleLowerCase()) {\n case 'lists':\n this.observer.notify(CONSTANT.LISTS_COMMAND, { subCommand: value, event: event, callBack: callBack });\n break;\n case 'formats':\n this.observer.notify(EVENTS.FORMAT_TYPE, { subCommand: value, event: event, callBack: callBack });\n break;\n case 'actions':\n this.observer.notify(EVENTS.ACTION, { subCommand: value, event: event, callBack: callBack });\n break;\n case 'style':\n case 'effects':\n case 'casing':\n this.observer.notify(CONSTANT.selectionCommand, { subCommand: value, event: event, callBack: callBack });\n break;\n case 'links':\n case 'images':\n this.observer.notify(CONSTANT.LINK_COMMAND, { subCommand: value, event: event, callBack: callBack, item: exeValue });\n break;\n case 'table':\n switch (value.toString().toLocaleLowerCase()) {\n case 'createtable':\n this.observer.notify(CONSTANT.MD_TABLE, { subCommand: value, item: exeValue, event: event, callBack: callBack });\n break;\n }\n break;\n case 'clear':\n this.observer.notify(CONSTANT.CLEAR_COMMAND, { subCommand: value, event: event, callBack: callBack });\n break;\n case 'inserttext':\n this.observer.notify(CONSTANT.INSERT_TEXT_COMMAND, { subCommand: value, event: event, callBack: callBack,\n value: { text: exeValue } });\n break;\n }\n };\n return MarkdownParser;\n}());\nexport { MarkdownParser };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Formatter } from './formatter';\nimport { MarkdownParser } from './../../markdown-parser/base/markdown-parser';\nimport { extend } from '@syncfusion/ej2-base';\nimport { markdownKeyConfig, markdownListsTags, markdownFormatTags, markdownSelectionTags } from './../../common/config';\n/**\n * Markdown adapter\n *\n * @hidden\n\n */\nvar MarkdownFormatter = /** @class */ (function (_super) {\n __extends(MarkdownFormatter, _super);\n function MarkdownFormatter(options) {\n var _this = _super.call(this) || this;\n _this.initialize();\n extend(_this, _this, options, true);\n if (options && _this.element) {\n _this.updateFormatter(_this.element, document, options.options);\n }\n return _this;\n }\n MarkdownFormatter.prototype.initialize = function () {\n this.keyConfig = markdownKeyConfig;\n this.formatTags = markdownFormatTags;\n this.listTags = markdownListsTags;\n this.selectionTags = markdownSelectionTags;\n };\n /**\n * Update the formatter of RichTextEditor\n *\n * @param {Element} editElement - specifies the edit element.\n * @param {Document} doc - specifies the document.\n * @param {number} options - specifies the options\n * @returns {void}\n * @hidden\n\n */\n MarkdownFormatter.prototype.updateFormatter = function (editElement, doc, options) {\n if (editElement) {\n this.editorManager = new MarkdownParser({\n element: editElement,\n formatTags: this.formatTags,\n listTags: this.listTags,\n selectionTags: this.selectionTags,\n options: options\n });\n }\n };\n return MarkdownFormatter;\n}(Formatter));\nexport { MarkdownFormatter };\n","import { MarkdownSelection } from '../../markdown-parser/plugin/markdown-selection';\nimport * as events from '../base/constant';\nimport { getDefaultMDTbStatus } from '../../common/util';\n/**\n * MarkdownToolbarStatus module for refresh the toolbar status\n */\nvar MarkdownToolbarStatus = /** @class */ (function () {\n function MarkdownToolbarStatus(parent) {\n this.toolbarStatus = this.prevToolbarStatus = getDefaultMDTbStatus();\n this.selection = new MarkdownSelection();\n this.parent = parent;\n this.element = this.parent.contentModule.getEditPanel();\n this.addEventListener();\n }\n MarkdownToolbarStatus.prototype.addEventListener = function () {\n this.parent.on(events.toolbarRefresh, this.onRefreshHandler, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n MarkdownToolbarStatus.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarRefresh, this.onRefreshHandler);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n MarkdownToolbarStatus.prototype.onRefreshHandler = function (args) {\n var parentsLines = this.selection.getSelectedParentPoints(this.element);\n this.toolbarStatus = {\n orderedlist: args.documentNode ? false : this.isListsApplied(parentsLines, 'OL'),\n unorderedlist: args.documentNode ? false : this.isListsApplied(parentsLines, 'UL'),\n formats: this.currentFormat(parentsLines, args.documentNode),\n bold: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('Bold'),\n italic: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('Italic'),\n inlinecode: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('InlineCode'),\n strikethrough: args.documentNode ? false :\n this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('StrikeThrough'),\n subscript: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('SubScript'),\n superscript: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('SuperScript'),\n uppercase: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('UpperCase')\n };\n if (this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('InlineCode')) {\n this.toolbarStatus.formats = 'pre';\n }\n var tbStatusString = JSON.stringify(this.toolbarStatus);\n this.parent.notify(events.toolbarUpdated, this.toolbarStatus);\n if (JSON.stringify(this.prevToolbarStatus) !== tbStatusString) {\n this.parent.notify(events.updateTbItemsStatus, { html: null, markdown: JSON.parse(tbStatusString) });\n this.prevToolbarStatus = JSON.parse(tbStatusString);\n }\n };\n MarkdownToolbarStatus.prototype.isListsApplied = function (lines, type) {\n var isApply = true;\n if (type === 'OL') {\n for (var i = 0; i < lines.length; i++) {\n var lineSplit = lines[i].text.trim().split(' ', 2)[0] + ' ';\n if (!/^[\\d.]+[ ]+$/.test(lineSplit)) {\n isApply = false;\n break;\n }\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n if (!this.selection.isStartWith(lines[i].text, this.parent.formatter.listTags[\"\" + type])) {\n isApply = false;\n break;\n }\n }\n }\n return isApply;\n };\n MarkdownToolbarStatus.prototype.currentFormat = function (lines, documentNode) {\n var format = 'p';\n var keys = Object.keys(this.parent.formatter.formatTags);\n var direction = this.element.selectionDirection;\n var checkLine = direction === 'backward' ? lines[0].text : lines[lines.length - 1].text;\n for (var i = 0; !documentNode && i < keys.length; i++) {\n if (keys[i] !== 'pre' && this.selection.isStartWith(checkLine, this.parent.formatter.formatTags[keys[i]])) {\n format = keys[i];\n break;\n }\n else if (keys[i] === 'pre') {\n if (this.codeFormat()) {\n format = keys[i];\n break;\n }\n }\n }\n return format;\n };\n MarkdownToolbarStatus.prototype.codeFormat = function () {\n var isFormat = false;\n var textArea = this.parent.inputElement;\n var start = textArea.selectionStart;\n var splitAt = function (index) { return function (x) { return [x.slice(0, index), x.slice(index)]; }; };\n var splitText = splitAt(start)(textArea.value);\n var cmdPre = this.parent.formatter.formatTags.pre;\n var selectedText = this.getSelectedText(textArea);\n if (selectedText !== '' && selectedText === selectedText.toLocaleUpperCase()) {\n return true;\n }\n else if (selectedText === '') {\n var beforeText = textArea.value.substr(splitText[0].length - 1, 1);\n var afterText = splitText[1].substr(0, 1);\n if ((beforeText !== '' && afterText !== '' && beforeText.match(/[a-z]/i)) &&\n beforeText === beforeText.toLocaleUpperCase() && afterText === afterText.toLocaleUpperCase()) {\n return true;\n }\n }\n if ((this.isCode(splitText[0], cmdPre) && this.isCode(splitText[1], cmdPre)) &&\n (splitText[0].match(this.multiCharRegx(cmdPre)).length % 2 === 1 &&\n splitText[1].match(this.multiCharRegx(cmdPre)).length % 2 === 1)) {\n isFormat = true;\n }\n return isFormat;\n };\n MarkdownToolbarStatus.prototype.getSelectedText = function (textarea) {\n return textarea.value.substring(textarea.selectionStart, textarea.selectionEnd);\n };\n MarkdownToolbarStatus.prototype.isCode = function (text, cmd) {\n return text.search('\\\\' + cmd + '') !== -1;\n };\n MarkdownToolbarStatus.prototype.multiCharRegx = function (cmd) {\n // eslint-disable-next-line\n return new RegExp('(\\\\' + cmd + ')', 'g');\n };\n return MarkdownToolbarStatus;\n}());\nexport { MarkdownToolbarStatus };\n","/**\n * Markdown module is used to render Rich Text Editor as Markdown editor content\n *\n * @hidden\n\n */\nvar MarkdownRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent.\n */\n function MarkdownRender(parent) {\n this.parent = parent;\n }\n /**\n * The function is used to render Rich Text Editor content div\n *\n * @returns {void}\n * @hidden\n\n */\n MarkdownRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var div = this.parent.createElement('div', { id: this.parent.getID() + '_view', className: 'e-rte-content' });\n this.editableElement = this.parent.createElement('textarea', {\n className: 'e-content',\n id: this.parent.getID() + '_editable-content',\n attrs: { 'aria-labelledby': this.parent.getID() + '_view' }\n });\n div.appendChild(this.editableElement);\n this.setPanel(div);\n rteObj.element.appendChild(div);\n };\n /**\n * Get the content div element of RichTextEditor\n *\n * @returns {Element} - specifies the element\n * @hidden\n\n */\n MarkdownRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the element\n * @hidden\n\n */\n MarkdownRender.prototype.getEditPanel = function () {\n return this.editableElement;\n };\n /**\n * Returns the text content as string.\n *\n * @returns {string} - specifies the string values.\n */\n MarkdownRender.prototype.getText = function () {\n return this.getEditPanel().value;\n };\n /**\n * Set the content div element of RichTextEditor\n *\n * @param {Element} panel - specifies the element.\n * @returns {void}\n * @hidden\n\n */\n MarkdownRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {void}\n * @hidden\n\n */\n MarkdownRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\n };\n return MarkdownRender;\n}());\nexport { MarkdownRender };\n","import * as events from '../base/constant';\nimport { isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { MarkdownFormatter } from '../formatter/markdown-formatter';\nimport { RenderType } from '../base/enum';\nimport * as classes from '../base/classes';\nimport { MarkdownToolbarStatus } from './markdown-toolbar-status';\nimport { MarkdownRender } from '../renderer/markdown-renderer';\nimport { MarkdownSelection } from './../../markdown-parser/plugin/markdown-selection';\n/**\n * `MarkdownEditor` module is used to markdown editor\n */\nvar MarkdownEditor = /** @class */ (function () {\n function MarkdownEditor(parent, serviceLocator) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * Destroys the Markdown.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n MarkdownEditor.prototype.destroy = function () {\n if (isNullOrUndefined(this.parent)) {\n return;\n }\n this.removeEventListener();\n };\n MarkdownEditor.prototype.moduleDestroy = function () {\n this.parent = null;\n this.toolbarUpdate.parent = null;\n };\n MarkdownEditor.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.saveSelection = new MarkdownSelection();\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.markdownToolbarClick, this.onToolbarClick, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.selectAll, this.selectAll, this);\n this.parent.on(events.getSelectedHtml, this.getSelectedHtml, this);\n this.parent.on(events.selectionSave, this.onSelectionSave, this);\n this.parent.on(events.selectionRestore, this.onSelectionRestore, this);\n this.parent.on(events.readOnlyMode, this.updateReadOnly, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n MarkdownEditor.prototype.updateReadOnly = function () {\n if (this.parent.readonly) {\n this.parent.contentModule.getEditPanel().setAttribute('readonly', 'readonly');\n addClass([this.parent.element], classes.CLS_RTE_READONLY);\n }\n else {\n this.parent.contentModule.getEditPanel().removeAttribute('readonly');\n removeClass([this.parent.element], classes.CLS_RTE_READONLY);\n }\n };\n MarkdownEditor.prototype.onSelectionSave = function () {\n var textArea = this.parent.contentModule.getEditPanel();\n this.saveSelection.save(textArea.selectionStart, textArea.selectionEnd);\n };\n // eslint-disable-next-line\n MarkdownEditor.prototype.onSelectionRestore = function (e) {\n this.contentRenderer.getEditPanel().focus();\n var textArea = this.parent.contentModule.getEditPanel();\n this.saveSelection.restore(textArea);\n };\n MarkdownEditor.prototype.onToolbarClick = function (args) {\n var item = args.item;\n var textArea = this.parent.contentModule.getEditPanel();\n if (item.command !== 'Formats') {\n textArea.focus();\n }\n var startOffset = textArea.selectionStart;\n var endOffset = textArea.selectionEnd;\n var text = textArea.value.substring(startOffset, endOffset);\n switch (item.subCommand) {\n case 'Maximize':\n this.parent.notify(events.enableFullScreen, { args: args });\n break;\n case 'Minimize':\n this.parent.notify(events.disableFullScreen, { args: args });\n break;\n case 'CreateLink':\n this.parent.notify(events.insertLink, { member: 'link', args: args, text: text, module: 'Markdown' });\n break;\n case 'Image':\n this.parent.notify(events.insertImage, { member: 'image', args: args, text: text, module: 'Markdown' });\n break;\n case 'CreateTable': {\n var tableConstant = {\n 'headingText': this.parent.localeObj.getConstant('TableHeadingText'),\n 'colText': this.parent.localeObj.getConstant('TableColText')\n };\n this.parent.formatter.process(this.parent, args, args.originalEvent, tableConstant);\n break;\n }\n default:\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n break;\n }\n };\n MarkdownEditor.prototype.instantiateRenderer = function () {\n this.renderFactory.addRenderer(RenderType.Content, new MarkdownRender(this.parent));\n };\n MarkdownEditor.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.markdownToolbarClick, this.onToolbarClick);\n this.parent.off(events.initialLoad, this.instantiateRenderer);\n this.parent.off(events.selectAll, this.selectAll);\n this.parent.off(events.getSelectedHtml, this.getSelectedHtml);\n this.parent.off(events.selectionSave, this.onSelectionSave);\n this.parent.off(events.selectionRestore, this.onSelectionRestore);\n this.parent.off(events.readOnlyMode, this.updateReadOnly);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n MarkdownEditor.prototype.render = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps, undoRedoTimer: this.parent.undoRedoTimer };\n if (isNullOrUndefined(this.parent.formatter)) {\n this.parent.formatter = new MarkdownFormatter({\n element: editElement,\n options: option\n });\n }\n else {\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n if (this.parent.toolbarSettings.enable) {\n this.toolbarUpdate = new MarkdownToolbarStatus(this.parent);\n }\n this.parent.notify(events.bindOnEnd, {});\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the editor model\n * @returns {void}\n * @hidden\n\n */\n MarkdownEditor.prototype.onPropertyChanged = function (e) {\n // On property code change here\n if (!isNullOrUndefined(e.newProp.formatter)) {\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps,\n undoRedoTimer: this.parent.undoRedoTimer };\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n */\n MarkdownEditor.prototype.getModuleName = function () {\n return 'markdownEditor';\n };\n /**\n * For selecting all content in RTE\n *\n * @returns {void}\n * @private\n */\n MarkdownEditor.prototype.selectAll = function () {\n this.parent.formatter.editorManager.markdownSelection.setSelection(this.parent.contentModule.getEditPanel(), 0, this.parent.contentModule.getEditPanel().value.length);\n };\n /**\n * For get a selected text in RTE\n *\n * @param {NotifyArgs} e - specifies the arguments.\n * @returns {void}\n * @private\n */\n MarkdownEditor.prototype.getSelectedHtml = function (e) {\n e.callBack(this.parent.formatter.editorManager.markdownSelection.getSelectedText(this.parent.contentModule.getEditPanel()));\n };\n return MarkdownEditor;\n}());\nexport { MarkdownEditor };\n","import { EventHandler, detach, isNullOrUndefined, select, extend, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { closest, addClass, removeClass, Browser } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { CLS_RTE_ELEMENTS } from '../base/classes';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { RenderType } from '../base/enum';\nimport { dispatchEvent, parseHtml } from '../base/util';\nimport { isIDevice } from '../../common/util';\n/**\n * `Link` module is used to handle undo actions.\n */\nvar Link = /** @class */ (function () {\n function Link(parent, serviceLocator) {\n this.parent = parent;\n this.rteID = parent.element.id;\n this.i10n = serviceLocator.getService('rteLocale');\n this.addEventListener();\n this.serviceLocator = serviceLocator;\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.dialogRenderObj = serviceLocator.getService('dialogRenderObject');\n }\n Link.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.insertLink, this.linkDialog, this);\n this.parent.on(events.showLinkDialog, this.showDialog, this);\n this.parent.on(events.closeLinkDialog, this.closeDialog, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.insertCompleted, this.showLinkQuickToolbar, this);\n this.parent.on(events.clearDialogObj, this.clearDialogObj, this);\n this.parent.on(events.linkToolbarAction, this.onToolbarAction, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.unLink, this.removeLink, this);\n this.parent.on(events.editLink, this.editLink, this);\n this.parent.on(events.openLink, this.openLink, this);\n this.parent.on(events.editAreaClick, this.editAreaClickHandler, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n Link.prototype.onToolbarAction = function (args) {\n var item = args.args.item;\n switch (item.subCommand) {\n case 'OpenLink':\n this.parent.notify(events.openLink, args);\n break;\n case 'EditLink':\n this.parent.notify(events.editLink, args);\n break;\n case 'RemoveLink':\n this.parent.notify(events.unLink, args);\n break;\n }\n };\n Link.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.insertLink, this.linkDialog);\n this.parent.off(events.showLinkDialog, this.showDialog);\n this.parent.off(events.closeLinkDialog, this.closeDialog);\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.insertCompleted, this.showLinkQuickToolbar);\n this.parent.off(events.clearDialogObj, this.clearDialogObj);\n this.parent.off(events.linkToolbarAction, this.onToolbarAction);\n this.parent.off(events.unLink, this.removeLink);\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.editLink, this.editLink);\n this.parent.off(events.openLink, this.openLink);\n this.parent.off(events.editAreaClick, this.editAreaClickHandler);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n Link.prototype.onIframeMouseDown = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Link.prototype.updateCss = function (currentObj, e) {\n if (currentObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n currentObj.setProperties({ cssClass: (currentObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n currentObj.setProperties({ cssClass: (currentObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Link.prototype.setCssClass = function (e) {\n this.updateCss(this.checkBoxObj, e);\n this.updateCss(this.dialogObj, e);\n };\n Link.prototype.showLinkQuickToolbar = function (e) {\n if (!isNullOrUndefined(e.args) && e.args.action !== 'enter' &&\n e.args.action !== 'space') {\n var pageX = void 0;\n var pageY = void 0;\n if (e.type !== 'Links' || isNullOrUndefined(this.parent.quickToolbarModule) ||\n isNullOrUndefined(this.parent.quickToolbarModule.linkQTBar)) {\n return;\n }\n this.quickToolObj = this.parent.quickToolbarModule;\n var parentTop = this.parent.element.getBoundingClientRect().top;\n var parentLeft = this.parent.element.getBoundingClientRect().left;\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var target_1;\n [].forEach.call(e.elements, function (element, index) {\n if (index === 0) {\n target_1 = ((element.nodeName === '#text') ? (element.parentNode) : element);\n }\n });\n if (e.isNotify) {\n var tbElement = this.parent.toolbarModule.getToolbarElement();\n var linkTop = target_1.getBoundingClientRect().top;\n var linkLeft = target_1.getBoundingClientRect().left;\n var linkPos = linkTop - parentTop;\n var tbHeight = (tbElement) ? (tbElement.offsetHeight + this.parent.toolbarModule.getExpandTBarPopHeight()) : 0;\n pageX = (this.parent.iframeSettings.enable) ? parentLeft + linkLeft : target_1.getBoundingClientRect().left;\n pageY = window.pageYOffset + ((this.parent.iframeSettings.enable) ?\n (parentTop + tbHeight + linkTop) : (parentTop + linkPos));\n }\n else {\n var args = void 0;\n args = e.args.touches ? e.args.changedTouches[0] : args = e.args;\n pageX = (this.parent.iframeSettings.enable) ? window.pageXOffset + parentLeft + args.clientX : args.pageX;\n pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset + parentTop + args.clientY : args.pageY;\n }\n if (this.quickToolObj.linkQTBar) {\n this.quickToolObj.linkQTBar.showPopup(pageX, pageY, range.endContainer, 'link');\n }\n }\n };\n Link.prototype.hideLinkQuickToolbar = function () {\n if (this.quickToolObj && this.quickToolObj.linkQTBar && document.body.contains(this.quickToolObj.linkQTBar.element)) {\n this.quickToolObj.linkQTBar.hidePopup();\n }\n };\n Link.prototype.editAreaClickHandler = function (e) {\n if (this.parent.readonly) {\n this.hideLinkQuickToolbar();\n return;\n }\n var args = e.args;\n var showOnRightClick = this.parent.quickToolbarSettings.showOnRightClick;\n if (args.which === 2 || (showOnRightClick && args.which === 1) || (!showOnRightClick && args.which === 3)) {\n return;\n }\n if (this.parent.editorMode === 'HTML' && this.parent.quickToolbarModule && this.parent.quickToolbarModule.linkQTBar) {\n this.quickToolObj = this.parent.quickToolbarModule;\n var target = args.target;\n target = this.getAnchorNode(target);\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n var isPopupOpen = this.quickToolObj.linkQTBar.element.classList.contains('e-rte-pop');\n if (target.nodeName === 'A' && (target.childNodes.length > 0 && target.childNodes[0].nodeName !== 'IMG') &&\n e.args.target.nodeName !== 'IMG' &&\n !isNOU(closest(this.parent.getRange().startContainer.parentElement, 'A')) && !isNOU(closest(this.parent.getRange().endContainer.parentElement, 'A'))) {\n if (isPopupOpen) {\n return;\n }\n if (e.args.ctrlKey === false) {\n this.showLinkQuickToolbar({\n args: args,\n isNotify: false,\n type: 'Links',\n elements: [args.target]\n });\n }\n else {\n var selection = this.parent.formatter.editorManager.nodeSelection;\n var range = selection.getRange(this.parent.contentModule.getDocument());\n var args_1 = {\n args: {\n item: {\n subCommand: 'OpenLink',\n command: 'Links',\n name: ''\n },\n originalEvent: e.args\n },\n selectNode: selection.getNodeCollection(range),\n selectParent: selection.getParentNodeCollection(range),\n selection: selection.save(range, this.parent.contentModule.getDocument())\n };\n this.parent.notify(events.openLink, args_1);\n }\n }\n else {\n this.hideLinkQuickToolbar();\n }\n }\n };\n Link.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n switch (originalEvent.action) {\n case 'escape':\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.close();\n }\n break;\n case 'insert-link':\n this.openDialog(true, event);\n originalEvent.preventDefault();\n break;\n }\n };\n Link.prototype.openDialog = function (isInternal, event) {\n if (!isInternal) {\n this.parent.contentModule.getEditPanel().focus();\n }\n if (this.parent.editorMode === 'HTML') {\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n var selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n var selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n var eventArgs = {\n args: event ? event.args : {\n item: { command: 'Links', subCommand: 'CreateLink' },\n originalEvent: undefined,\n name: !isInternal ? 'showDialog' : null\n },\n selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n };\n this.linkDialog(eventArgs);\n }\n else {\n var textArea = this.parent.contentModule.getEditPanel();\n this.parent.formatter.editorManager.markdownSelection.save(textArea.selectionStart, textArea.selectionEnd);\n this.linkDialog({\n args: {\n item: { command: 'Links', subCommand: 'Link' },\n originalEvent: event && event.args\n },\n member: 'link',\n text: this.parent.formatter.editorManager.markdownSelection.getSelectedText(this.parent.contentModule.getEditPanel()),\n module: 'Markdown',\n name: 'insertLink'\n });\n }\n };\n Link.prototype.showDialog = function () {\n this.openDialog(false);\n this.setCssClass({ cssClass: this.parent.getCssClass() });\n };\n Link.prototype.closeDialog = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Link.prototype.clearDialogObj = function () {\n if (this.dialogObj) {\n this.dialogObj.destroy();\n detach(this.dialogObj.element);\n this.dialogObj = null;\n }\n };\n Link.prototype.linkDialog = function (e, inputDetails) {\n var _this = this;\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n return;\n }\n if (this.parent.editorMode === 'HTML' && (e.selectParent.length > 0 &&\n !isNullOrUndefined(e.selectParent[0].classList) &&\n e.selectParent[0].classList.contains('e-rte-anchor')) && isNullOrUndefined(inputDetails)) {\n this.editLink(e);\n return;\n }\n var linkWebAddress = this.i10n.getConstant('linkWebUrl');\n var linkDisplayText = this.i10n.getConstant('linkText');\n var linkTooltip = this.i10n.getConstant('linkTooltipLabel');\n var urlPlace = this.i10n.getConstant('linkurl');\n var textPlace = this.i10n.getConstant('textPlaceholder');\n var title = this.i10n.getConstant('linkTitle');\n var linkDialogEle = this.parent.createElement('div', {\n className: 'e-rte-link-dialog' + this.parent.getCssClass(true), id: this.rteID + '_rtelink'\n });\n this.parent.element.appendChild(linkDialogEle);\n var linkContent = this.parent.createElement('div', {\n className: 'e-rte-linkcontent' + this.parent.getCssClass(true), id: this.rteID + '_linkContent'\n });\n var htmlTextbox = (this.parent.editorMode === 'HTML') ? '
      ' +\n '
      ' +\n '
      ' + '
      ' +\n '
      ' : '';\n var content = '
      ' + '
      ' +\n '
      ' +\n '
      ' + '
      ' +\n '' +\n '
      ' + htmlTextbox;\n var contentElem = parseHtml(content);\n linkContent.appendChild(contentElem);\n var linkTarget = linkContent.querySelector('.e-rte-linkTarget');\n var linkUrl = linkContent.querySelector('.e-rte-linkurl');\n var linkText = linkContent.querySelector('.e-rte-linkText');\n var linkTitle = linkContent.querySelector('.e-rte-linkTitle');\n var linkOpenLabel = this.i10n.getConstant('linkOpenInNewWindow');\n this.checkBoxObj = new CheckBox({ label: linkOpenLabel, checked: true, enableRtl: this.parent.enableRtl,\n cssClass: this.parent.getCssClass() });\n this.checkBoxObj.isStringTemplate = true;\n this.checkBoxObj.createElement = this.parent.createElement;\n this.checkBoxObj.appendTo(linkTarget);\n var selectText = (this.parent.editorMode === 'HTML') ?\n e.selection.getRange(this.parent.contentModule.getDocument()).toString() : e.text;\n var linkInsert = this.i10n.getConstant('dialogInsert');\n var linkCancel = this.i10n.getConstant('dialogCancel');\n var selection = e.selection;\n var selectObj = { selfLink: this, selection: e.selection, selectParent: e.selectParent, args: e.args };\n var dialogModel = {\n header: this.i10n.getConstant('linkHeader'),\n content: linkContent,\n cssClass: CLS_RTE_ELEMENTS + this.parent.getCssClass(true),\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '310px',\n isModal: Browser.isDevice,\n buttons: [{\n click: this.insertlink.bind(selectObj),\n buttonModel: { content: linkInsert, cssClass: 'e-flat e-insertLink' + this.parent.getCssClass(true), isPrimary: true }\n },\n { click: this.cancelDialog.bind(selectObj), buttonModel: { cssClass: 'e-flat' + this.parent.getCssClass(true), content: linkCancel } }],\n target: (Browser.isDevice) ? document.body : this.parent.element,\n animationSettings: { effect: 'None' },\n close: function (event) {\n _this.parent.isBlur = false;\n if (event && event.event.returnValue) {\n if (_this.parent.editorMode === 'HTML') {\n selection.restore();\n }\n else {\n _this.parent.formatter.editorManager.markdownSelection.restore(_this.parent.contentModule.getEditPanel());\n }\n }\n _this.dialogObj.destroy();\n detach(_this.dialogObj.element);\n var args = _this.dialogObj;\n _this.dialogRenderObj.close(args);\n _this.dialogObj = null;\n }\n };\n // eslint-disable-next-line\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n this.dialogObj.createElement = this.parent.createElement;\n this.dialogObj.appendTo(linkDialogEle);\n linkDialogEle.style.maxHeight = 'inherit';\n if (isNullOrUndefined(this.dialogObj)) {\n return;\n }\n if (!isNullOrUndefined(inputDetails)) {\n linkUrl.value = inputDetails.url;\n linkText.value = inputDetails.text;\n linkTitle.value = inputDetails.title;\n // eslint-disable-next-line\n (inputDetails.target) ? this.checkBoxObj.checked = true : this.checkBoxObj.checked = false;\n this.dialogObj.header = inputDetails.header;\n this.dialogObj.element.querySelector('.e-insertLink').textContent = inputDetails.btnText;\n }\n this.checkUrl(false);\n if ((this.parent.editorMode === 'HTML' && isNullOrUndefined(inputDetails) && ((!isNullOrUndefined(selectText)\n && selectText !== '') && (e.selection.range.startOffset === 0) || e.selection.range.startOffset !==\n e.selection.range.endOffset)) || e.module === 'Markdown') {\n linkText.value = selectText;\n }\n EventHandler.add(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick, this);\n if (this.quickToolObj) {\n this.hideLinkQuickToolbar();\n if (this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {\n this.quickToolObj.inlineQTBar.hidePopup();\n }\n if (this.quickToolObj.textQTBar && this.parent.element.ownerDocument.body.contains(this.quickToolObj.textQTBar.element)) {\n this.quickToolObj.textQTBar.hidePopup();\n }\n }\n };\n // eslint-disable-next-line\n Link.prototype.insertlink = function (e) {\n var linkEle = this.selfLink.dialogObj.element;\n var linkUrl = linkEle.querySelector('.e-rte-linkurl').value;\n var linkText = linkEle.querySelector('.e-rte-linkText').value;\n var linkTitle;\n if (this.selfLink.parent.editorMode === 'HTML') {\n linkTitle = linkEle.querySelector('.e-rte-linkTitle').value;\n }\n var target = (this.selfLink.checkBoxObj.checked) ? '_blank' : null;\n var linkLabel = (this.selfLink.checkBoxObj.checked) ? this.selfLink.i10n.getConstant('linkAriaLabel') : null;\n if (this.selfLink.parent.editorMode === 'Markdown' && linkUrl === '') {\n linkUrl = 'http://';\n }\n if (linkUrl === '') {\n this.selfLink.checkUrl(true);\n return;\n }\n if (!this.selfLink.isUrl(linkUrl)) {\n if (this.selfLink.parent.editorMode === 'Markdown') {\n linkText = (linkText !== '') ? linkText : '';\n }\n else {\n linkText = (linkText === '') ? linkUrl : linkText;\n }\n if (!this.selfLink.parent.enableAutoUrl) {\n linkUrl = linkUrl.indexOf('http') > -1 ? linkUrl : 'http://' + linkUrl;\n }\n else {\n // eslint-disable-next-line\n linkUrl = linkUrl;\n }\n }\n else {\n this.selfLink.checkUrl(false);\n }\n var proxy = this.selfLink;\n if (proxy.parent.editorMode === 'HTML' && isNullOrUndefined(closest(this.selection.range.startContainer.parentNode, '[id='\n // eslint-disable-next-line\n + \"'\" + proxy.parent.contentModule.getPanel().id + \"'\" + ']'))) {\n proxy.parent.contentModule.getEditPanel().focus();\n if (Browser.isIE && proxy.parent.iframeSettings.enable) {\n this.selection.restore();\n }\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n this.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.parent.contentModule.getDocument());\n this.selectParent = proxy.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n var value = {\n url: linkUrl, text: linkText, title: linkTitle, target: target, ariaLabel: linkLabel,\n selection: this.selection, selectParent: this.selectParent\n };\n if (document.body.contains(proxy.dialogObj.element)) {\n this.selfLink.dialogObj.hide({ returnValue: false });\n }\n if (isIDevice() && proxy.parent.iframeSettings.enable) {\n select('iframe', proxy.parent.element).contentWindow.focus();\n }\n if (proxy.parent.editorMode === 'HTML') {\n this.selection.restore();\n }\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n var argsValue;\n if (!isNullOrUndefined(this.args) &&\n this.args.code === 'KeyK') {\n var originalEvent = this.args;\n extend(this.args, { item: { command: 'Links', subCommand: 'CreateLink' }, originalEvent: originalEvent }, true);\n var argsVal = {\n item: { command: 'Links', subCommand: 'CreateLink' }, originalEvent: originalEvent\n };\n argsValue = argsVal;\n }\n else {\n argsValue = this.args;\n }\n this.selfLink.parent.formatter.process(this.selfLink.parent, argsValue, (!isNullOrUndefined(this.args) &&\n this.args.originalEvent), value);\n this.selfLink.parent.contentModule.getEditPanel().focus();\n };\n Link.prototype.isUrl = function (url) {\n // eslint-disable-next-line\n var regexp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/gi;\n return regexp.test(url);\n };\n Link.prototype.checkUrl = function (e) {\n var linkEle = this.dialogObj.element;\n var linkUrl = linkEle.querySelector('.e-rte-linkurl');\n if (e) {\n addClass([linkUrl], 'e-error');\n linkUrl.setSelectionRange(0, linkUrl.value.length);\n linkUrl.focus();\n }\n else {\n removeClass([linkUrl], 'e-error');\n }\n };\n Link.prototype.removeLink = function (e) {\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n var selectParentEle = this.getAnchorNode(e.selectParent[0]);\n this.parent.formatter.process(this.parent, e.args, e.args, {\n selectNode: e.selectNode, selectParent: e.selectParent, selection: e.selection,\n text: selectParentEle.innerText,\n subCommand: e.args.item.subCommand\n });\n if (isIDevice() && this.parent.iframeSettings.enable) {\n select('iframe', this.parent.element).contentWindow.focus();\n }\n else {\n this.parent.contentModule.getEditPanel().focus();\n }\n this.hideLinkQuickToolbar();\n };\n Link.prototype.openLink = function (e) {\n var selectParentEle = this.getAnchorNode(e.selectParent[0]);\n if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {\n this.parent.formatter.process(this.parent, e.args, e.args, {\n url: selectParentEle.href, text: selectParentEle.innerText,\n target: selectParentEle.target === '' ? '_self' : '_blank', selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n }\n };\n Link.prototype.getAnchorNode = function (element) {\n var selectParent = closest(element, 'a');\n return (selectParent ? selectParent : element);\n };\n Link.prototype.editLink = function (e) {\n var selectedNode = this.getAnchorNode(e.selectNode[0]);\n var selectParentEle = this.getAnchorNode(e.selectParent[0]);\n selectParentEle = selectedNode.nodeName === 'A' ? selectedNode : selectParentEle;\n if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var inputDetails = {\n url: selectParentEle.getAttribute('href'), text: selectParentEle.innerText,\n title: selectParentEle.title, target: selectParentEle.target,\n header: this.i10n.getConstant('editLink'), btnText: linkUpdate\n };\n this.linkDialog(e, inputDetails);\n }\n };\n // eslint-disable-next-line\n Link.prototype.cancelDialog = function (e) {\n this.selfLink.parent.isBlur = false;\n this.selfLink.dialogObj.hide({ returnValue: true });\n if (isIDevice()) {\n this.selection.restore();\n }\n else {\n this.selfLink.parent.contentModule.getEditPanel().focus();\n }\n };\n Link.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!isNullOrUndefined(this.dialogObj) && ((\n // eslint-disable-next-line\n !closest(target, '[id=' + \"'\" + this.dialogObj.element.id + \"'\" + ']') && this.parent.toolbarSettings.enable &&\n this.parent.getToolbarElement() && !this.parent.getToolbarElement().contains(e.target)) ||\n (((this.parent.getToolbarElement() && this.parent.getToolbarElement().contains(e.target)) ||\n this.parent.inlineMode.enable && !closest(target, '#' + this.dialogObj.element.id)) &&\n !closest(target, '#' + this.parent.getID() + '_toolbar_CreateLink') &&\n !target.querySelector('#' + this.parent.getID() + '_toolbar_CreateLink')))) {\n this.parent.notify(events.documentClickClosedBy, { closedBy: \"outside click\" });\n this.dialogObj.hide({ returnValue: true });\n EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n Link.prototype.destroy = function () {\n if (isNOU(this.parent)) {\n return;\n }\n this.removeEventListener();\n };\n Link.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n */\n Link.prototype.getModuleName = function () {\n return 'link';\n };\n return Link;\n}());\nexport { Link };\n","import * as CONSTANT from './../base/constant';\nimport { append, detach, createElement, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { NodeSelection } from './../../selection/index';\nimport { selfClosingTags } from '../../common/config';\nimport { getLastTextNode } from '../../common/util';\nexport var markerClassName = {\n startSelection: 'e-editor-select-start',\n endSelection: 'e-editor-select-end'\n};\n/**\n * DOMNode internal plugin\n *\n * @hidden\n\n */\nvar DOMNode = /** @class */ (function () {\n /**\n * Constructor for creating the DOMNode plugin\n *\n * @param {Element} parent - specifies the parent element\n * @param {Document} currentDocument - specifies the current document.\n * @hidden\n\n */\n function DOMNode(parent, currentDocument) {\n this.parent = parent;\n this.nodeSelection = new NodeSelection();\n this.currentDocument = currentDocument;\n }\n /**\n * contents method\n *\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.contents = function (element) {\n return (element && 'IFRAME' !== element.tagName ? Array.prototype.slice.call(element.childNodes || []) : []);\n };\n /**\n * isBlockNode method\n *\n * @param {Element} element - specifies the node element.\n * @returns {boolean} - sepcifies the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isBlockNode = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && CONSTANT.BLOCK_TAGS.indexOf(element.tagName.toLowerCase()) >= 0));\n };\n /**\n * isLink method\n *\n * @param {Element} element - specifies the element\n * @returns {boolean} - specifies the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isLink = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && 'a' === element.tagName.toLowerCase()));\n };\n /**\n * blockParentNode method\n *\n * @param {Element} element - specifies the element\n * @returns {Element} - returns the element value\n * @hidden\n\n */\n DOMNode.prototype.blockParentNode = function (element) {\n for (; element && element.parentNode !== this.parent && ((!element.parentNode ||\n !this.hasClass(element.parentNode, 'e-node-inner'))); null) {\n element = element.parentNode;\n if (this.isBlockNode(element)) {\n return element;\n }\n }\n return element;\n };\n /**\n * rawAttributes method\n *\n * @param {Element} element - specifies the element\n * @returns {string} - returns the string value\n * @hidden\n\n */\n DOMNode.prototype.rawAttributes = function (element) {\n var rawAttr = {};\n var attributes = element.attributes;\n if (attributes.length > 0) {\n for (var d = 0; d < attributes.length; d++) {\n var e = attributes[d];\n rawAttr[e.nodeName] = e.value;\n }\n }\n return rawAttr;\n };\n /**\n * attributes method\n *\n * @param {Element} element - sepcifies the element.\n * @returns {string} - returns the string value.\n * @hidden\n\n */\n DOMNode.prototype.attributes = function (element) {\n if (!element) {\n return '';\n }\n var attr = '';\n var rawAttr = this.rawAttributes(element);\n var orderRawAttr = Object.keys(rawAttr).sort();\n for (var e = 0; e < orderRawAttr.length; e++) {\n var attrKey = orderRawAttr[e];\n var attrValue = rawAttr[\"\" + attrKey];\n /* eslint-disable */\n if (attrValue.indexOf(\"'\") < 0 && attrValue.indexOf('\"') >= 0) {\n attr += ' ' + attrKey + \"='\" + attrValue + \"'\";\n }\n else if (attrValue.indexOf('\"') >= 0 && attrValue.indexOf(\"'\") >= 0) {\n /* eslint-enable */\n attrValue = attrValue.replace(/\"/g, '"');\n attr += ' ' + attrKey + '=\"' + attrValue + '\"';\n }\n else {\n attr += ' ' + attrKey + '=\"' + attrValue + '\"';\n }\n }\n return attr;\n };\n /**\n * clearAttributes method\n *\n * @param {Element} element - specifies the element\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.clearAttributes = function (element) {\n for (var attr = element.attributes, c = attr.length - 1; c >= 0; c--) {\n var key = attr[c];\n element.removeAttribute(key.nodeName);\n }\n };\n /**\n * openTagString method\n *\n * @param {Element} element - specifies the element.\n * @returns {string} - returns the string\n * @hidden\n\n */\n DOMNode.prototype.openTagString = function (element) {\n return '<' + element.tagName.toLowerCase() + this.attributes(element) + '>';\n };\n /**\n * closeTagString method\n *\n * @param {Element} element - specifies the element\n * @returns {string} - returns the string value\n * @hidden\n\n */\n DOMNode.prototype.closeTagString = function (element) {\n return '';\n };\n /**\n * createTagString method\n *\n * @param {string} tagName - specifies the tag name\n * @param {Element} relativeElement - specifies the relative element\n * @param {string} innerHTML - specifies the string value\n * @returns {string} - returns the string value.\n * @hidden\n\n */\n DOMNode.prototype.createTagString = function (tagName, relativeElement, innerHTML) {\n return '<' + tagName.toLowerCase() + this.attributes(relativeElement) + '>' + innerHTML + '';\n };\n /**\n * isList method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isList = function (element) {\n return !!element && ['UL', 'OL'].indexOf(element.tagName) >= 0;\n };\n /**\n * isElement method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isElement = function (element) {\n return element === this.parent;\n };\n /**\n * isEditable method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isEditable = function (element) {\n return ((!element.getAttribute || element.getAttribute('contenteditable') === 'true')\n && ['STYLE', 'SCRIPT'].indexOf(element.tagName) < 0);\n };\n /**\n * hasClass method\n *\n * @param {Element} element - specifes the element.\n * @param {string} className - specifies the class name value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.hasClass = function (element, className) {\n return element && element.classList && element.classList.contains(className);\n };\n /**\n * replaceWith method\n *\n * @param {Element} element - specifes the element.\n * @param {string} value - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.replaceWith = function (element, value) {\n var parentNode = element.parentNode;\n parentNode.insertBefore(this.parseHTMLFragment(value), element);\n detach(element);\n };\n /**\n * parseHTMLFragment method\n *\n * @param {string} value - specifies the string value\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.parseHTMLFragment = function (value) {\n /* eslint-disable */\n var temp = createElement('template');\n temp.innerHTML = value;\n if (temp.content instanceof DocumentFragment) {\n return temp.content;\n }\n else {\n return document.createRange().createContextualFragment(value);\n }\n /* eslint-enable */\n };\n /**\n * wrap method\n *\n * @param {Element} element - specifies the element\n * @param {Element} wrapper - specifies the element.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.wrap = function (element, wrapper) {\n element.parentNode.insertBefore(wrapper, element);\n wrapper = element.previousSibling;\n wrapper.appendChild(element);\n return wrapper;\n };\n /**\n * insertAfter method\n *\n * @param {Element} newNode - specifies the new node element\n * @param {Element} referenceNode - specifies the referenece node\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.insertAfter = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n /**\n * wrapInner method\n *\n * @param {Element} parent - specifies the parent element.\n * @param {Element} wrapper - specifies the wrapper element.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.wrapInner = function (parent, wrapper) {\n parent.appendChild(wrapper);\n wrapper = parent.querySelector('.e-rte-wrap-inner');\n wrapper.classList.remove('e-rte-wrap-inner');\n if (wrapper.classList.length === 0) {\n wrapper.removeAttribute('class');\n }\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n return wrapper;\n };\n /**\n * unWrap method\n *\n * @param {Element} element - specifies the element.\n * @returns {Element} - returns the element.\n * @hidden\n\n */\n DOMNode.prototype.unWrap = function (element) {\n var parent = element.parentNode;\n var unWrapNode = [];\n while (element.firstChild) {\n unWrapNode.push(element.firstChild);\n parent.insertBefore(element.firstChild, element);\n }\n unWrapNode = unWrapNode.length > 0 ? unWrapNode : [element.parentNode];\n parent.removeChild(element);\n return unWrapNode;\n };\n /**\n * getSelectedNode method\n *\n * @param {Element} element - specifies the element\n * @param {number} index - specifies the index value.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.getSelectedNode = function (element, index) {\n if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0 &&\n element.childNodes[index - 1] && element.childNodes[index - 1].nodeType === Node.ELEMENT_NODE &&\n (element.childNodes[index - 1].classList.contains(markerClassName.startSelection) ||\n element.childNodes[index - 1].classList.contains(markerClassName.endSelection))) {\n element = element.childNodes[index - 1];\n }\n else if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0 && element.childNodes[index]) {\n element = element.childNodes[index];\n }\n if (element.nodeType === Node.TEXT_NODE) {\n element = element.parentNode;\n }\n return element;\n };\n /**\n * nodeFinds method\n *\n * @param {Element} element - specifies the element.\n * @param {Element[]} elements - specifies the array of elements\n * @returns {Element[]} - returnts the array elements\n * @hidden\n\n */\n DOMNode.prototype.nodeFinds = function (element, elements) {\n var existNodes = [];\n for (var i = 0; i < elements.length; i++) {\n if (element.contains(elements[i]) && element !== elements[i]) {\n existNodes.push(elements[i]);\n }\n }\n return existNodes;\n };\n /**\n * isEditorArea method\n *\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isEditorArea = function () {\n var range = this.getRangePoint(0);\n var element;\n for (element = range.commonAncestorContainer; element && !this.isElement(element); null) {\n element = element.parentNode;\n }\n return !!this.isElement(element);\n };\n /**\n * getRangePoint method\n *\n * @param {number} point - specifies the number value.\n * @returns {Range} - returns the range.\n * @hidden\n\n */\n DOMNode.prototype.getRangePoint = function (point) {\n var selection = this.getSelection();\n var ranges = [];\n if (selection && selection.getRangeAt && selection.rangeCount) {\n ranges = [];\n for (var f = 0; f < selection.rangeCount; f++) {\n ranges.push(selection.getRangeAt(f));\n }\n }\n else {\n ranges = [this.currentDocument.createRange()];\n }\n return 'undefined' !== typeof point ? ranges[point] : ranges;\n };\n DOMNode.prototype.getSelection = function () {\n return this.nodeSelection.get(this.currentDocument);\n };\n /**\n * getPreviousNode method\n *\n * @param {Element} element - specifies the element\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.getPreviousNode = function (element) {\n element = element.previousElementSibling;\n for (; element && element.textContent === '\\n'; null) {\n element = element.previousElementSibling;\n }\n return element;\n };\n /**\n * encode method\n *\n * @param {string} value - specifies the string value\n * @returns {string} - specifies the string value\n * @hidden\n\n */\n DOMNode.prototype.encode = function (value) {\n var divNode = document.createElement('div');\n divNode.innerText = value;\n // eslint-disable-next-line\n return divNode.innerHTML.replace(//gi, '\\n');\n };\n /**\n * saveMarker method\n *\n * @param {NodeSelection} save - specifies the node selection,\n * @param {string} action - specifies the action value.\n * @returns {NodeSelection} - returns the value\n * @hidden\n\n */\n DOMNode.prototype.saveMarker = function (save, action) {\n var start = this.parent.querySelector('.' + markerClassName.startSelection);\n var end = this.parent.querySelector('.' + markerClassName.endSelection);\n var startTextNode;\n var endTextNode;\n if (this.hasClass(start, markerClassName.startSelection) && start.classList.length > 1) {\n var replace = this.createTagString(CONSTANT.DEFAULT_TAG, start, this.encode(start.textContent));\n this.replaceWith(start, replace);\n start = this.parent.querySelector('.' + markerClassName.startSelection);\n start.classList.remove(markerClassName.startSelection);\n startTextNode = start.childNodes[0];\n }\n else {\n startTextNode = this.unWrap(start)[0];\n }\n if (this.hasClass(end, markerClassName.endSelection) && end.classList.length > 1) {\n var replace = this.createTagString(CONSTANT.DEFAULT_TAG, end, this.encode(end.textContent));\n this.replaceWith(end, replace);\n end = this.parent.querySelector('.' + markerClassName.endSelection);\n end.classList.remove(markerClassName.endSelection);\n endTextNode = end.childNodes[0];\n }\n else {\n endTextNode = end ? this.unWrap(end)[0] : startTextNode;\n }\n save.startContainer = save.getNodeArray(startTextNode, true);\n save.endContainer = save.getNodeArray(endTextNode, false);\n return save;\n };\n DOMNode.prototype.marker = function (className, textContent) {\n return '' + textContent + '';\n };\n /**\n * setMarker method\n *\n * @param {NodeSelection} save - specifies the node selection.\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.setMarker = function (save) {\n var range = save.range;\n var startChildNodes = range.startContainer.childNodes;\n var isTableStart = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'TABLE';\n var isImgOnlySelected = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'IMAGE' &&\n range.endOffset === 1 && range.endContainer.nodeName === '#text' && range.endContainer.textContent.length === 0;\n var start = ((isTableStart ? getLastTextNode(startChildNodes[range.startOffset + 1]) :\n startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) : range.startOffset]) || range.startContainer);\n var end = (range.endContainer.childNodes[(range.endOffset > 0) ? (isImgOnlySelected ? range.endOffset : (range.endOffset - 1)) : range.endOffset]\n || range.endContainer);\n if ((start.nodeType === Node.ELEMENT_NODE && end.nodeType === Node.ELEMENT_NODE) && (start.contains(end) || end.contains(start))) {\n var existNode = start.contains(end) ? start : end;\n var isElement = existNode.nodeType !== Node.TEXT_NODE;\n if (isElement) {\n var nodes = [];\n var textNodes = [];\n for (var node = existNode; existNode.contains(node); null) {\n if (nodes.indexOf(node) < 0 && node.childNodes && node.childNodes.length) {\n nodes.push(node);\n node = node.childNodes[0];\n }\n else if (node.nextSibling) {\n node = node.nextSibling;\n }\n else if (node.parentNode) {\n node = node.parentNode;\n nodes.push(node);\n }\n if (textNodes.indexOf(node) < 0 && (node.nodeType === Node.TEXT_NODE ||\n (CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0\n && (node.tagName === 'BR' || node.tagName === 'IMG')))) {\n textNodes.push(node);\n }\n }\n if (textNodes.length) {\n start = start.contains(end) ? textNodes[0] : start;\n end = textNodes[textNodes.length - 1];\n }\n }\n }\n if (start !== end) {\n if (start.nodeType !== Node.TEXT_NODE && ((start.tagName === 'BR' &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(start.parentNode.tagName.toLocaleLowerCase()) >= 0) ||\n start.tagName === 'IMG')) {\n this.replaceWith(start, this.marker(markerClassName.startSelection, this.encode(start.textContent)));\n var markerStart = range.startContainer.querySelector('.' + markerClassName.startSelection);\n markerStart.appendChild(start);\n }\n else {\n if (start.nodeType !== 3 && start.nodeName !== '#text' && start.nodeName !== 'BR') {\n var marker = this.marker(markerClassName.startSelection, '');\n append([this.parseHTMLFragment(marker)], start);\n }\n else {\n this.replaceWith(start, this.marker(markerClassName.startSelection, this.encode(start.textContent)));\n }\n }\n if (end.nodeType !== Node.TEXT_NODE && end.tagName === 'BR' &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(end.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n this.replaceWith(end, this.marker(markerClassName.endSelection, this.encode(end.textContent)));\n var markerEnd = range.endContainer.querySelector('.' + markerClassName.endSelection);\n markerEnd.appendChild(end);\n }\n else {\n this.ensureSelfClosingTag(end, markerClassName.endSelection, range);\n }\n }\n else {\n this.ensureSelfClosingTag(start, markerClassName.startSelection, range);\n }\n };\n /**\n * ensureSelfClosingTag method\n *\n * @param {Element} start - specifies the element.\n * @param {string} className - specifes the class name string value\n * @param {Range} range - specifies the range value\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.ensureSelfClosingTag = function (start, className, range) {\n var isTable = false;\n if (start.nodeType === 3) {\n this.replaceWith(start, this.marker(className, this.encode(start.textContent)));\n }\n else if (start.tagName === 'BR') {\n this.replaceWith(start, this.marker(className, this.encode(start.textContent)));\n var markerStart = range.startContainer.querySelector('.' + className);\n if (markerStart) {\n markerStart.parentElement.appendChild(start);\n }\n }\n else {\n var tagName = !isNOU(start.parentElement) ? start.parentElement.tagName.toLocaleLowerCase() : '';\n if (start.tagName === 'IMG' && tagName !== 'p' && tagName !== 'div') {\n var parNode = document.createElement('p');\n start.parentElement.insertBefore(parNode, start);\n parNode.appendChild(start);\n start = parNode.children[0];\n }\n if (start.tagName === 'TABLE') {\n isTable = true;\n if (start.textContent === '') {\n var tdNode = start.querySelectorAll('td');\n start = tdNode[tdNode.length - 1];\n start = !isNOU(start.childNodes[0]) ? start.childNodes[0] : start;\n }\n else {\n var lastNode = start.lastChild;\n while (lastNode.nodeType !== 3 && lastNode.nodeName !== '#text' &&\n lastNode.nodeName !== 'BR') {\n lastNode = lastNode.lastChild;\n }\n start = lastNode;\n }\n }\n for (var i = 0; i < selfClosingTags.length; i++) {\n start = (start.tagName === selfClosingTags[i] && !isTable) ? start.parentNode : start;\n }\n if (start.nodeType === 3 && start.nodeName === '#text') {\n this.replaceWith(start, this.marker(className, this.encode(start.textContent)));\n }\n else if (start.nodeName === 'BR') {\n this.replaceWith(start, this.marker(markerClassName.endSelection, this.encode(start.textContent)));\n var markerEnd = range.endContainer.querySelector('.' + markerClassName.endSelection);\n markerEnd.appendChild(start);\n }\n else {\n var marker = this.marker(className, '');\n append([this.parseHTMLFragment(marker)], start);\n }\n }\n };\n /**\n * createTempNode method\n *\n * @param {Element} element - specifies the element.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.createTempNode = function (element) {\n var textContent = element.textContent;\n if (element.tagName === 'BR') {\n var wrapper = '<' + CONSTANT.DEFAULT_TAG + '>';\n var node = element.parentNode;\n if (CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.tagName.toLocaleLowerCase()) >= 0) {\n element = this.wrap(element, this.parseHTMLFragment(wrapper));\n }\n }\n else if (((element.nodeType !== Node.TEXT_NODE &&\n (element.classList.contains(markerClassName.startSelection) ||\n element.classList.contains(markerClassName.endSelection))) ||\n textContent.replace(/\\n/g, '').replace(/(^ *)|( *$)/g, '').length > 0 ||\n textContent.length && textContent.indexOf('\\n') < 0)) {\n var wrapper = '<' + CONSTANT.DEFAULT_TAG + '>';\n var target = element;\n element = this.wrap(element, this.parseHTMLFragment(wrapper));\n var ignoreBr = target.nodeType === Node.ELEMENT_NODE && target.firstChild && target.firstChild.nodeName === 'BR'\n && (target.classList.contains(markerClassName.startSelection) ||\n target.classList.contains(markerClassName.endSelection));\n if (!ignoreBr && element.nextElementSibling && element.nextElementSibling.tagName === 'BR') {\n element.appendChild(element.nextElementSibling);\n }\n }\n return element;\n };\n /**\n * getImageTagInSelection method\n *\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.getImageTagInSelection = function () {\n var selection = this.getSelection();\n if (this.isEditorArea() && selection.rangeCount) {\n return selection.focusNode.querySelectorAll('img');\n }\n return null;\n };\n /**\n * blockNodes method\n *\n * @param {boolean} action - Optional Boolean that specifies the action is whether performed.\n * @returns {Node[]} - returns the node array values\n * @hidden\n\n */\n DOMNode.prototype.blockNodes = function (action) {\n var collectionNodes = [];\n var selection = this.getSelection();\n if (this.isEditorArea() && selection.rangeCount) {\n var ranges = this.getRangePoint();\n for (var j = 0; j < ranges.length; j++) {\n var parentNode = void 0;\n var range = ranges[j];\n var startNode = this.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.getSelectedNode(range.endContainer, range.endOffset);\n if (this.isBlockNode(startNode) && collectionNodes.indexOf(startNode) < 0) {\n collectionNodes.push(startNode);\n }\n parentNode = this.blockParentNode(startNode);\n var endParentNode = this.blockParentNode(endNode);\n if (parentNode && collectionNodes.indexOf(parentNode) < 0) {\n if (!isNOU(action) && action) {\n if (range.commonAncestorContainer.nodeName === 'TD' || parentNode.nodeName === 'TD' || endParentNode.nodeName === 'TD') {\n var processedNodes = this.getPreBlockNodeCollection(range);\n if (processedNodes.length > 1) {\n this.wrapWithBlockNode(processedNodes, collectionNodes);\n }\n else if (processedNodes.length > 0) {\n if (startNode !== endNode && startNode.nodeName !== 'BR') {\n collectionNodes.push(this.createTempNode(startNode));\n }\n else if (startNode === endNode && startNode.nodeName === 'SPAN' && (startNode.classList.contains(markerClassName.startSelection)\n || startNode.classList.contains(markerClassName.endSelection))) {\n collectionNodes.push(this.createTempNode(startNode));\n }\n }\n }\n else {\n collectionNodes.push(parentNode);\n }\n }\n else {\n if (CONSTANT.IGNORE_BLOCK_TAGS.indexOf(parentNode.tagName.toLocaleLowerCase()) >= 0 && (startNode.tagName === 'BR' ||\n startNode.nodeType === Node.TEXT_NODE ||\n startNode.classList.contains(markerClassName.startSelection) ||\n startNode.classList.contains(markerClassName.endSelection))) {\n var tempNode = startNode.previousSibling &&\n startNode.previousSibling.nodeType === Node.TEXT_NODE ?\n startNode.previousSibling : startNode;\n if (!startNode.nextSibling && !startNode.previousSibling && startNode.tagName === 'BR') {\n collectionNodes.push(tempNode);\n }\n else {\n collectionNodes.push(this.createTempNode(tempNode));\n }\n }\n else {\n collectionNodes.push(parentNode);\n }\n }\n }\n var nodes = [];\n for (var node = startNode; node !== endNode && node !== this.parent; null) {\n if (nodes.indexOf(node) < 0 && node.childNodes && node.childNodes.length) {\n nodes.push(node);\n node = node.childNodes[0];\n }\n else if (node && node.nodeType !== 8 && (node.tagName === 'BR' || (node.nodeType === Node.TEXT_NODE &&\n node.textContent.trim() !== '') || (node.nodeType !== Node.TEXT_NODE &&\n (node.classList.contains(markerClassName.startSelection) ||\n node.classList.contains(markerClassName.endSelection)))) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n node = this.createTempNode(node);\n }\n else if (node.nextSibling && node.nextSibling.nodeType !== 8 &&\n (node.nextSibling.tagName === 'BR' ||\n node.nextSibling.nodeType === Node.TEXT_NODE ||\n node.nextSibling.classList.contains(markerClassName.startSelection) ||\n node.nextSibling.classList.contains(markerClassName.endSelection)) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.nextSibling.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n node = this.createTempNode(node.nextSibling);\n }\n else if (node.nextSibling) {\n node = node.nextSibling;\n }\n else if (node.parentNode) {\n node = node.parentNode;\n nodes.push(node);\n }\n if (collectionNodes.indexOf(node) < 0 && node.nodeType === Node.ELEMENT_NODE &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0 &&\n (node.classList.contains(markerClassName.startSelection) ||\n node.classList.contains(markerClassName.endSelection))) {\n collectionNodes.push(this.createTempNode(node));\n }\n if (this.isBlockNode(node) && this.ignoreTableTag(node) && nodes.indexOf(node) < 0 &&\n collectionNodes.indexOf(node) < 0 && (node !== endNode || range.endOffset > 0)) {\n collectionNodes.push(node);\n }\n if (node.nodeName === 'IMG' && node.parentElement.contentEditable === 'true') {\n collectionNodes.push(node);\n }\n }\n parentNode = this.blockParentNode(endNode);\n if (parentNode && this.ignoreTableTag(parentNode) && collectionNodes.indexOf(parentNode) < 0 &&\n (!isNOU(parentNode.previousElementSibling) && parentNode.previousElementSibling.tagName !== 'IMG')) {\n collectionNodes.push(parentNode);\n }\n }\n }\n for (var i = collectionNodes.length - 1; i > 0; i--) {\n var nodes = this.nodeFinds(collectionNodes[i], collectionNodes);\n if (nodes.length) {\n var listNodes = collectionNodes[i].querySelectorAll('ul, ol');\n if (collectionNodes[i].tagName === 'LI' && listNodes.length > 0) {\n continue;\n }\n else {\n collectionNodes.splice(i, 1);\n }\n }\n }\n return collectionNodes;\n };\n DOMNode.prototype.ignoreTableTag = function (element) {\n return !(CONSTANT.TABLE_BLOCK_TAGS.indexOf(element.tagName.toLocaleLowerCase()) >= 0);\n };\n DOMNode.prototype.getPreBlockNodeCollection = function (range) {\n var startNode = this.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.getSelectedNode(range.endContainer, range.endOffset);\n var nodes = [];\n var rootNode = startNode.closest('td, th');\n if (isNOU(rootNode)) {\n return nodes;\n }\n var rootChildNode = Array.from(rootNode.childNodes);\n var isContinue = true;\n var processedStart = this.getClosestInlineParent(startNode, rootNode, true);\n var processedEnd = this.getClosestInlineParent(endNode, rootNode, false);\n for (var i = 0; i < rootChildNode.length; i++) {\n var child = rootChildNode[i];\n if (processedStart === processedEnd && child === processedStart) {\n nodes.push(child);\n isContinue = true;\n }\n else if (child === processedStart) {\n isContinue = false;\n }\n else if (child === processedEnd) {\n nodes.push(child); // Early Exit so Push the end node.\n isContinue = true;\n }\n if (isContinue) {\n continue;\n }\n else {\n nodes.push(child);\n }\n }\n return nodes;\n };\n DOMNode.prototype.getClosestInlineParent = function (node, rootNode, isStart) {\n // 1. If the node is a text node, return the node\n // 2. If the node is a block node return block node\n // 3. If the node is a inline node,\n // Traverse back untill the TD or TH node\n // Check if the the previous sibling , next sibling is a block node.\n // If yes return the inline node that is closest to the block node.\n if (node.nodeType === Node.TEXT_NODE) {\n return node;\n }\n if (this.isBlockNode(node)) {\n return node;\n }\n var currentNode = node;\n var rootFlag = false;\n while (currentNode) {\n var previousNode = currentNode;\n if (rootFlag) {\n if (this.isBlockNode(currentNode)) {\n return previousNode;\n }\n if (isStart && currentNode.previousSibling) {\n if (this.isBlockNode(currentNode.previousSibling) || currentNode.previousSibling.nodeName === 'BR') {\n return previousNode;\n }\n else {\n currentNode = currentNode.previousSibling;\n }\n }\n else if (!isStart && currentNode.nextSibling) {\n if (this.isBlockNode(currentNode.nextSibling) || currentNode.nextSibling.nodeName === 'BR') {\n return previousNode;\n }\n else {\n currentNode = currentNode.nextSibling;\n }\n }\n else {\n return currentNode;\n }\n }\n else {\n currentNode = currentNode.parentElement;\n if (currentNode === rootNode) {\n currentNode = previousNode;\n rootFlag = true;\n }\n }\n }\n return null;\n };\n DOMNode.prototype.wrapWithBlockNode = function (nodes, collectionNodes) {\n var wrapperElement = createElement('p');\n for (var i = 0; i < nodes.length; i++) {\n var child = nodes[i];\n if (child.nodeName === 'BR') {\n child.parentNode.insertBefore(wrapperElement, child);\n wrapperElement.appendChild(child);\n if (wrapperElement.childNodes.length > 0) {\n collectionNodes.push(wrapperElement);\n }\n wrapperElement = createElement('p');\n }\n else {\n if (!this.isBlockNode(child)) {\n if (child.nodeName === '#text' && child.textContent.trim() === '') {\n continue;\n }\n if (wrapperElement.childElementCount === 0) {\n child.parentNode.insertBefore(wrapperElement, child);\n wrapperElement.appendChild(child);\n }\n else {\n wrapperElement.appendChild(child);\n }\n }\n else {\n collectionNodes.push(child);\n }\n // Use case when the BR is next sibling but the BR is not the part of selection.\n if ((i === nodes.length - 1) && wrapperElement.nextElementSibling &&\n wrapperElement.querySelectorAll('br').length === 0 &&\n wrapperElement.nextElementSibling.nodeName === 'BR') {\n wrapperElement.appendChild(wrapperElement.nextElementSibling);\n }\n }\n }\n if (wrapperElement.childNodes.length > 0 && collectionNodes.indexOf(wrapperElement) < 0) {\n collectionNodes.push(wrapperElement);\n }\n };\n return DOMNode;\n}());\nexport { DOMNode };\n","import * as CONSTANT from './../base/constant';\nimport { createElement, detach, prepend, append, attributes, Browser } from '@syncfusion/ej2-base';\nimport { markerClassName } from './dom-node';\nimport * as EVENTS from './../../common/constant';\nimport { setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { isNullOrUndefined, isNullOrUndefined as isNOU, closest } from '@syncfusion/ej2-base';\n/**\n * Lists internal component\n *\n * @hidden\n\n */\nvar Lists = /** @class */ (function () {\n /**\n * Constructor for creating the Lists plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function Lists(parent) {\n this.parent = parent;\n this.domNode = this.parent.domNode;\n this.addEventListener();\n }\n Lists.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.LIST_TYPE, this.applyListsHandler, this);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, this.onKeyUp, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler, this);\n this.parent.observer.on(EVENTS.SPACE_ACTION, this.spaceKeyAction, this);\n };\n Lists.prototype.testList = function (elem) {\n var olListRegex = [/^[\\d]+[.]+$/,\n /^(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})[.]$/gi,\n /^[a-zA-Z][.]+$/];\n var elementStart = !isNullOrUndefined(elem) ? elem.innerText.trim().split('.')[0] + '.' : null;\n if (!isNullOrUndefined(elementStart)) {\n for (var i = 0; i < olListRegex.length; i++) {\n if (olListRegex[i].test(elementStart)) {\n return true;\n }\n }\n }\n return false;\n };\n Lists.prototype.testCurrentList = function (range) {\n var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];\n if (!isNullOrUndefined(range.startContainer.textContent.slice(0, range.startOffset))) {\n var currentContent = range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim();\n for (var i = 0; i < olListStartRegex.length; i++) {\n if (olListStartRegex[i].test(currentContent) && currentContent.length === 2) {\n return true;\n }\n }\n }\n return false;\n };\n Lists.prototype.spaceList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n // eslint-disable-next-line\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n var preElement = startNode.previousElementSibling;\n var nextElement = startNode.nextElementSibling;\n var preElemULStart = !isNullOrUndefined(preElement) ?\n preElement.innerText.trim().substring(0, 1) : null;\n var nextElemULStart = !isNullOrUndefined(nextElement) ?\n nextElement.innerText.trim().substring(0, 1) : null;\n var startElementOLTest = this.testCurrentList(range);\n var preElementOLTest = this.testList(preElement);\n var nextElementOLTest = this.testList(nextElement);\n if (!preElementOLTest && !nextElementOLTest && preElemULStart !== '*' && nextElemULStart !== '*') {\n var brElement = createElement('br');\n if (startElementOLTest) {\n range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);\n if (range.startContainer.nodeName === '#text' && range.startContainer.textContent.length === 0) {\n this.parent.domNode.insertAfter(brElement, range.startContainer);\n }\n this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });\n e.event.preventDefault();\n }\n else if (range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim() === '*' ||\n range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim() === '-') {\n range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);\n if (range.startContainer.nodeName === '#text' && range.startContainer.textContent.length === 0) {\n this.parent.domNode.insertAfter(brElement, range.startContainer);\n }\n this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });\n e.event.preventDefault();\n }\n }\n };\n Lists.prototype.enterList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startNode = range.startContainer.nodeName === 'LI' ? range.startContainer :\n range.startContainer.parentElement.closest('LI');\n var endNode = range.endContainer.nodeName === 'LI' ? range.endContainer :\n range.endContainer.parentElement.closest('LI');\n // Checks for Image, Audio , Video Element inside List Element\n var hasMediaElem = false;\n if (!isNOU(startNode)) {\n var videoElemList = startNode.querySelectorAll('.e-video-clickelem');\n var embedVideoElem = videoElemList.length > 0 && videoElemList[0].childNodes[0].nodeName === 'IFRAME';\n hasMediaElem = startNode.querySelectorAll('IMG').length > 0 || startNode.querySelectorAll('AUDIO').length > 0 || startNode.querySelectorAll('VIDEO').length > 0 || embedVideoElem;\n }\n if (!isNOU(startNode) && !isNOU(endNode) && startNode === endNode && startNode.tagName === 'LI' &&\n startNode.textContent.trim() === '' && !hasMediaElem) {\n if (startNode.innerHTML.indexOf(' ') >= 0) {\n return;\n }\n if (startNode.textContent.charCodeAt(0) === 65279) {\n startNode.textContent = '';\n }\n var startNodeParent = startNode.parentElement;\n var parentOfCurrentOLUL = startNodeParent.parentElement;\n if (isNOU(parentOfCurrentOLUL.closest('UL')) && isNOU(parentOfCurrentOLUL.closest('OL'))) {\n if (!isNOU(startNode.nextElementSibling)) {\n var nearBlockNode = this.parent.domNode.blockParentNode(startNode);\n this.parent.nodeCutter.GetSpliceNode(range, nearBlockNode);\n }\n var insertTag = void 0;\n if (e.enterAction === 'DIV') {\n insertTag = createElement('div');\n insertTag.innerHTML = '
      ';\n }\n else if (e.enterAction === 'P') {\n insertTag = createElement('p');\n insertTag.innerHTML = '
      ';\n }\n else {\n insertTag = createElement('br');\n }\n this.parent.domNode.insertAfter(insertTag, startNodeParent);\n e.event.preventDefault();\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, insertTag, 0);\n if (startNodeParent.textContent === '' && (startNodeParent.querySelectorAll('audio,video').length === 0)) {\n detach(startNodeParent);\n }\n else {\n detach(startNode);\n }\n }\n // To handle the nested enter key press in the list for the first LI element\n if (!isNOU(parentOfCurrentOLUL) && (!isNOU(parentOfCurrentOLUL.closest('UL')) || !isNOU(parentOfCurrentOLUL.closest('OL'))) &&\n parentOfCurrentOLUL.nodeName === 'LI' && parentOfCurrentOLUL.style.listStyleType === 'none' &&\n parentOfCurrentOLUL.textContent === '' && startNode.textContent === '' && startNode === startNodeParent.firstElementChild &&\n isNOU(startNode.nextSibling)) {\n detach(startNodeParent);\n parentOfCurrentOLUL.style.removeProperty('list-style-type');\n e.event.preventDefault();\n }\n }\n };\n Lists.prototype.backspaceList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;\n endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;\n if (startNode === endNode && !isNullOrUndefined(closest(startNode, 'li')) &&\n ((startNode.textContent.trim() === '' && startNode.textContent.charCodeAt(0) === 65279) ||\n (startNode.textContent.length === 1 && startNode.textContent.charCodeAt(0) === 8203))) {\n startNode.textContent = '';\n }\n if (startNode === endNode && startNode.tagName === 'LI' && startNode.textContent.length === 0 &&\n isNOU(startNode.previousElementSibling)) {\n startNode.removeAttribute('style');\n }\n if (startNode === endNode && startNode.textContent === '') {\n if (startNode.parentElement.tagName === 'LI' && endNode.parentElement.tagName === 'LI') {\n detach(startNode);\n }\n else if (startNode.closest('ul') || startNode.closest('ol')) {\n var parentList = !isNOU(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');\n if (parentList.firstElementChild === startNode && !isNOU(parentList.children[1]) &&\n (parentList.children[1].tagName === 'OL' || parentList.children[1].tagName === 'UL')) {\n if (parentList.tagName === parentList.children[1].tagName) {\n while (parentList.children[1].lastChild) {\n this.parent.domNode.insertAfter(parentList.children[1].lastChild, parentList.children[1]);\n }\n detach(parentList.children[1]);\n }\n else {\n parentList.parentElement.insertBefore(parentList.children[1], parentList);\n }\n }\n }\n }\n else if (!isNOU(startNode.firstChild) && startNode.firstChild.nodeName === 'BR' &&\n (!isNullOrUndefined(startNode.childNodes[1]) && (startNode.childNodes[1].nodeName === 'UL' ||\n startNode.childNodes[1].nodeName === 'OL'))) {\n var parentList = !isNOU(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');\n if (parentList.tagName === startNode.childNodes[1].nodeName) {\n while (startNode.childNodes[1].lastChild) {\n this.parent.domNode.insertAfter(startNode.children[1].lastChild, startNode);\n }\n detach(startNode.childNodes[1]);\n }\n else {\n parentList.parentElement.insertBefore(startNode.children[1], parentList);\n }\n }\n this.removeList(range, e);\n this.firstListBackSpace(range, e);\n };\n Lists.prototype.removeList = function (range, e) {\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = (!isNOU(range.endContainer.parentElement.closest('li')) && range.endContainer.parentElement.closest('li').childElementCount > 1 && range.endContainer.nodeName === '#text') ? range.endContainer : this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n var parentList = (range.startContainer.nodeName === '#text') ? range.startContainer.parentElement.closest('li') : range.startContainer.closest('li');\n var fullContent = '';\n if (!isNOU(parentList) && !isNOU(parentList.childNodes)) {\n parentList.childNodes.forEach(function (e) {\n fullContent = fullContent + e.textContent;\n });\n }\n startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;\n endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;\n startNode = startNode.nodeName !== 'LI' && !isNOU(startNode.closest('LI')) ? startNode.closest('LI') : startNode;\n endNode = endNode.nodeName !== 'LI' && endNode.nodeName !== '#text' && !isNOU(endNode.closest('LI')) ? endNode.closest('LI') : endNode;\n if (((range.commonAncestorContainer.nodeName === 'OL' || range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'LI') &&\n isNOU(endNode.nextElementSibling) && endNode.textContent.length === range.endOffset &&\n isNOU(startNode.previousElementSibling) && range.startOffset === 0) ||\n (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&\n range.startOffset === 0 && range.endOffset === 1)) {\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n detach(range.commonAncestorContainer.childNodes[0]);\n }\n else if (range.commonAncestorContainer.nodeName === 'LI') {\n detach(range.commonAncestorContainer.parentElement);\n }\n else {\n detach(range.commonAncestorContainer);\n }\n e.event.preventDefault();\n }\n else if (!isNOU(parentList) && !range.collapsed && parentList.textContent === fullContent) {\n range.deleteContents();\n this.parent.editableElement.querySelectorAll('li').forEach(function (li) {\n if (!li.firstChild || li.textContent.trim() === '') {\n li.parentNode.removeChild(li);\n }\n });\n this.parent.editableElement.querySelectorAll('ol').forEach(function (ol) {\n if (!ol.firstChild || ol.textContent.trim() === '') {\n ol.parentNode.removeChild(ol);\n }\n });\n this.parent.editableElement.querySelectorAll('ul').forEach(function (ul) {\n if (!ul.firstChild || ul.textContent.trim() === '') {\n ul.parentNode.removeChild(ul);\n }\n });\n e.event.preventDefault();\n }\n };\n Lists.prototype.onKeyUp = function () {\n if (!isNOU(this.commonLIParent) && !isNOU(this.commonLIParent.querySelector('.removeList'))) {\n var currentLIElem = this.commonLIParent.querySelector('.removeList');\n while (!isNOU(currentLIElem.firstChild)) {\n this.parent.domNode.insertAfter(currentLIElem.firstChild, currentLIElem);\n }\n detach(currentLIElem);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Lists.prototype.firstListBackSpace = function (range, _e) {\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n if (!isNOU(startNode.closest('OL'))) {\n this.commonLIParent = startNode.closest('OL');\n }\n else if (!isNOU(startNode.closest('UL'))) {\n this.commonLIParent = startNode.closest('UL');\n }\n if (startNode.nodeName === 'LI' && range.startOffset === 0 && range.endOffset === 0 &&\n isNOU(startNode.previousSibling) && !isNOU(this.commonLIParent) && isNOU(this.commonLIParent.previousSibling) &&\n (isNOU(this.commonLIParent.parentElement.closest('OL')) && isNOU(this.commonLIParent.parentElement.closest('UL')) &&\n isNOU(this.commonLIParent.parentElement.closest('LI')))) {\n var currentElem = createElement('P');\n currentElem.innerHTML = '​';\n startNode.classList.add('removeList');\n this.commonLIParent.parentElement.insertBefore(currentElem, this.commonLIParent);\n }\n };\n Lists.prototype.keyDownHandler = function (e) {\n if (e.event.which === 13) {\n this.enterList(e);\n }\n if (e.event.which === 32) {\n this.spaceList(e);\n }\n if (e.event.which === 8) {\n this.backspaceList(e);\n }\n if ((e.event.which === 46 && e.event.action === 'delete') || (e.event.which === 88 && e.event.action === 'cut')) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var commonAncestor = range.commonAncestorContainer;\n var startEle = range.startContainer;\n var endEle = range.endContainer;\n var startNode = startEle.nodeType === 3 ? startEle.parentElement : startEle;\n var endNode = endEle.nodeType === 3 ? endEle.parentElement : endEle;\n if ((commonAncestor.nodeName === 'UL' || commonAncestor.nodeName === 'OL') && startNode !== endNode\n && (!isNullOrUndefined(closest(startNode, 'ul')) || !isNullOrUndefined(closest(startNode, 'ol')))\n && (!isNullOrUndefined(closest(endNode, 'ul')) || !isNullOrUndefined(closest(endNode, 'ol')))\n && (commonAncestor.lastElementChild === closest(endNode, 'li')) && !range.collapsed) {\n detach(commonAncestor);\n }\n this.removeList(range, e);\n }\n if (e.event.which === 9) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n if (!(e.event.action && e.event.action === 'indent')) {\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n }\n var blockNodes = void 0;\n var startOffset = range.startOffset;\n var endOffset = range.endOffset;\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n if ((startNode === endNode && (startNode.nodeName === 'BR' || startNode.nodeName === '#text') &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(startNode.parentNode.tagName.toLocaleLowerCase()) >= 0)) {\n return;\n }\n else {\n if (!(e.event.action && e.event.action === 'indent')) {\n this.domNode.setMarker(this.saveSelection);\n }\n blockNodes = this.domNode.blockNodes();\n }\n var nodes = [];\n var isNested = true;\n for (var i = 0; i < blockNodes.length; i++) {\n if (blockNodes[i].parentNode.tagName === 'LI') {\n nodes.push(blockNodes[i].parentNode);\n }\n else if (blockNodes[i].tagName === 'LI' && blockNodes[i].childNodes[0].tagName !== 'P' &&\n (blockNodes[i].childNodes[0].tagName !== 'OL' &&\n blockNodes[i].childNodes[0].tagName !== 'UL')) {\n nodes.push(blockNodes[i]);\n }\n }\n if (nodes.length > 1 || nodes.length && ((startOffset === 0 && endOffset === 0) || e.ignoreDefault)) {\n e.event.preventDefault();\n e.event.stopPropagation();\n this.currentAction = this.getAction(nodes[0]);\n if (e.event.shiftKey) {\n this.revertList(nodes, e);\n this.revertClean();\n }\n else {\n isNested = this.nestedList(nodes);\n }\n if (isNested) {\n this.cleanNode();\n this.parent.editableElement.focus();\n }\n if (!(e.event.action && e.event.action === 'indent')) {\n this.saveSelection = this.domNode.saveMarker(this.saveSelection);\n this.saveSelection.restore();\n if (e.callBack) {\n e.callBack({\n requestType: this.currentAction,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes(),\n event: e.event\n });\n }\n }\n }\n else {\n if (!(e.event.action && e.event.action === 'indent')) {\n if (e.event && e.event.shiftKey && e.event.key === 'Tab') {\n e.event.action = 'tab';\n }\n this.saveSelection = this.domNode.saveMarker(this.saveSelection, e.event.action);\n this.saveSelection.restore();\n }\n }\n }\n else {\n switch (e.event.action) {\n case 'ordered-list':\n this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'unordered-list':\n this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n }\n };\n Lists.prototype.spaceKeyAction = function (e) {\n if (e.event.which === 32) {\n this.spaceList(e);\n }\n };\n Lists.prototype.getAction = function (element) {\n var parentNode = element.parentNode;\n return (parentNode.nodeName === 'OL' ? 'OL' : 'UL');\n };\n Lists.prototype.revertClean = function () {\n var collectionNodes = this.parent.editableElement.querySelectorAll('ul, ol');\n for (var i = 0; i < collectionNodes.length; i++) {\n var listNodes = collectionNodes[i].querySelectorAll('ul, ol');\n if (listNodes.length > 0) {\n for (var j = 0; j < listNodes.length; j++) {\n var prevSibling = listNodes[j].previousSibling;\n if (prevSibling && prevSibling.tagName === 'LI') {\n prevSibling.appendChild(listNodes[j]);\n }\n }\n }\n }\n };\n Lists.prototype.noPreviousElement = function (elements) {\n var firstNode;\n var firstNodeOL;\n var siblingListOL = elements.querySelectorAll('ol, ul');\n var siblingListLI = elements\n .querySelectorAll('li');\n var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];\n if (siblingListLI.length > 0 && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {\n firstNode = siblingListLI[0];\n }\n else {\n firstNodeOL = siblingListOL[0];\n }\n if (firstNode) {\n for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n prepend([h], firstNode);\n setStyleAttribute(elements, { 'list-style-type': 'none' });\n setStyleAttribute(firstNode, { 'list-style-type': '' });\n h = nextSibling;\n }\n }\n else if (firstNodeOL) {\n var nestedElement = createElement('li');\n prepend([nestedElement], firstNodeOL);\n for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n nestedElement.appendChild(h);\n h = nextSibling;\n }\n prepend([firstNodeOL], elements.parentNode);\n detach(elements);\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n prepend([nestedElementLI], firstNodeOL.parentNode);\n append([firstNodeOL], nestedElementLI);\n }\n else {\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n prepend([nestedElementLI], elements.parentNode);\n var nestedElement = createElement(elements.parentNode.tagName);\n prepend([nestedElement], nestedElementLI);\n append([elements], nestedElement);\n }\n };\n Lists.prototype.nestedList = function (elements) {\n var isNested = false;\n for (var i = 0; i < elements.length; i++) {\n var prevSibling = this.domNode.getPreviousNode(elements[i]);\n if (prevSibling) {\n isNested = true;\n var firstNode = void 0;\n var firstNodeLI = void 0;\n var siblingListOL = elements[i].querySelectorAll('ol, ul');\n var siblingListLI = elements[i]\n .querySelectorAll('li');\n var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];\n if (siblingListLI.length > 0 && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {\n firstNodeLI = siblingListLI[0];\n }\n else {\n firstNode = siblingListOL[0];\n }\n if (firstNode) {\n var nestedElement = createElement('li');\n prepend([nestedElement], firstNode);\n for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n nestedElement.appendChild(h);\n h = nextSibling;\n }\n append([firstNode], prevSibling);\n detach(elements[i]);\n }\n else if (firstNodeLI) {\n if (prevSibling.tagName === 'LI') {\n for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n prepend([h], firstNodeLI);\n setStyleAttribute(elements[i], { 'list-style-type': 'none' });\n setStyleAttribute(firstNodeLI, { 'list-style-type': '' });\n h = nextSibling;\n }\n append([firstNodeLI.parentNode], prevSibling);\n detach(elements[i]);\n }\n }\n else {\n if (prevSibling.tagName === 'LI') {\n var nestedElement = createElement(elements[i].parentNode.tagName);\n append([nestedElement], prevSibling);\n append([elements[i]], nestedElement);\n }\n else if (prevSibling.tagName === 'OL' || prevSibling.tagName === 'UL') {\n append([elements[i]], prevSibling);\n }\n }\n }\n else {\n var element = elements[i];\n isNested = true;\n this.noPreviousElement(element);\n }\n }\n return isNested;\n };\n Lists.prototype.applyListsHandler = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement) {\n var startChildNodes = range.startContainer.childNodes;\n var startNode = ((startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) :\n range.startOffset]) || range.startContainer);\n var endNode = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) :\n range.endOffset] || range.endContainer);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var lastSelectionNode = endNode.lastChild.nodeName === 'BR' ? (isNOU(endNode.lastChild.previousSibling) ? endNode\n : endNode.lastChild.previousSibling) : endNode.lastChild;\n while (!isNOU(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&\n lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {\n lastSelectionNode = lastSelectionNode.lastChild;\n }\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startNode, lastSelectionNode, 0, lastSelectionNode.textContent.length);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n }\n if (range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&\n range.startOffset === range.endOffset && range.startOffset === 0 &&\n this.parent.editableElement.textContent.length === 0 && (this.parent.editableElement.childNodes[0].nodeName !== 'TABLE' &&\n this.parent.editableElement.childNodes[0].nodeName !== 'IMG')) {\n var focusNode = range.startContainer.childNodes[0];\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, focusNode, focusNode, 0, 0);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n }\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.currentAction = e.subCommand;\n this.currentAction = e.subCommand = this.currentAction === 'NumberFormatList' ? 'OL' : this.currentAction === 'BulletFormatList' ? 'UL' : this.currentAction;\n this.domNode.setMarker(this.saveSelection);\n var listsNodes = this.domNode.blockNodes(true);\n if (e.enterAction === 'BR') {\n this.setSelectionBRConfig();\n var allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);\n var selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);\n var currentFormatNodes = [];\n if (selectedNodes.length === 0) {\n selectedNodes.push(listsNodes[0]);\n }\n for (var i = 0; i < selectedNodes.length; i++) {\n var currentNode = selectedNodes[i];\n var previousCurrentNode = void 0;\n while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {\n previousCurrentNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {\n currentFormatNodes.push(previousCurrentNode);\n }\n }\n for (var i = 0; i < currentFormatNodes.length; i++) {\n if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {\n var currentNode = currentFormatNodes[i];\n var previousNode = currentNode;\n while (currentNode === this.parent.editableElement) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n var tempElem = void 0;\n if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&\n previousNode.parentElement === this.parent.editableElement) {\n tempElem = createElement('p');\n previousNode.parentElement.insertBefore(tempElem, previousNode);\n tempElem.appendChild(previousNode);\n }\n else {\n tempElem = previousNode;\n }\n var preNode = tempElem.previousSibling;\n while (!isNOU(preNode) && preNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(preNode)) {\n tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);\n preNode = tempElem.previousSibling;\n }\n if (!isNOU(preNode) && preNode.nodeName === 'BR') {\n detach(preNode);\n }\n var postNode = tempElem.nextSibling;\n while (!isNOU(postNode) && postNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(postNode)) {\n tempElem.appendChild(postNode);\n postNode = tempElem.nextSibling;\n }\n if (!isNOU(postNode) && postNode.nodeName === 'BR') {\n detach(postNode);\n }\n }\n }\n this.setSelectionBRConfig();\n listsNodes = this.parent.domNode.blockNodes();\n }\n for (var i = 0; i < listsNodes.length; i++) {\n if (listsNodes[i].tagName === 'TABLE' && !range.collapsed) {\n listsNodes.splice(i, 1);\n }\n if (listsNodes.length > 0 && listsNodes[i].tagName !== 'LI'\n && 'LI' === listsNodes[i].parentNode.tagName) {\n listsNodes[i] = listsNodes[i].parentNode;\n }\n }\n this.applyLists(listsNodes, this.currentAction, e.selector, e.item, e);\n if (e.callBack) {\n e.callBack({\n requestType: this.currentAction,\n event: e.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n Lists.prototype.setSelectionBRConfig = function () {\n var startElem = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endElem = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (isNOU(endElem)) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);\n }\n else {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);\n }\n };\n Lists.prototype.applyLists = function (elements, type, selector, item, e) {\n var isReverse = true;\n if (this.isRevert(elements, type, item) && isNOU(item) || (!isNOU(item) && item.listStyle === 'none')) {\n this.revertList(elements, e);\n this.removeEmptyListElements();\n }\n else {\n this.checkLists(elements, type, item);\n var marginLeftAttribute = '';\n if (elements[0].style.marginLeft !== '') {\n marginLeftAttribute = ' style = \"margin-left: ' + elements[0].style.marginLeft + ';\"';\n }\n for (var i = 0; i < elements.length; i++) {\n if (!isNOU(item) && !isNOU(item.listStyle)) {\n if (item.listStyle === 'listImage') {\n setStyleAttribute(elements[i], { 'list-style-image': item.listImage });\n }\n else {\n setStyleAttribute(elements[i], { 'list-style-image': 'none' });\n setStyleAttribute(elements[i], { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });\n }\n }\n var elemAtt = void 0;\n elements[i].style.removeProperty('margin-left');\n elemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);\n if (elements[i].getAttribute('contenteditable') === 'true'\n && elements[i].childNodes.length === 1 && elements[i].childNodes[0].nodeName === 'TABLE') {\n var listEle = document.createElement(type);\n listEle.innerHTML = '

    • ';\n elements[i].appendChild(listEle);\n }\n else if ('LI' !== elements[i].tagName && isNOU(item) &&\n elements[i].nodeName === 'BLOCKQUOTE') {\n isReverse = false;\n var openTag = '<' + type + marginLeftAttribute + '>';\n var closeTag = '';\n var newTag = 'li' + elemAtt;\n var replaceHTML = elements[i].innerHTML;\n var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);\n var collectionString = openTag + innerHTML + closeTag;\n elements[i].innerHTML = collectionString;\n }\n else if ('LI' !== elements[i].tagName && isNOU(item)) {\n isReverse = false;\n var openTag = '<' + type + marginLeftAttribute + '>';\n var closeTag = '';\n var newTag = 'li' + elemAtt;\n var replaceHTML = (elements[i].tagName.toLowerCase() === CONSTANT.DEFAULT_TAG ?\n elements[i].innerHTML : elements[i].outerHTML);\n var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);\n var collectionString = openTag + innerHTML + closeTag;\n this.domNode.replaceWith(elements[i], collectionString);\n }\n else if (!isNOU(item) && 'LI' !== elements[i].tagName) {\n // eslint-disable-next-line\n isReverse = false;\n var currentElemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);\n var openTag = '<' + type + currentElemAtt + '>';\n var closeTag = '';\n var newTag = 'li';\n var replaceHTML = (elements[i].tagName.toLowerCase() === CONSTANT.DEFAULT_TAG ?\n elements[i].innerHTML : elements[i].outerHTML);\n var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);\n var collectionString = openTag + innerHTML + closeTag;\n this.domNode.replaceWith(elements[i], collectionString);\n }\n }\n }\n this.cleanNode();\n this.parent.editableElement.focus();\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, selector);\n }\n this.saveSelection = this.domNode.saveMarker(this.saveSelection);\n this.saveSelection.restore();\n };\n Lists.prototype.removeEmptyListElements = function () {\n var listElem = this.parent.editableElement.querySelectorAll('ol, ul');\n for (var i = 0; i < listElem.length; i++) {\n if (listElem[i].textContent.trim() === '') {\n detach(listElem[i]);\n }\n }\n };\n Lists.prototype.isRevert = function (nodes, tagName, item) {\n var isRevert = true;\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].tagName !== 'LI') {\n return false;\n }\n if (nodes[i].parentNode.tagName !== tagName ||\n isNOU(item) && nodes[i].parentNode.style.listStyleType !== '') {\n isRevert = false;\n }\n if (nodes[i].parentNode.tagName === tagName && nodes[i].parentNode.style.listStyleType !== '') {\n isRevert = true;\n }\n }\n return isRevert;\n };\n Lists.prototype.checkLists = function (nodes, tagName, item) {\n var nodesTemp = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i].parentNode;\n if (!isNOU(item) && 'LI' === nodes[i].tagName && !isNOU(item.listStyle)) {\n if (item.listStyle === 'listImage') {\n setStyleAttribute(node, { 'list-style-image': item.listImage });\n }\n else {\n setStyleAttribute(node, { 'list-style-image': 'none' });\n setStyleAttribute(node, { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });\n }\n }\n if ((nodes[i].tagName === 'LI' && node.tagName !== tagName && nodesTemp.indexOf(node) < 0) ||\n (nodes[i].tagName === 'LI' && node.tagName === tagName && nodesTemp.indexOf(node) < 0 && item !== null)) {\n nodesTemp.push(node);\n }\n if (isNOU(item) && (node.tagName === tagName ||\n ((node.tagName === 'UL' || node.tagName === 'OL') && node.hasAttribute('style')))) {\n if (node.hasAttribute('style')) {\n node.removeAttribute('style');\n }\n }\n }\n for (var j = nodesTemp.length - 1; j >= 0; j--) {\n var h = nodesTemp[j];\n var replace = '<' + tagName.toLowerCase() + ' '\n + this.domNode.attributes(h) + '>' + h.innerHTML + '';\n this.domNode.replaceWith(nodesTemp[j], replace);\n }\n };\n Lists.prototype.cleanNode = function () {\n var liParents = this.parent.editableElement.querySelectorAll('ol + ol, ul + ul');\n var listStyleType;\n var firstNodeOL;\n for (var c = 0; c < liParents.length; c++) {\n var node = liParents[c];\n var toFindtopOlUl = true;\n if (toFindtopOlUl && (liParents[c].parentElement.parentElement.nodeName === 'OL' || liParents[c].parentElement.parentElement.nodeName === 'UL')) {\n toFindtopOlUl = false;\n var preElement = liParents[c].parentElement.parentElement;\n listStyleType = preElement.style.listStyleType;\n firstNodeOL = node.previousElementSibling;\n }\n if (this.domNode.isList(node.previousElementSibling) &&\n this.domNode.openTagString(node) === this.domNode.openTagString(node.previousElementSibling)) {\n var contentNodes = this.domNode.contents(node);\n for (var f = 0; f < contentNodes.length; f++) {\n node.previousElementSibling.appendChild(contentNodes[f]);\n }\n node.parentNode.removeChild(node);\n }\n else if (!isNOU(node.getAttribute('level'))) {\n if (node.tagName === node.previousElementSibling.tagName) {\n node.previousElementSibling.lastChild.append(node);\n }\n }\n }\n if (firstNodeOL) {\n firstNodeOL.style.listStyleType = listStyleType;\n }\n };\n Lists.prototype.findUnSelected = function (temp, elements) {\n temp = temp.slice().reverse();\n if (temp.length > 0) {\n var rightIndent = [];\n var indentElements = [];\n var lastElement = elements[elements.length - 1];\n var lastElementChild = [];\n var childElements = [];\n lastElementChild = (lastElement.childNodes);\n for (var z = 0; z < lastElementChild.length; z++) {\n if (lastElementChild[z].tagName === 'OL' || lastElementChild[z].tagName === 'UL') {\n var childLI = lastElementChild[z]\n .querySelectorAll('li');\n if (childLI.length > 0) {\n for (var y = 0; y < childLI.length; y++) {\n childElements.push(childLI[y]);\n }\n }\n }\n }\n for (var i = 0; i < childElements.length; i++) {\n var count = 0;\n for (var j = 0; j < temp.length; j++) {\n if (!childElements[i].contains((temp[j]))) {\n count = count + 1;\n }\n }\n if (count === temp.length) {\n indentElements.push(childElements[i]);\n }\n }\n if (indentElements.length > 0) {\n for (var x = 0; x < indentElements.length; x++) {\n if (this.domNode.contents(indentElements[x])[0].nodeName !== 'OL' &&\n this.domNode.contents(indentElements[x])[0].nodeName !== 'UL') {\n rightIndent.push(indentElements[x]);\n }\n }\n }\n if (rightIndent.length > 0) {\n this.nestedList(rightIndent);\n }\n }\n };\n Lists.prototype.revertList = function (elements, e) {\n var temp = [];\n for (var i = elements.length - 1; i >= 0; i--) {\n for (var j = i - 1; j >= 0; j--) {\n if (elements[j].contains((elements[i])) || elements[j] === elements[i]) {\n temp.push(elements[i]);\n elements.splice(i, 1);\n break;\n }\n }\n }\n this.findUnSelected(temp, elements);\n var viewNode = [];\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if ((isNullOrUndefined(e.item)) || ((element.nodeName === 'LI' && e.item.listStyle === 'none'))) {\n if (this.domNode.contents(element)[0].nodeType === 3 && this.domNode.contents(element)[0].textContent.trim().length === 0) {\n detach(this.domNode.contents(element)[0]);\n }\n var parentNode = elements[i].parentNode;\n var className = element.getAttribute('class');\n if (temp.length === 0) {\n var siblingList = elements[i].querySelectorAll('ul, ol');\n var firstNode = siblingList[0];\n if (firstNode) {\n var child = firstNode\n .querySelectorAll('li');\n if (child) {\n var nestedElement = createElement(firstNode.tagName);\n append([nestedElement], firstNode.parentNode);\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n append([nestedElementLI], nestedElement);\n append([firstNode], nestedElementLI);\n }\n }\n }\n if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element),\n 'LI' === parentNode.parentNode.tagName || 'OL' === parentNode.parentNode.tagName ||\n 'UL' === parentNode.parentNode.tagName) {\n element.parentNode.insertBefore(this.closeTag('LI'), element);\n }\n else {\n var classAttr = '';\n if (className) {\n // eslint-disable-next-line\n classAttr += ' class=\"' + className + '\"';\n }\n if (CONSTANT.DEFAULT_TAG && 0 === element.querySelectorAll(CONSTANT.BLOCK_TAGS.join(', ')).length) {\n var wrapperclass = isNullOrUndefined(className) ? ' class=\"e-rte-wrap-inner\"' :\n ' class=\"' + className + ' e-rte-wrap-inner\"';\n var parentElement = parentNode;\n if (elements.length === parentElement.querySelectorAll('li').length) {\n if (!isNOU(parentElement.style.listStyleType)) {\n parentNode.style.removeProperty(\"list-style-type\");\n }\n if (!isNOU(parentElement.style.listStyleImage)) {\n parentNode.style.removeProperty(\"list-style-image\");\n }\n if (parentElement.style.length === 0) {\n parentNode.removeAttribute(\"style\");\n }\n }\n var wrapper = '<' + CONSTANT.DEFAULT_TAG + wrapperclass + this.domNode.attributes(element) + '>';\n if (e.enterAction !== 'BR') {\n this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));\n }\n }\n else if (this.domNode.contents(element)[0].nodeType === 3) {\n var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));\n this.domNode.replaceWith(this.domNode.contents(element)[0], replace);\n }\n else if (this.domNode.contents(element)[0].classList.contains(markerClassName.startSelection) ||\n this.domNode.contents(element)[0].classList.contains(markerClassName.endSelection)) {\n var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);\n this.domNode.replaceWith(this.domNode.contents(element)[0], replace);\n }\n else {\n var childNode = element.firstChild;\n className = childNode.getAttribute('class');\n attributes(childNode, this.domNode.rawAttributes(parentNode));\n if (className && childNode.getAttribute('class')) {\n attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });\n }\n }\n append([this.openTag('LI')], element);\n prepend([this.closeTag('LI')], element);\n }\n this.domNode.insertAfter(this.openTag(parentNode.tagName), element);\n if (parentNode.parentNode.tagName === 'LI') {\n parentNode = parentNode.parentNode.parentNode;\n }\n if (viewNode.indexOf(parentNode) < 0) {\n viewNode.push(parentNode);\n }\n }\n }\n for (var i = 0; i < viewNode.length; i++) {\n var node = viewNode[i];\n var nodeInnerHtml = node.innerHTML;\n var closeTag = /<\\/span>/g;\n var openTag = /<\\/span>/g;\n nodeInnerHtml = nodeInnerHtml.replace(closeTag, '');\n nodeInnerHtml = nodeInnerHtml.replace(openTag, '<$1 ' + this.domNode.attributes(node) + '>');\n this.domNode.replaceWith(node, this.domNode.openTagString(node) + nodeInnerHtml.trim() + this.domNode.closeTagString(node));\n }\n var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');\n for (var i = 0; i < emptyUl.length; i++) {\n detach(emptyUl[i]);\n }\n var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');\n for (var i = 0; i < emptyLi.length; i++) {\n detach(emptyLi[i]);\n }\n };\n Lists.prototype.openTag = function (type) {\n return this.domNode.parseHTMLFragment('');\n };\n Lists.prototype.closeTag = function (type) {\n return this.domNode.parseHTMLFragment('');\n };\n return Lists;\n}());\nexport { Lists };\n","/**\n * Node appending methods.\n *\n * @hidden\n */\nvar InsertMethods = /** @class */ (function () {\n function InsertMethods() {\n }\n /**\n * WrapBefore method\n *\n * @param {Text} textNode - specifies the text node\n * @param {HTMLElement} parentNode - specifies the parent node\n * @param {boolean} isAfter - specifies the boolean value\n * @returns {Text} - returns the text value\n * @hidden\n\n */\n InsertMethods.WrapBefore = function (textNode, parentNode, isAfter) {\n parentNode.innerText = textNode.textContent;\n //eslint-disable-next-line\n (!isAfter) ? this.AppendBefore(parentNode, textNode) : this.AppendBefore(parentNode, textNode, true);\n if (textNode.parentNode) {\n textNode.parentNode.removeChild(textNode);\n }\n return parentNode.childNodes[0];\n };\n /**\n * Wrap method\n *\n * @param {HTMLElement} childNode - specifies the child node\n * @param {HTMLElement} parentNode - specifies the parent node.\n * @returns {HTMLElement} - returns the element\n * @hidden\n\n */\n InsertMethods.Wrap = function (childNode, parentNode) {\n this.AppendBefore(parentNode, childNode);\n parentNode.appendChild(childNode);\n return childNode;\n };\n /**\n * unwrap method\n *\n * @param {Node} node - specifies the node element.\n * @returns {Node[]} - returns the array of value\n * @hidden\n\n */\n InsertMethods.unwrap = function (node) {\n var parent = node.parentNode;\n var child = [];\n for (; node.firstChild; null) {\n child.push(parent.insertBefore(node.firstChild, node));\n }\n parent.removeChild(node);\n return child;\n };\n /**\n * AppendBefore method\n *\n * @param {HTMLElement} textNode - specifies the element\n * @param {HTMLElement} parentNode - specifies the parent node\n * @param {boolean} isAfter - specifies the boolean value\n * @returns {void}\n * @hidden\n\n */\n InsertMethods.AppendBefore = function (textNode, parentNode, isAfter) {\n return (parentNode.parentNode) ? ((!isAfter) ? parentNode.parentNode.insertBefore(textNode, parentNode)\n : parentNode.parentNode.insertBefore(textNode, parentNode.nextSibling)) :\n parentNode;\n };\n return InsertMethods;\n}());\nexport { InsertMethods };\n","import { NodeSelection } from './../../selection/index';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { InsertMethods } from './insert-methods';\n/**\n * Split the Node based on selection\n *\n * @hidden\n\n */\nvar NodeCutter = /** @class */ (function () {\n function NodeCutter() {\n this.enterAction = 'P';\n this.position = -1;\n this.nodeSelection = new NodeSelection();\n }\n // Split Selection Node\n /**\n * GetSpliceNode method\n *\n * @param {Range} range - specifies the range\n * @param {HTMLElement} node - specifies the node element.\n * @returns {Node} - returns the node value\n * @hidden\n\n */\n NodeCutter.prototype.GetSpliceNode = function (range, node) {\n node = this.SplitNode(range, node, true);\n node = this.SplitNode(range, node, false);\n return node;\n };\n /**\n * @param {Range} range - specifies the range\n * @param {HTMLElement} node - specifies the node element.\n * @param {boolean} isCollapsed - specifies the boolean value\n * @returns {HTMLElement} - returns the element\n * @hidden\n\n */\n NodeCutter.prototype.SplitNode = function (range, node, isCollapsed) {\n if (node) {\n var clone = range.cloneRange();\n var parent_1 = node.parentNode;\n var index = this.nodeSelection.getIndex(node);\n clone.collapse(isCollapsed);\n // eslint-disable-next-line\n (isCollapsed) ? clone.setStartBefore(node) : clone.setEndAfter(node);\n var fragment = clone.extractContents();\n if (isCollapsed) {\n node = parent_1.childNodes[index];\n fragment = this.spliceEmptyNode(fragment, false);\n if (fragment && fragment.childNodes.length > 0) {\n var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG' && !(fragment.querySelectorAll('img').length > 0)\n && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;\n if (!isEmpty) {\n if (node) {\n InsertMethods.AppendBefore(fragment, node);\n }\n else {\n parent_1.appendChild(fragment);\n var divNode = document.createElement('div');\n divNode.innerHTML = '';\n node = divNode.firstChild;\n parent_1.appendChild(node);\n }\n }\n }\n }\n else {\n node = parent_1.childNodes.length > 1 ? parent_1.childNodes[index] :\n parent_1.childNodes[0];\n fragment = this.spliceEmptyNode(fragment, true);\n if (fragment && fragment.childNodes.length > 0) {\n var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'\n && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;\n if (!isEmpty) {\n if (node) {\n InsertMethods.AppendBefore(fragment, node, true);\n }\n else {\n parent_1.appendChild(fragment);\n var divNode = document.createElement('div');\n divNode.innerHTML = '';\n parent_1.insertBefore(divNode.firstChild, parent_1.firstChild);\n node = parent_1.firstChild;\n }\n }\n }\n }\n return node;\n }\n else {\n return null;\n }\n };\n NodeCutter.prototype.isRteElm = function (fragment) {\n var result = true;\n if (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG') {\n var firstChild = fragment.childNodes[0];\n for (var i = 0; !isNOU(firstChild.childNodes) && i < firstChild.childNodes.length; i++) {\n if (firstChild.childNodes[i].nodeName === 'IMG' || (firstChild.childNodes[i].nodeName === 'SPAN' &&\n (firstChild.childNodes[i].classList.contains('e-video-wrap') ||\n firstChild.childNodes[i].classList.contains('e-embed-video-wrap') ||\n firstChild.childNodes[i].classList.contains('e-audio-wrap')))) {\n result = false;\n }\n }\n }\n else {\n result = true;\n }\n return result;\n };\n NodeCutter.prototype.spliceEmptyNode = function (fragment, isStart) {\n var len;\n if (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName === '#text' &&\n fragment.childNodes[0].textContent === '' || fragment.textContent === '') {\n len = -1;\n }\n else {\n len = fragment.childNodes.length - 1;\n }\n if (len > -1 && !isStart) {\n this.spliceEmptyNode(fragment.childNodes[len], isStart);\n }\n else if (len > -1) {\n this.spliceEmptyNode(fragment.childNodes[0], isStart);\n }\n else if (fragment.nodeType !== 3 && fragment.nodeType !== 11 && fragment.nodeName !== 'IMG' && !(fragment.querySelectorAll('img').length > 0) && !(fragment.classList.contains('e-video-wrap')) && !(fragment.classList.contains('e-audio-wrap'))) {\n fragment.parentNode.removeChild(fragment);\n }\n return fragment;\n };\n // Cursor Position split\n NodeCutter.prototype.GetCursorStart = function (indexes, index, isStart) {\n indexes = (isStart) ? indexes : indexes.reverse();\n var position = indexes[0];\n for (var num = 0; num < indexes.length && ((isStart) ? (indexes[num] < index) : (indexes[num] >= index)); num++) {\n position = indexes[num];\n }\n return position;\n };\n /**\n * GetCursorRange method\n *\n * @param {Document} docElement - specifies the document\n * @param {Range} range - specifies the range\n * @param {Node} node - specifies the node.\n * @returns {Range} - returns the range value\n * @hidden\n\n */\n NodeCutter.prototype.GetCursorRange = function (docElement, range, node) {\n var cursorRange = docElement.createRange();\n var indexes = [];\n indexes.push(0);\n var str = this.TrimLineBreak(node.data);\n var index = str.indexOf(' ', 0);\n while (index !== -1) {\n if (indexes.indexOf(index) < 0) {\n indexes.push(index);\n }\n if (new RegExp('\\\\s').test(str[index - 1]) && (indexes.indexOf(index - 1) < 0)) {\n indexes.push(index - 1);\n }\n if (new RegExp('\\\\s').test(str[index + 1])) {\n indexes.push(index + 1);\n }\n index = str.indexOf(' ', (index + 1));\n }\n indexes.push(str.length);\n if ((indexes.indexOf(range.startOffset) >= 0)\n || ((indexes.indexOf(range.startOffset - 1) >= 0) && (range.startOffset !== 1\n || (range.startOffset === 1 && new RegExp('\\\\s').test(str[0])))\n || (((indexes[indexes.length - 1] - 1) === range.startOffset) && range.endOffset !== (str.length - 1) && !new RegExp('\\\\s').test(str[0])))) {\n cursorRange = range;\n this.position = 1;\n }\n else {\n var startOffset = this.GetCursorStart(indexes, range.startOffset, true);\n this.position = range.startOffset - startOffset;\n if (startOffset !== 0 && str[startOffset] && str[startOffset] === ' ') {\n startOffset = startOffset + 1;\n }\n cursorRange.setStart(range.startContainer, startOffset);\n cursorRange.setEnd(range.startContainer, this.GetCursorStart(indexes, range.startOffset, false));\n }\n return cursorRange;\n };\n /**\n * GetCursorNode method\n *\n * @param {Document} docElement - specifies the document\n * @param {Range} range - specifies the range\n * @param {Node} node - specifies the node.\n * @returns {Node} - returns the node value\n * @hidden\n\n */\n NodeCutter.prototype.GetCursorNode = function (docElement, range, node) {\n return this.GetSpliceNode(this.GetCursorRange(docElement, range, node), node);\n };\n /**\n * TrimLineBreak method\n *\n * @param {string} line - specifies the string value.\n * @returns {string} - returns the string\n * @hidden\n\n */\n NodeCutter.prototype.TrimLineBreak = function (line) {\n return line.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n };\n return NodeCutter;\n}());\nexport { NodeCutter };\n","import * as EVENTS from './../../common/constant';\nimport { isNullOrUndefined as isNOU, detach, createElement, closest } from '@syncfusion/ej2-base';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { markerClassName } from './dom-node';\nimport { NodeCutter } from './nodecutter';\n/**\n * Formats internal component\n *\n * @hidden\n\n */\nvar Formats = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @hidden\n\n */\n function Formats(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n Formats.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.FORMAT_TYPE, this.applyFormats, this);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, this.onKeyUp, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Formats.prototype.getParentNode = function (node) {\n for (; node.parentNode && node.parentNode !== this.parent.editableElement; null) {\n node = node.parentNode;\n }\n return node;\n };\n Formats.prototype.onKeyUp = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var endCon = range.endContainer;\n var lastChild = endCon.lastChild;\n if (e.event.which === 13 && range.startContainer === endCon && endCon.nodeType !== 3) {\n var pTag = createElement('p');\n pTag.innerHTML = '
      ';\n if (!isNOU(lastChild) && lastChild && lastChild.nodeName === 'BR' && (lastChild.previousSibling && lastChild.previousSibling.nodeName === 'TABLE')) {\n endCon.replaceChild(pTag, lastChild);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 0);\n }\n else {\n var brNode = this.parent.nodeSelection.getSelectionNodeCollectionBr(range)[0];\n if (!isNOU(brNode) && brNode.nodeName === 'BR' && (brNode.previousSibling && brNode.previousSibling.nodeName === 'TABLE')) {\n endCon.replaceChild(pTag, brNode);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 0);\n }\n }\n }\n if (e.enterAction !== 'BR' && !isNOU(range.startContainer) && !isNOU(range.startContainer.parentElement) && range.startContainer === range.endContainer && range.startContainer.nodeName === '#text' && range.startContainer.parentElement.classList.contains(\"e-content\") && range.startContainer.parentElement.isContentEditable) {\n var pTag = createElement(e.enterAction);\n range.startContainer.parentElement.insertBefore(pTag, range.startContainer);\n pTag.appendChild(range.startContainer);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 1);\n }\n };\n Formats.prototype.getBlockParent = function (node, endNode) {\n var currentParent;\n while (node != endNode) {\n currentParent = node;\n node = node.parentElement;\n }\n return currentParent;\n };\n Formats.prototype.onKeyDown = function (e) {\n if (e.event.which === 13) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startCon = (range.startContainer.textContent.length === 0 || range.startContainer.nodeName === 'PRE')\n ? range.startContainer : range.startContainer.parentElement;\n var endCon = (range.endContainer.textContent.length === 0 || range.endContainer.nodeName === 'PRE')\n ? range.endContainer : range.endContainer.parentElement;\n var preElem = closest(startCon, 'pre');\n var endPreElem = closest(endCon, 'pre');\n var blockquoteEle = closest(startCon, 'blockquote');\n var endBlockquoteEle = closest(endCon, 'blockquote');\n var liParent = !isNOU(preElem) && !isNOU(preElem.parentElement) && preElem.parentElement.tagName === 'LI';\n if (liParent) {\n return;\n }\n if (((isNOU(preElem) && !isNOU(endPreElem)) || (!isNOU(preElem) && isNOU(endPreElem)))) {\n e.event.preventDefault();\n this.deleteContent(range);\n this.removeCodeContent(range);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, endCon, 0);\n }\n if (e.event.which === 13 && ((!isNOU(blockquoteEle) && !isNOU(endBlockquoteEle)) || (!isNOU(blockquoteEle) && isNOU(endBlockquoteEle)))) {\n var startParent = this.getBlockParent(range.startContainer, blockquoteEle);\n if ((startParent.textContent.charCodeAt(0) === 8203 &&\n startParent.textContent.length === 1) || startParent.textContent.length === 0) {\n if (isNOU(startParent.nextSibling) && ((startParent.previousSibling.textContent.charCodeAt(0) === 8203 &&\n startParent.previousSibling.textContent.length === 1) || startParent.previousSibling.textContent.length === 0)) {\n e.event.preventDefault();\n this.paraFocus(startParent.parentElement); //Revert from blockquotes while pressing enter key\n }\n }\n }\n if (e.event.which === 13 && !isNOU(preElem) && !isNOU(endPreElem)) {\n e.event.preventDefault();\n this.deleteContent(range);\n this.removeCodeContent(range);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var lastEmpty = range.startContainer.childNodes[range.endOffset];\n var lastBeforeBr = range.startContainer.childNodes[range.endOffset - 1];\n var startParent = range.startContainer;\n if (!isNOU(lastEmpty) && !isNOU(lastBeforeBr) && isNOU(lastEmpty.nextSibling) &&\n lastEmpty.nodeName === 'BR' && lastBeforeBr.nodeName === 'BR') {\n this.paraFocus(range.startContainer, e.enterAction);\n }\n else if ((startParent.textContent.charCodeAt(0) === 8203 &&\n startParent.textContent.length === 1) || startParent.textContent.length === 0) {\n //Double enter with any parent tag for the node\n while (startParent.parentElement.nodeName !== 'PRE' &&\n (startParent.textContent.length === 1 || startParent.textContent.length === 0)) {\n startParent = startParent.parentElement;\n }\n if (!isNOU(startParent.previousSibling) && startParent.previousSibling.nodeName === 'BR' &&\n isNOU(startParent.nextSibling)) {\n this.paraFocus(startParent.parentElement);\n }\n else {\n this.isNotEndCursor(preElem, range);\n }\n }\n else {\n //Cursor at start and middle\n this.isNotEndCursor(preElem, range);\n }\n }\n }\n };\n Formats.prototype.removeCodeContent = function (range) {\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(65279), 'g');\n if (!isNOU(range.endContainer.textContent.match(regEx))) {\n var pointer = range.endContainer.textContent.charCodeAt(range.endOffset - 1) === 65279 ?\n range.endOffset - 2 : range.endOffset;\n range.endContainer.textContent = range.endContainer.textContent.replace(regEx, '');\n if (range.endContainer.textContent === '') {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, range.endContainer.parentElement, 0);\n }\n else {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, range.endContainer, pointer);\n }\n }\n };\n Formats.prototype.deleteContent = function (range) {\n if (range.startContainer !== range.endContainer || range.startOffset !== range.endOffset) {\n range.deleteContents();\n }\n };\n Formats.prototype.paraFocus = function (referNode, enterAction) {\n var insertTag;\n if (enterAction === 'DIV') {\n insertTag = createElement('div');\n insertTag.innerHTML = '
      ';\n }\n else if (enterAction === 'BR') {\n insertTag = createElement('br');\n }\n else {\n insertTag = createElement('p');\n insertTag.innerHTML = '
      ';\n }\n this.parent.domNode.insertAfter(insertTag, referNode);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, insertTag, 0);\n detach(referNode.lastChild);\n };\n Formats.prototype.isNotEndCursor = function (preElem, range) {\n var nodeCutter = new NodeCutter();\n var isEnd = range.startOffset === preElem.lastChild.textContent.length &&\n preElem.lastChild.textContent === range.startContainer.textContent;\n //Cursor at start point\n if (preElem.textContent.indexOf(range.startContainer.textContent) === 0 &&\n ((range.startOffset === 0 && range.endOffset === 0) || range.startContainer.nodeName === 'PRE')) {\n this.insertMarker(preElem, range);\n var brTag = createElement('br');\n preElem.childNodes[range.endOffset].parentElement.insertBefore(brTag, preElem.childNodes[range.endOffset]);\n }\n else {\n //Cursor at middle\n var cloneNode = nodeCutter.SplitNode(range, preElem, true);\n this.insertMarker(preElem, range);\n var previousSib = preElem.previousElementSibling;\n if (previousSib.tagName === 'PRE') {\n previousSib.insertAdjacentHTML('beforeend', '
      ' + cloneNode.innerHTML);\n detach(preElem);\n }\n }\n //To place the cursor position\n this.setCursorPosition(isEnd, preElem);\n };\n Formats.prototype.setCursorPosition = function (isEnd, preElem) {\n var isEmpty = false;\n var markerElem = this.parent.editableElement.querySelector('.tempSpan');\n var mrkParentElem = markerElem.parentElement;\n // eslint-disable-next-line\n markerElem.parentNode.textContent === '' ? isEmpty = true :\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n if (isEnd) {\n if (isEmpty) {\n //Enter press when pre element is empty\n if (mrkParentElem === preElem) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n detach(markerElem);\n }\n else {\n this.focusSelectionParent(markerElem, mrkParentElem);\n }\n }\n else {\n var brElm = createElement('br');\n this.parent.domNode.insertAfter(brElm, markerElem);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n detach(markerElem);\n }\n }\n else {\n // eslint-disable-next-line\n isEmpty ? this.focusSelectionParent(markerElem, mrkParentElem) : detach(markerElem);\n }\n };\n Formats.prototype.focusSelectionParent = function (markerElem, tempSpanPElem) {\n detach(markerElem);\n tempSpanPElem.innerHTML = '\\u200B';\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, tempSpanPElem, 0);\n };\n Formats.prototype.insertMarker = function (preElem, range) {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n if (range.startContainer.nodeName === 'PRE') {\n preElem.childNodes[range.endOffset].parentElement.insertBefore(tempSpan, preElem.childNodes[range.endOffset]);\n }\n else {\n range.startContainer.parentElement.insertBefore(tempSpan, range.startContainer);\n }\n };\n Formats.prototype.applyFormats = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var isSelectAll = false;\n if (this.parent.editableElement === range.endContainer &&\n !isNOU(this.parent.editableElement.children[range.endOffset - 1]) &&\n this.parent.editableElement.children[range.endOffset - 1].tagName === 'TABLE' && !range.collapsed) {\n isSelectAll = true;\n }\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.parent.domNode.setMarker(save);\n var formatsNodes = this.parent.domNode.blockNodes(true);\n if (e.enterAction === 'BR') {\n this.setSelectionBRConfig();\n var allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);\n var selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);\n var currentFormatNodes = [];\n if (selectedNodes.length === 0) {\n selectedNodes.push(formatsNodes[0]);\n }\n for (var i = 0; i < selectedNodes.length; i++) {\n var currentNode = selectedNodes[i];\n var previousCurrentNode = void 0;\n while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {\n previousCurrentNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {\n currentFormatNodes.push(previousCurrentNode);\n }\n }\n for (var i = 0; i < currentFormatNodes.length; i++) {\n if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {\n var currentNode = currentFormatNodes[i];\n var previousNode = currentNode;\n while (currentNode === this.parent.editableElement) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n var tempElem = void 0;\n if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&\n previousNode.parentElement === this.parent.editableElement) {\n tempElem = createElement('div');\n previousNode.parentElement.insertBefore(tempElem, previousNode);\n tempElem.appendChild(previousNode);\n }\n else {\n tempElem = previousNode;\n }\n var preNode = tempElem.previousSibling;\n while (!isNOU(preNode) && preNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(preNode)) {\n tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);\n preNode = tempElem.previousSibling;\n }\n if (!isNOU(preNode) && preNode.nodeName === 'BR') {\n detach(preNode);\n }\n var postNode = tempElem.nextSibling;\n while (!isNOU(postNode) && postNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(postNode)) {\n tempElem.appendChild(postNode);\n postNode = tempElem.nextSibling;\n }\n if (!isNOU(postNode) && postNode.nodeName === 'BR') {\n detach(postNode);\n }\n }\n }\n this.setSelectionBRConfig();\n formatsNodes = this.parent.domNode.blockNodes();\n }\n for (var i = 0; i < formatsNodes.length; i++) {\n var parentNode = void 0;\n var replaceHTML = void 0;\n if (e.subCommand.toLowerCase() === 'blockquote') {\n parentNode = this.getParentNode(formatsNodes[i]);\n replaceHTML = this.parent.domNode.isList(parentNode) ||\n parentNode.tagName === 'TABLE' ? parentNode.outerHTML : parentNode.innerHTML;\n }\n else {\n parentNode = formatsNodes[i];\n replaceHTML = parentNode.innerHTML;\n }\n if ((e.subCommand.toLowerCase() === parentNode.tagName.toLowerCase() &&\n (e.subCommand.toLowerCase() !== 'pre' && e.subCommand.toLowerCase() !== 'blockquote' ||\n (!isNOU(e.exeValue) && e.exeValue.name === 'dropDownSelect'))) ||\n isNOU(parentNode.parentNode) ||\n (parentNode.tagName === 'TABLE' && e.subCommand.toLowerCase() === 'pre')) {\n continue;\n }\n this.cleanFormats(parentNode, e.subCommand);\n var replaceNode = (e.subCommand.toLowerCase() === 'pre' && parentNode.tagName.toLowerCase() === 'pre') ?\n 'p' : e.subCommand;\n var isToggleBlockquoteList = e.subCommand.toLowerCase() === parentNode.tagName.toLowerCase() &&\n e.subCommand.toLowerCase() === 'blockquote' && this.parent.domNode.isList(parentNode.firstElementChild);\n var isToggleBlockquote = e.subCommand.toLowerCase() === parentNode.tagName.toLowerCase()\n && e.subCommand.toLowerCase() === 'blockquote';\n var replaceTag = void 0;\n if (isToggleBlockquoteList) {\n replaceTag = replaceHTML.replace(/>\\s+<');\n }\n else if (isToggleBlockquote) {\n var tagWrap = (e.enterAction == 'BR' || e.enterAction == 'P') ? 'P' : e.enterAction;\n replaceTag = this.parent.domNode.createTagString(tagWrap, parentNode, replaceHTML.replace(/>\\s+<'));\n }\n else {\n replaceTag = this.parent.domNode.createTagString(replaceNode, parentNode, replaceHTML.replace(/>\\s+<'));\n }\n if (parentNode.tagName === 'LI') {\n parentNode.innerHTML = '';\n parentNode.insertAdjacentHTML('beforeend', replaceTag);\n }\n else {\n this.parent.domNode.replaceWith(parentNode, replaceTag);\n }\n }\n this.preFormatMerge();\n var startNode = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endNode = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (!isNOU(startNode) && !isNOU(endNode)) {\n startNode = startNode.lastChild;\n endNode = endNode.lastChild;\n }\n save = this.parent.domNode.saveMarker(save, null);\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n if (isSelectAll) {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startNode, endNode, 0, endNode.textContent.length);\n }\n else {\n save.restore();\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n Formats.prototype.setSelectionBRConfig = function () {\n var startElem = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endElem = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (isNOU(endElem)) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);\n }\n else {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);\n }\n };\n Formats.prototype.preFormatMerge = function () {\n var preNodes = this.parent.editableElement.querySelectorAll('PRE');\n if (!isNOU(preNodes)) {\n for (var i = 0; i < preNodes.length; i++) {\n var previousSib = preNodes[i].previousElementSibling;\n if (!isNOU(previousSib) && previousSib.tagName === 'PRE') {\n previousSib.insertAdjacentHTML('beforeend', '
      ' + preNodes[i].innerHTML);\n detach(preNodes[i]);\n }\n }\n }\n };\n Formats.prototype.cleanFormats = function (element, tagName) {\n var ignoreAttr = ['display', 'font-size', 'margin-top', 'margin-bottom', 'margin-left', 'margin-right', 'font-weight'];\n tagName = tagName.toLowerCase();\n for (var i = 0; i < ignoreAttr.length && (tagName !== 'p' && tagName !== 'blockquote' && tagName !== 'pre'); i++) {\n element.style.removeProperty(ignoreAttr[i]);\n }\n };\n return Formats;\n}());\nexport { Formats };\n","import { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport * as CONSTANT from './../base/constant';\nimport { detach, Browser, isNullOrUndefined as isNOU, createElement, closest } from '@syncfusion/ej2-base';\nimport { InsertMethods } from './insert-methods';\nimport { updateTextNode, nestedListCleanUp } from './../../common/util';\n/**\n * Insert a HTML Node or Text\n *\n * @hidden\n\n */\nvar InsertHtml = /** @class */ (function () {\n function InsertHtml() {\n }\n InsertHtml.Insert = function (docElement, insertNode, editNode, isExternal, enterAction) {\n var node;\n if (typeof insertNode === 'string') {\n var divNode = document.createElement('div');\n divNode.innerHTML = insertNode;\n node = isExternal ? divNode : divNode.firstChild;\n }\n else {\n if (isExternal && !(!isNOU(insertNode) && !isNOU(insertNode.classList) &&\n insertNode.classList.contains('pasteContent'))) {\n var divNode = document.createElement('div');\n divNode.appendChild(insertNode);\n node = divNode;\n }\n else {\n node = insertNode;\n }\n }\n var nodeSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = nodeSelection.getRange(docElement);\n if (range.startContainer === editNode && range.startContainer === range.endContainer && range.startOffset === 0 &&\n range.startOffset === range.endOffset && editNode.textContent.length === 0 &&\n (editNode.children[0].tagName === 'P' || editNode.children[0].tagName === 'DIV' || (editNode.children[0].tagName === 'BR'))) {\n nodeSelection.setSelectionText(docElement, range.startContainer.children[0], range.startContainer.children[0], 0, 0);\n range = nodeSelection.getRange(docElement);\n }\n if (range.startContainer === editNode && range.startContainer === range.endContainer && range.startOffset === 0 &&\n range.startOffset === range.endOffset && editNode.textContent.trim().length > 0) {\n var focusNode = this.findFirstTextNode(range.startContainer);\n if (!isNOU(focusNode)) {\n nodeSelection.setSelectionText(docElement, focusNode, focusNode, 0, 0);\n range = nodeSelection.getRange(docElement);\n }\n }\n if (range.startContainer.nodeName === 'BR' && range.startOffset === 0 && range.startOffset === range.endOffset &&\n range.startContainer === range.endContainer) {\n var currentIndex = Array.prototype.slice.call(range.startContainer.parentElement.childNodes).indexOf(range.startContainer);\n nodeSelection.setSelectionText(docElement, range.startContainer.parentElement, range.startContainer.parentElement, currentIndex, currentIndex);\n range = nodeSelection.getRange(docElement);\n }\n var isCursor = range.startOffset === range.endOffset && range.startOffset === 0 &&\n range.startContainer === range.endContainer;\n var isCollapsed = range.collapsed;\n var nodes = this.getNodeCollection(range, nodeSelection, node);\n var closestParentNode = (node.nodeName.toLowerCase() === 'table') ? this.closestEle(nodes[0].parentNode, editNode) : nodes[0];\n if (closestParentNode && closestParentNode.nodeName === 'LI' && node.nodeName.toLowerCase() === 'table') {\n this.insertTableInList(range, node, closestParentNode, nodes[0], nodeCutter);\n return;\n }\n if (isExternal || (!isNOU(node) && !isNOU(node.classList) &&\n node.classList.contains('pasteContent'))) {\n this.pasteInsertHTML(nodes, node, range, nodeSelection, nodeCutter, docElement, isCollapsed, closestParentNode, editNode, enterAction);\n return;\n }\n if (editNode !== range.startContainer && ((!isCollapsed && !(closestParentNode.nodeType === Node.ELEMENT_NODE &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) !== -1))\n || (node.nodeName.toLowerCase() === 'table' && closestParentNode &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) === -1))) {\n var preNode = nodeCutter.GetSpliceNode(range, closestParentNode);\n var sibNode = preNode.previousSibling;\n var parentNode = preNode.parentNode;\n if (nodes.length === 1 || (node.nodeName.toLowerCase() === 'table' && preNode.childElementCount === 0)) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n }\n else {\n var lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);\n lasNode = isNOU(lasNode) ? preNode : lasNode;\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n }\n if (range.startContainer.parentElement.closest('ol,ul') !== null && range.endContainer.parentElement.closest('ol,ul') !== null) {\n nestedListCleanUp(range);\n }\n else {\n range.extractContents();\n }\n if (insertNode.tagName === 'TABLE') {\n this.removeEmptyElements(editNode);\n }\n for (var index = 0; index < nodes.length; index++) {\n if (nodes[index].nodeType !== 3 && nodes[index].parentNode != null) {\n if (nodes[index].nodeName === 'IMG') {\n continue;\n }\n nodes[index].parentNode.removeChild(nodes[index]);\n }\n }\n if (sibNode) {\n InsertMethods.AppendBefore(node, sibNode, true);\n }\n else {\n var previousNode = null;\n while (parentNode !== editNode && parentNode.firstChild &&\n (parentNode.textContent.trim() === '')) {\n var parentNode1 = parentNode.parentNode;\n previousNode = parentNode;\n parentNode = parentNode1;\n }\n if (previousNode !== null) {\n parentNode = previousNode;\n }\n if (parentNode.firstChild && (parentNode !== editNode ||\n (node.nodeName === 'TABLE' && isCursor && parentNode === range.startContainer &&\n parentNode === range.endContainer))) {\n if (parentNode.textContent.trim() === '' && parentNode !== editNode) {\n InsertMethods.AppendBefore(node, parentNode, false);\n detach(parentNode);\n }\n else {\n InsertMethods.AppendBefore(node, parentNode.firstChild, false);\n }\n }\n else if (isNOU(preNode.previousSibling) && insertNode.tagName === 'TABLE') {\n parentNode.prepend(node);\n }\n else {\n parentNode.appendChild(node);\n }\n }\n if (node.nodeName === 'IMG') {\n this.imageFocus(node, nodeSelection, docElement);\n }\n else if (node.nodeType !== 3) {\n nodeSelection.setSelectionText(docElement, node, node, 0, node.childNodes.length);\n }\n else {\n nodeSelection.setSelectionText(docElement, node, node, 0, node.textContent.length);\n }\n }\n else {\n range.deleteContents();\n if (isCursor && range.startContainer.textContent === '' && range.startContainer.nodeName !== 'BR') {\n range.startContainer.innerHTML = '';\n }\n if (Browser.isIE) {\n var frag = docElement.createDocumentFragment();\n frag.appendChild(node);\n range.insertNode(frag);\n }\n else if (range.startContainer.nodeType === 1 && range.startContainer.nodeName.toLowerCase() === 'hr'\n && range.endContainer.nodeName.toLowerCase() === 'hr') {\n var paraElem = range.startContainer.nextElementSibling;\n if (paraElem) {\n if (paraElem.querySelector('br')) {\n detach(paraElem.querySelector('br'));\n }\n paraElem.appendChild(node);\n }\n }\n else {\n if (range.startContainer.nodeName === 'BR') {\n range.startContainer.parentElement.insertBefore(node, range.startContainer);\n }\n else {\n range.insertNode(node);\n }\n }\n if (node.nodeType !== 3 && node.childNodes.length > 0) {\n nodeSelection.setSelectionText(docElement, node, node, 1, 1);\n }\n else if (node.nodeName === 'IMG') {\n this.imageFocus(node, nodeSelection, docElement);\n }\n else if (node.nodeType !== 3) {\n nodeSelection.setSelectionContents(docElement, node);\n }\n else {\n nodeSelection.setSelectionText(docElement, node, node, node.textContent.length, node.textContent.length);\n }\n }\n };\n InsertHtml.findFirstTextNode = function (node) {\n if (node.nodeType === Node.TEXT_NODE) {\n return node;\n }\n for (var i = 0; i < node.childNodes.length; i++) {\n var textNode = this.findFirstTextNode(node.childNodes[i]);\n if (!isNOU(textNode)) {\n return textNode;\n }\n }\n return null;\n };\n InsertHtml.pasteInsertHTML = function (nodes, node, range, nodeSelection, nodeCutter, docElement, isCollapsed, closestParentNode, editNode, enterAction) {\n var isCursor = range.startOffset === range.endOffset &&\n range.startContainer === range.endContainer;\n if (isCursor && range.startContainer === editNode && editNode.textContent === '') {\n var currentBlockNode = this.getImmediateBlockNode(nodes[nodes.length - 1], editNode);\n nodeSelection.setSelectionText(docElement, currentBlockNode, currentBlockNode, 0, 0);\n range = nodeSelection.getRange(docElement);\n }\n var lasNode;\n var sibNode;\n var isSingleNode;\n var preNode;\n if (editNode !== range.startContainer && ((!isCollapsed && !(closestParentNode.nodeType === Node.ELEMENT_NODE &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) !== -1))\n || (node.nodeName.toLowerCase() === 'table' && closestParentNode &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) === -1))) {\n preNode = nodeCutter.GetSpliceNode(range, closestParentNode);\n if (!isNOU(preNode)) {\n sibNode = isNOU(preNode.previousSibling) ? preNode.parentNode.previousSibling : preNode.previousSibling;\n if (nodes.length === 1) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n isSingleNode = true;\n }\n else {\n lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);\n lasNode = isNOU(lasNode) ? preNode : lasNode;\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n isSingleNode = false;\n }\n }\n }\n var containsBlockNode = false;\n this.removingComments(node);\n var allChildNodes = node.childNodes;\n for (var i = 0; i < allChildNodes.length; i++) {\n if (CONSTANT.BLOCK_TAGS.indexOf(allChildNodes[i].nodeName.toLocaleLowerCase()) >= 0) {\n containsBlockNode = true;\n break;\n }\n }\n var lastSelectionNode;\n var fragment = document.createDocumentFragment();\n if (!containsBlockNode) {\n if (!isCursor) {\n while (node.firstChild) {\n lastSelectionNode = node.firstChild;\n fragment.appendChild(node.firstChild);\n }\n if (isSingleNode) {\n preNode.parentNode.replaceChild(fragment, preNode);\n }\n else {\n var startContainerParent = range.startContainer.parentNode;\n // Get the index of the start container among its siblings\n var startIndex = Array.prototype.indexOf.call(startContainerParent.childNodes, range.startContainer);\n range.deleteContents();\n range.setStart(startContainerParent, startIndex);\n range.setEnd(startContainerParent, startIndex);\n if (!isNOU(lasNode) && lasNode !== editNode) {\n detach(lasNode);\n }\n // eslint-disable-next-line\n !isNOU(sibNode) ? (sibNode.parentNode === editNode ? sibNode.appendChild(fragment) : sibNode.parentNode.appendChild(fragment)) : range.insertNode(fragment);\n }\n }\n else {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n var nearestAnchor = closest(range.startContainer.parentElement, 'a');\n if (range.startContainer.nodeType === 3 && nearestAnchor && closest(nearestAnchor, 'span')) {\n var immediateBlockNode = this.getImmediateBlockNode(range.startContainer, editNode);\n if (immediateBlockNode.querySelectorAll('br').length > 0) {\n detach(immediateBlockNode.querySelector('br'));\n }\n var rangeElement = closest(nearestAnchor, 'span');\n rangeElement.appendChild(tempSpan);\n }\n else {\n range.insertNode(tempSpan);\n }\n while (node.firstChild) {\n lastSelectionNode = node.firstChild;\n fragment.appendChild(node.firstChild);\n }\n tempSpan.parentNode.replaceChild(fragment, tempSpan);\n }\n }\n else {\n var parentElem = range.startContainer;\n while (!isNOU(parentElem) && parentElem.nodeName !== 'PRE' && parentElem !== editNode) {\n parentElem = parentElem.parentElement;\n }\n if (!isNOU(node) && !isNOU(parentElem) && parentElem.nodeName === 'PRE') {\n range.insertNode(node);\n lastSelectionNode = node.lastChild;\n }\n else {\n this.insertTempNode(range, node, nodes, nodeCutter, editNode);\n var isFirstTextNode = true;\n var isPreviousInlineElem = void 0;\n var paraElm = void 0;\n var previousParent = void 0;\n if (!this.contentsDeleted) {\n if (!isCollapsed && range.startContainer.parentElement.textContent.length === 0 && range.startContainer.nodeName === 'BR' && range.startContainer.parentElement.nodeName === 'P') {\n editNode.removeChild(range.startContainer.parentElement);\n }\n range.deleteContents();\n }\n while (node.firstChild) {\n if (node.firstChild.nodeName === '#text' && node.firstChild.textContent.trim() === '') {\n detach(node.firstChild);\n continue;\n }\n if (node.firstChild.nodeName === '#text' && isFirstTextNode ||\n (this.inlineNode.indexOf(node.firstChild.nodeName.toLocaleLowerCase()) >= 0 && isFirstTextNode)) {\n lastSelectionNode = node.firstChild;\n if (isNOU(node.previousElementSibling)) {\n var firstParaElm = enterAction === 'DIV' ? createElement('div') : createElement('p');\n node.parentElement.insertBefore(firstParaElm, node);\n }\n if (node.previousElementSibling.nodeName === 'BR') {\n node.parentElement.insertBefore(node.firstChild, node);\n }\n else {\n node.previousElementSibling.appendChild(node.firstChild);\n }\n }\n else {\n lastSelectionNode = node.firstChild;\n if (node.firstChild.nodeName === '#text' ||\n (this.inlineNode.indexOf(node.firstChild.nodeName.toLocaleLowerCase()) >= 0)) {\n if (!isPreviousInlineElem) {\n paraElm = enterAction === 'DIV' ? createElement('div') : createElement('p');\n paraElm.appendChild(node.firstChild);\n fragment.appendChild(paraElm);\n }\n else {\n previousParent.appendChild(node.firstChild);\n fragment.appendChild(previousParent);\n }\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n else {\n fragment.appendChild(node.firstChild);\n isPreviousInlineElem = false;\n }\n isFirstTextNode = false;\n }\n }\n node.parentNode.replaceChild(fragment, node);\n }\n }\n if (lastSelectionNode.nodeName === '#text') {\n this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);\n }\n else {\n this.cursorPos(lastSelectionNode, node, nodeSelection, docElement, editNode, enterAction);\n }\n };\n InsertHtml.placeCursorEnd = function (lastSelectionNode, node, nodeSelection, docElement, editNode) {\n lastSelectionNode = lastSelectionNode.nodeName === 'BR' ? (isNOU(lastSelectionNode.previousSibling) ? lastSelectionNode.parentNode\n : lastSelectionNode.previousSibling) : lastSelectionNode;\n while (!isNOU(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&\n lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {\n if (!isNOU(lastSelectionNode.lastChild) && (lastSelectionNode.lastChild.nodeName === 'P' &&\n lastSelectionNode.lastChild.innerHTML === '')) {\n var lineBreak = createElement('br');\n lastSelectionNode.lastChild.appendChild(lineBreak);\n }\n lastSelectionNode = lastSelectionNode.lastChild;\n }\n lastSelectionNode = isNOU(lastSelectionNode) ? node : lastSelectionNode;\n if (lastSelectionNode.nodeName === 'IMG') {\n this.imageFocus(lastSelectionNode, nodeSelection, docElement);\n }\n else {\n nodeSelection.setSelectionText(docElement, lastSelectionNode, lastSelectionNode, lastSelectionNode.textContent.length, lastSelectionNode.textContent.length);\n }\n this.removeEmptyElements(editNode);\n };\n InsertHtml.getNodeCollection = function (range, nodeSelection, node) {\n var nodes = [];\n if (range.startOffset === range.endOffset && range.startContainer === range.endContainer &&\n range.startContainer.nodeName !== 'BR' && range.startContainer.childNodes.length > 0 &&\n (range.startContainer.nodeName === 'TD' || (range.startContainer.nodeType !== 3 &&\n node.classList && node.classList.contains('pasteContent')))) {\n nodes.push(range.startContainer.childNodes[range.endOffset]);\n }\n else {\n nodes = nodeSelection.getInsertNodeCollection(range);\n }\n return nodes;\n };\n InsertHtml.insertTempNode = function (range, node, nodes, nodeCutter, editNode) {\n if (range.startContainer === editNode && !isNOU(range.startContainer.childNodes[range.endOffset - 1]) &&\n range.startContainer.childNodes[range.endOffset - 1].nodeName === 'TABLE') {\n if (isNOU(range.startContainer.childNodes[range.endOffset - 1].nextSibling)) {\n range.startContainer.appendChild(node);\n }\n else {\n range.startContainer.insertBefore(node, range.startContainer.childNodes[range.endOffset - 1].nextSibling);\n }\n }\n else if (range.startContainer === editNode && !isNOU(range.startContainer.childNodes[range.endOffset]) &&\n range.startContainer.childNodes[range.endOffset].nodeName === 'TABLE') {\n range.startContainer.insertBefore(node, range.startContainer.childNodes[range.endOffset]);\n }\n else if (range.startContainer === range.endContainer && range.startContainer.nodeType !== 3\n && node.firstChild.nodeName === 'HR') {\n if (range.startContainer.classList.contains('e-content') || range.startContainer.nodeName === 'BODY') {\n range.startContainer.appendChild(node);\n }\n else {\n range.startContainer.parentNode.insertBefore(node, range.startContainer);\n }\n }\n else {\n var blockNode = this.getImmediateBlockNode(nodes[nodes.length - 1], editNode);\n if ((isNOU(blockNode) || isNOU(blockNode.parentElement)) && range.endContainer.nodeType !== 3) {\n blockNode = range.endContainer;\n range.setEnd(blockNode, range.endContainer.textContent.length);\n }\n if (blockNode.nodeName === 'BODY' && range.startContainer === range.endContainer && range.startContainer.nodeType === 1) {\n blockNode = range.startContainer;\n }\n if (blockNode.closest('LI') && blockNode.nodeName !== 'TD' && blockNode.nodeName !== 'TH' && blockNode.nodeName !== 'TR' && node && node.firstElementChild &&\n ((node).firstElementChild.tagName === 'OL' || node.firstElementChild.tagName === 'UL')) {\n var liNode = void 0;\n while (node.firstElementChild.lastElementChild && node.firstElementChild.lastElementChild.tagName === 'LI') {\n liNode = node.firstElementChild.lastElementChild;\n liNode.style.removeProperty('margin-left');\n liNode.style.removeProperty('margin-top');\n liNode.style.removeProperty('margin-bottom');\n node.firstElementChild.insertAdjacentElement('afterend', liNode);\n }\n }\n if (blockNode.nodeName === 'TD' || blockNode.nodeName === 'TH' || blockNode.nodeName === 'TR') {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n range.insertNode(tempSpan);\n tempSpan.parentNode.replaceChild(node, tempSpan);\n }\n else {\n var nodeSelection = new NodeSelection();\n var currentNode = this.getNodeCollection(range, nodeSelection, node)[this.getNodeCollection(range, nodeSelection, node).length - 1];\n var splitedElm = void 0;\n if ((currentNode.nodeName === 'BR' || currentNode.nodeName === 'HR' ||\n (currentNode.nodeName === '#text' && !isNOU(currentNode.parentElement) && currentNode.parentElement.nodeName === 'LI')) &&\n (!isNOU(currentNode.parentElement) && currentNode.parentElement.textContent.trim().length === 0)) {\n splitedElm = currentNode;\n if (currentNode.parentElement.nodeName === 'LI' && !isNOU(currentNode.nextSibling) &&\n currentNode.nextSibling.nodeName === 'BR') {\n detach(currentNode.nextSibling);\n }\n }\n else if ((currentNode.nodeName === '#text' || currentNode.nodeName === 'BR') && !isNOU(currentNode.parentElement) &&\n (currentNode.parentElement.nodeName === 'LI' || currentNode.parentElement.closest('LI') || (blockNode === editNode && currentNode.parentElement === blockNode)) &&\n currentNode.parentElement.textContent.trim().length > 0) {\n splitedElm = currentNode;\n if (currentNode.parentElement.nodeName === 'LI' && !isNOU(currentNode.nextSibling) &&\n currentNode.nextSibling.nodeName === 'BR') {\n detach(currentNode.nextSibling);\n }\n if (!range.collapsed) {\n range.deleteContents();\n var value = range.startContainer;\n if (!isNOU(value) && value.nodeName === 'LI' && !isNOU(value.parentElement) && (value.parentElement.nodeName === 'OL' || value.parentElement.nodeName === 'UL') && value.textContent.trim() === '') {\n value.parentElement.querySelectorAll('li').forEach(function (item) {\n item.remove();\n });\n }\n }\n range.insertNode(node);\n this.contentsDeleted = true;\n return;\n }\n else {\n splitedElm = nodeCutter.GetSpliceNode(range, blockNode);\n }\n splitedElm.parentNode.replaceChild(node, splitedElm);\n }\n }\n };\n InsertHtml.cursorPos = function (lastSelectionNode, node, nodeSelection, docElement, editNode, enterAction) {\n lastSelectionNode.classList.add('lastNode');\n editNode.innerHTML = updateTextNode(editNode.innerHTML, enterAction);\n lastSelectionNode = editNode.querySelector('.lastNode');\n if (!isNOU(lastSelectionNode)) {\n this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);\n lastSelectionNode.classList.remove('lastNode');\n if (lastSelectionNode.classList.length === 0) {\n lastSelectionNode.removeAttribute('class');\n }\n }\n };\n InsertHtml.imageFocus = function (node, nodeSelection, docElement) {\n var focusNode = document.createTextNode(' ');\n if (node.parentNode && node.parentNode.nodeName === 'A') {\n var anchorTag = node.parentNode;\n var parentNode = anchorTag.parentNode;\n parentNode.insertBefore(focusNode, anchorTag.nextSibling);\n parentNode.insertBefore(node, focusNode);\n }\n else {\n node.parentNode.insertBefore(focusNode, node.nextSibling);\n }\n nodeSelection.setSelectionText(docElement, node.nextSibling, node.nextSibling, 0, 0);\n };\n // eslint-disable-next-line\n InsertHtml.getImmediateBlockNode = function (node, editNode) {\n do {\n node = node.parentNode;\n } while (node && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);\n return node;\n };\n InsertHtml.removingComments = function (elm) {\n var innerElement = elm.innerHTML;\n innerElement = innerElement.replace(//g, '');\n elm.innerHTML = innerElement;\n };\n InsertHtml.findDetachEmptyElem = function (element) {\n var removableElement;\n if (!isNOU(element.parentElement)) {\n var hasNbsp = element.parentElement.textContent.length > 0 && element.parentElement.textContent.match(/\\u00a0/g)\n && element.parentElement.textContent.match(/\\u00a0/g).length > 0;\n if (!hasNbsp && element.parentElement.textContent.trim() === '' && element.parentElement.contentEditable !== 'true' &&\n isNOU(element.parentElement.querySelector('img'))) {\n removableElement = this.findDetachEmptyElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n }\n else {\n removableElement = null;\n }\n return removableElement;\n };\n InsertHtml.removeEmptyElements = function (element) {\n var emptyElements = element.querySelectorAll(':empty');\n var nonSvgEmptyElements = Array.from(emptyElements).filter(function (element) {\n // Check if the element is an SVG element or an ancestor of an SVG element\n return !element.closest('svg') && !element.closest('canvas');\n });\n for (var i = 0; i < nonSvgEmptyElements.length; i++) {\n var lineWithDiv = true;\n if (nonSvgEmptyElements[i].tagName === 'DIV') {\n lineWithDiv = nonSvgEmptyElements[i].style.borderBottom === 'none' ||\n nonSvgEmptyElements[i].style.borderBottom === '' ? true : false;\n }\n if (CONSTANT.SELF_CLOSING_TAGS.indexOf(nonSvgEmptyElements[i].tagName.toLowerCase()) < 0 && lineWithDiv) {\n var detachableElement = this.findDetachEmptyElem(nonSvgEmptyElements[i]);\n if (!isNOU(detachableElement)) {\n detach(detachableElement);\n }\n }\n }\n };\n InsertHtml.closestEle = function (element, editNode) {\n var el = element;\n if (closest(el, 'li')) {\n return closest(el, 'li');\n }\n while (el && el.nodeType === 1) {\n if (el.parentNode === editNode ||\n (!isNOU(el.parentNode.tagName) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(el.parentNode.tagName.toLocaleLowerCase()) !== -1)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n };\n InsertHtml.insertTableInList = function (range, insertNode, parentNode, currentNode, nodeCutter) {\n if (range.collapsed) {\n var isStart = range.startOffset === 0;\n var isEnd = range.startContainer.textContent.trimEnd().length === range.startOffset;\n if (isStart || isEnd) {\n if (isStart) {\n InsertMethods.AppendBefore(insertNode, currentNode, false);\n }\n else {\n InsertMethods.AppendBefore(insertNode, currentNode, true);\n }\n }\n else {\n var preNode = nodeCutter.SplitNode(range, parentNode, true);\n var sibNode = preNode.previousSibling;\n sibNode.appendChild(insertNode);\n }\n }\n else {\n range.deleteContents();\n parentNode.appendChild(insertNode);\n }\n insertNode.classList.add('ignore-table');\n };\n /**\n * Insert method\n *\n * @hidden\n\n */\n InsertHtml.inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n InsertHtml.contentsDeleted = false;\n return InsertHtml;\n}());\nexport { InsertHtml };\n","import * as CONSTANT from './../base/constant';\nimport { NodeSelection } from '../../selection/selection';\nimport { NodeCutter } from './nodecutter';\nimport { InsertHtml } from './inserthtml';\nimport { createElement, isNullOrUndefined as isNOU, closest } from '@syncfusion/ej2-base';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar LinkCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the editor manager\n * @hidden\n\n */\n function LinkCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n LinkCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.LINK, this.linkCommand, this);\n };\n LinkCommand.prototype.linkCommand = function (e) {\n switch (e.value.toString().toLocaleLowerCase()) {\n case 'createlink':\n case 'editlink':\n this.createLink(e);\n break;\n case 'openlink':\n this.openLink(e);\n break;\n case 'removelink':\n this.removeLink(e);\n break;\n }\n };\n LinkCommand.prototype.createLink = function (e) {\n var closestAnchor = (!isNOU(e.item.selectParent) && e.item.selectParent.length > 0) &&\n closest(e.item.selectParent[0], 'a');\n closestAnchor = !isNOU(closestAnchor) ? closestAnchor :\n (!isNOU(e.item.selectParent) && e.item.selectParent.length > 0) ? (e.item.selectParent[0]) : null;\n if (!isNOU(closestAnchor) && closestAnchor.tagName === 'A') {\n var anchorEle = closestAnchor;\n var linkText = '';\n if (!isNOU(e.item.url)) {\n anchorEle.setAttribute('href', e.item.url);\n }\n if (!isNOU(e.item.title)) {\n anchorEle.setAttribute('title', e.item.title);\n }\n if (!isNOU(e.item.text) && e.item.text !== '') {\n linkText = anchorEle.innerText;\n anchorEle.firstChild.nodeName === '#text' ? anchorEle.innerText = e.item.text :\n anchorEle.firstChild.innerText = e.item.text;\n }\n if (!isNOU(e.item.target)) {\n anchorEle.setAttribute('target', e.item.target);\n anchorEle.setAttribute('aria-label', e.item.ariaLabel);\n }\n else {\n anchorEle.removeAttribute('target');\n anchorEle.removeAttribute('aria-label');\n }\n if (linkText === e.item.text) {\n e.item.selection.setSelectionText(this.parent.currentDocument, anchorEle, anchorEle, 1, 1);\n e.item.selection.restore();\n }\n else {\n var startIndex = e.item.action === 'Paste' ? anchorEle.childNodes[0].textContent.length : 0;\n var endIndex = anchorEle.firstChild.nodeName === '#text' ? anchorEle.childNodes[0].textContent.length : anchorEle.childNodes.length;\n e.item.selection.setSelectionText(this.parent.currentDocument, anchorEle.childNodes[0], anchorEle.childNodes[0], startIndex, endIndex);\n }\n }\n else {\n var domSelection = new NodeSelection();\n var range = domSelection.getRange(this.parent.currentDocument);\n if (range.endContainer.nodeName === '#text' && range.startContainer.textContent.length === (range.endOffset + 1) &&\n range.endContainer.textContent.charAt(range.endOffset) === ' ' && (!isNOU(range.endContainer.nextSibling) && range.endContainer.nextSibling.nodeName === 'A')) {\n domSelection.setSelectionText(this.parent.currentDocument, range.startContainer, range.endContainer, range.startOffset, range.endOffset + 1);\n range = domSelection.getRange(this.parent.currentDocument);\n }\n var text = isNOU(e.item.text) ? true : e.item.text.replace(/ /g, '').localeCompare(range.toString()\n .replace(/\\n/g, ' ').replace(/ /g, '')) < 0;\n if (e.event && e.event.type === 'keydown' && (e.event.keyCode === 32\n || e.event.keyCode === 13) || e.item.action === 'Paste' || range.collapsed || text) {\n var anchor = this.createAchorNode(e);\n anchor.innerText = e.item.text === '' ? e.item.url : e.item.text;\n var text_1 = anchor.innerText;\n // Replace spaces with non-breaking spaces\n var modifiedText = text_1.replace(/ +/g, function (match) {\n return '\\u00A0'.repeat(match.length);\n });\n anchor.innerText = modifiedText;\n e.item.selection.restore();\n InsertHtml.Insert(this.parent.currentDocument, anchor, this.parent.editableElement);\n if (e.event && e.event.type === 'keydown' && (e.event.keyCode === 32\n || e.event.keyCode === 13)) {\n var startContainer = e.item.selection.range.startContainer;\n startContainer.textContent = this.removeText(startContainer.textContent, e.item.text);\n }\n else {\n var startIndex = e.item.action === 'Paste' ? anchor.childNodes[0].textContent.length : 0;\n e.item.selection.setSelectionText(this.parent.currentDocument, anchor.childNodes[0], anchor.childNodes[0], startIndex, anchor.childNodes[0].textContent.length);\n }\n }\n else {\n this.createLinkNode(e);\n }\n }\n if (e.callBack) {\n e.callBack({\n requestType: 'Links',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n LinkCommand.prototype.createLinkNode = function (e) {\n var domSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = domSelection.getRange(this.parent.currentDocument);\n var nodes = this.getSelectionNodes(domSelection.getNodeCollection(range));\n var save = domSelection.save(range, this.parent.currentDocument);\n var txtArray = [];\n var inlineNodes = [];\n var currentNode;\n var removeNodes = [];\n var anchorNodes = [];\n var finalinlineNodes = [];\n var cloneNode;\n for (var index = 0; index < nodes.length; index++) {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n txtArray[index] = nodes[index];\n }\n for (var i = 0; i < txtArray.length; i++) {\n var check = true;\n currentNode = txtArray[i];\n while (check === true) {\n if (currentNode.parentNode.nodeName === 'A') {\n var anchorEle = currentNode.parentNode;\n currentNode.parentNode.parentNode.insertBefore(anchorEle.firstChild, anchorEle);\n currentNode.parentNode.removeChild(anchorEle);\n }\n if (this.isBlockNode(currentNode.parentNode) || txtArray.length === 0 || i === 0 || i === txtArray.length - 1\n || range.startContainer.nodeType === 3) {\n inlineNodes[i] = currentNode;\n check = false;\n }\n else {\n currentNode = currentNode.parentNode;\n }\n }\n }\n for (var i = 0, j_1 = 0; i < inlineNodes.length; i++) {\n if (i === 0) {\n finalinlineNodes[j_1] = inlineNodes[i];\n }\n if (inlineNodes.length > 1 && i < inlineNodes.length - 1) {\n if ((inlineNodes[i].parentElement === inlineNodes[i + 1].parentElement) &&\n (inlineNodes[i] === inlineNodes[i + 1])) {\n continue;\n }\n else {\n finalinlineNodes[j_1 + 1] = inlineNodes[i + 1];\n j_1++;\n }\n }\n }\n var j = 0;\n anchorNodes[j] = this.createAchorNode(e);\n for (var i = 0; i < finalinlineNodes.length; i++) {\n if (i === 0) {\n cloneNode = finalinlineNodes[i].cloneNode(true);\n anchorNodes[i].appendChild(cloneNode);\n }\n if (i < finalinlineNodes.length - 1) {\n if (finalinlineNodes[i].parentNode === finalinlineNodes[i + 1].parentNode) {\n var cln = finalinlineNodes[i + 1].cloneNode(true);\n anchorNodes[j].appendChild(cln);\n }\n else {\n j = j + 1;\n anchorNodes[j] = this.createAchorNode(e);\n cloneNode = finalinlineNodes[i + 1].cloneNode(true);\n anchorNodes[j].appendChild(cloneNode);\n }\n }\n }\n this.parent.nodeSelection.setRange(document, save.range);\n for (var i = 0, j_2 = 0, k = 0; i <= finalinlineNodes.length; i++) {\n if (i === 0) {\n finalinlineNodes[i].parentNode.insertBefore(anchorNodes[j_2], finalinlineNodes[i].nextSibling);\n if (this.parent.domNode.blockNodes().length === 1 && anchorNodes.length === 1) {\n this.parent.nodeSelection.setSelectionNode(this.parent.currentDocument, anchorNodes[j_2]);\n }\n removeNodes[k] = finalinlineNodes[i];\n k++;\n }\n if (i < finalinlineNodes.length - 1) {\n if (finalinlineNodes[i].parentNode === finalinlineNodes[i + 1].parentNode) {\n removeNodes[k] = finalinlineNodes[i + 1];\n k++;\n }\n else {\n j_2 = j_2 + 1;\n finalinlineNodes[i + 1].parentNode.insertBefore(anchorNodes[j_2], finalinlineNodes[i + 1]);\n removeNodes[k] = finalinlineNodes[i + 1];\n k++;\n }\n }\n }\n for (var i = 0; i < removeNodes.length; i++) {\n if (removeNodes[i].parentNode) {\n removeNodes[i].parentNode.removeChild(removeNodes[i]);\n }\n }\n };\n LinkCommand.prototype.createAchorNode = function (e) {\n var anchorEle = createElement('a', {\n className: 'e-rte-anchor',\n attrs: {\n href: e.item.url,\n title: isNOU(e.item.title) || e.item.title === '' ? e.item.url : e.item.title\n }\n });\n if (!isNOU(e.item.target)) {\n anchorEle.setAttribute('target', e.item.target);\n }\n if (!isNOU(e.item.ariaLabel)) {\n anchorEle.setAttribute('aria-label', e.item.ariaLabel);\n }\n return anchorEle;\n };\n LinkCommand.prototype.getSelectionNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeType !== 3 || nodeCollection[index].textContent.trim() === '') {\n if (nodeCollection[index].nodeName !== 'IMG') {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n }\n return nodeCollection.reverse();\n };\n LinkCommand.prototype.isBlockNode = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && CONSTANT.BLOCK_TAGS.indexOf(element.tagName.toLowerCase()) >= 0));\n };\n LinkCommand.prototype.removeText = function (text, val) {\n var arr = text.split(' ');\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === val) {\n arr.splice(i, 1);\n i--;\n }\n }\n return arr.join(' ') + ' ';\n };\n LinkCommand.prototype.openLink = function (e) {\n document.defaultView.open(e.item.url, e.item.target);\n this.callBack(e);\n };\n LinkCommand.prototype.removeLink = function (e) {\n var blockNodes = this.parent.domNode.blockNodes();\n if (blockNodes.length < 2) {\n this.parent.domNode.setMarker(e.item.selection);\n var closestAnchor = closest(e.item.selectParent[0], 'a');\n var selectParent = closestAnchor ? closestAnchor : e.item.selectParent[0];\n var parent_1 = selectParent.parentNode;\n var child = [];\n for (; selectParent.firstChild; null) {\n child.push(parent_1.insertBefore(selectParent.firstChild, selectParent));\n }\n parent_1.removeChild(selectParent);\n if (child && child.length === 1) {\n e.item.selection.startContainer = e.item.selection.getNodeArray(child[child.length - 1], true);\n e.item.selection.endContainer = e.item.selection.startContainer;\n }\n e.item.selection = this.parent.domNode.saveMarker(e.item.selection);\n }\n else {\n for (var i = 0; i < blockNodes.length; i++) {\n var linkNode = blockNodes[i].querySelectorAll('a');\n for (var j = 0; j < linkNode.length; j++) {\n if (this.parent.currentDocument.getSelection().containsNode(linkNode[j], true)) {\n linkNode[j].outerHTML = linkNode[j].innerHTML;\n }\n }\n }\n }\n e.item.selection.restore();\n this.callBack(e);\n };\n LinkCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return LinkCommand;\n}());\nexport { LinkCommand };\n","import * as CONSTANT from './../base/constant';\nimport { setStyleAttribute, closest } from '@syncfusion/ej2-base';\nimport * as EVENTS from './../../common/constant';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\n/**\n * Formats internal component\n *\n * @hidden\n\n */\nvar Alignments = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @returns {void}\n * @hidden\n\n */\n function Alignments(parent) {\n this.alignments = {\n 'JustifyLeft': 'left',\n 'JustifyCenter': 'center',\n 'JustifyRight': 'right',\n 'JustifyFull': 'justify'\n };\n this.parent = parent;\n this.addEventListener();\n }\n Alignments.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.ALIGNMENT_TYPE, this.applyAlignment, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Alignments.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'justify-center':\n this.applyAlignment({ subCommand: 'JustifyCenter', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-full':\n this.applyAlignment({ subCommand: 'JustifyFull', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-left':\n this.applyAlignment({ subCommand: 'JustifyLeft', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-right':\n this.applyAlignment({ subCommand: 'JustifyRight', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n Alignments.prototype.getTableNode = function (range) {\n var startNode = range.startContainer.nodeType === Node.ELEMENT_NODE\n ? range.startContainer : range.startContainer.parentNode;\n var cellNode = closest(startNode, 'td,th');\n return [cellNode];\n };\n Alignments.prototype.applyAlignment = function (e) {\n var isTableAlign = e.value === 'Table' ? true : false;\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n if (!isTableAlign) {\n this.parent.domNode.setMarker(save);\n var alignmentNodes = this.parent.domNode.blockNodes();\n for (var i = 0; i < alignmentNodes.length; i++) {\n var parentNode = alignmentNodes[i];\n setStyleAttribute(parentNode, { 'text-align': this.alignments[e.subCommand] });\n }\n var imageTags = this.parent.domNode.getImageTagInSelection();\n for (var i = 0; i < imageTags.length; i++) {\n var elementNode = [];\n elementNode.push(imageTags[i]);\n this.parent.imgObj.imageCommand({\n item: {\n selectNode: elementNode\n },\n subCommand: e.subCommand,\n value: e.subCommand,\n callBack: e.callBack,\n selector: e.selector\n });\n }\n this.parent.editableElement.focus();\n save = this.parent.domNode.saveMarker(save);\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n save.restore();\n }\n else {\n setStyleAttribute(this.getTableNode(range)[0], { 'text-align': this.alignments[e.subCommand] });\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: (isTableAlign ? this.getTableNode(range) : this.parent.domNode.blockNodes())\n });\n }\n };\n return Alignments;\n}());\nexport { Alignments };\n","import * as CONSTANT from './../base/constant';\nimport * as EVENTS from './../../common/constant';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\n/**\n * Indents internal component\n *\n * @hidden\n\n */\nvar Indents = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function Indents(parent) {\n this.indentValue = 20;\n this.parent = parent;\n this.addEventListener();\n }\n Indents.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INDENT_TYPE, this.applyIndents, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Indents.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'indents':\n this.applyIndents({ subCommand: 'Indent', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'outdents':\n this.applyIndents({ subCommand: 'Outdent', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n Indents.prototype.applyIndents = function (e) {\n var editEle = this.parent.editableElement;\n var isRtl = editEle.classList.contains('e-rtl');\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.parent.domNode.setMarker(save);\n var indentsNodes = this.parent.domNode.blockNodes();\n var parentNodes = indentsNodes.slice();\n var listsNodes = [];\n for (var i = 0; i < parentNodes.length; i++) {\n if (parentNodes[i].tagName !== 'LI' && 'LI' === parentNodes[i].parentNode.tagName) {\n indentsNodes.splice(indentsNodes.indexOf(parentNodes[i]), 1);\n listsNodes.push(parentNodes[i].parentNode);\n }\n else if (parentNodes[i].tagName === 'LI') {\n indentsNodes.splice(indentsNodes.indexOf(parentNodes[i]), 1);\n listsNodes.push(parentNodes[i]);\n }\n }\n if (listsNodes.length > 0) {\n this.parent.observer.notify(EVENTS.KEY_DOWN_HANDLER, {\n event: {\n preventDefault: function () {\n return;\n },\n stopPropagation: function () {\n return;\n },\n shiftKey: (e.subCommand === 'Indent' ? false : true),\n which: 9,\n action: 'indent'\n },\n ignoreDefault: true\n });\n }\n for (var i = 0; i < indentsNodes.length; i++) {\n var parentNode = indentsNodes[i];\n var marginLeftOrRight = isRtl ? parentNode.style.marginRight : parentNode.style.marginLeft;\n var indentsValue = void 0;\n if (e.subCommand === 'Indent') {\n /* eslint-disable */\n indentsValue = marginLeftOrRight === '' ? this.indentValue + 'px' : parseInt(marginLeftOrRight, null) + this.indentValue + 'px';\n isRtl ? (parentNode.style.marginRight = indentsValue) : (parentNode.style.marginLeft = indentsValue);\n }\n else {\n indentsValue = (marginLeftOrRight === '' || marginLeftOrRight === '0px' || marginLeftOrRight === '0in') ? '' : parseInt(marginLeftOrRight, null) - this.indentValue + 'px';\n isRtl ? (parentNode.style.marginRight = indentsValue) : (parentNode.style.marginLeft = indentsValue);\n /* eslint-enable */\n }\n }\n editEle.focus();\n if (isIDevice()) {\n setEditFrameFocus(editEle, e.selector);\n }\n save = this.parent.domNode.saveMarker(save);\n save.restore();\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n return Indents;\n}());\nexport { Indents };\n","/**\n * Rich Text Editor classes defined here.\n */\n/**\n * @hidden\n\n */\nexport var CLASS_IMAGE_RIGHT = 'e-imgright';\nexport var CLASS_IMAGE_LEFT = 'e-imgleft';\nexport var CLASS_IMAGE_CENTER = 'e-imgcenter';\nexport var CLASS_VIDEO_RIGHT = 'e-video-right';\nexport var CLASS_VIDEO_LEFT = 'e-video-left';\nexport var CLASS_VIDEO_CENTER = 'e-video-center';\nexport var CLASS_IMAGE_BREAK = 'e-imgbreak';\nexport var CLASS_AUDIO_BREAK = 'e-audio-break';\nexport var CLASS_VIDEO_BREAK = 'e-video-break';\nexport var CLASS_CAPTION = 'e-img-caption';\nexport var CLASS_RTE_CAPTION = 'e-rte-img-caption';\nexport var CLASS_CAPTION_INLINE = 'e-caption-inline';\nexport var CLASS_IMAGE_INLINE = 'e-imginline';\nexport var CLASS_AUDIO_INLINE = 'e-audio-inline';\nexport var CLASS_CLICK_ELEM = 'e-clickelem';\nexport var CLASS_VIDEO_CLICK_ELEM = 'e-video-clickelem';\nexport var CLASS_AUDIO = 'e-rte-audio';\nexport var CLASS_VIDEO = 'e-rte-video';\nexport var CLASS_AUDIO_WRAP = 'e-audio-wrap';\nexport var CLASS_VIDEO_WRAP = 'e-video-wrap';\nexport var CLASS_EMBED_VIDEO_WRAP = 'e-embed-video-wrap';\nexport var CLASS_AUDIO_FOCUS = 'e-audio-focus';\nexport var CLASS_VIDEO_FOCUS = 'e-video-focus';\nexport var CLASS_VIDEO_INLINE = 'e-video-inline';\n","import { createElement, isNullOrUndefined as isNOU, detach, closest, addClass, removeClass, select, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport * as classes from './../base/classes';\nimport { InsertHtml } from './inserthtml';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar ImageCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function ImageCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ImageCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.IMAGE, this.imageCommand, this);\n };\n /**\n * imageCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n\n */\n ImageCommand.prototype.imageCommand = function (e) {\n switch (e.value.toString().toLowerCase()) {\n case 'image':\n case 'replace':\n this.createImage(e);\n break;\n case 'insertlink':\n this.insertImageLink(e);\n break;\n case 'openimagelink':\n this.openImageLink(e);\n break;\n case 'editimagelink':\n this.editImageLink(e);\n break;\n case 'removeimagelink':\n this.removeImageLink(e);\n break;\n case 'remove':\n this.removeImage(e);\n break;\n case 'alttext':\n this.insertAltTextImage(e);\n break;\n case 'dimension':\n this.imageDimension(e);\n break;\n case 'caption':\n this.imageCaption(e);\n break;\n case 'justifyleft':\n this.imageJustifyLeft(e);\n break;\n case 'justifycenter':\n this.imageJustifyCenter(e);\n break;\n case 'justifyright':\n this.imageJustifyRight(e);\n break;\n case 'inline':\n this.imageInline(e);\n break;\n case 'break':\n this.imageBreak(e);\n break;\n }\n };\n ImageCommand.prototype.createImage = function (e) {\n var isReplaced = false;\n e.item.url = isNOU(e.item.url) || e.item.url === 'undefined' ? e.item.src : e.item.url;\n if (!isNOU(e.item.selectParent) && e.item.selectParent[0].tagName === 'IMG') {\n var imgEle = e.item.selectParent[0];\n isReplaced = true;\n this.setStyle(imgEle, e, isReplaced);\n }\n else {\n var imgElement = createElement('img');\n this.setStyle(imgElement, e);\n if (!isNOU(e.item.selection)) {\n e.item.selection.restore();\n }\n if (!isNOU(e.selector) && e.selector === 'pasteCleanupModule') {\n e.callBack({ requestType: 'Images',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: [imgElement]\n });\n }\n else {\n InsertHtml.Insert(this.parent.currentDocument, imgElement, this.parent.editableElement);\n }\n }\n if (e.callBack && (isNOU(e.selector) || !isNOU(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var imgElm_1 = (e.value === 'Replace' || isReplaced) ? e.item.selectParent[0] :\n (Browser.isIE ? selectedNode.previousSibling : selectedNode.previousElementSibling);\n var imageInstance_1 = this;\n var onImageLoadEvent_1 = function () {\n e.callBack({\n requestType: (e.value === 'Replace') ? (e.item.subCommand = 'Replace', \"Replace\") : 'Images',\n editorMode: 'HTML',\n event: e.event,\n range: imageInstance_1.parent.nodeSelection.getRange(imageInstance_1.parent.currentDocument),\n elements: [imgElm_1]\n });\n imgElm_1.removeEventListener('load', onImageLoadEvent_1);\n };\n imgElm_1.addEventListener('load', onImageLoadEvent_1);\n }\n };\n ImageCommand.prototype.setStyle = function (imgElement, e, imgReplace) {\n if (!isNOU(e.item.url)) {\n imgElement.setAttribute('src', e.item.url);\n }\n var alignClassName;\n if (imgReplace) {\n var alignClass = {\n 'e-imgcenter': 'e-imgcenter',\n 'e-imgright': 'e-imgright',\n 'e-imgleft': 'e-imgleft'\n };\n var imgClassList = imgElement.classList;\n var classArray = [];\n for (var i = 0; i < imgClassList.length; i++) {\n // eslint-disable-next-line\n if (!isNOU(alignClass[imgClassList[i]])) {\n // eslint-disable-next-line\n alignClassName = alignClass[imgClassList[i]];\n }\n }\n }\n imgElement.setAttribute('class', 'e-rte-image' + (isNOU(e.item.cssClass) ? '' : ' ' + e.item.cssClass)\n + (isNOU(alignClassName) ? '' : ' ' + alignClassName));\n if (!isNOU(e.item.altText)) {\n imgElement.setAttribute('alt', e.item.altText);\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.width)) {\n imgElement.setAttribute('width', this.calculateStyleValue(e.item.width.width));\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.height)) {\n imgElement.setAttribute('height', this.calculateStyleValue(e.item.height.height));\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.minWidth)) {\n imgElement.style.minWidth = this.calculateStyleValue(e.item.width.minWidth);\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.maxWidth)) {\n imgElement.style.maxWidth = this.calculateStyleValue(e.item.width.maxWidth);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.minHeight)) {\n imgElement.style.minHeight = this.calculateStyleValue(e.item.height.minHeight);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.maxHeight)) {\n imgElement.style.maxHeight = this.calculateStyleValue(e.item.height.maxHeight);\n }\n };\n ImageCommand.prototype.calculateStyleValue = function (value) {\n var styleValue;\n if (typeof (value) === 'string') {\n if (value.indexOf('px') || value.indexOf('%') || value.indexOf('auto')) {\n styleValue = value;\n }\n else {\n styleValue = value + 'px';\n }\n }\n else {\n styleValue = value + 'px';\n }\n return styleValue;\n };\n ImageCommand.prototype.insertImageLink = function (e) {\n var anchor = createElement('a', {\n attrs: {\n href: e.item.url\n }\n });\n if (e.item.selectNode[0].parentElement.classList.contains('e-img-wrap')) {\n e.item.selection.restore();\n anchor.setAttribute('contenteditable', 'true');\n }\n anchor.appendChild(e.item.selectNode[0]);\n if (!isNOU(e.item.target)) {\n anchor.setAttribute('target', e.item.target);\n }\n if (!isNOU(e.item.ariaLabel)) {\n anchor.setAttribute('aria-label', e.item.ariaLabel);\n }\n InsertHtml.Insert(this.parent.currentDocument, anchor, this.parent.editableElement);\n this.callBack(e);\n };\n ImageCommand.prototype.openImageLink = function (e) {\n document.defaultView.open(e.item.url, e.item.target);\n this.callBack(e);\n };\n ImageCommand.prototype.removeImageLink = function (e) {\n var selectParent = e.item.selectParent[0];\n if (selectParent.classList.contains('e-img-caption')) {\n var capImgWrap = select('.e-img-wrap', selectParent);\n var textEle = select('.e-img-inner', selectParent);\n var newTextEle = textEle.cloneNode(true);\n detach(select('a', selectParent));\n detach(textEle);\n capImgWrap.appendChild(e.item.insertElement);\n capImgWrap.appendChild(newTextEle);\n }\n else {\n detach(selectParent);\n if (Browser.isIE && e.item.selection) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, e.item.insertElement, this.parent.editableElement);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.editImageLink = function (e) {\n e.item.selectNode[0].parentElement.href = e.item.url;\n if (isNOU(e.item.target)) {\n e.item.selectNode[0].parentElement.removeAttribute('target');\n e.item.selectNode[0].parentElement.removeAttribute('aria-label');\n }\n else {\n e.item.selectNode[0].parentElement.target = e.item.target;\n e.item.selectNode[0].parentElement.ariaLabel = e.item.ariaLabel;\n }\n this.callBack(e);\n };\n ImageCommand.prototype.removeImage = function (e) {\n if (closest(e.item.selectNode[0], 'a')) {\n if (e.item.selectNode[0].parentElement.nodeName === 'A' && !isNOU(e.item.selectNode[0].parentElement.innerText)) {\n if (!isNOU(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION))) {\n detach(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION));\n }\n else {\n detach(e.item.selectNode[0]);\n }\n }\n else {\n detach(closest(e.item.selectNode[0], 'a'));\n }\n }\n else if (!isNOU(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION))) {\n detach(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION));\n }\n else {\n detach(e.item.selectNode[0]);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.insertAltTextImage = function (e) {\n e.item.selectNode[0].setAttribute('alt', e.item.altText);\n this.callBack(e);\n };\n ImageCommand.prototype.imageDimension = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.style.height = '';\n selectNode.style.width = '';\n if (e.item.width !== 'auto') {\n selectNode.style.width = formatUnit(e.item.width);\n }\n else {\n selectNode.removeAttribute('width');\n }\n if (e.item.height !== 'auto') {\n selectNode.style.height = formatUnit(e.item.height);\n }\n else {\n selectNode.removeAttribute('height');\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageCaption = function (e) {\n InsertHtml.Insert(this.parent.currentDocument, e.item.insertElement, this.parent.editableElement);\n this.callBack(e);\n };\n ImageCommand.prototype.imageJustifyLeft = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNOU(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n addClass([selectNode], classes.CLASS_IMAGE_LEFT);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_LEFT);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageJustifyCenter = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNOU(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_CENTER);\n addClass([selectNode], classes.CLASS_IMAGE_CENTER);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_CENTER);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageJustifyRight = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNOU(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode], classes.CLASS_IMAGE_RIGHT);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_RIGHT);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageInline = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n addClass([selectNode], classes.CLASS_IMAGE_INLINE);\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_BREAK);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_CAPTION_INLINE);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageBreak = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], classes.CLASS_IMAGE_BREAK);\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_CAPTION_INLINE);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_BREAK);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return ImageCommand;\n}());\nexport { ImageCommand };\n","import { createElement, isNullOrUndefined as isNOU, detach, addClass, Browser } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport * as classes from './../base/classes';\nimport { InsertHtml } from './inserthtml';\n/**\n * Audio internal component\n *\n * @hidden\n\n */\nvar AudioCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Audio plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function AudioCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n AudioCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.AUDIO, this.audioCommand, this);\n };\n /**\n * audioCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n\n */\n AudioCommand.prototype.audioCommand = function (e) {\n var selectNode;\n var value = e.value.toString().toLowerCase();\n if (value === 'inline' || value === 'break' || value === 'audioremove') {\n selectNode = e.item.selectNode[0];\n }\n switch (value) {\n case 'audio':\n case 'audioreplace':\n this.createAudio(e);\n break;\n case 'inline':\n selectNode.removeAttribute('class');\n selectNode.closest('.' + classes.CLASS_AUDIO_WRAP).style.display = 'inline-block';\n addClass([selectNode], [classes.CLASS_AUDIO, classes.CLASS_AUDIO_INLINE, classes.CLASS_AUDIO_FOCUS]);\n this.callBack(e);\n break;\n case 'break':\n selectNode.removeAttribute('class');\n selectNode.closest('.' + classes.CLASS_AUDIO_WRAP).style.display = 'block';\n addClass([selectNode], [classes.CLASS_AUDIO_BREAK, classes.CLASS_AUDIO, classes.CLASS_AUDIO_FOCUS]);\n this.callBack(e);\n break;\n case 'audioremove':\n detach(selectNode);\n this.callBack(e);\n break;\n }\n };\n AudioCommand.prototype.createAudio = function (e) {\n var _this = this;\n var isReplaced = false;\n var wrapElement;\n if (!isNOU(e.item.selectParent) && e.item.selectParent[0].classList &&\n (e.item.selectParent[0].classList.contains(classes.CLASS_CLICK_ELEM) ||\n e.item.selectParent[0].classList.contains(classes.CLASS_AUDIO_WRAP))) {\n var audioEle = e.item.selectParent[0].querySelector('source');\n this.setStyle(audioEle, e);\n isReplaced = true;\n }\n else {\n wrapElement = createElement('span', { className: classes.CLASS_AUDIO_WRAP, attrs: { contentEditable: 'false', title: ((!isNOU(e.item.title)) ? e.item.title : (!isNOU(e.item.fileName) ? e.item.fileName : '')) } });\n var audElement = createElement('audio', { className: classes.CLASS_AUDIO + ' ' + classes.CLASS_AUDIO_INLINE, attrs: { controls: '' } });\n var sourceElement = createElement('source');\n var clickElement = createElement('span', { className: classes.CLASS_CLICK_ELEM });\n this.setStyle(sourceElement, e);\n audElement.appendChild(sourceElement);\n clickElement.appendChild(audElement);\n wrapElement.appendChild(clickElement);\n if (!isNOU(e.item.selection)) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, wrapElement, this.parent.editableElement);\n if (wrapElement.nextElementSibling === null) {\n var insertElem = createElement('br');\n wrapElement.parentNode.insertBefore(insertElem, wrapElement.nextSibling);\n }\n }\n if (e.callBack && (isNOU(e.selector) || !isNOU(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var audioElm_1 = (e.value === 'AudioReplace' || isReplaced) ? e.item.selectParent[0].querySelector('audio')\n : (Browser.isIE ? selectedNode : selectedNode.querySelector('audio'));\n audioElm_1.addEventListener('loadeddata', function () {\n if (e.value !== 'AudioReplace' || !isReplaced) {\n e.callBack({\n requestType: 'Audios',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [audioElm_1]\n });\n }\n });\n if (isReplaced) {\n audioElm_1.load();\n }\n }\n };\n AudioCommand.prototype.setStyle = function (sourceElement, e) {\n if (!isNOU(e.item.url)) {\n sourceElement.setAttribute('src', e.item.url);\n }\n var fileExtension = e.item.fileName ? e.item.fileName.split('.').pop().toLowerCase() :\n e.item.url ? e.item.url.split('.').pop().toLowerCase() : '';\n if (fileExtension === 'opus') {\n sourceElement.type = 'audio/ogg';\n }\n else if (fileExtension === 'm4a') {\n sourceElement.type = 'audio/mp4';\n }\n else {\n sourceElement.type = e.item.fileName && e.item.fileName.split('.').length > 0 ?\n 'audio/' + e.item.fileName.split('.')[e.item.fileName.split('.').length - 1] :\n e.item.url && e.item.url.split('.').length > 0 ? 'audio/' + e.item.url.split('.')[e.item.url.split('.').length - 1] : '';\n }\n };\n AudioCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return AudioCommand;\n}());\nexport { AudioCommand };\n","import { createElement, isNullOrUndefined as isNOU, detach, addClass, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport * as classes from './../base/classes';\nimport { InsertHtml } from './inserthtml';\n/**\n * Video internal component\n *\n * @hidden\n\n */\nvar VideoCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Video plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function VideoCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n VideoCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.VIDEO, this.videoCommand, this);\n };\n /**\n * videoCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n\n */\n VideoCommand.prototype.videoCommand = function (e) {\n var selectNode;\n var videoWrapNode;\n var videoClickElem;\n var value = e.value.toString().toLowerCase();\n if (value !== 'video' && value !== 'videoreplace') {\n selectNode = e.item.selectNode[0];\n videoWrapNode = selectNode.closest('.' + classes.CLASS_EMBED_VIDEO_WRAP);\n videoClickElem = selectNode.closest('.' + classes.CLASS_VIDEO_CLICK_ELEM);\n }\n switch (value) {\n case 'video':\n case 'videoreplace':\n this.createVideo(e);\n break;\n case 'videodimension':\n this.videoDimension(e);\n break;\n case 'inline':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'inline-block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_INLINE, classes.CLASS_VIDEO_FOCUS]);\n this.callBack(e);\n break;\n case 'break':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [classes.CLASS_VIDEO_BREAK, classes.CLASS_VIDEO, classes.CLASS_VIDEO_FOCUS]);\n this.callBack(e);\n break;\n case 'justifyleft':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = 'left';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_LEFT]);\n this.callBack(e);\n break;\n case 'justifycenter':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_CENTER]);\n this.callBack(e);\n break;\n case 'justifyright':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = 'right';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_RIGHT]);\n this.callBack(e);\n break;\n case 'videoremove':\n detach(selectNode.parentElement);\n this.callBack(e);\n break;\n }\n };\n VideoCommand.prototype.createVideo = function (e) {\n var _this = this;\n var isReplaced = false;\n var wrapElement;\n var vidElement;\n var sourceElement;\n if (e.value === 'VideoReplace' && !isNOU(e.item.selectParent) && (e.item.selectParent[0].tagName === 'VIDEO')) {\n var videoEle = e.item.selectParent[0].querySelector('source');\n this.setStyle(videoEle, e, videoEle);\n isReplaced = true;\n }\n else if (e.value === 'VideoReplace' && !isNOU(e.item.selectParent) &&\n e.item.selectParent[0].classList &&\n e.item.selectParent[0].classList.contains(classes.CLASS_VIDEO_CLICK_ELEM)) {\n e.item.selectParent[0].innerHTML = e.item.fileName;\n this.setStyle(e.item.selectParent[0].firstElementChild, e, e.item.selectParent[0].firstElementChild);\n }\n else {\n if (!e.item.isEmbedUrl) {\n wrapElement = createElement('span', { className: classes.CLASS_VIDEO_WRAP, attrs: { contentEditable: 'false', title: ((!isNOU(e.item.title)) ? e.item.title : (!isNOU(e.item.fileName) ? e.item.fileName : '')) } });\n vidElement = createElement('video', { className: classes.CLASS_VIDEO + ' ' + classes.CLASS_VIDEO_INLINE, attrs: { controls: '' } });\n sourceElement = createElement('source');\n this.setStyle(sourceElement, e, vidElement);\n vidElement.appendChild(sourceElement);\n wrapElement.appendChild(vidElement);\n }\n else {\n wrapElement = createElement('span', { className: classes.CLASS_EMBED_VIDEO_WRAP, attrs: { contentEditable: 'false' } });\n var clickElement = createElement('span', { className: classes.CLASS_VIDEO_CLICK_ELEM });\n var temp = createElement('template');\n temp.innerHTML = e.item.fileName;\n clickElement.appendChild(temp.content);\n vidElement = sourceElement = clickElement.firstElementChild;\n this.setStyle(sourceElement, e, vidElement);\n wrapElement.appendChild(clickElement);\n }\n if (!isNOU(e.item.selection)) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, wrapElement, this.parent.editableElement);\n if (wrapElement.nextElementSibling === null) {\n var insertElem = createElement('br');\n wrapElement.parentNode.insertBefore(insertElem, wrapElement.nextSibling);\n }\n }\n if (e.callBack && (isNOU(e.selector) || !isNOU(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var videoElm_1 = (e.value === 'VideoReplace' || isReplaced) ? !e.item.isEmbedUrl ? e.item.selectParent[0] : e.item.selectParent[0].querySelector('iframe')\n : (Browser.isIE ? selectedNode : !e.item.isEmbedUrl ? selectedNode.lastElementChild : selectedNode.querySelector('iframe'));\n videoElm_1.addEventListener(videoElm_1.tagName !== 'IFRAME' ? 'loadeddata' : 'load', function () {\n if (e.value !== 'VideoReplace' || !isReplaced) {\n if (e.item.isEmbedUrl && videoElm_1) {\n videoElm_1.classList.add('e-rte-embed-url');\n }\n e.callBack({\n requestType: 'Videos',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [videoElm_1]\n });\n }\n });\n if (isReplaced) {\n videoElm_1.load();\n }\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n vidElement.addEventListener('play', function () { _this.editAreaVideoClick(e); });\n vidElement.addEventListener('pause', function () { _this.editAreaVideoClick(e); });\n }\n }\n };\n VideoCommand.prototype.editAreaVideoClick = function (e) {\n e.callBack({\n requestType: 'VideosPlayPause',\n editorMode: 'HTML',\n event: e.event\n });\n };\n VideoCommand.prototype.setStyle = function (sourceElement, e, videoEle) {\n if (e.item.url !== '' && !isNOU(e.item.url)) {\n sourceElement.setAttribute('src', e.item.url);\n }\n if (!e.item.isEmbedUrl) {\n sourceElement.type = e.item.fileName && e.item.fileName.split('.').length > 0 ?\n 'video/' + e.item.fileName.split('.')[e.item.fileName.split('.').length - 1] :\n e.item.url && e.item.url.split('.').length > 0 ? 'video/' + e.item.url.split('.')[e.item.url.split('.').length - 1] : '';\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.width)) {\n videoEle.setAttribute('width', formatUnit(e.item.width.width));\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.height)) {\n videoEle.setAttribute('height', formatUnit(e.item.height.height));\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.minWidth)) {\n videoEle.style.minWidth = formatUnit(e.item.width.minWidth);\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.maxWidth)) {\n videoEle.style.maxWidth = formatUnit(e.item.width.maxWidth);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.minHeight)) {\n videoEle.style.minHeight = formatUnit(e.item.height.minHeight);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.maxHeight)) {\n videoEle.style.maxHeight = formatUnit(e.item.height.maxHeight);\n }\n };\n VideoCommand.prototype.videoDimension = function (e) {\n var selectNode = !(e.item.selectNode[0].classList.contains(classes.CLASS_VIDEO_CLICK_ELEM)) ? e.item.selectNode[0] :\n e.item.selectNode[0].querySelector('iframe');\n selectNode.style.height = '';\n selectNode.style.width = '';\n if (e.item.width !== 'auto') {\n selectNode.style.width = formatUnit(e.item.width);\n }\n else {\n selectNode.removeAttribute('width');\n }\n if (e.item.height !== 'auto') {\n selectNode.style.height = formatUnit(e.item.height);\n }\n else {\n selectNode.removeAttribute('height');\n }\n this.callBack(e);\n };\n VideoCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return VideoCommand;\n}());\nexport { VideoCommand };\n","import { createElement, closest, detach, Browser, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport { InsertHtml } from './inserthtml';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar TableCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function TableCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n TableCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.TABLE, this.createTable, this);\n this.parent.observer.on(CONSTANT.INSERT_ROW, this.insertRow, this);\n this.parent.observer.on(CONSTANT.INSERT_COLUMN, this.insertColumn, this);\n this.parent.observer.on(CONSTANT.DELETEROW, this.deleteRow, this);\n this.parent.observer.on(CONSTANT.DELETECOLUMN, this.deleteColumn, this);\n this.parent.observer.on(CONSTANT.REMOVETABLE, this.removeTable, this);\n this.parent.observer.on(CONSTANT.TABLEHEADER, this.tableHeader, this);\n this.parent.observer.on(CONSTANT.TABLE_VERTICAL_ALIGN, this.tableVerticalAlign, this);\n this.parent.observer.on(CONSTANT.TABLE_MERGE, this.cellMerge, this);\n this.parent.observer.on(CONSTANT.TABLE_HORIZONTAL_SPLIT, this.HorizontalSplit, this);\n this.parent.observer.on(CONSTANT.TABLE_VERTICAL_SPLIT, this.VerticalSplit, this);\n this.parent.observer.on(CONSTANT.TABLE_MOVE, this.tableMove, this);\n };\n TableCommand.prototype.createTable = function (e) {\n var table = createElement('table', { className: 'e-rte-table' });\n var tblBody = createElement('tbody');\n if (!isNOU(e.item.width.width)) {\n table.style.width = this.calculateStyleValue(e.item.width.width);\n }\n if (!isNOU(e.item.width.minWidth)) {\n table.style.minWidth = this.calculateStyleValue(e.item.width.minWidth);\n }\n if (!isNOU(e.item.width.maxWidth)) {\n table.style.maxWidth = this.calculateStyleValue(e.item.width.maxWidth);\n }\n var tdWid = parseInt(e.item.width.width, 10) > 100 ?\n 100 / e.item.columns : parseInt(e.item.width.width, 10) / e.item.columns;\n for (var i = 0; i < e.item.rows; i++) {\n var row = createElement('tr');\n for (var j = 0; j < e.item.columns; j++) {\n var cell = createElement('td');\n cell.appendChild(createElement('br'));\n cell.style.width = tdWid + '%';\n row.appendChild(cell);\n }\n tblBody.appendChild(row);\n }\n table.appendChild(tblBody);\n e.item.selection.restore();\n InsertHtml.Insert(this.parent.currentDocument, table, this.parent.editableElement);\n e.item.selection.setSelectionText(this.parent.currentDocument, table.querySelector('td'), table.querySelector('td'), 0, 0);\n if (table.nextElementSibling === null && !table.classList.contains('ignore-table')) {\n var insertElem = void 0;\n if (e.enterAction === 'DIV') {\n insertElem = createElement('div');\n insertElem.appendChild(createElement('br'));\n }\n else if (e.enterAction === 'BR') {\n insertElem = createElement('br');\n }\n else {\n insertElem = createElement('p');\n insertElem.appendChild(createElement('br'));\n }\n this.insertAfter(insertElem, table);\n }\n if (table.classList.contains('ignore-table')) {\n table.classList.remove('ignore-table');\n }\n table.querySelector('td').classList.add('e-cell-select');\n if (e.callBack) {\n e.callBack({\n requestType: 'Table',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: [table]\n });\n }\n return table;\n };\n TableCommand.prototype.calculateStyleValue = function (value) {\n var styleValue;\n if (typeof (value) === 'string') {\n if (value.indexOf('px') >= 0 || value.indexOf('%') >= 0 || value.indexOf('auto') >= 0) {\n styleValue = value;\n }\n else {\n styleValue = value + 'px';\n }\n }\n else {\n styleValue = value + 'px';\n }\n return styleValue;\n };\n TableCommand.prototype.insertAfter = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n TableCommand.prototype.getSelectedCellMinMaxIndex = function (e) {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n var a = 0;\n var minI = e.length;\n var maxI = 0;\n var minJ = e[0].length;\n var maxJ = 0;\n //eslint-disable-next-line\n for (var i = 0; a < selectedCells.length; a++) {\n var selectedCellIndex = this.getCorrespondingIndex(selectedCells[a], e);\n var minMaxIndex = this.FindIndex(selectedCellIndex[0], selectedCellIndex[1], e);\n //eslint-disable-next-line\n minI = Math.min(selectedCellIndex[0], minI),\n maxI = Math.max(minMaxIndex[0], maxI),\n minJ = Math.min(selectedCellIndex[1], minJ),\n maxJ = Math.max(minMaxIndex[1], maxJ);\n }\n return {\n startRow: minI,\n endRow: maxI,\n startColumn: minJ,\n endColumn: maxJ\n };\n };\n TableCommand.prototype.insertRow = function (e) {\n var isBelow = e.item.subCommand === 'InsertRowBefore' ? false : true;\n var selectedCell = e.item.selection.range.startContainer;\n if (!(selectedCell.nodeName === 'TH' || selectedCell.nodeName === 'TD')) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n if (selectedCell.nodeName.toLowerCase() === 'th' && e.item.subCommand === 'InsertRowBefore') {\n return;\n }\n this.curTable = closest(this.parent.nodeSelection.range.startContainer.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length === 0) {\n var lastRow = this.curTable.rows[this.curTable.rows.length - 1];\n var cloneRow = lastRow.cloneNode(true);\n cloneRow.removeAttribute('rowspan');\n this.insertAfter(cloneRow, lastRow);\n }\n else {\n var allCells = this.getCorrespondingColumns();\n var minMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var minVal = isBelow ? minMaxIndex.endRow : minMaxIndex.startRow;\n var newRow = createElement('tr');\n var isHeaderSelect = this.curTable.querySelectorAll('th.e-cell-select').length > 0;\n for (var i = 0; i < allCells[minVal].length; i++) {\n // eslint-disable-next-line max-len\n if (isBelow && minVal < allCells.length - 1 && allCells[minVal][i] === allCells[minVal + 1][i] ||\n !isBelow && 0 < minVal && allCells[minVal][i] === allCells[minVal - 1][i]) {\n if (0 === i || 0 < i && allCells[minVal][i] !== allCells[minVal][i - 1]) {\n allCells[minVal][i].setAttribute('rowspan', (parseInt(allCells[minVal][i].getAttribute('rowspan'), 10) + 1).toString());\n }\n }\n else {\n var tdElement = createElement('td');\n tdElement.appendChild(createElement('br'));\n newRow.appendChild(tdElement);\n tdElement.setAttribute('style', allCells[(isHeaderSelect && isBelow) ? allCells[(minVal + 1)] ? (minVal + 1) : minVal : minVal][i].getAttribute('style'));\n }\n }\n // eslint-disable-next-line\n var selectedRow = void 0;\n if (isHeaderSelect && isBelow) {\n selectedRow = this.curTable.querySelector('tbody').childNodes[0];\n }\n else {\n selectedRow = this.curTable.rows[minVal];\n }\n // eslint-disable-next-line\n (e.item.subCommand === 'InsertRowBefore') ? selectedRow.parentElement.insertBefore(newRow, selectedRow) :\n (isHeaderSelect ? selectedRow.parentElement.insertBefore(newRow, selectedRow) :\n this.insertAfter(newRow, selectedRow));\n }\n e.item.selection.setSelectionText(this.parent.currentDocument, e.item.selection.range.startContainer, e.item.selection.range.startContainer, 0, 0);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.insertColumn = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (!(selectedCell.nodeName === 'TH' || selectedCell.nodeName === 'TD')) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var curRow = closest(selectedCell, 'tr');\n var curCell;\n var allRows = closest((curRow), 'table').rows;\n var colIndex = Array.prototype.slice.call(curRow.querySelectorAll(':scope > td, :scope > th')).indexOf(selectedCell);\n var previousWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > th').length);\n var currentWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > th').length + 1);\n var currentTabElm = closest(curRow, 'table');\n var thTdElm = closest(curRow, 'table').querySelectorAll('th,td');\n for (var i = 0; i < thTdElm.length; i++) {\n thTdElm[i].dataset.oldWidth = (thTdElm[i].offsetWidth / currentTabElm.offsetWidth * 100) + '%';\n }\n for (var i = 0; i < allRows.length; i++) {\n curCell = allRows[i].querySelectorAll(':scope > td, :scope > th')[colIndex];\n var colTemplate = curCell.cloneNode(true);\n colTemplate.innerHTML = '';\n colTemplate.appendChild(createElement('br'));\n colTemplate.removeAttribute('class');\n colTemplate.removeAttribute('colspan');\n colTemplate.removeAttribute('rowspan');\n // eslint-disable-next-line\n (e.item.subCommand === 'InsertColumnLeft') ? curCell.parentElement.insertBefore(colTemplate, curCell) :\n this.insertAfter(colTemplate, curCell);\n colTemplate.style.width = currentWidth.toFixed(4) + '%';\n delete colTemplate.dataset.oldWidth;\n }\n for (var i = 0; i < thTdElm.length; i++) {\n thTdElm[i].style.width = (Number(thTdElm[i].dataset.oldWidth.split('%')[0]) * currentWidth / previousWidth).toFixed(4) + '%';\n delete thTdElm[i].dataset.oldWidth;\n }\n e.item.selection.setSelectionText(this.parent.currentDocument, selectedCell, selectedCell, 0, 0);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.deleteColumn = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (selectedCell.nodeType === 3) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var tBodyHeadEle = closest(selectedCell, selectedCell.tagName === 'TH' ? 'thead' : 'tbody');\n var rowIndex = tBodyHeadEle && Array.prototype.indexOf.call(tBodyHeadEle.childNodes, selectedCell.parentNode);\n this.curTable = closest(selectedCell, 'table');\n var curRow = closest(selectedCell, 'tr');\n if (curRow.querySelectorAll('th,td').length === 1) {\n e.item.selection.restore();\n detach(closest(selectedCell.parentElement, 'table'));\n }\n else {\n var deleteIndex = void 0;\n var allCells = this.getCorrespondingColumns();\n //eslint-disable-next-line\n var selectedMinMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var minCol = selectedMinMaxIndex.startColumn;\n var maxCol = selectedMinMaxIndex.endColumn;\n for (var i = 0; i < allCells.length; i++) {\n var currentRow = allCells[i];\n for (var j = 0; j < currentRow.length; j++) {\n var currentCell = currentRow[j];\n //eslint-disable-next-line\n var currentCellIndex = this.getCorrespondingIndex(currentCell, allCells);\n var colSpanVal = parseInt(currentCell.getAttribute('colspan'), 10) || 1;\n if (currentCellIndex[1] + (colSpanVal - 1) >= minCol && currentCellIndex[1] <= maxCol) {\n if (colSpanVal > 1) {\n currentCell.setAttribute('colspan', (colSpanVal - 1).toString());\n }\n else {\n detach(currentCell);\n deleteIndex = j;\n if (Browser.isIE) {\n e.item.selection.setSelectionText(this.parent.currentDocument, this.curTable.querySelector('td'), this.curTable.querySelector('td'), 0, 0);\n this.curTable.querySelector('td, th').classList.add('e-cell-select');\n }\n }\n }\n }\n }\n if (deleteIndex > -1) {\n var rowHeadEle = tBodyHeadEle.children[rowIndex];\n var nextFocusCell = rowHeadEle &&\n rowHeadEle.children[(deleteIndex <= rowHeadEle.children.length - 1 ? deleteIndex : deleteIndex - 1)];\n if (nextFocusCell) {\n e.item.selection.setSelectionText(this.parent.currentDocument, nextFocusCell, nextFocusCell, 0, 0);\n nextFocusCell.classList.add('e-cell-select');\n }\n }\n }\n if (e.callBack) {\n var sContainer = this.parent.nodeSelection.getRange(this.parent.currentDocument).startContainer;\n if (sContainer.nodeName !== 'TD') {\n var startChildLength = this.parent.nodeSelection.getRange(this.parent.currentDocument).startOffset;\n var focusNode = sContainer.children[startChildLength];\n if (focusNode) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, focusNode, 0);\n }\n }\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.deleteRow = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (selectedCell.nodeType === 3) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var colIndex = Array.prototype.indexOf.call(selectedCell.parentNode.childNodes, selectedCell);\n this.curTable = closest(selectedCell, 'table');\n var currentRow;\n var allCells = this.getCorrespondingColumns();\n var minMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var maxI;\n var j;\n if (this.curTable.rows.length === 1) {\n e.item.selection.restore();\n detach(closest(selectedCell.parentElement, 'table'));\n }\n else {\n for (maxI = minMaxIndex.endRow; maxI >= minMaxIndex.startRow; maxI--) {\n currentRow = this.curTable.rows[maxI];\n for (j = 0; j < allCells[maxI].length; j++) {\n if (j === 0 || allCells[maxI][j] !== allCells[maxI][j - 1]) {\n if (1 < parseInt(allCells[maxI][j].getAttribute('rowspan'), 10)) {\n var rowSpanVal = parseInt(allCells[maxI][j].getAttribute('rowspan'), 10) - 1;\n /* eslint-disable */\n if (1 === rowSpanVal) {\n allCells[maxI][j].removeAttribute('rowspan');\n var cell = this.getMergedRow(this.getCorrespondingColumns())[j];\n if (cell) {\n var cloneNode = cell.cloneNode(true);\n cloneNode.innerHTML = '
      ';\n if (cell.parentElement) {\n cell.parentElement.insertBefore(cloneNode, cell);\n }\n }\n }\n else {\n allCells[maxI][j].setAttribute('rowspan', rowSpanVal.toString());\n }\n /* eslint-enable */\n }\n }\n // eslint-disable-next-line max-len\n if (maxI < allCells.length - 1 && allCells[maxI][j] === allCells[maxI + 1][j] && (0 === maxI ||\n allCells[maxI][j] !== allCells[maxI - 1][j])) {\n var element = allCells[maxI][j];\n var index = void 0;\n // eslint-disable-next-line max-len\n for (index = j; 0 < index && allCells[maxI][index] === allCells[maxI][index - 1]; index--) {\n if (index === 0) {\n this.curTable.rows[maxI + 1].prepend(element);\n }\n else {\n allCells[maxI + 1][index - 1].insertAdjacentElement('afterend', element);\n }\n }\n }\n }\n var deleteIndex = currentRow.rowIndex;\n this.curTable.deleteRow(deleteIndex);\n var focusTrEle = !isNOU(this.curTable.rows[deleteIndex]) ? this.curTable.querySelectorAll('tbody tr')[deleteIndex]\n : this.curTable.querySelectorAll('tbody tr')[deleteIndex - 1];\n var nextFocusCell = focusTrEle && focusTrEle.querySelectorAll('td')[colIndex];\n if (nextFocusCell) {\n e.item.selection.setSelectionText(this.parent.currentDocument, nextFocusCell, nextFocusCell, 0, 0);\n nextFocusCell.classList.add('e-cell-select');\n }\n else {\n e.item.selection.setSelectionText(this.parent.currentDocument, this.curTable.querySelector('td'), this.curTable.querySelector('td'), 0, 0);\n this.curTable.querySelector('td, th').classList.add('e-cell-select');\n }\n }\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.getMergedRow = function (cells) {\n var mergedRow;\n for (var i = 0; i < cells.length; i++) {\n if (cells[i].length !== this.curTable.rows[0].childNodes.length) {\n mergedRow = cells[i];\n }\n }\n return mergedRow;\n };\n TableCommand.prototype.removeTable = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n selectedCell = (selectedCell.nodeType === 3) ? selectedCell.parentNode : selectedCell;\n var selectedTable = closest(selectedCell.parentElement, 'table');\n if (selectedTable) {\n e.item.selection.restore();\n detach(selectedTable);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.tableHeader = function (e) {\n var headerExit = false;\n var selectedCell = e.item.selection.range.startContainer;\n selectedCell = (selectedCell.nodeType === 3) ? selectedCell.parentNode : selectedCell;\n var table = closest(selectedCell.parentElement, 'table');\n [].slice.call(table.childNodes).forEach(function (el) {\n if (el.nodeName === 'THEAD') {\n headerExit = true;\n }\n });\n if (table && !headerExit) {\n var cellCount = table.querySelector('tr').childElementCount;\n var colSpanCount = 0;\n for (var i = 0; i < cellCount; i++) {\n colSpanCount = colSpanCount + (parseInt(table.querySelector('tr').children[i].getAttribute('colspan'), 10) || 1);\n }\n var header = table.createTHead();\n var row = header.insertRow(0);\n for (var j = 0; j < colSpanCount; j++) {\n var th = createElement('th');\n th.appendChild(createElement('br'));\n row.appendChild(th);\n }\n }\n else {\n table.deleteTHead();\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.tableVerticalAlign = function (e) {\n var value = '';\n switch (e.item.subCommand) {\n case 'AlignTop':\n value = 'top';\n break;\n case 'AlignMiddle':\n value = 'middle';\n break;\n case 'AlignBottom':\n value = 'bottom';\n break;\n }\n e.item.tableCell.style.verticalAlign = value;\n if (value && value !== '' && e.item.tableCell.getAttribute('valign')) {\n e.item.tableCell.removeAttribute('valign');\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.cellMerge = function (e) {\n if (isNOU(this.curTable)) {\n this.curTable = closest(this.parent.nodeSelection.range.startContainer.parentElement, 'table');\n }\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n if (selectedCells.length < 2) {\n return;\n }\n this.mergeCellContent();\n var minMaxIndexes = this.getSelectedMinMaxIndexes(this.getCorrespondingColumns());\n var firstCell = selectedCells[0];\n var rowSelectedCells = firstCell.parentElement.querySelectorAll('.e-cell-select');\n if (minMaxIndexes.startColumn < minMaxIndexes.endColumn) {\n firstCell.setAttribute('colspan', (minMaxIndexes.endColumn - minMaxIndexes.startColumn + 1).toString());\n }\n if (minMaxIndexes.startRow < minMaxIndexes.endRow) {\n firstCell.setAttribute('rowspan', (minMaxIndexes.endRow - minMaxIndexes.startRow + 1).toString());\n }\n var totalWidth = 0;\n var unit;\n for (var j = rowSelectedCells.length - 1; j >= 0; j--) {\n if (!isNOU(rowSelectedCells[j].style.width)\n && rowSelectedCells[j].style.width !== '') {\n if (!unit) {\n var match = rowSelectedCells[j].style.width.match(/^([\\d.]+)([a-z%]+)$/i);\n unit = match ? match[2] : '%';\n }\n totalWidth = totalWidth + parseFloat(rowSelectedCells[j].style.width);\n }\n else {\n totalWidth = totalWidth + ((rowSelectedCells[j].offsetWidth / this.curTable.offsetWidth) * 100);\n unit = '%';\n }\n }\n firstCell.style.width = totalWidth + unit;\n for (var i = 1; i <= selectedCells.length - 1; i++) {\n detach(selectedCells[i]);\n }\n for (var i = 0; i < this.curTable.rows.length; i++) {\n if (this.curTable.rows[i].innerHTML === '') {\n detach(this.curTable.rows[i]);\n }\n }\n this.updateRowSpanStyle(minMaxIndexes.startRow, minMaxIndexes.endRow, this.getCorrespondingColumns());\n this.updateColSpanStyle(minMaxIndexes.startColumn, minMaxIndexes.endColumn, this.getCorrespondingColumns());\n e.item.selection.setSelectionText(this.parent.currentDocument, e.item.selection.range.startContainer, e.item.selection.range.startContainer, 0, 0);\n if (this.parent.nodeSelection && firstCell) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, \n // eslint-disable-next-line\n firstCell, 0);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.updateColSpanStyle = function (min, max, elements) {\n var colValue;\n var colIndex;\n var colMin;\n var index = 0;\n var attrValue;\n var count = 0;\n var eleArray = elements;\n //eslint-disable-next-line\n if (min < (max = Math.min(max, eleArray[0].length - 1))) {\n for (colIndex = min; colIndex <= max; colIndex++) {\n // eslint-disable-next-line\n if (!(min < colIndex && eleArray[0][colIndex] === eleArray[0][colIndex - 1]) && 1 < (index =\n Math.min(parseInt(eleArray[0][colIndex].getAttribute('colspan'), 10) || 1, max - min + 1)) &&\n eleArray[0][colIndex] === eleArray[0][colIndex + 1]) {\n for (count = index - 1, colValue = 1; colValue < eleArray.length; colValue++) {\n if (eleArray[colValue][colIndex] !== eleArray[colValue - 1][colIndex]) {\n /* eslint-disable */\n for (colMin = colIndex; colMin < colIndex + index; colMin++) {\n if (1 < (attrValue = parseInt(eleArray[colValue][colMin].getAttribute('colspan'), 10) || 1) &&\n eleArray[colValue][colMin] === eleArray[colValue][colMin + 1]) {\n colMin += count = Math.min(count, attrValue - 1);\n }\n else if (!(count = Math.max(0, count - 1))) {\n break;\n }\n /* eslint-enable */\n }\n }\n if (!count) {\n break;\n }\n }\n }\n }\n if (count) {\n this.updateCellAttribute(eleArray, count, 'colspan', 0, eleArray.length - 1, min, max);\n }\n }\n };\n TableCommand.prototype.updateRowSpanStyle = function (min, max, ele) {\n var rowValue;\n var colIndex;\n var rowMin;\n var index = 0;\n var attrValue;\n var count = 0;\n var eleArray = ele;\n // eslint-disable-next-line\n if (min < (max = Math.min(max, eleArray.length - 1))) {\n for (rowValue = min; rowValue <= max; rowValue++) {\n // eslint-disable-next-line\n if (!(min < rowValue && eleArray[rowValue][0] === eleArray[rowValue - 1][0])\n // eslint-disable-next-line no-cond-assign\n && eleArray[rowValue][0] && 1 < (index = Math.min(parseInt(eleArray[rowValue][0].getAttribute('rowspan'), 10) ||\n 1, max - min + 1)) && eleArray[rowValue][0] === eleArray[rowValue + 1][0]) {\n for (count = index - 1, colIndex = 1; colIndex < eleArray[0].length; colIndex++) {\n if (eleArray[rowValue][colIndex] !== eleArray[rowValue][colIndex - 1]) {\n for (rowMin = rowValue; rowMin < rowValue + index; rowMin++) {\n // eslint-disable-next-line\n if (1 < (attrValue = parseInt(eleArray[rowMin][colIndex].getAttribute('rowspan'), 10) || 1) && eleArray[rowMin][colIndex] === eleArray[rowMin + 1][colIndex]) {\n rowMin += count = Math.min(count, attrValue - 1);\n }\n // eslint-disable-next-line\n else if (!(count = Math.max(0, count - 1))) {\n break;\n }\n }\n if (!count) {\n break;\n }\n }\n }\n }\n }\n if (count) {\n this.updateCellAttribute(eleArray, count, 'rowspan', min, max, 0, eleArray[0].length - 1);\n }\n }\n };\n TableCommand.prototype.updateCellAttribute = function (elements, index, attr, min, max, firstIndex, length) {\n var rowIndex;\n var colIndex;\n var spanCount;\n for (rowIndex = min; rowIndex <= max; rowIndex++) {\n for (colIndex = firstIndex; colIndex <= length; colIndex++) {\n // eslint-disable-next-line\n min < rowIndex && elements[rowIndex][colIndex] === elements[rowIndex - 1][colIndex] ||\n firstIndex < colIndex && elements[rowIndex][colIndex] === elements[rowIndex][colIndex - 1] ||\n 1 < (spanCount = parseInt(elements[rowIndex][colIndex].getAttribute(attr), 10) || 1) &&\n // eslint-disable-next-line max-len\n (1 < spanCount - index ? elements[rowIndex][colIndex].setAttribute(attr, (spanCount - index).toString()) :\n elements[rowIndex][colIndex].removeAttribute(attr));\n }\n }\n };\n TableCommand.prototype.mergeCellContent = function () {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n var innerHtml = selectedCells[0].innerHTML === '
      ' ? '' : selectedCells[0].innerHTML;\n for (var i = 1; i < selectedCells.length; i++) {\n if ('
      ' !== selectedCells[i].innerHTML) {\n innerHtml = innerHtml ? innerHtml + '
      ' + selectedCells[i].innerHTML : innerHtml + selectedCells[i].innerHTML;\n }\n }\n selectedCells[0].innerHTML = innerHtml;\n };\n TableCommand.prototype.getSelectedMinMaxIndexes = function (correspondingCells) {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n if (0 < selectedCells.length) {\n var minRow = correspondingCells.length;\n var maxRow = 0;\n var minCol = correspondingCells[0].length;\n var maxCol = 0;\n for (var i = 0; i < selectedCells.length; i++) {\n var currentRowCol = this.getCorrespondingIndex(selectedCells[i], correspondingCells);\n var targetRowCol = this.FindIndex(currentRowCol[0], currentRowCol[1], correspondingCells);\n minRow = Math.min(currentRowCol[0], minRow);\n maxRow = Math.max(targetRowCol[0], maxRow);\n minCol = Math.min(currentRowCol[1], minCol);\n maxCol = Math.max(targetRowCol[1], maxCol);\n }\n return {\n startRow: minRow,\n endRow: maxRow,\n startColumn: minCol,\n endColumn: maxCol\n };\n }\n return null;\n };\n TableCommand.prototype.HorizontalSplit = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n this.curTable = closest(selectedCell.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n return;\n }\n this.activeCell = this.curTable.querySelector('.e-cell-select');\n var newCell = this.activeCell.cloneNode(true);\n newCell.removeAttribute('class');\n newCell.innerHTML = '
      ';\n var activeCellIndex = this.getCorrespondingIndex(this.activeCell, this.getCorrespondingColumns());\n var correspondingCells = this.getCorrespondingColumns();\n var activeCellRowSpan = this.activeCell.getAttribute('rowspan') ? parseInt(this.activeCell.getAttribute('rowspan'), 10) : 1;\n if (activeCellRowSpan > 1) {\n var avgCount = Math.ceil(activeCellRowSpan / 2);\n // eslint-disable-next-line\n 1 < avgCount ? this.activeCell.setAttribute('rowspan', avgCount.toString()) :\n this.activeCell.removeAttribute('rowspan');\n // eslint-disable-next-line\n 1 < (activeCellRowSpan - avgCount) ? newCell.setAttribute('rowspan', (activeCellRowSpan - avgCount).toString()) : newCell.removeAttribute('rowspan');\n var avgRowIndex = void 0;\n var colIndex = void 0;\n for (avgRowIndex = activeCellIndex[0] + Math.ceil(activeCellRowSpan / 2),\n colIndex = 0 === activeCellIndex[1] ? activeCellIndex[1]\n : activeCellIndex[1] - 1; 0 <= colIndex && (correspondingCells[avgRowIndex][colIndex] ===\n // eslint-disable-next-line max-len\n correspondingCells[avgRowIndex][colIndex - 1] || 0 < avgRowIndex && correspondingCells[avgRowIndex][colIndex]\n === correspondingCells[avgRowIndex - 1][colIndex]);) {\n colIndex--;\n }\n if (colIndex === -1) {\n // eslint-disable-next-line\n this.curTable.rows[avgRowIndex].firstChild ? this.curTable.rows[avgRowIndex].prepend(newCell) : this.curTable.appendChild(newCell);\n }\n else {\n correspondingCells[avgRowIndex][colIndex].insertAdjacentElement('afterend', newCell);\n }\n }\n else {\n var newTrEle = createElement('tr');\n newTrEle.appendChild(newCell);\n var selectedRow = correspondingCells[activeCellIndex[0]];\n for (var j = 0; j <= selectedRow.length - 1; j++) {\n if (selectedRow[j] !== selectedRow[j - 1] && selectedRow[j] !== this.activeCell) {\n selectedRow[j].setAttribute('rowspan', ((parseInt(selectedRow[j].getAttribute('rowspan'), 10) ?\n parseInt(selectedRow[j].getAttribute('rowspan'), 10) : 1) + 1).toString());\n }\n }\n this.activeCell.parentNode.insertAdjacentElement('afterend', newTrEle);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.VerticalSplit = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n this.curTable = closest(selectedCell.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n return;\n }\n this.activeCell = this.curTable.querySelector('.e-cell-select');\n var allRows = this.curTable.rows;\n var newCell = this.activeCell.cloneNode(true);\n newCell.removeAttribute('class');\n newCell.innerHTML = '
      ';\n var activeCellIndex = this.getCorrespondingIndex(this.activeCell, this.getCorrespondingColumns());\n var correspondingColumns = this.getCorrespondingColumns();\n var activeCellcolSpan = parseInt(this.activeCell.getAttribute('colspan'), 10) || 1;\n if (activeCellcolSpan > 1) {\n var colSpan = Math.ceil(activeCellcolSpan / 2);\n var getColSizes = this.getColSizes(this.curTable);\n var activeCellUpdatedWidth = this.getSplitColWidth(activeCellIndex[1], activeCellIndex[1] + colSpan - 1, getColSizes);\n var newCellWidth = this.getSplitColWidth(activeCellIndex[1] + colSpan, activeCellIndex[1] + activeCellcolSpan - 1, getColSizes);\n var activeCellWidth = this.convertPixelToPercentage(this.activeCell.offsetWidth, this.curTable.offsetWidth);\n newCellWidth = (activeCellWidth - activeCellUpdatedWidth) < newCellWidth ? (activeCellWidth - activeCellUpdatedWidth) : newCellWidth;\n 1 < colSpan ? this.activeCell.setAttribute('colspan', colSpan.toString()) : this.activeCell.removeAttribute('colspan');\n 1 < activeCellcolSpan - colSpan ? newCell.setAttribute('colspan', (activeCellcolSpan - colSpan).toString()) : newCell.removeAttribute('colspan');\n this.activeCell.style.width = activeCellUpdatedWidth + '%';\n newCell.style.width = newCellWidth + '%';\n }\n else {\n var avgWidth = parseFloat(this.activeCell.style.width) / 2;\n for (var i = 0; i <= allRows.length - 1; i++) {\n if (0 === i || correspondingColumns[i][activeCellIndex[1]] !== correspondingColumns[i - 1][activeCellIndex[1]]) {\n var currentCell = correspondingColumns[i][activeCellIndex[1]];\n if (currentCell !== this.activeCell) {\n currentCell.setAttribute('colspan', ((parseInt(currentCell.getAttribute('colspan'), 10) ?\n parseInt(currentCell.getAttribute('colspan'), 10) : 1) + 1).toString());\n }\n }\n }\n this.activeCell.style.width = avgWidth + '%';\n newCell.style.width = avgWidth + '%';\n }\n this.activeCell.parentNode.insertBefore(newCell, this.activeCell.nextSibling);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.getSplitColWidth = function (startIndex, endInex, sizes) {\n var width = 0;\n for (var i = startIndex; i <= endInex; i++) {\n width += sizes[i];\n }\n return this.convertPixelToPercentage(width, this.curTable.offsetWidth);\n };\n TableCommand.prototype.getColSizes = function (curTable) {\n var cellColl = curTable.rows[0].cells;\n var cellCount = 0;\n for (var cell = 0; cell < cellColl.length; cell++) {\n cellCount = cellCount + cellColl[cell].colSpan;\n }\n var sizes = new Array(cellCount);\n var rowSpanCells = new Map();\n for (var i = 0; i < curTable.rows.length; i++) {\n var currentColIndex = 0;\n for (var k = 0; k < curTable.rows[i].cells.length; k++) {\n for (var l = 1; l < curTable.rows[i].cells[k].rowSpan; l++) {\n var key = \"\" + (i + l) + currentColIndex;\n rowSpanCells.set(key, curTable.rows[i].cells[k]);\n }\n var cellIndex = this.getCellIndex(rowSpanCells, i, k);\n if (cellIndex > currentColIndex) {\n currentColIndex = cellIndex;\n }\n var width = curTable.rows[i].cells[k].offsetWidth;\n if (!sizes[currentColIndex] || width < sizes[currentColIndex]) {\n sizes[currentColIndex] = width;\n }\n currentColIndex += 1 + curTable.rows[i].cells[k].colSpan - 1;\n }\n }\n return sizes;\n };\n TableCommand.prototype.getCellIndex = function (rowSpanCells, rowIndex, colIndex) {\n var cellKey = \"\" + rowIndex + colIndex;\n var spannedCell = rowSpanCells.get(cellKey);\n if (spannedCell) {\n return this.getCellIndex(rowSpanCells, rowIndex, colIndex + spannedCell.colSpan);\n }\n else {\n return colIndex;\n }\n };\n TableCommand.prototype.convertPixelToPercentage = function (value, offsetValue) {\n return (value / offsetValue) * 100;\n };\n TableCommand.prototype.getCorrespondingColumns = function () {\n var elementArray = [];\n // eslint-disable-next-line\n var _this = this;\n var colspan = 0;\n var allRows = _this.curTable.rows;\n for (var i = 0; i <= allRows.length - 1; i++) {\n var ele = allRows[i];\n var index = 0;\n for (var j = 0; j <= ele.children.length - 1; j++) {\n /* eslint-disable */\n var colEle = ele.children[j];\n for (var ele_1 = colEle, colspan_1 = parseInt(ele_1.getAttribute('colspan'), 10) || 1, rowSpan = parseInt(ele_1.getAttribute('rowspan'), 10) || 1, rowIndex = i; rowIndex < i + rowSpan; rowIndex++) {\n for (var colIndex = index; colIndex < index + colspan_1; colIndex++) {\n elementArray[rowIndex] || (elementArray[rowIndex] = []);\n elementArray[rowIndex][colIndex] ? index++ : elementArray[rowIndex][colIndex] = colEle;\n }\n }\n index += colspan;\n }\n /* eslint-enable */\n }\n return elementArray;\n };\n // eslint-disable-next-line\n TableCommand.prototype.FindIndex = function (rowIndex, columnIndex, cells) {\n var nextIndex;\n var nextCol;\n for (nextIndex = rowIndex + 1, nextCol = columnIndex + 1; nextIndex < cells.length;) {\n if (cells[nextIndex][columnIndex] !== cells[rowIndex][columnIndex]) {\n nextIndex--;\n break;\n }\n nextIndex++;\n }\n for (nextIndex === cells.length && nextIndex--; nextCol < cells[rowIndex].length;) {\n if (cells[rowIndex][nextCol] !== cells[rowIndex][columnIndex]) {\n nextCol--;\n break;\n }\n nextCol++;\n }\n return nextCol === cells[rowIndex].length && nextCol--,\n [\n nextIndex,\n nextCol\n ];\n };\n TableCommand.prototype.getCorrespondingIndex = function (cell, allCells) {\n //let value: RowCol = new RowCol();\n for (var i = 0; i < allCells.length; i++) {\n for (var j = 0; j < allCells[i].length; j++) {\n if (allCells[i][j] === cell) {\n return [i, j];\n }\n }\n }\n return [];\n };\n TableCommand.prototype.highlightCells = function (minRow, maxRow, minCol, maxCol, eleArray) {\n var j;\n var k;\n var startCell;\n var endCell;\n var minRowIndex = minRow;\n var maxRowIndex = maxRow;\n var minColIndex = minCol;\n var maxColIndex = maxCol;\n var minMaxValues = new MinMax();\n for (j = minRowIndex; j <= maxRowIndex; j++) {\n /* eslint-disable */\n if ((1 < (parseInt(eleArray[j][minColIndex].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[j][minColIndex].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[j][minColIndex], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n else if ((1 < (parseInt(eleArray[j][maxColIndex].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[j][maxColIndex].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[j][maxColIndex], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n for (k = minColIndex; k <= maxColIndex; k++) {\n if ((1 < (parseInt(eleArray[minRowIndex][k].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[minRowIndex][k].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[minRowIndex][k], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n else if ((1 < (parseInt(eleArray[maxRowIndex][k].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[maxRowIndex][k].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[maxRowIndex][k], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n }\n minMaxValues = minRowIndex === minRow && maxRowIndex === maxRow && minColIndex === minCol && maxColIndex === maxCol ? {\n startRow: minRow,\n endRow: maxRow,\n startColumn: minCol,\n endColumn: maxCol\n } : this.highlightCells(minRowIndex, maxRowIndex, minColIndex, maxColIndex, eleArray);\n }\n return minMaxValues;\n /* eslint-enable */\n };\n TableCommand.prototype.tableMove = function (e) {\n this.activeCell = e.selectNode[0];\n var target = e.event.target;\n var activeCellTag = this.activeCell.tagName;\n var targetCellTag = target.tagName;\n this.curTable = closest(target, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n this.parent.nodeSelection.Clear(this.parent.currentDocument);\n }\n if ((target.tagName !== 'TD' && target.tagName !== 'TH') && activeCellTag !== targetCellTag) {\n return;\n }\n var activeRowIndex = Array.prototype.slice.call((this.activeCell).parentElement.parentElement.children)\n .indexOf((this.activeCell).parentElement);\n var activeColumnIndex = Array.prototype.slice.call((this.activeCell).parentElement.children).indexOf(this.activeCell);\n var targetRowIndex = Array.prototype.slice.call(target.parentElement.parentElement.children)\n .indexOf(target.parentElement);\n var targetColumnIndex = Array.prototype.slice.call(target.parentElement.children).indexOf(target);\n var activeCellList = this.curTable.querySelectorAll('.e-cell-select');\n for (var i = activeCellList.length - 1; i >= 0; i--) {\n if (this.activeCell !== activeCellList[i]) {\n activeCellList[i].classList.remove('e-cell-select');\n }\n }\n if (activeRowIndex === targetRowIndex && activeColumnIndex === targetColumnIndex) {\n return;\n }\n var correspondingCells = this.getCorrespondingColumns();\n var activeIndexes = this.getCorrespondingIndex(this.activeCell, correspondingCells);\n var targetIndexes = this.getCorrespondingIndex(target, correspondingCells);\n var minMaxIndexes = this.highlightCells(Math.min(activeIndexes[0], targetIndexes[0]), Math.max(activeIndexes[0], \n /* eslint-disable */\n targetIndexes[0]), Math.min(activeIndexes[1], targetIndexes[1]), Math.max(activeIndexes[1], targetIndexes[1]), correspondingCells);\n for (var rowIndex = minMaxIndexes.startRow; rowIndex <= minMaxIndexes.endRow; rowIndex++) {\n for (var colIndex = minMaxIndexes.startColumn; colIndex <= minMaxIndexes.endColumn; colIndex++) {\n correspondingCells[rowIndex][colIndex].classList.add('e-cell-select');\n }\n }\n if (this.parent.nodeSelection.range) {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, this.parent.nodeSelection.range.endContainer, this.parent.nodeSelection.range.endContainer, 0, 0);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, this.parent.nodeSelection.range.endContainer, 0);\n }\n };\n ;\n return TableCommand;\n}());\nexport { TableCommand };\nvar MinMax = /** @class */ (function () {\n function MinMax() {\n }\n return MinMax;\n}());\n","/**\n * `Selection` module is used to handle RTE Selections.\n */\nimport { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport { InsertMethods } from './insert-methods';\nimport { IsFormatted } from './isformatted';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { isNullOrUndefined as isNOU, Browser, closest, detach } from '@syncfusion/ej2-base';\nimport { DOMNode } from './dom-node';\nvar SelectionCommands = /** @class */ (function () {\n function SelectionCommands() {\n }\n /**\n * applyFormat method\n *\n * @param {Document} docElement - specifies the document\n * @param {string} format - specifies the string value\n * @param {Node} endNode - specifies the end node\n * @param {string} enterAction - specifies the enter key action\n * @param {string} value - specifies the string value\n * @param {string} selector - specifies the string\n * @param {FormatPainterValue} painterValues specifies the element created and last child\n * @returns {void}\n * @hidden\n\n */\n SelectionCommands.applyFormat = function (docElement, format, endNode, enterAction, value, selector, painterValues) {\n this.enterAction = enterAction;\n var validFormats = ['bold', 'italic', 'underline', 'strikethrough', 'superscript',\n 'subscript', 'uppercase', 'lowercase', 'fontcolor', 'fontname', 'fontsize', 'backgroundcolor'];\n if (validFormats.indexOf(format) > -1 || value === 'formatPainter') {\n if (format === 'backgroundcolor' && value === '') {\n value = 'transparent';\n }\n var domSelection = new NodeSelection();\n var domNode = new DOMNode(endNode, docElement);\n var nodeCutter = new NodeCutter();\n var isFormatted = new IsFormatted();\n var range = domSelection.getRange(docElement);\n var currentAnchorNode = range.startContainer.parentElement;\n if (range.collapsed && !isNOU(currentAnchorNode) &&\n currentAnchorNode.tagName === 'A' &&\n (range.startOffset === currentAnchorNode.textContent.length || range.startOffset === 0)) {\n var emptyTextNode = document.createTextNode('');\n if (range.startOffset === 0) {\n currentAnchorNode.parentNode.insertBefore(emptyTextNode, currentAnchorNode);\n }\n else {\n if (!isNOU(currentAnchorNode.nextSibling)) {\n currentAnchorNode.parentElement.insertBefore(emptyTextNode, currentAnchorNode.nextSibling);\n }\n else {\n currentAnchorNode.parentNode.appendChild(emptyTextNode);\n }\n }\n // Set the range to the empty text node\n var newRange = docElement.createRange();\n range.setStart(emptyTextNode, 0);\n range.setEnd(emptyTextNode, 0);\n range.collapse(true);\n domSelection.setRange(docElement, newRange);\n }\n if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && !isNOU(endNode) && range.startContainer === endNode) {\n var startChildNodes = range.startContainer.childNodes;\n var startNode = ((startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) :\n range.startOffset]) || range.startContainer);\n var endNode_1 = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) :\n range.endOffset] || range.endContainer);\n var lastSelectionNode = (endNode_1.lastChild.nodeName === 'BR' ? (isNOU(endNode_1.lastChild.previousSibling) ? endNode_1\n : endNode_1.lastChild.previousSibling) : endNode_1.firstChild);\n while (!isNOU(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&\n lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {\n lastSelectionNode = lastSelectionNode.lastChild;\n }\n ;\n domSelection.setSelectionText(docElement, startNode, lastSelectionNode, 0, 0);\n range = domSelection.getRange(docElement);\n }\n var save = domSelection.save(range, docElement);\n var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :\n domSelection.getSelectionNodeCollectionBr(range);\n var isCollapsed = false;\n var isFormat = false;\n var isCursor = false;\n var preventRestore = false;\n var isFontStyle = (['fontcolor', 'fontname', 'fontsize', 'backgroundcolor'].indexOf(format) > -1);\n if (range.collapsed) {\n var currentFormatNode = isFormatted.getFormattedNode(range.startContainer, format, endNode);\n var currentSelector = !isNOU(currentFormatNode) ?\n (currentFormatNode.getAttribute('style') === null ? currentFormatNode.nodeName :\n currentFormatNode.nodeName + '[style=\\'' + currentFormatNode.getAttribute('style') + '\\']') : null;\n if (nodes.length > 0) {\n isCollapsed = true;\n range = nodeCutter.GetCursorRange(docElement, range, nodes[0]);\n }\n else if (range.startContainer.nodeType === 3 && ((range.startContainer.parentElement.childElementCount > 0 &&\n range.startOffset > 0 && range.startContainer.parentElement.firstElementChild.tagName.toLowerCase() !== 'br') ||\n !isNOU(currentFormatNode) && currentFormatNode ===\n (range.startContainer.parentElement.closest(currentSelector)) &&\n ((range.startContainer.parentElement.closest(currentSelector)).textContent.replace(\n // eslint-disable-next-line\n new RegExp(String.fromCharCode(8203), 'g'), '').trim().length !== 0))) {\n isCollapsed = true;\n range = nodeCutter.GetCursorRange(docElement, range, range.startContainer);\n nodes.push(range.startContainer);\n }\n else {\n var cursorNode = this.insertCursorNode(docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode);\n domSelection.endContainer = domSelection.startContainer = domSelection.getNodeArray(cursorNode, true);\n var childNodes = cursorNode.nodeName === 'BR' && cursorNode.parentNode.childNodes;\n if (!isNOU(childNodes) && childNodes.length === 1 && childNodes[0].nodeName === 'BR' && nodes.length === 0) {\n domSelection.setSelectionText(docElement, range.startContainer, range.endContainer, 0, 0);\n preventRestore = true;\n }\n else {\n domSelection.endOffset = domSelection.startOffset = 1;\n }\n if (cursorNode.nodeName === 'BR' && cursorNode.parentNode.textContent.length === 0) {\n preventRestore = true;\n }\n }\n }\n isCursor = range.collapsed;\n var isSubSup = false;\n for (var index = 0; index < nodes.length; index++) {\n var formatNode = isFormatted.getFormattedNode(nodes[index], format, endNode);\n if (formatNode === null) {\n if (format === 'subscript') {\n formatNode = isFormatted.getFormattedNode(nodes[index], 'superscript', endNode);\n isSubSup = formatNode === null ? false : true;\n }\n else if (format === 'superscript') {\n formatNode = isFormatted.getFormattedNode(nodes[index], 'subscript', endNode);\n isSubSup = formatNode === null ? false : true;\n }\n }\n if (index === 0 && formatNode === null) {\n isFormat = true;\n }\n if (formatNode !== null && (!isFormat || isFontStyle)) {\n nodes[index] = this.removeFormat(nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domSelection, endNode, domNode);\n }\n else {\n nodes[index] = this.insertFormat(docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, painterValues, domNode, endNode);\n }\n domSelection = this.applySelection(nodes, domSelection, nodeCutter, index, isCollapsed);\n }\n if (isIDevice()) {\n setEditFrameFocus(endNode, selector);\n }\n if (!preventRestore) {\n save.restore();\n }\n if (isSubSup) {\n this.applyFormat(docElement, format, endNode, enterAction);\n }\n }\n };\n SelectionCommands.insertCursorNode = function (docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode) {\n var cursorNodes = domSelection.getNodeCollection(range);\n var domNode = new DOMNode(endNode, docElement);\n var cursorFormat = (cursorNodes.length > 0) ?\n (cursorNodes.length > 1 && range.startContainer === range.endContainer) ?\n this.getCursorFormat(isFormatted, cursorNodes, format, endNode) :\n isFormatted.getFormattedNode(cursorNodes[0], format, endNode) : null;\n var cursorNode = null;\n if (cursorFormat) {\n cursorNode = cursorNodes[0];\n if (cursorFormat.firstChild.textContent.charCodeAt(0) === 8203 && cursorFormat.firstChild.nodeType === 3) {\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var emptySpaceNode = void 0;\n if (cursorFormat.firstChild === cursorNode) {\n cursorNode.textContent = (cursorFormat.parentElement && (domNode.isBlockNode(cursorFormat.parentElement) &&\n cursorFormat.parentElement.textContent.length <= 1 ? cursorFormat.parentElement.childElementCount > 1 :\n cursorFormat.childElementCount === 0) &&\n (cursorFormat.parentElement.textContent.length > 1 ||\n cursorFormat.parentElement.firstChild && cursorFormat.parentElement.firstChild.nodeType === 1) ?\n cursorNode.textContent : cursorNode.textContent.replace(regEx, ''));\n emptySpaceNode = cursorNode;\n }\n else {\n cursorFormat.firstChild.textContent = cursorFormat.firstChild.textContent.replace(regEx, '');\n emptySpaceNode = cursorFormat.firstChild;\n }\n var pointer = void 0;\n if (emptySpaceNode.textContent.length === 0) {\n if (!isNOU(emptySpaceNode.previousSibling)) {\n cursorNode = emptySpaceNode.previousSibling;\n pointer = emptySpaceNode.textContent.length - 1;\n domSelection.setCursorPoint(docElement, emptySpaceNode, pointer);\n }\n else if (!isNOU(emptySpaceNode.parentElement) && emptySpaceNode.parentElement.textContent.length === 0) {\n var brElem = document.createElement('BR');\n emptySpaceNode.parentElement.appendChild(brElem);\n detach(emptySpaceNode);\n cursorNode = brElem;\n domSelection.setCursorPoint(docElement, cursorNode.parentElement, 0);\n }\n }\n }\n if ((['fontcolor', 'fontname', 'fontsize', 'backgroundcolor'].indexOf(format) > -1)) {\n if (format === 'fontcolor') {\n cursorFormat.style.color = value;\n }\n else if (format === 'fontname') {\n cursorFormat.style.fontFamily = value;\n }\n else if (format === 'fontsize') {\n cursorFormat.style.fontSize = value;\n }\n else {\n cursorFormat.style.backgroundColor = value;\n }\n cursorNode = cursorFormat;\n }\n else {\n InsertMethods.unwrap(cursorFormat);\n }\n }\n else {\n if (cursorNodes.length > 1 && range.startOffset > 0 && (cursorNodes[0].firstElementChild &&\n cursorNodes[0].firstElementChild.tagName.toLowerCase() === 'br')) {\n cursorNodes[0].innerHTML = '';\n }\n if (cursorNodes.length === 1 && range.startOffset === 0 && (cursorNodes[0].nodeName === 'BR' || (isNOU(cursorNodes[0].nextSibling) ? false : cursorNodes[0].nextSibling.nodeName === 'BR'))) {\n detach(cursorNodes[0].nodeName === '#text' ? cursorNodes[0].nextSibling : cursorNodes[0]);\n }\n cursorNode = this.getInsertNode(docElement, range, format, value).firstChild;\n }\n return cursorNode;\n };\n SelectionCommands.getCursorFormat = function (isFormatted, cursorNodes, format, endNode) {\n var currentNode;\n for (var index = 0; index < cursorNodes.length; index++) {\n currentNode = cursorNodes[index].lastElementChild ?\n cursorNodes[index].lastElementChild : cursorNodes[index];\n }\n return isFormatted.getFormattedNode(currentNode, format, endNode);\n };\n SelectionCommands.removeFormat = function (nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domSelection, endNode, domNode) {\n var splitNode = null;\n var startText = range.startContainer.nodeName === '#text' ?\n range.startContainer.textContent.substring(range.startOffset, range.startContainer.textContent.length) :\n range.startContainer.textContent;\n var nodeText = nodes[index].textContent;\n if (!(range.startContainer === range.endContainer && range.startOffset === 0\n && range.endOffset === range.startContainer.length)) {\n var nodeIndex = [];\n var cloneNode = nodes[index];\n var clonedElement = cloneNode;\n do {\n nodeIndex.push(domSelection.getIndex(cloneNode));\n cloneNode = cloneNode.parentNode;\n } while (cloneNode && (cloneNode !== formatNode));\n if (nodes[index].nodeName !== 'BR') {\n if (clonedElement.nodeName === '#text' && clonedElement.textContent.includes('\\u200B')) {\n clonedElement.remove();\n }\n cloneNode = splitNode = (isCursor && (formatNode.textContent.length - 1) === range.startOffset) ?\n nodeCutter.SplitNode(range, formatNode, true)\n : nodeCutter.GetSpliceNode(range, formatNode);\n }\n if (!isCursor) {\n while (cloneNode && cloneNode.childNodes.length > 0 && ((nodeIndex.length - 1) >= 0)\n && (cloneNode.childNodes.length > nodeIndex[nodeIndex.length - 1])) {\n cloneNode = cloneNode.childNodes[nodeIndex[nodeIndex.length - 1]];\n nodeIndex.pop();\n }\n if (nodes[index].nodeName !== 'BR') {\n if (cloneNode.nodeType === 3 && !(isCursor && cloneNode.nodeValue === '')) {\n nodes[index] = cloneNode;\n }\n else {\n var divNode = document.createElement('div');\n divNode.innerHTML = '​';\n if (cloneNode.nodeType !== 3) {\n cloneNode.insertBefore(divNode.firstChild, cloneNode.firstChild);\n nodes[index] = cloneNode.firstChild;\n }\n else {\n cloneNode.parentNode.insertBefore(divNode.firstChild, cloneNode);\n nodes[index] = cloneNode.previousSibling;\n cloneNode.parentNode.removeChild(cloneNode);\n }\n }\n }\n }\n else {\n var lastNode = splitNode;\n for (; lastNode.firstChild !== null && lastNode.firstChild.nodeType !== 3; null) {\n lastNode = lastNode.firstChild;\n }\n lastNode.innerHTML = '​';\n nodes[index] = lastNode.firstChild;\n }\n }\n else if (isFontStyle && !nodes[index].contains(formatNode) && nodes[index].nodeType === 3 &&\n nodes[index].textContent !== formatNode.textContent) {\n // If the selection is within the format node .\n var isFullNodeSelected = nodes[index].textContent === nodes[index].wholeText;\n var nodeTraverse = nodes[index];\n var styleElement = this.GetFormatNode(format, value);\n // while loop and traverse back until text content does not match with parent text content\n while (nodeTraverse && nodeTraverse.textContent === nodeTraverse.parentElement.textContent) {\n nodeTraverse = nodeTraverse.parentElement;\n }\n if (isFullNodeSelected && formatNode.textContent !== nodeTraverse.textContent) {\n var nodeArray = [];\n var priorityNode = this.getPriorityFormatNode(nodeTraverse, endNode);\n if (priorityNode && priorityNode.textContent === nodeTraverse.textContent) {\n nodeTraverse = priorityNode;\n }\n nodeArray.push(nodeTraverse);\n this.applyStyles(nodeArray, 0, styleElement);\n return nodes[index];\n }\n }\n var fontStyle;\n if (format === 'backgroundcolor') {\n fontStyle = formatNode.style.fontSize;\n }\n var bgStyle;\n if (format === 'fontsize') {\n var bg = closest(nodes[index].parentElement, 'span[style*=' + 'background-color' + ']');\n if (!isNOU(bg)) {\n bgStyle = bg.style.backgroundColor;\n }\n }\n var formatNodeStyles = formatNode.getAttribute('style');\n var formatNodeTagName = formatNode.tagName;\n var child;\n if (formatNodeTagName === 'A' && format === 'underline') {\n formatNode.style.textDecoration = 'none';\n child = [formatNode];\n }\n else if (IsFormatted.inlineTags.indexOf(formatNodeTagName.toLowerCase()) !== -1 && isFontStyle && formatNodeTagName.toLocaleLowerCase() !== 'span') {\n var fontNodeStyle = formatNode.style;\n if (fontNodeStyle.color && format === 'fontcolor') {\n if (formatNode.nodeName === 'A') {\n fontNodeStyle.color = value;\n }\n else {\n fontNodeStyle.color = '';\n }\n }\n else if (fontNodeStyle.backgroundColor && format === 'backgroundcolor') {\n fontNodeStyle.backgroundColor = '';\n }\n else if (fontNodeStyle.fontSize && format === 'fontsize') {\n fontNodeStyle.fontSize = '';\n }\n else if (fontNodeStyle.fontFamily && format === 'fontname') {\n fontNodeStyle.fontFamily = '';\n }\n if (formatNode.getAttribute(\"style\") === '') {\n formatNode.removeAttribute(\"style\");\n }\n child = [formatNode];\n }\n else {\n child = InsertMethods.unwrap(formatNode);\n var liElement = nodes[index].parentElement;\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() !== 'li') {\n liElement = closest(liElement, 'li');\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.trim() === nodes[index].textContent.trim()) {\n if (format === 'bold') {\n liElement.style.fontWeight = 'normal';\n }\n else if (format === \"italic\") {\n liElement.style.fontStyle = 'normal';\n }\n }\n else if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li'\n && liElement.textContent.trim() !== nodes[index].textContent.trim()) {\n SelectionCommands.conCatenateTextNode(liElement, format, '', 'normal');\n }\n }\n if (child[0] && !isFontStyle) {\n var nodeTraverse = child[index] ? child[index] : child[0];\n var textNode = nodeTraverse;\n for (; nodeTraverse && nodeTraverse.parentElement && nodeTraverse.parentElement !== endNode; \n // eslint-disable-next-line\n nodeTraverse = nodeTraverse) {\n var nodeTraverseCondition = void 0;\n if (formatNode.nodeName === 'SPAN') {\n nodeTraverseCondition = nodeTraverse.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase() && nodeTraverse.parentElement.getAttribute('style') === formatNodeStyles;\n }\n else {\n nodeTraverseCondition = nodeTraverse.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase();\n }\n if (nodeTraverse.parentElement && nodeTraverseCondition &&\n (nodeTraverse.parentElement.childElementCount > 1 || range.startOffset > 1)) {\n if (textNode.parentElement && textNode.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase()) {\n if ((range.startOffset === range.endOffset) && textNode.nodeType !== 1 &&\n !isNOU(textNode.textContent) && textNode.parentElement.childElementCount > 1) {\n range.setStart(textNode, 0);\n range.setEnd(textNode, textNode.textContent.length);\n nodeCutter.SplitNode(range, textNode.parentElement, false);\n }\n }\n if (nodeTraverse.parentElement.tagName.toLocaleLowerCase() === 'span') {\n if (formatNode.style.textDecoration === 'underline' &&\n nodeTraverse.parentElement.style.textDecoration !== 'underline') {\n nodeTraverse = nodeTraverse.parentElement;\n continue;\n }\n }\n InsertMethods.unwrap(nodeTraverse.parentElement);\n nodeTraverse = !isNOU(nodeTraverse.parentElement) && !domNode.isBlockNode(nodeTraverse.parentElement) ? textNode :\n nodeTraverse.parentElement;\n }\n else {\n nodeTraverse = nodeTraverse.parentElement;\n }\n }\n }\n if (child.length > 0 && isFontStyle) {\n for (var num = 0; num < child.length; num++) {\n if (child[num].nodeType !== 3 || (child[num].textContent &&\n child[num].textContent.trim().length > 0)) {\n child[num] = InsertMethods.Wrap(child[num], this.GetFormatNode(format, value, formatNodeTagName, formatNodeStyles));\n var liElement = nodes[index].parentElement;\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() !== 'li') {\n liElement = closest(liElement, 'li');\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.trim() === nodes[index].textContent.trim()) {\n if (format === 'fontname') {\n liElement.style.fontFamily = value;\n }\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li'\n && liElement.textContent.trim() !== nodes[index].textContent.trim()) {\n SelectionCommands.conCatenateTextNode(liElement, format, liElement.textContent, format, value);\n }\n if (child[num].textContent === startText) {\n if (num === 0) {\n range.setStartBefore(child[num]);\n }\n else if (num === child.length - 1) {\n range.setEndAfter(child[num]);\n }\n }\n }\n }\n var currentNodeElem = nodes[index].parentElement;\n if (!isNOU(fontStyle) && fontStyle !== '') {\n currentNodeElem.style.fontSize = fontStyle;\n }\n if (!isNOU(bgStyle) && bgStyle !== '') {\n currentNodeElem.style.backgroundColor = bgStyle;\n }\n if ((format === 'backgroundcolor' && !isNOU(fontStyle) && fontStyle !== '') &&\n currentNodeElem.parentElement.innerHTML === currentNodeElem.outerHTML) {\n var curParentElem = currentNodeElem.parentElement;\n curParentElem.parentElement.insertBefore(currentNodeElem, curParentElem);\n detach(curParentElem);\n }\n if (format === 'fontsize' || format === 'fontcolor') {\n var liElement = nodes[index].parentElement;\n var parentElement = nodes[index].parentElement;\n while (!isNOU(parentElement) && parentElement.tagName.toLowerCase() !== 'li') {\n parentElement = parentElement.parentElement;\n liElement = parentElement;\n }\n var num = index;\n var liChildContent = '';\n /* eslint-disable security/detect-object-injection */\n while (num >= 0 && !isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' && liElement.contains(nodes[num]) &&\n liElement.textContent.replace('/\\u200B/g', '').trim().includes(nodes[num].textContent.trim())) {\n /* eslint-enable security/detect-object-injection */\n liChildContent = ' ' + nodes[num].textContent.trim() + liChildContent;\n num--;\n }\n var isNestedList = false;\n var nestedListCount = 0;\n var isNestedListItem = false;\n if (!isNOU(liElement) && liElement.childNodes) {\n for (var num_1 = 0; num_1 < liElement.childNodes.length; num_1++) {\n if (liElement.childNodes[num_1].nodeName === ('OL' || 'UL')) {\n nestedListCount++;\n isNestedList = true;\n }\n }\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.split('\\u200B').join('').trim() === liChildContent.split('\\u200B').join('').trim()) {\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n else if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' && isNestedList) {\n if (isNestedList && nestedListCount > 0) {\n for (var num_2 = 0; num_2 < liElement.childNodes.length; num_2++) {\n if (nodes[index].textContent === liElement.childNodes[num_2].textContent && nodes[index].textContent === nodeText && liElement.textContent.replace('/\\u200B/g', '').trim().includes(liChildContent.split('\\u200B').join('').trim())) {\n isNestedListItem = true;\n }\n }\n }\n if (isNestedListItem) {\n for (var num_3 = 0; num_3 < liElement.childNodes.length; num_3++) {\n if (liElement.childNodes[num_3].nodeName === ('OL' || 'UL')) {\n liElement.childNodes[num_3].style.fontSize = 'initial';\n }\n }\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n }\n }\n }\n return nodes[index];\n };\n SelectionCommands.insertFormat = function (docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, painterValues, domNode, endNode) {\n if (!isCursor) {\n if ((formatNode === null && isFormat) || isFontStyle) {\n if (nodes[index].nodeName !== 'BR') {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n nodes[index].textContent = nodeCutter.TrimLineBreak(nodes[index].textContent);\n }\n if (format === 'uppercase' || format === 'lowercase') {\n nodes[index].textContent = (format === 'uppercase') ? nodes[index].textContent.toLocaleUpperCase()\n : nodes[index].textContent.toLocaleLowerCase();\n }\n else if (!(isFontStyle === true && value === '')) {\n var element = this.GetFormatNode(format, value);\n if (value === 'formatPainter' || isFontStyle) {\n var liElement = nodes[index].parentElement;\n var parentElement = nodes[index].parentElement;\n while (!isNOU(parentElement) && parentElement.tagName.toLowerCase() !== 'li') {\n parentElement = parentElement.parentElement;\n liElement = parentElement;\n }\n if (format === 'fontcolor' || format === 'fontname' || format === 'fontsize') {\n var parentElem = nodes[index].parentElement;\n if (!isNOU(parentElem) && parentElem.childNodes) {\n for (var i = 0; i < parentElem.childNodes.length; i++) {\n if (this.concatenateTextExcludingList(nodes, index) === nodes[index].textContent) {\n var liElement_1 = void 0;\n if (parentElem.tagName === 'LI') {\n liElement_1 = parentElem;\n }\n else if (parentElem.closest('li')) {\n liElement_1 = parentElem.closest('li');\n }\n if (!isNOU(liElement_1)) {\n switch (format) {\n case 'fontcolor':\n liElement_1.style.color = value;\n break;\n case 'fontname':\n liElement_1.style.fontFamily = value;\n break;\n case 'fontsize':\n liElement_1.style.fontSize = value;\n break;\n default:\n break;\n }\n }\n }\n // eslint-disable-next-line\n var childElement = parentElem.childNodes[i];\n if (childElement.tagName === 'OL' || childElement.tagName === 'UL') {\n switch (format) {\n case 'fontcolor':\n childElement.style.color = 'initial';\n break;\n case 'fontname':\n childElement.style.fontFamily = 'initial';\n break;\n case 'fontsize':\n childElement.style.fontSize = 'initial';\n break;\n default:\n break;\n }\n }\n }\n }\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.trim() === nodes[index].textContent.trim()) {\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else if (format === 'fontcolor') {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n else if (format === 'fontname') {\n liElement.style.fontFamily = value;\n }\n }\n if (value === 'formatPainter') {\n return this.insertFormatPainterElem(nodes, index, range, nodeCutter, painterValues, domNode);\n }\n var currentNode = nodes[index];\n var priorityNode = this.getPriorityFormatNode(currentNode, endNode);\n // 1. Checking is there any priority node present in the selection range. (Use case for nested styles);\n // 2 Or font style is applied. (Use case not a nested style)\n if (!isNOU(priorityNode) || isFontStyle) {\n var currentFormatNode = isNOU(priorityNode) ? currentNode : priorityNode;\n currentFormatNode = !isNOU(priorityNode) && priorityNode.style.fontSize !== '' ?\n currentFormatNode.firstChild : currentFormatNode;\n if (isNOU(priorityNode) || format === 'fontsize') {\n while (currentFormatNode) {\n var isSameTextContent = currentFormatNode.parentElement.textContent.trim()\n === nodes[index].textContent.trim();\n var parent_1 = currentFormatNode.parentElement;\n if (!domNode.isBlockNode(parent_1) && isSameTextContent &&\n !(parent_1.nodeName === 'SPAN' && parent_1.classList.contains('e-img-inner'))) {\n currentFormatNode = parent_1;\n }\n else {\n break;\n }\n }\n }\n var nodeList = [];\n // Since color is different for different themnes, we need to wrap the fontColor over the text node.\n if (format === 'fontcolor') {\n var closestAnchor = closest(nodes[index].parentElement, 'A');\n if (!isNOU(closestAnchor) && closestAnchor.firstChild.textContent.trim()\n === nodes[index].textContent.trim()) {\n currentFormatNode = nodes[index];\n }\n }\n if (nodes[index].textContent.trim() !== currentFormatNode.textContent.trim()) {\n currentFormatNode = nodes[index];\n }\n nodeList[0] = currentFormatNode;\n this.applyStyles(nodeList, 0, element);\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li'\n && liElement.textContent.trim() !== nodes[index].textContent.trim()) {\n SelectionCommands.conCatenateTextNode(liElement, format, liElement.textContent, format, value);\n }\n }\n else {\n nodes[index] = this.applyStyles(nodes, index, element);\n }\n }\n else {\n nodes[index] = this.applyStyles(nodes, index, element);\n var liElement = nodes[index].parentElement;\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() !== 'li') {\n liElement = closest(liElement, 'li');\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.trim() === nodes[index].textContent.trim()) {\n if (format === 'bold') {\n liElement.style.fontWeight = 'bold';\n }\n else if (format === \"italic\") {\n liElement.style.fontStyle = 'italic';\n }\n }\n else if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li'\n && liElement.textContent.trim() !== nodes[index].textContent.trim()) {\n SelectionCommands.conCatenateTextNode(liElement, format, liElement.textContent, format);\n }\n }\n }\n }\n else {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n }\n }\n else {\n if (format !== 'uppercase' && format !== 'lowercase') {\n var element = this.getInsertNode(docElement, range, format, value);\n nodes[index] = element.firstChild;\n nodeCutter.position = 1;\n }\n else {\n nodeCutter.position = range.startOffset;\n }\n }\n return nodes[index];\n };\n SelectionCommands.applyStyles = function (nodes, index, element) {\n if (!(nodes[index].nodeName === 'BR' && this.enterAction === 'BR')) {\n nodes[index] = (index === (nodes.length - 1)) || nodes[index].nodeName === 'BR' ?\n InsertMethods.Wrap(nodes[index], element)\n : InsertMethods.WrapBefore(nodes[index], element, true);\n nodes[index] = this.getChildNode(nodes[index], element);\n }\n return nodes[index];\n };\n SelectionCommands.getPriorityFormatNode = function (node, endNode) {\n var isFormatted = new IsFormatted();\n var fontSizeNode = isFormatted.getFormattedNode(node, 'fontsize', endNode);\n var fontColorNode;\n var backgroundColorNode;\n var fontNameNode;\n if (isNOU(fontSizeNode)) {\n backgroundColorNode = isFormatted.getFormattedNode(node, 'backgroundcolor', endNode);\n if (isNOU(backgroundColorNode)) {\n fontNameNode = isFormatted.getFormattedNode(node, 'fontname', endNode);\n if (isNOU(fontNameNode)) {\n fontColorNode = isFormatted.getFormattedNode(node, 'fontcolor', endNode);\n if (isNOU(fontColorNode)) {\n return null;\n }\n else {\n return fontColorNode;\n }\n }\n else {\n return fontNameNode;\n }\n }\n else {\n return backgroundColorNode;\n }\n }\n else {\n return fontSizeNode;\n }\n };\n SelectionCommands.getInsertNode = function (docElement, range, format, value) {\n var element = this.GetFormatNode(format, value);\n element.innerHTML = '​';\n if (Browser.isIE) {\n var frag = docElement.createDocumentFragment();\n frag.appendChild(element);\n range.insertNode(frag);\n }\n else {\n range.insertNode(element);\n }\n return element;\n };\n SelectionCommands.getChildNode = function (node, element) {\n if (node === undefined || node === null) {\n element.innerHTML = '​';\n node = element.firstChild;\n }\n return node;\n };\n SelectionCommands.applySelection = function (nodes, domSelection, nodeCutter, index, isCollapsed) {\n if (nodes.length === 1 && !isCollapsed) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.endContainer = domSelection.startContainer;\n domSelection.startOffset = 0;\n domSelection.endOffset = nodes[index].textContent.length;\n }\n else if (nodes.length === 1 && isCollapsed) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.endContainer = domSelection.startContainer;\n domSelection.startOffset = nodeCutter.position;\n domSelection.endOffset = nodeCutter.position;\n }\n else if (index === 0) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.startOffset = 0;\n }\n else if (index === nodes.length - 1) {\n domSelection.endContainer = domSelection.getNodeArray(nodes[index], false);\n domSelection.endOffset = nodes[index].textContent.length;\n }\n return domSelection;\n };\n SelectionCommands.GetFormatNode = function (format, value, tagName, styles) {\n var node;\n switch (format) {\n case 'bold':\n return document.createElement('strong');\n case 'italic':\n return document.createElement('em');\n case 'underline':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.textDecoration = 'underline';\n return node;\n case 'strikethrough':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.textDecoration = 'line-through';\n return node;\n case 'superscript':\n return document.createElement('sup');\n case 'subscript':\n return document.createElement('sub');\n case 'fontcolor':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.color = value;\n node.style.textDecoration = 'inherit';\n return node;\n case 'fontname':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.fontFamily = value;\n return node;\n case 'fontsize':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.fontSize = value;\n return node;\n default:\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.backgroundColor = value;\n return node;\n }\n };\n SelectionCommands.updateStyles = function (ele, tag, styles) {\n if (styles !== null && tag === 'SPAN') {\n ele.setAttribute('style', styles);\n }\n };\n // Below function is used to insert the element created by the format painter plugin.\n SelectionCommands.insertFormatPainterElem = function (nodes, index, range, nodeCutter, painterValues, domNode) {\n var parent = !domNode.isBlockNode(nodes[index].parentElement) ?\n nodes[index].parentElement : nodes[index];\n if (!domNode.isBlockNode(parent)) {\n while (parent.textContent.trim() === parent.parentElement.textContent.trim() && !domNode.isBlockNode(parent.parentElement)) {\n parent = parent.parentElement;\n }\n }\n // The below code is used to remove the already present inline style from the text node.\n if (!isNOU(parent) && parent.nodeType === 1 && !(parent.classList.contains('e-rte-img-caption') || parent.classList.contains('e-img-inner'))) {\n this.formatPainterCleanup(index, nodes, parent, range, nodeCutter, domNode);\n }\n var elem = painterValues.element;\n // The below code is used to apply the inline format copied.\n if (!isNOU(elem)) {\n // Step 1: Cloning the element that is created by format painter.\n // Step 2: Finding the last child of the nested elememt using the paintervalues.lastchild nodename\n // Step 3: Assigning the nodes[index] text content to the last child element.\n // Step 4: Wrapping the cloned element with the nodes[index]\n var clonedElement = elem.cloneNode(true);\n var elemList = clonedElement.querySelectorAll(painterValues.lastChild.nodeName);\n var lastElement = void 0;\n if (elemList.length > 0) {\n lastElement = elemList[elemList.length - 1];\n }\n else {\n if (!isNOU(clonedElement) && clonedElement.nodeName === painterValues.lastChild.nodeName) {\n lastElement = clonedElement;\n }\n }\n lastElement.textContent = nodes[index].textContent;\n var lastChild = lastElement.childNodes[0];\n nodes[index] = InsertMethods.Wrap(nodes[index], clonedElement);\n nodes[index].textContent = '';\n nodes[index] = lastChild;\n }\n return nodes[index];\n };\n SelectionCommands.formatPainterCleanup = function (index, nodes, parent, range, nodeCutter, domNode) {\n var INVALID_TAGS = ['A', 'AUDIO', 'IMG', 'VIDEO', 'IFRAME'];\n if (index === 0 && parent.textContent.trim() !== nodes[index].textContent.trim()) {\n nodeCutter.SplitNode(range, parent, true);\n var childELemList = nodes[index].parentElement.childNodes;\n for (var i = 0; i < childELemList.length; i++) {\n if (childELemList[i].textContent.trim() === nodes[i].textContent.trim()) {\n parent.parentNode.insertBefore(childELemList[i], parent);\n break;\n }\n }\n var blockChildNodes = parent.parentElement.childNodes;\n for (var k = 0; k < blockChildNodes.length; k++) {\n if ((blockChildNodes[k].textContent.trim() === '' || blockChildNodes[k].textContent.length === 0) &&\n blockChildNodes[k].textContent.charCodeAt(0) !== 160) {\n // 160 is the char code for  \n detach(blockChildNodes[k]);\n }\n }\n }\n else if (parent.textContent.trim() !== nodes[index].textContent.trim()) {\n parent.parentElement.insertBefore(nodes[index], parent);\n }\n else {\n while (!isNOU(parent) && parent.nodeType !== 3 && !domNode.isBlockNode(parent)) {\n var temp = void 0;\n for (var i = 0; i < parent.childNodes.length; i++) {\n var currentChild = parent.childNodes[i];\n if (currentChild.textContent.trim().length !== 0 && currentChild.nodeType !== 3) {\n temp = parent.childNodes[i];\n }\n }\n if (INVALID_TAGS.indexOf(parent.tagName) === -1) {\n InsertMethods.unwrap(parent);\n }\n parent = temp;\n }\n }\n };\n SelectionCommands.concatenateTextExcludingList = function (nodes, index) {\n var result = '';\n var parentNode = nodes[index].parentElement;\n for (var i = 0; i < parentNode.childNodes.length; i++) {\n // eslint-disable-next-line\n var childNode = parentNode.childNodes[i];\n if ((childNode.nodeType === 3) || (childNode.nodeType === 1 && (childNode.tagName !== 'OL' && childNode.tagName !== 'UL'))) {\n result += childNode.textContent;\n }\n }\n return result;\n };\n SelectionCommands.conCatenateTextNode = function (liElement, format, value, formatStr, constVal) {\n var result = '';\n switch (format) {\n case 'bold':\n liElement.querySelectorAll('strong').forEach(function (e) {\n result = result + e.textContent;\n });\n if (result === value) {\n liElement.style.fontWeight = formatStr;\n }\n break;\n case 'italic':\n liElement.querySelectorAll('em').forEach(function (e) {\n result = result + e.textContent;\n });\n if (result === value) {\n liElement.style.fontStyle = formatStr;\n }\n break;\n case 'fontcolor':\n var colorStyle_1 = '';\n liElement.querySelectorAll('span').forEach(function (span) {\n colorStyle_1 = span.style.color;\n if (colorStyle_1 === constVal) {\n result = result + span.textContent;\n }\n });\n if (result === value) {\n liElement.style.color = colorStyle_1;\n liElement.style.textDecoration = 'inherit';\n }\n break;\n case 'fontsize':\n var fontSize_1 = '';\n liElement.querySelectorAll('span').forEach(function (span) {\n fontSize_1 = span.style.getPropertyValue('font-size');\n if (fontSize_1 === constVal) {\n result = result + span.textContent;\n }\n });\n if (result === value) {\n liElement.style.fontSize = fontSize_1;\n }\n break;\n case 'fontname':\n var fontFamily_1 = '';\n liElement.querySelectorAll('span').forEach(function (span) {\n fontFamily_1 = span.style.getPropertyValue('font-family');\n if (fontFamily_1 === constVal) {\n result = result + span.textContent;\n }\n });\n if (result === value) {\n liElement.style.fontFamily = fontFamily_1;\n }\n break;\n }\n };\n SelectionCommands.enterAction = 'P';\n return SelectionCommands;\n}());\nexport { SelectionCommands };\n","import * as CONSTANT from './../base/constant';\nimport { SelectionCommands } from './selection-commands';\nimport * as EVENTS from './../../common/constant';\n/**\n * Selection EXEC internal component\n *\n * @hidden\n\n */\nvar SelectionBasedExec = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function SelectionBasedExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n SelectionBasedExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.SELECTION_TYPE, this.applySelection, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler, this);\n };\n SelectionBasedExec.prototype.keyDownHandler = function (e) {\n var validFormats = ['bold', 'italic', 'underline', 'strikethrough', 'superscript',\n 'subscript', 'uppercase', 'lowercase'];\n if ((e.event.ctrlKey || e.event.metaKey) && validFormats.indexOf(e.event.action) > -1) {\n e.event.preventDefault();\n SelectionCommands.applyFormat(this.parent.currentDocument, e.event.action, this.parent.editableElement, e.enterAction);\n this.callBack(e, e.event.action);\n }\n };\n SelectionBasedExec.prototype.applySelection = function (e) {\n SelectionCommands.applyFormat(this.parent.currentDocument, e.subCommand.toLocaleLowerCase(), this.parent.editableElement, e.enterAction, e.value, e.selector);\n this.callBack(e, e.subCommand);\n };\n SelectionBasedExec.prototype.callBack = function (event, action) {\n if (event.callBack) {\n event.callBack({\n requestType: action,\n event: event.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return SelectionBasedExec;\n}());\nexport { SelectionBasedExec };\n","import * as CONSTANT from './../base/constant';\nimport { InsertHtml } from './inserthtml';\n/**\n * Selection EXEC internal component\n *\n * @hidden\n\n */\nvar InsertHtmlExec = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - sepcifies the parent element\n * @hidden\n\n */\n function InsertHtmlExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n InsertHtmlExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INSERTHTML_TYPE, this.applyHtml, this);\n };\n InsertHtmlExec.prototype.applyHtml = function (e) {\n InsertHtml.Insert(this.parent.currentDocument, e.value, this.parent.editableElement, true, e.enterAction);\n if (e.subCommand === 'pasteCleanup') {\n var pastedElements = this.parent.editableElement.querySelectorAll('.pasteContent_RTE');\n var allPastedElements = [].slice.call(pastedElements);\n var imgElements = this.parent.editableElement.querySelectorAll('.pasteContent_Img');\n var allImgElm = [].slice.call(imgElements);\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n elements: allPastedElements,\n imgElem: allImgElm\n });\n }\n else {\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n }\n };\n return InsertHtmlExec;\n}());\nexport { InsertHtmlExec };\n","/**\n * `Clear Format` module is used to handle Clear Format.\n */\nimport { closest } from '@syncfusion/ej2-base';\nimport { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport { DOMNode } from './dom-node';\nimport { InsertMethods } from './insert-methods';\nimport { IsFormatted } from './isformatted';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nvar ClearFormat = /** @class */ (function () {\n function ClearFormat() {\n }\n /**\n * clear method\n *\n * @param {Document} docElement - specifies the document element.\n * @param {Node} endNode - specifies the end node\n * @param {string} enterAction - specifies the enter key action\n * @param {string} selector - specifies the string value\n * @param {string} command - specifies the command value\n * @returns {void}\n * @hidden\n\n */\n ClearFormat.clear = function (docElement, endNode, enterAction, selector, command) {\n this.domNode = new DOMNode(endNode, docElement);\n this.defaultTag = enterAction === 'P' ? this.defaultTag : 'div';\n var nodeSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = nodeSelection.getRange(docElement);\n var nodes = range.collapsed ? nodeSelection.getSelectionNodeCollection(range) :\n nodeSelection.getSelectionNodeCollectionBr(range);\n var save = nodeSelection.save(range, docElement);\n var cursorRange = false;\n if (range.collapsed && command !== 'ClearFormat') {\n cursorRange = true;\n range = nodeCutter.GetCursorRange(docElement, range, nodes[0]);\n }\n var isCollapsed = range.collapsed;\n if (!isCollapsed) {\n var preNode = void 0;\n if (nodes.length > 0 && nodes[0].nodeName === 'BR' && closest(nodes[0], 'table')) {\n preNode = nodeCutter.GetSpliceNode(range, closest(nodes[0], 'table'));\n }\n else {\n preNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length > 1 && nodes[0].nodeName === 'IMG' ? 1 : 0]);\n }\n if (nodes.length === 1) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n }\n else if (nodes.length > 1) {\n var i = 1;\n var lastText = nodes[nodes.length - i];\n while (nodes.length <= i && nodes[nodes.length - i].nodeName === 'BR') {\n i++;\n lastText = nodes[nodes.length - i];\n }\n var lasNode = nodeCutter.GetSpliceNode(range, lastText);\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n }\n var exactNodes = nodeSelection.getNodeCollection(range);\n var cloneSelectNodes = exactNodes.slice();\n this.clearInlines(nodeSelection.getSelectionNodes(cloneSelectNodes), cloneSelectNodes, nodeSelection.getRange(docElement), nodeCutter, endNode);\n this.reSelection(docElement, save, exactNodes);\n range = nodeSelection.getRange(docElement);\n exactNodes = nodeSelection.getNodeCollection(range);\n var cloneParentNodes = exactNodes.slice();\n this.clearBlocks(docElement, cloneParentNodes, endNode, nodeCutter, nodeSelection);\n if (isIDevice()) {\n setEditFrameFocus(endNode, selector);\n }\n this.reSelection(docElement, save, exactNodes);\n }\n if (cursorRange) {\n nodeSelection.setCursorPoint(docElement, range.endContainer, range.endOffset);\n }\n };\n ClearFormat.reSelection = function (docElement, save, exactNodes) {\n var selectionNodes = save.getInsertNodes(exactNodes);\n save.startContainer = save.getNodeArray(selectionNodes[0], true, docElement);\n save.startOffset = 0;\n save.endContainer = save.getNodeArray(selectionNodes[selectionNodes.length - 1], false, docElement);\n var endIndexNode = selectionNodes[selectionNodes.length - 1];\n save.endOffset = (endIndexNode.nodeType === 3) ? endIndexNode.textContent.length\n : endIndexNode.childNodes.length;\n save.restore();\n };\n ClearFormat.clearBlocks = function (docElement, nodes, endNode, nodeCutter, nodeSelection) {\n var parentNodes = [];\n for (var index = 0; index < nodes.length; index++) {\n if (this.BLOCK_TAGS.indexOf(nodes[index].nodeName.toLocaleLowerCase()) > -1\n && parentNodes.indexOf(nodes[index]) === -1) {\n parentNodes.push(nodes[index]);\n }\n else if ((this.BLOCK_TAGS.indexOf(nodes[index].parentNode.nodeName.toLocaleLowerCase()) > -1)\n && parentNodes.indexOf(nodes[index].parentNode) === -1\n && endNode !== nodes[index].parentNode) {\n parentNodes.push(nodes[index].parentNode);\n }\n }\n parentNodes = this.spliceParent(parentNodes, nodes)[0];\n parentNodes = this.removeParent(parentNodes);\n this.unWrap(docElement, parentNodes, nodeCutter, nodeSelection);\n };\n ClearFormat.spliceParent = function (parentNodes, nodes) {\n for (var index1 = 0; index1 < parentNodes.length; index1++) {\n var len = parentNodes[index1].childNodes.length;\n for (var index2 = 0; index2 < len; index2++) {\n if ((nodes.indexOf(parentNodes[index1].childNodes[index2]) > 0)\n && (parentNodes[index1].childNodes[index2].childNodes.length > 0)) {\n nodes = this.spliceParent([parentNodes[index1].childNodes[index2]], nodes)[1];\n }\n if ((nodes.indexOf(parentNodes[index1].childNodes[index2]) <= -1) &&\n (parentNodes[index1].childNodes[index2].textContent.trim() !== '')) {\n for (var index3 = 0; index3 < len; index3++) {\n if (nodes.indexOf(parentNodes[index1].childNodes[index3]) > -1) {\n nodes.splice(nodes.indexOf(parentNodes[index1].childNodes[index3]), 1);\n }\n }\n index2 = parentNodes[index1].childNodes.length;\n var parentIndex = parentNodes.indexOf(parentNodes[index1].parentNode);\n var nodeIndex = nodes.indexOf(parentNodes[index1].parentNode);\n if (parentIndex > -1) {\n parentNodes.splice(parentIndex, 1);\n }\n if (nodeIndex > -1) {\n nodes.splice(nodeIndex, 1);\n }\n var elementIndex = nodes.indexOf(parentNodes[index1]);\n if (elementIndex > -1) {\n nodes.splice(elementIndex, 1);\n }\n parentNodes.splice(index1, 1);\n index1--;\n }\n }\n }\n return [parentNodes, nodes];\n };\n ClearFormat.removeChild = function (parentNodes, parentNode) {\n var count = parentNode.childNodes.length;\n if (count > 0) {\n for (var index = 0; index < count; index++) {\n if (parentNodes.indexOf(parentNode.childNodes[index]) > -1) {\n parentNodes = this.removeChild(parentNodes, parentNode.childNodes[index]);\n parentNodes.splice(parentNodes.indexOf(parentNode.childNodes[index]), 1);\n }\n }\n }\n return parentNodes;\n };\n ClearFormat.removeParent = function (parentNodes) {\n for (var index = 0; index < parentNodes.length; index++) {\n if (parentNodes.indexOf(parentNodes[index].parentNode) > -1) {\n parentNodes = this.removeChild(parentNodes, parentNodes[index]);\n parentNodes.splice(index, 1);\n index--;\n }\n }\n return parentNodes;\n };\n ClearFormat.unWrap = function (docElement, parentNodes, nodeCutter, nodeSelection) {\n for (var index1 = 0; index1 < parentNodes.length; index1++) {\n if (this.NONVALID_TAGS.indexOf(parentNodes[index1].nodeName.toLowerCase()) > -1\n && parentNodes[index1].parentNode\n && this.NONVALID_PARENT_TAGS.indexOf(parentNodes[index1].parentNode.nodeName.toLowerCase()) > -1) {\n nodeSelection.setSelectionText(docElement, parentNodes[index1], parentNodes[index1], 0, parentNodes[index1].childNodes.length);\n InsertMethods.unwrap(nodeCutter.GetSpliceNode(nodeSelection.getRange(docElement), parentNodes[index1].parentNode));\n }\n if (parentNodes[index1].nodeName.toLocaleLowerCase() !== 'p') {\n if (this.NONVALID_PARENT_TAGS.indexOf(parentNodes[index1].nodeName.toLowerCase()) < 0\n && parentNodes[index1].parentNode.nodeName.toLocaleLowerCase() !== 'p'\n && !((parentNodes[index1].nodeName.toLocaleLowerCase() === 'blockquote'\n || parentNodes[index1].nodeName.toLocaleLowerCase() === 'li')\n && this.IGNORE_PARENT_TAGS.indexOf(parentNodes[index1].childNodes[0].nodeName.toLocaleLowerCase()) > -1)\n && !(parentNodes[index1].childNodes.length === 1\n && parentNodes[index1].childNodes[0].nodeName.toLocaleLowerCase() === 'p')) {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));\n }\n var childNodes = InsertMethods.unwrap(parentNodes[index1]);\n if (childNodes.length === 1\n && childNodes[0].parentNode.nodeName.toLocaleLowerCase() === 'p') {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));\n InsertMethods.unwrap(parentNodes[index1]);\n }\n for (var index2 = 0; index2 < childNodes.length; index2++) {\n if (this.NONVALID_TAGS.indexOf(childNodes[index2].nodeName.toLowerCase()) > -1) {\n this.unWrap(docElement, [childNodes[index2]], nodeCutter, nodeSelection);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].nodeName.toLocaleLowerCase() !== 'p') {\n var blockNodes = this.removeParent([childNodes[index2]]);\n this.unWrap(docElement, blockNodes, nodeCutter, nodeSelection);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].parentNode.nodeName.toLocaleLowerCase() ===\n childNodes[index2].nodeName.toLocaleLowerCase()) {\n InsertMethods.unwrap(childNodes[index2]);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].nodeName.toLocaleLowerCase() === 'p') {\n InsertMethods.Wrap(childNodes[index2], docElement.createElement(this.defaultTag));\n InsertMethods.unwrap(childNodes[index2]);\n }\n }\n }\n else {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));\n InsertMethods.unwrap(parentNodes[index1]);\n }\n }\n };\n ClearFormat.clearInlines = function (textNodes, nodes, range, nodeCutter, \n // eslint-disable-next-line\n endNode) {\n for (var index = 0; index < textNodes.length; index++) {\n var currentInlineNode = textNodes[index];\n var currentNode = void 0;\n while (!this.domNode.isBlockNode(currentInlineNode) &&\n (currentInlineNode.parentElement && !currentInlineNode.parentElement.classList.contains('e-img-inner'))) {\n currentNode = currentInlineNode;\n currentInlineNode = currentInlineNode.parentElement;\n }\n if (currentNode &&\n IsFormatted.inlineTags.indexOf(currentNode.nodeName.toLocaleLowerCase()) > -1) {\n nodeCutter.GetSpliceNode(range, currentNode);\n this.removeInlineParent(currentNode);\n }\n }\n };\n ClearFormat.removeInlineParent = function (textNodes) {\n var nodes = InsertMethods.unwrap(textNodes);\n for (var index = 0; index < nodes.length; index++) {\n if (nodes[index].parentNode.childNodes.length === 1 && !nodes[index].parentNode.classList.contains('e-img-inner')\n && IsFormatted.inlineTags.indexOf(nodes[index].parentNode.nodeName.toLocaleLowerCase()) > -1) {\n this.removeInlineParent(nodes[index].parentNode);\n }\n else if (IsFormatted.inlineTags.indexOf(nodes[index].nodeName.toLocaleLowerCase()) > -1) {\n this.removeInlineParent(nodes[index]);\n }\n }\n };\n ClearFormat.BLOCK_TAGS = ['address', 'article', 'aside', 'blockquote',\n 'details', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer',\n 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'li', 'main', 'nav',\n 'noscript', 'ol', 'p', 'pre', 'section', 'ul'];\n ClearFormat.NONVALID_PARENT_TAGS = ['thead', 'tbody', 'ul', 'ol', 'table', 'tfoot', 'tr'];\n ClearFormat.IGNORE_PARENT_TAGS = ['ul', 'ol', 'table'];\n ClearFormat.NONVALID_TAGS = ['thead', 'tbody', 'figcaption', 'td', 'tr', 'th', 'tfoot', 'figcaption', 'li'];\n ClearFormat.defaultTag = 'p';\n return ClearFormat;\n}());\nexport { ClearFormat };\n","import * as CONSTANT from './../base/constant';\nimport { ClearFormat } from './clearformat';\nimport * as EVENTS from './../../common/constant';\n/**\n * Clear Format EXEC internal component\n *\n * @hidden\n\n */\nvar ClearFormatExec = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @returns {void}\n * @hidden\n\n */\n function ClearFormatExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ClearFormatExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.CLEAR_TYPE, this.applyClear, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n ClearFormatExec.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'clear-format':\n this.applyClear({ subCommand: 'ClearFormat', callBack: e.callBack, enterAction: e.enterAction });\n e.event.preventDefault();\n break;\n }\n };\n ClearFormatExec.prototype.applyClear = function (e) {\n if (e.subCommand === 'ClearFormat') {\n ClearFormat.clear(this.parent.currentDocument, this.parent.editableElement, e.enterAction, e.selector, e.subCommand);\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n event: e.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n }\n };\n return ClearFormatExec;\n}());\nexport { ClearFormatExec };\n","import { debounce, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { NodeSelection } from './../../selection/selection';\nimport * as EVENTS from './../../common/constant';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\n/**\n * `Undo` module is used to handle undo actions.\n */\nvar UndoRedoManager = /** @class */ (function () {\n function UndoRedoManager(parent, options) {\n this.undoRedoStack = [];\n this.parent = parent;\n this.undoRedoSteps = !isNullOrUndefined(options) ? options.undoRedoSteps : 30;\n this.undoRedoTimer = !isNullOrUndefined(options) ? options.undoRedoTimer : 300;\n this.addEventListener();\n }\n UndoRedoManager.prototype.addEventListener = function () {\n var debounceListener = debounce(this.keyUp, this.undoRedoTimer);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, debounceListener, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDown, this);\n this.parent.observer.on(EVENTS.ACTION, this.onAction, this);\n this.parent.observer.on(EVENTS.MODEL_CHANGED_PLUGIN, this.onPropertyChanged, this);\n };\n UndoRedoManager.prototype.onPropertyChanged = function (props) {\n for (var _i = 0, _a = Object.keys(props.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'undoRedoSteps':\n this.undoRedoSteps = props.newProp.undoRedoSteps;\n break;\n case 'undoRedoTimer':\n this.undoRedoTimer = props.newProp.undoRedoTimer;\n break;\n }\n }\n };\n UndoRedoManager.prototype.removeEventListener = function () {\n this.parent.observer.off(EVENTS.KEY_UP_HANDLER, this.keyUp);\n this.parent.observer.off(EVENTS.KEY_DOWN_HANDLER, this.keyDown);\n this.parent.observer.off(EVENTS.ACTION, this.onAction);\n };\n /**\n * onAction method\n *\n * @param {IHtmlSubCommands} e - specifies the sub command\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.onAction = function (e) {\n if (e.subCommand === 'Undo') {\n this.undo(e);\n }\n else {\n this.redo(e);\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.destroy = function () {\n this.removeEventListener();\n };\n UndoRedoManager.prototype.keyDown = function (e) {\n var event = e.event;\n // eslint-disable-next-line\n var proxy = this;\n switch (event.action) {\n case 'undo':\n event.preventDefault();\n proxy.undo(e);\n break;\n case 'redo':\n event.preventDefault();\n proxy.redo(e);\n break;\n }\n };\n UndoRedoManager.prototype.keyUp = function (e) {\n if (e.event.keyCode !== 17 && !e.event.ctrlKey) {\n this.saveData(e);\n }\n };\n UndoRedoManager.prototype.getTextContentFromFragment = function (fragment) {\n var textContent = '';\n for (var i = 0; i < fragment.childNodes.length; i++) {\n var childNode = fragment.childNodes[i];\n if (childNode.nodeType === Node.TEXT_NODE) {\n textContent += childNode.textContent;\n }\n else if (childNode.nodeType === Node.ELEMENT_NODE) {\n textContent += this.getTextContentFromFragment(childNode);\n }\n }\n return textContent;\n };\n UndoRedoManager.prototype.isElementStructureEqual = function (previousFragment, currentFragment) {\n if (previousFragment.childNodes.length !== currentFragment.childNodes.length) {\n return false;\n }\n for (var i = 0; i < previousFragment.childNodes.length; i++) {\n var previousFragmentNode = previousFragment.childNodes[i];\n var currentFragmentNode = currentFragment.childNodes[i];\n if (!previousFragmentNode || !currentFragmentNode) {\n return false;\n }\n if (previousFragmentNode.nodeType !== currentFragmentNode.nodeType) {\n return false;\n }\n if (previousFragmentNode.outerHTML !== currentFragmentNode.outerHTML) {\n return false;\n }\n }\n return true;\n };\n /**\n * RTE collection stored html format.\n *\n * @function saveData\n * @param {KeyboardEvent} e - specifies the keyboard event\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.saveData = function (e) {\n var range = new NodeSelection().getRange(this.parent.currentDocument);\n var currentContainer = this.parent.editableElement === range.startContainer.parentElement ?\n range.startContainer.parentElement : range.startContainer;\n for (var i = currentContainer.childNodes.length - 1; i >= 0; i--) {\n if (!isNullOrUndefined(currentContainer.childNodes[i]) && currentContainer.childNodes[i].nodeName === '#text' &&\n currentContainer.childNodes[i].textContent.length === 0 && currentContainer.childNodes[i].nodeName !== 'IMG' &&\n currentContainer.childNodes[i].nodeName !== 'BR' && currentContainer.childNodes[i].nodeName && 'HR') {\n detach(currentContainer.childNodes[i]);\n }\n }\n range = new NodeSelection().getRange(this.parent.currentDocument);\n var save = new NodeSelection().save(range, this.parent.currentDocument);\n var clonedElement = this.parent.editableElement.cloneNode(true);\n var fragment = document.createDocumentFragment();\n while (clonedElement.firstChild) {\n fragment.appendChild(clonedElement.firstChild);\n }\n var changEle = { text: fragment, range: save };\n if (this.undoRedoStack.length >= this.steps) {\n this.undoRedoStack = this.undoRedoStack.slice(0, this.steps + 1);\n }\n if (this.undoRedoStack.length > 1 && (this.undoRedoStack[this.undoRedoStack.length - 1].range.range.collapsed === range.collapsed)\n && (this.undoRedoStack[this.undoRedoStack.length - 1].range.startOffset === save.range.startOffset) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].range.endOffset === save.range.endOffset) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].range.range.startContainer === save.range.startContainer) &&\n (this.getTextContentFromFragment(this.undoRedoStack[this.undoRedoStack.length - 1].text).trim() ===\n this.getTextContentFromFragment(changEle.text).trim()) &&\n this.isElementStructureEqual(this.undoRedoStack[this.undoRedoStack.length - 1].text, changEle.text)) {\n return;\n }\n this.undoRedoStack.push(changEle);\n this.steps = this.undoRedoStack.length - 1;\n if (this.steps > this.undoRedoSteps) {\n this.undoRedoStack.shift();\n this.steps--;\n }\n if (e && e.callBack) {\n e.callBack();\n }\n };\n /**\n * Undo the editable text.\n *\n * @function undo\n * @param {IHtmlSubCommands} e - specifies the sub commands\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.undo = function (e) {\n if (this.steps > 0) {\n var range = this.undoRedoStack[this.steps - 1].range;\n var removedContent = this.undoRedoStack[this.steps - 1].text;\n this.parent.editableElement.innerHTML = '';\n this.parent.editableElement.appendChild(removedContent.cloneNode(true));\n this.parent.editableElement.focus();\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n range.restore();\n this.steps--;\n if (e.callBack) {\n e.callBack({\n requestType: 'Undo',\n editorMode: 'HTML',\n range: range,\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument),\n event: e.event\n });\n }\n }\n };\n /**\n * Redo the editable text.\n *\n * @param {IHtmlSubCommands} e - specifies the sub commands\n * @function redo\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.redo = function (e) {\n if (this.undoRedoStack[this.steps + 1] != null) {\n var range = this.undoRedoStack[this.steps + 1].range;\n var addedContent = this.undoRedoStack[this.steps + 1].text;\n this.parent.editableElement.innerHTML = '';\n this.parent.editableElement.appendChild(addedContent.cloneNode(true));\n this.parent.editableElement.focus();\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n range.restore();\n this.steps++;\n if (e.callBack) {\n e.callBack({\n requestType: 'Redo',\n editorMode: 'HTML',\n range: range,\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument),\n event: e.event\n });\n }\n }\n };\n /**\n * getUndoStatus method\n *\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n UndoRedoManager.prototype.getUndoStatus = function () {\n var status = { undo: false, redo: false };\n if (this.steps > 0) {\n status.undo = true;\n }\n if (this.undoRedoStack[this.steps + 1] != null) {\n status.redo = true;\n }\n return status;\n };\n return UndoRedoManager;\n}());\nexport { UndoRedoManager };\n","import * as EVENTS from '../../common/constant';\nimport { createElement, isNullOrUndefined as isNOU, detach, addClass, Browser } from '@syncfusion/ej2-base';\nimport { PASTE_SOURCE } from '../base/constant';\n/**\n * PasteCleanup for MsWord content\n *\n * @hidden\n\n */\nvar MsWordPaste = /** @class */ (function () {\n function MsWordPaste(parent) {\n this.olData = [\n 'decimal',\n 'lower-alpha',\n 'lower-roman',\n 'upper-alpha',\n 'upper-roman',\n 'lower-greek'\n ];\n this.ulData = [\n 'disc',\n 'square',\n 'circle',\n 'disc',\n 'square',\n 'circle'\n ];\n this.ignorableNodes = ['A', 'APPLET', 'B', 'BLOCKQUOTE', 'BR',\n 'BUTTON', 'CENTER', 'CODE', 'COL', 'COLGROUP', 'DD', 'DEL', 'DFN', 'DIR', 'DIV',\n 'DL', 'DT', 'EM', 'FIELDSET', 'FONT', 'FORM', 'FRAME', 'FRAMESET', 'H1', 'H2',\n 'H3', 'H4', 'H5', 'H6', 'HR', 'I', 'IMG', 'IFRAME', 'INPUT', 'INS', 'LABEL',\n 'LI', 'OL', 'OPTION', 'P', 'PARAM', 'PRE', 'Q', 'S', 'SELECT', 'SPAN', 'STRIKE',\n 'STRONG', 'SUB', 'SUP', 'TABLE', 'TBODY', 'TD', 'TEXTAREA', 'TFOOT', 'TH',\n 'THEAD', 'TITLE', 'TR', 'TT', 'U', 'UL'];\n this.blockNode = ['div', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n 'address', 'blockquote', 'button', 'center', 'dd', 'dir', 'dl', 'dt', 'fieldset',\n 'frameset', 'hr', 'iframe', 'isindex', 'li', 'map', 'menu', 'noframes', 'noscript',\n 'object', 'ol', 'pre', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'ul',\n 'header', 'article', 'nav', 'footer', 'section', 'aside', 'main', 'figure', 'figcaption'];\n this.borderStyle = ['border-top', 'border-right', 'border-bottom', 'border-left'];\n this.upperRomanNumber = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX',\n 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX'];\n this.lowerRomanNumber = ['i', 'ii', 'iii', 'iv', 'v', 'vi', 'vii', 'viii', 'ix',\n 'x', 'xi', 'xii', 'xiii', 'xiv', 'xv', 'xvi', 'xvii', 'xviii', 'xix', 'xx'];\n this.lowerGreekNumber = ['α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ',\n 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω'];\n this.removableElements = ['o:p', 'style', 'w:sdt'];\n this.listContents = [];\n this.cropImageDimensions = [];\n this.parent = parent;\n this.addEventListener();\n }\n MsWordPaste.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.MS_WORD_CLEANUP_PLUGIN, this.wordCleanup, this);\n };\n MsWordPaste.prototype.wordCleanup = function (e) {\n var wordPasteStyleConfig = !isNOU(e.allowedStylePropertiesArray) ? e.allowedStylePropertiesArray : [];\n var listNodes = [];\n var tempHTMLContent = e.args.clipboardData.getData('text/HTML');\n var rtfData = e.args.clipboardData.getData('text/rtf');\n var elm = createElement('p');\n elm.setAttribute('id', 'MSWord-Content');\n elm.innerHTML = tempHTMLContent;\n this.addDoubleBr(elm);\n var patern = /class='?Mso|style='[^ ]*\\bmso-/i;\n var patern2 = /class=\"?Mso|style=\"[^ ]*\\bmso-/i;\n var patern3 = /(class=\"?Mso|class='?Mso|class=\"?Xl|class='?Xl|class=Xl|style=\"[^\"]*\\bmso-|style='[^']*\\bmso-|w:WordDocument)/gi;\n var pattern4 = /style='mso-width-source:/i;\n if (patern.test(tempHTMLContent) || patern2.test(tempHTMLContent) || patern3.test(tempHTMLContent) ||\n pattern4.test(tempHTMLContent)) {\n var source = this.findSource(elm);\n tempHTMLContent = tempHTMLContent.replace(/]+>/i, '');\n this.addListClass(elm);\n listNodes = this.cleanUp(elm, listNodes);\n if (!isNOU(listNodes[0]) && listNodes[0].parentElement.tagName !== 'UL' &&\n listNodes[0].parentElement.tagName !== 'OL') {\n this.listConverter(listNodes);\n }\n this.imageConversion(elm, rtfData);\n this.cleanList(elm, 'UL');\n this.cleanList(elm, 'OL');\n this.styleCorrection(elm, wordPasteStyleConfig);\n this.removingComments(elm);\n this.removeUnwantedElements(elm);\n this.removeEmptyElements(elm);\n this.removeEmptyAnchorTag(elm);\n this.breakLineAddition(elm);\n this.processMargin(elm);\n this.removeClassName(elm);\n if (pattern4.test(tempHTMLContent)) {\n this.addTableBorderClass(elm);\n }\n e.callBack(elm.innerHTML, this.cropImageDimensions, source);\n }\n else {\n e.callBack(elm.innerHTML);\n }\n };\n MsWordPaste.prototype.addDoubleBr = function (elm) {\n var newline = elm.querySelector('.Apple-interchange-newline');\n if (!isNOU(newline) && Browser.userAgent.indexOf('Chrome') !== -1 && newline.parentElement.nodeName === 'P' && elm !== newline.parentElement) {\n for (var i = 0; i < elm.childNodes.length; i++) {\n // eslint-disable-next-line\n var node = elm.childNodes[i];\n if (node.nodeType === Node.COMMENT_NODE && node.nodeValue.includes('StartFragment')) {\n var newElement = document.createElement('p');\n newElement.innerHTML = '
      ';\n var cssText = newline.parentElement.style.cssText;\n var currentStyle = newElement.getAttribute('style') || '';\n var newStyle = currentStyle + cssText;\n newElement.setAttribute('style', newStyle);\n elm.insertBefore(newElement, node.nextSibling);\n detach(newline);\n break;\n }\n }\n }\n };\n MsWordPaste.prototype.cleanList = function (elm, listTag) {\n var replacableElem = elm.querySelectorAll(listTag + ' div');\n for (var j = replacableElem.length - 1; j >= 0; j--) {\n var parentElem = replacableElem[j].parentNode;\n while (replacableElem[j].firstChild) {\n parentElem.insertBefore(replacableElem[j].firstChild, replacableElem[j]);\n }\n var closestListElem = this.findClosestListElem(replacableElem[j]);\n if (closestListElem) {\n this.insertAfter(replacableElem[j], closestListElem);\n }\n }\n };\n MsWordPaste.prototype.insertAfter = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n MsWordPaste.prototype.findClosestListElem = function (listElem) {\n var closestListElem;\n while (!isNOU(listElem)) {\n listElem = !isNOU(listElem.closest('ul')) && listElem.tagName !== 'UL' ?\n listElem.closest('ul') : (listElem.tagName !== 'OL' ? listElem.closest('ol') : null);\n closestListElem = !isNOU(listElem) ? listElem : closestListElem;\n }\n return closestListElem;\n };\n MsWordPaste.prototype.addListClass = function (elm) {\n var allNodes = elm.querySelectorAll('*');\n for (var index = 0; index < allNodes.length; index++) {\n if (!isNOU(allNodes[index].getAttribute('style')) && allNodes[index].getAttribute('style').replace(/ /g, '').replace('\\n', '').indexOf('mso-list:l') >= 0 &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') === -1 &&\n allNodes[index].tagName.charAt(0) !== 'H' && allNodes[index].tagName !== 'LI' &&\n allNodes[index].tagName !== 'OL' && allNodes[index].tagName !== 'UL') {\n allNodes[index].classList.add('msolistparagraph');\n }\n }\n };\n MsWordPaste.prototype.addTableBorderClass = function (elm) {\n var allTableElm = elm.querySelectorAll('table');\n var hasTableBorder = false;\n for (var i = 0; i < allTableElm.length; i++) {\n for (var j = 0; j < this.borderStyle.length; j++) {\n if (allTableElm[i].innerHTML.indexOf(this.borderStyle[j]) >= 0) {\n hasTableBorder = true;\n break;\n }\n }\n if (hasTableBorder) {\n allTableElm[i].classList.add('e-rte-table-border');\n hasTableBorder = false;\n }\n }\n };\n MsWordPaste.prototype.imageConversion = function (elm, rtfData) {\n this.checkVShape(elm);\n var imgElem = elm.querySelectorAll('img');\n for (var i = 0; i < imgElem.length; i++) {\n if (!isNOU(imgElem[i].getAttribute('v:shapes')) &&\n imgElem[i].getAttribute('v:shapes').indexOf('Picture') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('圖片') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('Grafik') < 0 &&\n imgElem[i].getAttribute('v:shapes').toLowerCase().indexOf('image') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('Graphic') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('_x0000_s') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('_x0000_i') < 0) {\n imgElem[i].classList.add('e-rte-image-unsupported');\n }\n imgElem[i].removeAttribute('v:shapes');\n }\n imgElem = elm.querySelectorAll('img');\n var imgSrc = [];\n var base64Src = [];\n var imgName = [];\n // eslint-disable-next-line\n var linkRegex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (imgElem.length > 0) {\n for (var i = 0; i < imgElem.length; i++) {\n imgSrc.push(imgElem[i].getAttribute('src'));\n imgName.push(imgElem[i].getAttribute('src').split('/')[imgElem[i].getAttribute('src').split('/').length - 1].split('.')[0]);\n }\n var hexValue = this.hexConversion(rtfData);\n for (var i = 0; i < hexValue.length; i++) {\n base64Src.push({\n base64Data: !isNOU(hexValue[i].hex) ? this.convertToBase64(hexValue[i]) : null,\n isCroppedImage: hexValue[i].isCroppedImage\n });\n if (hexValue[i].isCroppedImage) {\n this.cropImageDimensions.push({\n goalWidth: hexValue[i].goalWidth,\n goalHeight: hexValue[i].goalHeight,\n cropLength: hexValue[i].cropLength,\n cropTop: hexValue[i].cropTop,\n cropR: hexValue[i].cropR,\n cropB: hexValue[i].cropB\n });\n }\n }\n imgElem = elm.querySelectorAll('img:not(.e-rte-image-unsupported');\n for (var i = 0; i < imgElem.length; i++) {\n if (imgSrc[i].match(linkRegex)) {\n imgElem[i].setAttribute('src', imgSrc[i]);\n }\n else {\n if (!isNOU(base64Src[i]) && !isNOU(base64Src[i].base64Data)) {\n imgElem[i].setAttribute('src', base64Src[i].base64Data);\n }\n else {\n imgElem[i].removeAttribute('src');\n imgElem[i].classList.add('e-rte-image-unsupported');\n }\n if (!isNOU(base64Src[i]) && base64Src[i].isCroppedImage) {\n imgElem[i].classList.add('e-img-cropped');\n }\n }\n imgElem[i].setAttribute('id', 'msWordImg-' + imgName[i]);\n }\n imgElem = elm.querySelectorAll('.e-rte-image-unsupported');\n for (var i = 0; i < imgElem.length; i++) {\n imgElem[i].removeAttribute('src');\n }\n }\n };\n MsWordPaste.prototype.checkVShape = function (elm) {\n var allNodes = elm.querySelectorAll('*');\n for (var i = 0; i < allNodes.length; i++) {\n switch (allNodes[i].nodeName) {\n case 'V:SHAPETYPE':\n detach(allNodes[i]);\n break;\n case 'V:SHAPE':\n if (allNodes[i].firstElementChild.nodeName === 'V:IMAGEDATA') {\n var src = allNodes[i].firstElementChild.getAttribute('src');\n var imgElement = createElement('img');\n imgElement.setAttribute('src', src);\n allNodes[i].parentElement.insertBefore(imgElement, allNodes[i]);\n detach(allNodes[i]);\n }\n break;\n }\n }\n };\n MsWordPaste.prototype.convertToBase64 = function (hexValue) {\n var byteArr = this.conHexStringToBytes(hexValue.hex);\n var base64String = this.conBytesToBase64(byteArr);\n var base64 = hexValue.type ? 'data:' + hexValue.type + ';base64,' + base64String : null;\n return base64;\n };\n MsWordPaste.prototype.conBytesToBase64 = function (byteArr) {\n var base64Str = '';\n var base64Char = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var byteArrLen = byteArr.length;\n for (var i = 0; i < byteArrLen; i += 3) {\n var array3 = byteArr.slice(i, i + 3);\n var array3length = array3.length;\n var array4 = [];\n if (array3length < 3) {\n for (var j = array3length; j < 3; j++) {\n array3[j] = 0;\n }\n }\n array4[0] = (array3[0] & 0xFC) >> 2;\n array4[1] = ((array3[0] & 0x03) << 4) | (array3[1] >> 4);\n array4[2] = ((array3[1] & 0x0F) << 2) | ((array3[2] & 0xC0) >> 6);\n array4[3] = array3[2] & 0x3F;\n for (var j = 0; j < 4; j++) {\n if (j <= array3length) {\n base64Str += base64Char.charAt(array4[j]);\n }\n else {\n base64Str += '=';\n }\n }\n }\n return base64Str;\n };\n MsWordPaste.prototype.conHexStringToBytes = function (hex) {\n var byteArr = [];\n var byteArrLen = hex.length / 2;\n for (var i = 0; i < byteArrLen; i++) {\n byteArr.push(parseInt(hex.substr(i * 2, 2), 16));\n }\n return byteArr;\n };\n MsWordPaste.prototype.hexConversion = function (rtfData) {\n // eslint-disable-next-line\n var picHead = /\\{\\\\pict[\\s\\S]+?\\\\bliptag\\-?\\d+(\\\\blipupi\\-?\\d+)?(\\{\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s\\}]*?/;\n // eslint-disable-next-line security/detect-non-literal-regexp\n var pic = new RegExp('(?:(' + picHead.source + '))([\\\\da-fA-F\\\\s]+)\\\\}', 'g');\n var fullImg = rtfData.match(pic);\n var imgType;\n var result = [];\n if (!isNOU(fullImg)) {\n for (var i = 0; i < fullImg.length; i++) {\n if (fullImg[i].indexOf('fIsBullet') !== -1 && fullImg[i].indexOf('wzName') === -1) {\n continue;\n }\n var isCroppedImage = false;\n var goalWidth = 0;\n var goalHeight = 0;\n var cropLength = 0;\n var cropTop = 0;\n var cropR = 0;\n var cropB = 0;\n if (picHead.test(fullImg[i])) {\n if (fullImg[i].indexOf('\\\\pngblip') !== -1) {\n imgType = 'image/png';\n }\n else if (fullImg[i].indexOf('\\\\jpegblip') !== -1) {\n imgType = 'image/jpeg';\n }\n else if (fullImg[i].indexOf('\\\\emfblip') !== -1) {\n imgType = null;\n }\n else {\n continue;\n }\n isCroppedImage = ((this.extractCropValue('cropl', fullImg[i]) > 0 &&\n this.extractCropValue('cropt', fullImg[i]) > 0) ||\n this.extractCropValue('cropr', fullImg[i]) > 0 ||\n this.extractCropValue('cropb', fullImg[i])) ? true : false;\n if (isCroppedImage) {\n goalWidth = this.extractCropValue('wgoal', fullImg[i]);\n goalHeight = this.extractCropValue('hgoal', fullImg[i]);\n cropLength = this.extractCropValue('cropl', fullImg[i]);\n cropTop = this.extractCropValue('cropt', fullImg[i]);\n cropR = this.extractCropValue('cropr', fullImg[i]);\n cropB = this.extractCropValue('cropb', fullImg[i]);\n }\n result.push({\n hex: imgType ? fullImg[i].replace(picHead, '').replace(/[^\\da-fA-F]/g, '') : null,\n type: imgType,\n isCroppedImage: isCroppedImage,\n goalWidth: goalWidth,\n goalHeight: goalHeight,\n cropLength: cropLength,\n cropTop: cropTop,\n cropR: cropR,\n cropB: cropB\n });\n }\n }\n }\n return result;\n };\n MsWordPaste.prototype.extractCropValue = function (crop, rtfData) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n var result = new RegExp('\\\\\\\\pic' + crop + '(\\\\-?\\\\d+)\\\\\\\\').exec(rtfData.replace(/\\r\\n\\\\/g, '\\\\').replace(/\\n/g, '\\\\'))[1];\n return parseInt(result, 10);\n };\n MsWordPaste.prototype.removeClassName = function (elm) {\n var elmWithClass = elm.querySelectorAll('*[class]:not(.e-img-cropped):not(.e-rte-image-unsupported)');\n for (var i = 0; i < elmWithClass.length; i++) {\n elmWithClass[i].removeAttribute('class');\n }\n };\n MsWordPaste.prototype.breakLineAddition = function (elm) {\n var allElements = elm.querySelectorAll('*');\n for (var i = 0; i < allElements.length; i++) {\n if (allElements[i].children.length === 0 && allElements[i].innerHTML === ' ' &&\n (allElements[i].innerHTML === ' ' && !allElements[i].closest('li')) &&\n !allElements[i].closest('td') && (allElements[i].nodeName !== 'SPAN' ||\n allElements[i].nodeName === 'SPAN' && (isNOU(allElements[i].previousElementSibling) &&\n isNOU(allElements[i].nextElementSibling)))) {\n var detachableElement = this.findDetachElem(allElements[i]);\n var brElement = createElement('br');\n var hasNbsp = detachableElement.textContent.length > 0 && detachableElement.textContent.match(/\\u00a0/g)\n && detachableElement.textContent.match(/\\u00a0/g).length > 0;\n if (!hasNbsp && !isNOU(detachableElement.parentElement)) {\n detachableElement.parentElement.insertBefore(brElement, detachableElement);\n detach(detachableElement);\n }\n }\n }\n };\n MsWordPaste.prototype.findDetachElem = function (element) {\n var removableElement;\n if (!isNOU(element.parentElement) &&\n element.parentElement.textContent.trim() === '' && element.parentElement.tagName !== 'TD' &&\n isNOU(element.parentElement.querySelector('img'))) {\n removableElement = this.findDetachElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n return removableElement;\n };\n MsWordPaste.prototype.removeUnwantedElements = function (elm) {\n var styleElm = elm.querySelector('style');\n if (!isNOU(styleElm)) {\n detach(styleElm);\n }\n var innerElement = elm.innerHTML;\n for (var i = 0; i < this.removableElements.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regExpStartElem = new RegExp('<' + this.removableElements[i] + '\\\\s*[^>]*>', 'g');\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regExpEndElem = new RegExp('', 'g');\n innerElement = innerElement.replace(regExpStartElem, '');\n innerElement = innerElement.replace(regExpEndElem, '');\n }\n elm.innerHTML = innerElement;\n elm.querySelectorAll(':empty');\n };\n MsWordPaste.prototype.findDetachEmptyElem = function (element) {\n var removableElement;\n if (!isNOU(element.parentElement)) {\n var hasNbsp = element.parentElement.textContent.length > 0 && element.parentElement.textContent.match(/\\u00a0/g)\n && element.parentElement.textContent.match(/\\u00a0/g).length > 0;\n if (!hasNbsp && element.parentElement.textContent.trim() === '' &&\n element.parentElement.getAttribute('id') !== 'MSWord-Content' &&\n !(this.hasParentWithClass(element, 'MsoListParagraph')) &&\n isNOU(element.parentElement.querySelector('img'))) {\n removableElement = this.findDetachEmptyElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n }\n else {\n removableElement = null;\n }\n return removableElement;\n };\n MsWordPaste.prototype.hasParentWithClass = function (element, className) {\n var currentParentElem = element.parentElement;\n while (!isNOU(currentParentElem)) {\n if (currentParentElem.classList.contains(className)) {\n return true;\n }\n currentParentElem = currentParentElem.parentElement;\n }\n return false;\n };\n MsWordPaste.prototype.removeEmptyElements = function (element) {\n var emptyElements = element.querySelectorAll(':empty');\n for (var i = 0; i < emptyElements.length; i++) {\n if (!isNOU(emptyElements[i].closest('td')) &&\n !isNOU(emptyElements[i].closest('td').querySelector('.MsoNormal'))) {\n emptyElements[i].innerHTML = '-';\n }\n var lineWithDiv = true;\n if (emptyElements[i].tagName === 'DIV') {\n lineWithDiv = emptyElements[i].style.borderBottom === 'none' ||\n emptyElements[i].style.borderBottom === '' ? true : false;\n }\n if (emptyElements[i].tagName !== 'IMG' && emptyElements[i].tagName !== 'BR' &&\n emptyElements[i].tagName !== 'IFRAME' && emptyElements[i].tagName !== 'TD' &&\n emptyElements[i].tagName !== 'HR' && lineWithDiv) {\n var detachableElement = this.findDetachEmptyElem(emptyElements[i]);\n if (!isNOU(detachableElement)) {\n detach(detachableElement);\n }\n }\n }\n };\n MsWordPaste.prototype.styleCorrection = function (elm, wordPasteStyleConfig) {\n var styleElement = elm.querySelectorAll('style');\n var styles = [];\n if (styleElement.length > 0) {\n if (!isNOU(styleElement[0].innerHTML.match(/[\\S ]+\\s+{[\\s\\S]+?}/gi))) {\n styles = styleElement[0].innerHTML.match(/[\\S ]+\\s+{[\\s\\S]+?}/gi);\n }\n else if (styleElement.length > 1) {\n styles = styleElement[1].innerHTML.match(/[\\S ]+\\s+{[\\s\\S]+?}/gi);\n }\n var styleClassObject_1 = !isNOU(styles) ? this.findStyleObject(styles) : null;\n if (!isNOU(styleClassObject_1)) {\n var keys = Object.keys(styleClassObject_1);\n var values = keys.map(function (key) {\n return styleClassObject_1[\"\" + key];\n });\n values = this.removeUnwantedStyle(values, wordPasteStyleConfig);\n this.filterStyles(elm, wordPasteStyleConfig);\n var resultElem = void 0;\n var fromClass = false;\n for (var i = 0; i < keys.length; i++) {\n if (keys[i].split('.')[0] === '') {\n resultElem = elm.getElementsByClassName(keys[i].split('.')[1]);\n fromClass = true;\n }\n else if (keys[i].split('.').length === 1 && keys[i].split('.')[0].indexOf('@') >= 0) {\n continue;\n }\n else if (keys[i].split('.').length === 1 && keys[i].split('.')[0].indexOf('@') < 0) {\n resultElem = elm.getElementsByTagName(keys[i]);\n }\n else {\n resultElem = elm.querySelectorAll(keys[i]);\n }\n for (var j = 0; j < resultElem.length; j++) {\n if (resultElem[j].closest('li') && keys[i] === 'p') {\n continue;\n }\n var styleProperty = resultElem[j].getAttribute('style');\n if (!isNOU(styleProperty) && styleProperty.trim() !== '') {\n var valueSplit = values[i].split(';');\n if (!fromClass) {\n for (var k = 0; k < valueSplit.length; k++) {\n if (styleProperty.indexOf(valueSplit[k].split(':')[0]) >= 0) {\n valueSplit.splice(k, 1);\n k--;\n }\n }\n }\n var changedValue = styleProperty + valueSplit.join(';') + ';';\n resultElem[j].setAttribute('style', changedValue);\n }\n else {\n values[i] = values[i].replace(/text-indent:-(.*?)(?=;|$)/gm, '');\n resultElem[j].setAttribute('style', values[i]);\n }\n }\n fromClass = false;\n }\n var listClass = ['MsoListParagraphCxSpFirst', 'MsoListParagraphCxSpMiddle', 'MsoListParagraphCxSpLast'];\n for (var i = 0; i < listClass.length; i++) {\n if (keys.indexOf('li.' + listClass[i]) > -1) {\n var olULElems = elm.querySelectorAll('ol.' + listClass[i] + ', ul.' + listClass[i]);\n for (var j = 0; j < olULElems.length; j++) {\n var styleProperty = olULElems[j].getAttribute('style');\n if (!isNOU(styleProperty) && styleProperty.trim() !== '' && olULElems[j].style.marginLeft !== '') {\n var valueSplit = values[keys.indexOf('li.' + listClass[i])].split(';');\n for (var k = 0; k < valueSplit.length; k++) {\n if ('margin-left'.indexOf(valueSplit[k].split(':')[0]) >= 0) {\n if (!isNOU(valueSplit[k].split(':')[1]) &&\n valueSplit[k].split(':')[1].indexOf('in') >= 0 &&\n olULElems[j].style.marginLeft.indexOf('in') >= 0) {\n var classStyle = parseFloat(valueSplit[k].split(':')[1].split('in')[0]);\n var inlineStyle = parseFloat(olULElems[j].style.marginLeft.split('in')[0]);\n olULElems[j].style.marginLeft = (inlineStyle - classStyle) + 'in';\n }\n }\n }\n }\n }\n }\n }\n }\n }\n };\n MsWordPaste.prototype.filterStyles = function (elm, wordPasteStyleConfig) {\n var elmWithStyles = elm.querySelectorAll('*[style]');\n for (var i = 0; i < elmWithStyles.length; i++) {\n var elemStyleProperty = elmWithStyles[i].getAttribute('style').split(';');\n var styleValue = '';\n for (var j = 0; j < elemStyleProperty.length; j++) {\n if (wordPasteStyleConfig.indexOf(elemStyleProperty[j].split(':')[0].trim()) >= 0) {\n styleValue += elemStyleProperty[j] + ';';\n }\n }\n elmWithStyles[i].setAttribute('style', styleValue);\n }\n };\n MsWordPaste.prototype.removeUnwantedStyle = function (values, wordPasteStyleConfig) {\n for (var i = 0; i < values.length; i++) {\n var styleValues = values[i].split(';');\n values[i] = '';\n for (var j = 0; j < styleValues.length; j++) {\n if (wordPasteStyleConfig.indexOf(styleValues[j].split(':')[0]) >= 0) {\n values[i] += styleValues[j] + ';';\n }\n }\n }\n return values;\n };\n MsWordPaste.prototype.findStyleObject = function (styles) {\n var styleClassObject = {};\n for (var i = 0; i < styles.length; i++) {\n var tempStyle = styles[i];\n var classNameCollection = tempStyle.replace(/([\\S ]+\\s+){[\\s\\S]+?}/gi, '$1');\n var stylesCollection = tempStyle.replace(/[\\S ]+\\s+{([\\s\\S]+?)}/gi, '$1');\n classNameCollection = classNameCollection.replace(/^[\\s]|[\\s]$/gm, '');\n stylesCollection = stylesCollection.replace(/^[\\s]|[\\s]$/gm, '');\n classNameCollection = classNameCollection.replace(/\\n|\\r|\\n\\r/g, '');\n stylesCollection = stylesCollection.replace(/\\n|\\r|\\n\\r/g, '');\n for (var classNames = classNameCollection.split(', '), j = 0; j < classNames.length; j++) {\n styleClassObject[classNames[j]] = stylesCollection;\n }\n }\n return styleClassObject;\n };\n MsWordPaste.prototype.removingComments = function (elm) {\n var innerElement = elm.innerHTML;\n innerElement = innerElement.replace(//g, '');\n elm.innerHTML = innerElement;\n };\n MsWordPaste.prototype.cleanUp = function (node, listNodes) {\n var tempCleaner = [];\n var prevflagState;\n var allNodes = node.querySelectorAll('*');\n for (var index = 0; index < allNodes.length; index++) {\n if (this.ignorableNodes.indexOf(allNodes[index].nodeName) === -1 ||\n (allNodes[index].nodeType === 3 && allNodes[index].textContent.trim() === '')) {\n tempCleaner.push(allNodes[index]);\n continue;\n }\n else if (allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 &&\n !isNOU(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0) {\n if (allNodes[index].className.indexOf('MsoListParagraphCxSpFirst') >= 0 && listNodes.length > 0 &&\n listNodes[listNodes.length - 1] !== null) {\n listNodes.push(null);\n }\n listNodes.push(allNodes[index]);\n }\n if (prevflagState && (this.blockNode.indexOf(allNodes[index].nodeName.toLowerCase()) !== -1) &&\n !(allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 && !isNOU(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0)) {\n listNodes.push(null);\n }\n if (this.blockNode.indexOf(allNodes[index].nodeName.toLowerCase()) !== -1) {\n if (allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 && !isNOU(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0) {\n prevflagState = true;\n }\n else {\n prevflagState = false;\n }\n }\n }\n if (listNodes.length && (listNodes[listNodes.length - 1] !== null)) {\n listNodes.push(null);\n }\n return listNodes;\n };\n MsWordPaste.prototype.listConverter = function (listNodes) {\n var level;\n var data = [];\n var listFormatOverride;\n var collection = [];\n var content = '';\n var stNode;\n var currentListStyle = '';\n for (var i = 0; i < listNodes.length; i++) {\n if (listNodes[i] === null) {\n data.push({ content: this.makeConversion(collection), node: listNodes[i - 1] });\n collection = [];\n continue;\n }\n if (listNodes[i].getAttribute('style') && listNodes[i].getAttribute('style').indexOf('mso-outline-level') !== -1) {\n listNodes[i].setAttribute('style', listNodes[i].getAttribute('style').replace('mso-outline-level', 'mso-outline'));\n }\n content = listNodes[i].getAttribute('style');\n if (content && content.indexOf('level') !== -1) {\n // eslint-disable-next-line\n level = parseInt(content.charAt(content.indexOf('level') + 5), null);\n }\n else {\n level = 1;\n }\n if (content && content.indexOf('mso-list:') !== -1) {\n var msoListValue = void 0;\n if (content.match(/mso-list:[^;]+;?/)) {\n var changedContent = content.replace('\\n', '').split(' ').join('');\n msoListValue = changedContent.match(/mso-list:[^;]+;?/)[0].split(':l');\n listFormatOverride = isNOU(msoListValue) ? null : parseInt(msoListValue[1].split('level')[0], 10);\n }\n else {\n listFormatOverride = null;\n }\n }\n this.listContents = [];\n this.getListContent(listNodes[i]);\n var type = void 0;\n var listStyleType = void 0;\n var startAttr = void 0;\n var styleMarginLeft = void 0;\n if (!isNOU(this.listContents[0])) {\n type = this.listContents[0].trim().length > 1 ? 'ol' : 'ul';\n listStyleType = this.getlistStyleType(this.listContents[0], type);\n if (type === 'ol' && (i === 0 || listNodes[i - 1] === null)) {\n var startString = this.listContents[0].split('.')[0];\n var listTypes = ['A', 'a', 'I', 'i', 'α', '1', '1-']; // Add '1-' for rare list type.\n if (listTypes.indexOf(startString) === -1) {\n if (listStyleType === 'decimal') {\n // Bug in getlistStyleType() list style stype is returned as decimal for nested list with start attribute\n if (!isNaN(parseInt(startString, 10))) {\n startAttr = parseInt(startString, 10);\n }\n }\n else if (listStyleType === 'upper-alpha') {\n startAttr = (startString.split('.')[0].charCodeAt(0) - 64);\n }\n else if (listStyleType === 'lower-alpha') {\n startAttr = (startString.split('.')[0].charCodeAt(0) - 96);\n }\n else if (listStyleType === 'upper-roman') {\n startAttr = this.upperRomanNumber.indexOf(this.listContents[0].split('.')[0]) + 1;\n }\n else if (listStyleType === 'lower-roman') {\n startAttr = this.lowerRomanNumber.indexOf(this.listContents[0].split('.')[0]) + 1;\n }\n else if (listStyleType === 'lower-greek') {\n startAttr = this.lowerGreekNumber.indexOf(this.listContents[0].split('.')[0]) + 1;\n }\n }\n }\n if (listNodes[i].style.marginLeft !== '') {\n styleMarginLeft = listNodes[i].style.marginLeft;\n }\n var tempNode = [];\n for (var j = 1; j < this.listContents.length; j++) {\n tempNode.push(this.listContents[j]);\n }\n var currentClassName = void 0;\n if (!isNOU(listNodes[i].className)) {\n currentClassName = listNodes[i].className;\n }\n if (!isNOU(listNodes[i].getAttribute('style'))) {\n listNodes[i].setAttribute('style', listNodes[i].getAttribute('style').replace('text-align:start;', ''));\n listNodes[i].style.textIndent = '';\n currentListStyle = listNodes[i].getAttribute('style');\n }\n collection.push({\n listType: type, content: tempNode, nestedLevel: level,\n listFormatOverride: listFormatOverride, class: currentClassName,\n listStyle: currentListStyle, listStyleTypeName: listStyleType, start: startAttr, styleMarginLeft: styleMarginLeft\n });\n }\n }\n stNode = listNodes.shift();\n while (stNode) {\n var elemColl = [];\n for (var temp1 = 0; temp1 < data.length; temp1++) {\n if (data[temp1].node === stNode) {\n for (var index = 0; index < data[temp1].content.childNodes.length; index++) {\n elemColl.push(data[temp1].content.childNodes[index]);\n }\n for (var index = 0; index < elemColl.length; index++) {\n stNode.parentElement.insertBefore(elemColl[index], stNode);\n }\n break;\n }\n }\n stNode.remove();\n stNode = listNodes.shift();\n if (!stNode) {\n stNode = listNodes.shift();\n }\n }\n };\n MsWordPaste.prototype.getlistStyleType = function (listContent, type) {\n var currentListClass;\n if (type === 'ol') {\n var charCode = listContent.split('.')[0].charCodeAt(0);\n switch (true) {\n case this.upperRomanNumber.indexOf(listContent.split('.')[0]) > -1:\n currentListClass = 'upper-roman';\n break;\n case this.lowerRomanNumber.indexOf(listContent.split('.')[0]) > -1:\n currentListClass = 'lower-roman';\n break;\n case this.lowerGreekNumber.indexOf(listContent.split('.')[0]) > -1:\n currentListClass = 'lower-greek';\n break;\n case (charCode > 64 && charCode < 91):\n currentListClass = 'upper-alpha';\n break;\n case (charCode > 96 && charCode < 123):\n currentListClass = 'lower-alpha';\n break;\n default:\n currentListClass = 'decimal';\n break;\n }\n }\n else {\n switch (listContent.split('.')[0]) {\n case 'o':\n currentListClass = 'circle';\n break;\n case '§':\n currentListClass = 'square';\n break;\n default:\n currentListClass = 'disc';\n break;\n }\n }\n return currentListClass;\n };\n MsWordPaste.prototype.makeConversion = function (collection) {\n var root = createElement('div');\n var temp;\n var pLevel = 1;\n var prevList;\n var listCount = 0;\n var elem;\n var lfo = collection[0].listFormatOverride;\n for (var index = 0; index < collection.length; index++) {\n var listClass = ['MsoListParagraphCxSpFirst', 'MsoListParagraphCxSpMiddle', 'MsoListParagraphCxSpLast'];\n var isNormalList = false;\n for (var i = 0; i < listClass.length; i++) {\n if (listClass[i].indexOf(collection[index].class) >= 0) {\n isNormalList = true;\n break;\n }\n }\n if (!isNOU(prevList) && index !== 0 &&\n collection[index - 1].listType !== collection[index].listType &&\n !isNormalList) {\n prevList = null;\n }\n var pElement = createElement('p', { className: 'MsoNormal' });\n pElement.innerHTML = collection[index].content.join(' ');\n if ((collection[index].nestedLevel === 1) &&\n (listCount === 0 || lfo !== collection[index].listFormatOverride) &&\n collection[index].content) {\n root.appendChild(temp = createElement(collection[index].listType, { className: collection[index].class }));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n if (collection[index].class !== 'msolistparagraph') {\n temp.style.marginLeft = collection[index].styleMarginLeft;\n }\n else {\n addClass([temp], 'marginLeftIgnore');\n }\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n else if (collection[index].nestedLevel === pLevel &&\n lfo === collection[index].listFormatOverride) {\n if (!isNOU(prevList) && !isNOU(prevList.parentElement)\n && prevList.parentElement.tagName.toLowerCase() === collection[index].listType) {\n prevList.parentElement.appendChild(prevList = createElement('li'));\n prevList.appendChild(pElement);\n }\n else if (isNOU(prevList)) {\n temp = createElement(collection[index].listType);\n temp.style.listStyleType = collection[index].listStyleTypeName;\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n root.appendChild(temp);\n }\n else {\n temp = createElement(collection[index].listType);\n temp.style.listStyleType = collection[index].listStyleTypeName;\n prevList.parentElement.parentElement.appendChild(temp);\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n }\n }\n else if (collection[index].nestedLevel > pLevel) {\n if (!isNOU(prevList)) {\n for (var j = 0; j < collection[index].nestedLevel - pLevel; j++) {\n prevList.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n if (j !== collection[index].nestedLevel - pLevel - 1 &&\n collection[index].nestedLevel - pLevel > 1) {\n prevList.style.listStyleType = 'none';\n }\n temp.appendChild(prevList);\n }\n prevList.appendChild(pElement);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n else {\n if (collection[index].nestedLevel > pLevel && isNormalList) {\n var initialNode = createElement(collection[index].listType);\n prevList = createElement('li');\n initialNode.appendChild(prevList);\n initialNode.style.listStyleType = 'none';\n for (var j = 0; j < collection[index].nestedLevel - 1; j++) {\n prevList.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n temp.appendChild(prevList);\n temp.style.listStyleType = 'none';\n }\n prevList.appendChild(pElement);\n root.appendChild(initialNode);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n else {\n root.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n if (collection[index].class !== 'msolistparagraph') {\n temp.style.marginLeft = collection[index].styleMarginLeft;\n }\n else {\n addClass([temp], 'marginLeftIgnore');\n }\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n }\n }\n else if (collection[index].nestedLevel === 1) {\n if (root.lastChild.tagName.toLowerCase() === collection[index].listType) {\n temp = root.lastChild;\n }\n else {\n root.appendChild(temp = createElement(collection[index].listType));\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n }\n else {\n elem = prevList;\n while (elem.parentElement) {\n elem = elem.parentElement;\n if (elem.attributes.getNamedItem('level')) {\n // eslint-disable-next-line\n if (parseInt(elem.attributes.getNamedItem('level').textContent, null) === collection[index].nestedLevel &&\n lfo === collection[index].listFormatOverride) {\n prevList = createElement('li');\n prevList.appendChild(pElement);\n elem.appendChild(prevList);\n break;\n // eslint-disable-next-line\n }\n else if (parseInt(elem.attributes.getNamedItem('level').textContent, null) === collection[index].nestedLevel &&\n lfo !== collection[index].listFormatOverride) {\n temp = createElement(collection[index].listType);\n prevList = createElement('li');\n temp.appendChild(prevList);\n if (collection[index].nestedLevel > 1) {\n for (var k = 0; k < collection[index].nestedLevel - 1; k++) {\n prevList.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n temp.appendChild(prevList);\n temp.style.listStyleType = 'none';\n }\n }\n prevList.appendChild(pElement);\n elem.appendChild(temp);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n break;\n }\n else if (collection[index].nestedLevel > parseInt(elem.attributes.getNamedItem('level').textContent, 10)) {\n elem.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n break;\n }\n }\n continue;\n }\n }\n prevList.setAttribute('class', collection[index].class);\n prevList.setAttribute('style', (!isNOU(collection[index].listStyle) ? collection[index].listStyle : ''));\n pLevel = collection[index].nestedLevel;\n lfo = collection[index].listFormatOverride;\n listCount++;\n if (!isNOU(collection[index].start && collection[index].start !== 1 && collection[index].listType === 'ol')) {\n temp.setAttribute('start', collection[index].start.toString());\n }\n }\n return root;\n };\n MsWordPaste.prototype.getListContent = function (elem) {\n var pushContent = '';\n var firstChild = elem.firstElementChild;\n if (firstChild.textContent.trim() === '' && !isNOU(firstChild.firstElementChild) &&\n firstChild.firstElementChild.nodeName === 'IMG') {\n pushContent = elem.innerHTML.trim();\n this.listContents.push('');\n this.listContents.push(pushContent);\n }\n else {\n //Add to support separate list which looks like same list and also to add all tags as it is inside list\n if (firstChild.childNodes.length > 0) {\n var listIgnoreTag = firstChild.querySelectorAll('[style*=\"mso-list\"]');\n for (var i = 0; i < listIgnoreTag.length; i++) {\n listIgnoreTag[i].setAttribute('style', listIgnoreTag[i].getAttribute('style').replace(/\\n/g, ''));\n }\n var listOrder = firstChild.querySelector('span[style=\"mso-list:Ignore\"]');\n if (!isNOU(listOrder)) {\n this.listContents.push(listOrder.textContent.trim());\n detach(listOrder);\n this.removingComments(elem);\n this.removeUnwantedElements(elem);\n }\n }\n }\n this.listContents.push(elem.innerHTML);\n };\n MsWordPaste.prototype.processMargin = function (element) {\n var liChildren = element.querySelectorAll('li');\n if (liChildren.length > 0) {\n for (var i = 0; i < liChildren.length; i++) {\n if (!isNOU((liChildren[i]).style.marginLeft) && !liChildren[i].parentElement.classList.contains('marginLeftIgnore')) {\n (liChildren[i]).style.marginLeft = '';\n }\n }\n }\n var tableChildren = element.querySelectorAll('table');\n if (tableChildren.length > 0) {\n for (var i = 0; i < tableChildren.length; i++) {\n if (!isNOU((tableChildren[i]).style.marginLeft) &&\n (tableChildren[i]).style.marginLeft.indexOf('-') >= 0) {\n (tableChildren[i]).style.marginLeft = '';\n }\n }\n }\n var ignoredNode = element.querySelectorAll('.marginLeftIgnore li');\n if (ignoredNode.length > 0) {\n for (var i = 0; i < ignoredNode.length; i++) {\n if (!isNOU((ignoredNode[i]).style.marginLeft) && (ignoredNode[i]).style.marginLeft !== '') {\n var marginLeft = (ignoredNode[i]).style.marginLeft;\n var marginLeftValue = parseFloat(marginLeft.split('in')[0]);\n var result = marginLeftValue - 0.5;\n (ignoredNode[i]).style.marginLeft = result.toString() + 'in';\n }\n }\n }\n };\n MsWordPaste.prototype.removeEmptyAnchorTag = function (element) {\n var removableElement = element.querySelectorAll('a:not([href])');\n for (var j = removableElement.length - 1; j >= 0; j--) {\n var parentElem = removableElement[j].parentNode;\n while (removableElement[j].firstChild) {\n parentElem.insertBefore(removableElement[j].firstChild, removableElement[j]);\n }\n parentElem.removeChild(removableElement[j]);\n }\n };\n MsWordPaste.prototype.findSource = function (element) {\n var metaNodes = element.querySelectorAll('meta');\n for (var i = 0; i < metaNodes.length; i++) {\n var metaNode = metaNodes[i];\n var content = metaNode.getAttribute('content');\n var name_1 = metaNode.getAttribute('name');\n if (name_1 && name_1.toLowerCase().indexOf('generator') >= 0 && content && content.toLowerCase().indexOf('microsoft') >= 0) {\n for (var j = 0; j < PASTE_SOURCE.length; j++) {\n if (content.toLowerCase().indexOf(PASTE_SOURCE[j]) >= 0) {\n return PASTE_SOURCE[j];\n }\n }\n }\n }\n return 'html';\n };\n return MsWordPaste;\n}());\nexport { MsWordPaste };\n","import * as CONSTANT from '../base/constant';\nimport { InsertHtml } from './inserthtml';\n/**\n * Insert a Text Node or Text\n *\n * @hidden\n\n */\nvar InsertTextExec = /** @class */ (function () {\n /**\n * Constructor for creating the InsertText plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function InsertTextExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n InsertTextExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INSERT_TEXT_TYPE, this.insertText, this);\n };\n InsertTextExec.prototype.insertText = function (e) {\n var node = document.createTextNode(e.value);\n InsertHtml.Insert(this.parent.currentDocument, node, this.parent.editableElement);\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return InsertTextExec;\n}());\nexport { InsertTextExec };\n","import { closest, createElement, detach, isNullOrUndefined as isNOU, removeClass } from '@syncfusion/ej2-base';\nimport * as EVENTS from '../../common/constant';\nimport { SelectionCommands } from '../plugin';\nvar FormatPainterActions = /** @class */ (function () {\n function FormatPainterActions(parent, options) {\n this.INVALID_TAGS = ['A', 'AUDIO', 'IMG', 'VIDEO', 'IFRAME'];\n this.parent = parent;\n this.settings = options;\n this.addEventListener();\n this.setDeniedFormats();\n }\n FormatPainterActions.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.FORMAT_PAINTER_ACTIONS, this.actionHandler, this);\n this.parent.observer.on(EVENTS.MODEL_CHANGED_PLUGIN, this.onPropertyChanged, this);\n };\n FormatPainterActions.prototype.onPropertyChanged = function (prop) {\n if (prop && prop.module === 'formatPainter') {\n if (!isNOU(prop.newProp.formatPainterSettings.allowedFormats)) {\n this.settings.allowedFormats = prop.newProp.formatPainterSettings.allowedFormats;\n }\n if (!isNOU(prop.newProp.formatPainterSettings.deniedFormats)) {\n this.settings.deniedFormats = prop.newProp.formatPainterSettings.deniedFormats;\n this.setDeniedFormats();\n }\n }\n };\n FormatPainterActions.prototype.removeEventListener = function () {\n this.parent.observer.off(EVENTS.FORMAT_PAINTER_ACTIONS, this.actionHandler);\n this.parent.observer.off(EVENTS.MODEL_CHANGED_PLUGIN, this.onPropertyChanged);\n };\n /**\n * Destroys the format painter.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n FormatPainterActions.prototype.destroy = function () {\n this.removeEventListener();\n this.INVALID_TAGS = null;\n this.copyCollection = null;\n this.deniedFormatsCollection = null;\n this.newElem = null;\n this.newElemLastChild = null;\n this.settings = null;\n this.parent = null;\n };\n FormatPainterActions.prototype.actionHandler = function (args) {\n this.settings.allowedContext = ['Text', 'List', 'Table'];\n if (!isNOU(args) && !isNOU(args.item) && !isNOU(args.item.formatPainterAction)) {\n switch (args.item.formatPainterAction) {\n case 'format-copy':\n this.copyAction();\n break;\n case 'format-paste':\n this.pasteAction();\n break;\n case 'escape':\n this.escapeAction();\n break;\n }\n this.callBack(args);\n }\n };\n FormatPainterActions.prototype.callBack = function (event) {\n if (event.callBack) {\n event.callBack({\n requestType: 'FormatPainter',\n action: event.item.formatPainterAction,\n event: event.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n FormatPainterActions.prototype.generateElement = function () {\n var copyCollection = this.copyCollection.slice(); // To clone without reversing the collcection array\n copyCollection.reverse();\n var length = copyCollection.length;\n var elemCollection = createElement('div', { className: 'e-format-paste-wrapper' });\n var lastAppendChild;\n for (var i = 0; i < length; i++) {\n var _a = copyCollection[i], attrs = _a.attrs, className = _a.className, styles = _a.styles, tagName = _a.tagName;\n var elem = createElement(tagName);\n if (className !== '') {\n elem.className = className;\n }\n for (var i_1 = 0; i_1 < attrs.length; i_1++) {\n var property = attrs[i_1].name;\n var value = attrs[i_1].value;\n elem.setAttribute(property, value);\n }\n for (var i_2 = 0; i_2 < styles.length; i_2++) {\n var property = styles[i_2].property;\n var value = styles[i_2].value;\n var priority = styles[i_2].priority;\n elem.style.setProperty(property, value, priority);\n }\n if (elemCollection.childElementCount === 0) {\n elemCollection.append(elem);\n lastAppendChild = elem;\n }\n else {\n lastAppendChild.append(elem);\n lastAppendChild = elem;\n }\n }\n var elemChild = this.removeDeniedFormats(elemCollection);\n var currentElem = elemChild;\n while (currentElem) {\n if (currentElem.firstChild === null) {\n lastAppendChild = currentElem;\n currentElem = undefined;\n }\n else {\n currentElem = currentElem.firstChild;\n }\n }\n this.newElem = elemChild;\n this.newElemLastChild = lastAppendChild;\n };\n FormatPainterActions.prototype.pasteAction = function () {\n if (isNOU(this.copyCollection) || this.copyCollection.length === 0) {\n this.paintPlainTextFormat();\n return;\n }\n this.insertFormatNode(this.newElem, this.newElemLastChild);\n };\n FormatPainterActions.prototype.removeDeniedFormats = function (parentElement) {\n if (!isNOU(this.deniedFormatsCollection) && this.deniedFormatsCollection.length > 0) {\n var deniedPropArray = this.deniedFormatsCollection;\n var length_1 = deniedPropArray.length;\n for (var i = 0; i < length_1; i++) {\n var tag = deniedPropArray[i].tag;\n if (deniedPropArray[i].tag) {\n var elementsList = parentElement.querySelectorAll(tag);\n for (var j = 0; j < elementsList.length; j++) {\n if (deniedPropArray[i].classes.length > 0) {\n var classes = deniedPropArray[i].classes;\n var classLength = classes.length;\n for (var k = 0; k < classLength; k++) {\n if (elementsList[j].classList.contains(classes[k])) {\n removeClass([elementsList[j]], classes[k].trim());\n }\n }\n if (elementsList[j].classList.length === 0) {\n elementsList[j].removeAttribute('class');\n }\n }\n if (deniedPropArray[i].styles.length > 0) {\n var styles = deniedPropArray[i].styles;\n var styleLength = styles.length;\n for (var k = 0; k < styleLength; k++) {\n elementsList[j].style.removeProperty(styles[k].trim());\n }\n if (elementsList[j].style.length === 0) {\n elementsList[j].removeAttribute('style');\n }\n }\n if (deniedPropArray[i].attributes.length > 0) {\n var attributes = deniedPropArray[i].attributes;\n var attributeLength = attributes.length;\n for (var k = 0; k < attributeLength; k++) {\n elementsList[j].removeAttribute(attributes[k].trim());\n }\n }\n }\n }\n }\n }\n return parentElement.firstElementChild;\n };\n FormatPainterActions.prototype.copyAction = function () {\n var copyCollection = [];\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var domSelection = this.parent.nodeSelection;\n var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :\n domSelection.getSelectionNodeCollectionBr(range);\n if (nodes.length === 0 && domSelection.getSelectionNodeCollectionBr(range).length === 0) {\n return;\n }\n else {\n nodes = nodes.length === 0 ? domSelection.getSelectionNodeCollectionBr(range) : nodes;\n }\n var parentElem = nodes[0].parentElement;\n var currentContext = this.findCurrentContext(parentElem);\n var allowedRulesArray = this.settings.allowedFormats.indexOf(';') > -1 ? this.settings.allowedFormats.split(';') :\n [this.settings.allowedFormats];\n for (var i = 0; i < allowedRulesArray.length; i++) {\n allowedRulesArray[i] = allowedRulesArray[i].trim();\n }\n var _a = this.getRangeParentElem(currentContext, parentElem), rangeParentElem = _a[0], context = _a[1];\n if (currentContext === null) {\n currentContext = context;\n }\n if (!isNOU(currentContext) && this.settings.allowedContext.indexOf(currentContext) > -1) {\n if (range.startContainer.nodeName === '#text') {\n parentElem = range.startContainer.parentElement;\n }\n var lastElement = parentElem;\n do {\n if (allowedRulesArray.indexOf(parentElem.nodeName.toLowerCase()) > -1) {\n var allAttributes = parentElem.attributes;\n var attribute = [];\n for (var i = 0; i < allAttributes.length; i++) {\n if (allAttributes[i].name !== 'class' && allAttributes[i].name !== 'style') {\n attribute.push(allAttributes[i]);\n }\n }\n var classes = parentElem.className;\n var allStyles = parentElem.style;\n var styleProp = [];\n for (var i = 0; i < allStyles.length; i++) {\n var property = allStyles[i];\n var value = allStyles.getPropertyValue(property);\n var priority = allStyles.getPropertyPriority(property);\n styleProp.push({ property: property, value: value, priority: priority });\n }\n copyCollection.push({\n attrs: attribute, className: classes, styles: styleProp, tagName: parentElem.nodeName\n });\n }\n if (rangeParentElem === parentElem) {\n parentElem = undefined;\n }\n else if (!isNOU(parentElem.parentElement)) {\n parentElem = parentElem.parentElement;\n }\n if (lastElement === parentElem) {\n break;\n }\n } while (!isNOU(parentElem) || parentElem === this.parent.editableElement);\n this.copyCollection = copyCollection;\n }\n this.generateElement();\n };\n FormatPainterActions.prototype.getRangeParentElem = function (currentContext, rangeParent) {\n var startContainer = rangeParent;\n var rangeParentELem;\n if (startContainer.nodeType === 3) {\n startContainer = startContainer.parentElement;\n }\n switch (currentContext) {\n case 'Table':\n rangeParentELem = closest(startContainer, 'td');\n if (isNOU(rangeParentELem)) {\n rangeParentELem = closest(startContainer, 'th');\n }\n break;\n case 'List':\n rangeParentELem = closest(startContainer, 'li');\n break;\n case 'Text':\n rangeParentELem = closest(startContainer, 'p');\n break;\n }\n if (isNOU(rangeParentELem)) {\n var nearBlockParentName = this.getNearestBlockParentElement(rangeParent);\n if (!isNOU(nearBlockParentName) && nearBlockParentName !== 'UL' &&\n nearBlockParentName !== 'OL' && nearBlockParentName !== 'LI') {\n rangeParentELem = closest(startContainer, nearBlockParentName);\n currentContext = 'Text';\n }\n }\n if (currentContext === 'List') {\n rangeParentELem = rangeParentELem.parentElement;\n }\n return [rangeParentELem, currentContext];\n };\n FormatPainterActions.prototype.getNearestBlockParentElement = function (rangeParent) {\n var node = rangeParent;\n if (node.nodeType === 3) {\n node = node.parentNode;\n }\n // iterate untill the content editable div\n while (node && node !== this.parent.editableElement) {\n // If true return the block node name.\n if (!isNOU(node) && this.isBlockElement(node)) {\n return node.nodeName;\n }\n // if false re assign node to parent node\n node = node.parentNode;\n }\n return null;\n };\n FormatPainterActions.prototype.isBlockElement = function (node) {\n var blockTags = ['P', 'DIV', 'UL', 'OL', 'LI', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6',\n 'ADDRESS', 'ARTICLE', 'ASIDE', 'BLOCKQUOTE', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'HEADER',\n 'HR', 'MAIN', 'NAV', 'SECTION', 'SUMMARY', 'PRE'];\n return blockTags.indexOf(node.nodeName) > -1;\n };\n FormatPainterActions.prototype.escapeAction = function () {\n this.copyCollection = [];\n };\n FormatPainterActions.prototype.paintPlainTextFormat = function () {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var domSelection = this.parent.nodeSelection;\n var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :\n domSelection.getSelectionNodeCollectionBr(range);\n var isInValid;\n if (nodes.length > 1) {\n for (var i = 0; i < nodes.length; i++) {\n isInValid = this.validateELementTag(nodes[i]);\n }\n }\n else {\n isInValid = this.validateELementTag(range.startContainer) && this.validateELementTag(range.endContainer);\n }\n if (!isInValid) {\n this.parent.execCommand('Clear', 'ClearFormat', null, null);\n }\n };\n FormatPainterActions.prototype.validateELementTag = function (node) {\n if (node.nodeType === 3) {\n node = node.parentElement;\n }\n return this.INVALID_TAGS.indexOf(node.tagName) > -1;\n };\n FormatPainterActions.prototype.findCurrentContext = function (parentElem) {\n var closestParagraph = closest(parentElem, 'p');\n var closestList = closest(parentElem, 'li');\n if (closestParagraph && !closestList) {\n return 'Text';\n }\n else if (closest(parentElem, 'li')) {\n if (!isNOU(closestParagraph) && !isNOU(closestList) && closestParagraph.textContent.trim() !== closestList.textContent.trim()) {\n return 'Text';\n }\n return 'List';\n }\n else if (closest(parentElem, 'td') || closest(parentElem, 'tr') || closest(parentElem, 'th')) {\n return 'Table';\n }\n return null;\n };\n FormatPainterActions.prototype.insertFormatNode = function (elem, lastChild) {\n var clonedElem = elem.cloneNode(true);\n if (!this.isBlockElement(elem)) {\n var newBlockElem = createElement('P');\n newBlockElem.appendChild(elem);\n clonedElem = newBlockElem.cloneNode(true);\n }\n var endNode = this.parent.editableElement;\n var docElement = this.parent.currentDocument;\n var childElem = clonedElem.firstChild;\n var inlineElement;\n while (childElem) {\n if (this.isBlockElement(childElem)) {\n childElem = childElem.firstChild;\n }\n else {\n inlineElement = childElem.parentNode.removeChild(childElem);\n break;\n }\n }\n var formatValues = {\n element: inlineElement,\n lastChild: lastChild\n };\n SelectionCommands.applyFormat(docElement, null, endNode, 'P', 'formatPainter', null, formatValues);\n var range = this.parent.nodeSelection.getRange(docElement);\n var isCollapsed = range.collapsed;\n var blockNodes = this.parent.domNode.blockNodes();\n var isListCopied = this.isListCopied();\n if (isListCopied) {\n for (var i = 0; i < blockNodes.length; i++) {\n if (closest(blockNodes[i], 'li')) {\n blockNodes[i] = closest(blockNodes[i], 'li');\n }\n }\n }\n var isFullNodeSelected = false;\n if (blockNodes.length === 1) {\n isFullNodeSelected = blockNodes[0].textContent.trim() === range.toString().trim();\n }\n if (this.isBlockElement(clonedElem) && isCollapsed || blockNodes.length > 1 || isFullNodeSelected) {\n this.insertBlockNode(clonedElem, range, docElement, blockNodes);\n }\n };\n FormatPainterActions.prototype.isListCopied = function () {\n var isListCopied = false;\n for (var i = 0; i < this.copyCollection.length; i++) {\n if (this.copyCollection[i].tagName === 'OL' || this.copyCollection[i].tagName === 'UL') {\n isListCopied = true;\n break;\n }\n }\n return isListCopied;\n };\n FormatPainterActions.prototype.insertBlockNode = function (element, range, docElement, nodes) {\n var domSelection = this.parent.nodeSelection;\n var saveSelection = domSelection.save(range, docElement);\n this.parent.domNode.setMarker(saveSelection);\n var listElement; // To clone to multiple list elements\n var cloneListParentNode;\n var sameListType = false;\n if (element.nodeName === 'UL' || element.nodeName === 'OL') {\n cloneListParentNode = element.cloneNode(true);\n listElement = cloneListParentNode.firstChild;\n }\n var cloneElementNode = isNOU(cloneListParentNode) ? element : element.firstChild;\n for (var index = 0; index < nodes.length; index++) {\n if (this.INVALID_TAGS.indexOf(nodes[index].nodeName) > -1 ||\n nodes[index].querySelectorAll('img,audio,video,iframe').length > 0) {\n continue;\n }\n var cloneParentNode = cloneElementNode.cloneNode(false);\n // Appending all the child elements\n while (nodes[index].firstChild) {\n if (nodes[index].textContent.trim().length !== 0) {\n cloneParentNode.appendChild(nodes[index].firstChild);\n }\n else {\n nodes[index].removeChild(nodes[index].firstChild);\n }\n }\n if (nodes[index].nodeName === 'TD' || nodes[index].nodeName === 'TH') {\n if (isNOU(cloneListParentNode)) {\n nodes[index].appendChild(cloneParentNode);\n continue;\n }\n else if (index === 0 && !isNOU(cloneListParentNode)) {\n nodes[index].appendChild(cloneListParentNode);\n cloneListParentNode.appendChild(cloneParentNode);\n continue;\n }\n else {\n nodes[index].appendChild(cloneParentNode);\n continue;\n }\n }\n if (!isNOU(cloneListParentNode)) {\n sameListType = this.isSameListType(element, nodes[index]);\n }\n if (cloneParentNode.nodeName === 'LI' && !sameListType) {\n this.insertNewList(range, nodes, index, cloneListParentNode, cloneParentNode);\n }\n else if (sameListType) {\n this.insertSameList(nodes, index, cloneListParentNode, cloneParentNode);\n }\n else {\n nodes[index].parentNode.replaceChild(cloneParentNode, nodes[index]);\n }\n /**Removing the inserted block node in list and appending to previous element sibling */\n if (cloneParentNode.nodeName !== 'LI' && (cloneParentNode.parentElement.nodeName === 'OL' ||\n cloneParentNode.parentElement.nodeName === 'UL')) {\n var parent_1 = cloneParentNode.parentElement;\n // Cutting single ul or ol to two ul or ol based on the range\n this.parent.nodeCutter.SplitNode(range, parent_1, true);\n if (!isNOU(parent_1.previousElementSibling)) {\n parent_1.previousElementSibling.after(cloneParentNode);\n // To remove the nested list items out of the block element\n if (cloneParentNode.childNodes.length > 1) {\n for (var j = 0; j < cloneParentNode.childNodes.length; j++) {\n var currentChild = cloneParentNode.childNodes[j];\n if (currentChild.nodeName === 'OL' || currentChild.nodeName === 'UL') {\n cloneParentNode.after(currentChild);\n }\n }\n }\n }\n else {\n parent_1.parentElement.prepend(cloneParentNode);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n !isNOU(listElement) ? detach(listElement) : false;\n this.cleanEmptyLists();\n var save = this.parent.domNode.saveMarker(saveSelection, null);\n save.restore();\n };\n FormatPainterActions.prototype.insertNewList = function (range, nodes, index, cloneListParentNode, cloneParentNode) {\n // Appending the li nodes to the ol or ul node\n if (index === 0) {\n var nodeName = nodes[index].nodeName;\n nodes[index] = nodes[index].parentNode.replaceChild(cloneListParentNode, nodes[index]);\n var parent_2 = nodeName === 'LI' ? cloneListParentNode.parentElement\n : cloneListParentNode;\n // Splicing and then inserting the node to previous element sibling of the Listparent.parent\n this.parent.nodeCutter.SplitNode(range, parent_2, true);\n if (nodes[index].nodeName === 'LI' && !isNOU(parent_2)) {\n cloneListParentNode.append(cloneParentNode);\n if (!isNOU(parent_2.parentNode)) {\n parent_2.parentNode.insertBefore(cloneListParentNode, parent_2);\n }\n }\n else {\n if (!isNOU(parent_2)) {\n if (!isNOU(parent_2.previousElementSibling) && parent_2.previousElementSibling.nodeName === cloneListParentNode.nodeName) {\n var currentParent = parent_2.previousElementSibling;\n currentParent.append(cloneParentNode);\n while (currentParent.firstChild) {\n cloneListParentNode.append(currentParent.firstChild);\n }\n }\n else if (!isNOU(parent_2.nextElementSibling) && parent_2.nextElementSibling.nodeName === cloneListParentNode.nodeName) {\n var currentParent = parent_2.nextElementSibling;\n currentParent.prepend(cloneParentNode);\n while (currentParent.firstChild) {\n cloneListParentNode.append(currentParent.firstChild);\n }\n }\n else {\n cloneListParentNode.append(cloneParentNode);\n }\n }\n else {\n cloneListParentNode.append(cloneParentNode);\n }\n }\n }\n else {\n cloneListParentNode.append(cloneParentNode);\n }\n this.detachEmptyBlockNodes(nodes[index]);\n };\n FormatPainterActions.prototype.insertSameList = function (nodes, index, cloneListParentNode, cloneParentNode) {\n if (index === 0) {\n if (!isNOU(nodes[index].parentNode) && (nodes[index].parentNode.nodeName === 'UL' || nodes[index].parentNode.nodeName === 'OL')) {\n // append the nodes[index].parentNode.childNodes to the clonelistparentnode\n if (nodes.length === 1) {\n // When clicked with cursor in the single list item\n while (cloneParentNode.firstChild) {\n nodes[index].append(cloneParentNode.firstChild);\n }\n for (var i = 0; i < nodes[index].parentNode.childNodes.length; i++) {\n var currentChild = nodes[index].parentNode.childNodes[i];\n cloneListParentNode.append(currentChild.cloneNode(true));\n }\n }\n else {\n cloneListParentNode.append(cloneParentNode);\n }\n // replace the older ol and ul with new ol and ul of clonelistparentnode\n nodes[index].parentNode.parentNode.replaceChild(cloneListParentNode, nodes[index].parentNode);\n }\n }\n else {\n cloneListParentNode.append(cloneParentNode);\n }\n this.detachEmptyBlockNodes(nodes[index]);\n };\n FormatPainterActions.prototype.isSameListType = function (element, node) {\n var isSameListType = false;\n var nearestListNode = closest(node, 'ol, ul');\n if (!isNOU(nearestListNode) && nearestListNode.querySelectorAll('li').length > 0) {\n if (nearestListNode.nodeName === element.nodeName) {\n isSameListType = true;\n }\n else {\n isSameListType = false;\n }\n }\n return isSameListType;\n };\n FormatPainterActions.prototype.cleanEmptyLists = function () {\n var listElem = this.parent.editableElement.querySelectorAll('ol, ul');\n for (var i = 0; i < listElem.length; i++) {\n if (listElem[i].textContent.trim() === '') {\n detach(listElem[i]);\n }\n }\n };\n FormatPainterActions.prototype.setDeniedFormats = function () {\n var deniedFormatsCollection = [];\n if (isNOU(this.settings) || isNOU(this.settings.deniedFormats)) {\n return;\n }\n var deniedFormats = this.settings.deniedFormats.indexOf(';') > -1 ? this.settings.deniedFormats.split(';') :\n [this.settings.deniedFormats];\n var length = deniedFormats.length;\n for (var i = 0; i < length; i++) {\n var formatString = deniedFormats[i];\n if (formatString !== '') {\n formatString.trim();\n var collection = this.makeDeniedFormatsCollection(formatString);\n if (!isNOU(collection)) {\n deniedFormatsCollection.push(collection);\n }\n }\n }\n this.deniedFormatsCollection = deniedFormatsCollection;\n };\n FormatPainterActions.prototype.detachEmptyBlockNodes = function (node) {\n if (!isNOU(node) && node.textContent.trim() === '') {\n detach(node);\n }\n };\n FormatPainterActions.prototype.makeDeniedFormatsCollection = function (value) {\n var openParenIndex = value.indexOf('(');\n var closeParenIndex = value.indexOf(')');\n var openBracketIndex = value.indexOf('[');\n var closeBracketIndex = value.indexOf(']');\n var openBraceIndex = value.indexOf('{');\n var closeBraceIndex = value.indexOf('}');\n var classes = [];\n var attributes = '';\n var styles = '';\n var tagName = '';\n var classList = [];\n var attributesList = [];\n var stylesList = [];\n if (openParenIndex > -1 && closeParenIndex > -1) {\n classes = value.substring(openParenIndex + 1, closeParenIndex).split(' ');\n classList = classes[0].split(')')[0].split(',');\n }\n if (openBracketIndex > -1 && closeBracketIndex > -1) {\n attributes = value.substring(openBracketIndex + 1, closeBracketIndex);\n attributesList = attributes.split(',');\n }\n if (openBraceIndex > -1 && closeBraceIndex > -1) {\n styles = value.substring(openBraceIndex + 1, closeBraceIndex);\n stylesList = styles.split(',');\n }\n var openIndexArray = [openParenIndex, openBracketIndex, openBraceIndex];\n openIndexArray = openIndexArray.filter(function (index) { return index > -1; });\n var len = openIndexArray.length;\n var min;\n if (len === 1) {\n min = openIndexArray[0];\n }\n else if (len === 2) {\n min = Math.min(openIndexArray[0], openIndexArray[1]);\n }\n else if (len === 3) {\n min = Math.min(openIndexArray[0], openIndexArray[1], openIndexArray[2]);\n }\n tagName = value.substring(0, min);\n tagName = tagName.trim();\n return ({\n tag: tagName, styles: stylesList, classes: classList,\n attributes: attributesList\n });\n };\n return FormatPainterActions;\n}());\nexport { FormatPainterActions };\n","import * as EVENTS from './../../common/constant';\nimport { InsertHtml } from './inserthtml';\nvar EmojiPickerAction = /** @class */ (function () {\n function EmojiPickerAction(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n EmojiPickerAction.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.EMOJI_PICKER_ACTIONS, this.emojiInsert, this);\n };\n EmojiPickerAction.prototype.emojiInsert = function (args) {\n var node = document.createTextNode(args.value);\n var selection = this.parent.currentDocument.getSelection();\n var range = selection.getRangeAt(0);\n var cursorPos = range.startOffset;\n for (var i = cursorPos - 1; i >= cursorPos - 15; i--) {\n var prevChar_1 = selection.focusNode.textContent.substring(i - 1, i);\n var isPrevSpace_1 = /:$/.test(prevChar_1);\n if (isPrevSpace_1) {\n this.beforeApplyFormat(true);\n break;\n }\n }\n var colon = /:$/.test(selection.focusNode.textContent.charAt(cursorPos - 1));\n var prevChar = selection.focusNode.textContent.charAt(cursorPos - 2);\n var isPrevSpace = /\\s/.test(prevChar);\n if (colon && (isPrevSpace || selection.focusOffset === 1)) {\n this.beforeApplyFormat(true);\n }\n InsertHtml.Insert(this.parent.currentDocument, node, this.parent.editableElement);\n if (args.callBack) {\n args.callBack({\n requestType: args.subCommand,\n editorMode: 'HTML',\n event: args.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n EmojiPickerAction.prototype.beforeApplyFormat = function (isBlockFormat) {\n var range1 = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var node = this.parent.nodeSelection.getNodeCollection(range1)[0];\n var blockNewLine = !(node.parentElement.innerHTML.replace(/ |
      /g, '').trim() === ':' || node.textContent.trim().indexOf('/') === 0);\n var startNode = node;\n if (blockNewLine && isBlockFormat) {\n while (startNode !== this.parent.editableElement) {\n startNode = startNode.parentElement;\n }\n }\n var startPoint = range1.startOffset;\n while (this.parent.nodeSelection.getRange(document).toString().indexOf(':') === -1) {\n this.parent.nodeSelection.setSelectionText(document, node, node, startPoint, range1.endOffset);\n startPoint--;\n }\n var range2 = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var node2 = this.parent.nodeCutter.GetSpliceNode(range2, node);\n node2.parentNode.removeChild(node2);\n };\n return EmojiPickerAction;\n}());\nexport { EmojiPickerAction };\n","import { Observer } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './constant';\nimport { Lists } from './../plugin/lists';\nimport { NodeSelection } from './../../selection/index';\nimport { DOMNode } from './../plugin/dom-node';\nimport { Formats } from './../plugin/formats';\nimport { LinkCommand } from './../plugin/link';\nimport { Alignments } from './../plugin/alignments';\nimport { Indents } from './../plugin/indents';\nimport { ImageCommand } from './../plugin/image';\nimport { AudioCommand } from './../plugin/audio';\nimport { VideoCommand } from './../plugin/video';\nimport { TableCommand } from './../plugin/table';\nimport { SelectionBasedExec } from './../plugin/selection-exec';\nimport { InsertHtmlExec } from './../plugin/inserthtml-exec';\nimport { ClearFormatExec } from './../plugin/clearformat-exec';\nimport { UndoRedoManager } from './../plugin/undo';\nimport { MsWordPaste } from '../plugin/ms-word-clean-up';\nimport * as EVENTS from './../../common/constant';\nimport { InsertTextExec } from '../plugin/insert-text';\nimport { NodeCutter } from '../plugin/nodecutter';\nimport { FormatPainterActions } from '../plugin/format-painter-actions';\nimport { EmojiPickerAction } from '../plugin/emoji-picker-action';\n/**\n * EditorManager internal component\n *\n * @hidden\n\n */\nvar EditorManager = /** @class */ (function () {\n /**\n * Constructor for creating the component\n *\n * @hidden\n\n * @param {ICommandModel} options - specifies the command Model\n */\n function EditorManager(options) {\n this.currentDocument = options.document;\n this.editableElement = options.editableElement;\n this.nodeSelection = new NodeSelection();\n this.nodeCutter = new NodeCutter();\n this.domNode = new DOMNode(this.editableElement, this.currentDocument);\n this.observer = new Observer(this);\n this.listObj = new Lists(this);\n this.formatObj = new Formats(this);\n this.alignmentObj = new Alignments(this);\n this.indentsObj = new Indents(this);\n this.linkObj = new LinkCommand(this);\n this.imgObj = new ImageCommand(this);\n this.audioObj = new AudioCommand(this);\n this.videoObj = new VideoCommand(this);\n this.selectionObj = new SelectionBasedExec(this);\n this.inserthtmlObj = new InsertHtmlExec(this);\n this.insertTextObj = new InsertTextExec(this);\n this.clearObj = new ClearFormatExec(this);\n this.tableObj = new TableCommand(this);\n this.undoRedoManager = new UndoRedoManager(this, options.options);\n this.msWordPaste = new MsWordPaste(this);\n this.formatPainterEditor = new FormatPainterActions(this, options.formatPainterSettings);\n this.emojiPickerObj = new EmojiPickerAction(this);\n this.wireEvents();\n }\n EditorManager.prototype.wireEvents = function () {\n this.observer.on(EVENTS.KEY_DOWN, this.editorKeyDown, this);\n this.observer.on(EVENTS.KEY_UP, this.editorKeyUp, this);\n this.observer.on(EVENTS.KEY_UP, this.editorKeyUp, this);\n this.observer.on(EVENTS.MODEL_CHANGED, this.onPropertyChanged, this);\n this.observer.on(EVENTS.MS_WORD_CLEANUP, this.onWordPaste, this);\n this.observer.on(EVENTS.ON_BEGIN, this.onBegin, this);\n this.observer.on(EVENTS.MOUSE_DOWN, this.editorMouseDown, this);\n };\n EditorManager.prototype.onWordPaste = function (e) {\n this.observer.notify(EVENTS.MS_WORD_CLEANUP_PLUGIN, e);\n };\n EditorManager.prototype.onPropertyChanged = function (props) {\n this.observer.notify(EVENTS.MODEL_CHANGED_PLUGIN, props);\n };\n EditorManager.prototype.editorKeyDown = function (e) {\n this.observer.notify(EVENTS.KEY_DOWN_HANDLER, e);\n };\n EditorManager.prototype.editorKeyUp = function (e) {\n this.observer.notify(EVENTS.KEY_UP_HANDLER, e);\n };\n EditorManager.prototype.onBegin = function (e) {\n this.observer.notify(EVENTS.SPACE_ACTION, e);\n };\n /* eslint-disable */\n /**\n * execCommand\n *\n * @param {ExecCommand} command - specifies the execution command\n * @param {T} value - specifes the value.\n * @param {Event} event - specifies the call back event\n * @param {Function} callBack - specifies the function\n * @param {string} text - specifies the string value\n * @param {T} exeValue - specifies the values to be executed\n * @param {string} selector - specifies the selector values\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n EditorManager.prototype.execCommand = function (command, value, event, callBack, text, exeValue, selector, enterAction) {\n switch (command.toLowerCase()) {\n case 'lists':\n this.observer.notify(EVENTS.LIST_TYPE, { subCommand: value, event: event, callBack: callBack,\n selector: selector, item: exeValue, enterAction: enterAction });\n break;\n case 'formats':\n this.observer.notify(EVENTS.FORMAT_TYPE, { subCommand: value, event: event, callBack: callBack,\n selector: selector, exeValue: exeValue, enterAction: enterAction\n });\n break;\n case 'alignments':\n this.observer.notify(CONSTANT.ALIGNMENT_TYPE, {\n subCommand: value, event: event, callBack: callBack,\n selector: selector,\n value: exeValue\n });\n break;\n case 'indents':\n this.observer.notify(CONSTANT.INDENT_TYPE, { subCommand: value, event: event, callBack: callBack, selector: selector });\n break;\n case 'links':\n this.observer.notify(CONSTANT.LINK, { command: command, value: value, item: exeValue, event: event, callBack: callBack });\n break;\n case 'files':\n this.observer.notify(CONSTANT.IMAGE, {\n command: command, value: 'Image', item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'images':\n this.observer.notify(CONSTANT.IMAGE, {\n command: command, value: value, item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'audios':\n this.observer.notify(CONSTANT.AUDIO, {\n command: command, value: value, item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'videos':\n this.observer.notify(CONSTANT.VIDEO, {\n command: command, value: value, item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'table':\n switch (value.toString().toLocaleLowerCase()) {\n case 'createtable':\n this.observer.notify(CONSTANT.TABLE, { item: exeValue, event: event, callBack: callBack, enterAction: enterAction });\n break;\n case 'insertrowbefore':\n case 'insertrowafter':\n this.observer.notify(CONSTANT.INSERT_ROW, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'insertcolumnleft':\n case 'insertcolumnright':\n this.observer.notify(CONSTANT.INSERT_COLUMN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'deleterow':\n this.observer.notify(CONSTANT.DELETEROW, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'deletecolumn':\n this.observer.notify(CONSTANT.DELETECOLUMN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'tableremove':\n this.observer.notify(CONSTANT.REMOVETABLE, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'tableheader':\n this.observer.notify(CONSTANT.TABLEHEADER, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'aligntop':\n case 'alignmiddle':\n case 'alignbottom':\n this.observer.notify(CONSTANT.TABLE_VERTICAL_ALIGN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'merge':\n this.observer.notify(CONSTANT.TABLE_MERGE, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'horizontalsplit':\n this.observer.notify(CONSTANT.TABLE_HORIZONTAL_SPLIT, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'verticalsplit':\n this.observer.notify(CONSTANT.TABLE_VERTICAL_SPLIT, { item: exeValue, event: event, callBack: callBack });\n break;\n }\n break;\n case 'font':\n case 'style':\n case 'effects':\n case 'casing':\n this.observer.notify(CONSTANT.SELECTION_TYPE, { subCommand: value, event: event, callBack: callBack, value: text, selector: selector, enterAction: enterAction });\n break;\n case 'inserthtml':\n this.observer.notify(CONSTANT.INSERTHTML_TYPE, { subCommand: value, callBack: callBack, value: text, enterAction: enterAction });\n break;\n case 'inserttext':\n this.observer.notify(CONSTANT.INSERT_TEXT_TYPE, { subCommand: value, callBack: callBack, value: text });\n break;\n case 'clear':\n this.observer.notify(CONSTANT.CLEAR_TYPE, { subCommand: value, event: event, callBack: callBack, selector: selector, enterAction: enterAction });\n break;\n case 'actions':\n this.observer.notify(EVENTS.ACTION, { subCommand: value, event: event, callBack: callBack, selector: selector });\n break;\n case 'formatpainter':\n this.observer.notify(EVENTS.FORMAT_PAINTER_ACTIONS, { item: exeValue, subCommand: value, event: event, callBack: callBack });\n break;\n case 'emojipicker':\n this.observer.notify(EVENTS.EMOJI_PICKER_ACTIONS, { item: exeValue, subCommand: value, value: text,\n event: event, callBack: callBack });\n }\n };\n EditorManager.prototype.editorMouseDown = function (e) {\n if (e.args.detail === 3) {\n this.tripleClickSelection(e.args);\n }\n };\n EditorManager.prototype.tripleClickSelection = function (e) {\n var range = this.nodeSelection.getRange(this.currentDocument);\n var selection = this.nodeSelection.get(this.currentDocument);\n if (selection.rangeCount > 0 && selection.toString() !== '') {\n var startBlockNode = this.getParentBlockNode(range.startContainer);\n var endBlockNode = this.getParentBlockNode(range.endContainer);\n if (startBlockNode && endBlockNode && startBlockNode === endBlockNode) {\n var newRange = this.currentDocument.createRange();\n var startTextNode = this.getFirstTextNode(startBlockNode);\n var endTextNode = this.getLastTextNode(endBlockNode);\n if (startTextNode && endTextNode) {\n newRange.setStart(startTextNode, 0);\n newRange.setEnd(endTextNode, endTextNode.textContent.length);\n this.nodeSelection.setRange(this.currentDocument, newRange);\n e.preventDefault();\n }\n }\n }\n };\n EditorManager.prototype.getParentBlockNode = function (node) {\n var treeWalker = this.currentDocument.createTreeWalker(this.editableElement, // root\n NodeFilter.SHOW_ELEMENT, // whatToShow\n {\n acceptNode: function (currentNode) {\n // Check if the node is a block element\n var displayStyle = window.getComputedStyle(currentNode).display;\n if (displayStyle.indexOf('inline') < 0) {\n return NodeFilter.FILTER_ACCEPT;\n }\n else {\n return NodeFilter.FILTER_SKIP;\n }\n }\n });\n treeWalker.currentNode = node;\n var blockParent = treeWalker.parentNode();\n return blockParent;\n };\n EditorManager.prototype.getLastTextNode = function (node) {\n var treeWalker = this.currentDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT, null);\n var lastTextNode = null;\n var currentNode = treeWalker.nextNode();\n while (currentNode) {\n lastTextNode = currentNode;\n currentNode = treeWalker.nextNode();\n }\n return lastTextNode;\n };\n EditorManager.prototype.getFirstTextNode = function (node) {\n var treeWalker = this.currentDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT, null);\n var firstTextNode = treeWalker.nextNode();\n return firstTextNode;\n };\n return EditorManager;\n}());\nexport { EditorManager };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Formatter } from './formatter';\nimport { EditorManager } from './../../editor-manager/base/editor-manager';\nimport { extend } from '@syncfusion/ej2-base';\nimport { htmlKeyConfig } from './../../common/config';\n/**\n * HTML adapter\n *\n * @hidden\n\n */\nvar HTMLFormatter = /** @class */ (function (_super) {\n __extends(HTMLFormatter, _super);\n function HTMLFormatter(options) {\n var _this = _super.call(this) || this;\n _this.initialize();\n extend(_this, _this, options, true);\n if (_this.currentDocument && _this.element) {\n _this.updateFormatter(_this.element, _this.currentDocument, options.options, options.formatPainterSettings);\n }\n return _this;\n }\n HTMLFormatter.prototype.initialize = function () {\n this.keyConfig = htmlKeyConfig;\n };\n /**\n * Update the formatter of RichTextEditor\n *\n * @param {Element} editElement - specifies the edit element.\n * @param {Document} doc - specifies the doucment\n * @param {number} options - specifies the options\n * @param {FormatPainterSettingsModel} formatPainterSettings - specifies the format painter settings\n * @returns {void}\n * @hidden\n\n */\n HTMLFormatter.prototype.updateFormatter = function (editElement, doc, options, formatPainterSettings) {\n if (editElement && doc) {\n this.editorManager = new EditorManager({\n document: doc,\n editableElement: editElement,\n options: options,\n formatPainterSettings: formatPainterSettings\n });\n }\n };\n return HTMLFormatter;\n}(Formatter));\nexport { HTMLFormatter };\n","import * as events from '../base/constant';\nimport { ToolbarStatus } from '../../editor-manager/plugin/toolbar-status';\nimport { getDefaultHtmlTbStatus } from '../../common/util';\n/**\n * HtmlToolbarStatus module for refresh the toolbar status\n */\nvar HtmlToolbarStatus = /** @class */ (function () {\n function HtmlToolbarStatus(parent) {\n this.parent = parent;\n this.toolbarStatus = this.prevToolbarStatus = getDefaultHtmlTbStatus();\n this.addEventListener();\n }\n HtmlToolbarStatus.prototype.addEventListener = function () {\n this.parent.on(events.toolbarRefresh, this.onRefreshHandler, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n HtmlToolbarStatus.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarRefresh, this.onRefreshHandler);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n HtmlToolbarStatus.prototype.onRefreshHandler = function (args) {\n if (this.parent.readonly) {\n return;\n }\n var fontsize = [];\n var fontName = [];\n var formats = [];\n this.parent.fontSize.items.forEach(function (item) {\n fontsize.push(item.value);\n });\n this.parent.fontFamily.items.forEach(function (item) {\n fontName.push(item.value);\n });\n this.parent.format.types.forEach(function (item) {\n formats.push(item.value.toLocaleLowerCase());\n });\n this.toolbarStatus = ToolbarStatus.get(this.parent.contentModule.getDocument(), this.parent.contentModule.getEditPanel(), formats, fontsize, fontName, args.documentNode);\n var tbStatusString = JSON.stringify(this.toolbarStatus);\n this.parent.notify(events.toolbarUpdated, this.toolbarStatus);\n if (JSON.stringify(this.prevToolbarStatus) !== tbStatusString) {\n this.parent.notify(events.updateTbItemsStatus, { html: JSON.parse(tbStatusString), markdown: null });\n this.prevToolbarStatus = JSON.parse(tbStatusString);\n }\n };\n return HtmlToolbarStatus;\n}());\nexport { HtmlToolbarStatus };\n","import { getEditValue } from '../base/util';\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n * @param {ServiceLocator} serviceLocator - specifies the service.\n * @returns {void}\n */\n function ContentRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n }\n /**\n * The function is used to render Rich Text Editor content div\n *\n * @returns {void}\n * @hidden\n\n */\n ContentRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var div = this.parent.createElement('div', { className: 'e-rte-content', id: this.parent.getID() + 'rte-view' });\n var rteContent = getEditValue(rteObj.value, rteObj);\n this.editableElement = this.parent.createElement('div', {\n className: 'e-content',\n id: this.parent.getID() + '_rte-edit-view',\n attrs: {\n 'contenteditable': 'true'\n },\n innerHTML: rteContent\n });\n div.appendChild(this.editableElement);\n this.setPanel(div);\n rteObj.element.appendChild(div);\n };\n /**\n * Get the content div element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the return element.\n * @hidden\n\n */\n ContentRender.prototype.getEditPanel = function () {\n return this.editableElement;\n };\n /**\n * Returns the text content as string.\n *\n * @returns {string} - specifies the string element.\n */\n ContentRender.prototype.getText = function () {\n var textString = this.getEditPanel().innerText;\n return textString === '\\n' ? '' : textString;\n };\n /**\n * Set the content div element of RichTextEditor\n *\n * @param {Element} panel - specifies the panel element.\n * @returns {void}\n * @hidden\n\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {Document} - specifies the document.\n * @hidden\n\n */\n ContentRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ContentRender } from '../renderer/content-renderer';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getEditValue } from '../base/util';\nvar IFRAMEHEADER = \"\\n \\n \\n \\n \\n \\n \";\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar IframeContentRender = /** @class */ (function (_super) {\n __extends(IframeContentRender, _super);\n function IframeContentRender() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * The function is used to render Rich Text Editor iframe\n *\n * @hidden\n\n */\n IframeContentRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var rteContent = getEditValue(rteObj.value, rteObj);\n var iFrameBodyContent = '' +\n rteContent + '';\n var iFrameContent = IFRAMEHEADER + iFrameBodyContent;\n var iframe = this.parent.createElement('iframe', {\n id: this.parent.getID() + '_rte-view',\n className: 'e-rte-content',\n styles: 'display:block;',\n attrs: { 'srcdoc': iFrameContent }\n });\n iframe.setAttribute(\"role\", \"none\");\n this.setPanel(iframe);\n rteObj.element.appendChild(iframe);\n iframe.contentDocument.body.id = this.parent.getID() + '_rte-edit-view';\n iframe.contentDocument.body.setAttribute('aria-owns', this.parent.getID());\n iframe.contentDocument.open();\n iFrameContent = this.setThemeColor(iFrameContent, { color: '#333' });\n iframe.contentDocument.write(iFrameContent);\n iframe.contentDocument.close();\n if (rteObj.enableRtl) {\n this.contentPanel.contentDocument.body.setAttribute('class', 'e-rtl');\n }\n };\n IframeContentRender.prototype.setThemeColor = function (content, styles) {\n var fontColor = getComputedStyle(this.parent.element, '.e-richtexteditor').getPropertyValue('color');\n return content.replace(styles.color, fontColor);\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n IframeContentRender.prototype.getEditPanel = function () {\n var editNode;\n if (!isNullOrUndefined(this.contentPanel.contentDocument)) {\n editNode = this.contentPanel.contentDocument.body;\n }\n else {\n editNode = this.parent.inputElement;\n }\n return editNode;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {void}\n * @hidden\n\n */\n IframeContentRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\n };\n return IframeContentRender;\n}(ContentRender));\nexport { IframeContentRender };\n","import { select, detach, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { getIndex, toObjectLowerCase } from '../base/util';\nimport { templateItems, tools } from '../models/items';\n/**\n * `Color Picker` module is used to handle ColorPicker actions.\n */\nvar ColorPickerInput = /** @class */ (function () {\n function ColorPickerInput(parent, serviceLocator) {\n this.tools = {};\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = tools;\n }\n }\n ColorPickerInput.prototype.initializeInstance = function () {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n };\n /**\n * renderColorPickerInput method\n *\n * @param {IColorPickerRenderArgs} args - specify the arguments.\n * @returns {void}\n * @hidden\n\n */\n ColorPickerInput.prototype.renderColorPickerInput = function (args) {\n var _this = this;\n this.initializeInstance();\n var suffixID = args.containerType;\n var tbElement = args.container;\n var targetID;\n var options;\n templateItems.forEach(function (item) {\n if (getIndex(item, args.items) !== -1) {\n switch (item) {\n case 'fontcolor': {\n targetID = _this.parent.getID() + '_' + suffixID + '_FontColor_Target';\n var fontNode = _this.parent.createElement('input');\n fontNode.id = targetID;\n fontNode.classList.add(classes.CLS_FONT_COLOR_TARGET);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n fontNode.classList.add(allClassName[i]);\n }\n }\n }\n document.body.appendChild(fontNode);\n options = {\n cssClass: _this.tools[item.toLocaleLowerCase()].icon\n + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS + _this.parent.getCssClass(true),\n value: _this.tools[item.toLocaleLowerCase()].value,\n command: _this.tools[item.toLocaleLowerCase()].command,\n subCommand: _this.tools[item.toLocaleLowerCase()].subCommand,\n element: select('#' + _this.parent.getID() + '_' + suffixID + '_FontColor', tbElement),\n target: (targetID)\n };\n _this.fontColorPicker = _this.toolbarRenderer.renderColorPicker(options, 'fontcolor');\n _this.fontColorDropDown = _this.toolbarRenderer.renderColorPickerDropDown(options, 'fontcolor', _this.fontColorPicker);\n break;\n }\n case 'backgroundcolor': {\n targetID = _this.parent.getID() + '_' + suffixID + '_BackgroundColor_Target';\n var backNode = _this.parent.createElement('input');\n backNode.id = targetID;\n backNode.classList.add(classes.CLS_BACKGROUND_COLOR_TARGET);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n backNode.classList.add(allClassName[i]);\n }\n }\n }\n document.body.appendChild(backNode);\n options = {\n cssClass: _this.tools[item.toLocaleLowerCase()].icon\n + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS + _this.parent.getCssClass(true),\n value: _this.tools[item.toLocaleLowerCase()].value,\n command: _this.tools[item.toLocaleLowerCase()].command,\n subCommand: _this.tools[item.toLocaleLowerCase()].subCommand,\n element: select('#' + _this.parent.getID() + '_' + suffixID + '_BackgroundColor', tbElement),\n target: (targetID)\n };\n _this.backgroundColorPicker = _this.toolbarRenderer.renderColorPicker(options, 'backgroundcolor');\n _this.backgroundColorDropDown = _this.toolbarRenderer.renderColorPickerDropDown(options, 'backgroundcolor', _this.backgroundColorPicker, _this.defaultColorPicker);\n break;\n }\n }\n }\n });\n if (this.parent.inlineMode.enable) {\n this.setCssClass({ cssClass: this.parent.getCssClass() });\n }\n };\n ColorPickerInput.prototype.destroy = function () {\n this.removeEventListener();\n this.destroyColorPicker();\n };\n /**\n * destroyColorPicker method\n *\n * @returns {void}\n * @hidden\n\n */\n ColorPickerInput.prototype.destroyColorPicker = function () {\n if (this.fontColorPicker && !this.fontColorPicker.isDestroyed) {\n this.fontColorPicker.destroy();\n }\n if (this.backgroundColorPicker && !this.backgroundColorPicker.isDestroyed) {\n this.backgroundColorPicker.destroy();\n }\n if (this.fontColorDropDown && !this.fontColorDropDown.isDestroyed) {\n var innerEle = this.fontColorDropDown.element.querySelector('.e-rte-color-content');\n if (innerEle) {\n detach(innerEle);\n }\n this.fontColorDropDown.destroy();\n }\n if (this.backgroundColorDropDown && !this.backgroundColorDropDown.isDestroyed) {\n var innerEle = this.backgroundColorDropDown.element.querySelector('.e-rte-color-content');\n if (innerEle) {\n this.defaultColorPicker = innerEle.children[0].style.borderBottomColor;\n detach(innerEle);\n }\n this.backgroundColorDropDown.destroy();\n }\n };\n ColorPickerInput.prototype.setRtl = function (args) {\n if (this.fontColorPicker) {\n this.fontColorPicker.setProperties({ enableRtl: args.enableRtl });\n this.fontColorDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.backgroundColorPicker) {\n this.backgroundColorPicker.setProperties({ enableRtl: args.enableRtl });\n this.backgroundColorDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n };\n ColorPickerInput.prototype.setCssClass = function (e) {\n this.updateCss(this.fontColorPicker, this.fontColorDropDown, e);\n this.updateCss(this.backgroundColorPicker, this.backgroundColorDropDown, e);\n };\n ColorPickerInput.prototype.updateCss = function (colorPickerObj, dropDownObj, e) {\n if (colorPickerObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n colorPickerObj.setProperties({ cssClass: (colorPickerObj.cssClass + ' ' + e.cssClass).trim() });\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n colorPickerObj.setProperties({ cssClass: (colorPickerObj.cssClass.replace(e.oldCssClass, '').replace(' ', ' ').trim() + ' ' + e.cssClass).trim() });\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass.replace(e.oldCssClass, '').replace(' ', ' ').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n ColorPickerInput.prototype.addEventListener = function () {\n this.parent.on(events.toolbarRenderComplete, this.renderColorPickerInput, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.destroyColorPicker, this.destroyColorPicker, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.showColorPicker, this.showColorPicker, this);\n };\n ColorPickerInput.prototype.showColorPicker = function (e) {\n if (!isNullOrUndefined(this.fontColorPicker) && (e.toolbarClick === \"fontcolor\")) {\n this.fontColorDropDown.toggle();\n }\n else if (!isNullOrUndefined(this.backgroundColorPicker) && (e.toolbarClick === \"backgroundcolor\")) {\n this.backgroundColorDropDown.toggle();\n }\n };\n ColorPickerInput.prototype.onPropertyChanged = function (model) {\n var newProp = model.newProp;\n var element;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'fontColor':\n if (this.fontColorPicker) {\n for (var _b = 0, _c = Object.keys(newProp.fontColor); _b < _c.length; _b++) {\n var font = _c[_b];\n switch (font) {\n case 'default': {\n this.fontColorPicker.setProperties({ value: newProp.fontColor.default });\n element = this.fontColorDropDown.element;\n var fontBorder = element.querySelector('.' + this.tools['fontcolor'].icon);\n fontBorder.style.borderBottomColor = newProp.fontColor.default;\n break;\n }\n case 'mode':\n this.fontColorPicker.setProperties({ mode: newProp.fontColor.mode });\n break;\n case 'columns':\n this.fontColorPicker.setProperties({ columns: newProp.fontColor.columns });\n break;\n case 'colorCode':\n this.fontColorPicker.setProperties({ presetColors: newProp.fontColor.colorCode });\n break;\n case 'modeSwitcher':\n this.fontColorPicker.setProperties({ modeSwitcher: newProp.fontColor.modeSwitcher });\n break;\n }\n }\n }\n break;\n case 'backgroundColor':\n if (this.backgroundColorPicker) {\n for (var _d = 0, _e = Object.keys(newProp.backgroundColor); _d < _e.length; _d++) {\n var background = _e[_d];\n switch (background) {\n case 'default': {\n this.backgroundColorPicker.setProperties({ value: newProp.backgroundColor.default });\n element = this.backgroundColorDropDown.element;\n var backgroundBorder = element.querySelector('.' + this.tools['backgroundcolor'].icon);\n backgroundBorder.style.borderBottomColor = newProp.backgroundColor.default;\n break;\n }\n case 'mode':\n this.backgroundColorPicker.setProperties({ mode: newProp.backgroundColor.mode });\n break;\n case 'columns':\n this.backgroundColorPicker.setProperties({ columns: newProp.backgroundColor.columns });\n break;\n case 'colorCode':\n this.backgroundColorPicker.setProperties({ presetColors: newProp.backgroundColor.colorCode });\n break;\n case 'modeSwitcher':\n this.backgroundColorPicker.setProperties({ modeSwitcher: newProp.backgroundColor.modeSwitcher });\n break;\n }\n }\n }\n break;\n }\n }\n };\n ColorPickerInput.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarRenderComplete, this.renderColorPickerInput);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.destroyColorPicker, this.destroyColorPicker);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.showColorPicker, this.showColorPicker);\n };\n return ColorPickerInput;\n}());\nexport { ColorPickerInput };\n","import * as events from '../base/constant';\nimport { detach, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * XhtmlValidation module called when set enableXhtml as true\n */\nvar XhtmlValidation = /** @class */ (function () {\n function XhtmlValidation(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n XhtmlValidation.prototype.addEventListener = function () {\n this.parent.on(events.xhtmlValidation, this.enableXhtmlValidation, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n XhtmlValidation.prototype.removeEventListener = function () {\n this.parent.off(events.xhtmlValidation, this.enableXhtmlValidation);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n XhtmlValidation.prototype.enableXhtmlValidation = function () {\n if (this.parent.enableXhtml) {\n if (isNullOrUndefined(this.parent.inputElement)) {\n this.currentElement = this.parent.element;\n }\n else {\n this.currentElement = this.parent.inputElement;\n }\n this.clean(this.currentElement);\n this.ImageTags();\n this.removeTags();\n this.RemoveUnsupported();\n this.currentElement.innerHTML = this.selfEncloseValidation(this.currentElement.innerHTML, this.currentElement.innerText === '\\n' ?\n this.currentElement.innerText.length : this.currentElement.innerText.trim().length);\n this.parent.setProperties({ value: this.currentElement.innerHTML }, true);\n }\n };\n /**\n * @param {string} currentValue - specifies the string value.\n * @param {number} valueLength - specifies the length of the current value.\n * @returns {void}\n\n */\n XhtmlValidation.prototype.selfEncloseValidation = function (currentValue, valueLength) {\n if (valueLength === 0 && currentValue.indexOf('table') < 0 && currentValue.indexOf('img') < 0 &&\n currentValue.includes(' ')) {\n var arrayValue = currentValue.split(' ');\n arrayValue[arrayValue.length - 1] = '​' + arrayValue[arrayValue.length - 1];\n currentValue = arrayValue.join('');\n }\n currentValue = currentValue.replace(/
      /g, '
      ').replace(/
      /g, '
      ').replace(/ /g, ' ');\n var valueTemp;\n var valueDupe = [];\n var valueOriginal = [];\n var imgRegexp = [//gi, //gi, //gi, //gi, //gi,\n //gi, //gi, //gi, //gi, //gi,\n //gi, //gi];\n for (var j = 0; j < imgRegexp.length; j++) {\n valueTemp = imgRegexp[j].exec(currentValue);\n while ((valueTemp) !== null) {\n valueDupe.push(valueTemp[0].toString());\n valueTemp = imgRegexp[j].exec(currentValue);\n }\n valueOriginal = valueDupe.slice(0);\n for (var i = 0; i < valueDupe.length; i++) {\n if (valueDupe[i].indexOf('/') === -1 || valueDupe[i].lastIndexOf('/') !== valueDupe[i].length - 2) {\n valueDupe[i] = valueDupe[i].substr(0, valueDupe[i].length - 1) + ' /' +\n valueDupe[i].substr(valueDupe[i].length - 1, valueDupe[i].length);\n }\n }\n for (var g = 0; g <= valueDupe.length - 1; g++) {\n currentValue = currentValue.replace(valueOriginal[g], valueDupe[g]);\n }\n }\n return currentValue;\n };\n XhtmlValidation.prototype.clean = function (node) {\n for (var n = 0; n < node.childNodes.length; n++) {\n var child = node.childNodes[n];\n if (child.nodeType === 8 || child.nodeName === 'V:IMAGE') {\n node.removeChild(child);\n n--;\n }\n else if (child.nodeType === 1) {\n this.clean(child);\n }\n }\n return this.currentElement.innerHTML;\n };\n XhtmlValidation.prototype.ImageTags = function () {\n var imgNodes = this.currentElement.querySelectorAll('IMG');\n for (var i = imgNodes.length - 1; i >= 0; i--) {\n if (!imgNodes[i].hasAttribute('alt')) {\n var img = imgNodes[i];\n img.setAttribute('alt', '');\n }\n }\n };\n XhtmlValidation.prototype.removeTags = function () {\n var removeAttribute = [['br', 'ul'], ['br', 'ol'], ['table', 'span'], ['div', 'span'], ['p', 'span']];\n for (var i = 0; i < removeAttribute.length; i++) {\n this.RemoveElementNode(removeAttribute[i][0], removeAttribute[i][1]);\n }\n };\n XhtmlValidation.prototype.RemoveElementNode = function (rmvNode, parentNode) {\n var parentArray = this.currentElement.querySelectorAll(parentNode);\n for (var i = 0; i < parentArray.length; i++) {\n var rmvArray = parentArray[i].querySelectorAll(rmvNode);\n for (var j = rmvArray.length; j > 0; j--) {\n detach(rmvArray[j - 1]);\n }\n }\n };\n XhtmlValidation.prototype.RemoveUnsupported = function () {\n var underlineEle = this.currentElement.querySelectorAll('u');\n for (var i = underlineEle.length - 1; i >= 0; i--) {\n var spanEle = this.parent.createElement('span');\n spanEle.style.textDecoration = 'underline';\n spanEle.innerHTML = underlineEle[i].innerHTML;\n underlineEle[i].parentNode.insertBefore(spanEle, underlineEle[i]);\n detach(underlineEle[i]);\n }\n var strongEle = this.currentElement.querySelectorAll('strong');\n for (var i = strongEle.length - 1; i >= 0; i--) {\n var boldEle = this.parent.createElement('b');\n boldEle.innerHTML = strongEle[i].innerHTML;\n strongEle[i].parentNode.insertBefore(boldEle, strongEle[i]);\n detach(strongEle[i]);\n }\n var attrArray = ['language', 'role', 'target', 'contenteditable', 'cellspacing',\n 'cellpadding', 'border', 'valign', 'colspan'];\n for (var i = 0; i <= attrArray.length; i++) {\n this.RemoveAttributeByName(attrArray[i]);\n }\n };\n XhtmlValidation.prototype.RemoveAttributeByName = function (attrName) {\n if (this.currentElement.firstChild !== null) {\n if (this.currentElement.firstChild.nodeType !== 3) {\n for (var i = 0; i < this.currentElement.childNodes.length; i++) {\n var ele = this.currentElement.childNodes[i];\n if (ele.nodeType !== 3 && ele.nodeName !== 'TABLE' && ele.nodeName !== 'TBODY' && ele.nodeName !== 'THEAD' &&\n ele.nodeName !== 'TH' && ele.nodeName !== 'TR' && ele.nodeName !== 'TD') {\n if (ele.hasAttribute(attrName)) {\n ele.removeAttribute(attrName);\n }\n if (ele.hasChildNodes()) {\n for (var j = 0; j < ele.childNodes.length; j++) {\n var childEle = ele.childNodes[j];\n if (childEle.nodeType !== 3 && childEle.nodeName !== 'TABLE' && childEle.nodeName !== 'TBODY' &&\n childEle.nodeName !== 'THEAD' && childEle.nodeName !== 'TH' && childEle.nodeName !== 'TR' &&\n childEle.nodeName !== 'TD' && childEle.hasAttribute(attrName) &&\n !childEle.classList.contains('e-mention-chip')) {\n childEle.removeAttribute(attrName);\n }\n if (childEle.hasChildNodes()) {\n for (var k = 0; k < childEle.childNodes.length; k++) {\n if (childEle.childNodes[k].nodeType !== 3 && childEle.childNodes[k].nodeName !== 'TABLE' &&\n childEle.childNodes[k].nodeName !== 'TBODY' && childEle.childNodes[k].nodeName !== 'THEAD' &&\n childEle.childNodes[k].nodeName !== 'TH' && childEle.childNodes[k].nodeName !== 'TR'\n && childEle.childNodes[k].nodeName !== 'TD'\n && childEle.childNodes[k].hasAttribute(attrName)) {\n childEle.childNodes[k].removeAttribute(attrName);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n };\n return XhtmlValidation;\n}());\nexport { XhtmlValidation };\n","import * as events from '../base/constant';\nimport { isNullOrUndefined, closest, attributes, removeClass, addClass, Browser, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { HTMLFormatter } from '../formatter/html-formatter';\nimport { RenderType } from '../base/enum';\nimport * as classes from '../base/classes';\nimport { HtmlToolbarStatus } from './html-toolbar-status';\nimport { IframeContentRender } from '../renderer/iframe-content-renderer';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { ColorPickerInput } from './color-picker';\nimport { NodeSelection } from '../../selection/selection';\nimport { InsertHtml } from '../../editor-manager/plugin/inserthtml';\nimport { getTextNodesUnder, sanitizeHelper, getDefaultValue } from '../base/util';\nimport { isIDevice } from '../../common/util';\nimport { XhtmlValidation } from './xhtml-validation';\nimport { ON_BEGIN } from './../../common/constant';\nimport * as CONSTANT from '../base/constant';\n/**\n * `HtmlEditor` module is used to HTML editor\n */\nvar HtmlEditor = /** @class */ (function () {\n function HtmlEditor(parent, serviceLocator) {\n this.rangeCollection = [];\n this.isImageDelete = false;\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.xhtmlValidation = new XhtmlValidation(parent);\n this.addEventListener();\n }\n /**\n * Destroys the Markdown.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n HtmlEditor.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n HtmlEditor.prototype.sanitizeHelper = function (value) {\n value = sanitizeHelper(value, this.parent);\n return value;\n };\n HtmlEditor.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.nodeSelectionObj = new NodeSelection();\n this.colorPickerModule = new ColorPickerInput(this.parent, this.locator);\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.htmlToolbarClick, this.onToolbarClick, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.keyUp, this.onKeyUp, this);\n this.parent.on(events.renderColorPicker, this.renderColorPicker, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.selectAll, this.selectAll, this);\n this.parent.on(events.selectRange, this.selectRange, this);\n this.parent.on(events.getSelectedHtml, this.getSelectedHtml, this);\n this.parent.on(events.selectionSave, this.onSelectionSave, this);\n this.parent.on(events.selectionRestore, this.onSelectionRestore, this);\n this.parent.on(events.readOnlyMode, this.updateReadOnly, this);\n this.parent.on(events.paste, this.onPaste, this);\n this.parent.on(events.tableclass, this.isTableClassAdded, this);\n this.parent.on(events.onHandleFontsizeChange, this.onHandleFontsizeChange, this);\n };\n HtmlEditor.prototype.updateReadOnly = function () {\n if (this.parent.readonly) {\n attributes(this.parent.contentModule.getEditPanel(), { contenteditable: 'false' });\n addClass([this.parent.element], classes.CLS_RTE_READONLY);\n }\n else {\n attributes(this.parent.contentModule.getEditPanel(), { contenteditable: 'true' });\n removeClass([this.parent.element], classes.CLS_RTE_READONLY);\n }\n };\n HtmlEditor.prototype.onSelectionSave = function () {\n var currentDocument = this.contentRenderer.getDocument();\n var range = this.nodeSelectionObj.getRange(currentDocument);\n this.saveSelection = this.nodeSelectionObj.save(range, currentDocument);\n };\n HtmlEditor.prototype.onSelectionRestore = function (e) {\n this.parent.isBlur = false;\n if (isNullOrUndefined(e.items) || e.items) {\n this.saveSelection.restore();\n }\n };\n HtmlEditor.prototype.isTableClassAdded = function () {\n var tableElement = this.parent.inputElement.querySelectorAll('table');\n for (var i = 0; i < tableElement.length; i++) {\n if (!tableElement[i].classList.contains('e-rte-table') && !tableElement[i].classList.contains('e-rte-paste-table')) {\n tableElement[i].classList.add('e-rte-table');\n }\n }\n };\n HtmlEditor.prototype.onHandleFontsizeChange = function (e) {\n var keyboardArgs = e.args;\n var args = { name: 'dropDownSelect' };\n args.item = {\n command: 'Font',\n subCommand: 'FontSize'\n };\n var items = this.parent.fontSize.items;\n var activeElem;\n if (this.parent.toolbarModule && this.parent.toolbarModule.dropDownModule &&\n this.parent.toolbarModule.dropDownModule.fontSizeDropDown && !isNOU(this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent) && this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent !== '') {\n activeElem = this.parent.toolbarModule.dropDownModule.fontSizeDropDown.activeElem[0].textContent;\n }\n else {\n var fontSizeValue = void 0;\n var selection = this.parent.contentModule.getDocument().getSelection();\n if (selection && selection.focusNode && selection.focusNode.parentElement) {\n fontSizeValue = document.defaultView.getComputedStyle(selection.focusNode.parentElement, null).getPropertyValue('font-size');\n }\n else {\n fontSizeValue = this.parent.fontSize.width;\n }\n fontSizeValue = isNOU(fontSizeValue) ? this.parent.fontSize.width : fontSizeValue;\n var actualTxtFontValues = fontSizeValue.match(/^([\\d.]+)(\\D+)$/);\n var size_1 = parseInt(actualTxtFontValues[1], 10);\n var unit = actualTxtFontValues[2];\n var defaultFontValues = items[0].value.match(/^([\\d.]+)(\\D+)$/);\n if (defaultFontValues[2] === unit) {\n var index = items.findIndex(function (_a) {\n var value = _a.value;\n return parseInt(value, 10) >= size_1;\n });\n activeElem = items[index].text;\n }\n else {\n var convertedSize_1 = this.convertFontSize(size_1, unit, defaultFontValues[2]);\n var index = items.findIndex(function (_a) {\n var value = _a.value;\n return parseInt(value, 10) >= convertedSize_1;\n });\n activeElem = items[index].text;\n }\n }\n var fontIndex = items.findIndex(function (size) { return size.text === activeElem; });\n if (keyboardArgs.action === 'increase-fontsize' && fontIndex !== -1) {\n if (fontIndex >= items.length - 1) {\n var fontValues = items[fontIndex].value.match(/^([\\d.]+)(\\D+)$/);\n if (fontValues) {\n var size = parseInt(fontValues[1], 10);\n var unit = fontValues[2];\n var roundedSize = size % 10 === 0 ? Math.ceil((size + 1) / 10) * 10 : Math.ceil(size / 10) * 10;\n args.item.value = roundedSize.toLocaleString() + unit;\n args.item.text = roundedSize.toLocaleString() + ' ' + unit;\n }\n this.parent.fontSize.items.push(args.item);\n }\n else {\n args.item.value = items[fontIndex + 1].value;\n args.item.text = items[fontIndex + 1].text;\n }\n }\n else if (keyboardArgs.action === 'decrease-fontsize' && fontIndex !== -1 && fontIndex > 0) {\n args.item.value = items[fontIndex - 1].value;\n args.item.text = items[fontIndex - 1].text;\n }\n else {\n if (fontIndex >= 0 && fontIndex < items.length && items[fontIndex]) {\n args.item.value = items[fontIndex].value;\n args.item.text = items[fontIndex].text;\n }\n }\n this.parent.formatter.process(this.parent, args, keyboardArgs);\n };\n HtmlEditor.prototype.convertFontSize = function (value, originalUnit, targetUnit) {\n if (CONSTANT.supportedUnits.indexOf(originalUnit) !== -1 || CONSTANT.supportedUnits.indexOf(targetUnit) !== -1) {\n originalUnit = 'px';\n }\n var convertedValue = value * CONSTANT.conversionFactors[originalUnit][targetUnit];\n return convertedValue;\n };\n HtmlEditor.prototype.onKeyUp = function (e) {\n var args = e.args;\n var restrictKeys = [8, 9, 13, 16, 17, 18, 20, 27, 37, 38, 39, 40, 44, 45, 46, 91,\n 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123];\n var range = this.parent.getRange();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var isEmptyNode = range.startContainer === range.endContainer && range.startOffset === range.endOffset &&\n range.startOffset === 1 && range.startContainer.textContent.length === 1 && range.startContainer.textContent.charCodeAt(0) == 8203 &&\n range.startContainer.textContent.replace(regEx, '').length === 0;\n var pointer;\n var isRootParent = false;\n if (restrictKeys.indexOf(args.keyCode) < 0 && !args.shiftKey && !args.ctrlKey && !args.altKey && !isEmptyNode) {\n pointer = range.startOffset;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n range.startContainer.nodeName === '#text' ? range.startContainer.parentElement !== this.parent.inputElement ? range.startContainer.parentElement.classList.add('currentStartMark')\n : isRootParent = true : range.startContainer.classList.add('currentStartMark');\n if (range.startContainer.textContent.charCodeAt(0) === 8203) {\n var previousLength_1 = range.startContainer.textContent.length;\n var previousRange = range.startOffset;\n range.startContainer.textContent = range.startContainer.textContent.replace(regEx, '');\n pointer = previousRange === 0 ? previousRange : previousRange - (previousLength_1 - range.startContainer.textContent.length);\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), range.startContainer, pointer);\n }\n var previousLength = this.parent.inputElement.innerHTML.length;\n var currentLength = this.parent.inputElement.innerHTML.replace(regEx, '').length;\n var focusNode = range.startContainer;\n if (previousLength > currentLength && !isRootParent) {\n if (focusNode.textContent.trim().length !== 0 && focusNode.previousSibling) {\n var tempSpan = document.createElement('span');\n tempSpan.className = 'tempSpan';\n range.insertNode(tempSpan);\n }\n var currentChild = this.parent.inputElement.firstChild;\n while (!isNOU(currentChild) && currentChild.textContent.replace(regEx, '').trim().length > 0) {\n currentChild.innerHTML = currentChild.innerHTML.replace(regEx, '');\n currentChild = currentChild.nextElementSibling;\n }\n var tempSpanToRemove = this.parent.inputElement.querySelector('.tempSpan');\n if (tempSpanToRemove && tempSpanToRemove.previousSibling && focusNode.textContent.trim().length !== 0) {\n focusNode = tempSpanToRemove.previousSibling;\n pointer = tempSpanToRemove.previousSibling.textContent.length;\n var parentElement = tempSpanToRemove.parentNode;\n parentElement.removeChild(tempSpanToRemove);\n tempSpanToRemove = null;\n }\n var currentChildNode = this.parent.inputElement.querySelector('.currentStartMark').childNodes;\n if (currentChildNode.length > 1) {\n for (var i = 0; i < currentChildNode.length; i++) {\n if (currentChildNode[i].nodeName === '#text' && currentChildNode[i].textContent.length === 0) {\n detach(currentChildNode[i]);\n i--;\n }\n if (!isNOU(currentChildNode[i]) && focusNode.textContent.replace(regEx, '') === currentChildNode[i].textContent) {\n pointer = focusNode.textContent.length > 1 ?\n (focusNode.textContent === currentChildNode[i].textContent ? pointer :\n pointer - (focusNode.textContent.length - focusNode.textContent.replace(regEx, '').length)) :\n focusNode.textContent.length;\n focusNode = currentChildNode[i];\n }\n }\n }\n else if (currentChildNode.length === 1) {\n if (focusNode.textContent.replace(regEx, '') === currentChildNode[0].textContent) {\n focusNode = currentChildNode[0];\n }\n }\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), focusNode, pointer);\n }\n var currentElem = this.parent.inputElement.querySelector('.currentStartMark');\n if (!isNOU(currentElem)) {\n currentElem.classList.remove('currentStartMark');\n if (currentElem.getAttribute('class').trim() === '') {\n currentElem.removeAttribute('class');\n }\n }\n if (!isNOU(range.startContainer.previousSibling) && !isNOU(range.startContainer.previousSibling.parentElement) &&\n range.startContainer.parentElement === range.startContainer.previousSibling.parentElement &&\n range.startContainer.previousSibling.textContent.charCodeAt(0) === 8203 &&\n range.startContainer.previousSibling.textContent.length <= 1) {\n range.startContainer.previousSibling.textContent = range.startContainer.previousSibling.textContent.replace(regEx, '');\n }\n if (range.endContainer.textContent.charCodeAt(range.endOffset) === 8203) {\n pointer = range.startOffset;\n range.endContainer.textContent = range.endContainer.textContent.replace(regEx, '');\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), range.startContainer, pointer);\n }\n }\n };\n HtmlEditor.prototype.onKeyDown = function (e) {\n var _this = this;\n var currentRange;\n var args = e.args;\n if (Browser.info.name === 'chrome') {\n currentRange = this.parent.getRange();\n this.backSpaceCleanup(e, currentRange);\n this.deleteCleanup(e, currentRange);\n }\n if (args.keyCode === 9 && this.parent.enableTabKey) {\n if (!isNOU(args.target) && isNullOrUndefined(closest(args.target, '.e-rte-toolbar'))) {\n var range = this.nodeSelectionObj.getRange(this.contentRenderer.getDocument());\n var parentNode = this.nodeSelectionObj.getParentNodeCollection(range);\n if (!((parentNode[0].nodeName === 'LI' || closest(parentNode[0], 'li') ||\n closest(parentNode[0], 'table')) && range.startOffset === 0)) {\n args.preventDefault();\n if (!args.shiftKey) {\n InsertHtml.Insert(this.contentRenderer.getDocument(), '    ');\n this.rangeCollection.push(this.nodeSelectionObj.getRange(this.contentRenderer.getDocument()));\n }\n else if (this.rangeCollection.length > 0 &&\n this.rangeCollection[this.rangeCollection.length - 1].startContainer.textContent.length === 4) {\n var textCont = this.rangeCollection[this.rangeCollection.length - 1].startContainer;\n this.nodeSelectionObj.setSelectionText(this.contentRenderer.getDocument(), textCont, textCont, 0, textCont.textContent.length);\n InsertHtml.Insert(this.contentRenderer.getDocument(), document.createTextNode(''));\n this.rangeCollection.pop();\n }\n }\n }\n }\n if (e.args.action === 'space' ||\n e.args.action === 'enter' ||\n e.args.keyCode === 13) {\n this.spaceLink(e.args);\n if (this.parent.editorMode === 'HTML' && !this.parent.readonly) {\n var currentLength = this.parent.getText().trim().replace(/(\\r\\n|\\n|\\r|\\t)/gm, '').replace(/\\u200B/g, '').length;\n var selectionLength = this.parent.getSelection().length;\n var totalLength = (currentLength - selectionLength) + 1;\n if (!(this.parent.maxLength === -1 || totalLength <= this.parent.maxLength) &&\n e.args.keyCode === 13) {\n e.args.preventDefault();\n return;\n }\n else {\n this.parent.notify(events.enterHandler, { args: e.args });\n var newRange = this.parent.getRange();\n if (!isNullOrUndefined(newRange.startContainer) && this.parent.height !== 'auto' && newRange.startContainer.nodeName !== '#text'\n && !this.parent.iframeSettings.enable && newRange.startContainer.getBoundingClientRect().bottom > this.parent.element.getBoundingClientRect().bottom) {\n this.parent.element.querySelector('.e-rte-content').scrollTop += newRange.startContainer.getBoundingClientRect().bottom - this.parent.element.getBoundingClientRect().bottom;\n }\n else if (!isNullOrUndefined(newRange.startContainer) && this.parent.height === 'auto' && newRange.startContainer.nodeName !== '#text'\n && !this.parent.iframeSettings.enable && window.innerHeight < newRange.startContainer.getBoundingClientRect().top) {\n newRange.startContainer.scrollIntoView({ block: 'end', inline: 'nearest' });\n }\n }\n }\n }\n if (e.args.action === 'space') {\n var currentRange_1 = this.parent.getRange();\n var editorValue = currentRange_1.startContainer.textContent.slice(0, currentRange_1.startOffset);\n var orderedList_1 = this.isOrderedList(editorValue);\n var unOrderedList = this.isUnOrderedList(editorValue);\n if (orderedList_1 && !unOrderedList || unOrderedList && !orderedList_1) {\n var eventArgs_1 = {\n callBack: null,\n event: e.args,\n name: 'keydown-handler'\n };\n var actionBeginArgs = {\n cancel: false,\n item: { command: 'Lists', subCommand: orderedList_1 ? 'OL' : 'UL' },\n name: 'actionBegin',\n originalEvent: e.args,\n requestType: orderedList_1 ? 'OL' : 'UL'\n };\n this.parent.trigger(events.actionBegin, actionBeginArgs, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n _this.parent.formatter.editorManager.observer.notify(ON_BEGIN, eventArgs_1);\n _this.parent.trigger(events.actionComplete, {\n editorMode: _this.parent.editorMode,\n elements: _this.parent.formatter.editorManager.domNode.blockNodes(),\n event: e.args,\n name: events.actionComplete,\n range: _this.parent.getRange(),\n requestType: orderedList_1 ? 'OL' : 'UL'\n });\n }\n });\n }\n }\n if (Browser.info.name === 'chrome' && (!isNullOrUndefined(this.rangeElement) && !isNullOrUndefined(this.oldRangeElement) ||\n !isNullOrUndefined(this.deleteRangeElement) && !isNullOrUndefined(this.deleteOldRangeElement)) &&\n currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH') {\n this.rangeElement = null;\n this.oldRangeElement = null;\n this.deleteRangeElement = null;\n this.deleteOldRangeElement = null;\n if (!this.isImageDelete) {\n args.preventDefault();\n }\n args.preventDefault();\n }\n };\n HtmlEditor.prototype.isOrderedList = function (editorValue) {\n editorValue = editorValue.replace(/\\u200B/g, '');\n var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];\n if (!isNullOrUndefined(editorValue)) {\n for (var i = 0; i < olListStartRegex.length; i++) {\n if (olListStartRegex[i].test(editorValue)) {\n return true;\n }\n }\n }\n return false;\n };\n HtmlEditor.prototype.isUnOrderedList = function (editorValue) {\n editorValue = editorValue.replace(/\\u200B/g, '');\n var ulListStartRegex = [/^[*]$/, /^[-]$/];\n if (!isNullOrUndefined(editorValue)) {\n for (var i = 0; i < ulListStartRegex.length; i++) {\n if (ulListStartRegex[i].test(editorValue)) {\n return true;\n }\n }\n }\n return false;\n };\n HtmlEditor.prototype.backSpaceCleanup = function (e, currentRange) {\n var isLiElement = false;\n var isPreviousNotContentEditable = true;\n if (!isNOU(currentRange.startContainer.previousSibling) &&\n currentRange.startContainer.previousSibling.nodeName === 'SPAN') {\n isPreviousNotContentEditable = currentRange.startContainer.previousSibling.contentEditable === 'false' ? false : true;\n }\n var checkNode = currentRange.startContainer.nodeName === '#text' ? currentRange.startContainer.parentElement : currentRange.startContainer;\n var isSelectedPositionNotStart = closest(currentRange.startContainer.nodeName === '#text' ? currentRange.startContainer.parentElement : currentRange.startContainer, 'li') ?\n checkNode.nodeName !== 'li' && isNOU(checkNode.previousSibling) : true;\n if (e.args.code === 'Backspace' && e.args.keyCode === 8 && currentRange.startOffset === 0 &&\n currentRange.endOffset === 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.textContent.length > 0 &&\n currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH' &&\n isPreviousNotContentEditable && isSelectedPositionNotStart) {\n if ((!this.parent.formatter.editorManager.domNode.isBlockNode(checkNode) &&\n !isNOU(checkNode.previousSibling) && checkNode.previousSibling.nodeName === 'BR') ||\n (!isNOU(currentRange.startContainer.previousSibling) && currentRange.startContainer.previousSibling.nodeName === 'BR')) {\n return;\n }\n this.rangeElement = this.getRootBlockNode(currentRange.startContainer);\n if (this.rangeElement.tagName === 'OL' || this.rangeElement.tagName === 'UL') {\n var liElement = this.getRangeLiNode(currentRange.startContainer);\n if (liElement.previousElementSibling && liElement.previousElementSibling.childElementCount > 0) {\n this.oldRangeElement = liElement.previousElementSibling.lastElementChild.nodeName === 'BR' ?\n liElement.previousElementSibling : liElement.previousElementSibling.lastChild;\n if (!isNOU(liElement.lastElementChild) && liElement.lastElementChild.nodeName !== 'BR' &&\n isNOU(liElement.lastElementChild.previousSibling) && liElement.lastChild.nodeName !== \"#text\") {\n this.rangeElement = liElement.lastElementChild;\n isLiElement = true;\n }\n else {\n this.rangeElement = liElement;\n }\n }\n }\n else if (this.rangeElement === this.parent.inputElement || this.rangeElement.tagName === 'TABLE' ||\n (!isNOU(this.rangeElement.previousElementSibling) && this.rangeElement.previousElementSibling.tagName === 'TABLE')) {\n return;\n }\n else {\n this.oldRangeElement = this.rangeElement.previousElementSibling;\n }\n if (isNOU(this.oldRangeElement)) {\n return;\n }\n else {\n if (this.oldRangeElement.tagName === 'OL' || this.oldRangeElement.tagName === 'UL') {\n this.oldRangeElement = this.oldRangeElement.lastElementChild.lastElementChild\n ? this.oldRangeElement.lastElementChild.lastElementChild :\n this.oldRangeElement.lastElementChild;\n }\n var lastNode = this.oldRangeElement.lastChild ? this.oldRangeElement.lastChild : this.oldRangeElement;\n while (lastNode.nodeType !== 3 && lastNode.nodeName !== '#text' &&\n lastNode.nodeName !== 'BR' && !isNOU(lastNode.lastChild)) {\n lastNode = lastNode.lastChild;\n }\n if (lastNode.nodeName === 'IMG') {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), lastNode.parentElement, lastNode.parentElement.childNodes.length);\n }\n else {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), \n // eslint-disable-next-line\n lastNode, lastNode.textContent.length);\n }\n if (this.oldRangeElement.nodeName !== '#text' && this.oldRangeElement.querySelectorAll('BR').length === 1) {\n detach(this.oldRangeElement.querySelector('BR'));\n }\n if (!isNOU(this.rangeElement) && this.oldRangeElement !== this.rangeElement) {\n while (this.rangeElement.firstChild) {\n if (this.oldRangeElement.nodeName === '#text') {\n this.oldRangeElement.parentElement.appendChild(this.rangeElement.childNodes[0]);\n }\n else {\n this.oldRangeElement.appendChild(this.rangeElement.childNodes[0]);\n }\n }\n // eslint-disable-next-line\n !isLiElement ? detach(this.rangeElement) : detach(this.rangeElement.parentElement);\n this.oldRangeElement.normalize();\n }\n }\n }\n };\n HtmlEditor.prototype.deleteCleanup = function (e, currentRange) {\n var isLiElement = false;\n var liElement;\n var rootElement;\n if (e.args.code === 'Delete' && e.args.keyCode === 46 &&\n this.parent.contentModule.getText().trim().replace(/(\\r\\n|\\n|\\r|\\t)/gm, '').replace(/\\u200B/g, '').length !== 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.parentElement.tagName !== 'TD' &&\n currentRange.startContainer.parentElement.tagName !== 'TH') {\n this.deleteRangeElement = rootElement = this.getRootBlockNode(currentRange.startContainer);\n if (this.deleteRangeElement.tagName === 'OL' || this.deleteRangeElement.tagName === 'UL') {\n liElement = this.getRangeLiNode(currentRange.startContainer);\n if (liElement.nextElementSibling && liElement.nextElementSibling.childElementCount > 0\n && !liElement.nextElementSibling.querySelector('BR')) {\n if (!isNullOrUndefined(liElement.lastElementChild)) {\n this.deleteRangeElement = liElement.lastElementChild;\n isLiElement = true;\n }\n else {\n this.deleteRangeElement = liElement;\n }\n }\n else {\n this.deleteRangeElement = this.getRangeElement(liElement);\n }\n }\n else if (this.deleteRangeElement.nodeType === 3 || (this.deleteRangeElement.tagName === 'TABLE' ||\n (!isNullOrUndefined(this.deleteRangeElement.nextElementSibling) && this.deleteRangeElement.nextElementSibling.tagName === 'TABLE'))) {\n return;\n }\n var isImgWithEmptyBlockNode = false;\n if (this.deleteRangeElement.querySelectorAll('img').length > 0 && this.deleteRangeElement.textContent.trim() === '') {\n isImgWithEmptyBlockNode = true;\n }\n if (this.getCaretIndex(currentRange, this.deleteRangeElement) === this.deleteRangeElement.textContent.length && !isImgWithEmptyBlockNode) {\n if (!isNullOrUndefined(liElement)) {\n if (isLiElement || !isNullOrUndefined(liElement.nextElementSibling)) {\n this.deleteOldRangeElement = this.getRangeElement(liElement.nextElementSibling);\n }\n else {\n this.deleteOldRangeElement = rootElement.nextElementSibling;\n }\n }\n else {\n this.deleteOldRangeElement = this.deleteRangeElement.nextElementSibling;\n }\n if (isNullOrUndefined(this.deleteOldRangeElement)) {\n return;\n }\n else {\n if (currentRange.startOffset === 0 && currentRange.endOffset === 1 &&\n this.deleteRangeElement.childNodes[0].nodeName === 'IMG') {\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.parent.contentModule.getDocument(), this.deleteRangeElement, this.deleteRangeElement, 0, 1);\n this.isImageDelete = true;\n }\n else {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), this.deleteRangeElement, this.deleteRangeElement.childNodes.length);\n this.isImageDelete = false;\n }\n var brNode = this.deleteRangeElement.querySelector('BR');\n if (brNode && brNode.classList.contains('e-rte-image-remove-focus')) {\n removeClass([brNode], ['e-rte-image-focus']);\n return;\n }\n else if (brNode) {\n detach(brNode);\n }\n if (!isNullOrUndefined(this.deleteRangeElement) && (this.deleteOldRangeElement.tagName !== 'OL' && this.deleteOldRangeElement.tagName !== 'UL')\n && this.deleteOldRangeElement !== this.deleteRangeElement) {\n while (this.deleteOldRangeElement.firstChild) {\n this.deleteRangeElement.appendChild(this.deleteOldRangeElement.childNodes[0]);\n }\n if (!isLiElement) {\n detach(this.deleteOldRangeElement);\n }\n else {\n detach(this.deleteOldRangeElement.parentElement);\n }\n this.deleteRangeElement.normalize();\n }\n else {\n this.deleteRangeElement = null;\n this.deleteOldRangeElement = null;\n }\n }\n }\n else {\n this.deleteRangeElement = null;\n }\n }\n };\n HtmlEditor.prototype.getCaretIndex = function (currentRange, element) {\n var position = 0;\n if (this.parent.contentModule.getDocument().getSelection().rangeCount !== 0) {\n var preCaretRange = currentRange.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(currentRange.endContainer, currentRange.endOffset);\n position = preCaretRange.toString().length;\n }\n return position;\n };\n HtmlEditor.prototype.getRangeElement = function (element) {\n var rangeElement = element.lastElementChild ? element.lastElementChild.tagName === 'BR' ?\n element.lastElementChild.previousElementSibling ? element.lastElementChild.previousElementSibling\n : element : element.lastElementChild : element;\n return rangeElement;\n };\n HtmlEditor.prototype.getRootBlockNode = function (rangeBlockNode) {\n // eslint-disable-next-line\n for (; rangeBlockNode && this.parent && this.parent.inputElement !== rangeBlockNode; rangeBlockNode = rangeBlockNode) {\n if (rangeBlockNode.parentElement === this.parent.inputElement) {\n break;\n }\n else {\n rangeBlockNode = rangeBlockNode.parentElement;\n }\n }\n return rangeBlockNode;\n };\n HtmlEditor.prototype.getRangeLiNode = function (rangeLiNode) {\n var node = rangeLiNode.parentElement;\n while (node !== this.parent.inputElement) {\n if (node.nodeType === 1 && node.tagName === 'LI') {\n break;\n }\n node = node.parentElement;\n }\n return node;\n };\n HtmlEditor.prototype.onPaste = function (e) {\n // eslint-disable-next-line\n var regex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (e.text.match(regex)) {\n if (e.isWordPaste) {\n return;\n }\n e.args.preventDefault();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n // eslint-disable-next-line\n var saveSelection = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n // eslint-disable-next-line\n var httpRegex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)))/gi);\n var wwwRegex = new RegExp(/([^\\S]|^)(((www\\.))(\\S+))/gi);\n var enterSplitText = e.text.split('\\n');\n var contentInnerElem = '';\n for (var i = 0; i < enterSplitText.length; i++) {\n if (enterSplitText[i].trim() === '') {\n contentInnerElem += getDefaultValue(this.parent);\n }\n else {\n var contentWithSpace = '';\n var spaceBetweenContent = true;\n var spaceSplit = enterSplitText[i].split(' ');\n for (var j = 0; j < spaceSplit.length; j++) {\n if (spaceSplit[j].trim() === '') {\n contentWithSpace += spaceBetweenContent ? ' ' : ' ';\n }\n else {\n spaceBetweenContent = false;\n contentWithSpace += spaceSplit[j] + ' ';\n }\n }\n if (i === 0) {\n contentInnerElem += '' + contentWithSpace.trim() + '';\n }\n else {\n contentInnerElem += '

      ' + contentWithSpace.trim() + '

      ';\n }\n }\n }\n var divElement = this.parent.createElement('div');\n divElement.setAttribute('class', 'pasteContent');\n divElement.style.display = 'inline';\n divElement.innerHTML = contentInnerElem.replace('¶', '&para');\n var paraElem = divElement.querySelectorAll('span, p');\n for (var i = 0; i < paraElem.length; i++) {\n var splitTextContent = paraElem[i].innerHTML.split(' ');\n var resultSplitContent = '';\n for (var j = 0; j < splitTextContent.length; j++) {\n if (splitTextContent[j].match(httpRegex) || splitTextContent[j].match(wwwRegex)) {\n resultSplitContent += '' + splitTextContent[j] + ' ';\n }\n else {\n resultSplitContent += splitTextContent[j] + ' ';\n }\n }\n paraElem[i].innerHTML = resultSplitContent.trim();\n }\n if (!isNullOrUndefined(this.parent.pasteCleanupModule)) {\n e.callBack(divElement.innerHTML);\n }\n else {\n this.parent.formatter.editorManager.execCommand('insertHTML', null, null, null, divElement);\n }\n }\n };\n HtmlEditor.prototype.spaceLink = function (e) {\n var range = this.nodeSelectionObj.getRange(this.contentRenderer.getDocument());\n var selectNodeEle = this.nodeSelectionObj.getParentNodeCollection(range);\n var text = range.startContainer.textContent.substr(0, range.endOffset);\n var splitText = text.split(' ');\n var urlText = splitText[splitText.length - 1];\n var urlTextRange = range.startOffset - (text.length - splitText[splitText.length - 1].length);\n urlText = urlText.slice(0, urlTextRange);\n // eslint-disable-next-line\n var regex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (selectNodeEle[0].nodeName !== 'A' && urlText.match(regex)) {\n var selection = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n var url = urlText.indexOf('http') > -1 ? urlText : 'http://' + urlText;\n var selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n var value = {\n url: url,\n selection: selection, selectParent: selectParent,\n text: urlText,\n title: '',\n target: '_blank'\n };\n this.parent.formatter.process(this.parent, {\n item: {\n 'command': 'Links',\n 'subCommand': 'CreateLink'\n }\n }, e, value);\n }\n };\n HtmlEditor.prototype.onToolbarClick = function (args) {\n var _this = this;\n var save;\n var selectNodeEle;\n var selectParentEle;\n var item = args.item;\n var closestElement = closest(args.originalEvent.target, '.e-rte-quick-popup');\n var target = args.originalEvent.target;\n this.parent.notify(events.closeTooltip, { target: target });\n if (item.command !== 'FormatPainter') {\n if (closestElement && !closestElement.classList.contains('e-rte-inline-popup') && !closestElement.classList.contains('e-rte-text-popup')) {\n if (!(item.subCommand === 'SourceCode' || item.subCommand === 'Preview' ||\n item.subCommand === 'FontColor' || item.subCommand === 'BackgroundColor')) {\n if (isIDevice() && item.command === 'Images') {\n this.nodeSelectionObj.restore();\n }\n var range = this.nodeSelectionObj.getRange(this.parent.contentModule.getDocument());\n save = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n selectNodeEle = this.nodeSelectionObj.getNodeCollection(range);\n selectParentEle = this.nodeSelectionObj.getParentNodeCollection(range);\n }\n if (item.command === 'Images') {\n this.parent.notify(events.imageToolbarAction, {\n member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Audios') {\n this.parent.notify(events.audioToolbarAction, {\n member: 'audio', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Videos') {\n this.parent.notify(events.videoToolbarAction, {\n member: 'video', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Links') {\n this.parent.notify(events.linkToolbarAction, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Table') {\n this.parent.notify(events.tableToolbarAction, {\n member: 'table', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n }\n else {\n var linkDialog = document.getElementById(this.parent.getID() + '_rtelink');\n var imageDialog = document.getElementById(this.parent.getID() + '_image');\n if (!(item.subCommand === 'SourceCode' || item.subCommand === 'Preview' ||\n item.subCommand === 'FontColor' || item.subCommand === 'BackgroundColor')) {\n var range = this.nodeSelectionObj.getRange(this.parent.contentModule.getDocument());\n if (isNullOrUndefined(linkDialog) && isNullOrUndefined(imageDialog)) {\n save = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n }\n selectNodeEle = this.nodeSelectionObj.getNodeCollection(range);\n selectParentEle = this.nodeSelectionObj.getParentNodeCollection(range);\n }\n switch (item.subCommand) {\n case 'Maximize':\n this.parent.notify(events.enableFullScreen, { args: args });\n break;\n case 'Minimize':\n this.parent.notify(events.disableFullScreen, { args: args });\n break;\n case 'CreateLink':\n this.parent.notify(events.insertLink, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'RemoveLink':\n this.parent.notify(events.unLink, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Print':\n this.parent.print();\n break;\n case 'Image':\n this.parent.notify(events.insertImage, {\n member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Audio':\n this.parent.notify(events.insertAudio, {\n member: 'audio', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Video':\n this.parent.notify(events.insertVideo, {\n member: 'video', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'CreateTable':\n this.parent.notify(events.createTable, {\n member: 'table', args: args, selection: save\n });\n break;\n case 'SourceCode':\n this.parent.notify(events.sourceCode, { member: 'viewSource', args: args });\n break;\n case 'Preview':\n this.parent.notify(events.updateSource, { member: 'updateSource', args: args });\n break;\n case 'FontColor':\n case 'BackgroundColor':\n break;\n case 'File':\n this.parent.notify(events.renderFileManager, {\n member: 'fileManager', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'EmojiPicker':\n this.parent.notify(events.emojiPicker, { member: 'emojiPicker', args: args });\n break;\n default:\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n break;\n }\n }\n }\n else {\n if (args.originalEvent.detail === 1) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = setTimeout(function () {\n _this.parent.notify(events.formatPainterClick, {\n member: 'formatPainter', args: args\n });\n }, 200);\n }\n else {\n clearTimeout(this.clickTimeout);\n this.parent.notify(events.formatPainterDoubleClick, {\n member: 'formatPainter', args: args\n });\n }\n }\n };\n HtmlEditor.prototype.renderColorPicker = function (args) {\n this.colorPickerModule.renderColorPickerInput(args);\n };\n HtmlEditor.prototype.instantiateRenderer = function () {\n if (this.parent.iframeSettings.enable) {\n this.renderFactory.addRenderer(RenderType.Content, new IframeContentRender(this.parent, this.locator));\n }\n else {\n this.renderFactory.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n }\n };\n HtmlEditor.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.htmlToolbarClick, this.onToolbarClick);\n this.parent.off(events.renderColorPicker, this.renderColorPicker);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.initialLoad, this.instantiateRenderer);\n this.parent.off(events.selectAll, this.selectAll);\n this.parent.off(events.selectRange, this.selectRange);\n this.parent.off(events.getSelectedHtml, this.getSelectedHtml);\n this.parent.off(events.selectionSave, this.onSelectionSave);\n this.parent.off(events.selectionRestore, this.onSelectionRestore);\n this.parent.off(events.readOnlyMode, this.updateReadOnly);\n this.parent.off(events.paste, this.onPaste);\n this.parent.off(events.tableclass, this.isTableClassAdded);\n };\n HtmlEditor.prototype.render = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps, undoRedoTimer: this.parent.undoRedoTimer };\n if (isNullOrUndefined(this.parent.formatter)) {\n var formatterClass = new HTMLFormatter({\n currentDocument: this.contentRenderer.getDocument(),\n element: editElement,\n options: option,\n formatPainterSettings: this.parent.formatPainterSettings\n });\n this.parent.setProperties({ formatter: formatterClass }, true);\n }\n else {\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n if (this.parent.enableXhtml) {\n this.parent.notify(events.xhtmlValidation, {});\n }\n if (this.parent.toolbarSettings.enable) {\n this.toolbarUpdate = new HtmlToolbarStatus(this.parent);\n }\n if (this.parent.inlineMode.enable) {\n if (!isNullOrUndefined(this.parent.fontFamily.default)) {\n editElement.style.fontFamily = this.parent.fontFamily.default;\n }\n if (!isNullOrUndefined(this.parent.fontSize.default)) {\n editElement.style.fontSize = this.parent.fontSize.default;\n }\n }\n this.parent.notify(events.bindOnEnd, {});\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the editor model\n * @returns {void}\n * @hidden\n\n */\n HtmlEditor.prototype.onPropertyChanged = function (e) {\n // On property code change here\n if (!isNOU(e) && !isNOU(e.newProp.toolbarSettings) && !isNOU(e.newProp.toolbarSettings.enable)) {\n this.toolbarUpdate = new HtmlToolbarStatus(this.parent);\n }\n if (!isNullOrUndefined(e.newProp.formatter)) {\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps,\n undoRedoTimer: this.parent.undoRedoTimer };\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string value\n * @hidden\n */\n HtmlEditor.prototype.getModuleName = function () {\n return 'htmlEditor';\n };\n /**\n * For selecting all content in RTE\n *\n * @returns {void}\n * @private\n * @hidden\n */\n HtmlEditor.prototype.selectAll = function () {\n var nodes = getTextNodesUnder(this.parent.contentModule.getDocument(), this.parent.contentModule.getEditPanel());\n if (nodes.length > 0) {\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.parent.contentModule.getDocument(), nodes[0], nodes[nodes.length - 1], 0, nodes[nodes.length - 1].textContent.length);\n }\n };\n /**\n * For selecting all content in RTE\n *\n * @param {NotifyArgs} e - specifies the notified arguments\n * @returns {void}\n * @private\n * @hidden\n */\n HtmlEditor.prototype.selectRange = function (e) {\n this.parent.formatter.editorManager.nodeSelection.setRange(this.parent.contentModule.getDocument(), e.range);\n };\n /**\n * For get a selected text in RTE\n *\n * @param {NotifyArgs} e - specifies the notified arguments\n * @returns {void}\n * @hidden\n */\n HtmlEditor.prototype.getSelectedHtml = function (e) {\n e.callBack(this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument()).toString());\n };\n return HtmlEditor;\n}());\nexport { HtmlEditor };\n","import { detach, getUniqueID, append, closest, selectAll, select, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, Browser, isNullOrUndefined, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isCollide, Tooltip } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { RenderType } from '../base/enum';\nimport { setToolbarStatus, updateUndoRedoStatus, isIDevice } from '../base/util';\nimport { BaseToolbar } from './base-toolbar';\nimport { DropDownButtons } from './dropdown-buttons';\nimport { ColorPickerInput } from './color-picker';\n/**\n * `Quick toolbar` module is used to handle Quick toolbar actions.\n */\nvar BaseQuickToolbar = /** @class */ (function () {\n function BaseQuickToolbar(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.isRendered = false;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.popupRenderer = this.renderFactory.getRenderer(RenderType.Popup);\n this.dropDownButtons = new DropDownButtons(this.parent, this.locator);\n this.colorPickerObj = new ColorPickerInput(this.parent, this.locator);\n }\n BaseQuickToolbar.prototype.appendPopupContent = function () {\n this.toolbarElement = this.parent.createElement('div', { className: classes.CLS_QUICK_TB });\n if (this.element.classList.contains(classes.CLS_TEXT_POP)) {\n this.toolbarElement.classList.add(classes.CLS_TEXT_QUICK_TB);\n }\n this.element.appendChild(this.toolbarElement);\n };\n /**\n * render method\n *\n * @param {IQuickToolbarOptions} args - specifies the arguments\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.render = function (args) {\n var className;\n if (args.popupType === 'Image') {\n className = classes.CLS_IMAGE_POP;\n }\n else if (args.popupType === 'Inline') {\n className = classes.CLS_INLINE_POP;\n }\n else if (args.popupType === 'Text') {\n className = classes.CLS_TEXT_POP;\n }\n else {\n className = '';\n }\n var popupId = getUniqueID(args.popupType + '_Quick_Popup');\n this.stringItems = args.toolbarItems;\n this.element = this.parent.createElement('div', { id: popupId, className: className + ' ' + classes.CLS_RTE_ELEMENTS });\n this.element.setAttribute('aria-owns', this.parent.getID());\n this.appendPopupContent();\n this.createToolbar(args.toolbarItems, args.mode, args.cssClass);\n this.popupRenderer.renderPopup(this);\n this.addEventListener();\n };\n BaseQuickToolbar.prototype.createToolbar = function (items, mode, cssClass) {\n this.quickTBarObj = new BaseToolbar(this.parent, this.locator);\n this.quickTBarObj.render({\n container: 'quick',\n target: this.toolbarElement,\n items: items,\n mode: mode,\n cssClass: cssClass\n });\n this.quickTBarObj.toolbarObj.refresh();\n };\n BaseQuickToolbar.prototype.setPosition = function (e) {\n var x;\n var y;\n var imgWrapper = closest(e.target, '.e-img-caption');\n var isAligned = (e.target.classList.contains('e-imginline') ||\n e.target.classList.contains('e-imgbreak')) ? false : true;\n var target = !isNOU(imgWrapper) ? imgWrapper : e.target;\n addClass([this.toolbarElement], [classes.CLS_RM_WHITE_SPACE]);\n var targetOffsetTop;\n if (!isNOU(closest(target, 'table'))) {\n targetOffsetTop = target.offsetTop;\n var parentTable = closest(target, 'table');\n while (!isNOU(parentTable)) {\n targetOffsetTop += parentTable.offsetTop;\n parentTable = closest(parentTable.parentElement, 'table');\n }\n }\n else {\n targetOffsetTop = (target.classList.contains(\"e-rte-audio\")) ? target.parentElement.offsetTop : target.offsetTop;\n }\n var parentOffsetTop = window.pageYOffset + e.parentData.top;\n if ((targetOffsetTop - e.editTop) > e.popHeight) {\n y = parentOffsetTop + e.tBarElementHeight + (targetOffsetTop - e.editTop) - e.popHeight - 5;\n }\n else if (((e.editTop + e.editHeight) - (targetOffsetTop + target.offsetHeight)) > e.popHeight) {\n y = parentOffsetTop + e.tBarElementHeight + (targetOffsetTop - e.editTop) + target.offsetHeight + 5;\n }\n else {\n y = e.y;\n }\n target = isAligned ? e.target : target;\n var targetOffsetLeft;\n if (!isNOU(closest(target, 'table'))) {\n targetOffsetLeft = target.offsetLeft;\n var parentTable = closest(target.parentElement, 'td');\n while (!isNOU(parentTable)) {\n targetOffsetLeft += parentTable.offsetLeft;\n parentTable = closest(parentTable.parentElement, 'table');\n }\n }\n else {\n targetOffsetLeft = (target.classList.contains(\"e-rte-audio\")) ? target.parentElement.offsetLeft : target.offsetLeft;\n }\n if (target.offsetWidth > e.popWidth) {\n x = (target.offsetWidth / 2) - (e.popWidth / 2) + e.parentData.left + targetOffsetLeft;\n }\n else {\n x = e.parentData.left + targetOffsetLeft;\n }\n this.popupObj.position.X = ((x + e.popWidth) > e.parentData.right) ? e.parentData.right - e.popWidth : x;\n this.popupObj.position.Y = (y >= 0) ? y : e.y + 5;\n this.popupObj.dataBind();\n removeClass([this.toolbarElement], [classes.CLS_RM_WHITE_SPACE]);\n };\n BaseQuickToolbar.prototype.checkCollision = function (e, viewPort, type) {\n var x;\n var y;\n var parentTop = e.parentData.top;\n var contentTop = e.windowY + parentTop + e.tBarElementHeight;\n var collision = [];\n if (viewPort === 'document') {\n collision = isCollide(e.popup);\n }\n else {\n collision = isCollide(e.popup, e.parentElement);\n }\n for (var i = 0; i < collision.length; i++) {\n switch (collision[i]) {\n case 'top':\n if (viewPort === 'document') {\n y = e.windowY;\n }\n else {\n y = (window.pageYOffset + parentTop) + e.tBarElementHeight;\n }\n break;\n case 'bottom': {\n var posY = void 0;\n if (viewPort === 'document') {\n if (type === 'inline' || type === 'text') {\n posY = (e.y - e.popHeight - 10);\n }\n else {\n if ((e.windowHeight - (parentTop + e.tBarElementHeight)) > e.popHeight) {\n if ((contentTop - e.windowHeight) > e.popHeight) {\n posY = (contentTop + (e.windowHeight - parentTop)) - e.popHeight;\n }\n else {\n posY = contentTop;\n }\n }\n else {\n posY = e.windowY + (parentTop + e.tBarElementHeight);\n }\n }\n }\n else {\n if (e.target.tagName !== 'IMG') {\n posY = (e.parentData.bottom + window.pageYOffset) - e.popHeight - 10;\n }\n else {\n posY = (e.parentData.bottom + window.pageYOffset) - e.popHeight - 5;\n }\n }\n y = posY;\n break;\n }\n case 'right':\n if (type === 'inline' || type === 'text') {\n x = window.pageXOffset + (e.windowWidth - (e.popWidth + e.bodyRightSpace + 10));\n }\n else {\n x = e.x - e.popWidth;\n }\n break;\n case 'left':\n if (type === 'inline' || type === 'text') {\n x = 0;\n }\n else {\n x = e.parentData.left;\n }\n break;\n }\n }\n this.popupObj.position.X = (x) ? x : this.popupObj.position.X;\n this.popupObj.position.Y = (y) ? y : this.popupObj.position.Y;\n this.popupObj.dataBind();\n };\n /**\n * showPopup method\n *\n * @param {number} x - specifies the x value\n * @param {number} y - specifies the y value\n * @param {Element} target - specifies the element\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.showPopup = function (x, y, target, type) {\n var _this = this;\n var eventArgs = { popup: this.popupObj, cancel: false, targetElement: target,\n positionX: x, positionY: y };\n this.parent.trigger(events.beforeQuickToolbarOpen, eventArgs, function (beforeQuickToolbarArgs) {\n if (!beforeQuickToolbarArgs.cancel) {\n var editPanelTop = void 0;\n var editPanelHeight = void 0;\n var bodyStyle = window.getComputedStyle(document.body);\n var bodyRight = parseFloat(bodyStyle.marginRight.split('px')[0]) + parseFloat(bodyStyle.paddingRight.split('px')[0]);\n var windowHeight = window.innerHeight;\n var windowWidth = window.innerWidth;\n var parent_1 = _this.parent.element;\n var toolbarAvail = !isNullOrUndefined(_this.parent.getToolbar());\n var tbHeight = toolbarAvail && _this.parent.toolbarModule.getToolbarHeight();\n var expTBHeight = toolbarAvail && _this.parent.toolbarModule.getExpandTBarPopHeight();\n var tBarHeight = (toolbarAvail) ? (tbHeight + expTBHeight) : 0;\n addClass([_this.element], [classes.CLS_HIDE]);\n if (Browser.isDevice && !isIDevice()) {\n addClass([_this.parent.getToolbar()], [classes.CLS_HIDE]);\n }\n if (_this.parent.iframeSettings.enable) {\n var cntEle = _this.contentRenderer.getPanel().contentWindow;\n editPanelTop = cntEle.pageYOffset;\n editPanelHeight = cntEle.innerHeight;\n }\n else {\n var cntEle = closest(target, '.' + classes.CLS_RTE_CONTENT);\n editPanelTop = (cntEle) ? cntEle.scrollTop : 0;\n editPanelHeight = (cntEle) ? cntEle.offsetHeight : 0;\n }\n if ((!_this.parent.inlineMode.enable && !closest(target, 'table') && type !== 'text' && type !== 'link') || target.tagName === 'IMG') {\n _this.parent.disableToolbarItem(_this.parent.toolbarSettings.items);\n _this.parent.enableToolbarItem(['Undo', 'Redo']);\n }\n else {\n _this.parent.enableToolbarItem(_this.parent.toolbarSettings.items);\n }\n append([_this.element], document.body);\n if (_this.parent.showTooltip) {\n _this.tooltip = new Tooltip({\n target: '#' + _this.element.id + ' [title]',\n openDelay: 400,\n showTipPointer: true,\n beforeRender: _this.tooltipBeforeRender.bind(_this),\n windowCollision: true,\n position: 'BottomCenter',\n cssClass: _this.parent.getCssClass()\n });\n _this.tooltip.appendTo(_this.element);\n }\n _this.popupObj.position.X = beforeQuickToolbarArgs.positionX + 20;\n _this.popupObj.position.Y = beforeQuickToolbarArgs.positionY + 20;\n _this.popupObj.dataBind();\n _this.popupObj.element.classList.add('e-popup-open');\n _this.dropDownButtons.renderDropDowns({\n container: _this.toolbarElement,\n containerType: 'quick',\n items: _this.stringItems\n });\n _this.colorPickerObj.renderColorPickerInput({\n container: _this.toolbarElement,\n containerType: 'quick',\n items: _this.stringItems\n });\n var showPopupData = {\n x: x, y: y,\n target: target,\n editTop: editPanelTop,\n editHeight: editPanelHeight,\n popup: _this.popupObj.element,\n popHeight: _this.popupObj.element.offsetHeight,\n popWidth: _this.popupObj.element.offsetWidth,\n parentElement: parent_1,\n bodyRightSpace: bodyRight,\n windowY: window.pageYOffset,\n windowHeight: windowHeight,\n windowWidth: windowWidth,\n parentData: parent_1.getBoundingClientRect(),\n tBarElementHeight: tBarHeight\n };\n if ((closest(target, 'TABLE') || target.tagName === 'IMG' || target.tagName === 'AUDIO' || target.tagName === 'VIDEO' || target.tagName === 'IFRAME' || (target.classList &&\n (target.classList.contains(classes.CLS_AUDIOWRAP) || target.classList.contains(classes.CLS_CLICKELEM) ||\n target.classList.contains(classes.CLS_VID_CLICK_ELEM)))) && (x == beforeQuickToolbarArgs.positionX || y == beforeQuickToolbarArgs.positionY)) {\n _this.setPosition(showPopupData);\n }\n if (!_this.parent.inlineMode.enable) {\n _this.checkCollision(showPopupData, 'parent', '');\n }\n _this.checkCollision(showPopupData, 'document', ((_this.parent.inlineMode.enable) ? 'inline' : (type === 'text') ? 'text' : ''));\n _this.popupObj.element.classList.remove('e-popup-open');\n removeClass([_this.element], [classes.CLS_HIDE]);\n _this.popupObj.show({ name: 'ZoomIn', duration: (Browser.isIE ? 250 : 400) });\n if (_this.popupObj && _this.parent.cssClass) {\n removeClass([_this.popupObj.element], _this.parent.cssClass);\n addClass([_this.popupObj.element], _this.parent.cssClass);\n }\n setStyleAttribute(_this.element, {\n maxWidth: window.outerWidth + 'px'\n });\n addClass([_this.element], [classes.CLS_POP]);\n _this.isRendered = true;\n }\n });\n };\n BaseQuickToolbar.prototype.tooltipBeforeRender = function (args) {\n if (args.target.querySelector('.e-active')) {\n args.cancel = true;\n }\n };\n /**\n * hidePopup method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.hidePopup = function () {\n var viewSourcePanel = this.parent.sourceCodeModule.getViewPanel();\n if (Browser.isDevice && !isIDevice()) {\n removeClass([this.parent.getToolbar()], [classes.CLS_HIDE]);\n }\n if (!isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {\n if (!isNullOrUndefined(document.querySelector('#' + this.element.id + ' [data-tooltip-id]'))) {\n var tooltipTargetEle = document.querySelector('#' + this.element.id + ' [data-tooltip-id]');\n var dataContent = tooltipTargetEle.getAttribute('data-content');\n tooltipTargetEle.removeAttribute('data-content');\n tooltipTargetEle.setAttribute('title', dataContent);\n tooltipTargetEle.removeAttribute('data-tooltip-id');\n }\n this.tooltip.destroy();\n }\n else {\n if (!isNullOrUndefined(this.tooltip)) {\n this.tooltip.destroy();\n }\n }\n if (!isNullOrUndefined(this.parent.getToolbar()) && !this.parent.inlineMode.enable) {\n if (isNullOrUndefined(viewSourcePanel) || viewSourcePanel.style.display === 'none') {\n this.parent.enableToolbarItem(this.parent.toolbarSettings.items);\n }\n }\n this.removeEleFromDOM();\n this.isRendered = false;\n };\n /**\n * @param {string} item - specifies the string value\n * @param {number} index - specifies the index value\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.addQTBarItem = function (item, index) {\n this.quickTBarObj.toolbarObj.addItems(this.quickTBarObj.getItems(item, 'toolbar'), index);\n };\n /**\n * @param {number} index - specifies the index value\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.removeQTBarItem = function (index) {\n this.quickTBarObj.toolbarObj.removeItems(index);\n };\n BaseQuickToolbar.prototype.removeEleFromDOM = function () {\n var element = this.popupObj.element;\n if (this.isRendered) {\n this.dropDownButtons.destroyDropDowns();\n this.colorPickerObj.destroyColorPicker();\n removeClass([this.element], [classes.CLS_POP]);\n detach(element);\n var args = this.popupObj;\n this.parent.trigger(events.quickToolbarClose, args);\n }\n };\n BaseQuickToolbar.prototype.updateStatus = function (args) {\n var options = {\n args: args,\n dropDownModule: this.dropDownButtons,\n parent: this.parent,\n tbElements: selectAll('.' + classes.CLS_TB_ITEM, this.element),\n tbItems: this.quickTBarObj.toolbarObj.items\n };\n setToolbarStatus(options, true, this.parent);\n if (this.parent.quickToolbarSettings.text && this.parent.quickToolbarModule.textQTBar) {\n var options_1 = {\n args: args,\n dropDownModule: this.parent.quickToolbarModule.textQTBar.dropDownButtons,\n parent: this.parent,\n tbElements: selectAll('.' + classes.CLS_TB_ITEM, this.parent.quickToolbarModule.textQTBar.element),\n tbItems: this.parent.quickToolbarModule.textQTBar.quickTBarObj.toolbarObj.items\n };\n setToolbarStatus(options_1, true, this.parent);\n updateUndoRedoStatus(this.parent.quickToolbarModule.textQTBar.quickTBarObj, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n if (!select('.' + classes.CLS_RTE_SOURCE_CODE_TXTAREA, this.parent.element)) {\n updateUndoRedoStatus(this.parent.getBaseToolbarObject(), this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n };\n /**\n * Destroys the Quick toolbar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.destroy = function () {\n if (this.popupObj && !this.popupObj.isDestroyed) {\n this.popupObj.destroy();\n this.removeEleFromDOM();\n }\n this.removeEventListener();\n };\n /**\n * addEventListener method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n if (this.parent.inlineMode.enable || this.parent.quickToolbarSettings.text) {\n this.parent.on(events.toolbarUpdated, this.updateStatus, this);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the model element\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.inlineMode)) {\n for (var _i = 0, _a = Object.keys(e.newProp.inlineMode); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enable':\n if (e.newProp.inlineMode.enable) {\n this.parent.on(events.toolbarUpdated, this.updateStatus, this);\n }\n else {\n this.parent.off(events.toolbarUpdated, this.updateStatus);\n }\n break;\n }\n }\n }\n };\n /**\n * removeEventListener method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n if (this.parent.inlineMode.enable || this.parent.quickToolbarSettings.text) {\n this.parent.off(events.toolbarUpdated, this.updateStatus);\n }\n };\n return BaseQuickToolbar;\n}());\nexport { BaseQuickToolbar };\n","import { Popup } from '@syncfusion/ej2-popups';\nimport { CLS_QUICK_POP } from '../base/classes';\nimport * as events from '../base/constant';\n/**\n * `Popup renderer` module is used to render popup in RichTextEditor.\n *\n * @hidden\n\n */\nvar PopupRenderer = /** @class */ (function () {\n /**\n * Constructor for popup renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent.\n */\n function PopupRenderer(parent) {\n this.parent = parent;\n }\n PopupRenderer.prototype.quickToolbarOpen = function () {\n var args = this.popupObj;\n this.parent.trigger(events.quickToolbarOpen, args);\n };\n /**\n * renderPopup method\n *\n * @param {BaseQuickToolbar} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n PopupRenderer.prototype.renderPopup = function (args) {\n this.setPanel(args.element);\n this.renderPanel();\n args.popupObj = new Popup(args.element, {\n targetType: 'relative',\n relateTo: this.parent.element,\n open: this.quickToolbarOpen.bind(this)\n });\n this.popupObj = args.popupObj;\n args.popupObj.hide();\n };\n /**\n * The function is used to add popup class in Quick Toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n PopupRenderer.prototype.renderPanel = function () {\n this.getPanel().classList.add(CLS_QUICK_POP);\n };\n /**\n * Get the popup element of RichTextEditor\n *\n * @returns {Element} - specifies the element\n * @hidden\n\n */\n PopupRenderer.prototype.getPanel = function () {\n return this.popupPanel;\n };\n /**\n * Set the popup element of RichTextEditor\n *\n * @returns {void}\n * @param {Element} panel - specifies the element\n * @hidden\n\n */\n PopupRenderer.prototype.setPanel = function (panel) {\n this.popupPanel = panel;\n };\n return PopupRenderer;\n}());\nexport { PopupRenderer };\n","import { select, isNullOrUndefined, Browser, addClass, removeClass, EventHandler, closest, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\nimport { pageYOffset, hasClass, isIDevice } from '../base/util';\nimport { BaseQuickToolbar } from './base-quick-toolbar';\nimport { PopupRenderer } from '../renderer/popup-renderer';\nimport { CLS_INLINE_POP, CLS_INLINE, CLS_VID_CLICK_ELEM } from '../base/classes';\n/**\n * `Quick toolbar` module is used to handle Quick toolbar actions.\n */\nvar QuickToolbar = /** @class */ (function () {\n function QuickToolbar(parent, locator) {\n this.debounceTimeout = 1000;\n this.parent = parent;\n this.locator = locator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.renderFactory.addRenderer(RenderType.Popup, new PopupRenderer(this.parent));\n this.addEventListener();\n }\n QuickToolbar.prototype.formatItems = function (items) {\n var formattedItems = [];\n items.forEach(function (item) {\n if (typeof item === 'string') {\n switch (item.toLocaleLowerCase()) {\n case 'open':\n formattedItems.push('openLink');\n break;\n case 'edit':\n formattedItems.push('editLink');\n break;\n case 'unlink':\n formattedItems.push('removeLink');\n break;\n default:\n formattedItems.push(item);\n break;\n }\n }\n else {\n formattedItems.push(item);\n }\n });\n return formattedItems;\n };\n QuickToolbar.prototype.getQTBarOptions = function (popType, mode, items, type) {\n return {\n popupType: popType,\n toolbarItems: items,\n mode: mode,\n renderType: type,\n cssClass: this.parent.getCssClass()\n };\n };\n /**\n * createQTBar method\n *\n * @param {string} popupType - specifies the string value\n * @param {string} mode - specifies the string value.\n * @param {string} items - specifies the string.\n * @param {RenderType} type - specifies the render type.\n * @returns {BaseQuickToolbar} - specifies the quick toolbar\n * @hidden\n\n */\n QuickToolbar.prototype.createQTBar = function (popupType, mode, items, type) {\n if (items.length < 1) {\n return null;\n }\n var qTBar = new BaseQuickToolbar(this.parent, this.locator);\n qTBar.render(this.getQTBarOptions(popupType, mode, this.formatItems(items), type));\n return qTBar;\n };\n QuickToolbar.prototype.initializeQuickToolbars = function () {\n this.parent.quickToolbarModule = this;\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n if (this.parent.inlineMode.enable && this.parent.inlineMode.onSelection && isIDevice()) {\n EventHandler.add(this.contentRenderer.getDocument(), 'selectionchange', this.selectionChangeHandler, this);\n }\n };\n // eslint-disable-next-line\n QuickToolbar.prototype.onMouseDown = function (e) {\n this.parent.isBlur = false;\n this.parent.isRTE = true;\n };\n QuickToolbar.prototype.keyUpQT = function (e) {\n if (e.which === 27) {\n this.hideQuickToolbars();\n }\n };\n QuickToolbar.prototype.renderQuickToolbars = function () {\n if (this.linkQTBar || this.imageQTBar || this.audioQTBar || this.videoQTBar || this.textQTBar || this.tableQTBar) {\n return;\n }\n this.linkQTBar = this.createQTBar('Link', 'Scrollable', this.parent.quickToolbarSettings.link, RenderType.LinkToolbar);\n this.renderFactory.addRenderer(RenderType.LinkToolbar, this.linkQTBar);\n if (!isNOU(this.parent.quickToolbarSettings.text) && !this.parent.inlineMode.enable) {\n this.textQTBar = this.createQTBar('Text', 'MultiRow', this.parent.quickToolbarSettings.text, RenderType.TextToolbar);\n this.renderFactory.addRenderer(RenderType.TextToolbar, this.textQTBar);\n }\n this.imageQTBar = this.createQTBar('Image', 'MultiRow', this.parent.quickToolbarSettings.image, RenderType.ImageToolbar);\n this.renderFactory.addRenderer(RenderType.ImageToolbar, this.imageQTBar);\n this.audioQTBar = this.createQTBar('Audio', 'MultiRow', this.parent.quickToolbarSettings.audio, RenderType.AudioToolbar);\n this.renderFactory.addRenderer(RenderType.AudioToolbar, this.audioQTBar);\n this.videoQTBar = this.createQTBar('Video', 'MultiRow', this.parent.quickToolbarSettings.video, RenderType.VideoToolbar);\n this.renderFactory.addRenderer(RenderType.VideoToolbar, this.videoQTBar);\n this.tableQTBar = this.createQTBar('Table', 'MultiRow', this.parent.quickToolbarSettings.table, RenderType.TableToolbar);\n this.renderFactory.addRenderer(RenderType.TableToolbar, this.tableQTBar);\n if (this.linkQTBar) {\n EventHandler.add(this.linkQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.linkQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.imageQTBar) {\n EventHandler.add(this.imageQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.imageQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.audioQTBar) {\n EventHandler.add(this.audioQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.audioQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.videoQTBar) {\n EventHandler.add(this.videoQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.videoQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.textQTBar) {\n EventHandler.add(this.textQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.textQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.tableQTBar) {\n EventHandler.add(this.tableQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.tableQTBar.element, 'keyup', this.keyUpQT, this);\n }\n };\n QuickToolbar.prototype.renderInlineQuickToolbar = function () {\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n addClass([this.parent.element], [CLS_INLINE]);\n this.inlineQTBar = this.createQTBar('Inline', 'MultiRow', this.parent.toolbarSettings.items, RenderType.InlineToolbar);\n this.renderFactory.addRenderer(RenderType.InlineToolbar, this.inlineQTBar);\n EventHandler.add(this.inlineQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.inlineQTBar.element, 'keyup', this.keyUpQT, this);\n }\n };\n /**\n * Method for showing the inline quick toolbar\n *\n * @param {number} x -specifies the value of x.\n * @param {number} y - specifies the y valu.\n * @param {HTMLElement} target - specifies the target element.\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.showInlineQTBar = function (x, y, target) {\n if (isNOU(this.parent) || this.parent.readonly || target.tagName.toLowerCase() === 'img' || this.inlineQTBar.element.querySelector('.e-rte-color-content')) {\n return;\n }\n this.inlineQTBar.showPopup(x, y, target);\n };\n /**\n * Method for hidding the inline quick toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.hideInlineQTBar = function () {\n if (this.inlineQTBar && !hasClass(this.inlineQTBar.element, 'e-popup-close')) {\n this.inlineQTBar.hidePopup();\n }\n };\n /**\n * Method for hidding the quick toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.hideQuickToolbars = function () {\n if (this.linkQTBar && !hasClass(this.linkQTBar.element, 'e-popup-close') && document.body.contains(this.linkQTBar.element)) {\n this.linkQTBar.hidePopup();\n }\n if (this.textQTBar && !hasClass(this.textQTBar.element, 'e-popup-close') && document.body.contains(this.textQTBar.element)) {\n this.textQTBar.hidePopup();\n }\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close') && document.body.contains(this.imageQTBar.element)) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close') && document.body.contains(this.audioQTBar.element)) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close') && document.body.contains(this.videoQTBar.element)) {\n this.videoQTBar.hidePopup();\n }\n if (this.tableQTBar && !hasClass(this.tableQTBar.element, 'e-popup-close') && document.body.contains(this.tableQTBar.element)) {\n this.tableQTBar.hidePopup();\n }\n if (!isNOU(this.parent) && this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.deBounce = function (x, y, target) {\n var _this = this;\n clearTimeout(this.deBouncer);\n this.deBouncer = window.setTimeout(function () {\n _this.showInlineQTBar(x, y, target);\n }, this.debounceTimeout);\n };\n QuickToolbar.prototype.mouseUpHandler = function (e) {\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n var args = e.args.touches ?\n e.args.changedTouches[0] : e.args;\n var range = this.parent.getRange();\n var target = e.args.target;\n if (isNullOrUndefined(select('.' + CLS_INLINE_POP, document.body))) {\n if (isIDevice() && e.touchData && e.touchData.prevClientX !== e.touchData.clientX\n && e.touchData.prevClientY !== e.touchData.clientY) {\n return;\n }\n this.hideInlineQTBar();\n var parentLeft = this.parent.element.getBoundingClientRect().left;\n this.offsetX = this.parent.iframeSettings.enable ? window.pageXOffset + parentLeft + args.clientX : args.pageX;\n this.offsetY = pageYOffset(args, this.parent.element, this.parent.iframeSettings.enable);\n if (target.nodeName === 'TEXTAREA') {\n this.showInlineQTBar(this.offsetX, this.offsetY, target);\n }\n else {\n var closestAnchor = closest(target, 'a');\n target = closestAnchor ? closestAnchor : target;\n var startNode = this.parent.getRange().startContainer.parentElement;\n var endNode = this.parent.getRange().endContainer.parentElement;\n if ((isNOU(closest(startNode, 'A')) || isNOU(closest(endNode, 'A'))) && (!closest(target, 'td,th') || !range.collapsed) &&\n (target.tagName !== 'IMG' || this.parent.getRange().startOffset !== this.parent.getRange().endOffset)) {\n if (this.parent.inlineMode.onSelection && range.collapsed) {\n return;\n }\n this.target = target;\n this.showInlineQTBar(this.offsetX, this.offsetY, target);\n }\n }\n }\n }\n if (!isNOU(this.textQTBar) && !isNOU(this.parent.quickToolbarSettings.text) && !this.parent.inlineMode.enable) {\n if (!isNOU(e) && !isNOU(e.name) && e.name === 'sourceCodeMouseDown') {\n return;\n }\n var args = e.args.touches ?\n e.args.changedTouches[0] : e.args;\n var target = e.args.target;\n this.hideQuickToolbars();\n var parentLeft = this.parent.element.getBoundingClientRect().left;\n this.offsetX = this.parent.iframeSettings.enable ? this.parent.element.ownerDocument.documentElement.scrollLeft\n + parentLeft + args.clientX : args.pageX;\n this.offsetY = pageYOffset(args, this.parent.element, this.parent.iframeSettings.enable);\n var range = this.parent.getRange();\n if ((range.endContainer.parentElement.tagName === range.startContainer.parentElement.tagName && (range.startContainer.parentElement.tagName === 'A' && range.endContainer.parentElement.tagName === 'A')) ||\n (target.tagName === 'IMG') || (target.tagName === 'VIDEO' || this.isEmbedVidElem(target)) || (target.tagName === 'AUDIO') || (target.childNodes[0] && target.childNodes[0].nodeType === 1 && target.childNodes[0].classList.contains('e-rte-audio')) ||\n (this.parent.getRange().startOffset === this.parent.getRange().endOffset)) {\n return;\n }\n this.target = target;\n this.textQTBar.showPopup(this.offsetX, this.offsetY, target, 'text');\n }\n };\n QuickToolbar.prototype.isEmbedVidElem = function (target) {\n if ((target && target.nodeType !== 3 && target.nodeName !== 'BR' && (target.classList && target.classList.contains(CLS_VID_CLICK_ELEM))) ||\n (target && target.nodeName === 'IFRAME')) {\n return true;\n }\n else {\n return false;\n }\n };\n QuickToolbar.prototype.keyDownHandler = function (e) {\n var preventHide = e.args.altKey;\n if (this.parent.inlineMode.enable && e.args.metaKey && e.args.keyCode === 65) {\n this.showInlineQTBar(this.offsetX, this.offsetY, e.args.target);\n return;\n }\n if (!preventHide) {\n if ((this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice()))\n && !isNullOrUndefined(select('.' + CLS_INLINE_POP, document))) {\n this.hideInlineQTBar();\n }\n if (this.textQTBar && !hasClass(this.textQTBar.element, 'e-popup-close')) {\n this.textQTBar.hidePopup();\n }\n }\n };\n QuickToolbar.prototype.inlineQTBarMouseDownHandler = function () {\n if ((this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice()))\n && !isNullOrUndefined(select('.' + CLS_INLINE_POP, document))) {\n this.hideInlineQTBar();\n }\n if (!isNOU(this.parent.quickToolbarSettings.text)) {\n if (this.textQTBar && !hasClass(this.textQTBar.element, 'e-popup-close') && document.body.contains(this.textQTBar.element)) {\n this.textQTBar.hidePopup();\n }\n }\n };\n QuickToolbar.prototype.keyUpHandler = function (e) {\n var args = e.args;\n if (this.parent.inlineMode.enable && !Browser.isDevice) {\n if (this.parent.inlineMode.onSelection) {\n if (this.parent.getSelection().length > 0) {\n if ((args.ctrlKey && args.keyCode === 65) || (args.shiftKey && (args.keyCode === 33 || args.keyCode === 34 ||\n args.keyCode === 35 || args.keyCode === 36 || args.keyCode === 37 || args.keyCode === 38 ||\n args.keyCode === 39 || args.keyCode === 40))) {\n this.showInlineQTBar(this.offsetX, this.offsetY, args.target);\n }\n }\n return;\n }\n this.deBounce(this.offsetX, this.offsetY, args.target);\n }\n if (this.parent.quickToolbarSettings.text && !Browser.isDevice) {\n if ((args.ctrlKey && args.keyCode === 65) || (args.shiftKey && (args.keyCode === 33 || args.keyCode === 34 ||\n args.keyCode === 35 || args.keyCode === 36 || args.keyCode === 37 || args.keyCode === 38 ||\n args.keyCode === 39 || args.keyCode === 40))) {\n this.textQTBar.showPopup(this.offsetX, this.offsetY, args.target, 'text');\n }\n }\n };\n QuickToolbar.prototype.selectionChangeHandler = function (e) {\n var _this = this;\n clearTimeout(this.deBouncer);\n this.deBouncer = window.setTimeout(function () {\n _this.onSelectionChange(e);\n }, this.debounceTimeout);\n };\n QuickToolbar.prototype.onSelectionChange = function (e) {\n if (!isNullOrUndefined(select('.' + CLS_INLINE_POP, document.body))) {\n return;\n }\n var selection = this.contentRenderer.getDocument().getSelection();\n if (!selection.isCollapsed) {\n this.mouseUpHandler({ args: e });\n }\n };\n /**\n * getInlineBaseToolbar method\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.getInlineBaseToolbar = function () {\n return this.inlineQTBar && this.inlineQTBar.quickTBarObj;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.destroy = function () {\n if (isNOU(this.parent)) {\n return;\n }\n if (this.linkQTBar) {\n EventHandler.remove(this.linkQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.linkQTBar.element, 'keyup', this.keyUpQT);\n this.linkQTBar.destroy();\n }\n if (this.textQTBar) {\n EventHandler.remove(this.textQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.textQTBar.element, 'keyup', this.keyUpQT);\n this.textQTBar.destroy();\n }\n if (this.imageQTBar) {\n EventHandler.remove(this.imageQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.imageQTBar.element, 'keyup', this.keyUpQT);\n this.imageQTBar.destroy();\n }\n if (this.audioQTBar) {\n EventHandler.remove(this.audioQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.audioQTBar.element, 'keyup', this.keyUpQT);\n this.audioQTBar.destroy();\n }\n if (this.videoQTBar) {\n EventHandler.remove(this.videoQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.videoQTBar.element, 'keyup', this.keyUpQT);\n this.videoQTBar.destroy();\n }\n if (this.tableQTBar) {\n EventHandler.remove(this.tableQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.tableQTBar.element, 'keyup', this.keyUpQT);\n this.tableQTBar.destroy();\n }\n if (this.inlineQTBar) {\n EventHandler.remove(this.inlineQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.inlineQTBar.element, 'keyup', this.keyUpQT);\n if (isIDevice()) {\n EventHandler.remove(document, 'selectionchange', this.selectionChangeHandler);\n }\n this.inlineQTBar.destroy();\n }\n this.removeEventListener();\n };\n QuickToolbar.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n QuickToolbar.prototype.wireInlineQTBarEvents = function () {\n this.parent.on(events.mouseUp, this.mouseUpHandler, this);\n this.parent.on(events.mouseDown, this.inlineQTBarMouseDownHandler, this);\n this.parent.on(events.keyDown, this.keyDownHandler, this);\n this.parent.on(events.keyUp, this.keyUpHandler, this);\n this.parent.on(events.sourceCodeMouseDown, this.mouseUpHandler, this);\n this.parent.on(events.renderInlineToolbar, this.renderInlineQuickToolbar, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n QuickToolbar.prototype.unWireInlineQTBarEvents = function () {\n this.parent.off(events.mouseUp, this.mouseUpHandler);\n this.parent.off(events.mouseDown, this.inlineQTBarMouseDownHandler);\n this.parent.off(events.keyDown, this.keyDownHandler);\n this.parent.off(events.keyUp, this.keyUpHandler);\n this.parent.off(events.sourceCodeMouseDown, this.mouseUpHandler);\n this.parent.off(events.renderInlineToolbar, this.renderInlineQuickToolbar);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n // eslint-disable-next-line\n QuickToolbar.prototype.toolbarUpdated = function (args) {\n if (this.linkQTBar && !hasClass(this.linkQTBar.element, 'e-popup-close')) {\n this.linkQTBar.hidePopup();\n }\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close')) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close')) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close')) {\n this.videoQTBar.hidePopup();\n }\n if (this.tableQTBar && !hasClass(this.tableQTBar.element, 'e-popup-close')) {\n this.tableQTBar.hidePopup();\n }\n };\n /**\n * addEventListener\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialEnd, this.initializeQuickToolbars, this);\n this.parent.on(events.mouseDown, this.renderQuickToolbars, this);\n this.parent.on(events.toolbarUpdated, this.toolbarUpdated, this);\n this.parent.on(events.drop, this.renderQuickToolbars, this);\n this.wireInlineQTBarEvents();\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n if (this.parent.quickToolbarSettings.actionOnScroll === 'hide') {\n this.parent.on(events.scroll, this.hideQuickToolbars, this);\n this.parent.on(events.contentscroll, this.hideQuickToolbars, this);\n }\n this.parent.on(events.focusChange, this.hideQuickToolbars, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.hidePopup, this.hideQuickToolbars, this);\n };\n QuickToolbar.prototype.onKeyDown = function (e) {\n var args = e.args;\n if (args.which === 8 || args.which === 46) {\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close')) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close')) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close')) {\n this.videoQTBar.hidePopup();\n }\n if (this.tableQTBar && !hasClass(this.tableQTBar.element, 'e-popup-close')) {\n this.tableQTBar.hidePopup();\n }\n if (this.linkQTBar && !hasClass(this.linkQTBar.element, 'e-popup-close')) {\n this.linkQTBar.hidePopup();\n }\n if (this.textQTBar && !hasClass(this.textQTBar.element, 'e-popup-close')) {\n this.textQTBar.hidePopup();\n }\n }\n };\n QuickToolbar.prototype.onIframeMouseDown = function () {\n this.hideQuickToolbars();\n this.hideInlineQTBar();\n };\n QuickToolbar.prototype.updateCss = function (baseQTObj, e) {\n if (baseQTObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass && baseQTObj.quickTBarObj.toolbarObj.cssClass !== e.cssClass)) {\n baseQTObj.quickTBarObj.toolbarObj.setProperties({ cssClass: (baseQTObj.quickTBarObj.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n baseQTObj.quickTBarObj.toolbarObj.setProperties({ cssClass: (baseQTObj.quickTBarObj.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n QuickToolbar.prototype.setCssClass = function (e) {\n var baseQuickToolbarObj = [\n this.inlineQTBar, this.imageQTBar, this.linkQTBar, this.textQTBar, this.tableQTBar\n ];\n for (var i = 0; i < baseQuickToolbarObj.length; i++) {\n this.updateCss(baseQuickToolbarObj[i], e);\n }\n };\n QuickToolbar.prototype.setRtl = function (args) {\n if (this.inlineQTBar) {\n this.inlineQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.imageQTBar) {\n this.imageQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.audioQTBar) {\n this.audioQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.videoQTBar) {\n this.videoQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.linkQTBar) {\n this.linkQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.textQTBar) {\n this.textQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n };\n /**\n * removeEventListener\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.removeEventListener = function () {\n if (this.deBouncer) {\n clearTimeout(this.deBouncer);\n }\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.initializeQuickToolbars);\n this.parent.off(events.mouseDown, this.renderQuickToolbars);\n this.parent.off(events.toolbarUpdated, this.toolbarUpdated);\n this.parent.off(events.drop, this.renderQuickToolbars);\n this.unWireInlineQTBarEvents();\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n if (this.parent.quickToolbarSettings.actionOnScroll === 'hide') {\n this.parent.off(events.scroll, this.hideQuickToolbars);\n this.parent.off(events.contentscroll, this.hideQuickToolbars);\n }\n this.parent.off(events.focusChange, this.hideQuickToolbars);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.hidePopup, this.hideQuickToolbars);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the element.\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.quickToolbarSettings)) {\n for (var _i = 0, _a = Object.keys(e.newProp.quickToolbarSettings); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'actionOnScroll':\n if (e.newProp.quickToolbarSettings.actionOnScroll === 'none') {\n this.parent.off(events.scroll, this.hideQuickToolbars);\n this.parent.off(events.contentscroll, this.hideQuickToolbars);\n }\n else {\n this.parent.on(events.scroll, this.hideQuickToolbars, this);\n this.parent.on(events.contentscroll, this.hideQuickToolbars, this);\n }\n break;\n }\n }\n }\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.inlineQTBar) {\n removeClass([this.parent.element], [CLS_INLINE]);\n this.unWireInlineQTBarEvents();\n this.hideInlineQTBar();\n }\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n addClass([this.parent.element], [CLS_INLINE]);\n this.wireInlineQTBarEvents();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n QuickToolbar.prototype.getModuleName = function () {\n return 'quickToolbar';\n };\n /**\n *\n * @returns {BaseQuickToolbar[]} - specifies the quick toolbar instance.\n * @hidden\n * @private\n */\n QuickToolbar.prototype.getQuickToolbarInstance = function () {\n return [this.linkQTBar, this.imageQTBar, this.audioQTBar, this.videoQTBar, this.tableQTBar, this.textQTBar, this.inlineQTBar];\n };\n return QuickToolbar;\n}());\nexport { QuickToolbar };\n","import { detach, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { CLS_COUNT, CLS_WARNING, CLS_ERROR } from '../base/classes';\n/**\n * `Count` module is used to handle Count actions.\n */\nvar Count = /** @class */ (function () {\n function Count(parent, serviceLocator) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n Count.prototype.initializeInstance = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.editPanel = this.contentRenderer.getEditPanel();\n this.addEventListener();\n };\n /**\n * renderCount method\n *\n * @returns {void}\n * @hidden\n\n */\n Count.prototype.renderCount = function () {\n this.initializeInstance();\n this.element = this.parent.createElement('span', { className: CLS_COUNT });\n this.contentRenderer.getPanel().parentElement.appendChild(this.element);\n this.appendCount();\n if (this.parent.maxLength !== -1) {\n this.charCountBackground(this.htmlLength);\n }\n };\n Count.prototype.appendCount = function () {\n var htmlText = this.parent.editorMode === 'Markdown' ? this.editPanel.value :\n (this.parent.getText().replace(/(\\r\\n|\\n|\\r|\\t)/gm, ''));\n if (this.parent.editorMode !== 'Markdown' && htmlText.indexOf('\\u200B') !== -1) {\n this.htmlLength = htmlText.replace(/\\u200B/g, '').length;\n }\n else {\n this.htmlLength = htmlText.length;\n }\n var string = this.parent.maxLength === -1 ? this.htmlLength : this.htmlLength + ' / ' + this.parent.maxLength;\n this.element.innerHTML = string;\n };\n Count.prototype.charCountBackground = function (htmlLength) {\n var percentage = (htmlLength / this.parent.maxLength) * 100;\n if (percentage < 85) {\n this.element.classList.remove(CLS_WARNING);\n this.element.classList.remove(CLS_ERROR);\n }\n else if (percentage > 85 && percentage <= 90) {\n this.element.classList.remove(CLS_ERROR);\n this.element.classList.add(CLS_WARNING);\n }\n else if (percentage > 90) {\n this.element.classList.remove(CLS_WARNING);\n this.element.classList.add(CLS_ERROR);\n }\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n Count.prototype.refresh = function () {\n if (!isNullOrUndefined(this.editPanel)) {\n this.appendCount();\n if (this.parent.maxLength !== -1) {\n this.charCountBackground(this.htmlLength);\n }\n }\n };\n /**\n * Destroys the Count.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n Count.prototype.destroy = function () {\n if (this.element && !isNullOrUndefined(this.parent.element.querySelector('.' + CLS_COUNT))) {\n detach(this.element);\n }\n this.removeEventListener();\n };\n Count.prototype.toggle = function (e) {\n this.element.style.display = (e.member === 'viewSource') ? 'none' : 'block';\n };\n Count.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialEnd, this.renderCount, this);\n this.parent.on(events.keyUp, this.refresh, this);\n this.parent.on(events.count, this.refresh, this);\n this.parent.on(events.refreshBegin, this.refresh, this);\n this.parent.on(events.mouseDown, this.refresh, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sourceCode, this.toggle, this);\n this.parent.on(events.updateSource, this.toggle, this);\n };\n Count.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.renderCount);\n this.parent.off(events.keyUp, this.refresh);\n this.parent.off(events.refreshBegin, this.refresh);\n this.parent.off(events.count, this.refresh);\n this.parent.off(events.mouseDown, this.refresh);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sourceCode, this.toggle);\n this.parent.off(events.updateSource, this.toggle);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string value\n */\n Count.prototype.getModuleName = function () {\n return 'count';\n };\n return Count;\n}());\nexport { Count };\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n/**\n * MaskedTextBox base module\n */\nimport { EventHandler, isNullOrUndefined, merge, attributes, addClass, removeClass, Browser, extend } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nvar ERROR = 'e-error';\nvar INPUTGROUP = 'e-input-group';\nvar FLOATINPUT = 'e-float-input';\nvar UTILMASK = 'e-utility-mask';\nvar TOPLABEL = 'e-label-top';\nvar BOTTOMLABEL = 'e-label-bottom';\n/**\n * @hidden\n * Built-in masking elements collection.\n */\nexport var regularExpressions = {\n '0': '[0-9]',\n '9': '[0-9 ]',\n '#': '[0-9 +-]',\n 'L': '[A-Za-z]',\n '?': '[A-Za-z ]',\n '&': '[^\\x7f ]+',\n 'C': '[^\\x7f]+',\n 'A': '[A-Za-z0-9]',\n 'a': '[A-Za-z0-9 ]'\n};\n/**\n * Generate required masking elements to the MaskedTextBox from user mask input.\n *\n * @hidden\n */\nexport function createMask() {\n attributes(this.element, {\n 'role': 'textbox', 'autocomplete': 'off', 'autocapitalize': 'off',\n 'spellcheck': 'false', 'aria-live': 'assertive'\n });\n if (this.mask) {\n var splitMask = this.mask.split(']');\n for (var i = 0; i < splitMask.length; i++) {\n if (splitMask[i][splitMask[i].length - 1] === '\\\\') {\n splitMask[i] = splitMask[i] + ']';\n var splitInnerMask = splitMask[i].split('[');\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j][splitInnerMask[j].length - 1] === '\\\\') {\n splitInnerMask[j] = splitInnerMask[j] + '[';\n }\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n else {\n var splitInnerMask = splitMask[i].split('[');\n if (splitInnerMask.length > 1) {\n var chkSpace = false;\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j] === '\\\\') {\n this.customRegExpCollec.push('[');\n this.hiddenMask += splitInnerMask[j] + '[';\n }\n else if (splitInnerMask[j] === '') {\n chkSpace = true;\n }\n else if ((splitInnerMask[j] !== '' && chkSpace) || j === splitInnerMask.length - 1) {\n this.customRegExpCollec.push('[' + splitInnerMask[j] + ']');\n this.hiddenMask += this.promptChar;\n chkSpace = false;\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[0]);\n }\n }\n }\n this.escapeMaskValue = this.hiddenMask;\n this.promptMask = this.hiddenMask.replace(/[09?LCAa#&]/g, this.promptChar);\n if (!isNullOrUndefined(this.customCharacters)) {\n for (var i = 0; i < this.promptMask.length; i++) {\n if (!isNullOrUndefined(this.customCharacters[this.promptMask[i]])) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n this.promptMask = this.promptMask.replace(new RegExp(this.promptMask[i], 'g'), this.promptChar);\n }\n }\n }\n var escapeNumber = 0;\n if (this.hiddenMask.match(new RegExp(/\\\\/))) {\n for (var i = 0; i < this.hiddenMask.length; i++) {\n var j = 0;\n if (i >= 1) {\n j = i;\n }\n escapeNumber = this.hiddenMask.length - this.promptMask.length;\n j = j - escapeNumber;\n if ((i > 0 && this.hiddenMask[i - 1] !== '\\\\') && (this.hiddenMask[i] === '>' ||\n this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|')) {\n this.promptMask = this.promptMask.substring(0, j) +\n this.promptMask.substring((i + 1) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) +\n this.escapeMaskValue.substring((i + 1) - escapeNumber, this.escapeMaskValue.length);\n }\n if (this.hiddenMask[i] === '\\\\') {\n this.promptMask = this.promptMask.substring(0, j) + this.hiddenMask[i + 1] +\n this.promptMask.substring((i + 2) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) + this.escapeMaskValue[i + 1] +\n this.escapeMaskValue.substring((i + 2) - escapeNumber, this.escapeMaskValue.length);\n }\n }\n }\n else {\n this.promptMask = this.promptMask.replace(/[>|<]/g, '');\n this.escapeMaskValue = this.hiddenMask.replace(/[>|<]/g, '');\n }\n attributes(this.element, { 'aria-invalid': 'false' });\n }\n}\n/**\n * Apply mask ability with masking elements to the MaskedTextBox.\n *\n * @hidden\n */\nexport function applyMask() {\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, this.value);\n}\n/**\n * To wire required events to the MaskedTextBox.\n *\n * @hidden\n */\nexport function wireEvents() {\n EventHandler.add(this.element, 'keydown', maskInputKeyDownHandler, this);\n EventHandler.add(this.element, 'keypress', maskInputKeyPressHandler, this);\n EventHandler.add(this.element, 'keyup', maskInputKeyUpHandler, this);\n EventHandler.add(this.element, 'input', maskInputHandler, this);\n EventHandler.add(this.element, 'focus', maskInputFocusHandler, this);\n EventHandler.add(this.element, 'blur', maskInputBlurHandler, this);\n EventHandler.add(this.element, 'paste', maskInputPasteHandler, this);\n EventHandler.add(this.element, 'cut', maskInputCutHandler, this);\n EventHandler.add(this.element, 'drop', maskInputDropHandler, this);\n EventHandler.add(this.element, 'mousedown', maskInputMouseDownHandler, this);\n EventHandler.add(this.element, 'mouseup', maskInputMouseUpHandler, this);\n if (this.enabled) {\n bindClearEvent.call(this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', resetFormHandler, this);\n }\n }\n}\n/**\n * To unwire events attached to the MaskedTextBox.\n *\n * @hidden\n */\nexport function unwireEvents() {\n EventHandler.remove(this.element, 'keydown', maskInputKeyDownHandler);\n EventHandler.remove(this.element, 'keypress', maskInputKeyPressHandler);\n EventHandler.remove(this.element, 'keyup', maskInputKeyUpHandler);\n EventHandler.remove(this.element, 'input', maskInputHandler);\n EventHandler.remove(this.element, 'focus', maskInputFocusHandler);\n EventHandler.remove(this.element, 'blur', maskInputBlurHandler);\n EventHandler.remove(this.element, 'paste', maskInputPasteHandler);\n EventHandler.remove(this.element, 'drop', maskInputDropHandler);\n EventHandler.remove(this.element, 'cut', maskInputCutHandler);\n EventHandler.remove(this.element, 'mousedown', maskInputMouseDownHandler);\n EventHandler.remove(this.element, 'mouseup', maskInputMouseUpHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', resetFormHandler);\n }\n}\n/**\n * To bind required events to the MaskedTextBox clearButton.\n *\n * @hidden\n */\nexport function bindClearEvent() {\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown touchstart', resetHandler, this);\n }\n}\nfunction resetHandler(e) {\n e.preventDefault();\n if (!this.inputObj.clearButton.classList.contains('e-clear-icon-hide') || (this.inputObj.container.classList.contains('e-static-clear'))) {\n clear.call(this, e);\n this.value = '';\n }\n}\nfunction clear(event) {\n var value = this.element.value;\n setElementValue.call(this, this.promptMask);\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n triggerMaskChangeEvent.call(this, event, value);\n this.element.setSelectionRange(0, 0);\n}\nfunction resetFormHandler() {\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n setElementValue.call(this, this.promptMask);\n }\n else {\n this.value = this.initInputValue;\n }\n}\n/**\n * To get masked value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function unstrippedValue(element) {\n return element.value;\n}\n/**\n * To extract raw value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function strippedValue(element, maskValues) {\n var value = '';\n var k = 0;\n var checkMask = false;\n var maskValue = (!isNullOrUndefined(maskValues)) ? maskValues : (!isNullOrUndefined(element) &&\n !isNullOrUndefined(this)) ? element.value : maskValues;\n if (maskValue !== this.promptMask) {\n for (var i = 0; i < this.customRegExpCollec.length; i++) {\n if (checkMask) {\n checkMask = false;\n }\n if (this.customRegExpCollec[k] === '>' || this.customRegExpCollec[k] === '<' ||\n this.customRegExpCollec[k] === '|' || this.customRegExpCollec[k] === '\\\\') {\n --i;\n checkMask = true;\n }\n if (!checkMask) {\n if ((maskValue[i] !== this.promptChar) && (!isNullOrUndefined(this.customRegExpCollec[k]) &&\n ((this._callPasteHandler || !isNullOrUndefined(this.regExpCollec[this.customRegExpCollec[k]])) ||\n (this.customRegExpCollec[k].length > 2 && this.customRegExpCollec[k][0] === '[' &&\n this.customRegExpCollec[k][this.customRegExpCollec[k].length - 1] === ']') ||\n (!isNullOrUndefined(this.customCharacters) &&\n (!isNullOrUndefined(this.customCharacters[this.customRegExpCollec[k]]))))) && (maskValue !== '')) {\n value += maskValue[i];\n }\n }\n ++k;\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n value = maskValue;\n }\n return value;\n}\nfunction pushIntoRegExpCollec(value) {\n for (var k = 0; k < value.length; k++) {\n this.hiddenMask += value[k];\n if (value[k] !== '\\\\') {\n this.customRegExpCollec.push(value[k]);\n }\n }\n}\nexport function maskInputMouseDownHandler() {\n this.isClicked = true;\n}\nexport function maskInputMouseUpHandler() {\n this.isClicked = false;\n}\nexport function maskInputFocusHandler(event) {\n var _this = this;\n var inputElement = this.element;\n var startIndex = 0;\n var modelValue = strippedValue.call(this, inputElement);\n var toAllowForward = false;\n var toAllowBackward = false;\n var eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n if (!this.isClicked) {\n triggerFocus.call(this, eventArgs, inputElement);\n }\n if (this.mask) {\n if (!(!(modelValue === null || modelValue === '') || this.floatLabelType === 'Always' ||\n this.placeholder === null || this.placeholder === '')) {\n inputElement.value = this.promptMask;\n }\n setTimeout(function () {\n if (inputElement.selectionStart === _this.promptMask.length ||\n inputElement.value[inputElement.selectionStart] === _this.promptChar) {\n toAllowForward = true;\n }\n else {\n for (var i = inputElement.selectionStart; i < _this.promptMask.length; i++) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowForward = false;\n break;\n }\n }\n else {\n toAllowForward = true;\n break;\n }\n }\n }\n });\n setTimeout(function () {\n var backSelectionStart = inputElement.selectionStart - 1;\n if (backSelectionStart === _this.promptMask.length - 1 ||\n inputElement.value[backSelectionStart] === _this.promptChar) {\n toAllowBackward = true;\n }\n else {\n for (var i = backSelectionStart; i >= 0; i--) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowBackward = false;\n break;\n }\n }\n else {\n toAllowBackward = true;\n break;\n }\n }\n }\n });\n if ((this.isClicked || (this.floatLabelType !== 'Always' &&\n ((modelValue === null || modelValue === '') &&\n (this.placeholder !== null && this.placeholder !== ''))))) {\n for (startIndex = 0; startIndex < this.promptMask.length; startIndex++) {\n if (inputElement.value[startIndex] === this.promptChar) {\n setTimeout(function () {\n if (toAllowForward || toAllowBackward) {\n inputElement.selectionEnd = startIndex;\n inputElement.selectionStart = startIndex;\n }\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: _this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(_this.inputObj) ? _this.inputObj.container : _this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(_this, eventArgs, inputElement);\n }, 110);\n break;\n }\n }\n if (isNullOrUndefined(inputElement.value.match(escapeRegExp(this.promptChar)))) {\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(this, eventArgs, inputElement);\n }\n this.isClicked = false;\n }\n }\n}\nexport function triggerFocus(eventArgs, inputElement) {\n this.trigger('focus', eventArgs, function (eventArgs) {\n inputElement.selectionStart = eventArgs.selectionStart;\n inputElement.selectionEnd = eventArgs.selectionEnd;\n });\n}\nexport function escapeRegExp(text) {\n return !isNullOrUndefined(text) ? text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&') : text;\n}\nexport function maskInputBlurHandler(event) {\n this.blurEventArgs = {\n event: event,\n value: this.value,\n maskedValue: this.element.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj\n };\n this.trigger('blur', this.blurEventArgs);\n if (this.mask) {\n this.isFocus = false;\n if (this.placeholder && this.element.value === this.promptMask && this.floatLabelType !== 'Always') {\n setElementValue.call(this, '');\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.floatLabelType === 'Auto' && !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL)) {\n removeClass([labelElement], TOPLABEL);\n }\n }\n }\n}\nfunction maskInputPasteHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var sIndex_1 = this.element.selectionStart;\n var eIndex_1 = this.element.selectionEnd;\n var oldValue_1 = this.element.value;\n setElementValue.call(this, '');\n this._callPasteHandler = true;\n setTimeout(function () {\n var value = _this.element.value.replace(/ /g, '');\n if (_this.redoCollec.length > 0 && _this.redoCollec[0].value === _this.element.value) {\n value = strippedValue.call(_this, _this.element);\n }\n setElementValue.call(_this, oldValue_1);\n _this.element.selectionStart = sIndex_1;\n _this.element.selectionEnd = eIndex_1;\n var i = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i], false, null);\n ++i;\n } while (i < value.length);\n _this.maskKeyPress = false;\n _this._callPasteHandler = false;\n if (_this.element.value === oldValue_1) {\n var i_1 = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i_1], false, null);\n ++i_1;\n } while (i_1 < value.length);\n _this.maskKeyPress = false;\n }\n else {\n triggerMaskChangeEvent.call(_this, event, oldValue_1);\n }\n }, 1);\n }\n}\nfunction maskInputCutHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var preValue_1 = this.element.value;\n var sIndex_2 = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd });\n var value_1 = this.element.value.substring(0, sIndex_2) + this.promptMask.substring(sIndex_2, eIndex) +\n this.element.value.substring(eIndex);\n setTimeout(function () {\n setElementValue.call(_this, value_1);\n _this.element.selectionStart = _this.element.selectionEnd = sIndex_2;\n if (_this.element.value !== preValue_1) {\n triggerMaskChangeEvent.call(_this, event, null);\n }\n }, 0);\n }\n}\nexport function maskInputDropHandler(event) {\n event.preventDefault();\n}\nfunction maskInputHandler(event) {\n if (Browser.isIE === true && this.element.value === '' && this.floatLabelType === 'Never') {\n return;\n }\n var eventArgs = { ctrlKey: false, keyCode: 229 };\n extend(event, eventArgs);\n if (this.mask) {\n if (this.element.value === '') {\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (!this._callPasteHandler) {\n removeMaskInputValues.call(this, event);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var value = this.element.value.substring(startIndex - addedValues, startIndex);\n this.maskKeyPress = false;\n var i = 0;\n do {\n validateValue.call(this, value[i], event.ctrlKey, event);\n ++i;\n } while (i < value.length);\n if (this.element.value !== this.preEleVal) {\n triggerMaskChangeEvent.call(this, event, null);\n }\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (val === '') {\n setElementValue.call(this, this.promptMask);\n this.element.setSelectionRange(0, 0);\n }\n }\n}\nfunction maskInputKeyDownHandler(event) {\n if (this.mask && !this.readonly) {\n if (event.keyCode !== 229) {\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n event.preventDefault();\n }\n removeMaskInputValues.call(this, event);\n }\n var startValue = this.element.value;\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n var collec = void 0;\n if (event.keyCode === 90 && this.undoCollec.length > 0 && startValue !== this.undoCollec[this.undoCollec.length - 1].value) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.undoCollec.splice(this.undoCollec.length - 1, 1);\n }\n else if (event.keyCode === 89 && this.redoCollec.length > 0 && startValue !== this.redoCollec[0].value) {\n collec = this.redoCollec[0];\n this.undoCollec.push({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.redoCollec.splice(0, 1);\n }\n }\n }\n}\nexport function mobileRemoveFunction() {\n var collec;\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n collec = this.redoCollec[0];\n setElementValue.call(this, collec.value);\n if ((collec.startIndex - sIndex) === 1) {\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n }\n else {\n this.element.selectionStart = sIndex + 1;\n this.element.selectionEnd = eIndex + 1;\n }\n }\n else {\n setElementValue.call(this, this.promptMask);\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n }\n}\nfunction autoFillMaskInputValues(isRemove, oldEventVal, event) {\n if (event.type === 'input') {\n isRemove = false;\n oldEventVal = this.element.value;\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, oldEventVal);\n }\n return isRemove;\n}\nfunction removeMaskInputValues(event) {\n var isRemove = false;\n var oldEventVal;\n var isDeleted = false;\n if (this.element.value.length < this.promptMask.length) {\n isRemove = true;\n oldEventVal = this.element.value;\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n mobileRemoveFunction.call(this);\n }\n if (this.element.value.length >= this.promptMask.length && event.type === 'input') {\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n }\n var initStartIndex = this.element.selectionStart;\n var initEndIndex = this.element.selectionEnd;\n var startIndex = this.element.selectionStart;\n var endIndex = this.element.selectionEnd;\n var maskValue = this.hiddenMask.replace(/[>|\\\\<]/g, '');\n var curMask = maskValue[startIndex - 1];\n var deleteEndIndex = this.element.selectionEnd;\n if (isRemove || event.keyCode === 8 || event.keyCode === 46) {\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: endIndex });\n var multipleDel = false;\n var preValue = this.element.value;\n if (startIndex > 0 || ((event.keyCode === 8 || event.keyCode === 46) && startIndex < this.element.value.length\n && ((this.element.selectionEnd - startIndex) !== this.element.value.length))) {\n var index = startIndex;\n if (startIndex !== endIndex) {\n startIndex = endIndex;\n if (event.keyCode === 46) {\n multipleDel = true;\n }\n }\n else if (event.keyCode === 46) {\n ++index;\n }\n else {\n --index;\n }\n for (var k = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? k > index : k < index; (event.keyCode === 8 || isRemove || multipleDel) ? k-- : k++) {\n for (var i = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? i > 0 : i < this.element.value.length; (event.keyCode === 8 || isRemove || multipleDel) ? i-- : i++) {\n var sIndex = void 0;\n if (((event.keyCode === 8 || multipleDel) && ((initStartIndex !== initEndIndex && initStartIndex !== startIndex) ||\n (initStartIndex === initEndIndex))) || isRemove) {\n curMask = maskValue[i - 1];\n sIndex = startIndex - 1;\n }\n else {\n curMask = maskValue[i];\n sIndex = startIndex;\n ++startIndex;\n }\n var oldValue = this.element.value[sIndex];\n if ((isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && (!isNullOrUndefined(this.customCharacters)\n && isNullOrUndefined(this.customCharacters[\"\" + curMask]))\n && ((this.hiddenMask[sIndex] !== this.promptChar && this.customRegExpCollec[sIndex][0] !== '['\n && this.customRegExpCollec[sIndex][this.customRegExpCollec[sIndex].length - 1] !== ']')))\n || (this.promptMask[sIndex] !== this.promptChar && isNullOrUndefined(this.customCharacters))) {\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n ++this.element.selectionStart;\n }\n }\n else {\n var value = this.element.value;\n var prompt_1 = this.promptChar;\n var elementValue = value.substring(0, sIndex) + prompt_1 + value.substring(startIndex, value.length);\n setElementValue.call(this, elementValue);\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n sIndex++;\n }\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n isDeleted = true;\n }\n startIndex = this.element.selectionStart;\n if ((!isDeleted && event.keyCode === 8) || multipleDel || (!isDeleted && !(event.keyCode === 46))) {\n sIndex = startIndex - 1;\n }\n else {\n sIndex = startIndex;\n isDeleted = false;\n }\n oldValue = this.element.value[sIndex];\n if (((initStartIndex !== initEndIndex) && (this.element.selectionStart === initStartIndex))\n || (this.promptMask[sIndex] === this.promptChar) || ((oldValue !== this.promptMask[sIndex]) &&\n (this.promptMask[sIndex] !== this.promptChar) && !isNullOrUndefined(this.customCharacters))) {\n break;\n }\n }\n }\n }\n if (event.keyCode === 46 && multipleDel && isDeleted) {\n this.element.selectionStart = this.element.selectionEnd = deleteEndIndex;\n }\n if (this.element.selectionStart === 0 && (this.element.selectionEnd === this.element.value.length)) {\n setElementValue.call(this, this.promptMask);\n event.preventDefault();\n this.element.selectionStart = this.element.selectionEnd = startIndex;\n }\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n if (this.element.value !== preValue) {\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n}\nfunction maskInputKeyPressHandler(event) {\n if (this.mask && !this.readonly) {\n var oldValue = this.element.value;\n if (!(event.ctrlKey || event.metaKey) || ((event.ctrlKey || event.metaKey) && event.code !== 'KeyA' && event.code !== 'KeyY'\n && event.code !== 'KeyZ' && event.code !== 'KeyX' && event.code !== 'KeyC' && event.code !== 'KeyV')) {\n this.maskKeyPress = true;\n var key = event.key;\n if (key === 'Spacebar') {\n key = String.fromCharCode(event.keyCode);\n }\n if (!key) {\n this.isIosInvalid = true;\n validateValue.call(this, String.fromCharCode(event.keyCode), event.ctrlKey, event);\n event.preventDefault();\n this.isIosInvalid = false;\n }\n else if (key && key.length === 1) {\n validateValue.call(this, key, event.ctrlKey, event);\n event.preventDefault();\n }\n if (event.keyCode === 32 && key === ' ' && this.promptChar === ' ') {\n this.element.selectionStart = this.element.selectionEnd = this.element.selectionStart - key.length;\n }\n }\n if (this.element.value !== oldValue) {\n triggerMaskChangeEvent.call(this, event, oldValue);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction triggerMaskChangeEvent(event, oldValue) {\n var prevOnChange = this.isProtectedOnChange;\n if (!isNullOrUndefined(this.changeEventArgs) && !this.isInitial) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.element.value, maskedValue: this.element.value, isInteraction: false, isInteracted: false };\n if (this.mask) {\n this.changeEventArgs.value = strippedValue.call(this, this.element);\n }\n if (!isNullOrUndefined(event)) {\n this.changeEventArgs.isInteracted = true;\n this.changeEventArgs.isInteraction = true;\n this.changeEventArgs.event = event;\n }\n this.isProtectedOnChange = true;\n this.value = this.changeEventArgs.value;\n this.isProtectedOnChange = prevOnChange;\n merge(eventArgs, this.changeEventArgs);\n /* istanbul ignore next */\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n this.preEleVal = this.element.value;\n this.prevValue = strippedValue.call(this, this.element);\n}\nfunction maskInputKeyUpHandler(event) {\n if (this.mask && !this.readonly) {\n var collec = void 0;\n if (!this.maskKeyPress && event.keyCode === 229) {\n var oldEventVal = void 0;\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var val_1 = this.element.value.substring(startIndex - addedValues, startIndex);\n if (this.undoCollec.length > 0) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n var startIndex_1 = this.element.selectionStart;\n oldEventVal = collec.value;\n var oldVal = collec.value.substring(startIndex_1 - addedValues, startIndex_1);\n collec = this.redoCollec[0];\n val_1 = val_1.trim();\n var isSpace = Browser.isAndroid && val_1 === '';\n if (!isSpace && oldVal !== val_1 && collec.value.substring(startIndex_1 - addedValues, startIndex_1) !== val_1) {\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n else if (isSpace) {\n preventUnsupportedValues.call(this, event, startIndex_1 - 1, this.element.selectionEnd - 1, val_1, event.ctrlKey, false);\n }\n }\n else {\n oldEventVal = this.promptMask;\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n this.maskKeyPress = false;\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n else {\n removeMaskError.call(this);\n }\n var val = strippedValue.call(this, this.element);\n if (!((this.element.selectionStart === 0) && (this.promptMask === this.element.value) && val === '')\n || (val === '' && this.value !== val)) {\n this.prevValue = val;\n this.value = val;\n }\n }\n else {\n triggerMaskChangeEvent.call(this, event);\n }\n if (this.element.selectionStart === 0 && this.element.selectionEnd === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var temp_1 = this.element;\n setTimeout(function () {\n temp_1.setSelectionRange(0, 0);\n }, 0);\n }\n}\nfunction mobileSwipeCheck(key) {\n if (key.length > 1 && ((this.promptMask.length + key.length) < this.element.value.length)) {\n var elementValue = this.redoCollec[0].value.substring(0, this.redoCollec[0].startIndex) + key +\n this.redoCollec[0].value.substring(this.redoCollec[0].startIndex, this.redoCollec[0].value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = this.redoCollec[0].startIndex + key.length;\n }\n this.element.selectionStart = this.element.selectionStart - key.length;\n this.element.selectionEnd = this.element.selectionEnd - key.length;\n}\nfunction mobileValidation(key) {\n if (!this.maskKeyPress) {\n mobileSwipeCheck.call(this, key);\n }\n}\nfunction validateValue(key, isCtrlKey, event) {\n mobileValidation.call(this, key);\n if (isNullOrUndefined(this) || isNullOrUndefined(key)) {\n return;\n }\n var startIndex = this.element.selectionStart;\n var initStartIndex = startIndex;\n var curMask;\n var allowText = false;\n var value = this.element.value;\n var eventOldVal;\n var prevSupport = false;\n var isEqualVal = false;\n for (var k = 0; k < key.length; k++) {\n var keyValue = key[k];\n startIndex = this.element.selectionStart;\n if (!this.maskKeyPress && initStartIndex === startIndex) {\n startIndex = startIndex + k;\n }\n if ((!this.maskKeyPress || startIndex < this.promptMask.length)) {\n for (var i = startIndex; i < this.promptMask.length; i++) {\n var maskValue = this.escapeMaskValue;\n curMask = maskValue[startIndex];\n if (this.hiddenMask[startIndex] === '\\\\' && this.hiddenMask[startIndex + 1] === key) {\n isEqualVal = true;\n }\n if ((isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && (isNullOrUndefined(this.customCharacters)\n || (!isNullOrUndefined(this.customCharacters) && isNullOrUndefined(this.customCharacters[\"\" + curMask])))\n && ((this.hiddenMask[startIndex] !== this.promptChar && this.customRegExpCollec[startIndex][0] !== '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] !== ']')))\n || ((this.promptMask[startIndex] !== this.promptChar) && isNullOrUndefined(this.customCharacters))\n || (this.promptChar === curMask && this.escapeMaskValue === this.mask)) {\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n startIndex = this.element.selectionStart;\n curMask = this.hiddenMask[startIndex];\n }\n }\n if (!isNullOrUndefined(this.customCharacters) && !isNullOrUndefined(this.customCharacters[\"\" + curMask])) {\n var customValStr = this.customCharacters[\"\" + curMask];\n var customValArr = customValStr.split(',');\n for (var i = 0; i < customValArr.length; i++) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n if (keyValue.match(new RegExp('[' + customValArr[i] + ']'))) {\n allowText = true;\n break;\n }\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n }\n else if (!isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && keyValue.match(new RegExp(this.regExpCollec[\"\" + curMask]))\n && this.promptMask[startIndex] === this.promptChar) {\n allowText = true;\n }\n else if (this.promptMask[startIndex] === this.promptChar && this.customRegExpCollec[startIndex][0] === '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] === ']'\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n && keyValue.match(new RegExp(this.customRegExpCollec[startIndex]))) {\n allowText = true;\n }\n if ((!this.maskKeyPress || startIndex < this.hiddenMask.length) && allowText) {\n if (k === 0) {\n if (this.maskKeyPress) {\n this.undoCollec.push({ value: value, startIndex: startIndex, endIndex: startIndex });\n }\n else {\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n eventOldVal = this.redoCollec[0].value;\n setElementValue.call(this, eventOldVal);\n this.undoCollec.push(this.redoCollec[0]);\n }\n else {\n this.undoCollec.push({ value: this.promptMask, startIndex: startIndex, endIndex: startIndex });\n eventOldVal = this.promptMask;\n setElementValue.call(this, eventOldVal);\n }\n this.element.selectionStart = sIndex;\n this.element.selectionEnd = eIndex;\n }\n }\n startIndex = this.element.selectionStart;\n applySupportedValues.call(this, event, startIndex, keyValue, eventOldVal, isEqualVal);\n prevSupport = true;\n if (k === key.length - 1) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n allowText = false;\n }\n else {\n startIndex = this.element.selectionStart;\n preventUnsupportedValues.call(this, event, startIndex, initStartIndex, key, isCtrlKey, prevSupport);\n }\n if (k === key.length - 1 && !allowText) {\n if (!Browser.isAndroid || (Browser.isAndroid && startIndex < this.promptMask.length)) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n }\n }\n else {\n if (key.length === 1 && !isCtrlKey && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n }\n }\n}\nfunction applySupportedValues(event, startIndex, keyValue, eventOldVal, isEqualVal) {\n if (this.hiddenMask.length > this.promptMask.length) {\n keyValue = changeToLowerUpperCase.call(this, keyValue, this.element.value);\n }\n if (!isEqualVal) {\n var value = this.element.value;\n var elementValue = value.substring(0, startIndex) + keyValue + value.substring(startIndex + 1, value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n }\n}\nfunction preventUnsupportedValues(event, sIdx, idx, key, ctrl, chkSupport) {\n if (!this.maskKeyPress) {\n var value = this.element.value;\n if (sIdx >= this.promptMask.length) {\n setElementValue.call(this, value.substring(0, sIdx));\n }\n else {\n if (idx === sIdx) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx + 1, value.length));\n }\n else {\n if (this.promptMask.length === this.element.value.length) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx, value.length));\n }\n else {\n setElementValue.call(this, value.substring(0, idx) + value.substring(idx + 1, value.length));\n }\n }\n this.element.selectionStart = this.element.selectionEnd = (chkSupport ||\n this.element.value[idx] !== this.promptChar) ? sIdx : idx;\n }\n addMaskErrorClass.call(this);\n }\n if (key.length === 1 && !ctrl && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n}\nfunction addMaskErrorClass() {\n var _this = this;\n var parentElement = this.element.parentNode;\n var timer = 200;\n if (parentElement.classList.contains(INPUTGROUP) || parentElement.classList.contains(FLOATINPUT)) {\n addClass([parentElement], ERROR);\n }\n else {\n addClass([this.element], ERROR);\n }\n if (this.isIosInvalid === true) {\n timer = 400;\n }\n attributes(this.element, { 'aria-invalid': 'true' });\n setTimeout(function () {\n if (!_this.maskKeyPress) {\n removeMaskError.call(_this);\n }\n }, timer);\n}\nfunction removeMaskError() {\n var parentElement = this.element.parentNode;\n if (!isNullOrUndefined(parentElement)) {\n removeClass([parentElement], ERROR);\n }\n removeClass([this.element], ERROR);\n attributes(this.element, { 'aria-invalid': 'false' });\n}\n/**\n * Validates user input using masking elements '<' , '>' and '|'.\n *\n * @hidden\n */\nfunction changeToLowerUpperCase(key, value) {\n var promptMask;\n var i;\n var curVal = value;\n var caseCount = 0;\n for (i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === '\\\\') {\n promptMask = curVal.substring(0, i) + '\\\\' + curVal.substring(i, curVal.length);\n }\n if (this.hiddenMask[i] === '>' || this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|') {\n if (this.hiddenMask[i] !== curVal[i]) {\n promptMask = curVal.substring(0, i) + this.hiddenMask[i] + curVal.substring(i, curVal.length);\n }\n ++caseCount;\n }\n if (promptMask) {\n if (((promptMask[i] === this.promptChar) && (i > this.element.selectionStart)) ||\n (this.element.value.indexOf(this.promptChar) < 0 && (this.element.selectionStart + caseCount) === i)) {\n caseCount = 0;\n break;\n }\n curVal = promptMask;\n }\n }\n while (i >= 0 && promptMask) {\n if (i === 0 || promptMask[i - 1] !== '\\\\') {\n if (promptMask[i] === '>') {\n key = key.toUpperCase();\n break;\n }\n else if (promptMask[i] === '<') {\n key = key.toLowerCase();\n break;\n }\n else if (promptMask[i] === '|') {\n break;\n }\n }\n --i;\n }\n return key;\n}\n/**\n * To set updated values in the MaskedTextBox.\n *\n * @hidden\n */\nexport function setMaskValue(val) {\n if (this.mask && val !== undefined && (this.prevValue === undefined || this.prevValue !== val)) {\n this.maskKeyPress = true;\n setElementValue.call(this, this.promptMask);\n if (val !== '' && !(val === null && this.floatLabelType === 'Never' && this.placeholder)) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n if (val !== null) {\n for (var i = 0; i < val.length; i++) {\n validateValue.call(this, val[i], false, null);\n }\n }\n var newVal = strippedValue.call(this, this.element);\n this.prevValue = newVal;\n this.value = newVal;\n triggerMaskChangeEvent.call(this, null, null);\n this.maskKeyPress = false;\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.element.value === this.promptMask && this.floatLabelType === 'Auto' && this.placeholder &&\n !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL) && !this.isFocus) {\n removeClass([labelElement], TOPLABEL);\n addClass([labelElement], BOTTOMLABEL);\n setElementValue.call(this, '');\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n}\n/**\n * To set updated values in the input element.\n *\n * @hidden\n */\nexport function setElementValue(val, element) {\n if (!this.isFocus && this.floatLabelType === 'Auto' && this.placeholder && isNullOrUndefined(this.value)) {\n val = '';\n }\n var value = strippedValue.call(this, (element ? element : this.element), val);\n if (value === null || value === '') {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, false);\n if (this.showClearButton) {\n this.inputObj.clearButton.classList.add('e-clear-icon-hide');\n }\n }\n else {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n }\n}\n/**\n * Provide mask support to input textbox through utility method.\n *\n * @hidden\n */\nexport function maskInput(args) {\n var inputEle = getMaskInput(args);\n applyMask.call(inputEle);\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (args.mask) {\n unwireEvents.call(inputEle);\n wireEvents.call(inputEle);\n }\n}\nfunction getMaskInput(args) {\n addClass([args.element], UTILMASK);\n var inputEle = {\n element: args.element,\n mask: args.mask,\n promptMask: '',\n hiddenMask: '',\n escapeMaskValue: '',\n promptChar: args.promptChar ? (args.promptChar.length > 1) ? args.promptChar = args.promptChar[0]\n : args.promptChar : '_',\n value: args.value ? args.value : null,\n regExpCollec: regularExpressions,\n customRegExpCollec: [],\n customCharacters: args.customCharacters,\n undoCollec: [],\n redoCollec: [],\n maskKeyPress: false,\n prevValue: ''\n };\n createMask.call(inputEle);\n return inputEle;\n}\n/**\n * Gets raw value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getVal(args) {\n return strippedValue.call(getUtilMaskEle(args), args.element);\n}\n/**\n * Gets masked value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getMaskedVal(args) {\n return unstrippedValue.call(getUtilMaskEle(args), args.element);\n}\nfunction getUtilMaskEle(args) {\n var inputEle;\n if (!isNullOrUndefined(args) && args.element.classList.contains(UTILMASK)) {\n inputEle = getMaskInput(args);\n }\n return inputEle;\n}\n/**\n * Arguments to perform undo and redo functionalities.\n *\n * @hidden\n */\nvar MaskUndo = /** @class */ (function () {\n function MaskUndo() {\n }\n return MaskUndo;\n}());\nexport { MaskUndo };\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar maskUndo = new MaskUndo();\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Event, Property, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, setValue, addClass, detach } from '@syncfusion/ej2-base';\nimport { removeClass, Browser, closest } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nimport { regularExpressions, createMask, applyMask, wireEvents, unwireEvents, unstrippedValue, strippedValue } from '../base/index';\nimport { setMaskValue, setElementValue, bindClearEvent } from '../base/index';\nvar ROOT = 'e-control-wrapper e-mask';\nvar INPUT = 'e-input';\nvar COMPONENT = 'e-maskedtextbox';\nvar CONTROL = 'e-control';\nvar MASKINPUT_FOCUS = 'e-input-focus';\nvar wrapperAttr = ['title', 'style', 'class'];\n/**\n * The MaskedTextBox allows the user to enter the valid input only based on the provided mask.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MaskedTextBox = /** @class */ (function (_super) {\n __extends(MaskedTextBox, _super);\n /**\n *\n * @param {MaskedTextBoxModel} options - Specifies the MaskedTextBox model.\n * @param {string | HTMLElement | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function MaskedTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initInputValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isClicked = false;\n _this.maskOptions = options;\n return _this;\n }\n /**\n * Gets the component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n MaskedTextBox.prototype.getModuleName = function () {\n return 'maskedtextbox';\n };\n /**\n * Initializes the event handler\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.preRender = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.regExpCollec = regularExpressions;\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n this.changeEventArgs = {};\n this.focusEventArgs = {};\n this.blurEventArgs = {};\n this.maskKeyPress = false;\n this.isFocus = false;\n this.isInitial = false;\n this.isIosInvalid = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n for (var i = 0; i < this.element.attributes.length; i++) {\n input.setAttribute(this.element.attributes[i].nodeName, this.element.attributes[i].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n if (this.element.hasAttribute('id')) {\n this.element.removeAttribute('id');\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-maskedtextbox');\n this.element.classList.add('e-mask-container');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkHtmlAttributes(false);\n if (this.formElement) {\n this.initInputValue = this.value;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Initializes the component rendering.\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n if (this.floatLabelType === 'Never') {\n addClass([this.element], INPUT);\n }\n this.createWrapper();\n this.updateHTMLAttrToWrapper();\n if (this.element.name === '') {\n this.element.setAttribute('name', this.element.id);\n }\n this.isInitial = true;\n this.resetMaskedTextBox();\n this.isInitial = false;\n this.setMaskPlaceholder(true, false);\n this.setWidth(this.width);\n this.preEleVal = this.element.value;\n if (!Browser.isDevice && (Browser.info.version === '11.0' || Browser.info.name === 'edge')) {\n this.element.blur();\n }\n if (Browser.isDevice && Browser.isIos) {\n this.element.blur();\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n MaskedTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n MaskedTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getValidClassList(newClass), [this.inputObj.container], this.getValidClassList(oldClass));\n };\n MaskedTextBox.prototype.getValidClassList = function (maskClassName) {\n var result = maskClassName;\n if (!isNullOrUndefined(maskClassName) && maskClassName !== '') {\n result = (maskClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n MaskedTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputObj.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var maskStyle = this.inputObj.container.getAttribute(key);\n maskStyle = !isNullOrUndefined(maskStyle) ? (maskStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputObj.container.setAttribute(key, maskStyle);\n }\n else {\n this.inputObj.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n MaskedTextBox.prototype.resetMaskedTextBox = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n if (this.promptChar.length > 1) {\n this.promptChar = this.promptChar[0];\n }\n createMask.call(this);\n applyMask.call(this);\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (!this.isInitial) {\n unwireEvents.call(this);\n }\n wireEvents.call(this);\n };\n MaskedTextBox.prototype.setMaskPlaceholder = function (setVal, dynamicPlaceholder) {\n if (dynamicPlaceholder || this.placeholder) {\n Input.setPlaceholder(this.placeholder, this.element);\n if ((this.element.value === this.promptMask && setVal && this.floatLabelType !== 'Always') ||\n this.element.value === this.promptMask && this.floatLabelType === 'Never') {\n setElementValue.call(this, '');\n }\n }\n };\n MaskedTextBox.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputObj.container.style.width = formatUnit(width);\n this.element.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n var elementWidth = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n this.inputObj.container.style.width = elementWidth;\n this.element.style.width = elementWidth;\n }\n }\n };\n MaskedTextBox.prototype.checkHtmlAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes)\n : ['placeholder', 'disabled', 'value', 'readonly'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'placeholder':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['enabled'] === undefined)) || isDynamic) {\n var isEnabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: isEnabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['readonly'] === undefined)) || isDynamic) {\n var isReadonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: isReadonly }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n MaskedTextBox.prototype.createWrapper = function () {\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = this.getValidClassList(this.cssClass);\n }\n this.inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('class', ROOT + ' ' + this.inputObj.container.getAttribute('class'));\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {MaskedTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {MaskedTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @hidden\n */\n MaskedTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n setMaskValue.call(this, this.value);\n if (this.placeholder && !this.isFocus) {\n this.setMaskPlaceholder(false, false);\n }\n if (this.value === \"\" && oldProp.value != null) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n break;\n case 'placeholder':\n this.setMaskPlaceholder(true, true);\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.element, this.inputObj.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element, this.floatLabelType, this.inputObj.container);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.inputObj.container]);\n break;\n case 'customCharacters':\n this.customCharacters = newProp.customCharacters;\n this.resetMaskedTextBox();\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.element, this.inputObj, undefined, this.createElement);\n bindClearEvent.call(this);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'mask':\n {\n var strippedValue_1 = this.value;\n this.mask = newProp.mask;\n this.updateValue(strippedValue_1);\n }\n break;\n case 'promptChar': {\n if (newProp.promptChar.length > 1) {\n newProp.promptChar = newProp.promptChar[0];\n }\n if (newProp.promptChar) {\n this.promptChar = newProp.promptChar;\n }\n else {\n this.promptChar = '_';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n var value = this.element.value.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n if (this.promptMask === this.element.value) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n value = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n this.promptMask = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n this.undoCollec = this.redoCollec = [];\n setElementValue.call(this, value);\n break;\n }\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n MaskedTextBox.prototype.updateValue = function (strippedVal) {\n this.resetMaskedTextBox();\n setMaskValue.call(this, strippedVal);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the value of the MaskedTextBox with the masked format.\n * By using `value` property, you can get the raw value of maskedtextbox without literals and prompt characters.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getMaskedValue = function () {\n return unstrippedValue.call(this, this.element);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.isFocus = true;\n this.element.focus();\n addClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.isFocus = false;\n this.element.blur();\n removeClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n MaskedTextBox.prototype.destroy = function () {\n unwireEvents.call(this);\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n if (this.inputObj) {\n this.inputObj.container.insertAdjacentElement('afterend', this.element);\n detach(this.inputObj.container);\n }\n this.blurEventArgs = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n this.changeEventArgs = null;\n this.inputObj = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], MaskedTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property({})\n ], MaskedTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], MaskedTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"mask\", void 0);\n __decorate([\n Property('_')\n ], MaskedTextBox.prototype, \"promptChar\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"customCharacters\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"blur\", void 0);\n MaskedTextBox = __decorate([\n NotifyPropertyChanges\n ], MaskedTextBox);\n return MaskedTextBox;\n}(Component));\nexport { MaskedTextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VirtualRowModelGenerator } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar TreeVirtualRowModelGenerator = /** @class */ (function (_super) {\n __extends(TreeVirtualRowModelGenerator, _super);\n function TreeVirtualRowModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.addEventListener();\n return _this;\n }\n TreeVirtualRowModelGenerator.prototype.addEventListener = function () {\n this.parent.on(events.dataListener, this.getDatas, this);\n };\n TreeVirtualRowModelGenerator.prototype.getDatas = function (args) {\n this.visualData = args.data;\n };\n TreeVirtualRowModelGenerator.prototype.getDataInfo = function () {\n return _super.prototype.getData.call(this);\n };\n TreeVirtualRowModelGenerator.prototype.generateRows = function (data, notifyArgs) {\n if (!isNullOrUndefined(notifyArgs.virtualInfo) && notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.nextInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.nextInfo.page } }, true);\n }\n else if (!isNullOrUndefined(notifyArgs.virtualInfo) && !notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.page } }, true);\n }\n var info = this.getDataInfo();\n if (!isNullOrUndefined(notifyArgs.virtualInfo)) {\n if (notifyArgs.virtualInfo.direction !== 'right' && notifyArgs.virtualInfo.direction !== 'left') {\n if (!((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent))\n || notifyArgs.virtualInfo.blockIndexes.length === 1) {\n notifyArgs.virtualInfo.blockIndexes = info.blockIndexes;\n }\n }\n else {\n notifyArgs.virtualInfo.blockIndexes = this.getBlockIndexes(notifyArgs.virtualInfo.page);\n }\n }\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n return _super.prototype.generateRows.call(this, data, notifyArgs);\n }\n else {\n if (!isNullOrUndefined(notifyArgs.requestType) && notifyArgs.requestType.toString() === 'collapseAll') {\n notifyArgs.requestType = 'refresh';\n }\n var rows = _super.prototype.generateRows.call(this, data, notifyArgs);\n if (!isNullOrUndefined((this.visualData))) {\n for (var r = 0; r < rows.length; r++) {\n rows[parseInt(r.toString(), 10)].index =\n (this.visualData).indexOf(rows[parseInt(r.toString(), 10)].data);\n }\n }\n return rows;\n }\n };\n TreeVirtualRowModelGenerator.prototype.checkAndResetCache = function (action) {\n var clear = ['paging', 'refresh', 'sorting', 'filtering', 'searching', 'reorder',\n 'save', 'delete'].some(function (value) { return action === value; });\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n var model = 'model';\n var currentPage = this[\"\" + model].currentPage;\n if (clear) {\n this.cache = {};\n /*this.movableCache = {};\n this.frozenRightCache = {};*/\n this.data = {};\n this.groups = {};\n }\n else if (action === 'virtualscroll' && this.cache[parseInt(currentPage.toString(), 10)] &&\n this.cache[parseInt(currentPage.toString(), 10)].length >\n (this.parent.contentModule).getBlockSize()) {\n delete this.cache[parseInt(currentPage.toString(), 10)];\n }\n }\n else {\n if (clear || action === 'virtualscroll') {\n this.cache = {};\n this.data = {};\n this.groups = {};\n /*this.movableCache = {};\n this.frozenRightCache = {};*/\n }\n }\n return clear;\n };\n return TreeVirtualRowModelGenerator;\n}(VirtualRowModelGenerator));\nexport { TreeVirtualRowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Cell, CellType } from '@syncfusion/ej2-grids';\nimport { VirtualContentRenderer } from '@syncfusion/ej2-grids';\nimport * as literals from '../base/constant';\nimport { InterSectionObserver } from '@syncfusion/ej2-grids';\nimport { TreeVirtualRowModelGenerator } from '../renderer/virtual-row-model-generator';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, EventHandler, getValue, setValue, Browser, debounce } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\nvar VirtualTreeContentRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeContentRenderer, _super);\n function VirtualTreeContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.isExpandCollapse = false;\n _this.translateY = 0;\n _this.maxiPage = 0;\n _this.recordAdded = false;\n /** @hidden */\n _this.startIndex = -1;\n _this.endIndex = -1;\n _this.preTranslate = 0;\n _this.isRemoteExpand = false;\n /** @hidden */\n _this.isDataSourceChanged = false;\n _this.addEventListener();\n return _this;\n }\n VirtualTreeContentRenderer.prototype.getModelGenerator = function () {\n return new TreeVirtualRowModelGenerator(this.parent);\n };\n VirtualTreeContentRenderer.prototype.getRowByIndex = function (index) {\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n return this.getRowCollection(index, true);\n }\n else {\n return this.parent.getDataRows().filter(function (e) { return parseInt(e.getAttribute('data-rowindex'), 10) === index; })[0];\n }\n };\n VirtualTreeContentRenderer.prototype.getFrozenRightVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, false, false, true);\n };\n VirtualTreeContentRenderer.prototype.getRowCollection = function (index, isMovable, isRowObject, isFrozenRight) {\n var startIdx = parseInt(this.parent.getRows()[0].getAttribute(literals.dataRowIndex), 10);\n var rowCollection = this.parent.getDataRows();\n var collection = isRowObject ? this.parent.getCurrentViewRecords() : rowCollection;\n var selectedRow = collection[index - startIdx];\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n if (!isRowObject) {\n selectedRow = index <= this.parent.frozenRows ? rowCollection[parseInt(index.toString(), 10)]\n : rowCollection[(index - startIdx) + this.parent.frozenRows];\n }\n else {\n selectedRow = index <= this.parent.frozenRows ?\n this.parent.getRowsObject()[parseInt(index.toString(), 10)].data : selectedRow;\n }\n }\n return selectedRow;\n };\n VirtualTreeContentRenderer.prototype.addEventListener = function () {\n this.parent.on(events.virtualActionArgs, this.virtualOtherAction, this);\n this.parent.on(events.indexModifier, this.indexModifier, this);\n };\n VirtualTreeContentRenderer.prototype.virtualOtherAction = function (args) {\n if (args.setTop) {\n this.translateY = 0;\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n else if (args.isExpandCollapse) {\n this.isExpandCollapse = true;\n }\n };\n VirtualTreeContentRenderer.prototype.indexModifier = function (args) {\n var content = this.parent.getContent().querySelector('.e-content');\n if ((this.recordAdded || args.requestType === 'delete' && this.endIndex > args.count - this.parent.pageSettings.pageSize) && this.startIndex > -1 && this.endIndex > -1) {\n if (this.endIndex > args.count - this.parent.pageSettings.pageSize) {\n var nextSetResIndex = ~~(content.scrollTop / this.parent.getRowHeight());\n var lastIndex = nextSetResIndex + this.parent.getRows().length;\n if (lastIndex > args.count) {\n lastIndex = nextSetResIndex +\n (args.count - nextSetResIndex);\n }\n this.startIndex = lastIndex - this.parent.getRows().length;\n this.endIndex = lastIndex;\n }\n else if (this.parent.root.editSettings.newRowPosition !== 'Top' && this.parent.root.editModule.selectedIndex !== -1 || this.parent.root.editModule.selectedIndex !== -1) {\n this.startIndex += 1;\n this.endIndex += 1;\n }\n this.recordAdded = false;\n }\n if (this.isDataSourceChanged) {\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n if ((this.endIndex - this.startIndex !== this.parent.pageSettings.pageSize) &&\n (this.totalRecords > this.parent.pageSettings.pageSize)\n && (this.endIndex === this.totalRecords)) {\n args.startIndex = this.endIndex - this.parent.pageSettings.pageSize;\n args.endIndex = this.endIndex;\n }\n else {\n args.startIndex = this.startIndex;\n args.endIndex = this.endIndex;\n }\n };\n VirtualTreeContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n this.parent[\"\" + action]('data-ready', this.onDataReady, this);\n this.parent[\"\" + action]('refresh-virtual-block', this.refreshContentRows, this);\n this.fn = function () {\n _this.observers.observes(function (scrollArgs) { return _this.scrollListeners(scrollArgs); }, _this.onEnteredAction(), _this.parent);\n _this.parent.off('content-ready', _this.fn);\n };\n this.parent.addEventListener('dataBound', this.dataBoundEvent.bind(this));\n this.parent.addEventListener('rowSelected', this.rowSelectedEvent.bind(this));\n this.parent[\"\" + action]('select-virtual-Row', this.toSelectVirtualRow, this);\n this.parent.on('content-ready', this.fn, this);\n this.parent.addEventListener(events.actionComplete, this.onActionComplete.bind(this));\n this.parent[\"\" + action]('virtual-scroll-edit-action-begin', this.beginEdit, this);\n this.parent[\"\" + action]('virtual-scroll-add-action-begin', this.beginAdd, this);\n this.parent[\"\" + action]('virtual-scroll-edit-success', this.virtualEditSuccess, this);\n this.parent[\"\" + action]('edit-reset', this.resetIseditValue, this);\n this.parent[\"\" + action]('get-virtual-data', this.getData, this);\n this.parent[\"\" + action]('virtual-scroll-edit-cancel', this.cancelEdit, this);\n this.parent[\"\" + action]('select-row-on-context-open', this.toSelectRowOnContextOpen, this);\n this.parent[\"\" + action]('refresh-virtual-editform-cells', this.refreshCell, this);\n this.parent[\"\" + action]('virtaul-cell-focus', this.cellFocus, this);\n }\n else {\n _super.prototype.eventListener.call(this, 'on');\n }\n };\n VirtualTreeContentRenderer.prototype.cellFocus = function (e) {\n var virtualCellFocus = 'virtualCellFocus';\n _super.prototype[\"\" + virtualCellFocus].call(this, e);\n };\n VirtualTreeContentRenderer.prototype.onDataReady = function (e) {\n _super.prototype.onDataReady.call(this, e);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n if (!isNullOrUndefined(e.count)) {\n this.totalRecords = e.count;\n // To overcome the white space issue in last page when records collapsed\n if (this.parent.isFrozenGrid() && e.count < Object.keys(this.parent.dataSource).length) {\n var width = this.parent.enableColumnVirtualization ?\n this.getColumnOffset(this.parent.columns.length - 1) + 'px' : '100%';\n var height = (this.parent.getRowHeight() * e.count) -\n (this.parent.getRowHeight() * this.parent.pageSettings.pageSize);\n getValue('virtualEle', this).setVirtualHeight(height, width);\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.isFrozenGrid()) {\n getValue('virtualEle', this).setVirtualHeight(this.parent.getRowHeight() * e.count, '100%');\n }\n }\n if ((!isNullOrUndefined(e.requestType) && e.requestType.toString() === 'collapseAll') || (this.isDataSourceChanged && (this.startIndex === -1 || this.startIndex === 0 && this['preStartIndex'] === 0))) {\n this.contents.scrollTop = 0;\n this.isDataSourceChanged = false;\n }\n }\n };\n VirtualTreeContentRenderer.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n getValue('observer', this).options.debounceEvent = false;\n this.observers = new TreeInterSectionObserver(getValue('observer', this).element, getValue('observer', this).options);\n this.contents = this.getPanel().firstChild;\n }\n };\n VirtualTreeContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n if (this.isRemoteExpand) {\n this.isRemoteExpand = false;\n return this.preTranslate;\n }\n else {\n this.preTranslate = _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n }\n else {\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n };\n VirtualTreeContentRenderer.prototype.dataBoundEvent = function () {\n var dataBoundEve = 'dataBound';\n var initialRowTop = 'initialRowTop';\n if (this.parent.getRows().length && !isNullOrUndefined(this.parent.getRowByIndex(0)) && !this[\"\" + initialRowTop]) {\n var rowTop = this.parent.getRowByIndex(0).getBoundingClientRect().top;\n var gridTop = this.parent.element.getBoundingClientRect().top;\n if (rowTop > 0) {\n this[\"\" + initialRowTop] = this.parent.getRowByIndex(0).getBoundingClientRect().top - gridTop;\n }\n else {\n this[\"\" + initialRowTop] = this.content.getBoundingClientRect().top -\n this.parent.getRowByIndex(0).getBoundingClientRect().height;\n }\n }\n _super.prototype[\"\" + dataBoundEve].call(this);\n };\n VirtualTreeContentRenderer.prototype.rowSelectedEvent = function (args) {\n var rowSelected = 'rowSelected';\n _super.prototype[\"\" + rowSelected].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectVirtualRow = function (args) {\n if (this.parent.isEdit) {\n return;\n }\n var selectVirtualRow = 'selectVirtualRow';\n var containerRect = 'containerRect';\n if (isNullOrUndefined(this.observer[\"\" + containerRect])) {\n this.observer[\"\" + containerRect] = this.observers[\"\" + containerRect];\n }\n if (isNullOrUndefined(this.parent.clipboardModule['treeGridParent'].editModule) || args.selectedIndex !== 0 ||\n isNullOrUndefined(this.parent.clipboardModule['treeGridParent'].editModule['addRowIndex'])) {\n _super.prototype[\"\" + selectVirtualRow].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.refreshCell = function (rowObj) {\n rowObj.cells = this.generateCells();\n };\n VirtualTreeContentRenderer.prototype.generateCells = function () {\n var cells = [];\n for (var i = 0; i < this.parent.columns.length; i++) {\n cells.push(this.generateCell(this.parent.columns[parseInt(i.toString(), 10)]));\n }\n return cells;\n };\n VirtualTreeContentRenderer.prototype.generateCell = function (col, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': col.visible,\n 'isDataCell': !isNullOrUndefined(col.field || col.template),\n 'isTemplate': !isNullOrUndefined(col.template),\n 'rowID': rowId,\n 'column': col,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': col.commands,\n 'isForeignKey': col.isForeignColumn && col.isForeignColumn(),\n 'foreignKeyData': col.isForeignColumn && col.isForeignColumn() && getValue(col.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n VirtualTreeContentRenderer.prototype.beginEdit = function (e) {\n this['editedRowIndex'] = e.index;\n var selector = '.e-row[data-rowindex=\"' + e.index + '\"]';\n var index = this.parent.getContent().querySelector(selector).rowIndex;\n var rowData = this.parent.getCurrentViewRecords()[parseInt(index.toString(), 10)];\n e.data = rowData;\n };\n VirtualTreeContentRenderer.prototype.beginAdd = function (args) {\n var addAction = 'addActionBegin';\n var isAdd = 'isAdd';\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, dataRowIndex: this.dataRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.dataRowIndex = addArgs.dataRowIndex;\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('data-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withInRange = this.parent.selectedRowIndex >= firstAriaIndex && this.parent.selectedRowIndex <= lastAriaIndex;\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n this[\"\" + isAdd] = true;\n }\n if (this.rowPosition === 'Top' || this.rowPosition === 'Bottom' ||\n ((!this.addRowIndex || this.addRowIndex === -1) && (this.parent.selectedRowIndex === -1 || !withInRange))) {\n _super.prototype[\"\" + addAction].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.restoreEditState = function () {\n var restoreEdit = 'restoreEdit';\n _super.prototype[\"\" + restoreEdit].call(this);\n };\n VirtualTreeContentRenderer.prototype.resetIseditValue = function () {\n var resetIsEdit = 'resetIsedit';\n var isAdd = 'isAdd';\n this.parent.notify('reset-edit-props', {});\n if ((this.rowPosition === 'Top' || this.rowPosition === 'Bottom') && this[\"\" + isAdd]) {\n _super.prototype[\"\" + resetIsEdit].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.virtualEditSuccess = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[\"\" + isAdd] && content.querySelector('.e-addedrow')) {\n this.recordAdded = true;\n }\n };\n VirtualTreeContentRenderer.prototype.cancelEdit = function (args) {\n var editCancel = 'editCancel';\n _super.prototype[\"\" + editCancel].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectRowOnContextOpen = function (args) {\n var selectRowOnContextOpen = 'selectRowOnContextOpen';\n _super.prototype[\"\" + selectRowOnContextOpen].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.restoreNewRow = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[\"\" + isAdd] && !content.querySelector('.e-addedrow')) {\n this.parent.isEdit = false;\n this.parent.editModule.addRecord(null, this.parent.root.editModule.selectedIndex);\n }\n };\n VirtualTreeContentRenderer.prototype.getData = function (data) {\n var getVirtualData = 'getVirtualData';\n _super.prototype[\"\" + getVirtualData].call(this, data);\n };\n VirtualTreeContentRenderer.prototype.onActionComplete = function (args) {\n if (args.requestType === 'add') {\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, dataRowIndex: this.dataRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.dataRowIndex = this.parent.root.editModule.selectedIndex;\n }\n var actionComplete = 'actionComplete';\n _super.prototype[\"\" + actionComplete].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.onEnteredAction = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n var directVirtualRender = 'directVirtualRender';\n if (!_this.parent[\"\" + directVirtualRender]) { // with this property, columns are rendered without debouncing on horizontal scroll.\n var preventEvent = 'preventEvent';\n if (Browser.isIE && !isWheel && check && !_this[\"\" + preventEvent] && !_this.parent.enableVirtualMaskRow) {\n _this.parent.showSpinner();\n }\n if (_this.parent.enableVirtualMaskRow && !_this[\"\" + preventEvent]) {\n setTimeout(function () {\n _this.parent.showMaskRow(current.axis);\n _this.parent.notify('showGanttShimmer', { requestType: 'showShimmer' });\n }, 0);\n }\n var height = _this.content.getBoundingClientRect().height;\n var top_1 = _this.prevInfo.offsets ? _this.prevInfo.offsets.top : null;\n var xAxis = current.axis === 'X';\n var x = _this.getColumnOffset(xAxis ? _this.vgenerator.getColumnIndexes()[0] - 1 : _this.prevInfo.columnIndexes[0]\n - 1);\n if (xAxis) {\n var idx = Object.keys(_this.vgenerator.cOffsets).length - _this.prevInfo.columnIndexes.length;\n var maxLeft = _this.vgenerator.cOffsets[idx - 1];\n x = x > maxLeft ? maxLeft : x; //TODO: This fix horizontal scrollbar jumping issue in column virtualization.\n }\n var y = _this.getTranslateY(e.top, height, xAxis && top_1 === e.top ? _this.prevInfo : undefined, true);\n if (!_this.parent.isFrozenGrid() || _this.parent.enableVirtualMaskRow) {\n if (_this.parent.enableVirtualMaskRow) {\n var upScroll = (e.top - _this.translateY) < 0;\n y = (Math.round(_this.translateY) > y && !upScroll) ? Math.round(_this.translateY) : y;\n _this.virtualEle.adjustTable(x, y);\n }\n else {\n _this.virtualEle.adjustTable(x, _this.translateY);\n }\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(x, 0);\n }\n }\n }\n };\n };\n VirtualTreeContentRenderer.prototype.scrollListeners = function (scrollArgs) {\n this['scrollAfterEdit']();\n var info = scrollArgs.sentinel;\n var rowHeight = this.parent.getRowHeight();\n var outBuffer = this.parent.pageSettings.pageSize - Math.ceil(this.parent.pageSettings.pageSize / 2);\n var content = this.parent.getContent().querySelector('.e-content');\n var scrollHeight = outBuffer * rowHeight;\n var upScroll = (scrollArgs.offset.top - this.translateY) < 0;\n var downScroll = Math.ceil(scrollArgs.offset.top - this.translateY) + rowHeight >= scrollHeight;\n var selectedRowIndex = 'selectedRowIndex';\n var currentViewData = this.parent.currentViewData;\n var indexValue = 'index';\n if (upScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var vHeight = +(this.parent.height.toString().indexOf('%') < 0 ? parseInt(this.parent.height.toString(), 10) :\n this.parent.element.getBoundingClientRect().height);\n var index = (~~(content.scrollTop / rowHeight)\n + Math.ceil(vHeight / rowHeight))\n - this.parent.pageSettings.pageSize;\n index = (index > 0) ? index : 0;\n if (!isNullOrUndefined(this[\"\" + selectedRowIndex]) && this[\"\" + selectedRowIndex] !== -1 && index !== this[\"\" + selectedRowIndex]) {\n index = this[\"\" + selectedRowIndex];\n }\n this.startIndex = index;\n this.endIndex = index + this.parent.pageSettings.pageSize;\n if (this.endIndex > this.totalRecords) {\n var lastInx = this.totalRecords - 1;\n var remains = this.endIndex % lastInx;\n this.endIndex = lastInx;\n this.startIndex = (this.startIndex - remains) < 0 ? 0 : (this.startIndex - remains);\n }\n if (currentViewData.length && (currentViewData[0][\"\" + indexValue] >= this.parent.pageSettings.pageSize / 2) &&\n ((currentViewData[0][\"\" + indexValue] - this.startIndex) < (this.parent.pageSettings.pageSize / 2)) && this.parent.selectionModule.isRowSelected) {\n this.startIndex = currentViewData[0][\"\" + indexValue] - (this.parent.pageSettings.pageSize / 2);\n this.endIndex = this.startIndex + this.parent.pageSettings.pageSize;\n }\n //var firsttdinx = parseInt(this.parent.getContent().querySelector('.e-content td').getAttribute('index'), 0);\n var rowPt = Math.ceil(scrollArgs.offset.top / rowHeight);\n rowPt = rowPt % this.parent.pageSettings.pageSize;\n var firsttdinx = 0;\n if (!isNullOrUndefined(this.parent.getRows()[parseInt(rowPt.toString(), 10)]) &&\n !isNullOrUndefined(this.parent.getContent().querySelectorAll('.e-content tr')[parseInt(rowPt.toString(), 10)])) {\n var attr = this.parent.getContent().querySelectorAll('.e-content tr')[parseInt(rowPt.toString(), 10)]\n .querySelector('td').getAttribute('index');\n firsttdinx = +attr; // this.parent.getContent().querySelector('.e-content tr').getAttribute('data-rowindex');\n }\n if (firsttdinx === 0) {\n this.translateY = (scrollArgs.offset.top - (outBuffer * rowHeight) > 0) ?\n scrollArgs.offset.top - (outBuffer * this.parent.getRowHeight()) + 10 : 0;\n }\n else {\n this.translateY = (scrollArgs.offset.top - (outBuffer * rowHeight) > 0) ?\n scrollArgs.offset.top - (outBuffer * rowHeight) + 10 : 0;\n }\n }\n else if (downScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var nextSetResIndex = ~~(content.scrollTop / rowHeight);\n var isLastBlock = (this[\"\" + selectedRowIndex] + this.parent.pageSettings.pageSize) < this.totalRecords ? false : true;\n if (!isNullOrUndefined(this[\"\" + selectedRowIndex]) && this[\"\" + selectedRowIndex] !== -1 &&\n nextSetResIndex !== this[\"\" + selectedRowIndex] && !isLastBlock) {\n nextSetResIndex = this[\"\" + selectedRowIndex];\n }\n var lastIndex = nextSetResIndex + this.parent.pageSettings.pageSize;\n if (lastIndex > this.totalRecords) {\n lastIndex = nextSetResIndex +\n (this.totalRecords - nextSetResIndex);\n }\n this.startIndex = !isLastBlock || isNullOrUndefined(this['' + selectedRowIndex]) ? lastIndex - this.parent.pageSettings.pageSize : nextSetResIndex;\n this.endIndex = lastIndex;\n if ((nextSetResIndex + this.parent.pageSettings.pageSize) > this.totalRecords && (this.endIndex - this.startIndex) <\n (this.parent.pageSettings.pageSize / 2) && (this.endIndex - nextSetResIndex) < (this.parent.pageSettings.pageSize / 2)) {\n this.startIndex = lastIndex - (this.parent.pageSettings.pageSize / 2);\n }\n if (currentViewData.length && this.startIndex > currentViewData[0][\"\" + indexValue] &&\n ((this.startIndex - currentViewData[0][\"\" + indexValue]) < (this.parent.pageSettings.pageSize / 2)) && this.parent.selectionModule.isRowSelected) {\n this.startIndex = currentViewData[0][\"\" + indexValue] + (this.parent.pageSettings.pageSize / 2);\n }\n if (scrollArgs.offset.top > (rowHeight * this.totalRecords)) {\n this.translateY = this.getTranslateY(scrollArgs.offset.top, content.getBoundingClientRect().height);\n }\n else {\n if (this.totalRecords === this.endIndex) {\n this.translateY = (this.totalRecords * rowHeight) - ((this.endIndex - this.startIndex) * rowHeight);\n }\n else {\n if (this.parent.allowRowDragAndDrop) {\n this.translateY = scrollArgs.offset.top - rowHeight * 2;\n }\n else {\n this.translateY = scrollArgs.offset.top;\n }\n }\n }\n }\n if (((downScroll && (scrollArgs.offset.top < (rowHeight * this.totalRecords)))\n || (upScroll)) || (scrollArgs.direction === 'right' || scrollArgs.direction === 'left') ||\n ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') && (downScroll || upScroll) || isCountRequired(this.parent))) {\n var viewInfo = this.currentInfo = getValue('getInfoFromView', this).apply(this, [scrollArgs.direction, info, scrollArgs.offset]);\n this.previousInfo = viewInfo;\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n var page = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n if (downScroll && this.endIndex === this.totalRecords && viewInfo.loadNext) {\n viewInfo.loadNext = false;\n }\n this.parent.setProperties({ pageSettings: { currentPage: page } }, true);\n this.requestType = 'virtualscroll';\n if (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left') {\n viewInfo.event = viewInfo.event === 'refresh-virtual-block' ? 'model-changed' : viewInfo.event;\n }\n if (this.parent.enableVirtualMaskRow) {\n this.parent.showMaskRow(info.axis);\n this.parent.addShimmerEffect();\n this.parent.notify('showGanttShimmer', { requestType: 'showShimmer' });\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n }\n else {\n if (this.parent.enableVirtualMaskRow) {\n this.parent.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n }\n }\n };\n VirtualTreeContentRenderer.prototype.appendContent = function (target, newChild, e) {\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent) || this.parent.isFrozenGrid()) {\n if (getValue('isExpandCollapse', e)) {\n this.isRemoteExpand = true;\n }\n _super.prototype.appendContent.call(this, target, newChild, e);\n if (getValue('requestTypes', this).indexOf('isFrozen') !== -1) {\n getValue('requestTypes', this).splice(getValue('requestTypes', this).indexOf('isFrozen'), 1);\n this.requestType = this.requestType === 'isFrozen' ? undefined : this.requestType;\n }\n }\n else {\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' &&\n getValue('currentInfo', this).page && getValue('currentInfo', this).page !== e.virtualInfo.page ?\n getValue('currentInfo', this) : e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n var cOffset = this.getColumnOffset(cBlock);\n var width = void 0;\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(cOffset, 0);\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n this.header.virtualEle.setWrapperWidth(width);\n }\n this.virtualEle.setWrapperWidth(width, (Browser.isIE || Browser.info.name === 'edge'));\n target = this.parent.createElement('tbody');\n target.appendChild(newChild);\n var replace = 'replaceWith';\n this.getTable().querySelector('tbody')[\"\" + replace](target);\n if (!this.isExpandCollapse || this.translateY === 0) {\n this.translateY = this.translateY < 0 ? 0 : this.translateY;\n getValue('virtualEle', this).adjustTable(cOffset, this.translateY);\n }\n else {\n this.isExpandCollapse = false;\n }\n setValue('prevInfo', this.previousInfo ? this.previousInfo : info, this);\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(events.autoCol, {});\n }\n var focusCell = 'focusCell';\n var restoreAdd = 'restoreAdd';\n var ensureSelectedRowPosition = 'ensureSelectedRowPosition';\n _super.prototype[\"\" + focusCell].call(this, e);\n var isAdd = 'isAdd';\n if (this[\"\" + isAdd] && !this.parent.getContent().querySelector('.e-content').querySelector('.e-addedrow')) {\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n if (this.dataRowIndex >= this.startIndex) {\n this.restoreNewRow();\n }\n else if (this.addRowIndex && this.addRowIndex > -1) {\n this[\"\" + isAdd] = false;\n this.parent.isEdit = false;\n }\n }\n }\n this.restoreEditState();\n _super.prototype[\"\" + restoreAdd].call(this);\n _super.prototype[\"\" + ensureSelectedRowPosition].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('data-ready', this.onDataReady);\n this.parent.off('content-ready', this.fn);\n this.parent.off('select-virtual-Row', this.toSelectVirtualRow);\n this.parent.off('dataBound', this.dataBoundEvent);\n this.parent.off('rowSelected', this.rowSelectedEvent);\n this.parent.off(events.virtualActionArgs, this.virtualOtherAction);\n this.parent.off(events.indexModifier, this.indexModifier);\n this.parent.off('virtual-scroll-edit-action-begin', this.beginEdit);\n this.parent.off('virtual-scroll-add-action-begin', this.beginAdd);\n this.parent.off('virtual-scroll-edit-success', this.virtualEditSuccess);\n this.parent.off('edit-reset', this.resetIseditValue);\n this.parent.off('get-virtual-data', this.getData);\n this.parent.off('virtual-scroll-edit-cancel', this.cancelEdit);\n this.parent.off('select-row-on-context-open', this.toSelectRowOnContextOpen);\n this.parent.off('refresh-virtual-editform-cells', this.refreshCell);\n this.parent.off('virtaul-cell-focus', this.cellFocus);\n };\n return VirtualTreeContentRenderer;\n}(VirtualContentRenderer));\nexport { VirtualTreeContentRenderer };\nvar TreeInterSectionObserver = /** @class */ (function (_super) {\n __extends(TreeInterSectionObserver, _super);\n function TreeInterSectionObserver() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isWheeling = false;\n _this.newPos = 0;\n _this.lastPos = 0;\n _this.timer = 0;\n return _this;\n }\n TreeInterSectionObserver.prototype.observes = function (callback, onEnterCallback, instance) {\n var containerRect = 'containerRect';\n _super.prototype[\"\" + containerRect] = getValue('options', this).container.getBoundingClientRect();\n EventHandler.add(getValue('options', this).container, 'scroll', this.virtualScrollHandlers(callback, onEnterCallback, instance), this);\n if (getValue('options', this).movableContainer) {\n var movableContainerRect = 'movableContainerRect';\n _super.prototype[\"\" + movableContainerRect] = getValue('options', this).movableContainer.getBoundingClientRect();\n EventHandler.add(getValue('options', this).movableContainer, 'scroll', this.virtualScrollHandlers(callback, onEnterCallback, instance), this);\n }\n };\n TreeInterSectionObserver.prototype.clear = function () {\n this.lastPos = null;\n };\n TreeInterSectionObserver.prototype.virtualScrollHandlers = function (callback, onEnterCallback, instance) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var options = 'options';\n var movableEle = 'movableEle';\n var element = 'element';\n var fromWheel = 'fromWheel';\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n this[\"\" + options].prevTop = this[\"\" + options].prevLeft = 0;\n return function (e) {\n var top = _this[\"\" + options].movableContainer ? _this[\"\" + options].container.scrollTop : e.target.scrollTop;\n var left = _this[\"\" + options].movableContainer ? _this[\"\" + options].scrollbar.scrollLeft : e.target.scrollLeft;\n var direction = _this[\"\" + options].prevTop < top ? 'down' : 'up';\n direction = _this[\"\" + options].prevLeft === left ? direction : _this[\"\" + options].prevLeft < left ? 'right' : 'left';\n _this[\"\" + options].prevTop = top;\n _this[\"\" + options].prevLeft = left;\n var current = _this.sentinelInfo[\"\" + direction];\n var delta = 0;\n _this.newPos = top;\n if (_this.lastPos != null) { // && newPos < maxScroll\n delta = _this.newPos - _this.lastPos;\n }\n _this.lastPos = _this.newPos;\n if (_this.timer) {\n clearTimeout(_this.timer);\n }\n _this.timer = setTimeout(_this.clear, 0);\n if ((delta > 100 || delta < -100) && (e && e.preventDefault)) {\n e.returnValue = false;\n e.preventDefault();\n }\n if (_this[\"\" + options].axes.indexOf(current.axis) === -1) {\n return;\n }\n var containerRect = 'containerRect';\n _this[\"\" + containerRect] = _this[\"\" + options].container.getBoundingClientRect();\n var check = _this.check(direction);\n if (current.entered && (current.axis === 'X' || instance.enableVirtualMaskRow)) {\n if (_this[\"\" + movableEle] && (direction === 'right' || direction === 'left')) {\n onEnterCallback(_this[\"\" + movableEle], current, direction, { top: top, left: left }, _this[\"\" + fromWheel], check);\n }\n else {\n onEnterCallback(_this[\"\" + element], current, direction, { top: top, left: left }, _this[\"\" + fromWheel], check);\n }\n }\n if (check) {\n var fn = debounced50;\n if (current.axis === 'X') {\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n else {\n if ((instance.dataSource instanceof DataManager && instance.dataSource.dataSource.url !== undefined\n && !instance.dataSource.dataSource.offline && instance.dataSource.dataSource.url !== '') || isCountRequired(instance)\n || instance.enableVirtualMaskRow) {\n fn = instance.enableVirtualMaskRow ? debounced100 : fn;\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n else {\n callback({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n }\n }\n _this[\"\" + fromWheel] = false;\n };\n };\n return TreeInterSectionObserver;\n}(InterSectionObserver));\nexport { TreeInterSectionObserver };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Grid, VirtualScroll as GridVirtualScroll } from '@syncfusion/ej2-grids';\nimport { RenderType } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { getExpandStatus } from '../utils';\nimport { VirtualTreeContentRenderer } from '../renderer/virtual-tree-content-render';\nimport { VirtualHeaderRenderer, getTransformValues } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Virtual Scroll module will handle Virtualization\n *\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n /**\n * Constructor for VirtualScroll module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function VirtualScroll(parent) {\n this.prevstartIndex = -1;\n this.prevendIndex = -1;\n this.parent = parent;\n Grid.Inject(TreeVirtual);\n this.addEventListener();\n }\n VirtualScroll.prototype.returnVisualData = function (args) {\n args.data = this.visualData;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns VirtualScroll module name\n */\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualScroll';\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds, this);\n this.parent.on(events.pagingActions, this.virtualPageAction, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds);\n this.parent.off(events.pagingActions, this.virtualPageAction);\n this.parent.off(events.destroy, this.destroy);\n };\n VirtualScroll.prototype.collapseExpandVirtualchilds = function (row) {\n this.parent.grid.notify(events.virtualActionArgs, { isExpandCollapse: true });\n this.expandCollapseRec = row.record;\n row.record.expanded = row.action === 'collapse' ? false : true;\n var ret = {\n result: this.parent.flatData,\n row: row.row,\n action: row.action,\n record: row.record,\n count: this.parent.flatData.length\n };\n if (this.parent.enableVirtualization && this.parent.selectionSettings.mode === 'Cell' ||\n this.parent.selectionSettings.mode === 'Row' && !this.parent.selectionSettings.persistSelection) {\n this.parent.grid.clearSelection();\n }\n var requestType = getValue('isCollapseAll', this.parent) ? 'collapseAll' : 'refresh';\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret, { requestType: requestType });\n };\n VirtualScroll.prototype.virtualPageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents = dm.executeLocal(new Query().where(expanded));\n var visualData = parents.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents);\n });\n this.visualData = visualData;\n pageingDetails.count = visualData.length;\n this.parent.grid.notify(events.dataListener, { data: visualData });\n var counts = { startIndex: -1, endIndex: -1, count: pageingDetails.count, requestType: pageingDetails.actionArgs.requestType };\n this.parent.grid.notify(events.indexModifier, counts);\n var startIndex = counts.startIndex;\n var endIndex = counts.endIndex;\n pageingDetails.count = visualData.length;\n if (startIndex === -1 && endIndex === -1) {\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm.dataSource.json = visualData;\n pageingDetails.result = dm.executeLocal(query);\n }\n else {\n var requestType = pageingDetails.actionArgs.requestType;\n if (requestType === 'filtering' || requestType === 'collapseAll' || requestType === 'searching' ||\n (requestType === 'refresh' && this.parent.enableCollapseAll && endIndex > visualData.length && isNullOrUndefined(this.expandCollapseRec))) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.getContent().firstElementChild.scrollTop = 0;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n if ((requestType === 'save' && pageingDetails.actionArgs.index >= (counts.count - this.parent.grid.pageSettings.pageSize)) || (requestType === 'refresh' && this.parent['isGantt'] && this.parent['isAddedFromGantt'])) {\n var modifiedStartIndex = counts.startIndex + (counts.count - counts.endIndex);\n if (counts.count - counts.startIndex <= this.parent.grid.pageSettings.pageSize) {\n startIndex = modifiedStartIndex;\n endIndex = counts.count;\n }\n else {\n startIndex = counts.startIndex;\n endIndex = counts.endIndex;\n }\n this.parent['isAddedFromGantt'] = false;\n }\n //if ((this.prevendIndex !== -1 && this.prevstartIndex !== -1) &&\n //this.prevendIndex === endIndex && this.prevstartIndex === startIndex) {\n var virtualWrapperElement = this.parent.grid.contentModule.virtualEle.wrapper;\n var translateY = getTransformValues(virtualWrapperElement).height;\n if (!isNullOrUndefined(this.expandCollapseRec) && (pageingDetails.actionArgs.requestType === 'virtualscroll' ||\n (pageingDetails.actionArgs.requestType === 'refresh' && startIndex !== this.prevstartIndex)) &&\n (startIndex < this.parent.getRows().length && endIndex <= startIndex + this.parent.getRows().length) && translateY === 0) {\n startIndex = 0;\n }\n if (!isNullOrUndefined(this.expandCollapseRec)) {\n var resourceCount = this.parent.getRows();\n var sIndex = visualData.indexOf(this.expandCollapseRec);\n var tempdata = visualData.slice(sIndex, sIndex + resourceCount.length);\n if (tempdata.length < resourceCount.length && sIndex >= 0 && startIndex !== 0) {\n sIndex = visualData.length - resourceCount.length;\n sIndex = sIndex > 0 ? sIndex : 0;\n startIndex = sIndex;\n endIndex = visualData.length;\n }\n else if (getValue('isCollapseAll', this.parent)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n }\n //}\n if ((this.parent.enableCollapseAll || this.parent.expandStateMapping) && !isNullOrUndefined(this.expandCollapseRec)) {\n if (pageingDetails.count < this.parent.getRows()[0].getBoundingClientRect().height) {\n startIndex = 0;\n }\n else if (!this.parent['isExpandAll']) {\n startIndex = this.prevstartIndex === -1 ? 0 : this.prevstartIndex;\n }\n }\n this.expandCollapseRec = null;\n startIndex = startIndex < 0 ? 0 : startIndex;\n if (endIndex === 0 && visualData.length > 0) {\n pageingDetails.result = visualData;\n }\n else {\n pageingDetails.result = visualData.slice(startIndex, endIndex);\n }\n this.prevstartIndex = startIndex;\n this.prevendIndex = endIndex;\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * To destroy the virtualScroll module\n *\n * @returns {void}\n * @hidden\n */\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\nvar TreeVirtual = /** @class */ (function (_super) {\n __extends(TreeVirtual, _super);\n function TreeVirtual(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n getValue('parent', _this).off('initial-load', getValue('instantiateRenderer', _this), _this);\n getValue('parent', _this).on('initial-load', _this.instantiateRenderers, _this);\n return _this;\n }\n TreeVirtual.prototype.getModuleName = function () {\n return 'treeVirtualScroll';\n };\n TreeVirtual.prototype.instantiateRenderers = function () {\n var parentGrid = getValue('parent', this);\n getValue('parent', this).log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = getValue('locator', this).getService('rendererFactory');\n if (parentGrid.enableColumnVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new VirtualHeaderRenderer(getValue('parent', this), getValue('locator', this))]);\n }\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this))]);\n this.ensurePageSize();\n };\n TreeVirtual.prototype.ensurePageSize = function () {\n var parentGrid = getValue('parent', this);\n var rowHeight = parentGrid.getRowHeight();\n if (!isNullOrUndefined(parentGrid.height) && typeof (parentGrid.height) === 'string' && parentGrid.height.indexOf('%') !== -1) {\n parentGrid.element.style.height = parentGrid.height;\n }\n var vHeight = parentGrid.height.toString().indexOf('%') < 0 ? parseInt(parentGrid.height.toString(), 10) :\n parentGrid.element.getBoundingClientRect().height;\n var blockSize = ~~(vHeight / rowHeight);\n var height = blockSize * 2;\n var size = parentGrid.pageSettings.pageSize;\n parentGrid.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n return TreeVirtual;\n}(GridVirtualScroll));\nexport { TreeVirtual };\n","import { getObject, Filter as GridFilter, Grid } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { getParentData } from '../utils';\n/**\n * TreeGrid Filter module will handle filtering action\n *\n * @hidden\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Filter module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Filter(parent) {\n Grid.Inject(GridFilter);\n this.parent = parent;\n this.isHierarchyFilter = false;\n this.filteredResult = [];\n this.flatFilteredData = [];\n this.filteredParentRecs = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Filter module name\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n /**\n * To destroy the Filter module\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.addEventListener = function () {\n this.parent.on('updateFilterRecs', this.updatedFilteredRecord, this);\n this.parent.on('clearFilters', this.clearFilterLevel, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateFilterRecs', this.updatedFilteredRecord);\n this.parent.off('clearFilters', this.clearFilterLevel);\n };\n /**\n * Function to update filtered records\n *\n * @param {{data: Object} } dataDetails - Filtered data collection\n * @param {Object} dataDetails.data - Fliltered data collection\n * @hidden\n * @returns {void}\n */\n Filter.prototype.updatedFilteredRecord = function (dataDetails) {\n setValue('uniqueIDFilterCollection', {}, this.parent);\n this.flatFilteredData = dataDetails.data;\n this.filteredParentRecs = [];\n this.filteredResult = [];\n this.isHierarchyFilter = false;\n for (var f = 0; f < this.flatFilteredData.length; f++) {\n var rec = this.flatFilteredData[parseInt(f.toString(), 10)];\n this.addParentRecord(rec);\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode\n : this.parent.searchSettings.hierarchyMode;\n if (((hierarchyMode === 'Child' || hierarchyMode === 'None') &&\n (this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== ''))) {\n this.isHierarchyFilter = true;\n }\n var ischild = getObject('childRecords', rec);\n if (!isNullOrUndefined(ischild) && ischild.length) {\n setValue('hasFilteredChildRecords', this.checkChildExsist(rec), rec);\n }\n var parent_1 = getObject('parentItem', rec);\n if (!isNullOrUndefined(parent_1)) {\n var parRecord = getParentData(this.parent, rec.parentItem.uniqueID, true);\n //let parRecord: Object = this.flatFilteredData.filter((e: ITreeData) => {\n // return e.uniqueID === rec.parentItem.uniqueID; })[0];\n setValue('hasFilteredChildRecords', true, parRecord);\n if (parRecord && parRecord.parentItem) {\n this.updateParentFilteredRecord(parRecord);\n }\n }\n }\n if (this.flatFilteredData.length > 0 && this.isHierarchyFilter) {\n this.updateFilterLevel();\n }\n this.parent.notify('updateAction', { result: this.filteredResult });\n };\n Filter.prototype.updateParentFilteredRecord = function (record) {\n var parRecord = getParentData(this.parent, record.parentItem.uniqueID, true);\n var uniqueIDValue = getValue('uniqueIDFilterCollection', this.parent);\n if (parRecord && Object.prototype.hasOwnProperty.call(uniqueIDValue, parRecord.uniqueID)) {\n setValue('hasFilteredChildRecords', true, parRecord);\n }\n if (parRecord && parRecord.parentItem) {\n this.updateParentFilteredRecord(parRecord);\n }\n };\n Filter.prototype.addParentRecord = function (record) {\n var parent = getParentData(this.parent, record.parentUniqueID);\n //let parent: Object = this.parent.flatData.filter((e: ITreeData) => {return e.uniqueID === record.parentUniqueID; })[0];\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode\n : this.parent.searchSettings.hierarchyMode;\n if (hierarchyMode === 'None' && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== '')) {\n if (isNullOrUndefined(parent)) {\n if (this.flatFilteredData.indexOf(record) !== -1) {\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n record.hasFilteredChildRecords = true;\n }\n return;\n }\n }\n else {\n this.addParentRecord(parent);\n if (this.flatFilteredData.indexOf(parent) !== -1 || this.filteredResult.indexOf(parent) !== -1) {\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n else {\n if (this.filteredResult.indexOf(record) === -1 && this.flatFilteredData.indexOf(record) !== -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n }\n }\n else {\n if (!isNullOrUndefined(parent)) {\n var hierarchyMode_1 = this.parent.grid.searchSettings.key === '' ?\n this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;\n if (hierarchyMode_1 === 'Child' && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== '')) {\n if (this.flatFilteredData.indexOf(parent) !== -1) {\n this.addParentRecord(parent);\n }\n }\n else {\n this.addParentRecord(parent);\n }\n }\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n };\n Filter.prototype.checkChildExsist = function (records) {\n var childRec = getObject('childRecords', records);\n var isExist = false;\n for (var count = 0; count < childRec.length; count++) {\n var ischild = childRec[parseInt(count.toString(), 10)].childRecords;\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ?\n this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;\n if (((hierarchyMode === 'Child' || hierarchyMode === 'Both') && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== ''))) {\n var uniqueIDValue = getValue('uniqueIDFilterCollection', this.parent);\n if (!Object.prototype.hasOwnProperty.call(uniqueIDValue, childRec[parseInt(count.toString(), 10)].uniqueID)) {\n this.filteredResult.push(childRec[parseInt(count.toString(), 10)]);\n setValue('uniqueIDFilterCollection.' + childRec[parseInt(count.toString(), 10)].uniqueID, childRec[parseInt(count.toString(), 10)], this.parent);\n isExist = true;\n }\n }\n if ((hierarchyMode === 'None')\n && (this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== '')) {\n if (this.flatFilteredData.indexOf(childRec[parseInt(count.toString(), 10)]) !== -1) {\n isExist = true;\n break;\n }\n }\n if (!isNullOrUndefined(ischild) && ischild.length) {\n isExist = this.checkChildExsist(childRec[parseInt(count.toString(), 10)]);\n }\n if ((hierarchyMode === 'Child' || hierarchyMode === 'Both') && childRec.length) {\n isExist = true;\n }\n }\n return isExist;\n };\n Filter.prototype.updateFilterLevel = function () {\n var record = this.filteredResult;\n var len = this.filteredResult.length;\n for (var c = 0; c < len; c++) {\n var parent_2 = getParentData(this.parent, record[parseInt(c.toString(), 10)].parentUniqueID);\n var isPrst = record.indexOf(parent_2) !== -1;\n if (isPrst) {\n var parent_3 = getParentData(this.parent, record[parseInt(c.toString(), 10)].parentUniqueID, true);\n record[parseInt(c.toString(), 10)].filterLevel = parent_3.filterLevel + 1;\n }\n else {\n record[parseInt(c.toString(), 10)].filterLevel = 0;\n this.filteredParentRecs.push(record[parseInt(c.toString(), 10)]);\n }\n }\n };\n Filter.prototype.clearFilterLevel = function (data) {\n var count = 0;\n var flatData = data.flatData;\n var len = flatData.length;\n var currentRecord;\n for (count; count < len; count++) {\n currentRecord = flatData[parseInt(count.toString(), 10)];\n var fLevel = currentRecord.filterLevel;\n if (fLevel || fLevel === 0 || !isNullOrUndefined(currentRecord.hasFilteredChildRecords)) {\n currentRecord.hasFilteredChildRecords = null;\n currentRecord.filterLevel = null;\n }\n }\n this.filteredResult = [];\n this.parent.notify('updateResults', { result: flatData, count: flatData.length });\n };\n return Filter;\n}());\nexport { Filter };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { Sort as GridSort, Grid, getActualProperties } from '@syncfusion/ej2-grids';\nimport { getParentData } from '../utils';\n/**\n * Internal dataoperations for TreeGrid\n *\n * @hidden\n */\nvar Sort = /** @class */ (function () {\n function Sort(grid) {\n Grid.Inject(GridSort);\n this.parent = grid;\n this.taskIds = [];\n this.flatSortedData = [];\n this.storedIndex = -1;\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Sort module name\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n /**\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n this.parent.on('updateModel', this.updateModel, this);\n this.parent.on('createSort', this.createdSortedRecords, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateModel', this.updateModel);\n this.parent.off('createSort', this.createdSortedRecords);\n };\n Sort.prototype.createdSortedRecords = function (sortParams) {\n var data = sortParams.modifiedData;\n var srtQry = sortParams.srtQry;\n this.iterateSort(data, srtQry);\n this.storedIndex = -1;\n sortParams.modifiedData = this.flatSortedData;\n this.flatSortedData = [];\n };\n Sort.prototype.iterateSort = function (data, srtQry) {\n for (var d = 0; d < data.length; d++) {\n if (this.parent.grid.filterSettings.columns.length > 0 || this.parent.grid.searchSettings.key !== '') {\n if (!isNullOrUndefined(getParentData(this.parent, data[parseInt(d.toString(), 10)].uniqueID, true))) {\n this.storedIndex++;\n this.flatSortedData[this.storedIndex] = data[parseInt(d.toString(), 10)];\n }\n }\n else {\n this.storedIndex++;\n this.flatSortedData[this.storedIndex] = data[parseInt(d.toString(), 10)];\n }\n if (data[parseInt(d.toString(), 10)].hasChildRecords) {\n var childSort = (new DataManager(data[parseInt(d.toString(), 10)].childRecords)\n .executeLocal(srtQry));\n if (this.parent.allowRowDragAndDrop && data[parseInt(d.toString(), 10)].childRecords.indexOf(this.parent.rowDragAndDropModule['draggedRecord']) !== -1 && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {\n var dragdIndex = childSort.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);\n childSort.splice(dragdIndex, 1);\n var dropdIndex = childSort.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);\n if (this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {\n childSort.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {\n childSort.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n }\n this.iterateSort(childSort, srtQry);\n }\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n this.parent.grid.sortColumn(columnName, direction, isMultiSort);\n };\n Sort.prototype.removeSortColumn = function (field) {\n this.parent.grid.removeSortColumn(field);\n };\n /**\n * The function used to update sortSettings of TreeGrid.\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n this.parent.setProperties({ sortSettings: getActualProperties(this.parent.grid.sortSettings) }, true);\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n this.parent.grid.clearSorting();\n this.updateModel();\n };\n /**\n * Destroys the Sorting of TreeGrid.\n *\n * @function destroy\n * @returns {void}\n */\n Sort.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Sort;\n}());\nexport { Sort };\n","import { Grid } from '@syncfusion/ej2-grids';\nimport { Page as GridPage } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { getValue, isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * The `Page` module is used to render pager and handle paging action.\n *\n * @hidden\n */\nvar Page = /** @class */ (function () {\n function Page(parent) {\n Grid.Inject(GridPage);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n * @returns {void}\n */\n Page.prototype.addEventListener = function () {\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandPagedchilds, this);\n this.parent.on(events.pagingActions, this.pageAction, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandPagedchilds);\n this.parent.off(events.pagingActions, this.pageAction);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Pager module name\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.parent.grid.pagerModule.refresh();\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.parent.grid.pagerModule.goToPage(pageNo);\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n this.parent.grid.pagerModule.updateExternalMessage(message);\n };\n /**\n * @param {{action: string, row: HTMLTableRowElement, record: ITreeData, args: RowCollapsedEventArgs}} rowDetails - Expand Collapse details arguments\n * @param {string} rowDetails.action - Expand Collapse action type\n * @param {HTMLTableRowElement} rowDetails.row - Row element\n * @param {ITreeData} rowDetails.record - Row object data\n * @param {RowCollapsedEventArgs} rowDetails.args - Expand Collapse event arguments\n * @hidden\n * @returns {void}\n */\n Page.prototype.collapseExpandPagedchilds = function (rowDetails) {\n rowDetails.record.expanded = rowDetails.action === 'collapse' ? false : true;\n this.parent.flatData.map(function (e) { return e.expanded = e.uniqueID === rowDetails.record.uniqueID &&\n e.expanded !== rowDetails.record.expanded ? rowDetails.record.expanded : e.expanded; });\n if (this.parent.enableImmutableMode) {\n var primaryKeyField_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var record = this.parent.flatData.filter(function (e) {\n return e[\"\" + primaryKeyField_1] === rowDetails.record[\"\" + primaryKeyField_1];\n });\n if (record.length) {\n record[0].expanded = rowDetails.record.expanded;\n }\n }\n var ret = {\n result: this.parent.flatData,\n row: rowDetails.row,\n action: rowDetails.action,\n record: rowDetails.record,\n count: this.parent.flatData.length\n };\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret);\n if (this.parent.enableImmutableMode) {\n var row = 'row';\n var action = 'action';\n var targetEle = void 0;\n if (ret[\"\" + action] === 'collapse') {\n targetEle = ret[\"\" + row].getElementsByClassName('e-treegridexpand')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridexpand');\n addClass([targetEle], 'e-treegridcollapse');\n }\n }\n else if (ret[\"\" + action] === 'expand') {\n targetEle = ret[\"\" + row].getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n }\n };\n Page.prototype.pageRoot = function (pagedResults, temp, result) {\n var newResults = isNullOrUndefined(result) ? [] : result;\n var _loop_1 = function (t) {\n newResults.push(temp[parseInt(t.toString(), 10)]);\n var res = [];\n if (temp[parseInt(t.toString(), 10)].hasChildRecords) {\n res = pagedResults.filter(function (e) {\n return temp[parseInt(t.toString(), 10)].uniqueID === e.parentUniqueID;\n });\n newResults = this_1.pageRoot(pagedResults, res, newResults);\n }\n };\n var this_1 = this;\n for (var t = 0; t < temp.length; t++) {\n _loop_1(t);\n }\n return newResults;\n };\n Page.prototype.updatePageSize = function (pageingDetails) {\n var updateSize = pageingDetails.result.length;\n var gridPagerModule = this.parent.grid.pagerModule;\n if (this.parent.pageSettings.pageSizes === true) {\n if (gridPagerModule.pagerObj.pagerdropdownModule['dropDownListObject'].value === gridPagerModule.pagerObj.getLocalizedLabel('All')) {\n gridPagerModule['pagerObj'].totalRecordsCount = updateSize;\n this.parent.grid.pageSettings.pageSize = updateSize;\n }\n }\n };\n Page.prototype.pageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n if (this.parent.pageSettings.pageSizeMode === 'Root') {\n var temp = [];\n var propname = (this.parent.grid.filterSettings.columns.length > 0) &&\n (this.parent.filterSettings.hierarchyMode === 'Child' || this.parent.filterSettings.hierarchyMode === 'None') ?\n 'filterLevel' : 'level';\n var query = new Query().where(propname, 'equal', 0);\n temp = dm.executeLocal(query);\n pageingDetails.count = temp.length;\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n temp = dm.executeLocal(query);\n var newResults = this.pageRoot(pageingDetails.result, temp);\n pageingDetails.result = newResults;\n }\n else {\n var dm_1 = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents_1 = dm_1.executeLocal(new Query().where(expanded));\n var visualData = void 0;\n if (isFilterChildHierarchy(this.parent) && (pageingDetails.actionArgs.action !== 'collapse' &&\n pageingDetails.actionArgs.action !== 'expand')) {\n visualData = parents_1;\n }\n else {\n visualData = parents_1.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents_1);\n });\n }\n pageingDetails.count = visualData.length;\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n this.updatePageSize(pageingDetails);\n var current = this.parent.grid.pageSettings.currentPage;\n if (visualData.length < (current * size)) {\n current = (Math.floor(visualData.length / size)) + ((visualData.length % size) ? 1 : 0);\n current = current ? current : 1;\n this.parent.grid.setProperties({ pageSettings: { currentPage: current } }, true);\n }\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm_1.dataSource.json = visualData;\n pageingDetails.result = dm_1.executeLocal(query);\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n return Page;\n}());\nexport { Page };\n","import { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getObject, calculateAggregate, Aggregate as GridAggregate, Grid, appendChildren } from '@syncfusion/ej2-grids';\nimport { findParentRecords } from '../utils';\nimport { isNullOrUndefined, setValue, createElement, extend } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Aggregate module\n *\n * @hidden\n */\nvar Aggregate = /** @class */ (function () {\n /**\n * Constructor for Aggregate module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Aggregate(parent) {\n Grid.Inject(GridAggregate);\n this.parent = parent;\n this.flatChildRecords = [];\n this.summaryQuery = [];\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Summary module name\n */\n Aggregate.prototype.getModuleName = function () {\n return 'summary';\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n };\n /**\n * Function to calculate summary values\n *\n * @param {QueryOptions[]} summaryQuery - DataManager query for aggregate operations\n * @param {Object[]} filteredData - Filtered data collection\n * @param {boolean} isSort - Specified whether sorting operation performed\n * @hidden\n * @returns {Object[]} - return flat records with summary values\n */\n Aggregate.prototype.calculateSummaryValue = function (summaryQuery, filteredData, isSort) {\n this.summaryQuery = summaryQuery;\n var parentRecord;\n var parentDataLength = Object.keys(filteredData).length;\n var parentData = [];\n for (var p = 0, len = parentDataLength; p < len; p++) {\n var summaryRow = getObject('isSummaryRow', filteredData[parseInt(p.toString(), 10)]);\n if (!summaryRow) {\n parentData.push(filteredData[parseInt(p.toString(), 10)]);\n }\n }\n var parentRecords = findParentRecords(parentData);\n var flatRecords = parentData.slice();\n var summaryLength = Object.keys(this.parent.aggregates).length;\n var dataLength = Object.keys(parentRecords).length;\n var childRecordsLength;\n var columns = this.parent.getColumns();\n if (this.parent.aggregates.filter(function (x) { return x.showChildSummary; }).length) {\n for (var i = 0, len = dataLength; i < len; i++) {\n parentRecord = parentRecords[parseInt(i.toString(), 10)];\n childRecordsLength = this.getChildRecordsLength(parentRecord, flatRecords);\n if (childRecordsLength) {\n var _loop_1 = function (summaryRowIndex, len_1) {\n var item = void 0;\n item = {};\n for (var i_1 = 0; i_1 < columns.length; i_1++) {\n var field = (isNullOrUndefined(getObject('field', columns[parseInt(i_1.toString(), 10)]))) ?\n columns[parseInt(i_1.toString(), 10)] : getObject('field', (columns[parseInt(i_1.toString(), 10)]));\n item[\"\" + field] = null;\n }\n item = this_1.createSummaryItem(item, this_1.parent.aggregates[summaryRowIndex - 1]);\n if (this_1.parent.aggregates[summaryRowIndex - 1].showChildSummary) {\n var idx_1;\n flatRecords.map(function (e, i) {\n if (e.uniqueID === parentRecord.uniqueID) {\n idx_1 = i;\n return;\n }\n });\n var currentIndex = idx_1 + childRecordsLength + summaryRowIndex;\n var summaryParent = extend({}, parentRecord);\n delete summaryParent.childRecords;\n delete summaryParent[this_1.parent.childMapping];\n setValue('parentItem', summaryParent, item);\n var level = getObject('level', summaryParent);\n setValue('level', level + 1, item);\n setValue('isSummaryRow', true, item);\n setValue('parentUniqueID', summaryParent.uniqueID, item);\n if (isSort) {\n var childRecords = getObject('childRecords', parentRecord);\n if (childRecords.length) {\n childRecords.push(item);\n }\n }\n flatRecords.splice(currentIndex, 0, item);\n }\n else {\n return \"continue\";\n }\n };\n var this_1 = this;\n for (var summaryRowIndex = 1, len_1 = summaryLength; summaryRowIndex <= len_1; summaryRowIndex++) {\n _loop_1(summaryRowIndex, len_1);\n }\n this.flatChildRecords = [];\n }\n }\n }\n else {\n var items = {};\n for (var columnIndex = 0, length_1 = columns.length; columnIndex < length_1; columnIndex++) {\n var fields = isNullOrUndefined(getObject('field', columns[parseInt(columnIndex.toString(), 10)])) ?\n columns[parseInt(columnIndex.toString(), 10)] : getObject('field', columns[parseInt(columnIndex.toString(), 10)]);\n items[\"\" + fields] = null;\n }\n for (var summaryRowIndex = 1, length_2 = summaryLength; summaryRowIndex <= length_2; summaryRowIndex++) {\n this.createSummaryItem(items, this.parent.aggregates[summaryRowIndex - 1]);\n }\n }\n return flatRecords;\n };\n Aggregate.prototype.getChildRecordsLength = function (parentData, flatData) {\n var recordLength = Object.keys(flatData).length;\n var record;\n for (var i = 0, len = recordLength; i < len; i++) {\n record = flatData[parseInt(i.toString(), 10)];\n var parent_1 = isNullOrUndefined(record.parentItem) ? null :\n flatData.filter(function (e) { return e.uniqueID === record.parentItem.uniqueID; })[0];\n if (parentData === parent_1) {\n this.flatChildRecords.push(record);\n var hasChild = getObject('hasChildRecords', record);\n if (hasChild) {\n this.getChildRecordsLength(record, flatData);\n }\n else {\n continue;\n }\n }\n }\n return this.flatChildRecords.length;\n };\n Aggregate.prototype.createSummaryItem = function (itemData, summary) {\n var summaryColumnLength = Object.keys(summary.columns).length;\n for (var i = 0, len = summaryColumnLength; i < len; i++) {\n var displayColumn = isNullOrUndefined(summary.columns[parseInt(i.toString(), 10)].columnName) ?\n summary.columns[parseInt(i.toString(), 10)].field : summary.columns[parseInt(i.toString(), 10)].columnName;\n var keys = Object.keys(itemData);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key === displayColumn) {\n if (this.flatChildRecords.length) {\n itemData[\"\" + key] = this.getSummaryValues(summary.columns[parseInt(i.toString(), 10)], this.flatChildRecords);\n }\n else if (this.parent.isLocalData) {\n var data = this.parent.dataSource instanceof DataManager ? this.parent.dataSource.dataSource.json\n : this.parent.flatData;\n itemData[\"\" + key] = this.getSummaryValues(summary.columns[parseInt(i.toString(), 10)], data);\n }\n }\n else {\n continue;\n }\n }\n }\n return itemData;\n };\n Aggregate.prototype.getSummaryValues = function (summaryColumn, summaryData) {\n var qry = new Query();\n var single = {};\n var helper = {};\n var type = !isNullOrUndefined(summaryColumn.field) ?\n this.parent.getColumnByField(summaryColumn.field).type : undefined;\n summaryColumn.setPropertiesSilent({ format: this.getFormatFromType(summaryColumn.format, type) });\n summaryColumn.setFormatter(this.parent.grid.locale);\n var formatFn = summaryColumn.getFormatter() || (function () { return function (a) { return a; }; })();\n summaryColumn.setTemplate(helper);\n var tempObj = summaryColumn.getTemplate(2);\n qry.queries = this.summaryQuery;\n qry.requiresCount();\n var sumData = new DataManager(summaryData).executeLocal(qry);\n var types = summaryColumn.type;\n var summaryKey;\n types = [summaryColumn.type];\n for (var i = 0; i < types.length; i++) {\n summaryKey = types[parseInt(i.toString(), 10)];\n var key = summaryColumn.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' ? getObject('aggregates', sumData) :\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n calculateAggregate(types[parseInt(i.toString(), 10)], sumData, summaryColumn, this.parent);\n var disp = summaryColumn.columnName;\n var value_1 = types[parseInt(i.toString(), 10)] !== 'Custom' ? val[\"\" + key] : val;\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = value_1;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(value_1) : ' ';\n }\n helper.format = summaryColumn.getFormatter();\n var cellElement = createElement('td', {\n className: 'e-summary'\n });\n if (this.parent.isReact) {\n var renderReactTemplates = 'renderReactTemplates';\n tempObj.fn(single[summaryColumn.columnName], this.parent, tempObj.property, '', null, null, cellElement);\n this.parent[\"\" + renderReactTemplates]();\n }\n else {\n appendChildren(cellElement, tempObj.fn(single[summaryColumn.columnName], this.parent, tempObj.property));\n }\n var value = single[\"\" + summaryColumn.columnName][\"\" + summaryKey];\n var summaryValue;\n if (cellElement.innerHTML.indexOf(value) === -1) {\n summaryValue = cellElement.innerHTML + value;\n return summaryValue;\n }\n else {\n return cellElement.innerHTML;\n }\n };\n Aggregate.prototype.getFormatFromType = function (summaryformat, type) {\n if (isNullOrUndefined(type) || typeof summaryformat !== 'string') {\n return summaryformat;\n }\n var obj;\n switch (type) {\n case 'number':\n obj = { format: summaryformat };\n break;\n case 'datetime':\n obj = { type: 'dateTime', skeleton: summaryformat };\n break;\n case 'date':\n obj = { type: type, skeleton: summaryformat };\n break;\n }\n return obj;\n };\n /**\n * To destroy the Aggregate module\n *\n * @returns {void}\n * @hidden\n */\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Aggregate;\n}());\nexport { Aggregate };\n","import { Grid, Resize as GridResize } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Resize module\n *\n * @hidden\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for Resize module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Resize(parent) {\n Grid.Inject(GridResize);\n this.parent = parent;\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n this.parent.grid.autoFitColumns(fName);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Resize module name\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n /**\n * Destroys the Resize.\n *\n * @function destroy\n * @returns {void}\n */\n Resize.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.grid.resizeModule.destroy();\n };\n return Resize;\n}());\nexport { Resize };\n","import { getObject, Grid, Reorder as GridReorder } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Reorder module\n *\n * @hidden\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for Reorder module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Reorder(parent) {\n Grid.Inject(GridReorder);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Reorder module name\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Reorder.prototype.addEventListener = function () {\n this.parent.on('getColumnIndex', this.getTreeColumn, this);\n };\n Reorder.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('getColumnIndex', this.getTreeColumn);\n };\n /**\n * To destroy the Reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n this.removeEventListener();\n };\n Reorder.prototype.getTreeColumn = function () {\n var columnModel = 'columnModel';\n var treeColumn = this.parent[\"\" + columnModel][this.parent.treeColumnIndex];\n var treeIndex;\n var updatedCols = this.parent.getColumns();\n for (var f = 0; f < updatedCols.length; f++) {\n var treeColumnfield = getObject('field', treeColumn);\n var parentColumnfield = getObject('field', updatedCols[parseInt(f.toString(), 10)]);\n if (treeColumnfield === parentColumnfield) {\n treeIndex = f;\n break;\n }\n }\n this.parent.setProperties({ treeColumnIndex: treeIndex }, true);\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { Grid, RowDD as GridDragDrop, parentsUntil } from '@syncfusion/ej2-grids';\nimport { getObject, Scroll } from '@syncfusion/ej2-grids';\nimport { closest, isNullOrUndefined, classList, setValue, extend, getValue, removeClass, addClass, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { editAction } from './crud-actions';\nimport { getParentData, findChildrenRecords, isRemoteData, isOffline, isCountRequired } from '../utils';\n/**\n * TreeGrid RowDragAndDrop module\n *\n * @hidden\n */\nvar RowDD = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function RowDD(parent) {\n /** @hidden */\n this.canDrop = true;\n /** @hidden */\n this.isDraggedWithChild = false;\n /** @hidden */\n this.modifiedRecords = 'modifiedRecords';\n /** @hidden */\n this.selectedRecords = 'selectedRecords';\n /** @hidden */\n this.selectedRows = 'selectedRows';\n /** @hidden */\n this.hasDropItem = true;\n /** @hidden */\n this.isaddtoBottom = false;\n Grid.Inject(GridDragDrop);\n this.parent = parent;\n this.addEventListener();\n }\n RowDD.prototype.getChildrecordsByParentID = function (id) {\n var treeGridDataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridDataSource = this.parent.grid.dataSource.dataSource.json;\n }\n else {\n treeGridDataSource = this.parent.grid.dataSource;\n }\n var record = treeGridDataSource.filter(function (e) {\n return e.uniqueID === id;\n });\n return record;\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.addEventListener = function () {\n this.parent.on(events.rowdraging, this.Rowdraging, this);\n this.parent.on(events.rowDropped, this.rowDropped, this);\n this.parent.on(events.rowsAdd, this.rowsAdded, this);\n this.parent.on(events.rowsRemove, this.rowsRemoved, this);\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @returns {void}\n * @param {number[]} fromIndexes - source indexes of rows to be re-ordered\n * @param {number} toIndex - Destination row index\n * @param {string} position - Drop position as above or below or child\n */\n RowDD.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n var tObj = this.parent;\n var action = 'action';\n var dropPosition = 'dropPosition';\n var updateRowAndCellElements = 'updateRowAndCellElements';\n if (fromIndexes[0] !== toIndex && ['above', 'below', 'child'].indexOf(position) !== -1) {\n if (position === 'above') {\n this.dropPosition = 'topSegment';\n }\n if (position === 'below') {\n this.dropPosition = 'bottomSegment';\n }\n if (position === 'child') {\n this.dropPosition = 'middleSegment';\n }\n this.parent[\"\" + dropPosition] = this.dropPosition;\n var data = [];\n for (var i = 0; i < fromIndexes.length; i++) {\n var index = this.parent.getRowByIndex(fromIndexes[parseInt(i.toString(), 10)]).rowIndex;\n data[parseInt(i.toString(), 10)] = this.parent.getCurrentViewRecords()[parseInt(index.toString(), 10)];\n }\n var isByMethod = true;\n var args = {\n data: data,\n dropIndex: toIndex\n };\n if (!isCountRequired(this.parent)) {\n this.dropRows(args, isByMethod);\n }\n //this.refreshGridDataSource();\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n if (this.parent[\"\" + action] === 'outdenting') {\n if (!isNullOrUndefined(data[0].parentItem)) {\n data[0].level = data[0].parentItem.level + 1;\n }\n }\n this.parent.grid.refresh();\n if (this.parent.enableImmutableMode && this.dropPosition === 'middleSegment') {\n var index = void 0;\n if (this.parent.allowRowDragAndDrop) {\n index = this.parent.treeColumnIndex + 1;\n }\n else if (this.parent[\"\" + action] === 'indenting') {\n index = this.parent.treeColumnIndex;\n }\n var row = this.parent.getRows()[fromIndexes[0]];\n var dropData = args.data[0];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(dropData);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n var parentData = getParentData(this.parent, args.data[0][\"\" + parentUniqueID]);\n var parentrow = this.parent.getRows()[parseInt(toIndex.toString(), 10)];\n totalRecord.push(parentData);\n rows.push(parentrow);\n this.parent[\"\" + updateRowAndCellElements](totalRecord, rows, index);\n }\n if (this.parent.enableImmutableMode && this.parent[\"\" + action] === 'outdenting') {\n var index = void 0;\n if (this.parent.allowRowDragAndDrop) {\n index = this.parent.treeColumnIndex + 1;\n }\n else if (this.parent[\"\" + action] === 'outdenting') {\n index = this.parent.treeColumnIndex;\n }\n var record = args.data[0];\n var row = this.parent.getRows()[fromIndexes[0]];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(record);\n rows.push(row);\n this.parent[\"\" + updateRowAndCellElements](totalRecord, rows, index);\n }\n }\n else {\n return;\n }\n };\n RowDD.prototype.indentOutdentAction = function (record, request) {\n var tObj = this.parent;\n var action = 'action';\n var droppedIndex = 'dropIndex';\n var selectedItemIndex = -1;\n if (isNullOrUndefined(record) && this.parent.selectedRowIndex === -1) {\n return;\n }\n else {\n if (this.parent.enableVirtualization && this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.getSelectedRows()[0].rowIndex;\n }\n else if (this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.selectedRowIndex;\n }\n this.selectedItem = isNullOrUndefined(record) ?\n tObj.getCurrentViewRecords()[parseInt(selectedItemIndex.toString(), 10)] : record;\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = this.parent.grid.getRowIndexByPrimaryKey(this.selectedItem[\"\" + primaryKeyField]);\n this.selectedRow = this.parent[this.selectedRows] = selectedItemIndex !== -1 ?\n this.parent.getSelectedRows()[0]\n : this.parent.grid.getRowByIndex(rowIndex);\n this.selectedRecord = this.parent[this.selectedRecords] = selectedItemIndex !== -1 ?\n tObj.getCurrentViewRecords()[parseInt(selectedItemIndex.toString(), 10)]\n : this.selectedItem;\n if (request === 'indent') {\n var record_1 = tObj.getCurrentViewRecords()[this.selectedRow.rowIndex - 1];\n var dropIndex = void 0;\n if (this.selectedRow.rowIndex === 0 || this.selectedRow.rowIndex === -1 ||\n tObj.getCurrentViewRecords()[this.selectedRow.rowIndex].level - record_1.level === 1) {\n return;\n }\n if (record_1.level > this.selectedRecord.level) {\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[parseInt(i.toString(), 10)].taskData ===\n record_1.parentItem.taskData) {\n dropIndex = i;\n if (tObj.enableVirtualization) {\n dropIndex = parseInt(tObj.getRows()[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10);\n }\n }\n }\n }\n else {\n dropIndex = this.selectedRow.rowIndex - 1;\n }\n if (this.parent.enableVirtualization && this.selectedRecord && !(record_1.level > this.selectedRecord.level)) {\n dropIndex = parseInt(this.selectedRow.getAttribute('data-rowindex'), 10) - 1;\n }\n tObj[\"\" + action] = 'indenting';\n tObj[\"\" + droppedIndex] = dropIndex;\n this.eventTrigger('indenting', dropIndex);\n }\n else if (request === 'outdent') {\n if (this.selectedRow.rowIndex === -1 || this.selectedRow.rowIndex === 0 ||\n tObj.getCurrentViewRecords()[this.selectedRow.rowIndex].level === 0) {\n return;\n }\n var dropIndex = void 0;\n var parentItem = this.selectedRecord.parentItem;\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[parseInt(i.toString(), 10)].uniqueID === parentItem.uniqueID) {\n dropIndex = i;\n }\n }\n if (this.parent.enableVirtualization && this.selectedRecord) {\n dropIndex = parseInt(this.parent.getRows()[parseInt(dropIndex.toString(), 10)].getAttribute('data-rowindex'), 10);\n }\n tObj[\"\" + action] = 'outdenting';\n tObj[\"\" + droppedIndex] = dropIndex;\n this.eventTrigger('outdenting', dropIndex);\n }\n }\n };\n RowDD.prototype.eventTrigger = function (action, dropIndex) {\n var _this = this;\n var actionArgs = {\n action: action,\n cancel: false,\n data: [this.parent[this.selectedRecords]],\n row: this.parent[this.selectedRows]\n };\n this.parent.trigger(events.actionBegin, actionArgs, function (actionArgs) {\n if (!actionArgs.cancel) {\n if (actionArgs.action === 'indenting') {\n if (_this.parent.enableVirtualization) {\n _this.reorderRows([parseInt(_this.selectedRow.getAttribute('data-rowindex'), 10)], dropIndex, 'child');\n }\n else {\n _this.reorderRows([_this.selectedRow.rowIndex], dropIndex, 'child');\n }\n }\n else if (actionArgs.action === 'outdenting') {\n if (_this.parent.enableVirtualization) {\n _this.reorderRows([parseInt(_this.selectedRow.getAttribute('data-rowindex'), 10)], dropIndex, 'below');\n }\n else {\n _this.reorderRows([_this.selectedRow.rowIndex], dropIndex, 'below');\n }\n }\n }\n });\n };\n RowDD.prototype.orderToIndex = function (currentData) {\n for (var i = 0; i < currentData.length; i++) {\n currentData[parseInt(i.toString(), 10)].index = i;\n if (!isNullOrUndefined(currentData[parseInt(i.toString(), 10)].parentItem)) {\n var updatedParent = getValue('uniqueIDCollection.' + currentData[parseInt(i.toString(), 10)].parentUniqueID, this.parent);\n currentData[parseInt(i.toString(), 10)].parentItem.index = updatedParent.index;\n }\n }\n return currentData;\n };\n RowDD.prototype.rowsAdded = function (e) {\n var draggedRecord;\n var dragRecords = e.records;\n for (var i = e.records.length - 1; i > -1; i--) {\n draggedRecord = dragRecords[parseInt(i.toString(), 10)];\n if (draggedRecord.parentUniqueID) {\n var record = dragRecords.filter(function (data) {\n return data.uniqueID === draggedRecord.parentUniqueID;\n });\n if (record.length) {\n var index = record[0].childRecords.indexOf(draggedRecord);\n var parentRecord = record[0];\n if (index !== -1) {\n if (isNullOrUndefined(this.parent.idMapping)) {\n parentRecord.childRecords.splice(index, 1);\n if (!parentRecord.childRecords.length) {\n parentRecord.hasChildRecords = false;\n parentRecord.hasFilteredChildRecords = false;\n }\n }\n this.isDraggedWithChild = true;\n }\n }\n }\n }\n if (isNullOrUndefined(this.parent.dataSource) || !this.parent.dataSource.length) {\n var tObj = this.parent;\n var draggedRecord_1;\n var dragRecords_1 = e.records;\n var dragLength = e.records.length;\n for (var i = dragLength - 1; i > -1; i--) {\n draggedRecord_1 = dragRecords_1[parseInt(i.toString(), 10)];\n if (!i && draggedRecord_1.hasChildRecords) {\n draggedRecord_1.taskData[this.parent.parentIdMapping] = null;\n }\n var recordIndex1 = 0;\n if (!isNullOrUndefined(tObj.parentIdMapping)) {\n tObj.childMapping = null;\n }\n if (!isNullOrUndefined(draggedRecord_1.taskData) && !isNullOrUndefined(tObj.childMapping) &&\n !Object.prototype.hasOwnProperty.call(draggedRecord_1.taskData, tObj.childMapping)) {\n draggedRecord_1.taskData[tObj.childMapping] = [];\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.childMapping) &&\n (draggedRecord_1[tObj.childMapping]).length && !this.isDraggedWithChild &&\n !isNullOrUndefined(tObj.parentIdMapping)) {\n var childData = (draggedRecord_1[tObj.childMapping]);\n for (var j = 0; j < childData.length; j++) {\n if (dragRecords_1.indexOf(childData[parseInt(j.toString(), 10)]) === -1) {\n dragRecords_1.splice(j, 0, childData[parseInt(j.toString(), 10)]);\n childData[parseInt(j.toString(), 10)].taskData = extend({}, childData[parseInt(j.toString(), 10)]);\n i += 1;\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.parentIdMapping)\n && draggedRecord_1[tObj.parentIdMapping] !== null\n && !this.isDraggedWithChild) {\n draggedRecord_1.taskData[tObj.parentIdMapping] = null;\n delete draggedRecord_1.parentItem;\n delete draggedRecord_1.parentUniqueID;\n }\n if (isNullOrUndefined(tObj.dataSource)) {\n tObj.dataSource = [];\n }\n tObj.dataSource.splice(recordIndex1, 0, draggedRecord_1.taskData);\n }\n tObj.setProperties({ dataSource: tObj.dataSource }, false);\n }\n else {\n for (var i = 0; i < dragRecords.length; i++) {\n setValue('uniqueIDCollection.' + dragRecords[parseInt(i.toString(), 10)].uniqueID, dragRecords[parseInt(i.toString(), 10)], this.parent);\n }\n var args = { data: e.records, dropIndex: e.toIndex };\n if (this.parent.dataSource instanceof DataManager) {\n this.treeGridData = this.parent.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n if (isNullOrUndefined(this.dropPosition)) {\n this.dropPosition = 'bottomSegment';\n args.dropIndex = this.parent.getCurrentViewRecords().length > 1 ? this.parent.getCurrentViewRecords().length - 1 :\n args.dropIndex;\n args.data = args.data.map(function (i) {\n if (i.hasChildRecords && isNullOrUndefined(i.parentItem)) {\n i.level = 0;\n return i;\n }\n else {\n delete i.parentItem;\n delete i.parentUniqueID;\n i.level = 0;\n return i;\n }\n });\n }\n this.dropRows(args);\n }\n };\n RowDD.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n this.draggedRecord = e.records[parseInt(i.toString(), 10)];\n if (this.draggedRecord.hasChildRecords || this.draggedRecord.parentItem &&\n this.parent.grid.dataSource.\n indexOf(this.getChildrecordsByParentID(this.draggedRecord.parentUniqueID)[0]) !== -1 ||\n this.draggedRecord.level === 0) {\n this.deleteDragRow();\n }\n }\n };\n RowDD.prototype.refreshGridDataSource = function () {\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var proxy = this.parent;\n var tempDataSource;\n var idx;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n tempDataSource = proxy.dataSource.dataSource.json;\n }\n else {\n tempDataSource = proxy.dataSource;\n }\n // eslint-disable-next-line max-len\n if (tempDataSource && (!isNullOrUndefined(droppedRecord) && !droppedRecord.parentItem) && !isNullOrUndefined(droppedRecord.taskData)) {\n var keys = Object.keys(tempDataSource);\n for (var i = 0; i < keys.length; i++) {\n if (tempDataSource[parseInt(i.toString(), 10)][this.parent.childMapping] ===\n droppedRecord.taskData[this.parent.childMapping]) {\n idx = i;\n }\n }\n if (this.dropPosition === 'topSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx, 0, draggedRecord.taskData);\n }\n }\n else if (this.dropPosition === 'bottomSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx + 1, 0, draggedRecord.taskData);\n }\n }\n }\n else if (!this.parent.parentIdMapping && (!isNullOrUndefined(droppedRecord) && droppedRecord.parentItem)) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n var record = this.getChildrecordsByParentID(droppedRecord.parentUniqueID)[0];\n var childRecords = record.childRecords;\n for (var i = 0; i < childRecords.length; i++) {\n droppedRecord.parentItem.taskData[this.parent.childMapping][parseInt(i.toString(), 10)]\n = childRecords[parseInt(i.toString(), 10)].taskData;\n }\n }\n }\n if (this.parent.parentIdMapping) {\n if (draggedRecord.parentItem) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n }\n else {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n }\n }\n else {\n draggedRecord.taskData[this.parent.parentIdMapping] = null;\n draggedRecord[this.parent.parentIdMapping] = null;\n }\n }\n };\n RowDD.prototype.removeFirstrowBorder = function (element) {\n var canremove = this.dropPosition === 'bottomSegment';\n if (this.parent.element.getElementsByClassName('e-firstrow-border').length > 0 && element &&\n (element.rowIndex !== 0 || canremove)) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n };\n RowDD.prototype.removeLastrowBorder = function (element) {\n var isEmptyRow = element && (element.classList.contains('e-emptyrow') || element.classList.contains('e-columnheader')\n || element.classList.contains('e-detailrow'));\n var islastRowIndex;\n if (this.parent.enableVirtualization) {\n islastRowIndex = element && !isEmptyRow &&\n this.parent.getRows()[this.parent.getCurrentViewRecords().length - 1].getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n else {\n islastRowIndex = element && !isEmptyRow &&\n this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n var canremove = islastRowIndex || this.dropPosition === 'topSegment';\n if (this.parent.element.getElementsByClassName('e-lastrow-border').length > 0 && element && (islastRowIndex || canremove)) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n };\n RowDD.prototype.updateIcon = function (row, index, args) {\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n this.dropPosition = undefined;\n var rowPositionHeight = 0;\n this.removeFirstrowBorder(rowEle);\n this.removeLastrowBorder(rowEle);\n for (var i = 0; i < args.rows.length; i++) {\n if (!isNullOrUndefined(rowEle) && rowEle.getAttribute('data-uid') === args.rows[parseInt(i.toString(), 10)].getAttribute('data-uid')\n || !parentsUntil(args.target, 'e-gridcontent')) {\n this.dropPosition = 'Invalid';\n this.addErrorElem();\n }\n }\n // To get the corresponding drop position related to mouse position\n var tObj = this.parent;\n var rowTop = 0;\n var roundOff = 0;\n var toolHeight = tObj.toolbar && tObj.toolbar.length ?\n document.getElementById(tObj.element.id + '_gridcontrol_toolbarItems').offsetHeight : 0;\n // tObj.lastRow = tObj.getRowByIndex(tObj.getCurrentViewRecords().length - 1);\n var positionOffSet = this.getOffset(tObj.element);\n // let contentHeight1: number = (tObj.element.offsetHeight - (tObj.getContent() as HTMLElement).offsetHeight) + positionOffSet.top;\n var contentHeight = tObj.getHeaderContent().offsetHeight + positionOffSet.top + toolHeight;\n var scrollTop = tObj.getContent().firstElementChild.scrollTop;\n if (!isNullOrUndefined(rowEle)) {\n rowPositionHeight = rowEle.offsetTop - scrollTop;\n }\n // let scrollTop = (tObj.grid.scrollModule as any).content.scrollTop;\n if (this.parent.enableVirtualization) {\n rowTop = rowEle.getBoundingClientRect().top;\n }\n else {\n rowTop = rowPositionHeight + contentHeight + roundOff;\n }\n var rowBottom = rowTop + row[0].offsetHeight;\n var difference = rowBottom - rowTop;\n var divide = difference / 3;\n var topRowSegment = rowTop + divide;\n var middleRowSegment = topRowSegment + divide;\n var bottomRowSegment = middleRowSegment + divide;\n var mouseEvent = getObject('originalEvent.event', args);\n var touchEvent = getObject('originalEvent.event', args);\n var posy = (mouseEvent.type === 'mousemove') ? mouseEvent.pageY : ((!isNullOrUndefined(touchEvent) &&\n !isNullOrUndefined(touchEvent.changedTouches)) ? touchEvent.changedTouches[0].pageY : null);\n var isTopSegment = posy <= topRowSegment;\n var isMiddleRowSegment = (posy > topRowSegment && posy <= middleRowSegment);\n var isBottomRowSegment = (posy > middleRowSegment && posy <= bottomRowSegment);\n if (isTopSegment || isMiddleRowSegment || isBottomRowSegment) {\n if (isTopSegment && this.dropPosition !== 'Invalid') {\n this.removeChildBorder();\n this.dropPosition = 'topSegment';\n this.removetopOrBottomBorder();\n this.addFirstrowBorder(rowEle);\n this.removeErrorElem();\n this.removeLastrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n if (isMiddleRowSegment && this.dropPosition !== 'Invalid') {\n this.removetopOrBottomBorder();\n var rowElement = [];\n var element = closest(args.target, 'tr');\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n if (rowElement.length > 0) {\n this.addRemoveClasses(rowElement, true, 'e-childborder');\n }\n this.addLastRowborder(rowEle);\n this.addFirstrowBorder(rowEle);\n this.dropPosition = 'middleSegment';\n }\n if (isBottomRowSegment && this.dropPosition !== 'Invalid') {\n this.removeErrorElem();\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n this.dropPosition = 'bottomSegment';\n this.addLastRowborder(rowEle);\n this.removeFirstrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n }\n return this.dropPosition;\n };\n RowDD.prototype.removeChildBorder = function () {\n var borderElem = [];\n borderElem = [].slice.call(this.parent.element.querySelectorAll('.e-childborder'));\n if (borderElem.length > 0) {\n this.addRemoveClasses(borderElem, false, 'e-childborder');\n }\n };\n RowDD.prototype.addFirstrowBorder = function (targetRow) {\n var node = this.parent.element;\n var tObj = this.parent;\n if (targetRow && targetRow.rowIndex === 0 && !targetRow.classList.contains('e-emptyrow')) {\n var div = this.parent.createElement('div', { className: 'e-firstrow-border' });\n var gridheaderEle = this.parent.getHeaderContent();\n var toolbarHeight = 0;\n if (tObj.toolbar) {\n toolbarHeight = tObj.toolbarModule.getToolbar().offsetHeight;\n }\n var multiplegrid = !isNullOrUndefined(this.parent.rowDropSettings.targetID);\n if (multiplegrid) {\n div.style.top = this.parent.grid.element.getElementsByClassName('e-gridheader')[0].offsetHeight\n + toolbarHeight + 'px';\n }\n div.style.width = multiplegrid ? node.offsetWidth + 'px' :\n node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.querySelectorAll('.e-firstrow-border').length) {\n gridheaderEle.appendChild(div);\n }\n }\n };\n RowDD.prototype.addLastRowborder = function (trElement) {\n var isEmptyRow = trElement && (trElement.classList.contains('e-emptyrow') ||\n trElement.classList.contains('e-columnheader') || trElement.classList.contains('e-detailrow'));\n if (trElement && !isEmptyRow && this.parent.getRows()[this.parent.getCurrentViewRecords().length - 1].getAttribute('data-uid') ===\n trElement.getAttribute('data-uid')) {\n var bottomborder = this.parent.createElement('div', { className: 'e-lastrow-border' });\n var gridcontentEle = this.parent.getContent();\n bottomborder.style.width = this.parent.element.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridcontentEle.querySelectorAll('.e-lastrow-border').length) {\n gridcontentEle.classList.add('e-treegrid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = this.getScrollWidth() + 'px';\n }\n }\n };\n RowDD.prototype.getScrollWidth = function () {\n var scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n };\n RowDD.prototype.addErrorElem = function () {\n var dragelem = document.getElementsByClassName('e-cloneproperties')[0];\n var errorelem = dragelem.querySelectorAll('.e-errorelem').length;\n var sanitize = 'sanitize';\n if (!errorelem && !this.parent.rowDropSettings.targetID) {\n var ele = document.createElement('div');\n classList(ele, ['e-errorcontainer'], []);\n classList(ele, ['e-icons', 'e-errorelem'], []);\n var errorVal = dragelem.querySelector('.errorValue');\n var content = dragelem.querySelector('.e-rowcell').innerHTML;\n if (errorVal) {\n content = this.parent[\"\" + sanitize](errorVal.innerHTML);\n errorVal.parentNode.removeChild(errorVal);\n }\n dragelem.querySelector('.e-rowcell').innerHTML = '';\n var spanContent = document.createElement('span');\n spanContent.className = 'errorValue';\n spanContent.style.paddingLeft = '16px';\n spanContent.innerHTML = this.parent[\"\" + sanitize](content);\n dragelem.querySelector('.e-rowcell').appendChild(ele);\n dragelem.querySelector('.e-rowcell').appendChild(spanContent);\n var dropItemSpan = document.querySelector('.e-dropitemscount');\n if (this.hasDropItem && dropItemSpan) {\n var dropItemLeft = parseInt(dropItemSpan.style.left, 10) + ele.offsetWidth + 16;\n var spanLeft = !this.parent.enableRtl ? dropItemLeft : 0;\n dropItemSpan.style.left = spanLeft + \"px\";\n this.hasDropItem = false;\n }\n }\n };\n RowDD.prototype.removeErrorElem = function () {\n var errorelem = document.querySelector('.e-errorelem');\n var errorValue = document.querySelector('.errorValue');\n var dropItemSpan = document.querySelector('.e-dropitemscount');\n if (errorelem) {\n if (dropItemSpan) {\n var dropItemLeft = parseInt(dropItemSpan.style.left, 10) - errorelem.offsetWidth - 16;\n setStyleAttribute(errorValue, {\n paddingLeft: '0px'\n });\n if (!this.parent.enableRtl) {\n setStyleAttribute(dropItemSpan, {\n left: dropItemLeft + \"px\"\n });\n }\n }\n errorelem.remove();\n }\n this.hasDropItem = true;\n };\n RowDD.prototype.topOrBottomBorder = function (target) {\n var rowElement = [];\n var element = closest(target, 'tr');\n rowElement = element ? [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse')) : [];\n if (rowElement.length) {\n if (this.dropPosition === 'topSegment') {\n this.addRemoveClasses(rowElement, true, 'e-droptop');\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0) {\n this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0].remove();\n }\n }\n if (this.dropPosition === 'bottomSegment') {\n this.addRemoveClasses(rowElement, true, 'e-dropbottom');\n }\n }\n };\n RowDD.prototype.removetopOrBottomBorder = function () {\n var border = [];\n border = [].slice.call(this.parent.element.querySelectorAll('.e-dropbottom, .e-droptop'));\n if (border.length) {\n this.addRemoveClasses(border, false, 'e-dropbottom');\n this.addRemoveClasses(border, false, 'e-droptop');\n }\n };\n RowDD.prototype.addRemoveClasses = function (cells, add, className) {\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n cells[parseInt(i.toString(), 10)].classList.add(className);\n }\n else {\n cells[parseInt(i.toString(), 10)].classList.remove(className);\n }\n }\n };\n RowDD.prototype.getOffset = function (element) {\n var box = element.getBoundingClientRect();\n var body = document.body;\n var docElem = document.documentElement;\n var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n var clientTop = docElem.clientTop || body.clientTop || 0;\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n var top = box.top + scrollTop - clientTop;\n var left = box.left + scrollLeft - clientLeft;\n return { top: Math.round(top), left: Math.round(left) };\n };\n RowDD.prototype.Rowdraging = function (args) {\n var tObj = this.parent;\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n cloneElement.style.cursor = '';\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n var rowIdx = rowEle ? rowEle.rowIndex : -1;\n var dragRecords = [];\n var droppedRecord = tObj.getCurrentViewRecords()[parseInt(rowIdx.toString(), 10)];\n this.removeErrorElem();\n this.canDrop = true;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n if (rowIdx !== -1) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.canDrop = false;\n this.addErrorElem();\n }\n if (!tObj.rowDropSettings.targetID && this.canDrop) {\n tObj.rowDragAndDropModule.updateIcon(args.rows, rowIdx, args);\n }\n if (isNullOrUndefined(tObj.rowDropSettings.targetID) && !this.canDrop) {\n this.removetopOrBottomBorder();\n }\n if (tObj.rowDropSettings.targetID) {\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n if (dropElement && dropElement.id === this.parent.rowDropSettings.targetID) {\n var srcControl = dropElement.ej2_instances[0];\n srcControl.rowDragAndDropModule.updateIcon(args.rows, rowIdx, args);\n }\n }\n if (args.target && closest(args.target, '#' + tObj.rowDropSettings.targetID)) {\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n if (!dropElement) {\n cloneElement.style.cursor = 'default';\n }\n }\n };\n RowDD.prototype.rowDropped = function (args) {\n var tObj = this.parent;\n var parentItem = 'parentItem';\n if (!tObj.rowDropSettings.targetID) {\n if (parentsUntil(args.target, 'e-content')) {\n if (this.parent.element.querySelector('.e-errorelem')) {\n this.dropPosition = 'Invalid';\n }\n setValue('dropPosition', this.dropPosition, args);\n tObj.trigger(events.rowDrop, args);\n if (!args.cancel) {\n if (!isCountRequired(this.parent)) {\n this.dropRows(args);\n }\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n tObj.grid.refresh();\n if (!isNullOrUndefined(tObj.getHeaderContent().querySelector('.e-firstrow-border'))) {\n tObj.getHeaderContent().querySelector('.e-firstrow-border').remove();\n }\n }\n }\n }\n else {\n if (args.target && closest(args.target, '#' + tObj.rowDropSettings.targetID) || parentsUntil(args.target, 'e-treegrid') &&\n parentsUntil(args.target, 'e-treegrid').id === tObj.rowDropSettings.targetID || args.target && document.getElementById(tObj.rowDropSettings.targetID)) {\n setValue('dropPosition', this.dropPosition, args);\n tObj.trigger(events.rowDrop, args);\n if (!args.cancel && tObj.rowDropSettings.targetID) {\n this.dragDropGrid(args);\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n }\n }\n }\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-firstrow-border')[0])) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n else if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-lastrow-border')[0])) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n if (this.parent.enableImmutableMode && !this.parent.allowPaging && !isNullOrUndefined(args.data[0][\"\" + parentItem])) {\n var index = this.parent.treeColumnIndex;\n index = index + 1;\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = this.parent.grid.getRowIndexByPrimaryKey(args.data[0][\"\" + primaryKeyField]);\n var row = this.parent.getRows()[parseInt(rowIndex.toString(), 10)];\n var data = args.data[0];\n if (this.dropPosition === 'middleSegment') {\n var record = [];\n var rows = [];\n record.push(data);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n data = getParentData(this.parent, args.data[0][\"\" + parentUniqueID]);\n rowIndex = this.parent.grid.getRowIndexByPrimaryKey(data[\"\" + primaryKeyField]);\n var parentrow = this.parent.getRows()[parseInt(rowIndex.toString(), 10)];\n record.push(data);\n rows.push(parentrow);\n for (var i = 0; i < record.length; i++) {\n this.parent.renderModule.cellRender({\n data: record[parseInt(i.toString(), 10)],\n cell: rows[parseInt(i.toString(), 10)].cells[parseInt(index.toString(), 10)],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n var targetEle = parentrow.getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n else {\n this.parent.renderModule.cellRender({\n data: data, cell: row.cells[parseInt(index.toString(), 10)],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n }\n };\n RowDD.prototype.dragDropGrid = function (args) {\n var tObj = this.parent;\n var targetRow = closest(args.target, 'tr');\n var targetIndex = isNaN(this.getTargetIdx(targetRow)) ? 0 : this.getTargetIdx(targetRow);\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n var srcControl;\n if (dropElement && dropElement.id === this.parent.rowDropSettings.targetID && !isRemoteData(this.parent)\n && !isCountRequired(this.parent)) {\n srcControl = dropElement.ej2_instances[0];\n var records = tObj.getSelectedRecords();\n var indexes = [];\n for (var i = 0; i < records.length; i++) {\n indexes[parseInt(i.toString(), 10)] = records[parseInt(i.toString(), 10)].index;\n }\n var data = srcControl.dataSource;\n if (this.parent.idMapping !== null && (isNullOrUndefined(this.dropPosition) || this.dropPosition === 'bottomSegment' || this.dropPosition === 'Invalid') && !(data.length)) {\n var actualData = [];\n for (var i = 0; i < records.length; i++) {\n if (records[parseInt(i.toString(), 10)].hasChildRecords) {\n actualData.push(records[parseInt(i.toString(), 10)]);\n var child = findChildrenRecords(records[parseInt(i.toString(), 10)]);\n for (var i_1 = 0; i_1 < child.length; i_1++) {\n actualData.push(child[parseInt(i_1.toString(), 10)]); // push child records to drop the parent record along with its child records\n }\n }\n }\n if (actualData.length) {\n records = actualData;\n }\n }\n tObj.notify(events.rowsRemove, { indexes: indexes, records: records });\n srcControl.notify(events.rowsAdd, { toIndex: targetIndex, records: records });\n var srcControlFlatData = srcControl.rowDragAndDropModule.treeGridData;\n if (!isNullOrUndefined(srcControlFlatData)) {\n for (var i = 0; i < srcControlFlatData.length; i++) {\n srcControlFlatData[parseInt(i.toString(), 10)].index = i;\n if (!isNullOrUndefined(srcControlFlatData[parseInt(i.toString(), 10)].parentItem)) {\n var actualIndex = getValue('uniqueIDCollection.' + srcControlFlatData[parseInt(i.toString(), 10)].parentUniqueID + '.index', srcControl);\n srcControlFlatData[parseInt(i.toString(), 10)].parentItem.index = actualIndex;\n }\n }\n }\n tObj.grid.refresh();\n srcControl.grid.refresh();\n if (srcControl.grid.dataSource.length > 1) {\n srcControl.grid.refresh();\n if (!isNullOrUndefined(srcControl.getHeaderContent().querySelector('.e-firstrow-border'))) {\n srcControl.getHeaderContent().querySelector('.e-firstrow-border').remove();\n }\n if (!isNullOrUndefined(srcControl.getContent().querySelector('.e-lastrow-border'))) {\n srcControl.getContent().querySelector('.e-lastrow-border').remove();\n }\n }\n }\n if (isCountRequired(this.parent)) {\n srcControl = dropElement.ej2_instances[0];\n tObj.grid.refresh();\n srcControl.grid.refresh();\n }\n };\n RowDD.prototype.getTargetIdx = function (targetRow) {\n return targetRow ? parseInt(targetRow.getAttribute('data-rowindex'), 10) : 0;\n };\n RowDD.prototype.getParentData = function (record, data) {\n var parentItem = record.parentItem;\n var selectedItemIndex = -1;\n if (this.parent.enableVirtualization && this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.getSelectedRows()[0].rowIndex;\n }\n else if (this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.selectedRowIndex;\n }\n if (this.dropPosition === 'bottomSegment') {\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = selectedItemIndex === -1 ?\n (this.parent.grid.getRowIndexByPrimaryKey(data[0][\"\" + primaryKeyField]))\n : this.parent.getSelectedRowIndexes()[0];\n var selectedRecord = this.parent.getCurrentViewRecords()[parseInt(rowIndex.toString(), 10)];\n this.droppedRecord = getParentData(this.parent, selectedRecord.parentItem.uniqueID);\n }\n if (this.dropPosition === 'middleSegment') {\n var level = this.parent.getCurrentViewRecords()[parseInt(selectedItemIndex.toString(), 10)].level;\n if (level === parentItem.level) {\n this.droppedRecord = getParentData(this.parent, parentItem.uniqueID);\n }\n else {\n this.getParentData(parentItem);\n }\n }\n };\n RowDD.prototype.dropRows = function (args, isByMethod) {\n if (this.dropPosition !== 'Invalid' && !isRemoteData(this.parent)) {\n var tObj = this.parent;\n var draggedRecord_2;\n var droppedRecord = void 0;\n if (isNullOrUndefined(args.dropIndex)) {\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = tObj.selectedRowIndex === -1 ?\n (this.parent.grid.getRowIndexByPrimaryKey(args.data[0][\"\" + primaryKeyField])) - 1\n : tObj.getSelectedRowIndexes()[0] - 1;\n var record = tObj.getCurrentViewRecords()[parseInt(rowIndex.toString(), 10)];\n this.getParentData(record, args.data);\n }\n else {\n args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;\n if (this.parent.enableVirtualization) {\n var index = this.parent.getRowByIndex(args.dropIndex).rowIndex;\n this.droppedRecord = tObj.getCurrentViewRecords()[parseInt(index.toString(), 10)];\n }\n else {\n this.droppedRecord = tObj.getCurrentViewRecords()[args.dropIndex];\n }\n }\n var dragRecords = [];\n droppedRecord = this.droppedRecord;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n this.parent[this.modifiedRecords].push(args.data[0], droppedRecord);\n var count = 0;\n var multiplegrid = this.parent.rowDropSettings.targetID;\n this.isMultipleGrid = multiplegrid;\n if (!multiplegrid) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.isaddtoBottom = multiplegrid && this.isDraggedWithChild;\n }\n var dragLength = dragRecords.length;\n if (!isNullOrUndefined(this.parent.idMapping)) {\n dragRecords.reverse();\n }\n var _loop_1 = function (i) {\n draggedRecord_2 = dragRecords[parseInt(i.toString(), 10)];\n this_1.draggedRecord = draggedRecord_2;\n if (this_1.dropPosition !== 'Invalid') {\n if (!tObj.rowDropSettings.targetID || isByMethod) {\n this_1.deleteDragRow();\n }\n if (this_1.draggedRecord === this_1.droppedRecord) {\n var correctIndex = this_1.getTargetIdx(args.target.offsetParent.parentElement);\n if (isNaN(correctIndex)) {\n correctIndex = this_1.getTargetIdx(args.target.parentElement);\n }\n args.dropIndex = correctIndex;\n droppedRecord = this_1.droppedRecord = this_1.parent.getCurrentViewRecords()[args.dropIndex];\n }\n if (droppedRecord.parentItem || this_1.dropPosition === 'middleSegment') {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.draggedRecord);\n if (newParentIndex !== -1) {\n parentRecords.splice(newParentIndex, 1);\n }\n }\n var recordIndex1 = this_1.treeGridData.indexOf(droppedRecord);\n this_1.dropAtTop(recordIndex1);\n if (this_1.dropPosition === 'bottomSegment') {\n if (!droppedRecord.hasChildRecords) {\n if (this_1.parent.parentIdMapping) {\n this_1.treeData.splice(recordIndex1 + 1, 0, this_1.draggedRecord.taskData);\n }\n this_1.treeGridData.splice(recordIndex1 + 1, 0, this_1.draggedRecord);\n }\n else {\n count = this_1.getChildCount(droppedRecord, 0);\n if (this_1.parent.parentIdMapping) {\n this_1.treeData.splice(recordIndex1 + count + 1, 0, this_1.draggedRecord.taskData);\n }\n this_1.treeGridData.splice(recordIndex1 + count + 1, 0, this_1.draggedRecord);\n }\n if (isNullOrUndefined(droppedRecord.parentItem)) {\n delete draggedRecord_2.parentItem;\n delete draggedRecord_2.parentUniqueID;\n draggedRecord_2.level = 0;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = null;\n }\n }\n if (droppedRecord.parentItem) {\n var rec = this_1.getChildrecordsByParentID(droppedRecord.parentUniqueID);\n var childRecords = rec[0].childRecords;\n var droppedRecordIndex = childRecords.indexOf(droppedRecord) + 1;\n childRecords.splice(droppedRecordIndex, 0, draggedRecord_2);\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.parentUniqueID = droppedRecord.parentUniqueID;\n draggedRecord_2.level = droppedRecord.level;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = droppedRecord[this_1.parent.parentIdMapping];\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.level = droppedRecord.level;\n }\n }\n if (draggedRecord_2.hasChildRecords) {\n var level = 1;\n this_1.updateChildRecordLevel(draggedRecord_2, level);\n this_1.updateChildRecord(draggedRecord_2, recordIndex1 + count + 1);\n }\n }\n this_1.dropMiddle(recordIndex1);\n }\n if (isNullOrUndefined(draggedRecord_2.parentItem)) {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.droppedRecord);\n var nonRepeat_1 = 0;\n parentRecords.filter(function (e) {\n if (draggedRecord_2.uniqueID === e.uniqueID) {\n nonRepeat_1++;\n }\n });\n if (this_1.dropPosition === 'bottomSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex + 1, 0, draggedRecord_2);\n }\n else if (this_1.dropPosition === 'topSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex, 0, draggedRecord_2);\n }\n }\n tObj.rowDragAndDropModule.refreshGridDataSource();\n };\n var this_1 = this;\n for (var i = 0; i < dragLength; i++) {\n _loop_1(i);\n }\n }\n };\n RowDD.prototype.dropMiddle = function (recordIndex) {\n var tObj = this.parent;\n var childRecords = findChildrenRecords(this.droppedRecord);\n var childRecordsLength = (isNullOrUndefined(childRecords) ||\n childRecords.length === 0) ? recordIndex + 1 :\n childRecords.length + recordIndex + 1;\n if (this.dropPosition === 'middleSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(childRecordsLength, 0, this.draggedRecord.taskData);\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n else {\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n this.recordLevel();\n if (this.draggedRecord.hasChildRecords) {\n this.updateChildRecord(this.draggedRecord, childRecordsLength);\n }\n }\n };\n RowDD.prototype.dropAtTop = function (recordIndex1) {\n var tObj = this.parent;\n if (this.dropPosition === 'topSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(recordIndex1, 0, this.draggedRecord.taskData);\n }\n this.draggedRecord.parentItem = this.treeGridData[parseInt(recordIndex1.toString(), 10)].parentItem;\n this.draggedRecord.parentUniqueID = this.treeGridData[parseInt(recordIndex1.toString(), 10)].parentUniqueID;\n this.draggedRecord.level = this.treeGridData[parseInt(recordIndex1.toString(), 10)].level;\n this.treeGridData.splice(parseInt(recordIndex1.toString(), 10), 0, this.draggedRecord);\n if (this.draggedRecord.hasChildRecords) {\n var level = 1;\n this.updateChildRecord(this.draggedRecord, recordIndex1);\n this.updateChildRecordLevel(this.draggedRecord, level);\n }\n if (this.droppedRecord.parentItem) {\n var rec = this.getChildrecordsByParentID(this.droppedRecord.parentUniqueID);\n var childRecords = rec[0].childRecords;\n var droppedRecordIndex = childRecords.indexOf(this.droppedRecord);\n childRecords.splice(droppedRecordIndex, 0, this.draggedRecord);\n }\n }\n };\n RowDD.prototype.recordLevel = function () {\n var tObj = this.parent;\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var childItem = tObj.childMapping;\n if (!droppedRecord.hasChildRecords) {\n droppedRecord.hasChildRecords = true;\n droppedRecord.hasFilteredChildRecords = true;\n if (isNullOrUndefined(droppedRecord.childRecords) || droppedRecord.childRecords.length === 0) {\n droppedRecord.childRecords = [];\n if (!tObj.parentIdMapping && isNullOrUndefined(droppedRecord.taskData[\"\" + childItem])) {\n droppedRecord.taskData[\"\" + childItem] = [];\n }\n }\n }\n if (this.dropPosition === 'middleSegment') {\n var parentItem = extend({}, droppedRecord);\n delete parentItem.childRecords;\n draggedRecord.parentItem = parentItem;\n draggedRecord.parentUniqueID = droppedRecord.uniqueID;\n droppedRecord.childRecords.splice(droppedRecord.childRecords.length, 0, draggedRecord);\n var isSelfReference = 'isSelfReference';\n if (tObj[\"\" + isSelfReference]) {\n droppedRecord[tObj.childMapping] = [];\n droppedRecord[tObj.childMapping].splice(droppedRecord[tObj.childMapping].length, 0, draggedRecord);\n }\n if (!isNullOrUndefined(draggedRecord) && !tObj.parentIdMapping && !isNullOrUndefined(droppedRecord.taskData[\"\" + childItem])) {\n droppedRecord.taskData[tObj.childMapping].splice(droppedRecord.childRecords.length, 0, draggedRecord.taskData);\n }\n if (!draggedRecord.hasChildRecords) {\n draggedRecord.level = droppedRecord.level + 1;\n }\n else {\n var level = 1;\n draggedRecord.level = droppedRecord.level + 1;\n this.updateChildRecordLevel(draggedRecord, level);\n }\n droppedRecord.expanded = true;\n }\n };\n RowDD.prototype.deleteDragRow = function () {\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n this.treeGridData = this.parent.grid.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n var deletedRow = getParentData(this.parent, this.draggedRecord.uniqueID);\n if (!isNullOrUndefined(deletedRow.childRecords) && deletedRow.childRecords.length) {\n deletedRow.hasChildRecords = true;\n }\n this.removeRecords(deletedRow);\n };\n RowDD.prototype.updateChildRecord = function (record, count) {\n var currentRecord;\n var tObj = this.parent;\n var length = 0;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n if (!this.isMultipleGrid) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[parseInt(i.toString(), 10)].uniqueID, tObj);\n }\n else {\n currentRecord = record.childRecords[parseInt(i.toString(), 10)];\n }\n count++;\n tObj.flatData.splice(count, 0, currentRecord);\n setValue('uniqueIDCollection.' + currentRecord.uniqueID, currentRecord, this.parent);\n if (tObj.parentIdMapping) {\n this.treeData.splice(count, 0, currentRecord.taskData);\n }\n if (currentRecord.hasChildRecords) {\n count = this.updateChildRecord(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.updateChildRecordLevel = function (record, level) {\n var length = 0;\n var currentRecord;\n level++;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n if (!this.isMultipleGrid) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[parseInt(i.toString(), 10)].uniqueID, this.parent);\n }\n else {\n currentRecord = record.childRecords[parseInt(i.toString(), 10)];\n }\n var parentData = void 0;\n if (record.parentItem) {\n parentData = getParentData(this.parent, record.parentItem.uniqueID);\n }\n if (isNullOrUndefined(parentData) && !isNullOrUndefined(record.parentItem)) {\n parentData = record.parentItem;\n }\n currentRecord.level = record.parentItem ? parentData.level + level : record.level + 1;\n if (currentRecord.hasChildRecords) {\n level--;\n level = this.updateChildRecordLevel(currentRecord, level);\n }\n }\n return level;\n };\n RowDD.prototype.removeRecords = function (record) {\n var tObj = this.parent;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n var deletedRow = record;\n var isSelfReference = !isNullOrUndefined(tObj.parentIdMapping);\n var flatParentData = this.getChildrecordsByParentID(deletedRow.parentUniqueID)[0];\n if (deletedRow) {\n if (deletedRow.parentItem) {\n var childRecords = flatParentData ? flatParentData.childRecords : [];\n var childIndex = 0;\n if (childRecords && childRecords.length > 0) {\n childIndex = childRecords.indexOf(deletedRow);\n flatParentData.childRecords.splice(childIndex, 1);\n if (!this.parent.parentIdMapping || tObj.enableImmutableMode) {\n editAction({ value: deletedRow, action: 'delete' }, this.parent, isSelfReference, deletedRow.index, deletedRow.index);\n }\n }\n }\n if (tObj.parentIdMapping) {\n if (deletedRow.hasChildRecords && deletedRow.childRecords.length > 0) {\n this.removeChildItem(deletedRow);\n }\n var idx = void 0;\n var idz = void 0;\n var treeGridData = dataSource;\n for (var i = 0; i < treeGridData.length; i++) {\n if (treeGridData[parseInt(i.toString(), 10)][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idx = i;\n }\n }\n for (var i = 0; i < this.treeGridData.length; i++) {\n if (this.treeGridData[parseInt(i.toString(), 10)][this.parent.idMapping]\n === deletedRow.taskData[this.parent.idMapping]) {\n idz = i;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n }\n var recordIndex = this.treeGridData.indexOf(deletedRow);\n if (!tObj.parentIdMapping) {\n var parentIndex = this.parent.parentData.indexOf(deletedRow);\n if (parentIndex !== -1) {\n tObj.parentData.splice(parentIndex, 1);\n dataSource.splice(parentIndex, 1);\n }\n }\n if (recordIndex === -1 && !tObj.parentIdMapping) {\n var primaryKeyField = tObj.getPrimaryKeyFieldNames()[0];\n for (var j = 0; j < this.treeGridData.length; j++) {\n if (this.treeGridData[parseInt(j.toString(), 10)][\"\" + primaryKeyField] === deletedRow[\"\" + primaryKeyField]) {\n recordIndex = j;\n }\n }\n }\n if (!tObj.parentIdMapping) {\n var deletedRecordCount = this.getChildCount(deletedRow, 0);\n this.treeGridData.splice(recordIndex, deletedRecordCount + 1);\n }\n if (deletedRow.parentItem && flatParentData && flatParentData.childRecords && !flatParentData.childRecords.length) {\n flatParentData.expanded = false;\n flatParentData.hasChildRecords = false;\n flatParentData.hasFilteredChildRecords = false;\n }\n if (this.parent[this.modifiedRecords].indexOf(flatParentData) === -1 && !isNullOrUndefined(flatParentData)) {\n this.parent[this.modifiedRecords].push(flatParentData);\n }\n if (!isNullOrUndefined(flatParentData)) {\n this.updateModifiedRecords(flatParentData);\n }\n }\n };\n RowDD.prototype.updateModifiedRecords = function (record) {\n var parentData = getParentData(this.parent, record.parentUniqueID);\n if (!isNullOrUndefined(parentData)) {\n this.parent[this.modifiedRecords].push(parentData);\n this.updateModifiedRecords(parentData);\n }\n };\n RowDD.prototype.removeChildItem = function (record) {\n var currentRecord;\n var idx;\n var idz;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[parseInt(i.toString(), 10)];\n if (!isNullOrUndefined(currentRecord.childRecords) && currentRecord.childRecords.length) {\n currentRecord.hasChildRecords = true;\n }\n var treeGridData = void 0;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridData = this.parent.dataSource.dataSource.json;\n }\n else {\n treeGridData = this.parent.dataSource;\n }\n for (var i_2 = 0; i_2 < treeGridData.length; i_2++) {\n if (treeGridData[parseInt(i_2.toString(), 10)][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idx = i_2;\n }\n }\n for (var i_3 = 0; i_3 < this.treeGridData.length; i_3++) {\n if (this.treeGridData[parseInt(i_3.toString(), 10)][this.parent.idMapping]\n === currentRecord.taskData[this.parent.idMapping]) {\n idz = i_3;\n break;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n if (currentRecord.hasChildRecords) {\n this.removeChildItem(currentRecord);\n }\n }\n };\n RowDD.prototype.getChildCount = function (record, count) {\n var currentRecord;\n if (!record.hasChildRecords) {\n return 0;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[parseInt(i.toString(), 10)];\n count++;\n if (currentRecord.hasChildRecords) {\n count = this.getChildCount(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.ensuredropPosition = function (draggedRecords, currentRecord) {\n var _this = this;\n draggedRecords.filter(function (e) {\n if (e.hasChildRecords && !isNullOrUndefined(e.childRecords)) {\n var valid = e.childRecords.indexOf(currentRecord);\n if (valid === -1) {\n _this.ensuredropPosition(e.childRecords, currentRecord);\n }\n else {\n _this.dropPosition = 'Invalid';\n _this.addErrorElem();\n _this.canDrop = false;\n return;\n }\n }\n });\n };\n RowDD.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowdraging, this.Rowdraging);\n this.parent.off(events.rowDropped, this.rowDropped);\n this.parent.off(events.rowsAdd, this.rowsAdded);\n this.parent.off(events.rowsRemove, this.rowsRemoved);\n };\n /**\n * hidden\n */\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns RowDragAndDrop module name\n */\n RowDD.prototype.getModuleName = function () {\n return 'rowDragAndDrop';\n };\n return RowDD;\n}());\nexport { RowDD };\n","import { Grid, Toolbar as tool } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Toolbar Module for TreeGrid\n *\n * @hidden\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent) {\n Grid.Inject(tool);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Toolbar module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.rowSelected, this.refreshToolbar, this);\n this.parent.on(events.rowDeselected, this.refreshToolbar, this);\n this.parent.on(events.toolbarClick, this.toolbarClickHandler, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowSelected, this.refreshToolbar);\n this.parent.off(events.rowDeselected, this.refreshToolbar);\n this.parent.off(events.toolbarClick, this.toolbarClickHandler);\n };\n Toolbar.prototype.refreshToolbar = function (args) {\n var toolbarElement = this.parent.grid.toolbarModule.getToolbar();\n if (!isNullOrUndefined(toolbarElement)) {\n var tObj = this.parent;\n var indentElement = void 0;\n var outdentElement = void 0;\n var indentID = tObj.element.id + '_gridcontrol_indent';\n var outdentID = tObj.element.id + '_gridcontrol_outdent';\n var indentEle = toolbarElement.querySelector('#' + indentID);\n var outdentEle = toolbarElement.querySelector('#' + outdentID);\n var row = args.row;\n var selectedrow = tObj.getSelectedRows()[0];\n if (!isNullOrUndefined(row[0])) {\n row = row[0];\n }\n row = (!isNullOrUndefined(selectedrow) && selectedrow.rowIndex !== row.rowIndex) ? selectedrow : row;\n if (indentEle !== null && outdentEle !== null) {\n indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n if (row.rowIndex === 0 || tObj.getSelectedRowIndexes().length > 1) {\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n }\n else if (args['name'] !== 'rowDeselected' || (!isNullOrUndefined(selectedrow) && tObj.grid.isCheckBoxSelection)) {\n var selectedItem = tObj.getCurrentViewRecords()[row.rowIndex];\n if (!isNullOrUndefined(selectedItem)) {\n if ((selectedItem.level > tObj.getCurrentViewRecords()[row.rowIndex - 1].level)) {\n indentElement.classList.add('e-hidden');\n }\n else {\n indentElement.classList.remove('e-hidden');\n }\n if (selectedItem.level === tObj.getCurrentViewRecords()[row.rowIndex - 1].level) {\n indentElement.classList.remove('e-hidden');\n }\n if (selectedItem.level === 0) {\n outdentElement.classList.add('e-hidden');\n }\n if (selectedItem.level !== 0) {\n outdentElement.classList.remove('e-hidden');\n }\n }\n }\n if (args['name'] === 'rowDeselected' && isNullOrUndefined(selectedrow) && !tObj.grid.isCheckBoxSelection) {\n if (this.parent.toolbar['includes']('Indent')) {\n indentElement.classList.add('e-hidden');\n }\n if (this.parent.toolbar['includes']('Outdent')) {\n outdentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var tObj = this.parent;\n var indentOutdentAction = 'indentOutdentAction';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.grid.editSettings.mode === 'Batch' &&\n args.item.id === this.parent.grid.element.id + '_update') {\n args.cancel = true;\n this.parent.grid.editModule.saveCell();\n }\n if (args.item.id === this.parent.grid.element.id + '_expandall') {\n this.parent.expandAll();\n }\n if (args.item.id === this.parent.grid.element.id + '_collapseall') {\n this.parent.collapseAll();\n }\n if (args.item.id === tObj.grid.element.id + '_indent' && tObj.getSelectedRecords().length\n && !isNullOrUndefined(tObj.rowDragAndDropModule)) {\n this.parent.rowDragAndDropModule[\"\" + indentOutdentAction](null, 'indent');\n }\n if (args.item.id === tObj.grid.element.id + '_outdent' && tObj.getSelectedRecords().length\n && !isNullOrUndefined(tObj.rowDragAndDropModule)) {\n this.parent.rowDragAndDropModule[\"\" + indentOutdentAction](null, 'outdent');\n }\n };\n /**\n * Gets the toolbar of the TreeGrid.\n *\n * @returns {Element} - Returns Toolbar element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.parent.grid.toolbarModule.getToolbar();\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n this.parent.grid.toolbarModule.enableItems(items, isEnable);\n };\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Toolbar;\n}());\nexport { Toolbar };\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 { remove, extend, isNullOrUndefined, createElement, getValue, setValue, closest, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport { Grid, Edit, Toolbar as GridToolbar, Page, getObject, Sort, RowDD, Group, Aggregate, ColumnChooser, ContextMenu, ColumnMenu, Resize, Reorder, DetailRow, Search, Print, PdfExport, ExcelExport, Filter } from '@syncfusion/ej2-grids';\nimport { ForeignKey, getActualProperties } from '@syncfusion/ej2-grids';\nimport { RichTextEditor, Toolbar as RTEToolbar, Link, HtmlEditor, QuickToolbar, Count, Image, Table, EmojiPicker, FileManager, FormatPainter, MarkdownEditor, } from '@syncfusion/ej2-richtexteditor';\nimport { TextBox, NumericTextBox, MaskedTextBox, FormValidator } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { DropDownList, ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { isScheduledTask } from '../base/utils';\nimport { TreeGrid, Selection as TreeGridSelection, Filter as TreeGridFilter, Edit as TreeGridEdit, VirtualScroll, Sort as TreeGridSort, Page as TreeGridPage, Aggregate as TreeGridAggregate, Reorder as TreeGridReorder, Resize as TreeGridResize, Toolbar as TreeGridToolbar, RowDD as TreeGridRowDD } from '@syncfusion/ej2-treegrid';\nimport { getUid } from '../base/utils';\n/**\n *\n * @hidden\n */\nvar DialogEdit = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {Gantt} parent .\n * @returns {void} .\n */\n function DialogEdit(parent) {\n this.taskFieldColumn = [];\n this.customFieldColumn = [];\n /**\n * @private\n */\n this.updatedEditFields = null;\n this.updatedAddFields = null;\n this.addedRecord = null;\n this.dialogEditValidationFlag = false;\n this.ganttResources = [];\n this.isValidData = true;\n this.isResourceTabUpdated = false;\n /**\n * @private\n */\n this.previousResource = [];\n /**\n * @private\n */\n this.isResourceUpdate = false;\n this.parent = parent;\n this.localeObj = this.parent.localeObj;\n this.beforeOpenArgs = { cancel: false };\n this.types = this.getPredecessorType();\n this.rowData = {};\n this.editedRecord = {};\n this.inputs = {\n booleanedit: CheckBox,\n dropdownedit: DropDownList,\n datepickeredit: DatePicker,\n datetimepickeredit: DateTimePicker,\n maskededit: MaskedTextBox,\n numericedit: NumericTextBox,\n stringedit: TextBox,\n defaultedit: TextBox\n };\n this.processDialogFields();\n this.wireEvents();\n }\n DialogEdit.prototype.wireEvents = function () {\n this.parent.on('chartDblClick', this.dblClickHandler, this);\n };\n DialogEdit.prototype.dblClickHandler = function (e) {\n var ganttData = this.parent.ganttChartModule.getRecordByTarget(e);\n if (!isNullOrUndefined(ganttData) && this.parent.editModule && this.parent.editSettings.allowEditing) {\n this.openEditDialog(ganttData);\n }\n };\n /**\n * Method to validate add and edit dialog fields property.\n *\n * @returns {void} .\n * @private\n */\n DialogEdit.prototype.processDialogFields = function () {\n if (isNullOrUndefined(this.parent.editDialogFields) ||\n this.parent.editDialogFields && this.parent.editDialogFields.length === 0) {\n this.updatedEditFields = this.getDefaultDialogFields();\n this.updatedEditFields = this.validateDialogFields(this.updatedEditFields);\n }\n else {\n this.updatedEditFields = this.validateDialogFields(this.parent.editDialogFields);\n }\n if (isNullOrUndefined(this.parent.addDialogFields) ||\n this.parent.addDialogFields && this.parent.addDialogFields.length === 0) {\n this.updatedAddFields = this.getDefaultDialogFields();\n this.updatedAddFields = this.validateDialogFields(this.updatedAddFields);\n }\n else {\n this.updatedAddFields = this.validateDialogFields(this.parent.addDialogFields);\n }\n };\n DialogEdit.prototype.validateDialogFields = function (dialogFields) {\n var newDialogFields = [];\n var emptyCustomColumn = 0;\n for (var i = 0; i < dialogFields.length; i++) {\n var fieldItem = getActualProperties(dialogFields[i]);\n if (fieldItem.type === 'General' && (isNullOrUndefined(fieldItem.fields) || fieldItem.fields.length === 0)) {\n fieldItem.fields = this.getGeneralColumnFields();\n }\n if (fieldItem.type === 'Dependency' && isNullOrUndefined(this.parent.taskFields.dependency)\n || fieldItem.type === 'Resources' && isNullOrUndefined(this.parent.taskFields.resourceInfo)\n || fieldItem.type === 'Notes' && isNullOrUndefined(this.parent.taskFields.notes)) {\n continue;\n }\n if (fieldItem.type === 'Custom' && (isNullOrUndefined(fieldItem.fields) || fieldItem.fields.length === 0)) {\n emptyCustomColumn += 1;\n fieldItem.fields = this.getCustomColumnFields();\n }\n if (emptyCustomColumn > 1) {\n continue;\n }\n newDialogFields.push(fieldItem);\n }\n return newDialogFields;\n };\n /**\n * Method to get general column fields\n *\n * @returns {string[]} .\n */\n DialogEdit.prototype.getGeneralColumnFields = function () {\n var fields = [];\n for (var _i = 0, _a = Object.keys(this.parent.columnMapping); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'dependency' || key === 'resourceInfo' || key === 'notes') {\n continue;\n }\n fields.push(this.parent.columnMapping[key]);\n }\n return fields;\n };\n /**\n * Method to get custom column fields\n *\n * @returns {void} .\n */\n DialogEdit.prototype.getCustomColumnFields = function () {\n var fields = [];\n for (var i = 0; i < this.parent.customColumns.length; i++) {\n fields.push(this.parent.customColumns[i]);\n }\n return fields;\n };\n /**\n * Get default dialog fields when fields are not defined for add and edit dialogs\n *\n * @returns {AddDialogFieldSettings} .\n */\n DialogEdit.prototype.getDefaultDialogFields = function () {\n var dialogFields = [];\n var fieldItem = {};\n var taskFields = this.parent.taskFields;\n var columnMapping = this.parent.columnMapping;\n if (Object.keys(columnMapping).length !== 0) {\n fieldItem.type = 'General';\n dialogFields.push(fieldItem);\n }\n if (!isNullOrUndefined(getValue('dependency', columnMapping))) {\n fieldItem = {};\n if (this.parent.columnByField[columnMapping.dependency.valueOf()].visible !== false) {\n fieldItem.type = 'Dependency';\n }\n dialogFields.push(fieldItem);\n }\n if (!isNullOrUndefined(getValue('resourceInfo', columnMapping))) {\n fieldItem = {};\n if (this.parent.columnByField[columnMapping.resourceInfo.valueOf()].visible !== false) {\n fieldItem.type = 'Resources';\n }\n dialogFields.push(fieldItem);\n }\n if (!isNullOrUndefined(getValue('notes', columnMapping))) {\n fieldItem = {};\n if (this.parent.columnByField[columnMapping.notes.valueOf()].visible !== false) {\n fieldItem.type = 'Notes';\n }\n dialogFields.push(fieldItem);\n }\n if (!isNullOrUndefined(getValue('segments', taskFields))) {\n fieldItem = {};\n fieldItem.type = 'Segments';\n dialogFields.push(fieldItem);\n }\n if (this.parent.customColumns.length > 0) {\n fieldItem = {};\n fieldItem.type = 'Custom';\n dialogFields.push(fieldItem);\n }\n return dialogFields;\n };\n /**\n * @returns {void} .\n * @private\n */\n DialogEdit.prototype.openAddDialog = function () {\n this.isEdit = false;\n this.editedRecord = this.composeAddRecord();\n this.isFromAddDialog = true;\n this.createDialog();\n };\n /**\n *\n * @returns {Date} .\n * @private\n */\n DialogEdit.prototype.getMinimumStartDate = function () {\n var minDate = DataUtil.aggregates.min(this.parent.flatData, 'ganttProperties.startDate');\n if (!isNullOrUndefined(minDate)) {\n minDate = new Date(minDate.getTime());\n }\n else {\n minDate = new Date(this.parent.timelineModule.timelineStartDate.getTime());\n }\n minDate = this.parent.dateValidationModule.checkStartDate(minDate);\n return new Date(minDate.getTime());\n };\n /**\n * @returns {IGanttData} .\n * @private\n */\n DialogEdit.prototype.composeAddRecord = function () {\n var tempData = {};\n tempData.ganttProperties = {};\n var columns = this.parent.ganttColumns;\n var taskSettings = this.parent.taskFields;\n var id = this.parent.editModule.getNewTaskId();\n for (var i = 0; i < columns.length; i++) {\n var field = columns[i].field;\n if (field === taskSettings.id) {\n tempData[field] = id;\n tempData.ganttProperties.rowUniqueID = tempData[field];\n }\n else if (columns[i].field === taskSettings.startDate) {\n if (isNullOrUndefined(tempData[taskSettings.endDate])) {\n tempData[field] = this.getMinimumStartDate();\n }\n else {\n tempData[field] = new Date(tempData[taskSettings.endDate]);\n }\n if (this.parent.timezone) {\n tempData[field] = this.parent.dateValidationModule.remove(tempData[field], this.parent.timezone);\n }\n tempData.ganttProperties.startDate = new Date(tempData[field]);\n }\n else if (columns[i].field === taskSettings.endDate) {\n if (isNullOrUndefined(tempData[taskSettings.startDate])) {\n tempData[field] = this.getMinimumStartDate();\n }\n else {\n tempData[field] = new Date(tempData[taskSettings.startDate]);\n }\n if (this.parent.timezone) {\n tempData[field] = this.parent.dateValidationModule.remove(tempData[field], this.parent.timezone);\n }\n tempData.ganttProperties.endDate = new Date(tempData[field]);\n }\n else if (columns[i].field === taskSettings.duration) {\n tempData[field] = 1;\n tempData.ganttProperties.duration = tempData[field];\n tempData.ganttProperties.durationUnit = this.parent.durationUnit.toLocaleLowerCase();\n }\n else if (columns[i].field === taskSettings.name) {\n tempData[field] = this.localeObj.getConstant('addDialogTitle') + ' ' + id;\n tempData.ganttProperties.taskName = tempData[field];\n }\n else if (columns[i].field === taskSettings.progress) {\n tempData[field] = 0;\n tempData.ganttProperties.progress = tempData[field];\n }\n else if (columns[i].field === taskSettings.work) {\n tempData[field] = 0;\n tempData.ganttProperties.work = tempData[field];\n }\n else if (columns[i].field === taskSettings.type) {\n tempData[field] = this.parent.taskType;\n tempData.ganttProperties.taskType = tempData[field];\n }\n else {\n tempData[this.parent.ganttColumns[i].field] = '';\n }\n }\n tempData.ganttProperties.isAutoSchedule = (this.parent.taskMode === 'Auto') ? true :\n (this.parent.taskMode === 'Manual') ? false :\n tempData[taskSettings.manual] === true ? false : true;\n return tempData;\n };\n /**\n * @returns {void} .\n * @private\n */\n DialogEdit.prototype.openToolbarEditDialog = function () {\n var gObj = this.parent;\n if (gObj.editModule && gObj.editSettings.allowEditing) {\n if (this.parent.ganttChartModule.focusedRowIndex > -1 && gObj.selectionModule) {\n gObj.selectionModule.selectRow(this.parent.ganttChartModule.focusedRowIndex, false, false);\n }\n var selectedRowId = gObj.selectionModule ?\n (gObj.selectionSettings.mode === 'Row' || gObj.selectionSettings.mode === 'Both') &&\n gObj.selectionModule.selectedRowIndexes.length === 1 ?\n gObj.updatedRecords[gObj.selectionModule.selectedRowIndexes[0]].ganttProperties.rowUniqueID :\n gObj.selectionSettings.mode === 'Cell' &&\n gObj.selectionModule.getSelectedRowCellIndexes().length === 1 ?\n gObj.updatedRecords[gObj.selectionModule.getSelectedRowCellIndexes()[0].rowIndex].ganttProperties.rowUniqueID :\n null : null;\n if (!isNullOrUndefined(selectedRowId)) {\n this.openEditDialog(selectedRowId);\n }\n }\n };\n /**\n * @param { number | string | object} taskId .\n * @returns {void} .\n * @private\n */\n DialogEdit.prototype.openEditDialog = function (taskId) {\n var ganttObj = this.parent;\n if (!isNullOrUndefined(taskId)) {\n if (!isNullOrUndefined(taskId['ganttProperties'])) {\n if (typeof taskId['ganttProperties']['taskId'] === 'string') {\n this.numericOrString = 'stringedit';\n }\n else {\n this.numericOrString = 'numericedit';\n }\n }\n if (isNullOrUndefined(taskId['ganttProperties']) && !isNullOrUndefined(taskId)) {\n if (isNaN(Number(taskId)) || this.parent.columnByField[this.parent.taskFields.id].editType === \"stringedit\") {\n this.numericOrString = 'stringedit';\n }\n else {\n this.numericOrString = 'numericedit';\n }\n }\n }\n if (typeof taskId === 'object' && !isNullOrUndefined(taskId)) {\n this.rowIndex = this.parent.currentViewData.indexOf(taskId);\n if (this.rowIndex > -1) {\n this.rowData = taskId;\n }\n }\n else if (!isNullOrUndefined(taskId)) {\n this.rowIndex = ganttObj.ids.indexOf(taskId.toString());\n if (this.rowIndex > -1) {\n this.rowData = ganttObj.flatData[this.rowIndex];\n }\n }\n else if (ganttObj.selectedRowIndex > -1) {\n this.rowData = ganttObj.currentViewData[ganttObj.selectedRowIndex];\n this.rowIndex = ganttObj.selectedRowIndex;\n }\n this.isEdit = true;\n if (this.parent.viewType === 'ResourceView' && this.rowData.level === 0) {\n return;\n }\n if (Object.keys(this.rowData).length !== 0) {\n this.editedRecord = extend({}, {}, this.rowData, true);\n this.isFromEditDialog = true;\n this.createDialog();\n }\n };\n DialogEdit.prototype.createDialog = function () {\n var _this = this;\n var ganttObj = this.parent;\n var dialogModel = {};\n this.beforeOpenArgs.dialogModel = dialogModel;\n this.beforeOpenArgs.rowData = this.editedRecord;\n this.beforeOpenArgs.rowIndex = this.rowIndex;\n var dialogMaxWidth = this.parent.isAdaptive ? '' : '600px';\n var dialog = this.parent.createElement('div', { id: ganttObj.element.id + '_dialog', styles: 'max-width:' + dialogMaxWidth });\n dialog.classList.add('e-gantt-dialog');\n ganttObj.element.appendChild(dialog);\n dialogModel.animationSettings = { effect: 'None' };\n dialogModel.header = this.localeObj.getConstant(this.isEdit ? 'editDialogTitle' : 'addDialogTitle');\n dialogModel.isModal = true;\n dialogModel.enableRtl = this.parent.enableRtl;\n dialogModel.allowDragging = this.parent.isAdaptive ? false : true;\n dialogModel.showCloseIcon = true;\n var position = this.parent.isAdaptive ? { X: 'top', Y: 'left' } : { X: 'center', Y: 'center' };\n dialogModel.position = position;\n //dialogModel.width = '750px';\n dialogModel.height = this.parent.isAdaptive ? '100%' : 'auto';\n dialogModel.target = document.body;\n dialogModel.close = this.dialogClose.bind(this);\n dialogModel.closeOnEscape = true;\n dialogModel.beforeClose = function (args) {\n if (args.closedBy === \"escape\") {\n if (args.event.name === \"key-pressed\" && args.event.target.nodeName === 'INPUT') {\n args.cancel = true;\n }\n }\n };\n dialogModel.open = function (args) {\n var dialogElement = getValue('element', args);\n var generalTabElement = dialogElement.querySelector('#' + _this.parent.element.id + 'GeneralTabContainer');\n if (generalTabElement && generalTabElement.scrollHeight > generalTabElement.offsetHeight) {\n generalTabElement.classList.add('e-scroll');\n }\n if (_this.tabObj.selectedItem === 0) {\n _this.tabObj.select(0);\n }\n if (_this.parent.isAdaptive) {\n dialogElement.style.maxHeight = 'none';\n }\n if (_this.parent.focusModule) {\n _this.parent.focusModule.setActiveElement(dialogElement);\n }\n };\n dialogModel.locale = this.parent.locale;\n dialogModel.buttons = [{\n buttonModel: {\n content: this.localeObj.getConstant('saveButton'), cssClass: 'e-primary'\n },\n click: this.buttonClick.bind(this)\n }, {\n buttonModel: { cssClass: 'e-flat', content: this.localeObj.getConstant('cancel') },\n click: this.buttonClick.bind(this)\n }];\n this.createTab(dialogModel, dialog);\n };\n DialogEdit.prototype.buttonClick = function (e) {\n var target = e.target;\n target.style.pointerEvents = 'none';\n if ((this.localeObj.getConstant('cancel')).toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.CustomformObj = null;\n this.formObj = null;\n this.storeValidTab = null;\n this.customFieldColumn = [];\n this.taskFieldColumn = [];\n this.dialogObj.hide();\n this.dialogClose();\n }\n }\n else {\n if (this.CustomformObj) {\n if (!this.CustomformObj.validate()) {\n target.style.pointerEvents = '';\n return;\n }\n }\n if (this.formObj) {\n var formValid = this.formObj.validate();\n if (!formValid) {\n target.style.pointerEvents = '';\n return;\n }\n }\n if (this.storeDependencyTab || this.firstOccuringTab === \"Dependency\") {\n var dependencyTab = void 0;\n if (this.firstOccuringTab === \"Dependency\") {\n var element = e.target.closest('#' + this.parent.element.id + '_dialog');\n dependencyTab = element.querySelector('.e-gridform');\n }\n else {\n dependencyTab = this.storeDependencyTab.querySelector('.e-gridform');\n }\n if (dependencyTab) {\n var dependencyTabValid = dependencyTab['ej2_instances'][0].validate();\n if (!dependencyTabValid) {\n target.style.pointerEvents = '';\n return;\n }\n }\n }\n if (this.storeResourceTab || this.firstOccuringTab === \"Resources\") {\n var resourceTab = void 0;\n if (this.firstOccuringTab === \"Resources\") {\n var element = e.target.closest('#' + this.parent.element.id + '_dialog');\n resourceTab = element.querySelector('.e-gridform');\n }\n else {\n resourceTab = this.storeResourceTab.querySelector('.e-gridform');\n }\n if (resourceTab) {\n var resourceTabValid = resourceTab['ej2_instances'][0].validate();\n if (!resourceTabValid) {\n target.style.pointerEvents = '';\n return;\n }\n }\n }\n this.initiateDialogSave();\n this.CustomformObj = null;\n this.formObj = null;\n this.storeValidTab = null;\n this.customFieldColumn = [];\n this.taskFieldColumn = [];\n target.style.pointerEvents = 'auto';\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n DialogEdit.prototype.dialogClose = function () {\n if (this.dialog) {\n this.resetValues();\n }\n if (!isNullOrUndefined(this.parent.focusModule) &&\n !isNullOrUndefined(this.parent.focusModule.getActiveElement(true))) {\n this.parent.focusModule.getActiveElement(true).focus();\n }\n };\n DialogEdit.prototype.resetValues = function () {\n this.isEdit = false;\n this.isAddNewResource = false;\n this.editedRecord = {};\n this.rowData = {};\n this.rowIndex = -1;\n this.addedRecord = null;\n this.ganttResources = [];\n this.dialogEditValidationFlag = false;\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.destroyDialogInnerElements();\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n };\n DialogEdit.prototype.destroyDialogInnerElements = function () {\n var ganttObj = this.parent;\n var tabModel = this.beforeOpenArgs.tabModel;\n var items = tabModel.items;\n for (var i = 0; i < items.length; i++) {\n var element = items[i].content;\n var id = element.id;\n if (!isNullOrUndefined(id) || id !== '') {\n id = id.replace(ganttObj.element.id, '');\n id = id.replace('TabContainer', '');\n if (id === 'General') {\n this.destroyCustomField(element);\n }\n else if (id === 'Dependency') {\n var gridObj = element.ej2_instances[0];\n gridObj.destroy();\n }\n else if (id === 'Notes') {\n var rte = element.ej2_instances[0];\n rte.destroy();\n }\n else if (id === 'Resources') {\n var treeGridObj = element.ej2_instances[0];\n treeGridObj.destroy();\n }\n else if (id.indexOf('Custom') !== -1) {\n this.destroyCustomField(element);\n }\n }\n }\n };\n DialogEdit.prototype.destroyCustomField = function (element) {\n var childNodes = element.childNodes;\n var ganttObj = this.parent;\n for (var i = 0; i < childNodes.length; i++) {\n var div = childNodes[i];\n var inputElement = div.querySelector('input[id^=\"' + ganttObj.element.id + '\"]');\n if (inputElement) {\n var fieldName = inputElement.id.replace(ganttObj.element.id, '');\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var controlObj = div.querySelector('#' + ganttObj.element.id + fieldName).ej2_instances[0];\n if (!isNullOrUndefined(controlObj)) {\n var column = ganttObj.columnByField[fieldName];\n if (!isNullOrUndefined(column.edit) && isNullOrUndefined(column.edit.params)) {\n var destroy = column.edit.destroy;\n if (typeof destroy === 'string') {\n destroy = getObject(destroy, window);\n destroy();\n }\n else {\n column.edit.destroy();\n }\n }\n else {\n controlObj.destroy();\n }\n }\n }\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n DialogEdit.prototype.destroy = function () {\n this.resetValues();\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('chartDblClick', this.dblClickHandler);\n this.parent.editModule.dialogModule = undefined;\n };\n /**\n * Method to get current edit dialog fields value\n *\n * @returns {AddDialogFieldSettings} .\n */\n DialogEdit.prototype.getEditFields = function () {\n if (this.isEdit) {\n return this.updatedEditFields;\n }\n else {\n return this.updatedAddFields;\n }\n };\n DialogEdit.prototype.createTab = function (dialogModel, dialog) {\n var _this = this;\n var ganttObj = this.parent;\n var tabModel = {};\n var tabItems = [];\n var dialogSettings = this.getEditFields();\n var tabElement;\n var tasks = ganttObj.taskFields;\n var length = dialogSettings.length;\n tabModel.items = tabItems;\n tabModel.locale = this.parent.locale;\n tabModel.enableRtl = this.parent.enableRtl;\n this.beforeOpenArgs.tabModel = tabModel;\n var count = 0;\n var index = 0;\n if (length > 0) {\n for (var i = 0; i < length; i++) {\n var dialogField = dialogSettings[i];\n var tabItem = {};\n if (dialogField.type === 'General') {\n if (Object.keys(ganttObj.columnMapping).length === 0) {\n continue;\n }\n if (isNullOrUndefined(dialogField.headerText)) {\n dialogField.headerText = this.localeObj.getConstant('generalTab');\n }\n tabItem.content = 'General';\n this.beforeOpenArgs[tabItem.content] = this.getFieldsModel(dialogField.fields);\n }\n else if (dialogField.type === 'Segments') {\n if (isNullOrUndefined(tasks.segments)) {\n continue;\n }\n if (isNullOrUndefined(dialogField.headerText)) {\n dialogField.headerText = this.localeObj.getConstant('segments');\n }\n tabItem.content = 'Segments';\n this.beforeOpenArgs[tabItem.content] = this.getSegmentsModel(dialogField.fields);\n }\n else if (dialogField.type === 'Dependency') {\n if (isNullOrUndefined(tasks.dependency)) {\n continue;\n }\n if (isNullOrUndefined(dialogField.headerText)) {\n dialogField.headerText = this.localeObj.getConstant('dependency');\n }\n tabItem.content = 'Dependency';\n this.beforeOpenArgs[tabItem.content] = this.getPredecessorModel(dialogField.fields);\n }\n else if (dialogField.type === 'Resources') {\n if (isNullOrUndefined(tasks.resourceInfo)) {\n continue;\n }\n if (isNullOrUndefined(dialogField.headerText)) {\n dialogField.headerText = this.localeObj.getConstant('resourceName');\n }\n tabItem.content = 'Resources';\n this.beforeOpenArgs[tabItem.content] = this.getResourcesModel(dialogField.fields);\n }\n else if (dialogField.type === 'Notes') {\n if (isNullOrUndefined(tasks.notes)) {\n continue;\n }\n if (isNullOrUndefined(dialogField.headerText)) {\n dialogField.headerText = this.localeObj.getConstant('notes');\n }\n tabItem.content = 'Notes';\n this.beforeOpenArgs[tabItem.content] = this.getNotesModel(dialogField.fields);\n }\n else {\n if (isNullOrUndefined(dialogField.fields) || dialogField.fields.length === 0) {\n continue;\n }\n if (isNullOrUndefined(dialogField.headerText)) {\n dialogField.headerText = this.localeObj.getConstant('customTab'); // eslint-disable-next-line\n count++;\n }\n tabItem.content = 'Custom' + '' + index++;\n this.beforeOpenArgs[tabItem.content] = this.getFieldsModel(dialogField.fields);\n }\n tabItem.header = { text: dialogField.headerText };\n tabItems.push(tabItem);\n }\n }\n this.beforeOpenArgs.requestType = this.isEdit ? 'beforeOpenEditDialog' : 'beforeOpenAddDialog';\n var args = {\n rowData: this.beforeOpenArgs.rowData,\n name: this.beforeOpenArgs.name,\n requestType: this.beforeOpenArgs.requestType,\n cancel: this.beforeOpenArgs.cancel\n };\n this.parent.trigger('actionBegin', this.beforeOpenArgs, function (arg) {\n if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n _this.parent.showMaskRow();\n }\n else {\n _this.parent.showSpinner();\n }\n if (!arg.cancel) {\n _this.renderTabItems();\n tabModel.selected = _this.tabSelectedEvent.bind(_this);\n tabModel.height = _this.parent.isAdaptive ? '100%' : 'auto';\n tabModel.overflowMode = 'Scrollable';\n _this.tabObj = new Tab(tabModel);\n _this.tabObj.isStringTemplate = true;\n tabElement = _this.parent.createElement('div', { id: ganttObj.element.id + '_Tab' });\n _this.tabObj.appendTo(tabElement);\n dialogModel.content = tabElement;\n _this.dialog = dialog;\n _this.dialogObj = new Dialog(dialogModel);\n _this.dialogObj.isStringTemplate = true;\n _this.dialogObj.appendTo(_this.dialog);\n var actionCompleteArgs = {\n action: 'OpenDialog',\n requestType: _this.isEdit ? 'openEditDialog' : 'openAddDialog',\n data: _this.beforeOpenArgs.rowData,\n element: _this.dialog,\n cancel: false\n };\n var columns = _this.parent.treeGrid.grid.getColumns();\n var isValidateColumn = columns.some(function (obj) { return obj.validationRules; });\n if (isValidateColumn) {\n _this.CustomformObj = null;\n _this.formObj = null;\n _this.storeValidTab = null;\n _this.customFieldColumn = [];\n _this.taskFieldColumn = [];\n _this.changeFormObj(actionCompleteArgs.element, false);\n }\n _this.parent.trigger('actionComplete', actionCompleteArgs, function (actionCompleteArg) {\n if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n _this.parent.hideMaskRow();\n }\n else {\n _this.parent.hideSpinner();\n }\n if (actionCompleteArg.cancel) {\n _this.resetValues();\n }\n });\n }\n else {\n arg.cancel = false;\n if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n _this.parent.hideMaskRow();\n }\n else {\n _this.parent.hideSpinner();\n }\n }\n });\n };\n DialogEdit.prototype.changeFormObj = function (actionCompleteArgs, isCustomTab) {\n if (!this.storeColumn) {\n this.storeColumn = this.parent.treeGrid.grid.getColumns();\n }\n if (!this.taskfields) {\n this.taskfields = this.parent.taskFields['properties'];\n }\n if (!this.storeValidTab) {\n this.storeValidTab = this.getFilteredDialogFields();\n }\n var typeOrder = ['General', 'Resources', 'Dependency', 'Custom'];\n // Custom comparator function to sort by type order\n function customComparator(a, b) {\n var typeA = a.type || ''; // Default to empty string if type is missing\n var typeB = b.type || '';\n var indexA = typeOrder.indexOf(typeA);\n var indexB = typeOrder.indexOf(typeB);\n return indexA - indexB;\n }\n // Sort the array based on the custom comparator\n if (this.storeValidTab) {\n this.storeValidTab.sort(customComparator);\n }\n if (this.customFieldColumn.length === 0 || this.taskFieldColumn.length === 0) {\n this.validateColumn(this.storeColumn, this.taskfields, this.storeValidTab);\n }\n if (this.isFromAddDialog && this.parent.addDialogFields && this.parent.addDialogFields.length > 0) {\n var firstFieldType = this.parent.addDialogFields[0].type;\n if (firstFieldType === 'Resources' || firstFieldType === 'Dependency') {\n this.firstOccuringTab = firstFieldType;\n }\n }\n else if (this.isFromEditDialog && this.parent.editDialogFields && this.parent.editDialogFields.length > 0) {\n var firstFieldType = this.parent.editDialogFields[0].type;\n if (firstFieldType === 'Resources' || firstFieldType === 'Dependency') {\n this.firstOccuringTab = firstFieldType;\n }\n }\n if (!this.CustomformObj || !this.formObj) {\n var customFieldColumns = this.customFieldColumn;\n var taskFieldColumns = this.taskFieldColumn;\n if (!this.CustomformObj && customFieldColumns && customFieldColumns.length > 0) {\n var validationRulesArray = {};\n for (var i = 0; i < customFieldColumns.length; i++) {\n var customColumn = customFieldColumns[i]; // Rename the variable\n if (customColumn.visible && customColumn.validationRules) {\n validationRulesArray[customColumn.field] = customColumn.validationRules;\n }\n }\n if (Object.keys(validationRulesArray).length > 0) {\n this.CustomformObj = actionCompleteArgs.querySelector('#' + this.parent.element.id + 'Custom0TabContainer');\n if (this.CustomformObj) {\n this.CustomformObj = this.createFormObj(this.CustomformObj, validationRulesArray);\n }\n }\n }\n if (!this.formObj && taskFieldColumns && taskFieldColumns.length > 0) {\n var validationRulesArray = {};\n for (var i = 0; i < taskFieldColumns.length; i++) {\n var taskColumn = taskFieldColumns[i]; // Rename the variable\n if (taskColumn.visible && taskColumn.validationRules) {\n validationRulesArray[taskColumn.field] = taskColumn.validationRules;\n }\n }\n if (Object.keys(validationRulesArray).length > 0) {\n this.formObj = actionCompleteArgs.querySelector('#' + this.parent.element.id + 'GeneralTabContainer');\n if (this.formObj) {\n this.formObj = this.createFormObj(this.formObj, validationRulesArray);\n }\n }\n }\n }\n this.isFromAddDialog = false;\n this.isFromEditDialog = false;\n isCustomTab = false;\n };\n DialogEdit.prototype.getFilteredDialogFields = function () {\n var dialogFields = this.isFromAddDialog\n ? this.parent.addDialogFields\n : this.parent.editDialogFields;\n if (dialogFields.length !== 0) {\n return dialogFields.filter(function (obj) { return obj.type === \"General\" || obj.type === \"Custom\"; });\n }\n return null;\n };\n DialogEdit.prototype.validateColumn = function (storeColumn, taskfields, storeValidTab) {\n var _this = this;\n if (storeValidTab) {\n storeValidTab.forEach(function (element) {\n var targetArray = element.type === \"General\" ? _this.taskFieldColumn : _this.customFieldColumn;\n element.fields.forEach(function (field) {\n var columnValue = _this.parent.getColumnByField(field, storeColumn);\n if (columnValue !== null) {\n targetArray.push(columnValue);\n }\n else {\n targetArray.push(_this.parent.columnByField[field]);\n }\n });\n });\n }\n else {\n storeColumn.forEach(function (column) {\n if (_this.parent.customColumns.indexOf(column.field) !== -1) {\n _this.customFieldColumn.push(column);\n }\n else {\n _this.taskFieldColumn.push(column);\n }\n });\n }\n };\n DialogEdit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var nameAttribute = inputElement.getAttribute('name');\n if (nameAttribute) {\n var columnName = nameAttribute;\n _this.valErrorPlacement(inputElement, error, columnName);\n }\n }\n });\n };\n DialogEdit.prototype.valErrorPlacement = function (inputElement, error, columnName) {\n var id = columnName + \"-tooltip\";\n var elem = this.getElemTable(inputElement);\n if (!elem) {\n this.createTooltip(inputElement, error, id);\n }\n else {\n var tooltipContent = elem.querySelector('.e-tip-content');\n if (tooltipContent) {\n tooltipContent.innerHTML = error.outerHTML;\n }\n }\n };\n DialogEdit.prototype.createTooltip = function (inputElement, errorMessage, id, display) {\n if (display === void 0) { display = 'block'; }\n var existingTooltip = document.getElementById(id);\n if (existingTooltip) {\n existingTooltip.remove();\n }\n var parentElement = inputElement.parentElement;\n if (parentElement) {\n parentElement.style.position = 'relative';\n }\n var tooltipContainer = document.createElement('div');\n tooltipContainer.className = 'e-tooltip-wrap e-lib e-control e-popup e-griderror';\n tooltipContainer.style.display = display;\n tooltipContainer.style.zIndex = '1000';\n var labelId = id + \"-label\";\n var tooltipLabel = document.createElement('div');\n tooltipLabel.id = labelId;\n tooltipLabel.className = 'sr-only';\n var tooltipContent = document.createElement('div');\n tooltipContent.className = 'e-tip-content';\n var errorMessageElement = document.createElement('div');\n errorMessageElement.className = 'error-message';\n errorMessageElement.appendChild(errorMessage.cloneNode(true));\n var arrow = document.createElement('div');\n arrow.className = 'e-arrow-tip e-tip-top';\n arrow.appendChild(document.createElement('div')).className = 'e-arrow-tip-outer e-tip-top';\n arrow.appendChild(document.createElement('div')).className = 'e-arrow-tip-inner e-tip-top';\n tooltipContainer.setAttribute('aria-labelledby', labelId);\n tooltipContent.appendChild(errorMessageElement);\n tooltipContainer.appendChild(tooltipContent);\n tooltipContainer.appendChild(arrow);\n tooltipContainer.style.top = '125%';\n tooltipContainer.style.left = '50%';\n tooltipContainer.style.transform = 'translateX(-50%)';\n if (parentElement) {\n parentElement.appendChild(tooltipLabel);\n parentElement.appendChild(tooltipContainer);\n }\n };\n DialogEdit.prototype.getElemTable = function (inputElement) {\n var parentElement = inputElement.parentElement;\n if (parentElement) {\n return parentElement.querySelector(\".e-tooltip-wrap\");\n }\n return null;\n };\n DialogEdit.prototype.validationComplete = function (args) {\n var elem = this.getElemTable(args.element);\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n }\n else {\n elem.style.display = 'none';\n }\n }\n };\n DialogEdit.prototype.tabSelectedEvent = function (args) {\n var ganttObj = this.parent;\n var id = args.selectedContent.childNodes[0].id;\n if (id == ganttObj.element.id + 'DependencyTabContainer') {\n this.storeDependencyTab = args.selectedContent;\n }\n if (id == ganttObj.element.id + 'ResourcesTabContainer') {\n this.storeResourceTab = args.selectedContent;\n }\n if (id == ganttObj.element.id + 'Custom0TabContainer') {\n var columns = this.parent.treeGrid.grid.getColumns();\n var isValidateColumn = columns.some(function (obj) { return obj.validationRules; });\n if (isValidateColumn) {\n this.changeFormObj(args.selectedContent, true);\n }\n }\n if (id == ganttObj.element.id + 'GeneralTabContainer') {\n var columns = this.parent.treeGrid.grid.getColumns();\n var isValidateColumn = columns.some(function (obj) { return obj.validationRules; });\n if (isValidateColumn) {\n this.changeFormObj(args.selectedContent, false);\n }\n }\n if (this.parent.isAdaptive) {\n this.responsiveTabContent(id, ganttObj);\n }\n if (id === ganttObj.element.id + 'ResourcesTabContainer') {\n this.resourceSelection(id);\n }\n else if (id === ganttObj.element.id + 'NotesTabContainer') {\n document.getElementById(id).ej2_instances[0].refresh();\n var notesTabElement = document.querySelector('#' + this.parent.element.id + 'NotesTabContainer');\n notesTabElement.style.overflow = 'scroll';\n }\n else if (id === ganttObj.element.id + 'SegmentsTabContainer') {\n if (isNullOrUndefined(this.beforeOpenArgs.rowData.ganttProperties.startDate)) {\n document.getElementById(id).ej2_instances[0]\n .enableToolbarItems([this.parent.element.id + 'SegmentsTabContainer' + '_add'], false);\n }\n else {\n document.getElementById(id).ej2_instances[0]\n .enableToolbarItems([this.parent.element.id + 'SegmentsTabContainer' + '_add'], true);\n }\n }\n };\n DialogEdit.prototype.responsiveTabContent = function (id, ganttObj) {\n var dialogContent = document.getElementById(ganttObj.element.id + '_dialog_dialog-content');\n var dialogContentHeight = dialogContent.clientHeight;\n dialogContentHeight -= dialogContent.querySelector('.e-tab-header').offsetHeight;\n var grid = document.querySelector('#' + id);\n if (grid.classList.contains('e-grid')) {\n dialogContentHeight -= grid.ej2_instances[0].getHeaderContent().offsetHeight;\n var toolbar_1 = grid.querySelector('.e-toolbar');\n if (toolbar_1) {\n dialogContentHeight -= toolbar_1.offsetHeight;\n }\n }\n grid.parentElement.style.height = dialogContentHeight + 'px';\n };\n DialogEdit.prototype.getFieldsModel = function (fields) {\n var fieldsModel = {};\n var columnByField = this.parent.columnByField;\n for (var i = 0; i < fields.length; i++) {\n if (fields[i] === this.parent.taskFields.dependency ||\n fields[i] === this.parent.taskFields.resourceInfo ||\n fields[i] === this.parent.taskFields.notes) {\n continue;\n }\n if (!isNullOrUndefined(columnByField[fields[i]])) {\n var fieldName = fields[i];\n this.createInputModel(columnByField[fieldName], fieldsModel);\n }\n }\n return fieldsModel;\n };\n DialogEdit.prototype.createInputModel = function (column, fieldsModel) {\n var _this = this;\n var ganttObj = this.parent;\n var locale = this.parent.locale;\n var taskSettings = this.parent.taskFields;\n var common = {\n placeholder: column.headerText,\n floatLabelType: 'Auto'\n };\n if (!isNullOrUndefined(this.parent.taskFields.id) && !isNullOrUndefined(this.parent.columnMapping.id)\n && !isNullOrUndefined(this.numericOrString)) {\n if (taskSettings.id === column.field) {\n column.editType = this.numericOrString;\n }\n }\n ;\n switch (column.editType) {\n case 'booleanedit':\n {\n var checkboxModel = {\n label: column.headerText,\n locale: locale,\n enableRtl: this.parent.enableRtl\n };\n fieldsModel[column.field] = checkboxModel;\n break;\n }\n case 'defaultedit':\n case 'stringedit':\n {\n var textBox = common;\n textBox.enableRtl = this.parent.enableRtl;\n if (column.field === ganttObj.columnMapping.duration || column.field === ganttObj.columnMapping.id || column.field === ganttObj.columnMapping.startDate ||\n column.field === ganttObj.columnMapping.endDate) {\n textBox.change = function (args) {\n _this.validateScheduleFields(args, column, ganttObj);\n };\n }\n fieldsModel[column.field] = common;\n break;\n }\n case 'numericedit':\n {\n var numeric = common;\n numeric.enableRtl = this.parent.enableRtl;\n if (taskSettings.progress === column.field) {\n numeric.min = 0;\n numeric.max = 100;\n }\n numeric.change = function (args) {\n _this.validateScheduleFields(args, column, ganttObj);\n };\n fieldsModel[column.field] = numeric;\n break;\n }\n case 'datepickeredit':\n {\n var datePickerObj = common;\n datePickerObj.format = this.parent.getDateFormat();\n datePickerObj.enableRtl = this.parent.enableRtl;\n datePickerObj.strictMode = true;\n datePickerObj.firstDayOfWeek = ganttObj.timelineModule.customTimelineSettings.weekStartDay;\n if (column.field === ganttObj.columnMapping.startDate ||\n column.field === ganttObj.columnMapping.endDate) {\n datePickerObj.renderDayCell = this.parent.renderWorkingDayCell.bind(this.parent);\n datePickerObj.change = function (args) {\n _this.validateScheduleFields(args, column, ganttObj);\n };\n }\n fieldsModel[column.field] = datePickerObj;\n break;\n }\n case 'datetimepickeredit':\n {\n var dateTimePickerObj = common;\n dateTimePickerObj.format = this.parent.getDateFormat();\n dateTimePickerObj.enableRtl = this.parent.enableRtl;\n dateTimePickerObj.strictMode = true;\n dateTimePickerObj.firstDayOfWeek = ganttObj.timelineModule.customTimelineSettings.weekStartDay;\n if (column.field === ganttObj.columnMapping.startDate ||\n column.field === ganttObj.columnMapping.endDate) {\n dateTimePickerObj.renderDayCell = this.parent.renderWorkingDayCell.bind(this.parent);\n dateTimePickerObj.change = function (args) {\n _this.validateScheduleFields(args, column, ganttObj);\n };\n }\n fieldsModel[column.field] = dateTimePickerObj;\n break;\n }\n case 'dropdownedit':\n if (column.field === ganttObj.columnMapping.type || column.field === ganttObj.columnMapping.manual) {\n var dataKey = 'dataSource';\n var fieldsKey = 'fields';\n var types = [\n { 'ID': 1, 'Value': 'FixedUnit' }, { 'ID': 2, 'Value': 'FixedWork' }, { 'ID': 3, 'Value': 'FixedDuration' }\n ];\n common[dataKey] = types;\n common[fieldsKey] = { value: 'Value' };\n var dropDownListObj = common;\n dropDownListObj.enableRtl = this.parent.enableRtl;\n dropDownListObj.change = function (args) {\n if (column.field === taskSettings.manual) {\n _this.editedRecord.ganttProperties.isAutoSchedule = !args.value;\n }\n _this.validateScheduleFields(args, column, ganttObj);\n };\n }\n fieldsModel[column.field] = common;\n break;\n case 'maskededit':\n fieldsModel[column.field] = common;\n break;\n }\n if (!isNullOrUndefined(column.edit) && !isNullOrUndefined(column.edit.params)) {\n extend(fieldsModel[column.field], column.edit.params);\n }\n return fieldsModel;\n };\n DialogEdit.prototype.validateScheduleFields = function (args, column, ganttObj) {\n var _a;\n var dialog;\n if (!isNullOrUndefined(ganttObj.editModule.dialogModule.dialog)) {\n dialog = ganttObj.editModule.dialogModule.dialog;\n }\n var targetId = null;\n var inputElement;\n var currentData = ganttObj.editModule.dialogModule.editedRecord;\n var cellValue = null;\n var colName = null;\n var formObject;\n var ids = this.parent.viewType === 'ResourceView' ? this.parent.getTaskIds() : this.parent.ids;\n var strViewType = this.parent.viewType;\n if (!isNullOrUndefined(args.element)) {\n inputElement = args.element;\n targetId = inputElement.getAttribute('id');\n }\n else if (!isNullOrUndefined(args.container)) {\n inputElement = args.container;\n targetId = inputElement.querySelector('input').getAttribute('id');\n inputElement = inputElement.querySelector('#' + targetId);\n }\n else if (!isNullOrUndefined(args.event) && !isNullOrUndefined(args.event.path) && !isNullOrUndefined(args.event.path)[1]) {\n inputElement = args.event.path[1];\n targetId = inputElement.querySelector('input').getAttribute('id');\n inputElement = inputElement.querySelector('#' + targetId);\n }\n if (isNullOrUndefined(inputElement)) {\n cellValue = args.value;\n colName = column.field;\n }\n else {\n cellValue = inputElement.value;\n colName = targetId.replace(ganttObj.element.id, '');\n if (this.parent.columnByField[this.parent.taskFields.id].editType === \"stringedit\") {\n var customFn = function (args) {\n if (strViewType === 'ResourceView') {\n return ids.indexOf('T' + args['value']) === -1 && ids.indexOf('R' + args['value']) === -1;\n }\n else {\n return ids.indexOf(args['value']) === -1;\n }\n };\n var options = {\n rules: (_a = {},\n _a[this.parent.taskFields.id] = { required: true, minLength: [customFn, 'ID is already present, please enter new value'] },\n _a)\n };\n formObject = new FormValidator('#' + this.parent.element.id + 'GeneralTabContainer', options);\n }\n }\n if (colName.search('Segments') === 0) {\n colName = colName.replace('SegmentsTabContainer', '');\n this.validateSegmentFields(ganttObj, colName, cellValue, args);\n return true;\n }\n else {\n this.validateScheduleValuesByCurrentField(colName, cellValue, this.editedRecord);\n var ganttProp = currentData.ganttProperties;\n var tasks = ganttObj.taskFields;\n if (!isNullOrUndefined(tasks.startDate) && tasks.startDate !== colName) {\n this.updateScheduleFields(dialog, ganttProp, 'startDate');\n }\n if (tasks.endDate === colName && !isNullOrUndefined(ganttProp.startDate) && !isNullOrUndefined(args.value) && ganttProp.startDate.getTime() > args.value) {\n this.updateScheduleFields(dialog, ganttProp, 'endDate');\n }\n if (!isNullOrUndefined(tasks.endDate) && tasks.endDate !== colName) {\n this.updateScheduleFields(dialog, ganttProp, 'endDate');\n }\n if (!isNullOrUndefined(tasks.duration) && tasks.duration !== colName || ganttProp.duration >= 0) {\n this.updateScheduleFields(dialog, ganttProp, 'duration');\n }\n if (!isNullOrUndefined(tasks.work) && tasks.work !== colName) {\n this.updateScheduleFields(dialog, ganttProp, 'work');\n }\n this.dialogEditValidationFlag = false;\n return true;\n }\n };\n DialogEdit.prototype.updateScheduleFields = function (dialog, ganttProp, ganttField) {\n var ganttObj = this.parent;\n var ganttId = ganttObj.element.id;\n var columnName = getValue(ganttField, ganttObj.columnMapping);\n var col = ganttObj.columnByField[columnName];\n var tempValue;\n var taskField = this.parent.taskFields;\n if (col.editType === 'stringedit') {\n var element = dialog.querySelector('#' + ganttId + columnName);\n if (element) {\n var textBox = element.ej2_instances[0];\n if (textBox) {\n tempValue = !isNullOrUndefined(col.edit) && !isNullOrUndefined(col.edit.read) ? col.edit.read() :\n !isNullOrUndefined(col.valueAccessor) ? col.valueAccessor(columnName, ganttObj.editModule.dialogModule.editedRecord, col) :\n this.parent.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);\n if (textBox.value !== tempValue.toString() && taskField.duration === columnName) {\n textBox.value = tempValue;\n textBox.dataBind();\n }\n else if (taskField.startDate === columnName || taskField.endDate === columnName) {\n textBox.value = taskField.startDate === columnName ? ganttProp.startDate.toString() : ganttProp.endDate.toString();\n textBox.dataBind();\n }\n }\n }\n }\n else if (col.editType === 'datepickeredit' || col.editType === 'datetimepickeredit') {\n var element = dialog.querySelector('#' + ganttId + columnName);\n if (element) {\n var picker = col.editType === 'datepickeredit' ?\n element.ej2_instances[0] :\n element.ej2_instances[0];\n if (picker) {\n tempValue = ganttProp[ganttField];\n if (((isNullOrUndefined(picker.value)) && !isNullOrUndefined(tempValue)) ||\n (isNullOrUndefined(tempValue) && !isNullOrUndefined(picker.value)) ||\n (picker.value !== tempValue && !isNullOrUndefined(picker.value) && !isNullOrUndefined(tempValue)\n && picker.value.toString() !== tempValue.toString())) {\n picker.value = tempValue;\n picker.dataBind();\n }\n }\n }\n }\n else if (col.editType === 'numericedit') {\n var numericTextBox = dialog.querySelector('#' + ganttId + columnName).ej2_instances[0];\n tempValue = ganttProp[ganttField];\n if (!isNullOrUndefined(tempValue) && numericTextBox.value !== tempValue) {\n numericTextBox.value = tempValue;\n numericTextBox.dataBind();\n }\n }\n };\n /**\n * @param {IGanttData} ganttData .\n * @returns {void} .\n * @private\n */\n DialogEdit.prototype.validateDuration = function (ganttData) {\n var ganttProp = ganttData.ganttProperties;\n if (!this.dialogEditValidationFlag) {\n if (isNullOrUndefined(ganttProp.duration) && !isScheduledTask(ganttProp) && !isNullOrUndefined(ganttProp.startDate)) {\n this.parent.setRecordValue('endDate', null, ganttProp, true);\n this.parent.setRecordValue('isMilestone', false, ganttProp, true);\n }\n else if (isScheduledTask(ganttProp) || !isNullOrUndefined(ganttProp.startDate)) {\n if (ganttData.ganttProperties.isMilestone && ganttData.ganttProperties.duration !== 0) {\n this.parent.dateValidationModule.checkStartDate(ganttProp.startDate);\n }\n this.parent.dateValidationModule.calculateEndDate(ganttData);\n }\n else if (!isScheduledTask(ganttProp) && !isNullOrUndefined(ganttProp.endDate)) {\n this.parent.dateValidationModule.calculateStartDate(ganttData);\n }\n var milestone = ganttProp.duration === 0 ? true : false;\n this.parent.setRecordValue('isMilestone', milestone, ganttProp, true);\n this.dialogEditValidationFlag = true;\n }\n };\n DialogEdit.prototype.validateStartDate = function (ganttData) {\n var ganttProp = ganttData.ganttProperties;\n var tasks = this.parent.taskFields;\n if (!this.dialogEditValidationFlag) {\n if (isNullOrUndefined(ganttProp.startDate)) {\n this.parent.setRecordValue('duration', null, ganttProp, true);\n this.parent.setRecordValue('isMilestone', false, ganttProp, true);\n if (this.parent.allowUnscheduledTasks && isNullOrUndefined(tasks.endDate)) {\n this.parent.setRecordValue('endDate', null, ganttProp, true);\n }\n }\n else if (isScheduledTask(ganttProp)) {\n if (isNullOrUndefined(tasks.duration)) {\n this.parent.dateValidationModule.calculateDuration(ganttData);\n }\n else if (isNullOrUndefined(tasks.endDate)) {\n this.parent.dateValidationModule.calculateEndDate(ganttData);\n }\n else {\n this.parent.dateValidationModule.calculateEndDate(ganttData);\n }\n }\n else {\n if (!isNullOrUndefined(ganttProp.endDate)) {\n this.parent.dateValidationModule.calculateDuration(ganttData);\n }\n else if (!isNullOrUndefined(ganttProp.duration)) {\n this.parent.dateValidationModule.calculateEndDate(ganttData);\n }\n }\n this.dialogEditValidationFlag = true;\n }\n };\n DialogEdit.prototype.validateEndDate = function (ganttData) {\n var ganttProp = ganttData.ganttProperties;\n var tasks = this.parent.taskFields;\n if (!this.dialogEditValidationFlag) {\n if (isNullOrUndefined(ganttProp.endDate)) {\n this.parent.setRecordValue('duration', null, ganttProp, true);\n this.parent.setRecordValue('isMilestone', false, ganttProp, true);\n }\n else if (isScheduledTask(ganttProp)) {\n if (isNullOrUndefined(tasks.duration)) {\n this.parent.dateValidationModule.calculateDuration(ganttData);\n }\n else if (isNullOrUndefined(ganttProp.startDate)) {\n this.parent.dateValidationModule.calculateStartDate(ganttData);\n }\n else {\n if (!isNullOrUndefined(ganttProp.segments) && ganttProp.segments.length > 0) {\n ganttProp.segments = this.parent.editModule.cellEditModule.validateEndDateWithSegments(ganttProp);\n }\n this.parent.dateValidationModule.calculateDuration(ganttData);\n }\n }\n else {\n if (!isNullOrUndefined(ganttProp.duration)) {\n this.parent.dateValidationModule.calculateStartDate(ganttData);\n }\n else if (!isNullOrUndefined(ganttProp.startDate)) {\n this.parent.dateValidationModule.calculateDuration(ganttData);\n }\n }\n this.dialogEditValidationFlag = true;\n }\n };\n /**\n *\n * @param {string} columnName .\n * @param {string} value .\n * @param {IGanttData} currentData .\n * @returns {boolean} .\n * @private\n */\n DialogEdit.prototype.validateScheduleValuesByCurrentField = function (columnName, value, currentData) {\n var ganttObj = this.parent;\n var ganttProp = currentData.ganttProperties;\n var taskSettings = ganttObj.taskFields;\n if (taskSettings.duration === columnName) {\n if (!isNullOrUndefined(value) && value !== '' && (parseInt(value) >= 0 || parseFloat(value) >= 0)) {\n ganttObj.dataOperation.updateDurationValue(value, ganttProp);\n this.parent.setRecordValue(taskSettings.duration, value, currentData);\n this.parent.setRecordValue('taskData.' + taskSettings.duration, ganttProp.duration, currentData);\n this.validateDuration(currentData);\n }\n else {\n if (ganttObj.allowUnscheduledTasks) {\n if ((ganttProp.startDate && ganttProp.endDate && ganttProp.startDate.getTime() > ganttProp.endDate.getTime()) || value.indexOf('-') !== -1) {\n this.parent.setRecordValue('duration', 0, ganttProp, true);\n if (ganttProp.endDate) {\n this.parent.setRecordValue('startDate', ganttProp.endDate, ganttProp, true);\n }\n }\n else {\n if (value === \"\") {\n this.parent.setRecordValue('duration', null, ganttProp, true);\n if (ganttProp.endDate && ganttProp.startDate) {\n this.parent.setRecordValue('endDate', null, ganttProp, true);\n }\n }\n else {\n this.parent.setRecordValue('duration', ganttProp.duration, ganttProp, true);\n }\n }\n }\n }\n this.parent.editModule.updateResourceRelatedFields(currentData, 'duration');\n }\n if (taskSettings.startDate === columnName) {\n if (value !== '') {\n var startDate = this.parent.dateValidationModule.getDateFromFormat(value);\n startDate = this.parent.dateValidationModule.checkStartDate(startDate, ganttProp);\n this.parent.setRecordValue('startDate', startDate, ganttProp, true);\n this.validateStartDate(currentData);\n }\n else {\n if (ganttObj.allowUnscheduledTasks && !(currentData.hasChildRecords)) {\n this.parent.setRecordValue('startDate', null, ganttProp, true);\n this.parent.setRecordValue('duration', null, ganttProp, true);\n this.parent.setRecordValue('isMilestone', false, ganttProp, true);\n }\n }\n }\n if (taskSettings.endDate === columnName) {\n if (value !== '') {\n var endDate = this.parent.dateValidationModule.getDateFromFormat(value);\n if (!isNullOrUndefined(ganttProp.startDate) && !isNullOrUndefined(ganttProp.endDate) && !isNullOrUndefined(endDate) && ganttProp.startDate.getTime() > endDate.getTime()) {\n endDate = ganttProp.endDate;\n }\n if (endDate.getHours() === 0 && ganttObj.defaultEndTime !== 86400) {\n this.parent.dateValidationModule.setTime(ganttObj.defaultEndTime, endDate);\n }\n endDate = this.parent.dateValidationModule.checkEndDate(endDate, ganttProp);\n if (isNullOrUndefined(ganttProp.startDate) || endDate.getTime() > (ganttProp.startDate).getTime()) {\n this.parent.setRecordValue('endDate', endDate, ganttProp, true);\n }\n this.validateEndDate(currentData);\n }\n else {\n if (ganttObj.allowUnscheduledTasks) {\n this.parent.setRecordValue('endDate', null, ganttProp, true);\n this.parent.setRecordValue('duration', null, ganttProp, true);\n this.parent.setRecordValue('isMilestone', false, ganttProp, true);\n }\n }\n }\n if (taskSettings.work === columnName) {\n if (!isNullOrUndefined(value) && value !== '') {\n this.parent.setRecordValue('work', value, ganttProp, true);\n this.parent.editModule.updateResourceRelatedFields(currentData, 'work');\n this.validateDuration(currentData);\n }\n }\n if (columnName === taskSettings.type) {\n this.parent.setRecordValue('taskType', value, ganttProp, true);\n }\n if (taskSettings.manual === columnName) {\n this.parent.editModule.updateTaskScheduleModes(currentData);\n }\n return true;\n };\n DialogEdit.prototype.getSegmentsModel = function (fields) {\n var _this = this;\n var taskSettings = this.parent.taskFields;\n if (isNullOrUndefined(fields) || fields.length === 0) {\n fields = [];\n if (!isNullOrUndefined(taskSettings.startDate)) {\n fields.push(this.parent.taskFields.startDate);\n }\n if (!isNullOrUndefined(taskSettings.endDate)) {\n fields.push(this.parent.taskFields.endDate);\n }\n if (!isNullOrUndefined(taskSettings.duration)) {\n fields.push(this.parent.taskFields.duration);\n }\n if (!isNullOrUndefined(taskSettings.id)) {\n fields.push(this.parent.taskFields.id);\n }\n }\n var segmentInputModel = {};\n segmentInputModel.editSettings = {\n allowEditing: true, allowAdding: true, allowDeleting: true, mode: 'Normal', newRowPosition: 'Bottom'\n };\n segmentInputModel.locale = this.parent.locale;\n segmentInputModel.dataSource = [];\n segmentInputModel.rowHeight = this.parent.isAdaptive ? 48 : null;\n segmentInputModel.toolbar = [\n {\n id: this.parent.element.id + 'SegmentsTabContainer' + '_add', prefixIcon: 'e-add',\n tooltipText: this.localeObj.getConstant('add'), align: 'Right',\n text: this.parent.isAdaptive ? '' : this.localeObj.getConstant('add')\n },\n {\n id: this.parent.element.id + 'SegmentsTabContainer' + '_delete', prefixIcon: 'e-delete',\n tooltipText: this.localeObj.getConstant('delete'), align: 'Right',\n text: this.parent.isAdaptive ? '' : this.localeObj.getConstant('delete')\n }\n ];\n var gridColumns = [];\n var _loop_1 = function (i) {\n var gridColumn = {};\n var generalTabString = 'General';\n switch (fields[i]) {\n case this_1.parent.taskFields.id:\n gridColumn = {\n field: fields[i], visible: false, isPrimaryKey: true\n };\n gridColumns.push(gridColumn);\n break;\n case this_1.parent.taskFields.startDate:\n case this_1.parent.taskFields.endDate:\n gridColumn = {\n field: fields[i], headerText: this_1.localeObj.getConstant((fields[i] === this_1.parent.taskFields.startDate) ? 'startDate' : 'endDate'), editType: 'stringedit', width: '200px',\n edit: {\n write: function (args) {\n var datePickerModel;\n if (!isNullOrUndefined(_this.beforeOpenArgs[generalTabString])) {\n datePickerModel = _this.beforeOpenArgs[generalTabString][fields[i]];\n }\n else {\n var columnFields = _this.getGeneralColumnFields();\n var columnModel = _this.getFieldsModel(columnFields);\n datePickerModel = columnModel[fields[i]];\n }\n var value = args.rowData[args.column.field];\n setValue('value', value, datePickerModel);\n var datePicker = new _this.inputs[_this.parent.columnByField[fields[i]].editType](datePickerModel);\n datePicker.appendTo(args.element);\n },\n read: function (args) {\n var ej2Instance = args.ej2_instances[0];\n return ej2Instance.value;\n }\n },\n format: this_1.parent.getDateFormat()\n };\n if (fields[i] === 'startDate') {\n gridColumn.validationRules = { required: true };\n }\n gridColumns.push(gridColumn);\n break;\n case this_1.parent.taskFields.duration:\n gridColumn = {\n field: fields[i], headerText: this_1.localeObj.getConstant(fields[i].toLocaleLowerCase()), editType: 'stringedit',\n width: '100px', edit: {\n write: function (args) {\n var inputTextModel;\n if (!isNullOrUndefined(_this.beforeOpenArgs[generalTabString])) {\n inputTextModel = _this.beforeOpenArgs[generalTabString][fields[i]];\n }\n else {\n var columnFields = _this.getGeneralColumnFields();\n var columnModel = _this.getFieldsModel(columnFields);\n inputTextModel = columnModel[fields[i]];\n }\n inputTextModel.floatLabelType = 'Never';\n var value = args.rowData[args.column.field];\n if (!isNullOrUndefined(value)) {\n setValue('value', value, inputTextModel);\n }\n else {\n setValue('value', null, inputTextModel);\n }\n setValue('value', value, inputTextModel);\n var inputModel = new TextBox(inputTextModel);\n inputModel.appendTo(args.element);\n },\n read: function (args) {\n var ej2Instance = args.ej2_instances[0];\n return ej2Instance.value.toString();\n }\n }\n };\n gridColumns.push(gridColumn);\n break;\n }\n };\n var this_1 = this;\n for (var i = 0; i < fields.length; i++) {\n _loop_1(i);\n }\n segmentInputModel.columns = gridColumns;\n segmentInputModel.height = this.parent.isAdaptive ? '100%' : '153px';\n return segmentInputModel;\n };\n DialogEdit.prototype.getGridColumnByField = function (fieldName, columns) {\n var column;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n column = columns[i];\n }\n }\n return column;\n };\n DialogEdit.prototype.updateSegmentField = function (columnName, args, segment) {\n var dialog = this.parent.editModule.dialogModule.dialog;\n var gridModel = getValue('Segments', this.beforeOpenArgs);\n var col = this.getGridColumnByField(columnName, gridModel.columns);\n var ganttId = this.parent.element.id;\n var tempValue = segment[columnName];\n var inputValue;\n if (col.editType === 'stringedit') {\n inputValue = dialog.querySelector('#' + ganttId + 'SegmentsTabContainer' + columnName)\n .ej2_instances[0];\n }\n else if (col.editType === 'datepickeredit') {\n inputValue = dialog.querySelector('#' + ganttId + 'SegmentsTabContainer' + columnName)\n .ej2_instances[0];\n }\n if ((!isNullOrUndefined(inputValue.value)) && (!isNullOrUndefined(tempValue)) && (inputValue.value.toString() !== tempValue.toString())) {\n inputValue.value = tempValue;\n inputValue.dataBind();\n }\n };\n DialogEdit.prototype.validateSegmentFields = function (ganttObj, columnName, cellValue, args) {\n var taskSettings = this.parent.taskFields;\n if (!isNullOrUndefined(taskSettings.duration) && taskSettings.duration.toLowerCase() === columnName.toLowerCase()) {\n if (!isNullOrUndefined(cellValue) && cellValue !== '') {\n this.selectedSegment[taskSettings.duration] = Number(cellValue);\n var endDate = ganttObj.dataOperation.getEndDate(this.selectedSegment[taskSettings.startDate], Number(cellValue), this.editedRecord.ganttProperties.durationUnit, this.editedRecord.ganttProperties, false);\n endDate = ganttObj.dataOperation.checkEndDate(endDate, this.editedRecord.ganttProperties, false);\n this.selectedSegment[taskSettings.endDate] = endDate;\n }\n }\n if (!isNullOrUndefined(taskSettings.startDate) && taskSettings.startDate.toLowerCase() === columnName.toLowerCase()) {\n if (cellValue !== '') {\n var startDate = this.parent.dateValidationModule.getDateFromFormat(cellValue);\n startDate = this.parent.dateValidationModule.checkStartDate(startDate);\n this.selectedSegment[taskSettings.startDate] = startDate;\n if (!isNullOrUndefined(taskSettings.endDate)) {\n this.selectedSegment.endDate = this.parent.dataOperation.getEndDate(startDate, this.selectedSegment[taskSettings.duration], this.editedRecord.ganttProperties.durationUnit, this.editedRecord.ganttProperties, false);\n }\n }\n }\n if (!isNullOrUndefined(taskSettings.endDate) && taskSettings.endDate.toLowerCase() === columnName.toLowerCase()) {\n if (cellValue !== '') {\n var endDate = this.parent.dateValidationModule.getDateFromFormat(cellValue);\n if (endDate.getHours() === 0 && ganttObj.defaultEndTime !== 86400) {\n this.parent.dateValidationModule.setTime(ganttObj.defaultEndTime, endDate);\n }\n endDate = this.parent.dateValidationModule.checkEndDate(endDate, this.editedRecord.ganttProperties);\n this.selectedSegment[taskSettings.endDate] = endDate;\n this.selectedSegment[taskSettings.duration] = this.parent.dataOperation.getDuration(this.selectedSegment[taskSettings.startDate], this.selectedSegment[taskSettings.endDate], this.editedRecord.ganttProperties.durationUnit, true, false, true);\n }\n }\n if (!isNullOrUndefined(taskSettings.startDate)) {\n this.updateSegmentField(taskSettings.startDate, args, this.selectedSegment);\n }\n if (!isNullOrUndefined(taskSettings.endDate)) {\n this.updateSegmentField(taskSettings.endDate, args, this.selectedSegment);\n }\n if (!isNullOrUndefined(taskSettings.duration)) {\n this.updateSegmentField(taskSettings.duration, args, this.selectedSegment);\n }\n };\n DialogEdit.prototype.getPredecessorModel = function (fields) {\n if (isNullOrUndefined(fields) || fields.length === 0) {\n fields = ['ID', 'Name', 'Type', 'Offset', 'UniqueId'];\n }\n var inputModel = {};\n inputModel.editSettings = { allowEditing: true, allowAdding: true, allowDeleting: true, mode: 'Normal' };\n inputModel.locale = this.parent.locale;\n inputModel.dataSource = [];\n inputModel.rowHeight = this.parent.isAdaptive ? 48 : null;\n inputModel.toolbar = [\n {\n id: this.parent.element.id + 'DependencyTabContainer' + '_add', prefixIcon: 'e-add',\n tooltipText: this.localeObj.getConstant('add'), align: 'Right',\n text: this.parent.isAdaptive ? '' : this.localeObj.getConstant('add')\n },\n {\n id: this.parent.element.id + 'DependencyTabContainer' + '_delete', prefixIcon: 'e-delete',\n tooltipText: this.localeObj.getConstant('delete'), align: 'Right',\n text: this.parent.isAdaptive ? '' : this.localeObj.getConstant('delete')\n }\n ];\n var columns = [];\n for (var i = 0; i < fields.length; i++) {\n var column = {};\n if (fields[i].toLowerCase() === 'id') {\n column = {\n field: 'id', headerText: this.localeObj.getConstant('id'), allowEditing: false, width: '70px', isPrimaryKey: true\n };\n columns.push(column);\n }\n else if (fields[i].toLowerCase() === 'name') {\n column = {\n field: 'name', headerText: this.localeObj.getConstant('name'), editType: 'stringedit', width: '250px',\n validationRules: { required: true }\n };\n columns.push(column);\n }\n else if (fields[i].toLowerCase() === 'type') {\n column = {\n field: 'type', headerText: this.localeObj.getConstant('type'), editType: 'dropdownedit',\n dataSource: this.types, foreignKeyField: 'id', foreignKeyValue: 'text',\n defaultValue: 'FS', validationRules: { required: true }, width: '150px'\n };\n columns.push(column);\n }\n else if (fields[i].toLowerCase() === 'offset') {\n column = {\n field: 'offset', headerText: this.localeObj.getConstant('offset'), editType: 'stringedit',\n defaultValue: this.parent.dataOperation.getDurationString(0, this.beforeOpenArgs.rowData.ganttProperties.durationUnit),\n validationRules: { required: true }, width: '100px'\n };\n columns.push(column);\n }\n else if (fields[i].toLowerCase() === 'uniqueid') {\n column = {\n field: 'uniqueId', isPrimaryKey: true, visible: false, defaultValue: getUid().toString()\n };\n columns.push(column);\n }\n }\n inputModel.columns = columns;\n inputModel.height = this.parent.isAdaptive ? '100%' : '153px';\n return inputModel;\n };\n DialogEdit.prototype.getResourcesModel = function (fields) {\n var ganttObj = this.parent;\n var resourceSettings = ganttObj.resourceFields;\n if (isNullOrUndefined(fields) || fields.length === 0) {\n fields = [resourceSettings.id, resourceSettings.name, resourceSettings.unit, resourceSettings.group];\n }\n var inputModel = {\n allowFiltering: true,\n treeColumnIndex: -1,\n childMapping: '',\n editSettings: { allowEditing: true, mode: 'Cell' },\n locale: this.parent.locale,\n allowSelection: true,\n rowHeight: this.parent.isAdaptive ? 48 : null,\n filterSettings: { type: 'Menu' },\n selectionSettings: { checkboxOnly: true, checkboxMode: 'Default', persistSelection: true, type: 'Multiple' }\n };\n var columns = [\n { type: 'checkbox', allowEditing: false, allowSorting: false, allowFiltering: false, width: 60 }\n ];\n for (var i = 0; i < fields.length; i++) {\n var column = {};\n if (fields[i] === resourceSettings.id) {\n column = {\n field: resourceSettings.id,\n headerText: this.localeObj.getConstant('id'), isPrimaryKey: true, width: '100px',\n allowEditing: false\n };\n columns.push(column);\n }\n else if (fields[i] === resourceSettings.name) {\n column = {\n field: resourceSettings.name, headerText: this.localeObj.getConstant('name'),\n allowEditing: false\n };\n columns.push(column);\n }\n else if (fields[i] === resourceSettings.unit) {\n column = {\n field: resourceSettings.unit,\n headerText: this.localeObj.getConstant('unit'),\n editType: 'numericedit',\n edit: { params: { min: 0 } }\n };\n columns.push(column);\n }\n else if (fields[i] === resourceSettings.group && !isNullOrUndefined(resourceSettings.group)) {\n column = {\n field: resourceSettings.group,\n headerText: this.localeObj.getConstant('group'),\n allowEditing: false\n };\n columns.push(column);\n }\n }\n inputModel.columns = columns;\n inputModel.height = this.parent.isAdaptive ? '100%' : '196px';\n return inputModel;\n };\n DialogEdit.prototype.getNotesModel = function (fields) {\n if (isNullOrUndefined(fields) || fields.length === 0) {\n fields = ['Bold', 'Italic', 'Underline', 'StrikeThrough',\n 'FontName', 'FontSize', 'FontColor', 'BackgroundColor',\n 'LowerCase', 'UpperCase', '|',\n 'Alignments', 'OrderedList', 'UnorderedList',\n 'Outdent', 'Indent', '|', 'CreateTable',\n 'CreateLink', '|', 'ClearFormat', 'Print',\n '|', 'Undo', 'Redo'];\n }\n var inputModel = {\n placeholder: this.localeObj.getConstant('writeNotes'),\n toolbarSettings: {\n items: fields\n },\n height: this.parent.isAdaptive ? '100%' : 'auto',\n locale: this.parent.locale\n };\n return inputModel;\n };\n DialogEdit.prototype.createDivElement = function (className, id) {\n return createElement('div', { className: className, id: id });\n };\n DialogEdit.prototype.createFormElement = function (className, id) {\n return createElement('form', { className: className, id: id });\n };\n DialogEdit.prototype.createInputElement = function (className, id, fieldName, type) {\n return createElement(type || 'input', {\n className: className, attrs: {\n type: 'text', id: id, name: fieldName,\n title: fieldName\n }\n });\n };\n DialogEdit.prototype.renderTabItems = function () {\n var tabModel = this.beforeOpenArgs.tabModel;\n var items = tabModel.items;\n var index = 0;\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n if (item.content instanceof HTMLElement) {\n continue;\n }\n else if (item.content === 'General') {\n item.content = this.renderGeneralTab(item.content);\n }\n else if (item.content === 'Dependency') {\n if (this.editedRecord.hasChildRecords && !this.parent.allowParentDependency) {\n item.disabled = true;\n }\n item.content = this.renderPredecessorTab(item.content);\n }\n else if (item.content === 'Resources') {\n item.content = this.renderResourceTab(item.content);\n }\n else if (item.content === ('Custom' + '' + index)) {\n item.content = this.renderCustomTab(item.content);\n index++;\n }\n else if (item.content === 'Notes') {\n item.content = this.renderNotesTab(item.content);\n }\n else if (item.content === 'Segments') {\n if (this.editedRecord.hasChildRecords) {\n item.disabled = true;\n }\n item.content = this.renderSegmentsTab(item.content);\n }\n }\n };\n DialogEdit.prototype.segmentGridActionBegin = function (args) {\n var _a, _b;\n var taskFields = this.parent.taskFields;\n var itemName = 'Segments';\n var gridModel = this.beforeOpenArgs[itemName];\n if (args.requestType === 'add' || args.requestType === 'beginEdit' || args.requestType === 'save') {\n var gridData = gridModel.dataSource;\n var selectedItem = getValue('rowData', args);\n var startDate = this.beforeOpenArgs.rowData.ganttProperties.startDate;\n if (!isNullOrUndefined(startDate)) {\n if (args.requestType === 'add') {\n var arg = {};\n var sDate = getValue(this.parent.taskFields.startDate, selectedItem);\n var eDate = getValue(this.parent.taskFields.endDate, selectedItem);\n var duration = void 0;\n if (!isNullOrUndefined(this.parent.taskFields.duration)) {\n duration = getValue(this.parent.taskFields.duration, selectedItem);\n }\n var startDate_1 = !isNullOrUndefined(gridData) && gridData.length > 0 ?\n (!isNullOrUndefined(taskFields.endDate) && !isNullOrUndefined(gridData[0][taskFields.endDate])) ? new Date(getValue(taskFields.endDate, gridData[0]).getTime()) :\n new Date(getValue(taskFields.startDate, gridData[0]).getTime()) :\n !isNullOrUndefined(this.beforeOpenArgs.rowData.ganttProperties.startDate) &&\n new Date(this.beforeOpenArgs.rowData.ganttProperties.startDate.getTime());\n startDate_1.setHours(0, 0, 0, 0);\n if (!isNullOrUndefined(gridData) && gridData.length > 0) {\n startDate_1.setDate(startDate_1.getDate() + 2);\n }\n sDate = this.parent.dataOperation.checkStartDate(startDate_1);\n eDate = this.parent.dateValidationModule.getDateFromFormat(sDate);\n if (eDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {\n this.parent.dateValidationModule.setTime(this.parent.defaultEndTime, eDate);\n }\n if (!isNullOrUndefined(taskFields.endDate)) {\n eDate.setDate(sDate.getDate() + 1);\n }\n if (!isNullOrUndefined(taskFields['duration'])) {\n duration = 1;\n }\n if (!isNullOrUndefined(taskFields['duration'])) {\n arg = (_a = {},\n _a[taskFields['startDate']] = sDate,\n _a[taskFields['endDate']] = eDate,\n _a[taskFields['duration']] = duration,\n _a);\n }\n else {\n arg = (_b = {},\n _b[taskFields['startDate']] = sDate,\n _b[taskFields['endDate']] = eDate,\n _b);\n }\n args.rowData = arg;\n }\n }\n this.selectedSegment = args.rowData;\n // if (args.requestType === 'save') {\n // // let duration: string = 'duration';\n // // let tempDuration: Object = this.parent.dataOperation.getDurationValue(args.data[duration]);\n // // args.data[duration] = getValue('duration', tempDuration);\n // this.selectedSegment = !isNullOrUndefined(this.editedRecord.ganttProperties.segments[args.rowIndex]) ?\n // this.editedRecord.ganttProperties.segments[args.rowIndex] : !isNullOrUndefined(gridData[args.rowIndex]) ?\n // gridData[args.rowIndex] : gridData;\n // }\n }\n };\n DialogEdit.prototype.getDialogTabIndex = function (tabName) {\n var indexValue;\n this.parent.addDialogFields.map(function (item, index) {\n if (item.type === tabName) {\n indexValue = index;\n }\n });\n return indexValue;\n };\n DialogEdit.prototype.renderSegmentsTab = function (itemName) {\n var _this = this;\n var ganttObj = this.parent;\n var gridModel = this.beforeOpenArgs[itemName];\n var ganttData = this.beforeOpenArgs.rowData;\n var preData = [];\n if (this.isEdit) {\n preData = isNullOrUndefined(ganttData.taskData[this.parent.taskFields['segments']]) ? [] : ganttData.taskData[this.parent.taskFields['segments']];\n }\n preData.map(function (item, index) {\n if (isNullOrUndefined(item[_this.parent.taskFields[\"id\"]])) {\n item[_this.parent.taskFields[\"id\"]] = index;\n }\n });\n gridModel.dataSource = preData;\n gridModel.actionBegin = this.segmentGridActionBegin.bind(this);\n var tabIndex = this.getDialogTabIndex('Segments');\n var dialogField;\n if (!this.isEdit) {\n dialogField = this.parent.addDialogFields[tabIndex];\n }\n else if (this.isEdit) {\n dialogField = this.parent.editDialogFields[tabIndex];\n }\n var allProperty;\n var toolbarCollection = [];\n var columnCollection = [];\n if (!isNullOrUndefined(dialogField) && !isNullOrUndefined(dialogField.additionalParams)) {\n allProperty = (dialogField.additionalParams);\n for (var i in allProperty) {\n switch (i) {\n case \"allowFiltering\":\n Grid.Inject(Filter);\n break;\n case \"allowSorting\":\n Grid.Inject(Sort);\n break;\n case \"allowPaging\":\n Grid.Inject(Page);\n break;\n case \"allowGrouping\":\n Grid.Inject(Group);\n break;\n case \"editSettings\":\n Grid.Inject(Edit);\n break;\n case \"aggregates\":\n Grid.Inject(Aggregate);\n break;\n case \"showColumnChooser\":\n Grid.Inject(ColumnChooser);\n break;\n case \"showColumnMenu\":\n Grid.Inject(ColumnMenu);\n break;\n case \"contextMenuItems\":\n Grid.Inject(ContextMenu);\n break;\n case \"allowResizing\":\n Grid.Inject(Resize);\n break;\n case \"allowReordering\":\n Grid.Inject(Reorder);\n break;\n case \"detailTemplate\":\n Grid.Inject(DetailRow);\n break;\n case \"allowRowDragAndDrop\":\n Grid.Inject(RowDD);\n break;\n case \"searchSettings\":\n Grid.Inject(Search);\n break;\n case \"selectionSettings\":\n Grid.Inject(Selection);\n break;\n case \"toolbar\":\n var toolbar = allProperty[\"toolbar\"];\n toolbar.map(function (item) {\n switch (item) {\n case \"Search\":\n Grid.Inject(Search);\n break;\n case \"Print\":\n Grid.Inject(Print);\n break;\n case \"PdfExport\":\n Grid.Inject(PdfExport);\n break;\n case \"ExcelExport\":\n Grid.Inject(ExcelExport);\n break;\n default:\n break;\n }\n });\n toolbarCollection = gridModel.toolbar;\n Grid.Inject(GridToolbar);\n break;\n case \"enableVirtualization\":\n Grid.Inject(VirtualScroll);\n break;\n case \"columns\":\n columnCollection = gridModel.columns;\n break;\n default:\n break;\n }\n }\n }\n Grid.Inject(Edit, Page, GridToolbar, ForeignKey);\n gridModel = __assign({}, gridModel, allProperty);\n gridModel.toolbar = toolbarCollection.concat(gridModel.toolbar);\n gridModel.columns = columnCollection.concat(gridModel.columns);\n var gridObj = new Grid(gridModel);\n var divElement = this.createDivElement('', ganttObj.element.id + '' + itemName + 'TabContainer');\n gridObj.appendTo(divElement);\n return divElement;\n };\n DialogEdit.prototype.renderGeneralTab = function (itemName) {\n var ganttObj = this.parent;\n var addFields = [];\n var itemModel = this.beforeOpenArgs[itemName];\n var divElement = this.createFormElement('e-edit-form-row', ganttObj.element.id\n + '' + itemName + 'TabContainer');\n for (var _i = 0, _a = Object.keys(itemModel); _i < _a.length; _i++) {\n var key = _a[_i];\n if (this.parent.columnByField[key].visible === false) {\n continue;\n }\n var column = this.parent.columnByField[key];\n var inputModel = itemModel[key];\n divElement.appendChild(this.renderInputElements(inputModel, column));\n addFields.push(key);\n }\n var tabIndex = this.getDialogTabIndex('General');\n var fields = [];\n if (!this.isEdit && !isNullOrUndefined(this.parent.addDialogFields[tabIndex]) && !isNullOrUndefined(this.parent.addDialogFields[tabIndex].fields)) {\n fields = this.parent.addDialogFields[tabIndex].fields;\n }\n else if (this.isEdit && !isNullOrUndefined(this.parent.editDialogFields[tabIndex]) && !isNullOrUndefined(this.parent.editDialogFields[tabIndex].fields)) {\n fields = this.parent.editDialogFields[tabIndex].fields;\n }\n if (!isNullOrUndefined(fields)) {\n var templateFields = fields.filter(function (item) { return !addFields.includes(item); });\n if (!isNullOrUndefined(templateFields)) {\n var template = templateFields;\n for (var i = 0; i <= template.length - 1; i++) {\n var scriptElement = document.getElementById(template[i]);\n if (!isNullOrUndefined(scriptElement)) {\n var templateContent = scriptElement.innerHTML;\n var div = createElement('div');\n div.innerHTML = templateContent;\n divElement.appendChild(div.children[0]);\n }\n }\n }\n }\n return divElement;\n };\n DialogEdit.prototype.isCheckIsDisabled = function (column) {\n var disabled = false;\n var stringOrNumber;\n if (column.allowEditing === false || column.isPrimaryKey || this.parent.readOnly) {\n if (this.parent.customColumns.indexOf(column.field) !== -1) {\n disabled = true;\n }\n else {\n if (column.field === this.parent.taskFields.id || column.field === this.parent.taskFields.name ||\n column.field === this.parent.taskFields.duration || column.field === this.parent.taskFields.progress ||\n column.field === this.parent.taskFields.startDate || column.field === this.parent.taskFields.endDate ||\n column.field === this.parent.taskFields.baselineStartDate || column.field === this.parent.taskFields.baselineEndDate ||\n column.field === this.parent.taskFields.work || column.field === this.parent.taskFields.type) {\n for (var i = 0; i < this.parent.currentViewData['length']; i++) {\n if (!isNullOrUndefined(this.parent.currentViewData[i].ganttProperties.taskId)) {\n stringOrNumber = this.parent.currentViewData[i].ganttProperties.taskId;\n break;\n }\n }\n if (typeof (stringOrNumber) === 'string') {\n disabled = false;\n }\n else {\n disabled = true;\n }\n }\n }\n }\n if (this.isEdit) {\n if (column.field === this.parent.taskFields.id) {\n disabled = true;\n }\n if (this.editedRecord.hasChildRecords) {\n if ((column.field === this.parent.taskFields.endDate && ((!isNullOrUndefined(this.editedRecord['isManual']) &&\n this.editedRecord['isManual'] === false) || this.parent.taskMode === 'Auto')) || column.field === this.parent.taskFields.duration ||\n column.field === this.parent.taskFields.progress || column.field === this.parent.taskFields.work ||\n column.field === this.parent.taskFields.type) {\n disabled = true;\n }\n }\n }\n return disabled;\n };\n DialogEdit.prototype.isParentValid = function (data) {\n if (data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].uniqueID == this.beforeOpenArgs.rowData['uniqueID']) {\n this.isValidData = false;\n break;\n }\n if (data[i].hasChildRecords) {\n this.isParentValid(data[i].childRecords);\n }\n if (!this.isValidData) {\n break;\n }\n }\n }\n return this.isValidData;\n };\n DialogEdit.prototype.renderPredecessorTab = function (itemName) {\n var _this = this;\n var ganttObj = this.parent;\n var gridModel = this.beforeOpenArgs[itemName];\n var dependencyColumn = this.parent.columnByField[this.parent.taskFields.dependency];\n if (dependencyColumn.allowEditing === false || dependencyColumn.isPrimaryKey || this.parent.readOnly) {\n gridModel.editSettings.allowEditing = false;\n gridModel.editSettings.allowAdding = false;\n gridModel.editSettings.allowDeleting = false;\n }\n var ganttData = this.beforeOpenArgs.rowData;\n var preData = [];\n this.taskNameCollection();\n if (this.isEdit) {\n preData = this.predecessorEditCollection(ganttData);\n this.updatePredecessorDropDownData(ganttData);\n }\n gridModel.dataSource = preData;\n gridModel.actionBegin = this.gridActionBegin.bind(this);\n var columns = gridModel.columns;\n columns[1].edit = {\n write: function (args) {\n if (getValue('requestType', args) === 'add') {\n setValue('rowData.uniqueId', getUid(), args);\n }\n var field = 'name';\n var autoObj = new ComboBox({\n dataSource: new DataManager(_this.idCollection),\n popupHeight: '180px',\n allowCustom: false,\n enableRtl: _this.parent.enableRtl,\n fields: { value: 'text' },\n value: args.rowData[field],\n change: function (arg) {\n var tr = closest(arg.element, 'tr');\n var idInput = tr.querySelector('#' + _this.parent.element.id + 'DependencyTabContainerid');\n if (idInput) {\n if (!isNullOrUndefined(arg.itemData) && !isNullOrUndefined(arg.item)) {\n idInput.value = arg.itemData.id;\n }\n else {\n idInput.value = '';\n }\n }\n },\n autofill: true\n });\n autoObj.appendTo(args.element);\n },\n read: function (args) {\n var ej2Instance = args.ej2_instances[0];\n return ej2Instance.value;\n }\n };\n var tabIndex = this.getDialogTabIndex('Dependency');\n var dialogField;\n if (!this.isEdit) {\n dialogField = this.parent.addDialogFields[tabIndex];\n }\n else if (this.isEdit) {\n dialogField = this.parent.editDialogFields[tabIndex];\n }\n var toolbarCollection = [];\n var allProperty;\n if (!isNullOrUndefined(dialogField) && !isNullOrUndefined(dialogField.additionalParams)) {\n allProperty = dialogField.additionalParams;\n for (var i in allProperty) {\n switch (i) {\n case \"allowFiltering\":\n Grid.Inject(Filter);\n break;\n case \"allowSorting\":\n Grid.Inject(Sort);\n break;\n case \"allowPaging\":\n Grid.Inject(Page);\n break;\n case \"allowGrouping\":\n Grid.Inject(Group);\n break;\n case \"editSettings\":\n Grid.Inject(Edit);\n break;\n case \"aggregates\":\n Grid.Inject(Aggregate);\n break;\n case \"showColumnChooser\":\n Grid.Inject(ColumnChooser);\n break;\n case \"showColumnMenu\":\n Grid.Inject(ColumnMenu);\n break;\n case \"contextMenuItems\":\n Grid.Inject(ContextMenu);\n break;\n case \"allowResizing\":\n Grid.Inject(Resize);\n break;\n case \"allowReordering\":\n Grid.Inject(Reorder);\n break;\n case \"detailTemplate\":\n Grid.Inject(DetailRow);\n break;\n case \"allowRowDragAndDrop\":\n Grid.Inject(RowDD);\n break;\n case \"searchSettings\":\n Grid.Inject(Search);\n break;\n case \"selectionSettings\":\n Grid.Inject(Selection);\n break;\n case \"toolbar\":\n var toolbar = allProperty[\"toolbar\"];\n toolbar.map(function (item) {\n switch (item) {\n case \"Search\":\n Grid.Inject(Search);\n break;\n case \"Print\":\n Grid.Inject(Print);\n break;\n case \"PdfExport\":\n Grid.Inject(PdfExport);\n break;\n case \"ExcelExport\":\n Grid.Inject(ExcelExport);\n break;\n default:\n break;\n }\n });\n toolbarCollection = gridModel.toolbar;\n Grid.Inject(GridToolbar);\n break;\n case \"enableVirtualization\":\n Grid.Inject(VirtualScroll);\n break;\n default:\n break;\n }\n }\n }\n Grid.Inject(Edit, Page, GridToolbar, ForeignKey);\n gridModel = __assign({}, gridModel, allProperty);\n gridModel.toolbar = gridModel.toolbar.concat(toolbarCollection);\n var gridObj = new Grid(gridModel);\n var divElement = this.createDivElement('e-dependent-div', ganttObj.element.id + '' + itemName + 'TabContainer');\n gridObj.appendTo(divElement);\n return divElement;\n };\n DialogEdit.prototype.gridActionBegin = function (args) {\n var _this = this;\n var itemName = 'Dependency';\n var gridModel = this.beforeOpenArgs[itemName];\n if (args.requestType === 'add' || args.requestType === 'beginEdit') {\n var isEdit_1 = args.requestType === 'add' ? false : true;\n this.idCollection = extend([], [], this.preTableCollection, true);\n var gridData_1 = gridModel.dataSource;\n var _loop_2 = function (i) {\n // eslint-disable-next-line\n this_2.idCollection.forEach(function (data, index) {\n if (data.id === getValue('id', gridData_1[i])) {\n var selectedItem = getValue('rowData', args);\n if (isEdit_1 && getValue('id', selectedItem) === data.id) {\n return;\n }\n _this.idCollection.splice(_this.idCollection.indexOf(data), 1);\n }\n });\n };\n var this_2 = this;\n for (var i = 0; i <= gridData_1.length; i++) {\n _loop_2(i);\n }\n }\n };\n DialogEdit.prototype.updateResourceCollection = function (args, resourceTreeGridId) {\n if (!isNullOrUndefined(args.data) && Object.keys(args.data).length) {\n var ganttObj = this.parent;\n var treeGridId = document.querySelector('#' + resourceTreeGridId);\n var resourceTreeGrid = treeGridId.ej2_instances[0];\n if (!isNullOrUndefined(resourceTreeGrid) && resourceTreeGrid.getSelectedRecords().length > 0) {\n var tempRecords = resourceTreeGrid.getSelectedRecords();\n var index = void 0;\n var selectedItems = [];\n for (index = 0; index < tempRecords.length; index++) {\n selectedItems.push(tempRecords[index].taskData);\n }\n this.ganttResources = extend([], selectedItems);\n }\n else {\n this.ganttResources = [];\n }\n }\n else {\n this.ganttResources = [];\n }\n };\n DialogEdit.prototype.renderResourceTab = function (itemName) {\n var _this = this;\n var ganttObj = this.parent;\n var resourceSettings = ganttObj.resourceFields;\n var ganttData = this.beforeOpenArgs.rowData;\n if (((this.beforeOpenArgs.requestType === 'beforeOpenEditDialog' && !isNullOrUndefined(this.editedRecord[this.parent.taskFields.resourceInfo])) || (this.beforeOpenArgs.requestType === 'beforeOpenAddDialog' && !isNullOrUndefined(this.editedRecord[this.parent.taskFields.resourceInfo]))) && (typeof (this.editedRecord[this.parent.taskFields.resourceInfo]) === \"object\")) {\n this.parent.setRecordValue('resourceInfo', this.parent.dataOperation.setResourceInfo(this.editedRecord), ganttData.ganttProperties, true);\n }\n var rowResource = ganttData.ganttProperties.resourceInfo;\n var inputModel = this.beforeOpenArgs[itemName];\n var resourceTreeGridId = ganttObj.element.id + '' + itemName + 'TabContainer';\n var resourceData = [];\n if (this.parent.viewType === 'ResourceView') {\n for (var i = 0; i < ganttObj.currentViewData.length; i++) {\n for (var j = 0; j < ganttObj.resources.length; j++) {\n if (ganttObj.currentViewData[i][ganttObj.taskFields.id] === ganttObj.resources[j][resourceSettings.id] &&\n (ganttObj.currentViewData[i].hasChildRecords || isNullOrUndefined(ganttObj.currentViewData[i].parentItem))) {\n resourceData.push(ganttObj.resources[j]);\n }\n }\n }\n }\n else {\n resourceData = extend([], [], ganttObj.resources, true);\n }\n this.parent.dataOperation.updateResourceUnit(resourceData);\n if (!isNullOrUndefined(rowResource)) {\n var count = void 0;\n var rowResourceLength = rowResource.length;\n var index = void 0;\n var resourceDataLength = resourceData.length;\n for (count = 0; count < rowResourceLength; count++) {\n for (index = 0; index < resourceDataLength; index++) {\n if (rowResource[count][resourceSettings.id] === resourceData[index][resourceSettings.id]) {\n resourceData[index][resourceSettings.unit] = rowResource[count][resourceSettings.unit];\n }\n }\n }\n }\n inputModel.dataSource = resourceData;\n var resourceInfo = ganttData.ganttProperties.resourceInfo;\n if (this.isEdit && !isNullOrUndefined(resourceInfo)) {\n for (var i = 0; i < resourceInfo.length; i++) {\n this.ganttResources.push(resourceInfo[i]);\n }\n }\n else if (!this.isEdit && !isNullOrUndefined(resourceInfo)) {\n for (var i = 0; i < resourceInfo.length; i++) {\n this.ganttResources.push(resourceInfo[i]);\n }\n }\n else if (!this.isEdit && !isNullOrUndefined(resourceInfo)) {\n for (var i = 0; i < resourceInfo.length; i++) {\n this.ganttResources.push(resourceInfo[i]);\n }\n }\n inputModel.rowSelected = function (args) {\n _this.updateResourceCollection(args, resourceTreeGridId);\n };\n inputModel.rowDeselected = function (args) {\n _this.updateResourceCollection(args, resourceTreeGridId);\n };\n var divElement = this.createDivElement('e-resource-div', resourceTreeGridId);\n var tabIndex = this.getDialogTabIndex('Resources');\n var dialogField;\n if (!this.isEdit) {\n dialogField = this.parent.addDialogFields[tabIndex];\n }\n else if (this.isEdit) {\n dialogField = this.parent.editDialogFields[tabIndex];\n }\n var allProperty;\n var columnCollection = [];\n if (!isNullOrUndefined(dialogField) && !isNullOrUndefined(dialogField.additionalParams)) {\n allProperty = (dialogField.additionalParams);\n for (var i in allProperty) {\n switch (i) {\n case \"allowFiltering\":\n TreeGrid.Inject(TreeGridFilter);\n break;\n case \"allowSorting\":\n TreeGrid.Inject(TreeGridSort);\n break;\n case \"allowPaging\":\n TreeGrid.Inject(TreeGridPage);\n break;\n case \"editSettings\":\n TreeGrid.Inject(TreeGridEdit);\n break;\n case \"aggregates\":\n TreeGrid.Inject(TreeGridAggregate);\n break;\n case \"showColumnChooser\":\n TreeGrid.Inject(TreeGridAggregate);\n break;\n case \"showColumnMenu\":\n TreeGrid.Inject(ColumnMenu);\n break;\n case \"contextMenuItems\":\n TreeGrid.Inject(ContextMenu);\n break;\n case \"allowResizing\":\n TreeGrid.Inject(TreeGridResize);\n break;\n case \"allowReordering\":\n TreeGrid.Inject(TreeGridReorder);\n break;\n case \"detailTemplate\":\n TreeGrid.Inject(DetailRow);\n break;\n case \"allowRowDragAndDrop\":\n TreeGrid.Inject(TreeGridRowDD);\n break;\n case \"searchSettings\":\n TreeGrid.Inject(Search);\n break;\n case \"selectionSettings\":\n TreeGrid.Inject(TreeGridSelection);\n break;\n case \"toolbar\":\n var toolbars = allProperty[\"toolbar\"];\n toolbars.map(function (item) {\n switch (item) {\n case \"Search\":\n TreeGrid.Inject(Search);\n break;\n case \"Print\":\n TreeGrid.Inject(Print);\n break;\n case \"PdfExport\":\n TreeGrid.Inject(PdfExport);\n break;\n case \"ExcelExport\":\n TreeGrid.Inject(ExcelExport);\n break;\n default:\n break;\n }\n });\n if (!isNullOrUndefined(toolbars)) {\n inputModel.toolbar = [];\n inputModel.toolbar = inputModel.toolbar.concat(toolbars);\n }\n TreeGrid.Inject(TreeGridToolbar);\n break;\n case \"enableVirtualization\":\n TreeGrid.Inject(VirtualScroll);\n break;\n case \"columns\":\n columnCollection = inputModel.columns;\n break;\n default:\n break;\n }\n }\n }\n TreeGrid.Inject(TreeGridSelection, TreeGridFilter, TreeGridEdit, VirtualScroll, TreeGridToolbar);\n inputModel = __assign({}, inputModel, allProperty);\n inputModel.columns = columnCollection.concat(inputModel.columns);\n var treeGridObj = new TreeGrid(inputModel);\n var resourceColumn = this.parent.columnByField[this.parent.taskFields.resourceInfo];\n if (resourceColumn.allowEditing === false || resourceColumn.isPrimaryKey || this.parent.readOnly) {\n treeGridObj.allowSelection = false;\n treeGridObj.allowFiltering = false;\n treeGridObj.editSettings.allowEditing = false;\n }\n treeGridObj.dataBound = function () {\n if (_this.parent.editDialogFields.length >= 1 && _this.parent.editDialogFields[0].type === 'Resources') {\n var id = _this.parent.element.id + 'ResourcesTabContainer';\n _this.resourceSelection(id);\n }\n };\n treeGridObj.appendTo(divElement);\n return divElement;\n };\n DialogEdit.prototype.resourceSelection = function (id) {\n var _this = this;\n var resourceTreeGrid = document.querySelector('#' + id).ej2_instances[0];\n var currentViewData = resourceTreeGrid.getCurrentViewRecords();\n var resources = this.ganttResources;\n if (resources && resources.length > 0) {\n currentViewData.forEach(function (data, index) {\n for (var i = 0; i < resources.length; i++) {\n if (data.taskData[_this.parent.resourceFields.id] === resources[i][_this.parent.resourceFields.id] &&\n !isNullOrUndefined(resourceTreeGrid.selectionModule) &&\n resourceTreeGrid.getSelectedRowIndexes().indexOf(index) === -1) {\n resourceTreeGrid.selectRow(index);\n }\n }\n });\n }\n };\n DialogEdit.prototype.renderCustomTab = function (itemName) {\n return this.renderGeneralTab(itemName);\n };\n DialogEdit.prototype.renderNotesTab = function (itemName) {\n var ganttObj = this.parent;\n var inputModel = this.beforeOpenArgs[itemName];\n inputModel.enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n var ganttProp = this.editedRecord.ganttProperties;\n var divElement = this.createDivElement('', ganttObj.element.id + '' + itemName + 'TabContainer');\n var tabIndex = this.getDialogTabIndex('Notes');\n var dialogField;\n var toolbarCollection = [];\n if (!this.isEdit) {\n dialogField = this.parent.addDialogFields[tabIndex];\n }\n else if (this.isEdit) {\n dialogField = this.parent.editDialogFields[tabIndex];\n }\n var allProperty;\n if (!isNullOrUndefined(dialogField) && !isNullOrUndefined(dialogField.additionalParams)) {\n allProperty = dialogField.additionalParams;\n for (var i in allProperty) {\n switch (i) {\n case \"toolbarSettings\":\n for (var key in allProperty[\"toolbarSettings\"].items) {\n switch (key) {\n case \"Image\":\n RichTextEditor.Inject(Image);\n break;\n case \"CreateTable\":\n RichTextEditor.Inject(Table);\n break;\n case \"EmojiPicker\":\n RichTextEditor.Inject(EmojiPicker);\n break;\n case \"FileManager\":\n RichTextEditor.Inject(FileManager);\n break;\n case \"FormatPainter\":\n RichTextEditor.Inject(FormatPainter);\n break;\n default:\n break;\n }\n }\n if (!isNullOrUndefined(allProperty[\"toolbarSettings\"].items)) {\n toolbarCollection = inputModel.toolbarSettings.items;\n }\n RichTextEditor.Inject(RTEToolbar);\n break;\n case \"editorMode\":\n RichTextEditor.Inject(MarkdownEditor);\n break;\n default:\n break;\n }\n }\n }\n RichTextEditor.Inject(RTEToolbar, Link, HtmlEditor, QuickToolbar, Count, Table);\n inputModel.value = ganttProp.notes;\n var notesColumn = this.parent.columnByField[this.parent.taskFields.notes];\n if (notesColumn.allowEditing === false || notesColumn.isPrimaryKey || this.parent.readOnly) {\n inputModel.enabled = false;\n }\n inputModel = __assign({}, inputModel, allProperty);\n inputModel.toolbarSettings.items = toolbarCollection.concat(inputModel.toolbarSettings.items);\n var rteObj = new RichTextEditor(inputModel);\n rteObj.appendTo(divElement);\n return divElement;\n };\n DialogEdit.prototype.renderInputElements = function (inputModel, column) {\n var _this = this;\n var ganttId = this.parent.element.id;\n var ganttData = this.editedRecord;\n var divElement = this.createDivElement('e-edit-form-column');\n var inputElement;\n var editArgs = { column: column, data: ganttData };\n if (!isNullOrUndefined(column.edit) && isNullOrUndefined(column.edit.params)) {\n var create = column.edit.create;\n if (typeof create === 'string') {\n create = getObject(create, window);\n inputElement = create(editArgs);\n }\n else {\n inputElement = column.edit.create(editArgs);\n }\n inputElement.className = '';\n inputElement.setAttribute('type', 'text');\n inputElement.setAttribute('id', ganttId + '' + column.field);\n inputElement.setAttribute('name', column.field);\n inputElement.setAttribute('title', column.field);\n divElement.appendChild(inputElement);\n }\n else {\n inputElement = this.createInputElement('', ganttId + '' + column.field, column.field);\n divElement.appendChild(inputElement);\n }\n inputModel.enabled = !isNullOrUndefined(inputModel.enabled) ? inputModel.enabled : !this.isCheckIsDisabled(column);\n if (column.field === this.parent.taskFields.duration) {\n if (!isNullOrUndefined(column.valueAccessor)) {\n if (typeof column.valueAccessor === 'string') {\n var valueAccessor = getObject(column.valueAccessor, window);\n inputModel.value = valueAccessor(column.field, ganttData, column);\n }\n else {\n inputModel.value = column.valueAccessor(column.field, ganttData, column);\n }\n }\n else if (isNullOrUndefined(column.edit)) {\n var ganttProp = ganttData.ganttProperties;\n inputModel.value = this.parent.dataOperation.getDurationString(ganttProp.duration, ganttProp.durationUnit);\n }\n }\n else {\n if (column.editType === 'booleanedit') {\n if (ganttData[column.field] === true) {\n inputModel.checked = true;\n }\n else {\n inputModel.checked = false;\n }\n }\n else {\n if (!this.parent.taskFields[column.field] && column.editType == 'numericedit' && (ganttData[column.field] === \"\" || ganttData[column.field] === 0)) {\n inputModel.value = 0;\n }\n else {\n inputModel.value = ganttData[column.field];\n }\n }\n }\n if (!isNullOrUndefined(column.edit) && isNullOrUndefined(column.edit.params)) {\n var write = column.edit.write;\n var inputObj = void 0;\n if (typeof write === 'string') {\n write = getObject(write, window);\n inputObj = write({\n column: column, rowData: ganttData, element: inputElement\n });\n }\n else {\n inputObj = column.edit.write({\n column: column, rowData: ganttData, element: inputElement\n });\n }\n if (column.field === this.parent.taskFields.duration) {\n inputObj.change = function (args) {\n _this.validateScheduleFields(args, column, _this.parent);\n };\n }\n }\n else {\n var inputObj = new this.inputs[column.editType](inputModel);\n inputObj.appendTo(inputElement);\n }\n return divElement;\n };\n DialogEdit.prototype.taskNameCollection = function () {\n var flatData = this.parent.flatData;\n this.preTaskIds = [];\n this.preTableCollection = [];\n for (var i = 0; i < flatData.length; i++) {\n var data = flatData[i];\n if (this.parent.allowParentDependency) {\n var currentFlatData = data;\n if (data.parentUniqueID === this.beforeOpenArgs.rowData['uniqueID']) {\n this.isValidData = false;\n }\n else {\n do {\n if (currentFlatData.parentItem) {\n currentFlatData = this.parent.flatData[this.parent.ids.indexOf(currentFlatData.parentItem.taskId)];\n if (currentFlatData.uniqueID === this.beforeOpenArgs.rowData['uniqueID']) {\n this.isValidData = false;\n break;\n }\n }\n } while (currentFlatData.parentItem);\n }\n if (data.hasChildRecords && this.isValidData) {\n this.isValidData = this.isParentValid(data.childRecords);\n }\n if (!this.isValidData) {\n this.isValidData = true;\n continue;\n }\n }\n else {\n if (data.hasChildRecords) {\n continue;\n }\n }\n var taskId = this.parent.viewType === 'ResourceView' ? data.ganttProperties.taskId.toString()\n : data.ganttProperties.rowUniqueID.toString();\n var tempObject = {\n id: taskId,\n text: (taskId + '-' + data.ganttProperties.taskName),\n value: taskId\n };\n this.preTaskIds.push(tempObject.id);\n this.preTableCollection.push(tempObject);\n }\n };\n DialogEdit.prototype.predecessorEditCollection = function (ganttData) {\n var preDataCollection = [];\n var ganttProp = ganttData.ganttProperties;\n if (this.isEdit && !isNullOrUndefined(this.parent.taskFields.dependency) && !isNullOrUndefined(ganttData) &&\n !isNullOrUndefined(ganttProp.predecessor)) {\n var predecessor = ganttProp.predecessor;\n var idCollection = this.preTableCollection;\n for (var i = 0; i < predecessor.length; i++) {\n var from = predecessor[i].from.toString();\n var preData = {};\n var taskID = this.parent.viewType === 'ResourceView' ? ganttProp.taskId : ganttProp.rowUniqueID;\n if (taskID.toString() !== from) {\n preData.id = from;\n for (var index = 0; index < idCollection.length; index++) {\n if (idCollection[index].value === from) {\n preData.name = idCollection[index].text;\n break;\n }\n }\n preData.type = predecessor[i].type;\n var offset = predecessor[i].offset;\n var offsetUnit = predecessor[i].offsetUnit;\n preData.offset = this.parent.dataOperation.getDurationString(offset, offsetUnit);\n preData.uniqueId = getUid();\n preDataCollection.push(preData);\n }\n }\n }\n return preDataCollection;\n };\n DialogEdit.prototype.updatePredecessorDropDownData = function (ganttData) {\n var index = -1;\n var id = this.parent.viewType === 'ResourceView' ? ganttData.ganttProperties.taskId.toString()\n : ganttData.ganttProperties.rowUniqueID.toString();\n index = this.preTaskIds.indexOf(id);\n this.preTableCollection.splice(index, 1);\n this.preTaskIds.splice(index, 1);\n this.validSuccessorTasks(ganttData, this.preTaskIds, this.preTableCollection);\n };\n DialogEdit.prototype.validSuccessorTasks = function (data, ids, idCollection) {\n var _this = this;\n var ganttProp = data.ganttProperties;\n if (ganttProp.predecessor && ganttProp.predecessor.length > 0) {\n var predecessor = ganttProp.predecessor;\n var fromId_1 = this.parent.viewType === 'ResourceView' ? ganttProp.taskId.toString() : ganttProp.rowUniqueID.toString();\n predecessor.forEach(function (item) {\n if (item.from.toString() === fromId_1) {\n var toId = item.to;\n var idIndex = -1;\n idIndex = ids.indexOf(toId);\n if (idIndex > -1) {\n ids.splice(idIndex, 1);\n idCollection.splice(idIndex, 1);\n }\n var ganttData = _this.parent.connectorLineModule.getRecordByID(toId);\n _this.validSuccessorTasks(ganttData, ids, idCollection);\n }\n });\n }\n };\n DialogEdit.prototype.getPredecessorType = function () {\n var typeText = [this.parent.getPredecessorTextValue('SS'), this.parent.getPredecessorTextValue('SF'),\n this.parent.getPredecessorTextValue('FS'), this.parent.getPredecessorTextValue('FF')];\n var types = [\n { id: 'FS', text: typeText[2], value: typeText[2] },\n { id: 'FF', text: typeText[3], value: typeText[3] },\n { id: 'SS', text: typeText[0], value: typeText[0] },\n { id: 'SF', text: typeText[1], value: typeText[1] }\n ];\n return types;\n };\n DialogEdit.prototype.initiateDialogSave = function () {\n if (this.isEdit) {\n this.parent.initiateEditAction(true);\n }\n else {\n this.addedRecord = {};\n }\n if (this.parent.undoRedoModule && this.parent['isUndoRedoItemPresent']('Edit')) {\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['disableRedo']();\n }\n if (this.isEdit) {\n this.parent.undoRedoModule['createUndoCollection']();\n var action = {};\n action['action'] = 'DialogEdit';\n action['modifiedRecords'] = [];\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = action;\n if (this.parent.viewType == 'ResourceView') {\n var isValid = false;\n if (!this.rowData.ganttProperties.resourceInfo) {\n if (this.ganttResources.length > 0) {\n isValid = true;\n }\n }\n else if (this.ganttResources.length != this.rowData.ganttProperties.resourceInfo.length) {\n isValid = true;\n }\n else {\n for (var i = 0; i < this.rowData.ganttProperties.resourceInfo.length; i++) {\n if (this.ganttResources[i][this.parent.resourceFields.id] !== this.rowData.ganttProperties.resourceInfo[i][this.parent.resourceFields.id]) {\n isValid = true;\n break;\n }\n }\n }\n if (isValid) {\n var indexes = {};\n indexes['deletedIndexes'] = [];\n var id_1 = 'T' + this.rowData.ganttProperties.taskId;\n var rowItems_1 = [];\n this.parent.taskIds.reduce(function (a, e, i) {\n if (e === id_1) {\n if (this.ganttResources.length == 0) {\n rowItems_1.push(this.parent.flatData[i]);\n }\n else {\n var parent_1 = this.parent.getTaskByUniqueID(this.parent.flatData[i].parentUniqueID);\n for (var j = 0; j < this.ganttResources.length; j++) {\n if (parent_1.ganttProperties.taskId != this.ganttResources[j][this.parent.resourceFields.id] && rowItems_1.indexOf(this.parent.flatData[i]) == -1) {\n rowItems_1.push(this.parent.flatData[i]);\n }\n }\n }\n }\n }.bind(this), []);\n this.parent.undoRedoModule['findPosition'](extend([], [], rowItems_1, true), indexes, 'deletedIndexes');\n if (this['indexes']) {\n this['indexes']['deletedIndexes'][this['indexes']['deletedIndexes'].length] = indexes['deletedIndexes'][0];\n }\n else {\n this['indexes'] = indexes;\n }\n }\n }\n }\n }\n var ganttObj = this.parent;\n var tabModel = this.beforeOpenArgs.tabModel;\n var items = tabModel.items;\n for (var i = 0; i < items.length; i++) {\n var element = items[i].content;\n var id = element.id;\n if (!isNullOrUndefined(id) || id !== '') {\n id = id.replace(ganttObj.element.id, '');\n id = id.replace('TabContainer', '');\n if (id === 'General') {\n this.updateGeneralTab(element, false);\n }\n else if (id === 'Dependency') {\n this.updatePredecessorTab(element);\n }\n else if (id === 'Notes') {\n this.updateNotesTab(element);\n }\n else if (id === 'Resources') {\n this.updateResourceTab(element);\n }\n else if (id.indexOf('Custom') !== -1) {\n this.updateCustomTab(element);\n }\n else if (id === 'Segments') {\n if (this.beforeOpenArgs['Segments']['dataSource'].length > 0) {\n this.updateSegmentsData(element, this.beforeOpenArgs.rowData);\n }\n }\n }\n }\n if (!this.disableUndo && this.parent.undoRedoModule) {\n this.parent.undoRedoModule['getUndoCollection'].splice(this.parent.undoRedoModule['getUndoCollection'].length - 1, 1);\n if (this.parent.toolbarModule && this.parent.undoRedoModule['getUndoCollection'].length == 0) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_undo'], false);\n }\n this.parent['totalUndoAction']--;\n }\n if (this.isEdit) {\n /**\n * If any update on edited task do it here\n */\n this.parent.editModule['editedRecord'] = this.rowData;\n this.parent.dataOperation.updateWidthLeft(this.rowData);\n var editArgs = {\n data: this.rowData,\n action: 'DialogEditing'\n };\n this.parent.editModule.initiateUpdateAction(editArgs);\n }\n else {\n this.parent.editModule['editedRecord'] = this.addedRecord;\n if (this.parent.viewType === 'ResourceView') {\n var newRecords = extend({}, this.addedRecord, true);\n if (newRecords[this.parent.taskFields.resourceInfo].length) {\n for (var i = 0; i < newRecords[this.parent.taskFields.resourceInfo].length; i++) {\n var id = newRecords[this.parent.taskFields.resourceInfo][i].toString();\n var parentRecordIndex = this.parent.getTaskIds().indexOf('R' + id.toString());\n if (parentRecordIndex !== -1) {\n this.parent.editModule.addRecord(this.addedRecord, 'Child', parentRecordIndex);\n break;\n }\n }\n }\n else {\n this.parent.editModule.addRecord(this.addedRecord, 'Bottom');\n }\n }\n else {\n this.parent.editModule.addRecord(this.addedRecord, this.parent.editSettings.newRowPosition, this.parent.selectedRowIndex);\n }\n }\n return true;\n };\n DialogEdit.prototype.updateSegmentTaskData = function (dataSource, data) {\n var taskSettings = this.parent.taskFields;\n if (!this.isEdit) {\n this.addedRecord[taskSettings.segments] = dataSource;\n }\n else {\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.segments, dataSource, this.rowData);\n this.parent.setRecordValue('segments', this.parent.dataOperation.setSegmentsInfo(this.rowData, true), this.rowData.ganttProperties, true);\n this.parent.setRecordValue('segments', this.parent.dataOperation.setSegmentsInfo(this.rowData, false), this.rowData.ganttProperties, true);\n if (dataSource.length <= 0) {\n this.validateDuration(this.rowData);\n }\n }\n };\n // eslint-disable-next-line\n DialogEdit.prototype.updateSegmentsData = function (segmentForm, data) {\n var gridObj = segmentForm.ej2_instances[0];\n var isEdit = gridObj.isEdit;\n var dataSource;\n if (gridObj.isEdit) {\n gridObj.endEdit();\n }\n if (isEdit && gridObj.currentViewData.length != gridObj.dataSource['length']) {\n dataSource = gridObj.dataSource;\n }\n else {\n dataSource = gridObj.currentViewData;\n }\n this.updateSegmentTaskData(dataSource, data);\n };\n DialogEdit.prototype.updateGeneralTab = function (generalForm, isCustom) {\n var ganttObj = this.parent;\n var childNodes = generalForm.childNodes;\n var tasksData = {};\n if (!this.isEdit) {\n tasksData = this.addedRecord;\n }\n for (var i = 0; i < childNodes.length; i++) {\n var div = childNodes[i];\n var inputElement = div.querySelector('input[id^=\"' + ganttObj.element.id + '\"]') || div.querySelector('textarea[id^=\"' + ganttObj.element.id + '\"]');\n if (inputElement) {\n var fieldName = inputElement.id.replace(ganttObj.element.id, '');\n var controlObj = div.querySelector('#' + ganttObj.element.id + fieldName).ej2_instances[0];\n if (this.parent.columnByField[this.parent.taskFields.id].editType === \"stringedit\" && fieldName === this.parent.taskFields.id) {\n var valueString = controlObj.value.toString();\n controlObj.value = valueString;\n }\n var column = ganttObj.columnByField[fieldName];\n if (fieldName === this.parent.taskFields.duration ?\n parseInt(this.rowData[fieldName]) !== parseInt(controlObj.value) :\n this.rowData[fieldName] !== controlObj.value) {\n this.disableUndo = true;\n }\n if (!isNullOrUndefined(column.edit) && isNullOrUndefined(column.edit.params)) {\n var read = column.edit.read;\n if (typeof read === 'string') {\n read = getObject(read, window);\n tasksData[fieldName] = read(inputElement, controlObj.value);\n }\n else {\n tasksData[fieldName] = column.edit.read(inputElement, controlObj.value);\n }\n }\n else if (column.editType === 'booleanedit') {\n if (inputElement instanceof HTMLInputElement && inputElement.checked === true) {\n tasksData[fieldName] = true;\n }\n else {\n tasksData[fieldName] = false;\n }\n }\n else {\n if (fieldName === this.parent.taskFields.duration) {\n var numericValue = parseFloat(String(controlObj.value));\n tasksData[fieldName] = numericValue;\n }\n else {\n tasksData[fieldName] = controlObj.value;\n }\n if (this.parent.enableHtmlSanitizer && typeof (controlObj.value) === 'string') {\n controlObj.value = SanitizeHtmlHelper.sanitize(controlObj.value);\n tasksData[fieldName] = controlObj.value;\n }\n }\n }\n }\n if (this.isEdit) {\n if (!isCustom) {\n this.updateScheduleProperties(this.editedRecord, this.rowData);\n }\n ganttObj.editModule.validateUpdateValues(tasksData, this.rowData, true);\n }\n };\n DialogEdit.prototype.updateScheduleProperties = function (fromRecord, toRecord) {\n this.parent.setRecordValue('startDate', fromRecord.ganttProperties.startDate, toRecord.ganttProperties, true);\n this.parent.setRecordValue('endDate', fromRecord.ganttProperties.endDate, toRecord.ganttProperties, true);\n this.parent.setRecordValue('duration', fromRecord.ganttProperties.duration, toRecord.ganttProperties, true);\n this.parent.setRecordValue('durationUnit', fromRecord.ganttProperties.durationUnit, toRecord.ganttProperties, true);\n this.parent.setRecordValue('work', fromRecord.ganttProperties.work, toRecord.ganttProperties, true);\n this.parent.setRecordValue('type', fromRecord.ganttProperties.taskType, toRecord.ganttProperties, true);\n this.parent.setRecordValue('resourceNames', fromRecord.ganttProperties.resourceNames, toRecord.ganttProperties, true);\n this.parent.setRecordValue('resourceInfo', fromRecord.ganttProperties.resourceInfo, toRecord.ganttProperties, true);\n if (!isNullOrUndefined(this.parent.taskFields.startDate)) {\n this.parent.dataOperation.updateMappingData(toRecord, this.parent.taskFields.startDate);\n }\n if (!isNullOrUndefined(this.parent.taskFields.endDate)) {\n this.parent.dataOperation.updateMappingData(toRecord, this.parent.taskFields.endDate);\n }\n if (!isNullOrUndefined(this.parent.taskFields.duration)) {\n this.parent.dataOperation.updateMappingData(toRecord, this.parent.taskFields.duration);\n this.parent.setRecordValue('durationUnit', fromRecord.ganttProperties.durationUnit, this.rowData, true);\n if (this.rowData.ganttProperties.duration === 0) {\n this.parent.setRecordValue('isMilestone', true, toRecord.ganttProperties, true);\n }\n else {\n this.parent.setRecordValue('isMilestone', false, this.rowData.ganttProperties, true);\n }\n }\n if (!isNullOrUndefined(this.parent.taskFields.work)) {\n this.parent.dataOperation.updateMappingData(this.rowData, this.parent.taskFields.work);\n }\n if (!isNullOrUndefined(this.parent.taskFields.manual)) {\n this.parent.dataOperation.updateMappingData(this.rowData, this.parent.taskFields.manual);\n }\n if (!isNullOrUndefined(this.parent.taskFields.type)) {\n this.parent.dataOperation.updateMappingData(this.rowData, \"type\");\n }\n if (!isNullOrUndefined(this.parent.taskFields.resourceInfo)) {\n this.parent.dataOperation.updateMappingData(this.rowData, \"resourceInfo\");\n }\n };\n DialogEdit.prototype.updatePredecessorTab = function (preElement) {\n var gridObj = preElement.ej2_instances[0];\n if (gridObj.isEdit) {\n gridObj.endEdit();\n }\n var dataSource = gridObj.dataSource;\n var predecessorName = [];\n var newValues = [];\n var predecessorString = '';\n var ids = [];\n var parentRecord = [];\n for (var i = 0; i < dataSource.length; i++) {\n var preData = dataSource[i];\n if (ids.indexOf(preData.id) === -1) {\n if (this.parent.viewType == 'ProjectView') {\n var currentRecord = this.parent.flatData[(this.parent.ids.indexOf(preData.id))];\n if (currentRecord.hasChildRecords && parentRecord.indexOf(currentRecord) == -1) {\n parentRecord.push(currentRecord);\n }\n }\n var name_1 = preData.id + preData.type;\n if (preData.offset && preData.offset.indexOf('-') !== -1) {\n name_1 += preData.offset;\n }\n else {\n name_1 += ('+' + preData.offset);\n }\n predecessorName.push(name_1);\n ids.push(preData.id);\n }\n }\n if (this.isEdit) {\n if (predecessorName.length > 0) {\n newValues = this.parent.predecessorModule.calculatePredecessor(predecessorName.join(','), this.rowData);\n this.parent.setRecordValue('predecessor', newValues, this.rowData.ganttProperties, true);\n predecessorString = this.parent.predecessorModule.getPredecessorStringValue(this.rowData);\n }\n else {\n newValues = [];\n this.parent.setRecordValue('predecessor', newValues, this.rowData.ganttProperties, true);\n predecessorString = '';\n }\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['getUndoCollection'].length > 0) {\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1]['connectedRecords'] = parentRecord;\n if (!this.disableUndo && this.rowData.ganttProperties.predecessorsName != predecessorString && (!isNullOrUndefined(this.rowData.ganttProperties.predecessorsName) || predecessorString !== \"\")) {\n this.disableUndo = true;\n }\n }\n this.parent.setRecordValue('predecessorsName', predecessorString, this.rowData.ganttProperties, true);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.dependency, predecessorString, this.rowData);\n this.parent.setRecordValue(this.parent.taskFields.dependency, predecessorString, this.rowData);\n this.parent.predecessorModule.updateUnscheduledDependency(this.rowData);\n }\n else {\n this.addedRecord[this.parent.taskFields.dependency] = predecessorName.length > 0 ? predecessorName.join(',') : '';\n }\n };\n DialogEdit.prototype.updateResourceTab = function (resourceElement) {\n var treeGridObj = resourceElement.ej2_instances[0];\n if (treeGridObj) {\n treeGridObj.grid.endEdit();\n }\n var selectedItems = this.ganttResources;\n if (this.parent.viewType === 'ResourceView' && !isNullOrUndefined(this.rowData.ganttProperties)) {\n if (JSON.stringify(this.ganttResources) !== JSON.stringify(this.rowData.ganttProperties.resourceInfo)) {\n this.isResourceUpdate = true;\n this.previousResource = !isNullOrUndefined(this.rowData.ganttProperties.resourceInfo) ? this.rowData.ganttProperties.resourceInfo.slice() : [];\n }\n else {\n this.isResourceUpdate = false;\n }\n }\n var idArray = [];\n if (this.isEdit) {\n if ((this.rowData.ganttProperties.resourceInfo && selectedItems.length != this.rowData.ganttProperties.resourceInfo.length) || (isNullOrUndefined(this.rowData.ganttProperties.resourceInfo) && selectedItems.length > 0)) {\n this.disableUndo = true;\n }\n if (!this.disableUndo) {\n for (var i = 0; i < selectedItems.length; i++) {\n if (JSON.stringify(selectedItems[i]) != JSON.stringify(this.rowData.ganttProperties.resourceInfo[i])) {\n this.disableUndo = true;\n break;\n }\n }\n }\n this.parent.setRecordValue('resourceInfo', selectedItems, this.editedRecord.ganttProperties, true);\n this.parent.dataOperation.updateMappingData(this.editedRecord, 'resourceInfo');\n this.parent.editModule.updateResourceRelatedFields(this.editedRecord, 'resource');\n this.validateDuration(this.editedRecord);\n this.updateScheduleProperties(this.editedRecord, this.rowData);\n }\n else {\n for (var i = 0; i < selectedItems.length; i++) {\n idArray.push(selectedItems[i][this.parent.resourceFields.id]);\n this.isAddNewResource = true;\n }\n this.addedRecord[this.parent.taskFields.resourceInfo] = idArray;\n }\n };\n DialogEdit.prototype.updateNotesTab = function (notesElement) {\n var ganttObj = this.parent;\n var rte = notesElement.ej2_instances[0];\n if (this.isEdit) {\n if (ganttObj.columnByField[ganttObj.taskFields.notes].disableHtmlEncode === false) {\n if (this.rowData.ganttProperties.notes != rte.getHtml() && (this.rowData.ganttProperties.notes != null || rte.getHtml() != \"


      \") && !this.disableUndo) {\n this.disableUndo = true;\n }\n this.parent.setRecordValue('notes', rte.getHtml(), this.rowData.ganttProperties, true);\n }\n else {\n if (this.rowData.ganttProperties.notes != rte.getText() && (this.rowData.ganttProperties.notes != null || rte.getText() != \"\") && !this.disableUndo) {\n this.disableUndo = true;\n }\n if (rte.getHtml().includes('href')) {\n this.parent.setRecordValue('notes', rte.getHtml(), this.rowData.ganttProperties, true);\n }\n else {\n this.parent.setRecordValue('notes', rte.getText(), this.rowData.ganttProperties, true);\n }\n }\n ganttObj.dataOperation.updateMappingData(this.rowData, 'notes');\n }\n else {\n this.addedRecord[this.parent.taskFields.notes] = rte.getHtml();\n }\n };\n DialogEdit.prototype.updateCustomTab = function (customElement) {\n this.updateGeneralTab(customElement, true);\n };\n return DialogEdit;\n}());\nexport { DialogEdit };\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { isCollide, Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate, JsonAdaptor } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.preventSetCurrentData = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n if (!_this.enableVirtualization) {\n _this.loadTemplate();\n }\n }\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n }\n }\n });\n };\n MultiSelect.prototype.updateVirtualReOrderList = function (isCheckBoxUpdate) {\n var query = this.getForQuery(this.value, true).clone();\n if (this.enableVirtualization && this.dataSource instanceof DataManager) {\n this.resetList(this.selectedListData, this.fields, query);\n }\n else {\n this.resetList(this.dataSource, this.fields, query);\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\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 this.popupWrapper.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 if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n if (isCheckBoxUpdate) {\n this.loadTemplate();\n }\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.enableVirtualization && this.list && this.mode === 'CheckBox') {\n var reOrderList = this.list.querySelectorAll('.e-reorder')[0];\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n }\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n this.isPreventScrollAction = true;\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n if (this.enableVirtualization) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n this.isKeyBoardAction = false;\n this.scrollBottom(focusedItem);\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n if (this.enableVirtualization) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n Search(value, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n if (((this.allowCustomValue || this.allowFiltering) && this.isPopupOpen() && this.closePopupOnSelect && !this.enableVirtualization) || this.closePopupOnSelect && !this.enableVirtualization) {\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'list' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem !== null) {\n this.removeSelectedChip(e);\n return;\n }\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n var customValue = this.allowObjectBinding ? this.getDataByValue(value) : this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck, isCheckbox) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n if (this.enableVirtualization && valuecheck) {\n if (isCheckbox) {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'equal', (value));\n }\n else {\n predicate = predicate.or(field, 'equal', (value));\n }\n }\n return new Query().where(predicate);\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'notequal', (value));\n }\n else {\n predicate = predicate.and(field, 'notequal', (value));\n }\n }\n return new Query().where(predicate);\n }\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n }\n if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\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 /* eslint-enable @typescript-eslint/no-unused-vars */\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 // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue && !this.enableVirtualization) {\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', proxy.value[i]) : proxy.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && !this.enableVirtualization) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.allowCustomValue && !this.isCustomRendered && this.inputElement.value && this.inputElement.value !== '') {\n var query = new Query();\n query = this.allowFiltering ? query.where(this.fields.text, 'startswith', this.inputElement.value, this.ignoreCase, this.ignoreAccent) : query;\n this.checkForCustomValue(query, this.fields);\n this.isCustomRendered = true;\n this.remoteCustomValue = this.enableVirtualization ? false : this.remoteCustomValue;\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n if (this.isCustomRendered) {\n return;\n }\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) : this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.enableVirtualization ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)').length : this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((!this.enableVirtualization && ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll))) || (this.enableVirtualization && this.mode === 'CheckBox' && this.showSelectAll && this.virtualSelectAll && this.value && this.value.length === this.totalItemCount)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll) && ((!this.enableVirtualization) || (this.enableVirtualization && !this.virtualSelectAll))) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox' && !this.isPopupOpen()) {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey && this.inputElement) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.filterAction) {\n if ((this.targetElement() !== null && !this.enableVirtualization) || (this.enableVirtualization && this.targetElement() !== null && this.targetElement().trim() !== '')) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else if ((this.enableVirtualization && this.targetElement() !== \"\") || !this.enableVirtualization) {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n return filterQuery;\n }\n else {\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.virtualFilterQuery = function (filterQuery) {\n var takeValue = this.getTakeValue();\n var isReOrder = true;\n var isSkip = true;\n var isTake = true;\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (this.getModuleName() === 'multiselect' && ((filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.condition == 'or') || (filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n isSkip = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n isTake = false;\n }\n }\n var queryTakeValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ? filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if ((this.allowFiltering && isSkip) || !isReOrder || (!this.allowFiltering && isSkip)) {\n if (!isReOrder) {\n filterQuery.skip(this.viewPortInfo.startIndex);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n return filterQuery;\n };\n MultiSelect.prototype.getTakeValue = function () {\n return this.allowFiltering && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.targetElement().trim() === '') {\n var list = this.enableVirtualization ? this.list.cloneNode(true) : this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n if (this.enableVirtualization) {\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 (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.UpdateSkeleton();\n if ((isNoData || this.allowCustomValue) && !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(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n if (this.enableVirtualization && this.allowFiltering) {\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.enableVirtualization && (isNoData || this.allowCustomValue) && !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.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\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 if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n var field = fields ? fields : this.fields;\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (customData && typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem_1 = {};\n setValue(field.text, value, dataItem_1);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number' && this.fields.value !== this.fields.text) {\n setValue(field.value, Math.random(), dataItem_1);\n }\n else {\n setValue(field.value, value, dataItem_1);\n }\n var emptyObject_1 = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : this.firstItem ? Object.keys(this.firstItem) : Object.keys(dataItem_1);\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject_1[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, dataItem_1) : null;\n });\n }\n dataItem_1 = this.allowObjectBinding ? emptyObject_1 : dataItem_1;\n if (this.enableVirtualization) {\n this.virtualCustomData = dataItem_1;\n var tempData = this.dataSource instanceof DataManager ? JSON.parse(JSON.stringify(this.listData)) : JSON.parse(JSON.stringify(this.dataSource));\n var totalData = [];\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n totalData = tempData.concat(this.virtualCustomSelectData);\n }\n tempData.splice(0, 0, dataItem_1);\n this.isCustomDataUpdated = true;\n var tempCount = this.totalItemCount;\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.resetList(tempData, field, query);\n this.isCustomDataUpdated = false;\n this.totalItemCount = this.enableVirtualization && this.dataSource instanceof DataManager ? tempCount : this.totalItemCount;\n }\n else {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem_1);\n this.resetList(tempData, field, query);\n }\n }\n else if (this.listData) {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n else if (this.listData && this.mainData && !dataChecks && this.allowCustomValue) {\n if (this.allowFiltering && this.isRemoteSelection && this.remoteCustomValue) {\n this.isRemoteSelection = false;\n if (!this.enableVirtualization) {\n this.resetList(this.listData, field, query);\n }\n }\n else if (!this.allowFiltering && this.list) {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n }\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n this.keyboardEvent = null;\n this.isKeyBoardAction = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: this.allowObjectBinding ? oldVal : oldVal,\n value: this.allowObjectBinding ? newVal : newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.pageUpSelection = function (steps, isVirtualKeyAction) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ? this.liCollections[steps] : this.liCollections[this.skeletonCount];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && !previousItem.classList.contains('e-item-focus')) {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n else if (this.viewPortInfo.startIndex == 0) {\n this.isKeyBoardAction = true;\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n this.previousFocusItem = previousItem;\n }\n else {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n };\n MultiSelect.prototype.pageDownSelection = function (steps, isVirtualKeyAction) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n if (this.enableVirtualization && this.skeletonCount > 0) {\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.previousFocusItem = previousItem;\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), false, this.keyboardEvent.keyCode);\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome, isVirtualKeyAction) {\n this.removeFocus();\n if (this.enableVirtualization) {\n if (isHome) {\n if (this.enableVirtualization && 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.value && this.viewPortInfo.endIndex !== this.totalItemCount) || (this.value && this.value.length > 0 && this.viewPortInfo.endIndex !== this.totalItemCount + this.value.length))) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n var query = new Query().clone();\n if (this.value && this.value.length > 0) {\n query = this.getForQuery(this.value).clone();\n query = query.skip(this.totalItemCount - this.itemCount);\n }\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n this.UpdateSkeleton();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n if (this.enableVirtualization && isHome) {\n element = scrollEle[this.skeletonCount];\n }\n this.removeFocus();\n element.classList.add(dropDownBaseClasses.focus);\n if (this.enableVirtualization && isHome) {\n this.scrollTop(element, undefined, this.keyboardEvent.keyCode);\n }\n else if (!isVirtualKeyAction) {\n this.scrollBottom(element, undefined, false, this.keyboardEvent.keyCode);\n }\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.updateSelectionList = function () {\n if (!isNullOrUndefined(this.value) && this.value.length) {\n for (var index = 0; index < this.value.length; index++) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n var selectedItem = this.getElementByValue(value);\n if (selectedItem && !selectedItem.classList.contains(dropDownBaseClasses.selected)) {\n selectedItem.classList.add('e-active');\n }\n }\n }\n };\n MultiSelect.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex;\n this.isKeyBoardAction = true;\n switch (e.keyCode) {\n case 40:\n this.arrowDown(e, true);\n break;\n case 38:\n this.arrowUp(e, true);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value')) - 1;\n this.pageUpSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 35:\n case 36:\n this.isMouseScrollAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false, true);\n this.isPreventScrollAction = true;\n break;\n }\n this.keyboardEvent = null;\n this.isScrollChanged = true;\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.preventSetCurrentData = false;\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.isMouseScrollAction = true;\n this.isKeyBoardAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPageCount() - 1);\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPageCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.isKeyBoardAction = true;\n this.arrowUp(e);\n break;\n case 40:\n this.isKeyBoardAction = true;\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n this.isKeyBoardAction = true;\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.isKeyBoardAction = true;\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.arrowDown = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.moveByList(1, isVirtualKeyAction);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') : false;\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1, isVirtualKeyAction);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (!isNullOrUndefined(li) || (selectAllParent && selectAllParent.classList.contains('e-item-focus'))) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n if (this.keyAction) {\n var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li_1.classList.remove('e-item-focus');\n }\n }\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n this.removeValue(this.value[this.value.length - 1], e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.allowObjectBinding) {\n temp = this.tempValues ? this.tempValues.slice() : [];\n }\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex, isInitialSelection, keyCode) {\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyCode === void 0) { keyCode = null; }\n if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) || (this.enableVirtualization && isNullOrUndefined(selectedLI))) {\n selectedLI = this.liCollections[this.skeletonCount];\n }\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 ? selectedLI.offsetTop + (this.virtualListInfo.startIndex * selectedLI.offsetHeight) : selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n var boxRange = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode == 34 ? this.getPageCount() - 1 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyCode != 35 && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n this.list.scrollTop += selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode == 35) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyCode == 34 && 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 };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex, keyCode) {\n if (keyCode === void 0) { keyCode = null; }\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? selectedLI.offsetTop + (this.virtualListInfo.startIndex * selectedLI.offsetHeight) : selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * 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 && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode == 33 ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyCode != 36 && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTop -= selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode == 36) {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyCode == 33 && 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 = selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n e.preventDefault();\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n var selectAllCheckBox = selectAllParent.childNodes[0];\n if (!selectAllCheckBox.classList.contains('e-check')) {\n selectAllCheckBox.classList.add('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(true, e, li);\n }\n else {\n selectAllCheckBox.classList.remove('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(false, e, li);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.enableVirtualization) {\n if (this.allowCustomValue && this.virtualCustomData && data == null && this.virtualCustomData && this.viewPortInfo && this.viewPortInfo.startIndex === 0 && this.viewPortInfo.endIndex === this.itemCount) {\n this.virtualCustomData = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.renderItems(this.mainData, this.fields);\n }\n else {\n this.onActionComplete(this.list, this.listData);\n }\n }\n else {\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n var currentChip = this.allowObjectBinding ? this.getDataByValue(selectedElem.getAttribute('data-value')) : selectedElem.getAttribute('data-value');\n this.removeValue(currentChip, e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n var filterInputClassName = targetElement.className;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if ((filterInputClassName === 'e-input-filter e-input' || filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n };\n MultiSelect.prototype.moveByList = function (position, isVirtualKeyAction) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (this.enableVirtualization && isVirtualKeyAction && !isNullOrUndefined(this.currentFocuedListElement)) {\n selectedElem = this.getElementByValue(this.getFormattedValue(this.currentFocuedListElement.getAttribute('data-value')));\n }\n var temp = -1;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (this.mode === 'CheckBox' && this.showSelectAll && position == 1 && !isNullOrUndefined(selectAllParent) && !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length == 0 && this.liCollections.length > 1) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (!selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position == -1)) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n if (this.enableVirtualization && isVirtualKeyAction) {\n this.addListFocus(elements[temp]);\n }\n else {\n if (this.enableVirtualization && elements[temp + 1].classList.contains('e-virtual-list')) {\n this.addListFocus(elements[this.skeletonCount]);\n }\n else {\n this.addListFocus(elements[++temp]);\n }\n }\n if (temp > -1) {\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n this.currentFocuedListElement = elements[temp];\n }\n }\n }\n else {\n if (temp > 0) {\n if (this.enableVirtualization) {\n var isVirtualElement = elements[temp - 1].classList.contains('e-virtual-list');\n var elementIndex = isVirtualKeyAction ? temp : temp - 1;\n if (isVirtualKeyAction || !isVirtualElement) {\n this.removeFocus();\n }\n if (isVirtualKeyAction || !isVirtualElement) {\n this.addListFocus(elements[elementIndex]);\n this.updateCheck(elements[elementIndex]);\n this.scrollTop(elements[elementIndex], temp);\n this.currentFocuedListElement = elements[elementIndex];\n }\n }\n else {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n }\n };\n MultiSelect.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 MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.allowObjectBinding ? this.getDataByValue(customVal) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n this.updateMainList(true, currentValue, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var element_1 = this.findListElement(this.list, 'li', 'data-value', currentValue);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n _this.virtualSelectAll = false;\n var removeVal = _this.value.slice(0);\n if (_this.enableVirtualization && isClearAll) {\n removeVal = [];\n }\n removeVal.splice(index, 1);\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.selectedListData.splice(index, 1);\n }\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (_this.enableVirtualization) {\n var currentText = index == 0 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index] + _this.delimiterChar, '') : _this.text.replace(_this.delimiterChar + _this.text.split(_this.delimiterChar)[index], '');\n _this.setProperties({ text: currentText.toString() }, true);\n }\n if (element_1 !== null) {\n var currentValue_1 = _this.allowObjectBinding ? getValue(((_this.fields.value) ? _this.fields.value : ''), value) : value;\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', currentValue_1);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n var currentValue_2 = _this.allowObjectBinding ? getValue(((_this.fields.value) ? _this.fields.value : ''), value) : value;\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(currentValue_2);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, currentValue_2);\n _this.removeChip(currentValue_2, isClearAll);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll && _this.isSelectAllTarget)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n if (_this.isPopupOpen() && element_1 && element_1.parentElement.classList.contains('e-reorder')) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n _this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value, isClearAll) {\n if (this.chipCollectionWrapper) {\n if (this.enableVirtualization && isClearAll) {\n var childElements = this.chipCollectionWrapper.querySelectorAll('.e-chips');\n }\n else {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.indexOfObjectInArray = function (objectToFind, array) {\n var _loop_1 = function (i) {\n var item = array[i];\n if (Object.keys(objectToFind).every(function (key) { return item.hasOwnProperty(key) && item[key] === objectToFind[key]; })) {\n return { value: i };\n }\n };\n for (var i = 0; i < array.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1; // Return -1 if the object is not found\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n var currentValue = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if ((this.allowObjectBinding && !this.isObjectInArray(value, this.value)) || (!this.allowObjectBinding && this.value.indexOf(currentValue) < 0)) {\n this.setProperties({ value: [].concat([], this.value, [currentValue]) }, true);\n if (this.enableVirtualization) {\n var data = this.viewWrapper.innerHTML;\n var temp = void 0;\n data += (this.value.length === 1) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(this.value.length - 1);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n if (this.enableVirtualization && this.mode === 'CheckBox') {\n var temp = void 0;\n var currentText = [];\n var value_1 = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n temp = this.getTextByValue(value_1);\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + temp : temp;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n }\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n value = _this.allowObjectBinding ? _this.getDataByValue(value) : value;\n if (_this.enableVirtualization) {\n if (isNullOrUndefined(_this.selectedListData)) {\n _this.selectedListData = [(_this.getDataByValue(value))];\n }\n else {\n if (Array.isArray(_this.selectedListData)) {\n _this.selectedListData.push((_this.getDataByValue(value)));\n }\n else {\n _this.selectedListData = [_this.selectedListData, (_this.getDataByValue(value))];\n }\n }\n }\n if ((_this.enableVirtualization && value) || !_this.enableVirtualization) {\n _this.updateListSelectEventCallback(value, element, eve);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (typeof multiselectTemplate !== 'function' && multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.encodeHtmlEntities = function (input) {\n return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, chipContent);\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = this.encodeHtmlEntities(data.toString());\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {\n this.listItemHeight = this.getItems()[1].offsetHeight;\n }\n if (this.enableVirtualization && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\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 if (this.list.querySelector('.e-virtual-ddl-content')) {\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.mode !== 'CheckBox') {\n this.totalItemsCount();\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 this.popupWrapper.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 if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '') && !_this.enableVirtualization) {\n _this.loadTemplate();\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.UpdateSkeleton();\n }\n }\n _this.isPreventScrollAction = true;\n _this.setScrollPosition();\n if (!_this.list.classList.contains(dropDownBaseClasses.noData) && _this.getItems()[1] && _this.getItems()[1].offsetHeight !== 0) {\n _this.listItemHeight = _this.getItems()[1].offsetHeight;\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 if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\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) {\n _this.updateSelectionList();\n }\n else if (_this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n }, 5);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n this.checkCollision(this.popupWrapper);\n this.popupContentElement = this.popupObj.element.querySelector('.e-content');\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.checkCollision = function (popupEle) {\n if (!(this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering)) {\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 MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (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\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n append(elements, this.header);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (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\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.updateInitialData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 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 if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\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 else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.listData = 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 MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n if (!this.isCustomDataUpdated) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n this.preventSetCurrentData = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n if (this.allowCustomValue) {\n this.isRemoteSelection = true;\n }\n this.checkAndResetCache();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.customFilterQuery = query;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = this.allowFiltering && (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n if (this.enableVirtualization) {\n this.dataUpdater(this.dataSource, query, this.fields);\n }\n else {\n this.dataUpdater(this.mainData, query, this.fields);\n }\n this.UpdateSkeleton();\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var type = this.typeOfData(this.listData).typeof;\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (this.enableVirtualization && this.targetElement().trim() !== '' && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = false;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n while (isNullOrUndefined(activeElement) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n 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 activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n if (!isNullOrUndefined(activeElement)) {\n break;\n }\n if (isNullOrUndefined(activeElement) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeElement.index) {\n if ((!(this.viewPortInfo.startIndex >= activeElement.index)) || (!(activeElement.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeElement.index - ((this.itemCount / 2) - 2) > 0 ? activeElement.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeElement.item)) {\n var index_1 = this.getIndexByValue(activeElement.item.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 activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\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 if (activeElement && activeElement.item) {\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n }\n if (activeElement && activeElement.item) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.preventSetCurrentData = false;\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n this.isCustomRendered = false;\n this.isRemoteSelection = false;\n this.isSelectAllTarget = true;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n if (!this.enableVirtualization) {\n this.listData = this.mainData;\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n for (var index = 0; index < valueLength; index++) {\n var valueItem = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) : this.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (this.enableVirtualization) {\n listValue = this.findListElement((!isNullOrUndefined(this.list) ? this.list : this.ulElement), 'li', 'data-value', valueItem);\n }\n if (isNullOrUndefined(listValue) && !this.allowCustomValue && !this.enableVirtualization) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n if (this.enableVirtualization) {\n if (delim) {\n data = this.delimiterWrapper && this.delimiterWrapper.innerHTML == \"\" ? data : this.delimiterWrapper.innerHTML;\n }\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n temp = this.getTextByValue(value);\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + temp : temp;\n data += temp + delimiterChar + ' ';\n text.push(textValues);\n break;\n }\n else {\n temp = this.getTextByValue(valueItem);\n }\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"\";\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n var isChipRemove = e && e.target && e.target.classList.contains('e-chips-close');\n if (!this.enableVirtualization || (this.enableVirtualization && this.mode !== 'CheckBox' && !isChipRemove)) {\n this.setProperties({ text: text.toString() }, true);\n }\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n var value = this.allowObjectBinding ? this.getDataByValue(textVal) : textVal;\n this.setProperties({ value: value }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function (listItems, isInitialVirtualData) {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n var isCustomData = false;\n if (this.enableVirtualization) {\n text = null;\n if (listItems != null && listItems.length > 0) {\n for (var i = 0; i < listItems.length; i++) {\n if (getValue((this.fields.value ? this.fields.value : 'value'), listItems[i]) === value) {\n text = getValue(this.fields.text, listItems[i]);\n if (this.enableVirtualization) {\n if (isNullOrUndefined(this.selectedListData)) {\n this.selectedListData = [listItems[i]];\n }\n else {\n if (Array.isArray(this.selectedListData)) {\n this.selectedListData.push((listItems[i]));\n }\n else {\n this.selectedListData = [this.selectedListData, (listItems[i])];\n }\n }\n }\n break;\n }\n }\n }\n if ((isNullOrUndefined(text) && this.allowCustomValue) && ((!(this.dataSource instanceof DataManager)) || (this.dataSource instanceof DataManager && isInitialVirtualData))) {\n text = this.getTextByValue(value);\n isCustomData = true;\n }\n }\n else {\n text = this.getTextByValue(value);\n }\n if (((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) || (this.enableVirtualization && value != null && text != null && !isCustomData)) {\n var currentText = [];\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if ((!this.enableVirtualization && value && this.allowCustomValue) || ((this.enableVirtualization && value && this.allowCustomValue) && ((!(this.dataSource instanceof DataManager)) || (this.dataSource instanceof DataManager && isInitialVirtualData)))) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n if (!this.enableVirtualization) {\n this.addItem(newValue, indexItem);\n }\n if (this.enableVirtualization) {\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length >= 0) {\n this.virtualCustomSelectData.push(newValue);\n }\n else {\n this.virtualCustomSelectData = [newValue];\n }\n }\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n var currentText = [];\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && ((!this.allowObjectBinding && this.value.indexOf(li.getAttribute('data-value')) > -1) || (this.allowObjectBinding && this.isObjectInArray(this.getDataByValue(li.getAttribute('data-value')), this.value)))) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0] && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount)));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.allowObjectBinding ? this.getDataByValue(customVal) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || ((!this.allowObjectBinding && this.value.indexOf(value) === -1) || (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) === -1))) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value) && (!this.enableVirtualization || (this.enableVirtualization && this.virtualCustomData))) {\n var temp_1 = li ? li.cloneNode(true) : li;\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.enableVirtualization && _this.virtualCustomData) {\n if (_this.virtualCustomSelectData && _this.virtualCustomSelectData.length >= 0) {\n _this.virtualCustomSelectData.push(data_1);\n }\n else {\n _this.virtualCustomSelectData = [data_1];\n }\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n else {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n this.keyboardEvent = null;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (this.enableVirtualization && li && li.classList.contains('e-virtual-list')) {\n return;\n }\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.virtualItemStartIndex);\n this.resetList(this.dataSource, this.fields, query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\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 this.popupWrapper.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 if (this.list.querySelector('.e-virtual-ddl-content')) {\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 }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = this.encodeHtmlEntities(wrapperData);\n }\n else {\n wrapperType.innerText = wrapperData;\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n if (!this.enableVirtualization) {\n this.updateWrapperText(this.viewWrapper, data);\n }\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var items = this.text && this.text.split(this.delimiterChar);\n if (!this.enableVirtualization) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n else if (items) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = items[index];\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(value);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(value);\n }\n }\n else {\n temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if ((li && li.length) || (this.enableVirtualization && !state)) {\n var index_2 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n if (this.enableVirtualization) {\n if (state) {\n this.virtualSelectAll = true;\n this.resetList(this.dataSource, this.fields, new Query());\n if (this.virtualSelectAllData instanceof Array) {\n for (var i = 0; i < this.virtualSelectAllData.length; i++) {\n if (li[this.skeletonCount + i]) {\n var value_2 = this.allowObjectBinding ? this.getDataByValue(li[this.skeletonCount + i].getAttribute('data-value')) : this.getFormattedValue(li[this.skeletonCount + i].getAttribute('data-value'));\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value_2) === 1) || (this.allowObjectBinding && this.indexOfObjectInArray(value_2, this.value) === 1))) {\n continue;\n }\n this.updateListSelection(li[this.skeletonCount + i], event, length - i);\n }\n else {\n if (this.fields) {\n var value_3 = getValue(this.fields.value, this.virtualSelectAllData[i]);\n value_3 = this.allowObjectBinding ? this.getDataByValue(value_3) : value_3;\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value_3) === 1) || (this.allowObjectBinding && this.indexOfObjectInArray(value_3, this.value) === 1))) {\n continue;\n }\n if (this.value && value_3 != null && Array.isArray(this.value) && ((!this.allowObjectBinding && this.value.indexOf(value_3) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value_3, this.value)))) {\n this.dispatchSelect(value_3, event, null, false, length);\n }\n }\n }\n }\n if (this.virtualSelectAllData && this.value.length != this.virtualSelectAllData.length && this.virtualItemStartIndex != 0) {\n if (this.virtualItemStartIndex > this.itemCount) {\n for (var i = 0; i < this.itemCount; i++) {\n if (this.fields) {\n var value_4 = getValue(this.fields.value, this.virtualSelectAllData[i]);\n value_4 = this.allowObjectBinding ? this.getDataByValue(value_4) : value_4;\n if (this.value && value_4 != null && Array.isArray(this.value) && ((!this.allowObjectBinding && this.value.indexOf(value_4) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value_4, this.value)))) {\n this.setProperties({ value: [].concat([], this.value, this.allowObjectBinding ? [this.virtualSelectAllData[i]] : [value_4]) }, true);\n }\n }\n }\n }\n }\n else {\n for (var i = 0; i < this.virtualItemStartIndex; i++) {\n if (this.fields) {\n var value = getValue(this.fields.value, this.virtualSelectAllData[i]);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if (Array.isArray(this.value) && ((!this.allowObjectBinding && this.value.indexOf(value) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value, this.value)))) {\n this.setProperties({ value: [].concat([], this.value, this.allowObjectBinding ? [this.virtualSelectAllData[i]] : [value]) }, true);\n }\n }\n }\n }\n }\n }\n else {\n while (index_2 < this.value.length && index_2 <= 50 && index_2 < count_1 && this.value.length > 0) {\n this.removeValue(this.value[index_2], event, this.value.length - index_2);\n index_2++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_2 < _this.value.length && index_2 < count_1 && _this.value.length > 0) {\n _this.removeValue(value[index_2], event, _this.value.length - index_2);\n index_2++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }, 0);\n }\n this.value = [];\n this.virtualSelectAll = false;\n if (!isNullOrUndefined(this.viewPortInfo.startIndex) && !isNullOrUndefined(this.viewPortInfo.endIndex)) {\n this.notify(\"setCurrentViewDataAsync\", {\n component: this.getModuleName(),\n module: \"VirtualScroll\",\n });\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n (virtualTrackElement).style = this.GetVirtualTrackHeight();\n }\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n (virtualContentElement).style = this.getTransformValues();\n }\n }\n else {\n while (index_2 < length && index_2 <= 50 && index_2 < count_1) {\n this.isSelectAllTarget = (length === index_2 + 1);\n this.updateListSelection(li[index_2], event, length - index_2);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_2]);\n }\n index_2++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_2 < length && index_2 < count_1) {\n _this.isSelectAllTarget = (length === index_2 + 1);\n _this.updateListSelection(li[index_2], event, length - index_2);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_2]);\n }\n index_2++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n if (_this.popupWrapper && li[index_2 - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index_2 - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n }\n else {\n for (var i_1 = 0; i_1 < li.length && i_1 < count_1; i_1++) {\n this.removeHover();\n var customVal = li[i_1].getAttribute('data-value');\n var value_5 = this.getFormattedValue(customVal);\n value_5 = this.allowObjectBinding ? this.getDataByValue(value_5) : value_5;\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i_1] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if ((!this.allowObjectBinding && this.value.indexOf(value_5) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value_5, this.value))) {\n this.setProperties({ value: [].concat([], this.value, [value_5]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i_1], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value_5, event, false, li[i_1], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i_1]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll) && this.isSelectAllTarget) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n this.virtualSelectAll = false;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n case 'fields':\n if (isNullOrUndefined(this.fields.groupBy)) {\n this.removeScrollEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.totalItemsCount = function () {\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n dataSourceCount = 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 dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode === 'CheckBox') {\n this.totalItemCount = dataSourceCount != 0 ? dataSourceCount : this.totalItemCount;\n }\n else {\n if (this.hideSelectedItem) {\n this.totalItemCount = dataSourceCount != 0 && this.value ? dataSourceCount - this.value.length : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n for (var i = 0; i < this.virtualCustomSelectData.length; i++) {\n for (var j = 0; j < this.value.length; j++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[j]) : this.value[j];\n var customValue = getValue((this.fields.value) ? this.fields.value : '', this.virtualCustomSelectData[i]);\n if (value === customValue) {\n this.totalItemCount += 1;\n }\n }\n }\n }\n }\n else {\n this.totalItemCount = dataSourceCount != 0 ? dataSourceCount : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n this.totalItemCount += this.virtualCustomSelectData.length;\n }\n }\n }\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[i]) : this.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle) {\n var checkvalue = this.allowObjectBinding ? this.getDataByValue(this.value[i]) : this.value[i];\n valuecheck.push(checkvalue);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && !this.enableVirtualization) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n this.customFilterQuery = null;\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n var typedValue = _this.mode == 'CheckBox' ? _this.targetElement() : null;\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n }\n if (_this.enableVirtualization && _this.mode === 'CheckBox' && _this.value && _this.value.length > 0 && _this.enableSelectionOrder) {\n _this.viewPortInfo.startIndex = _this.virtualItemStartIndex = 0;\n _this.viewPortInfo.endIndex = _this.virtualItemEndIndex = _this.viewPortInfo.startIndex > 0 ? _this.viewPortInfo.endIndex : _this.itemCount;\n _this.virtualListInfo = _this.viewPortInfo;\n _this.previousStartIndex = 0;\n _this.previousEndIndex = 0;\n }\n var dataSourceCount = void 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 dataSourceCount = _this.dataSource && _this.dataSource.length ? _this.dataSource.length : 0;\n }\n if (_this.enableVirtualization && (_this.allowFiltering || _this.allowCustomValue) && (_this.targetElement() || typedValue) && _this.totalItemCount !== dataSourceCount) {\n _this.updateInitialData();\n _this.checkAndResetCache();\n }\n if (_this.virtualCustomData && _this.viewPortInfo && _this.viewPortInfo.startIndex === 0 && _this.viewPortInfo.endIndex === _this.itemCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.renderItems(_this.mainData, _this.fields);\n }\n _this.virtualCustomData = null;\n _this.isVirtualTrackHeight = false;\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n _super.prototype.render.call(_this, e);\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n 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 if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n if (!_this.preventSetCurrentData && !isNullOrUndefined(_this.viewPortInfo.startIndex) && !isNullOrUndefined(_this.viewPortInfo.endIndex)) {\n _this.notify(\"setCurrentViewDataAsync\", {\n component: _this.getModuleName(),\n module: \"VirtualScroll\",\n });\n }\n }\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 if (_this.enableVirtualization) {\n _this.updatevirtualizationList();\n }\n else {\n if (_this.value && _this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = _this.getItems();\n for (var _i = 0, _a = _this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = _this.allowObjectBinding ? getValue((_this.fields.value) ? _this.fields.value : '', value) : value;\n element = _this.getElementByValue(checkValue);\n if (element) {\n _this.addListSelection(element);\n }\n }\n }\n }\n _this.preventSetCurrentData = true;\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n if (!isNullOrUndefined(this.value)) {\n // eslint-disable-next-line\n this.value = this.value.slice();\n }\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering, this.mode === 'CheckBox');\n }\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.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 MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n var value = this.allowObjectBinding ? this.getDataByValue(opt.getAttribute('value')) : opt.getAttribute('value');\n valueCol.push(value);\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_2;\n if (this.enableVirtualization) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var predicate = void 0;\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[i]) : this.value[i];\n if (i === 0) {\n predicate = new Predicate(fields, 'equal', value);\n }\n else {\n predicate = predicate.or(fields, 'equal', value);\n }\n }\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(predicate))\n .then(function (e) {\n if (e.result.length > 0) {\n listItems_2 = e.result;\n _this.initStatus = false;\n _this.initialValueUpdate(listItems_2, true);\n _this.initialUpdate();\n _this.initStatus = true;\n }\n });\n }\n else {\n listItems_2 = new DataManager(this.dataSource).executeLocal(new Query().where(predicate));\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate(listItems_2);\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n if (!_this.enableVirtualization || (_this.enableVirtualization && (!(_this.dataSource instanceof DataManager)))) {\n _this.initialValueUpdate(listItems_2);\n }\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.updatevirtualizationList = function () {\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = this.getItems();\n for (var _i = 0, _a = this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n element = this.getElementByValue(checkValue);\n if (element) {\n this.addListSelection(element);\n }\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.viewPortInfo.startIndex);\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","import { List } from \"linq.ts\";\r\nexport var CSSOverFlow;\r\n(function (CSSOverFlow) {\r\n CSSOverFlow[CSSOverFlow[\"auto\"] = 0] = \"auto\";\r\n CSSOverFlow[CSSOverFlow[\"hidden\"] = 1] = \"hidden\";\r\n CSSOverFlow[CSSOverFlow[\"scroll\"] = 2] = \"scroll\";\r\n CSSOverFlow[CSSOverFlow[\"visible\"] = 3] = \"visible\";\r\n})(CSSOverFlow || (CSSOverFlow = {}));\r\nexport const CSSOverFlowOptions = new List([\r\n { key: CSSOverFlow.auto, text: `${CSSOverFlow[CSSOverFlow.auto]} (${CSSOverFlow.auto})` },\r\n { key: CSSOverFlow.hidden, text: `${CSSOverFlow[CSSOverFlow.hidden]} (${CSSOverFlow.hidden})` },\r\n { key: CSSOverFlow.scroll, text: `${CSSOverFlow[CSSOverFlow.scroll]} (${CSSOverFlow.scroll})` },\r\n { key: CSSOverFlow.visible, text: `${CSSOverFlow[CSSOverFlow.visible]} (${CSSOverFlow.visible})` }\r\n]).OrderBy(o => o.text).ToArray();\r\n","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 && !this.parent.enableVirtualization &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className) || (e.currentTarget.classList.value === this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'aria-label': 'multiselect',\n 'aria-expanded': 'true',\n 'aria-controls': args.popupElement.id\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshListItems(null);\n this.parent.refreshPopup();\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n this.boundPreventListSelection = this.preventListSelection.bind(this);\n this.parent.popupWrapper.addEventListener('mouseup', this.boundPreventListSelection, true);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.preventListSelection = function (e) {\n e.stopPropagation();\n this.parent.popupWrapper.removeEventListener('mouseup', this.boundPreventListSelection, true);\n this.boundPreventListSelection = null;\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n if (this.parent && this.parent.popupObj) {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n }\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlurHandler = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n // eslint-disable-next-line max-len\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]'))\n && !isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlurHandler(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') &&\n (document.activeElement === this.filterInput);\n }\n if (!isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlurHandler();\n }\n else {\n this.parent.onBlurHandler(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n var l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle_1 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n var activeListItems = this.parent.ulElement.querySelectorAll('li.e-active');\n activeListItems.forEach(function (item) {\n ulEle_1.appendChild(item);\n });\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n if (this.parent.enableVirtualization) {\n var virtualUlElement = this.parent.list.querySelector('.e-virtual-ddl-content');\n prepend([ulEle_1], virtualUlElement);\n }\n else {\n prepend([ulEle_1], this.parent.list);\n }\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","import { isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { getValue, createElement, extend } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nimport { parentsUntil, formatString, isScheduledTask, getIndex } from '../base/utils';\nimport { Dialog } from '@syncfusion/ej2-popups';\n/**\n * File for handling connector line edit operation in Gantt.\n *\n */\nvar ConnectorLineEdit = /** @class */ (function () {\n function ConnectorLineEdit(ganttObj) {\n /**\n * @private\n */\n this.validationPredecessor = null;\n /** @private */\n this.confirmPredecessorDialog = null;\n /** @private */\n this.predecessorIndex = null;\n /** @private */\n this.childRecord = null;\n this.parent = ganttObj;\n this.dateValidateModule = this.parent.dateValidationModule;\n this.parent.on('initPredessorDialog', this.initPredecessorValidationDialog, this);\n }\n /**\n * To update connector line edit element.\n *\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.updateConnectorLineEditElement = function (e) {\n var element = this.getConnectorLineHoverElement(e.target);\n if (!getValue('editModule.taskbarEditModule.taskBarEditAction', this.parent)) {\n this.highlightConnectorLineElements(element);\n }\n };\n /**\n * To get hovered connector line element.\n *\n * @param {EventTarget} target .\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.getConnectorLineHoverElement = function (target) {\n var isOnLine = parentsUntil(target, cls.connectorLineSVG);\n var isArrow = parentsUntil(target, cls.connectorLineArrow);\n var isCriticalLine = parentsUntil(target, cls.criticalConnectorLineSVG);\n var isCriticalArrow = parentsUntil(target, cls.criticalConnectorArrowSVG);\n if (isOnLine || isArrow || isCriticalLine || isCriticalArrow) {\n return parentsUntil(target, cls.connectorLineContainer);\n }\n else {\n return null;\n }\n };\n /**\n * To highlight connector line while hover.\n *\n * @param {Element} element .\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.highlightConnectorLineElements = function (element) {\n if (element) {\n if (element !== this.connectorLineElement) {\n this.removeHighlight();\n this.addHighlight(element);\n }\n }\n else {\n this.removeHighlight();\n }\n };\n /**\n * To add connector line highlight class.\n *\n * @param {Element} element .\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.addHighlight = function (element) {\n this.connectorLineElement = element;\n var pathElement = element.querySelector('.' + cls.connectorLineSVG);\n var criticalElement = element.querySelector('.' + cls.criticalConnectorLineSVG);\n if (pathElement) {\n pathElement.setAttribute('stroke-width', '2');\n }\n else {\n criticalElement.setAttribute('stroke-width', '2');\n }\n };\n /**\n * To remove connector line highlight class.\n *\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.removeHighlight = function () {\n if (this.connectorLineElement) {\n var pathElement = this.connectorLineElement.querySelector('.' + cls.connectorLineSVG);\n var criticalElement = this.connectorLineElement.querySelector('.' + cls.criticalConnectorLineSVG);\n if (pathElement) {\n pathElement.setAttribute('stroke-width', '1');\n }\n else {\n criticalElement.setAttribute('stroke-width', '1');\n }\n this.connectorLineElement = null;\n }\n };\n /**\n * To remove connector line highlight class.\n *\n * @param {IGanttData[]} records .\n * @returns {string} .\n * @private\n */\n ConnectorLineEdit.prototype.getEditedConnectorLineString = function (records) {\n var ganttRecord;\n var predecessorsCollection;\n var predecessor;\n var parentGanttRecord;\n var childGanttRecord;\n var connectorObj;\n var idArray = [];\n var lineArray = [];\n var editedConnectorLineString = '';\n for (var count = 0; count < records.length; count++) {\n ganttRecord = records[count];\n predecessorsCollection = ganttRecord.ganttProperties.predecessor;\n if (predecessorsCollection) {\n for (var predecessorCount = 0; predecessorCount < predecessorsCollection.length; predecessorCount++) {\n predecessor = predecessorsCollection[predecessorCount];\n var from = 'from';\n var to = 'to';\n this.parent.connectorLineModule.removeConnectorLineById('parent' + predecessor[from] + 'child' + predecessor[to]);\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor[\"\" + from]);\n childGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor[\"\" + to]);\n if ((!this.parent.allowParentDependency && (parentGanttRecord && parentGanttRecord.expanded === true) ||\n (childGanttRecord && childGanttRecord.expanded === true)) || (this.parent.allowParentDependency && (parentGanttRecord || childGanttRecord))) {\n connectorObj =\n this.parent.predecessorModule.updateConnectorLineObject(parentGanttRecord, childGanttRecord, predecessor);\n if (!isNullOrUndefined(connectorObj)) {\n var lineIndex = idArray.indexOf(connectorObj.connectorLineId);\n var lineString = this.parent.connectorLineModule.getConnectorLineTemplate(connectorObj);\n if (lineIndex !== -1) {\n lineArray[lineIndex] = lineString;\n }\n else {\n idArray.push(connectorObj.connectorLineId);\n lineArray.push(lineString);\n }\n }\n }\n }\n editedConnectorLineString = lineArray.join('');\n }\n }\n return editedConnectorLineString;\n };\n /**\n * Tp refresh connector lines of edited records\n *\n * @param {IGanttData[]} editedRecord .\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.refreshEditedRecordConnectorLine = function (editedRecord) {\n this.parent.connectorLineModule.removePreviousConnectorLines(this.parent.previousRecords);\n this.parent.connectorLineModule.expandedRecords = this.parent.virtualScrollModule && this.parent.enableVirtualization ?\n this.parent.updatedRecords : this.parent.getExpandedRecords(this.parent.updatedRecords);\n var editedConnectorLineString = this.getEditedConnectorLineString(editedRecord);\n this.parent.connectorLineModule.svgObject.innerHTML =\n this.parent.connectorLineModule.svgObject.innerHTML + editedConnectorLineString;\n };\n ConnectorLineEdit.prototype.idFromPredecessor = function (pre) {\n var preArray = pre.split(',');\n var preIdArray = [];\n var values = [];\n var offsetValue;\n var match = [];\n for (var j = 0; j < preArray.length; j++) {\n var strArray = [];\n var firstPart = void 0;\n var isAlpha = false;\n var predecessorName = void 0;\n var isGUId = false;\n var regex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n var elSplit = preArray[j].split('-');\n var id = void 0;\n if (elSplit.length === 6) {\n elSplit[4] = elSplit[4] + '-' + elSplit[5];\n elSplit.pop();\n }\n if (elSplit.length === 5 && elSplit[4].length >= 12) {\n id = preArray[j].substring(0, 36);\n if (regex.test(id)) {\n isGUId = true;\n }\n }\n if (preArray[j].includes('-')) {\n if (preArray[j].includes('-') && preArray[j].includes('days')) {\n predecessorName = preArray[j].slice(-9).toString();\n }\n if (preArray[j].includes('-') && preArray[j].includes('day')) {\n predecessorName = preArray[j].slice(-8).toString();\n }\n else {\n predecessorName = preArray[j].slice(-2).toString();\n }\n if (preArray[j].includes('-') && /[A-Za-z]/.test(predecessorName)) {\n var indexFS = preArray[j].indexOf(predecessorName);\n if (indexFS !== -1) {\n firstPart = preArray[j].substring(0, indexFS);\n if (firstPart.includes('-')) {\n isAlpha = true;\n }\n }\n }\n }\n if (isGUId) {\n var split = void 0;\n split = elSplit[4].split('+');\n var spliceLength = void 0;\n if (split.length === 1) {\n values[0] = preArray[j];\n }\n else {\n spliceLength = split[1].length;\n values[0] = preArray[j].slice(0, -(spliceLength + 1));\n values[1] = split[1];\n }\n offsetValue = '+';\n if (elSplit[4].indexOf('-') >= 0) {\n split = elSplit[4].split('-');\n if (split.length === 1) {\n values[0] = preArray[j];\n }\n else {\n spliceLength = split[1].length;\n values[0] = preArray[j].slice(0, -(spliceLength + 1));\n values[1] = split[1];\n }\n offsetValue = '-';\n }\n }\n else {\n if (isAlpha && firstPart.includes('-')) {\n values[0] = firstPart;\n }\n else {\n values = preArray[j].split('+');\n offsetValue = '+';\n if (preArray[j].indexOf('-') >= 0) {\n values = preArray[j].split('-');\n offsetValue = '-';\n }\n }\n }\n if (!isNullOrUndefined(values[0])) {\n var ids = this.parent.viewType === 'ResourceView' ? this.parent.getTaskIds() : this.parent.ids;\n if (ids.indexOf(values[0]) === -1) {\n if (values[0].indexOf(' ') !== -1) {\n match = values[0].split(' ');\n if (match.length === 1) {\n match = values[0].match(/(\\d+|[A-z]+)/g);\n }\n strArray.push(match[0]);\n }\n else {\n if (values[0].length === 1 || values[0].length === 2) {\n strArray.push(values[0]);\n }\n else {\n strArray.push(values[0].slice(0, -2));\n }\n }\n }\n else {\n strArray.push(values[0]);\n }\n }\n preIdArray.push((strArray.join('')));\n }\n return preIdArray;\n };\n ConnectorLineEdit.prototype.predecessorValidation = function (predecessor, record) {\n var recordId = record.rowUniqueID;\n var currentId;\n var currentRecord;\n for (var count = 0; count < predecessor.length; count++) {\n currentId = predecessor[count];\n var visitedIdArray = [];\n var predecessorCollection = predecessor.slice(0);\n predecessorCollection.splice(count, 1);\n var _loop_1 = function () {\n var currentIdArray = [];\n if (visitedIdArray.indexOf(currentId) === -1) {\n //Predecessor id not in records collection\n if (isNullOrUndefined(this_1.parent.connectorLineModule.getRecordByID(currentId))) {\n return { value: false };\n }\n currentRecord = this_1.parent.connectorLineModule.getRecordByID(currentId).ganttProperties;\n if (!isNullOrUndefined(currentRecord.predecessor) && currentRecord.predecessor.length > 0) {\n currentRecord.predecessor.forEach(function (value) {\n if (currentRecord.rowUniqueID.toString() !== value.from) {\n currentIdArray.push(value.from.toString());\n }\n });\n }\n /* eslint-disable-next-line */\n if (recordId.toString() === currentRecord.rowUniqueID.toString() || currentIdArray.indexOf(recordId.toString()) !== -1) {\n return { value: false };\n }\n visitedIdArray.push(currentId);\n if (!isNullOrUndefined(currentRecord.predecessor) && currentRecord.predecessor.length > 0) {\n currentId = currentRecord.predecessor[0].from;\n }\n else {\n return \"break\";\n }\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n while (currentId !== null) {\n var state_1 = _loop_1();\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n }\n return true;\n };\n // Get the root parent of the record\n ConnectorLineEdit.prototype.getRootParent = function (rec) {\n var parentRec = rec;\n if (rec.parentItem) {\n parentRec = this.parent.flatData.filter(function (item) {\n return item.uniqueID === rec.parentUniqueID;\n })[0];\n if (parentRec.parentItem) {\n parentRec = this.getRootParent(parentRec);\n }\n return parentRec;\n }\n return parentRec;\n };\n // To check whether the predecessor drawn is valid for parent task\n ConnectorLineEdit.prototype.validateParentPredecessor = function (fromRecord, toRecord) {\n if (fromRecord && toRecord) {\n if (toRecord.hasChildRecords && !fromRecord.hasChildRecords) {\n if (fromRecord.parentUniqueID === toRecord.uniqueID) {\n return false;\n }\n else {\n do {\n if (fromRecord.parentItem) {\n fromRecord = this.parent.flatData[this.parent.ids.indexOf(fromRecord.parentItem.taskId)];\n if (fromRecord.uniqueID === toRecord.uniqueID) {\n return false;\n }\n }\n } while (fromRecord.parentItem);\n }\n }\n else if (!toRecord.hasChildRecords && fromRecord.hasChildRecords) {\n if (toRecord.parentUniqueID === fromRecord.uniqueID) {\n return false;\n }\n else {\n do {\n if (toRecord.parentItem) {\n toRecord = this.parent.flatData[this.parent.ids.indexOf(toRecord.parentItem.taskId)];\n if (toRecord.uniqueID === fromRecord.uniqueID) {\n return false;\n }\n }\n } while (toRecord.parentItem);\n }\n }\n else if (toRecord.hasChildRecords && fromRecord.hasChildRecords) {\n if (toRecord.parentItem && fromRecord.parentItem) {\n if (fromRecord.parentUniqueID === toRecord.uniqueID || fromRecord.uniqueID === toRecord.parentUniqueID) {\n return false;\n }\n }\n else {\n if (!toRecord.parentItem && fromRecord.parentItem) {\n var fromRootParent = this.parent.connectorLineEditModule.getRootParent(fromRecord);\n if (fromRootParent.uniqueID === toRecord.uniqueID) {\n return false;\n }\n }\n else if (toRecord.parentItem && !fromRecord.parentItem) {\n var toRootParent = this.parent.connectorLineEditModule.getRootParent(toRecord);\n if (toRootParent.uniqueID === fromRecord.uniqueID) {\n return false;\n }\n }\n }\n }\n }\n return true;\n };\n /**\n * To validate predecessor relations\n *\n * @param {IGanttData} ganttRecord .\n * @param {string} predecessorString .\n * @returns {boolean} .\n * @private\n */\n ConnectorLineEdit.prototype.validatePredecessorRelation = function (ganttRecord, predecessorString) {\n var flag = true;\n var recordId = this.parent.viewType === 'ResourceView' ? ganttRecord.ganttProperties.taskId\n : ganttRecord.ganttProperties.rowUniqueID;\n var predecessorIdArray;\n var currentId;\n if (!isNullOrUndefined(predecessorString) && predecessorString.length > 0) {\n predecessorIdArray = this.idFromPredecessor(predecessorString);\n var _loop_2 = function (count) {\n //Check edited item has parent item in predecessor collection\n if (!this_2.parent.allowParentDependency) {\n var checkParent = this_2.checkParentRelation(ganttRecord, predecessorIdArray);\n if (!checkParent) {\n return { value: false };\n }\n }\n else {\n if (parseInt(predecessorIdArray[predecessorIdArray.length - 1]) !== ganttRecord[this_2.parent.taskFields.id]) {\n var num = this_2.parent.ids.indexOf(predecessorIdArray[predecessorIdArray.length - 1]);\n var fromRecord = this_2.parent.currentViewData[num];\n if (fromRecord && ganttRecord) {\n flag = this_2.validateParentPredecessor(fromRecord, ganttRecord);\n }\n }\n }\n // Check if predecessor exist more then one\n var tempIdArray = predecessorIdArray.slice(0);\n var checkArray = [];\n var countFlag = true;\n tempIdArray.forEach(function (value) {\n if (checkArray.indexOf(value) === -1) {\n checkArray.push(value);\n }\n else {\n countFlag = false;\n }\n });\n if (!countFlag) {\n return { value: false };\n }\n //Cyclick check\n currentId = predecessorIdArray[count];\n var visitedIdArray = [];\n var predecessorCollection = predecessorIdArray.slice(0);\n predecessorCollection.splice(count, 1);\n var _loop_3 = function () {\n var currentIdArray = [];\n var currentIdIndex;\n var currentRecord;\n if (visitedIdArray.indexOf(currentId) === -1) {\n //Predecessor id not in records collection\n if (isNullOrUndefined(this_2.parent.connectorLineModule.getRecordByID(currentId.toString()))) {\n return { value: false };\n }\n currentRecord = this_2.parent.connectorLineModule.getRecordByID(currentId.toString()).ganttProperties;\n // let currentPredecessor='';\n if (!isNullOrUndefined(currentRecord.predecessor) && currentRecord.predecessor.length > 0) {\n currentRecord.predecessor.forEach(function (value, index) {\n if (currentRecord.rowUniqueID.toString() !== value.from) {\n currentIdArray.push(value.from.toString());\n currentIdIndex = index;\n }\n });\n // currentPredecessor=currentRecord.predecessor[0].from\n }\n if (recordId.toString() === currentRecord.rowUniqueID.toString() ||\n currentIdArray.indexOf(recordId.toString()) !== -1) {\n return { value: false };\n }\n visitedIdArray.push(currentId);\n if (!isNullOrUndefined(currentRecord.predecessor) && currentRecord.predecessor.length > 0) {\n var result = void 0;\n if (currentIdArray.length > 1) {\n result = this_2.predecessorValidation(currentIdArray, ganttRecord.ganttProperties);\n }\n else if (currentIdArray.length === 1) {\n currentId = currentRecord.predecessor[currentIdIndex].from;\n }\n if (result === false) {\n return { value: false };\n }\n }\n else {\n return \"break\";\n }\n }\n else {\n return \"break\";\n }\n };\n while (currentId !== null) {\n var state_3 = _loop_3();\n if (typeof state_3 === \"object\")\n return state_3;\n if (state_3 === \"break\")\n break;\n }\n };\n var this_2 = this;\n for (var count = 0; count < predecessorIdArray.length; count++) {\n var state_2 = _loop_2(count);\n if (typeof state_2 === \"object\")\n return state_2.value;\n }\n }\n return flag;\n };\n /**\n * To add dependency for Task\n *\n * @param {IGanttData} ganttRecord .\n * @param {string} predecessorString .\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.addPredecessor = function (ganttRecord, predecessorString) {\n var tempPredecessorString = isNullOrUndefined(ganttRecord.ganttProperties.predecessorsName) ||\n ganttRecord.ganttProperties.predecessorsName === '' ?\n predecessorString : (ganttRecord.ganttProperties.predecessorsName + ',' + predecessorString);\n this.updatePredecessorHelper(ganttRecord, tempPredecessorString);\n };\n /**\n * To remove dependency from task\n *\n * @param {IGanttData} ganttRecord .\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.removePredecessor = function (ganttRecord) {\n this.updatePredecessorHelper(ganttRecord, null);\n };\n /**\n * To modify current dependency values of Task\n *\n * @param {IGanttData} ganttRecord .\n * @param {string} predecessorString .\n * @param {ITaskbarEditedEventArgs} editedArgs .\n * @returns {boolean} .\n * @private\n */\n ConnectorLineEdit.prototype.updatePredecessor = function (ganttRecord, predecessorString, editedArgs) {\n return this.updatePredecessorHelper(ganttRecord, predecessorString, editedArgs);\n };\n ConnectorLineEdit.prototype.updatePredecessorHelper = function (ganttRecord, predecessorString, editedArgs) {\n if (isUndefined(predecessorString) || this.validatePredecessorRelation(ganttRecord, predecessorString)) {\n this.parent.isOnEdit = true;\n var predecessorCollection = [];\n if (!isNullOrUndefined(predecessorString) && predecessorString !== '') {\n predecessorCollection = this.parent.predecessorModule.calculatePredecessor(predecessorString, ganttRecord);\n }\n this.parent.setRecordValue('predecessor', predecessorCollection, ganttRecord.ganttProperties, true);\n var stringValue = this.parent.predecessorModule.getPredecessorStringValue(ganttRecord);\n this.parent.setRecordValue('predecessorsName', stringValue, ganttRecord.ganttProperties, true);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.dependency, stringValue, ganttRecord);\n this.parent.setRecordValue(this.parent.taskFields.dependency, stringValue, ganttRecord);\n var args = {};\n args.action = editedArgs && editedArgs.action && editedArgs.action === 'CellEditing' ? editedArgs.action : 'DrawConnectorLine';\n args.data = ganttRecord;\n this.parent.editModule.initiateUpdateAction(args);\n return true;\n }\n else {\n return false;\n }\n };\n ConnectorLineEdit.prototype.checkParentRelation = function (ganttRecord, predecessorIdArray) {\n var editingData = ganttRecord;\n var checkParent = true;\n if (editingData && editingData.parentItem) {\n if (predecessorIdArray.indexOf(editingData.parentItem.taskId.toString()) !== -1) {\n return false;\n }\n }\n var _loop_4 = function (p) {\n var record = this_3.parent.currentViewData.filter(function (item) {\n return item && item.ganttProperties.rowUniqueID.toString() === predecessorIdArray[p].toString();\n });\n if (record[0] && record[0].hasChildRecords) {\n return { value: false };\n }\n };\n var this_3 = this;\n for (var p = 0; p < predecessorIdArray.length; p++) {\n var state_4 = _loop_4(p);\n if (typeof state_4 === \"object\")\n return state_4.value;\n }\n return checkParent;\n };\n ConnectorLineEdit.prototype.initPredecessorValidationDialog = function () {\n if (this.parent.taskFields.dependency && this.parent.isInPredecessorValidation) {\n var dialogElement = createElement('div', {\n id: this.parent.element.id + '_dialogValidationRule'\n });\n this.parent.element.appendChild(dialogElement);\n this.renderValidationDialog();\n }\n };\n /**\n * To render validation dialog\n *\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.renderValidationDialog = function () {\n var validationDialog = new Dialog({\n header: 'Validate Editing',\n isModal: true,\n enableRtl: this.parent.enableRtl,\n visible: false,\n width: '50%',\n showCloseIcon: true,\n close: this.validationDialogClose.bind(this),\n content: '',\n buttons: [\n {\n click: this.validationDialogOkButton.bind(this),\n buttonModel: { content: this.parent.localeObj.getConstant('okText'), isPrimary: true }\n },\n {\n click: this.validationDialogCancelButton.bind(this),\n buttonModel: { content: this.parent.localeObj.getConstant('cancel') }\n }\n ],\n target: this.parent.element,\n animationSettings: { effect: 'None' }\n });\n document.getElementById(this.parent.element.id + '_dialogValidationRule').innerHTML = '';\n validationDialog.isStringTemplate = true;\n validationDialog.appendTo('#' + this.parent.element.id + '_dialogValidationRule');\n this.parent.validationDialogElement = validationDialog;\n };\n ConnectorLineEdit.prototype.validationDialogOkButton = function () {\n var currentArgs = this.parent.currentEditedArgs;\n currentArgs.validateMode.preserveLinkWithEditing =\n document.getElementById(this.parent.element.id + '_ValidationAddlineOffset').checked;\n currentArgs.validateMode.removeLink =\n document.getElementById(this.parent.element.id + '_ValidationRemoveline').checked;\n currentArgs.validateMode.respectLink =\n document.getElementById(this.parent.element.id + '_ValidationCancel').checked;\n this.applyPredecessorOption();\n this.parent.validationDialogElement.hide();\n };\n ConnectorLineEdit.prototype.validationDialogCancelButton = function () {\n this.parent.currentEditedArgs.validateMode.respectLink = true;\n this.applyPredecessorOption();\n this.parent.validationDialogElement.hide();\n };\n ConnectorLineEdit.prototype.validationDialogClose = function (e) {\n if (getValue('isInteraction', e)) {\n this.parent.currentEditedArgs.validateMode.respectLink = true;\n this.applyPredecessorOption();\n }\n };\n /**\n * Validate and apply the predecessor option from validation dialog\n *\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.applyPredecessorOption = function () {\n var args = this.parent.currentEditedArgs;\n var ganttRecord = args.data;\n if (args.validateMode.respectLink) {\n this.parent.editModule.reUpdatePreviousRecords();\n this.parent.chartRowsModule.refreshRecords([args.data]);\n }\n else if (args.validateMode.removeLink) {\n this.checkChildRecords(ganttRecord);\n this.parent.editModule.updateEditedTask(args.editEventArgs);\n }\n else if (args.validateMode.preserveLinkWithEditing) {\n var connectedTaskId_1;\n if (this.parent.UpdateOffsetOnTaskbarEdit) {\n var taskId_1 = ganttRecord.ganttProperties.taskId;\n if (ganttRecord.ganttProperties.predecessor) {\n ganttRecord.ganttProperties.predecessor.forEach(function (predecessor) {\n if (taskId_1 == predecessor.from) {\n connectedTaskId_1 = predecessor.to;\n return;\n }\n });\n }\n }\n this.parent.editModule.updateEditedTask(args.editEventArgs);\n this.processPredecessors(connectedTaskId_1);\n }\n };\n ConnectorLineEdit.prototype.processPredecessors = function (parentId) {\n var _this = this;\n if (parentId) {\n var record_1 = this.parent.getRecordByID(parentId);\n if (record_1 && record_1.ganttProperties && record_1.ganttProperties.predecessor) {\n this.calculateOffset(record_1);\n var predecessors = record_1.ganttProperties.predecessor;\n predecessors.forEach(function (predecessor) {\n if (record_1.ganttProperties.taskId == predecessor.from) {\n _this.processPredecessors(predecessor.to);\n }\n });\n }\n }\n };\n ConnectorLineEdit.prototype.checkChildRecords = function (ganttRecord) {\n this.validationPredecessor = ganttRecord.ganttProperties.predecessor;\n if (!isNullOrUndefined(this.validationPredecessor)) {\n this.removePredecessors(ganttRecord, this.validationPredecessor);\n }\n if (ganttRecord.childRecords.length > 0) {\n for (var i = 0; i < ganttRecord.childRecords.length; i++) {\n var childRecord = ganttRecord.childRecords[i];\n this.validationPredecessor = childRecord.ganttProperties.predecessor;\n if (!isNullOrUndefined(this.validationPredecessor)) {\n this.removePredecessors(childRecord, this.validationPredecessor);\n }\n if (childRecord.childRecords.length > 0) {\n this.checkChildRecords(childRecord);\n }\n }\n }\n else if (!isNullOrUndefined(ganttRecord.parentItem)) {\n var parentRecord = this.parent.getRecordByID(ganttRecord.parentItem.taskId);\n this.validationPredecessor = parentRecord.ganttProperties.predecessor;\n this.removePredecessors(parentRecord, this.validationPredecessor);\n }\n };\n ConnectorLineEdit.prototype.calculateOffset = function (record) {\n var _this = this;\n if (record) {\n var prevPredecessor = extend([], record.ganttProperties.predecessor, [], true);\n var validPredecessor_1 = this.parent.predecessorModule.getValidPredecessor(record);\n if (validPredecessor_1.length > 0) {\n var _loop_5 = function (i) {\n var predecessor = validPredecessor_1[parseInt(i.toString(), 10)];\n var parentTask = this_4.parent.connectorLineModule.getRecordByID(predecessor.from);\n if (this_4.parent.undoRedoModule && this_4.parent.undoRedoModule['isUndoRedoPerformed'] && this_4.parent.viewType == 'ProjectView') {\n var isPresent = parentTask.ganttProperties.predecessor.filter(function (pred) {\n return pred.from == validPredecessor_1[i].from && pred.to == validPredecessor_1[i].to;\n });\n if (isPresent.length == 0) {\n parentTask.ganttProperties.predecessor.push(validPredecessor_1[i]);\n }\n }\n var offset = void 0;\n if (isScheduledTask(parentTask.ganttProperties) && isScheduledTask(record.ganttProperties)) {\n var tempStartDate = void 0;\n var tempEndDate = void 0;\n var tempDuration = void 0;\n var isNegativeOffset = void 0;\n switch (predecessor.type) {\n case 'FS':\n tempStartDate = new Date(parentTask.ganttProperties.endDate.getTime());\n tempEndDate = new Date(record.ganttProperties.startDate.getTime());\n break;\n case 'SS':\n tempStartDate = new Date(parentTask.ganttProperties.startDate.getTime());\n tempEndDate = new Date(record.ganttProperties.startDate.getTime());\n break;\n case 'SF':\n tempStartDate = new Date(parentTask.ganttProperties.startDate.getTime());\n tempEndDate = new Date(record.ganttProperties.endDate.getTime());\n break;\n case 'FF':\n tempStartDate = new Date(parentTask.ganttProperties.endDate.getTime());\n tempEndDate = new Date(record.ganttProperties.endDate.getTime());\n break;\n }\n if (tempStartDate.getTime() < tempEndDate.getTime()) {\n tempStartDate = this_4.dateValidateModule.checkStartDate(tempStartDate);\n tempEndDate = this_4.dateValidateModule.checkEndDate(tempEndDate, null);\n isNegativeOffset = false;\n }\n else {\n var tempDate = new Date(tempStartDate.getTime());\n tempStartDate = this_4.dateValidateModule.checkStartDate(tempEndDate);\n tempEndDate = this_4.dateValidateModule.checkEndDate(tempDate, null);\n isNegativeOffset = true;\n }\n if (tempStartDate.getTime() < tempEndDate.getTime()) {\n tempDuration = this_4.dateValidateModule.getDuration(tempStartDate, tempEndDate, predecessor.offsetUnit, true, false);\n offset = isNegativeOffset ? (tempDuration * -1) : tempDuration;\n }\n else {\n offset = 0;\n }\n }\n else {\n offset = 0;\n }\n var preIndex = getIndex(predecessor, 'from', prevPredecessor, 'to');\n if (preIndex !== -1) {\n prevPredecessor[preIndex].offset = offset;\n }\n // Update predecessor in predecessor task\n var parentPredecessors = extend([], parentTask.ganttProperties.predecessor, [], true);\n var parentPreIndex = getIndex(predecessor, 'from', parentPredecessors, 'to');\n if (parentPreIndex !== -1) {\n parentPredecessors[parentPreIndex].offset = offset;\n }\n this_4.parent.setRecordValue('predecessor', parentPredecessors, parentTask.ganttProperties, true);\n };\n var this_4 = this;\n for (var i = 0; i < validPredecessor_1.length; i++) {\n _loop_5(i);\n }\n }\n else {\n var validPredecessor_2 = record.ganttProperties.predecessor;\n if (validPredecessor_2) {\n if (validPredecessor_2.length > 0) {\n validPredecessor_2.forEach(function (element) {\n _this.calculateOffset(_this.parent.getRecordByID(element.to));\n });\n }\n }\n }\n this.parent.setRecordValue('predecessor', prevPredecessor, record.ganttProperties, true);\n var predecessorString = this.parent.predecessorModule.getPredecessorStringValue(record);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.dependency, predecessorString, record);\n this.parent.setRecordValue(this.parent.taskFields.dependency, predecessorString, record);\n this.parent.setRecordValue('predecessorsName', predecessorString, record.ganttProperties, true);\n }\n };\n /**\n * Update predecessor value with user selection option in predecessor validation dialog\n *\n * @param {IGanttData} ganttRecord .\n * @param {IPredecessor[]} predecessor .\n * @returns {void} .\n */\n ConnectorLineEdit.prototype.removePredecessors = function (ganttRecord, predecessor) {\n var prevPredecessor = extend([], [], ganttRecord.ganttProperties.predecessor, true);\n if (isNullOrUndefined(predecessor)) {\n return;\n }\n var preLength = predecessor.length;\n for (var i = 0; i < preLength; i++) {\n var parentGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor[i].from);\n var parentPredecessor = extend([], [], parentGanttRecord.ganttProperties.predecessor, true);\n var index = getIndex(predecessor[i], 'from', prevPredecessor, 'to');\n prevPredecessor.splice(index, 1);\n var parentIndex = getIndex(predecessor[parseInt(i.toString(), 10)], 'from', parentPredecessor, 'to');\n parentPredecessor.splice(parentIndex, 1);\n this.parent.setRecordValue('predecessor', parentPredecessor, parentGanttRecord.ganttProperties, true);\n }\n if (prevPredecessor.length !== ganttRecord.ganttProperties.predecessor.length) {\n this.parent.setRecordValue('predecessor', prevPredecessor, ganttRecord.ganttProperties, true);\n var predecessorString = this.parent.predecessorModule.getPredecessorStringValue(ganttRecord);\n this.parent.setRecordValue('predecessorsName', predecessorString, ganttRecord.ganttProperties, true);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.dependency, predecessorString, ganttRecord);\n this.parent.setRecordValue(this.parent.taskFields.dependency, predecessorString, ganttRecord);\n }\n };\n /**\n * To open predecessor validation dialog\n *\n * @param {object} args .\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.openValidationDialog = function (args) {\n var contentTemplate = this.validationDialogTemplate(args);\n this.parent.validationDialogElement.setProperties({ content: contentTemplate });\n this.parent.validationDialogElement.show();\n };\n /**\n * Predecessor link validation dialog template\n *\n * @param {object} args .\n * @returns {HTMLElement} .\n * @private\n */\n ConnectorLineEdit.prototype.validationDialogTemplate = function (args) {\n var ganttId = this.parent.element.id;\n var contentdiv = createElement('div', {\n className: 'e-ValidationContent'\n });\n var taskData = getValue('task', args);\n var parenttaskData = getValue('parentTask', args);\n var violationType = getValue('violationType', args);\n var recordName = taskData.ganttProperties.taskName;\n var recordNewStartDate = this.parent.getFormatedDate(taskData.ganttProperties.startDate, 'MM/dd/yyyy');\n var parentName = parenttaskData.ganttProperties.taskName;\n var recordArgs = [recordName, parentName];\n var topContentText;\n if (violationType === 'taskBeforePredecessor_FS') {\n topContentText = this.parent.localeObj.getConstant('taskBeforePredecessor_FS');\n }\n else if (violationType === 'taskAfterPredecessor_FS') {\n topContentText = this.parent.localeObj.getConstant('taskAfterPredecessor_FS');\n }\n else if (violationType === 'taskBeforePredecessor_SS') {\n topContentText = this.parent.localeObj.getConstant('taskBeforePredecessor_SS');\n }\n else if (violationType === 'taskAfterPredecessor_SS') {\n topContentText = this.parent.localeObj.getConstant('taskAfterPredecessor_SS');\n }\n else if (violationType === 'taskBeforePredecessor_FF') {\n topContentText = this.parent.localeObj.getConstant('taskBeforePredecessor_FF');\n }\n else if (violationType === 'taskAfterPredecessor_FF') {\n topContentText = this.parent.localeObj.getConstant('taskAfterPredecessor_FF');\n }\n else if (violationType === 'taskBeforePredecessor_SF') {\n topContentText = this.parent.localeObj.getConstant('taskBeforePredecessor_SF');\n }\n else if (violationType === 'taskAfterPredecessor_SF') {\n topContentText = this.parent.localeObj.getConstant('taskAfterPredecessor_SF');\n }\n topContentText = formatString(topContentText, recordArgs);\n var topContent = '
      ' + topContentText + '
      ';\n var innerTable = '' +\n '' +\n '' +\n '
      ';\n contentdiv.innerHTML = topContent + innerTable;\n return contentdiv;\n };\n /**\n * To validate the types while editing the taskbar\n *\n * @param {IGanttData} ganttRecord .\n * @returns {boolean} .\n * @private\n */\n ConnectorLineEdit.prototype.validateTypes = function (ganttRecord, data) {\n var predecessor = this.parent.predecessorModule.getValidPredecessor(ganttRecord);\n var parentGanttRecord;\n this.validationPredecessor = [];\n var violatedParent;\n var ganttTaskData;\n var violateType;\n var startDate = this.parent.predecessorModule.getPredecessorDate(ganttRecord, predecessor);\n if (data) {\n ganttTaskData = data.ganttProperties;\n }\n else {\n ganttTaskData = ganttRecord.ganttProperties;\n }\n var endDate = this.parent.allowUnscheduledTasks && isNullOrUndefined(startDate) ?\n ganttTaskData.endDate :\n this.dateValidateModule.getEndDate(startDate, ganttTaskData.duration, ganttTaskData.durationUnit, ganttTaskData, false);\n for (var i = 0; i < predecessor.length; i++) {\n parentGanttRecord = this.parent.connectorLineModule.getRecordByID(predecessor[i].from);\n var violationType = null;\n if (predecessor[i].type === 'FS') {\n if (ganttTaskData.startDate < startDate) {\n this.validationPredecessor.push(predecessor[parseInt(i.toString(), 10)]);\n violationType = 'taskBeforePredecessor_FS';\n }\n else if (ganttTaskData.startDate > startDate) {\n this.validationPredecessor.push(predecessor[parseInt(i.toString(), 10)]);\n violationType = 'taskAfterPredecessor_FS';\n }\n }\n else if (predecessor[i].type === 'SS') {\n if (ganttTaskData.startDate < startDate) {\n this.validationPredecessor.push(predecessor[parseInt(i.toString(), 10)]);\n violationType = 'taskBeforePredecessor_SS';\n }\n else if (ganttTaskData.startDate > startDate) {\n this.validationPredecessor.push(predecessor[parseInt(i.toString(), 10)]);\n violationType = 'taskAfterPredecessor_SS';\n }\n }\n else if (predecessor[i].type === 'FF') {\n if (endDate <= parentGanttRecord.ganttProperties.endDate) {\n this.validationPredecessor.push(predecessor[parseInt(i.toString(), 10)]);\n violationType = 'taskBeforePredecessor_FF';\n }\n else if (endDate > parentGanttRecord.ganttProperties.endDate) {\n this.validationPredecessor.push(predecessor[parseInt(i.toString(), 10)]);\n violationType = 'taskAfterPredecessor_FF';\n }\n }\n else if (predecessor[i].type === 'SF') {\n if (endDate < parentGanttRecord.ganttProperties.startDate) {\n this.validationPredecessor.push(predecessor[parseInt(i.toString(), 10)]);\n violationType = 'taskBeforePredecessor_SF';\n }\n else if (endDate >= parentGanttRecord.ganttProperties.startDate) {\n this.validationPredecessor.push(predecessor[parseInt(i.toString(), 10)]);\n violationType = 'taskAfterPredecessor_SF';\n }\n }\n if (!isNullOrUndefined(violationType) && isNullOrUndefined(violateType)) {\n violatedParent = parentGanttRecord;\n violateType = violationType;\n }\n }\n var validateArgs = {\n parentTask: violatedParent,\n task: ganttRecord,\n violationType: violateType\n };\n return validateArgs;\n };\n /**\n * Method to remove and update new predecessor collection in successor record\n *\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.addRemovePredecessor = function (data) {\n var prevData = this.parent.previousRecords[data.uniqueID];\n var newPredecessor = data.ganttProperties.predecessor.slice();\n // eslint-disable-next-line\n if (prevData && prevData.ganttProperties && prevData.ganttProperties.hasOwnProperty('predecessor')) {\n var prevPredecessor_1 = prevData.ganttProperties.predecessor;\n if (!isNullOrUndefined(prevPredecessor_1)) {\n var _loop_6 = function (p) {\n var parentGanttRecord = this_5.parent.connectorLineModule.getRecordByID(prevPredecessor_1[parseInt(p.toString(), 10)].from);\n if (parentGanttRecord === data) {\n var isValid = data.ganttProperties.predecessor.filter(function (pred) {\n return prevPredecessor_1[p].from == pred.from && prevPredecessor_1[p].to == pred.to;\n });\n if (isValid.length == 0) {\n if (data.parentItem && this_5.parent.taskFields.dependency && data.ganttProperties.predecessor && this_5.parent.allowParentDependency) {\n if (prevPredecessor_1[p].from !== data.parentItem.taskId && prevPredecessor_1[p].to !== data.parentItem.taskId) {\n data.ganttProperties.predecessor.push(prevPredecessor_1[parseInt(p.toString(), 10)]);\n }\n }\n else {\n data.ganttProperties.predecessor.push(prevPredecessor_1[parseInt(p.toString(), 10)]);\n }\n }\n }\n else {\n var parentPredecessor = extend([], [], parentGanttRecord.ganttProperties.predecessor, true);\n var parentIndex = getIndex(prevPredecessor_1[parseInt(p.toString(), 10)], 'from', parentPredecessor, 'to');\n if (parentIndex !== -1) {\n parentPredecessor.splice(parentIndex, 1);\n this_5.parent.setRecordValue('predecessor', parentPredecessor, parentGanttRecord.ganttProperties, true);\n }\n }\n };\n var this_5 = this;\n for (var p = 0; p < prevPredecessor_1.length; p++) {\n _loop_6(p);\n }\n }\n if (!isNullOrUndefined(newPredecessor)) {\n var _loop_7 = function (n) {\n var parentGanttRecord = this_6.parent.connectorLineModule.getRecordByID(newPredecessor[parseInt(n.toString(), 10)].from);\n var parentPredecessor = extend([], [], parentGanttRecord.ganttProperties.predecessor, true);\n var isValid = parentPredecessor.filter(function (pred) {\n return newPredecessor[n].from == pred.from && newPredecessor[n].to == pred.to;\n });\n if (isValid.length == 0) {\n parentPredecessor.push(newPredecessor[parseInt(n.toString(), 10)]);\n this_6.parent.setRecordValue('predecessor', parentPredecessor, parentGanttRecord.ganttProperties, true);\n }\n };\n var this_6 = this;\n for (var n = 0; n < newPredecessor.length; n++) {\n _loop_7(n);\n }\n }\n }\n };\n /**\n * Method to remove a predecessor from a record.\n *\n * @param {IGanttData} childRecord .\n * @param {number} index .\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.removePredecessorByIndex = function (childRecord, index) {\n if (this.parent.undoRedoModule && !this.parent.undoRedoModule['isUndoRedoPerformed']) {\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['disableRedo']();\n }\n this.parent.undoRedoModule['createUndoCollection']();\n var details = {};\n details['action'] = 'DeleteDependency';\n details['modifiedRecords'] = extend([], [childRecord], [], true);\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = details;\n }\n var childPredecessor = childRecord.ganttProperties.predecessor;\n var predecessor = childPredecessor.splice(index, 1);\n var parentRecord = this.parent.connectorLineModule.getRecordByID(predecessor[0].from);\n var parentPredecessor = parentRecord.ganttProperties.predecessor;\n var parentIndex = getIndex(predecessor[0], 'from', parentPredecessor, 'to');\n parentPredecessor.splice(parentIndex, 1);\n var predecessorString = this.parent.predecessorModule.getPredecessorStringValue(childRecord);\n childPredecessor.push(predecessor[0]);\n this.parent.connectorLineEditModule.updatePredecessor(childRecord, predecessorString);\n };\n /**\n * To render predecessor delete confirmation dialog\n *\n * @returns {void} .\n * @private\n */\n ConnectorLineEdit.prototype.renderPredecessorDeleteConfirmDialog = function () {\n this.confirmPredecessorDialog = new Dialog({\n width: '320px',\n isModal: true,\n enableRtl: this.parent.enableRtl,\n content: this.parent.localeObj.getConstant('confirmPredecessorDelete'),\n buttons: [\n {\n click: this.confirmOkDeleteButton.bind(this),\n buttonModel: { content: this.parent.localeObj.getConstant('okText'), isPrimary: true }\n },\n {\n click: this.confirmCloseDialog.bind(this),\n buttonModel: { content: this.parent.localeObj.getConstant('cancel') }\n }\n ],\n target: this.parent.element,\n animationSettings: { effect: 'None' }\n });\n var confirmDialog = createElement('div', {\n id: this.parent.element.id + '_deletePredecessorConfirmDialog'\n });\n this.parent.element.appendChild(confirmDialog);\n this.confirmPredecessorDialog.isStringTemplate = true;\n this.confirmPredecessorDialog.appendTo(confirmDialog);\n };\n ConnectorLineEdit.prototype.confirmCloseDialog = function () {\n this.confirmPredecessorDialog.destroy();\n };\n ConnectorLineEdit.prototype.confirmOkDeleteButton = function () {\n this.removePredecessorByIndex(this.childRecord, this.predecessorIndex);\n this.confirmPredecessorDialog.destroy();\n };\n return ConnectorLineEdit;\n}());\nexport { ConnectorLineEdit };\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 { isNullOrUndefined, isUndefined, extend, setValue, getValue, deleteObject, createElement } from '@syncfusion/ej2-base';\nimport { DataManager, Query, ODataAdaptor, WebApiAdaptor, ODataV4Adaptor } from '@syncfusion/ej2-data';\nimport { getUid } from '@syncfusion/ej2-grids';\nimport { getSwapKey, isScheduledTask, getTaskData, isRemoteData, getIndex, isCountRequired, updateDates } from '../base/utils';\nimport { CellEdit } from './cell-edit';\nimport { TaskbarEdit } from './taskbar-edit';\nimport { DialogEdit } from './dialog-edit';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { MultiSelect, CheckBoxSelection, DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { ConnectorLineEdit } from './connector-line-edit';\n/**\n * The Edit Module is used to handle editing actions.\n *\n */\nvar Edit = /** @class */ (function () {\n function Edit(parent) {\n this.isFromDeleteMethod = false;\n this.targetedRecords = [];\n this.isNewRecordAdded = false;\n this.isValidatedEditedRecord = false;\n this.createArray = true;\n /** @hidden */\n this.updateParentRecords = [];\n /** @hidden */\n this.isaddtoBottom = false;\n this.confirmDialog = null;\n this.taskbarMoved = false;\n this.predecessorUpdated = false;\n this.isBreakLoop = false;\n /**\n * @private\n */\n this.deletedTaskDetails = [];\n this.parent = parent;\n this.parent.predecessorModule.validatedChildItems = [];\n if (this.parent.editSettings.allowEditing && this.parent.editSettings.mode === 'Auto') {\n this.cellEditModule = new CellEdit(this.parent);\n }\n if (this.parent.taskFields.dependency) {\n this.parent.connectorLineEditModule = new ConnectorLineEdit(this.parent);\n }\n if (this.parent.editSettings.allowAdding || (this.parent.editSettings.allowEditing &&\n (this.parent.editSettings.mode === 'Dialog' || this.parent.editSettings.mode === 'Auto'))) {\n this.dialogModule = new DialogEdit(this.parent);\n }\n if (this.parent.editSettings.allowTaskbarEditing) {\n this.taskbarEditModule = new TaskbarEdit(this.parent);\n }\n if (this.parent.editSettings.allowDeleting) {\n var confirmDialog = createElement('div', {\n id: this.parent.element.id + '_deleteConfirmDialog'\n });\n this.parent.element.appendChild(confirmDialog);\n this.renderDeleteConfirmDialog();\n }\n this.parent.treeGrid.recordDoubleClick = this.recordDoubleClick.bind(this);\n this.parent.treeGrid.editSettings.allowAdding = this.parent.editSettings.allowAdding;\n this.parent.treeGrid.editSettings.allowDeleting = this.parent.editSettings.allowDeleting;\n this.parent.treeGrid.editSettings.showDeleteConfirmDialog = this.parent.editSettings.showDeleteConfirmDialog;\n this.parent.treeGrid.editSettings.allowNextRowEdit = this.parent.editSettings.allowNextRowEdit;\n this.updateDefaultColumnEditors();\n }\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * Method to update default edit params and editors for Gantt\n *\n * @returns {void} .\n */\n Edit.prototype.updateDefaultColumnEditors = function () {\n var customEditorColumns = [this.parent.taskFields.id, this.parent.taskFields.progress, this.parent.taskFields.resourceInfo, 'taskType'];\n for (var i = 0; i < customEditorColumns.length; i++) {\n if (!isNullOrUndefined(customEditorColumns[i]) && customEditorColumns[i].length > 0) {\n // eslint-disable-next-line\n var column = this.parent.getColumnByField(customEditorColumns[i], this.parent.treeGridModule.treeGridColumns);\n if (column) {\n if (column.field === this.parent.taskFields.id) {\n this.updateIDColumnEditParams(column);\n }\n else if (column.field === this.parent.taskFields.progress && isNullOrUndefined(column.edit)) {\n this.updateProgessColumnEditParams(column);\n }\n else if (column.field === this.parent.taskFields.resourceInfo) {\n this.updateResourceColumnEditor(column);\n }\n else if (column.field === 'taskType') {\n this.updateTaskTypeColumnEditor(column);\n }\n }\n }\n }\n };\n /**\n * Method to update editors for id column in Gantt\n *\n * @param {ColumnModel} column .\n * @returns {void} .\n */\n Edit.prototype.updateIDColumnEditParams = function (column) {\n var editParam = {\n min: 0,\n decimals: 0,\n enableRtl: this.parent.enableRtl,\n validateDecimalOnType: true,\n format: 'n0',\n showSpinButton: false\n };\n this.updateEditParams(column, editParam);\n };\n /**\n * Method to update edit params of default progress column\n *\n * @param {ColumnModel} column .\n * @returns {void} .\n */\n Edit.prototype.updateProgessColumnEditParams = function (column) {\n var editParam = {\n min: 0,\n enableRtl: this.parent.enableRtl,\n decimals: 0,\n validateDecimalOnType: true,\n max: 100,\n format: 'n0'\n };\n this.updateEditParams(column, editParam);\n };\n /**\n * Assign edit params for id and progress columns\n *\n * @param {ColumnModel} column .\n * @param {object} editParam .\n * @returns {void} .\n */\n Edit.prototype.updateEditParams = function (column, editParam) {\n if (isNullOrUndefined(column.edit)) {\n column.edit = {};\n column.edit.params = {};\n }\n else if (isNullOrUndefined(column.edit.params)) {\n column.edit.params = {};\n }\n extend(editParam, column.edit.params);\n column.edit.params = editParam;\n var ganttColumn = this.parent.getColumnByField(column.field, this.parent.ganttColumns);\n ganttColumn.edit = column.edit;\n };\n /**\n * Method to update resource column editor for default resource column\n *\n * @param {ColumnModel} column .\n * @returns {void} .\n */\n Edit.prototype.updateResourceColumnEditor = function (column) {\n if (this.parent.editSettings.allowEditing && isNullOrUndefined(column.edit) && this.parent.editSettings.mode === 'Auto') {\n column.editType = 'dropdownedit';\n column.edit = this.getResourceEditor();\n var ganttColumn = this.parent.getColumnByField(column.field, this.parent.ganttColumns);\n ganttColumn.editType = 'dropdownedit';\n ganttColumn.edit = column.edit;\n }\n };\n /**\n * Method to create resource custom editor\n *\n * @returns {IEditCell} .\n */\n Edit.prototype.getResourceEditor = function () {\n var _this = this;\n var resourceSettings = this.parent.resourceFields;\n var editObject = {};\n var editor;\n MultiSelect.Inject(CheckBoxSelection);\n editObject.write = function (args) {\n _this.parent.treeGridModule.currentEditRow = {};\n editor = new MultiSelect({\n dataSource: new DataManager(_this.parent.resources),\n fields: { text: resourceSettings.name, value: resourceSettings.id },\n enableRtl: _this.parent.enableRtl,\n mode: 'CheckBox',\n showDropDownIcon: true,\n popupHeight: '350px',\n delimiterChar: ',',\n value: _this.parent.treeGridModule.getResourceIds(args.rowData)\n });\n editor.appendTo(args.element);\n };\n editObject.read = function (element) {\n var value = element.ej2_instances[0].value;\n var resourcesName = [];\n if (isNullOrUndefined(value)) {\n value = [];\n }\n for (var i = 0; i < value.length; i++) {\n for (var j = 0; j < _this.parent.resources.length; j++) {\n if (_this.parent.resources[j][resourceSettings.id] === value[i]) {\n resourcesName.push(_this.parent.resources[j][resourceSettings.name]);\n break;\n }\n }\n }\n _this.parent.treeGridModule.currentEditRow[_this.parent.taskFields.resourceInfo] = value;\n return resourcesName.join(',');\n };\n editObject.destroy = function () {\n if (editor) {\n editor.destroy();\n }\n };\n return editObject;\n };\n /**\n * Method to update task type column editor for task type\n *\n * @param {ColumnModel} column .\n * @returns {void} .\n */\n Edit.prototype.updateTaskTypeColumnEditor = function (column) {\n if (this.parent.editSettings.allowEditing && isNullOrUndefined(column.edit) && this.parent.editSettings.mode === 'Auto') {\n column.editType = 'dropdownedit';\n column.edit = this.getTaskTypeEditor();\n var ganttColumn = this.parent.getColumnByField(column.field, this.parent.ganttColumns);\n ganttColumn.editType = 'dropdownedit';\n ganttColumn.edit = column.edit;\n }\n };\n /**\n * Method to create task type custom editor\n *\n * @returns {IEditCell} .\n */\n Edit.prototype.getTaskTypeEditor = function () {\n var _this = this;\n var editObject = {};\n var editor;\n var types = [{ 'ID': 1, 'Value': 'FixedUnit' }, { 'ID': 2, 'Value': 'FixedWork' }, { 'ID': 3, 'Value': 'FixedDuration' }];\n editObject.write = function (args) {\n _this.parent.treeGridModule.currentEditRow = {};\n editor = new DropDownList({\n dataSource: new DataManager(types),\n enableRtl: _this.parent.enableRtl,\n fields: { value: 'Value' },\n popupHeight: '350px',\n value: getValue('taskType', args.rowData.ganttProperties)\n });\n editor.appendTo(args.element);\n };\n editObject.read = function (element) {\n var value = element.ej2_instances[0].value;\n var key = 'taskType';\n _this.parent.treeGridModule.currentEditRow[key] = value;\n return value;\n };\n editObject.destroy = function () {\n if (editor) {\n editor.destroy();\n }\n };\n return editObject;\n };\n /**\n * @returns {void} .\n * @private\n */\n Edit.prototype.reUpdateEditModules = function () {\n var editSettings = this.parent.editSettings;\n if (editSettings.allowEditing) {\n if (this.parent.editModule.cellEditModule && editSettings.mode === 'Dialog') {\n this.cellEditModule.destroy();\n this.parent.treeGrid.recordDoubleClick = this.recordDoubleClick.bind(this);\n }\n else if (isNullOrUndefined(this.parent.editModule.cellEditModule) && editSettings.mode === 'Auto') {\n this.cellEditModule = new CellEdit(this.parent);\n }\n if (this.parent.editModule.dialogModule && editSettings.mode === 'Auto') {\n this.parent.treeGrid.recordDoubleClick = undefined;\n }\n else if (isNullOrUndefined(this.parent.editModule.dialogModule)) {\n this.dialogModule = new DialogEdit(this.parent);\n }\n }\n else {\n if (this.cellEditModule) {\n this.cellEditModule.destroy();\n }\n if (this.dialogModule) {\n this.dialogModule.destroy();\n }\n }\n if (editSettings.allowDeleting && editSettings.showDeleteConfirmDialog) {\n if (isNullOrUndefined(this.confirmDialog)) {\n var confirmDialog = createElement('div', {\n id: this.parent.element.id + '_deleteConfirmDialog'\n });\n this.parent.element.appendChild(confirmDialog);\n this.renderDeleteConfirmDialog();\n }\n }\n else if (!editSettings.allowDeleting || !editSettings.showDeleteConfirmDialog) {\n if (this.confirmDialog && !this.confirmDialog.isDestroyed) {\n this.confirmDialog.destroy();\n }\n }\n if (editSettings.allowTaskbarEditing) {\n if (isNullOrUndefined(this.parent.editModule.taskbarEditModule)) {\n this.taskbarEditModule = new TaskbarEdit(this.parent);\n }\n }\n else {\n if (this.taskbarEditModule) {\n this.taskbarEditModule.destroy();\n }\n }\n };\n Edit.prototype.recordDoubleClick = function (args) {\n if (this.parent.editSettings.allowEditing && this.parent.editSettings.mode === 'Dialog') {\n var ganttData = void 0;\n if (args.row) {\n var rowIndex = getValue('rowIndex', args.row);\n ganttData = this.parent.currentViewData[rowIndex];\n }\n if (!isNullOrUndefined(ganttData)) {\n this.dialogModule.openEditDialog(ganttData);\n }\n }\n this.parent.ganttChartModule.recordDoubleClick(args);\n };\n /**\n * @returns {void} .\n * @private\n */\n Edit.prototype.destroy = function () {\n if (this.cellEditModule) {\n this.cellEditModule.destroy();\n }\n if (this.taskbarEditModule) {\n this.taskbarEditModule.destroy();\n }\n if (this.dialogModule) {\n this.dialogModule.destroy();\n }\n if (this.confirmDialog && !this.confirmDialog.isDestroyed) {\n this.confirmDialog.destroy();\n }\n };\n /**\n * Method to update record with new values.\n *\n * @param {Object} data - Defines new data to update.\n * @returns {void} .\n */\n Edit.prototype.updateRecordByID = function (data) {\n if (!this.parent.readOnly) {\n var tasks = this.parent.taskFields;\n if (isNullOrUndefined(data) || isNullOrUndefined(data[tasks.id])) {\n return;\n }\n var ganttData = this.parent.viewType === 'ResourceView' ?\n this.parent.flatData[this.parent.getTaskIds().indexOf('T' + data[tasks.id])] : this.parent.getRecordByID(data[tasks.id]);\n if (this.parent.undoRedoModule && !this.parent.undoRedoModule['isUndoRedoPerformed'] && this.parent['isUndoRedoItemPresent']('Edit') && ganttData) {\n this.parent.undoRedoModule['createUndoCollection']();\n var details = {};\n details['requestType'] = ((this.parent.contextMenuModule && this.parent.contextMenuModule.item) ? this.parent.contextMenuModule.item : 'methodUpdate');\n details['modifiedRecords'] = extend([], [ganttData], [], true);\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = details;\n }\n if (!isNullOrUndefined(this.parent.editModule) && ganttData) {\n this.parent.isOnEdit = true;\n this.validateUpdateValues(data, ganttData, true);\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed']) {\n if (this.parent.viewType == 'ProjectView' && data['ganttProperties'].predecessor) {\n var _loop_1 = function (i) {\n var isValid = ganttData.ganttProperties.predecessor.filter(function (pred) {\n return pred.from != data['ganttProperties'].predecessor[i].from && pred.from != data['ganttProperties'].predecessor[i].to;\n });\n if (isValid.length > 0) {\n for (var j = 0; j < isValid.length; j++) {\n var record = this_1.parent.flatData[this_1.parent.ids.indexOf(isValid[j].from)];\n for (var k = 0; k < record.ganttProperties.predecessor.length; k++) {\n if (record.ganttProperties.predecessor[k].from == isValid[j].from && record.ganttProperties.predecessor[k].to == isValid[j].to) {\n record.ganttProperties.predecessor.splice(k, 1);\n break;\n }\n }\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0; i < data['ganttProperties'].predecessor.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n }\n else if (!data['ganttProperties'].predecessor && ganttData.ganttProperties.predecessor) {\n for (var i = 0; i < ganttData.ganttProperties.predecessor.length; i++) {\n var id = void 0;\n if (ganttData.ganttProperties.taskId.toString() == ganttData.ganttProperties.predecessor[i].from) {\n id = ganttData.ganttProperties.predecessor[i].to;\n }\n else {\n id = ganttData.ganttProperties.predecessor[i].from;\n }\n var parentRec = this.parent.flatData[this.parent.ids.indexOf(id)];\n for (var j = 0; j < parentRec.ganttProperties.predecessor.length; j++) {\n if (parentRec.ganttProperties.predecessor[j].from == ganttData.ganttProperties.predecessor[i].from && parentRec.ganttProperties.predecessor[j].to == ganttData.ganttProperties.predecessor[i].to) {\n parentRec.ganttProperties.predecessor.splice(j, 1);\n }\n }\n }\n }\n ganttData.ganttProperties.resourceInfo = data['ganttProperties'].resourceInfo;\n }\n if (data[this.parent.taskFields.resourceInfo]) {\n if (ganttData.ganttProperties.duration === 0) {\n this.parent.dataOperation.updateWorkWithDuration(ganttData);\n }\n if (!this.parent.undoRedoModule || !this.parent.undoRedoModule['isUndoRedoPerformed']) {\n this.updateResourceRelatedFields(ganttData, 'resource');\n }\n this.parent.dateValidationModule.calculateEndDate(ganttData);\n }\n var keys = Object.keys(data);\n if (keys.indexOf(tasks.startDate) !== -1 || keys.indexOf(tasks.endDate) !== -1 ||\n keys.indexOf(tasks.duration) !== -1) {\n this.parent.dataOperation.calculateScheduledValues(ganttData, ganttData.taskData, false);\n }\n this.parent.dataOperation.updateWidthLeft(ganttData);\n if (!isUndefined(data[this.parent.taskFields.dependency]) &&\n data[this.parent.taskFields.dependency] !== ganttData.ganttProperties.predecessorsName) {\n this.parent.connectorLineEditModule.updatePredecessor(ganttData, data[this.parent.taskFields.dependency]);\n }\n else {\n var args = {};\n args.data = ganttData;\n if (this.parent.viewType === 'ResourceView') {\n args.action = 'methodUpdate';\n }\n this.parent.editModule.initiateUpdateAction(args);\n }\n }\n }\n };\n /**\n *\n * @param {object} data .\n * @param {IGanttData} ganttData .\n * @param {boolean} isFromDialog .\n * @returns {void} .\n * @private\n */\n Edit.prototype.validateUpdateValues = function (data, ganttData, isFromDialog) {\n var ganttObj = this.parent;\n var tasks = ganttObj.taskFields;\n var ganttPropByMapping = getSwapKey(ganttObj.columnMapping);\n var scheduleFieldNames = [];\n var isScheduleValueUpdated = false;\n if (!isNullOrUndefined(ganttData[tasks.milestone])) {\n if (ganttData[tasks.milestone] === true) {\n ganttData[tasks.milestone] = false;\n }\n }\n for (var _i = 0, _b = Object.keys(data); _i < _b.length; _i++) {\n var key = _b[_i];\n if ([tasks.startDate, tasks.endDate, tasks.duration].indexOf(key) !== -1) {\n if (isNullOrUndefined(data[\"\" + key]) && !ganttObj.allowUnscheduledTasks) {\n continue;\n }\n if (isFromDialog) {\n if (tasks.duration === key) {\n ganttObj.dataOperation.updateDurationValue(data[key], ganttData.ganttProperties);\n if (ganttData.ganttProperties.duration > 0 && ganttData.ganttProperties.isMilestone) {\n this.parent.setRecordValue('isMilestone', false, ganttData.ganttProperties, true);\n }\n ganttObj.dataOperation.updateMappingData(ganttData, ganttPropByMapping[key]);\n }\n else {\n var tempDate = typeof data[key] === 'string' ? new Date(data[key]) : data[key];\n if (key === tasks.endDate && isNullOrUndefined(ganttData.ganttProperties.startDate) && (isNullOrUndefined(data[tasks.duration]) || data[tasks.duration] === \"\" || Number.isNaN(data[tasks.duration]))) {\n tempDate = ganttData.ganttProperties.endDate;\n }\n ganttObj.setRecordValue(ganttPropByMapping[key], tempDate, ganttData.ganttProperties, true);\n ganttObj.dataOperation.updateMappingData(ganttData, ganttPropByMapping[key]);\n }\n }\n else {\n scheduleFieldNames.push(key);\n isScheduleValueUpdated = true;\n }\n }\n else if (tasks.resourceInfo === key) {\n var resourceData = ganttObj.dataOperation.setResourceInfo(data);\n if (this.parent.viewType === 'ResourceView') {\n if (JSON.stringify(resourceData) !== JSON.stringify(ganttData.ganttProperties.resourceInfo)) {\n this.parent.editModule.dialogModule.isResourceUpdate = true;\n this.parent.editModule.dialogModule.previousResource = !isNullOrUndefined(ganttData.ganttProperties.resourceInfo) ? ganttData.ganttProperties.resourceInfo.slice() : [];\n }\n else {\n this.parent.editModule.dialogModule.isResourceUpdate = false;\n }\n }\n if (!this.parent.undoRedoModule || !this.parent.undoRedoModule['isUndoRedoPerformed']) {\n ganttData.ganttProperties.resourceInfo = resourceData;\n }\n ganttObj.dataOperation.updateMappingData(ganttData, 'resourceInfo');\n }\n else if (tasks.dependency === key) {\n //..\n }\n else if ([tasks.progress, tasks.notes, tasks.durationUnit, tasks.expandState,\n tasks.milestone, tasks.name, tasks.baselineStartDate,\n tasks.baselineEndDate, tasks.id, tasks.segments, tasks.cssClass].indexOf(key) !== -1) {\n var column = ganttObj.columnByField[key];\n /* eslint-disable-next-line */\n var value = data[key];\n if (!isNullOrUndefined(column) && (column.editType === 'datepickeredit' || column.editType === 'datetimepickeredit')) {\n value = ganttObj.dataOperation.getDateFromFormat(value);\n }\n var ganttPropKey = ganttPropByMapping[key];\n if (key === tasks.id) {\n ganttPropKey = 'taskId';\n }\n else if (key === tasks.name) {\n ganttPropKey = 'taskName';\n }\n else if (key === tasks.cssClass) {\n ganttPropKey = 'cssClass';\n }\n else if (key === tasks.milestone) {\n ganttPropKey = 'isMilestone';\n if (!isNullOrUndefined(tasks.duration)) {\n var ganttProp = ganttData.ganttProperties;\n var durationValue = data[tasks.duration];\n if (value) {\n durationValue = 0;\n }\n else {\n durationValue = durationValue <= 0 ? 1 : durationValue;\n }\n ganttObj.setRecordValue(tasks.duration, durationValue, ganttData, true);\n ganttObj.setRecordValue('duration', durationValue, ganttProp, true);\n ganttObj.setRecordValue('taskData.' + tasks.duration, durationValue, ganttData);\n }\n }\n else if ((key === tasks.segments) && (!isNullOrUndefined(ganttData.ganttProperties.segments))) {\n ganttPropKey = 'segments';\n /* eslint-disable-next-line */\n if (data && !isNullOrUndefined(data[this.parent.taskFields.segments]) && data[this.parent.taskFields.segments].length > 0) {\n var totDuration = 0;\n for (var i = 0; i < ganttData.ganttProperties.segments.length; i++) {\n totDuration = totDuration + ganttData.ganttProperties.segments[i].duration;\n }\n var sdate = ganttData.ganttProperties.startDate;\n /* eslint-disable-next-line */\n var edate = this.parent.dataOperation.getEndDate(sdate, totDuration, ganttData.ganttProperties.durationUnit, ganttData.ganttProperties, false);\n ganttObj.setRecordValue('endDate', ganttObj.dataOperation.getDateFromFormat(edate), ganttData.ganttProperties, true);\n }\n }\n if (!isNullOrUndefined(ganttPropKey)) {\n ganttObj.setRecordValue(ganttPropKey, value, ganttData.ganttProperties, true);\n }\n if ((key === tasks.baselineStartDate || key === tasks.baselineEndDate) &&\n (ganttData.ganttProperties.baselineStartDate && ganttData.ganttProperties.baselineEndDate)) {\n ganttObj.setRecordValue('baselineStartDate', ganttObj.dataOperation.checkBaselineStartDate(ganttData.ganttProperties.baselineStartDate), ganttData.ganttProperties, true);\n if (ganttData.ganttProperties.baselineEndDate && ganttData.ganttProperties.baselineEndDate.getHours() === 0 && this.parent.defaultEndTime !== 86400) {\n ganttObj.dataOperation.setTime(this.parent.defaultEndTime, ganttData.ganttProperties.baselineEndDate);\n }\n if ((ganttData.ganttProperties.baselineStartDate && ganttData.ganttProperties.baselineEndDate &&\n (ganttData.ganttProperties.baselineStartDate.getTime() > ganttData.ganttProperties.baselineEndDate.getTime())) ||\n ((!isNullOrUndefined(ganttData.ganttProperties.baselineStartDate) && !isNullOrUndefined(ganttData.ganttProperties.startDate) && (ganttData.ganttProperties.baselineStartDate.getTime() === ganttData.ganttProperties.startDate.getTime()))\n && (!isNullOrUndefined(ganttData.ganttProperties.baselineEndDate) && !isNullOrUndefined(ganttData.ganttProperties.endDate) && (ganttData.ganttProperties.baselineEndDate.toLocaleDateString() === ganttData.ganttProperties.endDate.toLocaleDateString())) &&\n ganttData.ganttProperties.isMilestone)) {\n ganttData.ganttProperties.baselineEndDate = ganttData.ganttProperties.baselineStartDate;\n }\n ganttObj.setRecordValue('baselineEndDate', ganttObj.dataOperation.checkBaselineEndDate(ganttData.ganttProperties.baselineEndDate), ganttData.ganttProperties, true);\n ganttObj.setRecordValue('baselineLeft', ganttObj.dataOperation.calculateBaselineLeft(ganttData.ganttProperties), ganttData.ganttProperties, true);\n ganttObj.setRecordValue('baselineWidth', ganttObj.dataOperation.calculateBaselineWidth(ganttData.ganttProperties), ganttData.ganttProperties, true);\n }\n ganttObj.setRecordValue('taskData.' + key, value, ganttData);\n /* eslint-disable-next-line */\n if (key === tasks.segments && data && !isNullOrUndefined(data[this.parent.taskFields.segments]) && data[this.parent.taskFields.segments].length > 0) {\n ganttObj.dataOperation.setSegmentsInfo(ganttData, true);\n }\n ganttObj.setRecordValue(key, value, ganttData);\n }\n else if (tasks.indicators === key) {\n var value = data[key];\n ganttObj.setRecordValue('indicators', value, ganttData.ganttProperties, true);\n ganttObj.setRecordValue('taskData.' + key, value, ganttData);\n ganttObj.setRecordValue(key, value, ganttData);\n }\n else if (tasks.work === key) {\n ganttObj.setRecordValue('work', data[key], ganttData.ganttProperties, true);\n this.parent.dataOperation.updateMappingData(ganttData, 'work');\n this.parent.dataOperation.updateMappingData(ganttData, 'duration');\n this.parent.dataOperation.updateMappingData(ganttData, 'endDate');\n }\n else if (key === tasks.type) {\n ganttObj.setRecordValue('taskType', data[key], ganttData.ganttProperties, true);\n //this.parent.dataOperation.updateMappingData(ganttData, 'taskType');\n }\n else if (ganttObj.customColumns.indexOf(key) !== -1) {\n var column = ganttObj.columnByField[key];\n /* eslint-disable-next-line */\n var value = data[key];\n if (isNullOrUndefined(column.edit)) {\n if (column.editType === 'datepickeredit' || column.editType === 'datetimepickeredit') {\n value = ganttObj.dataOperation.getDateFromFormat(value);\n }\n }\n ganttObj.setRecordValue('taskData.' + key, value, ganttData);\n ganttObj.setRecordValue(key, value, ganttData);\n }\n else if (tasks.manual === key) {\n ganttObj.setRecordValue('isAutoSchedule', !data[key], ganttData.ganttProperties, true);\n this.parent.setRecordValue(key, data[key], ganttData);\n this.updateTaskScheduleModes(ganttData);\n }\n }\n if (isScheduleValueUpdated) {\n this.validateScheduleValues(scheduleFieldNames, ganttData, data);\n }\n };\n /**\n * To update duration, work, resource unit\n *\n * @param {IGanttData} currentData .\n * @param {string} column .\n * @returns {void} .\n */\n Edit.prototype.updateResourceRelatedFields = function (currentData, column) {\n var ganttProp = currentData.ganttProperties;\n var taskType = ganttProp.taskType;\n var isEffectDriven;\n var isAutoSchedule = ganttProp.isAutoSchedule;\n if (!isNullOrUndefined(ganttProp.resourceInfo)) {\n if (ganttProp.work > 0 || column === 'work') {\n switch (taskType) {\n case 'FixedUnit':\n if (ganttProp.resourceInfo.length === 0) {\n return;\n }\n else if (isAutoSchedule && ganttProp.resourceInfo.length &&\n (column === 'work' || (column === 'resource'))) {\n this.parent.dataOperation.updateDurationWithWork(currentData);\n }\n else if (!isAutoSchedule && column === 'work') {\n this.parent.dataOperation.updateUnitWithWork(currentData);\n }\n else {\n this.parent.dataOperation.updateWorkWithDuration(currentData);\n }\n break;\n case 'FixedWork':\n if (ganttProp.resourceInfo.length === 0) {\n return;\n }\n else if (isAutoSchedule) {\n if (column === 'duration' || column === 'endDate') {\n this.parent.dataOperation.updateUnitWithWork(currentData);\n if (ganttProp.duration === 0) {\n this.parent.setRecordValue('work', 0, ganttProp, true);\n if (!isNullOrUndefined(this.parent.taskFields.work)) {\n this.parent.dataOperation.updateMappingData(currentData, 'work');\n }\n }\n }\n else {\n this.parent.dataOperation.updateDurationWithWork(currentData);\n }\n }\n else {\n if (column === 'work') {\n this.parent.dataOperation.updateUnitWithWork(currentData);\n }\n else {\n this.parent.dataOperation.updateWorkWithDuration(currentData);\n }\n }\n break;\n case 'FixedDuration':\n if (ganttProp.resourceInfo.length && (column === 'work' || (isAutoSchedule &&\n isEffectDriven && (column === 'resource')))) {\n this.parent.dataOperation.updateUnitWithWork(currentData);\n }\n else {\n this.parent.dataOperation.updateWorkWithDuration(currentData);\n }\n break;\n }\n }\n else {\n this.parent.dataOperation.updateWorkWithDuration(currentData);\n }\n }\n };\n Edit.prototype.validateScheduleValues = function (fieldNames, ganttData, data) {\n var ganttObj = this.parent;\n if (fieldNames.length > 2) {\n ganttObj.dataOperation.calculateScheduledValues(ganttData, data, false);\n }\n else if (fieldNames.length > 1) {\n this.validateScheduleByTwoValues(data, fieldNames, ganttData);\n }\n else {\n this.dialogModule.validateScheduleValuesByCurrentField(fieldNames[0], data[fieldNames[0]], ganttData);\n }\n };\n Edit.prototype.validateScheduleByTwoValues = function (data, fieldNames, ganttData) {\n var ganttObj = this.parent;\n var startDate;\n var endDate;\n var duration;\n var tasks = ganttObj.taskFields;\n var ganttProp = ganttData.ganttProperties;\n var isUnscheduledTask = ganttObj.allowUnscheduledTasks;\n if (fieldNames.indexOf(tasks.startDate) !== -1) {\n startDate = data[tasks.startDate];\n }\n if (fieldNames.indexOf(tasks.endDate) !== -1) {\n endDate = data[tasks.endDate];\n }\n if (fieldNames.indexOf(tasks.duration) !== -1) {\n duration = data[tasks.duration];\n }\n if (startDate && endDate || (isUnscheduledTask && (fieldNames.indexOf(tasks.startDate) !== -1) &&\n (fieldNames.indexOf(tasks.endDate) !== -1))) {\n ganttObj.setRecordValue('startDate', ganttObj.dataOperation.getDateFromFormat(startDate), ganttProp, true);\n ganttObj.setRecordValue('endDate', ganttObj.dataOperation.getDateFromFormat(endDate), ganttProp, true);\n ganttObj.dataOperation.calculateDuration(ganttData);\n }\n else if (endDate && duration || (isUnscheduledTask &&\n (fieldNames.indexOf(tasks.endDate) !== -1) && (fieldNames.indexOf(tasks.duration) !== -1))) {\n ganttObj.setRecordValue('endDate', ganttObj.dataOperation.getDateFromFormat(endDate), ganttProp, true);\n ganttObj.dataOperation.updateDurationValue(duration, ganttProp);\n }\n else if (startDate && duration || (isUnscheduledTask && (fieldNames.indexOf(tasks.startDate) !== -1)\n && (fieldNames.indexOf(tasks.duration) !== -1))) {\n ganttObj.setRecordValue('startDate', ganttObj.dataOperation.getDateFromFormat(startDate), ganttProp, true);\n ganttObj.dataOperation.updateDurationValue(duration, ganttProp);\n }\n };\n Edit.prototype.isTaskbarMoved = function (data) {\n var isMoved = false;\n var taskData = data.ganttProperties;\n var prevData = this.parent.previousRecords &&\n this.parent.previousRecords[data.uniqueID];\n if (prevData && prevData.ganttProperties) {\n var prevStart = getValue('ganttProperties.startDate', prevData);\n var prevEnd = getValue('ganttProperties.endDate', prevData);\n var prevDuration = getValue('ganttProperties.duration', prevData);\n var prevDurationUnit = getValue('ganttProperties.durationUnit', prevData);\n var keys = Object.keys(prevData.ganttProperties);\n if (keys.indexOf('startDate') !== -1 || keys.indexOf('endDate') !== -1 ||\n keys.indexOf('duration') !== -1 || keys.indexOf('durationUnit') !== -1) {\n if ((isNullOrUndefined(prevStart) && !isNullOrUndefined(taskData.startDate)) ||\n (isNullOrUndefined(prevEnd) && !isNullOrUndefined(taskData.endDate)) ||\n (isNullOrUndefined(taskData.startDate) && !isNullOrUndefined(prevStart)) ||\n (isNullOrUndefined(taskData.endDate) && !isNullOrUndefined(prevEnd)) ||\n (prevStart && prevStart.getTime() !== taskData.startDate.getTime())\n || (prevEnd && prevEnd.getTime() !== taskData.endDate.getTime())\n || (!isNullOrUndefined(prevDuration) && prevDuration !== taskData.duration)\n || (!isNullOrUndefined(prevDuration) && prevDuration === taskData.duration &&\n prevDurationUnit !== taskData.durationUnit)) {\n isMoved = true;\n }\n }\n }\n return isMoved;\n };\n Edit.prototype.isPredecessorUpdated = function (data) {\n var isPredecessorUpdated = false;\n var prevData = this.parent.previousRecords[data.uniqueID];\n // eslint-disable-next-line\n if (prevData && prevData.ganttProperties && prevData.ganttProperties.hasOwnProperty('predecessor')) {\n if (data.ganttProperties.predecessorsName !== prevData.ganttProperties.predecessorsName) {\n isPredecessorUpdated = true;\n }\n else {\n this.parent.setRecordValue('predecessor', prevData.ganttProperties.predecessor, data.ganttProperties, true);\n }\n }\n return isPredecessorUpdated;\n };\n /**\n * Method to check need to open predecessor validate dialog\n *\n * @param {IGanttData} data .\n * @returns {boolean} .\n */\n Edit.prototype.isCheckPredecessor = function (data) {\n var isValidatePredecessor = false;\n var prevData = this.parent.previousRecords[data.uniqueID];\n if (prevData && this.parent.taskFields.dependency && this.parent.isInPredecessorValidation &&\n this.parent.predecessorModule.getValidPredecessor(data).length > 0) {\n if (this.isTaskbarMoved(data)) {\n isValidatePredecessor = true;\n }\n }\n return isValidatePredecessor;\n };\n /**\n * Method to copy the ganttProperties values\n *\n * @param {IGanttData} data .\n * @param {IGanttData} updateData .\n * @returns {void} .\n * @private\n */\n Edit.prototype.updateGanttProperties = function (data, updateData) {\n var skipProperty = ['taskId', 'uniqueID', 'rowUniqueID', 'parentId'];\n Object.keys(data.ganttProperties).forEach(function (property) {\n if (skipProperty.indexOf(property) === -1) {\n updateData.ganttProperties[property] = data.ganttProperties[property];\n }\n });\n };\n /**\n * Method to update all dependent record on edit action\n *\n * @param {ITaskAddedEventArgs} args .\n * @returns {void} .\n * @private\n */\n Edit.prototype.initiateUpdateAction = function (args) {\n var isValidatePredecessor = this.isCheckPredecessor(args.data);\n var parentData;\n var childRecordIndex;\n if (!isNullOrUndefined(args.data.parentItem) && !isValidatePredecessor) {\n parentData = this.parent.getRecordByID(args.data.parentItem.taskId);\n if (this.isTaskbarMoved(args.data) && this.parent.predecessorModule.getValidPredecessor(parentData).length > 0\n && this.parent.isInPredecessorValidation) {\n isValidatePredecessor = true;\n }\n else {\n isValidatePredecessor = false;\n }\n }\n else if (args.data.childRecords.length > 0 && !isValidatePredecessor) {\n isValidatePredecessor = this.isCheckPredecessor(args.data);\n if (!isValidatePredecessor && this.isTaskbarMoved(args.data)) {\n for (var i = 0; i < args.data.childRecords.length; i++) {\n if (this.parent.predecessorModule.getValidPredecessor(args.data.childRecords[i]).length > 0) {\n childRecordIndex = i;\n isValidatePredecessor = true;\n }\n }\n }\n }\n if (!this.parent.undoRedoModule || (this.parent.undoRedoModule && !this.parent.undoRedoModule['currentAction'] || (this.parent.undoRedoModule['currentAction'] && this.parent.undoRedoModule['currentAction']['action'] != 'indent' && this.parent.undoRedoModule['currentAction']['action'] != 'outdent'))) {\n this.taskbarMoved = this.isTaskbarMoved(args.data);\n }\n this.predecessorUpdated = this.isPredecessorUpdated(args.data);\n if (this.predecessorUpdated) {\n this.parent.isConnectorLineUpdate = true;\n this.parent.connectorLineEditModule.addRemovePredecessor(args.data);\n }\n var validateObject = {};\n if (isValidatePredecessor) {\n if (!isNullOrUndefined(parentData)) {\n validateObject = this.parent.connectorLineEditModule.validateTypes(parentData, args.data);\n }\n else if (!isNullOrUndefined(childRecordIndex)) {\n validateObject = this.parent.connectorLineEditModule.validateTypes(args.data.childRecords[childRecordIndex], args.data);\n }\n else {\n validateObject = this.parent.connectorLineEditModule.validateTypes(args.data);\n }\n this.parent.isConnectorLineUpdate = true;\n if (!isNullOrUndefined(getValue('violationType', validateObject))) {\n var newArgs = this.validateTaskEvent(args);\n if (newArgs.validateMode.preserveLinkWithEditing === false &&\n newArgs.validateMode.removeLink === false &&\n newArgs.validateMode.respectLink === false) {\n this.parent.connectorLineEditModule.openValidationDialog(validateObject);\n }\n else {\n if (this.parent.editModule && this.parent.editModule.dialogModule &&\n this.parent.editModule.dialogModule['isEdit'] && this.predecessorUpdated) {\n this.isValidatedEditedRecord = true;\n this.parent.predecessorModule.validatePredecessor(args.data, [], '');\n }\n this.parent.connectorLineEditModule.applyPredecessorOption();\n }\n }\n else {\n this.updateEditedTask(args);\n }\n }\n else {\n if (this.taskbarMoved) {\n this.parent.isConnectorLineUpdate = true;\n }\n this.updateEditedTask(args);\n }\n };\n /**\n *\n * @param {ITaskbarEditedEventArgs} editedEventArgs method to trigger validate predecessor link by dialog\n * @returns {IValidateArgs} .\n */\n Edit.prototype.validateTaskEvent = function (editedEventArgs) {\n var newArgs = {};\n this.resetValidateArgs();\n this.parent.currentEditedArgs = newArgs;\n newArgs.cancel = false;\n newArgs.data = editedEventArgs.data;\n newArgs.requestType = 'validateLinkedTask';\n newArgs.validateMode = this.parent.dialogValidateMode;\n newArgs.editEventArgs = editedEventArgs;\n this.parent.actionBeginTask(newArgs);\n return newArgs;\n };\n Edit.prototype.resetValidateArgs = function () {\n this.parent.dialogValidateMode.preserveLinkWithEditing = true;\n this.parent.dialogValidateMode.removeLink = false;\n this.parent.dialogValidateMode.respectLink = false;\n };\n /**\n *\n * @param {ITaskAddedEventArgs} args - Edited event args like taskbar editing, dialog editing, cell editing\n * @returns {void} .\n * @private\n */\n Edit.prototype.updateEditedTask = function (args) {\n var ganttRecord = args.data;\n this.editedRecord = ganttRecord;\n if (this.parent.autoCalculateDateScheduling) {\n this.updateParentChildRecord(ganttRecord);\n }\n if ((this.parent.isConnectorLineUpdate || (this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed'])) && this.parent.autoCalculateDateScheduling) {\n /* validating predecessor for updated child items */\n for (var i = 0; i < this.parent.predecessorModule.validatedChildItems.length; i++) {\n var child = this.parent.predecessorModule.validatedChildItems[i];\n if (child.ganttProperties.predecessor && child.ganttProperties.predecessor.length > 0) {\n this.parent.editedTaskBarItem = child;\n if (!this.isValidatedEditedRecord) {\n this.isFirstCall = true;\n }\n this.parent.predecessorModule.validatePredecessor(child, [], '');\n }\n }\n this.parent.predecessorModule.isValidatedParentTaskID = '';\n /** validating predecessor for current edited records */\n if (ganttRecord.ganttProperties.predecessor) {\n this.parent.isMileStoneEdited = ganttRecord.ganttProperties.isMilestone;\n if (this.taskbarMoved) {\n this.parent.editedTaskBarItem = ganttRecord;\n }\n if (!this.isValidatedEditedRecord) {\n this.isFirstCall = true;\n this.parent.predecessorModule.validatePredecessor(ganttRecord, [], '');\n }\n this.isValidatedEditedRecord = false;\n }\n if (this.parent.allowParentDependency && this.parent.predecessorModule.isValidatedParentTaskID != ganttRecord.ganttProperties.taskId && ganttRecord.hasChildRecords && this.parent.previousRecords[ganttRecord.uniqueID].ganttProperties.startDate &&\n (args.action === \"DrawConnectorLine\")) {\n this.parent.predecessorModule['updateChildItems'](ganttRecord);\n }\n this.parent.predecessorModule.isValidatedParentTaskID = '';\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed']) {\n for (var i = 0; i < ganttRecord.childRecords.length; i++) {\n if (ganttRecord.childRecords[i].ganttProperties.predecessor) {\n this.parent.predecessorModule.validatePredecessor(ganttRecord.childRecords[i], [], '');\n }\n }\n }\n this.updateParentItemOnEditing();\n this.parent.dataOperation.updateParentItems(ganttRecord, true);\n }\n /** Update parent up-to zeroth level */\n if (ganttRecord.parentItem) {\n if (this.parent.autoCalculateDateScheduling) {\n this.parent.dataOperation.updateParentItems(ganttRecord, true);\n }\n var parentData = this.parent.getRecordByID(ganttRecord.parentItem.taskId);\n if (!isNullOrUndefined(parentData)) {\n if (!parentData.ganttProperties.predecessorsName) {\n this.isFirstCall = true;\n this.parent.predecessorModule.validatePredecessor(parentData, [], '');\n this.updateParentItemOnEditing();\n this.parent.ganttChartModule.reRenderConnectorLines();\n }\n }\n }\n if (this.parent.UpdateOffsetOnTaskbarEdit && this.parent.connectorLineEditModule && args.data) {\n this.parent.connectorLineEditModule['calculateOffset'](args.data);\n }\n this.parent.predecessorModule['validatedParentIds'] = [];\n this.initiateSaveAction(args);\n };\n Edit.prototype.updateParentItemOnEditing = function () {\n var childRecord = getValue('parentRecord', this.parent.predecessorModule);\n for (var i = 0; i < childRecord.length; i++) {\n this.parent.dataOperation.updateParentItems(childRecord[i]);\n }\n setValue('parentRecord', [], this.parent.predecessorModule);\n setValue('parentIds', [], this.parent.predecessorModule);\n };\n /**\n * To update parent records while perform drag action.\n *\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n Edit.prototype.updateParentChildRecord = function (data) {\n var ganttRecord = data;\n if (ganttRecord.hasChildRecords && this.taskbarMoved && (ganttRecord[this.parent.taskFields.manual] === false || this.parent.taskMode === 'Auto') && (!isNullOrUndefined(this.parent.editModule.cellEditModule) && !this.parent.editModule.cellEditModule.isResourceCellEdited)) {\n this.parent.predecessorModule['updateChildItems'](ganttRecord);\n }\n if (!isNullOrUndefined(this.parent.editModule.cellEditModule)) {\n this.parent.editModule.cellEditModule.isResourceCellEdited = false;\n }\n };\n /**\n * To update records while changing schedule mode.\n *\n * @param {IGanttData} data .\n * @returns {void} .\n * @private\n */\n Edit.prototype.updateTaskScheduleModes = function (data) {\n var currentValue = data[this.parent.taskFields.startDate];\n var ganttProp = data.ganttProperties;\n if (data.hasChildRecords && ganttProp.isAutoSchedule) {\n this.parent.setRecordValue('startDate', ganttProp.autoStartDate, ganttProp, true);\n this.parent.setRecordValue('endDate', ganttProp.autoEndDate, ganttProp, true);\n this.parent.setRecordValue('StartDate', ganttProp.autoStartDate, data, true);\n this.parent.setRecordValue('EndDate', ganttProp.autoEndDate, data, true);\n this.parent.setRecordValue('taskData.StartDate', ganttProp.autoStartDate, data, true);\n this.parent.setRecordValue('taskData.EndDate', ganttProp.autoEndDate, data, true);\n this.parent.setRecordValue('width', this.parent.dataOperation.calculateWidth(data, true), ganttProp, true);\n this.parent.setRecordValue('left', this.parent.dataOperation.calculateLeft(ganttProp, true), ganttProp, true);\n this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth(ganttProp.width, ganttProp.progress), ganttProp, true);\n this.parent.dataOperation.calculateDuration(data);\n }\n else if (data.hasChildRecords && !ganttProp.isAutoSchedule) {\n this.parent.dataOperation.updateWidthLeft(data);\n this.parent.dataOperation.calculateDuration(data);\n this.parent.setRecordValue('autoStartDate', ganttProp.autoStartDate, ganttProp, true);\n this.parent.setRecordValue('autoEndDate', ganttProp.autoEndDate, ganttProp, true);\n this.parent.setRecordValue('autoDuration', this.parent.dataOperation.calculateAutoDuration(data), ganttProp, true);\n this.parent.dataOperation.updateAutoWidthLeft(data);\n }\n else {\n var startDate = this.parent.dateValidationModule.checkStartDate(currentValue, data.ganttProperties);\n this.parent.setRecordValue('startDate', startDate, data.ganttProperties, true);\n this.parent.dataOperation.updateMappingData(data, 'startDate');\n this.parent.dateValidationModule.calculateEndDate(data);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.manual, data[this.parent.taskFields.manual], data);\n this.parent.dataOperation.updateWidthLeft(data);\n }\n };\n /**\n * To update progress value of parent tasks\n *\n * @param {IParent} cloneParent .\n * @returns {void} .\n * @private\n */\n Edit.prototype.updateParentProgress = function (cloneParent) {\n var parentProgress = 0;\n var parent = this.parent.getParentTask(cloneParent);\n var childRecords = parent.childRecords;\n var childCount = childRecords ? childRecords.length : 0;\n var totalProgress = 0;\n var milesStoneCount = 0;\n var taskCount = 0;\n var totalDuration = 0;\n var progressValues = {};\n if (childRecords) {\n for (var i = 0; i < childCount; i++) {\n if ((!childRecords[i].ganttProperties.isMilestone || childRecords[i].hasChildRecords) &&\n isScheduledTask(childRecords[i].ganttProperties)) {\n progressValues = this.parent.dataOperation.getParentProgress(childRecords[i]);\n totalProgress += getValue('totalProgress', progressValues);\n totalDuration += getValue('totalDuration', progressValues);\n }\n else {\n milesStoneCount += 1;\n }\n }\n taskCount = childCount - milesStoneCount;\n parentProgress = taskCount > 0 ? Math.round(totalProgress / totalDuration) : 0;\n if (isNaN(parentProgress)) {\n parentProgress = 0;\n }\n this.parent.setRecordValue('progressWidth', this.parent.dataOperation.getProgressWidth(parent.ganttProperties.isAutoSchedule ? parent.ganttProperties.width : parent.ganttProperties.autoWidth, parentProgress), parent.ganttProperties, true);\n this.parent.setRecordValue('progress', Math.floor(parentProgress), parent.ganttProperties, true);\n this.parent.setRecordValue('totalProgress', totalProgress, parent.ganttProperties, true);\n this.parent.setRecordValue('totalDuration', totalDuration, parent.ganttProperties, true);\n }\n this.parent.dataOperation.updateTaskData(parent);\n if (parent.parentItem) {\n this.updateParentProgress(parent.parentItem);\n }\n };\n /**\n * Method to revert cell edit action\n *\n * @param {object} args .\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Edit.prototype.revertCellEdit = function (args) {\n this.parent.editModule.reUpdatePreviousRecords(false, true);\n this.resetEditProperties();\n };\n /**\n * @param {boolean} isRefreshChart .\n * @param {boolean} isRefreshGrid .\n * @returns {void} .\n * @private\n */\n Edit.prototype.reUpdatePreviousRecords = function (isRefreshChart, isRefreshGrid) {\n var collection = this.parent.previousRecords;\n var keys = Object.keys(collection);\n for (var i = 0; i < keys.length; i++) {\n var uniqueId = keys[i];\n var prevTask = collection[uniqueId];\n var originalData = this.parent.getTaskByUniqueID(uniqueId);\n this.copyTaskData(originalData.taskData, prevTask.taskData);\n delete prevTask.taskData;\n this.copyTaskData(originalData.ganttProperties, prevTask.ganttProperties);\n delete prevTask.ganttProperties;\n this.copyTaskData(originalData, prevTask);\n var rowIndex = this.parent.currentViewData.indexOf(originalData);\n if (isRefreshChart) {\n this.parent.chartRowsModule.refreshRow(rowIndex);\n }\n if (isRefreshGrid) {\n var dataId = this.parent.viewType === 'ProjectView' ? originalData.ganttProperties.taskId : originalData.ganttProperties.rowUniqueID;\n this.parent.treeGrid.grid.setRowData(dataId, originalData);\n var row = this.parent.treeGrid.grid.getRowObjectFromUID(this.parent.treeGrid.grid.getDataRows()[rowIndex].getAttribute('data-uid'));\n row.data = originalData;\n }\n }\n };\n /**\n * Copy previous task data value to edited task data\n *\n * @param {object} existing .\n * @param {object} newValue .\n * @returns {void} .\n */\n Edit.prototype.copyTaskData = function (existing, newValue) {\n if (!isNullOrUndefined(newValue)) {\n extend(existing, newValue);\n }\n };\n /**\n * To update schedule date on editing.\n *\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Edit.prototype.updateScheduleDatesOnEditing = function (args) {\n //..\n };\n /**\n * @param {ITaskbarEditedEventArgs} args .\n * @returns {void} .\n * @private\n */\n Edit.prototype.initiateSaveAction = function (args) {\n var _this = this;\n var eventArgs = {};\n eventArgs.requestType = 'beforeSave';\n eventArgs.data = args.data;\n eventArgs.cancel = false;\n this.createArray = true;\n if (this.parent.toolbarModule && this.parent.undoRedoModule && !this.parent.undoRedoModule['isUndoRedoPerformed'] && this.parent.undoRedoModule['getUndoCollection'].length > 0) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_undo'], true); // enable toolbar items.\n }\n eventArgs.modifiedRecords = this.parent.editedRecords;\n if (!isNullOrUndefined(args.target)) {\n eventArgs.target = args.target;\n }\n eventArgs.modifiedTaskData = getTaskData(this.parent.editedRecords, true);\n if (args.action && args.action === 'DrawConnectorLine') {\n eventArgs.action = 'DrawConnectorLine';\n }\n var ganttObj = this.parent;\n var currentBaselineStart = __assign({}, eventArgs.data.ganttProperties.baselineStartDate);\n var currentBaselineEnd = __assign({}, eventArgs.data.ganttProperties.baselineEndDate);\n var currentProgress = eventArgs.data.ganttProperties.progress;\n this.parent.trigger('actionBegin', eventArgs, function (eventArg) {\n if (currentBaselineStart != eventArg.data[\"ganttProperties\"].baselineStartDate\n || currentBaselineEnd != eventArg.data[\"ganttProperties\"].baselineEndDate) {\n ganttObj.setRecordValue('baselineLeft', ganttObj.dataOperation.calculateBaselineLeft(eventArg.data['ganttProperties']), eventArg.data['ganttProperties'], true);\n ganttObj.setRecordValue('baselineWidth', ganttObj.dataOperation.calculateBaselineWidth(eventArg.data['ganttProperties']), eventArg.data['ganttProperties'], true);\n }\n if (!isNullOrUndefined(_this.parent.taskFields.progress) && currentProgress != eventArg.data[\"ganttProperties\"].progress) {\n var width = eventArg.data['ganttProperties'].isAutoSchedule ? eventArg.data['ganttProperties'].width :\n eventArg.data['ganttProperties'].autoWidth;\n _this.parent.setRecordValue('progressWidth', _this.parent.dataOperation.getProgressWidth(width, eventArg.data['ganttProperties'].progress), eventArg.data['ganttProperties'], true);\n }\n if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n _this.parent.showMaskRow();\n }\n else {\n _this.parent.showSpinner();\n }\n if (eventArg.cancel) {\n _this.reUpdatePreviousRecords();\n _this.parent.chartRowsModule.refreshRecords([args.data]);\n _this.resetEditProperties(eventArgs);\n // Trigger action complete event with save canceled request type\n }\n else {\n eventArg.modifiedTaskData = getTaskData(eventArg.modifiedRecords, null, null, _this.parent);\n if (isRemoteData(_this.parent.dataSource)) {\n var data = _this.parent.dataSource;\n var updatedData = {\n changedRecords: eventArg.modifiedTaskData\n };\n var query = _this.parent.query instanceof Query ? _this.parent.query : new Query();\n var crud = null;\n var dataAdaptor = data.adaptor;\n if (!(dataAdaptor instanceof WebApiAdaptor && dataAdaptor instanceof ODataAdaptor) || data.dataSource.batchUrl) {\n crud = data.saveChanges(updatedData, _this.parent.taskFields.id, null, query);\n }\n else {\n var changedRecords = 'changedRecords';\n crud = data.update(_this.parent.taskFields.id, updatedData[changedRecords], null, query);\n }\n crud.then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n else {\n _this.saveSuccess(args);\n }\n if (_this.parent.enableVirtualization && _this.parent.enableTimelineVirtualization) {\n _this.parent.ganttChartModule['setVirtualHeight']();\n }\n if (_this.parent.undoRedoModule) {\n _this.parent.previousFlatData = extend([], _this.parent.flatData, [], true);\n }\n }\n });\n };\n Edit.prototype.dmSuccess = function (e, args) {\n var eLength;\n var rec;\n if (e.changedRecords) {\n eLength = e.changedRecords['length'];\n }\n else {\n eLength = e['length'];\n }\n for (var i = 0; i < eLength; i++) {\n if (e.changedRecords) {\n rec = e.changedRecords[parseInt(i.toString(), 10)];\n }\n else {\n rec = e[parseInt(i.toString(), 10)];\n }\n var _aLength = Object.keys(rec).length;\n for (var j = 0, _a = Object.keys(rec); j < _aLength; j++) {\n var key = _a[parseInt(j.toString(), 10)];\n this.parent.editedRecords[parseInt(i.toString(), 10)][\"\" + key] = rec[\"\" + key];\n this.parent.editedRecords[parseInt(i.toString(), 10)].taskData[\"\" + key] = rec[\"\" + key];\n }\n if (this.parent.taskFields.id !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['taskId'] = rec[this.parent.taskFields.id];\n }\n if (this.parent.taskFields.name !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['taskName'] = rec[this.parent.taskFields.name];\n }\n if (this.parent.taskFields.startDate !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['startDate'] = rec[this.parent.taskFields.startDate];\n }\n if (this.parent.taskFields.endDate !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['endDate'] = rec[this.parent.taskFields.endDate];\n }\n if (this.parent.taskFields.duration !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['duration'] = parseFloat(rec[this.parent.taskFields.duration]);\n }\n if (this.parent.taskFields.durationUnit !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['durationUnit'] = rec[this.parent.taskFields.durationUnit];\n }\n if (this.parent.taskFields.progress !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['progress'] = rec[this.parent.taskFields.progress];\n }\n if (this.parent.taskFields.dependency !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['dependency'] = rec[this.parent.taskFields.dependency];\n }\n if (this.parent.taskFields.parentID !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['parentID'] = rec[this.parent.taskFields.parentID];\n }\n if (this.parent.taskFields.baselineEndDate !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['baselineEndDate'] = rec[this.parent.taskFields.baselineEndDate];\n }\n if (this.parent.taskFields.baselineStartDate !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['baselineStartDate'] = rec[this.parent.taskFields.baselineStartDate];\n }\n if (this.parent.taskFields.resourceInfo !== null) {\n this.parent.editedRecords[parseInt(i.toString(), 10)].ganttProperties['resources'] = rec[this.parent.taskFields.resourceInfo];\n }\n }\n this.saveSuccess(args);\n };\n Edit.prototype.dmFailure = function (e, args) {\n if (this.deletedTaskDetails.length) {\n var deleteRecords = this.deletedTaskDetails;\n for (var d = 0; d < deleteRecords.length; d++) {\n deleteRecords[d].isDelete = false;\n }\n this.deletedTaskDetails = [];\n }\n this.reUpdatePreviousRecords(true, true);\n this.resetEditProperties();\n this.parent.trigger('actionFailure', { error: e });\n };\n Edit.prototype.updateSharedTask = function (data) {\n var ids = data.ganttProperties.sharedTaskUniqueIds;\n for (var i = 0; i < ids.length; i++) {\n var editRecord = this.parent.flatData[this.parent.ids.indexOf(ids[i].toString())];\n if (editRecord && editRecord.uniqueID !== data.uniqueID) {\n this.updateGanttProperties(data, editRecord);\n this.parent.setRecordValue('taskData', data.taskData, editRecord, true);\n this.parent.dataOperation.updateTaskData(editRecord);\n this.parent.dataOperation.updateResourceName(editRecord);\n if (!isNullOrUndefined(editRecord.parentItem)) {\n this.parent.dataOperation.updateParentItems(editRecord.parentItem);\n }\n }\n }\n };\n /**\n * Method for save action success for local and remote data\n *\n * @param {ITaskAddedEventArgs} args .\n * @returns {void} .\n */\n Edit.prototype.saveSuccess = function (args) {\n var eventArgs = {};\n if (this.parent.timelineSettings.updateTimescaleView) {\n var tempArray = this.parent.editedRecords;\n this.parent.timelineModule.updateTimeLineOnEditing([tempArray], args.action);\n }\n if (this.parent.viewType === 'ResourceView') {\n if (args.action === 'TaskbarEditing' || args.action === 'DrawConnectorLine') {\n this.updateSharedTask(args.data);\n }\n else if (args.action === 'DialogEditing' || args.action === 'CellEditing' || args.action === 'methodUpdate') {\n if (this.parent.editModule.dialogModule.isResourceUpdate) {\n /* eslint-disable-next-line */\n this.updateResoures(this.parent.editModule.dialogModule.previousResource, args.data.ganttProperties.resourceInfo, args.data);\n this.updateSharedTask(args.data);\n this.isTreeGridRefresh = true;\n }\n else {\n this.updateSharedTask(args.data);\n }\n }\n // method to update the edited parent records\n for (var k = 0; k < this.updateParentRecords.length; k++) {\n this.parent.dataOperation.updateParentItems(this.updateParentRecords[k]);\n }\n this.updateParentRecords = [];\n this.parent.editModule.dialogModule.isResourceUpdate = false;\n this.parent.editModule.dialogModule.previousResource = [];\n }\n if (!this.isTreeGridRefresh) {\n if (this.parent.editSettings.allowEditing && this.parent.treeGrid.element.getElementsByClassName('e-editedbatchcell').length > 0) {\n this.parent.treeGrid.endEdit();\n }\n this.parent.chartRowsModule.refreshRecords(this.parent.editedRecords);\n if (!this.parent.allowTaskbarOverlap && this.parent.showOverAllocation) {\n this.parent.contentHeight = this.parent['element'].getElementsByClassName('e-content')[0].children[0]['offsetHeight'];\n this.parent.ganttChartModule.chartBodyContent.style.height = this.parent.contentHeight + 'px';\n this.parent.ganttChartModule.renderRangeContainer(this.parent.currentViewData);\n if (this.parent.taskFields.dependency) {\n this.parent.ganttChartModule.reRenderConnectorLines();\n }\n }\n if ((this.parent.isConnectorLineUpdate || (this.parent.undoRedoModule && this.parent.undoRedoModule['currentAction'] && this.parent.undoRedoModule['currentAction']['connectedRecords'])) && !isNullOrUndefined(this.parent.connectorLineEditModule)) {\n this.parent.updatedConnectorLineCollection = [];\n this.parent.connectorLineIds = [];\n this.parent.connectorLineEditModule.refreshEditedRecordConnectorLine(this.parent.editedRecords);\n this.parent.ganttChartModule.reRenderConnectorLines();\n this.updateScheduleDatesOnEditing(args);\n }\n }\n if (this.parent.enableCriticalPath) {\n var criticalModule = this.parent.criticalPathModule;\n criticalModule.showCriticalPath(true);\n criticalModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);\n }\n if (!this.parent.editSettings.allowTaskbarEditing || (this.parent.editSettings.allowTaskbarEditing &&\n !this.taskbarEditModule.dependencyCancel)) {\n eventArgs.requestType = 'save';\n eventArgs.data = args.data;\n eventArgs.modifiedRecords = this.parent.editedRecords;\n eventArgs.modifiedTaskData = getTaskData(this.parent.editedRecords, null, null, this.parent);\n if (!isNullOrUndefined(args.action)) {\n setValue('action', args.action, eventArgs);\n }\n if (args.action === 'TaskbarEditing') {\n eventArgs.taskBarEditAction = args.taskBarEditAction;\n }\n this.endEditAction(args);\n this.parent.trigger('actionComplete', eventArgs);\n if (this.parent.allowTaskbarDragAndDrop && this.parent.rowDragAndDropModule && this.parent.rowDragAndDropModule['draggedRecord']) {\n this.parent.rowDragAndDropModule['draggedRecord'] = null;\n }\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n }\n else {\n this.taskbarEditModule.dependencyCancel = false;\n this.resetEditProperties();\n }\n if (this.parent.viewType === 'ResourceView' && this.isTreeGridRefresh) {\n this.parent.treeGrid.parentData = [];\n this.parent.updatedConnectorLineCollection = [];\n this.parent.connectorLineIds = [];\n this.parent.predecessorModule.createConnectorLinesCollection(this.parent.flatData);\n this.parent.treeGrid.refresh();\n this.isTreeGridRefresh = false;\n }\n this.parent.editedRecords = [];\n };\n Edit.prototype.updateResoures = function (prevResource, currentResource, updateRecord) {\n var flatRecords = this.parent.flatData;\n var currentLength = currentResource ? currentResource.length : 0;\n var previousLength = prevResource ? prevResource.length : 0;\n if (currentLength === 0 && previousLength === 0) {\n return;\n }\n for (var index = 0; index < currentLength; index++) {\n var recordIndex = [];\n var resourceID = parseInt(currentResource[index][this.parent.resourceFields.id], 10).toString();\n if (resourceID === 'NaN') {\n resourceID = currentResource[index][this.parent.resourceFields.id];\n }\n for (var i = 0; i < prevResource.length; i++) {\n var prevResourceID = parseInt(prevResource[i][this.parent.resourceFields.id], 10).toString();\n if (prevResourceID === 'NaN') {\n prevResourceID = prevResource[i][this.parent.resourceFields.id];\n }\n if (prevResourceID === resourceID) {\n recordIndex.push(i);\n break;\n }\n }\n if (recordIndex.length === 0) {\n var parentRecord = flatRecords[this.parent.getTaskIds().indexOf('R' + resourceID)];\n if (parentRecord) {\n this.addNewRecord(updateRecord, parentRecord);\n }\n }\n else {\n var record1 = parseInt(recordIndex[0].toString(), 10);\n if (record1.toString() === \"NaN\") {\n record1 = recordIndex[0].toString();\n }\n prevResource.splice(record1, 1);\n }\n }\n var prevLength = prevResource ? prevResource.length : 0;\n for (var index = 0; index < prevLength; index++) {\n var taskID = updateRecord.ganttProperties.taskId;\n var resourceID = prevResource[index][this.parent.resourceFields.id];\n var record = flatRecords[this.parent.getTaskIds().indexOf('R' + resourceID)];\n if (!isNullOrUndefined(record)) {\n for (var j = 0; j < record.childRecords.length; j++) {\n if (record.childRecords[j].ganttProperties.taskId === taskID) {\n this.removeChildRecord(record.childRecords[j]);\n }\n }\n }\n }\n if (currentLength > 0) {\n var parentTask = this.parent.getParentTask(updateRecord.parentItem);\n if (parentTask) {\n if (parentTask.ganttProperties.taskName === this.parent.localeObj.getConstant('unassignedTask')) {\n this.removeChildRecord(updateRecord);\n }\n }\n }\n //Assign resource to unassigned task\n if (currentLength === 0) {\n this.checkWithUnassignedTask(updateRecord);\n }\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed'] && this.parent.flatData[this.parent.flatData.length - 1].ganttProperties.taskName == this.parent.localeObj.getConstant('unassignedTask')) {\n this.parent.flatData.splice(this.parent.flatData.length - 1, 1);\n this.parent.currentViewData.splice(this.parent.currentViewData.length - 1, 1);\n this.parent.taskIds.splice(this.parent.flatData.length - 1, 1);\n this.parent.ids.splice(this.parent.flatData.length - 1, 1);\n }\n };\n /**\n * @param {IGanttData} updateRecord .\n * @returns {void} .\n * @private\n */\n Edit.prototype.checkWithUnassignedTask = function (updateRecord) {\n var unassignedTasks = null;\n // Block for check the unassigned task.\n for (var i = 0; i < this.parent.flatData.length; i++) {\n if (this.parent.flatData[i].ganttProperties.taskName === this.parent.localeObj.getConstant('unassignedTask')) {\n unassignedTasks = this.parent.flatData[i];\n }\n }\n if (!isNullOrUndefined(unassignedTasks)) {\n this.addNewRecord(updateRecord, unassignedTasks);\n }\n else {\n // Block for create the unassigned task.\n var unassignTaskObj = {};\n unassignTaskObj[this.parent.taskFields.id] = 0;\n unassignTaskObj[this.parent.taskFields.name] = this.parent.localeObj.getConstant('unassignedTask');\n var beforeEditStatus = this.parent.isOnEdit;\n this.parent.isOnEdit = false;\n var cAddedRecord = this.parent.dataOperation.createRecord(unassignTaskObj, 0);\n this.parent.isOnEdit = beforeEditStatus;\n this.addRecordAsBottom(cAddedRecord);\n var parentRecord = this.parent.flatData[this.parent.flatData.length - 1];\n this.addNewRecord(updateRecord, parentRecord);\n var source = this.parent.dataSource;\n source.push(updateRecord.taskData);\n }\n var updatedData = this.parent.currentViewData.filter(function (data) {\n return (data.ganttProperties.taskId === updateRecord.ganttProperties.taskId &&\n (data.hasChildRecords === updateRecord.hasChildRecords));\n })[0];\n updateRecord.parentItem = updatedData.parentItem;\n updateRecord.parentUniqueID = updatedData.parentUniqueID;\n };\n Edit.prototype.addRecordAsBottom = function (cAddedRecord) {\n var recordIndex1 = this.parent.flatData.length;\n this.parent.currentViewData.splice(recordIndex1 + 1, 0, cAddedRecord);\n this.parent.flatData.splice(recordIndex1 + 1, 0, cAddedRecord);\n this.parent.ids.splice(recordIndex1 + 1, 0, cAddedRecord.ganttProperties.rowUniqueID.toString());\n var taskId = cAddedRecord.level === 0 ? 'R' + cAddedRecord.ganttProperties.taskId : 'T' + cAddedRecord.ganttProperties.taskId;\n this.parent.getTaskIds().splice(recordIndex1 + 1, 0, taskId);\n this.updateTreeGridUniqueID(cAddedRecord, 'add');\n };\n Edit.prototype.addNewRecord = function (updateRecord, parentRecord) {\n var cAddedRecord = null;\n cAddedRecord = extend({}, {}, updateRecord, true);\n this.parent.setRecordValue('uniqueID', getUid(this.parent.element.id + '_data_'), cAddedRecord);\n this.parent.setRecordValue('uniqueID', cAddedRecord.uniqueID, cAddedRecord.ganttProperties, true);\n var uniqueId = cAddedRecord.uniqueID.replace(this.parent.element.id + '_data_', '');\n this.parent.setRecordValue('rowUniqueID', uniqueId, cAddedRecord);\n this.parent.setRecordValue('rowUniqueID', uniqueId, cAddedRecord.ganttProperties, true);\n this.parent.setRecordValue('level', 1, cAddedRecord);\n if (this.parent.taskFields.parentID) {\n this.parent.setRecordValue('parentId', parentRecord.ganttProperties.taskId, cAddedRecord.ganttProperties, true);\n }\n this.parent.setRecordValue('parentItem', this.parent.dataOperation.getCloneParent(parentRecord), cAddedRecord);\n var parentUniqId = cAddedRecord.parentItem ? cAddedRecord.parentItem.uniqueID : null;\n this.parent.setRecordValue('parentUniqueID', parentUniqId, cAddedRecord);\n updateRecord.ganttProperties.sharedTaskUniqueIds.push(uniqueId);\n cAddedRecord.ganttProperties.sharedTaskUniqueIds = updateRecord.ganttProperties.sharedTaskUniqueIds;\n this.addRecordAsChild(parentRecord, cAddedRecord);\n };\n Edit.prototype.removeChildRecord = function (record) {\n var gObj = this.parent;\n var data = [];\n if (this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.json.length > 0) {\n data = this.parent.dataSource.dataSource.json;\n }\n else {\n data = this.parent.currentViewData;\n }\n var dataSource = this.parent.dataSource;\n var deletedRow = record;\n var flatParentData = this.parent.getParentTask(deletedRow.parentItem);\n if (deletedRow) {\n if (deletedRow.parentItem) {\n var deleteChildRecords = flatParentData ? flatParentData.childRecords : [];\n var childIndex = 0;\n if (deleteChildRecords && deleteChildRecords.length > 0) {\n if (deleteChildRecords.length === 1) {\n //For updating the parent record which has no child reords.\n this.parent.isOnDelete = true;\n deleteChildRecords[0].isDelete = true;\n this.parent.dataOperation.updateParentItems(flatParentData);\n this.parent.isOnDelete = false;\n deleteChildRecords[0].isDelete = false;\n }\n childIndex = deleteChildRecords.indexOf(deletedRow);\n flatParentData.childRecords.splice(childIndex, 1);\n // collection for updating parent record\n this.updateParentRecords.push(flatParentData);\n }\n }\n if (deletedRow.ganttProperties.sharedTaskUniqueIds.length) {\n var uniqueIDIndex = deletedRow.ganttProperties.sharedTaskUniqueIds.indexOf(deletedRow.ganttProperties.rowUniqueID);\n deletedRow.ganttProperties.sharedTaskUniqueIds.splice(uniqueIDIndex, 1);\n }\n this.updateTreeGridUniqueID(deletedRow, 'delete');\n //method to delete the record from datasource collection\n if (!this.parent.taskFields.parentID) {\n var deleteRecordIDs = [];\n deleteRecordIDs.push(deletedRow.ganttProperties.rowUniqueID.toString());\n if (this.parent.viewType === 'ProjectView') {\n this.parent.editModule.removeFromDataSource(deleteRecordIDs);\n }\n }\n var flatRecordIndex = this.parent.flatData.indexOf(deletedRow);\n if (gObj.taskFields.parentID) {\n var idx = void 0;\n var ganttData = this.parent.currentViewData;\n for (var i = 0; i < ganttData.length; i++) {\n if (ganttData[i].ganttProperties.rowUniqueID === deletedRow.ganttProperties.rowUniqueID) {\n idx = i;\n }\n }\n if (idx !== -1) {\n if (dataSource.length > 0) {\n dataSource.splice(idx, 1);\n }\n data.splice(idx, 1);\n this.parent.flatData.splice(flatRecordIndex, 1);\n this.parent.ids.splice(flatRecordIndex, 1);\n this.parent.getTaskIds().splice(flatRecordIndex, 1);\n }\n }\n var recordIndex = data.indexOf(deletedRow);\n if (!gObj.taskFields.parentID) {\n var deletedRecordCount = this.parent.editModule.getChildCount(deletedRow, 0);\n data.splice(recordIndex, deletedRecordCount + 1);\n this.parent.flatData.splice(flatRecordIndex, deletedRecordCount + 1);\n this.parent.ids.splice(flatRecordIndex, deletedRecordCount + 1);\n this.parent.getTaskIds().splice(flatRecordIndex, deletedRecordCount + 1);\n }\n if (deletedRow.parentItem && flatParentData && flatParentData.childRecords && !flatParentData.childRecords.length) {\n this.parent.setRecordValue('expanded', false, flatParentData);\n this.parent.setRecordValue('hasChildRecords', false, flatParentData);\n }\n }\n };\n // Method to add new record after resource edit\n Edit.prototype.addRecordAsChild = function (droppedRecord, draggedRecord) {\n var gObj = this.parent;\n var recordIndex1 = this.parent.flatData.indexOf(droppedRecord);\n var childRecords = this.parent.editModule.getChildCount(droppedRecord, 0);\n var childRecordsLength;\n var spliceIndex;\n var parentTask = this.parent.getTaskByUniqueID(draggedRecord.parentItem.uniqueID);\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed'] && this.dialogModule['indexes'] && this.dialogModule['indexes'].deletedIndexes && this.dialogModule['indexes'].deletedIndexes.length > 0) {\n if (parentTask.ganttProperties.taskName == this.parent.localeObj.getConstant('unassignedTask')) {\n childRecordsLength = this.parent.taskIds.length + 1;\n }\n else {\n for (var j = 0; j < this.dialogModule['indexes'].deletedIndexes.length; j++) {\n if (this.dialogModule['indexes'].deletedIndexes[j].data.parentUniqueID == draggedRecord.parentUniqueID && draggedRecord.ganttProperties.taskId == this.dialogModule['indexes'].deletedIndexes[j].data.ganttProperties.taskId) {\n var toIndex = this.dialogModule['indexes'].deletedIndexes[j].index;\n this.dialogModule['indexes'].deletedIndexes[j].position == 'above' ? (childRecordsLength = toIndex) : (childRecordsLength = toIndex + 1);\n for (var i = 0; i < droppedRecord.childRecords.length; i++) {\n if ('T' + droppedRecord.childRecords[i].ganttProperties.taskId == this.dialogModule['indexes'].deletedIndexes[j].id) {\n this.dialogModule['indexes'].deletedIndexes[j].position == 'above' ? (spliceIndex = i) : spliceIndex = i + 1;\n break;\n }\n }\n break;\n }\n else if (this.dialogModule['indexes'].deletedIndexes[j].data.parentUniqueID !== draggedRecord.parentUniqueID && draggedRecord.ganttProperties.taskId == this.dialogModule['indexes'].deletedIndexes[j].data.ganttProperties.taskId) {\n var draggedParent = this.parent.getTaskByUniqueID(draggedRecord.parentItem.uniqueID);\n childRecordsLength = draggedParent.index + draggedParent.childRecords.length + 1;\n break;\n }\n }\n }\n }\n else if (this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed'] && parentTask.ganttProperties.taskName == this.parent.localeObj.getConstant('unassignedTask') && this.parent.undoRedoModule['currentAction']['deletedRecordsDetails']) {\n for (var i = 0; i < this.parent.undoRedoModule['currentAction']['deletedRecordsDetails'].length; i++) {\n if (this.parent.undoRedoModule['currentAction']['deletedRecordsDetails'][i].data.ganttProperties.taskId == draggedRecord.ganttProperties.taskId) {\n if (parentTask.index) {\n childRecordsLength = this.parent.undoRedoModule['currentAction']['deletedRecordsDetails'][i].data.index;\n spliceIndex = childRecordsLength - parentTask.index - 1;\n }\n else {\n childRecordsLength = (isNullOrUndefined(childRecords) ||\n childRecords === 0) ? recordIndex1 + 1 :\n childRecords + recordIndex1 + 1;\n spliceIndex = 0;\n }\n break;\n }\n }\n }\n else if (!isNullOrUndefined(this.addRowIndex) && this.addRowPosition && droppedRecord.childRecords && this.addRowPosition !== 'Child') {\n var dropChildRecord = droppedRecord.childRecords[this.addRowIndex];\n var position = this.addRowPosition === 'Above' || this.addRowPosition === 'Below' ? this.addRowPosition :\n 'Child';\n childRecordsLength = dropChildRecord ? this.addRowIndex + recordIndex1 + 1 :\n childRecords + recordIndex1 + 1;\n childRecordsLength = position === 'Above' ? childRecordsLength : childRecordsLength + 1;\n }\n else {\n childRecordsLength = (isNullOrUndefined(childRecords) ||\n childRecords === 0) ? recordIndex1 + 1 :\n childRecords + recordIndex1 + 1;\n }\n //this.ganttData.splice(childRecordsLength, 0, this.draggedRecord);\n this.parent.currentViewData.splice(childRecordsLength, 0, draggedRecord);\n this.parent.flatData.splice(childRecordsLength, 0, draggedRecord);\n this.parent.ids.splice(childRecordsLength, 0, draggedRecord.ganttProperties.rowUniqueID.toString());\n this.updateTreeGridUniqueID(draggedRecord, 'add');\n var recordId = draggedRecord.level === 0 ? 'R' + draggedRecord.ganttProperties.taskId : 'T' + draggedRecord.ganttProperties.taskId;\n this.parent.getTaskIds().splice(childRecordsLength, 0, recordId);\n if (!droppedRecord.hasChildRecords) {\n this.parent.setRecordValue('hasChildRecords', true, droppedRecord);\n this.parent.setRecordValue('expanded', true, droppedRecord);\n if (!droppedRecord.childRecords.length) {\n droppedRecord.childRecords = [];\n if (!gObj.taskFields.parentID && isNullOrUndefined(droppedRecord.taskData[this.parent.taskFields.child])) {\n droppedRecord.taskData[this.parent.taskFields.child] = [];\n }\n }\n }\n if (spliceIndex >= 0) {\n droppedRecord.childRecords.splice(spliceIndex, 0, draggedRecord);\n }\n else {\n droppedRecord.childRecords.splice(droppedRecord.childRecords.length, 0, draggedRecord);\n }\n if (!isNullOrUndefined(draggedRecord) && !this.parent.taskFields.parentID\n && !isNullOrUndefined(droppedRecord.taskData[this.parent.taskFields.child])) {\n droppedRecord.taskData[this.parent.taskFields.child].splice(droppedRecord.childRecords.length, 0, draggedRecord.taskData);\n }\n if (!isNullOrUndefined(draggedRecord.parentItem)) {\n //collection to update the parent records\n this.updateParentRecords.push(droppedRecord);\n }\n };\n Edit.prototype.resetEditProperties = function (args) {\n this.parent.currentEditedArgs = {};\n this.resetValidateArgs();\n this.parent.editedTaskBarItem = null;\n this.parent.isOnEdit = false;\n this.parent.predecessorModule.validatedChildItems = [];\n this.parent.isConnectorLineUpdate = false;\n this.parent.editedTaskBarItem = null;\n this.taskbarMoved = false;\n this.predecessorUpdated = false;\n if (!isNullOrUndefined(this.dialogModule) && (isNullOrUndefined(args) ||\n (!isNullOrUndefined(args) && args['requestType'] === 'beforeSave' && !args['cancel']))) {\n if (this.dialogModule.dialog && !this.dialogModule.dialogObj.isDestroyed) {\n this.dialogModule.dialogObj.hide();\n }\n this.dialogModule.dialogClose();\n }\n this.parent.hideSpinner();\n this.parent.initiateEditAction(false);\n };\n /**\n * @param {ITaskAddedEventArgs} args .\n * @returns {void} .\n * @private\n */\n Edit.prototype.endEditAction = function (args) {\n this.resetEditProperties();\n if (args.action === 'TaskbarEditing') {\n this.parent.trigger('taskbarEdited', args);\n }\n else if (args.action === 'CellEditing') {\n this.parent.trigger('endEdit', args);\n }\n else if (args.action === 'DialogEditing') {\n if (this.dialogModule.dialog && !this.dialogModule.dialogObj.isDestroyed) {\n this.dialogModule.dialogObj.hide();\n }\n this.dialogModule.dialogClose();\n }\n };\n // eslint-disable-next-line\n Edit.prototype.saveFailed = function (args) {\n this.reUpdatePreviousRecords();\n this.parent.hideSpinner();\n //action failure event trigger\n };\n /**\n * To render delete confirmation dialog\n *\n * @returns {void} .\n */\n Edit.prototype.renderDeleteConfirmDialog = function () {\n var dialogObj = new Dialog({\n width: '320px',\n isModal: true,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.parent.localeObj.getConstant('confirmDelete'),\n buttons: [\n {\n click: this.confirmDeleteOkButton.bind(this),\n buttonModel: { content: this.parent.localeObj.getConstant('okText'), isPrimary: true }\n },\n {\n click: this.closeConfirmDialog.bind(this),\n buttonModel: { content: this.parent.localeObj.getConstant('cancel') }\n }\n ],\n target: this.parent.element,\n animationSettings: { effect: 'None' }\n });\n dialogObj.appendTo('#' + this.parent.element.id + '_deleteConfirmDialog');\n this.confirmDialog = dialogObj;\n };\n Edit.prototype.closeConfirmDialog = function () {\n this.confirmDialog.hide();\n };\n Edit.prototype.confirmDeleteOkButton = function () {\n this.deleteSelectedItems();\n this.confirmDialog.hide();\n var focussedElement = this.parent.element.querySelector('.e-treegrid');\n focussedElement.focus();\n };\n /**\n * @returns {void} .\n * @private\n */\n Edit.prototype.startDeleteAction = function () {\n if (this.parent.editSettings.allowDeleting && !this.parent.readOnly) {\n if (this.parent.editSettings.showDeleteConfirmDialog) {\n this.confirmDialog.show();\n }\n else {\n this.deleteSelectedItems();\n var focusingElement = this.parent.element.querySelector('.e-treegrid');\n focusingElement.focus();\n }\n }\n };\n /**\n *\n * @param {IGanttData[]} selectedRecords - Defines the deleted records\n * @returns {void} .\n * Method to delete the records from resource view Gantt.\n */\n Edit.prototype.deleteResourceRecords = function (selectedRecords) {\n var deleteRecords = [];\n var _loop_2 = function (i) {\n if (selectedRecords[i].parentItem) {\n if (selectedRecords[i].ganttProperties.sharedTaskUniqueIds.length === 1) {\n var data = selectedRecords[i];\n var ids = data.ganttProperties.sharedTaskUniqueIds;\n for (var j = 0; j < ids.length; j++) {\n if (this_2.parent.ids.indexOf(ids[j].toString()) !== -1) {\n deleteRecords.push(this_2.parent.flatData[this_2.parent.ids.indexOf(ids[j].toString())]);\n }\n else if (this_2.parent.undoRedoModule && this_2.parent.undoRedoModule['isUndoRedoPerformed'] && this_2.parent.undoRedoModule['currentAction'] && this_2.parent.undoRedoModule['currentAction']['action'] == 'Delete') {\n deleteRecords.push(this_2.parent.flatData[this_2.parent.taskIds.indexOf('T' + selectedRecords[i].ganttProperties.taskId)]);\n }\n }\n if (this_2.parent.ids.indexOf(data.ganttProperties.rowUniqueID) !== -1 && deleteRecords.indexOf(this_2.parent.flatData[this_2.parent.ids.indexOf(data.ganttProperties.rowUniqueID)]) === -1) {\n deleteRecords.push(this_2.parent.flatData[this_2.parent.ids.indexOf(data.ganttProperties.rowUniqueID)]);\n }\n }\n else if (this_2.parent.undoRedoModule && this_2.parent.undoRedoModule['isUndoRedoPerformed'] && selectedRecords[i].ganttProperties.sharedTaskUniqueIds.length > 1) {\n deleteRecords.push(selectedRecords[i]);\n }\n }\n else {\n var resourceParent = this_2.parent.flatData.filter(function (data) {\n return (data.ganttProperties.taskId === selectedRecords[i].ganttProperties.taskId &&\n data.hasChildRecords);\n })[0];\n deleteRecords.push(resourceParent);\n }\n };\n var this_2 = this;\n for (var i = 0; i < selectedRecords.length; i++) {\n _loop_2(i);\n }\n this.deleteRow(deleteRecords);\n };\n Edit.prototype.add = function (record, totalRecords) {\n totalRecords.push(record);\n if (record.hasChildRecords) {\n var child = record.childRecords;\n for (var i = 0; i < child.length; i++) {\n this.add(child[i], totalRecords);\n }\n }\n else {\n if (totalRecords.indexOf(record) == -1) {\n totalRecords.push(record);\n }\n }\n };\n Edit.prototype.deleteSelectedItems = function () {\n if (!this.isFromDeleteMethod) {\n var selectedRecords = [];\n if (this.parent.selectionSettings.mode !== 'Cell') {\n selectedRecords = this.parent.selectionModule.getSelectedRecords();\n }\n else if (this.parent.selectionSettings.mode === 'Cell') {\n selectedRecords = this.parent.selectionModule.getCellSelectedRecords();\n }\n if (this.parent.viewType === 'ResourceView') {\n this.deleteResourceRecords(selectedRecords);\n }\n else {\n this.deleteRow(selectedRecords);\n }\n }\n else {\n if (this.targetedRecords.length) {\n if (this.parent.viewType === 'ResourceView') {\n this.deleteResourceRecords(this.targetedRecords);\n }\n else {\n this.deleteRow(this.targetedRecords);\n }\n }\n this.isFromDeleteMethod = false;\n }\n };\n /**\n * Method to delete record.\n *\n * @param {number | string | number[] | string[] | IGanttData | IGanttData[]} taskDetail - Defines the details of data to delete.\n * @returns {void} .\n * @public\n */\n Edit.prototype.deleteRecord = function (taskDetail) {\n this.isFromDeleteMethod = true;\n var variableType = typeof (taskDetail);\n this.targetedRecords = [];\n switch (variableType) {\n case 'number':\n case 'string':\n {\n var taskId = taskDetail.toString();\n if (this.parent.viewType === 'ResourceView') {\n if (!isNullOrUndefined(taskId) && this.parent.getTaskIds().indexOf('T' + taskId) !== -1) {\n this.targetedRecords.push(this.parent.flatData[this.parent.getTaskIds().indexOf('T' + taskId)]);\n }\n }\n else {\n if (!isNullOrUndefined(taskId) && this.parent.ids.indexOf(taskId) !== -1) {\n this.targetedRecords.push(this.parent.getRecordByID(taskId));\n }\n }\n break;\n }\n case 'object':\n if (!Array.isArray(taskDetail)) {\n this.targetedRecords.push(taskDetail.valueOf());\n }\n else {\n this.updateTargetedRecords(taskDetail);\n }\n break;\n default:\n }\n this.startDeleteAction();\n };\n /**\n * To update 'targetedRecords collection' from given array collection\n *\n * @param {object[]} taskDetailArray .\n * @returns {void} .\n */\n Edit.prototype.updateTargetedRecords = function (taskDetailArray) {\n if (taskDetailArray.length) {\n var variableType = typeof (taskDetailArray[0]);\n if (variableType === 'object') {\n this.targetedRecords = taskDetailArray;\n }\n else {\n // Get record from array of task ids\n for (var i = 0; i < taskDetailArray.length; i++) {\n var id = taskDetailArray[i].toString();\n if (this.parent.viewType === 'ResourceView') {\n if (!isNullOrUndefined(id) && this.parent.getTaskIds().indexOf('T' + id) !== -1) {\n this.targetedRecords.push(this.parent.flatData[this.parent.getTaskIds().indexOf('T' + id)]);\n }\n }\n else if (!isNullOrUndefined(id) && this.parent.ids.indexOf(id) !== -1) {\n this.targetedRecords.push(this.parent.getRecordByID(id));\n }\n }\n }\n }\n };\n Edit.prototype.deleteRow = function (tasks) {\n var rowItems = tasks && tasks.length ? tasks :\n this.parent.selectionModule.getSelectedRecords();\n this.parent.addDeleteRecord = true;\n if (rowItems.length) {\n this.parent.isOnDelete = true;\n rowItems.forEach(function (item) {\n item.isDelete = true;\n });\n if (this.parent.viewType === 'ResourceView' && !tasks.length) {\n rowItems = [];\n }\n if (this.parent.undoRedoModule && !this.parent.undoRedoModule['isUndoRedoPerformed'] && this.parent['isUndoRedoItemPresent']('Delete')) {\n if (this.parent.undoRedoModule['redoEnabled'] && !this.parent.undoRedoModule['isUndoRedoPerformed']) {\n this.parent.undoRedoModule['disableRedo']();\n this.parent.undoRedoModule['getUndoCollection'][0] = [];\n }\n if (!this.parent.undoRedoModule['isUndoRedoPerformed']) {\n this.parent.undoRedoModule['createUndoCollection']();\n }\n var records = {};\n records['action'] = 'Delete';\n records['deletedRecordsDetails'] = [];\n this.parent.undoRedoModule['findPosition'](extend([], [], rowItems, true), records, 'deletedRecordsDetails');\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = records;\n }\n var _loop_3 = function (i) {\n var deleteRecord = rowItems[i];\n if (this_3.deletedTaskDetails.indexOf(deleteRecord) !== -1) {\n return \"continue\";\n }\n var deleteItems = [deleteRecord];\n if (this_3.parent.viewType == 'ResourceView' && this_3.parent.undoRedoModule && this_3.parent.undoRedoModule['isUndoRedoPerformed'] && rowItems[i].ganttProperties.resourceInfo && rowItems[i].ganttProperties.resourceInfo.length > 1) {\n deleteItems = [];\n if (!rowItems[i].hasChildRecords) {\n var id_1 = 'T' + rowItems[i].ganttProperties.taskId;\n this_3.parent.taskIds.reduce(function (a, e, j) {\n if (e === id_1) {\n deleteItems.push(this.parent.flatData[j]);\n }\n }.bind(this_3), []);\n }\n }\n for (var j = 0; j < deleteItems.length; j++) {\n var parentTask = this_3.parent.getParentTask(deleteItems[j].parentItem);\n if (deleteItems[j].parentItem) {\n var childRecord = parentTask.childRecords;\n var filteredRecord = childRecord.length === 1 ?\n childRecord : childRecord.filter(function (data) {\n return !data.isDelete;\n });\n if (filteredRecord.length > 0) {\n this_3.parent.dataOperation.updateParentItems(deleteItems[j].parentItem);\n }\n }\n var predecessor = deleteItems[j].ganttProperties.predecessor;\n var canDeletePredecessor = true;\n if (this_3.parent.viewType === 'ResourceView' && parentTask && parentTask.ganttProperties.taskName !==\n this_3.parent.localeObj.getConstant('unassignedTask')) {\n canDeletePredecessor = false;\n }\n if (predecessor && predecessor.length && canDeletePredecessor) {\n this_3.removePredecessorOnDelete(deleteItems[j]);\n }\n this_3.deletedTaskDetails.push(deleteItems[j]);\n if (deleteItems[j].hasChildRecords) {\n this_3.deleteChildRecords(deleteItems[j]);\n }\n }\n };\n var this_3 = this;\n for (var i = 0; i < rowItems.length; i++) {\n _loop_3(i);\n }\n if (this.parent.selectionModule && this.parent.allowSelection) {\n // clear selection\n this.parent.selectionModule.clearSelection();\n }\n var delereArgs = {};\n delereArgs.deletedRecordCollection = this.deletedTaskDetails;\n delereArgs.updatedRecordCollection = this.parent.editedRecords;\n delereArgs.cancel = false;\n delereArgs.action = 'delete';\n this.initiateDeleteAction(delereArgs);\n this.parent.isOnDelete = false;\n }\n if (!isNullOrUndefined(this.parent.toolbarModule)) {\n this.parent.toolbarModule.refreshToolbarItems();\n }\n };\n Edit.prototype.removePredecessorOnDelete = function (record) {\n var predecessors = record.ganttProperties.predecessor;\n for (var i = 0; i < predecessors.length; i++) {\n var predecessor = predecessors[i];\n var recordId = this.parent.viewType === 'ResourceView' ? record.ganttProperties.taskId :\n record.ganttProperties.rowUniqueID;\n if (predecessor.from.toString() === recordId.toString()) {\n var toRecord = this.parent.connectorLineModule.getRecordByID(predecessor.to.toString());\n if (!isNullOrUndefined(toRecord)) {\n var toRecordPredcessor = extend([], [], toRecord.ganttProperties.predecessor, true);\n var index = void 0;\n for (var t = 0; t < toRecordPredcessor.length; t++) {\n var toId = this.parent.viewType === 'ResourceView' ? toRecord.ganttProperties.taskId :\n toRecord.ganttProperties.rowUniqueID;\n if (toRecordPredcessor[t].to.toString() === toId.toString()\n && toRecordPredcessor[t].from.toString() === recordId.toString()) {\n index = t;\n break;\n }\n }\n toRecordPredcessor.splice(index, 1);\n this.updatePredecessorValues(toRecord, toRecordPredcessor);\n }\n }\n else if (predecessor.to.toString() === recordId.toString()) {\n var fromRecord = this.parent.connectorLineModule.getRecordByID(predecessor.from.toString());\n if (!isNullOrUndefined(fromRecord)) {\n var fromRecordPredcessor = extend([], [], fromRecord.ganttProperties.predecessor, true);\n var index = void 0;\n for (var t = 0; t < fromRecordPredcessor.length; t++) {\n var fromId = this.parent.viewType === 'ResourceView' ? fromRecord.ganttProperties.taskId :\n fromRecord.ganttProperties.rowUniqueID;\n if (fromRecordPredcessor[t].from.toString() === fromId.toString()\n && fromRecordPredcessor[t].to.toString() === recordId.toString()) {\n index = t;\n break;\n }\n }\n if (record.uniqueID == fromRecord.parentUniqueID || record.parentUniqueID == fromRecord.uniqueID || this.parent.isOnDelete) {\n fromRecordPredcessor.splice(index, 1);\n this.updatePredecessorValues(fromRecord, fromRecordPredcessor);\n }\n }\n }\n }\n };\n Edit.prototype.updatePredecessorValues = function (record, predcessorArray) {\n this.parent.setRecordValue('predecessor', predcessorArray, record.ganttProperties, true);\n var predecessorString = this.parent.predecessorModule.getPredecessorStringValue(record);\n this.parent.setRecordValue('predecessorsName', predecessorString, record.ganttProperties, true);\n this.parent.setRecordValue('taskData.' + this.parent.taskFields.dependency, predecessorString, record);\n this.parent.setRecordValue(this.parent.taskFields.dependency, predecessorString, record);\n };\n /**\n * Method to update TaskID of a gantt record\n *\n * @param {string | number} currentId .\n * @param {number | string} newId .\n * @returns {void} .\n */\n Edit.prototype.updateTaskId = function (currentId, newId) {\n if (!this.parent.readOnly) {\n var cId = typeof currentId === 'number' ? currentId.toString() : currentId;\n var nId = typeof newId === 'number' ? newId.toString() : newId;\n var ids = this.parent.ids;\n if (!isNullOrUndefined(cId) && !isNullOrUndefined(nId)) {\n var cIndex = ids.indexOf(cId);\n var nIndex = ids.indexOf(nId);\n // return false for invalid taskID\n if (cIndex === -1 || nIndex > -1) {\n return;\n }\n var thisRecord = this.parent.flatData[cIndex];\n thisRecord.ganttProperties.taskId = thisRecord.ganttProperties.rowUniqueID = nId;\n thisRecord.taskData[this.parent.taskFields.id] = nId;\n thisRecord[this.parent.taskFields.id] = nId;\n ids[cIndex] = nId;\n if (thisRecord.hasChildRecords && this.parent.taskFields.parentID) {\n var childRecords = thisRecord.childRecords;\n for (var count = 0; count < childRecords.length; count++) {\n var childRecord = childRecords[count];\n childRecord[this.parent.taskFields.parentID] = newId;\n this.parent.chartRowsModule.refreshRecords([childRecord]);\n }\n }\n if (this.parent.taskFields.dependency && !isNullOrUndefined(thisRecord.ganttProperties.predecessor)) {\n var predecessors = thisRecord.ganttProperties.predecessor;\n var currentGanttRecord = void 0;\n for (var i = 0; i < predecessors.length; i++) {\n var predecessor = predecessors[i];\n if (predecessor.to === cId) {\n currentGanttRecord = this.parent.flatData[ids.indexOf(predecessor.from)];\n }\n else if (predecessor.from === cId) {\n currentGanttRecord = this.parent.flatData[ids.indexOf(predecessor.to)];\n }\n this.updatePredecessorOnUpdateId(currentGanttRecord, cId, nId);\n }\n }\n this.parent.treeGrid.parentData = [];\n this.parent.treeGrid.refresh();\n }\n }\n };\n Edit.prototype.updatePredecessorOnUpdateId = function (currentGanttRecord, cId, nId) {\n if (this.parent.flatData.indexOf(currentGanttRecord) > -1) {\n var pred = currentGanttRecord.ganttProperties.predecessor;\n for (var j = 0; j < pred.length; j++) {\n var pre = pred[j];\n if (pre.to === cId) {\n pre.to = nId;\n }\n else if (pre.from === cId) {\n pre.from = nId;\n }\n }\n }\n this.updatePredecessorValues(currentGanttRecord, currentGanttRecord.ganttProperties.predecessor);\n };\n Edit.prototype.deleteChildRecords = function (record) {\n var childRecords = record.childRecords;\n for (var c = 0; c < childRecords.length; c++) {\n var childRecord = childRecords[c];\n if (this.deletedTaskDetails.indexOf(childRecord) !== -1) {\n continue;\n }\n var predecessor = childRecord.ganttProperties.predecessor;\n var canDeletePredecessor = true;\n var parentTask = this.parent.getParentTask(childRecord.parentItem);\n if (this.parent.viewType === 'ResourceView' && parentTask && parentTask.ganttProperties.taskName !==\n this.parent.localeObj.getConstant('unassignedTask')) {\n canDeletePredecessor = false;\n }\n if (predecessor && predecessor.length && canDeletePredecessor) {\n this.removePredecessorOnDelete(childRecord);\n }\n this.deletedTaskDetails.push(childRecord);\n if (childRecord.hasChildRecords) {\n this.deleteChildRecords(childRecord);\n }\n }\n };\n Edit.prototype.removeFromDataSource = function (deleteRecordIDs) {\n var dataSource;\n if (this.parent.dataSource instanceof DataManager) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n this.removeData(dataSource, deleteRecordIDs);\n this.isBreakLoop = false;\n };\n Edit.prototype.removeData = function (dataCollection, record) {\n for (var i = 0; i < dataCollection.length; i++) {\n if (this.isBreakLoop) {\n break;\n }\n if (record.indexOf(getValue(this.parent.taskFields.id, dataCollection[i]).toString()) !== -1) {\n if (dataCollection[i][this.parent.taskFields.child]) {\n var childRecords = dataCollection[i][this.parent.taskFields.child];\n this.removeData(childRecords, record);\n }\n record.splice(record.indexOf(getValue(this.parent.taskFields.id, dataCollection[i]).toString()), 1);\n dataCollection.splice(i, 1);\n if (record.length === 0) {\n this.isBreakLoop = true;\n break;\n }\n }\n else if (dataCollection[i][this.parent.taskFields.child]) {\n var childRecords = dataCollection[i][this.parent.taskFields.child];\n this.removeData(childRecords, record);\n }\n }\n };\n Edit.prototype.initiateDeleteAction = function (args) {\n var _this = this;\n this.parent.showSpinner();\n var eventArgs = {};\n eventArgs.requestType = 'beforeDelete';\n eventArgs.data = args.deletedRecordCollection;\n eventArgs.modifiedRecords = args.updatedRecordCollection;\n eventArgs.modifiedTaskData = getTaskData(args.updatedRecordCollection, null, null, this.parent);\n this.parent.trigger('actionBegin', eventArgs, function (eventArg) {\n if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n _this.parent.showMaskRow();\n }\n else {\n _this.parent.showSpinner();\n }\n if (eventArg.cancel) {\n var deleteRecords = _this.deletedTaskDetails;\n for (var d = 0; d < deleteRecords.length; d++) {\n deleteRecords[d].isDelete = false;\n }\n _this.deletedTaskDetails = [];\n _this.reUpdatePreviousRecords();\n _this.parent.initiateEditAction(false);\n _this.parent.hideSpinner();\n }\n else {\n if (isRemoteData(_this.parent.dataSource)) {\n var data_1 = _this.parent.dataSource;\n if (_this.parent.timezone) {\n eventArg.modifiedRecords.forEach(function (modifiedRecord) {\n updateDates(modifiedRecord, _this.parent);\n });\n }\n var updatedData_1 = {\n deletedRecords: getTaskData(eventArg.data, null, null, _this.parent),\n changedRecords: eventArg.modifiedTaskData\n };\n var adaptor = data_1.adaptor;\n var query_1 = _this.parent.query instanceof Query ? _this.parent.query : new Query();\n if (!(adaptor instanceof WebApiAdaptor && adaptor instanceof ODataAdaptor) || data_1.dataSource.batchUrl) {\n var crud = data_1.saveChanges(updatedData_1, _this.parent.taskFields.id, null, query_1);\n crud.then(function () { return _this.deleteSuccess(args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n else {\n var deletedRecords = 'deletedRecords';\n var deleteCrud = null;\n for (var i = 0; i < updatedData_1[deletedRecords].length; i++) {\n deleteCrud = data_1.remove(_this.parent.taskFields.id, updatedData_1[deletedRecords][i], null, query_1);\n }\n deleteCrud.then(function () {\n var changedRecords = 'changedRecords';\n var updateCrud = data_1.update(_this.parent.taskFields.id, updatedData_1[changedRecords], null, query_1);\n updateCrud.then(function () { return _this.deleteSuccess(args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }).catch(function (e) { return _this.dmFailure(e, args); });\n }\n }\n else {\n _this.deleteSuccess(args);\n }\n }\n });\n };\n Edit.prototype.deleteSuccess = function (args) {\n var _this = this;\n var flatData = this.parent.flatData;\n var currentData = this.parent.currentViewData;\n var deletedRecords = [];\n for (var i = 0; i < args.deletedRecordCollection.length; i++) {\n if (this.parent.viewType === 'ProjectView') {\n deletedRecords.push(this.parent.getRecordByID(args.deletedRecordCollection[i].ganttProperties.taskId));\n }\n else {\n var id = void 0;\n if (args.deletedRecordCollection[i].hasChildRecords) {\n id = 'R' + args.deletedRecordCollection[i].ganttProperties.taskId;\n }\n else {\n id = 'T' + args.deletedRecordCollection[i].ganttProperties.taskId;\n }\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed']) {\n deletedRecords.push(this.parent.getTaskByUniqueID(args.deletedRecordCollection[i].uniqueID));\n }\n else {\n deletedRecords.push(this.parent.flatData[this.parent.taskIds.indexOf(id.toString())]);\n }\n }\n }\n var deleteRecordIDs = [];\n if (deletedRecords.length > 0) {\n this.parent.selectedRowIndex = deletedRecords[deletedRecords.length - 1].index;\n }\n for (var i = 0; i < deletedRecords.length; i++) {\n var deleteRecord = deletedRecords[i];\n var currentIndex = void 0;\n var flatIndex = void 0;\n if (this.parent.viewType === 'ResourceView') {\n if (deleteRecord.hasChildRecords) {\n currentIndex = this.parent.taskIds.indexOf('R' + deleteRecord.ganttProperties.taskId.toString());\n flatIndex = this.parent.taskIds.indexOf('R' + deleteRecord.ganttProperties.taskId.toString());\n }\n else {\n currentIndex = this.parent.taskIds.indexOf('T' + deleteRecord.ganttProperties.taskId.toString());\n flatIndex = this.parent.taskIds.indexOf('T' + deleteRecord.ganttProperties.taskId.toString());\n }\n }\n else {\n currentIndex = currentData.indexOf(deleteRecord);\n flatIndex = flatData.indexOf(deleteRecord);\n }\n var treeGridParentIndex = this.parent.treeGrid.parentData.indexOf(deleteRecord);\n var tempData = getValue('dataOperation.dataArray', this.parent);\n var dataIndex = tempData.indexOf(deleteRecord.taskData);\n var childIndex = void 0;\n if (currentIndex !== -1) {\n currentData.splice(currentIndex, 1);\n }\n if (flatIndex !== -1) {\n flatData.splice(flatIndex, 1);\n }\n if (dataIndex !== -1) {\n tempData.splice(dataIndex, 1);\n }\n if (!isNullOrUndefined(deleteRecord)) {\n deleteRecordIDs.push(deleteRecord.ganttProperties.taskId.toString());\n if (flatIndex !== -1) {\n this.parent.ids.splice(flatIndex, 1);\n if (this.parent.viewType === 'ResourceView') {\n this.parent.getTaskIds().splice(flatIndex, 1);\n if (!deleteRecord.hasChildRecords) {\n deleteRecord.ganttProperties.resourceInfo = null;\n delete deleteRecord.ganttProperties.resourceNames;\n deleteRecord[this.parent.taskFields.resourceInfo] = null;\n deleteRecord.ganttProperties.sharedTaskUniqueIds = [];\n delete deleteRecord.taskData[this.parent.taskFields.resourceInfo];\n }\n }\n }\n if (deleteRecord.level === 0 && treeGridParentIndex !== -1) {\n this.parent.treeGrid.parentData.splice(treeGridParentIndex, 1);\n }\n if (deleteRecord.parentItem) {\n var parentItem = this.parent.getParentTask(deleteRecord.parentItem);\n if (parentItem) {\n var childRecords = parentItem.childRecords;\n childIndex = childRecords.indexOf(deleteRecord);\n if (childIndex !== -1) {\n childRecords.splice(childIndex, 1);\n }\n if (!childRecords.length) {\n this.parent.setRecordValue('hasChildRecords', false, parentItem);\n }\n }\n }\n this.updateTreeGridUniqueID(deleteRecord, 'delete');\n }\n }\n if (deleteRecordIDs.length > 0) {\n this.removeFromDataSource(deleteRecordIDs);\n }\n var eventArgs = {};\n this.parent.updatedConnectorLineCollection = [];\n this.parent.connectorLineIds = [];\n this.parent.predecessorModule.createConnectorLinesCollection(this.parent.flatData);\n this.parent.treeGrid.parentData = [];\n this.parent.treeGrid.refresh();\n if (this.parent.enableImmutableMode) {\n this.refreshRecordInImmutableMode();\n }\n // Trigger actioncomplete event for delete action\n eventArgs.requestType = 'delete';\n eventArgs.data = args.deletedRecordCollection;\n eventArgs.modifiedRecords = args.updatedRecordCollection;\n eventArgs.modifiedTaskData = getTaskData(args.updatedRecordCollection, null, null, this.parent);\n setValue('action', args.action, eventArgs);\n this.parent.isOnDelete = false;\n if (this.parent.viewType === 'ResourceView' && (!this.parent.undoRedoModule || (this.parent.undoRedoModule && (!this.parent.undoRedoModule['isUndoRedoPerformed'] || (this.parent.undoRedoModule['isUndoRedoPerformed'] && this.parent.undoRedoModule['currentAction']['action'] == 'Delete'))))) {\n var updateUnAssignedResources_1 = eventArgs.data.filter(function (data) {\n return !data.hasChildRecords;\n });\n var _loop_4 = function (i) {\n var unassignedTask = this_4.parent.flatData.filter(function (data) {\n return data.ganttProperties.taskName === _this.parent.localeObj.getConstant('unassignedTask');\n })[0];\n var isDuplicate = [];\n if (unassignedTask) {\n isDuplicate = unassignedTask.childRecords.filter(function (data) {\n return data.ganttProperties.taskId === updateUnAssignedResources_1[i].ganttProperties.taskId;\n });\n }\n var parentTask = this_4.parent.getParentTask(updateUnAssignedResources_1[i].parentItem);\n if (parentTask && parentTask.ganttProperties.taskName !==\n this_4.parent.localeObj.getConstant('unassignedTask') && isDuplicate.length === 0) {\n this_4.checkWithUnassignedTask(updateUnAssignedResources_1[i]);\n }\n else if (!parentTask && (!isDuplicate || isDuplicate.length === 0)) {\n this_4.checkWithUnassignedTask(updateUnAssignedResources_1[i]);\n }\n unassignedTask = this_4.parent.flatData.filter(function (data) {\n return data.ganttProperties.taskName === _this.parent.localeObj.getConstant('unassignedTask');\n })[0];\n var parentItem = this_4.parent.currentViewData.filter(function (data) {\n if (data.ganttProperties.taskId == updateUnAssignedResources_1[i].ganttProperties.taskId && (!data.hasChildRecords && data.parentItem)\n && unassignedTask.uniqueID === data.parentItem.uniqueID) {\n return data;\n }\n else {\n return null;\n }\n });\n if (parentItem[0]) {\n this_4.parent.dataOperation.updateParentItems(parentItem[0]);\n }\n };\n var this_4 = this;\n for (var i = 0; i < updateUnAssignedResources_1.length; i++) {\n _loop_4(i);\n }\n }\n this.parent.trigger('actionComplete', eventArgs);\n this.deletedTaskDetails = [];\n this.parent.initiateEditAction(false);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n };\n /**\n *\n * @returns {number | string} .\n * @private\n */\n Edit.prototype.getNewTaskId = function () {\n var ids = this.parent.viewType === 'ResourceView' ? this.parent.getTaskIds() : this.parent.ids;\n var maxId = ids.length;\n var newTaskId = maxId + 1;\n if (this.parent.viewType === 'ResourceView') {\n if (ids.indexOf('T' + newTaskId) !== -1 || ids.indexOf('R' + newTaskId) !== -1) {\n newTaskId = newTaskId + 1;\n if (ids.indexOf('T' + newTaskId) !== -1 || ids.indexOf('R' + newTaskId) !== -1) {\n do {\n newTaskId = newTaskId + 1;\n } while (ids.indexOf('T' + newTaskId) !== -1 || ids.indexOf('R' + newTaskId) !== -1);\n }\n }\n }\n else {\n if (ids.indexOf(newTaskId.toString()) != -1) {\n newTaskId = newTaskId + 1;\n if (ids.indexOf(newTaskId.toString()) != -1) {\n do {\n newTaskId = newTaskId + 1;\n } while (ids.indexOf(newTaskId.toString()) != -1);\n }\n }\n }\n if (this.parent.columnByField[this.parent.taskFields.id].editType === \"stringedit\") {\n return newTaskId = newTaskId.toString();\n }\n else {\n return newTaskId;\n }\n };\n /**\n * @param {object} obj .\n * @param {RowPosition} rowPosition .\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Edit.prototype.prepareNewlyAddedData = function (obj, rowPosition) {\n var taskModel = this.parent.taskFields;\n var id;\n var newTaskIDmd;\n var ids = this.parent.ids;\n /*Validate Task Id of data*/\n if (obj[taskModel.id]) {\n if (ids.indexOf(obj[taskModel.id].toString()) !== -1) {\n obj[taskModel.id] = null;\n }\n else {\n if (typeof (obj[taskModel.id]) === \"string\") {\n newTaskIDmd = obj[taskModel.id];\n }\n else {\n newTaskIDmd = parseInt(obj[taskModel.id], 10);\n }\n obj[taskModel.id] = isNullOrUndefined(newTaskIDmd) ? null : newTaskIDmd;\n }\n }\n if (!obj[taskModel.id]) {\n id = this.getNewTaskId();\n obj[taskModel.id] = id;\n }\n if (!this.parent.allowUnscheduledTasks && !obj[taskModel.startDate]) {\n obj[taskModel.startDate] = this.parent.projectStartDate;\n }\n if (!this.parent.allowUnscheduledTasks && taskModel.duration && isNullOrUndefined(obj[taskModel.duration])) {\n if (!obj[taskModel.endDate]) {\n obj[taskModel.duration] = '5';\n }\n }\n if (taskModel.progress) {\n obj[taskModel.progress] = obj[taskModel.progress] ? (obj[taskModel.progress] > 100 ? 100 : obj[taskModel.progress]) : 0;\n }\n if (!this.parent.allowUnscheduledTasks && !obj[taskModel.endDate] && taskModel.endDate) {\n if (!obj[taskModel.duration]) {\n var startDate = this.parent.dataOperation.getDateFromFormat(this.parent.projectStartDate);\n startDate.setDate(startDate.getDate() + 4);\n obj[taskModel.endDate] = this.parent.getFormatedDate(startDate, this.parent.getDateFormat());\n }\n }\n };\n /**\n * @param {object} obj .\n * @param {number} level .\n * @param {RowPosition} rowPosition .\n * @param {IGanttData} parentItem .\n * @returns {IGanttData} .\n * @private\n */\n Edit.prototype.updateNewlyAddedDataBeforeAjax = function (obj, level, rowPosition, parentItem) {\n var cAddedRecord = this.parent.dataOperation.createRecord(obj, level);\n cAddedRecord.index = parseInt(cAddedRecord.ganttProperties.rowUniqueID.toString(), 10) - 1;\n if (!isNullOrUndefined(parentItem)) {\n this.parent.setRecordValue('parentItem', this.parent.dataOperation.getCloneParent(parentItem), cAddedRecord);\n var pIndex = cAddedRecord.parentItem ? cAddedRecord.parentItem.index : null;\n this.parent.setRecordValue('parentIndex', pIndex, cAddedRecord);\n var parentUniqId = cAddedRecord.parentItem ? cAddedRecord.parentItem.uniqueID : null;\n this.parent.setRecordValue('parentUniqueID', parentUniqId, cAddedRecord);\n if (!isNullOrUndefined(this.parent.taskFields.id) &&\n !isNullOrUndefined(this.parent.taskFields.parentID) && cAddedRecord.parentItem) {\n if (this.parent.viewType === 'ProjectView') {\n this.parent.setRecordValue(this.parent.taskFields.parentID, cAddedRecord.parentItem.taskId, cAddedRecord.taskData, true);\n }\n this.parent.setRecordValue('parentId', cAddedRecord.parentItem.taskId, cAddedRecord.ganttProperties, true);\n this.parent.setRecordValue(this.parent.taskFields.parentID, cAddedRecord.parentItem.taskId, cAddedRecord, true);\n }\n }\n this.parent.isOnEdit = true;\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed']) {\n if (obj['hasChildRecords']) {\n var totalRecords = [];\n var currentAction = this.parent.undoRedoModule['currentAction']['deletedRecordsDetails'];\n for (var i = 0; i < obj['childRecords'].length; i++) {\n this.add(obj['childRecords'][i], totalRecords);\n }\n for (var j = 0; j < currentAction.length; j++) {\n if (obj['ganttProperties'].taskId == currentAction[j]['data'].ganttProperties.taskId) {\n if (currentAction[j]['position'] == 'child') {\n rowPosition = 'Child';\n }\n else if (currentAction[j]['position'] == 'below') {\n rowPosition = 'Below';\n }\n else if (currentAction[j]['position'] == 'above') {\n rowPosition = 'Above';\n }\n this.backUpAndPushNewlyAddedRecord(cAddedRecord, rowPosition, parentItem);\n for (var i = 0; i < totalRecords.length; i++) {\n if (this.parent.viewType == 'ProjectView') {\n if (totalRecords[i].parentItem.taskId == cAddedRecord.ganttProperties.taskId) {\n totalRecords[i].parentItem.index = cAddedRecord.index;\n totalRecords[i].parentItem.taskId = cAddedRecord.ganttProperties.taskId;\n totalRecords[i].parentItem.uniqueID = cAddedRecord.ganttProperties.uniqueID;\n totalRecords[i].parentUniqueID = cAddedRecord.ganttProperties.uniqueID;\n }\n }\n else {\n totalRecords[i].parentItem.index = cAddedRecord.index;\n totalRecords[i].parentItem.taskId = cAddedRecord.ganttProperties.rowUniqueID;\n totalRecords[i].parentItem.uniqueID = cAddedRecord.ganttProperties.uniqueID;\n totalRecords[i].parentUniqueID = cAddedRecord.ganttProperties.uniqueID;\n }\n }\n break;\n }\n }\n this.addRowSelectedItem = cAddedRecord;\n cAddedRecord.taskData[this.parent.taskFields.child] = [];\n for (var k = 0; k < totalRecords.length; k++) {\n this.parent.isOnEdit = false;\n var newRecord = this.parent.dataOperation.createRecord(totalRecords[k], totalRecords[k].level);\n if (newRecord.childRecords.length == 0 && newRecord.taskData[this.parent.taskFields.child]) {\n newRecord.taskData[this.parent.taskFields.child] = [];\n }\n parentItem = this.parent.getRecordByID(totalRecords[k].parentItem.taskId);\n if (!isNullOrUndefined(parentItem)) {\n this.parent.setRecordValue('parentItem', this.parent.dataOperation.getCloneParent(parentItem), newRecord);\n var pIndex = newRecord.parentItem ? newRecord.parentItem.index : null;\n this.parent.setRecordValue('parentIndex', pIndex, newRecord);\n var parentUniqId = newRecord.parentItem ? newRecord.parentItem.uniqueID : null;\n this.parent.setRecordValue('parentUniqueID', parentUniqId, newRecord);\n if (!isNullOrUndefined(this.parent.taskFields.id) &&\n !isNullOrUndefined(this.parent.taskFields.parentID) && newRecord.parentItem) {\n if (this.parent.viewType === 'ProjectView') {\n this.parent.setRecordValue(this.parent.taskFields.parentID, newRecord.parentItem.taskId, newRecord.taskData, true);\n }\n this.parent.setRecordValue('parentId', newRecord.parentItem.taskId, newRecord.ganttProperties, true);\n this.parent.setRecordValue(this.parent.taskFields.parentID, newRecord.parentItem.taskId, newRecord, true);\n }\n }\n this.parent.isOnEdit = true;\n if (newRecord.parentItem) {\n if (parentItem.childRecords.length == 0) {\n rowPosition = 'Child';\n }\n else {\n rowPosition = 'Below';\n }\n }\n if (this.parent.getParentTask(newRecord.parentItem).childRecords.length > 0) {\n this.addRowSelectedItem = this.parent.getParentTask(newRecord.parentItem).childRecords[this.parent.getParentTask(newRecord.parentItem).childRecords.length - 1];\n }\n this.backUpAndPushNewlyAddedRecord(newRecord, rowPosition, parentItem);\n for (var i = 0; i < totalRecords.length; i++) {\n if (this.parent.viewType == 'ProjectView') {\n if (totalRecords[i].parentItem.taskId == newRecord.ganttProperties.taskId) {\n totalRecords[i].parentItem.index = newRecord.index;\n totalRecords[i].parentItem.taskId = newRecord.ganttProperties.taskId;\n totalRecords[i].parentItem.uniqueID = newRecord.ganttProperties.uniqueID;\n totalRecords[i].parentUniqueID = newRecord.ganttProperties.uniqueID;\n }\n }\n else {\n totalRecords[i].parentItem.index = cAddedRecord.index;\n totalRecords[i].parentItem.taskId = cAddedRecord.ganttProperties.rowUniqueID;\n totalRecords[i].parentItem.uniqueID = cAddedRecord.ganttProperties.uniqueID;\n totalRecords[i].parentUniqueID = cAddedRecord.ganttProperties.uniqueID;\n }\n }\n }\n }\n else {\n this.backUpAndPushNewlyAddedRecord(cAddedRecord, rowPosition, parentItem);\n }\n }\n else {\n this.backUpAndPushNewlyAddedRecord(cAddedRecord, rowPosition, parentItem);\n }\n // need to push in dataSource also.\n if (this.parent.taskFields.dependency && cAddedRecord.ganttProperties.predecessorsName) {\n if (!this.parent.undoRedoModule || !this.parent.undoRedoModule['isUndoRedoPerformed']) {\n this.parent.predecessorModule.ensurePredecessorCollectionHelper(cAddedRecord, cAddedRecord.ganttProperties);\n }\n this.parent.predecessorModule.updatePredecessorHelper(cAddedRecord);\n this.parent.predecessorModule.validatePredecessorDates(cAddedRecord);\n }\n if (cAddedRecord.parentItem && this.parent.getParentTask(cAddedRecord.parentItem).ganttProperties.isAutoSchedule) {\n this.parent.dataOperation.updateParentItems(cAddedRecord.parentItem);\n }\n this.parent.isOnEdit = false;\n return cAddedRecord;\n };\n /**\n * @param {IGanttData} record .\n * @param {number} count .\n * @returns {number} .\n * @private\n */\n Edit.prototype.getChildCount = function (record, count) {\n var currentRecord;\n if (!record.hasChildRecords) {\n return 0;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[i];\n count++;\n if (currentRecord.hasChildRecords) {\n count = this.getChildCount(currentRecord, count);\n }\n }\n return count;\n };\n /**\n * @param {IGanttData} data .\n * @param {number} count .\n * @param {IGanttData[]} collection .\n * @returns {number} .\n * @private\n */\n Edit.prototype.getVisibleChildRecordCount = function (data, count, collection) {\n var childRecords;\n var length;\n if (data.hasChildRecords) {\n childRecords = data.childRecords;\n length = childRecords.length;\n for (var i = 0; i < length; i++) {\n if (collection.indexOf(childRecords[i]) !== -1) {\n count++;\n }\n if (childRecords[i].hasChildRecords) {\n count = this.getVisibleChildRecordCount(childRecords[i], count, collection);\n }\n }\n }\n else {\n if (collection.indexOf(data) !== -1) {\n count++;\n }\n }\n return count;\n };\n /**\n * @param {IGanttData} parentRecord .\n * @returns {void} .\n * @private\n */\n Edit.prototype.updatePredecessorOnIndentOutdent = function (parentRecord) {\n var len = parentRecord.ganttProperties.predecessor.length;\n var parentRecordTaskData = parentRecord.ganttProperties;\n var predecessorCollection = parentRecordTaskData.predecessor;\n var childRecord;\n var predecessorIndex;\n var updatedPredecessor = [];\n var validPredecessor;\n for (var count = 0; count < len; count++) {\n var fromRecord = this.parent.getRecordByID(predecessorCollection[count].from);\n var toRecord = this.parent.getRecordByID(predecessorCollection[count].to);\n validPredecessor = this.parent.connectorLineEditModule.validateParentPredecessor(fromRecord, toRecord);\n if (!validPredecessor || !this.parent.allowParentDependency) {\n if (predecessorCollection[count].to === parentRecordTaskData.rowUniqueID.toString()) {\n childRecord = this.parent.getRecordByID(predecessorCollection[count].from);\n predecessorIndex = getIndex(predecessorCollection[count], 'from', childRecord.ganttProperties.predecessor, 'to');\n // eslint-disable-next-line\n var predecessorCollections = (extend([], childRecord.ganttProperties.predecessor, [], true));\n predecessorCollections.splice(predecessorIndex, 1);\n this.parent.setRecordValue('predecessor', predecessorCollections, childRecord.ganttProperties, true);\n }\n else if (predecessorCollection[count].from === parentRecordTaskData.rowUniqueID.toString()) {\n childRecord = this.parent.getRecordByID(predecessorCollection[count].to);\n var prdcList = (childRecord.ganttProperties.predecessorsName.toString()).split(',');\n var str = predecessorCollection[count].from + predecessorCollection[count].type;\n var ind = prdcList.indexOf(str);\n prdcList.splice(ind, 1);\n this.parent.setRecordValue('predecessorsName', prdcList.join(','), childRecord.ganttProperties, true);\n this.parent.setRecordValue(this.parent.taskFields.dependency, prdcList.join(','), childRecord);\n predecessorIndex = getIndex(predecessorCollection[count], 'from', childRecord.ganttProperties.predecessor, 'to');\n // eslint-disable-next-line\n var temppredecessorCollection = (extend([], childRecord.ganttProperties.predecessor, [], true));\n temppredecessorCollection.splice(predecessorIndex, 1);\n this.parent.setRecordValue('predecessor', temppredecessorCollection, childRecord.ganttProperties, true);\n this.parent.predecessorModule.validatePredecessorDates(childRecord);\n }\n }\n }\n if (!validPredecessor || !this.parent.allowParentDependency) {\n this.parent.setRecordValue('predecessor', updatedPredecessor, parentRecord.ganttProperties, true);\n this.parent.setRecordValue('predecessorsName', '', parentRecord.ganttProperties, true);\n }\n };\n /**\n * @param {IPredecessor[]} predecessorCollection .\n * @param {IGanttData} record .\n * @returns {string} .\n * @private\n */\n Edit.prototype.predecessorToString = function (predecessorCollection, record) {\n var predecessorString = [];\n var count = 0;\n var length = predecessorCollection.length;\n for (count; count < length; count++) {\n if (record.ganttProperties.rowUniqueID.toString() !== predecessorCollection[count].from) {\n var tem = predecessorCollection[count].from + predecessorCollection[count].type;\n predecessorCollection[count].offset =\n isNaN(predecessorCollection[count].offset) ? 0 : predecessorCollection[count].offset;\n if (predecessorCollection[count].offset !== 0) {\n if (predecessorCollection[count].offset < 0) {\n tem += predecessorCollection[count].offset.toString() + 'd';\n }\n else if (predecessorCollection[count].offset > 0) {\n tem += '+' + predecessorCollection[count].offset.toString() + 'd';\n }\n }\n predecessorString.push(tem);\n }\n }\n return predecessorString.join(',');\n };\n /**\n * @param {IGanttData} record .\n * @param {RowPosition} rowPosition .\n * @param {IGanttData} parentItem .\n * @returns {void} .\n * @private\n */\n Edit.prototype.backUpAndPushNewlyAddedRecord = function (record, rowPosition, parentItem) {\n var flatRecords = this.parent.flatData;\n var currentViewData = this.parent.currentViewData;\n var ids = this.parent.ids;\n var currentItemIndex;\n var recordIndex;\n var updatedCollectionIndex;\n var childIndex;\n switch (rowPosition) {\n case 'Top':\n flatRecords.splice(0, 0, record);\n currentViewData.splice(0, 0, record);\n ids.splice(0, 0, record.ganttProperties.rowUniqueID.toString()); // need to check NAN\n break;\n case 'Bottom':\n flatRecords.push(record);\n currentViewData.push(record);\n ids.push(record.ganttProperties.rowUniqueID.toString()); // need to check NAN\n if (this.parent.viewType === 'ResourceView') {\n var taskId = record.level === 0 ? 'R' + record.ganttProperties.taskId : 'T' + record.ganttProperties.taskId;\n this.parent.getTaskIds().push(taskId);\n }\n break;\n case 'Above':\n /*Record Updates*/\n recordIndex = flatRecords.indexOf(this.addRowSelectedItem);\n updatedCollectionIndex = currentViewData.indexOf(this.addRowSelectedItem);\n this.recordCollectionUpdate(childIndex, recordIndex, updatedCollectionIndex, record, parentItem, rowPosition);\n break;\n case 'Below':\n currentItemIndex = flatRecords.indexOf(this.addRowSelectedItem);\n if (this.addRowSelectedItem.hasChildRecords) {\n var dataChildCount = this.getChildCount(this.addRowSelectedItem, 0);\n recordIndex = currentItemIndex + dataChildCount + 1;\n updatedCollectionIndex = currentViewData.indexOf(this.addRowSelectedItem) +\n this.getVisibleChildRecordCount(this.addRowSelectedItem, 0, currentViewData) + 1;\n }\n else {\n recordIndex = currentItemIndex + 1;\n updatedCollectionIndex = currentViewData.indexOf(this.addRowSelectedItem) + 1;\n }\n this.recordCollectionUpdate(childIndex + 1, recordIndex, updatedCollectionIndex, record, parentItem, rowPosition);\n break;\n case 'Child':\n currentItemIndex = flatRecords.indexOf(this.addRowSelectedItem);\n if (this.addRowSelectedItem.hasChildRecords) {\n var dataChildCount = this.getChildCount(this.addRowSelectedItem, 0);\n recordIndex = currentItemIndex + dataChildCount + 1;\n //Expand Add record's parent item for project view\n if (!this.addRowSelectedItem.expanded && !this.parent.enableMultiTaskbar) {\n this.parent.expandByID(this.addRowSelectedItem.ganttProperties.rowUniqueID);\n }\n updatedCollectionIndex = currentViewData.indexOf(this.addRowSelectedItem) +\n this.getVisibleChildRecordCount(this.addRowSelectedItem, 0, currentViewData) + 1;\n }\n else {\n this.parent.setRecordValue('hasChildRecords', true, this.addRowSelectedItem);\n this.parent.setRecordValue('isMilestone', false, this.addRowSelectedItem.ganttProperties, true);\n this.parent.setRecordValue('expanded', true, this.addRowSelectedItem);\n this.parent.setRecordValue('childRecords', [], this.addRowSelectedItem);\n recordIndex = currentItemIndex + 1;\n updatedCollectionIndex = currentViewData.indexOf(this.addRowSelectedItem) + 1;\n if (this.addRowSelectedItem.ganttProperties.predecessor) {\n this.updatePredecessorOnIndentOutdent(this.addRowSelectedItem);\n }\n if (!isNullOrUndefined(this.addRowSelectedItem.ganttProperties.segments)) {\n this.addRowSelectedItem.ganttProperties.segments = null;\n }\n }\n this.recordCollectionUpdate(childIndex + 1, recordIndex, updatedCollectionIndex, record, parentItem, rowPosition);\n break;\n }\n this.newlyAddedRecordBackup = record;\n };\n /**\n * @param {number} childIndex .\n * @param {number} recordIndex .\n * @param {number} updatedCollectionIndex .\n * @param {IGanttData} record .\n * @param {IGanttData} parentItem .\n * @returns {void} .\n * @private\n */\n Edit.prototype.recordCollectionUpdate = function (childIndex, recordIndex, updatedCollectionIndex, record, parentItem, rowPosition) {\n var flatRecords = this.parent.flatData;\n var currentViewData = this.parent.currentViewData;\n var ids = this.parent.ids;\n /* Record collection update */\n flatRecords.splice(recordIndex, 0, record);\n currentViewData.splice(updatedCollectionIndex, 0, record);\n if (this.parent.viewType === 'ResourceView' && typeof (record.ganttProperties.taskId) === \"number\" && (!this.parent.undoRedoModule || !this.parent.undoRedoModule['isUndoRedoPerformed'])) {\n var taskString = record.ganttProperties.taskId;\n ids.push(taskString.toString());\n }\n ids.splice(recordIndex, 0, record.ganttProperties.rowUniqueID.toString());\n if (this.parent.viewType === 'ResourceView') {\n var taskId = record.level === 0 ? 'R' + record.ganttProperties.taskId : 'T' + record.ganttProperties.taskId;\n this.parent.getTaskIds().splice(recordIndex, 0, taskId);\n }\n /* data Source update */\n if (!isNullOrUndefined(parentItem)) {\n if (rowPosition == 'Above') {\n childIndex = parentItem.childRecords.indexOf(this.addRowSelectedItem);\n }\n else if (rowPosition == 'Below') {\n childIndex = parentItem.childRecords.indexOf(this.addRowSelectedItem) + 1;\n }\n else {\n childIndex = parentItem.childRecords.length;\n }\n /*Child collection update*/\n parentItem.childRecords.splice(childIndex, 0, record);\n if (!this.parent.taskFields.child) {\n this.parent.taskFields.child = 'Children';\n }\n if ((this.parent.dataSource instanceof DataManager &&\n isNullOrUndefined(parentItem.taskData[this.parent.taskFields.parentID])) ||\n !isNullOrUndefined(this.parent.dataSource)) {\n var child = this.parent.taskFields.child;\n if (parentItem.taskData[child] && parentItem.taskData[child].length > 0) {\n if (rowPosition === 'Above' || rowPosition === 'Below') {\n parentItem.taskData[child].splice(childIndex, 0, record.taskData);\n }\n else {\n parentItem.taskData[child].push(record.taskData);\n }\n }\n else {\n parentItem.taskData[child] = [];\n parentItem.taskData[child].push(record.taskData);\n }\n this.isNewRecordAdded = true;\n }\n }\n };\n /**\n * @param {IGanttData} cAddedRecord .\n * @param {IGanttData} modifiedRecords .\n * @param {string} event .\n * @returns {ITaskAddedEventArgs} .\n * @private\n */\n Edit.prototype.constructTaskAddedEventArgs = function (cAddedRecord, modifiedRecords, event) {\n var eventArgs = {};\n eventArgs.action = eventArgs.requestType = event;\n if (cAddedRecord.length > 1) {\n eventArgs.data = [];\n eventArgs.newTaskData = [];\n eventArgs.recordIndex = [];\n for (var i = 0; i < cAddedRecord.length; i++) {\n eventArgs.data[i] = cAddedRecord[i];\n (eventArgs.newTaskData[i]) = (getTaskData([cAddedRecord[i]], eventArgs.data[i], eventArgs, this.parent));\n eventArgs.recordIndex[i] = cAddedRecord[i].index;\n }\n }\n else if (cAddedRecord.length === 1) {\n for (var i = 0; i < cAddedRecord.length; i++) {\n (eventArgs.data) = (cAddedRecord[i]);\n (eventArgs.newTaskData) = (getTaskData([cAddedRecord[i]], eventArgs.data, eventArgs, this.parent));\n eventArgs.recordIndex = cAddedRecord[i].index;\n }\n }\n eventArgs.modifiedRecords = modifiedRecords;\n eventArgs.modifiedTaskData = getTaskData(modifiedRecords, null, null, this.parent);\n return eventArgs;\n };\n /**\n * @param {ITaskAddedEventArgs} args .\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Edit.prototype.addSuccess = function (args) {\n // let addedRecords: IGanttData = args.addedRecord;\n // let eventArgs: IActionBeginEventArgs = {};\n this.parent.updatedConnectorLineCollection = [];\n this.parent.connectorLineIds = [];\n this.parent.predecessorModule.createConnectorLinesCollection(this.parent.flatData);\n this.parent.treeGrid.parentData = [];\n this.parent.addDeleteRecord = true;\n this.parent.selectedRowIndex = 0;\n this.parent.treeGrid['isAddedFromGantt'] = true;\n this.parent.treeGrid.refresh();\n if (this.parent.enableImmutableMode) {\n this.parent.modifiedRecords = args.modifiedRecords;\n this.parent.modifiedRecords.push(args.data);\n this.refreshRecordInImmutableMode();\n }\n };\n Edit.prototype.refreshRecordInImmutableMode = function (data, dragged) {\n if (!dragged && !isNullOrUndefined(data)) {\n for (var i = data[0].index + 1; i < this.parent.currentViewData.length; i++) {\n if (data[0].level < this.parent.currentViewData[i].level) {\n this.parent.modifiedRecords.push(this.parent.currentViewData[i]);\n }\n else {\n break;\n }\n }\n }\n var _loop_5 = function (i) {\n var originalData = this_5.parent.modifiedRecords[i];\n var treeIndex = this_5.parent.rowDragAndDropModule && this_5.parent.allowRowDragAndDrop ? 1 : 0;\n var uniqueTaskID = this_5.parent.taskFields.id;\n var originalIndex = this_5.parent.currentViewData.findIndex(function (data) {\n return (data[uniqueTaskID] === originalData[uniqueTaskID]);\n });\n if (this_5.parent.treeGrid.getRows()[originalIndex]) {\n var row = this_5.parent.treeGrid.grid.getRowObjectFromUID(this_5.parent.treeGrid.grid.getDataRows()[originalIndex].getAttribute('data-uid'));\n this_5.parent.treeGrid.renderModule.cellRender({\n data: row.data, cell: this_5.parent.treeGrid.getRows()[originalIndex].cells[this_5.parent.treeColumnIndex + treeIndex],\n column: this_5.parent.treeGrid.grid.getColumns()[this_5.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n this_5.parent.treeGrid.renderModule.RowModifier({\n data: originalData, row: this_5.parent.treeGrid.getRows()[originalIndex], rowHeight: this_5.parent.rowHeight\n });\n }\n };\n var this_5 = this;\n for (var i = 0; i < this.parent.modifiedRecords.length; i++) {\n _loop_5(i);\n }\n };\n /**\n * @param {IGanttData} addedRecord .\n * @param {RowPosition} rowPosition .\n * @returns {void} .\n * @private\n */\n Edit.prototype.updateRealDataSource = function (addedRecord, rowPosition) {\n var taskFields = this.parent.taskFields;\n var dataSource = isCountRequired(this.parent) ? getValue('result', this.parent.dataSource) :\n this.parent.dataSource;\n if (this.parent.dataSource instanceof DataManager) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n for (var i = 0; i < addedRecord.length; i++) {\n if (isNullOrUndefined(rowPosition) || isNullOrUndefined(this.addRowSelectedItem)) {\n rowPosition = rowPosition === 'Bottom' ? 'Bottom' : 'Top';\n }\n if (rowPosition === 'Top') {\n dataSource.splice(0, 0, addedRecord[i].taskData);\n }\n else if (rowPosition === 'Bottom') {\n dataSource.push(addedRecord[i].taskData);\n }\n else {\n if (!isNullOrUndefined(taskFields.id) && !isNullOrUndefined(taskFields.parentID)) {\n dataSource.push(addedRecord[i].taskData);\n }\n else {\n if (!this.isNewRecordAdded) {\n this.addDataInRealDataSource(dataSource, addedRecord[i].taskData, rowPosition);\n }\n this.isNewRecordAdded = false;\n }\n }\n this.isBreakLoop = false;\n }\n };\n /**\n * @param {object[]} dataCollection .\n * @param {IGanttData} record .\n * @param {RowPosition} rowPosition .\n * @returns {void} .\n * @private\n */\n Edit.prototype.addDataInRealDataSource = function (dataCollection, record, rowPosition) {\n for (var i = 0; i < dataCollection.length; i++) {\n var child = this.parent.taskFields.child;\n if (this.isBreakLoop) {\n break;\n }\n if (getValue(this.parent.taskFields.id, dataCollection[i]).toString() ===\n this.addRowSelectedItem.ganttProperties.rowUniqueID.toString()) {\n var index = void 0;\n if (this.parent.rowDragAndDropModule && this.parent.rowDragAndDropModule['droppedRecord'] && this.parent.viewType === 'ResourceView') {\n for (var i_1 = 0; i_1 < dataCollection.length; i_1++) {\n if (dataCollection[i_1][this.parent.taskFields.id] == this.parent.rowDragAndDropModule['droppedRecord'].ganttProperties.taskId) {\n index = i_1;\n break;\n }\n }\n }\n if (rowPosition === 'Above') {\n if (index) {\n dataCollection.splice(index, 0, record);\n }\n else {\n dataCollection.splice(i, 0, record);\n }\n }\n else if (rowPosition === 'Below') {\n if (index) {\n dataCollection.splice(index + 1, 0, record);\n }\n else {\n dataCollection.splice(i + 1, 0, record);\n }\n }\n else if (rowPosition === 'Child') {\n if (dataCollection[i][child] && dataCollection[i][child].length > 0) {\n dataCollection[i][child].push(record);\n }\n else {\n dataCollection[i][child] = [];\n dataCollection[i][child].push(record);\n }\n }\n this.isBreakLoop = true;\n break;\n }\n else if (dataCollection[i][child]) {\n var childRecords = dataCollection[i][child];\n this.addDataInRealDataSource(childRecords, record, rowPosition);\n }\n }\n };\n /**\n * Method to update the values to client side from server side.\n *\n * @param {Object} e - Defines the new modified data from the server.\n * @param {ITaskAddedEventArgs} args - Defines the client side data.\n * @returns {void} .\n */\n Edit.prototype.updateClientDataFromServer = function (e, args) {\n var serverReturnedValue = e.addedRecords[0];\n var _aLength = Object.keys(serverReturnedValue).length;\n for (var j = 0, _a = Object.keys(serverReturnedValue); j < _aLength; j++) {\n var key = _a[parseInt(j.toString(), 10)];\n args.data[\"\" + key] = serverReturnedValue[\"\" + key];\n }\n if (this.parent.taskFields.id !== null) {\n args.data.ganttProperties['taskId'] = serverReturnedValue[this.parent.taskFields.id];\n }\n if (this.parent.taskFields.name !== null) {\n args.data.ganttProperties['taskName'] = serverReturnedValue[this.parent.taskFields.name];\n }\n if (this.parent.taskFields.startDate !== null) {\n args.data.ganttProperties['startDate'] = serverReturnedValue[this.parent.taskFields.startDate];\n }\n if (this.parent.taskFields.endDate !== null) {\n args.data.ganttProperties['endDate'] = serverReturnedValue[this.parent.taskFields.endDate];\n }\n if (this.parent.taskFields.duration !== null) {\n args.data.ganttProperties['duration'] = parseFloat(serverReturnedValue[this.parent.taskFields.duration]);\n }\n if (this.parent.taskFields.durationUnit !== null) {\n args.data.ganttProperties['durationUnit'] = serverReturnedValue[this.parent.taskFields.durationUnit];\n }\n if (this.parent.taskFields.progress !== null) {\n args.data.ganttProperties['progress'] = serverReturnedValue[this.parent.taskFields.progress];\n }\n if (this.parent.taskFields.dependency !== null) {\n args.data.ganttProperties['dependency'] = serverReturnedValue[this.parent.taskFields.dependency];\n }\n if (this.parent.taskFields.parentID !== null) {\n args.data.ganttProperties['parentID'] = serverReturnedValue[this.parent.taskFields.parentID];\n }\n if (this.parent.taskFields.baselineEndDate !== null) {\n args.data.ganttProperties['baselineEndDate'] = serverReturnedValue[this.parent.taskFields.baselineEndDate];\n }\n if (this.parent.taskFields.baselineStartDate !== null) {\n args.data.ganttProperties['baselineStartDate'] = serverReturnedValue[this.parent.taskFields.baselineStartDate];\n }\n if (this.parent.taskFields.resourceInfo !== null) {\n args.data.ganttProperties['resources'] = serverReturnedValue[this.parent.taskFields.resourceInfo];\n }\n };\n /**\n * Method to add new record.\n *\n * @param {Object[] | Object} data - Defines the new data to add.\n * @param {RowPosition} rowPosition - Defines the position of row.\n * @param {number} rowIndex - Defines the row index.\n * @returns {void} .\n * @private\n */\n Edit.prototype.addRecord = function (data, rowPosition, rowIndex) {\n var _this = this;\n var tempTaskID = this.parent.taskFields.id;\n if (this.parent.editModule && this.parent.editSettings.allowAdding) {\n this.parent.isDynamicData = true;\n this.parent.isOnAdded = true;\n var cAddedRecord_1 = [];\n if (isNullOrUndefined(data)) {\n this.validateTaskPosition(data, rowPosition, rowIndex, cAddedRecord_1);\n }\n else if (data instanceof Array) {\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed']) {\n var addData = data;\n var addIndex = rowIndex;\n if (this.parent.viewType === 'ResourceView') {\n if (data[0]['position'] == 'below') {\n rowPosition = 'Below';\n }\n else if (data[0]['position'] == 'above') {\n rowPosition = 'Above';\n }\n else if (data[0]['position'] == 'child') {\n rowPosition = 'Child';\n }\n addIndex = this.parent.taskIds.indexOf(data[0]['id'].toString());\n addData = data[0]['data'];\n }\n this.validateTaskPosition(addData, rowPosition, addIndex, cAddedRecord_1);\n }\n else {\n for (var i = 0; i < data.length; i++) {\n this.validateTaskPosition(data[i], rowPosition, rowIndex, cAddedRecord_1);\n }\n }\n }\n else if (typeof (data) == 'object') {\n this.validateTaskPosition(data, rowPosition, rowIndex, cAddedRecord_1);\n }\n else {\n return;\n }\n var args = {};\n args = this.constructTaskAddedEventArgs(cAddedRecord_1, this.parent.editedRecords, 'beforeAdd');\n if (this.parent.undoRedoModule && !this.parent.undoRedoModule['isUndoRedoPerformed'] && this.parent['isUndoRedoItemPresent']('Add')) {\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['disableRedo']();\n }\n this.parent.undoRedoModule['createUndoCollection']();\n }\n this.parent.trigger('actionBegin', args, function (args) {\n _this.parent.previousRecords = {};\n if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n _this.parent.showMaskRow();\n }\n else {\n _this.parent.showSpinner();\n }\n var tasks = _this.parent.taskFields;\n var ganttData;\n if (_this.parent.viewType === 'ResourceView') {\n if (args.data['childRecords'].length > 0) {\n ganttData = _this.parent.flatData[_this.parent.getTaskIds().indexOf('R' + args.data[tasks.id])];\n }\n else {\n ganttData = _this.parent.flatData[_this.parent.getTaskIds().indexOf('T' + args.data[tasks.id])];\n }\n }\n else {\n ganttData = _this.parent.getRecordByID(args.data[tasks.id]);\n }\n if (!isNullOrUndefined(ganttData)) {\n _this.validateUpdateValues(args.newTaskData, ganttData, true);\n _this.parent.dateValidationModule.calculateEndDate(ganttData);\n _this.parent.dataOperation.updateWidthLeft(ganttData);\n _this.parent.dataOperation.updateParentItems(ganttData);\n }\n if (!isNullOrUndefined(args.data[\"\" + tempTaskID])) {\n if (args.data[tempTaskID] != args.data['ganttProperties']['taskId']) {\n for (var _i = 0, _b = Object.keys(_this.parent.ids); _i < _b.length; _i++) {\n var key = _b[_i];\n if (_this.parent.ids[key] === args.data['ganttProperties']['taskId'].toString()) {\n _this.parent.ids[key] = args.data[tempTaskID].toString();\n break;\n }\n }\n args.data['ganttProperties']['taskId'] = args.data[tempTaskID];\n args.newTaskData[tempTaskID] = args.data[tempTaskID];\n args.data['ganttProperties']['rowUniqueID'] = args.data[tempTaskID].toString();\n }\n }\n if (!args.cancel) {\n var record = {};\n if (isRemoteData(_this.parent.dataSource)) {\n var data_2 = _this.parent.dataSource;\n var updatedData_2 = {\n addedRecords: [args.newTaskData],\n changedRecords: args.modifiedTaskData\n };\n /* tslint:disable-next-line */\n var query = _this.parent.query instanceof Query ? _this.parent.query : new Query();\n var adaptor = data_2.adaptor;\n if (!(adaptor instanceof WebApiAdaptor || adaptor instanceof ODataAdaptor || adaptor instanceof ODataV4Adaptor) || data_2.dataSource.batchUrl) {\n /* tslint:disable-next-line */\n var crud = data_2.saveChanges(updatedData_2, _this.parent.taskFields.id, null, query);\n crud.then(function (e) {\n if (e.addedRecords[0][_this.parent.taskFields.id].toString() != args.data['ganttProperties']['taskId']) {\n args.data['ganttProperties']['taskId'] = e.addedRecords[0][_this.parent.taskFields.id].toString();\n args.newTaskData[tempTaskID] = e.addedRecords[0][_this.parent.taskFields.id].toString();\n args.data['ganttProperties']['rowUniqueID'] = e.addedRecords[0][_this.parent.taskFields.id].toString();\n _this.parent.ids.push(e.addedRecords[0][_this.parent.taskFields.id].toString());\n }\n var prevID = args.data.ganttProperties.taskId.toString();\n if (_this.parent.taskFields.id && !isNullOrUndefined(e.addedRecords[0][_this.parent.taskFields.id]) &&\n e.addedRecords[0][_this.parent.taskFields.id].toString() == prevID) {\n _this.parent.setRecordValue('taskId', e.addedRecords[0][_this.parent.taskFields.id], args.data.ganttProperties, true);\n _this.parent.setRecordValue('taskData', e.addedRecords[0], args.data);\n _this.parent.setRecordValue(_this.parent.taskFields.id, e.addedRecords[0][_this.parent.taskFields.id], args.data);\n _this.parent.setRecordValue('rowUniqueID', e.addedRecords[0][_this.parent.taskFields.id].toString(), args.data.ganttProperties, true);\n _this.updateClientDataFromServer(e, args);\n var idsIndex = _this.parent.ids.indexOf(prevID);\n if (idsIndex !== -1) {\n _this.parent.ids[idsIndex] = e.addedRecords[0][_this.parent.taskFields.id].toString();\n }\n }\n _this.updateNewRecord(cAddedRecord_1, args);\n }).catch(function (e) {\n _this.removeAddedRecord();\n _this.dmFailure(e, args);\n _this._resetProperties();\n });\n }\n else {\n var addedRecords = 'addedRecords';\n var insertCrud = data_2.insert(updatedData_2[addedRecords], null, query);\n insertCrud.then(function (e) {\n var addedRecords;\n if (!isNullOrUndefined(e[0])) {\n addedRecords = e[0];\n }\n else {\n addedRecords = updatedData_2['addedRecords'][0];\n }\n _this.updateNewRecord(cAddedRecord_1, args);\n }).catch(function (e) {\n _this.removeAddedRecord();\n _this.dmFailure(e, args);\n _this._resetProperties();\n });\n }\n }\n else {\n if (_this.parent.viewType === 'ProjectView') {\n if ((rowPosition === 'Top' || rowPosition === 'Bottom') ||\n ((rowPosition === 'Above' || rowPosition === 'Below' || rowPosition === 'Child') || isNullOrUndefined(rowPosition) && !args.data.parentItem)) {\n if (args.data instanceof Array) {\n _this.updateRealDataSource(args.data, rowPosition);\n }\n else {\n var data_3 = [];\n data_3.push(args.data);\n _this.updateRealDataSource(data_3, rowPosition);\n _this.parent.currentSelection = cAddedRecord_1[0].ganttProperties;\n }\n }\n }\n else {\n var dataSource = isCountRequired(_this.parent) ? getValue('result', _this.parent.dataSource) :\n _this.parent.dataSource; // eslint-disable-line\n dataSource.push(args.data.taskData);\n }\n if (cAddedRecord_1.level === 0) {\n _this.parent.treeGrid.parentData.splice(0, 0, cAddedRecord_1);\n }\n _this.updateTreeGridUniqueID(cAddedRecord_1, 'add');\n if (_this.parent.viewType === 'ResourceView' && _this.parent.undoRedoModule && _this.parent.undoRedoModule['currentAction']) {\n var canDelete = false;\n if (args.data['hasChildRecords']) {\n canDelete = true;\n }\n else {\n if (args.data['parentItem']) {\n var parentTask = _this.parent.getTaskByUniqueID(args.data['parentItem'].uniqueID);\n if (parentTask.ganttProperties.taskName != _this.parent.localeObj.getConstant('unassignedTask')) {\n canDelete = true;\n }\n }\n }\n if (_this.parent.taskIds.indexOf('R0') != -1 && _this.parent.undoRedoModule && _this.parent.undoRedoModule['isUndoRedoPerformed'] && _this.parent.undoRedoModule['currentAction']['action'] === 'Delete'\n && canDelete) {\n var unassignedTask = _this.parent.flatData[_this.parent.taskIds.indexOf('R0')];\n var isPresent = unassignedTask.childRecords.filter(function (data) { return data.ganttProperties.taskId == args.data['ganttProperties'].taskId; });\n if (args.data['hasChildRecords']) {\n isPresent = args.data['childRecords'];\n }\n var _loop_6 = function (j) {\n if (unassignedTask.childRecords.length == 1) {\n _this.parent.flatData.splice(_this.parent.taskIds.indexOf('R0'), 2);\n _this.parent.ids.splice(_this.parent.taskIds.indexOf('R0'), 2);\n _this.parent.taskIds.splice(_this.parent.taskIds.indexOf('R0'), 2);\n }\n else {\n var index = _this.parent.taskIds.indexOf('T' + isPresent[j].ganttProperties.taskId);\n var id_2 = 'T' + isPresent[j].ganttProperties.taskId;\n var indexes = _this.parent.taskIds.reduce(function (a, e, i) {\n if (e === id_2)\n a.push(i);\n return a;\n }, []);\n index = indexes[indexes.length - 1];\n _this.parent.taskIds.splice(index, 1);\n _this.parent.flatData.splice(index, 1);\n _this.parent.ids.splice(index, 1);\n }\n };\n for (var j = 0; j < isPresent.length; j++) {\n _loop_6(j);\n }\n if (unassignedTask && _this.parent.viewType === 'ResourceView') {\n var isValid = _this.parent.flatData[_this.parent.taskIds.indexOf('R0') + 1];\n if (!isValid) {\n _this.parent.flatData.splice(_this.parent.taskIds.indexOf('R0'), 1);\n _this.parent.ids.splice(_this.parent.taskIds.indexOf('R0'), 1);\n _this.parent.taskIds.splice(_this.parent.taskIds.indexOf('R0'), 1);\n }\n }\n }\n }\n _this.refreshNewlyAddedRecord(args, cAddedRecord_1);\n if (_this.parent.viewType === 'ResourceView' && _this.parent.taskFields.work && ganttData) {\n _this.parent.dataOperation.updateParentItems(ganttData, true);\n }\n if (_this.parent.undoRedoModule && (!_this.parent.undoRedoModule['isUndoRedoPerformed'] || (_this.parent.undoRedoModule['isUndoRedoPerformed'] && _this.parent.undoRedoModule['currentAction']['action'] == 'Add' && _this.parent.viewType === 'ResourceView'))\n && _this.parent['isUndoRedoItemPresent']('Add')) {\n record['action'] = 'Add';\n var tempArray_1 = args.data.length > 0 ? extend([], [], args.data, true) : [args.data];\n var addedRec = [];\n var _loop_7 = function (i) {\n addedRec = (_this.parent.flatData.filter(function (data) {\n return (tempArray_1[i].index == data.index && tempArray_1[i]['ganttProperties'].taskId == data.ganttProperties.taskId);\n }));\n };\n for (var i = 0; i < tempArray_1.length; i++) {\n _loop_7(i);\n }\n record['addedRecords'] = extend([], [], addedRec, true);\n _this.parent.undoRedoModule['getUndoCollection'][_this.parent.undoRedoModule['getUndoCollection'].length - 1] = record;\n }\n _this._resetProperties();\n }\n _this.parent.isOnAdded = false;\n }\n else {\n args = args;\n _this.removeAddedRecord();\n _this.reUpdatePreviousRecords();\n _this._resetProperties();\n }\n });\n }\n };\n /**\n * Method to validateTaskPosition.\n *\n * @param {Object | object[] } data - Defines the new data to add.\n * @param {RowPosition} rowPosition - Defines the position of row.\n * @param {number} rowIndex - Defines the row index.\n * @param {IGanttData} cAddedRecord - Defines the single data to validate.\n * @returns {void} .\n * @private\n */\n Edit.prototype.createNewRecord = function () {\n var tempRecord = {};\n var ganttColumns = this.parent.ganttColumns;\n var taskSettingsFields = this.parent.taskFields;\n var taskId = this.parent.editModule.getNewTaskId();\n for (var i = 0; i < ganttColumns.length; i++) {\n var fieldName = ganttColumns[i].field;\n if (fieldName === taskSettingsFields.id) {\n tempRecord[fieldName] = taskId;\n }\n else if (ganttColumns[i].field === taskSettingsFields.startDate) {\n if (isNullOrUndefined(tempRecord[taskSettingsFields.endDate])) {\n tempRecord[fieldName] = this.parent.editModule.dialogModule.getMinimumStartDate();\n }\n else {\n tempRecord[fieldName] = new Date(tempRecord[taskSettingsFields.endDate]);\n }\n if (this.parent.timezone) {\n tempRecord[fieldName] = this.parent.dateValidationModule.remove(tempRecord[fieldName], this.parent.timezone);\n }\n }\n else if (ganttColumns[i].field === taskSettingsFields.endDate) {\n if (isNullOrUndefined(tempRecord[taskSettingsFields.startDate])) {\n tempRecord[fieldName] = this.parent.editModule.dialogModule.getMinimumStartDate();\n }\n else {\n tempRecord[fieldName] = new Date(tempRecord[taskSettingsFields.startDate]);\n }\n if (this.parent.timezone) {\n tempRecord[fieldName] = this.parent.dateValidationModule.remove(tempRecord[fieldName], this.parent.timezone);\n }\n }\n else if (ganttColumns[i].field === taskSettingsFields.duration) {\n tempRecord[fieldName] = 1;\n }\n else if (ganttColumns[i].field === taskSettingsFields.name) {\n tempRecord[fieldName] = this.parent.editModule.dialogModule['localeObj'].getConstant('addDialogTitle') + ' ' + taskId;\n }\n else if (ganttColumns[i].field === taskSettingsFields.progress) {\n tempRecord[fieldName] = 0;\n }\n else if (ganttColumns[i].field === taskSettingsFields.work) {\n tempRecord[fieldName] = 0;\n }\n else if (ganttColumns[i].field === 'taskType') {\n tempRecord[fieldName] = this.parent.taskType;\n }\n else if (ganttColumns[i].field === taskSettingsFields.milestone) {\n tempRecord[fieldName] = null;\n }\n else {\n tempRecord[this.parent.ganttColumns[i].field] = '';\n }\n }\n return tempRecord;\n };\n Edit.prototype.validateTaskPosition = function (data, rowPosition, rowIndex, cAddedRecord) {\n var selectedRowIndex = isNullOrUndefined(rowIndex) || isNaN(parseInt(rowIndex.toString(), 10)) ?\n this.parent.selectionModule ?\n (this.parent.selectionSettings.mode === 'Row' || this.parent.selectionSettings.mode === 'Both') &&\n this.parent.selectionModule.selectedRowIndexes.length === 1 ?\n this.parent.selectionModule.selectedRowIndexes[0] :\n this.parent.selectionSettings.mode === 'Cell' &&\n this.parent.selectionModule.getSelectedRowCellIndexes().length === 1 ?\n this.parent.selectionModule.getSelectedRowCellIndexes()[0].rowIndex : null : null : rowIndex;\n this.addRowSelectedItem = isNullOrUndefined(selectedRowIndex) ? null : this.parent.updatedRecords[selectedRowIndex];\n rowPosition = isNullOrUndefined(rowPosition) ? this.parent.editSettings.newRowPosition : rowPosition;\n data = isNullOrUndefined(data) ? this.createNewRecord() : data;\n if (((isNullOrUndefined(selectedRowIndex) || selectedRowIndex < 0 ||\n isNullOrUndefined(this.addRowSelectedItem)) && (rowPosition === 'Above'\n || rowPosition === 'Below'\n || rowPosition === 'Child')) || !rowPosition || (rowPosition !== 'Above'\n && rowPosition !== 'Below'\n && rowPosition !== 'Child' && rowPosition !== 'Top' &&\n rowPosition !== 'Bottom')) {\n rowPosition = 'Top';\n }\n var level = 0;\n var parentItem;\n switch (rowPosition) {\n case 'Top':\n case 'Bottom':\n if (this.parent.viewType === 'ResourceView') {\n level = 1;\n }\n else {\n level = 0;\n }\n break;\n case 'Above':\n case 'Below':\n level = this.addRowSelectedItem.level;\n parentItem = this.parent.getParentTask(this.addRowSelectedItem.parentItem);\n break;\n case 'Child':\n level = this.addRowSelectedItem.level + 1;\n parentItem = this.addRowSelectedItem;\n break;\n }\n if (!this.parent.undoRedoModule || !this.parent.undoRedoModule['isUndoRedoPerformed']) {\n this.prepareNewlyAddedData(data, rowPosition);\n }\n var AddRecord = (this.updateNewlyAddedDataBeforeAjax(data, level, rowPosition, parentItem));\n cAddedRecord.push(AddRecord);\n };\n Edit.prototype.updateNewRecord = function (cAddedRecord, args) {\n if (cAddedRecord.level === 0) {\n this.parent.treeGrid.parentData.splice(0, 0, cAddedRecord);\n var tempData = getValue('dataOperation.dataArray', this.parent);\n tempData.splice(0, 0, cAddedRecord.taskData);\n }\n this.updateTreeGridUniqueID(cAddedRecord, 'add');\n this.refreshNewlyAddedRecord(args, cAddedRecord);\n this._resetProperties();\n };\n /**\n * Method to reset the flag after adding new record\n *\n * @returns {void} .\n */\n Edit.prototype._resetProperties = function () {\n this.parent.isOnEdit = false;\n this.parent.hideSpinner();\n this.addRowSelectedItem = null;\n this.newlyAddedRecordBackup = null;\n this.isBreakLoop = false;\n this.parent.element.tabIndex = 0;\n this.parent.initiateEditAction(false);\n };\n /**\n * Method to update unique id collection in TreeGrid\n *\n * @param {IGanttData} data .\n * @param {string} action .\n * @returns {void} .\n */\n Edit.prototype.updateTreeGridUniqueID = function (data, action) {\n if (action === 'add') {\n setValue('uniqueIDCollection.' + data.uniqueID, data, this.parent.treeGrid);\n }\n else if (action === 'delete') {\n deleteObject(getValue('uniqueIDCollection', this.parent.treeGrid), data.uniqueID);\n }\n };\n Edit.prototype.refreshNewlyAddedRecord = function (args, cAddedRecord) {\n if (this.parent.selectionModule && this.parent.allowSelection &&\n (this.parent.selectionSettings.mode === 'Row' || this.parent.selectionSettings.mode === 'Both')) {\n this.parent.staticSelectedRowIndex = this.parent.currentViewData.indexOf(args.data);\n }\n if (this.parent.timelineSettings.updateTimescaleView) {\n var tempArray = [];\n if (args.modifiedRecords.length > 0) {\n tempArray = args.data.length > 0 ? extend([], [], args.data, true) : [args.data]; // eslint-disable-next-line\n tempArray.push.apply(tempArray, args.modifiedRecords);\n }\n else {\n tempArray = args.data.length > 0 ? extend([], [], args.data, true) : [args.data];\n }\n this.parent.timelineModule.updateTimeLineOnEditing([tempArray], args.action);\n }\n this.addSuccess(args);\n args = this.constructTaskAddedEventArgs(cAddedRecord, args.modifiedRecords, 'add');\n if (this.dialogModule.isAddNewResource && !this.parent.isEdit && this.parent.taskFields.work) {\n this.parent.dataOperation.updateWorkWithDuration(cAddedRecord[0]);\n }\n this.parent.trigger('actionComplete', args);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n if (this.dialogModule.dialog && !this.dialogModule.dialogObj.isDestroyed) {\n this.dialogModule.dialogObj.hide();\n }\n this.dialogModule.dialogClose();\n if (this.parent.viewType === 'ResourceView') {\n if (cAddedRecord.length > 1) {\n for (var i = 0; i < cAddedRecord.length; i++) {\n args.data[i].ganttProperties.sharedTaskUniqueIds.push(args.data[i]\n .ganttProperties.rowUniqueID);\n if (args.data[i].ganttProperties.resourceInfo) {\n // if ((args.data[i] as IGanttData).ganttProperties.resourceInfo.length > 1) {\n var resources = extend([], [], args.data[i].ganttProperties.resourceInfo, true);\n resources.splice(0, 1);\n this.updateResoures([], resources, args.data[i]);\n // }\n }\n else {\n if (!this.parent.undoRedoModule || (this.parent.undoRedoModule && !args.data[i]['hasChildRecords'] && this.parent.undoRedoModule['isUndoRedoPerformed'] || !this.parent.undoRedoModule['isUndoRedoPerformed'])) {\n this.removeChildRecord(args.data[i]);\n this.parent.editModule.checkWithUnassignedTask(args.data[i]);\n }\n }\n for (var k = 0; k < this.updateParentRecords.length; k++) {\n this.parent.dataOperation.updateParentItems(this.updateParentRecords[k]);\n }\n this.updateParentRecords = [];\n }\n }\n else {\n args.data.ganttProperties.sharedTaskUniqueIds.push(args.data.ganttProperties.rowUniqueID);\n // eslint-disable-next-line\n if (args.data.ganttProperties.resourceInfo && args.data.ganttProperties.resourceInfo.length) {\n if (args.data.ganttProperties.resourceInfo.length > 1) {\n // eslint-disable-next-line\n var resources = extend([], [], args.data.ganttProperties.resourceInfo, true);\n resources.splice(0, 1);\n this.updateResoures([], resources, args.data);\n }\n }\n else {\n if (!this.parent.undoRedoModule || (this.parent.undoRedoModule && !args.data['hasChildRecords'] && this.parent.undoRedoModule['isUndoRedoPerformed'] || !this.parent.undoRedoModule['isUndoRedoPerformed'])) {\n this.removeChildRecord(args.data);\n this.parent.editModule.checkWithUnassignedTask(args.data);\n }\n }\n for (var k = 0; k < this.updateParentRecords.length; k++) {\n this.parent.dataOperation.updateParentItems(this.updateParentRecords[k]);\n }\n this.updateParentRecords = [];\n }\n }\n };\n /**\n *\n * @returns {void} .\n * @private\n */\n Edit.prototype.removeAddedRecord = function () {\n var flatRecords = this.parent.flatData;\n var currentViewData = this.parent.currentViewData;\n var ids = this.parent.ids;\n var flatRecordsIndex = flatRecords.indexOf(this.newlyAddedRecordBackup);\n var currentViewDataIndex = currentViewData.indexOf(this.newlyAddedRecordBackup);\n var idsIndex = ids.indexOf(this.newlyAddedRecordBackup.ganttProperties.rowUniqueID.toString());\n deleteObject(this.parent.previousRecords, flatRecords[flatRecordsIndex].uniqueID);\n if (this.newlyAddedRecordBackup.parentItem) {\n var parentItem = this.parent.getParentTask(this.newlyAddedRecordBackup.parentItem);\n var parentIndex = parentItem.childRecords.indexOf(this.newlyAddedRecordBackup);\n parentItem.childRecords.splice(parentIndex, 1);\n }\n flatRecords.splice(flatRecordsIndex, 1);\n currentViewData.splice(currentViewDataIndex, 1);\n ids.splice(idsIndex, 1);\n };\n Edit.prototype.getPrevRecordIndex = function () {\n var prevRecord = this.parent.updatedRecords[this.parent.selectionModule.getSelectedRowIndexes()[0] - 1];\n var selectedRecord = this.parent.selectionModule.getSelectedRecords()[0];\n var parent = this.parent.getRootParent(prevRecord, selectedRecord.level);\n var prevIndex = this.parent.updatedRecords.indexOf(parent);\n return prevIndex;\n };\n /**\n * indent a selected record\n *\n * @returns {void} .\n */\n Edit.prototype.indent = function () {\n var index = this.parent.selectedRowIndex;\n var isSelected = this.parent.selectionModule ? this.parent.selectionModule.selectedRowIndexes.length === 1 ||\n this.parent.selectionModule.getSelectedRowCellIndexes().length === 1 ? true : false : false;\n var dropIndex;\n var prevRecord = this.parent.updatedRecords[this.parent.selectionModule.getSelectedRowIndexes()[0] - 1];\n var selectedRecord = this.parent.selectionModule.getSelectedRecords()[0];\n if (!this.parent.editSettings.allowEditing || index === 0 || index === -1 || !isSelected ||\n this.parent.viewType === 'ResourceView' || this.parent.updatedRecords[index].level - prevRecord.level === 1) {\n return;\n }\n else {\n if (prevRecord.level - selectedRecord.level === 0) {\n dropIndex = this.parent.selectionModule.getSelectedRowIndexes()[0] - 1;\n }\n else {\n dropIndex = this.getPrevRecordIndex();\n }\n this.indentOutdentRow([this.parent.selectionModule.getSelectedRowIndexes()[0]], dropIndex, 'child');\n }\n };\n /**\n * To perform outdent operation for selected row\n *\n * @returns {void} .\n */\n Edit.prototype.outdent = function () {\n var index = this.parent.selectionModule.getSelectedRowIndexes()[0];\n var dropIndex;\n var isSelected = this.parent.selectionModule ? this.parent.selectionModule.selectedRowIndexes.length === 1 ||\n this.parent.selectionModule.getSelectedRowCellIndexes().length === 1 ? true : false : false;\n if (!this.parent.editSettings.allowEditing || index === -1 || index === 0 || !isSelected ||\n this.parent.viewType === 'ResourceView' || this.parent.updatedRecords[index].level === 0) {\n return;\n }\n else {\n var thisParent = this.parent.getTaskByUniqueID(this.parent.selectionModule.getSelectedRecords()[0].parentItem.uniqueID);\n dropIndex = this.parent.updatedRecords.indexOf(thisParent);\n this.indentOutdentRow([index], dropIndex, 'below');\n }\n };\n Edit.prototype.indentOutdentRow = function (fromIndexes, toIndex, pos) {\n var _this = this;\n // eslint-disable-next-line\n if (fromIndexes[0] !== toIndex && pos === 'above' || 'below' || 'child') {\n if (pos === 'above') {\n this.dropPosition = 'topSegment';\n }\n if (pos === 'below') {\n this.dropPosition = 'bottomSegment';\n }\n if (pos === 'child') {\n this.dropPosition = 'middleSegment';\n }\n var action = void 0;\n var record = [];\n for (var i = 0; i < fromIndexes.length; i++) {\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed'] && this.parent.undoRedoModule['currentAction']) {\n if (this.parent.undoRedoModule['currentAction']['modifiedRecord']) {\n record[i] = this.parent.undoRedoModule['currentAction']['modifiedRecord'][i].data;\n }\n else {\n record[i] = this.parent.undoRedoModule['currentAction']['data'][i];\n }\n }\n else {\n record[i] = this.parent.updatedRecords[fromIndexes[i]];\n }\n }\n var isByMethod_1 = true;\n var args_1 = {\n data: record,\n dropIndex: toIndex,\n dropPosition: this.dropPosition\n };\n if (this.dropPosition === 'middleSegment') {\n action = 'indenting';\n }\n else if (this.dropPosition === 'bottomSegment') {\n action = 'outdenting';\n }\n var actionArgs = {\n action: action,\n data: record[0],\n cancel: false\n };\n this.parent.trigger('actionBegin', actionArgs, function (actionArg) {\n if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n _this.parent.showMaskRow();\n }\n else {\n _this.parent.showSpinner();\n }\n if (!actionArg.cancel) {\n _this.reArrangeRows(args_1, isByMethod_1);\n }\n else {\n return;\n }\n });\n }\n else {\n return;\n }\n };\n Edit.prototype.reArrangeRows = function (args, isByMethod) {\n var _this = this;\n this.dropPosition = args.dropPosition;\n if (args.dropPosition !== 'Invalid' && this.parent.editModule) {\n var obj = this.parent;\n var draggedRec = void 0;\n this.droppedRecord = obj.updatedRecords[args.dropIndex];\n var action = args.dropPosition == 'middleSegment' ? 'Indent' : 'Outdent';\n if (this.parent.undoRedoModule && !this.parent.undoRedoModule['isUndoRedoPerformed'] && this.parent['isUndoRedoItemPresent'](action)) {\n var record = {};\n record['action'] = action;\n record['modifiedRecord'] = [];\n record['selectedRowIndexes'] = extend([], [], this.parent.selectionModule.selectedRowIndexes, true);\n this.parent.undoRedoModule['findPosition'](extend([], [], [args.data], true)[0], record, 'modifiedRecord');\n record['droppedRecord'] = extend([], [], this.droppedRecord, true);\n if (this.parent.undoRedoModule['redoEnabled']) {\n this.parent.undoRedoModule['redoEnabled'] = false;\n this.parent.undoRedoModule['getUndoCollection'] = [];\n this.parent.undoRedoModule['getRedoCollection'] = [];\n if (this.parent.toolbarModule) {\n this.parent.toolbarModule.enableItems([this.parent.controlId + '_redo'], false);\n }\n this.parent.undoRedoModule['getUndoCollection'][0] = [];\n }\n this.parent.undoRedoModule['createUndoCollection']();\n this.parent.undoRedoModule['getUndoCollection'][this.parent.undoRedoModule['getUndoCollection'].length - 1] = record;\n }\n var dragRecords = [];\n var droppedRec = this.droppedRecord;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n var c = 0;\n var dLength = dragRecords.length;\n for (var i = 0; i < dLength; i++) {\n this.parent.isOnEdit = true;\n draggedRec = dragRecords[i];\n this.draggedRecord = draggedRec;\n if (this.dropPosition !== 'Invalid') {\n if (isByMethod) {\n this.deleteDragRow();\n }\n var recordIndex1 = this.treeGridData.indexOf(droppedRec);\n if (this.dropPosition === 'bottomSegment') {\n if (!droppedRec.hasChildRecords) {\n if (this.parent.taskFields.parentID && this.ganttData.length > 0) {\n this.ganttData.splice(recordIndex1 + 1, 0, this.draggedRecord.taskData);\n }\n this.treeGridData.splice(recordIndex1 + 1, 0, this.draggedRecord);\n this.parent.ids.splice(recordIndex1 + 1, 0, this.draggedRecord.ganttProperties.rowUniqueID.toString());\n }\n else {\n c = this.parent.editModule.getChildCount(droppedRec, 0);\n if (this.parent.taskFields.parentID && this.ganttData.length > 0) {\n this.ganttData.splice(recordIndex1 + c + 1, 0, this.draggedRecord.taskData);\n }\n this.treeGridData.splice(recordIndex1 + c + 1, 0, this.draggedRecord);\n this.parent.ids.splice(recordIndex1 + c + 1, 0, this.draggedRecord.ganttProperties.rowUniqueID.toString());\n var idIndex = this.parent.ids.indexOf(this.draggedRecord[this.parent.taskFields.id].toString());\n if (idIndex !== recordIndex1 + c + 1) {\n this.parent.ids.splice(idIndex, 1);\n this.parent.ids.splice(recordIndex1 + c + 1, 0, this.draggedRecord[this.parent.taskFields.id].toString());\n }\n }\n this.parent.setRecordValue('parentItem', this.treeGridData[recordIndex1].parentItem, draggedRec);\n this.parent.setRecordValue('parentUniqueID', this.treeGridData[recordIndex1].parentUniqueID, draggedRec);\n this.parent.setRecordValue('level', this.treeGridData[recordIndex1].level, draggedRec);\n if (draggedRec.hasChildRecords) {\n var level = 1;\n this.updateChildRecordLevel(draggedRec, level);\n this.updateChildRecord(draggedRec, recordIndex1 + c + 1);\n }\n if (droppedRec.parentItem) {\n var record = this.parent.getParentTask(droppedRec.parentItem).childRecords;\n var childRecords = record;\n var droppedRecordIndex = childRecords.indexOf(droppedRec) + 1;\n childRecords.splice(droppedRecordIndex, 0, draggedRec);\n }\n }\n if (this.dropPosition === 'middleSegment') {\n this.dropMiddle(recordIndex1);\n }\n if (!isNullOrUndefined(draggedRec.parentItem && this.updateParentRecords.indexOf(draggedRec.parentItem) !== -1)) {\n this.updateParentRecords.push(this.parent.getTaskByUniqueID(draggedRec.parentItem.uniqueID));\n }\n }\n if (isNullOrUndefined(draggedRec.parentItem)) {\n var parentRecords = this.parent.treeGrid.parentData;\n var newParentIndex = parentRecords.indexOf(this.droppedRecord);\n if (this.dropPosition === 'bottomSegment') {\n parentRecords.splice(newParentIndex + 1, 0, draggedRec);\n }\n }\n this.refreshDataSource();\n }\n if (this.dropPosition === 'middleSegment') {\n if (!isNullOrUndefined(droppedRec.ganttProperties.predecessor)) {\n var len = droppedRec.ganttProperties.predecessor.length;\n for (var count = len - 1; count >= 0; count--) {\n if (!isNullOrUndefined(droppedRec.ganttProperties.predecessor)) {\n var fromRecord = this.parent.getRecordByID(droppedRec.ganttProperties.predecessor[count].from);\n var toRecord = this.parent.getRecordByID(droppedRec.ganttProperties.predecessor[count].to);\n var validPredecessor = this.parent.connectorLineEditModule.validateParentPredecessor(fromRecord, toRecord);\n if (droppedRec.ganttProperties.predecessor && (!validPredecessor || !this.parent.allowParentDependency)) {\n this.parent.editModule.removePredecessorOnDelete(droppedRec);\n droppedRec.ganttProperties.predecessor.splice(count, 1);\n droppedRec.ganttProperties.predecessorsName = null;\n droppedRec[this.parent.taskFields.dependency] = null;\n droppedRec.taskData[this.parent.taskFields.dependency] = null;\n }\n }\n }\n }\n if (droppedRec.ganttProperties.isMilestone) {\n this.parent.setRecordValue('isMilestone', false, droppedRec.ganttProperties, true);\n if (!isNullOrUndefined(droppedRec.taskData[this.parent.taskFields.milestone])) {\n if (droppedRec.taskData[this.parent.taskFields.milestone] === true) {\n droppedRec.taskData[this.parent.taskFields.milestone] = false;\n }\n }\n }\n }\n for (var k = 0; k < this.updateParentRecords.length; k++) {\n this.parent.dataOperation.updateParentItems(this.updateParentRecords[k]);\n }\n this.parent.editedRecords.forEach(function (record) {\n _this.isFirstCall = true;\n _this.parent.predecessorModule.validatePredecessor(record, [], '');\n });\n for (var k = 0; k < this.updateParentRecords.length; k++) {\n this.parent.dataOperation.updateParentItems(this.updateParentRecords[k]);\n }\n this.updateParentRecords = [];\n this.parent.isOnEdit = false;\n }\n this.refreshRecord(args);\n };\n /**\n * @returns {void} .\n * @private\n */\n Edit.prototype.refreshRecord = function (args, isDrag) {\n var _this = this;\n if (isRemoteData(this.parent.dataSource)) {\n var data = this.parent.dataSource;\n var updatedData = {\n changedRecords: getTaskData(this.parent.editedRecords, null, null, this.parent)\n };\n var queryValue = this.parent.query instanceof Query ? this.parent.query : new Query();\n var crud = null;\n var adaptor = data.adaptor;\n if (!(adaptor instanceof WebApiAdaptor && adaptor instanceof ODataAdaptor) || data.dataSource.batchUrl) {\n crud = data.saveChanges(updatedData, this.parent.taskFields.id, null, queryValue);\n }\n else {\n var changedRecords = 'changedRecords';\n crud = data.update(this.parent.taskFields.id, updatedData[changedRecords], null, queryValue);\n }\n crud.then(function (e) { return _this.indentSuccess(e, args, isDrag); })\n .catch(function (e) { return _this.indentFailure(e); });\n }\n else {\n this.indentOutdentSuccess(args, isDrag);\n }\n };\n Edit.prototype.indentSuccess = function (e, args, isDrag) {\n this.indentOutdentSuccess(args, isDrag);\n };\n Edit.prototype.indentFailure = function (e) {\n this.parent.trigger('actionFailure', { error: e });\n };\n Edit.prototype.indentOutdentSuccess = function (args, isDrag) {\n this.parent.treeGrid.parentData = [];\n this.parent.treeGrid.refresh();\n if (this.parent.enableImmutableMode) {\n this.refreshRecordInImmutableMode(args.data, isDrag);\n this.parent.chartRowsModule.refreshRecords(this.parent.editedRecords);\n }\n if (isDrag) {\n args.requestType = 'rowDropped';\n }\n else {\n if (this.dropPosition === 'middleSegment') {\n args.requestType = 'indented';\n }\n else if (this.dropPosition === 'bottomSegment') {\n args.requestType = 'outdented';\n }\n }\n args.modifiedRecords = this.parent.editedRecords;\n if (this.parent.timezone) {\n for (var i = 0; i < args.modifiedRecords.length; i++) {\n updateDates(args.modifiedRecords[i], this.parent);\n }\n }\n this.parent.trigger('actionComplete', args);\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.hideMaskRow();\n }\n else {\n this.parent.hideSpinner();\n }\n if (this.parent.rowDragAndDropModule) {\n this.parent.rowDragAndDropModule['draggedRecord'] = null;\n }\n };\n Edit.prototype.refreshDataSource = function () {\n var draggedRec = this.draggedRecord;\n var droppedRec = this.droppedRecord;\n var proxy = this.parent;\n var tempData;\n var indx;\n if (this.parent.dataSource instanceof DataManager) {\n tempData = getValue('dataOperation.dataArray', this.parent);\n }\n else {\n tempData = proxy.dataSource;\n }\n if (tempData.length > 0 && (!isNullOrUndefined(droppedRec) && !droppedRec.parentItem)) {\n for (var i = 0; i < Object.keys(tempData).length; i++) {\n if (tempData[i][this.parent.taskFields.child] === droppedRec.taskData[this.parent.taskFields.child]) {\n indx = i;\n }\n }\n if (this.dropPosition === 'topSegment') {\n if (!this.parent.taskFields.parentID) {\n tempData.splice(indx, 0, draggedRec.taskData);\n }\n }\n else if (this.dropPosition === 'bottomSegment') {\n if (!this.parent.taskFields.parentID) {\n tempData.splice(indx + 1, 0, draggedRec.taskData);\n }\n }\n }\n else if (!this.parent.taskFields.parentID && (!isNullOrUndefined(droppedRec) && droppedRec.parentItem)) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n var rowPos = this.dropPosition === 'topSegment' ? 'Above' : 'Below';\n this.parent.editModule.addRowSelectedItem = droppedRec;\n var dragRecord = [];\n if (!Array.isArray(draggedRec)) {\n dragRecord[0] = draggedRec;\n }\n else {\n dragRecord = draggedRec;\n }\n this.parent.editModule.updateRealDataSource(dragRecord, rowPos);\n delete this.parent.editModule.addRowSelectedItem;\n }\n }\n if (this.parent.taskFields.parentID) {\n if (draggedRec.parentItem) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n draggedRec[this.parent.taskFields.parentID] = droppedRec[this.parent.taskFields.parentID];\n draggedRec.taskData[this.parent.taskFields.parentID] = droppedRec[this.parent.taskFields.parentID];\n draggedRec.ganttProperties['parentId'] = droppedRec[this.parent.taskFields.parentID];\n }\n else {\n draggedRec[this.parent.taskFields.parentID] = droppedRec[this.parent.taskFields.id];\n draggedRec.taskData[this.parent.taskFields.parentID] = droppedRec[this.parent.taskFields.id];\n draggedRec.ganttProperties['parentId'] = droppedRec[this.parent.taskFields.id];\n }\n }\n else {\n draggedRec[this.parent.taskFields.parentID] = null;\n draggedRec.taskData[this.parent.taskFields.parentID] = null;\n draggedRec.ganttProperties['parentId'] = null;\n }\n }\n };\n Edit.prototype.deleteDragRow = function () {\n if (this.parent.dataSource instanceof DataManager) {\n this.ganttData = getValue('dataOperation.dataArray', this.parent);\n }\n else {\n this.ganttData = isCountRequired(this.parent) ? getValue('result', this.parent.dataSource) :\n this.parent.dataSource;\n }\n this.treeGridData = isCountRequired(this.parent) ?\n getValue('result', this.parent.treeGrid.dataSource) : this.parent.treeGrid.dataSource;\n var delRow = this.parent.getTaskByUniqueID(this.draggedRecord.uniqueID);\n this.removeRecords(delRow);\n };\n Edit.prototype.updateIndentedChildRecords = function (indentedRecord) {\n var createParentItem = {\n uniqueID: indentedRecord.uniqueID,\n expanded: indentedRecord.expanded,\n level: indentedRecord.level,\n index: indentedRecord.index,\n taskId: indentedRecord.ganttProperties.rowUniqueID\n };\n for (var i = 0; i < indentedRecord.childRecords.length; i++) {\n this.parent.setRecordValue('parentItem', createParentItem, indentedRecord.childRecords[i]);\n this.parent.setRecordValue('parentUniqueID', indentedRecord.uniqueID, indentedRecord.childRecords[i]);\n }\n if (indentedRecord.hasChildRecords) {\n indentedRecord = indentedRecord.childRecords;\n for (var j = 0; j < indentedRecord['length']; j++) {\n this.updateIndentedChildRecords(indentedRecord[j]);\n }\n }\n };\n Edit.prototype.dropMiddle = function (recordIndex1) {\n var obj = this.parent;\n var childRec;\n var childRecordsLength;\n if (this.parent.undoRedoModule && this.parent.undoRedoModule['isUndoRedoPerformed'] && this.parent.undoRedoModule['currentAction']['modifiedRecord']\n && this.parent.undoRedoModule['currentAction']['modifiedRecord'][0].position !== 'child') {\n if (this.parent.undoRedoModule['currentAction']['modifiedRecord'][0].position == 'above') {\n childRecordsLength = this.parent.ids.indexOf(this.parent.undoRedoModule['currentAction']['modifiedRecord'][0].id.toString());\n }\n else if (this.parent.undoRedoModule['currentAction']['modifiedRecord'][0].position == 'below') {\n childRecordsLength = this.parent.ids.indexOf(this.parent.undoRedoModule['currentAction']['modifiedRecord'][0].id.toString()) + 1;\n }\n }\n else {\n childRec = this.parent.editModule.getChildCount(this.droppedRecord, 0);\n childRecordsLength = (isNullOrUndefined(childRec) ||\n childRec === 0) ? recordIndex1 + 1 :\n childRec + recordIndex1 + 1;\n }\n if (this.dropPosition === 'middleSegment') {\n if (obj.taskFields.parentID && this.ganttData.length > 0) {\n this.ganttData.splice(childRecordsLength, 0, this.draggedRecord.taskData);\n }\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n this.parent.ids.splice(childRecordsLength, 0, this.draggedRecord[this.parent.taskFields.id].toString());\n this.recordLevel();\n if (this.draggedRecord.hasChildRecords) {\n this.updateChildRecord(this.draggedRecord, childRecordsLength, this.droppedRecord.expanded);\n if (this.parent.enableImmutableMode) {\n var indentedRecord = this.draggedRecord;\n this.updateIndentedChildRecords(indentedRecord);\n }\n }\n if (isNullOrUndefined(this.draggedRecord.parentItem &&\n this.updateParentRecords.indexOf(this.draggedRecord.parentItem) !== -1)) {\n this.updateParentRecords.push(this.draggedRecord.parentItem);\n }\n }\n };\n Edit.prototype.updateChildRecordLevel = function (record, levl) {\n var length = 0;\n var currentRec;\n levl++;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var j = 0; j < length; j++) {\n currentRec = record.childRecords[j];\n var parentData = void 0;\n if (record.parentItem) {\n var id = 'uniqueIDCollection';\n parentData = this.parent.treeGrid[id][record.parentItem.uniqueID];\n }\n currentRec.level = record.parentItem ? parentData.level + levl : record.level + 1;\n if (currentRec.hasChildRecords) {\n levl--;\n levl = this.updateChildRecordLevel(currentRec, levl);\n }\n }\n return levl;\n };\n /* eslint-disable-next-line */\n Edit.prototype.updateChildRecord = function (record, count, expanded) {\n var currentRec;\n var obj = this.parent;\n var length = 0;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n currentRec = record.childRecords[i];\n count++;\n obj.flatData.splice(count, 0, currentRec);\n this.parent.ids.splice(count, 0, currentRec.ganttProperties.rowUniqueID.toString());\n if (obj.taskFields.parentID && this.ganttData.length > 0) {\n this.ganttData.splice(count, 0, currentRec.taskData);\n }\n if (currentRec.hasChildRecords) {\n count = this.updateChildRecord(currentRec, count);\n }\n }\n return count;\n };\n Edit.prototype.removeRecords = function (record) {\n var obj = this.parent;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager) {\n dataSource = getValue('dataOperation.dataArray', this.parent);\n }\n else {\n dataSource = this.parent.dataSource;\n }\n var delRow = record;\n if (delRow) {\n var flatParent = this.parent.getParentTask(delRow.parentItem);\n if (delRow.parentItem) {\n var childRecords = flatParent ? flatParent.childRecords : [];\n var childIndex = 0;\n if (childRecords && childRecords.length > 0) {\n childIndex = childRecords.indexOf(delRow);\n flatParent.childRecords.splice(childIndex, 1);\n if (!this.parent.taskFields.parentID) {\n flatParent.taskData[this.parent.taskFields.child].splice(childIndex, 1);\n }\n // collection for updating parent record\n this.updateParentRecords.push(flatParent);\n }\n }\n if (obj.taskFields.parentID) {\n if (delRow.hasChildRecords && delRow.childRecords.length > 0) {\n this.removeChildItem(delRow);\n }\n var indx = void 0;\n var ganttData = dataSource.length > 0 ?\n dataSource : this.parent.currentViewData;\n for (var i = 0; i < ganttData.length; i++) {\n if (ganttData[i][this.parent.taskFields.id] === delRow.taskData[this.parent.taskFields.id]) {\n indx = i;\n }\n }\n if (indx !== -1) {\n if (dataSource.length > 0) {\n dataSource.splice(indx, 1);\n }\n var gridIndx = void 0;\n for (var i = 0; i < this.treeGridData.length; i++) {\n if (this.treeGridData[i][this.parent.taskFields.id] === delRow.taskData[this.parent.taskFields.id]) {\n gridIndx = i;\n }\n }\n this.treeGridData.splice(gridIndx, 1);\n this.parent.ids.splice(gridIndx, 1);\n if (this.parent.treeGrid.parentData.indexOf(delRow) !== -1) {\n this.parent.treeGrid.parentData.splice(this.parent.treeGrid.parentData.indexOf(delRow), 1);\n }\n }\n }\n var recordIdx = this.treeGridData.indexOf(delRow);\n if (!obj.taskFields.parentID) {\n var deletedRecordCount = this.getChildCount(delRow, 0);\n this.treeGridData.splice(recordIdx, deletedRecordCount + 1);\n this.parent.ids.splice(recordIdx, deletedRecordCount + 1);\n var parentIndex = this.ganttData.indexOf(delRow.taskData);\n if (parentIndex !== -1) {\n this.ganttData.splice(parentIndex, 1);\n this.parent.treeGrid.parentData.splice(parentIndex, 1);\n }\n }\n if (delRow.parentItem && flatParent && flatParent.childRecords && !flatParent.childRecords.length) {\n this.parent.setRecordValue('expanded', false, flatParent);\n this.parent.setRecordValue('hasChildRecords', false, flatParent);\n }\n }\n };\n Edit.prototype.removeChildItem = function (record) {\n var currentRec;\n var indx;\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRec = record.childRecords[i];\n var data = void 0;\n if (this.parent.dataSource instanceof DataManager) {\n data = getValue('dataOperation.dataArray', this.parent);\n }\n else {\n data = this.parent.dataSource;\n }\n for (var j = 0; j < data.length; j++) {\n if (data[j][this.parent.taskFields.id] === currentRec.taskData[this.parent.taskFields.id]) {\n indx = j;\n }\n }\n if (indx !== -1) {\n if (data.length > 0) {\n data.splice(indx, 1);\n }\n var gridIndx = void 0;\n for (var i_2 = 0; i_2 < this.treeGridData.length; i_2++) {\n if (this.treeGridData[i_2][this.parent.taskFields.id] === currentRec.taskData[this.parent.taskFields.id]) {\n gridIndx = i_2;\n }\n }\n this.treeGridData.splice(gridIndx, 1);\n this.parent.ids.splice(gridIndx, 1);\n }\n if (currentRec.hasChildRecords) {\n this.removeChildItem(currentRec);\n }\n }\n };\n Edit.prototype.recordLevel = function () {\n var obj = this.parent;\n var draggedRec = this.draggedRecord;\n var droppedRec = this.droppedRecord;\n var childItem = obj.taskFields.child;\n if (!droppedRec.hasChildRecords) {\n droppedRec.hasChildRecords = true;\n if (!droppedRec.childRecords.length) {\n droppedRec.childRecords = [];\n if (!obj.taskFields.parentID && isNullOrUndefined(droppedRec.taskData[childItem])) {\n droppedRec.taskData[childItem] = [];\n }\n }\n }\n if (this.dropPosition === 'middleSegment') {\n var parentItem = extend({}, droppedRec);\n delete parentItem.childRecords;\n var createParentItem = {\n uniqueID: parentItem.uniqueID,\n expanded: parentItem.expanded,\n level: parentItem.level,\n index: parentItem.index,\n taskId: parentItem.ganttProperties.rowUniqueID\n };\n this.parent.setRecordValue('parentItem', createParentItem, draggedRec);\n this.parent.setRecordValue('parentUniqueID', droppedRec.uniqueID, draggedRec);\n droppedRec.childRecords.splice(droppedRec.childRecords.length, 0, draggedRec);\n if (!isNullOrUndefined(draggedRec) && !obj.taskFields.parentID && !isNullOrUndefined(droppedRec.taskData[childItem])) {\n droppedRec.taskData[obj.taskFields.child].splice(droppedRec.childRecords.length, 0, draggedRec.taskData);\n }\n if (!isNullOrUndefined(droppedRec.ganttProperties.segments) && droppedRec.ganttProperties.segments.length > 0) {\n droppedRec.ganttProperties.segments = null;\n droppedRec.taskData[obj.taskFields.segments] = null;\n }\n if (!draggedRec.hasChildRecords) {\n draggedRec.level = droppedRec.level + 1;\n }\n else {\n var level = 1;\n draggedRec.level = droppedRec.level + 1;\n this.updateChildRecordLevel(draggedRec, level);\n }\n droppedRec.expanded = true;\n }\n };\n return Edit;\n}());\nexport { Edit };\n","import { parentsUntil, getActualProperties } from '@syncfusion/ej2-grids';\nimport { setCssInGridPopUp } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, removeClass, getValue, addClass, closest, setValue, extend } from '@syncfusion/ej2-base';\nimport { Deferred } from '@syncfusion/ej2-data';\n/**\n * The Selection module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n function Selection(gantt) {\n this.isSelectionFromChart = false;\n this.multipleIndexes = [];\n this.selectedRowIndexes = [];\n this.enableSelectMultiTouch = false;\n this.openPopup = false;\n this.parent = gantt;\n this.bindEvents();\n this.parent.treeGrid.selectedRowIndex = this.parent.selectedRowIndex;\n this.parent.treeGrid.allowSelection = this.parent.allowSelection;\n this.parent.treeGrid.grid.selectionSettings.enableToggle = this.parent.selectionSettings.enableToggle;\n this.parent.treeGrid.selectionSettings = getActualProperties(this.parent.selectionSettings);\n this.wireEvents();\n }\n /**\n * Get module\n *\n * @returns {string} .\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n Selection.prototype.wireEvents = function () {\n this.parent.on('selectRowByIndex', this.selectRowByIndex, this);\n if (this.parent.isAdaptive) {\n this.parent.on('chartMouseClick', this.mouseUpHandler, this);\n this.parent.on('treeGridClick', this.popUpClickHandler, this);\n }\n else {\n this.parent.on('chartMouseUp', this.mouseUpHandler, this);\n }\n };\n /**\n * To update selected index.\n *\n * @returns {void} .\n * @private\n */\n Selection.prototype.selectRowByIndex = function () {\n if ((this.parent.selectedRowIndex !== -1 || this.parent.staticSelectedRowIndex !== -1) && this.parent.isLoad) {\n this.selectRow(this.parent.staticSelectedRowIndex !== -1 ? this.parent.staticSelectedRowIndex : this.parent.selectedRowIndex);\n this.parent.staticSelectedRowIndex = -1;\n }\n };\n /**\n * To bind selection events.\n *\n * @returns {void} .\n * @private\n */\n Selection.prototype.bindEvents = function () {\n this.parent.treeGrid.rowSelecting = this.rowSelecting.bind(this);\n this.parent.treeGrid.rowSelected = this.rowSelected.bind(this);\n this.parent.treeGrid.rowDeselecting = this.rowDeselecting.bind(this);\n this.parent.treeGrid.rowDeselected = this.rowDeselected.bind(this);\n this.parent.treeGrid.cellSelecting = this.cellSelecting.bind(this);\n this.parent.treeGrid.cellSelected = this.cellSelected.bind(this);\n this.parent.treeGrid.cellDeselecting = this.cellDeselecting.bind(this);\n this.parent.treeGrid.cellDeselected = this.cellDeselected.bind(this);\n };\n Selection.prototype.rowSelecting = function (args) {\n if (!this.parent.isGanttChartRendered) {\n args.cancel = true;\n return;\n }\n args.isCtrlPressed = this.isMultiCtrlRequest;\n args.isShiftPressed = this.isMultiShiftRequest;\n args.target = this.actualTarget;\n if (!isNullOrUndefined(args.foreignKeyData) && Object.keys(args.foreignKeyData).length === 0) {\n delete args.foreignKeyData;\n }\n this.parent.trigger('rowSelecting', args);\n };\n Selection.prototype.rowSelected = function (args) {\n var rowIndexes = 'rowIndexes';\n var index = (this.parent.selectionSettings.type === 'Multiple' && !isNullOrUndefined(args[rowIndexes])) ?\n args[rowIndexes] : [args.rowIndex];\n this.addRemoveClass(index);\n this.selectedRowIndexes = extend([], this.getSelectedRowIndexes(), [], true);\n this.parent.setProperties({ selectedRowIndex: this.parent.treeGrid.grid.selectedRowIndex }, true);\n if (this.isMultiShiftRequest) {\n this.selectedRowIndexes = index;\n }\n if (this.parent.autoFocusTasks) {\n if (this.parent.enableTimelineVirtualization) {\n this.parent['isRowSelected'] = true;\n }\n if (args.data && !isNullOrUndefined(args.data['length'])) {\n for (var i = 0; i < args.data['length']; i++) {\n this.parent.ganttChartModule.updateScrollLeft(args.data[i].ganttProperties.left);\n }\n }\n else {\n this.parent.ganttChartModule.updateScrollLeft(getValue('data.ganttProperties.left', args));\n }\n }\n args.target = this.actualTarget;\n if (!isNullOrUndefined(args.foreignKeyData) && Object.keys(args.foreignKeyData).length === 0) {\n delete args.foreignKeyData;\n }\n this.prevRowIndex = args.rowIndex;\n if (!isNullOrUndefined(this.parent.toolbarModule)) {\n this.parent.toolbarModule.refreshToolbarItems(args);\n }\n this.parent.trigger('rowSelected', args);\n };\n Selection.prototype.rowDeselecting = function (args) {\n args.target = this.actualTarget;\n args.isInteracted = this.isInteracted;\n this.parent.trigger('rowDeselecting', args);\n };\n Selection.prototype.rowDeselected = function (args) {\n var index;\n var isContains;\n if (this.multipleIndexes.length !== 0) {\n index = this.multipleIndexes;\n }\n else {\n if (!isNullOrUndefined(args.rowIndexes)) {\n for (var i = 0; i < args.rowIndexes.length; i++) {\n if (args.rowIndexes[i] === args.rowIndex) {\n isContains = true;\n }\n }\n if (isContains) {\n index = args.rowIndexes;\n }\n else {\n index = [args.rowIndex];\n }\n }\n else {\n index = [args.rowIndex];\n }\n }\n this.addRemoveClass(index);\n this.selectedRowIndexes = extend([], this.getSelectedRowIndexes(), [], true);\n this.parent.setProperties({ selectedRowIndex: -1 }, true);\n if (this.selectedRowIndexes.length === 1) {\n this.parent.setProperties({ selectedRowIndex: this.selectedRowIndexes[0] }, true);\n }\n if (!isNullOrUndefined(this.parent.toolbarModule)) {\n this.parent.toolbarModule.refreshToolbarItems();\n }\n if (this.parent.selectionSettings.type === 'Multiple' && this.parent.isAdaptive\n && this.selectedRowIndexes.length === 0) {\n this.hidePopUp();\n }\n args.target = this.actualTarget;\n args.isInteracted = this.isInteracted;\n this.parent.trigger('rowDeselected', args);\n this.isInteracted = false;\n this.multipleIndexes = [];\n };\n Selection.prototype.cellSelecting = function (args) {\n var callBackPromise = new Deferred();\n this.parent.trigger('cellSelecting', args, function (cellselectingArgs) {\n callBackPromise.resolve(cellselectingArgs);\n });\n return callBackPromise;\n };\n Selection.prototype.cellSelected = function (args) {\n this.parent.trigger('cellSelected', args);\n if (!isNullOrUndefined(this.parent.toolbarModule)) {\n this.parent.toolbarModule.refreshToolbarItems();\n }\n };\n Selection.prototype.cellDeselecting = function (args) {\n this.parent.trigger('cellDeselecting', args);\n };\n Selection.prototype.cellDeselected = function (args) {\n this.parent.trigger('cellDeselected', args);\n if (!isNullOrUndefined(this.parent.toolbarModule)) {\n this.parent.toolbarModule.refreshToolbarItems();\n }\n };\n /**\n * Selects a cell by given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void} .\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n this.parent.treeGrid.selectCell(cellIndex, isToggle);\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void} .\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n this.parent.treeGrid.grid.selectCells(rowCellIndexes);\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @param {boolean} isPreventFocus .\n * @returns {void} .\n */\n Selection.prototype.selectRow = function (index, isToggle, isPreventFocus) {\n var ganttRow = [].slice.call(this.parent.ganttChartModule.chartBodyContent.querySelector('tbody').children);\n // eslint-disable-next-line\n if (this.parent.enableVirtualization && this.parent.treeGridModule.addedRecord) {\n index = this.parent.flatData.indexOf(this.parent.currentViewData[index]);\n this.parent.treeGridModule.addedRecord = false;\n }\n var selectedRow = ganttRow.filter(function (e) { return parseInt(e.getAttribute('data-rowindex'), 0) === index; })[0];\n var condition;\n if (index === -1 || isNullOrUndefined(selectedRow) || this.parent.selectionSettings.mode === 'Cell') {\n return;\n }\n if (this.parent.showActiveElement && !isPreventFocus) {\n this.parent.treeGrid.grid.selectionModule.preventFocus = true;\n }\n else {\n this.parent.treeGrid.grid.selectionModule.preventFocus = false;\n }\n if ((!isNullOrUndefined(this.selectedClass) && (this.selectedClass === selectedRow) && (!isToggle))) {\n condition = true;\n }\n if (condition !== true) {\n this.parent.treeGrid.selectRow(index, isToggle);\n }\n this.parent.treeGrid.grid.selectionModule.preventFocus = this.parent.treeGrid.grid.selectionModule.preventFocus === true ?\n false : this.parent.treeGrid.grid.selectionModule.preventFocus;\n this.prevRowIndex = index;\n this.selectedClass = selectedRow;\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} records - Defines the collection of row indexes.\n * @returns {void} .\n */\n Selection.prototype.selectRows = function (records) {\n if (!isNullOrUndefined(records) && records.length > 0) {\n this.parent.treeGrid.selectRows(records);\n }\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} .\n */\n Selection.prototype.getSelectedRowIndexes = function () {\n return this.parent.treeGrid.getSelectedRowIndexes();\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} .\n */\n Selection.prototype.getSelectedRowCellIndexes = function () {\n return this.parent.treeGrid.getSelectedRowCellIndexes();\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} .\n */\n Selection.prototype.getSelectedRecords = function () {\n if (!this.parent.loadChildOnDemand && this.parent.taskFields.hasChildMapping) {\n var selectedRows = [];\n var selectedIndexes_1 = this.parent.selectionModule.getSelectedRowIndexes();\n var _loop_1 = function (i) {\n var rec = this_1.parent.currentViewData.filter(function (data) {\n return data.index == selectedIndexes_1[i];\n })[0];\n selectedRows.push(rec);\n };\n var this_1 = this;\n for (var i = 0; i < selectedIndexes_1.length; i++) {\n _loop_1(i);\n }\n return selectedRows;\n }\n else {\n return this.parent.treeGrid.getSelectedRecords();\n }\n };\n /**\n * Get the selected records for cell selection.\n *\n * @returns {IGanttData[]} .\n */\n Selection.prototype.getCellSelectedRecords = function () {\n var cellDetails = this.parent.selectionModule.getSelectedRowCellIndexes();\n var cellSelectedRecords = [];\n for (var i = 0; i < cellDetails.length; i++) {\n cellSelectedRecords.push(this.parent.currentViewData[cellDetails[i].rowIndex]);\n }\n return cellSelectedRecords;\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} .\n */\n Selection.prototype.getSelectedRows = function () {\n return this.parent.treeGrid.getSelectedRows();\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void} .\n */\n Selection.prototype.clearSelection = function () {\n this.addRemoveClass(this.selectedRowIndexes);\n this.parent.treeGrid.clearSelection();\n this.parent.selectedRowIndex = -1;\n this.selectedRowIndexes = [];\n this.selectedClass = null;\n if (!isNullOrUndefined(this.parent.toolbarModule)) {\n this.parent.toolbarModule.refreshToolbarItems();\n }\n this.isInteracted = false;\n };\n Selection.prototype.highlightSelectedRows = function (e, fromChart) {\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch;\n this.isMultiShiftRequest = e.shiftKey;\n this.actualTarget = e.target;\n this.isInteracted = true;\n this.isSelectionFromChart = fromChart;\n if (fromChart) {\n var selectedRow = closest(e.target, 'tr.e-chart-row');\n var rIndex = parseInt(selectedRow.getAttribute('data-rowindex'), 10);\n var isToggle = this.parent.selectionSettings.enableToggle;\n if (this.parent.selectionSettings.type === 'Single' || (!this.isMultiCtrlRequest && !this.isMultiShiftRequest)) {\n if (!this.parent.allowTaskbarDragAndDrop || (this.parent.allowTaskbarDragAndDrop && (this.parent.rowDragAndDropModule &&\n !this.parent.rowDragAndDropModule['draggedRecord']))) {\n this.selectRow(rIndex, isToggle);\n }\n }\n else {\n if (this.isMultiShiftRequest) {\n this.selectRowsByRange(isNullOrUndefined(this.prevRowIndex) ? rIndex : this.prevRowIndex, rIndex);\n }\n else {\n setValue('isMultiCtrlRequest', true, this.parent.treeGrid.grid.selectionModule);\n this.parent.treeGrid.grid.selectionModule.addRowsToSelection([rIndex]);\n var isUnSelected = this.selectedRowIndexes.indexOf(rIndex) > -1;\n if (isUnSelected) {\n this.addRemoveClass([rIndex]);\n }\n }\n }\n }\n };\n Selection.prototype.getselectedrowsIndex = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line\n var _a = (startIndex < endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n this.selectedRowIndexes = indexes;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Defines the start row index.\n * @param {number} endIndex - Defines the end row index.\n * @returns {void} .\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.isSelectionFromChart = true;\n this.getselectedrowsIndex(startIndex, endIndex);\n this.selectRows(this.selectedRowIndexes);\n };\n Selection.prototype.addRemoveClass = function (records) {\n if (typeof (records) == \"number\") {\n records = [records];\n }\n var ganttRow = [].slice.call(this.parent.ganttChartModule.chartBodyContent.querySelector('tbody').children);\n var _loop_2 = function (i) {\n var selectedRow = ganttRow.filter(function (e) {\n // eslint-disable-next-line\n return parseInt(e.getAttribute('data-rowindex'), 0) === records[i];\n })[0];\n if (!isNullOrUndefined(selectedRow)) {\n // eslint-disable-next-line\n this_2.getSelectedRowIndexes().indexOf(records[i]) > -1 ? this_2.addClass(selectedRow) : this_2.removeClass(selectedRow);\n }\n };\n var this_2 = this;\n for (var i = 0; i < records.length; i++) {\n _loop_2(i);\n }\n };\n Selection.prototype.addClass = function (selectedRow) {\n addClass([selectedRow], 'e-active');\n selectedRow.setAttribute('aria-selected', 'true');\n };\n Selection.prototype.removeClass = function (selectedRow) {\n removeClass([selectedRow], 'e-active');\n selectedRow.removeAttribute('aria-selected');\n };\n Selection.prototype.showPopup = function (e) {\n if (this.isSelectionFromChart) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-ganttpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n ((this.enableSelectMultiTouch &&\n (this.getSelectedRecords().length > 1 || this.getSelectedRowCellIndexes().length > 1)) ? ' e-spanclicked' : ''));\n document.getElementsByClassName('e-gridpopup')[0].style.display = 'none';\n this.openPopup = true;\n }\n else if (this.selectedRowIndexes.length === 0) {\n this.hidePopUp();\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n Selection.prototype.hidePopUp = function () {\n if (this.openPopup) {\n document.getElementsByClassName('e-ganttpopup')[0].style.display = 'none';\n this.openPopup = false;\n }\n else {\n document.getElementsByClassName('e-gridpopup')[0].style.display = 'none';\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n var grid = this.parent.treeGrid.grid;\n var $popUpElemet = closest(target, '.e-ganttpopup') ?\n closest(target, '.e-ganttpopup') : closest(target, '.e-gridpopup');\n if ($popUpElemet) {\n var spanElement = $popUpElemet.querySelector('.' + 'e-rowselect');\n if (closest(target, '.e-ganttpopup') &&\n !spanElement.classList.contains('e-spanclicked')) {\n this.enableSelectMultiTouch = true;\n spanElement.classList.add('e-spanclicked');\n }\n else if (closest(target, '.e-gridpopup') &&\n spanElement.classList.contains('e-spanclicked')) {\n this.openPopup = true;\n this.enableSelectMultiTouch = true;\n }\n else {\n this.hidePopUp();\n this.enableSelectMultiTouch = false;\n if (closest(target, '.e-ganttpopup')) {\n spanElement.classList.remove('e-spanclicked');\n }\n }\n }\n else if (this.parent.selectionSettings.type === 'Multiple' && this.parent.isAdaptive) {\n var $tr = closest(target, '.e-rowcell');\n if ($tr && this.selectedRowIndexes.length === 0) {\n this.hidePopUp();\n }\n }\n if (grid) {\n setValue('enableSelectMultiTouch', this.enableSelectMultiTouch, grid.selectionModule);\n }\n };\n /**\n * @param {PointerEvent} e .\n * @returns {void} .\n * @private\n */\n Selection.prototype.mouseUpHandler = function (e) {\n var isTaskbarEdited = false;\n var elements = document.querySelectorAll('.e-drag-item');\n var targetElement = null;\n if (e.target.closest('.e-rowcell')) {\n targetElement = e.target;\n }\n else if (e.target.closest('.e-chart-row')) {\n targetElement = e.target.closest('.e-left-label-container') ||\n e.target.closest('.e-taskbar-main-container') || e.target.closest('.e-right-label-container');\n }\n if (this.parent.focusModule) {\n this.parent.focusModule.setActiveElement(targetElement);\n }\n if (this.parent.editModule && this.parent.editSettings.allowTaskbarEditing && this.parent.editModule.taskbarEditModule) {\n var taskbarEdit = this.parent.editModule.taskbarEditModule;\n if (taskbarEdit.isMouseDragged || taskbarEdit.tapPointOnFocus) {\n isTaskbarEdited = true;\n }\n }\n if (!isTaskbarEdited && this.parent.element.contains(e.target) && !(elements.length === 1)) {\n var parent_1 = parentsUntil(e.target, 'e-chart-row');\n var isSelected = e.target.classList.contains('e-rowcell') ||\n e.target.classList.contains('e-row') ||\n e.target.classList.contains('e-treegridexpand') ||\n e.target.classList.contains('e-treegridcollapse') || !isNullOrUndefined(parent_1);\n this.popUpClickHandler(e);\n if (this.parent.selectionSettings.mode !== 'Cell' && isSelected) {\n if (closest(e.target, 'tr.e-chart-row')) {\n if (this.parent.enableVirtualization) {\n this.parent.treeGrid.grid.selectionModule.isInteracted = true;\n }\n this.highlightSelectedRows(e, true);\n }\n else {\n this.highlightSelectedRows(e, false);\n }\n if (this.parent.selectionSettings.type === 'Multiple' && this.parent.isAdaptive) {\n if (this.selectedRowIndexes.length > 0) {\n this.showPopup(e);\n }\n else {\n this.hidePopUp();\n }\n }\n }\n else {\n this.isSelectionFromChart = false;\n }\n }\n };\n /**\n * To add class for selected records in virtualization mode.\n *\n * @param {number} i .\n * @returns {void} .\n * @hidden\n */\n Selection.prototype.maintainSelectedRecords = function (i) {\n var index = this.parent.selectionModule.getSelectedRowIndexes().indexOf(i);\n if (index > -1) {\n this.addRemoveClass([i]);\n }\n };\n /**\n * To destroy the selection module.\n *\n * @returns {void} .\n * @private\n */\n Selection.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('selectRowByIndex', this.selectRowByIndex);\n if (this.parent.isAdaptive) {\n this.parent.off('chartMouseClick', this.mouseUpHandler);\n this.parent.off('treeGridClick', this.popUpClickHandler);\n }\n else {\n this.parent.off('chartMouseUp', this.mouseUpHandler);\n }\n };\n return Selection;\n}());\nexport { Selection };\n","import { Toolbar as NavToolbar } from '@syncfusion/ej2-navigations';\nimport { createElement, extend, isNullOrUndefined, remove, getValue, EventHandler, addClass } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nimport * as events from '../base/constant';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent) {\n this.predefinedItems = {};\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'ExpandAll', 'CollapseAll', 'Search',\n 'PrevTimeSpan', 'NextTimeSpan', 'ZoomIn', 'ZoomOut', 'ZoomToFit', 'ExcelExport',\n 'CsvExport', 'PdfExport', 'Indent', 'Outdent', 'CriticalPath'];\n this.parent = parent;\n this.id = this.parent.element.id;\n this.parent.on('ui-toolbarupdate', this.propertyChanged, this);\n }\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n /**\n * @returns {void} .\n * @private\n */\n Toolbar.prototype.renderToolbar = function () {\n var toolbarItems = this.parent.toolbar || [];\n if (toolbarItems.length > 0) {\n this.element = createElement('div', { id: this.parent.controlId + '_Gantt_Toolbar', className: cls.toolbar });\n if (this.parent.treeGrid.grid.headerModule) {\n this.parent.element.insertBefore(this.element, this.parent.treeGridPane.offsetParent);\n }\n else {\n this.parent.element.appendChild(this.element);\n }\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'ExpandAll', 'CollapseAll',\n 'PrevTimeSpan', 'NextTimeSpan', 'ZoomIn', 'ZoomOut', 'ZoomToFit', 'ExcelExport', 'CsvExport',\n 'PdfExport', 'Indent', 'Outdent', 'CriticalPath', 'Undo', 'Redo'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = void 0;\n var localeName = void 0;\n if (item === 'CriticalPath') {\n itemStr = \"critical-path\";\n localeName = \"criticalPath\";\n }\n else {\n itemStr = item.toLowerCase();\n localeName = item[0].toLowerCase() + item.slice(1);\n }\n this.predefinedItems[item] = {\n id: this.parent.element.id + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant(localeName),\n tooltipText: this.parent.localeObj.getConstant(localeName) + ((localeName === 'add' ||\n localeName === 'edit' || localeName === 'delete') ? this.parent.localeObj.getConstant('task') :\n (localeName === 'expandAll' || localeName === 'collapseAll') ?\n this.parent.localeObj.getConstant('tasks') : ''),\n align: this.parent.isAdaptive ? 'Right' : 'Left'\n };\n if (this.parent.enableRtl) {\n if (item === 'PrevTimeSpan') {\n this.predefinedItems[item].prefixIcon = 'e-nexttimespan';\n }\n if (item === 'NextTimeSpan') {\n this.predefinedItems[item].prefixIcon = 'e-prevtimespan';\n }\n }\n }\n var searchLocalText = this.parent.localeObj.getConstant('search');\n if (this.parent.isAdaptive) {\n this.predefinedItems.Search = {\n id: this.id + '_searchbutton',\n prefixIcon: 'e-search-icon',\n tooltipText: searchLocalText,\n align: 'Right'\n };\n }\n else {\n this.predefinedItems.Search = {\n id: this.id + '_search',\n template: '
      ' +\n '' +\n '' +\n '
      ',\n tooltipText: searchLocalText,\n align: 'Right', cssClass: 'e-search-wrapper'\n };\n }\n this.createToolbar();\n }\n };\n Toolbar.prototype.addReactToolbarPortals = function (args) {\n if (this.parent.isReact && args) {\n this.parent.portals = this.parent.portals.concat(args);\n this.parent.renderTemplates();\n }\n };\n Toolbar.prototype.createToolbar = function () {\n var items = this.getItems();\n this.toolbar = new NavToolbar({\n items: items,\n enableRtl: this.parent.enableRtl,\n clicked: this.toolbarClickHandler.bind(this),\n height: this.parent.isAdaptive ? 48 : 'auto'\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.isReact = this.parent.isReact;\n this.toolbar.on('render-react-toolbar-template', this.addReactToolbarPortals, this);\n this.toolbar.appendTo(this.element);\n if (this.parent.treeGrid.grid && this.parent.isReact) {\n this.parent.treeGrid.grid.portals = this.parent.portals;\n }\n var cancelItem = this.element.querySelector('#' + this.parent.element.id + '_cancel');\n var updateItem = this.element.querySelector('#' + this.parent.element.id + '_update');\n if (cancelItem) {\n addClass([cancelItem], cls.focusCell);\n }\n if (updateItem) {\n addClass([updateItem], cls.focusCell);\n }\n var template = false;\n this.parent.toolbar.map(function (e) {\n if (e === 'Search') {\n template = true;\n }\n });\n if (this.parent.isAdaptive && template) {\n this.element.insertBefore(this.getSearchBarElement(), this.element.childNodes[0]);\n this.searchElement = this.element.querySelector('#' + this.parent.element.id + '_searchbar');\n var textObj = new TextBox({\n placeholder: this.parent.localeObj.getConstant('search'),\n enableRtl: this.parent.enableRtl,\n floatLabelType: 'Never',\n showClearButton: true\n });\n textObj.appendTo(this.searchElement);\n }\n else {\n this.searchElement = this.element.querySelector('#' + this.parent.element.id + '_searchbar');\n }\n if (this.parent.filterModule) {\n this.wireEvent();\n if (this.parent.searchSettings) {\n this.updateSearchTextBox();\n }\n }\n this.enableItems([this.parent.controlId + '_redo', this.parent.controlId + '_undo'], false); // disable toolbar items.\n if (this.parent.readOnly) {\n this.enableItems([this.parent.element.id + '_add', this.parent.element.id + '_update', this.parent.element.id + '_delete',\n this.parent.element.id + '_cancel', this.parent.element.id + '_indent', this.parent.element.id + '_outdent'], false);\n }\n };\n Toolbar.prototype.getSearchBarElement = function () {\n var _this = this;\n var div = createElement('div', { className: 'e-adaptive-searchbar', styles: 'display: none' });\n var textbox = createElement('input', { attrs: { type: 'text' }, id: this.parent.element.id + '_searchbar' });\n var span = createElement('span', { className: 'e-backarrowspan e-icons' });\n span.onclick = function () {\n div.style.display = 'none';\n _this.element.childNodes[1].style.display = 'block';\n };\n div.appendChild(span);\n div.appendChild(textbox);\n return div;\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.searchElement) {\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.searchElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.searchElement, 'blur', this.blurHandler, this);\n }\n };\n Toolbar.prototype.propertyChanged = function (property) {\n var module = getValue('module', property);\n if (module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element && this.element.parentNode) {\n remove(this.element);\n }\n this.renderToolbar();\n this.refreshToolbarItems();\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.searchElement, 'focus', this.focusHandler);\n EventHandler.remove(this.searchElement, 'blur', this.blurHandler);\n this.searchElement = null;\n }\n this.parent.off('ui-toolbarupdate', this.propertyChanged);\n };\n Toolbar.prototype.keyUpHandler = function (e) {\n if (e.keyCode === 13 && this.parent.searchSettings.key !== this.searchElement.value) {\n this.parent.searchSettings.key = this.searchElement.value;\n this.parent.dataBind();\n }\n };\n Toolbar.prototype.focusHandler = function (e) {\n e.target.parentElement.classList.add('e-input-focus');\n };\n Toolbar.prototype.blurHandler = function (e) {\n e.target.parentElement.classList.remove('e-input-focus');\n };\n /**\n * Method to set value for search input box\n *\n * @returns {void} .\n * @hidden\n */\n Toolbar.prototype.updateSearchTextBox = function () {\n if (this.searchElement && this.searchElement.value !== this.parent.searchSettings.key) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n };\n Toolbar.prototype.getItems = function () {\n var items = [];\n var toolbarItems = this.parent.toolbar;\n var searchIndex = -1;\n toolbarItems.forEach(function (item, index) {\n if ((typeof (item) === 'string' && item === 'Search') ||\n ((typeof (item) === 'object') && item.text === 'Search')) {\n searchIndex = index;\n }\n });\n if (searchIndex > -1) {\n var searchItem = toolbarItems.splice(searchIndex, 1);\n toolbarItems.push(searchItem[0]);\n }\n for (var _i = 0, toolbarItems_1 = toolbarItems; _i < toolbarItems_1.length; _i++) {\n var item = toolbarItems_1[_i];\n if (typeof item === 'string') {\n items.push(this.getItemObject(item));\n }\n else {\n items.push(this.getItem(item));\n }\n }\n return items;\n };\n Toolbar.prototype.getItem = function (itemObject) {\n var item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n };\n Toolbar.prototype.getItemObject = function (itemName) {\n return this.predefinedItems[itemName] || { text: itemName, id: this.id + '_' + itemName };\n };\n Toolbar.prototype.toolbarClickHandler = function (arg) {\n var _this = this;\n var gObj = this.parent;\n var gID = this.id;\n this.parent.isToolBarClick = false;\n extend(arg, { cancel: false });\n if (arg.item['properties'].id === this.parent.element.id + \"_pdfexport\" || arg.item['properties'].id === this.parent.element.id + \"_critical-path\") {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === \"Shimmer\") {\n this.parent.showMaskRow();\n }\n else {\n this.parent.showSpinner();\n }\n }\n gObj.trigger(events.toolbarClick, arg, function (args) {\n if (args.cancel) {\n return;\n }\n else {\n if (_this.parent.isAdaptive === true) {\n if (args.item.id === gID + '_edit' || args.item.id === gID + '_add' || args.item.id === gID + '_delete'\n || args.item.id === gID + '_searchbutton' || args.item.id === gID + '_expandall'\n || args.item.id === gID + '_collapseall') {\n if (_this.parent.selectionModule && _this.parent.selectionSettings.type === 'Multiple') {\n _this.parent.selectionModule.hidePopUp();\n document.getElementsByClassName('e-gridpopup')[0].style.display = 'none';\n }\n }\n }\n switch (!isNullOrUndefined(args.item) && args.item.id) {\n case gID + '_edit':\n if (gObj.editModule && gObj.editSettings.allowEditing) {\n gObj.editModule.dialogModule.openToolbarEditDialog();\n }\n break;\n case gID + '_indent':\n if (gObj.editModule && gObj.selectionModule.getSelectedRecords().length) {\n gObj.indent();\n }\n break;\n case gID + '_critical-path':\n if (gObj.enableCriticalPath) {\n gObj.enableCriticalPath = false;\n }\n else {\n gObj.enableCriticalPath = true;\n }\n break;\n case gID + '_outdent':\n if (gObj.editModule && gObj.selectionModule.getSelectedRecords().length) {\n gObj.outdent();\n }\n break;\n case gID + '_update':\n gObj.editModule.cellEditModule.isCellEdit = false;\n gObj.treeGrid.grid.saveCell();\n break;\n case gID + '_cancel':\n gObj.cancelEdit();\n break;\n case gID + '_add':\n if (gObj.editModule && gObj.editSettings.allowAdding) {\n gObj.editModule.dialogModule.openAddDialog();\n }\n break;\n case gID + '_delete':\n if (_this.parent.selectionModule && _this.parent.editModule) {\n if ((_this.parent.selectionSettings.mode !== 'Cell' && _this.parent.selectionModule.selectedRowIndexes.length)\n || (_this.parent.selectionSettings.mode === 'Cell' &&\n _this.parent.selectionModule.getSelectedRowCellIndexes().length)) {\n _this.parent.editModule.startDeleteAction();\n }\n }\n break;\n case gID + '_search':\n {\n var searchButtonId = getValue('originalEvent.target.id', args);\n if (searchButtonId === _this.parent.element.id + '_searchbutton' && _this.parent.filterModule) {\n var keyVal = _this.element.querySelector('#' + _this.parent.element.id + '_searchbar').value;\n if (_this.parent.searchSettings.key !== keyVal) {\n _this.parent.searchSettings.key = keyVal;\n _this.parent.dataBind();\n }\n }\n break;\n }\n case gID + '_searchbutton':\n {\n var adaptiveSearchbar = _this.element.querySelector('.e-adaptive-searchbar');\n adaptiveSearchbar.parentElement.childNodes[1].style.display = 'none';\n adaptiveSearchbar.style.display = 'block';\n break;\n }\n case gID + '_expandall':\n _this.parent.ganttChartModule.expandCollapseAll('expand');\n break;\n case gID + '_collapseall':\n _this.parent.ganttChartModule.expandCollapseAll('collapse');\n break;\n case gID + '_prevtimespan':\n _this.parent.previousTimeSpan();\n break;\n case gID + '_nexttimespan':\n _this.parent.nextTimeSpan();\n break;\n case gID + '_zoomin':\n _this.zoomIn();\n break;\n case gID + '_zoomout':\n _this.zoomOut();\n break;\n case gID + '_zoomtofit':\n _this.zoomToFit();\n break;\n case gID + '_undo':\n _this.parent.undo();\n break;\n case gID + '_redo':\n _this.parent.redo();\n break;\n }\n }\n });\n };\n /**\n *\n * @returns {void} .\n * @private\n */\n Toolbar.prototype.zoomIn = function () {\n this.parent.timelineModule.processZooming(true);\n this.parent.timelineModule.isZooming = false;\n };\n /**\n *\n * @returns {void} .\n * @private\n */\n Toolbar.prototype.zoomToFit = function () {\n if (this.parent.timelineModule.isZoomIn) {\n this.parent.timelineModule.isZoomIn = false;\n }\n this.parent.timelineModule.processZoomToFit();\n this.parent.ganttChartModule.updateScrollLeft(0);\n this.parent.timelineModule.isZoomToFit = false;\n };\n /**\n *\n * @returns {void} .\n * @private\n */\n Toolbar.prototype.zoomOut = function () {\n this.parent.timelineModule.processZooming(false);\n this.parent.timelineModule.isZooming = false;\n };\n /**\n * To refresh toolbar items bases current state of tasks\n *\n * @param {RowSelectEventArgs} args .\n * @returns {void} .\n */\n Toolbar.prototype.refreshToolbarItems = function (args) {\n var gObj = this.parent;\n var enableItems = [];\n var disableItems = [];\n var edit = gObj.editSettings;\n var gID = this.id;\n var ind = gObj.selectedRowIndex;\n if (!this.parent.loadChildOnDemand && this.parent.taskFields.hasChildMapping) {\n for (var i = 0; i < gObj.updatedRecords.length; i++) {\n if (gObj.updatedRecords[i].index === ind) {\n ind = i;\n break;\n }\n }\n }\n var previousGanttRecord;\n var isSelected = gObj.selectionModule ? gObj.selectionModule.selectedRowIndexes.length === 1 ||\n gObj.selectionModule.getSelectedRowCellIndexes().length === 1 ? true : false : false;\n var toolbarItems = this.toolbar ? this.toolbar.items : [];\n var toolbarDefaultItems = [gID + '_add', gID + '_edit', gID + '_delete',\n gID + '_update', gID + '_cancel', gID + '_indent', gID + '_outdent'];\n var isResouceParent = (this.parent.viewType === 'ResourceView' && getValue('data.level', args) !== 0\n || this.parent.viewType === 'ProjectView');\n if (!isNullOrUndefined(this.parent.editModule)) {\n var touchEdit = gObj.editModule.taskbarEditModule ?\n gObj.editModule.taskbarEditModule.touchEdit : false;\n var hasData = gObj.flatData && gObj.flatData.length;\n // eslint-disable-next-line\n edit.allowAdding && !touchEdit ? enableItems.push(gID + '_add') : disableItems.push(gID + '_add');\n // eslint-disable-next-line\n edit.allowEditing && isResouceParent && hasData && isSelected && !touchEdit ?\n enableItems.push(gID + '_edit') : disableItems.push(gID + '_edit');\n if (!edit.allowEditing || ind === 0 || ind === -1 || !hasData || !isSelected || this.parent.viewType === 'ResourceView') {\n disableItems.push(gID + '_indent');\n disableItems.push(gID + '_outdent');\n }\n else {\n if (!isNullOrUndefined(gObj.updatedRecords[ind]) && gObj.updatedRecords[ind].level === 0 && hasData && !touchEdit) {\n enableItems.push(gID + '_indent');\n disableItems.push(gID + '_outdent');\n }\n else {\n previousGanttRecord = gObj.updatedRecords[ind - 1];\n if (!isNullOrUndefined(gObj.updatedRecords[ind]) && (gObj.updatedRecords[ind].level - previousGanttRecord.level === 1) && ind !== -1) {\n disableItems.push(gID + '_indent');\n enableItems.push(gID + '_outdent');\n }\n else if (ind !== -1) {\n enableItems.push(gID + '_indent');\n enableItems.push(gID + '_outdent');\n }\n }\n }\n var isDeleteSelected = gObj.selectionModule ? gObj.selectionModule.selectedRowIndexes.length > 0 ||\n gObj.selectionModule.getSelectedRowCellIndexes().length > 0 ? true : false : false;\n // eslint-disable-next-line\n edit.allowDeleting && hasData && isDeleteSelected && !touchEdit ?\n enableItems.push(gID + '_delete') : disableItems.push(gID + '_delete');\n if (gObj.editSettings.mode === 'Auto' && !isNullOrUndefined(gObj.editModule.cellEditModule)\n && gObj.editModule.cellEditModule.isCellEdit) {\n // New initialization for enableItems and disableItems during isCellEdit\n enableItems = [];\n enableItems.push(gID + '_update', gID + '_cancel');\n disableItems = [];\n for (var t = 0; t < toolbarItems.length; t++) {\n if (toolbarItems[t].id !== gID + '_update' && toolbarItems[t].id !== gID + '_cancel' &&\n toolbarDefaultItems.indexOf(toolbarItems[t].id) !== -1) {\n disableItems.push(toolbarItems[t].id);\n }\n }\n }\n else {\n disableItems.push(gID + '_update', gID + '_cancel');\n for (var t = 0; t < toolbarItems.length; t++) {\n if (enableItems.indexOf(toolbarItems[t].id) === -1 &&\n disableItems.indexOf(toolbarItems[t].id) === -1) {\n enableItems.push(toolbarItems[t].id);\n }\n }\n }\n }\n else {\n disableItems.push(gID + '_delete');\n disableItems.push(gID + '_add');\n disableItems.push(gID + '_edit');\n disableItems.push(gID + '_update');\n disableItems.push(gID + '_cancel');\n disableItems.push(gID + '_indent');\n disableItems.push(gID + '_outdent');\n }\n for (var e = 0; e < enableItems.length; e++) {\n var index = void 0;\n for (var t = 0; t < toolbarItems.length; t++) {\n if (toolbarItems[t].id === enableItems[e]) {\n index = t;\n break;\n }\n }\n if (toolbarItems.length > 0) {\n this.toolbar.hideItem(index, false);\n }\n }\n for (var d = 0; d < disableItems.length; d++) {\n var index = void 0;\n for (var t = 0; t < toolbarItems.length; t++) {\n if (toolbarItems[t].id === disableItems[d]) {\n index = t;\n break;\n }\n }\n if (toolbarItems.length > 0) {\n this.toolbar.hideItem(index, true);\n }\n }\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void} .\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var element = this.element.querySelector('#' + item);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n };\n /**\n * Destroys the Sorting of TreeGrid.\n *\n * @function destroy\n * @returns {void} .\n * @private\n */\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n if (this.parent.filterModule) {\n this.unWireEvent();\n }\n remove(this.element);\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","/**\n * This file was to define all public and internal events\n */\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n","import { createElement, formatUnit, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar NonWorkingDay = /** @class */ (function () {\n function NonWorkingDay(gantt) {\n this.weekendWidthUpdated = false;\n this.parent = gantt;\n this.nonworkingContainer = null;\n this.holidayContainer = null;\n this.weekendContainer = null;\n }\n /**\n * Method append nonworking container\n *\n * @returns {void} .\n */\n NonWorkingDay.prototype.createNonworkingContainer = function () {\n if (!this.parent.ganttChartModule.chartBodyContent.contains(this.nonworkingContainer)) {\n this.nonworkingContainer = createElement('div', {\n className: cls.nonworkingContainer\n });\n this.parent.enableTimelineVirtualization ? this.nonworkingContainer.style.height = \"100%\" : {};\n this.parent.ganttChartModule.chartBodyContent.insertBefore(this.nonworkingContainer, this.parent.ganttChartModule.chartBodyContent.lastChild);\n }\n };\n /**\n * calculation for holidays rendering.\n *\n * @returns {void} .\n * @private\n */\n NonWorkingDay.prototype.renderHolidays = function () {\n if (this.parent.holidays && this.parent.holidays.length > 0) {\n this.createNonworkingContainer();\n if (!this.nonworkingContainer.contains(this.holidayContainer)) {\n this.holidayContainer = createElement('div', {\n className: cls.holidayContainer\n });\n if (this.parent.enableTimelineVirtualization) {\n this.holidayContainer.style.height = \"100%\";\n this.holidayContainer.style.zIndex = \"-1\";\n }\n this.nonworkingContainer.appendChild(this.holidayContainer);\n }\n this.holidayContainer.innerHTML = this.getHolidaysElement().innerHTML;\n }\n else if (this.holidayContainer && this.holidayContainer.parentNode) {\n remove(this.holidayContainer);\n if (this.nonworkingContainer && this.nonworkingContainer.childNodes.length === 0) {\n remove(this.nonworkingContainer);\n }\n }\n };\n /**\n * Method to return holidays as html string\n *\n * @returns {HTMLElement} .\n */\n NonWorkingDay.prototype.getHolidaysElement = function () {\n var fromDate;\n var toDate;\n var container = createElement('div');\n var height = this.parent.contentHeight;\n // eslint-disable-next-line\n var toolbarHeight = 0;\n if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {\n toolbarHeight = this.parent.toolbarModule.element.offsetHeight;\n }\n var viewportHeight = this.parent.ganttHeight - toolbarHeight - this.parent.ganttChartModule.chartTimelineContainer.offsetHeight;\n for (var i = 0; i < this.parent.holidays.length; i++) {\n if (this.parent.holidays[i].from && this.parent.holidays[i].to) {\n fromDate = this.parent.dateValidationModule.getDateFromFormat(this.parent.holidays[i].from);\n toDate = this.parent.dateValidationModule.getDateFromFormat(this.parent.holidays[i].to);\n toDate.setDate(toDate.getDate() + 1);\n fromDate.setHours(0, 0, 0, 0);\n toDate.setHours(0, 0, 0, 0);\n }\n else if (this.parent.holidays[i].from) {\n fromDate = this.parent.dateValidationModule.getDateFromFormat(this.parent.holidays[i].from);\n fromDate.setHours(0, 0, 0, 0);\n }\n else if (this.parent.holidays[i].to) {\n fromDate = this.parent.dateValidationModule.getDateFromFormat(this.parent.holidays[i].to);\n fromDate.setHours(0, 0, 0, 0);\n }\n var width = (this.parent.holidays[i].from && this.parent.holidays[i].to) ?\n this.parent.dataOperation.getTaskWidth(fromDate, toDate) : this.parent.perDayWidth;\n var left = this.parent.dataOperation.getTaskLeft(fromDate, false, true);\n var align = this.parent.enableRtl ? \"right:\" + left + \"px;\" : \"left:\" + left + \"px;\";\n var holidayDiv = createElement('div', {\n className: cls.holidayElement, styles: align + \" width:\" + width + \"px; height:100%;\"\n });\n var spanTop = (viewportHeight < height) ? viewportHeight / 2 : height / 2;\n var spanElement = createElement('span', {\n className: cls.holidayLabel, styles: \"top:\" + spanTop + \"px;left:\" + (width / 2) + \"px;\"\n });\n var property = this.parent.disableHtmlEncode ? 'textContent' : 'innerHTML';\n spanElement[property] = this.parent.holidays[i].label ? this.parent.holidays[i].label : '';\n if (this.parent.enableHtmlSanitizer && typeof (spanElement[property]) === 'string') {\n spanElement[property] = SanitizeHtmlHelper.sanitize(spanElement[property]);\n }\n holidayDiv.appendChild(spanElement);\n if (this.parent.holidays[i].cssClass) {\n holidayDiv.classList.add(this.parent.holidays[i].cssClass);\n }\n container.appendChild(holidayDiv);\n }\n return container;\n };\n /**\n * @returns {void} .\n * @private\n */\n NonWorkingDay.prototype.renderWeekends = function () {\n if (this.parent.highlightWeekends) {\n this.createNonworkingContainer();\n if (!this.nonworkingContainer.contains(this.weekendContainer)) {\n this.weekendContainer = createElement('div', {\n className: cls.weekendContainer\n });\n if (this.parent.enableTimelineVirtualization) {\n this.weekendContainer.style.height = \"100%\";\n this.weekendContainer.style.zIndex = \"-1\";\n }\n this.nonworkingContainer.appendChild(this.weekendContainer);\n }\n this.weekendContainer.innerHTML = this.getWeekendElements().innerHTML;\n }\n else if (this.weekendContainer) {\n remove(this.weekendContainer);\n if (this.nonworkingContainer && this.nonworkingContainer.childNodes.length === 0) {\n remove(this.nonworkingContainer);\n }\n }\n };\n /**\n * Method to get weekend html string\n *\n * @returns {HTMLElement} .\n */\n NonWorkingDay.prototype.getWeekendElements = function () {\n var container = createElement('div');\n var leftValueForStartDate = (this.parent.enableTimelineVirtualization && this.parent.ganttChartModule.scrollObject.element.scrollLeft != 0)\n ? this.parent.ganttChartModule.scrollObject.getTimelineLeft() : null;\n var startDate = (this.parent.enableTimelineVirtualization && !isNullOrUndefined(leftValueForStartDate))\n ? new Date((this.parent.timelineModule['dateByLeftValue'](leftValueForStartDate)).getTime()) : new Date(this.parent.timelineModule.timelineStartDate.getTime());\n var endDate = this.parent.enableTimelineVirtualization ? new Date((this.parent.timelineModule.weekendEndDate).getTime()) :\n new Date(this.parent.timelineModule.timelineEndDate.getTime());\n var nonWorkingIndex = this.parent.nonWorkingDayIndex;\n var isFirstCell = true;\n do {\n if (nonWorkingIndex.indexOf(startDate.getDay()) !== -1) {\n var left = this.parent.dataOperation.getTaskLeft(startDate, false, true);\n var width = this.parent.perDayWidth;\n if (isFirstCell) {\n var start = new Date(startDate.getTime());\n var tempEnd = new Date(start.getTime());\n tempEnd.setDate(tempEnd.getDate() + 1);\n tempEnd.setHours(0, 0, 0, 0);\n width = this.parent.dataOperation.getTaskWidth(start, tempEnd);\n isFirstCell = false;\n }\n var sDate = new Date(startDate);\n sDate.setDate(sDate.getDate() + 1);\n if (sDate.getTimezoneOffset() != this.parent.timelineModule.timelineStartDate.getTimezoneOffset() && !this.weekendWidthUpdated) {\n if (this.parent.timelineModule.bottomTier == 'Hour' && this.parent.timelineSettings.bottomTier.count === 1) {\n width = width - this.parent.timelineSettings.timelineUnitSize;\n this.weekendWidthUpdated = true;\n }\n }\n var align = this.parent.enableRtl ? \"right:\" + left + \"px;\" : \"left:\" + left + \"px;\";\n var weekendDiv = createElement('div', {\n className: cls.weekend, styles: align + \" width:\" + width + \"px;height:100%;\"\n });\n container.appendChild(weekendDiv);\n }\n startDate.setDate(startDate.getDate() + 1);\n startDate.setHours(0, 0, 0, 0);\n } while (startDate < endDate);\n return container;\n };\n NonWorkingDay.prototype.updateHolidayLabelHeight = function () {\n var height = this.parent.getContentHeight();\n var gantttable = document.getElementById(this.parent.element.id);\n // eslint-disable-next-line\n var toolbarHeight = 0;\n if (!isNullOrUndefined(this.parent.toolbarModule) && !isNullOrUndefined(this.parent.toolbarModule.element)) {\n toolbarHeight = this.parent.toolbarModule.element.offsetHeight;\n }\n var viewportHeight = (this.parent.height === 'auto') ? gantttable.offsetHeight - toolbarHeight - this.parent.ganttChartModule.chartTimelineContainer.offsetHeight :\n this.parent.ganttHeight - toolbarHeight - this.parent.ganttChartModule.chartTimelineContainer.offsetHeight;\n var top = (viewportHeight < height) ? viewportHeight / 2 : height / 2;\n var labels = this.holidayContainer.querySelectorAll('.' + cls.holidayLabel);\n for (var i = 0; i < labels.length; i++) {\n labels[i].style.top = formatUnit(top);\n }\n };\n /**\n * Method to update height for all internal containers\n *\n * @returns {void} .\n * @private\n */\n NonWorkingDay.prototype.updateContainerHeight = function () {\n var height = this.parent.getContentHeight();\n if (this.holidayContainer) {\n this.holidayContainer.style.height = formatUnit(height);\n this.updateHolidayLabelHeight();\n }\n if (this.weekendContainer) {\n this.weekendContainer.style.height = formatUnit(height);\n }\n };\n /**\n * Method to remove containers of holiday and weekend\n *\n * @returns {void} .\n */\n NonWorkingDay.prototype.removeContainers = function () {\n if (this.holidayContainer) {\n remove(this.holidayContainer);\n }\n if (this.weekendContainer) {\n remove(this.weekendContainer);\n }\n if (this.nonworkingContainer) {\n remove(this.nonworkingContainer);\n }\n };\n return NonWorkingDay;\n}());\nexport { NonWorkingDay };\n","import { createElement, formatUnit, remove, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constants';\nvar EventMarker = /** @class */ (function () {\n function EventMarker(gantt) {\n this.parent = gantt;\n this.eventMarkersContainer = null;\n }\n /**\n * @returns {void} .\n * @private\n */\n EventMarker.prototype.renderEventMarkers = function () {\n if (this.parent.eventMarkers && this.parent.eventMarkers.length > 0) {\n if (!this.parent.ganttChartModule.chartBodyContent.contains(this.eventMarkersContainer)) {\n this.eventMarkersContainer = createElement('div', {\n className: cls.eventMarkersContainer\n });\n this.eventMarkersContainer.setAttribute('role', 'term');\n this.parent.ganttChartModule.chartBodyContent.appendChild(this.eventMarkersContainer);\n }\n this.eventMarkersContainer.innerHTML = '';\n this.getEventMarkersElements(this.eventMarkersContainer);\n }\n else {\n this.removeContainer();\n }\n };\n /**\n * @returns {void} .\n * @private\n */\n EventMarker.prototype.removeContainer = function () {\n if (this.eventMarkersContainer) {\n remove(this.eventMarkersContainer);\n this.eventMarkersContainer = null;\n }\n };\n /**\n * Method to get event markers as html string\n *\n * @param {HTMLElement} container .\n * @returns {void} .\n */\n EventMarker.prototype.getEventMarkersElements = function (container) {\n var left;\n var eventMarkerElement;\n var spanElement;\n var rightArrow;\n var eventMarkerCollection = [];\n for (var i = 0; i < this.parent.eventMarkers.length; i++) {\n left = this.parent.dataOperation.getTaskLeft(this.parent.dateValidationModule.getDateFromFormat(this.parent.eventMarkers[i].day, true), false, true);\n eventMarkerCollection.push({ id: i, left: left, label: this.parent.eventMarkers[i].label, date: this.parent.dateValidationModule.getDateFromFormat(this.parent.eventMarkers[i].day, true) });\n var align = void 0;\n if (this.parent.enableRtl) {\n align = \"right:\" + left + \"px;\";\n }\n else {\n align = \"left:\" + left + \"px;\";\n }\n eventMarkerElement = createElement('div', {\n className: cls.eventMarkersChild, styles: align + \" height:100%;\",\n id: 'stripline' + i\n });\n if (this.parent.eventMarkers[i].label) {\n spanElement = createElement('div', {\n className: cls.eventMarkersSpan\n });\n var property = this.parent.disableHtmlEncode ? 'textContent' : 'innerHTML';\n spanElement[property] = this.parent.eventMarkers[i].label;\n if (this.parent.enableHtmlSanitizer && typeof (spanElement[property]) === 'string') {\n spanElement[property] = SanitizeHtmlHelper.sanitize(spanElement[property]);\n }\n if (this.parent.enableRtl) {\n spanElement.style.right = '5px';\n }\n else {\n spanElement.style.left = '5px';\n }\n eventMarkerElement.appendChild(spanElement);\n rightArrow = createElement('div', {\n className: 'e-gantt-right-arrow'\n });\n eventMarkerElement.appendChild(rightArrow);\n }\n if (this.parent.eventMarkers[i].cssClass) {\n eventMarkerElement.classList.add(this.parent.eventMarkers[i].cssClass);\n }\n eventMarkerElement.setAttribute('tabindex', '-1');\n if (!isNullOrUndefined(this.parent.eventMarkers[i].day)) {\n eventMarkerElement.setAttribute('aria-label', this.parent.localeObj.getConstant('eventMarkers') + ' '\n + (typeof this.parent.eventMarkers[i].day === 'string' ?\n this.parent.eventMarkers[i].day : this.parent.getFormatedDate(this.parent.eventMarkers[i].day))\n + ' ' + this.parent.eventMarkers[i].label);\n }\n container.appendChild(eventMarkerElement);\n }\n this.parent.eventMarkerColloction = eventMarkerCollection;\n };\n /**\n * @returns {void} .\n * @private\n */\n EventMarker.prototype.updateContainerHeight = function () {\n if (this.eventMarkersContainer) {\n this.eventMarkersContainer.style.height = formatUnit(this.parent.getContentHeight());\n }\n };\n return EventMarker;\n}());\nexport { EventMarker };\n","import { NonWorkingDay } from '../renderer/nonworking-day';\nimport { EventMarker } from '../renderer/event-marker';\nimport { getValue } from '@syncfusion/ej2-base';\n/**\n * DayMarkers module is used to render event markers, holidays and to highlight the weekend days.\n */\nvar DayMarkers = /** @class */ (function () {\n function DayMarkers(parent) {\n this.parent = parent;\n this.nonworkingDayRender = new NonWorkingDay(this.parent);\n this.eventMarkerRender = new EventMarker(this.parent);\n this.wireEvents();\n }\n DayMarkers.prototype.wireEvents = function () {\n this.parent.on('refreshDayMarkers', this.refreshMarkers, this);\n this.parent.on('updateHeight', this.updateHeight, this);\n this.parent.on('ui-update', this.propertyChanged, this);\n };\n DayMarkers.prototype.propertyChanged = function (property) {\n var keys = Object.keys(getValue('properties', property));\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n switch (key) {\n case 'eventMarkers':\n this.eventMarkerRender.renderEventMarkers();\n this.updateHeight();\n break;\n case 'highlightWeekends':\n this.nonworkingDayRender.renderWeekends();\n this.updateHeight();\n break;\n case 'holidays':\n this.nonworkingDayRender.renderHolidays();\n this.updateHeight();\n break;\n }\n }\n };\n DayMarkers.prototype.refreshMarkers = function () {\n this.nonworkingDayRender.renderWeekends();\n this.nonworkingDayRender.renderHolidays();\n if (this.parent.gridLines === 'Vertical' || this.parent.gridLines === 'Both') {\n this.parent['renderChartVerticalLines']();\n }\n this.eventMarkerRender.renderEventMarkers();\n };\n DayMarkers.prototype.updateHeight = function () {\n this.nonworkingDayRender.updateContainerHeight();\n this.eventMarkerRender.updateContainerHeight();\n };\n /**\n * To get module name\n *\n * @returns {string} .\n */\n DayMarkers.prototype.getModuleName = function () {\n return 'dayMarkers';\n };\n /**\n * @returns {void} .\n * @private\n */\n DayMarkers.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.nonworkingDayRender.removeContainers();\n this.eventMarkerRender.removeContainer();\n this.parent.off('refreshDayMarkers', this.refreshMarkers);\n this.parent.off('updateHeight', this.updateHeight);\n this.parent.off('ui-update', this.propertyChanged);\n };\n return DayMarkers;\n}());\nexport { DayMarkers };\n","import { Grid, ColumnMenu as GridColumnMenu } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnMenu module\n *\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function ColumnMenu(parent) {\n Grid.Inject(GridColumnMenu);\n this.parent = parent;\n }\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.parent.grid.columnMenuModule.getColumnMenu();\n };\n ColumnMenu.prototype.destroy = function () {\n //this.parent.grid.columnMenuModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnMenu module name\n */\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","import { TreeGrid, ColumnMenu as TreeGridColumnMenu } from '@syncfusion/ej2-treegrid';\n/**\n * Configures columnMenu collection in Gantt.\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n function ColumnMenu(parent) {\n TreeGrid.Inject(TreeGridColumnMenu);\n this.parent = parent;\n }\n /**\n * @returns {HTMLAllCollection} .\n * To get column menu collection.\n */\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.parent.treeGrid.columnMenuModule.getColumnMenu();\n };\n ColumnMenu.prototype.destroy = function () {\n // column menu destroy module\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} .\n * @private\n */\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","import { TreeGrid, Filter as TreeGridFilter } from '@syncfusion/ej2-treegrid';\nimport { filterAfterOpen, getFilterMenuPostion } from '@syncfusion/ej2-grids';\nimport { getActualProperties, getCustomDateFormat } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined, remove, createElement, addClass, closest, EventHandler } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\n/**\n * The Filter module is used to handle filter action.\n */\nvar Filter = /** @class */ (function () {\n function Filter(gantt) {\n this.parent = gantt;\n TreeGrid.Inject(TreeGridFilter);\n this.parent.treeGrid.allowFiltering = this.parent.allowFiltering;\n this.updateCustomFilters();\n this.parent.treeGrid.filterSettings = getActualProperties(this.parent.filterSettings);\n this.addEventListener();\n }\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n /**\n * Update custom filter for default Gantt columns\n *\n * @returns {void} .\n */\n Filter.prototype.updateCustomFilters = function () {\n var settings = this.parent.taskFields;\n for (var i = 0; i < this.parent.ganttColumns.length; i++) {\n var column = this.parent.ganttColumns[i];\n if (((column.editType === 'datepickeredit' || column.editType === 'datetimepickeredit') &&\n (column.field === settings.startDate || column.field === settings.endDate\n || column.field === settings.baselineStartDate || column.field === settings.baselineEndDate)) ||\n (column.field === settings.duration && column.editType === 'stringedit')) {\n this.initiateFiltering(this.parent.ganttColumns[i]);\n }\n }\n };\n Filter.prototype.updateModel = function () {\n this.parent.filterSettings = this.parent.treeGrid.filterSettings;\n };\n Filter.prototype.addEventListener = function () {\n this.parent.on('updateModel', this.updateModel, this);\n this.parent.on('actionBegin', this.actionBegin, this);\n this.parent.on('actionComplete', this.actionComplete, this);\n this.parent.on('columnMenuOpen', this.columnMenuOpen, this);\n };\n Filter.prototype.wireEvents = function (a) {\n EventHandler.add(document.getElementById(a), 'click', this.mouseClickHandler, this);\n };\n Filter.prototype.initiateFiltering = function (column) {\n var treeColumn = this.parent.getColumnByField(column.field, this.parent.treeGridModule.treeGridColumns);\n column.allowFiltering = column.allowFiltering === false ? false : true;\n if (column.allowFiltering && (this.parent.filterSettings.type === 'Menu' || this.parent.filterSettings.type === 'Excel') && !column.filter) {\n column.filter = { ui: this.getCustomFilterUi(column) };\n }\n if (treeColumn) {\n treeColumn.allowFiltering = column.allowFiltering;\n treeColumn.filter = column.allowFiltering ? column.filter : {};\n }\n };\n /**\n * To get filter menu UI\n *\n * @param {ColumnModel} column .\n * @returns {IFilterMUI} .\n */\n Filter.prototype.getCustomFilterUi = function (column) {\n var settings = this.parent.taskFields;\n var filterUI = {};\n if (column.editType === 'datepickeredit' && (column.field === settings.startDate || column.field === settings.endDate\n || column.field === settings.baselineStartDate || column.field === settings.baselineEndDate)) {\n filterUI = this.getDatePickerFilter(column.field);\n }\n else if (column.editType === 'datetimepickeredit' && (column.field === settings.startDate || column.field === settings.endDate\n || column.field === settings.baselineStartDate || column.field === settings.baselineEndDate)) {\n filterUI = this.getDateTimePickerFilter();\n }\n else if (column.field === settings.duration && column.editType === 'stringedit') {\n filterUI = this.getDurationFilter();\n }\n return filterUI;\n };\n Filter.prototype.mouseClickHandler = function (e) {\n if (closest(e.target, \".e-excelfilter\")) {\n this.parent.treeGrid.grid.notify(\"click\", e);\n }\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.element, 'click', this.mouseClickHandler);\n };\n Filter.prototype.getDatePickerFilter = function (columnName) {\n var _this = this;\n var parent = this.parent;\n var timeValue = (columnName === parent.taskFields.startDate) || (columnName === parent.taskFields.baselineStartDate)\n ? parent.defaultStartTime : parent.defaultEndTime;\n var dropDateInstance;\n var filterDateUI = {\n create: function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var flValInput = createElement('input', { className: 'flm-input' });\n args.target.appendChild(flValInput);\n dropDateInstance = new DatePicker({ placeholder: _this.parent.localeObj.getConstant('enterValue'), format: format });\n dropDateInstance.enableRtl = _this.parent.enableRtl;\n dropDateInstance.appendTo(flValInput);\n },\n write: function (args) {\n dropDateInstance.value = args.filteredValue;\n },\n read: function (args) {\n if (dropDateInstance.value) {\n dropDateInstance.value.setSeconds(timeValue);\n }\n args.fltrObj.filterByColumn(args.column.field, args.operator, dropDateInstance.value);\n }\n };\n return filterDateUI;\n };\n Filter.prototype.getDateTimePickerFilter = function () {\n var _this = this;\n var dropInstance;\n var filterDateTimeUI = {\n create: function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var flValInput = createElement('input', { className: 'flm-input' });\n args.target.appendChild(flValInput);\n dropInstance = new DateTimePicker({ placeholder: _this.parent.localeObj.getConstant('enterValue'), format: format });\n dropInstance.enableRtl = _this.parent.enableRtl;\n dropInstance.appendTo(flValInput);\n },\n write: function (args) {\n dropInstance.value = args.filteredValue;\n },\n read: function (args) {\n args.fltrObj.filterByColumn(args.column.field, args.operator, dropInstance.value);\n }\n };\n return filterDateTimeUI;\n };\n Filter.prototype.getDurationFilter = function () {\n var _this = this;\n var parent = this.parent;\n var textBoxInstance;\n var textValue = '';\n var filterDurationUI = {\n create: function (args) {\n var flValInput = createElement('input', { className: 'e-input' });\n flValInput.setAttribute('placeholder', _this.parent.localeObj.getConstant('enterValue'));\n args.target.appendChild(flValInput);\n textBoxInstance = new TextBox();\n textBoxInstance.enableRtl = _this.parent.enableRtl;\n textBoxInstance.appendTo(flValInput);\n },\n write: function (args) {\n textBoxInstance.value = args.filteredValue ? textValue : '';\n },\n read: function (args) {\n var durationObj = _this.parent.dataOperation.getDurationValue(textBoxInstance.value);\n var intVal = getValue('duration', durationObj);\n var unit = getValue('durationUnit', durationObj);\n if (intVal >= 0) {\n var dayVal = void 0;\n if (unit === 'minute') {\n dayVal = (intVal * 60) / parent.secondsPerDay;\n }\n else if (unit === 'hour') {\n dayVal = (intVal * 60 * 60) / parent.secondsPerDay;\n }\n else {\n //Consider it as day unit\n dayVal = intVal;\n unit = 'day';\n }\n args.fltrObj.filterByColumn(args.column.field, args.operator, dayVal);\n textValue = _this.parent.dataOperation.getDurationString(intVal, unit);\n }\n else {\n args.fltrObj.filterByColumn(args.column.field, args.operator, null);\n textValue = null;\n }\n }\n };\n return filterDurationUI;\n };\n /**\n * Remove filter menu while opening column chooser menu\n *\n * @param {ColumnMenuOpenEventArgs} args .\n * @returns {void} .\n */\n Filter.prototype.columnMenuOpen = function (args) {\n if (this.filterMenuElement && document.body.contains(this.filterMenuElement)) {\n remove(this.filterMenuElement);\n }\n this.filterMenuElement = null;\n };\n // eslint-disable-next-line\n Filter.prototype.actionBegin = function (args) {\n // ...\n };\n Filter.prototype.closeFilterOnContextClick = function (element) {\n var datePickerElement = document.querySelector('body > div.e-datepicker');\n var dateTimePickerElement = document.querySelector('body > div.e-datetimepicker');\n if (this.filterMenuElement && document.body.contains(this.filterMenuElement)) {\n var ganttElement = closest(element, '#' + this.parent.element.id)\n || element.querySelector('#' + this.parent.element.id);\n if ((!(this.filterMenuElement.contains(element)) && !isNullOrUndefined(ganttElement)) || (!(this.filterMenuElement.contains(element)) && (isNullOrUndefined(datePickerElement))\n && (isNullOrUndefined(dateTimePickerElement)) && ((element.nodeName === 'DIV') || (element.nodeName === 'HTML') || (element.nodeName === 'SPAN') || (element.nodeName === 'BUTTON'))) && !element.classList.contains('e-dropdownbase')) {\n remove(this.filterMenuElement);\n this.parent.treeGrid.grid.notify('filter-menu-close', { isOpen: false });\n this.filterMenuElement = null;\n }\n }\n };\n Filter.prototype.actionComplete = function (args) {\n if (!isNullOrUndefined(args['filterModel'])) {\n if (!isNullOrUndefined(args['filterModel']['dialogObj'])) {\n if (!isNullOrUndefined(args['filterModel']['dialogObj']['element'])) {\n if (this.parent.filterSettings.type === 'Excel') {\n this.wireEvents(args['filterModel']['dialogObj']['element'].id);\n }\n }\n }\n }\n if (args.requestType === filterAfterOpen) {\n if (this.parent.treeGrid.filterSettings.type === 'Menu') {\n this.filterMenuElement = getValue('filterModel.dlgObj.element', args);\n }\n else {\n this.filterMenuElement = getValue('filterModel.dialogObj.element', args);\n }\n this.updateFilterMenuPosition(this.filterMenuElement, args);\n // To set default values as 'contains' in filter dialog\n var taskID = this.parent.taskFields.id;\n var predecessor = this.parent.taskFields.dependency;\n var resource = this.parent.taskFields.resourceInfo;\n var filterObj = this.parent.treeGrid.grid.filterModule;\n var filterValues = getValue('values', filterObj);\n if ((args.columnName === predecessor && isNullOrUndefined(getValue(predecessor, filterValues)))\n || (args.columnName === resource && isNullOrUndefined(getValue(resource, filterValues)))) {\n var element = this.filterMenuElement.querySelector('.e-dropdownlist');\n var instanceObj = void 0;\n if (!isNullOrUndefined(element)) {\n instanceObj = getValue('ej2_instances[0]', element);\n instanceObj.index = 2;\n instanceObj.dataBind();\n }\n }\n else if (args.columnName === taskID && isNullOrUndefined(getValue(taskID, filterValues)) && this.parent.treeGrid.filterSettings.type === 'Menu') {\n var element = this.filterMenuElement.querySelector('.e-flmenu-input');\n var instanceObj = getValue('ej2_instances[0]', element);\n if (!isNullOrUndefined(instanceObj) && isNullOrUndefined(this.parent.columnByField[args.columnName].format)) {\n instanceObj.format = 'n';\n }\n }\n }\n };\n Filter.prototype.setPosition = function (li, ul) {\n var gridPos = this.parent.element.getBoundingClientRect();\n var gridPosTop = gridPos.top;\n var gridPosLeft = gridPos.left;\n var parentNode;\n var parentNodeTop;\n var parentNodeLeft;\n var paddingTop;\n var paddingLeft;\n var marginTop;\n var marginLeft;\n if (!isNullOrUndefined(this.parent.element.parentNode) && this.parent.element.parentNode['tagName'] != 'BODY') {\n parentNode = this.parent.element.parentNode;\n parentNodeTop = parentNode.getBoundingClientRect().top;\n marginTop = parentNode.style.marginTop;\n while (true) {\n if (Math.abs(gridPosTop) > Math.abs(parentNodeTop)) {\n paddingTop = gridPosTop - parentNodeTop;\n break;\n }\n if (!isNullOrUndefined(this.parent.element.parentNode)) {\n if (parentNode.parentNode instanceof HTMLDocument) {\n break;\n }\n parentNode = parentNode.parentNode;\n if (parentNode.parentNode && parentNode.parentNode.style) {\n marginTop = parentNode.parentNode.style.marginTop;\n }\n }\n parentNodeTop = parentNode.getBoundingClientRect().top;\n }\n parentNodeLeft = parentNode.getBoundingClientRect().left;\n marginLeft = parentNode.style.marginLeft;\n while (true) {\n if (Math.abs(gridPosLeft) > Math.abs(parentNodeLeft)) {\n paddingLeft = gridPosLeft - parentNodeLeft;\n break;\n }\n if (!isNullOrUndefined(this.parent.element.parentNode)) {\n if (parentNode.parentNode instanceof HTMLDocument) {\n break;\n }\n parentNode = parentNode.parentNode;\n marginLeft = parentNode.style.marginLeft;\n }\n parentNodeLeft = parentNode.getBoundingClientRect().left;\n }\n }\n var liPos = li.getBoundingClientRect();\n var left = liPos.right + window.scrollX;\n var top = liPos.top + window.scrollY;\n if (gridPos.right < (left + ul.offsetWidth)) {\n if ((liPos.left - ul.offsetWidth) > gridPos.left) {\n left = (liPos.left - ul.offsetWidth);\n }\n else {\n left -= (left + ul.offsetWidth) - gridPos.right;\n }\n }\n else {\n if (!isNullOrUndefined(paddingTop) && !isNullOrUndefined(paddingLeft)) {\n left = Math.abs(liPos.right - gridPos.left);\n top = Math.abs(liPos.top - gridPos.top);\n }\n }\n if (!isNullOrUndefined(paddingTop) && !isNullOrUndefined(paddingLeft)) {\n ul.style.top = typeof (parseInt(marginTop)) === \"string\" ? (top + paddingTop + parseInt(marginTop)) + 'px' : (top + paddingTop) + 'px';\n ul.style.left = typeof (parseInt(marginLeft)) === \"string\" ? (left + paddingLeft + parseInt(marginLeft) + 8) + 'px' : (left + paddingLeft) + 'px';\n }\n else {\n ul.style.top = top + 'px';\n ul.style.left = left + 'px';\n }\n };\n Filter.prototype.updateFilterMenuPosition = function (element, args) {\n addClass([element], 'e-gantt');\n document.querySelector('#' + this.parent.controlId).appendChild(element);\n var targetElement;\n if (this.parent.showColumnMenu) {\n targetElement = document.querySelector('#treeGrid' + this.parent.controlId + '_gridcontrol_colmenu_Filter');\n element.style.zIndex = targetElement.parentElement.style.zIndex;\n if (this.parent.treeGrid.filterSettings.type === 'Menu') {\n this.setPosition(targetElement, getValue('filterModel.dlgObj.element', args));\n }\n else {\n this.setPosition(targetElement, getValue('filterModel.dialogObj.element', args));\n }\n }\n else {\n targetElement = this.parent.treeGrid.grid.getColumnHeaderByField(args.columnName).querySelector('.e-filtermenudiv');\n if (this.parent.treeGrid.filterSettings.type === 'Menu') {\n getFilterMenuPostion(targetElement, getValue('filterModel.dlgObj', args));\n }\n else {\n getFilterMenuPostion(targetElement, getValue('filterModel.dialogObj', args));\n }\n }\n if (this.parent.treeGrid.filterSettings.type === 'Menu') {\n element.querySelector('.e-valid-input').focus();\n }\n if (this.parent.treeGrid.filterSettings.type === 'Excel') {\n var inputElement = document.querySelector('.e-searchinput');\n inputElement.focus();\n }\n };\n Filter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateModel', this.updateModel);\n this.parent.off('actionBegin', this.actionBegin);\n this.parent.off('actionComplete', this.actionComplete);\n this.parent.off('columnMenuOpen', this.columnMenuOpen);\n };\n /**\n * This method is used to destroy the filter module. When called, it performs any necessary cleanup operations related to the filter module.\n *\n * @returns {void} .\n */\n Filter.prototype.destroy = function () {\n this.removeEventListener();\n this.unWireEvents();\n };\n return Filter;\n}());\nexport { Filter };\n","import { TreeGrid, Sort as TreeGrdSort } from '@syncfusion/ej2-treegrid';\nimport { getActualProperties } from '@syncfusion/ej2-grids';\n/**\n * The Sort module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n function Sort(gantt) {\n this.parent = gantt;\n TreeGrid.Inject(TreeGrdSort);\n this.parent.treeGrid.allowSorting = this.parent.allowSorting;\n this.parent.treeGrid.sortSettings = getActualProperties(this.parent.sortSettings);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} .\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n /**\n * @returns {void} .\n * @private\n */\n Sort.prototype.addEventListener = function () {\n this.parent.on('updateModel', this.updateModel, this);\n };\n /**\n *\n * @returns {void} .\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateModel', this.updateModel);\n };\n /**\n * Destroys the Sorting of TreeGrid.\n *\n * @returns {void} .\n * @private\n */\n Sort.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Sort a column with given options.\n *\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sort.\n * @param {boolean} isMultiSort - Defines whether the previously sorted columns are to be maintained.\n * @returns {void} .\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n this.parent.treeGrid.sortByColumn(columnName, direction, isMultiSort);\n };\n /**\n * Method to clear all sorted columns.\n *\n * @returns {void} .\n */\n Sort.prototype.clearSorting = function () {\n this.parent.treeGrid.clearSorting();\n };\n /**\n * The function used to update sortSettings of TreeGrid.\n *\n * @returns {void} .\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n this.parent.sortSettings = this.parent.treeGrid.sortSettings;\n };\n /**\n * To clear sorting for specific column.\n *\n * @param {string} columnName - Defines the sorted column name to remove.\n * @returns {void} .\n */\n Sort.prototype.removeSortColumn = function (columnName) {\n this.parent.treeGrid.grid.removeSortColumn(columnName);\n };\n return Sort;\n}());\nexport { Sort };\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 { TreeGrid, Resize as TreeGridResize } from '@syncfusion/ej2-treegrid';\n/**\n * Column resize action related code goes here\n */\nvar Resize = /** @class */ (function () {\n function Resize(gantt) {\n this.parent = gantt;\n TreeGrid.Inject(TreeGridResize);\n this.parent.treeGrid.allowResizing = this.parent.allowResizing;\n this.bindEvents();\n }\n /**\n * Get module name\n *\n * @returns {void} .\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n /**\n * To bind resize events.\n *\n * @returns {void} .\n * @private\n */\n Resize.prototype.bindEvents = function () {\n var _this = this;\n this.parent.treeGrid.resizeStart = function (args) {\n if (_this.parent.undoRedoModule && _this.parent['isUndoRedoItemPresent']('ColumnResize')) {\n _this.parent.undoRedoModule['createUndoCollection']();\n var details = {};\n details['action'] = 'ColumnResize';\n details['resizedColumn'] = __assign({}, args.column);\n _this.parent.undoRedoModule['getUndoCollection'][_this.parent.undoRedoModule['getUndoCollection'].length - 1] = details;\n }\n _this.parent.trigger('resizeStart', args);\n };\n this.parent.treeGrid.resizing = function (args) {\n _this.parent.trigger('resizing', args);\n };\n this.parent.treeGrid.resizeStop = function (args) {\n _this.parent.trigger('resizeStop', args);\n };\n };\n /**\n * To destroy the column-resizer.\n *\n * @returns {void} .\n * @private\n */\n Resize.prototype.destroy = function () {\n // Destroy Method\n };\n return Resize;\n}());\nexport { Resize };\n","import { DropDownList } from '@syncfusion/ej2-react-dropdowns';\r\nimport { ColumnDirective, ColumnMenu, ColumnsDirective, DayMarkers, Edit, EventMarkerDirective, EventMarkersDirective, Filter, GanttComponent, HolidayDirective, HolidaysDirective, Inject, Resize, Selection, Sort, Toolbar } from '@syncfusion/ej2-react-gantt';\r\nimport * as React from 'react';\r\nimport { gridLineTypeToString } from './types/GanttDiagramGridLineType';\r\nconst GanttDiagram = (props) => {\r\n var _a, _b, _c;\r\n const projectStartDate = props.projectStartDate.toDate();\r\n const projectEndDate = props.projectEndDate.toDate();\r\n const toolbarOptions = [\r\n {\r\n type: \"Input\",\r\n align: \"Right\",\r\n tooltipText: \"Change View\",\r\n template: new DropDownList({\r\n dataSource: [\r\n { ID: 'Default', Text: 'Default' },\r\n { ID: 'Grid', Text: 'Grid' },\r\n { ID: 'Chart', Text: 'Chart' }\r\n ],\r\n width: \"85px\",\r\n placeholder: \"View\",\r\n change: (args) => {\r\n let gantt = document.getElementsByClassName('e-gantt')[0].ej2_instances[0];\r\n if (args.value == 'Grid') {\r\n gantt.setSplitterPosition('100%', 'position');\r\n }\r\n else if (args.value == 'Chart') {\r\n gantt.setSplitterPosition('0%', 'position');\r\n }\r\n else {\r\n gantt.setSplitterPosition('57%', 'position');\r\n }\r\n },\r\n fields: { text: 'Text', value: 'ID' }\r\n })\r\n }\r\n ];\r\n return React.createElement(\"div\", { style: {\r\n height: '600px',\r\n width: '100%',\r\n overflowY: 'auto'\r\n } },\r\n React.createElement(GanttComponent, { id: 'Overview', dataSource: props.data, treeColumnIndex: 1, allowSelection: true, highlightWeekends: true, projectStartDate: projectStartDate, projectEndDate: projectEndDate, taskFields: {\r\n id: 'taskId',\r\n name: 'taskName',\r\n startDate: 'startDate',\r\n endDate: 'endDate',\r\n duration: 'duration',\r\n progress: 'progress',\r\n dependency: 'predecessor',\r\n parentID: 'parentId',\r\n resourceInfo: 'assignee'\r\n }, timelineSettings: {\r\n showTooltip: true,\r\n topTier: {\r\n unit: 'Month',\r\n format: 'MMM yyyy'\r\n },\r\n bottomTier: {\r\n unit: 'Day',\r\n count: 4,\r\n format: 'dd'\r\n },\r\n }, labelSettings: {\r\n taskLabel: '${progress}%',\r\n rightLabel: 'assignee'\r\n }, splitterSettings: { position: \"57%\" }, height: '100%', gridLines: gridLineTypeToString(props.gridLines), allowFiltering: props.allowFiltering, showColumnMenu: props.showColumnMenu, allowSorting: props.allowSorting, allowResizing: props.allowResizing, toolbar: toolbarOptions, resourceFields: { id: 'resourceId', name: 'resourceName' }, resources: (_a = props.resources) !== null && _a !== void 0 ? _a : [] },\r\n React.createElement(ColumnsDirective, null,\r\n React.createElement(ColumnDirective, { field: 'TaskId', headerText: 'ID', width: '180', visible: false }),\r\n React.createElement(ColumnDirective, { field: 'TaskName', headerText: 'Descripci\\u00F3n', width: '400', minWidth: 350 }),\r\n React.createElement(ColumnDirective, { field: 'Status', headerText: 'Estado', minWidth: \"100\", width: \"120\" })),\r\n ((_b = props.markers) === null || _b === void 0 ? void 0 : _b.length) > 0 && React.createElement(EventMarkersDirective, null, props.markers.map((marker, index) => React.createElement(EventMarkerDirective, { key: index, day: marker.date, label: marker.label }))),\r\n ((_c = props.holidays) === null || _c === void 0 ? void 0 : _c.length) > 0 && React.createElement(HolidaysDirective, null, props.holidays.map((holiday, index) => React.createElement(HolidayDirective, { key: index, from: holiday.from, to: holiday.to, label: holiday.label }))),\r\n React.createElement(Inject, { services: [Edit, Selection, Toolbar, DayMarkers, ColumnMenu, Filter, Sort, Resize] })));\r\n};\r\nexport default GanttDiagram;\r\n","import { Label } from '@fluentui/react';\r\nimport DateOnly from '@ioip/core/lib/datetime/DateOnly';\r\nimport React, { useEffect } from 'react';\r\nimport GanttDiagram from './GanttDiagram';\r\nimport { GanttDiagramGridLineType } from './types/GanttDiagramGridLineType';\r\nlet overviewData = [\r\n {\r\n taskId: '1',\r\n taskName: 'Item 1',\r\n startDate: new Date('2021/12/20'),\r\n endDate: new Date('2022/04/04'),\r\n duration: 2,\r\n work: 2,\r\n progress: 80,\r\n status: 'In progress',\r\n },\r\n {\r\n taskId: '2',\r\n taskName: 'Item 1.1',\r\n parentId: 1,\r\n },\r\n {\r\n taskId: '3',\r\n taskName: 'Item 1.1.1',\r\n parentId: 2,\r\n },\r\n {\r\n taskId: '4',\r\n taskName: 'Task 1',\r\n startDate: new Date('2021/12/20'),\r\n endDate: new Date('2022/02/20'),\r\n duration: 44,\r\n work: 45,\r\n progress: 70,\r\n parentId: 3,\r\n }\r\n];\r\nexport const UXGanttDiagram = (props) => {\r\n var _a, _b, _c, _d;\r\n const field = props.field;\r\n const isRuntime = field.isRuntime;\r\n useEffect(() => {\r\n if (isRuntime) {\r\n }\r\n }, []);\r\n if (!isRuntime)\r\n return React.createElement(\"div\", { style: {\r\n \"display\": \"flex\",\r\n \"justifyContent\": \"center\",\r\n \"alignItems\": \"center\",\r\n \"height\": \"100px\",\r\n \"border\": \"2px dashed rgb(0, 120, 212)\",\r\n \"marginTop\": \"5px\"\r\n } },\r\n React.createElement(Label, null, \"Gantt Diagram\"));\r\n const value = field.value;\r\n const resources = (_a = value === null || value === void 0 ? void 0 : value.resources) !== null && _a !== void 0 ? _a : [];\r\n const items = (_c = (_b = value === null || value === void 0 ? void 0 : value.items) === null || _b === void 0 ? void 0 : _b.map(x => {\r\n const item = Object.assign({}, x);\r\n if (item.parentId === 0)\r\n delete item.parentId;\r\n if (!(x.startDate instanceof Date)) {\r\n item.startDate = new DateOnly(x.startDate).toDate();\r\n }\r\n if (!(x.endDate instanceof Date)) {\r\n item.endDate = new DateOnly(x.endDate).toDate();\r\n }\r\n return item;\r\n })) !== null && _c !== void 0 ? _c : [];\r\n const markers = ((_d = value === null || value === void 0 ? void 0 : value.markers) !== null && _d !== void 0 ? _d : []).map(x => {\r\n return {\r\n date: new DateOnly(x.date).toDate(),\r\n label: x.label\r\n };\r\n });\r\n const projectStartDate = new DateOnly('01/01/2024');\r\n const projectEndDate = new DateOnly('31/12/2024');\r\n return React.createElement(GanttDiagram, { resources: resources, markers: markers, projectStartDate: projectStartDate, projectEndDate: projectEndDate, gridLines: GanttDiagramGridLineType.both, data: items });\r\n};\r\n","import React from 'react';\r\nexport const HorizontalLineComponent = (props) => {\r\n return React.createElement(\"hr\", null);\r\n};\r\n","import React from 'react';\r\nexport const ImageComponent = (props) => {\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(\"img\", { src: props.field.url }));\r\n};\r\n","import { List } from \"linq.ts\";\r\nexport var TextAlign;\r\n(function (TextAlign) {\r\n TextAlign[TextAlign[\"left\"] = 0] = \"left\";\r\n TextAlign[TextAlign[\"center\"] = 1] = \"center\";\r\n TextAlign[TextAlign[\"right\"] = 2] = \"right\";\r\n})(TextAlign || (TextAlign = {}));\r\nexport const TextAlignsOptions = new List([\r\n { key: TextAlign.left, text: TextAlign[TextAlign.left] },\r\n { key: TextAlign.center, text: TextAlign[TextAlign.center] },\r\n { key: TextAlign.right, text: TextAlign[TextAlign.right] }\r\n]).OrderBy(o => o.text).ToArray();\r\n","import { FontSizes, FontWeights, Label, useTheme } from '@fluentui/react';\r\nimport { XColor, XFontSize, XFontWeight, isNullOrEmpty } from '@ioip/core/lib';\r\nimport React from 'react';\r\nimport { CSSOverFlow } from '../types/CSSOverFlow';\r\nimport { TextAlign } from '../types/TextAlign';\r\nexport const XLabel = (props) => {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;\r\n const theme = useTheme();\r\n const field = props.field;\r\n const label = (_a = field.label) !== null && _a !== void 0 ? _a : '';\r\n const fontSize = FontSizes[XFontSize[(_b = field.fontSize) !== null && _b !== void 0 ? _b : (_c = props.defaults) === null || _c === void 0 ? void 0 : _c.fontSize]];\r\n const fontWeight = FontWeights[XFontWeight[(_d = field.fontWeight) !== null && _d !== void 0 ? _d : (_e = props.defaults) === null || _e === void 0 ? void 0 : _e.fontWeight]];\r\n const color = theme.palette[XColor[(_f = field.color) !== null && _f !== void 0 ? _f : (_g = props.defaults) === null || _g === void 0 ? void 0 : _g.color]];\r\n const customStyles = field.overflow != null || !isNullOrEmpty(field.height);\r\n let cssOverflow = 'auto';\r\n switch (field.overflow) {\r\n case CSSOverFlow.auto:\r\n cssOverflow = \"auto\";\r\n break;\r\n case CSSOverFlow.hidden:\r\n cssOverflow = \"hidden\";\r\n break;\r\n case CSSOverFlow.scroll:\r\n cssOverflow = \"scroll\";\r\n break;\r\n case CSSOverFlow.visible:\r\n default:\r\n cssOverflow = \"visible\";\r\n break;\r\n }\r\n const margin = (_h = field.margin) !== null && _h !== void 0 ? _h : (_j = props.defaults) === null || _j === void 0 ? void 0 : _j.margin;\r\n const padding = (_k = field.padding) !== null && _k !== void 0 ? _k : (_l = props.defaults) === null || _l === void 0 ? void 0 : _l.padding;\r\n const border = (_m = field.border) !== null && _m !== void 0 ? _m : (_o = props.defaults) === null || _o === void 0 ? void 0 : _o.border;\r\n const textAlign = (_p = field.textAlign) !== null && _p !== void 0 ? _p : (_q = props.defaults) === null || _q === void 0 ? void 0 : _q.textAlign;\r\n return React.createElement(\"div\", { style: {\r\n height: customStyles ? field.height : undefined,\r\n overflow: customStyles ? cssOverflow : undefined,\r\n margin,\r\n padding,\r\n textAlign: textAlign === TextAlign.left\r\n ? 'left'\r\n : textAlign === TextAlign.right\r\n ? 'right'\r\n : textAlign === TextAlign.center\r\n ? 'center'\r\n : undefined,\r\n border\r\n } }, label.split('\\n').map((x, i) => React.createElement(Label, { styles: {\r\n root: {\r\n fontSize: fontSize,\r\n lineHeight: fontSize,\r\n fontWeight: fontWeight,\r\n color: color,\r\n padding: 0,\r\n marginTop: isNullOrEmpty(x) ? 5 : 0,\r\n }\r\n }, key: i }, x)));\r\n};\r\n","import { XNumberField } from '@ioip/core/lib';\r\nimport React from 'react';\r\nexport const NumberFieldComponent = (props) => {\r\n const field = props.field;\r\n const label = field.label;\r\n const placeholder = field.placeholder;\r\n const disabled = field.readonly || field.disabled;\r\n const required = field.required;\r\n const multiline = field.multiline;\r\n const maxLength = field.maxLength;\r\n const value = field.value;\r\n return React.createElement(XNumberField, { label: label || '', placeholder: placeholder || '', onChanged: (e) => field.value = e, required: required, disabled: disabled || false, readonly: disabled, multiline: multiline || false, maxLength: maxLength > 0 ? maxLength : null, value: value, errorMessage: props.field.errorMessage || '' });\r\n};\r\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","import { Checkbox, ComboBox, Label, Panel, PanelType, PrimaryButton, SelectionMode, TextField } from '@fluentui/react';\r\nimport { useArchivox } from '@ioip/archivox/lib';\r\nimport { Column, DataTable, Grid, Row, StandarDataTable, StandarPanel, Subtitle, Title, isNullOrEmpty, paginateDataAsync, validateObject, validator } from '@ioip/core/lib';\r\nimport { StandarDataTablePage } from \"@ioip/core/lib/components/StandarDataTablePage\";\r\nimport { useParams } from 'react-router-dom';\r\nimport { useProcesox } from '../../../providers';\r\nimport React from 'react';\r\nimport { useHttpClient } from '@ioip/core/lib/providers/RootApp';\r\nexport class ReactRenderer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n jsCode: props.jsCode,\r\n error: false,\r\n errorMessages: '',\r\n errorInfo: null,\r\n compiledComponent: null\r\n };\r\n }\r\n componentDidMount() {\r\n this.compileFunction();\r\n }\r\n compileFunction() {\r\n var _a, _b;\r\n try {\r\n const jsCode = this.state.jsCode;\r\n if (isNullOrEmpty(jsCode))\r\n return null;\r\n const $$ = (type, props, ...children) => {\r\n const element = React.createElement(type, props, ...children);\r\n return element;\r\n };\r\n const code = `\r\n ${jsCode}\r\n return $$(Main, null);\r\n `;\r\n const unathorized_variables = [\r\n 'window', 'document', 'navigator', 'location', 'history', 'localStorage', 'sessionStorage', 'cookie', 'XMLHttpRequest', 'fetch',\r\n 'FileReader', 'WebSocket', 'IndexedDB', 'performance', 'screen', 'addEventListener', 'alert', 'removeEventListener',\r\n 'setTimeout', 'clearTimeout', 'setInterval', 'clearInterval', 'requestAnimationFrame', 'cancelAnimationFrame', 'requestIdleCallback',\r\n 'cancelIdleCallback', 'Promise', 'CustomEvent', 'Event', 'FormData', 'URL', 'URLSearchParams', 'Headers', 'AbortController', 'AbortSignal',\r\n 'Window', 'Document', 'Navigator'\r\n ];\r\n const types = {\r\n React: React,\r\n Grid: Grid,\r\n Row: Row,\r\n Column: Column,\r\n TextField: TextField,\r\n Checkbox: Checkbox,\r\n ComboBox: ComboBox,\r\n StandarDataTable: StandarDataTable,\r\n Label: Label,\r\n Title: Title,\r\n Subtitle: Subtitle,\r\n ModernDataTable: StandarDataTablePage,\r\n DataTable: DataTable,\r\n StandarPanel: StandarPanel,\r\n PrimaryButton: PrimaryButton,\r\n Panel: Panel,\r\n PanelType: PanelType,\r\n SelectionMode: SelectionMode,\r\n paginateDataAsync: paginateDataAsync,\r\n useHttpClient: useHttpClient,\r\n useArchivox: useArchivox,\r\n useProcesox: useProcesox,\r\n validateObject: validateObject,\r\n validator: validator,\r\n useParams,\r\n isNullOrEmpty\r\n };\r\n const keys = Object.keys(types);\r\n const componentNames = [\r\n ...unathorized_variables,\r\n ...keys,\r\n '$$',\r\n ...((_a = this.props.types) === null || _a === void 0 ? void 0 : _a.map(x => x.name)) || []\r\n ];\r\n const components = [\r\n ...unathorized_variables.map(x => null),\r\n ...keys.map(x => types[x]),\r\n $$,\r\n ...((_b = this.props.types) === null || _b === void 0 ? void 0 : _b.map(x => x.component)) || []\r\n ];\r\n try {\r\n const fn = new Function(...componentNames, code).bind({}, ...components);\r\n const compiledComponent = fn();\r\n this.setState({ compiledComponent: compiledComponent });\r\n }\r\n catch (error) {\r\n console.log('error');\r\n }\r\n }\r\n catch (error) {\r\n this.setState({\r\n error: true,\r\n errorMessages: error.message,\r\n errorInfo: error\r\n });\r\n }\r\n }\r\n render() {\r\n var _a, _b;\r\n if (this.state.error)\r\n return React.createElement(\"div\", { style: { color: 'red' } },\r\n React.createElement(\"div\", { style: { fontWeight: 'bold' } },\r\n React.createElement(\"p\", null, \"Error rendering component\")),\r\n React.createElement(\"div\", null, this.state.errorMessages),\r\n React.createElement(\"div\", null, (_b = (_a = this.state.errorInfo) === null || _a === void 0 ? void 0 : _a.componentStack) === null || _b === void 0 ? void 0 : _b.split('\\n').map(x => React.createElement(\"div\", null, x))));\r\n if (this.state.compiledComponent == null)\r\n return React.createElement(React.Fragment, null);\r\n return React.createElement(React.Fragment, null, this.state.compiledComponent);\r\n }\r\n componentDidCatch(error, errorInfo) {\r\n this.setState({\r\n error: true,\r\n errorMessages: error.message,\r\n errorInfo: errorInfo\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport { ReactRenderer } from '../../portal/forms/components/ReactRenderer';\r\nexport const XReactComponent = (props) => {\r\n const field = props.field;\r\n return React.createElement(ReactRenderer, { jsCode: field.jsCode, types: [] });\r\n};\r\n","import React from 'react';\r\nimport { Row } from '@ioip/core/lib/components';\r\nimport { UXField } from '../components/UXField';\r\nexport const RowComponent = (props) => {\r\n var _a;\r\n const children = (_a = props.field.visibleChildren) === null || _a === void 0 ? void 0 : _a.orderBy(x => x.order).toArray();\r\n if (children.length == 0)\r\n return React.createElement(React.Fragment, null);\r\n return React.createElement(Row, null, children.map(f => React.createElement(UXField, Object.assign({}, props, { key: f.id, field: f }))));\r\n};\r\n","import { XColor } from '@ioip/core/lib';\r\nimport { XFontSize } from '@ioip/core/lib';\r\nimport { XFontWeight } from '@ioip/core/lib';\r\nimport React from 'react';\r\nimport { XLabel } from '../Label/XLabel';\r\nexport const XSubtitle = (props) => {\r\n return React.createElement(XLabel, { field: props.field, defaults: {\r\n fontSize: XFontSize.mediumPlus,\r\n fontWeight: XFontWeight.semibold,\r\n color: XColor.black,\r\n margin: '8px 0 0 0',\r\n } });\r\n};\r\n","import { XTextField } from '@ioip/core/lib';\r\nimport { useForceUpdate } from '@ioip/core/lib/hooks/useForceState';\r\nimport React, { useEffect, useState } from 'react';\r\nexport const TextFieldComponent = (props) => {\r\n const field = props.field;\r\n const forceUpdate = useForceUpdate();\r\n const [value, setValue] = useState(field.value);\r\n const label = field.label;\r\n const placeholder = field.placeholder;\r\n const disabled = field.readonly || field.disabled;\r\n const required = field.required;\r\n const multiline = field.multiline;\r\n const maxLength = field.maxLength;\r\n const isRuntime = field.isRuntime;\r\n useEffect(function componentDidMount() {\r\n const onUpdated = () => forceUpdate();\r\n if (isRuntime)\r\n props.field.subscribe(onUpdated);\r\n return () => {\r\n if (isRuntime)\r\n props.field.unsubscribe(onUpdated);\r\n };\r\n }, []);\r\n return React.createElement(XTextField, { label: label || '', placeholder: placeholder || '', onChange: x => setValue(x), required: required, disabled: disabled || false, readonly: disabled, multiline: multiline || false, maxLength: maxLength > 0 ? maxLength : null, value: value, styles: {\r\n field: {\r\n height: field.height,\r\n }\r\n }, errorMessage: props.field.errorMessage || '', onBlur: () => field.value = value });\r\n};\r\n","import { Icon } from '@fluentui/react';\r\nimport { XTextField, XTimePicker } from '@ioip/core/lib';\r\nimport React from 'react';\r\nexport const TimePickerComponent = (props) => {\r\n var _a;\r\n const field = props.field;\r\n const label = field.label;\r\n const placeholder = field.placeholder;\r\n const disabled = field.readonly || field.disabled;\r\n const required = field.required;\r\n const value = ((_a = props.field.value) === null || _a === void 0 ? void 0 : _a.toString()) || '00:00:00';\r\n return props.field.form == null\r\n ? React.createElement(XTextField, { label: label || placeholder, required: required || false, readonly: true, value: '00:00:00 am', styles: { suffix: { backgroundColor: 'transparent' } }, onRenderSuffix: () => React.createElement(Icon, { iconName: 'Clock' }) })\r\n : React.createElement(XTimePicker, { label: label || placeholder, placeholder: placeholder || '', onChange: value => field.value = value || '00:00:00', required: required || false, disabled: disabled, value: value, errorMessage: props.field.errorMessage || '' });\r\n};\r\n","import React from 'react';\r\nimport { XLabel } from '../Label/XLabel';\r\nimport { XFontSize } from '@ioip/core/lib';\r\nimport { XFontWeight } from '@ioip/core/lib';\r\nimport { XColor } from '@ioip/core/lib';\r\nexport const XTitle = (props) => {\r\n return React.createElement(XLabel, { field: props.field, defaults: {\r\n fontSize: XFontSize.mediumPlus,\r\n fontWeight: XFontWeight.semibold,\r\n color: XColor.black,\r\n margin: '8px 0 0 0',\r\n } });\r\n};\r\n","import { useArchivox, UserSelector } from '@ioip/archivox/lib';\r\nimport { XTextField } from '@ioip/core/lib';\r\nimport { useForceUpdate } from '@ioip/core/lib/hooks/useForceState';\r\nimport React, { useEffect, useState } from 'react';\r\nexport const UserSelectorComponent = (props) => {\r\n var _a, _b;\r\n const field = props.field;\r\n const forceUpdate = useForceUpdate();\r\n const [state, setState] = useState({ options: [], isLoading: true });\r\n const [isArchivoxLoading, archivox] = useArchivox({ users: field.isRuntime, sections: field.isRuntime, trdVersions: field.isRuntime });\r\n const label = field.label;\r\n const readonly = field.readonly;\r\n const disabled = readonly || field.disabled;\r\n const required = field.required;\r\n const isRuntime = field.isRuntime;\r\n useEffect(() => {\r\n if (field.datasource != null) {\r\n setState({ isLoading: false, options: field.asFluentUI() });\r\n }\r\n const onUpdated = () => forceUpdate();\r\n if (isRuntime)\r\n props.field.subscribe(onUpdated);\r\n return () => {\r\n if (isRuntime)\r\n props.field.unsubscribe(onUpdated);\r\n };\r\n }, []);\r\n if (!isRuntime)\r\n return React.createElement(XTextField, { readonly: true, label: label || '', value: 'User Selector' });\r\n if (state.isLoading || isArchivoxLoading)\r\n return React.createElement(XTextField, { readonly: true, label: label || '', value: 'Loading combobox...' });\r\n let users = (_a = archivox.users.toArray()) !== null && _a !== void 0 ? _a : [];\r\n if (field.showOnlyActiveItems)\r\n users = users.filter(u => u.enabled);\r\n if (readonly) {\r\n const text = (_b = state.options.find(o => o.key === props.field.value)) === null || _b === void 0 ? void 0 : _b.text;\r\n return React.createElement(XTextField, { label: label || '', required: required || false, disabled: true, readonly: true, value: text, errorMessage: props.field.errorMessage || '' });\r\n }\r\n return React.createElement(UserSelector, { selectedKey: props.field.value, label: label || '', disabled: disabled, options: users, onChanged: value => props.field.value = value, required: required || false, errorMessage: props.field.errorMessage || '' });\r\n};\r\n","import { EmptyColumn } from '@ioip/core/lib/defaults';\r\nimport React from 'react';\r\nexport const SearchableComboBoxComponent = (props) => {\r\n var _a;\r\n const field = props.field;\r\n const label = field.label;\r\n const disabled = field.Disabled;\r\n const readonly = field.Readonly;\r\n const required = field.Required;\r\n const keyBinding = field.KeyBinding;\r\n const textBinding = field.TextBinding;\r\n const options = ((_a = field.DataSourceItems) === null || _a === void 0 ? void 0 : _a.ToArray()) || [];\r\n const columns = field.Columns.Where(x => x.Visible).Select(x => x.GetAsFluentUi()).ToArray();\r\n columns.push(EmptyColumn);\r\n const onSearch = (keyword, item) => {\r\n let found = false;\r\n for (const key in item) {\r\n if (Object.prototype.hasOwnProperty.call(item, key)) {\r\n const element = item[key];\r\n if (typeof element === 'string') {\r\n found = element.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, '').toLowerCase().includes(keyword);\r\n }\r\n if (typeof element === 'number') {\r\n found = element.toString().includes(keyword);\r\n }\r\n }\r\n if (found) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n return React.createElement(\"div\", null, \"Revisar\");\r\n};\r\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _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}\n\nexport { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _defineProperty as defineProperty, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _objectSpread2 as objectSpread2, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _slicedToArray as slicedToArray, _unsupportedIterableToArray as unsupportedIterableToArray };\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n}\n\nfunction curry(fn) {\n return function curried() {\n var _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len3 = arguments.length, nextArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n nextArgs[_key3] = arguments[_key3];\n }\n\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nfunction isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nfunction isEmpty(obj) {\n return !Object.keys(obj).length;\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nfunction hasOwnProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nfunction validateChanges(initial, changes) {\n if (!isObject(changes)) errorHandler('changeType');\n if (Object.keys(changes).some(function (field) {\n return !hasOwnProperty(initial, field);\n })) errorHandler('changeField');\n return changes;\n}\n\nfunction validateSelector(selector) {\n if (!isFunction(selector)) errorHandler('selectorType');\n}\n\nfunction validateHandler(handler) {\n if (!(isFunction(handler) || isObject(handler))) errorHandler('handlerType');\n if (isObject(handler) && Object.values(handler).some(function (_handler) {\n return !isFunction(_handler);\n })) errorHandler('handlersType');\n}\n\nfunction validateInitial(initial) {\n if (!initial) errorHandler('initialIsRequired');\n if (!isObject(initial)) errorHandler('initialType');\n if (isEmpty(initial)) errorHandler('initialContent');\n}\n\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\n\nvar errorMessages = {\n initialIsRequired: 'initial state is required',\n initialType: 'initial state should be an object',\n initialContent: 'initial state shouldn\\'t be an empty object',\n handlerType: 'handler should be an object or a function',\n handlersType: 'all handlers should be a functions',\n selectorType: 'selector should be a function',\n changeType: 'provided value of changes should be an object',\n changeField: 'it seams you want to change a field in the state which is not specified in the \"initial\" state',\n \"default\": 'an unknown error accured in `state-local` package'\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n changes: validateChanges,\n selector: validateSelector,\n handler: validateHandler,\n initial: validateInitial\n};\n\nfunction create(initial) {\n var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n validators.initial(initial);\n validators.handler(handler);\n var state = {\n current: initial\n };\n var didUpdate = curry(didStateUpdate)(state, handler);\n var update = curry(updateState)(state);\n var validate = curry(validators.changes)(initial);\n var getChanges = curry(extractChanges)(state);\n\n function getState() {\n var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (state) {\n return state;\n };\n validators.selector(selector);\n return selector(state.current);\n }\n\n function setState(causedChanges) {\n compose(didUpdate, update, validate, getChanges)(causedChanges);\n }\n\n return [getState, setState];\n}\n\nfunction extractChanges(state, causedChanges) {\n return isFunction(causedChanges) ? causedChanges(state.current) : causedChanges;\n}\n\nfunction updateState(state, changes) {\n state.current = _objectSpread2(_objectSpread2({}, state.current), changes);\n return changes;\n}\n\nfunction didStateUpdate(state, handler, changes) {\n isFunction(handler) ? handler(state.current) : Object.keys(changes).forEach(function (field) {\n var _handler$field;\n\n return (_handler$field = handler[field]) === null || _handler$field === void 0 ? void 0 : _handler$field.call(handler, state.current[field]);\n });\n return changes;\n}\n\nvar index = {\n create: create\n};\n\nexport default index;\n","var config = {\n paths: {\n vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.36.1/min/vs'\n }\n};\n\nexport default config;\n","function curry(fn) {\n return function curried() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len2 = arguments.length, nextArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n nextArgs[_key2] = arguments[_key2];\n }\n\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nexport default curry;\n","function isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nexport default isObject;\n","import curry from '../utils/curry.js';\nimport isObject from '../utils/isObject.js';\n\n/**\n * validates the configuration object and informs about deprecation\n * @param {Object} config - the configuration object \n * @return {Object} config - the validated configuration object\n */\n\nfunction validateConfig(config) {\n if (!config) errorHandler('configIsRequired');\n if (!isObject(config)) errorHandler('configType');\n\n if (config.urls) {\n informAboutDeprecation();\n return {\n paths: {\n vs: config.urls.monacoBase\n }\n };\n }\n\n return config;\n}\n/**\n * logs deprecation message\n */\n\n\nfunction informAboutDeprecation() {\n console.warn(errorMessages.deprecation);\n}\n\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\n\nvar errorMessages = {\n configIsRequired: 'the configuration object is required',\n configType: 'the configuration object should be an object',\n \"default\": 'an unknown error accured in `@monaco-editor/loader` package',\n deprecation: \"Deprecation warning!\\n You are using deprecated way of configuration.\\n\\n Instead of using\\n monaco.config({ urls: { monacoBase: '...' } })\\n use\\n monaco.config({ paths: { vs: '...' } })\\n\\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\\n \"\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n config: validateConfig\n};\n\nexport default validators;\nexport { errorHandler, errorMessages };\n","var compose = function compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n};\n\nexport default compose;\n","import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';\n\nfunction merge(target, source) {\n Object.keys(source).forEach(function (key) {\n if (source[key] instanceof Object) {\n if (target[key]) {\n Object.assign(source[key], merge(target[key], source[key]));\n }\n }\n });\n return _objectSpread2(_objectSpread2({}, target), source);\n}\n\nexport default merge;\n","// The source (has been changed) is https://github.com/facebook/react/issues/5465#issuecomment-157888325\nvar CANCELATION_MESSAGE = {\n type: 'cancelation',\n msg: 'operation is manually canceled'\n};\n\nfunction makeCancelable(promise) {\n var hasCanceled_ = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise.then(function (val) {\n return hasCanceled_ ? reject(CANCELATION_MESSAGE) : resolve(val);\n });\n promise[\"catch\"](reject);\n });\n return wrappedPromise.cancel = function () {\n return hasCanceled_ = true;\n }, wrappedPromise;\n}\n\nexport default makeCancelable;\nexport { CANCELATION_MESSAGE };\n","import { slicedToArray as _slicedToArray, objectWithoutProperties as _objectWithoutProperties } from '../_virtual/_rollupPluginBabelHelpers.js';\nimport state from 'state-local';\nimport config$1 from '../config/index.js';\nimport validators from '../validators/index.js';\nimport compose from '../utils/compose.js';\nimport merge from '../utils/deepMerge.js';\nimport makeCancelable from '../utils/makeCancelable.js';\n\n/** the local state of the module */\n\nvar _state$create = state.create({\n config: config$1,\n isInitialized: false,\n resolve: null,\n reject: null,\n monaco: null\n}),\n _state$create2 = _slicedToArray(_state$create, 2),\n getState = _state$create2[0],\n setState = _state$create2[1];\n/**\n * set the loader configuration\n * @param {Object} config - the configuration object\n */\n\n\nfunction config(globalConfig) {\n var _validators$config = validators.config(globalConfig),\n monaco = _validators$config.monaco,\n config = _objectWithoutProperties(_validators$config, [\"monaco\"]);\n\n setState(function (state) {\n return {\n config: merge(state.config, config),\n monaco: monaco\n };\n });\n}\n/**\n * handles the initialization of the monaco-editor\n * @return {Promise} - returns an instance of monaco (with a cancelable promise)\n */\n\n\nfunction init() {\n var state = getState(function (_ref) {\n var monaco = _ref.monaco,\n isInitialized = _ref.isInitialized,\n resolve = _ref.resolve;\n return {\n monaco: monaco,\n isInitialized: isInitialized,\n resolve: resolve\n };\n });\n\n if (!state.isInitialized) {\n setState({\n isInitialized: true\n });\n\n if (state.monaco) {\n state.resolve(state.monaco);\n return makeCancelable(wrapperPromise);\n }\n\n if (window.monaco && window.monaco.editor) {\n storeMonacoInstance(window.monaco);\n state.resolve(window.monaco);\n return makeCancelable(wrapperPromise);\n }\n\n compose(injectScripts, getMonacoLoaderScript)(configureLoader);\n }\n\n return makeCancelable(wrapperPromise);\n}\n/**\n * injects provided scripts into the document.body\n * @param {Object} script - an HTML script element\n * @return {Object} - the injected HTML script element\n */\n\n\nfunction injectScripts(script) {\n return document.body.appendChild(script);\n}\n/**\n * creates an HTML script element with/without provided src\n * @param {string} [src] - the source path of the script\n * @return {Object} - the created HTML script element\n */\n\n\nfunction createScript(src) {\n var script = document.createElement('script');\n return src && (script.src = src), script;\n}\n/**\n * creates an HTML script element with the monaco loader src\n * @return {Object} - the created HTML script element\n */\n\n\nfunction getMonacoLoaderScript(configureLoader) {\n var state = getState(function (_ref2) {\n var config = _ref2.config,\n reject = _ref2.reject;\n return {\n config: config,\n reject: reject\n };\n });\n var loaderScript = createScript(\"\".concat(state.config.paths.vs, \"/loader.js\"));\n\n loaderScript.onload = function () {\n return configureLoader();\n };\n\n loaderScript.onerror = state.reject;\n return loaderScript;\n}\n/**\n * configures the monaco loader\n */\n\n\nfunction configureLoader() {\n var state = getState(function (_ref3) {\n var config = _ref3.config,\n resolve = _ref3.resolve,\n reject = _ref3.reject;\n return {\n config: config,\n resolve: resolve,\n reject: reject\n };\n });\n var require = window.require;\n\n require.config(state.config);\n\n require(['vs/editor/editor.main'], function (monaco) {\n storeMonacoInstance(monaco);\n state.resolve(monaco);\n }, function (error) {\n state.reject(error);\n });\n}\n/**\n * store monaco instance in local state\n */\n\n\nfunction storeMonacoInstance(monaco) {\n if (!getState().monaco) {\n setState({\n monaco: monaco\n });\n }\n}\n/**\n * internal helper function\n * extracts stored monaco instance\n * @return {Object|null} - the monaco instance\n */\n\n\nfunction __getMonacoInstance() {\n return getState(function (_ref4) {\n var monaco = _ref4.monaco;\n return monaco;\n });\n}\n\nvar wrapperPromise = new Promise(function (resolve, reject) {\n return setState({\n resolve: resolve,\n reject: reject\n });\n});\nvar loader = {\n config: config,\n init: init,\n __getMonacoInstance: __getMonacoInstance\n};\n\nexport default loader;\n","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nexport { _extends as extends };\n","import React from 'react';\n\nconst loadingStyles = {\n display: 'flex',\n height: '100%',\n width: '100%',\n justifyContent: 'center',\n alignItems: 'center'\n};\n\nfunction Loading({\n content\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n style: loadingStyles\n }, content);\n}\n\nexport default Loading;\n","const styles = {\n wrapper: {\n display: 'flex',\n position: 'relative',\n textAlign: 'initial'\n },\n fullWidth: {\n width: '100%'\n },\n hide: {\n display: 'none'\n }\n};\n\nexport default styles;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { extends as _extends } from '../_virtual/_rollupPluginBabelHelpers.js';\nimport Loading from '../Loading/Loading.js';\nimport styles from './styles.js';\n\n// one of the reasons why we use a separate prop for passing ref instead of using forwardref\n\nfunction MonacoContainer({\n width,\n height,\n isEditorReady,\n loading,\n _ref,\n className,\n wrapperProps\n}) {\n return /*#__PURE__*/React.createElement(\"section\", _extends({\n style: { ...styles.wrapper,\n width,\n height\n }\n }, wrapperProps), !isEditorReady && /*#__PURE__*/React.createElement(Loading, {\n content: loading\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: _ref,\n style: { ...styles.fullWidth,\n ...(!isEditorReady && styles.hide)\n },\n className: className\n }));\n}\n\nMonacoContainer.propTypes = {\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n loading: PropTypes.oneOfType([PropTypes.element, PropTypes.string]).isRequired,\n isEditorReady: PropTypes.bool.isRequired,\n className: PropTypes.string,\n wrapperProps: PropTypes.object\n};\n\nexport default MonacoContainer;\n","import { memo } from 'react';\nimport MonacoContainer$1 from './MonacoContainer.js';\n\nvar MonacoContainer = /*#__PURE__*/memo(MonacoContainer$1);\n\nexport default MonacoContainer;\n","import { useEffect } from 'react';\n\nfunction useMount(effect) {\n useEffect(effect, []);\n}\n\nexport default useMount;\n","import { useRef, useEffect } from 'react';\n\nfunction useUpdate(effect, deps, applyChanges = true) {\n const isInitialMount = useRef(true);\n useEffect(isInitialMount.current || !applyChanges ? () => {\n isInitialMount.current = false;\n } : effect, deps);\n}\n\nexport default useUpdate;\n","function noop() {}\n\nfunction getOrCreateModel(monaco, value, language, path) {\n return getModel(monaco, path) || createModel(monaco, value, language, path);\n}\n\nfunction getModel(monaco, path) {\n return monaco.editor.getModel(createModelUri(monaco, path));\n}\n\nfunction createModel(monaco, value, language, path) {\n return monaco.editor.createModel(value, language, path && createModelUri(monaco, path));\n}\n\nfunction createModelUri(monaco, path) {\n return monaco.Uri.parse(path);\n}\n\nfunction isUndefined(input) {\n return input === undefined;\n}\n\nexport { getOrCreateModel, isUndefined, noop };\n","import loader from '@monaco-editor/loader';\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport MonacoContainer from '../MonacoContainer/index.js';\nimport useMount from '../hooks/useMount/index.js';\nimport useUpdate from '../hooks/useUpdate/index.js';\nimport { getOrCreateModel, noop } from '../utils/index.js';\n\nfunction DiffEditor({\n original,\n modified,\n language,\n originalLanguage,\n modifiedLanguage,\n\n /* === */\n originalModelPath,\n modifiedModelPath,\n keepCurrentOriginalModel,\n keepCurrentModifiedModel,\n theme,\n loading,\n options,\n\n /* === */\n height,\n width,\n className,\n wrapperProps,\n\n /* === */\n beforeMount,\n onMount\n}) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const editorRef = useRef(null);\n const monacoRef = useRef(null);\n const containerRef = useRef(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n useMount(() => {\n const cancelable = loader.init();\n cancelable.then(monaco => (monacoRef.current = monaco) && setIsMonacoMounting(false)).catch(error => (error === null || error === void 0 ? void 0 : error.type) !== 'cancelation' && console.error('Monaco initialization: error:', error));\n return () => editorRef.current ? disposeEditor() : cancelable.cancel();\n });\n useUpdate(() => {\n const modifiedEditor = editorRef.current.getModifiedEditor();\n\n if (modifiedEditor.getOption(monacoRef.current.editor.EditorOption.readOnly)) {\n modifiedEditor.setValue(modified);\n } else {\n if (modified !== modifiedEditor.getValue()) {\n modifiedEditor.executeEdits('', [{\n range: modifiedEditor.getModel().getFullModelRange(),\n text: modified,\n forceMoveMarkers: true\n }]);\n modifiedEditor.pushUndoStop();\n }\n }\n }, [modified], isEditorReady);\n useUpdate(() => {\n editorRef.current.getModel().original.setValue(original);\n }, [original], isEditorReady);\n useUpdate(() => {\n const {\n original,\n modified\n } = editorRef.current.getModel();\n monacoRef.current.editor.setModelLanguage(original, originalLanguage || language);\n monacoRef.current.editor.setModelLanguage(modified, modifiedLanguage || language);\n }, [language, originalLanguage, modifiedLanguage], isEditorReady);\n useUpdate(() => {\n monacoRef.current.editor.setTheme(theme);\n }, [theme], isEditorReady);\n useUpdate(() => {\n editorRef.current.updateOptions(options);\n }, [options], isEditorReady);\n const setModels = useCallback(() => {\n beforeMountRef.current(monacoRef.current);\n const originalModel = getOrCreateModel(monacoRef.current, original, originalLanguage || language, originalModelPath);\n const modifiedModel = getOrCreateModel(monacoRef.current, modified, modifiedLanguage || language, modifiedModelPath);\n editorRef.current.setModel({\n original: originalModel,\n modified: modifiedModel\n });\n }, [language, modified, modifiedLanguage, original, originalLanguage, originalModelPath, modifiedModelPath]);\n const createEditor = useCallback(() => {\n editorRef.current = monacoRef.current.editor.createDiffEditor(containerRef.current, {\n automaticLayout: true,\n ...options\n });\n setModels();\n monacoRef.current.editor.setTheme(theme);\n setIsEditorReady(true);\n }, [options, theme, setModels]);\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current, monacoRef.current);\n }\n }, [isEditorReady]);\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]);\n\n function disposeEditor() {\n const models = editorRef.current.getModel();\n\n if (!keepCurrentOriginalModel) {\n var _models$original;\n\n (_models$original = models.original) === null || _models$original === void 0 ? void 0 : _models$original.dispose();\n }\n\n if (!keepCurrentModifiedModel) {\n var _models$modified;\n\n (_models$modified = models.modified) === null || _models$modified === void 0 ? void 0 : _models$modified.dispose();\n }\n\n editorRef.current.dispose();\n }\n\n return /*#__PURE__*/React.createElement(MonacoContainer, {\n width: width,\n height: height,\n isEditorReady: isEditorReady,\n loading: loading,\n _ref: containerRef,\n className: className,\n wrapperProps: wrapperProps\n });\n}\n\nDiffEditor.propTypes = {\n original: PropTypes.string,\n modified: PropTypes.string,\n language: PropTypes.string,\n originalLanguage: PropTypes.string,\n modifiedLanguage: PropTypes.string,\n\n /* === */\n originalModelPath: PropTypes.string,\n modifiedModelPath: PropTypes.string,\n keepCurrentOriginalModel: PropTypes.bool,\n keepCurrentModifiedModel: PropTypes.bool,\n theme: PropTypes.string,\n loading: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n options: PropTypes.object,\n\n /* === */\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n className: PropTypes.string,\n wrapperProps: PropTypes.object,\n\n /* === */\n beforeMount: PropTypes.func,\n onMount: PropTypes.func\n};\nDiffEditor.defaultProps = {\n theme: 'light',\n loading: 'Loading...',\n options: {},\n keepCurrentOriginalModel: false,\n keepCurrentModifiedModel: false,\n\n /* === */\n width: '100%',\n height: '100%',\n wrapperProps: {},\n\n /* === */\n beforeMount: noop,\n onMount: noop\n};\n\nexport default DiffEditor;\n","import { useRef, useEffect } from 'react';\n\nfunction usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nexport default usePrevious;\n","import loader from '@monaco-editor/loader';\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport MonacoContainer from '../MonacoContainer/index.js';\nimport useMount from '../hooks/useMount/index.js';\nimport useUpdate from '../hooks/useUpdate/index.js';\nimport { getOrCreateModel, noop, isUndefined } from '../utils/index.js';\nimport usePrevious from '../hooks/usePrevious/index.js';\n\nconst viewStates = new Map();\n\nfunction Editor({\n defaultValue,\n defaultLanguage,\n defaultPath,\n value,\n language,\n path,\n\n /* === */\n theme,\n line,\n loading,\n options,\n overrideServices,\n saveViewState,\n keepCurrentModel,\n\n /* === */\n width,\n height,\n className,\n wrapperProps,\n\n /* === */\n beforeMount,\n onMount,\n onChange,\n onValidate\n}) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const monacoRef = useRef(null);\n const editorRef = useRef(null);\n const containerRef = useRef(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n const subscriptionRef = useRef(null);\n const valueRef = useRef(value);\n const previousPath = usePrevious(path);\n const preventCreation = useRef(false);\n useMount(() => {\n const cancelable = loader.init();\n cancelable.then(monaco => (monacoRef.current = monaco) && setIsMonacoMounting(false)).catch(error => (error === null || error === void 0 ? void 0 : error.type) !== 'cancelation' && console.error('Monaco initialization: error:', error));\n return () => editorRef.current ? disposeEditor() : cancelable.cancel();\n });\n useUpdate(() => {\n const model = getOrCreateModel(monacoRef.current, defaultValue || value, defaultLanguage || language, path);\n\n if (model !== editorRef.current.getModel()) {\n saveViewState && viewStates.set(previousPath, editorRef.current.saveViewState());\n editorRef.current.setModel(model);\n saveViewState && editorRef.current.restoreViewState(viewStates.get(path));\n }\n }, [path], isEditorReady);\n useUpdate(() => {\n editorRef.current.updateOptions(options);\n }, [options], isEditorReady);\n useUpdate(() => {\n if (editorRef.current.getOption(monacoRef.current.editor.EditorOption.readOnly)) {\n editorRef.current.setValue(value);\n } else {\n if (value !== editorRef.current.getValue()) {\n editorRef.current.executeEdits('', [{\n range: editorRef.current.getModel().getFullModelRange(),\n text: value,\n forceMoveMarkers: true\n }]);\n editorRef.current.pushUndoStop();\n }\n }\n }, [value], isEditorReady);\n useUpdate(() => {\n monacoRef.current.editor.setModelLanguage(editorRef.current.getModel(), language);\n }, [language], isEditorReady);\n useUpdate(() => {\n // reason for undefined check: https://github.com/suren-atoyan/monaco-react/pull/188\n if (!isUndefined(line)) {\n editorRef.current.revealLine(line);\n }\n }, [line], isEditorReady);\n useUpdate(() => {\n monacoRef.current.editor.setTheme(theme);\n }, [theme], isEditorReady);\n const createEditor = useCallback(() => {\n if (!preventCreation.current) {\n beforeMountRef.current(monacoRef.current);\n const autoCreatedModelPath = path || defaultPath;\n const defaultModel = getOrCreateModel(monacoRef.current, value || defaultValue, defaultLanguage || language, autoCreatedModelPath);\n editorRef.current = monacoRef.current.editor.create(containerRef.current, {\n model: defaultModel,\n automaticLayout: true,\n ...options\n }, overrideServices);\n saveViewState && editorRef.current.restoreViewState(viewStates.get(autoCreatedModelPath));\n monacoRef.current.editor.setTheme(theme);\n setIsEditorReady(true);\n preventCreation.current = true;\n }\n }, [defaultValue, defaultLanguage, defaultPath, value, language, path, options, overrideServices, saveViewState, theme]);\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current, monacoRef.current);\n }\n }, [isEditorReady]);\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]); // subscription\n // to avoid unnecessary updates (attach - dispose listener) in subscription\n\n valueRef.current = value; // onChange\n\n useEffect(() => {\n if (isEditorReady && onChange) {\n var _subscriptionRef$curr, _editorRef$current;\n\n (_subscriptionRef$curr = subscriptionRef.current) === null || _subscriptionRef$curr === void 0 ? void 0 : _subscriptionRef$curr.dispose();\n subscriptionRef.current = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.onDidChangeModelContent(event => {\n onChange(editorRef.current.getValue(), event);\n });\n }\n }, [isEditorReady, onChange]); // onValidate\n\n useEffect(() => {\n if (isEditorReady) {\n const changeMarkersListener = monacoRef.current.editor.onDidChangeMarkers(uris => {\n var _editorRef$current$ge;\n\n const editorUri = (_editorRef$current$ge = editorRef.current.getModel()) === null || _editorRef$current$ge === void 0 ? void 0 : _editorRef$current$ge.uri;\n\n if (editorUri) {\n const currentEditorHasMarkerChanges = uris.find(uri => uri.path === editorUri.path);\n\n if (currentEditorHasMarkerChanges) {\n const markers = monacoRef.current.editor.getModelMarkers({\n resource: editorUri\n });\n onValidate === null || onValidate === void 0 ? void 0 : onValidate(markers);\n }\n }\n });\n return () => {\n changeMarkersListener === null || changeMarkersListener === void 0 ? void 0 : changeMarkersListener.dispose();\n };\n }\n }, [isEditorReady, onValidate]);\n\n function disposeEditor() {\n var _subscriptionRef$curr2;\n\n (_subscriptionRef$curr2 = subscriptionRef.current) === null || _subscriptionRef$curr2 === void 0 ? void 0 : _subscriptionRef$curr2.dispose();\n\n if (keepCurrentModel) {\n saveViewState && viewStates.set(path, editorRef.current.saveViewState());\n } else {\n var _editorRef$current$ge2;\n\n (_editorRef$current$ge2 = editorRef.current.getModel()) === null || _editorRef$current$ge2 === void 0 ? void 0 : _editorRef$current$ge2.dispose();\n }\n\n editorRef.current.dispose();\n }\n\n return /*#__PURE__*/React.createElement(MonacoContainer, {\n width: width,\n height: height,\n isEditorReady: isEditorReady,\n loading: loading,\n _ref: containerRef,\n className: className,\n wrapperProps: wrapperProps\n });\n}\n\nEditor.propTypes = {\n defaultValue: PropTypes.string,\n defaultPath: PropTypes.string,\n defaultLanguage: PropTypes.string,\n value: PropTypes.string,\n language: PropTypes.string,\n path: PropTypes.string,\n\n /* === */\n theme: PropTypes.string,\n line: PropTypes.number,\n loading: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n options: PropTypes.object,\n overrideServices: PropTypes.object,\n saveViewState: PropTypes.bool,\n keepCurrentModel: PropTypes.bool,\n\n /* === */\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n className: PropTypes.string,\n wrapperProps: PropTypes.object,\n\n /* === */\n beforeMount: PropTypes.func,\n onMount: PropTypes.func,\n onChange: PropTypes.func,\n onValidate: PropTypes.func\n};\nEditor.defaultProps = {\n theme: 'light',\n loading: 'Loading...',\n options: {},\n overrideServices: {},\n saveViewState: true,\n keepCurrentModel: false,\n\n /* === */\n width: '100%',\n height: '100%',\n wrapperProps: {},\n\n /* === */\n beforeMount: noop,\n onMount: noop,\n onValidate: noop\n};\n\nexport default Editor;\n","import { memo } from 'react';\nimport Editor from './Editor.js';\n\nvar index = /*#__PURE__*/memo(Editor);\n\nexport default index;\n","import Editor from \"@monaco-editor/react\";\r\nimport React from 'react';\r\nexport const CodeEditor = (props) => {\r\n var _a, _b;\r\n const theme = (_a = props.theme) !== null && _a !== void 0 ? _a : 'vs-dark';\r\n return React.createElement(\"div\", { style: {\r\n height: (_b = props.height) !== null && _b !== void 0 ? _b : '200px',\r\n marginTop: '8px',\r\n border: '1px solid #333',\r\n } },\r\n React.createElement(Editor, { height: '100%', theme: theme, language: props.language || 'text', value: props.value, onChange: value => { var _a; return (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, value); }, options: {\r\n fontSize: props.fontSize || 16,\r\n codeLens: true,\r\n wordWrap: 'off',\r\n minimap: { enabled: false },\r\n scrollBeyondLastLine: false,\r\n automaticLayout: true,\r\n \"semanticHighlighting.enabled\": true,\r\n acceptSuggestionOnEnter: 'on',\r\n autoClosingBrackets: 'always',\r\n inlineSuggest: { enabled: true },\r\n readOnly: props.readOnly,\r\n } }));\r\n};\r\n","import { Callout, Link, useTheme } from '@fluentui/react';\r\nimport React, { useRef, useState } from 'react';\r\nimport { CodeEditor } from '../../portal/code-editors/CodeEditor';\r\nexport const UnknownComponent = function (props) {\r\n const theme = useTheme();\r\n const ref = useRef(null);\r\n const [showErrorDetails, setShowErrorDetails] = useState(false);\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(Link, null,\r\n \"Unknown control\",\r\n React.createElement(\"small\", { ref: ref, onClick: () => setShowErrorDetails(true) }, \" (detalle)\")),\r\n showErrorDetails && React.createElement(Callout, { onDismiss: () => setShowErrorDetails(false), styles: {\r\n root: {\r\n width: '600px',\r\n border: `2px solid ${theme.palette.themePrimary}`\r\n }\r\n }, target: ref },\r\n React.createElement(CodeEditor, { language: \"json\", value: JSON.stringify(props.schema, null, 4), onChange: () => { }, height: '350px', readOnly: true })));\r\n};\r\n","export const MAX_COLOR_SATURATION = 100;\nexport const MAX_COLOR_HUE = 359;\nexport const MAX_COLOR_VALUE = 100;\nexport const MAX_COLOR_RGB = 255;\n/** @deprecated Use MAX_COLOR_RGB (255) or MAX_COLOR_ALPHA (100) */\nexport const MAX_COLOR_RGBA = MAX_COLOR_RGB;\nexport const MAX_COLOR_ALPHA = 100;\n\n/** Minimum length for a hexadecimal color string (not including the #) */\nexport const MIN_HEX_LENGTH = 3;\n/** Maximum length for a hexadecimal color string (not including the #) */\nexport const MAX_HEX_LENGTH = 6;\n/** Minimum length for a string of an RGBA color component */\nexport const MIN_RGBA_LENGTH = 1;\n/** Maximum length for a string of an RGBA color component */\nexport const MAX_RGBA_LENGTH = 3;\n\n/** Regular expression matching only valid hexadecimal chars */\nexport const HEX_REGEX = /^[\\da-f]{0,6}$/i;\n/** Regular expression matching only numbers */\nexport const RGBA_REGEX = /^\\d{0,3}$/;\n","import { MAX_COLOR_RGB } from './consts';\nimport type { IRGB } from './interfaces';\n\n/** Converts HSV components to an RGB color. Does not set the alpha value. */\nexport function hsv2rgb(h: number, s: number, v: number): IRGB {\n s = s / 100;\n v = v / 100;\n\n let rgb: number[] = [];\n\n const c = v * s;\n const hh = h / 60;\n const x = c * (1 - Math.abs((hh % 2) - 1));\n const m = v - c;\n\n switch (Math.floor(hh)) {\n case 0:\n rgb = [c, x, 0];\n break;\n\n case 1:\n rgb = [x, c, 0];\n break;\n\n case 2:\n rgb = [0, c, x];\n break;\n\n case 3:\n rgb = [0, x, c];\n break;\n\n case 4:\n rgb = [x, 0, c];\n break;\n\n case 5:\n rgb = [c, 0, x];\n break;\n }\n\n return {\n r: Math.round(MAX_COLOR_RGB * (rgb[0] + m)),\n g: Math.round(MAX_COLOR_RGB * (rgb[1] + m)),\n b: Math.round(MAX_COLOR_RGB * (rgb[2] + m)),\n };\n}\n","/** Clamp a value to ensure it falls within a given range. */\nexport function clamp(value: number, max: number, min = 0): number {\n return value < min ? min : value > max ? max : value;\n}\n","import { MAX_COLOR_RGB } from './consts';\nimport { clamp } from './clamp';\n\n/** Converts RGB components to a hex color string (without # prefix). */\nexport function rgb2hex(r: number, g: number, b: number): string {\n return [_rgbToPaddedHex(r), _rgbToPaddedHex(g), _rgbToPaddedHex(b)].join('');\n}\n\n/** Converts an RGB component to a 0-padded hex component of length 2. */\nfunction _rgbToPaddedHex(num: number): string {\n num = clamp(num, MAX_COLOR_RGB);\n const hex = num.toString(16);\n\n return hex.length === 1 ? '0' + hex : hex;\n}\n","import { MAX_COLOR_SATURATION, MAX_COLOR_VALUE } from './consts';\nimport { hsv2hex } from './hsv2hex';\nimport type { IColor } from './interfaces';\n\n/**\n * Converts a color hue to an HTML color string (with # prefix).\n * This implementation ignores all components of `color` except hue.\n */\nexport function getFullColorString(color: IColor): string {\n return `#${hsv2hex(color.h, MAX_COLOR_SATURATION, MAX_COLOR_VALUE)}`;\n}\n","import { hsv2rgb } from './hsv2rgb';\nimport { rgb2hex } from './rgb2hex';\n\n/** Converts HSV components to a hex color string (without # prefix). */\nexport function hsv2hex(h: number, s: number, v: number): string {\n const { r, g, b } = hsv2rgb(h, s, v);\n\n return rgb2hex(r, g, b);\n}\n","import { MAX_COLOR_ALPHA } from './consts';\n\n/**\n * @internal\n * Get a CSS color string from some color components.\n * If `a` is specified and not 100, returns an `rgba()` string.\n * Otherwise returns `hex` prefixed with #.\n */\nexport function _rgbaOrHexString(r: number, g: number, b: number, a: number | undefined, hex: string): string {\n return a === MAX_COLOR_ALPHA || typeof a !== 'number' ? `#${hex}` : `rgba(${r}, ${g}, ${b}, ${a / MAX_COLOR_ALPHA})`;\n}\n","import { hsv2rgb } from './hsv2rgb';\nimport { rgb2hex } from './rgb2hex';\nimport { _rgbaOrHexString } from './_rgbaOrHexString';\nimport type { IColor } from './interfaces';\n\n/**\n * Gets a color with the same hue as `color` and other components updated to match the given\n * saturation and value.\n *\n * Does not modify the original `color` and does not supply a default alpha value.\n */\nexport function updateSV(color: IColor, s: number, v: number): IColor {\n const { r, g, b } = hsv2rgb(color.h, s, v);\n const hex = rgb2hex(r, g, b);\n\n return {\n ...color,\n s,\n v,\n r,\n g,\n b,\n hex,\n str: _rgbaOrHexString(r, g, b, color.a, hex),\n };\n}\n","import * as React from 'react';\nimport { classNamesFunction, on, initializeComponentRef, KeyCodes, getId } from '../../../Utilities';\n// These imports are separated to help with bundling\nimport { MAX_COLOR_SATURATION, MAX_COLOR_VALUE } from '../../../utilities/color/consts';\nimport { getFullColorString } from '../../../utilities/color/getFullColorString';\nimport { updateSV } from '../../../utilities/color/updateSV';\nimport { clamp } from '../../../utilities/color/clamp';\nimport type {\n IColorRectangleProps,\n IColorRectangleStyleProps,\n IColorRectangleStyles,\n IColorRectangle,\n} from './ColorRectangle.types';\nimport type { IColor } from '../../../utilities/color/interfaces';\n\nconst getClassNames = classNamesFunction();\n\nexport interface IColorRectangleState {\n color: IColor;\n}\n\n/**\n * {@docCategory ColorPicker}\n */\nexport class ColorRectangleBase\n extends React.Component\n implements IColorRectangle\n{\n public static defaultProps: Partial = {\n minSize: 220,\n ariaLabel: 'Saturation and brightness',\n ariaValueFormat: 'Saturation {0} brightness {1}',\n ariaDescription: 'Use left and right arrow keys to set saturation. Use up and down arrow keys to set brightness.',\n };\n\n private _disposables: (() => void)[] = [];\n private _root = React.createRef();\n private _isAdjustingSaturation: boolean = true;\n private _descriptionId = getId('ColorRectangle-description');\n\n constructor(props: IColorRectangleProps) {\n super(props);\n\n initializeComponentRef(this);\n\n this.state = { color: props.color };\n }\n\n public get color(): IColor {\n return this.state.color;\n }\n\n public componentDidUpdate(\n prevProps: Readonly,\n prevState: Readonly,\n ): void {\n // if props changed (as opposed to a state update), set the value\n // TODO: switch to strict controlled pattern instead\n if (prevProps !== this.props && this.props.color) {\n this.setState({ color: this.props.color });\n }\n }\n\n public componentDidMount(): void {\n if (this._root.current) {\n // with Chrome's passive DOM listeners, stopPropagation and preventDefault only work if passive is false.\n this._root.current.addEventListener('touchstart', this._onTouchStart, { capture: true, passive: false });\n this._root.current.addEventListener('touchmove', this._onTouchMove, { capture: true, passive: false });\n }\n }\n\n public componentWillUnmount() {\n if (this._root.current) {\n this._root.current.removeEventListener('touchstart', this._onTouchStart);\n this._root.current.removeEventListener('touchmove', this._onTouchMove);\n }\n this._disposeListeners();\n }\n\n public render(): JSX.Element {\n const { minSize, theme, className, styles, ariaValueFormat, ariaLabel, ariaDescription } = this.props;\n const { color } = this.state;\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n minSize,\n });\n\n const valueText = ariaValueFormat!.replace('{0}', String(color.s)).replace('{1}', String(color.v));\n\n return (\n \n
      \n {ariaDescription}\n
      \n
      \n
      \n \n
      \n );\n }\n\n private _onKeyDown = (ev: React.KeyboardEvent): void => {\n const { color } = this.state;\n let { s, v } = color;\n\n const increment = ev.shiftKey ? 10 : 1;\n\n // Intentionally DO NOT flip the color picker in RTL: its orientation is not very meaningful,\n // and getting all the math and styles flipped correctly is tricky\n // eslint-disable-next-line deprecation/deprecation\n switch (ev.which) {\n case KeyCodes.up: {\n this._isAdjustingSaturation = false;\n v += increment; // V = 100 (lightest) is at the top\n break;\n }\n case KeyCodes.down: {\n this._isAdjustingSaturation = false;\n v -= increment; // V = 0 (darkest) is at the bottom\n break;\n }\n case KeyCodes.left: {\n this._isAdjustingSaturation = true;\n s -= increment;\n break;\n }\n case KeyCodes.right: {\n this._isAdjustingSaturation = true;\n s += increment;\n break;\n }\n default:\n return;\n }\n\n this._updateColor(ev, updateSV(color, clamp(s, MAX_COLOR_SATURATION), clamp(v, MAX_COLOR_VALUE)));\n };\n\n private _updateColor(\n ev: MouseEvent | KeyboardEvent | React.MouseEvent | React.KeyboardEvent | TouchEvent | React.TouchEvent,\n color: IColor,\n ): void {\n const { onChange } = this.props;\n\n const oldColor = this.state.color;\n if (color.s === oldColor.s && color.v === oldColor.v) {\n return; // no change\n }\n\n if (onChange) {\n onChange(ev as React.MouseEvent | React.KeyboardEvent, color);\n }\n\n if (!ev.defaultPrevented) {\n this.setState({ color });\n ev.preventDefault();\n }\n }\n\n private _onMouseDown = (ev: React.MouseEvent): void => {\n this._disposables.push(\n on(window, 'mousemove', this._onMouseMove as (ev: MouseEvent) => void, true),\n on(window, 'mouseup', this._disposeListeners, true),\n );\n\n this._onMouseMove(ev);\n };\n\n private _onMouseMove = (ev: MouseEvent | React.MouseEvent): void => {\n if (!this._root.current) {\n return;\n }\n\n // Leaving the following commented code which is sometimes necessary for debugging:\n // If the primary button (1) isn't pressed, the user is no longer dragging, so turn off\n // the event handlers and exit.\n // if (!(ev.buttons & 1)) {\n // this._disposeListeners();\n // return;\n // }\n\n const newColor = _getNewColor(ev, this.state.color, this._root.current);\n if (newColor) {\n this._updateColor(ev, newColor);\n }\n };\n\n private _onTouchStart = (ev: TouchEvent): void => {\n if (!this._root.current) {\n return;\n }\n\n // prevent touch from scrolling the page so that the touch can be dragged on the color rectangle.\n ev.stopPropagation();\n };\n\n private _onTouchMove = (ev: TouchEvent): void => {\n if (!this._root.current) {\n return;\n }\n const newColor = _getNewColor(ev, this.state.color, this._root.current);\n if (newColor) {\n this._updateColor(ev, newColor);\n }\n\n ev.preventDefault();\n ev.stopPropagation();\n };\n\n private _disposeListeners = (): void => {\n this._disposables.forEach(dispose => dispose());\n this._disposables = [];\n };\n}\n\n/**\n * Exported for testing only.\n * @internal\n */\nexport function _getNewColor(\n ev: MouseEvent | React.MouseEvent | TouchEvent | React.TouchEvent,\n prevColor: IColor,\n root: HTMLElement,\n): IColor | undefined {\n const rectSize = root.getBoundingClientRect();\n\n let coords:\n | {\n clientX: number;\n clientY: number;\n }\n | undefined = undefined;\n\n const touchEvent = ev as { touches: TouchList };\n if (touchEvent.touches) {\n const lastTouch = touchEvent.touches[touchEvent.touches.length - 1];\n if (lastTouch.clientX !== undefined && lastTouch.clientY !== undefined) {\n coords = {\n clientX: lastTouch.clientX,\n clientY: lastTouch.clientY,\n };\n }\n }\n\n if (!coords) {\n const mouseEvent = ev as { clientX: number; clientY: number };\n if (mouseEvent.clientX !== undefined && mouseEvent.clientY !== undefined) {\n coords = {\n clientX: mouseEvent.clientX,\n clientY: mouseEvent.clientY,\n };\n }\n }\n\n if (coords) {\n const sPercentage = (coords.clientX - rectSize.left) / rectSize.width;\n const vPercentage = (coords.clientY - rectSize.top) / rectSize.height;\n\n return updateSV(\n prevColor,\n clamp(Math.round(sPercentage * MAX_COLOR_SATURATION), MAX_COLOR_SATURATION),\n clamp(Math.round(MAX_COLOR_VALUE - vPercentage * MAX_COLOR_VALUE), MAX_COLOR_VALUE),\n );\n }\n}\n","import { HighContrastSelector, getHighContrastNoAdjustStyle } from '../../../Styling';\nimport { IsFocusVisibleClassName } from '../../../Utilities';\nimport { hiddenContentStyle } from '@fluentui/style-utilities';\nimport type { IColorRectangleStyleProps, IColorRectangleStyles } from './ColorRectangle.types';\n\nexport const getStyles = (props: IColorRectangleStyleProps): IColorRectangleStyles => {\n const { className, theme, minSize } = props;\n const { palette, effects } = theme;\n\n return {\n root: [\n 'ms-ColorPicker-colorRect',\n {\n position: 'relative',\n marginBottom: 8,\n border: `1px solid ${palette.neutralLighter}`,\n borderRadius: effects.roundedCorner2,\n minWidth: minSize,\n minHeight: minSize,\n outline: 'none',\n\n selectors: {\n [HighContrastSelector]: {\n ...getHighContrastNoAdjustStyle(),\n },\n\n [`.${IsFocusVisibleClassName} &:focus`]: {\n outline: `1px solid ${palette.neutralSecondary}`,\n [`${HighContrastSelector}`]: {\n outline: '2px solid CanvasText',\n },\n },\n },\n },\n className,\n ],\n light: [\n 'ms-ColorPicker-light',\n {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n // Intentionally DO NOT flip the color picker in RTL: its orientation is not very meaningful,\n // and getting all the math and styles flipped correctly is tricky\n background: 'linear-gradient(to right, white 0%, transparent 100%) /*@noflip*/',\n },\n ],\n dark: [\n 'ms-ColorPicker-dark',\n {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n background: 'linear-gradient(to bottom, transparent 0, #000 100%)',\n },\n ],\n thumb: [\n 'ms-ColorPicker-thumb',\n {\n position: 'absolute',\n width: 20,\n height: 20,\n background: 'white',\n border: `1px solid ${palette.neutralSecondaryAlt}`,\n borderRadius: '50%',\n boxShadow: effects.elevation8,\n transform: 'translate(-50%, -50%)',\n selectors: {\n ':before': {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n border: `2px solid ${palette.white}`,\n borderRadius: '50%',\n boxSizing: 'border-box',\n content: '\"\"',\n },\n },\n },\n ],\n description: hiddenContentStyle,\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../../Utilities';\nimport { ColorRectangleBase } from './ColorRectangle.base';\nimport { getStyles } from './ColorRectangle.styles';\nimport type { IColorRectangleProps, IColorRectangleStyles, IColorRectangleStyleProps } from './ColorRectangle.types';\n\nexport const ColorRectangle: React.FunctionComponent = styled<\n IColorRectangleProps,\n IColorRectangleStyleProps,\n IColorRectangleStyles\n>(ColorRectangleBase, getStyles, undefined, { scope: 'ColorRectangle' });\n","import * as React from 'react';\nimport {\n classNamesFunction,\n initializeComponentRef,\n on,\n KeyCodes,\n getWindow,\n warnDeprecations,\n warn,\n} from '../../../Utilities';\nimport { clamp } from '../../../utilities/color/clamp';\nimport { MAX_COLOR_HUE, MAX_COLOR_ALPHA } from '../../../utilities/color/consts';\nimport type { IColorSliderProps, IColorSliderStyleProps, IColorSliderStyles, IColorSlider } from './ColorSlider.types';\n\nconst getClassNames = classNamesFunction();\n\nexport interface IColorSliderState {\n currentValue: number;\n}\n\n/**\n * {@docCategory ColorPicker}\n */\nexport class ColorSliderBase extends React.Component implements IColorSlider {\n public static defaultProps: Partial = {\n value: 0,\n };\n\n private _disposables: (() => void)[] = [];\n private _root = React.createRef();\n\n constructor(props: IColorSliderProps) {\n super(props);\n\n initializeComponentRef(this);\n\n warnDeprecations('ColorSlider', props, {\n thumbColor: 'styles.sliderThumb',\n overlayStyle: 'overlayColor',\n isAlpha: 'type',\n maxValue: 'type',\n minValue: 'type',\n });\n // eslint-disable-next-line deprecation/deprecation\n if (this._type !== 'hue' && !(props.overlayColor || props.overlayStyle)) {\n warn(`ColorSlider: 'overlayColor' is required when 'type' is \"alpha\" or \"transparency\"`);\n }\n\n this.state = {\n currentValue: props.value || 0,\n };\n }\n\n public get value(): number {\n return this.state.currentValue;\n }\n\n public componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\n // if props changed (as opposed to a state update), set the value\n // TODO: switch to strict controlled pattern instead\n if (prevProps !== this.props && this.props.value !== undefined) {\n this.setState({ currentValue: this.props.value });\n }\n }\n\n public componentDidMount(): void {\n if (this._root.current) {\n // with Chrome's passive DOM listeners, stopPropagation and preventDefault only work if passive is false.\n this._root.current.addEventListener('touchstart', this._onTouchStart, { capture: true, passive: false });\n this._root.current.addEventListener('touchmove', this._onTouchMove, { capture: true, passive: false });\n }\n }\n\n public componentWillUnmount() {\n if (this._root.current) {\n this._root.current.removeEventListener('touchstart', this._onTouchStart);\n this._root.current.removeEventListener('touchmove', this._onTouchMove);\n }\n this._disposeListeners();\n }\n\n public render(): JSX.Element {\n const type = this._type;\n const maxValue = this._maxValue;\n const {\n // eslint-disable-next-line deprecation/deprecation\n overlayStyle,\n overlayColor,\n theme,\n className,\n styles,\n ariaLabel = type,\n } = this.props;\n const currentValue = this.value;\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n type,\n });\n\n const currentPercentage = (100 * currentValue) / maxValue;\n\n return (\n \n {!!(overlayColor || overlayStyle) && (\n \n )}\n
      \n
      \n );\n }\n\n private get _type(): IColorSliderProps['type'] {\n // eslint-disable-next-line deprecation/deprecation\n const { isAlpha, type = isAlpha ? 'alpha' : 'hue' } = this.props;\n return type;\n }\n\n private get _maxValue(): number {\n return this._type === 'hue' ? MAX_COLOR_HUE : MAX_COLOR_ALPHA;\n }\n\n private _onKeyDown = (ev: React.KeyboardEvent): void => {\n let currentValue = this.value;\n const maxValue = this._maxValue;\n const increment = ev.shiftKey ? 10 : 1;\n\n // Intentionally DO NOT flip the color picker in RTL: its orientation is not very meaningful,\n // and getting all the math and styles flipped correctly is tricky\n // eslint-disable-next-line deprecation/deprecation\n switch (ev.which) {\n case KeyCodes.left: {\n currentValue -= increment;\n break;\n }\n case KeyCodes.right: {\n currentValue += increment;\n break;\n }\n case KeyCodes.home: {\n currentValue = 0;\n break;\n }\n case KeyCodes.end: {\n currentValue = maxValue;\n break;\n }\n default: {\n return;\n }\n }\n\n this._updateValue(ev, clamp(currentValue, maxValue));\n };\n\n private _onMouseDown = (ev: React.MouseEvent): void => {\n const win = getWindow(this as any);\n\n if (win) {\n this._disposables.push(\n on(win, 'mousemove', this._onMouseMove as (ev: MouseEvent) => void, true),\n on(win, 'mouseup', this._disposeListeners, true),\n );\n }\n\n this._onMouseMove(ev);\n };\n\n private _onMouseMove = (ev: MouseEvent | React.MouseEvent): void => {\n if (!this._root.current) {\n return;\n }\n\n const maxValue = this._maxValue;\n const rectSize = this._root.current.getBoundingClientRect();\n\n const currentPercentage = (ev.clientX - rectSize.left) / rectSize.width;\n const newValue = clamp(Math.round(currentPercentage * maxValue), maxValue);\n\n this._updateValue(ev, newValue);\n };\n\n private _onTouchStart = (ev: TouchEvent): void => {\n if (!this._root.current) {\n return;\n }\n\n // prevent touch from scrolling the page so that the touch can be dragged on the color rectangle.\n ev.stopPropagation();\n };\n\n private _onTouchMove = (ev: TouchEvent): void => {\n if (!this._root.current) {\n return;\n }\n\n const lastTouch = ev.touches[ev.touches.length - 1];\n if (lastTouch.clientX !== undefined) {\n const maxValue = this._maxValue;\n const rectSize = this._root.current.getBoundingClientRect();\n\n const currentPercentage = (lastTouch.clientX - rectSize.left) / rectSize.width;\n const newValue = clamp(Math.round(currentPercentage * maxValue), maxValue);\n\n this._updateValue(ev, newValue);\n }\n\n ev.preventDefault();\n ev.stopPropagation();\n };\n\n private _disposeListeners = (): void => {\n this._disposables.forEach(dispose => dispose());\n this._disposables = [];\n };\n\n private _updateValue(\n ev: MouseEvent | KeyboardEvent | React.MouseEvent | React.KeyboardEvent | TouchEvent,\n newValue: number,\n ) {\n if (newValue === this.value) {\n return;\n }\n\n const { onChange } = this.props;\n\n if (onChange) {\n onChange(ev as React.MouseEvent | React.KeyboardEvent, newValue);\n }\n\n if (!ev.defaultPrevented) {\n this.setState({\n currentValue: newValue,\n });\n ev.preventDefault();\n }\n }\n}\n","import { IsFocusVisibleClassName } from '../../../Utilities';\nimport { HighContrastSelector } from '../../../Styling';\nimport type { IColorSliderStyleProps, IColorSliderStyles } from './ColorSlider.types';\n\nconst hueStyle = {\n background: `linear-gradient(${[\n 'to left',\n 'red 0',\n '#f09 10%',\n '#cd00ff 20%',\n '#3200ff 30%',\n '#06f 40%',\n '#00fffd 50%',\n '#0f6 60%',\n '#35ff00 70%',\n '#cdff00 80%',\n '#f90 90%',\n 'red 100%',\n ].join(',')})`,\n};\n\nconst alphaStyle = {\n backgroundImage:\n 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAJUlEQVQYV2N89erVfwY0ICYmxoguxjgUFKI7GsTH5m4M3w1ChQC1/Ca8i2n1WgAAAABJRU5ErkJggg==)',\n};\n\nexport const getStyles = (props: IColorSliderStyleProps): IColorSliderStyles => {\n // eslint-disable-next-line deprecation/deprecation\n const { theme, className, type = 'hue', isAlpha: useAlphaBackground = type !== 'hue' } = props;\n const { palette, effects } = theme;\n\n return {\n root: [\n 'ms-ColorPicker-slider',\n {\n position: 'relative',\n height: 20,\n marginBottom: 8,\n border: `1px solid ${palette.neutralLight}`,\n borderRadius: effects.roundedCorner2,\n boxSizing: 'border-box',\n outline: 'none',\n forcedColorAdjust: 'none',\n\n selectors: {\n [`.${IsFocusVisibleClassName} &:focus`]: {\n outline: `1px solid ${palette.neutralSecondary}`,\n [`${HighContrastSelector}`]: {\n outline: '2px solid CanvasText',\n },\n },\n },\n },\n useAlphaBackground ? alphaStyle : hueStyle,\n className,\n ],\n sliderOverlay: [\n 'ms-ColorPicker-sliderOverlay',\n {\n content: '',\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n ],\n sliderThumb: [\n 'ms-ColorPicker-thumb',\n 'is-slider',\n {\n position: 'absolute',\n width: 20,\n height: 20,\n background: 'white',\n border: `1px solid ${palette.neutralSecondaryAlt}`,\n borderRadius: '50%',\n boxShadow: effects.elevation8,\n transform: 'translate(-50%, -50%)',\n top: '50%',\n forcedColorAdjust: 'auto',\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../../Utilities';\nimport { ColorSliderBase } from './ColorSlider.base';\nimport { getStyles } from './ColorSlider.styles';\nimport type { IColorSliderProps, IColorSliderStyleProps, IColorSliderStyles } from './ColorSlider.types';\n\nexport const ColorSlider: React.FunctionComponent = styled<\n IColorSliderProps,\n IColorSliderStyleProps,\n IColorSliderStyles\n>(ColorSliderBase, getStyles, undefined, { scope: 'ColorSlider' });\n","import { MAX_COLOR_ALPHA } from './consts';\nimport { hsl2rgb } from './hsl2rgb';\nimport type { IRGB } from './interfaces';\n\n/**\n * Converts a valid CSS color string to an RGB color.\n * Note that hex colors *must* be prefixed with # to be considered valid.\n * Alpha in returned color defaults to 100.\n * Four and eight digit hex values (with alpha) are supported if the current browser supports them.\n */\nexport function cssColor(color?: string): IRGB | undefined {\n if (!color) {\n return undefined;\n }\n\n // Need to check the following valid color formats: RGB(A), HSL(A), hex, named color\n\n // First check for well formatted RGB(A), HSL(A), and hex formats at the start.\n // This is for perf (no creating an element) and catches the intentional \"transparent\" color\n // case early on.\n const easyColor: IRGB | undefined = _rgba(color) || _hex6(color) || _hex3(color) || _hsla(color);\n if (easyColor) {\n return easyColor;\n }\n\n // if the above fails, do the more expensive catch-all\n return _browserCompute(color);\n}\n\n/**\n * Uses the browser's getComputedStyle() to determine what the passed-in color is.\n * This assumes _rgba, _hex6, _hex3, and _hsla have already been tried and all failed.\n * This works by attaching an element to the DOM, which may fail in server-side rendering\n * or with headless browsers.\n */\nfunction _browserCompute(str: string): IRGB | undefined {\n if (typeof document === 'undefined') {\n // don't throw an error when used server-side\n return undefined;\n }\n const elem = document.createElement('div');\n elem.style.backgroundColor = str;\n // This element must be attached to the DOM for getComputedStyle() to have a value\n elem.style.position = 'absolute';\n elem.style.top = '-9999px';\n elem.style.left = '-9999px';\n elem.style.height = '1px';\n elem.style.width = '1px';\n document.body.appendChild(elem);\n const eComputedStyle = getComputedStyle(elem);\n const computedColor = eComputedStyle && eComputedStyle.backgroundColor;\n document.body.removeChild(elem);\n // computedColor is always an RGB(A) string, except for invalid colors in IE/Edge which return 'transparent'\n\n // browsers return one of these if the color string is invalid,\n // so need to differentiate between an actual error and intentionally passing in this color\n if (computedColor === 'rgba(0, 0, 0, 0)' || computedColor === 'transparent') {\n switch (str.trim()) {\n // RGB and HSL were already checked at the start of the function\n case 'transparent':\n case '#0000':\n case '#00000000':\n return { r: 0, g: 0, b: 0, a: 0 };\n }\n return undefined;\n }\n\n return _rgba(computedColor);\n}\n\n/**\n * If `str` is in valid `rgb()` or `rgba()` format, returns an RGB color (alpha defaults to 100).\n * Otherwise returns undefined.\n */\nfunction _rgba(str?: string | null): IRGB | undefined {\n if (!str) {\n return undefined;\n }\n\n const match = str.match(/^rgb(a?)\\(([\\d., ]+)\\)$/);\n if (match) {\n const hasAlpha = !!match[1];\n const expectedPartCount = hasAlpha ? 4 : 3;\n const parts = match[2].split(/ *, */).map(Number);\n\n if (parts.length === expectedPartCount) {\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: hasAlpha ? parts[3] * 100 : MAX_COLOR_ALPHA,\n };\n }\n }\n}\n\n/**\n * If `str` is in `hsl()` or `hsla()` format, returns an RGB color (alpha defaults to 100).\n * Otherwise returns undefined.\n */\nfunction _hsla(str: string): IRGB | undefined {\n const match = str.match(/^hsl(a?)\\(([\\d., ]+)\\)$/);\n if (match) {\n const hasAlpha = !!match[1];\n const expectedPartCount = hasAlpha ? 4 : 3;\n const parts = match[2].split(/ *, */).map(Number);\n\n if (parts.length === expectedPartCount) {\n const rgba = hsl2rgb(parts[0], parts[1], parts[2]);\n rgba.a = hasAlpha ? parts[3] * 100 : MAX_COLOR_ALPHA;\n return rgba;\n }\n }\n}\n\n/**\n * If `str` is in valid 6-digit hex format *with* # prefix, returns an RGB color (with alpha 100).\n * Otherwise returns undefined.\n */\nfunction _hex6(str: string): IRGB | undefined {\n if (str[0] === '#' && str.length === 7 && /^#[\\da-fA-F]{6}$/.test(str)) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: MAX_COLOR_ALPHA,\n };\n }\n}\n\n/**\n * If `str` is in valid 3-digit hex format *with* # prefix, returns an RGB color (with alpha 100).\n * Otherwise returns undefined.\n */\nfunction _hex3(str: string): IRGB | undefined {\n if (str[0] === '#' && str.length === 4 && /^#[\\da-fA-F]{3}$/.test(str)) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: MAX_COLOR_ALPHA,\n };\n }\n}\n","import { hsl2hsv } from './hsl2hsv';\nimport { hsv2rgb } from './hsv2rgb';\nimport type { IRGB } from './interfaces';\n\n/** Converts HSL components to an RGB color. Does not set the alpha value. */\nexport function hsl2rgb(h: number, s: number, l: number): IRGB {\n const hsv = hsl2hsv(h, s, l);\n\n return hsv2rgb(hsv.h, hsv.s, hsv.v);\n}\n","import type { IHSV } from './interfaces';\n\n/** Converts HSL components to an HSV color. */\nexport function hsl2hsv(h: number, s: number, l: number): IHSV {\n s *= (l < 50 ? l : 100 - l) / 100;\n const v = l + s;\n\n return {\n h: h,\n s: v === 0 ? 0 : ((2 * s) / v) * 100,\n v: v,\n };\n}\n","import { MAX_COLOR_ALPHA } from './consts';\nimport { rgb2hsv } from './rgb2hsv';\nimport { rgb2hex } from './rgb2hex';\nimport { _rgbaOrHexString } from './_rgbaOrHexString';\nimport type { IRGB, IColor } from './interfaces';\n\n/** Converts an RGBA color to a color object (alpha defaults to 100). */\nexport function getColorFromRGBA(rgba: IRGB): IColor {\n const { a = MAX_COLOR_ALPHA, b, g, r } = rgba;\n const { h, s, v } = rgb2hsv(r, g, b);\n const hex = rgb2hex(r, g, b);\n const str = _rgbaOrHexString(r, g, b, a, hex);\n const t = MAX_COLOR_ALPHA - a;\n\n return { a, b, g, h, hex, r, s, str, v, t };\n}\n","import { MAX_COLOR_RGB } from './consts';\nimport type { IHSV } from './interfaces';\n\n/** Converts RGB components to an HSV color. */\nexport function rgb2hsv(r: number, g: number, b: number): IHSV {\n let h = NaN;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const delta = max - min;\n\n // hue\n if (delta === 0) {\n h = 0;\n } else if (r === max) {\n h = ((g - b) / delta) % 6;\n } else if (g === max) {\n h = (b - r) / delta + 2;\n } else if (b === max) {\n h = (r - g) / delta + 4;\n }\n\n h = Math.round(h * 60);\n\n if (h < 0) {\n h += 360;\n }\n\n // saturation\n const s = Math.round((max === 0 ? 0 : delta / max) * 100);\n\n // value\n const v = Math.round((max / MAX_COLOR_RGB) * 100);\n\n return { h, s, v };\n}\n","import { cssColor } from './cssColor';\nimport { getColorFromRGBA } from './getColorFromRGBA';\nimport type { IColor } from './interfaces';\n\n/**\n * Converts a CSS color string to a color object.\n * Note that hex colors *must* be prefixed with # to be considered valid.\n *\n * `inputColor` will be used unmodified as the `str` property of the returned object.\n * Alpha defaults to 100 if not specified in `inputColor`.\n * Returns undefined if the color string is invalid/not recognized.\n */\nexport function getColorFromString(inputColor: string): IColor | undefined {\n const color = cssColor(inputColor);\n\n if (!color) {\n return;\n }\n\n return {\n ...getColorFromRGBA(color!),\n str: inputColor,\n };\n}\n","import { _rgbaOrHexString } from './_rgbaOrHexString';\nimport { MAX_COLOR_ALPHA } from './consts';\nimport type { IColor } from './interfaces';\n\n/**\n * Gets a color with the given alpha value and the same other components as `color`.\n * Does not modify the original color.\n */\nexport function updateA(color: IColor, a: number): IColor {\n return {\n ...color,\n a,\n t: MAX_COLOR_ALPHA - a,\n str: _rgbaOrHexString(color.r, color.g, color.b, a, color.hex),\n };\n}\n","import { _rgbaOrHexString } from './_rgbaOrHexString';\nimport { MAX_COLOR_ALPHA } from './consts';\nimport type { IColor } from './interfaces';\n\n/**\n * Gets a color with the given transparency value and the same other components as `color`.\n * Does not modify the original color.\n */\nexport function updateT(color: IColor, t: number): IColor {\n const a = MAX_COLOR_ALPHA - t;\n return {\n ...color,\n t,\n a,\n str: _rgbaOrHexString(color.r, color.g, color.b, a, color.hex),\n };\n}\n","import * as React from 'react';\nimport { classNamesFunction, initializeComponentRef, warnDeprecations, warn } from '../../Utilities';\nimport { TextField } from '../../TextField';\nimport { TooltipHost } from '../../Tooltip';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { ColorRectangle } from './ColorRectangle/ColorRectangle';\nimport { ColorSlider } from './ColorSlider/ColorSlider';\nimport {\n MAX_COLOR_ALPHA,\n MAX_COLOR_RGB,\n MAX_HEX_LENGTH,\n MAX_RGBA_LENGTH,\n MIN_HEX_LENGTH,\n MIN_RGBA_LENGTH,\n HEX_REGEX,\n RGBA_REGEX,\n} from '../../utilities/color/consts';\n// These imports are separated to help with bundling\nimport { getColorFromString } from '../../utilities/color/getColorFromString';\nimport { getColorFromRGBA } from '../../utilities/color/getColorFromRGBA';\nimport { clamp } from '../../utilities/color/clamp';\nimport { updateA } from '../../utilities/color/updateA';\nimport { updateT } from '../../utilities/color/updateT';\nimport { updateH } from '../../utilities/color/updateH';\nimport { correctRGB } from '../../utilities/color/correctRGB';\nimport { correctHex } from '../../utilities/color/correctHex';\nimport { ColorRectangleBase } from './ColorRectangle/ColorRectangle.base';\nimport type {\n IColorPickerProps,\n IColorPickerStyleProps,\n IColorPickerStyles,\n IColorPicker,\n IColorPickerStrings,\n} from './ColorPicker.types';\nimport type { IColor, IRGB } from '../../utilities/color/interfaces';\n\ntype ColorComponent = keyof Pick;\ntype ColorErrorKeys = keyof Pick<\n IColorPickerStrings,\n 'hexError' | 'alphaError' | 'transparencyError' | 'redError' | 'greenError' | 'blueError'\n>;\n\nexport interface IColorPickerState {\n /** Most recently selected color */\n color: IColor;\n /** Color component currently being edited via a text field (if intermediate value is invalid) */\n editingColor?: {\n /** Which color component is being edited */\n component: ColorComponent;\n /** Currently entered value, which is not valid */\n value: string;\n };\n}\n\nconst getClassNames = classNamesFunction();\n\nconst allColorComponents: ColorComponent[] = ['hex', 'r', 'g', 'b', 'a', 't'];\n\nconst errorKeys: { [component in ColorComponent]: ColorErrorKeys } = {\n hex: 'hexError',\n r: 'redError',\n g: 'greenError',\n b: 'blueError',\n a: 'alphaError',\n t: 'transparencyError',\n};\n\n/**\n * {@docCategory ColorPicker}\n */\nexport class ColorPickerBase extends React.Component implements IColorPicker {\n public static defaultProps: Partial = {\n alphaType: 'alpha',\n strings: {\n rootAriaLabelFormat: 'Color picker, {0} selected.',\n hex: 'Hex',\n red: 'Red',\n green: 'Green',\n blue: 'Blue',\n alpha: 'Alpha',\n transparency: 'Transparency',\n hueAriaLabel: 'Hue',\n svAriaLabel: ColorRectangleBase.defaultProps.ariaLabel!,\n svAriaValueFormat: ColorRectangleBase.defaultProps.ariaValueFormat!,\n svAriaDescription: ColorRectangleBase.defaultProps.ariaDescription!,\n hexError: 'Hex values must be between 3 and 6 characters long',\n alphaError: 'Alpha must be between 0 and 100',\n transparencyError: 'Transparency must be between 0 and 100',\n redError: 'Red must be between 0 and 255',\n greenError: 'Green must be between 0 and 255',\n blueError: 'Blue must be between 0 and 255',\n },\n };\n\n private _textChangeHandlers: {\n [K in ColorComponent]: (event: React.FormEvent, newValue?: string) => void;\n };\n /**\n * Strings displayed in the UI as text field labels (these are in a separate object for convenient\n * indexing by short color component name).\n */\n private _textLabels: { [K in ColorComponent]: string };\n\n /** Strings besides red/green/blue/alpha/hex, with defaults for all values except the deprecated `hue` */\n private _strings: Required> & Pick;\n\n constructor(props: IColorPickerProps) {\n super(props);\n\n initializeComponentRef(this);\n\n const strings = props.strings!; // always defined since it's in defaultProps\n\n warnDeprecations('ColorPicker', props, {\n hexLabel: 'strings.hex',\n redLabel: 'strings.red',\n greenLabel: 'strings.green',\n blueLabel: 'strings.blue',\n alphaLabel: 'strings.alpha',\n alphaSliderHidden: 'alphaType',\n });\n\n // eslint-disable-next-line deprecation/deprecation\n if (strings.hue) {\n // warnDeprecations can't handle nested deprecated props\n warn(\"ColorPicker property 'strings.hue' was used but has been deprecated. Use 'strings.hueAriaLabel' instead.\");\n }\n\n this.state = {\n color: _getColorFromProps(props) || getColorFromString('#ffffff')!,\n };\n\n this._textChangeHandlers = {} as any;\n for (const component of allColorComponents) {\n this._textChangeHandlers[component] = this._onTextChange.bind(this, component);\n }\n\n const defaultStrings = ColorPickerBase.defaultProps.strings as Required;\n\n this._textLabels = {\n /* eslint-disable deprecation/deprecation */\n r: props.redLabel || strings.red || defaultStrings.red,\n g: props.greenLabel || strings.green || defaultStrings.green,\n b: props.blueLabel || strings.blue || defaultStrings.blue,\n a: props.alphaLabel || strings.alpha || defaultStrings.alpha,\n hex: props.hexLabel || strings.hex || defaultStrings.hex,\n t: strings.transparency || defaultStrings.transparency,\n /* eslint-enable deprecation/deprecation */\n };\n\n this._strings = {\n ...defaultStrings,\n // these aria labels default to the visible labels\n alphaAriaLabel: this._textLabels.a,\n transparencyAriaLabel: this._textLabels.t,\n ...strings,\n };\n }\n\n public get color(): IColor {\n return this.state.color;\n }\n\n public componentDidUpdate(prevProps: Readonly, prevState: Readonly): void {\n // if props changed (as opposed to a state update), update the color\n if (prevProps !== this.props) {\n const color = _getColorFromProps(this.props);\n if (color) {\n this._updateColor(undefined, color);\n }\n }\n }\n\n public render(): JSX.Element {\n const props = this.props;\n const strings = this._strings;\n const textLabels = this._textLabels;\n const {\n theme,\n className,\n styles,\n alphaType,\n // eslint-disable-next-line deprecation/deprecation\n alphaSliderHidden = alphaType === 'none',\n tooltipProps,\n } = props;\n const { color } = this.state;\n const useTransparency = alphaType === 'transparency';\n const colorComponents = ['hex', 'r', 'g', 'b', useTransparency ? 't' : 'a'];\n const atValue = useTransparency ? color.t : color.a;\n const atLabel = useTransparency ? textLabels.t : textLabels.a;\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n alphaType,\n });\n\n const selectedColorAriaParts = [textLabels.r, color.r, textLabels.g, color.g, textLabels.b, color.b];\n if (!alphaSliderHidden && typeof atValue === 'number') {\n selectedColorAriaParts.push(atLabel, `${atValue}%`);\n }\n const ariaLabel = strings.rootAriaLabelFormat.replace('{0}', selectedColorAriaParts.join(' '));\n\n return (\n
      \n
      \n \n
      \n
      \n \n {!alphaSliderHidden && (\n \n )}\n
      \n {props.showPreview && (\n
      \n \n
      \n )}\n
      \n\n {/* Give the table role=group to prevent it from being read as a table (ideally we should\n just get rid of the table, but this has the potential of breaking consumers) */}\n \n \n \n \n \n \n \n {!alphaSliderHidden && }\n \n \n \n \n {colorComponents.map((comp: ColorComponent) => {\n if ((comp === 'a' || comp === 't') && alphaSliderHidden) {\n return null;\n }\n const tooltipContent = this._getTooltipValue(comp);\n return (\n \n );\n })}\n \n \n
      {textLabels.hex}{textLabels.r}{textLabels.g}{textLabels.b}{atLabel}
      \n \n \n \n
      \n
      \n
      \n );\n }\n\n private _getDisplayValue(component: ColorComponent): string {\n const { color, editingColor } = this.state;\n if (editingColor && editingColor.component === component) {\n return editingColor.value;\n }\n if (component === 'hex') {\n return color[component] || '';\n } else if (typeof color[component] === 'number' && !isNaN(color[component] as number)) {\n return String(color[component]);\n }\n return '';\n }\n\n /* Get the error tooltip value for a component if the component is in an invalid state */\n private _getTooltipValue(component: ColorComponent): string | undefined {\n const { editingColor } = this.state;\n // if the component does not have an interim value, it is valid\n if (!editingColor || editingColor.component !== component) {\n return undefined;\n }\n\n const { value } = editingColor;\n // for hex, do not show a tooltip if the value is between 3-6 characters\n if (component === 'hex' && value.length >= MIN_HEX_LENGTH && value.length <= MAX_HEX_LENGTH) {\n return undefined;\n }\n\n const errorKey: ColorErrorKeys = errorKeys[component];\n\n return this._strings[errorKey];\n }\n\n private _onSVChanged = (ev: React.MouseEvent, color: IColor): void => {\n this._updateColor(ev, color);\n };\n\n private _onHChanged = (ev: React.MouseEvent, h: number): void => {\n this._updateColor(ev, updateH(this.state.color, h));\n };\n\n /** Callback for when the alpha/transparency slider changes */\n private _onATChanged = (ev: React.MouseEvent, value: number): void => {\n const updater = this.props.alphaType === 'transparency' ? updateT : updateA;\n this._updateColor(ev, updater(this.state.color, Math.round(value)));\n };\n\n private _onTextChange(component: ColorComponent, event: React.FormEvent, newValue?: string): void {\n const color = this.state.color;\n const isHex = component === 'hex';\n const isAlpha = component === 'a';\n const isTransparency = component === 't';\n newValue = (newValue || '').substr(0, isHex ? MAX_HEX_LENGTH : MAX_RGBA_LENGTH);\n\n // Ignore what the user typed if it contains invalid characters\n const validCharsRegex = isHex ? HEX_REGEX : RGBA_REGEX;\n if (!validCharsRegex.test(newValue)) {\n return;\n }\n\n // Determine if the entry is valid (different methods for hex, alpha, and RGB)\n let isValid: boolean;\n if (newValue === '') {\n // Empty string is obviously not valid\n isValid = false;\n } else if (isHex) {\n // Technically hex values of length 3 are also valid, but committing the value here would\n // cause it to be automatically converted to a value of length 6, which may not be what the\n // user wanted if they're not finished typing. (Values of length 3 will be committed on blur.)\n isValid = newValue.length === MAX_HEX_LENGTH;\n } else if (isAlpha || isTransparency) {\n isValid = Number(newValue) <= MAX_COLOR_ALPHA;\n } else {\n isValid = Number(newValue) <= MAX_COLOR_RGB;\n }\n\n if (!isValid) {\n // If the new value is an empty string or other invalid value, save that to display.\n // (if the user still hasn't entered anything on blur, the last value is restored)\n this.setState({ editingColor: { component, value: newValue } });\n } else if (String(color[component]) === newValue) {\n // If the new value is the same as the current value, mostly ignore it.\n // Exception is that if the user was previously editing the value (but hadn't yet entered\n // a new valid value), we should clear the intermediate value.\n if (this.state.editingColor) {\n this.setState({ editingColor: undefined });\n }\n } else {\n // Should be a valid color. Update the value.\n const newColor = isHex\n ? getColorFromString('#' + newValue)\n : isTransparency\n ? updateT(color, Number(newValue))\n : getColorFromRGBA({\n ...color,\n // Overwrite whichever key is being updated with the new value\n [component]: Number(newValue),\n });\n this._updateColor(event, newColor);\n }\n }\n\n private _onBlur = (event: React.FocusEvent) => {\n const { color, editingColor } = this.state;\n if (!editingColor) {\n return;\n }\n\n // If there was an intermediate incorrect value (such as too large or empty), correct it.\n const { value, component } = editingColor;\n const isHex = component === 'hex';\n const isAlpha = component === 'a';\n const isTransparency = component === 't';\n const minLength = isHex ? MIN_HEX_LENGTH : MIN_RGBA_LENGTH;\n if (value.length >= minLength && (isHex || !isNaN(Number(value)))) {\n // Real value. Clamp to appropriate length (hex) or range (rgba).\n let newColor: IColor | undefined;\n if (isHex) {\n newColor = getColorFromString('#' + correctHex(value));\n } else if (isAlpha || isTransparency) {\n const updater = isAlpha ? updateA : updateT;\n newColor = updater(color, clamp(Number(value), MAX_COLOR_ALPHA));\n } else {\n newColor = getColorFromRGBA(\n correctRGB({\n ...color,\n [component]: Number(value),\n } as IRGB),\n );\n }\n\n // Update state and call onChange\n this._updateColor(event, newColor);\n } else {\n // Intermediate value was an empty string or too short (hex only).\n // Just clear the intermediate state and revert to the previous value.\n this.setState({ editingColor: undefined });\n }\n };\n\n /**\n * Update the displayed color and call change handlers if appropriate.\n * @param ev - Event if call was triggered by an event (undefined if triggered by props change)\n * @param newColor - Updated color\n */\n private _updateColor(ev: React.SyntheticEvent | undefined, newColor: IColor | undefined): void {\n if (!newColor) {\n return;\n }\n\n const { color, editingColor } = this.state;\n // For black or white, the hue can change without changing the string.\n const isDifferentColor = newColor.h !== color.h || newColor.str !== color.str;\n\n if (isDifferentColor || editingColor) {\n // If ev is undefined, it's an update from props (which should be unconditionally respected\n // and not call onChange).\n if (ev && this.props.onChange) {\n this.props.onChange(ev, newColor);\n if (ev.defaultPrevented) {\n return;\n }\n }\n this.setState({ color: newColor, editingColor: undefined });\n }\n }\n}\n\nfunction _getColorFromProps(props: IColorPickerProps): IColor | undefined {\n const { color } = props;\n return typeof color === 'string' ? getColorFromString(color) : color;\n}\n","import { hsv2rgb } from './hsv2rgb';\nimport { rgb2hex } from './rgb2hex';\nimport { _rgbaOrHexString } from './_rgbaOrHexString';\nimport type { IColor } from './interfaces';\n\n/**\n * Gets a color with the same saturation and value as `color` and the other components updated\n * to match the given hue.\n *\n * Does not modify the original `color` and does not supply a default alpha value.\n */\nexport function updateH(color: IColor, h: number): IColor {\n const { r, g, b } = hsv2rgb(h, color.s, color.v);\n const hex = rgb2hex(r, g, b);\n\n return {\n ...color,\n h,\n r,\n g,\n b,\n hex,\n str: _rgbaOrHexString(r, g, b, color.a, hex),\n };\n}\n","import { MIN_HEX_LENGTH, MAX_HEX_LENGTH } from './consts';\n\n/**\n * Corrects a hex color to have length 3 or 6. Defaults to white if too short.\n * Does NOT check anything besides the length (such as valid characters) and does NOT handle\n * hex values starting with # sign.\n */\nexport function correctHex(hex: string): string {\n if (!hex || hex.length < MIN_HEX_LENGTH) {\n return 'ffffff'; // not a valid color--default to white\n }\n if (hex.length >= MAX_HEX_LENGTH) {\n return hex.substring(0, MAX_HEX_LENGTH);\n }\n return hex.substring(0, MIN_HEX_LENGTH);\n}\n","import { MAX_COLOR_ALPHA, MAX_COLOR_RGB } from './consts';\nimport { clamp } from './clamp';\nimport type { IRGB } from './interfaces';\n\n/** Corrects an RGB color to fall within the valid range. */\nexport function correctRGB(color: IRGB): IRGB {\n return {\n r: clamp(color.r, MAX_COLOR_RGB),\n g: clamp(color.g, MAX_COLOR_RGB),\n b: clamp(color.b, MAX_COLOR_RGB),\n a: typeof color.a === 'number' ? clamp(color.a, MAX_COLOR_ALPHA) : color.a,\n };\n}\n","import type { IColorPickerStyleProps, IColorPickerStyles } from './ColorPicker.types';\n\nexport const getStyles = (props: IColorPickerStyleProps): IColorPickerStyles => {\n const { className, theme, alphaType } = props;\n\n return {\n root: [\n 'ms-ColorPicker',\n theme.fonts.medium,\n {\n position: 'relative',\n maxWidth: 300,\n },\n className,\n ],\n panel: [\n 'ms-ColorPicker-panel',\n {\n padding: '16px',\n },\n ],\n table: [\n 'ms-ColorPicker-table',\n {\n tableLayout: 'fixed',\n width: '100%',\n selectors: {\n 'tbody td:last-of-type .ms-ColorPicker-input': {\n paddingRight: 0,\n },\n },\n },\n ],\n tableHeader: [\n theme.fonts.small,\n {\n selectors: {\n td: {\n paddingBottom: 4,\n },\n },\n },\n ],\n tableHexCell: {\n width: '25%',\n },\n // Account for \"Transparency\" being a longer word\n tableAlphaCell: alphaType === 'transparency' && {\n width: '22%',\n },\n colorSquare: [\n 'ms-ColorPicker-colorSquare',\n {\n width: 48,\n height: 48,\n margin: '0 0 0 8px',\n border: '1px solid #c8c6c4',\n forcedColorAdjust: 'none',\n },\n ],\n flexContainer: {\n display: 'flex',\n },\n flexSlider: {\n flexGrow: '1',\n },\n flexPreviewBox: {\n flexGrow: '0',\n },\n input: [\n 'ms-ColorPicker-input',\n {\n width: '100%',\n border: 'none',\n boxSizing: 'border-box',\n height: 30,\n selectors: {\n '&.ms-TextField': {\n paddingRight: 4,\n },\n '& .ms-TextField-field': {\n minWidth: 'auto',\n padding: 5,\n textOverflow: 'clip',\n },\n },\n },\n ],\n };\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CForm_args, _CForm_fields, _CForm_controls, _CForm_rows, _CForm_disableUpdateCallback, _CForm_readonly, _CForm_onInitEvent, _CForm_onValuesChangedEvent, _CForm_subscribers, _CForm_onBeforeSave, _CForm_onSaved, _CForm_onSavingError, _CForm_values, _CForm_onLoadPageDataArgs, _CForm_insertAsync, _CForm_updateAsync, _CForm_saveFiles, _CForm_initializeComponent, _CForm_onInit;\r\nimport { ArgumentNullException, ReadonlyCollection } from \"@ioip/core/lib\";\r\nimport DateOnly from '@ioip/core/lib/datetime/DateOnly';\r\nimport DateTime from '@ioip/core/lib/datetime/DateTime';\r\nimport TimeOnly from '@ioip/core/lib/datetime/TimeOnly';\r\nimport { Guid, isNullOrEmpty } from \"@ioip/core/lib/utilities\";\r\nimport { List } from \"linq.ts\";\r\nimport React from \"react\";\r\nimport { ControlType } from '../../types/ControlType';\r\nimport CalculatedField from \"../CalculatedField/CalculatedField\";\r\nimport CCard from \"../Card/CCard\";\r\nimport CCaseFileSelector from \"../CaseFileSelector/CCaseFileSelector\";\r\nimport CCheckBox from \"../CheckBox/CCheckBox\";\r\nimport CCitySelector from \"../CitySelector/CCitySelector\";\r\nimport CColorSelector from \"../ColorSelector/CColorSelector\";\r\nimport CComboBox from \"../ComboBox/CComboBox\";\r\nimport CControl from \"../Control/CControl\";\r\nimport CCountrySelector from \"../CountrySelector/CCountrySelector\";\r\nimport CCurrencyField from \"../CurrencyField/CCurrencyField\";\r\nimport CDataTable from \"../DataTable/types/CDataTable\";\r\nimport DataTableRow from \"../DataTable/types/DataTableRow\";\r\nimport CDatePicker from \"../DatePicker/CDatePicker\";\r\nimport CDateTimePicker from \"../DateTimePicker/CDateTimePicker\";\r\nimport CDepartmentSelector from \"../DepartmentSelector/CDepartmentSelector\";\r\nimport { CFileManager } from \"../FileManager/CFileManager\";\r\nimport CGanttDiagram from \"../Gantt/types/CGanttDiagram\";\r\nimport CImage from \"../Image/CImage\";\r\nimport CLabel from \"../Label/CLabel\";\r\nimport CNumberField from \"../NumberField/CNumberField\";\r\nimport CRow from \"../Row/CRow\";\r\nimport CSubtitle from \"../Subtitle/CSubtitle\";\r\nimport CTextField from \"../TextField/CTextField\";\r\nimport CTimePicker from \"../TimePicker/CTimePicker\";\r\nimport CTitle from \"../Title/CTitle\";\r\nimport { FormLayout } from \"../types/FormLayout\";\r\nimport CUserSelector from \"../UserSelector/CUserSelector\";\r\nimport { XForm } from \"./XForm\";\r\nexport class CForm {\r\n constructor(props) {\r\n _CForm_args.set(this, void 0);\r\n _CForm_fields.set(this, null);\r\n _CForm_controls.set(this, []);\r\n _CForm_rows.set(this, []);\r\n _CForm_disableUpdateCallback.set(this, false);\r\n _CForm_readonly.set(this, false);\r\n _CForm_onInitEvent.set(this, void 0);\r\n _CForm_onValuesChangedEvent.set(this, void 0);\r\n _CForm_subscribers.set(this, []);\r\n _CForm_onBeforeSave.set(this, void 0);\r\n _CForm_onSaved.set(this, void 0);\r\n _CForm_onSavingError.set(this, void 0);\r\n _CForm_values.set(this, new DataTableRow({ data: {}, table: null }));\r\n _CForm_onLoadPageDataArgs.set(this, void 0);\r\n _CForm_insertAsync.set(this, (formValues) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = yield __classPrivateFieldGet(this, _CForm_args, \"f\").procesoxEngine.insertV2FormDataAsync(this.objectId, formValues);\r\n if (this.keyField != null)\r\n this.keyField.value = id;\r\n yield __classPrivateFieldGet(this, _CForm_saveFiles, \"f\").call(this, id);\r\n (_a = __classPrivateFieldGet(this, _CForm_onSaved, \"f\")) === null || _a === void 0 ? void 0 : _a.call(this);\r\n return id;\r\n }));\r\n _CForm_updateAsync.set(this, (itemId, formValues) => __awaiter(this, void 0, void 0, function* () {\r\n var _b, _c;\r\n try {\r\n yield __classPrivateFieldGet(this, _CForm_args, \"f\").procesoxEngine.updateV2FormDataAsync(this.objectId, itemId, formValues, this.onLoadPageDataArgs);\r\n yield __classPrivateFieldGet(this, _CForm_saveFiles, \"f\").call(this, itemId);\r\n (_b = __classPrivateFieldGet(this, _CForm_onSaved, \"f\")) === null || _b === void 0 ? void 0 : _b.call(this);\r\n return itemId;\r\n }\r\n catch (error) {\r\n (_c = __classPrivateFieldGet(this, _CForm_onSavingError, \"f\")) === null || _c === void 0 ? void 0 : _c.call(this, error);\r\n throw error;\r\n }\r\n }));\r\n _CForm_saveFiles.set(this, (itemId) => __awaiter(this, void 0, void 0, function* () {\r\n const fileFields = this.fields.where(x => x.controlType == ControlType.documentUploader).cast().toArray();\r\n if (fileFields.length == 0)\r\n return;\r\n for (let i = 0; i < fileFields.length; i++) {\r\n const fileField = fileFields[i];\r\n yield fileField.startUploadAsync();\r\n }\r\n }));\r\n this.subscribe = (callback) => {\r\n if (__classPrivateFieldGet(this, _CForm_subscribers, \"f\").indexOf(callback) >= 0)\r\n return;\r\n __classPrivateFieldGet(this, _CForm_subscribers, \"f\").push(callback);\r\n };\r\n this.unsubscribe = (callback) => {\r\n __classPrivateFieldSet(this, _CForm_subscribers, __classPrivateFieldGet(this, _CForm_subscribers, \"f\").filter(x => x != callback), \"f\");\r\n };\r\n this.serializeValues = () => {\r\n const values = this.values;\r\n const processFields = (form, values = {}) => {\r\n const result = {};\r\n if (values[Guid.empty.toString()] != null)\r\n result[Guid.empty.toString()] = values[Guid.empty.toString()];\r\n for (let key in values) {\r\n const field = form.getField(key);\r\n const value = values[key];\r\n if (field == null || field.ignoreChanges)\r\n continue;\r\n const isArray = value instanceof Array;\r\n if (isArray) {\r\n const dtForm = field.cast().createFormInstance();\r\n result[key] = value.map((x) => processFields(dtForm, x.value));\r\n }\r\n else {\r\n if (value instanceof DateOnly)\r\n result[key] = value.toString();\r\n else if (value instanceof TimeOnly)\r\n result[key] = value.toString();\r\n else if (value instanceof DateTime)\r\n result[key] = value.toString();\r\n else if (value instanceof Date)\r\n result[key] = new DateTime(value).toString();\r\n else\r\n result[key] = value;\r\n }\r\n }\r\n return result;\r\n };\r\n const result = processFields(this, values.value);\r\n return result;\r\n };\r\n _CForm_initializeComponent.set(this, () => {\r\n var _a, _b, _c, _d;\r\n const createOptions = (schema) => ({\r\n form: this,\r\n schema,\r\n onReadValue: field => { var _a; return (_a = __classPrivateFieldGet(this, _CForm_values, \"f\")) === null || _a === void 0 ? void 0 : _a.getValue(field.id); },\r\n onWriteValue: (field, value) => {\r\n __classPrivateFieldGet(this, _CForm_values, \"f\").setValue(schema.id, value);\r\n if (!__classPrivateFieldGet(this, _CForm_disableUpdateCallback, \"f\"))\r\n this.refresh();\r\n },\r\n engine: __classPrivateFieldGet(this, _CForm_args, \"f\").procesoxEngine\r\n });\r\n const fields = new List(__classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.fields || []).Select(schema => {\r\n switch (schema.controlType) {\r\n case ControlType.row:\r\n case ControlType.undefined:\r\n case null:\r\n case undefined:\r\n return new CRow(createOptions(schema));\r\n case ControlType.textField:\r\n return new CTextField(createOptions(schema));\r\n case ControlType.numberField:\r\n return new CNumberField(createOptions(schema));\r\n case ControlType.currencyField:\r\n return new CCurrencyField(createOptions(schema));\r\n case ControlType.checkBox:\r\n return new CCheckBox(createOptions(schema));\r\n case ControlType.userSelector:\r\n return new CUserSelector(createOptions(schema));\r\n case ControlType.sectionSelector:\r\n case ControlType.comboBox:\r\n return new CComboBox(createOptions(schema));\r\n case ControlType.colorSelector:\r\n return new CColorSelector(createOptions(schema));\r\n case ControlType.countrySelector:\r\n return new CCountrySelector(createOptions(schema));\r\n case ControlType.citySelector:\r\n return new CCitySelector(createOptions(schema));\r\n case ControlType.departmentSelector:\r\n return new CDepartmentSelector(createOptions(schema));\r\n case ControlType.caseFileSelector:\r\n return new CCaseFileSelector(createOptions(schema));\r\n case ControlType.dataTable:\r\n case ControlType.entityDataTable:\r\n return new CDataTable(createOptions(schema));\r\n case ControlType.label:\r\n return new CLabel(createOptions(schema));\r\n case ControlType.image:\r\n return new CImage(createOptions(schema));\r\n case ControlType.subtitle:\r\n return new CSubtitle(createOptions(schema));\r\n case ControlType.title:\r\n return new CTitle(createOptions(schema));\r\n case ControlType.card:\r\n return new CCard(createOptions(schema));\r\n case ControlType.dateTimePicker:\r\n return new CDateTimePicker(createOptions(schema));\r\n case ControlType.datePicker:\r\n return new CDatePicker(createOptions(schema));\r\n case ControlType.timePicker:\r\n return new CTimePicker(createOptions(schema));\r\n case ControlType.calculatedField:\r\n return new CalculatedField(createOptions(schema));\r\n case ControlType.documentUploader:\r\n return new CFileManager(createOptions(schema));\r\n case ControlType.ganttDiagram:\r\n return new CGanttDiagram(createOptions(schema));\r\n default:\r\n return new CControl(createOptions(schema));\r\n }\r\n }).ToArray();\r\n __classPrivateFieldSet(this, _CForm_fields, new ReadonlyCollection(fields), \"f\");\r\n __classPrivateFieldSet(this, _CForm_controls, (_b = (_a = __classPrivateFieldGet(this, _CForm_fields, \"f\").where(x => x.controlType != ControlType.row && x.controlType != ControlType.undefined).cast()) === null || _a === void 0 ? void 0 : _a.toArray()) !== null && _b !== void 0 ? _b : [], \"f\");\r\n __classPrivateFieldSet(this, _CForm_rows, (_d = (_c = __classPrivateFieldGet(this, _CForm_fields, \"f\").where(x => x.controlType == ControlType.row || x.controlType == ControlType.undefined).cast()) === null || _c === void 0 ? void 0 : _c.toArray()) !== null && _d !== void 0 ? _d : [], \"f\");\r\n if (this.isRuntime) {\r\n __classPrivateFieldSet(this, _CForm_onInitEvent, this.createLogixInstance('onInit', 'init', __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.onInit), \"f\");\r\n __classPrivateFieldSet(this, _CForm_onValuesChangedEvent, this.createLogixInstance('onValuesChanged', 'init', __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.onValuesChanged), \"f\");\r\n }\r\n });\r\n this.createLogixInstance = (name, type, flow, args) => {\r\n if (flow == null)\r\n return null;\r\n const fn = this.runtime.createLoginEngine(`${this.code}.${name}`, {\r\n edges: flow.edges,\r\n nodes: flow.nodes,\r\n currentForm: this,\r\n type: type\r\n });\r\n return fn;\r\n };\r\n this.showConfirmationDialogAsync = () => __awaiter(this, void 0, void 0, function* () {\r\n var _d, _e;\r\n if (!this.isRuntime)\r\n return false;\r\n if (!this.showSaveConfirmationDialog)\r\n return true;\r\n const message = (_d = this.saveConfirmationDialogMessage) !== null && _d !== void 0 ? _d : '¿Está seguro que desea guardar cambios?';\r\n const title = (_e = this.saveConfirmationDialogTitle) !== null && _e !== void 0 ? _e : 'Guardar';\r\n const result = __classPrivateFieldGet(this, _CForm_args, \"f\").procesoxEngine.host.showConfirmAsync(message, title);\r\n return result;\r\n });\r\n _CForm_onInit.set(this, () => {\r\n if (!this.isRuntime)\r\n return;\r\n const fn = __classPrivateFieldGet(this, _CForm_onInitEvent, \"f\");\r\n fn === null || fn === void 0 ? void 0 : fn();\r\n });\r\n __classPrivateFieldSet(this, _CForm_args, props, \"f\");\r\n __classPrivateFieldGet(this, _CForm_initializeComponent, \"f\").call(this);\r\n if (props.initialValues != null) {\r\n __classPrivateFieldGet(this, _CForm_values, \"f\").setInitialValues(props.initialValues);\r\n }\r\n __classPrivateFieldGet(this, _CForm_onInit, \"f\").call(this);\r\n }\r\n get objectId() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").object.objectId;\r\n }\r\n get code() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").object.code;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").object.name;\r\n }\r\n get title() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.title;\r\n }\r\n get formLayout() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.formLayout) !== null && _a !== void 0 ? _a : FormLayout.normal;\r\n }\r\n get useDataTablePage() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.useDataTablePage) !== null && _a !== void 0 ? _a : false;\r\n }\r\n get keyField() {\r\n return this.fields.firstOrDefault(x => x.id == __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.keyFieldId);\r\n }\r\n get itemId() {\r\n var _a, _b, _c;\r\n return (_c = (_b = (_a = this.keyField) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : this.____itemId) !== null && _c !== void 0 ? _c : 0;\r\n }\r\n set itemId(value) {\r\n if (this.keyField != null)\r\n this.keyField.value = value;\r\n else\r\n this.____itemId = value;\r\n }\r\n get page() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").page;\r\n }\r\n get project() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").project;\r\n }\r\n get runtime() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").procesoxEngine;\r\n }\r\n get description() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").object.description || '';\r\n }\r\n get connectors() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").connectors || [];\r\n }\r\n get fields() {\r\n const fields = __classPrivateFieldGet(this, _CForm_fields, \"f\");\r\n return fields.where(x => x.controlType != ControlType.row && x.controlType != ControlType.undefined).cast();\r\n }\r\n get tables() {\r\n return __classPrivateFieldGet(this, _CForm_fields, \"f\").where(x => x instanceof CDataTable).cast();\r\n }\r\n get buildCommandBarItems() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.permissions || [];\r\n }\r\n get rows() {\r\n return __classPrivateFieldGet(this, _CForm_rows, \"f\");\r\n }\r\n get visibleRows() {\r\n var _a;\r\n if (!this.isRuntime)\r\n return this.rows;\r\n const result = (_a = this.rows.filter(x => x.visibleChildren.any())) !== null && _a !== void 0 ? _a : [];\r\n return result;\r\n }\r\n get dataGridPercentageFieldId() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.dataGridPercentageFieldId) !== null && _a !== void 0 ? _a : Guid.empty.toString();\r\n }\r\n get dataGridDetailsFieldPrefix() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.dataGridDetailsFieldPrefix;\r\n }\r\n get dataGridDetailsFieldId() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.dataGridDetailsFieldId) !== null && _a !== void 0 ? _a : Guid.empty.toString();\r\n }\r\n get readonly() {\r\n var _a, _b;\r\n return (_b = (_a = __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.readonly) !== null && _a !== void 0 ? _a : __classPrivateFieldGet(this, _CForm_readonly, \"f\")) !== null && _b !== void 0 ? _b : false;\r\n }\r\n set readonly(value) {\r\n __classPrivateFieldSet(this, _CForm_readonly, value !== null && value !== void 0 ? value : false, \"f\");\r\n this.refresh();\r\n }\r\n get scope() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").scope;\r\n }\r\n get isUpdate() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").isUpdate || false;\r\n }\r\n get isRuntime() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").isRuntime || false;\r\n }\r\n get showSaveConfirmationDialog() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.showSaveConfirmationDialog) !== null && _a !== void 0 ? _a : false;\r\n }\r\n get saveConfirmationDialogTitle() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.saveConfirmationDialogTitle;\r\n }\r\n get saveConfirmationDialogMessage() {\r\n return __classPrivateFieldGet(this, _CForm_args, \"f\").object.schema.saveConfirmationDialogMessage;\r\n }\r\n get controls() {\r\n var _a;\r\n return (_a = __classPrivateFieldGet(this, _CForm_controls, \"f\")) !== null && _a !== void 0 ? _a : [];\r\n }\r\n get values() {\r\n return __classPrivateFieldGet(this, _CForm_values, \"f\");\r\n }\r\n set values(values) {\r\n if (values == null) {\r\n __classPrivateFieldGet(this, _CForm_values, \"f\").clear();\r\n return;\r\n }\r\n __classPrivateFieldSet(this, _CForm_disableUpdateCallback, true, \"f\");\r\n if (values instanceof DataTableRow) {\r\n __classPrivateFieldSet(this, _CForm_values, values, \"f\");\r\n for (let i = 0; i < __classPrivateFieldGet(this, _CForm_controls, \"f\").length; i++) {\r\n const control = __classPrivateFieldGet(this, _CForm_controls, \"f\")[i];\r\n control.value = __classPrivateFieldGet(this, _CForm_values, \"f\").getValue(control.id);\r\n }\r\n }\r\n else {\r\n for (const key in values) {\r\n if (Object.prototype.hasOwnProperty.call(values, key)) {\r\n const field = __classPrivateFieldGet(this, _CForm_fields, \"f\").firstOrDefault(x => x.id == key);\r\n if (field != null) {\r\n const value = values[key];\r\n field.value = value;\r\n }\r\n }\r\n }\r\n }\r\n __classPrivateFieldSet(this, _CForm_disableUpdateCallback, false, \"f\");\r\n this.refresh();\r\n }\r\n get onLoadPageDataArgs() {\r\n return __classPrivateFieldGet(this, _CForm_onLoadPageDataArgs, \"f\");\r\n }\r\n set onLoadPageDataArgs(value) {\r\n __classPrivateFieldSet(this, _CForm_onLoadPageDataArgs, value, \"f\");\r\n }\r\n getField(nameOrId) {\r\n const fields = this.fields.where(x => x.controlType != ControlType.row).cast();\r\n if (nameOrId instanceof Guid) {\r\n const id = nameOrId.toString();\r\n return fields.firstOrDefault(x => x.id == id);\r\n }\r\n else if (Guid.isValid(nameOrId)) {\r\n return fields.firstOrDefault(x => x.id == nameOrId);\r\n }\r\n return fields.firstOrDefault(x => x.name == nameOrId);\r\n }\r\n refresh() {\r\n var _a;\r\n if (!__classPrivateFieldGet(this, _CForm_disableUpdateCallback, \"f\")) {\r\n for (let i = 0; i < __classPrivateFieldGet(this, _CForm_subscribers, \"f\").length; i++) {\r\n const subscriber = __classPrivateFieldGet(this, _CForm_subscribers, \"f\")[i];\r\n subscriber(this);\r\n }\r\n }\r\n (_a = __classPrivateFieldGet(this, _CForm_onValuesChangedEvent, \"f\")) === null || _a === void 0 ? void 0 : _a.call(this);\r\n }\r\n validate() {\r\n const errors = this.fields\r\n .where(x => x.visible)\r\n .where(x => !x.validate()).toArray();\r\n return errors.length === 0;\r\n }\r\n saveV1Async() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const removeKeys = (object) => {\r\n for (const key in object) {\r\n if (Object.prototype.hasOwnProperty.call(object, key)) {\r\n if (object[key] instanceof Array) {\r\n for (let i = 0; i < object[key].length; i++) {\r\n object[key][i] = removeKeys(object[key][i]);\r\n }\r\n }\r\n }\r\n }\r\n return object;\r\n };\r\n const values = removeKeys(Object.assign({}, this.values));\r\n const itemId = __classPrivateFieldGet(this, _CForm_args, \"f\").itemId;\r\n const isUpdate = itemId != null && !isNullOrEmpty(String(itemId));\r\n if (isUpdate)\r\n yield __classPrivateFieldGet(this, _CForm_args, \"f\").procesoxEngine.updateV1FormDataAsync(this.objectId, itemId, values);\r\n else\r\n yield __classPrivateFieldGet(this, _CForm_args, \"f\").procesoxEngine.insertV1FormDataAsync(this.objectId, values);\r\n });\r\n }\r\n saveV2Async() {\r\n var _a, _b, _c, _d;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this.isRuntime) {\r\n console.warn('Invalid operation, the form is not in runtime mode');\r\n return null;\r\n }\r\n const formValues = this.serializeValues();\r\n const itemId = (_a = __classPrivateFieldGet(this, _CForm_args, \"f\").itemId) !== null && _a !== void 0 ? _a : (_b = this.keyField) === null || _b === void 0 ? void 0 : _b.value;\r\n const isUpdate = itemId != null && !isNullOrEmpty(String(itemId)) && String(itemId) != '0';\r\n try {\r\n (_c = __classPrivateFieldGet(this, _CForm_onBeforeSave, \"f\")) === null || _c === void 0 ? void 0 : _c.call(this);\r\n if (isUpdate)\r\n return __classPrivateFieldGet(this, _CForm_updateAsync, \"f\").call(this, itemId, formValues);\r\n else\r\n return yield __classPrivateFieldGet(this, _CForm_insertAsync, \"f\").call(this, formValues);\r\n }\r\n catch (error) {\r\n (_d = __classPrivateFieldGet(this, _CForm_onSavingError, \"f\")) === null || _d === void 0 ? void 0 : _d.call(this, error);\r\n throw error;\r\n }\r\n });\r\n }\r\n clone(options) {\r\n ArgumentNullException.throwIfNull(options, 'options');\r\n const { values, isUpdate, scope } = options;\r\n const clone = new CForm(Object.assign(Object.assign({}, __classPrivateFieldGet(this, _CForm_args, \"f\")), { isUpdate, scope }));\r\n if (values instanceof DataTableRow) {\r\n clone.values = new DataTableRow({ data: values.value, table: values.table });\r\n }\r\n else {\r\n clone.values = new DataTableRow({ data: values, table: null });\r\n }\r\n return clone;\r\n }\r\n render() {\r\n return React.createElement(XForm, { form: this, showTitle: false });\r\n }\r\n getAsComboboxOption() {\r\n return {\r\n key: this.objectId,\r\n text: this.name\r\n };\r\n }\r\n set onBeforeSave(callback) {\r\n __classPrivateFieldSet(this, _CForm_onBeforeSave, callback, \"f\");\r\n }\r\n set onSavingError(callback) {\r\n __classPrivateFieldSet(this, _CForm_onSavingError, callback, \"f\");\r\n }\r\n set onSaved(callback) {\r\n __classPrivateFieldSet(this, _CForm_onSaved, callback, \"f\");\r\n }\r\n}\r\n_CForm_args = new WeakMap(), _CForm_fields = new WeakMap(), _CForm_controls = new WeakMap(), _CForm_rows = new WeakMap(), _CForm_disableUpdateCallback = new WeakMap(), _CForm_readonly = new WeakMap(), _CForm_onInitEvent = new WeakMap(), _CForm_onValuesChangedEvent = new WeakMap(), _CForm_subscribers = new WeakMap(), _CForm_onBeforeSave = new WeakMap(), _CForm_onSaved = new WeakMap(), _CForm_onSavingError = new WeakMap(), _CForm_values = new WeakMap(), _CForm_onLoadPageDataArgs = new WeakMap(), _CForm_insertAsync = new WeakMap(), _CForm_updateAsync = new WeakMap(), _CForm_saveFiles = new WeakMap(), _CForm_initializeComponent = new WeakMap(), _CForm_onInit = new WeakMap();\r\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ColorPickerBase } from './ColorPicker.base';\nimport { getStyles } from './ColorPicker.styles';\nimport type { IColorPickerProps, IColorPickerStyles, IColorPickerStyleProps } from './ColorPicker.types';\n\nexport const ColorPicker: React.FunctionComponent = styled<\n IColorPickerProps,\n IColorPickerStyleProps,\n IColorPickerStyles\n>(ColorPickerBase, getStyles, undefined, { scope: 'ColorPicker' });\n","import { Callout, ColorPicker, DirectionalHint, FocusTrapZone, TextField } from '@fluentui/react';\r\nimport { XTextField } from '@ioip/core/lib';\r\nimport { useForceUpdate } from '@ioip/core/lib/hooks/useForceState';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nexport const ColorSelectorComponent = (props) => {\r\n var _a;\r\n const field = props.field;\r\n const forceUpdate = useForceUpdate();\r\n const label = field.label;\r\n const readonly = field.readonly;\r\n const disabled = readonly || field.disabled;\r\n const required = field.required;\r\n const isRuntime = field.isRuntime;\r\n const value = (_a = field.value) !== null && _a !== void 0 ? _a : '';\r\n const [show, setShow] = useState(false);\r\n const ref = useRef();\r\n useEffect(() => {\r\n const onUpdated = () => forceUpdate();\r\n if (isRuntime)\r\n props.field.subscribe(onUpdated);\r\n return () => {\r\n if (isRuntime)\r\n props.field.unsubscribe(onUpdated);\r\n };\r\n }, []);\r\n if (!isRuntime)\r\n return React.createElement(XTextField, { readonly: true, label: label || '', value: 'Color Selector' });\r\n if (readonly) {\r\n return React.createElement(XTextField, { label: label || '', required: required || false, disabled: true, readonly: true, value: value || '', errorMessage: props.field.errorMessage || '' });\r\n }\r\n return React.createElement(\"div\", { ref: ref, style: { position: 'relative' } },\r\n React.createElement(TextField, { readOnly: true, iconProps: { iconName: 'Color' }, label: label || '', onClick: () => setShow(true), value: value || '' }),\r\n show && React.createElement(Callout, { isBeakVisible: false, style: { outline: 'none', overflow: 'hidden' }, gapSpace: 0, doNotLayer: true, target: ref, directionalHint: DirectionalHint.bottomLeftEdge, onDismiss: () => setShow(false) },\r\n React.createElement(FocusTrapZone, { isClickableOutsideFocusTrap: true },\r\n React.createElement(ColorPicker, { color: value, onChange: (_, value) => {\r\n field.value = value.hex;\r\n } }))));\r\n};\r\n","import React from \"react\";\r\nimport { ControlType } from \"../../types\";\r\nimport { XCalculatedField } from \"../CalculatedField/XCalculatedField\";\r\nimport { CardComponent } from \"../Card/CardComponent\";\r\nimport { UXCheckBox } from \"../CheckBox/UXCheckBox\";\r\nimport { UICitySelector } from \"../CitySelector/CitySelectorComponent\";\r\nimport { ComboBoxComponent } from \"../ComboBox/ComboBoxComponent\";\r\nimport { CountrySelectorComponent } from \"../CountrySelector/CountrySelectorComponent\";\r\nimport { CurrencyFieldComponent } from \"../CurrencyField/CurrencyFieldComponent\";\r\nimport { DataTableComponent } from \"../DataTable/components/DataTableComponent\";\r\nimport { DatePickerComponent } from \"../DatePicker/DatePickerComponent\";\r\nimport { DateTimePickerComponent } from \"../DateTimePicker/DateTimePickerComponent\";\r\nimport { XDepartmentSelector } from \"../DepartmentSelector/XDepartmentSelector\";\r\nimport { CaseFileSelectorComponent } from \"../CaseFileSelector/CaseFileSelectorComponent\";\r\nimport { XFileManager } from \"../FileManager/XFileManager\";\r\nimport { UXGanttDiagram } from \"../Gantt/UXGanttDiagram\";\r\nimport { HorizontalLineComponent } from \"../HorizontalLine/HorizontalLineComponent\";\r\nimport { ImageComponent } from \"../Image/ImageComponent\";\r\nimport { XLabel } from \"../Label/XLabel\";\r\nimport { NumberFieldComponent } from \"../NumberField/NumberFieldComponent\";\r\nimport { XReactComponent } from \"../ReactComponent/XReactComponent\";\r\nimport { RowComponent } from \"../Row/RowComponent\";\r\nimport { XSubtitle } from \"../Subtitle/XSubtitle\";\r\nimport { TextFieldComponent } from \"../TextField/TextFieldComponent\";\r\nimport { TimePickerComponent } from \"../TimePicker/TimePickerComponent\";\r\nimport { XTitle } from \"../Title/XTitle\";\r\nimport { UserSelectorComponent } from \"../UserSelector/UserSelectorComponent\";\r\nimport { SearchableComboBoxComponent } from \"../components/SearchableComboBoxComponent\";\r\nimport { UnknownComponent } from \"../components/UnknownComponent\";\r\nimport { ColorSelectorComponent } from \"../ColorSelector/ColorSelectorComponent\";\r\nconst _standarComponents = {};\r\nconst _customComponents = {};\r\nconst _projectComponents = {};\r\nconst registerComponent = (controlType, component) => {\r\n if (typeof controlType === 'string')\r\n _standarComponents[controlType.toLowerCase()] = component;\r\n else\r\n _standarComponents[ControlType[controlType].toLowerCase()] = component;\r\n};\r\nexport const registerStandarComponent = () => {\r\n registerComponent(ControlType.comboBox, ComboBoxComponent);\r\n registerComponent(ControlType.userSelector, UserSelectorComponent);\r\n registerComponent(ControlType.textField, TextFieldComponent);\r\n registerComponent(ControlType.checkBox, UXCheckBox);\r\n registerComponent(ControlType.citySelector, UICitySelector);\r\n registerComponent(ControlType.departmentSelector, XDepartmentSelector);\r\n registerComponent(ControlType.caseFileSelector, CaseFileSelectorComponent);\r\n registerComponent(ControlType.countrySelector, CountrySelectorComponent);\r\n registerComponent(ControlType.searchableComboBox, SearchableComboBoxComponent);\r\n registerComponent(ControlType.dataTable, DataTableComponent);\r\n registerComponent(ControlType.entityDataTable, DataTableComponent);\r\n registerComponent(ControlType.image, ImageComponent);\r\n registerComponent(ControlType.horizontalLine, HorizontalLineComponent);\r\n registerComponent(ControlType.label, XLabel);\r\n registerComponent(ControlType.numberField, NumberFieldComponent);\r\n registerComponent(ControlType.currencyField, CurrencyFieldComponent);\r\n registerComponent(ControlType.title, XTitle);\r\n registerComponent(ControlType.subtitle, XSubtitle);\r\n registerComponent(ControlType.timePicker, TimePickerComponent);\r\n registerComponent(ControlType.datePicker, DatePickerComponent);\r\n registerComponent(ControlType.dateTimePicker, DateTimePickerComponent);\r\n registerComponent(ControlType.card, CardComponent);\r\n registerComponent(ControlType.row, RowComponent);\r\n registerComponent(ControlType.documentUploader, XFileManager);\r\n registerComponent(ControlType.reactComponent, XReactComponent);\r\n registerComponent(ControlType.calculatedField, XCalculatedField);\r\n registerComponent(ControlType.ganttDiagram, UXGanttDiagram);\r\n registerComponent(ControlType.colorSelector, ColorSelectorComponent);\r\n};\r\nexport const registerCustomComponent = (name, component) => {\r\n _customComponents[name.toLowerCase()] = component;\r\n};\r\nexport const registerProjectComponent = (name, component) => {\r\n _projectComponents[name.toLowerCase()] = component;\r\n};\r\nexport const ComponentSource = (props) => {\r\n var _a, _b;\r\n const componentName = typeof props.controlType === 'string'\r\n ? props.controlType.toLowerCase() :\r\n ControlType[props.controlType].toLowerCase();\r\n const Component = (_b = (_a = _standarComponents[componentName]) !== null && _a !== void 0 ? _a : _customComponents[componentName]) !== null && _b !== void 0 ? _b : _projectComponents[componentName];\r\n return Component != null\r\n ? React.createElement(React.Fragment, null,\r\n React.createElement(Component, Object.assign({}, props.componentProps)))\r\n : React.createElement(UnknownComponent, { schema: props.componentProps, id: \"unknown\" });\r\n};\r\n","import { Column } from \"@ioip/core/lib\";\r\nimport React from \"react\";\r\nimport { ControlType } from \"../../types\";\r\nimport { ComponentSource } from \"../ComponentSource/ComponentSource\";\r\nexport const UXField = (props) => {\r\n var _a;\r\n const controlType = (_a = props.field.controlType) !== null && _a !== void 0 ? _a : ControlType.row;\r\n const visible = controlType == ControlType.row\r\n ? props.field.cast().children.any(x => x.visible)\r\n : props.field.visible;\r\n if (!visible)\r\n return React.createElement(React.Fragment, null);\r\n const colSm = props.field.colSm || 12;\r\n const colMd = props.field.colMd || 12;\r\n const colLg = props.field.colLg || 12;\r\n const colXl = props.field.colXl || 12;\r\n const colXxl = props.field.colXxl || 12;\r\n const colXxxl = props.field.colXxxl || 12;\r\n return controlType == ControlType.row\r\n ? React.createElement(ComponentSource, { controlType: controlType, componentProps: props, devMode: false })\r\n : React.createElement(Column, { sm: colSm, md: colMd, lg: colLg, xl: colXl, xxl: colXxl, xxxl: colXxxl }, React.createElement(ComponentSource, { controlType: controlType, componentProps: props, devMode: false }));\r\n};\r\n","import { CommandBar } from \"@fluentui/react\";\r\nimport { Column, Row, Title } from \"@ioip/core/lib/components\";\r\nimport { useForceUpdate } from \"@ioip/core/lib/hooks/useForceState\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { UXField } from \"../components/UXField\";\r\nexport const XForm = (props) => {\r\n var _a;\r\n const forceUpdate = useForceUpdate();\r\n const [commandBar, setcommandBar] = useState();\r\n const title = props.form.title;\r\n const showTitle = props.showTitle == null || props.showTitle == true;\r\n const showCommandBar = (props.showCommandBar == null || props.showCommandBar == true) && ((_a = props.form.buildCommandBarItems) === null || _a === void 0 ? void 0 : _a.length) > 0;\r\n const rows = props.form.visibleRows;\r\n useEffect(() => {\r\n props.form.subscribe(forceUpdate);\r\n }, []);\r\n if (rows.length == 0)\r\n return props.children == null ? React.createElement(React.Fragment, null) : React.createElement(React.Fragment, null, props.children);\r\n return React.createElement(React.Fragment, null,\r\n showTitle && React.createElement(Title, { text: title }),\r\n showCommandBar && React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(CommandBar, { items: commandBar, className: 'command-bar-1' }))),\r\n rows.map(f => React.createElement(UXField, { field: f.cast(), key: f.id, activityInstance: props.activityInstance })));\r\n};\r\n","import { TooltipHost } from \"@fluentui/react\";\r\nimport { EmptyColumn, SearchableComboBox } from \"@ioip/core/lib\";\r\nimport React from \"react\";\r\nexport const EntitySelector = (props) => {\r\n const onSearch = (keyword, item) => {\r\n var _a, _b, _c, _d;\r\n const includeName = ((_d = (_c = (_b = (_a = item.name) === null || _a === void 0 ? void 0 : _a.normalize(\"NFD\")) === null || _b === void 0 ? void 0 : _b.replace(/[\\u0300-\\u036f]/g, '')) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes(keyword)) || false;\r\n return includeName;\r\n };\r\n return React.createElement(SearchableComboBox, { label: props.label || '', columns: [\r\n {\r\n key: 'Nombre',\r\n name: 'Nombre',\r\n minWidth: 200,\r\n maxWidth: 500,\r\n isResizable: true,\r\n onRender: (item) => React.createElement(TooltipHost, { content: item.name },\r\n item.name,\r\n \" [\",\r\n item.objectId,\r\n \"]\")\r\n },\r\n {\r\n key: 'Descripcion',\r\n name: 'Descripción',\r\n minWidth: 200,\r\n maxWidth: 500,\r\n isResizable: true,\r\n onRender: (item) => React.createElement(TooltipHost, { content: item.description }, item.description)\r\n },\r\n EmptyColumn\r\n ], defaultItem: { name: '[Seleccione...]' }, errorMessage: props.errorMessage, keyBinding: x => x.objectId.toString(), onChanged: item => { var _a; return (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, item); }, onFilter: props.onFilter, onRenderSelectedText: x => x.name, onSearch: onSearch, options: props.options || [], selectedKey: props.selectedKey, disabled: props.disabled || false });\r\n};\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _TramitexApi_props;\r\nexport class TramitexApi {\r\n constructor(props) {\r\n _TramitexApi_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _TramitexApi_props, props, \"f\");\r\n }\r\n async getAgeRangesAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getAgeRangesAsync();\r\n }\r\n async getCompanyTypesAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getCompanyTypesAsync();\r\n }\r\n async getContactTypesAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getContactTypesAsync();\r\n }\r\n async getDisabilitiesAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getDisabilitiesAsync();\r\n }\r\n async getEducationLevelsAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getEducationLevelsAsync();\r\n }\r\n async getEthnicGroupsAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getEthnicGroupsAsync();\r\n }\r\n async getGendersAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getGendersAsync();\r\n }\r\n async getIdentificationTypesAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getIdentificationTypesAsync();\r\n }\r\n async getPreferentialTreatmentsAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getPreferentialTreatmentsAsync();\r\n }\r\n async getProfessionsAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getProfessionsAsync();\r\n }\r\n async getOrientationSectorsAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getOrientationSectorsAsync();\r\n }\r\n async getProceduresAsync() {\r\n return __classPrivateFieldGet(this, _TramitexApi_props, \"f\").getProceduresAsync();\r\n }\r\n}\r\n_TramitexApi_props = new WeakMap();\r\n","import { RoleSelector, useArchivox } from \"@ioip/archivox/lib\";\r\nimport { Column, Grid, Row, XComboBox, XDatePicker, XTextField } from \"@ioip/core/lib/components\";\r\nimport React from \"react\";\r\nimport { PermissionAssignmentType, PermissionAssignmentTypeDataSource, PermissionLevelDataSource } from \"../studio-types\";\r\nexport const XPermission = React.memo((props) => {\r\n const [isArchivoxLoading, archivox] = useArchivox({ roles: true });\r\n return React.createElement(Grid, null,\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(XComboBox, { label: \"Assignment type\", value: props.item.assignmentType, onChange: assignmentType => props.setValues({ assignmentType }), options: PermissionAssignmentTypeDataSource }))),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(XComboBox, { label: \"Permission level\", value: props.item.permissionLevel, onChange: permissionLevel => props.setValues({ permissionLevel }), options: PermissionLevelDataSource }))),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(\"p\", null,\r\n React.createElement(\"strong\", null, \"Owner: \"),\r\n \"Grants full access to manage all resources, including the ability to assign roles\",\r\n React.createElement(\"br\", null),\r\n React.createElement(\"strong\", null, \"Contibutor: \"),\r\n \"Grants full access to manage all resources, but does not allow you to assign roles\",\r\n React.createElement(\"br\", null),\r\n React.createElement(\"strong\", null, \"Reader: \"),\r\n \"View all resources, but does not allow you to make any changes\"))),\r\n props.item.assignmentType === PermissionAssignmentType.contact && React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(XComboBox, { label: \"Contact\", value: props.item.contactId, onChange: contactId => props.setValues({ contactId }), options: PermissionAssignmentTypeDataSource }))),\r\n props.item.assignmentType === PermissionAssignmentType.role && React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n isArchivoxLoading && React.createElement(\"p\", null, \"Loading roles...\"),\r\n !isArchivoxLoading && archivox && React.createElement(RoleSelector, { label: \"Role\", selectedKey: props.item.roleId, onChange: x => props.setValues({ roleId: (x === null || x === void 0 ? void 0 : x.roleId) || 0 }), options: archivox.roles.toArray() }))),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(XTextField, { label: \"Description\", value: props.item.description, onChange: description => props.setValues({ description }), multiline: true, maxLength: 64 }))),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(XDatePicker, { label: \"Start date\", value: props.item.startDate, onChange: startDate => props.setValues({ startDate }) }))),\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(XDatePicker, { label: \"End date\", value: props.item.endDate, onChange: endDate => props.setValues({ endDate }) }))));\r\n});\r\n","import { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { StandarDataTable } from \"@ioip/core/lib/components\";\r\nimport React from \"react\";\r\nimport { GetPermissionLevelString } from \"../studio-types\";\r\nimport { GetPermissionAssignmentString } from \"../studio-types/PermissionAssignmentType\";\r\nimport { XPermission } from \"./XPermission\";\r\nexport const XPermissionCollection = React.memo((props) => {\r\n return React.createElement(StandarDataTable, { columns: [\r\n {\r\n name: 'Assignment type',\r\n minWidth: 200,\r\n onRender: x => GetPermissionAssignmentString(x.assignmentType)\r\n },\r\n {\r\n name: 'Permission level',\r\n minWidth: 200,\r\n onRender: item => GetPermissionLevelString(item.permissionLevel)\r\n },\r\n {\r\n name: 'Start date',\r\n minWidth: 150,\r\n onRender: item => isNullOrEmpty(item.startDate) ? 'N/A' : item.startDate\r\n },\r\n {\r\n name: 'End date',\r\n minWidth: 150,\r\n onRender: item => isNullOrEmpty(item.endDate) ? 'N/A' : item.endDate\r\n },\r\n {\r\n name: 'Description',\r\n minWidth: 150,\r\n onRender: item => item.description\r\n }\r\n ], items: props.items || [], panelTitle: \"Permission\", tableTitle: props.title, onItemsChanged: items => props.onChange(items), rowKey: x => x.id, onRenderItemPanel: (item, errors, setValues) => React.createElement(XPermission, { errors: errors, item: item, setValues: setValues }) });\r\n});\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _AgeRange_props;\r\nexport class AgeRange {\r\n constructor(props) {\r\n _AgeRange_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _AgeRange_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _AgeRange_props, \"f\").schema.AgeRangeId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _AgeRange_props, \"f\").schema.Name;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _AgeRange_props, \"f\").schema.Enabled || false;\r\n }\r\n get description() {\r\n return __classPrivateFieldGet(this, _AgeRange_props, \"f\").schema.Description || '';\r\n }\r\n asFluentUI() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_AgeRange_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CompanyType_props;\r\nexport class CompanyType {\r\n constructor(props) {\r\n _CompanyType_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _CompanyType_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _CompanyType_props, \"f\").schema.CompanyTypeId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _CompanyType_props, \"f\").schema.Name;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _CompanyType_props, \"f\").schema.Enabled;\r\n }\r\n get personTypeId() {\r\n return __classPrivateFieldGet(this, _CompanyType_props, \"f\").schema.PersonTypeId;\r\n }\r\n get order() {\r\n return __classPrivateFieldGet(this, _CompanyType_props, \"f\").schema.Order;\r\n }\r\n asFluentUI() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_CompanyType_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _ContactType_props;\r\nexport class ContactType {\r\n constructor(props) {\r\n _ContactType_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _ContactType_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _ContactType_props, \"f\").schema.ContactTypeId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _ContactType_props, \"f\").schema.Name;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _ContactType_props, \"f\").schema.Enabled;\r\n }\r\n asFluentUI() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_ContactType_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Disability_props;\r\nexport class Disability {\r\n constructor(props) {\r\n _Disability_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _Disability_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _Disability_props, \"f\").schema.DisabilityId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _Disability_props, \"f\").schema.Name;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _Disability_props, \"f\").schema.Enabled;\r\n }\r\n asFluentUI() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_Disability_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _EducationLevel_props;\r\nexport class EducationLevel {\r\n constructor(props) {\r\n _EducationLevel_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _EducationLevel_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _EducationLevel_props, \"f\").schema.EducationLevelId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _EducationLevel_props, \"f\").schema.Name;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _EducationLevel_props, \"f\").schema.Enabled;\r\n }\r\n asFluentUI() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_EducationLevel_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _EthnicGroup_props;\r\nexport class EthnicGroup {\r\n constructor(props) {\r\n _EthnicGroup_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _EthnicGroup_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _EthnicGroup_props, \"f\").schema.EthnicGroupId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _EthnicGroup_props, \"f\").schema.Name;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _EthnicGroup_props, \"f\").schema.Enabled;\r\n }\r\n asFluentUI() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_EthnicGroup_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Gender_props;\r\nexport class Gender {\r\n constructor(props) {\r\n _Gender_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _Gender_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _Gender_props, \"f\").schema.GenderId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _Gender_props, \"f\").schema.Name;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _Gender_props, \"f\").schema.Enabled;\r\n }\r\n asFluentUI() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_Gender_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _IdentificationType_props;\r\nexport class IdentificationType {\r\n constructor(props) {\r\n _IdentificationType_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _IdentificationType_props, props, \"f\");\r\n }\r\n get IdentificationTypeId() {\r\n return __classPrivateFieldGet(this, _IdentificationType_props, \"f\").schema.IdentificationTypeId;\r\n }\r\n get Name() {\r\n return __classPrivateFieldGet(this, _IdentificationType_props, \"f\").schema.Name;\r\n }\r\n get PersonTypeId() {\r\n return __classPrivateFieldGet(this, _IdentificationType_props, \"f\").schema.PersonTypeId;\r\n }\r\n get Enabled() {\r\n return __classPrivateFieldGet(this, _IdentificationType_props, \"f\").schema.Enabled;\r\n }\r\n GetComboBoxOption() {\r\n return {\r\n key: this.IdentificationTypeId,\r\n text: this.Name\r\n };\r\n }\r\n}\r\n_IdentificationType_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Procedure_props;\r\nexport class Procedure {\r\n constructor(props) {\r\n _Procedure_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _Procedure_props, props, \"f\");\r\n }\r\n get ProcedureId() {\r\n return __classPrivateFieldGet(this, _Procedure_props, \"f\").schema.ProcedureId;\r\n }\r\n get Name() {\r\n return __classPrivateFieldGet(this, _Procedure_props, \"f\").schema.Name;\r\n }\r\n get Enabled() {\r\n return __classPrivateFieldGet(this, _Procedure_props, \"f\").schema.Enabled;\r\n }\r\n GetComboBoxOption() {\r\n return {\r\n key: this.ProcedureId,\r\n text: this.Name\r\n };\r\n }\r\n}\r\n_Procedure_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Profession_props;\r\nexport class Profession {\r\n constructor(props) {\r\n _Profession_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _Profession_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _Profession_props, \"f\").schema.ProfessionId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _Profession_props, \"f\").schema.Name;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _Profession_props, \"f\").schema.Enabled;\r\n }\r\n asFluentUI() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_Profession_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _PreferentialTreatment_props;\r\nexport class PreferentialTreatment {\r\n constructor(props) {\r\n _PreferentialTreatment_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _PreferentialTreatment_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _PreferentialTreatment_props, \"f\").schema.PreferentialTreatmentId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _PreferentialTreatment_props, \"f\").schema.Name;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _PreferentialTreatment_props, \"f\").schema.Enabled;\r\n }\r\n get order() {\r\n return __classPrivateFieldGet(this, _PreferentialTreatment_props, \"f\").schema.Order;\r\n }\r\n asFluentUI() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_PreferentialTreatment_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _OrientationSector_props;\r\nexport class OrientationSector {\r\n constructor(props) {\r\n _OrientationSector_props.set(this, void 0);\r\n __classPrivateFieldSet(this, _OrientationSector_props, props, \"f\");\r\n }\r\n get id() {\r\n return __classPrivateFieldGet(this, _OrientationSector_props, \"f\").schema.OrientationSectorId;\r\n }\r\n get name() {\r\n return __classPrivateFieldGet(this, _OrientationSector_props, \"f\").schema.Name;\r\n }\r\n get description() {\r\n return __classPrivateFieldGet(this, _OrientationSector_props, \"f\").schema.Description;\r\n }\r\n get enabled() {\r\n return __classPrivateFieldGet(this, _OrientationSector_props, \"f\").schema.Enabled;\r\n }\r\n asFluentUI() {\r\n return {\r\n key: this.id,\r\n text: this.name\r\n };\r\n }\r\n}\r\n_OrientationSector_props = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Tramitex_props, _Tramitex_companyTypes, _Tramitex_contactTypes, _Tramitex_disabilities, _Tramitex_educationLevels, _Tramitex_ethnicGroups, _Tramitex_genders, _Tramitex_identificationTypes, _Tramitex_PreferentialTreatment, _Tramitex_procedures, _Tramitex_professions, _Tramitex_ageRanges, _Tramitex_orientationSectors;\r\nimport { ReadonlyCollection } from '@ioip/core/lib/types';\r\nimport { CompanyType } from './CompanyType';\r\nimport { ContactType } from './ContactType';\r\nimport { Disability } from './Disability';\r\nimport { EducationLevel } from './EducationLevel';\r\nimport { EthnicGroup } from './EthnicGroup';\r\nimport { Gender } from './Gender';\r\nimport { IdentificationType } from './IdentificationType';\r\nimport { Procedure } from './Procedure';\r\nimport { Profession } from './Profession';\r\nimport { PreferentialTreatment } from './PreferentialTreatment';\r\nimport { AgeRange } from './AgeRange';\r\nimport { OrientationSector } from './OrientationSector';\r\nexport class Tramitex {\r\n constructor(props) {\r\n _Tramitex_props.set(this, void 0);\r\n _Tramitex_companyTypes.set(this, new ReadonlyCollection([]));\r\n _Tramitex_contactTypes.set(this, new ReadonlyCollection([]));\r\n _Tramitex_disabilities.set(this, new ReadonlyCollection([]));\r\n _Tramitex_educationLevels.set(this, new ReadonlyCollection([]));\r\n _Tramitex_ethnicGroups.set(this, new ReadonlyCollection([]));\r\n _Tramitex_genders.set(this, new ReadonlyCollection([]));\r\n _Tramitex_identificationTypes.set(this, new ReadonlyCollection([]));\r\n _Tramitex_PreferentialTreatment.set(this, new ReadonlyCollection([]));\r\n _Tramitex_procedures.set(this, new ReadonlyCollection([]));\r\n _Tramitex_professions.set(this, new ReadonlyCollection([]));\r\n _Tramitex_ageRanges.set(this, new ReadonlyCollection([]));\r\n _Tramitex_orientationSectors.set(this, new ReadonlyCollection([]));\r\n __classPrivateFieldSet(this, _Tramitex_props, props, \"f\");\r\n }\r\n get Version() { return \"2.0.0\"; }\r\n get Procedures() {\r\n return __classPrivateFieldGet(this, _Tramitex_procedures, \"f\");\r\n }\r\n get AgeRanges() {\r\n return __classPrivateFieldGet(this, _Tramitex_ageRanges, \"f\");\r\n }\r\n get CompanyTypes() {\r\n return __classPrivateFieldGet(this, _Tramitex_companyTypes, \"f\");\r\n }\r\n get ContactTypes() {\r\n return __classPrivateFieldGet(this, _Tramitex_contactTypes, \"f\");\r\n }\r\n get Disabilities() {\r\n return __classPrivateFieldGet(this, _Tramitex_disabilities, \"f\");\r\n }\r\n get EducationLevels() {\r\n return __classPrivateFieldGet(this, _Tramitex_educationLevels, \"f\");\r\n }\r\n get EthnicGroups() {\r\n return __classPrivateFieldGet(this, _Tramitex_ethnicGroups, \"f\");\r\n }\r\n get Genders() {\r\n return __classPrivateFieldGet(this, _Tramitex_genders, \"f\");\r\n }\r\n get IdentificationTypes() {\r\n return __classPrivateFieldGet(this, _Tramitex_identificationTypes, \"f\");\r\n }\r\n get PreferentialTreatments() {\r\n return __classPrivateFieldGet(this, _Tramitex_PreferentialTreatment, \"f\");\r\n }\r\n get Professions() {\r\n return __classPrivateFieldGet(this, _Tramitex_professions, \"f\");\r\n }\r\n get OrientationSectors() {\r\n return __classPrivateFieldGet(this, _Tramitex_orientationSectors, \"f\");\r\n }\r\n async loadCompanyTypesAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getCompanyTypesAsync();\r\n __classPrivateFieldSet(this, _Tramitex_companyTypes, new ReadonlyCollection(items || []).select(x => new CompanyType({ schema: x })), \"f\");\r\n }\r\n async loadContactTypesAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getContactTypesAsync();\r\n __classPrivateFieldSet(this, _Tramitex_contactTypes, new ReadonlyCollection(items || []).select(x => new ContactType({ schema: x })), \"f\");\r\n }\r\n async loadDisabilitiesAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getDisabilitiesAsync();\r\n __classPrivateFieldSet(this, _Tramitex_disabilities, new ReadonlyCollection(items || []).select(x => new Disability({ schema: x })), \"f\");\r\n }\r\n async loadEducationLevelsAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getEducationLevelsAsync();\r\n __classPrivateFieldSet(this, _Tramitex_educationLevels, new ReadonlyCollection(items || []).select(x => new EducationLevel({ schema: x })), \"f\");\r\n }\r\n async loadEthnicGroupsAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getEthnicGroupsAsync();\r\n __classPrivateFieldSet(this, _Tramitex_ethnicGroups, new ReadonlyCollection(items || []).select(x => new EthnicGroup({ schema: x })), \"f\");\r\n }\r\n async loadGendersAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getGendersAsync();\r\n __classPrivateFieldSet(this, _Tramitex_genders, new ReadonlyCollection(items || []).select(x => new Gender({ schema: x })), \"f\");\r\n }\r\n async loadIdentificationTypesAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getIdentificationTypesAsync();\r\n __classPrivateFieldSet(this, _Tramitex_identificationTypes, new ReadonlyCollection(items || []).select(x => new IdentificationType({ schema: x })), \"f\");\r\n }\r\n async loadPreferentialTreatmentsAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getPreferentialTreatmentsAsync();\r\n __classPrivateFieldSet(this, _Tramitex_PreferentialTreatment, new ReadonlyCollection(items || []).select(x => new PreferentialTreatment({ schema: x })), \"f\");\r\n }\r\n async loadProfessionsAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getProfessionsAsync();\r\n __classPrivateFieldSet(this, _Tramitex_professions, new ReadonlyCollection(items || []).select(x => new Profession({ schema: x })), \"f\");\r\n }\r\n async loadOrientationSectorsAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getOrientationSectorsAsync();\r\n __classPrivateFieldSet(this, _Tramitex_orientationSectors, new ReadonlyCollection(items || []).select(x => new OrientationSector({ schema: x })), \"f\");\r\n }\r\n async loadProceduresAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getProceduresAsync();\r\n __classPrivateFieldSet(this, _Tramitex_procedures, new ReadonlyCollection(items || []).select(x => new Procedure({ sdk: this, schema: x })), \"f\");\r\n }\r\n async loadAgeRangesAsync() {\r\n const items = await __classPrivateFieldGet(this, _Tramitex_props, \"f\").api.getAgeRangesAsync();\r\n __classPrivateFieldSet(this, _Tramitex_ageRanges, new ReadonlyCollection(items || []).select(x => new AgeRange({ schema: x })), \"f\");\r\n }\r\n}\r\n_Tramitex_props = new WeakMap(), _Tramitex_companyTypes = new WeakMap(), _Tramitex_contactTypes = new WeakMap(), _Tramitex_disabilities = new WeakMap(), _Tramitex_educationLevels = new WeakMap(), _Tramitex_ethnicGroups = new WeakMap(), _Tramitex_genders = new WeakMap(), _Tramitex_identificationTypes = new WeakMap(), _Tramitex_PreferentialTreatment = new WeakMap(), _Tramitex_procedures = new WeakMap(), _Tramitex_professions = new WeakMap(), _Tramitex_ageRanges = new WeakMap(), _Tramitex_orientationSectors = new WeakMap();\r\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _Task_task, _Task_metadata;\r\nimport { isNullOrEmpty } from \"@ioip/core/lib/utilities\";\r\nexport class Task {\r\n constructor(task) {\r\n var _a;\r\n _Task_task.set(this, void 0);\r\n _Task_metadata.set(this, void 0);\r\n __classPrivateFieldSet(this, _Task_task, task, \"f\");\r\n __classPrivateFieldSet(this, _Task_metadata, isNullOrEmpty((_a = __classPrivateFieldGet(this, _Task_task, \"f\")) === null || _a === void 0 ? void 0 : _a.Metadata) ? {} : JSON.parse(__classPrivateFieldGet(this, _Task_task, \"f\").Metadata), \"f\");\r\n }\r\n get Subject() {\r\n return __classPrivateFieldGet(this, _Task_task, \"f\").Subject || '';\r\n }\r\n get TaskTypeId() {\r\n return __classPrivateFieldGet(this, _Task_task, \"f\").TaskTypeId || 0;\r\n }\r\n get TaskId() {\r\n return __classPrivateFieldGet(this, _Task_task, \"f\").TaskId || 0;\r\n }\r\n get TaskStatusId() {\r\n return __classPrivateFieldGet(this, _Task_task, \"f\").TaskStatusId || 0;\r\n }\r\n get Description() {\r\n return __classPrivateFieldGet(this, _Task_task, \"f\").Description || '';\r\n }\r\n get InternalComunicationId() {\r\n return __classPrivateFieldGet(this, _Task_task, \"f\").InternalComunicationId || 0;\r\n }\r\n get InputFileId() {\r\n return __classPrivateFieldGet(this, _Task_task, \"f\").InputFileId || 0;\r\n }\r\n get OutputFileId() {\r\n return __classPrivateFieldGet(this, _Task_task, \"f\").OutputFileId || 0;\r\n }\r\n get Metadata() {\r\n return __classPrivateFieldGet(this, _Task_metadata, \"f\");\r\n }\r\n}\r\n_Task_task = new WeakMap(), _Task_metadata = new WeakMap();\r\nexport default Task;\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { TramitexApi } from '../apis/ITramitexApi';\r\nimport { useHost } from '@ioip/core/lib';\r\nimport { Tramitex } from '../types';\r\nconst _context = React.createContext(null);\r\nexport const TramitexProvider = (props) => {\r\n const context = new TramitexApi(props.apis);\r\n return React.createElement(_context.Provider, { value: context }, props.children);\r\n};\r\nexport const useTramitex = (props = {}) => {\r\n const host = useHost();\r\n const context = useContext(_context);\r\n const [state, setState] = useState([true, null]);\r\n useEffect(() => {\r\n const instance = new Tramitex({ context: host.context, api: context });\r\n Promise.all([\r\n props.companyTypes ? instance.loadCompanyTypesAsync() : Promise.resolve([]),\r\n props.contactTypes ? instance.loadContactTypesAsync() : Promise.resolve([]),\r\n props.disabilities ? instance.loadDisabilitiesAsync() : Promise.resolve([]),\r\n props.educationLevels ? instance.loadEducationLevelsAsync() : Promise.resolve([]),\r\n props.ethnicGroups ? instance.loadEthnicGroupsAsync() : Promise.resolve([]),\r\n props.genders ? instance.loadGendersAsync() : Promise.resolve([]),\r\n props.identificationTypes ? instance.loadIdentificationTypesAsync() : Promise.resolve([]),\r\n props.preferentialTreatment ? instance.loadPreferentialTreatmentsAsync() : Promise.resolve([]),\r\n props.procedures ? instance.loadProceduresAsync() : Promise.resolve([]),\r\n props.professions ? instance.loadProfessionsAsync() : Promise.resolve([]),\r\n props.ageRanges ? instance.loadAgeRangesAsync() : Promise.resolve([]),\r\n props.orientationSectors ? instance.loadOrientationSectorsAsync() : Promise.resolve([])\r\n ]).then(() => {\r\n setState([false, instance]);\r\n });\r\n }, []);\r\n if (context == null)\r\n throw new Error('No es posible acceder al contexto de tramitex, verifique que el componente esté dentro del proveedor ');\r\n return state;\r\n};\r\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\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 navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","import { isNullOrEmpty } from \"@ioip/core/lib\";\r\nimport { defaultIContact, IContact } from \"../types/IContact\";\r\nimport { defaultIAppContext, IAppContext } from \"./app-context\";\r\n\r\nconst readSession = (key: string) => atob(sessionStorage.getItem(`@ioip/virtual-office@${key}`));\r\nconst writeSession = (key: string, value: any) => sessionStorage.setItem(`@ioip/virtual-office@${key}`, btoa(String(value)));\r\n\r\nconst _sede = {\r\n data: defaultIAppContext(),\r\n currentContact: defaultIContact()\r\n};\r\n\r\nclass Shared {\r\n\r\n get context(): IAppContext {\r\n return _sede.data\r\n }\r\n\r\n set context(value: IAppContext) {\r\n _sede.data = value;\r\n }\r\n\r\n get currentContact(): IContact {\r\n return _sede.currentContact\r\n }\r\n\r\n set currentContact(value: IContact) {\r\n _sede.currentContact = value;\r\n }\r\n\r\n get procesoxUrl(): string {\r\n const server = (window.location.hostname.toLowerCase() === 'localhost') ? 'https://localhost:44329' : _sede.data.ProcesoxUrl;\r\n return `${server}/${_sede.data.Domain}`;\r\n }\r\n\r\n set contactId(value: number) {\r\n writeSession('contact-id', value);\r\n }\r\n\r\n get contactId(): number {\r\n const value = readSession('contact-id');\r\n if (isNullOrEmpty(value))\r\n return 0;\r\n const result = Number(value);\r\n if (typeof result !== 'number')\r\n return 0;\r\n if (result > 0)\r\n return result;\r\n return 0;\r\n }\r\n\r\n}\r\n\r\nexport const Sede = {\r\n shared: new Shared()\r\n};\r\n","import { ITramite } from \"../ioip/sdk/base\";\r\n\r\nexport interface IAppContext {\r\n AllowedExtensions: string;\r\n B2C: { IsEnabled: boolean; Authority: string; ClientId: string; Scopes: string; }\r\n Domain: string;\r\n EnableContactProfession: boolean;\r\n EnableContactRequesterType: boolean;\r\n FechaConsultaSolicitudes: string;\r\n InformacionSolicitudAnonima: string;\r\n IsAffiliatedEntitiesEnabled: boolean;\r\n IsAnonymousRequestsEnabled: boolean;\r\n IsDocumentVerificationEnabled: boolean;\r\n LeyHabeasData: string;\r\n MaxFileSize: number;\r\n MensajeErrorCrearSolicitud: string;\r\n PoliticaPrivacidad: string;\r\n PoliticaTratamientoDatosPersonales: string;\r\n ProcesoxUrl: string;\r\n EnabledSubjectDescription: boolean;\r\n EnableCommentsField: boolean;\r\n SubjectMaxLength: number;\r\n Tramites: ITramite[];\r\n ReCaptchaSiteKey: string;\r\n InformacionSolicitudAutenticado: string;\r\n EnableRiskField: boolean;\r\n SubjectRiskField: string;\r\n ConfirmMessage: string;\r\n ToolTipFieldWord: string;\r\n ToolTipFieldType: string;\r\n ShowSectionField: boolean;\r\n NameSectionField: string;\r\n TextInformation: string;\r\n DownloadDocumentsTextInformacion: string;\r\n}\r\n\r\nexport const defaultIAppContext = (): IAppContext => {\r\n return {\r\n AllowedExtensions: '',\r\n B2C: { Authority: '', ClientId: '', IsEnabled: false, Scopes: '' },\r\n Domain: '',\r\n EnableContactProfession: false,\r\n EnableContactRequesterType: false,\r\n FechaConsultaSolicitudes: '',\r\n InformacionSolicitudAnonima: '',\r\n IsAffiliatedEntitiesEnabled: false,\r\n IsAnonymousRequestsEnabled: false,\r\n IsDocumentVerificationEnabled: false,\r\n LeyHabeasData: '',\r\n MaxFileSize: 0,\r\n MensajeErrorCrearSolicitud: '',\r\n PoliticaPrivacidad: '',\r\n PoliticaTratamientoDatosPersonales: '',\r\n ProcesoxUrl: '',\r\n EnabledSubjectDescription: true,\r\n EnableCommentsField: false,\r\n SubjectMaxLength: 0,\r\n Tramites: [],\r\n ReCaptchaSiteKey: '',\r\n InformacionSolicitudAutenticado: '',\r\n EnableRiskField: false,\r\n SubjectRiskField: '',\r\n ConfirmMessage: '',\r\n ToolTipFieldWord: '',\r\n ToolTipFieldType: '',\r\n ShowSectionField: false,\r\n NameSectionField: 'Dependencia',\r\n TextInformation: '',\r\n DownloadDocumentsTextInformacion: ''\r\n };\r\n}","export interface IContact {\r\n id?: number;\r\n firstName?: string;\r\n lastName?: string;\r\n email?: string;\r\n phoneNumber?: string;\r\n address?: string;\r\n identificationTypeId?: number;\r\n identificationNumber?: string;\r\n professionId?: number;\r\n contactTypeId?: number;\r\n}\r\n\r\nexport const defaultIContact = (): IContact => ({\r\n});","import { ActionButton } from \"@fluentui/react\";\r\nimport React from \"react\";\r\n\r\nexport interface IMainButtonProps {\r\n title: string;\r\n description: string;\r\n url?: string;\r\n onClick?: () => void;\r\n icon: string;\r\n}\r\n\r\nconst MainButton = (props: IMainButtonProps): JSX.Element => {\r\n return {\r\n if (props.onClick != null)\r\n props.onClick()\r\n else\r\n window.location.href = props.url\r\n }}\r\n iconProps={{ iconName: props.icon }}\r\n styles={{\r\n icon: {\r\n color: '#0078d4',\r\n fontSize: '70px',\r\n margin: '0 auto',\r\n marginTop: '.2em',\r\n lineHeight: 'inherit',\r\n verticalAlign: 'initial',\r\n display: 'contents!important'\r\n },\r\n flexContainer: {\r\n \"display\": \"flex\",\r\n \"height\": \"100%\",\r\n \"flexFlow\": \"column\",\r\n \"justifyContent\": \"center\",\r\n \"alignItems\": \"center\"\r\n },\r\n root: {\r\n width: '100%'\r\n }\r\n }}>\r\n
      \r\n {props.title}\r\n
      \r\n
      \r\n {props.description}\r\n
      \r\n \r\n}\r\n\r\nexport default MainButton;","import { Column, Grid, Row, useType } from '@ioip/core/lib';\r\nimport React, { useEffect, useRef } from 'react';\r\nimport { LoginType, MsalAuthProvider } from \"react-aad-msal\";\r\nimport { Sede } from '../../classes/shared';\r\nimport MainButton from './MainButton';\r\n\r\nexport interface IHomeComponentState {\r\n showEntidadesAdscritas: boolean;\r\n showVerificarDocumentos: boolean;\r\n showSolicitudesAnonimas: boolean;\r\n}\r\n\r\nconst HomeComponent = (): JSX.Element => {\r\n\r\n const authProvider = useRef(new MsalAuthProvider(\r\n {\r\n auth: {\r\n authority: Sede.shared.context.B2C.Authority,\r\n clientId: Sede.shared.context.B2C.ClientId,\r\n postLogoutRedirectUri: window.location.origin + '/sede.html',\r\n redirectUri: window.location.origin + '/sede.html',\r\n validateAuthority: false,\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: true\r\n }\r\n },\r\n {\r\n scopes: [ Sede.shared.context.B2C.Scopes ]\r\n },\r\n {\r\n loginType: LoginType.Popup,\r\n tokenRefreshUri: window.location.origin\r\n }\r\n ));\r\n\r\n const [ state, setState ] = useType({\r\n showEntidadesAdscritas: Sede.shared.context.IsAffiliatedEntitiesEnabled,\r\n showVerificarDocumentos: Sede.shared.context.IsDocumentVerificationEnabled,\r\n showSolicitudesAnonimas: Sede.shared.context.IsAnonymousRequestsEnabled\r\n });\r\n\r\n useEffect(function componentDidMount() {\r\n try {\r\n sessionStorage[ 'forceLogin' ] = false;\r\n const search = window.location.hash.split('?');\r\n const queryParams = new URLSearchParams(search[ 1 ]);\r\n\r\n if (queryParams !== undefined) {\r\n const auth = queryParams.get('auth');\r\n if (auth == \"b2c\") {\r\n sessionStorage[ 'forceLogin' ] = true;\r\n sessionStorage[ 'b2c' ] = true;\r\n setState({ showSolicitudesAnonimas: false })\r\n }\r\n }\r\n\r\n } catch (err) {\r\n if (err instanceof Error) {\r\n alert(err.message);\r\n }\r\n }\r\n }, []);\r\n\r\n const isAuthenticate = (): boolean => {\r\n const token = sessionStorage.getItem('ioip.pqr-web.session.token');\r\n if (token == null)\r\n return false;\r\n const date = sessionStorage.getItem('ioip.pqr-web.session.expiracion');\r\n return true;\r\n }\r\n\r\n const showAnonymous = (isAuthenticate() && state.showSolicitudesAnonimas) || !isAuthenticate();\r\n const tramites = Sede.shared.context?.Tramites || [];\r\n const customButtons = tramites.filter(x => x.Props?.ShowButtonInWeb) || [];\r\n\r\n const signOut = () => {\r\n sessionStorage.clear();\r\n authProvider.current?.logout();\r\n }\r\n // Formato: \r\n return \r\n \r\n \r\n

      Gestión PQRSD

      \r\n
      \r\n
      \r\n {isAuthenticate() && \r\n \r\n Bienvenido {sessionStorage.getItem('ioip.pqr-web.session.nombres')} {sessionStorage.getItem('ioip.pqr-web.session.apellidos')}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n {showAnonymous && \r\n \r\n }\r\n {customButtons.map((item, index) => \r\n {\r\n window.location.href = `#/sign-in/create-pqr/${item.IdTramite}`;\r\n }}\r\n icon='TextDocument'\r\n />\r\n )}\r\n {customButtons.map((item, index) => \r\n \r\n )}\r\n \r\n \r\n \r\n {showAnonymous && \r\n \r\n }\r\n {state.showEntidadesAdscritas && \r\n \r\n }\r\n {state.showVerificarDocumentos && \r\n \r\n }\r\n {isAuthenticate() && <>\r\n \r\n \r\n \r\n \r\n signOut()}\r\n icon='SignOut'\r\n />\r\n \r\n }\r\n \r\n
      \r\n\r\n}\r\n\r\nexport default HomeComponent;","import { IComboBoxOption, IContextualMenuItem, IDatePickerStrings } from \"@fluentui/react\";\r\nimport { ICity, ICountry, IDepartment } from '@ioip/archivox/lib';\r\nimport { IDictionary } from '@ioip/core/lib';\r\nimport { IDataSourceResponse } from '@ioip/procesox/lib';\r\nimport { CSSProperties } from 'react';\r\nimport { Sede } from '../../classes/shared';\r\n//#region SharePoint\r\n\r\nexport interface IMemexpoxtaWebPartProps {\r\n nombre: string;\r\n icon: string;\r\n appId: string;\r\n tenantId: string;\r\n cssStyles: string;\r\n headerImage: string;\r\n title: string;\r\n}\r\n\r\nexport interface IMemexpoxtaProps {\r\n nombre?: string;\r\n match?: any,\r\n icon?: string;\r\n appUrl?: string;\r\n appId?: string;\r\n tenantId?: string;\r\n context?: any;\r\n title?: string;\r\n}\r\n\r\nexport declare class AadHttpClient {\r\n fetch(url: string, configuration: AadHttpClientConfiguration, options: IHttpClientOptions): Promise;\r\n get(url: string, configuration: AadHttpClientConfiguration, options?: IHttpClientOptions): Promise;\r\n post(url: string, configuration: AadHttpClientConfiguration, options: IHttpClientOptions): Promise;\r\n}\r\n\r\nexport declare class AadHttpClientConfiguration extends HttpClientConfiguration implements IAadHttpClientConfiguration {\r\n constructor(flags: IAadHttpClientConfiguration, overrideFlags?: IAadHttpClientConfiguration);\r\n overrideWith(sourceFlags: IAadHttpClientConfiguration): AadHttpClientConfiguration;\r\n}\r\n\r\nexport declare class HttpClientConfiguration implements IHttpClientConfiguration {\r\n constructor(flags: IHttpClientConfiguration, overrideFlags?: IHttpClientConfiguration);\r\n overrideWith(sourceFlags: IHttpClientConfiguration): HttpClientConfiguration;\r\n protected initializeFlags(): void;\r\n}\r\n\r\nexport interface HttpClientResponse {\r\n arrayBuffer(): Promise;\r\n blob(): Promise;\r\n formData(): Promise;\r\n json(): Promise;\r\n text(): Promise;\r\n readonly ok: boolean;\r\n}\r\n\r\nexport declare interface IAadHttpClientConfiguration extends IHttpClientConfiguration {\r\n}\r\n\r\nexport declare interface IAadHttpClientConfigurations {\r\n readonly v1: AadHttpClientConfiguration;\r\n}\r\n\r\ndeclare interface IHttpClientConfiguration {\r\n}\r\n\r\nexport declare interface IHttpClientOptions extends RequestInit {\r\n}\r\n\r\nexport declare interface AadHttpClient extends RequestInit { }\r\n\r\nexport declare interface IHttpClientOptions extends RequestInit { }\r\n\r\n//#endregion\r\n\r\n\r\nexport class BaseService {\r\n public clientId: string;\r\n public serviceUrl: string;\r\n public context: any;\r\n public controller: string = '';\r\n protected _useLoader: boolean = true;\r\n public showLoader: boolean = true;\r\n private logStyle: string = 'color: #4CAF50; font-size: 12px; text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;';\r\n\r\n constructor() {\r\n this.context = $_.context;\r\n this.clientId = $_.props.appId;\r\n this.serviceUrl = (window as any).serviceUrl;\r\n }\r\n\r\n private _isAad(): boolean {\r\n return this.context !== undefined && (this.context as any).aadHttpClientFactory !== undefined;\r\n }\r\n\r\n private async getAddClient(): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n //const client = await (this.context as any).aadHttpClientFactory.getClient(this.clientId);\r\n resolve({\r\n get: (url: string, config: any, options: any): any => {\r\n return fetch(url, options);\r\n },\r\n post: (url: string, config: any, options: any): any => {\r\n return fetch(url, {\r\n ...options,\r\n method: 'POST'\r\n });\r\n },\r\n } as any);\r\n //resolve(client as any);\r\n } catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${(ex as any).message}`\r\n });\r\n }\r\n });\r\n }\r\n\r\n private async getHttpClient(): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n resolve({\r\n get: (url: string, config: any, options: any): any => {\r\n return fetch(url, options)\r\n },\r\n post: (url: string, config: any, options: any): any => {\r\n return fetch(url, {\r\n ...options,\r\n method: 'POST'\r\n });\r\n },\r\n } as any);\r\n //resolve(client as any);\r\n } catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${(ex as any).message}`\r\n });\r\n }\r\n });\r\n }\r\n\r\n private _getHttpClientOptions(): IHttpClientOptions {\r\n const _httpClientOptions: IHttpClientOptions = {\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Tenant-Id': $_.props.tenantId,\r\n 'Authorization': 'Bearer dev'\r\n }\r\n };\r\n if (!this._isAad()) {\r\n _httpClientOptions.credentials = 'include';\r\n }\r\n return _httpClientOptions;\r\n }\r\n\r\n public async getClient(): Promise {\r\n const client: AadHttpClient = this._isAad() ? await this.getAddClient() : this.getHttpClient() as any;\r\n return client\r\n }\r\n\r\n protected _getFormfieldDataSourceAsync(url: string, filters: IDictionary): Promise {\r\n\r\n if (filters !== void 0) {\r\n const processedFilters: string[] = [];\r\n for (const filter in filters) {\r\n if (Object.prototype.hasOwnProperty.call(filters, filter)) {\r\n const value = filters[ filter ];\r\n processedFilters.push(`filters[${filter}]=${value}`);\r\n }\r\n }\r\n if (url.indexOf('?') >= 0) {\r\n url += '&' + processedFilters.join('&');\r\n } else {\r\n url += '?' + processedFilters.join('&');\r\n }\r\n }\r\n\r\n return this.aadGet(url);\r\n }\r\n\r\n protected async aadGet(apiUrl: string): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const isAbsoluteUrl = apiUrl.trim().toLowerCase().startsWith('http')\r\n || apiUrl.trim().toLowerCase().startsWith('https');\r\n const client: AadHttpClient = await this.getClient();\r\n const url = isAbsoluteUrl ? apiUrl : `${this.serviceUrl}/${apiUrl}`;\r\n const response: HttpClientResponse = await client.get(url, {} as any, this._getHttpClientOptions());\r\n if (response.ok) {\r\n resolve(response.json());\r\n } else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n } catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${(ex as any).message}`\r\n });\r\n }\r\n });\r\n }\r\n\r\n protected async aadGetArrayBuffer(apiUrl: string): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const client: AadHttpClient = await this.getClient();\r\n const url = `${this.serviceUrl}/${apiUrl}`;\r\n console.log(`%cGET: ${url}`, this.logStyle);\r\n const response: HttpClientResponse = await client.get(url, {} as any, this._getHttpClientOptions());\r\n if (response.ok) {\r\n resolve(response.blob());\r\n } else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n } catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${(ex as any).message}`\r\n });\r\n }\r\n });\r\n }\r\n\r\n protected async aadGetText(apiUrl: string): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const client: AadHttpClient = await this.getClient();\r\n const url = `${this.serviceUrl}/${apiUrl}`;\r\n console.log(`%cGET: ${url}`, this.logStyle);\r\n const response: HttpClientResponse = await client.get(url, {} as any, this._getHttpClientOptions());\r\n if (response.ok) {\r\n resolve(response.text());\r\n } else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n } catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${(ex as any).message}`\r\n });\r\n }\r\n });\r\n }\r\n\r\n protected async aadPost(apiUrl: string, data: any, showLoader: boolean = true): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const client: AadHttpClient = await this.getClient();\r\n const options: IHttpClientOptions = {\r\n ...this._getHttpClientOptions(),\r\n body: JSON.stringify(data)\r\n };\r\n const url = `${this.serviceUrl}/${apiUrl}`;\r\n console.log(`%cPOST: ${url}`, this.logStyle);\r\n const response: HttpClientResponse = await client.post(url, {} as any, options);\r\n if (response.ok) {\r\n resolve(response.json());\r\n } else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n } catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${(ex as any).message}`\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n protected async aadPostArrayBuffer(apiUrl: string, data: any, showLoader: boolean = true): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const client: AadHttpClient = await this.getClient();\r\n const options: IHttpClientOptions = {\r\n ...this._getHttpClientOptions(),\r\n body: JSON.stringify(data)\r\n };\r\n const url = `${this.serviceUrl}/${apiUrl}`;\r\n console.log(`%cPOST: ${url}`, this.logStyle);\r\n const response: HttpClientResponse = await client.post(url, {} as any, options);\r\n if (response.ok) {\r\n resolve(response.blob());\r\n } else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n } catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${(ex as any).message}`\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n public async aadPut(apiUrl: string, data: any, showLoader: boolean = true): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const client: AadHttpClient = await this.getClient();\r\n const options: IHttpClientOptions = {\r\n ...this._getHttpClientOptions(),\r\n body: JSON.stringify(data),\r\n method: 'PUT'\r\n };\r\n const url = `${this.serviceUrl}/${apiUrl}`;\r\n console.log(`%cPUT: ${url}`, this.logStyle);\r\n const response: HttpClientResponse = await client.fetch(url, {} as any, options);\r\n if (response.ok) {\r\n resolve(response.json());\r\n } else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n } catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${(ex as any).message}`\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n public async aadDelete(apiUrl: string, data?: any): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const client: AadHttpClient = await this.getClient();\r\n const options: IHttpClientOptions = {\r\n ...this._getHttpClientOptions(),\r\n method: 'DELETE'\r\n };\r\n if (data) {\r\n options.body = JSON.stringify(data);\r\n }\r\n const url = `${this.serviceUrl}/${apiUrl}`;\r\n console.log(`%cDELETE: ${url}`, this.logStyle);\r\n const response: HttpClientResponse = await client.fetch(url, {} as any, options);\r\n if (response.ok) {\r\n resolve();\r\n } else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n } catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${(ex as any).message}`\r\n });\r\n }\r\n });\r\n }\r\n\r\n public async aadFormData(apiUrl: string, data: any): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const client: AadHttpClient = await this.getClient();\r\n const options: IHttpClientOptions = { body: data };\r\n const response: HttpClientResponse = await client.post(`${this.serviceUrl}/${apiUrl}`, (AadHttpClient as any).configurations.v1, options);\r\n if (response.ok) {\r\n resolve(response.json());\r\n } else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n } catch (ex) {\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${(ex as any).message}`\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n protected async shpGet(url: string): Promise {\r\n const options = { headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' } };\r\n return new Promise(async (resolve, reject) => {\r\n const response = await this.context.spHttpClient.get(url, ({} as any), options);\r\n if (response.ok) {\r\n resolve(response.json());\r\n } else {\r\n const err = await response.json();\r\n this._writeException(err);\r\n reject(err);\r\n }\r\n });\r\n }\r\n\r\n protected _writeException(err: any): void {\r\n console.log(`Message: ${err.Message}`);\r\n console.log(`ExceptionType: ${err.ExceptionType}`);\r\n console.log(`ExceptionMessage: ${err.ExceptionMessage}`);\r\n console.log(`StackTrace: ${err.StackTrace}`);\r\n }\r\n\r\n}\r\n\r\nexport default interface IApiException {\r\n Message: string;\r\n}\r\n\r\nexport function base64blob(b64Data: string, contentType: string, sliceSize?: number): Blob {\r\n contentType = contentType || '';\r\n sliceSize = sliceSize || 512;\r\n var byteCharacters = atob(b64Data);\r\n var byteArrays = [];\r\n for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n var slice = byteCharacters.slice(offset, offset + sliceSize);\r\n var byteNumbers = new Array(slice.length);\r\n for (var i = 0; i < slice.length; i++) {\r\n byteNumbers[ i ] = slice.charCodeAt(i);\r\n }\r\n var byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n var blob = new Blob(byteArrays, { type: contentType });\r\n return blob;\r\n}\r\n\r\nexport function fileToBase64(file: File): Promise {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => resolve(reader.result as string);\r\n reader.onerror = error => reject(error);\r\n });\r\n}\r\n\r\nexport const MIME_TYPE_PDF = '\tapplication/pdf';\r\nexport const MIME_TYPE_WORD_2007_AND_ABOVE = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\r\nexport const MIME_TYPE_JPEG = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\r\nexport const DEFAULT_COMBOBOX_OPTION: IComboBoxOption[] = [ { key: '0', text: '[-- Seleccione --]' } ];\r\nexport const NO_HAY_INFORMACION = 'No hay información para mostrar en este momento';\r\nexport const ID_PAIS_COLOMBIA = 43;\r\nexport const ID_DEPARTAMENTO_BOGOTA = 5;\r\nexport const ID_CIUDAD_BOGOTA = 110;\r\n\r\nexport class DataTableFilter {\r\n Start: string;\r\n Length: string | number | boolean;\r\n}\r\n\r\nexport class DataTableRequest {\r\n Start: number;\r\n Length: number;\r\n OrderColumn: number;\r\n SortDirection: string;\r\n Search: string;\r\n Filters: DataTableFilter[]\r\n\r\n constructor(start: number, length: number, orderColumn: number, sortDirection: string, search: string, filters?: DataTableFilter[]) {\r\n this.Start = start;\r\n this.Length = length;\r\n this.OrderColumn = orderColumn;\r\n this.SortDirection = sortDirection;\r\n this.Search = search;\r\n this.Filters = filters || [];\r\n }\r\n\r\n}\r\n\r\nexport class DataTablesResponse {\r\n Data: any[];\r\n Draw: number;\r\n RecordsFiltered: number;\r\n RecordsTotal: number;\r\n LastItem: number;\r\n}\r\n\r\nexport function defaultDataTablesResponse(): DataTablesResponse {\r\n return {\r\n Data: [],\r\n Draw: 0,\r\n RecordsFiltered: 0,\r\n RecordsTotal: 0,\r\n LastItem: 0\r\n };\r\n}\r\n\r\nexport const DatePickerStrings: IDatePickerStrings = {\r\n months: [ 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre' ],\r\n shortMonths: [ 'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic' ],\r\n days: [ 'Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sábado' ],\r\n shortDays: [ 'D', 'L', 'M', 'M', 'J', 'V', 'S' ],\r\n goToToday: 'Ir a hoy',\r\n prevMonthAriaLabel: 'Ir al mes anterior',\r\n nextMonthAriaLabel: 'Ir al proximo mes',\r\n prevYearAriaLabel: 'Ir al año anterior',\r\n nextYearAriaLabel: 'Ir al proximo año'\r\n};\r\n\r\nexport interface DropZoneComponentItem {\r\n Name: string;\r\n Length: number;\r\n}\r\n\r\nexport interface IDropZoneFile {\r\n Name: string;\r\n Type: string;\r\n Length: number;\r\n PreventRemove: boolean;\r\n Data: any;\r\n File: File;\r\n}\r\n\r\nexport const SUPPORTEDNATIVEFILETYPES = ',pdf,jpg,jpeg,png,gif,bmp,webp,svg,mpeg,webm,ogg,wav,txt,mp3';\r\n\r\nexport const SUPPORTEDSHAREPOINTVIEWERFILETYPES = ',csv,dic,doc,docm,docx,dotm,dotx,pot,potm,potx,pps,ppsm,ppsx,ppt,pptm,pptx,xd,xls,xlsb,xlsx,sltx,eml,msg,vsd,vsdx,rft,odp,ods,odt,ai,pdf,psb,psd,3g2,3gp,asf,bmp,m2ts,m4v,mov,mp3,mp4,mp4v,mts,ts,wmv,gif,jpeg,jpg,jpe,mef,mrw,nef,nrw,orf,pano,pef,png,spm,tif,tiff,xbm,xcf';\r\n\r\nexport const OFFICEFILETYPES = 'doc,docx,xls,xlsx,ppt,pptx';\r\n\r\nexport function getFileWithMimeType(file: Blob, extension: string): Blob {\r\n\r\n var file: Blob;\r\n\r\n switch (extension.toLowerCase()) {\r\n case 'pdf':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Pdf });\r\n break;\r\n case 'docx':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Word2007AndAbove });\r\n break;\r\n case 'doc':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Word2007AndAbove });\r\n break;\r\n case 'xls':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Exce2007AndAbove });\r\n break;\r\n case 'xlsx':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Exce2007AndAbove });\r\n break;\r\n case 'jpg':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Jpeg });\r\n break;\r\n case 'png':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Png });\r\n break;\r\n case 'gif':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Gif });\r\n break;\r\n case 'bmp':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Bmp });\r\n break;\r\n case 'webp':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Webp });\r\n break;\r\n case 'svg':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Svg });\r\n break;\r\n case 'mid':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Midi });\r\n break;\r\n case 'mp3':\r\n case 'mpeg':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Mpeg });\r\n break;\r\n case 'webm':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Webm });\r\n break;\r\n case 'ogg':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Ogg });\r\n break;\r\n case 'wav':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Wav });\r\n break;\r\n case 'txt':\r\n file = new Blob([ file ], { type: $_.const.MimeTypes.Text });\r\n break;\r\n }\r\n\r\n return file;\r\n}\r\n\r\nexport function showError(errorMessage: string, title?: string): Promise {\r\n return new Promise(resolve => {\r\n alert(errorMessage);\r\n resolve();\r\n });\r\n}\r\n\r\nexport function showConfirmation(title: string, text: string, callback: (() => void) | (() => Promise)): void {\r\n if ($_.confirmationDialog) {\r\n $_.confirmationDialog(title, text, callback);\r\n }\r\n}\r\n\r\nexport function successToast(text: string): void {\r\n if ($_.successToast && text) {\r\n $_.successToast(text);\r\n }\r\n}\r\n\r\nexport function showWarnToast(text: string): void {\r\n if ($_.showWarnToast && text) {\r\n $_.showWarnToast(text);\r\n }\r\n}\r\n\r\nexport interface IConfiguracionSitioSuscripcion {\r\n ApplicationSiteUrl: string;\r\n ApplicationSiteRelativeUrl: string;\r\n GestionSiteUrl: string;\r\n GestionSiteRelativeUrl: string;\r\n CentralSiteUrl: string;\r\n CentralSiteRelativeUrl: string;\r\n RecordsSiteUrl: string;\r\n RecordsSiteRelativeUrl: string;\r\n}\r\n\r\nexport interface Global {\r\n /**\r\n * Usuario actual\r\n */\r\n errorDialog: (message: string, callback?: () => void) => void;\r\n confirmationDialog: (title: string, text: string, callback: (() => void) | (() => Promise)) => void;\r\n successToast: (text: string) => void;\r\n showWarnToast: (text: string) => void;\r\n isO365: boolean;\r\n context: any;\r\n props: IMemexpoxtaWebPartProps;\r\n enablePoxta: boolean;\r\n svc: IAppServices;\r\n const: {\r\n DescripcionDocumental: {\r\n OtroTipoAnexo: number\r\n };\r\n MimeTypes: {\r\n Pdf: string;\r\n Word2007AndAbove: string;\r\n Exce2007AndAbove: string;\r\n PPTX2007AndAbove: string;\r\n Jpeg: string;\r\n Png: string;\r\n Gif: string;\r\n Bmp: string;\r\n Webp: string;\r\n Svg: string;\r\n Midi: string;\r\n Mpeg: string;\r\n Wav: string;\r\n Webm: string;\r\n Ogg: string;\r\n Text: string;\r\n };\r\n OrigenDocumentoEscritorio: number;\r\n OrigenDocumentoScanner: number;\r\n OrigenDocumentoStrings: IComboBoxOption[];\r\n TipoDocumentoStrings: IComboBoxOption[];\r\n TipoIdentificacion: {\r\n Nit: number;\r\n },\r\n TiposFirmaComunicadoInterno: {\r\n Electronica: boolean;\r\n Digital: boolean;\r\n Manuscrita: boolean;\r\n }\r\n },\r\n def: {\r\n editButton: (callback: () => void) => IContextualMenuItem;\r\n deleteButton: (callback: () => void) => IContextualMenuItem;\r\n btn: {\r\n newButton: (href: string) => IContextualMenuItem;\r\n exportButton: (callback: () => void) => IContextualMenuItem;\r\n exportExcel: (service: () => Promise, filename: string) => IContextualMenuItem;\r\n bulkLoad: (callback: () => void) => IContextualMenuItem;\r\n downloadTemplate: (href: string) => IContextualMenuItem;\r\n deleteItem: (callback: () => Promise) => IContextualMenuItem;\r\n editHref: (href: string) => IContextualMenuItem;\r\n }\r\n },\r\n utils: {\r\n /**\r\n * Descarga un blob en el equipo del usuaro\r\n * @param blob Blob a descargar\r\n * @param filename Nombre del archivo\r\n * @param mimeType MimeType\r\n */\r\n downloadBlob: (blob: Blob, filename: string, mimeType?: string) => void;\r\n downloadExcel: (blob: Blob, filename: string) => void;\r\n downloadPdf: (blob: Blob, filename: string) => void;\r\n downloadService: (service: () => Promise, filename: string, mimeType?: string) => void;\r\n downloadServiceExcel: (service: Promise, filename: string) => void;\r\n },\r\n isNull: (obj: any) => boolean;\r\n isNullOrEmpty: (obj: any) => boolean;\r\n extensions: { [ key: string ]: any };\r\n}\r\n\r\nexport let $_: Global = {\r\n errorDialog: undefined,\r\n confirmationDialog: undefined,\r\n successToast: undefined,\r\n showWarnToast: undefined,\r\n isO365: false,\r\n context: undefined,\r\n props: {\r\n nombre: '',\r\n icon: '',\r\n appId: '',\r\n tenantId: '',\r\n cssStyles: '',\r\n headerImage: '',\r\n title: ''\r\n },\r\n enablePoxta: false,\r\n svc: undefined,\r\n const: {\r\n DescripcionDocumental: {\r\n OtroTipoAnexo: 1\r\n },\r\n MimeTypes: {\r\n Pdf: 'application/pdf',\r\n Word2007AndAbove: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n Exce2007AndAbove: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n PPTX2007AndAbove: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n Jpeg: 'image/jpeg',\r\n Png: 'image/png',\r\n Gif: 'image/gif',\r\n Bmp: 'image/bmp',\r\n Webp: 'image/webp',\r\n Svg: 'image/svg+xml',\r\n Midi: 'audio/midi',\r\n Mpeg: 'audio/mpeg',\r\n Wav: 'audio/ogg',\r\n Webm: 'video/webm',\r\n Ogg: 'video/ogg',\r\n Text: 'text/plain'\r\n },\r\n OrigenDocumentoEscritorio: 1,\r\n OrigenDocumentoScanner: 2,\r\n OrigenDocumentoStrings: [\r\n { key: 1, text: 'ARCHIVO SISTEMA' },\r\n { key: 2, text: 'DIGITALIZAR' },\r\n ],\r\n TipoDocumentoStrings: [\r\n { key: 1, text: 'FÍSICO' },\r\n { key: 2, text: 'DIGITAL' },\r\n ],\r\n TipoIdentificacion: {\r\n Nit: 2\r\n },\r\n TiposFirmaComunicadoInterno: {\r\n Electronica: true,\r\n Digital: false,\r\n Manuscrita: false\r\n }\r\n },\r\n def: {\r\n deleteButton: (callback: () => void) => {\r\n return {\r\n key: 'Eliminar',\r\n name: 'Eliminar',\r\n iconProps: { iconName: 'Delete' },\r\n onClick: callback\r\n }\r\n },\r\n editButton: (callback: () => void) => {\r\n return {\r\n key: 'Editar',\r\n name: 'Editar',\r\n iconProps: { iconName: 'Edit' },\r\n onClick: callback\r\n }\r\n },\r\n btn: {\r\n exportButton: (callback: () => void) => {\r\n return {\r\n key: 'Exportar',\r\n name: 'Exportar',\r\n iconProps: { iconName: 'ExcelLogo16' },\r\n title: 'Exportar los resultados actuales',\r\n onClick: callback\r\n }\r\n },\r\n exportExcel: (service: () => Promise, filename: string) => {\r\n return {\r\n key: 'Exportar',\r\n name: 'Exportar',\r\n iconProps: { iconName: 'ExcelLogo16' },\r\n title: 'Exportar los resultados actuales',\r\n onClick: () => {\r\n $_.utils.downloadService(service, filename);\r\n }\r\n }\r\n },\r\n newButton: (href: string) => {\r\n return {\r\n key: 'Nuevo',\r\n name: 'Nuevo',\r\n iconProps: { iconName: 'Add' },\r\n title: 'Crear nuevo elemento',\r\n href: href.indexOf('#') === 0 ? href : '#' + href\r\n }\r\n },\r\n bulkLoad: (callback: () => void) => {\r\n return {\r\n key: 'Carga masiva',\r\n name: 'Carga masiva',\r\n iconProps: { iconName: 'BulkUpload' },\r\n title: 'Carga masiva',\r\n onClick: callback\r\n }\r\n },\r\n downloadTemplate: (href: string) => {\r\n return {\r\n key: 'Descargar plantilla',\r\n name: 'Descargar plantilla',\r\n iconProps: { iconName: 'Download' },\r\n title: 'Descarga la plantilla de carga masiva',\r\n onClick: () => {\r\n window.open(href, '_blank');\r\n }\r\n }\r\n },\r\n deleteItem: (callback: () => Promise): IContextualMenuItem => {\r\n return {\r\n key: 'Eliminar',\r\n name: 'Eliminar',\r\n iconProps: { iconName: 'Delete' },\r\n title: 'Elimina el elemento seleccionado',\r\n onClick: () => {\r\n showConfirmation('Eliminar elemento', '¿Está seguro que desea eliminar el elemento seleccionado?', callback);\r\n }\r\n }\r\n },\r\n editHref: (href: string) => {\r\n return {\r\n key: 'Editar',\r\n name: 'Editar',\r\n iconProps: { iconName: 'Edit' },\r\n title: 'Editar',\r\n href: href.indexOf('#') === 0 ? href : '#' + href\r\n }\r\n },\r\n }\r\n },\r\n utils: {\r\n downloadBlob: (blob: Blob, filename: string, mimeType?: string) => {\r\n const a = document.createElement('a');\r\n const url = window.URL.createObjectURL(blob);\r\n a.href = url;\r\n a.download = filename;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n },\r\n downloadExcel: (blob: Blob, filename: string) => {\r\n $_.utils.downloadBlob(blob, filename, $_.const.MimeTypes.Exce2007AndAbove);\r\n },\r\n downloadPdf: (blob: Blob, filename: string) => {\r\n $_.utils.downloadBlob(blob, filename, $_.const.MimeTypes.Pdf);\r\n },\r\n downloadService: async (service: () => Promise, filename: string, mimeType?: string) => {\r\n try {\r\n const blob: Blob = await service();\r\n $_.utils.downloadBlob(blob, filename, mimeType);\r\n } catch (error) {\r\n showError((error as any).ExceptionMessage);\r\n }\r\n },\r\n downloadServiceExcel: async (service: Promise, filename: string) => {\r\n try {\r\n const blob: Blob = await service;\r\n $_.utils.downloadBlob(blob, filename, $_.const.MimeTypes.Exce2007AndAbove);\r\n } catch (error) {\r\n showError((error as any).ExceptionMessage);\r\n }\r\n }\r\n },\r\n isNull: (obj: any): boolean => {\r\n return obj === undefined || obj == null;\r\n },\r\n isNullOrEmpty: (obj: any): boolean => {\r\n return obj === undefined || obj == null || typeof (obj) !== 'string' || obj.trim() === '';\r\n },\r\n extensions: {}\r\n}\r\n\r\nexport interface IComponent {\r\n\r\n}\r\n\r\nexport interface IEntityBase {\r\n CreadoPor?: string,\r\n MaquinaCreacion?: string,\r\n FechaCreacion?: Date;\r\n FechaCreacionString?: string;\r\n FechaCreacionString2?: string;\r\n ModificadoPor?: string,\r\n MaquinaModificacion?: string,\r\n FechaModificacion?: Date;\r\n FechaModificacionString?: string;\r\n FechaModificacionString2?: string;\r\n}\r\n\r\nexport interface IListPage {\r\n rows: T[],\r\n selectedRow: T;\r\n RecordsTotal: number;\r\n RecordsFiltered: number;\r\n hideDialogConfirmation: boolean;\r\n isLoading?: boolean;\r\n commandBar?: IContextualMenuItem[];\r\n LastItem: number;\r\n}\r\n\r\nexport interface IModelPage {\r\n model: T;\r\n hideDialogConfirmation: boolean;\r\n formIsSaving?: boolean;\r\n errors?: { [ key: string ]: string };\r\n}\r\n\r\nexport interface IService {\r\n getByIdAsync(id: number): Promise;\r\n getAllAsync(): Promise;\r\n saveAsync(obj: T): Promise;\r\n deleteAsync(id: number): Promise;\r\n paginateAsync(request: DataTableRequest | { [ key: string ]: any }): Promise;\r\n}\r\n\r\nexport function truncate(value: number = 0) {\r\n const with2Decimals = value.toString().match(/^-?\\d+(?:\\.\\d{0,2})?/)[ 0 ]\r\n return with2Decimals;\r\n}\r\n\r\nexport enum PermisoSeccion {\r\n Usuario = 1,\r\n ResponsableSeccion = 2,\r\n Asociacion = 3\r\n}\r\n\r\nexport const _routes_ = {\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n BANDEJA_ENTRADA: '/bandeja-entrada',\r\n\r\n // Perfiles\r\n PERFILES: '/perfiles',\r\n CREAR_PERFIL: '/crear-perfil',\r\n EDITAR_PERFIL: '/editar-perfil/:id',\r\n\r\n // Usuarios\r\n USUARIOS: '/usuarios',\r\n CREAR_USUARIO: '/crear-usuario',\r\n EDITAR_USUARIO: '/editar-usuario/:id',\r\n\r\n // Usuarios asociados por sección\r\n USUARIOS_ASOCIADOS_SECCION: '/archivox/administracion/usuarios-asociados-seccion',\r\n CREAR_ASOCIACION_USUARIO_SECCION: '/archivox/administracion/crear-usuario-asociado-seccion',\r\n\r\n // Consecutivos\r\n CONSECUTIVOS: '/administracion/gestor-documental/consecutivos',\r\n CREAR_CONSECUTIVO: '/administracion/gestor-documental/crear-consecutivo',\r\n EDITAR_CONSECUTIVO: '/administracion/gestor-documental/editar-consecutivo/:id',\r\n\r\n // Metadatos\r\n CATEGORIAS_METADATOS: '/metadatos',\r\n CREAR_CATEGORIA_METADATO: '/crear-metadato',\r\n EDITAR_CATEGORIA_METADATO: '/editar-metadato/:id',\r\n\r\n // Fondos\r\n FONDOS: '/administracion/fondos',\r\n CREAR_FONDO: '/administracion/crear-fondo',\r\n EDITAR_FONDO: '/administracion/editar-fondo/:id',\r\n\r\n // Secciones\r\n SUCURSALES: '/administracion/sucursales',\r\n CREAR_SUCURSAL: '/administracion/gestor-documental/crear-sucursal',\r\n EDITAR_SUCURSAL: '/administracion/gestor-documental/editar-sucursal/:id',\r\n\r\n // Secciones\r\n SECCIONES: '/administracion/secciones',\r\n CREAR_SECCION: '/administracion/gestor-documental/crear-seccion',\r\n EDITAR_SECCION: '/administracion/gestor-documental/editar-seccion/:id',\r\n\r\n // Series\r\n SERIES: '/administracion/gestor-documental/series',\r\n CREAR_SERIE: '/administracion/gestor-documental/crear-serie',\r\n EDITAR_SERIE: '/administracion/gestor-documental/editar-serie/:id',\r\n\r\n // Subseries\r\n SUBSERIES: '/administracion/gestor-documental/subseries',\r\n CREAR_SUBSERIE: '/administracion/gestor-documental/crear-subserie',\r\n EDITAR_SUBSERIE: '/administracion/gestor-documental/editar-subserie/:id',\r\n\r\n // Tipos documentales\r\n TIPOS_DOCUMENTALES: '/administracion/tipos-documentales',\r\n CREAR_TIPO_DOCUMENTAL: '/administracion/crear-tipo-documental',\r\n EDITAR_TIPO_DOCUMENTAL: '/administracion/editar-tipo-documental/:id',\r\n\r\n // Carpetas\r\n CARPETAS: '/administracion/gestor-documental/carpetas',\r\n CREAR_CARPETA: '/administracion/gestor-documental/crear-carpeta',\r\n EDITAR_CARPETA: '/administracion/gestor-documental/editar-carpeta/:id',\r\n\r\n // Tablas de retención documental\r\n TABLAS_RETENCION_DOCUMENTAL: '/administracion/gestor-documental/trds',\r\n CREAR_TABLA_RETENCION_DOCUMENTAL_PRINCIPAL: '/administracion/gestor-documental/crear-trd',\r\n EDITAR_TABLA_RETENCION_DOCUMENTAL_PRINCIPAL: '/administracion/gestor-documental/editar-trd/:id',\r\n VER_TABLA_RETENCION_DOCUMENTAL_HISTORICA: '/administracion/gestor-documental/hitorico-trd/:id/:version',\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n REPORTES_POWER_BI: '/administracion/reportes-power-bi',\r\n\r\n // Bandeja de entrada\r\n\r\n REDIRECT: '/redirect',\r\n GESTIONAR_BANDEJA: '/gestionar-bandeja',\r\n\r\n // Tipo de parámetro\r\n TIPOS_PARAMETROS: '/administracion/tipos-parametros',\r\n CREAR_TIPO_PARAMETRO: '/administracion/crear-tipo-parametro',\r\n EDITAR_TIPO_PARAMETRO: '/administracion/editar-tipo-parametro/:id',\r\n\r\n // Parámetro\r\n PARAMETROS: '/administracion/tipos-parametros',\r\n CREAR_PARAMETRO: '/administracion/crear-tipo-parametro/:idTipoParametro',\r\n EDITAR_PARAMETRO: '/administracion/editar-tipo-parametro/:idTipoParametro/: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 // Librerias\r\n LIBRERIAS: '/administracion/suscripcion/librerias',\r\n\r\n // Extensiones\r\n EXTENSION_RUNTIME: '/extensions/:extensionName/:viewId',\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // Zonas\r\n ZONAS: '/administracion/correspondencia/zonas',\r\n CREAR_ZONA: '/administracion/correspondencia/crear-zona',\r\n EDITAR_ZONA: '/administracion/correspondencia/editar-zona/:id',\r\n\r\n // Medios de envío\r\n MEDIOS_ENVIO: '/administracion/correspondencia/medios-envio',\r\n CREAR_MEDIO_ENVIO: '/administracion/correspondencia/crear-medio-envio',\r\n EDITAR_MEDIO_ENVIO: '/administracion/correspondencia/editar-medio-envio/:id',\r\n\r\n // Motivos de devolución\r\n MOTIVOS_DEVOLUCION: '/administracion/correspondencia/motivos-devolucion',\r\n CREAR_MOTIVO_DEVOLUCION: '/administracion/correspondencia/crear-motivo-devolucion',\r\n EDITAR_MOTIVO_DEVOLUCION: '/administracion/correspondencia/editar-motivo-devolucion/:id',\r\n\r\n // Creación de expedientes\r\n EXPEDIENTES_GESTION: '/expedientes/gestion',\r\n EXPEDIENTES_CENTRAL: '/expedientes/central',\r\n EXPEDIENTES_HISTORICO: '/expedientes/historico',\r\n CREAR_EXPEDIENTE: '/crear-expediente',\r\n\r\n // Ver expediente\r\n VER_EXPEDIENTE_GESTION: '/expediente/gestion/ver-expediente/:id',\r\n VER_EXPEDIENTE_CENTRAL: '/expediente/central/ver-expediente/:id',\r\n VER_EXPEDIENTE_HISTORICO: '/expediente/historico/ver-expediente/:id',\r\n\r\n // transferencias\r\n TRANSFERENCIAS_RESPONSABLE: '/archivox/transferencias/pendientes-gestion',\r\n\r\n // Búsqueda de expedientes\r\n BUSQUEDA_EXPEDIENTE_GESTION: '/expedientes-gestion',\r\n BUSQUEDA_EXPEDIENTE_CENTRAL: '/expedientes-central',\r\n BUSQUEDA_EXPEDIENTE_HISTORICO: '/expedientes-historico',\r\n\r\n // Aprobación transferencias\r\n APROBACION_TRANSFERENCIA_PRIMARIA: '/archivox/transferencias/aprobacion-primaria',\r\n APROBACION_TRANSFERENCIA_SECUNDARIA: '/archivox/transferencias/aprobacion-secundaria',\r\n\r\n // Contactos\r\n CONTACTOS: '/contactos',\r\n CREAR_CONTACTO: '/crear-contacto',\r\n EDITAR_CONTACTO: '/editar-contacto/:id',\r\n\r\n // Alertas\r\n ALERTAS: '/administracion/correspondencia/alertas',\r\n CREAR_ALERTA: '/administracion/correspondencia/crear-alerta',\r\n EDITAR_ALERTA: '/administracion/correspondencia/editar-alerta/:id',\r\n\r\n // Tramites\r\n TRAMITES: '/administracion/correspondencia/tramites',\r\n CREAR_TRAMITE: '/administracion/correspondencia/crear-tramite',\r\n EDITAR_TRAMITE: '/administracion/correspondencia/editar-tramite/:id',\r\n\r\n // Flujos documentales\r\n FLUJOS: '/administracion/shared/flujos-documentales',\r\n CREAR_FLUJO: '/administracion/shared/nuevo-flujo',\r\n CREAR_FLUJO_DOCUMENTAL: '/administracion/shared/nuevo-flujo-documental',\r\n EDITAR_FLUJO_DOCUMENTAL: '/administracion/shared/editar-flujo-documental/:id',\r\n\r\n // Festivos\r\n FESTIVOS: '/administracion/correspondencia/dias-festivos',\r\n CREAR_FESTIVO: '/administracion/correspondencia/crear-festivo',\r\n EDITAR_FESTIVO: '/administracion/correspondencia/editar-festivo/:id',\r\n\r\n // Clasificación PQRS\r\n CLASIFICACIONES_PQRS: '/clasificaciones-pqrs',\r\n CLASIFICACION_PQRS: '/clasificacion-pqrs',\r\n\r\n // Creación rádicado de entrada\r\n CREAR_RADICADO_ENTRADA_FISICO: '/crear-radicado-entrada/fisico',\r\n CREAR_RADICADO_ENTRADA_DIGITAL: '/crear-radicado-entrada/digital',\r\n\r\n // Creación rádicado de entrada\r\n DIGITALIZAR_RADICADO_ENTRADA_DIGITAL: '/gestion/radicado-entrada/digitalizacion/:idRadicadoEntrada/:idTarea',\r\n\r\n // Radicado de entrada - Radicado\r\n RADICADO_ENTRADA_FISICO_RADICADO: '/gestion/radicado-entrada/radicado/fisico/:idRadicadoEntrada/:idTarea',\r\n RADICADO_ENTRADA_DIGITAL_RADICADO: '/gestion/radicado-entrada/radicado/digital/:idRadicadoEntrada/:idTarea',\r\n RADICADO_ENTRADA_FISICO_ANONIMO_RADICADO: '/gestion/radicado-entrada/radicado/anonimo/fisico/:idRadicadoEntrada/:idTarea',\r\n RADICADO_ENTRADA_DIGITAL_ANONIMO_RADICADO: '/gestion/radicado-entrada/radicado/anonimo/digital/:idRadicadoEntrada/:idTarea',\r\n // PQR - Radicado\r\n PQR_FISICO_RADICADO: '/gestion/pqr/radicado/fisico/:idRadicadoEntrada/:idTarea',\r\n PQR_DIGITAL_RADICADO: '/gestion/pqr/radicado/digital/:idRadicadoEntrada/:idTarea',\r\n PQR_FISICO_ANONIMO_RADICADO: '/gestion/pqr/radicado/anonimo/fisico/:idRadicadoEntrada/:idTarea',\r\n PQR_DIGITAL_ANONIMO_RADICADO: '/gestion/pqr/radicado/anonimo/digital/:idRadicadoEntrada/:idTarea',\r\n\r\n // Radicado de entrada personalizado\r\n EXTENSION_RADICADO_ENTRADA_FISICO: '/tramitex/extensions/radicado-entrada/radicado/fisico/:extensionId/:idRadicadoEntrada/:idTipoTarea/:idTarea/:idSolicitud',\r\n EXTENSION_RADICADO_ENTRADA_DIGITAL: '/tramitex/extensions/radicado-entrada/radicado/digital/:extensionId/:idRadicadoEntrada/:idTipoTarea/:idTarea/:idSolicitud',\r\n EXTENSION_RADICADO_ENTRADA_FISICO_ANONIMO: '/tramitex/extensions/radicado-entrada/radicado/anonimo/fisico/:extensionId/:idRadicadoEntrada/:idTipoTarea/:idTarea/:idSolicitud',\r\n EXTENSION_RADICADO_ENTRADA_DIGITAL_ANONIMO: '/tramitex/extensions/radicado-entrada/radicado/anonimo/digital/:extensionId/:idRadicadoEntrada/:idTipoTarea/:idTarea/:idSolicitud',\r\n EXTENSION_PQR_FISICO: '/tramitex/extensions/pqr/radicado/fisico/:extensionId/:idRadicadoEntrada/:idTipoTarea/:idTarea/:idSolicitud',\r\n EXTENSION_PQR_DIGITAL: '/tramitex/extensions/pqr/radicado/digital/:extensionId/:idRadicadoEntrada/:idTipoTarea/:idTarea/:idSolicitud',\r\n EXTENSION_PQR_FISICO_ANONIMO: '/tramitex/extensions/pqr/radicado/anonimo/fisico/:extensionId/:idRadicadoEntrada/:idTipoTarea/:idTarea/:idSolicitud',\r\n EXTENSION_PQR_DIGITAL_ANONIMO: '/tramitex/extensions/pqr/radicado/anonimo/digital/:extensionId/:idRadicadoEntrada/:idTipoTarea/:idTarea/:idSolicitud',\r\n\r\n // Radicado de entrada - En trámite\r\n RADICADO_ENTRADA_FISICO_EN_TRAMITE: '/gestion/radicado-entrada/en-tramite/fisico/:idRadicadoEntrada/:idTarea',\r\n RADICADO_ENTRADA_DIGITAL_EN_TRAMITE: '/gestion/radicado-entrada/en-tramite/digital/:idRadicadoEntrada/:idTarea',\r\n RADICADO_ENTRADA_FISICO_ANONIMO_EN_TRAMITE: '/gestion/radicado-entrada/en-tramite/anonimo/fisico/:idRadicadoEntrada/:idTarea',\r\n RADICADO_ENTRADA_DIGITAL_ANONIMO_EN_TRAMITE: '/gestion/radicado-entrada/en-tramite/anonimo/digital/:idRadicadoEntrada/:idTarea',\r\n\r\n // Edición radicado de entrada\r\n VISTA_VENTANILLA_FISICO: '/gestion/radicado-entrada/devuelto/fisico/:idRadicadoEntrada/:idTarea',\r\n VISTA_VENTANILLA_DIGITAL: '/gestion/radicado-entrada/devuelto/digital/:idRadicadoEntrada/:idTarea',\r\n\r\n // Edición radicado de entrada de solo lectura\r\n COPIA_RADICADO_ENTRADA_FISICO: '/gestion/radicado-entrada/fisico/:idRadicadoEntrada',\r\n COPIA_RADICADO_ENTRADA_DIGITAL: '/gestion/radicado-entrada/digital/:idRadicadoEntrada',\r\n\r\n // Incluir en expediente - flujo documental\r\n INCLUIR_EXPEDIENTE_FLUJO_DOCUMENTAL_FISICO: '/gestion/flujo-documental/radicado-entrada/incluir-expediente/fisico/:idRadicadoEntrada/:idTarea',\r\n INCLUIR_EXPEDIENTE_FLUJO_DOCUMENTAL_DIGITAL: '/gestion/flujo-documental/radicado-entrada/incluir-expediente/digital/:idRadicadoEntrada/:idTarea',\r\n\r\n // Aprobación flujo documental\r\n APROBACION_FLUJO_DOCUMENTAL_FISICO: '/gestion/flujo-documental/radicado-entrada/fisico/:idRadicadoSalida/:idPasoFlujoDocumental/:idTarea/:esAprobacionFinal/:permitirDevolver',\r\n APROBACION_FLUJO_DOCUMENTAL_DIGITAL: '/gestion/flujo-documental/radicado-entrada/digital/:idRadicadoSalida/:idPasoFlujoDocumental/:idTarea/:esAprobacionFinal/:permitirDevolver',\r\n\r\n // Cración radicado de salida\r\n CREAR_RADICADO_SALIDA_FISICO: '/crear-radicado-salida/fisico/:idExpediente/:idRadicadoEntrada?',\r\n CREAR_RADICADO_SALIDA_DIGITAL: '/crear-radicado-salida/digital/:idExpediente/:idRadicadoEntrada?',\r\n\r\n // Edición radicado de salida\r\n EDITAR_RADICADO_SALIDA_FISICO: '/editar-radicado-salida/fisico/:idRadicadoSalida/:idTarea',\r\n EDITAR_RADICADO_SALIDA_DIGITAL: '/editar-radicado-salida/digital/:idRadicadoSalida/:idTarea',\r\n\r\n // Respuesta solicitud de visto bueno Radicado de Salida\r\n RESPONDER_SOLICITUD_VISTO_BUENO_DIGITAL: '/responder-solicitud-visto-bueno-digital/:idRadicadoSalida/:idSolicitudVistoBueno/:idUsuarioSolicitudVistoBueno/:idTarea',\r\n RESPONDER_SOLICITUD_VISTO_BUENO_FISICO: '/responder-solicitud-visto-bueno-fisico/:idRadicadoSalida/:idSolicitudVistoBueno/:idUsuarioSolicitudVistoBueno/:idTarea',\r\n\r\n APROBAR_RADICADO_SALIDA_DIGITAL: '/aprobar-rsd/:idRadicadoSalida/:idAprobacion/:idTarea',\r\n APROBAR_RADICADO_SALIDA_FISICO: '/aprobar-rsf/:idRadicadoSalida/:idAprobacion/:idTarea',\r\n\r\n // Radicado de salida PQR\r\n RADICADO_SALIDA_PQR_DIGITAL: '/crear-radicado-salida/pqr/digital/:idExpediente/:idRadicadoEntrada?',\r\n RADICADO_SALIDA_PQR_FISICO: '/crear-radicado-salida/pqr/fisico/:idExpediente/:idRadicadoEntrada?',\r\n\r\n // Edición radicado de salida PQR\r\n EDITAR_RADICADO_SALIDA_PQR_DIGITAL: '/editar-radicado-salida/pqr/digital/:idRadicadoSalida/:idTarea',\r\n EDITAR_RADICADO_SALIDA_PQR_FISICO: '/editar-radicado-salida/pqr/fisico/:idRadicadoSalida/:idTarea',\r\n\r\n // Responder solicitud de información radicado de entrada\r\n RESPONDER_SOLICITUD_CONCEPTO_FISICO: '/gestion/radicado-salida/solicitud-concepto/fisico/:idRadicadoSalida/:idSolicitudConcepto/:idUsuarioSolicitudConcepto/:idTarea',\r\n RESPONDER_SOLICITUD_CONCEPTO_DIGITAL: '/gestion/radicado-salida/solicitud-concepto/digital/:idRadicadoSalida/:idSolicitudConcepto/:idUsuarioSolicitudConcepto/:idTarea',\r\n RESPONDER_SOLICITUD_CONCEPTO_FISICO_ANONIMO: '/gestion/radicado-salida/solicitud-concepto/fisico/anonimo/:idRadicadoSalida/:idSolicitudConcepto/:idUsuarioSolicitudConcepto/:idTarea',\r\n RESPONDER_SOLICITUD_CONCEPTO_DIGITAL_ANONIMO: '/gestion/radicado-salida/solicitud-concepto/digital/anonimo/:idRadicadoSalida/:idSolicitudConcepto/:idUsuarioSolicitudConcepto/:idTarea',\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // Respuesta solicitud de visto bueno Radicado de Salida PQR\r\n RESPONDER_SOLICITUD_VISTO_BUENO_PQR_DIGITAL: '/responder-solicitud-visto-bueno/pqr/digital/:idRadicadoSalida/:idSolicitudVistoBueno/:idTarea',\r\n RESPONDER_SOLICITUD_VISTO_BUENO_PQR_FISICO: '/responder-solicitud-visto-bueno/pqr/fisico/:idRadicadoSalida/:idSolicitudVistoBueno/:idTarea',\r\n\r\n // Aprobación Radicado de Salida PQR\r\n APROBAR_RADICADO_SALIDA_PQR_DIGITAL: '/aprobar-radicado-salida/pqr/digital/:idRadicadoSalida/:idAprobacion/:idTarea',\r\n APROBAR_RADICADO_SALIDA_PQR_FISICO: '/aprobar-radicado-salida/pqr/fisico/:idRadicadoSalida/:idAprobacion/:idTarea',\r\n\r\n // Impresión de documentos\r\n IMPRESION_DOCUMENTOS: '/impresion-documentos',\r\n\r\n // Envío de documentos\r\n DOCUMENTOS_PENDIENTES_RECIBIR: '/envio-documentos/documentos-pendientes-recibir',\r\n\r\n ASIGNACION_ENVIOS: '/envio-documentos/asignacion-envios',\r\n GENERAR_PLANILLA: '/envio-documentos/generar-planilla',\r\n COMPROBANTE_ENTREGA: '/comprobantes-entrega',\r\n\r\n RECEPCION_FISICA: '/correspondencia/gestion/recepcion-fisica',\r\n\r\n CAPTURA_RE: '/captura-re',\r\n\r\n CAPTURA_RS: '/captura-rs',\r\n\r\n // Comunicado interno\r\n CREAR_COMUNICADO_INTERNO: '/crear-comunicado-interno/:idExpediente/:idVersionTablaRetencionDocumental',\r\n EDITAR_COMUNICADO_INTERNO: '/editar-comunicado-interno/:id/:idTarea',\r\n APROBAR_COMUNICADO_INTERNO: '/aprobar-comunicado-interno/:id/:idTarea',\r\n COMUNICADO_INTERNO_RECHAZADO: '/comunicado-interno-rechazado/:id/:idTarea',\r\n VER_COMUNICADO_INTERNO_PUBLICADO: '/ver-comunicado-interno/:id/:idTarea',\r\n RESPONDER_COMUNICADO_INTERNO: '/responder-comunicado-interno/:id',\r\n RESPONDER_SOLICITUD_VISTO_BUENO_COMUNICADO_INTERNO: '/gestion/comunicado-interno/responder-solicitud-visto-bueno/:id/:idSolicitudVistoBueno/:idsuarioSolicitudVistoBueno/:idTarea',\r\n MODO_LECTURA_COMUNICADO_INTERNO: '/consultar-comunicado-interno/:id',\r\n\r\n BUSQUEDA_AVANZADA_CORRESPONDENCIA: '/correspondencia/busqueda-avanzada',\r\n\r\n\r\n PARAMETRIZACION_CORRESPONDENCIA: '/correspondencia/administracion-general',\r\n APP_CONFIG: '/profile/my/settings',\r\n\r\n\r\n\r\n /**\r\n * Redirecciona a una ruta especifica\r\n * @param path Nueva ruta\r\n */\r\n redirect: (path: string): void => {\r\n if (path.indexOf('#') !== 0) {\r\n path = '#' + path;\r\n }\r\n (window.location as any).href = path;\r\n },\r\n\r\n back: (defaultUrl: string): void => {\r\n _routes_.redirect(defaultUrl);\r\n }\r\n\r\n}\r\n\r\nlet _fetchCount: number = 0;\r\nlet _background = document.createElement('div');\r\n_background.style.display = 'none';\r\n_background.style.position = 'absolute';\r\n_background.style.left = '0px';\r\n_background.style.top = '0px';\r\n_background.style.background = 'rgba(255, 255, 255, 0.5803921568627451)';\r\n_background.style.zIndex = '999999999';\r\n(document.body as any).append(_background);\r\n\r\nlet _loader = document.createElement('div');\r\n_loader.style.display = 'none';\r\n_loader.style.width = '96px';\r\n_loader.style.height = '96px';\r\n_loader.style.position = 'absolute';\r\n_loader.style.zIndex = '8888888888';\r\n_loader.innerHTML = ``;\r\n(document.body as any).append(_loader);\r\n\r\nexport function addFetch() {\r\n _fetchCount++;\r\n _background.style.display = 'block';\r\n _background.style.width = window.document.body.offsetWidth + 'px';\r\n _background.style.height = window.document.body.scrollHeight + 'px';\r\n _loader.style.display = 'block';\r\n (document.body as any).style.overflow = 'hidden';\r\n _loader.style.left = ((window.document.body.offsetWidth / 2) - 48) + 'px';\r\n _loader.style.top = ((window.document.body.offsetHeight / 2) - 48) + 'px';\r\n}\r\n\r\nexport function removeFetch(allow?: boolean) {\r\n if (_fetchCount > 0) {\r\n _fetchCount--;\r\n }\r\n if (_fetchCount == 0) {\r\n _background.style.display = 'none';\r\n _loader.style.display = 'none';\r\n (document.body as any).style.overflow = 'auto';\r\n }\r\n}\r\n\r\nexport function getFileExtension(fileName: string): string {\r\n const splitString = fileName.split('.');\r\n const extension = splitString.length >= 2 ? splitString[ splitString.length - 1 ] : 'desconocido';\r\n return extension;\r\n}\r\nexport function getFileName(fileName: string): string {\r\n let splitString = fileName.split('.');\r\n if (splitString.length === 1) {\r\n return splitString[ 0 ];\r\n } else {\r\n splitString.splice(splitString.length - 1, 1);\r\n return splitString.join('.');\r\n }\r\n}\r\n\r\nexport const DATETIME_ERROR_STYLE: CSSProperties = {\r\n color: 'rgb(168, 0, 0)',\r\n fontSize: '14px'\r\n}\r\n\r\nexport interface ISTYLES {\r\n BANDEJA_ENTRADA: {\r\n ASUNTO: CSSProperties;\r\n DESCRIPCION: CSSProperties;\r\n };\r\n APP: CSSProperties;\r\n SMALL_ERROR: CSSProperties;\r\n CARD: CSSProperties;\r\n CARD_LIGTH: CSSProperties;\r\n CONFIGURATION_TITLE: CSSProperties;\r\n CONFIGURATION_CARD: CSSProperties;\r\n}\r\n\r\nexport const STYLES: ISTYLES = {\r\n APP: {\r\n backgroundColor: '#E5EBF2',\r\n height: 'calc(100% - 77px)'\r\n },\r\n BANDEJA_ENTRADA: {\r\n ASUNTO: {\r\n margin: '0px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n },\r\n DESCRIPCION: {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n textAlign: 'right'\r\n }\r\n },\r\n SMALL_ERROR: {\r\n fontSize: '12px',\r\n fontWeight: 400,\r\n color: '#a80000'\r\n },\r\n CARD: {\r\n border: 'solid 1px silver',\r\n marginBottom: '10px',\r\n boxShadow: '1px 3px 4px 0px #b19f9f',\r\n padding: '8px',\r\n maxWidth: '100%',\r\n marginLeft: '0px'\r\n },\r\n CARD_LIGTH: {\r\n border: 'solid 1px silver',\r\n marginBottom: '10px',\r\n boxShadow: 'rgb(226, 226, 226) 1px 1px 1px 0px',\r\n padding: '8px',\r\n maxWidth: '100%',\r\n marginLeft: '0px'\r\n },\r\n CONFIGURATION_TITLE: {\r\n marginTop: '30px',\r\n marginBottom: '0px'\r\n },\r\n CONFIGURATION_CARD: {\r\n border: 'solid 1px #efefef',\r\n marginBottom: '10px',\r\n padding: '8px',\r\n maxWidth: '100%',\r\n marginLeft: '0px',\r\n paddingBottom: '15px',\r\n marginTop: '15px'\r\n }\r\n}\r\n\r\nconst baseProductionCdnUrl = 'https://static2.sharepointonline.com/files/fabric/office-ui-fabric-react-assets/';\r\n\r\nexport const TestImages = {\r\n choiceGroupBarUnselected: baseProductionCdnUrl + 'choicegroup-bar-unselected.png',\r\n choiceGroupBarSelected: baseProductionCdnUrl + 'choicegroup-bar-selected.png',\r\n choiceGroupPieUnselected: baseProductionCdnUrl + 'choicegroup-pie-unselected.png',\r\n choiceGroupPieSelected: baseProductionCdnUrl + 'choicegroup-pie-selected.png',\r\n documentPreview: baseProductionCdnUrl + 'document-preview.png',\r\n documentPreviewTwo: baseProductionCdnUrl + 'document-preview2.png',\r\n documentPreviewThree: baseProductionCdnUrl + 'document-preview3.png',\r\n iconOne: baseProductionCdnUrl + 'icon-one.png',\r\n iconPpt: baseProductionCdnUrl + 'icon-ppt.png',\r\n personaFemale: baseProductionCdnUrl + 'persona-female.png',\r\n personaMale: baseProductionCdnUrl + 'persona-male.png'\r\n};\r\n\r\nlet autoincrement = 0;\r\nexport const VanillaToasts = {\r\n create: function (options: any) {\r\n var toast = document.createElement('div') as any; toast.id = ++autoincrement; toast.id = 'toast-' + toast.id; toast.className = 'vanillatoasts-toast'; if (options.title) { var h4 = document.createElement('h4'); h4.className = 'vanillatoasts-title'; h4.innerHTML = options.title; toast.appendChild(h4); }\r\n if (options.text) { var p = document.createElement('p'); p.className = 'vanillatoasts-text'; p.innerHTML = options.text; toast.appendChild(p); }\r\n if (options.icon) { var img = document.createElement('img'); img.src = options.icon; img.className = 'vanillatoasts-icon'; toast.appendChild(img); }\r\n if (typeof options.callback === 'function') { toast.addEventListener('click', options.callback); }\r\n toast.hide = function () { toast.className += ' vanillatoasts-fadeOut'; toast.addEventListener('animationend', removeToast, false); }; if (options.timeout) { setTimeout(toast.hide, options.timeout); }\r\n if (options.type) { toast.className += ' vanillatoasts-' + options.type; }\r\n toast.addEventListener('click', toast.hide); function removeToast() { document.getElementById('vanillatoasts-container').removeChild(toast); }\r\n document.getElementById('vanillatoasts-container').appendChild(toast); return toast;\r\n }\r\n};\r\n\r\nexport function onFormatDate(date: Date): string {\r\n\r\n if (typeof (date) === 'string') {\r\n date = new Date(date);\r\n }\r\n\r\n let day = String(date.getDate());\r\n day = day.length === 1 ? '0' + day : day;\r\n\r\n let month = String(date.getMonth() + 1);\r\n month = month.length === 1 ? '0' + month : month;\r\n\r\n if (typeof (date) === 'object') {\r\n return day + '/' + month + '/' + (date.getFullYear());\r\n } else {\r\n return date;\r\n }\r\n};\r\n\r\nexport interface ICustomItemDetailList {\r\n thumbnail: string;\r\n key: string;\r\n name: string;\r\n description: string;\r\n color: string;\r\n shape: string;\r\n location: string;\r\n width: number;\r\n height: number;\r\n}\r\n\r\n/**\r\n* Representa el resultado de la validación de un control\r\n* @param {number|function} type Nombre del tipo de validación\r\n*/\r\nexport class ValidationResult {\r\n\r\n validationType: string = '';\r\n hasError: boolean = false;\r\n errorMessage: string = '';\r\n value: any = null;\r\n expectedValue: any = null;\r\n\r\n constructor(validationType?: string) {\r\n this.validationType = validationType;\r\n }\r\n\r\n static createError(errorMessage: string) {\r\n const result = new ValidationResult();\r\n result.hasError = true;\r\n result.errorMessage = errorMessage;\r\n return result;\r\n }\r\n\r\n static createSuccess() {\r\n const result = new ValidationResult();\r\n return result;\r\n }\r\n\r\n}\r\n\r\nexport const validator = {\r\n\r\n required: function validator(value) {\r\n value = value || true;\r\n return function validator(formValue) {\r\n\r\n var response = new ValidationResult('validator.required');\r\n\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n } else if (typeof (value) === 'boolean') {\r\n expectedValue = value;\r\n } else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.maxLength\" no es valido.');\r\n }\r\n\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n\r\n // Obtener la longitud del valor\r\n if (expectedValue === true && (formValue == null || formValue.toString().length === 0)) {\r\n response.hasError = true;\r\n response.errorMessage = 'Campo requerido';\r\n }\r\n return response;\r\n }\r\n },\r\n\r\n maxLength: function validator(value: number | Function, customMessageError?: string | Function) {\r\n return function validator(formValue) {\r\n\r\n var response = new ValidationResult('validator.maxLength');\r\n\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n } else if (typeof (value) === 'number') {\r\n expectedValue = value;\r\n } else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.maxLength\" no es valido.');\r\n }\r\n\r\n // Verificar que el valor esperado sea mayor a cero\r\n if (expectedValue > 0) {\r\n\r\n // Obtener la longitud del valor\r\n\r\n var lenght = 0;\r\n if (formValue == null) {\r\n formValue = 0;\r\n } else if (typeof (formValue) === 'string') {\r\n lenght = formValue.toString().length\r\n } else if (typeof (formValue) === 'number') {\r\n lenght = formValue.toString().length\r\n }\r\n\r\n response.expectedValue = expectedValue;\r\n response.value = lenght;\r\n\r\n // Realizar validación\r\n if (lenght > expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `Se permite máximo ${expectedValue} caracteres.`;\r\n }\r\n }\r\n return response;\r\n }\r\n },\r\n\r\n minLength: function minLengthValidator(value: number | Function, customMessageError?: string | Function) {\r\n return function minLengthValidator(formValue) {\r\n\r\n var response = new ValidationResult('validator.minLength');\r\n\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n } else if (typeof (value) === 'number') {\r\n expectedValue = value;\r\n } else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.minLength\" no es valido.');\r\n }\r\n\r\n if (expectedValue > 0) {\r\n\r\n // Obtener la longitud del valor\r\n var lenght = 0;\r\n if (formValue == null) {\r\n formValue = 0;\r\n } else if (typeof (formValue) === 'string') {\r\n lenght = formValue.toString().length;\r\n } else if (typeof (formValue) === 'number') {\r\n lenght = formValue.toString().length;\r\n } else if (typeof (formValue) === 'object' && formValue instanceof Array) {\r\n lenght = formValue.length;\r\n }\r\n\r\n response.expectedValue = expectedValue;\r\n response.value = lenght;\r\n\r\n // Realizar validación\r\n if (lenght < expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `Se requiere ingresar como mínimo ${expectedValue} caracteres.`;\r\n }\r\n }\r\n return response;\r\n }\r\n },\r\n\r\n maxValue: function maxValueValidator(value: number | Function, customMessageError?: string | Function) {\r\n return function maxValueValidator(formValue) {\r\n\r\n var response = new ValidationResult('validator.maxValue');\r\n\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n } else if (typeof (value) === 'number') {\r\n expectedValue = value;\r\n } else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.maxLength\" no es valido.');\r\n }\r\n\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n if (formValue > expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `El valor máximo permitido es ${expectedValue} caracteres.`;\r\n }\r\n\r\n return response;\r\n }\r\n },\r\n\r\n minValue: function minValueValidator(value: number | Function, customMessageError?: string | Function) {\r\n return function minValueValidator(formValue) {\r\n\r\n var response = new ValidationResult('validator.minValue');\r\n\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n } else if (typeof (value) === 'number') {\r\n expectedValue = value;\r\n } else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.minValue\" no es valido.');\r\n }\r\n\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n if (formValue < expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `El valor minimo permitido es ${expectedValue} caracteres.`;\r\n }\r\n\r\n return response;\r\n }\r\n },\r\n\r\n invalid: function validator(value: any, errorMessage: string) {\r\n return function validator(formValue: any) {\r\n\r\n var response = new ValidationResult('validator.invalid');\r\n\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n } else if (typeof (value) === 'number') {\r\n expectedValue = value;\r\n } else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.invalid\" no es valido.');\r\n }\r\n\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n if (formValue == expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = errorMessage;\r\n }\r\n\r\n return response;\r\n }\r\n },\r\n\r\n custom: function validator(callback: (value: any) => ValidationResult) {\r\n return function validator(formValue) {\r\n return callback(formValue);\r\n }\r\n },\r\n\r\n maxDate: function maxDateValidator(value: Date | Function, customMessageError?: string | Function) {\r\n return function maxDateValidator(formValue) {\r\n\r\n var response = new ValidationResult('validator.maxDate');\r\n\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n } else if (typeof (value) === 'object') {\r\n expectedValue = value;\r\n } else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.maxDate\" no es valido.');\r\n }\r\n\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n if (formValue > expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `la fecha máxima permitida es ${expectedValue}.`;\r\n }\r\n\r\n return response;\r\n }\r\n },\r\n\r\n minDate: function minDateValidator(value: Date | Function, customMessageError?: string | Function) {\r\n return function minDateValidator(formValue) {\r\n\r\n var response = new ValidationResult('validator.minDate');\r\n\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n } else if (typeof (value) === 'object') {\r\n expectedValue = value;\r\n } else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.minDate\" no es valido.');\r\n }\r\n\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n if (formValue < expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `la fecha mínima permitida es ${expectedValue}.`;\r\n }\r\n\r\n return response;\r\n }\r\n },\r\n\r\n email: function validator(errorMessage?: string) {\r\n return function validator(formValue: string) {\r\n const response = new ValidationResult('validator.email');\r\n if (formValue.trim().length > 0) {\r\n response.value = formValue;\r\n const 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 if (re.test(formValue) === false) {\r\n response.hasError = true;\r\n response.errorMessage = 'Formato de correo no valido' || errorMessage;\r\n }\r\n }\r\n return response;\r\n }\r\n },\r\n\r\n domainUser: function domainUserValidator(errorMessage?: string) {\r\n return function domainUserValidator(formValue: string) {\r\n const response = new ValidationResult('validator.domainUser');\r\n if (formValue.trim().length > 0) {\r\n response.value = formValue;\r\n const re = /^[A-Za-z0-9\\\\\\._-]{7,}$/;\r\n if (re.test(formValue) === false) {\r\n response.hasError = true;\r\n response.errorMessage = 'Formato de usuario de dominio no valido' || errorMessage;\r\n }\r\n }\r\n return response;\r\n }\r\n },\r\n\r\n identity: function identityValidator(errorMessage?: string) {\r\n return function identityValidator(formValue: string) {\r\n const response = new ValidationResult('validator.identity');\r\n if (!$_.isNullOrEmpty(formValue)) {\r\n response.value = formValue;\r\n const re = /^[0-9]+$/;\r\n if (re.test(formValue) === false) {\r\n response.hasError = true;\r\n response.errorMessage = 'Formato no válido, no debe contener caracteres' || errorMessage;\r\n }\r\n }\r\n return response;\r\n }\r\n },\r\n\r\n onlyText: function validator(errorMessage?: string) {\r\n return function validator(formValue: string) {\r\n const response = new ValidationResult('validator.onlyText');\r\n if (formValue.trim().length > 0) {\r\n response.value = formValue;\r\n const re = /^[a-zA-Z ]+$/;\r\n if (re.test(formValue) === false) {\r\n response.hasError = true;\r\n response.errorMessage = 'Texto no valido' || errorMessage;\r\n }\r\n }\r\n return response;\r\n }\r\n },\r\n\r\n\r\n\r\n};\r\n\r\nexport function validateProperty(propertyValue: string | number, validations: any[]): ValidationResult {\r\n\r\n let result: ValidationResult = new ValidationResult();\r\n\r\n if (validations == null) {\r\n return result;\r\n }\r\n\r\n for (var i = 0; i < validations.length; i++) {\r\n var validation = validations[ i ];\r\n if (typeof (validation) != 'function') {\r\n throw new Error('El validador debe ser una función');\r\n }\r\n else {\r\n var tmp = validation(propertyValue);\r\n if (tmp.hasError === true) {\r\n result = tmp;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function validateObject(model: { [ key: string ]: any }, validations: { [ key: string ]: any }, output: ((errors: { [ key: string ]: string }, isValid: boolean) => void)): boolean {\r\n\r\n let isValid: boolean = true;\r\n let key: string;\r\n let errors: { [ key: string ]: string } = {};\r\n for (key in model) {\r\n let value = model[ key ];\r\n let _validations = validations[ key ];\r\n if (_validations != null && _validations.length > 0) {\r\n let validationResult: ValidationResult = validateProperty(value, _validations);\r\n if (validationResult.hasError) {\r\n isValid = false;\r\n errors[ key ] = validationResult.errorMessage;\r\n } else {\r\n errors[ key ] = '';\r\n }\r\n }\r\n }\r\n // Actualizar errores\r\n output(errors, isValid);\r\n return isValid;\r\n}\r\n\r\nexport interface IAppServices {\r\n\r\n ProcesoX: {\r\n ProjectSvc: ProjectService;\r\n },\r\n\r\n ArchivoxClient: ArchivoxClient;\r\n TipoContactoSvc: TipoContactoService;\r\n TIPO_IDENTIFICACION_SERVICE: TipoIdentificacionService;\r\n}\r\n\r\nexport function defaultIAppServices(): IAppServices {\r\n return {\r\n ProcesoX: {\r\n ProjectSvc: new ProjectService()\r\n },\r\n ArchivoxClient: new ArchivoxClient(),\r\n TipoContactoSvc: new TipoContactoService(),\r\n TIPO_IDENTIFICACION_SERVICE: new TipoIdentificacionService(),\r\n };\r\n}\r\n\r\nexport interface IExtensionAplicacion {\r\n IdAplicacion: number;\r\n IdExtensionAplicacion: number;\r\n ClassName: string;\r\n Aplicacion: string;\r\n}\r\n\r\nexport interface IOpcionSeleccionable {\r\n Nombre: string;\r\n IdOpcionListaDesplegableMetadato: number;\r\n IdMetadato: number;\r\n Activo: boolean;\r\n}\r\n\r\nexport function defaultIOpcionSeleccionable(): IOpcionSeleccionable {\r\n return {\r\n Activo: false,\r\n IdMetadato: 0,\r\n IdOpcionListaDesplegableMetadato: 0,\r\n Nombre: ''\r\n };\r\n}\r\n\r\nexport interface IParametro extends IEntityBase {\r\n IdTipoParametro: number;\r\n IdParametro: number;\r\n Nombre: string;\r\n Descripcion: string;\r\n Valor: string;\r\n Activo: boolean;\r\n}\r\n\r\nexport interface ITipoColumnaMetadato {\r\n IdTipoColumnaMetadato: number;\r\n Nombre: string;\r\n Descripcion: string;\r\n Activo: boolean;\r\n}\r\n\r\nexport interface IValorMetadato {\r\n IdValorMetadato: number;\r\n IdExpediente: number;\r\n IdDocumentoExpediente: number;\r\n IdMetadato: number;\r\n Valor: any;\r\n IdOpcionListaDesplegableMetadato: number;\r\n Nombre?: string;\r\n Codigo: string;\r\n CategoriaMetadato?: string;\r\n}\r\n\r\nexport enum TipoColumnaMetadato {\r\n Texto = 1,\r\n Nota = 2,\r\n Fecha = 3,\r\n Seleccion = 4,\r\n SiNo = 5,\r\n Numero = 6,\r\n Moneda = 7,\r\n Usuario = 8,\r\n ExpresionRegular = 9,\r\n Pais = 10,\r\n Departamento = 11,\r\n Ciudad = 12,\r\n TipoIdentificacion = 13,\r\n Custom = 14,\r\n Metadato = 15,\r\n Titulo = 16,\r\n Parrafo = 17,\r\n Contactos = 18,\r\n ContactosPersonas = 19,\r\n ContactosEntidades = 20,\r\n CustomMultiSeleccion = 21\r\n}\r\n\r\nexport interface IDocumento {\r\n Nombre: string;\r\n NombreArchivo?: string;\r\n ServerRelativeUrl?: string;\r\n Length: number;\r\n UniqueId?: string\r\n ODataId?: string\r\n Extension: string;\r\n Archivo?: File;\r\n Archivo64?: string;\r\n Tipo?: string;\r\n IdDocumentoExpediente?: number;\r\n IdAnexoDocumentoExpediente?: number;\r\n IdDocumentoRadicadoEntrada?: number;\r\n Cargado?: boolean;\r\n IdDocumentoRadicadoSalida?: number;\r\n IdRadicadoEntrada?: number;\r\n IdRadicadoSalida?: number;\r\n IdComunicadoInterno?: number;\r\n IdDocumentoComunicadoInterno?: number;\r\n // Propiedades adicionales\r\n Data?: any;\r\n PreventRemove?: boolean;\r\n IsDropZoneFile?: boolean;\r\n EsOficio?: boolean;\r\n}\r\n\r\nexport function defaultIDocumento(): IDocumento {\r\n return {\r\n Nombre: '',\r\n NombreArchivo: '',\r\n ServerRelativeUrl: '',\r\n Length: 0,\r\n UniqueId: '',\r\n ODataId: '',\r\n Extension: '',\r\n Archivo: undefined,\r\n Archivo64: '',\r\n Tipo: '',\r\n IdDocumentoExpediente: 0,\r\n IdAnexoDocumentoExpediente: 0,\r\n IdDocumentoRadicadoEntrada: 0,\r\n IdDocumentoRadicadoSalida: 0,\r\n IdDocumentoComunicadoInterno: 0,\r\n IdRadicadoEntrada: 0,\r\n IdRadicadoSalida: 0,\r\n IdComunicadoInterno: 0,\r\n Data: undefined,\r\n PreventRemove: false,\r\n IsDropZoneFile: false,\r\n EsOficio: false\r\n }\r\n}\r\n\r\nexport enum Rol {\r\n AdministradorArchivox = 1,\r\n AdministradorTramitex = 2,\r\n CrearExpediente = 3,\r\n DistribucionInterna = 4,\r\n DigitalizacionRE = 5,\r\n BusquedaExpedienteGestion = 6,\r\n BusquedaExpedienteCentral = 7,\r\n BusquedaExpedienteHistorico = 8,\r\n TransferenciaPrimaria = 9,\r\n TransferenciaSecundaria = 10,\r\n DescargarIndiceElectronico = 11,\r\n EmpaquetarExpediente = 12,\r\n Ventanilla = 13,\r\n\r\n ImpresionDocumentos = 14,\r\n\r\n /// \r\n /// \r\n /// \r\n RecoleccionDocumentos = 15,\r\n\r\n PoxtaEnvioDocumentos = 16,\r\n\r\n DigitalizacionRS = 17,\r\n\r\n ResponderRadicadoEntrada = 18,\r\n\r\n EmpaquetarExpedienteCentral = 19,\r\n EmpaquetarExpedienteHistorico = 20,\r\n DescargarIndiceElectronicoCentral = 21,\r\n DescargarIndiceElectronicoHistorico = 22,\r\n AprobarRadicado = 23,\r\n CrearComunicadoInterno = 24,\r\n AprobarComunicadoInterno = 25,\r\n DescargarTipoDocumental = 26,\r\n EmpaquetarMasivamente = 27,\r\n ImprimirDocumental = 28,\r\n VerificarIntegridad = 29,\r\n\r\n /// \r\n /// Permite la crear, modificar y eliminar contactos\r\n /// \r\n AdministrarContactos = 30,\r\n\r\n EditarDocumentosAnexosRadicadoEntrada = 31,\r\n ReclasificarPQRD = 32,\r\n AnulacionRadicadoSalida = 33,\r\n Correspondencia_ReimpresionSticker = 34,\r\n GestionarBandejas = 35,\r\n BusquedaCorrespondenciaPorUsuarioResponsable = 36,\r\n ReportesPowerBI = 37,\r\n AdministradorFlujos = 38,\r\n VisualizarCorrespondenciaBusquedaAvanzada = 39,\r\n ExportarHistoricoExpediente = 40,\r\n ExportarDirectorioExpedientes = 41,\r\n AdministradorSuscripcion = 42,\r\n}\r\n\r\nexport interface IClasificacionPQRS {\r\n IdClasificacionPQRS: number;\r\n IdClasificacionPQRSPadre: number;\r\n Nombre: string;\r\n Descripcion: string;\r\n IdAlcanceTema: number;\r\n IdUsuarioResponsable: number;\r\n RegistroWeb: boolean;\r\n RegistroVentanilla: boolean;\r\n RegistroMesaAyuda: boolean;\r\n Activo: boolean;\r\n IdPrioridadTema: number;\r\n PalabrasClave: string;\r\n HabilitarOtraClasificacionPQR: boolean;\r\n SeccionUsuarioResponsable: string;\r\n}\r\n\r\nexport interface ITramiteProps {\r\n OnRenderRadicadoEntradaMetadata?: string;\r\n ProcesoxFormVersionId?: string;\r\n ProcesoxProjectId?: string;\r\n ShowButtonInWeb?: boolean;\r\n HideVirtualOfficeDefaultPage?: boolean;\r\n}\r\n\r\nexport const defaultITramiteProps = (): ITramiteProps => {\r\n return {\r\n ShowButtonInWeb: false\r\n };\r\n}\r\n\r\nexport interface IContactType {\r\n ContactTypeId: number;\r\n Name: boolean;\r\n IsAnonymous: boolean;\r\n}\r\n\r\nexport interface ITramite {\r\n Activo: boolean;\r\n Descripcion: string;\r\n Funcion: string;\r\n Componente: string;\r\n IdTipoAsignacionTramite: number;\r\n IdTipoEjecucionGestionTramite: number;\r\n IdTramite: number;\r\n Nombre: string;\r\n Props?: ITramiteProps;\r\n RegistroWeb: boolean;\r\n TiposContacto: IContactType[]\r\n}\r\n\r\nexport function defaultITramite(): ITramite {\r\n return {\r\n Activo: false,\r\n Componente: '',\r\n Descripcion: '',\r\n Funcion: '',\r\n IdTipoAsignacionTramite: 1,\r\n IdTipoEjecucionGestionTramite: 0,\r\n IdTramite: 0,\r\n Nombre: '',\r\n RegistroWeb: true,\r\n TiposContacto: []\r\n };\r\n}\r\n\r\nexport enum TipoAsignacionTramiteEnum {\r\n UsuarioPredeterminado = 1,\r\n AsignarUnoAUno = 2,\r\n AsignarAlQueMenosTenga = 3,\r\n SeleccionarUsuarioCerrado = 4,\r\n SeleccionarUsuarioAbierto = 5,\r\n Clasificacion = 7\r\n}\r\n\r\nexport enum TipoEjecucionGestionTramiteEnum {\r\n CaseManagement = 1,\r\n FlujoDocumental = 2,\r\n Proceso = 3\r\n}\r\n\r\nexport interface IContacto {\r\n IdContacto: number;\r\n IdTipoContacto: number;\r\n TipoContacto: string;\r\n IdTipoIdentificacion: number;\r\n TipoIdentificacion: string;\r\n Identificacion: string;\r\n Nombres: string; // Almacena la razón social de las empresas\r\n Apellidos: string; // Almacena las siglas de las empresas\r\n Direccion: string;\r\n Barrio: string;\r\n Telefono: string;\r\n Celular: string;\r\n Extension: string;\r\n Email: string;\r\n IdCiudad: number;\r\n Ciudad: string;\r\n IdDepartamento: number;\r\n Departamento: string;\r\n IdPais: number;\r\n Pais: string;\r\n Activo: boolean;\r\n CodigoPostal: string;\r\n Cargo: string;\r\n IdGenero: number;\r\n IdGrupoEtnico: number;\r\n IdAntencionPreferencial: number;\r\n IdDiscapacidad: number;\r\n NombreRepresentante: string;\r\n EmailRepresentante: string;\r\n CargoRepresentante: string;\r\n TelefonoRepresentante: string;\r\n IdTipoPersona: number;\r\n TipoPersona: string;\r\n FechaNacimiento: Date;\r\n FechaNacimientoString: string;\r\n IdNivelEducativo: number;\r\n IdProfesion: number;\r\n IdTipoEntidad: number;\r\n ActuaComoApoderado: boolean;\r\n IdTipoIdentificacionApoderado: number;\r\n TipoIdentificacionApoderado: string;\r\n IdentificacionApoderado: string;\r\n NombresApoderado: string;\r\n ApellidosApoderado: string;\r\n DireccionApoderado: string;\r\n TelefonoApoderado: string;\r\n EmailApoderado: string;\r\n AutorizaNotificacionEmail: boolean;\r\n AutorizaNotificacionFisica: boolean;\r\n AutorizaLlamadaFijo: boolean;\r\n AutorizaLlamadaCelular: boolean;\r\n AutorizaTratamientoDatos: boolean;\r\n}\r\n\r\nexport function defaultIContacto(): IContacto {\r\n return {\r\n IdContacto: 0,\r\n IdTipoContacto: 0,\r\n TipoContacto: '',\r\n IdTipoIdentificacion: 0,\r\n TipoIdentificacion: '',\r\n Identificacion: '',\r\n Nombres: '',\r\n Apellidos: '',\r\n Direccion: '',\r\n Barrio: '',\r\n Telefono: '',\r\n Celular: '',\r\n Extension: '',\r\n Email: '',\r\n IdCiudad: 0,\r\n Ciudad: '',\r\n IdDepartamento: 0,\r\n Departamento: '',\r\n IdPais: 0,\r\n Pais: '',\r\n Activo: false,\r\n CodigoPostal: '',\r\n Cargo: '',\r\n IdGenero: 0,\r\n IdGrupoEtnico: 0,\r\n IdAntencionPreferencial: 0,\r\n IdDiscapacidad: 0,\r\n NombreRepresentante: '',\r\n EmailRepresentante: '',\r\n CargoRepresentante: '',\r\n TelefonoRepresentante: '',\r\n IdTipoPersona: 0,\r\n TipoPersona: '',\r\n FechaNacimiento: null,\r\n FechaNacimientoString: '',\r\n IdNivelEducativo: 0,\r\n IdProfesion: 0,\r\n IdTipoEntidad: 0,\r\n ActuaComoApoderado: false,\r\n IdTipoIdentificacionApoderado: 0,\r\n TipoIdentificacionApoderado: '',\r\n IdentificacionApoderado: '',\r\n NombresApoderado: '',\r\n ApellidosApoderado: '',\r\n DireccionApoderado: '',\r\n TelefonoApoderado: '',\r\n EmailApoderado: '',\r\n AutorizaNotificacionEmail: true,\r\n AutorizaNotificacionFisica: false,\r\n AutorizaLlamadaFijo: false,\r\n AutorizaLlamadaCelular: false,\r\n AutorizaTratamientoDatos: false\r\n };\r\n}\r\n\r\nexport interface ICopiaRadicado extends IEntityBase {\r\n IdCopiaRadicadoEntrada: number;\r\n IdCopiaRadicadoSalida: number;\r\n IdRadicado: number;\r\n IdSeccion: number;\r\n Seccion: string;\r\n IdUsuario: number;\r\n Usuario: string;\r\n}\r\n\r\nexport interface IDestinatarioRespuestaPQRS {\r\n IdDestinatarioRespuestaPQRS: number;\r\n Nombre: string;\r\n}\r\n\r\nexport interface IDocumentoUsuarioSolicitudConcepto {\r\n IdDocumentoUsuarioSolicitudConcepto?: number;\r\n IdUsuarioSolicitudConcepto?: number;\r\n IdDocumentoUsuarioSolicitudVistoBueno?: number;\r\n IdUsuarioSolicitudVistoBueno?: number;\r\n ServerRelativeUrl?: string;\r\n UniqueId?: string;\r\n ODataId?: string;\r\n Length?: number;\r\n NombreArchivo?: string;\r\n Nombre?: string;\r\n Extension?: string;\r\n Hash?: string;\r\n Archivo64?: string;\r\n Archivo?: File;\r\n DocumentoRadicadoEntrada?: boolean;\r\n}\r\n\r\nexport enum EstadoRadicado {\r\n Borrador = 1,\r\n CapturaRE = 2,\r\n DistribucionPendiente = 3,\r\n Radicado = 4,\r\n EnTramite = 5, // Cuando se incluye en un expediente, el radicado queda en tramite\r\n PendienteRecibir = 6,\r\n DistribucionRealizada = 7,\r\n DevueltoRecepcionFisica = 8, // Cuando se devuelve a ventanilla y este debe asignar de nuevo\r\n Respondido = 9,\r\n PendienteAclaracion = 11,\r\n PendienteInformacion = 12,\r\n PendienteAmpliacion = 13,\r\n\r\n //SIPAR\r\n Archivado = 161\r\n}\r\n\r\nexport enum EstadoRadicadoSalida {\r\n\r\n Default = 0,\r\n\r\n /// \r\n /// El radicado se encuentra en trámite\r\n /// \r\n EnTramite = 1,\r\n\r\n /// \r\n /// El radicado de entrada se encuentra en proceso de visto bueno.\r\n /// \r\n SolicitudVistoBueno = 2,\r\n\r\n /// \r\n /// El radicado de salida tiene una solicitud de aprobación pendiente\r\n /// \r\n EnAprobacion = 3,\r\n\r\n /// \r\n /// El radicado de entrada ya fue aprobado. Solo si es fisico queda pendiente por imprimir\r\n /// \r\n Aprobado = 4,\r\n\r\n /// \r\n /// Documento ya fue impreso y queda pendiente para sea recolectado por el enrutador\r\n /// \r\n Impreso = 5,\r\n\r\n /// \r\n /// Documento ya fue recolectado y queda pendiente para que sea recibido\r\n /// \r\n Recolectado = 6,\r\n\r\n /// \r\n /// El documento es recibido por ventanilla en el formulario \"Envio de documentos / Pendiente por recibir\"\r\n /// \r\n Recibido = 7,\r\n\r\n /// \r\n /// El documento ya finalizo la fase de digitalización en CAPTURA RE\r\n /// \r\n Digitalizado = 8,\r\n\r\n /// \r\n /// Al radicado de salida ya se le finalizao el paso de asignación envio\r\n /// \r\n AsignadoParaEnvio = 9,\r\n\r\n /// \r\n /// Ya se genero planilla\r\n /// \r\n PlanillaGenerada = 10,\r\n\r\n /// \r\n /// El radicado fue entregado\r\n /// \r\n Entregado = 11,\r\n\r\n /// \r\n /// El radicado fue devuelto\r\n /// \r\n Devuelto = 12,\r\n\r\n /// \r\n /// El radicado fue anulado\r\n /// \r\n Anulado = 13\r\n}\r\n\r\nexport interface IGenerarPlanillaUpdateModel {\r\n NumeroGuia: string;\r\n NumeroOrden: string;\r\n FechaEnvio: Date;\r\n Direccion: string;\r\n}\r\n\r\nexport function defaultIGenerarPlanillaUpdateModel(): IGenerarPlanillaUpdateModel {\r\n return {\r\n NumeroGuia: '',\r\n NumeroOrden: '',\r\n FechaEnvio: new Date(),\r\n Direccion: '',\r\n }\r\n}\r\n\r\nexport interface IRadicadoEntrada {\r\n Anexos: IDocumento[];\r\n CustomMetadata: IDictionary;\r\n Anonima: boolean;\r\n Apellidos: string;\r\n Asunto: string;\r\n AutorizaRespuestaCorreoElectronicoOSitioWeb: boolean;\r\n CantidadFolios: number;\r\n Ciudad: string,\r\n ClasificacionPQRS: string;\r\n ComprobanteEntrega?: IDocumento;\r\n ComprobanteEntregado?: boolean;\r\n CopiasRadicadoEntrada: ICopiaRadicado[];\r\n Departamento: string,\r\n Digital: boolean;\r\n Direccion: string;\r\n Distribucion: string;\r\n Email: string;\r\n Extension: string;\r\n IdAlerta: number;\r\n IdCiudad: number,\r\n IdClasificacionPQRS: number;\r\n IdContacto: number;\r\n IdDepartamento: number,\r\n Identificacion: string;\r\n IdEstadoActual: EstadoRadicado;\r\n IdExpediente: number;\r\n IdOficioRemisorioSharePoint: number;\r\n IdPais: number;\r\n IdRadicadoEntrada: number;\r\n IdRadicadoEntradaVinculado: number;\r\n IdRadicadoSalidaVinculado: number;\r\n IdReferencia: number;\r\n IdSeccion: number;\r\n IdTarea: number;\r\n IdTipoContacto: number;\r\n IdTipoDocumental: number;\r\n IdTipoEjecucionGestionTramite: number;\r\n IdTipoIdentificacion: number;\r\n IdTramite: number;\r\n IdUsuarioResponsable: number;\r\n MedioRecepcionEmpresaMensajeria: string;\r\n MedioRecepcionEsCorreoCertificado: boolean;\r\n MedioRecepcionNumeroGuiaRecepcion: string;\r\n MetadatosAsociados: IMetadatoAsociado[];\r\n Nombres: string;\r\n NumeroAnexos: number;\r\n NumeroExpediente: string;\r\n NumeroPreRadicado: string;\r\n NumeroRadicado: string;\r\n NumeroRadicadoSalida: string;\r\n OficioRemisorio: IDocumento;\r\n Pais: string;\r\n PqrWeb: boolean;\r\n PrefiereRespuestaFisica: boolean;\r\n ProcesoxData: { [ key: string ]: any };\r\n RadicadoEsDigital: boolean;\r\n RecepcionFisica: boolean;\r\n Referencia: string;\r\n Seccion: string;\r\n ServerRelativeUrl: string;\r\n Telefono: string;\r\n TiempoMaximoRespuesta: Date;\r\n TiempoMaximoRespuestaString: string;\r\n TipoContacto: string;\r\n TipoIdentificacion: string;\r\n Tramite: string;\r\n UrlOficioRemisorioSharePoint: string;\r\n UsuarioResponsable: string;\r\n ValoresMetadatos: IValorMetadato[];\r\n RepresentaRiesgo: boolean;\r\n}\r\n\r\nexport interface IMetadatoAsociado {\r\n IdMetadatoSubserie: number;\r\n IdMetadato: number;\r\n IdTipoColumnaMetadato: TipoColumnaMetadato;\r\n IdCategoriaMetadato: number;\r\n IdMetadatoFlujo: number;\r\n IdMetadatoPasoFlujoDocumental: number;\r\n CategoriaMetadato: string;\r\n Nombre: string;\r\n Descripcion: string;\r\n Asociado: boolean;\r\n Lectura: boolean;\r\n Escritura: boolean;\r\n Requerido: boolean;\r\n Busqueda: boolean;\r\n Orden: number;\r\n TamanoCompleto: boolean;\r\n Opciones?: IComboBoxOption[];\r\n LongitudMinima?: number;\r\n LongitudMaxima?: number;\r\n ValorPorDefecto?: string;\r\n ValorMinimo?: number;\r\n ValorMaximo?: number;\r\n FechaMaxima?: Date;\r\n FechaMinima?: Date;\r\n ExpresionRegular?: string;\r\n Valor?: any;\r\n Reglas: string;\r\n ReglaRequerido: string;\r\n ReglaVisible: string;\r\n ReglaListaDesplegable?: string;\r\n Mostrar: boolean;\r\n RegistroVentanilla: boolean;\r\n RegistroMesaAyuda: boolean;\r\n RegistroWeb: boolean;\r\n NombreCategoriaMetadato: string;\r\n Aplicacion: string;\r\n ClassName: string;\r\n KeyField: string;\r\n TextField: string;\r\n Codigo: string;\r\n}\r\n\r\n\r\nexport interface IMetadato extends IEntityBase {\r\n ReglaVisible?: string;\r\n ReglaRequerido?: string;\r\n IdMetadato: number;\r\n IdCategoriaMetadato: number;\r\n CategoriaMetadato: string;\r\n IdTipoColumnaMetadato: number;\r\n IdListaDesplegableMetadato: number;\r\n TipoColumnaMetadato: string;\r\n Nombre: string;\r\n Descripcion: string;\r\n Activo: boolean;\r\n LongitudMinima: number;\r\n LongitudMaxima: number;\r\n ValorPorDefecto: string;\r\n ValorMinimo: number;\r\n ValorMaximo: number;\r\n FechaMaxima: Date;\r\n FechaMinima: Date;\r\n ExpresionRegular: string;\r\n ItemsSeleccion: number;\r\n NombreOpcion: string;\r\n NombreOpcionAnterior: string;\r\n Opciones: IOpcionSeleccionable[];\r\n OpcionesSeleccionadas: IOpcionSeleccionable[];\r\n Requerido?: boolean;\r\n Asociado?: boolean;\r\n TamanoCompleto?: boolean;\r\n Orden?: number;\r\n Externo?: boolean;\r\n IdAplicacion?: number;\r\n IdExtensionAplicacion?: number;\r\n ClassName?: string;\r\n Mostrar?: boolean;\r\n}\r\n\r\n\r\nexport interface ICategoriaMetadato extends IEntityBase {\r\n IdCategoriaMetadato: number;\r\n Nombre: string;\r\n Descripcion: string;\r\n Activo: boolean;\r\n Metadatos: IMetadato[];\r\n}\r\n\r\nexport function defaultIMetadatoAsociado(): IMetadatoAsociado {\r\n return {\r\n IdMetadatoSubserie: 0,\r\n IdTipoColumnaMetadato: TipoColumnaMetadato.Texto,\r\n IdCategoriaMetadato: 0,\r\n CategoriaMetadato: '',\r\n IdMetadatoFlujo: 0,\r\n IdMetadatoPasoFlujoDocumental: 0,\r\n IdMetadato: 0,\r\n Asociado: false,\r\n Nombre: '',\r\n Descripcion: '',\r\n Requerido: false,\r\n Busqueda: false,\r\n Orden: 0,\r\n TamanoCompleto: false,\r\n Escritura: false,\r\n Lectura: false,\r\n Reglas: '',\r\n ReglaRequerido: '',\r\n ReglaVisible: '',\r\n ReglaListaDesplegable: '',\r\n Mostrar: false,\r\n RegistroMesaAyuda: false,\r\n RegistroVentanilla: false,\r\n RegistroWeb: false,\r\n NombreCategoriaMetadato: '',\r\n Aplicacion: '',\r\n ClassName: '',\r\n KeyField: '',\r\n TextField: '',\r\n Codigo: ''\r\n }\r\n}\r\n\r\nexport function defaultIRadicadoEntrada(): IRadicadoEntrada {\r\n return {\r\n Anexos: [],\r\n Anonima: false,\r\n Apellidos: '',\r\n Asunto: '',\r\n AutorizaRespuestaCorreoElectronicoOSitioWeb: false,\r\n CantidadFolios: 0,\r\n Ciudad: '',\r\n ClasificacionPQRS: '',\r\n ComprobanteEntrega: defaultIDocumento(),\r\n ComprobanteEntregado: false,\r\n CopiasRadicadoEntrada: [],\r\n Departamento: '',\r\n Digital: true,\r\n CustomMetadata: {},\r\n Direccion: '',\r\n Distribucion: '',\r\n Email: '',\r\n Extension: '',\r\n IdAlerta: 0,\r\n IdCiudad: 0,\r\n IdClasificacionPQRS: 0,\r\n IdContacto: 0,\r\n IdDepartamento: 0,\r\n Identificacion: '',\r\n IdEstadoActual: 0 as any,\r\n IdExpediente: 0,\r\n IdOficioRemisorioSharePoint: 0,\r\n IdPais: 0,\r\n IdRadicadoEntrada: 0,\r\n IdRadicadoEntradaVinculado: 0,\r\n IdRadicadoSalidaVinculado: 0,\r\n IdReferencia: 0,\r\n IdSeccion: 0,\r\n IdTarea: 0,\r\n IdTipoContacto: 0,\r\n IdTipoDocumental: 0,\r\n IdTipoEjecucionGestionTramite: 0,\r\n IdTipoIdentificacion: 0,\r\n IdTramite: 0,\r\n IdUsuarioResponsable: 0,\r\n MedioRecepcionEmpresaMensajeria: '',\r\n MedioRecepcionEsCorreoCertificado: false,\r\n MedioRecepcionNumeroGuiaRecepcion: '',\r\n MetadatosAsociados: [],\r\n Nombres: '',\r\n NumeroAnexos: 0,\r\n NumeroExpediente: '',\r\n NumeroPreRadicado: '',\r\n NumeroRadicado: '',\r\n NumeroRadicadoSalida: '',\r\n OficioRemisorio: defaultIDocumento(),\r\n Pais: '',\r\n PqrWeb: false,\r\n PrefiereRespuestaFisica: false,\r\n ProcesoxData: {},\r\n RadicadoEsDigital: false,\r\n RecepcionFisica: false,\r\n Referencia: '',\r\n Seccion: '',\r\n ServerRelativeUrl: '',\r\n Telefono: '',\r\n TiempoMaximoRespuesta: undefined,\r\n TiempoMaximoRespuestaString: '',\r\n TipoContacto: '',\r\n TipoIdentificacion: '',\r\n Tramite: '',\r\n UrlOficioRemisorioSharePoint: '',\r\n UsuarioResponsable: '',\r\n ValoresMetadatos: [],\r\n RepresentaRiesgo: false\r\n };\r\n}\r\n\r\nexport interface IRadicadoSalidaResponse {\r\n IdRadicadoSalida: number;\r\n IdTarea: number;\r\n CarpetaRadicadoSalida: string;\r\n NombreArchivoRadicadoSalida: string;\r\n}\r\n\r\nexport interface IRadicadoSalida {\r\n IdRadicadoSalida: number;\r\n IdRadicadoEntrada?: number;\r\n NumeroRadicadoEntrada: string;\r\n RadicadoEntradaDigital: boolean;\r\n IdDocumentoExpediente: number;\r\n Anonima?: boolean;\r\n IdTramite: number;\r\n IdEstadoActual: EstadoRadicadoSalida;\r\n EstadoActual: string;\r\n Digital: boolean;\r\n NumeroRadicado: string;\r\n IdExpediente: number;\r\n IdContacto: number;\r\n IdTipoContacto: number;\r\n TipoContacto: string;\r\n IdTipoIdentificacion: number;\r\n TipoIdentificacion: string;\r\n Identificacion: string;\r\n Nombres: string;\r\n Apellidos: string;\r\n Direccion: string;\r\n Telefono: string;\r\n Extension: string;\r\n Celular: string;\r\n Email: string;\r\n Pais: string;\r\n IdDepartamento: number;\r\n Departamento: string;\r\n IdCiudad: number;\r\n Ciudad: string;\r\n IdPais: number;\r\n Asunto: string;\r\n CantidadFolios: number;\r\n IdTipoDocumental: number;\r\n TipoDocumental: string;\r\n IdUsuarioResponsable: number;\r\n UsuarioResponsable: string;\r\n IdSeccionAprobador: number;\r\n SeccionAprobador: string;\r\n IdUsuarioAprobador: number;\r\n UsuarioAprobador: string;\r\n PlantillaDocumento: IDocumento;\r\n CopiasExternas: IContacto[];\r\n NotificacionesInternas: ICopiaRadicado[];\r\n OtrosDestinatarios: IContacto[];\r\n AnexosRadicadoSalida?: IDocumento[],\r\n IdTipoRespuestaPQRS: TipoRespuestaPQRS;\r\n TipoRespuestaPQRS: string;\r\n DestinatarioRespuestaPQRS: string;\r\n DesistimientoTacito: boolean;\r\n Serie: string;\r\n Subserie: string;\r\n Seccion: string;\r\n UsuarioResponsableExpediente: string;\r\n Pqr: boolean;\r\n ComprobanteEntrega: IDocumento,\r\n RadicadoEntregado: boolean;\r\n FechaRecibeDocumento: Date;\r\n SharePointLibrary: string;\r\n NumeroGuia: string;\r\n NumeroPlanilla: string;\r\n TipoEnvio: string;\r\n ZonaEnvio: string;\r\n FechaEnvio: Date;\r\n IdAsignacionEnvioRadicadoSalida: number;\r\n IdMotivoDevolucion: number;\r\n DownloadUrl: string;\r\n IdContactoDestinatarioRespuesta: number;\r\n CelularDestinatarioRespuesta: string;\r\n TelefonoDestinatarioRespuesta: string;\r\n ExtensionDestinatarioRespuesta: string;\r\n EmailDestinatarioRespuesta: string;\r\n IdTipoIdentificacionDestinatarioRespuesta: number;\r\n IdentificacionDestinatarioRespuesta: string;\r\n NombresDestinatarioRespuesta: string;\r\n ApellidosDestinatarioRespuesta: string;\r\n DireccionDestinatarioRespuesta: string;\r\n IdCiudadDestinatarioRespuesta: number;\r\n IdDepartamentoDestinatarioRespuesta: number;\r\n IdPaisDestinatarioRespuesta: number;\r\n IdTipoContactoDestinatarioRespuesta: number;\r\n IdDocumentoRadicadoSalida?: number;\r\n Impreso?: boolean;\r\n NumeroExpediente: string;\r\n}\r\n\r\nexport function defaultIRadicadoSalida(): IRadicadoSalida {\r\n return {\r\n IdRadicadoSalida: 0,\r\n IdRadicadoEntrada: 0,\r\n NumeroRadicadoEntrada: '',\r\n RadicadoEntradaDigital: false,\r\n IdDocumentoExpediente: 0,\r\n Anonima: false,\r\n IdTramite: 0,\r\n IdEstadoActual: EstadoRadicadoSalida.Default,\r\n EstadoActual: '',\r\n Digital: false,\r\n NumeroRadicado: '',\r\n IdExpediente: 0,\r\n IdContacto: 0,\r\n IdTipoContacto: 0,\r\n TipoContacto: '',\r\n IdTipoIdentificacion: 0,\r\n TipoIdentificacion: '',\r\n Identificacion: '',\r\n Nombres: '',\r\n Apellidos: '',\r\n Direccion: '',\r\n Telefono: '',\r\n Extension: '',\r\n Celular: '',\r\n Email: '',\r\n IdCiudad: 0,\r\n Ciudad: '',\r\n IdDepartamento: 0,\r\n Departamento: '',\r\n IdPais: 0,\r\n Pais: '',\r\n Asunto: '',\r\n CantidadFolios: 1,\r\n IdTipoDocumental: 0,\r\n TipoDocumental: '',\r\n IdUsuarioResponsable: 0,\r\n UsuarioResponsable: '',\r\n IdSeccionAprobador: 0,\r\n SeccionAprobador: '',\r\n IdUsuarioAprobador: 0,\r\n UsuarioAprobador: '',\r\n PlantillaDocumento: defaultIDocumento(),\r\n CopiasExternas: [],\r\n NotificacionesInternas: [],\r\n OtrosDestinatarios: [],\r\n AnexosRadicadoSalida: [],\r\n IdTipoRespuestaPQRS: TipoRespuestaPQRS.Default,\r\n TipoRespuestaPQRS: '',\r\n DestinatarioRespuestaPQRS: '',\r\n DesistimientoTacito: false,\r\n Serie: '',\r\n Subserie: '',\r\n Seccion: '',\r\n UsuarioResponsableExpediente: '',\r\n Pqr: false,\r\n ComprobanteEntrega: defaultIDocumento(),\r\n RadicadoEntregado: true,\r\n FechaRecibeDocumento: undefined,\r\n SharePointLibrary: '',\r\n NumeroGuia: '',\r\n NumeroPlanilla: '',\r\n TipoEnvio: '',\r\n ZonaEnvio: '',\r\n FechaEnvio: null,\r\n IdAsignacionEnvioRadicadoSalida: 0,\r\n IdMotivoDevolucion: 0,\r\n DownloadUrl: '',\r\n IdContactoDestinatarioRespuesta: 0,\r\n CelularDestinatarioRespuesta: '',\r\n TelefonoDestinatarioRespuesta: '',\r\n ExtensionDestinatarioRespuesta: '',\r\n EmailDestinatarioRespuesta: '',\r\n IdTipoIdentificacionDestinatarioRespuesta: 0,\r\n IdentificacionDestinatarioRespuesta: '',\r\n NombresDestinatarioRespuesta: '',\r\n ApellidosDestinatarioRespuesta: '',\r\n DireccionDestinatarioRespuesta: '',\r\n IdCiudadDestinatarioRespuesta: 0,\r\n IdDepartamentoDestinatarioRespuesta: 0,\r\n IdPaisDestinatarioRespuesta: 0,\r\n IdTipoContactoDestinatarioRespuesta: TipoContacto.Empresa,\r\n IdDocumentoRadicadoSalida: 0,\r\n Impreso: false,\r\n NumeroExpediente: ''\r\n };\r\n}\r\n\r\nexport interface ITipoContacto {\r\n IdTipoContacto: number;\r\n Nombre: string;\r\n Activo: boolean;\r\n}\r\n\r\nexport interface ITipoIdentificacion {\r\n IdTipoIdentificacion: number;\r\n Nombre: string;\r\n Activo?: boolean;\r\n IdTipoPersona: number;\r\n}\r\n\r\nexport interface ITipoPersona {\r\n IdTipoPersona: number;\r\n Nombre: string;\r\n Activo?: boolean;\r\n}\r\n\r\nexport interface INivelEducativo {\r\n IdNivelEducativo: number;\r\n Nombre: string;\r\n Activo: boolean;\r\n}\r\n\r\nexport interface IProfesion {\r\n IdProfesion: number;\r\n Nombre: string;\r\n Activo: boolean;\r\n}\r\n\r\nexport enum TipoRespuestaPQRS {\r\n Default = 0,\r\n Definitiva = 1,\r\n Parcial = 2,\r\n Aclaracion = 3,\r\n Ampliacion = 4,\r\n Informacion = 5\r\n}\r\n\r\nexport interface ITipoRespuestaPQRS {\r\n IdTipoRespuestaPQRS: number;\r\n Nombre: string;\r\n Orden: number;\r\n}\r\n\r\nexport interface ITipoSolicitante {\r\n IdTipoSolicitante: number;\r\n Nombre: string;\r\n Activo: boolean;\r\n IdTipoPersona: number;\r\n}\r\n\r\nexport enum TipoContacto {\r\n Default = 0,\r\n Ciudadano = 1,\r\n Empresa = 2,\r\n Congresista = 3,\r\n Anonimo = 4\r\n}\r\n\r\n/**\r\n * Enumeración que contiene los tramites predeterminados del sistema\r\n */\r\nexport enum TipoTramite {\r\n /**\r\n * El tramite de correspondencia implica que en el radicado de entrada se debe seleccionar la sección y usuario responsable\r\n */\r\n Correspondencia = 1,\r\n /**\r\n * El tramite de PQRS implica que en el radicado de entrada se debe seleccionar la clasificación\r\n */\r\n PQRS = 2,\r\n /**\r\n * Los tramites de aporte implican que se debe indicar el numero del radicado de entrada al que se hace el aporte.\r\n */\r\n AporteInformacion = 70,\r\n AporteAmpliacion = 71,\r\n AporteAclaracion = 72\r\n}\r\n\r\nexport class ArchivoxClient extends BaseService {\r\n\r\n constructor() {\r\n super();\r\n this.controller = '';\r\n }\r\n\r\n private get baseUrl(): string {\r\n return `tramitex-web-client/api/${(window as any).domain}`;\r\n }\r\n\r\n public async getAllDepartmentsAsync(): Promise {\r\n return this.aadGet(`${this.baseUrl}/departamentos`);\r\n }\r\n\r\n public async getAllCountriesAsync(): Promise {\r\n return this.aadGet(`${this.baseUrl}/paises`);\r\n }\r\n\r\n public async getAllCitiesAsync(): Promise {\r\n return this.aadGet(`${this.baseUrl}/ciudades`);\r\n }\r\n\r\n}\r\n\r\nexport class TipoContactoService extends BaseService {\r\n\r\n constructor() {\r\n super();\r\n this.controller = 'v1/TipoContacto';\r\n }\r\n\r\n public async getAllAsync(): Promise {\r\n return this.aadGet(this.controller);\r\n }\r\n\r\n}\r\n\r\nexport class TipoIdentificacionService extends BaseService {\r\n\r\n constructor() {\r\n super();\r\n this.controller = 'v1/TipoIdentificacion';\r\n }\r\n\r\n public async getAllAsync(): Promise {\r\n return this.aadGet(this.controller);\r\n }\r\n\r\n}\r\n\r\nexport async function ensureFetch(request: Promise, callback: (result: T) => void): Promise {\r\n try {\r\n let result = await request;\r\n if (typeof callback === 'function') {\r\n callback(result);\r\n }\r\n } catch (ex) {\r\n showError((ex as any).ExceptionMessage || (ex as any).exceptionMessage);\r\n }\r\n}\r\n\r\nexport class ProjectService extends BaseService {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public downloadFieldDataSourceAsync(projectId: string, formVersionId: string, fieldId: string, filters: IDictionary): Promise {\r\n return this._getFormfieldDataSourceAsync(`${Sede.shared.procesoxUrl}/apps/${projectId}/form-versions/${formVersionId}/fields/${fieldId}/datasource`, filters);\r\n }\r\n\r\n public downloadParametricEntityItems(projectId: string, entityId: string): Promise[]> {\r\n return this.aadGet(`${Sede.shared.procesoxUrl}/apps/${projectId}/entities/${entityId}/items`);\r\n }\r\n\r\n}\r\n\r\nexport function initSdk(): void {\r\n const tmp = (window as any).__ioip__sdk__ || (window as any).__global;\r\n if (tmp !== undefined && typeof tmp === 'function') {\r\n $_ = tmp();\r\n } else {\r\n $_.props = {\r\n appId: '',\r\n cssStyles: '',\r\n headerImage: '',\r\n icon: '',\r\n nombre: 'IOIP SDK',\r\n tenantId: '',\r\n title: 'IOIP SDK'\r\n };\r\n $_.svc = defaultIAppServices();\r\n $_.confirmationDialog = (title: string, text: string, callback: (() => void) | (() => Promise)) => {\r\n if (window.confirm(text)) {\r\n callback();\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function defaultIValorMetadato(): IValorMetadato {\r\n return {\r\n IdValorMetadato: 0,\r\n IdExpediente: 0,\r\n IdDocumentoExpediente: 0,\r\n IdMetadato: 0,\r\n Valor: '',\r\n IdOpcionListaDesplegableMetadato: 0,\r\n Nombre: '',\r\n Codigo: '',\r\n CategoriaMetadato: ''\r\n }\r\n}\r\n\r\nexport const createOptions = function createOptions(items: T[], keySelector: (item: T) => number | string, textSelector: (item: T) => string): IComboBoxOption[] {\r\n return items.map(x => ({ key: keySelector(x), text: textSelector(x) }));\r\n}","import { ICity, ICountry, IDepartment } from \"@ioip/archivox/lib\";\r\nimport { Guid } from \"@ioip/core/lib\";\r\nimport { IJSPage } from \"@ioip/procesox/lib/types/IJSPage\";\r\nimport { ICreateChunkResponse } from \"ioip-base/lib/common\";\r\nimport { IAppContext } from \"../classes/app-context\";\r\nimport { IAntencionPreferencial } from \"../classes/atencion-preferencial\";\r\nimport { IPqrWebCreationContactData } from \"../classes/contact-page\";\r\nimport { IDiscapacidad } from \"../classes/discapacidad\";\r\nimport { IAnswerEntidadAdscrita } from \"../classes/entidades-adscritas/answer-entidad-adscrita\";\r\nimport { ICloserEntidadAdscrita } from \"../classes/entidades-adscritas/closer-entidad-adscrita\";\r\nimport { IGenero } from \"../classes/genero\";\r\nimport { IGrupoEtnico } from \"../classes/grupo-etnico\";\r\nimport { ISuscriptionParameter } from \"../classes/iparametro\";\r\nimport { IPreguntaSecreta } from \"../classes/pregunta-secreta\";\r\nimport { IRadicadoEntradaExtended } from \"../classes/radicado-entrada-extended\";\r\nimport { IRespuestaAclaracion } from \"../classes/respuesta-aclaracion\";\r\nimport { IRespuestaCreacionRadicadoEntrada } from \"../classes/respuesta-creacion-radicado-entrada\";\r\nimport { IPreguntaEncuestaSatisfaccion } from \"../classes/satisfaction-survey/pregunta-encuesta\";\r\nimport { IRespuestaEncuestaSatisfaccion } from \"../classes/satisfaction-survey/respuesta-encuesta\";\r\nimport { Sede } from \"../classes/shared\";\r\nimport { ISignInRequest } from \"../classes/sign-in-request\";\r\nimport { ISignInResponse } from \"../classes/sign-in-response\";\r\nimport { DataTableRequest, DataTablesResponse, ICategoriaMetadato, IClasificacionPQRS, IContacto, IDocumento, IMetadatoAsociado, INivelEducativo, IProfesion, IRadicadoSalida, ITipoIdentificacion, ITipoPersona, ITipoSolicitante, addFetch, removeFetch } from \"../ioip/sdk/base\";\r\nimport { IContact } from \"../types/IContact\";\r\n\r\nexport class PqrWebService {\r\n\r\n private getProcesoxUrlWithDomain(): string {\r\n return `${Sede.shared.procesoxUrl}`;\r\n }\r\n\r\n private get _serviceUrl(): string {\r\n return `${(window as any).serviceUrl}/tramitex-web-client/api/${(window as any).domain}`;\r\n }\r\n\r\n private getRequestInit(post: boolean = false, reCaptcha: string = ''): RequestInit {\r\n const request = {\r\n method: post ? 'POST' : 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'G-Captcha': reCaptcha\r\n },\r\n };\r\n const token = window.sessionStorage.getItem('ioip.pqr-web.session.token');\r\n if (token !== undefined && token !== null) {\r\n request.headers['Authorization'] = 'Bearer ' + window.sessionStorage.getItem('ioip.pqr-web.session.token');\r\n }\r\n return request;\r\n }\r\n\r\n private async aadGet(url: string): Promise {\r\n try {\r\n addFetch();\r\n const response: Response = await fetch(url, this.getRequestInit());\r\n const result = response.headers.get(\"content-type\") ? await response.json() : null;\r\n removeFetch();\r\n if (response.ok) {\r\n return result;\r\n }\r\n else {\r\n throw result;\r\n }\r\n } catch (ex) {\r\n removeFetch();\r\n throw ex;\r\n }\r\n }\r\n\r\n private async aadGetBlob(url: string, mimeType: string, fileName: string): Promise {\r\n try {\r\n addFetch();\r\n const response: Response = await fetch(url, this.getRequestInit());\r\n const result = response.headers.get(\"content-type\") ? await response.blob() : null;\r\n removeFetch();\r\n if (response.ok) {\r\n var file = new Blob([result], { type: 'application/pdf' });\r\n let blobUrl = URL.createObjectURL(file);\r\n var a = document.createElement('a');\r\n a.href = blobUrl;\r\n a.download = fileName;\r\n a.click();\r\n window.URL.revokeObjectURL(blobUrl);\r\n }\r\n else {\r\n alert('El radicado seleccionado no tiene documentos adjuntos');\r\n }\r\n } catch (ex) {\r\n removeFetch();\r\n throw ex;\r\n }\r\n }\r\n\r\n private async aadGetFile(url: string, mimeType: string, fileName: string): Promise {\r\n try {\r\n addFetch();\r\n const response: Response = await fetch(url, this.getRequestInit());\r\n const result = response.headers.get(\"content-type\") ? await response.blob() : null;\r\n removeFetch();\r\n if (response.ok) {\r\n const mimeType = PqrWebService.getMimeTypeFromExtension(fileName); // Obtener el tipo MIME basado en la extensión del nombre del archivo\r\n var file = new Blob([result], { type: mimeType });\r\n let blobUrl = URL.createObjectURL(file);\r\n\r\n // Abrir el archivo en un visor o descargarlo según el tipo MIME\r\n switch (mimeType) {\r\n case 'application/pdf':\r\n case 'image/jpeg':\r\n case 'image/png':\r\n case 'image/gif':\r\n // Si es un tipo de archivo compatible con visualización en el navegador, abrirlo en un visor\r\n window.open(blobUrl, '_blank');\r\n break;\r\n default:\r\n // Si es otro tipo de archivo, descargarlo\r\n var a = document.createElement('a');\r\n a.href = blobUrl;\r\n a.download = fileName;\r\n a.click();\r\n break;\r\n }\r\n\r\n // Revocar la URL de objeto después de abrir el archivo en el visor o descargarlo\r\n window.URL.revokeObjectURL(blobUrl);\r\n }\r\n else {\r\n alert('El radicado seleccionado no tiene documentos adjuntos');\r\n }\r\n } catch (ex) {\r\n removeFetch();\r\n throw ex;\r\n }\r\n }\r\n\r\n static getMimeTypeFromExtension(fileName: string): string {\r\n const extension = fileName.split('.').pop()?.toLowerCase(); // Obtener la extensión del nombre de archivo y convertirla a minúsculas\r\n switch (extension) {\r\n case 'pdf':\r\n return 'application/pdf';\r\n case 'xlsx':\r\n return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\r\n case 'docx':\r\n return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\r\n case 'jpg':\r\n case 'jpeg':\r\n return 'image/jpeg';\r\n case 'png':\r\n return 'image/png';\r\n case 'gif':\r\n return 'image/gif';\r\n // Agrega más casos según sea necesario para otras extensiones de archivo\r\n default:\r\n return 'application/octet-stream'; // Tipo MIME predeterminado para otros tipos de archivo desconocidos\r\n }\r\n }\r\n\r\n\r\n private async aadGetText(url: string): Promise {\r\n try {\r\n addFetch();\r\n const response: Response = await fetch(url, this.getRequestInit());\r\n const result = await response.text();\r\n removeFetch();\r\n if (response.ok) {\r\n return result;\r\n }\r\n else {\r\n throw result;\r\n }\r\n } catch (ex) {\r\n removeFetch();\r\n throw ex;\r\n }\r\n }\r\n\r\n private async aadBlob(url: string): Promise {\r\n try {\r\n addFetch();\r\n const request = { ...this.getRequestInit() }\r\n const response: Response = await fetch(url, request);\r\n removeFetch();\r\n\r\n if (!response.ok) {\r\n const text = await response.text();\r\n console.log(text);\r\n throw Error(text);\r\n }\r\n\r\n const result = await response.blob();\r\n return result;\r\n } catch (ex) {\r\n removeFetch();\r\n throw ex;\r\n }\r\n }\r\n\r\n protected async aadPostFormData(apiUrl: string, data: FormData): Promise {\r\n addFetch();\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const request = { ...this.getRequestInit(true), body: data };\r\n delete request.headers['Content-Type']\r\n const response: Response = await fetch(apiUrl, request);\r\n removeFetch();\r\n if (response.ok) {\r\n if (response.status === 204) {\r\n resolve(null);\r\n }\r\n else {\r\n resolve(response.json());\r\n }\r\n } else {\r\n const err = await response.json();\r\n reject(err);\r\n }\r\n } catch (ex) {\r\n removeFetch();\r\n reject({\r\n ExceptionMessage: `Error de comunicación con el servidor. ${(ex as any).message}`\r\n });\r\n }\r\n });\r\n }\r\n\r\n public async aadPost(url: string, data: any, reCaptcha?: string): Promise {\r\n try {\r\n addFetch();\r\n const request = { ...this.getRequestInit(true, reCaptcha), body: JSON.stringify(data ? data : {}) }\r\n const response: Response = await fetch(url, request);\r\n\r\n removeFetch();\r\n if (!response.ok) {\r\n const text = await response.json();\r\n console.log(text);\r\n throw text;\r\n }\r\n\r\n const result = await response.json();\r\n return result;\r\n\r\n } catch (ex) {\r\n removeFetch();\r\n throw ex;\r\n }\r\n }\r\n\r\n private async aadPostGetText(url: string, data: any): Promise {\r\n try {\r\n addFetch();\r\n const request = { ...this.getRequestInit(true), body: JSON.stringify(data ? data : {}) }\r\n const response: Response = await fetch(url, request);\r\n const result = await response.text();\r\n removeFetch();\r\n if (response.ok) {\r\n return result;\r\n }\r\n else {\r\n throw result;\r\n }\r\n } catch (ex) {\r\n removeFetch();\r\n throw ex;\r\n }\r\n }\r\n\r\n protected async aadDelete(url: string): Promise {\r\n try {\r\n addFetch();\r\n const response: Response = await fetch(url, {\r\n ...this.getRequestInit(),\r\n method: 'DELETE'\r\n });\r\n const result = await response.json();\r\n removeFetch();\r\n if (response.ok) {\r\n return result;\r\n }\r\n else {\r\n throw result;\r\n }\r\n } catch (ex) {\r\n removeFetch();\r\n throw ex;\r\n }\r\n }\r\n\r\n public async getContextAsync(): Promise {\r\n try {\r\n addFetch();\r\n const response: Response = await fetch(`${this._serviceUrl}/context`, this.getRequestInit());\r\n const result = await response.json();\r\n removeFetch();\r\n if (response.ok) {\r\n return result;\r\n }\r\n else {\r\n throw result;\r\n }\r\n } catch (ex) {\r\n removeFetch();\r\n throw ex;\r\n }\r\n }\r\n\r\n public async getTramiteMetadataAsosiationAsync(idTramite: number): Promise {\r\n try {\r\n addFetch();\r\n const response: Response = await fetch(`${this._serviceUrl}/tramites/${idTramite}/metadata`, this.getRequestInit());\r\n const result = await response.json();\r\n removeFetch();\r\n if (response.ok) {\r\n return result;\r\n }\r\n else {\r\n throw result;\r\n }\r\n } catch (ex) {\r\n removeFetch();\r\n throw ex;\r\n }\r\n }\r\n\r\n ////#region Parametros\r\n\r\n\r\n ////#endregion Parametros\r\n\r\n public async createContactAsync(contacto: IContacto, reCaptcha: string): Promise {\r\n return this.aadPost(`${this._serviceUrl}/contactos`, contacto, reCaptcha);\r\n }\r\n\r\n public async updateContactAsync(contacto: IContacto, reCaptcha: string): Promise {\r\n return await this.aadPost(`${this._serviceUrl}/contactos/update`, contacto, reCaptcha);\r\n }\r\n\r\n public async getContactEntitiesAsync(): Promise {\r\n return await this.aadGet(`${this._serviceUrl}/get-contact-entities`);\r\n }\r\n\r\n public async getCurrentContectAsync(): Promise {\r\n return await this.aadGet(`${this._serviceUrl}/contact/current`);\r\n }\r\n\r\n public async resendAccountVerificationUrlAsync(idContacto: number): Promise {\r\n return this.aadPost(`${this._serviceUrl}/ResendAccountVerificationUrl`, idContacto);\r\n }\r\n\r\n public async sigInAsync(data: ISignInRequest): Promise {\r\n return this.aadPost(`${this._serviceUrl}/authenticate`, data);\r\n }\r\n\r\n // public async createRadicadoEntradaAsync(radicado: IRadicadoEntradaExtended): Promise {\r\n // return this.aadPost(`${this._serviceUrl}/CreateRadicado`, radicado);\r\n // }\r\n\r\n public async uploadRadicadoEntradaFilesAsync(pqr: any): Promise {\r\n return this.aadPost(`${this._serviceUrl}/UploadRadicadoEntradaFiles`, pqr);\r\n }\r\n\r\n public async completeInformationRequestAsync(data: IRespuestaAclaracion): Promise {\r\n return this.aadPost(`${this._serviceUrl}/GetPqrById(${data.IdRadicadoEntrada})/InformationRequestByIdRadicadoSalida(${data.IdRadicadoSalida})/Complete`, data);\r\n }\r\n\r\n public async downloadRadicadoSalida(idRadicadoSalida: number): Promise {\r\n this._aadDownload(`${this._serviceUrl}/GetRadicadoSalidaById(${idRadicadoSalida})/Download`, 'application/zip', 'OFICIO_SALIDA.pdf');\r\n }\r\n\r\n public async downloadRadicadoSalidaAsAnonymous(idRadicadoSalida: number): Promise {\r\n this._aadDownload(`${this._serviceUrl}/GetRadicadoSalidaById(${idRadicadoSalida})/DownloadAsAnonymous`, 'application/zip', 'OFICIO_SALIDA.pdf');\r\n }\r\n\r\n public async verifyAttachmentsRadicadoSalidaAsync(idRadicadoSalida: number): Promise {\r\n return this.aadGet(`${this._serviceUrl}/GetRadicadoSalidaById(${idRadicadoSalida})/VerifyAttactments`);\r\n }\r\n\r\n public async downloadAttactmentsRadicadoSalida(idRadicadoSalida: number): Promise {\r\n this._aadDownload(`${this._serviceUrl}/GetRadicadoSalidaById(${idRadicadoSalida})/DownloadAttachments`, 'application/zip', 'anexos_respuesta.zip');\r\n }\r\n\r\n public async downloadAttactmentsRadicadoSalidaAsAnonymous(idRadicadoSalida: number): Promise {\r\n this._aadDownload(`${this._serviceUrl}/GetRadicadoSalidaById(${idRadicadoSalida})/DownloadAttachmentsAsAnonymous`, 'application/zip', 'anexos_respuesta.zip');\r\n }\r\n\r\n public async getDocumentAsAnonymousAsync(idDocumentoExpediente: number, nombreArchivo: string): Promise {\r\n this._aadDownload(`${this._serviceUrl}/GetDocument/${idDocumentoExpediente}/DownloadAsAnonymous`, 'application/pdf', nombreArchivo);\r\n }\r\n\r\n public async getDocumentSedeAsAnonymousAsync(idDocumentoExpediente: number, nombreArchivo: string): Promise {\r\n this.aadGetBlob(`${this._serviceUrl}/GetDocument/${idDocumentoExpediente}/DownloadAsAnonymous`, 'application/pdf', nombreArchivo);\r\n }\r\n\r\n public async gerAclaracionesPendientesRadicadoEntradaAsync(idRadicadoEntrada: number): Promise {\r\n return this.aadGet(`${this._serviceUrl}/radicado-salida/getAclaracionPendienteRadicadoEntradaAnonymous/${idRadicadoEntrada}`);\r\n }\r\n\r\n public async decryptsAsync(frase: string): Promise {\r\n return this.aadPost(`${this._serviceUrl}/decrypt`, frase);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // Tramites\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n public async getAllCountriesAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/paises`);\r\n }\r\n\r\n public async getAllDepartmentsAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/departamentos`);\r\n }\r\n\r\n public async getAllCitiesAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/ciudades`);\r\n }\r\n\r\n public async readExternalMetadataAsync(applicationName: string, className: string): Promise {\r\n return this.aadGet(`${this._serviceUrl}/aplicaciones/${applicationName}/extensions/${className}/read`);\r\n }\r\n\r\n public async executeAsync(applicationName: string, className: string, data: { [key: string]: any }): Promise {\r\n return this.aadPost(`${this._serviceUrl}/aplicaciones/${applicationName}/extensions/${className}/execute`, data);\r\n }\r\n\r\n public async getMetadataCategoryByNameAsync(name: string): Promise {\r\n return this.aadGet(`${this._serviceUrl}/categoria-metadatos/${name}`);\r\n }\r\n\r\n public async getOptionsByIdMetadatoAsync(id: number): Promise {\r\n return this.aadGet(`${this._serviceUrl}/metadatos/${id}/options`);\r\n }\r\n\r\n public async getAllIdentificationTypesAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/tipos-identificacion`);\r\n }\r\n\r\n public async getIdentificationTypesByIdPersonaAsync(idTipoPersona: number): Promise {\r\n return this.aadGet(`${this._serviceUrl}/tipos-identificacion-persona/${idTipoPersona}/`);\r\n }\r\n\r\n public async getAllQuestionsAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/preguntas-secretas`);\r\n }\r\n\r\n public async getAllPreferentialCareTypesAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/tipos-atencion-preferencial`);\r\n }\r\n\r\n public async getAllDisabilitiesAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/discapacidades`);\r\n }\r\n\r\n public async getAllGendersAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/generos`);\r\n }\r\n\r\n public async getChildGendersAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/generos-menores-edad`);\r\n }\r\n\r\n public async getAllEthnicGroupsAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/grupos-etnicos`);\r\n }\r\n\r\n public async getAllPersonTypesAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/tipos-persona`);\r\n }\r\n\r\n public async getAllEducationLevelsAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/niveles-educativos`);\r\n }\r\n\r\n public async getAllProfessionsAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/profesiones`);\r\n }\r\n\r\n public async getAllApplicantTypeAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/tiposSolicitante`);\r\n }\r\n\r\n public async paginateContactsAsync(request: DataTableRequest): Promise {\r\n return this.aadPost(`${this._serviceUrl}/contactos/paginate`, request);\r\n }\r\n\r\n public async recoverPasswordAsync(data: any): Promise {\r\n return this.aadPost(`${this._serviceUrl}/contactos/recover-account`, data);\r\n }\r\n\r\n public async changePasswordAsync(data: any): Promise {\r\n return this.aadPost(`${this._serviceUrl}/contactos/reset-account`, data);\r\n }\r\n\r\n public async recoverSecretQuestionAsync(data: any): Promise {\r\n return this.aadPost(`${this._serviceUrl}/contactos/recover-question`, data);\r\n }\r\n\r\n public async recoverSecretSecretAnswerAsync(idContacto: string, idPreguntaSecreta: number, respuestaSecreta: string): Promise {\r\n return this.aadGet(`${this._serviceUrl}/contactos/${idContacto}/secret-question/${idPreguntaSecreta}/recover-secret-answer/${respuestaSecreta}`);\r\n }\r\n\r\n public async verifyLinkRecoverSecretSecretAnswerAsync(idContacto: string): Promise {\r\n return this.aadGet(`${this._serviceUrl}/contactos/${idContacto}/VerifyExpirationRecoverSecretAnswerAsync`);\r\n }\r\n\r\n public async getAnonymousRequestsAsync(dtRequest: any): Promise {\r\n return this.aadPost(`${this._serviceUrl}/radicado-entrada/paginate-anonymous`, dtRequest);\r\n }\r\n\r\n public async getMyRequestsAsync(dtRequest: DataTableRequest): Promise {\r\n return this.aadPost(`${this._serviceUrl}/radicado-entrada/paginate`, dtRequest);\r\n }\r\n\r\n public async getMyRequestsByNumberAndCodeAsAnonymousAsync(numeroRadicado: string, codigoConsulta: string): Promise {\r\n try {\r\n const result = await this.aadGet(`${this._serviceUrl}/radicado-entrada/getByNumber/${numeroRadicado}/getByCode/${codigoConsulta}/asAnonymous`);\r\n return result;\r\n }\r\n catch (ex) {\r\n alert('Error al obtener el radicado de entrada anónimo, los datos proporcionados son incorrectos.')\r\n throw ex;\r\n }\r\n }\r\n\r\n private async _aadDownload(url: string, mimeType: string, fileName: string): Promise {\r\n try {\r\n const result: Blob = await this.aadBlob(url);\r\n\r\n if (result.size > 0) {\r\n var file = new Blob([result], { type: mimeType });\r\n let blobUrl = URL.createObjectURL(file);\r\n var a = document.createElement('a');\r\n a.href = blobUrl;\r\n a.download = fileName;\r\n a.click();\r\n window.URL.revokeObjectURL(blobUrl);\r\n } else {\r\n alert('El radicado seleccionado no tiene documentos adjuntos');\r\n }\r\n }\r\n catch (error) {\r\n alert('El radicado seleccionado no tiene documentos para descargar');\r\n console.log(error);\r\n }\r\n }\r\n\r\n public async downloadRadicadoEntrada(idRadicadoEntrada: number): Promise {\r\n await this._aadDownload(`${this._serviceUrl}/radicado-entrada/${idRadicadoEntrada}/download`, 'application/pdf', 'solicitud.pdf');\r\n }\r\n\r\n public async downloadAnexosRadicadoEntrada(idRadicadoEntrada: number): Promise {\r\n await this._aadDownload(`${this._serviceUrl}/radicado-entrada/${idRadicadoEntrada}/download-attachments`, 'application/zip', 'anexos.zip');\r\n }\r\n\r\n public async downloadRadicadoEntradaAsAnonymous(idRadicadoEntrada: number): Promise {\r\n await this._aadDownload(`${this._serviceUrl}/radicado-entrada/${idRadicadoEntrada}/downloadAsAnonymous`, 'application/pdf', 'solicitud.pdf');\r\n }\r\n\r\n public async downloadAnexosRadicadoEntradaAsAnonymous(idRadicadoEntrada: number): Promise {\r\n await this._aadDownload(`${this._serviceUrl}/radicado-entrada/${idRadicadoEntrada}/downloadAttachmentsAsAnonymous`, 'application/zip', 'anexos.zip');\r\n }\r\n\r\n public async getTramiteMetadataAsync(idTramite: number): Promise {\r\n if (idTramite > 0)\r\n return this.aadGet(`${this._serviceUrl}/tramites/${idTramite}/metadata`);\r\n return [];\r\n }\r\n\r\n public async getProcesoxFunction(functionId: string): Promise {\r\n return this.aadGetText(`${this.getProcesoxUrlWithDomain()}/functions/${functionId}`);\r\n }\r\n\r\n public async getProcesoxRuntimeItemsAsync(entityId: string, select: string[]): Promise<{ [key: string]: any }[]> {\r\n let url = `${this.getProcesoxUrlWithDomain()}/entities/${entityId}/items`;\r\n if (select !== void 0 && select.length > 0) {\r\n const items: string[] = [];\r\n for (let i = 0; i < select.length; i++) {\r\n items.push(`select=${select[i]}`);\r\n }\r\n url += '?' + items.join('&');\r\n }\r\n return this.aadGet(url);\r\n }\r\n\r\n public async executeProcesoxFunctionAsync(functionId: string, inputs: { [key: string]: any }): Promise {\r\n let url = `${this.getProcesoxUrlWithDomain()}/functions/${functionId}/run`;\r\n return this.aadPost(url, inputs || {});\r\n }\r\n\r\n public async getClasificacionPQRSAsync(tramiteId: number, contactTypeId: number): Promise {\r\n return this.aadGet(`${this._serviceUrl}/tramites/${tramiteId}/getClasificacionPQRSByTipoContacto/${contactTypeId}`);\r\n }\r\n\r\n public async getDescripcionTramiteAsync(idTramite: number): Promise {\r\n return this.aadGetText(`${this._serviceUrl}/tramites/${idTramite}/getDescripcionTramiteAsync`);\r\n }\r\n\r\n public advanceSearchAsync(request: any): Promise {\r\n return this.aadPost(`${this._serviceUrl}/radicado-salida/AdvanceSearch`, request);\r\n }\r\n\r\n //#region Entidades Adscritas\r\n\r\n public async getEntidadAdscritaMyPendingWorksAsync(dtRequest: any): Promise {\r\n return this.aadPost(`${this._serviceUrl}/entidad-adscrita/pending-works/paginate`, dtRequest);\r\n }\r\n\r\n public async getEntidadAdscritaAllPendingWorksAsync(dtRequest: any): Promise {\r\n return this.aadPost(`${this._serviceUrl}/entidad-adscrita/all-pending-works/paginate`, dtRequest);\r\n }\r\n\r\n public async exportMyPendingWorksAsync(): Promise {\r\n await this._aadDownload(`${this._serviceUrl}/entidad-adscrita/pending-works/exportxlsx`, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'RespuestasPendientes.xlsx');\r\n }\r\n\r\n public async SaveAnswerFromEntidadAdscritaAsync(respuesta: IAnswerEntidadAdscrita): Promise {\r\n return this.aadPost(`${this._serviceUrl}/entidad-adscrita/${respuesta.IdRadicadoEntrada}/SaveAnswerFromEntidadAdscrita`, respuesta);\r\n }\r\n\r\n public async closeEntidadAdscritaAsync(idRadicados: number[], comments: string): Promise {\r\n return this.aadPost(`${this._serviceUrl}/entidad-adscrita/CloseEntidadAdscrita`, {\r\n IdRadicados: idRadicados,\r\n Observaciones: comments\r\n });\r\n }\r\n\r\n public async devolverPqrAsync(idRadicados: number[], comments: string): Promise {\r\n return this.aadPost(`${this._serviceUrl}/entidad-adscrita/DevolverPqr`, {\r\n IdRadicados: idRadicados,\r\n Observaciones: comments\r\n });\r\n }\r\n\r\n public async closeEntidadAdscritaBySuperUserAsync(respuesta: ICloserEntidadAdscrita): Promise {\r\n return this.aadPostGetText(`${this._serviceUrl}/entidad-adscrita/CloseEntidadAdscritaBySuperUser`, respuesta);\r\n }\r\n\r\n //#endregion\r\n\r\n\r\n // Encuesta satisfaccion\r\n\r\n public async getPreguntasEncuestaAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/satisfaction-survey/getPreguntasEncuestaAsync`);\r\n }\r\n\r\n public async getRespuestasByIdPreguntaAsync(idPreguntaEncuesta: number): Promise {\r\n return this.aadGet(`${this._serviceUrl}/satisfaction-survey/getRespuestasByIdPreguntaAsync/${idPreguntaEncuesta}`);\r\n }\r\n\r\n public async sendSurveyResponsesAsync(respuestas: IRespuestaEncuestaSatisfaccion[], idRadicadoEntrada64: string): Promise {\r\n return this.aadPost(`${this._serviceUrl}/satisfaction-survey/${idRadicadoEntrada64}/sendSurveyResponsesAsync`, respuestas);\r\n }\r\n\r\n public async isSurveyCompletedAsync(idRadicadoEntrada64: string): Promise {\r\n return this.aadGet(`${this._serviceUrl}/satisfaction-survey/${idRadicadoEntrada64}/isSurveyCompletedAsync`);\r\n }\r\n\r\n // Sede electronica\r\n\r\n public async getPaginatePending(dtRequest: any) {\r\n let idUsuario = await this.getParameterAsync('Sede_Electronica', 'SuperUsuarioEntidadAdscrita');\r\n\r\n if (idUsuario.Value == atob(sessionStorage.getItem('@ioip/virtual-office@contact-id')))\r\n return this.getEntidadAdscritaAllPendingWorksAsync(dtRequest);\r\n else\r\n return this.getEntidadAdscritaMyPendingWorksAsync(dtRequest);\r\n }\r\n\r\n public async getSignaxServerDocumentById(documentId: string, token: string): Promise {\r\n try {\r\n addFetch();\r\n const headers = this.getRequestInit();\r\n headers.headers['G-Captcha'] = token;\r\n const response: Response = await fetch(`${this._serviceUrl}/signed-documents/${documentId}`, headers);\r\n removeFetch();\r\n if (response.ok) {\r\n const result = await response.blob();\r\n return result;\r\n }\r\n else {\r\n throw response.statusText;\r\n }\r\n } catch (ex) {\r\n removeFetch();\r\n throw ex;\r\n }\r\n }\r\n\r\n public async getDataUserAsync(): Promise {\r\n\r\n try {\r\n return this.aadGet(`${this._serviceUrl}/b2c`);\r\n }\r\n catch (ex) {\r\n return null;\r\n }\r\n }\r\n\r\n public async createDataUserAsync(): Promise {\r\n\r\n try {\r\n return this.aadPost(`${this._serviceUrl}/b2c/create-user`, null);\r\n }\r\n catch (ex) {\r\n return null;\r\n }\r\n\r\n }\r\n\r\n public async getParameterAsync(group: string, name: string): Promise {\r\n\r\n try {\r\n return this.aadGet(`${this._serviceUrl}/parameters/group/${group}/name/${name}`);\r\n }\r\n catch (ex) {\r\n return null;\r\n }\r\n }\r\n\r\n //#endregion Chunks\r\n\r\n public async getCurrentDraftAsync(): Promise {\r\n return this.aadGet(`${this._serviceUrl}/radicado-entrada/current-draft`);\r\n }\r\n\r\n public async getSessionDraftAsync(sessionId: string): Promise {\r\n return this.aadGet(`${this._serviceUrl}/radicado-entrada/session/${sessionId}/current-draft`);\r\n }\r\n\r\n public async saveRadicadoEntradaDraftAsync(radicado: IRadicadoEntradaExtended, reCaptcha: string): Promise {\r\n return this.aadPost(`${this._serviceUrl}/radicado-entrada`, radicado, reCaptcha);\r\n }\r\n\r\n public async saveAnonymousRadicadoEntradaDraftAsync(sessionId: string, radicado: IRadicadoEntradaExtended, reCaptcha: string): Promise {\r\n return this.aadPost(`${this._serviceUrl}/radicado-entrada/session/${sessionId}`, radicado, reCaptcha);\r\n }\r\n\r\n public async completeDraftAsync(radicado: IRadicadoEntradaExtended, reCaptcha: string): Promise {\r\n return this.aadPost(`${this._serviceUrl}/radicado-entrada/complete`, radicado, reCaptcha);\r\n }\r\n\r\n public async deleteDraftAsync(): Promise {\r\n return this.aadDelete(`${this._serviceUrl}/radicado-entrada`);\r\n }\r\n\r\n public async deleteAnonymousDraftAsync(sessionId: string): Promise {\r\n return this.aadDelete(`${this._serviceUrl}/radicado-entrada/session/${sessionId}`);\r\n }\r\n\r\n public async completeAnonymousDraftAsync(sessionId: string, radicado: IRadicadoEntradaExtended, reCaptcha: string): Promise {\r\n return this.aadPost(`${this._serviceUrl}/radicado-entrada/session/${sessionId}/complete`, radicado, reCaptcha);\r\n }\r\n\r\n public async createChunkDocumentAsync(request: any): Promise {\r\n return this.aadPost(`${this._serviceUrl}/radicado-entrada/documents/start-creation`, request);\r\n }\r\n\r\n public async createAnonymousChunkDocumentAsync(sessionId: string, request: any): Promise {\r\n return this.aadPost(`${this._serviceUrl}/radicado-entrada/session/${sessionId}/documents/start-creation`, request);\r\n }\r\n\r\n public async appendChunkContentAsync(documentId: number, obj: Blob): Promise {\r\n const formData = new FormData();\r\n formData.append('content', obj);\r\n return this.aadPostFormData(`${this._serviceUrl}/radicado-entrada/documents/${documentId}/append`, formData);\r\n }\r\n\r\n public async appendAnonymousChunkContentAsync(sessionId: string, documentId: number, obj: Blob): Promise {\r\n const formData = new FormData();\r\n formData.append('content', obj);\r\n return this.aadPostFormData(`${this._serviceUrl}/radicado-entrada/session/${sessionId}/documents/${documentId}/append`, formData);\r\n }\r\n\r\n public async deleteChunkDocumentAsync(documentId: number): Promise {\r\n return this.aadDelete(`${this._serviceUrl}/radicado-entrada/documents/${documentId}`);\r\n }\r\n\r\n public async deleteAnonymousChunkDocumentAsync(sessionId: string, documentId: number): Promise {\r\n return this.aadDelete(`${this._serviceUrl}/radicado-entrada/session/${sessionId}/documents/${documentId}`);\r\n }\r\n\r\n //#endregion\r\n\r\n public async getLastRequest(): Promise {\r\n return this.aadGetText(`${this._serviceUrl}/radicado-entrada/validate-last-request`);\r\n }\r\n\r\n // ProcesoX\r\n\r\n public async getPageV2Async(rootFormId: Guid | string, itemId: string | number): Promise {\r\n return this.aadGet(`${this.getProcesoxUrlWithDomain()}/api/procesox/v2.0.0/pages/${rootFormId}`);\r\n }\r\n\r\n public async getDocumentsAsync(documentId: number): Promise {\r\n return this.aadPost(`${this._serviceUrl}/GetDocuments`, documentId);\r\n }\r\n\r\n public async getAttachmentAsAnonymousAsync(idAnexoDocumentoExpediente: number, nombreArchivo: string): Promise {\r\n this.aadGetFile(`${this._serviceUrl}/GetDocument/${idAnexoDocumentoExpediente}/DownloadAttachmentAsAnonymous`, 'application/pdf', nombreArchivo);\r\n }\r\n\r\n public async getDocumentFileAsAnonymousAsync(idDocumentoExpediente: number, nombreArchivo: string): Promise {\r\n this.aadGetFile(`${this._serviceUrl}/GetDocument/${idDocumentoExpediente}/DownloadAsAnonymous`, 'application/pdf', nombreArchivo);\r\n }\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { PqrWebService } from '../../services/services';\r\nimport { IDocumento } from '../../ioip/sdk/base';\r\nimport { Sede } from '../../classes/shared';\r\n\r\nexport interface IArchivoComponentProps {\r\n title: string;\r\n}\r\n\r\nconst ArchivosComponent = (): JSX.Element => {\r\n\r\n const [files, setFiles] = useState([]);\r\n const pqrWebService = new PqrWebService();\r\n\r\n const handleDownload = async (idAnexo, nombre, esOficio, event) => {\r\n event.preventDefault();\r\n try {\r\n if (esOficio) { \r\n await pqrWebService.getDocumentFileAsAnonymousAsync(idAnexo, nombre);\r\n }\r\n else {\r\n await pqrWebService.getAttachmentAsAnonymousAsync(idAnexo, nombre);\r\n }\r\n } catch (error) {\r\n console.error('Error al obtener el archivo:', error);\r\n }\r\n };\r\n\r\n const fetchFiles = async (param) => {\r\n var lstParametros = await pqrWebService.decryptsAsync(param);\r\n var campos = lstParametros.Nombre.split('-');\r\n var fileList = await pqrWebService.getDocumentsAsync(parseInt(campos[0]));\r\n\r\n const archivoAdicional = {\r\n IdAnexoDocumentoExpediente: parseInt(campos[0]), // Asigna un ID único al archivo\r\n Nombre: `${campos[1]}.pdf`, // Nombre del archivo\r\n EsOficio: true, // Indica si es un oficio o no\r\n Length: 0, // Longitud del archivo\r\n Extension: 'pdf'\r\n };\r\n\r\n // Agregar el archivo adicional a la lista de archivos\r\n fileList.push(archivoAdicional);\r\n\r\n setFiles(fileList);\r\n };\r\n\r\n useEffect(() => {\r\n const search = window.location.hash.split('?');\r\n if (search !== undefined) {\r\n const param = search[1].replace(\"codigo=\", \"\")\r\n\r\n if (param) {\r\n fetchFiles(param);\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\nexport default ArchivosComponent;","import React from 'react';\r\nimport { ICheckAccountErrorComponentState } from './check-account-error.state';\r\nimport { ICheckAccountErrorComponentProps } from './check-account-error.props';\r\nimport { Label, DefaultButton } from \"@fluentui/react\";\r\n\r\nexport class CheckAccountErrorComponent extends React.Component {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n error: decodeURI(window.location.hash.replace('#/check-account-error/', '')).split('ó').join('ó').split('ú').join('ú')\r\n }\r\n }\r\n\r\n render(): JSX.Element {\r\n return
      \r\n
      \r\n
      \r\n

      Sede electrónica

      \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n }\r\n\r\n private _closeSession(): void {\r\n sessionStorage.clear();\r\n this.setState({});\r\n }\r\n\r\n private get isAuthenticate(): boolean {\r\n const token = sessionStorage.getItem('ioip.pqr-web.session.token');\r\n if (token === null || token === undefined) {\r\n return false;\r\n }\r\n const date = sessionStorage.getItem('ioip.pqr-web.session.expiracion');\r\n return true;\r\n }\r\n\r\n}","import { IRadicadoEntrada, defaultIRadicadoEntrada } from \"../ioip/sdk/base\";\r\n\r\nexport interface IRadicadoEntradaExtended extends IRadicadoEntrada {\r\n AutorizaTratamientoDatosPersonales: boolean;\r\n AutorizaPoliticaPrivacidad: boolean;\r\n Estado: string;\r\n IdRadicadoSalida: number;\r\n EstadoRadicadoSalida: string;\r\n IdEstadoActualRadicadoSalida: number;\r\n AclaracionCompleta: number;\r\n IdTipoRespuestaPQRS: number;\r\n RadicaRepresentante: boolean;\r\n DenuncianteAnonimo: boolean;\r\n SolicitanteConDiscapacidad: boolean;\r\n NombresApoderado: string;\r\n ApellidosApoderado: string;\r\n IdTipoIdentificacionApoderado: number;\r\n IdentificacionApoderado: string;\r\n EmailApoderado: string;\r\n FechaCreacionString: string;\r\n CorreoElectronicoContacto : string;\r\n NombreEntidadAdscrita : string;\r\n NombreContactoEntidadAdscrita : string;\r\n Observaciones:string;\r\n OtroClasificacionPQR: string;\r\n}\r\n\r\nexport function defaultIRadicadoEntradaExtended(): IRadicadoEntradaExtended {\r\n return {\r\n ...defaultIRadicadoEntrada(),\r\n AutorizaPoliticaPrivacidad: false,\r\n AutorizaTratamientoDatosPersonales: false,\r\n Estado: '',\r\n IdRadicadoSalida: 0,\r\n EstadoRadicadoSalida: '',\r\n IdEstadoActualRadicadoSalida: 0,\r\n AclaracionCompleta: 0,\r\n IdTipoRespuestaPQRS: 0,\r\n RadicaRepresentante: false,\r\n DenuncianteAnonimo: false,\r\n SolicitanteConDiscapacidad: false,\r\n NombresApoderado: '',\r\n ApellidosApoderado: '',\r\n IdTipoIdentificacionApoderado: 0,\r\n IdentificacionApoderado: '',\r\n EmailApoderado: '',\r\n FechaCreacionString: '',\r\n NombreContactoEntidadAdscrita:'',\r\n CorreoElectronicoContacto : '',\r\n NombreEntidadAdscrita : '',\r\n Observaciones:'',\r\n OtroClasificacionPQR: ''\r\n }\r\n}","import React from 'react';\r\nimport { DefaultButton, TextField, PrimaryButton, ITextFieldProps, CommandBar, IContextualMenuItem, Panel, PanelType, Fabric } from \"@fluentui/react\";\r\nimport { ICheckAnonymousRequestProps } from './check-anonymous-request.props';\r\nimport { ICheckAnonymousRequestState } from './check-anonymous-request.state';\r\nimport { PqrWebService } from '../../services/services';\r\nimport { defaultIRadicadoEntradaExtended, IRadicadoEntradaExtended } from '../../classes/radicado-entrada-extended';\r\nimport { validator, validateObject, EstadoRadicado } from '../../ioip/sdk/base';\r\n\r\nexport class CheckAnonymousRequestComponent extends React.Component {\r\n\r\n private _pqrWebService: PqrWebService = new PqrWebService();\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n showRequest: false,\r\n NumeroRadicado: '',\r\n CodigoConsulta: '',\r\n solicitud: defaultIRadicadoEntradaExtended(),\r\n errors: {}\r\n }\r\n }\r\n\r\n render(): JSX.Element {\r\n return (\r\n
      \r\n
      \r\n
      \r\n

      Consultar solicitud anónima

      \r\n
      \r\n
      \r\n
      \r\n
      \r\n this.setState({ NumeroRadicado: value })}\r\n errorMessage={this.state.errors[ 'NumeroRadicado' ]}\r\n value={this.state.NumeroRadicado} />\r\n
      \r\n
      \r\n this.setState({ CodigoConsulta: value })}\r\n errorMessage={this.state.errors[ 'CodigoConsulta' ]}\r\n value={this.state.CodigoConsulta} />\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n   \r\n {!this.state.showRequest &&\r\n \r\n }\r\n
      \r\n
      \r\n {this.state.showRequest &&\r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n {this.state.solicitud.IdRadicadoSalida !== 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
      \r\n
      \r\n \r\n
      \r\n
      \r\n }\r\n
      \r\n )\r\n }\r\n\r\n private _updateErrors(errors: { [ key: string ]: string }): void {\r\n this.setState({ errors });\r\n }\r\n\r\n private setShowRequest(value: boolean) {\r\n this.setState({\r\n ...this.state,\r\n showRequest: value\r\n })\r\n }\r\n\r\n private _buildCommand(): IContextualMenuItem[] {\r\n const commandBar: IContextualMenuItem[] = [];\r\n commandBar.push({\r\n key: 'Descargar solicitud',\r\n name: 'Descargar solicitud',\r\n iconProps: { iconName: 'Download' },\r\n onClick: () => {\r\n this._pqrWebService.downloadRadicadoEntradaAsAnonymous(this.state.solicitud.IdRadicadoEntrada);\r\n }\r\n });\r\n commandBar.push({\r\n key: 'Descargar anexos',\r\n name: 'Descargar anexos',\r\n iconProps: { iconName: 'Download' },\r\n onClick: () => {\r\n this._pqrWebService.downloadAnexosRadicadoEntradaAsAnonymous(this.state.solicitud.IdRadicadoEntrada);\r\n }\r\n });\r\n if (this.state.solicitud.IdRadicadoSalida != null && (this.state.solicitud.IdEstadoActual === EstadoRadicado.Respondido ||\r\n this.state.solicitud.IdEstadoActual === EstadoRadicado.Archivado)) {\r\n commandBar.push(\r\n {\r\n key: 'Descargar respuesta',\r\n name: 'Descargar respuesta',\r\n iconProps: { iconName: 'Download' },\r\n onClick: () => {\r\n this._pqrWebService.downloadRadicadoSalidaAsAnonymous(this.state.solicitud.IdRadicadoSalida);\r\n }\r\n }\r\n );\r\n if (this._verifyAttachmentsRadicadoSalida(this.state.solicitud.IdRadicadoSalida)) {\r\n commandBar.push(\r\n {\r\n key: 'Descargar anexos respuesta',\r\n name: 'Descargar anexos respuesta',\r\n iconProps: { iconName: 'Download' },\r\n onClick: () => {\r\n this._pqrWebService.downloadAttactmentsRadicadoSalidaAsAnonymous(this.state.solicitud.IdRadicadoSalida);\r\n }\r\n });\r\n }\r\n }\r\n return commandBar;\r\n }\r\n private async _verifyAttachmentsRadicadoSalida(idRadicadoSalida: number): Promise {\r\n const result: boolean = await this._pqrWebService.verifyAttachmentsRadicadoSalidaAsync(idRadicadoSalida);\r\n return result;\r\n }\r\n\r\n private async _search() {\r\n this.setShowRequest(false);\r\n const _validations: { [ key: string ]: any[] } = {\r\n NumeroRadicado: [ validator.invalid(0, 'Campo requerido') ],\r\n CodigoConsulta: [ validator.required(true) ]\r\n };\r\n if (validateObject(this.state, _validations, this._updateErrors.bind(this))) {\r\n try {\r\n const result: IRadicadoEntradaExtended = await this._pqrWebService.getMyRequestsByNumberAndCodeAsAnonymousAsync(this.state.NumeroRadicado, this.state.CodigoConsulta);\r\n this.setState({\r\n solicitud: result\r\n })\r\n this.setShowRequest(true);\r\n } catch (ex) {\r\n this.setState({\r\n errors: {\r\n 'error': ex as any\r\n }\r\n });\r\n }\r\n }\r\n }\r\n}","export default function _classPrivateFieldBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n return receiver;\n}","var id = 0;\nexport default function _classPrivateFieldKey(name) {\n return \"__private_\" + id++ + \"_\" + name;\n}","import * as React from 'react';\nimport { classNamesFunction, getId } from '../../Utilities';\nimport type {\n IProgressIndicatorProps,\n IProgressIndicatorStyleProps,\n IProgressIndicatorStyles,\n} from './ProgressIndicator.types';\n\nconst getClassNames = classNamesFunction();\n\n// if the percentComplete is near 0, don't animate it.\n// This prevents animations on reset to 0 scenarios\nconst ZERO_THRESHOLD = 0.01;\n\n/**\n * ProgressIndicator with no default styles.\n * [Use the `styles` API to add your own styles.](https://github.com/microsoft/fluentui/wiki/Styling)\n */\nexport class ProgressIndicatorBase extends React.Component {\n public static defaultProps = {\n label: '',\n description: '',\n width: 180,\n };\n\n private _labelId: string;\n private _descriptionId: string;\n\n constructor(props: IProgressIndicatorProps) {\n super(props);\n\n const id = getId('progress-indicator');\n this._labelId = id + '-label';\n this._descriptionId = id + '-description';\n }\n\n public render() {\n const {\n barHeight,\n className,\n // eslint-disable-next-line deprecation/deprecation\n label = this.props.title, // Fall back to deprecated value.\n description,\n styles,\n theme,\n progressHidden,\n onRenderProgress = this._onRenderProgress,\n } = this.props;\n\n const percentComplete =\n typeof this.props.percentComplete === 'number'\n ? Math.min(100, Math.max(0, this.props.percentComplete * 100))\n : undefined;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n barHeight,\n indeterminate: percentComplete === undefined ? true : false,\n });\n\n return (\n
      \n {label ? (\n
      \n {label}\n
      \n ) : null}\n {!progressHidden\n ? onRenderProgress(\n {\n ...(this.props as IProgressIndicatorProps),\n percentComplete: percentComplete,\n },\n this._onRenderProgress,\n )\n : null}\n {description ? (\n
      \n {description}\n
      \n ) : null}\n
      \n );\n }\n\n private _onRenderProgress = (props: IProgressIndicatorProps): JSX.Element => {\n const {\n ariaLabel,\n ariaValueText,\n barHeight,\n className,\n description,\n // eslint-disable-next-line deprecation/deprecation\n label = this.props.title,\n styles,\n theme,\n } = this.props;\n\n const percentComplete =\n typeof this.props.percentComplete === 'number'\n ? Math.min(100, Math.max(0, this.props.percentComplete * 100))\n : undefined;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n barHeight,\n indeterminate: percentComplete === undefined ? true : false,\n });\n\n const progressBarStyles = {\n width: percentComplete !== undefined ? percentComplete + '%' : undefined,\n transition: percentComplete !== undefined && percentComplete < ZERO_THRESHOLD ? 'none' : undefined,\n };\n\n const ariaValueMin = percentComplete !== undefined ? 0 : undefined;\n const ariaValueMax = percentComplete !== undefined ? 100 : undefined;\n const ariaValueNow = percentComplete !== undefined ? Math.floor(percentComplete!) : undefined;\n\n return (\n
      \n
      \n \n
      \n );\n };\n}\n","export var PropertyDataTypeEnum;\r\n(function (PropertyDataTypeEnum) {\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"Text\"] = 1] = \"Text\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"Code\"] = 2] = \"Code\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"Boolean\"] = 3] = \"Boolean\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"Option\"] = 4] = \"Option\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"LargeText\"] = 5] = \"LargeText\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"Action\"] = 6] = \"Action\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"Role\"] = 7] = \"Role\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"RoleComboBox\"] = 8] = \"RoleComboBox\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"SerieComboBox\"] = 9] = \"SerieComboBox\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"SubserieComboBox\"] = 10] = \"SubserieComboBox\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"InlineJavaScriptEditor\"] = 11] = \"InlineJavaScriptEditor\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"InlineJsonEditor\"] = 12] = \"InlineJsonEditor\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"InlineXmlEditor\"] = 13] = \"InlineXmlEditor\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"InlineSqlEditor\"] = 14] = \"InlineSqlEditor\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"CustomForm\"] = 15] = \"CustomForm\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"Color\"] = 16] = \"Color\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"Keywords\"] = 17] = \"Keywords\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"Rule\"] = 18] = \"Rule\";\r\n PropertyDataTypeEnum[PropertyDataTypeEnum[\"BooleanWithRule\"] = 19] = \"BooleanWithRule\";\r\n})(PropertyDataTypeEnum || (PropertyDataTypeEnum = {}));\r\n","export var ChartType;\r\n(function (ChartType) {\r\n ChartType[ChartType[\"VerticalBar\"] = 1] = \"VerticalBar\";\r\n ChartType[ChartType[\"Radar\"] = 2] = \"Radar\";\r\n ChartType[ChartType[\"Line\"] = 3] = \"Line\";\r\n})(ChartType || (ChartType = {}));\r\n","import {\n HighContrastSelector,\n keyframes,\n noWrap,\n getGlobalClassNames,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { getRTL, memoizeFunction } from '../../Utilities';\nimport type { IRawStyle } from '../../Styling';\nimport type { IProgressIndicatorStyleProps, IProgressIndicatorStyles } from './ProgressIndicator.types';\n\nconst GlobalClassNames = {\n root: 'ms-ProgressIndicator',\n itemName: 'ms-ProgressIndicator-itemName',\n itemDescription: 'ms-ProgressIndicator-itemDescription',\n itemProgress: 'ms-ProgressIndicator-itemProgress',\n progressTrack: 'ms-ProgressIndicator-progressTrack',\n progressBar: 'ms-ProgressIndicator-progressBar',\n};\n\nconst IndeterminateProgress = memoizeFunction(() =>\n keyframes({\n '0%': {\n left: '-30%',\n },\n '100%': {\n left: '100%',\n },\n }),\n);\n\nconst IndeterminateProgressRTL = memoizeFunction(() =>\n keyframes({\n '100%': {\n right: '-30%',\n },\n '0%': {\n right: '100%',\n },\n }),\n);\n\nexport const getStyles = (props: IProgressIndicatorStyleProps): IProgressIndicatorStyles => {\n const isRTL = getRTL(props.theme);\n const { className, indeterminate, theme, barHeight = 2 } = props;\n\n const { palette, semanticColors, fonts } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const marginBetweenText = 8;\n const textHeight = 18;\n const progressTrackColor = palette.neutralLight;\n\n return {\n root: [classNames.root, fonts.medium, className],\n\n itemName: [\n classNames.itemName,\n noWrap,\n {\n color: semanticColors.bodyText,\n paddingTop: marginBetweenText / 2,\n lineHeight: textHeight + 2,\n },\n ],\n\n itemDescription: [\n classNames.itemDescription,\n {\n color: semanticColors.bodySubtext,\n fontSize: fonts.small.fontSize,\n lineHeight: textHeight,\n },\n ],\n\n itemProgress: [\n classNames.itemProgress,\n {\n position: 'relative',\n overflow: 'hidden',\n height: barHeight,\n padding: `${marginBetweenText}px 0`,\n },\n ],\n\n progressTrack: [\n classNames.progressTrack,\n {\n position: 'absolute',\n width: '100%',\n height: barHeight,\n backgroundColor: progressTrackColor,\n\n selectors: {\n [HighContrastSelector]: {\n borderBottom: '1px solid WindowText',\n },\n },\n },\n ],\n\n progressBar: [\n {\n backgroundColor: palette.themePrimary,\n height: barHeight,\n position: 'absolute',\n transition: 'width .3s ease',\n width: 0,\n\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n\n indeterminate\n ? ({\n position: 'absolute',\n minWidth: '33%',\n background:\n `linear-gradient(to right, ${progressTrackColor} 0%, ` +\n `${palette.themePrimary} 50%, ${progressTrackColor} 100%)`,\n animation: `${isRTL ? IndeterminateProgressRTL() : IndeterminateProgress()} 3s infinite`,\n selectors: {\n [HighContrastSelector]: {\n background: `highlight`,\n },\n },\n } as IRawStyle)\n : ({\n transition: 'width .15s linear',\n } as IRawStyle),\n classNames.progressBar,\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ProgressIndicatorBase } from './ProgressIndicator.base';\nimport { getStyles } from './ProgressIndicator.styles';\nimport type {\n IProgressIndicatorProps,\n IProgressIndicatorStyleProps,\n IProgressIndicatorStyles,\n} from './ProgressIndicator.types';\n\n/**\n * ProgressIndicator description\n */\nexport const ProgressIndicator: React.FunctionComponent = styled<\n IProgressIndicatorProps,\n IProgressIndicatorStyleProps,\n IProgressIndicatorStyles\n>(ProgressIndicatorBase, getStyles, undefined, { scope: 'ProgressIndicator' });\n","export const NombreColumn = {\r\n key: 'Nombre',\r\n name: 'Nombre',\r\n fieldName: 'Nombre',\r\n minWidth: 200,\r\n maxWidth: 350,\r\n isResizable: true\r\n};\r\nexport const VisibleColumn = {\r\n key: 'Visible',\r\n name: 'Visible',\r\n fieldName: 'Visible',\r\n minWidth: 80,\r\n maxWidth: 120,\r\n isResizable: true,\r\n onRender: (item) => item.Visible ? 'Si' : 'No'\r\n};\r\nexport const HeaderTextColumn = {\r\n key: 'HeaderText',\r\n name: 'HeaderText',\r\n fieldName: 'HeaderText',\r\n minWidth: 150,\r\n maxWidth: 350,\r\n isResizable: true\r\n};\r\nexport const EmptyColumn = {\r\n key: '-empty-',\r\n name: '',\r\n fieldName: '',\r\n minWidth: 20,\r\n maxWidth: 20,\r\n isResizable: false\r\n};\r\nexport const CreadoPortColumn = {\r\n key: 'CreadoPor',\r\n name: 'Creado por',\r\n fieldName: 'CreadoPor',\r\n minWidth: 150,\r\n maxWidth: 250,\r\n isResizable: true\r\n};\r\nexport const CreatedByColumn = {\r\n key: 'CreatedBy',\r\n name: 'Creado por',\r\n fieldName: 'CreatedBy',\r\n minWidth: 150,\r\n maxWidth: 250,\r\n isResizable: true\r\n};\r\nexport const KeyColumn = {\r\n key: 'Key',\r\n name: 'Key',\r\n fieldName: 'Key',\r\n minWidth: 150,\r\n maxWidth: 250,\r\n isResizable: true\r\n};\r\nexport const ValueColumn = {\r\n key: 'Value',\r\n name: 'Value',\r\n fieldName: 'Value',\r\n minWidth: 150,\r\n maxWidth: 250,\r\n isResizable: true\r\n};\r\nexport const CreationDateFormattedColumn = {\r\n key: 'FechaCreacion',\r\n name: 'Fecha creación',\r\n fieldName: 'FechaCreacionString2',\r\n minWidth: 150,\r\n maxWidth: 250,\r\n isResizable: true\r\n};\r\nexport const FechaCreacionColumn = {\r\n key: 'FechaCreacion',\r\n name: 'Fecha creación',\r\n fieldName: 'FechaCreacion',\r\n minWidth: 150,\r\n maxWidth: 250,\r\n isResizable: true\r\n};\r\nexport const CreationDateColumn = {\r\n key: 'CreationDate',\r\n name: 'Fecha creación',\r\n fieldName: 'CreationDate',\r\n minWidth: 150,\r\n maxWidth: 250,\r\n isResizable: true\r\n};\r\nexport const ModificadoPorColumn = {\r\n key: 'ModificadoPor',\r\n name: 'Modificado por',\r\n fieldName: 'ModificadoPor',\r\n minWidth: 150,\r\n maxWidth: 250,\r\n isResizable: true\r\n};\r\nexport const ModifiedByColumn = {\r\n key: 'ModifiedBy',\r\n name: 'Modificado por',\r\n fieldName: 'ModifiedBy',\r\n minWidth: 150,\r\n maxWidth: 250,\r\n isResizable: true\r\n};\r\nexport const FechaModificacionColumn = {\r\n key: 'FechaModificacion',\r\n name: 'Fecha modificación',\r\n fieldName: 'FechaModificacionString2',\r\n minWidth: 150,\r\n maxWidth: 250,\r\n isResizable: true\r\n};\r\nexport const ModificationDateColumn = {\r\n key: 'ModificationDate',\r\n name: 'Fecha modificación',\r\n fieldName: 'ModificationDate',\r\n minWidth: 150,\r\n maxWidth: 250,\r\n isResizable: true\r\n};\r\nexport const EnableColumn = {\r\n key: 'Activo',\r\n name: 'Activo',\r\n fieldName: 'activo',\r\n minWidth: 40,\r\n maxWidth: 50,\r\n isResizable: true,\r\n onRender: (item) => item.Activo ? 'Sí' : 'No'\r\n};\r\nexport const NameColumn_esES = {\r\n key: 'Nombre',\r\n name: 'Nombre',\r\n fieldName: 'Nombre',\r\n minWidth: 200,\r\n maxWidth: 350,\r\n isResizable: true\r\n};\r\nexport const NameColumn_enUS = {\r\n key: 'Name',\r\n name: 'Nombre',\r\n fieldName: 'Name',\r\n minWidth: 200,\r\n maxWidth: 350,\r\n isResizable: true\r\n};\r\nexport const NameColumn = {\r\n key: 'Name',\r\n name: 'Nombre',\r\n fieldName: 'Name',\r\n minWidth: 200,\r\n maxWidth: 350,\r\n isResizable: true\r\n};\r\nexport const DescriptionColumn = {\r\n key: 'Description',\r\n name: 'Descripción',\r\n fieldName: 'Description',\r\n minWidth: 200,\r\n maxWidth: 350,\r\n isResizable: true\r\n};\r\nexport const ProcessName = {\r\n key: 'ProcessName',\r\n name: 'Nombre',\r\n fieldName: 'ProcessName',\r\n minWidth: 200,\r\n maxWidth: 300,\r\n isResizable: false\r\n};\r\nexport const YesNoColumn = (key, name, fieldName) => {\r\n return {\r\n key,\r\n name,\r\n fieldName,\r\n minWidth: 60,\r\n maxWidth: 150,\r\n isResizable: true,\r\n onRender: item => item[fieldName] === true ? 'Si' : 'No'\r\n };\r\n};\r\nexport const TextColumn = {\r\n key: 'Text',\r\n name: 'Text',\r\n fieldName: 'Text',\r\n minWidth: 200,\r\n maxWidth: 350,\r\n isResizable: true\r\n};\r\nexport const IconColumn = {\r\n key: 'Icon',\r\n name: 'Icon',\r\n fieldName: 'Icon',\r\n minWidth: 200,\r\n maxWidth: 350,\r\n isResizable: true\r\n};\r\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","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}","function objectToString (o) {\n return Object.prototype.toString.call(o)\n}\n\nexport function isObject (arg) {\n return typeof arg === 'object' && arg !== null\n}\n\nexport function isDate (d) {\n return isObject(d) && objectToString(d) === '[object Date]'\n}\n\n/**\n * pad number with `0`\n * @param {number} number\n * @param {number} [len] - length\n * @return {string} padded string\n */\nexport function pad0 (number, len) {\n len = len || 2\n number = Array(len).join('0') + number.toString()\n return number.substr(number.length - len, len)\n}\n\n/**\n * convert string to number\n * @private\n * @param {String} str\n * @return {Number} converted number or undefined\n */\nexport function toNumber (str) {\n const num = parseInt(str, 10)\n if (!isNaN(num)) {\n return num\n }\n}\n\n/**\n * extract or set year\n * @private\n * @param {Number|Date|String} year\n * @return {Number} year\n */\nexport function toYear (year) {\n if (!year) {\n year = new Date().getFullYear()\n } else if (isDate(year)) {\n year = year.getFullYear()\n } else if (typeof year === 'string') {\n year = toNumber(year)\n }\n return year\n}\n","\nimport moment from 'moment-timezone'\nimport { toYear, toNumber, isDate, pad0 } from './utils.js'\n\nconst PROPS = ['year', 'month', 'day', 'hour', 'minute', 'second']\n\nexport class CalDate {\n /**\n * constructs a new CalDate instance\n * @param {Object|Date} [opts] - See `set(opts)`\n * @example\n * const CalDate = require('caldate')\n * const caldate = new CalDate('2000-01-01 12:00:00')\n * caldate.year\n * //> 2000\n * caldate.month\n * //> 1\n */\n constructor (opts) {\n this.set(opts)\n }\n\n static toYear (year) {\n return toYear(year)\n }\n\n /**\n * set calendar date\n * @param {Object|Date} [opts] - defaults to `1900-01-01`\n * @param {String} opts.year\n * @param {String} opts.month - January equals to 1, December to 12\n * @param {String} opts.day\n * @param {String} opts.hour\n * @param {String} opts.minute\n * @param {String} opts.second\n * @param {String} opts.duration - defaults to 24 hours\n */\n set (opts) {\n opts = opts || { year: 1900, month: 1, day: 1 }\n if (isDate(opts)) {\n this.year = opts.getFullYear()\n this.month = opts.getMonth() + 1\n this.day = opts.getDate()\n this.hour = opts.getHours()\n this.minute = opts.getMinutes()\n this.second = opts.getSeconds()\n } else {\n PROPS.forEach((p) => {\n this[p] = toNumber(opts[p]) || 0\n })\n this.month = this.month || 1\n this.day = this.day || 1\n }\n this.duration = opts.duration || 24 // duration is in hours\n return this\n }\n\n /**\n * checks if Date is equal to `calDate`\n * @param {CalDate} calDate\n * @return {Boolean} true if date matches\n */\n isEqualDate (calDate) {\n let res = true\n this.update()\n ;['year', 'month', 'day'].forEach((p) => {\n res &= (this[p] === calDate[p])\n })\n return !!res\n }\n\n /**\n * get day of week\n * @return {Number} day of week 0=sunday, 1=monday, ...\n */\n getDay () {\n return this.toDate().getDay()\n }\n\n /**\n * set offset per unit\n * @param {Number} number\n * @param {String} [unit='d'] - Unit in days `d`, hours `h, minutes `m`\n * @return {Object} this\n */\n setOffset (number, unit) {\n if (number) {\n if (typeof number === 'object') {\n unit = number.unit\n number = number.number\n }\n unit = unit || 'd'\n number = parseFloat(number, 10)\n if (isNaN(number)) {\n throw new Error('Number required')\n }\n\n const o = { day: 0 }\n if (unit === 'd') {\n o.day = number | 0\n number -= o.day\n number *= 24\n }\n if (unit === 'd' || unit === 'h') {\n o.hour = (number % 24) | 0\n number -= o.hour\n number *= 60\n }\n o.minute = (number % 60) | 0\n number -= o.minute\n number *= 60\n o.second = (number % 60) | 0\n\n this.day += o.day\n this.hour += o.hour\n this.minute += o.minute\n this.second += o.second\n }\n this.update()\n return this\n }\n\n /**\n * set time per hour, minute or second while maintaining duration at midnight\n * @param {Number} [hour]\n * @param {Number} [minute]\n * @param {Number} [second]\n * @return {Object} this\n */\n setTime (hour, minute, second) {\n hour = hour || 0\n minute = minute || 0\n second = second || 0\n // the holiday usually ends at midnight - if this is not the case set different duration explicitely\n this.duration = 24 - (hour + minute / 60 + second / 3600)\n this.hour = hour\n this.minute = minute\n this.second = second\n this.update()\n return this\n }\n\n /**\n * set duration in hours\n * @param {Number} duration in hours\n * @return {Object} this\n */\n setDuration (duration) {\n this.duration = duration\n return this\n }\n\n /**\n * update internal data to real date\n * @return {Object} this\n */\n update () {\n if (this.year) {\n const d = new CalDate(this.toDate())\n PROPS.forEach((p) => {\n this[p] = d[p]\n })\n }\n return this\n }\n\n /**\n * get end date of calendar date\n * @return {CalDate}\n */\n toEndDate () {\n const d = new CalDate(this.toDate())\n d.minute += ((this.duration * 60) | 0)\n d.update()\n return d\n }\n\n /**\n * move internal date to a date in `timezone`\n * @param {String} timezone - e.g. 'America/New_York'\n * @return {Date}\n */\n toTimezone (timezone) {\n if (timezone) {\n return new Date(moment.tz(this.toString(), timezone).format())\n } else {\n return this.toDate()\n }\n }\n\n /**\n * set date from a given `timezone`\n * @param {Date} dateUTC - date in UTC\n * @param {String} [timezone] - timezone of dateUTC, e.g. 'America/New_York'\n * @return {CalDate} self\n */\n fromTimezone (dateUTC, timezone) {\n if (timezone) {\n const m = moment.tz(dateUTC, timezone)\n this.year = m.year()\n this.month = m.month() + 1\n this.day = m.date()\n this.hour = m.hours()\n this.minute = m.minutes()\n this.second = m.seconds()\n } else {\n this.set(dateUTC)\n }\n return this\n }\n\n /**\n * convert to Date\n * @return {Date}\n */\n toDate () {\n return new Date(\n this.year, this.month - 1, this.day,\n this.hour, this.minute, this.second, 0\n )\n }\n\n /**\n * get Date in ISO format\n */\n toISOString () {\n return this.toString(true)\n }\n\n /**\n * get Date as String `YYYY-MM-DD HH:MM:SS`\n */\n toString (iso) {\n const d = new CalDate(this.toDate())\n return (\n pad0(d.year, 4) + '-' +\n pad0(d.month) + '-' +\n pad0(d.day) +\n (iso ? 'T' : ' ') +\n pad0(d.hour) + ':' +\n pad0(d.minute) + ':' +\n pad0(d.second) +\n (iso ? 'Z' : '')\n )\n }\n}\n","/**\n * lodash compatible methods\n */\n\nimport deepmerge from 'deepmerge'\n\n/**\n * get value at `keys` from `object`\n * @example\n * get({a: {b: {c: 2}}}, ['a', 'b', 'c']) //> 2\n */\nexport const get = (obj, keys = [], def) => {\n let o = obj\n if (typeof keys === 'string') keys = keys.split('.')\n for (const key of keys) {\n if (o && o[key]) { o = o[key] } else { return def }\n }\n return o\n}\n\n/**\n * set `value` at `keys` from `object`\n * @example\n * set({a: {b: {c: 2}}}, ['a', 'b', 'c'], 3)\n */\nexport const set = (obj, keys = [], value) => {\n let key\n let ref\n let o = obj\n for (key of keys) {\n ref = o\n if (toString.call(o[key]) !== '[object Object]') o[key] = {}\n o = o[key]\n }\n ref[key] = value\n return obj\n}\n\n/**\n * omit `object` properties `props`\n */\nexport const omit = (object, props = []) => Object.keys(object)\n .filter(p => !~props.indexOf(p))\n .reduce((o, p) => {\n p in object && (o[p] = object[p])\n return o\n }, {})\n\nexport const merge = (...args) => deepmerge.all(args)\n\nexport const toNumber = (num, def) => {\n const _num = Number(num)\n return isNaN(_num) ? def : _num\n}\n\nexport default {\n get,\n set,\n omit,\n merge\n}\n","/**\n * {\n * 0: 'sunday', ...\n * sunday: 0, ...\n * }\n */\nexport const DAYS = (function () {\n const o = {}\n 'sunday|monday|tuesday|wednesday|thursday|friday|saturday'\n .split('|')\n .forEach((name, idx) => {\n o[name] = idx\n o[idx] = name\n })\n return o\n})()\n\nfunction objectToString (o) {\n return Object.prototype.toString.call(o)\n}\n\nexport function isObject (arg) {\n return typeof arg === 'object' && arg !== null\n}\n\nexport function isDate (d) {\n return isObject(d) && objectToString(d) === '[object Date]'\n}\n\nexport const isNil = (v) => v === null || v === undefined\n\n/**\n * pad number with `0`\n * @param {number} number\n * @param {number} [len] - length\n * @return {string} padded string\n */\nexport function pad0 (number, len) {\n len = len || 2\n number = Array(len).join('0') + number.toString()\n return number.substr(number.length - len, len)\n}\n\n/**\n * convert string to number\n * @private\n * @param {String} str\n * @return {Number} converted number or undefined\n */\nexport function toNumber (str) {\n const num = parseInt(str, 10)\n if (!isNaN(num)) {\n return num\n }\n}\n\n/**\n * extract or set year\n * @private\n * @param {Number|Date|String} year\n * @return {Number} year\n */\nexport function toYear (year) {\n if (!year) {\n year = new Date().getFullYear()\n } else if (year instanceof Date) {\n year = year.getFullYear()\n } else if (typeof year === 'string') {\n year = toNumber(year)\n }\n return year\n}\n\n/**\n * convert string to Date.\n * 2017 : year = 2017, month = 1, day = 1\n * '2017-07' : year = 2017, month = 7, day = 1\n * '2017-07-03': year = 2017, month = 7, day = 3\n * @param {String} str\n * @param {Boolean} isUTC - return date in UTC\n * @return {Date}\n */\nexport function toDate (str, isUTC) {\n const m = /^(\\d{4})(?:-(\\d{2})(?:-(\\d{2}))?)?.*$/.exec((str || '').toString())\n if (m) {\n m.shift()\n const [year, month, day] = m.map((num) => parseInt(num || 1, 10))\n if (isUTC) {\n return new Date(Date.UTC(year, month - 1, day))\n } else {\n return new Date(year, month - 1, day)\n }\n }\n}\n","import _ from './utils.js'\n\n/**\n * Handler for holiday data provided in the Json file\n * @class\n * @param {Object} [data]\n * @param {Object|String} [country]\n * @param {String} [state]\n * @param {String} [region]\n */\nexport default class Data {\n constructor (data, country, state, region) {\n this.opts = Data.splitName(country, state, region) || {}\n this.data = data || {}\n }\n\n /**\n * get all countries from the data\n * @param {String} lang - Iso-639 shortcode\n * @return {Object} shortcode-name value pairs. E.g. `{ AT: 'Österreich', ... }`\n */\n getCountries (lang) {\n const o = {}\n const countries = _.get(this.data, 'holidays', {})\n Object.keys(countries).forEach((country) => {\n o[country] = this._name(countries, country, lang, { country })\n })\n return o\n }\n\n /**\n * get all states for a given country from the data\n * @param {String|Object} country\n * @param {String} [lang] - Iso-639 shortcode\n * @return {Object} shortcode-name value pairs. E.g. `{ b: 'Burgenland', ... }`\n */\n getStates (country, lang) {\n const opts = Object.assign({}, Data.splitName(country))\n const states = _.get(this.data, ['holidays', opts.country, 'states']) ||\n _.get(this.data, ['holidays', opts.country, 'regions'])\n if (states) {\n const o = {}\n Object.keys(states).forEach((state) => {\n opts.state = state\n o[state] = this._name(states, state, lang, opts)\n })\n return o\n }\n }\n\n /**\n * get all regions for a given country/ state from the data\n * @param {String} country\n * @param {String} state\n * @param {String} [lang] - Iso-639 shortcode\n * @return {Object} shortcode-name value pairs.\n */\n getRegions (country, state, lang) {\n const opts = Object.assign({}, Data.splitName(country, state))\n const regions = _.get(this.data, ['holidays', opts.country, 'states', opts.state, 'regions'])\n\n if (regions) {\n const o = {}\n Object.keys(regions).forEach((region) => {\n opts.region = region\n o[region] = this._name(regions, region, lang, opts)\n })\n return o\n }\n }\n\n /**\n * @private\n */\n _name (obj, key, lang, opts) {\n const names = obj[key].names\n const _lang = lang || this.getLanguages(opts)[0] || Object.keys(names)[0]\n const mlang = Data.majorLang(_lang)\n const name = obj[key].name || names[_lang] || names[mlang] || names[Object.keys(names)[0]]\n return name\n }\n\n /**\n * get languages for selected country, state, region\n * @return {Array} containing ISO 639-1 language shortcodes\n */\n getLanguages (opts) {\n return this._getValue('langs', opts) || []\n }\n\n /**\n * get default day off as weekday\n * @return {String} weekday of day off\n */\n getDayOff () {\n return this._getValue('dayoff')\n }\n\n /**\n * get timezones for country, state, region\n * @return {Array} of {String}s containing the timezones\n */\n getTimezones () {\n return this._getValue('zones') || []\n }\n\n /**\n * get list of raw holiday rules for country/ state/ region\n * @param {Object|String} [country]\n * @param {String} [state]\n * @param {String} [region]\n * @return {Object} holidayname <-> unparsed rule or date pairs\n */\n getRules (country, state, region) {\n const rules = {}\n const opts = Data.splitName(country, state, region) || this.opts\n\n if (!(opts && opts.country)) {\n return rules\n }\n\n country = opts.country.toUpperCase()\n state = opts.state\n region = opts.region\n let tmp = _.get(this.data, ['holidays', country])\n\n if (tmp) {\n this._assign(rules, tmp)\n if ((state && tmp.regions && (tmp = tmp.regions[state])) ||\n (state && tmp.states && (tmp = tmp.states[state]))\n ) {\n this._assign(rules, tmp)\n if (region && tmp.regions && (tmp = tmp.regions[region])) {\n this._assign(rules, tmp)\n }\n }\n Object.keys(rules).forEach((key) => {\n // assign name references with `_name`\n const _name = rules[key]._name\n if (_name && this.data.names[_name]) {\n delete rules[key]._name\n rules[key] = _.merge({}, this.data.names[_name], rules[key])\n }\n })\n }\n\n return rules\n }\n\n /**\n * get name for substitute name\n * @return {Object} translations of substitute day names\n */\n getSubstitueNames () {\n return _.get(this.data, ['names', 'substitutes', 'name'])\n }\n\n /**\n * helper to assign objects based on properties\n * @private\n * @param {Object} out - object where obj gets assigned into\n * @param {Object} obj - input obj\n * @return {Object}\n */\n _assign (out, obj) {\n let days = {}\n if (obj._days) { // resolve reference\n const path = ['holidays'].concat(obj._days, 'days')\n const ref = _.get(this.data, path)\n if (!ref) throw new Error('unknown path for _days: ' + path.join('.'))\n days = Object.assign({}, ref)\n }\n if (days || obj.days) {\n days = Object.assign(days, obj.days)\n Object.keys(days).forEach(function (p) {\n if (days[p] === false) { // remove rules\n if (out[p]) {\n delete out[p]\n }\n return\n }\n out[p] = Object.assign({}, out[p], days[p])\n if (!days[p].type) {\n out[p].type = 'public'\n }\n })\n }\n return out\n }\n\n /**\n * get a object from the data tree\n * @private\n * @param {String} key - key to look at\n * @return {Object} return object\n */\n _getValue (key, opts = this.opts) {\n return (\n _.get(this.data, ['holidays', opts.country, 'states', opts.state, 'regions', opts.regions, key]) ||\n _.get(this.data, ['holidays', opts.country, 'states', opts.state, key]) ||\n _.get(this.data, ['holidays', opts.country, key])\n )\n }\n}\n\n// static functions\n/**\n * split country state names if they appear in concatenated format e.g. 'at.b'\n * @param {String|Object} country\n * @param {String} [state]\n * @param {String} [region]\n * @return {Object}\n */\nData.splitName = function (country, state, region) {\n if (typeof country === 'object' && country.country) {\n return toUpperCase(country)\n } else if (typeof country === 'string') {\n const a = country.split(/[.-]/)\n const o = {\n country: a.shift(),\n state: a.shift() || state,\n region: a.shift() || region\n }\n return toUpperCase(o)\n }\n}\n\nData.majorLang = function (lang) {\n return (lang || '').split(/-/)[0]\n}\n\n/**\n * @private\n */\nfunction toUpperCase (obj) {\n ;['country', 'state', 'region'].forEach(key => {\n if (typeof obj[key] === 'string') {\n obj[key] = obj[key].toUpperCase()\n }\n })\n return obj\n}\n","/* eslint\n no-spaced-func: 0,\n no-unexpected-multiline: 0\n */\n\nimport { toNumber } from './internal/utils.js'\n\nconst WEEKDAYS = 'Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday'.split('|')\n\nconst lowerCaseWeekday = (weekday) => WEEKDAYS.includes(weekday) ? weekday.toLowerCase() : weekday\n\nconst lowerCaseWeekdayWithoutDay = weekday => (weekday === 'day')\n ? undefined\n : lowerCaseWeekday(weekday)\n\n/**\n * regular expressions to parse holiday statements\n */\nconst grammar = (function () {\n /**\n * combines different regexes\n * @private\n * @return {RegExp} combined regex\n */\n function replace (regex, opt) {\n regex = regex.source\n opt = opt || ''\n return function self (name, val) {\n if (!name) return new RegExp(regex, opt)\n val = val.source || val\n val = val.replace(/(^|[^[])\\^/g, '$1')\n regex = regex.replace(name, val)\n return self\n }\n }\n\n // raw rules\n const raw = {\n _weekdays: '[Ss]unday|[Mm]onday|[Tt]uesday|[Ww]ednesday|[Tt]hursday|[Ff]riday|[Ss]aturday|day',\n _months: 'January|February|March|April|May|June|July|August|September|October|November|December',\n _islamicMonths: 'Muharram|Safar|Rabi al-awwal|Rabi al-thani|Jumada al-awwal|Jumada al-thani|Rajab|Shaban|Ramadan|Shawwal|Dhu al-Qidah|Dhu al-Hijjah',\n _hebrewMonths: 'Nisan|Iyyar|Sivan|Tamuz|Av|Elul|Tishrei|Cheshvan|Kislev|Tevet|Shvat|AdarII|Adar',\n _jalaaliMonths: 'Farvardin|Ordibehesht|Khordad|Tir|Mordad|Shahrivar|Mehr|Aban|Azar|Dey|Bahman|Esfand',\n _days: /(_weekdays)s?/,\n _direction: /(before|after|next|previous|in)/,\n _counts: /(\\d+)(?:st|nd|rd|th)?/,\n _count_days: /([-+]?\\d{1,2}) ?(?:days?|d)?/,\n _timezone: / in ([^\\s]*|[+-]\\d{2}:\\d{2})/,\n _type: /(public|bank|school|observance|optional)/,\n\n dateMonth: /^(_months)/,\n date: /^(?:0*(\\d{1,4})-)?0?(\\d{1,2})-0?(\\d{1,2})/,\n time: /^(?:T?0?(\\d{1,2}):0?(\\d{1,2})|T0?(\\d{1,2}))/,\n duration: /^P(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?)?/, // follows ISO 8601\n\n julian: /^julian date/,\n easter: /^(easter|orthodox)(?: _count_days)?/,\n equinox: /^([Mm]arch|[Jj]une|[Ss]eptember|[Dd]ecember) (?:equinox|solstice)(?:_timezone)?/,\n hebrew: /^0?(\\d{1,2}) (_hebrewMonths)(?: 0*(\\d{1,}))?/,\n islamic: /^0?(\\d{1,2}) (_islamicMonths)(?: 0*(\\d{1,}))?/,\n jalaali: /^0?(\\d{1,2}) (_jalaaliMonths)(?: 0*(\\d{1,}))?/,\n chineseLunar: /^(chinese|korean|vietnamese) (?:(\\d+)-(\\d{1,2})-)?(\\d{1,2})-([01])-(\\d{1,2})/,\n chineseSolar: /^(chinese|korean|vietnamese) (?:(\\d+)-(\\d{1,2})-)?(\\d{1,2})-(\\d{1,2}) solarterm/,\n bengaliRevised: /^(bengali-revised) (?:-?0*(\\d{1,4})-)?0?(\\d{1,2})-0?(\\d{1,2})/,\n\n modifier: /^(substitutes|and|if equal|then|if)\\b/,\n rule_year: /^(?:in (even|odd|leap|non-leap) years|every (\\d+) years? since 0*(\\d{1,4}))/,\n rule_weekday: /(not )?on ((?:(?:_weekdays)(?:,\\s?)?)*)/,\n rule_date_if_then: /^if ((?:(?:_weekdays)(?:,\\s?)?)*) then (?:_direction _days)?/,\n rule_day_dir_date: /^(?:_counts )?_days _direction/,\n rule_bridge: /^is (?:_type )?holiday/,\n rule_if_holiday: /^if is (?:_type )?holiday then (?:_counts )?(?:_direction _days)?(?: omit ((?:(?:_weekdays)(?:,\\s?)?)*))?/,\n rule_same_day: /^#\\d+/,\n rule_active_from: /^since (0*\\d{1,4})(?:-0*(\\d{1,2})(?:-0*(\\d{1,2})|)|)(?: and|)/,\n rule_active_to: /^prior to (0*\\d{1,4})(?:-0*(\\d{1,2})(?:-0*(\\d{1,2})|)|)/,\n\n // rule_type_if_then: /if ((?:(?:_weekdays)(?:,\\s?)?)*) then/,\n // rule_type_dir: /_days _direction$/,\n // rule_type_bridge: / if .* is .* holiday$/,\n\n space: /^\\s+/\n }\n /* eslint-disable func-call-spacing */\n raw._days = replace(raw._days)\n (/_weekdays/, raw._weekdays)\n ()\n raw.julian = replace(raw.julian, '')\n (/date/, raw.date)\n ()\n raw.easter = replace(raw.easter, '')\n (/_count_days/, raw._count_days)\n ()\n raw.equinox = replace(raw.equinox, '')\n (/_count_days/g, raw._count_days)\n (/_direction/g, raw._direction)\n (/_timezone/g, raw._timezone)\n ()\n raw.hebrew = replace(raw.hebrew, '')\n (/_hebrewMonths/, raw._hebrewMonths)\n ()\n raw.islamic = replace(raw.islamic, '')\n (/_islamicMonths/, raw._islamicMonths)\n ()\n raw.jalaali = replace(raw.jalaali, '')\n (/_jalaaliMonths/, raw._jalaaliMonths)\n ()\n raw.dateMonth = replace(raw.dateMonth)\n (/_months/, raw._months)\n ()\n\n raw.rule_weekday = replace(raw.rule_weekday, '')\n (/_weekdays/g, raw._weekdays)\n ()\n raw.rule_date_if_then = replace(raw.rule_date_if_then, '')\n (/_direction/g, raw._direction)\n (/_weekdays/g, raw._weekdays)\n (/_days/g, raw._days)\n ()\n raw.rule_bridge = replace(raw.rule_bridge, '')\n (/_type/g, raw._type)\n ()\n raw.rule_if_holiday = replace(raw.rule_if_holiday, '')\n (/_type/g, raw._type)\n (/_counts/g, raw._counts)\n (/_direction/g, raw._direction)\n (/_days/g, raw._days)\n (/_weekdays/g, raw._weekdays)\n ()\n raw.rule_day_dir_date = replace(raw.rule_day_dir_date, '')\n (/_counts/, raw._counts)\n (/_days/g, raw._days)\n (/_direction/g, raw._direction)\n ()\n // raw.rule_type_if_then = replace(raw.rule_type_if_then, '')\n // (/_direction/g, raw._direction)\n // (/_days/g, raw._days)\n // ()\n\n let i = 1\n raw.months = {}\n raw._months.split('|').forEach(function (m) {\n raw.months[m] = i++\n })\n\n i = 1\n raw.islamicMonths = {}\n raw._islamicMonths.split('|').forEach(function (m) {\n raw.islamicMonths[m] = i++\n })\n\n i = 1\n raw.hebrewMonths = {}\n raw._hebrewMonths.split('|').forEach(function (m) {\n raw.hebrewMonths[m] = i++\n })\n // parser regex needs larger string before shorter AdarII and Adar pos needs correction\n raw.hebrewMonths.Adar = 12\n raw.hebrewMonths.AdarII = 13\n\n i = 1\n raw.jalaaliMonths = {}\n raw._jalaaliMonths.split('|').forEach(function (m) {\n raw.jalaaliMonths[m] = i++\n })\n\n return raw\n /* eslint-enable */\n})()\n\n// console.log(grammar)\n\nexport default class Parser {\n constructor (fns) {\n this.fns = fns || [\n '_julian',\n '_date',\n '_easter',\n '_islamic',\n '_hebrew',\n '_jalaali',\n '_equinox',\n '_chineseSolar',\n '_chineseLunar',\n '_bengaliRevised',\n '_dateMonth',\n '_ruleDateIfThen',\n '_ruleWeekday',\n '_ruleYear',\n '_ruleDateDir',\n '_ruleIfHoliday',\n '_ruleBridge',\n '_ruleTime',\n '_ruleDuration',\n '_ruleModifier',\n '_ruleSameDay',\n '_ruleActiveFrom',\n '_ruleActiveTo'\n ]\n this.tokens = []\n }\n\n parse (rule) {\n this.setup = { str: rule, rule }\n this.error = 0\n this.tokens = []\n this._tokenize(this.setup)\n this._reorder()\n return this.tokens\n }\n\n /**\n * reorder set of tokens for rule dateDir\n * dateDir: [dateDir2, dateDir1, fn] --> [fn, dateDir1, dateDir2]\n * dateIfThen: [fn, dateIfThen1, dateIfThen2] --> [fn, dateIfThen1, dateIfThen2]\n */\n _reorder () {\n const tmp = []\n const res = []\n\n this.tokens.forEach((token) => {\n if (token.rule === 'dateDir') {\n tmp.push(token)\n } else {\n res.push(token)\n if (tmp.length) {\n while (tmp.length) {\n res.push(tmp.pop())\n }\n }\n }\n\n // no modifiers before a date\n if (token.fn && res[0].modifier) {\n while (res[0].modifier) {\n res.push(res.shift())\n }\n }\n })\n this.tokens = res\n }\n\n _tokenize (o) {\n let last\n while (o.str) {\n for (let i = 0; i < this.fns.length; i++) {\n if (this[this.fns[i]](o)) break\n }\n this._space(o)\n if (last === o.str) {\n this.error++\n break\n }\n last = o.str\n }\n }\n\n _shorten (o, cap0) {\n o.str = o.str.substr(cap0.length, o.str.length)\n }\n\n _date (o) {\n let cap\n if ((cap = grammar.date.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n fn: 'gregorian',\n year: toNumber(cap.shift()),\n month: toNumber(cap.shift()),\n day: toNumber(cap.shift())\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _julian (o) {\n let cap\n if ((cap = grammar.julian.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n fn: 'julian',\n year: toNumber(cap.shift()),\n month: toNumber(cap.shift()),\n day: toNumber(cap.shift())\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _easter (o) {\n let cap\n if ((cap = grammar.easter.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n fn: 'easter',\n type: cap.shift(),\n offset: toNumber(cap.shift()) || 0\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _equinox (o) {\n let cap\n if ((cap = grammar.equinox.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n fn: 'equinox',\n season: cap.shift().toLowerCase(),\n timezone: cap.shift() || 'GMT'\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _hebrew (o) {\n let cap\n\n if ((cap = grammar.hebrew.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n fn: 'hebrew',\n day: toNumber(cap.shift()),\n month: grammar.hebrewMonths[cap.shift()],\n year: toNumber(cap.shift())\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _islamic (o) {\n let cap\n if ((cap = grammar.islamic.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n fn: 'islamic',\n day: toNumber(cap.shift()),\n month: grammar.islamicMonths[cap.shift()],\n year: toNumber(cap.shift())\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _jalaali (o) {\n let cap\n if ((cap = grammar.jalaali.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n fn: 'jalaali',\n day: toNumber(cap.shift()),\n month: grammar.jalaaliMonths[cap.shift()],\n year: toNumber(cap.shift())\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _chineseSolar (o) {\n let cap\n if ((cap = grammar.chineseSolar.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n fn: cap.shift(),\n cycle: toNumber(cap.shift()),\n year: toNumber(cap.shift()),\n solarterm: toNumber(cap.shift()),\n day: toNumber(cap.shift()),\n timezone: cap.shift()\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _chineseLunar (o) {\n let cap\n if ((cap = grammar.chineseLunar.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n fn: cap.shift(),\n cycle: toNumber(cap.shift()),\n year: toNumber(cap.shift()),\n month: toNumber(cap.shift()),\n leapMonth: !!toNumber(cap.shift()),\n day: toNumber(cap.shift()),\n timezone: cap.shift()\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _bengaliRevised (o) {\n let cap\n if ((cap = grammar.bengaliRevised.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n fn: cap.shift(),\n year: toNumber(cap.shift()),\n month: toNumber(cap.shift()),\n day: toNumber(cap.shift())\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _dateMonth (o) {\n let cap\n if ((cap = grammar.dateMonth.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n fn: 'gregorian',\n day: 1,\n month: grammar.months[cap.shift()],\n year: undefined\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _space (o) {\n let cap\n if ((cap = grammar.space.exec(o.str))) {\n this._shorten(o, cap[0])\n return true\n }\n }\n\n _ruleSameDay (o) {\n let cap\n if ((cap = grammar.rule_same_day.exec(o.str))) {\n this._shorten(o, cap[0])\n return true\n }\n }\n\n _ruleModifier (o) {\n let cap\n if ((cap = grammar.modifier.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n modifier: cap.shift()\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _ruleTime (o) {\n let cap\n if ((cap = grammar.time.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n rule: 'time',\n hour: toNumber(cap.shift()) || 0,\n minute: toNumber(cap.shift()) || 0\n }\n res.hour = res.hour || toNumber(cap.shift()) || 0\n this.tokens.push(res)\n return true\n }\n }\n\n _ruleDuration (o) {\n let cap\n if ((cap = grammar.duration.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const tmp = {\n days: toNumber(cap.shift()) || 0,\n hours: toNumber(cap.shift()) || 0,\n minutes: toNumber(cap.shift()) || 0\n }\n const res = {\n rule: 'duration',\n // duration is calculated in hours\n duration: (tmp.days * 24) + tmp.hours + (tmp.minutes / 60)\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _ruleDateIfThen (o) {\n let cap\n if ((cap = grammar.rule_date_if_then.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n rule: 'dateIfThen',\n if: (cap.shift()).split(/(?:,\\s?)/).map(lowerCaseWeekday),\n direction: cap.shift(),\n then: lowerCaseWeekday(cap.shift())\n }\n // create a sub-parser to only check for time, duration\n const p = new Parser(['_ruleTime', '_ruleDuration'])\n p.parse(o.str)\n if (p.tokens.length) {\n res.rules = p.tokens\n }\n o.str = ' ' + p.setup.str // ' ' required such that the _tokenize function finalizes the loop\n this.tokens.push(res)\n return true\n }\n }\n\n _ruleWeekday (o) {\n let cap\n if ((cap = grammar.rule_weekday.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n rule: 'weekday',\n not: !!cap.shift(),\n if: (cap.shift()).split(/(?:,\\s?)/).map(lowerCaseWeekday)\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _ruleDateDir (o) {\n let cap\n if ((cap = grammar.rule_day_dir_date.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n rule: 'dateDir',\n count: toNumber(cap.shift()) || 1,\n weekday: lowerCaseWeekday(cap.shift()),\n direction: cap.shift()\n }\n if (res.direction === 'in') {\n res.direction = 'after'\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _ruleYear (o) {\n let cap\n if ((cap = grammar.rule_year.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n rule: 'year',\n cardinality: cap.shift(),\n every: toNumber(cap.shift()),\n since: toNumber(cap.shift())\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _ruleIfHoliday (o) {\n let cap\n if ((cap = grammar.rule_if_holiday.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n rule: 'ruleIfHoliday',\n type: cap.shift(),\n count: toNumber(cap.shift()) || 1,\n direction: cap.shift(),\n weekday: lowerCaseWeekday(cap.shift()),\n omit: (cap.shift() || '').split(/(?:,\\s?)/).map(lowerCaseWeekdayWithoutDay).filter(Boolean)\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _ruleBridge (o) {\n let cap\n if ((cap = grammar.rule_bridge.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n rule: 'bridge',\n type: cap.shift()\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _ruleActiveFrom (o) {\n let cap\n if ((cap = grammar.rule_active_from.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n rule: 'activeFrom',\n year: toNumber(cap.shift()),\n month: toNumber(cap.shift()) || 1,\n day: toNumber(cap.shift()) || 1\n }\n this.tokens.push(res)\n return true\n }\n }\n\n _ruleActiveTo (o) {\n let cap\n if ((cap = grammar.rule_active_to.exec(o.str))) {\n this._shorten(o, cap[0])\n cap.shift()\n const res = {\n rule: 'activeTo',\n year: toNumber(cap.shift()),\n month: toNumber(cap.shift()) || 1,\n day: toNumber(cap.shift()) || 1\n }\n this.tokens.push(res)\n return true\n }\n }\n}\n","/**\n * handle rule per event\n */\n\nimport CalDate from 'caldate'\nimport { DAYS, isNil } from './internal/utils.js'\n\nexport default class Rule {\n /**\n * @param {CalEvent} [calEvent]\n * @param {array} [holidays]\n */\n constructor (calEvent) {\n this.calEvent = calEvent\n }\n\n /**\n * @param {CalEvent} calEvent\n */\n setEvent (calEvent) {\n this.calEvent = calEvent\n return this\n }\n\n /**\n * @return {CalEvent}\n */\n getEvent () {\n return this.calEvent\n }\n\n /**\n * @param {string} modifier\n */\n setModifier (modifier) {\n this.modifier = modifier\n }\n\n /**\n * resolves rule to function\n * @param {object} rule\n */\n resolve (rule) {\n if (rule.rule &&\n typeof this[rule.rule] === 'function'\n ) {\n this[rule.rule](rule)\n } else if (rule.modifier) {\n this.modifier = rule.modifier\n }\n return this\n }\n\n /**\n * @param {CalEvent} [calEvent]\n * @param {object} rule\n * {\n * rule: \"dateDir\",\n * count: 1,\n * weekday: \"tuesday\",\n * direction: \"after\",\n * omit: ['sunday']\n * }\n */\n dateDir (rule) {\n const omitWeekdays = ([].concat(rule.omit)).map(weekday => DAYS[weekday]).filter(v => !isNil(v))\n\n const isOmitDay = (offset, weekday) => {\n let wd = offset + weekday\n while (wd < 0) { wd += 70 }\n return omitWeekdays.includes(wd % 7)\n }\n\n this.calEvent.dates.forEach((date) => {\n let offset\n let count = rule.count - 1\n const weekday = date.getDay()\n const ruleWeekday = DAYS[rule.weekday]\n\n const isDirBefore = ['before', 'previous'].includes(rule.direction)\n // correct count if weekday is same for next direction\n if (rule.direction === 'next' && weekday === ruleWeekday) {\n count += 1\n }\n\n if (rule.weekday === 'day') {\n let i = 0\n if (isDirBefore) {\n offset = (count + 1) * -1\n while (i++ < 7 && isOmitDay(offset, weekday)) {\n offset -= 1\n }\n } else {\n offset = count + 1\n while (i++ < 7 && isOmitDay(offset, weekday)) {\n offset += 1\n }\n }\n } else {\n if (isDirBefore) {\n if (weekday === ruleWeekday) {\n count++\n }\n offset = ((7 + weekday - ruleWeekday) % 7 + count * 7) * -1\n } else {\n offset = ((7 - weekday + ruleWeekday) % 7 + count * 7)\n }\n }\n if (offset) {\n date.setOffset(offset)\n }\n })\n }\n\n /**\n * @param {object} rule\n * {\n * rule: \"dateIfThen\",\n * if: [\"sunday\"],\n * direction: \"next\",\n * then: \"sunday\"\n * }\n */\n dateIfThen (rule) {\n const dates = []\n\n this.calEvent.dates = this.calEvent.dates.map((date) => {\n if (date._lock) {\n return date\n }\n const weekday = date.getDay()\n if (~(rule.if).indexOf(DAYS[weekday])) {\n if (this.modifier === 'and') {\n dates.push(new CalDate(date))\n date.substitute = true\n }\n date._filter = false\n let offset = 0\n const then = DAYS[rule.then]\n if (rule.then && then !== 'undefined') {\n if (rule.direction === 'previous') {\n offset = -1 * ((7 + weekday - then) % 7)\n if (!offset) {\n offset = -7\n }\n } else {\n offset = ((7 - weekday + then) % 7)\n if (!offset) {\n offset = 7\n }\n }\n date.setOffset(offset)\n date._lock = true\n if (this.modifier === 'substitutes') date.substitute = true\n }\n (rule.rules || []).forEach((rule) => {\n switch (rule.rule) {\n case 'time':\n date.setTime(rule.hour, rule.minute)\n break\n case 'duration':\n date.duration = rule.duration\n break\n }\n })\n } else if (this.modifier === 'substitutes') {\n date._filter = true\n }\n return date\n })\n this.calEvent.dates = dates.concat(this.calEvent.dates)\n }\n\n /**\n * @param {object} rule\n * {\n * rule: \"weekday\",\n * if: [\"sunday\", \"saturday\"],\n * not: false,\n * }\n */\n weekday (rule) {\n this.calEvent.dates = this.calEvent.dates.map((date) => {\n const weekday = date.getDay()\n let match = (rule.if).indexOf(DAYS[weekday]) !== -1\n if (rule.not) match = !match\n if (match) return date\n }).filter(date => date)\n }\n\n time (rule) {\n this.calEvent.dates.forEach((date) => {\n date.setTime(rule.hour, rule.minute)\n })\n }\n\n duration (rule) {\n this.calEvent.dates.forEach((date) => {\n date.duration = rule.duration\n })\n }\n\n bridge () {\n return true // needs postprocessing\n }\n\n ruleIfHoliday () {\n return true // needs postprocessing\n }\n\n activeFrom (rule) {\n this.calEvent.setActive({ from: new CalDate(rule).toDate() })\n }\n\n activeTo (rule) {\n this.calEvent.setActive({ to: new CalDate(rule).toDate() })\n }\n\n /**\n * @param {object} rule\n * {\n * rule: \"year\",\n * cardinality: \"leap\",\n * every: undefined,\n * since: undefined\n * }\n */\n year (rule) {\n this.calEvent.dates = this.calEvent.dates.map((date) => {\n if (rule.cardinality) {\n if (rule.cardinality === 'leap' && this._isLeapYear(date.year)) {\n return date\n } else if (rule.cardinality === 'non-leap' && !this._isLeapYear(date.year)) {\n return date\n } else if (rule.cardinality === 'even' && (date.year + 1) % 2) {\n return date\n } else if (rule.cardinality === 'odd' && date.year % 2) {\n return date\n }\n } else if (rule.every !== undefined && rule.since !== undefined) {\n const tmp = (date.year - rule.since) % rule.every\n if (tmp === 0) {\n return date\n }\n }\n }).filter(date => date)\n }\n\n /**\n * @private\n * @return {Boolean} if true year is a leap year\n */\n _isLeapYear (year) {\n if ((year % 400 === 0) || (year % 4 === 0 && year % 100 !== 0)) {\n return true\n }\n return false\n }\n}\n","import { isDate } from './internal/utils.js'\nimport CalDate from 'caldate'\n\nexport default class CalEvent {\n /**\n * @param {object|Date} opts\n * @param {string} opts.fn function type\n * @param {number} [opts.day]\n * @param {number} [opts.month]\n * @param {number} [opts.year]\n * @param {number} [opts.offset]\n * @param {boolean} [opts.substitute]\n */\n constructor (opts) {\n opts = opts || {}\n this.substitute = opts.substitute\n this.opts = opts\n this.offset = opts.offset\n this.dates = []\n this.active = undefined // active props from prior to rule\n if (isDate(opts)) {\n this.opts = new CalDate(opts)\n }\n }\n\n /**\n * @param {number} year\n * @returns {this}\n */\n inYear (year) {\n const d = (new CalDate(this.opts)).setOffset(this.offset)\n if (!(d.year && d.year !== year)) {\n d.year = year\n this.dates.push(d)\n }\n return this\n }\n\n reset () {\n this.dates = []\n }\n\n /**\n * @param {CalEvent} calEvent\n * @returns {boolean}\n */\n isEqualDate (calEvent) {\n let res = false\n for (const thisDate of this.dates) {\n for (const date of calEvent.dates) {\n res |= thisDate.isEqualDate(date)\n }\n }\n return !!res\n }\n\n /**\n * Filter out disabled dates\n * @param {number} year\n * @param {number} month\n * @returns {this}\n */\n filterDisabled (year, month) {\n if (!year) {\n return this\n }\n\n this.dates = this.dates.filter((date) => {\n const disable = month\n ? date.year === year && date.month === month\n : date.year === year\n return !disable\n })\n\n return this\n }\n\n /**\n * @param {number} year - year to filter\n * @param {object[]} active - definition of active ranges `{from: {Date}, [to]: {Date}}`\n * @return {this} for chaining\n */\n filterActive (year, active = this.active) {\n this.dates = this.dates.filter((date) => {\n if (!date._filter && isActive(date, year, active)) {\n return date\n }\n })\n\n return this\n }\n\n /**\n * @param {object} active\n * @param {Date} [active.from ]\n * @param {Date} [active.to]\n * @returns\n */\n setActive (active) {\n const { from, to } = active\n let pushIt = true\n this.active = this.active || []\n if (to && !from) {\n const last = this.active[this.active.length - 1]\n if (last && last.from && !last.to) {\n last.to = to\n pushIt = false\n }\n }\n if (pushIt) {\n this.active.push(active)\n }\n\n return this\n }\n\n /**\n * @param {CalEvent} calEvent\n */\n push (calEvent) {\n if (calEvent && Array.isArray(calEvent.dates)) {\n this.dates = this.dates.concat(calEvent.dates)\n }\n }\n\n /**\n * @param {string} timezone\n * @returns\n */\n get (timezone) {\n const arr = this.dates.map((date) => {\n const cdate = new CalDate(date)\n const o = {\n date: cdate.toString(),\n start: cdate.toTimezone(timezone),\n end: cdate.toEndDate().toTimezone(timezone)\n }\n this._addSubstitute(date, o)\n return o\n })\n return arr\n }\n\n _addSubstitute (date, obj) {\n if (this.substitute || date.substitute) obj.substitute = true\n }\n}\n\nfunction isActive (date, year, active) {\n if (!active) {\n return date.year === year\n }\n const _date = date.toDate()\n for (const a of active) {\n const { from, to } = a\n if (\n date.year === year &&\n ((from && to && from <= _date && to > _date) ||\n (from && !to && from <= _date) ||\n (!from && to && to > _date))\n ) {\n return true\n }\n }\n}\n","\nimport { get as _get, toNumber } from './utils.js'\nimport Rule from './Rule.js'\nimport CalEvent from './CalEvent.js'\n\nexport default class PostRule {\n /**\n * @param {String} ruleStr\n * @param {Object} opts\n * @param {Array} [holidays]\n */\n constructor (ruleStr, opts, holidays) {\n this.opts = opts\n this.ruleStr = ruleStr\n this.ruleSet = holidays && holidays[ruleStr]\n this.holidays = holidays\n this.events = []\n }\n\n push (calEvent) {\n this.events.push(calEvent)\n }\n\n /**\n * @param {number} year\n * @returns {CalEvent}\n */\n getEvent (year) {\n const active = this.ruleSet && this.ruleSet.active\n this.disable(year)\n const ev = this.events[0]\n ev.filterActive(year, active)\n return ev\n }\n\n /**\n * @param {Array} rule\n * @param {number} year\n */\n resolve (rule, year) {\n if (rule.rule && typeof this[rule.rule] === 'function') {\n this[rule.rule](rule, year)\n }\n }\n\n /**\n * @param {Array} rule\n * @param {number} year\n */\n bridge (rule, year) {\n const found = new Array(this.events.length).fill(false)\n found[0] = true\n const type = rule.type || 'public'\n\n // get all holidays of the given year\n for (const ruleStr in this.holidays) {\n const dateFn = this.holidays[ruleStr].fn\n if (dateFn && dateFn.ruleStr !== this.ruleStr) {\n const tmpEv = dateFn.inYear(year)\n const tmpEvType = _get(tmpEv, 'opts.type') || 'public'\n for (let i = 1; i < this.events.length; i++) {\n if (found[i]) continue\n const isEqualDate = tmpEv.event.isEqualDate(this.events[i])\n if (isEqualDate && tmpEvType === type) {\n found[i] = true\n }\n }\n }\n if (!~found.indexOf(false)) { // pre-exit if all found\n break\n }\n }\n\n if (~found.indexOf(false)) {\n this.events[0].reset()\n }\n }\n\n ruleIfHoliday (rule, year) {\n const type = rule.type || 'public'\n\n // get all holidays of the given year\n for (const ruleStr in this.holidays) {\n const dateFn = this.holidays[ruleStr].fn\n if (dateFn && dateFn.ruleStr !== this.ruleStr) {\n const tmpEv = dateFn.inYear(year)\n const tmpEvType = _get(tmpEv, 'opts.type') || 'public'\n for (let i = 0; i < this.events.length; i++) {\n const isEqualDate = tmpEv.event.isEqualDate(this.events[i])\n if (isEqualDate && tmpEvType === type) {\n new Rule(this.events[i]).resolve({ ...rule, rule: 'dateDir' })\n return\n }\n }\n }\n }\n }\n\n /**\n * @param {number} year\n */\n disable (year) {\n const { disable, enable } = this.opts || {}\n if (!disable || !disable.length) return\n\n const ev = this.events[0]\n\n // check if exact event was disabled or moved\n let tmpEv = _findEventInYear(year, disable)\n if (tmpEv) {\n if (tmpEv.isEqualDate(ev)) {\n ev.reset()\n tmpEv = _findEventInYear(year, enable)\n if (tmpEv) this.events[0] = tmpEv\n }\n return\n }\n\n // simply check if the event can be disabled for year-(month)\n const [_year, _month] = _findDisabled(year, disable)\n ev.filterDisabled(_year, _month)\n }\n}\n\nconst isoDate = (isoDateStr) => String(isoDateStr).split('-').map(v => toNumber(v))\n\nfunction _findEventInYear (_year, arr = []) {\n for (const item of arr) {\n const [year, month, day] = isoDate(item)\n if (year === _year && month && day) {\n return new CalEvent({ year, month, day }).inYear(year)\n }\n }\n}\n\nfunction _findDisabled (_year, arr = []) {\n for (const isoDateStr of arr) {\n const [year, month] = isoDate(isoDateStr)\n if (_year === year) {\n return [year, month]\n }\n }\n return []\n}\n","/**\n * @private\n */\nfunction _toYear (year) {\n if (!year) {\n year = new Date().getFullYear()\n } else if (year instanceof Date) {\n year = year.getFullYear()\n } else if (typeof year === 'string') {\n year = parseInt(year, 10)\n }\n return year\n}\n\nfunction pre (num, l) {\n l = l || 2\n const s = '0000' + num\n return s.substr(s.length - l, l)\n}\n\nexport class EasterDate {\n constructor (year, month, day) {\n this.year = year\n this.month = month\n this.day = day\n }\n\n toString () {\n return [pre(this.year, 4), pre(this.month), pre(this.day)].join('-')\n }\n}\n\n/**\n * from https://de.wikipedia.org/wiki/Gau%C3%9Fsche_Osterformel\n * ergänzte Formel\n */\nfunction _easter (year, julian, gregorian) {\n year = _toYear(year)\n\n const k = Math.floor(year / 100)\n let m = 15 + Math.floor((3 * k + 3) / 4) - Math.floor((8 * k + 13) / 25)\n let s = 2 - Math.floor((3 * k + 3) / 4)\n if (julian) {\n m = 15\n s = 0\n }\n const a = year % 19\n const d = (19 * a + m) % 30\n const r = Math.floor((d + a / 11) / 29)\n const og = 21 + d - r\n const sz = 7 - Math.floor(year + year / 4 + s) % 7\n const oe = 7 - (og - sz) % 7\n let os = og + oe\n if (gregorian) {\n os = os + Math.floor(year / 100) - Math.floor(year / 400) - 2\n }\n // 1 2 3 4 5 6 7 8\n const daysPerMonth = [0, 31, 28, 31, 30, 31, 30, 31, 31]\n let day = os\n let month\n for (month = 3; month < 8; month++) {\n if (day <= daysPerMonth[month]) {\n break\n }\n day -= daysPerMonth[month]\n }\n\n return new EasterDate(year, month, day)\n}\n\n/**\n * Calculate easter sunday in the gregorian calendar\n * @param {Date|Number} year\n * @return {EasterDate}\n */\nexport function gregorianEaster (year) {\n return _easter(year)\n}\n\n/**\n * Calculate easter sunday in the gregorian calendar (Shortcut for\n * `gregorianEaster`)\n * @param {Date|Number} year\n * @return {EasterDate}\n */\nexport const easter = gregorianEaster\n\n/**\n * Calculate easter sunday in the julian calendar\n * @param {Date|Number} year\n * @return {EasterDate}\n */\nexport function julianEaster (year) {\n return _easter(year, true)\n}\n\n/**\n * Orthodox Easter in gregorian calender\n * @param {Date|Number} year\n * @return {EasterDate}\n */\nexport function orthodoxEaster (year) {\n return _easter(year, true, true)\n}\n\nexport default {\n easter,\n gregorianEaster,\n julianEaster,\n orthodoxEaster\n}\n","import easter from 'date-easter'\nimport CalDate from 'caldate'\nimport CalEvent from './CalEvent.js'\n\nexport default class Easter extends CalEvent {\n /**\n * @param {object} [opts]\n * @param {string} opts.type - type of eastern (easter|orthodox)\n * @param {number|string} opts.offset - offset in days\n */\n constructor (opts) {\n opts = opts || {}\n super(opts)\n\n this._fn = easter.easter\n if (opts.type === 'orthodox') {\n this._fn = easter.orthodoxEaster\n }\n }\n\n inYear (year) {\n const d = (new CalDate(this._fn(year))).setOffset(this.offset)\n this.dates.push(d)\n return this\n }\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module base\n */\n/**\n * Base: Functions and other definitions useful with multiple packages.\n *\n * Base contains various definitions and support functions useful in multiple\n * chapters.\n *\n * Bessellian and Julian Year\n *\n * Chapter 21, Precession actually contains these definitions. They are moved\n * here because of their general utility.\n *\n * Chapter 22, Nutation contains the function for Julian centuries since J2000.\n *\n * Phase angle functions\n *\n * Two functions, Illuminated and Limb, concern the illumnated phase of a body\n * and are given in two chapters, 41 an 48. They are collected here because\n * the identical functions apply in both chapters.\n *\n * General purpose math functions\n *\n * SmallAngle is recommended in chapter 17, p. 109.\n *\n * PMod addresses the issue on p. 7, chapter 1, in the section \"Trigonometric\n * functions of large angles\", but the function is not written to be specific\n * to angles and so has more general utility.\n *\n * Horner is described on p. 10, chapter 1.\n *\n * FloorDiv and FloorDiv64 are optimizations for the INT function described\n * on p. 60, chapter 7.\n*/\n\n// ---- constants ----\n\n/** K is the Gaussian gravitational constant. */\nexport const K = 0.01720209895\n// K from ch 33, p. 228, for example\n\n/** AU is one astronomical unit in km. */\nexport const AU = 149597870\n// from Appendix I, p, 407.\n\n/** SOblJ2000 sine obliquity at J2000. */\nexport const SOblJ2000 = 0.397777156\n/** COblJ2000 cosine obliquity at J2000. */\nexport const COblJ2000 = 0.917482062\n// SOblJ2000, COblJ2000 from ch 33, p. 228, for example\n\n/**\n * lightTime returns time for light to travel a given distance.\n * `dist` is distance in to earth in AU. √(x² + y² + z²)\n * Result in seconds of time.\n * @param {Number} dist - distance in to earth in AU\n * @returns {Number} time for light to travel a given distance in seconds\n */\nexport function lightTime (dist) {\n // Formula given as (33.3) p. 224.\n return 0.0057755183 * dist\n}\n\n// ---- julian ----\n\n/**\n * Julian and Besselian years described in chapter 21, Precession.\n * T, Julian centuries since J2000 described in chapter 22, Nutation.\n */\n\n/** JMod is the Julian date of the modified Julian date epoch. */\nexport const JMod = 2400000.5\n\n/** J2000 is the Julian date corresponding to January 1.5, year 2000. */\nexport const J2000 = 2451545.0\n\n// Julian days of common epochs.\n// B1900, B1950 from p. 133\n/** Julian days of Julian epoch 1900 */\nexport const J1900 = 2415020.0\n/** Julian days of Besselian epoch 1900 */\nexport const B1900 = 2415020.3135\n/** Julian days of Besselian epoch 1950 */\nexport const B1950 = 2433282.4235\n\n// JulianYear and other common periods\n/** JulianYear in days */\nexport const JulianYear = 365.25 // days\n/** JulianCentury in days */\nexport const JulianCentury = 36525 // days\n/** BesselianYear in days; equals mean tropical year */\nexport const BesselianYear = 365.2421988 // days\n/** Mean sidereal year */\nexport const meanSiderealYear = 365.25636 // days\n\n/**\n * JulianYearToJDE returns the Julian ephemeris day for a Julian year.\n * @param {Number} jy - Julian year\n * @returns {Number} jde - Julian ephemeris day\n */\nexport function JulianYearToJDE (jy) {\n return J2000 + JulianYear * (jy - 2000)\n}\n\n/**\n * JDEToJulianYear returns a Julian year for a Julian ephemeris day.\n * @param {Number} jde - Julian ephemeris day\n * @returns {Number} jy - Julian year\n */\nexport function JDEToJulianYear (jde) {\n return 2000 + (jde - J2000) / JulianYear\n}\n\n/**\n * BesselianYearToJDE returns the Julian ephemeris day for a Besselian year.\n * @param {Number} by - Besselian year\n * @returns {Number} jde - Julian ephemeris day\n */\nexport function BesselianYearToJDE (by) {\n return B1900 + BesselianYear * (by - 1900)\n}\n\n/**\n * JDEToBesselianYear returns the Besselian year for a Julian ephemeris day.\n * @param {Number} jde - Julian ephemeris day\n * @returns {Number} by - Besselian year\n */\nexport function JDEToBesselianYear (jde) {\n return 1900 + (jde - B1900) / BesselianYear\n}\n\n/**\n * J2000Century returns the number of Julian centuries since J2000.\n *\n * The quantity appears as T in a number of time series.\n * @param {Number} jde - Julian ephemeris day\n * @returns {Number} number of Julian centuries since J2000\n */\nexport function J2000Century (jde) {\n // The formula is given in a number of places in the book, for example\n // (12.1) p. 87.\n // (22.1) p. 143.\n // (25.1) p. 163.\n return (jde - J2000) / JulianCentury\n}\n\n// ---- phase ----\n\n/**\n * illuminated returns the illuminated fraction of a body's disk.\n *\n * The illuminated body can be the Moon or a planet.\n *\n * @param {Number} i - phase angle in radians.\n * @returns {Number} illuminated fraction of a body's disk.\n */\nexport function illuminated (i) {\n // (41.1) p. 283, also (48.1) p. 345.\n return (1 + Math.cos(i)) * 0.5\n}\n\n/**\n * celestial coordinates in right ascension and declination\n * or ecliptic coordinates in longitude and latitude\n */\nexport class Coord {\n /**\n * celestial coordinates in right ascension and declination\n * or ecliptic coordinates in longitude and latitude\n *\n * @param {number} ra - right ascension (or longitude)\n * @param {number} dec - declination (or latitude)\n * @param {number} [range] - distance\n * @param {number} [elongation] - elongation\n */\n constructor (ra, dec, range, elongation) {\n this._ra = ra || 0\n this._dec = dec || 0\n this.range = range\n this.elongation = elongation\n }\n\n /**\n * right ascension\n * @return {number}\n */\n get ra () {\n return this._ra\n }\n\n set ra (ra) {\n this._ra = ra\n }\n\n /**\n * declination\n * @return {number}\n */\n get dec () {\n return this._dec\n }\n\n set dec (dec) {\n this._dec = dec\n }\n\n /**\n * right ascension (or longitude)\n * @return {number}\n */\n get lon () {\n return this._ra\n }\n\n set lon (ra) {\n this._ra = ra\n }\n\n /**\n * declination (or latitude)\n * @return {number}\n */\n get lat () {\n return this._dec\n }\n\n set lat (dec) {\n this._dec = dec\n }\n}\n\n/**\n * Limb returns the position angle of the midpoint of an illuminated limb.\n *\n * The illuminated body can be the Moon or a planet.\n *\n * @param {Coord} equ - equatorial coordinates of the body `{ra, dec}` (in radians)\n * @param {Coord} appSun - apparent coordinates of the Sun `{ra, dec}` (In radians).\n * @returns {Number} position angle of the midpoint (in radians).\n */\nexport function limb (equ, appSun) {\n const α = equ.ra\n const δ = equ.dec\n const α0 = appSun.ra\n const δ0 = appSun.dec\n // Mentioned in ch 41, p. 283. Formula (48.5) p. 346\n const sδ = Math.sin(δ)\n const cδ = Math.cos(δ)\n const sδ0 = Math.sin(δ0)\n const cδ0 = Math.cos(δ0)\n const sα0α = Math.sin(α0 - α)\n const cα0α = Math.cos(α0 - α)\n let χ = Math.atan2(cδ0 * sα0α, (sδ0 * cδ - cδ0 * sδ * cα0α))\n if (χ < 0) {\n χ += 2 * Math.PI\n }\n return χ\n}\n\n// ---- math ----\n\n// In chapter 17, p. 109, Meeus recommends 10′.\n/**\n * SmallAngle is threshold used by various routines for switching between\n * trigonometric functions and Pythagorean approximations.\n */\nexport const SmallAngle = 10 * Math.PI / 180 / 60 // about .003 radians\n/** cosine of SmallAngle */\nexport const CosSmallAngle = Math.cos(SmallAngle) // about .999996\n\n/**\n * pmod returns a positive floating-point x mod y.\n *\n * For a positive argument y, it returns a value in the range [0,y).\n *\n * @param {Number} x\n * @param {Number} y\n * @returns {Number} x % y - The result may not be useful if y is negative.\n */\nexport function pmod (x, y) {\n let r = x % y\n if (r < 0) {\n r += y\n }\n return r\n}\n\n/**\n * horner evaluates a polynomal with coefficients c at x. The constant\n * term is c[0].\n * @param {Number} x\n * @param {Number[]} c - coefficients; c[0] may be of type Number[]\n * @returns {Number}\n */\nexport function horner (x, ...c) {\n if (Array.isArray(c[0])) {\n c = c[0]\n }\n let i = c.length - 1\n let y = c[i]\n while (i > 0) {\n i--\n y = y * x + c[i]\n }\n return y\n}\n\n/**\n * FloorDiv returns the integer floor of the fractional value (x / y).\n * @param {Number} x\n * @param {Number} y\n * @returns {Number} (int)\n */\nexport function floorDiv (x, y) {\n const q = x / y\n return Math.floor(q)\n}\n\n/**\n * Cmp compares two float64s and returns -1, 0, or 1 if a is <, ==, or > b,\n * respectively.\n * .\n * @param {Number} a\n * @param {Number} b\n * @returns {Number} comparison result\n */\nexport function cmp (a, b) {\n if (a < b) return -1\n if (a > b) return 1\n return 0\n}\n\n/**\n * shorthand function for Math.sin, Math.cos\n * @param {Number} ε\n * @returns {Number[]} [sin(ε), cos(ε)]\n */\nexport function sincos (ε) {\n return [Math.sin(ε), Math.cos(ε)]\n}\n\n/**\n * Convert degrees to radians\n * @param {Number} deg - Angle in degrees\n * @return {Number} Angle in radians\n */\nexport function toRad (deg) {\n return (Math.PI / 180.0) * deg\n}\n\n/**\n * Convert radians to degrees\n * @param {Number} rad - Angle in radians\n * @return {Number} Angle in degrees\n */\nexport function toDeg (rad) {\n return (180.0 / Math.PI) * rad\n}\n\n/**\n * separate fix `i` from fraction `f`\n * @param {Number} float\n * @returns {Array} [i, f]\n * {Number} i - (int) fix value\n * {Number} f - (float) fractional portion; always > 1\n */\nexport function modf (float) {\n const i = Math.trunc(float)\n const f = Math.abs(float - i)\n return [i, f]\n}\n\n/**\n * Rounds `float` value by precision\n * @param {Number} float - value to round\n * @param {Number} [precision] - (int) number of post decimal positions\n * @return {Number} rounded `float`\n */\nexport function round (float, precision = 14) {\n return parseFloat(float.toFixed(precision))\n}\n\nexport function errorCode (msg, code) {\n const err = new Error(msg)\n // @ts-ignore\n err.code = code\n return err\n}\n\nexport default {\n K,\n AU,\n SOblJ2000,\n COblJ2000,\n lightTime,\n JMod,\n J2000,\n J1900,\n B1900,\n B1950,\n JulianYear,\n JulianCentury,\n BesselianYear,\n meanSiderealYear,\n JulianYearToJDE,\n JDEToJulianYear,\n BesselianYearToJDE,\n JDEToBesselianYear,\n J2000Century,\n illuminated,\n Coord,\n limb,\n SmallAngle,\n CosSmallAngle,\n pmod,\n horner,\n floorDiv,\n cmp,\n sincos,\n toRad,\n toDeg,\n modf,\n round,\n errorCode\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module interpolation\n */\n/**\n * Interp: Chapter 3, Interpolation.\n *\n * Len3 and Len5 types\n *\n * These types allow interpolation from a table of equidistant x values\n * and corresponding y values. Since the x values are equidistant,\n * only the first and last values are supplied as arguments to the\n * constructors. The interior x values are implicit. All y values must be\n * supplied however. They are passed as a slice, and the length of y is fixed.\n * For Len3 it must be 3 and for (Len5 it must be 5.0\n *\n * For these Len3 and Len5 functions, Meeus notes the importance of choosing\n * the 3 or 5 rows of a larger table that will minimize the interpolating\n * factor n. He does not provide algorithms for doing this however.\n *\n * For an example of a selection function, see len3ForInterpolateX. This\n * was useful for computing Delta T.\n */\nimport base from './base.js'\n\nconst int = Math.trunc\n\n/**\n * Error values returned by functions and methods in this package.\n * Defined here to help testing for specific errors.\n */\nexport const errorNot3 = new Error('Argument y must be length 3')\nexport const errorNot4 = new Error('Argument y must be length 4')\nexport const errorNot5 = new Error('Argument y must be length 5')\nexport const errorNoXRange = new Error('Argument x3 (or x5) cannot equal x1')\nexport const errorNOutOfRange = new Error('Interpolating factor n must be in range -1 to 1')\nexport const errorNoExtremum = new Error('No extremum in table')\nexport const errorExtremumOutside = new Error('Extremum falls outside of table')\nexport const errorZeroOutside = new Error('Zero falls outside of table')\nexport const errorNoConverge = new Error('Failure to converge')\n\n/**\n * Len3 allows second difference interpolation.\n */\nexport class Len3 {\n /**\n * NewLen3 prepares a Len3 object from a table of three rows of x and y values.\n *\n * X values must be equally spaced, so only the first and last are supplied.\n * X1 must not equal to x3. Y must be a slice of three y values.\n *\n * @throws Error\n * @param {Number} x1 - is the x value corresponding to the first y value of the table.\n * @param {Number} x3 - is the x value corresponding to the last y value of the table.\n * @param {Number[]} y - is all y values in the table. y.length should be >= 3.0\n */\n constructor (x1, x3, y) {\n if (y.length !== 3) {\n throw errorNot3\n }\n if (x3 === x1) {\n throw errorNoXRange\n }\n this.x1 = x1\n this.x3 = x3\n this.y = y\n // differences. (3.1) p. 23\n this.a = y[1] - y[0]\n this.b = y[2] - y[1]\n this.c = this.b - this.a\n // other intermediate values\n this.abSum = this.a + this.b\n this.xSum = x3 + x1\n this.xDiff = x3 - x1\n }\n\n /**\n * InterpolateX interpolates for a given x value.\n */\n interpolateX (x) {\n const n = (2 * x - this.xSum) / this.xDiff\n return this.interpolateN(n)\n }\n\n /**\n * InterpolateXStrict interpolates for a given x value,\n * restricting x to the range x1 to x3 given to the constructor NewLen3.\n */\n interpolateXStrict (x) {\n const n = (2 * x - this.xSum) / this.xDiff\n const y = this.interpolateNStrict(n)\n return y\n }\n\n /**\n * InterpolateN interpolates for (a given interpolating factor n.\n *\n * This is interpolation formula (3.3)\n *\n * @param n - The interpolation factor n is x-x2 in units of the tabular x interval.\n * (See Meeus p. 24.)\n * @return {number} interpolation value\n */\n interpolateN (n) {\n return this.y[1] + n * 0.5 * (this.abSum + n * this.c)\n }\n\n /**\n * InterpolateNStrict interpolates for (a given interpolating factor n.\n *\n * @param {number} n - n is restricted to the range [-1..1] corresponding to the range x1 to x3\n * given to the constructor of Len3.\n * @return {number} interpolation value\n */\n interpolateNStrict (n) {\n if (n < -1 || n > 1) {\n throw errorNOutOfRange\n }\n return this.interpolateN(n)\n }\n\n /**\n * Extremum returns the x and y values at the extremum.\n *\n * Results are restricted to the range of the table given to the constructor\n * new Len3.\n */\n extremum () {\n if (this.c === 0) {\n throw errorNoExtremum\n }\n const n = this.abSum / (-2 * this.c) // (3.5), p. 25\n if (n < -1 || n > 1) {\n throw errorExtremumOutside\n }\n const x = 0.5 * (this.xSum + this.xDiff * n)\n const y = this.y[1] - (this.abSum * this.abSum) / (8 * this.c) // (3.4), p. 25\n return [x, y]\n }\n\n /**\n * Len3Zero finds a zero of the quadratic function represented by the table.\n *\n * That is, it returns an x value that yields y=0.\n *\n * Argument strong switches between two strategies for the estimation step.\n * when iterating to converge on the zero.\n *\n * Strong=false specifies a quick and dirty estimate that works well\n * for gentle curves, but can work poorly or fail on more dramatic curves.\n *\n * Strong=true specifies a more sophisticated and thus somewhat more\n * expensive estimate. However, if the curve has quick changes, This estimate\n * will converge more reliably and in fewer steps, making it a better choice.\n *\n * Results are restricted to the range of the table given to the constructor\n * NewLen3.\n */\n zero (strong) {\n let f\n if (strong) {\n // (3.7), p. 27\n f = (n0) => {\n return n0 - (2 * this.y[1] + n0 * (this.abSum + this.c * n0)) /\n (this.abSum + 2 * this.c * n0)\n }\n } else {\n // (3.6), p. 26\n f = (n0) => {\n return -2 * this.y[1] / (this.abSum + this.c * n0)\n }\n }\n const [n0, ok] = iterate(0, f)\n if (!ok) {\n throw errorNoConverge\n }\n if (n0 > 1 || n0 < -1) {\n throw errorZeroOutside\n }\n return 0.5 * (this.xSum + this.xDiff * n0) // success\n }\n}\n\n/**\n * Len3ForInterpolateX is a special purpose Len3 constructor.\n *\n * Like NewLen3, it takes a table of x and y values, but it is not limited\n * to tables of 3 rows. An X value is also passed that represents the\n * interpolation target x value. Len3ForInterpolateX will locate the\n * appropriate three rows of the table for interpolating for x, and initialize\n * the Len3 object for those rows.\n *\n * @param {Number} x - is the target for interpolation\n * @param {Number} x1 - is the x value corresponding to the first y value of the table.\n * @param {Number} xN - is the x value corresponding to the last y value of the table.\n * @param {Number[]} y - is all y values in the table. y.length should be >= 3.0\n * @returns {Len3} interpolation value\n */\nexport function len3ForInterpolateX (x, x1, xN, y) {\n let y3 = y\n if (y.length > 3) {\n const interval = (xN - x1) / (y.length - 1)\n if (interval === 0) {\n throw errorNoXRange\n }\n let nearestX = int((x - x1) / interval + 0.5)\n if (nearestX < 1) {\n nearestX = 1\n } else if (nearestX > y.length - 2) {\n nearestX = y.length - 2\n }\n y3 = y.slice(nearestX - 1, nearestX + 2)\n xN = x1 + (nearestX + 1) * interval\n x1 = x1 + (nearestX - 1) * interval\n }\n return new Len3(x1, xN, y3)\n}\n\n/**\n * @private\n * @param {Number} n0\n * @param {Function} f\n * @returns {Array}\n * {Number} n1\n * {Boolean} ok - if `false` failure to converge\n */\nexport const iterate = function (n0, f) {\n for (let limit = 0; limit < 50; limit++) {\n const n1 = f(n0)\n if (!isFinite(n1) || isNaN(n1)) {\n break // failure to converge\n }\n if (Math.abs((n1 - n0) / n0) < 1e-15) {\n return [n1, true] // success\n }\n n0 = n1\n }\n return [0, false] // failure to converge\n}\n\n/**\n * Len4Half interpolates a center value from a table of four rows.\n * @param {Number[]} y - 4 values\n * @returns {Number} interpolation result\n */\nexport function len4Half (y) {\n if (y.length !== 4) {\n throw errorNot4\n }\n // (3.12) p. 32\n return (9 * (y[1] + y[2]) - y[0] - y[3]) / 16\n}\n\n/**\n * Len5 allows fourth Difference interpolation.\n */\nexport class Len5 {\n /**\n * NewLen5 prepares a Len5 object from a table of five rows of x and y values.\n *\n * X values must be equally spaced, so only the first and last are suppliethis.\n * X1 must not equal x5. Y must be a slice of five y values.\n */\n constructor (x1, x5, y) {\n if (y.length !== 5) {\n throw errorNot5\n }\n if (x5 === x1) {\n throw errorNoXRange\n }\n this.x1 = x1\n this.x5 = x5\n this.y = y\n this.y3 = y[2]\n // differences\n this.a = y[1] - y[0]\n this.b = y[2] - y[1]\n this.c = y[3] - y[2]\n this.d = y[4] - y[3]\n\n this.e = this.b - this.a\n this.f = this.c - this.b\n this.g = this.d - this.c\n\n this.h = this.f - this.e\n this.j = this.g - this.f\n\n this.k = this.j - this.h\n // other intermediate values\n this.xSum = x5 + x1\n this.xDiff = x5 - x1\n this.interpCoeff = [ // (3.8) p. 28\n this.y3,\n (this.b + this.c) / 2 - (this.h + this.j) / 12,\n this.f / 2 - this.k / 24,\n (this.h + this.j) / 12,\n this.k / 24\n ]\n }\n\n /**\n * InterpolateX interpolates for (a given x value.\n */\n interpolateX (x) {\n const n = (4 * x - 2 * this.xSum) / this.xDiff\n return this.interpolateN(n)\n }\n\n /**\n * InterpolateXStrict interpolates for a given x value,\n * restricting x to the range x1 to x5 given to the the constructor NewLen5.\n */\n interpolateXStrict (x) {\n const n = (4 * x - 2 * this.xSum) / this.xDiff\n const y = this.interpolateNStrict(n)\n return y\n }\n\n /**\n * InterpolateN interpolates for (a given interpolating factor n.\n *\n * The interpolation factor n is x-x3 in units of the tabular x interval.\n * (See Meeus p. 28.)\n */\n interpolateN (n) {\n return base.horner(n, ...this.interpCoeff)\n }\n\n /**\n * InterpolateNStrict interpolates for (a given interpolating factor n.\n *\n * N is restricted to the range [-1..1]. This is only half the range given\n * to the constructor NewLen5, but is the recommendation given on p. 31.0\n */\n interpolateNStrict (n) {\n if (n < -1 || n > 1) {\n throw errorNOutOfRange\n }\n return base.horner(n, ...this.interpCoeff)\n }\n\n /**\n * Extremum returns the x and y values at the extremum.\n *\n * Results are restricted to the range of the table given to the constructor\n * NewLen5. (Meeus actually recommends restricting the range to one unit of\n * the tabular interval, but that seems a little harsh.)\n */\n extremum () {\n // (3.9) p. 29\n const nCoeff = [\n 6 * (this.b + this.c) - this.h - this.j,\n 0,\n 3 * (this.h + this.j),\n 2 * this.k\n ]\n const den = this.k - 12 * this.f\n if (den === 0) {\n throw errorExtremumOutside\n }\n const [n0, ok] = iterate(0, function (n0) {\n return base.horner(n0, ...nCoeff) / den\n })\n if (!ok) {\n throw errorNoConverge\n }\n if (n0 < -2 || n0 > 2) {\n throw errorExtremumOutside\n }\n const x = 0.5 * this.xSum + 0.25 * this.xDiff * n0\n const y = base.horner(n0, ...this.interpCoeff)\n return [x, y]\n }\n\n /**\n * Len5Zero finds a zero of the quartic function represented by the table.\n *\n * That is, it returns an x value that yields y=0.\n *\n * Argument strong switches between two strategies for the estimation step.\n * when iterating to converge on the zero.\n *\n * Strong=false specifies a quick and dirty estimate that works well\n * for gentle curves, but can work poorly or fail on more dramatic curves.\n *\n * Strong=true specifies a more sophisticated and thus somewhat more\n * expensive estimate. However, if the curve has quick changes, This estimate\n * will converge more reliably and in fewer steps, making it a better choice.\n *\n * Results are restricted to the range of the table given to the constructor\n * NewLen5.\n */\n zero (strong) {\n let f\n if (strong) {\n // (3.11), p. 29\n const M = this.k / 24\n const N = (this.h + this.j) / 12\n const P = this.f / 2 - M\n const Q = (this.b + this.c) / 2 - N\n const numCoeff = [this.y3, Q, P, N, M]\n const denCoeff = [Q, 2 * P, 3 * N, 4 * M]\n f = function (n0) {\n return n0 -\n base.horner(n0, ...numCoeff) / base.horner(n0, ...denCoeff)\n }\n } else {\n // (3.10), p. 29\n const numCoeff = [\n -24 * this.y3,\n 0,\n this.k - 12 * this.f,\n -2 * (this.h + this.j),\n -this.k\n ]\n const den = 12 * (this.b + this.c) - 2 * (this.h + this.j)\n f = function (n0) {\n return base.horner(n0, ...numCoeff) / den\n }\n }\n const [n0, ok] = iterate(0, f)\n if (!ok) {\n throw errorNoConverge\n }\n if (n0 > 2 || n0 < -2) {\n throw errorZeroOutside\n }\n const x = 0.5 * this.xSum + 0.25 * this.xDiff * n0\n return x\n }\n}\n\n/**\n * Lagrange performs interpolation with unequally-spaced abscissae.\n *\n * Given a table of X and Y values, interpolate a new y value for argument x.\n *\n * X values in the table do not have to be equally spaced; they do not even\n * have to be in order. They must however, be distinct.\n *\n * @param {Number} x - x-value of interpolation\n * @param {Array} table - `[[x0, y0], ... [xN, yN]]` of x, y values\n * @returns {Number} interpolation result `y` of `x`\n */\nexport function lagrange (x, table) {\n // method of BASIC program, p. 33.0\n let sum = 0\n table.forEach((ti, i) => {\n const xi = ti[0]\n let prod = 1.0\n table.forEach((tj, j) => {\n if (i !== j) {\n const xj = tj[0]\n prod *= (x - xj) / (xi - xj)\n }\n })\n sum += ti[1] * prod\n })\n return sum\n}\n\n/**\n * LagrangePoly uses the formula of Lagrange to produce an interpolating\n * polynomial.\n *\n * X values in the table do not have to be equally spaced; they do not even\n * have to be in order. They must however, be distinct.\n *\n * The returned polynomial will be of degree n-1 where n is the number of rows\n * in the table. It can be evaluated for x using base.horner.\n *\n * @param {Array} table - `[[x0, y0], ... [xN, yN]]`\n * @returns {Array} - polynomial array\n */\nexport function lagrangePoly (table) {\n // Method not fully described by Meeus, but needed for (numerical solution\n // to Example 3.g.\n const sum = new Array(table.length).fill(0)\n const prod = new Array(table.length).fill(0)\n const last = table.length - 1\n for (let i = 0; i < table.length; i++) {\n const xi = table[i][0] || table[i].x || 0\n const yi = table[i][1] || table[i].y || 0\n prod[last] = 1\n let den = 1.0\n let n = last\n for (let j = 0; j < table.length; j++) {\n if (i !== j) {\n const xj = table[j][0] || table[j].x || 0\n prod[n - 1] = prod[n] * -xj\n for (let k = n; k < last; k++) {\n prod[k] -= prod[k + 1] * xj\n }\n n--\n den *= (xi - xj)\n }\n }\n prod.forEach((pj, j) => {\n sum[j] += yi * pj / den\n })\n }\n return sum\n}\n\n/**\n * Linear Interpolation of x\n */\nexport function linear (x, x1, xN, y) {\n const interval = (xN - x1) / (y.length - 1)\n if (interval === 0) {\n throw errorNoXRange\n }\n let nearestX = Math.floor((x - x1) / interval)\n if (nearestX < 0) {\n nearestX = 0\n } else if (nearestX > y.length - 2) {\n nearestX = y.length - 2\n }\n const y2 = y.slice(nearestX, nearestX + 2)\n const x01 = x1 + nearestX * interval\n return y2[0] + (y[1] - y[0]) * (x - x01) / interval\n}\n\nexport default {\n errorNot3,\n errorNot4,\n errorNot5,\n errorNoXRange,\n errorNOutOfRange,\n errorNoExtremum,\n errorExtremumOutside,\n errorZeroOutside,\n errorNoConverge,\n Len3,\n len3ForInterpolateX,\n iterate,\n len4Half,\n Len5,\n lagrange,\n lagrangePoly,\n linear\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module angle\n */\n/**\n * Angle: Chapter 17: Angular Separation.\n *\n * Functions in this package are useful for Ecliptic, Equatorial, or any\n * similar coordinate frame. To avoid suggestion of a particular frame,\n * function parameters are specified simply as \"r1, d1\" to correspond to a\n * right ascenscion, declination pair or to a longitude, latitude pair.\n *\n * In function Sep, Meeus recommends 10 arc min as a threshold. This\n * value is in package base as base.SmallAngle because it has general utility.\n *\n * All angles are in radians.\n */\n\nimport base, { Coord } from './base.js' // eslint-disable-line no-unused-vars\nimport interp from './interpolation.js'\nconst { abs, acos, asin, atan2, cos, hypot, sin, sqrt, tan } = Math\n\n/**\n * `sep` returns the angular separation between two celestial bodies.\n *\n * The algorithm is numerically naïve, and while patched up a bit for\n * small separations, remains unstable for separations near π.\n *\n * @param {Coord} c1 - coordinate of celestial body 1\n * @param {Coord} c2 - coordinate of celestial body 2\n * @return {Number} angular separation between two celestial bodies\n */\nexport function sep (c1, c2) {\n const [sind1, cosd1] = base.sincos(c1.dec)\n const [sind2, cosd2] = base.sincos(c2.dec)\n const cd = sind1 * sind2 + cosd1 * cosd2 * cos(c1.ra - c2.ra) // (17.1) p. 109\n if (cd < base.CosSmallAngle) {\n return acos(cd)\n } else {\n const cosd = cos((c2.dec + c1.dec) / 2) // average dec of two bodies\n return hypot((c2.ra - c1.ra) * cosd, c2.dec - c1.dec) // (17.2) p. 109\n }\n}\n\n/**\n * `minSep` returns the minimum separation between two moving objects.\n *\n * The motion is represented as an ephemeris of three rows, equally spaced\n * in time. Jd1, jd3 are julian day times of the first and last rows.\n * R1, d1, r2, d2 are coordinates at the three times. They must each be\n * slices of length 3.0\n *\n * Result is obtained by computing separation at each of the three times\n * and interpolating a minimum. This may be invalid for sufficiently close\n * approaches.\n *\n * @throws Error\n * @param {Number} jd1 - Julian day - time at cs1[0], cs2[0]\n * @param {Number} jd3 - Julian day - time at cs1[2], cs2[2]\n * @param {Coord[]} cs1 - 3 coordinates of moving object 1\n * @param {Coord[]} cs2 - 3 coordinates of moving object 2\n * @param {function} [fnSep] - alternative `sep` function e.g. `angle.sepPauwels`, `angle.sepHav`\n * @return {Number} angular separation between two celestial bodies\n */\nexport function minSep (jd1, jd3, cs1, cs2, fnSep) {\n fnSep = fnSep || sep\n if (cs1.length !== 3 || cs2.length !== 3) {\n throw interp.errorNot3\n }\n const y = new Array(3)\n cs1.forEach((c, x) => {\n y[x] = sep(cs1[x], cs2[x])\n })\n const d3 = new interp.Len3(jd1, jd3, y)\n const dMin = d3.extremum()[1]\n return dMin\n}\n\n/**\n * `minSepRect` returns the minimum separation between two moving objects.\n *\n * Like `minSep`, but using a method of rectangular coordinates that gives\n * accurate results even for close approaches.\n *\n * @throws Error\n * @param {Number} jd1 - Julian day - time at cs1[0], cs2[0]\n * @param {Number} jd3 - Julian day - time at cs1[2], cs2[2]\n * @param {Coord[]} cs1 - 3 coordinates of moving object 1\n * @param {Coord[]} cs2 - 3 coordinates of moving object 2\n * @return {Number} angular separation between two celestial bodies\n */\nexport function minSepRect (jd1, jd3, cs1, cs2) {\n if (cs1.length !== 3 || cs2.length !== 3) {\n throw interp.ErrorNot3\n }\n const uv = function (c1, c2) {\n const [sind1, cosd1] = base.sincos(c1.dec)\n const Δr = c2.ra - c1.ra\n const tanΔr = tan(Δr)\n const tanhΔr = tan(Δr / 2)\n const K = 1 / (1 + sind1 * sind1 * tanΔr * tanhΔr)\n const sinΔd = sin(c2.dec - c1.dec)\n const u = -K * (1 - (sind1 / cosd1) * sinΔd) * cosd1 * tanΔr\n const v = K * (sinΔd + sind1 * cosd1 * tanΔr * tanhΔr)\n return [u, v]\n }\n const us = new Array(3).fill(0)\n const vs = new Array(3).fill(0)\n cs1.forEach((c, x) => {\n [us[x], vs[x]] = uv(cs1[x], cs2[x])\n })\n const u3 = new interp.Len3(-1, 1, us) // if line throws then bug not caller's fault.\n const v3 = new interp.Len3(-1, 1, vs) // if line throws then bug not caller's fault.\n const up0 = (us[2] - us[0]) / 2\n const vp0 = (vs[2] - vs[0]) / 2\n const up1 = us[0] + us[2] - 2 * us[1]\n const vp1 = vs[0] + vs[2] - 2 * vs[1]\n const up = up0\n const vp = vp0\n let dn = -(us[1] * up + vs[1] * vp) / (up * up + vp * vp)\n let n = dn\n let u\n let v\n for (let limit = 0; limit < 10; limit++) {\n u = u3.interpolateN(n)\n v = v3.interpolateN(n)\n if (abs(dn) < 1e-5) {\n return hypot(u, v) // success\n }\n const up = up0 + n * up1\n const vp = vp0 + n * vp1\n dn = -(u * up + v * vp) / (up * up + vp * vp)\n n += dn\n }\n throw new Error('minSepRect: failure to converge')\n}\n\n/**\n * haversine function (17.5) p. 115\n */\nexport function hav (a) {\n return 0.5 * (1 - Math.cos(a))\n}\n\n/**\n * `sepHav` returns the angular separation between two celestial bodies.\n *\n * The algorithm uses the haversine function and is superior to the naïve\n * algorithm of the Sep function.\n *\n * @param {Coord} c1 - coordinate of celestial body 1\n * @param {Coord} c2 - coordinate of celestial body 2\n * @return {Number} angular separation between two celestial bodies\n */\nexport function sepHav (c1, c2) {\n // using (17.5) p. 115\n return 2 * asin(sqrt(hav(c2.dec - c1.dec) +\n cos(c1.dec) * cos(c2.dec) * hav(c2.ra - c1.ra)))\n}\n\n/**\n * Same as `minSep` but uses function `sepHav` to return the minimum separation\n * between two moving objects.\n */\nexport function minSepHav (jd1, jd3, cs1, cs2) {\n return minSep(jd1, jd3, cs1, cs2, sepHav)\n}\n\n/**\n * `sepPauwels` returns the angular separation between two celestial bodies.\n *\n * The algorithm is a numerically stable form of that used in `sep`.\n *\n * @param {Coord} c1 - coordinate of celestial body 1\n * @param {Coord} c2 - coordinate of celestial body 2\n * @return {Number} angular separation between two celestial bodies\n */\nexport function sepPauwels (c1, c2) {\n const [sind1, cosd1] = base.sincos(c1.dec)\n const [sind2, cosd2] = base.sincos(c2.dec)\n const cosdr = cos(c2.ra - c1.ra)\n const x = cosd1 * sind2 - sind1 * cosd2 * cosdr\n const y = cosd2 * sin(c2.ra - c1.ra)\n const z = sind1 * sind2 + cosd1 * cosd2 * cosdr\n return atan2(hypot(x, y), z)\n}\n\n/**\n * Same as `minSep` but uses function `sepPauwels` to return the minimum\n * separation between two moving objects.\n */\nexport function minSepPauwels (jd1, jd3, cs1, cs2) {\n return minSep(jd1, jd3, cs1, cs2, sepPauwels)\n}\n\n/**\n * RelativePosition returns the position angle of one body with respect to\n * another.\n *\n * The position angle result `p` is measured counter-clockwise from North.\n * If negative then `p` is in the range of 90° ... 270°\n *\n * ````\n * North\n * |\n * (p) ..|\n * . |\n * V |\n * c1 x------------x c2\n * |\n * ````\n *\n * @param {Coord} c1 - coordinate of celestial body 1\n * @param {Coord} c2 - coordinate of celestial body 2\n * @return {Number} position angle (p)\n */\nexport function relativePosition (c1, c2) {\n const [sinΔr, cosΔr] = base.sincos(c1.ra - c2.ra)\n const [sind2, cosd2] = base.sincos(c2.dec)\n const p = atan2(sinΔr, cosd2 * tan(c1.dec) - sind2 * cosΔr)\n return p\n}\n\nexport default {\n sep,\n minSep,\n minSepRect,\n hav,\n sepHav,\n minSepHav,\n sepPauwels,\n minSepPauwels,\n relativePosition\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module sexagesimal\n */\n/**\n * Sexagesimal functions\n */\n\n/**\n * Angle represents a general purpose angle.\n * Unit is radians.\n */\nexport class Angle {\n /**\n * constructs a new Angle value from sign, degree, minute, and second\n * components.\n * @param {Number|Boolean} angleOrNeg - angle in radians or sign, true if negative (required to attribute -0°30')\n * __Four arguments__\n * @param {Number} [d] - (int) degree\n * @param {Number} [m] - (int) minute\n * @param {Number} [s] - (float) second\n */\n constructor (angleOrNeg, d, m, s) {\n if (arguments.length === 1) {\n this.angle = Number(angleOrNeg)\n } else {\n this.setDMS(!!angleOrNeg, d, m, s)\n }\n }\n\n /**\n * SetDMS sets the value of an FAngle from sign, degree, minute, and second\n * components.\n * The receiver is returned as a convenience.\n * @param {Boolean} neg - sign, true if negative\n * @param {Number} d - (int) degree\n * @param {Number} m - (int) minute\n * @param {Number} s - (float) second\n * @returns {Angle}\n */\n setDMS (neg = false, d = 0, m = 0, s = 0.0) {\n this.angle = (DMSToDeg(neg, d, m, s) * Math.PI / 180)\n return this\n }\n\n /**\n * sets angle\n * @param {Number} angle - (float) angle in radians\n * @returns {Angle}\n */\n setAngle (angle) {\n this.angle = angle\n return this\n }\n\n /**\n * Rad returns the angle in radians.\n * @returns {Number} angle in radians\n */\n rad () {\n return this.angle\n }\n\n /**\n * Deg returns the angle in degrees.\n * @returns {Number} angle in degree\n */\n deg () {\n return this.angle * 180 / Math.PI\n }\n\n /**\n * toDMS converts to parsed sexagesimal angle component.\n */\n toDMS () {\n return degToDMS(this.deg())\n }\n\n /**\n * Print angle in degree using `d°m´s.ss″`\n * @param {Number} [precision] - precision of `s.ss`\n * @returns {String}\n */\n toString (precision) {\n let [neg, d, m, s] = this.toDMS()\n s = round(s, precision).toString().replace(/^0\\./, '.')\n const str = (neg ? '-' : '') +\n (d + '°') +\n (m + '′') +\n (s + '″')\n return str\n }\n\n /**\n * Print angle in degree using `d°.ff`\n * @param {Number} [precision] - precision of `.ff`\n * @returns {String}\n */\n toDegString (precision) {\n let [i, s] = modf(this.deg())\n s = round(s, precision).toString().replace(/^0\\./, '.')\n const str = (i + '°') + s\n return str\n }\n}\n\n/**\n * HourAngle represents an angle corresponding to angular rotation of\n * the Earth in a specified time.\n *\n * Unit is radians.\n */\nexport class HourAngle extends Angle {\n /**\n * NewHourAngle constructs a new HourAngle value from sign, hour, minute,\n * and second components.\n * @param {Boolean} neg\n * @param {Number} h - (int)\n * @param {Number} m - (int)\n * @param {Number} s - (float)\n * @constructor\n */\n\n /**\n * SetDMS sets the value of an FAngle from sign, degree, minute, and second\n * components.\n * The receiver is returned as a convenience.\n * @param {Boolean} neg - sign, true if negative\n * @param {Number} h - (int) hour\n * @param {Number} m - (int) minute\n * @param {Number} s - (float) second\n * @returns {Angle}\n */\n setDMS (neg = false, h = 0, m = 0, s = 0.0) {\n this.angle = (DMSToDeg(neg, h, m, s) * 15 * Math.PI / 180)\n return this\n }\n\n /**\n * Hour returns the hour angle as hours of time.\n * @returns hour angle\n */\n hour () {\n return this.angle * 12 / Math.PI // 12 = 180 / 15\n }\n\n deg () {\n return this.hour()\n }\n\n /**\n * Print angle in `HʰMᵐs.ssˢ`\n * @param {Number} precision - precision of `s.ss`\n * @returns {String}\n */\n toString (precision) {\n let [neg, h, m, s] = this.toDMS()\n s = round(s, precision).toString().replace(/^0\\./, '.')\n const str = (neg ? '-' : '') +\n (h + 'ʰ') +\n (m + 'ᵐ') +\n (s + 'ˢ')\n return str\n }\n}\n\n/**\n * DMSToDeg converts from parsed sexagesimal angle components to decimal\n * degrees.\n * @param {Boolean} neg - sign, true if negative\n * @param {Number} d - (int) degree\n * @param {Number} m - (int) minute\n * @param {Number} s - (float) second\n * @returns {Number} angle in degree\n */\nexport function DMSToDeg (neg, d, m, s) {\n s = (((d * 60 + m) * 60) + s) / 3600\n if (neg) {\n return -s\n }\n return s\n}\n\n/**\n * DegToDMS converts from decimal degrees to parsed sexagesimal angle component.\n * @param {Number} deg - angle in degree\n * @returns {Array} [neg, d, m, s]\n * {Boolean} neg - sign, true if negative\n * {Number} d - (int) degree\n * {Number} m - (int) minute\n * {Number} s - (float) second\n */\nexport function degToDMS (deg) {\n const neg = (deg < 0)\n deg = Math.abs(deg)\n let [d, s] = modf(deg % 360)\n const [m, s1] = modf(s * 60)\n s = round(s1 * 60) // may introduce an error < 1e13\n return [neg, d, m, s]\n}\n\nexport class RA extends HourAngle {\n /**\n * constructs a new RA value from hour, minute, and second components.\n * Negative values are not supported, RA wraps values larger than 24\n * to the range [0,24) hours.\n * @param {Number} h - (int) hour\n * @param {Number} m - (int) minute\n * @param {Number} s - (float) second\n */\n constructor (h = 0, m = 0, s = 0) {\n super(false, h, m, s)\n const args = [].slice.call(arguments)\n if (args.length === 1) {\n this.angle = h\n } else {\n const hr = DMSToDeg(false, h, m, s) % 24\n this.angle = hr * 15 * Math.PI / 180\n }\n }\n\n hour () {\n const h = this.angle * 12 / Math.PI\n return (24 + (h % 24)) % 24\n }\n}\n\n/**\n * Time Angle\n * Unit is time in seconds.\n */\nexport class Time {\n /**\n * @param {boolean|number} negOrTimeInSecs - set `true` if negative; if type is number than time in seconds\n * @param {number} [h] - (int) hour\n * @param {number} [m] - (int) minute\n * @param {number} [s] - (float) second\n * @example\n * new sexa.Time(SECS_OF_DAY)\n * new sexa.Time(false, 15, 22, 7)\n */\n constructor (negOrTimeInSecs, h, m, s) {\n if (typeof negOrTimeInSecs === 'number') {\n this.time = negOrTimeInSecs\n } else {\n this.setHMS(negOrTimeInSecs, h, m, s)\n }\n }\n\n setHMS (neg = false, h = 0, m = 0, s = 0) {\n s += ((h * 60 + m) * 60)\n if (neg) {\n s = -s\n }\n this.time = s\n }\n\n /**\n * @returns {Number} time in seconds.\n */\n sec () {\n return this.time\n }\n\n /**\n * @returns {Number} time in minutes.\n */\n min () {\n return this.time / 60\n }\n\n /**\n * @returns {Number} time in hours.\n */\n hour () {\n return this.time / 3600\n }\n\n /**\n * @returns {Number} time in days.\n */\n day () {\n return this.time / 3600 / 24\n }\n\n /**\n * @returns {Number} time in radians, where 1 day = 2 Pi radians.\n */\n rad () {\n return this.time * Math.PI / 12 / 3600\n }\n\n /**\n * convert time to HMS\n * @returns {Array} [neg, h, m, s]\n * {Boolean} neg - sign, true if negative\n * {Number} h - (int) hour\n * {Number} m - (int) minute\n * {Number} s - (float) second\n */\n toHMS () {\n let t = this.time\n const neg = (t < 0)\n t = (neg ? -t : t)\n const h = Math.trunc(t / 3600)\n t = t - (h * 3600)\n const m = Math.trunc(t / 60)\n const s = t - (m * 60)\n return [neg, h, m, s]\n }\n\n /**\n * Print time using `HʰMᵐsˢ.ss`\n * @param {Number} precision - precision of `.ss`\n * @returns {String}\n */\n toString (precision) {\n const [neg, h, m, s] = this.toHMS()\n let [si, sf] = modf(s)\n if (precision === 0) {\n si = round(s, 0)\n sf = 0\n } else {\n sf = round(sf, precision).toString().substr(1)\n }\n const str = (neg ? '-' : '') +\n (h + 'ʰ') +\n (m + 'ᵐ') +\n (si + 'ˢ') +\n (sf || '')\n return str\n }\n}\n\n// units\nexport const angleFromDeg = (deg) => deg * Math.PI / 180\nexport const angleFromMin = (min) => min / 60 * Math.PI / 180\nexport const angleFromSec = (sec) => sec / 3600 * Math.PI / 180\nexport const degFromAngle = (angle) => angle * 180 / Math.PI\nexport const secFromAngle = (angle) => angle * 3600 * 180 / Math.PI\nexport const secFromHourAngle = (ha) => ha * 240 * 180 / Math.PI\n\n/**\n * separate fix `i` from fraction `f`\n * @private\n * @param {Number} float\n * @returns {Array} [i, f]\n * {Number} i - (int) fix value\n * {Number} f - (float) fractional portion; always > 1\n */\nfunction modf (float) {\n const i = Math.trunc(float)\n const f = Math.abs(float - i)\n return [i, f]\n}\n\n/**\n * Rounds `float` value by precision\n * @private\n * @param {Number} float - value to round\n * @param {Number} [precision] - (int) number of post decimal positions\n * @return {Number} rounded `float`\n */\nfunction round (float, precision = 10) {\n return parseFloat(float.toFixed(precision))\n}\n\nexport default {\n Angle,\n HourAngle,\n DMSToDeg,\n degToDMS,\n RA,\n Time,\n angleFromDeg,\n angleFromMin,\n angleFromSec,\n degFromAngle,\n secFromAngle,\n secFromHourAngle\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module globe\n */\n/**\n * Globe: Chapter 11, The Earth's Globe.\n *\n * Globe contains functions concerning the surface of the Earth idealized as\n * an ellipsoid of revolution.\n */\n\n/**\n * Ellipsoid represents an ellipsoid of revolution. */\nexport class Ellipsoid {\n /**\n * @param {number} radius - equatorial radius\n * @param {number} flat - ellipsiod flattening\n */\n constructor (radius, flat) {\n this.radius = radius\n this.flat = flat\n }\n\n /** A is a common identifier for equatorial radius. */\n A () {\n return this.radius\n }\n\n /** B is a common identifier for polar radius. */\n B () {\n return this.radius * (1 - this.flat)\n }\n\n /** eccentricity of a meridian. */\n eccentricity () {\n return Math.sqrt((2 - this.flat) * this.flat)\n }\n\n /**\n * parallaxConstants computes parallax constants ρ sin φ′ and ρ cos φ′.\n *\n * Arguments are geographic latitude φ in radians and height h\n * in meters above the ellipsoid.\n *\n * @param {number} φ - geographic latitude in radians\n * @param {number} h - height in meters above the ellipsoid\n * @return {number[]} [ρ sin φ′, ρ cos φ] parallax constants [ρsφ, ρcφ]\n */\n parallaxConstants (φ, h) {\n const boa = 1 - this.flat\n const su = Math.sin(Math.atan(boa * Math.tan(φ)))\n const cu = Math.cos(Math.atan(boa * Math.tan(φ)))\n const s = Math.sin(φ)\n const c = Math.cos(φ)\n const hoa = h * 1e-3 / this.radius\n // (s, c float)\n const ρsφ = su * boa + hoa * s\n const ρcφ = cu + hoa * c\n return [ρsφ, ρcφ]\n }\n\n /**\n * rho is distance from Earth center to a point on the ellipsoid.\n *\n * Result unit is fraction of the equatorial radius.\n * @param {number} φ - geographic latitude in radians\n * @returns {number} // TODO\n */\n rho (φ) {\n // Magic numbers...\n return 0.9983271 + 0.0016764 * Math.cos(2 * φ) - 0.0000035 * Math.cos(4 * φ)\n }\n\n /**\n * radiusAtLatitude returns the radius of the circle that is the parallel of\n * latitude at φ.\n *\n * Result unit is Km.\n *\n * @param {number} φ\n * @return {number} radius in km\n */\n radiusAtLatitude (φ) {\n const s = Math.sin(φ)\n const c = Math.cos(φ)\n return this.A() * c / Math.sqrt(1 - (2 - this.flat) * this.flat * s * s)\n }\n\n /**\n * radiusOfCurvature of meridian at latitude φ.\n *\n * Result unit is Km.\n *\n * @param {number} φ\n * @return {number} radius in km\n */\n radiusOfCurvature (φ) {\n const s = Math.sin(φ)\n const e2 = (2 - this.flat) * this.flat\n return this.A() * (1 - e2) / Math.pow(1 - e2 * s * s, 1.5)\n }\n\n /**\n * distance is distance between two points measured along the surface\n * of an ellipsoid.\n *\n * Accuracy is much better than that of approxAngularDistance or\n * approxLinearDistance.\n *\n * Result unit is Km.\n *\n * @param {Coord} c1\n * @param {Coord} c2\n * @return {number} radius in km\n */\n distance (c1, c2) {\n // From AA, ch 11, p 84.\n const [s2f, c2f] = sincos2((c1.lat + c2.lat) / 2)\n const [s2g, c2g] = sincos2((c1.lat - c2.lat) / 2)\n const [s2λ, c2λ] = sincos2((c1.lon - c2.lon) / 2)\n const s = s2g * c2λ + c2f * s2λ\n const c = c2g * c2λ + s2f * s2λ\n const ω = Math.atan(Math.sqrt(s / c))\n const r = Math.sqrt(s * c) / ω\n const d = 2 * ω * this.radius\n const h1 = (3 * r - 1) / (2 * c)\n const h2 = (3 * r + 1) / (2 * s)\n return d * (1 + this.flat * (h1 * s2f * c2g - h2 * c2f * s2g))\n }\n}\n\n/** IAU 1976 values. Radius in Km. */\nexport const Earth76 = new Ellipsoid(6378.14, 1 / 298.257)\n\n/**\n * RotationRate1996_5 is the rotational angular velocity of the Earth\n * with respect to the stars at the epoch 1996.5.\n *\n * Unit is radian/second.\n */\nexport const RotationRate1996_5 = 7.292114992e-5 // eslint-disable-line camelcase\n\n/**\n * oneDegreeOfLongitude returns the length of one degree of longitude.\n *\n * Argument `rp` is the radius in Km of a circle that is a parallel of latitude\n * (as returned by Ellipsoid.radiusAtLatitude.)\n * Result is distance in Km along one degree of the circle.\n *\n * @param {number} rp\n * @return {number} distance in Km\n */\nexport function oneDegreeOfLongitude (rp) {\n return rp * Math.PI / 180\n}\n\n/**\n * oneDegreeOfLatitude returns the length of one degree of latitude.\n *\n * Argument `rm` is the radius in Km of curvature along a meridian.\n * (as returned by Ellipsoid.radiusOfCurvature.)\n * Result is distance in Km along one degree of the meridian.\n *\n * @param {number} rm\n * @return {number} distance in Km\n */\nexport function oneDegreeOfLatitude (rm) {\n return rm * Math.PI / 180\n}\n\n/**\n * geocentricLatitudeDifference returns geographic latitude - geocentric\n * latitude (φ - φ′) with given geographic latitude (φ).\n *\n * Units are radians.\n * @param {number} φ\n * @returns {number} difference in Deg\n */\nexport function geocentricLatitudeDifference (φ) {\n // This appears to be an approximation with hard coded magic numbers.\n // No explanation is given in the text. The ellipsoid is not specified.\n // Perhaps the approximation works well enough for all ellipsoids?\n return (692.73 * Math.sin(2 * φ) - 1.16 * Math.sin(4 * φ)) * Math.PI / (180 * 3600)\n}\n\n/**\n * Coord represents geographic coordinates on the Earth.\n *\n * Longitude is measured positively westward from the Greenwich meridian.\n */\nexport class Coord {\n /**\n * @param {number} lat - latitude (φ) in radians\n * @param {number} lon - longitude (ψ, or L) in radians (measured positively westward)\n */\n constructor (lat = 0, lon = 0) {\n this.lat = lat\n this.lon = lon\n }\n}\n\n/**\n * approxAngularDistance returns the cosine of the angle between two points.\n *\n * The accuracy deteriorates at small angles.\n *\n * @param {Coord} p1 - Point 1\n * @param {Coord} p2 - Point 2\n * @returns {number} cosine `cos` of the angle between two points.\n * Use `d = Math.acos(cos)` to obtain geocentric angular distance in radians\n */\nexport function approxAngularDistance (p1, p2) {\n const s1 = Math.sin(p1.lat)\n const c1 = Math.cos(p1.lat)\n const s2 = Math.sin(p2.lat)\n const c2 = Math.cos(p2.lat)\n return s1 * s2 + c1 * c2 * Math.cos(p1.lon - p2.lon)\n}\n\n/**\n * approxLinearDistance computes a distance across the surface of the Earth.\n *\n * Approximating the Earth as a sphere, the function takes a geocentric angular\n * distance in radians and returns the corresponding linear distance in Km.\n *\n * @param {number} d - geocentric angular distance in radians\n * @returns linear distance in Km\n */\nexport function approxLinearDistance (d) {\n return 6371 * d\n}\n\n/**\n * @private\n */\nfunction sincos2 (x) {\n const s = Math.sin(x)\n const c = Math.cos(x)\n return [s * s, c * c]\n}\n\nexport default {\n Ellipsoid,\n Earth76,\n // eslint-disable-next-line camelcase\n RotationRate1996_5,\n oneDegreeOfLongitude,\n oneDegreeOfLatitude,\n geocentricLatitudeDifference,\n Coord,\n approxAngularDistance,\n approxLinearDistance\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module coord\n */\n/**\n * Coord: Chapter 13, Transformation of Coordinates.\n *\n * Transforms in this package are provided in two forms, function and method.\n * The results of the two forms should be identical.\n *\n * The function forms pass all arguments and results as single values. These\n * forms are best used when you are transforming a single pair of coordinates\n * and wish to avoid memory allocation.\n *\n * The method forms take and return pointers to structs. These forms are best\n * used when you are transforming multiple coordinates and can reuse one or\n * more of the structs. In this case reuse of structs will minimize\n * allocations, and the struct pointers will pass more efficiently on the\n * stack. These methods transform their arguments, placing the result in\n * the receiver. The receiver is then returned for convenience.\n *\n * A number of the functions take sine and cosine of the obliquity of the\n * ecliptic. This becomes an advantage when you doing multiple transformations\n * with the same obliquity. The efficiency of computing sine and cosine once\n * and reuse these values far outweighs the overhead of passing one number as\n * opposed to two.\n */\n\nimport base from './base.js'\nimport sexa from './sexagesimal.js'\nimport { Coord as GlobeCoord } from './globe.js' // eslint-disable-line no-unused-vars\n\n/**\n * @typedef {object} LonLat\n * @property {Number} lon - Longitude (λ) in radians\n * @property {Number} lat - Latitude (β) in radians\n */\n\n/**\n* Ecliptic coordinates are referenced to the plane of the ecliptic.\n*/\nexport class Ecliptic {\n /**\n * IMPORTANT: Longitudes are measured *positively* westwards\n * e.g. Washington D.C. +77°04; Vienna -16°23'\n * @param {Number|LonLat} [lon] - Longitude (λ) in radians\n * @param {Number} [lat] - Latitude (β) in radians\n */\n constructor (lon, lat) {\n if (typeof lon === 'object') {\n lat = lon.lat\n lon = lon.lon\n }\n this.lon = lon || 0\n this.lat = lat || 0\n }\n\n /**\n * converts ecliptic coordinates to equatorial coordinates.\n * @param {Number} ε - Obliquity\n * @returns {Equatorial}\n */\n toEquatorial (ε) {\n const [εsin, εcos] = base.sincos(ε)\n const [sβ, cβ] = base.sincos(this.lat)\n const [sλ, cλ] = base.sincos(this.lon)\n let ra = Math.atan2(sλ * εcos - (sβ / cβ) * εsin, cλ) // (13.3) p. 93\n if (ra < 0) {\n ra += 2 * Math.PI\n }\n const dec = Math.asin(sβ * εcos + cβ * εsin * sλ) // (13.4) p. 93\n return new Equatorial(ra, dec)\n }\n}\n\n/**\n * Equatorial coordinates are referenced to the Earth's rotational axis.\n */\nexport class Equatorial {\n /**\n * @param {Number} ra - (float) Right ascension (α) in radians\n * @param {Number} dec - (float) Declination (δ) in radians\n */\n constructor (ra = 0, dec = 0) {\n this.ra = ra\n this.dec = dec\n }\n\n /**\n * EqToEcl converts equatorial coordinates to ecliptic coordinates.\n * @param {Number} ε - Obliquity\n * @returns {Ecliptic}\n */\n toEcliptic (ε) {\n const [εsin, εcos] = base.sincos(ε)\n const [sα, cα] = base.sincos(this.ra)\n const [sδ, cδ] = base.sincos(this.dec)\n const lon = Math.atan2(sα * εcos + (sδ / cδ) * εsin, cα) // (13.1) p. 93\n const lat = Math.asin(sδ * εcos - cδ * εsin * sα) // (13.2) p. 93\n return new Ecliptic(lon, lat)\n }\n\n /**\n * EqToHz computes Horizontal coordinates from equatorial coordinates.\n *\n * Argument g is the location of the observer on the Earth. Argument st\n * is the sidereal time at Greenwich.\n *\n * Sidereal time must be consistent with the equatorial coordinates.\n * If coordinates are apparent, sidereal time must be apparent as well.\n *\n * @param {GlobeCoord} g - coordinates of observer on Earth\n * @param {Number} st - sidereal time at Greenwich at time of observation\n * @returns {Horizontal}\n */\n toHorizontal (g, st) {\n const H = new sexa.Time(st).rad() - g.lon - this.ra\n const [sH, cH] = base.sincos(H)\n const [sφ, cφ] = base.sincos(g.lat)\n const [sδ, cδ] = base.sincos(this.dec)\n const azimuth = Math.atan2(sH, cH * sφ - (sδ / cδ) * cφ) // (13.5) p. 93\n const altitude = Math.asin(sφ * sδ + cφ * cδ * cH) // (13.6) p. 93\n return new Horizontal(azimuth, altitude)\n }\n\n /**\n * EqToGal converts equatorial coordinates to galactic coordinates.\n *\n * Equatorial coordinates must be referred to the standard equinox of B1950.0.\n * For conversion to B1950, see package precess and utility functions in\n * package \"common\".\n *\n * @returns {Galactic}\n */\n toGalactic () {\n const [sdα, cdα] = base.sincos(galacticNorth1950.ra - this.ra)\n const [sgδ, cgδ] = base.sincos(galacticNorth1950.dec)\n const [sδ, cδ] = base.sincos(this.dec)\n const x = Math.atan2(sdα, cdα * sgδ - (sδ / cδ) * cgδ) // (13.7) p. 94\n // (galactic0Lon1950 + 1.5*math.Pi) = magic number of 303 deg\n const lon = (galactic0Lon1950 + 1.5 * Math.PI - x) % (2 * Math.PI) // (13.8) p. 94\n const lat = Math.asin(sδ * sgδ + cδ * cgδ * cdα)\n return new Galactic(lon, lat)\n }\n}\n\n/**\n * Horizontal coordinates are referenced to the local horizon of an observer\n * on the surface of the Earth.\n * @param {Number} az - Azimuth (A) in radians\n * @param {Number} alt - Altitude (h) in radians\n */\nexport class Horizontal {\n constructor (az = 0, alt = 0) {\n this.az = az\n this.alt = alt\n }\n\n /**\n * transforms horizontal coordinates to equatorial coordinates.\n *\n * Sidereal time must be consistent with the equatorial coordinates.\n * If coordinates are apparent, sidereal time must be apparent as well.\n * @param {GlobeCoord} g - coordinates of observer on Earth (lat, lon)\n * @param {Number} st - sidereal time at Greenwich at time of observation.\n * @returns {Equatorial} (right ascension, declination)\n */\n toEquatorial (g, st) {\n const [sA, cA] = base.sincos(this.az)\n const [sh, ch] = base.sincos(this.alt)\n const [sφ, cφ] = base.sincos(g.lat)\n const H = Math.atan2(sA, cA * sφ + sh / ch * cφ)\n const ra = base.pmod(new sexa.Time(st).rad() - g.lon - H, 2 * Math.PI)\n const dec = Math.asin(sφ * sh - cφ * ch * cA)\n return new Equatorial(ra, dec)\n }\n}\n\n/**\n * Galactic coordinates are referenced to the plane of the Milky Way.\n * @param {Number} lon - Longitude (l) in radians\n * @param {Number} lat - Latitude (b) in radians\n */\nexport class Galactic {\n constructor (lon = 0, lat = 0) {\n this.lon = lon\n this.lat = lat\n }\n\n /**\n * GalToEq converts galactic coordinates to equatorial coordinates.\n *\n * Resulting equatorial coordinates will be referred to the standard equinox of\n * B1950.0. For subsequent conversion to other epochs, see package precess and\n * utility functions in package meeus.\n *\n * @returns {Equatorial} (right ascension, declination)\n */\n toEquatorial () {\n // (-galactic0Lon1950 - math.Pi/2) = magic number of -123 deg\n const [sdLon, cdLon] = base.sincos(this.lon - galactic0Lon1950 - Math.PI / 2)\n const [sgδ, cgδ] = base.sincos(galacticNorth1950.dec)\n const [sb, cb] = base.sincos(this.lat)\n const y = Math.atan2(sdLon, cdLon * sgδ - (sb / cb) * cgδ)\n // (galacticNorth1950.RA.Rad() - math.Pi) = magic number of 12.25 deg\n const ra = base.pmod(y + galacticNorth1950.ra - Math.PI, 2 * Math.PI)\n const dec = Math.asin(sb * sgδ + cb * cgδ * cdLon)\n return new Equatorial(ra, dec)\n }\n}\n\n/**\n* equatorial coords for galactic north\n* IAU B1950.0 coordinates of galactic North Pole\n*/\nexport const galacticNorth = new Equatorial(\n new sexa.RA(12, 49, 0).rad(),\n 27.4 * Math.PI / 180\n)\nexport const galacticNorth1950 = galacticNorth\n\n/**\n* Galactic Longitude 0°\n* Meeus gives 33 as the origin of galactic longitudes relative to the\n* ascending node of of the galactic equator. 33 + 90 = 123, the IAU\n* value for origin relative to the equatorial pole.\n*/\nexport const galacticLon0 = 33 * Math.PI / 180\nexport const galactic0Lon1950 = galacticLon0\n\nexport default {\n Ecliptic,\n Equatorial,\n Horizontal,\n Galactic,\n galacticNorth,\n galacticNorth1950,\n galacticLon0,\n galactic0Lon1950\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module nutation\n */\n/**\n * Nutation: Chapter 22, Nutation and the Obliquity of the Ecliptic.\n */\n\nimport base from './base.js'\nimport sexa from './sexagesimal.js'\n\n// Nutation: Chapter 22, Nutation and the Obliquity of the Ecliptic.\n\n/**\n * Nutation returns nutation in longitude (Δψ) and nutation in obliquity (Δε)\n * for a given JDE.\n *\n * JDE = UT + ΔT, see package.\n *\n * Computation is by 1980 IAU theory, with terms < .0003″ neglected.\n *\n * Result units are radians.\n *\n * @param {number} jde - Julian ephemeris day\n * @return {number[]} [Δψ, Δε] - [longitude, obliquity] in radians\n */\nexport function nutation (jde) {\n const T = base.J2000Century(jde)\n // Mean elongation of the Moon from the sun\n const D = base.horner(T,\n 297.85036, 445267.11148, -0.0019142, 1.0 / 189474) * Math.PI / 180\n // Mean anomaly of the Sun (Earth)\n const M = base.horner(T,\n 357.52772, 35999.050340, -0.0001603, -1.0 / 300000) * Math.PI / 180\n // Mean anomaly of the Moon\n const N = base.horner(T,\n 134.96298, 477198.867398, 0.0086972, 1.0 / 56250) * Math.PI / 180\n // Moon's argument of latitude\n const F = base.horner(T,\n 93.27191, 483202.017538, -0.0036825, 1.0 / 327270) * Math.PI / 180\n // Longitude of the ascending node of the Moon's mean orbit on the ecliptic, measured from mean equinox of date\n const Ω = base.horner(T,\n 125.04452, -1934.136261, 0.0020708, 1.0 / 450000) * Math.PI / 180\n let Δψ = 0\n let Δε = 0\n // sum in reverse order to accumulate smaller terms first\n for (let i = table22A.length - 1; i >= 0; i--) {\n const row = table22A[i]\n const arg = row.d * D + row.m * M + row.n * N + row.f * F + row.ω * Ω\n const [s, c] = base.sincos(arg)\n Δψ += s * (row.s0 + row.s1 * T)\n Δε += c * (row.c0 + row.c1 * T)\n }\n Δψ *= 0.0001 / 3600 * (Math.PI / 180)\n Δε *= 0.0001 / 3600 * (Math.PI / 180)\n return [Δψ, Δε] // (Δψ, Δε float)\n}\n/**\n * ApproxNutation returns a fast approximation of nutation in longitude (Δψ)\n * and nutation in obliquity (Δε) for a given JDE.\n *\n * Accuracy is 0.5″ in Δψ, 0.1″ in Δε.\n *\n * Result units are radians.\n *\n * @param {number} jde - Julian ephemeris day\n * @return {number[]} [Δψ, Δε] - [longitude, obliquity] in radians\n */\nexport function approxNutation (jde) {\n const T = (jde - base.J2000) / 36525\n const Ω = (125.04452 - 1934.136261 * T) * Math.PI / 180\n const L = (280.4665 + 36000.7698 * T) * Math.PI / 180\n const N = (218.3165 + 481267.8813 * T) * Math.PI / 180\n const [sΩ, cΩ] = base.sincos(Ω)\n const [s2L, c2L] = base.sincos(2 * L)\n const [s2N, c2N] = base.sincos(2 * N)\n const [s2Ω, c2Ω] = base.sincos(2 * Ω)\n const Δψ = (-17.2 * sΩ - 1.32 * s2L - 0.23 * s2N + 0.21 * s2Ω) / 3600 * (Math.PI / 180)\n const Δε = (9.2 * cΩ + 0.57 * c2L + 0.1 * c2N - 0.09 * c2Ω) / 3600 * (Math.PI / 180)\n return [Δψ, Δε] // (Δψ, Δε float)\n}\n\n/**\n * MeanObliquity returns mean obliquity (ε₀) following the IAU 1980\n * polynomial.\n *\n * Accuracy is 1″ over the range 1000 to 3000 years and 10″ over the range\n * 0 to 4000 years.\n *\n * Result unit is radians.\n *\n * @param {number} jde - Julian ephemeris day\n * @return {number} mean obliquity (ε₀)\n */\nexport function meanObliquity (jde) {\n // (22.2) p. 147\n return base.horner(\n base.J2000Century(jde),\n new sexa.Angle(false, 23, 26, 21.448).rad(),\n -46.815 / 3600 * (Math.PI / 180),\n -0.00059 / 3600 * (Math.PI / 180),\n 0.001813 / 3600 * (Math.PI / 180)\n )\n}\n\n/**\n * MeanObliquityLaskar returns mean obliquity (ε₀) following the Laskar\n * 1986 polynomial.\n *\n * Accuracy over the range 1000 to 3000 years is .01″.\n *\n * Accuracy over the valid date range of -8000 to +12000 years is\n * \"a few seconds.\"\n *\n * Result unit is radians.\n *\n * @param {number} jde - Julian ephemeris day\n * @return {number} mean obliquity (ε₀)\n */\nexport function meanObliquityLaskar (jde) {\n // (22.3) p. 147\n return base.horner(\n base.J2000Century(jde) * 0.01,\n new sexa.Angle(false, 23, 26, 21.448).rad(),\n -4680.93 / 3600 * (Math.PI / 180),\n -1.55 / 3600 * (Math.PI / 180),\n 1999.25 / 3600 * (Math.PI / 180),\n -51.38 / 3600 * (Math.PI / 180),\n -249.67 / 3600 * (Math.PI / 180),\n -39.05 / 3600 * (Math.PI / 180),\n 7.12 / 3600 * (Math.PI / 180),\n 27.87 / 3600 * (Math.PI / 180),\n 5.79 / 3600 * (Math.PI / 180),\n 2.45 / 3600 * (Math.PI / 180)\n )\n}\n\n/**\n * NutationInRA returns \"nutation in right ascension\" or \"equation of the\n * equinoxes.\"\n *\n * Result is an angle in radians.\n *\n * @param {number} jde - Julian ephemeris day\n * @return {number} nutation in right ascension\n */\nexport function nutationInRA (jde) {\n const [Δψ, Δε] = nutation(jde)\n const ε0 = meanObliquity(jde)\n return Δψ * Math.cos(ε0 + Δε)\n}\n\nconst table22A = (function () {\n const PROPS = 'd,m,n,f,ω,s0,s1,c0,c1'.split(',')\n const tab = [\n [0, 0, 0, 0, 1, -171996, -174.2, 92025, 8.9],\n [-2, 0, 0, 2, 2, -13187, -1.6, 5736, -3.1],\n [0, 0, 0, 2, 2, -2274, -0.2, 977, -0.5],\n [0, 0, 0, 0, 2, 2062, 0.2, -895, 0.5],\n [0, 1, 0, 0, 0, 1426, -3.4, 54, -0.1],\n [0, 0, 1, 0, 0, 712, 0.1, -7, 0],\n [-2, 1, 0, 2, 2, -517, 1.2, 224, -0.6],\n [0, 0, 0, 2, 1, -386, -0.4, 200, 0],\n [0, 0, 1, 2, 2, -301, 0, 129, -0.1],\n [-2, -1, 0, 2, 2, 217, -0.5, -95, 0.3],\n [-2, 0, 1, 0, 0, -158, 0, 0, 0],\n [-2, 0, 0, 2, 1, 129, 0.1, -70, 0],\n [0, 0, -1, 2, 2, 123, 0, -53, 0],\n [2, 0, 0, 0, 0, 63, 0, 0, 0],\n [0, 0, 1, 0, 1, 63, 0.1, -33, 0],\n [2, 0, -1, 2, 2, -59, 0, 26, 0],\n [0, 0, -1, 0, 1, -58, -0.1, 32, 0],\n [0, 0, 1, 2, 1, -51, 0, 27, 0],\n [-2, 0, 2, 0, 0, 48, 0, 0, 0],\n [0, 0, -2, 2, 1, 46, 0, -24, 0],\n [2, 0, 0, 2, 2, -38, 0, 16, 0],\n [0, 0, 2, 2, 2, -31, 0, 13, 0],\n [0, 0, 2, 0, 0, 29, 0, 0, 0],\n [-2, 0, 1, 2, 2, 29, 0, -12, 0],\n [0, 0, 0, 2, 0, 26, 0, 0, 0],\n [-2, 0, 0, 2, 0, -22, 0, 0, 0],\n [0, 0, -1, 2, 1, 21, 0, -10, 0],\n [0, 2, 0, 0, 0, 17, -0.1, 0, 0],\n [2, 0, -1, 0, 1, 16, 0, -8, 0],\n [-2, 2, 0, 2, 2, -16, 0.1, 7, 0],\n [0, 1, 0, 0, 1, -15, 0, 9, 0],\n [-2, 0, 1, 0, 1, -13, 0, 7, 0],\n [0, -1, 0, 0, 1, -12, 0, 6, 0],\n [0, 0, 2, -2, 0, 11, 0, 0, 0],\n [2, 0, -1, 2, 1, -10, 0, 5, 0],\n [2, 0, 1, 2, 2, -8, 0, 3, 0],\n [0, 1, 0, 2, 2, 7, 0, -3, 0],\n [-2, 1, 1, 0, 0, -7, 0, 0, 0],\n [0, -1, 0, 2, 2, -7, 0, 3, 0],\n [2, 0, 0, 2, 1, -7, 0, 3, 0],\n [2, 0, 1, 0, 0, 6, 0, 0, 0],\n [-2, 0, 2, 2, 2, 6, 0, -3, 0],\n [-2, 0, 1, 2, 1, 6, 0, -3, 0],\n [2, 0, -2, 0, 1, -6, 0, 3, 0],\n [2, 0, 0, 0, 1, -6, 0, 3, 0],\n [0, -1, 1, 0, 0, 5, 0, 0, 0],\n [-2, -1, 0, 2, 1, -5, 0, 3, 0],\n [-2, 0, 0, 0, 1, -5, 0, 3, 0],\n [0, 0, 2, 2, 1, -5, 0, 3, 0],\n [-2, 0, 2, 0, 1, 4, 0, 0, 0],\n [-2, 1, 0, 2, 1, 4, 0, 0, 0],\n [0, 0, 1, -2, 0, 4, 0, 0, 0],\n [-1, 0, 1, 0, 0, -4, 0, 0, 0],\n [-2, 1, 0, 0, 0, -4, 0, 0, 0],\n [1, 0, 0, 0, 0, -4, 0, 0, 0],\n [0, 0, 1, 2, 0, 3, 0, 0, 0],\n [0, 0, -2, 2, 2, -3, 0, 0, 0],\n [-1, -1, 1, 0, 0, -3, 0, 0, 0],\n [0, 1, 1, 0, 0, -3, 0, 0, 0],\n [0, -1, 1, 2, 2, -3, 0, 0, 0],\n [2, -1, -1, 2, 2, -3, 0, 0, 0],\n [0, 0, 3, 2, 2, -3, 0, 0, 0],\n [2, -1, 0, 2, 2, -3, 0, 0, 0]\n ]\n\n return tab.map((row) => {\n const o = {}\n PROPS.forEach((p, i) => {\n o[p] = row[i]\n })\n return o\n })\n})()\n\nexport default {\n nutation,\n approxNutation,\n meanObliquity,\n meanObliquityLaskar,\n nutationInRA\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module elementequinox\n */\n/**\n * Elementequinox: Chapter 24, Reduction of Ecliptical Elements\n * from one Equinox to another one.\n *\n * See package precess for the method EclipticPrecessor.ReduceElements and\n * associated example. The method is described in this chapter but located\n * in package precess so that it can be a method of EclipticPrecessor.\n */\n\nimport base from './base.js'\n\n/**\n * Elements are the orbital elements of a solar system object which change\n * from one equinox to another.\n *\n * @param {Number} inc - inclination\n * @param {Number} node - longitude of ascending node (Ω)\n * @param {Number} peri - argument of perihelion (ω)\n */\nexport class Elements {\n constructor (inc, node, peri) {\n if (typeof inc === 'object') {\n node = inc.pode\n peri = inc.peri\n inc = inc.inc\n }\n this.inc = inc || 0\n this.node = node || 0\n this.peri = peri || 0\n }\n}\n\n// (24.4) p. 161\nconst S = 0.0001139788\nconst C = 0.9999999935\n/**\n * ReduceB1950ToJ2000 reduces orbital elements of a solar system body from\n * equinox B1950 to J2000.\n *\n * @param {Elements} eFrom\n * @returns {Elements} eTo\n */\nexport function reduceB1950ToJ2000 (eFrom) {\n const W = eFrom.node - 174.298782 * Math.PI / 180\n const [si, ci] = base.sincos(eFrom.inc)\n const [sW, cW] = base.sincos(W)\n const A = si * sW\n const B = C * si * cW - S * ci\n const eTo = new Elements()\n eTo.inc = Math.asin(Math.hypot(A, B))\n eTo.node = base.pmod(174.997194 * Math.PI / 180 + Math.atan2(A, B),\n 2 * Math.PI)\n eTo.peri = base.pmod(eFrom.peri + Math.atan2(-S * sW, C * si - S * ci * cW),\n 2 * Math.PI)\n return eTo\n}\n\nconst Lp = 4.50001688 * Math.PI / 180\nconst L = 5.19856209 * Math.PI / 180\nconst J = 0.00651966 * Math.PI / 180\n\n/**\n * ReduceB1950ToJ2000 reduces orbital elements of a solar system body from\n * equinox B1950 in the FK4 system to equinox J2000 in the FK5 system.\n *\n * @param {Elements} eFrom\n * @returns {Elements} eTo\n */\nexport function reduceB1950FK4ToJ2000FK5 (eFrom) {\n const W = L + eFrom.node\n const [si, ci] = base.sincos(eFrom.inc)\n const [sJ, cJ] = base.sincos(J)\n const [sW, cW] = base.sincos(W)\n const eTo = new Elements()\n eTo.inc = Math.acos(ci * cJ - si * sJ * cW)\n eTo.node = base.pmod(Math.atan2(si * sW, ci * sJ + si * cJ * cW) - Lp,\n 2 * Math.PI)\n eTo.peri = base.pmod(eFrom.peri + Math.atan2(sJ * sW, si * cJ + ci * sJ * cW),\n 2 * Math.PI)\n return eTo\n}\n\nexport default {\n Elements,\n reduceB1950ToJ2000,\n reduceB1950FK4ToJ2000FK5\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module precess\n */\n/**\n * Precession: Chapter 21, Precession.\n *\n * Functions in this package take Julian epoch argurments rather than Julian\n * days. Use base.JDEToJulianYear() to convert.\n *\n * Also in package base are some definitions related to the Besselian and\n * Julian Year.\n *\n * Partial: Precession from FK4 not implemented. Meeus gives no test cases.\n * It's a fair amount of code and data, representing significant chances for\n * errors. And precession from FK4 would seem to be of little interest today.\n *\n * Proper motion units\n *\n * Meeus gives some example annual proper motions in units of seconds of\n * right ascension and seconds of declination. To make units clear,\n * functions in this package take proper motions with argument types of\n * sexa.HourAngle and sexa.Angle respectively. Error-prone conversions\n * can be avoided by using the constructors for these base types.\n *\n * For example, given an annual proper motion in right ascension of -0ˢ.03847,\n * rather than\n *\n * mra = -0.03847 / 13751 // as Meeus suggests\n *\n * or\n *\n * mra = -0.03847 * (15/3600) * (pi/180) // less magic\n *\n * use\n *\n * mra = new sexa.HourAngle(false, 0, 0, -0.03847)\n *\n * Unless otherwise indicated, functions in this library expect proper motions\n * to be annual proper motions, so the unit denominator is years.\n * (The code, following Meeus's example, technically treats it as Julian years.)\n */\n\nimport base from './base.js'\nimport { Equatorial, Ecliptic } from './coord.js'\nimport { Elements } from './elementequinox.js'\nimport nutation from './nutation.js'\nimport { HourAngle, Angle } from './sexagesimal.js'\n\n/**\n * approxAnnualPrecession returns approximate annual precision in right\n * ascension and declination.\n *\n * The two epochs should be within a few hundred years.\n * The declinations should not be too close to the poles.\n *\n * @param {Equatorial} eqFrom\n * @param {Number} epochFrom - use `base.JDEToJulianYear(year)` to get epoch\n * @param {Number} epochTo - use `base.JDEToJulianYear(year)` to get epoch\n * @returns {Object}\n * {sexa.HourAngle} seconds of right ascension\n * {sexa.Angle} seconds of Declination\n */\nexport function approxAnnualPrecession (eqFrom, epochFrom, epochTo) {\n const [m, na, nd] = mn(epochFrom, epochTo)\n const [sa, ca] = base.sincos(eqFrom.ra)\n // (21.1) p. 132\n const Δαs = m + na * sa * Math.tan(eqFrom.dec) // seconds of RA\n const Δδs = nd * ca // seconds of Dec\n const ra = new HourAngle(false, 0, 0, Δαs).rad()\n const dec = new Angle(false, 0, 0, Δδs).rad()\n return { ra, dec }\n}\n\n/**\n * @param {Number} epochFrom - use `base.JDEToJulianYear(year)` to get epoch\n * @param {Number} epochTo - use `base.JDEToJulianYear(year)` to get epoch\n * @returns {Number[]}\n */\nexport function mn (epochFrom, epochTo) {\n const T = (epochTo - epochFrom) * 0.01\n const m = 3.07496 + 0.00186 * T\n const na = 1.33621 - 0.00057 * T\n const nd = 20.0431 - 0.0085 * T\n return [m, na, nd]\n}\n\n/**\n * ApproxPosition uses ApproxAnnualPrecession to compute a simple and quick\n * precession while still considering proper motion.\n *\n * @param {Equatorial} eqFrom\n * @param {Number} epochFrom\n * @param {Number} epochTo\n * @param {Number} mα - in radians\n * @param {Number} mδ - in radians\n * @returns {Equatorial} eqTo\n */\nexport function approxPosition (eqFrom, epochFrom, epochTo, mα, mδ) {\n const { ra, dec } = approxAnnualPrecession(eqFrom, epochFrom, epochTo)\n const dy = epochTo - epochFrom\n const eqTo = new Equatorial()\n eqTo.ra = eqFrom.ra + (ra + mα) * dy\n eqTo.dec = eqFrom.dec + (dec + mδ) * dy\n return eqTo\n}\n\n// constants\nconst d = Math.PI / 180\nconst s = d / 3600\n\n// coefficients from (21.2) p. 134\nconst ζT = [2306.2181 * s, 1.39656 * s, -0.000139 * s]\nconst zT = [2306.2181 * s, 1.39656 * s, -0.000139 * s]\nconst θT = [2004.3109 * s, -0.8533 * s, -0.000217 * s]\n// coefficients from (21.3) p. 134\nconst ζt = [2306.2181 * s, 0.30188 * s, 0.017998 * s]\nconst zt = [2306.2181 * s, 1.09468 * s, 0.018203 * s]\nconst θt = [2004.3109 * s, -0.42665 * s, -0.041833 * s]\n\n/**\n * Precessor represents precession from one epoch to another.\n *\n * Construct with NewPrecessor, then call method Precess.\n * After construction, Precess may be called multiple times to precess\n * different coordinates with the same initial and final epochs.\n */\nexport class Precessor {\n /**\n * constructs a Precessor object and initializes it to precess\n * coordinates from epochFrom to epochTo.\n * @param {Number} epochFrom\n * @param {Number} epochTo\n */\n constructor (epochFrom, epochTo) {\n // (21.2) p. 134\n let ζCoeff = ζt\n let zCoeff = zt\n let θCoeff = θt\n if (epochFrom !== 2000) {\n const T = (epochFrom - 2000) * 0.01\n ζCoeff = [\n base.horner(T, ...ζT),\n 0.30188 * s - 0.000344 * s * T,\n 0.017998 * s\n ]\n zCoeff = [\n base.horner(T, ...zT),\n 1.09468 * s + 0.000066 * s * T,\n 0.018203 * s\n ]\n θCoeff = [\n base.horner(T, ...θT),\n -0.42665 * s - 0.000217 * s * T,\n -0.041833 * s\n ]\n }\n const t = (epochTo - epochFrom) * 0.01\n this.ζ = base.horner(t, ...ζCoeff) * t\n this.z = base.horner(t, ...zCoeff) * t\n const θ = base.horner(t, ...θCoeff) * t\n this.sθ = Math.sin(θ)\n this.cθ = Math.cos(θ)\n }\n\n /**\n * Precess precesses coordinates eqFrom, leaving result in eqTo.\n *\n * @param {Equatorial} eqFrom\n * @returns {Equatorial} eqTo\n */\n precess (eqFrom) {\n // (21.4) p. 134\n const [sδ, cδ] = base.sincos(eqFrom.dec)\n const [sαζ, cαζ] = base.sincos(eqFrom.ra + this.ζ)\n const A = cδ * sαζ\n const B = this.cθ * cδ * cαζ - this.sθ * sδ\n const C = this.sθ * cδ * cαζ + this.cθ * sδ\n const eqTo = new Equatorial()\n eqTo.ra = Math.atan2(A, B) + this.z\n if (C < base.CosSmallAngle) {\n eqTo.dec = Math.asin(C)\n } else {\n eqTo.dec = Math.acos(Math.hypot(A, B)) // near pole\n }\n return eqTo\n }\n}\n\n/**\n * Position precesses equatorial coordinates from one epoch to another,\n * including proper motions.\n *\n * If proper motions are not to be considered or are not applicable, pass 0, 0\n * for mα, mδ\n *\n * Both eqFrom and eqTo must be non-nil, although they may point to the same\n * struct. EqTo is returned for convenience.\n * @param {Equatorial} eqFrom\n * @param {Number} epochFrom\n * @param {Number} epochTo\n * @param {Number} mα - in radians\n * @param {Number} mδ - in radians\n * @returns {Equatorial} [eqTo]\n */\nexport function position (eqFrom, epochFrom, epochTo, mα, mδ) {\n const p = new Precessor(epochFrom, epochTo)\n const t = epochTo - epochFrom\n const eqTo = new Equatorial()\n eqTo.ra = eqFrom.ra + mα * t\n eqTo.dec = eqFrom.dec + mδ * t\n return p.precess(eqTo)\n}\n\n// coefficients from (21.5) p. 136\nconst ηT = [47.0029 * s, -0.06603 * s, 0.000598 * s]\nconst πT = [174.876384 * d, 3289.4789 * s, 0.60622 * s]\nconst pT = [5029.0966 * s, 2.22226 * s, -0.000042 * s]\nconst ηt = [47.0029 * s, -0.03302 * s, 0.000060 * s]\nconst πt = [174.876384 * d, -869.8089 * s, 0.03536 * s]\nconst pt = [5029.0966 * s, 1.11113 * s, -0.000006 * s]\n\n/**\n * EclipticPrecessor represents precession from one epoch to another.\n *\n * Construct with NewEclipticPrecessor, then call method Precess.\n * After construction, Precess may be called multiple times to precess\n * different coordinates with the same initial and final epochs.\n */\nexport class EclipticPrecessor {\n /**\n * constructs an EclipticPrecessor object and initializes\n * it to precess coordinates from epochFrom to epochTo.\n * @param {Number} epochFrom\n * @param {Number} epochTo\n */\n constructor (epochFrom, epochTo) {\n // (21.5) p. 136\n let ηCoeff = ηt\n let πCoeff = πt\n let pCoeff = pt\n if (epochFrom !== 2000) {\n const T = (epochFrom - 2000) * 0.01\n ηCoeff = [\n base.horner(T, ...ηT),\n -0.03302 * s + 0.000598 * s * T,\n 0.000060 * s\n ]\n πCoeff = [\n base.horner(T, ...πT),\n -869.8089 * s - 0.50491 * s * T,\n 0.03536 * s\n ]\n pCoeff = [\n base.horner(T, ...pT),\n 1.11113 * s - 0.000042 * s * T,\n -0.000006 * s\n ]\n }\n const t = (epochTo - epochFrom) * 0.01\n this.π = base.horner(t, ...πCoeff)\n this.p = base.horner(t, ...pCoeff) * t\n const η = base.horner(t, ...ηCoeff) * t\n this.sη = Math.sin(η)\n this.cη = Math.cos(η)\n }\n\n /**\n * EclipticPrecess precesses coordinates eclFrom, leaving result in eclTo.\n *\n * The same struct may be used for eclFrom and eclTo.\n * EclTo is returned for convenience.\n * @param {Ecliptic} eclFrom\n * @returns {Ecliptic} [eclTo]\n */\n precess (eclFrom) {\n // (21.7) p. 137\n const [sβ, cβ] = base.sincos(eclFrom.lat)\n const [sd, cd] = base.sincos(this.π - eclFrom.lon)\n const A = this.cη * cβ * sd - this.sη * sβ\n const B = cβ * cd\n const C = this.cη * sβ + this.sη * cβ * sd\n const eclTo = new Ecliptic(this.p + this.π - Math.atan2(A, B))\n if (C < base.CosSmallAngle) {\n eclTo.lat = Math.asin(C)\n } else {\n eclTo.lat = Math.acos(Math.hypot(A, B)) // near pole\n }\n return eclTo\n }\n\n /**\n * ReduceElements reduces orbital elements of a solar system body from one\n * equinox to another.\n *\n * This function is described in chapter 24, but is located in this\n * package so it can be a method of EclipticPrecessor.\n *\n * @param {Elements} eFrom\n * @returns {Elements} eTo\n */\n reduceElements (eFrom) {\n const ψ = this.π + this.p\n const [si, ci] = base.sincos(eFrom.inc)\n const [snp, cnp] = base.sincos(eFrom.node - this.π)\n const eTo = new Elements()\n // (24.1) p. 159\n eTo.inc = Math.acos(ci * this.cη + si * this.sη * cnp)\n // (24.2) p. 159\n eTo.node = Math.atan2(si * snp, this.cη * si * cnp - this.sη * ci) + ψ\n // (24.3) p. 159\n eTo.peri = Math.atan2(-this.sη * snp, si * this.cη - ci * this.sη * cnp) + eFrom.peri\n return eTo\n }\n}\n\n/**\n * eclipticPosition precesses ecliptic coordinates from one epoch to another,\n * including proper motions.\n * While eclFrom is given as ecliptic coordinates, proper motions mα, mδ are\n * still expected to be equatorial. If proper motions are not to be considered\n * or are not applicable, pass 0, 0.\n * Both eclFrom and eclTo must be non-nil, although they may point to the same\n * struct. EclTo is returned for convenience.\n *\n * @param {Ecliptic} eclFrom,\n * @param {Number} epochFrom\n * @param {HourAngle} [mα]\n * @param {Angle} [mδ]\n * @returns {Ecliptic} eclTo\n */\nexport function eclipticPosition (eclFrom, epochFrom, epochTo, mα, mδ) {\n const p = new EclipticPrecessor(epochFrom, epochTo)\n\n if (mα && mδ && (mα.rad() !== 0 || mδ.rad() !== 0)) {\n const { lon, lat } = properMotion(mα.rad(), mδ.rad(), epochFrom, eclFrom)\n const t = epochTo - epochFrom\n eclFrom.lon += lon * t\n eclFrom.lat += lat * t\n }\n return p.precess(eclFrom)\n}\n\n/**\n * @param {Number} mα - anual proper motion (ra)\n * @param {Number} mδ - anual proper motion (dec)\n * @param {Number} epoch\n * @param {Ecliptic} ecl\n * @returns {Ecliptic} {lon, lat}\n */\nexport function properMotion (mα, mδ, epoch, ecl) {\n const ε = nutation.meanObliquity(base.JulianYearToJDE(epoch))\n const [εsin, εcos] = base.sincos(ε)\n const { ra, dec } = ecl.toEquatorial(ε)\n const [sα, cα] = base.sincos(ra)\n const [sδ, cδ] = base.sincos(dec)\n const cβ = Math.cos(ecl.lat)\n const lon = (mδ * εsin * cα + mα * cδ * (εcos * cδ + εsin * sδ * sα)) / (cβ * cβ)\n const lat = (mδ * (εcos * cδ + εsin * sδ * sα) - mα * εsin * cα * cδ) / cβ\n return new Ecliptic(lon, lat)\n}\n\n/**\n * ProperMotion3D takes the 3D equatorial coordinates of an object\n * at one epoch and computes its coordinates at a new epoch, considering\n * proper motion and radial velocity.\n *\n * Radial distance (r) must be in parsecs, radial velocitiy (mr) in\n * parsecs per year.\n *\n * Both eqFrom and eqTo must be non-nil, although they may point to the same\n * struct. EqTo is returned for convenience.\n *\n * @param {Equatorial} eqFrom,\n * @param {Number} epochFrom\n * @param {Number} r\n * @param {Number} mr\n * @param {HourAngle} mα\n * @param {Angle} mδ\n * @returns {Equatorial} eqTo\n */\nexport function properMotion3D (eqFrom, epochFrom, epochTo, r, mr, mα, mδ) {\n const [sα, cα] = base.sincos(eqFrom.ra)\n const [sδ, cδ] = base.sincos(eqFrom.dec)\n const x = r * cδ * cα\n const y = r * cδ * sα\n const z = r * sδ\n const mrr = mr / r\n const zmδ = z * mδ.rad()\n const mx = x * mrr - zmδ * cα - y * mα.rad()\n const my = y * mrr - zmδ * sα + x * mα.rad()\n const mz = z * mrr + r * mδ.rad() * cδ\n const t = epochTo - epochFrom\n const xp = x + t * mx\n const yp = y + t * my\n const zp = z + t * mz\n const eqTo = new Equatorial()\n eqTo.ra = Math.atan2(yp, xp)\n eqTo.dec = Math.atan2(zp, Math.hypot(xp, yp))\n return eqTo\n}\n\nexport default {\n approxAnnualPrecession,\n mn,\n approxPosition,\n Precessor,\n position,\n EclipticPrecessor,\n eclipticPosition,\n properMotion,\n properMotion3D\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module planetposition\n */\n/**\n * Planetposition: Chapter 32, Positions of the Planets.\n *\n * Incomplete:\n *\n * 1. The package does not implement algorithms that use appendix III,\n * but instead implements a full VSOP87 solution. I do not have a copy\n * of the supplimentary disk with appendix III in machine readable form\n * and as the appendix is rather large, retyping it by hand is problematic.\n * The full VSOP87 data set on the other hand is freely downloadable from\n * the internet, so I implement here code that can use that data directly.\n *\n * 2. The formula for accuracy of results is not implemented. It is\n * not needed for full VSOP87 solutions.\n *\n * 3. Polynomial expressions are not implemented. Again, implementation\n * would involve typing rather large tables of numbers with associated\n * risk of typographical errors.\n */\n\nimport base, { Coord } from './base.js' // eslint-disable-line no-unused-vars\nimport sexa from './sexagesimal.js'\nimport coord from './coord.js'\nimport precess from './precess.js'\n\nfunction sum (t, series) {\n const coeffs = []\n Object.keys(series).forEach((x) => {\n coeffs[x] = 0\n let y = series[x].length - 1\n for (y; y >= 0; y--) {\n const term = {\n a: series[x][y][0],\n b: series[x][y][1],\n c: series[x][y][2]\n }\n coeffs[x] += term.a * Math.cos(term.b + term.c * t)\n }\n })\n const res = base.horner(t, ...coeffs)\n return res\n}\n\nexport class Planet {\n /**\n * VSOP87 representation of a Planet\n * @constructs Planet\n * @param {object} planet - planet data series\n * @example\n * ```js\n * // for use in browser\n * import {data} from 'astronomia'\n * const earth = new planetposition.Planet(data.vsop87Bearth)\n * ```\n */\n constructor (planet) {\n if (typeof planet !== 'object') throw new TypeError('need planet vsop87 data')\n this.name = planet.name\n this.type = planet.type || 'B'\n this.series = planet\n }\n\n /**\n * Position2000 returns ecliptic position of planets by full VSOP87 theory.\n *\n * @param {Number} jde - the date for which positions are desired.\n * @returns {Coord} Results are for the dynamical equinox and ecliptic J2000.\n * {Number} lon - heliocentric longitude in radians.\n * {Number} lat - heliocentric latitude in radians.\n * {Number} range - heliocentric range in AU.\n */\n position2000 (jde) {\n const T = base.J2000Century(jde)\n const τ = T * 0.1\n const lon = base.pmod(sum(τ, this.series.L), 2 * Math.PI)\n const lat = sum(τ, this.series.B)\n const range = sum(τ, this.series.R)\n\n switch (this.type) {\n case 'B':\n return new base.Coord(lon, lat, range)\n case 'D': {\n const eclFrom = new coord.Ecliptic(lon, lat)\n const epochFrom = base.JDEToJulianYear(jde)\n const epochTo = 2000.0\n const eclTo = precess.eclipticPosition(eclFrom, epochFrom, epochTo)\n return new base.Coord(eclTo.lon, eclTo.lat, range)\n }\n }\n }\n\n /**\n * Position returns ecliptic position of planets at equinox and ecliptic of date.\n *\n * @param {Number} jde - the date for which positions are desired.\n * @returns {Coord} Results are positions consistent with those from Meeus's\n * Apendix III, that is, at equinox and ecliptic of date.\n * {Number} lon - heliocentric longitude in radians.\n * {Number} lat - heliocentric latitude in radians.\n * {Number} range - heliocentric range in AU.\n */\n position (jde) {\n const T = base.J2000Century(jde)\n const τ = T * 0.1\n const lon = base.pmod(sum(τ, this.series.L), 2 * Math.PI)\n const lat = sum(τ, this.series.B)\n const range = sum(τ, this.series.R)\n\n switch (this.type) {\n case 'B': {\n const eclFrom = new coord.Ecliptic(lon, lat)\n const epochFrom = 2000.0\n const epochTo = base.JDEToJulianYear(jde)\n const eclTo = precess.eclipticPosition(eclFrom, epochFrom, epochTo)\n return new base.Coord(eclTo.lon, eclTo.lat, range)\n }\n case 'D':\n return new base.Coord(lon, lat, range)\n }\n }\n}\n\n/**\n * ToFK5 converts ecliptic longitude and latitude from dynamical frame to FK5.\n *\n * @param {Number} lon - ecliptic longitude in radians\n * @param {Number} lat - ecliptic latitude in radians\n * @param {Number} jde - Julian ephemeris day\n * @return {Coord}\n * {Number} lon - FK5 longitude\n * {Number} lat - FK5 latitude\n */\nexport function toFK5 (lon, lat, jde) {\n // formula 32.3, p. 219.\n const T = base.J2000Century(jde)\n // const Lp = lon - 1.397 * Math.PI / 180 * T - 0.00031 * Math.PI / 180 * T * T\n const Lp = lon - sexa.angleFromDeg((1.397 + 0.00031 * T) * T)\n const [sLp, cLp] = base.sincos(Lp)\n // (32.3) p. 219\n const L5 = lon + sexa.angleFromSec(-0.09033 + 0.03916 * (cLp + sLp) * Math.tan(lat))\n const B5 = lat + sexa.angleFromSec(0.03916 * (cLp - sLp))\n return new base.Coord(L5, B5)\n}\n\nexport default {\n Planet,\n toFK5\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module solar\n */\n/**\n * Solar: Chapter 25, Solar Coordinates.\n *\n * Partial implementation:\n *\n * 1. Higher accuracy positions are not computed with Appendix III but with\n * full VSOP87 as implemented in package planetposition.\n *\n * 2. Higher accuracy correction for aberration (using the formula for\n * variation Δλ on p. 168) is not implemented. Results for example 25.b\n * already match the full VSOP87 values on p. 165 even with the low accuracy\n * correction for aberration, thus there are no more significant digits that\n * would check a more accurate result. Also the size of the formula presents\n * significant chance of typographical error.\n */\n\nimport base, { Coord } from './base.js'\nimport { Planet } from './planetposition.js' // eslint-disable-line no-unused-vars\nimport coord from './coord.js'\nimport nutation from './nutation.js'\n\n/**\n * True returns true geometric longitude and anomaly of the sun referenced to the mean equinox of date.\n *\n * @param {Number} T - number of Julian centuries since J2000. See base.J2000Century.\n * @returns {Object}\n * {Number} lon = true geometric longitude, ☉, in radians\n * {Number} ano = true anomaly in radians\n */\nexport function trueLongitude (T) {\n // (25.2) p. 163\n const L0 = base.horner(T, 280.46646, 36000.76983, 0.0003032) *\n Math.PI / 180\n const m = meanAnomaly(T)\n const C = (base.horner(T, 1.914602, -0.004817, -0.000014) *\n Math.sin(m) +\n (0.019993 - 0.000101 * T) * Math.sin(2 * m) +\n 0.000289 * Math.sin(3 * m)) * Math.PI / 180\n const lon = base.pmod(L0 + C, 2 * Math.PI)\n const ano = base.pmod(m + C, 2 * Math.PI)\n return { lon, ano }\n}\n\n/**\n * meanAnomaly returns the mean anomaly of Earth at the given T.\n *\n * @param {Number} T - number of Julian centuries since J2000. See base.J2000Century.\n * @returns {Number} Result is in radians and is not normalized to the range 0..2π.\n */\nexport function meanAnomaly (T) {\n // (25.3) p. 163\n return base.horner(T, 357.52911, 35999.05029, -0.0001537) * Math.PI / 180\n}\n\n/**\n * eccentricity returns eccentricity of the Earth's orbit around the sun.\n *\n * @param {Number} T - number of Julian centuries since J2000. See base.J2000Century.\n * @returns {Number} eccentricity of the Earth's orbit around the sun.\n */\nexport function eccentricity (T) {\n // (25.4) p. 163\n return base.horner(T, 0.016708634, -0.000042037, -0.0000001267)\n}\n\n/**\n * Radius returns the Sun-Earth distance in AU.\n *\n * @param {Number} T - number of Julian centuries since J2000. See base.J2000Century.\n * @returns {Number} Sun-Earth distance in AU\n */\nexport function radius (T) {\n const {lon, ano} = trueLongitude(T) // eslint-disable-line\n const e = eccentricity(T)\n // (25.5) p. 164\n return 1.000001018 * (1 - e * e) / (1 + e * Math.cos(ano))\n}\n\n/**\n * ApparentLongitude returns apparent longitude of the Sun referenced to the true equinox of date.\n * Result includes correction for nutation and aberration. Unit is radians.\n *\n * @param {Number} T - number of Julian centuries since J2000. See base.J2000Century.\n * @returns {Number} apparent longitude of the Sun referenced to the true equinox of date.\n */\nexport function apparentLongitude (T) {\n const Ω = node(T)\n const {lon, ano} = trueLongitude(T) // eslint-disable-line\n return lon - 0.00569 * Math.PI / 180 - 0.00478 * Math.PI / 180 * Math.sin(Ω)\n}\n\n/**\n * @private\n */\nfunction node (T) {\n return 125.04 * Math.PI / 180 - 1934.136 * Math.PI / 180 * T\n}\n\n/**\n * true2000 returns true geometric longitude and anomaly of the sun referenced to equinox J2000.\n * Results are accurate to .01 degree for years 1900 to 2100.\n *\n * @param {Number} T - number of Julian centuries since J2000. See base.J2000Century.\n * @returns {Object}\n * {Number} lon - true geometric longitude, ☉, in radians\n * {Number} ano - true anomaly in radians\n */\nexport function true2000 (T) {\n let { lon, ano } = trueLongitude(T)\n lon -= 0.01397 * Math.PI / 180 * T * 100\n return { lon, ano }\n}\n\n/**\n * trueEquatorial returns the true geometric position of the Sun as equatorial coordinates.\n *\n * @param {Number} jde - Julian ephemeris day\n * @returns {Coord}\n * {Number} ra - right ascension in radians\n * {Number} dec - declination in radians\n */\nexport function trueEquatorial (jde) {\n const {lon, ano} = trueLongitude(base.J2000Century(jde)) // eslint-disable-line\n const ε = nutation.meanObliquity(jde)\n const [ss, cs] = base.sincos(lon)\n const [sε, cε] = base.sincos(ε)\n // (25.6, 25.7) p. 165\n const ra = Math.atan2(cε * ss, cs)\n const dec = sε * ss\n return new base.Coord(ra, dec)\n}\n\n/**\n * apparentEquatorial returns the apparent position of the Sun as equatorial coordinates.\n *\n * @param {Number} jde - Julian ephemeris day\n * @returns {Coord}\n * {Number} ra - right ascension in radians\n * {Number} dec - declination in radians\n */\nexport function apparentEquatorial (jde) {\n const T = base.J2000Century(jde)\n const λ = apparentLongitude(T)\n const ε = nutation.meanObliquity(jde)\n const [sλ, cλ] = base.sincos(λ)\n // (25.8) p. 165\n const [sε, cε] = base.sincos(ε + 0.00256 * Math.PI / 180 * Math.cos(node(T)))\n const ra = Math.atan2(cε * sλ, cλ)\n const dec = Math.asin(sε * sλ)\n return new base.Coord(ra, dec)\n}\n\n/**\n * trueVSOP87 returns the true geometric position of the sun as ecliptic coordinates.\n *\n * Result computed by full VSOP87 theory. Result is at equator and equinox\n * of date in the FK5 frame. It does not include nutation or aberration.\n *\n * @param {Planet} planet\n * @param {Number} jde - Julian ephemeris day\n * @returns {Object}\n * {Number} lon - ecliptic longitude in radians\n * {Number} lat - ecliptic latitude in radians\n * {Number} range - range in AU\n */\nexport function trueVSOP87 (planet, jde) {\n let { lon, lat, range } = planet.position(jde)\n const s = lon + Math.PI\n // FK5 correction.\n const λp = base.horner(base.J2000Century(jde),\n s, -1.397 * Math.PI / 180, -0.00031 * Math.PI / 180)\n const [sλp, cλp] = base.sincos(λp)\n const Δβ = 0.03916 / 3600 * Math.PI / 180 * (cλp - sλp)\n // (25.9) p. 166\n lon = base.pmod(s - 0.09033 / 3600 * Math.PI / 180, 2 * Math.PI)\n lat = Δβ - lat\n return new base.Coord(lon, lat, range)\n}\n\n/**\n * apparentVSOP87 returns the apparent position of the sun as ecliptic coordinates.\n *\n * Result computed by VSOP87, at equator and equinox of date in the FK5 frame,\n * and includes effects of nutation and aberration.\n *\n * @param {Planet} planet\n * @param {Number} jde - Julian ephemeris day\n * @returns {Coord}\n * {Number} lon - ecliptic longitude in radians\n * {Number} lat - ecliptic latitude in radians\n * {Number} range - range in AU\n */\nexport function apparentVSOP87 (planet, jde) {\n // note: see duplicated code in ApparentEquatorialVSOP87.\n let { lon, lat, range } = trueVSOP87(planet, jde)\n const Δψ = nutation.nutation(jde)[0]\n const a = aberration(range)\n lon = lon + Δψ + a\n return new base.Coord(lon, lat, range)\n}\n\n/**\n * apparentEquatorialVSOP87 returns the apparent position of the sun as equatorial coordinates.\n *\n * Result computed by VSOP87, at equator and equinox of date in the FK5 frame,\n * and includes effects of nutation and aberration.\n *\n * @param {Planet} planet\n * @param {Number} jde - Julian ephemeris day\n * @returns {Coord}\n * {Number} ra - right ascension in radians\n * {Number} dec - declination in radians\n * {Number} range - range in AU\n */\nexport function apparentEquatorialVSOP87 (planet, jde) {\n // note: duplicate code from ApparentVSOP87 so we can keep Δε.\n // see also duplicate code in time.E().\n const { lon, lat, range } = trueVSOP87(planet, jde)\n const [Δψ, Δε] = nutation.nutation(jde)\n const a = aberration(range)\n const λ = lon + Δψ + a\n const ε = nutation.meanObliquity(jde) + Δε\n const { ra, dec } = new coord.Ecliptic(λ, lat).toEquatorial(ε)\n return new Coord(ra, dec, range)\n}\n\n/**\n * Low precision formula. The high precision formula is not implemented\n * because the low precision formula already gives position results to the\n * accuracy given on p. 165. The high precision formula represents lots\n * of typing with associated chance of typos, and no way to test the result.\n * @param {Number} range\n * @returns {Number} aberation\n */\nexport function aberration (range) {\n // (25.10) p. 167\n return -20.4898 / 3600 * Math.PI / 180 / range\n}\n\nexport default {\n trueLongitude,\n true: trueLongitude, // BACKWARDS-COMPATIBILITY\n meanAnomaly,\n eccentricity,\n radius,\n apparentLongitude,\n true2000,\n trueEquatorial,\n apparentEquatorial,\n trueVSOP87,\n apparentVSOP87,\n apparentEquatorialVSOP87,\n aberration\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module apparent\n */\n/**\n * Apparent: Chapter 23, Apparent Place of a Star\n */\n\nimport base from './base.js'\nimport coord from './coord.js'\nimport _nutation from './nutation.js'\nimport precess from './precess.js'\nimport solar from './solar.js'\nconst { cos, tan } = Math\n\n/**\n * Nutation returns corrections due to nutation for equatorial coordinates\n * of an object.\n *\n * Results are invalid for objects very near the celestial poles.\n * @param {Number} α - right ascension\n * @param {Number} δ - declination\n * @param {Number} jd - Julian Day\n * @return {Number[]} [Δα1, Δδ1] -\n*/\nexport function nutation (α, δ, jd) { // (α, δ, jd float64) (Δα1, Δδ1 float64)\n const ε = _nutation.meanObliquity(jd)\n const [sinε, cosε] = base.sincos(ε)\n const [Δψ, Δε] = _nutation.nutation(jd)\n const [sinα, cosα] = base.sincos(α)\n const tanδ = tan(δ)\n // (23.1) p. 151\n const Δα1 = (cosε + sinε * sinα * tanδ) * Δψ - cosα * tanδ * Δε\n const Δδ1 = sinε * cosα * Δψ + sinα * Δε\n return [Δα1, Δδ1]\n}\n\n/**\n * κ is the constant of aberration in radians.\n */\nconst κ = 20.49552 * Math.PI / 180 / 3600\n\n/**\n * longitude of perihelian of Earth's orbit.\n */\nexport function perihelion (T) { // (T float64) float64\n return base.horner(T, 102.93735, 1.71946, 0.00046) * Math.PI / 180\n}\n\n/**\n * EclipticAberration returns corrections due to aberration for ecliptic\n * coordinates of an object.\n */\nexport function eclipticAberration (λ, β, jd) { // (λ, β, jd float64) (Δλ, Δβ float64)\n const T = base.J2000Century(jd)\n const { lon, ano } = solar.trueLongitude(T) // eslint-disable-line no-unused-vars\n const e = solar.eccentricity(T)\n const π = perihelion(T)\n const [sβ, cβ] = base.sincos(β)\n const [ssλ, csλ] = base.sincos(lon - λ)\n const [sinπλ, cosπλ] = base.sincos(π - λ)\n // (23.2) p. 151\n const Δλ = κ * (e * cosπλ - csλ) / cβ\n const Δβ = -κ * sβ * (ssλ - e * sinπλ)\n return [Δλ, Δβ]\n}\n\n/**\n * Aberration returns corrections due to aberration for equatorial\n * coordinates of an object.\n */\nexport function aberration (α, δ, jd) { // (α, δ, jd float64) (Δα2, Δδ2 float64)\n const ε = _nutation.meanObliquity(jd)\n const T = base.J2000Century(jd)\n const { lon, ano } = solar.trueLongitude(T) // eslint-disable-line no-unused-vars\n const e = solar.eccentricity(T)\n const π = perihelion(T)\n const [sinα, cosα] = base.sincos(α)\n const [sinδ, cosδ] = base.sincos(δ)\n const [sins, coss] = base.sincos(lon)\n const [sinπ, cosπ] = base.sincos(π)\n const cosε = cos(ε)\n const q1 = cosα * cosε\n // (23.3) p. 152\n const Δα2 = κ * (e * (q1 * cosπ + sinα * sinπ) - (q1 * coss + sinα * sins)) / cosδ\n const q2 = cosε * (tan(ε) * cosδ - sinα * sinδ)\n const q3 = cosα * sinδ\n const Δδ2 = κ * (e * (cosπ * q2 + sinπ * q3) - (coss * q2 + sins * q3))\n return [Δα2, Δδ2]\n}\n\n/**\n * Position computes the apparent position of an object.\n *\n * Position is computed for equatorial coordinates in eqFrom, considering\n * proper motion, precession, nutation, and aberration. Result is in\n * eqTo. EqFrom and eqTo must be non-nil, but may point to the same struct.\n */\nexport function position (eqFrom, epochFrom, epochTo, mα, mδ) { // (eqFrom, eqTo *coord.Equatorial, epochFrom, epochTo float64, mα sexa.HourAngle, mδ sexa.Angle) *coord.Equatorial\n const eqTo = precess.position(eqFrom, epochFrom, epochTo, mα, mδ)\n const jd = base.JulianYearToJDE(epochTo)\n const [Δα1, Δδ1] = nutation(eqTo.ra, eqTo.dec, jd)\n const [Δα2, Δδ2] = aberration(eqTo.ra, eqTo.dec, jd)\n eqTo.ra += Δα1 + Δα2\n eqTo.dec += Δδ1 + Δδ2\n return eqTo\n}\n\n/**\n * AberrationRonVondrak uses the Ron-Vondrák expression to compute corrections\n * due to aberration for equatorial coordinates of an object.\n */\nexport function aberrationRonVondrak (α, δ, jd) { // (α, δ, jd float64) (Δα, Δδ float64)\n const T = base.J2000Century(jd)\n const r = {\n T,\n L2: 3.1761467 + 1021.3285546 * T,\n L3: 1.7534703 + 628.3075849 * T,\n L4: 6.2034809 + 334.0612431 * T,\n L5: 0.5995465 + 52.9690965 * T,\n L6: 0.8740168 + 21.3299095 * T,\n L7: 5.4812939 + 7.4781599 * T,\n L8: 5.3118863 + 3.8133036 * T,\n Lp: 3.8103444 + 8399.6847337 * T,\n D: 5.1984667 + 7771.3771486 * T,\n Mp: 2.3555559 + 8328.6914289 * T,\n F: 1.6279052 + 8433.4661601 * T\n }\n let Xp = 0\n let Yp = 0\n let Zp = 0\n // sum smaller terms first\n for (let i = 35; i >= 0; i--) {\n const [x, y, z] = rvTerm[i](r)\n Xp += x\n Yp += y\n Zp += z\n }\n const [sinα, cosα] = base.sincos(α)\n const [sinδ, cosδ] = base.sincos(δ)\n // (23.4) p. 156\n return [(Yp * cosα - Xp * sinα) / (c * cosδ), -((Xp * cosα + Yp * sinα) * sinδ - Zp * cosδ) / c]\n}\n\nconst c = 17314463350 // unit is 1e-8 AU / day\n\n// r = {T, L2, L3, L4, L5, L6, L7, L8, Lp, D, Mp, F}\nconst rvTerm = [\n function (r) { // 1\n const [sinA, cosA] = base.sincos(r.L3)\n return [(-1719914 - 2 * r.T) * sinA - 25 * cosA,\n (25 - 13 * r.T) * sinA + (1578089 + 156 * r.T) * cosA,\n (10 + 32 * r.T) * sinA + (684185 - 358 * r.T) * cosA\n ]\n },\n function (r) { // 2\n const [sinA, cosA] = base.sincos(2 * r.L3)\n return [(6434 + 141 * r.T) * sinA + (28007 - 107 * r.T) * cosA,\n (25697 - 95 * r.T) * sinA + (-5904 - 130 * r.T) * cosA,\n (11141 - 48 * r.T) * sinA + (-2559 - 55 * r.T) * cosA\n ]\n },\n function (r) { // 3\n const [sinA, cosA] = base.sincos(r.L5)\n return [715 * sinA, 6 * sinA - 657 * cosA, -15 * sinA - 282 * cosA]\n },\n function (r) { // 4\n const [sinA, cosA] = base.sincos(r.Lp)\n return [715 * sinA, -656 * cosA, -285 * cosA]\n },\n function (r) { // 5\n const [sinA, cosA] = base.sincos(3 * r.L3)\n return [(486 - 5 * r.T) * sinA + (-236 - 4 * r.T) * cosA,\n (-216 - 4 * r.T) * sinA + (-446 + 5 * r.T) * cosA, -94 * sinA - 193 * cosA\n ]\n },\n function (r) { // 6\n const [sinA, cosA] = base.sincos(r.L6)\n return [159 * sinA, 2 * sinA - 147 * cosA, -6 * sinA - 61 * cosA]\n },\n function (r) { // 7\n const cosA = Math.cos(r.F)\n return [0, 26 * cosA, -59 * cosA]\n },\n function (r) { // 8\n const [sinA, cosA] = base.sincos(r.Lp + r.Mp)\n return [39 * sinA, -36 * cosA, -16 * cosA]\n },\n function (r) { // 9\n const [sinA, cosA] = base.sincos(2 * r.L5)\n return [33 * sinA - 10 * cosA, -9 * sinA - 30 * cosA, -5 * sinA - 13 * cosA]\n },\n function (r) { // 10\n const [sinA, cosA] = base.sincos(2 * r.L3 - r.L5)\n return [31 * sinA + cosA, sinA - 28 * cosA, -12 * cosA]\n },\n function (r) { // 11\n const [sinA, cosA] = base.sincos(3 * r.L3 - 8 * r.L4 + 3 * r.L5)\n return [8 * sinA - 28 * cosA, 25 * sinA + 8 * cosA, 11 * sinA + 3 * cosA]\n },\n function (r) { // 12\n const [sinA, cosA] = base.sincos(5 * r.L3 - 8 * r.L4 + 3 * r.L5)\n return [8 * sinA - 28 * cosA, -25 * sinA - 8 * cosA, -11 * sinA + -3 * cosA]\n },\n function (r) { // 13\n const [sinA, cosA] = base.sincos(2 * r.L2 - r.L3)\n return [21 * sinA, -19 * cosA, -8 * cosA]\n },\n function (r) { // 14\n const [sinA, cosA] = base.sincos(r.L2)\n return [-19 * sinA, 17 * cosA, 8 * cosA]\n },\n function (r) { // 15\n const [sinA, cosA] = base.sincos(r.L7)\n return [17 * sinA, -16 * cosA, -7 * cosA]\n },\n function (r) { // 16\n const [sinA, cosA] = base.sincos(r.L3 - 2 * r.L5)\n return [16 * sinA, 15 * cosA, sinA + 7 * cosA]\n },\n function (r) { // 17\n const [sinA, cosA] = base.sincos(r.L8)\n return [16 * sinA, sinA - 15 * cosA, -3 * sinA - 6 * cosA]\n },\n function (r) { // 18\n const [sinA, cosA] = base.sincos(r.L3 + r.L5)\n return [11 * sinA - cosA, -sinA - 10 * cosA, -sinA - 5 * cosA]\n },\n function (r) { // 19\n const [sinA, cosA] = base.sincos(2 * r.L2 - 2 * r.L3)\n return [-11 * cosA, -10 * sinA, -4 * sinA]\n },\n function (r) { // 20\n const [sinA, cosA] = base.sincos(r.L3 - r.L5)\n return [-11 * sinA - 2 * cosA, -2 * sinA + 9 * cosA, -sinA + 4 * cosA]\n },\n function (r) { // 21\n const [sinA, cosA] = base.sincos(4 * r.L3)\n return [-7 * sinA - 8 * cosA, -8 * sinA + 6 * cosA, -3 * sinA + 3 * cosA]\n },\n function (r) { // 22\n const [sinA, cosA] = base.sincos(3 * r.L3 - 2 * r.L5)\n return [-10 * sinA, 9 * cosA, 4 * cosA]\n },\n function (r) { // 23\n const [sinA, cosA] = base.sincos(r.L2 - 2 * r.L3)\n return [-9 * sinA, -9 * cosA, -4 * cosA]\n },\n function (r) { // 24\n const [sinA, cosA] = base.sincos(2 * r.L2 - 3 * r.L3)\n return [-9 * sinA, -8 * cosA, -4 * cosA]\n },\n function (r) { // 25\n const [sinA, cosA] = base.sincos(2 * r.L6)\n return [-9 * cosA, -8 * sinA, -3 * sinA]\n },\n function (r) { // 26\n const [sinA, cosA] = base.sincos(2 * r.L2 - 4 * r.L3)\n return [-9 * cosA, 8 * sinA, 3 * sinA]\n },\n function (r) { // 27\n const [sinA, cosA] = base.sincos(3 * r.L3 - 2 * r.L4)\n return [8 * sinA, -8 * cosA, -3 * cosA]\n },\n function (r) { // 28\n const [sinA, cosA] = base.sincos(r.Lp + 2 * r.D - r.Mp)\n return [8 * sinA, -7 * cosA, -3 * cosA]\n },\n function (r) { // 29\n const [sinA, cosA] = base.sincos(8 * r.L2 - 12 * r.L3)\n return [-4 * sinA - 7 * cosA, -6 * sinA + 4 * cosA, -3 * sinA + 2 * cosA]\n },\n function (r) { // 30\n const [sinA, cosA] = base.sincos(8 * r.L2 - 14 * r.L3)\n return [-4 * sinA - 7 * cosA, 6 * sinA - 4 * cosA, 3 * sinA - 2 * cosA]\n },\n function (r) { // 31\n const [sinA, cosA] = base.sincos(2 * r.L4)\n return [-6 * sinA - 5 * cosA, -4 * sinA + 5 * cosA, -2 * sinA + 2 * cosA]\n },\n function (r) { // 32\n const [sinA, cosA] = base.sincos(3 * r.L2 - 4 * r.L3)\n return [-sinA - cosA, -2 * sinA - 7 * cosA, sinA - 4 * cosA]\n },\n function (r) { // 33\n const [sinA, cosA] = base.sincos(2 * r.L3 - 2 * r.L5)\n return [4 * sinA - 6 * cosA, -5 * sinA - 4 * cosA, -2 * sinA - 2 * cosA]\n },\n function (r) { // 34\n const [sinA, cosA] = base.sincos(3 * r.L2 - 3 * r.L3)\n return [-7 * cosA, -6 * sinA, -3 * sinA]\n },\n function (r) { // 35\n const [sinA, cosA] = base.sincos(2 * r.L3 - 2 * r.L4)\n return [5 * sinA - 5 * cosA, -4 * sinA - 5 * cosA, -2 * sinA - 2 * cosA]\n },\n function (r) { // 36\n const [sinA, cosA] = base.sincos(r.Lp - 2 * r.D)\n return [5 * sinA, -5 * cosA, -2 * cosA]\n }\n]\n\n/**\n * PositionRonVondrak computes the apparent position of an object using\n * the Ron-Vondrák expression for aberration.\n *\n * Position is computed for equatorial coordinates in eqFrom, considering\n * proper motion, aberration, precession, and _nutation. Result is in\n * eqTo. EqFrom and eqTo must be non-nil, but may point to the same struct.\n *\n * Note the Ron-Vondrák expression is only valid for the epoch J2000.\n * EqFrom must be coordinates at epoch J2000.\n */\nexport function positionRonVondrak (eqFrom, epochTo, mα, mδ) { // (eqFrom, eqTo *coord.Equatorial, epochTo float64, mα sexa.HourAngle, mδ sexa.Angle) *coord.Equatorial\n const t = epochTo - 2000\n let eqTo = new coord.Equatorial()\n eqTo.ra = eqFrom.ra + mα.rad() * t\n eqTo.dec = eqFrom.dec + mδ.rad() * t\n const jd = base.JulianYearToJDE(epochTo)\n const [Δα, Δδ] = aberrationRonVondrak(eqTo.ra, eqTo.dec, jd)\n eqTo.ra += Δα\n eqTo.dec += Δδ\n eqTo = precess.position(eqTo, 2000, epochTo, 0, 0)\n const [Δα1, Δδ1] = nutation(eqTo.ra, eqTo.dec, jd)\n eqTo.ra += Δα1\n eqTo.dec += Δδ1\n return eqTo\n}\n\nexport default {\n nutation,\n perihelion,\n eclipticAberration,\n aberration,\n position,\n aberrationRonVondrak,\n positionRonVondrak\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module apsis\n */\n/**\n * Apsis: Chapter 50, Perigee and apogee of the Moon\n */\n\nimport base from './base.js'\nconst { sin, cos } = Math\n\n/**\n * conversion factor from k to T, given in (50.3) p. 356\n */\nconst ck = 1 / 1325.55\nconst D2R = Math.PI / 180\n\n// from http://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html\nexport const EARTH_RADIUS = 6378.137 // km\n// from http://nssdc.gsfc.nasa.gov/planetary/factsheet/moonfact.html\nexport const MOON_RADIUS = 1738.1 // km\n\n/**\n * mean time of perigee or apogee\n * (50.1) p. 355\n */\nconst mean = function (T) {\n return base.horner(T, 2451534.6698, 27.55454989 / ck,\n -0.0006691, -0.000001098, 0.0000000052)\n}\n\n/**\n * snap returns k at half h nearest year y.\n */\nconst snap = function (y, h) {\n const k = (y - 1999.97) * 13.2555 // (50.2) p. 355\n return Math.floor(k - h + 0.5) + h\n}\n\n/**\n * meanPerigee returns the jde of the mean perigee of the Moon nearest the given date.\n *\n * @param {Number} year - is a decimal year specifying a date.\n * @return {Number} jde - Julian ephemeris day\n */\nexport function meanPerigee (year) {\n return mean(snap(year, 0) * ck)\n}\n\n/**\n * perigee returns the jde of perigee of the Moon nearest the given date.\n *\n * @param {Number} year - is a decimal year specifying a date.\n * @return {Number} jde - Julian ephemeris day\n */\nexport function perigee (year) {\n const l = new La(year, 0)\n return mean(l.T) + l.perigeeCorr()\n}\n\n/**\n * meanApogee returns the jde of the mean apogee of the Moon nearest the given date.\n *\n * @param {Number} year - is a decimal year specifying a date.\n * @return {Number} jde - Julian ephemeris day\n */\nexport function meanApogee (year) { // (year float64) float64\n return mean(snap(year, 0.5) * ck)\n}\n\n/**\n * apogee returns the jde of apogee of the Moon nearest the given date.\n *\n * @param {Number} year - is a decimal year specifying a date.\n * @return {Number} jde - Julian ephemeris day\n */\nexport function apogee (year) {\n const l = new La(year, 0.5)\n return mean(l.T) + l.apogeeCorr()\n}\n\n/**\n * apogeeParallax returns equatorial horizontal parallax of the Moon at the Apogee nearest the given date.\n *\n * @param {Number} year - is a decimal year specifying a date.\n * @return {Number} equatorial horizontal parallax in radians\n */\nexport function apogeeParallax (year) {\n return new La(year, 0.5).apogeeParallax()\n}\n\n/**\n * perigeeParallax returns equatorial horizontal parallax of the Moon at the Apogee nearest the given date.\n *\n * @param {Number} year - is a decimal year specifying a date.\n * @return {Number} equatorial horizontal parallax in radians\n */\nexport function perigeeParallax (year) {\n return new La(year, 0).perigeeParallax()\n}\n\n/**\n * Calculate the distance earth - moon (center to center) using the parallax angle in radians\n *\n * @param {Number} parallax - parallax angle in radians\n * @return {Number} distance in `km`\n */\nexport function distance (parallax) {\n return EARTH_RADIUS / sin(parallax)\n}\n\nclass La {\n constructor (y, h) {\n this.k = snap(y, h)\n this.T = this.k * ck // (50.3) p. 350\n this.D = base.horner(this.T, 171.9179 * D2R, 335.9106046 * D2R / ck,\n -0.0100383 * D2R, -0.00001156 * D2R, 0.000000055 * D2R)\n this.M = base.horner(this.T, 347.3477 * D2R, 27.1577721 * D2R / ck,\n -0.000813 * D2R, -0.000001 * D2R)\n this.F = base.horner(this.T, 316.6109 * D2R, 364.5287911 * D2R / ck,\n -0.0125053 * D2R, -0.0000148 * D2R)\n return this\n }\n\n /**\n * perigee correction\n */\n perigeeCorr () {\n const l = this\n return -1.6769 * sin(2 * l.D) +\n 0.4589 * sin(4 * l.D) +\n -0.1856 * sin(6 * l.D) +\n 0.0883 * sin(8 * l.D) +\n (-0.0773 + 0.00019 * l.T) * sin(2 * l.D - l.M) +\n (0.0502 - 0.00013 * l.T) * sin(l.M) +\n -0.046 * sin(10 * l.D) +\n (0.0422 - 0.00011 * l.T) * sin(4 * l.D - l.M) +\n -0.0256 * sin(6 * l.D - l.M) +\n 0.0253 * sin(12 * l.D) +\n 0.0237 * sin(l.D) +\n 0.0162 * sin(8 * l.D - l.M) +\n -0.0145 * sin(14 * l.D) +\n 0.0129 * sin(2 * l.F) +\n -0.0112 * sin(3 * l.D) +\n -0.0104 * sin(10 * l.D - l.M) +\n 0.0086 * sin(16 * l.D) +\n 0.0069 * sin(12 * l.D - l.M) +\n 0.0066 * sin(5 * l.D) +\n -0.0053 * sin(2 * (l.D + l.F)) +\n -0.0052 * sin(18 * l.D) +\n -0.0046 * sin(14 * l.D - l.M) +\n -0.0041 * sin(7 * l.D) +\n 0.004 * sin(2 * l.D + l.M) +\n 0.0032 * sin(20 * l.D) +\n -0.0032 * sin(l.D + l.M) +\n 0.0031 * sin(16 * l.D - l.M) +\n -0.0029 * sin(4 * l.D + l.M) +\n 0.0027 * sin(9 * l.D) +\n 0.0027 * sin(4 * l.D + 2 * l.F) +\n -0.0027 * sin(2 * (l.D - l.M)) +\n 0.0024 * sin(4 * l.D - 2 * l.M) +\n -0.0021 * sin(6 * l.D - 2 * l.M) +\n -0.0021 * sin(22 * l.D) +\n -0.0021 * sin(18 * l.D - l.M) +\n 0.0019 * sin(6 * l.D + l.M) +\n -0.0018 * sin(11 * l.D) +\n -0.0014 * sin(8 * l.D + l.M) +\n -0.0014 * sin(4 * l.D - 2 * l.F) +\n -0.0014 * sin(6 * l.D + 2 * l.F) +\n 0.0014 * sin(3 * l.D + l.M) +\n -0.0014 * sin(5 * l.D + l.M) +\n 0.0013 * sin(13 * l.D) +\n 0.0013 * sin(20 * l.D - l.M) +\n 0.0011 * sin(3 * l.D + 2 * l.M) +\n -0.0011 * sin(2 * (2 * l.D + l.F - l.M)) +\n -0.001 * sin(l.D + 2 * l.M) +\n -0.0009 * sin(22 * l.D - l.M) +\n -0.0008 * sin(4 * l.F) +\n 0.0008 * sin(6 * l.D - 2 * l.F) +\n 0.0008 * sin(2 * (l.D - l.F) + l.M) +\n 0.0007 * sin(2 * l.M) +\n 0.0007 * sin(2 * l.F - l.M) +\n 0.0007 * sin(2 * l.D + 4 * l.F) +\n -0.0006 * sin(2 * (l.F - l.M)) +\n -0.0006 * sin(2 * (l.D - l.F + l.M)) +\n 0.0006 * sin(24 * l.D) +\n 0.0005 * sin(4 * (l.D - l.F)) +\n 0.0005 * sin(2 * (l.D + l.M)) +\n -0.0004 * sin(l.D - l.M)\n }\n\n /**\n * apogee correction\n */\n apogeeCorr () {\n const l = this\n return 0.4392 * sin(2 * l.D) +\n 0.0684 * sin(4 * l.D) +\n (0.0456 - 0.00011 * l.T) * sin(l.M) +\n (0.0426 - 0.00011 * l.T) * sin(2 * l.D - l.M) +\n 0.0212 * sin(2 * l.F) +\n -0.0189 * sin(l.D) +\n 0.0144 * sin(6 * l.D) +\n 0.0113 * sin(4 * l.D - l.M) +\n 0.0047 * sin(2 * (l.D + l.F)) +\n 0.0036 * sin(l.D + l.M) +\n 0.0035 * sin(8 * l.D) +\n 0.0034 * sin(6 * l.D - l.M) +\n -0.0034 * sin(2 * (l.D - l.F)) +\n 0.0022 * sin(2 * (l.D - l.M)) +\n -0.0017 * sin(3 * l.D) +\n 0.0013 * sin(4 * l.D + 2 * l.F) +\n 0.0011 * sin(8 * l.D - l.M) +\n 0.001 * sin(4 * l.D - 2 * l.M) +\n 0.0009 * sin(10 * l.D) +\n 0.0007 * sin(3 * l.D + l.M) +\n 0.0006 * sin(2 * l.M) +\n 0.0005 * sin(2 * l.D + l.M) +\n 0.0005 * sin(2 * (l.D + l.M)) +\n 0.0004 * sin(6 * l.D + 2 * l.F) +\n 0.0004 * sin(6 * l.D - 2 * l.M) +\n 0.0004 * sin(10 * l.D - l.M) +\n -0.0004 * sin(5 * l.D) +\n -0.0004 * sin(4 * l.D - 2 * l.F) +\n 0.0003 * sin(2 * l.F + l.M) +\n 0.0003 * sin(12 * l.D) +\n 0.0003 * sin(2 * l.D + 2 * l.F - l.M) +\n -0.0003 * sin(l.D - l.M)\n }\n\n /**\n * apogee parallax\n */\n apogeeParallax () {\n const s = Math.PI / 180 / 3600\n const l = this\n return 3245.251 * s +\n -9.147 * s * cos(2 * l.D) +\n -0.841 * s * cos(l.D) +\n 0.697 * s * cos(2 * l.F) +\n (-0.656 * s + 0.0016 * s * l.T) * cos(l.M) +\n 0.355 * s * cos(4 * l.D) +\n 0.159 * s * cos(2 * l.D - l.M) +\n 0.127 * s * cos(l.D + l.M) +\n 0.065 * s * cos(4 * l.D - l.M) +\n 0.052 * s * cos(6 * l.D) +\n 0.043 * s * cos(2 * l.D + l.M) +\n 0.031 * s * cos(2 * (l.D + l.F)) +\n -0.023 * s * cos(2 * (l.D - l.F)) +\n 0.022 * s * cos(2 * (l.D - l.M)) +\n 0.019 * s * cos(2 * (l.D + l.M)) +\n -0.016 * s * cos(2 * l.M) +\n 0.014 * s * cos(6 * l.D - l.M) +\n 0.01 * s * cos(8 * l.D)\n }\n\n /**\n * perigee parallax\n */\n perigeeParallax () {\n const s = Math.PI / 180 / 3600\n const l = this\n return 3629.215 * s +\n 63.224 * s * cos(2 * l.D) +\n -6.990 * s * cos(4 * l.D) +\n (2.834 * s - 0.0071 * l.T * s) * cos(2 * l.D - l.M) +\n 1.927 * s * cos(6 * l.D) +\n -1.263 * s * cos(l.D) +\n -0.702 * s * cos(8 * l.D) +\n (0.696 * s - 0.0017 * l.T * s) * cos(l.M) +\n -0.690 * s * cos(2 * l.F) +\n (-0.629 * s + 0.0016 * l.T * s) * cos(4 * l.D - l.M) +\n -0.392 * s * cos(2 * (l.D - l.F)) +\n 0.297 * s * cos(10 * l.D) +\n 0.260 * s * cos(6 * l.D - l.M) +\n 0.201 * s * cos(3 * l.D) +\n -0.161 * s * cos(2 * l.D + l.M) +\n 0.157 * s * cos(l.D + l.M) +\n -0.138 * s * cos(12 * l.D) +\n -0.127 * s * cos(8 * l.D - l.M) +\n 0.104 * s * cos(2 * (l.D + l.F)) +\n 0.104 * s * cos(2 * (l.D - l.M)) +\n -0.079 * s * cos(5 * l.D) +\n 0.068 * s * cos(14 * l.D) +\n 0.067 * s * cos(10 * l.D - l.M) +\n 0.054 * s * cos(4 * l.D + l.M) +\n -0.038 * s * cos(12 * l.D - l.M) +\n -0.038 * s * cos(4 * l.D - 2 * l.M) +\n 0.037 * s * cos(7 * l.D) +\n -0.037 * s * cos(4 * l.D + 2 * l.F) +\n -0.035 * s * cos(16 * l.D) +\n -0.030 * s * cos(3 * l.D + l.M) +\n 0.029 * s * cos(l.D - l.M) +\n -0.025 * s * cos(6 * l.D + l.M) +\n 0.023 * s * cos(2 * l.M) +\n 0.023 * s * cos(14 * l.D - l.M) +\n -0.023 * s * cos(2 * (l.D + l.M)) +\n 0.022 * s * cos(6 * l.D - 2 * l.M) +\n -0.021 * s * cos(2 * l.D - 2 * l.F - l.M) +\n -0.020 * s * cos(9 * l.D) +\n 0.019 * s * cos(18 * l.D) +\n 0.017 * s * cos(6 * l.D + 2 * l.F) +\n 0.014 * s * cos(2 * l.F - l.M) +\n -0.014 * s * cos(16 * l.D - l.M) +\n 0.013 * s * cos(4 * l.D - 2 * l.F) +\n 0.012 * s * cos(8 * l.D + l.M) +\n 0.011 * s * cos(11 * l.D) +\n 0.010 * s * cos(5 * l.D + l.M) +\n -0.010 * s * cos(20 * l.D)\n }\n}\n\nexport default {\n EARTH_RADIUS,\n MOON_RADIUS,\n meanPerigee,\n perigee,\n meanApogee,\n apogee,\n apogeeParallax,\n perigeeParallax,\n distance\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module binary\n */\n/**\n * Binary: Chapter 57, Binary Stars\n */\nimport base from './base.js'\nconst { atan, atan2, cos, sqrt, tan } = Math\n\n/**\n * computes mean anomaly for the given date.\n *\n * @param {Number} year - is a decimal year specifying the date\n * @param {Number} T - is time of periastron, as a decimal year\n * @param {Number} P - is period of revolution in mean solar years\n * @returns {Number} mean anomaly in radians.\n */\nexport function meanAnomaly (year, T, P) { // (year, T, P float64) float64\n const n = 2 * Math.PI / P\n return base.pmod(n * (year - T), 2 * Math.PI)\n}\n\n/**\n * Position computes apparent position angle and angular distance of\n * components of a binary star.\n *\n * @param {Number} a - is apparent semimajor axis in arc seconds\n * @param {Number} e - is eccentricity of the true orbit\n * @param {Number} i - is inclination relative to the line of sight\n * @param {Number} Ω - is position angle of the ascending node\n * @param {Number} ω - is longitude of periastron\n * @param {Number} E - is eccentric anomaly, computed for example with package kepler\n * and the mean anomaly as returned by function M in this package.\n * @returns {Number[]} [θ, ρ]\n * {Number} θ -is the apparent position angle in radians,\n * {Number} ρ is the angular distance in arc seconds.\n */\nexport function position (a, e, i, Ω, ω, E) { // (a, e, i, Ω, ω, E float64) (θ, ρ float64)\n const r = a * (1 - e * cos(E))\n const ν = 2 * atan(sqrt((1 + e) / (1 - e)) * tan(E / 2))\n const [sinνω, cosνω] = base.sincos(ν + ω)\n const cosi = cos(i)\n const num = sinνω * cosi\n let θ = atan2(num, cosνω) + Ω\n if (θ < 0) {\n θ += 2 * Math.PI\n }\n const ρ = r * sqrt(num * num + cosνω * cosνω)\n return [θ, ρ]\n}\n\n/**\n * ApparentEccentricity returns apparent eccenticity of a binary star\n * given true orbital elements.\n *\n * @param {Number} e - is eccentricity of the true orbit\n * @param {Number} i - is inclination relative to the line of sight\n * @param {Number} ω - is longitude of periastron\n * @returns {Number} apparent eccenticity of a binary star\n */\nexport function apparentEccentricity (e, i, ω) { // (e, i, ω float64) float64\n const cosi = cos(i)\n const [sinω, cosω] = base.sincos(ω)\n const A = (1 - e * e * cosω * cosω) * cosi * cosi\n const B = e * e * sinω * cosω * cosi\n const C = 1 - e * e * sinω * sinω\n const d = A - C\n const sqrtD = sqrt(d * d + 4 * B * B)\n return sqrt(2 * sqrtD / (A + C + sqrtD))\n}\n\nexport default {\n meanAnomaly,\n position,\n apparentEccentricity\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module circle\n */\n/**\n * Circle: Chapter 20, Smallest Circle containing three Celestial Bodies.\n */\n\nimport { Coord } from './base.js' // eslint-disable-line no-unused-vars\n\n/**\n * Smallest finds the smallest circle containing three points.\n *\n * Arguments should represent coordinates in right ascension and declination\n * or longitude and latitude. Result Δ is the diameter of the circle, typeI\n * is true if solution is of type I.\n *\n * @param {Coord} c1 - ra, dec point 1\n * @param {Coord} c2 - ra, dec point 2\n * @param {Coord} c3 - ra, dec point 3\n * @returns {Array} [Δ, typeI]\n * {Number} Δ - diameter of the circle\n * {Number} typeI - true - Two points on circle, one interior.\n * false - All three points on circle.\n */\nexport function smallest (c1, c2, c3) {\n // Using haversine formula\n const cd1 = Math.cos(c1.dec)\n const cd2 = Math.cos(c2.dec)\n const cd3 = Math.cos(c3.dec)\n let a = 2 * Math.asin(Math.sqrt(hav(c2.dec - c1.dec) + cd1 * cd2 * hav(c2.ra - c1.ra)))\n let b = 2 * Math.asin(Math.sqrt(hav(c3.dec - c2.dec) + cd2 * cd3 * hav(c3.ra - c2.ra)))\n let c = 2 * Math.asin(Math.sqrt(hav(c1.dec - c3.dec) + cd3 * cd1 * hav(c1.ra - c3.ra)))\n if (b > a) {\n [a, b] = noswap(b, a)\n }\n if (c > a) {\n [a, c] = noswap(c, a)\n }\n if (a * a >= b * b + c * c) {\n return [a, true]\n }\n // (20.1) p. 128\n return [2 * a * b * c / Math.sqrt((a + b + c) * (a + b - c) * (b + c - a) * (a + c - b)), false]\n}\n\nconst noswap = function (a, b) {\n return [a, b]\n}\n\n/**\n * haversine function (17.5) p. 115\n */\nconst hav = function (a) {\n return 0.5 * (1 - Math.cos(a))\n}\n\nexport default {\n smallest\n}\n","/**\n * DO NOT EDIT MANUALLY\n * Use `scripts/deltat.js` to generate file.\n * Datasets are from and\n * \n */\nconst m = {\n historic: {\n table: [44, 43, 43, 41, 40, 39, 38, 37, 37, 36, 36, 36, 37, 37, 38, 37, 36, 36, 35, 35, 34, 33, 33, 32, 32, 31, 31, 30, 30, 29, 29, 29, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 25, 26, 26, 26, 26, 25, 25, 25, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 23, 23, 23, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 20, 20, 20, 20, 20, 19, 19, 19, 19, 19, 20, 20, 20, 20, 19, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21.1, 21, 21, 21, 20.9, 20.8, 20.7, 20.6, 20.4, 20.2, 20, 19.7, 19.4, 19.1, 18.7, 18.3, 17.8, 17.4, 17, 16.8, 16.6, 16.4, 16.1, 15.9, 15.7, 15.5, 15.3, 15, 14.7, 14.5, 14.3, 14.2, 14.1, 14.1, 14.1, 13.9, 13.7, 13.6, 13.5, 13.5, 13.5, 13.5, 13.4, 13.4, 13.4, 13.4, 13.3, 13.3, 13.2, 13.2, 13.2, 13.1, 13.1, 13.1, 13, 13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8, 13.9, 14, 14, 14.1, 14.1, 14.1, 14.1, 14.2, 14.3, 14.4, 14.4, 14.5, 14.6, 14.6, 14.7, 14.7, 14.7, 14.8, 14.8, 14.9, 14.9, 15, 15, 15.1, 15.2, 15.3, 15.4, 15.5, 15.6, 15.6, 15.6, 15.8, 15.9, 15.9, 15.9, 15.8, 15.7, 15.8, 15.7, 15.7, 15.7, 15.8, 15.9, 16.1, 16.1, 16, 15.9, 15.9, 15.7, 15.4, 15.3, 15.4, 15.5, 15.6, 15.6, 15.6, 15.6, 15.6, 15.6, 15.6, 15.5, 15.5, 15.4, 15.3, 15.2, 15.1, 14.9, 14.8, 14.6, 14.4, 14.3, 14.2, 14.1, 14.2, 14.2, 13.9, 13.7, 13.5, 13.3, 13.1, 13, 13.2, 13.2, 13.1, 13.1, 13.2, 13.3, 13.5, 13.5, 13.4, 13.2, 13.2, 13.1, 13.1, 13, 12.8, 12.6, 12.7, 12.6, 12.3, 12, 11.9, 11.8, 11.6, 11.4, 11.2, 11.1, 11.1, 11.1, 11.1, 11.1, 11.2, 11.1, 11.1, 11.2, 11.4, 11.5, 11.3, 11.2, 11.4, 11.7, 11.9, 11.9, 11.9, 11.8, 11.7, 11.8, 11.8, 11.8, 11.7, 11.6, 11.6, 11.5, 11.5, 11.4, 11.4, 11.3, 11.3, 11.13, 11.16, 10.94, 10.72, 10.29, 10.04, 9.94, 9.91, 9.88, 9.86, 9.72, 9.67, 9.66, 9.64, 9.51, 9.4, 9.21, 9, 8.6, 8.29, 7.95, 7.73, 7.59, 7.49, 7.36, 7.26, 7.1, 7, 6.89, 6.82, 6.73, 6.64, 6.39, 6.28, 6.25, 6.27, 6.25, 6.27, 6.22, 6.24, 6.22, 6.27, 6.3, 6.36, 6.35, 6.37, 6.32, 6.33, 6.33, 6.37, 6.37, 6.41, 6.4, 6.44, 6.46, 6.51, 6.48, 6.51, 6.53, 6.58, 6.55, 6.61, 6.69, 6.8, 6.84, 6.94, 7.03, 7.13, 7.15, 7.22, 7.26, 7.3, 7.23, 7.22, 7.21, 7.2, 6.99, 6.98, 7.19, 7.36, 7.35, 7.39, 7.41, 7.45, 7.36, 7.18, 6.95, 6.72, 6.45, 6.24, 5.92, 5.59, 5.15, 4.67, 4.11, 3.52, 2.94, 2.47, 1.97, 1.52, 1.04, 0.6, 0.11, -0.34, -0.82, -1.25, -1.7, -2.08, -2.48, -2.82, -3.19, -3.5, -3.84, -4.14, -4.43, -4.59, -4.79, -4.92, -5.09, -5.24, -5.36, -5.34, -5.37, -5.32, -5.34, -5.33, -5.4, -5.47, -5.58, -5.66, -5.74, -5.68, -5.69, -5.65, -5.67, -5.68, -5.73, -5.72, -5.78, -5.79, -5.86, -5.89, -6.01, -6.13, -6.28, -6.41, -6.53, -6.49, -6.5, -6.45, -6.41, -6.26, -6.11, -5.9, -5.63, -5.13, -4.68, -4.19, -3.72, -3.21, -2.7, -2.09, -1.48, -0.75, -0.08, 0.62, 1.26, 1.95, 2.59, 3.28, 3.92, 4.61, 5.2, 5.73, 6.29, 7, 7.68, 8.45, 9.13, 9.78, 10.38, 10.99, 11.64, 12.47, 13.23, 14, 14.69, 15.38, 16, 16.64, 17.19, 17.72, 18.19, 18.67, 19.13, 19.69, 20.14, 20.54, 20.86, 21.14, 21.41, 21.78, 22.06, 22.3, 22.51, 22.79, 23.01, 23.29, 23.46, 23.55, 23.63, 23.8, 23.95, 24.25, 24.39, 24.42, 24.34, 24.22, 24.1, 24.08, 24.02, 24.04, 23.98, 23.91, 23.89, 23.95, 23.93, 23.92, 23.88, 23.94, 23.91, 23.82, 23.76, 23.87, 23.91, 23.95, 23.96, 24, 24.04, 24.2, 24.35, 24.61, 24.82, 25.09, 25.3, 25.56, 25.77, 26.05, 26.27, 26.54, 26.76, 27.04, 27.27, 27.55, 27.77, 28.03, 28.25, 28.5, 28.7, 28.95, 29.15, 29.38, 29.57, 29.8, 29.97, 30.19, 30.36, 30.57, 30.72, 30.93, 31.07, 31.24, 31.349, 31.516, 31.677, 31.923, 32.166, 32.449, 32.671, 32.919, 33.15, 33.397, 33.584, 33.804, 33.992, 34.24, 34.466, 34.731, 35.03, 35.4, 35.738, 36.147, 36.546, 36.995, 37.429, 37.879, 38.291, 38.753, 39.204, 39.707, 40.182, 40.706, 41.17, 41.686, 42.227, 42.825, 43.373, 43.959, 44.486, 44.997, 45.477, 45.983, 46.458, 46.997, 47.521, 48.034, 48.535, 49.099, 49.589, 50.102, 50.54, 50.975, 51.382, 51.81, 52.168, 52.572, 52.957, 53.434, 53.789, 54.087],\n first: 1657,\n last: 1984.5\n },\n data: {\n table: [43.4724372, 43.5648351, 43.6736863, 43.7782156, 43.8763273, 43.9562443, 44.0314956, 44.1131788, 44.1982187, 44.2951747, 44.3936471, 44.4840562, 44.5646335, 44.6425099, 44.7385767, 44.8370135, 44.9302138, 44.9986146, 45.0583549, 45.1283911, 45.2063835, 45.2980068, 45.3897017, 45.476138, 45.5632485, 45.6450189, 45.7374593, 45.8283721, 45.9132976, 45.9819705, 46.0407484, 46.1067084, 46.1825041, 46.2788561, 46.3713351, 46.4567207, 46.544486, 46.6310899, 46.7302231, 46.8283588, 46.9247443, 46.9969757, 47.0709148, 47.1450515, 47.2361542, 47.3413241, 47.4319364, 47.5213815, 47.6049313, 47.6837388, 47.7781381, 47.8770756, 47.9687104, 48.0348257, 48.0942021, 48.1608205, 48.2460028, 48.3438529, 48.4355405, 48.5344163, 48.6324506, 48.7293718, 48.8365414, 48.9353232, 49.0318781, 49.1013205, 49.1590844, 49.2285534, 49.3069683, 49.4017939, 49.4945263, 49.5861495, 49.6804907, 49.7602264, 49.8555805, 49.9489224, 50.0346777, 50.1018531, 50.1621723, 50.2260014, 50.2967905, 50.3831254, 50.4598772, 50.5387068, 50.6160484, 50.6865941, 50.7658362, 50.8453698, 50.918672, 50.9761148, 51.0278017, 51.084323, 51.1537928, 51.2318645, 51.306308, 51.3807849, 51.4526292, 51.5160394, 51.5985479, 51.680924, 51.7572854, 51.8133335, 51.8532385, 51.9014358, 51.9603433, 52.0328072, 52.0984957, 52.1667826, 52.2316418, 52.2938376, 52.3679897, 52.4465221, 52.5179552, 52.5751485, 52.6178012, 52.666816, 52.7340036, 52.8055792, 52.8792189, 52.9564838, 53.0444971, 53.126769, 53.2196749, 53.3024139, 53.3746645, 53.4335399, 53.4778015, 53.5299937, 53.5845392, 53.6522628, 53.7255844, 53.7882418, 53.8366625, 53.8829665, 53.9442904, 54.0042478, 54.0536342, 54.085644, 54.1084122, 54.1462942, 54.1913988, 54.2452023, 54.2957622, 54.3427024, 54.3910864, 54.4319877, 54.4897699, 54.545636, 54.597741, 54.6354962, 54.6532352, 54.677594, 54.7173643, 54.7740957, 54.8253023, 54.8712512, 54.916146, 54.9580535, 54.9997186, 55.047571, 55.0911778, 55.1132386, 55.132774, 55.1532423, 55.1898003, 55.2415531, 55.283803, 55.3222105, 55.3612676, 55.406262, 55.4628719, 55.5110909, 55.5523777, 55.5811877, 55.6004372, 55.626202, 55.6656271, 55.7167999, 55.7698097, 55.8196609, 55.8615028, 55.9129883, 55.9663474, 56.0220102, 56.0700015, 56.0939035, 56.110463, 56.1313736, 56.1610839, 56.2068432, 56.2582503, 56.3000349, 56.339902, 56.3789995, 56.4282839, 56.4803947, 56.5352164, 56.5697487, 56.5983102, 56.6328326, 56.6738814, 56.7332116, 56.7971596, 56.8552701, 56.9111378, 56.9754725, 57.0470772, 57.1136128, 57.173831, 57.2226068, 57.259731, 57.3072742, 57.3643368, 57.4334281, 57.5015747, 57.5653127, 57.6333396, 57.6972844, 57.7710774, 57.8407427, 57.9057801, 57.9575663, 57.9974929, 58.0425517, 58.1043319, 58.1679128, 58.2389092, 58.3091659, 58.3833021, 58.4536748, 58.5401438, 58.6227714, 58.6916662, 58.7409628, 58.7836189, 58.8405543, 58.898579, 58.9713678, 59.043837, 59.1218414, 59.2002687, 59.274737, 59.3574134, 59.4433827, 59.5242416, 59.5849787, 59.6343497, 59.6927827, 59.758805, 59.8386448, 59.9110567, 59.9844537, 60.056435, 60.123065, 60.2042185, 60.2803745, 60.3530352, 60.4011891, 60.4439959, 60.4900257, 60.5578054, 60.6324446, 60.7058569, 60.7853482, 60.8663504, 60.9386672, 61.0276757, 61.1103448, 61.1870458, 61.2453891, 61.2881024, 61.3377799, 61.4036165, 61.4760366, 61.5524599, 61.6286593, 61.6845819, 61.743306, 61.8132425, 61.8823203, 61.9496762, 61.9968743, 62.0342938, 62.0714108, 62.1202315, 62.1809508, 62.2382046, 62.2950486, 62.3506479, 62.3995381, 62.475395, 62.5463091, 62.6136031, 62.6570739, 62.6941742, 62.7383271, 62.7926305, 62.8566986, 62.9145607, 62.9658689, 63.0216632, 63.0807052, 63.1461718, 63.2052946, 63.2599441, 63.2844088, 63.2961369, 63.3126092, 63.3421622, 63.3871303, 63.4339302, 63.4673369, 63.4978642, 63.5319327, 63.5679441, 63.6104432, 63.6444291, 63.6641815, 63.6739403, 63.692603, 63.7147066, 63.7518055, 63.792717, 63.8285221, 63.8556871, 63.8803854, 63.9075025, 63.9392787, 63.9690744, 63.9798604, 63.9833077, 63.9938011, 64.0093384, 64.0399621, 64.0670429, 64.0907881, 64.1068077, 64.1282125, 64.1584211, 64.1832722, 64.2093975, 64.2116628, 64.2073173, 64.2115565, 64.2222858, 64.2499625, 64.2760973, 64.2998037, 64.3191858, 64.345013, 64.3734584, 64.3943291, 64.4151156, 64.4132064, 64.4118464, 64.4096536, 64.4167832, 64.43292, 64.4510529, 64.4734276, 64.4893377, 64.5053342, 64.5269189, 64.5470942, 64.5596729, 64.5512293, 64.5370906, 64.5359472, 64.5414947, 64.5543634, 64.5654298, 64.5736111, 64.5891142, 64.6014759, 64.6176147, 64.6374397, 64.6548674, 64.6530021, 64.6379271, 64.637161, 64.6399614, 64.6543152, 64.6723164, 64.6876311, 64.7051905, 64.7313433, 64.7575312, 64.7811143, 64.8000929, 64.7994561, 64.7876424, 64.783095, 64.7920604, 64.8096421, 64.8310888, 64.8451826, 64.8597013, 64.8849929, 64.9174991, 64.9480298, 64.9793881, 64.9894772, 65.0028155, 65.0138193, 65.0371432, 65.0772597, 65.112197, 65.1464034, 65.1832638, 65.2145358, 65.2493713, 65.2920645, 65.3279403, 65.3413366, 65.3451881, 65.34964, 65.3711307, 65.3971998, 65.4295547, 65.4573487, 65.486752, 65.5152012, 65.5449916, 65.5780768, 65.612728, 65.6287505, 65.6370091, 65.6493375, 65.6759928, 65.7096966, 65.746092, 65.7768362, 65.8024614, 65.8236695, 65.8595036, 65.8973008, 65.932291, 65.950911, 65.9534105, 65.962833, 65.9838647, 66.0146733, 66.042049, 66.0699217, 66.0961343, 66.1310116, 66.1682713, 66.2071627, 66.2355846, 66.2408549, 66.2335423, 66.2349107, 66.2441095, 66.2751123, 66.3054334, 66.3245568, 66.3405713, 66.3624433, 66.3957101, 66.428903, 66.4618675, 66.4748837, 66.4751281, 66.4828678, 66.5056165, 66.5382912, 66.5705628, 66.6030198, 66.6339689, 66.6569117, 66.6925011, 66.7288729, 66.7578719, 66.7707625, 66.7740427, 66.7846288, 66.810324, 66.840048, 66.8778601, 66.9069091, 66.944259, 66.9762508, 67.0258126, 67.0716286, 67.1100184, 67.1266401, 67.1331391, 67.145797, 67.17174, 67.2091069, 67.2459812, 67.2810383, 67.3136452, 67.3456968, 67.389003, 67.4318433, 67.4666209, 67.4858459, 67.4989147, 67.5110936, 67.5352658, 67.571103, 67.6070253, 67.6439167, 67.6765272, 67.7116693, 67.7590634, 67.8011542, 67.840213, 67.8606318, 67.8821576, 67.9120101, 67.9546462, 68.0054839, 68.051412, 68.1024205, 68.1577127, 68.2043653, 68.2664507, 68.3188171, 68.3703564, 68.3964356, 68.4094472, 68.4304611, 68.4629791, 68.507818, 68.5537018, 68.5927179, 68.6298107, 68.6670627, 68.7135208, 68.7622755, 68.8032843, 68.8244838, 68.8373427, 68.847693, 68.8688567, 68.9005814, 68.9354999, 68.9676423, 68.9875354, 69.0175527, 69.0499081, 69.0823433, 69.1070034, 69.1134027, 69.1141898, 69.1207203, 69.1355578, 69.16459, 69.1964228, 69.2201632, 69.2451564, 69.2732758, 69.3031979, 69.3325675, 69.3540507, 69.3581722, 69.3441594, 69.3376329, 69.3377424, 69.3432191, 69.3540144, 69.3611554, 69.3751703, 69.3889904, 69.4091639, 69.4264662, 69.4386335, 69.4241335, 69.3921241, 69.3693422, 69.3574782, 69.3593242, 69.3630244, 69.359334, 69.3510133, 69.3537917, 69.3582217, 69.367306, 69.3678649, 69.3514228, 69.3273414, 69.3033273, 69.2892463, 69.2880419, 69.2908014, 69.2944974, 69.2913953, 69.286149, 69.2835153, 69.2815422, 69.2806375, 69.2553511, 69.2125426, 69.1847287, 69.17207, 69.1691531, 69.173303, 69.1698064, 69.1589095, 69.1556275, 69.1672253, 69.1771384],\n first: 1973.0849315068492,\n firstYM: [1973, 2],\n last: 2023.3287671232877,\n lastYM: [2023, 5]\n },\n prediction: {\n table: [67.87818, 67.96817999999999, 68.02817999999999, 68.04818, 68.12818, 68.21817999999999, 68.26818, 68.28818, 68.36818, 68.44818, 68.50818, 68.51818, 68.59818, 68.68818, 68.73818, 68.74817999999999, 68.82818, 68.91817999999999, 68.96817999999999, 68.98818, 69.06818, 69.14818, 69.20818, 69.22818, 69.30818, 69.39818, 69.46817999999999, 69.48818, 69.57818, 69.66817999999999, 69.73818, 69.75818, 69.85817999999999, 69.95818, 70.02817999999999, 70.05818, 70.15818, 70.25818, 70.33818, 70.36818, 70.46817999999999],\n first: 2022,\n last: 2032\n }\n};\nexport default m;\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module deltat\n */\n/**\n * DeltaT: Chapter 10, Dynamical Time and Universal Time.\n *\n * This package uses no functions from the Chapter. Polynoms are from\n * , data sets are from\n * \n *\n * Functions in this package compute ΔT for various ranges of dates.\n *\n * ΔT = TD - UT1\n *\n * TD = \"Dynamical Time\", which is related to:\n * ET \"Ephermis Time\", an older term.\n * TDB \"Barycentric Dynamical Time\", very close to TD.\n * TDT \"Terrestrial Dynamical Time\", a more correct term.\n * TT \"Terrestrial Time\", a newer and more correct term.\n *\n * UT = \"Universal Time\", which is related (if ambiguously) to GMT \"Greenwich\n * Mean Time\".\n *\n * Terrestrial Time is effectively equal to International Atomic Time (TAI)\n * plus 32.184 seconds exactly: TT = TAI + 32.184\n * The epoch designated \"J2000.0\" is specified as Julian date 2451545.0 TT,\n * or 2000 January 1, 12h TT. This epoch can also be expressed as\n * 2000 January 1, 11:59:27.816 TAI or 2000 January 1, 11:58:55.816 UTC.\n */\n\nimport base from './base.js'\nimport interp from './interpolation.js'\nimport deltat from '../data/deltat.js'\n\n// avoids ciclic import { LeapYearGregorian } from './julian.js'\nfunction LeapYearGregorian (y) {\n return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0\n}\n\n/**\n * deltaT returns the difference ΔT = TD - UT between Dynamical Time TD and\n * Univeral Time (GMT+12) in seconds\n *\n * Polynoms are from \n * and \n *\n * @param {Number} dyear - decimal year\n * @returns {Number} ΔT in seconds.\n */\nexport function deltaT (dyear) {\n let ΔT\n if (dyear < -500) {\n ΔT = base.horner((dyear - 1820) * 0.01, -20, 0, 32)\n } else if (dyear < 500) {\n ΔT = base.horner(dyear * 0.01,\n 10583.6, -1014.41, 33.78311, -5.952053, -0.1798452, 0.022174192, 0.0090316521\n )\n } else if (dyear < 1600) {\n ΔT = base.horner((dyear - 1000) * 0.01,\n 1574.2, -556.01, 71.23472, 0.319781, -0.8503463, -0.005050998, 0.0083572073\n )\n } else if (dyear < deltat.historic.first) {\n ΔT = base.horner((dyear - 1600), 120, -0.9808, -0.01532, 1 / 7129)\n } else if (dyear < deltat.data.first) {\n ΔT = interpolate(dyear, deltat.historic)\n } else if (dyear < deltat.data.last - 0.25) { // -0.25 ~= do not consider last 3 months in dataset\n ΔT = interpolateData(dyear, deltat.data)\n } else if (dyear < deltat.prediction.last) {\n ΔT = interpolate(dyear, deltat.prediction)\n } else if (dyear < 2050) {\n ΔT = base.horner((dyear - 2000) / 100, 62.92, 32.217, 55.89)\n } else if (dyear < 2150) {\n ΔT = base.horner((dyear - 1820) / 100, -205.72, 56.28, 32)\n } else {\n const u = (dyear - 1820) / 100\n ΔT = -20 + 32 * u * u\n }\n return ΔT\n}\n\n/**\n * interpolation of dataset\n * @private\n * @param {Number} dyear - julian year\n * @returns {Number} ΔT in seconds.\n */\nfunction interpolate (dyear, data) {\n const d3 = interp.len3ForInterpolateX(dyear,\n data.first, data.last, data.table\n )\n return d3.interpolateX(dyear)\n}\n\n/**\n * interpolation of dataset from finals2000A with is one entry per month\n * linear interpolation over whole dataset is inaccurate as points per month\n * are not equidistant. Therefore points are approximated using 2nd diff. interpolation\n * from current month using the following two points\n *\n * @private\n * @param {Number} dyear - julian year\n * @returns {Number} ΔT in seconds.\n */\nfunction interpolateData (dyear, data) {\n const [fyear, fmonth] = data.firstYM\n const { year, month, first, last } = monthOfYear(dyear)\n const pos = 12 * (year - fyear) + (month - fmonth)\n const table = data.table.slice(pos, pos + 3)\n const d3 = new interp.Len3(first, last, table)\n return d3.interpolateX(dyear)\n}\n\n/**\n * Get month of Year from fraction. Fraction differs at leap years.\n * @private\n * @param {Number} dyear - decimal year\n * @return {Object} `{year: Number, month: Number, first: Number, last}`\n */\nfunction monthOfYear (dyear) {\n // if (!monthOfYear.data) { // memoize yearly fractions per month\n // monthOfYear.data = { 0: [], 1: [] }\n // for (let m = 0; m <= 12; m++) {\n // monthOfYear.data[0][m] = new Calendar(1999, m, 1).toYear() - 1999 // non leap year\n // monthOfYear.data[1][m] = new Calendar(2000, m, 1).toYear() - 2000 // leap year\n // }\n // }\n // console.log(monthOfYear)\n const year = dyear | 0\n const f = dyear - year\n const d = LeapYearGregorian(year) ? 1 : 0\n const data = monthOfYear.data[d]\n\n let month = 12 // TODO loop could be improved\n while (month > 0 && data[month] > f) {\n month--\n }\n const first = year + data[month]\n const last = month < 11 ? year + data[month + 2] : year + 1 + data[(month + 2) % 12]\n return { year, month, first, last }\n}\n/**\n monthOfYear.data[0][m] = new Calendar(1999, m, 1).toYear() - 1999 // non leap year\n monthOfYear.data[1][m] = new Calendar(2000, m, 1).toYear() - 2000 // leap year\n */\nmonthOfYear.data = [\n [ // non leap year\n 0,\n 0,\n 0.08493150684921602,\n 0.16164383561635987,\n 0.24657534246580326,\n 0.3287671232876619,\n 0.4136986301368779,\n 0.4958904109589639,\n 0.5808219178081799,\n 0.6657534246576233,\n 0.747945205479482,\n 0.832876712328698,\n 0.915068493150784\n ],\n [ // leap year\n 0,\n 0,\n 0.08743169398917416,\n 0.1639344262296163,\n 0.24863387978143692,\n 0.3306010928961314,\n 0.4153005464481794,\n 0.49726775956287383,\n 0.5819672131146945,\n 0.6666666666667425,\n 0.7486338797814369,\n 0.8333333333332575,\n 0.9153005464481794\n ]\n]\n\nexport default {\n deltaT\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module elliptic\n */\n/**\n * Elliptic: Chapter 33, Elliptic Motion.\n *\n * Partial: Various formulas and algorithms are unimplemented for lack of\n * examples or test cases.\n */\nimport apparent from './apparent.js'\nimport base from './base.js'\nimport coord from './coord.js'\nimport kepler from './kepler.js'\nimport nutation from './nutation.js'\nimport planetposition from './planetposition.js'\nimport solarxyz from './solarxyz.js'\n\n/**\n * Position returns observed equatorial coordinates of a planet at a given time.\n *\n * Argument p must be a valid V87Planet object for the observed planet.\n * Argument earth must be a valid V87Planet object for Earth.\n *\n * Results are right ascension and declination, α and δ in radians.\n */\nexport function position (planet, earth, jde) { // (p, earth *pp.V87Planet, jde float64) (α, δ float64)\n let x = 0\n let y = 0\n let z = 0\n const posEarth = earth.position(jde)\n const [L0, B0, R0] = [posEarth.lon, posEarth.lat, posEarth.range]\n const [sB0, cB0] = base.sincos(B0)\n const [sL0, cL0] = base.sincos(L0)\n\n function pos (τ = 0) {\n const pos = planet.position(jde - τ)\n const [L, B, R] = [pos.lon, pos.lat, pos.range]\n const [sB, cB] = base.sincos(B)\n const [sL, cL] = base.sincos(L)\n x = R * cB * cL - R0 * cB0 * cL0\n y = R * cB * sL - R0 * cB0 * sL0\n z = R * sB - R0 * sB0\n }\n\n pos()\n const Δ = Math.sqrt(x * x + y * y + z * z) // (33.4) p. 224\n const τ = base.lightTime(Δ)\n // repeating with jde-τ\n pos(τ)\n\n let λ = Math.atan2(y, x) // (33.1) p. 223\n let β = Math.atan2(z, Math.hypot(x, y)) // (33.2) p. 223\n const [Δλ, Δβ] = apparent.eclipticAberration(λ, β, jde)\n const fk5 = planetposition.toFK5(λ + Δλ, β + Δβ, jde)\n λ = fk5.lon\n β = fk5.lat\n const [Δψ, Δε] = nutation.nutation(jde)\n λ += Δψ\n const ε = nutation.meanObliquity(jde) + Δε\n return new coord.Ecliptic(λ, β).toEquatorial(ε)\n // Meeus gives a formula for elongation but doesn't spell out how to\n // obtaion term λ0 and doesn't give an example solution.\n}\n\n/**\n * Elements holds keplerian elements.\n */\nexport class Elements {\n /*\n Axis float64 // Semimajor axis, a, in AU\n Ecc float64 // Eccentricity, e\n Inc float64 // Inclination, i, in radians\n ArgP float64 // Argument of perihelion, ω, in radians\n Node float64 // Longitude of ascending node, Ω, in radians\n TimeP float64 // Time of perihelion, T, as jde\n */\n constructor (axis, ecc, inc, argP, node, timeP) {\n let o = {}\n if (typeof axis === 'object') {\n o = axis\n }\n this.axis = o.axis || axis\n this.ecc = o.ecc || ecc\n this.inc = o.inc || inc\n this.argP = o.argP || argP\n this.node = o.node || node\n this.timeP = o.timeP || timeP\n }\n\n /**\n * Position returns observed equatorial coordinates of a body with Keplerian elements.\n *\n * Argument e must be a valid V87Planet object for Earth.\n *\n * Results are right ascension and declination α and δ, and elongation ψ,\n * all in radians.\n */\n position (jde, earth) { // (α, δ, ψ float64) {\n // (33.6) p. 227\n const n = base.K / this.axis / Math.sqrt(this.axis)\n const sε = base.SOblJ2000\n const cε = base.COblJ2000\n const [sΩ, cΩ] = base.sincos(this.node)\n const [si, ci] = base.sincos(this.inc)\n // (33.7) p. 228\n const F = cΩ\n const G = sΩ * cε\n const H = sΩ * sε\n const P = -sΩ * ci\n const Q = cΩ * ci * cε - si * sε\n const R = cΩ * ci * sε + si * cε\n // (33.8) p. 229\n const A = Math.atan2(F, P)\n const B = Math.atan2(G, Q)\n const C = Math.atan2(H, R)\n const a = Math.hypot(F, P)\n const b = Math.hypot(G, Q)\n const c = Math.hypot(H, R)\n\n const f = (jde) => { // (x, y, z float64) {\n const M = n * (jde - this.timeP)\n let E\n try {\n E = kepler.kepler2b(this.ecc, M, 15)\n } catch (e) {\n E = kepler.kepler3(this.ecc, M)\n }\n const ν = kepler.trueAnomaly(E, this.ecc)\n const r = kepler.radius(E, this.ecc, this.axis)\n // (33.9) p. 229\n const x = r * a * Math.sin(A + this.argP + ν)\n const y = r * b * Math.sin(B + this.argP + ν)\n const z = r * c * Math.sin(C + this.argP + ν)\n return { x, y, z }\n }\n return astrometricJ2000(f, jde, earth)\n }\n}\n\n/**\n * AstrometricJ2000 is a utility function for computing astrometric coordinates.\n *\n * It is used internally and only exported so that it can be used from\n * multiple packages. It is not otherwise expected to be used.\n *\n * Argument f is a function that returns J2000 equatorial rectangular\n * coodinates of a body.\n *\n * Results are J2000 right ascention, declination, and elongation.\n */\nexport function astrometricJ2000 (f, jde, earth) { // (f func(float64) (x, y, z float64), jde float64, e *pp.V87Planet) (α, δ, ψ float64)\n const sol = solarxyz.positionJ2000(earth, jde)\n const [X, Y, Z] = [sol.x, sol.y, sol.z]\n let ξ = 0\n let η = 0\n let ζ = 0\n let Δ = 0\n\n function fn (τ = 0) {\n // (33.10) p. 229\n const { x, y, z } = f(jde - τ)\n ξ = X + x\n η = Y + y\n ζ = Z + z\n Δ = Math.sqrt(ξ * ξ + η * η + ζ * ζ)\n }\n\n fn()\n const τ = base.lightTime(Δ)\n fn(τ)\n\n let α = Math.atan2(η, ξ)\n if (α < 0) {\n α += 2 * Math.PI\n }\n const δ = Math.asin(ζ / Δ)\n const R0 = Math.sqrt(X * X + Y * Y + Z * Z)\n const ψ = Math.acos((ξ * X + η * Y + ζ * Z) / R0 / Δ)\n return new base.Coord(α, δ, undefined, ψ)\n}\n\n/**\n * Velocity returns instantaneous velocity of a body in elliptical orbit around the Sun.\n *\n * Argument a is the semimajor axis of the body, r is the instaneous distance\n * to the Sun, both in AU.\n *\n * Result is in Km/sec.\n */\nexport function velocity (a, r) { // (a, r float64) float64\n return 42.1219 * Math.sqrt(1 / r - 0.5 / a)\n}\n\n/**\n * Velocity returns the velocity of a body at aphelion.\n *\n * Argument a is the semimajor axis of the body in AU, e is eccentricity.\n *\n * Result is in Km/sec.\n */\nexport function vAphelion (a, e) { // (a, e float64) float64\n return 29.7847 * Math.sqrt((1 - e) / (1 + e) / a)\n}\n\n/**\n * Velocity returns the velocity of a body at perihelion.\n *\n * Argument a is the semimajor axis of the body in AU, e is eccentricity.\n *\n * Result is in Km/sec.\n */\nexport function vPerihelion (a, e) { // (a, e float64) float64\n return 29.7847 * Math.sqrt((1 + e) / (1 - e) / a)\n}\n\n/**\n * Length1 returns Ramanujan's approximation for the length of an elliptical\n * orbit.\n *\n * Argument a is semimajor axis, e is eccentricity.\n *\n * Result is in units used for semimajor axis, typically AU.\n */\nexport function length1 (a, e) { // (a, e float64) float64\n const b = a * Math.sqrt(1 - e * e)\n return Math.PI * (3 * (a + b) - Math.sqrt((a + 3 * b) * (3 * a + b)))\n}\n\n/**\n * Length2 returns an alternate approximation for the length of an elliptical\n * orbit.\n *\n * Argument a is semimajor axis, e is eccentricity.\n *\n * Result is in units used for semimajor axis, typically AU.\n */\nexport function length2 (a, e) { // (a, e float64) float64\n const b = a * Math.sqrt(1 - e * e)\n const s = a + b\n const p = a * b\n const A = s * 0.5\n const G = Math.sqrt(p)\n const H = 2 * p / s\n return Math.PI * (21 * A - 2 * G - 3 * H) * 0.125\n}\n\n/**\n * Length3 returns the length of an elliptical orbit.\n *\n * Argument a is semimajor axis, e is eccentricity.\n *\n * Result is exact, and in units used for semimajor axis, typically AU.\n */\n/* As Meeus notes, Length4 converges faster. There is no reason to use\nthis function\nexport function length3 (a, e) { // (a, e float64) float64\n const sum0 = 1.0\n const e2 = e * e\n const term = e2 * 0.25\n const sum1 = 1.0 - term\n const nf = 1.0\n const df = 2.0\n while (sum1 !== sum0) {\n term *= nf\n nf += 2\n df += 2\n term *= nf * e2 / (df * df)\n sum0 = sum1\n sum1 -= term\n }\n return 2 * Math.PI * a * sum0\n} */\n\n/**\n * Length4 returns the length of an elliptical orbit.\n *\n * Argument a is semimajor axis, e is eccentricity.\n *\n * Result is exact, and in units used for semimajor axis, typically AU.\n */\nexport function length4 (a, e) { // (a, e float64) float64\n const b = a * Math.sqrt(1 - e * e)\n const m = (a - b) / (a + b)\n const m2 = m * m\n let sum0 = 1.0\n let term = m2 * 0.25\n let sum1 = 1.0 + term\n let nf = -1.0\n let df = 2.0\n while (sum1 !== sum0) {\n nf += 2\n df += 2\n term *= nf * nf * m2 / (df * df)\n sum0 = sum1\n sum1 += term\n }\n return 2 * Math.PI * a * sum0 / (1 + m)\n}\n\nexport default {\n position,\n Elements,\n astrometricJ2000,\n velocity,\n vAphelion,\n vPerihelion,\n length1,\n length2,\n // length3,\n length4\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module moonphase\n */\n/**\n * Moonphase: Chapter 49, Phases of the Moon\n */\n\nimport base from './base.js'\n\nconst { sin, cos } = Math\nconst ck = 1 / 1236.85\nconst D2R = Math.PI / 180\n\n/**\n * mean synodial lunar month\n */\nexport const meanLunarMonth = 29.530588861\n\n// (49.1) p. 349\nfunction mean (T) {\n return base.horner(T, 2451550.09766, 29.530588861 / ck,\n 0.00015437, -0.00000015, 0.00000000073)\n}\n\n/** snap returns k at specified quarter q nearest year y. */\nfunction snap (y, q) {\n const k = (y - 2000) * 12.3685 // (49.2) p. 350\n return Math.floor(k - q + 0.5) + q\n}\n\n/**\n * MeanNew returns the jde of the mean New Moon nearest the given datthis.\n * The mean date is within 0.5 day of the true date of New Moon.\n *\n * @param {Number} year - decimal year\n * @returns {Number} jde\n */\nexport function meanNew (year) {\n return mean(snap(year, 0) * ck)\n}\n\n/**\n * MeanFirst returns the jde of the mean First Quarter Moon nearest the given datthis.\n * The mean date is within 0.5 day of the true date of First Quarter Moon.\n *\n * @param {Number} year - decimal year\n * @returns {Number} jde\n */\nexport function meanFirst (year) {\n return mean(snap(year, 0.25) * ck)\n}\n\n/**\n * MeanFull returns the jde of the mean Full Moon nearest the given datthis.\n * The mean date is within 0.5 day of the true date of Full Moon.\n *\n * @param {Number} year - decimal year\n * @returns {Number} jde\n */\nexport function meanFull (year) {\n return mean(snap(year, 0.5) * ck)\n}\n\n/**\n * MeanLast returns the jde of the mean Last Quarter Moon nearest the given datthis.\n * The mean date is within 0.5 day of the true date of Last Quarter Moon.\n *\n * @param {Number} year - decimal year\n * @returns {Number} jde\n */\nexport function meanLast (year) {\n return mean(snap(year, 0.75) * ck)\n}\n\n/**\n * New returns the jde of New Moon nearest the given date.\n *\n * @param {Number} year - decimal year\n * @returns {Number} jde\n */\nexport function newMoon (year) {\n const m = new Mp(year, 0)\n return mean(m.T) + m.nfc(nc) + m.a()\n}\n\n/**\n * First returns the jde of First Quarter Moon nearest the given datthis.\n *\n * @param {Number} year - decimal year\n * @returns {Number} jde\n */\nexport function first (year) {\n const m = new Mp(year, 0.25)\n return mean(m.T) + m.flc() + m.w() + m.a()\n}\n\n/**\n * Full returns the jde of Full Moon nearest the given datthis.\n *\n * @param {Number} year - decimal year\n * @returns {Number} jde\n */\nexport function full (year) {\n const m = new Mp(year, 0.5)\n return mean(m.T) + m.nfc(fc) + m.a()\n}\n\n/**\n * Last returns the jde of Last Quarter Moon nearest the given datthis.\n *\n * @param {Number} year - decimal year\n * @returns {Number} jde\n */\nexport function last (year) {\n const m = new Mp(year, 0.75)\n return mean(m.T) + m.flc() - m.w() + m.a()\n}\n\nclass Mp {\n constructor (y, q) {\n this.A = new Array(14)\n const k = this.k = snap(y, q)\n const T = this.T = this.k * ck // (49.3) p. 350\n this.E = base.horner(T, 1, -0.002516, -0.0000074)\n this.M = base.horner(T, 2.5534 * D2R, 29.1053567 * D2R / ck,\n -0.0000014 * D2R, -0.00000011 * D2R)\n this.M_ = base.horner(T, 201.5643 * D2R, 385.81693528 * D2R / ck,\n 0.0107582 * D2R, 0.00001238 * D2R, -0.000000058 * D2R)\n this.F = base.horner(T, 160.7108 * D2R, 390.67050284 * D2R / ck,\n -0.0016118 * D2R, -0.00000227 * D2R, 0.000000011 * D2R)\n this.Ω = base.horner(T, 124.7746 * D2R, -1.56375588 * D2R / ck,\n 0.0020672 * D2R, 0.00000215 * D2R)\n this.A[0] = 299.7 * D2R + 0.107408 * D2R * k - 0.009173 * T * T\n this.A[1] = 251.88 * D2R + 0.016321 * D2R * k\n this.A[2] = 251.83 * D2R + 26.651886 * D2R * k\n this.A[3] = 349.42 * D2R + 36.412478 * D2R * k\n this.A[4] = 84.66 * D2R + 18.206239 * D2R * k\n this.A[5] = 141.74 * D2R + 53.303771 * D2R * k\n this.A[6] = 207.17 * D2R + 2.453732 * D2R * k\n this.A[7] = 154.84 * D2R + 7.30686 * D2R * k\n this.A[8] = 34.52 * D2R + 27.261239 * D2R * k\n this.A[9] = 207.19 * D2R + 0.121824 * D2R * k\n this.A[10] = 291.34 * D2R + 1.844379 * D2R * k\n this.A[11] = 161.72 * D2R + 24.198154 * D2R * k\n this.A[12] = 239.56 * D2R + 25.513099 * D2R * k\n this.A[13] = 331.55 * D2R + 3.592518 * D2R * k\n }\n\n // new or full corrections\n nfc (c) {\n const { M, M_, E, F, Ω } = this\n return c[0] * sin(M_) +\n c[1] * sin(M) * E +\n c[2] * sin(2 * M_) +\n c[3] * sin(2 * F) +\n c[4] * sin(M_ - M) * E +\n c[5] * sin(M_ + M) * E +\n c[6] * sin(2 * M) * E * E +\n c[7] * sin(M_ - 2 * F) +\n c[8] * sin(M_ + 2 * F) +\n c[9] * sin(2 * M_ + M) * E +\n c[10] * sin(3 * M_) +\n c[11] * sin(M + 2 * F) * E +\n c[12] * sin(M - 2 * F) * E +\n c[13] * sin(2 * M_ - M) * E +\n c[14] * sin(Ω) +\n c[15] * sin(M_ + 2 * M) +\n c[16] * sin(2 * (M_ - F)) +\n c[17] * sin(3 * M) +\n c[18] * sin(M_ + M - 2 * F) +\n c[19] * sin(2 * (M_ + F)) +\n c[20] * sin(M_ + M + 2 * F) +\n c[21] * sin(M_ - M + 2 * F) +\n c[22] * sin(M_ - M - 2 * F) +\n c[23] * sin(3 * M_ + M) +\n c[24] * sin(4 * M_)\n }\n\n // first or last corrections\n flc () {\n const { M, M_, E, F, Ω } = this\n return -0.62801 * sin(M_) +\n 0.17172 * sin(M) * E +\n -0.01183 * sin(M_ + M) * E +\n 0.00862 * sin(2 * M_) +\n 0.00804 * sin(2 * F) +\n 0.00454 * sin(M_ - M) * E +\n 0.00204 * sin(2 * M) * E * E +\n -0.0018 * sin(M_ - 2 * F) +\n -0.0007 * sin(M_ + 2 * F) +\n -0.0004 * sin(3 * M_) +\n -0.00034 * sin(2 * M_ - M) * E +\n 0.00032 * sin(M + 2 * F) * E +\n 0.00032 * sin(M - 2 * F) * E +\n -0.00028 * sin(M_ + 2 * M) * E * E +\n 0.00027 * sin(2 * M_ + M) * E +\n -0.00017 * sin(Ω) +\n -0.00005 * sin(M_ - M - 2 * F) +\n 0.00004 * sin(2 * M_ + 2 * F) +\n -0.00004 * sin(M_ + M + 2 * F) +\n 0.00004 * sin(M_ - 2 * M) +\n 0.00003 * sin(M_ + M - 2 * F) +\n 0.00003 * sin(3 * M) +\n 0.00002 * sin(2 * M_ - 2 * F) +\n 0.00002 * sin(M_ - M + 2 * F) +\n -0.00002 * sin(3 * M_ + M)\n }\n\n w () {\n const { M, M_, E, F } = this\n return 0.00306 -\n 0.00038 * E * cos(M) +\n 0.00026 * cos(M_) -\n 0.00002 * (cos(M_ - M) -\n cos(M_ + M) -\n cos(2 * F)\n )\n }\n\n // additional corrections\n a () {\n let a = 0\n ac.forEach((c, i) => {\n a += c * sin(this.A[i])\n })\n return a\n }\n}\n\n// new coefficients\nconst nc = [\n -0.4072, 0.17241, 0.01608, 0.01039, 0.00739,\n -0.00514, 0.00208, -0.00111, -0.00057, 0.00056,\n -0.00042, 0.00042, 0.00038, -0.00024, -0.00017,\n -0.00007, 0.00004, 0.00004, 0.00003, 0.00003,\n -0.00003, 0.00003, -0.00002, -0.00002, 0.00002\n]\n\n// full coefficients\nconst fc = [\n -0.40614, 0.17302, 0.01614, 0.01043, 0.00734,\n -0.00515, 0.00209, -0.00111, -0.00057, 0.00056,\n -0.00042, 0.00042, 0.00038, -0.00024, -0.00017,\n -0.00007, 0.00004, 0.00004, 0.00003, 0.00003,\n -0.00003, 0.00003, -0.00002, -0.00002, 0.00002\n]\n\n// additional corrections\nconst ac = [\n 0.000325, 0.000165, 0.000164, 0.000126, 0.00011,\n 0.000062, 0.00006, 0.000056, 0.000047, 0.000042,\n 0.000040, 0.000037, 0.000035, 0.000023\n]\n\nexport default {\n meanLunarMonth,\n meanNew,\n meanFirst,\n meanFull,\n meanLast,\n newMoon,\n new: newMoon, // BACKWARDS-COMPATIBILITY\n first,\n full,\n last\n}\n","/**\n * @copyright 2020 mdmunir\n * @copyright 2020 commenthol\n * @license MIT\n * @module elp\n */\n\n/**\n * Elp Mpp02\n * source ftp://cyrano-se.obspm.fr/pub/2_lunar_solutions/2_elpmpp02/elpmpp02.pdf\n */\n\nimport base, { Coord } from './base.js'\n\nconst SEC2RAD = 1 / 3600 * Math.PI / 180\n\nfunction sum (T, series) {\n const coeffs = []\n Object.keys(series).forEach((x) => {\n coeffs[x] = 0.0\n let y = series[x].length - 1\n for (y; y >= 0; y--) {\n // A, t0, t1, t2, t3, t4\n const row = series[x][y]\n const φ = base.horner(T, row.slice(1))\n coeffs[x] += row[0] * Math.sin(φ)\n }\n })\n return base.horner(T, ...coeffs)\n}\n\n/**\n *\n */\nexport class Moon {\n /**\n * ELP representation of a Moon\n * @constructs Moon\n * @param {object} data - elp data series\n * @example\n * ```js\n * // for use in browser\n * import {data} from 'astronomia.js'\n * const moon = new elp.Moon(data.elpMppDe)\n * ```\n */\n constructor (data) {\n if (typeof data !== 'object') throw new TypeError('need Elp data')\n this.series = data\n }\n\n _calcLBR (T) {\n const L = base.horner(T, this.series.W1) + sum(T, this.series.L) * SEC2RAD\n const B = sum(T, this.series.B) * SEC2RAD\n const R = sum(T, this.series.R)\n return { L: base.pmod(L, 2 * Math.PI), B, R }\n }\n\n /**\n * Position returns rectangular coordinates referred to the inertial mean ecliptic and equinox of J2000.\n * @param {Number} jde - Julian ephemeris day\n * @return {object} rectangular coordinates\n * {Number} x\n * {Number} y\n * {Number} z\n */\n positionXYZ (jde) {\n const T = base.J2000Century(jde)\n const { L, B, R } = this._calcLBR(T)\n\n const x = R * Math.cos(L) * Math.cos(B)\n const y = R * Math.sin(L) * Math.cos(B)\n const z = R * Math.sin(B)\n\n const P = base.horner(T, 0, 0.10180391e-4, 0.47020439e-6, -0.5417367e-9, -0.2507948e-11, 0.463486e-14)\n const Q = base.horner(T, 0, -0.113469002e-3, 0.12372674e-6, 0.12654170e-8, -0.1371808e-11, -0.320334e-14)\n const sq = Math.sqrt(1 - P * P - Q * Q)\n const p11 = 1 - 2 * P * P\n const p12 = 2 * P * Q\n const p13 = 2 * P * sq\n const p21 = 2 * P * Q\n const p22 = 1 - 2 * Q * Q\n const p23 = -2 * Q * sq\n const p31 = -2 * P * sq\n const p32 = 2 * Q * sq\n const p33 = 1 - 2 * P * P - 2 * Q * Q\n\n const result = {\n x: p11 * x + p12 * y + p13 * z,\n y: p21 * x + p22 * y + p23 * z,\n z: p31 * x + p32 * y + p33 * z\n }\n return result\n }\n\n /**\n * Delay effect of light time\n *\n * @param {Number} jde - Julian ephemeris day\n * @returns {Number} Delay time in days\n */\n lightTime (jde) {\n const T = base.J2000Century(jde)\n const R = sum(T, this.series.R)\n return base.lightTime(R / base.AU)\n }\n\n /**\n * Position returns ecliptic position of moon at equinox and ecliptic of date.\n *\n * @param {Number} jde - the date for which positions are desired.\n * @returns {Coord} Results are positions consistent with those elp data,\n * that is, at equinox and ecliptic of date.\n * {Number} lon - geocentric longitude in radians.\n * {Number} lat - geocentric latitude in radians.\n * {Number} range - geocentric range in KM.\n */\n position (jde) {\n const T = base.J2000Century(jde)\n const { L, B, R } = this._calcLBR(T)\n\n // precession\n const pA = base.horner(T, 0, 5029.0966 - 0.29965, 1.1120, 0.000077, -0.00002353) * SEC2RAD\n return new Coord(\n base.pmod(L + pA, 2 * Math.PI),\n B,\n R)\n }\n}\n\n/**\n * Position returns the true geometric position of the moon as ecliptic coordinates.\n *\n * Result computed by Elp theory. Result is at equator and equinox\n * of date in the FK5 frame. It does not include nutation or aberration.\n *\n * @param {Object} elpData\n * @param {Number} jde - Julian ephemeris day\n * @returns {Object}\n * {Number} lon - ecliptic longitude in radians\n * {Number} lat - ecliptic latitude in radians\n * {Number} range - range in KM\n */\nexport function position (elpData, jde) {\n const moon = new Moon(elpData)\n return moon.position(jde)\n}\n\nexport default {\n Moon,\n position\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module eqtime\n */\n/**\n * Eqtime: Chapter 28, Equation of time.\n */\n\nimport base from './base.js'\nimport coord from './coord.js'\nimport nutation from './nutation.js'\nimport solar from './solar.js'\nconst { cos, sin, tan } = Math\n\n/**\n * e computes the \"equation of time\" for the given JDE.\n *\n * Parameter planet must be a planetposition.Planet object for Earth obtained\n * with `new planetposition.Planet('earth')`.\n *\n * @param {Number} jde - Julian ephemeris day\n * @param {planetposition.Planet} earth - VSOP87 planet\n * @returns {Number} equation of time as an hour angle in radians.\n */\nexport function e (jde, earth) {\n const τ = base.J2000Century(jde) * 0.1\n const L0 = l0(τ)\n // code duplicated from solar.ApparentEquatorialVSOP87 so that\n // we can keep Δψ and cε\n const { lon, lat, range } = solar.trueVSOP87(earth, jde)\n const [Δψ, Δε] = nutation.nutation(jde)\n const a = -20.4898 / 3600 * Math.PI / 180 / range\n const λ = lon + Δψ + a\n const ε = nutation.meanObliquity(jde) + Δε\n const eq = new coord.Ecliptic(λ, lat).toEquatorial(ε)\n // (28.1) p. 183\n const E = L0 - 0.0057183 * Math.PI / 180 - eq.ra + Δψ * cos(ε)\n return base.pmod(E + Math.PI, 2 * Math.PI) - Math.PI\n}\n\n/**\n * (28.2) p. 183\n */\nconst l0 = function (τ) {\n return base.horner(τ, 280.4664567, 360007.6982779, 0.03032028,\n 1.0 / 49931, -1.0 / 15300, -1.0 / 2000000) * Math.PI / 180\n}\n\n/**\n * eSmart computes the \"equation of time\" for the given JDE.\n *\n * Result is less accurate that e() but the function has the advantage\n * of not requiring the V87Planet object.\n *\n * @param {Number} jde - Julian ephemeris day\n * @returns {Number} equation of time as an hour angle in radians.\n */\nexport function eSmart (jde) {\n const ε = nutation.meanObliquity(jde)\n const t = tan(ε * 0.5)\n const y = t * t\n const T = base.J2000Century(jde)\n const L0 = l0(T * 0.1)\n const e = solar.eccentricity(T)\n const M = solar.meanAnomaly(T)\n const [sin2L0, cos2L0] = base.sincos(2 * L0)\n const sinM = sin(M)\n // (28.3) p. 185\n return y * sin2L0 - 2 * e * sinM + 4 * e * y * sinM * cos2L0 -\n y * y * sin2L0 * cos2L0 - 1.25 * e * e * sin(2 * M)\n}\n\nexport default {\n e,\n eSmart\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module illum\n */\n/**\n * Illum: Chapter 41, Illuminated Fraction of the Disk and Magnitude of a Planet.\n *\n * Also see functions `illuminated` and `limb` in package base. While this\n * chapter title includes \"illumnated fraction,\" the function for computing\n * illuminated fraction given a phase angle is `base.illuminated`.\n * `base.limb` is the function mentioned at the bottom of p. 283.0\n */\n\nimport base from './base.js'\n\nconst { toDeg } = base\nconst D2R = Math.PI / 180\n\n/**\n * PhaseAngle computes the phase angle of a planet.\n *\n * Argument r is planet's distance to Sun, Δ its distance to Earth, and R\n * the distance from Sun to Earth. All distances in AU.\n *\n * Result in radians.\n */\nexport function phaseAngle (r, Δ, R) { // (r, Δ, R float64) float64\n return Math.acos((r * r + Δ * Δ - R * R) / (2 * r * Δ))\n}\n\n/**\n * Fraction computes the illuminated fraction of the disk of a planet.\n *\n * Argument r is planet's distance to Sun, Δ its distance to Earth, and R\n * the distance from Sun to Earth. All distances in AU.\n */\nexport function fraction (r, Δ, R) { // (r, Δ, R float64) float64\n // (41.2) p. 283\n const s = r + Δ\n return (s * s - R * R) / (4 * r * Δ)\n}\n\n/**\n * PhaseAngle2 computes the phase angle of a planet.\n *\n * Arguments L, B, R are heliocentric ecliptical coordinates of the planet.\n * L0, R0 are longitude and radius for Earth, Δ is distance from Earth to\n * the planet. All distances in AU, angles in radians.\n *\n * The phase angle result is in radians.\n */\nexport function phaseAngle2 (L, B, R, L0, R0, Δ) { // (L, B, R, L0, R0, Δ float64) float64\n // (41.3) p. 283\n return Math.acos((R - R0 * Math.cos(B) * Math.cos(L - L0)) / Δ)\n}\n\n/**\n * PhaseAngle3 computes the phase angle of a planet.\n *\n * Arguments L, B are heliocentric ecliptical longitude and latitude of the\n * planet. x, y, z are cartesian coordinates of the planet, Δ is distance\n * from Earth to the planet. All distances in AU, angles in radians.\n *\n * The phase angle result is in radians.\n */\nexport function phaseAngle3 (L, B, x, y, z, Δ) { // (L, B, x, y, z, Δ float64) float64\n // (41.4) p. 283\n const [sL, cL] = base.sincos(L)\n const [sB, cB] = base.sincos(B)\n return Math.acos((x * cB * cL + y * cB * sL + z * sB) / Δ)\n}\n\n/**\n * FractionVenus computes an approximation of the illumanted fraction of Venus.\n */\nexport function fractionVenus (jde) { // (jde float64) float64\n const T = base.J2000Century(jde)\n const V = (261.51 + 22518.443 * T) * D2R\n const M = (177.53 + 35999.05 * T) * D2R\n const N = (50.42 + 58517.811 * T) * D2R\n const W = V + (1.91 * Math.sin(M) + 0.78 * Math.sin(N)) * D2R\n const Δ = Math.sqrt(1.52321 + 1.44666 * Math.cos(W))\n const s = 0.72333 + Δ\n return (s * s - 1) / 2.89332 / Δ\n}\n\n/**\n * Mercury computes the visual magnitude of Mercury.\n * Formula by G. Müller\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth,\n * and i the phase angle in radians.\n */\nexport function mercury (r, Δ, i) { // (r, Δ, i float64) float64\n const s = toDeg(i) - 50\n return 1.16 + 5 * Math.log10(r * Δ) + (0.02838 + 0.0001023 * s) * s\n}\n\n/**\n * Venus computes the visual magnitude of Venus.\n * Formula by G. Müller\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth,\n * and i the phase angle in radians.\n */\nexport function venus (r, Δ, i) { // (r, Δ, i float64) float64\n const iDeg = toDeg(i)\n return -4 + 5 * Math.log10(r * Δ) + (0.01322 + 0.0000004247 * iDeg * iDeg) * iDeg\n}\n\n/**\n * Mars computes the visual magnitude of Mars.\n * Formula by G. Müller\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth,\n * and i the phase angle in radians.\n */\nexport function mars (r, Δ, i) { // (r, Δ, i float64) float64\n return -1.3 + 5 * Math.log10(r * Δ) + 0.01486 * toDeg(i)\n}\n\n/**\n * Jupiter computes the visual magnitude of Jupiter.\n * Formula by G. Müller\n * Effect of phase not considered\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth.\n */\nexport function jupiter (r, Δ) { // (r, Δ float64) float64\n return -8.93 + 5 * Math.log10(r * Δ)\n}\n\n/**\n * Saturn computes the visual magnitude of Saturn.\n * Formula by G. Müller\n * Sun's altitude above the plane of the ring is not considered.\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth.\n * B is the Saturnicentric latitude of the Earth referred to the plane of\n * Saturn's ring.\n * ΔU (in radians) is the difference between the Saturnicentric longitudes\n * of the Sun and the Earth, measured in the plane of the ring.\n * You can use saturndisk.Disk() to obtain B and ΔU.\n */\nexport function saturn (r, Δ, B, ΔU) { // (r, Δ, B, ΔU float64) float64\n const s = Math.sin(Math.abs(B))\n return -8.68 + 5 * Math.log10(r * Δ) + 0.044 * Math.abs(toDeg(ΔU)) - 2.6 * s + 1.25 * s * s\n}\n\n/**\n * Uranus computes the visual magnitude of Uranus.\n * Formula by G. Müller\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth.\n */\nexport function uranus (r, Δ) { // (r, Δ float64) float64\n return -6.85 + 5 * Math.log10(r * Δ)\n}\n\n/**\n * Neptune computes the visual magnitude of Neptune.\n * Formulae by G. Müller\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth.\n */\nexport function neptune (r, Δ) { // (r, Δ float64) float64\n return -7.05 + 5 * Math.log10(r * Δ)\n}\n\n/**\n * Mercury84 computes the visual magnitude of Mercury.\n * The formula is that adopted in \"Astronomical Almanac\" in 1984.0\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth,\n * and i the phase angle in radians.\n */\nexport function mercury84 (r, Δ, i) { // (r, Δ, i float64) float64\n return base.horner(toDeg(i), -0.42 + 5 * Math.log10(r * Δ),\n 0.038, -0.000273, 0.000002)\n}\n\n/**\n * Venus84 computes the visual magnitude of Venus.\n * The formula is that adopted in \"Astronomical Almanac\" in 1984.0\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth,\n * and i the phase angle in radians.\n */\nexport function venus84 (r, Δ, i) { // (r, Δ, i float64) float64\n return base.horner(toDeg(i), -4.4 + 5 * Math.log10(r * Δ),\n 0.0009, 0.000239, -0.00000065)\n}\n\n/**\n * Mars84 computes the visual magnitude of Mars.\n * The formula is that adopted in \"Astronomical Almanac\" in 1984.0\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth,\n * and i the phase angle in radians.\n */\nexport function mars84 (r, Δ, i) { // (r, Δ, i float64) float64\n return -1.52 + 5 * Math.log10(r * Δ) + 0.016 * toDeg(i)\n}\n\n/**\n * Jupiter84 computes the visual magnitude of Jupiter.\n * The formula is that adopted in \"Astronomical Almanac\" in 1984.0\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth,\n * and i the phase angle in radians.\n */\nexport function jupiter84 (r, Δ, i) { // (r, Δ, i float64) float64\n return -9.4 + 5 * Math.log10(r * Δ) + 0.005 * toDeg(i)\n}\n\n/**\n * Saturn84 computes the visual magnitude of Saturn.\n * The formula is that adopted in \"Astronomical Almanac\" in 1984.0\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth.\n * B is the Saturnicentric latitude of the Earth referred to the plane of\n * Saturn's ring.\n * ΔU (in radians) is the difference between the Saturnicentric longitudes\n * of the Sun and the Earth, measured in the plane of the ring.\n */\nexport function saturn84 (r, Δ, B, ΔU) { // (r, Δ, B, ΔU float64) float64\n const s = Math.sin(Math.abs(B))\n return -8.88 + 5 * Math.log10(r * Δ) + 0.044 * Math.abs(toDeg(ΔU)) - 2.6 * s + 1.25 * s * s\n}\n\n/**\n * Uranus84 computes the visual magnitude of Uranus.\n * The formula is that adopted in \"Astronomical Almanac\" in 1984.0\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth.\n */\nexport function uranus84 (r, Δ) { // (r, Δ float64) float64\n return -7.19 + 5 * Math.log10(r * Δ)\n}\n\n/**\n * Neptune84 computes the visual magnitude of Neptune.\n * The formula is that adopted in \"Astronomical Almanac\" in 1984.0\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth.\n */\nexport function neptune84 (r, Δ) { // (r, Δ float64) float64\n return -6.87 + 5 * Math.log10(r * Δ)\n}\n\n/**\n * Pluto84 computes the visual magnitude of Pluto.\n * The formula is that adopted in \"Astronomical Almanac\" in 1984.0\n *\n * Argument r is the planet's distance from the Sun, Δ the distance from Earth.\n */\nexport function pluto84 (r, Δ) { // (r, Δ float64) float64\n return -1 + 5 * Math.log10(r * Δ)\n}\n\nexport default {\n phaseAngle,\n fraction,\n phaseAngle2,\n phaseAngle3,\n fractionVenus,\n mercury,\n venus,\n mars,\n jupiter,\n saturn,\n uranus,\n neptune,\n mercury84,\n venus84,\n mars84,\n jupiter84,\n saturn84,\n uranus84,\n neptune84,\n pluto84\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module julian\n */\n/**\n * Julian: Chapter 7, Julian day.\n */\n\nimport base from './base.js'\nimport sexa from './sexagesimal.js'\nimport deltat from './deltat.js'\n\nconst int = Math.trunc\n\n/** 1582-10-05 Julian Date is 1st Gregorian Date (1582-10-15) */\nexport const GREGORIAN0JD = 2299160.5\n\nconst DAYS_OF_YEAR = [0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]\nconst SECS_OF_DAY = 86400 // 24 * 60 * 60\n\n/**\n * Base class for CalendarJulian and CalendarGregorian\n * Respects the start of the Gregorian Calendar at `GREGORIAN0JD`\n */\nexport class Calendar {\n /**\n * @param {number|Date} [year] - If `Date` is given then year, month, day is taken from that. Shortcut to `new Calendar().fromDate(date)`\n * @param {number} [month]\n * @param {number} [day]\n */\n constructor (year, month = 1, day = 1) {\n if (year instanceof Date) {\n this.fromDate(year)\n } else {\n this.year = year\n this.month = month\n this.day = day\n }\n }\n\n getDate () {\n return {\n year: this.year,\n month: this.month,\n day: Math.floor(this.day)\n }\n }\n\n getTime () {\n const t = new sexa.Time(this.day * SECS_OF_DAY)\n const [neg, h, m, _s] = t.toHMS() // eslint-disable-line no-unused-vars\n let [s, ms] = base.modf(_s)\n ms = Math.trunc(ms * 1000)\n return {\n hour: h % 24,\n minute: m,\n second: s,\n millisecond: ms\n }\n }\n\n toISOString () {\n const { year, month, day } = this.getDate()\n const { hour, minute, second, millisecond } = this.getTime()\n return `${pad(year, 4)}-${pad(month)}-${pad(day)}T` +\n `${pad(hour)}:${pad(minute)}:${pad(second)}.${pad(millisecond, 3)}Z`\n }\n\n isGregorian () {\n return isCalendarGregorian(this.year, this.month, this.day)\n }\n\n /**\n * Note: Take care for dates < GREGORIAN0JD as `date` is always within the\n * proleptic Gregorian Calender\n * @param {Date} date - proleptic Gregorian date\n */\n fromDate (date) {\n this.year = date.getUTCFullYear()\n this.month = date.getUTCMonth() + 1\n const day = date.getUTCDate()\n const hour = date.getUTCHours()\n const minute = date.getUTCMinutes()\n const second = date.getUTCSeconds()\n const ms = date.getMilliseconds()\n this.day = day + (hour + ((minute + ((second + ms / 1000) / 60)) / 60)) / 24\n return this\n }\n\n /**\n * Note: Take care for dates < GREGORIAN0JD as `date` is always within the\n * proleptic Gregorian Calender\n * @returns {Date} proleptic Gregorian date\n */\n toDate () {\n const [day, fhour] = base.modf(this.day)\n const [hour, fminute] = base.modf(fhour * 24)\n const [minute, fsecond] = base.modf(fminute * 60)\n const [second, fms] = base.modf(fsecond * 60)\n const date = new Date(Date.UTC(\n this.year, this.month - 1, day, hour, minute, second, Math.round(fms * 1000)\n ))\n date.setUTCFullYear(this.year)\n return date\n }\n\n /**\n * converts a calendar date to decimal year\n * @returns {number} decimal year\n */\n toYear () {\n const [d, f] = base.modf(this.day) // eslint-disable-line no-unused-vars\n const n = this.dayOfYear() - 1 + f\n const days = this.isLeapYear() ? 366 : 365\n const decYear = this.year + (n / days)\n return decYear\n }\n\n /**\n * converts a decimal year to a calendar date\n * @param {number} year - decimal year\n */\n fromYear (year) {\n const [y, f] = base.modf(year)\n this.year = y\n const days = this.isLeapYear() ? 366 : 365\n const dayOfYear = base.round(f * days, 5)\n let m = 12\n while (m > 0 && DAYS_OF_YEAR[m] > dayOfYear) {\n m--\n }\n this.month = m\n this.day = 1 + dayOfYear - DAYS_OF_YEAR[this.month]\n return this\n }\n\n isLeapYear () {\n if (this.isGregorian()) {\n return LeapYearGregorian(this.year)\n } else {\n return LeapYearJulian(this.year)\n }\n }\n\n toJD () {\n return CalendarToJD(this.year, this.month, this.day, !this.isGregorian())\n }\n\n fromJD (jd) {\n const isJulian = !isJDCalendarGregorian(jd)\n const { year, month, day } = JDToCalendar(jd, isJulian)\n this.year = year\n this.month = month\n this.day = day\n return this\n }\n\n fromJDE (jde) {\n this.fromJD(jde)\n const dT = deltat.deltaT(this.toYear()) // in seconds\n this.day -= dT / 86400\n return this\n }\n\n toJDE () {\n const dT = deltat.deltaT(this.toYear()) // in seconds\n this.day += dT / 86400\n return this.toJD()\n }\n\n /**\n * set date to midnight UTC\n */\n midnight () {\n this.day = Math.floor(this.day)\n return this\n }\n\n /**\n * set date to noon UTC\n */\n noon () {\n this.day = Math.floor(this.day) + 0.5\n return this\n }\n\n /**\n * @param {Boolean} td - if `true` calendar instance is in TD; date gets converted to UT\n * true - `UT = TD - ΔT`\n * false - `TD = UT + ΔT`\n */\n deltaT (td) {\n const dT = deltat.deltaT(this.toYear()) // in seconds\n if (td) {\n this.day -= dT / 86400\n } else {\n this.day += dT / 86400\n }\n return this\n }\n\n dayOfWeek () {\n return DayOfWeek(this.toJD())\n }\n\n dayOfYear () {\n if (this.isGregorian()) {\n return DayOfYearGregorian(this.year, this.month, this.day)\n } else {\n return DayOfYearJulian(this.year, this.month, this.day)\n }\n }\n}\n\nexport class CalendarJulian extends Calendar {\n toJD () {\n return CalendarJulianToJD(this.year, this.month, this.day)\n }\n\n fromJD (jd) {\n const { year, month, day } = JDToCalendarJulian(jd)\n this.year = year\n this.month = month\n this.day = day\n return this\n }\n\n isLeapYear () {\n return LeapYearJulian(this.year)\n }\n\n dayOfYear () {\n return DayOfYearJulian(this.year, this.month, this.day)\n }\n\n /**\n * toGregorian converts a Julian calendar date to a year, month, and day\n * in the Gregorian calendar.\n * @returns {CalendarGregorian}\n */\n toGregorian () {\n const jd = this.toJD()\n return new CalendarGregorian().fromJD(jd)\n }\n}\n\nexport class CalendarGregorian extends Calendar {\n toJD () {\n return CalendarGregorianToJD(this.year, this.month, this.day)\n }\n\n fromJD (jd) {\n const { year, month, day } = JDToCalendarGregorian(jd)\n this.year = year\n this.month = month\n this.day = day\n return this\n }\n\n isLeapYear () {\n return LeapYearGregorian(this.year)\n }\n\n dayOfYear () {\n return DayOfYearGregorian(this.year, this.month, this.day)\n }\n\n /*\n * toJulian converts a Gregorian calendar date to a year, month, and day\n * in the Julian calendar.\n * @returns {CalendarJulian}\n */\n toJulian () {\n const jd = this.toJD()\n return new CalendarJulian().fromJD(jd)\n }\n}\n\n// -----------------------------------------------------------------------------\n\n/**\n * base conversion from calendar date to julian day\n */\nexport function CalendarToJD (y, m, d, isJulian) {\n let b = 0\n if (m < 3) {\n y--\n m += 12\n }\n if (!isJulian) {\n const a = base.floorDiv(y, 100)\n b = 2 - a + base.floorDiv(a, 4)\n }\n // (7.1) p. 61\n const jd = (base.floorDiv(36525 * (int(y + 4716)), 100)) +\n (base.floorDiv(306 * (m + 1), 10) + b) + d - 1524.5\n return jd\n}\n\n/**\n * CalendarGregorianToJD converts a Gregorian year, month, and day of month\n * to Julian day.\n *\n * Negative years are valid, back to JD 0. The result is not valid for\n * dates before JD 0.\n * @param {number} y - year (int)\n * @param {number} m - month (int)\n * @param {number} d - day (float)\n * @returns {number} jd - Julian day (float)\n */\nexport function CalendarGregorianToJD (y, m, d) {\n return CalendarToJD(y, m, d, false)\n}\n\n/**\n * CalendarJulianToJD converts a Julian year, month, and day of month to Julian day.\n *\n * Negative years are valid, back to JD 0. The result is not valid for\n * dates before JD 0.\n * @param {number} y - year (int)\n * @param {number} m - month (int)\n * @param {number} d - day (float)\n * @returns {number} jd - Julian day (float)\n */\nexport function CalendarJulianToJD (y, m, d) {\n return CalendarToJD(y, m, d, true)\n}\n\n/**\n * LeapYearJulian returns true if year y in the Julian calendar is a leap year.\n * @param {number} y - year (int)\n * @returns {boolean} true if leap year in Julian Calendar\n */\nexport function LeapYearJulian (y) {\n return y % 4 === 0\n}\n\n/**\n * LeapYearGregorian returns true if year y in the Gregorian calendar is a leap year.\n * @param {number} y - year (int)\n * @returns {boolean} true if leap year in Gregorian Calendar\n */\nexport function LeapYearGregorian (y) {\n return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0\n}\n\n/**\n * JDToCalendar returns the calendar date for the given jd.\n *\n * Note that this function returns a date in either the Julian or Gregorian\n * Calendar, as appropriate.\n * @param {number} jd - Julian day (float)\n * @param {boolean} isJulian - set true for Julian Calendar, otherwise Gregorian is used\n * @returns {object} `{ (int) year, (int) month, (float) day }`\n */\nexport function JDToCalendar (jd, isJulian) {\n const [z, f] = base.modf(jd + 0.5)\n let a = z\n if (!isJulian) {\n const α = base.floorDiv(z * 100 - 186721625, 3652425)\n a = z + 1 + α - base.floorDiv(α, 4)\n }\n const b = a + 1524\n const c = base.floorDiv(b * 100 - 12210, 36525)\n const d = base.floorDiv(36525 * c, 100)\n const e = int(base.floorDiv((b - d) * 1e4, 306001))\n // compute return values\n let year\n let month\n const day = (int(b - d) - base.floorDiv(306001 * e, 1e4)) + f\n if (e === 14 || e === 15) {\n month = e - 13\n } else {\n month = e - 1\n }\n if (month < 3) {\n year = int(c) - 4715\n } else {\n year = int(c) - 4716\n }\n return { year, month, day }\n}\n\n/**\n * JDToCalendarGregorian returns the calendar date for the given jd in the Gregorian Calendar.\n *\n * @param {number} jd - Julian day (float)\n * @returns {object} `{ (int) year, (int) month, (float) day }`\n */\nexport function JDToCalendarGregorian (jd) {\n return JDToCalendar(jd, false)\n}\n\n/**\n * JDToCalendarJulian returns the calendar date for the given jd in the Julian Calendar.\n *\n * @param {number} jd - Julian day (float)\n * @returns {object} { (int) year, (int) month, (float) day }\n */\nexport function JDToCalendarJulian (jd) {\n return JDToCalendar(jd, true)\n}\n\n/**\n * isJDCalendarGregorian tests if Julian day `jd` falls into the Gregorian calendar\n * @param {number} jd - Julian day (float)\n * @returns {boolean} true for Gregorian, false for Julian calendar\n */\nexport function isJDCalendarGregorian (jd) {\n return (jd >= GREGORIAN0JD)\n}\n\n/**\n * isCalendarGregorian tests if date falls into the Gregorian calendar\n * @param {number} year - julian/gregorian year\n * @param {number} [month] - month of julian/gregorian year\n * @param {number} [day] - day of julian/gregorian year\n * @returns {boolean} true for Gregorian, false for Julian calendar\n */\nexport function isCalendarGregorian (year, month = 1, day = 1) {\n return (year > 1582 ||\n (year === 1582 && month > 10) ||\n (year === 1582 && month === 10 && day >= 15)\n )\n}\n\n/**\n * JDToDate converts a Julian day `jd` to a Date Object (Gregorian Calendar)\n *\n * Note: Javascript uses the the ISO-8601 calendar, which is a proleptic Gregorian\n * calendar, i.e. it acts as if this calendar was always in effect, even before\n * its year of introduction in 1582. Therefore dates between 1582-10-05 and\n * 1582-10-14 exists.\n *\n * @param {number} jd - Julian day (float)\n * @returns {Date}\n */\nexport function JDToDate (jd) {\n return new CalendarGregorian().fromJD(jd).toDate()\n}\n\n/**\n * DateToJD converts a proleptic Gregorian Date into a Julian day `jd`\n * @param {Date} date\n * @returns {number} jd - Julian day (float)\n */\nexport function DateToJD (date) {\n return new CalendarGregorian().fromDate(date).toJD()\n}\n\n/**\n * JDEToDate converts a Julian ephemeris day `jde` to a Date Object (Gregorian Calendar)\n * To obtain \"Universal Time\" (UT) from \"Dynamical Time\" (TD) the correction ΔT (in seconds) gets applied\n * ```\n * UT = TD - ΔT\n * ```\n * If your use case does not require such accuracy converting `jde` using `JDToDate` is fine.\n *\n * Note: Javascript uses the the ISO-8601 calendar, which is a proleptic Gregorian\n * calendar, i.e. it acts as if this calendar was always in effect, even before\n * its year of introduction in 1582. Therefore dates between 1582-10-05 and\n * 1582-10-14 exists.\n *\n * @param {number} jde - Julian ephemeris day\n * @returns {Date} Javascript Date Object\n */\nexport function JDEToDate (jde) {\n return new CalendarGregorian().fromJDE(jde).toDate()\n}\n\n/**\n * DateToJDE converts a Date Object (Gregorian Calendar) to a Julian ephemeris day `jde`\n * To obtain \"Dynamical Time\" (TD) from \"Universal Time\" (UT) the correction ΔT (in seconds) gets applied\n * ```\n * TD = UT + ΔT\n * ```\n * If your use case does not require such accuracy converting `Date` using `DateToJD` is fine.\n *\n * @param {Date} date - Javascript Date Object\n * @returns {number} jde - Julian ephemeris day (float)\n */\nexport function DateToJDE (date) {\n return new CalendarGregorian().fromDate(date).toJDE()\n}\n\n/**\n * converts Modified Julian Day `mjd` to Julian Day `jd`\n * @param {Number} mjd - Modified Julian Day\n * @returns {Number} jd - Julian Day\n */\nexport function MJDToJD (mjd) {\n return mjd + base.JMod\n}\n\n/**\n * converts Julian Day `jd` to Modified Julian Day `mjd`\n * The MJD sometimes appear when mentioning orbital elements of artificial satellites.\n * Contrary to JD the MJD begins at Greenwich mean midnight.\n * @param {Number} jd - Julian Day\n * @returns {Number} mjd - Modified Julian Day MJD\n */\nexport function JDToMJD (jd) {\n return jd - base.JMod\n}\n\n/**\n * DayOfWeek determines the day of the week for a given JD.\n *\n * The value returned is an integer in the range 0 to 6, where 0 represents\n * Sunday. This is the same convention followed in the time package of the\n * Javascript standard library.\n * @param {number} jd - Julian day (float)\n * @returns {number} (int) 0 == sunday; ...; 6 == saturday\n */\nexport function DayOfWeek (jd) {\n return int(jd + 1.5) % 7\n}\n\n/**\n * DayOfYearGregorian computes the day number within the year of the Gregorian\n * calendar.\n * @param {number} y - year (int)\n * @param {number} m - month (int)\n * @param {number} d - day (float)\n * @returns {number} day of year\n */\nexport function DayOfYearGregorian (y, m, d) {\n return DayOfYear(y, m, int(d), LeapYearGregorian(y))\n}\n\n/**\n * DayOfYearJulian computes the day number within the year of the Julian\n * calendar.\n * @param {number} y - year (int)\n * @param {number} m - month (int)\n * @param {number} d - day (float)\n * @returns {number} day of year\n */\nexport function DayOfYearJulian (y, m, d) {\n return DayOfYear(y, m, int(d), LeapYearJulian(y))\n}\n\n/**\n * DayOfYear computes the day number within the year.\n *\n * This form of the function is not specific to the Julian or Gregorian\n * calendar, but you must tell it whether the year is a leap year.\n * @param {number} y - year (int)\n * @param {number} m - month (int)\n * @param {number} d - day (float)\n * @param {boolean} leap - set `true` if `y` is leap year\n * @returns {number} day of year\n */\nexport function DayOfYear (y, m, d, leap) {\n let k = 0\n if (leap && m > 1) {\n k = 1\n }\n return k + DAYS_OF_YEAR[m] + int(d)\n}\n\n/**\n * DayOfYearToCalendar returns the calendar month and day for a given\n * day of year and leap year status.\n * @param {number} n - day of year (int)\n * @param {boolean} leap - set `true` if `y` is leap year\n * @returns {object} `{ (int) month, (float) day }`\n */\nexport function DayOfYearToCalendar (n, leap) {\n let month\n let k = 0\n if (leap) {\n k = 1\n }\n for (month = 1; month <= 12; month++) {\n if (k + DAYS_OF_YEAR[month] > n) {\n month = month - 1\n break\n }\n }\n const day = n - k - DAYS_OF_YEAR[month]\n return { month, day }\n}\n\n/**\n * DayOfYearToCalendarGregorian returns the calendar month and day for a given\n * day of year.\n * @param {number} year\n * @param {number} n - day of year (int)\n * @returns {CalendarGregorian} { (int) year, (int) month, (float) day }\n */\nexport function DayOfYearToCalendarGregorian (year, n) {\n const { month, day } = DayOfYearToCalendar(n, LeapYearGregorian(year))\n return new CalendarGregorian(year, month, day)\n}\n\n/**\n * DayOfYearToCalendarJulian returns the calendar month and day for a given\n * day of year.\n * @param {number} year\n * @param {number} n - day of year (int)\n * @returns {CalendarJulian} { (int) year, (int) month, (float) day }\n */\nexport function DayOfYearToCalendarJulian (year, n) {\n const { month, day } = DayOfYearToCalendar(n, LeapYearJulian(year))\n return new CalendarJulian(year, month, day)\n}\n\nfunction pad (num, len) {\n len = len || 2\n const neg = num < 0 ? '-' : ''\n num = Math.abs(num)\n const padded = ('0000' + num)\n return neg + padded.substr(padded.length - len, len)\n}\n\nexport default {\n GREGORIAN0JD,\n Calendar,\n CalendarJulian,\n CalendarGregorian,\n CalendarToJD,\n CalendarGregorianToJD,\n CalendarJulianToJD,\n LeapYearJulian,\n LeapYearGregorian,\n JDToCalendar,\n JDToCalendarGregorian,\n JDToCalendarJulian,\n isJDCalendarGregorian,\n isCalendarGregorian,\n JDToDate,\n DateToJD,\n JDEToDate,\n DateToJDE,\n MJDToJD,\n JDToMJD,\n DayOfWeek,\n DayOfYearGregorian,\n DayOfYearJulian,\n DayOfYear,\n DayOfYearToCalendar,\n DayOfYearToCalendarGregorian,\n DayOfYearToCalendarJulian\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module jm\n */\n/**\n * JM: Chapter 9, Jewish and Moslem Calendars.\n *\n * The Jewish calendar routines are implemented as a monolithic function,\n * because computations of the various results build off of common\n * intermediate results.\n *\n * The Moslem calendar routines break down nicely into some separate functions.\n *\n * Included in these are two functions that convert between Gregorian and\n * Julian calendar days without going through Julian day (JD). As such,\n * I suppose, these or similar routines are not in chapter 7, Julian Day.\n * Package base might also be a suitable place for these, but I'm not sure\n * they are used anywhere else in the book. Anyway, they have the quirk\n * that they are not direct inverses: JulianToGregorian returns the day number\n * of the day of the Gregorian year, but GregorianToJulian wants the Gregorian\n * month and day of month as input.\n */\n\nimport base from './base.js'\nimport julian from './julian.js'\n\nconst int = Math.trunc\n\n/**\n * JewishCalendar returns interesting dates and facts about a given year.\n *\n * Input is a Julian or Gregorian year.\n *\n * Outputs:\n * A: (int) Year number in the Jewish Calendar\n * mP: (int) Month number of Pesach.\n * dP: (int) Day number of Pesach.\n * mNY: (int) Month number of the Jewish new year.\n * dNY: (int) Day number of the Jewish new year.\n * months: (int) Number of months in this year.\n * days: (int) Number of days in this year.\n */\nexport function JewishCalendar (y) {\n const A = y + 3760\n const D = bigD(y)\n let mP = 3\n let dP = D\n if (dP > 31) {\n mP++\n dP -= 31\n }\n // A simplification of Meeus's rule to add 163 days. Months of Pesach\n // are either March or April with D based off of March. Months of New\n // year are either September or August so D+163-(days from March to\n // September == 184) = D-21 must be based off of September.\n let mNY = 9\n let dNY = D - 21\n if (dNY > 30) {\n mNY++\n dNY -= 30\n }\n let months = 12\n switch (A % 19) {\n case 0:\n case 3:\n case 6:\n case 8:\n case 11:\n case 14:\n case 17:\n months++\n break\n }\n // Similarly, A simplification of Meeus's rule to take the difference\n // in calendar days from NY of one year to NY of the next. NY is based\n // on D, so difference in D is difference in day numbers of year. Result\n // is sum of this number and the number of days in the Western calandar\n // year.\n const y1 = y + 1\n let lf = julian.LeapYearGregorian\n if (y1 < 1583) {\n lf = julian.LeapYearJulian\n }\n let days = 365\n if (lf(y1)) {\n days++\n }\n days += bigD(y1) - D\n return [A, mP, dP, mNY, dNY, months, days]\n}\n\nconst bigD = function (y) { // (y int) int\n const C = base.floorDiv(y, 100)\n // const S int\n let S = 0\n if (y >= 1583) {\n S = int(base.floorDiv(3 * C - 5, 4))\n }\n const a = (12 * y + 12) % 19\n const b = y % 4\n const Q = -1.904412361576 + 1.554241796621 * (a) + 0.25 * (b) -\n 0.003177794022 * (y) + (S)\n const fq = Math.floor(Q)\n const iq = int(fq)\n const j = (iq + 3 * y + 5 * b + 2 - S) % 7\n const r = Q - fq\n // const D int\n let D\n if (j === 2 || j === 4 || j === 6) {\n D = iq + 23\n } else if (j === 1 && a > 6 && r >= 0.63287037) {\n D = iq + 24\n } else if (j === 0 && a > 11 && r >= 0.897723765) {\n D = iq + 23\n } else {\n D = iq + 22\n }\n return int(D)\n}\n\n/**\n * MoslemToJD converts a Moslem calendar date to a Julian Day.\n * @param {Number} y - year in moslem calendar\n * @param {Number} m - month\n * @param {Number} d - day\n * @returns {Number} jd - Julian day\n */\nexport function MoslemToJD (y, m, d) { // (y, m, d int) (jY, jDN int)\n const N = d + base.floorDiv(295001 * (m - 1) + 9900, 10000)\n const Q = base.floorDiv(y, 30)\n const R = y % 30\n const A = base.floorDiv(11 * R + 3, 30)\n const W = 404 * Q + 354 * R + 208 + A\n const Q1 = base.floorDiv(W, 1461)\n const Q2 = W % 1461\n const G = 621 + 28 * Q + 4 * Q1\n const K = base.floorDiv(Q2 * 10000, 3652422)\n const E = base.floorDiv(3652422 * K, 10000)\n let J = Q2 - E + N - 1\n let X = G + K\n if (J > 366 && X % 4 === 0) {\n J -= 366\n X++\n } else if (J > 365 && X % 4 > 0) {\n J -= 365\n X++\n }\n const jd = base.floorDiv(36525 * (X - 1), 100) + 1721423 + J\n return jd\n}\n\n/**\n * MoslemLeapYear returns true if year y of the Moslem calendar is a leap year.\n * @param {Number} year\n * @returns {Boolean} true if leap year\n */\nexport function MoslemLeapYear (year) { // (y int) bool\n const R = year % 30\n return (11 * R + 3) % 30 > 18\n}\n\n/**\n * @typedef {object} DateObj\n * @property {number} year\n * @property {number} month\n * @property {number} day\n */\n\n/**\n * JulianToMoslem takes a year, month, and day of the Julian calendar and returns the equivalent year, month, and day of the Moslem calendar.\n *\n * @param {Number} y - julian year\n * @param {Number} m - julian month\n * @param {Number} d - julian day\n * @returns {DateObj}\n */\nexport function JulianToMoslem (y, m, d) { // (y, m, d int) (my, mm, md int)\n let W = 2\n if (y % 4 === 0) {\n W = 1\n }\n const N = base.floorDiv(275 * m, 9) - W * base.floorDiv(m + 9, 12) + d - 30\n const A = int(y - 623)\n const B = base.floorDiv(A, 4)\n const C2 = (function (A) {\n const C = A % 4\n const C1 = 365.25001 * (C)\n const C2 = Math.floor(C1)\n if (C1 - C2 > 0.5) {\n return int(C2) + 1\n }\n return int(C2)\n })(A)\n const Dp = 1461 * B + 170 + C2\n const Q = base.floorDiv(Dp, 10631)\n const R = Dp % 10631\n const J = base.floorDiv(R, 354)\n const K = R % 354\n const O = base.floorDiv(11 * J + 14, 30)\n let my = 30 * Q + J + 1\n let JJ = K - O + N - 1\n let days = 354\n if (MoslemLeapYear(y)) {\n days++\n }\n if (JJ > days) {\n JJ -= days\n my++\n }\n let mm\n let md\n if (JJ === 355) {\n mm = 12\n md = 30\n } else {\n const S = base.floorDiv((JJ - 1) * 10, 295)\n mm = 1 + S\n md = base.floorDiv(10 * JJ - 295 * S, 10)\n }\n return { year: my, month: mm, day: md }\n}\n\n/**\n * An MMonth specifies a month of the Moslum Calendar (Muharram = 1, ...).\n *\n * Upgraded to Unicode from the spellings given by Meeus.\n * Source: http://en.wikipedia.org/wiki/Islamic_calendar.\n */\nconst mmonths = [\n '',\n 'Muḥarram',\n 'Ṣafar',\n 'Rabīʿ I',\n 'Rabīʿ II',\n 'Jumādā I',\n 'Jumādā II',\n 'Rajab',\n 'Shaʿbān',\n 'Ramaḍān',\n 'Shawwāl',\n 'Dhū al-Qaʿda',\n 'Dhū al-Ḥijja'\n]\n\n/**\n * String returns the Romanization of the month (\"Muḥarram\", \"Ṣafar\", ...).\n */\nexport function moslemMonth (m) {\n return mmonths[m]\n}\n\nexport default {\n JewishCalendar,\n MoslemToJD,\n MoslemLeapYear,\n JulianToMoslem,\n moslemMonth\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module moonposition\n */\n/**\n * Moonposition: Chapter 47, Position of the Moon.\n */\n\nimport base, { Coord } from './base.js' // eslint-disable-line no-unused-vars\nconst { asin, sin } = Math\nconst D2R = Math.PI / 180\n\nconst EARTH_RADIUS = 6378.137 // km\n\n/**\n * parallax returns equatorial horizontal parallax of the Moon.\n *\n * @param {Number} distance - distance between centers of the Earth and Moon, in km.\n * @returns {Number} Result in radians.\n */\nexport function parallax (distance) {\n // p. 337\n return asin(EARTH_RADIUS / distance)\n}\n\nfunction dmf (T) {\n const d = base.horner(T, 297.8501921 * D2R, 445267.1114034 * D2R, -0.0018819 * D2R, D2R / 545868, -D2R / 113065000)\n const m = base.horner(T, 357.5291092 * D2R, 35999.0502909 * D2R, -0.0001536 * D2R, D2R / 24490000)\n const m_ = base.horner(T, 134.9633964 * D2R, 477198.8675055 * D2R,\n 0.0087414 * D2R, D2R / 69699, -D2R / 14712000)\n const f = base.horner(T, 93.272095 * D2R, 483202.0175233 * D2R, -0.0036539 * D2R, -D2R / 3526000, D2R / 863310000)\n return [d, m, m_, f]\n}\n\n/**\n * position returns geocentric location of the Moon.\n *\n * Results are referenced to mean equinox of date and do not include\n * the effect of nutation.\n *\n * @param {number} jde - Julian ephemeris day\n * @returns {Coord}\n * {number} lon - Geocentric longitude λ, in radians.\n * {number} lat - Geocentric latitude β, in radians.\n * {number} range - Distance Δ between centers of the Earth and Moon, in km.\n */\nexport function position (jde) {\n const T = base.J2000Century(jde)\n const l_ = base.horner(T, 218.3164477 * D2R, 481267.88123421 * D2R, -0.0015786 * D2R, D2R / 538841, -D2R / 65194000)\n const [d, m, m_, f] = dmf(T)\n const a1 = 119.75 * D2R + 131.849 * D2R * T\n const a2 = 53.09 * D2R + 479264.29 * D2R * T\n const a3 = 313.45 * D2R + 481266.484 * D2R * T\n const e = base.horner(T, 1, -0.002516, -0.0000074)\n const e2 = e * e\n let Σl = 3958 * sin(a1) + 1962 * sin(l_ - f) + 318 * sin(a2)\n let Σr = 0.0\n let Σb = -2235 * sin(l_) + 382 * sin(a3) + 175 * sin(a1 - f) +\n 175 * sin(a1 + f) + 127 * sin(l_ - m_) - 115 * sin(l_ + m_)\n ta.forEach((r) => {\n const [sina, cosa] = base.sincos(d * r.d + m * r.m + m_ * r.m_ + f * r.f)\n switch (r.m) {\n case 0:\n Σl += r.Σl * sina\n Σr += r.Σr * cosa\n break\n case -1:\n case 1:\n Σl += r.Σl * sina * e\n Σr += r.Σr * cosa * e\n break\n case -2:\n case 2:\n Σl += r.Σl * sina * e2\n Σr += r.Σr * cosa * e2\n break\n }\n })\n\n tb.forEach((r) => {\n const sb = sin(d * r.d + m * r.m + m_ * r.m_ + f * r.f)\n switch (r.m) {\n case 0:\n Σb += r.Σb * sb\n break\n case -1:\n case 1:\n Σb += r.Σb * sb * e\n break\n case -2:\n case 2:\n Σb += r.Σb * sb * e2\n break\n }\n })\n const lon = base.pmod(l_, 2 * Math.PI) + Σl * 1e-6 * D2R\n const lat = Σb * 1e-6 * D2R\n const range = 385000.56 + Σr * 1e-3\n return new base.Coord(lon, lat, range)\n}\n\nconst ta = (function () {\n const ta = [\n [0, 0, 1, 0, 6288774, -20905355],\n [2, 0, -1, 0, 1274027, -3699111],\n [2, 0, 0, 0, 658314, -2955968],\n [0, 0, 2, 0, 213618, -569925],\n\n [0, 1, 0, 0, -185116, 48888],\n [0, 0, 0, 2, -114332, -3149],\n [2, 0, -2, 0, 58793, 246158],\n [2, -1, -1, 0, 57066, -152138],\n\n [2, 0, 1, 0, 53322, -170733],\n [2, -1, 0, 0, 45758, -204586],\n [0, 1, -1, 0, -40923, -129620],\n [1, 0, 0, 0, -34720, 108743],\n\n [0, 1, 1, 0, -30383, 104755],\n [2, 0, 0, -2, 15327, 10321],\n [0, 0, 1, 2, -12528, 0],\n [0, 0, 1, -2, 10980, 79661],\n\n [4, 0, -1, 0, 10675, -34782],\n [0, 0, 3, 0, 10034, -23210],\n [4, 0, -2, 0, 8548, -21636],\n [2, 1, -1, 0, -7888, 24208],\n\n [2, 1, 0, 0, -6766, 30824],\n [1, 0, -1, 0, -5163, -8379],\n [1, 1, 0, 0, 4987, -16675],\n [2, -1, 1, 0, 4036, -12831],\n\n [2, 0, 2, 0, 3994, -10445],\n [4, 0, 0, 0, 3861, -11650],\n [2, 0, -3, 0, 3665, 14403],\n [0, 1, -2, 0, -2689, -7003],\n\n [2, 0, -1, 2, -2602, 0],\n [2, -1, -2, 0, 2390, 10056],\n [1, 0, 1, 0, -2348, 6322],\n [2, -2, 0, 0, 2236, -9884],\n\n [0, 1, 2, 0, -2120, 5751],\n [0, 2, 0, 0, -2069, 0],\n [2, -2, -1, 0, 2048, -4950],\n [2, 0, 1, -2, -1773, 4130],\n\n [2, 0, 0, 2, -1595, 0],\n [4, -1, -1, 0, 1215, -3958],\n [0, 0, 2, 2, -1110, 0],\n [3, 0, -1, 0, -892, 3258],\n\n [2, 1, 1, 0, -810, 2616],\n [4, -1, -2, 0, 759, -1897],\n [0, 2, -1, 0, -713, -2117],\n [2, 2, -1, 0, -700, 2354],\n\n [2, 1, -2, 0, 691, 0],\n [2, -1, 0, -2, 596, 0],\n [4, 0, 1, 0, 549, -1423],\n [0, 0, 4, 0, 537, -1117],\n\n [4, -1, 0, 0, 520, -1571],\n [1, 0, -2, 0, -487, -1739],\n [2, 1, 0, -2, -399, 0],\n [0, 0, 2, -2, -381, -4421],\n\n [1, 1, 1, 0, 351, 0],\n [3, 0, -2, 0, -340, 0],\n [4, 0, -3, 0, 330, 0],\n [2, -1, 2, 0, 327, 0],\n\n [0, 2, 1, 0, -323, 1165],\n [1, 1, -1, 0, 299, 0],\n [2, 0, 3, 0, 294, 0],\n [2, 0, -1, -2, 0, 8752]\n ]\n return ta.map((row) => {\n const o = {}\n const vals = ['d', 'm', 'm_', 'f', 'Σl', 'Σr']\n vals.forEach((D2R, i) => {\n o[D2R] = row[i]\n })\n return o\n })\n})()\n\nconst tb = (function () {\n const tb = [\n [0, 0, 0, 1, 5128122],\n [0, 0, 1, 1, 280602],\n [0, 0, 1, -1, 277693],\n [2, 0, 0, -1, 173237],\n\n [2, 0, -1, 1, 55413],\n [2, 0, -1, -1, 46271],\n [2, 0, 0, 1, 32573],\n [0, 0, 2, 1, 17198],\n\n [2, 0, 1, -1, 9266],\n [0, 0, 2, -1, 8822],\n [2, -1, 0, -1, 8216],\n [2, 0, -2, -1, 4324],\n\n [2, 0, 1, 1, 4200],\n [2, 1, 0, -1, -3359],\n [2, -1, -1, 1, 2463],\n [2, -1, 0, 1, 2211],\n\n [2, -1, -1, -1, 2065],\n [0, 1, -1, -1, -1870],\n [4, 0, -1, -1, 1828],\n [0, 1, 0, 1, -1794],\n\n [0, 0, 0, 3, -1749],\n [0, 1, -1, 1, -1565],\n [1, 0, 0, 1, -1491],\n [0, 1, 1, 1, -1475],\n\n [0, 1, 1, -1, -1410],\n [0, 1, 0, -1, -1344],\n [1, 0, 0, -1, -1335],\n [0, 0, 3, 1, 1107],\n\n [4, 0, 0, -1, 1021],\n [4, 0, -1, 1, 833],\n\n [0, 0, 1, -3, 777],\n [4, 0, -2, 1, 671],\n [2, 0, 0, -3, 607],\n [2, 0, 2, -1, 596],\n\n [2, -1, 1, -1, 491],\n [2, 0, -2, 1, -451],\n [0, 0, 3, -1, 439],\n [2, 0, 2, 1, 422],\n\n [2, 0, -3, -1, 421],\n [2, 1, -1, 1, -366],\n [2, 1, 0, 1, -351],\n [4, 0, 0, 1, 331],\n\n [2, -1, 1, 1, 315],\n [2, -2, 0, -1, 302],\n [0, 0, 1, 3, -283],\n [2, 1, 1, -1, -229],\n\n [1, 1, 0, -1, 223],\n [1, 1, 0, 1, 223],\n [0, 1, -2, -1, -220],\n [2, 1, -1, -1, -220],\n\n [1, 0, 1, 1, -185],\n [2, -1, -2, -1, 181],\n [0, 1, 2, 1, -177],\n [4, 0, -2, -1, 176],\n\n [4, -1, -1, -1, 166],\n [1, 0, 1, -1, -164],\n [4, 0, 1, -1, 132],\n [1, 0, -1, -1, -119],\n\n [4, -1, 0, -1, 115],\n [2, -2, 0, 1, 107]\n ]\n return tb.map((row) => {\n const o = {}\n const vals = ['d', 'm', 'm_', 'f', 'Σb']\n vals.forEach((D2R, i) => {\n o[D2R] = row[i]\n })\n return o\n })\n})()\n\n/**\n * Node returns longitude of the mean ascending node of the lunar orbit.\n *\n * @param {number} jde - Julian ephemeris day\n * @returns result in radians.\n */\nexport function node (jde) {\n return base.pmod(\n base.horner(\n base.J2000Century(jde),\n 125.0445479 * D2R,\n -1934.1362891 * D2R,\n 0.0020754 * D2R,\n D2R / 467441,\n -D2R / 60616000\n ), 2 * Math.PI\n )\n}\n\n/**\n * perigee returns longitude of perigee of the lunar orbit.\n *\n * @param {number} jde - Julian ephemeris day\n * @returns result in radians.\n */\nexport function perigee (jde) {\n return base.pmod(\n base.horner(\n base.J2000Century(jde),\n 83.3532465 * D2R,\n 4069.0137287 * D2R,\n -0.01032 * D2R,\n -D2R / 80053,\n D2R / 18999000\n ), 2 * Math.PI\n )\n}\n\n/**\n * trueNode returns longitude of the true ascending node.\n *\n * That is, the node of the instantaneous lunar orbit.\n *\n * @param {number} jde - Julian ephemeris day\n * @returns result in radians.\n */\nexport function trueNode (jde) {\n const [d, m, m_, f] = dmf(base.J2000Century(jde))\n return node(jde) +\n -1.4979 * D2R * sin(2 * (d - f)) +\n -0.15 * D2R * sin(m) +\n -0.1226 * D2R * sin(2 * d) +\n 0.1176 * D2R * sin(2 * f) +\n -0.0801 * D2R * sin(2 * (m_ - f))\n}\n\nexport default {\n parallax,\n position,\n node,\n perigee,\n trueNode\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module moon\n */\n/**\n * Moon: Chapter 53, Ephemeris for Physical Observations of the Moon.\n *\n * Incomplete. Topocentric functions are commented out for lack of test data.\n */\n\nimport base, { Coord } from './base.js'// eslint-disable-line no-unused-vars\nimport coord from './coord.js'\nimport moonposition from './moonposition.js'\nimport nutation from './nutation.js'\nimport solar from './solar.js'\nimport { Planet } from './planetposition.js' // eslint-disable-line no-unused-vars\n\nconst { sin, cos, asin, atan2 } = Math\nconst D2R = Math.PI / 180\nconst _I = 1.54242 * D2R // IAU value of inclination of mean lunar equator\n\nconst [sI, cI] = base.sincos(_I)\n\n/**\n * Physical returns quantities useful for physical observation of the Moon.\n *\n * Returned l, b are librations in selenographic longitude and latitude.\n * They represent combined optical and physical librations. Topocentric\n * librations are not considered.\n *\n * Returned P is the the position angle of the Moon's axis of rotation.\n *\n * Returned l0, b0 are the selenographic coordinates of the Sun.\n *\n * Returned values all in radians.\n\n * @param {number} jde - Julian ephemeris day\n * @param {Planet} earth - VSOP87 Planet Earth\n * @return {Array}\n * {base.Coord} cMoon - selenographic longitude, latitude of the Moon\n * {number} P - position angle of the Moon's axis of rotation\n * {base.Coord} cSun - selenographic longitude, latitude of the Sun.\n */\nexport function physical (jde, earth) {\n const { lon, lat, range } = moonposition.position(jde) // (λ without nutation)\n // [λ, β, Δ]\n const m = new Moon(jde)\n const [l, b] = m.lib(lon, lat)\n const P = m.pa(lon, lat, b)\n const [l0, b0] = m.sun(lon, lat, range, earth)\n const cMoon = new base.Coord(l, b)\n const cSun = new base.Coord(l0, b0)\n return [cMoon, P, cSun]\n}\n\n/**\n * Quantities computed for a jde and used in computing return values of\n * physical(). Computations are broken into several methods to organize\n * the code.\n */\nexport class Moon {\n constructor (jde) {\n this.jde = jde\n // Δψ, F, Ω, p. 372.0\n const [Δψ, Δε] = nutation.nutation(jde)\n this.Δψ = Δψ\n const T = base.J2000Century(jde)\n const F = this.F = base.horner(T, 93.272095 * D2R, 483202.0175233 * D2R, -0.0036539 * D2R, -D2R / 3526000, D2R / 863310000)\n this.Ω = base.horner(T, 125.0445479 * D2R, -1934.1362891 * D2R, 0.0020754 * D2R,\n D2R / 467441, -D2R / 60616000)\n // true ecliptic\n this.ε = nutation.meanObliquity(jde) + Δε\n this.sε = sin(this.ε)\n this.cε = cos(this.ε)\n // ρ, σ, τ, p. 372,373\n const D = base.horner(T, 297.8501921 * D2R, 445267.1114034 * D2R, -0.0018819 * D2R, D2R / 545868, -D2R / 113065000)\n const M = base.horner(T, 357.5291092 * D2R, 35999.0502909 * D2R, -0.0001536 * D2R, D2R / 24490000)\n const M_ = base.horner(T, 134.9633964 * D2R, 477198.8675055 * D2R,\n 0.0087414 * D2R, D2R / 69699, -D2R / 14712000)\n const E = base.horner(T, 1, -0.002516, -0.0000074)\n const K1 = 119.75 * D2R + 131.849 * D2R * T\n const K2 = 72.56 * D2R + 20.186 * D2R * T\n this.ρ = -0.02752 * D2R * cos(M_) +\n -0.02245 * D2R * sin(F) +\n 0.00684 * D2R * cos(M_ - 2 * F) +\n -0.00293 * D2R * cos(2 * F) +\n -0.00085 * D2R * cos(2 * (F - D)) +\n -0.00054 * D2R * cos(M_ - 2 * D) +\n -0.0002 * D2R * sin(M_ + F) +\n -0.0002 * D2R * cos(M_ + 2 * F) +\n -0.0002 * D2R * cos(M_ - F) +\n 0.00014 * D2R * cos(M_ + 2 * (F - D))\n this.σ = -0.02816 * D2R * sin(M_) +\n 0.02244 * D2R * cos(F) +\n -0.00682 * D2R * sin(M_ - 2 * F) +\n -0.00279 * D2R * sin(2 * F) +\n -0.00083 * D2R * sin(2 * (F - D)) +\n 0.00069 * D2R * sin(M_ - 2 * D) +\n 0.0004 * D2R * cos(M_ + F) +\n -0.00025 * D2R * sin(2 * M_) +\n -0.00023 * D2R * sin(M_ + 2 * F) +\n 0.0002 * D2R * cos(M_ - F) +\n 0.00019 * D2R * sin(M_ - F) +\n 0.00013 * D2R * sin(M_ + 2 * (F - D)) +\n -0.0001 * D2R * cos(M_ - 3 * F)\n this.τ = 0.0252 * D2R * sin(M) * E +\n 0.00473 * D2R * sin(2 * (M_ - F)) +\n -0.00467 * D2R * sin(M_) +\n 0.00396 * D2R * sin(K1) +\n 0.00276 * D2R * sin(2 * (M_ - D)) +\n 0.00196 * D2R * sin(this.Ω) +\n -0.00183 * D2R * cos(M_ - F) +\n 0.00115 * D2R * sin(M_ - 2 * D) +\n -0.00096 * D2R * sin(M_ - D) +\n 0.00046 * D2R * sin(2 * (F - D)) +\n -0.00039 * D2R * sin(M_ - F) +\n -0.00032 * D2R * sin(M_ - M - D) +\n 0.00027 * D2R * sin(2 * (M_ - D) - M) +\n 0.00023 * D2R * sin(K2) +\n -0.00014 * D2R * sin(2 * D) +\n 0.00014 * D2R * cos(2 * (M_ - F)) +\n -0.00012 * D2R * sin(M_ - 2 * F) +\n -0.00012 * D2R * sin(2 * M_) +\n 0.00011 * D2R * sin(2 * (M_ - M - D))\n }\n\n /**\n * lib() curiously serves for computing both librations and solar coordinates,\n * depending on the coordinates λ, β passed in. Quantity A not described in\n * the book, but clearly depends on the λ, β of the current context and so\n * does not belong in the moon struct. Instead just return it from optical\n * and pass it along to physical.\n */\n lib (λ, β) {\n const [l_, b_, A] = this.optical(λ, β)\n const [l$, b$] = this.physical(A, b_)\n let l = l_ + l$\n if (l > Math.PI) {\n l -= 2 * Math.PI\n }\n const b = b_ + b$\n return [l, b]\n }\n\n optical (λ, β) {\n // (53.1) p. 372\n const W = λ - this.Ω // (λ without nutation)\n const [sW, cW] = base.sincos(W)\n const [sβ, cβ] = base.sincos(β)\n const A = atan2(sW * cβ * cI - sβ * sI, cW * cβ)\n const l_ = base.pmod(A - this.F, 2 * Math.PI)\n const b_ = asin(-sW * cβ * sI - sβ * cI)\n return [l_, b_, A]\n }\n\n physical (A, b_) {\n // (53.2) p. 373\n const [sA, cA] = base.sincos(A)\n const l$ = -this.τ + (this.ρ * cA + this.σ * sA) * Math.tan(b_)\n const b$ = this.σ * cA - this.ρ * sA\n return [l$, b$]\n }\n\n pa (λ, β, b) {\n const V = this.Ω + this.Δψ + this.σ / sI\n const [sV, cV] = base.sincos(V)\n const [sIρ, cIρ] = base.sincos(_I + this.ρ)\n const X = sIρ * sV\n const Y = sIρ * cV * this.cε - cIρ * this.sε\n const ω = Math.atan2(X, Y)\n const ecl = new coord.Ecliptic(λ + this.Δψ, β).toEquatorial(this.ε) // eslint-disable-line no-unused-vars\n let P = asin(Math.hypot(X, Y) * cos(ecl.ra - ω) / cos(b))\n if (P < 0) {\n P += 2 * Math.PI\n }\n return P\n }\n\n sun (λ, β, Δ, earth) {\n const { lon, lat, range } = solar.apparentVSOP87(earth, this.jde) // eslint-disable-line no-unused-vars\n const ΔR = Δ / (range * base.AU)\n const λH = lon + Math.PI + 57.296 * D2R * ΔR * cos(β) * sin(lon - λ)\n const βH = ΔR * β\n return this.lib(λH, βH)\n }\n}\n\n/* commented out for lack of test data\nexport function Topocentric (jde, ρsφ_, ρcφ_, L) { // (jde, ρsφ_, ρcφ_, L float64) (l, b, P float64)\n λ, β, Δ := moonposition.Position(jde) // (λ without nutation)\n Δψ, Δε := nutation.Nutation(jde)\n sε, cε := base.sincos(nutation.MeanObliquity(jde) + Δε)\n α, δ := coord.EclToEq(λ+Δψ, β, sε, cε)\n α, δ = parallax.Topocentric(α, δ, Δ/base.AU, ρsφ_, ρcφ_, L, jde)\n λ, β = coord.EqToEcl(α, δ, sε, cε)\n const m = newMoon(jde)\n l, b = m.lib(λ, β)\n P = m.pa(λ, β, b)\n return\n}\n\nexport function TopocentricCorrections (jde, b, P, φ, δ, H, π) { // (jde, b, P, φ, δ, H, π float64) (Δl, Δb, ΔP float64)\n sφ, cφ := base.sincos(φ)\n sH, cH := base.sincos(H)\n sδ, cδ := base.sincos(δ)\n const Q = Math.atan(cφ * sH / (cδ*sφ - sδ*cφ*cH))\n const z = Math.acos(sδ*sφ + cδ*cφ*cH)\n const π_ = π * (sin(z) + 0.0084*sin(2*z))\n sQP, cQP := base.sincos(Q - P)\n Δl = -π_ * sQP / cos(b)\n Δb = π_ * cQP\n ΔP = Δl*sin(b+Δb) - π_*sin(Q)*Math.tan(δ)\n return\n}\n*/\n\n/**\n * SunAltitude returns altitude of the Sun above the lunar horizon.\n *\n * @param {Coord} cOnMoon - selenographic longitude and latitude of a site on the Moon\n * @param {Coord} cSun - selenographic coordinates of the Sun (as returned by physical(), for example.)\n * @return altitude in radians.\n */\nexport function sunAltitude (cOnMoon, cSun) { // (η, θ, l0, b0 float64) float64\n const c0 = Math.PI / 2 - cSun.lon\n const [sb0, cb0] = base.sincos(cSun.lat)\n const [sθ, cθ] = base.sincos(cOnMoon.lat)\n return asin(sb0 * sθ + cb0 * cθ * sin(c0 + cOnMoon.lon))\n}\n\n/**\n * Sunrise returns time of sunrise for a point on the Moon near the given date.\n *\n * @param {Coord} cOnMoon - selenographic longitude and latitude of a site on the Moon\n * @param {Number} jde - Julian ephemeris day\n * @param {Planet} earth - VSOP87 Planet Earth\n * @return time of sunrise as a jde nearest the given jde.\n */\nexport function sunrise (cOnMoon, jde, earth) { // (η, θ, jde float64, earth *pp.V87Planet) float64\n jde -= srCorr(cOnMoon, jde, earth)\n return jde - srCorr(cOnMoon, jde, earth)\n}\n\n/**\n * Sunset returns time of sunset for a point on the Moon near the given date.\n *\n * @param {Coord} cOnMoon - selenographic longitude and latitude of a site on the Moon\n * @param {Number} jde - Julian ephemeris day\n * @param {Planet} earth - VSOP87 Planet Earth\n * @return time of sunset as a jde nearest the given jde.\n */\nexport function sunset (cOnMoon, jde, earth) { // (η, θ, jde float64, earth *pp.V87Planet) float64\n jde += srCorr(cOnMoon, jde, earth)\n return jde + srCorr(cOnMoon, jde, earth)\n}\n\n/**\n * @private\n */\nfunction srCorr (cOnMoon, jde, earth) {\n const phy = physical(jde, earth)\n const h = sunAltitude(cOnMoon, phy[2])\n return h / (12.19075 * D2R * cos(cOnMoon.lat))\n}\n\nconst lunarCoord = (η, θ) => new base.Coord(η * D2R, θ * D2R)\n/**\n * selenographic coordinates of some lunar features\n * Table 53.A\n */\nexport const selenographic = {\n archimedes: lunarCoord(-3.9, 29.7),\n aristarchus: lunarCoord(-47.5, 23.7),\n aristillus: lunarCoord(1.2, 33.9),\n aristoteles: lunarCoord(17.3, 50.1),\n arzachel: lunarCoord(-1.9, -17.7),\n autolycus: lunarCoord(1.5, 30.7),\n billy: lunarCoord(-50, -13.8),\n birt: lunarCoord(-8.5, -22.3),\n campanus: lunarCoord(-27.7, -28),\n censorinus: lunarCoord(32.7, -0.4),\n clavius: lunarCoord(-14, -58),\n copernicus: lunarCoord(-20, 9.7),\n delambre: lunarCoord(17.5, -1.9),\n dionysius: lunarCoord(17.3, 2.8),\n endymion: lunarCoord(56.4, 53.6),\n eratosthenes: lunarCoord(-11.3, 14.5),\n eudoxus: lunarCoord(16.3, 44.3),\n fracastorius: lunarCoord(33.2, -21),\n fraMauro: lunarCoord(-17, -6),\n gassendi: lunarCoord(-39.9, -17.5),\n goclenius: lunarCoord(45, -10.1),\n grimaldi: lunarCoord(-68.5, -5.8),\n harpalus: lunarCoord(-43.4, 52.6),\n horrocks: lunarCoord(5.9, -4),\n kepler: lunarCoord(-38, 8.1),\n langrenus: lunarCoord(60.9, -8.9),\n lansberg: lunarCoord(-26.6, -0.3),\n letronne: lunarCoord(-43, -10),\n macrobius: lunarCoord(46, 21.2),\n manilius: lunarCoord(9.1, 14.5),\n menelaus: lunarCoord(16, 16.3),\n messier: lunarCoord(47.6, -1.9),\n petavius: lunarCoord(61, -25),\n pico: lunarCoord(-8.8, 45.8),\n pitatus: lunarCoord(-13.5, -29.8),\n piton: lunarCoord(-0.8, 40.8),\n plato: lunarCoord(-9.2, 51.4),\n plinius: lunarCoord(23.6, 15.3),\n posidonius: lunarCoord(30, 31.9),\n proclus: lunarCoord(46.9, 16.1),\n ptolemeusA: lunarCoord(-0.8, -8.5),\n pytheas: lunarCoord(-20.6, 20.5),\n reinhold: lunarCoord(-22.8, 3.2),\n riccioli: lunarCoord(-74.3, -3.2),\n schickard: lunarCoord(-54.5, -44),\n schiller: lunarCoord(-39, -52),\n tauruntius: lunarCoord(46.5, 5.6),\n theophilus: lunarCoord(26.5, -11.4),\n timocharis: lunarCoord(-13.1, 26.7),\n tycho: lunarCoord(-11, -43.2),\n vitruvius: lunarCoord(31.3, 17.6),\n walter: lunarCoord(1, -33)\n}\n\nexport default {\n physical,\n Moon,\n // Topocentric,\n // TopocentricCorrections,\n sunAltitude,\n sunrise,\n sunset,\n selenographic\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module moonillum\n */\n/**\n * Moonillum: Chapter 48, Illuminated Fraction of the Moon's Disk\n *\n * Also see functions `illuminated` and `limb` in package base. The function\n * for computing illuminated fraction given a phase angle (48.1) is\n * base.illuminated. Formula (48.3) is implemented as base.limb.\n */\n\nimport base, { Coord } from './base.js' // eslint-disable-line no-unused-vars\n\nconst D2R = Math.PI / 180\n\n/**\n * phaseAngleEquatorial computes the phase angle of the Moon given equatorial coordinates.\n *\n * @param {Coord} cMoon - geocentric right ascension, declination and distance to the Moon\n * @param {Coord} cSun - coordinates and distance of the Sun\n * @returns {number} phase angle of the Moon in radians\n */\nexport function phaseAngleEquatorial (cMoon, cSun) {\n return pa(cMoon.range, cSun.range, cosEq(cMoon.ra, cMoon.dec, cSun.ra, cSun.dec))\n}\n\n/**\n * cos elongation from equatorial coordinates\n * @private\n */\nfunction cosEq (α, δ, α0, δ0) {\n const [sδ, cδ] = base.sincos(δ)\n const [sδ0, cδ0] = base.sincos(δ0)\n return sδ0 * sδ + cδ0 * cδ * Math.cos(α0 - α)\n}\n\n/**\n * phase angle from cos elongation and distances\n * @private\n * @param {number} Δ\n * @param {number} R\n * @param {number} cψ\n * @returns {number}\n */\nfunction pa (Δ, R, cψ) {\n const sψ = Math.sin(Math.acos(cψ))\n let i = Math.atan(R * sψ / (Δ - R * cψ))\n if (i < 0) {\n i += Math.PI\n }\n return i\n}\n\n/**\n * phaseAngleEquatorial2 computes the phase angle of the Moon given equatorial coordinates.\n *\n * Less accurate than phaseAngleEquatorial.\n *\n * Arguments α, δ are geocentric right ascension and declination of the Moon;\n * α0, δ0 are coordinates of the Sun. Angles must be in radians.\n *\n * @param {Coord} cMoon - eocentric right ascension and declination of the Moon\n * @param {Coord} cSun - coordinates of the Sun\n * @returns {number} phase angle of the Moon in radians\n */\nexport function phaseAngleEquatorial2 (cMoon, cSun) {\n return Math.acos(-cosEq(cMoon.ra, cMoon.dec, cSun.ra, cSun.dec))\n}\n\n/**\n * phaseAngleEcliptic computes the phase angle of the Moon given ecliptic coordinates.\n *\n * Distances must be in the same units as each other.\n *\n * @param {Coord} cMoon - geocentric longitude, latitude and distance to the Moon\n * @param {Coord} cSun - longitude and distance to the Sun\n * @returns {number} phase angle of the Moon in radians\n */\nexport function phaseAngleEcliptic (cMoon, cSun) {\n return pa(cMoon.range, cSun.range, cosEcl(cMoon.lon, cMoon.lat, cSun.lon))\n}\n\n/**\n * cos elongation from ecliptic coordinates\n * @private\n */\nfunction cosEcl (λ, β, λ0) { // (λ, β, λ0 float64) float64\n return Math.cos(β) * Math.cos(λ - λ0)\n}\n\n/**\n * phaseAngleEcliptic2 computes the phase angle of the Moon given ecliptic coordinates.\n *\n * Less accurate than phaseAngleEcliptic.\n *\n * Angles must be in radians.\n *\n * @param {Coord} cMoon - geocentric longitude, latitude of the Moon\n * @param {Coord} cSun - longitude of the Sun\n * @returns {number} phase angle of the Moon in radians\n */\nexport function phaseAngleEcliptic2 (cMoon, cSun) {\n return Math.acos(-cosEcl(cMoon.lon, cMoon.lat, cSun.lon))\n}\n\n/**\n * phaseAngle3 computes the phase angle of the Moon given a julian day.\n *\n * Less accurate than phaseAngle functions taking coordinates.\n *\n * Result in radians.\n */\nexport function phaseAngle3 (jde) { // (jde float64) float64\n const T = base.J2000Century(jde)\n const D = base.horner(T, 297.8501921 * D2R, 445267.1114034 * D2R,\n -0.0018819 * D2R, D2R / 545868, -D2R / 113065000)\n const m = base.horner(T, 357.5291092 * D2R, 35999.0502909 * D2R,\n -0.0001536 * D2R, D2R / 24490000)\n const m_ = base.horner(T, 134.9633964 * D2R, 477198.8675055 * D2R,\n 0.0087414 * D2R, D2R / 69699, -D2R / 14712000)\n return Math.PI - base.pmod(D, 2 * Math.PI) +\n -6.289 * D2R * Math.sin(m_) +\n 2.1 * D2R * Math.sin(m) +\n -1.274 * D2R * Math.sin(2 * D - m_) +\n -0.658 * D2R * Math.sin(2 * D) +\n -0.214 * D2R * Math.sin(2 * m_) +\n -0.11 * D2R * Math.sin(D)\n}\n\nexport default {\n phaseAngleEquatorial,\n phaseAngleEquatorial2,\n phaseAngleEcliptic,\n phaseAngleEcliptic2,\n phaseAngle3\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module moonmaxdec\n */\n/**\n * Moonmaxdec: Chapter 52, Maximum Declinations of the Moon\n */\n\nimport base from './base.js'\n\n/**\n * North computes the maximum northern declination of the Moon near a given date.\n *\n * Argument year is a decimal year specifying a date near the event.\n *\n * Returned is the jde of the event nearest the given date and the declination\n * of the Moon at that time.\n */\nexport function north (y) { // (y float64) (jde, δ float64)\n return max(y, nc)\n}\n\n/**\n * South computes the maximum southern declination of the Moon near a given date.\n *\n * Argument year is a decimal year specifying a date near the event.\n *\n * Returned is the jde of the event nearest the given date and the declination\n * of the Moon at that time.\n */\nexport function south (y) { // (y float64) (jde, δ float64)\n return max(y, sc)\n}\n\nconst p = Math.PI / 180\nconst ck = 1 / 1336.86\n\n/**\n * @private\n */\nfunction max (y, c) { // (y float64, c *mc) (jde, δ float64)\n let k = (y - 2000.03) * 13.3686 // (52.1) p. 367\n k = Math.floor(k + 0.5)\n const T = k * ck\n const D = base.horner(T, c.D, 333.0705546 * p / ck, -0.0004214 * p, 0.00000011 * p)\n const m = base.horner(T, c.m, 26.9281592 * p / ck, -0.0000355 * p, -0.0000001 * p)\n const m_ = base.horner(T, c.m_, 356.9562794 * p / ck, 0.0103066 * p, 0.00001251 * p)\n const f = base.horner(T, c.f, 1.4467807 * p / ck, -0.002069 * p, -0.00000215 * p)\n const E = base.horner(T, 1, -0.002516, -0.0000074)\n const jde = base.horner(T, c.JDE, 27.321582247 / ck, 0.000119804, -0.000000141) +\n c.tc[0] * Math.cos(f) +\n c.tc[1] * Math.sin(m_) +\n c.tc[2] * Math.sin(2 * f) +\n c.tc[3] * Math.sin(2 * D - m_) +\n c.tc[4] * Math.cos(m_ - f) +\n c.tc[5] * Math.cos(m_ + f) +\n c.tc[6] * Math.sin(2 * D) +\n c.tc[7] * Math.sin(m) * E +\n c.tc[8] * Math.cos(3 * f) +\n c.tc[9] * Math.sin(m_ + 2 * f) +\n c.tc[10] * Math.cos(2 * D - f) +\n c.tc[11] * Math.cos(2 * D - m_ - f) +\n c.tc[12] * Math.cos(2 * D - m_ + f) +\n c.tc[13] * Math.cos(2 * D + f) +\n c.tc[14] * Math.sin(2 * m_) +\n c.tc[15] * Math.sin(m_ - 2 * f) +\n c.tc[16] * Math.cos(2 * m_ - f) +\n c.tc[17] * Math.sin(m_ + 3 * f) +\n c.tc[18] * Math.sin(2 * D - m - m_) * E +\n c.tc[19] * Math.cos(m_ - 2 * f) +\n c.tc[20] * Math.sin(2 * (D - m_)) +\n c.tc[21] * Math.sin(f) +\n c.tc[22] * Math.sin(2 * D + m_) +\n c.tc[23] * Math.cos(m_ + 2 * f) +\n c.tc[24] * Math.sin(2 * D - m) * E +\n c.tc[25] * Math.sin(m_ + f) +\n c.tc[26] * Math.sin(m - m_) * E +\n c.tc[27] * Math.sin(m_ - 3 * f) +\n c.tc[28] * Math.sin(2 * m_ + f) +\n c.tc[29] * Math.cos(2 * (D - m_) - f) +\n c.tc[30] * Math.sin(3 * f) +\n c.tc[31] * Math.cos(m_ + 3 * f) +\n c.tc[32] * Math.cos(2 * m_) +\n c.tc[33] * Math.cos(2 * D - m_) +\n c.tc[34] * Math.cos(2 * D + m_ + f) +\n c.tc[35] * Math.cos(m_) +\n c.tc[36] * Math.sin(3 * m_ + f) +\n c.tc[37] * Math.sin(2 * D - m_ + f) +\n c.tc[38] * Math.cos(2 * (D - m_)) +\n c.tc[39] * Math.cos(D + f) +\n c.tc[40] * Math.sin(m + m_) * E +\n c.tc[41] * Math.sin(2 * (D - f)) +\n c.tc[42] * Math.cos(2 * m_ + f) +\n c.tc[43] * Math.cos(3 * m_ + f)\n const δ = 23.6961 * p - 0.013004 * p * T +\n c.dc[0] * Math.sin(f) +\n c.dc[1] * Math.cos(2 * f) +\n c.dc[2] * Math.sin(2 * D - f) +\n c.dc[3] * Math.sin(3 * f) +\n c.dc[4] * Math.cos(2 * (D - f)) +\n c.dc[5] * Math.cos(2 * D) +\n c.dc[6] * Math.sin(m_ - f) +\n c.dc[7] * Math.sin(m_ + 2 * f) +\n c.dc[8] * Math.cos(f) +\n c.dc[9] * Math.sin(2 * D + m - f) * E +\n c.dc[10] * Math.sin(m_ + 3 * f) +\n c.dc[11] * Math.sin(D + f) +\n c.dc[12] * Math.sin(m_ - 2 * f) +\n c.dc[13] * Math.sin(2 * D - m - f) * E +\n c.dc[14] * Math.sin(2 * D - m_ - f) +\n c.dc[15] * Math.cos(m_ + f) +\n c.dc[16] * Math.cos(m_ + 2 * f) +\n c.dc[17] * Math.cos(2 * m_ + f) +\n c.dc[18] * Math.cos(m_ - 3 * f) +\n c.dc[19] * Math.cos(2 * m_ - f) +\n c.dc[20] * Math.cos(m_ - 2 * f) +\n c.dc[21] * Math.sin(2 * m_) +\n c.dc[22] * Math.sin(3 * m_ + f) +\n c.dc[23] * Math.cos(2 * D + m - f) * E +\n c.dc[24] * Math.cos(m_ - f) +\n c.dc[25] * Math.cos(3 * f) +\n c.dc[26] * Math.sin(2 * D + f) +\n c.dc[27] * Math.cos(m_ + 3 * f) +\n c.dc[28] * Math.cos(D + f) +\n c.dc[29] * Math.sin(2 * m_ - f) +\n c.dc[30] * Math.cos(3 * m_ + f) +\n c.dc[31] * Math.cos(2 * (D + m_) + f) +\n c.dc[32] * Math.sin(2 * (D - m_) - f) +\n c.dc[33] * Math.cos(2 * m_) +\n c.dc[34] * Math.cos(m_) +\n c.dc[35] * Math.sin(2 * f) +\n c.dc[36] * Math.sin(m_ + f)\n return { jde, dec: c.s * δ }\n}\n\n/**\n * north coefficients\n */\nconst nc = {\n D: 152.2029 * p,\n m: 14.8591 * p,\n m_: 4.6881 * p,\n f: 325.8867 * p,\n JDE: 2451562.5897,\n s: 1,\n tc: [\n 0.8975,\n -0.4726,\n -0.1030,\n -0.0976,\n -0.0462,\n -0.0461,\n -0.0438,\n 0.0162,\n -0.0157,\n 0.0145,\n 0.0136,\n -0.0095,\n -0.0091,\n -0.0089,\n 0.0075,\n -0.0068,\n 0.0061,\n -0.0047,\n -0.0043,\n -0.004,\n -0.0037,\n 0.0031,\n 0.0030,\n -0.0029,\n -0.0029,\n -0.0027,\n 0.0024,\n -0.0021,\n 0.0019,\n 0.0018,\n 0.0018,\n 0.0017,\n 0.0017,\n -0.0014,\n 0.0013,\n 0.0013,\n 0.0012,\n 0.0011,\n -0.0011,\n 0.001,\n 0.001,\n -0.0009,\n 0.0007,\n -0.0007\n ],\n dc: [\n 5.1093 * p,\n 0.2658 * p,\n 0.1448 * p,\n -0.0322 * p,\n 0.0133 * p,\n 0.0125 * p,\n -0.0124 * p,\n -0.0101 * p,\n 0.0097 * p,\n -0.0087 * p,\n 0.0074 * p,\n 0.0067 * p,\n 0.0063 * p,\n 0.0060 * p,\n -0.0057 * p,\n -0.0056 * p,\n 0.0052 * p,\n 0.0041 * p,\n -0.004 * p,\n 0.0038 * p,\n -0.0034 * p,\n -0.0029 * p,\n 0.0029 * p,\n -0.0028 * p,\n -0.0028 * p,\n -0.0023 * p,\n -0.0021 * p,\n 0.0019 * p,\n 0.0018 * p,\n 0.0017 * p,\n 0.0015 * p,\n 0.0014 * p,\n -0.0012 * p,\n -0.0012 * p,\n -0.001 * p,\n -0.001 * p,\n 0.0006 * p\n ]\n}\n\n/**\n * south coefficients\n */\nconst sc = {\n D: 345.6676 * p,\n m: 1.3951 * p,\n m_: 186.21 * p,\n f: 145.1633 * p,\n JDE: 2451548.9289,\n s: -1,\n tc: [\n -0.8975,\n -0.4726,\n -0.1030,\n -0.0976,\n 0.0541,\n 0.0516,\n -0.0438,\n 0.0112,\n 0.0157,\n 0.0023,\n -0.0136,\n 0.011,\n 0.0091,\n 0.0089,\n 0.0075,\n -0.003,\n -0.0061,\n -0.0047,\n -0.0043,\n 0.004,\n -0.0037,\n -0.0031,\n 0.0030,\n 0.0029,\n -0.0029,\n -0.0027,\n 0.0024,\n -0.0021,\n -0.0019,\n -0.0006,\n -0.0018,\n -0.0017,\n 0.0017,\n 0.0014,\n -0.0013,\n -0.0013,\n 0.0012,\n 0.0011,\n 0.0011,\n 0.001,\n 0.001,\n -0.0009,\n -0.0007,\n -0.0007\n ],\n dc: [\n -5.1093 * p,\n 0.2658 * p,\n -0.1448 * p,\n 0.0322 * p,\n 0.0133 * p,\n 0.0125 * p,\n -0.0015 * p,\n 0.0101 * p,\n -0.0097 * p,\n 0.0087 * p,\n 0.0074 * p,\n 0.0067 * p,\n -0.0063 * p,\n -0.0060 * p,\n 0.0057 * p,\n -0.0056 * p,\n -0.0052 * p,\n -0.0041 * p,\n -0.004 * p,\n -0.0038 * p,\n 0.0034 * p,\n -0.0029 * p,\n 0.0029 * p,\n 0.0028 * p,\n -0.0028 * p,\n 0.0023 * p,\n 0.0021 * p,\n 0.0019 * p,\n 0.0018 * p,\n -0.0017 * p,\n 0.0015 * p,\n 0.0014 * p,\n 0.0012 * p,\n -0.0012 * p,\n 0.001 * p,\n -0.001 * p,\n 0.0037 * p\n ]\n}\n\nexport default {\n north,\n south\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module parallax\n */\n/**\n * Parallax: Chapter 40, Correction for Parallax.\n */\n\nimport base, { Coord } from './base.js' // eslint-disable-line no-unused-vars\nimport globe from './globe.js'\nimport sidereal from './sidereal.js'\nimport sexa from './sexagesimal.js'\n\nconst horPar = (8.794 / 3600) * Math.PI / 180 // 8\".794 arcseconds in radians\n\n/**\n * Horizontal returns equatorial horizontal parallax of a body.\n *\n * @param {number} Δ - distance in AU.\n * @return {number} parallax in radians.\n */\nexport function horizontal (Δ) {\n // (40.1) p. 279\n return Math.asin(Math.sin(horPar) / Δ)\n // return horPar / Δ // with sufficient accuracy\n}\n\n/**\n * Topocentric returns topocentric positions including parallax.\n *\n * Arguments α, δ are geocentric right ascension and declination in radians.\n * Δ is distance to the observed object in AU. ρsφ, ρcφ are parallax\n * constants (see package globe.) lon is geographic longitude of the observer,\n * jde is time of observation.\n *\n * @param {Coord} c - geocentric right ascension and declination in radians\n * @param {number} ρsφ - parallax constants (see package globe.)\n * @param {number} ρcφ - parallax constants (see package globe.)\n * @param {number} lon - geographic longitude of the observer (measured positively westwards!)\n * @param {number} jde - time of observation\n * @return {Coord} observed topocentric ra and dec in radians.\n */\nexport function topocentric (c, ρsφ, ρcφ, lon, jde) {\n const [α, δ, Δ] = [c.ra, c.dec, c.range]\n const π = horizontal(Δ)\n const θ0 = new sexa.Time(sidereal.apparent(jde)).rad()\n const H = base.pmod(θ0 - lon - α, 2 * Math.PI)\n const sπ = Math.sin(π)\n const [sH, cH] = base.sincos(H)\n const [sδ, cδ] = base.sincos(δ)\n const Δα = Math.atan2(-ρcφ * sπ * sH, cδ - ρcφ * sπ * cH) // (40.2) p. 279\n const α_ = α + Δα\n const δ_ = Math.atan2((sδ - ρsφ * sπ) * Math.cos(Δα), cδ - ρcφ * sπ * cH) // (40.3) p. 279\n return new Coord(α_, δ_)\n}\n\n/**\n * Topocentric2 returns topocentric corrections including parallax.\n *\n * This function implements the \"non-rigorous\" method descripted in the text.\n *\n * Note that results are corrections, not corrected coordinates.\n *\n * @param {Coord} c - geocentric right ascension and declination in radians\n * @param {number} ρsφ - parallax constants (see package globe.)\n * @param {number} ρcφ - parallax constants (see package globe.)\n * @param {number} lon - geographic longitude of the observer (measured positively westwards!)\n * @param {number} jde - time of observation\n * @return {Coord} observed topocentric ra and dec in radians.\n */\nexport function topocentric2 (c, ρsφ, ρcφ, lon, jde) {\n const [α, δ, Δ] = [c.ra, c.dec, c.range]\n const π = horizontal(Δ)\n const θ0 = new sexa.Time(sidereal.apparent(jde)).rad()\n const H = base.pmod(θ0 - lon - α, 2 * Math.PI)\n const [sH, cH] = base.sincos(H)\n const [sδ, cδ] = base.sincos(δ)\n const Δα = -π * ρcφ * sH / cδ // (40.4) p. 280\n const Δδ = -π * (ρsφ * cδ - ρcφ * cH * sδ) // (40.5) p. 280\n return new base.Coord(Δα, Δδ)\n}\n\n/**\n * Topocentric3 returns topocentric hour angle and declination including parallax.\n *\n * This function implements the \"alternative\" method described in the text.\n * The method should be similarly rigorous to that of Topocentric() and results\n * should be virtually consistent.\n *\n * @param {Coord} c - geocentric right ascension and declination in radians\n * @param {number} ρsφ - parallax constants (see package globe.)\n * @param {number} ρcφ - parallax constants (see package globe.)\n * @param {number} lon - geographic longitude of the observer (measured positively westwards!)\n * @param {number} jde - time of observation\n * @return {Array}\n * {number} H_ - topocentric hour angle\n * {number} δ_ - topocentric declination\n */\nexport function topocentric3 (c, ρsφ, ρcφ, lon, jde) {\n const [α, δ, Δ] = [c.ra, c.dec, c.range]\n const π = horizontal(Δ)\n const θ0 = new sexa.Time(sidereal.apparent(jde)).rad()\n const H = base.pmod(θ0 - lon - α, 2 * Math.PI)\n const sπ = Math.sin(π)\n const [sH, cH] = base.sincos(H)\n const [sδ, cδ] = base.sincos(δ)\n const A = cδ * sH\n const B = cδ * cH - ρcφ * sπ\n const C = sδ - ρsφ * sπ\n const q = Math.sqrt(A * A + B * B + C * C)\n const H_ = Math.atan2(A, B)\n const δ_ = Math.asin(C / q)\n return [H_, δ_]\n}\n\n/**\n * TopocentricEcliptical returns topocentric ecliptical coordinates including parallax.\n *\n * Arguments `c` are geocentric ecliptical longitude and latitude of a body,\n * s is its geocentric semidiameter. φ, h are the observer's latitude and\n * and height above the ellipsoid in meters. ε is the obliquity of the\n * ecliptic, θ is local sidereal time, π is equatorial horizontal parallax\n * of the body (see Horizonal()).\n *\n * All angular parameters and results are in radians.\n *\n * @param {Coord} c - geocentric right ascension and declination in radians\n * @param {number} s - geocentric semidiameter of `c`\n * @param {number} φ - observer's latitude\n * @param {number} h - observer's height above the ellipsoid in meters\n * @param {number} ε - is the obliquity of the ecliptic\n * @param {number} θ - local sidereal time\n * @param {number} π - equatorial horizontal parallax of the body\n * @return {Array}\n * {number} λ_ - observed topocentric longitude\n * {number} β_ - observed topocentric latitude\n * {number} s_ - observed topocentric semidiameter\n */\nexport function topocentricEcliptical (c, s, φ, h, ε, θ, π) {\n const [λ, β] = [c.lon, c.lat]\n const [S, C] = globe.Earth76.parallaxConstants(φ, h)\n const [sλ, cλ] = base.sincos(λ)\n const [sβ, cβ] = base.sincos(β)\n const [sε, cε] = base.sincos(ε)\n const [sθ, cθ] = base.sincos(θ)\n const sπ = Math.sin(π)\n const N = cλ * cβ - C * sπ * cθ\n let λ_ = Math.atan2(sλ * cβ - sπ * (S * sε + C * cε * sθ), N)\n if (λ_ < 0) {\n λ_ += 2 * Math.PI\n }\n const cλ_ = Math.cos(λ_)\n const β_ = Math.atan(cλ_ * (sβ - sπ * (S * cε - C * sε * sθ)) / N)\n const s_ = Math.asin(cλ_ * Math.cos(β_) * Math.sin(s) / N)\n return [λ_, β_, s_]\n}\n\nexport default {\n horizontal,\n topocentric,\n topocentric2,\n topocentric3,\n topocentricEcliptical\n}\n","/* eslint-disable n/no-callback-literal */\n/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module perihelion\n */\n/**\n * Perihelion: Chapter 38, Planets in Perihelion and Aphelion.\n *\n * Functions Aphelion and Perihelion implement algorithms from the book\n * to return approximate results.\n *\n * For accurate results, Meeus describes the general technique of\n * interpolating from a precise ephemeris but does not give a complete\n * algorithm. The algorithm implemented here for Aphelion2 and Perihelion2\n * is to start with the approximate result and then crawl along the curve\n * at the specified time resolution until the desired extremum is found.\n * This algorithm slows down as higher accuracy is demanded. 1 day accuracy\n * is generally quick for planets other than Neptune.\n *\n * Meeus doesn't give an algorithm to handle the double extrema of Neptune.\n * The algorithm here is to pick starting points several years either side\n * of the approximate date and follow the slopes inward. The consequence of\n * starting farther from the extremum is that these functions are particularly\n * slow for Neptune. They are offered here though as a simple implementation\n * of Meeus's presentation in the book.\n */\nimport base from './base.js'\nimport interp from './interpolation.js'\nimport { Planet } from './planetposition.js' // eslint-disable-line no-unused-vars\n\n/**\n * Planet constants for first argument of Perihelion and Aphelion functions.\n * @enum {number}\n */\nconst planetsEnum = {\n mercury: 0,\n venus: 1,\n earth: 2,\n mars: 3,\n jupiter: 4,\n saturn: 5,\n uranus: 6,\n neptune: 7,\n embary: 8\n}\nexport const mercury = planetsEnum.mercury\nexport const venus = planetsEnum.venus\nexport const earth = planetsEnum.earth\nexport const mars = planetsEnum.mars\nexport const jupiter = planetsEnum.jupiter\nexport const saturn = planetsEnum.saturn\nexport const uranus = planetsEnum.uranus\nexport const neptune = planetsEnum.neptune\nexport const embary = planetsEnum.embary\n\n/**\n * Perihelion returns an approximate jde of the perihelion event nearest the given time.\n *\n * @param {planetsEnum} p - planet constant from above\n * @param {Number} year - year number indicating a time near the perihelion event.\n * @returns {Number} jde - time of the event\n */\nexport function perihelion (p, year) {\n return ap(p, year, false, pf)\n}\n\n/**\n * Aphelion returns an approximate jde of the aphelion event nearest the given time.\n *\n * @param {planetsEnum} p - planet constant from above\n * @param {Number} year - year number indicating a time near the aphelion event.\n * @returns {Number} jde - time of the event\n */\nexport function aphelion (p, year) {\n return ap(p, year, true, af)\n}\n\nconst pf = function (x) { // (x float64) float64\n return Math.floor(x + 0.5)\n}\n\nconst af = function (x) { // (x float64) float64\n return Math.floor(x) + 0.5\n}\n\nconst ap = function (p, y, a, f) { // (p int, y float64, a bool, f func(float64) float64) float64\n let i = p\n if (i === embary) {\n i = earth\n }\n const k = f(ka[i].a * (y - ka[i].b))\n let j = base.horner(k, ...c[i])\n if (p === earth) {\n let c = ep\n if (a) {\n c = ea\n }\n for (let i = 0; i < 5; i++) {\n j += c[i] * Math.sin((ec[i].a + ec[i].b * k) * Math.PI / 180)\n }\n }\n return j\n}\n\nconst ka = [\n { a: 4.15201, b: 2000.12 }, // mercury\n { a: 1.62549, b: 2000.53 }, // ...\n { a: 0.99997, b: 2000.01 },\n { a: 0.53166, b: 2001.78 },\n { a: 0.0843, b: 2011.2 },\n { a: 0.03393, b: 2003.52 },\n { a: 0.0119, b: 2051.1 },\n { a: 0.00607, b: 2047.5 } // neptune\n]\n\nconst c = [\n [2451590.257, 87.96934963], // mercury\n [2451738.233, 224.7008188, -0.0000000327], // ...\n [2451547.507, 365.2596358, 0.0000000156],\n [2452195.026, 686.9957857, -0.0000001187],\n [2455636.936, 4332.897065, 0.0001367],\n [2452830.12, 10764.21676, 0.000827],\n [2470213.5, 30694.8767, -0.00541],\n [2468895.1, 60190.33, 0.03429] // neptune\n]\n\nconst ec = [\n { a: 328.41, b: 132.788585 },\n { a: 316.13, b: 584.903153 },\n { a: 346.2, b: 450.380738 },\n { a: 136.95, b: 659.306737 },\n { a: 249.52, b: 329.653368 }\n]\n\nconst ep = [1.278, -0.055, -0.091, -0.056, -0.045]\nconst ea = [-1.352, 0.061, 0.062, 0.029, 0.031]\n\n/**\n * Perihelion2 returns the perihelion event nearest the given time.\n *\n * @param {Planet} planet - VSOP87 planet (EMBary is not allowed)\n * @param {Number} year - (float) decimal year number near the perihelion event\n * @param {Number} precision - desired precision of the time result, in days\n * @param {Function} [cb] - callback function for asynchronous processing `cb([jde, r])`\n * @returns {Array} [jde, r]\n * {Number} jde - time of the event\n * {Number} r - the distance of the planet from the Sun in AU.\n */\nexport function perihelion2 (planet, year, precision, cb) {\n return ap2(planetsEnum[planet.name], year, precision, planet, false, pf, cb)\n}\n\n/**\n * Aphelion2 returns the aphelion event nearest the given time.\n *\n * @param {Planet} planet - VSOP87 planet (EMBary is not allowed)\n * @param {Number} year - (float) decimal year number near the perihelion event\n * @param {Number} precision - desired precision of the time result, in days\n * @param {Function} [cb] - callback function for asynchronous processing `cb([jde, r])`\n * @returns {Array} [jde, r]\n * {Number} jde - time of the event\n * {Number} r - the distance of the planet from the Sun in AU.\n */\nexport function aphelion2 (planet, year, precision, cb) {\n return ap2(planetsEnum[planet.name], year, precision, planet, true, af, cb)\n}\n\nif (typeof setImmediate !== 'function') {\n const setImmediate = setTimeout // eslint-disable-line no-unused-vars\n}\n\nconst ap2 = function (p, y, d, v, a, f, cb) {\n const j1 = ap(p, y, a, f)\n if (p !== neptune) {\n return ap2a(j1, d, a, v, cb)\n }\n // handle the double extrema of Neptune\n if (cb) {\n ap2a(j1 - 5000, d, a, v, ([j0, r0]) => {\n ap2a(j1 + 5000, d, a, v, ([j2, r2]) => {\n if ((r0 > r2) === a) {\n cb([j0, r0])\n return\n }\n cb([j2, r2])\n })\n })\n } else {\n const [j0, r0] = ap2a(j1 - 5000, d, a, v)\n const [j2, r2] = ap2a(j1 + 5000, d, a, v)\n if ((r0 > r2) === a) {\n return [j0, r0]\n }\n return [j2, r2]\n }\n}\n\nconst ap2a = function (j1, d, a, v, cb) {\n let j0 = j1 - d\n let j2 = j1 + d\n const rr = new Array(3)\n rr[1] = v.position2000(j1).range\n rr[0] = v.position2000(j0).range\n rr[2] = v.position2000(j2).range\n\n function end () {\n const l = new interp.Len3(j0, j2, rr)\n const [jde, r] = l.extremum()\n return [jde, r]\n }\n\n function run () {\n if (a) {\n if (rr[1] > rr[0] && rr[1] > rr[2]) {\n cb && cb(end())\n return true\n }\n } else {\n if (rr[1] < rr[0] && rr[1] < rr[2]) {\n cb && cb(end())\n return true\n }\n }\n if ((rr[0] < rr[2]) === a) {\n j0 = j1\n j1 = j2\n j2 += d\n rr[0] = rr[1]\n rr[1] = rr[2]\n rr[2] = v.position2000(j2).range\n } else {\n j2 = j1\n j1 = j0\n j0 -= d\n rr[2] = rr[1]\n rr[1] = rr[0]\n rr[0] = v.position2000(j0).range\n }\n if (cb) {\n setImmediate(run, 0)\n }\n }\n\n if (cb) {\n run()\n } else {\n for (;;) {\n if (run()) {\n return end()\n }\n }\n }\n}\n\nexport default {\n mercury,\n venus,\n earth,\n mars,\n jupiter,\n saturn,\n uranus,\n neptune,\n embary,\n perihelion,\n aphelion,\n perihelion2,\n aphelion2\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module planetary\n */\n/**\n * Planetary: Chapter 36, The Calculation of some Planetary Phenomena.\n *\n * Incomplete: Some functions unimplemented for lack of test data.\n */\n\nimport base from './base.js'\n\n/**\n * Mean computes some intermediate values for a mean planetary configuration\n * given a year and a row of coefficients from Table 36.A, p. 250.0\n */\nexport function mean (y, a) { // (y float64, a *ca) (J, M, T float64)\n // (36.1) p. 250\n const k = Math.floor((365.2425 * y + 1721060 - a.A) / a.B + 0.5)\n const J = a.A + k * a.B\n const M = base.pmod(a.M0 + k * a.M1, 360) * Math.PI / 180\n const T = base.J2000Century(J)\n return [J, M, T]\n}\n\n/**\n * Sum computes a sum of periodic terms.\n */\nexport function sum (T, M, c) { // (T, M float64, c [][]float64) float64\n let j = base.horner(T, c[0])\n let mm = 0.0\n for (let i = 1; i < c.length; i++) {\n mm += M\n const [smm, cmm] = base.sincos(mm)\n j += smm * base.horner(T, c[i])\n i++\n j += cmm * base.horner(T, c[i])\n }\n return j\n}\n\n/**\n * ms returns a mean time corrected by a sum.\n */\nexport function ms (y, a, c) { // (y float64, a *ca, c [][]float64) float64\n const [J, M, T] = mean(y, a)\n return J + sum(T, M, c)\n}\n\n/**\n * MercuryInfConj returns the time of an inferior conjunction of Mercury.\n *\n * Result is time (as a jde) of the event nearest the given time (as a\n * decimal year.)\n */\nexport function mercuryInfConj (y) { // (y float64) (jde float64)\n return ms(y, micA, micB)\n}\n\n/**\n * MercurySupConj returns the time of a superior conjunction of Mercury.\n *\n * Result is time (as a jde) of the event nearest the given time (as a\n * decimal year.)\n */\nexport function mercurySupConj (y) { // (y float64) (jde float64)\n return ms(y, mscA, mscB)\n}\n\n/**\n * VenusInfConj returns the time of an inferior conjunction of Venus.\n *\n * Result is time (as a jde) of the event nearest the given time (as a\n * decimal year.)\n */\nexport function venusInfConj (y) { // (y float64) (jde float64)\n return ms(y, vicA, vicB)\n}\n\n/**\n * MarsOpp returns the time of an opposition of Mars.\n *\n * Result is time (as a jde) of the event nearest the given time (as a\n * decimal year.)\n */\nexport function marsOpp (y) { // (y float64) (jde float64)\n return ms(y, moA, moB)\n}\n\n/**\n * SumA computes the sum of periodic terms with \"additional angles\"\n */\nexport function sumA (T, M, c, aa) { // (T, M float64, c [][]float64, aa []caa) float64\n let i = c.length - 2 * aa.length\n let j = sum(T, M, c.slice(0, i))\n for (let k = 0; k < aa.length; k++) {\n const [saa, caa] = base.sincos((aa[k].c + aa[k].f * T) * Math.PI / 180)\n j += saa * base.horner(T, c[i])\n i++\n j += caa * base.horner(T, c[i])\n i++\n }\n return j\n}\n\n/**\n * Msa returns a mean time corrected by a sum.\n */\nexport function msa (y, a, c, aa) { // (y float64, a *ca, c [][]float64, aa []caa) float64\n const [J, M, T] = mean(y, a)\n return J + sumA(T, M, c, aa)\n}\n\n/**\n * JupiterOpp returns the time of an opposition of Jupiter.\n *\n * Result is time (as a jde) of the event nearest the given time (as a\n * decimal year.)\n */\nexport function jupiterOpp (y) { // (y float64) (jde float64)\n return msa(y, joA, joB, jaa)\n}\n\n/**\n * SaturnOpp returns the time of an opposition of Saturn.\n *\n * Result is time (as a jde) of the event nearest the given time (as a\n * decimal year.)\n */\nexport function saturnOpp (y) { // (y float64) (jde float64)\n return msa(y, soA, soB, saa)\n}\n\n/**\n * SaturnConj returns the time of a conjunction of Saturn.\n *\n * Result is time (as a jde) of the event nearest the given time (as a\n * decimal year.)\n */\nexport function saturnConj (y) { // (y float64) (jde float64)\n return msa(y, scA, scB, saa)\n}\n\n/**\n * UranusOpp returns the time of an opposition of Uranus.\n *\n * Result is time (as a jde) of the event nearest the given time (as a\n * decimal year.)\n */\nexport function uranusOpp (y) { // (y float64) (jde float64)\n return msa(y, uoA, uoB, uaa)\n}\n\n/**\n * NeptuneOpp returns the time of an opposition of Neptune.\n *\n * Result is time (as a jde) of the event nearest the given time (as a\n * decimal year.)\n */\nexport function neptuneOpp (y) { // (y float64) (jde float64)\n return msa(y, noA, noB, naa)\n}\n\n/**\n * El computes time and elongation of a greatest elongation event.\n */\nexport function el (y, a, t, e) { // (y float64, a *ca, t, e [][]float64) (jde, elongation float64)\n const [J, M, T] = mean(y, micA)\n return [J + sum(T, M, t), sum(T, M, e) * Math.PI / 180]\n}\n\n/**\n * MercuryEastElongation returns the time and elongation of a greatest eastern elongation of Mercury.\n *\n * Result is time (as a jde) of the event nearest the given time (as a\n * decimal year.)\n */\nexport function mercuryEastElongation (y) { // (y float64) (jde, elongation float64)\n return el(y, micA, met, mee)\n}\n\n/**\n * MercuryWestElongation returns the time and elongation of a greatest western elongation of Mercury.\n *\n * Result is time (as a jde) of the event nearest the given time (as a\n * decimal year.)\n */\nexport function mercuryWestElongation (y) { // (y float64) (jde, elongation float64)\n return el(y, micA, mwt, mwe)\n}\n\nexport function marsStation2 (y) { // (y float64) (jde float64)\n const [J, M, T] = mean(y, moA)\n return J + sum(T, M, ms2)\n}\n\n/**\n * ca holds coefficients from one line of table 36.A, p. 250\n */\nfunction Ca (A, B, M0, M1) {\n this.A = A\n this.B = B\n this.M0 = M0\n this.M1 = M1\n}\n\n/**\n * Table 36.A, p. 250\n */\nconst micA = new Ca(2451612.023, 115.8774771, 63.5867, 114.2088742)\nconst mscA = new Ca(2451554.084, 115.8774771, 6.4822, 114.2088742)\nconst vicA = new Ca(2451996.706, 583.921361, 82.7311, 215.513058)\nconst moA = new Ca(2452097.382, 779.936104, 181.9573, 48.705244)\nconst joA = new Ca(2451870.628, 398.884046, 318.4681, 33.140229)\nconst soA = new Ca(2451870.17, 378.091904, 318.0172, 12.647487)\nconst scA = new Ca(2451681.124, 378.091904, 131.6934, 12.647487)\nconst uoA = new Ca(2451764.317, 369.656035, 213.6884, 4.333093)\nconst noA = new Ca(2451753.122, 367.486703, 202.6544, 2.194998)\n\n/**\n * caa holds coefficients for \"additional angles\" for outer planets\n * as given on p. 251\n */\nfunction Caa (c, f) {\n this.c = c\n this.f = f\n}\n\nconst jaa = [\n new Caa(82.74, 40.76)\n]\n\nconst saa = [\n new Caa(82.74, 40.76),\n new Caa(29.86, 1181.36),\n new Caa(14.13, 590.68),\n new Caa(220.02, 1262.87)\n]\n\nconst uaa = [\n new Caa(207.83, 8.51),\n new Caa(108.84, 419.96)\n]\n\nconst naa = [\n new Caa(207.83, 8.51),\n new Caa(276.74, 209.98)\n]\n\n/**\n * Table 33.B, p. 256\n */\n\n/**\n * Mercury inferior conjunction\n */\nconst micB = [\n [0.0545, 0.0002],\n [-6.2008, 0.0074, 0.00003],\n [-3.275, -0.0197, 0.00001],\n [0.4737, -0.0052, -0.00001],\n [0.8111, 0.0033, -0.00002],\n [0.0037, 0.0018],\n [-0.1768, 0, 0.00001],\n [-0.0211, -0.0004],\n [0.0326, -0.0003],\n [0.0083, 0.0001],\n [-0.004, 0.0001]\n]\n\n/**\n * Mercury superior conjunction\n */\nconst mscB = [\n [-0.0548, -0.0002],\n [7.3894, -0.01, -0.00003],\n [3.22, 0.0197, -0.00001],\n [0.8383, -0.0064, -0.00001],\n [0.9666, 0.0039, -0.00003],\n [0.077, -0.0026],\n [0.2758, 0.0002, -0.00002],\n [-0.0128, -0.0008],\n [0.0734, -0.0004, -0.00001],\n [-0.0122, -0.0002],\n [0.0173, -0.0002]\n]\n\n/**\n * Venus inferior conjunction\n */\nconst vicB = [\n [-0.0096, 0.0002, -0.00001],\n [2.0009, -0.0033, -0.00001],\n [0.598, -0.0104, 0.00001],\n [0.0967, -0.0018, -0.00003],\n [0.0913, 0.0009, -0.00002],\n [0.0046, -0.0002],\n [0.0079, 0.0001]\n]\n\n/**\n * Mars opposition\n */\nconst moB = [\n [-0.3088, 0, 0.00002],\n [-17.6965, 0.0363, 0.00005],\n [18.3131, 0.0467, -0.00006],\n [-0.2162, -0.0198, -0.00001],\n [-4.5028, -0.0019, 0.00007],\n [0.8987, 0.0058, -0.00002],\n [0.7666, -0.005, -0.00003],\n [-0.3636, -0.0001, 0.00002],\n [0.0402, 0.0032],\n [0.0737, -0.0008],\n [-0.098, -0.0011]\n]\n\n/**\n * Jupiter opposition\n */\nconst joB = [\n [-0.1029, 0, -0.00009],\n [-1.9658, -0.0056, 0.00007],\n [6.1537, 0.021, -0.00006],\n [-0.2081, -0.0013],\n [-0.1116, -0.001],\n [0.0074, 0.0001],\n [-0.0097, -0.0001],\n [0, 0.0144, -0.00008],\n [0.3642, -0.0019, -0.00029]\n]\n\n/**\n * Saturn opposition\n */\nconst soB = [\n [-0.0209, 0.0006, 0.00023],\n [4.5795, -0.0312, -0.00017],\n [1.1462, -0.0351, 0.00011],\n [0.0985, -0.0015],\n [0.0733, -0.0031, 0.00001],\n [0.0025, -0.0001],\n [0.005, -0.0002],\n [0, -0.0337, 0.00018],\n [-0.851, 0.0044, 0.00068],\n [0, -0.0064, 0.00004],\n [0.2397, -0.0012, -0.00008],\n [0, -0.001],\n [0.1245, 0.0006],\n [0, 0.0024, -0.00003],\n [0.0477, -0.0005, -0.00006]\n]\n\n/**\n * Saturn conjunction\n */\nconst scB = [\n [0.0172, -0.0006, 0.00023],\n [-8.5885, 0.0411, 0.00020],\n [-1.147, 0.0352, -0.00011],\n [0.3331, -0.0034, -0.00001],\n [0.1145, -0.0045, 0.00002],\n [-0.0169, 0.0002],\n [-0.0109, 0.0004],\n [0, -0.0337, 0.00018],\n [-0.851, 0.0044, 0.00068],\n [0, -0.0064, 0.00004],\n [0.2397, -0.0012, -0.00008],\n [0, -0.001],\n [0.1245, 0.0006],\n [0, 0.0024, -0.00003],\n [0.0477, -0.0005, -0.00006]\n]\n\n/**\n * Uranus opposition\n */\nconst uoB = [\n [0.0844, -0.0006],\n [-0.1048, 0.0246],\n [-5.1221, 0.0104, 0.00003],\n [-0.1428, 0.0005],\n [-0.0148, -0.0013],\n [0],\n [0.0055],\n [0],\n [0.885],\n [0],\n [0.2153]\n]\n\n/**\n * Neptune opposition [\n */\nconst noB = [\n [-0.014, 0, 0.00001],\n [-1.3486, 0.001, 0.00001],\n [0.8597, 0.0037],\n [-0.0082, -0.0002, 0.00001],\n [0.0037, -0.0003],\n [0],\n [-0.5964],\n [0],\n [0.0728]\n]\n\n/**\n * Table 36.C, p. 259\n */\n\n/**\n * Mercury east time correction\n */\nconst met = [\n [-21.6106, 0.0002],\n [-1.9803, -0.006, 0.00001],\n [1.4151, -0.0072, -0.00001],\n [0.5528, -0.0005, -0.00001],\n [0.2905, 0.0034, 0.00001],\n [-0.1121, -0.0001, 0.00001],\n [-0.0098, -0.0015],\n [0.0192],\n [0.0111, 0.0004],\n [-0.0061],\n [-0.0032, -0.0001]\n]\n\n/**\n * Mercury east elongation\n */\nconst mee = [\n [22.4697],\n [-4.2666, 0.0054, 0.00002],\n [-1.8537, -0.0137],\n [0.3598, 0.0008, -0.00001],\n [-0.068, 0.0026],\n [-0.0524, -0.0003],\n [0.0052, -0.0006],\n [0.0107, 0.0001],\n [-0.0013, 0.0001],\n [-0.0021],\n [0.0003]\n]\n\n/**\n * Mercury west time correction\n */\nconst mwt = [\n [21.6249, -0.0002],\n [0.1306, 0.0065],\n [-2.7661, -0.0011, 0.00001],\n [0.2438, -0.0024, -0.00001],\n [0.5767, 0.0023],\n [0.1041],\n [-0.0184, 0.0007],\n [-0.0051, -0.0001],\n [0.0048, 0.0001],\n [0.0026],\n [0.0037]\n]\n\n/**\n * Mercury west elongation\n */\nconst mwe = [\n [22.4143, -0.0001],\n [4.3651, -0.0048, -0.00002],\n [2.3787, 0.0121, -0.00001],\n [0.2674, 0.0022],\n [-0.3873, 0.0008, 0.00001],\n [-0.0369, -0.0001],\n [0.0017, -0.0001],\n [0.0059],\n [0.0061, 0.0001],\n [0.0007],\n [-0.0011]\n]\n\n/**\n * Table 36.D, p. 261\n */\n\n/**\n * Mars Station 2\n */\nconst ms2 = [\n [36.7191, 0.0016, 0.00003],\n [-12.6163, 0.0417, -0.00001],\n [20.1218, 0.0379, -0.00006],\n [-1.636, -0.019],\n [-3.9657, 0.0045, 0.00007],\n [1.1546, 0.0029, -0.00003],\n [0.2888, -0.0073, -0.00002],\n [-0.3128, 0.0017, 0.00002],\n [0.2513, 0.0026, -0.00002],\n [-0.0021, -0.0016],\n [-0.1497, -0.0006]\n]\n\nexport default {\n mean,\n sum,\n ms,\n mercuryInfConj,\n mercurySupConj,\n venusInfConj,\n marsOpp,\n sumA,\n msa,\n jupiterOpp,\n saturnOpp,\n saturnConj,\n uranusOpp,\n neptuneOpp,\n el,\n mercuryEastElongation,\n mercuryWestElongation,\n marsStation2\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module pluto\n */\n/**\n * Pluto: Chapter 37, Pluto.\n */\n\nimport base from './base.js'\nimport elliptic from './elliptic.js'\n\n/**\n * Heliocentric returns J2000 heliocentric coordinates of Pluto.\n *\n * Results l, b are solar longitude and latitude in radians.\n * Result r is distance in AU.\n */\nexport function heliocentric (jde) {\n let l = 0\n let b = 0\n let r = 0\n const T = base.J2000Century(jde)\n const J = 34.35 + 3034.9057 * T\n const S = 50.08 + 1222.1138 * T\n const P = 238.96 + 144.96 * T\n for (const i in t37) {\n const t = t37[i]\n const [sα, cα] = base.sincos((t.i * J + t.j * S + t.k * P) * Math.PI / 180)\n l += t.lA * sα + t.lB * cα\n b += t.bA * sα + t.bB * cα\n r += t.rA * sα + t.rB * cα\n }\n l = (l + 238.958116 + 144.96 * T) * Math.PI / 180\n b = (b - 3.908239) * Math.PI / 180\n r += 40.7241346\n return { lon: l, lat: b, range: r }\n}\n\n/**\n * Astrometric returns J2000 astrometric coordinates of Pluto.\n */\nexport function astrometric (jde, earth) {\n const sε = base.SOblJ2000\n const cε = base.COblJ2000\n const f = function (jde) {\n const { lon, lat, range } = heliocentric(jde)\n const [sl, cl] = base.sincos(lon)\n const [sb, cb] = base.sincos(lat)\n // (37.1) p. 264\n const x = range * cl * cb\n const y = range * (sl * cb * cε - sb * sε)\n const z = range * (sl * cb * sε + sb * cε)\n return { x, y, z }\n }\n const c = elliptic.astrometricJ2000(f, jde, earth) // eslint-disable-line no-unused-vars\n return new base.Coord(c.ra, c.dec)\n}\n\nfunction Pt (i, j, k, lA, lB, bA, bB, rA, rB) {\n this.i = i\n this.j = j\n this.k = k\n this.lA = lA\n this.lB = lB\n this.bA = bA\n this.bB = bB\n this.rA = rA\n this.rB = rB\n}\n\nconst t37 = [\n new Pt(0, 0, 1, -19.799805, 19.850055, -5.452852, -14.974862, 6.6865439, 6.8951812),\n new Pt(0, 0, 2, 0.897144, -4.954829, 3.527812, 1.67279, -1.1827535, -0.0332538),\n new Pt(0, 0, 3, 0.611149, 1.211027, -1.050748, 0.327647, 0.1593179, -0.143889),\n new Pt(0, 0, 4, -0.341243, -0.189585, 0.17869, -0.292153, -0.0018444, 0.048322),\n new Pt(0, 0, 5, 0.129287, -0.034992, 0.01865, 0.10034, -0.0065977, -0.0085431),\n new Pt(0, 0, 6, -0.038164, 0.030893, -0.030697, -0.025823, 0.0031174, -0.0006032),\n new Pt(0, 1, -1, 0.020442, -0.009987, 0.004878, 0.011248, -0.0005794, 0.0022161),\n new Pt(0, 1, 0, -0.004063, -0.005071, 0.000226, -0.000064, 0.0004601, 0.0004032),\n new Pt(0, 1, 1, -0.006016, -0.003336, 0.00203, -0.000836, -0.0001729, 0.0000234),\n new Pt(0, 1, 2, -0.003956, 0.003039, 0.000069, -0.000604, -0.0000415, 0.0000702),\n new Pt(0, 1, 3, -0.000667, 0.003572, -0.000247, -0.000567, 0.0000239, 0.0000723),\n new Pt(0, 2, -2, 0.001276, 0.000501, -0.000057, 0.000001, 0.0000067, -0.0000067),\n new Pt(0, 2, -1, 0.001152, -0.000917, -0.000122, 0.000175, 0.0001034, -0.0000451),\n new Pt(0, 2, 0, 0.00063, -0.001277, -0.000049, -0.000164, -0.0000129, 0.0000504),\n new Pt(1, -1, 0, 0.002571, -0.000459, -0.000197, 0.000199, 0.000048, -0.0000231),\n new Pt(1, -1, 1, 0.000899, -0.001449, -0.000025, 0.000217, 0.0000002, -0.0000441),\n new Pt(1, 0, -3, -0.001016, 0.001043, 0.000589, -0.000248, -0.0003359, 0.0000265),\n new Pt(1, 0, -2, -0.002343, -0.001012, -0.000269, 0.000711, 0.0007856, -0.0007832),\n new Pt(1, 0, -1, 0.007042, 0.000788, 0.000185, 0.000193, 0.0000036, 0.0045763),\n new Pt(1, 0, 0, 0.001199, -0.000338, 0.000315, 0.000807, 0.0008663, 0.0008547),\n new Pt(1, 0, 1, 0.000418, -0.000067, -0.00013, -0.000043, -0.0000809, -0.0000769),\n new Pt(1, 0, 2, 0.00012, -0.000274, 0.000005, 0.000003, 0.0000263, -0.0000144),\n new Pt(1, 0, 3, -0.00006, -0.000159, 0.000002, 0.000017, -0.0000126, 0.0000032),\n new Pt(1, 0, 4, -0.000082, -0.000029, 0.000002, 0.000005, -0.0000035, -0.0000016),\n new Pt(1, 1, -3, -0.000036, -0.000029, 0.000002, 0.000003, -0.0000019, -0.0000004),\n new Pt(1, 1, -2, -0.00004, 0.000007, 0.000003, 0.000001, -0.0000015, 0.0000008),\n new Pt(1, 1, -1, -0.000014, 0.000022, 0.000002, -0.000001, -0.0000004, 0.0000012),\n new Pt(1, 1, 0, 0.000004, 0.000013, 0.000001, -0.000001, 0.0000005, 0.0000006),\n new Pt(1, 1, 1, 0.000005, 0.000002, 0, -0.000001, 0.0000003, 0.0000001),\n new Pt(1, 1, 3, -0.000001, 0, 0, 0, 0.0000006, -0.0000002),\n new Pt(2, 0, -6, 0.000002, 0, 0, -0.000002, 0.0000002, 0.0000002),\n new Pt(2, 0, -5, -0.000004, 0.000005, 0.000002, 0.000002, -0.0000002, -0.0000002),\n new Pt(2, 0, -4, 0.000004, -0.000007, -0.000007, 0, 0.0000014, 0.0000013),\n new Pt(2, 0, -3, 0.000014, 0.000024, 0.00001, -0.000008, -0.0000063, 0.0000013),\n new Pt(2, 0, -2, -0.000049, -0.000034, -0.000003, 0.00002, 0.0000136, -0.0000236),\n new Pt(2, 0, -1, 0.000163, -0.000048, 0.000006, 0.000005, 0.0000273, 0.0001065),\n new Pt(2, 0, 0, 0.000009, -0.000024, 0.000014, 0.000017, 0.0000251, 0.0000149),\n new Pt(2, 0, 1, -0.000004, 0.000001, -0.000002, 0, -0.0000025, -0.0000009),\n new Pt(2, 0, 2, -0.000003, 0.000001, 0, 0, 0.0000009, -0.0000002),\n new Pt(2, 0, 3, 0.000001, 0.000003, 0, 0, -0.0000008, 0.0000007),\n new Pt(3, 0, -2, -0.000003, -0.000001, 0, 0.000001, 0.0000002, -0.000001),\n new Pt(3, 0, -1, 0.000005, -0.000003, 0, 0, 0.0000019, 0.0000035),\n new Pt(3, 0, 0, 0, 0, 0.000001, 0, 0.000001, 0.0000003)\n]\n\nexport default {\n heliocentric,\n astrometric\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module refraction\n */\n/**\n * Refraction: Chapter 16: Atmospheric Refraction.\n *\n * Functions here assume atmospheric pressure of 1010 mb, temperature of\n * 10°C, and yellow light.\n */\nimport sexa from './sexagesimal.js'\nconst { sin, tan } = Math\nconst D2R = Math.PI / 180\n\nconst gt15true1 = new sexa.Angle(false, 0, 0, 58.294).rad()\nconst gt15true2 = new sexa.Angle(false, 0, 0, 0.0668).rad()\nconst gt15app1 = new sexa.Angle(false, 0, 0, 58.276).rad()\nconst gt15app2 = new sexa.Angle(false, 0, 0, 0.0824).rad()\n\n/**\n * gt15True returns refraction for obtaining true altitude when altitude\n * is greater than 15 degrees (about 0.26 radians.)\n *\n * h0 must be a measured apparent altitude of a celestial body in radians.\n *\n * Result is refraction to be subtracted from h0 to obtain the true altitude\n * of the body. Unit is radians.\n */\nexport function gt15True (h0) { // (h0 float64) float64\n // (16.1) p. 105\n const t = tan(Math.PI / 2 - h0)\n return gt15true1 * t - gt15true2 * t * t * t\n}\n\n/**\n * gt15Apparent returns refraction for obtaining apparent altitude when\n * altitude is greater than 15 degrees (about 0.26 radians.)\n *\n * h must be a computed true \"airless\" altitude of a celestial body in radians.\n *\n * Result is refraction to be added to h to obtain the apparent altitude\n * of the body. Unit is radians.\n */\nexport function gt15Apparent (h) { // (h float64) float64\n // (16.2) p. 105\n const t = tan(Math.PI / 2 - h)\n return gt15app1 * t - gt15app2 * t * t * t\n}\n\n/**\n * Bennett returns refraction for obtaining true altitude.\n *\n * h0 must be a measured apparent altitude of a celestial body in radians.\n *\n * Results are accurate to 0.07 arc min from horizon to zenith.\n *\n * Result is refraction to be subtracted from h0 to obtain the true altitude\n * of the body. Unit is radians.\n */\nexport function bennett (h0) { // (h0 float64) float64\n // (16.3) p. 106\n const c1 = D2R / 60\n const c731 = 7.31 * D2R * D2R\n const c44 = 4.4 * D2R\n return c1 / tan(h0 + c731 / (h0 + c44))\n}\n\n/**\n * Bennett2 returns refraction for obtaining true altitude.\n *\n * Similar to Bennett, but a correction is applied to give a more accurate\n * result.\n *\n * Results are accurate to 0.015 arc min. Result unit is radians.\n */\nexport function bennett2 (h0) { // (h0 float64) float64\n const cMin = 60 / D2R\n const c06 = 0.06 / cMin\n const c147 = 14.7 * cMin * D2R\n const c13 = 13 * D2R\n const R = bennett(h0)\n return R - c06 * sin(c147 * R + c13)\n}\n\n/**\n * Saemundsson returns refraction for obtaining apparent altitude.\n *\n * h must be a computed true \"airless\" altitude of a celestial body in radians.\n *\n * Result is refraction to be added to h to obtain the apparent altitude\n * of the body.\n *\n * Results are consistent with Bennett to within 4 arc sec.\n * Result unit is radians.\n */\nexport function saemundsson (h) { // (h float64) float64\n // (16.4) p. 106\n const c102 = 1.02 * D2R / 60\n const c103 = 10.3 * D2R * D2R\n const c511 = 5.11 * D2R\n return c102 / tan(h + c103 / (h + c511))\n}\n\nexport default {\n gt15True,\n gt15Apparent,\n bennett,\n bennett2,\n saemundsson\n}\n","/* eslint key-spacing: 1 */\n/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module rise\n */\n/**\n * Rise: Chapter 15, Rising, Transit, and Setting.\n */\n\nimport base from './base.js'\nimport deltat from './deltat.js'\nimport elliptic from './elliptic.js'\nimport interp from './interpolation.js'\nimport julian from './julian.js'\nimport sexa from './sexagesimal.js'\nimport sidereal from './sidereal.js'\nimport { Coord as GlobeCoord } from './globe.js' // eslint-disable-line no-unused-vars\nimport { Planet } from './planetposition.js' // eslint-disable-line no-unused-vars\nconst { acos, asin, cos, sin } = Math\n\n/**\n * @typedef {object} RiseObj\n * @property {number} rise - in seconds\n * @property {number} transit - in seconds\n * @property {number} set - in seconds\n */\n\nconst SECS_PER_DEGREE = 240 // = 86400 / 360\nconst SECS_PER_DAY = 86400\nconst D2R = Math.PI / 180\n\nexport const errorAboveHorizon = base.errorCode('always above horizon', -1)\nexport const errorBelowHorizon = base.errorCode('always below horizon', 1)\n\n/**\n * mean refraction of the atmosphere\n */\nexport const meanRefraction = new sexa.Angle(false, 0, 34, 0).rad()\n\n/**\n * \"Standard altitudes\" for various bodies already including `meanRefraction` of 0°34'\n *\n * The standard altitude is the geometric altitude of the center of body\n * at the time of apparent rising or seting.\n */\nexport const stdh0 = {\n stellar: -meanRefraction,\n solar: new sexa.Angle(true, 0, 50, 0).rad(),\n // not containing meanRefraction\n lunar: sexa.angleFromDeg(0.7275),\n lunarMean: sexa.angleFromDeg(0.125)\n}\n\n/**\n * Helper function to obtain corrected refraction\n * @param {number} h0 - altitude of the body in radians containing `meanRefraction` of 0°34'\n * @param {number} [corr] - the calcluated refraction e.g. from package `refraction` in radians\n * @return {number} refraction value in radians\n */\nexport function refraction (h0, corr) {\n if (!corr) {\n return h0\n } else {\n return h0 - meanRefraction - corr\n }\n}\n\n/**\n * standard altitude for stars, planets at apparent rising, seting\n */\nexport const stdh0Stellar = (_refraction) => refraction(stdh0.stellar, _refraction)\nexport const Stdh0Stellar = stdh0Stellar() // for backward-compatibility\n/**\n * standard altitude for sun for upper limb of the disk\n */\nexport const stdh0Solar = (_refraction) => refraction(stdh0.solar, _refraction)\nexport const Stdh0Solar = stdh0Solar() // for backward-compatibility\n\n/**\n * standard altitude for moon (low accuracy)\n */\nexport const stdh0LunarMean = (_refraction) => {\n return stdh0.lunarMean - refraction(_refraction)\n}\nexport const Stdh0LunarMean = stdh0LunarMean() // for backward-compatibility\n/**\n * Stdh0Lunar is the standard altitude of the Moon considering π, the\n * Moon's horizontal parallax.\n * @param {number} π - the Moon's horizontal parallax\n * @param {number} [refraction] - optional value for refraction in radians if\n * omitted than meanRefraction is used\n * @return {number} altitude of Moon in radians\n */\nexport const stdh0Lunar = (π, refraction) => {\n return stdh0.lunar * π - (refraction || meanRefraction)\n}\nexport const Stdh0Lunar = stdh0Lunar // for backward-compatibility\n\n/**\n * @return {number} local angle in radians\n */\nexport function hourAngle (lat, h0, δ) {\n // approximate local hour angle\n const cosH = (sin(h0) - sin(lat) * sin(δ)) / (cos(lat) * cos(δ)) // (15.1) p. 102\n if (cosH < -1) {\n throw errorAboveHorizon\n } else if (cosH > 1) {\n throw errorBelowHorizon\n }\n const H = acos(cosH)\n return H\n}\n\n/**\n * @param {number} lon - longitude in radians\n * @param {number} α - right ascension in radians\n * @param {number} th0 - sidereal.apparent0UT in seconds of day `[0...86400[`\n * @return {number} time of transit in seconds of day `[0, 86400[`\n */\nfunction _mt (lon, α, th0) {\n // const mt = (((lon + α) * 180 / Math.PI - (th0 * 360 / 86400)) * 86400 / 360)\n const mt = (lon + α) * SECS_PER_DEGREE * 180 / Math.PI - th0\n return mt\n}\n\n/**\n * @param {number} Th0 - sidereal.apparent0UT in seconds of day `[0...86400[`\n * @param {number} m - motion in seconds of day `[0...86400[`\n * @return {number} new siderial time seconds of day `[0...86400[`\n */\nfunction _th0 (Th0, m) {\n // in original formula Th0 = 0...360 and m = 0...1 -> return value would be in 0...360 degrees\n // Th0 /= 240\n // m /= 86400\n const th0 = base.pmod(Th0 + m * 360.985647 / 360, SECS_PER_DAY) // p103\n return th0 // 0...86400 in seconds angle\n}\n\n/**\n * maintain backward compatibility - will be removed in v2\n * return value in future will be an object not an array\n * @private\n * @param {RiseObj} rs\n * @return {RiseObj}\n */\nfunction _compatibility (rs) {\n const _rs = [rs.rise, rs.transit, rs.set]\n _rs.rise = rs.rise\n _rs.transit = rs.transit\n _rs.set = rs.set\n return _rs\n}\n\n/**\n * ApproxTimes computes approximate UT rise, transit and set times for\n * a celestial object on a day of interest.\n *\n * The function argurments do not actually include the day, but do include\n * values computed from the day.\n *\n * @param {GlobeCoord} p - is geographic coordinates of observer.\n * @param {number} h0 - is \"standard altitude\" of the body in radians\n * @param {number} Th0 - is apparent sidereal time at 0h UT at Greenwich in seconds\n * (range 0...86400) must be the time on the day of interest, in seconds.\n * See sidereal.apparent0UT\n * @param {number} α - right ascension (radians)\n * @param {number} δ - declination (radians)\n * @return {RiseObj} Result units are seconds and are in the range [0,86400)\n * @throws Error\n */\nexport function approxTimes (p, h0, Th0, α, δ) {\n const H0 = hourAngle(p.lat, h0, δ) * SECS_PER_DEGREE * 180 / Math.PI // in degrees per day === seconds\n // approximate transit, rise, set times.\n // (15.2) p. 102.0\n const mt = _mt(p.lon, α, Th0)\n const rs = {}\n rs.transit = base.pmod(mt, SECS_PER_DAY)\n rs.rise = base.pmod(mt - H0, SECS_PER_DAY)\n rs.set = base.pmod(mt + H0, SECS_PER_DAY)\n return _compatibility(rs)\n}\n\n/**\n * Times computes UT rise, transit and set times for a celestial object on\n * a day of interest.\n *\n * The function argurments do not actually include the day, but do include\n * a number of values computed from the day.\n *\n * @param {GlobeCoord} p - is geographic coordinates of observer.\n * @param {number} ΔT - is delta T in seconds\n * @param {number} h0 - is \"standard altitude\" of the body in radians\n * @param {number} Th0 - is apparent sidereal time at 0h UT at Greenwich in seconds\n * (range 0...86400) must be the time on the day of interest, in seconds.\n * See sidereal.apparent0UT\n * @param {Array} α3 - slices of three right ascensions\n * @param {Array} δ3 - slices of three declinations.\n * α3, δ3 must be values at 0h dynamical time for the day before, the day of,\n * and the day after the day of interest. Units are radians.\n *\n * @return {RiseObj} Result units are seconds and are in the range [0,86400)\n * @throws Error\n */\nexport function times (p, ΔT, h0, Th0, α3, δ3) { // (p globe.Coord, ΔT, h0, Th0 float64, α3, δ3 []float64) (mRise, mTransit, mSet float64, err error)\n const rs = approxTimes(p, h0, Th0, α3[1], δ3[1])\n const d3α = new interp.Len3(-SECS_PER_DAY, SECS_PER_DAY, α3)\n const d3δ = new interp.Len3(-SECS_PER_DAY, SECS_PER_DAY, δ3)\n\n // adjust mTransit\n const ut = rs.transit + ΔT\n const α = d3α.interpolateX(ut)\n const th0 = _th0(Th0, rs.transit)\n const H = -1 * _mt(p.lon, α, th0) // in secs // Hmeus = 0...360\n rs.transit -= H\n\n // adjust mRise, mSet\n const [sLat, cLat] = base.sincos(p.lat)\n\n const adjustRS = function (m) {\n const ut = m + ΔT\n const α = d3α.interpolateX(ut)\n const δ = d3δ.interpolateX(ut)\n const th0 = _th0(Th0, m)\n const H = -1 * _mt(p.lon, α, th0)\n const Hrad = (H / SECS_PER_DEGREE) * D2R\n const h = asin(((sLat * sin(δ)) + (cLat * cos(δ) * cos(Hrad)))) // formula 13.6\n const Δm = (SECS_PER_DAY * (h - h0) / (cos(δ) * cLat * sin(Hrad) * 2 * Math.PI)) // formula p103 3\n return m + Δm\n }\n\n rs.rise = adjustRS(rs.rise)\n rs.set = adjustRS(rs.set)\n\n return _compatibility(rs)\n}\n\n/**\n * RisePlanet computes rise, transit and set times for a planet on a day of interest.\n */\nexport class PlanetRise {\n /**\n * @param {number|Date} jd - Julian Day starting at midnight or Date object\n * @param {number} lat - geographic latitude of the observerin degrees\n * @param {number} lon - geographic longitude of the observer in degrees (measured positively westward)\n * @param {Planet} earth - VSOP87 Planet object for Earth\n * @param {Planet} planet - VSOP87 Planet object of observed body\n * @param {object} [opts]\n * @param {boolean} [opts.date] - return times as Date objects\n * @param {number} [opts.refraction] - use different refraction than `stdh0Stellar`\n */\n constructor (jd, lat, lon, earth, planet, opts) {\n this.opts = opts || {}\n this.refraction = this.opts.refraction || stdh0Stellar()\n if (jd instanceof Date) {\n jd = new julian.Calendar().fromDate(jd).toJD()\n }\n this.jd = Math.floor(jd - 0.5) + 0.5 // start at midnight\n this.lat = lat * D2R // convert to radians\n this.lon = lon * D2R\n const cal = new julian.Calendar().fromJD(this.jd)\n this.jde = cal.toJDE()\n this.ΔT = deltat.deltaT(cal.toYear())\n this.earth = earth\n this.planet = planet\n }\n\n approxTimes () {\n const body = elliptic.position(this.planet, this.earth, this.jde)\n const Th0 = sidereal.apparent0UT(this.jd)\n const rs = approxTimes(\n { lat: this.lat, lon: this.lon }, this.refraction,\n Th0, body.ra, body.dec\n )\n return this._rsToJD(rs)\n }\n\n times () {\n const body = [\n elliptic.position(this.planet, this.earth, this.jde - 1),\n elliptic.position(this.planet, this.earth, this.jde),\n elliptic.position(this.planet, this.earth, this.jde + 1)\n ]\n const Th0 = sidereal.apparent0UT(this.jd)\n const rs = times(\n { lat: this.lat, lon: this.lon }, this.ΔT, this.refraction,\n Th0, this._toArr(body, 'ra'), this._toArr(body, 'dec')\n )\n return this._rsToJD(rs)\n }\n\n /** @private */\n _toArr (body, p) {\n return body.map((item) => {\n return item[p]\n })\n }\n\n /** @private */\n _rsToJD (rs) {\n return {\n rise: this._toJD(rs.rise),\n transit: this._toJD(rs.transit),\n set: this._toJD(rs.set)\n }\n }\n\n /** @private */\n _toJD (secs) {\n const jd = this.jd + secs / 86400\n if (this.opts.date) {\n return new julian.Calendar().fromJD(jd).toDate()\n } else {\n return jd\n }\n }\n}\n\nexport default {\n errorAboveHorizon,\n errorBelowHorizon,\n meanRefraction,\n stdh0,\n refraction,\n stdh0Stellar,\n Stdh0Stellar,\n stdh0Solar,\n Stdh0Solar,\n stdh0LunarMean,\n Stdh0LunarMean,\n stdh0Lunar,\n Stdh0Lunar,\n hourAngle,\n approxTimes,\n times,\n PlanetRise\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module saturnmoons\n */\n/**\n * Saturnmoons: Chapter 46, Positions of the Satellites of Saturn\n */\n\nimport base from './base.js'\nimport coord from './coord.js'\nimport planetposition, { Planet } from './planetposition.js' // eslint-disable-line no-unused-vars\nimport precess from './precess.js'\nimport solar from './solar.js'\n\n// array positions of Saturnmoons returned from positions().\nexport const mimas = 0\nexport const enceladus = 1\nexport const tethys = 2\nexport const dione = 3\nexport const rhea = 4\nexport const titan = 5\nexport const hyperion = 6\nexport const iapetus = 7\n\n/**\n * XY holds coordinates returned from positions().\n */\nfunction XY (x, y) {\n this.x = x\n this.y = y\n}\n\nconst d = Math.PI / 180\n\n/**\n * Positions returns positions of the eight major moons of Saturn.\n *\n * Results returned in argument pos, which must not be undefined.\n *\n * Result units are Saturn radii.\n *\n * @param {number} jde - Julian ephemeris day\n * @param {Planet} earth - VSOP87 planet Earth // eslint-disable-line no-unused-vars\n * @param {Planet} saturn - VSOP87 planet Saturn // eslint-disable-line no-unused-vars\n * @return {XY[]} Array of Moon Positions in `XY`\n * Use `M.mimas ... M.iapetus` to resolve to Moon and its position at `jde`\n */\nexport function positions (jde, earth, saturn) {\n const sol = solar.trueVSOP87(earth, jde)\n const [s, β, R] = [sol.lon, sol.lat, sol.range]\n const [ss, cs] = base.sincos(s)\n const sβ = Math.sin(β)\n let Δ = 9.0\n let x\n let y\n let z = 0\n let _jde\n\n const f = function () {\n const τ = base.lightTime(Δ)\n _jde = jde - τ\n const { lon, lat, range } = saturn.position(_jde)\n const fk5 = planetposition.toFK5(lon, lat, _jde) // eslint-disable-line no-unused-vars\n const [l, b] = [fk5.lon, fk5.lat]\n const [sl, cl] = base.sincos(l)\n const [sb, cb] = base.sincos(b)\n x = range * cb * cl + R * cs\n y = range * cb * sl + R * ss\n z = range * sb + R * sβ\n Δ = Math.sqrt(x * x + y * y + z * z)\n }\n f()\n f()\n\n let λ0 = Math.atan2(y, x)\n let β0 = Math.atan(z / Math.hypot(x, y))\n let ecl = new coord.Ecliptic(λ0, β0)\n ecl = precess.eclipticPosition(ecl, base.JDEToJulianYear(jde), base.JDEToJulianYear(base.B1950))\n λ0 = ecl.lon\n β0 = ecl.lat\n const q = new Qs(_jde)\n const s4 = [\n new R4(), // 0 unused\n q.mimas(),\n q.enceladus(),\n q.tethys(),\n q.dione(),\n q.rhea(),\n q.titan(),\n q.hyperion(),\n q.iapetus()\n ]\n\n const X = new Array(9).fill(0)\n const Y = new Array(9).fill(0)\n const Z = new Array(9).fill(0)\n for (let j = 1; j <= 8; j++) {\n const u = s4[j].λ - s4[j].Ω\n const w = s4[j].Ω - 168.8112 * d\n const [su, cu] = base.sincos(u)\n const [sw, cw] = base.sincos(w)\n const [sγ, cγ] = base.sincos(s4[j].γ)\n const r = s4[j].r\n X[j] = r * (cu * cw - su * cγ * sw)\n Y[j] = r * (su * cw * cγ + cu * sw)\n Z[j] = r * su * sγ\n }\n Z[0] = 1\n const [sλ0, cλ0] = base.sincos(λ0)\n const [sβ0, cβ0] = base.sincos(β0)\n const A = new Array(9).fill(0)\n const B = new Array(9).fill(0)\n const C = new Array(9).fill(0)\n for (const j in X) {\n let a = X[j]\n let b = q.c1 * Y[j] - q.s1 * Z[j]\n const c = q.s1 * Y[j] + q.c1 * Z[j]\n const a0 = q.c2 * a - q.s2 * b\n b = q.s2 * a + q.c2 * b\n a = a0\n\n A[j] = a * sλ0 - b * cλ0\n b = a * cλ0 + b * sλ0\n\n B[j] = b * cβ0 + c * sβ0\n C[j] = c * cβ0 - b * sβ0\n }\n\n const pos = new Array(9)\n const D = Math.atan2(A[0], C[0])\n const [sD, cD] = base.sincos(D)\n for (let j = 1; j <= 8; j++) {\n X[j] = A[j] * cD - C[j] * sD\n Y[j] = A[j] * sD + C[j] * cD\n Z[j] = B[j]\n const d = X[j] / s4[j].r\n X[j] += Math.abs(Z[j]) / k[j] * Math.sqrt(1 - d * d)\n const W = Δ / (Δ + Z[j] / 2475)\n pos[j - 1] = new XY(X[j] * W, Y[j] * W)\n }\n return pos\n}\n\nconst k = [0, 20947, 23715, 26382, 29876, 35313, 53800, 59222, 91820]\n\nfunction R4 (λ, r, γ, Ω) {\n this.λ = λ || 0\n this.r = r || 0\n this.γ = γ || 0\n this.Ω = Ω || 0\n}\n\nexport function Qs (jde) {\n this.t1 = jde - 2411093\n this.t2 = this.t1 / 365.25\n this.t3 = (jde - 2433282.423) / 365.25 + 1950\n this.t4 = jde - 2411368\n this.t5 = this.t4 / 365.25\n this.t6 = jde - 2415020\n this.t7 = this.t6 / 36525\n this.t8 = this.t6 / 365.25\n this.t9 = (jde - 2442000.5) / 365.25\n this.t10 = jde - 2409786\n this.t11 = this.t10 / 36525\n this.W0 = 5.095 * d * (this.t3 - 1866.39)\n this.W1 = 74.4 * d + 32.39 * d * this.t2\n this.W2 = 134.3 * d + 92.62 * d * this.t2\n this.W3 = 42 * d - 0.5118 * d * this.t5\n this.W4 = 276.59 * d + 0.5118 * d * this.t5\n this.W5 = 267.2635 * d + 1222.1136 * d * this.t7\n this.W6 = 175.4762 * d + 1221.5515 * d * this.t7\n this.W7 = 2.4891 * d + 0.002435 * d * this.t7\n this.W8 = 113.35 * d - 0.2597 * d * this.t7\n this.s1 = Math.sin(28.0817 * d)\n this.c1 = Math.cos(28.0817 * d)\n this.s2 = Math.sin(168.8112 * d)\n this.c2 = Math.cos(168.8112 * d)\n this.e1 = 0.05589 - 0.000346 * this.t7\n this.sW0 = Math.sin(this.W0)\n this.s3W0 = Math.sin(3 * this.W0)\n this.s5W0 = Math.sin(5 * this.W0)\n this.sW1 = Math.sin(this.W1)\n this.sW2 = Math.sin(this.W2)\n this.sW3 = Math.sin(this.W3)\n this.cW3 = Math.cos(this.W3)\n this.sW4 = Math.sin(this.W4)\n this.cW4 = Math.cos(this.W4)\n this.sW7 = Math.sin(this.W7)\n this.cW7 = Math.cos(this.W7)\n return this\n}\n\nQs.prototype.mimas = function () {\n const r = new R4()\n const L = 127.64 * d + 381.994497 * d * this.t1 -\n 43.57 * d * this.sW0 - 0.72 * d * this.s3W0 - 0.02144 * d * this.s5W0\n const p = 106.1 * d + 365.549 * d * this.t2\n const M = L - p\n const C = 2.18287 * d * Math.sin(M) +\n 0.025988 * d * Math.sin(2 * M) + 0.00043 * d * Math.sin(3 * M)\n r.λ = L + C\n r.r = 3.06879 / (1 + 0.01905 * Math.cos(M + C))\n r.γ = 1.563 * d\n r.Ω = 54.5 * d - 365.072 * d * this.t2\n return r\n}\n\nQs.prototype.enceladus = function () {\n const r = new R4()\n const L = 200.317 * d + 262.7319002 * d * this.t1 + 0.25667 * d * this.sW1 + 0.20883 * d * this.sW2\n const p = 309.107 * d + 123.44121 * d * this.t2\n const M = L - p\n const C = 0.55577 * d * Math.sin(M) + 0.00168 * d * Math.sin(2 * M)\n r.λ = L + C\n r.r = 3.94118 / (1 + 0.00485 * Math.cos(M + C))\n r.γ = 0.0262 * d\n r.Ω = 348 * d - 151.95 * d * this.t2\n return r\n}\n\nQs.prototype.tethys = function () {\n const r = new R4()\n r.λ = 285.306 * d + 190.69791226 * d * this.t1 +\n 2.063 * d * this.sW0 + 0.03409 * d * this.s3W0 + 0.001015 * d * this.s5W0\n r.r = 4.880998\n r.γ = 1.0976 * d\n r.Ω = 111.33 * d - 72.2441 * d * this.t2\n return r\n}\n\nQs.prototype.dione = function () {\n const r = new R4()\n const L = 254.712 * d + 131.53493193 * d * this.t1 - 0.0215 * d * this.sW1 - 0.01733 * d * this.sW2\n const p = 174.8 * d + 30.82 * d * this.t2\n const M = L - p\n const C = 0.24717 * d * Math.sin(M) + 0.00033 * d * Math.sin(2 * M)\n r.λ = L + C\n r.r = 6.24871 / (1 + 0.002157 * Math.cos(M + C))\n r.γ = 0.0139 * d\n r.Ω = 232 * d - 30.27 * d * this.t2\n return r\n}\n\nQs.prototype.rhea = function () {\n const pʹ = 342.7 * d + 10.057 * d * this.t2\n const [spʹ, cpʹ] = base.sincos(pʹ)\n const a1 = 0.000265 * spʹ + 0.001 * this.sW4\n const a2 = 0.000265 * cpʹ + 0.001 * this.cW4\n const e = Math.hypot(a1, a2)\n const p = Math.atan2(a1, a2)\n const N = 345 * d - 10.057 * d * this.t2\n const [sN, cN] = base.sincos(N)\n const λʹ = 359.244 * d + 79.6900472 * d * this.t1 + 0.086754 * d * sN\n const i = 28.0362 * d + 0.346898 * d * cN + 0.0193 * d * this.cW3\n const Ω = 168.8034 * d + 0.736936 * d * sN + 0.041 * d * this.sW3\n const a = 8.725924\n return this.subr(λʹ, p, e, a, Ω, i)\n}\n\nQs.prototype.subr = function (λʹ, p, e, a, Ω, i) {\n const r = new R4()\n const M = λʹ - p\n const e2 = e * e\n const e3 = e2 * e\n const e4 = e2 * e2\n const e5 = e3 * e2\n const C = (2 * e - 0.25 * e3 + 0.0520833333 * e5) * Math.sin(M) +\n (1.25 * e2 - 0.458333333 * e4) * Math.sin(2 * M) +\n (1.083333333 * e3 - 0.671875 * e5) * Math.sin(3 * M) +\n 1.072917 * e4 * Math.sin(4 * M) + 1.142708 * e5 * Math.sin(5 * M)\n r.r = a * (1 - e2) / (1 + e * Math.cos(M + C)) // return value\n const g = Ω - 168.8112 * d\n const [si, ci] = base.sincos(i)\n const [sg, cg] = base.sincos(g)\n const a1 = si * sg\n const a2 = this.c1 * si * cg - this.s1 * ci\n r.γ = Math.asin(Math.hypot(a1, a2)) // return value\n const u = Math.atan2(a1, a2)\n r.Ω = 168.8112 * d + u // return value (w)\n const h = this.c1 * si - this.s1 * ci * cg\n const ψ = Math.atan2(this.s1 * sg, h)\n r.λ = λʹ + C + u - g - ψ // return value\n return r\n}\n\nQs.prototype.titan = function () {\n const L = 261.1582 * d + 22.57697855 * d * this.t4 + 0.074025 * d * this.sW3\n const iʹ = 27.45141 * d + 0.295999 * d * this.cW3\n const Ωʹ = 168.66925 * d + 0.628808 * d * this.sW3\n const [siʹ, ciʹ] = base.sincos(iʹ)\n const [sΩʹW8, cΩʹW8] = base.sincos(Ωʹ - this.W8)\n const a1 = this.sW7 * sΩʹW8\n const a2 = this.cW7 * siʹ - this.sW7 * ciʹ * cΩʹW8\n const g0 = 102.8623 * d\n const ψ = Math.atan2(a1, a2)\n const s = Math.hypot(a1, a2)\n let g = this.W4 - Ωʹ - ψ\n let ϖ = 0\n const [s2g0, c2g0] = base.sincos(2 * g0)\n const f = () => {\n ϖ = this.W4 + 0.37515 * d * (Math.sin(2 * g) - s2g0)\n g = ϖ - Ωʹ - ψ\n }\n f()\n f()\n f()\n const eʹ = 0.029092 + 0.00019048 * (Math.cos(2 * g) - c2g0)\n const qq = 2 * (this.W5 - ϖ)\n const b1 = siʹ * sΩʹW8\n const b2 = this.cW7 * siʹ * cΩʹW8 - this.sW7 * ciʹ\n const θ = Math.atan2(b1, b2) + this.W8\n const [sq, cq] = base.sincos(qq)\n const e = eʹ + 0.002778797 * eʹ * cq\n const p = ϖ + 0.159215 * d * sq\n const u = 2 * this.W5 - 2 * θ + ψ\n const [su, cu] = base.sincos(u)\n const h = 0.9375 * eʹ * eʹ * sq + 0.1875 * s * s * Math.sin(2 * (this.W5 - θ))\n const λʹ = L - 0.254744 * d *\n (this.e1 * Math.sin(this.W6) + 0.75 * this.e1 * this.e1 * Math.sin(2 * this.W6) + h)\n const i = iʹ + 0.031843 * d * s * cu\n const Ω = Ωʹ + 0.031843 * d * s * su / siʹ\n const a = 20.216193\n return this.subr(λʹ, p, e, a, Ω, i)\n}\n\nQs.prototype.hyperion = function () {\n const η = 92.39 * d + 0.5621071 * d * this.t6\n const ζ = 148.19 * d - 19.18 * d * this.t8\n const θ = 184.8 * d - 35.41 * d * this.t9\n const θʹ = θ - 7.5 * d\n const as = 176 * d + 12.22 * d * this.t8\n const bs = 8 * d + 24.44 * d * this.t8\n const cs = bs + 5 * d\n const ϖ = 69.898 * d - 18.67088 * d * this.t8\n const φ = 2 * (ϖ - this.W5)\n const χ = 94.9 * d - 2.292 * d * this.t8\n const [sη, cη] = base.sincos(η)\n const [sζ, cζ] = base.sincos(ζ)\n const [s2ζ, c2ζ] = base.sincos(2 * ζ)\n const [s3ζ, c3ζ] = base.sincos(3 * ζ)\n const [sζpη, cζpη] = base.sincos(ζ + η)\n const [sζmη, cζmη] = base.sincos(ζ - η)\n const [sφ, cφ] = base.sincos(φ)\n const [sχ, cχ] = base.sincos(χ)\n const [scs, ccs] = base.sincos(cs)\n const a = 24.50601 - 0.08686 * cη - 0.00166 * cζpη + 0.00175 * cζmη\n const e = 0.103458 - 0.004099 * cη - 0.000167 * cζpη + 0.000235 * cζmη +\n 0.02303 * cζ - 0.00212 * c2ζ + 0.000151 * c3ζ + 0.00013 * cφ\n const p = ϖ + 0.15648 * d * sχ - 0.4457 * d * sη - 0.2657 * d * sζpη - 0.3573 * d * sζmη -\n 12.872 * d * sζ + 1.668 * d * s2ζ - 0.2419 * d * s3ζ - 0.07 * d * sφ\n const λʹ = 177.047 * d + 16.91993829 * d * this.t6 + 0.15648 * d * sχ + 9.142 * d * sη +\n 0.007 * d * Math.sin(2 * η) - 0.014 * d * Math.sin(3 * η) + 0.2275 * d * sζpη +\n 0.2112 * d * sζmη - 0.26 * d * sζ - 0.0098 * d * s2ζ -\n 0.013 * d * Math.sin(as) + 0.017 * d * Math.sin(bs) - 0.0303 * d * sφ\n const i = 27.3347 * d + 0.6434886 * d * cχ + 0.315 * d * this.cW3 + 0.018 * d * Math.cos(θ) -\n 0.018 * d * ccs\n const Ω = 168.6812 * d + 1.40136 * d * cχ + 0.68599 * d * this.sW3 - 0.0392 * d * scs +\n 0.0366 * d * Math.sin(θʹ)\n return this.subr(λʹ, p, e, a, Ω, i)\n}\n\nQs.prototype.iapetus = function () {\n const L = 261.1582 * d + 22.57697855 * d * this.t4\n const ϖʹ = 91.796 * d + 0.562 * d * this.t7\n const ψ = 4.367 * d - 0.195 * d * this.t7\n const θ = 146.819 * d - 3.198 * d * this.t7\n const φ = 60.47 * d + 1.521 * d * this.t7\n const Φ = 205.055 * d - 2.091 * d * this.t7\n const eʹ = 0.028298 + 0.001156 * this.t11\n const ϖ0 = 352.91 * d + 11.71 * d * this.t11\n const μ = 76.3852 * d + 4.53795125 * d * this.t10\n const iʹ = base.horner(this.t11, 18.4602 * d, -0.9518 * d, -0.072 * d, 0.0054 * d)\n const Ωʹ = base.horner(this.t11, 143.198 * d, -3.919 * d, 0.116 * d, 0.008 * d)\n const l = μ - ϖ0\n const g = ϖ0 - Ωʹ - ψ\n const g1 = ϖ0 - Ωʹ - φ\n const ls = this.W5 - ϖʹ\n const gs = ϖʹ - θ\n const lT = L - this.W4\n const gT = this.W4 - Φ\n const u1 = 2 * (l + g - ls - gs)\n const u2 = l + g1 - lT - gT\n const u3 = l + 2 * (g - ls - gs)\n const u4 = lT + gT - g1\n const u5 = 2 * (ls + gs)\n const [sl, cl] = base.sincos(l)\n const [su1, cu1] = base.sincos(u1)\n const [su2, cu2] = base.sincos(u2)\n const [su3, cu3] = base.sincos(u3)\n const [su4, cu4] = base.sincos(u4)\n const [slu2, clu2] = base.sincos(l + u2)\n const [sg1gT, cg1gT] = base.sincos(g1 - gT)\n const [su52g, cu52g] = base.sincos(u5 - 2 * g)\n const [su5ψ, cu5ψ] = base.sincos(u5 + ψ)\n const [su2φ, cu2φ] = base.sincos(u2 + φ)\n const [s5, c5] = base.sincos(l + g1 + lT + gT + φ)\n const a = 58.935028 + 0.004638 * cu1 + 0.058222 * cu2\n const e = eʹ - 0.0014097 * cg1gT + 0.0003733 * cu52g +\n 0.000118 * cu3 + 0.0002408 * cl + 0.0002849 * clu2 + 0.000619 * cu4\n const w = 0.08077 * d * sg1gT + 0.02139 * d * su52g - 0.00676 * d * su3 +\n 0.0138 * d * sl + 0.01632 * d * slu2 + 0.03547 * d * su4\n const p = ϖ0 + w / eʹ\n const λʹ = μ - 0.04299 * d * su2 - 0.00789 * d * su1 - 0.06312 * d * Math.sin(ls) -\n 0.00295 * d * Math.sin(2 * ls) - 0.02231 * d * Math.sin(u5) + 0.0065 * d * su5ψ\n const i = iʹ + 0.04204 * d * cu5ψ + 0.00235 * d * c5 + 0.0036 * d * cu2φ\n const wʹ = 0.04204 * d * su5ψ + 0.00235 * d * s5 + 0.00358 * d * su2φ\n const Ω = Ωʹ + wʹ / Math.sin(iʹ)\n return this.subr(λʹ, p, e, a, Ω, i)\n}\n\nexport default {\n mimas,\n enceladus,\n tethys,\n dione,\n rhea,\n titan,\n hyperion,\n iapetus,\n positions,\n Qs\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module solardisk\n */\n/**\n * Solardisk: Chapter 29, Ephemeris for Physical Observations of the Sun.\n */\n\nimport base from './base.js'\nimport nutation from './nutation.js'\nimport solar from './solar.js'\n\n/**\n * Ephemeris returns the apparent orientation of the sun at the given jd.\n *\n * Results:\n * P: Position angle of the solar north pole.\n * B0: Heliographic latitude of the center of the solar disk.\n * L0: Heliographic longitude of the center of the solar disk.\n *\n * All results in radians.\n */\nexport function ephemeris (jd, earth) { // (jd float64, e *pp.V87Planet) (P, B0, L0 float64)\n const θ = (jd - 2398220) * 2 * Math.PI / 25.38\n const I = 7.25 * Math.PI / 180\n const K = 73.6667 * Math.PI / 180 +\n 1.3958333 * Math.PI / 180 * (jd - 2396758) / base.JulianCentury\n\n const solarPos = solar.trueVSOP87(earth, jd)\n const L = solarPos.lon\n const R = solarPos.range\n const [Δψ, Δε] = nutation.nutation(jd)\n const ε0 = nutation.meanObliquity(jd)\n const ε = ε0 + Δε\n const λ = L - 20.4898 / 3600 * Math.PI / 180 / R\n const λp = λ + Δψ\n\n const [sλK, cλK] = base.sincos(λ - K)\n const [sI, cI] = base.sincos(I)\n\n const tx = -Math.cos(λp) * Math.tan(ε)\n const ty = -cλK * Math.tan(I)\n const P = Math.atan(tx) + Math.atan(ty)\n const B0 = Math.asin(sλK * sI)\n const η = Math.atan2(-sλK * cI, -cλK)\n const L0 = base.pmod(η - θ, 2 * Math.PI)\n return [P, B0, L0]\n}\n\n/**\n * Cycle returns the jd of the start of the given synodic rotation.\n *\n * Argument c is the \"Carrington\" cycle number.\n *\n * Result is a dynamical time (not UT).\n */\nexport function cycle (c) { // (c int) (jde float64)\n const jde = 2398140.227 + 27.2752316 * c\n const m = 281.96 * Math.PI / 180 + 26.882476 * Math.PI / 180 * c\n const [s2m, c2m] = base.sincos(2 * m)\n return jde + 0.1454 * Math.sin(m) - 0.0085 * s2m - 0.0141 * c2m\n}\n\nexport default {\n ephemeris,\n cycle\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module solstice\n */\n/**\n * Solstice: Chapter 27: Equinoxes and Solstices.\n */\n\nimport base from './base.js'\nimport solar from './solar.js'\nconst { abs, cos, sin } = Math\nconst D2R = Math.PI / 180\n\n// table 27.a - for years from -1000 to +1000\nconst mc0 = [1721139.29189, 365242.13740, 0.06134, 0.00111, -0.00071]\nconst jc0 = [1721233.25401, 365241.72562, -0.05323, 0.00907, 0.00025]\nconst sc0 = [1721325.70455, 365242.49558, -0.11677, -0.00297, 0.00074]\nconst dc0 = [1721414.39987, 365242.88257, -0.00769, -0.00933, -0.00006]\n\n// table 27.b - for years from +1000 to +3000\nconst mc2 = [2451623.80984, 365242.37404, 0.05169, -0.00411, -0.00057]\nconst jc2 = [2451716.56767, 365241.62603, 0.00325, 0.00888, -0.00030]\nconst sc2 = [2451810.21715, 365242.01767, -0.11575, 0.00337, 0.00078]\nconst dc2 = [2451900.05952, 365242.74049, -0.06223, -0.00823, 0.00032]\n\n// table 27.c\nconst terms = (function () {\n const term = [\n [485, 324.96, 1934.136],\n [203, 337.23, 32964.467],\n [199, 342.08, 20.186],\n [182, 27.85, 445267.112],\n [156, 73.14, 45036.886],\n [136, 171.52, 22518.443],\n [77, 222.54, 65928.934],\n [74, 296.72, 3034.906],\n [70, 243.58, 9037.513],\n [58, 119.81, 33718.147],\n [52, 297.17, 150.678],\n [50, 21.02, 2281.226],\n [45, 247.54, 29929.562],\n [44, 325.15, 31555.956],\n [29, 60.93, 4443.417],\n [18, 155.12, 67555.328],\n [17, 288.79, 4562.452],\n [16, 198.04, 62894.029],\n [14, 199.76, 31436.921],\n [12, 95.39, 14577.848],\n [12, 287.11, 31931.756],\n [12, 320.81, 34777.259],\n [9, 227.73, 1222.114],\n [8, 15.45, 16859.074]\n ]\n return term.map((t) => {\n return {\n a: t[0],\n b: t[1],\n c: t[2]\n }\n })\n})()\n\n/**\n * March returns the JDE of the March equinox for the given year.\n *\n * Results are valid for the years -1000 to +3000.\n *\n * Accuracy is within one minute of time for the years 1951-2050.\n * @param {Number} y - (int) year\n * @returns {Number} JDE\n */\nexport function march (y) {\n if (y < 1000) {\n return eq(y, mc0)\n }\n return eq(y - 2000, mc2)\n}\n\n/**\n * June returns the JDE of the June solstice for the given year.\n *\n * Results are valid for the years -1000 to +3000.\n *\n * Accuracy is within one minute of time for the years 1951-2050.\n * @param {Number} y - (int) year\n * @returns {Number} JDE\n */\nexport function june (y) {\n if (y < 1000) {\n return eq(y, jc0)\n }\n return eq(y - 2000, jc2)\n}\n\n/**\n * September returns the JDE of the September equinox for the given year.\n *\n * Results are valid for the years -1000 to +3000.\n *\n * Accuracy is within one minute of time for the years 1951-2050.\n * @param {Number} y - (int) year\n * @returns {Number} JDE\n */\nexport function september (y) {\n if (y < 1000) {\n return eq(y, sc0)\n }\n return eq(y - 2000, sc2)\n}\n\n/**\n * December returns the JDE of the December solstice for a given year.\n *\n * Results are valid for the years -1000 to +3000.\n *\n * Accuracy is within one minute of time for the years 1951-2050.\n * @param {Number} y - (int) year\n * @returns {Number} JDE\n */\nexport function december (y) {\n if (y < 1000) {\n return eq(y, dc0)\n }\n return eq(y - 2000, dc2)\n}\n\n/**\n * Fast calculation of solstices/ equinoxes\n * Accuracy is within one minute of time for the years 1951-2050.\n *\n * @param {Number} y - (int) year\n * @param {Array} c - term from table 27.a / 27.b\n * @returns {Number} JDE\n */\nfunction eq (y, c) {\n const J0 = base.horner(y * 0.001, c)\n const T = base.J2000Century(J0)\n const W = 35999.373 * D2R * T - 2.47 * D2R\n const Δλ = 1 + 0.0334 * cos(W) + 0.0007 * cos(2 * W)\n let S = 0\n for (let i = terms.length - 1; i >= 0; i--) {\n const t = terms[i]\n S += t.a * cos((t.b + t.c * T) * D2R)\n }\n return J0 + 0.00001 * S / Δλ\n}\n\n/**\n * March2 returns a more accurate JDE of the March equinox.\n *\n * Result is accurate to one second of time.\n *\n * @param {Number} year - (int) year\n * @param {planetposition.Planet} planet - must be a V87Planet object representing Earth, obtained with\n * the package planetposition\n * @returns {Number} JDE\n */\nexport function march2 (year, planet) {\n return longitude(year, planet, 0)\n}\n\n/**\n * June2 returns a more accurate JDE of the June solstice.\n *\n * Result is accurate to one second of time.\n *\n * @param {Number} year - (int) year\n * @param {planetposition.Planet} planet - must be a V87Planet object representing Earth, obtained with\n * the package planetposition\n * @returns {Number} JDE\n */\nexport function june2 (year, planet) {\n return longitude(year, planet, Math.PI / 2)\n}\n\n/**\n * September2 returns a more accurate JDE of the September equinox.\n *\n * Result is accurate to one second of time.\n *\n * @param {Number} year - (int) year\n * @param {planetposition.Planet} planet - must be a V87Planet object representing Earth, obtained with\n * the package planetposition\n * @returns {Number} JDE\n */\nexport function september2 (year, planet) {\n return longitude(year, planet, Math.PI)\n}\n\n/**\n * December2 returns a more accurate JDE of the December solstice.\n *\n * Result is accurate to one second of time.\n *\n * @param {Number} year - (int) year\n * @param {planetposition.Planet} planet - must be a V87Planet object representing Earth, obtained with\n * the package planetposition\n * @returns {Number} JDE\n */\nexport function december2 (year, planet) {\n return longitude(year, planet, Math.PI * 3 / 2)\n}\n\n/**\n * Longitude returns the JDE for a given `year`, VSOP87 Planet `planet` at a\n * given geocentric solar longitude `lon`\n * @param {Number} year - (int)\n * @param {planetposition.Planet} planet\n * @param {Number} lon - geocentric solar longitude in radians\n * @returns {Number} JDE\n */\nexport function longitude (year, planet, lon) {\n let c\n let ct\n\n if (year < 1000) {\n ct = [mc0, jc0, sc0, dc0]\n } else {\n ct = [mc2, jc2, sc2, dc2]\n year -= 2000\n }\n\n lon = lon % (Math.PI * 2)\n\n if (lon < Math.PI / 2) {\n c = ct[0]\n } else if (lon < Math.PI) {\n c = ct[1]\n } else if (lon < Math.PI * 3 / 2) {\n c = ct[2]\n } else {\n c = ct[3]\n }\n\n return eq2(year, planet, lon, c)\n}\n\n/**\n * Accurate calculation of solstices/ equinoxes\n * Result is accurate to one second of time.\n *\n * @param {Number} year - (int) year\n * @param {planetposition.Planet} planet - vsop87 planet\n * @param {Number} lon - longitude in radians\n * @param {Array} c - term from table 27.a / 27.b\n * @returns {Number} JDE\n */\nfunction eq2 (year, planet, lon, c) {\n let J0 = base.horner(year * 0.001, c)\n\n for (;;) {\n const a = solar.apparentVSOP87(planet, J0)\n const c = 58 * sin(lon - a.lon) // (27.1) p. 180\n J0 += c\n if (abs(c) < 0.000005) {\n break\n }\n }\n\n return J0\n}\n\nexport default {\n march,\n june,\n september,\n december,\n march2,\n june2,\n september2,\n december2,\n longitude\n}\n","/**\n * @copyright 2016 commenthol\n * @license MIT\n * @module sunrise\n */\n/**\n * Sunrise: Compute rise, noon, set of the Sun for an earth observer\n */\n\n/* eslint key-spacing: 0 */\n\nimport base from './base.js'\nimport eqtime from './eqtime.js'\nimport sexa from './sexagesimal.js'\nimport solar from './solar.js'\nimport julian from './julian.js'\nimport rise from './rise.js'\n\nconst stdh0 = {\n sunrise: new sexa.Angle(true, 0, 50, 0).rad(),\n sunriseEnd: new sexa.Angle(true, 0, 18, 0).rad(),\n twilight: new sexa.Angle(true, 6, 0, 0).rad(),\n nauticalTwilight: new sexa.Angle(true, 12, 0, 0).rad(),\n night: new sexa.Angle(true, 18, 0, 0).rad(),\n goldenHour: new sexa.Angle(false, 6, 0, 0).rad()\n}\n\nconst stdh0Sunrise = (refraction) => rise.refraction(stdh0.sunrise, refraction)\nconst stdh0SunriseEnd = (refraction) => rise.refraction(stdh0.sunriseEnd, refraction)\nconst stdh0Twilight = (refraction) => rise.refraction(stdh0.twilight, refraction)\nconst stdh0NauticalTwilight = (refraction) => rise.refraction(stdh0.nauticalTwilight, refraction)\nconst stdh0Night = (refraction) => rise.refraction(stdh0.night, refraction)\nconst stdh0GoldenHour = (refraction) => rise.refraction(stdh0.goldenHour, refraction)\n\nexport class Sunrise {\n /**\n * Computes time of sunrise, sunset for a given day `date` of an observer on earth given by latitude and longitude.\n * Methods may return `undefined` instead of `julian.Calendar` for latitudes very near the poles.\n * @param {julian.Calendar} date - calendar date\n * @param {number} lat - latitude of observer in the range of (-89.6, 89.6)\n * @param {number} lon - longitude of observer (measured positively westwards, New York = 40.7° lat, 74° lon)\n * @param {number} [refraction] - optional refraction\n */\n constructor (date, lat, lon, refraction) {\n this.date = date\n this.jde = date.midnight().toJDE()\n this.lat = sexa.angleFromDeg(lat)\n this.lon = sexa.angleFromDeg(lon)\n this.refraction = refraction\n }\n\n _calcNoon (jde) {\n const etime = sexa.secFromHourAngle(eqtime.eSmart(jde))\n const delta = sexa.secFromHourAngle(this.lon)\n const time = 43200 /* noon */ + delta - etime // in seconds\n return base.pmod(time / 86400, 86400)\n }\n\n _calcRiseOrSet (jde, h0, isSet) {\n const etime = sexa.secFromHourAngle(eqtime.eSmart(jde))\n const solarDec = solar.apparentEquatorial(jde).dec\n let ha = rise.hourAngle(this.lat, h0, solarDec)\n if (isSet) ha = -ha\n const delta = sexa.secFromHourAngle(ha - this.lon)\n const time = 43200 /* noon */ - delta - etime // in seconds\n return time / 86400\n }\n\n _calcPolarDayNight (h0, isSet, step) {\n let jde = this.jde\n let t\n let failCnt = 0\n while (failCnt < 190) { // a bit more than days of half a year\n jde += step\n try {\n t = this._calcRiseOrSet(jde, h0, isSet)\n t = this._calcRiseOrSet(jde + t, h0, isSet)\n break\n } catch (e) {\n t = undefined\n failCnt++\n }\n }\n if (t === undefined) {\n return\n }\n return new julian.Calendar().fromJDE(jde + t)\n }\n\n _calc (h0, isSet) {\n let t\n const jde = this.jde\n // calc 2times for higher accuracy\n try {\n t = this._calcRiseOrSet(jde, h0, isSet)\n t = this._calcRiseOrSet(jde + t, h0, isSet)\n return new julian.Calendar().fromJDE(jde + t)\n } catch (e) {\n let step = (isSet ? -1 : 1)\n const doy = this.date.dayOfYear()\n if ( // overlap with march, september equinoxes\n (this.lat > 0 && (doy > 76 && doy < 267)) || // northern hemisphere\n (this.lat < 0 && (doy < 83 || doy > 262)) // southern hemisphere\n ) {\n step = -step\n }\n return this._calcPolarDayNight(h0, isSet, step)\n }\n }\n\n /**\n * time of solar transit\n * @return {julian.Calendar} time of noon\n */\n noon () {\n const jde = this.jde\n // calc 2times for higher accuracy\n let t = this._calcNoon(jde + this.lon / (2 * Math.PI))\n t = this._calcNoon(jde + t)\n return new julian.Calendar().fromJDE(jde + t)\n }\n\n /**\n * Solar limb appears over the easter horizon in the morning\n * @return {julian.Calendar} time of sunrise\n */\n rise () {\n return this._calc(stdh0Sunrise(this.refraction), false)\n }\n\n /**\n * @return {julian.Calendar} time of sunset\n * Solar limb disappears on the western horizon in the evening\n */\n set () {\n return this._calc(stdh0Sunrise(this.refraction), true)\n }\n\n /**\n * Solar limb is fully visible at the easter horizon\n * @return {julian.Calendar} time of sunrise end\n */\n riseEnd () {\n return this._calc(stdh0SunriseEnd(this.refraction), false)\n }\n\n /**\n * Solar limb starts disappearing on the western horizon in the evening\n * @return {julian.Calendar} time of sunset start\n */\n setStart () {\n return this._calc(stdh0SunriseEnd(this.refraction), true)\n }\n\n /**\n * Dawn, there is still enough light for objects to be distinguishable,\n * @return {julian.Calendar} time of dawn\n */\n dawn () {\n return this._calc(stdh0Twilight(this.refraction), false)\n }\n\n /**\n * Dusk, there is still enough light for objects to be distinguishable\n * Bright stars and planets are visible by naked eye\n * @return {julian.Calendar} time of dusk\n */\n dusk () {\n return this._calc(stdh0Twilight(this.refraction), true)\n }\n\n /**\n * nautical dawn - Horizon gets visible by naked eye\n * @return {julian.Calendar} time of nautical dawn\n */\n nauticalDawn () {\n return this._calc(stdh0NauticalTwilight(this.refraction), false)\n }\n\n /**\n * nautical dusk - Horizon is no longer visible by naked eye\n * @return {julian.Calendar} time of nautical dusk\n */\n nauticalDusk () {\n return this._calc(stdh0NauticalTwilight(this.refraction), true)\n }\n\n /**\n * night starts - No sunlight illumination of the sky, such no intereferance\n * with astronomical observations.\n * @return {julian.Calendar} time of start of night\n */\n nightStart () {\n return this._calc(stdh0Night(this.refraction), true)\n }\n\n /**\n * night end - Sunlight starts illumination of the sky and interferes\n * with astronomical observations.\n * @return {julian.Calendar} time of end of night\n */\n nightEnd () {\n return this._calc(stdh0Night(this.refraction), false)\n }\n\n /**\n * Start of \"golden hour\" before sunset\n * @return {julian.Calendar} time of start of golden hour\n */\n goldenHourStart () {\n return this._calc(stdh0GoldenHour(this.refraction), true)\n }\n\n /**\n * End of \"golden hour\" after sunrise\n * @return {julian.Calendar} time of end of golden hour\n */\n goldenHourEnd () {\n return this._calc(stdh0GoldenHour(this.refraction), false)\n }\n}\n\nexport default {\n Sunrise\n}\n","/**\n * @copyright 2013 Sonia Keys\n * @copyright 2016 commenthol\n * @license MIT\n * @module sundial\n */\n/**\n * Sundial: Chapter 58, Calculation of a Planar Sundial.\n */\n\nimport base from './base.js'\n\n/**\n * Point return type represents a point to be used in constructing the sundial.\n */\nfunction Point (x, y) {\n this.x = x || 0\n this.y = y || 0\n}\n\n/**\n * Line holds data to draw an hour line on the sundial.\n */\nfunction Line (hour, points) {\n this.hour = hour // 0 to 24\n this.points = points || [] // One or more points corresponding to the hour.\n}\n\nconst m = [-23.44, -20.15, -11.47, 0, 11.47, 20.15, 23.44]\n\n/**\n * General computes data for the general case of a planar sundial.\n *\n * Argument φ is geographic latitude at which the sundial will be located.\n * D is gnomonic declination, the azimuth of the perpendicular to the plane\n * of the sundial, measured from the southern meridian towards the west.\n * Argument a is the length of a straight stylus perpendicular to the plane\n * of the sundial, z is zenithal distance of the direction defined by the\n * stylus. Angles φ, D, and z are in radians. Units of stylus length a\n * are arbitrary.\n *\n * Results consist of a set of lines, a center point, u, the length of a\n * polar stylus, and ψ, the angle which the polar stylus makes with the plane\n * of the sundial. The center point, the points defining the hour lines, and\n * u are in units of a, the stylus length. ψ is in radians.\n */\nexport function general (φ, D, a, z) { // (φ, D, a, z float64) (lines []Line, center Point, u, ψ float64)\n const [sφ, cφ] = base.sincos(φ)\n const tφ = sφ / cφ\n const [sD, cD] = base.sincos(D)\n const [sz, cz] = base.sincos(z)\n const P = sφ * cz - cφ * sz * cD\n const lines = []\n for (let i = 0; i < 24; i++) {\n const l = new Line(i)\n const H = (i - 12) * 15 * Math.PI / 180\n const aH = Math.abs(H)\n const [sH, cH] = base.sincos(H)\n for (const d of m) {\n const tδ = Math.tan(d * Math.PI / 180)\n const H0 = Math.acos(-tφ * tδ)\n if (aH > H0) {\n continue // sun below horizon\n }\n const Q = sD * sz * sH + (cφ * cz + sφ * sz * cD) * cH + P * tδ\n if (Q < 0) {\n continue // sun below plane of sundial\n }\n const Nx = cD * sH - sD * (sφ * cH - cφ * tδ)\n const Ny = cz * sD * sH - (cφ * sz - sφ * cz * cD) * cH - (sφ * sz + cφ * cz * cD) * tδ\n l.points.push(new Point(a * Nx / Q, a * Ny / Q))\n }\n if (l.points.length > 0) {\n lines.push(l)\n }\n }\n const center = new Point()\n center.x = a / P * cφ * sD\n center.y = -a / P * (sφ * sz + cφ * cz * cD)\n const aP = Math.abs(P)\n const u = a / aP\n const ψ = Math.asin(aP)\n return {\n lines,\n center,\n length: u,\n angle: ψ\n }\n}\n\n/**\n * Equatorial computes data for a sundial level with the equator.\n *\n * Argument φ is geographic latitude at which the sundial will be located;\n * a is the length of a straight stylus perpendicular to the plane of the\n * sundial.\n *\n * The sundial will have two sides, north and south. Results n and s define\n * lines on the north and south sides of the sundial. Result coordinates\n * are in units of a, the stylus length.\n */\nexport function equatorial (φ, a) { // (φ, a float64) (n, s []Line)\n const tφ = Math.tan(φ)\n const n = []\n const s = []\n for (let i = 0; i < 24; i++) {\n const nl = new Line(i)\n const sl = new Line(i)\n const H = (i - 12) * 15 * Math.PI / 180\n const aH = Math.abs(H)\n const [sH, cH] = base.sincos(H)\n for (const d of m) {\n const tδ = Math.tan(d * Math.PI / 180)\n const H0 = Math.acos(-tφ * tδ)\n if (aH > H0) {\n continue\n }\n const x = -a * sH / tδ\n const yy = a * cH / tδ\n if (tδ < 0) {\n sl.points.push(new Point(x, yy))\n } else {\n nl.points.push(new Point(x, -yy))\n }\n }\n if (nl.points.length > 0) {\n n.push(nl)\n }\n if (sl.points.length > 0) {\n s.push(sl)\n }\n }\n return {\n north: n,\n south: s\n }\n}\n\n/**\n * Horizontal computes data for a horizontal sundial.\n *\n * Argument φ is geographic latitude at which the sundial will be located,\n * a is the length of a straight stylus perpendicular to the plane of the\n * sundial.\n *\n * Results consist of a set of lines, a center point, and u, the length of a\n * polar stylus. They are in units of a, the stylus length.\n */\nexport function horizontal (φ, a) { // (φ, a float64) (lines []Line, center Point, u float64)\n const [sφ, cφ] = base.sincos(φ)\n const tφ = sφ / cφ\n const lines = []\n for (let i = 0; i < 24; i++) {\n const l = new Line(i)\n const H = (i - 12) * 15 * Math.PI / 180\n const aH = Math.abs(H)\n const [sH, cH] = base.sincos(H)\n for (const d of m) {\n const tδ = Math.tan(d * Math.PI / 180)\n const H0 = Math.acos(-tφ * tδ)\n if (aH > H0) {\n continue // sun below horizon\n }\n const Q = cφ * cH + sφ * tδ\n const x = a * sH / Q\n const y = a * (sφ * cH - cφ * tδ) / Q\n l.points.push(new Point(x, y))\n }\n if (l.points.length > 0) {\n lines.push(l)\n }\n }\n const center = new Point(0, -a / tφ)\n const u = a / Math.abs(sφ)\n return {\n lines,\n center,\n length: u\n }\n}\n\n/**\n * Vertical computes data for a vertical sundial.\n *\n * Argument φ is geographic latitude at which the sundial will be located.\n * D is gnomonic declination, the azimuth of the perpendicular to the plane\n * of the sundial, measured from the southern meridian towards the west.\n * Argument a is the length of a straight stylus perpendicular to the plane\n * of the sundial.\n *\n * Results consist of a set of lines, a center point, and u, the length of a\n * polar stylus. They are in units of a, the stylus length.\n */\nexport function vertical (φ, D, a) { // (φ, D, a float64) (lines []Line, center Point, u float64)\n const [sφ, cφ] = base.sincos(φ)\n const tφ = sφ / cφ\n const [sD, cD] = base.sincos(D)\n const lines = []\n for (let i = 0; i < 24; i++) {\n const l = new Line(i)\n const H = (i - 12) * 15 * Math.PI / 180\n const aH = Math.abs(H)\n const [sH, cH] = base.sincos(H)\n for (const d of m) {\n const tδ = Math.tan(d * Math.PI / 180)\n const H0 = Math.acos(-tφ * tδ)\n if (aH > H0) {\n continue // sun below horizon\n }\n const Q = sD * sH + sφ * cD * cH - cφ * cD * tδ\n if (Q < 0) {\n continue // sun below plane of sundial\n }\n const x = a * (cD * sH - sφ * sD * cH + cφ * sD * tδ) / Q\n const y = -a * (cφ * cH + sφ * tδ) / Q\n l.points.push(new Point(x, y))\n }\n if (l.points.length > 0) {\n lines.push(l)\n }\n }\n const center = new Point()\n center.x = -a * sD / cD\n center.y = a * tφ / cD\n const u = a / Math.abs(cφ * cD)\n return {\n lines,\n center,\n length: u\n }\n}\n\nexport default {\n general,\n equatorial,\n horizontal,\n vertical\n}\n","import { julian } from 'astronomia'\nimport CalDate from 'caldate'\nimport CalEvent from './CalEvent.js'\n\nexport default class Julian extends CalEvent {\n inYear (year) {\n if (this.opts.year && this.opts.year !== year) {\n return this\n }\n const cal = new julian.CalendarJulian(year, this.opts.month, this.opts.day).toGregorian()\n const d = (new CalDate(cal)).setOffset(this.offset)\n this.dates.push(d)\n return this\n }\n}\n","import CalEvent from './CalEvent.js'\nimport CalDate from 'caldate'\n\n/**\n * Mapper class for mapped calenders like hijri and hebrew\n * `this.calender` needs to be set in child classes\n */\nexport default class CalEventMap extends CalEvent {\n constructor (opts) {\n super(opts)\n this.calendar = {}\n }\n\n inYear (year) {\n if (!(this.calendar[year] && this.calendar[year + 1] && this.calendar[year - 1])) {\n return this\n }\n\n for (let y = year - 1; y <= year + 1; y++) {\n // resolve date in `calendar` as gregorian date\n const firstDays = this.calendar[y][this.opts.month - 1]\n // firstDays `[M, D, diffYear, ...] | null`\n if (!firstDays) {\n continue\n }\n for (let i = 0; i < firstDays.length; i += 3) {\n if (this.opts.year) {\n const calYear = this.calendar.year + firstDays[i + 2]\n if (this.opts.year !== calYear) {\n continue\n }\n }\n const d = (new CalDate({\n year: y,\n month: firstDays[i] + 1,\n day: firstDays[i + 1]\n })).setOffset(this.opts.day - 1)\n\n if (d.year === year) {\n this.dates.push(d)\n }\n }\n }\n return this\n }\n}\n","/*eslint-disable*/\nexport const calendar ={1968:[null,null,null,null,null,null,[8,23,0],[9,23,0],[10,22,0],[11,22,0]],1969:[[2,20,0],[3,19,0],[4,18,0],[5,17,0],[6,16,0],[7,15,0],[8,13,1],[9,13,1],[10,11,1],[11,10,1],[0,20,0],[1,19,0],[1,19,0]],1970:[[3,7,1],[4,7,1],[5,5,1],[6,5,1],[7,3,1],[8,2,1],[9,1,2],[9,31,2],[10,29,2],[11,29,2],[0,8,1],[1,7,1],[2,9,1]],1971:[[2,27,2],[3,26,2],[4,25,2],[5,24,2],[6,23,2],[7,22,2],[8,20,3],[9,20,3],[10,19,3],[11,19,3],[0,27,2],[1,26,2],[1,26,2]],1972:[[2,16,3],[3,15,3],[4,14,3],[5,13,3],[6,12,3],[7,11,3],[8,9,4],[9,9,4],[10,7,4],[11,6,4],[0,17,3],[1,16,3],[1,16,3]],1973:[[3,3,4],[4,3,4],[5,1,4],[6,1,4],[6,30,4],[7,29,4],[8,27,5],[9,27,5],[10,26,5],[11,26,5],[0,4,4],[1,3,4],[2,5,4]],1974:[[2,24,5],[3,23,5],[4,22,5],[5,21,5],[6,20,5],[7,19,5],[8,17,6],[9,17,6],[10,15,6],[11,15,6],[0,24,5],[1,23,5],[1,23,5]],1975:[[2,13,6],[3,12,6],[4,11,6],[5,10,6],[6,9,6],[7,8,6],[8,6,7],[9,6,7],[10,5,7],[11,5,7],[0,13,6],[1,12,6],[1,12,6]],1976:[[3,1,7],[4,1,7],[4,30,7],[5,29,7],[6,28,7],[7,27,7],[8,25,8],[9,25,8],[10,23,8],[11,22,8],[0,3,7],[1,2,7],[2,3,7]],1977:[[2,20,8],[3,19,8],[4,18,8],[5,17,8],[6,16,8],[7,15,8],[8,13,9],[9,13,9],[10,11,9],[11,11,9],[0,20,8],[1,19,8],[1,19,8]],1978:[[3,8,9],[4,8,9],[5,6,9],[6,6,9],[7,4,9],[8,3,9],[9,2,10],[10,1,10],[11,1,10],[11,31,10],[0,9,9],[1,8,9],[2,10,9]],1979:[[2,29,10],[3,28,10],[4,27,10],[5,26,10],[6,25,10],[7,24,10],[8,22,11],[9,22,11],[10,21,11],[11,21,11],[0,29,10],[1,28,10],[1,28,10]],1980:[[2,18,11],[3,17,11],[4,16,11],[5,15,11],[6,14,11],[7,13,11],[8,11,12],[9,11,12],[10,9,12],[11,8,12],[0,19,11],[1,18,11],[1,18,11]],1981:[[3,5,12],[4,5,12],[5,3,12],[6,3,12],[7,1,12],[7,31,12],[8,29,13],[9,29,13],[10,27,13],[11,27,13],[0,6,12],[1,5,12],[2,7,12]],1982:[[2,25,13],[3,24,13],[4,23,13],[5,22,13],[6,21,13],[7,20,13],[8,18,14],[9,18,14],[10,17,14],[11,17,14],[0,25,13],[1,24,13],[1,24,13]],1983:[[2,15,14],[3,14,14],[4,13,14],[5,12,14],[6,11,14],[7,10,14],[8,8,15],[9,8,15],[10,7,15],[11,7,15],[0,15,14],[1,14,14],[1,14,14]],1984:[[3,3,15],[4,3,15],[5,1,15],[6,1,15],[6,30,15],[7,29,15],[8,27,16],[9,27,16],[10,25,16],[11,25,16],[0,5,15],[1,4,15],[2,5,15]],1985:[[2,23,16],[3,22,16],[4,21,16],[5,20,16],[6,19,16],[7,18,16],[8,16,17],[9,16,17],[10,14,17],[11,13,17],[0,23,16],[1,22,16],[1,22,16]],1986:[[3,10,17],[4,10,17],[5,8,17],[6,8,17],[7,6,17],[8,5,17],[9,4,18],[10,3,18],[11,3,18],null,[0,11,17],[1,10,17],[2,12,17]],1987:[[2,31,18],[3,30,18],[4,29,18],[5,28,18],[6,27,18],[7,26,18],[8,24,19],[9,24,19],[10,22,19],[0,2,18,11,22,19],[0,31,18],[2,2,18],[2,2,18]],1988:[[2,19,19],[3,18,19],[4,17,19],[5,16,19],[6,15,19],[7,14,19],[8,12,20],[9,12,20],[10,10,20],[11,9,20],[0,20,19],[1,19,19],[1,19,19]],1989:[[3,6,20],[4,6,20],[5,4,20],[6,4,20],[7,2,20],[8,1,20],[8,30,21],[9,30,21],[10,29,21],[11,29,21],[0,7,20],[1,6,20],[2,8,20]],1990:[[2,27,21],[3,26,21],[4,25,21],[5,24,21],[6,23,21],[7,22,21],[8,20,22],[9,20,22],[10,18,22],[11,18,22],[0,27,21],[1,26,21],[1,26,21]],1991:[[2,16,22],[3,15,22],[4,14,22],[5,13,22],[6,12,22],[7,11,22],[8,9,23],[9,9,23],[10,8,23],[11,8,23],[0,16,22],[1,15,22],[1,15,22]],1992:[[3,4,23],[4,4,23],[5,2,23],[6,2,23],[6,31,23],[7,30,23],[8,28,24],[9,28,24],[10,26,24],[11,25,24],[0,6,23],[1,5,23],[2,6,23]],1993:[[2,23,24],[3,22,24],[4,21,24],[5,20,24],[6,19,24],[7,18,24],[8,16,25],[9,16,25],[10,15,25],[11,15,25],[0,23,24],[1,22,24],[1,22,24]],1994:[[2,13,25],[3,12,25],[4,11,25],[5,10,25],[6,9,25],[7,8,25],[8,6,26],[9,6,26],[10,4,26],[11,4,26],[0,13,25],[1,12,25],[1,12,25]],1995:[[3,1,26],[4,1,26],[4,30,26],[5,29,26],[6,28,26],[7,27,26],[8,25,27],[9,25,27],[10,24,27],[11,24,27],[0,2,26],[1,1,26],[2,3,26]],1996:[[2,21,27],[3,20,27],[4,19,27],[5,18,27],[6,17,27],[7,16,27],[8,14,28],[9,14,28],[10,12,28],[11,11,28],[0,22,27],[1,21,27],[1,21,27]],1997:[[3,8,28],[4,8,28],[5,6,28],[6,6,28],[7,4,28],[8,3,28],[9,2,29],[10,1,29],[10,30,29],[11,30,29],[0,9,28],[1,8,28],[2,10,28]],1998:[[2,28,29],[3,27,29],[4,26,29],[5,25,29],[6,24,29],[7,23,29],[8,21,30],[9,21,30],[10,20,30],[11,20,30],[0,28,29],[1,27,29],[1,27,29]],1999:[[2,18,30],[3,17,30],[4,16,30],[5,15,30],[6,14,30],[7,13,30],[8,11,31],[9,11,31],[10,10,31],[11,10,31],[0,18,30],[1,17,30],[1,17,30]],2000:[[3,6,31],[4,6,31],[5,4,31],[6,4,31],[7,2,31],[8,1,31],[8,30,32],[9,30,32],[10,28,32],[11,27,32],[0,8,31],[1,7,31],[2,8,31]],2001:[[2,25,32],[3,24,32],[4,23,32],[5,22,32],[6,21,32],[7,20,32],[8,18,33],[9,18,33],[10,16,33],[11,16,33],[0,25,32],[1,24,32],[1,24,32]],2002:[[2,14,33],[3,13,33],[4,12,33],[5,11,33],[6,10,33],[7,9,33],[8,7,34],[9,7,34],[10,6,34],[11,6,34],[0,14,33],[1,13,33],[1,13,33]],2003:[[3,3,34],[4,3,34],[5,1,34],[6,1,34],[6,30,34],[7,29,34],[8,27,35],[9,27,35],[10,26,35],[11,26,35],[0,4,34],[1,3,34],[2,5,34]],2004:[[2,23,35],[3,22,35],[4,21,35],[5,20,35],[6,19,35],[7,18,35],[8,16,36],[9,16,36],[10,14,36],[11,13,36],[0,24,35],[1,23,35],[1,23,35]],2005:[[3,10,36],[4,10,36],[5,8,36],[6,8,36],[7,6,36],[8,5,36],[9,4,37],[10,3,37],[11,2,37],null,[0,11,36],[1,10,36],[2,12,36]],2006:[[2,30,37],[3,29,37],[4,28,37],[5,27,37],[6,26,37],[7,25,37],[8,23,38],[9,23,38],[10,22,38],[0,1,37,11,22,38],[0,30,37],[2,1,37],[2,1,37]],2007:[[2,20,38],[3,19,38],[4,18,38],[5,17,38],[6,16,38],[7,15,38],[8,13,39],[9,13,39],[10,11,39],[11,10,39],[0,20,38],[1,19,38],[1,19,38]],2008:[[3,6,39],[4,6,39],[5,4,39],[6,4,39],[7,2,39],[8,1,39],[8,30,40],[9,30,40],[10,28,40],[11,28,40],[0,8,39],[1,7,39],[2,8,39]],2009:[[2,26,40],[3,25,40],[4,24,40],[5,23,40],[6,22,40],[7,21,40],[8,19,41],[9,19,41],[10,18,41],[11,18,41],[0,26,40],[1,25,40],[1,25,40]],2010:[[2,16,41],[3,15,41],[4,14,41],[5,13,41],[6,12,41],[7,11,41],[8,9,42],[9,9,42],[10,8,42],[11,8,42],[0,16,41],[1,15,41],[1,15,41]],2011:[[3,5,42],[4,5,42],[5,3,42],[6,3,42],[7,1,42],[7,31,42],[8,29,43],[9,29,43],[10,27,43],[11,27,43],[0,6,42],[1,5,42],[2,7,42]],2012:[[2,24,43],[3,23,43],[4,22,43],[5,21,43],[6,20,43],[7,19,43],[8,17,44],[9,17,44],[10,15,44],[11,14,44],[0,25,43],[1,24,43],[1,24,43]],2013:[[2,12,44],[3,11,44],[4,10,44],[5,9,44],[6,8,44],[7,7,44],[8,5,45],[9,5,45],[10,4,45],[11,4,45],[0,12,44],[1,11,44],[1,11,44]],2014:[[3,1,45],[4,1,45],[4,30,45],[5,29,45],[6,28,45],[7,27,45],[8,25,46],[9,25,46],[10,23,46],[11,23,46],[0,2,45],[1,1,45],[2,3,45]],2015:[[2,21,46],[3,20,46],[4,19,46],[5,18,46],[6,17,46],[7,16,46],[8,14,47],[9,14,47],[10,13,47],[11,13,47],[0,21,46],[1,20,46],[1,20,46]],2016:[[3,9,47],[4,9,47],[5,7,47],[6,7,47],[7,5,47],[8,4,47],[9,3,48],[10,2,48],[11,1,48],[11,30,48],[0,11,47],[1,10,47],[2,11,47]],2017:[[2,28,48],[3,27,48],[4,26,48],[5,25,48],[6,24,48],[7,23,48],[8,21,49],[9,21,49],[10,19,49],[11,19,49],[0,28,48],[1,27,48],[1,27,48]],2018:[[2,17,49],[3,16,49],[4,15,49],[5,14,49],[6,13,49],[7,12,49],[8,10,50],[9,10,50],[10,9,50],[11,9,50],[0,17,49],[1,16,49],[1,16,49]],2019:[[3,6,50],[4,6,50],[5,4,50],[6,4,50],[7,2,50],[8,1,50],[8,30,51],[9,30,51],[10,29,51],[11,29,51],[0,7,50],[1,6,50],[2,8,50]],2020:[[2,26,51],[3,25,51],[4,24,51],[5,23,51],[6,22,51],[7,21,51],[8,19,52],[9,19,52],[10,17,52],[11,16,52],[0,27,51],[1,26,51],[1,26,51]],2021:[[2,14,52],[3,13,52],[4,12,52],[5,11,52],[6,10,52],[7,9,52],[8,7,53],[9,7,53],[10,5,53],[11,5,53],[0,14,52],[1,13,52],[1,13,52]],2022:[[3,2,53],[4,2,53],[4,31,53],[5,30,53],[6,29,53],[7,28,53],[8,26,54],[9,26,54],[10,25,54],[11,25,54],[0,3,53],[1,2,53],[2,4,53]],2023:[[2,23,54],[3,22,54],[4,21,54],[5,20,54],[6,19,54],[7,18,54],[8,16,55],[9,16,55],[10,14,55],[11,13,55],[0,23,54],[1,22,54],[1,22,54]],2024:[[3,9,55],[4,9,55],[5,7,55],[6,7,55],[7,5,55],[8,4,55],[9,3,56],[10,2,56],[11,2,56],null,[0,11,55],[1,10,55],[2,11,55]],2025:[[2,30,56],[3,29,56],[4,28,56],[5,27,56],[6,26,56],[7,25,56],[8,23,57],[9,23,57],[10,21,57],[0,1,56,11,21,57],[0,30,56],[2,1,56],[2,1,56]],2026:[[2,19,57],[3,18,57],[4,17,57],[5,16,57],[6,15,57],[7,14,57],[8,12,58],[9,12,58],[10,11,58],[11,11,58],[0,19,57],[1,18,57],[1,18,57]],2027:[[3,8,58],[4,8,58],[5,6,58],[6,6,58],[7,4,58],[8,3,58],[9,2,59],[10,1,59],[11,1,59],[11,31,59],[0,9,58],[1,8,58],[2,10,58]],2028:[[2,28,59],[3,27,59],[4,26,59],[5,25,59],[6,24,59],[7,23,59],[8,21,60],[9,21,60],[10,19,60],[11,19,60],[0,29,59],[1,28,59],[1,28,59]],2029:[[2,17,60],[3,16,60],[4,15,60],[5,14,60],[6,13,60],[7,12,60],[8,10,61],[9,10,61],[10,8,61],[11,7,61],[0,17,60],[1,16,60],[1,16,60]],2030:[[3,4,61],[4,4,61],[5,2,61],[6,2,61],[6,31,61],[7,30,61],[8,28,62],[9,28,62],[10,27,62],[11,27,62],[0,5,61],[1,4,61],[2,6,61]],2031:[[2,25,62],[3,24,62],[4,23,62],[5,22,62],[6,21,62],[7,20,62],[8,18,63],[9,18,63],[10,16,63],[11,16,63],[0,25,62],[1,24,62],[1,24,62]],2032:[[2,13,63],[3,12,63],[4,11,63],[5,10,63],[6,9,63],[7,8,63],[8,6,64],[9,6,64],[10,4,64],[11,3,64],[0,14,63],[1,13,63],[1,13,63]],2033:[[2,31,64],[3,30,64],[4,29,64],[5,28,64],[6,27,64],[7,26,64],[8,24,65],[9,24,65],[10,23,65],[11,23,65],[0,1,64],[0,31,64],[2,2,64]],2034:[[2,21,65],[3,20,65],[4,19,65],[5,18,65],[6,17,65],[7,16,65],[8,14,66],[9,14,66],[10,13,66],[11,13,66],[0,21,65],[1,20,65],[1,20,65]],2035:[[3,10,66],[4,10,66],[5,8,66],[6,8,66],[7,6,66],[8,5,66],[9,4,67],[10,3,67],[11,2,67],null,[0,11,66],[1,10,66],[2,12,66]],2036:[[2,29,67],[3,28,67],[4,27,67],[5,26,67],[6,25,67],[7,24,67],[8,22,68],[9,22,68],[10,20,68],[0,1,67,11,19,68],[0,30,67],[1,29,67],[1,29,67]],2037:[[2,17,68],[3,16,68],[4,15,68],[5,14,68],[6,13,68],[7,12,68],[8,10,69],[9,10,69],[10,9,69],[11,9,69],[0,17,68],[1,16,68],[1,16,68]],2038:[[3,6,69],[4,6,69],[5,4,69],[6,4,69],[7,2,69],[8,1,69],[8,30,70],[9,30,70],[10,28,70],[11,28,70],[0,7,69],[1,6,69],[2,8,69]],2039:[[2,26,70],[3,25,70],[4,24,70],[5,23,70],[6,22,70],[7,21,70],[8,19,71],[9,19,71],[10,18,71],[11,18,71],[0,26,70],[1,25,70],[1,25,70]],2040:[[2,15,71],[3,14,71],[4,13,71],[5,12,71],[6,11,71],[7,10,71],[8,8,72],[9,8,72],[10,6,72],[11,5,72],[0,16,71],[1,15,71],[1,15,71]],2041:[[3,2,72],[4,2,72],[4,31,72],[5,30,72],[6,29,72],[7,28,72],[8,26,73],[9,26,73],[10,24,73],[11,24,73],[0,3,72],[1,2,72],[2,4,72]],2042:[[2,22,73],[3,21,73],[4,20,73],[5,19,73],[6,18,73],[7,17,73],[8,15,74],[9,15,74],[10,14,74],[11,14,74],[0,22,73],[1,21,73],[1,21,73]],2043:[[3,11,74],[4,11,74],[5,9,74],[6,9,74],[7,7,74],[8,6,74],[9,5,75],[10,4,75],[11,3,75],null,[0,12,74],[1,11,74],[2,13,74]],2044:[[2,29,75],[3,28,75],[4,27,75],[5,26,75],[6,25,75],[7,24,75],[8,22,76],[9,22,76],[10,21,76],[0,1,75,11,21,76],[0,30,75],[1,29,75],[1,29,75]],2045:[[2,19,76],[3,18,76],[4,17,76],[5,16,76],[6,15,76],[7,14,76],[8,12,77],[9,12,77],[10,10,77],[11,10,77],[0,19,76],[1,18,76],[1,18,76]],2046:[[3,7,77],[4,7,77],[5,5,77],[6,5,77],[7,3,77],[8,2,77],[9,1,78],[9,31,78],[10,30,78],[11,30,78],[0,8,77],[1,7,77],[2,9,77]],2047:[[2,28,78],[3,27,78],[4,26,78],[5,25,78],[6,24,78],[7,23,78],[8,21,79],[9,21,79],[10,19,79],[11,18,79],[0,28,78],[1,27,78],[1,27,78]],2048:[[2,15,79],[3,14,79],[4,13,79],[5,12,79],[6,11,79],[7,10,79],[8,8,80],[9,8,80],[10,6,80],[11,6,80],[0,16,79],[1,15,79],[1,15,79]],2049:[[3,3,80],[4,3,80],[5,1,80],[6,1,80],[6,30,80],[7,29,80],[8,27,81],[9,27,81],[10,26,81],[11,26,81],[0,4,80],[1,3,80],[2,5,80]],2050:[[2,24,81],[3,23,81],[4,22,81],[5,21,81],[6,20,81],[7,19,81],[8,17,82],[9,17,82],[10,16,82],[11,16,82],[0,24,81],[1,23,81],[1,23,81]],2051:[[2,14,82],[3,13,82],[4,12,82],[5,11,82],[6,10,82],[7,9,82],[8,7,83],[9,7,83],[10,5,83],[11,4,83],[0,14,82],[1,13,82],[1,13,82]],2052:[[2,31,83],[3,30,83],[4,29,83],[5,28,83],[6,27,83],[7,26,83],[8,24,84],[9,24,84],[10,22,84],[11,22,84],[0,2,83],[1,1,83],[2,2,83]],2053:[[2,20,84],[3,19,84],[4,18,84],[5,17,84],[6,16,84],[7,15,84],[8,13,85],[9,13,85],[10,12,85],[11,12,85],[0,20,84],[1,19,84],[1,19,84]],2054:[[3,9,85],[4,9,85],[5,7,85],[6,7,85],[7,5,85],[8,4,85],[9,3,86],[10,2,86],[11,2,86],null,[0,10,85],[1,9,85],[2,11,85]],2055:[[2,30,86],[3,29,86],[4,28,86],[5,27,86],[6,26,86],[7,25,86],[8,23,87],[9,23,87],[10,21,87],[0,1,86,11,21,87],[0,30,86],[2,1,86],[2,1,86]],2056:[[2,18,87],[3,17,87],[4,16,87],[5,15,87],[6,14,87],[7,13,87],[8,11,88],[9,11,88],[10,9,88],[11,8,88],[0,19,87],[1,18,87],[1,18,87]],2057:[[3,5,88],[4,5,88],[5,3,88],[6,3,88],[7,1,88],[7,31,88],[8,29,89],[9,29,89],[10,28,89],[11,28,89],[0,6,88],[1,5,88],[2,7,88]],2058:[[2,26,89],[3,25,89],[4,24,89],[5,23,89],[6,22,89],[7,21,89],[8,19,90],[9,19,90],[10,17,90],[11,17,90],[0,26,89],[1,25,89],[1,25,89]],2059:[[2,15,90],[3,14,90],[4,13,90],[5,12,90],[6,11,90],[7,10,90],[8,8,91],[9,8,91],[10,6,91],[11,5,91],[0,15,90],[1,14,90],[1,14,90]],2060:[[3,1,91],[4,1,91],[4,30,91],[5,29,91],[6,28,91],[7,27,91],[8,25,92],[9,25,92],[10,24,92],[11,24,92],[0,3,91],[1,2,91],[2,3,91]],2061:[[2,22,92],[3,21,92],[4,20,92],[5,19,92],[6,18,92],[7,17,92],[8,15,93],[9,15,93],[10,14,93],[11,14,93],[0,22,92],[1,21,92],[1,21,92]],2062:[[3,11,93],[4,11,93],[5,9,93],[6,9,93],[7,7,93],[8,6,93],[9,5,94],[10,4,94],[11,3,94],null,[0,12,93],[1,11,93],[2,13,93]],2063:[[2,31,94],[3,30,94],[4,29,94],[5,28,94],[6,27,94],[7,26,94],[8,24,95],[9,24,95],[10,22,95],[0,2,94,11,21,95],[0,31,94],[2,2,94],[2,2,94]],2064:[[2,18,95],[3,17,95],[4,16,95],[5,15,95],[6,14,95],[7,13,95],[8,11,96],[9,11,96],[10,10,96],[11,10,96],[0,19,95],[1,18,95],[1,18,95]],2065:[[3,7,96],[4,7,96],[5,5,96],[6,5,96],[7,3,96],[8,2,96],[9,1,97],[9,31,97],[10,29,97],[11,29,97],[0,8,96],[1,7,96],[2,9,96]],2066:[[2,27,97],[3,26,97],[4,25,97],[5,24,97],[6,23,97],[7,22,97],[8,20,98],[9,20,98],[10,19,98],[11,19,98],[0,27,97],[1,26,97],[1,26,97]],2067:[[2,17,98],[3,16,98],[4,15,98],[5,14,98],[6,13,98],[7,12,98],[8,10,99],[9,10,99],[10,8,99],[11,7,99],[0,17,98],[1,16,98],[1,16,98]],2068:[[3,3,99],[4,3,99],[5,1,99],[6,1,99],[6,30,99],[7,29,99],[8,27,100],[9,27,100],[10,25,100],[11,25,100],[0,5,99],[1,4,99],[2,5,99]],2069:[[2,23,100],[3,22,100],[4,21,100],[5,20,100],[6,19,100],[7,18,100],[8,16,101],[9,16,101],[10,15,101],[11,15,101],[0,23,100],[1,22,100],[1,22,100]],2070:[[2,13,101],[3,12,101],[4,11,101],[5,10,101],[6,9,101],[7,8,101],[8,6,102],[9,6,102],[10,4,102],[11,3,102],[0,13,101],[1,12,101],[1,12,101]],2071:[[2,31,102],[3,30,102],[4,29,102],[5,28,102],[6,27,102],[7,26,102],[8,24,103],[9,24,103],[10,23,103],[11,23,103],[0,1,102],[0,31,102],[2,2,102]],2072:[[2,20,103],[3,19,103],[4,18,103],[5,17,103],[6,16,103],[7,15,103],[8,13,104],[9,13,104],[10,11,104],[11,11,104],[0,21,103],[1,20,103],[1,20,103]],2073:[[3,8,104],[4,8,104],[5,6,104],[6,6,104],[7,4,104],[8,3,104],[9,2,105],[10,1,105],[11,1,105],[11,31,105],[0,9,104],[1,8,104],[2,10,104]],2074:[[2,29,105],[3,28,105],[4,27,105],[5,26,105],[6,25,105],[7,24,105],[8,22,106],[9,22,106],[10,20,106],[11,19,106],[0,29,105],[1,28,105],[1,28,105]],2075:[[2,17,106],[3,16,106],[4,15,106],[5,14,106],[6,13,106],[7,12,106],[8,10,107],[9,10,107],[10,8,107],[11,8,107],[0,17,106],[1,16,106],[1,16,106]],2076:[[3,4,107],[4,4,107],[5,2,107],[6,2,107],[6,31,107],[7,30,107],[8,28,108],[9,28,108],[10,27,108],[11,27,108],[0,6,107],[1,5,107],[2,6,107]],2077:[[2,25,108],[3,24,108],[4,23,108],[5,22,108],[6,21,108],[7,20,108],[8,18,109],[9,18,109],[10,17,109],[11,17,109],[0,25,108],[1,24,108],[1,24,108]],2078:[[2,15,109],[3,14,109],[4,13,109],[5,12,109],[6,11,109],[7,10,109],[8,8,110],[9,8,110],[10,6,110],[11,5,110],[0,15,109],[1,14,109],[1,14,109]],2079:[[3,2,110],[4,2,110],[4,31,110],[5,30,110],[6,29,110],[7,28,110],[8,26,111],[9,26,111],[10,24,111],[11,24,111],[0,3,110],[1,2,110],[2,4,110]],2080:[[2,21,111],[3,20,111],[4,19,111],[5,18,111],[6,17,111],[7,16,111],[8,14,112],[9,14,112],[10,13,112],[11,13,112],[0,22,111],[1,21,111],[1,21,111]],2081:[[3,10,112],[4,10,112],[5,8,112],[6,8,112],[7,6,112],[8,5,112],[9,4,113],[10,3,113],[11,3,113],null,[0,11,112],[1,10,112],[2,12,112]],2082:[[2,31,113],[3,30,113],[4,29,113],[5,28,113],[6,27,113],[7,26,113],[8,24,114],[9,24,114],[10,22,114],[0,2,113,11,22,114],[0,31,113],[2,2,113],[2,2,113]],2083:[[2,20,114],[3,19,114],[4,18,114],[5,17,114],[6,16,114],[7,15,114],[8,13,115],[9,13,115],[10,11,115],[11,10,115],[0,20,114],[1,19,114],[1,19,114]],2084:[[3,6,115],[4,6,115],[5,4,115],[6,4,115],[7,2,115],[8,1,115],[8,30,116],[9,30,116],[10,29,116],[11,29,116],[0,8,115],[1,7,115],[2,8,115]],2085:[[2,27,116],[3,26,116],[4,25,116],[5,24,116],[6,23,116],[7,22,116],[8,20,117],[9,20,117],[10,18,117],[11,18,117],[0,27,116],[1,26,116],[1,26,116]],2086:[[2,16,117],[3,15,117],[4,14,117],[5,13,117],[6,12,117],[7,11,117],[8,9,118],[9,9,118],[10,7,118],[11,6,118],[0,16,117],[1,15,117],[1,15,117]],2087:[[3,3,118],[4,3,118],[5,1,118],[6,1,118],[6,30,118],[7,29,118],[8,27,119],[9,27,119],[10,26,119],[11,26,119],[0,4,118],[1,3,118],[2,5,118]],2088:[[2,23,119],[3,22,119],[4,21,119],[5,20,119],[6,19,119],[7,18,119],[8,16,120],[9,16,120],[10,14,120],[11,14,120],[0,24,119],[1,23,119],[1,23,119]],2089:[[2,12,120],[3,11,120],[4,10,120],[5,9,120],[6,8,120],[7,7,120],[8,5,121],[9,5,121],[10,4,121],[11,4,121],[0,12,120],[1,11,120],[1,11,120]],2090:[[3,1,121],[4,1,121],[4,30,121],[5,29,121],[6,28,121],[7,27,121],[8,25,122],[9,25,122],[10,23,122],[11,22,122],[0,2,121],[1,1,121],[2,3,121]],2091:[[2,20,122],[3,19,122],[4,18,122],[5,17,122],[6,16,122],[7,15,122],[8,13,123],[9,13,123],[10,12,123],[11,12,123],[0,20,122],[1,19,122],[1,19,122]],2092:[[3,8,123],[4,8,123],[5,6,123],[6,6,123],[7,4,123],[8,3,123],[9,2,124],[10,1,124],[10,30,124],[11,30,124],[0,10,123],[1,9,123],[2,10,123]],2093:[[2,28,124],[3,27,124],[4,26,124],[5,25,124],[6,24,124],[7,23,124],[8,21,125],[9,21,125],[10,20,125],[11,20,125],[0,28,124],[1,27,124],[1,27,124]],2094:[[2,18,125],[3,17,125],[4,16,125],[5,15,125],[6,14,125],[7,13,125],[8,11,126],[9,11,126],[10,9,126],[11,8,126],[0,18,125],[1,17,125],[1,17,125]],2095:[[3,5,126],[4,5,126],[5,3,126],[6,3,126],[7,1,126],[7,31,126],[8,29,127],[9,29,127],[10,27,127],[11,27,127],[0,6,126],[1,5,126],[2,7,126]],2096:[[2,24,127],[3,23,127],[4,22,127],[5,21,127],[6,20,127],[7,19,127],[8,17,128],[9,17,128],[10,16,128],[11,16,128],[0,25,127],[1,24,127],[1,24,127]],2097:[[2,14,128],[3,13,128],[4,12,128],[5,11,128],[6,10,128],[7,9,128],[8,7,129],[9,7,129],[10,6,129],[11,6,129],[0,14,128],[1,13,128],[1,13,128]],2098:[[3,3,129],[4,3,129],[5,1,129],[6,1,129],[6,30,129],[7,29,129],[8,27,130],[9,27,130],[10,25,130],[11,24,130],[0,4,129],[1,3,129],[2,5,129]],2099:[[2,22,130],[3,21,130],[4,20,130],[5,19,130],[6,18,130],[7,17,130],[8,15,131],[9,15,131],[10,13,131],[11,13,131],[0,22,130],[1,21,130],[1,21,130]],2100:[[3,10,131],[4,10,131],[5,8,131],[6,8,131],[7,6,131],[8,5,131],null,null,null,null,[0,11,131],[1,10,131],[2,12,131]],months:13,year:5729}","import CalDate from 'caldate'\nimport CalEventMap from './CalEventMap.js'\nimport { calendar } from './internal/hebrew-calendar.js'\n\nexport default class Hebrew extends CalEventMap {\n constructor (opts) {\n super(opts)\n this.calendar = calendar\n }\n\n get (timezone) {\n const arr = this.dates.map((date) => {\n const cdate = new CalDate(date)\n const o = {\n date: cdate.toString() + ' -0600',\n start: cdate.setOffset(-6, 'h').toTimezone(timezone),\n end: cdate.toEndDate().toTimezone(timezone)\n }\n this._addSubstitute(date, o)\n return o\n })\n return arr\n }\n}\n","/*eslint-disable*/\nexport const calendar ={1969:[[2,19,0],[3,18,0],[4,17,0],[5,16,0],[6,15,0],[7,14,0],[8,12,0],[9,12,0],[10,10,0],[11,10,0]],1970:[[2,9,1],[3,8,1],[4,7,1],[5,6,1],[6,5,1],[7,4,1],[8,2,1],[9,2,1],[10,1,1],[10,30,1],[0,8,0,11,30,1],[1,7,0]],1971:[[1,26,2],[2,28,2],[3,26,2],[4,26,2],[5,24,2],[6,24,2],[7,22,2],[8,21,2],[9,20,2],[10,19,2],[11,18,2],[0,28,1]],1972:[[1,16,3],[2,16,3],[3,14,3],[4,14,3],[5,12,3],[6,12,3],[7,10,3],[8,9,3],[9,8,3],[10,7,3],[11,6,3],[0,17,2]],1973:[[1,4,4],[2,6,4],[3,4,4],[4,4,4],[5,2,4],[6,1,4],[6,30,4],[7,29,4],[8,27,4],[9,27,4],[10,25,4],[0,5,3,11,25,4]],1974:[[0,24,5],[1,23,5],[2,24,5],[3,23,5],[4,22,5],[5,21,5],[6,20,5],[7,19,5],[8,17,5],[9,16,5],[10,15,5],[11,15,5]],1975:[[0,13,6],[1,12,6],[2,13,6],[3,12,6],[4,12,6],[5,10,6],[6,10,6],[7,8,6],[8,6,6],[9,6,6],[10,4,6],[11,4,6]],1976:[[0,2,7,11,22,8],[1,1,7],[2,1,7],[2,31,7],[3,30,7],[4,30,7],[5,28,7],[6,28,7],[7,26,7],[8,24,7],[9,24,7],[10,22,7]],1977:[[11,11,9],[0,20,8],[1,19,8],[2,20,8],[3,19,8],[4,19,8],[5,17,8],[6,17,8],[7,15,8],[8,14,8],[9,13,8],[10,12,8]],1978:[[11,1,10],[0,10,9,11,30,10],[1,8,9],[2,10,9],[3,8,9],[4,8,9],[5,6,9],[6,6,9],[7,5,9],[8,3,9],[9,3,9],[10,1,9]],1979:[[10,20,11],[11,20,11],[0,29,10],[1,27,10],[2,29,10],[3,27,10],[4,27,10],[5,25,10],[6,25,10],[7,23,10],[8,22,10],[9,22,10]],1980:[[10,9,12],[11,8,12],[0,19,11],[1,17,11],[2,18,11],[3,16,11],[4,15,11],[5,14,11],[6,13,11],[7,12,11],[8,10,11],[9,10,11]],1981:[[9,28,13],[10,27,13],[0,7,12,11,27,13],[1,5,12],[2,7,12],[3,5,12],[4,5,12],[5,3,12],[6,2,12],[7,1,12],[7,30,12],[8,29,12]],1982:[[9,18,14],[10,16,14],[11,16,14],[0,26,13],[1,24,13],[2,26,13],[3,24,13],[4,24,13],[5,22,13],[6,21,13],[7,20,13],[8,18,13]],1983:[[9,7,15],[10,5,15],[11,5,15],[0,15,14],[1,14,14],[2,15,14],[3,14,14],[4,13,14],[5,12,14],[6,11,14],[7,9,14],[8,8,14]],1984:[[8,26,16],[9,25,16],[10,23,16],[0,4,15,11,23,16],[1,2,15],[2,3,15],[3,2,15],[4,2,15],[4,31,15],[5,30,15],[6,29,15],[7,27,15]],1985:[[8,15,17],[9,15,17],[10,13,17],[11,13,17],[0,22,16],[1,20,16],[2,22,16],[3,21,16],[4,20,16],[5,19,16],[6,18,16],[7,17,16]],1986:[[8,5,18],[9,4,18],[10,3,18],[11,2,18],[0,11,17],[1,10,17],[2,11,17],[3,10,17],[4,9,17],[5,8,17],[6,8,17],[7,6,17]],1987:[[7,25,19],[8,24,19],[9,23,19],[10,22,19],[0,1,18,11,21,19],[0,30,18],[2,1,18],[2,30,18],[3,29,18],[4,28,18],[5,27,18],[6,26,18]],1988:[[7,13,20],[8,12,20],[9,11,20],[10,10,20],[11,10,20],[0,20,19],[1,18,19],[2,19,19],[3,17,19],[4,16,19],[5,15,19],[6,14,19]],1989:[[7,2,21],[8,1,21],[8,30,21],[9,30,21],[10,29,21],[0,8,20,11,29,21],[1,7,20],[2,8,20],[3,7,20],[4,6,20],[5,4,20],[6,4,20]],1990:[[6,23,22],[7,21,22],[8,20,22],[9,19,22],[10,18,22],[11,18,22],[0,27,21],[1,26,21],[2,27,21],[3,26,21],[4,25,21],[5,23,21]],1991:[[6,12,23],[7,11,23],[8,9,23],[9,8,23],[10,7,23],[11,7,23],[0,16,22],[1,15,22],[2,17,22],[3,15,22],[4,15,22],[5,13,22]],1992:[[6,1,24],[6,30,24],[7,29,24],[8,27,24],[9,26,24],[10,25,24],[0,5,23,11,25,24],[1,4,23],[2,5,23],[3,4,23],[4,3,23],[5,2,23]],1993:[[5,21,25],[6,20,25],[7,18,25],[8,17,25],[9,16,25],[10,14,25],[11,14,25],[0,23,24],[1,22,24],[2,24,24],[3,22,24],[4,22,24]],1994:[[5,10,26],[6,9,26],[7,8,26],[8,6,26],[9,6,26],[10,4,26],[11,3,26],[0,12,25],[1,11,25],[2,13,25],[3,12,25],[4,11,25]],1995:[[4,30,27],[5,29,27],[6,28,27],[7,27,27],[8,25,27],[9,25,27],[10,23,27],[0,2,26,11,23,27],[0,31,26],[2,2,26],[3,1,26],[3,30,26]],1996:[[4,18,28],[5,17,28],[6,16,28],[7,15,28],[8,13,28],[9,13,28],[10,12,28],[11,11,28],[0,21,27],[1,19,27],[2,20,27],[3,18,27]],1997:[[4,7,29],[5,6,29],[6,5,29],[7,4,29],[8,2,29],[9,2,29],[10,1,29],[11,1,29],[0,10,28,11,30,29],[1,8,28],[2,10,28],[3,8,28]],1998:[[3,27,30],[4,26,30],[5,25,30],[6,24,30],[7,23,30],[8,21,30],[9,21,30],[10,20,30],[11,19,30],[0,29,29],[1,27,29],[2,29,29]],1999:[[3,17,31],[4,16,31],[5,15,31],[6,14,31],[7,12,31],[8,11,31],[9,10,31],[10,9,31],[11,9,31],[0,18,30],[1,17,30],[2,18,30]],2000:[[3,6,32],[4,5,32],[5,3,32],[6,3,32],[7,1,32],[7,30,32],[8,28,32],[9,28,32],[10,27,32],[0,8,31,11,27,32],[1,7,31],[2,7,31]],2001:[[2,26,33],[3,25,33],[4,24,33],[5,22,33],[6,22,33],[7,20,33],[8,18,33],[9,17,33],[10,16,33],[11,16,33],[0,26,32],[1,24,32]],2002:[[2,15,34],[3,14,34],[4,13,34],[5,12,34],[6,11,34],[7,10,34],[8,8,34],[9,7,34],[10,6,34],[11,5,34],[0,15,33],[1,13,33]],2003:[[2,4,35],[3,3,35],[4,2,35],[5,1,35],[6,1,35],[6,30,35],[7,29,35],[8,27,35],[9,26,35],[10,25,35],[0,4,34,11,24,35],[1,2,34]],2004:[[1,21,36],[2,22,36],[3,20,36],[4,20,36],[5,19,36],[6,18,36],[7,17,36],[8,15,36],[9,15,36],[10,14,36],[11,13,36],[0,23,35]],2005:[[1,10,37],[2,11,37],[3,10,37],[4,9,37],[5,8,37],[6,7,37],[7,6,37],[8,5,37],[9,4,37],[10,3,37],[11,3,37],[0,12,36]],2006:[[0,31,38],[2,1,38],[2,30,38],[3,29,38],[4,28,38],[5,26,38],[6,26,38],[7,25,38],[8,24,38],[9,23,38],[10,22,38],[0,1,37,11,22,38]],2007:[[0,20,39],[1,19,39],[2,20,39],[3,18,39],[4,18,39],[5,16,39],[6,15,39],[7,14,39],[8,13,39],[9,13,39],[10,11,39],[11,11,39]],2008:[[0,10,40,11,29,41],[1,8,40],[2,9,40],[3,7,40],[4,6,40],[5,5,40],[6,4,40],[7,2,40],[8,1,40],[9,1,40],[9,30,40],[10,29,40]],2009:[[11,18,42],[0,27,41],[1,26,41],[2,28,41],[3,26,41],[4,25,41],[5,24,41],[6,23,41],[7,22,41],[8,20,41],[9,20,41],[10,18,41]],2010:[[11,7,43],[0,16,42],[1,15,42],[2,17,42],[3,15,42],[4,15,42],[5,13,42],[6,13,42],[7,11,42],[8,10,42],[9,9,42],[10,7,42]],2011:[[10,26,44],[0,5,43,11,26,44],[1,4,43],[2,6,43],[3,5,43],[4,4,43],[5,3,43],[6,2,43],[7,1,43],[7,30,43],[8,29,43],[9,28,43]],2012:[[10,15,45],[11,14,45],[0,24,44],[1,23,44],[2,24,44],[3,22,44],[4,22,44],[5,21,44],[6,20,44],[7,19,44],[8,17,44],[9,17,44]],2013:[[10,4,46],[11,4,46],[0,13,45],[1,11,45],[2,13,45],[3,11,45],[4,11,45],[5,10,45],[6,9,45],[7,8,45],[8,7,45],[9,6,45]],2014:[[9,25,47],[10,23,47],[0,2,46,11,23,47],[1,1,46],[2,2,46],[3,1,46],[3,30,46],[4,30,46],[5,28,46],[6,28,46],[7,27,46],[8,25,46]],2015:[[9,14,48],[10,13,48],[11,12,48],[0,21,47],[1,20,47],[2,21,47],[3,20,47],[4,19,47],[5,18,47],[6,17,47],[7,16,47],[8,14,47]],2016:[[9,2,49],[10,1,49],[10,30,49],[0,11,48,11,30,49],[1,10,48],[2,10,48],[3,8,48],[4,8,48],[5,6,48],[6,6,48],[7,4,48],[8,2,48]],2017:[[8,21,50],[9,21,50],[10,19,50],[11,19,50],[0,29,49],[1,28,49],[2,29,49],[3,27,49],[4,27,49],[5,25,49],[6,24,49],[7,23,49]],2018:[[8,11,51],[9,10,51],[10,9,51],[11,8,51],[0,18,50],[1,17,50],[2,18,50],[3,17,50],[4,16,50],[5,15,50],[6,14,50],[7,12,50]],2019:[[7,31,52],[8,30,52],[9,29,52],[10,28,52],[0,7,51,11,27,52],[1,6,51],[2,8,51],[3,6,51],[4,6,51],[5,4,51],[6,4,51],[7,2,51]],2020:[[7,20,53],[8,18,53],[9,18,53],[10,16,53],[11,16,53],[0,26,52],[1,25,52],[2,25,52],[3,24,52],[4,24,52],[5,22,52],[6,22,52]],2021:[[7,9,54],[8,8,54],[9,7,54],[10,6,54],[11,5,54],[0,14,53],[1,13,53],[2,14,53],[3,13,53],[4,13,53],[5,11,53],[6,11,53]],2022:[[6,30,55],[7,28,55],[8,27,55],[9,26,55],[10,25,55],[0,4,54,11,25,55],[1,2,54],[2,4,54],[3,2,54],[4,2,54],[4,31,54],[5,30,54]],2023:[[6,19,56],[7,17,56],[8,16,56],[9,16,56],[10,15,56],[11,14,56],[0,23,55],[1,21,55],[2,23,55],[3,21,55],[4,21,55],[5,19,55]],2024:[[6,7,57],[7,5,57],[8,4,57],[9,4,57],[10,3,57],[11,3,57],[0,13,56],[1,11,56],[2,11,56],[3,10,56],[4,9,56],[5,7,56]],2025:[[5,26,58],[6,26,58],[7,24,58],[8,23,58],[9,23,58],[10,22,58],[0,1,57,11,21,58],[0,31,57],[2,1,57],[2,30,57],[3,29,57],[4,28,57]],2026:[[5,16,59],[6,15,59],[7,14,59],[8,12,59],[9,12,59],[10,11,59],[11,10,59],[0,20,58],[1,18,58],[2,20,58],[3,18,58],[4,18,58]],2027:[[5,6,60],[6,5,60],[7,3,60],[8,2,60],[9,1,60],[9,31,60],[10,29,60],[0,9,59,11,29,60],[1,8,59],[2,9,59],[3,8,59],[4,7,59]],2028:[[4,25,61],[5,24,61],[6,23,61],[7,22,61],[8,20,61],[9,19,61],[10,18,61],[11,17,61],[0,28,60],[1,26,60],[2,27,60],[3,26,60]],2029:[[4,14,62],[5,13,62],[6,13,62],[7,11,62],[8,10,62],[9,9,62],[10,7,62],[11,7,62],[0,16,61],[1,14,61],[2,16,61],[3,15,61]],2030:[[4,3,63],[5,2,63],[6,2,63],[7,1,63],[7,30,63],[8,29,63],[9,28,63],[10,26,63],[0,5,62,11,26,63],[1,4,62],[2,5,62],[3,4,62]],2031:[[3,23,64],[4,22,64],[5,21,64],[6,21,64],[7,20,64],[8,18,64],[9,17,64],[10,16,64],[11,15,64],[0,24,63],[1,23,63],[2,24,63]],2032:[[3,11,65],[4,10,65],[5,9,65],[6,9,65],[7,8,65],[8,6,65],[9,6,65],[10,4,65],[11,4,65],[0,14,64],[1,12,64],[2,13,64]],2033:[[3,1,66],[3,30,66],[4,29,66],[5,28,66],[6,28,66],[7,26,66],[8,25,66],[9,24,66],[10,23,66],[0,2,65,11,23,66],[1,1,65],[2,2,65]],2034:[[2,21,67],[3,20,67],[4,19,67],[5,17,67],[6,17,67],[7,15,67],[8,14,67],[9,13,67],[10,12,67],[11,12,67],[0,21,66],[1,20,66]],2035:[[2,11,68],[3,9,68],[4,9,68],[5,7,68],[6,6,68],[7,5,68],[8,3,68],[9,2,68],[10,1,68],[11,1,68],[0,11,67,11,30,68],[1,9,67]],2036:[[1,28,69],[2,29,69],[3,27,69],[4,27,69],[5,25,69],[6,24,69],[7,23,69],[8,21,69],[9,20,69],[10,19,69],[11,19,69],[0,29,68]],2037:[[1,16,70],[2,18,70],[3,17,70],[4,16,70],[5,15,70],[6,14,70],[7,12,70],[8,11,70],[9,10,70],[10,8,70],[11,8,70],[0,17,69]],2038:[[1,5,71],[2,7,71],[3,6,71],[4,5,71],[5,4,71],[6,3,71],[7,2,71],[7,31,71],[8,30,71],[9,29,71],[10,27,71],[0,7,70,11,27,71]],2039:[[0,26,72],[1,24,72],[2,26,72],[3,24,72],[4,24,72],[5,23,72],[6,22,72],[7,21,72],[8,19,72],[9,19,72],[10,17,72],[11,17,72]],2040:[[0,15,73],[1,14,73],[2,14,73],[3,13,73],[4,12,73],[5,11,73],[6,10,73],[7,9,73],[8,7,73],[9,7,73],[10,6,73],[11,5,73]],2041:[[0,4,74,11,24,75],[1,2,74],[2,4,74],[3,2,74],[4,1,74],[4,31,74],[5,29,74],[6,29,74],[7,28,74],[8,26,74],[9,26,74],[10,25,74]],2042:[[11,14,76],[0,23,75],[1,21,75],[2,23,75],[3,21,75],[4,20,75],[5,19,75],[6,18,75],[7,17,75],[8,15,75],[9,15,75],[10,14,75]],2043:[[11,3,77],[0,12,76],[1,11,76],[2,12,76],[3,11,76],[4,10,76],[5,8,76],[6,8,76],[7,6,76],[8,4,76],[9,4,76],[10,3,76]],2044:[[10,21,78],[0,2,77,11,21,78],[0,31,77],[2,1,77],[2,30,77],[3,29,77],[4,28,77],[5,26,77],[6,26,77],[7,24,77],[8,23,77],[9,22,77]],2045:[[10,10,79],[11,10,79],[0,19,78],[1,18,78],[2,20,78],[3,18,78],[4,18,78],[5,16,78],[6,15,78],[7,14,78],[8,12,78],[9,12,78]],2046:[[9,31,80],[10,29,80],[0,8,79,11,28,80],[1,7,79],[2,9,79],[3,7,79],[4,7,79],[5,5,79],[6,5,79],[7,3,79],[8,2,79],[9,1,79]],2047:[[9,20,81],[10,19,81],[11,18,81],[0,27,80],[1,26,80],[2,27,80],[3,26,80],[4,26,80],[5,24,80],[6,24,80],[7,23,80],[8,21,80]],2048:[[9,9,82],[10,7,82],[11,7,82],[0,16,81],[1,15,81],[2,16,81],[3,14,81],[4,14,81],[5,12,81],[6,12,81],[7,11,81],[8,10,81]],2049:[[8,28,83],[9,28,83],[10,26,83],[0,5,82,11,26,83],[1,3,82],[2,5,82],[3,3,82],[4,3,82],[5,2,82],[6,1,82],[6,31,82],[7,30,82]],2050:[[8,17,84],[9,17,84],[10,15,84],[11,15,84],[0,24,83],[1,23,83],[2,24,83],[3,22,83],[4,22,83],[5,20,83],[6,20,83],[7,19,83]],2051:[[8,6,85],[9,6,85],[10,5,85],[11,4,85],[0,14,84],[1,12,84],[2,14,84],[3,12,84],[4,11,84],[5,10,84],[6,9,84],[7,8,84]],2052:[[7,26,86],[8,24,86],[9,24,86],[10,22,86],[0,3,85,11,22,86],[1,2,85],[2,2,85],[3,1,85],[3,30,85],[4,29,85],[5,28,85],[6,27,85]],2053:[[7,15,87],[8,13,87],[9,13,87],[10,11,87],[11,11,87],[0,21,86],[1,20,86],[2,21,86],[3,20,86],[4,19,86],[5,17,86],[6,17,86]],2054:[[7,5,88],[8,3,88],[9,2,88],[10,1,88],[10,30,88],[0,10,87,11,30,88],[1,9,87],[2,10,87],[3,9,87],[4,9,87],[5,7,87],[6,6,87]],2055:[[6,25,89],[7,24,89],[8,22,89],[9,21,89],[10,20,89],[11,19,89],[0,29,88],[1,27,88],[2,29,88],[3,28,88],[4,28,88],[5,26,88]],2056:[[6,14,90],[7,12,90],[8,11,90],[9,10,90],[10,8,90],[11,8,90],[0,18,89],[1,17,89],[2,17,89],[3,16,89],[4,16,89],[5,14,89]],2057:[[6,3,91],[7,1,91],[7,31,91],[8,30,91],[9,29,91],[10,27,91],[0,6,90,11,27,91],[1,5,90],[2,6,90],[3,5,90],[4,5,90],[5,3,90]],2058:[[5,22,92],[6,21,92],[7,20,92],[8,19,92],[9,18,92],[10,17,92],[11,17,92],[0,25,91],[1,24,91],[2,25,91],[3,24,91],[4,23,91]],2059:[[5,11,93],[6,11,93],[7,9,93],[8,8,93],[9,8,93],[10,6,93],[11,6,93],[0,15,92],[1,14,92],[2,15,92],[3,13,92],[4,13,92]],2060:[[4,31,94],[5,29,94],[6,28,94],[7,27,94],[8,26,94],[9,25,94],[10,24,94],[0,5,93,11,24,94],[1,3,93],[2,4,93],[3,2,93],[4,1,93]],2061:[[4,20,95],[5,19,95],[6,18,95],[7,16,95],[8,15,95],[9,15,95],[10,13,95],[11,13,95],[0,23,94],[1,21,94],[2,23,94],[3,21,94]],2062:[[4,10,96],[5,8,96],[6,8,96],[7,6,96],[8,4,96],[9,4,96],[10,3,96],[11,2,96],[0,12,95],[1,10,95],[2,12,95],[3,11,95]],2063:[[3,30,97],[4,29,97],[5,27,97],[6,27,97],[7,25,97],[8,24,97],[9,23,97],[10,22,97],[0,1,96,11,21,97],[0,31,96],[2,1,96],[2,31,96]],2064:[[3,18,98],[4,17,98],[5,16,98],[6,15,98],[7,14,98],[8,12,98],[9,12,98],[10,10,98],[11,9,98],[0,20,97],[1,18,97],[2,19,97]],2065:[[3,7,99],[4,6,99],[5,5,99],[6,5,99],[7,3,99],[8,2,99],[9,1,99],[9,31,99],[10,29,99],[0,8,98,11,28,99],[1,6,98],[2,8,98]],2066:[[2,27,100],[3,25,100],[4,25,100],[5,24,100],[6,24,100],[7,22,100],[8,21,100],[9,20,100],[10,19,100],[11,18,100],[0,27,99],[1,25,99]],2067:[[2,16,101],[3,15,101],[4,14,101],[5,13,101],[6,13,101],[7,11,101],[8,10,101],[9,10,101],[10,8,101],[11,8,101],[0,16,100],[1,15,100]],2068:[[2,5,102],[3,3,102],[4,3,102],[5,1,102],[6,1,102],[6,30,102],[7,29,102],[8,28,102],[9,27,102],[10,26,102],[0,6,101,11,25,102],[1,4,101]],2069:[[1,23,103],[2,24,103],[3,22,103],[4,22,103],[5,20,103],[6,20,103],[7,18,103],[8,17,103],[9,16,103],[10,15,103],[11,15,103],[0,24,102]],2070:[[1,12,104],[2,14,104],[3,12,104],[4,11,104],[5,10,104],[6,9,104],[7,8,104],[8,6,104],[9,5,104],[10,4,104],[11,4,104],[0,13,103]],2071:[[1,1,105],[2,3,105],[3,2,105],[4,1,105],[4,30,105],[5,29,105],[6,28,105],[7,26,105],[8,25,105],[9,24,105],[10,23,105],[0,2,104,11,22,105]],2072:[[0,21,106],[1,20,106],[2,21,106],[3,19,106],[4,19,106],[5,17,106],[6,17,106],[7,15,106],[8,13,106],[9,13,106],[10,11,106],[11,11,106]],2073:[[0,9,107,11,30,108],[1,8,107],[2,10,107],[3,9,107],[4,8,107],[5,7,107],[6,6,107],[7,5,107],[8,3,107],[9,2,107],[10,1,107],[10,30,107]],2074:[[11,19,109],[0,28,108],[1,27,108],[2,29,108],[3,27,108],[4,27,108],[5,26,108],[6,25,108],[7,23,108],[8,22,108],[9,21,108],[10,20,108]],2075:[[11,9,110],[0,18,109],[1,16,109],[2,18,109],[3,16,109],[4,16,109],[5,15,109],[6,14,109],[7,13,109],[8,11,109],[9,11,109],[10,9,109]],2076:[[10,27,111],[0,7,110,11,27,111],[1,6,110],[2,6,110],[3,5,110],[4,4,110],[5,3,110],[6,2,110],[7,1,110],[7,30,110],[8,29,110],[9,29,110]],2077:[null,null,[0,26,111],[1,24,111],[2,25,111],[3,24,111],[4,23,111],[5,21,111],[6,21,111],[7,19,111],[8,18,111],[9,18,111]],year:1389}","import CalDate from 'caldate'\nimport CalEventMap from './CalEventMap.js'\nimport { calendar } from './internal/hijri-calendar.js'\n\nexport default class Hijri extends CalEventMap {\n constructor (opts) {\n super(opts)\n this.calendar = calendar\n }\n\n get (timezone) {\n const arr = this.dates.map((date) => {\n const cdate = new CalDate(date)\n const o = {\n date: cdate.toString() + ' -0600',\n start: cdate.setOffset(-6, 'h').toTimezone(timezone),\n end: cdate.toEndDate().toTimezone(timezone)\n }\n this._addSubstitute(date, o)\n return o\n })\n return arr\n }\n}\n","import CalDate from 'caldate'\nimport CalEvent from './CalEvent.js'\nimport jalaali from 'jalaali-js'\n\nconst { toJalaali, toGregorian } = jalaali\n\nexport default class Jalaali extends CalEvent {\n /**\n * @param {number} year gregorian year\n * @returns\n */\n inYear (year) {\n const nowruz = toJalaali(year, 1, 1)\n\n if (this.opts.year && nowruz.jy !== this.opts.year) {\n return this\n }\n const { gy, gm, gd } = toGregorian(this.opts.year || nowruz.jy, this.opts.month, this.opts.day)\n\n const d = (new CalDate({ year: gy, month: gm, day: gd })).setOffset(this.offset)\n this.dates.push(d)\n return this\n }\n}\n","const m = {\n L: {\n \"0\": [\n [1.75347045673, 0, 0],\n [0.03341656453, 4.66925680415, 6283.0758499914],\n [0.00034894275, 4.62610242189, 12566.1516999828],\n [0.00003417572, 2.82886579754, 3.523118349],\n [0.00003497056, 2.74411783405, 5753.3848848968],\n [0.00003135899, 3.62767041756, 77713.7714681205],\n [0.00002676218, 4.41808345438, 7860.4193924392],\n [0.00002342691, 6.13516214446, 3930.2096962196],\n [0.00001273165, 2.03709657878, 529.6909650946],\n [0.00001324294, 0.74246341673, 11506.7697697936],\n [0.00000901854, 2.04505446477, 26.2983197998],\n [0.00001199167, 1.10962946234, 1577.3435424478],\n [0.00000857223, 3.50849152283, 398.1490034082],\n [0.00000779786, 1.17882681962, 5223.6939198022],\n [0.0000099025, 5.23268072088, 5884.9268465832],\n [0.00000753141, 2.53339052847, 5507.5532386674],\n [0.00000505267, 4.58292599973, 18849.2275499742],\n [0.00000492392, 4.20505711826, 775.522611324],\n [0.00000356672, 2.91954114478, 0.0673103028],\n [0.00000284125, 1.89869240932, 796.2980068164],\n [0.00000242879, 0.34481445893, 5486.777843175],\n [0.00000317087, 5.84901948512, 11790.6290886588],\n [0.00000271112, 0.31486255375, 10977.078804699],\n [0.00000206217, 4.80646631478, 2544.3144198834],\n [0.00000205478, 1.86953770281, 5573.1428014331],\n [0.00000202318, 2.45767790232, 6069.7767545534],\n [0.00000126225, 1.08295459501, 20.7753954924],\n [0.00000155516, 0.83306084617, 213.299095438],\n [0.00000115132, 0.64544911683, 0.9803210682],\n [0.00000102851, 0.63599845579, 4694.0029547076],\n [0.00000101724, 4.2667980198, 7.1135470008],\n [9.9206e-7, 6.20992926918, 2146.1654164752],\n [0.00000132212, 3.41118292683, 2942.4634232916],\n [9.7607e-7, 0.68101342359, 155.4203994342],\n [8.5128e-7, 1.29870764804, 6275.9623029906],\n [7.4651e-7, 1.755089133, 5088.6288397668],\n [0.00000101895, 0.97569280312, 15720.8387848784],\n [8.4711e-7, 3.67080093031, 71430.69561812909],\n [7.3547e-7, 4.67926633877, 801.8209311238],\n [7.3874e-7, 3.50319414955, 3154.6870848956],\n [7.8757e-7, 3.03697458703, 12036.4607348882],\n [7.9637e-7, 1.80791287082, 17260.1546546904],\n [8.5803e-7, 5.9832263126, 161000.6857376741],\n [5.6963e-7, 2.78430458592, 6286.5989683404],\n [6.1148e-7, 1.81839892984, 7084.8967811152],\n [6.9627e-7, 0.83297621398, 9437.762934887],\n [5.6116e-7, 4.38694865354, 14143.4952424306],\n [6.2449e-7, 3.97763912806, 8827.3902698748],\n [5.1145e-7, 0.28306832879, 5856.4776591154],\n [5.5577e-7, 3.47006059924, 6279.5527316424],\n [4.1036e-7, 5.36817592855, 8429.2412664666],\n [5.1605e-7, 1.33282739866, 1748.016413067],\n [5.1992e-7, 0.18914947184, 12139.5535091068],\n [4.9e-7, 0.48735014197, 1194.4470102246],\n [3.92e-7, 6.16833020996, 10447.3878396044],\n [3.557e-7, 1.775968892, 6812.766815086],\n [3.677e-7, 6.04133863162, 10213.285546211],\n [3.6596e-7, 2.56957481827, 1059.3819301892],\n [3.3296e-7, 0.59310278598, 17789.845619785],\n [3.5954e-7, 1.70875808777, 2352.8661537718],\n [4.0938e-7, 2.39850938714, 19651.048481098],\n [3.0047e-7, 2.73975124088, 1349.8674096588],\n [3.0412e-7, 0.44294464169, 83996.84731811189],\n [2.3663e-7, 0.48473622521, 8031.0922630584],\n [2.3574e-7, 2.06528133162, 3340.6124266998],\n [2.1089e-7, 4.14825468851, 951.7184062506],\n [2.4738e-7, 0.21484762138, 3.5904286518],\n [2.5352e-7, 3.16470891653, 4690.4798363586],\n [2.2823e-7, 5.22195230819, 4705.7323075436],\n [2.1419e-7, 1.42563910473, 16730.4636895958],\n [2.1891e-7, 5.55594302779, 553.5694028424],\n [1.7481e-7, 4.56052900312, 135.0650800354],\n [1.9927e-7, 5.22209149316, 12168.0026965746],\n [1.986e-7, 5.77470242235, 6309.3741697912],\n [2.03e-7, 0.37133792946, 283.8593188652],\n [1.4421e-7, 4.19315052005, 242.728603974],\n [1.6225e-7, 5.98837767951, 11769.8536931664],\n [1.5077e-7, 4.1956716337, 6256.7775301916],\n [1.9124e-7, 3.82219958698, 23581.2581773176],\n [1.8888e-7, 5.38626892076, 149854.4001348079],\n [1.4346e-7, 3.72355084422, 38.0276726358],\n [1.7898e-7, 2.21490566029, 13367.9726311066],\n [1.2054e-7, 2.62229602614, 955.5997416086],\n [1.1287e-7, 0.17739329984, 4164.311989613],\n [1.3973e-7, 4.40134615007, 6681.2248533996],\n [1.3621e-7, 1.88934516495, 7632.9432596502],\n [1.2503e-7, 1.13052412208, 5.5229243074],\n [1.0498e-7, 5.35909979317, 1592.5960136328],\n [9.803e-8, 0.99948172646, 11371.7046897582],\n [9.22e-8, 4.57138585348, 4292.3308329504],\n [1.0327e-7, 6.19982170609, 6438.4962494256],\n [1.2003e-7, 1.00351462266, 632.7837393132],\n [1.0827e-7, 0.32734523824, 103.0927742186],\n [8.356e-8, 4.53902748706, 25132.3033999656],\n [1.0005e-7, 6.0291496328, 5746.271337896],\n [8.409e-8, 3.29946177848, 7234.794256242],\n [8.006e-8, 5.82145271855, 28.4491874678],\n [1.0523e-7, 0.93870455544, 11926.2544136688],\n [7.686e-8, 3.1214364064, 7238.6755916],\n [9.378e-8, 2.62413793196, 5760.4984318976],\n [8.127e-8, 6.11227839253, 4732.0306273434],\n [9.232e-8, 0.48344234496, 522.5774180938],\n [9.802e-8, 5.24413877132, 27511.4678735372],\n [7.871e-8, 0.99590133077, 5643.1785636774],\n [8.123e-8, 6.27053020099, 426.598190876],\n [9.048e-8, 5.33686323585, 6386.16862421],\n [8.621e-8, 4.16537179089, 7058.5984613154],\n [6.297e-8, 4.71723143652, 6836.6452528338],\n [7.575e-8, 3.97381357237, 11499.6562227928],\n [7.756e-8, 2.95728422442, 23013.5395395872],\n [7.314e-8, 0.60652522715, 11513.8833167944],\n [5.955e-8, 2.87641047954, 6283.14316029419],\n [6.534e-8, 5.79046406784, 18073.7049386502],\n [7.188e-8, 3.99831461988, 74.7815985673],\n [7.346e-8, 4.38582423903, 316.3918696566],\n [5.413e-8, 5.39199023275, 419.4846438752],\n [5.127e-8, 2.36059551778, 10973.55568635],\n [7.056e-8, 0.32258442532, 263.0839233728],\n [6.624e-8, 3.6647416584, 17298.1823273262],\n [6.762e-8, 5.91131766896, 90955.5516944961],\n [4.938e-8, 5.73672172371, 9917.6968745098],\n [5.547e-8, 2.45152589382, 12352.8526045448],\n [5.958e-8, 3.3205134466, 6283.0085396886],\n [4.471e-8, 2.06386138131, 7079.3738568078],\n [6.153e-8, 1.45823347458, 233141.3144043615],\n [4.348e-8, 4.42338625285, 5216.5803728014],\n [6.124e-8, 1.07494838623, 19804.8272915828],\n [4.488e-8, 3.65285033073, 206.1855484372],\n [4.02e-8, 0.83995823171, 20.3553193988],\n [5.188e-8, 4.06503864016, 6208.2942514241],\n [5.307e-8, 0.38216728132, 31441.6775697568],\n [3.785e-8, 2.34369213733, 3.881335358],\n [4.497e-8, 3.27230792447, 11015.1064773348],\n [4.132e-8, 0.92129851256, 3738.761430108],\n [3.521e-8, 5.9784480361, 3894.1818295422],\n [4.215e-8, 1.90601721876, 245.8316462294],\n [3.701e-8, 5.03067498875, 536.8045120954],\n [3.866e-8, 1.82632980909, 11856.2186514245],\n [3.652e-8, 1.01840564429, 16200.7727245012],\n [3.39e-8, 0.97784870142, 8635.9420037632],\n [3.737e-8, 2.9537891957, 3128.3887650958],\n [3.507e-8, 3.71291946317, 6290.1893969922],\n [3.086e-8, 3.64646921512, 10.6366653498],\n [3.397e-8, 1.10589356888, 14712.317116458],\n [3.334e-8, 0.83684903082, 6496.3749454294],\n [2.805e-8, 2.58503711584, 14314.1681130498],\n [3.65e-8, 1.08344142571, 88860.05707098669],\n [3.388e-8, 3.20182380957, 5120.6011455836],\n [3.252e-8, 3.47857474229, 6133.5126528568],\n [2.553e-8, 3.9486902726, 1990.745017041],\n [3.52e-8, 2.05559692878, 244287.60000722768],\n [2.565e-8, 1.56072409371, 23543.23050468179],\n [2.621e-8, 3.85639359951, 266.6070417218],\n [2.954e-8, 3.39692614359, 9225.539273283],\n [2.876e-8, 6.02633318445, 154717.6098876827],\n [2.395e-8, 1.16130078696, 10984.1923516998],\n [3.161e-8, 1.32798862116, 10873.9860304804],\n [3.163e-8, 5.08946546862, 21228.3920235458],\n [2.361e-8, 4.27212461943, 6040.3472460174],\n [3.03e-8, 1.80210001168, 35371.8872659764],\n [2.343e-8, 3.57688971514, 10969.9652576982],\n [2.618e-8, 2.57870151918, 22483.84857449259],\n [2.113e-8, 3.71711179417, 65147.6197681377],\n [2.019e-8, 0.81393923319, 170.6728706192],\n [2.003e-8, 0.38091017375, 6172.869528772],\n [2.506e-8, 3.74378169126, 10575.4066829418],\n [2.381e-8, 0.10581361289, 7.046236698],\n [1.949e-8, 4.86892513469, 36.0278666774],\n [2.074e-8, 4.22802468213, 5650.2921106782],\n [1.924e-8, 5.59460549844, 6282.0955289232],\n [1.949e-8, 1.06999605576, 5230.807466803],\n [1.988e-8, 5.19734705445, 6262.300454499],\n [1.887e-8, 3.74365662683, 23.8784377478],\n [1.787e-8, 1.25929659066, 12559.038152982],\n [1.883e-8, 1.90364058477, 15.252471185],\n [1.816e-8, 3.68083794819, 15110.4661198662],\n [1.701e-8, 4.41109562589, 110.2063212194],\n [1.99e-8, 3.93295788548, 6206.8097787158],\n [2.103e-8, 0.75354936681, 13521.7514415914],\n [1.774e-8, 0.48750515837, 1551.045222648],\n [1.882e-8, 0.86685462305, 22003.9146348698],\n [1.924e-8, 1.22901099088, 709.9330485583],\n [2.073e-8, 4.62531597856, 6037.244203762],\n [1.924e-8, 0.60231842492, 6284.0561710596],\n [1.596e-8, 3.98332879712, 13916.0191096416],\n [1.664e-8, 4.41947015623, 8662.240323563],\n [1.971e-8, 1.04560686192, 18209.33026366019],\n [1.942e-8, 4.31335979989, 6244.9428143536],\n [1.476e-8, 0.93274523818, 2379.1644735716],\n [1.81e-8, 0.49112137707, 1.4844727083],\n [1.346e-8, 1.51574753411, 4136.9104335162],\n [1.528e-8, 5.61833568587, 6127.6554505572],\n [1.791e-8, 3.22191142746, 39302.096962196],\n [1.747e-8, 3.05595292589, 18319.5365848796],\n [1.432e-8, 4.51123984264, 20426.571092422],\n [1.695e-8, 0.22049418623, 25158.6017197654],\n [1.242e-8, 4.46665354536, 17256.6315363414],\n [1.463e-8, 4.69248613506, 14945.3161735544],\n [1.205e-8, 1.86911906771, 4590.910180489],\n [1.19e-8, 2.74169967367, 12569.6748183318],\n [1.222e-8, 5.18120087481, 5333.9002410216],\n [1.39e-8, 5.42888623322, 143571.32428481648],\n [1.473e-8, 1.70487100866, 11712.9553182308],\n [1.362e-8, 2.61069503292, 6062.6632075526],\n [1.148e-8, 6.0300843061, 3634.6210245184],\n [1.198e-8, 5.15296117339, 10177.2576795336],\n [1.266e-8, 0.11422490557, 18422.62935909819],\n [1.411e-8, 1.09910890045, 3496.032826134],\n [1.349e-8, 2.99804623019, 17654.7805397496],\n [1.253e-8, 2.79844902576, 167283.7615876655],\n [1.311e-8, 1.609410743, 5481.2549188676],\n [1.079e-8, 6.20304501787, 3.2863574178],\n [1.181e-8, 1.20653777627, 131.5419616864],\n [1.254e-8, 5.45103277799, 6076.8903015542],\n [1.036e-8, 2.32136959491, 7342.4577801806],\n [1.117e-8, 0.38842340979, 949.1756089698],\n [9.66e-9, 3.18352079941, 11087.2851259184],\n [1.171e-8, 3.39635167732, 12562.6285816338],\n [1.121e-8, 0.72631814699, 220.4126424388],\n [1.024e-8, 2.19381113265, 11403.676995575],\n [8.88e-9, 3.91167196431, 4686.8894077068],\n [9.1e-9, 1.98802695087, 735.8765135318],\n [8.23e-9, 0.48822202854, 24072.9214697764],\n [1.096e-8, 6.17377835617, 5436.9930152402],\n [9.08e-9, 0.44959148878, 7477.522860216],\n [9.74e-9, 1.52996313552, 9623.6882766912],\n [8.4e-9, 1.79540573407, 5429.8794682394],\n [7.78e-9, 6.17703744517, 38.1330356378],\n [7.76e-9, 4.09859968447, 14.2270940016],\n [1.068e-8, 4.64209577648, 43232.3066584156],\n [9.54e-9, 1.49985885818, 1162.4747044078],\n [9.07e-9, 0.86986870809, 10344.2950653858],\n [9.31e-9, 4.06049877517, 28766.924424484],\n [7.39e-9, 5.04368192034, 639.897286314],\n [9.65e-9, 3.44286716197, 1589.0728952838],\n [7.63e-9, 5.86304776787, 16858.4825329332],\n [9.53e-9, 4.20801492835, 11190.377900137],\n [7.08e-9, 1.72432323967, 13095.8426650774],\n [9.69e-9, 1.64437243011, 29088.811415985],\n [7.17e-9, 0.16688678895, 11.729352836],\n [9.62e-9, 3.53101876172, 12416.5885028482],\n [7.45e-9, 5.77741082302, 12592.4500197826],\n [6.72e-9, 1.91091228744, 3.9321532631],\n [6.71e-9, 5.46240758839, 18052.9295431578],\n [6.75e-9, 6.28311649798, 4535.0594369244],\n [6.84e-9, 0.39975011401, 5849.3641121146],\n [7.99e-9, 0.29859056777, 12132.439962106],\n [7.58e-9, 0.96370719224, 1052.2683831884],\n [7.82e-9, 5.33875702541, 13517.8701062334],\n [7.3e-9, 1.70114998543, 17267.26820169119],\n [7.49e-9, 2.59607005624, 11609.8625440122],\n [7.34e-9, 2.7842049778, 640.8776073822],\n [6.88e-9, 5.15097673557, 16496.3613962024],\n [7.7e-9, 1.62459252416, 4701.1165017084],\n [6.33e-9, 2.20588443066, 25934.1243310894],\n [7.6e-9, 4.21317219403, 377.3736079158],\n [5.84e-9, 2.13420121623, 10557.5941608238],\n [5.72e-9, 0.24649745829, 9779.1086761254],\n [5.73e-9, 3.16435264609, 533.2140834436],\n [6.85e-9, 3.19344289472, 12146.6670561076],\n [6.75e-9, 0.96179234176, 10454.5013866052],\n [6.48e-9, 1.46327342554, 6268.8487559898],\n [5.89e-9, 2.50543543638, 3097.88382272579],\n [5.51e-9, 5.28106257475, 9388.0059094152],\n [6.96e-9, 3.6534215555, 4804.209275927],\n [6.69e-9, 2.5103005926, 2388.8940204492],\n [5.5e-9, 0.06883090057, 20199.094959633],\n [6.29e-9, 4.13350997495, 45892.73043315699],\n [6.78e-9, 6.09190163533, 135.62532501],\n [5.93e-9, 1.50129499103, 226858.23855437007],\n [5.42e-9, 3.58582033525, 6148.010769956],\n [5.99e-9, 6.12058050643, 18875.525869774],\n [6.82e-9, 5.0221361683, 17253.04110768959],\n [5.65e-9, 4.29309214275, 11933.3679606696],\n [4.86e-9, 0.77746204893, 27.4015560968],\n [5.03e-9, 0.58974557727, 15671.0817594066],\n [6.16e-9, 4.06539884128, 227.476132789],\n [5.37e-9, 2.15064382406, 21954.15760939799],\n [6.69e-9, 6.06995500278, 47162.5163546352],\n [5.4e-9, 2.83444221432, 5326.7866940208],\n [4.74e-9, 0.40346826846, 6915.8595893046],\n [5.32e-9, 5.26131065063, 10988.808157535],\n [5.82e-9, 3.24533095664, 153.7788104848],\n [6.41e-9, 3.24711790399, 2107.0345075424],\n [6.19e-9, 3.08302108547, 33019.0211122046],\n [4.66e-9, 3.14982369789, 10440.2742926036],\n [4.66e-9, 0.90708835651, 5966.6839803348],\n [5.28e-9, 0.8192645447, 813.5502839598],\n [6.03e-9, 3.81378921927, 316428.22867391503],\n [5.59e-9, 1.8189498573, 17996.0311682222],\n [4.37e-9, 2.28631745987, 6303.8512454838],\n [5.18e-9, 4.86068318058, 20597.2439630412],\n [4.24e-9, 6.23520018697, 6489.2613984286],\n [5.18e-9, 6.17617826756, 0.2438174835],\n [4.04e-9, 5.72804304258, 5642.1982426092],\n [4.58e-9, 1.34117773914, 6287.0080032545],\n [5.48e-9, 5.6845445832, 155427.542936241],\n [5.47e-9, 1.03391472434, 3646.3503773544],\n [4.28e-9, 4.6980968782, 846.0828347512],\n [4.13e-9, 6.0252069939, 6279.4854213396],\n [5.34e-9, 3.03030638223, 66567.48586525429],\n [3.83e-9, 1.4905558804, 19800.9459562248],\n [4.11e-9, 5.28384176408, 18451.07854656599],\n [3.52e-9, 4.68891600525, 4907.3020501456],\n [4.8e-9, 5.36572651091, 348.924420448],\n [3.44e-9, 5.89157452889, 6546.1597733642],\n [3.4e-9, 0.37557440365, 13119.72110282519],\n [4.34e-9, 4.98417856239, 6702.5604938666],\n [3.32e-9, 2.6890934443, 29296.6153895786],\n [4.48e-9, 2.16478480251, 5905.7022420756],\n [3.44e-9, 2.06546633735, 49.7570254718],\n [3.15e-9, 1.24023810969, 4061.2192153944],\n [3.24e-9, 2.30897526929, 5017.508371365],\n [4.13e-9, 0.17171692945, 6286.6662786432],\n [4.31e-9, 3.8660110138, 12489.8856287072],\n [3.49e-9, 4.55372493131, 4933.2084403326],\n [3.23e-9, 0.41971136084, 10770.8932562618],\n [3.41e-9, 2.68612860807, 11.0457002639],\n [3.16e-9, 3.52966641606, 17782.7320727842],\n [3.15e-9, 5.63357264999, 568.8218740274],\n [3.4e-9, 3.83571212349, 10660.6869350424],\n [2.96e-9, 0.62703270489, 20995.3929664494],\n [4.05e-9, 1.00084965393, 16460.33352952499],\n [4.14e-9, 1.21998752076, 51092.7260508548],\n [3.36e-9, 4.71465945215, 6179.9830757728],\n [3.61e-9, 3.71235613733, 28237.2334593894],\n [3.27e-9, 1.05606504715, 11919.140866668],\n [3.27e-9, 6.1422242098, 6254.6266625236],\n [2.68e-9, 2.47224339737, 664.75604513],\n [2.69e-9, 1.86210872453, 23141.5583829246],\n [3.45e-9, 0.93461290184, 6058.7310542895],\n [3.53e-9, 4.50033650657, 36949.2308084242],\n [3.44e-9, 6.26166140367, 24356.7807886416],\n [3e-9, 4.46964001975, 6418.1409300268],\n [2.6e-9, 4.04967464725, 6525.8044539654],\n [2.98e-9, 2.20018811054, 156137.47598479927],\n [2.53e-9, 3.49930797865, 29864.334027309],\n [2.54e-9, 2.44883530154, 5331.3574437408],\n [2.96e-9, 0.84341183907, 5729.506447149],\n [2.41e-9, 2.00721298729, 16737.5772365966],\n [3.11e-9, 1.23668016336, 6281.5913772831],\n [3.32e-9, 3.55576945724, 7668.6374249425],\n [2.36e-9, 2.47437156031, 6245.0481773556],\n [2.64e-9, 4.43924412283, 12964.300703391],\n [2.57e-9, 1.79654471948, 11080.1715789176],\n [2.6e-9, 3.3307759606, 5888.4499649322],\n [2.85e-9, 0.3088636143, 11823.1616394502],\n [2.9e-9, 5.70141882483, 77.673770428],\n [2.55e-9, 4.00939662024, 5881.4037282342],\n [2.53e-9, 4.73318512715, 16723.350142595],\n [2.28e-9, 0.95333661324, 5540.0857894588],\n [2.81e-9, 1.29199646396, 22805.7355659936],\n [3.19e-9, 1.38633229189, 163096.18036118348],\n [2.24e-9, 1.65156322696, 10027.9031957292],\n [2.26e-9, 0.34125379653, 17796.9591667858],\n [2.36e-9, 4.19817431922, 19.66976089979],\n [2.81e-9, 4.14114899916, 12539.853380183],\n [2.75e-9, 5.50306930248, 32.5325507914],\n [2.23e-9, 5.23334210294, 56.8983749356],\n [2.17e-9, 6.08598789777, 6805.6532680852],\n [2.28e-9, 5.17114391778, 11720.0688652316],\n [2.74e-9, 4.50716805713, 6016.4688082696],\n [2.45e-9, 3.96486270306, 22.7752014508],\n [2.2e-9, 4.7207808197, 6.62855890001],\n [2.07e-9, 5.71701403951, 41.5507909848],\n [2.04e-9, 3.9122741125, 2699.7348193176],\n [2.09e-9, 0.86881969024, 6321.1035226272],\n [2e-9, 2.11984442601, 4274.5183108324],\n [2e-9, 5.39839888151, 6019.9919266186],\n [2.09e-9, 5.67606291663, 11293.4706743556],\n [2.52e-9, 1.6496572935, 9380.9596727172],\n [2.75e-9, 5.04826903506, 73.297125859],\n [2.08e-9, 1.88207277133, 11300.5842213564],\n [2.06e-9, 5.0728488933, 6277.552925684],\n [2.72e-9, 0.74640924904, 1975.492545856],\n [1.99e-9, 3.30813142103, 22743.4093795164],\n [2.69e-9, 4.48560812155, 64471.99124174489],\n [1.92e-9, 2.17463565107, 5863.5912061162],\n [2.28e-9, 5.85373115869, 128.0188433374],\n [2.61e-9, 2.64321183295, 55022.9357470744],\n [1.96e-9, 2.4853762232, 16062.1845261168],\n [1.87e-9, 1.3189176028, 29826.3063546732],\n [2.2e-9, 5.75012110079, 29.429508536],\n [1.87e-9, 4.03230554718, 467.9649903544],\n [2e-9, 5.60555262896, 1066.49547719],\n [2.31e-9, 1.09802712785, 12341.8069042809],\n [1.98e-9, 0.29474229005, 149.5631971346],\n [2.49e-9, 5.1047702317, 7875.6718636242],\n [1.79e-9, 0.87066197995, 12721.572099417],\n [2.03e-9, 1.56914310573, 28286.9904848612],\n [1.98e-9, 3.54061588502, 30.914125635],\n [1.71e-9, 3.45366018621, 5327.4761083828],\n [1.83e-9, 0.72325421604, 6272.0301497275],\n [2.16e-9, 2.97175184412, 19402.7969528166],\n [1.68e-9, 2.51559879907, 23937.856389741],\n [1.95e-9, 0.09045393425, 156.4007205024],\n [2.16e-9, 0.42162375972, 23539.7073863328],\n [1.89e-9, 0.37542530191, 9814.6041002912],\n [2.07e-9, 2.01752547259, 238004.5241572363],\n [2.18e-9, 2.36835893645, 16627.3709153772],\n [1.66e-9, 4.23182960518, 16840.67001081519],\n [2e-9, 2.02153258098, 16097.6799502826],\n [1.69e-9, 0.91318727, 95.9792272178],\n [2.11e-9, 5.73370637657, 151.8972810852],\n [2.04e-9, 0.42643085174, 515.463871093],\n [2.12e-9, 3.00223140894, 12043.574281889],\n [1.92e-9, 5.46153589821, 6379.0550772092],\n [1.6e-9, 6.23798383332, 202.2533951741],\n [2.15e-9, 0.20889073407, 5621.8429232104],\n [1.5e-9, 3.12999753018, 799.8211251654],\n [1.87e-9, 2.12345787867, 491.6632924588],\n [1.92e-9, 1.33928820063, 394.6258850592],\n [1.49e-9, 2.65697593276, 21.335640467],\n [1.46e-9, 5.58021191726, 412.3710968744],\n [1.56e-9, 3.7565767638, 12323.4230960088],\n [1.43e-9, 3.28248547724, 29.8214381488],\n [1.44e-9, 1.07862546598, 1265.5674786264],\n [1.48e-9, 0.2338663109, 10021.8372800994],\n [1.64e-9, 0.94288727597, 14919.0178537546],\n [1.93e-9, 5.92751083827, 40879.4405046438],\n [1.4e-9, 4.97612440269, 158.9435177832],\n [1.48e-9, 2.61651818006, 17157.0618804718],\n [1.4e-9, 3.66947933935, 26084.0218062162],\n [1.47e-9, 5.09968173403, 661.232926781],\n [1.47e-9, 1.36976712162, 4171.4255366138],\n [1.34e-9, 4.79432636012, 111.1866422876],\n [1.4e-9, 1.27748013377, 107.6635239386],\n [1.71e-9, 2.77586207403, 26735.9452622132],\n [1.83e-9, 5.43418358741, 369.6998159404],\n [1.34e-9, 3.09132862833, 17.812522118],\n [1.32e-9, 3.05633896779, 22490.9621214934],\n [1.81e-9, 4.22950689891, 966.9708774356],\n [1.66e-9, 3.67660435776, 15508.6151232744],\n [1.52e-9, 5.28885813387, 12669.2444742014],\n [1.5e-9, 5.86819430895, 97238.62754448749],\n [1.45e-9, 5.07330784304, 87.30820453981],\n [1.33e-9, 5.65471067133, 31.9723058168],\n [1.24e-9, 2.83326216907, 12566.2190102856],\n [1.4e-9, 5.84212721453, 22476.73502749179],\n [1.34e-9, 3.12858101887, 32217.2001810808],\n [1.37e-9, 0.86487461904, 9924.8104215106],\n [1.72e-9, 1.98369595114, 174242.4659640497],\n [1.7e-9, 4.41115280254, 327574.51427678124],\n [1.28e-9, 4.49087631612, 31415.379249957],\n [1.51e-9, 0.46542092001, 39609.6545831656],\n [1.53e-9, 3.78801830344, 17363.24742890899],\n [1.65e-9, 5.31654110459, 16943.7627850338],\n [1.65e-9, 4.06747587817, 58953.145443294],\n [1.18e-9, 0.63846333239, 6.0659156298],\n [1.59e-9, 0.86086959274, 221995.02880149524],\n [1.19e-9, 5.96432932413, 1385.8952763362],\n [1.14e-9, 5.16516114595, 25685.872802808],\n [1.12e-9, 4.92889233335, 56.8032621698],\n [1.19e-9, 2.40626699328, 18635.9284545362],\n [1.15e-9, 0.23374479051, 418.9243989006],\n [1.13e-9, 2.7938757674, 6272.4391846416],\n [1.22e-9, 0.936940724, 24492.40611365159],\n [1.33e-9, 4.87155573413, 22345.2603761082],\n [1.13e-9, 3.80362889046, 6293.7125153412],\n [1.3e-9, 3.72996018683, 12573.2652469836],\n [1.07e-9, 3.40227152756, 21393.5419698576],\n [1.22e-9, 1.00385670948, 95143.1329209781],\n [1.4e-9, 1.094130757, 44809.6502008634],\n [1.12e-9, 6.05462382871, 433.7117378768],\n [1.23e-9, 4.55640196386, 239424.39025435288],\n [1.04e-9, 1.54931540602, 127.9515330346],\n [1.11e-9, 3.04186517428, 8982.810669309],\n [1.02e-9, 4.12448497391, 15664.03552270859],\n [1.07e-9, 4.67919356465, 77690.75950573849],\n [1.18e-9, 4.5232017012, 19004.6479494084],\n [1.07e-9, 5.71774478555, 77736.78343050249],\n [1.03e-9, 4.79332126649, 33794.5437235286],\n [1.43e-9, 1.81201813018, 4214.0690150848],\n [1.02e-9, 3.7581778657, 58864.5439181463],\n [1.25e-9, 1.14419195615, 625.6701923124],\n [1.24e-9, 3.27736513892, 12566.08438968],\n [1.1e-9, 1.08705709966, 2787.0430238574],\n [1.02e-9, 4.75119578149, 12242.6462833254],\n [1.01e-9, 4.91289409429, 401.6721217572],\n [1.38e-9, 2.89578979744, 9411.4646150872],\n [1.29e-9, 1.23516042371, 12029.3471878874],\n [1.38e-9, 2.45654707076, 7576.560073574],\n [9.8e-10, 5.4477176502, 29026.48522950779],\n [1.34e-9, 1.43105174912, 86464.6133168312],\n [1.08e-9, 0.9898977494, 5636.0650166766],\n [1.17e-9, 5.17362847134, 34520.3093093808],\n [9.7e-10, 3.34717130592, 16310.9790457206],\n [1.07e-9, 2.94547931851, 24602.61243487099],\n [9.8e-10, 4.37041908717, 34513.2630726828],\n [1.25e-9, 2.72182830814, 24065.80792277559],\n [1.11e-9, 0.58899131543, 6303.4311693902],\n [1.02e-9, 0.66938025772, 10239.5838660108],\n [1.19e-9, 1.21666517886, 1478.8665740644],\n [1.11e-9, 1.04321934681, 16522.6597160022],\n [9.4e-10, 4.31076339857, 26880.3198130326],\n [9.8e-10, 4.14248433763, 6599.467719648],\n [9.5e-10, 2.89807657534, 34911.412076091],\n [9.7e-10, 0.89642320201, 71980.63357473118],\n [9.5e-10, 0.65717727948, 6288.5987742988],\n [1.16e-9, 4.19967201116, 206.7007372966],\n [9.5e-10, 1.78315464297, 18139.2945014159],\n [9.9e-10, 1.37437847718, 1039.0266107904],\n [1.26e-9, 3.21642544972, 305281.9430710488],\n [9.4e-10, 0.6899503186, 7834.1210726394],\n [9.5e-10, 5.58111421744, 3104.9300594238],\n [1.08e-9, 0.52696637156, 276.7457718644],\n [1.24e-9, 3.43899862683, 172146.9713405403],\n [8.7e-10, 1.18764938806, 18842.11400297339],\n [8.7e-10, 0.09094166389, 15141.390794312],\n [1.08e-9, 1.03363414379, 82576.9812209953],\n [1.19e-9, 2.86729109648, 90394.82301305079],\n [1.04e-9, 3.39218586218, 290.972865866],\n [9.4e-10, 5.68284937444, 32367.0976562076],\n [1.17e-9, 0.78475956902, 83286.91426955358],\n [1.05e-9, 3.96551057233, 6357.8574485587],\n [9.4e-10, 4.03443174853, 13341.6743113068],\n [9.6e-10, 0.92742567538, 1062.9050485382],\n [8.9e-10, 4.45371820659, 792.7748884674],\n [8.7e-10, 0.40013481685, 90279.92316810328],\n [1.13e-9, 2.48165313368, 48739.859897083],\n [8.7e-10, 3.43122851097, 27707.5424942948],\n [1.01e-9, 5.32081603011, 2301.58581590939],\n [8.4e-10, 0.67020912458, 28628.3362260996],\n [8.2e-10, 0.87060089842, 10241.2022911672],\n [8.6e-10, 4.6206479229, 36147.4098773004],\n [8e-10, 4.77649625396, 6819.8803620868],\n [9.5e-10, 2.87032913492, 23020.65308658799],\n [1.07e-9, 5.77864921649, 34115.1140692746],\n [1.1e-9, 3.32898859416, 72140.6286666874],\n [8.7e-10, 4.40657711727, 142.1786270362],\n [1.03e-9, 4.2250672681, 30666.1549584328],\n [8.2e-10, 3.89404392552, 5547.1993364596],\n [1.09e-9, 1.94546065204, 24279.10701821359],\n [8.7e-10, 4.32472045435, 742.9900605326],\n [1.07e-9, 4.91580912547, 277.0349937414],\n [8.8e-10, 2.10180817713, 26482.1708096244],\n [8.6e-10, 4.01895021483, 12491.3701014155],\n [1.06e-9, 5.49092372854, 62883.3551395136],\n [8e-10, 6.1978570495, 6709.6740408674],\n [1.05e-9, 2.44166529175, 6298.3283211764],\n [8.3e-10, 4.90662164029, 51.28033786241],\n [7.4e-10, 2.34622575625, 7018.9523635232],\n [7.8e-10, 6.06947270265, 148434.53403769128],\n [7.9e-10, 3.03048221644, 838.9692877504],\n [7.3e-10, 3.05008665738, 567.7186377304],\n [1.02e-9, 3.59223815483, 22380.755800274],\n [8.4e-10, 0.46604373274, 45.1412196366],\n [9.2e-10, 4.12917744733, 18216.443810661],\n [9.1e-10, 0.49382398887, 6453.7487206106],\n [7.3e-10, 1.72446569088, 21424.4666443034],\n [6.9e-10, 1.4937267773, 21548.9623692918],\n [6.9e-10, 4.73181018058, 8858.3149443206],\n [7.7e-10, 0.47683782532, 11520.9968637952],\n [7.8e-10, 5.4394263099, 15265.8865193004],\n [7.7e-10, 2.53773750372, 76.2660712756],\n [6.9e-10, 2.53932635192, 9910.583327509],\n [7.5e-10, 0.1559472921, 23006.42599258639],\n [7.8e-10, 2.41004950269, 6393.2821712108],\n [6.7e-10, 5.05152846816, 57375.8019008462],\n [7.7e-10, 3.9107560486, 24383.0791084414],\n [6.7e-10, 0.78239147387, 12779.4507954208],\n [7.1e-10, 1.24817900687, 10419.9862835076],\n [6.7e-10, 5.7785122776, 6311.5250374592],\n [6.1e-10, 2.66705754411, 18852.7506683232],\n [7.9e-10, 1.89137330427, 6528.9074962208],\n [8.4e-10, 5.11523704221, 50317.2034395308],\n [5.9e-10, 3.38290426621, 35707.7100829074],\n [6.5e-10, 4.66767908854, 26709.6469424134],\n [7.9e-10, 5.59773848156, 71960.38658322369],\n [6.1e-10, 3.30733768968, 18845.7044316252],\n [5.7e-10, 3.90831298022, 5999.2165311262],\n [5.8e-10, 3.92572820333, 30348.883772767],\n [6.1e-10, 0.05695045822, 7856.89627409019],\n [6.1e-10, 5.63297960691, 7863.9425107882],\n [6.8e-10, 2.53986117507, 20452.8694122218],\n [5.3e-10, 5.44021645443, 32370.9789915656],\n [5.9e-10, 4.95695131145, 11925.2740926006],\n [5.9e-10, 5.34668243273, 137288.2484348251],\n [5.6e-10, 4.05779957425, 17892.93839400359],\n [5.3e-10, 3.94182462468, 18624.8827542723],\n [4.9e-10, 2.11782803206, 22594.05489571199],\n [6.2e-10, 2.47154086715, 12345.739057544],\n [4.9e-10, 5.7659693738, 18606.4989460002],\n [5.2e-10, 6.20902099741, 21947.1113727],\n [5.1e-10, 3.13287981215, 33326.5787331742],\n [5.7e-10, 6.17003357597, 61306.0115970658],\n [6.4e-10, 5.66596451842, 34596.3646546524],\n [6.6e-10, 3.922623355, 69853.3520756813],\n [5.3e-10, 5.51119362049, 77710.24834977149],\n [5.3e-10, 4.88573986965, 77717.29458646949],\n [4.8e-10, 2.71399112516, 20760.4270331914],\n [4.6e-10, 6.08376164442, 29822.7832363242],\n [5.2e-10, 0.3139748138, 37724.7534197482],\n [4.5e-10, 5.53587248663, 6262.7205305926],\n [5.9e-10, 2.45437896854, 69166.430989505],\n [6e-10, 5.24261569842, 56600.2792895222],\n [5.1e-10, 6.15794342172, 11616.976091013],\n [6e-10, 1.74758109828, 44034.1275895394],\n [4.9e-10, 5.08973141046, 33990.6183442862],\n [4.4e-10, 3.28270864884, 29424.634232916],\n [5.2e-10, 5.34866947943, 28313.288804661],\n [5.9e-10, 2.12384971916, 36173.7081971002],\n [5e-10, 0.46480931695, 25287.7237993998],\n [4.4e-10, 2.0550351721, 63658.8777508376],\n [4.4e-10, 1.71009200258, 13362.4497067992],\n [4.1e-10, 3.91721318316, 6279.1945146334],\n [4.2e-10, 1.52106001448, 23550.34405168259],\n [4.2e-10, 3.10938258068, 84672.47584450469],\n [4.1e-10, 3.78863023321, 35050.00027447539],\n [4.2e-10, 5.57543459263, 38500.2760310722],\n [4e-10, 5.55145719363, 12565.1713789146],\n [5.4e-10, 0.889354921, 50290.905119731],\n [5.5e-10, 2.50268487636, 77828.671313068],\n [5.4e-10, 4.16257918787, 22910.44676536859],\n [4.1e-10, 2.32141215064, 6286.9571853494],\n [4.5e-10, 3.18590576311, 45585.1728121874],\n [4.5e-10, 2.24348941683, 23646.32327890039],\n [4.3e-10, 3.8789211095, 6549.6828917132],\n [4.8e-10, 2.11364139445, 31570.7996493912],\n [4.3e-10, 5.55099558987, 12359.9661515456],\n [4.1e-10, 4.88191569433, 23536.11695768099],\n [4.9e-10, 2.44790922235, 13613.804277336],\n [4.7e-10, 3.5818169391, 4797.0957289262]\n ],\n \"1\": [\n [6283.0758499914, 0, 0],\n [0.00206058863, 2.67823455808, 6283.0758499914],\n [0.00004303419, 2.63512233481, 12566.1516999828],\n [0.00000425264, 1.59046982018, 3.523118349],\n [0.00000109017, 2.96631010675, 1577.3435424478],\n [9.3479e-7, 2.59211109542, 18849.2275499742],\n [0.00000119305, 5.79555765566, 26.2983197998],\n [7.2121e-7, 1.13840581212, 529.6909650946],\n [6.7784e-7, 1.87453300345, 398.1490034082],\n [6.735e-7, 4.40932832004, 5507.5532386674],\n [5.9045e-7, 2.88815790631, 5223.6939198022],\n [5.5976e-7, 2.17471740035, 155.4203994342],\n [4.5411e-7, 0.39799502896, 796.2980068164],\n [3.6298e-7, 0.46875437227, 775.522611324],\n [2.8962e-7, 2.64732254645, 7.1135470008],\n [1.9097e-7, 1.84628376049, 5486.777843175],\n [2.0844e-7, 5.34138275149, 0.9803210682],\n [1.8508e-7, 4.96855179468, 213.299095438],\n [1.6233e-7, 0.03216587315, 2544.3144198834],\n [1.7293e-7, 2.9911676063, 6275.9623029906],\n [1.5832e-7, 1.43049301283, 2146.1654164752],\n [1.4608e-7, 1.2046979369, 10977.078804699],\n [1.1877e-7, 3.25805082007, 5088.6288397668],\n [1.1514e-7, 2.07502080082, 4694.0029547076],\n [9.721e-8, 4.2392586526, 1349.8674096588],\n [9.969e-8, 1.30263423409, 6286.5989683404],\n [9.452e-8, 2.69956827011, 242.728603974],\n [1.2461e-7, 2.83432282119, 1748.016413067],\n [1.1808e-7, 5.27379760438, 1194.4470102246],\n [8.577e-8, 5.6447608598, 951.7184062506],\n [1.0641e-7, 0.76614722966, 553.5694028424],\n [7.576e-8, 5.30056172859, 2352.8661537718],\n [5.764e-8, 1.77228445837, 1059.3819301892],\n [6.385e-8, 2.65034514038, 9437.762934887],\n [5.223e-8, 5.66135782131, 71430.69561812909],\n [5.315e-8, 0.91110018969, 3154.6870848956],\n [6.101e-8, 4.66633726278, 4690.4798363586],\n [4.335e-8, 0.23934560382, 6812.766815086],\n [5.041e-8, 1.42489704722, 6438.4962494256],\n [4.259e-8, 0.77355543889, 10447.3878396044],\n [5.2e-8, 1.85528830215, 801.8209311238],\n [3.744e-8, 2.00119905572, 8031.0922630584],\n [3.553e-8, 2.42789590229, 14143.4952424306],\n [3.372e-8, 3.86210786421, 1592.5960136328],\n [3.38e-8, 0.88545388924, 12036.4607348882],\n [3.196e-8, 3.19713328141, 4705.7323075436],\n [3.221e-8, 0.6160104899, 8429.2412664666],\n [4.132e-8, 5.23992584671, 7084.8967811152],\n [2.97e-8, 6.07029819073, 4292.3308329504],\n [2.9e-8, 2.32464208411, 20.3553193988],\n [3.504e-8, 4.79976712702, 6279.5527316424],\n [2.95e-8, 1.43108874817, 5746.271337896],\n [2.697e-8, 4.80365209201, 7234.794256242],\n [2.531e-8, 6.22289990904, 6836.6452528338],\n [2.745e-8, 0.93466065396, 5760.4984318976],\n [3.25e-8, 3.39951915286, 7632.9432596502],\n [2.278e-8, 5.00339914806, 17789.845619785],\n [2.076e-8, 3.95551309007, 10213.285546211],\n [2.061e-8, 2.2240771919, 5856.4776591154],\n [2.252e-8, 5.67166717686, 11499.6562227928],\n [2.148e-8, 5.20182663314, 11513.8833167944],\n [1.886e-8, 0.53198539077, 3340.6124266998],\n [1.875e-8, 4.73511969924, 83996.84731811189],\n [2.06e-8, 2.54985307819, 25132.3033999656],\n [1.794e-8, 1.47435300254, 4164.311989613],\n [1.778e-8, 3.02473091781, 5.5229243074],\n [2.036e-8, 0.90908165072, 6256.7775301916],\n [2.064e-8, 2.27051326957, 522.5774180938],\n [1.773e-8, 3.03090500693, 5753.3848848968],\n [1.569e-8, 6.12406216872, 5216.5803728014],\n [1.59e-8, 4.63713748247, 3.2863574178],\n [1.533e-8, 4.20305593883, 13367.9726311066],\n [1.427e-8, 1.19087535126, 3894.1818295422],\n [1.376e-8, 4.24955891338, 426.598190876],\n [1.375e-8, 3.09301252193, 135.0650800354],\n [1.308e-8, 3.0849213889, 5643.1785636774],\n [1.34e-8, 5.76513167968, 6040.3472460174],\n [1.25e-8, 3.07748196332, 11926.2544136688],\n [1.551e-8, 3.07664090662, 6681.2248533996],\n [1.148e-8, 3.24144202282, 12168.0026965746],\n [1.268e-8, 2.09201189992, 6290.1893969922],\n [1.248e-8, 3.44506939791, 536.8045120954],\n [1.118e-8, 2.31830078762, 16730.4636895958],\n [1.105e-8, 5.31966001019, 23.8784377478],\n [1.012e-8, 3.74953487087, 7860.4193924392],\n [1.025e-8, 2.4468377161, 1990.745017041],\n [9.62e-9, 0.81771017882, 3.881335358],\n [9.11e-9, 0.41724352112, 7079.3738568078],\n [1.091e-8, 3.98233608618, 11506.7697697936],\n [9.57e-9, 4.07671436153, 6127.6554505572],\n [8.35e-9, 5.28348689371, 11790.6290886588],\n [8.02e-9, 3.88779080089, 10973.55568635],\n [7.73e-9, 2.41044394817, 1589.0728952838],\n [7.58e-9, 1.30034365873, 103.0927742186],\n [7.49e-9, 4.96281442361, 6496.3749454294],\n [7.65e-9, 3.36312388424, 36.0278666774],\n [9.15e-9, 5.41549763095, 206.1855484372],\n [7.76e-9, 2.57589060224, 11371.7046897582],\n [7.72e-9, 3.98363364977, 955.5997416086],\n [7.49e-9, 5.17900231417, 10969.9652576982],\n [8.06e-9, 0.34226117299, 9917.6968745098],\n [7.28e-9, 5.20962563787, 38.0276726358],\n [6.85e-9, 2.77592961854, 20.7753954924],\n [6.36e-9, 4.28242193632, 28.4491874678],\n [6.08e-9, 5.63278510221, 10984.1923516998],\n [7.04e-9, 5.60739437733, 3738.761430108],\n [6.85e-9, 0.38876148682, 15.252471185],\n [6.01e-9, 0.73489602442, 419.4846438752],\n [7.16e-9, 2.65286869987, 6309.3741697912],\n [5.84e-9, 5.54508741381, 17298.1823273262],\n [6.28e-9, 1.11733054796, 7058.5984613154],\n [6.88e-9, 2.59684132401, 3496.032826134],\n [4.85e-9, 0.44470714066, 12352.8526045448],\n [5.62e-9, 2.82510352358, 3930.2096962196],\n [5.97e-9, 5.27675789973, 10575.4066829418],\n [5.83e-9, 3.1893153986, 4732.0306273434],\n [5.26e-9, 5.01737745304, 5884.9268465832],\n [5.4e-9, 1.29182747488, 640.8776073822],\n [4.81e-9, 5.49721461067, 5230.807466803],\n [4.06e-9, 5.21253018484, 220.4126424388],\n [3.95e-9, 1.87489912123, 16200.7727245012],\n [3.67e-9, 0.88533542945, 6283.14316029419],\n [3.69e-9, 3.84778078192, 18073.7049386502],\n [3.79e-9, 0.37991716505, 10177.2576795336],\n [3.56e-9, 3.84152910109, 11712.9553182308],\n [3.74e-9, 5.01577520608, 7.046236698],\n [3.81e-9, 4.30250406634, 6062.6632075526],\n [4.71e-9, 0.86388942467, 6069.7767545534],\n [3.67e-9, 1.3294383993, 6283.0085396886],\n [4.6e-9, 5.19667219582, 6284.0561710596],\n [3.33e-9, 5.54250425107, 4686.8894077068],\n [3.41e-9, 4.36524495363, 7238.6755916],\n [3.36e-9, 4.00205876835, 3097.88382272579],\n [3.59e-9, 6.22679790284, 245.8316462294],\n [3.07e-9, 2.35299010924, 170.6728706192],\n [3.43e-9, 3.77164927142, 6076.8903015542],\n [2.96e-9, 5.44138799494, 17260.1546546904],\n [3.28e-9, 0.13817705132, 11015.1064773348],\n [2.69e-9, 1.13308244952, 12569.6748183318],\n [2.63e-9, 0.0055073751, 4136.9104335162],\n [2.82e-9, 5.04399588559, 7477.522860216],\n [2.8e-9, 3.13703211405, 12559.038152982],\n [2.59e-9, 0.93882269388, 5642.1982426092],\n [2.92e-9, 1.98426314297, 12132.439962106],\n [2.47e-9, 3.84244798673, 5429.8794682394],\n [3.19e-9, 5.0417014879, 90617.7374312997],\n [2.45e-9, 5.70469737024, 65147.6197681377],\n [3.18e-9, 1.35581968834, 78051.5857313169],\n [2.41e-9, 0.99469787369, 3634.6210245184],\n [2.46e-9, 3.06168069393, 110.2063212194],\n [2.39e-9, 6.11854529589, 11856.2186514245],\n [2.67e-9, 0.65297608414, 21228.3920235458],\n [2.62e-9, 1.51070507866, 12146.6670561076],\n [2.3e-9, 1.75923794017, 9779.1086761254],\n [2.23e-9, 2.00967043606, 6172.869528772],\n [2.46e-9, 1.10411690861, 6282.0955289232],\n [2.14e-9, 4.03840492266, 14314.1681130498],\n [2.12e-9, 2.13695623228, 5849.3641121146],\n [2.07e-9, 3.07724246401, 11.729352836],\n [2.07e-9, 6.10303325026, 23543.23050468179],\n [2.66e-9, 1.00720021877, 2388.8940204492],\n [2.17e-9, 6.27840212312, 17267.26820169119],\n [2.31e-9, 5.37372783468, 13916.0191096416],\n [2.04e-9, 2.34615348695, 266.6070417218],\n [1.95e-9, 5.55015549753, 6133.5126528568],\n [2.03e-9, 4.65616806503, 24072.9214697764],\n [1.88e-9, 2.52682282169, 6525.8044539654],\n [1.77e-9, 1.73426919199, 154717.6098876827],\n [1.87e-9, 4.76501318048, 4535.0594369244],\n [1.86e-9, 4.63080493407, 10440.2742926036],\n [1.83e-9, 3.20060840641, 8635.9420037632],\n [1.72e-9, 1.45551703877, 9225.539273283],\n [1.62e-9, 3.30665137166, 639.897286314],\n [1.68e-9, 2.17671416605, 27.4015560968],\n [1.6e-9, 1.6816871275, 15110.4661198662],\n [1.94e-9, 2.79243768345, 7342.4577801806],\n [1.83e-9, 0.56273524797, 13517.8701062334],\n [1.72e-9, 5.97039514134, 4701.1165017084],\n [1.79e-9, 3.58450811616, 87.30820453981],\n [1.52e-9, 2.84070476839, 5650.2921106782],\n [1.56e-9, 1.07156076421, 18319.5365848796],\n [1.82e-9, 0.44053620124, 17253.04110768959],\n [1.42e-9, 1.4629013752, 11087.2851259184],\n [1.31e-9, 5.40912137746, 2699.7348193176],\n [1.44e-9, 2.07312089638, 25158.6017197654],\n [1.47e-9, 6.15107800602, 9623.6882766912],\n [1.41e-9, 5.55739979498, 10454.5013866052],\n [1.35e-9, 0.0609812943, 16723.350142595],\n [1.23e-9, 5.81194797368, 17256.6315363414],\n [1.24e-9, 2.36269386269, 4933.2084403326],\n [1.26e-9, 3.47483886466, 22483.84857449259],\n [1.59e-9, 5.63944722033, 5729.506447149],\n [1.37e-9, 1.93811728826, 20426.571092422],\n [1.23e-9, 3.92815962825, 17996.0311682222],\n [1.48e-9, 3.02542567608, 1551.045222648],\n [1.21e-9, 0.05537321071, 13095.8426650774],\n [1.2e-9, 5.91904349732, 6206.8097787158],\n [1.34e-9, 3.11122937825, 21954.15760939799],\n [1.19e-9, 5.52143897201, 709.9330485583],\n [1.22e-9, 3.00840036775, 19800.9459562248],\n [1.27e-9, 1.37534182407, 14945.3161735544],\n [1.41e-9, 2.56886299638, 1052.2683831884],\n [1.23e-9, 2.83671175442, 11919.140866668],\n [1.18e-9, 0.81918292547, 5331.3574437408],\n [1.51e-9, 2.68728567951, 11769.8536931664],\n [1.19e-9, 5.08654046247, 5481.2549188676],\n [1.13e-9, 4.42675663942, 18422.62935909819],\n [1.53e-9, 2.46021790779, 11933.3679606696],\n [1.08e-9, 1.04936452151, 11403.676995575],\n [1.28e-9, 0.99810456461, 8827.3902698748],\n [1.44e-9, 2.54869747042, 227.476132789],\n [1.5e-9, 4.50631437136, 2379.1644735716],\n [1.09e-9, 0.29269062317, 16737.5772365966],\n [1.22e-9, 4.23040027813, 29.429508536],\n [1.11e-9, 5.16970710025, 17782.7320727842],\n [1.05e-9, 1.61738153441, 13119.72110282519],\n [1e-9, 3.52204690579, 18052.9295431578],\n [1.08e-9, 1.08493117155, 16858.4825329332],\n [1.35e-9, 3.2016061697, 6262.300454499],\n [1.06e-9, 1.96085069786, 74.7815985673],\n [1.29e-9, 4.85949366504, 16496.3613962024],\n [1.1e-9, 2.30605777952, 16460.33352952499],\n [9.7e-10, 3.5091894021, 5333.9002410216],\n [9.9e-10, 3.56417337974, 735.8765135318],\n [9.6e-10, 3.40918487598, 15720.8387848784],\n [9.4e-10, 5.01601027363, 3128.3887650958],\n [9.7e-10, 1.65579893894, 533.2140834436],\n [9.2e-10, 0.89219199493, 29296.6153895786],\n [1.23e-9, 3.16062062663, 9380.9596727172],\n [1.02e-9, 1.20493500565, 23020.65308658799],\n [8.8e-10, 2.21265504437, 12721.572099417],\n [8.9e-10, 1.5432266957, 20199.094959633],\n [1.21e-9, 6.19860353182, 9388.0059094152],\n [8.9e-10, 4.08082274765, 22805.7355659936],\n [9.8e-10, 1.09176668094, 12043.574281889],\n [8.6e-10, 1.13649001466, 143571.32428481648],\n [8.8e-10, 5.96980472191, 107.6635239386],\n [8.2e-10, 5.01561173481, 22003.9146348698],\n [9.4e-10, 1.69615700473, 23006.42599258639],\n [8.1e-10, 3.00664741995, 2118.7638603784],\n [9.8e-10, 1.39215287161, 8662.240323563],\n [8e-10, 5.16340988714, 17796.9591667858],\n [8.2e-10, 5.86893959287, 2787.0430238574],\n [7.7e-10, 0.80723694712, 167283.7615876655],\n [9.1e-10, 5.74902425304, 21424.4666443034],\n [7.6e-10, 5.67183650604, 14.2270940016],\n [8.1e-10, 6.16619455699, 1039.0266107904],\n [7.6e-10, 3.21449884756, 111.1866422876],\n [7.8e-10, 1.37531518377, 21947.1113727],\n [7.4e-10, 3.58814195051, 11609.8625440122],\n [7.7e-10, 4.84846488388, 22743.4093795164],\n [9e-10, 1.48869013606, 15671.0817594066],\n [8.2e-10, 3.48618398216, 29088.811415985],\n [7.1e-10, 2.2159156119, 12029.3471878874],\n [6.9e-10, 1.93625656075, 135.62532501],\n [7e-10, 2.66552760898, 18875.525869774],\n [6.9e-10, 5.41478093731, 26735.9452622132],\n [7.9e-10, 5.15158156951, 12323.4230960088],\n [7.8e-10, 4.17014063638, 1066.49547719],\n [6.5e-10, 5.64584720343, 12139.5535091068],\n [7.1e-10, 3.89804774037, 22779.4372461938],\n [6.3e-10, 4.53968787714, 8982.810669309],\n [7.6e-10, 3.29088891716, 2942.4634232916],\n [6.9e-10, 0.94232113005, 14919.0178537546],\n [6.3e-10, 4.0918653549, 16062.1845261168],\n [6.5e-10, 3.34580407184, 51.28033786241],\n [6.5e-10, 5.75757544877, 52670.0695933026],\n [5.7e-10, 5.25050277534, 20995.3929664494],\n [6.1e-10, 1.92290673861, 6805.6532680852],\n [6.1e-10, 0.08878901558, 13362.4497067992],\n [7.6e-10, 1.86947679415, 25287.7237993998],\n [5.6e-10, 4.25396542622, 6709.6740408674],\n [5.8e-10, 4.79429715781, 6286.3622074092],\n [7.3e-10, 0.53299090807, 2301.58581590939],\n [7e-10, 4.31243357502, 19402.7969528166],\n [6.7e-10, 2.53852336668, 377.3736079158],\n [5.6e-10, 3.20816844695, 24889.5747959916],\n [5.4e-10, 5.17336469511, 26084.0218062162],\n [5.3e-10, 3.17675406016, 18451.07854656599],\n [5.3e-10, 3.61529270216, 77.673770428],\n [5.3e-10, 0.45467549335, 30666.1549584328],\n [5.3e-10, 2.97761644192, 21548.9623692918],\n [6.1e-10, 0.14805728543, 23013.5395395872],\n [5.1e-10, 3.32803972907, 56.8983749356],\n [5.2e-10, 3.41304011355, 23141.5583829246],\n [5.8e-10, 3.13638677202, 309.2783226558],\n [5.4e-10, 1.60896548545, 13341.6743113068],\n [5.3e-10, 5.81426394852, 16193.65917750039],\n [6.7e-10, 6.27917920454, 22345.2603761082],\n [5e-10, 0.42577644151, 25685.872802808],\n [4.8e-10, 0.70204553352, 1162.4747044078],\n [6.6e-10, 3.64350022359, 15265.8865193004],\n [5e-10, 5.7438291744, 19.66976089979],\n [5.4e-10, 1.97277370837, 23581.2581773176],\n [5.1e-10, 1.23713196525, 12539.853380183],\n [4.6e-10, 5.41431704639, 33019.0211122046],\n [4.6e-10, 4.80640843261, 19651.048481098],\n [5e-10, 1.23847511223, 22476.73502749179],\n [5.1e-10, 4.91913434178, 12592.4500197826],\n [4.6e-10, 2.41369976086, 98068.53671630539],\n [4.5e-10, 3.45227074337, 30774.5016425748],\n [4.5e-10, 4.39659083856, 433.7117378768],\n [4.5e-10, 3.71921056816, 18209.33026366019],\n [4.4e-10, 2.47683925106, 24356.7807886416],\n [4.9e-10, 2.17835058609, 13521.7514415914],\n [4.6e-10, 0.26142733448, 11.0457002639],\n [4.5e-10, 2.46230645202, 51868.2486621788],\n [4.3e-10, 4.29458463014, 28230.18722269139],\n [4.8e-10, 0.89551707131, 56600.2792895222],\n [4.2e-10, 3.63410684699, 4590.910180489],\n [4.9e-10, 3.17757670967, 6303.8512454838],\n [4.3e-10, 4.93350349236, 10021.8372800994],\n [5.2e-10, 3.65410195699, 7872.1487452752],\n [4.1e-10, 4.82166756935, 10988.808157535],\n [4e-10, 1.81891629936, 34596.3646546524],\n [4.3e-10, 1.94164978061, 1903.4368125012],\n [4.1e-10, 0.74461854136, 23937.856389741],\n [4.5e-10, 5.4557501753, 60530.4889857418],\n [5e-10, 5.67355640472, 18216.443810661],\n [4e-10, 0.04502010161, 38526.574350872],\n [5.3e-10, 3.64807615995, 11925.2740926006],\n [4.2e-10, 5.19292937193, 19004.6479494084],\n [4.1e-10, 0.94309683296, 9924.8104215106],\n [3.9e-10, 4.61184303844, 95.9792272178],\n [4.9e-10, 2.05532526216, 12573.2652469836],\n [4.5e-10, 3.73717824543, 7875.6718636242],\n [4.3e-10, 1.14078465002, 49.7570254718],\n [3.9e-10, 1.70539366023, 32217.2001810808],\n [3.7e-10, 1.29390383811, 310.8407988684],\n [3.8e-10, 0.9597092595, 664.75604513],\n [3.9e-10, 0.85957361635, 16522.6597160022],\n [4e-10, 1.00170796001, 36949.2308084242],\n [4e-10, 3.78164718776, 55798.4583583984],\n [3.7e-10, 5.42237070904, 6286.6662786432],\n [3.6e-10, 1.68167662194, 10344.2950653858],\n [4e-10, 5.13217319067, 15664.03552270859],\n [4.9e-10, 3.62741283878, 77713.7714681205],\n [4.5e-10, 6.15877872538, 28286.9904848612],\n [3.6e-10, 3.32158458257, 16207.886271502],\n [3.5e-10, 5.83917764292, 6321.1035226272],\n [3.6e-10, 1.80784164083, 6279.7894925736],\n [3.5e-10, 4.60279245362, 28237.2334593894],\n [3.3e-10, 0.47301775923, 18635.9284545362],\n [3.5e-10, 4.36571027474, 48739.859897083],\n [3.1e-10, 3.06828028412, 6819.8803620868],\n [3.1e-10, 2.4020319848, 28628.3362260996],\n [3.4e-10, 1.90096411242, 12964.300703391],\n [2.9e-10, 6.09291010354, 18606.4989460002],\n [2.8e-10, 3.42046112698, 6288.5987742988],\n [2.8e-10, 3.437361406, 34115.1140692746],\n [2.9e-10, 1.48920816078, 6489.2613984286],\n [2.8e-10, 3.07474749886, 29822.7832363242],\n [3.8e-10, 2.44608264663, 31415.379249957],\n [2.8e-10, 2.98392582088, 6277.552925684],\n [2.7e-10, 5.03556015623, 12779.4507954208],\n [2.7e-10, 5.40812977287, 26087.9031415742],\n [3.8e-10, 5.56439937893, 27832.0382192832],\n [2.6e-10, 3.87685883153, 6262.7205305926],\n [2.7e-10, 6.1556539284, 28759.81087748319],\n [2.5e-10, 5.17122153205, 6915.8595893046],\n [2.7e-10, 4.03132006944, 9910.583327509],\n [3.3e-10, 3.97763407373, 12410.7313005486],\n [2.4e-10, 5.31307120044, 29026.48522950779],\n [2.5e-10, 0.81055213297, 36173.7081971002],\n [2.4e-10, 1.2870610131, 24491.4257925834],\n [2.1e-10, 2.02548478742, 28766.924424484],\n [2.1e-10, 6.07545114034, 18139.2945014159],\n [2.2e-10, 2.31199937131, 6303.4311693902],\n [2.3e-10, 1.35235057478, 49515.382508407],\n [2.3e-10, 2.92765926961, 65236.2212932854],\n [1.9e-10, 0.03636659763, 29864.334027309],\n [2e-10, 0.91374066194, 45585.1728121874],\n [2.1e-10, 4.45003013294, 22490.9621214934],\n [2.2e-10, 1.97119365888, 34513.2630726828],\n [2e-10, 4.11682669951, 17157.0618804718],\n [2.4e-10, 1.40243942415, 14712.317116458],\n [2.2e-10, 2.19759737115, 31570.7996493912],\n [2.1e-10, 1.48739821208, 61306.0115970658],\n [2.5e-10, 5.71465573409, 25934.1243310894]\n ],\n \"2\": [\n [0.00008721859, 1.07253635559, 6283.0758499914],\n [0.0000099099, 3.14159265359, 0],\n [0.00000294833, 0.43717350256, 12566.1516999828],\n [2.7338e-7, 0.05295636147, 3.523118349],\n [1.6333e-7, 5.18820215724, 26.2983197998],\n [1.5745e-7, 3.68504712183, 155.4203994342],\n [9.425e-8, 0.29667114694, 18849.2275499742],\n [8.938e-8, 2.05706319592, 77713.7714681205],\n [6.94e-8, 0.82691541038, 775.522611324],\n [5.061e-8, 4.6624323168, 1577.3435424478],\n [4.06e-8, 1.03067032318, 7.1135470008],\n [3.464e-8, 5.14021224609, 796.2980068164],\n [3.172e-8, 6.05479318507, 5507.5532386674],\n [3.02e-8, 1.19240008524, 242.728603974],\n [2.885e-8, 6.11705865396, 529.6909650946],\n [3.809e-8, 3.44043369494, 5573.1428014331],\n [2.719e-8, 0.30363248164, 398.1490034082],\n [2.365e-8, 4.37666117992, 5223.6939198022],\n [2.538e-8, 2.27966434314, 553.5694028424],\n [2.078e-8, 3.75435095487, 0.9803210682],\n [1.675e-8, 0.90149951436, 951.7184062506],\n [1.534e-8, 5.75895831192, 1349.8674096588],\n [1.224e-8, 2.97285792195, 2146.1654164752],\n [1.449e-8, 4.36401639552, 1748.016413067],\n [1.341e-8, 3.72019379666, 1194.4470102246],\n [1.253e-8, 2.9488872631, 6438.4962494256],\n [9.99e-9, 5.98665341008, 6286.5989683404],\n [9.17e-9, 4.79722195184, 5088.6288397668],\n [8.29e-9, 3.31021398862, 213.299095438],\n [1.102e-8, 1.27094359244, 161000.6857376741],\n [7.64e-9, 3.41231607038, 5486.777843175],\n [1.046e-8, 0.60374190029, 3154.6870848956],\n [8.87e-9, 5.23364022595, 7084.8967811152],\n [6.44e-9, 1.59974355582, 2544.3144198834],\n [6.81e-9, 3.42742947469, 4694.0029547076],\n [6.06e-9, 2.47688996663, 10977.078804699],\n [7.06e-9, 6.19369692903, 4690.4798363586],\n [6.43e-9, 1.98119869589, 801.8209311238],\n [5.02e-9, 1.44415463861, 6836.6452528338],\n [4.9e-9, 2.33889753806, 1592.5960136328],\n [4.58e-9, 1.30867922972, 4292.3308329504],\n [4.31e-9, 0.03542536476, 7234.794256242],\n [3.49e-9, 0.98779272263, 6040.3472460174],\n [3.85e-9, 1.57065592218, 71430.69561812909],\n [3.71e-9, 3.16149051601, 6309.3741697912],\n [3.48e-9, 0.64980950594, 1059.3819301892],\n [4.58e-9, 3.81505682017, 149854.4001348079],\n [3.02e-9, 1.91723873447, 10447.3878396044],\n [3.06e-9, 3.55405857884, 8031.0922630584],\n [3.95e-9, 4.93742673052, 7632.9432596502],\n [3.14e-9, 3.18058352846, 2352.8661537718],\n [2.81e-9, 4.41751404023, 9437.762934887],\n [2.76e-9, 2.71075791682, 3894.1818295422],\n [2.98e-9, 2.52045757001, 6127.6554505572],\n [2.72e-9, 0.24370191144, 25132.3033999656],\n [2.51e-9, 0.55449375765, 6279.5527316424],\n [2.24e-9, 1.40790249012, 4705.7323075436],\n [2.58e-9, 5.29510765044, 6812.766815086],\n [1.78e-9, 0.92636669742, 1990.745017041],\n [2.17e-9, 0.68543630022, 6256.7775301916],\n [1.54e-9, 0.77808632062, 14143.4952424306],\n [1.5e-9, 2.40636982736, 426.598190876],\n [1.96e-9, 6.06877865012, 640.8776073822],\n [1.37e-9, 2.21947617717, 8429.2412664666],\n [1.27e-9, 5.47380312768, 12036.4607348882],\n [1.21e-9, 3.32740512021, 17789.845619785],\n [1.23e-9, 2.16004509785, 10213.285546211],\n [1.16e-9, 0.49705139709, 7058.5984613154],\n [1.38e-9, 2.36181661472, 11506.7697697936],\n [1.01e-9, 0.86299995919, 6290.1893969922],\n [1.18e-9, 5.82317768355, 7860.4193924392],\n [9.2e-10, 5.11639978593, 7079.3738568078],\n [1.25e-9, 2.65424538513, 88860.05707098669],\n [8.8e-10, 4.3118823616, 83996.84731811189],\n [8.4e-10, 3.57682769713, 16730.4636895958],\n [9.7e-10, 5.58011309774, 13367.9726311066],\n [1.02e-9, 2.05853060226, 87.30820453981],\n [8e-10, 4.73827128421, 11926.2544136688],\n [8e-10, 5.41344057121, 10973.55568635],\n [1.06e-9, 4.10978997399, 3496.032826134],\n [7.5e-10, 4.89166898876, 5643.1785636774],\n [1e-9, 3.62645659087, 244287.60000722768],\n [9.6e-10, 1.39443577787, 6681.2248533996],\n [6.9e-10, 1.88399189965, 10177.2576795336],\n [8.7e-10, 0.40842153208, 11015.1064773348],\n [6.6e-10, 0.99444831932, 6525.8044539654],\n [6.6e-10, 1.42471816453, 9917.6968745098],\n [6.7e-10, 5.5124099707, 3097.88382272579],\n [7.6e-10, 2.7156469351, 4164.311989613],\n [8.5e-10, 0.4965552367, 10575.4066829418],\n [7.7e-10, 3.51693861509, 11856.2186514245],\n [6.2e-10, 3.6258762869, 16496.3613962024],\n [5.4e-10, 5.25957420065, 3340.6124266998],\n [5.3e-10, 1.10902178415, 8635.9420037632],\n [4.9e-10, 5.65761054625, 20426.571092422],\n [6.4e-10, 5.79211164779, 2388.8940204492],\n [4.6e-10, 5.45092696155, 6275.9623029906],\n [5.7e-10, 4.97077155798, 14945.3161735544],\n [4.3e-10, 3.30685683359, 9779.1086761254],\n [4.2e-10, 1.61412785248, 12168.0026965746],\n [4.9e-10, 3.92715473768, 5729.506447149],\n [4.2e-10, 0.6348125893, 2699.7348193176],\n [5.6e-10, 4.34038639086, 90955.5516944961],\n [4e-10, 5.66871428338, 11712.9553182308],\n [3.9e-10, 3.10911294009, 16200.7727245012],\n [4e-10, 5.71338386146, 709.9330485583],\n [5.3e-10, 6.17067257683, 233141.3144043615],\n [3.7e-10, 0.32095173508, 24356.7807886416],\n [3.5e-10, 0.95557073457, 17298.1823273262],\n [3.5e-10, 0.64913397996, 25158.6017197654],\n [4.1e-10, 1.53850422484, 65147.6197681377],\n [3.5e-10, 0.77655626359, 13916.0191096416],\n [3.1e-10, 5.35897350775, 5331.3574437408],\n [3e-10, 4.48114682755, 23543.23050468179],\n [3.2e-10, 3.45976963453, 7477.522860216],\n [2.9e-10, 3.46648040769, 13119.72110282519],\n [3.8e-10, 2.90863974625, 12721.572099417],\n [2.9e-10, 3.13390968321, 4136.9104335162],\n [3.5e-10, 3.79717126309, 143571.32428481648],\n [2.7e-10, 0.95726093828, 12559.038152982],\n [2.6e-10, 4.9532687703, 5753.3848848968],\n [3.2e-10, 3.49943896928, 6284.0561710596],\n [2.6e-10, 4.59276256636, 5884.9268465832],\n [2.6e-10, 1.53958920253, 154717.6098876827],\n [2.3e-10, 4.88012908735, 13095.8426650774],\n [2.3e-10, 0.35935706511, 31415.379249957],\n [2.4e-10, 5.11515116629, 18319.5365848796],\n [2.1e-10, 5.73872879912, 12569.6748183318],\n [2.1e-10, 1.32901200081, 10988.808157535],\n [1.9e-10, 2.24263229491, 18073.7049386502],\n [1.9e-10, 3.14253175605, 6496.3749454294],\n [2.1e-10, 2.80122025076, 6282.0955289232],\n [2.3e-10, 0.14288760398, 6283.0085396886],\n [1.9e-10, 4.28209473754, 3930.2096962196],\n [1.6e-10, 0.25933207663, 11790.6290886588],\n [1.5e-10, 6.0962350124, 13517.8701062334],\n [2e-10, 5.06358906224, 6283.14316029419],\n [1.5e-10, 1.0768066315, 4933.2084403326],\n [1.9e-10, 5.74000581249, 3128.3887650958],\n [1.6e-10, 6.18924226747, 7342.4577801806],\n [1.3e-10, 1.69105044945, 4535.0594369244],\n [1.5e-10, 3.36968394452, 17260.1546546904],\n [1e-10, 3.78885035015, 22003.9146348698],\n [1.1e-10, 2.12851973876, 7875.6718636242]\n ],\n \"3\": [\n [0.00000289058, 5.84173149732, 6283.0758499914],\n [2.0712e-7, 6.0498393902, 12566.1516999828],\n [2.962e-8, 5.1956057957, 155.4203994342],\n [2.527e-8, 3.14159265359, 0],\n [1.288e-8, 4.7219761197, 3.523118349],\n [6.35e-9, 5.96904899168, 242.728603974],\n [5.7e-9, 5.54182903238, 18849.2275499742],\n [4.02e-9, 3.78606612895, 553.5694028424],\n [7.2e-10, 4.37131884946, 6286.5989683404],\n [6.7e-10, 0.91133898967, 6127.6554505572],\n [3.7e-10, 5.28611190997, 6438.4962494256],\n [2.1e-10, 2.94917211527, 6309.3741697912],\n [1.5e-10, 3.63037493932, 71430.69561812909],\n [1.1e-10, 4.83261533939, 25132.3033999656],\n [1.1e-10, 5.84259014283, 6525.8044539654],\n [1.2e-10, 3.82296977522, 7058.5984613154],\n [1.3e-10, 2.39991715131, 5729.506447149],\n [8e-11, 0.55390332094, 6040.3472460174],\n [8e-11, 1.46298993048, 11856.2186514245],\n [8e-11, 5.07535888338, 6256.7775301916],\n [6e-11, 2.88803526743, 5507.5532386674],\n [5e-11, 3.87019253131, 12036.4607348882],\n [5e-11, 2.70838853362, 83996.84731811189]\n ],\n \"4\": [\n [7.714e-8, 4.14117321449, 6283.0758499914],\n [1.016e-8, 3.27573644241, 12566.1516999828],\n [4.2e-9, 0.41892851415, 155.4203994342],\n [4.7e-10, 3.50591071186, 18849.2275499742],\n [4.1e-10, 3.14032562331, 3.523118349],\n [3.5e-10, 5.0111077, 5573.1428014331],\n [1e-10, 5.64816633449, 6127.6554505572],\n [1.3e-10, 0.48609240774, 77713.7714681205],\n [7e-11, 2.84139222289, 161000.6857376741],\n [4e-11, 3.6550904707, 25132.3033999656],\n [2e-11, 0.54880603487, 6438.4962494256]\n ],\n \"5\": [\n [1.72e-9, 2.74854172392, 6283.0758499914],\n [5e-10, 2.01352986713, 155.4203994342],\n [2.8e-10, 2.93369985477, 12566.1516999828],\n [5e-11, 1.93829214518, 18849.2275499742]\n ]\n },\n B: {\n \"0\": [\n [0.0000027962, 3.19870156017, 84334.66158130829],\n [0.00000101643, 5.42248619256, 5507.5532386674],\n [8.0445e-7, 3.88013204458, 5223.6939198022],\n [4.3806e-7, 3.70444689759, 2352.8661537718],\n [3.1933e-7, 4.00026369781, 1577.3435424478],\n [2.2724e-7, 3.9847383156, 1047.7473117547],\n [1.6392e-7, 3.56456119782, 5856.4776591154],\n [1.8141e-7, 4.98367470262, 6283.0758499914],\n [1.4443e-7, 3.70275614915, 9437.762934887],\n [1.4304e-7, 3.41117857526, 10213.285546211],\n [1.1246e-7, 4.82820690527, 14143.4952424306],\n [1.09e-7, 2.08574562329, 6812.766815086],\n [9.714e-8, 3.47303947751, 4694.0029547076],\n [1.0367e-7, 4.05663927945, 71092.88135493269],\n [8.775e-8, 4.44016515666, 5753.3848848968],\n [8.366e-8, 4.99251512183, 7084.8967811152],\n [6.921e-8, 4.32559054073, 6275.9623029906],\n [9.145e-8, 1.14182646613, 6620.8901131878],\n [7.194e-8, 3.60193205744, 529.6909650946],\n [7.698e-8, 5.55425745881, 167621.5758508619],\n [5.285e-8, 2.48446991536, 4705.7323075436],\n [5.208e-8, 6.24992674532, 18073.7049386502],\n [4.529e-8, 2.33827747356, 6309.3741697912],\n [5.579e-8, 4.41023653719, 7860.4193924392],\n [4.743e-8, 0.70995680136, 5884.9268465832],\n [4.301e-8, 1.10255777773, 6681.2248533996],\n [3.849e-8, 1.82229412532, 5486.777843175],\n [4.093e-8, 5.11700141197, 13367.9726311066],\n [3.681e-8, 0.43793170336, 3154.6870848956],\n [3.42e-8, 5.42034800952, 6069.7767545534],\n [3.617e-8, 6.04641937568, 3930.2096962196],\n [3.67e-8, 4.58210192227, 12194.0329146209],\n [2.918e-8, 1.95463881136, 10977.078804699],\n [2.797e-8, 5.61259274877, 11790.6290886588],\n [2.502e-8, 0.60499729368, 6496.3749454294],\n [2.319e-8, 5.01648216088, 1059.3819301892],\n [2.684e-8, 1.39470396487, 22003.9146348698],\n [2.428e-8, 3.24183056545, 78051.5857313169],\n [2.12e-8, 4.30691000285, 5643.1785636774],\n [2.257e-8, 3.15557225087, 90617.7374312997],\n [1.813e-8, 3.75574218286, 3340.6124266998],\n [2.226e-8, 2.79699346673, 12036.4607348882],\n [1.888e-8, 0.86991545944, 8635.9420037632],\n [1.517e-8, 1.9585205571, 398.1490034082],\n [1.581e-8, 3.19976230948, 5088.6288397668],\n [1.421e-8, 6.25530883828, 2544.3144198834],\n [1.595e-8, 0.25619915132, 17298.1823273262],\n [1.391e-8, 4.69964175574, 7058.5984613154],\n [1.478e-8, 2.81808207569, 25934.1243310894],\n [1.481e-8, 3.6582355461, 11506.7697697936],\n [1.693e-8, 4.95689385293, 156475.2902479957],\n [1.183e-8, 1.29343060777, 775.522611324],\n [1.114e-8, 2.37889311847, 3738.761430108],\n [9.94e-9, 4.30088900425, 9225.539273283],\n [9.24e-9, 3.06451026809, 4164.311989613],\n [8.67e-9, 0.55606931068, 8429.2412664666],\n [9.88e-9, 5.97286104208, 7079.3738568078],\n [8.24e-9, 1.50984806177, 10447.3878396044],\n [9.15e-9, 0.12635654605, 11015.1064773348],\n [7.42e-9, 1.99159139281, 26087.9031415742],\n [1.039e-8, 3.14159265359, 0],\n [8.5e-9, 4.24120016095, 29864.334027309],\n [7.55e-9, 2.89631873314, 4732.0306273434],\n [7.14e-9, 1.37548118605, 2146.1654164752],\n [7.08e-9, 1.91406542362, 8031.0922630584],\n [7.46e-9, 0.57893808622, 796.2980068164],\n [8.02e-9, 5.12339137235, 2942.4634232916],\n [7.51e-9, 1.67479850166, 21228.3920235458],\n [6.02e-9, 4.099765389, 64809.80550494129],\n [5.94e-9, 3.49580704849, 16496.3613962024],\n [5.92e-9, 4.59481504319, 4690.4798363586],\n [5.3e-9, 5.73979295194, 8827.3902698748],\n [5.03e-9, 5.66433137112, 33794.5437235286],\n [4.83e-9, 1.57106522322, 801.8209311238],\n [4.38e-9, 0.0670773372, 3128.3887650958],\n [4.23e-9, 2.86944596145, 12566.1516999828],\n [5.04e-9, 3.2620766916, 7632.9432596502],\n [5.52e-9, 1.02926440457, 239762.20451754928],\n [4.27e-9, 3.67434378208, 213.299095438],\n [4.04e-9, 1.4619329736, 15720.8387848784],\n [5.03e-9, 4.85802444134, 6290.1893969922],\n [4.17e-9, 0.81920713533, 5216.5803728014],\n [3.65e-9, 0.01002966145, 12168.0026965746],\n [3.63e-9, 1.28376436579, 6206.8097787158],\n [3.53e-9, 4.7005913311, 7234.794256242],\n [4.15e-9, 0.96862624176, 4136.9104335162],\n [3.87e-9, 3.09145061418, 25158.6017197654],\n [3.73e-9, 2.65119262808, 7342.4577801806],\n [3.61e-9, 2.97762937735, 9623.6882766912],\n [4.18e-9, 3.75759994446, 5230.807466803],\n [3.96e-9, 1.22507712354, 6438.4962494256],\n [3.22e-9, 1.21162178805, 8662.240323563],\n [2.84e-9, 5.64170320179, 1589.0728952838],\n [3.79e-9, 1.72248432756, 14945.3161735544],\n [3.2e-9, 3.94161159658, 7330.8231617461],\n [3.13e-9, 5.47602376451, 1194.4470102246],\n [2.92e-9, 1.38971327568, 11769.8536931664],\n [3.05e-9, 0.80429352049, 37724.7534197482],\n [2.57e-9, 5.81382810029, 426.598190876],\n [2.65e-9, 6.10358507671, 6836.6452528338],\n [2.5e-9, 4.56452895547, 7477.522860216],\n [2.66e-9, 2.62926282354, 7238.6755916],\n [2.63e-9, 6.22089501237, 6133.5126528568],\n [3.06e-9, 2.79682380532, 1748.016413067],\n [2.36e-9, 2.46093023707, 11371.7046897582],\n [3.16e-9, 1.62662805006, 250908.4901204155],\n [2.16e-9, 3.68721275185, 5849.3641121146],\n [2.3e-9, 0.36165162947, 5863.5912061162],\n [2.33e-9, 5.03509933618, 20426.571092422],\n [2e-9, 5.86073159059, 4535.0594369244],\n [2.77e-9, 4.65400292395, 82239.1669577989],\n [2.09e-9, 3.72323200803, 10973.55568635],\n [1.99e-9, 5.05186622555, 5429.8794682394],\n [2.56e-9, 2.40923279886, 19651.048481098],\n [2.1e-9, 4.50691909144, 29088.811415985],\n [1.81e-9, 6.00294783127, 4292.3308329504],\n [2.49e-9, 0.12900984422, 154379.7956244863],\n [2.09e-9, 3.87759458541, 17789.845619785],\n [2.25e-9, 3.18339652605, 18875.525869774],\n [1.91e-9, 4.53897489216, 18477.1087646123],\n [1.72e-9, 2.0969418273, 13095.8426650774],\n [1.82e-9, 3.16107943487, 16730.4636895958],\n [1.88e-9, 2.22746128596, 41654.9631159678],\n [1.64e-9, 5.18686274999, 5481.2549188676],\n [1.6e-9, 2.4929885502, 12592.4500197826],\n [1.55e-9, 1.59595438224, 10021.8372800994],\n [1.35e-9, 0.21349051305, 10988.808157535],\n [1.78e-9, 3.80375178044, 23581.2581773176],\n [1.23e-9, 1.66800739151, 15110.4661198662],\n [1.22e-9, 2.72678272224, 18849.2275499742],\n [1.26e-9, 1.17675512872, 14919.0178537546],\n [1.42e-9, 3.95053440992, 337.8142631964],\n [1.16e-9, 6.06340906212, 6709.6740408674],\n [1.37e-9, 3.52143246244, 12139.5535091068],\n [1.36e-9, 2.92179113491, 32217.2001810808],\n [1.1e-9, 3.51203379263, 18052.9295431578],\n [1.47e-9, 4.63371971408, 22805.7355659936],\n [1.08e-9, 5.45280815225, 7.1135470008],\n [1.48e-9, 0.65447253687, 95480.9471841745],\n [1.19e-9, 5.92110458985, 33019.0211122046],\n [1.1e-9, 5.34824206403, 639.897286314],\n [1.06e-9, 3.71081682614, 14314.1681130498],\n [1.39e-9, 6.17607198262, 24356.7807886416],\n [1.18e-9, 5.59738712949, 161338.5000008705],\n [1.17e-9, 3.6506527164, 45585.1728121874],\n [1.27e-9, 4.74596574209, 49515.382508407],\n [1.2e-9, 1.04211499785, 6915.8595893046],\n [1.2e-9, 5.60638811846, 5650.2921106782],\n [1.15e-9, 3.10668213303, 14712.317116458],\n [9.9e-10, 0.6901893993, 12779.4507954208],\n [9.7e-10, 1.07908724794, 9917.6968745098],\n [9.3e-10, 2.62295197146, 17260.1546546904],\n [9.9e-10, 4.45774681732, 4933.2084403326],\n [1.23e-9, 1.37488921994, 28286.9904848612],\n [1.21e-9, 5.19767249869, 27511.4678735372],\n [1.05e-9, 0.87192268229, 77375.95720492408],\n [8.7e-10, 3.9363781295, 17654.7805397496],\n [1.22e-9, 2.2395606868, 83997.09113559539],\n [8.7e-10, 4.18201600921, 22779.4372461938],\n [1.04e-9, 4.59580877285, 1349.8674096588],\n [1.02e-9, 2.83545248595, 12352.8526045448],\n [1.02e-9, 3.97386522171, 10818.1352869158],\n [1.01e-9, 4.32892825818, 36147.4098773004],\n [9.4e-10, 5.00001709338, 150192.2143980043],\n [7.7e-10, 3.971993693, 1592.5960136328],\n [1e-9, 6.07733097102, 26735.9452622132],\n [8.6e-10, 5.2602963825, 28313.288804661],\n [9.3e-10, 4.31900620254, 44809.6502008634],\n [7.6e-10, 6.22743405935, 13521.7514415914],\n [7.2e-10, 1.55820597747, 6256.7775301916],\n [8.2e-10, 4.95202664555, 10575.4066829418],\n [8.2e-10, 1.69647647075, 1990.745017041],\n [7.5e-10, 2.29836095644, 3634.6210245184],\n [7.5e-10, 2.66367876557, 16200.7727245012],\n [8.7e-10, 0.26630214764, 31441.6775697568],\n [7.7e-10, 2.25530952876, 5235.3285382367],\n [7.6e-10, 1.09869730334, 12903.9659631792],\n [5.8e-10, 4.28246137794, 12559.038152982],\n [6.4e-10, 5.51112829602, 173904.65170085328],\n [5.6e-10, 2.60133794851, 73188.3759784421],\n [5.5e-10, 5.81483150022, 143233.51002162008],\n [5.4e-10, 3.38482031504, 323049.11878710287],\n [3.9e-10, 3.28500401937, 71768.50988132549],\n [3.9e-10, 3.11239910096, 96900.81328129109]\n ],\n \"1\": [\n [0.00227777722, 3.4137662053, 6283.0758499914],\n [0.00003805678, 3.37063423795, 12566.1516999828],\n [0.00003619589, 0, 0],\n [7.1542e-7, 3.32777549735, 18849.2275499742],\n [7.655e-8, 1.79489607186, 5223.6939198022],\n [8.107e-8, 3.89190403643, 5507.5532386674],\n [6.456e-8, 5.1978942475, 2352.8661537718],\n [3.894e-8, 2.15568517178, 6279.5527316424],\n [3.892e-8, 1.53021064904, 6286.5989683404],\n [3.897e-8, 4.87293945629, 10213.285546211],\n [3.812e-8, 1.43523182316, 12036.4607348882],\n [3.577e-8, 2.32913869227, 83996.84731811189],\n [3.57e-8, 4.92637739003, 71430.69561812909],\n [3.494e-8, 2.20864641831, 529.6909650946],\n [2.421e-8, 6.22876183393, 7860.4193924392],\n [2.056e-8, 3.06747139741, 14143.4952424306],\n [1.399e-8, 0.50107877909, 6309.3741697912],\n [1.417e-8, 3.28454570977, 25132.3033999656],\n [1.544e-8, 1.82062047625, 5856.4776591154],\n [1.457e-8, 1.75339303307, 5884.9268465832],\n [1.497e-8, 2.19673914456, 9437.762934887],\n [1.549e-8, 5.73650061398, 17789.845619785],\n [1.277e-8, 3.9672171733, 4705.7323075436],\n [1.038e-8, 2.9481870117, 6256.7775301916],\n [1.018e-8, 2.24114547164, 6681.2248533996],\n [1.021e-8, 1.4679502613, 11790.6290886588],\n [9.16e-9, 3.72965830745, 1059.3819301892],\n [1.156e-8, 6.04591336669, 398.1490034082],\n [1.24e-8, 0.77195902957, 6812.766815086],\n [1.115e-8, 3.92255876225, 12168.0026965746],\n [9.08e-9, 1.78447918237, 3930.2096962196],\n [8.33e-9, 0.09941579828, 11506.7697697936],\n [7.9e-9, 2.45555993228, 775.522611324],\n [6.66e-9, 4.40761401665, 5753.3848848968],\n [5.2e-9, 1.60179602491, 4694.0029547076],\n [3.82e-9, 0.26754532042, 1577.3435424478],\n [4.05e-9, 1.97558286872, 6283.0085396886],\n [4.05e-9, 1.53147989887, 6283.14316029419],\n [3.88e-9, 2.59563818411, 7058.5984613154],\n [3.41e-9, 3.61275156842, 13367.9726311066],\n [2.8e-9, 4.63052251735, 796.2980068164],\n [2.76e-9, 0.43350778219, 7079.3738568078],\n [3.11e-9, 5.28219636656, 17260.1546546904],\n [2.75e-9, 5.27597553634, 11769.8536931664],\n [2.86e-9, 2.98639716345, 6275.9623029906],\n [2.51e-9, 2.81315684448, 6290.1893969922],\n [2.39e-9, 5.77837903893, 10977.078804699],\n [2.28e-9, 0.14375973844, 3738.761430108],\n [2.27e-9, 2.51020991853, 7084.8967811152],\n [2.11e-9, 4.7202946547, 6496.3749454294],\n [2.34e-9, 3.1153527401, 709.9330485583],\n [2.34e-9, 0.5707581762, 11856.2186514245],\n [2.37e-9, 2.38791907394, 213.299095438],\n [2.27e-9, 1.12059781634, 12352.8526045448],\n [1.69e-9, 3.20148089605, 5486.777843175],\n [1.59e-9, 3.14604135756, 8827.3902698748],\n [1.6e-9, 1.14784478002, 5643.1785636774],\n [1.44e-9, 5.23285657431, 78051.5857313169],\n [1.44e-9, 1.16454654602, 90617.7374312997],\n [1.44e-9, 3.81203756929, 6262.300454499],\n [1.43e-9, 5.97809021355, 6303.8512454838],\n [1.38e-9, 4.29829933273, 1589.0728952838],\n [1.61e-9, 3.03298851492, 20426.571092422],\n [1.65e-9, 5.09134896587, 17298.1823273262],\n [1.28e-9, 4.41590143012, 6127.6554505572],\n [1.58e-9, 2.00984506334, 5230.807466803],\n [1.3e-9, 1.44170683802, 12569.6748183318],\n [1.25e-9, 1.69950379498, 3128.3887650958],\n [1.52e-9, 4.96946111415, 65147.6197681377],\n [1.31e-9, 4.24961399629, 6282.0955289232],\n [1.31e-9, 5.54051222995, 6284.0561710596],\n [1.61e-9, 3.32421999691, 6283.3196674749],\n [1.23e-9, 2.93221463795, 15720.8387848784],\n [1.52e-9, 1.56488157456, 18319.5365848796],\n [1.14e-9, 1.89110005546, 18073.7049386502],\n [1.13e-9, 4.95214866677, 4136.9104335162],\n [1.11e-9, 4.79699611405, 8429.2412664666],\n [1.18e-9, 3.06184958762, 22003.9146348698],\n [1.28e-9, 2.09693027395, 12562.6285816338],\n [1.38e-9, 0.84648544836, 6069.7767545534],\n [1e-9, 0.41938790104, 5481.2549188676],\n [1.01e-9, 4.43791289246, 19651.048481098],\n [1.16e-9, 1.87002428935, 77713.7714681205],\n [9.5e-10, 0.68638183645, 3340.6124266998],\n [1.04e-9, 4.90822646457, 8635.9420037632],\n [1.14e-9, 0.36008214928, 23543.23050468179],\n [9.1e-10, 1.1761121931, 9225.539273283],\n [9.1e-10, 2.74682631104, 5216.5803728014],\n [8.6e-10, 3.09315282195, 1194.4470102246],\n [9.3e-10, 6.2764351319, 12559.038152982],\n [8.7e-10, 3.64926989547, 7.1135470008],\n [8.3e-10, 0.37008971174, 11371.7046897582],\n [9.8e-10, 4.68473306376, 167283.7615876655],\n [9.8e-10, 0.99865886857, 154717.6098876827],\n [8.6e-10, 4.41152307486, 25934.1243310894],\n [9.8e-10, 4.98209568932, 16496.3613962024],\n [8.5e-10, 2.35438163823, 3154.6870848956],\n [8.3e-10, 0.24859477658, 21228.3920235458],\n [7.6e-10, 5.46661600296, 29864.334027309],\n [6.9e-10, 3.22045334237, 801.8209311238],\n [6.8e-10, 2.19928242745, 37724.7534197482],\n [7e-10, 5.33711014698, 2544.3144198834],\n [5.5e-10, 5.37872238211, 11015.1064773348],\n [5.1e-10, 5.03600618727, 5863.5912061162],\n [5.9e-10, 3.54984809612, 4535.0594369244],\n [5.3e-10, 1.50812064137, 7342.4577801806],\n [4.4e-10, 1.33712241647, 4164.311989613],\n [5.5e-10, 5.38460045253, 7477.522860216],\n [4.9e-10, 5.61844340512, 24072.9214697764],\n [5.7e-10, 6.17973522898, 8031.0922630584],\n [5.2e-10, 4.24379064407, 5088.6288397668],\n [4.1e-10, 3.41960196246, 26087.9031415742],\n [5.2e-10, 1.68150981131, 25158.6017197654],\n [5.3e-10, 0.11041408311, 29088.811415985],\n [4.3e-10, 0.53354396923, 2146.1654164752],\n [5e-10, 0.60270799844, 33794.5437235286],\n [4.5e-10, 1.69577010458, 6702.5604938666],\n [3.7e-10, 6.09033460795, 64809.80550494129],\n [4.4e-10, 2.67993061247, 15110.4661198662],\n [4.7e-10, 3.62555676035, 41654.9631159678],\n [3.6e-10, 0.47219666269, 13095.8426650774],\n [3.5e-10, 5.99520523215, 23581.2581773176],\n [4.3e-10, 4.08726331262, 156137.47598479927],\n [4.3e-10, 5.17376496602, 18422.62935909819],\n [3.4e-10, 2.14460100274, 4933.2084403326],\n [3e-10, 4.12992793541, 426.598190876],\n [3.6e-10, 2.28596930002, 90279.92316810328],\n [3.2e-10, 0.81117747619, 26.2983197998],\n [2.8e-10, 4.07036560467, 14712.317116458],\n [2.5e-10, 1.92905243842, 1748.016413067],\n [2.4e-10, 5.06152880842, 16730.4636895958],\n [2.3e-10, 3.24047012195, 31415.379249957],\n [2.7e-10, 3.90672018305, 18451.07854656599],\n [2.1e-10, 3.51419811826, 10447.3878396044]\n ],\n \"2\": [\n [0.00009721424, 5.1519280992, 6283.0758499914],\n [0.00000233002, 3.14159265359, 0],\n [0.00000134188, 0.64406212977, 12566.1516999828],\n [6.504e-8, 1.07333397797, 18849.2275499742],\n [1.662e-8, 1.62746869551, 84334.66158130829],\n [6.35e-9, 3.51985338656, 6279.5527316424],\n [4.92e-9, 2.41382223971, 1047.7473117547],\n [3.07e-9, 6.10181422085, 5223.6939198022],\n [3.22e-9, 0.37660897389, 6286.5989683404],\n [3.26e-9, 2.35727931602, 5507.5532386674],\n [2.74e-9, 1.65307581765, 7860.4193924392],\n [2.28e-9, 1.14082932988, 25132.3033999656],\n [2.02e-9, 0.4983668253, 2352.8661537718],\n [2.01e-9, 0.155527656, 10213.285546211],\n [1.67e-9, 3.98005254015, 529.6909650946],\n [1.7e-9, 5.28668290523, 6256.7775301916],\n [1.66e-9, 3.04613930284, 12036.4607348882],\n [1.53e-9, 4.06779216239, 83996.84731811189],\n [1.5e-9, 3.18772213951, 71430.69561812909],\n [1.2e-9, 3.13558669517, 5884.9268465832],\n [1.23e-9, 4.17102530625, 6309.3741697912],\n [1e-9, 1.46356761368, 11506.7697697936],\n [1e-9, 3.00322421365, 11790.6290886588],\n [7.7e-10, 1.65643898948, 4705.7323075436],\n [6.8e-10, 6.03791904123, 6812.766815086],\n [7.5e-10, 4.85191600582, 14143.4952424306],\n [7.9e-10, 4.12628805658, 5753.3848848968],\n [6.4e-10, 2.7194416046, 6127.6554505572],\n [6.3e-10, 0.78655326011, 6438.4962494256],\n [7.5e-10, 0.84213523741, 167621.5758508619],\n [5.1e-10, 4.55059044701, 5486.777843175],\n [5e-10, 5.29314320585, 7079.3738568078],\n [4.5e-10, 0.33147576416, 775.522611324],\n [4.3e-10, 3.6179371164, 1577.3435424478],\n [5.7e-10, 6.15295833679, 12194.0329146209],\n [4.5e-10, 1.18274698508, 17789.845619785],\n [4.7e-10, 1.11643162773, 398.1490034082],\n [4.7e-10, 5.5298423843, 12168.0026965746],\n [4.2e-10, 2.6437530062, 10988.808157535],\n [3.7e-10, 0.31226891972, 6681.2248533996],\n [4.6e-10, 3.38617099014, 156475.2902479957],\n [3.3e-10, 1.26266496002, 6290.1893969922],\n [3.3e-10, 2.25067065498, 6275.9623029906],\n [2.7e-10, 1.72859626293, 1059.3819301892],\n [2.8e-10, 2.88681054153, 796.2980068164],\n [3e-10, 5.52021264181, 7058.5984613154],\n [2.1e-10, 6.22275008403, 6069.7767545534],\n [2.4e-10, 5.83690442827, 6282.0955289232],\n [2.4e-10, 3.95322179797, 6284.0561710596],\n [2.1e-10, 4.87022458966, 3738.761430108],\n [2.1e-10, 3.58048145762, 6496.3749454294],\n [2.2e-10, 1.97770318395, 7.1135470008],\n [1.9e-10, 3.4597988877, 4136.9104335162],\n [1.5e-10, 2.81379880771, 1589.0728952838],\n [1.5e-10, 1.61313151838, 1194.4470102246],\n [1.5e-10, 0.63083434831, 11769.8536931664],\n [1.9e-10, 0.28082047767, 17260.1546546904],\n [1.7e-10, 1.35165136146, 78051.5857313169],\n [1.5e-10, 2.3094159956, 11856.2186514245],\n [1.2e-10, 1.12997370513, 90617.7374312997],\n [1.2e-10, 0.00611601597, 18073.7049386502],\n [1.2e-10, 1.70058636365, 12559.038152982]\n ],\n \"3\": [\n [0.00000275993, 0.59480097092, 6283.0758499914],\n [1.7034e-7, 3.14159265359, 0],\n [3.617e-8, 0.11750575325, 12566.1516999828],\n [3.39e-9, 5.66087461682, 18849.2275499742],\n [5.6e-10, 5.02765554835, 6279.5527316424],\n [1.9e-10, 5.99007646261, 6256.7775301916],\n [1.8e-10, 3.80004734567, 6309.3741697912],\n [1.8e-10, 1.21049250774, 6127.6554505572],\n [1.8e-10, 2.29734567137, 6438.4962494256],\n [1.5e-10, 4.72881467263, 6286.5989683404],\n [1.2e-10, 0.41481671808, 83996.84731811189],\n [1.3e-10, 5.54637369296, 25132.3033999656],\n [1e-10, 2.91937214232, 71430.69561812909],\n [6e-11, 2.1417324121, 11856.2186514245]\n ],\n \"4\": [\n [5.745e-8, 2.26734029843, 6283.0758499914],\n [8.7e-9, 0, 0],\n [1.19e-9, 4.26807972611, 12566.1516999828],\n [1.7e-10, 4.0742262044, 18849.2275499742],\n [5e-11, 0.84308705203, 1047.7473117547],\n [5e-11, 0.05711572303, 84334.66158130829]\n ],\n \"5\": [\n [1.14e-9, 4.31455980099, 6283.0758499914],\n [2.4e-10, 0, 0]\n ]\n },\n R: {\n \"0\": [\n [1.00013988784, 0, 0],\n [0.01670699632, 3.09846350258, 6283.0758499914],\n [0.00013956024, 3.05524609456, 12566.1516999828],\n [0.0000308372, 5.19846674381, 77713.7714681205],\n [0.00001628463, 1.17387558054, 5753.3848848968],\n [0.00001575572, 2.84685214877, 7860.4193924392],\n [0.00000924799, 5.45292236722, 11506.7697697936],\n [0.00000542439, 4.56409151453, 3930.2096962196],\n [0.0000047211, 3.66100022149, 5884.9268465832],\n [0.0000032878, 5.89983686142, 5223.6939198022],\n [0.00000345969, 0.96368627272, 5507.5532386674],\n [0.00000306784, 0.29867139512, 5573.1428014331],\n [0.00000174844, 3.01193636733, 18849.2275499742],\n [0.00000243181, 4.2734953079, 11790.6290886588],\n [0.00000211836, 5.84714461348, 1577.3435424478],\n [0.0000018574, 5.02199710705, 10977.078804699],\n [0.00000109835, 5.0551063586, 5486.777843175],\n [9.8316e-7, 0.88681311278, 6069.7767545534],\n [8.65e-7, 5.68956418946, 15720.8387848784],\n [8.5831e-7, 1.27079125277, 161000.6857376741],\n [6.2917e-7, 0.92177053978, 529.6909650946],\n [5.7056e-7, 2.01374292245, 83996.84731811189],\n [6.4908e-7, 0.27251341435, 17260.1546546904],\n [4.9384e-7, 3.24501240359, 2544.3144198834],\n [5.5736e-7, 5.2415979917, 71430.69561812909],\n [4.252e-7, 6.01110257982, 6275.9623029906],\n [4.6966e-7, 2.57799853213, 775.522611324],\n [3.8963e-7, 5.36063832897, 4694.0029547076],\n [4.4666e-7, 5.53715663816, 9437.762934887],\n [3.5661e-7, 1.67447135798, 12036.4607348882],\n [3.1922e-7, 0.18368299942, 5088.6288397668],\n [3.1846e-7, 1.77775642078, 398.1490034082],\n [3.3193e-7, 0.24370221704, 7084.8967811152],\n [3.8245e-7, 2.39255343973, 8827.3902698748],\n [2.8468e-7, 1.21344887533, 6286.5989683404],\n [3.7486e-7, 0.82961281844, 19651.048481098],\n [3.6957e-7, 4.90107587287, 12139.5535091068],\n [3.4537e-7, 1.84270693281, 2942.4634232916],\n [2.6275e-7, 4.58896863104, 10447.3878396044],\n [2.4596e-7, 3.78660838036, 8429.2412664666],\n [2.3587e-7, 0.26866098169, 796.2980068164],\n [2.7795e-7, 1.89934427832, 6279.5527316424],\n [2.3927e-7, 4.99598548145, 5856.4776591154],\n [2.0345e-7, 4.65282190725, 2146.1654164752],\n [2.3287e-7, 2.80783632869, 14143.4952424306],\n [2.2099e-7, 1.95002636847, 3154.6870848956],\n [1.9509e-7, 5.38233922479, 2352.8661537718],\n [1.7958e-7, 0.1987136996, 6812.766815086],\n [1.7178e-7, 4.43322156854, 10213.285546211],\n [1.619e-7, 5.23159323213, 17789.845619785],\n [1.7315e-7, 6.15224075188, 16730.4636895958],\n [1.3814e-7, 5.18962074032, 8031.0922630584],\n [1.8834e-7, 0.67280058021, 149854.4001348079],\n [1.833e-7, 2.25348717053, 23581.2581773176],\n [1.3639e-7, 3.68511810757, 4705.7323075436],\n [1.3142e-7, 0.65267698994, 13367.9726311066],\n [1.0414e-7, 4.33285688501, 11769.8536931664],\n [9.978e-8, 4.20126336356, 6309.3741697912],\n [1.017e-7, 1.59366684542, 4690.4798363586],\n [7.564e-8, 2.62560597391, 6256.7775301916],\n [9.654e-8, 3.67583728703, 27511.4678735372],\n [6.743e-8, 0.56269927047, 3340.6124266998],\n [8.743e-8, 6.06359123461, 1748.016413067],\n [7.786e-8, 3.67371235367, 12168.0026965746],\n [6.633e-8, 5.66149277789, 11371.7046897582],\n [7.712e-8, 0.31242577788, 7632.9432596502],\n [6.586e-8, 3.13580054586, 801.8209311238],\n [7.46e-8, 5.6475806666, 11926.2544136688],\n [6.933e-8, 2.92384586372, 6681.2248533996],\n [6.805e-8, 1.42327153767, 23013.5395395872],\n [6.118e-8, 5.13395999022, 1194.4470102246],\n [6.477e-8, 2.64986648493, 19804.8272915828],\n [5.233e-8, 4.62432817299, 6438.4962494256],\n [6.147e-8, 3.02863936662, 233141.3144043615],\n [4.608e-8, 1.72194702724, 7234.794256242],\n [4.221e-8, 1.55697533726, 7238.6755916],\n [5.31e-8, 2.40821524293, 11499.6562227928],\n [5.128e-8, 5.3239896569, 11513.8833167944],\n [4.77e-8, 0.2555431173, 11856.2186514245],\n [5.519e-8, 2.09089153789, 17298.1823273262],\n [5.625e-8, 4.34052903053, 90955.5516944961],\n [4.578e-8, 4.4656964157, 5746.271337896],\n [3.788e-8, 4.9072829481, 4164.311989613],\n [5.337e-8, 5.09957905103, 31441.6775697568],\n [3.967e-8, 1.20054555175, 1349.8674096588],\n [4.005e-8, 3.02853885902, 1059.3819301892],\n [3.48e-8, 0.76066308841, 10973.55568635],\n [4.232e-8, 1.05485713117, 5760.4984318976],\n [4.582e-8, 3.76570026763, 6386.16862421],\n [3.335e-8, 3.13829943354, 6836.6452528338],\n [3.42e-8, 3.00043974511, 4292.3308329504],\n [3.595e-8, 5.70703236079, 5643.1785636774],\n [3.236e-8, 4.16387400645, 9917.6968745098],\n [4.154e-8, 2.59940749519, 7058.5984613154],\n [3.362e-8, 4.54577164994, 4732.0306273434],\n [2.978e-8, 1.3056126882, 6283.14316029419],\n [2.765e-8, 0.51311975671, 26.2983197998],\n [2.807e-8, 5.66230537649, 8635.9420037632],\n [2.927e-8, 5.7378783408, 16200.7727245012],\n [3.167e-8, 1.691817599, 11015.1064773348],\n [2.598e-8, 2.96244118358, 25132.3033999656],\n [3.519e-8, 3.62639325753, 244287.60000722768],\n [2.676e-8, 4.20727719487, 18073.7049386502],\n [2.978e-8, 1.74971565805, 6283.0085396886],\n [2.287e-8, 1.06976449088, 14314.1681130498],\n [2.863e-8, 5.92838917309, 14712.317116458],\n [3.071e-8, 0.23793217, 35371.8872659764],\n [2.656e-8, 0.89959301615, 12352.8526045448],\n [2.415e-8, 2.799751768, 709.9330485583],\n [2.811e-8, 3.51513864541, 21228.3920235458],\n [1.977e-8, 2.61358297551, 951.7184062506],\n [2.548e-8, 2.47684686575, 6208.2942514241],\n [1.999e-8, 0.56090396506, 7079.3738568078],\n [2.305e-8, 1.05376463592, 22483.84857449259],\n [1.855e-8, 2.86093570752, 5216.5803728014],\n [2.157e-8, 1.31395211105, 154717.6098876827],\n [1.97e-8, 4.36931551625, 167283.7615876655],\n [1.754e-8, 2.14452400686, 6290.1893969922],\n [1.628e-8, 5.85704450617, 10984.1923516998],\n [2.154e-8, 6.03828353794, 10873.9860304804],\n [1.714e-8, 3.70158195222, 1592.5960136328],\n [1.541e-8, 6.21599512982, 23543.23050468179],\n [1.602e-8, 1.99860679677, 10969.9652576982],\n [1.712e-8, 1.34295218697, 3128.3887650958],\n [1.647e-8, 5.54948299069, 6496.3749454294],\n [1.495e-8, 5.43980459648, 155.4203994342],\n [1.827e-8, 5.91227480351, 3738.761430108],\n [1.726e-8, 2.16765465036, 10575.4066829418],\n [1.532e-8, 5.35683107063, 13521.7514415914],\n [1.824e-8, 1.66056145084, 39302.096962196],\n [1.605e-8, 1.90930973224, 6133.5126528568],\n [1.282e-8, 2.46013372544, 13916.0191096416],\n [1.211e-8, 4.4136063155, 3894.1818295422],\n [1.394e-8, 1.7780192925, 9225.539273283],\n [1.571e-8, 4.95512957606, 25158.6017197654],\n [1.205e-8, 1.19212756308, 3.523118349],\n [1.132e-8, 2.69830084955, 6040.3472460174],\n [1.504e-8, 5.77577388271, 18209.33026366019],\n [1.393e-8, 1.62625077326, 5120.6011455836],\n [1.081e-8, 2.93726744446, 17256.6315363414],\n [1.232e-8, 0.71651766504, 143571.32428481648],\n [1.087e-8, 0.99769687961, 955.5997416086],\n [1.068e-8, 5.28472576591, 65147.6197681377],\n [1.169e-8, 3.11663802316, 14945.3161735544],\n [9.75e-9, 5.1088726078, 6172.869528772],\n [1.202e-8, 4.02992510403, 553.5694028424],\n [9.79e-9, 2.00000879106, 15110.4661198662],\n [9.62e-9, 4.023807714, 6282.0955289232],\n [9.99e-9, 3.6264300279, 6262.300454499],\n [1.03e-8, 5.84987815239, 213.299095438],\n [1.014e-8, 2.84227679965, 8662.240323563],\n [1.185e-8, 1.51330629149, 17654.7805397496],\n [9.67e-9, 2.67081017562, 5650.2921106782],\n [1.222e-8, 2.65423784904, 88860.05707098669],\n [9.86e-9, 2.36212814824, 6206.8097787158],\n [1.034e-8, 0.13634950642, 11712.9553182308],\n [1.103e-8, 3.08477302937, 43232.3066584156],\n [7.81e-9, 2.53374971725, 16496.3613962024],\n [1.019e-8, 3.04569392376, 6037.244203762],\n [7.95e-9, 5.80662989126, 5230.807466803],\n [8.13e-9, 3.57702871938, 10177.2576795336],\n [9.62e-9, 5.31470594766, 6284.0561710596],\n [7.17e-9, 5.95797471837, 12559.038152982],\n [9.67e-9, 2.74413738053, 6244.9428143536],\n [9.21e-9, 0.1016016083, 29088.811415985],\n [7.19e-9, 5.91788189939, 4136.9104335162],\n [6.88e-9, 3.89489045092, 1589.0728952838],\n [7.72e-9, 4.05505380285, 6127.6554505572],\n [7.06e-9, 5.49323197725, 22003.9146348698],\n [6.65e-9, 1.60002747134, 11087.2851259184],\n [6.9e-9, 4.50539825729, 426.598190876],\n [8.54e-9, 3.2610464506, 20426.571092422],\n [6.56e-9, 4.3241018294, 16858.4825329332],\n [8.4e-9, 2.59572585212, 28766.924424484],\n [6.86e-9, 0.61944033771, 11403.676995575],\n [7e-9, 3.40901412473, 7.1135470008],\n [7.28e-9, 0.04050185963, 5481.2549188676],\n [6.53e-9, 1.0386945123, 6062.6632075526],\n [5.59e-9, 4.79221805695, 20199.094959633],\n [6.33e-9, 5.70229959167, 45892.73043315699],\n [5.91e-9, 6.10986487621, 9623.6882766912],\n [5.2e-9, 3.62310356479, 5333.9002410216],\n [6.02e-9, 5.58381898589, 10344.2950653858],\n [4.96e-9, 2.21027756314, 1990.745017041],\n [6.91e-9, 1.96733114988, 12416.5885028482],\n [6.4e-9, 1.59062417043, 18319.5365848796],\n [6.25e-9, 3.82358168221, 13517.8701062334],\n [4.75e-9, 1.1702590418, 12569.6748183318],\n [6.6e-9, 5.08498512995, 283.8593188652],\n [6.64e-9, 4.50029469969, 47162.5163546352],\n [5.69e-9, 0.16318535463, 17267.26820169119],\n [5.68e-9, 3.86100969474, 6076.8903015542],\n [4.62e-9, 0.26368763517, 4590.910180489],\n [5.35e-9, 4.83225423196, 18422.62935909819],\n [4.66e-9, 0.75873879417, 7342.4577801806],\n [5.41e-9, 3.07212190556, 226858.23855437007],\n [6.1e-9, 1.53597089605, 33019.0211122046],\n [6.17e-9, 2.62356328726, 11190.377900137],\n [5.48e-9, 4.55798855803, 18875.525869774],\n [6.33e-9, 4.60110281228, 66567.48586525429],\n [5.87e-9, 5.78087907808, 632.7837393132],\n [6.03e-9, 5.38458554802, 316428.22867391503],\n [5.25e-9, 5.01522072363, 12132.439962106],\n [4.69e-9, 0.59975173763, 21954.15760939799],\n [5.48e-9, 3.50627043672, 17253.04110768959],\n [5.02e-9, 0.98804327589, 11609.8625440122],\n [5.68e-9, 1.98497313089, 7668.6374249425],\n [4.82e-9, 1.62460405687, 12146.6670561076],\n [3.91e-9, 3.68718382972, 18052.9295431578],\n [4.57e-9, 3.7721489661, 156137.47598479927],\n [4.01e-9, 5.2922154024, 15671.0817594066],\n [4.69e-9, 1.80963351735, 12562.6285816338],\n [5.14e-9, 3.37031288919, 20597.2439630412],\n [4.52e-9, 5.66811219778, 10454.5013866052],\n [3.75e-9, 4.98528185039, 9779.1086761254],\n [5.23e-9, 0.97215560834, 155427.542936241],\n [4.03e-9, 5.1394818977, 1551.045222648],\n [3.72e-9, 3.69883738807, 9388.0059094152],\n [3.67e-9, 4.43875659833, 4535.0594369244],\n [4.06e-9, 4.20863156497, 12592.4500197826],\n [3.62e-9, 2.55099560446, 242.728603974],\n [4.71e-9, 4.61907324819, 5436.9930152402],\n [3.88e-9, 4.960209284, 24356.7807886416],\n [4.41e-9, 5.83872966262, 3496.032826134],\n [3.49e-9, 6.16307810648, 19800.9459562248],\n [3.56e-9, 0.2381908124, 5429.8794682394],\n [3.46e-9, 5.60809622572, 2379.1644735716],\n [3.8e-9, 2.72105213132, 11933.3679606696],\n [4.32e-9, 0.24215988572, 17996.0311682222],\n [3.78e-9, 5.22516848076, 7477.522860216],\n [3.37e-9, 5.10885555836, 5849.3641121146],\n [3.15e-9, 0.57827745123, 10557.5941608238],\n [3.18e-9, 4.4994900732, 3634.6210245184],\n [3.23e-9, 1.55850824803, 10440.2742926036],\n [3.14e-9, 5.77154773334, 20.7753954924],\n [3.03e-9, 2.34615580398, 4686.8894077068],\n [4.14e-9, 5.9323760231, 51092.7260508548],\n [3.62e-9, 2.17561997119, 28237.2334593894],\n [2.88e-9, 0.18377405421, 13095.8426650774],\n [2.77e-9, 5.1295220503, 13119.72110282519],\n [3.25e-9, 6.18608287927, 6268.8487559898],\n [2.73e-9, 0.30522428863, 23141.5583829246],\n [2.67e-9, 5.76152585786, 5966.6839803348],\n [3.45e-9, 2.94246040875, 36949.2308084242],\n [2.53e-9, 5.20994580359, 24072.9214697764],\n [3.42e-9, 5.76212804329, 16460.33352952499],\n [3.07e-9, 6.01039067183, 22805.7355659936],\n [2.61e-9, 2.00304796059, 6148.010769956],\n [2.38e-9, 5.08241964961, 6915.8595893046],\n [2.49e-9, 2.94762789744, 135.0650800354],\n [3.06e-9, 3.89765478921, 10988.808157535],\n [3.08e-9, 0.05451027736, 4701.1165017084],\n [3.19e-9, 2.95712862064, 163096.18036118348],\n [2.72e-9, 2.07967681309, 4804.209275927],\n [2.09e-9, 4.43768461442, 6546.1597733642],\n [2.17e-9, 0.73691592312, 6303.8512454838],\n [2.03e-9, 0.32033085531, 25934.1243310894],\n [2.05e-9, 5.22936478995, 20995.3929664494],\n [2.13e-9, 0.20671418919, 28286.9904848612],\n [1.97e-9, 0.4828613129, 16737.5772365966],\n [2.3e-9, 6.06567392849, 6287.0080032545],\n [2.19e-9, 1.291942163, 5326.7866940208],\n [2.01e-9, 1.74700937253, 22743.4093795164],\n [2.07e-9, 4.45440927276, 6279.4854213396],\n [2.69e-9, 6.0564044503, 64471.99124174489],\n [1.9e-9, 0.99261116842, 29296.6153895786],\n [1.94e-9, 3.82656562755, 419.4846438752],\n [2.62e-9, 5.26961924126, 522.5774180938],\n [2.1e-9, 4.68618183158, 6254.6266625236],\n [1.97e-9, 2.80624554186, 4933.2084403326],\n [2.52e-9, 4.3622015462, 40879.4405046438],\n [2.61e-9, 1.07241516738, 55022.9357470744],\n [2.33e-9, 5.41751014958, 39609.6545831656],\n [1.85e-9, 4.14324541379, 5642.1982426092],\n [2.47e-9, 3.44855612987, 6702.5604938666],\n [2.05e-9, 4.04424043226, 536.8045120954],\n [1.91e-9, 3.15807087926, 16723.350142595],\n [2.22e-9, 5.16259496507, 23539.7073863328],\n [1.8e-9, 4.56214752149, 6489.2613984286],\n [2.27e-9, 0.60156339452, 5905.7022420756],\n [1.7e-9, 0.93185903228, 16062.1845261168],\n [1.59e-9, 0.92751013112, 23937.856389741],\n [1.57e-9, 4.69607868164, 6805.6532680852],\n [2.18e-9, 0.8553337343, 16627.3709153772],\n [1.69e-9, 0.94641052064, 3097.88382272579],\n [2.07e-9, 4.88410451334, 6286.6662786432],\n [1.6e-9, 4.95943826819, 10021.8372800994],\n [1.75e-9, 6.12762824563, 239424.39025435288],\n [1.73e-9, 3.13887234973, 6179.9830757728],\n [1.57e-9, 3.62822057807, 18451.07854656599],\n [2.06e-9, 5.74617821138, 3646.3503773544],\n [1.57e-9, 4.67695912207, 6709.6740408674],\n [1.46e-9, 3.09506069745, 4907.3020501456],\n [1.65e-9, 2.2713912876, 10660.6869350424],\n [1.44e-9, 3.96947747592, 6019.9919266186],\n [1.71e-9, 5.91302216729, 6058.7310542895],\n [1.44e-9, 2.1315565512, 26084.0218062162],\n [1.51e-9, 0.67417383565, 2388.8940204492],\n [1.96e-9, 1.67718461229, 2107.0345075424],\n [1.46e-9, 5.10373877968, 10770.8932562618],\n [1.87e-9, 1.23915444627, 19402.7969528166],\n [1.37e-9, 1.26247412216, 12566.2190102856],\n [1.91e-9, 5.03547476279, 263.0839233728],\n [1.37e-9, 3.52825454595, 639.897286314],\n [1.35e-9, 0.73840670927, 5017.508371365],\n [1.64e-9, 2.39195095081, 6357.8574485587],\n [1.68e-9, 0.05515907462, 9380.9596727172],\n [1.61e-9, 1.15721259392, 26735.9452622132],\n [1.44e-9, 1.76097645199, 5888.4499649322],\n [1.31e-9, 2.51859277344, 6599.467719648],\n [1.42e-9, 2.43802911123, 5881.4037282342],\n [1.59e-9, 5.90325893762, 6281.5913772831],\n [1.51e-9, 3.72338532519, 12669.2444742014],\n [1.32e-9, 2.38417741883, 6525.8044539654],\n [1.27e-9, 0.00254936441, 10027.9031957292],\n [1.48e-9, 2.85102145528, 6418.1409300268],\n [1.43e-9, 5.7446027956, 26087.9031415742],\n [1.72e-9, 0.4128996224, 174242.4659640497],\n [1.36e-9, 4.15497742275, 6311.5250374592],\n [1.7e-9, 5.98194913129, 327574.51427678124],\n [1.36e-9, 2.48430537541, 13341.6743113068],\n [1.49e-9, 0.33002271275, 245.8316462294],\n [1.65e-9, 2.496679246, 58953.145443294],\n [1.23e-9, 1.67328384813, 32217.2001810808],\n [1.23e-9, 3.45660563754, 6277.552925684],\n [1.17e-9, 0.86065134175, 6245.0481773556],\n [1.49e-9, 5.61358281003, 5729.506447149],\n [1.28e-9, 0.71204006448, 103.0927742186],\n [1.59e-9, 2.43166592149, 221995.02880149524],\n [1.37e-9, 1.706577092, 12566.08438968],\n [1.29e-9, 2.80667872683, 6016.4688082696],\n [1.13e-9, 3.58302904101, 25685.872802808],\n [1.09e-9, 3.26403795962, 6819.8803620868],\n [1.22e-9, 0.34120688202, 1162.4747044078],\n [1.06e-9, 1.59721172719, 17782.7320727842],\n [1.44e-9, 2.28891651774, 12489.8856287072],\n [1.37e-9, 5.82029768354, 44809.6502008634],\n [1.34e-9, 1.26539983018, 5331.3574437408],\n [1.03e-9, 5.96518130595, 6321.1035226272],\n [1.09e-9, 0.33808549034, 11300.5842213564],\n [1.29e-9, 5.8918727719, 12029.3471878874],\n [1.22e-9, 5.77325634636, 11919.140866668],\n [1.07e-9, 6.2499898935, 77690.75950573849],\n [1.07e-9, 1.00535580713, 77736.78343050249],\n [1.15e-9, 5.86963518266, 12721.572099417],\n [1.02e-9, 5.66283467269, 5540.0857894588],\n [1.43e-9, 0.24122178432, 4214.0690150848],\n [1.43e-9, 0.88529649733, 7576.560073574],\n [1.07e-9, 2.92124030351, 31415.379249957],\n [1e-9, 5.99485644501, 4061.2192153944],\n [1.03e-9, 2.41941934525, 5547.1993364596],\n [1.04e-9, 4.44106051277, 2118.7638603784],\n [1.1e-9, 0.37559635174, 5863.5912061162],\n [1.24e-9, 2.55619029611, 12539.853380183],\n [1.1e-9, 3.66952094465, 238004.5241572363],\n [1.12e-9, 4.32512422724, 97238.62754448749],\n [1.2e-9, 1.26895630075, 12043.574281889],\n [9.7e-10, 5.42612959752, 7834.1210726394],\n [9.4e-10, 2.56461130309, 19004.6479494084],\n [1.05e-9, 5.68272475301, 16522.6597160022],\n [1.17e-9, 3.65425622684, 34520.3093093808],\n [1.08e-9, 1.24206843948, 84672.47584450469],\n [9.8e-10, 0.13589994287, 11080.1715789176],\n [9.7e-10, 2.46722096722, 71980.63357473118],\n [9.5e-10, 5.36958330451, 6288.5987742988],\n [9.6e-10, 0.20796618776, 18139.2945014159],\n [1.11e-9, 5.01961920313, 11823.1616394502],\n [9e-10, 2.72355843779, 26880.3198130326],\n [9.9e-10, 0.90164266199, 18635.9284545362],\n [1.26e-9, 4.78722177847, 305281.9430710488],\n [1.24e-9, 5.00979495566, 172146.9713405403],\n [9e-10, 4.50544881196, 40077.61957352],\n [1.04e-9, 5.6367968071, 2787.0430238574],\n [9.1e-10, 5.43564326147, 6272.0301497275],\n [1e-9, 2.00639461597, 12323.4230960088],\n [1.17e-9, 2.35555589778, 83286.91426955358],\n [1.05e-9, 2.59824000109, 30666.1549584328],\n [9e-10, 2.35779490026, 12491.3701014155],\n [8.9e-10, 3.57152453732, 11720.0688652316],\n [9.5e-10, 5.67015349858, 14919.0178537546],\n [8.7e-10, 1.86043406047, 27707.5424942948],\n [1.06e-9, 3.04150600352, 22345.2603761082],\n [8.2e-10, 5.58298993353, 10241.2022911672],\n [8.3e-10, 3.10607039533, 36147.4098773004],\n [9.4e-10, 5.47749711149, 9924.8104215106],\n [8.2e-10, 4.71988314145, 15141.390794312],\n [9.6e-10, 3.89073946348, 6379.0550772092],\n [1.1e-9, 4.92131611151, 5621.8429232104],\n [1.1e-9, 4.89978492291, 72140.6286666874],\n [9.7e-10, 5.20764563059, 6303.4311693902],\n [8.5e-10, 1.61269222311, 33326.5787331742],\n [9.3e-10, 1.32651591333, 23020.65308658799],\n [9e-10, 0.5773301638, 26482.1708096244],\n [7.8e-10, 3.99588630754, 11293.4706743556],\n [1.06e-9, 3.92012705073, 62883.3551395136],\n [9.8e-10, 2.94397773524, 316.3918696566],\n [7.6e-10, 3.96310417608, 29026.48522950779],\n [9.8e-10, 0.95914722366, 48739.859897083],\n [7.8e-10, 1.97068528043, 90279.92316810328],\n [7.6e-10, 0.23027966596, 21424.4666443034],\n [7.9e-10, 1.46227790922, 8982.810669309],\n [7.8e-10, 2.28840998832, 266.6070417218],\n [7.1e-10, 1.5194076559, 33794.5437235286],\n [7.6e-10, 0.22880641443, 57375.8019008462],\n [9.7e-10, 0.39449562097, 24279.10701821359],\n [7.5e-10, 2.77638584795, 12964.300703391],\n [7.7e-10, 5.18846946344, 11520.9968637952],\n [6.8e-10, 0.50006599129, 4274.5183108324],\n [7.5e-10, 2.07323762803, 15664.03552270859],\n [7.7e-10, 0.4666517878, 16207.886271502],\n [8.1e-10, 4.10452219483, 161710.6187862324],\n [7.1e-10, 3.91415328513, 7875.6718636242],\n [8.1e-10, 0.91938383406, 74.7815985673],\n [8.3e-10, 4.69916218791, 23006.42599258639],\n [6.9e-10, 0.98999300277, 6393.2821712108],\n [6.5e-10, 5.41938745446, 28628.3362260996],\n [7.3e-10, 2.45564765251, 15508.6151232744],\n [6.5e-10, 3.02336771694, 5959.570433334],\n [6.4e-10, 0.18375587635, 1066.49547719],\n [8e-10, 5.81239171612, 12341.8069042809],\n [6.6e-10, 2.15105504851, 38.0276726358],\n [6.7e-10, 5.14047250153, 9814.6041002912],\n [6.2e-10, 2.43313614978, 10138.1095169486],\n [6.8e-10, 2.24442548639, 24383.0791084414],\n [7.8e-10, 1.39649333997, 9411.4646150872],\n [5.9e-10, 4.95362151577, 35707.7100829074],\n [7.3e-10, 1.35229143121, 5327.4761083828],\n [5.7e-10, 3.16018882154, 5490.300961524],\n [7.2e-10, 5.91833527334, 10881.0995774812],\n [6.7e-10, 0.66414713064, 29864.334027309],\n [6.5e-10, 0.30352816135, 7018.9523635232],\n [5.9e-10, 5.36231868425, 10239.5838660108],\n [5.6e-10, 3.22196331515, 2636.725472637],\n [6.8e-10, 5.32086226658, 3116.6594122598],\n [5.9e-10, 1.63156134967, 61306.0115970658],\n [5.4e-10, 4.29491690425, 21947.1113727],\n [7e-10, 0.29271565928, 6528.9074962208],\n [5.7e-10, 5.89190132575, 34513.2630726828],\n [5.4e-10, 2.51856815404, 6279.1945146334],\n [7.4e-10, 1.38235845304, 9967.4538999816],\n [5.4e-10, 0.92276712152, 6286.9571853494],\n [7e-10, 5.00933012248, 6453.7487206106],\n [5.3e-10, 3.86543309344, 32370.9789915656],\n [5.5e-10, 4.51794544854, 34911.412076091],\n [6.3e-10, 5.41479412056, 11502.8376165305],\n [6.3e-10, 2.34416220742, 11510.7019230567],\n [5.6e-10, 0.91310629913, 9910.583327509],\n [6.7e-10, 4.03308763854, 34596.3646546524],\n [6e-10, 5.57024703495, 5756.9080032458],\n [7.2e-10, 2.80863088166, 10866.8724834796],\n [6.6e-10, 6.12047940728, 12074.488407524],\n [5.1e-10, 2.59519527563, 11396.5634485742],\n [6.2e-10, 5.14746754396, 25287.7237993998],\n [5.4e-10, 2.50994032776, 5999.2165311262],\n [5.1e-10, 4.51195861837, 29822.7832363242],\n [5.9e-10, 0.44167237876, 250570.6758572191],\n [5.1e-10, 3.6884906676, 6262.7205305926],\n [4.9e-10, 0.54704693048, 22594.05489571199],\n [6.5e-10, 2.38423614501, 52670.0695933026],\n [6.9e-10, 5.34363738671, 66813.5648357332],\n [5.6e-10, 2.67216180349, 17892.93839400359],\n [4.9e-10, 4.18361320516, 18606.4989460002],\n [5.5e-10, 0.83886167974, 20452.8694122218],\n [5e-10, 1.46327331958, 37455.7264959744],\n [5.8e-10, 3.34847975377, 33990.6183442862],\n [6.5e-10, 1.45522693982, 76251.32777062019],\n [5.6e-10, 2.356506642, 37724.7534197482],\n [4.8e-10, 1.80689447612, 206.1855484372],\n [5.6e-10, 3.84224878744, 5483.254724826],\n [5.3e-10, 0.17334326094, 77717.29458646949],\n [5.3e-10, 0.79879700631, 77710.24834977149],\n [4.7e-10, 0.43240779709, 735.8765135318],\n [5.3e-10, 4.58786566028, 11616.976091013],\n [4.8e-10, 6.20230111054, 4171.4255366138],\n [5.2e-10, 2.9171905303, 6993.0088985497],\n [5.7e-10, 3.42008310383, 50317.2034395308],\n [4.8e-10, 0.12356889012, 13362.4497067992],\n [6e-10, 5.52056066934, 949.1756089698],\n [4.5e-10, 3.37963782356, 10763.779709261],\n [4.7e-10, 5.50958184902, 12779.4507954208],\n [5.2e-10, 5.42770349015, 310145.1528239236],\n [6.1e-10, 2.93237974631, 5791.4125575326],\n [4.4e-10, 2.87440620802, 8584.6616659008],\n [4.6e-10, 4.0314179656, 10667.8004820432],\n [4.4e-10, 1.21579107625, 6272.4391846416],\n [4.7e-10, 2.57670800912, 11492.542675792],\n [4.4e-10, 3.62570223167, 63658.8777508376],\n [5.1e-10, 0.84531181151, 12345.739057544],\n [4.6e-10, 1.17584556517, 149.5631971346],\n [4.3e-10, 0.01524970172, 37853.8754993826],\n [4.3e-10, 0.79038834934, 640.8776073822],\n [4.4e-10, 2.22554419931, 6293.7125153412],\n [4.9e-10, 1.01528394907, 149144.46708624958],\n [4.1e-10, 3.27146326065, 8858.3149443206],\n [4.5e-10, 3.03765521215, 65236.2212932854],\n [5.8e-10, 5.45843180927, 1975.492545856],\n [4.1e-10, 1.32190847146, 2547.8375382324],\n [4.7e-10, 3.67626039848, 28313.288804661],\n [4.7e-10, 6.21438985953, 10991.3058987006],\n [4e-10, 2.37237751212, 8273.8208670324],\n [5.6e-10, 1.09773690181, 77376.2010224076],\n [4e-10, 2.35698541041, 2699.7348193176],\n [4.3e-10, 5.28030897946, 17796.9591667858],\n [5.4e-10, 2.59175932091, 22910.44676536859],\n [5.5e-10, 0.07988985505, 83467.15635301729],\n [4.1e-10, 4.47510694062, 5618.3198048614],\n [4e-10, 1.35670430524, 27177.8515292002],\n [4.1e-10, 2.48011323946, 6549.6828917132],\n [5e-10, 2.56387920528, 82576.9812209953],\n [4.2e-10, 4.78798367468, 7856.89627409019],\n [4.7e-10, 2.75482175292, 18202.21671665939],\n [3.9e-10, 1.97008298629, 24491.4257925834],\n [4.2e-10, 4.04346599946, 7863.9425107882],\n [3.9e-10, 3.0103393642, 853.196381752],\n [3.8e-10, 0.49178679251, 38650.173506199],\n [4.4e-10, 1.35931241699, 21393.5419698576],\n [3.6e-10, 4.86047906533, 4157.1984426122],\n [4.3e-10, 5.64354880978, 1062.9050485382],\n [3.9e-10, 3.92736779879, 3903.9113764198],\n [4e-10, 5.3969491832, 9498.2122306346],\n [4.3e-10, 2.40863861919, 29424.634232916],\n [4.6e-10, 2.08022244271, 12573.2652469836],\n [5e-10, 6.15760345261, 78051.34191383338]\n ],\n \"1\": [\n [0.00103018607, 1.10748968172, 6283.0758499914],\n [0.00001721238, 1.06442300386, 12566.1516999828],\n [0.00000702217, 3.14159265359, 0],\n [3.2345e-7, 1.02168583254, 18849.2275499742],\n [3.0801e-7, 2.84358443952, 5507.5532386674],\n [2.4978e-7, 1.31906570344, 5223.6939198022],\n [1.8487e-7, 1.42428709076, 1577.3435424478],\n [1.0077e-7, 5.91385248388, 10977.078804699],\n [8.635e-8, 0.27158192945, 5486.777843175],\n [8.654e-8, 1.42046854427, 6275.9623029906],\n [5.069e-8, 1.68613408916, 5088.6288397668],\n [4.985e-8, 6.01402338185, 6286.5989683404],\n [4.667e-8, 5.98749245692, 529.6909650946],\n [4.395e-8, 0.51800423445, 4694.0029547076],\n [3.87e-8, 4.74932206877, 2544.3144198834],\n [3.755e-8, 5.07053801166, 796.2980068164],\n [4.1e-8, 1.08424801084, 9437.762934887],\n [3.518e-8, 0.02290216978, 83996.84731811189],\n [3.436e-8, 0.94937503872, 71430.69561812909],\n [3.221e-8, 6.15628775321, 2146.1654164752],\n [3.418e-8, 5.4115158188, 775.522611324],\n [2.863e-8, 5.48433323746, 10447.3878396044],\n [2.525e-8, 0.24296913555, 398.1490034082],\n [2.205e-8, 4.94892172085, 6812.766815086],\n [2.186e-8, 0.41991932164, 8031.0922630584],\n [2.828e-8, 3.41986300734, 2352.8661537718],\n [2.554e-8, 6.13241770582, 6438.4962494256],\n [1.932e-8, 5.31374587091, 8429.2412664666],\n [2.427e-8, 3.09118902115, 4690.4798363586],\n [1.73e-8, 1.53685999718, 4705.7323075436],\n [2.25e-8, 3.6883639562, 7084.8967811152],\n [2.094e-8, 1.281690604, 1748.016413067],\n [1.483e-8, 3.22226346483, 7234.794256242],\n [1.434e-8, 0.81293662216, 14143.4952424306],\n [1.754e-8, 3.22883705112, 6279.5527316424],\n [1.583e-8, 4.09815978783, 11499.6562227928],\n [1.575e-8, 5.53890314149, 3154.6870848956],\n [1.847e-8, 1.82041234937, 7632.9432596502],\n [1.499e-8, 3.63177937611, 11513.8833167944],\n [1.337e-8, 4.64442556061, 6836.6452528338],\n [1.275e-8, 2.69329661394, 1349.8674096588],\n [1.348e-8, 6.15284035323, 5746.271337896],\n [1.126e-8, 3.35676107739, 17789.845619785],\n [1.47e-8, 3.65282991735, 1194.4470102246],\n [1.101e-8, 4.4974742767, 4292.3308329504],\n [1.168e-8, 2.58033028504, 13367.9726311066],\n [1.236e-8, 5.64980098028, 5760.4984318976],\n [9.85e-9, 0.65326301914, 5856.4776591154],\n [9.28e-9, 2.3255501829, 10213.285546211],\n [1.073e-8, 5.82672338169, 12036.4607348882],\n [9.18e-9, 0.76907130762, 16730.4636895958],\n [8.76e-9, 1.50335727807, 11926.2544136688],\n [1.023e-8, 5.62071200879, 6256.7775301916],\n [8.53e-9, 0.6567813463, 155.4203994342],\n [8.02e-9, 4.10519132094, 951.7184062506],\n [8.59e-9, 1.42880883564, 5753.3848848968],\n [9.92e-9, 1.1423800161, 1059.3819301892],\n [8.14e-9, 1.63584008733, 6681.2248533996],\n [6.64e-9, 4.55039663226, 5216.5803728014],\n [6.27e-9, 1.50782904323, 5643.1785636774],\n [6.44e-9, 4.19480024859, 6040.3472460174],\n [5.9e-9, 6.18371704849, 4164.311989613],\n [6.35e-9, 0.5242358477, 6290.1893969922],\n [6.5e-9, 0.97935492869, 25132.3033999656],\n [5.68e-9, 2.30121525349, 10973.55568635],\n [5.49e-9, 5.26737827342, 3340.6124266998],\n [5.47e-9, 2.20143332641, 1592.5960136328],\n [5.26e-9, 0.92464258271, 11371.7046897582],\n [4.93e-9, 5.91036281399, 3894.1818295422],\n [4.83e-9, 1.6600571154, 12168.0026965746],\n [5.14e-9, 3.59683072524, 10969.9652576982],\n [5.16e-9, 3.97164781773, 17298.1823273262],\n [5.29e-9, 5.0353867768, 9917.6968745098],\n [4.87e-9, 2.50544745305, 6127.6554505572],\n [4.19e-9, 4.05235655996, 10984.1923516998],\n [5.38e-9, 5.54081539813, 553.5694028424],\n [4.02e-9, 2.16859478359, 7860.4193924392],\n [5.52e-9, 2.32219865498, 11506.7697697936],\n [3.67e-9, 3.39145698451, 6496.3749454294],\n [3.6e-9, 5.34467204596, 7079.3738568078],\n [3.34e-9, 3.61346365667, 11790.6290886588],\n [4.54e-9, 0.28755421898, 801.8209311238],\n [4.19e-9, 3.69613970002, 10575.4066829418],\n [3.19e-9, 0.30793759304, 16200.7727245012],\n [3.76e-9, 5.81560210508, 7058.5984613154],\n [3.64e-9, 1.08425056923, 6309.3741697912],\n [2.94e-9, 4.54798604178, 11856.2186514245],\n [2.9e-9, 1.26451946335, 8635.9420037632],\n [3.94e-9, 4.15683669084, 26.2983197998],\n [2.6e-9, 5.09424572996, 10177.2576795336],\n [2.41e-9, 2.25766000302, 11712.9553182308],\n [2.39e-9, 1.06936978753, 242.728603974],\n [2.76e-9, 3.44260568764, 5884.9268465832],\n [2.55e-9, 5.38496803122, 21228.3920235458],\n [3.07e-9, 4.24313885601, 3738.761430108],\n [2.13e-9, 3.44661200485, 213.299095438],\n [1.98e-9, 0.69427265195, 1990.745017041],\n [1.95e-9, 5.16563409007, 12352.8526045448],\n [2.13e-9, 3.89937836808, 13916.0191096416],\n [2.14e-9, 4.00445200772, 5230.807466803],\n [1.84e-9, 5.59805976614, 6283.14316029419],\n [1.84e-9, 2.85275392124, 7238.6755916],\n [1.79e-9, 2.54259058252, 14314.1681130498],\n [2.36e-9, 5.58826125715, 6069.7767545534],\n [1.89e-9, 2.72689937708, 6062.6632075526],\n [1.84e-9, 6.04216273598, 6283.0085396886],\n [2.25e-9, 1.66128561344, 4732.0306273434],\n [2.3e-9, 3.62591335086, 6284.0561710596],\n [1.72e-9, 0.97566476085, 3930.2096962196],\n [1.62e-9, 2.19467339429, 18073.7049386502],\n [2.15e-9, 1.04672844028, 3496.032826134],\n [1.82e-9, 5.17782354566, 17253.04110768959],\n [1.67e-9, 2.17754938066, 6076.8903015542],\n [1.67e-9, 4.75672473773, 17267.26820169119],\n [1.49e-9, 0.80944185798, 709.9330485583],\n [1.49e-9, 0.17584214812, 9779.1086761254],\n [1.92e-9, 5.00680790235, 11015.1064773348],\n [1.41e-9, 4.38420380014, 4136.9104335162],\n [1.58e-9, 4.60969054283, 9623.6882766912],\n [1.33e-9, 3.30507062245, 154717.6098876827],\n [1.66e-9, 6.13191098325, 3.523118349],\n [1.81e-9, 1.60715321141, 7.1135470008],\n [1.5e-9, 5.28136702046, 13517.8701062334],\n [1.42e-9, 0.49788089569, 25158.6017197654],\n [1.24e-9, 6.03440459813, 9225.539273283],\n [1.24e-9, 0.99251562639, 65147.6197681377],\n [1.28e-9, 1.92032744711, 22483.84857449259],\n [1.24e-9, 3.99739675184, 4686.8894077068],\n [1.21e-9, 2.37814805239, 167283.7615876655],\n [1.23e-9, 5.6231511294, 5642.1982426092],\n [1.17e-9, 5.81755956156, 12569.6748183318],\n [1.57e-9, 3.40236948518, 16496.3613962024],\n [1.3e-9, 2.10499918142, 1589.0728952838],\n [1.16e-9, 0.55839966736, 5849.3641121146],\n [1.23e-9, 5.81645568991, 6282.0955289232],\n [1.1e-9, 0.42176497674, 6172.869528772],\n [1.5e-9, 4.26279600865, 3128.3887650958],\n [1.06e-9, 2.27436561182, 5429.8794682394],\n [1.14e-9, 1.52894564202, 12559.038152982],\n [1.21e-9, 0.39459045915, 12132.439962106],\n [1.04e-9, 2.41845930933, 426.598190876],\n [1.09e-9, 5.82786999856, 16858.4825329332],\n [1.02e-9, 4.4662648491, 23543.23050468179],\n [1e-9, 2.93812275274, 4535.0594369244],\n [9.7e-10, 3.97935904984, 6133.5126528568],\n [9.8e-10, 0.87616810121, 6525.8044539654],\n [1.1e-9, 6.22339014386, 12146.6670561076],\n [9.8e-10, 3.17344332543, 10440.2742926036],\n [9.6e-10, 2.44128701699, 3097.88382272579],\n [9.9e-10, 5.75642493267, 7342.4577801806],\n [9e-10, 0.18984343165, 13119.72110282519],\n [9.9e-10, 5.58884724219, 2388.8940204492],\n [9.1e-10, 6.04278320182, 20426.571092422],\n [8e-10, 1.29028142103, 5650.2921106782],\n [8.6e-10, 3.94529200528, 10454.5013866052],\n [8.5e-10, 1.92836879835, 29088.811415985],\n [7.6e-10, 2.70726317966, 143571.32428481648],\n [9.1e-10, 5.63859073351, 8827.3902698748],\n [7.6e-10, 1.80783856698, 28286.9904848612],\n [7.5e-10, 3.40858032804, 5481.2549188676],\n [7e-10, 4.53719487231, 17256.6315363414],\n [8.9e-10, 1.10064490942, 11769.8536931664],\n [6.6e-10, 2.78384937771, 536.8045120954],\n [6.8e-10, 3.88199295043, 17260.1546546904],\n [8.8e-10, 3.88075269535, 7477.522860216],\n [6.1e-10, 6.17558202197, 11087.2851259184],\n [6e-10, 4.34824715818, 6206.8097787158],\n [8.2e-10, 4.59843208943, 9388.0059094152],\n [7.9e-10, 1.63139280394, 4933.2084403326],\n [8.1e-10, 1.55550779371, 9380.9596727172],\n [7.8e-10, 4.20905757519, 5729.506447149],\n [5.8e-10, 5.76889633224, 3634.6210245184],\n [6e-10, 0.93813100594, 12721.572099417],\n [7.1e-10, 6.11408885148, 8662.240323563],\n [5.7e-10, 5.48112524468, 18319.5365848796],\n [7e-10, 0.01749174864, 14945.3161735544],\n [7.4e-10, 1.0997604582, 16460.33352952499],\n [5.6e-10, 1.63036186739, 15720.8387848784],\n [5.5e-10, 4.86788348404, 13095.8426650774],\n [6e-10, 5.93729841267, 12539.853380183],\n [5.4e-10, 0.22608242982, 15110.4661198662],\n [5.4e-10, 2.30250047594, 16062.1845261168],\n [6.4e-10, 2.13513754101, 7875.6718636242],\n [5.9e-10, 5.87963500139, 5331.3574437408],\n [5.8e-10, 2.30546168615, 955.5997416086],\n [4.9e-10, 1.93839278478, 5333.9002410216],\n [5.4e-10, 5.80331607119, 12043.574281889],\n [5.4e-10, 4.44671053809, 4701.1165017084],\n [4.9e-10, 0.30241161485, 6805.6532680852],\n [4.6e-10, 2.76898193028, 6709.6740408674],\n [4.6e-10, 3.98449608961, 98068.53671630539],\n [4.9e-10, 3.72022009896, 12323.4230960088],\n [4.5e-10, 3.30065998328, 22003.9146348698],\n [4.8e-10, 0.71071357303, 6303.4311693902],\n [6.1e-10, 1.66030429494, 6262.300454499],\n [4.7e-10, 1.26317154881, 11919.140866668],\n [5.1e-10, 1.08020906825, 10988.808157535],\n [4.5e-10, 0.89150445122, 51868.2486621788],\n [4.3e-10, 0.57756724285, 24356.7807886416],\n [4.3e-10, 1.61526242998, 6277.552925684],\n [4.5e-10, 2.96132920534, 8982.810669309],\n [4.3e-10, 5.74295325645, 11403.676995575],\n [5.5e-10, 3.14274403422, 33019.0211122046],\n [5.7e-10, 0.06379726305, 15671.0817594066],\n [4.1e-10, 2.53761820726, 6262.7205305926],\n [4e-10, 1.53130436944, 18451.07854656599],\n [5.2e-10, 1.71451922581, 1551.045222648],\n [5.5e-10, 0.89439119424, 11933.3679606696],\n [4.5e-10, 3.88495384656, 60530.4889857418],\n [4e-10, 4.75740908001, 38526.574350872],\n [4e-10, 3.77498297348, 26087.9031415742],\n [3.9e-10, 2.97113832621, 2118.7638603784],\n [4e-10, 3.36050962605, 10021.8372800994],\n [4.7e-10, 1.67051113434, 6303.8512454838],\n [5.2e-10, 5.21827368711, 77713.7714681205],\n [4.7e-10, 4.26356628717, 21424.4666443034],\n [3.7e-10, 1.66712389942, 6819.8803620868],\n [3.7e-10, 0.65746800933, 12029.3471878874],\n [3.5e-10, 3.36255650927, 24072.9214697764],\n [3.6e-10, 0.11087914947, 10344.2950653858],\n [4e-10, 4.14725582115, 2787.0430238574],\n [3.5e-10, 5.93650887012, 31570.7996493912],\n [3.6e-10, 2.15108874765, 30774.5016425748],\n [3.6e-10, 1.75078825382, 16207.886271502],\n [3.4e-10, 2.75708224536, 12139.5535091068],\n [3.4e-10, 6.168913788, 24491.4257925834],\n [3.4e-10, 2.31528650443, 55798.4583583984],\n [3.2e-10, 4.21446357042, 15664.03552270859],\n [3.4e-10, 3.19783054699, 32217.2001810808],\n [3.9e-10, 1.24979117796, 6418.1409300268],\n [3.8e-10, 5.89832942685, 640.8776073822],\n [3.3e-10, 4.80200120107, 16723.350142595],\n [3.2e-10, 1.72442327688, 27433.88921587499],\n [3.5e-10, 4.44608896525, 18202.21671665939],\n [3.1e-10, 4.5279073128, 6702.5604938666],\n [3.4e-10, 3.96287980676, 18216.443810661],\n [3e-10, 5.06259854444, 226858.23855437007],\n [3.4e-10, 1.43910280005, 49515.382508407],\n [3e-10, 0.29303163371, 13521.7514415914],\n [2.9e-10, 2.0263384022, 11609.8625440122],\n [3e-10, 2.5492323024, 9924.8104215106],\n [3.2e-10, 4.91793198558, 11300.5842213564],\n [3e-10, 0.23284423547, 23581.2581773176],\n [2.9e-10, 1.62807736495, 639.897286314],\n [2.8e-10, 3.84568936822, 2699.7348193176],\n [2.9e-10, 1.83149729794, 29822.7832363242],\n [3.3e-10, 4.60320094415, 19004.6479494084],\n [2.7e-10, 1.86151121799, 6288.5987742988],\n [3e-10, 4.4649407224, 36147.4098773004],\n [2.8e-10, 5.19684492912, 5863.5912061162],\n [3.5e-10, 4.52695674113, 36949.2308084242],\n [2.7e-10, 3.52528177609, 10770.8932562618],\n [2.6e-10, 1.48499438453, 11080.1715789176],\n [3.5e-10, 2.82154380962, 19402.7969528166],\n [2.5e-10, 2.46339998836, 6279.4854213396],\n [2.6e-10, 4.97688894643, 16737.5772365966],\n [2.7e-10, 0.408271125, 12964.300703391],\n [2.9e-10, 4.15148654061, 45892.73043315699],\n [2.6e-10, 4.56404104286, 17796.9591667858],\n [2.5e-10, 2.89309528854, 6286.6662786432],\n [2.6e-10, 4.82914580957, 1066.49547719],\n [3.1e-10, 3.93096113738, 29864.334027309],\n [2.4e-10, 6.14987193584, 18606.4989460002],\n [2.4e-10, 3.74225964547, 29026.48522950779],\n [2.5e-10, 5.70460621565, 27707.5424942948],\n [2.5e-10, 5.33928840652, 15141.390794312],\n [2.3e-10, 2.37624087345, 17996.0311682222],\n [2.6e-10, 1.34231351782, 18875.525869774],\n [2.2e-10, 5.5079162612, 6245.0481773556],\n [2.4e-10, 1.33998410121, 19800.9459562248],\n [2.3e-10, 0.2251228089, 6279.7894925736],\n [2.2e-10, 1.17576471775, 11925.2740926006],\n [2.2e-10, 3.5860360664, 6915.8595893046],\n [2.3e-10, 3.21621246666, 6286.3622074092],\n [2.9e-10, 2.09564449439, 15265.8865193004],\n [2.2e-10, 4.74660932338, 28230.18722269139],\n [2.1e-10, 2.30688751432, 5999.2165311262],\n [2.8e-10, 3.92087592807, 18208.349942592],\n [2.1e-10, 3.22643339385, 25934.1243310894],\n [2.1e-10, 3.04956726238, 6566.9351688566],\n [2.7e-10, 5.35645770522, 33794.5437235286],\n [2.5e-10, 5.91542362188, 6489.2613984286],\n [2e-10, 1.52296293311, 135.0650800354],\n [1.9e-10, 1.78134428631, 156137.47598479927],\n [1.9e-10, 0.34388684087, 5327.4761083828],\n [2.6e-10, 3.41701003233, 25287.7237993998],\n [1.9e-10, 2.86664271911, 18422.62935909819],\n [1.9e-10, 4.71432851499, 77690.75950573849],\n [1.9e-10, 2.54227398241, 77736.78343050249],\n [2e-10, 5.91915117116, 48739.859897083]\n ],\n \"2\": [\n [0.00004359385, 5.78455133808, 6283.0758499914],\n [0.00000123633, 5.57935427994, 12566.1516999828],\n [1.2342e-7, 3.14159265359, 0],\n [8.792e-8, 3.62777893099, 77713.7714681205],\n [5.689e-8, 1.86958905084, 5573.1428014331],\n [3.302e-8, 5.47034879713, 18849.2275499742],\n [1.471e-8, 4.47964125007, 5507.5532386674],\n [1.013e-8, 2.81323115556, 5223.6939198022],\n [8.54e-9, 3.107765669, 1577.3435424478],\n [1.102e-8, 2.84173992403, 161000.6857376741],\n [6.48e-9, 5.47348203398, 775.522611324],\n [6.08e-9, 1.37894173533, 6438.4962494256],\n [4.99e-9, 4.4164924225, 6286.5989683404],\n [4.16e-9, 0.90332697974, 10977.078804699],\n [4.04e-9, 3.2056726953, 5088.6288397668],\n [3.51e-9, 1.81081728907, 5486.777843175],\n [4.66e-9, 3.65086758149, 7084.8967811152],\n [4.58e-9, 5.38585314743, 149854.4001348079],\n [3.04e-9, 3.51015066341, 796.2980068164],\n [2.66e-9, 6.17413982699, 6836.6452528338],\n [2.81e-9, 1.8387467254, 4694.0029547076],\n [2.62e-9, 1.41420110644, 2146.1654164752],\n [2.64e-9, 3.14103683911, 71430.69561812909],\n [3.19e-9, 5.35037932146, 3154.6870848956],\n [2.38e-9, 2.17695432424, 155.4203994342],\n [2.29e-9, 4.7596958807, 7234.794256242],\n [2.91e-9, 4.61776401638, 4690.4798363586],\n [2.11e-9, 0.21864885298, 4705.7323075436],\n [2.04e-9, 4.22895113488, 1349.8674096588],\n [1.95e-9, 4.58550676556, 529.6909650946],\n [2.55e-9, 2.81442711144, 1748.016413067],\n [1.82e-9, 5.70454011389, 6040.3472460174],\n [1.8e-9, 6.02147727878, 4292.3308329504],\n [1.86e-9, 1.58690991244, 6309.3741697912],\n [1.67e-9, 2.88802733052, 9437.762934887],\n [1.66e-9, 1.99990574734, 8031.0922630584],\n [1.6e-9, 0.04412738495, 2544.3144198834],\n [1.97e-9, 2.01089431842, 1194.4470102246],\n [1.65e-9, 5.78372596774, 83996.84731811189],\n [2.14e-9, 3.38300910371, 7632.9432596502],\n [1.4e-9, 0.36669664351, 10447.3878396044],\n [1.51e-9, 0.95519595275, 6127.6554505572],\n [1.36e-9, 1.48417295645, 2352.8661537718],\n [1.28e-9, 5.48057748834, 951.7184062506],\n [1.26e-9, 5.26866506592, 6279.5527316424],\n [1.27e-9, 3.77552907014, 6812.766815086],\n [1.03e-9, 4.95897533789, 398.1490034082],\n [1.04e-9, 0.70183576826, 1592.5960136328],\n [1.01e-9, 1.14481598642, 3894.1818295422],\n [1.31e-9, 0.76624310306, 553.5694028424],\n [1.09e-9, 5.41063597567, 6256.7775301916],\n [7.8e-10, 5.84775340741, 242.728603974],\n [9.7e-10, 1.94685257714, 11856.2186514245],\n [1e-9, 5.19725292131, 244287.60000722768],\n [7.6e-10, 0.70480774041, 8429.2412664666],\n [8e-10, 6.18430772683, 1059.3819301892],\n [6.8e-10, 5.29561709093, 14143.4952424306],\n [8.5e-10, 5.39487308005, 25132.3033999656],\n [5.5e-10, 5.16874637579, 7058.5984613154],\n [6.3e-10, 0.48494730699, 801.8209311238],\n [5.8e-10, 4.07254840265, 13367.9726311066],\n [5.1e-10, 3.89696552232, 12036.4607348882],\n [5.1e-10, 5.56335232286, 1990.745017041],\n [6e-10, 2.2504659671, 8635.9420037632],\n [4.9e-10, 5.58163417371, 6290.1893969922],\n [5.1e-10, 3.87240194908, 26.2983197998],\n [5.1e-10, 4.19300909995, 7860.4193924392],\n [4.1e-10, 3.97169191582, 10973.55568635],\n [4.1e-10, 3.5708091923, 7079.3738568078],\n [5.6e-10, 2.76959005761, 90955.5516944961],\n [4.2e-10, 1.91461189163, 7477.522860216],\n [4.2e-10, 0.42775891995, 10213.285546211],\n [4.2e-10, 1.06925480488, 709.9330485583],\n [3.8e-10, 6.17935925345, 9917.6968745098],\n [5e-10, 0.81691517401, 11506.7697697936],\n [5.3e-10, 1.45828359397, 233141.3144043615],\n [3.8e-10, 3.32444534628, 5643.1785636774],\n [4.7e-10, 6.21543665927, 6681.2248533996],\n [3.7e-10, 0.3635930998, 10177.2576795336],\n [4.5e-10, 5.29587706357, 10575.4066829418],\n [3.4e-10, 5.63446915337, 6525.8044539654],\n [3.4e-10, 5.36385158519, 4933.2084403326],\n [3.5e-10, 5.36152295839, 25158.6017197654],\n [4.2e-10, 5.08837645072, 11015.1064773348],\n [4.2e-10, 4.22496037505, 88860.05707098669],\n [3.9e-10, 1.99171699618, 6284.0561710596],\n [2.9e-10, 3.1908862817, 11926.2544136688],\n [2.9e-10, 0.14996158324, 12168.0026965746],\n [3e-10, 1.58346276808, 9779.1086761254],\n [2.6e-10, 4.16210340581, 12569.6748183318],\n [3.6e-10, 2.74684637873, 3738.761430108],\n [2.6e-10, 0.7282491532, 1589.0728952838],\n [3.1e-10, 5.34906371821, 143571.32428481648],\n [2.5e-10, 0.10240267494, 22483.84857449259],\n [3e-10, 3.47110495524, 14945.3161735544],\n [2.6e-10, 3.89359701125, 5753.3848848968],\n [2.4e-10, 1.18744224678, 4535.0594369244],\n [3.3e-10, 2.99317143244, 3930.2096962196],\n [2.4e-10, 1.57253767584, 6496.3749454294],\n [2.4e-10, 3.47434797542, 4136.9104335162],\n [2.2e-10, 3.91230073719, 6275.9623029906],\n [2.5e-10, 4.02978941287, 3128.3887650958],\n [2.3e-10, 1.07724492065, 12721.572099417],\n [2.1e-10, 1.89591807148, 16730.4636895958],\n [2.5e-10, 2.42198937013, 5729.506447149],\n [2e-10, 1.78163489101, 17789.845619785],\n [2.1e-10, 0.49258939822, 29088.811415985],\n [2.6e-10, 4.14947806747, 2388.8940204492],\n [2.7e-10, 2.54785812264, 3496.032826134],\n [2e-10, 4.29944129273, 16858.4825329332],\n [2.1e-10, 5.97796936723, 7.1135470008],\n [1.9e-10, 0.80292033311, 16062.1845261168],\n [2.4e-10, 4.89894141052, 17260.1546546904],\n [2.5e-10, 1.37003752175, 6282.0955289232],\n [2.2e-10, 4.92663152168, 18875.525869774],\n [2.3e-10, 5.68902059771, 16460.33352952499],\n [2.3e-10, 3.03021283729, 66567.48586525429],\n [1.6e-10, 3.89713736666, 5331.3574437408],\n [1.6e-10, 5.68562539832, 12559.038152982],\n [1.6e-10, 3.95085099736, 3097.88382272579],\n [1.6e-10, 3.99041783945, 6283.14316029419],\n [2e-10, 6.106439191, 167283.7615876655],\n [1.5e-10, 4.09775914607, 11712.9553182308],\n [1.6e-10, 5.717699407, 17298.1823273262],\n [1.6e-10, 3.28894009404, 5884.9268465832],\n [1.5e-10, 4.4256424368, 13517.8701062334],\n [1.6e-10, 4.4345208093, 6283.0085396886],\n [1.4e-10, 1.44384279999, 4164.311989613],\n [1.4e-10, 4.47380919159, 11790.6290886588],\n [1.4e-10, 4.77646531825, 7342.4577801806],\n [1.1e-10, 2.56768522896, 5481.2549188676],\n [1.1e-10, 1.514433322, 16200.7727245012],\n [1.1e-10, 0.88708889185, 21228.3920235458],\n [1.4e-10, 4.50116508534, 640.8776073822]\n ],\n \"3\": [\n [0.00000144595, 4.27319433901, 6283.0758499914],\n [6.729e-8, 3.91706261708, 12566.1516999828],\n [7.74e-9, 0, 0],\n [2.47e-9, 3.73021571217, 18849.2275499742],\n [3.6e-10, 2.8008140905, 6286.5989683404],\n [3.3e-10, 5.62990083112, 6127.6554505572],\n [1.8e-10, 3.72826142555, 6438.4962494256],\n [1.6e-10, 4.26011484232, 6525.8044539654],\n [1.4e-10, 3.47817116396, 6256.7775301916],\n [1.2e-10, 3.55747379482, 25132.3033999656],\n [1e-10, 4.43995693209, 4705.7323075436],\n [1e-10, 4.2804525547, 83996.84731811189],\n [9e-11, 5.36457057335, 6040.3472460174],\n [8e-11, 1.78458957263, 5507.5532386674],\n [9e-11, 0.4727519993, 6279.5527316424],\n [9e-11, 1.34741231639, 6309.3741697912],\n [9e-11, 0.77092900708, 5729.506447149],\n [7e-11, 3.50146897332, 7058.5984613154],\n [5e-11, 2.890710617, 775.522611324],\n [6e-11, 2.36514111314, 6836.6452528338]\n ],\n \"4\": [\n [3.858e-8, 2.56389016346, 6283.0758499914],\n [3.06e-9, 2.26911740541, 12566.1516999828],\n [5.3e-10, 3.44031471924, 5573.1428014331],\n [1.5e-10, 2.03136359366, 18849.2275499742],\n [1.3e-10, 2.05688873673, 77713.7714681205],\n [7e-11, 4.4121885448, 161000.6857376741],\n [4e-11, 5.33854414781, 6438.4962494256],\n [6e-11, 3.81514213664, 149854.4001348079],\n [4e-11, 4.26602478239, 6127.6554505572]\n ],\n \"5\": [\n [8.6e-10, 1.21805304895, 6283.0758499914],\n [1.2e-10, 0.65572878044, 12566.1516999828]\n ]\n },\n name: \"earth\",\n type: \"B\"\n};\nexport default m;\n","import _vsop87Bearth from 'astronomia/data/vsop87Bearth'\nexport const vsop87Bearth = _vsop87Bearth\n","import { solstice, julian, planetposition } from 'astronomia'\nimport { vsop87Bearth } from './vsop87Bearth.js'\n\nimport moment from 'moment-timezone'\nimport CalDate from 'caldate'\nimport CalEvent from './CalEvent.js'\n\nconst earth = new planetposition.Planet(vsop87Bearth)\n\nexport default class Equinox extends CalEvent {\n /**\n * @param {object} [opts]\n * @param {string} opts.season - type of season (spring|summer|autumn|winter)\n * @param {number|string} opts.offset - offset in days\n */\n constructor (opts) {\n opts = opts || {}\n super(opts)\n\n this._season = opts.season\n this._timezone = opts.timezone || 'GMT'\n }\n\n inYear (year) {\n let jde\n switch (this._season) {\n case 'march': {\n jde = solstice.march2(year, earth)\n break\n }\n case 'june': {\n jde = solstice.june2(year, earth)\n break\n }\n case 'september': {\n jde = solstice.september2(year, earth)\n break\n }\n case 'december': {\n jde = solstice.december2(year, earth)\n break\n }\n }\n\n const str = new julian.Calendar().fromJDE(jde).toDate().toISOString()\n let date\n if (/^[+-]\\d{2}:\\d{2}?$/.test(this._timezone)) { // for '+08:00' formats\n date = moment(str).utcOffset(this._timezone)\n } else { // for 'Asia/Shanghai' formats\n date = moment(str).tz(this._timezone) // move to timezone\n }\n\n const floorDate = {\n year,\n month: date.month() + 1,\n day: date.date()\n }\n\n const d = new CalDate(floorDate).setOffset(this.offset)\n this.dates.push(d)\n return this\n }\n}\n","import _vsop87Bearth from 'astronomia/data/vsop87Bearth'\nexport const vsop87Bearth = _vsop87Bearth\n","/**\n * @copyright 2016 commenthol\n * @license MIT\n */\n\nimport { base, solstice, solar, moonphase, planetposition, julian } from 'astronomia'\nimport { vsop87Bearth } from './vsop87Bearth.js'\n\nconst earth = new planetposition.Planet(vsop87Bearth)\nconst lunarOffset = moonphase.meanLunarMonth / 2\nconst p = 180 / Math.PI\n\n// Start of Chinese Calendar in 2636 BCE by Chalmers\nconst epochY = -2636\nconst epoch = new julian.CalendarGregorian(epochY, 2, 15).toJDE()\n\nfunction toYear (jde) {\n return new julian.CalendarGregorian().fromJDE(jde).toYear()\n}\n\n// prevent rounding errors\nfunction toFixed (val, e) {\n return parseFloat(val.toFixed(e), 10)\n}\n\nexport default class CalendarChinese {\n /**\n * constructor\n *\n * @param {Number|Array|Object} cycle - chinese 60 year cicle; if `{Array}` than `[cycle, year, ..., day]`\n * @param {Number} year - chinese year of cycle\n * @param {Number} month - chinese month\n * @param {Number} leap - `true` if leap month\n * @param {Number} day - chinese day\n */\n constructor (cycle, year, month, leap, day) {\n this.set(cycle, year, month, leap, day)\n\n this._epochY = epochY\n this._epoch = epoch\n this._cache = { // cache for results\n lon: {},\n sue: {},\n ny: {}\n }\n }\n\n /**\n * set a new chinese date\n *\n * @param {Number|Array|Object} cycle - chinese 60 year cicle; if `{Array}` than `[cycle, year, ..., day]`\n * @param {Number} year - chinese year of cycle\n * @param {Number} month - chinese month\n * @param {Number} leap - `true` if leap month\n * @param {Number} day - chinese day\n */\n set (cycle, year, month, leap, day) {\n if (cycle instanceof CalendarChinese) {\n this.cycle = cycle.cycle\n this.year = cycle.year\n this.month = cycle.month\n this.leap = cycle.leap\n this.day = cycle.day\n } else if (Array.isArray(cycle)) {\n this.cycle = cycle[0]\n this.year = cycle[1]\n this.month = cycle[2]\n this.leap = cycle[3]\n this.day = cycle[4]\n } else {\n this.cycle = cycle\n this.year = year\n this.month = month\n this.leap = leap\n this.day = day\n }\n return this\n }\n\n /**\n * returns chinese date\n * @returns {Array}\n */\n get () {\n return [this.cycle, this.year, this.month, this.leap, this.day]\n }\n\n /**\n * get Gregorian year from Epoch / Cycle\n * @return {Number} year\n */\n yearFromEpochCycle () {\n return this._epochY + (this.cycle - 1) * 60 + (this.year - 1)\n }\n\n /**\n * convert gregorian date to chinese calendar date\n *\n * @param {Number} year - (int) year in Gregorian or Julian Calendar\n * @param {Number} month - (int)\n * @param {Number} day - needs to be in correct (chinese) timezone\n * @return {Object} this\n */\n fromGregorian (year, month, day) {\n const j = this.midnight(new julian.CalendarGregorian(year, month, day).toJDE())\n if (month === 1 && day <= 20) year-- // chinese new year never starts before 20/01\n this._from(j, year)\n return this\n }\n\n /**\n * convert date to chinese calendar date\n *\n * @param {Date} date - javascript date object\n * @return {Object} this\n */\n fromDate (date) {\n const j = this.midnight(new julian.CalendarGregorian().fromDate(date).toJDE())\n this._from(j, date.getFullYear())\n return this\n }\n\n /**\n * convert JDE to chinese calendar date\n *\n * @param {Number} jde - date in JDE\n * @return {Object} this\n */\n fromJDE (jde) {\n const j = this.midnight(jde)\n const gc = new julian.CalendarGregorian().fromJDE(j)\n if (gc.month === 1 && gc.day < 20) gc.year-- // chinese new year never starts before 20/01\n this._from(j, gc.year)\n return this\n }\n\n /**\n * common conversion from JDE, year to chinese date\n *\n * @private\n * @param {Number} j - date in JDE\n * @param {Number} year - gregorian year\n */\n _from (j, year) {\n let ny = this.newYear(year)\n if (ny > j) {\n ny = this.newYear(year - 1)\n }\n let nm = this.previousNewMoon(j)\n if (nm < ny) {\n nm = ny\n }\n\n const years = 1.5 + (ny - this._epoch) / base.BesselianYear\n this.cycle = 1 + Math.trunc((years - 1) / 60)\n this.year = 1 + Math.trunc((years - 1) % 60)\n\n this.month = this.inMajorSolarTerm(nm).term\n const m = Math.round((nm - ny) / moonphase.meanLunarMonth)\n if (m === 0) {\n this.month = 1\n this.leap = false\n } else {\n this.leap = this.isLeapMonth(nm)\n }\n\n if (m > this.month) {\n this.month = m\n } else if (this.leap) {\n this.month--\n }\n\n this.day = 1 + Math.trunc(toFixed(j, 3) - toFixed(nm, 3))\n }\n\n /**\n * convert chinese date to gregorian date\n *\n * @param {Number} [gyear] - (int) gregorian year\n * @return {Object} date in gregorian (preleptic) calendar; Timezone is Standard Chinese / Bejing Time\n * {Number} year - (int)\n * {Number} month - (int)\n * {Number} day - (int)\n */\n toGregorian (gyear) {\n const jde = this.toJDE(gyear)\n const gc = new julian.CalendarGregorian().fromJDE(jde + 0.5) // add 0.5 as day get truncated\n return {\n year: gc.year,\n month: gc.month,\n day: Math.trunc(gc.day)\n }\n }\n\n /**\n * convert chinese date to Date\n *\n * @param {Number} [gyear] - (int) gregorian year\n * @return {Date} javascript date object in gregorian (preleptic) calendar\n */\n toDate (gyear) {\n const jde = this.toJDE(gyear)\n return new julian.CalendarGregorian().fromJDE(toFixed(jde, 4)).toDate()\n }\n\n /**\n * convert chinese date to JDE\n *\n * @param {Number} [gyear] - (int) gregorian year\n * @return {Number} date in JDE\n */\n toJDE (gyear) {\n const years = gyear || this.yearFromEpochCycle()\n const ny = this.newYear(years)\n let nm = ny\n if (this.month > 1) {\n nm = this.previousNewMoon(ny + this.month * 29)\n const st = this.inMajorSolarTerm(nm).term\n const lm = this.isLeapMonth(nm)\n\n if (st > this.month) {\n nm = this.previousNewMoon(nm - 1)\n } else if (st < this.month || (lm && !this.leap)) {\n nm = this.nextNewMoon(nm + 1)\n }\n }\n if (this.leap) {\n nm = this.nextNewMoon(nm + 1)\n }\n const jde = nm + this.day - 1\n return jde\n }\n\n /**\n * timeshift to UTC\n *\n * @param {CalendarGregorian} gcal - gregorian calendar date\n * @return {Number} timeshift in fraction of day\n */\n timeshiftUTC (gcal) {\n if (gcal.toYear() >= 1929) {\n return 8 / 24 // +8:00:00h Standard China time zone (120° East)\n }\n return 1397 / 180 / 24 // +7:45:40h Beijing (116°25´ East)\n }\n\n /**\n * time/date at midnight - truncate `jde` to actual day\n *\n * @param {Number} jde - julian ephemeris day\n * @return {Number} truncated jde\n */\n midnight (jde) {\n const gcal = new julian.CalendarGregorian().fromJDE(jde)\n const ts = 0.5 - this.timeshiftUTC(gcal)\n let mn = Math.trunc(gcal.toJD() - ts) + ts\n mn = gcal.fromJD(mn).toJDE()\n if (toFixed(jde, 5) === toFixed(mn, 5) + 1) {\n return jde\n }\n return mn\n }\n\n /**\n * get major solar term `Z1...Z12` for a given date in JDE\n *\n * @param {Number} jde - date of new moon\n * @returns {Number} major solar term part of that month\n */\n inMajorSolarTerm (jde) {\n const lon = this._cache.lon[jde] || solar.apparentVSOP87(earth, jde).lon\n this._cache.lon[jde] = lon\n const lonDeg = lon * p - 1e-13\n const term = (2 + Math.floor(lonDeg / 30)) % 12 + 1\n return { term, lon: lonDeg }\n }\n\n /**\n * Test if date `jde` is inside a leap month\n * `jde` and previous new moon need to have the same major solar term\n *\n * @param {Number} jde - date of new moon\n * @returns {Boolean} `true` if previous new moon falls into same solar term\n */\n isLeapMonth (jde) {\n const t1 = this.inMajorSolarTerm(jde)\n const next = this.nextNewMoon(this.midnight(jde + lunarOffset))\n const t2 = this.inMajorSolarTerm(next)\n const r = (t1.term === t2.term)\n return r\n }\n\n /**\n * next new moon since `jde`\n *\n * @param {Number} jde - date in julian ephemeris days\n * @return {Number} jde at midnight\n */\n nextNewMoon (jde) {\n let nm = this.midnight(moonphase.newMoon(toYear(jde)))\n let cnt = 0\n while (nm < jde && cnt++ < 4) {\n nm = this.midnight(moonphase.newMoon(toYear(jde + cnt * lunarOffset)))\n }\n return nm\n }\n\n /**\n * next new moon since `jde`\n *\n * @param {Number} jde - date in julian ephemeris days\n * @return {Number} jde at midnight\n */\n previousNewMoon (jde) {\n let nm = this.midnight(moonphase.newMoon(toYear(jde)))\n let cnt = 0\n while (nm > jde && cnt++ < 4) {\n nm = this.midnight(moonphase.newMoon(toYear(jde - cnt * lunarOffset)))\n }\n return nm\n }\n\n /**\n * chinese new year for a given gregorian year\n *\n * @param {Number} gyear - gregorian year (int)\n * @param {Number} jde at midnight\n */\n newYear (gyear) {\n gyear = Math.trunc(gyear)\n if (this._cache.ny[gyear]) return this._cache.ny[gyear]\n\n const sue1 = this._cache.sue[gyear - 1] || solstice.december2(gyear - 1, earth)\n const sue2 = this._cache.sue[gyear] || solstice.december2(gyear, earth)\n this._cache.sue[gyear - 1] = sue1\n this._cache.sue[gyear] = sue2\n\n const m11n = this.previousNewMoon(this.midnight(sue2 + 1))\n const m12 = this.nextNewMoon(this.midnight(sue1 + 1))\n const m13 = this.nextNewMoon(this.midnight(m12 + lunarOffset))\n this.leapSui = Math.round((m11n - m12) / moonphase.meanLunarMonth) === 12\n let ny = m13\n\n if (this.leapSui && (this.isLeapMonth(m12) || this.isLeapMonth(m13))) {\n ny = this.nextNewMoon(this.midnight(m13 + moonphase.meanLunarMonth / 2))\n }\n this._cache.ny[gyear] = ny\n return ny\n }\n\n /**\n * get solar term from solar longitude\n *\n * @param {Number} term - jiéqì solar term 1 .. 24\n * @param {Number} [gyear] - (int) gregorian year\n * @returns {Number} jde at midnight\n */\n solarTerm (term, gyear) {\n if (gyear && term <= 3) gyear--\n const years = gyear || this.yearFromEpochCycle()\n const lon = (((term + 20) % 24) * 15) % 360\n let st = solstice.longitude(years, earth, lon / p)\n st = this.midnight(st)\n return st\n }\n\n /**\n * get major solar term\n *\n * @param {Number} term - zhōngqì solar term Z1 .. Z12\n * @param {Number} [gyear] - (int) gregorian year\n * @returns {Number} jde at midnight\n */\n majorSolarTerm (term, gyear) {\n return this.solarTerm(term * 2, gyear)\n }\n\n /**\n * get minor solar term\n *\n * @param {Number} term - jiéqì solar term J1 .. J12\n * @param {Number} [gyear] - (int) gregorian year\n * @returns {Number} jde at midnight\n */\n minorSolarTerm (term, gyear) {\n return this.solarTerm(term * 2 - 1, gyear)\n }\n\n /**\n * Qı̄ngmíng - Pure brightness Festival\n *\n * @param {Number} [gyear] - (int) gregorian year\n * @returns {Number} jde at midnight\n */\n qingming (gyear) {\n return this.solarTerm(5, gyear)\n }\n}\n","/**\n * bengali names were taken from https://github.com/nuhil/bangla-calendar - MIT licensed\n */\n\nconst monthNames = ['বৈশাখ', 'জ্যৈষ্ঠ', 'আষাঢ়', 'শ্রাবণ', 'ভাদ্র', 'আশ্বিন', 'কার্তিক', 'অগ্রহায়ণ', 'পৌষ', 'মাঘ', 'ফাল্গুন', 'চৈত্র']\nconst weekDays = ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার']\nconst seasonNames = ['গ্রীষ্ম', 'বর্ষা', 'শরৎ', 'হেমন্ত', 'শীত', 'বসন্ত']\n\nconst digits = ['০', '১', '২', '৩', '৪', '৫', '৬', '৭', '৮', '৯']\n\nlet banglas\n\nconst createBanglas = () => {\n banglas = digits.reduce((o, c, i) => {\n o[c] = i\n return o\n }, {})\n}\n\nexport const digitToBangla = number => String(number).replace(/\\d/g, digit => digits[digit])\n\nexport const banglaToDigit = bangla => {\n if (!banglas) createBanglas() // memoize\n const month = monthNames.indexOf(bangla)\n const str = month !== -1\n ? month + 1\n : String(bangla).replace(/./g, bangla => {\n const r = banglas[bangla]\n return r !== undefined ? r : bangla\n })\n return Number(str)\n}\n\nexport const weekDay = day => weekDays[day]\n\nexport const monthName = month => monthNames[month - 1]\n\nexport const seasonName = month => seasonNames[Math.floor((month - 1) / 2)] // ('পৌষ' + 'মাঘ') = 'শীত'. Every consecutive two index in 'banglaMonths' indicates a single index in 'banglaSeasons'.\n","/**\n * @copyright 2016 commenthol\n * @license MIT\n */\n\nimport { julian } from 'astronomia'\nimport CalendarChinese from './Chinese.js'\n\n// Start of Korean Calendar in 2333 BCE (단군기원 http://ko.wikipedia.org/wiki/단기)\nconst epochY = -2333\nconst epoch = new julian.CalendarGregorian(epochY, 1, 27).toJDE()\n\n/**\n * change of timezone shifts during the last century\n * @see https://en.wikipedia.org/wiki/Time_in_South_Korea\n */\nconst UTC_DATES = [\n {\n date: new Date('1961-10-09T15:00:00.000Z'), // 1961-10-10T00:00:00+0900\n shift: 9 / 24\n }, // +9:00:00h (135° East)\n {\n date: new Date('1954-03-20T15:30:00.000Z'), // 1954-03-21T00:00:00+0830\n shift: 8.5 / 24\n },\n {\n date: new Date('1911-12-31T15:00:00.000Z'), // 1912-01-01T00:00:00+0900\n shift: 9 / 24\n },\n {\n date: new Date('1908-03-31T15:30:00.000Z'), // 1908-04-01T00:00:00+0830\n shift: 8.5 / 24\n }\n]\n\nexport default class CalendarKorean extends CalendarChinese {\n constructor (cycle, year, month, leap, day) {\n super(cycle, year, month, leap, day)\n\n this._epochY = epochY\n this._epoch = epoch\n }\n\n /**\n * timeshift to UTC\n *\n * @param {CalendarGregorian} gcal - gregorian calendar date\n * @return {Number} timeshift in fraction of day\n */\n timeshiftUTC (gcal) {\n const date = gcal.toDate()\n for (const i in UTC_DATES) {\n if (date >= UTC_DATES[i].date) {\n return UTC_DATES[i].shift\n }\n }\n return 3809 / 450 / 24 // +8:27:52h Seoul City Hall 126°58'E\n }\n}\n","/**\n * @copyright 2016 commenthol\n * @license MIT\n */\n\nimport CalendarChinese from './Chinese.js'\n\nexport default class CalendarVietnamese extends CalendarChinese {\n /**\n * timeshift to UTC\n *\n * @param {CalendarGregorian} gcal - gregorian calendar date\n * @return {Number} timeshift in fraction of day\n */\n timeshiftUTC (gcal) {\n if (gcal.toYear() >= 1968) {\n return 7 / 24 // +7:00:00h\n }\n return 8 / 24 // +8:00:00h Standard China time zone (120° East)\n }\n}\n","import {\n CalendarChinese,\n CalendarKorean,\n CalendarVietnamese\n} from 'date-chinese'\nimport CalEvent from './CalEvent.js'\nimport CalDate from 'caldate'\n\nexport default class Chinese extends CalEvent {\n /**\n * @param {object} [opts]\n */\n constructor (opts) {\n opts = opts || {}\n super(opts)\n switch (opts.fn) {\n case 'chinese':\n this.cal = new CalendarChinese()\n break\n case 'korean':\n this.cal = new CalendarKorean()\n break\n case 'vietnamese':\n this.cal = new CalendarVietnamese()\n break\n }\n }\n\n inYear (year) {\n let d\n let jde\n let date\n const opts = this.opts\n if (opts.solarterm) {\n jde = this.cal.solarTerm(opts.solarterm, year)\n date = this.cal.fromJDE(jde).toGregorian()\n d = new CalDate(date).setOffset(opts.day - 1)\n } else {\n this.cal.set(opts.cycle, opts.year, opts.month, opts.leapMonth, opts.day)\n jde = this.cal.toJDE(year)\n date = this.cal.fromJDE(jde).toGregorian()\n d = new CalDate(date)\n }\n\n this.dates.push(d)\n return this\n }\n}\n","/**\n * @copyright 2016 commenthol\n * @license MIT\n */\n\nimport CalendarChinese from './Chinese.js'\n\n/**\n * @see http://law.e-gov.go.jp/htmldata/M19/M19CO051.html\n */\nconst UTC_DATES = [\n {\n date: new Date('1888-02-11T15:00:00.000Z'), // 1888-02-12T00:00:00+0900\n shift: 9 / 24\n } // +9:00:00h (135° East) Japanese standard meridian\n]\n\n/**\n * Note: I could not find details about the epoch(s) for the year zero of the\n * Japanese calendar dating before 1873. Therefore this calendar uses (wrongly)\n * the Chinese epoch.\n *\n * According to the eras are:\n *\n * Yayoi 300 BC – 250 AD\n * Kofun 250 – 538\n * Asuka 538 – 710\n * Nara 710 – 794\n * Heian 794 – 1185\n * Kamakura 1185 – 1333\n * Kenmu Restoration 1333 – 1336\n * Muromachi 1336 – 1573\n * Azuchi–Momoyama 1568 – 1603\n * Edo 1603 – 1868\n * Meiji 1868 – 1912\n * Taishō 1912 – 1926\n * Shōwa 1926 – 1989\n * Heisei 1989 – present\n *\n * Unfortunately the linking from era to calendar era (especially to the Chinese\n * pre 1873 one) is unknown to me.\n */\n\nexport default class CalendarJapanese extends CalendarChinese {\n /**\n * timeshift to UTC\n *\n * @param {CalendarGregorian} gcal - gregorian calendar date\n * @return {Number} timeshift in fraction of day\n */\n timeshiftUTC (gcal) {\n const date = gcal.toDate()\n for (const i in UTC_DATES) {\n if (date >= UTC_DATES[i].date) {\n return UTC_DATES[i].shift\n }\n }\n return 4193 / 450 / 24 // +9:19:04h (139°46'E)\n }\n}\n","/**\n * @copyright 2018-present commenthol\n * @license MIT\n */\n\nimport {\n banglaToDigit,\n digitToBangla,\n weekDay,\n monthName,\n seasonName\n} from './convert.js'\n\nconst YEAR0 = 593\nconst MILLISECONDS_PER_DAY = 86400000\nconst monthDaysNorm = [31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30]\nconst monthDaysLeap = [31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 31, 30]\n\nconst isLeapYear = (year) => ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)\nconst UTC6 = 6 // timezone offset UTC+6\nconst toEpoch = year => Date.UTC(year, 3, 13, UTC6)\n\nexport class CalendarBengaliRevised {\n /**\n * @constructor\n * @param {Number|String} year - bengali year\n * @param {Number|String} month - (int) 1...12\n * @param {Number|String} day - 1...31\n * @return {Object} this\n */\n constructor (year, month, day) {\n Object.assign(this, {\n year: banglaToDigit(year),\n month: banglaToDigit(month) || 1,\n day: banglaToDigit(day) || 1\n })\n }\n\n /**\n * convert gregorian date to bengali calendar date\n * @param {Number} year - (int) year in Gregorian Calendar\n * @param {Number} month - (int)\n * @param {Number} day - (int)\n * @return {Object} this\n */\n fromGregorian (year, month, day) {\n const monthDays = isLeapYear(year)\n ? monthDaysLeap\n : monthDaysNorm\n\n let _year = year\n if (month < 4 || (month === 4 && day < 14)) {\n _year -= 1\n }\n this.year = _year - YEAR0\n\n const date = Date.UTC(year, month - 1, day, UTC6)\n let days = Math.floor((date - toEpoch(_year)) / MILLISECONDS_PER_DAY)\n\n for (let i = 0; i < monthDays.length; i++) {\n if (days <= monthDays[i]) {\n this.month = i + 1\n break\n }\n days -= monthDays[i]\n }\n\n this.day = days\n return this\n }\n\n /**\n * convert date to bengali calendar date\n * @param {Date} date - javascript date object - uses local date\n * @return {Object} this\n */\n fromDate (date) {\n return this.fromGregorian(date.getFullYear(), date.getMonth() + 1, date.getDate())\n }\n\n /**\n * convert bengali date to gregorian date\n * @return {Object} date in gregorian (preleptic) calendar\n * {Number} year - (int)\n * {Number} month - (int) 1...12\n * {Number} day - (int) 1...31\n */\n toGregorian () {\n const date = this.toDate()\n return {\n year: date.getUTCFullYear(),\n month: date.getUTCMonth() + 1,\n day: date.getUTCDate()\n }\n }\n\n /**\n * convert bengali date to Date\n * @return {Date} javascript date object in gregorian (preleptic) calendar\n */\n toDate () {\n const year = this.year + YEAR0\n const epoch = toEpoch(year)\n const _year = this.month > 10 ? year + 1 : year\n const monthDays = isLeapYear(_year)\n ? monthDaysLeap\n : monthDaysNorm\n\n let days = this.day\n for (let i = 0; i < this.month - 1; i++) {\n days += monthDays[i]\n }\n const date = new Date(days * MILLISECONDS_PER_DAY + epoch)\n return date\n }\n\n /**\n * format date in bengali\n * @param {String} formatStr - string formatter\n *\n * | Input | Description |\n * | ----- | ------------ |\n * | Y | Year with any number of digits and sign |\n * | Q | Season Name |\n * | M | Month number |\n * | MMMM | Month name |\n * | D | Day of month |\n * | dddd | Day name |\n *\n * @return {String}\n */\n format (formatStr) {\n formatStr = formatStr || 'D M, Y'\n if (/dddd/.test(formatStr)) {\n const date = this.toDate()\n formatStr = formatStr.replace(/dddd/g, weekDay(date.getUTCDay()))\n }\n return formatStr\n .replace(/Y/g, digitToBangla(this.year))\n .replace(/Q/g, seasonName(this.month))\n .replace(/MMMM/g, monthName(this.month))\n .replace(/M/g, digitToBangla(this.month))\n .replace(/D/g, digitToBangla(this.day))\n }\n}\n\nexport default CalendarBengaliRevised\n","import CalBengali from 'date-bengali-revised'\nimport CalDate from 'caldate'\nimport CalEvent from './CalEvent.js'\n\nexport default class BengaliRevised extends CalEvent {\n /**\n * @param {object} [opts]\n */\n constructor (opts) {\n opts = opts || {}\n super(opts)\n }\n\n inYear (year) {\n const opts = this.opts\n const date = new CalBengali(year - 593, opts.month, opts.day).toGregorian()\n const d = new CalDate(date)\n this.dates.push(d)\n return this\n }\n}\n","/* eslint spaced-comment:0 */\n\nimport CalEvent from './CalEvent.js'\nimport Easter from './Easter.js'\n\n// --- pre-processor instructions for prepin ---\n// #ifndef nojulian\nimport Julian from './Julian.js'\n// #endif\n// #ifndef nohebrew\nimport Hebrew from './Hebrew.js'\n// #endif\n// #ifndef noislamic\nimport Hijri from './Hijri.js'\n// #endif\n// #ifndef nojalaali\nimport Jalaali from './Jalaali.js'\n// #endif\n// #ifndef noequinox\nimport Equinox from './Equinox.js'\n// #endif\n// #ifndef nochinese\nimport Chinese from './Chinese.js'\n// #endif\n// #ifndef nobengali\nimport BengaliRevised from './BengaliRevised.js'\n// #endif\n\nexport default class CalEventFactory {\n constructor (opts) {\n switch (opts.fn) {\n case 'easter':\n return new Easter(opts)\n // #ifndef nojulian\n case 'julian':\n return new Julian(opts)\n // #endif\n // #ifndef nohebrew\n case 'hebrew':\n return new Hebrew(opts)\n // #endif\n // #ifndef noislamic\n case 'islamic':\n return new Hijri(opts)\n // #endif\n // #ifndef nojalaali\n case 'jalaali':\n return new Jalaali(opts)\n // #endif\n // #ifndef noequinox\n case 'equinox':\n return new Equinox(opts)\n // #endif\n // #ifndef nochinese\n case 'chinese':\n case 'korean':\n case 'vietnamese':\n return new Chinese(opts)\n // #endif\n // #ifndef nobengali\n case 'bengali-revised':\n return new BengaliRevised(opts)\n // #endif\n default:\n return new CalEvent(opts)\n }\n }\n}\n","import Parser from './Parser.js'\nimport Rule from './Rule.js'\nimport PostRule from './PostRule.js'\nimport CalEventFactory from './CalEventFactory.js'\n\n/**\n * handles one rule\n */\nexport default class DateFn {\n /**\n * @param {string} rule - unparsed rule\n * @param {array} holidays - all holidays rules (required for bridge day calculations)\n */\n constructor (ruleStr, holidays) {\n const parser = new Parser()\n this.ruleStr = ruleStr\n this.rules = parser.parse(ruleStr)\n this.ok = !parser.error\n this.holidays = holidays\n this.opts = holidays ? holidays[ruleStr] : {}\n this.event = undefined\n this.cache = new Map()\n }\n\n /**\n * @param {number} year\n * @returns {this}\n */\n inYear (year) {\n if (this.cache.has(year)) {\n this.event = this.cache.get(year)\n return this\n }\n\n let ruleFn // current rule\n const postProc = new PostRule(this.ruleStr, this.opts, this.holidays)\n\n this.rules.forEach((rule) => {\n if (rule.fn) {\n const calEvent = new CalEventFactory(rule)\n .inYear(year - 1) // run over neighboring dates to catch overlaps\n .inYear(year)\n .inYear(year + 1)\n postProc.push(calEvent)\n ruleFn = new Rule(calEvent)\n } else {\n if (ruleFn.resolve(rule)) {\n postProc.resolve(rule, year)\n }\n }\n })\n\n const event = postProc.getEvent(year)\n this.cache.set(year, event)\n\n this.event = event\n return this\n }\n\n get (timezone) {\n return this.event.get(timezone)\n }\n}\n","import { toNumber } from './internal/utils.js'\n\n/**\n * Holiday Rule\n * Apart from `rule` and `name` other options may be set\n * @constructor\n * @param {object} ruleObj\n * @param {string} ruleObj.rule - the rule string\n * @param {string|object} [ruleObj.name] - the name of the holiday, plain or with i18n\n * @param {string} [ruleObj.type] - type of holiday\n * @param {boolean} [ruleObj.substitute] - substitute holiday\n * @param {object[]} [ruleObj.active] - active `[{from?: str, to?: str}]`\n */\nexport class HolidayRule {\n constructor (ruleObj) {\n const { rule, fn, opts, ...other } = ruleObj\n Object.assign(this, { rule, ...other })\n }\n\n /**\n * disable rule in year (month)\n * @param {number} year\n * @param {number} [month] - 1..12\n */\n disableIn (year, month) {\n if (!toNumber(year)) return\n month = month < 1 && month > 12\n ? undefined\n : month < 10 ? '0' + Number(month) : month\n const dateStr = [year, month].filter(Boolean).join('-')\n this.disable = (this.disable || []).concat(dateStr).sort()\n }\n}\n","/**\n * @copyright 2016- (c) commenthol\n * @license ISC\n */\n\nimport CalDate from 'caldate'\nimport _ from './utils.js'\nimport { toYear, toDate } from './internal/utils.js'\nimport Data from './Data.js'\nimport DateFn from './DateFn.js'\nimport { HolidayRule } from './HolidayRule.js'\n\n// priority in ascending order (low ... high)\nconst TYPES = ['observance', 'optional', 'school', 'bank', 'public']\n\n/**\n * @class\n * @param {Object} data - holiday data object - see data/holidays.json\n * @param {String|Object} country - if object, use `{ country: {String}, state: {String}, region: {String} }`\n * @param {String} [state] - specifies state\n * @param {String} [region] - specifies region\n * @param {Object} [opts] - options\n * @param {Array|String} opts.languages - set language(s) with ISO 639-1 shortcodes\n * @param {String} opts.timezone - set timezone\n * @param {Array} opts.types - holiday types to consider\n * @example\n * ```js\n * new Holiday(data, 'US', 'la', 'no') // is the same as\n * new Holiday(data, 'us.la.no') // is the same as\n * new Holiday(data, { country: 'us', state: 'la', region: 'no'})\n * ```\n */\nexport class Holidays {\n constructor (data, country, state, region, opts) {\n if (!data) {\n throw new TypeError('need holiday data')\n }\n this._data = data\n this.init(country, state, region, opts)\n }\n\n /**\n * initialize holidays for a country/state/region\n * @param {String|Object} country - if object, use `{ country: {String}, state: {String}, region: {String} }`\n * @param {String} [state] - specifies state\n * @param {String} [region] - specifies region\n * @param {Object} [opts] - options\n * @param {Array|String} [opts.languages] - set language(s) with ISO 639-1 shortcodes\n * @param {String} [opts.timezone] - set timezone\n * @param {Array} [opts.types] - holiday types to consider; priority is in ascending order (low ... high)\n */\n init (...args) {\n const [country, state, region, opts] = getArgs(...args)\n\n // reset settings\n this.__conf = null\n this.__types = opts.types && opts.types.length ? opts.types : TYPES\n this.holidays = {}\n this.setLanguages()\n\n this.__conf = Data.splitName(country, state, region)\n this.__data = new Data(opts.data || this._data, this.__conf)\n\n if (opts.languages) {\n this.setLanguages(opts.languages)\n } else {\n this.setLanguages(this.__data.getLanguages(this.__conf))\n }\n\n const holidays = this.__data.getRules()\n if (holidays) {\n this.__timezone = opts.timezone || this.__data.getTimezones()[0]\n Object.keys(holidays).forEach((rule) => {\n this.setHoliday(rule, holidays[rule])\n })\n return true\n }\n }\n\n /**\n * set (custom) holiday\n * @throws {TypeError}\n * @param {String} rule - rule for holiday (check supported grammar) or date in ISO Format, e.g. 12-31 for 31st Dec\n * @param {Object|String} [opts] - holiday options (if String, then opts is used as name)\n * @param {Object} opts.name - translated holiday names e.g. `{ en: 'name', es: 'nombre', ... }`\n * @param {String} opts.type - holiday type `public|bank|school|observance`\n * @returns {Boolean} `true` if holiday could be set\n */\n setHoliday (rule, opts) {\n // remove days\n if (opts === false) {\n if (this.holidays[rule]) {\n this.holidays[rule] = false\n return true\n }\n return false\n }\n\n // assign a name to rule\n if (!opts || typeof opts === 'string') {\n opts = opts || rule\n const lang = this.getLanguages()[0]\n opts = _.set({ type: 'public' }, ['name', lang], opts)\n }\n\n // convert active properties to Date\n if (opts.active) {\n if (!Array.isArray(opts.active)) {\n throw TypeError('.active is not of type Array: ' + rule)\n }\n opts.active = opts.active.map((a) => {\n const from = toDate(a.from)\n const to = toDate(a.to)\n if (!(from || to)) {\n throw TypeError('.active needs .from or .to property: ' + rule)\n }\n return { from, to }\n })\n }\n\n // check for supported type\n if (!this.__types.includes(opts.type)) {\n return false\n }\n\n this.holidays[rule] = opts\n\n const fn = new DateFn(rule, this.holidays)\n if (fn.ok) {\n this.holidays[rule].fn = fn\n return true\n } else {\n // throw Error('could not parse rule: ' + rule) // NEXT\n console.error('could not parse rule: ' + rule) // eslint-disable-line\n }\n return false\n }\n\n /**\n * get all holidays for `year` with names using preferred `language`\n * @param {String|Date} [year] - if omitted, the current year is chosen\n * @param {String} [language] - ISO 639-1 code for language\n * @returns {Holiday[]} of found holidays in given year sorted by Date:\n * ```\n * {String} date - ISO Date String of (start)-date in local format\n * {Date} start - start date of holiday\n * {Date} end - end date of holiday\n * {String} name - name of holiday using `language` (if available)\n * {String} type - type of holiday `public|bank|school|observance`\n * ```\n */\n getHolidays (year, language) {\n year = toYear(year)\n\n const langs = this.getLanguages()\n if (language) {\n langs.unshift(language)\n }\n\n const startSorter = (a, b) => (+a.start) - (+b.start)\n const typeIndex = (a) => this.__types.indexOf(a.type)\n const typeSorter = (a, b) => typeIndex(b) - typeIndex(a)\n const ruleIndex = (a) => /substitutes|and if /.test(a.rule) ? 1 : 0\n const ruleLength = (a) => String(a.rule || '').length\n const ruleSorter = (a, b) => ruleIndex(a) - ruleIndex(b) || ruleLength(a) - ruleLength(b)\n\n const filterMap = {}\n\n const arr = Object.keys(this.holidays)\n .reduce((arr, rule) => {\n if (this.holidays[rule].fn) {\n this._dateByRule(year, rule).forEach((o) => {\n arr.push({ ...this._translate(o, langs), rule })\n })\n }\n return arr\n }, [])\n // sort by date and type to filter by duplicate\n .sort((a, b) => startSorter(a, b) || typeSorter(a, b) || ruleSorter(a, b))\n .filter(item => {\n const hash = item.name + (+item.start)\n if (!filterMap[hash]) {\n filterMap[hash] = true\n return true\n }\n return false\n })\n\n return arr\n }\n\n /**\n * check whether `date` is a holiday or not\n * @param {Date|String} [date]\n * @returns {Holiday[]|false} holiday:\n * ```\n * {String} date - ISO Date String of (start)-date in local format\n * {Date} start - start date of holiday\n * {Date} end - end date of holiday\n * {String} name - name of holiday using `language` (if available)\n * {String} type - type of holiday `public|bank|school|observance`\n * ```\n */\n isHoliday (date) {\n date = date ? new Date(date) : new Date()\n const d = new CalDate()\n d.fromTimezone(date, this.__timezone)\n const year = d.year\n const rules = Object.keys(this.holidays)\n const days = []\n for (const rule of rules) {\n const hd = [].concat(this._dateByRule(year, rule))\n for (const hdrule of hd) {\n if (hdrule && date >= hdrule.start && date < hdrule.end) {\n days.push(this._translate(hdrule))\n }\n }\n }\n return days.length ? days : false\n }\n\n /**\n * set or update rule\n * @param {HolidayRule|object} holidayRule\n * @returns {boolean} `true` if holiday could be set, returns `true`\n */\n setRule (holidayRule) {\n const { rule, ...opts } = holidayRule\n return this.setHoliday(rule, opts)\n }\n\n /**\n * unset rule\n * @param {String} rule - rule for holiday (check supported grammar) or date in ISO Format, e.g. 12-31 for 31st Dec\n * @returns {boolean} `true` if holiday could be set, returns `true`\n */\n unsetRule (rule) {\n return this.setHoliday(rule, false)\n }\n\n /**\n * get available rules for selected country, (state, region)\n * @returns {HolidayRule[]}\n */\n getRules () {\n return Object.entries(this.holidays).map(([ruleStr, obj]) => {\n return new HolidayRule({ ...obj, rule: ruleStr })\n })\n }\n\n /**\n * get rule for selected country, (state, region)\n * @param {String} rule - rule for holiday (check supported grammar) or date in ISO Format, e.g. 12-31 for 31st Dec\n * @returns {HolidayRule|undefined}\n */\n getRule (rule) {\n if (this.holidays[rule]) {\n return new HolidayRule({ ...this.holidays[rule], rule })\n }\n }\n\n /**\n * Query for available Countries, States, Regions\n * @param {String} [country]\n * @param {String} [state]\n * @param {String} [lang] - ISO-639 language shortcode\n * @returns {Object} shortcode, name pairs of supported countries, states, regions\n */\n query (country, state, lang) {\n const o = Data.splitName(country, state)\n if (!o || !o.country) {\n return this.getCountries(lang)\n } else if (!o.state) {\n return this.getStates(o.country, lang)\n } else {\n return this.getRegions(o.country, o.state, lang)\n }\n }\n\n /**\n * get supported countries\n * @param {String} [lang] - ISO-639 language shortcode\n * @returns {Object} shortcode, name pairs of supported countries\n * ```js\n * { AD: 'Andorra',\n * US: 'United States' }\n * ```\n */\n getCountries (lang) {\n return this.__data.getCountries(lang)\n }\n\n /**\n * get supported states for a given country\n * @param {String} country - shortcode of country\n * @param {String} [lang] - ISO-639 language shortcode\n * @returns {Object} shortcode, name pairs of supported states, regions\n * ```js\n * { al: 'Alabama', ...\n * wy: 'Wyoming' }\n * ```\n */\n getStates (country, lang) {\n return this.__data.getStates(country, lang)\n }\n\n /**\n * get supported regions for a given country, state\n * @param {String} country - shortcode of country\n * @param {String} state - shortcode of state\n * @param {String} [lang] - ISO-639 language shortcode\n * @returns {Object} shortcode, name pairs of supported regions\n * ```js\n * { no: 'New Orleans' }\n * ```\n */\n getRegions (country, state, lang) {\n return this.__data.getRegions(country, state, lang)\n }\n\n /**\n * sets timezone\n * @param {String} timezone - see `moment-timezone`\n * if `timezone` is `undefined`, then all dates are considered local dates\n */\n setTimezone (timezone) {\n this.__timezone = timezone\n }\n\n /**\n * get timezones for country, state, region\n * @returns {Array} of {String}s containing the timezones\n */\n getTimezones () {\n if (this.__data) {\n return this.__data.getTimezones()\n }\n }\n\n /**\n * set language(s) for holiday names\n * @param {Array|String} language\n * @returns {Array} set languages\n */\n setLanguages (language) {\n if (typeof language === 'string') {\n language = [language]\n }\n const tmp = {}\n this.__languages = [].concat(\n language,\n (this.__conf ? this.__data.getLanguages(this.__conf) : []),\n 'en'\n ).filter(function (l) { // filter out duplicates\n if (!l || tmp[l]) {\n return false\n }\n tmp[l] = 1\n return true\n })\n }\n\n /**\n * get languages for selected country, state, region\n * @returns {Array} containing ISO 639-1 language shortcodes\n */\n getLanguages () {\n return this.__languages\n }\n\n /**\n * get default day off as weekday\n * @returns {String} weekday of day off\n */\n getDayOff () {\n if (this.__conf) {\n return this.__data.getDayOff()\n }\n }\n\n /**\n * @private\n * @param {Number} year\n * @param {String} rule\n */\n _dateByRule (year, rule) {\n const _rule = this.holidays[rule]\n const dates = _rule.fn.inYear(year)\n .get(this.__timezone)\n .map((date) => {\n const odate = _.merge({},\n _.omit(date, ['substitute']),\n _.omit(_rule, ['fn', 'enable', 'disable', 'substitute', 'active'])\n )\n if (_rule.substitute && date.substitute) {\n odate.substitute = true\n }\n return odate\n })\n return dates\n }\n\n /**\n * translate holiday object `o` to a language\n * @private\n * @param {Object} o\n * @param {Array} langs - languages for translation\n * @returns {Object} translated holiday object\n */\n _translate (o, langs) {\n if (o && typeof o.name === 'object') {\n langs = langs || this.getLanguages()\n for (const lang of langs) {\n const name = o.name[lang]\n if (name) {\n o.name = name\n break\n }\n }\n if (o.substitute) {\n for (const lang of langs) {\n const subst = this.__data.getSubstitueNames()\n const name = subst[lang]\n if (name) {\n o.name += ' (' + name + ')'\n break\n }\n }\n }\n }\n return o\n }\n}\n\nfunction getArgs (country, state, region, opts) {\n if (typeof region === 'object') {\n opts = region\n region = null\n } else if (typeof state === 'object') {\n opts = state\n state = null\n } else if (typeof country === 'object' && !country.country) {\n opts = country\n }\n opts = opts || {}\n return [country, state, region, opts]\n}\n","export const data = {\n version: '2023-06-24',\n license: 'CC-BY-SA-3',\n holidays: {\n AD: {\n names: {\n ca: 'Andorra',\n es: 'Andorra',\n en: 'Andorra'\n },\n dayoff: 'sunday',\n langs: [\n 'ca',\n 'es'\n ],\n zones: [\n 'Europe/Andorra'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06'\n },\n '03-14': {\n _name: 'Constitution Day'\n },\n '05-01': {\n _name: '05-01'\n },\n '08-15': {\n _name: '08-15'\n },\n '09-08': {\n name: {\n en: 'Our Lady of Meritxell',\n es: 'Nuestra Sra. De Meritxell',\n ca: 'Mare de Déu de Meritxell'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-24': {\n type: 'bank',\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n 'easter -47': {\n _name: 'easter -47'\n },\n 'easter -3 14:00': {\n type: 'bank',\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 50': {\n _name: 'easter 50'\n }\n },\n regions: {\n '07': {\n name: 'Andorra la Vella',\n days: {\n '1st saturday in August P3D': {\n name: {\n en: 'Andorra La Vella Festival',\n ca: 'Andorra La Vella Festival'\n }\n }\n }\n }\n }\n },\n AE: {\n names: {\n en: 'United Arab Emirates',\n ar: 'دولة الإمارات العربية المتحدة'\n },\n langs: [\n 'ar'\n ],\n zones: [\n 'Asia/Dubai'\n ],\n dayoff: '',\n days: {\n '01-01': {\n _name: '01-01',\n name: {\n ar: 'رأس السنة الميلادية'\n }\n },\n '12-02': {\n name: {\n en: 'National Day',\n ar: 'اليوم الوطني'\n }\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '1 Shawwal P3D': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah P3D': {\n _name: '10 Dhu al-Hijjah'\n },\n '27 Rajab': {\n _name: '27 Rajab'\n },\n '1 Ramadan': {\n _name: '1 Ramadan'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n }\n }\n },\n AG: {\n names: {\n en: 'Antigua & Barbuda'\n },\n langs: [\n 'en'\n ],\n dayoff: 'sunday',\n weekend: [\n 'saturday',\n 'sunday'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n days: {\n '01-01 and if sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '08-01': {\n name: {\n en: \"J'Ouvert Morning\"\n }\n },\n '08-02': {\n name: {\n en: 'Last Lap'\n }\n },\n '11-01 if saturday,sunday then next monday': {\n _name: 'Independence Day'\n },\n '12-09': {\n name: {\n en: 'V.C Bird Day'\n }\n },\n '12-25 and if saturday then next monday if sunday then next tuesday': {\n _name: '12-25',\n substitute: true\n },\n '12-26 and if sunday then next monday': {\n _name: '12-26',\n substitute: true\n }\n },\n regions: {\n 10: {\n name: 'Barbuda',\n days: {\n 'easter 47 P4D': {\n name: {\n en: 'Caribana'\n },\n type: 'observance'\n }\n }\n }\n }\n },\n AI: {\n names: {\n en: 'Anguilla'\n },\n langs: [\n 'en'\n ],\n dayoff: 'sunday',\n weekend: [\n 'saturday',\n 'sunday'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '03-02': {\n name: {\n en: 'James Ronald Webster Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-30': {\n name: {\n en: 'Anguilla Day'\n }\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '2nd monday in June': {\n name: {\n en: 'Celebration of the Birthday of Her Majesty the Queen'\n }\n },\n '1st monday in August': {\n name: {\n en: 'August Monday'\n }\n },\n '1st thursday in August': {\n name: {\n en: 'August Thursday'\n }\n },\n '1st friday in August': {\n _name: 'Constitution Day'\n },\n '12-19': {\n name: {\n en: 'National Heroes and Heroines Day'\n }\n },\n '12-25 and if saturday then next monday if sunday then next tuesday': {\n _name: '12-25',\n substitute: true\n },\n '12-26 and if sunday then next monday': {\n _name: '12-26',\n substitute: true\n }\n }\n },\n AL: {\n names: {\n sq: 'Shqipëri',\n en: 'Albania'\n },\n dayoff: 'sunday',\n langs: [\n 'sq',\n 'es'\n ],\n zones: [\n 'Europe/Tirane'\n ],\n days: {\n '01-01 and if sunday then next tuesday': {\n _name: '01-01',\n substitute: true\n },\n '01-02 and if sunday then next monday': {\n name: {\n sq: 'Festa e Vitit të Ri',\n en: 'New Year Holiday'\n },\n substitute: true\n },\n '03-02': {\n name: {\n sq: 'Dita e Besëlidhjes së Lezhës',\n en: 'League of Lezhë day'\n },\n type: 'observance'\n },\n '03-07': {\n name: {\n sq: 'Dita e Mësuesit',\n en: \"Teacher's Day\"\n },\n type: 'observance'\n },\n '03-08': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '03-14 and if sunday then next monday': {\n name: {\n sq: 'Dita e Verës',\n en: 'Summer Day'\n },\n substitute: true\n },\n '03-22 and if sunday then next monday': {\n name: {\n sq: 'Dita e Sulltan Nevruzit',\n en: \"Sultan Nevruz's Day\"\n },\n substitute: true\n },\n '04-01': {\n _name: '04-01',\n type: 'observance'\n },\n easter: {\n name: {\n sq: 'Pashkët Katolike',\n en: 'Catholic Easter'\n }\n },\n 'easter 1': {\n name: {\n sq: 'Pashkët Katolike',\n en: 'Catholic Easter'\n }\n },\n orthodox: {\n name: {\n sq: 'Pashkët Ortodokse',\n en: 'Orthodox Easter'\n }\n },\n 'orthodox 1': {\n name: {\n sq: 'Pashkët Ortodokse',\n en: 'Orthodox Easter'\n }\n },\n '05-01 and if sunday then next monday': {\n _name: '05-01',\n substitute: true\n },\n '06-01': {\n name: {\n sq: 'Dita Ndërkombëtare e Fëmijëve',\n en: \"Children's Day\"\n },\n type: 'observance'\n },\n '10-19 and if sunday then next monday': {\n name: {\n sq: 'Dita e Nënë Terezës',\n en: 'Mother Teresa Day'\n },\n substitute: true,\n active: [\n {\n from: 2004\n }\n ]\n },\n '11-22': {\n name: {\n sq: 'Dita e Alfabetit',\n en: 'Alphabet Day'\n },\n type: 'observance'\n },\n '11-28 and if sunday then next monday': {\n _name: 'Independence Day',\n substitute: true\n },\n '11-29 and if sunday then next monday': {\n _name: 'Liberation Day',\n substitute: true\n },\n '12-08 and if sunday then next monday': {\n name: {\n sq: 'Dita Kombëtare e Rinisë',\n en: 'Youth Day'\n },\n substitute: true,\n active: [\n {\n from: 2010\n }\n ]\n },\n '12-24': {\n _name: '12-24',\n type: 'bank'\n },\n '12-25 and if sunday then next monday': {\n _name: '12-25',\n substitute: true\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n },\n regions: {}\n },\n AM: {\n names: {\n hy: 'Հայաստան',\n en: 'Armenia'\n },\n dayoff: 'sunday',\n langs: [\n 'hy'\n ],\n zones: [\n 'Asia/Yerevan'\n ],\n days: {\n '12-31': {\n _name: '12-31'\n },\n '01-01 P2D': {\n _name: '01-01'\n },\n '01-03 P3D': {\n name: {\n en: 'Pre-Christmas holidays',\n hy: 'Նախածննդյան տոներ'\n }\n },\n '01-06': {\n _name: '12-25'\n },\n '01-28': {\n name: {\n en: 'Army Day',\n hy: 'Բանակի օր'\n }\n },\n '02-21': {\n name: {\n en: 'Mother Language Day',\n hy: 'Մայրենի լեզվի օր'\n },\n type: 'observance'\n },\n 'easter -52': {\n name: {\n en: 'St. Vartan the good work and the duty days',\n hy: 'Սուրբ Վարդանանց տոն՝ բարի գործի եւ ազգային տուրքի օր'\n },\n type: 'observance'\n },\n '03-08': {\n _name: '03-08'\n },\n '04-07': {\n name: {\n en: 'Motherhood and Beauty Day',\n hy: 'Մայրության, գեղեցկության եւ սիրո տոն'\n },\n type: 'observance'\n },\n '04-24': {\n _name: 'Mothers Day'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-08': {\n name: {\n en: 'Yerkrapah Day',\n hy: 'Երկրապահի օր'\n },\n type: 'observance'\n },\n '05-09': {\n name: {\n en: 'Victory and Peace Day',\n hy: 'Հաղթանակի եւ Խաղաղության տոն'\n }\n },\n '05-28': {\n name: {\n en: 'Republic Day',\n hy: 'Հանրապետության օր'\n }\n },\n '06-01': {\n name: {\n en: 'The day of protection of children rights',\n hy: 'Երեխաների իրավունքների պաշտպանության օր'\n },\n type: 'observance'\n },\n '07-05': {\n _name: 'Constitution Day'\n },\n '09-01': {\n name: {\n en: 'Knowledge, Literacy and Education Day',\n hy: 'Գիտելիքի, գրի եւ դպրության օր'\n },\n type: 'observance'\n },\n '09-21': {\n _name: 'Independence Day'\n },\n '2nd saturday in October': {\n name: {\n en: \"Translator's Day\",\n hy: 'Թարգմանչաց տոն'\n },\n type: 'observance'\n },\n '12-07': {\n name: {\n en: 'Earthquake Remembrance Day',\n hy: 'Երկրաշարժի զոհերի հիշատակի օր'\n },\n type: 'observance'\n }\n }\n },\n AO: {\n names: {\n pt: 'Angola',\n en: 'Angola'\n },\n dayoff: 'sunday',\n zones: [\n 'Africa/Lagos'\n ],\n langs: [\n 'pt'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-04': {\n name: {\n pt: 'Dia do Início da Luta Armada de Libertação Nacional',\n en: 'Liberation Day'\n }\n },\n 'easter -47': {\n _name: 'easter -47'\n },\n '03-08': {\n name: {\n pt: 'Dia Internacional da Mulher',\n en: \"International Woman's Day\"\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '04-04': {\n name: {\n pt: 'Dia da Paz',\n en: 'Peace Day'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '1st sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '09-17': {\n name: {\n pt: 'Fundador da Nação e Dia dos Heróis Nacionais',\n en: 'National Hero Day'\n }\n },\n '11-02': {\n _name: '11-02'\n },\n '11-11': {\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n AR: {\n names: {\n es: 'Argentina',\n en: 'Argentina'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Salta',\n 'America/Argentina/Jujuy',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Catamarca',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/San_Juan',\n 'America/Argentina/Mendoza',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Ushuaia'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'substitutes 01-01 if tuesday then previous monday if thursday then next friday': {\n _name: 'Bridge Day',\n disable: [\n 2015\n ]\n },\n 'easter -48': {\n _name: 'easter -48'\n },\n 'easter -47': {\n _name: 'easter -47'\n },\n '03-24': {\n name: {\n en: 'Day of Remembrance for Truth and Justice',\n es: 'Día de la Memoria por la Verdad y la Justicia'\n }\n },\n 'substitutes 03-24 if tuesday then previous monday if thursday then next friday': {\n _name: 'Bridge Day'\n },\n '2020-03-30': {\n _name: 'Bridge Day'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '04-02': {\n name: {\n en: 'Day of the veterans and the fallen in Malvinas War',\n es: 'Día del Veterano y de los Caídos en la Guerra de Malvinas'\n }\n },\n 'substitutes 04-02 if tuesday then previous monday if thursday then next friday': {\n _name: 'Bridge Day'\n },\n '05-01': {\n _name: '05-01'\n },\n 'substitutes 05-01 if tuesday then previous monday if thursday then next friday': {\n _name: 'Bridge Day'\n },\n '05-25': {\n name: {\n en: 'Day of the First National Government',\n es: 'Primer Gobierno Patrio'\n }\n },\n 'substitutes 05-25 if tuesday then previous monday if thursday then next friday': {\n _name: 'Bridge Day'\n },\n '06-20': {\n name: {\n en: 'National Flag Day',\n es: 'Día de la Bandera'\n }\n },\n 'substitutes 06-20 if tuesday then previous monday if thursday then next friday': {\n _name: 'Bridge Day'\n },\n '07-09': {\n _name: 'Independence Day'\n },\n 'substitutes 07-09 if tuesday then previous monday if thursday then next friday if saturday then previous friday': {\n _name: 'Bridge Day',\n disable: [\n 2015,\n 2022\n ]\n },\n '3rd monday in August': {\n name: {\n en: 'Anniversary of the death of General José de San Martín',\n es: 'Día del Libertador José de San Martín'\n }\n },\n '10-12 if tuesday,wednesday then previous monday if thursday,friday,saturday,sunday then next monday': {\n name: {\n en: 'Day of Respect for Cultural Diversity',\n es: 'Día del Respeto a la Diversidad Cultural'\n }\n },\n 'substitutes 10-12 if monday,tuesday,wednesday then previous friday': {\n _name: 'Bridge Day',\n disable: [\n 2015,\n 2016,\n 2020\n ]\n },\n '11-20 if tuesday,wednesday then previous monday if friday then next monday': {\n name: {\n en: 'Day of National Sovereignty',\n es: 'Día de la Soberanía nacional'\n }\n },\n 'substitutes 11-20 if saturday,sunday then next monday': {\n _name: 'Bridge Day',\n disable: [\n 2016\n ]\n },\n '12-08': {\n _name: '12-08'\n },\n 'substitutes 12-08 if tuesday then previous monday if thursday then next friday': {\n _name: 'Bridge Day'\n },\n '12-24 12:00': {\n _name: '12-24',\n type: 'optional'\n },\n 'substitutes 12-24 if tuesday then previous monday': {\n _name: 'Bridge Day'\n },\n '12-25': {\n _name: '12-25'\n },\n 'substitutes 12-25 if tuesday then previous monday if thursday then next friday': {\n _name: 'Bridge Day'\n },\n '12-31 12:00': {\n _name: '12-31',\n type: 'optional'\n }\n }\n },\n AS: {\n names: {\n en: 'American Samoa'\n },\n dayoff: 'sunday',\n zones: [\n 'Pacific/Pago_Pago'\n ],\n langs: [\n 'en'\n ],\n _days: [\n 'US'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Washington's Birthday\"\n }\n },\n '03-17': false,\n '04-15 if friday then next monday if saturday,sunday then next tuesday': false,\n '04-17 and if sunday then next monday': {\n name: {\n en: 'American Samoa Flag Day'\n },\n substitute: true\n },\n '07-16': {\n name: {\n en: \"Manu'a Cession Day\"\n },\n type: 'optional',\n note: 'Goverment offices closed'\n },\n '2nd sunday in October': {\n name: {\n en: 'White Sunday'\n },\n type: 'observance',\n note: 'christian'\n },\n '12-24 12:00': {\n _name: '12-24',\n type: 'bank'\n },\n '12-31 12:00': {\n _name: '12-31',\n type: 'bank'\n }\n }\n },\n AT: {\n names: {\n 'de-at': 'Österreich',\n en: 'Austria'\n },\n dayoff: 'sunday',\n zones: [\n 'Europe/Vienna'\n ],\n langs: [\n 'de-at',\n 'de'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06'\n },\n 'easter -2 prior to 2019': {\n _name: 'easter -2',\n type: 'optional'\n },\n 'easter -1': {\n _name: 'easter -1',\n type: 'observance'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n name: {\n 'de-at': 'Staatsfeiertag'\n }\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '10-26': {\n _name: 'National Holiday'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-24 14:00 if sunday then 00:00': {\n _name: '12-24',\n type: 'bank'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31 14:00 if sunday then 00:00': {\n _name: '12-31',\n type: 'bank'\n }\n },\n states: {\n 1: {\n name: 'Burgenland',\n days: {\n '11-11': {\n name: {\n 'de-at': 'Martinstag'\n }\n }\n }\n },\n 2: {\n names: {\n de: 'Kärnten',\n en: 'Carinthia'\n },\n days: {\n '03-19': {\n _name: '03-19'\n },\n '10-10': {\n name: {\n 'de-at': 'Tag der Volksabstimmung'\n }\n }\n }\n },\n 3: {\n names: {\n de: 'Niederösterreich',\n en: 'Lower Austria'\n },\n days: {\n '11-15': {\n name: {\n 'de-at': 'Leopold'\n }\n }\n }\n },\n 4: {\n names: {\n de: 'Oberösterreich',\n en: 'Upper Austria'\n },\n days: {\n '05-04': {\n name: {\n 'de-at': 'Florian'\n }\n }\n }\n },\n 5: {\n names: {\n de: 'Land Salzburg',\n en: 'Salzburg'\n },\n days: {\n '09-24': {\n name: {\n 'de-at': 'Rupert'\n }\n }\n }\n },\n 6: {\n names: {\n de: 'Steiermark',\n en: 'Styria'\n },\n days: {\n '03-19': {\n _name: '03-19'\n }\n }\n },\n 7: {\n names: {\n de: 'Tirol',\n en: 'Tyrol'\n },\n days: {\n '03-19': {\n _name: '03-19'\n }\n }\n },\n 8: {\n name: 'Vorarlberg',\n days: {\n '03-19': {\n _name: '03-19'\n }\n }\n },\n 9: {\n names: {\n de: 'Wien',\n en: 'Vienna'\n },\n days: {\n '11-15': {\n name: {\n 'de-at': 'Leopold'\n }\n }\n }\n }\n }\n },\n AU: {\n names: {\n en: 'Australia'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'Australia/Sydney',\n 'Australia/Lord_Howe',\n 'Antarctica/Macquarie',\n 'Australia/Hobart',\n 'Australia/Currie',\n 'Australia/Melbourne',\n 'Australia/Broken_Hill',\n 'Australia/Brisbane',\n 'Australia/Lindeman',\n 'Australia/Adelaide',\n 'Australia/Darwin',\n 'Australia/Perth',\n 'Australia/Eucla'\n ],\n days: {\n '01-01 and if saturday,sunday then next monday': {\n _name: '01-01'\n },\n '01-26 if saturday,sunday then next monday': {\n substitute: true,\n name: {\n en: 'Australia Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter -1': {\n _name: 'easter -1'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-25': {\n name: {\n en: 'Anzac Day'\n }\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '1st sunday in September': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n '12-25 and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '12-26'\n },\n '2022-09-22': {\n name: {\n en: 'National Day of Mourning for Queen Elizabeth II'\n }\n }\n },\n states: {\n ACT: {\n name: 'Australian Capital Territory',\n zones: [\n 'Australia/Sydney'\n ],\n days: {\n '2nd monday in March': {\n name: {\n en: 'Canberra Day'\n }\n },\n '04-25': false,\n '04-25 if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Anzac Day'\n }\n },\n '2020-04-27': {\n name: {\n en: 'Declared public holiday'\n },\n type: 'public'\n },\n 'monday after 05-27': {\n name: {\n en: 'Reconciliation Day'\n }\n },\n '2nd monday in June': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '1st monday in October': {\n name: {\n en: 'Labour Day'\n }\n }\n }\n },\n NSW: {\n name: 'New South Wales',\n zones: [\n 'Australia/Sydney'\n ],\n days: {\n '2nd monday in June': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '1st monday in August': {\n name: {\n en: 'Bank Holiday'\n },\n type: 'bank'\n },\n '1st monday in October': {\n name: {\n en: 'Labour Day'\n }\n }\n }\n },\n NT: {\n name: 'Northern Territory',\n zones: [\n 'Australia/Darwin'\n ],\n days: {\n easter: false,\n '04-25': false,\n '04-25 if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Anzac Day'\n }\n },\n '1st monday in May': {\n name: {\n en: 'May Day'\n }\n },\n '2nd monday in June': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '1st monday in August': {\n name: {\n en: 'Picnic Day'\n }\n },\n '1st monday in October': false,\n '12-24 19:00': {\n _name: '12-24'\n },\n '12-25 and if saturday then next monday if sunday then next tuesday': false,\n '12-25 if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if saturday then next monday if sunday then next tuesday': false,\n '12-26 if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '12-26'\n },\n '12-31 19:00': {\n _name: '12-31'\n }\n }\n },\n QLD: {\n name: 'Queensland',\n zones: [\n 'Australia/Brisbane',\n 'Australia/Lindeman'\n ],\n days: {\n '04-25': false,\n '04-25 if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Anzac Day'\n }\n },\n '1st monday in May': {\n name: {\n en: 'Labour Day'\n }\n },\n '2nd monday in June': false,\n '1st monday in October': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '12-24 18:00': {\n _name: '12-24'\n }\n }\n },\n SA: {\n name: 'South Australia',\n zones: [\n 'Australia/Adelaide'\n ],\n days: {\n easter: false,\n '2nd monday in March': {\n name: {\n en: 'Adelaide Cup Day'\n }\n },\n '2nd monday in June': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '1st monday in October': {\n name: {\n en: 'Labour Day'\n }\n },\n '12-24 19:00': {\n _name: '12-24'\n },\n '12-25 and if saturday then next monday if sunday then next tuesday': false,\n '12-25 if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if saturday then next monday if sunday then next tuesday': false,\n '12-26 if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n name: 'Proclamation Day'\n },\n '12-31 19:00': {\n _name: '12-31'\n }\n }\n },\n TAS: {\n name: 'Tasmania',\n zones: [\n 'Australia/Hobart'\n ],\n days: {\n '01-01 and if saturday,sunday then next monday': false,\n '01-01 if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '01-01'\n },\n '2nd monday in March': {\n name: {\n en: 'Eight Hours Day'\n }\n },\n 'easter -1': false,\n easter: false,\n 'easter +2': {\n name: 'Easter Tuesday',\n type: 'optional',\n note: 'Public Service employees or contract dependent'\n },\n '2nd monday in June': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '1st monday in October': false,\n '12-26 and if saturday then next monday if sunday then next tuesday': false,\n '12-26 if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '12-26'\n }\n }\n },\n VIC: {\n name: 'Victoria',\n zones: [\n 'Australia/Melbourne'\n ],\n days: {\n '2nd monday in March': {\n name: {\n en: 'Labour Day'\n }\n },\n '2nd monday in June': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '1st monday in October': false,\n '1st friday before October': {\n name: {\n en: 'AFL Grand Final Friday'\n },\n note: 'Date might differ as dependent on AFL schedule'\n },\n '1st tuesday in November': {\n name: {\n en: 'Melbourne Cup'\n }\n }\n }\n },\n WA: {\n name: 'Western Australia',\n zones: [\n 'Australia/Perth',\n 'Australia/Eucla'\n ],\n days: {\n '1st monday in March': {\n name: {\n en: 'Labour Day'\n }\n },\n 'easter -1': false,\n easter: false,\n '04-25': false,\n '04-25 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n en: 'Anzac Day'\n }\n },\n '1st monday in June': {\n name: {\n en: 'Western Australia Day'\n }\n },\n '2nd monday in June': false,\n 'monday before October': {\n name: {\n en: \"Queen's Birthday\"\n },\n note: 'Might be on a different day; is proclaimed by Governor'\n },\n '1st monday in October': false\n }\n }\n }\n },\n AW: {\n names: {\n pap: 'Aruba',\n nl: 'Aruba',\n en: 'Aruba'\n },\n dayoff: 'sunday',\n zones: [\n 'America/Curacao'\n ],\n langs: [\n 'pap',\n 'nl'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-25': {\n name: {\n pap: 'Dia di Betico',\n nl: 'Herdenking G. F. Croes',\n en: 'Betico Croes Day'\n }\n },\n 'easter -48': {\n _name: 'easter -48'\n },\n '03-18 and if saturday then previous friday if sunday then next monday': {\n substitute: true,\n name: {\n pap: 'Dia di Himno y Bandera',\n nl: 'Herdenking Vlag en Volkslied',\n en: 'National Anthem and Flag Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-27': {\n name: {\n pap: 'Aña di Rey',\n nl: 'Koningsdag',\n en: 'Kings Day'\n }\n },\n '05-01 if sunday then next monday': {\n _name: '05-01'\n },\n '06-24': {\n name: {\n pap: 'Dera Gai',\n nl: 'Dera Gai',\n en: 'Dera Gai'\n },\n type: 'observance'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '12-05': {\n name: {\n nl: 'Sinterklaasavond',\n en: \"St. Nicholas' Eve\"\n },\n type: 'observance'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n AX: {\n names: {\n sv: 'Landskapet Åland',\n en: 'Åland Islands'\n },\n dayoff: 'sunday',\n zones: [\n 'Europe/Helsinki'\n ],\n langs: [\n 'sv'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06'\n },\n '03-30': {\n name: {\n sv: 'Ålands demilitariseringsdag',\n en: 'Demilitarization Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n '06-09': {\n name: {\n sv: 'Självstyrelsedagen',\n en: 'Autonomy Day'\n }\n },\n 'friday after 06-19': {\n name: {\n sv: 'Midsommarafton',\n en: 'Midsummer Eve'\n },\n type: 'bank'\n },\n 'saturday after 06-20': {\n name: {\n sv: 'Midsommardagen',\n en: 'Midsummer Day'\n }\n },\n '12-06': {\n _name: 'Independence Day'\n },\n '12-24 12:00': {\n _name: '12-24',\n type: 'bank'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31 12:00': {\n _name: '12-31',\n type: 'bank'\n }\n }\n },\n AZ: {\n names: {\n az: 'Azərbaycan Respublikası',\n en: 'Azerbaijan'\n },\n dayoff: 'sunday',\n weekend: [\n 'saturday',\n 'sunday'\n ],\n zones: [\n 'Asia/Baku'\n ],\n langs: [\n 'az'\n ],\n days: {\n '01-01 and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '01-01'\n },\n '01-02 and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '01-01'\n },\n '01-20': {\n name: {\n az: 'Qara Yanvar',\n en: \"Martyrs' Day\"\n },\n type: 'observance'\n },\n '03-08 and if saturday,sunday then next monday': {\n substitute: true,\n _name: '03-08'\n },\n '03-20': {\n name: {\n az: 'Novruz',\n en: 'Spring Festival'\n },\n active: [\n {\n from: 2011\n }\n ]\n },\n '05-09 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n az: 'Faşizm üzərində qələbə günü',\n en: 'Day of Victory over Fascism'\n }\n },\n '05-28 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n az: 'Respublika günü',\n en: 'Republic Day'\n }\n },\n '06-15 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n az: 'Azərbaycan xalqının Milli Qurtuluş günü',\n en: 'National Salvation Day'\n }\n },\n '06-26 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n az: 'Azərbaycan Respublikasının Silahlı Qüvvələri günü',\n en: 'Azerbaijan Armed Forces Day'\n }\n },\n '10-18 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n az: 'Dövlət Müstəqilliyi günü',\n en: 'Independence Day'\n }\n },\n '11-09 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n az: 'Dövlət Bayrağı günü',\n en: 'Flag Day'\n }\n },\n '11-12': {\n name: {\n az: 'Konstitusiya günü',\n en: 'Constitution Day'\n }\n },\n '11-17': {\n name: {\n az: 'Milli Dirçəliş günü',\n en: 'National Revival Day'\n }\n },\n '12-31 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n az: 'Dünya azərbaycanlıların həmrəyliyi günü',\n en: 'International Solidarity Day of Azerbaijanis'\n }\n },\n '1 Shawwal and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '1 Shawwal'\n },\n '2 Shawwal and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '10 Dhu al-Hijjah'\n },\n '11 Dhu al-Hijjah and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n BA: {\n names: {\n bs: 'Bosna i Hercegovina',\n sr: 'Боснa и Херцеговина',\n hr: 'Bosna i Hercegovina',\n en: 'Bosnia and Herzegovina'\n },\n langs: [\n 'bs',\n 'sr',\n 'hr'\n ],\n zones: [\n 'Europe/Belgrade'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if sunday then next tuesday': {\n _name: '01-01',\n substitute: true\n },\n '01-02 and if sunday then next monday': {\n name: {\n en: '2nd day of the New Year',\n bs: 'Drugi dan Nove Godine'\n },\n substitute: true\n },\n '05-01 and if sunday then next tuesday': {\n _name: '05-01',\n substitute: true\n },\n '05-02 and if sunday then next monday': {\n name: {\n en: '2nd day of the Labour Day',\n bs: 'Drugi dan Dana rada'\n },\n substitute: true\n },\n '01-06': {\n _name: '01-06'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '11-02': {\n _name: '11-02'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n 'julian 01-01': {\n _name: 'julian 01-01'\n },\n orthodox: {\n _name: 'orthodox'\n },\n 'julian 08-15': {\n _name: '08-15',\n note: 'orthodox'\n },\n 'julian 12-25': {\n _name: 'julian 12-25'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '10 Dhu al-Hijjah P4D': {\n _name: '10 Dhu al-Hijjah'\n },\n '1 Shawwal P3D': {\n _name: '1 Shawwal'\n }\n },\n states: {\n BIH: {\n name: 'Federation of Bosnia and Herzegovina',\n days: {\n '03-01': {\n _name: 'Independence Day'\n },\n '11-25': {\n name: {\n en: 'Statehood Day',\n bs: 'Dan državnosti'\n }\n }\n },\n regions: {\n W: {\n name: 'Western Herzegovina',\n days: {\n '11-25': false\n }\n }\n }\n },\n BRC: {\n name: 'Brčko District',\n days: {\n '03-08': {\n name: {\n en: 'Day of the Establishment of the District'\n }\n }\n }\n },\n SRP: {\n name: 'Republika Srpska',\n days: {\n '01-09': {\n name: {\n en: 'Republic Day',\n bs: 'Dan Republike'\n }\n },\n '05-09': {\n name: {\n en: 'Victory Day',\n bs: 'Dan pobjede'\n }\n },\n '11-21': {\n name: {\n en: 'Dayton Agreement Day',\n bs: 'Dan uspostave Opšteg okvirnog sporazuma za mir u Bosni i Hercegovini'\n }\n }\n }\n }\n }\n },\n BB: {\n names: {\n en: 'Barbados'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'America/Barbados'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-21': {\n name: {\n en: 'Errol Barrow Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-28': {\n name: {\n en: 'National Heroes Day'\n }\n },\n '05-01 if sunday then next monday': {\n name: {\n en: 'May Day'\n }\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '08-01': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '1st monday in August': {\n name: {\n en: 'Kadooment Day'\n }\n },\n '11-30': {\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n },\n 'substitutes 12-25 if sunday then next tuesday': {\n _name: 'Public Holiday'\n },\n '12-26': {\n _name: '12-26'\n },\n 'substitutes 12-26 if sunday then next monday': {\n _name: 'Public Holiday'\n }\n }\n },\n BD: {\n names: {\n bn: 'গণপ্রজাতন্ত্রী বাংলাদেশ',\n en: \"People's Republic of Bangladesh\"\n },\n langs: [\n 'bn'\n ],\n zones: [\n 'Asia/Dhaka'\n ],\n dayoff: 'friday',\n weekend: [\n 'friday',\n 'saturday'\n ],\n days: {\n 'bengali-revised 11-9': {\n name: {\n bn: 'শহীদ দিবস',\n en: \"Language Martyrs' Day\"\n }\n },\n 'bengali-revised 12-3': {\n name: {\n bn: 'মুজিব জয়ন',\n en: \"Mujib's Birthday & Children's Day\"\n }\n },\n 'bengali-revised 12-12': {\n name: {\n bn: 'স্বাধীনতা দিবস',\n en: 'Independence Day'\n }\n },\n 'bengali-revised 1-1': {\n name: {\n bn: 'পহেলা বৈশাখ',\n en: \"Bengali New Year's Day\"\n }\n },\n 'bengali-revised 1-18': {\n _name: '05-01',\n name: {\n bn: 'মে দিবস',\n en: 'May Day'\n }\n },\n 'bengali-revised 4-31': {\n name: {\n bn: 'জাতীয় শোক দিবস',\n en: 'National Mourning Day'\n }\n },\n 'bengali-revised 9-2': {\n name: {\n bn: 'বিজয় দিবস',\n en: 'Victory Day'\n }\n },\n '10 Muharram': {\n _name: '10 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal P3D': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah P3D': {\n _name: '10 Dhu al-Hijjah'\n },\n '05-19': {\n name: {\n bn: 'বুদ্ধ পূর্ণিমা',\n en: \"Buddha's Birthday\"\n },\n enable: [\n '2016-05-21',\n '2017-05-10',\n '2018-04-29',\n '2019-05-19',\n '2020-05-07'\n ],\n disable: [\n '2016-05-19',\n '2017-05-19',\n '2018-05-19',\n '2019-05-19',\n '2020-05-19'\n ]\n },\n '08-24': {\n name: {\n bn: 'জন্মাষ্টমী',\n en: 'Krishna Janmashtami'\n },\n enable: [\n '2016-08-25',\n '2017-08-14',\n '2018-09-02',\n '2019-08-24',\n '2020-08-11'\n ],\n disable: [\n '2016-08-24',\n '2017-08-24',\n '2018-08-24',\n '2019-08-24',\n '2020-08-24'\n ]\n },\n '10-08': {\n name: {\n bn: 'দুর্গা পূজা',\n en: 'Durga Puja'\n },\n enable: [\n '2016-10-11',\n '2017-09-30',\n '2018-10-19',\n '2019-10-08',\n '2020-10-25'\n ],\n disable: [\n '2016-10-08',\n '2017-10-08',\n '2018-10-08',\n '2019-10-08',\n '2020-10-08'\n ]\n },\n 'bengali-revised 9-11': {\n _name: '12-25'\n },\n '03-25': {\n name: {\n en: 'Genocide Remembrance Day'\n },\n type: 'observance'\n },\n '11-21': {\n name: {\n en: 'Armed Forces Day'\n },\n type: 'observance'\n },\n '12-14': {\n name: {\n en: 'Martyred Intellectuals Day'\n },\n type: 'observance'\n }\n }\n },\n BE: {\n names: {\n fr: 'Belgique',\n nl: 'België',\n de: 'Belgien',\n en: 'Belgium'\n },\n dayoff: 'sunday',\n zones: [\n 'Europe/Brussels'\n ],\n langs: [\n 'fr',\n 'nl',\n 'de'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06',\n name: {\n de: 'Erscheinung des Herrn'\n },\n type: 'observance'\n },\n '02-14': {\n _name: '02-14',\n type: 'observance'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '07-21': {\n _name: 'National Holiday'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '11-02': {\n _name: '11-02',\n type: 'observance'\n },\n '11-11': {\n name: {\n de: 'Waffenstillstand',\n fr: 'Armistice',\n nl: 'Wapenstilstand'\n }\n },\n '11-15': {\n name: {\n nl: 'Koningsdag',\n fr: 'Fête du Roi',\n de: 'Festtag des Königs'\n },\n type: 'observance'\n },\n '12-06': {\n _name: '12-06',\n type: 'observance'\n },\n '12-25': {\n _name: '12-25'\n }\n },\n states: {\n BRU: {\n name: 'Bruxelles',\n langs: [\n 'fr',\n 'nl'\n ],\n days: {\n '05-08': {\n name: {\n nl: 'Feest van de Iris',\n fr: \"Fête de l'Iris\"\n },\n type: 'observance'\n }\n }\n },\n DE: {\n name: 'Deutschsprachige Gemeinschaft',\n langs: [\n 'de'\n ],\n days: {\n '11-15': {\n name: {\n de: 'Tag der Deutschsprachigen Gemeinschaft',\n fr: 'Jour de la Communauté Germanophone',\n nl: 'Feestdag van de Duitstalige Gemeenschap'\n },\n type: 'observance'\n }\n }\n },\n VLG: {\n name: 'Vlaamse Gemeenschap',\n langs: [\n 'nl'\n ],\n days: {\n '07-11': {\n name: {\n de: 'Festtag der Wallonischen Region',\n fr: 'Fête de la Région wallonne',\n nl: 'Feestdag van de Vlaamse Gemeenschap'\n },\n type: 'observance'\n }\n }\n },\n WAL: {\n name: 'Communauté française',\n langs: [\n 'fr'\n ],\n days: {\n '09-27': {\n name: {\n de: 'Tag der Französischsprachigen Gemeinschaft',\n fr: 'La fête de la communauté française',\n nl: 'Feestdag van de Franse Gemeenschap'\n },\n type: 'observance'\n }\n }\n }\n }\n },\n BF: {\n names: {\n fr: 'Burkina Faso',\n en: 'Burkina Faso'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'Africa/Abidjan'\n ],\n dayoff: '',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-03': {\n name: {\n fr: 'Soulèvement populaire',\n en: \"Anniversary of the 1966 Upper Voltan coup d'état\"\n }\n },\n '03-08': {\n _name: '03-08'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n '05-01': {\n _name: '05-01'\n },\n '08-05': {\n _name: 'Independence Day'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-11': {\n name: {\n fr: 'Fête nationale',\n en: 'Proclamation of the Republic'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n BG: {\n names: {\n bg: 'България',\n en: 'Bulgaria'\n },\n langs: [\n 'bg'\n ],\n zones: [\n 'Europe/Sofia'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '03-01': {\n name: {\n bg: 'Баба Марта',\n en: 'Granny March Day'\n },\n type: 'observance'\n },\n '03-03': {\n name: {\n bg: 'Ден на Освобождението на България от Османската Империя',\n en: 'Liberation Day'\n }\n },\n '03-08': {\n _name: '03-08',\n type: 'observance'\n },\n 'orthodox -2': {\n _name: 'easter -2'\n },\n orthodox: {\n _name: 'easter'\n },\n 'orthodox 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-06': {\n name: {\n bg: 'Гергьовден',\n en: \"St. George's Day\"\n }\n },\n '05-07': {\n name: {\n bg: 'Ден на радиото и телевизията',\n en: 'Radio and Television Day'\n },\n type: 'observance'\n },\n '05-24': {\n name: {\n bg: 'Ден на азбуката, културата и просветата',\n en: 'Bulgarian Education and Culture, and Slavonic Literature Day'\n }\n },\n '09-06': {\n name: {\n bg: 'Ден на съединението',\n en: 'Unification Day'\n }\n },\n '09-22': {\n _name: 'Independence Day'\n },\n '11-01': {\n name: {\n bg: 'Ден на народните будители',\n en: \"Revival Leaders' Day\"\n },\n type: 'school'\n },\n '12-24': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26',\n type: 'observance'\n }\n }\n },\n BH: {\n names: {\n ar: 'مملكة البحرين',\n en: 'Bahrain'\n },\n langs: [\n 'ar'\n ],\n zones: [\n 'Asia/Qatar'\n ],\n dayoff: '',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '05-01': {\n _name: '05-01',\n name: {\n ar: 'يوم العمال'\n }\n },\n '12-16': {\n name: {\n ar: 'اليوم الوطني',\n en: 'National Day'\n }\n },\n '12-17': {\n name: {\n ar: 'يوم الجلوس',\n en: 'Accession Day'\n }\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '10 Muharram': {\n _name: '10 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '9 Dhu al-Hijjah': {\n _name: '9 Dhu al-Hijjah'\n },\n '10 Dhu al-Hijjah P3D': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n BI: {\n names: {\n rn: \"Republika y'Uburundi\",\n fr: 'République du Burundi',\n en: 'Burundi'\n },\n dayoff: 'sunday',\n langs: [\n 'fr',\n 'en'\n ],\n zones: [\n 'Africa/Maputo'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-05': {\n name: {\n fr: \"Jour de l'Unité\",\n en: 'Unity Day'\n }\n },\n '04-06': {\n name: {\n fr: 'Jour de Ntaryamira',\n en: 'Ntaryamira Day'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '07-01': {\n _name: 'Independence Day'\n },\n '08-15': {\n _name: '08-15'\n },\n '10-13': {\n name: {\n fr: 'Jour de Rwagasore',\n en: 'Rwagasore Day'\n }\n },\n '10-21': {\n name: {\n fr: 'Jour de Ndadaye',\n en: 'Ndadaye Day'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '2015-07-24': {\n _name: 'Public Holiday',\n name: {\n fr: \"Jour l'élection des Sénateurs\"\n }\n }\n }\n },\n BJ: {\n names: {\n fr: 'République du Bénin',\n en: 'Benin'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'Africa/Lagos'\n ],\n dayoff: '',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-10': {\n name: {\n fr: 'Fête du Vodoun'\n }\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '05-01': {\n _name: '05-01'\n },\n '08-01': {\n _name: 'Independence Day',\n name: {\n fr: 'Fête Nationale'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n }\n }\n },\n BL: {\n names: {\n fr: 'St. Barthélemy',\n en: 'St. Barths'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'America/St_Barthelemy'\n ],\n _days: 'FR',\n days: {\n 'easter -48': {\n _name: 'easter -48',\n type: 'observance'\n },\n 'easter -47': {\n _name: 'easter -47',\n type: 'Observance'\n },\n 'easter -46': {\n _name: 'easter -46',\n type: 'observance'\n },\n 'easter -21': {\n name: {\n fr: 'Mi-Carême',\n en: 'Laetare Sunday'\n },\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2',\n type: 'bank'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '08-24': {\n name: {\n fr: 'Fête de Saint Barthélemy',\n en: 'Saint Barth'\n },\n type: 'observance'\n },\n '10-09': {\n _name: 'Abolition of Slavery'\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n BM: {\n names: {\n en: 'Bermuda'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'Atlantic/Bermuda'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'substitutes 01-01 if saturday, sunday then next monday': {\n _name: '01-01',\n substitute: true,\n type: 'bank',\n note: 'Goverment offices close'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'friday before 06-01': {\n name: {\n en: 'Bermuda Day'\n }\n },\n '3nd monday in June': {\n name: {\n en: 'National Heroes Day'\n }\n },\n 'thursday before 08-04': {\n name: {\n en: 'Emancipation Day'\n }\n },\n 'friday before 08-05': {\n name: {\n en: \"Somers' Day\"\n }\n },\n 'monday after 09-01': {\n name: {\n en: 'Labour Day'\n }\n },\n '11-11': {\n name: {\n en: 'Remembrance Day'\n }\n },\n 'substitutes 11-11 if saturday, sunday then next monday': {\n name: {\n en: 'Remembrance Day'\n },\n substitute: true,\n type: 'bank',\n note: 'Goverment offices close'\n },\n '12-25': {\n _name: '12-25'\n },\n 'substitutes 12-25 if saturday then next monday if sunday then next tuesday': {\n _name: '12-25',\n substitute: true,\n type: 'bank',\n note: 'Goverment offices close'\n },\n '12-26': {\n _name: '12-26'\n },\n 'substitutes 12-26 if saturday then next monday if sunday then next tuesday': {\n _name: '12-26',\n substitute: true,\n type: 'bank',\n note: 'Goverment offices close'\n }\n }\n },\n BN: {\n names: {\n ms: 'Negara Brunei Darussalam',\n en: 'Brunei'\n },\n langs: [\n 'ms',\n 'en'\n ],\n zones: [\n 'Asia/Brunei'\n ],\n dayoff: '',\n days: {\n '01-01': {\n _name: '01-01',\n name: {\n ms: 'Awal Tahun Masihi'\n }\n },\n '02-23': {\n name: {\n en: 'National Day',\n ms: 'Hari Kebangsaan'\n }\n },\n '03-31': {\n name: {\n en: 'Armed Forces Day',\n ms: 'Hari Angkatan Bersenjata Diraja Brunei'\n }\n },\n '07-15': {\n name: {\n en: \"Sultan's Birthday\",\n ms: 'Hari Keputeraan KDYMM Sultan Brunei'\n }\n },\n '1 Ramadan': {\n _name: '1 Ramadan'\n },\n '17 Ramadan': {\n name: {\n en: 'Nuzul Al-Quran',\n ms: 'Hari Nuzul Al-Quran'\n }\n },\n '1 Shawwal P3D': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '27 Rajab': {\n _name: '27 Rajab'\n },\n '12-25': {\n _name: '12-25'\n },\n 'chinese 01-0-01': {\n name: {\n en: 'Chinese New Year',\n ms: 'Tahun Baru Cina'\n }\n }\n }\n },\n BO: {\n names: {\n es: 'Bolivia',\n en: 'Bolivia'\n },\n dayoff: 'sunday',\n langs: [\n 'es',\n 'qu',\n 'ay'\n ],\n zones: [\n 'America/La_Paz'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-02': {\n name: {\n en: 'Feast of the Virgin of Candelaria',\n qu: 'Mamacha Candelaria',\n es: 'Fiesta de la Virgen de Candelaria'\n }\n },\n 'easter -48': {\n name: {\n en: 'Carnival',\n es: 'Carnaval'\n }\n },\n 'easter -47': {\n _name: 'easter -47'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '06-21': {\n name: {\n en: 'Andean New Year',\n ay: 'Willkakuti',\n es: 'Año Nuevo Andino'\n }\n },\n '08-02': {\n name: {\n en: 'Agrarian Reform Day',\n es: 'Día de la Revolución Agraria, Productiva y Comunitaria'\n }\n },\n '08-06': {\n _name: 'Independence Day',\n name: {\n es: 'Día de la Patria'\n }\n },\n '11-02': {\n _name: '11-02'\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n BQ: {\n names: {\n nl: 'Caribisch Nederland',\n en: 'Caribbean Netherlands'\n },\n dayoff: 'sunday',\n zones: [\n 'America/Curacao'\n ],\n langs: [\n 'nl',\n 'en',\n 'pap'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-27': {\n name: {\n pap: 'Aña di Rey',\n nl: 'Koningsdag',\n en: 'Kings Day'\n }\n },\n '05-01 if sunday then next monday': {\n substitute: true,\n _name: '05-01'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '3rd sunday in June': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '12-05': {\n name: {\n nl: 'Sinterklaasavond',\n en: \"St. Nicholas' Eve\"\n },\n type: 'observance'\n },\n '12-15': {\n name: {\n pap: 'Dia di Reino',\n nl: 'Koninkrijksdag',\n en: 'Kingdom Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n },\n regions: {\n BO: {\n name: 'Bonaire',\n days: {\n 'easter -48': {\n _name: 'easter -48',\n name: {\n en: 'Carnival Monday'\n }\n },\n '04-30': {\n name: {\n en: 'Rincon Day',\n pap: 'Dia di Rincon'\n }\n },\n '09-06': {\n name: {\n nl: 'Boneiru Dag',\n en: 'Bonaire Day',\n pap: 'Dia di Boneiru'\n }\n }\n }\n },\n SA: {\n name: 'Saba',\n days: {\n '1st monday in August': {\n _name: 'easter -48',\n name: {\n en: 'Carnival Monday'\n }\n },\n '1st friday in December': {\n name: {\n en: 'Saba Day'\n }\n }\n }\n },\n SE: {\n name: 'Sint Eustatius',\n days: {\n '08-01': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '11-16': {\n name: {\n en: 'Statia Day'\n }\n }\n }\n }\n }\n },\n BR: {\n names: {\n pt: 'Brasil',\n en: 'Brazil'\n },\n dayoff: 'sunday',\n langs: [\n 'pt'\n ],\n zones: [\n 'America/Sao_Paulo',\n 'America/Noronha',\n 'America/Belem',\n 'America/Fortaleza',\n 'America/Recife',\n 'America/Araguaina',\n 'America/Maceio',\n 'America/Bahia',\n 'America/Campo_Grande',\n 'America/Cuiaba',\n 'America/Santarem',\n 'America/Porto_Velho',\n 'America/Boa_Vista',\n 'America/Manaus',\n 'America/Eirunepe',\n 'America/Rio_Branco'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '04-21': {\n name: {\n pt: 'Dia de Tiradentes',\n en: \"Tiradentes' Day\"\n }\n },\n 'easter -50 PT110H': {\n name: {\n pt: 'Carnaval',\n en: 'Carnival'\n },\n type: 'optional'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '05-01': {\n _name: '05-01'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 60': {\n _name: 'easter 60',\n type: 'optional'\n },\n '06-12': {\n name: {\n pt: 'Dia dos Namorados',\n en: \"Lovers' Day\"\n },\n type: 'observance'\n },\n '2nd sunday in August': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n '09-07': {\n _name: 'Independence Day'\n },\n '10-12': {\n name: {\n pt: 'Nossa Senhora Aparecida',\n en: 'Our Lady of Aparecida'\n }\n },\n '1st sunday in October in even years': {\n name: {\n pt: 'Dia de Eleição',\n en: 'Election Day'\n }\n },\n '1st sunday before 11-01 in even years': {\n name: {\n pt: 'Dia de Eleição',\n en: 'Election Day'\n }\n },\n '11-02': {\n _name: '11-02'\n },\n '11-15': {\n name: {\n pt: 'Proclamação da República',\n en: 'Republic Day'\n }\n },\n '12-24 14:00': {\n _name: '12-24',\n type: 'optional'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-31 14:00': {\n _name: '12-31',\n type: 'optional'\n }\n },\n states: {\n AC: {\n name: 'Acre',\n zones: [\n 'America/Rio_Branco'\n ],\n days: {\n '01-12': {\n name: {\n pt: 'Dia do evangélico'\n },\n active: [\n {\n from: '2004-01-29T00:00:00.000Z'\n }\n ]\n },\n '03-08': {\n name: {\n pt: 'Alusivo ao Dia Internacional da Mulher'\n },\n active: [\n {\n from: '2001-09-14T00:00:00.000Z'\n }\n ]\n },\n '06-15': {\n name: {\n pt: 'Aniversário do estado'\n },\n active: [\n {\n from: '1964-09-02T00:00:00.000Z'\n }\n ]\n },\n '09-05': {\n name: {\n pt: 'Dia da Amazônia'\n },\n active: [\n {\n from: '2004-01-05T00:00:00.000Z'\n }\n ]\n },\n '11-17': {\n name: {\n pt: 'Assinatura do Tratado de Petrópolis'\n },\n type: 'optional',\n active: [\n {\n from: '2012-02-21T00:00:00.000Z'\n }\n ]\n }\n }\n },\n AL: {\n name: 'Alagoas',\n zones: [\n 'America/Maceio'\n ],\n days: {\n '06-24': {\n name: {\n pt: 'São João'\n },\n active: [\n {\n from: '1993-07-07T00:00:00.000Z'\n }\n ]\n },\n '06-29': {\n name: {\n pt: 'São Pedro'\n },\n active: [\n {\n from: '1993-07-07T00:00:00.000Z'\n }\n ]\n },\n '09-16': {\n name: {\n pt: 'Emancipação política'\n }\n },\n '11-20': {\n name: {\n pt: 'Morte de Zumbi dos Palmares'\n },\n active: [\n {\n from: '1995-08-01T00:00:00.000Z'\n }\n ]\n }\n }\n },\n AM: {\n name: 'Amazonas',\n zones: [\n 'America/Manaus'\n ],\n days: {\n '09-05': {\n name: {\n pt: 'Elevação do Amazonas à categoria de província'\n },\n active: [\n {\n from: '1977-12-21T00:00:00.000Z'\n }\n ]\n },\n '11-20': {\n name: {\n pt: 'Dia da Consciência Negra'\n },\n active: [\n {\n from: '2010-07-08T00:00:00.000Z'\n }\n ]\n }\n }\n },\n AP: {\n name: 'Amapá',\n zones: [\n 'America/Belem'\n ],\n days: {\n '03-19': {\n name: {\n pt: 'Dia de São José'\n },\n note: 'Santo padroeiro do Estado do Amapá',\n active: [\n {\n from: '2002-04-16T00:00:00.000Z'\n }\n ]\n },\n '09-13': {\n name: {\n pt: 'Criação do Território Federal'\n }\n }\n }\n },\n BA: {\n name: 'Bahia',\n zones: [\n 'America/Bahia'\n ],\n days: {\n '07-02': {\n name: {\n pt: 'Independência da Bahia'\n }\n }\n }\n },\n CE: {\n name: 'Ceará',\n zones: [\n 'America/Fortaleza'\n ],\n days: {\n '03-25': {\n name: {\n pt: 'Data magna do estado'\n },\n active: [\n {\n from: '2011-12-01T00:00:00.000Z'\n }\n ]\n }\n }\n },\n DF: {\n name: 'Distrito Federal',\n zones: [\n 'America/Sao_Paulo'\n ],\n days: {\n '04-21': {\n name: {\n pt: 'Fundação de Brasília'\n }\n },\n '11-30': {\n name: {\n pt: 'Dia do Evangélico'\n },\n type: 'public',\n active: [\n {\n from: '1995-12-04T00:00:00.000Z'\n }\n ]\n }\n }\n },\n MA: {\n name: 'Maranhão',\n zones: [\n 'America/Belem'\n ],\n days: {\n '07-28': {\n name: {\n pt: 'Adesão do Maranhão à independência do Brasil'\n },\n active: [\n {\n from: '1964-10-02T00:00:00.000Z'\n }\n ]\n }\n }\n },\n MG: {\n name: 'Minas Gerais',\n zones: [\n 'America/Sao_Paulo'\n ],\n days: {\n '04-21': {\n name: {\n pt: 'Data magna do estado'\n }\n }\n },\n regions: {\n BH: {\n name: 'Belo Horizonte',\n days: {\n '08-15': {\n _name: '08-15',\n name: {\n pt: 'Assunção de Nossa Senhora'\n },\n type: 'public'\n },\n '12-08': {\n _name: '12-08',\n type: 'public'\n }\n }\n }\n }\n },\n MS: {\n name: 'Mato Grosso do Sul',\n zones: [\n 'America/Campo_Grande'\n ],\n days: {\n '10-11': {\n name: {\n pt: 'Criação do estado'\n },\n active: [\n {\n from: '1979-10-29T00:00:00.000Z'\n }\n ]\n }\n }\n },\n MT: {\n name: 'Mato Grosso',\n zones: [\n 'America/Cuiaba'\n ],\n days: {\n '11-20': {\n name: {\n pt: 'Dia da Consciência Negra'\n },\n active: [\n {\n from: '2002-12-27T00:00:00.000Z'\n }\n ]\n }\n }\n },\n PA: {\n name: 'Pará',\n zones: [\n 'America/Santarem'\n ],\n days: {\n '08-15': {\n name: {\n pt: 'Adesão do Grão-Pará à independência do Brasil'\n },\n active: [\n {\n from: '1996-09-10T00:00:00.000Z'\n }\n ]\n }\n }\n },\n PB: {\n name: 'Paraíba',\n zones: [\n 'America/Recife'\n ],\n days: {\n '07-26': {\n name: {\n pt: 'Homenagem à memória do ex-presidente João Pessoa'\n }\n },\n '08-05': {\n name: {\n pt: 'Nossa Senhora das Neves'\n },\n note: 'Fundação do Estado em 1585 e dia da sua padroeira',\n active: [\n {\n from: '1967-08-30T00:00:00.000Z'\n }\n ]\n }\n }\n },\n PE: {\n name: 'Pernambuco',\n zones: [\n 'America/Recife'\n ],\n days: {\n '1st sunday in March': {\n name: {\n pt: 'Revolução Pernambucana de 1817'\n },\n active: [\n {\n from: '2009-07-02T00:00:00.000Z'\n }\n ]\n }\n },\n regions: {\n RE: {\n name: 'Recife',\n days: {\n '06-24': {\n name: {\n pt: 'São João',\n en: \"Saint John's Day\"\n },\n type: 'public'\n },\n '07-16': {\n name: {\n pt: 'Nossa Senhora do Carmo'\n },\n type: 'public'\n },\n '12-08': {\n _name: '12-08',\n name: {\n pt: 'Nossa Senhora da Conceição'\n },\n type: 'public'\n }\n }\n }\n }\n },\n PI: {\n name: 'Piauí',\n zones: [\n 'America/Fortaleza'\n ],\n days: {\n '10-19': {\n name: {\n pt: 'Dia do Piauí'\n },\n active: [\n {\n from: '1937-01-01T00:00:00.000Z'\n }\n ]\n }\n }\n },\n PR: {\n name: 'Paraná',\n zones: [\n 'America/Sao_Paulo'\n ],\n days: {\n '12-19': {\n name: {\n pt: 'Emancipação política do estado do Paraná'\n },\n active: [\n {\n from: '1962-12-18T00:00:00.000Z'\n }\n ]\n }\n },\n regions: {\n CU: {\n name: 'Curitiba',\n days: {\n '09-08': {\n name: {\n pt: 'Nossa Senhora da Luz dos Pinhais'\n },\n type: 'public'\n }\n }\n }\n }\n },\n RJ: {\n name: 'Rio de Janeiro',\n zones: [\n 'America/Sao_Paulo'\n ],\n days: {\n 'easter -47': {\n name: {\n pt: 'Carnaval'\n },\n active: [\n {\n from: '2008-05-14T00:00:00.000Z'\n }\n ]\n },\n '04-23': {\n name: {\n pt: 'Dia de São Jorge'\n },\n active: [\n {\n from: '2008-03-05T00:00:00.000Z'\n }\n ]\n },\n '3rd tuesday in October': {\n name: {\n pt: 'Dia do Comércio'\n },\n type: 'observance',\n note: 'feriado para os comerciantes e trabalhadores da construção civil'\n },\n '11-20': {\n name: {\n pt: 'Dia da Consciência Negra'\n },\n active: [\n {\n from: '2002-11-11T00:00:00.000Z'\n }\n ]\n }\n },\n regions: {\n RJ: {\n name: 'Rio de Janeiro',\n days: {\n '01-20': {\n name: {\n pt: 'Dia de São Sebastião'\n },\n type: 'public',\n active: [\n {\n from: '1988-06-27T00:00:00.000Z'\n }\n ]\n }\n }\n }\n }\n },\n RN: {\n name: 'Rio Grande do Norte',\n zones: [\n 'America/Recife'\n ],\n days: {\n '10-03': {\n name: {\n pt: 'Mártires de Cunhaú e Uruaçu'\n },\n active: [\n {\n from: '2006-12-06T00:00:00.000Z'\n }\n ]\n }\n }\n },\n RO: {\n name: 'Rondônia',\n zones: [\n 'America/Porto_Velho'\n ],\n days: {\n '01-04': {\n name: {\n pt: 'Criação do estado'\n },\n active: [\n {\n from: '2010-04-22T00:00:00.000Z'\n }\n ]\n },\n '06-18': {\n name: {\n pt: 'Dia do evangélico'\n },\n active: [\n {\n from: '2001-12-20T00:00:00.000Z'\n }\n ]\n }\n }\n },\n RR: {\n name: 'Roraima',\n zones: [\n 'America/Boa_Vista'\n ],\n days: {\n '10-05': {\n name: {\n pt: 'Criação do estado'\n }\n }\n }\n },\n RS: {\n name: 'Rio Grande do Sul',\n zones: [\n 'America/Sao_Paulo'\n ],\n days: {\n '09-20': {\n name: {\n pt: 'Proclamação da República Rio-Grandense'\n }\n }\n }\n },\n SC: {\n name: 'Santa Catarina',\n zones: [\n 'America/Sao_Paulo'\n ],\n days: {\n '08-11': {\n name: {\n pt: 'Dia de Santa Catarina'\n },\n active: [\n {\n from: '2004-01-22T00:00:00.000Z',\n to: '2005-07-15T00:00:00.000Z'\n }\n ]\n },\n '08-11 if monday,tuesday,wednesday,thursday,friday,saturday then next sunday': {\n name: {\n pt: 'Dia de Santa Catarina'\n },\n active: [\n {\n from: '2005-07-15T00:00:00.000Z'\n }\n ]\n },\n '11-25': {\n name: {\n pt: 'Dia de Santa Catarina de Alexandria'\n },\n active: [\n {\n from: '1996-12-26T00:00:00.000Z',\n to: '2005-07-15T00:00:00.000Z'\n }\n ]\n },\n '11-25 if monday,tuesday,wednesday,thursday,friday,saturday then next sunday': {\n name: {\n pt: 'Dia de Santa Catarina de Alexandria'\n },\n active: [\n {\n from: '2005-07-15T00:00:00.000Z'\n }\n ]\n }\n }\n },\n SE: {\n name: 'Sergipe',\n zones: [\n 'America/Recife'\n ],\n days: {\n '07-08': {\n name: {\n pt: 'Emancipação política de Sergipe'\n }\n }\n }\n },\n SP: {\n name: 'São Paulo',\n zones: [\n 'America/Sao_Paulo'\n ],\n days: {\n '07-09': {\n name: {\n pt: 'Revolução Constitucionalista'\n },\n active: [\n {\n from: '1997-03-05T00:00:00.000Z'\n }\n ]\n }\n },\n regions: {\n SP: {\n name: 'São Paulo',\n days: {\n '01-25': {\n name: {\n pt: 'Aniversário da Cidade',\n en: 'City Birthday'\n },\n type: 'public'\n }\n }\n }\n }\n },\n TO: {\n name: 'Tocantins',\n zones: [\n 'America/Araguaina'\n ],\n days: {\n '10-05': {\n name: {\n pt: 'Criação do estado'\n },\n active: [\n {\n from: '1989-11-17T00:00:00.000Z'\n }\n ]\n },\n '03-18': {\n name: {\n pt: 'Autonomia do Estado'\n },\n active: [\n {\n from: '1998-03-17T00:00:00.000Z'\n }\n ]\n },\n '09-08': {\n name: {\n pt: 'Nossa Senhora da Natividade'\n },\n note: 'Padroeira do Estado',\n active: [\n {\n from: '1993-12-28T00:00:00.000Z'\n }\n ]\n }\n }\n }\n }\n },\n BS: {\n names: {\n en: 'Bahamas'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'America/Nassau'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-10 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n en: 'Majority Rule Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '1st friday in June': {\n _name: '05-01',\n name: {\n en: 'Randol Fawkes Labour Day'\n }\n },\n '07-10 and if saturday,sunday then next monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '1st monday in August': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '10-12 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n en: \"National Heroes' Day\"\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n BW: {\n names: {\n en: 'Botswana'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Maputo'\n ],\n days: {\n '01-01': {\n _name: '01-01',\n note: 'except mining industy'\n },\n '01-02': {\n name: {\n en: \"New Year's Holiday\"\n },\n note: 'except mining industy'\n },\n 'substitutes 01-02 if monday then next tuesday': {\n name: {\n en: 'Public Holiday'\n },\n note: 'except mining industy'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter -1': {\n _name: 'easter -1',\n note: 'except mining industy'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1',\n note: 'except mining industy'\n },\n 'easter 39': {\n _name: 'easter 39',\n note: 'except mining industy'\n },\n '05-01': {\n _name: '05-01',\n note: 'except mining industy'\n },\n 'substitutes 05-01 if sunday then next monday': {\n name: {\n en: 'Public Holiday'\n },\n note: 'except mining industy'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '07-01': {\n name: {\n en: 'Sir Seretse Khama Day'\n },\n note: 'except mining industy'\n },\n 'substitutes 07-01 if sunday then next monday': {\n name: {\n en: 'Public Holiday'\n },\n note: 'except mining industy'\n },\n '3rd monday in July': {\n name: {\n en: 'President’s Day'\n },\n note: 'except mining industy'\n },\n 'tuesday after 3rd monday in July': {\n name: {\n en: 'President’s Day Holiday'\n },\n note: 'except mining industy'\n },\n '09-30': {\n name: {\n en: 'Botswana Day'\n }\n },\n 'substitutes 09-30 if saturday,sunday then next monday': {\n name: {\n en: 'Public Holiday'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26',\n name: {\n en: 'Family Day'\n },\n note: 'except mining industy'\n },\n 'substitutes 12-26 if monday then next tuesday': {\n name: {\n en: 'Public Holiday'\n }\n }\n }\n },\n BY: {\n names: {\n be: 'Рэспубліка Беларусь',\n ru: 'Республика Беларусь',\n en: 'Belarus'\n },\n zones: [\n 'Europe/Minsk'\n ],\n langs: [\n 'be',\n 'ru'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'julian 12-25': {\n _name: '12-25',\n name: {\n be: 'Каляды праваслаўныя'\n }\n },\n easter: {\n _name: 'easter',\n name: {\n be: 'Вялiкдзень каталiцкi'\n },\n type: 'observance'\n },\n orthodox: {\n name: {\n en: 'Orthodox Easter',\n be: 'Вялiкдзень праваслаўны'\n },\n type: 'observance'\n },\n 'orthodox +9': {\n name: {\n en: 'Commemoration Day',\n be: 'Радунiца'\n }\n },\n '03-08': {\n _name: '03-08'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-09': {\n name: {\n en: 'Victory Day',\n be: 'Дзень Перамогi'\n }\n },\n '07-03': {\n _name: 'Independence Day',\n active: [\n {\n from: 1996\n }\n ]\n },\n '11-07': {\n name: {\n en: 'October Revolution Day',\n be: 'Дзень Кастрычніцкай рэвалюцыі'\n }\n },\n '12-25': {\n _name: '12-25',\n name: {\n be: 'Каляды каталiцкiя'\n }\n }\n }\n },\n BZ: {\n names: {\n en: 'Belize'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'America/Belize'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '03-09 if friday,saturday,sunday then next monday if tuesday,wednesday,thursday then previous monday': {\n name: {\n en: 'Baron Bliss Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter -1': {\n _name: 'easter -1'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01 if sunday then next monday': {\n _name: '05-01'\n },\n '05-24 if friday,saturday,sunday then next monday if tuesday,wednesday,thursday then previous monday': {\n name: {\n en: \"Commonwealth Day, Sovereign's Day\"\n }\n },\n '09-10 if sunday then next monday': {\n name: {\n en: \"Saint George's Caye Day, National Day\"\n }\n },\n '09-21 if sunday then next monday': {\n _name: 'Independence Day'\n },\n '10-12 if friday,saturday,sunday then next monday if tuesday,wednesday,thursday then previous monday': {\n name: {\n en: 'Day of the Americas'\n }\n },\n '11-19 if sunday then next monday': {\n name: {\n en: 'Garifuna Settlement Day'\n }\n },\n '12-25 and if sunday then next tuesday': {\n _name: '12-25',\n substitute: true\n },\n '12-26 and if sunday then next monday': {\n _name: '12-26',\n substitute: true\n }\n }\n },\n CA: {\n names: {\n en: 'Canada',\n fr: 'Canada'\n },\n zones: [\n 'America/Toronto',\n 'America/St_Johns',\n 'America/Halifax',\n 'America/Glace_Bay',\n 'America/Moncton',\n 'America/Goose_Bay',\n 'America/Blanc-Sablon',\n 'America/Nipigon',\n 'America/Thunder_Bay',\n 'America/Iqaluit',\n 'America/Pangnirtung',\n 'America/Resolute',\n 'America/Atikokan',\n 'America/Rankin_Inlet',\n 'America/Winnipeg',\n 'America/Rainy_River',\n 'America/Regina',\n 'America/Swift_Current',\n 'America/Edmonton',\n 'America/Cambridge_Bay',\n 'America/Yellowknife',\n 'America/Inuvik',\n 'America/Creston',\n 'America/Dawson_Creek',\n 'America/Fort_Nelson',\n 'America/Vancouver',\n 'America/Whitehorse',\n 'America/Dawson'\n ],\n langs: [\n 'en',\n 'fr'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-02': {\n name: {\n en: 'Groundhog Day',\n fr: 'Jour de la marmotte'\n },\n type: 'observance'\n },\n '02-14': {\n _name: '02-14',\n type: 'observance'\n },\n '03-17': {\n name: {\n en: 'St. Patrick’s Day',\n fr: 'Fête de la Saint-Patrick'\n },\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n '2nd sunday after 05-01': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'monday before 05-25': {\n name: {\n en: 'Victoria Day',\n fr: 'Fête de la Reine'\n }\n },\n '3rd sunday after 06-01': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n '07-01': {\n name: {\n en: 'Canada Day',\n fr: 'Fête du Canada'\n }\n },\n 'monday after 08-01': {\n name: {\n en: 'Civic Holiday',\n fr: 'Premier lundi d’août'\n }\n },\n '1st monday in September': {\n _name: '05-01'\n },\n '09-30 since 2021': {\n name: {\n en: 'National Day for Truth and Reconciliation',\n fr: 'Journée nationale de la vérité et de la réconciliation'\n }\n },\n '2nd monday after 10-01': {\n name: {\n en: 'Thanksgiving',\n fr: 'Action de grâce'\n }\n },\n '10-31 18:00': {\n name: {\n en: 'Halloween',\n fr: \"l'Halloween\"\n },\n type: 'observance'\n },\n '11-11': {\n name: {\n en: 'Remembrance Day',\n fr: 'Jour du Souvenir'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n },\n states: {\n AB: {\n name: 'Alberta',\n zones: [\n 'America/Edmonton'\n ],\n days: {\n '3rd monday after 02-01': {\n name: {\n en: 'Family Day',\n fr: 'Fête de la famille'\n }\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'optional'\n },\n 'monday after 08-01': {\n name: {\n en: 'Heritage Day',\n fr: 'Fête du patrimoine'\n },\n type: 'optional'\n }\n }\n },\n BC: {\n name: 'British Columbia',\n zones: [\n 'America/Vancouver',\n 'America/Edmonton',\n 'America/Creston',\n 'America/Dawson_Creek'\n ],\n days: {\n '2nd monday after 02-01': {\n name: {\n en: 'Family Day',\n fr: 'Fête de la famille'\n },\n active: [\n {\n to: 2019\n }\n ]\n },\n '3rd monday after 02-01': {\n name: {\n en: 'Family Day',\n fr: 'Fête de la famille'\n },\n active: [\n {\n from: 2019\n }\n ]\n }\n }\n },\n MB: {\n name: 'Manitoba',\n zones: [\n 'America/Winnipeg'\n ],\n days: {\n '3rd monday after 02-01': {\n name: {\n en: 'Louis Riel Day',\n fr: 'Journée Louis Riel'\n }\n }\n }\n },\n NB: {\n name: 'New Brunswick',\n zones: [\n 'America/Moncton'\n ],\n days: {\n 'monday after 08-01': {\n name: {\n en: 'New Brunswick Day',\n fr: 'Jour de Nouveau Brunswick'\n }\n }\n }\n },\n NL: {\n name: 'Newfoundland and Labrador',\n zones: [\n 'America/St_Johns',\n 'America/Goose_Bay'\n ],\n days: {\n '03-17': {\n name: {\n en: \"Saint Patrick's Day\",\n fr: 'Jour de la Saint-Patrick'\n },\n type: 'optional'\n },\n '04-23': {\n name: {\n en: \"Saint George's Day\",\n fr: 'Jour de St. George'\n },\n type: 'optional'\n },\n '06-24': {\n name: {\n en: 'Discovery Day',\n fr: 'Journée découverte'\n },\n type: 'optional'\n },\n '07-12': {\n name: {\n en: \"Orangemen's Day\",\n fr: 'Fête des orangistes'\n },\n type: 'optional'\n },\n '11-11': {\n name: {\n en: 'Armistice Day',\n fr: \"Jour de l'Armistice\"\n }\n }\n }\n },\n NS: {\n name: 'Nova Scotia',\n zones: [\n 'America/Halifax',\n 'America/Moncton'\n ],\n days: {\n '3rd monday after 02-01': {\n name: {\n en: 'Heritage Day',\n fr: 'Fête du Patrimoine'\n }\n },\n 'monday after 08-01': {\n name: {\n en: 'Natal Day',\n fr: 'Jour de la Fondation'\n }\n }\n }\n },\n NT: {\n name: 'Northwest Territories',\n zones: [\n 'America/Yellowknife',\n 'America/Inuvik'\n ],\n days: {\n '06-21': {\n name: {\n en: 'National Indigenous Peoples Day',\n fr: 'Journée nationale des Autochthones'\n }\n }\n }\n },\n NU: {\n name: 'Nunavut',\n zones: [\n 'America/Iqaluit',\n 'America/Pangnirtung',\n 'America/Resolute',\n 'America/Rankin_Inlet',\n 'America/Atikokan',\n 'America/Cambridge_Bay'\n ],\n days: {\n '07-09': {\n name: {\n en: 'Nunavut Day'\n },\n type: 'bank'\n }\n }\n },\n ON: {\n name: 'Ontario',\n zones: [\n 'America/Toronto',\n 'America/Nipigon',\n 'America/Thunder_Bay',\n 'America/Atikokan',\n 'America/Rainy_River',\n 'America/Winnipeg'\n ],\n days: {\n '3rd monday after 02-01': {\n name: {\n en: 'Family Day',\n fr: 'Fête de la famille'\n }\n },\n 'easter 1': {\n _name: 'easter 1'\n }\n }\n },\n PE: {\n name: 'Prince Edward Island',\n days: {\n '3rd monday after 02-01': {\n name: {\n en: 'Islander Day',\n fr: 'Fête des Insulaires'\n }\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'optional'\n },\n '3rd friday after 08-01': {\n name: {\n en: 'Gold Cup Parade Day',\n fr: \"Défilé de la Coupe d'or\"\n }\n }\n }\n },\n QC: {\n name: 'Quebec',\n zones: [\n 'America/Blanc-Sablon',\n 'America/Toronto',\n 'America/Nipigon'\n ],\n days: {\n 'easter -2': {\n _name: 'easter -2',\n note: 'Either Good Friday or Easter Monday, at the employer’s option'\n },\n 'easter 1': {\n _name: 'easter 1',\n note: 'Either Good Friday or Easter Monday, at the employer’s option'\n },\n 'monday before 05-25': {\n name: {\n en: \"National Patriots' Day\",\n fr: 'Journée nationale des patriotes'\n }\n },\n '06-24': {\n name: {\n en: 'National Holiday',\n fr: 'Fête nationale du Québec'\n }\n },\n 'monday after 08-01': false\n }\n },\n SK: {\n name: 'Saskatchewan',\n zones: [\n 'America/Regina',\n 'America/Swift_Current',\n 'America/Edmonton'\n ],\n days: {\n '3rd monday after 02-01': {\n name: {\n en: 'Family Day',\n fr: 'Fête de la famille'\n }\n },\n '3rd monday after 08-01': {\n name: {\n en: 'Saskatchewan Day'\n }\n }\n }\n },\n YT: {\n name: 'Yukon',\n zones: [\n 'America/Whitehorse',\n 'America/Dawson'\n ],\n days: {\n 'easter 1': {\n _name: 'easter 1'\n },\n '3rd monday after 08-01': {\n name: {\n en: 'Discovery Day',\n fr: 'Jour de la Découverte'\n }\n }\n }\n }\n }\n },\n CC: {\n names: {\n en: 'Cocos (Keeling) Islands'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'Indian/Cocos'\n ],\n dayoff: 'sunday',\n days: {\n 'chinese 01-0-01 and if sunday then next tuesday if saturday then next monday': {\n name: {\n en: 'Chinese New Year'\n },\n substitute: true\n },\n 'chinese 01-0-02 and if sunday then next tuesday if saturday then next monday': {\n name: {\n en: 'Chinese New Year (2nd Day)'\n },\n substitute: true\n },\n '01-01': {\n _name: '01-01'\n },\n '01-26': {\n name: {\n en: 'Australia Day'\n }\n },\n '03-20': {\n name: {\n en: 'Labour Day'\n }\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-06': {\n name: {\n en: 'Self Determination Day'\n }\n },\n '04-25': {\n name: {\n en: 'Anzac Day'\n }\n },\n '12-25 and if sunday then next tuesday': {\n _name: '12-25',\n substitute: true\n },\n '12-26 and if sunday then next monday': {\n _name: '12-26',\n substitute: true\n },\n '1 Muharram and if sunday then next monday': {\n substitute: true,\n _name: '1 Muharram'\n },\n '1 Shawwal and if sunday then next monday': {\n substitute: true,\n _name: '1 Shawwal',\n name: {\n en: 'Hari Raya Puasa'\n }\n },\n '10 Dhu al-Hijjah and if sunday then next monday': {\n substitute: true,\n _name: '10 Dhu al-Hijjah',\n name: {\n en: 'Hari Raya Haji'\n }\n },\n '12 Rabi al-awwal and if sunday then next monday': {\n substitute: true,\n _name: '12 Rabi al-awwal',\n name: {\n en: 'Hari Maulaud Nabi'\n }\n }\n }\n },\n CD: {\n names: {\n fr: 'République démocratique du Congo',\n en: 'Democratic Republic of the Congo'\n },\n dayoff: 'sunday',\n langs: [\n 'fr'\n ],\n zones: [\n 'Africa/Maputo',\n 'Africa/Lagos'\n ],\n days: {\n '01-01 and if sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n '01-04 and if sunday then next monday': {\n substitute: true,\n name: {\n fr: \"Martyrs de l'Indépendance\",\n en: 'Day of the Martyrs'\n }\n },\n '01-16 and if sunday then next tuesday': {\n substitute: true,\n name: {\n fr: 'Journée du Héro National Laurent Désiré Kabila',\n en: 'Anniversary of President Laurent Kabila'\n }\n },\n '01-17 and if sunday then next monday': {\n substitute: true,\n name: {\n fr: 'Journée du Héro National Patrice Emery Lumumba',\n en: 'Anniversary of Prime Minister Patrice Emery Lumumba'\n }\n },\n '05-01 and if sunday then next monday': {\n substitute: true,\n _name: '05-01'\n },\n '05-17 and if sunday then next monday': {\n substitute: true,\n name: {\n fr: 'Journée de la Révolution et des Forces Armées',\n en: 'Liberation Day'\n }\n },\n '06-30 and if sunday then next monday': {\n substitute: true,\n _name: 'Independence Day',\n name: {\n fr: 'Anniversaire de Indépendance'\n }\n },\n '08-01 and if sunday then next monday': {\n substitute: true,\n name: {\n fr: 'Fête des parents',\n en: \"Parents' Day\"\n }\n },\n '12-25 and if sunday then next monday': {\n substitute: true,\n _name: '12-25'\n },\n '2016-01-15': {\n _name: 'Public Holiday'\n }\n }\n },\n CF: {\n names: {\n fr: 'République centrafricaine',\n sg: 'Ködörösêse tî Bêafrîka',\n en: 'Central African Republic'\n },\n dayoff: 'sunday',\n langs: [\n 'fr',\n 'sg'\n ],\n zones: [\n 'Africa/Lagos'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '03-29': {\n name: {\n fr: 'Décès du Fondateur Barthélémy Boganda',\n en: 'Boganda Day'\n }\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '06-30': {\n name: {\n fr: 'Journée de prière',\n en: 'General Prayer Day'\n }\n },\n '08-13': {\n _name: 'Independence Day'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-01': {\n name: {\n fr: 'Jour de la République',\n en: 'Republic Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n CG: {\n names: {\n fr: 'République du Congo',\n en: 'Republic of the Congo'\n },\n dayoff: 'sunday',\n langs: [\n 'fr',\n 'en'\n ],\n zones: [\n 'Africa/Lagos'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '06-10': {\n name: {\n fr: 'Fête de la commémoration de la conférence nationale souveraine'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '11-28': {\n name: {\n fr: 'Journée nationale de la République'\n }\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n CH: {\n names: {\n de: 'Schweiz',\n fr: 'Suisse',\n it: 'Svizzera',\n en: 'Switzerland'\n },\n dayoff: 'sunday',\n langs: [\n 'de-ch',\n 'de',\n 'fr',\n 'it'\n ],\n zones: [\n 'Europe/Zurich'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -3': {\n _name: 'easter -3',\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 39': {\n _name: 'easter 39',\n name: {\n de: 'Auffahrt'\n }\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '1st sunday in June': {\n name: {\n de: 'Vätertag',\n fr: 'Fête des pères'\n },\n type: 'observance',\n active: [\n {\n from: '2009-01-01'\n }\n ]\n },\n '08-01': {\n name: {\n de: 'Bundesfeiertag',\n fr: 'Fête nationale',\n it: 'Giorno festivo federale'\n }\n },\n '3rd sunday after 09-01': {\n name: {\n de: 'Eidg. Dank-, Buss- und Bettag',\n fr: 'Jeûne fédéral',\n it: 'Digiuno federale',\n en: 'Federal Day of Thanksgiving, Repentance and Prayer'\n }\n },\n '12-25': {\n _name: '12-25',\n name: {\n de: 'Weihnachtstag'\n }\n },\n '12-26': {\n _name: '12-26',\n name: {\n de: 'Stephanstag',\n fr: 'Saint-Etienne'\n }\n }\n },\n states: {\n ZH: {\n names: {\n de: 'Kanton Zürich',\n fr: 'Canton de Zurich',\n it: 'Canton Zurigo',\n en: 'Canton of Zürich'\n },\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n },\n type: 'optional'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n 'monday after 2nd saturday in September 13:00': {\n name: {\n de: 'Knabenschiessen'\n },\n type: 'optional'\n }\n }\n },\n BE: {\n names: {\n de: 'Kanton Bern',\n fr: 'Canton de Berne',\n it: 'Canton Berna',\n en: 'Canton of Bern'\n },\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: '2 janvier'\n }\n }\n }\n },\n LU: {\n names: {\n de: 'Kanton Luzern',\n fr: 'Canton de Lucerne',\n it: 'Canton Lucerna',\n en: 'Canton of Lucerne'\n },\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n },\n type: 'optional'\n },\n '03-19': {\n _name: '03-19',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'optional'\n },\n 'easter 50': {\n _name: 'easter 50',\n type: 'optional'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n }\n }\n },\n UR: {\n names: {\n de: 'Kanton Uri',\n fr: \"Canton d'Uri\",\n it: 'Canton Uri',\n en: 'Canton of Uri'\n },\n days: {\n '01-06': {\n _name: '01-06'\n },\n '03-19': {\n _name: '03-19'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-26': false,\n '12-26 not on monday, friday': {\n _name: '12-26'\n }\n }\n },\n SZ: {\n names: {\n de: 'Kanton Schwyz',\n fr: 'Canton de Schwytz',\n it: 'Canton Svitto',\n en: 'Canton of Schwyz'\n },\n days: {\n '01-06': {\n _name: '01-06'\n },\n '03-19': {\n _name: '03-19'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n }\n }\n },\n OW: {\n names: {\n de: 'Kanton Obwalden',\n fr: \"Canton d'Obwald\",\n it: 'Canton Obvaldo',\n en: 'Canton of Obwalden'\n },\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n },\n type: 'optional'\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'optional'\n },\n 'easter 50': {\n _name: 'easter 50',\n type: 'optional'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '09-25': {\n name: {\n de: 'Bruderklausenfest',\n fr: 'Saint-Nicholas-de-Flüe',\n en: 'Saint Nicholas of Flüe'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-26': {\n _name: '12-26',\n type: 'optional'\n }\n }\n },\n NW: {\n names: {\n de: 'Kanton Nidwalden',\n fr: 'Canton de Nidwald',\n it: 'Canton Nidvaldo',\n en: 'Canton of Nidwalden'\n },\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n },\n type: 'bank'\n },\n '03-19': {\n _name: '03-19'\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'optional'\n },\n 'easter 50': {\n _name: 'easter 50',\n type: 'optional'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-26': {\n _name: '12-26',\n type: 'optional'\n }\n }\n },\n GL: {\n sources: [\n 'https://www.gl.ch/verwaltung/staatskanzlei/oeffentliche-feiertage.html/1335'\n ],\n names: {\n de: 'Kanton Glarus',\n fr: 'Canton de Glaris',\n it: 'Canton Glarona',\n en: 'Canton of Glarus'\n },\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n },\n type: 'optional'\n },\n 'Thursday after 04-02 if is observance holiday then next Thursday': {\n name: {\n de: 'Näfelser Fahrt',\n fr: 'Bataille de Näfels'\n }\n },\n '3rd sunday after 09-01': false,\n '11-01': {\n _name: '11-01'\n },\n '12-24': {\n _name: '12-24'\n },\n '12-31': {\n _name: '12-31'\n }\n }\n },\n ZG: {\n names: {\n de: 'Kanton Zug',\n fr: 'Canton de Zoug',\n it: 'Canton Zugo',\n en: 'Canton of Zug'\n },\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n },\n type: 'optional'\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'optional'\n },\n 'easter 50': {\n _name: 'easter 50',\n type: 'optional'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-26': {\n _name: '12-26',\n type: 'optional'\n }\n }\n },\n FR: {\n names: {\n fr: 'Canton de Fribourg',\n de: 'Kanton Freiburg',\n it: 'Canton Friburgo',\n en: 'Canton of Fribourg'\n },\n langs: [\n 'fr',\n 'de-ch',\n 'de',\n 'it'\n ],\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n },\n type: 'optional'\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'optional'\n },\n 'easter 50': {\n _name: 'easter 50',\n type: 'optional'\n },\n 'easter 60': {\n _name: 'easter 60',\n note: 'excluding communities: Agriswil, Altavilla, Büchslen, Cordast, Courgevaux, Courlevon, Fräschels, Galmiz, Gempenach, Greng, Jeuss, Kerzers, Lurtigen, Meyriez, Muntelier, Murten, Ried bei Kerzers (halb), Salvenach, Ulmiz, Bas-Vully, Haut-Vully\\n'\n },\n '08-15': {\n _name: '08-15',\n note: 'excluding communities: Agriswil, Altavilla, Büchslen, Cordast, Courgevaux, Courlevon, Fräschels, Galmiz, Gempenach, Greng, Jeuss, Kerzers, Lurtigen, Meyriez, Muntelier, Murten, Ried bei Kerzers (halb), Salvenach, Ulmiz, Bas-Vully, Haut-Vully\\n'\n },\n '11-01': {\n _name: '11-01',\n note: 'excluding communities: Agriswil, Altavilla, Büchslen, Cordast, Courgevaux, Courlevon, Fräschels, Galmiz, Gempenach, Greng, Jeuss, Kerzers, Lurtigen, Meyriez, Muntelier, Murten, Ried bei Kerzers (halb), Salvenach, Ulmiz, Bas-Vully, Haut-Vully\\n'\n },\n '12-08': {\n _name: '12-08',\n note: 'excluding communities: Agriswil, Altavilla, Büchslen, Cordast, Courgevaux, Courlevon, Fräschels, Galmiz, Gempenach, Greng, Jeuss, Kerzers, Lurtigen, Meyriez, Muntelier, Murten, Ried bei Kerzers (halb), Salvenach, Ulmiz, Bas-Vully, Haut-Vully\\n'\n },\n '12-26': {\n _name: '12-26',\n type: 'optional'\n }\n }\n },\n SO: {\n names: {\n de: 'Kanton Solothurn',\n fr: 'Canton de Soleure',\n it: 'Canton Soletta',\n en: 'Canton of Solothurn'\n },\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n },\n type: 'optional'\n },\n '03-19': {\n _name: '03-19',\n note: 'Only in communities: Fulenbach, Walterswil, Wisen, Metzerlen, Nulgar-St. Pantaleon, Rodersdorf, Bärschwil, Büsserach\\n'\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'optional'\n },\n '05-01 12:00': {\n _name: '05-01'\n },\n 'easter 50': {\n _name: 'easter 50',\n type: 'optional'\n },\n 'easter 60': {\n _name: 'easter 60',\n note: 'is optional in Bucheggberg'\n },\n '08-15': {\n _name: '08-15',\n note: 'is optional in Bucheggberg'\n },\n '11-01': {\n _name: '11-01',\n note: 'is optional in Bucheggberg'\n },\n '12-26': {\n _name: '12-26',\n type: 'optional'\n }\n }\n },\n BS: {\n names: {\n de: 'Kanton Basel-Stadt',\n fr: 'Canton de Bâle-Ville',\n it: 'Canton Basilea Città',\n en: 'Canton of Basel-City'\n },\n days: {\n '05-01': {\n _name: '05-01'\n }\n }\n },\n BL: {\n names: {\n de: 'Kanton Basel-Landschaft',\n fr: 'Canton de Bâle-Campagne',\n it: 'Canton Basilea Campagna',\n en: 'Canton of Basel-Country'\n },\n days: {\n '05-01': {\n _name: '05-01'\n },\n 'easter 60': {\n _name: 'easter 60',\n type: 'observance'\n }\n }\n },\n SH: {\n names: {\n de: 'Kanton Schaffhausen',\n fr: 'Canton de Schaffhouse',\n it: 'Canton Sciaffusa',\n en: 'Canton of Schaffhausen'\n },\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n },\n type: 'optional'\n },\n '05-01': {\n _name: '05-01'\n }\n }\n },\n AR: {\n names: {\n de: 'Kanton Appenzell Ausserrhoden',\n fr: \"Canton d'Appenzell Rhodes-Extérieures\",\n it: 'Canton Appenzello Esterno',\n en: 'Canton of Appenzell Outer Rhodes'\n },\n days: {\n '12-26': false,\n '12-26 not on monday': {\n _name: '12-26'\n }\n }\n },\n AI: {\n names: {\n de: 'Kanton Appenzell Innerrhoden',\n fr: \"Canton d'Appenzell Rhodes-Intérieures\",\n it: 'Canton Appenzello Interno',\n en: 'Canton of Appenzell Inner-Rhodes'\n },\n days: {\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '09-22': {\n name: {\n de: 'Mauritiustag'\n },\n note: 'excluding: Bezirk Oberegg\\n'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-26': {\n type: 'observance'\n },\n '12-26 not on tuesday, saturday': {\n _name: '12-26'\n }\n }\n },\n SG: {\n names: {\n de: 'Kanton St. Gallen',\n fr: 'Canton de Saint-Gall',\n it: 'Canton San Gallo',\n en: 'Canton of St. Gallen'\n },\n days: {\n '11-01': {\n _name: '11-01'\n }\n }\n },\n GR: {\n names: {\n de: 'Kanton Graubünden',\n it: 'Cantone dei Grigioni',\n fr: 'Canton des Grisons',\n en: 'Canton of Grisons'\n },\n langs: [\n 'de-ch',\n 'de',\n 'it',\n 'fr'\n ],\n days: {\n '01-06': {\n _name: '01-06',\n type: 'observance'\n },\n '03-19': {\n _name: '03-19',\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2',\n type: 'optional'\n },\n 'easter 60': {\n _name: 'easter 60',\n type: 'observance'\n },\n '08-15': {\n _name: '08-15',\n type: 'observance'\n },\n '11-01': {\n _name: '11-01',\n type: 'observance'\n },\n '12-08': {\n _name: '12-08',\n type: 'observance'\n }\n }\n },\n AG: {\n names: {\n de: 'Kanton Aargau',\n fr: \"Canton d'Argovie\",\n it: 'Canton Argovia',\n en: 'Canton of Aargau'\n },\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n }\n }\n },\n TG: {\n names: {\n de: 'Kanton Thurgau',\n fr: 'Canton de Thurgovie',\n it: 'Canton Turgovia',\n en: 'Canton of Thurgau'\n },\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n }\n },\n '05-01': {\n _name: '05-01'\n }\n }\n },\n TI: {\n names: {\n it: 'Canton Ticino',\n de: 'Kanton Tessin',\n fr: 'Canton du Tessin',\n en: 'Canton of Ticino'\n },\n langs: [\n 'it',\n 'de-ch',\n 'de',\n 'fr'\n ],\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n },\n type: 'bank'\n },\n '01-06': {\n _name: '01-06',\n name: {\n it: 'Epifania'\n }\n },\n '03-19': {\n _name: '03-19'\n },\n 'easter -2': false,\n 'easter 60': {\n _name: 'easter 60'\n },\n '05-01': {\n _name: '05-01'\n },\n '06-29': {\n _name: '06-29'\n },\n '1st sunday in June': false,\n '08-15': {\n _name: '08-15',\n name: {\n it: 'Assunzione'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n }\n }\n },\n VD: {\n names: {\n fr: 'Canton de Vaud',\n de: 'Kanton Waadt',\n it: 'Canton Vaud',\n en: 'Canton of Vaud'\n },\n langs: [\n 'fr',\n 'de-ch',\n 'de',\n 'it'\n ],\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: '2 Janvier'\n }\n },\n 'monday after 3rd sunday in September': {\n name: {\n de: 'Bettagsmontag',\n fr: 'Lundi du Jeûne Fédéral',\n en: 'Monday after Federal Day of Thanksgiving, Repentance and Prayer'\n }\n },\n '12-26': false\n }\n },\n VS: {\n names: {\n fr: 'Canton du Valais',\n de: 'Kanton Wallis',\n it: 'Canton Vallese',\n en: 'Canton of Valais'\n },\n langs: [\n 'fr',\n 'de-ch',\n 'de',\n 'it'\n ],\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: 'Saint-Berthold'\n },\n type: 'bank'\n },\n '03-19': {\n _name: '03-19'\n },\n 'easter -2': false,\n 'easter 1': {\n _name: 'easter 1',\n type: 'optional'\n },\n '05-01 12:00': {\n _name: '05-01'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n 'monday after 3rd sunday after 09-01': {\n name: {\n de: 'Bettagsmontag',\n fr: 'Lundi du Jeûne Fédéral',\n en: 'Monday after Federal Day of Thanksgiving, Repentance and Prayer'\n },\n type: 'bank'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-24 12:00': {\n _name: '12-24'\n },\n '12-26': {\n type: 'optional'\n }\n }\n },\n NE: {\n names: {\n fr: 'Canton de Neuchâtel',\n de: 'Kanton Neuenburg',\n it: 'Canton Neuchâtel',\n en: 'Canton of Neuchâtel'\n },\n langs: [\n 'fr',\n 'de-ch',\n 'de',\n 'it'\n ],\n days: {\n '01-02 on monday': {\n name: {\n de: 'Berchtoldstag',\n fr: '2 Janvier'\n }\n },\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: '2 Janvier'\n },\n type: 'observance'\n },\n '03-01': {\n name: {\n fr: 'Instauration de la République',\n de: 'Jahrestag Ausrufung der Republik'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 50': {\n _name: 'easter 50',\n type: 'observance'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n 'monday after 3rd sunday in September': {\n name: {\n de: 'Bettagsmontag',\n fr: 'Lundi du Jeûne Fédéral',\n en: 'Monday after Federal Day of Thanksgiving, Repentance and Prayer'\n },\n type: 'optional'\n },\n '12-26': {\n type: 'observance'\n },\n '12-26 on monday': {\n _name: '12-26'\n }\n }\n },\n GE: {\n names: {\n fr: 'Canton de Genève',\n de: 'Kanton Genf',\n it: 'Canton Ginevra',\n en: 'Canton of Geneva'\n },\n langs: [\n 'fr',\n 'de-ch',\n 'de',\n 'it'\n ],\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: '2 Janvier'\n },\n type: 'bank'\n },\n 'thursday after 1st sunday after 09-01': {\n name: {\n de: 'Genfer Bettag',\n fr: 'Jeûne Genevois'\n }\n },\n '12-26': {\n type: 'bank'\n },\n '12-31': {\n name: {\n de: 'Wiederherstellung der Republik',\n fr: 'Restauration de la République',\n en: 'Restoration of the Republic'\n }\n },\n '3rd sunday after 09-01': false\n }\n },\n JU: {\n names: {\n fr: 'Canton du Jura',\n de: 'Kanton Jura',\n it: 'Canton Giura',\n en: 'Canton of Jura'\n },\n langs: [\n 'fr',\n 'de-ch',\n 'de',\n 'it'\n ],\n days: {\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n fr: '2 Janvier'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '06-23': {\n name: {\n fr: 'Plébiscite jurassien',\n en: 'Jura Plebiscite',\n de: 'Fest der Unabhängigkeit'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-26': false\n }\n }\n }\n },\n CI: {\n names: {\n fr: \"République de Côte d'Ivoire\",\n en: \"Republic of Côte d'Ivoire\"\n },\n langs: [\n 'fr',\n 'en'\n ],\n zones: [\n 'Africa/Abidjan'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '08-07 since 1960': {\n _name: 'Independence Day'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '11-15 since 1996': {\n name: {\n en: 'National Peace Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '27 Ramadan': {\n _name: '27 Ramadan'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n CK: {\n names: {\n rar: \"Kūki 'Āirani\",\n en: 'Cook Islands'\n },\n langs: [\n 'en',\n 'rar'\n ],\n zones: [\n 'Pacific/Rarotonga'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: '01-01'\n },\n '01-02 and if Saturday then next Monday if Monday, Sunday then next Tuesday': {\n substitute: true,\n name: {\n en: \"Day after New Year's Day\"\n }\n },\n '04-25': {\n name: {\n en: 'Anzac Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '1st Monday in June': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '1st Friday in July': {\n name: {\n en: 'Ra o te Ui Ariki (House of Ariki)',\n rar: 'Ra o te Ui Ariki'\n }\n },\n '08-04 and if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: 'Constitution Day'\n },\n '10-26 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'National Gospel Day'\n }\n },\n '12-25 and if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if Saturday then next Monday if Monday, Sunday then next Tuesday': {\n substitute: true,\n _name: '12-26'\n }\n },\n states: {\n Aitutaki: {\n names: {\n en: 'Aitutaki'\n },\n days: {\n '10-26 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Aitutaki Gospel Day'\n }\n }\n }\n },\n Atiu: {\n names: {\n en: 'Atiu'\n },\n days: {\n '07-19 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Atiu Gospel Day'\n }\n }\n }\n },\n Mangaia: {\n names: {\n en: 'Mangaia'\n },\n days: {\n '06-15 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Mangaia Gospel Day'\n }\n }\n }\n },\n Manihiki: {\n names: {\n en: 'Manihiki'\n },\n days: {\n '08-08 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Manihiki Gospel Day'\n }\n }\n }\n },\n Mitiaro: {\n names: {\n en: 'Mitiaro'\n },\n days: {\n '07-21 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Mitiaro Gospel Day'\n }\n }\n }\n },\n Palmerston: {\n names: {\n en: 'Palmerston'\n },\n days: {\n '05-25 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Palmerston Gospel Day'\n }\n }\n }\n },\n Penrhyn: {\n names: {\n en: 'Penrhyn'\n },\n days: {\n '05-13 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Penrhyn Gospel Day'\n }\n }\n }\n },\n Pukapuka: {\n names: {\n en: 'Pukapuka'\n },\n days: {\n '12-06 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Pukapuka Gospel Day'\n }\n }\n }\n },\n Rakahanga: {\n names: {\n en: 'Rakahanga'\n },\n days: {\n '08-15 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Rakahanga Gospel Day'\n }\n }\n }\n },\n Rarotonga: {\n names: {\n en: 'Rarotonga'\n },\n days: {\n '07-25 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Rarotonga Gospel Day'\n }\n }\n }\n }\n }\n },\n CL: {\n names: {\n es: 'Chile',\n en: 'Chile'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Santiago',\n 'Pacific/Easter'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-02 on monday since 2017': {\n name: 'Día adicional',\n active: [\n {\n from: 2017\n }\n ]\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-21': {\n name: {\n en: 'Navy Day',\n es: 'Día de las Glorias Navales'\n }\n },\n '06-21 since 2023': {\n name: {\n en: \"Indigenous People's Day\",\n es: 'Día de los Pueblos Indígenas'\n }\n },\n '06-29 if tuesday, wednesday, thursday then previous monday if friday then next monday': {\n _name: '06-29'\n },\n '07-16': {\n name: {\n en: 'Our Lady of Mount Carmel',\n es: 'Virgen del Carmen'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '2022-09-16': {\n name: {\n es: 'Fiestas Patrias',\n en: 'National Holiday'\n }\n },\n '09-17 on friday, monday since 2017': {\n name: {\n en: 'National holiday',\n es: 'Feriado Adicional Fiestas Patrias'\n }\n },\n '09-18': {\n name: {\n en: 'National holiday',\n es: 'Fiestas Patrias'\n }\n },\n '09-19': {\n name: {\n en: 'Army Day',\n es: 'Día de las Glorias del Ejército'\n }\n },\n '09-20 on friday': {\n name: {\n es: 'Feriado Adicional Fiestas Patrias',\n en: 'National Holiday'\n }\n },\n '10-12 if tuesday, wednesday, thursday then previous monday if friday then next monday': {\n name: {\n en: 'Columbus Day',\n es: 'Encuentro de Dos Mundos'\n }\n },\n '10-31 if wednesday then next friday if tuesday then previous friday': {\n _name: 'Reformation Day'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-31': {\n _name: '12-31',\n type: 'bank'\n }\n },\n states: {\n AP: {\n name: 'Arica y Parinacota',\n days: {\n '06-07': {\n name: {\n en: 'Battle of Arica',\n es: 'Asalto y Toma del Morro de Arica'\n }\n }\n }\n },\n BI: {\n name: 'Biobío',\n regions: {\n CH: {\n name: 'Chillán y Chillán Viejo',\n days: {\n '08-20': {\n name: {\n en: \"Nativity of Liberator Bernardo O'Higgins\",\n es: 'Nacimiento del Prócer de la Independencia'\n },\n active: [\n {\n to: '2017-08-19'\n }\n ]\n }\n }\n }\n }\n },\n NU: {\n name: 'Ñuble',\n regions: {\n CH: {\n name: 'Chillán y Chillán Viejo',\n days: {\n '08-20': {\n name: {\n en: \"Nativity of Liberator Bernardo O'Higgins\",\n es: 'Nacimiento del Prócer de la Independencia'\n },\n active: [\n {\n from: '2017-08-19'\n }\n ]\n }\n }\n }\n }\n },\n TA: {\n name: 'Tarapacá',\n days: {\n '08-10': {\n name: {\n en: 'Saint Lawrence',\n es: 'San Lorenzo de Tarapacá'\n },\n type: 'observance',\n disable: [\n 2015\n ]\n },\n '2015-08-10': {\n name: {\n en: 'Saint Lawrence',\n es: 'San Lorenzo de Tarapacá'\n }\n }\n }\n }\n }\n },\n CM: {\n names: {\n fr: 'Cameroun',\n en: 'Cameroon'\n },\n dayoff: 'sunday',\n langs: [\n 'fr',\n 'en'\n ],\n zones: [\n 'Africa/Lagos'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-11': {\n name: {\n fr: 'Fête de la Jeunesse',\n en: 'Youth Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-01 if sunday then next monday': {\n _name: '05-01'\n },\n '05-20': {\n name: {\n fr: \"Fête nationale ou de l'unité\",\n en: 'National Day'\n }\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '08-15': {\n _name: '08-15'\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n CN: {\n names: {\n en: 'China',\n zh: '中华人民共和国'\n },\n dayoff: 'sunday',\n langs: [\n 'zh',\n 'en'\n ],\n zones: [\n 'Asia/Shanghai',\n 'Asia/Urumqi'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '03-08 12:00': {\n _name: '03-08',\n note: 'Women'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-04 12:00': {\n name: {\n en: 'Youth Day',\n zh: '青年节'\n },\n note: 'Youth from the age of 14 to 28'\n },\n '06-01': {\n name: {\n en: \"Children's Day\",\n zh: '六一儿童节'\n },\n note: 'Children below the age of 14'\n },\n '08-01 12:00': {\n name: {\n en: 'Army Day',\n zh: '建军节'\n },\n note: 'Military personnel in active service'\n },\n '10-01': {\n name: {\n en: 'National Day',\n zh: '国庆节'\n }\n },\n '10-02': {\n name: {\n en: 'National Day',\n zh: '国庆节'\n }\n },\n '10-03': {\n name: {\n en: 'National Day',\n zh: '国庆节'\n }\n },\n 'chinese 01-0-00': {\n name: {\n en: 'Spring Festival',\n zh: '春节'\n }\n },\n 'chinese 01-0-01': {\n name: {\n en: 'Spring Festival',\n zh: '春节'\n }\n },\n 'chinese 01-0-02': {\n name: {\n en: 'Spring Festival',\n zh: '春节'\n }\n },\n 'chinese 5-01 solarterm': {\n name: {\n en: 'Qingming Festival',\n zh: '清明节 清明節'\n }\n },\n 'chinese 05-0-05': {\n name: {\n en: 'Dragon Boat Festival',\n zh: '端午节'\n }\n },\n 'chinese 08-0-15': {\n name: {\n en: 'Mid-Autumn Festival',\n zh: '中秋节'\n }\n },\n '2021-01-02': {\n _name: '01-01'\n },\n '2021-01-03': {\n _name: '01-01'\n },\n '2021-02-14': {\n name: {\n en: 'Spring Festival',\n zh: '春节'\n },\n note: 'Work on Sun February 7 and Sat February 20.'\n },\n '2021-02-15': {\n name: {\n en: 'Spring Festival',\n zh: '春节'\n }\n },\n '2021-02-16': {\n name: {\n en: 'Spring Festival',\n zh: '春节'\n }\n },\n '2021-02-17': {\n name: {\n en: 'Spring Festival',\n zh: '春节'\n }\n },\n '2021-04-03': {\n name: {\n en: 'Qingming Festival',\n zh: '清明节 清明節'\n }\n },\n '2021-04-05': {\n name: {\n en: 'Qingming Festival',\n zh: '清明节 清明節'\n }\n },\n '2021-05-02': {\n _name: '05-01',\n note: 'Work on Sun April 25 and Sat May 8.'\n },\n '2021-05-03': {\n _name: '05-01'\n },\n '2021-05-04': {\n _name: '05-01'\n },\n '2021-05-05': {\n _name: '05-01'\n },\n '2021-06-12': {\n name: {\n en: 'Dragon Boat Festival',\n zh: '端午节'\n }\n },\n '2021-06-13': {\n name: {\n en: 'Dragon Boat Festival',\n zh: '端午节'\n }\n },\n '2021-09-19': {\n name: {\n en: 'Mid-Autumn Festival',\n zh: '中秋节'\n },\n note: 'Work on Sat September 18.'\n },\n '2021-09-20': {\n name: {\n en: 'Mid-Autumn Festival',\n zh: '中秋节'\n }\n },\n '2021-10-04': {\n name: {\n en: 'National Day',\n zh: '国庆节'\n },\n note: 'Work on Sun September 26 and Sat October 9.'\n },\n '2021-10-05': {\n name: {\n en: 'National Day',\n zh: '国庆节'\n }\n },\n '2021-10-06': {\n name: {\n en: 'National Day',\n zh: '国庆节'\n }\n },\n '2021-10-07': {\n name: {\n en: 'National Day',\n zh: '国庆节'\n }\n }\n }\n },\n CO: {\n names: {\n es: 'Colombia',\n en: 'Colombia'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Bogota'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'monday after 01-06': {\n _name: '01-06'\n },\n 'monday after 03-19': {\n _name: '03-19'\n },\n 'easter -7': {\n _name: 'easter -7',\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 43': {\n _name: 'easter 39'\n },\n 'easter 64': {\n _name: 'easter 60'\n },\n 'easter 71': {\n name: {\n es: 'Sagrado Corazón de Jesús',\n en: 'Sacred Heart'\n }\n },\n 'monday after 06-29': {\n _name: '06-29'\n },\n '07-20': {\n _name: 'Independence Day'\n },\n '08-07': {\n name: {\n en: 'Battle of Boyacá',\n es: 'Batalla de Boyacá'\n }\n },\n 'monday after 08-15': {\n _name: '08-15'\n },\n 'monday after 10-12': {\n name: {\n es: 'Día de la Raza',\n en: 'Columbus Day'\n }\n },\n '1st monday in November': {\n _name: '11-01'\n },\n 'monday after 11-11': {\n name: {\n es: 'Independencia de Cartagena',\n en: 'Independence of Cartagena'\n }\n },\n '12-08': {\n _name: '12-08'\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n CR: {\n names: {\n es: 'Costa Rica',\n en: 'Costa Rica'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Costa_Rica'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '04-11': {\n name: {\n es: 'Gesta Heroica de Juan Santamaría'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '07-25': {\n name: {\n en: 'Guanacaste Day',\n es: 'Anexión del Partido de Nicoya'\n }\n },\n '08-02': {\n name: {\n en: 'Our Lady of Los Ángeles',\n es: 'Día de la Virgen de los Ángeles'\n }\n },\n '08-15': {\n _name: 'Mothers Day'\n },\n '09-15': {\n _name: 'Independence Day'\n },\n '10-12 if monday then previous friday': {\n name: {\n en: 'Columbus Day',\n es: 'Día de la Raza'\n }\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n CU: {\n names: {\n es: 'Cuba',\n en: 'Cuba'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Havana'\n ],\n days: {\n '01-01': {\n name: {\n es: 'Triunfo de la Revolución',\n en: 'Triumph of the Revolution'\n }\n },\n '01-02': {\n name: {\n es: 'Día de Victoria de las Fuerzas Armadas',\n en: 'Victory of Armed Forces Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-01': {\n _name: '05-01'\n },\n '07-25': {\n name: {\n es: 'Conmemoración del asalto a Moncada',\n en: 'Day before the Commemoration of the Assault of the Moncada garrison'\n }\n },\n '07-26': {\n name: {\n es: 'Día de la Rebeldía Nacional',\n en: 'Commemoration of the Assault of the Moncada garrison'\n }\n },\n '07-27': {\n name: {\n es: 'Conmemoración del asalto a Moncada',\n en: 'Day after the Commemoration of the Assault of the Moncada garrison'\n }\n },\n '10-10': {\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n CV: {\n names: {\n pt: 'República de Cabo Verde',\n en: 'Cape Verde'\n },\n langs: [\n 'pt'\n ],\n zones: [\n 'Atlantic/Cape_Verde'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-13': {\n name: {\n pt: 'Dia da Democracia',\n en: 'Democracy Day'\n }\n },\n '01-20': {\n name: {\n pt: 'Dia dos Heróis Nacionais',\n en: \"Heroes' Day\"\n }\n },\n 'easter -47': {\n _name: 'easter -47'\n },\n 'easter -46': {\n _name: 'easter -46'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '05-01': {\n _name: '05-01'\n },\n '06-01': {\n name: {\n pt: 'Dia das Crianças',\n en: \"Children's Day\"\n }\n },\n '07-05': {\n _name: 'Independence Day'\n },\n '08-15': {\n _name: '08-15',\n name: {\n pt: 'Dia da Padroeira Nacional'\n }\n },\n '09-12': {\n name: {\n pt: 'Dia Nacional',\n en: 'National Day'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n '12-25': {\n _name: '12-25'\n }\n },\n states: {\n S: {\n name: 'Sotavento Islands',\n regions: {\n PR: {\n name: 'Praia',\n days: {\n '05-19': {\n name: {\n pt: 'Dia do Município da Praia'\n }\n }\n }\n }\n }\n }\n }\n },\n CW: {\n names: {\n nl: 'Curaçao',\n pap: 'Kòrsou',\n en: 'Curaçao'\n },\n langs: [\n 'nl',\n 'pap',\n 'en'\n ],\n zones: [\n 'America/Curacao'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -48': {\n _name: 'easter -48',\n name: {\n en: 'Carnival Monday'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-27': {\n name: {\n pap: 'Aña di Rey',\n nl: 'Koningsdag',\n en: 'Kings Day'\n }\n },\n '05-01 if sunday then next monday': {\n _name: '05-01'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '1st sunday in June': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n 'easter 39': {\n _name: 'easter 39',\n name: {\n nl: 'Hemelvaartsdag'\n }\n },\n '07-02': {\n name: {\n nl: 'Dag van het volkslied en de Vlag',\n pap: 'Dia di Himno i Bandera',\n en: 'Flag Day'\n }\n },\n '10-10': {\n name: {\n nl: 'Dag van het land Curaçao',\n pap: 'Pais Kòrsou',\n en: 'Curaçao Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31 12:00': {\n _name: '12-31'\n }\n }\n },\n CX: {\n names: {\n en: 'Christmas Island'\n },\n langs: [\n 'en',\n 'ms'\n ],\n zones: [\n 'Indian/Christmas'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-26': {\n name: {\n en: 'Australia Day'\n }\n },\n 'chinese 01-0-01 P2D': {\n name: {\n en: 'Chinese New Year',\n zh: '春节'\n }\n },\n '4th monday in March': {\n _name: '05-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '04-25': {\n name: {\n en: 'Anzac Day'\n }\n },\n '1 Shawwal': {\n _name: '1 Shawwal',\n name: {\n ms: 'Hari Raya Puasa'\n }\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah',\n name: {\n ms: 'Hari Raya Haji'\n }\n },\n '10-06': {\n name: {\n en: 'Territory Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n CY: {\n names: {\n el: 'Κύπρος',\n en: 'Cyprus'\n },\n dayoff: '',\n langs: [\n 'el'\n ],\n zones: [\n 'Asia/Nicosia'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06'\n },\n 'orthodox -48': {\n name: {\n el: 'Καθαρά Δευτέρα',\n en: 'Ash Sunday'\n },\n type: 'observance'\n },\n 'orthodox -47': {\n name: {\n el: 'Καθαρά Δευτέρα',\n en: 'Clean Monday'\n }\n },\n '03-25': {\n name: {\n el: 'Ευαγγελισμός, Εθνική Εορτή',\n en: 'Annunciation, Anniversary of 1821 Revolution'\n }\n },\n '04-01': {\n name: {\n en: 'Cyprus National Day',\n el: 'Κύπρος Εθνική Εορτή'\n }\n },\n 'orthodox -2': {\n _name: 'easter -2'\n },\n orthodox: {\n _name: 'easter'\n },\n 'orthodox 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'orthodox 49': {\n _name: 'easter 49'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '08-15': {\n _name: '08-15'\n },\n '10-01': {\n name: {\n en: 'Cyprus Independence Day',\n el: 'Ημέρα της Ανεξαρτησίας Κύπρος'\n }\n },\n '10-28': {\n _name: 'National Holiday',\n name: {\n el: 'Επέτειος του Όχι'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n CZ: {\n names: {\n cz: 'Česká republika',\n en: 'Czech Republic'\n },\n langs: [\n 'cz'\n ],\n zones: [\n 'Europe/Prague'\n ],\n days: {\n '01-01': {\n _name: '01-01',\n name: {\n cz: 'Nový rok a Den obnovy samostatného českého státu'\n }\n },\n 'easter -4': {\n name: {\n cz: 'Škaredá středa',\n en: 'Ugly Wednesday'\n },\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3',\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter -1': {\n _name: 'easter -1',\n type: 'observance'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-08': {\n name: {\n cz: 'Den vítězství',\n en: 'Liberation Day'\n }\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '07-05': {\n name: {\n cz: 'Den slovanských věrozvěstů Cyrila a Metoděje',\n en: 'Saints Cyril and Methodius Day'\n }\n },\n '07-06': {\n name: {\n cz: 'Den upálení mistra Jana Husa',\n en: 'Jan Hus Day'\n }\n },\n '09-28': {\n name: {\n cz: 'Den české státnosti',\n en: 'St. Wenceslas Day (Czech Statehood Day)'\n }\n },\n '10-28': {\n name: {\n cz: 'Den vzniku samostatného československého státu',\n en: 'Independent Czechoslovak State Day'\n }\n },\n '11-17': {\n name: {\n cz: 'Den boje za svobodu a demokracii',\n en: 'Struggle for Freedom and Democracy Day'\n }\n },\n '12-24': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n DE: {\n names: {\n de: 'Deutschland',\n en: 'Germany'\n },\n dayoff: 'sunday',\n zones: [\n 'Europe/Berlin'\n ],\n langs: [\n 'de'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-14': {\n _name: '02-14',\n type: 'observance'\n },\n 'easter -52': {\n name: {\n de: 'Weiberfastnacht',\n en: \"Women's Carnival Day\"\n },\n type: 'observance'\n },\n 'easter -48': {\n name: {\n de: 'Rosenmontag',\n en: 'Shrove Monday'\n },\n type: 'observance'\n },\n 'easter -47 14:00': {\n _name: 'easter -47',\n type: 'observance'\n },\n 'easter -46': {\n _name: 'easter -46',\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3',\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01',\n name: {\n de: 'Maifeiertag'\n }\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '10-03': {\n _name: 'National Holiday',\n name: {\n de: 'Tag der Deutschen Einheit'\n }\n },\n '11-01': {\n _name: '11-01',\n type: 'observance'\n },\n '11-02': {\n _name: '11-02',\n type: 'observance'\n },\n '11-11': {\n _name: '11-11',\n type: 'observance'\n },\n 'wednesday before 11-23': {\n _name: 'Buß- und Bettag',\n type: 'observance'\n },\n '6th sunday before 12-25': {\n name: {\n de: 'Volkstrauertag',\n en: 'Memorial Day'\n },\n type: 'observance'\n },\n '5th sunday before 12-25': {\n name: {\n de: 'Totensonntag'\n },\n type: 'observance'\n },\n '4th sunday before 12-25': {\n name: {\n de: '1. Advent'\n },\n type: 'observance'\n },\n '3th sunday before 12-25': {\n name: {\n de: '2. Advent'\n },\n type: 'observance'\n },\n '2nd sunday before 12-25': {\n name: {\n de: '3. Advent'\n },\n type: 'observance'\n },\n '1st sunday before 12-25': {\n name: {\n de: '4. Advent'\n },\n type: 'observance'\n },\n '12-24 14:00 if sunday then 00:00': {\n _name: '12-24',\n type: 'bank'\n },\n '12-25': {\n _name: '12-25',\n name: {\n de: '1. Weihnachtstag'\n }\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31 14:00 if sunday then 00:00': {\n _name: '12-31',\n type: 'bank'\n },\n '2017-10-31': {\n _name: 'Reformation Day'\n }\n },\n states: {\n BB: {\n name: 'Brandenburg',\n days: {\n easter: {\n _name: 'easter'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n '10-31': {\n _name: 'Reformation Day'\n }\n }\n },\n BE: {\n name: 'Berlin',\n days: {\n '03-08': {\n _name: '03-08',\n active: [\n {\n from: '2019-01-01T00:00:00.000Z'\n }\n ]\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n '2020-05-08': {\n name: {\n de: 'Tag der Befreiung (75. Jahrestag)',\n en: 'Liberation Day (75th Anniversary)'\n }\n }\n }\n },\n BW: {\n name: 'Baden-Württemberg',\n days: {\n '01-06': {\n _name: '01-06'\n },\n 'easter -3': {\n _name: 'easter -3',\n type: 'school'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '10-31': {\n _name: 'Reformation Day',\n type: 'school'\n },\n '11-01': {\n _name: '11-01'\n }\n }\n },\n BY: {\n name: 'Bayern',\n days: {\n '01-06': {\n _name: '01-06'\n },\n '02-02': {\n _name: '02-02',\n type: 'observance'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n 'wednesday before 11-23': {\n _name: 'Buß- und Bettag',\n type: 'school'\n }\n },\n regions: {\n A: {\n name: 'Stadt Augsburg',\n days: {\n '08-08': {\n name: {\n de: 'Augsburger Friedensfest',\n en: 'Augsburg Peace Festival'\n }\n }\n }\n },\n EVANG: {\n names: {\n de: 'Überwiegend evangelische Gemeinden',\n en: 'Predominantly protestant communities'\n },\n days: {\n '08-15': {\n _name: '08-15',\n type: 'school'\n }\n }\n }\n }\n },\n HB: {\n name: 'Hansestadt Bremen',\n days: {\n '10-31': {\n _name: 'Reformation Day',\n active: [\n {\n from: '2018-01-01T00:00:00.000Z'\n }\n ]\n }\n }\n },\n HE: {\n name: 'Hessen',\n days: {\n easter: {\n _name: 'easter'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 60': {\n _name: 'easter 60'\n }\n }\n },\n HH: {\n name: 'Hansestadt Hamburg',\n days: {\n '10-31': {\n _name: 'Reformation Day',\n active: [\n {\n from: '2018-01-01T00:00:00.000Z'\n }\n ]\n }\n }\n },\n MV: {\n name: 'Mecklenburg Vorpommern',\n days: {\n '03-08 since 2023': {\n _name: '03-08'\n },\n '10-31': {\n _name: 'Reformation Day'\n }\n }\n },\n NI: {\n name: 'Niedersachsen',\n days: {\n '10-31': {\n _name: 'Reformation Day',\n active: [\n {\n from: '2018-01-01T00:00:00.000Z'\n }\n ]\n }\n }\n },\n NW: {\n name: 'Nordrhein-Westfalen',\n days: {\n 'easter 60': {\n _name: 'easter 60'\n },\n '11-01': {\n _name: '11-01'\n }\n }\n },\n RP: {\n name: 'Rheinland-Pfalz',\n days: {\n 'easter 60': {\n _name: 'easter 60'\n },\n '11-01': {\n _name: '11-01'\n }\n }\n },\n SH: {\n name: 'Schleswig-Holstein',\n days: {\n '10-31': {\n _name: 'Reformation Day',\n active: [\n {\n from: '2018-01-01T00:00:00.000Z'\n }\n ]\n }\n }\n },\n SL: {\n name: 'Saarland',\n days: {\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n }\n }\n },\n SN: {\n name: 'Sachsen',\n days: {\n 'easter 60': {\n _name: 'easter 60',\n type: 'observance'\n },\n '10-31': {\n _name: 'Reformation Day'\n },\n 'wednesday before 11-23': {\n _name: 'Buß- und Bettag'\n }\n },\n regions: {\n BZ: {\n name: 'Landkreis Bautzen',\n days: {\n 'easter 60': {\n _name: 'easter 60',\n type: 'public',\n note: 'Bautzen (nur in den Ortsteilen Bolbritz und Salzenforst), Crostwitz, Göda (nur im Ortsteil Prischwitz), Großdubrau (nur im Ortsteil Sdier), Hoyerswerda (nur im Ortsteil Dörgenhausen), Königswartha (nicht im Ortsteil Wartha), Nebelschütz, Neschwitz (nur in den Ortsteilen Neschwitz und Saritsch), Panschwitz-Kuckau, Puschwitz, Räckelwitz, Radibor, Ralbitz-Rosenthal und Wittichenau.'\n }\n }\n }\n }\n },\n ST: {\n name: 'Sachsen-Anhalt',\n days: {\n '01-06': {\n _name: '01-06'\n },\n '10-31': {\n _name: 'Reformation Day'\n }\n }\n },\n TH: {\n name: 'Thüringen',\n days: {\n 'easter 60': {\n _name: 'easter 60',\n type: 'observance'\n },\n '09-20': {\n name: {\n de: 'Weltkindertag',\n en: \"International Children's Day\"\n },\n active: [\n {\n from: 2019\n }\n ]\n },\n '10-31': {\n _name: 'Reformation Day'\n }\n },\n regions: {\n EIC: {\n name: 'Landkreis Eichfeld',\n days: {\n 'easter 60': {\n _name: 'easter 60',\n type: 'public'\n }\n }\n },\n UH: {\n name: 'Unstrut-Hainich-Kreis',\n days: {\n 'easter 60': {\n _name: 'easter 60',\n type: 'public',\n note: 'In Anrode (nur in den Ortsteilen Bickenriede und Zella), Dünwald (nur in den Ortsteilen Beberstedt und Hüpstedt), Rodeberg (nur im Ortsteil Struth), Südeichsfeld'\n }\n }\n },\n WAK: {\n name: 'Wartburgkreis',\n days: {\n 'easter 60': {\n _name: 'easter 60',\n type: 'public',\n note: 'In Brunnhartshausen (nur in den Ortsteilen Föhlritz und Steinberg), Buttlar, Geisa, Schleid, Zella/Rhön'\n }\n }\n }\n }\n }\n }\n },\n DJ: {\n names: {\n fr: 'République de Djibouti',\n ar: 'جمهورية جيبوتي',\n so: 'Jamhuuriyadda Jabuuti',\n aa: 'Gabuutih Ummuuno',\n en: 'Djibouti'\n },\n langs: [\n 'fr',\n 'ar',\n 'en'\n ],\n zones: [\n 'Africa/Nairobi'\n ],\n dayoff: '',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '05-01': {\n _name: '05-01'\n },\n '06-27 since 1977': {\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '27 Rajab': {\n _name: '27 Rajab'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '9 Dhu al-Hijjah': {\n _name: '9 Dhu al-Hijjah'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n DK: {\n names: {\n da: 'Danmark',\n en: 'Denmark'\n },\n langs: [\n 'da'\n ],\n zones: [\n 'Europe/Copenhagen'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -48': {\n name: {\n da: 'Fastelavn'\n },\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 26 prior to 2024': {\n name: {\n da: 'Store Bededag',\n en: 'Prayer Day',\n de: 'Buß- und Bettag'\n }\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '05-01': {\n _name: '05-01',\n type: 'observance',\n note: 'Full holiday for blue collar workers'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '06-05': {\n _name: 'Constitution Day',\n type: 'observance',\n note: 'Shops are closed'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '12-24': {\n _name: '12-24',\n type: 'observance',\n note: 'Shops are closed'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n DM: {\n names: {\n en: 'Dominica'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if sunday then next monday': {\n _name: '01-01',\n substitute: true\n },\n 'easter -48': {\n _name: 'easter -48',\n name: {\n en: 'Carnival Monday'\n }\n },\n 'easter -47': {\n _name: 'easter -47',\n name: {\n en: 'Carnival Tuesday'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '1st monday in August': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '11-03 if sunday then next monday': {\n _name: 'Independence Day'\n },\n '11-04 if sunday then next monday if monday then next tuesday': {\n name: {\n en: 'National Day of Community Service'\n }\n },\n '12-25 and if sunday then next tuesday': {\n _name: '12-25',\n substitute: true\n },\n '12-26 and if sunday then next monday': {\n _name: '12-26',\n substitute: true\n }\n }\n },\n DO: {\n names: {\n es: 'República Dominicana',\n en: 'Dominican Republic'\n },\n dayoff: 'sunday',\n zones: [\n 'America/Santo_Domingo'\n ],\n langs: [\n 'es'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06 if tuesday,wednesday then previous monday if thursday,friday then next monday': {\n _name: '01-06'\n },\n '01-21': {\n name: {\n es: 'Nuestra Señora de la Altagracia',\n en: 'Our Lady of Altagracia'\n }\n },\n '01-26 if tuesday,wednesday then previous monday if thursday,friday then next monday': {\n name: {\n es: 'Día de Duarte',\n en: \"Duarte's Birthday\"\n }\n },\n '02-27': {\n _name: 'Independence Day'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-01 if tuesday,wednesday then previous monday if thursday,friday,sunday then next monday': {\n _name: '05-01'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-16': {\n name: {\n es: 'Día de la Restauración',\n en: 'Restoration Day'\n }\n },\n '09-24': {\n name: {\n es: 'Nuestra Señora de las Mercedes',\n en: 'Our Lady of las Mercedes'\n }\n },\n '11-06 if tuesday,wednesday,thursday,friday,saturday then next monday': {\n _name: 'Constitution Day'\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n DZ: {\n names: {\n ar: 'الجمهورية الجزائرية الديمقراطية الشعبية',\n fr: 'République algérienne démocratique et populaire',\n en: 'Algeria'\n },\n langs: [\n 'ar',\n 'fr',\n 'en'\n ],\n zones: [\n 'Africa/Algiers'\n ],\n dayoff: 'saturday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-12': {\n name: {\n ar: 'رأس السنة الأمازيغية',\n fr: 'Nouvel an amazigh',\n en: 'Amazigh New Year'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '07-05': {\n _name: 'Independence Day'\n },\n '11-01': {\n _name: 'Revolution Day'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '10 Muharram': {\n _name: '10 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n EC: {\n names: {\n es: 'Ecuador',\n en: 'Ecuador'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Guayaquil',\n 'Pacific/Galapagos'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -48': {\n name: {\n en: 'Carnival',\n es: 'Carnaval'\n }\n },\n 'easter -47': {\n _name: 'easter -47'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-24': {\n name: {\n en: 'The Battle of Pichincha',\n es: 'Batalla del Pichincha'\n }\n },\n '07-24': {\n name: {\n en: 'The Birthday of Simón Bolívar',\n es: 'El Natalicio de Simón Bolívar'\n },\n type: 'observance'\n },\n '08-10': {\n name: {\n en: 'Declaration of Independence of Quito',\n es: 'Día del Primer Grito de Independencia de Quito'\n }\n },\n '09-10': {\n name: {\n en: 'Independence of Guayaquil',\n es: 'Independencia de Guayaquil'\n }\n },\n '10-31': {\n name: {\n en: 'Flag Day',\n es: 'Dia de La Bandera'\n },\n type: 'observance'\n },\n '11-02': {\n _name: '11-02'\n },\n '11-03': {\n name: {\n en: 'Independence of Cuenca',\n es: 'Independencia de Cuenca'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-31': {\n _name: '12-31',\n type: 'observance'\n }\n },\n states: {\n P: {\n name: 'Pichincha',\n regions: {\n QU: {\n name: 'Quito',\n days: {\n '12-06': {\n name: {\n en: 'Foundation of Quito',\n es: 'Aniversario de la fundación de Quito'\n },\n type: 'observance'\n }\n }\n }\n }\n }\n }\n },\n EE: {\n names: {\n et: 'Eesti',\n en: 'Estonia'\n },\n dayoff: 'sunday',\n langs: [\n 'et'\n ],\n zones: [\n 'Europe/Tallinn'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06',\n type: 'observance'\n },\n '02-02': {\n name: {\n et: 'Tartu rahulepingu aastapäev',\n en: 'Anniversary of the Tartu Peace Treaty'\n },\n type: 'observance'\n },\n '02-24': {\n _name: 'Independence Day',\n type: 'public'\n },\n '03-14': {\n name: {\n et: 'emakeelepäev',\n en: 'Native Language Day'\n },\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n '05-01': {\n _name: '05-01'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n '06-04': {\n name: {\n et: 'Eesti lipu päev',\n en: 'National Flag Day'\n },\n type: 'observance'\n },\n '06-14': {\n name: {\n et: 'leinapäev',\n en: 'Day of Mourning and Commemoration'\n },\n type: 'observance'\n },\n '06-23': {\n name: {\n et: 'võidupüha',\n en: 'Victory Day'\n }\n },\n '06-24': {\n name: {\n et: 'jaanipäev',\n en: 'Midsummer Day'\n }\n },\n '08-20': {\n name: {\n et: 'taasiseseisvumispäev',\n en: 'Day of Restoration of Independence'\n }\n },\n '08-23': {\n name: {\n et: 'kommunismi ja natsismi ohvrite mälestuspäev',\n en: 'European Day of Remembrance for Victims of Stalinism and Nazism'\n },\n type: 'observance'\n },\n '2nd sunday in September': {\n name: {\n et: 'vanavanemate päev',\n en: 'Grandparents Day'\n },\n type: 'observance'\n },\n '09-22': {\n name: {\n et: 'vastupanuvõitluse päev',\n en: 'Resistance Fighting Day'\n },\n type: 'observance'\n },\n '11-02': {\n _name: '11-02',\n type: 'observance'\n },\n '2nd sunday in November': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n '11-16': {\n name: {\n et: 'taassünni päev',\n en: 'Day of Declaration of Sovereignty'\n },\n type: 'observance'\n },\n '12-24': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n EG: {\n names: {\n ar: 'جمهورية مصر العربية',\n en: 'Egypt'\n },\n langs: [\n 'ar',\n 'en'\n ],\n zones: [\n 'Africa/Cairo'\n ],\n dayoff: 'saturday',\n days: {\n '01-25 since 2011': {\n name: {\n ar: 'عيد ثورة 25 يناير',\n en: 'Revolution Day 2011'\n }\n },\n '01-25': {\n name: {\n ar: 'عيد الشرطة',\n en: 'National Police Day'\n }\n },\n '04-25': {\n name: {\n ar: 'عيد تحرير سيناء',\n en: 'Sinai Liberation Day'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '06-30': {\n name: {\n ar: 'عيد ثورة 30 يونيو',\n en: '30 June Day'\n }\n },\n '07-23': {\n _name: 'Revolution Day'\n },\n '10-06': {\n name: {\n ar: 'عيد القوات المسلحة',\n en: 'Armed Forces Day'\n }\n },\n 'orthodox 1': {\n name: {\n ar: 'شم النسيم',\n en: 'Sham El Nessim'\n }\n },\n 'julian 12-25': {\n _name: '12-25'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal P3D': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah P4D': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n EH: {\n names: {\n ar: 'الجمهورية العربية الصحراوية الديمقراطية',\n en: 'Western Sahara'\n },\n langs: [],\n zones: [\n 'Africa/El_Aaiun'\n ],\n dayoff: '',\n days: {\n '02-27': {\n _name: 'Independence Day'\n },\n '03-08': {\n name: {\n en: 'First Martyr'\n }\n },\n '05-10': {\n name: {\n en: 'May 20 Revolution'\n }\n },\n '06-09': {\n name: {\n en: 'Day of the Martyrs'\n }\n },\n '06-17': {\n name: {\n en: 'Day of National Unity'\n }\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal P2D': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah P2D': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n ER: {\n names: {\n en: 'Eritrea'\n },\n langs: [\n 'ti',\n 'en'\n ],\n zones: [\n 'Africa/Nairobi'\n ],\n dayoff: '',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'julian 12-25': {\n _name: 'julian 12-25'\n },\n 'julian 01-06': {\n _name: '01-06'\n },\n '02-10': {\n name: {\n ti: 'ፈንቅል',\n en: 'Fenkil Day'\n }\n },\n '03-08': {\n _name: '03-08'\n },\n 'orthodox -2': {\n _name: 'orthodox -2'\n },\n orthodox: {\n _name: 'orthodox'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-24': {\n _name: 'Independence Day'\n },\n '06-20': {\n name: {\n en: \"Martyrs' Day\",\n ti: 'መዓልቲ ስውኣት'\n }\n },\n '09-01': {\n _name: 'Revolution Day'\n },\n '09-11 in non-leap years': {\n name: {\n en: 'Geez New Year',\n ti: 'ግዕዝ አዲስ ዓመት'\n }\n },\n '09-12 in leap years': {\n name: {\n en: 'Geez New Year',\n ti: 'ግዕዝ አዲስ ዓመት'\n }\n },\n '09-27 in non-leap years': {\n name: {\n en: 'Meskel'\n }\n },\n '09-28 in leap years': {\n name: {\n en: 'Meskel'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n ES: {\n names: {\n es: 'España',\n ca: 'Espanya',\n en: 'Spain'\n },\n langs: [\n 'es'\n ],\n zones: [\n 'Europe/Madrid',\n 'Africa/Ceuta',\n 'Atlantic/Canary'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'substitutes 01-01 if sunday then next monday': {\n type: 'observance',\n substitute: true,\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06'\n },\n 'substitutes 01-06 if sunday then next monday': {\n type: 'observance',\n substitute: true,\n _name: '01-06'\n },\n '03-19': {\n _name: '03-19',\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '05-01': {\n _name: '05-01'\n },\n '1st sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n '07-25': {\n name: {\n es: 'Santiago Apostol'\n },\n type: 'observance',\n note: 'regional'\n },\n '08-15': {\n _name: '08-15'\n },\n '10-12': {\n name: {\n es: 'Fiesta Nacional de España'\n }\n },\n 'substitutes 10-12 if sunday then next monday': {\n substitute: true,\n type: 'observance',\n name: {\n es: 'Fiesta Nacional de España'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n 'substitutes 11-01 if sunday then next monday': {\n substitute: true,\n type: 'observance',\n _name: '11-01'\n },\n '12-06': {\n name: {\n es: 'Día de la Constitución Española'\n }\n },\n 'substitutes 12-06 if sunday then next monday': {\n type: 'observance',\n substitute: true,\n name: {\n es: 'Día de la Constitución Española'\n }\n },\n '12-08': {\n _name: '12-08'\n },\n 'substitutes 12-08 if sunday then next monday': {\n type: 'observance',\n substitute: true,\n _name: '12-08'\n },\n '12-25': {\n _name: '12-25'\n },\n 'substitutes 12-25 if sunday then next monday': {\n substitute: true,\n _name: '12-25'\n }\n },\n states: {\n AN: {\n name: 'Andalucía',\n days: {\n '02-28': {\n name: {\n es: 'Día de Andalucía'\n }\n },\n 'substitutes 02-28 if Sunday then next Monday': {\n substitute: true,\n name: {\n es: 'Día de Andalucía'\n }\n },\n 'substitutes 05-01 if Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n 'substitutes 08-15 if Sunday then next Monday': {\n substitute: true,\n _name: '08-15'\n },\n 'easter -3': {\n _name: 'easter -3'\n }\n }\n },\n AR: {\n name: 'Aragón',\n days: {\n '04-23': {\n name: {\n es: 'Día de Aragón'\n }\n },\n 'substitutes 04-23 if Sunday then next Monday': {\n substitute: true,\n name: {\n es: 'Día de Aragón'\n }\n },\n 'substitutes 05-01 if Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n 'substitutes 08-15 if Sunday then next Monday': {\n substitute: true,\n _name: '08-15'\n }\n }\n },\n AS: {\n name: 'Asturias',\n days: {\n 'substitutes 05-01 if Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n 'substitutes 08-15 if Sunday then next Monday': {\n substitute: true,\n _name: '08-15'\n },\n '09-08': {\n name: 'Día de Asturias'\n },\n 'substitutes 09-08 if Sunday then next Monday': {\n substitute: true,\n name: 'Día de Asturias'\n }\n }\n },\n CB: {\n name: 'Cantabria',\n days: {\n '06-28': {\n name: 'Día de las Instituciones de Cantabria'\n },\n 'substitutes 06-28 if Sunday then next Monday': {\n name: 'Día de las Instituciones de Cantabria'\n },\n '09-15': {\n name: 'La Bien Aparecida'\n },\n 'substitutes 09-15 if Sunday then next Monday': {\n name: 'La Bien Aparecida'\n }\n }\n },\n CE: {\n name: 'Ciudad de Ceuta',\n days: {\n '08-05': {\n name: 'Nuestra Señora de África'\n },\n 'substitutes 08-05 if Sunday then next Monday': {\n substitute: true,\n name: 'Nuestra Señora de África'\n },\n '09-02': {\n name: 'Día de Ceuta'\n },\n 'substitutes 09-02 if Sunday then next Monday': {\n substitute: true,\n name: 'Día de Ceuta'\n },\n '9 Dhu al-Hijjah': {\n _name: '9 Dhu al-Hijjah'\n }\n }\n },\n CL: {\n names: {\n es: 'Castilla y León',\n en: 'Castile and León'\n },\n days: {\n '04-23': {\n name: 'Fiesta de Castilla y León'\n },\n 'substitutes 04-23 if Sunday then next Monday': {\n substitute: true,\n name: 'Fiesta de Castilla y León'\n },\n 'substitutes 05-01 if Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n 'substitutes 08-15 if Sunday then next Monday': {\n substitute: true,\n _name: '08-15'\n }\n }\n },\n CM: {\n name: 'Castile-La Mancha',\n days: {\n '05-31 since 2020': {\n name: 'Día de Castilla-La Mancha'\n },\n 'substitutes 05-31 if Sunday then next Monday since 2020': {\n substitute: true,\n name: 'Día de Castilla-La Mancha'\n },\n 'easter 60': {\n _name: 'easter 60'\n }\n }\n },\n CN: {\n names: {\n es: 'Islas Canarias',\n en: 'Canary Islands'\n },\n zones: [\n 'Atlantic/Canary'\n ],\n dayoff: 'sunday',\n _days: 'IC',\n regions: {\n EH: {\n names: {\n es: 'El Hierro'\n },\n _days: [\n 'IC',\n 'regions',\n 'EH'\n ]\n },\n FU: {\n names: {\n es: 'Fuerteventura'\n },\n _days: [\n 'IC',\n 'regions',\n 'FU'\n ]\n },\n GC: {\n names: {\n es: 'Gran Canaria'\n },\n _days: [\n 'IC',\n 'regions',\n 'GC'\n ]\n },\n LG: {\n names: {\n es: 'La Gomera'\n },\n _days: [\n 'IC',\n 'regions',\n 'LG'\n ]\n },\n LP: {\n names: {\n es: 'La Palma'\n },\n _days: [\n 'IC',\n 'regions',\n 'LP'\n ]\n },\n LA: {\n names: {\n es: 'Lanzarote'\n },\n _days: [\n 'IC',\n 'regions',\n 'LA'\n ]\n },\n TE: {\n names: {\n es: 'Tenerife'\n },\n _days: [\n 'IC',\n 'regions',\n 'TE'\n ]\n }\n }\n },\n CT: {\n names: {\n ca: 'Catalunya',\n es: 'Cataluña',\n en: 'Catalonia'\n },\n days: {\n '09-11': {\n name: {\n ca: 'Diada de Catalunya',\n es: 'Dia de Cataluña'\n }\n },\n '06-24': {\n name: {\n ca: 'Sant Joan',\n es: 'San Juan'\n }\n },\n 'easter -3': {\n _name: 'easter -3',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n 'substitutes 05-01 if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n '09-24 if sunday then next monday': {\n name: {\n es: 'Mare de Déu de la Mercè'\n }\n },\n '12-26': {\n name: {\n ca: 'Sant Esteve',\n es: 'San Esteban'\n },\n type: 'observance'\n }\n }\n },\n EX: {\n name: 'Extremadura',\n days: {\n 'substitutes 05-01 if Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n '09-08': {\n name: 'Día de Extremadura'\n },\n 'substitutes 09-08 if Sunday then next Monday': {\n substitute: true,\n name: 'Día de Extremadura'\n }\n }\n },\n GA: {\n name: 'Galicia',\n days: {\n '05-17': {\n name: 'Día de las Letras Gallegas'\n },\n 'substitutes 05-17 if Sunday then next Monday': {\n substitute: true,\n name: 'Día de las Letras Gallegas'\n },\n '07-25': {\n name: 'Día Nacional de Galicia'\n },\n 'substitutes 07-25 if Sunday then next Monday': {\n substitute: true,\n name: 'Día Nacional de Galicia'\n }\n }\n },\n IB: {\n names: {\n es: 'Illes Balears',\n en: 'Balearic Islands'\n },\n days: {\n '03-01': {\n name: {\n es: 'Día de les Illes Balears'\n }\n },\n 'substitutes 03-01 if Sunday then next Monday': {\n substitute: true,\n name: {\n es: 'Día de les Illes Balears'\n }\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '12-26': {\n name: {\n es: 'Sant Esteve'\n },\n type: 'observance'\n }\n }\n },\n MC: {\n name: 'Murcia Region',\n days: {\n 'substitutes 05-01 if Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n }\n }\n },\n MD: {\n name: 'Comunidad de Madrid',\n days: {\n '05-02 if Sunday then next Monday': {\n name: {\n es: 'Día de la Comunidad de Madrid'\n }\n },\n 'substitutes 05-02 if Sunday then next Monday': {\n substitute: true,\n name: {\n es: 'Día de la Comunidad de Madrid'\n }\n },\n '05-16': {\n name: {\n es: 'San Isidro Labrador'\n },\n type: 'observance'\n },\n '07-25': {\n name: 'Santiago Apóstol'\n },\n 'substitutes 07-25 if Sunday then next Monday': {\n substitute: true,\n name: 'Santiago Apóstol'\n },\n '11-09 if sunday then next monday': {\n name: {\n es: 'Nuestra Señora de la Almudena'\n },\n type: 'observance'\n }\n }\n },\n ML: {\n name: 'Ciudad de Melilla',\n days: {\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n NC: {\n names: {\n es: 'Comunidad Foral de Navarra',\n en: 'Navarra Chartered Community'\n },\n days: {\n 'easter 1': {\n _name: 'easter 1'\n },\n '07-25': {\n name: 'Santiago Apóstol'\n },\n 'substitutes 07-25 if Sunday then next Monday': {\n substitute: true,\n name: 'Santiago Apóstol'\n }\n }\n },\n PV: {\n names: {\n es: 'País Vasco',\n en: 'Basque Country'\n },\n days: {\n 'easter 1': {\n _name: 'easter 1'\n },\n '07-25': {\n name: 'Santiago Apóstol'\n },\n 'substitutes 07-25 if Sunday then next Monday': {\n substitute: true,\n name: 'Santiago Apóstol'\n },\n '2022-09-06': {\n name: 'V Centenario Vuelta al Mundo'\n }\n }\n },\n RI: {\n name: 'La Rioja',\n days: {\n 'easter 1': {\n _name: 'easter 1'\n }\n }\n },\n VC: {\n names: {\n es: 'Comunitat Valenciana',\n en: 'Valencian Community'\n },\n days: {\n '03-19': {\n _name: '03-19'\n },\n 'easter 1': {\n _name: 'easter 1'\n }\n }\n }\n }\n },\n ET: {\n names: {\n am: 'ኢትዮጵያ',\n en: 'Ethiopia'\n },\n dayoff: 'sunday',\n langs: [\n 'am',\n 'en'\n ],\n zones: [\n 'Africa/Nairobi'\n ],\n days: {\n '01-06 in non-leap years': {\n _name: '12-25'\n },\n '01-07 in leap years': {\n _name: '12-25'\n },\n '01-19': {\n _name: '01-06'\n },\n '03-02': {\n name: {\n am: 'የዓድዋ ድል በዓል',\n en: 'Victory at Adwa Day'\n }\n },\n '03-28': {\n name: {\n am: 'የቀይ ሽብር መታሰቢያ ቀን',\n en: 'Day of Lament'\n }\n },\n 'orthodox -2': {\n _name: 'easter -2'\n },\n orthodox: {\n _name: 'easter'\n },\n '05-28': {\n name: {\n am: 'ደርግ የወደቀበት ቀን',\n en: 'Derg Downfall Day'\n }\n },\n '09-11 in non-leap years': {\n _name: '01-01'\n },\n '09-12 in leap years': {\n _name: '01-01'\n },\n '09-27 in non-leap years': {\n name: {\n am: 'ብርሐነ-መስቀል',\n en: 'Finding of the True Cross'\n }\n },\n '09-28 in leap years': {\n name: {\n am: 'ብርሐነ-መስቀል',\n en: 'Finding of the True Cross'\n }\n },\n '1 Ramadan': {\n _name: '1 Ramadan'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n FI: {\n names: {\n fi: 'Suomi',\n en: 'Finland'\n },\n dayoff: 'sunday',\n langs: [\n 'fi'\n ],\n zones: [\n 'Europe/Helsinki'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'friday after 06-19': {\n name: {\n fi: 'Juhannusaatto',\n en: 'Midsummer Eve',\n sv: 'Midsommarafton'\n },\n type: 'bank'\n },\n 'saturday after 06-20': {\n name: {\n fi: 'Juhannuspäivä',\n en: 'Midsummer Day',\n sv: 'Midsommardagen'\n }\n },\n 'saturday after 10-31': {\n _name: '11-01'\n },\n '2nd sunday in November': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n '12-06': {\n _name: 'Independence Day'\n },\n '12-24': {\n _name: '12-24',\n type: 'bank'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31': {\n _name: '12-31',\n type: 'bank'\n }\n }\n },\n FJ: {\n names: {\n fj: 'Matanitu Tugalala o Viti',\n en: 'Fiji'\n },\n langs: [\n 'fj',\n 'en'\n ],\n zones: [\n 'Pacific/Fiji'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter -1': {\n _name: 'easter -1'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '09-07': {\n _name: 'Constitution Day'\n },\n '10-10 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Fiji Day'\n }\n },\n '12-25 if Sunday then next Monday': {\n _name: '12-25'\n },\n '12-26 if Sunday then next Monday if Monday then next Tuesday': {\n _name: '12-26'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '2014-10-22': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2015-11-10': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2016-10-29': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2017-10-19': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2018-11-07': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2019-10-27': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2019-10-28': {\n substitute: true,\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2020-11-14': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2020-11-16': {\n substitute: true,\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2021-11-04': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2022-10-24': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2023-11-12': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2023-11-13': {\n substitute: true,\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2024-11-01': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n },\n '2025-10-21': {\n _name: 'Deepavali',\n name: {\n en: 'Diwali'\n }\n }\n }\n },\n FO: {\n names: {\n fo: 'Føroyar',\n da: 'Færøerne',\n en: 'Faroe Islands'\n },\n langs: [\n 'fo',\n 'da'\n ],\n zones: [\n 'Atlantic/Faroe'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-24': {\n name: {\n fo: 'Flaggdagur',\n da: 'Flagdag',\n en: 'Flag Day'\n }\n },\n 'easter 26': {\n name: {\n fo: 'Dýri biðidagur',\n en: 'Great Prayer Day'\n }\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '06-05 12:00 if sunday then 00:00': {\n _name: 'Constitution Day'\n },\n '07-28 12:00 if sunday then 00:00': {\n name: {\n da: 'Sankt Olavsaften',\n en: \"St.Olav's Eve\"\n },\n note: \"half-day holiday for some workers' unions\",\n type: 'observance'\n },\n '07-29': {\n name: {\n fo: 'Ólavsøka',\n da: 'Sankt Olavs Dag',\n en: \"St.Olav's Day\"\n },\n note: \"full holiday for most workers' unions\",\n type: 'observance'\n },\n '12-24': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31 12:00 if sunday then 00:00': {\n _name: '12-31'\n }\n }\n },\n FR: {\n names: {\n fr: 'France',\n en: 'France'\n },\n dayoff: 'sunday',\n zones: [\n 'Europe/Paris'\n ],\n langs: [\n 'fr'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-08': {\n name: {\n fr: 'Fête de la Victoire 1945',\n en: 'Victory Day'\n }\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n 'sunday before 06-01': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '07-14': {\n name: {\n fr: 'Fête Nationale de la France',\n en: 'Bastille Day'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '11-11': {\n name: {\n fr: 'Armistice 1918',\n en: 'Armistice Day'\n }\n },\n '12-25': {\n _name: '12-25'\n }\n },\n states: {\n 57: {\n name: 'Département Moselle',\n days: {\n 'easter -2': {\n _name: 'easter -2'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n 67: {\n name: 'Département Bas-Rhin',\n days: {\n 'easter -2': {\n _name: 'easter -2'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n 68: {\n name: 'Département Haut-Rhin',\n days: {\n 'easter -2': {\n _name: 'easter -2'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n YT: {\n name: \"Département et région d'outre-mer Mayotte\",\n zones: [\n 'Africa/Nairobi'\n ],\n _days: 'YT'\n },\n MQ: {\n name: \"Département et région d'outre-mer Martinique\",\n zones: [\n 'America/Martinique'\n ],\n _days: 'MQ'\n },\n GP: {\n name: \"Département et région d'outre-mer Guadeloupe\",\n zones: [\n 'America/Port_of_Spain'\n ],\n _days: 'GP'\n },\n GF: {\n name: \"Département et région d'outre-mer Guyane\",\n zones: [\n 'America/Cayenne'\n ],\n _days: 'GF'\n },\n RE: {\n name: \"Département et région d'outre-mer La Réunion\",\n zones: [\n 'Indian/Reunion'\n ],\n _days: 'RE'\n },\n MF: {\n name: \"Département et région d'outre-mer Saint Martin\",\n zones: [\n 'America/Marigot'\n ],\n _days: 'MF'\n },\n BL: {\n name: \"Département et région d'outre-mer Saint Barthélemy\",\n zones: [\n 'America/St_Barthelemy'\n ],\n _days: 'BL'\n }\n }\n },\n GA: {\n names: {\n fr: 'Gabon',\n en: 'Gabon'\n },\n dayoff: 'sunday',\n langs: [\n 'fr'\n ],\n zones: [\n 'Africa/Lagos'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-17': {\n name: {\n fr: 'Journée des droits de la femme',\n en: \"Women's Day\"\n }\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '08-15': {\n _name: '08-15'\n },\n '08-16 P2D': {\n _name: 'Independence Day'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n GB: {\n names: {\n en: 'United Kingdom'\n },\n dayoff: 'sunday',\n zones: [\n 'Europe/London'\n ],\n langs: [\n 'en'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'substitutes 01-01 if sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n 'substitutes 01-01 if saturday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n 'easter -21': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '1st monday in May': {\n name: {\n en: 'Early May bank holiday'\n },\n disable: [\n '2020-05-04'\n ]\n },\n '1st monday before 06-01': {\n name: {\n en: 'Spring bank holiday'\n },\n disable: [\n '2022-05-30'\n ],\n enable: [\n '2022-06-02'\n ]\n },\n '12-25': {\n _name: '12-25'\n },\n 'substitutes 12-25 if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n 'substitutes 12-26 if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '12-26'\n },\n '2012-06-05': {\n name: {\n en: 'Queen’s Diamond Jubilee'\n }\n },\n '2020-05-08': {\n name: {\n en: 'Early May bank holiday (VE day)'\n }\n },\n '2022-06-03': {\n name: {\n en: 'Queen’s Platinum Jubilee'\n }\n },\n '2022-09-19': {\n name: {\n en: \"Queen Elizabeth's Funeral Day\"\n }\n },\n '2023-05-08': {\n name: {\n en: \"King Charles III's Coronation\"\n }\n },\n '3rd sunday in June': {\n _name: 'Fathers Day',\n type: 'observance'\n }\n },\n states: {\n ALD: {\n name: 'Alderney',\n zones: [\n 'Europe/Guernsey'\n ],\n days: {\n '12-15': {\n name: {\n en: 'Homecoming Day'\n }\n }\n }\n },\n ENG: {\n name: 'England',\n days: {\n '1st monday before 09-01': {\n name: {\n en: 'Summer bank holiday'\n }\n }\n }\n },\n NIR: {\n name: 'Northern Ireland',\n zones: [\n 'Europe/Belfast'\n ],\n days: {\n '03-17': {\n name: {\n en: \"St Patrick's Day\"\n }\n },\n 'substitutes 03-17 if saturday then next monday': {\n substitute: true,\n name: {\n en: \"St Patrick's Day\"\n }\n },\n 'substitutes 03-17 if sunday then next monday': {\n substitute: true,\n name: {\n en: \"St Patrick's Day\"\n }\n },\n '07-12': {\n name: {\n en: 'Battle of the Boyne, Orangemen’s Day'\n }\n },\n 'substitutes 07-12 if saturday then next monday': {\n substitute: true,\n name: {\n en: 'Battle of the Boyne'\n }\n },\n 'substitutes 07-12 if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Battle of the Boyne'\n }\n },\n '1st monday before 09-01': {\n name: {\n en: 'Summer bank holiday'\n }\n }\n }\n },\n SCT: {\n name: 'Scotland',\n days: {\n 'substitutes 01-01 if sunday then next monday': false,\n 'substitutes 01-01 if saturday then next monday': false,\n 'substitutes 01-01 if saturday then next tuesday': {\n substitute: true,\n _name: '01-01'\n },\n 'substitutes 01-01 if sunday then next tuesday': {\n substitute: true,\n _name: '01-01'\n },\n '01-02': {\n name: {\n en: 'Januar 2nd'\n }\n },\n 'substitutes 01-02 if saturday then next monday': {\n substitute: true,\n name: {\n en: 'Januar 2nd'\n }\n },\n 'substitutes 01-02 if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Januar 2nd'\n }\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '1st monday in August': {\n name: {\n en: 'Summer bank holiday'\n }\n },\n '11-30': {\n name: {\n en: 'St Andrew’s Day'\n }\n }\n }\n },\n WLS: {\n name: 'Wales',\n days: {\n '1st monday before 09-01': {\n name: {\n en: 'Summer bank holiday'\n }\n }\n },\n regions: {}\n }\n }\n },\n GD: {\n names: {\n en: 'Grenada'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-07': {\n _name: 'Independence Day'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-24 P3D': {\n name: {\n en: 'Carriacou Maroon and String Band Music Festival'\n },\n type: 'observance'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '1st monday in August': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '2nd monday in August': {\n name: {\n en: 'Carnival Monday'\n }\n },\n 'tuesday after 2nd monday in August': {\n name: {\n en: 'Carnival Tuesday'\n }\n },\n '09-01': {\n name: {\n en: 'Kirani Day'\n },\n type: 'observance'\n },\n '10-15 P5D': {\n name: {\n en: 'Aunty Tek Spice Word Festival'\n },\n type: 'observance'\n },\n '10-25': {\n name: {\n en: 'Thanksgiving Day'\n }\n },\n '12-04 P3D': {\n name: {\n en: 'Camerhogne Folk Festival'\n },\n type: 'observance'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n GE: {\n names: {\n ge: 'საქართველო',\n en: 'Georgia'\n },\n langs: [\n 'ge'\n ],\n zones: [\n 'Asia/Tbilisi'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-02': {\n name: {\n ge: 'ბედობა',\n en: 'Bedoba'\n }\n },\n '01-07': {\n name: {\n ge: 'შობა',\n en: 'Orthodox Christmas'\n }\n },\n '01-19': {\n name: {\n ge: 'ნათლისღება',\n en: 'Orthodox Epiphany'\n }\n },\n '03-03': {\n name: {\n ge: 'დედის დღე',\n en: \"Mother's Day\"\n }\n },\n '03-08': {\n _name: '03-08'\n },\n '04-09': {\n name: {\n ge: 'ეროვნული ერთიანობის დღე',\n en: 'National Unity Day'\n }\n },\n 'orthodox -2': {\n _name: 'easter -2'\n },\n 'orthodox -1': {\n _name: 'easter -1'\n },\n orthodox: {\n _name: 'easter'\n },\n 'orthodox 1': {\n _name: 'easter 1'\n },\n '05-09': {\n name: {\n ge: 'ფაშიზმზე გამარჯვების დღე',\n en: 'Victory Day'\n }\n },\n '05-12': {\n name: {\n ge: 'წმინდა ანდრია პირველწოდებულის ხსენების დღე',\n en: 'Saint Andrew the First-Called Day'\n }\n },\n '05-26': {\n name: {\n ge: 'დამოუკიდებლობის დღე',\n en: 'Independence Day'\n }\n },\n '08-28': {\n name: {\n ge: 'მარიამობა',\n en: \"Saint Mary's Day\"\n }\n },\n '10-14': {\n name: {\n ge: 'სვეტიცხოვლობა',\n en: 'Svetitskhovloba'\n }\n },\n '11-23': {\n name: {\n ge: 'გიორგობა',\n en: \"Saint George's Day\"\n }\n }\n }\n },\n GF: {\n names: {\n fr: 'Guyane',\n en: 'French Guiana'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'America/Cayenne'\n ],\n dayoff: 'sunday',\n _days: 'FR',\n days: {\n '06-10': {\n _name: 'Abolition of Slavery'\n }\n }\n },\n GG: {\n names: {\n en: 'Guernsey'\n },\n dayoff: 'sunday',\n zones: [\n 'Europe/Guernsey'\n ],\n langs: [\n 'en'\n ],\n _days: [\n 'GB'\n ],\n days: {\n '05-09': {\n name: {\n en: 'Liberation Day'\n }\n }\n }\n },\n GH: {\n names: {\n en: 'Ghana'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Accra'\n ],\n dayoff: '',\n days: {\n '01-01 and if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: '01-01'\n },\n '01-07 since 2019': {\n _name: 'Constitution Day'\n },\n '03-06 and if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01 and if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n '08-04 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Founders Day'\n }\n },\n '09-21 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Kwame Nkrumah Memorial Day'\n }\n },\n '1st Friday in December since 1988': {\n name: {\n en: 'Farmers Day'\n }\n },\n '12-25 and if Saturday then next Monday if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if Saturday then next Monday if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-26'\n },\n '1 Shawwal and if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah and if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n GI: {\n names: {\n en: 'Gibraltar'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'Europe/Gibraltar'\n ],\n dayoff: 'sunday',\n _days: 'GB',\n days: {\n '2nd monday in March': {\n name: {\n en: 'Commonwealth Day'\n }\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '04-28': {\n name: {\n en: 'Workers Memorial Day'\n },\n disable: [\n '2015-04-28'\n ],\n enable: [\n '2015-04-27'\n ]\n },\n '05-01 if sunday, saturday then next monday': {\n substitute: true,\n name: {\n en: 'May Day'\n }\n },\n '1st monday in May': false,\n '2020-05-08': {\n name: {\n en: 'Victory in Europe Day (VE Day)'\n }\n },\n 'monday before 06-20': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n 'monday before September': {\n name: {\n en: 'Late Summer Bank Holiday'\n }\n },\n '09-10': {\n name: {\n en: 'Gibraltar National Day'\n },\n active: [\n {\n to: 2015\n }\n ]\n },\n '09-10 and if sunday, saturday then previous monday': {\n substitute: true,\n name: {\n en: 'Gibraltar National Day'\n },\n active: [\n {\n from: 2015\n }\n ]\n }\n }\n },\n GL: {\n names: {\n kl: 'Kalaallit Nunaat',\n da: 'Grønland',\n en: 'Greenland'\n },\n langs: [\n 'kl',\n 'da'\n ],\n zones: [\n 'America/Godthab',\n 'America/Danmarkshavn',\n 'America/Scoresbysund',\n 'America/Thule'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 26': {\n name: {\n kl: 'tussiarfissuaq',\n da: 'Store Bededag',\n en: 'Prayer Day'\n }\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '06-21': {\n name: {\n kl: 'ullortuneq',\n da: 'Nationaldag',\n en: 'National Day'\n }\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '12-24': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n GM: {\n names: {\n en: 'The Gambia'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Abidjan'\n ],\n dayoff: '',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-18': {\n _name: 'Independence Day'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-25': {\n name: {\n en: 'Africa Day'\n }\n },\n '07-22': {\n name: {\n en: 'Revolution Day'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '12-25': {\n _name: '12-25'\n },\n '10 Muharram': {\n _name: '10 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '23 Ramadan': {\n _name: '23 Ramadan'\n },\n '1 Shawwal': {\n _name: '1 Shawwal',\n name: {\n en: 'Korité'\n }\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah',\n name: {\n en: 'Tabaski'\n }\n }\n }\n },\n GN: {\n names: {\n fr: 'Guinée',\n en: 'Guinea'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'Africa/Abidjan'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-03': {\n name: {\n fr: 'Fête Nationale de la deuxième République',\n en: 'National Holiday'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '05-25': {\n name: {\n fr: \"Anniversaire de l'Organisation de l'unité africaine (OUA)\",\n en: 'Africa Day'\n }\n },\n '27 Ramadan': {\n _name: '27 Ramadan'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '08-15': {\n _name: '08-15'\n },\n '10-02': {\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n }\n }\n },\n GP: {\n names: {\n fr: 'Guadeloupe',\n en: 'Guadeloupe'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n dayoff: 'sunday',\n _days: 'FR',\n days: {\n 'easter 49': false,\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-27': {\n _name: 'Abolition of Slavery'\n },\n '07-21': {\n name: {\n fr: 'Jour de Victor Shoelcher',\n en: 'Victor Shoelcher Day'\n }\n }\n }\n },\n GQ: {\n names: {\n es: 'República de Guinea Ecuatorial',\n fr: 'République de Guinée équatoriale',\n pt: 'República da Guiné Equatorial',\n en: 'Republic of Equatorial Guinea'\n },\n dayoff: 'sunday',\n weekend: [\n 'saturday',\n 'sunday'\n ],\n langs: [\n 'es',\n 'fr',\n 'pt'\n ],\n zones: [\n 'Africa/Lagos'\n ],\n days: {\n '01-01 and if sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-01 and if sunday then next monday': {\n substitute: true,\n _name: '05-01'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '06-05 and if sunday then next monday': {\n substitute: true,\n name: {\n es: 'Natalicio de Teodoro Obiang',\n en: \"President's Day\"\n }\n },\n '08-03 and if sunday then next monday': {\n substitute: true,\n name: {\n es: 'Día del Golpe de Libertad',\n en: 'Armed Forces Day'\n }\n },\n '08-15 and if sunday then next monday': {\n substitute: true,\n _name: 'Constitution Day'\n },\n '10-12 and if sunday then next monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '12-08 and if sunday then next monday': {\n substitute: true,\n _name: '12-08'\n },\n '12-25 and if sunday then next monday': {\n substitute: true,\n _name: '12-25'\n }\n }\n },\n GR: {\n names: {\n el: 'Ελλάδα',\n en: 'Greece'\n },\n dayoff: 'sunday',\n zones: [\n 'Europe/Athens'\n ],\n langs: [\n 'el'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06'\n },\n 'orthodox -48': {\n name: {\n el: 'Καθαρά Δευτέρα',\n en: 'Ash Sunday'\n }\n },\n '03-25': {\n name: {\n el: 'Ευαγγελισμός, Εθνική Εορτή',\n en: 'Annunciation, Anniversary of 1821 Revolution'\n }\n },\n 'orthodox -2': {\n _name: 'easter -2'\n },\n orthodox: {\n _name: 'easter'\n },\n 'orthodox 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'orthodox 49': {\n _name: 'easter 49'\n },\n 'orthodox 50': {\n _name: 'easter 50'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '08-15': {\n _name: '08-15'\n },\n '10-28': {\n _name: 'National Holiday',\n name: {\n el: 'Επέτειος του Όχι'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n GT: {\n names: {\n es: 'Guatemala',\n en: 'Guatemala'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Guatemala'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter -1': {\n _name: 'easter -1'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '05-01': {\n _name: '05-01'\n },\n '06-30 if tuesday then previous monday if wednesday,thursday then next friday': {\n name: {\n es: 'Día de las Fuerzas Armadas',\n en: 'Army Day'\n }\n },\n '09-15': {\n _name: 'Independence Day'\n },\n '10-20': {\n _name: 'Revolution Day'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-24 12:00': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-31 12:00': {\n _name: '12-31'\n }\n }\n },\n GU: {\n names: {\n en: 'Guam'\n },\n dayoff: 'sunday',\n langs: [\n 'en-us',\n 'en'\n ],\n zones: [\n 'Pacific/Guam'\n ],\n _days: [\n 'US'\n ],\n days: {\n '3rd monday in February': false,\n '03-17': false,\n '1st monday in March': {\n name: {\n en: 'Guam History and Chamorro Heritage Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2',\n type: 'observance'\n },\n '07-21 if sunday then next monday': {\n name: {\n en: 'Liberation Day'\n }\n },\n '11-02': {\n _name: '11-02'\n },\n '12-08 if sunday then next monday': {\n name: {\n en: 'Our Lady of Camarin Day'\n }\n }\n }\n },\n GW: {\n names: {\n pt: 'Guiné-Bissau',\n en: 'Guinea-Bissau'\n },\n langs: [\n 'pt'\n ],\n zones: [\n 'Africa/Bissau'\n ],\n dayoff: '',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-20': {\n name: {\n pt: 'Dia dos heróis',\n en: 'Heroes Day'\n }\n },\n '03-08': {\n _name: '03-08'\n },\n '05-01': {\n _name: '05-01'\n },\n '08-03': {\n name: {\n pt: 'Pidjiguiti Day'\n }\n },\n '09-24': {\n _name: 'Independence Day'\n },\n '11-14': {\n name: {\n pt: 'Dia do Movimento de Reajustamento',\n en: 'Readjustment Movement Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n GY: {\n names: {\n en: 'Guyana'\n },\n coord: {\n lat: 6.8045,\n lng: -58.1553\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'America/Guyana'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-23': {\n name: {\n en: 'Republic Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-05': {\n name: {\n en: 'Arrival Day'\n }\n },\n '05-26': {\n _name: 'Independence Day'\n },\n 'monday after 07-01': {\n name: {\n en: 'CARICOM Day'\n }\n },\n '08-01': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal',\n name: {\n en: 'Youman Nabi'\n },\n note: 'tentative',\n disable: [\n '2016-12-11',\n '2015-12-23',\n '2013-01-24'\n ],\n enable: [\n '2016-12-12',\n '2015-12-24',\n '2013-01-23'\n ]\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah',\n name: {\n en: 'Eid Ul Adha'\n },\n note: 'tentative',\n disable: [\n '2015-09-23'\n ],\n enable: [\n '2015-09-24'\n ]\n },\n '2015-03-05': {\n name: {\n en: 'Phagwah'\n }\n },\n '2016-03-23': {\n name: {\n en: 'Phagwah'\n }\n },\n '2017-03-12': {\n name: {\n en: 'Phagwah'\n }\n },\n '2017-03-13': {\n substitute: true,\n name: {\n en: 'Phagwah'\n }\n },\n '2018-03-02': {\n name: {\n en: 'Phagwah'\n }\n },\n '2019-03-21': {\n name: {\n en: 'Phagwah'\n }\n },\n '2020-03-10': {\n name: {\n en: 'Phagwah'\n }\n },\n '2021-03-29': {\n name: {\n en: 'Phagwah'\n }\n },\n '2022-03-18': {\n name: {\n en: 'Phagwah'\n }\n },\n '2023-03-07': {\n name: {\n en: 'Phagwah'\n }\n },\n '2024-03-25': {\n name: {\n en: 'Phagwah'\n }\n },\n '2015-11-11': {\n name: {\n en: 'Deepavali'\n }\n },\n '2017-10-18': {\n name: {\n en: 'Deepavali'\n }\n },\n '2018-11-07': {\n name: {\n en: 'Deepavali'\n }\n },\n '2019-10-27': {\n name: {\n en: 'Deepavali'\n }\n },\n '2019-10-28': {\n substitute: true,\n name: {\n en: 'Deepavali'\n }\n },\n '2020-11-14': {\n name: {\n en: 'Deepavali'\n }\n },\n '2021-11-04': {\n name: {\n en: 'Deepavali'\n }\n },\n '2022-10-24': {\n name: {\n en: 'Deepavali'\n }\n },\n '2023-11-12': {\n name: {\n en: 'Deepavali'\n }\n },\n '2023-11-13': {\n substitute: true,\n name: {\n en: 'Deepavali'\n }\n },\n '2024-10-31': {\n name: {\n en: 'Deepavali'\n }\n }\n }\n },\n HK: {\n names: {\n zh: '香港',\n en: 'Hong Kong'\n },\n langs: [\n 'zh',\n 'en'\n ],\n zones: [\n 'Asia/Hong_Kong'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if Sunday then next Monday': {\n substitute: true,\n _name: '01-01',\n name: {\n zh: '一月一日'\n }\n },\n 'chinese 01-0-01 and if Saturday then next Tuesday': {\n name: {\n en: 'Lunar New Year',\n zh: '農曆年初一'\n }\n },\n 'chinese 01-0-02 and if Saturday then next Monday': {\n name: {\n en: 'The second day of the Lunar New Year',\n zh: '農曆年初二'\n }\n },\n 'chinese 01-0-03 and if Saturday then next Monday': {\n name: {\n en: 'The third day of the Lunar New Year',\n zh: '農曆年初三'\n }\n },\n 'chinese 5-01 solarterm and if Sunday then next Monday': {\n name: {\n en: 'Qingming Festival',\n zh: '清明節'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter -1': {\n _name: 'easter -1'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1',\n disable: [\n '2021-04-05'\n ],\n enable: [\n '2021-04-06'\n ]\n },\n '05-01 and if Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n 'chinese 04-0-08 and if Sunday then next Monday': {\n name: {\n en: 'Birthday of the Buddha',\n zh: '佛誕'\n }\n },\n 'chinese 05-0-05': {\n name: {\n en: 'Dragon Boat Festival',\n zh: '端午节'\n }\n },\n '07-01 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Hong Kong Special Administrative Region Establishment Day',\n zh: '香港特別行政區成立紀念日'\n }\n },\n 'chinese 08-0-16 and if Sunday then next Monday if is public holiday then next day omit Saturday, Sunday': {\n substitute: true,\n name: {\n en: 'The day following the Chinese Mid-Autumn Festival',\n zh: '中秋節翌日'\n }\n },\n '10-01 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'National Day',\n zh: '國慶日'\n }\n },\n 'chinese 09-0-09 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Chung Yeung Festival',\n zh: '重阳节'\n }\n },\n '12-25 and if Sunday then next Monday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if Sunday then next Monday if Monday then next Tuesday': {\n substitute: true,\n name: {\n en: 'The first weekday after Christmas Day',\n zh: '圣诞节后的第一个工作日'\n }\n }\n }\n },\n HN: {\n names: {\n es: 'Honduras',\n en: 'Honduras'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Tegucigalpa'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '03-19': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '04-14': {\n name: {\n es: 'Día de las Américas'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '2nd monday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '06-11': {\n name: {\n en: \"Pupil's Day\",\n es: 'Día del Estudiante'\n },\n type: 'observance'\n },\n '09-10': {\n name: {\n en: \"Children's Day\",\n es: 'Día del Niño'\n },\n type: 'observance'\n },\n '09-15': {\n _name: 'Independence Day'\n },\n '09-17': {\n name: {\n en: \"Teacher's Day\",\n es: 'Día del Maestro'\n },\n type: 'observance'\n },\n '10-03': {\n name: {\n en: \"Soldier's Day\",\n es: 'Día del Soldado'\n }\n },\n '10-12': {\n name: {\n es: 'Día de la Raza',\n en: 'Columbus Day'\n }\n },\n '10-21': {\n name: {\n es: 'Día de las Fuerzas Armadas',\n en: 'Armed forces Day'\n }\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n HR: {\n names: {\n hr: 'Hrvatska',\n en: 'Croatia'\n },\n langs: [\n 'hr'\n ],\n zones: [\n 'Europe/Belgrade'\n ],\n days: {\n '01-01': {\n _name: '01-01',\n type: 'public'\n },\n '01-06': {\n _name: '01-06',\n type: 'public'\n },\n 'easter -47': {\n _name: 'easter -47',\n type: 'observance'\n },\n easter: {\n _name: 'easter',\n type: 'public'\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'public'\n },\n 'easter 60': {\n _name: 'easter 60',\n type: 'public'\n },\n '03-08': {\n _name: '03-08',\n type: 'observance'\n },\n '05-01': {\n _name: '05-01',\n type: 'public'\n },\n '05-30': {\n name: {\n hr: 'Dan državnosti',\n en: 'National Day'\n },\n type: 'public',\n active: [\n {\n from: '2020-01-01'\n }\n ]\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '06-22': {\n name: {\n hr: 'Dan antifašističke borbe',\n en: 'Anti-Fascist Struggle Day'\n },\n type: 'public'\n },\n '06-25 #1': {\n name: {\n hr: 'Dan državnosti',\n en: 'Statehood Day'\n },\n type: 'public',\n active: [\n {\n to: '2020-01-01'\n }\n ]\n },\n '06-25': {\n name: {\n hr: 'Dan neovisnosti',\n en: 'Independence Day'\n },\n type: 'observance',\n active: [\n {\n from: '2020-01-01'\n }\n ]\n },\n '08-05': {\n name: {\n hr: 'Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja',\n en: 'Victory and Homeland Thanksgiving Day and the Day of Croatian defenders'\n },\n type: 'public'\n },\n '08-15': {\n _name: '08-15',\n type: 'public'\n },\n '10-08 #1': {\n name: {\n hr: 'Dan neovisnosti',\n en: 'Independence Day'\n },\n type: 'public',\n active: [\n {\n to: '2020-01-01'\n }\n ]\n },\n '10-08': {\n name: {\n hr: 'Dan Hrvatskoga sabora',\n en: 'Day of the Croatian Parliament'\n },\n type: 'observence',\n active: [\n {\n from: '2020-01-01'\n }\n ]\n },\n '11-01': {\n _name: '11-01',\n type: 'public'\n },\n '11-18 #1': {\n name: {\n hr: 'Dan sjećanja na žrtvu Vukovara i Škabrnje',\n en: 'Remembrance Day'\n },\n type: 'observance',\n active: [\n {\n to: '2020-01-01'\n }\n ]\n },\n '11-18': {\n name: {\n hr: 'Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje',\n en: 'Remembrance Day'\n },\n type: 'public',\n active: [\n {\n from: '2020-01-01'\n }\n ]\n },\n '12-25': {\n _name: '12-25',\n type: 'public'\n },\n '12-26': {\n _name: '12-26',\n type: 'public'\n },\n orthodox: {\n _name: 'orthodox',\n type: 'optional',\n note: 'Orthodox believers (legally defined as Christians who follow the Julian Calender)'\n },\n 'orthodox 1': {\n _name: 'orthodox 1',\n type: 'optional',\n note: 'Orthodox believers (legally defined as Christians who follow the Julian Calender)'\n },\n 'julian 12-25': {\n _name: 'julian 12-25',\n type: 'optional',\n note: 'Orthodox believers (legally defined as Christians who follow the Julian Calender)'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah',\n type: 'optional',\n note: 'Muslim believers'\n },\n '1 Shawwal': {\n _name: '1 Shawwal',\n type: 'optional',\n note: 'Muslim believers'\n },\n '1 Tishrei': {\n _name: '10 Tishrei',\n type: 'optional',\n note: 'Jewish believers'\n },\n '10 Tishrei': {\n _name: '10 Tishrei',\n type: 'optional',\n note: 'Jewish believers'\n }\n },\n regions: {\n 17: {\n name: 'Split-Dalmatia',\n days: {\n '05-07': {\n name: {\n hr: 'Sveti Duje',\n en: 'Saint Domnius'\n },\n type: 'optional'\n }\n }\n },\n 19: {\n name: 'Dubrovnik-Neretva',\n days: {\n '02-03': {\n name: {\n hr: 'Sveti Vlaho',\n en: 'Saint Blaise'\n },\n type: 'optional'\n }\n }\n }\n }\n },\n HT: {\n names: {\n fr: 'Haïti',\n en: 'Haiti'\n },\n dayoff: 'sunday',\n langs: [\n 'fr'\n ],\n zones: [\n 'America/Port-au-Prince'\n ],\n days: {\n '01-01': {\n _name: 'Independence Day'\n },\n '01-02': {\n name: {\n fr: 'Jour des Aieux',\n en: 'Ancestry Day'\n }\n },\n '01-06': {\n _name: '01-06',\n name: {\n fr: 'Le Jour des Rois'\n },\n type: 'observance'\n },\n 'easter -48 14:00': {\n name: {\n fr: 'Lundi Gras',\n en: 'Lundi Gras'\n }\n },\n 'easter -47': {\n name: {\n fr: 'Mardi Gras',\n en: 'Mardi Gras'\n }\n },\n 'easter -46': {\n _name: 'easter -46',\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-18': {\n name: {\n fr: \"Jour du Drapeau et de l'Université\",\n en: \"Flag and Universities' Day\"\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '10-17': {\n name: {\n fr: 'Anniversaire de la mort de Dessalines',\n en: 'Anniversary of the death of Dessalines'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n '11-02': {\n _name: '11-02'\n },\n '11-18': {\n name: {\n fr: 'Vertières',\n en: 'Battle of Vertières Day'\n }\n },\n '12-05': {\n name: {\n fr: \"Découverte d'Haïti\",\n en: 'Discovery Day'\n },\n type: 'observance'\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n HU: {\n names: {\n hu: 'Magyarország',\n en: 'Hungary'\n },\n dayoff: 'sunday',\n langs: [\n 'hu'\n ],\n zones: [\n 'Europe/Budapest'\n ],\n days: {\n '01-01': {\n _name: '01-01',\n type: 'public'\n },\n '02-01': {\n name: {\n hu: 'A köztársaság emléknapja',\n en: 'Memorial Day of the Republic'\n },\n type: 'observance'\n },\n '02-25': {\n name: {\n hu: 'A kommunista diktatúrák áldozatainak emléknapja',\n en: 'Memorial Day for the Victims of the Communist Dictatorships'\n },\n type: 'observance'\n },\n '03-08': {\n _name: '03-08',\n type: 'observance'\n },\n '03-15': {\n name: {\n hu: '1948-as forradalom',\n en: 'National Day'\n },\n type: 'public'\n },\n '04-16': {\n name: {\n en: 'Memorial Day for the Victims of the Holocaust',\n hu: 'A holokauszt áldozatainak emléknapja'\n },\n type: 'observance'\n },\n easter: {\n _name: 'easter',\n type: 'public'\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'public'\n },\n '05-01': {\n _name: '05-01',\n type: 'public'\n },\n '1st sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '05-21': {\n name: {\n en: 'National Defense Day',\n hu: 'Honvédelmi nap'\n },\n type: 'observance'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'public'\n },\n 'easter 50': {\n _name: 'easter 50',\n type: 'public'\n },\n '06-04': {\n name: {\n en: 'Day of National Unity',\n hu: 'A nemzeti összetartozás napja'\n },\n type: 'observance'\n },\n '06-19': {\n name: {\n en: 'Day of the Independent Hungary',\n hu: 'A független Magyarország napja'\n },\n type: 'observance'\n },\n '08-20': {\n name: {\n hu: 'Szent István ünnepe',\n en: \"Saint Stephen's Day\"\n },\n type: 'public'\n },\n '10-06': {\n name: {\n en: 'Memorial Day for the Martyrs of Arad',\n hu: 'Az aradi vértanúk emléknapja'\n },\n type: 'observance'\n },\n '10-23': {\n name: {\n hu: '1956-os forradalom',\n en: 'National Day'\n },\n type: 'public'\n },\n '11-01': {\n _name: '11-01',\n type: 'public'\n },\n '12-06': {\n _name: '12-06',\n type: 'observance'\n },\n '12-24': {\n _name: '12-24',\n type: 'optional'\n },\n '12-25': {\n _name: '12-25',\n type: 'public'\n },\n '12-26': {\n _name: '12-26',\n type: 'public'\n },\n '12-31': {\n _name: '12-31',\n type: 'observance'\n }\n }\n },\n IC: {\n names: {\n es: 'Islas Canarias',\n en: 'Canary Islands'\n },\n langs: [\n 'es'\n ],\n zones: [\n 'Atlantic/Canary'\n ],\n dayoff: 'sunday',\n _days: 'ES',\n days: {\n '05-30': {\n name: {\n es: 'Día de Canarias',\n en: 'Canary Islands Day'\n }\n },\n 'substitutes 05-30 if Sunday then next Monday': {\n substitute: true,\n name: {\n es: 'Día de Canarias',\n en: 'Canary Islands Day'\n }\n },\n 'substitutes 08-15 if Sunday then next Monday': {\n substitute: true,\n _name: '08-15'\n }\n },\n regions: {\n EH: {\n names: {\n es: 'El Hierro'\n },\n days: {\n '09-24': {\n name: {\n es: 'Nuestra Señora de los Reyes'\n }\n }\n }\n },\n FU: {\n names: {\n es: 'Fuerteventura'\n },\n days: {\n '09-18': {\n name: {\n es: 'Nuestra Señora de la Peña'\n }\n }\n }\n },\n GC: {\n names: {\n es: 'Gran Canaria'\n },\n days: {\n '09-08': {\n name: {\n es: 'Nuestra Señora del Pino'\n }\n }\n }\n },\n LG: {\n names: {\n es: 'La Gomera'\n },\n days: {\n '10-05': {\n name: {\n es: 'Nuestra Señora de Guadalupe'\n }\n }\n }\n },\n LP: {\n names: {\n es: 'La Palma'\n },\n days: {\n '08-05': {\n name: {\n es: 'Nuestra Señora de las Nieves'\n }\n }\n }\n },\n LA: {\n names: {\n es: 'Lanzarote'\n },\n days: {\n '09-15': {\n name: {\n es: 'Nuestra Señora de los Dolores'\n }\n }\n }\n },\n TE: {\n names: {\n es: 'Tenerife'\n },\n days: {\n '09-07': {\n name: {\n es: 'La Bajada de la Virgen del Socorro'\n }\n }\n }\n }\n }\n },\n ID: {\n names: {\n en: 'Indonesia',\n id: 'Indonesia'\n },\n langs: [\n 'id'\n ],\n zones: [\n 'Asia/Jakarta',\n 'Asia/Pontianak',\n 'Asia/Makassar',\n 'Asia/Jayapura'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'chinese 01-0-01': {\n name: {\n en: 'Chinese New Year',\n id: 'Tahun Baru Imlek'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '06-01': {\n name: {\n en: 'Pancasila Day',\n id: 'Hari Lahir Pancasila'\n }\n },\n '08-17': {\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '27 Rajab': {\n _name: '27 Rajab'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '2 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '2009-03-26': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2010-03-16': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2011-03-05': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2012-03-23': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2013-03-12': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2014-03-31': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2015-03-21': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2016-03-09': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2017-03-28': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2018-03-17': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2019-03-07': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2020-03-25': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2021-03-14': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2022-03-03': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2023-03-22': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2024-03-11': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2025-03-29': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2026-03-19': {\n name: {\n en: 'Nyepi',\n id: 'Hari Raya Nyepi'\n }\n },\n '2001-05-07': {\n _name: 'Vesak'\n },\n '2002-05-26': {\n _name: 'Vesak'\n },\n '2003-05-16': {\n _name: 'Vesak'\n },\n '2004-06-03': {\n _name: 'Vesak'\n },\n '2005-05-24': {\n _name: 'Vesak'\n },\n '2006-05-13': {\n _name: 'Vesak'\n },\n '2007-06-01': {\n _name: 'Vesak'\n },\n '2008-05-20': {\n _name: 'Vesak'\n },\n '2009-05-09': {\n _name: 'Vesak'\n },\n '2010-05-28': {\n _name: 'Vesak'\n },\n '2011-05-17': {\n _name: 'Vesak'\n },\n '2012-05-06': {\n _name: 'Vesak'\n },\n '2013-05-25': {\n _name: 'Vesak'\n },\n '2014-05-15': {\n _name: 'Vesak'\n },\n '2015-06-02': {\n _name: 'Vesak'\n },\n '2016-05-22': {\n _name: 'Vesak'\n },\n '2017-05-11': {\n _name: 'Vesak'\n },\n '2018-05-29': {\n _name: 'Vesak'\n },\n '2019-05-19': {\n _name: 'Vesak'\n },\n '2020-05-07': {\n _name: 'Vesak'\n },\n '2021-05-26': {\n _name: 'Vesak'\n },\n '2022-05-16': {\n _name: 'Vesak'\n },\n '2023-05-06': {\n _name: 'Vesak'\n },\n '2024-05-23': {\n _name: 'Vesak'\n }\n }\n },\n IE: {\n names: {\n en: 'Ireland'\n },\n dayoff: 'sunday',\n zones: [\n 'Europe/Dublin'\n ],\n langs: [\n 'en'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '1st monday in January': {\n name: {\n en: 'Bank Holiday'\n },\n type: 'bank'\n },\n '02-01 if Tuesday,Wednesday,Thursday,Saturday,Sunday then next Monday since 2023': {\n name: {\n en: 'St. Brigid’s Day'\n }\n },\n '03-17': {\n name: {\n en: 'St. Patrick’s Day'\n }\n },\n '03-17 and if saturday then next monday if sunday then next monday': {\n name: {\n en: 'St. Patrick’s Day'\n },\n substitute: true,\n type: 'bank'\n },\n 'easter -21': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2',\n type: 'bank'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '1st monday in May': {\n name: {\n en: 'May Day'\n }\n },\n '1st monday in June': {\n name: {\n en: 'First Monday in June'\n }\n },\n '1st monday in August': {\n name: {\n en: 'First Monday in August'\n }\n },\n '1st Monday before 11-01': {\n name: {\n en: 'October Bank Holiday',\n type: 'bank'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26',\n name: {\n en: \"St. Stephen's Day\"\n }\n },\n '12-26 and if saturday then next monday if sunday then next monday': {\n _name: '12-26',\n name: {\n en: \"St. Stephen's Day\"\n },\n substitute: true,\n type: 'bank'\n },\n '12-27 and if saturday then next monday if sunday then next tuesday': {\n name: {\n en: 'Christmas Bank Holiday'\n },\n type: 'bank'\n },\n '3rd sunday in June': {\n _name: 'Fathers Day',\n type: 'observance'\n }\n }\n },\n IL: {\n names: {\n he: 'מְדִינַת יִשְׂרָאֵל',\n en: 'Israel'\n },\n langs: [\n 'he'\n ],\n zones: [\n 'Asia/Jerusalem'\n ],\n dayoff: 'Saturday',\n days: {\n '1 Tishrei': {\n name: {\n he: 'ראש השנה',\n en: 'Rosh Hashanah (Yom Teruah)'\n }\n },\n '2 Tishrei': {\n name: {\n he: 'ראש השנה יום 2',\n en: 'Rosh Hashanah (Day 2)'\n }\n },\n '3 Tishrei if Saturday then next Sunday': {\n name: {\n he: 'צום גדליה',\n en: 'Fast of Gedaliah (Tzom Gedalya)'\n },\n type: 'observance'\n },\n '10 Tishrei': {\n name: {\n he: 'יום כיפור',\n en: 'Day of Atonement (Yom Kippur)'\n }\n },\n '15 Tishrei': {\n name: {\n he: 'סוכות',\n en: 'Feast of Tabernacles (Sukkot)'\n }\n },\n '16 Tishrei P6D': {\n name: {\n he: 'חול המועד סוכות',\n en: 'The week of Sukkot'\n },\n type: 'school',\n note: 'Collective paid leave in many businesses and government offices'\n },\n '22 Tishrei': {\n name: {\n he: 'שמחת תורה/שמיני עצרת',\n en: 'Simchat Torah/ Shmini Atzeret'\n }\n },\n '12 Cheshvan if Friday,Saturday then previous Thursday since 1997': {\n name: {\n he: 'יום רבין',\n en: 'Rabin Day'\n },\n type: 'observance',\n note: 'National remembrance day, business as usual'\n },\n '29 Cheshvan': {\n name: {\n he: 'סיגד',\n en: 'Sigd'\n },\n type: 'observance',\n note: 'Festival of the Ethiopian Jews, optional paid leave, business as usual'\n },\n '6 Kislev if Saturday then next Sunday': {\n name: {\n en: 'Ben-Gurion Day',\n he: 'יום בן-גוריון'\n },\n type: 'observance',\n note: 'Day marked by the Knesset'\n },\n '25 Kislev P8D': {\n name: {\n en: 'Hanukkah',\n he: 'חנוכה'\n },\n type: 'school'\n },\n '10 Tevet': {\n name: {\n en: 'Tenth of Tevet',\n he: 'צום עשרה בטבת'\n },\n type: 'observance'\n },\n '15 Shvat': {\n name: {\n en: 'Tu Bishvat (Arbor Day)',\n he: 'ט\"ו בשבט'\n },\n type: 'observance'\n },\n '13 AdarII if Saturday then previous Thursday': {\n name: {\n en: 'Fast of Esther',\n he: 'תענית אסתר'\n },\n type: 'school'\n },\n '14 AdarII P2D': {\n name: {\n en: 'Purim',\n he: 'פורים'\n },\n type: 'school',\n note: 'optional paid leave'\n },\n '10 Nisan': {\n name: {\n en: 'Aliyah Day',\n he: 'יום העלייה'\n },\n type: 'observance',\n note: 'Official holiday, business as usual'\n },\n '15 Nisan': {\n name: {\n en: 'Passover (Pesach)',\n he: 'פסח'\n }\n },\n '16 Nisan P5D': {\n name: {\n en: 'Passover (intermediate days)',\n he: 'חול המועד פסח'\n },\n type: 'school',\n note: 'School holiday, collective paid leave in many businesses and government offices'\n },\n '21 Nisan': {\n name: {\n en: 'Mimouna, Seventh day of Passover',\n he: 'מימונה, שביעי של פסח'\n }\n },\n '27 Nisan if Friday then previous Thursday if Sunday then next Monday': {\n name: {\n en: 'Holocaust Remembrance Day (Yom HaShoah)',\n he: 'יום הזיכרון לשואה ולגבורה'\n },\n type: 'observance',\n note: 'National remembrance day, business as usual except places of public entertainment'\n },\n '05-09': {\n name: {\n en: 'Victory in Europe Day',\n he: 'יום הניצחון על גרמניה הנאצית'\n },\n type: 'observance'\n },\n '4 Iyyar if Thursday,Friday then previous Wednesday if Sunday then next Monday': {\n name: {\n en: 'Fallen Soldiers and Victims of Terrorism Remembrance Day (Yom HaZikaron)',\n he: 'יום הזיכרון לחללי מערכות ישראל ונפגעי פעולות האיבה'\n },\n type: 'observance',\n note: 'National remembrance day, business as usual except places of public entertainment'\n },\n '5 Iyyar if Friday,Saturday then previous Thursday if Monday then next Tuesday': {\n name: {\n en: 'Independence Day (Yom HaAtzmaut)',\n he: 'יום העצמאות'\n }\n },\n '10 Iyyar if Saturday then next Sunday since 2004': {\n name: {\n en: 'Herzl Day',\n he: 'יום הרצל'\n },\n type: 'observance',\n note: 'Day marked by the Knesset'\n },\n '18 Iyyar': {\n name: {\n en: 'Lag BaOmer',\n he: 'ל\"ג בעומר'\n },\n type: 'school'\n },\n '28 Iyyar': {\n name: {\n en: 'Jerusalem Day (Yom Yerushalayim)',\n he: 'יום ירושלים'\n },\n type: 'observance',\n note: 'Optional paid leave'\n },\n '6 Sivan': {\n name: {\n en: 'Shavuot (Feast of Weeks)',\n he: 'שבועות'\n }\n },\n '17 Tamuz if Saturday then next Sunday': {\n name: {\n en: 'Seventeenth of Tamuz, fast',\n he: 'שבעה עשר בתמוז'\n },\n type: 'observance'\n },\n '29 Tamuz if Saturday then next Sunday': {\n name: {\n en: 'Jabotinsky Day',\n he: \"יום ז'בוטינסקי\"\n },\n type: 'observance',\n note: 'Day marked by the Knesset'\n },\n '9 Av if Saturday then next Sunday': {\n name: {\n en: \"Tisha B'Av, fast\",\n he: 'תשעה באב'\n },\n type: 'observance',\n note: 'Optional paid leave, business as usual except places of public entertainment'\n },\n '15 Av': {\n name: {\n en: \"Tu B'Av (Fifteenth of Av)\",\n he: 'ט\"ו באב'\n },\n type: 'observance'\n },\n '2015-03-17': {\n name: {\n en: 'Election Day',\n he: 'יום הבחירות'\n }\n },\n '2019-04-09': {\n name: {\n en: 'Election Day',\n he: 'יום הבחירות'\n }\n },\n '2019-09-17': {\n name: {\n en: 'Election Day',\n he: 'יום הבחירות'\n }\n },\n '2020-03-02': {\n name: {\n en: 'Election Day',\n he: 'יום הבחירות'\n }\n },\n '2021-03-23': {\n name: {\n en: 'Election Day',\n he: 'יום הבחירות'\n }\n }\n }\n },\n IM: {\n names: {\n en: 'Isle of Man'\n },\n zones: [\n 'Europe/Isle_of_Man'\n ],\n langs: [\n 'en'\n ],\n _days: [\n 'GB'\n ],\n days: {\n '2nd friday in June': {\n name: {\n en: 'Tourist Trophy, Senior Race Day'\n }\n },\n '07-05': {\n name: {\n en: 'Tynwald Day'\n }\n }\n }\n },\n IR: {\n names: {\n fa: 'جمهوری اسلامی ایران',\n en: 'Iran'\n },\n langs: [\n 'fa',\n 'en'\n ],\n zones: [\n 'Asia/Tehran'\n ],\n dayoff: 'Friday',\n days: {\n '1 Farvardin': {\n name: {\n fa: 'نوروز',\n en: 'Nowruz'\n }\n },\n '2 Farvardin': {\n name: {\n fa: 'نوروز',\n en: 'Nowruz'\n }\n },\n '3 Farvardin': {\n name: {\n fa: 'نوروز',\n en: 'Nowruz'\n }\n },\n '4 Farvardin': {\n name: {\n fa: 'نوروز',\n en: 'Nowruz'\n }\n },\n '12 Farvardin': {\n name: {\n fa: 'روز جمهوری اسلامی',\n en: 'Islamic Republic Day'\n }\n },\n '13 Farvardin': {\n name: {\n fa: 'سیزده بدر',\n en: 'Sizdah Bedar'\n }\n },\n '14 Khordad': {\n name: {\n fa: 'رﺣﻠﺖ اﻣﺎم ﺧﻤﯿﻨﯽ',\n en: \"Imam Khomeini's Demise\"\n }\n },\n '15 Khordad': {\n name: {\n fa: 'قیام ۱۵ خرداد',\n en: 'Revolt of Khordad 15'\n }\n },\n '22 Bahman': {\n name: {\n fa: 'انقلاب اسلامی پنجاه و هفت',\n en: 'Anniversary of Islamic Revolution'\n }\n },\n '29 Esfand': {\n name: {\n fa: 'ملی شدن صنعت نفت',\n en: 'Nationalization of the Iranian oil industry'\n }\n },\n '9 Muharram': {\n name: {\n fa: 'ﺗﺎﺳﻮﻋﺎی ﺣﺴﯿﻨﯽ',\n en: 'Tasoua'\n }\n },\n '10 Muharram': {\n name: {\n fa: 'ﻋﺎﺷﻮرای ﺣﺴﯿﻨﯽ',\n en: 'Ashoura'\n }\n },\n '20 Safar': {\n name: {\n fa: 'اربعین حسینی',\n en: 'Arbaeen-e Hosseini'\n }\n },\n '28 Safar': {\n name: {\n fa: 'رﺣﻠﺖ ﺣﻀﺮت رﺳﻮل اﮐﺮم صلّی الله علیه وآله و سلّم',\n en: 'Demise of Prophet Muhammad and Imam Hassan (Mujtaba)'\n }\n },\n '30 Safar': {\n name: {\n fa: 'ﺷﻬﺎدت ﺣﻀﺮت اﻣﺎم رﺿﺎ ﻋﻠﯿﻪاﻟﺴﻼم',\n en: 'Martyrdom of Imam Reza'\n }\n },\n '8 Rabi al-awwal': {\n name: {\n fa: 'شهادت امام حسن عسكری علیه‌السلام',\n en: 'Martyrdom of Imam Hassan'\n }\n },\n '17 Rabi al-awwal': {\n name: {\n fa: 'ولادت حضرت رسول اکرم صلّی الله علیه وآله و سلّم',\n en: 'Birthday of Muhammad Prophet'\n }\n },\n '3 Jumada al-thani': {\n name: {\n fa: 'ﺷﻬﺎدت ﺣﻀﺮت ﻓﺎﻃﻤﻪ زﻫﺮا ﺳﻼم اﷲ ﻋﻠﯿﻬﺎ',\n en: 'Martyrdom of Fatima-Zahara'\n }\n },\n '13 Rajab': {\n name: {\n fa: 'وﻻدت ﺣﻀﺮت اﻣﺎم ﻋﻠﯽ ﻋﻠﯿﻪ اﻟﺴﻼم',\n en: 'Birthday of Imam Ali'\n }\n },\n '27 Rajab': {\n name: {\n fa: 'ﻣﺒﻌﺚ ﺣﻀﺮت رﺳﻮل اﮐﺮم ﺻﻠﯽ اﷲ ﻋﻠﯿﻪ و آﻟﻪ',\n en: 'Mabaas of Muhammad'\n }\n },\n '15 Shaban': {\n name: {\n fa: 'وﻻدت ﺣﻀﺮت ﻗﺎﺋﻢ ﻋﺠﻞاﷲ ﺗﻌﺎﻟﯽ ﻓﺮﺟﻪ شریف',\n en: 'Birthday of Imam Mahdi'\n }\n },\n '21 Ramadan': {\n name: {\n fa: 'ﺷﻬﺎدت ﺣﻀﺮت ﻋﻠﯽ ﻋﻠﯿﻪاﻟﺴﻼم',\n en: 'Martyrdom of Imam Ali'\n }\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '2 Shawwal': {\n name: {\n fa: 'ﺑﻪ ﻣﻨﺎﺳﺒﺖ ﻋﯿﺪ ﺳﻌﯿﺪ ﻓﻄﺮ',\n en: 'Holyday for Fetr Eeid'\n }\n },\n '25 Shawwal': {\n name: {\n fa: 'ﺷﻬﺎدت ﺣﻀﺮت اﻣﺎم ﺟﻌﻔﺮ ﺻﺎدق ﻋﻠﯿﻪاﻟﺴﻼم',\n en: 'Martyrdom of Imam Jafar'\n }\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '18 Dhu al-Hijjah': {\n name: {\n fa: 'ﻋﯿﺪ ﺳﻌﯿﺪ ﻏﺪﯾﺮ ﺧﻢ',\n en: 'Eid al-Ghadeer'\n }\n }\n }\n },\n IS: {\n names: {\n is: 'Ísland',\n en: 'Iceland'\n },\n dayoff: 'sunday',\n zones: [\n 'Atlantic/Reykjavik'\n ],\n langs: [\n 'is'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06',\n type: 'observance'\n },\n 'friday after 01-18': {\n name: {\n is: 'Bóndadagur'\n },\n type: 'observance'\n },\n '02-18': {\n name: {\n is: 'Konudagur',\n en: \"Woman's Day\"\n },\n type: 'observance'\n },\n 'easter -48': {\n name: {\n is: 'Bolludagur'\n },\n type: 'observance'\n },\n 'easter -47': {\n name: {\n is: 'Sprengidagur'\n },\n type: 'observance'\n },\n 'easter -46': {\n _name: 'easter -46',\n type: 'observance'\n },\n 'easter -7': {\n _name: 'easter -7',\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'thursday after 04-18': {\n name: {\n is: 'Sumardagurinn fyrsti',\n en: 'First Day of Summer'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '1st sunday in June': {\n name: {\n is: 'Sjómannadagurinn',\n en: \"The Seamen's Day\"\n },\n type: 'observance'\n },\n '06-17': {\n name: {\n is: 'Íslenski þjóðhátíðardagurinn',\n en: 'Icelandic National Day'\n }\n },\n '1st monday in August': {\n name: {\n is: 'Frídagur verslunarmanna',\n en: 'Commerce Day'\n }\n },\n 'saturday after 10-21': {\n name: {\n is: 'Fyrsti vetrardagur',\n en: 'First Day of Winter'\n },\n type: 'observance'\n },\n '11-16': {\n name: {\n is: 'Dagur íslenskrar tungu',\n en: 'Icelandic Language Day'\n },\n type: 'observance'\n },\n '12-23': {\n name: {\n is: 'Þorláksmessa',\n en: \"St Þorlákur's Day\"\n },\n type: 'observance'\n },\n '12-24 13:00 if sunday then 00:00': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31 13:00 if sunday then 00:00': {\n _name: '12-31'\n }\n }\n },\n IT: {\n names: {\n it: 'Italia',\n en: 'Italia'\n },\n dayoff: 'sunday',\n zones: [\n 'Europe/Rome'\n ],\n langs: [\n 'it'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-25': {\n name: {\n it: 'Anniversario della Liberazione',\n en: 'Liberation Day'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '06-02': {\n name: {\n it: 'Festa della Repubblica',\n en: 'Republic Day'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '2011-03-17': {\n name: {\n it: 'Festa Nazionale 2011',\n en: 'National Day 2011'\n }\n }\n },\n states: {\n 25: {\n name: 'Lombardy',\n regions: {\n MI: {\n name: 'Milan',\n days: {\n '12-07': {\n name: {\n it: \"Sant'Ambrogio\",\n en: 'Saint Ambrose'\n }\n }\n }\n }\n }\n },\n 32: {\n name: 'Südtirol, Alto Adige',\n days: {\n 'easter 50': {\n _name: 'easter 50'\n }\n }\n }\n }\n },\n JE: {\n names: {\n en: 'Jersey'\n },\n zones: [\n 'Europe/Jersey'\n ],\n langs: [\n 'en'\n ],\n _days: [\n 'GB'\n ],\n days: {\n '05-09': {\n name: {\n en: 'Liberation Day'\n }\n }\n }\n },\n JM: {\n names: {\n en: 'Jamaica'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'America/Jamaica'\n ],\n days: {\n '01-01 and if sunday then next monday': {\n _name: '01-01',\n substitute: true\n },\n 'easter -46': {\n _name: 'easter -46'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-23 if saturday,sunday then next monday': {\n _name: '05-01'\n },\n '08-01 if sunday then next monday': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '08-06 and if sunday then next monday': {\n _name: 'Independence Day',\n substitute: true\n },\n '3rd monday in October': {\n name: {\n en: 'National Heroes Day'\n }\n },\n '12-25 and if sunday then next tuesday': {\n _name: '12-25',\n substitute: true\n },\n '12-26 and if sunday then next monday': {\n _name: '12-26',\n substitute: true\n }\n }\n },\n JP: {\n names: {\n jp: '日本',\n en: 'Japan'\n },\n dayoff: 'sunday',\n langs: [\n 'jp'\n ],\n zones: [\n 'Asia/Tokyo'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'substitutes 01-01 if sunday then next monday': {\n substitute: true,\n _name: '01-01',\n active: [\n {\n from: '1973-04-12T00:00:00.000Z'\n }\n ]\n },\n '01-02': {\n name: {\n en: 'January 2nd',\n jp: '銀行休業日'\n },\n type: 'bank'\n },\n '01-03': {\n name: {\n en: 'January 3rd',\n jp: '銀行休業日'\n },\n type: 'bank'\n },\n '01-15': {\n name: {\n en: 'Coming of Age Day',\n jp: '成人の日'\n },\n active: [\n {\n from: '1948-07-20T00:00:00.000Z',\n to: '1999-12-31T00:00:00.000Z'\n }\n ]\n },\n 'substitutes 01-15 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Coming of Age Day',\n jp: '成人の日'\n },\n active: [\n {\n from: '1973-04-12T00:00:00.000Z',\n to: '1999-12-31T00:00:00.000Z'\n }\n ]\n },\n '2nd monday in January': {\n name: {\n en: 'Coming of Age Day',\n jp: '成人の日'\n },\n active: [\n {\n from: '2000-01-01T00:00:00.000Z'\n }\n ]\n },\n '02-11': {\n name: {\n en: 'Foundation Day',\n jp: '建国記念の日'\n },\n active: [\n {\n from: '1967-01-01T00:00:00.000Z'\n }\n ]\n },\n 'substitutes 02-11 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Foundation Day',\n jp: '建国記念の日'\n },\n active: [\n {\n from: '1973-04-12T00:00:00.000Z'\n }\n ]\n },\n '02-23 and if sunday then next monday': {\n substitute: true,\n name: {\n en: \"Emperor's Birthday\",\n jp: '天皇誕生日'\n },\n active: [\n {\n from: '2020-01-01T00:00:00.000Z'\n }\n ]\n },\n '1989-02-24': {\n name: {\n en: 'State Funeral of Emperor Showa',\n jp: '大喪の礼'\n }\n },\n 'march equinox in +09:00': {\n name: {\n en: 'Spring Equinox Day',\n jp: '春分の日'\n },\n active: [\n {\n from: '1948-07-20T00:00:00.000Z'\n }\n ]\n },\n 'substitutes march equinox in +09:00 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Spring Equinox Day',\n jp: '春分の日'\n },\n active: [\n {\n from: '1973-04-12T00:00:00.000Z'\n }\n ]\n },\n '1959-04-10': {\n name: {\n en: 'Marriage of Crown Prince Akihito',\n jp: '結婚の儀'\n }\n },\n '04-29': {\n name: {\n en: \"Emperor's Birthday\",\n jp: '天皇誕生日'\n },\n active: [\n {\n from: '1948-07-20T00:00:00.000Z',\n to: '1988-12-31T00:00:00.000Z'\n }\n ]\n },\n 'substitutes 04-29 and if sunday then next monday': {\n substitute: true,\n name: {\n en: \"Emperor's Birthday\",\n jp: '天皇誕生日'\n },\n active: [\n {\n from: '1973-04-12T00:00:00.000Z',\n to: '1988-12-31T00:00:00.000Z'\n }\n ]\n },\n '04-29 and if sunday then next monday #1': {\n substitute: true,\n name: {\n en: 'Greenery Day',\n jp: 'みどりの日'\n },\n active: [\n {\n from: '1989-01-01T00:00:00.000Z',\n to: '2006-12-31T00:00:00.000Z'\n }\n ]\n },\n '04-29 and if sunday then next monday #2': {\n substitute: true,\n name: {\n en: 'Showa Day',\n jp: '昭和の日'\n },\n active: [\n {\n from: '2007-01-01T00:00:00.000Z'\n }\n ]\n },\n '2019-04-30': {\n name: {\n en: \"Citizens' Holiday\",\n jp: '国民の休日'\n }\n },\n '2019-05-01': {\n name: {\n en: 'Coronation Day',\n jp: '即位の日'\n }\n },\n '2019-05-02': {\n name: {\n en: \"Citizens' Holiday\",\n jp: '国民の休日'\n }\n },\n '05-03': {\n _name: 'Constitution Day'\n },\n 'substitutes 05-03 if sunday then next monday': {\n substitute: true,\n _name: 'Constitution Day',\n active: [\n {\n from: '1973-04-12T00:00:00.000Z',\n to: '2006-12-31T00:00:00.000Z'\n }\n ]\n },\n 'substitutes 05-03 if sunday then next wednesday': {\n substitute: true,\n _name: 'Constitution Day',\n active: [\n {\n from: '2007-01-01T00:00:00.000Z'\n }\n ]\n },\n '05-04 not on sunday, monday': {\n name: {\n en: \"Citizens' Holiday\",\n jp: '国民の休日'\n },\n active: [\n {\n from: '1986-01-01T00:00:00.000Z',\n to: '2006-12-31T00:00:00.000Z'\n }\n ]\n },\n '05-04 and if sunday then next tuesday': {\n substitute: true,\n name: {\n en: 'Greenery Day',\n jp: 'みどりの日'\n },\n active: [\n {\n from: '2007-01-01T00:00:00.000Z'\n }\n ]\n },\n '05-05': {\n name: {\n en: \"Children's Day\",\n jp: 'こどもの日'\n }\n },\n 'substitutes 05-05 if sunday then next monday': {\n substitute: true,\n name: {\n en: \"Children's Day\",\n jp: 'こどもの日'\n },\n active: [\n {\n from: '1973-04-12T00:00:00.000Z'\n }\n ]\n },\n '1993-06-09': {\n name: {\n en: 'Marriage of Crown Prince Naruhito',\n jp: '結婚の儀'\n }\n },\n '07-20': {\n name: {\n en: 'Marine Day',\n jp: '海の日'\n },\n active: [\n {\n from: '1996-01-01T00:00:00.000Z',\n to: '2002-12-31T00:00:00.000Z'\n }\n ]\n },\n 'substitutes 07-20 if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Marine Day',\n jp: '海の日'\n },\n active: [\n {\n from: '1996-01-01T00:00:00.000Z',\n to: '2002-12-31T00:00:00.000Z'\n }\n ]\n },\n '3rd monday in July': {\n name: {\n en: 'Marine Day',\n jp: '海の日'\n },\n disable: [\n '2020-07-20',\n '2021-07-19'\n ],\n enable: [\n '2020-07-23',\n '2021-07-22'\n ],\n active: [\n {\n from: '2003-01-01T00:00:00.000Z'\n }\n ]\n },\n 'substitutes 2021-08-08 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Mountain Day',\n jp: '山の日'\n }\n },\n 'substitutes 08-11 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Mountain Day',\n jp: '山の日'\n },\n disable: [\n '2020-08-11',\n '2021-08-11'\n ],\n enable: [\n '2020-08-10'\n ],\n active: [\n {\n from: '2016-01-01T00:00:00.000Z'\n }\n ]\n },\n '09-15': {\n name: {\n en: 'Respect-for-the-Aged Day',\n jp: '敬老の日'\n },\n active: [\n {\n from: '1966-01-01T00:00:00.000Z',\n to: '2002-12-31T00:00:00.000Z'\n }\n ]\n },\n 'substitutes 09-15 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Respect-for-the-Aged Day',\n jp: '敬老の日'\n },\n active: [\n {\n from: '1973-04-12T00:00:00.000Z',\n to: '2002-12-31T00:00:00.000Z'\n }\n ]\n },\n '3rd monday in September': {\n name: {\n en: 'Respect-for-the-Aged Day',\n jp: '敬老の日'\n },\n active: [\n {\n from: '2003-01-01T00:00:00.000Z'\n }\n ]\n },\n '09-22 if 09-21 and 09-23 is public holiday': {\n name: {\n en: \"Citizens' Holiday\",\n jp: '国民の休日'\n }\n },\n 'september equinox in +09:00': {\n name: {\n en: 'Autumnal Equinox Day',\n jp: '秋分の日'\n },\n active: [\n {\n from: '1948-07-20T00:00:00.000Z'\n }\n ]\n },\n 'substitutes september equinox in +09:00 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Autumnal Equinox Day',\n jp: '秋分の日'\n },\n active: [\n {\n from: '1973-04-12T00:00:00.000Z'\n }\n ]\n },\n '10-10': {\n name: {\n en: 'Sports Day',\n jp: '体育の日'\n },\n active: [\n {\n from: '1966-01-01T00:00:00.000Z',\n to: '1999-12-31T00:00:00.000Z'\n }\n ]\n },\n 'substitutes 10-10 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Sports Day',\n jp: '体育の日'\n },\n active: [\n {\n from: '1973-04-12T00:00:00.000Z',\n to: '1999-12-31T00:00:00.000Z'\n }\n ]\n },\n '2nd monday in October #1': {\n name: {\n en: 'Sports Day',\n jp: '体育の日'\n },\n active: [\n {\n from: '2000-01-01T00:00:00.000Z',\n to: '2019-12-31T00:00:00.000Z'\n }\n ]\n },\n '2nd monday in October #2': {\n name: {\n en: 'Sports Day',\n jp: 'スポーツの日'\n },\n disable: [\n '2020-10-12',\n '2021-10-11'\n ],\n enable: [\n '2020-07-24',\n '2021-07-23'\n ],\n active: [\n {\n from: '2020-01-01T00:00:00.000Z'\n }\n ]\n },\n '2019-10-22': {\n name: {\n en: 'Enthronement Ceremony Day',\n jp: '即位礼正殿の儀'\n }\n },\n '11-03': {\n substitute: true,\n name: {\n en: 'Culture Day',\n jp: '文化の日'\n },\n active: [\n {\n from: '1948-07-20T00:00:00.000Z'\n }\n ]\n },\n 'substitutes 11-03 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Culture Day',\n jp: '文化の日'\n },\n active: [\n {\n from: '1973-04-12T00:00:00.000Z'\n }\n ]\n },\n '1990-11-12': {\n name: {\n en: 'Official Enthronement Ceremony of Emperor Heisei (Akihito)',\n jp: '即位礼正殿の儀'\n }\n },\n '11-15': {\n name: {\n en: 'Seven-Five-Three Festival',\n jp: '七五三'\n },\n type: 'observance'\n },\n '11-23': {\n name: {\n en: 'Labor Thanksgiving Day',\n jp: '勤労感謝の日'\n },\n active: [\n {\n from: '1948-07-20T00:00:00.000Z'\n }\n ]\n },\n 'substitutes 11-23 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Labor Thanksgiving Day',\n jp: '勤労感謝の日'\n },\n active: [\n {\n from: '1973-04-12T00:00:00.000Z'\n }\n ]\n },\n '12-23 and if sunday then next monday': {\n substitute: true,\n name: {\n en: \"Emperor's Birthday\",\n jp: '天皇誕生日'\n },\n active: [\n {\n from: '1989-01-01T00:00:00.000Z',\n to: '2018-12-31T00:00:00.000Z'\n }\n ]\n },\n '12-25': {\n _name: '12-25',\n type: 'observance'\n },\n '12-31': {\n _name: '12-31',\n type: 'bank'\n }\n }\n },\n KE: {\n names: {\n en: 'Kenya'\n },\n dayoff: 'sunday',\n langs: [\n 'sw',\n 'en'\n ],\n zones: [\n 'Africa/Nairobi'\n ],\n days: {\n '01-01 and if sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01 and if sunday then next monday': {\n substitute: true,\n _name: '05-01'\n },\n '06-01 and if sunday then next monday': {\n substitute: true,\n name: {\n sw: 'Siku ya Madaraka',\n en: 'Madaraka Day'\n }\n },\n '10-10 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Moi Day'\n }\n },\n '10-20 and if sunday then next monday': {\n substitute: true,\n name: {\n sw: 'Siku ya Mashujaa',\n en: 'Mashujaa Day'\n }\n },\n '12-12 and if sunday then next monday': {\n substitute: true,\n name: {\n sw: 'Siku ya Jamhuri',\n en: 'Jamhuri Day'\n }\n },\n '12-25 and if sunday then next tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if sunday then next monday': {\n substitute: true,\n _name: '12-26'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah',\n note: 'For all persons belonging to the Islamic faith.'\n }\n }\n },\n KM: {\n names: {\n fr: 'Union des Comores',\n en: 'Comoros'\n },\n langs: [\n 'fr',\n 'ar',\n 'swb',\n 'wlc',\n 'wni',\n 'zdj'\n ],\n zones: [\n 'Africa/Nairobi'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '03-18': {\n name: {\n fr: 'Journée de Cheikh Al Maarouf',\n en: 'Cheikh Al Maarouf Day'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '07-06': {\n _name: 'Independence Day'\n },\n '11-12': {\n name: {\n fr: 'Journée Maoré',\n en: 'Maore Day'\n }\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal P3DT0H0M': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah P2DT0H0M': {\n _name: '10 Dhu al-Hijjah'\n },\n '27 Rajab': {\n _name: '27 Rajab'\n }\n }\n },\n KN: {\n names: {\n en: 'St. Kitts & Nevis'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if Saturday then next Monday': {\n substitute: true,\n _name: '01-01'\n },\n '01-02': {\n name: {\n en: 'Carnival Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '1st Monday in May': {\n _name: '05-01'\n },\n '1st Monday in August': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '1st Tuesday in August': {\n name: {\n en: 'Culturama Day'\n }\n },\n '09-16 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: \"National Heroes' Day\"\n }\n },\n '09-19 if Sunday then next Monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n KR: {\n names: {\n ko: '대한민국',\n en: 'South Korea'\n },\n dayoff: 'sunday',\n langs: [\n 'ko'\n ],\n zones: [\n 'Asia/Seoul'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'korean 01-0-01 P3D': {\n name: {\n en: 'Korean New Year',\n ko: '설날'\n }\n },\n '03-01': {\n name: {\n en: 'Independence Movement Day',\n ko: '3·1절'\n }\n },\n '05-05': {\n name: {\n en: \"Children's Day\",\n ko: '어린이날'\n }\n },\n 'korean 4-0-8': {\n name: {\n en: \"Buddha's Birthday\",\n ko: '석가탄신일'\n }\n },\n '06-06': {\n name: {\n en: 'Memorial Day',\n ko: '현충일'\n }\n },\n '07-17': {\n _name: 'Constitution Day',\n type: 'observance'\n },\n '08-15': {\n name: {\n en: 'Liberation Day',\n ko: '광복절'\n }\n },\n 'korean 8-0-15 P3D': {\n name: {\n en: 'Korean Thanksgiving',\n ko: '추석'\n }\n },\n '10-03': {\n name: {\n en: 'National Foundation Day',\n ko: '개천절'\n }\n },\n '10-09': {\n name: {\n en: 'Hangul Day',\n ko: '한글날'\n }\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n KY: {\n names: {\n en: 'Cayman Islands'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'America/Panama'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: '01-01'\n },\n '4th Monday in January': {\n name: {\n en: 'National Heroes Day'\n }\n },\n 'easter -46': {\n _name: 'easter -46'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '3rd Monday in May': {\n name: {\n en: 'Discovery Day'\n }\n },\n '07-02': {\n name: {\n en: 'Constitution Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '2017-05-24': {\n name: 'General Election Day'\n },\n '2021-04-14': {\n name: 'General Election Day'\n },\n '2016-06-13': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '2017-06-19': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '2018-06-11': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '2019-06-10': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '2020-06-15': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '2021-06-14': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '2022-06-20': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '2023-06-19': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '2024-06-17': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '2025-06-16': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '2026-06-15': {\n name: {\n en: \"Queen's Birthday\"\n }\n }\n }\n },\n LC: {\n names: {\n en: 'St. Lucia'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-02': {\n name: {\n en: \"Second New Year's Day\"\n }\n },\n '02-22': {\n _name: 'Independence Day'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '1st Friday after 07-10 P4D': {\n name: {\n en: 'Carnival'\n }\n },\n '08-01': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '1st Monday in October': {\n name: {\n en: 'Thanksgiving'\n }\n },\n '12-13': {\n name: {\n en: 'National Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n LI: {\n names: {\n de: 'Lichtenstein',\n en: 'Lichtenstein'\n },\n dayoff: 'sunday',\n langs: [\n 'de'\n ],\n zones: [\n 'Europe/Zurich'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-02': {\n name: {\n de: 'Berchtoldstag',\n en: 'Berchtold Day'\n },\n type: 'bank'\n },\n '01-06': {\n _name: '01-06'\n },\n '02-02': {\n _name: '02-02',\n type: 'observance'\n },\n '03-19': {\n _name: '03-19',\n type: 'observance'\n },\n 'easter -47': {\n _name: 'easter -47',\n type: 'bank'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 39': {\n _name: 'easter 39',\n name: {\n de: 'Auffahrt'\n }\n },\n 'easter 40': {\n name: {\n de: 'Feiertagsbrücke'\n }\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n 'easter 61': {\n name: {\n de: 'Feiertagsbrücke'\n }\n },\n '08-15': {\n name: {\n de: 'Staatsfeiertag'\n },\n type: 'observance'\n },\n '09-08': {\n name: {\n de: 'Mariä Geburt'\n }\n },\n '11-01': {\n _name: '11-01',\n type: 'observance'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-24': {\n _name: '12-24',\n type: 'bank'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26',\n name: {\n de: 'Stephanstag'\n }\n },\n '12-31': {\n _name: '12-31',\n type: 'bank'\n }\n }\n },\n LR: {\n names: {\n en: 'Liberia'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Monrovia'\n ],\n dayoff: 'Sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-11': {\n name: {\n en: 'Armed Forces Day'\n }\n },\n '2nd Wednesday in March': {\n name: {\n en: 'Decoration Day'\n }\n },\n '03-15': {\n name: {\n en: \"J. J. Robert's Day\"\n }\n },\n '2nd Friday in April': {\n name: {\n en: 'Fast and Prayer Day'\n }\n },\n '05-14': {\n name: {\n en: 'National Unification Day'\n }\n },\n '07-26': {\n _name: 'Independence Day'\n },\n '08-24': {\n name: {\n en: 'Flag Day'\n }\n },\n '1st Thursday in November': {\n name: {\n en: 'Thanksgiving'\n }\n },\n '11-29': {\n name: {\n en: \"William Tubman's Birthday\"\n }\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n LS: {\n names: {\n st: \"\\\\'Muso oa Lesotho\",\n en: 'Lesotho'\n },\n langs: [\n 'st',\n 'en'\n ],\n zones: [\n 'Africa/Johannesburg'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '03-11': {\n name: {\n en: 'Moshoeshoe Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01',\n name: {\n en: \"Workers' Day\"\n }\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '05-25': {\n name: {\n en: \"Africa Day/ Heroes' Day\"\n }\n },\n '07-17': {\n name: {\n en: \"King Letsie III's Birthday\"\n }\n },\n '10-04': {\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n LT: {\n names: {\n lt: 'Lietuva',\n en: 'Lithuania'\n },\n dayoff: 'sunday',\n langs: [\n 'lt'\n ],\n zones: [\n 'Europe/Vilnius'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-16': {\n name: {\n en: 'Day of Restoration of the State of Lithuania',\n lt: 'Lietuvos valstybės atkūrimo diena'\n }\n },\n '03-11': {\n name: {\n en: 'Day of Restoration of Independence of Lithuania',\n lt: 'Lietuvos nepriklausomybės atkūrimo diena'\n }\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '1st sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '1st sunday in June': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n '06-24': {\n name: {\n en: \"St. John's Day\",\n lt: 'Joninės, Rasos'\n }\n },\n '07-06': {\n name: {\n en: 'Statehood Day',\n lt: 'Valstybės diena'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '11-02': {\n _name: '11-02',\n active: [\n {\n from: 2020\n }\n ]\n },\n '12-24': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n LU: {\n names: {\n fr: 'Luxembourg',\n en: 'Luxembourg',\n de: 'Luxemburg',\n lb: 'Lëtzebuerg',\n pt: 'Luxemburgo'\n },\n langs: [\n 'fr',\n 'de',\n 'lb'\n ],\n zones: [\n 'Europe/Luxembourg'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-23': {\n _name: 'National Holiday',\n active: [\n {\n from: '1947-08-08',\n to: '1961-12-23'\n }\n ]\n },\n 'easter -2': {\n _name: 'easter -2',\n type: 'observance'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1',\n active: [\n {\n from: '1892-02-16'\n }\n ]\n },\n '05-01': {\n _name: '05-01',\n name: {\n fr: '1er mai'\n },\n active: [\n {\n from: '1946-04-23'\n }\n ]\n },\n '05-09': {\n _name: '05-09',\n active: [\n {\n from: '2019-01-01'\n }\n ]\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 50': {\n _name: 'easter 50',\n active: [\n {\n from: '1892-02-16'\n }\n ]\n },\n '06-23': {\n _name: 'National Holiday',\n active: [\n {\n from: '1961-12-23'\n }\n ]\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26',\n active: [\n {\n from: '1892-02-16'\n }\n ]\n }\n }\n },\n LV: {\n names: {\n lv: 'Latvija',\n en: 'Latvia'\n },\n dayoff: 'sunday',\n langs: [\n 'lv'\n ],\n zones: [\n 'Europe/Riga'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-04 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n en: 'Restoration of Independence day',\n lv: 'Latvijas Republikas Neatkarības atjaunošanas diena'\n }\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '06-23': {\n name: {\n en: 'Midsummer Eve',\n lv: 'Līgo Diena'\n }\n },\n '06-24': {\n name: {\n en: 'Midsummer',\n lv: 'Jāņi'\n }\n },\n '11-18 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n en: 'Republic Day',\n lv: 'Latvijas Republikas proklamēšanas diena'\n }\n },\n '12-24': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31': {\n _name: '12-31'\n },\n '2023-05-29': {\n name: {\n en: 'Bronze medal of the Latvian hockey team at the 2023 World Hockey Championship',\n lv: 'Latvijas hokeja komandas 2023. gada Pasaules hokeja čempionātā bronzas medaļa'\n }\n }\n }\n },\n LY: {\n names: {\n ar: 'دولة ليبيا',\n en: 'Libya'\n },\n langs: [\n 'ar'\n ],\n zones: [\n 'Africa/Tripoli'\n ],\n dayoff: '',\n days: {\n '02-17': {\n _name: 'Revolution Day'\n },\n '05-01': {\n _name: '05-01'\n },\n '09-16': {\n name: {\n ar: 'يوم الشهداء',\n en: \"Martyrs' Day\"\n }\n },\n '10-23': {\n _name: 'Liberation Day'\n },\n '12-24': {\n _name: 'Independence Day'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal P3D': {\n _name: '1 Shawwal'\n },\n '9 Dhu al-Hijjah': {\n _name: '9 Dhu al-Hijjah'\n },\n '10 Dhu al-Hijjah P3D': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n MA: {\n names: {\n ar: 'المملكة المغربية',\n fr: 'Royaume du Maroc',\n en: 'Kingdom of Morocco'\n },\n langs: [\n 'ar',\n 'ber',\n 'fr'\n ],\n zones: [\n 'Africa/Casablanca'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-11': {\n name: {\n fr: \"Manifeste de l'indépendance\",\n ar: 'ذكرى تقديم وثيقة الاستقلال',\n en: 'Anniversary of the Independence Manifesto'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '07-30': {\n name: {\n fr: 'Fête du trône',\n ar: 'عيد العرش',\n en: 'Feast of the Throne'\n }\n },\n '08-14': {\n name: {\n fr: 'Journée de Oued Ed-Dahab',\n ar: 'يوم وادي الذهب',\n en: 'Anniversary of the Recovery Oued Ed-Dahab'\n }\n },\n '08-20': {\n name: {\n fr: 'Fête de la révolution du roi et du peuple',\n ar: 'ثورة الملك والشعب',\n en: 'Anniversary of the Revolution of the King and the People'\n }\n },\n '08-21': {\n name: {\n fr: 'Journée de la jeunesse',\n ar: 'عيد الشباب',\n en: 'Youth Day'\n }\n },\n '11-06': {\n name: {\n fr: 'La Marche verte',\n ar: 'المسيرة الخضراء',\n en: 'Anniversary of the Green March'\n }\n },\n '11-18': {\n _name: 'Independence Day',\n name: {\n fr: \"Fête de l'indépendance\"\n }\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n MC: {\n names: {\n fr: 'Monaco',\n en: 'Monaco'\n },\n dayoff: 'sunday',\n langs: [\n 'fr'\n ],\n zones: [\n 'Europe/Monaco'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-27 and if sunday then next monday': {\n substitute: true,\n name: {\n en: \"Saint Devota's Day\",\n fr: 'Sainte Dévote'\n }\n },\n 'easter -2': {\n _name: 'easter -2',\n type: 'observance'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01 and if sunday then next monday': {\n substitute: true,\n _name: '05-01',\n name: {\n fr: '1er mai'\n }\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '11-19 and if sunday then next monday': {\n substitute: true,\n name: {\n en: \"H.S.H. the Sovereign Prince's Day\",\n fr: 'La Fête du Prince'\n }\n },\n '12-08': {\n _name: '12-08'\n },\n '12-25 and if sunday then next monday': {\n substitute: true,\n _name: '12-25'\n }\n }\n },\n MD: {\n names: {\n ro: 'Republica Moldova',\n en: 'Moldova'\n },\n langs: [\n 'ro'\n ],\n zones: [\n 'Europe/Chisinau'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'julian 12-25 P2D': {\n _name: 'julian 12-25',\n name: {\n ro: 'Craciun pe Rit Vechi'\n }\n },\n '03-08': {\n _name: '03-08'\n },\n orthodox: {\n _name: 'easter'\n },\n 'orthodox 1': {\n _name: 'easter 1'\n },\n 'orthodox 8': {\n name: {\n ro: 'Paştele Blăjinilor',\n en: 'Memorial Day'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '05-09': {\n name: {\n ro: 'Ziua Victoriei',\n en: 'Victory Day'\n }\n },\n '08-27': {\n _name: 'Independence Day'\n },\n '08-31': {\n name: {\n ro: 'Limba noastră',\n en: 'National Language Day'\n }\n },\n '1st saturday in October P2D': {\n name: {\n ro: 'Ziua vinului',\n en: 'Wine Day'\n },\n type: 'observance',\n active: [\n {\n from: 2013\n }\n ]\n },\n '12-25': {\n _name: '12-25',\n name: {\n ro: 'Craciun pe stil Nou'\n }\n }\n },\n states: {\n CA: {\n name: 'Cahul',\n days: {\n '11-21': {\n name: {\n ro: 'Ziua Cahul',\n en: 'Cahul Day'\n }\n }\n }\n },\n CU: {\n name: 'Chișinău',\n days: {\n '10-14': {\n name: {\n ro: 'Ziua capitalului',\n en: \"Capital's Day\"\n }\n }\n }\n }\n }\n },\n ME: {\n names: {\n hr: 'Crna Gora',\n sr: 'Црна Гора',\n bs: 'Crna Gora',\n sq: 'Mali i Zi',\n en: 'Montenegro'\n },\n dayoff: 'sunday',\n langs: [\n 'hr',\n 'sr',\n 'bs',\n 'sq'\n ],\n zones: [\n 'Europe/Belgrade'\n ],\n days: {\n '05-21 and if sunday then next tuesday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '05-22 and if sunday then next monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '07-13 and if sunday then next tuesday': {\n substitute: true,\n name: {\n hr: 'Dan državnosti',\n sr: 'Дан државности',\n en: 'Statehood Day'\n }\n },\n '07-14 and if sunday then next monday': {\n substitute: true,\n name: {\n hr: 'Dan državnosti',\n sr: 'Дан државности',\n en: 'Statehood Day'\n }\n },\n '01-01 and if sunday then next tuesday': {\n substitute: true,\n _name: '01-01'\n },\n '01-02 and if sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n '05-01 and if sunday then next tuesday': {\n substitute: true,\n _name: '05-01'\n },\n '05-02 and if sunday then next monday': {\n substitute: true,\n _name: '05-01'\n },\n 'julian 12-24': {\n _name: '12-24'\n },\n 'julian 12-25': {\n _name: '12-25'\n },\n 'julian 12-26': {\n _name: '12-26'\n },\n 'julian 01-01': {\n _name: 'julian 01-01',\n type: 'observance'\n },\n 'orthodox -2': {\n _name: 'easter -2'\n },\n orthodox: {\n _name: 'easter'\n },\n '12-24': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-25'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter'\n },\n '08-15': {\n _name: '08-15',\n type: 'observance'\n },\n '11-01': {\n _name: '11-01'\n },\n '1 Shawwal P3D': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah P3D': {\n _name: '10 Dhu al-Hijjah'\n },\n '1 Muharram': {\n _name: '1 Muharram',\n type: 'observance'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal',\n type: 'observance'\n },\n '27 Rajab': {\n _name: '27 Rajab',\n type: 'observance'\n },\n '15 Shaban': {\n _name: '15 Shaban',\n type: 'observance'\n },\n '1 Ramadan': {\n _name: '1 Ramadan',\n type: 'observance'\n },\n '27 Ramadan': {\n _name: '27 Ramadan',\n type: 'observance'\n },\n '15 Nisan P2D': {\n _name: '15 Nisan'\n },\n '1 Tishrei': {\n _name: '1 Tishrei',\n type: 'observance'\n },\n '10 Tishrei P2D': {\n _name: '10 Tishrei'\n }\n }\n },\n MF: {\n names: {\n en: 'St. Martin',\n fr: 'Saint Martin'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'America/Marigot'\n ],\n dayoff: 'sunday',\n _days: 'FR',\n days: {\n '05-27': {\n name: {\n fr: \"Abolition de l'esclavage\",\n en: 'abolition of slavery'\n }\n }\n }\n },\n MG: {\n names: {\n mg: \"Repoblikan'i Madagasikara\",\n fr: 'République de Madagascar',\n en: 'Madagascar'\n },\n dayoff: 'sunday',\n langs: [\n 'mg',\n 'fr',\n 'en'\n ],\n zones: [\n 'Africa/Nairobi'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '03-08': {\n name: {\n mg: \"Andro iraisam-pirenena ho an'ny vehivavy\",\n fr: 'Journée internationale de la femme',\n en: \"International Women's Day\"\n },\n note: 'only for women'\n },\n '03-29': {\n name: {\n mg: \"Martioran'ny tolona tamin'ny 1947\",\n fr: \"Commémoration des martyrs de l'insurrection de 1947.\",\n en: \"Martyrs' Day\"\n }\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-25': {\n name: {\n mg: \"Andron'i Afrika\",\n fr: \"Jour de l'Afrique\",\n en: 'Africa Day'\n }\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '06-26': {\n _name: 'Independence Day',\n name: {\n mg: 'Fetim-pirenena',\n fr: 'Fête Nationale'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Shawwal': {\n _name: '1 Shawwal',\n note: 'For Muslim'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah',\n note: 'For Muslim'\n }\n }\n },\n MK: {\n names: {\n mk: 'Република Македонија',\n en: 'Macedonia'\n },\n langs: [\n 'mk'\n ],\n zones: [\n 'Europe/Belgrade'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n 'julian 12-25 and if sunday then next monday': {\n substitute: true,\n _name: 'julian 12-25'\n },\n orthodox: {\n _name: 'orthodox'\n },\n 'orthodox 1': {\n _name: 'orthodox 1'\n },\n '05-01 and if sunday then next monday': {\n substitute: true,\n _name: '05-01'\n },\n '05-24 and if sunday then next monday': {\n substitute: true,\n name: {\n mk: 'Св. Кирил и Методиј',\n en: 'Saints Cyril and Methodius Day'\n }\n },\n '08-02 and if sunday then next monday': {\n substitute: true,\n name: {\n mk: 'Ден на Републиката',\n en: 'Day of the Republic'\n }\n },\n '09-08 and if sunday then next monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '10-11 and if sunday then next monday': {\n substitute: true,\n name: {\n mk: 'Ден на востанието',\n en: 'Revolution Day'\n }\n },\n '10-23 and if sunday then next monday': {\n substitute: true,\n name: {\n mk: 'Ден на македонската револуционерна борба',\n en: 'Day of the Macedonian Revolutionary Struggle'\n }\n },\n '12-08 and if sunday then next monday': {\n substitute: true,\n name: {\n mk: 'Св. Климент Охридски',\n en: 'Saint Clement of Ohrid Day'\n }\n },\n '1 Shawwal and if sunday then next monday': {\n substitute: true,\n _name: '1 Shawwal'\n },\n 'julian 12-24': {\n _name: 'julian 12-24',\n type: 'optional',\n note: 'Orthodox believers'\n },\n 'julian 01-06': {\n _name: '01-06',\n type: 'optional',\n note: 'Orthodox believers'\n },\n 'orthodox -2': {\n _name: 'orthodox -2',\n type: 'optional',\n note: 'Orthodox believers'\n },\n 'orthodox 47': {\n name: {\n mk: 'петок пред Духовден',\n en: 'Friday before Pentecost'\n },\n type: 'optional',\n note: 'Orthodox believers'\n },\n 'orthodox 49': {\n _name: 'easter 49',\n type: 'optional',\n note: 'Orthodox believers'\n },\n 'julian 08-15': {\n _name: '08-15',\n type: 'optional',\n note: 'Orthodox believers'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah',\n type: 'optional',\n note: 'Muslim believers'\n },\n '10 Tishrei': {\n _name: '10 Tishrei',\n type: 'optional',\n note: 'Jewish believers'\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'optional',\n note: 'Catholic believers'\n },\n '11-01': {\n _name: '11-01',\n type: 'optional',\n note: 'Catholic believers'\n },\n '12-25': {\n _name: '12-25',\n type: 'optional',\n note: 'Catholic believers'\n },\n '11-22': {\n name: {\n mk: 'Ден на Албанската азбука',\n en: 'Day of the Albanian Alphabet'\n },\n type: 'optional',\n note: 'For members of the Albanian community'\n },\n '12-21': {\n name: {\n mk: 'Ден на настава на турски јазик',\n en: 'Turkish Language Day'\n },\n type: 'optional',\n note: 'For members of the the Turkish community'\n },\n '01-27': {\n name: {\n mk: 'Свети Сава',\n en: 'St. Sava'\n },\n type: 'optional',\n note: 'For members of the Serbian community'\n },\n '04-08': {\n name: {\n mk: 'Меѓународен ден на Ромите',\n en: 'International Roma Day'\n },\n type: 'optional',\n note: 'For members of the the Roma community'\n },\n '05-23': {\n name: {\n mk: 'Национален ден на Властите',\n en: 'National Day of Authorities'\n },\n type: 'optional',\n note: 'For members of the Vlach community'\n },\n '09-28': {\n name: {\n mk: 'Меѓународен ден на Бошњаците',\n en: 'International Day of Bosniaks'\n },\n type: 'optional',\n note: 'For Members of the Bosniak community.'\n }\n }\n },\n ML: {\n names: {\n fr: 'République du Mali',\n en: 'Republic of Mali'\n },\n langs: [\n 'fr',\n 'en'\n ],\n zones: [\n 'Africa/Abidjan'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-20': {\n name: {\n fr: \"Fête de l'armée\",\n en: 'Army Day'\n }\n },\n '03-26': {\n name: {\n fr: 'Journée des Martyrs',\n en: \"Martyrs' Day\"\n }\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '05-25': {\n name: \"Jour de l'Afrique\"\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '09-22': {\n _name: 'Independence Day',\n name: {\n fr: \"Fête nationale de l'indépendance\"\n }\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n }\n }\n },\n MQ: {\n names: {\n fr: 'Martinique',\n en: 'Martinique'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'America/Martinique'\n ],\n dayoff: 'sunday',\n _days: 'FR',\n days: {\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-22': {\n _name: 'Abolition of Slavery'\n },\n '07-21': {\n name: {\n fr: 'Jour de Victor Schoelcher',\n en: 'Victor Shoelcher Day'\n }\n }\n }\n },\n MR: {\n names: {\n ar: 'الجمهورية الإسلامية الموريتانية',\n en: 'Mauritania'\n },\n langs: [\n 'ar',\n 'fr'\n ],\n zones: [\n 'Africa/Abidjan'\n ],\n dayoff: '',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-25': {\n name: {\n ar: 'يوم افريقيا',\n en: 'Africa Day'\n }\n },\n '11-28': {\n _name: 'Independence Day'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah P3D': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n MS: {\n names: {\n en: 'Montserrat'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if Saturday then next Monday if Sunday then next Tuesday': {\n substitute: true,\n _name: '01-01'\n },\n '03-17 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: \"Saint Patrick's Day\"\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '1st Monday in May': {\n _name: '05-01'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '2nd Monday after 06-02': {\n name: {\n en: \"Queen's Birthday Celebration\"\n }\n },\n '08-01 if Saturday, Sunday then next Monday': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '12-25 and if Saturday then next Monday if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if Saturday then next Monday if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-26'\n },\n '12-31 and if Saturday then next Monday if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-31',\n name: {\n en: 'Festival Day'\n }\n }\n }\n },\n MT: {\n names: {\n mt: 'Malta',\n en: 'Malta'\n },\n dayoff: 'sunday',\n langs: [\n 'mt'\n ],\n zones: [\n 'Europe/Malta'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-10': {\n name: {\n en: \"Feast of Saint Paul's Shipwreck in Malta\",\n mt: \"Nawfraġju ta' San Pawl\"\n }\n },\n '03-19': {\n _name: '03-19'\n },\n '03-31': {\n name: {\n en: 'Freedom Day',\n mt: 'Jum il-Ħelsien'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-01': {\n _name: '05-01'\n },\n '06-07': {\n name: {\n mt: 'Sette Giugno',\n en: 'June 7th'\n }\n },\n '06-29': {\n _name: '06-29'\n },\n '08-15': {\n _name: '08-15'\n },\n '09-08': {\n name: {\n en: 'Victory Day',\n mt: 'Jum il-Vitorja'\n }\n },\n '09-21': {\n _name: 'Independence Day'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-13': {\n name: {\n en: 'Republic Day',\n mt: 'Jum ir-Repubblika'\n }\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n MW: {\n names: {\n en: 'Malawi'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Maputo'\n ],\n days: {\n '01-01 and if saturday,sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n '01-15 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n en: 'John Chilembwe Day'\n }\n },\n '03-03 and if saturday,sunday then next monday': {\n name: {\n en: \"Martyrs' Day\"\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01 and if saturday,sunday then next monday': {\n _name: '05-01'\n },\n '05-14 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n en: 'Kamuzu Day'\n }\n },\n '07-06 and if saturday,sunday then next monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '10-15 and if saturday,sunday then next monday': {\n substitute: true,\n _name: 'Mothers Day'\n },\n '12-25 and if saturday,sunday then next monday': {\n substitute: true,\n _name: '12-25'\n },\n '1 Shawwal and if saturday,sunday then next monday': {\n substitute: true,\n _name: '1 Shawwal',\n name: {\n en: 'Eid al Fitri'\n }\n }\n }\n },\n MX: {\n names: {\n es: 'México',\n en: 'Mexico'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Mexico_City',\n 'America/Cancun',\n 'America/Merida',\n 'America/Monterrey',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Chihuahua',\n 'America/Ojinaga',\n 'America/Hermosillo',\n 'America/Tijuana',\n 'America/Santa_Isabel',\n 'America/Bahia_Banderas'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-05': {\n _name: 'Constitution Day'\n },\n '1st monday in February': {\n name: {\n en: 'Constitution Day (day off)',\n es: 'Día de la Constitución (día libre)'\n }\n },\n '03-21': {\n name: {\n en: \"Benito Juárez's birthday\",\n es: 'Natalicio de Benito Juárez'\n }\n },\n '3rd monday in March': {\n name: {\n en: \"Benito Juárez's birthday (day off)\",\n es: 'Natalicio de Benito Juárez (día libre)'\n }\n },\n 'easter -3': {\n _name: 'easter -3',\n type: 'bank'\n },\n 'easter -2': {\n _name: 'easter -2',\n type: 'bank'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-10': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '09-16': {\n _name: 'Independence Day'\n },\n '11-02': {\n _name: '11-02',\n type: 'bank'\n },\n '11-20': {\n _name: 'Revolution Day'\n },\n '3rd monday in November': {\n name: {\n en: 'Revolution Day (day off)',\n es: 'Día de la Revolución (día libre)'\n }\n },\n '12-01 every 6 years since 1934': {\n name: {\n en: 'Change of Federal Government',\n es: 'Transmisión del Poder Ejecutivo Federal'\n }\n },\n '12-12': {\n name: {\n en: 'Day of the Virgin of Guadalupe',\n es: 'Día de la Virgen de Guadalupe'\n },\n type: 'bank'\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n MY: {\n names: {\n en: 'Malaysia'\n },\n langs: [\n 'ms'\n ],\n zones: [\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching'\n ],\n dayoff: 'Saturday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'substitutes 01-01 if Sunday then next Monday': {\n substitute: true,\n _name: '01-01'\n },\n 'chinese 01-0-01': {\n name: {\n en: 'Chinese New Year',\n ms: 'Tahun Baru Cina'\n }\n },\n 'chinese 01-0-02': {\n name: {\n en: 'Chinese New Year',\n ms: 'Tahun Baru Cina'\n }\n },\n 'substitutes chinese 01-0-01 if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Chinese New Year',\n ms: 'Tahun Baru Cina'\n }\n },\n 'substitutes chinese 01-0-02 if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Chinese New Year',\n ms: 'Tahun Baru Cina'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n 'substitutes 05-01 if Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n '1st Monday in June': {\n name: {\n en: \"Yang di-Pertuan Agong's Birthday\",\n ms: 'Hari Keputeraan Yang di-Pertuan Agong'\n }\n },\n '08-31': {\n _name: 'Independence Day'\n },\n 'substitutes 08-31 if Sunday then next Monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '09-16': {\n name: {\n en: 'Malaysia Day',\n ms: 'Hari Malaysia'\n }\n },\n 'substitutes 09-16 if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Malaysia Day',\n ms: 'Hari Malaysia'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n 'substitutes 12-25 if Sunday then next Monday': {\n substitute: true,\n _name: '12-25'\n },\n '17 Ramadan': {\n _name: '17 Ramadan',\n disable: [\n '2022-04-18'\n ],\n enable: [\n '2022-04-19'\n ]\n },\n '1 Shawwal': {\n _name: '1 Shawwal',\n disable: [\n '2022-05-02'\n ],\n enable: [\n '2022-05-03'\n ]\n },\n '2 Shawwal': {\n _name: '1 Shawwal',\n disable: [\n '2022-05-03'\n ],\n enable: [\n '2022-05-04'\n ]\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah',\n disable: [\n '2022-07-09'\n ],\n enable: [\n '2022-07-10'\n ]\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal',\n disable: [\n '2022-10-08'\n ],\n enable: [\n '2022-10-09'\n ]\n },\n '2010-05-28': {\n _name: 'Vesak'\n },\n '2011-05-17': {\n _name: 'Vesak'\n },\n '2012-05-06': {\n _name: 'Vesak'\n },\n '2013-05-25': {\n _name: 'Vesak'\n },\n '2014-05-15': {\n _name: 'Vesak'\n },\n '2015-06-02': {\n _name: 'Vesak'\n },\n '2016-05-22': {\n _name: 'Vesak'\n },\n '2017-05-10': {\n _name: 'Vesak'\n },\n '2018-05-29': {\n _name: 'Vesak'\n },\n '2019-05-19': {\n _name: 'Vesak'\n },\n '2020-05-07': {\n _name: 'Vesak'\n },\n '2021-05-26': {\n _name: 'Vesak'\n },\n '2022-05-15': {\n _name: 'Vesak'\n },\n '2022-05-16': {\n substitute: true,\n _name: 'Vesak'\n },\n '2023-05-04': {\n _name: 'Vesak'\n },\n '2024-05-22': {\n _name: 'Vesak'\n },\n '2025-05-12': {\n _name: 'Vesak'\n },\n '2026-05-31': {\n _name: 'Vesak'\n },\n '2016-10-29': {\n _name: 'Deepavali'\n },\n '2017-10-18': {\n _name: 'Deepavali'\n },\n '2018-11-06': {\n _name: 'Deepavali'\n },\n '2019-10-27': {\n _name: 'Deepavali'\n },\n '2019-10-28': {\n substitute: true,\n _name: 'Deepavali'\n },\n '2020-11-14': {\n _name: 'Deepavali'\n },\n '2021-11-04': {\n _name: 'Deepavali'\n },\n '2022-10-24': {\n _name: 'Deepavali'\n },\n '2023-11-12': {\n _name: 'Deepavali'\n },\n '2023-11-13': {\n substitute: true,\n _name: 'Deepavali'\n },\n '2024-10-31': {\n _name: 'Deepavali'\n },\n '2025-10-20': {\n _name: 'Deepavali'\n },\n '2026-11-09': {\n _name: 'Deepavali'\n },\n '2027-10-28': {\n _name: 'Deepavali'\n },\n '2028-11-15': {\n _name: 'Deepavali'\n },\n '2029-11-05': {\n _name: 'Deepavali'\n },\n '2030-10-25': {\n _name: 'Deepavali'\n }\n },\n states: {\n 10: {\n name: 'Selangor',\n days: {\n '12-11': {\n name: {\n en: \"Sultan of Selangor's Birthday\",\n id: 'Hari Keputeraan Sultan Selangor'\n }\n },\n '2016-01-24': {\n _name: 'Thaipusam'\n },\n '2017-02-10': {\n _name: 'Thaipusam'\n },\n '2018-01-31': {\n _name: 'Thaipusam'\n },\n '2019-01-21': {\n _name: 'Thaipusam'\n },\n '2020-02-08': {\n _name: 'Thaipusam'\n },\n '2021-01-28': {\n _name: 'Thaipusam'\n },\n '2022-01-18': {\n _name: 'Thaipusam'\n },\n '2023-02-05': {\n _name: 'Thaipusam'\n },\n '2024-01-25': {\n _name: 'Thaipusam'\n },\n '2025-02-11': {\n _name: 'Thaipusam'\n },\n '2026-02-01': {\n _name: 'Thaipusam'\n }\n }\n },\n 11: {\n name: 'Terengganu',\n days: {\n '01-01': false,\n '03-04': {\n name: {\n en: 'Anniversary of Installation of the Sultan of Terengganu',\n ms: 'Hari Ulang Tahun Pertabalan Sultan Terengganu'\n }\n },\n '04-26': {\n name: {\n en: \"Sultan of Terengganu's Birthday\",\n ms: 'Hari Keputeraan Sultan Terengganu'\n }\n },\n '27 Rajab': {\n _name: '27 Rajab'\n },\n '9 Dhu al-Hijjah': {\n _name: '9 Dhu al-Hijjah'\n },\n '11 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n 12: {\n name: 'Sabah',\n days: {\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-30': {\n name: {\n en: 'Tadau Kaamatan',\n ms: 'Pesta Kaamatan'\n }\n },\n '05-31': {\n name: {\n en: 'Tadau Kaamatan',\n ms: 'Pesta Kaamatan'\n }\n },\n '1st Saturday in October': {\n name: {\n en: \"Sabah State Governor's Birthday\",\n ms: 'Hari Jadi Yang di-Pertua Negeri Sabah'\n }\n },\n '12-24': {\n _name: '12-24'\n },\n '17 Ramadan': false\n }\n },\n 13: {\n name: 'Sarawak',\n days: {\n '2016-10-29': false,\n '2017-10-18': false,\n '2018-11-06': false,\n '2019-10-27': false,\n '2020-11-14': false,\n '2021-11-04': false,\n '2022-10-24': false,\n '2023-11-13': false,\n '2024-10-31': false,\n '2025-10-20': false,\n '2026-11-09': false,\n '2027-10-28': false,\n '2028-11-15': false,\n '2029-11-05': false,\n '2030-10-25': false,\n 'easter -2': {\n _name: 'easter -2'\n },\n '06-01': {\n name: {\n en: 'Gawai Dayak',\n ms: 'Perayaan Hari Gawai Dayak'\n }\n },\n '06-02': {\n name: {\n en: 'Gawai Dayak',\n ms: 'Perayaan Hari Gawai Dayak'\n }\n },\n '07-22': {\n name: {\n en: 'Sarawak Independence Day',\n ms: 'Hari Kemerdekaan Sarawak'\n }\n },\n '2nd Saturday in October': {\n name: {\n en: \"Sarawak State Governor's Birthday\",\n ms: 'Hari Jadi Yang di-Pertua Negeri Sarawak'\n }\n },\n '17 Ramadan': false\n }\n },\n 14: {\n name: 'Kuala Lumpur',\n days: {\n '02-01': {\n name: {\n en: 'Federal Territory Day',\n ms: 'Hari Wilayah Persekutuan'\n }\n },\n '2016-01-24': {\n _name: 'Thaipusam'\n },\n '2017-02-10': {\n _name: 'Thaipusam'\n },\n '2018-01-31': {\n _name: 'Thaipusam'\n },\n '2019-01-21': {\n _name: 'Thaipusam'\n },\n '2020-02-08': {\n _name: 'Thaipusam'\n },\n '2021-01-28': {\n _name: 'Thaipusam'\n },\n '2022-01-18': {\n _name: 'Thaipusam'\n },\n '2023-02-05': {\n _name: 'Thaipusam'\n },\n '2024-01-25': {\n _name: 'Thaipusam'\n },\n '2025-02-11': {\n _name: 'Thaipusam'\n },\n '2026-02-01': {\n _name: 'Thaipusam'\n }\n }\n },\n 15: {\n name: 'Labuan',\n days: {\n '02-01': {\n name: {\n en: 'Federal Territory Day',\n ms: 'Hari Wilayah Persekutuan'\n }\n },\n '05-30': {\n name: {\n en: 'Tadau Kaamatan',\n ms: 'Pesta Kaamatan'\n }\n },\n '05-31': {\n name: {\n en: 'Tadau Kaamatan',\n ms: 'Pesta Kaamatan'\n }\n }\n }\n },\n 16: {\n name: 'Putrajaya',\n days: {\n '02-01': {\n name: {\n en: 'Federal Territory Day',\n ms: 'Hari Wilayah Persekutuan'\n }\n },\n '2016-01-24': {\n _name: 'Thaipusam'\n },\n '2017-02-10': {\n _name: 'Thaipusam'\n },\n '2018-01-31': {\n _name: 'Thaipusam'\n },\n '2019-01-21': {\n _name: 'Thaipusam'\n },\n '2020-02-08': {\n _name: 'Thaipusam'\n },\n '2021-01-28': {\n _name: 'Thaipusam'\n },\n '2022-01-18': {\n _name: 'Thaipusam'\n },\n '2023-02-05': {\n _name: 'Thaipusam'\n },\n '2024-01-25': {\n _name: 'Thaipusam'\n },\n '2025-02-11': {\n _name: 'Thaipusam'\n },\n '2026-02-01': {\n _name: 'Thaipusam'\n }\n }\n },\n '01': {\n name: 'Johor',\n days: {\n '01-01': false,\n '03-23': {\n name: {\n en: \"Sultan of Johor's Birthday\",\n ms: 'Hari Keputeraan Sultan Johor'\n }\n },\n '1 Ramadan': {\n _name: '1 Ramadan'\n },\n '17 Ramadan': false,\n '6 Safar': {\n name: {\n en: 'Hari Hol of Sultan Iskandar of Johor',\n ms: 'Hari Hol Almarhum Sultan Iskandar'\n }\n },\n '2016-01-24': {\n _name: 'Thaipusam'\n },\n '2017-02-10': {\n _name: 'Thaipusam'\n },\n '2018-01-31': {\n _name: 'Thaipusam'\n },\n '2019-01-21': {\n _name: 'Thaipusam'\n },\n '2020-02-08': {\n _name: 'Thaipusam'\n },\n '2021-01-28': {\n _name: 'Thaipusam'\n },\n '2022-01-18': {\n _name: 'Thaipusam'\n },\n '2023-02-05': {\n _name: 'Thaipusam'\n },\n '2024-01-25': {\n _name: 'Thaipusam'\n },\n '2025-02-11': {\n _name: 'Thaipusam'\n },\n '2026-02-01': {\n _name: 'Thaipusam'\n }\n }\n },\n '02': {\n name: 'Kedah',\n days: {\n '01-01': false,\n '3rd Sunday in June': {\n name: {\n en: \"Sultan of Kedah's Birthday\",\n ms: 'Hari Keputeraan Sultan Kedah'\n }\n },\n '27 Rajab': {\n _name: '27 Rajab'\n },\n '1 Ramadan': {\n _name: '1 Ramadan'\n },\n '17 Ramadan': false,\n '11 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '2016-01-24': {\n _name: 'Thaipusam'\n },\n '2017-02-10': {\n _name: 'Thaipusam'\n },\n '2018-01-31': {\n _name: 'Thaipusam'\n },\n '2019-01-21': {\n _name: 'Thaipusam'\n },\n '2020-02-08': {\n _name: 'Thaipusam'\n },\n '2021-01-28': {\n _name: 'Thaipusam'\n },\n '2022-01-18': {\n _name: 'Thaipusam'\n },\n '2023-02-05': {\n _name: 'Thaipusam'\n },\n '2024-01-25': {\n _name: 'Thaipusam'\n },\n '2025-02-11': {\n _name: 'Thaipusam'\n },\n '2026-02-01': {\n _name: 'Thaipusam'\n }\n }\n },\n '03': {\n name: 'Kelantan',\n days: {\n '01-01': false,\n '11 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '11-11': {\n name: {\n en: \"Sultan of Kelantan's Birthday\",\n ms: 'Hari Keputeraan Sultan Kelantan'\n }\n },\n '11-12': {\n name: {\n en: \"Sultan of Kelantan's Birthday\",\n ms: 'Hari Keputeraan Sultan Kelantan'\n }\n }\n }\n },\n '04': {\n name: 'Malacca',\n days: {\n '04-15': {\n name: {\n en: 'Declaration of Malacca City as Historical City',\n ms: 'Hari Perisytiharan Bandar Melaka sebagai Bandaraya Bersejarah'\n }\n },\n '08-24': {\n name: {\n en: \"Melaka State Governor's Birthday\",\n ms: 'Hari Jadi Yang di-Pertua Negeri Melaka'\n }\n },\n '1 Ramadan': {\n _name: '1 Ramadan'\n },\n '17 Ramadan': false\n }\n },\n '05': {\n name: 'Negeri Sembilan',\n days: {\n '01-14': {\n name: {\n en: \"Yang di-Pertuan Besar of Negeri Sembilan's Birthday\",\n ms: 'Hari Keputeraan Yang di-Pertuan Besar Negeri Sembilan'\n }\n },\n '27 Rajab': {\n _name: '27 Rajab'\n },\n '17 Ramadan': false,\n '2016-01-24': {\n _name: 'Thaipusam'\n },\n '2017-02-10': {\n _name: 'Thaipusam'\n },\n '2018-01-31': {\n _name: 'Thaipusam'\n },\n '2019-01-21': {\n _name: 'Thaipusam'\n },\n '2020-02-08': {\n _name: 'Thaipusam'\n },\n '2021-01-28': {\n _name: 'Thaipusam'\n },\n '2022-01-18': {\n _name: 'Thaipusam'\n },\n '2023-02-05': {\n _name: 'Thaipusam'\n },\n '2024-01-25': {\n _name: 'Thaipusam'\n },\n '2025-02-11': {\n _name: 'Thaipusam'\n },\n '2026-02-01': {\n _name: 'Thaipusam'\n }\n }\n },\n '06': {\n name: 'Pahang',\n days: {\n '05-22': {\n name: {\n en: 'Hari Hol of Pahang',\n ms: 'Hari Hol Pahang'\n }\n },\n '07-30': {\n name: {\n en: \"Sultan of Pahang's Birthday\",\n ms: 'Hari Keputeraan Sultan Pahang'\n }\n }\n }\n },\n '07': {\n name: 'Penang',\n days: {\n '07-07': {\n name: {\n en: 'Declaration of George Town as World Heritage Site',\n id: 'Hari Ulang Tahun Perisytiharan Tapak Warisan Dunia'\n }\n },\n '2nd Saturday in July': {\n name: {\n en: \"Penang State Governor's Birthday\",\n ms: 'Hari Jadi Yang di-Pertua Negeri Pulau Pinang'\n }\n },\n '2016-01-24': {\n _name: 'Thaipusam'\n },\n '2017-02-10': {\n _name: 'Thaipusam'\n },\n '2018-01-31': {\n _name: 'Thaipusam'\n },\n '2019-01-21': {\n _name: 'Thaipusam'\n },\n '2020-02-08': {\n _name: 'Thaipusam'\n },\n '2021-01-28': {\n _name: 'Thaipusam'\n },\n '2022-01-18': {\n _name: 'Thaipusam'\n },\n '2023-02-05': {\n _name: 'Thaipusam'\n },\n '2024-01-25': {\n _name: 'Thaipusam'\n },\n '2025-02-11': {\n _name: 'Thaipusam'\n },\n '2026-02-01': {\n _name: 'Thaipusam'\n }\n }\n },\n '08': {\n name: 'Perak',\n days: {\n '1st Friday in November': {\n name: {\n en: \"Sultan of Perak's Birthday\",\n ms: 'Hari Keputeraan Sultan Perak'\n }\n },\n '2016-01-24': {\n _name: 'Thaipusam'\n },\n '2017-02-10': {\n _name: 'Thaipusam'\n },\n '2018-01-31': {\n _name: 'Thaipusam'\n },\n '2019-01-21': {\n _name: 'Thaipusam'\n },\n '2020-02-08': {\n _name: 'Thaipusam'\n },\n '2021-01-28': {\n _name: 'Thaipusam'\n },\n '2022-01-18': {\n _name: 'Thaipusam'\n },\n '2023-02-05': {\n _name: 'Thaipusam'\n },\n '2024-01-25': {\n _name: 'Thaipusam'\n },\n '2025-02-11': {\n _name: 'Thaipusam'\n },\n '2026-02-01': {\n _name: 'Thaipusam'\n }\n }\n },\n '09': {\n name: 'Perlis',\n days: {\n '01-01': false,\n '07-17': {\n name: {\n en: \"Raja of Perlis's Birthday\",\n id: 'Hari Keputeraan Raja Perlis'\n }\n },\n '27 Rajab': {\n _name: '27 Rajab'\n },\n '11 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n }\n }\n },\n MZ: {\n names: {\n pt: 'Moçambique',\n en: 'Mozambique'\n },\n dayoff: 'sunday',\n langs: [\n 'pt'\n ],\n zones: [\n 'Africa/Maputo'\n ],\n days: {\n '01-01': {\n _name: '01-01',\n name: {\n pt: 'Dia da Fraternidade universal'\n }\n },\n 'substitutes 01-01 if sunday then next monday': {\n _name: 'Public Holiday'\n },\n '02-03': {\n name: {\n pt: 'Dia dos heróis moçambicanos',\n en: 'Heroes’ Day'\n }\n },\n 'substitutes 02-03 if sunday then next monday': {\n _name: 'Public Holiday'\n },\n '04-07': {\n name: {\n pt: 'Dia da Mulher Moçambicana',\n en: 'Women’s Day'\n }\n },\n 'substitutes 04-07 if sunday then next monday': {\n _name: 'Public Holiday'\n },\n '05-01': {\n _name: '05-01',\n name: {\n pt: 'Dia Internacional dos Trabalhadores',\n en: \"Workers' Day\"\n }\n },\n 'substitutes 05-01 if sunday then next monday': {\n _name: 'Public Holiday'\n },\n '1st sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '06-25': {\n _name: 'Independence Day',\n name: {\n pt: 'Dia da Independência Nacional'\n }\n },\n 'substitutes 06-25 if sunday then next monday': {\n _name: 'Public Holiday'\n },\n '09-07': {\n name: {\n pt: 'Dia da Vitória',\n en: 'Lusaka Peace Agreement'\n }\n },\n 'substitutes 09-07 if sunday then next monday': {\n _name: 'Public Holiday'\n },\n '09-25': {\n name: {\n pt: 'Dia das Forças Armadas de Libertação Nacional',\n en: 'Defense Force’s Day'\n }\n },\n 'substitutes 09-25 if sunday then next monday': {\n _name: 'Public Holiday'\n },\n '10-04': {\n name: {\n pt: 'Dia da Paz e Reconciliação',\n en: 'Peace and Reconciliation Day'\n }\n },\n 'substitutes 10-04 if sunday then next monday': {\n _name: 'Public Holiday'\n },\n '12-25': {\n _name: '12-25',\n name: {\n pt: 'Dia da Família',\n en: 'Family Day'\n }\n },\n 'substitutes 12-25 if sunday then next monday': {\n _name: 'Public Holiday'\n }\n }\n },\n NA: {\n names: {\n en: 'Namibia'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Windhoek'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'substitutes 01-01 if sunday then next monday': {\n name: 'Public Holiday'\n },\n '03-21': {\n _name: 'Independence Day'\n },\n 'substitutes 03-21 if sunday then next monday': {\n name: 'Public Holiday'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01',\n name: {\n en: 'Workers Day'\n }\n },\n 'substitutes 05-01 if sunday then next monday': {\n name: 'Public Holiday'\n },\n '05-04': {\n name: {\n en: 'Cassinga Day'\n }\n },\n 'substitutes 05-04 if sunday then next monday': {\n name: 'Public Holiday'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '05-25': {\n name: {\n en: 'Africa Day'\n }\n },\n 'substitutes 05-25 if sunday then next monday': {\n name: 'Public Holiday'\n },\n '08-26': {\n name: {\n en: \"Heroes' Day\"\n }\n },\n 'substitutes 08-26 if sunday then next monday': {\n name: 'Public Holiday'\n },\n '12-10': {\n name: {\n en: 'Human Rights Day'\n }\n },\n 'substitutes 12-10 if sunday then next monday': {\n name: 'Public Holiday'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26',\n name: {\n en: 'Day of Goodwill'\n }\n },\n 'substitutes 12-26 if sunday then next monday': {\n name: 'Public Holiday'\n }\n }\n },\n NC: {\n names: {\n fr: 'Nouvelle-Calédonie',\n en: 'New Caledonia'\n },\n dayoff: 'sunday',\n zones: [\n 'Pacific/Noumea'\n ],\n langs: [\n 'fr'\n ],\n _days: 'FR',\n days: {\n '01-01': {\n name: {\n fr: \"Jour de l'an\"\n }\n },\n '09-24': {\n name: {\n fr: 'Fête de la Citonneyeté',\n en: 'New Caledonia Day'\n }\n }\n }\n },\n NE: {\n names: {\n fr: 'République du Niger',\n en: 'Republic of the Niger'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'Africa/Lagos'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '04-24': {\n name: {\n fr: 'Journée Nationale de la Concorde',\n en: 'Concord Day'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '08-03': {\n _name: 'Independence Day',\n name: {\n fr: \"Proclamation de l'indépendance\"\n }\n },\n '12-18': {\n name: {\n fr: 'Proclamation de la République',\n en: 'Republic Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '27 Ramadan': {\n _name: '27 Ramadan'\n }\n }\n },\n NG: {\n names: {\n en: 'Nigeria'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Lagos'\n ],\n dayoff: 'Saturday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '05-01 and if Saturday then next Monday': {\n substitute: true,\n _name: '05-01',\n name: {\n en: \"Worker's Day\"\n }\n },\n '05-27': {\n name: {\n en: \"Children's Day\",\n type: 'school'\n }\n },\n '05-29 prior to 2018': {\n name: {\n en: 'Democracy Day'\n }\n },\n '06-12 prior to 2018': {\n name: {\n en: 'M.K.O Abiola Day'\n }\n },\n '06-12 and if Saturday then next Monday since 2018': {\n substitute: true,\n name: {\n en: 'Democracy Day'\n }\n },\n '10-01': {\n _name: 'Independence Day'\n },\n '11-01 since 2020': {\n name: {\n en: 'National Youth Day'\n }\n },\n '12-31': {\n _name: '12-31',\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal P2D': {\n _name: '1 Shawwal',\n name: {\n en: 'Id el Fitr'\n }\n },\n '10 Dhu al-Hijjah P2D': {\n _name: '10 Dhu al-Hijjah',\n name: {\n en: 'Id el Kabir'\n }\n }\n }\n },\n NI: {\n names: {\n es: 'Nicaragua',\n en: 'Nicaragua'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Managua'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-18': {\n name: {\n en: 'Birthday of Rubén Darío',\n es: 'Natalicio de Rubén Darío'\n },\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-30': {\n _name: 'Mothers Day',\n name: {\n es: 'Día de la madre nicaragüense'\n },\n type: 'observance'\n },\n '06-01': {\n name: {\n en: \"Children's Day\",\n es: 'Día del niño'\n }\n },\n '06-23': {\n _name: 'Fathers Day',\n name: {\n es: 'Día del padre nicaragüense'\n },\n type: 'observance'\n },\n '07-19': {\n name: {\n en: 'Revolution Day',\n es: 'Triunfo de la Revolución Popular'\n }\n },\n '09-14': {\n name: {\n en: 'Battle of San Jacinto',\n es: 'Batalla de San Jacinto'\n }\n },\n '09-15': {\n _name: 'Independence Day'\n },\n '10-12': {\n name: {\n en: 'Indigenous Resistance Day',\n es: 'Día de la resistencia indígena'\n }\n },\n '12-08': {\n _name: '12-08'\n },\n '12-24': {\n _name: '12-24',\n type: 'observance'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-31': {\n _name: '12-31',\n type: 'observance'\n }\n }\n },\n NL: {\n names: {\n nl: 'Nederland',\n en: 'Netherlands'\n },\n dayoff: 'sunday',\n langs: [\n 'nl'\n ],\n zones: [\n 'Europe/Amsterdam'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-27 if sunday then previous saturday': {\n name: {\n nl: 'Koningsdag'\n }\n },\n '05-04': {\n name: {\n nl: 'Nationale Dodenherdenking'\n },\n type: 'observance'\n },\n '05-05': {\n name: {\n nl: 'Bevrijdingsdag'\n },\n type: 'observance'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '3rd sunday in June': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '3rd tuesday in September': {\n name: {\n nl: 'Prinsjesdag'\n },\n note: 'Scholen in Den Haag geven meestal 1 dag vrij',\n type: 'observance'\n },\n '11-11': {\n _name: '11-11',\n type: 'observance'\n },\n '12-05': {\n name: {\n nl: 'Sinterklaasavond',\n en: \"St Nicholas' Eve\"\n },\n type: 'observance'\n },\n '12-15': {\n name: {\n nl: 'Koninkrijksdag',\n en: 'Kingdom Day'\n },\n type: 'observance'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31': {\n _name: '12-31',\n type: 'bank'\n }\n }\n },\n NO: {\n names: {\n no: 'Norge',\n en: 'Norway'\n },\n dayoff: 'sunday',\n langs: [\n 'no'\n ],\n zones: [\n 'Europe/Oslo'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-21': {\n name: {\n no: 'H.K.H. prinsesse Ingrid Alexandra',\n en: 'Birthday of Princess Ingrid Alexandra'\n },\n type: 'observance'\n },\n '02-06': {\n name: {\n no: 'Samefolkets dag',\n en: 'Day of the Sami people'\n },\n type: 'observance'\n },\n '2nd sunday in February': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '02-14': {\n _name: '02-14',\n type: 'observance'\n },\n '02-21': {\n name: {\n no: 'H.M. kong Harald V',\n en: 'Birthday of King Harald V'\n },\n type: 'observance'\n },\n 'easter -49': {\n name: {\n no: 'Fastelavn',\n en: 'Carnival'\n },\n type: 'observance'\n },\n 'easter -46': {\n _name: 'easter -46',\n type: 'observance'\n },\n '03-08': {\n _name: '03-08',\n type: 'observance'\n },\n 'easter -7': {\n _name: 'easter -7',\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-01': {\n _name: '04-01',\n type: 'observance'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-08': {\n _name: 'Liberation Day',\n type: 'observance'\n },\n '05-17': {\n _name: 'Constitution Day'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '06-07': {\n name: {\n no: 'Unionsoppløsningen',\n en: 'Union Dissolution Day'\n },\n type: 'observance'\n },\n '06-23': {\n name: {\n no: 'Sankthansaften',\n en: 'Midsummar Eve'\n },\n type: 'observance'\n },\n '07-04': {\n name: {\n no: 'H.M. dronning Sonja',\n en: 'Birthday of Queen Sonja'\n },\n type: 'observance'\n },\n '07-20': {\n name: {\n no: 'H.K.H. kronprins Haakon Magnus',\n en: 'Birthday of Crown Prince Haakon Magnus'\n },\n type: 'observance'\n },\n '07-29': {\n name: {\n no: 'Olsok',\n en: 'Olsok'\n },\n type: 'optional'\n },\n '08-19': {\n name: {\n no: 'H.K.H. kronprinsesse Mette-Marit',\n en: 'Birthday of Crown Princess Mette-Marit'\n },\n type: 'observance'\n },\n '1st sunday in November': {\n name: {\n no: 'Allehelgensaften',\n en: \"All Saints' Day\"\n },\n type: 'observance'\n },\n '2nd sunday in November': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n '4th sunday before 12-24': {\n name: {\n no: 'Første søndag i advent',\n en: 'First Sunday of Advent'\n },\n type: 'observance'\n },\n '3rd sunday before 12-24': {\n name: {\n no: 'Andre søndag i advent',\n en: 'Second Sunday of Advent'\n },\n type: 'observance'\n },\n '2nd sunday before 12-24': {\n name: {\n no: 'Tredje søndag i advent',\n en: 'Third Sunday of Advent'\n },\n type: 'observance'\n },\n '1st sunday before 12-24': {\n name: {\n no: 'Fjerde søndag i advent',\n en: 'Fourth Sunday of Advent'\n },\n type: 'observance'\n },\n '12-24': {\n _name: '12-24',\n type: 'bank'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31 14:00 if sunday then 00:00': {\n _name: '12-31',\n type: 'bank'\n }\n }\n },\n NZ: {\n names: {\n en: 'New Zealand',\n mi: 'Aotearoa'\n },\n dayoff: 'sunday',\n langs: [\n 'en',\n 'mi'\n ],\n zones: [\n 'Pacific/Auckland',\n 'Pacific/Chatham'\n ],\n days: {\n '01-01 and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '01-01'\n },\n '01-02 and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n name: {\n en: \"Day after New Year's Day\"\n }\n },\n '02-06 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n en: 'Waitangi Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-25 and if saturday,sunday then next monday': {\n substitute: true,\n name: {\n en: 'ANZAC Day'\n }\n },\n '1st monday in June prior to 2023': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '1st monday in June since 2023': {\n name: {\n en: \"King's Birthday\"\n }\n },\n '4th monday in October': {\n _name: '05-01'\n },\n '12-25 and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if saturday then next monday if sunday then next tuesday': {\n substitute: true,\n _name: '12-26'\n },\n '2022-06-24': {\n name: {\n en: 'Matariki'\n }\n },\n '2023-07-14': {\n name: {\n en: 'Matariki'\n }\n },\n '2024-06-28': {\n name: {\n en: 'Matariki'\n }\n },\n '2025-06-20': {\n name: {\n en: 'Matariki'\n }\n },\n '2026-07-10': {\n name: {\n en: 'Matariki'\n }\n },\n '2027-06-25': {\n name: {\n en: 'Matariki'\n }\n },\n '2028-07-14': {\n name: {\n en: 'Matariki'\n }\n },\n '2029-07-06': {\n name: {\n en: 'Matariki'\n }\n },\n '2030-06-21': {\n name: {\n en: 'Matariki'\n }\n },\n '2031-07-11': {\n name: {\n en: 'Matariki'\n }\n },\n '2032-07-02': {\n name: {\n en: 'Matariki'\n }\n },\n '2033-06-24': {\n name: {\n en: 'Matariki'\n }\n },\n '2034-07-07': {\n name: {\n en: 'Matariki'\n }\n },\n '2035-06-29': {\n name: {\n en: 'Matariki'\n }\n },\n '2036-07-18': {\n name: {\n en: 'Matariki'\n }\n },\n '2037-07-10': {\n name: {\n en: 'Matariki'\n }\n },\n '2038-06-25': {\n name: {\n en: 'Matariki'\n }\n },\n '2039-07-15': {\n name: {\n en: 'Matariki'\n }\n },\n '2040-07-06': {\n name: {\n en: 'Matariki'\n }\n },\n '2041-07-19': {\n name: {\n en: 'Matariki'\n }\n },\n '2042-07-11': {\n name: {\n en: 'Matariki'\n }\n },\n '2043-07-03': {\n name: {\n en: 'Matariki'\n }\n },\n '2044-06-24': {\n name: {\n en: 'Matariki'\n }\n },\n '2045-07-07': {\n name: {\n en: 'Matariki'\n }\n },\n '2046-06-29': {\n name: {\n en: 'Matariki'\n }\n },\n '2047-07-19': {\n name: {\n en: 'Matariki'\n }\n },\n '2048-07-03': {\n name: {\n en: 'Matariki'\n }\n },\n '2049-06-25': {\n name: {\n en: 'Matariki'\n }\n },\n '2050-07-15': {\n name: {\n en: 'Matariki'\n }\n },\n '2051-06-30': {\n name: {\n en: 'Matariki'\n }\n },\n '2052-06-21': {\n name: {\n en: 'Matariki'\n }\n },\n '2022-09-26': {\n name: {\n en: 'National Day of Mourning for Queen Elizabeth II'\n }\n }\n },\n states: {\n AUK: {\n names: {\n en: 'Auckland Province',\n mi: 'Tāmaki-makau-rau'\n },\n days: {\n '01-29 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n BOP: {\n names: {\n en: 'Bay of Plenty',\n mi: 'Te Moana-a-Toi'\n },\n days: {\n '01-29 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n CAN: {\n names: {\n en: 'Canterbury',\n mi: 'Waitaha'\n },\n days: {\n 'friday after 2nd tuesday in November': {\n name: {\n en: 'Christchurch Show Day'\n },\n note: 'May differ in parts of North Canterbury'\n }\n },\n regions: {\n Timaru: {\n name: 'Timaru District',\n days: {\n 'friday after 2nd tuesday in November': false,\n '4th monday in September': {\n name: {\n en: 'Dominion Day'\n }\n }\n }\n }\n }\n },\n CIT: {\n names: {\n en: 'Chatham Islands',\n mi: 'Wharekauri'\n },\n days: {\n '11-30 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n GIS: {\n names: {\n en: 'Gisborne',\n mi: 'Te Tai Rāwhiti'\n },\n days: {\n '01-29 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n HKB: {\n names: {\n en: \"Hawke's Bay\",\n mi: 'Te Matau-a-Māui'\n },\n days: {\n 'friday before 4th monday in October': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n MBH: {\n names: {\n en: 'Marlborough',\n mi: 'Te Tauihu-o-te-waka'\n },\n days: {\n '5th monday in October': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n MWT: {\n name: 'Manawatu-Wanganui',\n days: {\n '01-22 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n NSN: {\n names: {\n en: 'Nelson',\n mi: 'Whakatū'\n },\n days: {\n '02-01 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n NTL: {\n names: {\n en: 'Northland',\n mi: 'Te Tai Tokerau'\n },\n days: {\n '01-29 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n OTA: {\n names: {\n en: 'Otago Province',\n mi: 'Ōtākou'\n },\n days: {\n '03-23 if Tuesday,Wednesday,Thursday then previous Monday if Friday,Saturday,Sunday then next Monday if is public holiday then next Monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n STL: {\n names: {\n en: 'Southland',\n mi: 'Murihiku'\n },\n days: {\n 'easter 2': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n TAS: {\n names: {\n en: 'Tasman',\n mi: 'Te Tai-o-Aorere'\n },\n days: {\n '02-01 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n TKI: {\n name: 'Taranaki',\n days: {\n '2nd monday in March': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n WKO: {\n name: 'Waikato',\n days: {\n '01-29 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n WGN: {\n names: {\n en: 'Wellington Province',\n mi: 'Te Whanga-nui-a-Tara'\n },\n days: {\n '01-22 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n },\n WTC: {\n names: {\n en: 'Westland',\n mi: 'Te Tai Poutini'\n },\n days: {\n '12-01 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n },\n regions: {\n Buller: {\n name: 'Buller district',\n days: {\n '12-01 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': false,\n '02-01 if tuesday,wednesday,thursday then previous monday if friday,saturday,sunday then next monday': {\n name: {\n en: 'Provincial anniversary day'\n }\n }\n }\n }\n }\n }\n }\n },\n PA: {\n names: {\n es: 'Panamá',\n en: 'Panama'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Panama'\n ],\n days: {\n '01-01 and if sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n '01-09 and if sunday then next monday': {\n substitute: true,\n name: {\n en: \"Martyrs' Day\",\n es: 'Día de los Mártires Caídos en la Gesta Patriótica'\n }\n },\n 'easter -48': {\n _name: 'easter -48',\n type: 'observance'\n },\n 'easter -47': {\n _name: 'easter -47'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-01 and if sunday then next monday': {\n substitute: true,\n _name: '05-01'\n },\n '07-01 every 5 years since 2014': {\n name: {\n en: 'Presidential Inauguration'\n }\n },\n '11-03 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Separation Day (from Columbia)',\n es: 'Día de la Separación (de Colombia)'\n }\n },\n '11-10 and if sunday then next monday': {\n substitute: true,\n name: {\n es: 'Primer Grito de Independencia'\n }\n },\n '11-28 and if sunday then next monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '12-08 and if sunday then next monday': {\n substitute: true,\n _name: 'Mothers Day'\n },\n '12-25 and if sunday then next monday': {\n substitute: true,\n _name: '12-25'\n }\n }\n },\n PE: {\n names: {\n es: 'Perú',\n en: 'Peru'\n },\n dayoff: 'sunday',\n langs: [\n 'es',\n 'qu'\n ],\n zones: [\n 'America/Lima'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n '05-01': {\n _name: '05-01'\n },\n '06-29': {\n _name: '06-29'\n },\n '07-28': {\n _name: 'Independence Day'\n },\n '07-29': {\n _name: 'Independence Day'\n },\n '08-30': {\n name: {\n en: 'Santa Rosa de Lima',\n es: 'Día de Santa Rosa de Lima'\n }\n },\n '10-08': {\n name: {\n en: 'Battle of Angamos',\n es: 'Combate de Angamos'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-25': {\n _name: '12-25'\n }\n },\n regions: {\n CUS: {\n name: 'Cuzco',\n days: {\n '06-24': {\n name: {\n en: 'Festival of the Sun',\n es: 'Fiesta Inca del Sol',\n qu: 'Inti Raymi'\n },\n type: 'observance'\n }\n }\n }\n }\n },\n PH: {\n names: {\n en: 'Philippines'\n },\n langs: [\n 'en',\n 'fil'\n ],\n zones: [\n 'Asia/Manila'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-23': {\n type: 'observance',\n name: {\n en: 'First Philippine Republic Day',\n fil: 'Araw ng Unang Republika ng Pilipinas'\n }\n },\n 'chinese 01-0-01': {\n type: 'optional',\n name: {\n en: 'Chinese New Year',\n fil: 'Bagong Taon ng mga Tsino'\n }\n },\n '02-02': {\n type: 'observance',\n _name: 'Constitution Day'\n },\n 'chinese 01-0-15': {\n type: 'observance',\n name: {\n en: 'Lantern Festival',\n fil: 'Piyesta ng mga Parol Tsino'\n }\n },\n '02-25': {\n name: {\n en: 'EDSA Revolution Anniversary',\n fil: 'Anibersaryo ng Rebolusyon sa EDSA'\n },\n type: 'optional',\n note: 'Non-working Day'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter -1': {\n _name: 'easter -1',\n type: 'optional',\n note: 'Non-working Day'\n },\n easter: {\n _name: 'easter'\n },\n '04-09': {\n name: {\n en: 'Day of Valor',\n fil: 'Araw ng Kagitingan'\n }\n },\n '04-27': {\n type: 'observance',\n name: {\n en: 'Lapu-Lapu Day',\n fil: 'Araw ni Lapu-Lapu'\n }\n },\n '05-01': {\n _name: '05-01',\n name: {\n en: 'Labour Day',\n fil: 'Araw ng mga Manggagawa'\n }\n },\n '06-12': {\n _name: 'Independence Day'\n },\n '06-19': {\n type: 'observance',\n name: {\n en: \"José Rizal's birthday\",\n fil: 'Araw ng Kapanganakan ni José Rizal'\n },\n active: [\n {\n from: '1961-01-01T00:00:00.000Z'\n }\n ],\n disable: [\n '2011-06-19'\n ]\n },\n '2011-06-19': {\n name: {\n en: \"José Rizal's birthday\",\n fil: 'Araw ng Kapanganakan ni José Rizal'\n }\n },\n '07-27': {\n type: 'observance',\n name: {\n en: 'Iglesia ni Cristo Day',\n fil: 'Araw ng Iglesia ni Cristo'\n }\n },\n '08-21': {\n name: {\n en: 'Ninoy Aquino Day',\n fil: 'Araw ng Kabayanihan ni Ninoy Aquino'\n },\n type: 'optional',\n note: 'Non-working Day'\n },\n '1st monday before September': {\n name: {\n en: \"National Heroes' Day\",\n fil: 'Araw ng mga Bayani'\n }\n },\n 'chinese 08-0-15': {\n type: 'observance',\n name: {\n en: 'Mid-Autumn Festival',\n fil: 'Piyestang Zhōngqiū Jié'\n }\n },\n '11-01': {\n _name: '11-01',\n type: 'optional',\n note: 'Non-working Day'\n },\n '11-02': {\n _name: '11-02',\n type: 'optional',\n note: 'Non-working Day'\n },\n '11-30': {\n name: {\n en: 'Bonifacio Day',\n fil: 'Araw ng Kapanganakan ni Bonifacio'\n }\n },\n '12-08': {\n _name: '12-08',\n name: {\n en: 'Feast of the Immaculate Conception of the Blessed Virgin Mary',\n fil: 'Pagdiriwang ng Kalinis-linisang Paglilihi sa Mahal na Birheng Maria'\n },\n type: 'optional',\n note: 'Non-working Day'\n },\n '12-24': {\n _name: '12-24',\n type: 'optional',\n note: 'Non-working Day'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-30': {\n name: {\n en: 'Rizal Day',\n fil: 'Paggunita sa Kamatayan ni Dr. Jose Rizal'\n }\n },\n '12-31': {\n _name: '12-31',\n type: 'optional',\n note: 'Non-working Day'\n },\n '1 Muharram': {\n type: 'observance',\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n type: 'observance',\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n PL: {\n names: {\n pl: 'Polska',\n en: 'Poland'\n },\n dayoff: 'sunday',\n langs: [\n 'pl'\n ],\n zones: [\n 'Europe/Warsaw'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01',\n name: {\n pl: 'Święto Państwowe; Święto Pracy'\n }\n },\n '05-03': {\n name: {\n pl: 'Święto Narodowe Trzeciego Maja',\n en: 'Constitution Day'\n }\n },\n '05-26': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '11-11': {\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n PM: {\n names: {\n en: 'St. Pierre & Miquelon'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'America/Miquelon'\n ],\n dayoff: 'sunday',\n days: {},\n _days: 'FR'\n },\n PR: {\n names: {\n en: 'Puerto Rico'\n },\n langs: [\n 'es',\n 'en'\n ],\n zones: [\n 'America/Puerto_Rico'\n ],\n dayoff: 'sunday',\n _days: 'US',\n days: {\n '01-06': {\n _name: '01-06'\n },\n '2nd Monday in January': {\n name: {\n es: 'Natalicio de Eugenio María de Hostos',\n en: 'Birthday of Eugenio María de Hostos'\n }\n },\n '02-18': {\n name: {\n es: 'Natalicio de Luis Muñoz Marín',\n en: 'Birthday of Luis Muñoz Marín'\n }\n },\n '03-02 since 2017': {\n name: {\n es: 'Día de la Ciudadanía Americana',\n en: 'American Citizenship Day'\n }\n },\n '03-17': false,\n '03-22': {\n name: {\n es: 'Día de la Abolición de Esclavitud',\n en: 'Emancipation Day'\n }\n },\n '04-16': {\n name: {\n es: 'Natalicio de José de Diego',\n en: 'Birthday of José de Diego'\n }\n },\n '3rd Monday in July': {\n name: {\n es: 'Natalicio de Don Luis Muñoz Rivera',\n en: 'Birthday of Don Luis Muñoz Rivera'\n }\n },\n '07-25': {\n name: {\n es: 'Constitución de Puerto Rico',\n en: 'Puerto Rico Constitution Day'\n }\n },\n '07-27': {\n name: {\n es: 'Natalicio de Dr. José Celso Barbosa',\n en: 'Birthday of Dr. José Celso Barbosa'\n }\n },\n '11-19': {\n name: {\n es: 'Día del Descubrimiento de Puerto Rico',\n en: 'Discovery of Puerto Rico'\n }\n }\n }\n },\n PT: {\n names: {\n pt: 'Portugal',\n en: 'Portugal'\n },\n dayoff: 'sunday',\n langs: [\n 'pt'\n ],\n zones: [\n 'Europe/Lisbon',\n 'Atlantic/Madeira',\n 'Atlantic/Azores'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -47': {\n _name: 'easter -47',\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n '04-25': {\n name: {\n pt: 'Dia da Liberdade',\n en: 'Liberty Day'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '1st sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '06-10': {\n name: {\n pt: 'Dia de Portugal',\n en: 'Portugal Day'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '10-05': {\n name: {\n pt: 'Implantação da República'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n '12-01': {\n name: {\n pt: 'Restauração da Independência'\n }\n },\n '12-08': {\n _name: '12-08'\n },\n '12-24': {\n _name: '12-24',\n type: 'observance'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-31': {\n _name: '12-31',\n type: 'observance'\n }\n }\n },\n PY: {\n names: {\n es: 'Paraguay',\n en: 'Paraguay'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Asuncion'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '03-01': {\n disable: [\n '2017-03-01'\n ],\n enable: [\n '2017-02-27'\n ],\n name: {\n en: \"Heroes' Day\",\n es: 'Dia de los héroes'\n }\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '04-30': {\n name: {\n en: \"Teacher's Day\",\n es: 'Día del Maestro'\n },\n type: 'optional',\n note: 'Affects educational institutions'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-14': {\n _name: 'Independence Day'\n },\n '05-15': {\n _name: 'Independence Day'\n },\n '06-12': {\n name: {\n en: 'Chaco Armistice',\n es: 'Día de la Paz del Chaco'\n },\n disable: [\n '2020-06-12'\n ],\n enable: [\n '2020-06-15'\n ]\n },\n '08-15': {\n _name: '08-15',\n disable: [\n '2017-08-15'\n ],\n enable: [\n '2017-08-14'\n ]\n },\n '09-29': {\n disable: [\n '2017-09-29'\n ],\n enable: [\n '2017-10-02'\n ],\n name: {\n en: 'Boqueron Battle Victory Day',\n es: 'Victoria de Boquerón'\n }\n },\n '12-08': {\n _name: '12-08',\n name: {\n en: 'Virgin of Caacupe',\n es: 'Virgen de Caacupé'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-31': {\n _name: '12-31',\n type: 'bank'\n }\n }\n },\n RE: {\n names: {\n fr: 'Réunion',\n en: 'Réunion'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'Indian/Reunion'\n ],\n dayoff: '',\n _days: 'FR',\n days: {\n '12-20': {\n _name: 'Abolition of Slavery'\n }\n }\n },\n RO: {\n names: {\n ro: 'Romania',\n en: 'Romania'\n },\n dayoff: 'sunday',\n langs: [\n 'ro'\n ],\n zones: [\n 'Europe/Bucharest'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-24': {\n name: {\n ro: 'Ziua Unirii',\n en: 'Unification Day'\n }\n },\n '03-08': {\n name: {\n ro: 'Ziua Mamei'\n },\n type: 'observance'\n },\n 'orthodox -2': {\n _name: 'easter -2'\n },\n orthodox: {\n _name: 'easter'\n },\n 'orthodox 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'orthodox 39': {\n _name: 'easter 39',\n type: 'observance'\n },\n 'orthodox 49': {\n _name: 'easter 49'\n },\n 'orthodox 50': {\n _name: 'easter 50'\n },\n '1st sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '06-01': {\n name: {\n ro: 'Ziua Copilului',\n en: \"Children's Day\"\n }\n },\n '06-26': {\n name: {\n ro: 'Ziua drapelului national',\n en: 'Flag Day'\n },\n type: 'observance'\n },\n '07-29': {\n name: {\n ro: 'Ziua Imnului național',\n en: 'National Anthem Day'\n },\n type: 'observance'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-30': {\n name: {\n ro: 'Sfântul Andrei',\n en: \"St Andrew's Day\"\n }\n },\n '12-01': {\n name: {\n ro: 'Ziua națională, Ziua Marii Uniri',\n en: 'National holiday'\n }\n },\n '12-08': {\n _name: 'Constitution Day',\n type: 'observance'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n RS: {\n names: {\n sr: 'Република Србија',\n en: 'Serbia'\n },\n langs: [\n 'sr'\n ],\n zones: [\n 'Europe/Belgrade'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 if sunday then next tuesday': {\n _name: '01-01'\n },\n '01-02 if sunday then next monday': {\n _name: '01-01'\n },\n 'julian 12-25': {\n _name: 'julian 12-25'\n },\n '02-15 if sunday then next tuesday': {\n name: {\n sr: 'Дан државности Србије',\n en: 'Statehood Day'\n }\n },\n '02-16 if sunday then next monday': {\n name: {\n sr: 'Дан државности Србије',\n en: 'Statehood Day'\n }\n },\n 'orthodox -2': {\n _name: 'orthodox -2'\n },\n orthodox: {\n _name: 'orthodox'\n },\n 'orthodox 1': {\n _name: 'orthodox 1'\n },\n '05-01 if sunday then next tuesday': {\n _name: '05-01'\n },\n '05-02 if sunday then next monday': {\n _name: '05-01'\n },\n '11-11 if sunday then next monday': {\n name: {\n sr: 'Дан примирја',\n en: 'Armistice Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2',\n type: 'optional',\n note: 'Catholic believers'\n },\n easter: {\n _name: 'easter',\n type: 'optional',\n note: 'Catholic believers'\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'optional',\n note: 'Catholic believers'\n },\n '12-25': {\n _name: '12-25',\n type: 'optional',\n note: 'Catholic believers'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah',\n type: 'optional',\n note: 'Muslim believers'\n },\n '1 Shawwal': {\n _name: '1 Shawwal',\n type: 'optional',\n note: 'Muslim believers'\n },\n '10 Tishrei': {\n _name: '10 Tishrei',\n type: 'optional',\n note: 'Jewish believers'\n },\n 'julian 01-14': {\n name: {\n sr: 'Свети Сава',\n en: 'Saint Sava Day'\n },\n type: 'observance'\n },\n '04-22': {\n name: {\n sr: 'Дан сећања на жртве холокауста',\n en: 'Holocaust Remembrance Day'\n },\n type: 'observance'\n },\n '05-09': {\n name: {\n sr: 'Дан победе',\n en: 'Victory Day'\n },\n type: 'observance'\n },\n 'julian 06-15': {\n name: {\n sr: 'Видовдан',\n en: 'Saint Vitus Day'\n },\n type: 'observance'\n },\n '10-21': {\n name: {\n sr: 'Дан сећања на српске жртве у Другом светском рату',\n en: 'World War II Serbian Victims Remembrance Day'\n },\n type: 'observance'\n }\n }\n },\n RU: {\n names: {\n ru: 'Россия',\n en: 'Russia'\n },\n dayoff: 'sunday',\n langs: [\n 'ru'\n ],\n zones: [\n 'Europe/Moscow',\n 'Europe/Kaliningrad',\n 'Europe/Simferopol',\n 'Europe/Volgograd',\n 'Europe/Samara',\n 'Asia/Yekaterinburg',\n 'Asia/Omsk',\n 'Asia/Novosibirsk',\n 'Asia/Novokuznetsk',\n 'Asia/Krasnoyarsk',\n 'Asia/Irkutsk',\n 'Asia/Chita',\n 'Asia/Yakutsk',\n 'Asia/Khandyga',\n 'Asia/Vladivostok',\n 'Asia/Sakhalin',\n 'Asia/Ust-Nera',\n 'Asia/Magadan',\n 'Asia/Srednekolymsk',\n 'Asia/Kamchatka',\n 'Asia/Anadyr'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-02 P5D': {\n name: {\n ru: 'Новогодние каникулы',\n en: 'New Year Holiday'\n }\n },\n 'julian 12-25': {\n _name: '12-25'\n },\n '01-08': {\n name: {\n ru: 'Новогодние каникулы',\n en: 'New Year Holiday'\n }\n },\n '02-23': {\n name: {\n ru: 'День защитника Отечества',\n en: 'Defender of the Fatherland Day'\n }\n },\n '03-08': {\n _name: '03-08'\n },\n '05-01': {\n name: {\n ru: 'День весны и труда',\n en: 'Spring and Labour Day'\n }\n },\n '05-09': {\n name: {\n ru: 'День Победы',\n en: 'Victory Day'\n }\n },\n '06-12': {\n name: {\n ru: 'День России',\n en: 'Russia Day'\n }\n },\n '11-04': {\n name: {\n ru: 'День народного единства',\n en: 'Unity Day'\n }\n }\n }\n },\n RW: {\n names: {\n en: 'Rwanda',\n fr: 'République du Rwanda',\n rw: \"Repubulika y'u Rwanda\"\n },\n dayoff: 'sunday',\n langs: [\n 'en',\n 'fr',\n 'rw'\n ],\n zones: [\n 'Africa/Maputo'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-02': {\n _name: 'Public Holiday'\n },\n '02-01': {\n name: {\n en: 'Heroes Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '04-07': {\n name: {\n fr: 'Jour de Mémorial du Génocide',\n en: 'Genocide Memorial Day'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '07-01': {\n _name: 'Independence Day'\n },\n '07-04': {\n name: {\n fr: 'Jour de la Libération',\n en: 'Liberation Day'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '1st friday in August': {\n name: {\n rw: 'Umuganura',\n fr: 'Journée nationale de récolte',\n en: 'National Harvest Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n SC: {\n names: {\n en: 'Seychelles',\n fr: 'République des Seychelles',\n crs: 'Repiblik Sesel'\n },\n langs: [\n 'en',\n 'fr',\n 'crs'\n ],\n zones: [\n 'Indian/Mahe'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 P2D': {\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter -1': {\n _name: 'easter -1'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '05-01': {\n _name: '05-01'\n },\n '06-18': {\n _name: 'National Holiday'\n },\n '06-29': {\n _name: 'Independence Day'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-25': {\n _name: '12-25'\n }\n }\n },\n SD: {\n names: {\n ar: 'جمهورية السودان',\n en: 'Sudan'\n },\n langs: [],\n zones: [\n 'Africa/Khartoum'\n ],\n dayoff: '',\n days: {\n '01-01': {\n _name: 'Independence Day'\n },\n '12-19': {\n _name: 'Revolution Day'\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal P4D': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah P3D': {\n _name: '10 Dhu al-Hijjah'\n },\n 'julian 12-25': {\n _name: 'julian 12-25',\n name: {\n en: 'Coptic Christmas'\n }\n },\n orthodox: {\n _name: 'orthodox',\n name: {\n en: 'Coptic Easter'\n }\n }\n }\n },\n SE: {\n names: {\n sv: 'Sverige',\n en: 'Sweden'\n },\n dayoff: 'sunday',\n langs: [\n 'sv'\n ],\n zones: [\n 'Europe/Stockholm'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-05 12:00': {\n name: {\n sv: 'Trettondagsafton'\n },\n type: 'optional'\n },\n '01-06': {\n _name: '01-06'\n },\n '01-13': {\n name: {\n sv: 'Tjugondag Knut'\n },\n type: 'observance'\n },\n '1st sunday in March': {\n name: {\n sv: 'Vasaloppet'\n },\n type: 'observance'\n },\n '03-25': {\n name: {\n sv: 'Marie Bebådelsedag',\n lat: 'Annuntiatio Mariæ'\n },\n type: 'observance'\n },\n '04-30 12:00': {\n name: {\n sv: 'Valborgsmässoafton',\n en: 'Walpurgis Night'\n },\n type: 'optional'\n },\n 'easter -3': {\n _name: 'easter -3',\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter -1': {\n _name: 'easter -1',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 48': {\n name: {\n sv: 'Pingstafton',\n en: 'Whitsun Eve'\n },\n type: 'observance'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'public'\n },\n 'easter 50': {\n _name: 'easter 50',\n type: 'observance'\n },\n 'sunday before 06-01': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '06-06': {\n name: {\n sv: 'Sveriges nationaldag',\n en: 'National Day'\n }\n },\n 'friday after 06-19': {\n name: {\n sv: 'Midsommarafton',\n en: 'Midsummer Eve',\n fi: 'Juhannusaatto'\n },\n type: 'bank'\n },\n 'saturday after 06-20': {\n name: {\n sv: 'Midsommardagen',\n en: 'Midsummer Day',\n fi: 'Juhannuspäivä'\n }\n },\n 'friday after 10-30 12:00': {\n name: {\n sv: 'Allhelgonaafton',\n en: 'Halloween'\n },\n type: 'optional'\n },\n 'saturday after 10-31': {\n _name: '11-01'\n },\n '11-06': {\n name: {\n sv: 'Gustav-Adolf-dagen'\n },\n type: 'observance'\n },\n '11-11': {\n name: {\n sv: 'Mårtensgås'\n },\n type: 'observance'\n },\n '12-10': {\n name: {\n sv: 'Nobeldagen'\n },\n type: 'observance'\n },\n '12-13': {\n name: {\n sv: 'Luciadagen'\n },\n type: 'observance'\n },\n '12-24': {\n _name: '12-24',\n type: 'bank'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31': {\n _name: '12-31',\n type: 'bank'\n }\n }\n },\n SG: {\n names: {\n en: 'Singapore'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'Asia/Singapore'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'substitutes 01-01 if sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n 'chinese 01-0-01': {\n name: {\n en: 'Chinese New Year'\n }\n },\n 'chinese 01-0-02': {\n name: {\n en: 'Chinese New Year'\n }\n },\n 'substitutes chinese 01-0-01 if sunday then next tuesday': {\n substitute: true,\n name: {\n en: 'Chinese New Year'\n }\n },\n 'substitutes chinese 01-0-02 if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Chinese New Year'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '05-01': {\n _name: '05-01'\n },\n 'substitutes 05-01 if sunday then next monday': {\n substitute: true,\n _name: '05-01'\n },\n '08-09': {\n name: {\n en: 'National Day'\n }\n },\n 'substitutes 08-09 if sunday then next monday': {\n substitute: true,\n name: {\n en: 'National Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n 'substitutes 12-25 if sunday then next monday': {\n substitute: true,\n _name: '12-25'\n },\n '1 Shawwal': {\n _name: '1 Shawwal',\n name: {\n en: 'Hari Raya Puasa'\n },\n disable: [\n '2022-05-02',\n '2023-04-21'\n ],\n enable: [\n '2022-05-03',\n '2023-04-22'\n ]\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah',\n name: {\n en: 'Hari Raya Haji'\n },\n disable: [\n '2022-07-09',\n '2023-06-28'\n ],\n enable: [\n '2022-07-10',\n '2023-06-29'\n ]\n },\n '2001-05-07': {\n _name: 'Vesak'\n },\n '2002-05-27': {\n _name: 'Vesak'\n },\n '2003-05-15': {\n _name: 'Vesak'\n },\n '2004-06-02': {\n _name: 'Vesak'\n },\n '2005-05-23': {\n _name: 'Vesak'\n },\n '2006-05-12': {\n _name: 'Vesak'\n },\n '2007-05-31': {\n _name: 'Vesak'\n },\n '2008-05-19': {\n _name: 'Vesak'\n },\n '2009-05-09': {\n _name: 'Vesak'\n },\n '2010-05-28': {\n _name: 'Vesak'\n },\n '2011-05-17': {\n _name: 'Vesak'\n },\n '2012-05-05': {\n _name: 'Vesak'\n },\n '2013-05-24': {\n _name: 'Vesak'\n },\n '2014-05-13': {\n _name: 'Vesak'\n },\n '2015-06-01': {\n _name: 'Vesak'\n },\n '2016-05-21': {\n _name: 'Vesak'\n },\n '2017-05-10': {\n _name: 'Vesak'\n },\n '2018-05-29': {\n _name: 'Vesak'\n },\n '2019-05-19': {\n _name: 'Vesak'\n },\n '2019-05-20': {\n substitute: true,\n _name: 'Vesak'\n },\n '2020-05-07': {\n _name: 'Vesak'\n },\n '2021-05-26': {\n _name: 'Vesak'\n },\n '2022-05-15': {\n _name: 'Vesak'\n },\n '2022-05-16': {\n substitute: true,\n _name: 'Vesak'\n },\n '2023-06-02': {\n _name: 'Vesak'\n },\n '2024-05-23': {\n _name: 'Vesak'\n },\n '2000-10-26': {\n _name: 'Deepavali'\n },\n '2001-11-14': {\n _name: 'Deepavali'\n },\n '2002-11-03': {\n _name: 'Deepavali'\n },\n '2002-11-04': {\n substitute: true,\n _name: 'Deepavali'\n },\n '2003-10-23': {\n _name: 'Deepavali'\n },\n '2004-11-11': {\n _name: 'Deepavali'\n },\n '2005-11-01': {\n _name: 'Deepavali'\n },\n '2006-10-21': {\n _name: 'Deepavali'\n },\n '2007-11-08': {\n _name: 'Deepavali'\n },\n '2008-10-27': {\n _name: 'Deepavali'\n },\n '2009-10-17': {\n _name: 'Deepavali'\n },\n '2010-11-05': {\n _name: 'Deepavali'\n },\n '2011-10-26': {\n _name: 'Deepavali'\n },\n '2012-11-13': {\n _name: 'Deepavali'\n },\n '2013-11-03': {\n _name: 'Deepavali'\n },\n '2013-11-04': {\n substitute: true,\n _name: 'Deepavali'\n },\n '2014-10-22': {\n _name: 'Deepavali'\n },\n '2015-11-10': {\n _name: 'Deepavali'\n },\n '2016-10-29': {\n _name: 'Deepavali'\n },\n '2017-10-18': {\n _name: 'Deepavali'\n },\n '2018-11-06': {\n _name: 'Deepavali'\n },\n '2019-10-27': {\n _name: 'Deepavali'\n },\n '2019-10-28': {\n substitute: true,\n _name: 'Deepavali'\n },\n '2020-11-14': {\n _name: 'Deepavali'\n },\n '2021-11-04': {\n _name: 'Deepavali'\n },\n '2022-10-24': {\n _name: 'Deepavali'\n },\n '2023-11-13': {\n _name: 'Deepavali'\n },\n '2024-10-31': {\n _name: 'Deepavali'\n },\n '2025-10-20': {\n _name: 'Deepavali'\n },\n '2026-11-09': {\n _name: 'Deepavali'\n },\n '2027-10-28': {\n _name: 'Deepavali'\n },\n '2028-11-15': {\n _name: 'Deepavali'\n },\n '2029-11-05': {\n _name: 'Deepavali'\n },\n '2030-10-25': {\n _name: 'Deepavali'\n }\n }\n },\n SH: {\n names: {\n en: 'St. Helena'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Abidjan'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'substitutes 01-01 if sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n 'substitutes 01-01 if saturday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '3rd monday in April': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '05-21': {\n name: {\n en: 'Saint Helena Day'\n }\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n 'monday before 09-01': {\n name: {\n en: 'August Bank Holiday'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n 'substitutes 12-25 if saturday then next tuesday': {\n substitute: true,\n _name: '12-25'\n },\n 'substitutes 12-25 if sunday then next tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n 'substitutes 12-26 if saturday then next monday': {\n substitute: true,\n _name: '12-26'\n },\n 'substitutes 12-26 if sunday then next monday': {\n substitute: true,\n _name: '12-26'\n }\n },\n states: {\n AC: {\n name: 'Ascension Island',\n days: {\n 'easter 39': {\n _name: 'easter 39'\n }\n }\n },\n HL: {\n name: 'Saint Helena',\n days: {}\n },\n TA: {\n name: 'Tristan da Cunha',\n days: {\n 'easter 39': {\n _name: 'easter 39'\n },\n '2012-04-23': {\n name: {\n en: 'Ratting Day'\n }\n },\n '2013-05-03': {\n name: {\n en: 'Ratting Day'\n }\n },\n '2014-05-02': {\n name: {\n en: 'Ratting Day'\n }\n },\n '2015-05-16': {\n name: {\n en: 'Ratting Day'\n }\n },\n '2016-04-30': {\n name: {\n en: 'Ratting Day'\n }\n },\n '2017-05-26': {\n name: {\n en: 'Ratting Day'\n }\n },\n '2018-06-02': {\n name: {\n en: 'Ratting Day'\n }\n },\n '08-14': {\n name: {\n en: 'Anniversary Day'\n }\n },\n 'monday before 09-01': false\n }\n }\n }\n },\n SI: {\n names: {\n sl: 'Republika Slovenija',\n en: 'Slovenia'\n },\n langs: [\n 'sl'\n ],\n zones: [\n 'Europe/Belgrade'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-02': {\n _name: '01-01',\n active: [\n {\n to: 1955\n },\n {\n from: 2017\n }\n ]\n },\n '02-08': {\n name: {\n en: 'Prešeren Day, the Slovenian Cultural Holiday',\n sl: 'Prešernov dan, slovenski kulturni praznik'\n },\n active: [\n {\n from: 1991\n }\n ]\n },\n '03-08': {\n _name: '03-08',\n type: 'observance'\n },\n '04-23': {\n name: {\n sl: 'Jurjevanje',\n en: \"St. George's Day\"\n },\n type: 'observance'\n },\n 'easter -49': {\n name: {\n sl: 'Pust',\n en: 'Carnival'\n },\n type: 'observance'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-27': {\n name: {\n sl: 'Dan upora proti okupatorju',\n en: 'Day of Uprising Against Occupation'\n }\n },\n '05-01': {\n _name: '05-01',\n name: {\n en: 'Labour Day'\n },\n active: [\n {\n from: 1949\n }\n ]\n },\n '05-02': {\n _name: '05-01',\n name: {\n en: 'Labour Day'\n },\n active: [\n {\n from: 1949\n }\n ]\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n '06-08': {\n name: {\n sl: 'Dan Primoža Trubarja',\n en: 'Primož Trubar Day'\n },\n type: 'observance',\n active: [\n {\n from: 2010\n }\n ]\n },\n '06-25': {\n name: {\n sl: 'Dan državnosti',\n en: 'Statehood Day'\n },\n active: [\n {\n from: 1991\n }\n ]\n },\n '08-15': {\n _name: '08-15',\n active: [\n {\n from: 1992\n }\n ]\n },\n '08-17': {\n name: {\n sl: 'Združitev prekmurskih Slovencev z matičnim narodom',\n en: 'Unification of Prekmurje Slovenes with the Mother Nation'\n },\n type: 'observance',\n active: [\n {\n from: 2006\n }\n ]\n },\n '09-15': {\n name: {\n sl: 'Vrnitev Primorske k matični domovini',\n en: 'Return of Primorska to the Motherland'\n },\n type: 'observance',\n active: [\n {\n from: 2005\n }\n ]\n },\n '09-23': {\n name: {\n sl: 'Dan slovenskega športa',\n en: 'Slovenian Sports Day'\n },\n type: 'observance',\n active: [\n {\n from: 2020\n }\n ]\n },\n '10-25': {\n name: {\n sl: 'Dan suverenosti',\n en: 'Sovereignty Day'\n },\n type: 'observance',\n active: [\n {\n from: 2015\n }\n ]\n },\n '10-31': {\n name: {\n sl: 'Dan reformacije',\n en: 'Reformation Day'\n }\n },\n '11-01': {\n name: {\n sl: 'Dan spomina na mrtve',\n en: 'Day of Remembrance for the Dead'\n }\n },\n '11-11': {\n name: {\n sl: 'Martinovanje',\n en: \"St. Martin's Day\"\n },\n type: 'observance'\n },\n '11-23': {\n name: {\n sl: 'Dan Rudolfa Maistra',\n en: 'Rudolf Maister Day'\n },\n type: 'observance',\n active: [\n {\n from: 2015\n }\n ]\n },\n '12-06': {\n name: {\n sl: 'Miklavž',\n en: 'Saint Nicholas Day'\n },\n type: 'observance'\n },\n '12-25': {\n _name: '12-25',\n active: [\n {\n to: 1953\n },\n {\n from: 1991\n }\n ]\n },\n '12-26': {\n name: {\n sl: 'Dan samostojnosti in enotnosti',\n en: 'Independence and Unity Day'\n }\n }\n }\n },\n SJ: {\n names: {\n en: 'Svalbard & Jan Mayen'\n },\n langs: [\n 'no'\n ],\n zones: [\n 'Europe/Oslo'\n ],\n dayoff: 'sunday',\n _days: 'NO'\n },\n SK: {\n names: {\n sk: 'Slovenská republika',\n en: 'Slovakia'\n },\n langs: [\n 'sk'\n ],\n zones: [\n 'Europe/Prague'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01',\n name: {\n sk: 'Deň vzniku Slovenskej republiky'\n }\n },\n '01-06': {\n _name: '01-06'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-08': {\n name: {\n sk: 'Deň víťazstva nad fašizmom',\n en: 'Day of victory over fascism'\n }\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '07-05': {\n name: {\n sk: 'Sviatok svätého Cyrila a Metoda',\n en: 'Saints Cyril and Methodius Day'\n }\n },\n '08-29': {\n name: {\n sk: 'Výročie Slovenského národného povstania',\n en: 'Slovak National Uprising anniversary'\n }\n },\n '09-01': {\n _name: 'Constitution Day'\n },\n '09-15': {\n name: {\n sk: 'Sviatok Panny Márie Sedembolestnej',\n en: 'Day of Our Lady of the Seven Sorrows'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n '11-17': {\n name: {\n sk: 'Deň boja za slobodu a demokraciu',\n en: 'Struggle for Freedom and Democracy Day'\n }\n },\n '12-24': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n SL: {\n names: {\n en: 'Sierra Leone'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Abidjan'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if Sunday then next Monday': {\n substitute: true,\n _name: '01-01'\n },\n '02-18 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Armed Forces Day'\n }\n },\n '03-08 and if Sunday then next Monday': {\n substitute: true,\n _name: '03-08'\n },\n '04-27 and if Sunday then next Monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '1 Shawwal and if Sunday then next Monday': {\n substitute: true,\n _name: '1 Shawwal',\n name: {\n en: 'Korité'\n }\n },\n '10 Dhu al-Hijjah and if Sunday then next Monday': {\n substitute: true,\n _name: '10 Dhu al-Hijjah',\n name: {\n en: 'Tabaski'\n }\n },\n '12 Rabi al-awwal and if Sunday then next Monday': {\n substitute: true,\n _name: '12 Rabi al-awwal',\n name: {\n en: 'Mawlid'\n }\n },\n '12-25 and if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if Sunday then next Monday': {\n substitute: true,\n _name: '12-26'\n }\n }\n },\n SM: {\n names: {\n it: 'San Marino',\n en: 'San Marino'\n },\n langs: [\n 'it'\n ],\n zones: [\n 'Europe/Rome'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06',\n name: {\n it: 'Epifania'\n }\n },\n '02-05': {\n name: {\n it: 'Festa di Sant’Agata',\n en: 'Feast of Saint Agatha'\n }\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '03-25': {\n name: {\n it: \"Anniversario dell'Arengo\",\n en: 'Anniversary of the Arengo'\n }\n },\n '04-01': {\n name: {\n it: 'Cerimonia di investitura dei Capitani Reggenti',\n en: 'Inauguration Ceremony'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '07-28': {\n name: {\n it: 'Anniversario della caduta del Fascismo e Festa della Libertà',\n en: 'Liberation from Fascism'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '09-03': {\n name: {\n it: 'Festa di San Marino e di Fondazione della Repubblica',\n en: 'The Feast of San Marino and the Republic'\n }\n },\n '10-01': {\n name: {\n it: 'Cerimonia di investitura dei Capitani Reggenti'\n }\n },\n '11-01': {\n _name: '11-01',\n name: {\n it: 'Tutti i Santi'\n }\n },\n '11-02': {\n name: {\n it: 'Commemorazione dei defunti',\n en: 'Commemoration of the deceased'\n }\n },\n '12-08': {\n _name: '12-08'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '12-31': {\n _name: '12-31',\n type: 'optional'\n }\n }\n },\n SN: {\n names: {\n fr: 'République du Sénégal',\n wo: 'Réewum Senegaal',\n en: 'Senegal'\n },\n langs: [\n 'fr',\n 'wo'\n ],\n zones: [\n 'Africa/Abidjan'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '04-04': {\n _name: 'National Holiday'\n },\n '05-01': {\n _name: '05-01'\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-25': {\n _name: '12-25'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal and if sunday then next monday': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah and if sunday then next monday': {\n _name: '10 Dhu al-Hijjah'\n },\n '10 Muharram': {\n _name: '10 Muharram'\n },\n '18 Safar': {\n name: 'Magal de Touba'\n }\n }\n },\n SO: {\n names: {\n so: 'Jamhuuriyadda Federaalka Soomaaliya',\n ar: 'جمهورية الصومال الفدرالية',\n en: 'Somalia'\n },\n dayoff: '?',\n langs: [\n 'so',\n 'ar',\n 'en'\n ],\n zones: [\n 'Africa/Nairobi'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '05-01': {\n _name: '05-01'\n },\n '06-26': {\n name: {\n ar: 'استقلال الصومال البريطاني',\n en: 'Independence of British Somaliland'\n }\n },\n '07-01': {\n _name: 'Independence Day'\n },\n '10 Muharram': {\n _name: '10 Muharram'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n },\n states: {\n AW: {\n name: 'Awdal',\n days: {\n '01-01': false,\n '05-18 P2D': {\n name: {\n en: 'Restoration of Somaliland Sovereignty'\n }\n },\n '07-01': false,\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '10 Muharram': false,\n '27 Rajab': {\n _name: '27 Rajab'\n }\n }\n },\n SA: {\n name: 'Sanaag',\n _days: [\n 'SO',\n 'states',\n 'AW'\n ]\n },\n SO: {\n name: 'Sool',\n _days: [\n 'SO',\n 'states',\n 'AW'\n ]\n },\n TO: {\n name: 'Togdheer',\n _days: [\n 'SO',\n 'states',\n 'AW'\n ]\n },\n WO: {\n name: 'Woqooyi Galbeed',\n _days: [\n 'SO',\n 'states',\n 'AW'\n ]\n }\n }\n },\n SR: {\n names: {\n en: 'Suriname'\n },\n langs: [\n 'nl',\n 'srn'\n ],\n zones: [\n 'America/Paramaribo'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'chinese 01-0-01': {\n name: {\n nl: 'Chinees Nieuwjaar',\n en: 'Chinese New Year'\n }\n },\n '02-25': {\n name: {\n nl: 'Dag van Bevrijding en Vernieuwing',\n en: 'Day of Liberation and Innovation'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '07-01': {\n name: {\n nl: 'Dag der Vrijheden (Keti koti)',\n srn: 'Keti koti',\n en: 'Emancipation Day'\n }\n },\n '08-09': {\n name: {\n nl: 'Dag der Inheemsen',\n en: \"Indigenous People's Day\"\n }\n },\n '10-10': {\n name: {\n nl: 'Dag van de Marrons',\n en: 'Day of the Maroons'\n }\n },\n '11-25': {\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '2015-03-06': {\n _name: 'Holi'\n },\n '2016-03-23': {\n _name: 'Holi'\n },\n '2017-03-12': {\n _name: 'Holi'\n },\n '2018-03-02': {\n _name: 'Holi'\n },\n '2019-03-21': {\n _name: 'Holi'\n },\n '2020-03-09': {\n _name: 'Holi'\n },\n '2021-03-28': {\n _name: 'Holi'\n },\n '2022-03-18': {\n _name: 'Holi'\n },\n '2023-03-07': {\n _name: 'Holi'\n },\n '2024-03-25': {\n _name: 'Holi'\n },\n '2025-03-14': {\n _name: 'Holi'\n },\n '2026-03-03': {\n _name: 'Holi'\n },\n '2027-03-22': {\n _name: 'Holi'\n },\n '2028-03-11': {\n _name: 'Holi'\n },\n '2029-03-28': {\n _name: 'Holi'\n },\n '2030-03-19': {\n _name: 'Holi'\n },\n '2014-10-23': {\n _name: 'Deepavali'\n },\n '2015-11-11': {\n _name: 'Deepavali'\n },\n '2016-10-30': {\n _name: 'Deepavali'\n },\n '2017-10-19': {\n _name: 'Deepavali'\n },\n '2018-11-07': {\n _name: 'Deepavali'\n },\n '2019-10-27': {\n _name: 'Deepavali'\n },\n '2020-11-14': {\n _name: 'Deepavali'\n },\n '2021-11-04': {\n _name: 'Deepavali'\n },\n '2022-10-24': {\n _name: 'Deepavali'\n },\n '2023-11-12': {\n _name: 'Deepavali'\n },\n '2024-10-31': {\n _name: 'Deepavali'\n },\n '2025-10-20': {\n _name: 'Deepavali'\n },\n '2026-11-08': {\n _name: 'Deepavali'\n },\n '2027-10-28': {\n _name: 'Deepavali'\n },\n '2028-10-17': {\n _name: 'Deepavali'\n },\n '2029-11-05': {\n _name: 'Deepavali'\n },\n '2030-10-25': {\n _name: 'Deepavali'\n }\n }\n },\n SS: {\n names: {\n en: 'South Sudan'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Maputo'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-09': {\n name: {\n en: 'Peace Agreement Day'\n }\n },\n '03-08': {\n _name: '03-08'\n },\n '05-16': {\n name: {\n en: 'SPLA Day'\n }\n },\n '1st monday in July': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '07-09': {\n _name: 'Independence Day'\n },\n '07-30': {\n name: {\n en: 'Martyrs Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-28': {\n name: {\n en: 'Republic Day'\n }\n },\n '12-31': {\n _name: '12-31'\n },\n '2 Shawwal': {\n _name: '1 Shawwal'\n },\n '12 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n ST: {\n names: {\n pt: 'São Tomé & Príncipe',\n en: 'São Tomé & Príncipe'\n },\n langs: [\n 'pt',\n 'en'\n ],\n zones: [\n 'Africa/Abidjan'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if Saturday then previous Friday if Sunday then next Monday': {\n substitute: true,\n _name: '01-01'\n },\n '02-03 and if Saturday then previous Friday if Sunday then next Monday': {\n substitute: true,\n name: {\n en: \"Martyrs' Day\",\n pt: 'Dia dos Mártires'\n }\n },\n '05-01 and if Saturday then previous Friday if Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n '07-12 and if Saturday then previous Friday if Sunday then next Monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '09-06 and if Saturday then previous Friday if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Armed Forces Day',\n pt: 'Dia das Forças Armadas'\n }\n },\n '09-30 and if Saturday then previous Friday if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Agricultural Reform Day',\n pt: 'Dia da Reforma Agrária'\n }\n },\n '12-21 and if Saturday then previous Friday if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'São Tomé Day',\n pt: 'Dia de São Tomé'\n }\n },\n '12-25 and if Saturday then previous Friday if Sunday then next Monday': {\n substitute: true,\n _name: '12-25'\n }\n }\n },\n SV: {\n names: {\n es: 'El Salvador',\n en: 'El Salvador'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/El_Salvador'\n ],\n days: {\n '01-01': {\n _name: '01-01',\n type: 'observance'\n },\n '01-16': {\n name: {\n es: 'Firma de los Acuerdos de Paz'\n },\n type: 'observance'\n },\n '03-08': {\n name: {\n es: 'Día de la Mujer'\n },\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter -1': {\n _name: 'easter -1'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-07': {\n name: {\n en: \"Soldier's Day\",\n es: 'Día del Soldado'\n },\n type: 'observance'\n },\n '05-10': {\n _name: 'Mothers Day',\n type: 'optional',\n note: 'Public Offices only'\n },\n '06-17': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n '06-22': {\n name: {\n es: 'Día del Maestro'\n },\n type: 'optional',\n note: 'Dayoff for teachers only'\n },\n '08-06': {\n name: {\n es: 'Celebración del Divino Salvador del Mundo'\n }\n },\n '09-15': {\n _name: 'Independence Day'\n },\n '11-02': {\n _name: '11-02'\n },\n '12-25': {\n _name: '12-25'\n }\n },\n regions: {\n SS: {\n name: 'San Salvador',\n days: {\n '08-03': {\n name: {\n es: 'Fiestas Agostinas'\n }\n },\n '08-05': {\n name: {\n es: 'Fiestas Agostinas'\n }\n }\n }\n }\n }\n },\n SX: {\n names: {\n en: 'Sint Maarten'\n },\n langs: [\n 'nl'\n ],\n zones: [\n 'America/Curacao'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-27': {\n name: {\n nl: 'Koningsdag',\n en: \"King's Day\"\n }\n },\n '04-30 if Sunday then next Tuesday prior to 2017': {\n name: {\n nl: 'Carnaval',\n en: 'Carnival'\n }\n },\n '04-30 if Saturday then previous Friday if Sunday then next Tuesday since 2017': {\n name: {\n nl: 'Carnaval',\n en: 'Carnival'\n }\n },\n '05-01 if Sunday then next Monday': {\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 49': {\n _name: 'easter 49'\n },\n '07-01': {\n name: {\n nl: 'Emancipatiedag',\n en: 'Emancipation Day'\n }\n },\n '10-09': {\n _name: 'Constitution Day'\n },\n '11-11': {\n name: {\n en: 'Sint Maarten Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n SZ: {\n names: {\n ss: 'Eswatini',\n en: 'Swaziland'\n },\n langs: [\n 'ss',\n 'en'\n ],\n zones: [\n 'Africa/Johannesburg'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-19 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Birthday of King Mswati III'\n }\n },\n '04-25 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'National Flag Day'\n }\n },\n '05-01 and if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '07-22 and if Saturday, Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Birthday of the late King Sobhuza'\n }\n },\n '1st Monday in September': {\n name: {\n ss: 'Umhlanga Reed Dance',\n en: 'Umhlanga Reed Dance'\n }\n },\n '09-06 and if Saturday, Sunday then next Monday': {\n substitute: true,\n _name: 'Independence Day',\n name: {\n ss: 'Somhlolo Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26 and if Sunday then next Monday': {\n _name: '12-26'\n },\n '12-28 P6D': {\n name: {\n ss: 'Incwala',\n en: 'Incwala Festival'\n }\n }\n }\n },\n TC: {\n names: {\n en: 'Turks & Caicos Islands'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'America/Grand_Turk'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if Saturday, Sunday then next Monday': {\n _name: '01-01'\n },\n '2nd Monday in March': {\n name: {\n en: 'Commonwealth Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '1st Monday before 06-01': {\n name: {\n en: \"National Heroes' Day\"\n }\n },\n '2nd Monday after 06-02': {\n name: {\n en: \"Queen's Birthday\"\n }\n },\n '1st Monday in August': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '1st Friday before 10-01': {\n name: {\n en: 'National Youth Day'\n }\n },\n '2nd Monday in October': {\n name: {\n en: 'National Heritage Day'\n }\n },\n '4th Friday in November': {\n name: {\n en: 'National Day of Thanksgiving'\n }\n },\n '12-25 and if Saturday then next Monday if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if Saturday then next Monday if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-26'\n }\n }\n },\n TD: {\n names: {\n ar: 'جمهورية تشاد',\n fr: 'République du Tchad',\n en: 'Chad'\n },\n langs: [\n 'ar',\n 'fr'\n ],\n zones: [\n 'Africa/Ndjamena'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if sunday then next monday': {\n _name: '01-01'\n },\n '05-01 and if sunday then next monday': {\n _name: '05-01'\n },\n '08-11 and if sunday then next monday': {\n name: {\n fr: 'Fête Nationale (Indépendance)',\n en: 'Independence Day'\n }\n },\n '12-01 and if sunday then next monday': {\n name: {\n fr: 'Journée de la libération et de la démocratie',\n en: 'Freedom and Democracy Day'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n '11-28': {\n name: {\n fr: 'Anniversaire de la Proclamation de la République',\n en: 'Proclamation of the Republic'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n TG: {\n names: {\n fr: 'République togolaise',\n en: 'Togolese Republic'\n },\n dayoff: 'sunday',\n langs: [\n 'fr'\n ],\n zones: [\n 'Africa/Abidjan'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-13': {\n name: {\n fr: 'Jour de la libération',\n en: 'Liberation Day'\n }\n },\n '04-27': {\n _name: 'Independence Day'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '06-21': {\n name: {\n fr: 'Journée des Martyrs',\n en: 'Day of the Martyrs'\n }\n },\n '08-15': {\n _name: '08-15'\n },\n '11-01': {\n _name: '11-01'\n },\n '12-25': {\n _name: '12-25'\n },\n '13 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '2 Shawwal': {\n _name: '1 Shawwal'\n },\n '11 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n TH: {\n names: {\n en: 'Thailand'\n },\n langs: [\n 'en',\n 'th'\n ],\n zones: [\n 'Asia/Bangkok'\n ],\n dayoff: 'Saturday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '04-06': {\n name: {\n en: 'Chakri Memorial Day',\n th: 'วันจักรี'\n }\n },\n '04-13': {\n name: {\n en: 'Songkran Festival',\n th: 'วันสงกรานต์'\n }\n },\n '04-14': {\n name: {\n en: 'Songkran Festival',\n th: 'วันสงกรานต์'\n }\n },\n '04-15': {\n name: {\n en: 'Songkran Festival',\n th: 'วันสงกรานต์'\n }\n },\n '05-04': {\n name: {\n en: 'Coronation Day',\n th: 'วันฉัตรมงคล'\n }\n },\n '06-03': {\n name: {\n en: \"Queen Suthida's Birthday\",\n th: 'วันเฉลิมพระชนมพรรษาสมเด็จพระนางเจ้าสุทิดา พัชรสุธาพิมลลักษณ พระบรมราชินี'\n }\n },\n '07-28': {\n name: {\n en: \"King's Birthday\",\n th: 'วันเฉลิมพระชนมพรรษาพระบาทสมเด็จพระวชิรเกล้าเจ้าอยู่หัว'\n }\n },\n '08-12': {\n name: {\n en: \"The Queen Mother's Birthday\",\n th: 'วันเฉลิมพระชนมพรรษาสมเด็จพระนางเจ้าสิริกิติ์ พระบรมราชินีนาถ พระบรมราชชนนีพันปีหลวง'\n }\n },\n '10-13': {\n name: {\n en: 'King Bhumibol Adulyadej Memorial Day',\n th: 'วันคล้ายวันสวรรคตพระบาทสมเด็จพระบรมชนกาธิเบศร มหาภูมิพลอดุลยเดชมหาราช บรมนาถบพิตร'\n }\n },\n '10-23': {\n name: {\n en: 'King Chulalongkorn Day',\n th: 'วันปิยมหาราช'\n }\n },\n '12-05': {\n name: {\n en: \"King Bhumibol Adulyadej's Birthday\",\n th: 'วันคล้ายวันพระบรมราชสมภพ พระบาทสมเด็จพระบรมชนกาธิเบศร มหาภูมิพลอดุลยเดชมหาราช บรมนาถบพิตร'\n }\n },\n '12-10': {\n name: {\n en: 'Constitution Day',\n th: 'วันรัฐธรรมนูญ'\n }\n },\n '12-31': {\n _name: '12-31'\n },\n '2010-03-01': {\n _name: 'Makha Bucha'\n },\n '2011-02-18': {\n _name: 'Makha Bucha'\n },\n '2012-03-07': {\n _name: 'Makha Bucha'\n },\n '2013-02-25': {\n _name: 'Makha Bucha'\n },\n '2014-02-14': {\n _name: 'Makha Bucha'\n },\n '2015-03-04': {\n _name: 'Makha Bucha'\n },\n '2016-02-22': {\n _name: 'Makha Bucha'\n },\n '2017-02-11': {\n _name: 'Makha Bucha'\n },\n '2018-03-01': {\n _name: 'Makha Bucha'\n },\n '2019-02-19': {\n _name: 'Makha Bucha'\n },\n '2020-02-08': {\n _name: 'Makha Bucha'\n },\n '2021-02-26': {\n _name: 'Makha Bucha'\n },\n '2022-02-16': {\n _name: 'Makha Bucha'\n },\n '2023-03-06': {\n _name: 'Makha Bucha'\n },\n '2024-02-24': {\n _name: 'Makha Bucha'\n },\n '2025-02-13': {\n _name: 'Makha Bucha'\n },\n '2026-03-03': {\n _name: 'Makha Bucha'\n },\n '2010-05-28': {\n _name: 'Vesak'\n },\n '2011-05-17': {\n _name: 'Vesak'\n },\n '2012-05-06': {\n _name: 'Vesak'\n },\n '2013-05-25': {\n _name: 'Vesak'\n },\n '2014-05-15': {\n _name: 'Vesak'\n },\n '2015-06-02': {\n _name: 'Vesak'\n },\n '2016-05-22': {\n _name: 'Vesak'\n },\n '2017-05-10': {\n _name: 'Vesak'\n },\n '2018-05-29': {\n _name: 'Vesak'\n },\n '2019-05-19': {\n _name: 'Vesak'\n },\n '2020-05-07': {\n _name: 'Vesak'\n },\n '2021-05-26': {\n _name: 'Vesak'\n },\n '2022-05-15': {\n _name: 'Vesak'\n },\n '2022-05-16': {\n substitute: true,\n _name: 'Vesak'\n },\n '2023-05-04': {\n _name: 'Vesak'\n },\n '2024-05-22': {\n _name: 'Vesak'\n },\n '2025-05-12': {\n _name: 'Vesak'\n },\n '2026-05-31': {\n _name: 'Vesak'\n },\n '2010-07-25': {\n _name: 'Asalha Puja'\n },\n '2011-07-15': {\n _name: 'Asalha Puja'\n },\n '2012-08-02': {\n _name: 'Asalha Puja'\n },\n '2013-07-22': {\n _name: 'Asalha Puja'\n },\n '2014-07-11': {\n _name: 'Asalha Puja'\n },\n '2015-07-30': {\n _name: 'Asalha Puja'\n },\n '2016-07-19': {\n _name: 'Asalha Puja'\n },\n '2017-07-08': {\n _name: 'Asalha Puja'\n },\n '2018-07-27': {\n _name: 'Asalha Puja'\n },\n '2019-07-16': {\n _name: 'Asalha Puja'\n },\n '2020-07-04': {\n _name: 'Asalha Puja'\n },\n '2021-07-24': {\n _name: 'Asalha Puja'\n },\n '2022-07-13': {\n _name: 'Asalha Puja'\n },\n '2023-07-31': {\n _name: 'Asalha Puja'\n },\n '2024-07-19': {\n _name: 'Asalha Puja'\n },\n '2025-07-10': {\n _name: 'Asalha Puja'\n },\n '2026-07-29': {\n _name: 'Asalha Puja'\n },\n '2010-07-26': {\n _name: 'Buddhist Lent'\n },\n '2011-07-16': {\n _name: 'Buddhist Lent'\n },\n '2012-08-03': {\n _name: 'Buddhist Lent'\n },\n '2013-07-23': {\n _name: 'Buddhist Lent'\n },\n '2014-07-12': {\n _name: 'Buddhist Lent'\n },\n '2015-07-31': {\n _name: 'Buddhist Lent'\n },\n '2016-07-20': {\n _name: 'Buddhist Lent'\n },\n '2017-07-09': {\n _name: 'Buddhist Lent'\n },\n '2018-07-28': {\n _name: 'Buddhist Lent'\n },\n '2019-07-17': {\n _name: 'Buddhist Lent'\n },\n '2020-07-05': {\n _name: 'Buddhist Lent'\n },\n '2021-07-25': {\n _name: 'Buddhist Lent'\n },\n '2022-07-14': {\n _name: 'Buddhist Lent'\n },\n '2023-08-01': {\n _name: 'Buddhist Lent'\n },\n '2024-07-20': {\n _name: 'Buddhist Lent'\n },\n '2025-07-11': {\n _name: 'Buddhist Lent'\n },\n '2026-07-30': {\n _name: 'Buddhist Lent'\n }\n }\n },\n TN: {\n names: {\n ar: 'الجمهورية التونسية',\n fr: 'République tunisienne',\n en: 'Tunisia'\n },\n langs: [\n 'ar',\n 'fr'\n ],\n zones: [\n 'Africa/Tunis'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-14': {\n name: {\n fr: 'Fête de la Révolution et de la Jeunesse',\n ar: 'عيد الثورة و الشباب'\n }\n },\n '03-20': {\n name: {\n fr: \"Fête de l'indépendance\",\n ar: 'عيد الإستقلال'\n }\n },\n '04-09': {\n name: {\n fr: 'Journée des Martyrs',\n ar: 'عيد الشهداء'\n }\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal'\n },\n '1 Muharram': {\n _name: '1 Muharram'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '05-01': {\n _name: '05-01'\n },\n '07-25': {\n name: {\n fr: 'Fête de la République',\n ar: 'عيد الجمهورية'\n }\n },\n '08-13': {\n name: {\n fr: 'Fête de la Femme et de la Famille',\n ar: 'عيد المرأة'\n }\n },\n '10-15': {\n name: {\n fr: \"Fête de l'Évacuation\",\n ar: 'عيد الجلاء'\n }\n }\n }\n },\n TO: {\n names: {\n to: 'Puleʻanga Fakatuʻi ʻo Tonga',\n en: 'Tonga'\n },\n langs: [\n 'to',\n 'en'\n ],\n zones: [\n 'Pacific/Tongatapu'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-25': {\n name: {\n en: 'ANZAC Day'\n }\n },\n '06-04 if thursday,friday,saturday,sunday then next monday and if tuesday then previous monday': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '07-04': {\n name: {\n en: 'Official Birthday of His Majesty King Tupou VI'\n }\n },\n '09-17 if thursday,friday,saturday,sunday then next monday and if tuesday then previous monday': {\n name: {\n en: 'Birthday of His Royal Highness The Crown Prince Tupotoʻa-ʻUlukalala'\n }\n },\n '11-04 if thursday,friday,saturday,sunday then next monday and if tuesday then previous monday': {\n _name: 'Constitution Day',\n name: {\n en: 'Constitutional Day'\n }\n },\n '12-04 if thursday,friday,saturday,sunday then next monday and if tuesday then previous monday': {\n name: {\n en: 'Tupou I Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n TR: {\n names: {\n tr: 'Türkiye',\n en: 'Turkey'\n },\n dayoff: 'saturday',\n langs: [\n 'tr'\n ],\n zones: [\n 'Europe/Istanbul'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '04-23': {\n name: {\n en: \"National Sovereignty and Children's Day\",\n tr: 'Ulusal Egemenlik ve Çocuk Bayramı'\n }\n },\n '05-01': {\n _name: '05-01',\n name: {\n en: 'Labour and Solidarity Day',\n tr: 'Emek ve Dayanışma Günü'\n }\n },\n '05-19': {\n name: {\n en: 'Commemoration of Atatürk, Youth and Sports Day',\n tr: \"Atatürk'ü Anma Gençlik ve Spor Bayramı\"\n }\n },\n '07-15': {\n name: {\n en: 'Democracy and National Unity Day',\n tr: 'Demokrasi ve Millî Birlik Günü'\n }\n },\n '08-30': {\n name: {\n en: 'Victory Day',\n tr: 'Zafer Bayramı'\n }\n },\n '10-29': {\n name: {\n en: 'Republic Day',\n tr: 'Cumhuriyet Bayramı'\n }\n },\n '1 Shawwal PT90H': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah PT114H': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n TT: {\n names: {\n en: 'Trinidad & Tobago'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if Sunday then next Monday': {\n substitute: true,\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1',\n type: 'observance'\n },\n '03-30 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Spiritual Baptist Liberation Day'\n }\n },\n 'easter 60': {\n _name: 'easter 60'\n },\n '05-30 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Indian Arrival Day'\n }\n },\n '06-19 and if Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n '08-01 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Emancipation Day'\n }\n },\n '08-31 and if Sunday then next Monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '09-24 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Republic Day'\n }\n },\n '12-25 and if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if Sunday then next Monday': {\n substitute: true,\n _name: '12-26'\n },\n '1 Shawwal and if Sunday then next Monday': {\n substitute: true,\n _name: '1 Shawwal'\n },\n '2012-11-13': {\n _name: 'Deepavali'\n },\n '2013-11-03': {\n _name: 'Deepavali'\n },\n '2013-11-04': {\n substitute: true,\n _name: 'Deepavali'\n },\n '2014-10-23': {\n _name: 'Deepavali'\n },\n '2015-11-11': {\n _name: 'Deepavali'\n },\n '2016-10-29': {\n _name: 'Deepavali'\n },\n '2017-10-19': {\n _name: 'Deepavali'\n },\n '2018-11-07': {\n _name: 'Deepavali'\n },\n '2019-10-27': {\n _name: 'Deepavali'\n },\n '2019-10-28': {\n substitute: true,\n _name: 'Deepavali'\n },\n '2020-11-14': {\n _name: 'Deepavali'\n },\n '2021-11-04': {\n _name: 'Deepavali'\n },\n '2022-10-24': {\n _name: 'Deepavali'\n },\n '2023-11-12': {\n _name: 'Deepavali'\n },\n '2023-11-13': {\n substitute: true,\n _name: 'Deepavali'\n },\n '2024-10-31': {\n _name: 'Deepavali'\n },\n '2025-10-20': {\n _name: 'Deepavali'\n },\n '2026-11-08': {\n _name: 'Deepavali'\n },\n '2026-11-09': {\n substitute: true,\n _name: 'Deepavali'\n },\n '2027-10-28': {\n _name: 'Deepavali'\n },\n '2028-10-17': {\n _name: 'Deepavali'\n },\n '2029-11-05': {\n _name: 'Deepavali'\n },\n '2030-10-25': {\n _name: 'Deepavali'\n }\n }\n },\n TW: {\n names: {\n zh: '中華民國',\n en: 'Taiwan'\n },\n langs: [\n 'zh'\n ],\n zones: [\n 'Asia/Taipei'\n ],\n dayoff: '',\n days: {\n '01-01 and if Saturday then previous Friday if Sunday then next Monday': {\n substitute: true,\n _name: '01-01',\n name: {\n zh: '中華民國開國紀念日 / 元旦',\n en: 'Founding of the Republic of China'\n }\n },\n 'chinese 01-0-00': {\n name: {\n en: \"Chinese New Year's Eve\",\n zh: '農曆除夕'\n }\n },\n 'chinese 01-0-01': {\n name: {\n en: 'Chinese New Year',\n zh: '農曆年初一'\n }\n },\n 'chinese 01-0-01 if Monday then next Friday if Tuesday then next Saturdayif Wednesday then next Sunday if Thursday then next Monday if Friday then next Tuesday if Saturday then next Wednesday if Sunday then next Thursday': {\n name: {\n en: 'Chinese New Year Holiday',\n zh: '农历新年假期'\n }\n },\n 'chinese 01-0-02': {\n name: {\n en: 'The second day of the Chinese New Year',\n zh: '農曆年初二'\n }\n },\n 'chinese 01-0-03': {\n name: {\n en: 'The third day of the Chinese New Year',\n zh: '農曆年初三'\n }\n },\n 'chinese 01-0-04': {\n name: {\n en: 'The forth day of the Chinese New Year',\n zh: '農曆年初四'\n }\n },\n '02-28 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Peace Memorial Day',\n zh: '228和平紀念日'\n }\n },\n '04-04 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: \"Children's Day\",\n zh: '兒童節'\n }\n },\n 'chinese 5-01 solarterm and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Tomb Sweeping Day',\n zh: '淸明節'\n }\n },\n 'chinese 05-0-05 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Dragon Boat Festival',\n zh: '端午節'\n }\n },\n 'chinese 08-0-15 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Mid-Autumn Festival',\n zh: '中秋節'\n }\n },\n '10-10 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'National Day / Double Tenth Day',\n zh: '國慶日 / 雙十節'\n }\n },\n '02-04': {\n name: {\n en: \"Farmer's Day\",\n zh: '農民節'\n },\n type: 'observance'\n },\n '03-08': {\n _name: '03-08',\n type: 'observance'\n },\n '03-12': {\n name: {\n en: 'Arbor Day',\n zh: '國父逝世紀念日'\n },\n type: 'observance'\n },\n '03-29': {\n name: {\n en: 'Youth Day',\n zh: '靑年節'\n },\n type: 'observance'\n },\n '05-01 and if Saturday then previous Friday if Sunday then next Monday': {\n substitute: true,\n _name: '05-01',\n name: {\n zh: '勞動節'\n },\n type: 'observance',\n note: 'private sector'\n },\n '05-04': {\n name: {\n en: 'Literary Day',\n zh: '文藝節'\n },\n type: 'observance'\n },\n '2nd Sunday in May': {\n _name: 'Mothers Day',\n name: {\n zh: '母親節'\n },\n type: 'observance'\n },\n '06-03': {\n name: {\n en: 'Opium Suppression Movement Day',\n zh: '禁菸節'\n },\n type: 'observance'\n },\n '08-08': {\n _name: 'Fathers Day',\n name: {\n zh: '父親節'\n },\n type: 'observance'\n },\n '09-01': {\n name: {\n en: \"Journalist' Day\",\n zh: '記者節'\n },\n type: 'observance'\n },\n '09-03': {\n name: {\n en: 'Armed Forces Day',\n zh: '軍人節'\n },\n type: 'observance'\n },\n '09-28': {\n name: {\n en: \"Teachers' Day\",\n zh: '孔子誕辰紀念日'\n },\n type: 'observance'\n },\n '10-21': {\n name: {\n en: 'Overseas Chinese Day',\n zh: '華僑節'\n },\n type: 'observance'\n },\n '10-25': {\n name: {\n en: 'Taiwan Retrocession Day',\n zh: '臺灣光復節'\n },\n type: 'observance'\n },\n '11-12': {\n name: {\n en: \"Sun Yat-sen's Birthday\",\n zh: '國父誕辰紀念日'\n },\n note: \"Also Doctors' Day and Cultural Renaissance Day\",\n type: 'observance'\n },\n 'december solstice': {\n name: {\n en: 'Dongzhi Festival',\n zh: '冬至'\n },\n type: 'observance'\n },\n '12-25': {\n name: {\n en: 'Constitution Day',\n zh: '行憲紀念日'\n },\n type: 'observance'\n },\n 'chinese 01-0-15': {\n name: {\n en: 'Lantern Festival',\n zh: '元宵節'\n },\n type: 'observance'\n },\n 'chinese 01-0-15 #1': {\n name: {\n en: 'Tourism Day',\n zh: '觀光節'\n },\n type: 'observance'\n },\n 'chinese 02-0-02': {\n name: {\n en: \"Earth God's Birthday\",\n zh: '土地公誕辰'\n },\n type: 'observance'\n },\n 'chinese 02-0-19': {\n name: {\n en: \"Kuan Yin's Birthday\",\n zh: '觀音誕辰'\n },\n type: 'observance'\n },\n 'chinese 03-0-15': {\n name: {\n en: \"God of Medicine's Birthday\",\n zh: '保生大帝誕辰'\n },\n type: 'observance'\n },\n 'chinese 03-0-23': {\n name: {\n en: \"Matsu's Birthday\",\n zh: '媽祖誕辰'\n },\n type: 'observance'\n },\n 'chinese 04-0-08': {\n name: {\n en: \"Buddha's Birthday\",\n zh: '佛誕日'\n },\n type: 'observance'\n },\n 'chinese 05-0-13': {\n name: {\n en: \"Kuan Kung's Birthday\",\n zh: '關公誕辰'\n },\n type: 'observance'\n },\n 'chinese 05-0-13 #1': {\n name: {\n en: \"Cheng Huang's Birthday\",\n zh: '城隍爺誕辰'\n },\n type: 'observance'\n },\n 'chinese 07-0-07': {\n name: {\n en: 'Qixi Festival',\n zh: '七夕'\n },\n type: 'observance'\n },\n 'chinese 07-0-15': {\n name: {\n en: 'Ghost Festival',\n zh: '中元節'\n },\n type: 'observance'\n },\n 'chinese 09-0-09': {\n name: {\n en: 'Double Ninth Festival',\n zh: '重陽節'\n },\n type: 'observance'\n },\n 'chinese 10-0-15': {\n name: {\n en: 'Saisiat Festival',\n zh: '賽夏節'\n },\n type: 'observance'\n }\n }\n },\n TZ: {\n names: {\n en: 'Tanzania'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Nairobi'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-02': {\n name: {\n en: 'Zanzibar Revolution Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-07': {\n name: {\n en: 'Karume Day'\n }\n },\n '04-26': {\n name: {\n en: 'Union Day'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '07-07': {\n name: {\n en: 'Saba Saba Day'\n }\n },\n '08-08': {\n name: {\n en: 'Nane Nane Day'\n }\n },\n '10-14': {\n name: {\n en: 'Nyerere Day'\n }\n },\n '12-09': {\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-25'\n },\n '1 Shawwal P2D': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n },\n '12 Rabi al-awwal': {\n _name: '12 Rabi al-awwal',\n name: {\n en: 'Maulid Day'\n }\n }\n }\n },\n UA: {\n names: {\n uk: 'Україна',\n en: 'Ukraine'\n },\n langs: [\n 'uk'\n ],\n zones: [\n 'Europe/Kiev',\n 'Europe/Uzhgorod',\n 'Europe/Zaporozhye'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if saturday, sunday then next tuesday': {\n _name: '01-01',\n name: {\n en: 'New Year'\n },\n substitute: true\n },\n '01-02 and if saturday, sunday then next monday': {\n _name: '01-01',\n name: {\n en: 'New Year'\n },\n substitute: true\n },\n 'julian 12-25 and if saturday, sunday then next monday': {\n _name: 'julian 12-25',\n substitute: true\n },\n '03-08 and if saturday, sunday then next monday': {\n _name: '03-08'\n },\n 'orthodox and if sunday then next monday': {\n _name: 'orthodox'\n },\n 'orthodox 49 and if sunday then next monday': {\n _name: 'easter 49'\n },\n '05-01 and if saturday, sunday then next tuesday': {\n _name: '05-01',\n substitute: true\n },\n '05-02 and if saturday, sunday then next monday': {\n _name: '05-01',\n substitute: true\n },\n '05-09 and if saturday, sunday then next monday': {\n name: {\n uk: 'День перемоги над нацизмом у Другій світовій війні',\n en: 'Victory Day'\n },\n substitute: true\n },\n '06-28 and if saturday, sunday then next monday': {\n _name: 'Constitution Day',\n substitute: true\n },\n '08-24 and if saturday, sunday then next monday': {\n _name: 'Independence Day',\n substitute: true\n },\n '10-14 and if saturday, sunday then next monday': {\n name: {\n uk: 'День захисника України',\n en: 'Defender of Ukraine Day'\n },\n substitute: true,\n active: [\n {\n from: '2015-03-05'\n }\n ]\n }\n }\n },\n UG: {\n names: {\n en: 'Uganda'\n },\n dayoff: 'sundays',\n langs: [\n 'en',\n 'sw'\n ],\n zones: [\n 'Africa/Nairobi'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-26': {\n name: {\n en: 'Liberation Day'\n }\n },\n '02-16': {\n name: {\n en: 'Archbishop Janan Luwum Day'\n }\n },\n '03-08': {\n _name: '03-08'\n },\n 'easter -46': {\n _name: 'easter -46',\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n '06-03': {\n name: {\n en: \"Martyr's Day\"\n }\n },\n '06-09': {\n name: {\n en: 'National Heroes Day'\n }\n },\n '10-09': {\n _name: 'Independence Day'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n US: {\n names: {\n en: 'United States of America'\n },\n dayoff: 'sunday',\n zones: [\n 'America/New_York',\n 'America/Detroit',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Vevay',\n 'America/Chicago',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Knox',\n 'America/Menominee',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/North_Dakota/Beulah',\n 'America/Denver',\n 'America/Boise',\n 'America/Phoenix',\n 'America/Los_Angeles',\n 'America/Metlakatla',\n 'America/Anchorage',\n 'America/Juneau',\n 'America/Sitka',\n 'America/Yakutat',\n 'America/Nome',\n 'America/Adak',\n 'Pacific/Honolulu'\n ],\n langs: [\n 'en-us',\n 'en'\n ],\n days: {\n '01-01 and if sunday then next monday if saturday then previous friday': {\n substitute: true,\n _name: '01-01'\n },\n '3rd monday in January': {\n name: {\n en: 'Martin Luther King Jr. Day',\n es: 'Natalicio de Martin Luther King, Jr.'\n }\n },\n '3rd monday in February': {\n name: {\n en: \"Washington's Birthday\",\n es: 'Día de los Presidentes'\n }\n },\n '02-14': {\n _name: '02-14',\n type: 'observance'\n },\n '03-17': {\n name: {\n en: \"St. Patrick's Day\"\n },\n type: 'observance'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '04-15 if friday then next monday if saturday,sunday then next tuesday': {\n name: {\n en: 'Tax Day'\n },\n type: 'observance'\n },\n 'wednesday before 04-28': {\n name: {\n en: 'Administrative Professionals Day'\n },\n type: 'observance'\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n 'monday before 06-01': {\n name: {\n en: 'Memorial Day',\n es: 'Recordación de los Muertos de la Guerra'\n }\n },\n '06-19 and if sunday then next monday if saturday then previous friday since 2021': {\n substitute: true,\n name: {\n en: 'Juneteenth'\n }\n },\n '3rd sunday in June': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n '07-04 and if sunday then next monday if saturday then previous friday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '1st monday in September': {\n _name: '05-01'\n },\n '2nd monday in October': {\n name: {\n en: 'Columbus Day',\n es: 'Descubrimiento de América'\n }\n },\n '10-31 18:00': {\n name: {\n en: 'Halloween'\n },\n type: 'observance'\n },\n '11-11': {\n name: {\n en: 'Veterans Day',\n es: 'Día del Veterano'\n }\n },\n 'substitutes 11-11 if sunday then next monday if saturday then previous friday': {\n substitute: true,\n name: {\n en: 'Veterans Day',\n es: 'Día del Veterano'\n },\n type: 'bank',\n note: 'Federal Government offices are closed'\n },\n 'tuesday after 1st monday in November every 4 years since 1848': {\n name: {\n en: 'Election Day'\n },\n type: 'observance'\n },\n '4th thursday in November': {\n name: {\n en: 'Thanksgiving Day',\n es: 'Acción de Gracias'\n }\n },\n 'friday after 4th thursday in November': {\n name: {\n en: 'Day after Thanksgiving Day',\n es: 'Dia despues Acción de Gracias'\n },\n type: 'observance'\n },\n '12-24': {\n _name: '12-24',\n type: 'optional'\n },\n '12-25 and if sunday then next monday if saturday then previous friday': {\n substitute: true,\n _name: '12-25'\n },\n '12-31': {\n _name: '12-31',\n type: 'observance'\n }\n },\n states: {\n AL: {\n name: 'Alabama',\n zones: [\n 'America/Chicago'\n ],\n days: {\n '3rd monday in January': {\n name: {\n en: 'Robert E. Lee/Martin Luther King Birthday'\n }\n },\n '3rd monday in February': {\n name: {\n en: 'George Washington/Thomas Jefferson Birthday'\n }\n },\n '4th monday in April': {\n name: {\n en: 'Confederate Memorial Day'\n }\n },\n '1st monday in June': {\n name: {\n en: \"Jefferson Davis' birthday\"\n }\n }\n }\n },\n AK: {\n name: 'Alaska',\n zones: [\n 'America/Anchorage',\n 'America/Metlakatla',\n 'America/Juneau',\n 'America/Sitka',\n 'America/Yakutat',\n 'America/Nome'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"President's Day\"\n }\n },\n 'monday before April': {\n name: {\n en: \"Seward's Day\"\n }\n },\n '2nd monday in October': {\n name: {\n en: 'Columbus Day'\n },\n active: [\n {\n to: '2017-01-01'\n }\n ]\n },\n '2nd monday in October #1': {\n name: {\n en: \"Indigenous Peoples' Day\"\n },\n active: [\n {\n from: '2017-01-01'\n }\n ]\n },\n '10-18': {\n name: {\n en: 'Alaska Day'\n }\n }\n }\n },\n AZ: {\n name: 'Arizona',\n zones: [\n 'America/Phoenix',\n 'America/Denver'\n ],\n days: {\n '3rd monday in January': {\n name: {\n en: 'Dr. Martin Luther King Jr./ Civil Rights Day'\n }\n },\n '3rd monday in February': {\n name: {\n en: \"Lincoln/Washington Presidents' Day\"\n }\n }\n }\n },\n AR: {\n name: 'Arkansas',\n zones: [\n 'America/Chicago'\n ],\n days: {\n '3rd monday in January': {\n name: {\n en: \"Dr. Martin Luther King Jr./Robert E. Lee's Birthdays\"\n }\n },\n '3rd monday in February': {\n name: {\n en: \"George Washington's Birthday/Daisy Gatson Bates Day\"\n }\n },\n '12-24': {\n _name: '12-24'\n }\n }\n },\n CA: {\n name: 'California',\n zones: [\n 'America/Los_Angeles'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Presidents' Day\"\n }\n },\n '2nd monday in October': false,\n '02-15': {\n type: 'observance',\n name: {\n en: 'Susan B. Anthony Day'\n }\n },\n '03-31 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'César Chávez Day'\n }\n },\n '05-19': {\n type: 'observance',\n name: {\n en: 'Malcolm X Day'\n }\n },\n '05-23': {\n type: 'observance',\n name: {\n en: 'Harvey Milk Day'\n }\n },\n 'friday after 4th thursday in November': {\n name: {\n en: 'Day after Thanksgiving Day'\n },\n type: 'public'\n }\n },\n regions: {\n LA: {\n name: 'Los Angeles',\n days: {\n '08-24': {\n name: {\n en: 'Kobe Bryant Day'\n },\n type: 'observance',\n active: [\n {\n from: 2016\n }\n ]\n }\n }\n }\n }\n },\n CO: {\n name: 'Colorado',\n zones: [\n 'America/Denver'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: 'Washington-Lincoln Day'\n }\n },\n '2nd monday in October': {\n type: 'observance'\n }\n }\n },\n CT: {\n name: 'Connecticut',\n zones: [\n 'America/New_York'\n ],\n days: {\n '02-12': {\n name: {\n en: \"Lincoln's Birthday\"\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n }\n }\n },\n DE: {\n name: 'Delaware',\n days: {\n '2nd monday in October': false,\n '3rd monday in February': false,\n 'easter -2': {\n _name: 'easter -2'\n },\n 'friday after 4th thursday in November': {\n name: {\n en: 'Day After Thanksgiving'\n }\n },\n 'tuesday after 1st monday in November in even years': {\n name: {\n en: 'Election Day'\n }\n }\n }\n },\n DC: {\n name: 'District of Columbia',\n days: {\n '04-16': {\n name: {\n en: 'Emancipation Day'\n }\n }\n }\n },\n FL: {\n name: 'Florida',\n days: {\n '2nd monday in October': false,\n '3rd monday in February': false,\n '02-15': {\n name: {\n en: 'Susan B. Anthony Day'\n }\n },\n 'friday after 4th thursday in November': {\n name: {\n en: 'Day After Thanksgiving'\n }\n }\n }\n },\n GA: {\n name: 'Georgia',\n days: {\n '3rd monday in February': false,\n 'monday before 05-01 #1': {\n name: {\n en: 'Confederate Memorial Day'\n },\n active: [\n {\n to: '2016-01-01'\n }\n ]\n },\n 'monday before 05-01 #2': {\n name: {\n en: 'State Holiday'\n },\n note: 'Known as Confederate Memorial Day prior to 2016',\n active: [\n {\n from: '2016-01-01'\n }\n ]\n },\n 'friday after 4th thursday in November #1': {\n name: {\n en: \"Robert E. Lee's Birthday\"\n },\n note: 'General Lee was born on 1807-01-19 but this holiday was traditionally observed the day after Thanksgiving.',\n active: [\n {\n to: '2016-01-01'\n }\n ]\n },\n 'friday after 4th thursday in November #2': {\n name: {\n en: 'State Holiday'\n },\n note: \"Known as Robert E. Lee's Birtday prior to 2016\",\n active: [\n {\n from: '2016-01-01'\n }\n ]\n },\n '12-24': {\n name: {\n en: \"Washington's Birthday\"\n }\n },\n 'substitutes 12-24 if wednesday then next friday': {\n substitute: true,\n name: {\n en: \"Washington's Birthday\"\n }\n }\n }\n },\n HI: {\n name: 'Hawaii',\n zones: [\n 'Pacific/Honolulu'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Presidents' Day\"\n }\n },\n '03-26 and if saturday then previous friday if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Prince Jonah Kuhio Kalanianaole Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '06-11 and if saturday then previous friday if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Kamehameha Day'\n }\n },\n '3rd friday in August': {\n name: {\n en: 'Statehood Day'\n }\n },\n '2nd monday in October': false,\n 'tuesday after 1st monday in November in even years': {\n name: {\n en: 'General Election Day'\n }\n }\n }\n },\n ID: {\n name: 'Idaho',\n zones: [\n 'America/Boise',\n 'America/Los_Angeles'\n ],\n days: {\n '3rd monday in January': {\n name: {\n en: 'Martin Luther King, Jr./ Idaho Human Rights Day'\n }\n },\n '3rd monday in February': {\n name: {\n en: \"President's Day\"\n }\n }\n }\n },\n IL: {\n name: 'Illinois',\n zones: [\n 'America/Chicago'\n ],\n days: {\n '02-12': {\n name: {\n en: \"Lincoln's Birthday\"\n }\n },\n '1st monday in March': {\n name: {\n en: 'Casimir Pulaski Day'\n }\n },\n '05-19': {\n name: {\n en: 'Malcolm X Day'\n }\n },\n 'tuesday after 1st monday in November in even years': {\n name: {\n en: 'Election Day'\n }\n }\n }\n },\n IN: {\n name: 'Indiana',\n zones: [\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Vevay',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Knox'\n ],\n days: {\n 'easter -2': {\n _name: 'easter -2'\n },\n 'tuesday after 1st monday in May': {\n name: {\n en: 'Primary Election Day'\n }\n },\n 'tuesday after 1st monday in November': {\n name: {\n en: 'Election Day'\n }\n },\n 'friday after 4th thursday in November': {\n name: {\n en: \"Lincoln's Birthday\"\n }\n }\n }\n },\n IA: {\n name: 'Iowa',\n zones: [\n 'America/Chicago'\n ],\n days: {\n '02-12': {\n name: {\n en: \"Lincoln's Birthday\"\n }\n }\n }\n },\n KS: {\n name: 'Kansas',\n zones: [\n 'America/Chicago',\n 'America/Denver'\n ],\n days: {\n '3rd monday in February': false\n }\n },\n KY: {\n name: 'Kentucky',\n zones: [\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello'\n ],\n days: {\n '3rd monday in February': false,\n 'easter -2 14:00': {\n _name: 'easter -2'\n },\n '12-24': {\n _name: '12-24'\n },\n '12-31': {\n _name: '12-31'\n }\n }\n },\n LA: {\n name: 'Louisiana',\n zones: [\n 'America/Chicago'\n ],\n days: {\n 'easter -2': {\n _name: 'easter -2'\n },\n 'tuesday after 1st monday in November in even years': {\n name: {\n en: 'Election Day'\n }\n }\n },\n regions: {\n NO: {\n name: 'New Orleans',\n days: {\n 'easter -47': {\n _name: 'easter -47',\n name: {\n en: 'Mardi Gras'\n }\n }\n }\n }\n }\n },\n ME: {\n name: 'Maine',\n zones: [\n 'America/New_York'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Washington's Birthday/President's Day\"\n }\n },\n '3rd monday in April': {\n name: {\n en: \"Patriots' Day\"\n }\n }\n }\n },\n MD: {\n name: 'Maryland',\n zones: [\n 'America/New_York'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"President's Day\"\n }\n },\n 'friday before 1st monday before 06-01 since 2009 and prior to 2016': {\n name: {\n en: 'Service Reduction Day'\n }\n },\n 'friday after 4th thursday in November': {\n name: {\n en: 'Native American Heritage Day'\n }\n }\n }\n },\n MA: {\n name: 'Massachusetts',\n zones: [\n 'America/New_York'\n ],\n days: {\n '03-17': {\n name: {\n en: 'Evacuation Day'\n }\n },\n '3rd monday in April': {\n name: {\n en: \"Patriots' Day\"\n }\n },\n '06-17': {\n name: {\n en: 'Bunker Hill Day'\n }\n }\n }\n },\n MI: {\n name: 'Michigan',\n zones: [\n 'America/Detroit',\n 'America/Menominee'\n ],\n days: {\n '12-24': {\n _name: '12-24'\n },\n '12-31': {\n _name: '12-31'\n }\n }\n },\n MN: {\n name: 'Minnesota',\n zones: [\n 'America/Chicago'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Washington's and Lincoln's Birthday\"\n }\n },\n '2nd monday in October': {\n name: {\n en: 'Columbus Day'\n },\n active: [\n {\n to: '2017-01-01'\n }\n ]\n },\n '2nd monday in October #1': {\n name: {\n en: 'Indigenous Peoples’ Day'\n },\n active: [\n {\n from: '2017-01-01'\n }\n ]\n }\n }\n },\n MS: {\n name: 'Mississippi',\n zones: [\n 'America/Chicago'\n ],\n days: {\n '3rd monday in January': {\n name: {\n en: \"Martin Luther King's and Robert E. Lee's Birthdays\"\n }\n },\n 'monday before 05-01': {\n name: {\n en: 'Confederate Memorial Day'\n }\n }\n }\n },\n MO: {\n name: 'Missouri',\n zones: [\n 'America/Chicago'\n ],\n days: {\n '02-12': {\n name: {\n en: \"Lincoln's Birthday\"\n }\n },\n '05-08': {\n name: {\n en: 'Truman Day'\n }\n }\n }\n },\n MT: {\n name: 'Montana',\n zones: [\n 'America/Denver'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Lincoln's and Washington's Birthday\"\n }\n },\n 'tuesday after 1st monday in November': {\n name: {\n en: 'Election Day'\n }\n },\n '12-24': {\n _name: '12-24'\n },\n '12-31': {\n _name: '12-31'\n }\n }\n },\n NE: {\n name: 'Nebraska',\n zones: [\n 'America/Chicago',\n 'America/Denver'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"President's Day\"\n }\n },\n 'friday before 05-01': {\n name: {\n en: 'Arbor Day'\n }\n }\n }\n },\n NV: {\n name: 'Nevada',\n zones: [\n 'America/Los_Angeles'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: 'Presidents Day'\n }\n },\n '2nd monday in October': false,\n '08-09': {\n name: {\n en: \"Indigenous Peoples' Day\"\n },\n active: [\n {\n from: '2017-01-01'\n }\n ],\n type: 'observance'\n },\n 'friday before 11-01': {\n name: {\n en: 'Nevada Day'\n }\n },\n '4th friday in November': {\n name: {\n en: 'Family Day'\n }\n }\n }\n },\n NH: {\n name: 'New Hampshire',\n zones: [\n 'America/New_York'\n ],\n days: {\n '3rd monday in January': {\n name: {\n en: 'Martin Luther King, Jr./ Civil Rights Day'\n }\n },\n '3rd monday in February': {\n name: {\n en: \"President's Day\"\n }\n },\n '2nd monday in October': {\n type: 'observance'\n },\n 'tuesday after 1st monday in November in even years': {\n name: {\n en: 'Election Day'\n }\n },\n 'friday after 4th thursday in November': {\n name: {\n en: 'Day after Thanksgiving'\n }\n }\n }\n },\n NJ: {\n name: 'New Jersey',\n zones: [\n 'America/New_York'\n ],\n days: {\n '02-12': {\n name: {\n en: \"Lincoln's Birthday\"\n }\n },\n '3rd monday in February': {\n name: {\n en: 'Presidents Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'tuesday after 1st monday in November': {\n name: {\n en: 'Election Day'\n }\n }\n }\n },\n NM: {\n name: 'New Mexico',\n zones: [\n 'America/Denver'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Presidents' Day\"\n }\n },\n 'friday after 4th thursday in November': {\n name: {\n en: 'Day after Thanksgiving'\n }\n }\n }\n },\n NY: {\n name: 'New York',\n zones: [\n 'America/New_York'\n ],\n days: {\n '02-12': {\n name: {\n en: \"Lincoln's Birthday\"\n }\n },\n '02-15': {\n name: {\n en: 'Susan B. Anthony Day'\n }\n },\n 'tuesday after 1st monday in November': {\n name: {\n en: 'Election Day'\n }\n }\n }\n },\n NC: {\n name: 'North Carolina',\n zones: [\n 'America/New_York'\n ],\n days: {\n '3rd monday in February': false,\n '2nd monday in October': false,\n 'easter -2': {\n _name: 'easter -2'\n },\n 'friday after 4th thursday in November': {\n name: {\n en: 'Day after Thanksgiving'\n }\n },\n '12-24 and if friday then previous thursday if saturday,sunday then previous friday': {\n substitute: true,\n _name: '12-24'\n }\n }\n },\n ND: {\n name: 'North Dakota',\n zones: [\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/North_Dakota/Beulah'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Presidents' Day\"\n }\n }\n }\n },\n OH: {\n name: 'Ohio',\n zones: [\n 'America/New_York'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: 'Washington-Lincoln Day'\n }\n }\n }\n },\n OK: {\n name: 'Oklahoma',\n zones: [\n 'America/Chicago'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Presidents' Day\"\n }\n },\n 'friday after 4th thursday in November': {\n name: {\n en: 'Day after Thanksgiving'\n }\n }\n }\n },\n OR: {\n name: 'Oregon',\n zones: [\n 'America/Los_Angeles'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: 'Presidents Day'\n }\n }\n }\n },\n PA: {\n name: 'Pennsylvania',\n zones: [\n 'America/New_York'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Presidents' Day\"\n }\n },\n '06-14': {\n name: {\n en: 'Flag Day'\n }\n }\n }\n },\n RI: {\n name: 'Rhode Island',\n zones: [\n 'America/New_York'\n ],\n days: {\n '2nd monday in August': {\n name: {\n en: 'Victory Day'\n }\n }\n }\n },\n SC: {\n name: 'South Carolina',\n zones: [\n 'America/New_York'\n ],\n days: {\n '05-10': {\n name: {\n en: 'Confederate Memorial Day'\n }\n },\n '12-26': {\n _name: '12-26'\n }\n }\n },\n SD: {\n name: 'South Dakota',\n zones: [\n 'America/Chicago',\n 'America/Denver'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Presidents' Day\"\n }\n },\n '2nd monday in October': {\n name: {\n en: 'Columbus Day'\n },\n active: [\n {\n to: '2015-01-01'\n }\n ]\n },\n '2nd monday in October #1': {\n name: {\n en: 'Native American Day'\n },\n active: [\n {\n from: '2015-01-01'\n }\n ]\n }\n }\n },\n TN: {\n name: 'Tennessee',\n zones: [\n 'America/Chicago',\n 'America/New_York'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"President's Day\"\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n '12-24': {\n _name: '12-24'\n }\n }\n },\n TX: {\n name: 'Texas',\n zones: [\n 'America/Chicago',\n 'America/Denver'\n ],\n days: {\n '01-19': {\n name: {\n en: 'Confederate Heroes Day'\n },\n type: 'observance',\n note: 'state agencies are partially staffed'\n },\n '3rd monday in February': {\n name: {\n en: \"Presidents' Day\"\n }\n },\n '03-02': {\n name: {\n en: 'Texas Independence Day'\n },\n type: 'observance',\n note: 'state agencies are partially staffed'\n },\n '03-31': {\n name: {\n en: 'Cesar Chavez Day'\n },\n type: 'observance'\n },\n 'easter -2': {\n _name: 'easter -2',\n type: 'observance'\n },\n '04-21': {\n name: {\n en: 'San Jacinto Day'\n },\n type: 'observance',\n note: 'state agencies are partially staffed'\n },\n '06-19': {\n name: {\n en: 'Emancipation Day In Texas'\n },\n type: 'observance',\n note: 'state agencies are partially staffed'\n },\n '08-27': {\n name: {\n en: 'Lyndon Baines Johnson Day'\n },\n type: 'observance',\n note: 'state agencies are partially staffed'\n },\n 'friday after 4th thursday in November': {\n name: {\n en: 'Day after Thanksgiving'\n }\n },\n '12-24': {\n _name: '12-24'\n },\n '12-26': {\n _name: '12-26',\n name: {\n en: 'Day after Christmas'\n }\n }\n }\n },\n UT: {\n name: 'Utah',\n zones: [\n 'America/Denver'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: 'Washington and Lincoln Day'\n }\n },\n '07-24': {\n name: {\n en: 'Pioneer Day'\n }\n }\n }\n },\n VT: {\n name: 'Vermont',\n zones: [\n 'America/New_York'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Presidents' Day\"\n }\n },\n '1st tuesday in March': {\n name: {\n en: 'Town Meeting Day'\n }\n },\n '3rd monday in August': {\n name: {\n en: 'Bennington Battle Day'\n }\n },\n '2nd monday in October': {\n name: {\n en: 'Columbus Day'\n },\n active: [\n {\n to: '2017-09-01'\n }\n ]\n },\n '2nd monday in October #1': {\n name: {\n en: \"Indigenous Peoples' Day\"\n },\n active: [\n {\n from: '2017-09-01'\n }\n ]\n }\n }\n },\n VA: {\n name: 'Virginia',\n zones: [\n 'America/New_York'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: 'George Washington Day'\n }\n },\n 'friday before 3rd monday in January prior to 2021': {\n name: {\n en: 'Lee–Jackson Day'\n }\n },\n 'tuesday after 1st monday in November in even years since 2020': {\n name: 'Election Day'\n }\n }\n },\n WA: {\n name: 'Washington',\n zones: [\n 'America/Los_Angeles'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"Presidents' Day\"\n }\n }\n }\n },\n WV: {\n name: 'West Virginia',\n zones: [\n 'America/New_York'\n ],\n days: {\n '02-15': {\n name: {\n en: 'Susan B. Anthony Day'\n }\n },\n '3rd monday in February': {\n name: {\n en: \"President's Day\"\n }\n },\n '06-20': {\n name: {\n en: 'West Virginia Day'\n }\n },\n '4th friday in November': {\n name: {\n en: \"Lincoln's Day\"\n }\n }\n }\n },\n WI: {\n name: 'Wisconsin',\n zones: [\n 'America/Chicago'\n ],\n days: {\n '02-15': {\n name: {\n en: 'Susan B. Anthony Day'\n }\n },\n '2nd tuesday in September': {\n name: {\n en: 'Primary Election Day'\n }\n },\n 'tuesday after 1st monday in November': {\n name: {\n en: 'Election Day'\n }\n }\n }\n },\n WY: {\n name: 'Wyoming',\n zones: [\n 'America/Denver'\n ],\n days: {\n '3rd monday in February': {\n name: {\n en: \"President's Day\"\n }\n }\n }\n }\n }\n },\n UY: {\n names: {\n es: 'Uruguay',\n en: 'Uruguay'\n },\n dayoff: 'sunday',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Montevideo'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06',\n type: 'observance'\n },\n 'easter -48': {\n name: {\n en: 'Carnival',\n es: 'Carnaval'\n },\n type: 'observance'\n },\n 'easter -47': {\n _name: 'easter -47',\n type: 'observance'\n },\n 'easter -6 P5D': {\n name: {\n en: 'Tourism Week',\n es: 'Semana de Turismo'\n },\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n '04-19 if tuesday,wednesday then previous monday if thursday,friday then next monday': {\n name: {\n en: 'Landing of the 33 Orientals',\n es: 'Desembarco de los 33 Orientales'\n },\n type: 'observance'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-18 if tuesday,wednesday then previous monday if thursday,friday then next monday': {\n name: {\n en: 'Battle of Las Piedras',\n es: 'Batalla de las Piedras'\n },\n type: 'observance'\n },\n '06-19': {\n name: {\n en: 'Birthday of José Gervasio Artigas and Never Again Day',\n es: 'Natalicio de Artigas y Día del Nunca Más'\n },\n type: 'observance'\n },\n '07-18': {\n _name: 'Constitution Day'\n },\n '08-25': {\n _name: 'Independence Day'\n },\n '10-12 if tuesday,wednesday then previous monday if thursday,friday then next monday': {\n name: {\n en: 'Columbus Day',\n es: 'Día de la Raza'\n },\n type: 'observance'\n },\n '11-02': {\n _name: '11-02',\n type: 'observance'\n },\n '12-24': {\n _name: '12-24',\n type: 'observance'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-31': {\n _name: '12-31',\n type: 'observance'\n }\n }\n },\n VA: {\n names: {\n it: 'Stato della Città del Vaticano',\n la: 'Status Civitatis Vaticanae',\n en: 'Vatican City'\n },\n langs: [\n 'it'\n ],\n zones: [\n 'Europe/Rome'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n name: {\n en: 'Solemnity of Mary, Mother of God',\n it: 'Maria Santissima Madre di Dio'\n }\n },\n '01-06': {\n name: {\n en: 'Epiphany',\n it: 'Epifania del Signore'\n }\n },\n '02-11': {\n name: {\n en: 'Anniversary of the foundation of Vatican City',\n it: 'Anniversario della istituzione dello Stato della Città del Vaticano'\n }\n },\n '03-19': {\n _name: '03-19'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 39': {\n _name: 'easter 39',\n active: [\n {\n to: 2009\n }\n ]\n },\n 'easter 60': {\n _name: 'easter 60',\n active: [\n {\n to: 2009\n }\n ]\n },\n '05-01': {\n _name: '05-01',\n name: {\n en: 'Saint Joseph the Worker',\n it: 'San Giuseppe lavoratore'\n }\n },\n '06-29': {\n _name: '06-29'\n },\n '08-15': {\n _name: '08-15',\n name: {\n it: 'Assunzione di Maria in Cielo'\n }\n },\n '09-08': {\n name: {\n en: 'Nativity of Mary',\n it: 'Festa della natività della madonna'\n }\n },\n '11-01': {\n _name: '11-01'\n },\n '12-08': {\n _name: '12-08'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n },\n '10-16': {\n name: {\n en: 'Anniversary of the election of Pope John Paul II',\n it: \"Anniversario dell'Elezione del Santo Padre\"\n },\n active: [\n {\n from: 1978,\n to: 2005\n }\n ]\n },\n '11-04': {\n name: {\n en: 'Saint Charles Borromeo - Name day of the Holy Father',\n it: 'San Carlo Borromeo - Onomastico del Santo Padre'\n },\n note: 'Name day of Pope John Paul II (Karol Józef Wojtyła)',\n active: [\n {\n from: 1978,\n to: 2005\n }\n ]\n },\n '04-19': {\n name: {\n en: 'Anniversary of the election of Pope Benedict XVI',\n it: \"Anniversario dell'Elezione del Santo Padre\"\n },\n active: [\n {\n from: 2005,\n to: 2013\n }\n ]\n },\n '03-19#1': {\n name: {\n en: 'Saint Joseph - Name day of the Holy Father',\n it: 'San Giuseppe - Onomastico del Santo Padre'\n },\n note: 'Name day of Pope Benedict XVI (Josef Ratzinger)',\n active: [\n {\n from: 2005,\n to: 2013\n }\n ]\n },\n '03-13': {\n name: {\n en: 'Anniversary of the election of Pope Francis',\n it: \"Anniversario dell'Elezione del Santo Padre\"\n },\n active: [\n {\n from: 2013\n }\n ]\n },\n '04-23': {\n name: {\n en: 'Saint George - Name day of the Holy Father',\n it: 'San Giorgio - Onomastico del Santo Padre'\n },\n note: 'Name day of Pope Francis (Jorge Mario Bergoglio)',\n active: [\n {\n from: 2013\n }\n ]\n }\n }\n },\n VC: {\n names: {\n en: 'St. Vincent & Grenadines'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n dayoff: 'sunday',\n days: {\n '01-01 and if Sunday then next Monday': {\n substitute: true,\n _name: '01-01'\n },\n '03-14 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'National Hero′s Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01 and if Sunday then next Monday': {\n substitute: true,\n _name: '05-01'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '1st Monday in July': {\n name: {\n en: 'Carnival Monday'\n },\n disable: [\n '2021-06-05'\n ],\n enable: [\n '2021-09-06'\n ]\n },\n 'Tuesday after 1st Monday in July': {\n name: {\n en: 'Carnival Tuesday'\n },\n disable: [\n '2021-06-06'\n ],\n enable: [\n '2021-09-07'\n ]\n },\n '08-01 and if Sunday then next Monday': {\n substitute: true,\n name: {\n en: 'Emancipation Day'\n }\n },\n '10-27 and if Sunday then next Monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '12-25 and if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if Sunday then next Monday': {\n substitute: true,\n _name: '12-26'\n }\n }\n },\n VE: {\n names: {\n es: 'Venezuela',\n en: 'Venezuela'\n },\n dayoff: 'sundays',\n langs: [\n 'es'\n ],\n zones: [\n 'America/Caracas'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n '01-06': {\n _name: '01-06',\n type: 'observance'\n },\n '01-15': {\n name: {\n es: 'Día del Maestro',\n en: \"Teacher's Day\"\n },\n type: 'optional',\n note: 'teachers only'\n },\n '03-19': {\n _name: '03-19',\n type: 'observance'\n },\n 'easter -48': {\n name: {\n en: 'Carnival',\n es: 'Carnaval'\n }\n },\n 'easter -47': {\n _name: 'easter -47'\n },\n 'easter -6 P7D': {\n name: {\n en: 'Holy Week',\n es: 'Semana Santa'\n },\n type: 'observance'\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter'\n },\n '04-19': {\n name: {\n en: 'Declaration of Independence',\n es: 'Declaración de la Independencia'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '06-24': {\n name: {\n en: 'Battle of Carabobo',\n es: 'Aniversario de la Batalla de Carabobo'\n }\n },\n '07-05': {\n _name: 'Independence Day'\n },\n '07-24': {\n name: {\n en: 'Birthday of Simón Bolívar',\n es: 'Natalicio de Simón Bolívar'\n }\n },\n '08-03': {\n name: {\n en: 'Flag Day',\n es: 'Día de la Bandera'\n },\n type: 'observance'\n },\n '09-11': {\n name: {\n en: 'Our Lady of Coromoto',\n es: 'Día de Nuestra Señora de Coromoto'\n },\n type: 'observance'\n },\n '10-12': {\n name: {\n en: 'Day of Indigenous Resistance',\n es: 'Día de la resistencia indígena'\n }\n },\n '11-01': {\n _name: '11-01',\n type: 'observance'\n },\n '11-02': {\n _name: '11-02',\n type: 'observance'\n },\n '12-08': {\n _name: '12-08',\n type: 'observance'\n },\n '12-10': {\n name: {\n en: 'Venezuelan Air Force Day',\n es: 'Día de la Aviación Nacional'\n },\n type: 'observance'\n },\n '12-24': {\n _name: '12-24'\n },\n '12-25': {\n _name: '12-25'\n },\n '12-31': {\n _name: '12-31'\n }\n },\n states: {\n B: {\n name: 'Anzoátegui',\n days: {\n '11-14': {\n name: {\n es: 'Natalicio de José Antonio Anzoátegui'\n }\n }\n }\n },\n G: {\n name: 'Carabobo',\n days: {\n '11-13': {\n name: {\n es: 'Día de la Virgen del Socorro'\n }\n }\n }\n },\n K: {\n name: 'Lara',\n days: {\n '01-14': {\n name: {\n es: 'Día de La Divina Pastora'\n }\n },\n '05-28': {\n name: {\n es: 'Natalicio de Jacinto Lara'\n }\n }\n },\n regions: {\n BA: {\n name: 'Barquisimeto',\n days: {\n '09-14': {\n name: {\n es: 'Día de Barquisimeto'\n }\n }\n }\n }\n }\n },\n M: {\n name: 'Miranda',\n days: {\n '03-19': {\n _name: '03-19'\n }\n }\n },\n N: {\n name: 'Monagas',\n days: {\n '12-07': {\n name: {\n es: 'Día de Maturin'\n }\n }\n }\n },\n S: {\n name: 'Táchira',\n days: {\n '08-15': {\n _name: '08-15',\n name: {\n es: 'Día de la Virgen de Consolación'\n }\n }\n }\n },\n V: {\n name: 'Zulia',\n days: {\n '10-24': {\n name: {\n es: 'Natalicio de Rafael Urdaneta'\n }\n },\n '11-18': {\n name: {\n es: 'Día de la Virgen de la Chinita'\n }\n }\n }\n }\n }\n },\n VG: {\n names: {\n en: 'British Virgin Islands'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'Monday before 03-08': {\n name: {\n en: 'The Anniversary of the Birth of Hamilton Lavity Stoutt'\n }\n },\n '2nd Monday in March': {\n name: {\n en: 'Commonwealth Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n 'easter 49': {\n _name: 'easter 49',\n type: 'observance'\n },\n 'easter 50': {\n _name: 'easter 50'\n },\n '2nd Saturday after 06-02 prior to 2020': {\n name: {\n en: 'Sovereign’s Birthday'\n },\n disable: [\n '2017-06-10',\n '2019-06-15'\n ],\n enable: [\n '2017-06-17',\n '2019-06-07'\n ]\n },\n '2nd Friday after 06-02 since 2020': {\n name: {\n en: 'Sovereign’s Birthday'\n }\n },\n '07-01 if Sunday,Thursday then next Monday if Saturday then previous Friday if Tuesday,Wednesday then previous Monday': {\n name: {\n en: 'Virgin Islands Day'\n }\n },\n '10-21 if Sunday then next Monday if Saturday then previous Friday if Tuesday,Wednesday then previous Monday if Thursday then next Friday': {\n name: {\n en: 'St. Ursula’s Day'\n },\n disable: [\n '2016-10-23',\n '2020-10-19',\n '2021-10-22'\n ],\n enable: [\n '2016-10-19',\n '2020-10-23'\n ]\n },\n '1st Monday in August': {\n name: {\n en: 'Emancipation Monday'\n }\n },\n 'Tuesday after 1st Monday in August': {\n name: {\n en: 'Emancipation Tuesday'\n }\n },\n 'Wednesday after 1st Monday in August': {\n name: {\n en: 'Emancipation Wednesday'\n }\n },\n '2021-10-18': {\n name: {\n en: 'Heroes’ and Forefathers Day'\n }\n },\n '2021-11-08': {\n name: {\n en: 'Commemoration of the Great March of 1949'\n }\n },\n '12-25 and if Saturday then next Monday if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-25'\n },\n '12-26 and if Saturday then next Monday if Sunday then next Tuesday': {\n substitute: true,\n _name: '12-26'\n }\n }\n },\n VI: {\n names: {\n en: 'U.S. Virgin Islands'\n },\n langs: [\n 'en'\n ],\n zones: [\n 'America/Port_of_Spain'\n ],\n dayoff: 'sunday',\n _days: 'US',\n days: {\n '01-06': {\n _name: '01-06',\n name: {\n en: 'Three Kings Day'\n }\n },\n '3rd monday in February': {\n name: {\n en: \"President's Day\"\n }\n },\n '03-17': false,\n '03-31': {\n name: {\n en: 'Transfer Day'\n }\n },\n 'easter -3': {\n _name: 'easter -3'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '07-03': {\n name: {\n en: 'Emancipation Day'\n }\n },\n '4th Monday in July': {\n name: {\n en: 'Hurricane Supplication Day'\n }\n },\n '2nd monday in October': {\n name: {\n en: 'Virgin Islands–Puerto Rico Friendship Day'\n }\n },\n '10-25': {\n name: {\n en: 'Hurricane Thanksgiving'\n },\n type: 'observance'\n },\n 'friday after 4th thursday in November': {\n name: {\n en: 'Day after Thanksgiving Day'\n },\n type: 'school'\n }\n }\n },\n VN: {\n names: {\n vi: 'Cộng hòa Xã hội chủ nghĩa Việt Nam',\n en: 'Vietnam'\n },\n dayoff: '',\n langs: [\n 'vi'\n ],\n zones: [\n 'Asia/Ho_Chi_Minh',\n 'Asia/Bangkok'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'vietnamese 1-0-1': {\n name: {\n en: 'Vietnamese New Year',\n vi: 'Tết Nguyên Đán'\n }\n },\n '1 day before vietnamese 1-0-1 P5D': {\n name: {\n en: 'Vietnamese New Year Holidays',\n vi: 'Giao thừa Tết Nguyên Đán'\n }\n },\n 'vietnamese 3-0-10': {\n name: {\n en: 'Hung Kings Commemorations',\n vi: 'Giỗ tổ Hùng Vương'\n }\n },\n '04-30': {\n name: {\n en: 'Day of liberating the South for national reunification',\n vi: 'Ngày Giải phóng miền Nam'\n }\n },\n '05-01': {\n _name: '05-01'\n },\n '09-02': {\n name: {\n en: 'National Day',\n vi: 'Quốc khánh'\n }\n },\n '02-03': {\n name: {\n en: 'Communist Party of Viet Nam Foundation Anniversary',\n vi: 'Ngày thành lập Đảng'\n },\n type: 'observance'\n },\n '03-08': {\n _name: '03-08',\n type: 'observance'\n },\n '04-21': {\n name: {\n en: 'Vietnam Book Day',\n vi: 'Ngày Sách Việt Nam'\n },\n type: 'observance'\n },\n '05-07': {\n name: {\n en: 'Dien Bien Phu Victory Day',\n vi: 'Ngày Chiến thắng Điện Biện Phủ'\n },\n type: 'observance'\n },\n '05-19': {\n name: {\n en: \"President Ho Chi Minh's Birthday\",\n vi: 'Ngày sinh Chủ tịch Hồ Chí Minh'\n },\n type: 'observance'\n },\n '06-01': {\n name: {\n en: \"International Children's Day\",\n vi: 'Ngày quốc tế Thiếu nhi'\n },\n type: 'observance'\n },\n '06-28': {\n name: {\n en: 'Vietnamese Family Day',\n vi: 'Ngày Gia đình Việt Nam'\n },\n type: 'observance'\n },\n '07-27': {\n name: {\n en: 'Remembrance Day',\n vi: 'Ngày Thương Binh Liệt Sĩ'\n },\n type: 'observance'\n },\n '08-19': {\n name: {\n en: 'August Revolution Commemoration Day',\n vi: 'Ngày cách mạng Tháng Tám'\n },\n type: 'observance'\n },\n '10-10': {\n name: {\n en: 'Capital Liberation Day',\n vi: 'Ngày giải phóng Thủ Đô'\n },\n type: 'observance'\n },\n '10-20': {\n name: {\n en: \"Vietnamese Women's Day\",\n vi: 'Ngày Phụ nữ Việt Nam'\n },\n type: 'observance'\n },\n '11-20': {\n name: {\n en: \"Vietnamese Teacher's Day\",\n vi: 'Ngày Nhà giáo Việt Nam'\n },\n type: 'observance'\n },\n '12-22': {\n name: {\n en: 'National Defence Day',\n vi: 'Ngày hội Quốc phòng Toàn dân'\n },\n type: 'observance'\n },\n 'vietnamese 1-0-5': {\n name: {\n en: 'Victory of Ngọc Hồi-Đống Đa',\n vi: 'Chiến thắng Ngọc Hồi - Đống Đa'\n },\n type: 'observance'\n },\n 'vietnamese 1-0-15': {\n name: {\n en: 'Lantern Festival',\n vi: 'Tết Nguyên Tiêu'\n },\n type: 'observance'\n },\n 'vietnamese 4-0-15': {\n name: {\n en: \"Buddha's Birthday\",\n vi: 'Lễ Phật đản'\n },\n type: 'observance'\n },\n 'vietnamese 5-0-5': {\n name: {\n en: 'Mid-year Festival',\n vi: 'Tết Đoan ngọ'\n },\n type: 'observance'\n },\n 'vietnamese 7-0-15': {\n name: {\n en: 'Ghost Festival',\n vi: 'Rằm Tháng Bảy, Vu Lan'\n },\n type: 'observance'\n },\n 'vietnamese 8-0-15': {\n name: {\n en: 'Mid-Autumn Festival',\n vi: 'Tết Trung thu'\n },\n type: 'observance'\n },\n 'vietnamese 12-0-23': {\n name: {\n en: 'Kitchen guardians',\n vi: 'Ông Táo chầu trời'\n },\n type: 'observance'\n }\n }\n },\n VU: {\n names: {\n en: 'Vanuatu',\n fr: 'République de Vanuatu'\n },\n langs: [\n 'fr',\n 'en',\n 'bi'\n ],\n zones: [\n 'Pacific/Efate'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n '02-21': {\n name: \"Mémoire du père de l'indépendance Rév. Dr. W.H. Lini\"\n },\n '02-22': {\n _name: 'Public Holiday'\n },\n '03-05': {\n name: 'Fête des chefs coutumiers'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01': {\n _name: '05-01'\n },\n 'easter 39': {\n _name: 'easter 39'\n },\n '07-24': {\n name: 'Journée Mondiale des Enfants'\n },\n '07-30': {\n _name: 'Independence Day'\n },\n '08-15': {\n _name: '08-15'\n },\n '08-16': {\n _name: 'Public Holiday'\n },\n '10-05': {\n _name: 'Constitution Day'\n },\n '10-29': {\n name: \"Jour de l'Unité\"\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n name: 'Fête de Famille'\n },\n '12-27': {\n _name: 'Public Holiday'\n }\n }\n },\n XK: {\n names: {\n sq: 'Republika e Kosovës',\n sr: 'Република Косово',\n en: 'Kosovo'\n },\n langs: [\n 'sq',\n 'sr'\n ],\n zones: [\n 'Europe/Belgrade'\n ],\n dayoff: 'sunday',\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'julian 12-25': {\n _name: 'julian 12-25'\n },\n '02-17': {\n _name: 'Independence Day'\n },\n '04-09': {\n _name: 'Constitution Day'\n },\n easter: {\n _name: 'easter'\n },\n orthodox: {\n _name: 'orthodox'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-09': {\n _name: '05-09'\n },\n '12-25': {\n _name: '12-25'\n },\n '1 Shawwal': {\n _name: '1 Shawwal'\n },\n '10 Dhu al-Hijjah': {\n _name: '10 Dhu al-Hijjah'\n }\n }\n },\n YT: {\n names: {\n fr: 'Mayotte',\n en: 'Mayotte'\n },\n langs: [\n 'fr'\n ],\n zones: [\n 'Africa/Nairobi'\n ],\n dayoff: 'sunday',\n _days: 'FR',\n days: {\n '04-27': {\n _name: 'Abolition of Slavery'\n }\n }\n },\n ZA: {\n names: {\n en: 'South Africa'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Johannesburg'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'substitutes 01-01 if sunday then next monday': {\n name: {\n en: 'Public Holiday'\n }\n },\n '03-21': {\n name: {\n en: 'Human Rights Day'\n }\n },\n 'substitutes 03-21 if sunday then next monday': {\n name: {\n en: 'Public Holiday'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1',\n name: {\n en: 'Family Day'\n }\n },\n '04-27': {\n name: {\n en: 'Freedom Day'\n }\n },\n 'substitutes 04-27 if sunday then next monday': {\n name: {\n en: 'Public Holiday'\n }\n },\n '05-01': {\n _name: '05-01',\n name: {\n en: \"Workers' Day\"\n }\n },\n 'substitutes 05-01 if sunday then next monday': {\n name: {\n en: 'Public Holiday'\n }\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '06-16': {\n name: {\n en: 'Youth Day'\n }\n },\n 'substitutes 06-16 if sunday then next monday': {\n name: {\n en: 'Public Holiday'\n }\n },\n '3rd sunday in June': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n '08-09': {\n name: {\n en: \"National Women's Day\"\n }\n },\n 'substitutes 08-09 if sunday then next monday': {\n name: {\n en: 'Public Holiday'\n }\n },\n '07-18': {\n name: {\n en: 'Nelson Mandela Day'\n },\n type: 'observance'\n },\n '09-24': {\n name: {\n en: 'Heritage Day'\n }\n },\n 'substitutes 09-24 if sunday then next monday': {\n name: {\n en: 'Public Holiday'\n }\n },\n '12-16': {\n name: {\n en: 'Day of Reconciliation'\n }\n },\n 'substitutes 12-16 if sunday then next monday': {\n name: {\n en: 'Public Holiday'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26',\n name: {\n en: 'Day of Goodwill'\n }\n },\n 'substitutes 12-26 if sunday then next monday': {\n name: {\n en: 'Public Holiday'\n }\n }\n }\n },\n ZM: {\n names: {\n en: 'Zambia'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Maputo'\n ],\n days: {\n '01-01 and if sunday then next monday': {\n substitute: true,\n _name: '01-01'\n },\n '03-09': {\n name: {\n en: 'Women’s Day'\n }\n },\n '03-12 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'Youth Day'\n }\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '05-01 and if sunday then next monday': {\n substitute: true,\n _name: '05-01'\n },\n '05-25 and if sunday then next monday': {\n substitute: true,\n name: {\n en: 'African Freedom Day'\n }\n },\n '1st monday in July': {\n name: {\n en: \"Heroes' Day\"\n }\n },\n 'tuesday after 1st monday in July': {\n name: {\n en: 'Unity Day'\n }\n },\n '1st monday in August': {\n name: {\n en: \"Farmers' Day\"\n }\n },\n '2015-10-18': {\n name: {\n en: 'National day of Prayers'\n }\n },\n '10-24 and if sunday then next monday': {\n substitute: true,\n _name: 'Independence Day'\n },\n '12-25 and if sunday then next monday': {\n substitute: true,\n _name: '12-25'\n }\n }\n },\n ZW: {\n names: {\n sn: 'Nyika yeZimbabwe',\n nd: 'iRiphabhuliki yeZimbabwe',\n xh: 'iRiphubliki eyeZimbabwe',\n kck: 'Nyika yeZimbabwe',\n en: 'Zimbabwe'\n },\n dayoff: 'sunday',\n langs: [\n 'en'\n ],\n zones: [\n 'Africa/Maputo'\n ],\n days: {\n '01-01': {\n _name: '01-01'\n },\n 'easter -2': {\n _name: 'easter -2'\n },\n easter: {\n _name: 'easter',\n type: 'observance'\n },\n 'easter 1': {\n _name: 'easter 1'\n },\n '04-18': {\n _name: 'Independence Day'\n },\n '05-01': {\n _name: '05-01'\n },\n '05-25': {\n name: {\n en: 'Africa Day'\n }\n },\n '2nd sunday in May': {\n _name: 'Mothers Day',\n type: 'observance'\n },\n '3rd sunday in June': {\n _name: 'Fathers Day',\n type: 'observance'\n },\n '2nd monday in August': {\n name: {\n en: \"Heroes' Day\"\n }\n },\n '2nd tuesday in August': {\n name: {\n en: 'Defence Forces Day'\n }\n },\n '12-22': {\n name: {\n en: 'Unity Day'\n }\n },\n '12-25': {\n _name: '12-25'\n },\n '12-26': {\n _name: '12-26'\n }\n }\n }\n },\n names: {\n '01-01': {\n name: {\n en: \"New Year's Day\",\n am: 'እንቁጣጣሽ',\n ar: 'عيد رأس السنة',\n az: 'Yeni il',\n be: 'Новы год',\n bg: 'Нова Година',\n bs: 'Novogodisnji dan',\n ca: 'Any nou',\n cz: 'Nový rok',\n da: 'Nytår',\n de: 'Neujahr',\n el: 'Πρωτοχρονιά',\n es: 'Año Nuevo',\n et: 'uusaasta',\n fi: 'Uudenvuodenpäivä',\n fil: 'Araw ng Bagong Taon',\n fo: 'Nýggjársdagur',\n fr: 'Nouvel An',\n ge: 'ახალი წელი',\n hr: 'Nova godina',\n hu: 'Újév',\n hy: 'Ամանոր',\n id: 'Hari tahun baru',\n it: 'Capodanno',\n is: 'Nýársdagur',\n jp: '元日',\n kl: 'ukiortaaq',\n ko: '신정',\n lb: 'Neijoerschdag',\n lt: 'Naujieji metai',\n lv: 'Jaunais Gads',\n mg: 'Taom-baovao',\n mk: 'Нова Година',\n ms: 'Hari Tahun Baru',\n mt: 'L-Ewwel tas-Sena',\n nl: 'Nieuwjaar',\n no: 'Første nyttårsdag',\n pap: 'Aña Nobo',\n pl: 'Nowy Rok',\n pt: 'Ano Novo',\n ro: 'Anul nou',\n ru: 'Новый год',\n sl: 'Novo leto',\n sq: 'Viti i Ri',\n sr: 'Нова година',\n sv: 'Nyårsdagen',\n sw: 'Mwaka mpya',\n th: 'วันขึ้นปีใหม่',\n ti: 'ሓዲሽ ዓመት',\n tr: 'Yılbaşı',\n uk: 'Новий Рік',\n vi: 'Tết Dương lịch',\n zh: '元旦'\n }\n },\n '01-06': {\n name: {\n en: 'Epiphany',\n am: 'ብርሐነ ጥምቀት',\n da: 'Åbenbaring',\n de: 'Heilige Drei Könige',\n 'de-ch': 'Dreikönigstag',\n es: 'Día de los Reyes Magos',\n et: 'kolmekuningapäev',\n fi: 'Loppiainen',\n fr: \"l'Épiphanie\",\n el: 'Θεοφάνεια',\n hr: 'Bogojavljenje, Sveta tri kralja',\n hu: 'Vízkereszt',\n it: 'Befana',\n is: 'Þrettándinn',\n lb: 'Dräikinneksdag',\n nl: 'Driekoningen',\n mk: 'Богојавление',\n pl: 'Święto Trzech Króli',\n sk: 'Zjavenie Pána',\n sv: 'Trettondedag jul',\n ti: 'ጥምቀት',\n vi: 'Lễ Hiển Linh'\n }\n },\n '02-02': {\n name: {\n en: 'Candlemas',\n de: 'Lichtmess',\n hu: 'Gyertyaszentelő Boldogasszony',\n lb: 'Liichtmëssdag',\n nl: 'Lichtmis',\n vi: 'Lễ Đức Mẹ dâng Chúa Giêsu trong đền thánh'\n }\n },\n '02-14': {\n name: {\n en: \"Valentine's Day\",\n de: 'Valentinstag',\n fr: 'Saint-Valentin',\n hu: 'Valentin nap',\n lb: 'Vältesdag',\n nl: 'Valentijnsdag',\n no: 'Valentinsdag',\n vi: 'Lễ tình nhân'\n }\n },\n '03-08': {\n name: {\n en: \"International Women's Day\",\n az: 'Qadınlar günü',\n be: 'Мiжнародны жаночы дзень',\n bg: 'Ден на жената',\n de: 'Internationaler Frauentag',\n fr: 'Journée internationale des femmes',\n ge: 'ქალთა საერთაშორისო დღე',\n hu: 'Nemzetközi nőnap',\n hy: 'Կանանց տոն',\n lb: 'Internationale Fraendag',\n nl: 'Internationale Vrouwendag',\n no: 'Kvinnedagen',\n pt: 'Dia Internacional da Mulher',\n ro: 'Ziua Internationala a Femeii',\n ru: 'Международный женский день',\n sl: 'Mednarodni dan žena',\n uk: 'Міжнародний жіночий день',\n vi: 'Quốc tế Phụ nữ',\n zh: '国际妇女节',\n ti: 'መዓልቲ ኣነስቲ'\n }\n },\n '03-19': {\n name: {\n en: 'Saint Joseph',\n 'de-at': 'Josefitag',\n de: 'Josefstag',\n es: 'San José',\n it: 'San Giuseppe',\n mt: 'San Ġużepp',\n nl: 'Hoogfeest van de Heilige Jozef',\n vi: 'Kính Thánh Giuse'\n }\n },\n '04-01': {\n name: {\n en: \"April Fools' Day\",\n hu: 'Bolondok napja',\n nl: '1 April',\n no: 'Aprilsnarr',\n sq: 'Dita e Gënjeshtrave',\n vi: 'Cá tháng tư'\n }\n },\n '05-01': {\n name: {\n en: 'Labour Day',\n 'en-us': 'Labor Day',\n ar: 'يوم العمال',\n be: 'Дзень працы',\n bg: 'Ден на труда',\n bs: 'Radni dan',\n cz: 'Svátek práce',\n da: '1. maj',\n de: 'Tag der Arbeit',\n el: 'Εργατική Πρωτομαγιά',\n es: 'Día del trabajador',\n et: 'kevadpüha',\n fi: 'Vappu',\n fil: 'Araw ng mga Manggagawa',\n fr: 'Fête du travail',\n hr: 'Praznik rada',\n hu: 'A munka ünnepe',\n hy: 'Աշխատանքի օր',\n id: 'Hari Buruh Internasional',\n it: 'Festa del Lavoro',\n is: 'Hátíðisdagur Verkamanna',\n lb: 'Éischte Mee',\n lt: 'Tarptautinė darbo diena',\n lv: 'Darba svētki',\n nl: 'Dag van de Arbeid',\n no: 'Arbeidernes dag',\n mg: \"Fetin'ny asa\",\n mk: 'Ден на трудот',\n ms: 'Hari Pekerja',\n mt: 'Jum il-Ħaddiem',\n pap: 'Dia di Obrero',\n pl: 'Święto Pracy',\n pt: 'Dia do trabalhador',\n ro: 'Ziua muncii',\n sk: 'Sviatok práce',\n sl: 'Praznik dela',\n sq: 'Dita Ndërkombëtare e Punonjësve',\n sr: 'Празник рада',\n sv: 'Första Maj',\n ti: 'የላብ አደሮች ቀን',\n uk: 'День міжнародної солідарності трудящих',\n vi: 'Quốc tế Lao động',\n zh: '劳动节'\n }\n },\n '05-09': {\n name: {\n en: 'Europe Day',\n bg: 'Денят на Европа',\n cs: 'Den Evropy',\n da: 'Europadagen',\n de: 'Europatag',\n el: 'Ημέρα της Ευρώπης',\n es: 'Día de Europa',\n et: 'Euroopa päev',\n fi: 'Eurooppa-päivä',\n fr: \"Journée de l'Europe\",\n ga: 'Lá na hEorpa',\n hr: 'Dan Europe',\n hu: 'Európa-nap',\n it: \"Festa dell'Europa\",\n lb: 'Europadag',\n ls: 'Dan Evrope',\n lt: 'Europos diena',\n lv: 'Eiropas diena',\n mt: 'Jum l-Ewropa',\n nl: 'Dag van Europa ou Europadag',\n pl: 'Dzień Europy',\n pt: 'Dia da Europa',\n ro: 'Ziua Europei',\n sk: 'Deň Európy',\n sq: 'Dita e Evropës',\n sv: 'Europadagen'\n }\n },\n '06-29': {\n name: {\n en: 'Saints Peter and Paul',\n de: 'Peter und Paul',\n es: 'San Pedro y San Pablo',\n fr: 'Saint Pierre et Paul',\n it: 'Santi Pietro e Paolo',\n mt: 'L-Imnarja',\n nl: 'Hoogfeest van Petrus en Paulus',\n vi: 'Lễ kính Thánh Phêrô'\n }\n },\n '08-15': {\n name: {\n en: 'Assumption',\n de: 'Mariä Himmelfahrt',\n es: 'Asunción',\n fr: 'Assomption',\n el: 'Κοίμηση της Θεοτόκου',\n hr: 'Velika Gospa',\n it: 'Ferragosto',\n lb: 'Léiffrawëschdag',\n lt: 'Žolinė',\n mg: 'Asompsiona',\n mk: 'Успение на Пресвета Богородица',\n mt: 'Santa Marija',\n nl: 'O.L.V. Hemelvaart',\n pl: 'Wniebowzięcie Najświętszej Maryi Panny',\n pt: 'Assunção de Maria',\n ro: 'Adormirea Maicii Domnului',\n sl: 'Marijino vnebovzetje',\n sq: 'Shën Mëria e Gushtit',\n vi: 'Đức Mẹ Lên Trời'\n }\n },\n '11-01': {\n name: {\n en: \"All Saints' Day\",\n bs: 'Dita e të gjithë Shenjtorëve',\n de: 'Allerheiligen',\n es: 'Todos los Santos',\n fi: 'Pyhäinpäivä',\n fil: 'Undás; Todos los Santos; Araw ng mga Santo',\n fr: 'Toussaint',\n hr: 'Svi sveti',\n hu: 'Mindenszentek',\n it: 'Ognissanti',\n lb: 'Allerhellegen',\n lt: 'Visų šventųjų diena',\n mg: \"Fetin'ny olo-masina\",\n mk: 'Празникот на сите светци',\n nl: 'Allerheiligen',\n pl: 'Wszystkich Świętych',\n pt: 'Todos os santos',\n sk: 'Sviatok všetkých svätých',\n sq: 'Të gjitha Saints',\n sr: 'Сви Свети',\n sv: 'Alla Helgons dag',\n vi: 'Lễ Các Thánh'\n }\n },\n '11-02': {\n name: {\n en: \"All Souls' Day\",\n de: 'Allerseelen',\n es: 'Día de los Difuntos',\n et: 'hingedepäev',\n fil: 'Araw ng mga Kaluluwa',\n fr: 'Fête des morts',\n hr: 'Dušni dan',\n hu: 'Halottak napja',\n lb: 'Allerséilen',\n nl: 'Allerzielen',\n pt: 'Dia de Finados',\n vi: 'Lễ Các Đẳng',\n lt: 'Vėlinės'\n }\n },\n '11-11': {\n name: {\n en: 'Saint Martin',\n de: 'Sankt Martin (Faschingsbeginn)',\n hu: 'Márton nap',\n nl: 'Sint Maarten',\n vi: 'Lễ thánh Martin'\n }\n },\n '12-06': {\n name: {\n en: 'Saint Nicholas',\n de: 'Sankt Nikolaus',\n fr: 'Saint-Nicolas',\n hu: 'Mikulás',\n lb: 'Niklosdag',\n nl: 'Sinterklaas',\n vi: 'Thánh Saint Nicholas'\n }\n },\n '12-07': {\n name: {\n it: \"Sant'Ambrogio\",\n en: 'Saint Ambrose'\n }\n },\n '12-08': {\n name: {\n en: 'Immaculate Conception',\n de: 'Mariä Empfängnis',\n es: 'La inmaculada concepción',\n fr: 'Immaculée Conception',\n it: 'Immacolata Concezione',\n mt: 'Il-Kunċizzjoni',\n nl: 'Onbevlekte Ontvangenis van Maria',\n pt: 'Imaculada Conceição'\n }\n },\n '12-24': {\n name: {\n en: 'Christmas Eve',\n bg: 'Бъдни вечер',\n bs: 'Badnji dan',\n cz: 'Štědrý den',\n da: 'Juleaften',\n de: 'Heiliger Abend',\n es: 'Nochebuena',\n et: 'jõululaupäev',\n fo: 'Jólaaftan',\n fi: 'Jouluaatto',\n fil: 'Bisperas ng Pasko',\n fr: 'Veille de Noël',\n hr: 'Badnji dan',\n hu: 'Szenteste',\n is: 'Aðfangadagur',\n kl: 'juulliaraq',\n lb: 'Hellegowend',\n lt: 'Šv. Kūčios',\n lv: 'Ziemassvētku vakars',\n ms: 'Hari Sebelum Krismas',\n nl: 'Kerstavond',\n no: 'Julaften',\n pt: 'Noite de Natal',\n sk: 'Štedrý deň',\n sq: 'Nata e Krishtlindjes',\n sr: 'Бадњи дан',\n sv: 'Julafton',\n vi: 'Đêm Giáng Sinh'\n }\n },\n '12-25': {\n name: {\n en: 'Christmas Day',\n am: 'ልደተ-ለእግዚእነ/ ገና',\n ar: 'عيد الميلاد المجيد',\n bg: 'Коледа',\n bn: 'বড়দিন',\n bs: 'Božić',\n 'de-at': 'Christtag',\n ca: 'Nadal',\n cz: '1. svátek vánoční',\n da: 'Juledag',\n de: 'Weihnachten',\n 'de-ch': 'Weihnachtstag',\n el: 'Χριστούγεννα',\n es: 'Navidad',\n et: 'esimene jõulupüha',\n fi: 'Joulupäivä',\n fil: 'Araw ng Pasko',\n fo: 'Fyrsti jóladagur',\n fr: 'Noël',\n hr: 'Božić',\n hu: 'Karácsony',\n hy: 'Սուրբ Ծնունդ',\n id: 'Hari Raya Natal',\n it: 'Natale',\n is: 'Jóladagur',\n jp: 'ノエル',\n kl: 'juullerujussuaq',\n ko: '기독탄신일',\n lb: 'Chrëschtdag',\n lt: 'Šv. Kalėdos',\n lv: 'Ziemassvētki',\n mg: 'Krismasy',\n mk: 'Католички Божиќ',\n ms: 'Hari Krismas',\n mt: 'Il-Milied',\n nl: 'Kerstmis',\n no: 'Første Juledag',\n pap: 'Dia Pasco di Nascimento',\n pl: 'Pierwszy dzień Bożego Narodzenia',\n pt: 'Natal',\n ro: 'Crăciunul',\n ru: 'Рождество Христово',\n sk: 'Prvý sviatok vianočný',\n sl: 'Božič',\n sq: 'Krishtlindja',\n sr: 'Католички Божић',\n sv: 'Juldagen',\n sw: 'Krismasi',\n vi: 'Lễ Giáng Sinh',\n ti: 'ልደት',\n zh: '聖誕節'\n }\n },\n '12-26': {\n name: {\n en: 'Boxing Day',\n bg: '2-ри ден на Коледа',\n cz: '2. svátek vánoční',\n da: 'Anden Juledag',\n de: '2. Weihnachtstag',\n 'de-at': 'Stefanitag',\n 'de-ch': 'Stephanstag',\n el: 'Δεύτερη μέρα των Χριστουγέννων',\n es: 'San Esteban',\n et: 'teine jõulupüha',\n fi: '2. joulupäivä',\n fo: 'Fyrsti gerandisdagur eftir jóladag',\n fr: 'Lendemain de Noël',\n hr: 'Svetog Stjepana',\n hu: 'Karácsony másnapja',\n it: 'Santo Stefano',\n is: 'Annar í jólum',\n kl: 'juullip aappaa',\n lb: 'Stiefesdag',\n lt: '2. Kalėdų diena',\n lv: 'Otrie Ziemassvētki',\n nl: 'Tweede kerstdag',\n no: 'Andre juledag',\n pap: 'Di dos Dia Pasco di Nascimento',\n pl: 'Drugi dzień Bożego Narodzenia',\n ro: 'A doua zi de Crăciun',\n sk: 'Druhý sviatok vianočný',\n sv: 'Annandag jul',\n vi: 'Ngày tặng quà'\n }\n },\n '12-31': {\n name: {\n en: \"New Year's Eve\",\n da: 'Nytårsaften',\n de: 'Silvester',\n es: 'Fin del Año',\n fi: 'Uudenvuodenaatto',\n fil: 'Bisperas ng Bagong Taon',\n fo: 'Nýggjársaftan',\n fr: 'Saint-Sylvestre',\n hu: 'Szilveszter',\n hy: 'Նոր տարվա գիշեր',\n is: 'Gamlársdagur',\n it: 'Ultimo dell’anno',\n jp: '大晦日',\n lb: 'Silvester',\n lv: 'Vecgada vakars',\n nl: 'Oudejaarsavond',\n no: 'Nyttårsaften',\n pt: 'Véspera de Ano Novo',\n sv: 'Nyårsafton',\n th: 'วันสิ้นปี',\n vi: 'Đêm giao thừa'\n }\n },\n 'easter -48': {\n name: {\n en: 'Shrove Monday',\n de: 'Rosenmontag',\n es: 'Carnaval',\n fr: 'Lundi de Carnaval',\n lb: 'Fuesméindeg',\n nl: 'Carnavalmaandag',\n pap: 'Dialuna di Carnaval',\n vi: 'Ngày thứ hai hoa hồng'\n }\n },\n 'easter -47': {\n name: {\n en: 'Shrove Tuesday',\n es: 'Carnaval',\n de: 'Faschingsdienstag',\n hr: 'Pokladni utorak',\n hu: 'Húshagyó kedd',\n nl: 'Vastenavond',\n pt: 'Carnaval',\n vi: 'Thứ ba mập béo'\n }\n },\n 'easter -46': {\n name: {\n en: 'Ash Wednesday',\n de: 'Aschermittwoch',\n es: 'Miercoles de Ceniza',\n fr: 'Mercredi des Cendres',\n hu: 'Hamvazószerda',\n it: 'Ceneri',\n is: 'Öskudagur',\n lb: 'Äschermëttwoch',\n nl: 'Aswoensdag',\n no: 'Askeonsdag',\n pt: 'Quarta-feira de Cinzas',\n sw: 'Jumatano ya Majivu',\n vi: 'Thứ tư Lễ Tro'\n }\n },\n 'easter -7': {\n name: {\n en: 'Palm Sunday',\n de: 'Palmsonntag',\n es: 'Domingo de Ramos',\n hu: 'Virágvasárnap',\n it: 'Domenica delle Palme',\n is: 'Pálmasunnudagur',\n lb: 'Pällemsonndeg',\n nl: 'Palmzondag',\n no: 'Palmesøndag',\n vi: 'Chúa nhật Lễ Lá'\n }\n },\n 'easter -3': {\n name: {\n en: 'Maundy Thursday',\n cz: 'Zelený čtvrtek',\n da: 'Skærtorsdag',\n de: 'Gründonnerstag',\n es: 'Jueves Santo',\n fil: 'Huwebes Santo',\n fo: 'Skírhósdagur',\n fr: 'Jeudi saint',\n is: 'Skírdagur',\n it: 'Giovedì santo',\n kl: 'sisamanngortoq illernartoq',\n lb: 'Gréngen Donneschdeg',\n nl: 'Witte donderdag',\n no: 'Skjærtorsdag',\n sv: 'Skärtorsdagen',\n vi: 'Thứ năm Tuần Thánh'\n }\n },\n 'easter -2': {\n name: {\n en: 'Good Friday',\n am: 'ስቅለት',\n bg: 'Разпети петък',\n bs: 'Dobar petak',\n cz: 'Velký pátek',\n da: 'Langfredag',\n de: 'Karfreitag',\n es: 'Viernes Santo',\n fi: 'Pitkäperjantai',\n fil: 'Biyernes Santo',\n fo: 'Langafríggjadagur',\n fr: 'Vendredi saint',\n el: 'Μεγάλη Παρασκευή',\n et: 'suur reede',\n ge: 'წითელი პარასკევი',\n hr: 'Veliki petak',\n hu: 'Nagypéntek',\n id: 'Wafat Yesus Kristus',\n it: 'Venerdì santo',\n is: 'Föstudagurinn langi',\n kl: 'tallimanngornersuaq',\n lb: 'Karfreideg',\n lv: 'Lielā Piektdiena',\n ms: 'Jumat Agung',\n mt: 'Il-Ġimgħa l-Kbira',\n nl: 'Goede Vrijdag',\n no: 'Langfredag',\n pap: 'Diabierna Santo',\n pt: 'Sexta-Feira Santa',\n ro: 'Vinerea Mare',\n sk: 'Veľkonočný piatok',\n sq: 'E Premtja e Madhe',\n sr: 'Католички Велики петак',\n sv: 'Långfredagen',\n sw: 'Ijumaa Kuu',\n vi: 'Thứ sáu Tuần Thánh',\n zh: '耶穌受難節'\n }\n },\n 'easter -1': {\n name: {\n en: 'Easter Saturday',\n cz: 'Bílá sobota',\n de: 'Karsamstag',\n es: 'Sabado Santo',\n fil: 'Sabado de Gloria',\n fr: 'Samedi saint',\n ge: 'დიდი შაბათი',\n hu: 'Nagyszombat',\n it: 'Sabado santo',\n lb: 'Karsamschdeg',\n nl: 'Dag voor Pasen',\n no: 'Påskeaften',\n sv: 'Påskafton',\n vi: 'Thứ bảy Tuần Thánh',\n zh: '耶穌受難節翌日'\n }\n },\n easter: {\n name: {\n en: 'Easter Sunday',\n am: 'ፋሲካ',\n bg: 'Великден',\n bs: 'Vaskrs',\n cz: 'Velikonoční neděle',\n da: 'Påskesøndag',\n de: 'Ostersonntag',\n el: 'Πάσχα',\n es: 'Pascua',\n et: 'lihavõtted',\n fi: 'Pääsiäispäivä',\n fil: 'Pasko ng Pagkabuhay',\n fo: 'Páskadagur',\n fr: 'Pâques',\n ge: 'აღდგომა',\n hr: 'Uskrs',\n hu: 'Húsvétvasárnap',\n it: 'Domenica di Pasqua',\n is: 'Páskadagur',\n kl: 'poorskip-ullua',\n lb: 'Ouschtersonndeg',\n lt: 'Velykos',\n lv: 'Lieldienas',\n nl: 'Pasen',\n no: 'Første påskedag',\n pap: 'Dia Pasco di Resureccion',\n pl: 'Niedziela Wielkanocna',\n pt: 'Páscoa',\n ro: 'Paștele',\n sk: 'Veľká noc',\n sl: 'Velika noč',\n sq: 'Pashkët Katolike',\n sr: 'Католички Васкрс',\n sv: 'Påskdagen',\n sw: 'Pasaka',\n vi: 'Lễ Phục Sinh',\n zh: '复活节'\n }\n },\n 'easter 1': {\n name: {\n en: 'Easter Monday',\n bg: 'Велики понеделник',\n bs: 'Uskrsni ponedjeljak',\n cz: 'Velikonoční pondělí',\n da: 'Anden påskedag',\n de: 'Ostermontag',\n el: 'Δευτέρα του Πάσχα',\n es: 'Lunes de Pascua',\n fi: '2. pääsiäispäivä',\n fo: 'Annar páskadagur',\n fr: 'Lundi de Pâques',\n ge: 'აღდგომის ორშაბათი',\n hr: 'Uskršnji ponedjeljak',\n hu: 'Húsvéthétfő',\n it: 'Lunedì dell’Angelo',\n is: 'Annar í páskum',\n kl: 'poorskip-aappaa',\n lb: 'Ouschterméindeg',\n lt: 'Velykų pirmadienis',\n lv: 'Otrās Lieldienas',\n mg: \"Alatsinain'ny Paska\",\n mk: 'вториот ден на Велигден',\n nl: 'Tweede paasdag',\n no: 'Andre påskedag',\n pap: 'Di dos Dia Pasco di Resureccion',\n pl: 'Drugi dzień Wielkanocy',\n ro: 'A doua zi de Pasti',\n sk: 'Veľkonočný pondelok',\n sl: 'Velikonočni ponedeljek',\n sr: 'Католички Васкрсни понедељак',\n sv: 'Annandag påsk',\n sw: 'Jumatatu ya Pasaka',\n vi: 'Thứ hai phục sinh',\n zh: '復活節星期一'\n }\n },\n 'easter 39': {\n name: {\n en: 'Ascension Day',\n da: 'Kristi Himmelfartsdag',\n de: 'Christi Himmelfahrt',\n es: 'La Asunción',\n fi: 'Helatorstai',\n fo: 'Kristi Himmalsferðardagur',\n fr: 'Ascension',\n id: 'Kenaikan Yesus Kristus',\n it: 'Ascensione',\n is: 'Uppstigningardagur',\n kl: 'qilaliarfik',\n mg: 'Andro niakarana',\n lb: 'Christi Himmelfaart',\n nl: 'O.L.H. Hemelvaart',\n no: 'Kristi himmelfartsdag',\n pap: 'Dia di Asuncion',\n ro: 'Ziua Eroilor',\n sv: 'Kristi himmelfärds dag',\n vi: 'Lễ Thăng Thiên'\n }\n },\n 'easter 49': {\n name: {\n en: 'Pentecost',\n da: 'Pinsedag',\n de: 'Pfingstsonntag',\n el: 'Πεντηκοστή',\n es: 'Pentecostés',\n et: 'nelipühade 1. püha',\n fi: 'Helluntaipäivä',\n fo: 'Hvítusunnudagur',\n fr: 'Pentecôte',\n hu: 'Pünkösdvasárnap',\n it: 'Pentecoste',\n is: 'Hvítasunnudagur',\n kl: 'piinsip ullua',\n lb: 'Päischtsonndeg',\n nl: 'Pinksteren',\n no: 'Første pinsedag',\n mk: 'Духовден',\n pl: 'Zielone Świątki',\n ro: 'Rusaliile',\n sl: 'Binkošti',\n sv: 'Pingstdagen',\n uk: 'Трійця',\n vi: 'Lễ Chúa Thánh Thần Hiện Xuống'\n }\n },\n 'easter 50': {\n name: {\n en: 'Whit Monday',\n da: 'Anden Pinsedag',\n de: 'Pfingstmontag',\n el: 'Αγίου Πνεύματος',\n es: 'Lunes de Pentecostés',\n fo: 'Annar hvítusunnudagur',\n fr: 'Lundi de Pentecôte',\n hu: 'Pünkösdhétfő',\n is: 'Annar í hvítasunnu',\n it: 'Lunedì di Pentecoste',\n kl: 'piinsip aappaa',\n mg: \"Alatsinain'ny Pentekosta\",\n lb: 'Péngschtméindeg',\n nl: 'Tweede pinksterdag',\n no: 'Andre pinsedag',\n ro: 'A doua zi de Rusalii',\n sv: 'Annandag pingst'\n }\n },\n 'easter 60': {\n name: {\n en: 'Corpus Christi',\n de: 'Fronleichnam',\n es: 'Corpus Christi',\n fr: 'la Fête-Dieu',\n it: 'Corpus Domini',\n hr: 'Tijelovo',\n nl: 'Sacramentsdag',\n pl: 'Dzień Bożego Ciała',\n pt: 'Corpo de Deus',\n vi: 'Lễ Mình và Máu Thánh Chúa Kitô'\n }\n },\n 'julian 01-01': {\n name: {\n en: 'Orthodox New Year',\n bs: 'Pravoslavni novogodišnji dan',\n hr: 'Pravoslavna Nova Godina',\n nl: 'Orthodox Nieuwjaar',\n sq: 'Viti i Ri Ortodoks',\n sr: 'Православна Нова година'\n }\n },\n 'julian 12-24': {\n name: {\n en: 'Orthodox Christmas Eve',\n nl: 'Orthodox Kerstavond',\n mk: 'Бадник',\n ti: 'ልደት'\n }\n },\n 'julian 12-25': {\n name: {\n en: 'Orthodox Christmas',\n bs: 'Pravoslavni Božić',\n hr: 'Pravoslavni Božić',\n mk: 'Прв ден Божик',\n nl: 'Orthodox Kerstmis',\n ro: 'Craciun pe Rit Vechi',\n sq: 'Krishtlindjet Ortodokse',\n sr: 'Божић',\n uk: 'Різдво'\n }\n },\n 'orthodox -2': {\n name: {\n en: 'Orthodox Good Friday',\n mk: 'Велики Петок',\n nl: 'Orthodoxe Goede vrijdag',\n sr: 'Велики петак',\n ti: 'ዓርቢ ስቅለት'\n }\n },\n orthodox: {\n name: {\n en: 'Orthodox Easter',\n bs: 'Pravoslavni Vaskrs',\n hr: 'Pravoslavni Uskrs',\n mk: 'Прв ден Велигден',\n nl: 'Orthodox Pasen',\n sq: 'Pashkët Ortodokse',\n sr: 'Васкрс',\n ti: 'ፋሲካ',\n uk: 'Великдень'\n }\n },\n 'orthodox 1': {\n name: {\n en: 'Orthodox Easter Monday',\n mk: 'Втор ден Велигден',\n nl: 'Orthodoxe Tweede Paasdag',\n sr: 'Васкрсни понедељак'\n }\n },\n '1 Muharram': {\n name: {\n en: 'Islamic New Year',\n ar: 'رأس السنة الهجرية',\n bs: 'Nova hidžretska godina',\n fil: 'Unang Araw ng Muharram',\n fr: 'Nouvel an islamique',\n hr: 'Nova hidžretska godina',\n id: 'Tahun Baru Islam',\n ms: 'Awal Muharram',\n nl: 'Islamitisch Nieuwjaar',\n sq: 'Viti i Ri hixhri'\n }\n },\n '10 Muharram': {\n name: {\n en: 'Day of Ashura',\n ar: 'عاشوراء',\n bn: 'আশুরা',\n nl: 'Asjoera'\n }\n },\n '12 Rabi al-awwal': {\n name: {\n en: 'Birthday of Muhammad (Mawlid)',\n am: 'መውሊድ',\n ar: 'المولد النبويّ',\n bn: 'ঈদে মিলাদুন্নবী',\n bs: 'Mevlud',\n fr: 'Mawlid',\n id: 'Maulid Nabi Muhammad',\n ms: 'Hari Keputeraan Nabi Muhammad S.A.W.',\n nl: 'Mawlid an-Nabi',\n sq: 'Mevludi'\n }\n },\n '27 Rajab': {\n name: {\n en: \"Laylat al-Mi'raj\",\n ar: 'الإسراء والمعراج',\n bs: \"Lejletul Mi'radž\",\n id: 'Maulid Nabi Muhammad',\n ms: 'Israk dan Mikraj',\n nl: 'Laylat al-Miraadj',\n sq: 'Nata e Miraxhit',\n tr: 'Miraç Gecesi'\n }\n },\n '15 Shaban': {\n name: {\n en: \"Laylat al-Bara'at\",\n ar: 'ليلة البراءة',\n bs: 'Lejletul berat',\n nl: 'Laylat al-Baraat',\n sq: 'Nata e Beratit'\n }\n },\n '1 Ramadan': {\n name: {\n en: 'First day of Ramadan',\n am: 'ረመዳን',\n ar: 'اليوم الأول من رمضان',\n bs: 'Prvi dan posta',\n ms: 'Awal Ramadan',\n nl: 'Eerste dag van Ramadan',\n sq: 'Dita e parë e agjërimit'\n }\n },\n '17 Ramadan': {\n name: {\n en: 'Day of Nuzul Al-Quran',\n ms: 'Hari Nuzul Al-Quran'\n }\n },\n '23 Ramadan': {\n name: {\n en: 'Lailat al-Qadr'\n }\n },\n '27 Ramadan': {\n name: {\n en: 'Laylat al-Qadr',\n ar: 'لیلة القدر',\n bs: 'Lejletul kadr',\n nl: 'Waardevolle Nacht (Laylat al-Qadr)',\n sq: 'Nata e Kadrit'\n }\n },\n '1 Shawwal': {\n name: {\n en: 'End of Ramadan (Eid al-Fitr)',\n am: 'ዒድ አል ፈጥር',\n ar: 'عيد الفطر',\n az: 'Ramazan Bayramı',\n bn: 'ঈদুল ফিতর',\n bs: 'Ramazanski bajram',\n de: 'Zuckerfest',\n es: 'Fiesta del Eid Fitr',\n fa: 'ﻋﯿﺪ ﺳﻌﯿﺪ ﻓﻄﺮ',\n fil: 'Pagwawakas ng Ramadan',\n fr: 'Fête de fin du Ramadan',\n hr: 'Ramazanski bajram',\n id: 'Hari Raya Idul Fitri',\n nl: 'Suikerfeest (Eid al-Fitr)',\n mk: 'Рамазан Бајрам',\n ms: 'Hari Raya Aidil Fitri',\n sq: 'Fitër Bajrami',\n tr: 'Ramazan Bayramı',\n sr: 'Рамазански Бајрам',\n sw: 'Idd-ul-Fitr'\n }\n },\n '9 Dhu al-Hijjah': {\n name: {\n en: 'Arafat Day',\n ar: 'يوم عرفة',\n es: 'Fiesta del Sacrificio-Eidul Adha',\n ms: 'Hari Arafah'\n }\n },\n '10 Dhu al-Hijjah': {\n name: {\n en: 'Feast of the Sacrifice (Eid al-Adha)',\n am: 'ዒድ አል አድሐ',\n ar: 'عيد الأضحى',\n az: 'Qurban Bayramı',\n bn: 'ঈদুল আযহা',\n bs: 'Kurbanski bajram',\n de: 'Opferfest',\n es: 'Fiesta del Sacrificio-Aid Al Adha',\n fa: 'ﻋﯿﺪ ﺳﻌﯿﺪ ﻗﺮﺑﺎن',\n fil: 'Eidul Adha',\n fr: 'Fête du mouton',\n hr: 'Kurban-bajram',\n id: 'Hari Raya Idul Adha',\n nl: 'Offerfeest (Eid Al-Adha)',\n mk: 'Курбан Бајрам',\n ms: 'Hari Raya Haji',\n sq: 'Kurban Bajrami',\n tr: 'Kurban Bayramı',\n sr: 'Курбански Бајрам',\n sw: 'Idd-ul-Azha'\n }\n },\n '15 Nisan': {\n name: {\n en: 'Pesach',\n bs: 'Pesah',\n de: 'Pessach',\n hr: 'Pesač',\n nl: 'Pesach',\n sq: 'Pesach',\n sr: 'Песах'\n }\n },\n '1 Tishrei': {\n name: {\n en: 'Rosh Hashanah',\n bs: 'Roš Hašana',\n de: 'Rosch Haschana',\n hr: 'Roš Hašane',\n nl: 'Rosj Hasjana',\n sq: 'Rosh Hashanah',\n sr: 'Рош Хашана'\n }\n },\n '10 Tishrei': {\n name: {\n en: 'Yom Kippur',\n bs: 'Jom Kipur',\n de: 'Jom Kippur',\n hr: 'Jom Kipur',\n mk: 'Јом Кипур',\n nl: 'Jom Kipoer',\n sq: 'Yom Kippur',\n sr: 'Јом Кипур'\n }\n },\n Deepavali: {\n name: {\n en: 'Deepavali',\n nl: 'Divali'\n }\n },\n Vesak: {\n name: {\n en: 'Vesak Day',\n id: 'Hari Raya Waisak',\n th: 'วันวิสาขบูชา'\n }\n },\n Holi: {\n name: {\n en: 'Holi Phagwa',\n nl: 'Holi-Phagwa'\n }\n },\n Thaipusam: {\n name: {\n en: 'Thaipusam',\n ms: 'Hari Thaipusam'\n }\n },\n 'Makha Bucha': {\n name: {\n en: 'Makha Bucha',\n th: 'วันมาฆบูชา'\n }\n },\n 'Asalha Puja': {\n name: {\n en: 'Asalha Puja',\n th: 'วันอาสาฬหบูชา'\n }\n },\n 'Buddhist Lent': {\n name: {\n en: 'Buddhist Lent',\n th: 'วันเข้าพรรษา'\n }\n },\n 'Abolition of Slavery': {\n name: {\n en: 'Abolition of Slavery',\n fr: 'Abolition de l’esclavage',\n nl: 'Afschaffing van de slavernij',\n vi: 'Bãi bỏ chế độ Nô lệ'\n }\n },\n 'Buß- und Bettag': {\n name: {\n de: 'Buß- und Bettag',\n en: 'Day of Prayer and Repentance'\n }\n },\n 'Constitution Day': {\n name: {\n en: 'Constitution Day',\n da: 'Grundlovsdag',\n de: 'Tag der Verfassung',\n ca: 'Dia de la Constitució',\n es: 'Día de la Constitución',\n fil: 'Araw ng Saligang Batas',\n fo: 'Grundlógardagur',\n hy: 'Սահմանադրության օր',\n jp: '憲法記念日',\n ko: '제헌절',\n nl: 'Dag van de Grondwet',\n no: 'Grunnlovsdagen',\n pt: 'Dia da Constituição',\n ro: 'Ziua Constituției',\n sk: 'Deň Ústavy',\n sq: 'Dita e Kushtetutës',\n uk: 'День Конституції',\n vi: 'Ngày pháp luật'\n }\n },\n 'Fathers Day': {\n name: {\n en: \"Father's Day\",\n et: 'isadepäev',\n fi: 'Isänpäivä',\n fr: 'Fête des Pères',\n lt: 'Tėvo diena',\n nl: 'Vaderdag',\n pt: 'Dia dos Pais',\n no: 'Farsdag',\n sv: 'Fars dag',\n vi: 'Ngày của cha'\n }\n },\n 'Independence Day': {\n name: {\n en: 'Independence Day',\n ar: 'عيد الاستقلال',\n be: 'Дзень Незалежнасцi',\n bg: 'Ден на независимостта',\n bs: 'Dan nezavisnosti',\n de: 'Unabhängigkeitstag',\n es: 'Día de la Independencia',\n et: 'iseseisvuspäev',\n fi: 'Itsenäisyyspäivä',\n fil: 'Araw ng Kalayaan',\n fr: \"Jour de l'Indépendance\",\n hr: 'Dan neovisnosti',\n hy: 'Անկախության օր',\n id: 'Hari Ulang Tahun Kemerdekaan Republik Indonesia',\n mk: 'Ден на независноста',\n ms: 'Hari Kebangsaan',\n mt: 'Jum l-Indipendenza',\n nl: 'Onafhankelijkheidsdag',\n pl: 'Narodowe Święto Niepodległości',\n pt: 'Dia da Independência',\n ro: 'Ziua Independentei',\n sq: 'Dita e Pavarësisë',\n sr: 'Дан независности',\n sv: 'Självständighetsdagen',\n sw: 'Siku ya uhuru',\n ti: 'መዓልቲ ናጽነት',\n uk: 'День Незалежності',\n vi: 'Ngày Độc lập'\n }\n },\n 'Liberation Day': {\n name: {\n en: 'Liberation Day',\n ar: 'يوم التحرير',\n nl: 'Bevrijdingsdag',\n no: 'Frigjøringsdagen',\n sq: 'Dita e Çlirimit',\n vi: 'Ngày Thống nhất'\n }\n },\n 'Mothers Day': {\n name: {\n en: \"Mother's Day\",\n cz: 'Den matek',\n da: 'Mors Dag',\n de: 'Muttertag',\n el: 'Γιορτή της μητέρας',\n es: 'Día de la Madre',\n et: 'emadepäev',\n fi: 'Äitienpäivä',\n fr: 'Fête des Mères',\n hr: 'Majčin dan',\n hu: 'Anyák napja',\n hy: 'Ցեղասպանության զոհերի հիշատակի օր',\n is: 'Mæðradagurinn',\n it: 'Festa della mamma',\n lt: 'Motinos diena',\n lv: 'Mātes diena',\n nl: 'Moederdag',\n no: 'Morsdag',\n pt: 'Dia das Mães',\n pl: 'Dzień Matki',\n ro: 'Ziua Mamei',\n sq: 'Dita e Nënës',\n sv: 'Mors dag',\n vi: 'Ngày của mẹ'\n }\n },\n 'National Holiday': {\n name: {\n en: 'National Holiday',\n de: 'Nationalfeiertag',\n es: 'Fiesta Nacional',\n fr: 'Fête nationale',\n hu: 'Nemzeti ünnep',\n el: 'εθνική επέτειος',\n lb: 'Nationalfeierdag',\n nl: 'Nationale feestdag',\n vi: 'Quốc Lễ'\n }\n },\n 'Public Holiday': {\n name: {\n en: 'Public Holiday',\n fr: 'Jour férié légaux',\n nl: 'Wettelijke feestdag',\n pt: 'Feriado Obrigatório',\n vi: 'Nghỉ lễ Toàn Quốc'\n }\n },\n 'Reformation Day': {\n name: {\n en: 'Reformation Day',\n de: 'Reformationstag',\n es: 'Día Nacional de las Iglesias Evangélicas y Protestantes',\n nl: 'Hervormingsdag',\n vi: 'Kháng Cách'\n }\n },\n 'Revolution Day': {\n name: {\n en: 'Revolution Day',\n ar: 'يوم الثورة',\n es: 'Día de la Revolución',\n nl: 'Dag van de revolutie',\n ti: 'ባሕቲ መስከረም',\n vi: 'Tổng khởi nghĩa'\n }\n },\n 'Bridge Day': {\n name: {\n en: 'Bridge Day',\n es: 'Feriado Puente Turístico'\n }\n },\n substitutes: {\n name: {\n en: 'substitute day',\n az: 'əvəz gün',\n bs: 'zamjena dan',\n de: 'Ersatztag',\n es: 'día sustituto',\n fr: 'jour substitut',\n hr: 'zamjena dan',\n jp: '振替休日',\n lv: 'aizstājējs diena',\n mk: 'заменет ден',\n nl: 'substituut',\n sq: 'ditë zëvendësuese',\n sr: 'замена дан',\n uk: 'замінити день',\n vi: 'ngày thay thế',\n zh: '更换日'\n }\n }\n }\n}\n","/**\n * @copyright 2015-present (c) commenthol\n * @license ISC\n */\n\nimport HolidaysParser from 'date-holidays-parser'\n\nimport { data } from './data.js'\n\n/**\n * @class\n * @param {String|Object} country - if object use `{ country: {String}, state: {String}, region: {String} }`\n * @param {String} [state] - specifies state\n * @param {String} [region] - specifies region\n * @param {Object} [opts] - options\n * @param {Array|String} opts.languages - set language(s) with ISO 639-1 shortcodes\n * @param {String} opts.timezone - set timezone\n * @param {Array} opts.types - holiday types to consider\n * @example\n * ```js\n * new Holiday('US', 'la', 'no') // is the same as\n * new Holiday('us.la.no') // is the same as\n * new Holiday({ country: 'us', state: 'la', region: 'no'})\n * ```\n */\nexport class Holidays extends HolidaysParser {\n constructor (country, state, region, opts) {\n super(data, country, state, region, opts)\n }\n}\n","export const isNull = (value) => {\r\n return value === undefined || value == null;\r\n};\r\nexport const isNullOrEmpty = (value) => {\r\n return isNull(value) || typeof (value) !== 'string' || value.trim() === '';\r\n};\r\n","import moment from 'moment';\r\nimport Holidays from \"date-holidays\";\r\nimport { isNullOrEmpty } from './string-helper';\r\nexport class DateTime {\r\n /**\r\n *\r\n */\r\n constructor(value) {\r\n if (value instanceof Date) {\r\n this._value = moment(value);\r\n }\r\n else {\r\n if (isNullOrEmpty(value)) {\r\n throw Error('ArgumentNullException: value');\r\n }\r\n value = value.trim();\r\n switch (value.length) {\r\n case 10:\r\n this._value = moment(value, 'DD/MM/yyyy');\r\n break;\r\n case 16:\r\n this._value = moment(value, 'DD/MM/yyyy hh:mm');\r\n break;\r\n case 19:\r\n this._value = moment(value, 'DD/MM/yyyy hh:mm:ss');\r\n break;\r\n default:\r\n throw Error('InvalidArgumentException: value');\r\n }\r\n }\r\n }\r\n static get Now() {\r\n const date = moment().locale('es').format('DD/MM/yyyy hh:mm:ss');\r\n return new DateTime(date);\r\n }\r\n ToString(format) {\r\n return this._value.format(format);\r\n }\r\n ToJsDate() {\r\n return this._value.toDate();\r\n }\r\n TruncateDate() {\r\n const tmp = this._value.format('DD/MM/yyyy');\r\n return moment(tmp, 'DD/MM/yyyy').toDate();\r\n }\r\n AddHours(hours) {\r\n if (isNaN(hours)) {\r\n console.log(\"Value provided for \\\"hours\\\" was not a number\");\r\n }\r\n const newDate = this._value.add(hours, 'hours').toDate();\r\n return new DateTime(newDate);\r\n }\r\n AddDays(days) {\r\n if (isNaN(days)) {\r\n console.log(\"Value provided for \\\"days\\\" was not a number\");\r\n }\r\n const newDate = this._value.add(days, 'days').toDate();\r\n return new DateTime(newDate);\r\n }\r\n AddBusinessDays(days) {\r\n if (isNaN(days)) {\r\n console.log(\"Value provided for \\\"days\\\" was not a number\");\r\n }\r\n let newDate;\r\n const direction = Math.sign(days);\r\n const hd = new Holidays('CO');\r\n if (direction > 0) {\r\n while (days > 0) {\r\n // Agregar un día\r\n newDate = this._value.add(1, 'days').toDate();\r\n if (hd.isHoliday(newDate)) {\r\n continue;\r\n }\r\n // Si el día es diferente a domingo o sábado se descuenta uno del conteo\r\n var dow = newDate.getDay();\r\n if (dow != 0 && dow != 6) {\r\n days--;\r\n }\r\n }\r\n }\r\n else {\r\n while (days < 0) {\r\n // Agregar un día\r\n newDate = this._value.add(-1, 'days').toDate();\r\n if (hd.isHoliday(newDate)) {\r\n continue;\r\n }\r\n // Si el día es diferente a domingo o sábado se descuenta uno del conteo\r\n var dow = newDate.getDay();\r\n if (dow != 0 && dow != 6) {\r\n days--;\r\n }\r\n }\r\n }\r\n const date = new DateTime(newDate).TruncateDate();\r\n return new DateTime(date);\r\n }\r\n get Date() {\r\n return new DateTime(this.ToString(\"DD/MM/yyyy\"));\r\n }\r\n}\r\n","export const getExtension = (fileName) => {\r\n const splitString = fileName.split('.');\r\n const extension = splitString.length >= 2 ? splitString[splitString.length - 1] : 'desconocido';\r\n return (extension || '').trim().toLowerCase();\r\n};\r\nexport const getMimeType = () => {\r\n // const extension = getExtension(fileName);\r\n // const mimeType = mime.lookup(extension);\r\n // return mimeType;\r\n return \"\";\r\n};\r\nexport const readAllText = (file) => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsText(file);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = error => reject(error);\r\n });\r\n};\r\n","import { isNullOrEmpty } from \"./string-helper\";\r\nconst 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\nexport const Guid = {\r\n IsEmpty: (value) => isNullOrEmpty(value) || value === Guid.Empty,\r\n IsNotEmpty: (value) => Guid.IsValid(value) && !Guid.IsEmpty(value),\r\n NewGuid: () => {\r\n let id = uuidv4();\r\n return id;\r\n },\r\n IsValid: (value) => {\r\n if (isNullOrEmpty(value)) {\r\n return false;\r\n }\r\n const pattern = new RegExp('^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$', 'i');\r\n return pattern.test(value);\r\n },\r\n PrimaryKey: `FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF`,\r\n Empty: '00000000-0000-0000-0000-000000000000'\r\n};\r\n","const cdnUrl = 'https://ioipcorestorageaccount.blob.core.windows.net/ioip-core-static-files';\r\nexport const IoipIcons = {\r\n Column: `${cdnUrl}/images/column.png`,\r\n Company: `${cdnUrl}/images/company.png`,\r\n Contact: `${cdnUrl}/images/contact.png`,\r\n Database: `${cdnUrl}/images/database.png`,\r\n Date: `${cdnUrl}/images/date.png`,\r\n DisabledContact: `${cdnUrl}/images/disabled-contact.png`,\r\n DisabledDocumentaryType: `${cdnUrl}/images/documentary-type-disabled.png`,\r\n DisabledEnterpriseApplication: `${cdnUrl}/images/enterprise-application-disabled.png`,\r\n DisabledExternalUser: `${cdnUrl}/images/external-user-disabled.png`,\r\n DisabledGroup: `${cdnUrl}/images/group-disabled.png`,\r\n DisabledOffice: `${cdnUrl}/images/office-disabled.png`,\r\n DisabledProfile: `${cdnUrl}/images/disabled-profile.png`,\r\n DisabledSerie: `${cdnUrl}/images/serie-disabled.png`,\r\n DisabledSerieSimple: `${cdnUrl}/images/disabled-serie-simple.png`,\r\n DisabledSystemTable: `${cdnUrl}/images/disabled-system-table.png`,\r\n DisabledTrd: `${cdnUrl}/images/trd-disabled.png`,\r\n DisabledUser: `${cdnUrl}/images/user-disabled.png`,\r\n DocumentaryType: `${cdnUrl}/images/documentary-type.png`,\r\n Docx: `${cdnUrl}/images/docx.png`,\r\n DropDown: `${cdnUrl}/images/dropdown.png`,\r\n EnterpriseApplication: `${cdnUrl}/images/enterprise-application.png`,\r\n ExternalUser: `${cdnUrl}/images/external-user.png`,\r\n File: `${cdnUrl}/images/file.png`,\r\n Flow: `${cdnUrl}/images/flow.png`,\r\n Folder: `${cdnUrl}/images/folder.png`,\r\n Form: `${cdnUrl}/images/form.png`,\r\n GanttChart: `${cdnUrl}/images/gantt-chart.png`,\r\n Group: `${cdnUrl}/images/group.png`,\r\n Link: `${cdnUrl}/images/link.png`,\r\n Mail: `${cdnUrl}/images/mail.png`,\r\n Office: `${cdnUrl}/images/office.png`,\r\n Outlook: `${cdnUrl}/images/mail.png`,\r\n Pdf: `${cdnUrl}/images/pdf.png`,\r\n Picture: `${cdnUrl}/images/picture.png`,\r\n Pptx: `${cdnUrl}/images/pptx.png`,\r\n Profile: `${cdnUrl}/images/profile.png`,\r\n Script: `${cdnUrl}/images/script.png`,\r\n Section: `${cdnUrl}/images/section.png`,\r\n Serie: `${cdnUrl}/images/serie.png`,\r\n SerieSimple: `${cdnUrl}/images/serie-simple.png`,\r\n SystemTable: `${cdnUrl}/images/system-table.png`,\r\n Table: `${cdnUrl}/images/table.png`,\r\n Time: `${cdnUrl}/images/time.png`,\r\n Trd: `${cdnUrl}/images/trd.png`,\r\n Txt: `${cdnUrl}/images/mail.png`,\r\n User: `${cdnUrl}/images/user.png`,\r\n UserFolder: `${cdnUrl}/images/user-folder.png`,\r\n Xlsx: `${cdnUrl}/images/xlsx.png`\r\n};\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { List } from \"linq.ts\";\r\nimport { isNullOrEmpty } from \"./string-helper\";\r\nexport const paginateDataAsync = (request, options) => __awaiter(void 0, void 0, void 0, function* () {\r\n return paginateData(request, options);\r\n});\r\nexport const paginateData = (request, options) => {\r\n // Crear lista de elementos\r\n let result = new List(options.data().slice());\r\n const order = options.order || [];\r\n // Filtrar datos\r\n if (request.Search && request.Search.trim().length > 0) {\r\n // Obtener valor a buscar\r\n const search = request.Search.trim().toUpperCase();\r\n // Filtrar\r\n result = result.Where((item) => {\r\n // Obtener valores a comparar\r\n if (options.onSearch != null) {\r\n return options.onSearch(search, item);\r\n }\r\n else {\r\n const values = options.search(item);\r\n if (values.length === 0) {\r\n return true;\r\n }\r\n else {\r\n for (let i = 0; i < values.length; i++) {\r\n const value = values[i].toUpperCase();\r\n if (!isNullOrEmpty(value) && value.indexOf(search) >= 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n }\r\n });\r\n }\r\n // Ordenar\r\n if (typeof options.onSort === 'function') {\r\n result = options.onSort(result);\r\n }\r\n else {\r\n if (request.OrderColumn !== void 0) {\r\n const orderColumn = order[request.OrderColumn];\r\n if (orderColumn !== void 0) {\r\n if (request.SortDirection === 'asc') {\r\n result = result.OrderBy(o => o[orderColumn]);\r\n }\r\n else {\r\n result = result.OrderByDescending(o => o[orderColumn]);\r\n }\r\n }\r\n }\r\n }\r\n const count = result.Count();\r\n // Paginar\r\n request.Start = (request.Start - 1) < 0 ? 0 : (request.Start - 1);\r\n result = result.Skip(request.Start * request.Length).Take(request.Length);\r\n const dtResult = {\r\n Data: result.ToArray(),\r\n RecordsFiltered: count\r\n };\r\n return dtResult;\r\n};\r\n","import { isNullOrEmpty } from \"./string-helper\";\r\n/**\r\n* Representa el resultado de la validación de un control\r\n* @param {number|function} type Nombre del tipo de validación\r\n*/\r\nexport class ValidationResult {\r\n constructor(validationType) {\r\n this.validationType = '';\r\n this.hasError = false;\r\n this.errorMessage = '';\r\n this.value = null;\r\n this.expectedValue = null;\r\n this.validationType = validationType || '';\r\n }\r\n static createError(errorMessage) {\r\n const result = new ValidationResult();\r\n result.hasError = true;\r\n result.errorMessage = errorMessage;\r\n return result;\r\n }\r\n static createSuccess() {\r\n const result = new ValidationResult();\r\n return result;\r\n }\r\n}\r\nexport const validator = {\r\n required: function requiredValidator(value) {\r\n value = value || true;\r\n return function requiredValidator(formValue) {\r\n var response = new ValidationResult('validator.required');\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n }\r\n else if (typeof (value) === 'boolean') {\r\n expectedValue = value;\r\n }\r\n else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.maxLength\" no es valido.');\r\n }\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n // Obtener la longitud del valor\r\n if (expectedValue === true && (formValue == null || formValue.toString().length === 0)) {\r\n response.hasError = true;\r\n response.errorMessage = 'Campo requerido';\r\n }\r\n return response;\r\n };\r\n },\r\n maxLength: function maxLengthValidator(value, customMessageError) {\r\n return function maxLengthValidator(formValue) {\r\n var response = new ValidationResult('validator.maxLength');\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n }\r\n else if (typeof (value) === 'number') {\r\n expectedValue = value;\r\n }\r\n else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.maxLength\" no es valido.');\r\n }\r\n // Verificar que el valor esperado sea mayor a cero\r\n if (expectedValue > 0) {\r\n // Obtener la longitud del valor\r\n var lenght = 0;\r\n if (formValue == null) {\r\n formValue = 0;\r\n }\r\n else if (typeof (formValue) === 'string') {\r\n lenght = formValue.toString().length;\r\n }\r\n else if (typeof (formValue) === 'number') {\r\n lenght = formValue.toString().length;\r\n }\r\n response.expectedValue = expectedValue;\r\n response.value = lenght;\r\n // Realizar validación\r\n if (lenght > expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `Se permite máximo ${expectedValue} caracteres.`;\r\n }\r\n }\r\n return response;\r\n };\r\n },\r\n minLength: function minLengthValidator(value, customMessageError) {\r\n return function minLengthValidator(formValue) {\r\n var response = new ValidationResult('validator.minLength');\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n }\r\n else if (typeof (value) === 'number') {\r\n expectedValue = value;\r\n }\r\n else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.minLength\" no es valido.');\r\n }\r\n if (expectedValue > 0) {\r\n // Obtener la longitud del valor\r\n var lenght = 0;\r\n if (formValue == null) {\r\n formValue = 0;\r\n }\r\n else if (typeof (formValue) === 'string') {\r\n lenght = formValue.toString().length;\r\n }\r\n else if (typeof (formValue) === 'number') {\r\n lenght = formValue.toString().length;\r\n }\r\n else if (typeof (formValue) === 'object' && formValue instanceof Array) {\r\n lenght = formValue.length;\r\n }\r\n response.expectedValue = expectedValue;\r\n response.value = lenght;\r\n // Realizar validación\r\n if (lenght < expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `Se requiere como minimo ${expectedValue} caracteres.`;\r\n }\r\n }\r\n return response;\r\n };\r\n },\r\n maxValue: function maxValueValidator(value, customMessageError) {\r\n return function maxValueValidator(formValue) {\r\n var response = new ValidationResult('validator.maxValue');\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n }\r\n else if (typeof (value) === 'number') {\r\n expectedValue = value;\r\n }\r\n else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.maxLength\" no es valido.');\r\n }\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n if (formValue > expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `El valor máximo permitido es ${expectedValue}`;\r\n }\r\n return response;\r\n };\r\n },\r\n minValue: function minValueValidator(value, customMessageError) {\r\n return function minValueValidator(formValue) {\r\n var response = new ValidationResult('validator.minValue');\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n }\r\n else if (typeof (value) === 'number') {\r\n expectedValue = value;\r\n }\r\n else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.minValue\" no es valido.');\r\n }\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n if (formValue < expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `El valor minimo permitido es ${expectedValue}`;\r\n }\r\n return response;\r\n };\r\n },\r\n invalid: function invalidValueValidator(value, errorMessage) {\r\n return function invalidValueValidator(formValue) {\r\n var response = new ValidationResult('validator.invalid');\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n }\r\n else if (typeof (value) === 'number') {\r\n expectedValue = value;\r\n }\r\n else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.invalid\" no es valido.');\r\n }\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n if ((Number(formValue) || 0) == expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = errorMessage;\r\n }\r\n return response;\r\n };\r\n },\r\n custom: function customValidator(callback) {\r\n return function customValidator(formValue) {\r\n return callback(formValue);\r\n };\r\n },\r\n maxDate: function maxDateValidator(value, customMessageError) {\r\n return function maxDateValidator(formValue) {\r\n var response = new ValidationResult('validator.maxDate');\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n }\r\n else if (typeof (value) === 'object') {\r\n expectedValue = value;\r\n }\r\n else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.maxDate\" no es valido.');\r\n }\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n if (formValue > expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `la fecha máxima permitida es ${expectedValue}.`;\r\n }\r\n return response;\r\n };\r\n },\r\n minDate: function minDateValidator(value, customMessageError) {\r\n return function minDateValidator(formValue) {\r\n var response = new ValidationResult('validator.minDate');\r\n // Obtener el valor a comparar\r\n var expectedValue = null;\r\n if (typeof (value) === 'function') {\r\n expectedValue = value();\r\n }\r\n else if (typeof (value) === 'object') {\r\n expectedValue = value;\r\n }\r\n else {\r\n throw new Error('El valor establecido para la regla de validación \"validator.minDate\" no es valido.');\r\n }\r\n response.expectedValue = expectedValue;\r\n response.value = formValue;\r\n if (formValue < expectedValue) {\r\n response.hasError = true;\r\n response.errorMessage = customMessageError ?\r\n typeof customMessageError === 'function' ? customMessageError() :\r\n customMessageError : `la fecha mínima permitida es ${expectedValue}.`;\r\n }\r\n return response;\r\n };\r\n },\r\n email: function emailValidator(errorMessage) {\r\n return function emailValidator(formValue) {\r\n const response = new ValidationResult('validator.email');\r\n if (!isNullOrEmpty(formValue)) {\r\n formValue = formValue.replace(',', ';');\r\n let emails = formValue.split(';');\r\n emails.forEach(email => {\r\n response.value = email;\r\n const re = /^[a-zA-Z0-9-._]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/;\r\n if (re.test(email) === false) {\r\n response.hasError = true;\r\n response.errorMessage = 'Formato de correo no valido' || errorMessage;\r\n return response;\r\n }\r\n return null;\r\n });\r\n }\r\n return response;\r\n };\r\n },\r\n domainUser: function domainUserValidator(errorMessage) {\r\n return function domainUserValidator(formValue) {\r\n const response = new ValidationResult('validator.domainUser');\r\n if (formValue.trim().length > 0) {\r\n response.value = formValue;\r\n const re = /^[A-Za-z0-9\\\\\\._-]{7,}$/;\r\n if (re.test(formValue) === false) {\r\n response.hasError = true;\r\n response.errorMessage = 'Formato de usuario de dominio no valido' || errorMessage;\r\n }\r\n }\r\n return response;\r\n };\r\n },\r\n name: function nameValidator(errorMessage) {\r\n return function nameValidator(formValue) {\r\n const response = new ValidationResult('validator.name');\r\n if (!isNullOrEmpty(formValue)) {\r\n response.value = formValue;\r\n const re = /[^!°|\"#$%&/()=?'¿¡\\[\\]+*¨{}:,;@0123456789]/;\r\n if (re.test(formValue) === false) {\r\n response.hasError = true;\r\n response.errorMessage = 'Formato no válido, no debe contener caracteres especiales' || errorMessage;\r\n }\r\n }\r\n return response;\r\n };\r\n },\r\n identity: function identityValidator(errorMessage) {\r\n return function identityValidator(formValue) {\r\n const response = new ValidationResult('validator.identity');\r\n if (!isNullOrEmpty(formValue)) {\r\n response.value = formValue;\r\n const re = /^[0-9]+$/;\r\n if (re.test(formValue) === false) {\r\n response.hasError = true;\r\n response.errorMessage = 'Formato no válido, no debe contener caracteres' || errorMessage;\r\n }\r\n }\r\n return response;\r\n };\r\n },\r\n};\r\nexport function validateProperty(propertyValue, validations) {\r\n let result = new ValidationResult();\r\n if (validations == null) {\r\n return result;\r\n }\r\n for (var i = 0; i < validations.length; i++) {\r\n var validation = validations[i];\r\n if (typeof (validation) != 'function') {\r\n throw new Error('El validador debe ser una función');\r\n }\r\n else {\r\n var tmp = validation(propertyValue);\r\n if (tmp.hasError === true) {\r\n result = tmp;\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\nexport function validateObject(model, validations, output) {\r\n let isValid = true;\r\n let key;\r\n let errors = {};\r\n for (key in validations) {\r\n const value = model[key];\r\n const rules = validations[key];\r\n if (rules != null && rules.length > 0) {\r\n let validationResult = validateProperty(value, rules);\r\n if (validationResult.hasError) {\r\n isValid = false;\r\n errors[key] = validationResult.errorMessage;\r\n }\r\n else {\r\n errors[key] = '';\r\n }\r\n }\r\n }\r\n // Actualizar errores\r\n output(errors, isValid);\r\n return isValid;\r\n}\r\nexport function validateDateValueValidator(valueIni, valueEnd) {\r\n let expectedValue = 0;\r\n if (valueIni != null && valueEnd != null) {\r\n if (valueIni < valueEnd) {\r\n expectedValue = -1;\r\n }\r\n else if (valueIni.getDate() === valueEnd.getDate()) {\r\n expectedValue = 0;\r\n }\r\n else {\r\n expectedValue = 1;\r\n }\r\n }\r\n return expectedValue;\r\n}\r\n","import { type CSSProperties } from 'react';\n\nconst styles: Record = {\n wrapper: {\n display: 'flex',\n position: 'relative',\n textAlign: 'initial',\n },\n fullWidth: {\n width: '100%',\n },\n hide: {\n display: 'none',\n },\n};\n\nexport default styles;\n","import { type CSSProperties } from 'react';\n\nconst styles: Record = {\n container: {\n display: 'flex',\n height: '100%',\n width: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n};\n\nexport default styles;\n","import React, { type PropsWithChildren } from 'react';\n\nimport styles from './styles';\n\nfunction Loading({ children }: PropsWithChildren) {\n return
      {children}
      ;\n}\n\nexport default Loading;\n","import Loading from './Loading';\n\nexport default Loading;\n","import React from 'react';\n\nimport styles from './styles';\nimport Loading from '../Loading';\nimport { type ContainerProps } from './types';\n\n// ** forwardref render functions do not support proptypes or defaultprops **\n// one of the reasons why we use a separate prop for passing ref instead of using forwardref\n\nfunction MonacoContainer({\n width,\n height,\n isEditorReady,\n loading,\n _ref,\n className,\n wrapperProps,\n}: ContainerProps) {\n return (\n
      \n {!isEditorReady && {loading}}\n \n
      \n );\n}\n\nexport default MonacoContainer;\n","import { memo } from 'react';\n\nimport MonacoContainer from './MonacoContainer';\n\nexport default memo(MonacoContainer);\n","import { useEffect, type EffectCallback } from 'react';\n\nfunction useMount(effect: EffectCallback) {\n useEffect(effect, []);\n}\n\nexport default useMount;\n","import { useEffect, useRef, type DependencyList, type EffectCallback } from 'react';\n\nfunction useUpdate(effect: EffectCallback, deps: DependencyList, applyChanges = true) {\n const isInitialMount = useRef(true);\n\n useEffect(\n isInitialMount.current || !applyChanges\n ? () => {\n isInitialMount.current = false;\n }\n : effect,\n deps,\n );\n}\n\nexport default useUpdate;\n","import { type Monaco } from '..';\n\n/**\n * noop is a helper function that does nothing\n * @returns undefined\n */\nfunction noop() {\n /** no-op */\n}\n\n/**\n * getOrCreateModel is a helper function that will return a model if it exists\n * or create a new model if it does not exist.\n * This is useful for when you want to create a model for a file that may or may not exist yet.\n * @param monaco The monaco instance\n * @param value The value of the model\n * @param language The language of the model\n * @param path The path of the model\n * @returns The model that was found or created\n */\nfunction getOrCreateModel(monaco: Monaco, value: string, language: string, path: string) {\n return getModel(monaco, path) || createModel(monaco, value, language, path);\n}\n\n/**\n * getModel is a helper function that will return a model if it exists\n * or return undefined if it does not exist.\n * @param monaco The monaco instance\n * @param path The path of the model\n * @returns The model that was found or undefined\n */\nfunction getModel(monaco: Monaco, path: string) {\n return monaco.editor.getModel(createModelUri(monaco, path));\n}\n\n/**\n * createModel is a helper function that will create a new model\n * @param monaco The monaco instance\n * @param value The value of the model\n * @param language The language of the model\n * @param path The path of the model\n * @returns The model that was created\n */\nfunction createModel(monaco: Monaco, value: string, language?: string, path?: string) {\n return monaco.editor.createModel(\n value,\n language,\n path ? createModelUri(monaco, path) : undefined,\n );\n}\n\n/**\n * createModelUri is a helper function that will create a new model uri\n * @param monaco The monaco instance\n * @param path The path of the model\n * @returns The model uri that was created\n */\nfunction createModelUri(monaco: Monaco, path: string) {\n return monaco.Uri.parse(path);\n}\n\nexport { noop, getOrCreateModel };\n","import React, { useState, useRef, useCallback, useEffect } from 'react';\nimport loader from '@monaco-editor/loader';\n\nimport MonacoContainer from '../MonacoContainer';\nimport useMount from '../hooks/useMount';\nimport useUpdate from '../hooks/useUpdate';\nimport { noop, getOrCreateModel } from '../utils';\nimport { type DiffEditorProps, type MonacoDiffEditor } from './types';\nimport { type Monaco } from '..';\n\nfunction DiffEditor({\n original,\n modified,\n language,\n originalLanguage,\n modifiedLanguage,\n originalModelPath,\n modifiedModelPath,\n keepCurrentOriginalModel = false,\n keepCurrentModifiedModel = false,\n theme = 'light',\n loading = 'Loading...',\n options = {},\n height = '100%',\n width = '100%',\n className,\n wrapperProps = {},\n beforeMount = noop,\n onMount = noop,\n}: DiffEditorProps) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const editorRef = useRef(null);\n const monacoRef = useRef(null);\n const containerRef = useRef(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n const preventCreation = useRef(false);\n\n useMount(() => {\n const cancelable = loader.init();\n\n cancelable\n .then((monaco) => (monacoRef.current = monaco) && setIsMonacoMounting(false))\n .catch(\n (error) =>\n error?.type !== 'cancelation' && console.error('Monaco initialization: error:', error),\n );\n\n return () => (editorRef.current ? disposeEditor() : cancelable.cancel());\n });\n\n useUpdate(\n () => {\n const modifiedEditor = editorRef.current!.getModifiedEditor();\n if (modifiedEditor.getOption(monacoRef.current!.editor.EditorOption.readOnly)) {\n modifiedEditor.setValue(modified || '');\n } else {\n if (modified !== modifiedEditor.getValue()) {\n modifiedEditor.executeEdits('', [\n {\n range: modifiedEditor.getModel()!.getFullModelRange(),\n text: modified || '',\n forceMoveMarkers: true,\n },\n ]);\n\n modifiedEditor.pushUndoStop();\n }\n }\n },\n [modified],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.getModel()?.original.setValue(original || '');\n },\n [original],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n const { original, modified } = editorRef.current!.getModel()!;\n\n monacoRef.current!.editor.setModelLanguage(original, originalLanguage || language || 'text');\n monacoRef.current!.editor.setModelLanguage(modified, modifiedLanguage || language || 'text');\n },\n [language, originalLanguage, modifiedLanguage],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n monacoRef.current?.editor.setTheme(theme);\n },\n [theme],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.updateOptions(options);\n },\n [options],\n isEditorReady,\n );\n\n const setModels = useCallback(() => {\n if (!monacoRef.current) return;\n beforeMountRef.current(monacoRef.current);\n const originalModel = getOrCreateModel(\n monacoRef.current,\n original || '',\n originalLanguage || language || 'text',\n originalModelPath || '',\n );\n\n const modifiedModel = getOrCreateModel(\n monacoRef.current,\n modified || '',\n modifiedLanguage || language || 'text',\n modifiedModelPath || '',\n );\n\n editorRef.current?.setModel({\n original: originalModel,\n modified: modifiedModel,\n });\n }, [\n language,\n modified,\n modifiedLanguage,\n original,\n originalLanguage,\n originalModelPath,\n modifiedModelPath,\n ]);\n\n const createEditor = useCallback(() => {\n if (!preventCreation.current && containerRef.current) {\n editorRef.current = monacoRef.current!.editor.createDiffEditor(containerRef.current, {\n automaticLayout: true,\n ...options,\n });\n\n setModels();\n\n monacoRef.current?.editor.setTheme(theme);\n\n setIsEditorReady(true);\n preventCreation.current = true;\n }\n }, [options, theme, setModels]);\n\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current!, monacoRef.current!);\n }\n }, [isEditorReady]);\n\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]);\n\n useUpdate(\n () => {\n if (editorRef.current && monacoRef.current) {\n const originalEditor = editorRef.current.getOriginalEditor();\n const model = getOrCreateModel(\n monacoRef.current,\n original || '',\n originalLanguage || language || 'text',\n originalModelPath || '',\n );\n\n if (model !== originalEditor.getModel()) {\n originalEditor.setModel(model);\n }\n }\n },\n [originalModelPath],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n if (editorRef.current && monacoRef.current) {\n const modifiedEditor = editorRef.current.getModifiedEditor();\n const model = getOrCreateModel(\n monacoRef.current,\n modified || '',\n modifiedLanguage || language || 'text',\n modifiedModelPath || '',\n );\n\n if (model !== modifiedEditor.getModel()) {\n modifiedEditor.setModel(model);\n }\n }\n },\n [modifiedModelPath],\n isEditorReady,\n );\n\n function disposeEditor() {\n const models = editorRef.current?.getModel();\n\n if (!keepCurrentOriginalModel) {\n models?.original?.dispose();\n }\n\n if (!keepCurrentModifiedModel) {\n models?.modified?.dispose();\n }\n\n editorRef.current?.dispose();\n }\n\n return (\n \n );\n}\n\nexport default DiffEditor;\n","import { memo } from 'react';\n\nimport DiffEditor from './DiffEditor';\n\nexport * from './types';\n\nexport default memo(DiffEditor);\n","import { useEffect, useRef } from 'react';\n\nfunction usePrevious(value: T) {\n const ref = useRef();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n\nexport default usePrevious;\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport loader from '@monaco-editor/loader';\nimport useMount from '../hooks/useMount';\nimport useUpdate from '../hooks/useUpdate';\nimport usePrevious from '../hooks/usePrevious';\nimport { type IDisposable, type editor } from 'monaco-editor';\nimport { noop, getOrCreateModel } from '../utils';\nimport { type EditorProps } from './types';\nimport { type Monaco } from '..';\nimport MonacoContainer from '../MonacoContainer';\n\nconst viewStates = new Map();\n\nfunction Editor({\n defaultValue,\n defaultLanguage,\n defaultPath,\n value,\n language,\n path,\n /* === */\n theme = 'light',\n line,\n loading = 'Loading...',\n options = {},\n overrideServices = {},\n saveViewState = true,\n keepCurrentModel = false,\n /* === */\n width = '100%',\n height = '100%',\n className,\n wrapperProps = {},\n /* === */\n beforeMount = noop,\n onMount = noop,\n onChange,\n onValidate = noop,\n}: EditorProps) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const monacoRef = useRef(null);\n const editorRef = useRef(null);\n const containerRef = useRef(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n const subscriptionRef = useRef();\n const valueRef = useRef(value);\n const previousPath = usePrevious(path);\n const preventCreation = useRef(false);\n const preventTriggerChangeEvent = useRef(false);\n\n useMount(() => {\n const cancelable = loader.init();\n\n cancelable\n .then((monaco) => (monacoRef.current = monaco) && setIsMonacoMounting(false))\n .catch(\n (error) =>\n error?.type !== 'cancelation' && console.error('Monaco initialization: error:', error),\n );\n\n return () => (editorRef.current ? disposeEditor() : cancelable.cancel());\n });\n\n useUpdate(\n () => {\n const model = getOrCreateModel(\n monacoRef.current!,\n defaultValue || value || '',\n defaultLanguage || language || '',\n path || defaultPath || '',\n );\n\n if (model !== editorRef.current?.getModel()) {\n if (saveViewState) viewStates.set(previousPath, editorRef.current?.saveViewState());\n editorRef.current?.setModel(model);\n if (saveViewState) editorRef.current?.restoreViewState(viewStates.get(path));\n }\n },\n [path],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.updateOptions(options);\n },\n [options],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n if (!editorRef.current || value === undefined) return;\n if (editorRef.current.getOption(monacoRef.current!.editor.EditorOption.readOnly)) {\n editorRef.current.setValue(value);\n } else if (value !== editorRef.current.getValue()) {\n preventTriggerChangeEvent.current = true;\n editorRef.current.executeEdits('', [\n {\n range: editorRef.current.getModel()!.getFullModelRange(),\n text: value,\n forceMoveMarkers: true,\n },\n ]);\n\n editorRef.current.pushUndoStop();\n preventTriggerChangeEvent.current = false;\n }\n },\n [value],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n const model = editorRef.current?.getModel();\n if (model && language) monacoRef.current?.editor.setModelLanguage(model, language);\n },\n [language],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n // reason for undefined check: https://github.com/suren-atoyan/monaco-react/pull/188\n if (line !== undefined) {\n editorRef.current?.revealLine(line);\n }\n },\n [line],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n monacoRef.current?.editor.setTheme(theme);\n },\n [theme],\n isEditorReady,\n );\n\n const createEditor = useCallback(() => {\n if (!containerRef.current || !monacoRef.current) return;\n if (!preventCreation.current) {\n beforeMountRef.current(monacoRef.current);\n const autoCreatedModelPath = path || defaultPath;\n\n const defaultModel = getOrCreateModel(\n monacoRef.current,\n value || defaultValue || '',\n defaultLanguage || language || '',\n autoCreatedModelPath || '',\n );\n\n editorRef.current = monacoRef.current?.editor.create(\n containerRef.current,\n {\n model: defaultModel,\n automaticLayout: true,\n ...options,\n },\n overrideServices,\n );\n\n saveViewState && editorRef.current.restoreViewState(viewStates.get(autoCreatedModelPath));\n\n monacoRef.current.editor.setTheme(theme);\n\n setIsEditorReady(true);\n preventCreation.current = true;\n }\n }, [\n defaultValue,\n defaultLanguage,\n defaultPath,\n value,\n language,\n path,\n options,\n overrideServices,\n saveViewState,\n theme,\n ]);\n\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current!, monacoRef.current!);\n }\n }, [isEditorReady]);\n\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]);\n\n // subscription\n // to avoid unnecessary updates (attach - dispose listener) in subscription\n valueRef.current = value;\n\n // onChange\n useEffect(() => {\n if (isEditorReady && onChange) {\n subscriptionRef.current?.dispose();\n subscriptionRef.current = editorRef.current?.onDidChangeModelContent((event) => {\n if (!preventTriggerChangeEvent.current) {\n onChange(editorRef.current!.getValue(), event);\n }\n });\n }\n }, [isEditorReady, onChange]);\n\n // onValidate\n useEffect(() => {\n if (isEditorReady) {\n const changeMarkersListener = monacoRef.current!.editor.onDidChangeMarkers((uris) => {\n const editorUri = editorRef.current!.getModel()?.uri;\n\n if (editorUri) {\n const currentEditorHasMarkerChanges = uris.find((uri) => uri.path === editorUri.path);\n if (currentEditorHasMarkerChanges) {\n const markers = monacoRef.current!.editor.getModelMarkers({\n resource: editorUri,\n });\n onValidate?.(markers);\n }\n }\n });\n\n return () => {\n changeMarkersListener?.dispose();\n };\n }\n return () => {\n // eslint happy\n };\n }, [isEditorReady, onValidate]);\n\n function disposeEditor() {\n subscriptionRef.current?.dispose();\n\n if (keepCurrentModel) {\n saveViewState && viewStates.set(path, editorRef.current!.saveViewState());\n } else {\n editorRef.current!.getModel()?.dispose();\n }\n\n editorRef.current!.dispose();\n }\n\n return (\n \n );\n}\n\nexport default Editor;\n","import loader from '@monaco-editor/loader';\nexport { loader };\n\nimport DiffEditor from './DiffEditor';\nexport * from './DiffEditor/types';\nexport { DiffEditor };\n\nimport useMonaco from './hooks/useMonaco';\nexport { useMonaco };\n\nimport Editor from './Editor';\nexport * from './Editor/types';\nexport { Editor };\nexport default Editor;\n\n// Monaco\nimport type * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\nexport type Monaco = typeof monaco;\n\n// Default themes\nexport type Theme = 'vs-dark' | 'light';\n","import { memo } from 'react';\n\nimport Editor from './Editor';\n\nexport * from './types';\n\nexport default memo(Editor);\n","import React from \"react\";\r\nimport Editor from \"@monaco-editor/react\";\r\nexport class CodeEditor extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n value: props.value || ''\r\n };\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n value: props.value || ''\r\n });\r\n }\r\n render() {\r\n return React.createElement(\"div\", { style: { border: 'solid 1px #0078d4', boxShadow: '0px 0px 3px 1px #0078d4', height: '100%' } },\r\n React.createElement(Editor, { height: this.props.height || 'calc(100% - 20px)', defaultLanguage: this.props.language, value: this.state.value || '', onChange: this.props.onChanged, onMount: (editor, monaco) => {\r\n editor.addAction({\r\n id: 'insert-component',\r\n label: 'Insert ProcesoX Component',\r\n keybindings: [\r\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.F10,\r\n // chord\r\n monaco.KeyMod.chord(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyK, monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyM)\r\n ],\r\n contextMenuGroupId: 'navigation',\r\n contextMenuOrder: 1.5,\r\n run: () => {\r\n }\r\n });\r\n if (this.props.onMount != null) {\r\n this.props.onMount(editor, monaco);\r\n }\r\n }, options: { fontSize: 16 } }));\r\n }\r\n}\r\n","import { Callout, DirectionalHint } from \"@fluentui/react/lib/Callout\";\r\nimport { ColorPicker } from \"@fluentui/react/lib/ColorPicker\";\r\nimport { FocusTrapZone } from \"@fluentui/react/lib/FocusTrapZone\";\r\nimport { TextField } from \"@fluentui/react/lib/TextField\";\r\nimport React from \"react\";\r\nimport { useRef, useState } from \"react\";\r\nexport const ColorSelector = (props) => {\r\n const [show, setShow] = useState(false);\r\n const ref = useRef();\r\n return React.createElement(\"div\", { ref: ref },\r\n React.createElement(TextField, { readOnly: true, iconProps: { iconName: 'Color' }, label: props.label || '', onClick: () => setShow(true), value: props.value || '' }),\r\n show && React.createElement(Callout, { isBeakVisible: false, style: { outline: 'none', overflow: 'hidden' }, gapSpace: 0, doNotLayer: true, target: ref, directionalHint: DirectionalHint.bottomLeftEdge, onDismiss: () => setShow(false) },\r\n React.createElement(FocusTrapZone, { isClickableOutsideFocusTrap: true },\r\n React.createElement(ColorPicker, { color: props.value, onChange: (_, value) => {\r\n props.onChanged('#' + value.hex);\r\n } }))));\r\n};\r\n","import React from \"react\";\r\nimport { isNullOrEmpty } from \"../helpers/string-helper\";\r\nexport const Column = (props) => {\r\n let className = props.size > 0 ? `ms-Grid-col ms-sm${props.size} ms-md${props.size} ms-lg${props.size}` : `ms-Grid-col ms-sm${props.sm} ms-md${props.md} ms-lg${props.lg}`;\r\n if (!isNullOrEmpty(props.className)) {\r\n className += ' ' + props.className;\r\n }\r\n return React.createElement(\"div\", { className: className, style: props.style }, props.children);\r\n};\r\n","import React from \"react\";\r\nimport { isNullOrEmpty } from \"../helpers/string-helper\";\r\nexport const Row = (props) => {\r\n return React.createElement(\"div\", { className: `ms-Grid-row` + (isNullOrEmpty(props.className) ? '' : ' ' + props.className) }, props.children);\r\n};\r\n","import React from 'react';\r\nexport class ContextMenu extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this._div = undefined;\r\n this.state = {\r\n items: this.props.items || [],\r\n show: this.props.show || false,\r\n x: this.props.x || 0,\r\n y: this.props.y || 0\r\n };\r\n }\r\n componentDidMount() {\r\n if (this._div !== undefined) {\r\n this._div.focus();\r\n }\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({\r\n items: nextProps.items || [],\r\n show: nextProps.show || false,\r\n x: nextProps.x || 0,\r\n y: nextProps.y || 0\r\n });\r\n }\r\n render() {\r\n return (React.createElement(\"div\", { tabIndex: 0, style: {\r\n position: \"absolute\",\r\n left: this.state.x,\r\n top: this.state.y,\r\n display: this.state.show ? 'block' : 'none',\r\n padding: '8px',\r\n boxShadow: 'rgba(0, 0, 0, 0.133) 0px 1.6px 3.6px 0px, rgba(0, 0, 0, 0.11) 0px 0.3px 0.9px 0px',\r\n background: 'white',\r\n border: 'solid 1px silver',\r\n minWidth: '200px',\r\n cursor: 'pointer',\r\n userSelect: 'none'\r\n }, onBlur: () => {\r\n this.setState({\r\n show: false\r\n }, () => this.props.onClose());\r\n }, ref: e => {\r\n this._div = e;\r\n if (this._div != null) {\r\n this._div.focus();\r\n }\r\n } }, this.state.items.map(o => {\r\n return React.createElement(\"div\", { style: {\r\n padding: '8px'\r\n }, onClick: () => {\r\n o.onClick();\r\n this.props.onClose();\r\n } }, o.text);\r\n })));\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Column } from \"./Column\";\r\nimport { Row } from \"./Row\";\r\nexport const Subtitle = (props) => {\r\n return props.className ? React.createElement(Row, null,\r\n React.createElement(Column, { lg: 12, md: 12, sm: 12 },\r\n React.createElement(\"div\", { style: { marginTop: '20px' } },\r\n React.createElement(\"h2\", { className: props.className }, props.text)))) : React.createElement(Row, null,\r\n React.createElement(Column, { lg: 12, md: 12, sm: 12 },\r\n React.createElement(\"div\", { style: { marginTop: '20px' } },\r\n React.createElement(\"h2\", { className: 'ms-fontSize-18 ms-fontColor-black', style: { fontWeight: 'normal' } }, props.text))));\r\n};\r\n","import { useEffect, useState } from 'react';\r\nimport { Icon } from \"@fluentui/react/lib/Icon\";\r\nimport { List } from \"linq.ts\";\r\nimport { PrimaryButton, Stack, StackItem } from '../../fluent';\r\nimport React from 'react';\r\nexport const Paginator = (props) => {\r\n const getPages = (currentPage, totalPages) => {\r\n if (totalPages === 0) {\r\n return [];\r\n }\r\n let pages = [];\r\n // Llenar páginas hacia atrás\r\n let pageNumber = currentPage;\r\n let counter = 0;\r\n while (counter <= 3 && pageNumber > 0) {\r\n pageNumber--;\r\n counter++;\r\n if (pageNumber > 0) {\r\n pages.push(pageNumber);\r\n }\r\n }\r\n // LLenar páginas hacia adelante\r\n pageNumber = currentPage;\r\n counter = 0;\r\n while (counter <= 3 && pageNumber <= totalPages) {\r\n pageNumber++;\r\n counter++;\r\n if (pageNumber <= totalPages) {\r\n pages.push(pageNumber);\r\n }\r\n }\r\n // Establecer página actual\r\n pages.push(currentPage);\r\n pages = new List(pages).OrderBy(o => o).ToArray();\r\n if (currentPage > 5) {\r\n const index2 = pages.indexOf(2);\r\n if (index2 > 0) {\r\n pages.splice(index2, 1);\r\n pages = [1, -1, ...pages];\r\n }\r\n }\r\n if (currentPage < totalPages - 5) {\r\n const index2 = pages.indexOf(totalPages - 1);\r\n pages.splice(index2, 1);\r\n pages = [...pages, -1, totalPages];\r\n }\r\n return pages;\r\n };\r\n const mapState = () => {\r\n return {\r\n currentPage: props.currentPage || 1,\r\n totalPages: props.totalPages || 0,\r\n pages: getPages(props.currentPage || 1, props.totalPages || 0)\r\n };\r\n };\r\n const [state, setState] = useState(mapState());\r\n useEffect(() => setState(mapState()), [props]);\r\n const onChangePage = (pageNumber) => {\r\n if (state.currentPage != pageNumber) {\r\n if (pageNumber > 0 && pageNumber <= state.totalPages) {\r\n setState(Object.assign(Object.assign({}, state), { currentPage: pageNumber }));\r\n props.onChange(pageNumber);\r\n }\r\n }\r\n };\r\n const stackTokens = { childrenGap: 0 };\r\n return React.createElement(Stack, { horizontal: true, horizontalAlign: \"end\", tokens: stackTokens },\r\n React.createElement(StackItem, { onClick: () => onChangePage(1) },\r\n React.createElement(Icon, { iconName: 'DoubleChevronLeftMed' })),\r\n React.createElement(StackItem, { onClick: () => onChangePage(state.currentPage - 1) },\r\n React.createElement(Icon, { iconName: 'ChevronLeftMed' })),\r\n state.pages.map(o => {\r\n return o === -1\r\n ? React.createElement(StackItem, { key: o },\r\n React.createElement(\"div\", null, \"...\"))\r\n : React.createElement(StackItem, { key: o, onClick: () => onChangePage(o) }, o === state.currentPage ?\r\n React.createElement(PrimaryButton, { style: { minWidth: 'auto' } }, o)\r\n :\r\n React.createElement(\"div\", null, o));\r\n }),\r\n React.createElement(StackItem, { onClick: () => onChangePage(state.currentPage + 1) },\r\n React.createElement(Icon, { iconName: 'ChevronRightMed' })),\r\n React.createElement(StackItem, { onClick: () => onChangePage(state.totalPages) },\r\n React.createElement(Icon, { iconName: 'DoubleChevronLeftMedMirrored' })));\r\n};\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { CommandBar } from '@fluentui/react/lib/CommandBar';\r\nimport { DetailsListLayoutMode } from \"@fluentui/react/lib/DetailsList\";\r\nimport { Selection } from \"@fluentui/react/lib/Selection\";\r\nimport { ShimmeredDetailsList } from '@fluentui/react/lib/ShimmeredDetailsList';\r\nimport { TextField } from '@fluentui/react/lib/TextField';\r\nimport { TooltipHost } from '@fluentui/react/lib/Tooltip';\r\nimport React from \"react\";\r\nimport { Subtitle } from './Subtitle';\r\nimport { Column } from './Column';\r\nimport { isNull } from '../helpers/string-helper';\r\nimport { Row } from './Row';\r\nimport { Paginator } from './Paginator';\r\nexport class DataTable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this._selection = new Selection({\r\n onSelectionChanged: () => {\r\n if (this.props.onSelectedRow) {\r\n this.props.onSelectedRow(this._selection.getSelection());\r\n }\r\n }\r\n });\r\n this.buildCommandBarFarItems = () => {\r\n const items = [];\r\n // Agregar elementos personalizados\r\n if (this.state.externalCommandBarFarItems !== void 0 && this.state.externalCommandBarFarItems.length > 0) {\r\n for (let i = 0; i < this.state.externalCommandBarFarItems.length; i++) {\r\n const farItem = this.state.externalCommandBarFarItems[i];\r\n items.push(farItem);\r\n }\r\n }\r\n // Agregar menú de cantidad de elementos a mostrar\r\n items.push({\r\n key: this.state.request.Length.toString(),\r\n iconProps: { iconName: 'NumberedList' },\r\n name: this.state.request.Length.toString(),\r\n subMenuProps: {\r\n items: [\r\n {\r\n key: '10',\r\n name: '10',\r\n onClick: () => this.onChangePaginationLength(10)\r\n },\r\n {\r\n key: '15',\r\n name: '15',\r\n onClick: () => this.onChangePaginationLength(15)\r\n },\r\n {\r\n key: '20',\r\n name: '20',\r\n onClick: () => this.onChangePaginationLength(20)\r\n },\r\n {\r\n key: '30',\r\n name: '30',\r\n onClick: () => this.onChangePaginationLength(30)\r\n },\r\n {\r\n key: '50',\r\n name: '50',\r\n onClick: () => this.onChangePaginationLength(50)\r\n }\r\n ]\r\n }\r\n });\r\n return items;\r\n };\r\n this.onChangePaginationLength = (length) => {\r\n this.setState({\r\n commandBarFarItems: this.buildCommandBarFarItems(),\r\n request: Object.assign(Object.assign({}, this.state.request), { Length: length, Start: 1 })\r\n }, () => this.refreshTable());\r\n };\r\n this.state = {\r\n allowSearch: props.allowSearch !== undefined ? props.allowSearch : true,\r\n allowSortColumns: props.allowSortColumns || [],\r\n columns: props.columns,\r\n commandBarItems: [],\r\n emptyImageUrl: props.emptyImageUrl || 'https://ioipcorestorageaccount.blob.core.windows.net/ioip-core-static-files/images/empty-result.svg',\r\n errorLoading: false,\r\n errorLoadingMessage: '',\r\n externalCommandBarFarItems: props.commandBarFarItems || [],\r\n isLoading: false,\r\n items: [],\r\n lastItem: 0,\r\n recordsFiltered: 0,\r\n selectionMode: props.selectionMode,\r\n title: props.title,\r\n totalPages: 0,\r\n request: {\r\n Length: props.itemsPerPage || 10,\r\n OrderColumn: props.initialOrderColumn || 0,\r\n Search: '',\r\n SortDirection: props.initialSortDirection || 'asc',\r\n Start: 1\r\n },\r\n searchText: '',\r\n commandBarFarItems: []\r\n };\r\n }\r\n componentDidMount() {\r\n this.setState({\r\n commandBarItems: this.buildCommandBar(this.props.commandBarItems || []),\r\n commandBarFarItems: this.buildCommandBarFarItems()\r\n }, () => {\r\n this.refreshTable();\r\n });\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n allowSearch: props.allowSearch || true,\r\n allowSortColumns: props.allowSortColumns || [],\r\n columns: props.columns || [],\r\n commandBarItems: this.buildCommandBar(props.commandBarItems || []),\r\n emptyImageUrl: props.emptyImageUrl || 'https://ioipcorestorageaccount.blob.core.windows.net/ioip-core-static-files/images/empty-result.svg',\r\n externalCommandBarFarItems: props.commandBarFarItems || [],\r\n }, () => {\r\n this.setState({\r\n commandBarFarItems: this.buildCommandBarFarItems()\r\n });\r\n });\r\n }\r\n render() {\r\n var _a;\r\n const searchClassName = (isNull(this.state.allowSearch) || this.state.allowSearch === true) ? 'ms-Grid-col ms-sm9 ms-md10 ms-lg9' : 'ms-Grid-col ms-sm12 ms-md12 ms-lg12';\r\n const showTitle = typeof this.state.title === 'string' && this.state.title.trim().length > 0;\r\n const showCommandBar = this.state.columns != null && this.state.columns.length > 0;\r\n const headerClassName = this.props.hideHeaders === true ? 'detail-list-no-header' : '';\r\n const showData = ((_a = this.state.items) === null || _a === void 0 ? void 0 : _a.length) > 0 || this.state.isLoading;\r\n const onSearchTextKeyUp = (event) => {\r\n if (!this.state.isLoading) {\r\n if (event.keyCode === 13) {\r\n this.setState({\r\n request: Object.assign(Object.assign({}, this.state.request), { Start: 1 })\r\n }, () => this.refreshTable());\r\n }\r\n }\r\n };\r\n return React.createElement(React.Fragment, null,\r\n showTitle && React.createElement(Subtitle, { text: this.state.title }),\r\n showCommandBar && React.createElement(Row, null,\r\n React.createElement(Column, { className: searchClassName, style: { padding: '0px', paddingLeft: '8px' } },\r\n React.createElement(CommandBar, { items: this.state.commandBarItems, className: 'command-bar-1', farItems: this.state.commandBarFarItems })),\r\n this.state.allowSearch && React.createElement(React.Fragment, null,\r\n React.createElement(Column, { className: \"ms-sm3 ms-md2 ms-lg3\", style: { padding: '0px' } },\r\n React.createElement(TooltipHost, { content: this.props.searchTooltip || '', calloutProps: { gapSpace: 0 } },\r\n React.createElement(TextField, { placeholder: 'Buscar...', borderless: true, className: 'mp-search', style: { height: '40px', backgroundColor: 'rgba(244, 244, 244, 0.43)' }, onChange: (_, value) => {\r\n this.setState({\r\n searchText: value\r\n });\r\n }, onKeyUp: onSearchTextKeyUp }))))),\r\n showData && React.createElement(Row, null,\r\n React.createElement(Column, { className: \"ms-sm12 ms-md12 ms-lg12\" },\r\n React.createElement(ShimmeredDetailsList, { items: this.state.items, columns: this.state.columns, selectionMode: this.state.selectionMode, layoutMode: DetailsListLayoutMode.justified, isHeaderVisible: true, enableShimmer: this.state.isLoading, selectionPreservedOnEmptyClick: true, selection: this._selection, shimmerLines: this.state.items.length || this.state.request.Length, className: headerClassName }))),\r\n !showData && React.createElement(Row, null,\r\n React.createElement(Column, { className: \"ms-sm12 ms-md12 ms-lg12\", style: { textAlign: 'center' } },\r\n React.createElement(\"img\", { style: {\r\n height: '128px',\r\n width: '128px'\r\n }, src: this.state.emptyImageUrl, alt: \"Sin Resultados\" }))),\r\n React.createElement(Row, null,\r\n this.state.totalPages > 0 && React.createElement(\"div\", { className: 'ms-Grid-col ms-sm12 ms-md6 ms-lg6', style: { paddingTop: '12px' } }, !this.state.isLoading && React.createElement(\"span\", null,\r\n \"Mostrando \",\r\n ((this.state.request.Start - 1) * this.state.request.Length) + 1,\r\n \" al \",\r\n this.state.lastItem,\r\n \" de \",\r\n this.state.recordsFiltered)),\r\n this.state.totalPages > 0 && React.createElement(\"div\", { className: 'ms-Grid-col ms-sm12 ms-md6 ms-lg6', style: { textAlign: 'right' } },\r\n React.createElement(Paginator, { currentPage: this.state.request.Start, totalPages: this.state.totalPages, onChange: (page) => {\r\n this.setState({\r\n request: Object.assign(Object.assign({}, this.state.request), { Start: page })\r\n }, () => this.refreshTable());\r\n } }))));\r\n }\r\n refreshTable() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this._selection.setAllSelected(false);\r\n this.setState({\r\n isLoading: true\r\n });\r\n const req = Object.assign(Object.assign({}, this.state.request), { Search: this.state.searchText });\r\n const response = yield this.props.onDownloadServerData(req);\r\n if (req.Start < 0) {\r\n req.Start = 0;\r\n }\r\n let lastItem = (req.Start * req.Length) + req.Length;\r\n if (lastItem > response.RecordsFiltered) {\r\n lastItem = response.RecordsFiltered;\r\n }\r\n // Actualizar datos\r\n this.setState({\r\n isLoading: false,\r\n totalPages: this.state.request.Length > 0 ? Math.ceil(response.RecordsFiltered / this.state.request.Length) : 0,\r\n items: response.Data,\r\n recordsFiltered: response.RecordsFiltered,\r\n lastItem: lastItem,\r\n commandBarFarItems: this.buildCommandBarFarItems()\r\n });\r\n });\r\n }\r\n buildCommandBar(items) {\r\n if (typeof this.props.hideRefreshButton === 'boolean' && this.props.hideRefreshButton) {\r\n return items;\r\n }\r\n else {\r\n return [\r\n ...items,\r\n {\r\n key: 'refresh',\r\n name: 'Actualizar',\r\n iconProps: { iconName: 'Refresh' },\r\n onClick: () => {\r\n this.refreshTable();\r\n }\r\n }\r\n ];\r\n }\r\n }\r\n}\r\n","import { DayOfWeek, DatePicker, DirectionalHint, TooltipHost } from \"../../fluent\";\r\nimport { DateTime } from \"../helpers/datetime\";\r\nimport React from \"react\";\r\nconst DatePickerStrings = {\r\n months: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],\r\n shortMonths: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],\r\n days: ['Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sábado'],\r\n shortDays: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],\r\n goToToday: 'Ir a hoy',\r\n prevMonthAriaLabel: 'Ir al mes anterior',\r\n nextMonthAriaLabel: 'Ir al proximo mes',\r\n prevYearAriaLabel: 'Ir al año anterior',\r\n nextYearAriaLabel: 'Ir al proximo año'\r\n};\r\nfunction onFormatDate(date) {\r\n if (typeof (date) === 'string') {\r\n date = new Date(date);\r\n }\r\n let day = String(date.getDate());\r\n day = day.length === 1 ? '0' + day : day;\r\n let month = String(date.getMonth() + 1);\r\n month = month.length === 1 ? '0' + month : month;\r\n if (typeof (date) === 'object') {\r\n return day + '/' + month + '/' + (date.getFullYear());\r\n }\r\n else {\r\n return date;\r\n }\r\n}\r\n;\r\nexport const ExtendedDatePicker = (props) => {\r\n let value = props.value;\r\n if (typeof value === 'string') {\r\n if (value.trim().length > 0) {\r\n value = new DateTime(value).ToJsDate();\r\n }\r\n }\r\n const onChanged = (date) => {\r\n if (date != null) {\r\n const str = new DateTime(date).ToString('DD/MM/yyyy');\r\n props.onChanged(str);\r\n }\r\n else {\r\n props.onChanged('');\r\n }\r\n };\r\n return React.createElement(TooltipHost, { content: props.label, directionalHint: DirectionalHint.leftCenter },\r\n React.createElement(DatePicker, { firstDayOfWeek: DayOfWeek.Sunday, strings: DatePickerStrings, placeholder: props.placeholder, isRequired: props.isRequired, label: props.label, formatDate: onFormatDate, onSelectDate: onChanged, value: value, allowTextInput: false, disabled: props.disabled || false }),\r\n React.createElement(\"small\", { style: { color: '#bb3737' } }, props.errorMessage));\r\n};\r\n","import React from \"react\";\r\nexport const Grid = (props) => {\r\n return React.createElement(\"div\", { className: 'ms-Grid' }, props.children);\r\n};\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Spinner, SpinnerSize, TooltipHost, Icon } from \"../../fluent\";\r\nimport { useEffect, useState } from \"react\";\r\nimport React from \"react\";\r\nexport const FileUploadItem = (props) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [percentage, setPercentage] = useState(0);\r\n const maxChunkSize = 8388608; // 8Mb\r\n const { name, error } = props.file;\r\n const errorMessage = error ? 'El archivo no se ha cargado. Puede eliminarlo y cargarlo de nuevo o reintentar la carga haciendo clic aquí' : '';\r\n const uploadFileAsync = (item, startChunk, options) => __awaiter(void 0, void 0, void 0, function* () {\r\n setIsLoading(true);\r\n let nextChunk = startChunk;\r\n // Actualizar porcentaje\r\n if (item.size > 0) {\r\n setPercentage(Math.floor((nextChunk / item.size) * 100));\r\n }\r\n while (true) {\r\n // Obtener un trozo del archivo a cargar\r\n const chunkSize = item.size > maxChunkSize ? maxChunkSize : item.size; // Tamaño del pedazo\r\n const endRead = nextChunk + chunkSize; // Byte final a leer\r\n const lengthRead = endRead > item.size ? item.size : endRead; // Tamaño final del pedazo a leer\r\n const buffer = item.nativeFile.slice(nextChunk, lengthRead); // Leer parte del archivo\r\n // Enviar archivo al servidor\r\n const chunkResult = yield options.onAppend(buffer);\r\n nextChunk = chunkResult.NextChunk;\r\n // Actualizar porcentaje\r\n if (item.size > 0) {\r\n setPercentage(Math.floor((nextChunk / item.size) * 100));\r\n }\r\n // Si el siguiente el igual al tamaño del archivo quiere decir que se completo la carga\r\n if (nextChunk === item.size) {\r\n item.nativeFile = null;\r\n options.onComplete(data => item.data = data);\r\n break;\r\n }\r\n }\r\n setIsLoading(false);\r\n props.onComplete(item);\r\n });\r\n const startProcessAsync = () => __awaiter(void 0, void 0, void 0, function* () {\r\n const isNew = props.file.isNew && props.file.nativeFile != null;\r\n if (isNew) {\r\n if (typeof props.onCreate === 'function') {\r\n const { name, size } = props.file.nativeFile;\r\n const options = yield props.onCreate(name, size, props.file.uploadId);\r\n if (!options.cancel) {\r\n yield uploadFileAsync(props.file, 0, options);\r\n }\r\n }\r\n }\r\n });\r\n const retryProcess = () => {\r\n const input = document.createElement('input');\r\n input.type = 'file';\r\n input.onchange = (ev) => {\r\n var _a, _b;\r\n if (((_b = (_a = ev.target) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b.length) === 1) {\r\n if (typeof props.onRetry === 'function') {\r\n const { name, size } = ev.target.files[0];\r\n const options = props.onRetry(props.file, name, size);\r\n if (!options.cancel) {\r\n uploadFileAsync({\r\n error: false,\r\n uploadId: '',\r\n nativeFile: ev.target.files[0],\r\n size,\r\n name,\r\n isNew: false\r\n }, options.nextChunk, options);\r\n }\r\n }\r\n }\r\n };\r\n input.click();\r\n };\r\n const onClick = () => {\r\n if (isLoading) {\r\n if (props.onMessage != null) {\r\n props.onMessage('Archivo en proceso de carga', 'Visor documentos');\r\n }\r\n return;\r\n }\r\n if (!error) {\r\n props.onClick();\r\n }\r\n else {\r\n if (props.onMessage != null) {\r\n props.onMessage('El archivo no ha sido cargado', 'Visor documentos');\r\n }\r\n return;\r\n }\r\n };\r\n useEffect(() => { startProcessAsync(); }, []);\r\n return React.createElement(\"div\", null,\r\n React.createElement(\"span\", { style: { cursor: 'pointer' }, onClick: onClick }, name),\r\n (error && !isLoading) && React.createElement(\"span\", null,\r\n \"\\u00A0\",\r\n React.createElement(TooltipHost, { content: errorMessage },\r\n React.createElement(Icon, { onClick: retryProcess, style: {\r\n color: \"#ff5722\",\r\n fontWeight: 700,\r\n fontSize: \"14px\",\r\n position: \"absolute\",\r\n marginTop: \"2px\",\r\n marginLeft: \"4px\",\r\n cursor: \"pointer\"\r\n }, iconName: 'Warning' }))),\r\n isLoading && React.createElement(\"span\", { style: { float: 'right' } },\r\n React.createElement(Spinner, { size: SpinnerSize.small, style: { float: 'left', marginRight: '5px' } }),\r\n \" \",\r\n percentage,\r\n \"%\"));\r\n};\r\n","import * as React from 'react';\n\n/**\n * A callback ref function that also has a .current member for the ref's current value.\n */\nexport type RefCallback = ((value: T | null) => void) & React.RefObject;\n\n/**\n * Creates a ref, and calls a callback whenever the ref changes to a non-null value. The callback can optionally return\n * a cleanup function that'll be called before the value changes, and when the ref is unmounted.\n *\n * This can be used to work around a limitation that useEffect cannot depend on `ref.current` (see\n * https://github.com/facebook/react/issues/14387#issuecomment-503616820).\n *\n * Usage example:\n * ```ts\n * const myRef = useRefEffect(element => {\n * ...\n * return () => { ... cleanup ... };\n * });\n * ```\n * ```jsx\n *
      \n * ```\n *\n * @param callback - Called whenever the ref's value changes to non-null. Can optionally return a cleanup function.\n * @param initial - (Optional) The initial value for the ref.\n *\n * @returns A function that should be called to set the ref's value. The object also has a `.current` member that can be\n * used to access the ref's value (like a normal RefObject). It can be hooked up to an element's `ref` property.\n */\nexport function useRefEffect(callback: (value: T) => (() => void) | void, initial: T | null = null): RefCallback {\n type RefData = {\n ref: ((value: T | null) => void) & React.MutableRefObject;\n callback: (value: T) => (() => void) | void;\n cleanup?: (() => void) | void;\n };\n\n const createRefCallback = () => {\n const refCallback = (value: T | null) => {\n if (data.ref.current !== value) {\n if (data.cleanup) {\n data.cleanup();\n data.cleanup = undefined;\n }\n\n data.ref.current = value;\n\n if (value !== null) {\n data.cleanup = data.callback(value);\n }\n }\n };\n\n refCallback.current = initial;\n return refCallback;\n };\n\n const data = React.useRef({\n ref: createRefCallback(),\n callback,\n }).current;\n\n data.callback = callback;\n\n return data.ref;\n}\n","import { getWindow } from '@fluentui/utilities';\n\n/**\n * Wrapper for ResizeObserver, with fallback for browsers that don't support ResizeObserver.\n *\n * Calls the onResize callback once layout is complete, and again whenever any of the target(s) change size.\n * Or if ResizeObserver isn't supported, calls the callback whenever the window changes size.\n *\n * @param target - Either a single element, or array of elements to watch for size changes.\n * @param onResize - Callback to be notified when layout is complete, and when the target(s) change size.\n * If this browser supports ResizeObserver, the callback will be passed the ResizeObserverEntry[] array.\n * Otherwise, the entries array will be undefined, and you'll need to find another way to get the element's size,\n * (e.g. clientWidth/clientHeight or getBoundingClientRect).\n *\n * @returns A function to clean up the observer/listener.\n */\nexport const observeResize = (\n target: Element | Element[],\n onResize: (entries: readonly ResizeObserverEntry[] | undefined) => void,\n): (() => void) => {\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(onResize);\n\n if (Array.isArray(target)) {\n target.forEach(t => observer.observe(t));\n } else {\n observer.observe(target);\n }\n\n return () => observer.disconnect();\n } else {\n // Fallback for browsers that don't support ResizeObserver\n const onResizeWrapper = () => onResize(undefined);\n\n const win = getWindow(Array.isArray(target) ? target[0] : target);\n if (!win) {\n // Can't listen for resize if we can't get the window object\n return () => {\n // Nothing to clean up\n };\n }\n\n // Listen for the first animation frame, which will happen after layout is complete\n const animationFrameId = win.requestAnimationFrame(onResizeWrapper);\n win.addEventListener('resize', onResizeWrapper, false);\n\n return () => {\n win.cancelAnimationFrame(animationFrameId);\n win.removeEventListener('resize', onResizeWrapper, false);\n };\n }\n};\n\n/** Temporary type definition for ResizeObserver. Can be removed when official types are available. */\ntype ResizeObserver = {\n new (callback: (entries: readonly ResizeObserverEntry[], observer: ResizeObserver) => void): ResizeObserver;\n observe(target: Element, options?: { box: 'content-box' | 'border-box' }): void;\n unobserve(target: Element): void;\n disconnect(): void;\n};\n\n/** Temporary type definition for ResizeObserverEntry. Can be removed when official types are available. */\ntype ResizeObserverEntry = {\n readonly contentRect: DOMRectReadOnly;\n readonly target: Element;\n};\n\n/** Temporary definition for ResizeObserver. Can be removed when official types are available. */\ndeclare const ResizeObserver: ResizeObserver | undefined;\n","import * as React from 'react';\nimport { useIsomorphicLayoutEffect, useRefEffect } from '@fluentui/react-hooks';\nimport { getWindow } from '@fluentui/utilities';\nimport { observeResize } from './observeResize';\nimport type { RefCallback } from '@fluentui/react-hooks';\n\n/**\n * Callback to notify the user that the items in the overflow have changed. This should ensure that the overflow menu\n * is visible, and contains all of the overflowing items.\n *\n * @param overflowIndex - The index of the first item in the overflow, or items.length if nothing is overflowing.\n * @param items - The list of all items in the container, and whether that particular item is in the overflow\n */\nexport type OverflowItemsChangedCallback = (\n overflowIndex: number,\n items: { ele: HTMLElement; isOverflowing: boolean }[],\n) => void;\n\n/** Parameters for {@see useOverflow} */\nexport type OverflowParams = {\n /** Callback to notify the user that the items in the overflow have changed. */\n onOverflowItemsChanged: OverflowItemsChangedCallback;\n\n /** True if the element containing overflowMenuButtonRef is in right-to-left order */\n rtl: boolean;\n\n /** Optional: Index of item that should never go into the overflow menu. */\n pinnedIndex?: number;\n};\n\n/** Return value for {@see useOverflow} */\nexport type OverflowRefs = {\n /** Set the overflow menu button's ref to this ref callback */\n menuButtonRef: RefCallback;\n};\n\n/**\n * Track whether any items don't fit within their container, and move them to the overflow menu.\n * Items are moved into the overflow menu from back to front, excluding pinned items.\n *\n * The overflow menu button must be the last sibling of all of the items that can be put into the overflow, and it\n * must be hooked up to the `setMenuButtonRef` setter function that's returned by `useOverflow`:\n * ```ts\n * const overflow = useOverflow(...);\n * ```\n * ```jsx\n * \n * // Index 0\n * // Index 1\n * ...\n *
      \n );\n };\n\n const isKeyValid = (itemKey: string | null | undefined): boolean => {\n return itemKey === null || (itemKey !== undefined && linkCollection.keyToIndexMapping[itemKey] !== undefined);\n };\n\n const getSelectedKey = () => {\n if (isKeyValid(selectedKey)) {\n return selectedKey;\n }\n if (linkCollection.links.length) {\n return linkCollection.links[0].itemKey;\n }\n return undefined;\n };\n\n classNames = getClassNames(props.styles!, {\n theme: theme!,\n linkSize,\n linkFormat,\n });\n\n const renderedSelectedKey = getSelectedKey();\n const renderedSelectedIndex = renderedSelectedKey ? linkCollection.keyToIndexMapping[renderedSelectedKey] : 0;\n\n const items = linkCollection.links.map(l =>\n renderPivotLink(linkCollection, l, renderedSelectedKey, classNames.link),\n );\n\n // The overflow menu starts empty and items[] is updated as the overflow items change\n const overflowMenuProps: IContextualMenuProps = React.useMemo(\n () => ({\n items: [],\n alignTargetEdge: true,\n directionalHint: DirectionalHint.bottomRightEdge,\n }),\n [],\n );\n\n const { menuButtonRef: overflowMenuButtonRef } = useOverflow({\n onOverflowItemsChanged: (overflowIndex, elements) => {\n // Set data-is-overflowing on each item\n elements.forEach(({ ele, isOverflowing }) => (ele.dataset.isOverflowing = `${isOverflowing}`));\n\n // Update the menu items\n overflowMenuProps.items = linkCollection.links\n .slice(overflowIndex)\n .filter(link => link.itemKey !== renderedSelectedKey)\n .map((link, index) => {\n link.role = 'menuitem';\n\n return {\n key: link.itemKey || `${overflowIndex + index}`,\n onRender: () => renderPivotLink(linkCollection, link, renderedSelectedKey, classNames.linkInMenu),\n };\n });\n },\n rtl: getRTL(theme),\n pinnedIndex: renderedSelectedIndex,\n });\n\n const OverflowButton = overflowButtonAs ? overflowButtonAs : CommandButton;\n return (\n
      \n \n {items}\n {overflowBehavior === 'menu' && (\n \n )}\n \n {renderedSelectedKey &&\n linkCollection.links.map(\n link =>\n (link.alwaysRender === true || renderedSelectedKey === link.itemKey) &&\n renderPivotItem(link.itemKey, renderedSelectedKey === link.itemKey),\n )}\n
      \n );\n },\n);\nPivotBase.displayName = COMPONENT_NAME;\n","import {\n AnimationVariables,\n getGlobalClassNames,\n HighContrastSelector,\n normalize,\n FontWeights,\n getHighContrastNoAdjustStyle,\n} from '@fluentui/style-utilities';\nimport { IsFocusVisibleClassName } from '@fluentui/utilities';\nimport type { IPivotStyleProps, IPivotStyles } from './Pivot.types';\nimport type { IStyle } from '@fluentui/style-utilities';\n\nconst globalClassNames = {\n count: 'ms-Pivot-count',\n icon: 'ms-Pivot-icon',\n linkIsSelected: 'is-selected',\n link: 'ms-Pivot-link',\n linkContent: 'ms-Pivot-linkContent',\n root: 'ms-Pivot',\n rootIsLarge: 'ms-Pivot--large',\n rootIsTabs: 'ms-Pivot--tabs',\n text: 'ms-Pivot-text',\n linkInMenu: 'ms-Pivot-linkInMenu',\n overflowMenuButton: 'ms-Pivot-overflowMenuButton',\n};\n\nconst getLinkStyles = (\n props: IPivotStyleProps,\n classNames: { [key: string]: string },\n isLinkInOverflowMenu: boolean = false,\n): IStyle[] => {\n const { linkSize, linkFormat } = props;\n const { semanticColors, fonts } = props.theme;\n const rootIsLarge = linkSize === 'large';\n const rootIsTabs = linkFormat === 'tabs';\n\n return [\n fonts.medium,\n {\n color: semanticColors.actionLink,\n padding: '0 8px',\n position: 'relative',\n backgroundColor: 'transparent',\n border: 0,\n borderRadius: 0,\n selectors: {\n ':hover': {\n backgroundColor: semanticColors.buttonBackgroundHovered,\n color: semanticColors.buttonTextHovered,\n cursor: 'pointer',\n },\n ':active': {\n backgroundColor: semanticColors.buttonBackgroundPressed,\n color: semanticColors.buttonTextHovered,\n },\n ':focus': {\n outline: 'none',\n },\n },\n },\n !isLinkInOverflowMenu && [\n {\n display: 'inline-block',\n lineHeight: 44,\n height: 44,\n marginRight: 8,\n textAlign: 'center',\n selectors: {\n [`.${IsFocusVisibleClassName} &:focus`]: {\n outline: `1px solid ${semanticColors.focusBorder}`,\n },\n\n [`.${IsFocusVisibleClassName} &:focus:after`]: {\n content: 'attr(data-content)',\n position: 'relative',\n border: 0,\n },\n ':before': {\n backgroundColor: 'transparent',\n bottom: 0,\n content: '\"\"',\n height: 2,\n left: 8,\n position: 'absolute',\n right: 8,\n transition: `left ${AnimationVariables.durationValue2} ${AnimationVariables.easeFunction2},\n right ${AnimationVariables.durationValue2} ${AnimationVariables.easeFunction2}`,\n },\n ':after': {\n color: 'transparent',\n content: 'attr(data-content)',\n display: 'block',\n fontWeight: FontWeights.bold,\n height: 1,\n overflow: 'hidden',\n visibility: 'hidden',\n },\n },\n },\n rootIsLarge && {\n fontSize: fonts.large.fontSize,\n },\n rootIsTabs && [\n {\n marginRight: 0,\n height: 44,\n lineHeight: 44,\n backgroundColor: semanticColors.buttonBackground,\n padding: '0 10px',\n verticalAlign: 'top',\n\n selectors: {\n ':focus': {\n outlineOffset: '-1px',\n },\n [`.${IsFocusVisibleClassName} &:focus::before`]: {\n height: 'auto',\n background: 'transparent',\n transition: 'none',\n },\n '&:hover, &:focus': {\n color: semanticColors.buttonTextCheckedHovered,\n },\n '&:active, &:hover': {\n color: semanticColors.primaryButtonText,\n backgroundColor: semanticColors.primaryButtonBackground,\n },\n [`&.${classNames.linkIsSelected}`]: {\n backgroundColor: semanticColors.primaryButtonBackground,\n color: semanticColors.primaryButtonText,\n fontWeight: FontWeights.regular,\n selectors: {\n ':before': {\n backgroundColor: 'transparent',\n transition: 'none',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n content: '\"\"',\n height: 0,\n },\n ':hover': {\n backgroundColor: semanticColors.primaryButtonBackgroundHovered,\n color: semanticColors.primaryButtonText,\n },\n '&:active': {\n backgroundColor: semanticColors.primaryButtonBackgroundPressed,\n color: semanticColors.primaryButtonText,\n },\n [HighContrastSelector]: {\n fontWeight: FontWeights.semibold,\n color: 'HighlightText',\n background: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n ],\n ],\n ];\n};\n\nexport const getStyles = (props: IPivotStyleProps): IPivotStyles => {\n const { className, linkSize, linkFormat, theme } = props;\n const { semanticColors, fonts } = theme;\n\n const classNames = getGlobalClassNames(globalClassNames, theme);\n\n const rootIsLarge = linkSize === 'large';\n const rootIsTabs = linkFormat === 'tabs';\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n normalize,\n {\n position: 'relative',\n color: semanticColors.link,\n whiteSpace: 'nowrap',\n },\n rootIsLarge && classNames.rootIsLarge,\n rootIsTabs && classNames.rootIsTabs,\n className,\n ],\n itemContainer: {\n selectors: {\n '&[hidden]': {\n display: 'none',\n },\n },\n },\n link: [\n classNames.link,\n ...getLinkStyles(props, classNames),\n {\n [`&[data-is-overflowing='true']`]: {\n display: 'none',\n },\n },\n ],\n overflowMenuButton: [\n classNames.overflowMenuButton,\n {\n visibility: 'hidden',\n position: 'absolute',\n right: 0,\n [`.${classNames.link}[data-is-overflowing='true'] ~ &`]: {\n visibility: 'visible',\n position: 'relative',\n },\n },\n ],\n linkInMenu: [\n classNames.linkInMenu,\n ...getLinkStyles(props, classNames, true),\n {\n textAlign: 'left',\n width: '100%',\n height: 36,\n lineHeight: 36,\n },\n ],\n linkIsSelected: [\n classNames.link,\n classNames.linkIsSelected,\n {\n fontWeight: FontWeights.semibold,\n selectors: {\n ':before': {\n backgroundColor: semanticColors.inputBackgroundChecked,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n },\n },\n },\n ':hover::before': {\n left: 0,\n right: 0,\n },\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n },\n },\n ],\n linkContent: [\n classNames.linkContent,\n {\n flex: '0 1 100%',\n selectors: {\n '& > * ': {\n marginLeft: 4,\n },\n '& > *:first-child': {\n marginLeft: 0,\n },\n },\n },\n ],\n text: [\n classNames.text,\n {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n ],\n count: [\n classNames.count,\n {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n ],\n icon: classNames.icon,\n };\n};\n","import * as React from 'react';\n\nimport { KeyCodes } from '../../../Utilities';\nimport type { IReactProps, IRefObject, IRenderFunction, IStyleFunctionOrObject } from '../../../Utilities';\nimport type { IPersonaProps } from '../../Persona/Persona.types';\nimport type { IStyle, ITheme } from '../../../Styling';\nimport type { ISpinnerStyleProps } from '../../Spinner/Spinner.types';\nimport type { ISuggestionItemProps } from './SuggestionsItem.types';\nimport { IIconProps } from '../../Icon/Icon.types';\n/**\n * Suggestions component.\n * {@docCategory Pickers}\n */\nexport interface ISuggestions {\n /** Execute the action selected. Can be SearchMore or ForceResolve actions. */\n executeSelectedAction: () => void;\n\n /** Focus on the ForceResolve action above the suggestions. If not available then focus on SearchMore action. */\n focusAboveSuggestions: () => void;\n\n /** Focus on the SearchMore action below the suggestions. If not available then focus on ForceResolve action. */\n focusBelowSuggestions: () => void;\n\n /** Focus the SearchMore action button. */\n focusSearchForMoreButton: () => void;\n\n /** Whether it has any suggested actions like ForceResolve or SearchMore. */\n hasSuggestedAction: () => boolean;\n\n /** Whether any of the suggested actions (ForceResolve or SearchMore) is selected. */\n hasSuggestedActionSelected: () => boolean;\n\n /** Returns true if the event was handled, false otherwise. */\n tryHandleKeyDown: (keyCode: number, currentSuggestionIndex: number) => boolean;\n}\n\n/**\n * Suggestions props interface. Refers to the entire container holding all the suggestions.\n * Type T is the type of the items that are displayed.\n * {@docCategory Pickers}\n */\nexport interface ISuggestionsProps extends IReactProps {\n /**\n * Optional callback to access the ISuggestions interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject>;\n\n /**\n * How the suggestion should look in the suggestion list.\n */\n onRenderSuggestion: (props: T, suggestionItemProps: ISuggestionItemProps) => JSX.Element;\n\n /**\n * What should occur when a suggestion is clicked\n */\n onSuggestionClick: (ev?: React.MouseEvent, item?: any, index?: number) => void;\n\n /**\n * The list of Suggestions that will be displayed\n */\n suggestions: ISuggestionModel[];\n\n /**\n * How the \"no result found\" should look in the suggestion list.\n */\n onRenderNoResultFound?: IRenderFunction;\n\n /**\n * The text that appears at the top of the suggestions list.\n */\n suggestionsHeaderText?: string;\n\n /**\n * The text that should appear at the top of the most recently used box.\n */\n mostRecentlyUsedHeaderText?: string;\n\n /**\n * The icon that appears indicating to the user that they can search for more results.\n */\n searchForMoreIcon?: IIconProps;\n\n /**\n * The text that appears indicating to the user that they can search for more results.\n */\n searchForMoreText?: string;\n\n /**\n * The callback that should be called when the user attempts to get more results\n */\n onGetMoreResults?: () => void;\n\n /**\n * The text that appears indicating to the use to force resolve the input\n */\n forceResolveText?: string;\n\n /**\n * The callback that should be called to see if the force resolve command should be shown\n */\n showForceResolve?: () => boolean;\n\n /**\n * The callback that should be called when the user attempts to use the input text as as item\n */\n createGenericItem?: () => void;\n\n /**\n * The CSS className of the suggestions root.\n */\n className?: string;\n\n /**\n * The CSS className of the suggestions list\n */\n suggestionsClassName?: string;\n\n /**\n * The text that should appear if there is a search error.\n *\n * @deprecated Use noResultsFoundText instead.\n */\n searchErrorText?: string;\n\n /**\n * The text that should appear if no results are found when searching.\n */\n noResultsFoundText?: string;\n\n /**\n * The className of the suggestion item.\n */\n suggestionsItemClassName?: string;\n\n /**\n * Used to indicate whether or not the user can request more suggestions.\n * Dictates whether or not the searchForMore button is displayed.\n */\n moreSuggestionsAvailable?: boolean;\n\n /**\n * Used to indicate whether or not the suggestions are loading.\n */\n isLoading?: boolean;\n\n /**\n * Used to indicate whether or not the suggestions are taking an extended amount of time to load.\n */\n isExtendedLoading?: boolean;\n\n /**\n * Used to indicate whether or not the component is searching for more results.\n */\n isSearching?: boolean;\n\n /**\n * The text to display while the results are loading.\n */\n loadingText?: string;\n\n /**\n * The text to display while searching for more results in a limited suggestions list.\n */\n searchingText?: string;\n\n /**\n * Indicates if a short list of recent suggestions should be shown.\n */\n isMostRecentlyUsedVisible?: boolean;\n\n /**\n * Function to fire when one of the optional remove buttons on a suggestion is clicked.\n *\n * TODO (adjective-object) remove IPersonaprops before the next major version bump\n */\n onSuggestionRemove?: (ev?: React.MouseEvent, item?: T | IPersonaProps, index?: number) => void;\n\n /**\n * Indicates if the text in resultsFooter or resultsFooterFull should be shown at the end of the suggestion list.\n * @defaultvalue true\n */\n isResultsFooterVisible?: boolean;\n\n /**\n * Maximum number of suggestions to show in the full suggestion list.\n */\n resultsMaximumNumber?: number;\n\n /**\n * A renderer that adds an element at the end of the suggestions list it has more items than resultsMaximumNumber.\n * This should not include interactive elements as the footer is not focusable.\n */\n resultsFooterFull?: (props: ISuggestionsProps) => JSX.Element;\n\n /**\n * A renderer that adds an element at the end of the suggestions list it has fewer items than resultsMaximumNumber.\n * This should not include interactive elements as the footer is not focusable.\n */\n resultsFooter?: (props: ISuggestionsProps) => JSX.Element;\n\n /**\n * Indicates whether to show a button with each suggestion to remove that suggestion.\n */\n showRemoveButtons?: boolean;\n\n /**\n * Screen reader message to read when there are suggestions available.\n */\n suggestionsAvailableAlertText?: string;\n\n /**\n * A function that resets focus to the expected item in the suggestion list\n */\n refocusSuggestions?: (keyCode: KeyCodes) => void;\n\n /**\n * An ARIA label for the container that is the parent of the suggestions.\n */\n suggestionsContainerAriaLabel?: string;\n\n /**\n * An ARIA label to use for the buttons to remove individual suggestions.\n */\n removeSuggestionAriaLabel?: string;\n\n /**\n * The string that will be used as the suggestionsListId.\n * Will be used by the BasePicker to keep track of the list for aria.\n */\n suggestionsListId?: string;\n\n /** Call to provide customized styling that will layer on top of the variant rules. */\n styles?: IStyleFunctionOrObject;\n\n /** Theme provided by High-Order Component. */\n theme?: ITheme;\n\n /**\n * Props for the icon used in the item's remove button.\n * @defaultvalue `{ iconName:'Cancel' }`\n */\n removeButtonIconProps?: IIconProps;\n}\n\n/**\n * The props needed to construct Suggestions styles.\n * {@docCategory Pickers}\n */\nexport type ISuggestionsStyleProps = Required, 'theme'>> &\n Pick, 'className' | 'suggestionsClassName'> & {\n /** Whether the forceResolve actionButton is selected. */\n forceResolveButtonSelected?: boolean;\n\n /** Whether the searchForMore actionButton is selected. */\n searchForMoreButtonSelected?: boolean;\n };\n\n/**\n * Represents the stylable areas of the Suggestions.\n * {@docCategory Pickers}\n */\nexport interface ISuggestionsStyles {\n /** Root element of the suggestions outer wrapper. */\n root: IStyle;\n\n /** Refers to the suggestions container. */\n suggestionsContainer: IStyle;\n\n /** Refers to the title rendered for suggestions container header and/or footer (if provided). */\n title: IStyle;\n\n /** Refers to the 'Force resolve' actionButton. */\n forceResolveButton: IStyle;\n\n /** Refers to the 'Search for more' actionButton. */\n searchForMoreButton: IStyle;\n\n /** Refers to the text rendered when no suggestions are found. */\n noSuggestions: IStyle;\n\n /** Refers to the text displaying if more suggestions available. */\n suggestionsAvailable: IStyle;\n\n /** SubComponents (Spinner) styles. */\n subComponentStyles: ISuggestionsSubComponentStyles;\n}\n\n/**\n * Styles interface of the SubComponents rendered within PeoplePickerItemSelected.\n * {@docCategory Pickers}\n */\nexport interface ISuggestionsSubComponentStyles {\n /** Refers to the Spinner rendered within the Suggestions when searching or loading suggestions. */\n spinner: IStyleFunctionOrObject;\n}\n\n/**\n * SuggestionModel interface.\n * Type T is the type of the item that is suggested (Persona, Tag or any other custom picker).\n * {@docCategory Pickers}\n */\nexport interface ISuggestionModel {\n /** The suggested item of the type T */\n item: T;\n\n /** Whether the suggested item is selected or not. */\n selected: boolean;\n\n /** Aria-label string for each suggested item. */\n ariaLabel?: string;\n}\n\n/**\n * Enum to help identify which suggestions action button is selected.\n * {@docCategory Pickers}\n */\nexport enum SuggestionActionType {\n /** None of the actions is selected. */\n none,\n\n /** ForceResolve action is selected. */\n forceResolve,\n\n /** SearchMore action is selected. */\n searchMore,\n}\n","import * as React from 'react';\nimport { styled } from '@fluentui/utilities';\nimport { PivotBase } from './Pivot.base';\nimport { getStyles } from './Pivot.styles';\nimport type { IPivotProps, IPivotStyleProps, IPivotStyles } from './Pivot.types';\n\n/**\n * The Pivot control and related tabs pattern are used for navigating frequently accessed,\n * distinct content categories. Pivots allow for navigation between two or more content\n * views and relies on text headers to articulate the different sections of content.\n */\nexport const Pivot: React.FunctionComponent = styled(\n PivotBase,\n getStyles,\n undefined,\n {\n scope: 'Pivot',\n },\n);\n","import React from 'react';\r\nimport { Column } from './Column';\r\nimport { Row } from './Row';\r\nexport const Title = (props) => {\r\n return props.className ? React.createElement(Row, null,\r\n React.createElement(Column, { lg: 12, md: 12, sm: 12 },\r\n React.createElement(\"div\", { style: { marginTop: '20px' } },\r\n React.createElement(\"h1\", { className: props.className }, props.text)))) : React.createElement(Row, null,\r\n React.createElement(Column, { lg: 12, md: 12, sm: 12 },\r\n React.createElement(\"div\", { style: { marginTop: '20px' } },\r\n React.createElement(\"h1\", { className: 'ms-fontSize-20 ms-fontColor-black', style: { fontWeight: 'normal' } }, props.text))));\r\n};\r\n","import { List } from 'linq.ts';\r\nimport React from 'react';\r\nimport { Icon, PrimaryButton, Stack, StackItem } from '../../fluent';\r\nexport class GenericDataTablePaginator extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n currentPage: this.props.currentPage || 1,\r\n totalPages: this.props.totalPages || 0,\r\n pages: this._getPages(this.props.currentPage || 1, this.props.totalPages || 0)\r\n };\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.currentPage != this.props.currentPage || nextProps.totalPages != this.props.totalPages) {\r\n this.setState({\r\n currentPage: nextProps.currentPage || 1,\r\n totalPages: nextProps.totalPages || 0,\r\n pages: this._getPages(nextProps.currentPage || 1, nextProps.totalPages || 0)\r\n });\r\n }\r\n }\r\n _getPages(currentPage, totalPages) {\r\n if (totalPages === 0) {\r\n return [];\r\n }\r\n let pages = [];\r\n // Llenar páginas hacia atrás\r\n let pageNumber = currentPage;\r\n let counter = 0;\r\n while (counter <= 3 && pageNumber > 0) {\r\n pageNumber--;\r\n counter++;\r\n if (pageNumber > 0) {\r\n pages.push(pageNumber);\r\n }\r\n }\r\n // LLenar páginas hacia adelante\r\n pageNumber = currentPage;\r\n counter = 0;\r\n while (counter <= 3 && pageNumber <= totalPages) {\r\n pageNumber++;\r\n counter++;\r\n if (pageNumber <= totalPages) {\r\n pages.push(pageNumber);\r\n }\r\n }\r\n // Establecer página actual\r\n pages.push(currentPage);\r\n pages = new List(pages).OrderBy(o => o).ToArray();\r\n if (currentPage > 5) {\r\n const index2 = pages.indexOf(2);\r\n if (index2 > 0) {\r\n pages.splice(index2, 1);\r\n pages = [1, -1, ...pages];\r\n }\r\n }\r\n if (currentPage < totalPages - 5) {\r\n const index2 = pages.indexOf(totalPages - 1);\r\n pages.splice(index2, 1);\r\n pages = [...pages, -1, totalPages];\r\n }\r\n return pages;\r\n }\r\n render() {\r\n const stackTokens = { childrenGap: 0 };\r\n return React.createElement(Stack, { horizontal: true, horizontalAlign: \"end\", tokens: stackTokens },\r\n React.createElement(StackItem, { onClick: this._changePage.bind(this, 1) },\r\n React.createElement(Icon, { iconName: 'DoubleChevronLeftMed' })),\r\n React.createElement(StackItem, { onClick: this._changePage.bind(this, this.state.currentPage - 1) },\r\n React.createElement(Icon, { iconName: 'ChevronLeftMed' })),\r\n this.state.pages.map(o => {\r\n return o === -1\r\n ? React.createElement(StackItem, null,\r\n React.createElement(\"div\", null, \"...\"))\r\n : React.createElement(StackItem, { onClick: this._changePage.bind(this, o) }, o === this.state.currentPage ?\r\n React.createElement(PrimaryButton, { style: { minWidth: 20 } }, o)\r\n :\r\n React.createElement(\"div\", null, o));\r\n }),\r\n React.createElement(StackItem, { onClick: this._changePage.bind(this, this.state.currentPage + 1) },\r\n React.createElement(Icon, { iconName: 'ChevronRightMed' })),\r\n React.createElement(StackItem, { onClick: this._changePage.bind(this, this.state.totalPages) },\r\n React.createElement(Icon, { iconName: 'DoubleChevronLeftMedMirrored' })));\r\n }\r\n _changePage(pageNumber) {\r\n if (this.state.currentPage != pageNumber) {\r\n if (pageNumber > 0 && pageNumber <= this.state.totalPages) {\r\n this.setState({\r\n currentPage: pageNumber,\r\n }, () => {\r\n this.props.onChange(this.state.currentPage);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport React from 'react';\r\nimport { TextField, TooltipHost, CommandBar, DetailsListLayoutMode, Pivot, PivotItem, ShimmeredDetailsList, Selection } from '@fluentui/react';\r\nimport { Subtitle } from './Subtitle';\r\nimport { Title } from './Title';\r\nimport { Column } from './Column';\r\nimport { isNull } from '../helpers/string-helper';\r\nimport { GenericDataTablePaginator } from './GenericDataTablePaginator';\r\nimport { Row } from './Row';\r\nexport class GenericDataTableComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this._selection = new Selection({\r\n onSelectionChanged: () => {\r\n this.setState({\r\n SelectedRows: this._selection.getSelection()\r\n }, () => {\r\n if (this.props.onSelectedRow) {\r\n this.props.onSelectedRow(this.state.SelectedRows);\r\n }\r\n });\r\n }\r\n });\r\n this.state = {\r\n AllowDateFilter: props.allowDateSearch !== undefined ? this.props.allowDateSearch : false,\r\n allowSearch: props.allowSearch !== undefined ? props.allowSearch : true,\r\n columns: this._processColumns(props.columns),\r\n columnsAllowedToOrder: props.columnsAllowedToOrder || [],\r\n CommandBar: this._buildCommandBar(props.commandBarItems || []),\r\n commandBarFarItems: [],\r\n emptyImageUrl: props.emptyImageUrl || 'https://ioipcorestorageaccount.blob.core.windows.net/ioip-core-static-files/images/empty-result.svg',\r\n ErrorLoading: false,\r\n ErrorLoadingMessage: '',\r\n externalCommandBarFarItems: props.commandBarFarItems,\r\n hideTools: props.hideTools !== void 0 ? props.hideTools : false,\r\n IsLoading: props.refreshOnInit === undefined || props.refreshOnInit === true,\r\n LastItem: 0,\r\n RecordsFiltered: 0,\r\n Request: { Filters: [], Length: props.itemsPerPage || 10, OrderColumn: props.initialOrderColumn || 0, Search: '', SortDirection: props.initialSortDirection || 'asc', Start: 1 },\r\n Rows: [],\r\n SelectedRows: [],\r\n SelectionMode: props.selectionMode,\r\n TotalPages: 0\r\n };\r\n }\r\n componentDidMount() {\r\n if (this.props.refreshOnInit === undefined || this.props.refreshOnInit === true) {\r\n if (typeof this.props.onRefreshDataTable === 'function') {\r\n this.props.onRefreshDataTable(this.state.Request);\r\n }\r\n else {\r\n this._refreshTable();\r\n }\r\n }\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n allowSearch: props.allowSearch || true,\r\n CommandBar: this._buildCommandBar(props.commandBarItems || []),\r\n externalCommandBarFarItems: props.commandBarFarItems || [],\r\n hideTools: props.hideTools !== void 0 ? props.hideTools : false,\r\n emptyImageUrl: props.emptyImageUrl || 'https://ioipcorestorageaccount.blob.core.windows.net/ioip-core-static-files/images/empty-result.svg',\r\n AllowDateFilter: props.allowDateSearch || false\r\n });\r\n }\r\n _buildCommandBar(items) {\r\n if (typeof this.props.hideRefreshButton === 'boolean' && this.props.hideRefreshButton) {\r\n return items;\r\n }\r\n else {\r\n return [\r\n ...items,\r\n {\r\n key: 'refresh',\r\n name: 'Actualizar',\r\n iconProps: { iconName: 'Refresh' },\r\n onClick: () => {\r\n if (typeof this.props.onRefreshDataTable === 'function') {\r\n this.props.onRefreshDataTable(this.state.Request);\r\n }\r\n else {\r\n this._refreshTable();\r\n }\r\n }\r\n }\r\n ];\r\n }\r\n }\r\n render() {\r\n const searchClassName = this.state.allowSearch && this.state.AllowDateFilter ? 'ms-Grid-col ms-sm7 ms-md8 ms-lg7' : this.state.allowSearch ? 'ms-Grid-col ms-sm9 ms-md10 ms-lg9' : 'ms-Grid-col ms-sm12 ms-md12 ms-lg12';\r\n // Crear commandbar\r\n const commandBar = React.createElement(CommandBar, { items: this.state.CommandBar, className: 'command-bar-1', farItems: this.state.commandBarFarItems });\r\n // Cuadro de búsqueda\r\n const searchBox = React.createElement(TooltipHost, { content: this.props.searchTooltip ? this.props.searchTooltip : '', calloutProps: { gapSpace: 0 } },\r\n React.createElement(TextField, { placeholder: 'Buscar...', borderless: true, className: 'mp-search', style: { height: '44px', backgroundColor: 'rgba(244, 244, 244, 0.43)' }, onChange: (_, value) => {\r\n this.setState({\r\n Request: Object.assign(Object.assign({}, this.state.Request), { Search: value })\r\n });\r\n }, iconProps: { iconName: 'Search' }, onKeyUp: (event) => {\r\n if (!this.state.IsLoading) {\r\n if (event.keyCode === 13) {\r\n this.setState({\r\n Request: Object.assign(Object.assign({}, this.state.Request), { Start: 1 })\r\n }, () => {\r\n if (this.props.customSearch) {\r\n this.props.customSearch(this.state.Request);\r\n }\r\n else {\r\n this._refreshTable();\r\n }\r\n });\r\n }\r\n }\r\n } }));\r\n const onRenderFooter = (dProps) => {\r\n const columns = dProps.columns;\r\n if (columns.length > 0 && columns[columns.length - 1].key === '-empty-') {\r\n columns.splice(columns.length - 1, 1);\r\n }\r\n return React.createElement(\"div\", { role: \"presentation\" },\r\n React.createElement(\"div\", { role: \"presentation\", className: \"ms-FocusZone focusZone_f2db561a\", \"data-focuszone-id\": \"FocusZone173\" },\r\n React.createElement(\"div\", { className: \"ms-SelectionZone\", role: \"presentation\" },\r\n React.createElement(\"div\", { role: \"presentation\", className: \"ms-List\" },\r\n React.createElement(\"div\", { className: \"ms-List-surface\", role: \"presentation\" },\r\n React.createElement(\"div\", { className: \"ms-List-page\", role: \"presentation\" },\r\n React.createElement(\"div\", { role: \"presentation\", className: \"ms-List-cell\", \"data-list-index\": \"0\", \"data-automationid\": \"ListCell\" },\r\n React.createElement(\"div\", { role: \"row\", className: \"ms-FocusZone ms-DetailsRow css-230 root_ee38960f owner_8478e118\", \"data-is-focusable\": \"true\", \"data-selection-index\": \"0\", \"data-item-index\": \"0\", \"aria-aria-rowindex\": \"1\", \"data-is-draggable\": \"false\", \"data-automationid\": \"DetailsRow\", \"aria-selected\": \"false\", \"data-focuszone-id\": \"FocusZone177\" },\r\n React.createElement(\"div\", { role: \"gridcell\", \"arial-colindex\": \"1\", \"data-selection-toggle\": \"true\", className: \"ms-DetailsRow-cell ms-DetailsRow-cellCheck owner_8478e118 cell_ee38960f checkCell_ee38960f\" },\r\n React.createElement(\"div\", { role: \"checkbox\", className: \"ms-DetailsRow-check check_8478e118 checkHost_904a6025\", \"aria-checked\": \"false\", \"data-selection-toggle\": \"true\", \"data-automationid\": \"DetailsRowCheck\" })),\r\n React.createElement(\"div\", { className: \"ms-DetailsRow-fields fields_ee38960f\", \"data-automationid\": \"DetailsRowFields\", role: \"presentation\" }, dProps.columns.map(column => React.createElement(\"div\", { role: \"gridcell\", \"aria-aria-colindex\": \"2\", className: \"ms-DetailsRow-cell cell_ee38960f\", \"data-automationid\": \"DetailsRowCell\", \"data-automation-key\": \"DepartamentoDestino\", style: { width: (column.currentWidth + 16) + 'px' } }, (typeof this.props.onRenderFooter === 'function' && this.props.onRenderFooter(column)) || ''))),\r\n React.createElement(\"span\", { role: \"checkbox\", className: \"checkCover_ee38960f\", \"aria-checked\": \"false\", \"data-selection-toggle\": \"true\" })))))))));\r\n };\r\n // DetailList\r\n const list = React.createElement(ShimmeredDetailsList, { items: this.state.Rows, columns: this.state.columns, selectionMode: this.state.SelectionMode, layoutMode: DetailsListLayoutMode.justified, isHeaderVisible: true, onShouldVirtualize: () => false, enableShimmer: this.state.IsLoading, selectionPreservedOnEmptyClick: true, selection: this._selection, shimmerLines: this.state.Rows.length || this.state.Request.Length, className: this.props.hideHeaders === true ? 'detail-list-no-header' : '', onRenderDetailsFooter: this.props.showFooter ? onRenderFooter : void 0, listProps: {} });\r\n // Renderizar tools\r\n const tools = this.props.onRenderTools !== void 0 ? this.props.onRenderTools() : void 0;\r\n const paginator = React.createElement(\"div\", { className: 'ms-Grid-row' },\r\n this.state.TotalPages > 0 && React.createElement(\"div\", { className: 'ms-Grid-col ms-sm12 ms-md6 ms-lg6', style: { paddingTop: '12px' } }, !this.state.IsLoading && React.createElement(\"span\", null,\r\n \"Mostrando \",\r\n ((this.state.Request.Start - 1) * this.state.Request.Length) + 1,\r\n \" al \",\r\n this.state.LastItem,\r\n \" de \",\r\n this.state.RecordsFiltered)),\r\n this.state.TotalPages > 0 && React.createElement(\"div\", { className: 'ms-Grid-col ms-sm12 ms-md6 ms-lg6', style: { textAlign: 'right' } },\r\n React.createElement(GenericDataTablePaginator, { currentPage: this.state.Request.Start, totalPages: this.state.TotalPages, onChange: (page) => {\r\n this.setState({\r\n Request: Object.assign(Object.assign({}, this.state.Request), { Start: page })\r\n }, () => this._refreshTable());\r\n } })));\r\n return React.createElement(React.Fragment, null,\r\n this.props.title && this.props.title.trim().length > 0\r\n && React.createElement(React.Fragment, null, this.props.principalForm\r\n ? React.createElement(Title, { className: this.props.titleClassName, text: this.props.title ? this.props.title : '' })\r\n : React.createElement(Subtitle, { className: this.props.subtitleClassName, text: this.props.title ? this.props.title : '' })),\r\n tools,\r\n !this.state.hideTools && React.createElement(Row, null,\r\n React.createElement(\"div\", { className: searchClassName, style: this.props.bodyStyle || { padding: '0px', paddingLeft: '8px' } }, commandBar),\r\n this.state.allowSearch && React.createElement(\"div\", { className: 'ms-Grid-col ms-sm3 ms-md2 ms-lg3', style: { padding: '0px' } }, searchBox)),\r\n React.createElement(Row, null,\r\n this.props.pivotItems !== void 0 && this.props.pivotItems.length > 0 &&\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(Pivot, { onLinkClick: this._pivotItemClick.bind(this) }, this.props.pivotItems.map(o => React.createElement(PivotItem, { key: o, headerText: o }, (this.state.Rows.length > 0 || this.state.IsLoading) && React.createElement(\"div\", { style: this.props.bodyStyle || {} }, list))))),\r\n (this.props.pivotItems === void 0 || this.props.pivotItems.length === 0) && React.createElement(Column, { size: 12 }, (this.state.Rows.length > 0 || this.state.IsLoading) && React.createElement(\"div\", { style: this.props.bodyStyle || {} }, list))),\r\n !this.state.IsLoading && this.state.Rows.length === 0 && React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(\"div\", { style: { textAlign: 'center', userSelect: 'none' } },\r\n (this.props.hideEmptyImage === undefined || this.props.hideEmptyImage === false) && React.createElement(\"div\", null,\r\n React.createElement(\"img\", { style: {\r\n height: '128px',\r\n width: '128px'\r\n }, src: this.state.emptyImageUrl, alt: \"Sin Resultados\" })),\r\n React.createElement(\"div\", null,\r\n React.createElement(\"span\", { style: { color: '#585858' } }, this.props.emptyMesssage || 'No hay datos para mostrar en este momento'))))),\r\n paginator);\r\n }\r\n _OnChangeInitialDate(newValue) {\r\n if (!this.state.IsLoading) {\r\n if (newValue != null) {\r\n if (this.state.Request.InitialDate === newValue) {\r\n return;\r\n }\r\n else {\r\n this.setState({\r\n Request: Object.assign(Object.assign({}, this.state.Request), { InitialDate: newValue })\r\n }, () => {\r\n if (this.props.customSearch) {\r\n this.props.customSearch(this.state.Request);\r\n }\r\n else {\r\n this._refreshTable();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n ;\r\n _OnChangeEndDate(value) {\r\n if (!this.state.IsLoading) {\r\n if (value != null) {\r\n if (this.state.Request.EndDate === value) {\r\n return;\r\n }\r\n else {\r\n this.setState({\r\n Request: Object.assign(Object.assign({}, this.state.Request), { EndDate: value })\r\n }, () => {\r\n if (this.props.customSearch) {\r\n this.props.customSearch(this.state.Request);\r\n }\r\n else {\r\n this._refreshTable();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n ;\r\n _processColumns(columns) {\r\n if (columns === void 0) {\r\n columns = [];\r\n }\r\n columns = columns.filter(o => o != null);\r\n const columnClick = (column) => {\r\n column.onColumnClick = () => {\r\n const allowed = this.state.columnsAllowedToOrder || [];\r\n if (allowed.length === 0 || allowed.includes(column.key)) {\r\n const columns = this.state.columns.slice();\r\n const index = columns.findIndex(o => o.key === column.key);\r\n columns[index].isSortedDescending = !columns[index].isSortedDescending;\r\n columns[index].isSorted = true;\r\n columns.filter(o => o.key !== columns[index].key).forEach(o => o.isSorted = false);\r\n this.setState({\r\n Request: Object.assign(Object.assign({}, this.state.Request), { OrderColumn: this.state.columns.findIndex(o => o.key === column.key), SortDirection: column.isSortedDescending ? 'desc' : 'asc' }),\r\n columns: columns\r\n }, () => this._refreshTable());\r\n }\r\n };\r\n };\r\n for (let i = 0; i < columns.length; i++) {\r\n columnClick(columns[i]);\r\n }\r\n return columns;\r\n }\r\n clearSelection() {\r\n this._selection.setAllSelected(false);\r\n }\r\n _refreshTable() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.props.procesox === true && this.props.runtime === false) {\r\n this.setState({\r\n IsLoading: false,\r\n ErrorLoading: false,\r\n ErrorLoadingMessage: ''\r\n });\r\n return;\r\n }\r\n this._selection.setAllSelected(false);\r\n this.setState({\r\n IsLoading: true\r\n });\r\n let request = yield this._processRequest();\r\n // Actualizar datos del DetailList\r\n let func = this.props.paginationMethodName && this.props.paginationMethodName !== '' ?\r\n this.props.service[this.props.paginationMethodName] :\r\n this.props.service.paginateAsync;\r\n if (func === undefined) {\r\n throw new Error('El servicio proporcionado no esta implementado en JS');\r\n }\r\n let args = [];\r\n if (this.props.paginationMethodArgs) {\r\n args = args.concat(this.props.paginationMethodArgs());\r\n }\r\n args.push(request);\r\n func.apply(this.props.service, args).then((result) => {\r\n // Verificar datos de la respuesta\r\n let lastItem = ((request.Start > 0 ? request.Start - 1 : request.Start) * request.Length) + request.Length;\r\n if (lastItem > result.RecordsFiltered) {\r\n lastItem = result.RecordsFiltered;\r\n }\r\n else if (this.props.hideTools !== void 0) {\r\n lastItem = result.RecordsFiltered;\r\n }\r\n // Actualizar datos\r\n this.setState({\r\n IsLoading: false,\r\n TotalPages: request.Length > 0 && this.props.hideTools === void 0 ? Math.ceil(result.RecordsFiltered / request.Length) : 0,\r\n Rows: result.Data,\r\n RecordsFiltered: result.RecordsFiltered,\r\n LastItem: lastItem\r\n }, () => {\r\n this.setState({\r\n commandBarFarItems: this._buildCommandBarFarItems()\r\n });\r\n if (this.props.onAfterRefresh) {\r\n this.props.onAfterRefresh(result);\r\n }\r\n });\r\n }).catch(() => {\r\n this.setState({\r\n IsLoading: false,\r\n ErrorLoading: true,\r\n ErrorLoadingMessage: 'Se ha producido un error al cargar los datos'\r\n });\r\n });\r\n });\r\n }\r\n reset() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.setState({\r\n IsLoading: false,\r\n TotalPages: 0,\r\n Rows: [],\r\n RecordsFiltered: 0,\r\n LastItem: 0\r\n }, () => {\r\n this.setState({\r\n commandBarFarItems: this._buildCommandBarFarItems()\r\n });\r\n });\r\n });\r\n }\r\n getDataTableRequest() {\r\n return this.state.Request;\r\n }\r\n get length() {\r\n var _a, _b;\r\n return ((_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a.Rows) === null || _b === void 0 ? void 0 : _b.length) || 0;\r\n }\r\n _processRequest() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // Crear solicitud\r\n let request = Object.assign({}, this.state.Request);\r\n request.Filters = [];\r\n // Ejecutar evento OnBeforeSend\r\n if (this.props.onBeforeSend) {\r\n request = yield this.props.onBeforeSend(request);\r\n }\r\n if (!isNull(request.Filters)) {\r\n for (let i = 0; i < request.Filters.length; i++) {\r\n const element = request.Filters[i];\r\n if (!isNull(element.Value)) {\r\n element.Value = String(element.Value);\r\n }\r\n }\r\n }\r\n return request;\r\n });\r\n }\r\n _buildCommandBarFarItems() {\r\n const items = [];\r\n // Agregar elementos personalizados\r\n if (this.state.externalCommandBarFarItems != null && this.state.externalCommandBarFarItems.length > 0) {\r\n for (let i = 0; i < this.state.externalCommandBarFarItems.length; i++) {\r\n const farItem = this.state.externalCommandBarFarItems[i];\r\n items.push(farItem);\r\n }\r\n }\r\n // Agregar menú de cantidad de elementos a mostrar\r\n items.push({\r\n key: this.state.Request.Length.toString(),\r\n iconProps: { iconName: 'NumberedList' },\r\n name: this.state.Request.Length.toString(),\r\n subMenuProps: {\r\n items: [\r\n {\r\n key: '10',\r\n name: '10',\r\n onClick: () => this._changePaginationLength(10)\r\n },\r\n {\r\n key: '15',\r\n name: '15',\r\n onClick: () => this._changePaginationLength(15)\r\n },\r\n {\r\n key: '20',\r\n name: '20',\r\n onClick: () => this._changePaginationLength(20)\r\n },\r\n {\r\n key: '30',\r\n name: '30',\r\n onClick: () => this._changePaginationLength(30)\r\n },\r\n {\r\n key: '50',\r\n name: '50',\r\n onClick: () => this._changePaginationLength(50)\r\n }\r\n ]\r\n }\r\n });\r\n // items.push({\r\n // key: 'dt.settings',\r\n // iconProps: { iconName: 'Settings' },\r\n // name: '',\r\n // });\r\n return items;\r\n }\r\n _changePaginationLength(length) {\r\n this.setState({\r\n Request: Object.assign(Object.assign({}, this.state.Request), { Length: length, Start: 1 }),\r\n }, () => {\r\n if (typeof this.props.onRefreshDataTable === 'function') {\r\n this.props.onRefreshDataTable(this.state.Request);\r\n }\r\n else {\r\n this._refreshTable();\r\n }\r\n this.setState({\r\n commandBarFarItems: this._buildCommandBarFarItems()\r\n });\r\n });\r\n }\r\n _pivotItemClick(item) {\r\n if (this.props.onChangePivotItem) {\r\n this.props.onChangePivotItem(item.props.headerText);\r\n }\r\n }\r\n search(value) {\r\n this.setState({\r\n Request: Object.assign(Object.assign({}, this.state.Request), { Start: 1, Search: value })\r\n }, () => this._refreshTable());\r\n }\r\n}\r\n","import { useState, useEffect } from \"react\";\r\nimport { Panel, DefaultButton, PrimaryButton } from \"../../fluent\";\r\nimport { Column } from \"./Column\";\r\nimport { Grid } from \"./Grid\";\r\nimport { Row } from \"./Row\";\r\nimport React from \"react\";\r\nexport const StandarPanel = (props) => {\r\n const [show, setShow] = useState(props.isOpen);\r\n const [acceptText, setAcceptText] = useState(props.acceptButtonText);\r\n useEffect(() => {\r\n setShow(props.isOpen);\r\n setAcceptText(props.acceptButtonText);\r\n }, [props]);\r\n const showAcceptButton = props.hideAcceptButton == null || typeof props.hideAcceptButton === 'boolean' && !props.hideAcceptButton;\r\n return React.createElement(Panel, { isOpen: show, type: props.type, headerText: props.headerText, hasCloseButton: false, onRenderFooterContent: () => (React.createElement(Grid, null,\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12, style: { textAlign: 'right' } }, typeof props.onRenderFooter === 'function'\r\n ? props.onRenderFooter()\r\n : React.createElement(React.Fragment, null,\r\n showAcceptButton && React.createElement(PrimaryButton, { text: acceptText || 'Aceptar', onClick: props.onAccept }),\r\n React.createElement(DefaultButton, { text: props.closeButtonText || 'Volver', onClick: props.onClose })))))), isFooterAtBottom: true }, props.onRender());\r\n};\r\n","import React from 'react';\r\nimport { PanelType } from '../../fluent';\r\nimport { StandarPanel } from './StandarPanel';\r\nimport { CodeEditor } from './CodeEditor';\r\nexport class JavaScriptEditorPanel extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n code: this.props.code || '',\r\n show: this.props.show || false,\r\n title: this.props.title || 'Editor JS'\r\n };\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({\r\n code: nextProps.code,\r\n show: nextProps.show,\r\n title: nextProps.title || 'Editor JS',\r\n });\r\n }\r\n render() {\r\n return React.createElement(StandarPanel, { headerText: this.state.title + ' JS', isOpen: this.state.show, type: PanelType.large, onAccept: () => {\r\n this.props.onAccept(this.state.code);\r\n this.props.onClose();\r\n }, onClose: () => {\r\n this.props.onClose();\r\n }, onRender: () => React.createElement(CodeEditor, { value: this.state.code || '', onChanged: json => {\r\n this.setState({\r\n code: json\r\n }, () => this.props.onChange(this.state.code));\r\n }, language: 'javascript' }) });\r\n }\r\n}\r\n","import React from 'react';\r\nimport { PrimaryButton, DefaultButton, Panel, PanelType } from '../../fluent';\r\nimport { CodeEditor } from './CodeEditor';\r\nexport class JsonEditorPanel extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n code: props.code || '',\r\n show: props.show || false,\r\n title: props.title || 'JSON'\r\n };\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n code: props.code || '',\r\n show: props.show || false,\r\n title: props.title || 'JSON'\r\n });\r\n }\r\n render() {\r\n return React.createElement(Panel, { isOpen: this.state.show, type: PanelType.large, headerText: this.state.title, hasCloseButton: false, isFooterAtBottom: true, onRenderFooterContent: () => React.createElement(\"div\", null,\r\n React.createElement(\"div\", { className: 'ms-Grid-row' },\r\n React.createElement(\"div\", { className: 'ms-Grid-col ms-u-sm12', style: { textAlign: 'right' } },\r\n React.createElement(PrimaryButton, { text: 'Aceptar', primary: true, onClick: () => {\r\n let newProps = undefined;\r\n try {\r\n newProps = JSON.parse(this.state.code);\r\n }\r\n catch (error) {\r\n if (this.props.onValidationError) {\r\n this.props.onValidationError();\r\n }\r\n return;\r\n }\r\n this.props.onAccept(JSON.stringify(newProps, undefined, 2));\r\n this.props.onClose();\r\n } }),\r\n React.createElement(\"span\", null, \"\\u00A0\\u00A0\"),\r\n React.createElement(DefaultButton, { text: 'Volver', primary: false, onClick: () => this.props.onClose() })))), closeButtonAriaLabel: 'Cerrar' },\r\n React.createElement(CodeEditor, { value: this.state.code || '', onChanged: json => {\r\n this.setState({\r\n code: json\r\n }, () => this.props.onChange(this.state.code));\r\n }, language: 'json' }));\r\n }\r\n}\r\n","import * as React from 'react';\nimport { DelayedRender, classNamesFunction, getNativeProps, divProperties } from '../../Utilities';\nimport type { IAnnouncedProps, IAnnouncedStyles } from './Announced.types';\n\nconst getClassNames = classNamesFunction<{}, IAnnouncedStyles>();\n\n/**\n * {@docCategory Announced}\n */\nexport class AnnouncedBase extends React.Component {\n public static defaultProps: Partial = {\n 'aria-live': 'polite',\n };\n\n public render(): JSX.Element {\n const { message, styles, as: Root = 'div', className } = this.props;\n\n const classNames = getClassNames(styles, { className });\n\n return (\n \n \n
      {message}
      \n
      \n
      \n );\n }\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { AnnouncedBase } from './Announced.base';\nimport { getStyles } from './Announced.styles';\nimport type { IAnnouncedProps, IAnnouncedStyles } from './Announced.types';\n\nexport const Announced: React.FunctionComponent = styled(\n AnnouncedBase,\n getStyles,\n);\n","import { hiddenContentStyle } from '../../Styling';\nimport type { IStyleFunction } from '../../Utilities';\nimport type { IAnnouncedStyles, IAnnouncedStyleProps } from './Announced.types';\n\nexport const getStyles: IStyleFunction = props => {\n return {\n root: props.className,\n screenReaderText: hiddenContentStyle,\n };\n};\n","/* eslint-disable */\nimport { loadStyles } from '@microsoft/load-themed-styles';\nloadStyles([{\"rawString\":\".root_8c91000a{min-width:260px}.suggestionsItem_8c91000a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;position:relative;overflow:hidden}.suggestionsItem_8c91000a:hover{background:\"},{\"theme\":\"neutralLighter\",\"defaultValue\":\"#f3f2f1\"},{\"rawString\":\"}.suggestionsItem_8c91000a:hover .closeButton_8c91000a{display:block}.suggestionsItem_8c91000a.suggestionsItemIsSuggested_8c91000a{background:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.suggestionsItem_8c91000a.suggestionsItemIsSuggested_8c91000a:hover{background:\"},{\"theme\":\"neutralTertiaryAlt\",\"defaultValue\":\"#c8c6c4\"},{\"rawString\":\"}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.suggestionsItem_8c91000a.suggestionsItemIsSuggested_8c91000a:hover{background:Highlight;color:HighlightText}}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.suggestionsItem_8c91000a.suggestionsItemIsSuggested_8c91000a{background:Highlight;color:HighlightText;-ms-high-contrast-adjust:none}}.suggestionsItem_8c91000a.suggestionsItemIsSuggested_8c91000a .closeButton_8c91000a:hover{background:\"},{\"theme\":\"neutralTertiary\",\"defaultValue\":\"#a19f9d\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralPrimary\",\"defaultValue\":\"#323130\"},{\"rawString\":\"}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.suggestionsItem_8c91000a.suggestionsItemIsSuggested_8c91000a .itemButton_8c91000a{color:HighlightText}}.suggestionsItem_8c91000a .closeButton_8c91000a{display:none;color:\"},{\"theme\":\"neutralSecondary\",\"defaultValue\":\"#605e5c\"},{\"rawString\":\"}.suggestionsItem_8c91000a .closeButton_8c91000a:hover{background:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.actionButton_8c91000a{background-color:transparent;border:0;cursor:pointer;margin:0;position:relative;border-top:1px solid \"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";height:40px;width:100%;font-size:12px}[dir=ltr] .actionButton_8c91000a{padding-left:8px}[dir=rtl] .actionButton_8c91000a{padding-right:8px}html[dir=ltr] .actionButton_8c91000a{text-align:left}html[dir=rtl] .actionButton_8c91000a{text-align:right}.actionButton_8c91000a:hover{background-color:\"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\";cursor:pointer}.actionButton_8c91000a:active,.actionButton_8c91000a:focus{background-color:\"},{\"theme\":\"themeLight\",\"defaultValue\":\"#c7e0f4\"},{\"rawString\":\"}.actionButton_8c91000a .ms-Button-icon{font-size:16px;width:25px}.actionButton_8c91000a .ms-Button-label{margin:0 4px 0 9px}html[dir=rtl] .actionButton_8c91000a .ms-Button-label{margin:0 9px 0 4px}.buttonSelected_8c91000a{background-color:\"},{\"theme\":\"themeLight\",\"defaultValue\":\"#c7e0f4\"},{\"rawString\":\"}.suggestionsTitle_8c91000a{padding:0 12px;color:\"},{\"theme\":\"themePrimary\",\"defaultValue\":\"#0078d4\"},{\"rawString\":\";font-size:12px;line-height:40px;border-bottom:1px solid \"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.suggestionsContainer_8c91000a{overflow-y:auto;overflow-x:hidden;max-height:300px;border-bottom:1px solid \"},{\"theme\":\"neutralLight\",\"defaultValue\":\"#edebe9\"},{\"rawString\":\"}.suggestionsNone_8c91000a{text-align:center;color:#797775;font-size:12px;line-height:30px}.suggestionsSpinner_8c91000a{margin:5px 0;white-space:nowrap;line-height:20px;font-size:12px}html[dir=ltr] .suggestionsSpinner_8c91000a{padding-left:14px}html[dir=rtl] .suggestionsSpinner_8c91000a{padding-right:14px}html[dir=ltr] .suggestionsSpinner_8c91000a{text-align:left}html[dir=rtl] .suggestionsSpinner_8c91000a{text-align:right}.suggestionsSpinner_8c91000a .ms-Spinner-circle{display:inline-block;vertical-align:middle}.suggestionsSpinner_8c91000a .ms-Spinner-label{display:inline-block;margin:0 10px 0 16px;vertical-align:middle}html[dir=rtl] .suggestionsSpinner_8c91000a .ms-Spinner-label{margin:0 16px 0 10px}.itemButton_8c91000a.itemButton_8c91000a{width:100%;padding:0;min-width:0;height:100%}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.itemButton_8c91000a.itemButton_8c91000a{color:WindowText}}.itemButton_8c91000a.itemButton_8c91000a:hover{color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.closeButton_8c91000a.closeButton_8c91000a{padding:0 4px;height:auto;width:32px}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.closeButton_8c91000a.closeButton_8c91000a{color:WindowText}}.closeButton_8c91000a.closeButton_8c91000a:hover{background:\"},{\"theme\":\"neutralTertiaryAlt\",\"defaultValue\":\"#c8c6c4\"},{\"rawString\":\";color:\"},{\"theme\":\"neutralDark\",\"defaultValue\":\"#201f1e\"},{\"rawString\":\"}.suggestionsAvailable_8c91000a{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}\"}]);\nexport const root = \"root_8c91000a\";\nexport const suggestionsItem = \"suggestionsItem_8c91000a\";\nexport const closeButton = \"closeButton_8c91000a\";\nexport const suggestionsItemIsSuggested = \"suggestionsItemIsSuggested_8c91000a\";\nexport const itemButton = \"itemButton_8c91000a\";\nexport const actionButton = \"actionButton_8c91000a\";\nexport const buttonSelected = \"buttonSelected_8c91000a\";\nexport const suggestionsTitle = \"suggestionsTitle_8c91000a\";\nexport const suggestionsContainer = \"suggestionsContainer_8c91000a\";\nexport const suggestionsNone = \"suggestionsNone_8c91000a\";\nexport const suggestionsSpinner = \"suggestionsSpinner_8c91000a\";\nexport const suggestionsAvailable = \"suggestionsAvailable_8c91000a\";","import * as React from 'react';\n\nimport { classNamesFunction, css, initializeComponentRef } from '../../../Utilities';\nimport { CommandButton, IconButton } from '../../../Button';\nimport * as stylesImport from './Suggestions.scss';\nimport type { IProcessedStyleSet } from '../../../Styling';\nimport type { ISuggestionItemProps, ISuggestionsItemStyleProps, ISuggestionsItemStyles } from './SuggestionsItem.types';\n\nconst legacyStyles: any = stylesImport;\n\nconst getClassNames = classNamesFunction();\n\n/**\n * {@docCategory Pickers}\n */\nexport class SuggestionsItem extends React.Component, {}> {\n constructor(props: ISuggestionItemProps) {\n super(props);\n\n initializeComponentRef(this);\n }\n\n public render(): JSX.Element {\n const {\n suggestionModel,\n RenderSuggestion,\n onClick,\n className,\n id,\n onRemoveItem,\n isSelectedOverride,\n removeButtonAriaLabel,\n styles,\n theme,\n removeButtonIconProps,\n } = this.props;\n\n // TODO\n // Clean this up by leaving only the first part after removing support for SASS.\n // Currently we can not remove the SASS styles from SuggestionsItem class because it\n // might be used by consumers separately from pickers extending from BasePicker\n // and have not used the new 'styles' prop. Because it's expecting a type parameter,\n // we can not use the 'styled' function without adding some helpers which can break\n // downstream consumers who did not use the new helpers.\n // We check for 'styles' prop which is going to be injected by the 'styled' HOC\n // in Suggestions when the typed SuggestionsItem class is ready to be rendered. If the\n // check passes we can use the CSS-in-JS styles. If the check fails (ex: custom picker),\n // then we just use the old SASS styles instead.\n const classNames: Partial> = styles\n ? getClassNames(styles, {\n theme: theme!,\n className,\n suggested: suggestionModel.selected || isSelectedOverride,\n })\n : {\n root: css(\n 'ms-Suggestions-item',\n legacyStyles.suggestionsItem,\n {\n ['is-suggested ' + legacyStyles.suggestionsItemIsSuggested]:\n suggestionModel.selected || isSelectedOverride,\n },\n className,\n ),\n itemButton: css('ms-Suggestions-itemButton', legacyStyles.itemButton),\n closeButton: css('ms-Suggestions-closeButton', legacyStyles.closeButton),\n };\n\n return (\n
      \n \n {RenderSuggestion(suggestionModel.item, this.props)}\n \n {this.props.showRemoveButton ? (\n \n ) : null}\n
      \n );\n }\n}\n","import { getGlobalClassNames, HighContrastSelector, getHighContrastNoAdjustStyle } from '../../../Styling';\nimport { IsFocusVisibleClassName } from '../../../Utilities';\nimport type { ISuggestionsItemStyleProps, ISuggestionsItemStyles } from './SuggestionsItem.types';\n\nexport const SuggestionsItemGlobalClassNames = {\n root: 'ms-Suggestions-item',\n itemButton: 'ms-Suggestions-itemButton',\n closeButton: 'ms-Suggestions-closeButton',\n isSuggested: 'is-suggested',\n};\n\nexport function getStyles(props: ISuggestionsItemStyleProps): ISuggestionsItemStyles {\n const { className, theme, suggested } = props;\n\n const { palette, semanticColors } = theme;\n\n const classNames = getGlobalClassNames(SuggestionsItemGlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n {\n display: 'flex',\n alignItems: 'stretch',\n boxSizing: 'border-box',\n width: '100%',\n position: 'relative',\n selectors: {\n '&:hover': {\n background: semanticColors.menuItemBackgroundHovered,\n },\n '&:hover .ms-Suggestions-closeButton': {\n display: 'block',\n },\n },\n },\n suggested && {\n selectors: {\n [`.${IsFocusVisibleClassName} &`]: {\n selectors: {\n [`.${classNames.closeButton}`]: {\n display: 'block',\n background: semanticColors.menuItemBackgroundPressed,\n },\n },\n },\n ':after': {\n pointerEvents: 'none',\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n border: `1px solid ${theme.semanticColors.focusBorder}`,\n },\n },\n },\n className,\n ],\n itemButton: [\n classNames.itemButton,\n {\n width: '100%',\n padding: 0,\n border: 'none',\n height: '100%',\n // Force the item button to be collapsible so it can always shrink\n // to accommodate the close button as a peer in its flex container.\n minWidth: 0,\n // Require for IE11 to truncate the component.\n overflow: 'hidden',\n selectors: {\n [HighContrastSelector]: {\n color: 'WindowText',\n selectors: {\n ':hover': {\n background: 'Highlight',\n color: 'HighlightText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ':hover': {\n color: semanticColors.menuItemTextHovered,\n },\n },\n },\n suggested && [\n classNames.isSuggested,\n {\n background: semanticColors.menuItemBackgroundPressed,\n selectors: {\n ':hover': {\n background: semanticColors.menuDivider,\n },\n [HighContrastSelector]: {\n background: 'Highlight',\n color: 'HighlightText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n ],\n closeButton: [\n classNames.closeButton,\n {\n display: 'none',\n color: palette.neutralSecondary,\n padding: '0 4px',\n height: 'auto',\n width: 32,\n selectors: {\n ':hover, :active': {\n background: palette.neutralTertiaryAlt,\n color: palette.neutralDark,\n },\n [HighContrastSelector]: {\n color: 'WindowText',\n },\n },\n },\n suggested && {\n [`.${IsFocusVisibleClassName} &`]: {\n selectors: {\n ':hover, :active': {\n background: palette.neutralTertiary,\n },\n },\n },\n selectors: {\n ':hover, :active': {\n background: palette.neutralTertiary,\n color: palette.neutralPrimary,\n },\n },\n },\n ],\n };\n}\n","import * as React from 'react';\n\nimport { initializeComponentRef, KeyCodes, classNamesFunction, css, styled } from '../../../Utilities';\nimport { CommandButton } from '../../../Button';\nimport { Spinner } from '../../../Spinner';\nimport { Announced } from '../../../Announced';\nimport { SuggestionActionType } from './Suggestions.types';\nimport { SuggestionsItem } from './SuggestionsItem';\nimport { getStyles as suggestionsItemStyles } from './SuggestionsItem.styles';\nimport * as stylesImport from './Suggestions.scss';\nimport type { IStyleFunctionOrObject } from '../../../Utilities';\nimport type { IProcessedStyleSet } from '../../../Styling';\nimport type { IButton } from '../../../Button';\nimport type { ISpinnerStyleProps, ISpinnerStyles } from '../../../Spinner';\nimport type { ISuggestionsProps, ISuggestionsStyleProps, ISuggestionsStyles } from './Suggestions.types';\nimport type { ISuggestionItemProps, ISuggestionsItemStyleProps, ISuggestionsItemStyles } from './SuggestionsItem.types';\n\nconst legacyStyles: any = stylesImport;\n\nconst getClassNames = classNamesFunction();\n\nexport interface ISuggestionsState {\n selectedActionType: SuggestionActionType;\n}\n\nconst StyledSuggestionsItem = styled, ISuggestionsItemStyleProps, ISuggestionsItemStyles>(\n SuggestionsItem,\n suggestionsItemStyles,\n undefined,\n {\n scope: 'SuggestionItem',\n },\n);\n\n/**\n * {@docCategory Pickers}\n */\nexport class Suggestions extends React.Component, ISuggestionsState> {\n protected _forceResolveButton = React.createRef();\n protected _searchForMoreButton = React.createRef();\n protected _selectedElement = React.createRef();\n protected _scrollContainer = React.createRef();\n private activeSelectedElement: HTMLDivElement | null;\n private _classNames: Partial>;\n\n constructor(suggestionsProps: ISuggestionsProps) {\n super(suggestionsProps);\n\n initializeComponentRef(this);\n\n this.state = {\n selectedActionType: SuggestionActionType.none,\n };\n }\n\n public componentDidMount(): void {\n this.scrollSelected();\n this.activeSelectedElement = this._selectedElement ? this._selectedElement.current : null;\n }\n\n public componentDidUpdate(): void {\n // Only scroll to selected element if the selected element has changed. Otherwise do nothing.\n // This prevents some odd behavior where scrolling the active element out of view and clicking on a selected element\n // will trigger a focus event and not give the clicked element the click.\n if (this._selectedElement.current && this.activeSelectedElement !== this._selectedElement.current) {\n this.scrollSelected();\n this.activeSelectedElement = this._selectedElement.current;\n }\n }\n\n public render(): JSX.Element {\n const {\n forceResolveText,\n mostRecentlyUsedHeaderText,\n searchForMoreIcon,\n searchForMoreText,\n className,\n moreSuggestionsAvailable,\n noResultsFoundText,\n suggestions,\n isLoading,\n isSearching,\n loadingText,\n onRenderNoResultFound,\n searchingText,\n isMostRecentlyUsedVisible,\n resultsMaximumNumber,\n resultsFooterFull,\n resultsFooter,\n isResultsFooterVisible = true,\n suggestionsHeaderText,\n suggestionsClassName,\n theme,\n styles,\n suggestionsListId,\n suggestionsContainerAriaLabel,\n } = this.props;\n\n // TODO\n // Clean this up by leaving only the first part after removing support for SASS.\n // Currently we can not remove the SASS styles from Suggestions class because it\n // might be used by consumers separately from pickers extending from BasePicker\n // and have not used the new 'styles' prop. Because it's expecting a type parameter,\n // we can not use the 'styled' function without adding some helpers which can break\n // downstream consumers who did not use the new helpers.\n // We check for 'styles' prop which is going to be injected by the 'styled' HOC\n // in BasePicker when the typed Suggestions class is ready to be rendered. If the check\n // passes we can use the CSS-in-JS styles. If the check fails (ex: custom picker),\n // then we just use the old SASS styles instead.\n this._classNames = styles\n ? getClassNames(styles, {\n theme: theme!,\n className,\n suggestionsClassName,\n forceResolveButtonSelected: this.state.selectedActionType === SuggestionActionType.forceResolve,\n searchForMoreButtonSelected: this.state.selectedActionType === SuggestionActionType.searchMore,\n })\n : {\n root: css('ms-Suggestions', className, legacyStyles.root),\n title: css('ms-Suggestions-title', legacyStyles.suggestionsTitle),\n searchForMoreButton: css('ms-SearchMore-button', legacyStyles.actionButton, {\n ['is-selected ' + legacyStyles.buttonSelected]:\n this.state.selectedActionType === SuggestionActionType.searchMore,\n }),\n forceResolveButton: css('ms-forceResolve-button', legacyStyles.actionButton, {\n ['is-selected ' + legacyStyles.buttonSelected]:\n this.state.selectedActionType === SuggestionActionType.forceResolve,\n }),\n suggestionsAvailable: css('ms-Suggestions-suggestionsAvailable', legacyStyles.suggestionsAvailable),\n suggestionsContainer: css(\n 'ms-Suggestions-container',\n legacyStyles.suggestionsContainer,\n suggestionsClassName,\n ),\n noSuggestions: css('ms-Suggestions-none', legacyStyles.suggestionsNone),\n };\n\n const spinnerStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.spinner as IStyleFunctionOrObject)\n : undefined;\n\n // TODO: cleanup after refactor of pickers to composition pattern and remove SASS support.\n const spinnerClassNameOrStyles = styles\n ? { styles: spinnerStyles }\n : {\n className: css('ms-Suggestions-spinner', legacyStyles.suggestionsSpinner),\n };\n\n const noResults = () => {\n const defaultRender = () => {\n return
      {noResultsFoundText}
      ;\n };\n\n return (\n // This ID can be used by the parent to set aria-activedescendant to this\n
      \n {onRenderNoResultFound ? onRenderNoResultFound(undefined, defaultRender) : defaultRender()}\n
      \n );\n };\n\n // MostRecently Used text should supercede the header text if it's there and available.\n let headerText: string | undefined = suggestionsHeaderText;\n if (isMostRecentlyUsedVisible && mostRecentlyUsedHeaderText) {\n headerText = mostRecentlyUsedHeaderText;\n }\n\n let footerTitle: ((props: ISuggestionsProps) => JSX.Element) | undefined = undefined;\n if (isResultsFooterVisible) {\n footerTitle = suggestions.length >= (resultsMaximumNumber as number) ? resultsFooterFull : resultsFooter;\n }\n\n const hasNoSuggestions = (!suggestions || !suggestions.length) && !isLoading;\n\n const forceResolveId =\n this.state.selectedActionType === SuggestionActionType.forceResolve ? 'sug-selectedAction' : undefined;\n const searchForMoreId =\n this.state.selectedActionType === SuggestionActionType.searchMore ? 'sug-selectedAction' : undefined;\n\n return (\n \n \n\n {headerText ?
      {headerText}
      : null}\n {forceResolveText && this._shouldShowForceResolve() && (\n \n {forceResolveText}\n \n )}\n {isLoading && }\n {hasNoSuggestions ? noResults() : this._renderSuggestions()}\n {searchForMoreText && moreSuggestionsAvailable && (\n \n {searchForMoreText}\n \n )}\n {isSearching ? : null}\n {footerTitle && !moreSuggestionsAvailable && !isMostRecentlyUsedVisible && !isSearching ? (\n
      {footerTitle(this.props)}
      \n ) : null}\n
      \n );\n }\n\n /**\n * Returns true if the event was handled, false otherwise\n */\n public tryHandleKeyDown = (keyCode: number, currentSuggestionIndex: number): boolean => {\n let isEventHandled = false;\n let newSelectedActionType = null;\n const currentSelectedAction = this.state.selectedActionType;\n const suggestionLength = this.props.suggestions.length;\n if (keyCode === KeyCodes.down) {\n switch (currentSelectedAction) {\n case SuggestionActionType.forceResolve:\n if (suggestionLength > 0) {\n this._refocusOnSuggestions(keyCode);\n newSelectedActionType = SuggestionActionType.none;\n } else if (this._searchForMoreButton.current) {\n newSelectedActionType = SuggestionActionType.searchMore;\n } else {\n newSelectedActionType = SuggestionActionType.forceResolve;\n }\n break;\n case SuggestionActionType.searchMore:\n if (this._forceResolveButton.current) {\n newSelectedActionType = SuggestionActionType.forceResolve;\n } else if (suggestionLength > 0) {\n this._refocusOnSuggestions(keyCode);\n newSelectedActionType = SuggestionActionType.none;\n } else {\n newSelectedActionType = SuggestionActionType.searchMore;\n }\n break;\n case SuggestionActionType.none:\n if (currentSuggestionIndex === -1 && this._forceResolveButton.current) {\n newSelectedActionType = SuggestionActionType.forceResolve;\n }\n break;\n }\n } else if (keyCode === KeyCodes.up) {\n switch (currentSelectedAction) {\n case SuggestionActionType.forceResolve:\n if (this._searchForMoreButton.current) {\n newSelectedActionType = SuggestionActionType.searchMore;\n } else if (suggestionLength > 0) {\n this._refocusOnSuggestions(keyCode);\n newSelectedActionType = SuggestionActionType.none;\n }\n break;\n case SuggestionActionType.searchMore:\n if (suggestionLength > 0) {\n this._refocusOnSuggestions(keyCode);\n newSelectedActionType = SuggestionActionType.none;\n } else if (this._forceResolveButton.current) {\n newSelectedActionType = SuggestionActionType.forceResolve;\n }\n break;\n case SuggestionActionType.none:\n if (currentSuggestionIndex === -1 && this._searchForMoreButton.current) {\n newSelectedActionType = SuggestionActionType.searchMore;\n }\n break;\n }\n }\n\n if (newSelectedActionType !== null) {\n this.setState({ selectedActionType: newSelectedActionType });\n isEventHandled = true;\n }\n\n return isEventHandled;\n };\n\n public hasSuggestedAction(): boolean {\n return !!this._searchForMoreButton.current || !!this._forceResolveButton.current;\n }\n\n public hasSuggestedActionSelected(): boolean {\n return this.state.selectedActionType !== SuggestionActionType.none;\n }\n\n public executeSelectedAction(): void {\n switch (this.state.selectedActionType) {\n case SuggestionActionType.forceResolve:\n this._forceResolve();\n break;\n case SuggestionActionType.searchMore:\n this._getMoreResults();\n break;\n }\n }\n\n public focusAboveSuggestions(): void {\n if (this._forceResolveButton.current) {\n this.setState({ selectedActionType: SuggestionActionType.forceResolve });\n } else if (this._searchForMoreButton.current) {\n this.setState({ selectedActionType: SuggestionActionType.searchMore });\n }\n }\n\n public focusBelowSuggestions(): void {\n if (this._searchForMoreButton.current) {\n this.setState({ selectedActionType: SuggestionActionType.searchMore });\n } else if (this._forceResolveButton.current) {\n this.setState({ selectedActionType: SuggestionActionType.forceResolve });\n }\n }\n\n public focusSearchForMoreButton(): void {\n if (this._searchForMoreButton.current) {\n this._searchForMoreButton.current.focus();\n }\n }\n\n public scrollSelected(): void {\n if (\n this._selectedElement.current &&\n this._scrollContainer.current &&\n this._scrollContainer.current.scrollTo !== undefined\n ) {\n const { offsetHeight, offsetTop } = this._selectedElement.current;\n const { offsetHeight: parentOffsetHeight, scrollTop } = this._scrollContainer.current;\n\n const isAbove = offsetTop < scrollTop;\n const isBelow = offsetTop + offsetHeight > scrollTop + parentOffsetHeight;\n\n if (isAbove) {\n this._scrollContainer.current.scrollTo(0, offsetTop);\n } else if (isBelow) {\n this._scrollContainer.current.scrollTo(0, offsetTop - parentOffsetHeight + offsetHeight);\n }\n }\n }\n\n private _getAlertText = () => {\n const {\n isLoading,\n isSearching,\n suggestions,\n suggestionsAvailableAlertText,\n noResultsFoundText,\n isExtendedLoading,\n loadingText,\n } = this.props;\n\n if (!isLoading && !isSearching) {\n if (suggestions.length > 0) {\n return suggestionsAvailableAlertText || '';\n }\n if (noResultsFoundText) {\n return noResultsFoundText;\n }\n } else if (isLoading && isExtendedLoading) {\n return loadingText || '';\n }\n return '';\n };\n\n private _renderSuggestions(): JSX.Element | null {\n const {\n onRenderSuggestion,\n removeSuggestionAriaLabel,\n suggestionsItemClassName,\n resultsMaximumNumber,\n showRemoveButtons,\n removeButtonIconProps,\n } = this.props;\n\n let { suggestions } = this.props;\n\n const StyledTypedSuggestionsItem: React.FunctionComponent> = StyledSuggestionsItem;\n\n let selectedIndex = -1;\n suggestions.some((element, index) => {\n if (element.selected) {\n selectedIndex = index;\n return true;\n }\n return false;\n });\n\n if (resultsMaximumNumber) {\n suggestions =\n selectedIndex >= resultsMaximumNumber\n ? suggestions.slice(selectedIndex - resultsMaximumNumber + 1, selectedIndex + 1)\n : suggestions.slice(0, resultsMaximumNumber);\n }\n\n if (suggestions.length === 0) {\n return null;\n }\n\n return (\n
      \n {suggestions.map((suggestion, index) => (\n \n \n
      \n ))}\n
      \n );\n }\n\n private _getMoreResults = (): void => {\n if (this.props.onGetMoreResults) {\n this.props.onGetMoreResults();\n\n // Reset selected action type as it will be of type SuggestionActionType.none after more results are gotten\n this.setState({ selectedActionType: SuggestionActionType.none });\n }\n };\n\n private _forceResolve = (): void => {\n if (this.props.createGenericItem) {\n this.props.createGenericItem();\n }\n };\n\n private _shouldShowForceResolve = (): boolean => {\n return this.props.showForceResolve ? this.props.showForceResolve() : false;\n };\n\n private _onClickTypedSuggestionsItem = (item: T, index: number): ((ev: React.MouseEvent) => void) => {\n return (ev: React.MouseEvent): void => {\n this.props.onSuggestionClick(ev, item, index);\n };\n };\n\n private _refocusOnSuggestions = (keyCode: number): void => {\n if (typeof this.props.refocusSuggestions === 'function') {\n this.props.refocusSuggestions(keyCode);\n }\n };\n\n private _onRemoveTypedSuggestionsItem = (item: T, index: number): ((ev: React.MouseEvent) => void) => {\n return (ev: React.MouseEvent): void => {\n const onSuggestionRemove = this.props.onSuggestionRemove!;\n onSuggestionRemove(ev, item, index);\n ev.stopPropagation();\n };\n };\n}\n","import {\n getGlobalClassNames,\n getHighContrastNoAdjustStyle,\n HighContrastSelector,\n hiddenContentStyle,\n} from '../../../Styling';\nimport type { IStyle } from '../../../Styling';\nimport type { ISuggestionsStyleProps, ISuggestionsStyles } from './Suggestions.types';\n\nconst GlobalClassNames = {\n root: 'ms-Suggestions',\n suggestionsContainer: 'ms-Suggestions-container',\n title: 'ms-Suggestions-title',\n forceResolveButton: 'ms-forceResolve-button',\n searchForMoreButton: 'ms-SearchMore-button',\n spinner: 'ms-Suggestions-spinner',\n noSuggestions: 'ms-Suggestions-none',\n suggestionsAvailable: 'ms-Suggestions-suggestionsAvailable',\n isSelected: 'is-selected',\n};\n\nexport function getStyles(props: ISuggestionsStyleProps): ISuggestionsStyles {\n const { className, suggestionsClassName, theme, forceResolveButtonSelected, searchForMoreButtonSelected } = props;\n\n const { palette, semanticColors, fonts } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const actionButtonStyles: IStyle = {\n backgroundColor: 'transparent',\n border: 0,\n cursor: 'pointer',\n margin: 0,\n paddingLeft: 8,\n position: 'relative',\n borderTop: `1px solid ${palette.neutralLight}`,\n height: 40,\n textAlign: 'left',\n width: '100%',\n fontSize: fonts.small.fontSize,\n selectors: {\n ':hover': {\n backgroundColor: semanticColors.menuItemBackgroundPressed,\n cursor: 'pointer',\n },\n ':focus, :active': {\n backgroundColor: palette.themeLight,\n },\n '.ms-Button-icon': {\n fontSize: fonts.mediumPlus.fontSize,\n width: 25,\n },\n '.ms-Button-label': {\n margin: '0 4px 0 9px',\n },\n },\n };\n\n const actionButtonSelectedStyles: IStyle = {\n backgroundColor: palette.themeLight,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n borderColor: 'Highlight',\n color: 'HighlightText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n };\n\n return {\n root: [\n classNames.root,\n {\n minWidth: 260,\n },\n className,\n ],\n suggestionsContainer: [\n classNames.suggestionsContainer,\n {\n overflowY: 'auto',\n overflowX: 'hidden',\n maxHeight: 300,\n transform: 'translate3d(0,0,0)',\n },\n suggestionsClassName,\n ],\n title: [\n classNames.title,\n {\n padding: '0 12px',\n fontSize: fonts.small.fontSize,\n color: palette.themePrimary,\n lineHeight: 40,\n borderBottom: `1px solid ${semanticColors.menuItemBackgroundPressed}`,\n },\n ],\n forceResolveButton: [\n classNames.forceResolveButton,\n actionButtonStyles,\n forceResolveButtonSelected && [classNames.isSelected, actionButtonSelectedStyles],\n ],\n searchForMoreButton: [\n classNames.searchForMoreButton,\n actionButtonStyles,\n searchForMoreButtonSelected && [classNames.isSelected, actionButtonSelectedStyles],\n ],\n noSuggestions: [\n classNames.noSuggestions,\n {\n textAlign: 'center',\n color: palette.neutralSecondary,\n fontSize: fonts.small.fontSize,\n lineHeight: 30,\n },\n ],\n suggestionsAvailable: [classNames.suggestionsAvailable, hiddenContentStyle],\n subComponentStyles: {\n spinner: {\n root: [\n classNames.spinner,\n {\n margin: '5px 0',\n paddingLeft: 14,\n textAlign: 'left',\n whiteSpace: 'nowrap',\n lineHeight: 20,\n fontSize: fonts.small.fontSize,\n },\n ],\n circle: {\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n label: {\n display: 'inline-block',\n verticalAlign: 'middle',\n margin: '0 10px 0 16px',\n },\n },\n },\n };\n}\n","import type { ISuggestionModel } from './Suggestions.types';\n\n/**\n * {@docCategory Pickers}\n */\nexport class SuggestionsController {\n public currentIndex: number;\n public currentSuggestion: ISuggestionModel | undefined;\n public suggestions: ISuggestionModel[];\n\n constructor() {\n this.suggestions = [];\n this.currentIndex = -1;\n }\n\n public updateSuggestions(newSuggestions: T[], selectedIndex?: number, maxCount?: number): void {\n if (newSuggestions && newSuggestions.length > 0) {\n if (maxCount && newSuggestions.length > maxCount) {\n const startIndex = selectedIndex && selectedIndex > maxCount ? selectedIndex + 1 - maxCount : 0;\n newSuggestions = newSuggestions.slice(startIndex, startIndex + maxCount - 1);\n }\n this.suggestions = this.convertSuggestionsToSuggestionItems(newSuggestions);\n this.currentIndex = selectedIndex ? selectedIndex : 0;\n if (selectedIndex! === -1) {\n this.currentSuggestion = undefined;\n } else if (selectedIndex !== undefined) {\n this.suggestions[selectedIndex].selected = true;\n this.currentSuggestion = this.suggestions[selectedIndex];\n }\n } else {\n this.suggestions = [];\n this.currentIndex = -1;\n this.currentSuggestion = undefined;\n }\n }\n\n /**\n * Increments the suggestion index and gets the next suggestion in the list.\n */\n public nextSuggestion(): boolean {\n if (this.suggestions && this.suggestions.length) {\n if (this.currentIndex < this.suggestions.length - 1) {\n this.setSelectedSuggestion(this.currentIndex + 1);\n return true;\n } else if (this.currentIndex === this.suggestions.length - 1) {\n this.setSelectedSuggestion(0);\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Decrements the suggestion index and gets the previous suggestion in the list.\n */\n public previousSuggestion(): boolean {\n if (this.suggestions && this.suggestions.length) {\n if (this.currentIndex > 0) {\n this.setSelectedSuggestion(this.currentIndex - 1);\n return true;\n } else if (this.currentIndex === 0) {\n this.setSelectedSuggestion(this.suggestions.length - 1);\n return true;\n }\n }\n\n return false;\n }\n\n public getSuggestions(): ISuggestionModel[] {\n return this.suggestions;\n }\n\n public getCurrentItem(): ISuggestionModel {\n return this.currentSuggestion!;\n }\n\n public getSuggestionAtIndex(index: number): ISuggestionModel {\n return this.suggestions[index];\n }\n\n public hasSelectedSuggestion(): boolean {\n return this.currentSuggestion ? true : false;\n }\n\n public removeSuggestion(index: number): void {\n this.suggestions.splice(index, 1);\n }\n\n public createGenericSuggestion(itemToConvert: ISuggestionModel | T) {\n const itemToAdd = this.convertSuggestionsToSuggestionItems([itemToConvert])[0];\n this.currentSuggestion = itemToAdd;\n }\n\n public convertSuggestionsToSuggestionItems(suggestions: Array | T>): ISuggestionModel[] {\n return Array.isArray(suggestions) ? suggestions.map(this._ensureSuggestionModel) : [];\n }\n\n public deselectAllSuggestions(): void {\n if (this.currentIndex > -1) {\n this.suggestions[this.currentIndex].selected = false;\n this.currentIndex = -1;\n }\n }\n\n public setSelectedSuggestion(index: number): void {\n if (index > this.suggestions.length - 1 || index < 0) {\n this.currentIndex = 0;\n this.currentSuggestion!.selected = false;\n this.currentSuggestion = this.suggestions[0];\n this.currentSuggestion.selected = true;\n } else {\n if (this.currentIndex > -1) {\n this.suggestions[this.currentIndex].selected = false;\n }\n this.suggestions[index].selected = true;\n this.currentIndex = index;\n this.currentSuggestion = this.suggestions[index];\n }\n }\n\n private _isSuggestionModel = (value: ISuggestionModel | T): value is ISuggestionModel => {\n return (>value).item !== undefined;\n };\n\n private _ensureSuggestionModel = (suggestion: ISuggestionModel | T): ISuggestionModel => {\n if (this._isSuggestionModel(suggestion)) {\n return suggestion as ISuggestionModel;\n } else {\n return {\n item: suggestion,\n selected: false,\n ariaLabel: (suggestion).name || (suggestion).primaryText,\n } as ISuggestionModel;\n }\n };\n}\n","import * as React from 'react';\nimport { Autofill } from '../../Autofill';\nimport type { IPickerItemProps } from './PickerItem.types';\nimport type { IReactProps, IRefObject, IStyleFunctionOrObject } from '../../Utilities';\nimport type { ISuggestionModel, ISuggestionsProps } from './Suggestions/Suggestions.types';\nimport type { ICalloutProps } from '../../Callout';\nimport type { ITheme, IStyle } from '../../Styling';\nimport type { ISuggestionItemProps } from '../pickers/Suggestions/SuggestionsItem.types';\nimport { IIconProps } from '../Icon/Icon.types';\n\n/**\n * BasePicker component.\n * {@docCategory Pickers}\n */\nexport interface IBasePicker {\n /** Gets the current value of the input. */\n items: T[] | undefined;\n\n /** Sets focus to the focus zone. */\n focus: () => void;\n\n /** Set focus to the input */\n focusInput: () => void;\n\n /**\n * When called, will take the currently selected suggestion and complete it.\n * If called with forceComplete true, it will attempt to force the current suggestion\n * to complete, must provide both createGenericSuggestion, so the text can be turned into\n * an object in the right shape, and onValidateInput, so the object knows if it's correct or not.\n */\n completeSuggestion: (forceComplete?: boolean) => void;\n}\n\n/**\n * Type T is the type of the item that is displayed\n * and searched for by the picker. For example, if the picker is\n * displaying persona's then type T could either be of Persona or IPersona props\n * {@docCategory Pickers}\n */\nexport interface IBasePickerProps extends IReactProps {\n /**\n * Optional callback to access the IBasePicker interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject>;\n\n /**\n * Function that specifies how the selected item will appear.\n */\n onRenderItem?: (props: IPickerItemProps) => JSX.Element;\n\n /**\n * Function that specifies how an individual suggestion item will appear.\n */\n onRenderSuggestionsItem?: (props: T, itemProps: ISuggestionItemProps) => JSX.Element;\n\n /**\n * A callback for what should happen when a person types text into the input.\n * Returns the already selected items so the resolver can filter them out.\n * If used in conjunction with resolveDelay this will only kick off after the delay throttle.\n */\n onResolveSuggestions: (filter: string, selectedItems?: T[]) => T[] | PromiseLike;\n\n /**\n * The delay time in ms before resolving suggestions, which is kicked off when input has been changed.\n * e.g. If a second input change happens within the resolveDelay time, the timer will start over.\n * Only until after the timer completes will onResolveSuggestions be called.\n */\n resolveDelay?: number;\n\n /**\n * A callback for what should happen when a user clicks within the input area.\n * @deprecated Please use `onEmptyResolveSuggestions` instead, as the suggestions aren't about\n * setting focus as they are about resolving suggestions when there is no input.\n */\n onEmptyInputFocus?: (selectedItems?: T[]) => T[] | PromiseLike;\n\n /**\n * A callback for what should happen when suggestions are shown without\n * input provided.\n * Returns the already selected items so the resolver can filter them out.\n * If used in conjunction with resolveDelay this will only kick off after the delay throttle.\n */\n onEmptyResolveSuggestions?: (selectedItems?: T[]) => T[] | PromiseLike;\n\n /**\n * Initial items that have already been selected and should appear in the people picker.\n */\n defaultSelectedItems?: T[];\n\n /**\n * A callback for when the selected list of items changes.\n */\n onChange?: (items?: T[]) => void;\n\n /**\n * A callback for when the user put focus on the picker\n * @deprecated Use `inputProps.onFocus` instead\n */\n onFocus?: React.FocusEventHandler;\n\n /**\n * A callback for when the user moves the focus away from the picker\n */\n onBlur?: React.FocusEventHandler;\n\n /**\n * A callback to get text from an item. Used to autofill text in the pickers.\n */\n getTextFromItem?: (item: T, currentValue?: string) => string;\n\n /**\n * A callback that gets the rest of the results when a user clicks get more results.\n */\n onGetMoreResults?: (filter: string, selectedItems?: T[]) => T[] | PromiseLike;\n\n /**\n * ClassName for the picker.\n */\n className?: string;\n\n /**\n * The properties that will get passed to the Suggestions component.\n */\n pickerSuggestionsProps?: IBasePickerSuggestionsProps;\n\n /**\n * The properties that will get passed to the Callout component.\n */\n pickerCalloutProps?: ICalloutProps;\n\n /**\n * AutoFill input native props\n * @defaultvalue undefined\n */\n inputProps?: IInputProps;\n\n /**\n * A callback for when an item is removed from the suggestion list\n */\n onRemoveSuggestion?: (item: T) => void;\n\n /**\n * A function used to validate if raw text entered into the well can be added into the selected items list\n */\n onValidateInput?: (input: string) => ValidationState;\n\n /**\n * The text to display while searching for more results in a limited suggestions list\n */\n searchingText?: ((props: { input: string }) => string) | string;\n\n /**\n * Flag for disabling the picker.\n * @defaultvalue false\n */\n disabled?: boolean;\n\n /**\n * Restrict the amount of selectable items.\n * @defaultvalue undefined\n */\n itemLimit?: number;\n\n /**\n * Function that specifies how arbitrary text entered into the well is handled.\n */\n createGenericItem?: (input: string, ValidationState: ValidationState) => ISuggestionModel | T;\n\n /**\n * Aria label for the \"X\" button in the selected item component.\n * @defaultvalue ''\n */\n removeButtonAriaLabel?: string;\n\n /**\n * The text that will be announced when a suggestion is removed. A default value is only provided for English.\n * @default 'removed \\{0\\}'\n */\n suggestionRemovedText?: string;\n\n /**\n * Optional aria-label that will be placed on the element that has the role \"combobox\"\n * attached. Additionally aria-labelled by will get added to the supporting input element contained\n * with in the combobox container\n */\n ['aria-label']?: string;\n\n /**\n * A callback to process a selection after the user selects something from the picker. If the callback returns null,\n * the item will not be added to the picker.\n */\n onItemSelected?: (selectedItem?: T) => T | PromiseLike | null;\n\n /**\n * The items that the base picker should currently display as selected.\n * If this is provided then the picker will act as a controlled component.\n */\n selectedItems?: T[];\n\n /**\n * Aria label for the displayed selection. A good value would be something like \"Selected Contacts\".\n * @defaultvalue ''\n */\n selectionAriaLabel?: string;\n\n /**\n * Override the role used for the element containing selected items.\n * Update this if onRenderItem does not return elements with role=\"listitem\".\n * A good alternative would be 'group'.\n * @defaultvalue 'list'\n */\n selectionRole?: string;\n\n /**\n * A callback used to modify the input string.\n */\n onInputChange?: (input: string) => string;\n\n /**\n * A callback to override the default behavior of adding the selected suggestion on dismiss. If it returns true or\n * nothing, the selected item will be added on dismiss. If false, the selected item will not be added on dismiss.\n *\n */\n onDismiss?: (ev?: any, selectedItem?: T) => boolean | void;\n\n /**\n * Adds an additional alert for the currently selected suggestion. This prop should be set to true for IE11 and below,\n * as it enables proper screen reader behavior for each suggestion (since aria-activedescendant does not work\n * with IE11). It should not be set for modern browsers (Edge, Chrome).\n * @defaultvalue false\n */\n enableSelectedSuggestionAlert?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject;\n\n /**\n * Theme provided by styled() function.\n */\n theme?: ITheme;\n\n /**\n * Props for the icon used in the item's remove button.\n * @defaultvalue `{ iconName:'Cancel' }`\n */\n removeButtonIconProps?: IIconProps;\n}\n\n/**\n * Subset of picker options that may be legally passed through a picker to its\n * internal Suggestions component.\n * {@docCategory Pickers}\n */\nexport interface IBasePickerSuggestionsProps\n extends Pick<\n ISuggestionsProps,\n | 'onRenderNoResultFound'\n | 'suggestionsHeaderText'\n | 'mostRecentlyUsedHeaderText'\n | 'noResultsFoundText'\n | 'className'\n | 'suggestionsClassName'\n | 'suggestionsItemClassName'\n | 'searchForMoreIcon'\n | 'searchForMoreText'\n | 'forceResolveText'\n | 'loadingText'\n | 'searchingText'\n | 'resultsFooterFull'\n | 'resultsFooter'\n | 'resultsMaximumNumber'\n | 'showRemoveButtons'\n | 'suggestionsAvailableAlertText'\n | 'suggestionsContainerAriaLabel'\n | 'showForceResolve'\n | 'removeButtonIconProps'\n > {}\n\n/**\n * Validation state of the user's input.\n * {@docCategory Pickers}\n */\nexport enum ValidationState {\n /** User input is valid. */\n valid,\n\n /** User input could be valid or invalid, its state is not known yet. */\n warning,\n\n /** User input is invalid. */\n invalid,\n}\n\n/**\n * Pickers' input props interface\n * {@docCategory Pickers}\n */\nexport interface IInputProps extends React.InputHTMLAttributes {\n /**\n * Screen reader label to apply to an input element.\n */\n 'aria-label'?: string;\n\n /**\n * The default value to be visible when the autofill first created.\n * This is different than placeholder text because the placeholder text will disappear and re-appear. This\n * text persists until deleted or changed.\n */\n defaultVisibleValue?: string;\n}\n\n/**\n * The props needed to construct styles.\n * {@docCategory Pickers}\n */\nexport type IBasePickerStyleProps = Pick, 'theme' | 'className' | 'disabled'> & {\n /** Whether text style area is focused */\n isFocused?: boolean;\n\n /** Optional pickerInput className */\n inputClassName?: string;\n};\n\n/**\n * Represents the stylable areas of the control.\n * {@docCategory Pickers}\n */\nexport interface IBasePickerStyles {\n /** Root element of any picker extending from BasePicker (wraps all the elements). */\n root: IStyle;\n\n /**\n * Refers to the elements already selected (picked) wrapped by `itemsWrapper` along with the input to type\n * a new selection.\n */\n text: IStyle;\n\n /** Refers to the items already selected (picked). */\n itemsWrapper: IStyle;\n\n /** Refers to the input were to type new selections (picks). */\n input: IStyle;\n\n /** Refers to helper element used for accessibility tools (hidden from view on screen). */\n screenReaderText: IStyle;\n}\n","/* eslint-disable */\nimport { loadStyles } from '@microsoft/load-themed-styles';\nloadStyles([{\"rawString\":\".picker_94f06b16{position:relative}.pickerText_94f06b16{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid \"},{\"theme\":\"neutralTertiary\",\"defaultValue\":\"#a19f9d\"},{\"rawString\":\";min-width:180px;min-height:30px}.pickerText_94f06b16:hover{border-color:\"},{\"theme\":\"inputBorderHovered\",\"defaultValue\":\"#323130\"},{\"rawString\":\"}.pickerText_94f06b16.inputFocused_94f06b16{position:relative;border-color:\"},{\"theme\":\"inputFocusBorderAlt\",\"defaultValue\":\"#0078d4\"},{\"rawString\":\"}.pickerText_94f06b16.inputFocused_94f06b16:after{pointer-events:none;content:\\\"\\\";position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;border:2px solid \"},{\"theme\":\"inputFocusBorderAlt\",\"defaultValue\":\"#0078d4\"},{\"rawString\":\"}@media screen and (-ms-high-contrast:active),screen and (forced-colors:active){.pickerText_94f06b16.inputDisabled_94f06b16{position:relative;border-color:GrayText}.pickerText_94f06b16.inputDisabled_94f06b16:after{pointer-events:none;content:\\\"\\\";position:absolute;left:0;top:0;bottom:0;right:0;background-color:Window}}.pickerInput_94f06b16{height:34px;border:none;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;outline:0;padding:0 6px 0;-ms-flex-item-align:end;align-self:flex-end}.pickerItems_94f06b16{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:100%}.screenReaderOnly_94f06b16{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}\"}]);\nexport const picker = \"picker_94f06b16\";\nexport const pickerText = \"pickerText_94f06b16\";\nexport const inputFocused = \"inputFocused_94f06b16\";\nexport const inputDisabled = \"inputDisabled_94f06b16\";\nexport const pickerInput = \"pickerInput_94f06b16\";\nexport const pickerItems = \"pickerItems_94f06b16\";\nexport const screenReaderOnly = \"screenReaderOnly_94f06b16\";","import * as React from 'react';\nimport {\n Async,\n KeyCodes,\n css,\n elementContains,\n format,\n getId,\n classNamesFunction,\n styled,\n initializeComponentRef,\n} from '../../Utilities';\nimport { Callout } from '../../Callout';\nimport { Selection, SelectionZone, SelectionMode } from '../../utilities/selection/index';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { Suggestions } from './Suggestions/Suggestions';\nimport { getStyles as suggestionsStyles } from './Suggestions/Suggestions.styles';\nimport { SuggestionsController } from './Suggestions/SuggestionsController';\nimport { ValidationState } from './BasePicker.types';\nimport { Autofill } from '../Autofill/index';\nimport * as stylesImport from './BasePicker.scss';\nimport type { IProcessedStyleSet } from '../../Styling';\nimport type {\n ISuggestions,\n ISuggestionsProps,\n ISuggestionsStyleProps,\n ISuggestionsStyles,\n} from './Suggestions/Suggestions.types';\nimport type { IBasePicker, IBasePickerProps, IBasePickerStyleProps, IBasePickerStyles } from './BasePicker.types';\nimport type { IAutofill } from '../Autofill/index';\nimport type { IPickerItemProps } from './PickerItem.types';\n\nconst legacyStyles: any = stylesImport;\n\nconst EXTENDED_LOAD_TIME = 3000;\n\nexport interface IBasePickerState {\n items?: any;\n suggestedDisplayValue?: string;\n moreSuggestionsAvailable?: boolean;\n isFocused?: boolean;\n isSearching?: boolean;\n isMostRecentlyUsedVisible?: boolean;\n suggestionsVisible?: boolean;\n suggestionsLoading?: boolean;\n suggestionsExtendedLoading?: boolean;\n isResultsFooterVisible?: boolean;\n selectedIndices?: number[];\n selectionRemoved?: T;\n}\n\n/**\n * Aria id's for internal picker components\n * {@docCategory Pickers}\n */\nexport type IPickerAriaIds = {\n /**\n * Aria id for selected suggestion alert component\n */\n selectedSuggestionAlert: string;\n /**\n * Aria id for selected items container component\n */\n selectedItems: string;\n /**\n * Aria id for suggestions list component\n */\n suggestionList: string;\n /**\n * Aria id for element with role=combobox\n */\n combobox: string;\n};\n\nconst getClassNames = classNamesFunction();\n\n/**\n * Should be removed once new picker without inheritance is created\n */\nfunction getStyledSuggestions(suggestionsType: new (props: ISuggestionsProps) => Suggestions) {\n return styled, ISuggestionsStyleProps, ISuggestionsStyles>(\n suggestionsType,\n suggestionsStyles,\n undefined,\n {\n scope: 'Suggestions',\n },\n );\n}\n\n/**\n * {@docCategory Pickers}\n */\nexport class BasePicker>\n extends React.Component>\n implements IBasePicker\n{\n // Refs\n protected root = React.createRef();\n protected input = React.createRef();\n protected suggestionElement = React.createRef>();\n protected selection: Selection;\n protected suggestionStore: SuggestionsController;\n /**\n * @deprecated this is no longer necessary as typescript now supports generic elements\n */\n protected SuggestionOfProperType = Suggestions as new (props: ISuggestionsProps) => Suggestions;\n protected currentPromise: PromiseLike | undefined;\n protected _ariaMap: IPickerAriaIds;\n // eslint-disable-next-line deprecation/deprecation\n private _styledSuggestions = getStyledSuggestions(this.SuggestionOfProperType);\n private _id: string;\n private _async: Async;\n\n public static getDerivedStateFromProps(newProps: IBasePickerProps) {\n if (newProps.selectedItems) {\n return { items: newProps.selectedItems };\n }\n return null;\n }\n\n constructor(basePickerProps: P) {\n super(basePickerProps);\n\n initializeComponentRef(this);\n this._async = new Async(this);\n\n const items: T[] = basePickerProps.selectedItems || basePickerProps.defaultSelectedItems || [];\n\n this._id = getId();\n this._ariaMap = {\n selectedItems: `selected-items-${this._id}`,\n selectedSuggestionAlert: `selected-suggestion-alert-${this._id}`,\n suggestionList: `suggestion-list-${this._id}`,\n combobox: `combobox-${this._id}`,\n };\n this.suggestionStore = new SuggestionsController();\n this.selection = new Selection({ onSelectionChanged: () => this.onSelectionChange() });\n this.selection.setItems(items);\n this.state = {\n items,\n suggestedDisplayValue: '',\n isMostRecentlyUsedVisible: false,\n moreSuggestionsAvailable: false,\n isFocused: false,\n isSearching: false,\n selectedIndices: [],\n selectionRemoved: undefined,\n };\n }\n\n public get items(): T[] {\n return this.state.items;\n }\n\n public componentDidMount(): void {\n this.selection.setItems(this.state.items);\n this._onResolveSuggestions = this._async.debounce(this._onResolveSuggestions, this.props.resolveDelay);\n }\n\n public componentDidUpdate(oldProps: P, oldState: IBasePickerState) {\n if (this.state.items && this.state.items !== oldState.items) {\n const currentSelectedIndex = this.selection.getSelectedIndices()[0];\n this.selection.setItems(this.state.items);\n if (this.state.isFocused) {\n // Reset focus and selection so that selected item stays in sync if something\n // has been removed\n if (this.state.items.length < oldState.items.length) {\n this.selection.setIndexSelected(currentSelectedIndex, false, true);\n this.resetFocus(currentSelectedIndex);\n }\n // Reset focus to last item if the input is removed\n else if (this.state.items.length > oldState.items.length && !this.canAddItems()) {\n this.resetFocus(this.state.items.length - 1);\n }\n }\n }\n }\n\n public componentWillUnmount(): void {\n if (this.currentPromise) {\n this.currentPromise = undefined;\n }\n this._async.dispose();\n }\n\n public focus() {\n if (this.input.current) {\n this.input.current.focus();\n }\n }\n\n public focusInput() {\n if (this.input.current) {\n this.input.current.focus();\n }\n }\n\n public dismissSuggestions = (ev?: any): void => {\n const selectItemFunction = () => {\n let addItemOnDismiss: boolean | void = true;\n if (this.props.onDismiss) {\n addItemOnDismiss = this.props.onDismiss(\n ev,\n this.suggestionStore.currentSuggestion ? this.suggestionStore.currentSuggestion.item : undefined,\n );\n }\n\n if (!ev || (ev && !ev.defaultPrevented)) {\n // Select the first suggestion if one is available and permitted by onDismiss when user leaves.\n if (\n addItemOnDismiss !== false &&\n this.canAddItems() &&\n this.suggestionStore.hasSelectedSuggestion() &&\n this.state.suggestedDisplayValue\n ) {\n this.addItemByIndex(0);\n }\n }\n };\n\n if (this.currentPromise) {\n this.currentPromise.then(() => selectItemFunction());\n } else {\n selectItemFunction();\n }\n\n this.setState({ suggestionsVisible: false });\n };\n\n public completeSuggestion(forceComplete?: boolean) {\n if (this.suggestionStore.hasSelectedSuggestion() && this.input.current) {\n this.completeSelection(this.suggestionStore.currentSuggestion!.item);\n } else if (forceComplete) {\n this._completeGenericSuggestion();\n }\n }\n\n public refocusSuggestions = (keyCode: KeyCodes): void => {\n this.resetFocus();\n if (this.suggestionStore.suggestions && this.suggestionStore.suggestions.length > 0) {\n if (keyCode === KeyCodes.up) {\n this.suggestionStore.setSelectedSuggestion(this.suggestionStore.suggestions.length - 1);\n } else if (keyCode === KeyCodes.down) {\n this.suggestionStore.setSelectedSuggestion(0);\n }\n }\n };\n\n public render(): JSX.Element {\n const { suggestedDisplayValue, isFocused, items } = this.state;\n const { className, inputProps, disabled, selectionAriaLabel, selectionRole = 'list', theme, styles } = this.props;\n\n const suggestionsVisible = !!this.state.suggestionsVisible;\n const suggestionsAvailable = suggestionsVisible ? this._ariaMap.suggestionList : undefined;\n // TODO\n // Clean this up by leaving only the first part after removing support for SASS.\n // Currently we can not remove the SASS styles from BasePicker class because it\n // might be used by consumers who created custom pickers from extending from\n // this base class and have not used the new 'styles' prop.\n // We check for 'styles' prop which is going to be injected by the 'styled' HOC\n // for every other already existing picker variant (PeoplePicker, TagPicker)\n // so that we can use the CSS-in-JS styles. If the check fails (ex: custom picker),\n // then we just use the old SASS styles instead.\n const classNames: Partial> = styles\n ? getClassNames(styles, {\n theme,\n className,\n isFocused,\n disabled,\n inputClassName: inputProps && inputProps.className,\n })\n : {\n root: css('ms-BasePicker', className ? className : ''),\n text: css('ms-BasePicker-text', legacyStyles.pickerText, this.state.isFocused && legacyStyles.inputFocused),\n itemsWrapper: legacyStyles.pickerItems,\n input: css('ms-BasePicker-input', legacyStyles.pickerInput, inputProps && inputProps.className),\n screenReaderText: legacyStyles.screenReaderOnly,\n };\n\n const comboLabel = this.props['aria-label'] || inputProps?.['aria-label'];\n\n // selectionAriaLabel is contained in a separate rather than an aria-label on the items list\n // because if the items list has an aria-label, the aria-describedby on the input will only read\n // that label instead of all the selected items. Using aria-labelledby instead fixes this, since\n // aria-describedby and aria-labelledby will not follow a second aria-labelledby\n return (\n \n {this.renderCustomAlert(classNames.screenReaderText)}\n \n \n
      \n {items.length > 0 && (\n \n {this.renderItems()}\n \n )}\n {this.canAddItems() && (\n 0 ? this._ariaMap.selectedItems : undefined}\n aria-expanded={suggestionsVisible}\n aria-haspopup=\"listbox\"\n aria-label={comboLabel}\n role=\"combobox\"\n disabled={disabled}\n onInputChange={this.props.onInputChange}\n />\n )}\n
      \n
      \n {this.renderSuggestions()}\n
      \n );\n }\n\n protected canAddItems(): boolean {\n const { items } = this.state;\n const { itemLimit } = this.props;\n return itemLimit === undefined || items.length < itemLimit;\n }\n\n protected renderSuggestions(): JSX.Element | null {\n const StyledTypedSuggestions: React.FunctionComponent> = this._styledSuggestions;\n\n return this.state.suggestionsVisible && this.input ? (\n \n \n \n ) : null;\n }\n\n protected renderItems(): JSX.Element[] {\n const { disabled, removeButtonAriaLabel, removeButtonIconProps } = this.props;\n const onRenderItem = this.props.onRenderItem as (props: IPickerItemProps) => JSX.Element;\n\n const { items, selectedIndices } = this.state;\n return items.map((item: any, index: number) =>\n onRenderItem({\n item,\n index,\n key: item.key ? item.key : index,\n selected: selectedIndices!.indexOf(index) !== -1,\n onRemoveItem: () => this.removeItem(item),\n disabled,\n onItemChange: this.onItemChange,\n removeButtonAriaLabel,\n removeButtonIconProps,\n }),\n );\n }\n\n protected resetFocus(index?: number) {\n const { items } = this.state;\n\n if (items.length && index! >= 0) {\n const newEl: HTMLElement | null =\n this.root.current &&\n (this.root.current.querySelectorAll('[data-selection-index]')[\n Math.min(index!, items.length - 1)\n ] as HTMLElement | null);\n if (newEl) {\n newEl.focus();\n }\n } else if (items.length && !this.canAddItems()) {\n this.resetFocus(items.length - 1);\n } else {\n if (this.input.current) {\n this.input.current.focus();\n }\n }\n }\n\n protected onSuggestionSelect() {\n if (this.suggestionStore.currentSuggestion) {\n const currentValue: string = this.input.current ? this.input.current.value : '';\n const itemValue: string = this._getTextFromItem(this.suggestionStore.currentSuggestion.item, currentValue);\n this.setState({ suggestedDisplayValue: itemValue });\n }\n }\n\n protected onSelectionChange() {\n this.setState({\n selectedIndices: this.selection.getSelectedIndices(),\n });\n }\n\n protected updateSuggestions(suggestions: any[]) {\n const maxSuggestionsCount = this.props.pickerSuggestionsProps?.resultsMaximumNumber;\n this.suggestionStore.updateSuggestions(suggestions, 0, maxSuggestionsCount);\n this.forceUpdate();\n }\n\n /**\n * Only to be called when there is nothing in the input. Checks to see if the consumer has\n * provided a function to resolve suggestions\n */\n protected onEmptyInputFocus() {\n const emptyResolveSuggestions = this.props.onEmptyResolveSuggestions\n ? this.props.onEmptyResolveSuggestions\n : // eslint-disable-next-line deprecation/deprecation\n this.props.onEmptyInputFocus;\n\n // Only attempt to resolve suggestions if it exists\n if (emptyResolveSuggestions) {\n const suggestions = emptyResolveSuggestions(this.state.items);\n\n this.updateSuggestionsList(suggestions);\n\n this.setState({\n isMostRecentlyUsedVisible: true,\n suggestionsVisible: true,\n moreSuggestionsAvailable: false,\n });\n }\n }\n\n protected updateValue(updatedValue: string) {\n this._onResolveSuggestions(updatedValue);\n }\n\n protected updateSuggestionsList(suggestions: T[] | PromiseLike, updatedValue?: string) {\n // Check to see if the returned value is an array, if it is then just pass it into the next function .\n // If the returned value is not an array then check to see if it's a promise or PromiseLike.\n // If it is then resolve it asynchronously.\n if (Array.isArray(suggestions)) {\n this._updateAndResolveValue(updatedValue, suggestions);\n } else if (suggestions && (suggestions as PromiseLike).then) {\n this.setState({\n suggestionsLoading: true,\n });\n this._startLoadTimer();\n\n // Clear suggestions\n this.suggestionStore.updateSuggestions([]);\n\n if (updatedValue !== undefined) {\n this.setState({\n suggestionsVisible: this._getShowSuggestions(),\n });\n } else {\n this.setState({\n suggestionsVisible: this.input.current! && this.input.current!.inputElement === document.activeElement,\n });\n }\n\n // Ensure that the promise will only use the callback if it was the most recent one.\n this.currentPromise = suggestions;\n suggestions.then((newSuggestions: T[]) => {\n if (suggestions === this.currentPromise) {\n this._updateAndResolveValue(updatedValue, newSuggestions);\n }\n });\n }\n }\n\n protected resolveNewValue(updatedValue: string, suggestions: T[]) {\n this.updateSuggestions(suggestions);\n let itemValue: string | undefined = undefined;\n\n if (this.suggestionStore.currentSuggestion) {\n itemValue = this._getTextFromItem(this.suggestionStore.currentSuggestion.item, updatedValue);\n }\n\n // Only set suggestionloading to false after there has been time for the new suggestions to flow\n // to the suggestions list. This is to ensure that the suggestions are available before aria-activedescendant\n // is set so that screen readers will read out the first selected option.\n this.setState(\n {\n suggestedDisplayValue: itemValue,\n suggestionsVisible: this._getShowSuggestions(),\n },\n () => this.setState({ suggestionsLoading: false, suggestionsExtendedLoading: false }),\n );\n }\n\n protected onChange(items?: T[]) {\n if (this.props.onChange) {\n (this.props.onChange as any)(items);\n }\n }\n\n protected onInputChange = (value: string): void => {\n this.updateValue(value);\n this.setState({\n moreSuggestionsAvailable: true,\n isMostRecentlyUsedVisible: false,\n });\n };\n\n protected onSuggestionClick = (ev: React.MouseEvent, item: any, index: number): void => {\n this.addItemByIndex(index);\n };\n\n protected onSuggestionRemove = (ev: React.MouseEvent, item: T, index: number): void => {\n if (this.props.onRemoveSuggestion) {\n this.props.onRemoveSuggestion(item);\n }\n this.suggestionStore.removeSuggestion(index);\n };\n\n protected onInputFocus = (ev: React.FocusEvent): void => {\n this.selection.setAllSelected(false);\n // Only trigger all of the focus if this component isn't already focused.\n // For example when an item is selected or removed from the selected list it should be treated\n // as though the input is still focused.\n if (!this.state.isFocused) {\n this._userTriggeredSuggestions();\n\n if (this.props.inputProps && this.props.inputProps.onFocus) {\n this.props.inputProps.onFocus(ev as React.FocusEvent);\n }\n }\n };\n\n protected onInputBlur = (ev: React.FocusEvent): void => {\n if (this.props.inputProps && this.props.inputProps.onBlur) {\n this.props.inputProps.onBlur(ev as React.FocusEvent);\n }\n };\n\n protected onBlur = (ev: React.FocusEvent): void => {\n if (this.state.isFocused) {\n // Only blur the entire component if an unrelated element gets focus.\n // Otherwise treat it as though it still has focus.\n // Do nothing if the blur is coming from something\n // inside the comboBox root or the comboBox menu since\n // it we are not really bluring from the whole comboBox\n let relatedTarget: EventTarget | null = ev.relatedTarget;\n\n if (ev.relatedTarget === null) {\n // In IE11, due to lack of support, event.relatedTarget is always\n // null making every onBlur call to be \"outside\" of the ComboBox\n // even when it's not. Using document.activeElement is another way\n // for us to be able to get what the relatedTarget without relying\n // on the event\n relatedTarget = document.activeElement;\n }\n if (relatedTarget && !elementContains(this.root.current!, relatedTarget as HTMLElement)) {\n this.setState({ isFocused: false });\n if (this.props.onBlur) {\n this.props.onBlur(ev as React.FocusEvent);\n }\n }\n }\n };\n\n /**\n * Resets focus to last element in wrapper div if clicking back into Picker that has hit item limit\n */\n protected onWrapperClick = (ev: React.MouseEvent): void => {\n if (this.state.items.length && !this.canAddItems()) {\n this.resetFocus(this.state.items.length - 1);\n }\n };\n\n /**\n * Reveals suggestions any time the user clicks on the input element\n * without shifting focus.\n */\n protected onClick = (ev: React.MouseEvent): void => {\n if (this.props.inputProps !== undefined && this.props.inputProps.onClick !== undefined) {\n this.props.inputProps.onClick(ev);\n }\n\n // Only primary (left) clicks show suggestions.\n if (ev.button === 0) {\n this._userTriggeredSuggestions();\n }\n };\n\n protected onFocus = () => {\n if (!this.state.isFocused) {\n this.setState({ isFocused: true });\n }\n };\n\n protected onKeyDown = (ev: React.KeyboardEvent): void => {\n // eslint-disable-next-line deprecation/deprecation\n const keyCode = ev.which;\n switch (keyCode) {\n case KeyCodes.escape:\n if (this.state.suggestionsVisible) {\n this.setState({ suggestionsVisible: false });\n ev.preventDefault();\n ev.stopPropagation();\n }\n break;\n\n case KeyCodes.tab:\n case KeyCodes.enter:\n if (this.suggestionElement.current && this.suggestionElement.current.hasSuggestedActionSelected()) {\n this.suggestionElement.current.executeSelectedAction();\n } else if (!ev.shiftKey && this.suggestionStore.hasSelectedSuggestion() && this.state.suggestionsVisible) {\n this.completeSuggestion();\n ev.preventDefault();\n ev.stopPropagation();\n } else {\n this._completeGenericSuggestion();\n }\n\n break;\n\n case KeyCodes.backspace:\n if (!this.props.disabled) {\n this.onBackspace(ev);\n }\n ev.stopPropagation();\n break;\n\n case KeyCodes.del:\n if (!this.props.disabled) {\n if (\n this.input.current &&\n ev.target === this.input.current.inputElement &&\n this.state.suggestionsVisible &&\n this.suggestionStore.currentIndex !== -1\n ) {\n if (this.props.onRemoveSuggestion) {\n this.props.onRemoveSuggestion(this.suggestionStore.currentSuggestion!.item);\n }\n this.suggestionStore.removeSuggestion(this.suggestionStore.currentIndex);\n this.forceUpdate();\n } else {\n this.onBackspace(ev);\n }\n }\n ev.stopPropagation();\n break;\n\n case KeyCodes.up:\n if (this.input.current && ev.target === this.input.current.inputElement && this.state.suggestionsVisible) {\n if (\n this.suggestionElement.current &&\n this.suggestionElement.current.tryHandleKeyDown(keyCode, this.suggestionStore.currentIndex)\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n this.forceUpdate();\n } else {\n if (\n this.suggestionElement.current &&\n this.suggestionElement.current.hasSuggestedAction() &&\n this.suggestionStore.currentIndex === 0\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n this.suggestionElement.current.focusAboveSuggestions();\n this.suggestionStore.deselectAllSuggestions();\n this.forceUpdate();\n } else {\n if (this.suggestionStore.previousSuggestion()) {\n ev.preventDefault();\n ev.stopPropagation();\n this.onSuggestionSelect();\n }\n }\n }\n }\n break;\n\n case KeyCodes.down:\n if (this.input.current && ev.target === this.input.current.inputElement && this.state.suggestionsVisible) {\n if (\n this.suggestionElement.current &&\n this.suggestionElement.current.tryHandleKeyDown(keyCode, this.suggestionStore.currentIndex)\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n this.forceUpdate();\n } else {\n if (\n this.suggestionElement.current &&\n this.suggestionElement.current.hasSuggestedAction() &&\n this.suggestionStore.currentIndex + 1 === this.suggestionStore.suggestions.length\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n this.suggestionElement.current.focusBelowSuggestions();\n this.suggestionStore.deselectAllSuggestions();\n this.forceUpdate();\n } else {\n if (this.suggestionStore.nextSuggestion()) {\n ev.preventDefault();\n ev.stopPropagation();\n this.onSuggestionSelect();\n }\n }\n }\n }\n break;\n }\n };\n\n protected onItemChange = (changedItem: T, index: number): void => {\n const { items } = this.state;\n\n if (index >= 0) {\n const newItems: T[] = items;\n newItems[index] = changedItem;\n\n this._updateSelectedItems(newItems);\n }\n };\n\n protected onGetMoreResults = (): void => {\n this.setState(\n {\n isSearching: true,\n },\n () => {\n if (this.props.onGetMoreResults && this.input.current) {\n const suggestions: T[] | PromiseLike = (this.props.onGetMoreResults as any)(\n this.input.current.value,\n this.state.items,\n );\n const suggestionsArray: T[] = suggestions as T[];\n const suggestionsPromiseLike: PromiseLike = suggestions as PromiseLike;\n\n if (Array.isArray(suggestionsArray)) {\n this.updateSuggestions(suggestionsArray);\n this.setState({ isSearching: false });\n } else if (suggestionsPromiseLike.then) {\n suggestionsPromiseLike.then((newSuggestions: T[]) => {\n this.updateSuggestions(newSuggestions);\n this.setState({ isSearching: false });\n });\n }\n } else {\n this.setState({ isSearching: false });\n }\n\n if (this.input.current) {\n this.input.current.focus();\n }\n\n this.setState({\n moreSuggestionsAvailable: false,\n isResultsFooterVisible: true,\n });\n },\n );\n };\n\n protected completeSelection = (item: T) => {\n this.addItem(item);\n this.updateValue('');\n if (this.input.current) {\n this.input.current.clear();\n }\n this.setState({ suggestionsVisible: false });\n };\n\n protected addItemByIndex = (index: number): void => {\n this.completeSelection(this.suggestionStore.getSuggestionAtIndex(index).item);\n };\n\n protected addItem = (item: T): void => {\n const processedItem: T | PromiseLike | null = this.props.onItemSelected\n ? (this.props.onItemSelected as any)(item)\n : item;\n\n if (processedItem === null) {\n return;\n }\n\n const processedItemObject: T = processedItem as T;\n const processedItemPromiseLike: PromiseLike = processedItem as PromiseLike;\n\n if (processedItemPromiseLike && processedItemPromiseLike.then) {\n processedItemPromiseLike.then((resolvedProcessedItem: T) => {\n const newItems: T[] = this.state.items.concat([resolvedProcessedItem]);\n this._updateSelectedItems(newItems);\n });\n } else {\n const newItems: T[] = this.state.items.concat([processedItemObject]);\n this._updateSelectedItems(newItems);\n }\n this.setState({ suggestedDisplayValue: '', selectionRemoved: undefined });\n };\n\n protected removeItem = (item: T): void => {\n const { items } = this.state;\n const index: number = items.indexOf(item);\n\n if (index >= 0) {\n const newItems: T[] = items.slice(0, index).concat(items.slice(index + 1));\n this.setState({ selectionRemoved: item });\n this._updateSelectedItems(newItems);\n\n // reset selection removed text after a timeout so it isn't reached by screen reader virtual cursor.\n // the exact timing isn't important, the live region will fully read even if the text is removed.\n this._async.setTimeout(() => {\n this.setState({ selectionRemoved: undefined });\n }, 1000);\n }\n };\n\n protected removeItems = (itemsToRemove: any[]): void => {\n const { items } = this.state;\n const newItems: T[] = items.filter((item: any) => itemsToRemove.indexOf(item) === -1);\n\n this._updateSelectedItems(newItems);\n };\n\n // This is protected because we may expect the backspace key to work differently in a different kind of picker.\n // This lets the subclass override it and provide it's own onBackspace. For an example see the BasePickerListBelow\n protected onBackspace(ev: React.KeyboardEvent) {\n if (\n (this.state.items.length && !this.input.current) ||\n (this.input.current && !this.input.current.isValueSelected && this.input.current.cursorLocation === 0)\n ) {\n if (this.selection.getSelectedCount() > 0) {\n this.removeItems(this.selection.getSelection());\n } else {\n this.removeItem(this.state.items[this.state.items.length - 1]);\n }\n }\n }\n\n /**\n * @deprecated this is no longer necessary as focuszone has been removed\n */\n protected _shouldFocusZoneEnterInnerZone = (ev: React.KeyboardEvent): boolean => {\n // If suggestions are shown const up/down keys control them, otherwise allow them through to control the focusZone.\n if (this.state.suggestionsVisible) {\n // eslint-disable-next-line deprecation/deprecation\n switch (ev.which) {\n case KeyCodes.up:\n case KeyCodes.down:\n return true;\n }\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (ev.which === KeyCodes.enter) {\n return true;\n }\n\n return false;\n };\n\n protected getActiveDescendant() {\n if (this.state.suggestionsLoading) {\n return undefined;\n }\n\n const currentIndex = this.suggestionStore.currentIndex;\n\n if (currentIndex < 0) {\n // if the suggestions element has actions and the currentIndex does not point to a suggestion,\n // return the action id\n if (this.suggestionElement.current?.hasSuggestedAction()) {\n return 'sug-selectedAction';\n }\n\n // If there are no suggestions and no action suggested, then return the ID for the no results found.\n if (this.suggestionStore.suggestions.length === 0) {\n return 'sug-noResultsFound';\n }\n\n return undefined;\n } else {\n return `sug-${currentIndex}`;\n }\n }\n\n /** @deprecated use renderCustomAlert instead */\n protected getSuggestionsAlert(suggestionAlertClassName: string = legacyStyles.screenReaderOnly) {\n const currentIndex = this.suggestionStore.currentIndex;\n if (this.props.enableSelectedSuggestionAlert) {\n const selectedSuggestion =\n currentIndex > -1 ? this.suggestionStore.getSuggestionAtIndex(this.suggestionStore.currentIndex) : undefined;\n const selectedSuggestionAlertText = selectedSuggestion ? selectedSuggestion.ariaLabel : undefined;\n // keeping the id/className here for legacy support\n return (\n
      \n {`${selectedSuggestionAlertText} `}\n
      \n );\n }\n }\n\n protected renderCustomAlert(alertClassName: string = legacyStyles.screenReaderOnly) {\n const { suggestionRemovedText = 'removed {0}' } = this.props;\n let removedItemText = '';\n\n if (this.state.selectionRemoved) {\n const itemName = this._getTextFromItem(this.state.selectionRemoved, '');\n removedItemText = format(suggestionRemovedText, itemName);\n }\n\n return (\n
      \n {\n // eslint-disable-next-line deprecation/deprecation\n this.getSuggestionsAlert(alertClassName)\n }\n {removedItemText}\n
      \n );\n }\n\n /** If suggestions are still loading after a predefined amount of time, set state to show user alert */\n private _startLoadTimer() {\n this._async.setTimeout(() => {\n if (this.state.suggestionsLoading) {\n this.setState({ suggestionsExtendedLoading: true });\n }\n }, EXTENDED_LOAD_TIME);\n }\n\n /**\n * Takes in the current updated value and either resolves it with the new suggestions\n * or if updated value is undefined then it clears out currently suggested items\n */\n private _updateAndResolveValue(updatedValue: string | undefined, newSuggestions: T[]) {\n if (updatedValue !== undefined) {\n this.resolveNewValue(updatedValue, newSuggestions);\n } else {\n const maxSuggestionsCount = this.props.pickerSuggestionsProps?.resultsMaximumNumber;\n this.suggestionStore.updateSuggestions(newSuggestions, -1, maxSuggestionsCount);\n if (this.state.suggestionsLoading) {\n this.setState({\n suggestionsLoading: false,\n suggestionsExtendedLoading: false,\n });\n }\n }\n }\n\n /**\n * Controls what happens whenever there is an action that impacts the selected items.\n * If `selectedItems` is provided, this will act as a controlled component and it will not update its own state.\n */\n private _updateSelectedItems(items: T[]): void {\n if (this.props.selectedItems) {\n // If the component is a controlled component then the controlling component will need to add or remove the items.\n this.onChange(items);\n } else {\n this.setState({ items }, () => {\n this._onSelectedItemsUpdated(items);\n });\n }\n }\n\n private _onSelectedItemsUpdated(items?: T[]): void {\n this.onChange(items);\n }\n\n /**\n * Suggestions are normally shown after the user updates text and the text\n * is non-empty, but also when the user clicks on the input element.\n * @returns True if suggestions should be shown.\n */\n private _getShowSuggestions(): boolean {\n const areSuggestionsVisible =\n this.input.current !== undefined &&\n this.input.current !== null &&\n this.input.current.inputElement === document.activeElement &&\n this.input.current.value !== '';\n\n return areSuggestionsVisible;\n }\n\n private _onResolveSuggestions = (updatedValue: string): void => {\n const suggestions: T[] | PromiseLike | null = this.props.onResolveSuggestions(updatedValue, this.state.items);\n\n if (suggestions !== null) {\n this.updateSuggestionsList(suggestions, updatedValue);\n }\n };\n\n private _completeGenericSuggestion = (): void => {\n if (\n this.props.onValidateInput &&\n this.input.current &&\n (this.props.onValidateInput as any)(this.input.current.value) !== ValidationState.invalid &&\n this.props.createGenericItem\n ) {\n const itemToConvert = this.props.createGenericItem(\n this.input.current.value,\n this.props.onValidateInput(this.input.current.value),\n );\n this.suggestionStore.createGenericSuggestion(itemToConvert);\n this.completeSuggestion();\n }\n };\n\n private _getTextFromItem(item: T, currentValue?: string): string {\n if (this.props.getTextFromItem) {\n return (this.props.getTextFromItem as any)(item, currentValue);\n } else {\n return '';\n }\n }\n\n /**\n * This should be called when the user does something other than use text entry to trigger suggestions.\n *\n */\n private _userTriggeredSuggestions = () => {\n if (!this.state.suggestionsVisible) {\n const input = this.input.current ? this.input.current.value : '';\n if (!input) {\n this.onEmptyInputFocus();\n } else {\n if (this.suggestionStore.suggestions.length === 0) {\n this._onResolveSuggestions(input);\n } else {\n this.setState({\n isMostRecentlyUsedVisible: false,\n suggestionsVisible: true,\n });\n }\n }\n }\n };\n}\n\nexport class BasePickerListBelow> extends BasePicker {\n public render(): JSX.Element {\n const { suggestedDisplayValue, isFocused } = this.state;\n const { className, inputProps, disabled, selectionAriaLabel, selectionRole = 'list', theme, styles } = this.props;\n\n const suggestionsVisible = !!this.state.suggestionsVisible;\n\n const suggestionsAvailable: string | undefined = suggestionsVisible ? this._ariaMap.suggestionList : undefined;\n // TODO\n // Clean this up by leaving only the first part after removing support for SASS.\n // Currently we can not remove the SASS styles from BasePicker class because it\n // might be used by consumers who created custom pickers from extending from\n // this base class and have not used the new 'styles' prop.\n // We check for 'styles' prop which is going to be injected by the 'styled' HOC\n // for every other already existing picker variant (PeoplePicker, TagPicker)\n // so that we can use the CSS-in-JS styles. If the check fails (ex: custom picker),\n // then we just use the old SASS styles instead.\n const classNames: Partial> = styles\n ? getClassNames(styles, {\n theme,\n className,\n isFocused,\n inputClassName: inputProps && inputProps.className,\n })\n : {\n root: css('ms-BasePicker', legacyStyles.picker, className ? className : ''),\n text: css(\n 'ms-BasePicker-text',\n legacyStyles.pickerText,\n this.state.isFocused && legacyStyles.inputFocused,\n disabled && legacyStyles.inputDisabled,\n ),\n itemsWrapper: legacyStyles.pickerItems,\n input: css('ms-BasePicker-input', legacyStyles.pickerInput, inputProps && inputProps.className),\n screenReaderText: legacyStyles.screenReaderOnly,\n };\n\n const comboLabel = this.props['aria-label'] || inputProps?.['aria-label'];\n\n return (\n
      \n
      \n {this.renderCustomAlert(classNames.screenReaderText)}\n \n
      \n 0 ? this._ariaMap.selectedItems : undefined}\n role=\"combobox\"\n id={inputProps?.id ? inputProps.id : this._ariaMap.combobox}\n disabled={disabled}\n onInputChange={this.props.onInputChange}\n />\n
      \n
      \n {this.renderSuggestions()}\n \n \n {this.renderItems()}\n
      \n \n
      \n );\n }\n\n protected onBackspace(ev: React.KeyboardEvent) {\n // override the existing backspace method to not do anything because the list items appear below.\n }\n}\n","import {\n getGlobalClassNames,\n getInputFocusStyle,\n getPlaceholderStyles,\n hiddenContentStyle,\n HighContrastSelector,\n} from '../../Styling';\nimport type { IBasePickerStyleProps, IBasePickerStyles } from './BasePicker.types';\nimport type { IStyle } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-BasePicker',\n text: 'ms-BasePicker-text',\n itemsWrapper: 'ms-BasePicker-itemsWrapper',\n input: 'ms-BasePicker-input',\n};\n\nexport function getStyles(props: IBasePickerStyleProps): IBasePickerStyles {\n const { className, theme, isFocused, inputClassName, disabled } = props;\n\n if (!theme) {\n throw new Error('theme is undefined or null in base BasePicker getStyles function.');\n }\n const { semanticColors, effects, fonts } = theme;\n const { inputBorder, inputBorderHovered, inputFocusBorderAlt } = semanticColors;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n // placeholder style constants\n const placeholderStyles: IStyle = [\n fonts.medium,\n {\n color: semanticColors.inputPlaceholderText,\n opacity: 1,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n ];\n\n const disabledPlaceholderStyles: IStyle = {\n color: semanticColors.disabledText,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n };\n\n // The following lines are to create a semi-transparent color overlay for the disabled state with designer's approval.\n // @todo: investigate the performance cost of the calculation below and apply if negligible.\n // Replacing with a static color for now.\n // const rgbColor: IRGB | undefined = cssColor(palette.neutralQuaternaryAlt);\n // const disabledOverlayColor = rgbColor ? `rgba(${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b}, 0.29)` : 'transparent';\n const disabledOverlayColor = 'rgba(218, 218, 218, 0.29)';\n\n return {\n root: [classNames.root, className, { position: 'relative' }],\n text: [\n classNames.text,\n {\n display: 'flex',\n position: 'relative',\n flexWrap: 'wrap',\n alignItems: 'center',\n boxSizing: 'border-box',\n minWidth: 180,\n minHeight: 30,\n border: `1px solid ${inputBorder}`,\n borderRadius: effects.roundedCorner2,\n },\n !isFocused &&\n !disabled && {\n selectors: {\n ':hover': {\n borderColor: inputBorderHovered,\n },\n },\n },\n isFocused && !disabled && getInputFocusStyle(inputFocusBorderAlt, effects.roundedCorner2),\n disabled && {\n borderColor: disabledOverlayColor,\n selectors: {\n ':after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n background: disabledOverlayColor,\n },\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n selectors: {\n ':after': {\n background: 'none',\n },\n },\n },\n },\n },\n ],\n itemsWrapper: [\n classNames.itemsWrapper,\n {\n display: 'flex',\n flexWrap: 'wrap',\n maxWidth: '100%',\n },\n ],\n input: [\n classNames.input,\n fonts.medium,\n {\n height: 30,\n border: 'none',\n flexGrow: 1,\n outline: 'none',\n padding: '0 6px 0',\n alignSelf: 'flex-end',\n borderRadius: effects.roundedCorner2,\n backgroundColor: 'transparent',\n color: semanticColors.inputText,\n selectors: {\n '::-ms-clear': {\n display: 'none',\n },\n '&:placeholder-shown': {\n textOverflow: 'ellipsis',\n },\n },\n },\n getPlaceholderStyles(placeholderStyles),\n disabled && getPlaceholderStyles(disabledPlaceholderStyles),\n inputClassName,\n ],\n screenReaderText: hiddenContentStyle,\n };\n}\n","import { getGlobalClassNames, getFocusStyle, HighContrastSelector } from '../../../Styling';\nimport { ButtonGlobalClassNames } from '../../Button/BaseButton.classNames';\nimport { getRTL } from '../../../Utilities';\nimport type { ITagItemStyleProps, ITagItemStyles } from './TagPicker.types';\n\nconst GlobalClassNames = {\n root: 'ms-TagItem',\n text: 'ms-TagItem-text',\n close: 'ms-TagItem-close',\n isSelected: 'is-selected',\n};\n\nconst TAG_HEIGHT = 26;\n\nexport function getStyles(props: ITagItemStyleProps): ITagItemStyles {\n const { className, theme, selected, disabled } = props;\n\n const { palette, effects, fonts, semanticColors } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n getFocusStyle(theme),\n {\n boxSizing: 'content-box',\n flexShrink: '1',\n margin: 2,\n height: TAG_HEIGHT,\n lineHeight: TAG_HEIGHT,\n cursor: 'default',\n userSelect: 'none',\n display: 'flex',\n flexWrap: 'nowrap',\n maxWidth: 300,\n minWidth: 0, // needed to prevent long tags from overflowing container\n borderRadius: effects.roundedCorner2,\n color: semanticColors.inputText,\n background: palette.neutralLighter,\n selectors: {\n ':hover': [\n !disabled &&\n !selected && {\n color: palette.neutralDark,\n background: palette.neutralLight,\n selectors: {\n '.ms-TagItem-close': {\n color: palette.neutralPrimary,\n },\n },\n },\n disabled && { background: palette.neutralLighter },\n ],\n [HighContrastSelector]: {\n border: `1px solid ${!selected ? 'WindowText' : 'WindowFrame'}`,\n },\n },\n },\n disabled && {\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n },\n },\n },\n selected &&\n !disabled && [\n classNames.isSelected,\n {\n background: palette.themePrimary,\n color: palette.white,\n },\n ],\n className,\n ],\n text: [\n classNames.text,\n {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 30,\n margin: '0 8px',\n },\n disabled && {\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n ],\n close: [\n classNames.close,\n getFocusStyle(theme, { borderColor: 'transparent', inset: 1, outlineColor: palette.white }),\n {\n color: palette.neutralSecondary,\n width: 30,\n height: '100%',\n flex: '0 0 auto',\n borderRadius: getRTL(theme)\n ? `${effects.roundedCorner2} 0 0 ${effects.roundedCorner2}`\n : `0 ${effects.roundedCorner2} ${effects.roundedCorner2} 0`,\n selectors: {\n ':hover': {\n background: palette.neutralQuaternaryAlt,\n color: palette.neutralPrimary,\n },\n [`.${classNames.isSelected} &, :focus`]: {\n color: palette.white,\n background: palette.themePrimary,\n },\n ':focus:hover': {\n color: palette.white,\n background: palette.themeDark,\n },\n ':active': {\n color: palette.white,\n backgroundColor: palette.themeDark,\n },\n },\n },\n disabled && {\n selectors: {\n [`.${ButtonGlobalClassNames.msButtonIcon}`]: {\n color: palette.neutralSecondary,\n },\n },\n },\n ],\n };\n}\n","import * as React from 'react';\n\nimport { styled, classNamesFunction } from '../../../Utilities';\nimport { IconButton, IButton } from '../../../Button';\nimport { getStyles } from './TagItem.styles';\nimport { useId } from '@fluentui/react-hooks';\nimport type { ITagItemProps, ITagItemStyleProps, ITagItemStyles } from './TagPicker.types';\n\nconst getClassNames = classNamesFunction();\n\n/**\n * {@docCategory TagPicker}\n */\nexport const TagItemBase = (props: ITagItemProps) => {\n const {\n theme,\n styles,\n selected,\n disabled,\n enableTagFocusInDisabledPicker,\n children,\n className,\n index,\n onRemoveItem,\n removeButtonAriaLabel,\n title = typeof props.children === 'string' ? props.children : props.item.name,\n removeButtonIconProps,\n } = props;\n\n const buttonRef = React.createRef();\n\n const handleClick: React.MouseEventHandler = () => {\n buttonRef.current?.focus();\n };\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n selected,\n disabled,\n });\n\n const itemId = useId();\n\n const disabledAttrs = enableTagFocusInDisabledPicker\n ? {\n 'aria-disabled': disabled,\n tabindex: 0,\n }\n : {\n disabled: disabled,\n };\n\n return (\n
      \n \n {children}\n \n \n \n
      \n );\n};\n\nexport const TagItem = styled(TagItemBase, getStyles, undefined, {\n scope: 'TagItem',\n});\n","import { getGlobalClassNames } from '../../../Styling';\nimport type { ITagItemSuggestionStyleProps, ITagItemSuggestionStyles } from './TagPicker.types';\n\nconst GlobalClassNames = {\n suggestionTextOverflow: 'ms-TagItem-TextOverflow',\n};\n\nexport function getStyles(props: ITagItemSuggestionStyleProps): ITagItemSuggestionStyles {\n const { className, theme } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n suggestionTextOverflow: [\n classNames.suggestionTextOverflow,\n {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '60vw',\n padding: '6px 12px 7px',\n whiteSpace: 'nowrap',\n },\n className,\n ],\n };\n}\n","import * as React from 'react';\n\nimport { classNamesFunction, styled } from '../../../Utilities';\nimport { getStyles } from './TagItemSuggestion.styles';\nimport type {\n ITagItemSuggestionProps,\n ITagItemSuggestionStyleProps,\n ITagItemSuggestionStyles,\n} from './TagPicker.types';\n\nconst getClassNames = classNamesFunction();\n\n/**\n * {@docCategory TagPicker}\n */\nexport const TagItemSuggestionBase = (props: ITagItemSuggestionProps) => {\n const { styles, theme, children } = props;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n });\n\n return
      {children}
      ;\n};\n\nexport const TagItemSuggestion = styled<\n ITagItemSuggestionProps,\n ITagItemSuggestionStyleProps,\n ITagItemSuggestionStyles\n>(TagItemSuggestionBase, getStyles, undefined, { scope: 'TagItemSuggestion' });\n","import * as React from 'react';\nimport { styled } from '../../../Utilities';\nimport { BasePicker } from '../BasePicker';\nimport { getStyles } from '../BasePicker.styles';\nimport { TagItem } from './TagItem';\nimport { TagItemSuggestion } from './TagItemSuggestion';\nimport type { IBasePickerStyleProps, IBasePickerStyles } from '../BasePicker.types';\nimport type { ITagPickerProps, ITag, ITagItemProps } from './TagPicker.types';\n\n/**\n * {@docCategory TagPicker}\n */\nexport class TagPickerBase extends BasePicker {\n public static defaultProps = {\n onRenderItem: (props: ITagItemProps) => {props.item.name},\n onRenderSuggestionsItem: (props: ITag) => {props.name},\n };\n}\n\nexport const TagPicker = styled(\n TagPickerBase,\n getStyles,\n undefined,\n {\n scope: 'TagPicker',\n },\n);\n","import { TagPicker, Label } from \"../../fluent\";\r\nimport { isNullOrEmpty } from \"../helpers/string-helper\";\r\nimport React from \"react\";\r\nexport const KeyWordField = (props) => {\r\n const keywords = (props.keywords || []).map(o => ({ key: o, name: o }));\r\n const selectedItems = (props.selectedItems || []).map(o => ({ key: o, name: o }));\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(Label, null, props.label),\r\n React.createElement(TagPicker, { onResolveSuggestions: (filterText, currentTags = []) => {\r\n // Excluir del listado los tags que ya han sido seleccionados\r\n let tags = keywords.filter(o => currentTags.findIndex(p => o.key == p.name) < 0);\r\n // Si el texto que el usuario esta escribiendo no está, se agrega entonces como una opción más\r\n if (keywords.findIndex(o => o.name.trim().toLowerCase() == filterText.trim().toLowerCase())) {\r\n tags.push({ key: filterText, name: filterText });\r\n }\r\n if (isNullOrEmpty(filterText)) {\r\n return tags;\r\n }\r\n // Filtrar items que coincidan con el texto\r\n tags = tags.filter(tag => tag.name.toLowerCase().includes(filterText.toLowerCase()));\r\n return tags;\r\n }, getTextFromItem: (item) => { var _a; return ((_a = item === null || item === void 0 ? void 0 : item.documentTitleProps) === null || _a === void 0 ? void 0 : _a.title) || ''; }, pickerSuggestionsProps: {\r\n suggestionsHeaderText: 'Palabras clave sugeridas',\r\n noResultsFoundText: 'Presione la tecla Enter para crear'\r\n }, itemLimit: 10, onChange: (items = []) => props.onChanged(items.map(o => o.name)), selectedItems: selectedItems, disabled: props.disabled }));\r\n};\r\n","import { Icon, PanelType } from '../../fluent';\r\nimport { StandarPanel } from './StandarPanel';\r\nimport React from 'react';\r\nimport { Column } from './Column';\r\nimport { isNullOrEmpty } from '../helpers/string-helper';\r\nimport { Grid } from './Grid';\r\nimport { Row } from './Row';\r\nconst boxStyte = {\r\n padding: '15px',\r\n marginTop: '20px'\r\n};\r\nexport class Notifications extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n notifications: this._processMetadata(props.notifications || []),\r\n show: props.show || false\r\n };\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n notifications: this._processMetadata(props.notifications || []),\r\n show: props.show || false\r\n });\r\n }\r\n renderDefaultItem(notification) {\r\n return React.createElement(\"div\", { className: \"ms-depth-4 x-hidden-focus\", style: boxStyte },\r\n React.createElement(\"span\", { style: { fontWeight: 'bold' } }, notification.Title),\r\n React.createElement(Icon, { iconName: 'Cancel', onClick: () => this._removeNotification(notification), style: {\r\n position: 'absolute',\r\n top: '28px',\r\n right: '15px',\r\n cursor: 'pointer'\r\n } }),\r\n React.createElement(\"br\", null),\r\n React.createElement(\"div\", null, notification.Description),\r\n React.createElement(\"div\", { style: { fontSize: '0.8em', textAlign: 'right' } }, notification.CreationDateTime));\r\n }\r\n render() {\r\n return React.createElement(StandarPanel, { isOpen: this.state.show, type: PanelType.smallFixedFar, headerText: 'Notificaciones', onClose: () => {\r\n this.props.onClose();\r\n }, onRender: () => React.createElement(Grid, null, this.state.notifications.map(notification => React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 }, typeof this.props.onRenderItem === 'function' ? this.props.onRenderItem(notification) : this.renderDefaultItem(notification))))), hideAcceptButton: true });\r\n }\r\n _processMetadata(items) {\r\n return items.map(o => {\r\n if (!isNullOrEmpty(o.Metadata)) {\r\n try {\r\n o.Props = JSON.parse(o.Metadata);\r\n }\r\n catch (error) { }\r\n }\r\n return o;\r\n });\r\n }\r\n _removeNotification(notification) {\r\n this.props.onRemove(notification);\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { ComboBox } from './../../fluent';\r\nexport class RoleComboBox extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = this._mapProps(props);\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState(this._mapProps(props));\r\n }\r\n render() {\r\n return React.createElement(ComboBox, { label: this.state.label, useComboBoxAsMenuWidth: true, required: this.state.required, disabled: this.state.disabled, options: this.state.rolesCO, onChange: (_, option) => this._onChange(option), errorMessage: this.state.errorMessage, selectedKey: this.state.selectedKey, panelProps: {\r\n hasCloseButton: true,\r\n isBlocking: true\r\n } });\r\n }\r\n _mapProps(props) {\r\n return {\r\n disabled: props.disabled || false,\r\n errorMessage: props.errorMessage || '',\r\n label: props.label,\r\n required: props.required || false,\r\n roles: props.roles || [],\r\n rolesCO: (props.roles || []).map(o => ({ key: o.IdRol, text: o.Nombre })),\r\n selectedKey: props.selectedKey\r\n };\r\n }\r\n _onChange(option) {\r\n const roleId = Number(option.key);\r\n const role = this.state.roles.find(o => o.IdRol == roleId);\r\n this.props.onChanged(role);\r\n }\r\n}\r\n","import { TextField } from '../../fluent';\r\nimport React from 'react';\r\nexport class NumberField extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n value: props.value ? String(props.value) : props.initialValue\r\n };\r\n }\r\n render() {\r\n return (React.createElement(TextField, { label: this.props.label, value: this.state.value, required: this.props.required, errorMessage: this.state.errorMessage, maxLength: this.props.maxLength, disabled: this.props.disabled, borderless: this.props.borderless || false, onChange: (_, value) => this._onChange(value), onClick: this.props.onClick, onRenderPrefix: this.props.onRenderPrefix }));\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n if (isNaN(Number(nextProps.value)) || nextProps.value === 0) {\r\n this.setState({ value: this.props.initialValue });\r\n }\r\n else {\r\n this.setState({ value: String(nextProps.value) });\r\n }\r\n this.setState({ errorMessage: nextProps.errorMessage });\r\n }\r\n _onChange(value) {\r\n value = value.split('').filter(o => !isNaN(Number(o))).join('');\r\n this.setState({ value });\r\n if (this.props.onChanged) {\r\n this.props.onChanged(Number(value));\r\n }\r\n }\r\n}\r\n","import * as React from 'react';\nimport { useControllableValue, useId, useWarnings } from '@fluentui/react-hooks';\nimport { classNamesFunction, getNativeProps, inputProperties, useFocusRects } from '@fluentui/utilities';\nimport { Label } from '../Label/Label';\nimport type { IToggleProps, IToggleStyleProps, IToggleStyles, IToggle } from './Toggle.types';\n\nconst getClassNames = classNamesFunction();\n\nconst COMPONENT_NAME = 'Toggle';\n\nexport const ToggleBase: React.FunctionComponent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n as: RootType = 'div',\n ariaLabel,\n checked: controlledChecked,\n className,\n defaultChecked = false,\n disabled,\n inlineLabel,\n label,\n // eslint-disable-next-line deprecation/deprecation\n offAriaLabel,\n offText,\n // eslint-disable-next-line deprecation/deprecation\n onAriaLabel,\n onChange,\n // eslint-disable-next-line deprecation/deprecation\n onChanged,\n onClick: onToggleClick,\n onText,\n role,\n styles,\n theme,\n } = props;\n\n const [checked, setChecked] = useControllableValue(\n controlledChecked,\n defaultChecked,\n React.useCallback(\n (ev: React.MouseEvent, isChecked: boolean) => {\n onChange?.(ev, isChecked);\n onChanged?.(isChecked);\n },\n [onChange, onChanged],\n ),\n );\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n disabled,\n checked,\n inlineLabel,\n onOffMissing: !onText && !offText,\n });\n const badAriaLabel = checked ? onAriaLabel : offAriaLabel;\n const id = useId(COMPONENT_NAME, props.id);\n const labelId = `${id}-label`;\n const stateTextId = `${id}-stateText`;\n const stateText = checked ? onText : offText;\n const toggleNativeProps = getNativeProps>(props, inputProperties, [\n 'defaultChecked',\n ]);\n\n // The following properties take priority for what Narrator should read:\n // 1. ariaLabel\n // 2. onAriaLabel (if checked) or offAriaLabel (if not checked)\n // 3. label, if existent\n\n let labelledById: string | undefined = undefined;\n if (!ariaLabel && !badAriaLabel) {\n if (label) {\n labelledById = labelId;\n }\n if (stateText && !labelledById) {\n labelledById = stateTextId;\n }\n }\n\n const toggleButton = React.useRef(null);\n useFocusRects(toggleButton);\n useComponentRef(props, checked, toggleButton);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks -- build-time conditional\n useWarnings({\n name: COMPONENT_NAME,\n props,\n deprecations: {\n offAriaLabel: undefined,\n onAriaLabel: 'ariaLabel',\n onChanged: 'onChange',\n },\n mutuallyExclusive: { checked: 'defaultChecked' },\n });\n }\n\n const onClick = (ev: React.MouseEvent) => {\n if (!disabled) {\n setChecked(!checked, ev);\n if (onToggleClick) {\n onToggleClick(ev);\n }\n }\n };\n\n const slotProps = {\n root: {\n className: classNames.root,\n hidden: toggleNativeProps.hidden,\n },\n label: {\n children: label,\n className: classNames.label,\n htmlFor: id,\n id: labelId,\n },\n container: {\n className: classNames.container,\n },\n pill: {\n ...toggleNativeProps,\n 'aria-disabled': disabled,\n 'aria-checked': checked,\n 'aria-label': ariaLabel ? ariaLabel : badAriaLabel,\n 'aria-labelledby': labelledById,\n className: classNames.pill,\n 'data-is-focusable': true,\n 'data-ktp-target': true,\n disabled: disabled,\n id: id,\n onClick: onClick,\n ref: toggleButton,\n role: role ? role : 'switch',\n type: 'button' as React.ButtonHTMLAttributes['type'],\n },\n thumb: {\n className: classNames.thumb,\n },\n stateText: {\n children: stateText,\n className: classNames.text,\n htmlFor: id,\n id: stateTextId,\n },\n };\n\n return (\n } {...slotProps.root}>\n {label && \n );\n },\n);\n\nToggleBase.displayName = COMPONENT_NAME + 'Base';\n\nconst useComponentRef = (\n props: IToggleProps,\n isChecked: boolean | undefined,\n toggleButtonRef: React.RefObject,\n) => {\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n get checked() {\n return !!isChecked;\n },\n focus() {\n if (toggleButtonRef.current) {\n toggleButtonRef.current.focus();\n }\n },\n }),\n [isChecked, toggleButtonRef],\n );\n};\n","import * as React from 'react';\nimport { styled } from '@fluentui/utilities';\nimport { ToggleBase } from './Toggle.base';\nimport { getStyles } from './Toggle.styles';\nimport type { IToggleProps, IToggleStyleProps, IToggleStyles } from './Toggle.types';\n\nexport const Toggle: React.FunctionComponent = styled(\n ToggleBase,\n getStyles,\n undefined,\n {\n scope: 'Toggle',\n },\n);\n","import {\n HighContrastSelector,\n getFocusStyle,\n FontWeights,\n getHighContrastNoAdjustStyle,\n} from '@fluentui/style-utilities';\nimport type { IToggleStyleProps, IToggleStyles } from './Toggle.types';\n\nconst DEFAULT_PILL_WIDTH = 40;\nconst DEFAULT_PILL_HEIGHT = 20;\nconst DEFAULT_THUMB_SIZE = 12;\n\nexport const getStyles = (props: IToggleStyleProps): IToggleStyles => {\n const { theme, className, disabled, checked, inlineLabel, onOffMissing } = props;\n const { semanticColors, palette } = theme;\n\n // Tokens\n const pillUncheckedBackground = semanticColors.bodyBackground;\n const pillCheckedBackground = semanticColors.inputBackgroundChecked;\n const pillCheckedHoveredBackground = semanticColors.inputBackgroundCheckedHovered;\n const thumbUncheckedHoveredBackground = palette.neutralDark;\n const pillCheckedDisabledBackground = semanticColors.disabledBodySubtext;\n const thumbBackground = semanticColors.smallInputBorder;\n const thumbCheckedBackground = semanticColors.inputForegroundChecked;\n const thumbDisabledBackground = semanticColors.disabledBodySubtext;\n const thumbCheckedDisabledBackground = semanticColors.disabledBackground;\n const pillBorderColor = semanticColors.smallInputBorder;\n const pillBorderHoveredColor = semanticColors.inputBorderHovered;\n const pillBorderDisabledColor = semanticColors.disabledBodySubtext;\n const textDisabledColor = semanticColors.disabledText;\n\n return {\n root: [\n 'ms-Toggle',\n checked && 'is-checked',\n !disabled && 'is-enabled',\n disabled && 'is-disabled',\n theme.fonts.medium,\n {\n marginBottom: '8px',\n },\n inlineLabel && {\n display: 'flex',\n alignItems: 'center',\n },\n className,\n ],\n\n label: [\n 'ms-Toggle-label',\n { display: 'inline-block' },\n disabled && {\n color: textDisabledColor,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n inlineLabel &&\n !onOffMissing && {\n marginRight: 16,\n },\n onOffMissing &&\n inlineLabel && {\n order: 1,\n marginLeft: 16,\n },\n inlineLabel && { wordBreak: 'break-word' },\n ],\n\n container: [\n 'ms-Toggle-innerContainer',\n {\n display: 'flex',\n position: 'relative',\n },\n ],\n\n pill: [\n 'ms-Toggle-background',\n getFocusStyle(theme, { inset: -3 }),\n {\n fontSize: '20px',\n boxSizing: 'border-box',\n width: DEFAULT_PILL_WIDTH,\n height: DEFAULT_PILL_HEIGHT,\n borderRadius: DEFAULT_PILL_HEIGHT / 2,\n transition: 'all 0.1s ease',\n border: `1px solid ${pillBorderColor}`,\n background: pillUncheckedBackground,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n padding: '0 3px',\n overflow: 'visible',\n },\n !disabled && [\n !checked && {\n selectors: {\n ':hover': [\n {\n borderColor: pillBorderHoveredColor,\n },\n ],\n ':hover .ms-Toggle-thumb': [\n {\n backgroundColor: thumbUncheckedHoveredBackground,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n },\n ],\n },\n },\n checked && [\n {\n background: pillCheckedBackground,\n borderColor: 'transparent',\n justifyContent: 'flex-end',\n },\n {\n selectors: {\n ':hover': [\n {\n backgroundColor: pillCheckedHoveredBackground,\n borderColor: 'transparent',\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n },\n },\n },\n ],\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n ],\n disabled && [\n {\n cursor: 'default',\n },\n !checked && [\n {\n borderColor: pillBorderDisabledColor,\n },\n ],\n checked && [\n {\n backgroundColor: pillCheckedDisabledBackground,\n borderColor: 'transparent',\n justifyContent: 'flex-end',\n },\n ],\n ],\n !disabled && {\n selectors: {\n '&:hover': {\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n },\n },\n },\n ],\n\n thumb: [\n 'ms-Toggle-thumb',\n {\n display: 'block',\n width: DEFAULT_THUMB_SIZE,\n height: DEFAULT_THUMB_SIZE,\n borderRadius: '50%',\n transition: 'all 0.1s ease',\n backgroundColor: thumbBackground,\n /* Border is added to handle high contrast mode for Firefox */\n borderColor: 'transparent',\n borderWidth: DEFAULT_THUMB_SIZE / 2,\n borderStyle: 'solid',\n boxSizing: 'border-box',\n },\n !disabled &&\n checked && [\n {\n backgroundColor: thumbCheckedBackground,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Window',\n borderColor: 'Window',\n },\n },\n },\n ],\n disabled && [\n !checked && [\n {\n backgroundColor: thumbDisabledBackground,\n },\n ],\n checked && [\n {\n backgroundColor: thumbCheckedDisabledBackground,\n },\n ],\n ],\n ],\n\n text: [\n 'ms-Toggle-stateText',\n {\n selectors: {\n // Workaround: make rules more specific than Label rules.\n '&&': {\n padding: '0',\n margin: '0 8px',\n userSelect: 'none',\n fontWeight: FontWeights.regular,\n },\n },\n },\n disabled && {\n selectors: {\n '&&': {\n color: textDisabledColor,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n },\n },\n ],\n };\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { EmptyColumn } from '../../common/models/standar-columns';\r\nimport { paginateDataAsync } from '../../common/helpers/paginate-data';\r\nimport React from 'react';\r\nimport { Column, DataTable, Row, TeachingLink } from '../../common';\r\nimport { SelectionMode, Toggle } from '../../fluent';\r\nimport { Grid } from '../../common/components/Grid';\r\nexport class RoleManager extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onChangedToggle = (item, isAssociated) => __awaiter(this, void 0, void 0, function* () {\r\n if (isAssociated) {\r\n yield this.props.onAddItem(item.IdRol);\r\n }\r\n else {\r\n yield this.props.onRemoveItem(item.IdRol);\r\n }\r\n this.dtRef.refreshTable();\r\n });\r\n this.state = {\r\n associateRoles: props.associateRoles || [],\r\n roles: props.roles || [],\r\n title: props.title || ''\r\n };\r\n }\r\n componentDidMount() {\r\n var _a;\r\n (_a = this.dtRef) === null || _a === void 0 ? void 0 : _a.refreshTable();\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n associateRoles: props.associateRoles || [],\r\n roles: props.roles || [],\r\n title: props.title || ''\r\n }, () => {\r\n var _a;\r\n (_a = this.dtRef) === null || _a === void 0 ? void 0 : _a.refreshTable();\r\n });\r\n }\r\n render() {\r\n return React.createElement(DataTable, { allowSearch: true, searchTooltip: 'Filtra los roles existentes del sistema', onDownloadServerData: (request) => {\r\n return paginateDataAsync(request, {\r\n data: () => this.state.roles,\r\n search: (item) => [item.Nombre],\r\n onSort: (items) => {\r\n items.ForEach(role => role.Seleccionado = this.state.associateRoles.includes(role.IdRol));\r\n return items.OrderBy(o => o.Nombre).OrderBy(o => o.Seleccionado ? 1 : 2);\r\n }\r\n });\r\n }, selectionMode: SelectionMode.none, ref: (e) => this.dtRef = e, columns: [\r\n {\r\n key: 'Associated',\r\n name: '',\r\n fieldName: 'Associated',\r\n minWidth: 60,\r\n maxWidth: 60,\r\n isResizable: false,\r\n onRender: (item) => {\r\n const isAsociated = this.state.associateRoles.find(o => o === item.IdRol) != null;\r\n return React.createElement(Toggle, { checked: isAsociated, onChange: (_, checked) => this.onChangedToggle(item, checked) });\r\n }\r\n },\r\n {\r\n key: 'Nombre',\r\n name: 'Nombre',\r\n fieldName: 'Nombre',\r\n isResizable: true,\r\n minWidth: 350,\r\n maxWidth: 500,\r\n onRender: (item) => (React.createElement(TeachingLink, { id: item.IdRol, showPrimaryButton: false, text: item.Nombre, onOpenTeachingBubble: (complete) => complete(item), tooltip: item.Nombre, onRenderContent: () => React.createElement(React.Fragment, null,\r\n React.createElement(Grid, null,\r\n React.createElement(Row, null,\r\n React.createElement(Column, { size: 12 },\r\n React.createElement(\"span\", { className: \"section-link-title\" }, \"Direcci\\u00F3n:\"),\r\n React.createElement(\"span\", { className: \"section-link-text\" }, item.Descripcion || 'Sin descripción'))))) }))\r\n },\r\n EmptyColumn\r\n ], title: this.state.title, hideHeaders: true });\r\n }\r\n}\r\n","import React from 'react';\r\nimport { StandarPanel } from './StandarPanel';\r\nimport { PanelType } from '../../fluent';\r\nimport { CodeEditor } from './CodeEditor';\r\nexport class SqlEditorPanel extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n code: this.props.code || '',\r\n show: this.props.show || false,\r\n title: this.props.title || 'Editor SQL'\r\n };\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({\r\n code: nextProps.code,\r\n show: nextProps.show,\r\n title: nextProps.title || 'Editor SQL'\r\n });\r\n }\r\n render() {\r\n return React.createElement(StandarPanel, { headerText: this.state.title + ' SQL', isOpen: this.state.show, type: PanelType.large, onAccept: () => {\r\n this.props.onAccept(this.state.code);\r\n this.props.onClose();\r\n }, onClose: () => {\r\n this.props.onClose();\r\n }, onRender: () => React.createElement(CodeEditor, { value: this.state.code || '', onChanged: json => {\r\n this.setState({\r\n code: json\r\n }, () => this.props.onChange(this.state.code));\r\n }, language: 'javascript' }) });\r\n }\r\n}\r\n","import { Panel, PanelType, PrimaryButton, DefaultButton } from '../../fluent';\r\nimport { CodeEditor } from './CodeEditor';\r\nimport React from 'react';\r\nexport const XmlEditorPanel = (props) => {\r\n return React.createElement(Panel, { isOpen: props.show, type: PanelType.large, headerText: props.title, hasCloseButton: false, isFooterAtBottom: true, onRenderFooterContent: () => React.createElement(\"div\", null,\r\n React.createElement(\"div\", { className: 'ms-Grid-row' },\r\n React.createElement(\"div\", { className: 'ms-Grid-col ms-u-sm12', style: { textAlign: 'right' } },\r\n React.createElement(PrimaryButton, { text: 'Aceptar', primary: true, onClick: () => {\r\n let newProps = undefined;\r\n try {\r\n newProps = JSON.parse(props.code);\r\n }\r\n catch (error) {\r\n if (props.onValidationError) {\r\n props.onValidationError();\r\n }\r\n return;\r\n }\r\n props.onAccept(JSON.stringify(newProps, undefined, 2));\r\n props.onClose();\r\n } }),\r\n React.createElement(\"span\", null, \"\\u00A0\\u00A0\"),\r\n React.createElement(DefaultButton, { text: 'Volver', primary: false, onClick: () => props.onClose() })))), closeButtonAriaLabel: 'Cerrar' },\r\n React.createElement(CodeEditor, { value: props.code || '', onChanged: value => props.onChange(value), language: 'xml' }));\r\n};\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Checkbox } from '@fluentui/react/lib/Checkbox';\r\nimport { ComboBox } from '@fluentui/react/lib/ComboBox';\r\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\r\nimport { Icon } from '@fluentui/react/lib/Icon';\r\nimport { Label } from '@fluentui/react/lib/Label';\r\nimport { PanelType } from '@fluentui/react/lib/Panel';\r\nimport { PropertyDataTypeEnum } from '../models/property-grid/data-type';\r\nimport { StandarPanel } from './StandarPanel';\r\nimport { TeachingBubble } from '@fluentui/react/lib/TeachingBubble';\r\nimport { TextField } from '@fluentui/react/lib/TextField';\r\nimport { TooltipHost } from '@fluentui/react/lib/Tooltip';\r\nimport React from 'react';\r\nimport { ColorSelector } from './ColorSelector';\r\nimport { RoleComboBox } from '../../archivox';\r\nimport { Column, Row } from '..';\r\nimport { RoleManager } from '../../archivox/components/RoleManager';\r\nimport { isNullOrEmpty } from '../helpers/string-helper';\r\nimport { Grid } from './Grid';\r\nimport { CodeEditor } from './CodeEditor';\r\nimport { JavaScriptEditorPanel } from './JavaScriptEditorPanel';\r\nimport { SqlEditorPanel } from './SqlEditorPanel';\r\nimport { JsonEditorPanel } from './JsonEditorPanel';\r\nimport { XmlEditorPanel } from './XmlEditorPanel';\r\nimport { KeyWordField } from './KeyWordField';\r\nexport const helpIconTheme = {\r\n fontWeight: 'bold',\r\n color: '#0078d4',\r\n fontSize: '0.8em',\r\n border: 'solid 1px #0078d4',\r\n borderRadius: '50%',\r\n background: 'white',\r\n padding: '1px',\r\n marginLeft: '3px'\r\n};\r\nexport class PropertyConfigurator extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n controlType: props.controlType,\r\n helpText: props.helpText || '',\r\n label: props.label,\r\n language: props.language || 'javascript',\r\n options: props.options || [],\r\n prefix: props.suffix || '',\r\n roles: props.roles || [],\r\n series: props.series || [],\r\n showActionEditor: false,\r\n showAdvanceEditor: false,\r\n showRolePanel: false,\r\n showTeaching: false,\r\n subseries: props.subseries || [],\r\n tooltip: props.tooltip || '',\r\n value: props.value,\r\n showCustomForm: false,\r\n customFormValues: {}\r\n };\r\n this._emitOnChange = this._emitOnChange.bind(this);\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n controlType: props.controlType,\r\n helpText: props.helpText || '',\r\n label: props.label,\r\n language: props.language || 'javascript',\r\n options: props.options || [],\r\n prefix: props.suffix || '',\r\n roles: props.roles || [],\r\n series: props.series || [],\r\n subseries: props.subseries || [],\r\n tooltip: props.tooltip,\r\n value: props.value\r\n });\r\n }\r\n _isHelpVisible() {\r\n return typeof this.props.onRenderHelp === 'function' || (this.state.helpText != null && this.state.helpText != '');\r\n }\r\n _renderLabel() {\r\n const isIconVisible = this._isHelpVisible();\r\n return React.createElement(Label, null,\r\n this.state.label,\r\n isIconVisible && React.createElement(\"small\", { ref: e => {\r\n if (e != null) {\r\n this._ref = e;\r\n }\r\n } },\r\n React.createElement(Icon, { style: helpIconTheme, iconName: 'Help', onClick: (ev) => {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n this.setState({\r\n showTeaching: true\r\n });\r\n } })));\r\n }\r\n _renderRoleEditor() {\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(TextField, { label: this.props.label, readOnly: true, placeholder: this.props.label, value: `${(this.state.value || []).length} roles authorized`, onRenderSuffix: () => React.createElement(\"div\", { style: { minWidth: '25px', textAlign: 'center' }, onClick: () => {\r\n this.setState({\r\n showRolePanel: true\r\n });\r\n } }, \"...\"), onRenderPrefix: () => React.createElement(\"div\", null, this.props.execution === 'server' ? 'Sv' : 'Js'), onRenderLabel: () => this._renderLabel() }),\r\n React.createElement(StandarPanel, { isOpen: this.state.showRolePanel, type: PanelType.medium, headerText: 'Roles autorizados', onAccept: () => {\r\n this.setState({\r\n showRolePanel: false\r\n });\r\n }, onClose: () => {\r\n this.setState({\r\n showRolePanel: false\r\n });\r\n }, onRender: () => React.createElement(Grid, null,\r\n React.createElement(RoleManager, { onAddItem: (roleId) => __awaiter(this, void 0, void 0, function* () {\r\n const value = this.state.value || [];\r\n if (!value.includes(roleId)) {\r\n value.push(roleId);\r\n this.props.onChanged(value);\r\n }\r\n }), onRemoveItem: (roleId) => __awaiter(this, void 0, void 0, function* () {\r\n let value = this.state.value || [];\r\n if (value.includes(roleId)) {\r\n value = value.filter(o => o != roleId);\r\n this.props.onChanged(value);\r\n }\r\n }), associateRoles: this.state.value || [], roles: this.state.roles || [] })) }));\r\n }\r\n _renderRoleComboBox() {\r\n return React.createElement(RoleComboBox, { selectedKey: this.state.value || 0, roles: this.state.roles || [], onChanged: role => this.props.onChanged(role.IdRol), label: this.state.label });\r\n }\r\n _renderInlineJavascriptEditor() {\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(Label, null, this.state.label),\r\n React.createElement(CodeEditor, { value: this.state.value, onChanged: (value) => this.props.onChanged(value), language: 'javascript', height: this.props.height, onMount: this.props.onMountCodeEditor }));\r\n }\r\n _renderInlineJsonEditor() {\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(Label, null, this.state.label),\r\n React.createElement(CodeEditor, { value: this.state.value, onChanged: (value) => this.props.onChanged(value), language: 'json', height: this.props.height, onMount: this.props.onMountCodeEditor }));\r\n }\r\n _renderInlineXmlEditor() {\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(Label, null, this.state.label),\r\n React.createElement(CodeEditor, { value: this.state.value, onChanged: (value) => this.props.onChanged(value), language: 'xml', height: this.props.height, onMount: this.props.onMountCodeEditor }));\r\n }\r\n _renderInlineSqlEditor() {\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(Label, null, this.state.label),\r\n React.createElement(CodeEditor, { value: this.state.value, onChanged: (value) => this.props.onChanged(value), language: 'sql', height: this.props.height, onMount: this.props.onMountCodeEditor }));\r\n }\r\n _renderCustomForm() {\r\n const onChanged = (key, value) => {\r\n this.props.onChanged(Object.assign(Object.assign({}, (this.state.value || {})), { [key]: value }));\r\n };\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(TextField, { label: this.props.label || '', placeholder: this.props.label || '', onChange: (_, value) => this.props.onChanged(value), maxLength: 16636, value: this.state.value, multiline: this.props.multiline || false, onRenderLabel: () => this._renderLabel(), autoComplete: 'off', disabled: this.props.disabled || false, onRenderSuffix: () => (React.createElement(\"div\", { style: {\r\n minWidth: '25px',\r\n textAlign: 'center'\r\n }, onClick: () => {\r\n this.setState({\r\n showCustomForm: true,\r\n customFormValues: this.state.value || {}\r\n });\r\n } }, \"...\")) }),\r\n React.createElement(StandarPanel, { isOpen: this.state.showCustomForm, type: PanelType.medium, headerText: this.props.label || '', onAccept: () => {\r\n this.props.onChanged(this.state.customFormValues);\r\n this.setState({ showCustomForm: false });\r\n }, onClose: () => this.setState({ showCustomForm: false }), onRender: () => {\r\n if (typeof this.props.onRenderCustomForm === 'function') {\r\n return this.props.onRenderCustomForm(this.state.value, onChanged);\r\n }\r\n return undefined;\r\n } }));\r\n }\r\n render() {\r\n var _a, _b;\r\n const editor = this.state.language === 'javascript'\r\n ? React.createElement(JavaScriptEditorPanel, { show: this.state.showAdvanceEditor, code: this.state.value, onAccept: (value) => {\r\n this.setState({\r\n value\r\n }, () => this.props.onChanged(value));\r\n }, onChange: (value) => {\r\n this.setState({\r\n value\r\n }, () => this.props.onChanged(value));\r\n }, onClose: () => {\r\n this.setState({\r\n showAdvanceEditor: false\r\n });\r\n }, title: this.state.label })\r\n : this.state.language === 'sql'\r\n ? React.createElement(SqlEditorPanel, { show: this.state.showAdvanceEditor, code: this.state.value, onAccept: (value) => {\r\n this.setState({\r\n value\r\n }, () => this.props.onChanged(value));\r\n }, onChange: (value) => {\r\n this.setState({\r\n value\r\n }, () => this.props.onChanged(value));\r\n }, onClose: () => {\r\n this.setState({\r\n showAdvanceEditor: false\r\n });\r\n }, title: this.state.label })\r\n : this.state.language === 'json'\r\n ? React.createElement(JsonEditorPanel, { code: this.state.value, onAccept: (value) => this.setState({ value }, () => this.props.onChanged(value)), onChange: (value) => this.setState({ value }, () => this.props.onChanged(value)), onClose: () => this.setState({ showAdvanceEditor: false }), show: this.state.showAdvanceEditor, title: this.state.label, onValidationError: () => {\r\n if (this.props.onError) {\r\n this.props.onError('El json contiene errores');\r\n }\r\n } })\r\n : this.state.language === 'xml'\r\n ? React.createElement(XmlEditorPanel, { code: this.state.value, onAccept: (value) => this.setState({ value }, () => this.props.onChanged(value)), onChange: (value) => this.setState({ value }, () => this.props.onChanged(value)), onClose: () => this.setState({ showAdvanceEditor: false }), show: this.state.showAdvanceEditor, title: this.state.label, onValidationError: () => {\r\n if (this.props.onError) {\r\n this.props.onError('El xml contiene errores');\r\n }\r\n } })\r\n : null;\r\n const help = this._isHelpVisible()\r\n ? (typeof this.props.onRenderHelp === 'function'\r\n ? this.props.onRenderHelp()\r\n : this.props.helpText) : null;\r\n const actionEditor = this.props.controlType === PropertyDataTypeEnum.Action\r\n ? React.createElement(StandarPanel, { isOpen: this.state.showActionEditor, type: PanelType.large, headerText: this.state.label, onAccept: () => {\r\n }, onClose: () => {\r\n this.setState({\r\n showActionEditor: false\r\n });\r\n }, onRender: () => React.createElement(\"div\", null) })\r\n : null;\r\n let control;\r\n if (typeof this.props.onRenderControl === 'function') {\r\n control = this.props.onRenderControl();\r\n }\r\n else {\r\n switch (this.props.controlType) {\r\n case PropertyDataTypeEnum.Text:\r\n case PropertyDataTypeEnum.LargeText:\r\n control = React.createElement(TextField, { label: this.props.label || '', placeholder: this.props.label || '', onChange: (_, value) => {\r\n this.props.onChanged(value);\r\n }, maxLength: 16636, value: this.state.value, prefix: isNullOrEmpty(this.state.prefix) ? void 0 : this.state.prefix, style: isNullOrEmpty(this.props.suffix) ? {} : { fontFamily: 'monospace', fontWeight: 'bold' }, multiline: this.props.multiline || false, onRenderLabel: () => this._renderLabel(), autoComplete: 'off', disabled: this.props.disabled || false });\r\n break;\r\n case PropertyDataTypeEnum.Code:\r\n control = React.createElement(TextField, { label: this.props.label, readOnly: true, placeholder: this.props.label, onChange: (_, value) => {\r\n this.props.onChanged(value);\r\n }, maxLength: 1024, value: this.state.value || '', onRenderSuffix: () => React.createElement(\"div\", { style: {\r\n minWidth: '25px',\r\n textAlign: 'center'\r\n }, onClick: () => {\r\n if (typeof this.props.onOpenEventEditor === 'function') {\r\n this.props.onOpenEventEditor(this.state.label);\r\n }\r\n else {\r\n if (this.props.language === 'javascript' || this.props.language === 'xml') {\r\n this.setState({ showAdvanceEditor: true });\r\n }\r\n else {\r\n this.setState({ showAdvanceEditor: true });\r\n }\r\n }\r\n } }, \"...\"), onRenderPrefix: () => React.createElement(\"div\", null, this.props.execution === 'server' ? 'Sv' : 'Js'), onRenderLabel: () => this._renderLabel() });\r\n break;\r\n case PropertyDataTypeEnum.Boolean:\r\n control = React.createElement(\"div\", null,\r\n React.createElement(Checkbox, { label: this.props.label, onChange: (_, value) => this.props.onChanged(value), checked: this.state.value || false, onRenderLabel: () => this._renderLabel() }));\r\n break;\r\n case PropertyDataTypeEnum.BooleanWithRule:\r\n control = React.createElement(TextField, { label: this.props.label, placeholder: this.props.label, onChange: (_, value) => {\r\n var _a;\r\n return this.props.onChanged({\r\n text: value || '',\r\n checked: ((_a = this.state.value) === null || _a === void 0 ? void 0 : _a.checked) || false\r\n });\r\n }, style: { fontFamily: 'monospace' }, maxLength: 1024, value: ((_a = this.state.value) === null || _a === void 0 ? void 0 : _a.text) || '', disabled: !((_b = this.state.value) === null || _b === void 0 ? void 0 : _b.checked) || false, onRenderPrefix: () => (React.createElement(Checkbox, { onChange: (_, checked) => {\r\n var _a;\r\n this.props.onChanged({\r\n text: ((_a = this.state.value) === null || _a === void 0 ? void 0 : _a.text) || '',\r\n checked\r\n });\r\n }, checked: this.state.value.checked || false })), onRenderLabel: () => this._renderLabel() });\r\n break;\r\n case PropertyDataTypeEnum.Option:\r\n control = React.createElement(\"div\", null,\r\n this._renderLabel(),\r\n React.createElement(ComboBox, { selectedKey: this.state.value || 0, useComboBoxAsMenuWidth: true, options: this.state.options || [], onChange: (_, value) => this.props.onChanged(value.key), onRenderOption: this.props.onRenderOption, disabled: this.props.disabled || false }));\r\n break;\r\n case PropertyDataTypeEnum.Action:\r\n control = React.createElement(TextField, { label: this.props.label || '', placeholder: this.props.label || '', onChange: (_, value) => {\r\n this.props.onChanged(value);\r\n }, maxLength: 16636, value: this.state.value, prefix: 'Action', iconProps: { iconName: 'SetAction' }, style: { fontFamily: 'monospace', fontWeight: 'bold' }, onRenderLabel: () => this._renderLabel(), autoComplete: 'off', onRenderSuffix: () => React.createElement(\"div\", { onClick: () => {\r\n this.setState({\r\n showActionEditor: true\r\n });\r\n } }, \"Editar\") });\r\n break;\r\n case PropertyDataTypeEnum.Role:\r\n control = this._renderRoleEditor();\r\n break;\r\n case PropertyDataTypeEnum.RoleComboBox:\r\n control = this._renderRoleComboBox();\r\n break;\r\n case PropertyDataTypeEnum.InlineJavaScriptEditor:\r\n control = this._renderInlineJavascriptEditor();\r\n break;\r\n case PropertyDataTypeEnum.InlineJsonEditor:\r\n control = this._renderInlineJsonEditor();\r\n break;\r\n case PropertyDataTypeEnum.InlineXmlEditor:\r\n control = this._renderInlineXmlEditor();\r\n break;\r\n case PropertyDataTypeEnum.InlineSqlEditor:\r\n control = this._renderInlineSqlEditor();\r\n break;\r\n case PropertyDataTypeEnum.CustomForm:\r\n control = this._renderCustomForm();\r\n break;\r\n case PropertyDataTypeEnum.Color:\r\n control = React.createElement(ColorSelector, { label: this.props.label, value: this.state.value || '', onChanged: value => this.props.onChanged(value) });\r\n break;\r\n case PropertyDataTypeEnum.Keywords:\r\n control = React.createElement(KeyWordField, { label: this.props.label, keywords: (this.state.value || '').split('|'), selectedItems: (this.state.value || '').split('|'), onChanged: value => this.props.onChanged(value) });\r\n break;\r\n case PropertyDataTypeEnum.Rule:\r\n control = React.createElement(TextField, { label: this.props.label, placeholder: this.props.label, onChange: (_, value) => this.props.onChanged(value), maxLength: 1024, value: this.state.value || '', onRenderPrefix: () => React.createElement(\"span\", null, \"Fx\"), onRenderLabel: () => this._renderLabel() });\r\n break;\r\n default:\r\n control = React.createElement(\"div\", null, \"Campo no soportado\");\r\n break;\r\n }\r\n }\r\n const column = React.createElement(Column, { size: this.props.colSize || 12 },\r\n isNullOrEmpty(this.state.tooltip)\r\n ? control\r\n : React.createElement(TooltipHost, { content: this.state.tooltip, directionalHint: DirectionalHint.leftCenter }, control),\r\n editor,\r\n help != null && this.state.showTeaching && React.createElement(TeachingBubble, { secondaryButtonProps: {\r\n children: 'Cerrar',\r\n onClick: () => this.setState({ showTeaching: false })\r\n }, onDismiss: () => this.setState({ showTeaching: false }), headline: this.state.label, targetElement: this._ref }, help),\r\n actionEditor);\r\n const isColumn = this.props.gridColumn === true;\r\n if (isColumn) {\r\n return column;\r\n }\r\n else {\r\n return React.createElement(Row, null, column);\r\n }\r\n }\r\n _emitOnChange() {\r\n }\r\n}\r\n","import { DropdownMenuItemType } from '../Dropdown.types';\nimport type { IDropdownOption } from '../Dropdown.types';\n\n/**\n * A utility class to cache size and position in cache.\n *\n * Dropdown options has non-selectable display types. It is therefore not cheap to determine\n * the total number of actual selectable options as well as the position an option is in the\n * list of options - O(n) cost for each lookup.\n *\n * Given that we potentially have to make this determination on every single render pass, this\n * cache should provide a little bit of relief.\n */\nexport class DropdownSizePosCache {\n private _cachedOptions: IDropdownOption[];\n private _displayOnlyOptionsCache: number[];\n private _notSelectableOptionsCache: number[];\n private _size = 0;\n\n /**\n * Invalidates the cache and recalculate the size of selectable options.\n */\n public updateOptions(options: IDropdownOption[]) {\n const displayOnlyOptionsCache = [];\n const notSelectableOptionsCache = [];\n let size = 0;\n for (let i = 0; i < options.length; i++) {\n const { itemType, hidden } = options[i];\n\n if (itemType === DropdownMenuItemType.Divider || itemType === DropdownMenuItemType.Header) {\n displayOnlyOptionsCache.push(i);\n notSelectableOptionsCache.push(i);\n } else if (hidden) {\n notSelectableOptionsCache.push(i);\n } else {\n size++;\n }\n }\n\n this._size = size;\n this._displayOnlyOptionsCache = displayOnlyOptionsCache;\n this._notSelectableOptionsCache = notSelectableOptionsCache;\n this._cachedOptions = [...options];\n }\n\n /**\n * The size of all the selectable options.\n */\n public get optionSetSize(): number {\n return this._size;\n }\n\n /**\n * The chached options array.\n */\n public get cachedOptions(): IDropdownOption[] {\n return this._cachedOptions;\n }\n\n /**\n * Returns the position of this option element relative to the full set of selectable option elements.\n * Note: the first selectable element is position 1 in the set.\n * @param index The raw index of the option element.\n */\n public positionInSet(index: number | undefined): number | undefined {\n if (index === undefined) {\n return undefined;\n }\n\n // we could possibly memoize this too but this should be good enough, most of the time (the expectation is that\n // when you have a lot of options, the selectable options will heavily dominate over the non-selectable options.\n let offset = 0;\n while (index > this._notSelectableOptionsCache[offset]) {\n offset++;\n }\n\n if (this._displayOnlyOptionsCache[offset] === index) {\n throw new Error(`Unexpected: Option at index ${index} is not a selectable element.`);\n }\n\n if (this._notSelectableOptionsCache[offset] === index) {\n return undefined;\n }\n\n return index - offset + 1;\n }\n}\n","import * as React from 'react';\nimport {\n css,\n KeyCodes,\n classNamesFunction,\n divProperties,\n findIndex,\n getDocument,\n getFirstFocusable,\n getId,\n getLastFocusable,\n getNativeProps,\n initializeComponentRef,\n isIOS,\n isMac,\n mergeAriaAttributeValues,\n safeRequestAnimationFrame,\n warn,\n warnDeprecations,\n warnMutuallyExclusive,\n} from '../../Utilities';\nimport { Callout, DirectionalHint } from '../../Callout';\nimport { CommandButton } from '../../Button';\nimport { DropdownMenuItemType } from './Dropdown.types';\nimport { DropdownSizePosCache } from './utilities/DropdownSizePosCache';\nimport { FocusZone, FocusZoneDirection } from '../../FocusZone';\nimport { RectangleEdge } from '../../Positioning';\nimport { Icon } from '../../Icon';\nimport { Label } from '../../Label';\nimport { Panel } from '../../Panel';\nimport { ResponsiveMode, useResponsiveMode } from '../../ResponsiveMode';\nimport { SelectableOptionMenuItemType, getAllSelectedOptions } from '../../SelectableOption';\n// import and use V7 Checkbox to ensure no breaking changes.\nimport { Checkbox } from '../../Checkbox';\nimport { getNextElement, getPreviousElement, getPropsWithDefaults } from '@fluentui/utilities';\nimport { useMergedRefs, usePrevious } from '@fluentui/react-hooks';\nimport type { IStyleFunctionOrObject } from '../../Utilities';\nimport type {\n IDropdownOption,\n IDropdownProps,\n IDropdownStyleProps,\n IDropdownStyles,\n IDropdown,\n} from './Dropdown.types';\nimport type { ICalloutPositionedInfo } from '../../Positioning';\nimport type { ILabelStyleProps, ILabelStyles } from '../../Label';\nimport type { IProcessedStyleSet } from '../../Styling';\nimport type { IPanelStyleProps, IPanelStyles } from '../../Panel';\nimport type { IWithResponsiveModeState } from '../../ResponsiveMode';\nimport type { ISelectableDroppableTextProps } from '../../SelectableOption';\nimport type { ICheckboxStyleProps, ICheckboxStyles } from '../../Checkbox';\nimport { IFocusTrapZoneProps } from '../FocusTrapZone/FocusTrapZone.types';\n\nconst COMPONENT_NAME = 'Dropdown';\nconst getClassNames = classNamesFunction();\n\n/** Internal only props interface to support mixing in responsive mode */\n// eslint-disable-next-line deprecation/deprecation\ninterface IDropdownInternalProps extends Omit, IWithResponsiveModeState {\n hoisted: {\n rootRef: React.RefObject;\n selectedIndices: number[];\n setSelectedIndices: React.Dispatch>;\n };\n}\n\ninterface IDropdownState {\n isOpen: boolean;\n /** Used to track whether focus is already within the Dropdown, for openOnFocus handling. */\n hasFocus: boolean;\n calloutRenderEdge?: RectangleEdge;\n}\n\nconst DEFAULT_PROPS: Partial = {\n options: [],\n};\n\nfunction useSelectedItemsState({\n defaultSelectedKeys,\n selectedKeys,\n defaultSelectedKey,\n selectedKey,\n options,\n multiSelect,\n}: IDropdownProps) {\n const oldOptions = usePrevious(options);\n const [selectedIndices, setSelectedIndices] = React.useState([]);\n\n // In controlled component usage where selectedKey is provided, update the selectedIndex\n // state if the key or options change.\n let selectedKeyPropToUse: string | number | string[] | number[] | null | undefined;\n\n // this does a shallow compare (assumes options are pure), for the purposes of determining whether\n // defaultSelectedKey/defaultSelectedKeys are respected.\n const didOptionsChange = options !== oldOptions;\n\n if (multiSelect) {\n if (didOptionsChange && defaultSelectedKeys !== undefined) {\n selectedKeyPropToUse = defaultSelectedKeys;\n } else {\n selectedKeyPropToUse = selectedKeys;\n }\n } else {\n if (didOptionsChange && defaultSelectedKey !== undefined) {\n selectedKeyPropToUse = defaultSelectedKey;\n } else {\n selectedKeyPropToUse = selectedKey;\n }\n }\n\n const oldSelectedKeyProp = usePrevious(selectedKeyPropToUse);\n\n React.useEffect(() => {\n /** Get all selected indexes for multi-select mode */\n const getSelectedIndexes = (): number[] => {\n if (selectedKeyPropToUse === undefined) {\n if (multiSelect) {\n return getAllSelectedIndices();\n }\n const selectedIndex = getSelectedIndex(null);\n return selectedIndex !== -1 ? [selectedIndex] : [];\n } else if (!Array.isArray(selectedKeyPropToUse)) {\n const selectedIndex = getSelectedIndex(selectedKeyPropToUse);\n return selectedIndex !== -1 ? [selectedIndex] : [];\n }\n\n const returnValue: number[] = [];\n for (const key of selectedKeyPropToUse) {\n const selectedIndex = getSelectedIndex(key);\n selectedIndex !== -1 && returnValue.push(selectedIndex);\n }\n return returnValue;\n };\n\n const getAllSelectedIndices = (): number[] => {\n return options\n .map((option: IDropdownOption, index: number) => (option.selected ? index : -1))\n .filter(index => index !== -1);\n };\n\n const getSelectedIndex = (searchKey: string | number | null | undefined): number => {\n return findIndex(options, option => {\n // eslint-disable-next-line eqeqeq\n if (searchKey != null) {\n return option.key === searchKey;\n } else {\n // eslint-disable-next-line deprecation/deprecation\n return !!option.selected || !!option.isSelected;\n }\n });\n };\n\n if (\n (selectedKeyPropToUse !== undefined || !oldOptions) &&\n (selectedKeyPropToUse !== oldSelectedKeyProp || didOptionsChange)\n ) {\n setSelectedIndices(getSelectedIndexes());\n }\n }, [didOptionsChange, multiSelect, oldOptions, oldSelectedKeyProp, options, selectedKeyPropToUse]);\n\n return [selectedIndices, setSelectedIndices] as const;\n}\n\nexport const DropdownBase: React.FunctionComponent = React.forwardRef(\n (propsWithoutDefaults, forwardedRef) => {\n const props = getPropsWithDefaults(DEFAULT_PROPS, propsWithoutDefaults);\n\n const rootRef = React.useRef(null);\n const mergedRootRef = useMergedRefs(forwardedRef, rootRef);\n\n const responsiveMode = useResponsiveMode(rootRef, props.responsiveMode);\n const [selectedIndices, setSelectedIndices] = useSelectedItemsState(props);\n\n return (\n )}\n responsiveMode={responsiveMode}\n hoisted={{ rootRef: mergedRootRef, selectedIndices, setSelectedIndices }}\n />\n );\n },\n);\nDropdownBase.displayName = 'DropdownBase';\n\nclass DropdownInternal extends React.Component implements IDropdown {\n public static defaultProps = {\n options: [] as IDropdownOption[],\n };\n\n private _host = React.createRef();\n private _focusZone = React.createRef();\n private _dropDown = React.createRef();\n private _id: string;\n private _labelId: string;\n private _listId: string;\n private _optionId: string;\n private _isScrollIdle: boolean;\n /** Flag for tracking if the Callout has previously been positioned.\n * This is necessary to properly control focus state when the width\n * of the Dropdown is dynamic (e.g, \"fit-content\").\n */\n private _hasBeenPositioned: boolean;\n private readonly _scrollIdleDelay: number = 250 /* ms */;\n private _scrollIdleTimeoutId: number | undefined;\n /** True if the most recent keydown event was for alt (option) or meta (command). */\n private _lastKeyDownWasAltOrMeta: boolean | undefined;\n private _sizePosCache: DropdownSizePosCache = new DropdownSizePosCache();\n private _classNames: IProcessedStyleSet;\n private _requestAnimationFrame = safeRequestAnimationFrame(this);\n /** Flag for when we get the first mouseMove */\n private _gotMouseMove: boolean;\n /** Flag for tracking whether focus is triggered by click (alternatively triggered by keyboard nav) */\n private _isFocusedByClick: boolean;\n\n constructor(props: IDropdownInternalProps) {\n super(props);\n\n initializeComponentRef(this);\n\n const { multiSelect, selectedKey, selectedKeys, defaultSelectedKey, defaultSelectedKeys, options } = props;\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations(COMPONENT_NAME, props, {\n isDisabled: 'disabled',\n onChanged: 'onChange',\n placeHolder: 'placeholder',\n onRenderPlaceHolder: 'onRenderPlaceholder',\n });\n\n warnMutuallyExclusive(COMPONENT_NAME, props, {\n defaultSelectedKey: 'selectedKey',\n defaultSelectedKeys: 'selectedKeys',\n selectedKeys: 'selectedKey',\n });\n\n if (multiSelect) {\n const warnMultiSelect = (prop: keyof IDropdownProps) =>\n warn(`Dropdown property '${prop}' cannot be used when 'multiSelect' is true. Use '${prop}s' instead.`);\n if (selectedKey !== undefined) {\n warnMultiSelect('selectedKey');\n }\n if (defaultSelectedKey !== undefined) {\n warnMultiSelect('defaultSelectedKey');\n }\n } else {\n const warnNotMultiSelect = (prop: keyof IDropdownProps) =>\n warn(`Dropdown property '${prop}s' cannot be used when 'multiSelect' is false/unset. Use '${prop}' instead.`);\n if (selectedKeys !== undefined) {\n warnNotMultiSelect('selectedKey');\n }\n if (defaultSelectedKeys !== undefined) {\n warnNotMultiSelect('defaultSelectedKey');\n }\n }\n }\n\n this._id = props.id || getId('Dropdown');\n this._labelId = this._id + '-label';\n this._listId = this._id + '-list';\n this._optionId = this._id + '-option';\n this._isScrollIdle = true;\n this._hasBeenPositioned = false;\n\n this._sizePosCache.updateOptions(options);\n\n this.state = {\n isOpen: false,\n hasFocus: false,\n calloutRenderEdge: undefined,\n };\n }\n\n /**\n * All selected options\n */\n public get selectedOptions(): IDropdownOption[] {\n const {\n options,\n hoisted: { selectedIndices },\n } = this.props;\n\n return getAllSelectedOptions(options, selectedIndices);\n }\n\n public componentWillUnmount() {\n clearTimeout(this._scrollIdleTimeoutId);\n }\n\n public componentDidUpdate(prevProps: IDropdownProps, prevState: IDropdownState) {\n if (prevState.isOpen === true && this.state.isOpen === false) {\n this._gotMouseMove = false;\n this._hasBeenPositioned = false;\n\n if (this.props.onDismiss) {\n this.props.onDismiss();\n }\n }\n }\n\n public render(): JSX.Element {\n const id = this._id;\n\n const props = this.props;\n const {\n className,\n label,\n options,\n ariaLabel,\n required,\n errorMessage,\n styles: propStyles,\n theme,\n panelProps,\n calloutProps,\n onRenderTitle = this._getTitle,\n onRenderContainer = this._onRenderContainer,\n onRenderCaretDown = this._onRenderCaretDown,\n onRenderLabel = this._onRenderLabel,\n onRenderItem = this._onRenderItem,\n hoisted: { selectedIndices },\n } = props;\n const { isOpen, calloutRenderEdge, hasFocus } = this.state;\n // eslint-disable-next-line deprecation/deprecation\n const onRenderPlaceholder = props.onRenderPlaceholder || props.onRenderPlaceHolder || this._getPlaceholder;\n\n // If our cached options are out of date update our cache\n if (options !== this._sizePosCache.cachedOptions) {\n this._sizePosCache.updateOptions(options);\n }\n\n const selectedOptions = getAllSelectedOptions(options, selectedIndices);\n const divProps = getNativeProps(props, divProperties);\n\n const disabled = this._isDisabled();\n\n const errorMessageId = id + '-errorMessage';\n\n this._classNames = getClassNames(propStyles, {\n theme,\n className,\n hasError: !!(errorMessage && errorMessage.length > 0),\n hasLabel: !!label,\n isOpen,\n required,\n disabled,\n isRenderingPlaceholder: !selectedOptions.length,\n panelClassName: panelProps ? panelProps.className : undefined,\n calloutClassName: calloutProps ? calloutProps.className : undefined,\n calloutRenderEdge,\n });\n\n const hasErrorMessage: boolean = !!errorMessage && errorMessage.length > 0;\n\n return (\n \n {onRenderLabel(this.props, this._onRenderLabel)}\n \n \n {\n // If option is selected render title, otherwise render the placeholder text\n selectedOptions.length\n ? onRenderTitle(selectedOptions, this._onRenderTitle)\n : onRenderPlaceholder(props, this._onRenderPlaceholder)\n }\n
      \n {onRenderCaretDown(props, this._onRenderCaretDown)}\n
      \n {isOpen &&\n onRenderContainer(\n {\n ...props,\n onDismiss: this._onDismiss,\n onRenderItem,\n },\n this._onRenderContainer,\n )}\n {hasErrorMessage && (\n
      \n {errorMessage}\n
      \n )}\n
      \n );\n }\n\n /**\n * Close menu callout if it is open\n */\n public dismissMenu = (): void => {\n const { isOpen } = this.state;\n isOpen && this.setState({ isOpen: false });\n };\n\n public focus(shouldOpenOnFocus?: boolean): void {\n if (this._dropDown.current) {\n this._dropDown.current.focus();\n\n if (shouldOpenOnFocus) {\n this.setState({\n isOpen: true,\n });\n }\n }\n }\n\n public setSelectedIndex(event: React.FormEvent, index: number): void {\n const {\n options,\n selectedKey,\n selectedKeys,\n multiSelect,\n notifyOnReselect,\n hoisted: { selectedIndices = [] },\n } = this.props;\n const checked: boolean = selectedIndices ? selectedIndices.indexOf(index) > -1 : false;\n let newIndexes: number[] = [];\n\n index = Math.max(0, Math.min(options.length - 1, index));\n\n // If this is a controlled component then no state change should take place.\n if (selectedKey !== undefined || selectedKeys !== undefined) {\n this._onChange(event, options, index, checked, multiSelect);\n return;\n }\n\n if (!multiSelect && !notifyOnReselect && index === selectedIndices[0]) {\n return;\n } else if (multiSelect) {\n newIndexes = selectedIndices ? this._copyArray(selectedIndices) : [];\n if (checked) {\n const position = newIndexes.indexOf(index);\n if (position > -1) {\n // unchecked the current one\n newIndexes.splice(position, 1);\n }\n } else {\n // add the new selected index into the existing one\n newIndexes.push(index);\n }\n } else {\n // Set the selected option if this is an uncontrolled component\n newIndexes = [index];\n }\n\n event.persist();\n // Call onChange after state is updated\n this.props.hoisted.setSelectedIndices(newIndexes);\n this._onChange(event, options, index, checked, multiSelect);\n }\n\n private _onChange = (\n event: React.FormEvent,\n options: IDropdownOption[],\n index: number,\n checked?: boolean,\n multiSelect?: boolean,\n ) => {\n // eslint-disable-next-line deprecation/deprecation\n const { onChange, onChanged } = this.props;\n if (onChange || onChanged) {\n // for single-select, option passed in will always be selected.\n // for multi-select, flip the checked value\n const changedOpt = multiSelect ? { ...options[index], selected: !checked } : options[index];\n\n onChange && onChange({ ...event, target: this._dropDown.current as EventTarget }, changedOpt, index);\n onChanged && onChanged(changedOpt, index);\n }\n };\n\n /** Get either props.placeholder (new name) or props.placeHolder (old name) */\n private _getPlaceholder = (): string | undefined => {\n // eslint-disable-next-line deprecation/deprecation\n return this.props.placeholder || this.props.placeHolder;\n };\n\n private _copyArray(array: any[]): any[] {\n const newArray = [];\n for (const element of array) {\n newArray.push(element);\n }\n return newArray;\n }\n\n /**\n * Finds the next valid Dropdown option and sets the selected index to it.\n * @param stepValue - Value of how many items the function should traverse. Should be -1 or 1.\n * @param index - Index of where the search should start\n * @param selectedIndex - The selectedIndex Dropdown's state\n * @returns The next valid dropdown option's index\n */\n private _moveIndex(\n event: React.FormEvent,\n stepValue: number,\n index: number,\n selectedIndex: number,\n ): number {\n const { options } = this.props;\n // Return selectedIndex if nothing has changed or options is empty\n if (selectedIndex === index || options.length === 0) {\n return selectedIndex;\n }\n\n // If the user is pressing the up or down key we want to make\n // sure that the dropdown cycles through the options without\n // causing the screen to scroll. In _onDropdownKeyDown\n // at the very end is a check to see if newIndex !== selectedIndex.\n // If the index is less than 0 and we set it back to 0, then\n // newIndex will equal selectedIndex and not stop the action\n // of the key press happening and vice versa for indexes greater\n // than or equal to the options length.\n if (index >= options.length) {\n index = 0;\n } else if (index < 0) {\n index = options.length - 1;\n }\n\n let stepCounter = 0;\n // If current index is a header or divider, or disabled, increment by step\n while (\n options[index].itemType === DropdownMenuItemType.Header ||\n options[index].itemType === DropdownMenuItemType.Divider ||\n options[index].disabled\n ) {\n // If stepCounter exceeds length of options, then return selectedIndex (-1)\n if (stepCounter >= options.length) {\n return selectedIndex;\n }\n // If index + stepValue is out of bounds, wrap around\n if (index + stepValue < 0) {\n index = options.length;\n } else if (index + stepValue >= options.length) {\n index = -1;\n }\n\n index = index + stepValue;\n stepCounter++;\n }\n\n this.setSelectedIndex(event, index);\n return index;\n }\n\n /** Get text in dropdown input as a string */\n private _getTitle = (items: IDropdownOption[], _unused?: unknown): string => {\n const { multiSelectDelimiter = ', ' } = this.props;\n return items.map(i => i.text).join(multiSelectDelimiter);\n };\n\n /** Render text in dropdown input */\n private _onRenderTitle = (items: IDropdownOption[]): JSX.Element => {\n return <>{this._getTitle(items)};\n };\n\n /** Render placeholder text in dropdown input */\n private _onRenderPlaceholder = (props: IDropdownProps): JSX.Element | null => {\n if (!this._getPlaceholder()) {\n return null;\n }\n return <>{this._getPlaceholder()};\n };\n\n /** Render Callout or Panel container and pass in list */\n private _onRenderContainer = (props: ISelectableDroppableTextProps): JSX.Element => {\n const { calloutProps, panelProps } = props;\n const { responsiveMode, dropdownWidth } = this.props;\n\n const isSmall = responsiveMode! <= ResponsiveMode.medium;\n\n const focusTrapZoneProps: IFocusTrapZoneProps = { firstFocusableTarget: `#${this._listId}1` };\n const panelStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.panel as IStyleFunctionOrObject)\n : undefined;\n\n let calloutWidth = undefined;\n let calloutMinWidth = undefined;\n if (dropdownWidth === 'auto') {\n calloutMinWidth = this._dropDown.current ? this._dropDown.current.clientWidth : 0;\n } else {\n calloutWidth = dropdownWidth || (this._dropDown.current ? this._dropDown.current.clientWidth : 0);\n }\n\n return isSmall ? (\n \n {this._renderFocusableList(props)}\n \n ) : (\n \n {this._renderFocusableList(props)}\n \n );\n };\n\n /** Render Caret Down Icon */\n private _onRenderCaretDown = (props: IDropdownProps): JSX.Element => {\n return ;\n };\n\n /** Wrap item list in a FocusZone */\n private _renderFocusableList(props: ISelectableDroppableTextProps): JSX.Element {\n const { onRenderList = this._onRenderList, label, ariaLabel, multiSelect } = props;\n\n return (\n \n \n {onRenderList(props, this._onRenderList)}\n \n
      \n );\n }\n\n /** Render List of items */\n private _onRenderList = (props: ISelectableDroppableTextProps): JSX.Element => {\n const { onRenderItem = this._onRenderItem } = props;\n\n let queue: { id?: string; items: JSX.Element[] } = { items: [] };\n let renderedList: JSX.Element[] = [];\n\n const emptyQueue = (): void => {\n const newGroup = queue.id\n ? [\n
      \n {queue.items}\n
      ,\n ]\n : queue.items;\n\n renderedList = [...renderedList, ...newGroup];\n // Flush items and id\n queue = { items: [] };\n };\n\n const placeRenderedOptionIntoQueue = (item: IDropdownOption, index: number) => {\n /*\n Case Header\n empty queue if it's not already empty\n ensure unique ID for header and set queue ID\n push header into queue\n Case Divider\n push divider into queue if not first item\n empty queue if not already empty\n Default\n push item into queue\n */\n switch (item.itemType) {\n case SelectableOptionMenuItemType.Header:\n queue.items.length > 0 && emptyQueue();\n\n const id = this._id + item.key;\n queue.items.push(onRenderItem({ id, ...item, index }, this._onRenderItem)!);\n queue.id = id;\n break;\n case SelectableOptionMenuItemType.Divider:\n index > 0 && queue.items.push(onRenderItem({ ...item, index }, this._onRenderItem)!);\n\n queue.items.length > 0 && emptyQueue();\n break;\n default:\n queue.items.push(onRenderItem({ ...item, index }, this._onRenderItem)!);\n }\n };\n\n // Place options into the queue. Queue will be emptied anytime a Header or Divider is encountered\n props.options.forEach((item: IDropdownOption, index: number) => {\n placeRenderedOptionIntoQueue(item, index);\n });\n\n // Push remaining items into all renderedList\n queue.items.length > 0 && emptyQueue();\n\n return <>{renderedList};\n };\n\n private _onRenderItem = (item: IDropdownOption): JSX.Element | null => {\n switch (item.itemType) {\n case SelectableOptionMenuItemType.Divider:\n return this._renderSeparator(item);\n case SelectableOptionMenuItemType.Header:\n return this._renderHeader(item);\n default:\n return this._renderOption(item);\n }\n };\n\n private _renderSeparator(item: IDropdownOption): JSX.Element | null {\n const { index, key } = item;\n const separatorClassName = item.hidden ? this._classNames.dropdownDividerHidden : this._classNames.dropdownDivider;\n if (index! > 0) {\n return
      ;\n }\n return null;\n }\n\n private _renderHeader(item: IDropdownOption): JSX.Element {\n const { onRenderOption = this._onRenderOption } = this.props;\n const { key, id } = item;\n const headerClassName = item.hidden\n ? this._classNames.dropdownItemHeaderHidden\n : this._classNames.dropdownItemHeader;\n\n return (\n
      \n {onRenderOption(item, this._onRenderOption)}\n
      \n );\n }\n\n private _renderOption = (item: IDropdownOption): JSX.Element => {\n const {\n onRenderOption = this._onRenderOption,\n hoisted: { selectedIndices = [] },\n } = this.props;\n const isItemSelected =\n item.index !== undefined && selectedIndices ? selectedIndices.indexOf(item.index) > -1 : false;\n\n // select the right className based on the combination of selected/disabled\n const itemClassName = item.hidden // predicate: item hidden\n ? this._classNames.dropdownItemHidden\n : isItemSelected && item.disabled === true // predicate: both selected and disabled\n ? this._classNames.dropdownItemSelectedAndDisabled\n : isItemSelected // predicate: selected only\n ? this._classNames.dropdownItemSelected\n : item.disabled === true // predicate: disabled only\n ? this._classNames.dropdownItemDisabled\n : this._classNames.dropdownItem;\n\n const { title } = item;\n\n // define the id and label id (for multiselect checkboxes)\n const id = this._listId + item.index;\n const labelId = item.id ?? id + '-label';\n\n const multiSelectItemStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.multiSelectItem as IStyleFunctionOrObject<\n ICheckboxStyleProps,\n ICheckboxStyles\n >)\n : undefined;\n\n return !this.props.multiSelect ? (\n \n {onRenderOption(item, this._onRenderOption)}\n \n ) : (\n \n );\n };\n\n /** Render content of item (i.e. text/icon inside of button) */\n private _onRenderOption = (item: IDropdownOption): JSX.Element => {\n return {item.text};\n };\n\n /*\n * Render content of a multiselect item label.\n * Text within the label is aria-hidden, to prevent duplicate input/label exposure\n */\n private _onRenderMultiselectOption = (item: IDropdownOption): JSX.Element => {\n return (\n \n {item.text}\n \n );\n };\n\n /** Render custom label for multiselect checkbox items */\n private _onRenderItemLabel = (item: IDropdownOption): JSX.Element | null => {\n const { onRenderOption = this._onRenderMultiselectOption } = this.props;\n return onRenderOption(item, this._onRenderMultiselectOption);\n };\n\n private _onPositioned = (positions?: ICalloutPositionedInfo): void => {\n if (this._focusZone.current) {\n // Focusing an element can trigger a reflow. Making this wait until there is an animation\n // frame can improve perf significantly.\n this._requestAnimationFrame(() => {\n const selectedIndices = this.props.hoisted.selectedIndices;\n if (this._focusZone.current) {\n if (\n !this._hasBeenPositioned &&\n selectedIndices &&\n selectedIndices[0] &&\n !this.props.options[selectedIndices[0]].disabled\n ) {\n const element: HTMLElement | null = getDocument()!.getElementById(`${this._id}-list${selectedIndices[0]}`);\n if (element) {\n this._focusZone.current.focusElement(element);\n }\n this._hasBeenPositioned = true;\n } else {\n this._focusZone.current.focus();\n }\n }\n });\n }\n\n if (!this.state.calloutRenderEdge || this.state.calloutRenderEdge !== positions!.targetEdge) {\n this.setState({\n calloutRenderEdge: positions!.targetEdge,\n });\n }\n };\n\n private _onItemClick = (item: IDropdownOption): ((event: React.MouseEvent) => void) => {\n return (event: React.MouseEvent): void => {\n if (!item.disabled) {\n this.setSelectedIndex(event, item.index!);\n if (!this.props.multiSelect) {\n // only close the callout when it's in single-select mode\n this.setState({\n isOpen: false,\n });\n }\n }\n };\n };\n\n /**\n * Scroll handler for the callout to make sure the mouse events\n * for updating focus are not interacting during scroll\n */\n private _onScroll = (): void => {\n if (!this._isScrollIdle && this._scrollIdleTimeoutId !== undefined) {\n clearTimeout(this._scrollIdleTimeoutId);\n this._scrollIdleTimeoutId = undefined;\n } else {\n this._isScrollIdle = false;\n }\n\n this._scrollIdleTimeoutId = window.setTimeout(() => {\n this._isScrollIdle = true;\n }, this._scrollIdleDelay);\n };\n\n private _onItemMouseEnter(item: any, ev: React.MouseEvent): void {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n const targetElement = ev.currentTarget as HTMLElement;\n targetElement.focus();\n }\n\n private _onItemMouseMove(item: any, ev: React.MouseEvent): void {\n const targetElement = ev.currentTarget as HTMLElement;\n this._gotMouseMove = true;\n\n if (!this._isScrollIdle || document.activeElement === targetElement) {\n return;\n }\n\n targetElement.focus();\n }\n\n private _onMouseItemLeave = (item: any, ev: React.MouseEvent): void => {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n /**\n * IE11 focus() method forces parents to scroll to top of element.\n * Edge and IE expose a setActive() function for focusable divs that\n * sets the page focus but does not scroll the parent element.\n */\n if (this._host.current) {\n if ((this._host.current as any).setActive) {\n try {\n (this._host.current as any).setActive();\n } catch (e) {\n /* no-op */\n }\n } else {\n this._host.current.focus();\n }\n }\n };\n\n private _shouldIgnoreMouseEvent(): boolean {\n return !this._isScrollIdle || !this._gotMouseMove;\n }\n\n private _onDismiss = (): void => {\n this.setState({ isOpen: false });\n };\n\n private _onDropdownBlur = (ev: React.FocusEvent): void => {\n // If Dropdown disabled do not proceed with this logic.\n const disabled = this._isDisabled();\n if (disabled) {\n return;\n }\n\n if (this.state.isOpen) {\n // Do not call onBlur or update focus state when the callout is opened\n return;\n }\n\n this.setState({ hasFocus: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(ev);\n }\n };\n\n private _onDropdownKeyDown = (ev: React.KeyboardEvent): void => {\n // If Dropdown disabled do not process any keyboard events.\n const disabled = this._isDisabled();\n if (disabled) {\n return;\n }\n\n // Take note if we are processing an alt (option) or meta (command) keydown.\n // See comment in _shouldHandleKeyUp for reasoning.\n this._lastKeyDownWasAltOrMeta = this._isAltOrMeta(ev);\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(ev);\n if (ev.defaultPrevented) {\n return;\n }\n }\n\n let newIndex: number | undefined;\n const selectedIndex = this.props.hoisted.selectedIndices.length ? this.props.hoisted.selectedIndices[0] : -1;\n const containsExpandCollapseModifier = ev.altKey || ev.metaKey;\n const isOpen = this.state.isOpen;\n\n // eslint-disable-next-line deprecation/deprecation\n switch (ev.which) {\n case KeyCodes.enter:\n this.setState({\n isOpen: !isOpen,\n });\n break;\n\n case KeyCodes.escape:\n if (!isOpen) {\n return;\n }\n\n this.setState({\n isOpen: false,\n });\n break;\n\n case KeyCodes.up:\n if (containsExpandCollapseModifier) {\n if (isOpen) {\n this.setState({ isOpen: false });\n break;\n }\n\n return;\n }\n if (this.props.multiSelect) {\n this.setState({ isOpen: true });\n } else if (!this._isDisabled()) {\n newIndex = this._moveIndex(ev, -1, selectedIndex - 1, selectedIndex);\n }\n break;\n\n case KeyCodes.down:\n if (containsExpandCollapseModifier) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n if ((containsExpandCollapseModifier && !isOpen) || this.props.multiSelect) {\n this.setState({ isOpen: true });\n } else if (!this._isDisabled()) {\n newIndex = this._moveIndex(ev, 1, selectedIndex + 1, selectedIndex);\n }\n break;\n\n case KeyCodes.home:\n if (!this.props.multiSelect) {\n newIndex = this._moveIndex(ev, 1, 0, selectedIndex);\n }\n break;\n\n case KeyCodes.end:\n if (!this.props.multiSelect) {\n newIndex = this._moveIndex(ev, -1, this.props.options.length - 1, selectedIndex);\n }\n break;\n\n case KeyCodes.space:\n // event handled in _onDropdownKeyUp\n break;\n\n default:\n return;\n }\n\n if (newIndex !== selectedIndex) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n };\n\n private _onDropdownKeyUp = (ev: React.KeyboardEvent): void => {\n // If Dropdown disabled do not process any keyboard events.\n const disabled = this._isDisabled();\n if (disabled) {\n return;\n }\n\n const shouldHandleKey = this._shouldHandleKeyUp(ev);\n const isOpen = this.state.isOpen;\n\n if (this.props.onKeyUp) {\n this.props.onKeyUp(ev);\n if (ev.defaultPrevented) {\n return;\n }\n }\n // eslint-disable-next-line deprecation/deprecation\n switch (ev.which) {\n case KeyCodes.space:\n this.setState({\n isOpen: !isOpen,\n });\n break;\n\n default:\n if (shouldHandleKey && isOpen) {\n this.setState({ isOpen: false });\n }\n return;\n }\n\n ev.stopPropagation();\n ev.preventDefault();\n };\n\n /**\n * Returns true if the key for the event is alt (Mac option) or meta (Mac command).\n */\n private _isAltOrMeta(ev: React.KeyboardEvent): boolean {\n // eslint-disable-next-line deprecation/deprecation\n return ev.which === KeyCodes.alt || ev.key === 'Meta';\n }\n\n /**\n * We close the menu on key up only if ALL of the following are true:\n * - Most recent key down was alt or meta (command)\n * - The alt/meta key down was NOT followed by some other key (such as down/up arrow to\n * expand/collapse the menu)\n * - We're not on a Mac (or iOS)\n *\n * This is because on Windows, pressing alt moves focus to the application menu bar or similar,\n * closing any open context menus. There is not a similar behavior on Macs.\n */\n private _shouldHandleKeyUp(ev: React.KeyboardEvent): boolean {\n const keyPressIsAltOrMetaAlone = this._lastKeyDownWasAltOrMeta && this._isAltOrMeta(ev);\n this._lastKeyDownWasAltOrMeta = false;\n return !!keyPressIsAltOrMetaAlone && !(isMac() || isIOS());\n }\n\n private _onZoneKeyDown = (ev: React.KeyboardEvent): void => {\n let elementToFocus;\n\n // Take note if we are processing an alt (option) or meta (command) keydown.\n // See comment in _shouldHandleKeyUp for reasoning.\n this._lastKeyDownWasAltOrMeta = this._isAltOrMeta(ev);\n const containsExpandCollapseModifier = ev.altKey || ev.metaKey;\n\n // eslint-disable-next-line deprecation/deprecation\n switch (ev.which) {\n case KeyCodes.up:\n if (containsExpandCollapseModifier) {\n this.setState({ isOpen: false });\n } else {\n if (this._host.current) {\n elementToFocus = getLastFocusable(this._host.current, this._host.current.lastChild as HTMLElement, true);\n }\n }\n break;\n\n // All directional keystrokes should be canceled when the zone is rendered.\n // This avoids the body scroll from reacting and thus dismissing the dropdown.\n case KeyCodes.home:\n case KeyCodes.end:\n case KeyCodes.pageUp:\n case KeyCodes.pageDown:\n break;\n\n case KeyCodes.down:\n if (!containsExpandCollapseModifier && this._host.current) {\n elementToFocus = getFirstFocusable(this._host.current, this._host.current.firstChild as HTMLElement, true);\n }\n break;\n\n case KeyCodes.escape:\n this.setState({ isOpen: false });\n break;\n\n case KeyCodes.tab:\n this.setState({ isOpen: false });\n\n const document = getDocument();\n\n if (document) {\n if (ev.shiftKey) {\n getPreviousElement(document.body, this._dropDown.current, false, false, true, true)?.focus();\n } else {\n getNextElement(document.body, this._dropDown.current, false, false, true, true)?.focus();\n }\n }\n break;\n\n default:\n return;\n }\n\n if (elementToFocus) {\n elementToFocus.focus();\n }\n\n ev.stopPropagation();\n ev.preventDefault();\n };\n\n private _onZoneKeyUp = (ev: React.KeyboardEvent): void => {\n const shouldHandleKey = this._shouldHandleKeyUp(ev);\n\n if (shouldHandleKey && this.state.isOpen) {\n this.setState({ isOpen: false });\n ev.preventDefault();\n }\n };\n\n private _onDropdownClick = (ev: React.MouseEvent): void => {\n if (this.props.onClick) {\n this.props.onClick(ev);\n if (ev.defaultPrevented) {\n return;\n }\n }\n\n const { isOpen } = this.state;\n const disabled = this._isDisabled();\n\n if (!disabled && !this._shouldOpenOnFocus()) {\n this.setState({\n isOpen: !isOpen,\n });\n }\n\n this._isFocusedByClick = false; // reset\n };\n\n private _onDropdownMouseDown = (): void => {\n this._isFocusedByClick = true;\n };\n\n private _onFocus = (ev: React.FocusEvent): void => {\n const disabled = this._isDisabled();\n\n if (!disabled) {\n if (this.props.onFocus) {\n this.props.onFocus(ev);\n }\n const state: Pick | Pick = { hasFocus: true };\n if (this._shouldOpenOnFocus()) {\n (state as Pick).isOpen = true;\n }\n\n this.setState(state);\n }\n };\n\n /**\n * Because the isDisabled prop is deprecated, we have had to repeat this logic all over the place.\n * This helper method avoids all the repetition.\n */\n private _isDisabled: () => boolean | undefined = () => {\n let { disabled } = this.props;\n // eslint-disable-next-line deprecation/deprecation\n const { isDisabled } = this.props;\n\n // Remove this deprecation workaround at 1.0.0\n if (disabled === undefined) {\n disabled = isDisabled;\n }\n\n return disabled;\n };\n\n private _onRenderLabel = (props: IDropdownProps): JSX.Element | null => {\n const { label, required, disabled } = props;\n\n const labelStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.label as IStyleFunctionOrObject)\n : undefined;\n\n return label ? (\n \n {label}\n \n ) : null;\n };\n\n /**\n * Returns true if dropdown should set to open on focus.\n * Otherwise, isOpen state should be toggled on click\n */\n private _shouldOpenOnFocus(): boolean {\n const { hasFocus } = this.state;\n const { openOnKeyboardFocus } = this.props;\n return !this._isFocusedByClick && openOnKeyboardFocus === true && !hasFocus;\n }\n}\n","import * as React from 'react';\nimport { extendComponent } from './extendComponent';\n\n/**\n * Generates a function to be attached to a React component, which can be called\n * as a replacement to RAF. In-flight async calls will be auto canceled if the component\n * is unmounting before the async code is executed, preventing bugs where code\n * accesses things within the component after being unmounted.\n */\nexport const safeRequestAnimationFrame = (component: React.Component): ((cb: Function) => void) => {\n let activeTimeouts: Set;\n\n return (cb: Function) => {\n if (!activeTimeouts) {\n activeTimeouts = new Set();\n\n extendComponent(component, {\n componentWillUnmount: () => {\n activeTimeouts.forEach((id: number) => cancelAnimationFrame(id));\n },\n });\n }\n\n const timeoutId = requestAnimationFrame(() => {\n activeTimeouts.delete(timeoutId);\n cb();\n });\n\n activeTimeouts.add(timeoutId);\n };\n};\n","import { IsFocusVisibleClassName } from '../../Utilities';\nimport { RectangleEdge } from '../../Positioning';\nimport {\n FontWeights,\n HighContrastSelector,\n getGlobalClassNames,\n normalize,\n HighContrastSelectorWhite,\n getScreenSelector,\n ScreenWidthMinMedium,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport type { IDropdownStyles, IDropdownStyleProps } from './Dropdown.types';\nimport type { IStyleFunction } from '../../Utilities';\nimport type { IRawStyle, IStyle } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-Dropdown-container',\n label: 'ms-Dropdown-label',\n dropdown: 'ms-Dropdown',\n title: 'ms-Dropdown-title',\n caretDownWrapper: 'ms-Dropdown-caretDownWrapper',\n caretDown: 'ms-Dropdown-caretDown',\n callout: 'ms-Dropdown-callout',\n panel: 'ms-Dropdown-panel',\n dropdownItems: 'ms-Dropdown-items',\n dropdownItem: 'ms-Dropdown-item',\n dropdownDivider: 'ms-Dropdown-divider',\n dropdownOptionText: 'ms-Dropdown-optionText',\n dropdownItemHeader: 'ms-Dropdown-header',\n titleIsPlaceHolder: 'ms-Dropdown-titleIsPlaceHolder',\n titleHasError: 'ms-Dropdown-title--hasError',\n};\n\nconst DROPDOWN_HEIGHT = 32;\nconst DROPDOWN_ITEM_HEIGHT = 36;\n\nconst highContrastAdjustMixin = {\n [`${HighContrastSelector}, ${HighContrastSelectorWhite.replace('@media ', '')}`]: {\n ...getHighContrastNoAdjustStyle(),\n },\n};\n\nconst highContrastItemAndTitleStateMixin: IRawStyle = {\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n borderColor: 'Highlight',\n color: 'HighlightText',\n },\n ...highContrastAdjustMixin,\n },\n};\n\nconst highContrastBorderState: IRawStyle = {\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n};\n\nconst MinimumScreenSelector = getScreenSelector(0, ScreenWidthMinMedium);\n\nexport const getStyles: IStyleFunction = props => {\n const {\n theme,\n hasError,\n hasLabel,\n className,\n isOpen,\n disabled,\n required,\n isRenderingPlaceholder,\n panelClassName,\n calloutClassName,\n calloutRenderEdge,\n } = props;\n\n if (!theme) {\n throw new Error('theme is undefined or null in base Dropdown getStyles function.');\n }\n\n const globalClassnames = getGlobalClassNames(GlobalClassNames, theme);\n const { palette, semanticColors, effects, fonts } = theme;\n\n const rootHoverFocusActiveSelectorNeutralDarkMixin: IStyle = {\n color: semanticColors.menuItemTextHovered,\n };\n\n const rootHoverFocusActiveSelectorNeutralPrimaryMixin: IStyle = {\n color: semanticColors.menuItemText,\n };\n\n const borderColorError: IStyle = {\n borderColor: semanticColors.errorText,\n };\n\n const dropdownItemStyle: IStyle = [\n globalClassnames.dropdownItem,\n {\n backgroundColor: 'transparent',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n padding: '0 8px',\n width: '100%',\n minHeight: DROPDOWN_ITEM_HEIGHT,\n lineHeight: 20,\n height: 0,\n position: 'relative',\n border: '1px solid transparent',\n borderRadius: 0,\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n textAlign: 'left',\n\n '.ms-Button-flexContainer': {\n width: '100%',\n },\n },\n ];\n\n const dropdownHeaderStyle: IStyle = [\n globalClassnames.dropdownItemHeader,\n {\n ...fonts.medium,\n fontWeight: FontWeights.semibold,\n color: semanticColors.menuHeader,\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n height: DROPDOWN_ITEM_HEIGHT,\n lineHeight: DROPDOWN_ITEM_HEIGHT,\n cursor: 'default',\n padding: '0 8px',\n userSelect: 'none',\n textAlign: 'left',\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ];\n\n const selectedItemBackgroundColor = semanticColors.menuItemBackgroundPressed;\n\n const itemSelectors = (isSelected: boolean = false) => {\n return {\n selectors: {\n '&:hover': [\n {\n color: semanticColors.menuItemTextHovered,\n backgroundColor: !isSelected ? semanticColors.menuItemBackgroundHovered : selectedItemBackgroundColor,\n },\n highContrastItemAndTitleStateMixin,\n ],\n '&.is-multi-select:hover': [{ backgroundColor: !isSelected ? 'transparent' : selectedItemBackgroundColor }],\n '&:active:hover': [\n {\n color: semanticColors.menuItemTextHovered,\n backgroundColor: !isSelected\n ? semanticColors.menuItemBackgroundPressed\n : semanticColors.menuItemBackgroundHovered,\n },\n highContrastItemAndTitleStateMixin,\n ],\n [`.${IsFocusVisibleClassName} &:focus:after`]: {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n [HighContrastSelector]: {\n inset: '2px',\n },\n },\n [HighContrastSelector]: {\n border: 'none',\n },\n },\n };\n };\n\n const dropdownItemSelected: IStyle = [\n ...dropdownItemStyle,\n {\n backgroundColor: selectedItemBackgroundColor,\n color: semanticColors.menuItemTextHovered,\n },\n itemSelectors(true),\n highContrastItemAndTitleStateMixin,\n ];\n\n const dropdownItemDisabled: IStyle = [\n ...dropdownItemStyle,\n {\n color: semanticColors.disabledText,\n cursor: 'default',\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n border: 'none',\n },\n },\n },\n ];\n\n const titleOpenBorderRadius =\n calloutRenderEdge === RectangleEdge.bottom\n ? `${effects.roundedCorner2} ${effects.roundedCorner2} 0 0`\n : `0 0 ${effects.roundedCorner2} ${effects.roundedCorner2}`;\n\n const calloutOpenBorderRadius =\n calloutRenderEdge === RectangleEdge.bottom\n ? `0 0 ${effects.roundedCorner2} ${effects.roundedCorner2}`\n : `${effects.roundedCorner2} ${effects.roundedCorner2} 0 0`;\n\n return {\n root: [globalClassnames.root, className],\n label: globalClassnames.label,\n dropdown: [\n globalClassnames.dropdown,\n normalize,\n fonts.medium,\n {\n color: semanticColors.menuItemText,\n borderColor: semanticColors.focusBorder,\n position: 'relative',\n outline: 0,\n userSelect: 'none',\n selectors: {\n ['&:hover .' + globalClassnames.title]: [\n !disabled && rootHoverFocusActiveSelectorNeutralDarkMixin,\n { borderColor: isOpen ? palette.neutralSecondary : palette.neutralPrimary },\n highContrastBorderState,\n ],\n ['&:focus .' + globalClassnames.title]: [\n !disabled && rootHoverFocusActiveSelectorNeutralDarkMixin,\n { selectors: { [HighContrastSelector]: { color: 'Highlight' } } },\n ],\n\n ['&:focus:after']: [\n {\n pointerEvents: 'none',\n content: \"''\",\n position: 'absolute',\n boxSizing: 'border-box',\n top: '0px',\n left: '0px',\n width: '100%',\n height: '100%',\n // see https://github.com/microsoft/fluentui/pull/9182 for semantic color disc\n border: !disabled ? `2px solid ${palette.themePrimary}` : 'none',\n borderRadius: '2px',\n\n selectors: {\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n },\n },\n ],\n ['&:active .' + globalClassnames.title]: [\n !disabled && rootHoverFocusActiveSelectorNeutralDarkMixin,\n { borderColor: palette.themePrimary },\n highContrastBorderState,\n ],\n\n ['&:hover .' + globalClassnames.caretDown]: !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n ['&:focus .' + globalClassnames.caretDown]: [\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n { selectors: { [HighContrastSelector]: { color: 'Highlight' } } },\n ],\n ['&:active .' + globalClassnames.caretDown]: !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n\n ['&:hover .' + globalClassnames.titleIsPlaceHolder]:\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n ['&:focus .' + globalClassnames.titleIsPlaceHolder]:\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n ['&:active .' + globalClassnames.titleIsPlaceHolder]:\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n\n ['&:hover .' + globalClassnames.titleHasError]: borderColorError,\n ['&:active .' + globalClassnames.titleHasError]: borderColorError,\n },\n },\n isOpen && 'is-open',\n disabled && 'is-disabled',\n required && 'is-required',\n required &&\n !hasLabel && {\n selectors: {\n ':before': {\n content: `'*'`,\n color: semanticColors.errorText,\n position: 'absolute',\n top: -5,\n right: -10,\n },\n [HighContrastSelector]: {\n selectors: {\n ':after': {\n right: -14, // moving the * 4 pixel to right to alleviate border clipping in HC mode.\n },\n },\n },\n },\n },\n ],\n title: [\n globalClassnames.title,\n normalize,\n {\n backgroundColor: semanticColors.inputBackground,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: semanticColors.inputBorder,\n borderRadius: isOpen ? titleOpenBorderRadius : effects.roundedCorner2,\n cursor: 'pointer',\n display: 'block',\n height: DROPDOWN_HEIGHT,\n lineHeight: DROPDOWN_HEIGHT - 2,\n padding: `0 28px 0 8px`,\n position: 'relative',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n isRenderingPlaceholder && [globalClassnames.titleIsPlaceHolder, { color: semanticColors.inputPlaceholderText }],\n hasError && [globalClassnames.titleHasError, borderColorError],\n disabled && {\n backgroundColor: semanticColors.disabledBackground,\n border: 'none',\n color: semanticColors.disabledText,\n cursor: 'default',\n selectors: {\n [HighContrastSelector]: {\n border: '1px solid GrayText',\n color: 'GrayText',\n backgroundColor: 'Window',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n caretDownWrapper: [\n globalClassnames.caretDownWrapper,\n {\n height: DROPDOWN_HEIGHT,\n lineHeight: DROPDOWN_HEIGHT - 2, // height minus the border\n paddingTop: 1,\n position: 'absolute',\n right: 8,\n top: 0,\n },\n !disabled && {\n cursor: 'pointer',\n },\n ],\n caretDown: [\n globalClassnames.caretDown,\n { color: palette.neutralSecondary, fontSize: fonts.small.fontSize, pointerEvents: 'none' },\n disabled && {\n color: semanticColors.disabledText,\n selectors: {\n [HighContrastSelector]: { color: 'GrayText', ...getHighContrastNoAdjustStyle() },\n },\n },\n ],\n errorMessage: { color: semanticColors.errorText, ...theme.fonts.small, paddingTop: 5 },\n callout: [\n globalClassnames.callout,\n {\n boxShadow: effects.elevation8,\n borderRadius: calloutOpenBorderRadius,\n selectors: {\n ['.ms-Callout-main']: { borderRadius: calloutOpenBorderRadius },\n },\n },\n calloutClassName,\n ],\n dropdownItemsWrapper: { selectors: { '&:focus': { outline: 0 } } },\n dropdownItems: [globalClassnames.dropdownItems, { display: 'block' }],\n dropdownItem: [...dropdownItemStyle, itemSelectors()],\n dropdownItemSelected,\n dropdownItemDisabled,\n dropdownItemSelectedAndDisabled: [dropdownItemSelected, dropdownItemDisabled, { backgroundColor: 'transparent' }],\n dropdownItemHidden: [...dropdownItemStyle, { display: 'none' }],\n dropdownDivider: [globalClassnames.dropdownDivider, { height: 1, backgroundColor: semanticColors.bodyDivider }],\n dropdownDividerHidden: [globalClassnames.dropdownDivider, { display: 'none' }],\n dropdownOptionText: [\n globalClassnames.dropdownOptionText,\n {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n minWidth: 0,\n maxWidth: '100%',\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n margin: '1px',\n },\n ],\n dropdownItemHeader: dropdownHeaderStyle,\n dropdownItemHeaderHidden: [...dropdownHeaderStyle, { display: 'none' }],\n subComponentStyles: {\n label: { root: { display: 'inline-block' } },\n multiSelectItem: {\n root: {\n padding: 0,\n },\n label: {\n alignSelf: 'stretch',\n padding: '0 8px',\n width: '100%',\n },\n input: {\n selectors: {\n [`.${IsFocusVisibleClassName} &:focus + label::before`]: {\n outlineOffset: '0px',\n },\n },\n },\n },\n panel: {\n root: [panelClassName],\n main: {\n selectors: {\n // In case of extra small screen sizes\n [MinimumScreenSelector]: {\n // panelWidth xs\n width: 272,\n },\n },\n },\n contentInner: { padding: '0 0 20px' },\n },\n },\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { DropdownBase } from './Dropdown.base';\nimport { getStyles } from './Dropdown.styles';\nimport type { IDropdownProps, IDropdownStyleProps, IDropdownStyles } from './Dropdown.types';\n\nexport const Dropdown: React.FunctionComponent = styled<\n IDropdownProps,\n IDropdownStyleProps,\n IDropdownStyles\n>(DropdownBase, getStyles, undefined, {\n scope: 'Dropdown',\n});\nDropdown.displayName = 'Dropdown';\n","import { Checkbox, ComboBox, DefaultButton, Dropdown, Panel, PanelType, PrimaryButton, SelectionMode, TextField } from '../../fluent';\r\nimport { List } from 'linq.ts';\r\nimport React from 'react';\r\nimport { paginateData } from '../helpers/paginate-data';\r\nimport { isNull, isNullOrEmpty } from '../helpers/string-helper';\r\nimport { validateObject, validateProperty, validator } from '../helpers/validations';\r\nimport { DataTable } from './DataTable';\r\nimport { ExtendedDatePicker } from './ExtendedDatePicker';\r\nimport { Grid } from './Grid';\r\nimport { Row } from './Row';\r\nconst c_div = (props, ...children) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n return React.createElement(\"div\", null, children && children.map(o => o));\r\n};\r\nconst c_grid = (props, ...children) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n if (typeof props.visible === 'boolean' && props.visible === false) {\r\n return void 0;\r\n }\r\n return React.createElement(Grid, null, children && children.map(o => o));\r\n};\r\nconst c_row = (props, ...children) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n if (typeof props.visible === 'boolean' && props.visible === false) {\r\n return void 0;\r\n }\r\n return React.createElement(Row, null, children && children.map(o => o));\r\n};\r\nconst c_col = (props, ...children) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n if (typeof props.visible === 'boolean' && props.visible === false) {\r\n return void 0;\r\n }\r\n const colLg = props.colLg || 12;\r\n const colMd = props.colMd || 12;\r\n const colSm = props.colSm || 12;\r\n const className = `ms-Grid-col ms-sm${colLg} ms-md${colMd} ms-lg${colSm}`;\r\n return React.createElement(\"div\", { className: className }, children && children.map(o => o));\r\n};\r\nconst c_textField = (props) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n return React.createElement(TextField, { label: props.label || '', placeholder: props.placeholder || '', required: props.required || false, disabled: props.disabled || false, maxLength: props.maxLength || 0, onChange: (_, value) => props.onChanged(value), errorMessage: props.errorMessage || '', value: props.value || '', multiline: props.multiline || false });\r\n};\r\nconst c_combobox = (props) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n if (typeof props.visible === 'boolean' && props.visible === false) {\r\n return void 0;\r\n }\r\n return React.createElement(ComboBox, { selectedKey: props.selectedKey, label: props.label || '', autoComplete: 'on', disabled: props.disabled || false, useComboBoxAsMenuWidth: true, options: props.options || [], errorMessage: props.errorMessage || '', onChange: (_, option) => props.onChanged(option), required: props.required || false });\r\n};\r\nconst c_Datatable = (props) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n return React.createElement(DataTable, { allowSearch: props.allowSearch || false, onDownloadServerData: (request) => {\r\n return new Promise((resolve) => {\r\n if (typeof props.paginateAsync === 'function') {\r\n const result = props.paginateAsync(request);\r\n if (isNull(result.Data)) {\r\n result.Data = [];\r\n }\r\n if (typeof result.RecordsFiltered === 'undefined') {\r\n result.RecordsFiltered = 0;\r\n }\r\n resolve(result);\r\n }\r\n resolve({\r\n Data: [],\r\n RecordsFiltered: 0\r\n });\r\n });\r\n }, onSelectedRow: typeof props.onSelectedRow === 'function' ? props.onSelectedRow.bind(this) : void 0, selectionMode: props.selectionMode || SelectionMode.single, columns: props.columns || [], title: props.title || '', commandBarItems: props.commandBarItems || [], searchTooltip: props.searchTooltip || '', refreshOnInit: props.refreshOnInit || false, ref: props.ref });\r\n};\r\nconst c_PrimaryButton = (props) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n return React.createElement(PrimaryButton, { text: props.text || '', primary: props.primary || true, onClick: () => {\r\n if (typeof props.onClick === 'function') {\r\n props.onClick();\r\n }\r\n } });\r\n};\r\nconst c_DefaultButton = (props) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n return React.createElement(DefaultButton, { text: props.text || '', primary: props.primary || false, onClick: () => {\r\n if (typeof props.onClick === 'function') {\r\n props.onClick();\r\n }\r\n } });\r\n};\r\nconst c_panel = (props, ...children) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n return React.createElement(Panel, { isOpen: props.isOpen || false, type: props.type || PanelType.smallFixedFar, headerText: props.headerText || '', isFooterAtBottom: props.isFooterAtBottom || true, onRenderFooterContent: () => {\r\n if (typeof props.onRenderFooterContent === 'function') {\r\n return props.onRenderFooterContent();\r\n }\r\n return React.createElement(\"div\", null);\r\n }, hasCloseButton: false, closeButtonAriaLabel: props.closeButtonAriaLabel || '' }, children && children.map(o => o));\r\n};\r\nconst c_datePicker = (props) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(ExtendedDatePicker, { label: props.label || '', onChanged: (value) => {\r\n if (typeof props.onSelectDate === 'function') {\r\n props.onSelectDate(value);\r\n }\r\n }, value: props.value || '', isRequired: props.isRequired || false, disabled: props.disabled || false }),\r\n React.createElement(\"small\", { style: { color: '#bb3737' } }, props.errorMessage || ''));\r\n};\r\nconst c_checkbox = (props) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n if (typeof props.visible === 'boolean' && props.visible === false) {\r\n return void 0;\r\n }\r\n return React.createElement(Checkbox, { label: props.label || '', checked: props.checked || false, onChange: props.onChange, disabled: props.disabled || false });\r\n};\r\nconst c_dropdown = (props) => {\r\n if (isNull(props)) {\r\n props = {};\r\n }\r\n if (typeof props.visible === 'boolean' && props.visible === false) {\r\n return void 0;\r\n }\r\n return React.createElement(Dropdown, { label: props.label, selectedKeys: props.selectedKeys, required: props.required || false, onChanged: props.onChanged, multiSelect: true, errorMessage: props.errorMessage || '', options: props.options || [], disabled: props.disabled || false });\r\n};\r\nexport class ScriptComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n componentDidMount() {\r\n if (isNullOrEmpty(this.props.script)) {\r\n return;\r\n }\r\n const sdk = Object.assign(Object.assign({}, this.props.sdk), { validator: validator, validateModel: validateObject, validateProperty: validateProperty, isNullOrEmpty: isNullOrEmpty, paginateData: paginateData, List: List });\r\n let func;\r\n // Compile function\r\n try {\r\n func = new Function('sdk', 'Sdk', 'div', 'Grid', 'Row', 'Col', 'TextField', 'ComboBox', 'DataTable', 'Panel', 'PrimaryButton', 'DefaultButton', 'PanelType', 'DatePicker', 'Checkbox', 'Dropdown', `${this.props.script || ''}`);\r\n }\r\n catch (error) {\r\n throw Error('Error compiling the component');\r\n }\r\n // Create instance of custom component\r\n try {\r\n const compileClass = func(sdk, sdk, c_div, c_grid, c_row, c_col, c_textField, c_combobox, c_Datatable, c_panel, c_PrimaryButton, c_DefaultButton, PanelType, c_datePicker, c_checkbox, c_dropdown);\r\n this._customComponent = new compileClass(this.props.props);\r\n this._customComponent.onChange = (value) => {\r\n if (typeof this.props.onChange === 'function') {\r\n this.props.onChange(value);\r\n }\r\n };\r\n }\r\n catch (error) {\r\n console.error(error);\r\n throw Error('Error create an instance of the component');\r\n }\r\n // Map setState function\r\n this._customComponent.setState = (newState, callback) => {\r\n try {\r\n this._customComponent.state = Object.assign(Object.assign({}, this._customComponent.state), newState);\r\n this.setState({}, () => {\r\n if (typeof callback === 'function') {\r\n callback(newState);\r\n }\r\n });\r\n }\r\n catch (error) {\r\n console.error(error);\r\n throw Error('Error setting state');\r\n }\r\n };\r\n // Execute componentDidMount event\r\n if (typeof this._customComponent.componentDidMount === 'function') {\r\n try {\r\n this._customComponent.componentDidMount();\r\n }\r\n catch (error) {\r\n console.error(error);\r\n throw Error('Error on componentDidMount');\r\n }\r\n }\r\n }\r\n componentWillReceiveProps(props) {\r\n if (this._customComponent != null) {\r\n if (typeof this._customComponent.componentWillReceiveProps === 'function') {\r\n this._customComponent.componentWillReceiveProps(props.props);\r\n }\r\n }\r\n }\r\n render() {\r\n if (isNull(this._customComponent)) {\r\n return React.createElement(React.Fragment, null);\r\n }\r\n return this._customComponent.render();\r\n }\r\n isValid() {\r\n if (this._customComponent != null) {\r\n return this._customComponent.onValidate() || false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Bar, Line, Radar } from 'react-chartjs-2';\r\nimport { defaultIChartJsData } from '../models/chart/chart-data';\r\nimport { ChartType } from '../models/chart/chart-type';\r\nexport class StandarChart extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: props.data || defaultIChartJsData(),\r\n title: props.title || '',\r\n type: props.type\r\n };\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n data: props.data || defaultIChartJsData(),\r\n title: props.title || '',\r\n type: props.type\r\n });\r\n }\r\n render() {\r\n const options = {\r\n scale: {\r\n ticks: { beginAtZero: true },\r\n },\r\n title: {\r\n display: true,\r\n text: this.props.title\r\n }\r\n };\r\n const data = {\r\n labels: this.state.data.Labels,\r\n datasets: (this.state.data.Datasets || []).map(o => ({\r\n backgroundColor: o.BackgroundColor,\r\n borderColor: o.BorderColor,\r\n borderWidth: o.BorderWidth,\r\n data: o.Data,\r\n label: o.Label\r\n }))\r\n };\r\n switch (this.state.type) {\r\n case ChartType.VerticalBar:\r\n return React.createElement(Bar, { data: data, options: options });\r\n case ChartType.Radar:\r\n return React.createElement(Radar, { data: data, options: options });\r\n case ChartType.Line:\r\n return React.createElement(Line, { options: options, data: data });\r\n default:\r\n return React.createElement(\"div\", null, \"Chart type not supported\");\r\n }\r\n }\r\n}\r\n","import { PanelType } from '../../fluent';\r\nimport React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { StandarPanel } from './StandarPanel';\r\nexport const StandarDataTableItem = (props) => {\r\n const [state, setState] = useState({\r\n model: props.model || {},\r\n show: props.show || false\r\n });\r\n useEffect(() => {\r\n setState({\r\n model: props.model || {},\r\n show: props.show || false\r\n });\r\n }, [props]);\r\n const onChange = (property, value) => {\r\n props.onChange(Object.assign(Object.assign({}, state.model), { [property]: value }));\r\n };\r\n if (!state.show) {\r\n return React.createElement(React.Fragment, null);\r\n }\r\n return React.createElement(StandarPanel, { isOpen: state.show, type: props.panelType || PanelType.medium, headerText: `Item: ${props.title}`, hideAcceptButton: props.readonly, onAccept: () => {\r\n props.onAccept(state.model);\r\n props.onClose();\r\n }, onClose: () => props.onClose(), onRender: () => props.onRender(onChange) });\r\n};\r\n","import './TeachingLink';\r\nimport { Link, TeachingBubble, TooltipHost } from '../../fluent';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport React from 'react';\r\nexport const TeachingLink = (props) => {\r\n const dtRef = useRef(null);\r\n const [state, setstate] = useState({\r\n id: props.id || 0,\r\n isTeachingBubbleVisible: false,\r\n model: {},\r\n primaryButtonText: props.primaryButtonText || '',\r\n showPrimaryButton: props.showPrimaryButton || false,\r\n text: props.text || '',\r\n tooltip: props.tooltip || ''\r\n });\r\n useEffect(() => {\r\n setstate(Object.assign(Object.assign({}, state), { id: props.id || 0, primaryButtonText: props.primaryButtonText || '', showPrimaryButton: props.showPrimaryButton || false, text: props.text || '', tooltip: props.tooltip || '' }));\r\n }, [props]);\r\n const onOpenTeachingBubble = () => {\r\n props.onOpenTeachingBubble((value) => {\r\n setstate(Object.assign(Object.assign({}, state), { isTeachingBubbleVisible: true, model: value || {} }));\r\n });\r\n };\r\n const onDismiss = () => {\r\n setstate(Object.assign(Object.assign({}, state), { isTeachingBubbleVisible: false }));\r\n };\r\n const onAccept = () => {\r\n if (typeof props.onPrimaryButtonClick === 'function') {\r\n props.onPrimaryButtonClick();\r\n }\r\n };\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(TooltipHost, { content: state.tooltip },\r\n React.createElement(Link, { onClick: onOpenTeachingBubble },\r\n React.createElement(\"span\", { ref: dtRef }, props.text))),\r\n state.isTeachingBubbleVisible\r\n ? React.createElement(TeachingBubble, { primaryButtonProps: state.showPrimaryButton ? {\r\n children: state.primaryButtonText,\r\n onClick: onAccept\r\n } : undefined, secondaryButtonProps: {\r\n children: 'Cerrar',\r\n onClick: onDismiss\r\n }, onDismiss: onDismiss, headline: props.text, targetElement: dtRef.current != null ? dtRef.current : undefined }, props.onRenderContent())\r\n : null);\r\n};\r\n","import { Guid } from '../helpers/guid';\r\nimport { paginateDataAsync } from '../helpers/paginate-data';\r\nimport { SelectionMode, PanelType } from '../../fluent';\r\nimport React from 'react';\r\nimport { DataTable } from './DataTable';\r\nimport { StandarDataTableItem } from './StandarDataTableItem';\r\nexport class StandarDataTable extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n items: props.items || [],\r\n selectedItem: undefined,\r\n commandBarItems: this._buildCommandBar(undefined),\r\n showPanel: false\r\n };\r\n }\r\n componentDidMount() {\r\n var _a;\r\n (_a = this.dtRef) === null || _a === void 0 ? void 0 : _a.refreshTable();\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n items: props.items || []\r\n });\r\n }\r\n render() {\r\n return React.createElement(React.Fragment, null,\r\n React.createElement(DataTable, { onSelectedRow: this._onSelectedRow.bind(this), selectionMode: SelectionMode.single, columns: this.props.columns, title: this.props.tableTitle, commandBarItems: this.state.commandBarItems, ref: (e) => this.dtRef = e, titleClassName: 'ms-fontSize-l', onDownloadServerData: (request) => {\r\n return paginateDataAsync(request, {\r\n data: () => this.state.items || [],\r\n order: ['Text', 'Icon'],\r\n search: () => this.props.searchColumns || []\r\n });\r\n } }),\r\n React.createElement(StandarDataTableItem, { model: this.state.selectedItem, readonly: this.props.readonly || false, onChange: item => this.setState({ selectedItem: item }), onClose: () => {\r\n this.setState({\r\n showPanel: false,\r\n selectedItem: undefined\r\n }, () => { var _a; return (_a = this.dtRef) === null || _a === void 0 ? void 0 : _a.refreshTable(); });\r\n }, show: this.state.showPanel, onAccept: item => {\r\n const items = this.state.items.slice();\r\n const index = items.findIndex(o => o.Id === item.Id);\r\n if (index >= 0) {\r\n items[index] = item;\r\n }\r\n else {\r\n items.push(item);\r\n }\r\n this.setState({ items }, () => {\r\n var _a;\r\n this.props.onChangeItems(items);\r\n (_a = this.dtRef) === null || _a === void 0 ? void 0 : _a.refreshTable();\r\n });\r\n }, onRender: (onChange) => this.props.onRenderItemPanel(this.state.selectedItem, onChange), title: this.props.panelTitle, panelType: this.props.panelType || PanelType.medium }));\r\n }\r\n refresh() {\r\n var _a;\r\n (_a = this.dtRef) === null || _a === void 0 ? void 0 : _a.refreshTable();\r\n }\r\n _onSelectedRow(items) {\r\n this.setState({\r\n commandBarItems: this._buildCommandBar(items[0]),\r\n selectedItem: items[0]\r\n });\r\n }\r\n ;\r\n _buildCommandBar(selectedItem) {\r\n const getNewGuid = () => {\r\n let guid = Guid.NewGuid();\r\n while (this.state.items.find(o => o.Id === guid) != null) {\r\n guid = Guid.NewGuid();\r\n }\r\n return guid;\r\n };\r\n const items = [];\r\n if (this.props.readonly) {\r\n if (selectedItem != null) {\r\n items.push({\r\n key: 'Editar',\r\n name: 'Ver',\r\n iconProps: { iconName: 'View' },\r\n onClick: () => {\r\n this.setState({\r\n selectedItem,\r\n showPanel: true\r\n });\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n items.push({\r\n key: 'Agregar',\r\n name: 'Agregar',\r\n iconProps: { iconName: 'Add' },\r\n onClick: () => {\r\n this.setState({\r\n showPanel: true,\r\n selectedItem: { Id: getNewGuid() }\r\n });\r\n }\r\n });\r\n if (selectedItem != null) {\r\n items.push({\r\n key: 'Editar',\r\n name: 'Editar',\r\n iconProps: { iconName: 'Edit' },\r\n onClick: () => {\r\n this.setState({\r\n selectedItem,\r\n showPanel: true\r\n });\r\n }\r\n });\r\n items.push({\r\n key: 'Eliminar',\r\n name: 'Eliminar',\r\n iconProps: { iconName: 'Delete' },\r\n onClick: () => {\r\n const items = this.state.items.slice();\r\n const index = items.findIndex(o => o.Id === selectedItem.Id);\r\n items.splice(index, 1);\r\n this.setState({ items }, () => {\r\n var _a;\r\n this.props.onChangeItems(items);\r\n (_a = this.dtRef) === null || _a === void 0 ? void 0 : _a.refreshTable();\r\n });\r\n }\r\n });\r\n }\r\n }\r\n return items;\r\n }\r\n}\r\n","import { TeachingBubble, TextField } from '../../fluent';\r\nimport React from 'react';\r\nimport { DateTime } from '../helpers/datetime';\r\nimport { Guid } from '../helpers/guid';\r\nimport { Column } from './Column';\r\nimport { Grid } from './Grid';\r\nimport { Row } from './Row';\r\nexport const author = {\r\n textAlign: 'right',\r\n color: 'white',\r\n fontWeight: 'bold',\r\n fontSize: '0.8em'\r\n};\r\nexport class TeachingComments extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n comments: props.comments || [],\r\n text: '',\r\n };\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n comments: props.comments || [],\r\n });\r\n }\r\n render() {\r\n return React.createElement(TeachingBubble, { secondaryButtonProps: {\r\n children: 'Cerrar',\r\n onClick: () => this.props.onDismiss()\r\n }, onDismiss: () => this.props.onDismiss(), headline: 'Comments', targetElement: this.props.targetElement },\r\n React.createElement(\"div\", { className: 'teaching-comments' },\r\n React.createElement(Grid, null,\r\n React.createElement(Row, null,\r\n React.createElement(Column, null,\r\n React.createElement(TextField, { placeholder: 'Comment', label: 'Comment', maxLength: 128, value: this.state.text, onChange: (_, value) => {\r\n this.setState({\r\n text: value\r\n });\r\n }, onKeyDown: (ev) => {\r\n if (ev.keyCode === 13) {\r\n const comments = this.state.comments;\r\n comments.push({\r\n Comment: this.state.text,\r\n Date: DateTime.Now.ToString('DD/MM/yyyy hh:mm:ss'),\r\n Id: Guid.NewGuid(),\r\n UserDisplayName: this.props.currentUserDisplayName,\r\n UserId: this.props.currentUserId,\r\n UserLoginName: this.props.currentUserLoginName,\r\n });\r\n this.props.onChange(comments);\r\n this.setState({\r\n text: ''\r\n });\r\n }\r\n } }))),\r\n this.state.comments.map(o => React.createElement(Row, null,\r\n React.createElement(Column, null,\r\n React.createElement(\"div\", { style: { color: 'white' } }, o.Comment),\r\n React.createElement(\"div\", { className: 'author' },\r\n React.createElement(\"div\", null, o.UserDisplayName),\r\n React.createElement(\"div\", null,\r\n React.createElement(\"small\", null, o.Date)))))))));\r\n }\r\n}\r\n","export const StringResources = {\r\n Accept: 'Aceptar',\r\n DocumentDeliveries: 'Entregas documentales',\r\n ExpedientePackaging: 'Expedientes empaquetados',\r\n Active: 'Activo',\r\n IsTrdEnabled: 'TRD activa',\r\n ActuaComoRepresentanteQuestion: '¿Actúa cómo representante?',\r\n Address: 'Dirección',\r\n AllowEdit: 'Permitir editar',\r\n ApprovalComments: 'Observaciones de la aprobación',\r\n Approve: 'Aprobar',\r\n Review: 'Revisar',\r\n ArchivoX_EditNotification: 'Editar notificación',\r\n AssignmentByProfile: 'Asignación por perfil',\r\n AssignmentType: 'Tipo de asignación',\r\n AssociateContact: 'Asociar a contacto',\r\n AtencionPreferencial: 'Atención preferencial',\r\n AuthorizedRoles: 'Roles autorizados',\r\n Back: 'Volver',\r\n Barrio: 'Barrio',\r\n Cancel: 'Cancelar',\r\n CancelRequest: 'Cancelar solicitud',\r\n CertifiedMail: 'Correo certificado',\r\n City: 'Ciudad',\r\n Code: 'Código',\r\n Comments: 'Observaciones',\r\n CurrentSection: 'Subsección actual',\r\n CompanyName: 'Tipo de entidad',\r\n ContactType: 'Tipo de contacto',\r\n TipoSolicitante: 'Tipo de contacto',\r\n CopyActiveDocumentaryTypes: 'Copiar tipos documentales activos',\r\n CopyActiveFolders: 'Copiar carpetas activas',\r\n Country: 'País',\r\n DateOfBirth: 'Fecha de nacimiento',\r\n DecisionTable: 'Tabla de decisión',\r\n Default: 'Predeterminado',\r\n DefaultUser: 'Usuario predeterminado',\r\n Delete: 'Eliminar',\r\n Description: 'Descripción',\r\n Edit: 'Editar',\r\n Email: 'Correo electrónico',\r\n EndDate: 'Fecha fin',\r\n ExpedienteName: 'Título del expediente',\r\n ExpedienteNumber: 'Número expediente',\r\n Finish: 'Finalizar',\r\n FinishTurno: 'Finalizar turno',\r\n FirstCall: 'Primer llamado',\r\n Fondo: 'Fondo',\r\n Gender: 'Género',\r\n GrupoEtnido: 'Grupo étnico',\r\n IdentificationNumber: 'Número de identificación',\r\n IdentificationType: 'Tipo de identificación',\r\n InformationRequest: 'Solicitar información',\r\n InformationRequestHistory: 'Solicitudes de información',\r\n LastName: 'Apellido',\r\n LevelOfSchooling: 'Nivel de escolaridad',\r\n ModoRecepcion: 'Modo de recepción',\r\n ModuleName: 'Nombre del módulo',\r\n MAS: 'Módulo de atención y servicio',\r\n MyApprovals: 'Mis aprobaciones',\r\n Error: 'Error',\r\n ApprovalPending: 'Pendiente por aprobar',\r\n Pending: 'Pendiente',\r\n Completed: 'Completo',\r\n MyRequests: 'Mis solicitudes',\r\n Name: 'Nombre',\r\n Names: 'Nombres',\r\n New: 'Nuevo',\r\n Next: 'Siguiente',\r\n NextTurno: 'Siguiente turno',\r\n No: 'No',\r\n NumeroReferencia: 'Número de referencia',\r\n Permissions: 'Permisos',\r\n Position: 'Cargo',\r\n PostalCode: 'Código postal',\r\n PreferenciaRespuesta: 'Preferencia de la respuesta',\r\n Prefix: 'Prefijo',\r\n ProcesoX_AllowUploadDocumentUsingActivityInstance: 'Permitir cargar documentos por medio de la instancia de proceso',\r\n ProcesoX_ImportProject: 'Importar proyecto',\r\n Import: 'Importar',\r\n Export: 'Exportar',\r\n Simulate: 'Simular',\r\n ProcesoX_ShowErrorsSummaryInDialog: 'Mostrar resumen de errores en cuadro de dialogo',\r\n ProcessInitiatorUser: 'Usuario que inicia el flujo',\r\n Profession: 'Profesión u oficio',\r\n Profile: 'Perfil',\r\n PuntoRadicacion: 'Punto de Radicación',\r\n ReadAllDocumentaryTypes: 'Leer todos los tipos documentales',\r\n ReadSpecificDocumentaryTypes: 'Leer tipos documentales especificos',\r\n ReadWriteAllDocumentaryTypes: 'Leer, crear y editar todos los tipos documentales',\r\n ReadWriteSpecificDocumentaryTypes: 'Leer, crear y editar tipos documentales especificos',\r\n Reconnected: 'Reconectar',\r\n RequestComments: 'Observaciones de la solicitud',\r\n ReturnedComments: 'Comentarios de la devolución',\r\n Responsible: 'Responsable',\r\n ResponsibleUser: 'Usuario Responsable',\r\n Role: 'Rol',\r\n Roles: 'Roles',\r\n Seccion: 'Sección',\r\n SecondCall: 'Segundo llamado',\r\n Serie: 'Serie',\r\n SeriePertenencia: 'Serie a la que pertenece',\r\n ShowAll: 'Mostrar todo',\r\n StartDate: 'Fecha inicio',\r\n Subfondo: 'Subfondo',\r\n Subject: 'Asunto',\r\n Subseccion: 'Subsección',\r\n Subserie: 'Subserie',\r\n ThirdCall: 'Tercer llamado',\r\n TipoRadicado: 'Tipo de radicado',\r\n Tramite: 'Trámite',\r\n Variable: 'Variable',\r\n Version: 'Versión',\r\n VersionTrd: 'Versión TRD',\r\n View: 'Ver',\r\n Yes: 'Si',\r\n DigitalSignature: 'Firma digital',\r\n ElectronicSignature: 'Firma electrónica',\r\n HandwrittenSignature: 'Firma manuscrita',\r\n History: 'Histórico',\r\n SendSurveyEmail: 'Enviar encuesta a Email',\r\n SendSurveyDevice: 'Enviar encuesta a Dispositivo'\r\n};\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport React from 'react';\r\nimport { Panel, PanelType, DefaultButton, PrimaryButton } from '../../fluent';\r\nimport { StringResources } from '../helpers/strings';\r\nexport class Wizard extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n children: props.children || [],\r\n currentPage: props.currentPage || 0,\r\n finishButtonDisabled: props.finishButtonDisabled || false,\r\n finishButtonText: props.finishButtonText,\r\n fullScreen: props.fullScreen,\r\n nextButtonDisabled: props.nextButtonDisabled || false,\r\n show: props.show,\r\n title: props.title\r\n };\r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({\r\n children: props.children || [],\r\n currentPage: props.currentPage || 0,\r\n finishButtonDisabled: props.finishButtonDisabled || false,\r\n finishButtonText: props.finishButtonText,\r\n fullScreen: props.fullScreen,\r\n nextButtonDisabled: props.nextButtonDisabled || false,\r\n show: props.show,\r\n title: props.title\r\n });\r\n }\r\n render() {\r\n const children = this.state.children.filter((_, index) => index === this.state.currentPage);\r\n return React.createElement(Panel, { isOpen: this.state.show, hasCloseButton: false, type: this.props.fullScreen ? PanelType.smallFluid : PanelType.large, headerText: this.state.title, isFooterAtBottom: true, onRenderFooterContent: () => React.createElement(\"div\", { className: 'ms-Grid-row' },\r\n React.createElement(\"div\", { className: 'ms-Grid-col ms-u-sm12', style: { textAlign: 'right', userSelect: 'none' } },\r\n React.createElement(DefaultButton, { disabled: this.state.currentPage === 0, iconProps: { iconName: 'ChevronLeft' }, onClick: this._back.bind(this), text: StringResources.Back }),\r\n React.createElement(\"span\", null, \"\\u00A0\\u00A0\"),\r\n React.createElement(DefaultButton, { disabled: this.state.nextButtonDisabled || (this.state.currentPage === this.state.children.length - 1), iconProps: { iconName: 'ChevronRight' }, onClick: this._next.bind(this), text: StringResources.Next }),\r\n React.createElement(\"span\", null, \"\\u00A0\\u00A0\"),\r\n React.createElement(PrimaryButton, { disabled: this.state.finishButtonDisabled || (this.state.currentPage < this.state.children.length - 1), iconProps: { iconName: 'Accept' }, onClick: this._finish.bind(this), primary: true, text: this.state.finishButtonText || StringResources.Finish }),\r\n React.createElement(\"span\", null, \"\\u00A0\\u00A0\"),\r\n React.createElement(DefaultButton, { iconProps: { iconName: 'Cancel' }, onClick: this._cancel.bind(this), text: StringResources.Cancel }))), closeButtonAriaLabel: 'Cerrar' },\r\n React.createElement(React.Fragment, null, children));\r\n }\r\n _back() {\r\n if (this.state.currentPage > 0) {\r\n this.props.onChangePage(this.state.currentPage - 1);\r\n }\r\n }\r\n _next() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.state.currentPage < this.state.children.length) {\r\n this.props.onChangePage(this.state.currentPage + 1);\r\n }\r\n });\r\n }\r\n _finish() {\r\n if (this.props.onFinish) {\r\n this.props.onFinish();\r\n }\r\n }\r\n _cancel() {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n }\r\n }\r\n}\r\n","export enum TramiteEnum {\r\n DenunciaFiscal = 4, // 4 Para db: cgr-sgdea-test//Para pruebas: 37 \r\n DerechoPeticion = 3, // 3 Para db: cgr-sgdea-test //Para pruebas: 46\r\n Denuncia = -1, //solo en ioip 26\r\n //TRAMITES DE CONGRESISTA\r\n SolicitudInformacion = 51,\r\n SolicitudDocumentos = 52,\r\n InvitacionDebatePolitico = 53,\r\n IntervencionExcepcional = 54\r\n}","import React from 'react';\r\nimport {\r\n TipoColumnaMetadato, IMetadatoAsociado,\r\n IValorMetadato, $_, DATETIME_ERROR_STYLE,\r\n onFormatDate, DatePickerStrings, IDocumento, getFileName, truncate,\r\n getFileExtension, showError,\r\n DataTableRequest, DataTablesResponse,\r\n IOpcionSeleccionable\r\n} from \"./base\";\r\nimport { IComboBoxOption, Fabric, TooltipHost, DatePicker, DayOfWeek, DirectionalHint, Checkbox, TextField, ComboBox, IColumn, IContextualMenuItem, CommandBar, DetailsList, SelectionMode } from \"@fluentui/react\";\r\nimport { Link, Icon } from \"@fluentui/react\";\r\nimport { ICity, ICountry, IDepartment } from '@ioip/archivox/lib';\r\n\r\n//#region Editor metadatos\r\n\r\nexport interface ILayoutEditorComponentProps {\r\n\r\n mode: 'edit' | 'exe';\r\n\r\n /**\r\n * Servicio web a utilizar para obtener los metadatos asociados al trámite\r\n */\r\n editMetadataService: (idTramite: number) => Promise;\r\n\r\n /**\r\n * Servicio web a utilizar para obtener los metadatos asociados al trámite\r\n * incluidas las opciones de lista desplegable\r\n */\r\n executableMetadataService: (idTramite: number) => Promise;\r\n\r\n /**\r\n * Función a ejecutar cuando se cambie el valor de un metadato\r\n */\r\n onChangeValues: (values: IValorMetadato[]) => void;\r\n\r\n getCitiesService: () => Promise;\r\n\r\n getDepartmentsService: () => Promise;\r\n\r\n getCountriesService: () => Promise;\r\n\r\n getCategoryMetadataService: (name: string) => Promise;\r\n\r\n getMetadataOptionsService: (idMetadato: number) => Promise;\r\n\r\n /**\r\n * Servicio a utilizar para la lectura de metadatos personalizados cuando son de tipo ExternalMetadata\r\n */\r\n readExternalMetadataService: (applicatin: string, className: string) => Promise;\r\n\r\n /**\r\n * Servicio a utilizar para la lectura de metadatos personalizados\r\n */\r\n executeCustomCodeService: (applicatin: string, className: string, data: { [ key: string ]: any }) => Promise;\r\n\r\n /**\r\n * Servicio encargado de consultar contactos\r\n */\r\n getContactsService: (request: DataTableRequest) => Promise;\r\n\r\n scope: 'ventanilla' | 'mesa de ayuda' | 'web';\r\n\r\n idObjeto: number;\r\n\r\n idObjetoAsUrlParam: boolean;\r\n\r\n}\r\n\r\nexport interface IEditorMetadatosComponentProps {\r\n metadatos: IMetadatoAsociado[];\r\n values?: IValorMetadato[];\r\n onInitialize?: (component: EditorMetadatosComponent) => void;\r\n onChangeValues?: (values: IValorMetadato[]) => void;\r\n searchMode: boolean;\r\n readonly?: boolean;\r\n /**\r\n * Establece si se deben renderizar solo los metadatos marcados como \"Mostrar\"\r\n */\r\n renderOnlyItemsMarkAsShow: boolean;\r\n /**\r\n * Función a ejecutar al momento de renderizar un metadato.\r\n * Permite establecer si se debe renderizar\r\n */\r\n onCheckRender?: (metadata: IMetadatoAsociado) => boolean;\r\n\r\n idTramite?: number;\r\n\r\n errors: { [ key: string ]: string }\r\n\r\n onChangeErrors: (errors: { [ key: string ]: string }) => void;\r\n}\r\n\r\nexport interface IEditorMetadatosComponentState { idTramite: number; metadatos: IMetadatoAsociado[]; errors: { [ key: string ]: string }; values: IValorMetadato[]; }\r\nexport interface IControl { type: string; label?: string; childrens?: IControl[]; colLg?: number; colMd?: number; onChange?(value: string | number): void; }\r\nexport interface IGrupoMetadato { idCategoria: number; nombreCategoria: string; metadatos: IMetadatoAsociado[]; }\r\n\r\nexport class EditorMetadatosComponent extends React.Component {\r\n\r\n private tempErrors: { [ key: string ]: any } = {};\r\n\r\n constructor(props: IEditorMetadatosComponentProps) {\r\n super(props);\r\n this.state = {\r\n metadatos: this.props.metadatos,\r\n errors: {},\r\n values: this.props.values || [],\r\n idTramite: 0\r\n };\r\n if (this.props.onInitialize) {\r\n this.props.onInitialize(this);\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const categories = this._group(this.state.metadatos);\r\n return (\r\n \r\n {\r\n categories.map((category: IGrupoMetadato) => this.renderCategory(category))\r\n }\r\n \r\n )\r\n }\r\n\r\n public renderCategory(categoria: IGrupoMetadato): JSX.Element {\r\n\r\n // Filtrar los metadatos a mostrar\r\n let cells = categoria\r\n .metadatos\r\n .filter(o => this.props.renderOnlyItemsMarkAsShow ? o.Mostrar : true);\r\n\r\n // Ejecutar filtrado personalizado\r\n if (this.props.onCheckRender) {\r\n cells = cells.filter(o => this.props.onCheckRender(o) === true);\r\n }\r\n\r\n // Renderizar\r\n return \r\n
      \r\n
      \r\n

      {categoria.nombreCategoria}

      \r\n
      \r\n
      \r\n
      \r\n {\r\n cells\r\n .map((metadato: IMetadatoAsociado) => this.renderCell(metadato))\r\n }\r\n
      \r\n
      \r\n\r\n }\r\n\r\n public renderCell(metadato: IMetadatoAsociado): JSX.Element {\r\n\r\n // Verificar si el metadato se debe o no renderizar\r\n let show = !this.props.searchMode || (this.props.searchMode && metadato.IdTipoColumnaMetadato != TipoColumnaMetadato.Nota && metadato.Busqueda);\r\n\r\n // Evaluar condición\r\n if (show) {\r\n if (!$_.isNull(metadato.ReglaVisible) && metadato.ReglaVisible !== '') {\r\n show = this._evalRule(metadato.ReglaVisible);\r\n }\r\n }\r\n\r\n // Evaluar requerido\r\n if (metadato.ReglaRequerido) {\r\n const value = this._evalRule(metadato.ReglaRequerido);\r\n metadato.Requerido = value;\r\n }\r\n\r\n // Establecer el ancho de la columna\r\n //const className = `ms-Grid-col ms-lg${metadato.TamanoCompleto ? '12' : '6'} ms-md${metadato.TamanoCompleto ? '12' : '6'} ms-sm12`;\r\n\r\n // Renderizar\r\n return \r\n {\r\n show &&
      \r\n \r\n {\r\n this.props.renderOnlyItemsMarkAsShow\r\n ? (metadato.Mostrar && this.renderControl(metadato))\r\n : this.renderControl(metadato)\r\n }\r\n \r\n
      \r\n }\r\n
      \r\n }\r\n\r\n /**\r\n * Renderiza el control correspondiente a un metadato\r\n * @param metadato \r\n */\r\n public renderControl(metadato: IMetadatoAsociado): JSX.Element {\r\n switch (metadato.IdTipoColumnaMetadato) {\r\n case TipoColumnaMetadato.Texto:\r\n return this.renderText(metadato);\r\n case TipoColumnaMetadato.Nota:\r\n return this.renderNota(metadato);\r\n case TipoColumnaMetadato.Seleccion:\r\n case TipoColumnaMetadato.Usuario:\r\n case TipoColumnaMetadato.Pais:\r\n case TipoColumnaMetadato.Departamento:\r\n case TipoColumnaMetadato.Ciudad:\r\n case TipoColumnaMetadato.Custom:\r\n return this.renderDropDownList(metadato);\r\n case TipoColumnaMetadato.Fecha:\r\n return this.renderDate(metadato);\r\n case TipoColumnaMetadato.SiNo:\r\n return this.renderBoolean(metadato);\r\n case TipoColumnaMetadato.ExpresionRegular:\r\n return this.renderRegularExpression(metadato);\r\n case TipoColumnaMetadato.Numero:\r\n return this.renderNumber(metadato);\r\n case TipoColumnaMetadato.Moneda:\r\n return this.renderMoney(metadato);\r\n default:\r\n throw 'El tipo de metadato no es valido ' + JSON.stringify(metadato);\r\n }\r\n }\r\n\r\n public renderText(metadato: IMetadatoAsociado): JSX.Element {\r\n return (metadato.IdMetadato)}\r\n errorMessage={this.state.errors[ metadato.IdMetadato ]}\r\n disabled={this.props.readonly}\r\n onChange={(_, value) => {\r\n this._setValue(metadato.IdMetadato, value);\r\n }}\r\n />;\r\n }\r\n\r\n public renderNota(metadato: IMetadatoAsociado): JSX.Element {\r\n return (metadato.IdMetadato)}\r\n disabled={this.props.readonly}\r\n onChange={(_, value) => {\r\n this._setValue(metadato.IdMetadato, value);\r\n }}\r\n />;\r\n }\r\n\r\n public renderDropDownList(metadato: IMetadatoAsociado): JSX.Element {\r\n\r\n const selectedKey: number = Number(this._getValue(metadato.IdMetadato));\r\n let items = this._getComboBoxOptions(metadato);\r\n // Filtrar elementos\r\n if (!$_.isNullOrEmpty(metadato.ReglaListaDesplegable)) {\r\n const data = this._getMetadataValues();\r\n items = this._processDropDownListOptions(metadato, items, data, this.state.idTramite);\r\n }\r\n return {\r\n this._setValue(metadato.IdMetadato, value.key);\r\n }}\r\n />;\r\n }\r\n\r\n private _processDropDownListOptions(metadato: IMetadatoAsociado, items: IComboBoxOption[], data: { [ key: string ]: any }, idTramite: number): IComboBoxOption[] {\r\n const func: Function = new Function('items', '$', 'idTramite', metadato.ReglaListaDesplegable);\r\n const result = func(items, data, idTramite);\r\n console.log(metadato.Nombre, result);\r\n return result;\r\n }\r\n\r\n public renderDate(metadato: IMetadatoAsociado): JSX.Element {\r\n return \r\n {\r\n this._setValue(metadato.IdMetadato, value);\r\n }}\r\n disabled={this.props.readonly}\r\n value={this._getValue(metadato.IdMetadato)} />\r\n {this.state.errors[ metadato.IdMetadato ]}\r\n \r\n\r\n }\r\n\r\n public renderBoolean(metadato: IMetadatoAsociado): JSX.Element {\r\n return (metadato.IdMetadato)}\r\n disabled={this.props.readonly}\r\n onChange={(event, value) => {\r\n this._setValue(metadato.IdMetadato, value);\r\n }} />;\r\n }\r\n\r\n public renderRegularExpression(metadato: IMetadatoAsociado): JSX.Element {\r\n return (metadato.IdMetadato)}\r\n disabled={this.props.readonly}\r\n onChange={(_, value) => {\r\n this._setValue(metadato.IdMetadato, value);\r\n }} />\r\n }\r\n\r\n public renderNumber(metadato: IMetadatoAsociado): JSX.Element {\r\n return {\r\n this._setValue(metadato.IdMetadato, value);\r\n }}\r\n errorMessage={this.state.errors[ metadato.IdMetadato ]}\r\n disabled={this.props.readonly}\r\n value={this._getValue(metadato.IdMetadato)}\r\n />\r\n }\r\n\r\n public renderMoney(metadato: IMetadatoAsociado): JSX.Element {\r\n return {\r\n this._setValue(metadato.IdMetadato, value);\r\n }}\r\n errorMessage={this.state.errors[ metadato.IdMetadato ]}\r\n disabled={this.props.readonly}\r\n value={this._getValue(metadato.IdMetadato)}\r\n />\r\n }\r\n\r\n private _isDropDownListField(metadata: IMetadatoAsociado): boolean {\r\n return metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.Seleccion\r\n || metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.Pais\r\n || metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.Departamento\r\n || metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.Ciudad\r\n || metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.TipoIdentificacion\r\n || metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.Custom;\r\n }\r\n\r\n private _getMetadataValues(): { [ key: string ]: any } {\r\n const metadata = this.state.metadatos;\r\n const data = {};\r\n for (var i = 0; i < metadata.length; i++) {\r\n data[ metadata[ i ].IdMetadato ] = metadata[ i ];\r\n data[ metadata[ i ].Nombre ] = metadata[ i ];\r\n const value = this.state.values.filter(o => o.IdMetadato === metadata[ i ].IdMetadato)[ 0 ];\r\n\r\n if (value) {\r\n data[ metadata[ i ].IdMetadato ].Value = value.Valor;\r\n data[ metadata[ i ].Nombre ].Value = value.Valor;\r\n\r\n // Si el metadato es de tipo lista desplegable se debe establecer el texto de la opción seleccionada\r\n if (this._isDropDownListField(metadata[ i ])) {\r\n const option = data[ metadata[ i ].IdMetadato ].Opciones.filter(o => o.IdOpcionListaDesplegableMetadato === value.Valor)[ 0 ];\r\n const text = option !== undefined ? option.Nombre : '';\r\n data[ metadata[ i ].IdMetadato ].Text = text;\r\n data[ metadata[ i ].Nombre ].Text = text;\r\n }\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n private _evalRule(code: string): boolean {\r\n\r\n const stringIsNullOrEmpty = (s: string): boolean => {\r\n return s === undefined || s === null || s === '';\r\n }\r\n\r\n // Si el código personalizado está vacio, se retorna true\r\n if (stringIsNullOrEmpty(code)) {\r\n return true;\r\n }\r\n\r\n const func = new Function('$', 'return ' + code);\r\n const data = this._getMetadataValues();\r\n return func(data);\r\n\r\n }\r\n\r\n private _getValue(idMetadato: number): T {\r\n const value: IValorMetadato = this.state.values.filter(o => o.IdMetadato === idMetadato)[ 0 ];\r\n const dataType = this.state.metadatos.filter(o => o.IdMetadato == idMetadato)[ 0 ];\r\n if (value !== undefined) {\r\n if (dataType && dataType.IdTipoColumnaMetadato == TipoColumnaMetadato.Fecha) {\r\n return (new Date(value.Valor as any) as any);\r\n } else {\r\n return (value.Valor as any) as T;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private _setValue(idMetadato: number, value: any): void {\r\n let values: IValorMetadato[] = this.state.values.slice();\r\n let metadato: IValorMetadato = values.filter(o => o.IdMetadato === idMetadato)[ 0 ];\r\n const metadatoAsociado = this.state.metadatos.filter(o => o.IdMetadato === idMetadato)[ 0 ];\r\n if (metadato === undefined) {\r\n metadato = {\r\n IdMetadato: idMetadato,\r\n IdExpediente: 0,\r\n IdDocumentoExpediente: 0,\r\n IdOpcionListaDesplegableMetadato: 0,\r\n IdValorMetadato: 0,\r\n Valor: value,\r\n Nombre: metadatoAsociado !== undefined ? metadatoAsociado.Nombre : '',\r\n Codigo: '',\r\n CategoriaMetadato: ''\r\n }\r\n values.push(metadato);\r\n }\r\n metadato.Valor = value;\r\n this.setState({ values });\r\n if (this.props.onChangeValues) {\r\n this.props.onChangeValues(values);\r\n }\r\n }\r\n\r\n private _getComboBoxOptions(metadato: IMetadatoAsociado): IComboBoxOption[] {\r\n let options: IComboBoxOption[] = [];\r\n if (metadato.Opciones) {\r\n\r\n options = metadato.Opciones.map((o: any) => ({\r\n key: o.IdOpcionListaDesplegableMetadato || o.key,\r\n text: o.Nombre || o.text\r\n }));\r\n\r\n // Filtrar elementos en caso de ser un combobox dependiente\r\n if (metadato.ReglaListaDesplegable) {\r\n\r\n }\r\n\r\n }\r\n return options;\r\n }\r\n\r\n private _sort(values: any[], property: string): any[] {\r\n const result = values.sort((a: any, b: any): number => {\r\n if (a[ property ] < b[ property ]) {\r\n return -1;\r\n }\r\n if (a[ property ] > b[ property ]) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n private _group(values: IMetadatoAsociado[]): IGrupoMetadato[] {\r\n let groups: IGrupoMetadato[] = [];\r\n this._sort(values, 'Orden').forEach(metadato => {\r\n if (!this.props.searchMode || (this.props.searchMode && metadato.IdTipoColumnaMetadato != TipoColumnaMetadato.Nota && metadato.Busqueda)) {\r\n let group: IGrupoMetadato = groups.filter(o => o.idCategoria === metadato.IdCategoriaMetadato)[ 0 ];\r\n if (group === undefined) {\r\n group = {\r\n idCategoria: metadato.IdCategoriaMetadato,\r\n nombreCategoria: metadato.CategoriaMetadato,\r\n metadatos: [],\r\n }\r\n groups.push(group);\r\n }\r\n group.metadatos.push(metadato);\r\n }\r\n });\r\n return this._sort(groups, 'nombreCategoria');\r\n }\r\n\r\n /**\r\n * Establece un error de validación\r\n * @param idMetadato ID del metadato que tiene errores de validación\r\n * @param errorMessage Mensaje de error\r\n */\r\n private _setError(idMetadato: number, errorMessage: string) {\r\n this.tempErrors[ idMetadato ] = errorMessage;\r\n this.setState({\r\n errors: this.tempErrors\r\n });\r\n }\r\n\r\n public validate(): boolean {\r\n\r\n let hasError: boolean = false;\r\n for (let i = 0; i < this.props.metadatos.length; i++) {\r\n const metadato: IMetadatoAsociado = this.props.metadatos[ i ];\r\n if (metadato.Mostrar === true) {\r\n const _value: IValorMetadato = this.state.values.filter(o => o.IdMetadato === metadato.IdMetadato)[ 0 ] || {\r\n IdMetadato: metadato.IdMetadato,\r\n IdExpediente: 0,\r\n IdDocumentoExpediente: 0,\r\n IdOpcionListaDesplegableMetadato: 0,\r\n IdValorMetadato: 0,\r\n Valor: '',\r\n Codigo: '',\r\n CategoriaMetadato: '',\r\n Nombre: ''\r\n };\r\n\r\n // Evaluar campos requeridos\r\n if (metadato.Requerido) {\r\n\r\n // Evaluar campos de selección\r\n if (metadato.IdTipoColumnaMetadato === TipoColumnaMetadato.Seleccion) {\r\n const value: number = Number(_value.Valor);\r\n if (value === undefined || value <= 0) {\r\n this._setError(metadato.IdMetadato, 'Campo requerido');\r\n hasError = true;\r\n continue;\r\n }\r\n }\r\n\r\n if (metadato.IdTipoColumnaMetadato === TipoColumnaMetadato.Moneda) {\r\n const value: number = Number(_value.Valor);\r\n if (value === undefined || value <= 0) {\r\n this._setError(metadato.IdMetadato, 'Campo requerido');\r\n hasError = true;\r\n continue;\r\n }\r\n }\r\n\r\n if (metadato.IdTipoColumnaMetadato === TipoColumnaMetadato.Usuario) {\r\n const value: number = Number(_value.Valor);\r\n if (value === undefined || value <= 0) {\r\n this._setError(metadato.IdMetadato, 'Campo requerido');\r\n hasError = true;\r\n continue;\r\n }\r\n }\r\n\r\n }\r\n\r\n // Evaluar campo de texto y nota\r\n if (metadato.IdTipoColumnaMetadato === TipoColumnaMetadato.Texto || metadato.IdTipoColumnaMetadato === TipoColumnaMetadato.Nota || metadato.IdTipoColumnaMetadato === TipoColumnaMetadato.ExpresionRegular) {\r\n if (metadato.Requerido && (_value.Valor == null || _value.Valor.trim().length === 0)) {\r\n this._setError(metadato.IdMetadato, 'Campo requerido');\r\n hasError = true;\r\n continue;\r\n }\r\n\r\n if (metadato.LongitudMinima && metadato.LongitudMinima > 0) {\r\n if (_value.Valor.length < metadato.LongitudMinima) {\r\n this._setError(metadato.IdMetadato, `Minimo se permiten ${metadato.LongitudMinima} carácteres`);\r\n hasError = true;\r\n continue;\r\n }\r\n }\r\n if (metadato.LongitudMaxima && metadato.LongitudMaxima > 0) {\r\n if (_value.Valor.length > metadato.LongitudMaxima) {\r\n this._setError(metadato.IdMetadato, `Máximo se permiten ${metadato.LongitudMaxima} carácteres`);\r\n hasError = true;\r\n continue;\r\n }\r\n }\r\n\r\n // Evaludar expresión regular\r\n if (metadato.IdTipoColumnaMetadato === TipoColumnaMetadato.ExpresionRegular) {\r\n const exp: RegExp = new RegExp(metadato.ExpresionRegular || '');\r\n if (exp.exec(_value.Valor) == null) {\r\n this._setError(metadato.IdMetadato, `Valor no valido`);\r\n hasError = true;\r\n continue;\r\n }\r\n }\r\n\r\n }\r\n\r\n // Evaluar campo numérico\r\n if (metadato.IdTipoColumnaMetadato === TipoColumnaMetadato.Numero || metadato.IdTipoColumnaMetadato === TipoColumnaMetadato.Moneda) {\r\n const value = isNaN(Number(_value.Valor)) ? 0 : Number(_value.Valor);\r\n if (metadato.Requerido && isNaN(Number(_value.Valor))) {\r\n this._setError(metadato.IdMetadato, `Campo requerido`);\r\n hasError = true;\r\n continue;\r\n }\r\n\r\n if (metadato.ValorMinimo && metadato.ValorMinimo > 0) {\r\n if (value < metadato.ValorMinimo) {\r\n this._setError(metadato.IdMetadato, `El valor minimo permitido es ${metadato.ValorMinimo}`);\r\n hasError = true;\r\n continue;\r\n }\r\n }\r\n if (metadato.ValorMaximo && metadato.ValorMaximo > 0) {\r\n if (value > metadato.ValorMaximo) {\r\n this._setError(metadato.IdMetadato, `El valor máximo permitido es ${metadato.ValorMaximo}`);\r\n hasError = true;\r\n continue;\r\n }\r\n }\r\n }\r\n\r\n // Evaluar fechas\r\n if (metadato.IdTipoColumnaMetadato === TipoColumnaMetadato.Fecha) {\r\n\r\n if (metadato.Requerido && (_value.Valor == null || !(_value.Valor as any instanceof Date))) {\r\n this._setError(metadato.IdMetadato, `Campo requerido`);\r\n hasError = true;\r\n continue;\r\n }\r\n\r\n if (metadato.FechaMaxima) {\r\n const max: Date = new Date(metadato.FechaMaxima as any);\r\n if (_value.Valor as any > max) {\r\n this._setError(metadato.IdMetadato, `La fecha no puede ser mayor a ${onFormatDate(max)}`);\r\n hasError = true;\r\n continue;\r\n }\r\n }\r\n\r\n if (metadato.FechaMinima) {\r\n const min: Date = new Date(metadato.FechaMinima as any);\r\n if (_value.Valor as any < min) {\r\n this._setError(metadato.IdMetadato, 'La fecha no puede ser menor a ' + onFormatDate(min));\r\n hasError = true;\r\n continue;\r\n }\r\n }\r\n\r\n }\r\n\r\n this._setError(metadato.IdMetadato, '');\r\n\r\n }\r\n }\r\n return !hasError;\r\n }\r\n\r\n public getValues(): IValorMetadato[] {\r\n return this.state.values;\r\n }\r\n\r\n public componentWillReceiveProps(nextProps: IEditorMetadatosComponentProps): void {\r\n this.setState({\r\n values: nextProps.values || [],\r\n metadatos: nextProps.metadatos || [],\r\n idTramite: nextProps.idTramite || 0,\r\n errors: nextProps.errors\r\n });\r\n }\r\n\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Solicitud información\r\n\r\n//#endregion\r\n\r\n//#region NumberTextField\r\n\r\nexport interface INumberTextFieldProps {\r\n label: string;\r\n initialValue: string;\r\n required?: boolean;\r\n value: string | number;\r\n onChanged?: (newValue: number) => void;\r\n errorMessage?: string;\r\n maxLength?: number;\r\n disabled?: boolean;\r\n borderless?: boolean;\r\n}\r\n\r\nexport interface INumberTextFieldState {\r\n value: string;\r\n errorMessage?: string;\r\n}\r\n\r\nexport class NumberTextField extends React.Component {\r\n\r\n constructor(props: INumberTextFieldProps) {\r\n super(props);\r\n this.state = {\r\n value: props.value ? String(props.value) : props.initialValue\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n\r\n public componentWillReceiveProps(nextProps: INumberTextFieldProps): void {\r\n if (isNaN(Number(nextProps.value)) || nextProps.value === 0) {\r\n this.setState({ value: this.props.initialValue });\r\n } else {\r\n this.setState({ value: String(nextProps.value) });\r\n }\r\n this.setState({ errorMessage: nextProps.errorMessage });\r\n }\r\n\r\n private _onChange(ev: any, value: string): void {\r\n value = value.split('').filter(o => !isNaN(Number(o))).join('');\r\n this.setState({ value });\r\n if (this.props.onChanged) {\r\n this.props.onChanged(Number(value));\r\n }\r\n }\r\n}\r\n\r\n//#endregion\r\n\r\nexport interface IDropZoneComponentProps {\r\n onDrop?: (files: File[]) => void | Promise;\r\n onClear?: () => void | Promise;\r\n onRemove?: (item: IDocumento) => void | Promise;\r\n onItemClick?: (item: IDocumento) => Promise;\r\n allowedExtensions?: string;\r\n useDefaultExtensions?: boolean;\r\n multiple?: boolean;\r\n text?: string;\r\n disabled?: boolean;\r\n columns?: IColumn[];\r\n items?: IDocumento[];\r\n onChange?: (item: IDocumento[]) => void;\r\n customItems?: any[];\r\n hideDetailsOnEmpty?: boolean;\r\n showCustomItems?: boolean;\r\n maxLength?: number;\r\n onAllowRemove?: (item: IDocumento) => boolean;\r\n custom?: boolean;\r\n}\r\n\r\nexport interface IDropZoneComponentState {\r\n style?: React.CSSProperties;\r\n defaultColumns: IColumn[];\r\n customColumns: IColumn[];\r\n items: IDocumento[];\r\n allowedExtensions: string[];\r\n maxLength: number;\r\n}\r\n\r\nexport class DropZoneComponent extends React.Component {\r\n\r\n private get _columns(): IColumn[] {\r\n if (this.props.custom) {\r\n return this.state.customColumns;\r\n } else {\r\n return this.state.defaultColumns;\r\n }\r\n }\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n ...this._defaultState(),\r\n maxLength: props.maxLength || 1024,\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n if (this.props.useDefaultExtensions === true) {\r\n\r\n } else {\r\n if (this.props.allowedExtensions) {\r\n this.setState({ allowedExtensions: this.props.allowedExtensions.split(',').map(o => o.toLowerCase().trim()) });\r\n }\r\n else {\r\n this.setState({ allowedExtensions: [] });\r\n }\r\n }\r\n }\r\n\r\n public _buildCommandBar(): IContextualMenuItem[] {\r\n return (\r\n [\r\n {\r\n key: 'Seleccionar archivos',\r\n name: 'Seleccionar archivos',\r\n iconProps: { iconName: 'OpenFile' },\r\n title: 'Permite seleccionar archivos del equipo para cargar al sistema.' + (this.state.maxLength ? ' El tamaño máximo permitido por archivo es de ' + truncate(this.state.maxLength / 1048576) + ' MB' : ''),\r\n onClick: (this._openDialog as any).bind(this, true)\r\n }\r\n ]\r\n );\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n \r\n {\r\n (this.props.disabled === undefined || this.props.disabled === false) && \r\n }\r\n
      \r\n {\r\n this.state.items.length > 0 &&
      \r\n \r\n
      \r\n }\r\n {\r\n this.state.items.length === 0 &&
      \r\n No hay información para mostrar\r\n
      \r\n }\r\n
      \r\n
      \r\n );\r\n }\r\n\r\n public componentWillReceiveProps(nextProps: IDropZoneComponentProps): void {\r\n if (this.props.custom === true) {\r\n this.setState({\r\n items: nextProps.customItems || [],\r\n customColumns: nextProps.columns || [],\r\n maxLength: nextProps.maxLength\r\n });\r\n }\r\n else {\r\n this.setState({\r\n items: nextProps.items || [],\r\n customColumns: nextProps.columns || [],\r\n maxLength: nextProps.maxLength\r\n });\r\n }\r\n }\r\n\r\n private _openDialog(): void {\r\n if (!this.props.disabled) {\r\n const input: HTMLInputElement = document.createElement('input');\r\n input.type = 'file';\r\n input.accept = this.state.allowedExtensions.join(',');\r\n input.multiple = this.props.multiple;\r\n input.click();\r\n input.addEventListener('change', () => {\r\n if (input.files && input.files.length > 0) {\r\n this._processFiles(input.files);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private _onDrop(e: any): void {\r\n e.preventDefault();\r\n if (!this.props.disabled) {\r\n if (e && e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length > 0) {\r\n this._processFiles(e.dataTransfer.files);\r\n }\r\n }\r\n }\r\n\r\n private async _processFiles(filesToProcess: FileList): Promise {\r\n if (filesToProcess.length > 0) {\r\n let errorMessage = '';\r\n\r\n // Obtener los elementos actuales\r\n let items = this.state.items.slice();\r\n const files: File[] = [];\r\n\r\n // Prevenir que se adicione mas de un archivo cuando la opción de multiple es falso\r\n if (!this.props.multiple && items.length > 0) {\r\n items = [];\r\n }\r\n\r\n const max = this.props.multiple ? filesToProcess.length : 1;\r\n for (let i = 0; i < max; i++) {\r\n const file = filesToProcess[ i ];\r\n const nombre = getFileName(file.name);\r\n const extension = getFileExtension(file.name);\r\n\r\n // Verificar que los nombres de los archivos no se repitan y que el tipo sea valido\r\n if (this.state.allowedExtensions.indexOf(file.type.toLowerCase()) < 0 && this.state.allowedExtensions.indexOf(extension.toLowerCase()) < 0) {\r\n errorMessage = `El tipo de archivo no es permitido`;\r\n break;\r\n }\r\n\r\n // Verificar que el archivo no se haya agregado previamente\r\n if (items.filter(o => o.Nombre.trim().toUpperCase() === file.name.trim().toUpperCase()).length === 0) {\r\n\r\n // Verificar que el archivo no supere el tamaño permitido\r\n if (this.state.maxLength) {\r\n if (file.size > this.state.maxLength) {\r\n errorMessage = `El tamaño de los archivos no deben superara ${truncate((this.state.maxLength / 1024))} Kb`;\r\n break;\r\n }\r\n }\r\n\r\n items.push({\r\n IdDocumentoRadicadoEntrada: 0,\r\n IdAnexoDocumentoExpediente: 0,\r\n IdDocumentoRadicadoSalida: 0,\r\n IdDocumentoComunicadoInterno: 0,\r\n IdComunicadoInterno: 0,\r\n IdDocumentoExpediente: 0,\r\n IdRadicadoEntrada: 0,\r\n IdRadicadoSalida: 0,\r\n Nombre: file.name,\r\n NombreArchivo: `${nombre}.${extension}`,\r\n Extension: extension,\r\n Length: file.size,\r\n Archivo: file,\r\n Tipo: file.type,\r\n PreventRemove: false,\r\n });\r\n\r\n files.push(file);\r\n\r\n }\r\n\r\n }\r\n\r\n // Actualiar estado\r\n this.setState({ items });\r\n\r\n if (this.props.onChange) {\r\n this.props.onChange(items);\r\n }\r\n\r\n // Ejecutar evento\r\n if (this.props.onDrop) {\r\n this.props.onDrop(files);\r\n }\r\n\r\n if (errorMessage !== '') {\r\n showError(errorMessage)\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n private _onDragOver(e: React.DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n private _defaultState(): IDropZoneComponentState {\r\n\r\n const columns = this.props.columns && this.props.columns.length > 0 ? this.props.columns : [\r\n {\r\n key: 'Name',\r\n name: 'Nombre',\r\n fieldName: 'Nombre',\r\n minWidth: 300,\r\n maxWidth: 400,\r\n isResizable: true,\r\n onRender: this._onRenderName.bind(this)\r\n },\r\n {\r\n key: 'Extension',\r\n name: 'Extensión',\r\n fieldName: 'Extension',\r\n minWidth: 150,\r\n maxWidth: 180,\r\n isResizable: true\r\n },\r\n {\r\n key: 'Length',\r\n name: 'Tamaño',\r\n fieldName: 'Length',\r\n minWidth: 60,\r\n maxWidth: 100,\r\n isResizable: true,\r\n onRender: (o: IDocumento) => `${truncate((o.Length / 1024))} Kb`\r\n },\r\n {\r\n key: 'Delete',\r\n name: '',\r\n fieldName: 'Delete',\r\n minWidth: 80,\r\n maxWidth: 80,\r\n isResizable: false,\r\n onRender: this._onRenderDeleteIcon.bind(this)\r\n }\r\n ];\r\n\r\n return {\r\n style: {\r\n padding: '25px',\r\n border: 'dashed 1px gray',\r\n textAlign: 'center'\r\n },\r\n items: this.props.items || [],\r\n defaultColumns: columns,\r\n customColumns: this.props.columns || [],\r\n allowedExtensions: [],\r\n maxLength: 1024\r\n };\r\n\r\n }\r\n\r\n private _onRenderName(item: IDocumento): JSX.Element {\r\n const allowRemove = this.props.onAllowRemove(item);\r\n if (item.IdDocumentoExpediente > 0 || (item.ServerRelativeUrl !== undefined && item.ServerRelativeUrl !== '')) {\r\n return {\r\n if (this.props.onItemClick) {\r\n this.props.onItemClick(item);\r\n }\r\n }}>{item.Nombre};\r\n }\r\n else {\r\n return {item.Nombre};\r\n }\r\n }\r\n\r\n private _onRenderDeleteIcon(item: IDocumento): JSX.Element {\r\n const allowRemove = this.props.onAllowRemove(item);\r\n if (!this.props.disabled) {\r\n return \r\n
      \r\n {\r\n const items = this.state.items.filter(o => o !== item);\r\n this.setState({ items });\r\n if (this.props.onChange) {\r\n this.props.onChange(items);\r\n }\r\n }} />\r\n
      \r\n
      \r\n } else {\r\n return \r\n }\r\n }\r\n}\r\n\r\n//#region DataTable\r\n","\r\nimport React from 'react';\r\nimport {\r\n TipoColumnaMetadato, IMetadatoAsociado, IValorMetadato, $_,\r\n DATETIME_ERROR_STYLE, onFormatDate, DatePickerStrings,\r\n showError,\r\n defaultIMetadatoAsociado,\r\n ICategoriaMetadato, IOpcionSeleccionable,\r\n IContacto, _routes_, IService, DataTablesResponse, DataTableRequest, defaultIContacto, showWarnToast, ITipoColumnaMetadato\r\n} from \"./base\";\r\nimport {\r\n IComboBoxOption, Icon, DatePicker,\r\n DayOfWeek, Checkbox, TextField,\r\n ComboBox, IContextualMenuItem, CommandBar,\r\n DetailsList, SelectionMode, DetailsListLayoutMode,\r\n ConstrainMode, Panel, PrimaryButton,\r\n DefaultButton, PanelType, Selection,\r\n Dropdown,\r\n IDropdownOption, ProgressIndicator, TooltipHost, DirectionalHint\r\n} from \"@fluentui/react\";\r\nimport { EditorMetadatosComponent } from './components';\r\nimport { dateToStr } from '../../classes/utils';\r\nimport { GenericDataTableComponent } from 'ioip-base/lib/common';\r\nimport { ICity, ICountry, IDepartment } from '@ioip/archivox/lib';\r\n\r\n\r\n////#endregion\r\n\r\nexport interface ILayoutEditorComponentProps {\r\n\r\n mode: 'edit' | 'exe';\r\n\r\n /**\r\n * Servicio web a utilizar para obtener los metadatos asociados al trámite, expediente o tipo documental\r\n * @param objectId Identificador del trámite, tipo documental o subserie\r\n */\r\n metadataService: (objectId: number) => Promise;\r\n\r\n /**\r\n * Método a ejecutar cuando se guarden cambios en los metadatos\r\n */\r\n onSaveMetadataService?: (values: IMetadatoAsociado[]) => Promise;\r\n\r\n /**\r\n * Función a ejecutar cuando se cambie el valor de un metadato\r\n */\r\n onChangeValues: (values: IValorMetadato[]) => void;\r\n\r\n getCitiesService: () => Promise;\r\n\r\n getDepartmentsService: () => Promise;\r\n\r\n getCountriesService: () => Promise;\r\n\r\n getCategoryMetadataService: (name: string) => Promise;\r\n\r\n getMetadataOptionsService: (idMetadato: number) => Promise;\r\n\r\n /**\r\n * Servicio a utilizar para la lectura de metadatos personalizados cuando son de tipo ExternalMetadata\r\n */\r\n readExternalMetadataService: (applicatin: string, className: string) => Promise;\r\n\r\n /**\r\n * Servicio a utilizar para la lectura de metadatos personalizados\r\n */\r\n executeCustomCodeService: (applicatin: string, className: string, data: { [ key: string ]: any }) => Promise;\r\n\r\n /**\r\n * Servicio encargado de consultar contactos\r\n */\r\n getContactsService: (request: DataTableRequest) => Promise;\r\n\r\n scope: 'fisico' | 'digital' | 'web';\r\n\r\n idObjeto: number;\r\n\r\n idObjetoAsUrlParam: boolean;\r\n\r\n getMetadataColumnTypes: () => Promise;\r\n\r\n values: IValorMetadato[];\r\n\r\n model: () => any;\r\n\r\n}\r\n\r\nexport interface ILayoutEditorComponentState {\r\n values: IValorMetadato[];\r\n selectedItem: IMetadatoAsociado;\r\n metadata: IMetadatoAsociado[];\r\n cities: ICity[];\r\n departments: IDepartment[];\r\n countries: ICountry[];\r\n metadataCategories: { [ idMetadato: number ]: ICategoriaMetadato };\r\n metadataOptions: { [ idMetadato: number ]: IOpcionSeleccionable[] };\r\n customOptions: { [ idMetadato: number ]: IComboBoxOption[] };\r\n dynamic: {\r\n panel: {\r\n show: boolean;\r\n title: string;\r\n onClick?: () => void;\r\n values: IValorMetadato[];\r\n metadata: IMetadatoAsociado[];\r\n errors: { [ key: string ]: string };\r\n };\r\n commandBar: { [ key: string ]: IContextualMenuItem[] };\r\n selectedItem: { [ key: string ]: any[] };\r\n selection: { [ key: string ]: Selection };\r\n };\r\n /**\r\n * Almacena los errores de validación\r\n * key: IdMetadato\r\n * Value: Mensaje de error\r\n */\r\n errors: { [ key: number ]: string };\r\n contactsComponents: {\r\n show: boolean;\r\n onSelectedItem: (contact: IContacto) => void;\r\n selectedContact: IContacto;\r\n onAccept?: () => void;\r\n },\r\n isLoading: boolean;\r\n columnTypes: IComboBoxOption[];\r\n model: any;\r\n}\r\n\r\nexport interface IMetadataRule {\r\n /**\r\n * Regla que evalua si se debe o no mostrar un mentadato en pantalla\r\n */\r\n _show?: (item: IMetadatoAsociado) => boolean;\r\n\r\n /**\r\n * Regla que se aplica al momento de renderizar un combobox y retorna los elementos a mostrar\r\n */\r\n _filter?: (item: IMetadatoAsociado, items: IComboBoxOption[]) => IComboBoxOption[];\r\n\r\n /**\r\n * Regla que evalua si un metadato es requierido o no\r\n */\r\n _required?: (item: IMetadatoAsociado) => boolean;\r\n\r\n /**\r\n * Función encargada de validar si un metadatos es valido\r\n * Aplica solo para metadatos complejos\r\n */\r\n _onValidateRequired?: (item: IMetadatoAsociado) => { isValid: boolean, message: string };\r\n\r\n /**\r\n * Función encargada de validar el formulario de metadatos anidado\r\n */\r\n _onValidateItem?: (item: IMetadatoAsociado, rowValues: any) => { [ key: number ]: string };\r\n\r\n _onOpenItemEditor?: (item: IMetadatoAsociado, panelMetadata: IMetadatoAsociado[]) => void;\r\n\r\n hasRequiredRule: boolean;\r\n hasShowRule: boolean;\r\n hasFilterRule: boolean;\r\n hasValidateRequiredRule: boolean;\r\n hasValidateItemRule: boolean;\r\n hasOpenItemEditor: boolean;\r\n\r\n}\r\n\r\nexport class LayoutEditorComponent extends React.Component{\r\n\r\n /**\r\n * Identificador del trámite, subseries o tipo documental actual\r\n */\r\n private _objectId: number = 0;\r\n\r\n /**\r\n * Almacena los valores de los metadatos\r\n */\r\n private _values: IValorMetadato[] = [];\r\n\r\n /**\r\n * Almacena los metadatos asociados a los tramites\r\n * Key: ID trámite\r\n * Value: Metadatos asociados\r\n */\r\n private _tramites: { [ key: number ]: IMetadatoAsociado[] } = {};\r\n\r\n /**\r\n * Almacena las reglas compiladas de los metadatos\r\n * Key: ID metadato\r\n * Value: Reglas dinamicas\r\n */\r\n private _contexts: { [ key: number ]: IMetadataRule } = {}\r\n\r\n private _addButtonStyle: React.CSSProperties = {\r\n fontSize: '16px',\r\n 'padding': '5px',\r\n 'color': 'rgb(0, 120, 212)',\r\n 'cursor': 'pointer',\r\n 'border': '2px solid rgb(0, 120, 212)',\r\n borderRadius: '50%',\r\n boxShadow: 'rgb(177, 159, 159) 1px 3px 4px 0px',\r\n fontWeight: 'bold',\r\n display: 'block',\r\n 'position': 'absolute',\r\n width: '31px',\r\n height: '31px',\r\n backgroundColor: 'white',\r\n zIndex: 1,\r\n paddingLeft: '6px',\r\n paddingTop: '1px',\r\n right: '4px',\r\n bottom: '-14px'\r\n };\r\n\r\n private _fieldCss: React.CSSProperties = {\r\n paddingTop: '2px',\r\n paddingLeft: '8px',\r\n border: '1px solid #BDBDBD',\r\n borderRadius: '3px',\r\n paddingBottom: '2px',\r\n marginBottom: '2px'\r\n }\r\n\r\n private _selectedContacts: { [ key: number ]: IContacto } = {}\r\n\r\n private _selectedDates: { [ key: number ]: Date } = {}\r\n\r\n private _editorMetadatosComponent: EditorMetadatosComponent;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this._objectId = this.props.idObjetoAsUrlParam\r\n ? Number((this.props as any).match.params.idObjeto)\r\n : this.props.idObjeto\r\n this.state = {\r\n values: [],\r\n metadata: [],\r\n selectedItem: defaultIMetadatoAsociado(),\r\n errors: {},\r\n cities: [],\r\n countries: [],\r\n departments: [],\r\n dynamic: this._defaultDynamic(),\r\n metadataCategories: {},\r\n metadataOptions: {},\r\n customOptions: {},\r\n contactsComponents: {\r\n onSelectedItem: undefined,\r\n show: false,\r\n selectedContact: defaultIContacto()\r\n },\r\n isLoading: false,\r\n columnTypes: [],\r\n model: {}\r\n }\r\n }\r\n\r\n private _defaultDynamic(): any {\r\n return {\r\n panel: {\r\n show: false,\r\n title: '',\r\n values: [],\r\n metadata: []\r\n },\r\n selectedItems: [],\r\n commandBar: {},\r\n selectedItem: {},\r\n selection: {}\r\n }\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n this.setState({ isLoading: true });\r\n await this._initAsync();\r\n }\r\n\r\n async componentWillReceiveProps(nextProps: ILayoutEditorComponentProps): Promise {\r\n this._values = nextProps.values;\r\n if (nextProps.idObjeto !== this._objectId) {\r\n if (this.props.idObjetoAsUrlParam === false) {\r\n this._objectId = nextProps.idObjeto;\r\n }\r\n this.setState({ isLoading: true });\r\n await this._initAsync();\r\n } else {\r\n this.setState({ model: nextProps.model });\r\n }\r\n }\r\n\r\n private _compileDynamicFunction(item: IMetadatoAsociado): IMetadataRule {\r\n\r\n const $ = {\r\n array: (items: any[]) => {\r\n return {\r\n contains: (item: any) => items.indexOf(item) >= 0,\r\n notContains: (item: any) => items.indexOf(item) === -1\r\n }\r\n },\r\n cities: this.state.cities,\r\n mapCities: (filter: (item: ICity, index?: number) => boolean) => {\r\n return this.state.cities.filter(filter).map(o => ({ key: o.cityId, text: o.name }));\r\n },\r\n departments: this.state.departments,\r\n countries: this.state.countries,\r\n isNullOrEmpty: $_.isNullOrEmpty,\r\n upper: function (str: string) { return $.isNullOrEmpty(str) ? '' : str.toUpperCase(); },\r\n lower: function (str: string) { return $.isNullOrEmpty(str) ? '' : str.toLowerCase(); },\r\n trim: function (str: string) { return $.isNullOrEmpty(str) ? '' : str.trim(); },\r\n equal: function (a: any, b: any) { return a == b },\r\n notEqual: function (a: any, b: any) { return a != b },\r\n\r\n option: (codigoMetadato: string, text: string) => {\r\n const item = this.state.metadata.filter(o => o.Codigo.trim().toUpperCase() === $.upper($.trim(codigoMetadato)))[ 0 ];\r\n if (item === undefined) {\r\n return -1;\r\n }\r\n const items = this.state.customOptions[ item.IdMetadato ] || [];\r\n if (items.length > 0) {\r\n const opt = items.filter(o => o[ item.TextField || 'Text' ].trim().toUpperCase() === text.trim().toUpperCase())[ 0 ];\r\n if (opt !== undefined) {\r\n return opt[ item.KeyField || 'Key' ]\r\n }\r\n }\r\n return -1;\r\n },\r\n\r\n /**\r\n * Retorna el valor de un metadato\r\n */\r\n field: (key: string) => {\r\n const fields = this._getMetadataValues(false);\r\n const field = fields[ key ];\r\n if (field === undefined) {\r\n throw new Error(`Error: El campo '${key}' no se encontró`)\r\n }\r\n return field;\r\n },\r\n /**\r\n * Retorna el id una lista desplegable\r\n */\r\n id: (key: string) => {\r\n const fields = this._getMetadataValues(true);\r\n const field = fields[ key ];\r\n if (field === undefined) {\r\n throw new Error(`Error: El campo '${key}' no se encontró`)\r\n }\r\n return field;\r\n },\r\n\r\n getValues: () => {\r\n return this._values;\r\n },\r\n\r\n /**\r\n * Retorna el ID del trámite, tipo documental o subserie actual\r\n */\r\n getObjectId: () => {\r\n return this._objectId;\r\n },\r\n\r\n setPanelMetadataRequired: (panelMetadata: IMetadatoAsociado[], matadataCode: string, required: boolean) => {\r\n if (panelMetadata) {\r\n var item = panelMetadata.filter(o => o.Codigo === matadataCode)[ 0 ];\r\n if (item) {\r\n item.Requerido = required\r\n }\r\n else {\r\n throw new Error(`Error al establecer el valor de la propiedad requerido: No se encontró el metadato '${matadataCode}'`);\r\n }\r\n }\r\n },\r\n\r\n getModel: () => {\r\n if (this.state.model) {\r\n return this.state.model();\r\n }\r\n return {};\r\n },\r\n\r\n scope: this.props.scope\r\n\r\n };\r\n\r\n const func = new Function('$', '__item__', `\r\n var\r\n upper = $.upper,\r\n lower = $.lower,\r\n equal = $.equal,\r\n notEqual = $.notEqual,\r\n field = $.field,\r\n id = $.id,\r\n SI = true,\r\n NO = false,\r\n trim = $.trim,\r\n option = $.option,\r\n SCOPE = $.scope;\r\n \r\n ${item.Reglas};\r\n\r\n $._filter = function(item, options) {\r\n if ($.filter !== undefined && typeof $.filter === 'function') {\r\n return $.filter(item, options);\r\n }\r\n return options;\r\n }\r\n\r\n $._show = function(item) {\r\n if ($.show !== undefined && typeof $.show === 'function') {\r\n try {\r\n return $.show(item);\r\n } catch (ex){\r\n console.log('Error al ejecutar la regla show del metadato ' + __item__, ex.message);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n $._required = function(item) {\r\n if ($.required !== undefined && typeof $.required === 'function') {\r\n try {\r\n return $.required(item);\r\n } catch (ex){\r\n console.log('Error al ejecutar la regla required del metadato ' + __item__, ex.message);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n $._onValidateRequired = function(item) {\r\n if ($.onValidateRequired !== undefined && typeof $.onValidateRequired === 'function') {\r\n try {\r\n var values = $.getValues();\r\n return $.onValidateRequired(item, values);\r\n } catch (ex){\r\n console.log('Error al ejecutar la regla onValidateRequired del metadato ' + __item__, ex.message);\r\n }\r\n }\r\n return { error: false };\r\n }\r\n\r\n $._onValidateItem = function(item, rowValues) {\r\n if ($.onValidateItem !== undefined && typeof $.onValidateItem === 'function') {\r\n try {\r\n return $.onValidateItem(item, rowValues);\r\n } catch (ex){\r\n console.log('Error al ejecutar la regla onValidateItem del metadato ' + __item__, ex.message);\r\n }\r\n }\r\n return { };\r\n }\r\n\r\n $._onOpenItemEditor = function(item, panelMetadata) {\r\n if ($.onOpenItemEditor !== undefined && typeof $.onValidateItem === 'function') {\r\n try {\r\n function _setPanelMetadataRequired(codigo, requerido) {\r\n $.setPanelMetadataRequired(panelMetadata, codigo, requerido);\r\n }\r\n return $.onOpenItemEditor(JSON.parse(JSON.stringify(item)), JSON.parse(JSON.stringify(panelMetadata)), _setPanelMetadataRequired);\r\n } catch (ex){\r\n console.log('Error al ejecutar la regla onOpenItemEditor del metadato ' + __item__, ex.message);\r\n }\r\n }\r\n }\r\n\r\n return $;\r\n\r\n `);\r\n\r\n const compiledRules = func($, item.Nombre);\r\n return compiledRules;\r\n\r\n }\r\n\r\n private async _initAsync(): Promise {\r\n\r\n // Limpiar variables\r\n this._contexts = {};\r\n\r\n if (this._objectId > 0) {\r\n\r\n let columnTypes = this.state.columnTypes;\r\n if (this.props.mode === 'edit') {\r\n if (this.state.columnTypes.length === 0) {\r\n const result = await this.props.getMetadataColumnTypes();\r\n columnTypes = result.map(o => ({ key: o.IdTipoColumnaMetadato, text: o.Nombre }))\r\n }\r\n }\r\n\r\n // Obtener los metadatos asociados al trámite seleccionado\r\n const metadata: IMetadatoAsociado[] = this._tramites[ this._objectId ] !== undefined\r\n ? this._tramites[ this._objectId ]\r\n : await this.props.metadataService(this._objectId);\r\n\r\n // Compilar funciones dinamicas de las reglas\r\n if (this.props.mode === 'exe') {\r\n if (metadata !== undefined && metadata.length > 0) {\r\n for (let i = 0; i < metadata.length; i++) {\r\n const item = metadata[ i ];\r\n if (!$_.isNullOrEmpty(item.Reglas)) {\r\n this._contexts[ item.IdMetadato ] = this._compileDynamicFunction(item);\r\n this._contexts[ item.IdMetadato ].hasFilterRule = (this._contexts[ item.IdMetadato ] as any).filter !== undefined;\r\n this._contexts[ item.IdMetadato ].hasRequiredRule = (this._contexts[ item.IdMetadato ] as any).required !== undefined;\r\n this._contexts[ item.IdMetadato ].hasShowRule = (this._contexts[ item.IdMetadato ] as any).show !== undefined;\r\n this._contexts[ item.IdMetadato ].hasValidateItemRule = (this._contexts[ item.IdMetadato ] as any).onValidateItem !== undefined;\r\n this._contexts[ item.IdMetadato ].hasValidateRequiredRule = (this._contexts[ item.IdMetadato ] as any).onValidateRequired !== undefined;\r\n this._contexts[ item.IdMetadato ].hasOpenItemEditor = (this._contexts[ item.IdMetadato ] as any).onOpenItemEditor !== undefined;\r\n item.Reglas = '';\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Agregar metadato inicial\r\n if (this.props.mode === 'edit') {\r\n if (metadata.length === 0) {\r\n metadata.push(defaultIMetadatoAsociado());\r\n }\r\n }\r\n\r\n // Descargar datos del servidor\r\n let cities: ICity[] = this.state.cities;\r\n let departments: IDepartment[] = this.state.departments;\r\n let countries: ICountry[] = this.state.countries;\r\n const complexItems = metadata.filter(o => o.IdTipoColumnaMetadato === TipoColumnaMetadato.Metadato);\r\n const itemsTypeSeleccion = metadata.filter(o => o.IdTipoColumnaMetadato === TipoColumnaMetadato.Seleccion);\r\n const customTypeItems = metadata.filter(o => o.IdTipoColumnaMetadato === TipoColumnaMetadato.Custom || o.IdTipoColumnaMetadato === TipoColumnaMetadato.CustomMultiSeleccion);\r\n const commandBar = this.state.dynamic.commandBar;\r\n const selectedItem = this.state.dynamic.selectedItem;\r\n const selection = this.state.dynamic.selection;\r\n const metadataCategories = this.state.metadataCategories;\r\n const metadataOptions = this.state.metadataOptions;\r\n const customOptions = this.state.customOptions;\r\n\r\n if (this.props.mode === 'exe') {\r\n\r\n let loadCountries = metadata.filter(o => o.IdTipoColumnaMetadato === TipoColumnaMetadato.Pais).length > 0 && countries.length === 0;\r\n let loadDepartments = metadata.filter(o => o.IdTipoColumnaMetadato === TipoColumnaMetadato.Departamento).length > 0 && departments.length === 0;\r\n let loadCities = metadata.filter(o => o.IdTipoColumnaMetadato === TipoColumnaMetadato.Ciudad).length > 0 && cities.length === 0;\r\n\r\n const result = await Promise.all([\r\n loadCountries ? this.props.getCountriesService() : new Promise(resolve => resolve(countries)),\r\n loadDepartments ? this.props.getDepartmentsService() : new Promise(resolve => resolve(departments)),\r\n loadCities ? this.props.getCitiesService() : new Promise(resolve => resolve(cities)),\r\n ]);\r\n\r\n countries = result[ 0 ];\r\n departments = result[ 1 ] as any;\r\n cities = result[ 2 ];\r\n\r\n // Validar si existen campos de tipo Metadato\r\n if (complexItems.length > 0) {\r\n\r\n for (let i = 0; i < complexItems.length; i++) {\r\n\r\n const item = complexItems[ i ];\r\n\r\n // Descargar configuración de la categoria metadato - hijo\r\n if (metadataCategories[ item.NombreCategoriaMetadato ] === undefined) {\r\n metadataCategories[ item.NombreCategoriaMetadato ] = await this.props.getCategoryMetadataService(item.NombreCategoriaMetadato);\r\n // Descargar opciones de listas desplegables\r\n const complexMetadata: IMetadatoAsociado[] = metadataCategories[ item.NombreCategoriaMetadato ].Metadatos;\r\n const complexItemsTypeSeleccion = complexMetadata.filter(o => o.IdTipoColumnaMetadato === TipoColumnaMetadato.Seleccion);\r\n if (complexItemsTypeSeleccion.length > 0) {\r\n complexItemsTypeSeleccion.forEach(o => {\r\n if (itemsTypeSeleccion.filter(p => o.IdMetadato === p.IdMetadato).length === 0) {\r\n itemsTypeSeleccion.push(o);\r\n }\r\n });\r\n }\r\n const complexCustomTypeItems = complexMetadata.filter(o => o.IdTipoColumnaMetadato === TipoColumnaMetadato.Custom || o.IdTipoColumnaMetadato === TipoColumnaMetadato.CustomMultiSeleccion);\r\n if (complexCustomTypeItems.length > 0) {\r\n complexCustomTypeItems.forEach(o => {\r\n if (customTypeItems.filter(p => o.IdMetadato === p.IdMetadato).length === 0) {\r\n customTypeItems.push(o);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Crear el comand-bar\r\n commandBar[ item.IdMetadato ] = this._buildDynamicCommandBar(item, []);\r\n\r\n selectedItem[ item.IdMetadato ] = [];\r\n\r\n selection[ item.IdMetadato ] = new Selection({\r\n onSelectionChanged: () => {\r\n const selectedItems = this.state.dynamic.selection[ item.IdMetadato ].getSelection();\r\n this.setState({\r\n dynamic: {\r\n ...this.state.dynamic,\r\n commandBar: {\r\n ...this.state.dynamic.commandBar,\r\n [ item.IdMetadato ]: this._buildDynamicCommandBar(item, selectedItems)\r\n },\r\n selectedItem: {\r\n ...this.state.dynamic.selectedItem,\r\n [ item.IdMetadato ]: selectedItems\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n // Descargar opciones de metadato\r\n if (itemsTypeSeleccion.length > 0) {\r\n for (let i = 0; i < itemsTypeSeleccion.length; i++) {\r\n const item = itemsTypeSeleccion[ i ];\r\n if (metadataOptions[ item.IdMetadato ] === undefined || metadataOptions[ item.IdMetadato ].length === 0) {\r\n metadataOptions[ item.IdMetadato ] = await this.props.getMetadataOptionsService(item.IdMetadato);\r\n }\r\n }\r\n }\r\n // Descargar opciones de metadatos tipo CUSTOM\r\n if (customTypeItems.length > 0) {\r\n for (let i = 0; i < customTypeItems.length; i++) {\r\n const item = customTypeItems[ i ];\r\n if (customOptions[ item.IdMetadato ] === undefined || customOptions[ item.IdMetadato ].length === 0) {\r\n if ($_.isNullOrEmpty(item.KeyField) || item.KeyField === 'Key') {\r\n let result = undefined;\r\n try {\r\n result = await this.props.readExternalMetadataService(item.Aplicacion, item.ClassName);\r\n } catch (error) {\r\n throw Error(`Error al leer los valores del metadato externo ${item.Nombre} de la categoría ${item.CategoriaMetadato}`);\r\n }\r\n if (result != null) {\r\n customOptions[ item.IdMetadato ] = result;\r\n } else {\r\n customOptions[ item.IdMetadato ] = [];\r\n }\r\n } else {\r\n let result = undefined;\r\n try {\r\n result = await this.props.executeCustomCodeService(item.Aplicacion, item.ClassName, {})\r\n } catch (error) {\r\n throw Error(`Error al ejecutar la extensión ${item.ClassName} (${item.Aplicacion}) del metadato ${item.Nombre} de la categoría ${item.CategoriaMetadato}`);\r\n }\r\n const obj = JSON.parse(result);\r\n if (obj != null) {\r\n customOptions[ item.IdMetadato ] = obj;\r\n } else {\r\n customOptions[ item.IdMetadato ] = [];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Inicializar campos tipo contacto\r\n metadata.filter(o => [ TipoColumnaMetadato.Contactos, TipoColumnaMetadato.ContactosEntidades, TipoColumnaMetadato.ContactosPersonas ].indexOf(o.IdTipoColumnaMetadato) >= 0).forEach(o => {\r\n this._selectedContacts[ o.IdMetadato ] = defaultIContacto();\r\n });\r\n\r\n }\r\n\r\n this._tramites[ this._objectId ] = metadata;\r\n\r\n this.setState({\r\n metadata,\r\n cities,\r\n countries,\r\n departments,\r\n dynamic: {\r\n ...this.state.dynamic,\r\n commandBar,\r\n selectedItem\r\n },\r\n metadataCategories,\r\n metadataOptions,\r\n customOptions,\r\n isLoading: false,\r\n columnTypes\r\n });\r\n }\r\n\r\n }\r\n\r\n public render(): JSX.Element {\r\n return
      \r\n {\r\n this.props.idObjeto > 0 && this.state.isLoading\r\n ? \r\n : this._renderBody()\r\n }\r\n
      \r\n }\r\n\r\n private _renderBody(): JSX.Element {\r\n const fields = this.state.metadata.map((o, index) => { o.Orden = index; return o });\r\n const rows = this._processFields(fields);\r\n\r\n return
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n {\r\n rows.map((o, index: number) => {\r\n return { ...o, key: index };\r\n })\r\n }\r\n
      \r\n
      \r\n
      \r\n
      \r\n {\r\n this.props.mode === 'edit' &&
      \r\n
      \r\n {\r\n try {\r\n if (this.state.metadata.filter(o => o.IdMetadato === 0).length === 0) {\r\n this.props.onSaveMetadataService(this.state.metadata);\r\n } else {\r\n showWarnToast('Existen campos que no se han parametrizado');\r\n }\r\n } catch (err) {\r\n if (err instanceof Error) {\r\n showError(err.message);\r\n }\r\n }\r\n }}\r\n />\r\n
      \r\n
      \r\n }\r\n
      \r\n {\r\n this._renderComplexPanel()\r\n }\r\n {\r\n this._renderContactPanel()\r\n }\r\n
      \r\n }\r\n\r\n private _renderComplexPanel(): JSX.Element {\r\n return
      \r\n
      \r\n
      \r\n {\r\n this.state.dynamic.panel.onClick();\r\n }}\r\n />\r\n   \r\n {\r\n this.setState({\r\n dynamic: {\r\n ...this.state.dynamic,\r\n panel: {\r\n ...this.state.dynamic.panel,\r\n show: false\r\n }\r\n }\r\n });\r\n }}\r\n />\r\n
      \r\n
      \r\n
      }\r\n isFooterAtBottom={true}>\r\n
      \r\n
      \r\n {\r\n this.state.dynamic.panel.show && {\r\n this.setState({\r\n dynamic: {\r\n ...this.state.dynamic,\r\n panel: {\r\n ...this.state.dynamic.panel,\r\n errors\r\n }\r\n }\r\n });\r\n }}\r\n onChangeValues={(values: IValorMetadato[]) => {\r\n this.setState({\r\n dynamic: {\r\n ...this.state.dynamic,\r\n panel: {\r\n ...this.state.dynamic.panel,\r\n values\r\n },\r\n }\r\n });\r\n }}\r\n ref={e => this._editorMetadatosComponent = e}\r\n />\r\n }\r\n
      \r\n
      \r\n \r\n }\r\n\r\n private _renderContactPanel(): JSX.Element {\r\n return
      \r\n
      \r\n
      \r\n {\r\n this.state.contactsComponents.selectedContact.IdContacto > 0 && {\r\n if (this.state.contactsComponents.onAccept) {\r\n this.state.contactsComponents.onAccept();\r\n }\r\n }}\r\n />\r\n }\r\n {\r\n this.state.contactsComponents.selectedContact.IdContacto > 0 &&   \r\n }\r\n {\r\n this.setState({\r\n contactsComponents: {\r\n show: false,\r\n onSelectedItem: undefined,\r\n selectedContact: defaultIContacto()\r\n }\r\n });\r\n }}\r\n />\r\n
      \r\n
      \r\n
      }\r\n isFooterAtBottom={true}>\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n \r\n }\r\n\r\n //#region Renderizado edición\r\n\r\n private _renderEditFieldControl(item: IMetadatoAsociado): JSX.Element {\r\n switch (item.IdTipoColumnaMetadato) {\r\n\r\n case TipoColumnaMetadato.Texto:\r\n return ;\r\n\r\n case TipoColumnaMetadato.ExpresionRegular:\r\n return ;\r\n\r\n case TipoColumnaMetadato.Numero:\r\n return ;\r\n\r\n case TipoColumnaMetadato.Moneda:\r\n return ;\r\n\r\n case TipoColumnaMetadato.Fecha:\r\n return ;\r\n\r\n case TipoColumnaMetadato.Nota:\r\n return ;\r\n\r\n case TipoColumnaMetadato.Seleccion:\r\n case TipoColumnaMetadato.Usuario:\r\n case TipoColumnaMetadato.Pais:\r\n case TipoColumnaMetadato.Departamento:\r\n case TipoColumnaMetadato.Ciudad:\r\n case TipoColumnaMetadato.Custom:\r\n return ;\r\n\r\n case TipoColumnaMetadato.CustomMultiSeleccion:\r\n return ;\r\n\r\n case TipoColumnaMetadato.SiNo:\r\n return ;\r\n\r\n case TipoColumnaMetadato.Metadato:\r\n return this._renderEditMultipleField(item);\r\n\r\n case TipoColumnaMetadato.Contactos:\r\n case TipoColumnaMetadato.ContactosEntidades:\r\n case TipoColumnaMetadato.ContactosPersonas:\r\n return ;\r\n\r\n default:\r\n return
      \r\n Debe seleccionar un metadato\r\n
      ;\r\n }\r\n }\r\n\r\n private _renderEditMultipleField(item: IMetadatoAsociado): JSX.Element {\r\n return
      \r\n \r\n
      \r\n }\r\n\r\n ////#endregion\r\n\r\n private _renderExecutableFieldControl(item: IMetadatoAsociado): JSX.Element {\r\n switch (item.IdTipoColumnaMetadato) {\r\n case TipoColumnaMetadato.Texto:\r\n case TipoColumnaMetadato.Nota:\r\n return this._renderExecutableText(item);\r\n case TipoColumnaMetadato.ExpresionRegular:\r\n case TipoColumnaMetadato.Numero:\r\n case TipoColumnaMetadato.Moneda:\r\n return this._renderExecutableText(item);\r\n case TipoColumnaMetadato.Fecha:\r\n return this._renderExecutableDate(item);\r\n case TipoColumnaMetadato.Seleccion:\r\n case TipoColumnaMetadato.Usuario:\r\n case TipoColumnaMetadato.Pais:\r\n case TipoColumnaMetadato.Departamento:\r\n case TipoColumnaMetadato.Ciudad:\r\n case TipoColumnaMetadato.Custom:\r\n return this._renderExecutableComboBox(item);\r\n case TipoColumnaMetadato.CustomMultiSeleccion:\r\n return this._renderExecutableMultiSelect(item);\r\n case TipoColumnaMetadato.SiNo:\r\n return this._renderExecutableBoolean(item);\r\n case TipoColumnaMetadato.Metadato:\r\n return this._renderExecutableMetadata(item);\r\n case TipoColumnaMetadato.Contactos:\r\n case TipoColumnaMetadato.ContactosEntidades:\r\n case TipoColumnaMetadato.ContactosPersonas:\r\n return this._renderExecutableContactSearch(item);\r\n default:\r\n return
      Debe seleccionar un metadato
      ;\r\n }\r\n }\r\n\r\n public _renderExecutableComboBox(item: IMetadatoAsociado): JSX.Element {\r\n\r\n // Obtener valor seleccionado\r\n const selectedKey: number = Number(this._getValue(item));\r\n\r\n // Obtener fuente de datos\r\n item.Opciones = this._getExecutableComboBoxOptions(item);\r\n\r\n // Filtrar elementos\r\n if (this._contexts[ item.IdMetadato ] !== undefined) {\r\n item.Opciones = this._contexts[ item.IdMetadato ]._filter(item, item.Opciones);\r\n }\r\n\r\n // Establecer si el elemento es o no requierido\r\n const required = this._isRequired(item);\r\n\r\n return this._setValue(item, value.key)}\r\n />;\r\n\r\n }\r\n\r\n public _renderExecutableText(item: IMetadatoAsociado): JSX.Element {\r\n\r\n // Establecer si el elemento es o no requierido\r\n const required = this._isRequired(item);\r\n\r\n return (item)}\r\n multiline={item.IdTipoColumnaMetadato === TipoColumnaMetadato.Nota}\r\n errorMessage={this.state.errors[ item.IdMetadato ]}\r\n onChange={(_, value) => this._setValue(item, value)}\r\n />;\r\n\r\n }\r\n\r\n public _renderExecutableBoolean(item: IMetadatoAsociado): JSX.Element {\r\n return
      \r\n (item)}\r\n onChange={(event, value) => {\r\n this._setValue(item, value);\r\n }}\r\n />\r\n
      ;\r\n }\r\n\r\n public _renderExecutableDate(item: IMetadatoAsociado): JSX.Element {\r\n const value = this._getValue(item, true);\r\n return
      \r\n {\r\n this._selectedDates[ item.IdMetadato ] = value;\r\n this._setValue(item, value);\r\n }}\r\n value={value}\r\n />\r\n {this.state.errors[ item.IdMetadato ]}\r\n
      \r\n }\r\n\r\n private _updateExecutableMetadatoFieldValues(item: IMetadatoAsociado, selectedItem: any): any {\r\n // Obtener valor del metadato actual o crearlo\r\n const _value = this._values.filter(o => o.IdMetadato === item.IdMetadato)[ 0 ];\r\n const _rows = (_value !== undefined && _value.Valor !== undefined) ? _value.Valor : [];\r\n\r\n // Obtener los valores del panel de metadatos\r\n const panelData: { [ key: string ]: string } = {};\r\n this.state.dynamic.panel.values.forEach(p => {\r\n const metadata = this.state.dynamic.panel.metadata.filter(o => o.IdMetadato === p.IdMetadato)[ 0 ];\r\n if (!(p.Valor instanceof Date)) {\r\n panelData[ metadata.Nombre ] = p.Valor;\r\n panelData[ p.IdMetadato ] = p.Valor;\r\n } else {\r\n //const value = '';\r\n panelData[ metadata.Nombre ] = p.Valor.toLocaleString();\r\n panelData[ p.IdMetadato ] = p.Valor.toISOString();\r\n }\r\n });\r\n\r\n // Evaluar las reglas personalizadas\r\n const rules = this._contexts[ item.IdMetadato ];\r\n if (rules !== undefined) {\r\n const result = rules._onValidateItem(item, panelData);\r\n const props = Object.getOwnPropertyNames(result);\r\n if (props.length > 0) {\r\n\r\n // Obtener los ID de los metadatos filtrando por el nombre\r\n for (let i = 0; i < props.length; i++) {\r\n const tmp = this.state.dynamic.panel.metadata.filter(o => o.Nombre === props[ i ])[ 0 ];\r\n if (tmp !== undefined) {\r\n result[ tmp.IdMetadato ] = result[ props[ i ] ];\r\n }\r\n }\r\n\r\n this.setState({\r\n dynamic: {\r\n ...this.state.dynamic,\r\n panel: {\r\n ...this.state.dynamic.panel,\r\n errors: result\r\n }\r\n }\r\n });\r\n return;\r\n }\r\n }\r\n\r\n\r\n // Si no hay un elemento seleccionado quiere decir que el elemento es nuevo\r\n // y por lo tanto se debe agregar a la colección, de lo contrario se debe remplazar\r\n // el elemento seleccionado por el nuevo elemento\r\n if (selectedItem === undefined) {\r\n _rows.push(panelData);\r\n } else {\r\n _rows[ selectedItem.___index ] = panelData;\r\n }\r\n\r\n // Agregar indice a los elementos\r\n _rows.forEach((o: any, index: number) => o.___index = index);\r\n\r\n this.setState({\r\n dynamic: {\r\n ...this.state.dynamic,\r\n panel: {\r\n ...this.state.dynamic.panel,\r\n show: false\r\n },\r\n selectedItem: {\r\n ...this.state.dynamic.selectedItem,\r\n [ item.IdMetadato ]: []\r\n }\r\n }\r\n }, () => this._setValue(item, _rows));\r\n\r\n // Quitar la selección de elementos\r\n this.state.dynamic.selection[ item.IdMetadato ].setAllSelected(false);\r\n\r\n }\r\n\r\n public _buildDynamicCommandBar(item: IMetadatoAsociado, selectedItems: any[]) {\r\n\r\n const items: IContextualMenuItem[] = [ {\r\n key: 'Nuevo',\r\n name: 'Nuevo',\r\n iconProps: { iconName: 'Add' },\r\n title: 'Crear nuevo elemento',\r\n onClick: () => {\r\n\r\n // Obtener metadatos a mostrar en el panel de edición\r\n const subCategory = this.state.metadataCategories[ item.NombreCategoriaMetadato ];\r\n const complexMetadata: IMetadatoAsociado[] = subCategory.Metadatos;\r\n const complexItemsTypeSeleccion = complexMetadata.filter(o => o.IdTipoColumnaMetadato === TipoColumnaMetadato.Seleccion);\r\n if (complexItemsTypeSeleccion.length > 0) {\r\n complexItemsTypeSeleccion.forEach(o => {\r\n const options = this.state.metadataOptions[ o.IdMetadato ] || [];\r\n o.Opciones = options.map(o => ({ key: o.IdOpcionListaDesplegableMetadato, text: o.Nombre }));\r\n });\r\n }\r\n const complexCustomTypeItems = complexMetadata.filter(o => o.IdTipoColumnaMetadato === TipoColumnaMetadato.Custom || o.IdTipoColumnaMetadato === TipoColumnaMetadato.CustomMultiSeleccion);\r\n if (complexCustomTypeItems.length > 0) {\r\n complexCustomTypeItems.forEach(o => {\r\n const options = this.state.customOptions[ o.IdMetadato ] || [];\r\n o.Opciones = options.map(o => ({\r\n key: o[ item.KeyField || 'Key' ],\r\n text: o[ item.TextField || 'Text' ]\r\n }))\r\n });\r\n }\r\n\r\n const panelMetadata = subCategory !== null && subCategory.Metadatos != null ? subCategory.Metadatos : [];\r\n\r\n // Ejecuta regla onOpenItemEditor\r\n const rules = this._contexts[ item.IdMetadato ];\r\n if (rules !== undefined) {\r\n rules._onOpenItemEditor(item, panelMetadata);\r\n }\r\n\r\n this.setState({\r\n dynamic: {\r\n ...this.state.dynamic,\r\n panel: {\r\n show: true,\r\n title: 'Agregar elemento',\r\n metadata: panelMetadata,\r\n values: [],\r\n onClick: this._updateExecutableMetadatoFieldValues.bind(this, item) as any,\r\n errors: {}\r\n }\r\n }\r\n });\r\n }\r\n } ];\r\n\r\n if (selectedItems.length) {\r\n\r\n items.push({\r\n key: 'Editar',\r\n name: 'Editar',\r\n iconProps: { iconName: 'Edit' },\r\n onClick: () => {\r\n // Obtener valor del metadato actual\r\n const obj = selectedItems[ 0 ];\r\n const values = [];\r\n if (obj) {\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n if (!isNaN(Number(key))) {\r\n values.push({\r\n IdMetadato: Number(key),\r\n Valor: obj[ key ]\r\n });\r\n }\r\n }\r\n }\r\n }\r\n const subCategory = this.state.metadataCategories[ item.NombreCategoriaMetadato ];\r\n this.setState({\r\n dynamic: {\r\n ...this.state.dynamic,\r\n panel: {\r\n show: true,\r\n title: 'Editar elemento',\r\n metadata: subCategory !== null && subCategory.Metadatos != null ? subCategory.Metadatos : [],\r\n values,\r\n onClick: this._updateExecutableMetadatoFieldValues.bind(this, item, selectedItems[ 0 ]),\r\n errors: {}\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n items.push({\r\n key: 'Eliminar',\r\n name: 'Eliminar',\r\n iconProps: { iconName: 'Delete' },\r\n onClick: () => {\r\n const _value = this._values.filter(o => o.IdMetadato === item.IdMetadato)[ 0 ];\r\n _value.Valor.splice(selectedItems[ 0 ].___index, 1);\r\n _value.Valor.forEach((o: any, index: number) => o.___index = index);\r\n this._setValue(item, _value.Valor);\r\n this.setState({\r\n dynamic: {\r\n ...this.state.dynamic,\r\n selectedItem: {\r\n ...this.state.dynamic.selectedItem,\r\n [ item.IdMetadato ]: []\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n return items;\r\n }\r\n\r\n public _renderExecutableMetadata(item: IMetadatoAsociado): JSX.Element {\r\n const category = this.state.metadataCategories[ item.NombreCategoriaMetadato ];\r\n if ($_.isNull(category)) {\r\n return
      No se ha encontrado la categoria de metadato '{item.NombreCategoriaMetadato}'
      \r\n }\r\n\r\n // Obtener columnas a mostrar\r\n const columns = category.Metadatos.map(o => ({\r\n key: o.Nombre,\r\n name: o.Nombre,\r\n fieldName: o.Nombre,\r\n minWidth: 150,\r\n maxWidth: 220,\r\n isResizable: true,\r\n onRender: (o) => {\r\n console.log(o);\r\n return o.Nombre;\r\n }\r\n }));\r\n\r\n // Obtener el valor del metadato\r\n const metadatoValues = this._values.filter(o => o.IdMetadato == item.IdMetadato)[ 0 ];\r\n\r\n return
      \r\n

      {item.Nombre}

      \r\n \r\n \r\n {this.state.errors[ item.IdMetadato ]}\r\n
      \r\n }\r\n\r\n private _renderExecutableMultiSelect(item: IMetadatoAsociado): JSX.Element {\r\n\r\n // Obtener los valores seleccionados\r\n const selectedKeys: number[] = this._getValue(item) || [];\r\n\r\n // Obtener fuente de datos\r\n item.Opciones = this._getExecutableComboBoxOptions(item);\r\n\r\n const required = this._isRequired(item);\r\n\r\n return {\r\n const _option = selectedKeys.filter(o => o === Number(option.key))[ 0 ];\r\n if (_option === undefined) {\r\n selectedKeys.push(Number(option.key))\r\n } else {\r\n if (!option.selected) {\r\n selectedKeys.splice(selectedKeys.indexOf(_option), 1)\r\n }\r\n }\r\n this._setValue(item, selectedKeys);\r\n }}\r\n multiSelect\r\n errorMessage={this.state.errors[ item.IdMetadato ]}\r\n options={item.Opciones}\r\n />;\r\n }\r\n\r\n public _renderExecutableContactSearch(item: IMetadatoAsociado): JSX.Element {\r\n\r\n // Establecer si el elemento es o no requierido\r\n const required = this._isRequired(item);\r\n\r\n const text = this._selectedContacts[ item.IdMetadato ] !== undefined && this._selectedContacts[ item.IdMetadato ].IdContacto > 0\r\n ? this._selectedContacts[ item.IdMetadato ].Nombres + this._selectedContacts[ item.IdMetadato ].Apellidos\r\n : 'Haga clic aquí para seleccionar un contacto';\r\n\r\n return this._setValue(item, value)}\r\n onClick={() => {\r\n this.setState({\r\n contactsComponents: {\r\n show: true,\r\n onSelectedItem: (contact: IContacto) => {\r\n this.setState({\r\n contactsComponents: {\r\n ...this.state.contactsComponents,\r\n selectedContact: contact || defaultIContacto()\r\n }\r\n })\r\n },\r\n selectedContact: defaultIContacto(),\r\n onAccept: () => {\r\n this._selectedContacts[ item.IdMetadato ] = this.state.contactsComponents.selectedContact;\r\n this.setState({\r\n contactsComponents: {\r\n show: false,\r\n onSelectedItem: undefined,\r\n selectedContact: defaultIContacto()\r\n }\r\n }, () => this._setValue(item, this._selectedContacts[ item.IdMetadato ].IdContacto));\r\n }\r\n }\r\n });\r\n }}\r\n />;\r\n\r\n }\r\n\r\n\r\n //#region Utilidades\r\n\r\n private _getValue(item: IMetadatoAsociado, useDate: boolean = false): T {\r\n if (this._values === undefined || this._values === null) {\r\n this._values = [];\r\n }\r\n let value: IValorMetadato = this._values.filter(o => o.IdMetadato === item.IdMetadato)[ 0 ];\r\n if (value !== undefined) {\r\n if (item.IdTipoColumnaMetadato == TipoColumnaMetadato.Fecha) {\r\n if (useDate) {\r\n const stringFecha = value.Valor.substring(6) + value.Valor.substring(2,6) + value.Valor.substring(0,2);\r\n return new Date(stringFecha) as any;\r\n }\r\n else {\r\n return value.Valor as any;\r\n }\r\n } else {\r\n return (value.Valor as any) as T;\r\n }\r\n } else {\r\n switch (item.IdTipoColumnaMetadato) {\r\n case TipoColumnaMetadato.Texto:\r\n case TipoColumnaMetadato.ExpresionRegular:\r\n case TipoColumnaMetadato.Nota:\r\n case TipoColumnaMetadato.Fecha:\r\n return '' as any;\r\n case TipoColumnaMetadato.Numero:\r\n case TipoColumnaMetadato.Moneda:\r\n case TipoColumnaMetadato.Seleccion:\r\n case TipoColumnaMetadato.Usuario:\r\n case TipoColumnaMetadato.Pais:\r\n case TipoColumnaMetadato.Departamento:\r\n case TipoColumnaMetadato.Ciudad:\r\n case TipoColumnaMetadato.Custom:\r\n case TipoColumnaMetadato.CustomMultiSeleccion:\r\n case TipoColumnaMetadato.Contactos:\r\n case TipoColumnaMetadato.ContactosEntidades:\r\n case TipoColumnaMetadato.ContactosPersonas:\r\n return 0 as any;\r\n case TipoColumnaMetadato.SiNo:\r\n return false as any;\r\n case TipoColumnaMetadato.Metadato:\r\n return {} as any;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private _getExecutableComboBoxOptions(item: IMetadatoAsociado): IComboBoxOption[] {\r\n switch (item.IdTipoColumnaMetadato) {\r\n case TipoColumnaMetadato.Pais:\r\n return this.state.countries.map(o => ({ key: o.countryId, text: o.name }));\r\n case TipoColumnaMetadato.Departamento:\r\n return this.state.departments.map(o => ({ key: o.departmentId, text: o.name }));\r\n case TipoColumnaMetadato.Ciudad:\r\n return this.state.cities.map(o => ({ key: o.cityId, text: o.name }));\r\n case TipoColumnaMetadato.Seleccion:\r\n return this.state.metadataOptions[ item.IdMetadato ] !== undefined ?\r\n this.state\r\n .metadataOptions[ item.IdMetadato ]\r\n .map(o => ({ key: o.IdOpcionListaDesplegableMetadato, text: o.Nombre }))\r\n : [];\r\n case TipoColumnaMetadato.Custom:\r\n case TipoColumnaMetadato.CustomMultiSeleccion:\r\n return this.state.customOptions[ item.IdMetadato ] !== undefined ?\r\n this.state\r\n .customOptions[ item.IdMetadato ]\r\n .map(o => ({\r\n key: o[ item.KeyField || 'Key' ],\r\n text: o[ item.TextField || 'Text' ]\r\n }))\r\n : [];\r\n }\r\n\r\n let options: IComboBoxOption[] = [];\r\n if (item.Opciones) {\r\n options = (item.Opciones as any).map(o => ({ key: o.IdOpcionListaDesplegableMetadato, text: o.Nombre }));\r\n }\r\n return options;\r\n }\r\n\r\n private _getMetadataValues(onlyId: boolean): { [ key: string ]: any } {\r\n const metadata = this.state.metadata;\r\n const data = {};\r\n for (var i = 0; i < metadata.length; i++) {\r\n const item = metadata[ i ];\r\n let _value = this._values.filter(o => o.IdMetadato == item.IdMetadato)[ 0 ];\r\n if (_value) {\r\n let text = '';\r\n // Si el metadato es de tipo lista desplegable se debe establecer el texto de la opción seleccionada\r\n if (onlyId === false) {\r\n if (this._isComboBox(item)) {\r\n switch (item.IdTipoColumnaMetadato) {\r\n case TipoColumnaMetadato.Seleccion:\r\n const selectionOption = this.state.metadataOptions[ item.IdMetadato ].filter(o => o.IdOpcionListaDesplegableMetadato === _value.Valor)[ 0 ];\r\n text = selectionOption !== undefined ? selectionOption.Nombre : '';\r\n break;\r\n case TipoColumnaMetadato.Pais:\r\n const countryOption = this.state.countries.filter(o => o.countryId === _value.Valor)[ 0 ];\r\n text = countryOption !== undefined ? countryOption.name : '';\r\n break;\r\n case TipoColumnaMetadato.Departamento:\r\n const departmentOption = this.state.departments.filter(o => o.departmentId === _value.Valor)[ 0 ];\r\n text = departmentOption !== undefined ? departmentOption.name : '';\r\n break;\r\n case TipoColumnaMetadato.Ciudad:\r\n const cityOption = this.state.cities.filter(o => o.cityId === _value.Valor)[ 0 ];\r\n text = cityOption !== undefined ? cityOption.name : '';\r\n break;\r\n case TipoColumnaMetadato.Custom:\r\n const customOption = this.state.customOptions[ item.IdMetadato ].filter(o => o[ item.KeyField || 'Key' ] === _value.Valor)[ 0 ];\r\n text = customOption !== undefined ? customOption[ item.TextField || 'Text' ] : '';\r\n break;\r\n case TipoColumnaMetadato.CustomMultiSeleccion:\r\n /*const customOption = this.state.customOptions[item.IdMetadato].filter(o => o[item.KeyField || 'Key'] === _value.Valor)[0];\r\n text = customOption !== undefined ? customOption[item.TextField || 'Text'] : '';*/\r\n break;\r\n default:\r\n console.log('Falta implementación combobox', item);\r\n text = 'Falta implementación combobox';\r\n break;\r\n }\r\n\r\n data[ item.IdMetadato ] = text;\r\n data[ item.Codigo ] = text;\r\n\r\n } else {\r\n data[ item.IdMetadato ] = _value.Valor;\r\n data[ item.Codigo ] = _value.Valor;\r\n }\r\n }\r\n else {\r\n data[ item.IdMetadato ] = _value.Valor;\r\n data[ item.Codigo ] = _value.Valor;\r\n }\r\n } else {\r\n switch (item.IdTipoColumnaMetadato) {\r\n case TipoColumnaMetadato.Texto:\r\n case TipoColumnaMetadato.ExpresionRegular:\r\n case TipoColumnaMetadato.Numero:\r\n case TipoColumnaMetadato.Moneda:\r\n case TipoColumnaMetadato.Fecha:\r\n case TipoColumnaMetadato.Nota:\r\n case TipoColumnaMetadato.Seleccion:\r\n case TipoColumnaMetadato.Usuario:\r\n case TipoColumnaMetadato.Pais:\r\n case TipoColumnaMetadato.Departamento:\r\n case TipoColumnaMetadato.Ciudad:\r\n case TipoColumnaMetadato.Custom:\r\n data[ item.IdMetadato ] = 0;\r\n data[ item.Codigo ] = 0;\r\n break;\r\n case TipoColumnaMetadato.CustomMultiSeleccion:\r\n data[ item.IdMetadato ] = [];\r\n data[ item.Codigo ] = [];\r\n break;\r\n case TipoColumnaMetadato.SiNo:\r\n data[ item.IdMetadato ] = false;\r\n data[ item.Codigo ] = false;\r\n break;\r\n case TipoColumnaMetadato.Metadato:\r\n data[ item.IdMetadato ] = [];\r\n data[ item.Codigo ] = [];\r\n break;\r\n }\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n private _isComboBox(metadata: IMetadatoAsociado): boolean {\r\n return metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.Seleccion\r\n || metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.Pais\r\n || metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.Departamento\r\n || metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.Ciudad\r\n || metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.TipoIdentificacion\r\n || metadata.IdTipoColumnaMetadato === TipoColumnaMetadato.Custom;\r\n }\r\n\r\n private _setValue(item: IMetadatoAsociado, value: any): void {\r\n let _value = this._values.filter(o => o.IdMetadato == item.IdMetadato)[ 0 ];\r\n if (_value === undefined) {\r\n _value = {\r\n IdMetadato: item.IdMetadato,\r\n IdExpediente: 0,\r\n IdDocumentoExpediente: 0,\r\n IdOpcionListaDesplegableMetadato: 0,\r\n IdValorMetadato: 0,\r\n Nombre: item.Nombre,\r\n Codigo: item.Codigo,\r\n CategoriaMetadato: item.CategoriaMetadato,\r\n Valor: undefined\r\n }\r\n this._values.push(_value);\r\n }\r\n\r\n // Actualizar el valor\r\n if (value instanceof Date) {\r\n _value.Valor = dateToStr(value as Date);\r\n } else {\r\n _value.Valor = value;\r\n }\r\n\r\n this.setState({\r\n values: this._values\r\n });\r\n\r\n if (this.props.onChangeValues) {\r\n this.props.onChangeValues(this._values);\r\n }\r\n\r\n }\r\n\r\n //#endregion\r\n\r\n private _getColumnTypeNane(item: IMetadatoAsociado): string {\r\n const type = this.state.columnTypes.filter(o => o.key === Number(item.IdTipoColumnaMetadato))[ 0 ];\r\n if (type !== undefined) {\r\n return type.text;\r\n }\r\n return '';\r\n }\r\n\r\n private _renderField(item: IMetadatoAsociado): JSX.Element {\r\n\r\n let html: JSX.Element;\r\n switch (item.IdTipoColumnaMetadato) {\r\n case TipoColumnaMetadato.Parrafo:\r\n html =
      \r\n {item.Nombre}\r\n
      ;\r\n break;\r\n case TipoColumnaMetadato.Titulo:\r\n html =
      \r\n

      {item.Nombre}

      \r\n
      ;\r\n break;\r\n default:\r\n html =
      \r\n {\r\n this.props.mode === 'edit'\r\n ? this._renderEditFieldControl(item)\r\n : this._renderExecutableFieldControl(item)\r\n }\r\n
      ;\r\n break;\r\n }\r\n\r\n const selected = item === this.state.selectedItem;\r\n const className = `ms-Grid-col ${item.TamanoCompleto ? 'ms-u-sm12' : 'ms-u-sm6'}`;\r\n\r\n return
      \r\n {\r\n this.props.mode === 'edit'\r\n ? {\r\n return (\r\n
      \r\n
        \r\n
      • Categoría: {item.CategoriaMetadato}
      • \r\n
      • Nombre: {item.Nombre}
      • \r\n
      • Tipo: {this._getColumnTypeNane(item)}
      • \r\n
      • Pantalla completa: {item.TamanoCompleto ? 'Si' : 'No'}
      • \r\n {/*
      • Reglas: {rules ? 'Si' : 'No'}
      • */}\r\n
      \r\n
      \r\n );\r\n }\r\n }}\r\n directionalHint={DirectionalHint.rightCenter}>\r\n {\r\n html\r\n }\r\n \r\n : html\r\n }\r\n {\r\n this.props.mode === 'edit' && selected &&
      \r\n 0 ? 'rgb(0, 120, 212)' : 'rgb(208, 200, 200)',\r\n border: item.Orden > 0 ? '2px solid rgb(0, 120, 212)' : '2px solid rgb(208, 200, 200)'\r\n }}\r\n onClick={this._moveLeft.bind(this, item)}\r\n />\r\n 1 ? 'rgb(0, 120, 212)' : 'rgb(208, 200, 200)',\r\n border: this.state.metadata.length > 1 ? '2px solid rgb(0, 120, 212)' : '2px solid rgb(208, 200, 200)'\r\n }}\r\n onClick={this._removeField.bind(this, item)}\r\n />\r\n \r\n \r\n
      \r\n }\r\n\r\n
      \r\n\r\n }\r\n\r\n //#region Funcionalidad dinamica editor\r\n\r\n private _moveLeft(item: IMetadatoAsociado): void {\r\n const _item = this.state.metadata.filter(o => o.Orden === item.Orden)[ 0 ];\r\n const index = this.state.metadata.indexOf(_item);\r\n if (index > 0) {\r\n const metadata = this.state.metadata.slice();\r\n metadata.splice(index, 1);\r\n metadata.splice(index - 1, 0, _item);\r\n this.setState({ metadata });\r\n }\r\n }\r\n\r\n private _moveRigth(item: IMetadatoAsociado): void {\r\n const _item = this.state.metadata.filter(o => o.Orden === item.Orden)[ 0 ];\r\n const index = this.state.metadata.indexOf(_item);\r\n if (index < this.state.metadata.length - 1) {\r\n const metadata = this.state.metadata.slice();\r\n metadata.splice(index, 1);\r\n metadata.splice(index + 1, 0, _item);\r\n this.setState({ metadata });\r\n }\r\n }\r\n\r\n private _addField(item: IMetadatoAsociado): void {\r\n const _item = this.state.metadata.filter(o => o.Orden === item.Orden)[ 0 ];\r\n const index = this.state.metadata.indexOf(_item);\r\n const metadata = this.state.metadata.slice();\r\n metadata.splice(index + 1, 0, { ...defaultIMetadatoAsociado(), TamanoCompleto: true });\r\n this.setState({ metadata });\r\n }\r\n\r\n private _removeField(item: IMetadatoAsociado): void {\r\n if (this.state.metadata.length > 1) {\r\n const _item = this.state.metadata.filter(o => o.Orden === item.Orden)[ 0 ];\r\n const index = this.state.metadata.indexOf(_item);\r\n const metadata = this.state.metadata.slice();\r\n metadata.splice(index, 1);\r\n this.setState({ metadata });\r\n }\r\n }\r\n\r\n //#endregion Funcionalidad dinamica editor\r\n\r\n private _fieldSelected(selectedItem: IMetadatoAsociado): void {\r\n if (this.props.mode === 'edit') {\r\n this.setState({ selectedItem });\r\n }\r\n }\r\n\r\n /**\r\n * Retorna el siguiente elemento a renderizar\r\n * @param items \r\n */\r\n private _getNextField(items: IMetadatoAsociado[]): IMetadatoAsociado {\r\n if (items.length > 0) {\r\n const item = items.splice(0, 1)[ 0 ];\r\n if (this.props.mode === 'exe') {\r\n const rules = this._contexts[ item.IdMetadato ];\r\n if (rules !== undefined) {\r\n const result = rules._show(item);\r\n if (result === true) {\r\n return item;\r\n }\r\n return this._getNextField(items);\r\n }\r\n return item;\r\n }\r\n return item;\r\n }\r\n return undefined;\r\n }\r\n\r\n private _processFields(items: IMetadatoAsociado[]): JSX.Element[] {\r\n const rows: JSX.Element[] = [];\r\n while (items.length > 0) {\r\n // Obtener 1 item a renderizar a la izquierda\r\n const leftItem = this._getNextField(items);\r\n if (leftItem !== undefined) {\r\n // Si el control es pequeño se obtiene el item a renderizar en la segunda posición si tambien es pequeño\r\n const rightItem = leftItem.TamanoCompleto\r\n ? undefined\r\n : items[ 0 ] !== undefined\r\n ? items[ 0 ].TamanoCompleto\r\n ? undefined\r\n : this._getNextField(items)\r\n : undefined;\r\n // Crear fila\r\n const currentRow: JSX.Element =
      \r\n {\r\n this._renderField(leftItem)\r\n }\r\n {\r\n rightItem && this._renderField(rightItem)\r\n }\r\n
      ;\r\n rows.push(currentRow);\r\n }\r\n }\r\n return rows;\r\n }\r\n\r\n /**\r\n * Retorna true si el metadato es requerido como resultado de la regla o como valor fijo parametrizado\r\n * @param item Elemento a evaluar\r\n */\r\n private _isRequired(item: IMetadatoAsociado) {\r\n const rules = this._contexts[ item.IdMetadato ];\r\n if (rules !== undefined && rules.hasRequiredRule) {\r\n return rules._required(item);\r\n }\r\n return item.Requerido || false;\r\n }\r\n\r\n public validate(): boolean {\r\n\r\n // Obtener los metadatos\r\n let items = this.state.metadata;\r\n if (items.length === 0) {\r\n return true;\r\n }\r\n\r\n // Filtrar elementos que no se muestran en pantalla\r\n items = items.filter(item => {\r\n const rules = this._contexts[ item.IdMetadato ];\r\n if (rules !== undefined) {\r\n return rules._show(item);\r\n }\r\n return true;\r\n });\r\n\r\n // Almacena los errores de validacióm\r\n const errors: { [ key: number ]: string } = {};\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n\r\n const item = items[ i ];\r\n\r\n // Obtener el valor actual\r\n const value = this._getValue(item);\r\n\r\n // Obtener campos requeridos al ejecutar regla 'requerido' o en su defecto obtener el campo 'requerido' parametrizado en el metadato\r\n const required = this._isRequired(item);\r\n\r\n if (required) {\r\n switch (item.IdTipoColumnaMetadato) {\r\n case TipoColumnaMetadato.Texto:\r\n case TipoColumnaMetadato.Nota:\r\n case TipoColumnaMetadato.ExpresionRegular:\r\n case TipoColumnaMetadato.Numero:\r\n case TipoColumnaMetadato.Moneda:\r\n case TipoColumnaMetadato.Fecha:\r\n if ($_.isNullOrEmpty(value)) {\r\n errors[ item.IdMetadato ] = 'Campo requerido';\r\n continue;\r\n }\r\n break;\r\n\r\n case TipoColumnaMetadato.Seleccion:\r\n case TipoColumnaMetadato.Usuario:\r\n case TipoColumnaMetadato.Pais:\r\n case TipoColumnaMetadato.Departamento:\r\n case TipoColumnaMetadato.Ciudad:\r\n case TipoColumnaMetadato.Custom:\r\n if (Number(value) <= 0) {\r\n errors[ item.IdMetadato ] = 'Campo requerido';\r\n continue;\r\n }\r\n break;\r\n\r\n case TipoColumnaMetadato.CustomMultiSeleccion:\r\n\r\n const rules = this._contexts[ item.IdMetadato ];\r\n if (rules !== undefined) {\r\n const result = rules._onValidateRequired(item);\r\n if (!result.isValid) {\r\n errors[ item.IdMetadato ] = result.message;\r\n continue;\r\n }\r\n }\r\n\r\n\r\n break;\r\n\r\n case TipoColumnaMetadato.Metadato:\r\n const rule = this._contexts[ item.IdMetadato ];\r\n if (rule) {\r\n const validationResult = rule._onValidateRequired(item);\r\n if (validationResult === undefined) {\r\n errors[ item.IdMetadato ] = 'La regla der validación no retorno una respuesta';\r\n continue;\r\n }\r\n if (validationResult.isValid !== true) {\r\n errors[ item.IdMetadato ] = validationResult.message || 'Campo requerido';\r\n continue;\r\n }\r\n }\r\n break;\r\n\r\n case TipoColumnaMetadato.Contactos:\r\n case TipoColumnaMetadato.ContactosEntidades:\r\n case TipoColumnaMetadato.ContactosPersonas:\r\n if (value <= 0) {\r\n errors[ item.IdMetadato ] = 'Campo requerido';\r\n continue;\r\n }\r\n break;\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n this.setState({\r\n errors\r\n });\r\n\r\n return Object.getOwnPropertyNames(errors).length === 0;\r\n }\r\n\r\n}\r\n\r\nexport interface IContactosComponentProps {\r\n mode: 'embebed' | 'normal'\r\n onSelectedItem?: (contact: IContacto) => void;\r\n service: IService;\r\n serviceMethodName: string;\r\n}\r\n\r\nexport interface IContactosComponentState {\r\n commandBar: IContextualMenuItem[];\r\n onSelectedItem?: (contact: IContacto) => void;\r\n}\r\n\r\nexport class ContactosComponent extends React.Component {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n commandBar: this._buildCommandBar(undefined),\r\n onSelectedItem: this.props.onSelectedItem,\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n return \r\n }\r\n\r\n private _onSelectedRow(rows: IContacto[]): void {\r\n this.setState({\r\n commandBar: this._buildCommandBar(rows[ 0 ])\r\n });\r\n if (this.props.onSelectedItem) {\r\n this.props.onSelectedItem(rows[ 0 ]);\r\n }\r\n }\r\n\r\n private _buildCommandBar(selectedItem: IContacto): IContextualMenuItem[] {\r\n const commandBar: IContextualMenuItem[] = [];\r\n if (this.props.mode === 'normal') {\r\n commandBar.push($_.def.btn.newButton('#' + _routes_.CREAR_CONTACTO));\r\n if (selectedItem) {\r\n commandBar.push($_.def.btn.editHref(_routes_.EDITAR_CONTACTO.replace(':id', selectedItem.IdContacto.toString())));\r\n }\r\n }\r\n return commandBar;\r\n }\r\n\r\n componentWillReceiveProps(nextProps: IContactosComponentProps) {\r\n this.setState({\r\n onSelectedItem: nextProps.onSelectedItem\r\n });\r\n }\r\n\r\n}","export function dateToStr(dateObj: Date): string {\r\n let month = (dateObj.getMonth() + 1).toString().padStart(2, '0');\r\n let day = String(dateObj.getDate()).padStart(2, '0');\r\n let year = dateObj.getFullYear();\r\n let output = `${day}/${month}/${year}`;\r\n return output;\r\n}","import React from 'react';\r\nimport { BaseState } from '../classes/shared/base.state';\r\nimport { IComboBoxOption } from \"@fluentui/react\";\r\n\r\nexport default class IoipBaseComponent> extends React.Component {\r\n\r\n protected _changeModelTextField(property: string, value: string | number) {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n [ property ]: value\r\n }\r\n });\r\n }\r\n\r\n protected _changeModelComboBox(property: string, value?: IComboBoxOption): void {\r\n if (value) {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n [ property ]: value.key\r\n }\r\n });\r\n\r\n } else {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any)\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected _changeModelCheckBox(property: string, ev?: React.FormEvent, checked?: boolean): void {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n [ property ]: checked\r\n }\r\n });\r\n }\r\n\r\n protected _onChangeModelDate(property: string, date: Date | null | undefined): void {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n [ property ]: date\r\n }\r\n });\r\n };\r\n\r\n}\r\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\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\nexport function __extends(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\nexport var __assign = function() {\n __assign = Object.assign || function __assign(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)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(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}\n\nexport function __decorate(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\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(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}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export const COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\n\n\nexport function toFileWithPath(file: FileWithPath, path?: string): FileWithPath {\n const f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n const {webkitRelativePath} = file;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n\n return f;\n}\n\nexport interface FileWithPath extends File {\n readonly path?: string;\n}\n\nfunction withMimeType(file: FileWithPath) {\n const {name} = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n if (hasExtension && !file.type) {\n const ext = name.split('.')\n .pop()!.toLowerCase();\n const type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n\n return file;\n}\n","import {FileWithPath, toFileWithPath} from './file';\n\n\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n\n\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport async function fromEvent(evt: Event | any): Promise<(FileWithPath | DataTransferItem)[]> {\n if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {\n return getDataTransferFiles(evt.dataTransfer, evt.type);\n } else if (isChangeEvt(evt)) {\n return getInputFiles(evt);\n } else if (Array.isArray(evt) && evt.every(item => 'getFile' in item && typeof item.getFile === 'function')) {\n return getFsHandleFiles(evt)\n }\n return [];\n}\n\nfunction isDataTransfer(value: any): value is DataTransfer {\n return isObject(value);\n}\n\nfunction isChangeEvt(value: any): value is Event {\n return isObject(value) && isObject(value.target);\n}\n\nfunction isObject(v: any): v is T {\n return typeof v === 'object' && v !== null\n}\n\nfunction getInputFiles(evt: Event) {\n return fromList((evt.target as HTMLInputElement).files).map(file => toFileWithPath(file));\n}\n\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nasync function getFsHandleFiles(handles: any[]) {\n const files = await Promise.all(handles.map(h => h.getFile()));\n return files.map(file => toFileWithPath(file));\n}\n\n\nasync function getDataTransferFiles(dt: DataTransfer, type: string) {\n // IE11 does not support dataTransfer.items\n // See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n if (dt.items) {\n const items = fromList(dt.items)\n .filter(item => item.kind === 'file');\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return items;\n }\n const files = await Promise.all(items.map(toFilePromises));\n return noIgnoredFiles(flatten(files));\n }\n\n return noIgnoredFiles(fromList(dt.files)\n .map(file => toFileWithPath(file)));\n}\n\nfunction noIgnoredFiles(files: FileWithPath[]) {\n return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);\n}\n\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items: DataTransferItemList | FileList | null): T[] {\n if (items === null) {\n return [];\n }\n\n const files = [];\n\n // tslint:disable: prefer-for-of\n for (let i = 0; i < items.length; i++) {\n const file = items[i];\n files.push(file);\n }\n\n return files as any;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item: DataTransferItem) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n\n const entry = item.webkitGetAsEntry();\n\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry) as any;\n }\n\n return fromDataTransferItem(item);\n}\n\nfunction flatten(items: any[]): T[] {\n return items.reduce((acc, files) => [\n ...acc,\n ...(Array.isArray(files) ? flatten(files) : [files])\n ], []);\n}\n\nfunction fromDataTransferItem(item: DataTransferItem) {\n const file = item.getAsFile();\n if (!file) {\n return Promise.reject(`${item} is not a File`);\n }\n const fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nasync function fromEntry(entry: any) {\n return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry: any) {\n const reader = entry.createReader();\n\n return new Promise((resolve, reject) => {\n const entries: Promise[] = [];\n\n function readEntries() {\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(async (batch: any[]) => {\n if (!batch.length) {\n // Done reading directory\n try {\n const files = await Promise.all(entries);\n resolve(files);\n } catch (err) {\n reject(err);\n }\n } else {\n const items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n\n // Continue reading\n readEntries();\n }\n }, (err: any) => {\n reject(err);\n });\n }\n\n readEntries();\n });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nasync function fromFileEntry(entry: any) {\n return new Promise((resolve, reject) => {\n entry.file((file: FileWithPath) => {\n const fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, (err: any) => {\n reject(err);\n });\n });\n}\n\n// Infinite type recursion\n// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540\ninterface FileArray extends Array {}\ntype FileValue = FileWithPath\n | FileArray[];\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string|string[]} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles,\n validator = _ref.validator;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n var customErrors = validator ? validator(file) : null;\n return accepted && sizeMatch && !customErrors;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return 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\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n if (isDefined(accept)) {\n var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n mimeType = _ref3[0],\n ext = _ref3[1];\n\n var ok = true;\n\n if (!isMIMEType(mimeType)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n ok = false;\n }\n\n if (!Array.isArray(ext) || !ext.every(isExt)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n ok = false;\n }\n\n return ok;\n }).reduce(function (agg, _ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n mimeType = _ref5[0],\n ext = _ref5[1];\n\n return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n }, {});\n return [{\n // description is required due to https://crbug.com/1264708\n description: \"Files\",\n accept: acceptForPicker\n }];\n }\n\n return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n if (isDefined(accept)) {\n return Object.entries(accept).reduce(function (a, _ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n mimeType = _ref7[0],\n ext = _ref7[1];\n\n return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n .filter(function (v) {\n return isMIMEType(v) || isExt(v);\n }).join(\",\");\n }\n\n return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\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\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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 prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * \n * {({getRootProps, getInputProps}) => (\n *
      \n * \n *

      Drag 'n' drop some files here, or click to select files

      \n *
      \n * )}\n *
      \n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: true,\n autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n */\n accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Set to true to focus the root element on render\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Cb for when there's some error from any of the promises.\n *\n * @param {Error} error\n */\n onError: PropTypes.func,\n\n /**\n * Custom validation function. It must return null if there's no errors.\n * @param {File} file\n * @returns {FileError|FileError[]|null}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n *
      \n * \n *

      Drag and drop some files here, or click to select files

      \n *
      \n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n accept = _defaultProps$props.accept,\n disabled = _defaultProps$props.disabled,\n getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n maxSize = _defaultProps$props.maxSize,\n minSize = _defaultProps$props.minSize,\n multiple = _defaultProps$props.multiple,\n maxFiles = _defaultProps$props.maxFiles,\n onDragEnter = _defaultProps$props.onDragEnter,\n onDragLeave = _defaultProps$props.onDragLeave,\n onDragOver = _defaultProps$props.onDragOver,\n onDrop = _defaultProps$props.onDrop,\n onDropAccepted = _defaultProps$props.onDropAccepted,\n onDropRejected = _defaultProps$props.onDropRejected,\n onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n useFsAccessApi = _defaultProps$props.useFsAccessApi,\n autoFocus = _defaultProps$props.autoFocus,\n preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n noClick = _defaultProps$props.noClick,\n noKeyboard = _defaultProps$props.noKeyboard,\n noDrag = _defaultProps$props.noDrag,\n noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n onError = _defaultProps$props.onError,\n validator = _defaultProps$props.validator;\n\n var acceptAttr = useMemo(function () {\n return acceptPropAsAcceptAttr(accept);\n }, [accept]);\n var pickerTypes = useMemo(function () {\n return pickerOptionsFromAccept(accept);\n }, [accept]);\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n /**\n * @constant\n * @type {React.MutableRefObject}\n */\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n useEffect(function () {\n if (!disabled && autoFocus && rootRef.current) {\n rootRef.current.focus();\n }\n\n return function () {};\n }, [rootRef, autoFocus, disabled]);\n var onErrCb = useCallback(function (e) {\n if (onError) {\n onError(e);\n } else {\n // Let the user know something's gone wrong if they haven't provided the onError cb.\n console.error(e);\n }\n }, [onError]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var fileCount = files.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: files,\n accept: acceptAttr,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles,\n validator: validator\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n dispatch({\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n type: \"setDraggedFiles\",\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, acceptAttr),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: pickerTypes\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n } else {\n onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided.\"));\n }\n } else {\n onErrCb(e);\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: acceptAttr,\n multiple: multiple,\n type: \"file\",\n style: {\n display: \"none\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragActive: action.isDragActive,\n isDragAccept: action.isDragAccept,\n isDragReject: action.isDragReject\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","import React, { useMemo } from \"react\";\r\nimport { useDropzone } from 'react-dropzone'\r\nimport { FileUploadItem, IFileUploadItem, IRetryUploadSettings, IStartUploadSettings, IoipIcons, getExtension } from \"ioip-base/lib/common\";\r\nimport { DetailsList, IColumn, SelectionMode } from \"@fluentui/react\";\r\nimport { Column, DataTableIcon, Grid, Guid, Row } from \"@ioip/core/lib\";\r\nimport { Sede } from \"../../classes/shared\";\r\n\r\nconst baseStyle: React.CSSProperties = {\r\n backgroundColor: 'rgb(249 249 249)',\r\n borderColor: '#a19f9d',\r\n borderRadius: '5px',\r\n borderStyle: 'dashed',\r\n borderWidth: 1,\r\n color: 'rgb(189, 189, 189)',\r\n display: 'flex',\r\n flex: 1,\r\n flexDirection: 'column',\r\n minHeight: '48px',\r\n outline: 'none',\r\n padding: '10px',\r\n transition: 'border .24s ease-in-out',\r\n};\r\nconst activeStyle: React.CSSProperties = { borderColor: '#0078d4' };\r\nconst acceptStyle: React.CSSProperties = { borderColor: '#0078d4' };\r\nconst rejectStyle: React.CSSProperties = { borderColor: '#0078d4' };\r\n\r\nexport interface IFileSelectorProps {\r\n allowCreate: boolean;\r\n allowedExtensions?: string;\r\n columns?: IColumn[];\r\n errorMessage?: string;\r\n files: IFileUploadItem[];\r\n multiple: boolean;\r\n onChanged: (files: IFileUploadItem[]) => void;\r\n onClick?: (file: IFileUploadItem) => void;\r\n onCreate?: (name: string, size: number, uploadId: string) => Promise;\r\n onRetry?: (file: IFileUploadItem, newName: string, newSize: number) => IRetryUploadSettings;\r\n onShowMessage?: (message: string, title: string) => void;\r\n onError?: (message: string) => void;\r\n}\r\n\r\nexport const FileSelectorSede = (props: IFileSelectorProps): JSX.Element => {\r\n\r\n const { getRootProps, getInputProps, isDragActive, isDragAccept, isDragReject } = useDropzone({\r\n accept: { 'file/*': [ props.allowedExtensions ] },\r\n onDrop: (newFiles: File[]) => {\r\n\r\n if (!props.allowCreate) {\r\n return;\r\n }\r\n\r\n const tmp = props.files.slice();\r\n for (let i = 0; i < newFiles.length; i++) {\r\n const file: File = newFiles[ i ];\r\n if (tmp.find(o => o.name === file.name && o.size === file.size) == null) {\r\n const extension = getExtension(file.name);\r\n if (props.allowedExtensions.indexOf(file.type.toLowerCase()) < 0 && props.allowedExtensions.indexOf(extension.toLowerCase()) < 0) {\r\n if (props.onError != null) {\r\n props.onError(`Archivo no permitido: ${file.name}`);\r\n }\r\n break;\r\n }\r\n\r\n let maxPerm = Sede.shared.context.MaxFileSize > 0 ? Sede.shared.context.MaxFileSize * 1024 * 1024 : 50 * 1024 * 1024;\r\n if(file.size > maxPerm)\r\n {\r\n if (props.onError != null) {\r\n props.onError(`Tamaño de archivo supera máximo permitido`);\r\n }\r\n break;\r\n }\r\n\r\n tmp.push({\r\n nativeFile: file,\r\n name: file.name,\r\n size: file.size,\r\n data: null,\r\n error: false,\r\n uploadId: Guid.newGuid().toString(),\r\n isNew: true\r\n });\r\n }\r\n }\r\n props.onChanged(tmp);\r\n\r\n }\r\n });\r\n\r\n const style: React.CSSProperties = useMemo(() => ({\r\n ...baseStyle,\r\n ...(isDragActive ? activeStyle : {}),\r\n ...(isDragAccept ? acceptStyle : {}),\r\n ...(isDragReject ? rejectStyle : {})\r\n }), [ isDragActive, isDragReject, isDragAccept ]);\r\n\r\n const allowDrop = (props.multiple || (!props.multiple && props.files.length === 0));\r\n\r\n //const files = new List(props.files || []).OrderBy(o => o.name).ToArray();\r\n const files = props.files || [];\r\n\r\n const renderFiles = () => {\r\n return \r\n {\r\n let icon: string;\r\n switch (getExtension(file.name || '').trim().toLowerCase()) {\r\n\r\n case 'docx':\r\n case 'doc':\r\n icon = IoipIcons.Docx;\r\n break;\r\n\r\n case 'xlsx':\r\n case 'xls':\r\n icon = IoipIcons.Xlsx;\r\n break;\r\n\r\n case 'pptx':\r\n case 'ppt':\r\n icon = IoipIcons.Pptx;\r\n break;\r\n\r\n case 'pdf':\r\n icon = IoipIcons.Pdf;\r\n break;\r\n\r\n case 'msg':\r\n icon = IoipIcons.Mail;\r\n break;\r\n\r\n case 'txt':\r\n icon = IoipIcons.Txt;\r\n break;\r\n\r\n case 'jpg':\r\n case 'jpeg':\r\n case 'png':\r\n case 'bmp':\r\n case 'icon':\r\n icon = IoipIcons.Picture;\r\n break;\r\n\r\n default:\r\n icon = IoipIcons.File;\r\n break;\r\n\r\n }\r\n return ;\r\n }\r\n },\r\n {\r\n key: 'name',\r\n name: 'Nombre',\r\n fieldName: 'name',\r\n minWidth: 200,\r\n isResizable: true,\r\n onRender: (file: IFileUploadItem) => {\r\n if (typeof props.onClick === 'function') {\r\n props.onClick(file);\r\n }\r\n }}\r\n onRetry={props.onRetry}\r\n onComplete={(nFile) => {\r\n const items = props.files.map(item => {\r\n if (item == nFile) {\r\n item.data = nFile.data;\r\n }\r\n return item;\r\n })\r\n props.onChanged(items);\r\n }}\r\n onError={props.onError}\r\n onMessage={props.onShowMessage}\r\n />\r\n },\r\n {\r\n key: 'size',\r\n name: 'Tamaño',\r\n fieldName: 'size',\r\n minWidth: 80,\r\n onRender: (item: IFileUploadItem) => item.size > 0 ? (item.size / 1048576).toString().match(/^-?\\d+(?:\\.\\d{0,2})?/)[ 0 ] + ' MB' : '-'\r\n },\r\n ...(props.columns || [])\r\n ]}\r\n items={files}\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 isDragAccept && allowDrop && <>\r\n {renderFiles()}\r\n \r\n
      \r\n
      \r\n \r\n }\r\n {\r\n isDragReject && <>\r\n {renderFiles()}\r\n
      Suelte los archivos aquí
      \r\n \r\n }\r\n {\r\n !isDragActive && <>\r\n {\r\n props.files.length === 0 &&
      \r\n

      Si usted cuenta con archivos que soporten su solicitud adjuntelos aquí.

      \r\n

      El peso máximo del archivo no debe superar {Sede.shared.context.MaxFileSize > 0 ? (Sede.shared.context.MaxFileSize ) : 50} MB ({Sede.shared.context.MaxFileSize > 0 ? (Sede.shared.context.MaxFileSize *1000 ) : 50000} KB)

      \r\n
      \r\n

      Nota: Recuerde que los formatos permitidos para adjuntar son: {'*.' + props.allowedExtensions.toUpperCase().split(',').join(' *.')}

      \r\n
      \r\n }\r\n {\r\n props.files.length > 0 && {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }}\r\n className=\"dt-container\">\r\n {\r\n renderFiles()\r\n }\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.errorMessage}\r\n \r\n \r\n \r\n\r\n}","import { IColumn, Icon } from \"@fluentui/react\";\r\nimport { IFileUploadItem, Subtitle } from \"ioip-base/lib/common\";\r\nimport React from \"react\";\r\nimport { Sede } from \"../../classes/shared\";\r\nimport { ensureFetch, showConfirmation, showError, successToast } from \"../../ioip/sdk/base\";\r\nimport { PqrWebService } from \"../../services/services\";\r\nimport { FileSelectorSede } from \"./FileSelectorSede\";\r\nimport { Guid } from \"@ioip/core/lib\";\r\n\r\nexport interface IReFileUploaderProps {\r\n title: string;\r\n attachments: IFileUploadItem[];\r\n onAttachmentsChanged: (files: IFileUploadItem[]) => void;\r\n onRetryCompleted: (file: IFileUploadItem) => void;\r\n radicadoId: number;\r\n allowRemove: boolean;\r\n service: PqrWebService;\r\n sessionId: string;\r\n}\r\n\r\nconst ReFileUploader = (props: IReFileUploaderProps): JSX.Element => {\r\n\r\n const items = props.attachments || [];\r\n const extensions = Sede.shared.context.AllowedExtensions;\r\n\r\n const onRemoveAttachment = (item: IFileUploadItem) => {\r\n showConfirmation('Eliminar archivo', `¿Está seguro que desea eliminar el archivo ${item.name}?`, () => {\r\n const api = Guid.isValid(props.sessionId)\r\n ? props.service.deleteAnonymousChunkDocumentAsync(props.sessionId, item.data.IdDocumentoRadicadoEntrada)\r\n : props.service.deleteChunkDocumentAsync(item.data.IdDocumentoRadicadoEntrada);\r\n ensureFetch(api, () => {\r\n props.onAttachmentsChanged(props.attachments.filter(o => o.data?.IdDocumentoRadicadoEntrada != item.data.IdDocumentoRadicadoEntrada));\r\n successToast('Archivo eliminado');\r\n });\r\n });\r\n }\r\n\r\n const onDownloadAttachmentAsync = async (item: IFileUploadItem) => {\r\n // if (item.data?.IdDocumentoRadicadoEntrada > 0) {\r\n // const response: Blob = props.isAttachment\r\n // ? await props.service.downloadAnexoAsync(props.radicadoId, item.data.IdDocumentoRadicadoEntrada)\r\n // : await props.service.downloadDocumentAsync(props.radicadoId, item.data.IdDocumentoRadicadoEntrada);\r\n // const file = getFileWithMimeType(response, Ioip.File.GetExtension(item.name));\r\n // $_.utils.downloadBlob(file, item.name);\r\n // }\r\n }\r\n\r\n const onRety = (file: IFileUploadItem, newName: string, newSize: number) => {\r\n\r\n const isSameFile = file.name === newName && file.size === newSize;\r\n if (!isSameFile) {\r\n showError(`El archivo a cargar no es el mismo.\\nNombre esperado: ${file.name}\\nTamaño esperado: ${file.size}`);\r\n }\r\n\r\n return {\r\n cancel: !isSameFile,\r\n nextChunk: file.data.CurrentChunk,\r\n onAppend: (buffer: Blob) => {\r\n return Guid.isValid(props.sessionId)\r\n ? props.service.appendAnonymousChunkContentAsync(props.sessionId, file.data.IdDocumentoRadicadoEntrada, buffer)\r\n : props.service.appendChunkContentAsync(file.data.IdDocumentoRadicadoEntrada, buffer);\r\n },\r\n onComplete: () => {\r\n file.error = false;\r\n props.onRetryCompleted(file);\r\n successToast(`Archivo ${newName} cargado correctamente`);\r\n }\r\n };\r\n\r\n }\r\n\r\n const onCreate = async (name: string, size: number, uploadId: string) => {\r\n try {\r\n const creationResult = Guid.isValid(props.sessionId)\r\n ? await props.service.createAnonymousChunkDocumentAsync(props.sessionId, { Length: size, Name: name })\r\n : await props.service.createChunkDocumentAsync({ Length: size, Name: name });\r\n return {\r\n cancel: false,\r\n onAppend: (buffer: Blob) => {\r\n return Guid.isValid(props.sessionId)\r\n ? props.service.appendAnonymousChunkContentAsync(props.sessionId, creationResult.DocumentId, buffer)\r\n : props.service.appendChunkContentAsync(creationResult.DocumentId, buffer);\r\n },\r\n onComplete: (setData: (data: any) => void) => {\r\n setData({ IdDocumentoRadicadoEntrada: creationResult.DocumentId })\r\n successToast(`Archivo ${name} cargado correctamente`);\r\n }\r\n }\r\n } catch (ex) {\r\n showError((ex as any).ExceptionMessage || (ex as any).exceptionMessage);\r\n const attachments = (props.attachments || []).filter(o => o.uploadId != uploadId);\r\n props.onAttachmentsChanged(attachments);\r\n return {\r\n cancel: true,\r\n onAppend: null,\r\n onComplete: null\r\n }\r\n }\r\n }\r\n\r\n const onChanged = (files: IFileUploadItem[]) => {\r\n props.onAttachmentsChanged(files || [])\r\n }\r\n\r\n const showFile = (documentId: number, isAttachment: boolean) => {\r\n // ensureFetch(props.service.getViewerUrlAsync(props.radicadoId, documentId, isAttachment), url => {\r\n // $_.openFileViewer(url);\r\n // })\r\n }\r\n\r\n const columns: IColumn[] = [];\r\n if (props.allowRemove) {\r\n columns.push({\r\n key: 'remove',\r\n name: '',\r\n fieldName: '',\r\n minWidth: 20,\r\n maxWidth: 20,\r\n isResizable: false,\r\n onRender: (item: IFileUploadItem) => {\r\n if (item.data?.IdDocumentoRadicadoEntrada > 0) {\r\n return onRemoveAttachment(item)}\r\n style={{ cursor: 'pointer' }}\r\n />\r\n }\r\n return <>\r\n }\r\n });\r\n }\r\n\r\n const allowCreate = true;\r\n\r\n return <>\r\n \r\n showFile(file.data?.IdDocumentoRadicadoEntrada, true)}\r\n columns={columns}\r\n onError={error => showError(error)}\r\n onShowMessage={(message, title) => showError(message)}\r\n />\r\n \r\n\r\n}\r\n\r\nexport default ReFileUploader;","import React from 'react';\r\nimport { Sede } from '../../classes/shared';\r\n\r\nexport interface IReCaptchaComponentProps {\r\n\r\n}\r\n\r\nexport interface IReCaptchaComponentState {\r\n initialized: boolean;\r\n}\r\n\r\nexport class ReCaptchaComponent extends React.Component {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n initialized: false\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n const grecaptcha = window[ 'grecaptcha' as any ] as any;\r\n if (grecaptcha === undefined) {\r\n alert('Recaptcha no initializado');\r\n return;\r\n }\r\n const stSiteKey = Sede.shared.context.ReCaptchaSiteKey !== '' ? Sede.shared.context.ReCaptchaSiteKey : '6LdzAsUUAAAAADxhEwEl-mp5j_MT6V1Pmx8Vs1U3';\r\n this.setState({ initialized: true });\r\n grecaptcha.render('g-ioip', { 'sitekey': stSiteKey });\r\n }\r\n\r\n render(): JSX.Element {\r\n return
      \r\n }\r\n\r\n public isValid(): { isCaptchaValid: boolean; recaptchaToken: string } {\r\n const grecaptcha = window[ 'grecaptcha' as any ] as any;\r\n let isCaptchaValid: boolean = false;\r\n let recaptchaToken: string = ''\r\n if (grecaptcha === undefined) {\r\n alert('Recaptcha no initializado');\r\n }\r\n else {\r\n const gReponse = grecaptcha.getResponse();\r\n isCaptchaValid = (gReponse !== '');\r\n recaptchaToken = gReponse;\r\n }\r\n return { isCaptchaValid, recaptchaToken };\r\n }\r\n\r\n}","export enum CreatePqrComponentMode {\r\n authenticated = 1,\r\n anonymous = 2\r\n}","import { Checkbox, ComboBox, DefaultButton, IComboBoxOption, Label, Panel, PanelType, PrimaryButton, ProgressIndicator, TextField, TooltipHost } from '@fluentui/react';\r\nimport { Column, FunctionHost, Grid, GuidLegacy, Row } from '@ioip/core/lib';\r\nimport { CEngine, CForm, XForm, useProcesox } from '@ioip/procesox/lib';\r\nimport { InputFileConnector } from '@ioip/procesox/lib/flow/@conectors/input-file/InputFileConnector';\r\nimport { ParameterConnector } from '@ioip/procesox/lib/flow/@conectors/input-file/ParameterConnector';\r\nimport { DateTime, IDataTableRequest, IDictionary, IFileUploadItem, IPaginationBase, ScriptComponent, isNullOrEmpty, paginateDataAsync } from 'ioip-base/lib/common';\r\nimport { List } from 'linq.ts';\r\nimport React from 'react';\r\nimport { AuthenticationState, LoginType, MsalAuthProvider } from \"react-aad-msal\";\r\nimport { useParams } from 'react-router-dom';\r\nimport { IRadicadoEntradaExtended, defaultIRadicadoEntradaExtended } from '../../classes/radicado-entrada-extended';\r\nimport { Sede } from '../../classes/shared';\r\nimport { TramiteEnum } from '../../classes/shared/tramite.enum';\r\nimport { EstadoRadicado, IClasificacionPQRS, IRadicadoSalida, ITipoSolicitante, ITramite, IValorMetadato, TipoAsignacionTramiteEnum, TipoContacto, TipoEjecucionGestionTramiteEnum, TipoRespuestaPQRS, TipoTramite, ValidationResult, createOptions, defaultITramite, ensureFetch, showConfirmation, validateObject, validator } from '../../ioip/sdk/base';\r\nimport { LayoutEditorComponent } from '../../ioip/sdk/new-component';\r\nimport { PqrWebService } from '../../services/services';\r\nimport { IContact } from '../../types/IContact';\r\nimport IoipBaseComponent from '../base.component';\r\nimport ReFileUploader from '../file-selector/ReFileUploader';\r\nimport { ReCaptchaComponent } from '../recaptcha/ReCaptchaComponent';\r\nimport './crear-solicitud.css';\r\nimport { ICrearSolicitudComponentState } from './crear-solicitud.state';\r\nimport { CreatePqrComponentMode } from './create-pqr-mode.enum';\r\n\r\nexport interface ICrearSolicitudComponentProps {\r\n mode: CreatePqrComponentMode;\r\n engine?: CEngine;\r\n tramiteId?: string;\r\n}\r\n\r\nclass CrearSolicitudComponentInternal extends IoipBaseComponent {\r\n\r\n #service: PqrWebService;\r\n #tramites: ITramite[];\r\n #clasificaciones: IClasificacionPQRS[];\r\n #editorMetadatosComponent: LayoutEditorComponent;\r\n #scriptComponentRef: ScriptComponent;\r\n #recaptcha: ReCaptchaComponent;\r\n #authProvider: MsalAuthProvider;\r\n #limiteAsunto: number = 1000;\r\n #campoObservacion: boolean = false;\r\n #currentContact: IContact;\r\n #procesoxConnector: InputFileConnector;\r\n #parameterConnector: ParameterConnector;\r\n\r\n get contactTypeId(): number {\r\n const anonymousContactType = TipoContacto.Anonimo;\r\n const contactTypeId: number = this.props.mode === CreatePqrComponentMode.authenticated\r\n ? Number(sessionStorage.getItem('ioip.pqr-web.session.idtipocontacto'))\r\n : anonymousContactType;\r\n return contactTypeId;\r\n }\r\n\r\n get entityTypeId(): number {\r\n const entityTypeId: number = this.props.mode === CreatePqrComponentMode.authenticated ? Number(sessionStorage.getItem('ioip.pqr-web.session.idtipoentidad')) : 0;\r\n return entityTypeId;\r\n }\r\n\r\n get sessionId(): string {\r\n const url = window.location.href.split('/').pop();\r\n return url || '';\r\n }\r\n\r\n constructor(props: ICrearSolicitudComponentProps) {\r\n super(props);\r\n this.state = {\r\n model: defaultIRadicadoEntradaExtended(),\r\n Valores: [],\r\n metadatos: [],\r\n errors: {},\r\n data: {\r\n tramitesCO: [],\r\n tiposActuacion: [\r\n { key: 2, text: 'En nombre propio' },\r\n { key: 1, text: 'Denunciante' }\r\n ],\r\n tiposDiscapacidad: [\r\n { key: 1, text: 'Si' },\r\n { key: 2, text: 'No' }\r\n ],\r\n tiposIdentificacion: [],\r\n tiposSolicitante: []\r\n },\r\n tramite: defaultITramite(),\r\n disclaimer: {\r\n show: false,\r\n text: '',\r\n title: '',\r\n isPersonalData: false\r\n },\r\n labelsDenunciante: {\r\n nombre: 'Nombre denunciante',\r\n apellido: 'Apellido denunciante',\r\n tipoIdentificacion: 'Tipo de identificación denunciante',\r\n numeroIdentificacion: 'Identificación denunciante',\r\n email: 'Email denunciante'\r\n },\r\n show_ActuaEn_Discapacidad: false,\r\n clasificacionesPQRS: [],\r\n showClasificacionPQRS: false,\r\n NumeroRadicadoSalida: '',\r\n showDescripcionTramite: false,\r\n descripcionTramite: '',\r\n procesoxFunction: {},\r\n procesoxState: {},\r\n attachments: [],\r\n procesoxEntryPoint: null,\r\n functionHostValidator: null,\r\n palabrasClave: [],\r\n keywordsDataSource: [],\r\n showCampoOtro: false,\r\n isLoading: true,\r\n isProcesoxLoading: true\r\n };\r\n this.#service = new PqrWebService();\r\n this.#authProvider = new MsalAuthProvider(\r\n {\r\n auth: {\r\n authority: Sede.shared.context.B2C.Authority,\r\n clientId: Sede.shared.context.B2C.ClientId,\r\n postLogoutRedirectUri: window.location.origin + '/sede.html',\r\n redirectUri: window.location.origin + '/sede.html',\r\n validateAuthority: false,\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: true\r\n }\r\n },\r\n {\r\n scopes: [ Sede.shared.context.B2C.Scopes ]\r\n },\r\n {\r\n loginType: LoginType.Popup,\r\n tokenRefreshUri: window.location.origin\r\n }\r\n );\r\n\r\n // Crear conector de ProcesoX para comunicar el formulario principal con el formulario de ProcesoX\r\n this.#procesoxConnector = new InputFileConnector({\r\n onValuesChange: (values) => {\r\n const cm = { ...this.state.model.CustomMetadata };\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n Asunto: values.subject,\r\n CustomMetadata: {\r\n ...cm,\r\n ...this.state.procesoxEntryPoint?.serializeValues() ?? {}\r\n }\r\n }\r\n });\r\n },\r\n onReadObject: () => {\r\n if (this.props.mode === CreatePqrComponentMode.authenticated) {\r\n return {\r\n administrativeProcedureId: this.state.model.IdTramite,\r\n contactAddress: this.#currentContact.address,\r\n contactEmail: this.#currentContact.email,\r\n contactFirstName: this.#currentContact.firstName,\r\n contactId: this.#currentContact.id,\r\n contactIdentificationNumber: this.#currentContact.identificationNumber,\r\n contactIdentificationType: this.#currentContact.identificationTypeId,\r\n contactLastName: this.#currentContact.lastName,\r\n contactPhoneNumber: this.#currentContact.phoneNumber,\r\n contactProfessionId: this.#currentContact.professionId,\r\n contactTypeId: this.#currentContact.contactTypeId,\r\n pqrsClassificationId: this.state.model.IdClasificacionPQRS,\r\n subject: this.state.model.Asunto,\r\n statusId: this.state.model.IdEstadoActual\r\n }\r\n } else {\r\n return {\r\n contactTypeId: TipoContacto.Anonimo,\r\n statusId: this.state.model.IdEstadoActual\r\n };\r\n }\r\n }\r\n });\r\n\r\n this.#parameterConnector = new ParameterConnector({\r\n onReadObject: () => ({\r\n 'ContactType.Person': 1,\r\n 'ContactType.Entity': 2,\r\n 'ContactType.Anonymous': 4\r\n })\r\n });\r\n\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n\r\n // Si la sesion no es anonima, se debe garantizar que el usuario este autenticado\r\n // Si no lo esta, se debe redireccionar a la pagina de autenticacion\r\n // Si el usuario esta autenticado, se debe obtener la informacion del usuario\r\n if (this.props.mode === CreatePqrComponentMode.authenticated) {\r\n if (Sede.shared.contactId === 0) {\r\n if (this.defaultTramiteId > 0)\r\n window.location.href = `#/sign-in/create-pqr/${this.defaultTramiteId}`;\r\n else\r\n window.location.href = `#/sign-in/create-pqr`;\r\n return;\r\n }\r\n this.#currentContact = await this.#service.getCurrentContectAsync();\r\n }\r\n\r\n\r\n try {\r\n\r\n if (this.props.mode === CreatePqrComponentMode.anonymous) {\r\n sessionStorage.setItem('ioip.pqr-web.session.idtipocontacto', TipoContacto.Anonimo.toString());\r\n }\r\n\r\n let [ model, identifications, applicantTypes ] = await Promise.all([\r\n GuidLegacy.IsValid(this.sessionId) ? this.#service.getSessionDraftAsync(this.sessionId) : this.#service.getCurrentDraftAsync(),\r\n this.#service.getAllIdentificationTypesAsync(),\r\n this.#service.getAllApplicantTypeAsync()\r\n ]);\r\n\r\n let lastRequest = '';\r\n if (!GuidLegacy.IsValid(this.sessionId) && model === null) lastRequest = await Promise.all([ this.#service.getLastRequest() ]) as any;\r\n const tramites = Sede.shared.context.Tramites;\r\n this.#tramites = tramites.filter(o => o.Activo && o.TiposContacto?.some(x => x.ContactTypeId == this.contactTypeId));\r\n\r\n let tiposActuacion = this.state.data.tiposActuacion;\r\n let labelsDenunciante = this.state.labelsDenunciante;\r\n if (this.contactTypeId == TipoContacto.Congresista) {\r\n tiposActuacion = [\r\n { key: 2, text: 'En nombre propio' },\r\n { key: 1, text: 'Solicitud ciudadana presentada en la oficina de congresista' }\r\n ];\r\n labelsDenunciante = {\r\n nombre: 'Nombres denunciante',\r\n apellido: 'Apellidos denunciante',\r\n tipoIdentificacion: 'Tipo de identificacion denunciante',\r\n numeroIdentificacion: 'Identificación denunciante',\r\n email: 'Email denunciante'\r\n };\r\n }\r\n\r\n let numeroVinculado = model ? model.NumeroRadicadoSalida : '';\r\n if (Sede.shared.context.SubjectMaxLength > 0)\r\n this.#limiteAsunto = Sede.shared.context.SubjectMaxLength;\r\n if (Sede.shared.context.EnableCommentsField)\r\n this.#campoObservacion = Sede.shared.context.EnableCommentsField;\r\n const attachments = this.processDocuments(model);\r\n\r\n if (model == null)\r\n model = defaultIRadicadoEntradaExtended();\r\n\r\n if (this.defaultTramiteId > 0)\r\n model.IdTramite = this.defaultTramiteId;\r\n\r\n this.setState({\r\n model,\r\n data: {\r\n ...this.state.data,\r\n tramitesCO: createOptions(this.#tramites.filter(x => x.Activo && !x.Props?.ShowButtonInWeb), o => o.IdTramite, o => o.Nombre),\r\n tiposIdentificacion: identifications.map(o => ({ key: o.IdTipoIdentificacion, text: o.Nombre })),\r\n tiposActuacion,\r\n tiposSolicitante: applicantTypes.filter(o => o.Activo).map((o: ITipoSolicitante) => ({ key: o.IdTipoSolicitante, text: o.Nombre }))\r\n },\r\n labelsDenunciante,\r\n attachments,\r\n procesoxFunction: '',\r\n NumeroRadicadoSalida: numeroVinculado,\r\n isLoading: false\r\n }, () => {\r\n const options = { key: this.state.model.IdTramite, text: this.state.model.Tramite };\r\n this._onChangeTramite(options, model?.CustomMetadata, false);\r\n });\r\n\r\n this._getTokenB2C();\r\n\r\n if (!isNullOrEmpty(lastRequest[ 0 ])) {\r\n alert(lastRequest);\r\n }\r\n\r\n } catch (err) {\r\n if (err instanceof Error) {\r\n alert(err.message);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Retorna el Id del trámite seleccionado a traves del parametro tramiteId en la url\r\n */\r\n private get defaultTramiteId(): number {\r\n const tramiteId: string = this.props.tramiteId;\r\n return (isNullOrEmpty(tramiteId) ? 0 : Number(tramiteId)) || 0;\r\n }\r\n\r\n processDocuments(model: IRadicadoEntradaExtended): IFileUploadItem[] {\r\n if (model == null) {\r\n return [];\r\n }\r\n const attachments: IFileUploadItem[] = [];\r\n if (model.Anexos?.length > 0) {\r\n for (let i = 0; i < model.Anexos.length; i++) {\r\n const attachment = model.Anexos[ i ];\r\n attachments.push({\r\n name: attachment.NombreArchivo,\r\n nativeFile: null,\r\n size: attachment.Length,\r\n data: attachment,\r\n error: !attachment.Cargado,\r\n uploadId: GuidLegacy.NewGuid(),\r\n });\r\n }\r\n }\r\n return new List(attachments).OrderBy(o => o.name).ToArray();\r\n }\r\n\r\n get confirmMessage(): string {\r\n let message = '¿Está seguro que desea enviar la solicitud?';\r\n if (Sede.shared.context.ConfirmMessage !== '' && this.props.mode !== CreatePqrComponentMode.anonymous) {\r\n message = Sede.shared.context.ConfirmMessage;\r\n }\r\n return message\r\n }\r\n\r\n get showNumeroRadicadoSalida(): boolean {\r\n if (this.state.model.IdTramite === TipoTramite.AporteAclaracion) {\r\n return true;\r\n }\r\n if (this.state.model.IdTramite === TipoTramite.AporteAmpliacion) {\r\n return true;\r\n }\r\n if (this.state.model.IdTramite === TipoTramite.AporteInformacion) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n get showSolicitudDenunciante(): boolean {\r\n const idTipoContacto: number = this.contactTypeId;\r\n if (idTipoContacto == TipoContacto.Congresista) {\r\n if (this.state.model.IdTramite === TramiteEnum.DerechoPeticion) {\r\n return true;\r\n }\r\n if (this.state.model.IdTramite === TramiteEnum.DenunciaFiscal) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private renderProcesoxForm(): JSX.Element {\r\n\r\n if (this.state.isProcesoxLoading) {\r\n return
      \r\n \r\n
      \r\n }\r\n\r\n if (this.state.procesoxEntryPoint == null)\r\n return
      \r\n \r\n
      ;\r\n\r\n return \r\n\r\n }\r\n\r\n private renderReCaptcha(): JSX.Element {\r\n return \r\n \r\n this.#recaptcha = x} />\r\n {this.state.errors[ 'recaptcha' ]}\r\n \r\n \r\n }\r\n\r\n private renderDocumentUploader(): JSX.Element {\r\n return this.state.model.IdRadicadoEntrada > 0 ? this.setState({ attachments })}\r\n radicadoId={this.state.model.IdRadicadoEntrada}\r\n onRetryCompleted={mainFile => { }}\r\n allowRemove={true}\r\n service={this.#service}\r\n sessionId={this.sessionId}\r\n /> : <>\r\n }\r\n\r\n private _redirectToHome = () => {\r\n const homeUrl = new URLSearchParams(location.search).get('homeUrl');\r\n if (!isNullOrEmpty(homeUrl)) {\r\n window.location.href = homeUrl;\r\n } else {\r\n window.location.href = '#/home';\r\n }\r\n }\r\n\r\n private renderButtons(): JSX.Element {\r\n\r\n const deleteDraft = () => {\r\n showConfirmation('Eliminar borrador', '¿Está seguro que desea eliminar el borrador?', () => {\r\n ensureFetch(GuidLegacy.IsValid(this.sessionId) ? this.#service.deleteAnonymousDraftAsync(this.sessionId) : this.#service.deleteDraftAsync(), () => {\r\n window.location.reload();\r\n })\r\n })\r\n }\r\n\r\n return \r\n \r\n {this.state.model.IdRadicadoEntrada > 0 && }\r\n \r\n {!this.state.isProcesoxLoading && \r\n 0 ? 'Enviar' : 'Continuar'}\r\n onClick={() => this._saveAsync()}\r\n />\r\n   \r\n this._redirectToHome()}\r\n />\r\n }\r\n \r\n }\r\n\r\n public render(): JSX.Element {\r\n\r\n if (this.state.isLoading) {\r\n return <>\r\n }\r\n\r\n const procesoX = {\r\n GetEntityItems: (entityId: string, callback: (result: any) => void) => {\r\n ensureFetch(this.#service.getProcesoxRuntimeItemsAsync(entityId, []), callback);\r\n },\r\n ExecuteFunction: (functionId: string, inputs: { [ key: string ]: any }, calllback: (value: string) => void) => {\r\n ensureFetch(this.#service.executeProcesoxFunctionAsync(functionId, inputs), (result) => {\r\n if (typeof calllback === 'function') {\r\n calllback(result);\r\n }\r\n });\r\n },\r\n ExecuteFunctionAsync: async (functionId: string, inputs: { [ key: string ]: any }) => {\r\n return new Promise((resolve) => {\r\n ensureFetch(this.#service.executeProcesoxFunctionAsync(functionId, inputs || {}), (result) => {\r\n resolve(result);\r\n });\r\n })\r\n },\r\n GetEntityItemsAsync: async (entityId: string) => {\r\n return this.#service.getProcesoxRuntimeItemsAsync(entityId, []);\r\n },\r\n Paginate: async (request: IDataTableRequest, options: IPaginationBase) => {\r\n return paginateDataAsync(request, options);\r\n }\r\n };\r\n\r\n if (this.state.tramite?.Props?.HideVirtualOfficeDefaultPage) {\r\n return \r\n {this.renderProcesoxForm()}\r\n {this.renderDocumentUploader()}\r\n {this.renderReCaptcha()}\r\n {this.renderButtons()}\r\n \r\n }\r\n\r\n return \r\n \r\n \r\n

      {this.props.mode === CreatePqrComponentMode.anonymous ? 'Formular solicitud anónima' : 'Formular solicitud'}

      \r\n
      \r\n
      \r\n {this.props.mode === CreatePqrComponentMode.anonymous && Sede.shared.context.InformacionSolicitudAnonima &&
      \r\n
      \r\n
      \r\n
      \r\n
      }\r\n {this.props.mode !== CreatePqrComponentMode.anonymous && Sede.shared.context.InformacionSolicitudAutenticado &&
      \r\n
      \r\n
      \r\n
      \r\n
      }\r\n {this.props.mode !== CreatePqrComponentMode.anonymous && Sede.shared.context.EnableContactRequesterType && this._changeModelComboBox('IdTipoEntidad', value)}\r\n options={this.state.data.tiposSolicitante}\r\n useComboBoxAsMenuWidth={true}\r\n disabled={true}\r\n />}\r\n {this.defaultTramiteId === 0 && \r\n \r\n \r\n this._onChangeTramite(value, {}, true)}\r\n options={this.state.data.tramitesCO}\r\n errorMessage={this.state.errors[ 'IdTramite' ]}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n />\r\n \r\n \r\n }\r\n {this.props.mode !== CreatePqrComponentMode.anonymous && Sede.shared.context.EnableRiskField &&
      \r\n
      \r\n \r\n
      \r\n
      }\r\n {Sede.shared.context.TextInformation &&
      \r\n
      \r\n
      \r\n
      \r\n
      }\r\n {this.state.showClasificacionPQRS && <>\r\n {this.state.keywordsDataSource.length > 0 && this.props.mode !== CreatePqrComponentMode.anonymous &&\r\n \r\n \r\n \r\n {\r\n // Establecer las palabras clave seleccionadas\r\n let keywords = [ ...this.state.palabrasClave ];\r\n const keyword = option;\r\n const index = keywords.indexOf(keyword);\r\n if (index < 0) {\r\n keywords.push(keyword);\r\n }\r\n else if (index >= 0) {\r\n keywords = keywords.filter(o => o != keyword);\r\n }\r\n\r\n let clasificacionesPQRS: IComboBoxOption[] = [];\r\n clasificacionesPQRS = keywords.length > 0 ? this.#clasificaciones.filter(o => !isNullOrEmpty(o.PalabrasClave) && o.Activo && o.RegistroWeb && this.containsKeywords(keywords, o.PalabrasClave)).map(o => ({ key: o.IdClasificacionPQRS, text: o.Nombre })) : this.#clasificaciones.filter(o => (o.Activo && o.RegistroWeb)).map(o => ({ key: o.IdClasificacionPQRS, text: o.Nombre }));\r\n\r\n this.setState({\r\n clasificacionesPQRS,\r\n //palabrasClave: keywords\r\n });\r\n }\r\n }\r\n />\r\n \r\n \r\n }\r\n \r\n \r\n \r\n this._onChangeClasificacionPQR(value)}\r\n selectedKey={this.state.model.IdClasificacionPQRS}\r\n required={this.state.showClasificacionPQRS} />\r\n \r\n \r\n \r\n {Sede.shared.context.ShowSectionField &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n }\r\n {this.state.showCampoOtro &&
      \r\n
      \r\n this._changeModelTextField('OtroClasificacionPQR', value)}\r\n value={this.state.model.OtroClasificacionPQR}\r\n />\r\n
      \r\n
      }\r\n {this.showNumeroRadicadoSalida &&
      \r\n
      \r\n {\r\n this.setState({\r\n NumeroRadicadoSalida: value\r\n });\r\n }}\r\n value={this.state.NumeroRadicadoSalida}\r\n />\r\n
      \r\n
      }\r\n {this.props.mode === CreatePqrComponentMode.authenticated && this.showSolicitudDenunciante && <>\r\n \r\n \r\n this._changeActuaEn(value)}\r\n options={this.state.data.tiposActuacion}\r\n useComboBoxAsMenuWidth={true}\r\n defaultSelectedKey={2}\r\n required={true}\r\n />\r\n \r\n {this.state.model.RadicaRepresentante && \r\n \r\n }\r\n \r\n {this.state.model.RadicaRepresentante && !this.state.model.DenuncianteAnonimo && <>\r\n \r\n \r\n this._changeModelTextField('NombresApoderado', value)}\r\n errorMessage={this.state.errors[ 'NombresApoderado' ]}\r\n value={this.state.model.NombresApoderado}\r\n />\r\n \r\n \r\n this._changeModelTextField('ApellidosApoderado', value)}\r\n errorMessage={this.state.errors[ 'ApellidosApoderado' ]}\r\n value={this.state.model.ApellidosApoderado}\r\n />\r\n \r\n \r\n \r\n \r\n this._changeModelComboBox('IdTipoIdentificacionApoderado', value)}\r\n />\r\n \r\n \r\n this._changeModelTextField('IdentificacionApoderado', value)}\r\n errorMessage={this.state.errors[ 'IdentificacionApoderado' ]}\r\n value={this.state.model.IdentificacionApoderado}\r\n />\r\n \r\n \r\n \r\n \r\n this._changeModelTextField('EmailApoderado', value)}\r\n errorMessage={this.state.errors[ 'EmailApoderado' ]}\r\n value={this.state.model.EmailApoderado}\r\n />\r\n \r\n \r\n this._changePersonaDiscapacidad(value)}\r\n options={this.state.data.tiposDiscapacidad}\r\n useComboBoxAsMenuWidth={true}\r\n defaultSelectedKey={2}\r\n />\r\n \r\n \r\n }\r\n }\r\n \r\n \r\n this._changeModelTextField('Asunto', value)}\r\n errorMessage={this.state.errors[ 'Asunto' ]}\r\n value={this.state.model.Asunto} />\r\n \r\n \r\n {(this.#campoObservacion) &&
      \r\n
      \r\n this._changeModelTextField('Observaciones', value)}\r\n errorMessage={this.state.errors[ 'Observaciones' ]}\r\n value={this.state.model.Observaciones} />\r\n
      \r\n
      }\r\n
      \r\n
      \r\n {this.renderMetadata()}\r\n
      \r\n
      \r\n {this.props.mode == CreatePqrComponentMode.anonymous &&
      \r\n this._changeModelTextField('Email', value)}\r\n errorMessage={this.state.errors[ 'Email' ]}\r\n value={this.state.model.Email}\r\n style={{ padding: '0px 8px' }}\r\n />\r\n
      }\r\n {!isNullOrEmpty(this.state.procesoxFunction) && {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n CustomMetadata: values\r\n }\r\n });\r\n }}\r\n variables={{\r\n ProcesoX: procesoX\r\n }}\r\n value={this.state.model.CustomMetadata || {}}\r\n errors={this.state.errors}\r\n onValidate={validator => this.setState({ functionHostValidator: validator })}\r\n />}\r\n {this.renderDocumentUploader()}\r\n {this.props.mode === CreatePqrComponentMode.anonymous && \r\n \r\n
      \r\n \r\n
      }\r\n />\r\n
      \r\n
      }\r\n \r\n
      \r\n {this.state.errors[ 'terminos' ]}\r\n
      \r\n
      \r\n {this.renderReCaptcha()}\r\n {this.renderButtons()}\r\n <>\r\n {!this.state.disclaimer.isPersonalData &&
      \r\n\r\n
      \r\n this.setState({ disclaimer: { show: false, text: '', title: '', isPersonalData: false } })} />\r\n
      \r\n
      \r\n }\r\n {this.state.disclaimer.isPersonalData &&\r\n
      \r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n AutorizaTratamientoDatosPersonales: true\r\n },\r\n disclaimer: { show: false, text: '', title: '', isPersonalData: false }\r\n })} />\r\n   \r\n {\r\n window.location.href = '#/home';\r\n window.location.reload();\r\n }\r\n } />\r\n
      \r\n }\r\n }\r\n closeButtonAriaLabel='Cerrar'>\r\n

      ') : '' }}>
      \r\n \r\n
      \r\n\r\n }\r\n\r\n private renderMetadata() {\r\n\r\n if (this.state.isProcesoxLoading) {\r\n return
      \r\n \r\n
      \r\n }\r\n\r\n // Verificar si los metadatos se deben renderizar con un formulario de procesox\r\n if (this.state.procesoxEntryPoint != null)\r\n return this.renderProcesoxForm();\r\n\r\n if (isNullOrEmpty(this.state.tramite.Props?.OnRenderRadicadoEntradaMetadata)) {\r\n return this.#editorMetadatosComponent = e}\r\n values={this.state.model.ValoresMetadatos}\r\n model={() => {\r\n return this.state.model\r\n }}\r\n />;\r\n } else {\r\n return this.state.tramite?.Props?.OnRenderRadicadoEntradaMetadata === '-'\r\n ? <>\r\n : <>\r\n {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n CustomMetadata: value\r\n }\r\n });\r\n }}\r\n sdk={{\r\n metadataService: this.#service.getTramiteMetadataAsync.bind(this.#service),\r\n getEntitiesService: this.#service.getContactEntitiesAsync.bind(this.#service),\r\n getCitiesService: this.#service.getAllCitiesAsync.bind(this.#service),\r\n getDepartmentsService: this.#service.getAllDepartmentsAsync.bind(this.#service),\r\n getCountriesService: this.#service.getAllCountriesAsync.bind(this.#service),\r\n getCategoryMetadataService: this.#service.getMetadataCategoryByNameAsync.bind(this.#service),\r\n getMetadataOptionsService: this.#service.getOptionsByIdMetadatoAsync.bind(this.#service),\r\n readExternalMetadataService: this.#service.readExternalMetadataAsync.bind(this.#service),\r\n executeCustomCodeService: this.#service.executeAsync.bind(this.#service),\r\n validateModel: validateObject.bind(this),\r\n showConfirmation: showConfirmation.bind(this),\r\n getValidator: (() => validator),\r\n DateTime: DateTime\r\n }}\r\n ref={o => this.#scriptComponentRef = o}\r\n />\r\n ;\r\n }\r\n }\r\n\r\n protected _changeStateTextField(property: string, value: string | number) {\r\n this.setState({\r\n ...(this.state as any),\r\n [ property ]: value\r\n });\r\n }\r\n\r\n private _onChangeCheckboxRiesgo(ev?: React.FormEvent, checked?: boolean): void {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n RepresentaRiesgo: checked\r\n }\r\n });\r\n }\r\n\r\n protected async _changeActuaEn(value?: IComboBoxOption): Promise {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n RadicaRepresentante: Number(value.key) === 1,\r\n }\r\n });\r\n }\r\n\r\n protected async _changePersonaDiscapacidad(value?: IComboBoxOption): Promise {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n SolicitanteConDiscapacidad: Number(value) === 1,\r\n }\r\n });\r\n }\r\n\r\n protected async _onChangeTramite(value: IComboBoxOption, customMetadata: IDictionary, mostrarPanel: boolean): Promise {\r\n\r\n const tramite: ITramite = this.#tramites.find(o => o.IdTramite === Number(value.key)) || defaultITramite();\r\n const isProcesox = tramite != null && tramite.Funcion != null && tramite.Funcion != '';\r\n\r\n const [ metadatos, clasificaciones, procesoxFunction ] = await Promise.all([\r\n this.#service.getTramiteMetadataAsync(Number(value.key)),\r\n tramite.IdTipoAsignacionTramite == TipoAsignacionTramiteEnum.Clasificacion ? this.#service.getClasificacionPQRSAsync(Number(value.key), this.contactTypeId) : [],\r\n isProcesox && !isNullOrEmpty(Sede.shared.procesoxUrl) ? this.#service.getProcesoxFunction(tramite.Componente) : new Promise(resolve => resolve({}))\r\n ]);\r\n\r\n let clasificacionesPQRS: IComboBoxOption[] = [];\r\n let showClasificacionPQRS: boolean = false;\r\n let keywordsDataSource: IComboBoxOption[] = [];\r\n this.#clasificaciones = clasificaciones;\r\n if (clasificaciones != null && clasificaciones.length > 0) {\r\n\r\n let allKeywords = new List(clasificaciones).Where(o => !isNullOrEmpty(o.PalabrasClave)).Select(o => o.PalabrasClave.trim().toUpperCase().split('|')).ToArray();\r\n let flatKeywords = allKeywords.reduce((accumulator, value) => accumulator.concat(value), []);\r\n keywordsDataSource = new List(flatKeywords).Distinct().OrderBy(o => o).ToArray().map(o => ({ key: o, text: o }));\r\n\r\n clasificacionesPQRS = clasificaciones.filter(o => (o.Activo && o.RegistroWeb)).map(o => ({ key: o.IdClasificacionPQRS, text: o.Nombre }));\r\n if (clasificacionesPQRS.length > 0) {\r\n showClasificacionPQRS = true;\r\n }\r\n }\r\n\r\n const renderScript = tramite.Props?.OnRenderRadicadoEntradaMetadata;\r\n if (tramite.Props != undefined) {\r\n tramite.Props.OnRenderRadicadoEntradaMetadata = '';\r\n }\r\n\r\n let entryPoint: CForm = null;\r\n if (GuidLegacy.IsValid(tramite.Props?.ProcesoxProjectId) && GuidLegacy.IsValid(tramite.Props?.ProcesoxFormVersionId)) {\r\n\r\n this.setState({ isProcesoxLoading: true });\r\n\r\n try {\r\n\r\n const page = await this.props.engine.getPageV2Async({ rootFormId: tramite.Props.ProcesoxFormVersionId });\r\n const values = this.state.model.CustomMetadata || {};\r\n\r\n entryPoint = await page.loadEntryPointV2Async({\r\n scope: 'virtual-office',\r\n connectors: [ this.#procesoxConnector, this.#parameterConnector ]\r\n });\r\n\r\n entryPoint.values = values;\r\n entryPoint.subscribe(() => {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n CustomMetadata: entryPoint.serializeValues()\r\n }\r\n });\r\n });\r\n\r\n } catch (error) {\r\n\r\n }\r\n }\r\n\r\n this.setState({\r\n metadatos,\r\n model: {\r\n ...this.state.model,\r\n IdTramite: Number(value.key),\r\n //Limpiar formulario\r\n Anexos: []\r\n },\r\n clasificacionesPQRS,\r\n showClasificacionPQRS,\r\n descripcionTramite: tramite.Descripcion,\r\n tramite,\r\n procesoxEntryPoint: entryPoint,\r\n keywordsDataSource,\r\n disclaimer: {\r\n show: mostrarPanel && this.props.mode !== CreatePqrComponentMode.anonymous,\r\n title: tramite.Nombre,\r\n text: tramite.Descripcion,\r\n isPersonalData: false\r\n },\r\n isProcesoxLoading: false\r\n }, () => {\r\n this.setState({\r\n procesoxFunction,\r\n tramite: {\r\n ...this.state.tramite,\r\n Props: {\r\n ...this.state.tramite.Props,\r\n OnRenderRadicadoEntradaMetadata: renderScript\r\n }\r\n },\r\n model: {\r\n ...this.state.model,\r\n CustomMetadata: customMetadata || {}\r\n }\r\n });\r\n this._onChangeClasificacionPQR({\r\n key: this.state.model.IdClasificacionPQRS\r\n , text: this.state.model.ClasificacionPQRS\r\n });\r\n });\r\n\r\n }\r\n\r\n protected async _onChangeClasificacionPQR(value: IComboBoxOption): Promise {\r\n\r\n const clasificacion: IClasificacionPQRS = { ...this.#clasificaciones.find(o => o.IdClasificacionPQRS === Number(value.key)) };\r\n\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n IdClasificacionPQRS: value.key,\r\n Seccion: clasificacion.SeccionUsuarioResponsable\r\n },\r\n showCampoOtro: clasificacion.HabilitarOtraClasificacionPQR\r\n });\r\n }\r\n\r\n private _onChangeMetadata(values: IValorMetadato[]): void {\r\n var customMetadata = {};\r\n\r\n for (let i = 0; i < values.length; i++) {\r\n if (values[ i ].Valor != undefined)\r\n customMetadata[ values[ i ].Codigo ] = values[ i ].Valor;\r\n }\r\n\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n ValoresMetadatos: values,\r\n CustomMetadata: customMetadata\r\n }\r\n });\r\n }\r\n\r\n private containsKeywords = (keywords: string[], itemKeyWords: string): boolean => {\r\n for (let i = 0; i < keywords.length; i++) {\r\n if (itemKeyWords.toUpperCase().includes(keywords[ i ].toUpperCase())) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private async _saveAsync(): Promise {\r\n\r\n let model = JSON.parse(JSON.stringify(this.state.model));\r\n model.Anonima = this.props.mode === CreatePqrComponentMode.anonymous;\r\n model.OficioRemisorio = void 0;\r\n model.ComprobanteEntrega = void 0;\r\n model.CopiasRadicadoEntrada = void 0;\r\n model.AnexosDescripcionDocumental = void 0;\r\n model.MetadatosAsociados = void 0;\r\n\r\n //Validar que el contacto tenga direccion\r\n if (model.PrefiereRespuestaFisica) {\r\n let direccion: string = sessionStorage.getItem('ioip.pqr-web.session.direccion');\r\n if (!direccion) {\r\n alert('Debe proporcionar una dirección de residencia para recibir respuesta física, por favor actualice sus datos y vuelva a intentarlo.');\r\n return;\r\n }\r\n }\r\n\r\n // Valida que exista el numero de salida para el aporte\r\n if (this.showNumeroRadicadoSalida && isNullOrEmpty(this.state.NumeroRadicadoSalida)) {\r\n alert('Por favor ingrese el número del radicado de salida a responder.');\r\n return;\r\n }\r\n\r\n // Validar campos del formulario\r\n let validations = {\r\n Asunto: [ validator.required(true), validator.maxLength(4096), validator.minLength(10) ],\r\n IdTramite: [ validator.invalid(0, 'Campo requerido') ]\r\n };\r\n\r\n if (this.state.showClasificacionPQRS) {\r\n validations[ 'IdClasificacionPQRS' ] = [ validator.invalid(0, 'Campo requerido') ];\r\n }\r\n\r\n if (this.state.showCampoOtro && isNullOrEmpty(this.state.model.OtroClasificacionPQR)) {\r\n alert('Por favor ingrese el campo Otro.');\r\n return;\r\n }\r\n\r\n if (model.Anonima) {\r\n if (!isNullOrEmpty(model.Email)) {\r\n validations[ 'Email' ] = [\r\n validator.maxLength(128),\r\n validator.email()\r\n ];\r\n }\r\n }\r\n else {\r\n if (Sede.shared.contactId > 0)\r\n model.idContacto = Sede.shared.contactId;\r\n }\r\n\r\n if (model.RadicaRepresentante && !model.DenuncianteAnonimo) {\r\n if (isNullOrEmpty(model.NombresApoderado) && isNullOrEmpty(model.ApellidosApoderado) && isNullOrEmpty(model.IdentificacionApoderado) && isNullOrEmpty(model.EmailApoderado)) {\r\n alert('Debe registrar al menos un dato del denunciante en caso de que no sea anónimo.')\r\n return;\r\n }\r\n validations[ 'IdTipoIdentificacionApoderado' ] = [ validator.custom(() => {\r\n const result = new ValidationResult();\r\n if (model.IdTipoIdentificacionApoderado === 0 && !isNullOrEmpty(model.IdentificacionApoderado)) {\r\n result.hasError = true;\r\n result.errorMessage = 'Campo requerido';\r\n return result;\r\n }\r\n return result;\r\n }) ];\r\n if (!isNullOrEmpty(model.EmailApoderado)) {\r\n validations[ 'EmailApoderado' ] = [ validator.email() ];\r\n }\r\n }\r\n\r\n const vMetadatos = this.state.tramite.Props?.OnRenderRadicadoEntradaMetadata\r\n ? this.#scriptComponentRef.isValid()\r\n : this.state.procesoxEntryPoint != null\r\n ? this.state.procesoxEntryPoint.validate()\r\n : this.state.tramite.IdTipoEjecucionGestionTramite === TipoEjecucionGestionTramiteEnum.Proceso\r\n ? this.state.functionHostValidator(this.state.model.CustomMetadata)\r\n : await this.#editorMetadatosComponent.validate();\r\n\r\n const isModelValid = validateObject(model, validations, (errors) => this.setState({ errors })) && vMetadatos;\r\n\r\n // Validar ProcesoX\r\n let vProcesoX = true;\r\n if (isModelValid && vProcesoX) {\r\n if (this.showNumeroRadicadoSalida) {\r\n model.IdRadicadoSalidaVinculado = await this._searchRSVinculadoAsync();\r\n if (model.IdRadicadoSalidaVinculado === 0) {\r\n return;\r\n }\r\n if (model.IdRadicadoSalidaVinculado === -1) {\r\n alert('El radicado de entrada principal no fue encontrado, por favor verifique que el número de radicado esté correcto.');\r\n return;\r\n }\r\n }\r\n\r\n const resultCaptcha = this.#recaptcha.isValid();\r\n if (resultCaptcha.isCaptchaValid === false) {\r\n this.setState({ errors: { recaptcha: 'Debe completar la validación de seguridad' } });\r\n return;\r\n }\r\n\r\n if (this.state.model.IdEstadoActual === EstadoRadicado.Borrador) {\r\n\r\n showConfirmation('Registrar petición', this.confirmMessage, async () => {\r\n const request = GuidLegacy.IsValid(this.sessionId)\r\n ? this.#service.completeAnonymousDraftAsync(this.sessionId, model, resultCaptcha.recaptchaToken)\r\n : this.#service.completeDraftAsync(model, resultCaptcha.recaptchaToken);\r\n ensureFetch(request, (response) => {\r\n if (model.Anonima)\r\n alert(`Su solicitud fue creada exitosamente. Para realizar la consulta del estado de la solicitud por favor guarde el número del radicado ${response.NumeroRadicado} y el código de consulta ${response.CodigoConsulta}`);\r\n else\r\n alert(`Radicado de entrada creado correctamente con número ${response.NumeroRadicado}.`);\r\n this._redirectToHome();\r\n })\r\n });\r\n\r\n } else {\r\n try {\r\n const result = GuidLegacy.IsValid(this.sessionId)\r\n ? await this.#service.saveAnonymousRadicadoEntradaDraftAsync(this.sessionId, model, resultCaptcha.recaptchaToken)\r\n : await this.#service.saveRadicadoEntradaDraftAsync(model, resultCaptcha.recaptchaToken);\r\n if (this.props.mode === CreatePqrComponentMode.authenticated) {\r\n window.location.reload();\r\n } else {\r\n window.location.href = `#/create-pqr/anonymous/0/${result.SessionId}`;\r\n window.location.reload();\r\n }\r\n } catch (ex) {\r\n const error = `Ocurrió un error : ${(ex as any).exceptionMessage}`;\r\n alert(error);\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n private async _searchRSVinculadoAsync(): Promise {\r\n let result: IRadicadoSalida[] = [];\r\n let request: { Numero: string; } = { Numero: '' };\r\n request.Numero = this.state.NumeroRadicadoSalida;\r\n result = (await this.#service.advanceSearchAsync(request)).filter(o => o.NumeroRadicado === request.Numero);\r\n if (result != undefined) {\r\n if (result.length === 0) {\r\n alert('El radicado de salida buscado no existe.');\r\n return 0;\r\n } else {\r\n switch (this.state.model.IdTramite) {\r\n case Number(TipoTramite.AporteAclaracion):\r\n if (result[ 0 ].IdTipoRespuestaPQRS != Number(TipoRespuestaPQRS.Aclaracion)) {\r\n alert('El radicado buscado no corresponde a una solicitud de aclaración.');\r\n result = [];\r\n }\r\n break;\r\n\r\n case Number(TipoTramite.AporteAmpliacion):\r\n if (result[ 0 ].IdTipoRespuestaPQRS != Number(TipoRespuestaPQRS.Ampliacion)) {\r\n alert('El radicado buscado no corresponde a una solicitud de ampliación.');\r\n result = [];\r\n }\r\n break;\r\n\r\n case Number(TipoTramite.AporteInformacion):\r\n if (result[ 0 ].IdTipoRespuestaPQRS != Number(TipoRespuestaPQRS.Informacion)) {\r\n alert('El radicado buscado no corresponde a una solicitud de información.');\r\n result = [];\r\n }\r\n break;\r\n\r\n default:\r\n result = [];\r\n alert('El radicado buscado no está en un estado autorizado para recibir aportes.');\r\n break;\r\n }\r\n if (result.length === 1) {\r\n return result[ 0 ].IdRadicadoSalida;\r\n }\r\n return 0;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n public componentWillUnmount() {\r\n\r\n }\r\n\r\n private async _getTokenB2C() {\r\n\r\n if (this.#authProvider !== undefined) {\r\n if (this.#authProvider.authenticationState == AuthenticationState.Authenticated) {\r\n const token = await this.#authProvider.getIdToken();\r\n if (token !== undefined)\r\n sessionStorage.setItem('ioip.pqr-web.session.token', token.idToken.rawIdToken);\r\n }\r\n }\r\n }\r\n\r\n componentDidCatch() {\r\n console.log('Error');\r\n }\r\n\r\n}\r\n\r\nconst CrearSolicitudComponent = (props: ICrearSolicitudComponentProps): JSX.Element => {\r\n\r\n const engine = useProcesox();\r\n const { tramiteId } = useParams();\r\n\r\n return \r\n\r\n}\r\n\r\nexport default CrearSolicitudComponent;","export enum AtencionPreferencialEnum {\r\n Discapacidad = 3,\r\n GrupoEtnico = 8\r\n}","export function onFormatDate(date: Date): string {\r\n\r\n if (typeof (date) === 'string') {\r\n date = new Date(date);\r\n }\r\n \r\n let day = String(date.getDate());\r\n day = day.length === 1 ? '0' + day : day;\r\n \r\n let month = String(date.getMonth() + 1);\r\n month = month.length === 1 ? '0' + month : month;\r\n \r\n if (typeof (date) === 'object') {\r\n return day + '/' + month + '/' + (date.getFullYear());\r\n } else {\r\n return date;\r\n }\r\n };","import { IContacto, defaultIContacto } from \"../ioip/sdk/base\";\r\n\r\nexport interface IContactoExtended extends IContacto {\r\n //AutorizaTratamientoDatosPersonales: boolean;\r\n IdPreguntaSecreta: number;\r\n Password: string;\r\n Password2: string;\r\n RespuestaSecreta: string;\r\n Email2: string;\r\n PrimerNombre: string;\r\n SegundoNombre: string;\r\n PrimerApellido: string;\r\n SegundoApellido: string;\r\n IdTipoSolicitante?: number;\r\n}\r\n\r\n\r\nexport function defaultIContactoExtended(): IContactoExtended {\r\n return {\r\n ...defaultIContacto(),\r\n //AutorizaTratamientoDatosPersonales: false,\r\n IdPreguntaSecreta: 0,\r\n Password: '',\r\n Password2: '',\r\n RespuestaSecreta: '',\r\n Email2: '',\r\n PrimerNombre: '',\r\n SegundoNombre: '',\r\n PrimerApellido: '',\r\n SegundoApellido: ''\r\n }\r\n}","import { ITipoIdentificacion, ITipoPersona } from \"../../ioip/sdk/base\";\r\nimport { defaultIContactoExtended, IContactoExtended } from \"../../classes/contacto-extended\";\r\nimport { IChoiceGroupOption, IComboBoxOption } from \"@fluentui/react\";\r\nimport { ICity, ICountry, IDepartment } from \"@ioip/archivox/lib\";\r\n\r\nexport interface ICreateContactComponentState {\r\n model: IContactoExtended;\r\n errors: { [ key: string ]: string };\r\n isSaving: boolean;\r\n autorizaTratamientoDatosPersonales: boolean;\r\n autorizaPoliticaPrivacidad: boolean;\r\n tiposIdentificacion: ITipoIdentificacion[];\r\n tiposIdentificacionCO: IComboBoxOption[];\r\n tiposIdentificacionCOApoderado: IComboBoxOption[];\r\n paises: ICountry[];\r\n paisesCO: IComboBoxOption[];\r\n departamentos: IDepartment[];\r\n departamentosCO: IComboBoxOption[];\r\n ciudades: ICity[];\r\n ciudadesCO: IComboBoxOption[];\r\n preguntas: IComboBoxOption[];\r\n generos: IComboBoxOption[];\r\n gruposEtnicos: IComboBoxOption[];\r\n discapacidades: IComboBoxOption[];\r\n atencionPreferencial: IComboBoxOption[];\r\n tiposPersona: ITipoPersona[];\r\n tiposPersonaCO: IComboBoxOption[];\r\n nivelEducativo: IComboBoxOption[];\r\n profesiones: IComboBoxOption[];\r\n mostrarProfesion: boolean;\r\n tiposSolicitante: IComboBoxOption[];\r\n mostrarTipoSolicitante: boolean;\r\n mostrarPanelPoliticaDatos: boolean;\r\n opcionesSeleccionGrupo: IChoiceGroupOption[];\r\n}\r\n\r\nexport function defaultCreateContactComponentState(): ICreateContactComponentState {\r\n return {\r\n model: defaultIContactoExtended(),\r\n errors: {},\r\n isSaving: false,\r\n autorizaPoliticaPrivacidad: false,\r\n autorizaTratamientoDatosPersonales: false,\r\n ciudades: [],\r\n ciudadesCO: [],\r\n departamentos: [],\r\n departamentosCO: [],\r\n paises: [],\r\n paisesCO: [],\r\n tiposIdentificacion: [],\r\n tiposIdentificacionCO: [],\r\n tiposIdentificacionCOApoderado: [],\r\n preguntas: [],\r\n generos: [],\r\n gruposEtnicos: [],\r\n discapacidades: [],\r\n atencionPreferencial: [],\r\n tiposPersona: [],\r\n tiposPersonaCO: [],\r\n nivelEducativo: [],\r\n profesiones: [],\r\n mostrarProfesion: true,\r\n tiposSolicitante: [],\r\n mostrarTipoSolicitante: false,\r\n mostrarPanelPoliticaDatos: true,\r\n opcionesSeleccionGrupo: [\r\n {\r\n key: '0',\r\n text: 'No',\r\n },\r\n {\r\n key: '1',\r\n text: 'Sí',\r\n }\r\n ],\r\n }\r\n}","export enum TipoIdentificacionEnum {\r\n CedulaCiudadania = 1,\r\n Nit = 2,\r\n RegistroCivil = 3,\r\n CedulaExtranjeria = 4,\r\n TarjetaIdentidad = 5,\r\n Otro = 6\r\n}","export enum TipoPersonaEnum {\r\n PersonaNatural = 1,\r\n PersonaJuridica = 2\r\n}","import { Checkbox, ComboBox, DatePicker, DayOfWeek, DefaultButton, IComboBoxOption, PrimaryButton, TextField } from \"@fluentui/react\";\r\nimport { ICountry } from '@ioip/archivox/lib';\r\nimport React from 'react';\r\nimport { Sede } from '../../classes/shared';\r\nimport { AtencionPreferencialEnum } from '../../classes/shared/atencion-preferencias.enum';\r\nimport { onFormatDate } from '../../classes/shared/utilities';\r\nimport { DatePickerStrings, INivelEducativo, IProfesion, ITipoIdentificacion, ITipoPersona, ITipoSolicitante, validateObject, ValidationResult, validator } from '../../ioip/sdk/base';\r\nimport { NumberTextField } from '../../ioip/sdk/components';\r\nimport { PqrWebService } from '../../services/services';\r\nimport { ReCaptchaComponent } from '../recaptcha/ReCaptchaComponent';\r\nimport { ICreateContactComponentProps } from './create-contact.props';\r\nimport { defaultCreateContactComponentState, ICreateContactComponentState } from './create-contact.state';\r\nimport { TipoIdentificacionEnum } from './tipo-identificacion-enum';\r\nimport { TipoPersonaEnum } from './tipo-persona-enum';\r\n\r\nexport class CreateContactNewUserComponent extends React.Component {\r\n\r\n private _recaptcha: ReCaptchaComponent;\r\n private _pqrWebService: PqrWebService;\r\n private _validations: { [ key: string ]: any[] } = {\r\n IdTipoPersona: [ validator.invalid(0, 'Campo requerido') ],\r\n IdTipoIdentificacion: [ validator.invalid(0, 'Campo requerido') ],\r\n Identificacion: [ validator.required(true), validator.maxLength(128) ],\r\n Nombres: [ validator.required(true), validator.maxLength(128) ],\r\n Apellidos: [ validator.required(true), validator.maxLength(128) ],\r\n Direccion: [ validator.required(true), validator.maxLength(128) ],\r\n Barrio: [ validator.maxLength(100) ],\r\n Telefono: [ validator.maxLength(20) ],\r\n Extension: [ validator.maxLength(15) ],\r\n Celular: [ validator.maxLength(20) ],\r\n Email: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.email(),\r\n validator.custom(this._checkEmail.bind(this))\r\n ],\r\n Email2: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.email(),\r\n validator.custom(this._checkEmail.bind(this))\r\n ],\r\n IdCiudad: [ validator.invalid(0, 'Campo requerido') ],\r\n IdDepartamento: [ validator.invalid(0, 'Campo requerido') ],\r\n IdPais: [ validator.invalid(0, 'Campo requerido') ],\r\n //IdPreguntaSecreta: [ validator.invalid(0, 'Campo requerido') ],\r\n ///RespuestaSecreta: [ validator.required(true), validator.maxLength(128) ],\r\n Password: [\r\n validator.required(true),\r\n validator.maxLength(16),\r\n validator.custom(this._checkPassword.bind(this))\r\n ],\r\n Password2: [\r\n validator.required(true),\r\n validator.maxLength(16),\r\n validator.custom(this._checkPassword.bind(this))\r\n ]\r\n };\r\n\r\n private _validationJuridica: { [ key: string ]: any[] } = {\r\n NombreRepresentante: [ validator.required(true), validator.maxLength(128) ],\r\n EmailRepresentante: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.email() ],\r\n CargoRepresentante: [ validator.required(true), validator.maxLength(128) ],\r\n Telefono: [ validator.required(true), validator.maxLength(20) ],\r\n TelefonoRepresentante: [ validator.required(true), validator.maxLength(20) ],\r\n };\r\n\r\n private _validationNatural: { [ key: string ]: any[] } = {\r\n PrimerNombre: [ validator.required(true), validator.maxLength(64) ],\r\n PrimerApellido: [ validator.required(true), validator.maxLength(64) ]\r\n };\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = defaultCreateContactComponentState();\r\n this._pqrWebService = new PqrWebService();\r\n this._recaptcha = (null as any);\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n const result = await Promise.all([\r\n this._pqrWebService.getAllCountriesAsync(),\r\n this._pqrWebService.getAllDepartmentsAsync(),\r\n this._pqrWebService.getAllCitiesAsync(),\r\n this._pqrWebService.getAllIdentificationTypesAsync(),\r\n this._pqrWebService.getAllQuestionsAsync(),\r\n this._pqrWebService.getAllPreferentialCareTypesAsync(),\r\n this._pqrWebService.getAllDisabilitiesAsync(),\r\n this._pqrWebService.getAllGendersAsync(),\r\n this._pqrWebService.getAllEthnicGroupsAsync(),\r\n this._pqrWebService.getAllPersonTypesAsync()\r\n ]) as any;\r\n\r\n const [ educationLevels, professions, applicantTypes ] = await Promise.all([\r\n this._pqrWebService.getAllEducationLevelsAsync(),\r\n this._pqrWebService.getAllProfessionsAsync(),\r\n this._pqrWebService.getAllApplicantTypeAsync()\r\n ]) as any;\r\n\r\n this.setState({\r\n paises: result[ 0 ],\r\n paisesCO: result[ 0 ].map((o: ICountry) => ({ key: o.countryId, text: o.name })),\r\n departamentos: result[ 1 ],\r\n departamentosCO: [],\r\n ciudades: result[ 2 ],\r\n ciudadesCO: [],\r\n tiposIdentificacion: result[ 3 ],\r\n tiposIdentificacionCO: result[ 3 ].map((o: ITipoIdentificacion) => ({ key: o.IdTipoIdentificacion, text: o.Nombre })),\r\n preguntas: result[ 4 ].filter(o => o.Activo).map(o => ({ key: o.IdPreguntaSecreta, text: o.Nombre })),\r\n atencionPreferencial: result[ 5 ].filter(o => o.Activo).map(o => ({ key: o.IdAntencionPreferencial, text: o.Nombre })),\r\n discapacidades: result[ 6 ].filter(o => o.Activo).map(o => ({ key: o.IdDiscapacidad, text: o.Nombre })),\r\n generos: result[ 7 ].filter(o => o.Activo).map(o => ({ key: o.IdGenero, text: o.Nombre })),\r\n gruposEtnicos: result[ 8 ].filter(o => o.Activo).map(o => ({ key: o.IdGrupoEtnico, text: o.Nombre })),\r\n tiposPersona: result[ 9 ],\r\n tiposPersonaCO: result[ 9 ].map((o: ITipoPersona) => ({ key: o.IdTipoPersona, text: o.Nombre })),\r\n nivelEducativo: educationLevels.filter(o => o.Activo).map((o: INivelEducativo) => ({ key: o.IdNivelEducativo, text: o.Nombre })),\r\n profesiones: professions.filter(o => o.Activo).map((o: IProfesion) => ({ key: o.IdProfesion, text: o.Nombre })),\r\n mostrarProfesion: Sede.shared.context.EnableContactProfession,\r\n mostrarTipoSolicitante: Sede.shared.context.EnableContactRequesterType,\r\n tiposSolicitante: applicantTypes.filter(o => o.Activo).map((o: ITipoSolicitante) => ({ key: o.IdTipoSolicitante, text: o.Nombre }))\r\n });\r\n }\r\n\r\n render(): JSX.Element {\r\n\r\n const value = this.state.tiposIdentificacion.find(o => o.IdTipoIdentificacion === this.state.model.IdTipoIdentificacion);\r\n const emailLabel = value?.IdTipoPersona === 2 ? 'Correo electrónico para notificaciones' : 'Correo electrónico';\r\n const confirmEmailLabel = value?.IdTipoPersona === 2 ? 'Confirmar correo electrónico para notificaciones' : 'Confirmar correo electrónico';\r\n\r\n return
      \r\n
      \r\n
      \r\n

      Registrar usuario

      \r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeComboBox('IdTipoPersona', value)}\r\n options={this.state.tiposPersonaCO}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n errorMessage={this.state.errors[ 'IdTipoPersona' ]} />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeComboBox('IdTipoIdentificacion', value)}\r\n options={this.state.tiposIdentificacionCO}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n errorMessage={this.state.errors[ 'IdTipoIdentificacion' ]}\r\n />\r\n
      \r\n {((this.state.model.IdTipoIdentificacion) === TipoIdentificacionEnum.Nit) &&\r\n
      \r\n this._onChangeTextField('Identificacion', value)}\r\n errorMessage={this.state.errors[ 'Identificacion' ]}\r\n value={this.state.model.Identificacion}\r\n />\r\n
      \r\n }\r\n {(this.state.model.IdTipoIdentificacion !== TipoIdentificacionEnum.Nit) &&\r\n
      \r\n this._onChangeTextField('Identificacion', value)}\r\n errorMessage={this.state.errors[ 'Identificacion' ]}\r\n value={this.state.model.Identificacion}\r\n />\r\n
      \r\n }\r\n
      \r\n {((this.state.model.IdTipoPersona) === TipoPersonaEnum.PersonaNatural) &&\r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('PrimerNombre', value)}\r\n errorMessage={this.state.errors[ 'PrimerNombre' ]}\r\n value={this.state.model.PrimerNombre}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('SegundoNombre', value)}\r\n errorMessage={this.state.errors[ 'SegundoNombre' ]}\r\n value={this.state.model.SegundoNombre}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('PrimerApellido', value)}\r\n errorMessage={this.state.errors[ 'PrimerApellido' ]}\r\n value={this.state.model.PrimerApellido}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('SegundoApellido', value)}\r\n errorMessage={this.state.errors[ 'SegundoApellido' ]}\r\n value={this.state.model.SegundoApellido}\r\n />\r\n
      \r\n
      \r\n
      \r\n }\r\n\r\n {((this.state.model.IdTipoPersona) === TipoPersonaEnum.PersonaJuridica) &&\r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('Nombres', value)}\r\n errorMessage={this.state.errors[ 'Nombres' ]}\r\n value={this.state.model.Nombres}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('NombreRepresentante', value)}\r\n errorMessage={this.state.errors[ 'NombreRepresentante' ]}\r\n value={this.state.model.NombreRepresentante}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('EmailRepresentante', value)}\r\n errorMessage={this.state.errors[ 'EmailRepresentante' ]}\r\n value={this.state.model.EmailRepresentante}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('CargoRepresentante', value)}\r\n errorMessage={this.state.errors[ 'CargoRepresentante' ]}\r\n value={this.state.model.CargoRepresentante}\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._onChangeTextField('Direccion', value)}\r\n errorMessage={this.state.errors[ 'Direccion' ]}\r\n value={this.state.model.Direccion}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('Barrio', value)}\r\n errorMessage={this.state.errors[ 'Barrio' ]}\r\n value={this.state.model.Barrio}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeComboBox('IdPais', value)}\r\n options={this.state.paisesCO}\r\n required={true}\r\n useComboBoxAsMenuWidth={true}\r\n errorMessage={this.state.errors[ 'IdPais' ]}\r\n />\r\n
      \r\n
      \r\n this._onChangeComboBox('IdDepartamento', value)}\r\n options={this.state.departamentosCO}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n errorMessage={this.state.errors[ 'IdDepartamento' ]}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeComboBox('IdCiudad', value)}\r\n options={this.state.ciudadesCO}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n errorMessage={this.state.errors[ 'IdCiudad' ]}\r\n />\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \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._onChangeTextField('Email', value)}\r\n errorMessage={this.state.errors[ 'Email' ]}\r\n value={this.state.model.Email}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('Email2', value)}\r\n errorMessage={this.state.errors[ 'Email2' ]}\r\n value={this.state.model.Email2}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('Password', value)}\r\n errorMessage={this.state.errors[ 'Password' ]}\r\n value={this.state.model.Password}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('Password2', value)}\r\n errorMessage={this.state.errors[ 'Password2' ]}\r\n value={this.state.model.Password2}\r\n />\r\n
      \r\n
      \r\n {/*
      \r\n
      \r\n this._onChangeComboBox('IdPreguntaSecreta', value)}\r\n options={this.state.preguntas}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n errorMessage={this.state.errors[ 'IdPreguntaSecreta' ]}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('RespuestaSecreta', value)}\r\n errorMessage={this.state.errors[ 'RespuestaSecreta' ]}\r\n value={this.state.model.RespuestaSecreta}\r\n />\r\n
      \r\n
      */}\r\n\r\n\r\n\r\n {this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural &&\r\n
      \r\n
      \r\n
      \r\n this._onChangeComboBox('IdGenero', value)}\r\n options={this.state.generos}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeComboBox('IdAntencionPreferencial', value)}\r\n options={this.state.atencionPreferencial}\r\n useComboBoxAsMenuWidth={true}\r\n errorMessage={this.state.errors[ 'IdAntencionPreferencial' ]}\r\n />\r\n
      \r\n
      \r\n this._onChangeComboBox('IdNivelEducativo', value)}\r\n options={this.state.nivelEducativo}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n
      \r\n
      \r\n
      \r\n {\r\n this.state.mostrarProfesion &&\r\n
      \r\n this._onChangeComboBox('IdProfesion', value)}\r\n options={this.state.profesiones}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n
      \r\n }\r\n
      \r\n
      \r\n {\r\n this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.Discapacidad &&\r\n
      \r\n this._onChangeComboBox('IdDiscapacidad', value)}\r\n options={this.state.discapacidades}\r\n useComboBoxAsMenuWidth={true}\r\n required={this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.Discapacidad}\r\n errorMessage={this.state.errors[ 'IdDiscapacidad' ]}\r\n />\r\n
      \r\n }\r\n {\r\n this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.GrupoEtnico &&\r\n
      \r\n this._onChangeComboBox('IdGrupoEtnico', value)}\r\n options={this.state.gruposEtnicos}\r\n useComboBoxAsMenuWidth={true}\r\n required={this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.GrupoEtnico}\r\n errorMessage={this.state.errors[ 'IdGrupoEtnico' ]}\r\n />\r\n
      \r\n }\r\n
      \r\n
      \r\n }\r\n\r\n {\r\n this.state.mostrarTipoSolicitante &&\r\n
      \r\n
      \r\n this._onChangeComboBox('IdTipoSolicitante', value)}\r\n options={this.state.tiposSolicitante}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n
      \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._recaptcha = x} />\r\n {this.state.errors[ 'recaptcha' ]}\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n   \r\n \r\n
      \r\n
      \r\n
      \r\n }\r\n\r\n protected _onChangeModel(model: any): void { }\r\n\r\n protected _OnChangeModelDate(property: string, date: Date | null | undefined): void {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n [ property ]: date\r\n }\r\n });\r\n this._onChangeModel({\r\n ...(this.state.model as any),\r\n [ property ]: date\r\n });\r\n };\r\n\r\n protected _changeModelCheckBox(property: string, ev?: React.FormEvent, checked?: boolean): void {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n [ property ]: checked\r\n }\r\n });\r\n }\r\n\r\n private _updateErrors(errors: { [ key: string ]: string }): void {\r\n this.setState({ errors });\r\n }\r\n\r\n private async _saveAsync(): Promise {\r\n if (this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural) {\r\n this.state.model.Nombres = this.state.model.PrimerNombre + ' ' + this.state.model.SegundoNombre;\r\n this.state.model.Apellidos = this.state.model.PrimerApellido + ' ' + this.state.model.SegundoApellido;\r\n }\r\n else {\r\n this.state.model.Apellidos = this.state.model.NombreRepresentante;\r\n }\r\n let validations: { [ key: string ]: any[] };\r\n if (this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural) {\r\n let _validationAtencionPreferencial: { [ key: string ]: any[] } = {};\r\n let _validationIdentity: { [ key: string ]: any[] } = {};\r\n\r\n if (this.state.model.IdTipoIdentificacion === TipoIdentificacionEnum.CedulaCiudadania) {\r\n _validationIdentity = {\r\n Identificacion: [ validator.required(true), validator.identity(), validator.maxLength(20) ]\r\n };\r\n }\r\n\r\n if (this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.Discapacidad) {\r\n _validationAtencionPreferencial = {\r\n IdDiscapacidad: [ validator.invalid(0, 'Campo requerido') ]\r\n };\r\n }\r\n else if (this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.GrupoEtnico) {\r\n _validationAtencionPreferencial = {\r\n IdGrupoEtnico: [ validator.invalid(0, 'Campo requerido') ]\r\n };\r\n }\r\n validations = { ...this._validations, ...this._validationNatural, ..._validationAtencionPreferencial, ..._validationIdentity }\r\n }\r\n else {\r\n validations = { ...this._validations, ...this._validationJuridica }\r\n }\r\n\r\n if (validateObject(this.state.model, validations, this._updateErrors.bind(this))) {\r\n try {\r\n const model = this.state.model;\r\n model.Cargo = void 0;\r\n model.Ciudad = void 0;\r\n model.Departamento = void 0;\r\n model.Pais = void 0;\r\n model.TipoContacto = void 0;\r\n model.TipoIdentificacion = void 0;\r\n if (model.AutorizaTratamientoDatos === false) {\r\n alert('Para continúar el registro debe autorizar el tratamiento de datos personales');\r\n return;\r\n }\r\n const resultCaptcha = this._recaptcha.isValid();\r\n if (resultCaptcha.isCaptchaValid === false) {\r\n alert('Debe completar la validación de seguridad');\r\n return;\r\n }\r\n\r\n this.setState({ isSaving: true });\r\n await this._pqrWebService.createContactAsync(model, resultCaptcha.recaptchaToken);\r\n this.setState({ isSaving: false });\r\n alert(`Se ha enviado a su dirección de correo registrado un enlace, por favor ingresar para activar la cuenta`);\r\n window.location.href = '#/home';\r\n } catch (ex) {\r\n alert('Ya existe un contacto con la misma identificación, para obtener la contraseña ingrese a la opción Olvidé mi contraseña');\r\n }\r\n }\r\n }\r\n\r\n private _checkPassword(): ValidationResult {\r\n const result: ValidationResult = new ValidationResult();\r\n if (this.state.model.Password !== this.state.model.Password2) {\r\n result.hasError = true;\r\n result.errorMessage = 'Las constraseñas establecidas no coinciden';\r\n }\r\n return result;\r\n }\r\n\r\n private _checkEmail(): ValidationResult {\r\n const result: ValidationResult = new ValidationResult();\r\n if (this.state.model.Email.toLowerCase() != this.state.model.Email2.toLowerCase()) {\r\n result.hasError = true;\r\n result.errorMessage = 'Las direcciones de correo electrónico no coinciden';\r\n }\r\n return result;\r\n }\r\n\r\n private async _onChangeComboBox(property: string, option?: IComboBoxOption, index?: number, value?: string, submitPendingValueEvent?: any): Promise {\r\n const state = {\r\n ...this.state,\r\n model: {\r\n ...this.state.model,\r\n [ property ]: Number(option.key)\r\n }\r\n };\r\n\r\n if (property === 'IdTipoPersona') {\r\n let result = await this._pqrWebService.getIdentificationTypesByIdPersonaAsync(Number(option.key));\r\n state.tiposIdentificacionCO = result.map((o: ITipoIdentificacion) => ({ key: o.IdTipoIdentificacion, text: o.Nombre }));\r\n\r\n if (state.mostrarTipoSolicitante === true) {\r\n let resultTiposSolicitante = await this._pqrWebService.getAllApplicantTypeAsync();\r\n state.tiposSolicitante = resultTiposSolicitante.filter(o => o.Activo && o.IdTipoPersona === Number(option.key)).map((o: ITipoSolicitante) => ({ key: o.IdTipoSolicitante, text: o.Nombre }))\r\n }\r\n }\r\n\r\n if (property === 'IdTipoIdentificacion') {\r\n if (Number(option.key) === TipoIdentificacionEnum.TarjetaIdentidad) {\r\n let result = await this._pqrWebService.getChildGendersAsync();\r\n state.generos = result.map(o => ({ key: o.IdGenero, text: o.Nombre }));\r\n }\r\n else {\r\n let result = await this._pqrWebService.getAllGendersAsync();\r\n state.generos = result.map(o => ({ key: o.IdGenero, text: o.Nombre }));\r\n }\r\n }\r\n\r\n if (property === 'IdPais') {\r\n state.departamentosCO = state.departamentos.filter(o => o.countryId === Number(option.key)).map(o => ({ key: o.departmentId, text: o.name }));\r\n }\r\n\r\n if (property === 'IdDepartamento') {\r\n state.ciudadesCO = state.ciudades.filter(o => o.departmentId === Number(option.key)).map(o => ({ key: o.cityId, text: o.name }));\r\n }\r\n\r\n this.setState(state);\r\n\r\n }\r\n\r\n private _onChangeTextField(property: string, value: string): void {\r\n const state = {\r\n model: {\r\n ...this.state.model,\r\n [ property ]: value\r\n }\r\n };\r\n this.setState(state);\r\n }\r\n\r\n private _onChangeNumberTextField(property: string, value: number): void {\r\n const state = {\r\n model: {\r\n ...this.state.model,\r\n [ property ]: value.toString()\r\n }\r\n };\r\n this.setState(state);\r\n }\r\n\r\n}","import * as React from 'react';\nimport { Image } from '../../../Image';\nimport { Icon } from '../../../Icon';\nimport {\n classNamesFunction,\n getNativeProps,\n inputProperties,\n css,\n composeRenderFunction,\n getPropsWithDefaults,\n} from '../../../Utilities';\nimport type {\n IChoiceGroupOptionProps,\n IChoiceGroupOptionStyleProps,\n IChoiceGroupOptionStyles,\n} from './ChoiceGroupOption.types';\n\nconst getClassNames = classNamesFunction();\n\nconst LARGE_IMAGE_SIZE = 71;\n\nconst DEFAULT_PROPS: Partial = {\n // This ensures default imageSize value doesn't mutate. Mutation can cause style re-calcuation.\n imageSize: { width: 32, height: 32 },\n};\n\nexport const ChoiceGroupOptionBase: React.FunctionComponent = propsWithoutDefaults => {\n // Mix the `key` prop back in since custom render functions may be expecting it\n // (React uses `key` internally rather than passing it through to the component)\n const props = getPropsWithDefaults({ ...DEFAULT_PROPS, key: propsWithoutDefaults.itemKey }, propsWithoutDefaults);\n\n const {\n ariaLabel,\n focused,\n required,\n theme,\n iconProps,\n imageSrc,\n imageSize,\n disabled,\n checked,\n id,\n styles,\n name,\n ...rest\n } = props;\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n hasIcon: !!iconProps,\n hasImage: !!imageSrc,\n checked,\n disabled,\n imageIsLarge: !!imageSrc && (imageSize!.width > LARGE_IMAGE_SIZE || imageSize!.height > LARGE_IMAGE_SIZE),\n imageSize,\n focused,\n });\n\n const { className, ...nativeProps } = getNativeProps<{ className: string }>(rest, inputProperties);\n\n const defaultOnRenderLabel = (): JSX.Element => {\n return (\n \n {props.text}\n \n );\n };\n\n const defaultOnRenderField = (): JSX.Element => {\n const { imageAlt = '', selectedImageSrc } = props;\n\n const onRenderLabel = props.onRenderLabel\n ? composeRenderFunction(props.onRenderLabel, defaultOnRenderLabel)\n : defaultOnRenderLabel;\n\n const label = onRenderLabel({ ...props, key: props.itemKey });\n\n return (\n \n );\n };\n\n const { onRenderField = defaultOnRenderField } = props;\n\n const onChange = (evt: React.FormEvent): void => {\n props.onChange?.(evt, { ...props, key: props.itemKey });\n };\n\n const onBlur = (evt: React.FocusEvent) => {\n props.onBlur?.(evt);\n };\n\n const onFocus = (evt: React.FocusEvent) => {\n props.onFocus?.(evt, { ...props, key: props.itemKey });\n };\n\n return (\n
      \n
      \n \n {onRenderField({ ...props, key: props.itemKey }, defaultOnRenderField)}\n
      \n
      \n );\n};\nChoiceGroupOptionBase.displayName = 'ChoiceGroupOption';\n","import { HighContrastSelector, getGlobalClassNames, getHighContrastNoAdjustStyle } from '../../../Styling';\nimport { IsFocusVisibleClassName } from '../../../Utilities';\nimport type { IStyle } from '../../../Styling';\nimport type { IChoiceGroupOptionStyleProps, IChoiceGroupOptionStyles } from './ChoiceGroupOption.types';\n\nconst GlobalClassNames = {\n root: 'ms-ChoiceField',\n choiceFieldWrapper: 'ms-ChoiceField-wrapper',\n input: 'ms-ChoiceField-input',\n field: 'ms-ChoiceField-field',\n innerField: 'ms-ChoiceField-innerField',\n imageWrapper: 'ms-ChoiceField-imageWrapper',\n iconWrapper: 'ms-ChoiceField-iconWrapper',\n labelWrapper: 'ms-ChoiceField-labelWrapper',\n checked: 'is-checked',\n};\n\nconst labelWrapperLineHeight = 15;\nconst labelWrapperHeight = labelWrapperLineHeight * 2 + 2; // adding 2px height to ensure text doesn't get cutoff\nconst iconSize = 32;\nconst choiceFieldSize = 20;\nconst choiceFieldTransitionDuration = '200ms';\nconst choiceFieldTransitionTiming = 'cubic-bezier(.4, 0, .23, 1)';\nconst radioButtonSpacing = 3;\nconst radioButtonInnerSize = 5;\n\nfunction getChoiceGroupFocusStyle(focusBorderColor: string, hasIconOrImage?: boolean): IStyle {\n return [\n 'is-inFocus',\n {\n selectors: {\n [`.${IsFocusVisibleClassName} &`]: {\n position: 'relative',\n outline: 'transparent',\n selectors: {\n '::-moz-focus-inner': {\n border: 0,\n },\n ':after': {\n content: '\"\"',\n top: -2,\n right: -2,\n bottom: -2,\n left: -2,\n pointerEvents: 'none',\n border: `1px solid ${focusBorderColor}`,\n position: 'absolute',\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'WindowText',\n borderWidth: hasIconOrImage ? 1 : 2,\n },\n },\n },\n },\n },\n },\n },\n ];\n}\n\nfunction getImageWrapperStyle(isSelectedImageWrapper: boolean, className?: string, checked?: boolean): IStyle {\n return [\n className,\n {\n paddingBottom: 2,\n transitionProperty: 'opacity',\n transitionDuration: choiceFieldTransitionDuration,\n transitionTimingFunction: 'ease',\n selectors: {\n '.ms-Image': {\n display: 'inline-block',\n borderStyle: 'none',\n },\n },\n },\n (checked ? !isSelectedImageWrapper : isSelectedImageWrapper) && [\n 'is-hidden',\n {\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n opacity: 0,\n },\n ],\n ];\n}\n\nexport const getStyles = (props: IChoiceGroupOptionStyleProps): IChoiceGroupOptionStyles => {\n const { theme, hasIcon, hasImage, checked, disabled, imageIsLarge, focused, imageSize } = props;\n const { palette, semanticColors, fonts } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n // Tokens\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.smallInputBorder\n const circleBorderColor = palette.neutralPrimary;\n const circleHoveredBorderColor = semanticColors.inputBorderHovered;\n const circleCheckedBorderColor = semanticColors.inputBackgroundChecked;\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.inputBackgroundCheckedHovered\n const circleCheckedHoveredBorderColor = palette.themeDark;\n const circleDisabledBorderColor = semanticColors.disabledBodySubtext;\n const circleBackgroundColor = semanticColors.bodyBackground;\n const dotUncheckedHoveredColor = palette.neutralSecondary;\n const dotCheckedColor = semanticColors.inputBackgroundChecked;\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.inputBackgroundCheckedHovered\n const dotCheckedHoveredColor = palette.themeDark;\n const dotDisabledColor = semanticColors.disabledBodySubtext;\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.bodyTextChecked\n const labelHoverFocusColor = palette.neutralDark;\n const focusBorderColor = semanticColors.focusBorder;\n const iconOrImageChoiceBorderUncheckedHoveredColor = semanticColors.inputBorderHovered;\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.inputBackgroundCheckedHovered\n const iconOrImageChoiceBorderCheckedColor = semanticColors.inputBackgroundChecked;\n const iconOrImageChoiceBorderCheckedHoveredColor = palette.themeDark;\n const iconOrImageChoiceBackgroundColor = palette.neutralLighter;\n\n const fieldHoverOrFocusProperties = {\n selectors: {\n '.ms-ChoiceFieldLabel': {\n color: labelHoverFocusColor,\n },\n ':before': {\n borderColor: checked ? circleCheckedHoveredBorderColor : circleHoveredBorderColor,\n },\n ':after': [\n !hasIcon &&\n !hasImage &&\n !checked && {\n content: '\"\"',\n transitionProperty: 'background-color',\n left: 5,\n top: 5,\n width: 10,\n height: 10,\n backgroundColor: dotUncheckedHoveredColor,\n },\n checked && {\n borderColor: dotCheckedHoveredColor,\n background: dotCheckedHoveredColor,\n },\n ],\n },\n };\n\n const enabledFieldWithImageHoverOrFocusProperties = {\n borderColor: checked ? iconOrImageChoiceBorderCheckedHoveredColor : iconOrImageChoiceBorderUncheckedHoveredColor,\n selectors: {\n ':before': {\n opacity: 1,\n borderColor: checked ? circleCheckedHoveredBorderColor : circleHoveredBorderColor,\n },\n },\n };\n\n const circleAreaProperties: IStyle = [\n {\n content: '\"\"',\n display: 'inline-block',\n backgroundColor: circleBackgroundColor,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: circleBorderColor,\n width: choiceFieldSize,\n height: choiceFieldSize,\n fontWeight: 'normal',\n position: 'absolute',\n top: 0,\n left: 0,\n boxSizing: 'border-box',\n transitionProperty: 'border-color',\n transitionDuration: choiceFieldTransitionDuration,\n transitionTimingFunction: choiceFieldTransitionTiming,\n borderRadius: '50%',\n },\n disabled && {\n borderColor: circleDisabledBorderColor,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n background: 'Window',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n checked && {\n borderColor: disabled ? circleDisabledBorderColor : circleCheckedBorderColor,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n background: 'Window',\n forcedColorAdjust: 'none',\n },\n },\n },\n (hasIcon || hasImage) && {\n top: radioButtonSpacing,\n right: radioButtonSpacing,\n left: 'auto', // To reset the value of 'left' to its default value, so that 'right' works\n opacity: checked ? 1 : 0,\n },\n ];\n\n const dotAreaProperties: IStyle = [\n {\n content: '\"\"',\n width: 0,\n height: 0,\n borderRadius: '50%',\n position: 'absolute',\n left: choiceFieldSize / 2,\n right: 0,\n transitionProperty: 'border-width',\n transitionDuration: choiceFieldTransitionDuration,\n transitionTimingFunction: choiceFieldTransitionTiming,\n boxSizing: 'border-box',\n },\n checked && {\n borderWidth: 5,\n borderStyle: 'solid',\n borderColor: disabled ? dotDisabledColor : dotCheckedColor,\n background: dotCheckedColor,\n left: 5,\n top: 5,\n width: 10,\n height: 10,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n forcedColorAdjust: 'none',\n },\n },\n },\n checked &&\n (hasIcon || hasImage) && {\n top: radioButtonSpacing + radioButtonInnerSize,\n right: radioButtonSpacing + radioButtonInnerSize,\n left: 'auto', // To reset the value of 'left' to its default value, so that 'right' works\n },\n ];\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n display: 'flex',\n alignItems: 'center',\n boxSizing: 'border-box',\n color: semanticColors.bodyText,\n minHeight: 26,\n border: 'none',\n position: 'relative',\n marginTop: 8,\n selectors: {\n '.ms-ChoiceFieldLabel': {\n display: 'inline-block',\n },\n },\n },\n !hasIcon &&\n !hasImage && {\n selectors: {\n '.ms-ChoiceFieldLabel': {\n paddingLeft: '26px',\n },\n },\n },\n hasImage && 'ms-ChoiceField--image',\n hasIcon && 'ms-ChoiceField--icon',\n (hasIcon || hasImage) && {\n display: 'inline-flex',\n fontSize: 0,\n margin: '0 4px 4px 0',\n paddingLeft: 0,\n backgroundColor: iconOrImageChoiceBackgroundColor,\n height: '100%',\n },\n ],\n choiceFieldWrapper: [\n classNames.choiceFieldWrapper,\n focused && getChoiceGroupFocusStyle(focusBorderColor, hasIcon || hasImage),\n ],\n // The hidden input\n input: [\n classNames.input,\n {\n position: 'absolute',\n opacity: 0,\n top: 0,\n right: 0,\n width: '100%',\n height: '100%',\n margin: 0,\n },\n disabled && 'is-disabled',\n ],\n field: [\n classNames.field,\n checked && classNames.checked,\n {\n display: 'inline-block',\n cursor: 'pointer',\n marginTop: 0,\n position: 'relative',\n verticalAlign: 'top',\n userSelect: 'none',\n minHeight: 20,\n selectors: {\n ':hover': !disabled && fieldHoverOrFocusProperties,\n ':focus': !disabled && fieldHoverOrFocusProperties,\n\n // The circle\n ':before': circleAreaProperties,\n\n // The dot\n ':after': dotAreaProperties,\n },\n },\n hasIcon && 'ms-ChoiceField--icon',\n hasImage && 'ms-ChoiceField-field--image',\n (hasIcon || hasImage) && {\n boxSizing: 'content-box',\n cursor: 'pointer',\n paddingTop: 22,\n margin: 0,\n textAlign: 'center',\n transitionProperty: 'all',\n transitionDuration: choiceFieldTransitionDuration,\n transitionTimingFunction: 'ease',\n border: '1px solid transparent',\n justifyContent: 'center',\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n },\n checked && {\n borderColor: iconOrImageChoiceBorderCheckedColor,\n },\n (hasIcon || hasImage) &&\n !disabled && {\n selectors: {\n ':hover': enabledFieldWithImageHoverOrFocusProperties,\n ':focus': enabledFieldWithImageHoverOrFocusProperties,\n },\n },\n disabled && {\n cursor: 'default',\n selectors: {\n '.ms-ChoiceFieldLabel': {\n color: semanticColors.disabledBodyText,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n checked &&\n disabled && {\n borderColor: iconOrImageChoiceBackgroundColor,\n },\n ],\n innerField: [\n classNames.innerField,\n hasImage && {\n // using non-null assertion because we have a default in `ChoiceGroupOptionBase` class.\n height: imageSize!.height,\n width: imageSize!.width,\n },\n (hasIcon || hasImage) && {\n position: 'relative',\n display: 'inline-block',\n paddingLeft: 30,\n paddingRight: 30,\n },\n (hasIcon || hasImage) &&\n imageIsLarge && {\n paddingLeft: 24,\n paddingRight: 24,\n },\n (hasIcon || hasImage) &&\n disabled && {\n opacity: 0.25,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n opacity: 1,\n },\n },\n },\n ],\n imageWrapper: getImageWrapperStyle(false, classNames.imageWrapper, checked),\n selectedImageWrapper: getImageWrapperStyle(true, classNames.imageWrapper, checked),\n iconWrapper: [\n classNames.iconWrapper,\n {\n fontSize: iconSize,\n lineHeight: iconSize,\n height: iconSize,\n },\n ],\n labelWrapper: [\n classNames.labelWrapper,\n fonts.medium,\n (hasIcon || hasImage) && {\n display: 'block',\n position: 'relative',\n margin: '4px 8px 2px 8px',\n height: labelWrapperHeight,\n lineHeight: labelWrapperLineHeight,\n // using non-null assertion because we have a default in `ChoiceGroupOptionBase` class.\n maxWidth: imageSize!.width * 2,\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../../Utilities';\nimport { ChoiceGroupOptionBase } from './ChoiceGroupOption.base';\nimport { getStyles } from './ChoiceGroupOption.styles';\nimport type {\n IChoiceGroupOptionProps,\n IChoiceGroupOptionStyleProps,\n IChoiceGroupOptionStyles,\n} from './ChoiceGroupOption.types';\n\nexport const ChoiceGroupOption: React.FunctionComponent = styled<\n IChoiceGroupOptionProps,\n IChoiceGroupOptionStyleProps,\n IChoiceGroupOptionStyles\n>(ChoiceGroupOptionBase, getStyles, undefined, { scope: 'ChoiceGroupOption' });\n","import * as React from 'react';\nimport { Label } from '../../Label';\nimport {\n classNamesFunction,\n find,\n FocusRectsContext,\n getNativeProps,\n divProperties,\n setFocusVisibility,\n useFocusRects,\n} from '../../Utilities';\nimport { ChoiceGroupOption } from './ChoiceGroupOption/index';\nimport { useId, useControllableValue, useMergedRefs, useWarnings } from '@fluentui/react-hooks';\nimport type { IRefObject } from '../../Utilities';\nimport type {\n IChoiceGroupOption,\n IChoiceGroupProps,\n IChoiceGroupStyleProps,\n IChoiceGroupStyles,\n IChoiceGroup,\n} from './ChoiceGroup.types';\nimport type { IChoiceGroupOptionProps } from './ChoiceGroupOption/ChoiceGroupOption.types';\n\nconst getClassNames = classNamesFunction();\n\nconst getOptionId = (option: IChoiceGroupOption, id: string): string => {\n return `${id}-${option.key}`;\n};\n\nconst findOption = (options: IChoiceGroupOption[], key: IChoiceGroupProps['selectedKey']) => {\n return key === undefined ? undefined : find(options, value => value.key === key);\n};\n\nconst focusSelectedOption = (\n options: IChoiceGroupOption[],\n keyChecked: IChoiceGroupProps['selectedKey'],\n id: string,\n focusProviders?: React.RefObject[],\n) => {\n const optionToFocus = findOption(options, keyChecked) || options.filter(option => !option.disabled)[0];\n const elementToFocus = optionToFocus && document.getElementById(getOptionId(optionToFocus, id));\n\n if (elementToFocus) {\n elementToFocus.focus();\n setFocusVisibility(true, elementToFocus as Element, focusProviders);\n }\n};\n\nconst focusFromFocusTrapZone = (evt: React.FocusEvent): boolean => {\n return evt.relatedTarget instanceof HTMLElement && evt.relatedTarget.dataset.isFocusTrapZoneBumper === 'true';\n};\n\nconst useComponentRef = (\n options: IChoiceGroupOption[],\n keyChecked: IChoiceGroupProps['selectedKey'],\n id: string,\n componentRef?: IRefObject,\n focusProviders?: React.RefObject[],\n) => {\n React.useImperativeHandle(\n componentRef,\n () => ({\n get checkedOption() {\n return findOption(options, keyChecked);\n },\n focus() {\n focusSelectedOption(options, keyChecked, id, focusProviders);\n },\n }),\n [options, keyChecked, id, focusProviders],\n );\n};\n\nconst COMPONENT_NAME = 'ChoiceGroup';\n\nexport const ChoiceGroupBase: React.FunctionComponent = React.forwardRef<\n HTMLDivElement,\n IChoiceGroupProps\n>((props, forwardedRef) => {\n const {\n className,\n theme,\n styles,\n options = [],\n label,\n required,\n disabled,\n name,\n defaultSelectedKey,\n componentRef,\n onChange,\n } = props;\n const id = useId('ChoiceGroup');\n const labelId = useId('ChoiceGroupLabel');\n\n const divProps = getNativeProps>(props, divProperties, [\n 'onChange',\n 'className',\n 'required',\n ]);\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n optionsContainIconOrImage: options.some(option => !!(option.iconProps || option.imageSrc)),\n });\n\n const ariaLabelledBy = props.ariaLabelledBy || (label ? labelId : props['aria-labelledby']);\n\n const [keyChecked, setKeyChecked] = useControllableValue(props.selectedKey, defaultSelectedKey);\n const [keyFocused, setKeyFocused] = React.useState();\n\n const rootRef = React.useRef(null);\n const mergedRootRefs: React.Ref = useMergedRefs(rootRef, forwardedRef);\n\n const focusContext = React.useContext(FocusRectsContext);\n\n useDebugWarnings(props);\n useComponentRef(options, keyChecked, id, componentRef, focusContext?.registeredProviders);\n useFocusRects(rootRef);\n\n const onFocus = React.useCallback((ev?: React.FocusEvent, option?: IChoiceGroupOptionProps) => {\n if (option) {\n setKeyFocused(option.itemKey);\n option.onFocus?.(ev);\n }\n }, []);\n\n const onBlur = React.useCallback((ev: React.FocusEvent, option?: IChoiceGroupOptionProps) => {\n setKeyFocused(undefined);\n option?.onBlur?.(ev);\n }, []);\n\n const onOptionChange = React.useCallback(\n (evt?: React.FormEvent, option?: IChoiceGroupOptionProps) => {\n if (!option) {\n return;\n }\n setKeyChecked(option.itemKey);\n\n option.onChange?.(evt);\n onChange?.(evt, findOption(options, option.itemKey));\n },\n [onChange, options, setKeyChecked],\n );\n\n const onRadioFocus = React.useCallback(\n (evt: React.FocusEvent) => {\n // Handles scenarios like this bug: https://github.com/microsoft/fluentui/issues/20173\n if (focusFromFocusTrapZone(evt)) {\n focusSelectedOption(options, keyChecked, id, focusContext?.registeredProviders);\n }\n },\n [options, keyChecked, id, focusContext],\n );\n\n return (\n
      \n
      \n {label && (\n \n )}\n
      \n {options.map((option: IChoiceGroupOption) => {\n return (\n \n );\n })}\n
      \n
      \n
      \n );\n});\nChoiceGroupBase.displayName = COMPONENT_NAME;\n\nfunction useDebugWarnings(props: IChoiceGroupProps) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks -- build-time conditional\n useWarnings({\n name: COMPONENT_NAME,\n props,\n mutuallyExclusive: {\n selectedKey: 'defaultSelectedKey',\n },\n });\n }\n}\n","import { getGlobalClassNames } from '../../Styling';\nimport type { IChoiceGroupStyleProps, IChoiceGroupStyles } from './ChoiceGroup.types';\n\nconst GlobalClassNames = {\n root: 'ms-ChoiceFieldGroup',\n flexContainer: 'ms-ChoiceFieldGroup-flexContainer',\n};\n\nexport const getStyles = (props: IChoiceGroupStyleProps): IChoiceGroupStyles => {\n const { className, optionsContainIconOrImage, theme } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n className,\n classNames.root,\n theme.fonts.medium,\n {\n display: 'block',\n },\n ],\n flexContainer: [\n classNames.flexContainer,\n optionsContainIconOrImage && {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ChoiceGroupBase } from './ChoiceGroup.base';\nimport { getStyles } from './ChoiceGroup.styles';\nimport type { IChoiceGroupProps, IChoiceGroupStyles, IChoiceGroupStyleProps } from './ChoiceGroup.types';\n\nexport const ChoiceGroup: React.FunctionComponent = styled<\n IChoiceGroupProps,\n IChoiceGroupStyleProps,\n IChoiceGroupStyles\n>(ChoiceGroupBase, getStyles, undefined, { scope: 'ChoiceGroup' });\n","import React from 'react';\r\nimport { PanelType } from \"@fluentui/react\";\r\nimport { StandarPanel } from '@ioip/core/lib';\r\n\r\nexport interface IPopupPanelProps {\r\n onCancel: () => void;\r\n onAccept: () => void;\r\n title: string;\r\n text: string;\r\n show: boolean;\r\n closeButtonText?: string\r\n acceptButtonText?: string\r\n}\r\n\r\nconst PopupPanel = (props: IPopupPanelProps): JSX.Element => {\r\n return props.onCancel()}\r\n onAccept={() => props.onAccept()}\r\n closeButtonText = {props.closeButtonText ? props.closeButtonText : ''}\r\n acceptButtonText = {props.acceptButtonText ? props.acceptButtonText : ''}\r\n >\r\n
      ') }}\r\n />\r\n \r\n}\r\n\r\nexport default PopupPanel;","import { ChoiceGroup, ComboBox, DatePicker, DayOfWeek, DefaultButton, IChoiceGroupOption, IComboBoxOption, Label, PrimaryButton, TextField } from \"@fluentui/react\";\r\nimport { ICountry } from '@ioip/archivox/lib';\r\nimport { Column, Grid, Row, Subtitle } from '@ioip/core/lib';\r\nimport { DateTime } from 'ioip-base/lib/common';\r\nimport React from 'react';\r\nimport { Sede } from '../../classes/shared';\r\nimport { AtencionPreferencialEnum } from '../../classes/shared/atencion-preferencias.enum';\r\nimport { onFormatDate } from '../../classes/shared/utilities';\r\nimport { $_, DatePickerStrings, INivelEducativo, IProfesion, ITipoIdentificacion, ITipoPersona, ITipoSolicitante, validateObject, ValidationResult, validator } from '../../ioip/sdk/base';\r\nimport { NumberTextField } from '../../ioip/sdk/components';\r\nimport { PqrWebService } from '../../services/services';\r\nimport PopupPanelComponent from '../popup/PopupPanel';\r\nimport { ReCaptchaComponent } from '../recaptcha/ReCaptchaComponent';\r\nimport { ICreateContactComponentProps } from './create-contact.props';\r\nimport { defaultCreateContactComponentState, ICreateContactComponentState } from './create-contact.state';\r\nimport { TipoIdentificacionEnum } from './tipo-identificacion-enum';\r\nimport { TipoPersonaEnum } from './tipo-persona-enum';\r\n\r\nexport class CreateContactComponent extends React.Component {\r\n\r\n private _recaptcha: ReCaptchaComponent;\r\n private _pqrWebService: PqrWebService;\r\n private _validations: { [ key: string ]: any[] } = {\r\n IdTipoPersona: [ validator.invalid(0, 'Campo requerido') ],\r\n IdTipoIdentificacion: [ validator.invalid(0, 'Campo requerido') ],\r\n Identificacion: [ validator.required(true), validator.maxLength(128) ],\r\n Nombres: [ validator.required(true), validator.maxLength(128) ],\r\n Apellidos: [ validator.required(true), validator.maxLength(128) ],\r\n Direccion: [ validator.maxLength(128) ],\r\n Barrio: [ validator.maxLength(100) ],\r\n Telefono: [ validator.maxLength(20) ],\r\n Extension: [ validator.maxLength(15) ],\r\n Celular: [ validator.maxLength(20) ],\r\n\r\n NombresApoderado: [ validator.maxLength(128) ],\r\n ApellidosApoderado: [ validator.maxLength(128) ],\r\n IdentificacionApoderado: [ validator.maxLength(15) ],\r\n DireccionApoderado: [ validator.maxLength(128) ],\r\n TelefonoApoderado: [ validator.maxLength(64) ],\r\n EmailApoderado: [ validator.maxLength(128) ],\r\n\r\n Email: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.email(),\r\n validator.custom(this._checkEmail.bind(this))\r\n ],\r\n Email2: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.email(),\r\n validator.custom(this._checkEmail.bind(this))\r\n ],\r\n IdCiudad: [ validator.invalid(0, 'Campo requerido') ],\r\n IdDepartamento: [ validator.invalid(0, 'Campo requerido') ],\r\n IdPais: [ validator.invalid(0, 'Campo requerido') ],\r\n // IdPreguntaSecreta: [ validator.invalid(0, 'Campo requerido') ],\r\n // RespuestaSecreta: [ validator.required(true), validator.maxLength(128) ],\r\n Password: [\r\n validator.required(true),\r\n validator.maxLength(16),\r\n validator.custom(this._checkPassword.bind(this))\r\n ],\r\n Password2: [\r\n validator.required(true),\r\n validator.maxLength(16),\r\n validator.custom(this._checkPassword.bind(this))\r\n ]\r\n };\r\n\r\n private _validationJuridica: { [ key: string ]: any[] } = {\r\n NombreRepresentante: [ validator.required(true), validator.maxLength(128) ],\r\n EmailRepresentante: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.email() ],\r\n CargoRepresentante: [ validator.required(true), validator.maxLength(128) ],\r\n Telefono: [ validator.required(true), validator.maxLength(20) ],\r\n TelefonoRepresentante: [ validator.required(true), validator.maxLength(20) ],\r\n };\r\n\r\n private _validationNatural: { [ key: string ]: any[] } = {\r\n PrimerNombre: [ validator.required(true), validator.maxLength(64), validator.onlyText() ],\r\n PrimerApellido: [ validator.required(true), validator.maxLength(64), validator.onlyText() ],\r\n SegundoNombre: [ validator.onlyText() ],\r\n SegundoApellido: [ validator.onlyText() ]\r\n };\r\n\r\n private async _onChangeOpcionActuaComoApoderado(ev?: React.FormEvent, option?: IChoiceGroupOption): Promise {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n ActuaComoApoderado: option.key === '0' ? false : true,\r\n IdTipoIdentificacionApoderado: 0,\r\n IdentificacionApoderado: '',\r\n NombresApoderado: '',\r\n ApellidosApoderado: ''\r\n }\r\n });\r\n }\r\n\r\n private _onChangeOpcionAutorizaNotificacionEmail(ev?: React.FormEvent, option?: IChoiceGroupOption): void {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n AutorizaNotificacionEmail: option.key === '0' ? false : true\r\n }\r\n });\r\n }\r\n\r\n private _onChangeOpcionAutorizaLlamadaCelular(ev?: React.FormEvent, option?: IChoiceGroupOption): void {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n AutorizaLlamadaCelular: option.key === '0' ? false : true\r\n }\r\n });\r\n }\r\n\r\n private _onChangeOpcionAutorizaLlamadaFijo(ev?: React.FormEvent, option?: IChoiceGroupOption): void {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n AutorizaLlamadaFijo: option.key === '0' ? false : true\r\n }\r\n });\r\n }\r\n\r\n private _onChangeOpcionAutorizaNotificacionFisica(ev?: React.FormEvent, option?: IChoiceGroupOption): void {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n AutorizaNotificacionFisica: option.key === '0' ? false : true\r\n }\r\n });\r\n }\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = defaultCreateContactComponentState();\r\n this._pqrWebService = new PqrWebService();\r\n this._recaptcha = (null as any);\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n const result = await Promise.all([\r\n this._pqrWebService.getAllCountriesAsync(),\r\n this._pqrWebService.getAllDepartmentsAsync(),\r\n this._pqrWebService.getAllCitiesAsync(),\r\n this._pqrWebService.getAllIdentificationTypesAsync(),\r\n this._pqrWebService.getAllQuestionsAsync(),\r\n this._pqrWebService.getAllPreferentialCareTypesAsync(),\r\n this._pqrWebService.getAllDisabilitiesAsync(),\r\n this._pqrWebService.getAllGendersAsync(),\r\n this._pqrWebService.getAllEthnicGroupsAsync(),\r\n this._pqrWebService.getAllPersonTypesAsync()\r\n ]) as any;\r\n\r\n const [ educationLevels, professions, applicantTypes ] = await Promise.all([\r\n this._pqrWebService.getAllEducationLevelsAsync(),\r\n this._pqrWebService.getAllProfessionsAsync(),\r\n this._pqrWebService.getAllApplicantTypeAsync()\r\n ]) as any;\r\n\r\n this.setState({\r\n paises: result[ 0 ],\r\n paisesCO: result[ 0 ].map((o: ICountry) => ({ key: o.countryId, text: o.name })),\r\n departamentos: result[ 1 ],\r\n departamentosCO: [],\r\n ciudades: result[ 2 ],\r\n ciudadesCO: [],\r\n tiposIdentificacion: result[ 3 ],\r\n tiposIdentificacionCO: result[ 3 ].map((o: ITipoIdentificacion) => ({ key: o.IdTipoIdentificacion, text: o.Nombre })),\r\n tiposIdentificacionCOApoderado: result[ 3 ].filter(o => o.IdTipoIdentificacion !== TipoIdentificacionEnum.TarjetaIdentidad).map((o: ITipoIdentificacion) => ({ key: o.IdTipoIdentificacion, text: o.Nombre })),\r\n preguntas: result[ 4 ].filter(o => o.Activo).map(o => ({ key: o.IdPreguntaSecreta, text: o.Nombre })),\r\n atencionPreferencial: result[ 5 ].filter(o => o.Activo).map(o => ({ key: o.IdAntencionPreferencial, text: o.Nombre })),\r\n discapacidades: result[ 6 ].filter(o => o.Activo).map(o => ({ key: o.IdDiscapacidad, text: o.Nombre })),\r\n generos: result[ 7 ].filter(o => o.Activo).map(o => ({ key: o.IdGenero, text: o.Nombre })),\r\n gruposEtnicos: result[ 8 ].filter(o => o.Activo).map(o => ({ key: o.IdGrupoEtnico, text: o.Nombre })),\r\n tiposPersona: result[ 9 ],\r\n tiposPersonaCO: result[ 9 ].map((o: ITipoPersona) => ({ key: o.IdTipoPersona, text: o.Nombre })),\r\n nivelEducativo: educationLevels.filter(o => o.Activo).map((o: INivelEducativo) => ({ key: o.IdNivelEducativo, text: o.Nombre })),\r\n profesiones: professions.filter(o => o.Activo).map((o: IProfesion) => ({ key: o.IdProfesion, text: o.Nombre })),\r\n mostrarProfesion: Sede.shared.context.EnableContactProfession,\r\n mostrarTipoSolicitante: Sede.shared.context.EnableContactRequesterType,\r\n tiposSolicitante: applicantTypes.filter(o => o.Activo).map((o: ITipoSolicitante) => ({ key: o.IdTipoSolicitante, text: o.Nombre }))\r\n });\r\n }\r\n\r\n render(): JSX.Element {\r\n return <>\r\n \r\n \r\n \r\n

      Registrar usuario

      \r\n
      \r\n
      \r\n \r\n \r\n this._onChangeComboBox('IdTipoPersona', value)}\r\n options={this.state.tiposPersonaCO}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n errorMessage={this.state.errors[ 'IdTipoPersona' ]}\r\n />\r\n \r\n \r\n {this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural && <>\r\n \r\n \r\n this._onChangeComboBox('IdAntencionPreferencial', value)}\r\n options={this.state.atencionPreferencial}\r\n useComboBoxAsMenuWidth={true}\r\n errorMessage={this.state.errors[ 'IdAntencionPreferencial' ]}\r\n required={this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural}\r\n />\r\n \r\n \r\n {this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.GrupoEtnico && this._onChangeComboBox('IdGrupoEtnico', value)}\r\n options={this.state.gruposEtnicos}\r\n useComboBoxAsMenuWidth={true}\r\n required={this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.GrupoEtnico}\r\n errorMessage={this.state.errors[ 'IdGrupoEtnico' ]}\r\n />}\r\n {this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.Discapacidad && this._onChangeComboBox('IdDiscapacidad', value)}\r\n options={this.state.discapacidades}\r\n useComboBoxAsMenuWidth={true}\r\n required={this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.Discapacidad}\r\n errorMessage={this.state.errors[ 'IdDiscapacidad' ]}\r\n />}\r\n \r\n \r\n }\r\n {this.state.mostrarTipoSolicitante && \r\n \r\n this._onChangeComboBox('IdTipoEntidad', value)}\r\n options={this.state.tiposSolicitante}\r\n useComboBoxAsMenuWidth={true}\r\n errorMessage={this.state.errors[ 'IdTipoEntidad' ]}\r\n required={this.state.mostrarTipoSolicitante}\r\n />\r\n \r\n \r\n }\r\n {this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural && \r\n \r\n \r\n \r\n }\r\n {this.state.model.ActuaComoApoderado && this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural && <>\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeComboBox('IdTipoIdentificacionApoderado', value)}\r\n options={this.state.tiposIdentificacionCOApoderado}\r\n required={this.state.model.ActuaComoApoderado}\r\n selectedKey={this.state.model.IdTipoIdentificacionApoderado}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('IdentificacionApoderado', value)}\r\n placeholder={'Número de identificación del apoderado'}\r\n required={this.state.model.ActuaComoApoderado}\r\n value={this.state.model.IdentificacionApoderado}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('NombresApoderado', value)}\r\n value={this.state.model.NombresApoderado}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('ApellidosApoderado', value)}\r\n value={this.state.model.ApellidosApoderado}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('EmailApoderado', value)}\r\n value={this.state.model.EmailApoderado}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('DireccionApoderado', value)}\r\n value={this.state.model.DireccionApoderado}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('TelefonoApoderado', value)}\r\n value={this.state.model.TelefonoApoderado}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n }\r\n \r\n \r\n \r\n this._onChangeComboBox('IdTipoIdentificacion', value)}\r\n options={this.state.tiposIdentificacionCO}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n errorMessage={this.state.errors[ 'IdTipoIdentificacion' ]}\r\n />\r\n \r\n \r\n {(this.state.model.IdTipoIdentificacion) === TipoIdentificacionEnum.Nit && this._onChangeTextField('Identificacion', value)}\r\n errorMessage={this.state.errors[ 'Identificacion' ]}\r\n value={this.state.model.Identificacion}\r\n />}\r\n {this.state.model.IdTipoIdentificacion !== TipoIdentificacionEnum.Nit && this._onChangeTextField('Identificacion', value)}\r\n errorMessage={this.state.errors[ 'Identificacion' ]}\r\n value={this.state.model.Identificacion}\r\n />}\r\n \r\n \r\n {((this.state.model.IdTipoPersona) === TipoPersonaEnum.PersonaNatural) && <>\r\n \r\n \r\n this._onChangeTextField('PrimerNombre', value)}\r\n errorMessage={this.state.errors[ 'PrimerNombre' ]}\r\n value={this.state.model.PrimerNombre}\r\n />\r\n \r\n \r\n this._onChangeTextField('SegundoNombre', value)}\r\n errorMessage={this.state.errors[ 'SegundoNombre' ]}\r\n value={this.state.model.SegundoNombre}\r\n />\r\n \r\n \r\n \r\n \r\n this._onChangeTextField('PrimerApellido', value)}\r\n errorMessage={this.state.errors[ 'PrimerApellido' ]}\r\n value={this.state.model.PrimerApellido}\r\n />\r\n \r\n \r\n this._onChangeTextField('SegundoApellido', value)}\r\n errorMessage={this.state.errors[ 'SegundoApellido' ]}\r\n value={this.state.model.SegundoApellido}\r\n />\r\n \r\n \r\n }\r\n {((this.state.model.IdTipoPersona) === TipoPersonaEnum.PersonaJuridica) && <>\r\n \r\n \r\n this._onChangeTextField('Nombres', value)}\r\n errorMessage={this.state.errors[ 'Nombres' ]}\r\n value={this.state.model.Nombres}\r\n />\r\n \r\n \r\n this._onChangeTextField('NombreRepresentante', value)}\r\n errorMessage={this.state.errors[ 'NombreRepresentante' ]}\r\n value={this.state.model.NombreRepresentante}\r\n />\r\n \r\n \r\n \r\n \r\n this._onChangeTextField('EmailRepresentante', value)}\r\n errorMessage={this.state.errors[ 'EmailRepresentante' ]}\r\n value={this.state.model.EmailRepresentante}\r\n />\r\n \r\n \r\n this._onChangeTextField('CargoRepresentante', value)}\r\n errorMessage={this.state.errors[ 'CargoRepresentante' ]}\r\n value={this.state.model.CargoRepresentante}\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._onChangeTextField('Email', value)}\r\n errorMessage={this.state.errors[ 'Email' ]}\r\n value={this.state.model.Email}\r\n />\r\n \r\n \r\n this._onChangeTextField('Email2', value)}\r\n errorMessage={this.state.errors[ 'Email2' ]}\r\n value={this.state.model.Email2}\r\n />\r\n \r\n \r\n \r\n \r\n this._onChangeComboBox('IdPais', value)}\r\n options={this.state.paisesCO}\r\n required={true}\r\n useComboBoxAsMenuWidth={true}\r\n errorMessage={this.state.errors[ 'IdPais' ]}\r\n />\r\n \r\n \r\n this._onChangeComboBox('IdDepartamento', value)}\r\n options={this.state.departamentosCO}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n errorMessage={this.state.errors[ 'IdDepartamento' ]}\r\n />\r\n \r\n \r\n \r\n \r\n this._onChangeComboBox('IdCiudad', value)}\r\n options={this.state.ciudadesCO}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n errorMessage={this.state.errors[ 'IdCiudad' ]}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n {this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural && <>\r\n \r\n \r\n \r\n \r\n \r\n this._onChangeComboBox('IdGenero', value)}\r\n options={this.state.generos}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n \r\n \r\n \r\n \r\n this._onChangeComboBox('IdNivelEducativo', value)}\r\n options={this.state.nivelEducativo}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n \r\n\r\n {this.state.mostrarProfesion && \r\n this._onChangeComboBox('IdProfesion', value)}\r\n options={this.state.profesiones}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n }\r\n \r\n }\r\n \r\n \r\n this._onChangeTextField('Direccion', value)}\r\n errorMessage={this.state.errors[ 'Direccion' ]}\r\n value={this.state.model.Direccion}\r\n />\r\n \r\n \r\n this._onChangeTextField('Barrio', value)}\r\n errorMessage={this.state.errors[ 'Barrio' ]}\r\n value={this.state.model.Barrio}\r\n />\r\n \r\n \r\n \r\n \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._onChangeTextField('Password', value)}\r\n errorMessage={this.state.errors[ 'Password' ]}\r\n value={this.state.model.Password}\r\n />\r\n \r\n \r\n this._onChangeTextField('Password2', value)}\r\n errorMessage={this.state.errors[ 'Password2' ]}\r\n value={this.state.model.Password2}\r\n />\r\n \r\n \r\n {this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural && <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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._recaptcha = x} />\r\n {this.state.errors[ 'recaptcha' ]}\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.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n AutorizaTratamientoDatos: true\r\n },\r\n mostrarPanelPoliticaDatos: false\r\n })\r\n }}\r\n onCancel={() => {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n AutorizaTratamientoDatos: false\r\n },\r\n mostrarPanelPoliticaDatos: false\r\n })\r\n }}\r\n text={Sede.shared.context.PoliticaTratamientoDatosPersonales}\r\n title=''\r\n show={this.state.mostrarPanelPoliticaDatos}\r\n closeButtonText='Rechazar'\r\n acceptButtonText=\"Aceptar\"\r\n />\r\n \r\n }\r\n\r\n protected _onChangeModel(model: any): void { }\r\n\r\n protected _OnChangeModelDate(property: string, date: Date | null | undefined): void {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n [ property ]: date\r\n }\r\n });\r\n this._onChangeModel({\r\n ...(this.state.model as any),\r\n [ property ]: date\r\n });\r\n };\r\n\r\n protected _changeModelCheckBox(property: string, ev?: React.FormEvent, checked?: boolean): void {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n [ property ]: checked\r\n }\r\n });\r\n }\r\n\r\n private _updateErrors(errors: { [ key: string ]: string }): void {\r\n this.setState({ errors });\r\n }\r\n\r\n private async _saveAsync(): Promise {\r\n if (this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural) {\r\n this.state.model.Nombres = this.state.model.PrimerNombre + ' ' + this.state.model.SegundoNombre;\r\n this.state.model.Apellidos = this.state.model.PrimerApellido + ' ' + this.state.model.SegundoApellido;\r\n }\r\n else {\r\n this.state.model.Apellidos = this.state.model.NombreRepresentante;\r\n }\r\n let validations: { [ key: string ]: any[] };\r\n let _validationTipoEntidad: { [ key: string ]: any[] } = {};\r\n\r\n if (this.state.mostrarTipoSolicitante) {\r\n _validationTipoEntidad = {\r\n IdTipoEntidad: [ validator.invalid(0, 'Campo requerido') ]\r\n }\r\n }\r\n\r\n if (this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural) {\r\n let _validationAtencionPreferencial: { [ key: string ]: any[] } = {};\r\n let _validationIdentity: { [ key: string ]: any[] } = {};\r\n let _validationApoderado: { [ key: string ]: any[] } = {};\r\n let _validationNotificacionFisica: { [ key: string ]: any[] } = {};\r\n let _validationLlamadasFijo: { [ key: string ]: any[] } = {};\r\n let _validationLlamadasCelular: { [ key: string ]: any[] } = {};\r\n\r\n _validationAtencionPreferencial = {\r\n IdAntencionPreferencial: [ validator.invalid(0, 'Campo requerido') ]\r\n };\r\n\r\n if (this.state.model.IdTipoIdentificacion === TipoIdentificacionEnum.CedulaCiudadania) {\r\n _validationIdentity = {\r\n Identificacion: [ validator.required(true), validator.identity(), validator.maxLength(20) ]\r\n };\r\n }\r\n\r\n if (this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.Discapacidad) {\r\n _validationAtencionPreferencial = {\r\n IdDiscapacidad: [ validator.invalid(0, 'Campo requerido') ]\r\n };\r\n }\r\n else if (this.state.model.IdAntencionPreferencial === AtencionPreferencialEnum.GrupoEtnico) {\r\n _validationAtencionPreferencial = {\r\n IdGrupoEtnico: [ validator.invalid(0, 'Campo requerido') ]\r\n };\r\n }\r\n\r\n if (this.state.model.ActuaComoApoderado) {\r\n _validationApoderado = {\r\n IdentificacionApoderado: [ validator.required(true), validator.identity() ],\r\n IdTipoIdentificacionApoderado: [ validator.invalid(0, 'Campo requerido') ],\r\n NombresApoderado: [ validator.required(true) ],\r\n ApellidosApoderado: [ validator.required(true) ],\r\n EmailApoderado: [ validator.required(true) ]\r\n };\r\n }\r\n\r\n if (this.state.model.AutorizaLlamadaCelular) {\r\n _validationLlamadasCelular = {\r\n Celular: [ validator.required(true) ]\r\n };\r\n }\r\n\r\n if (this.state.model.AutorizaLlamadaFijo) {\r\n _validationLlamadasFijo = {\r\n Telefono: [ validator.required(true) ]\r\n };\r\n }\r\n\r\n if (this.state.model.AutorizaNotificacionFisica) {\r\n _validationNotificacionFisica = {\r\n Direccion: [ validator.required(true) ]\r\n };\r\n }\r\n\r\n validations = { ...this._validations, ...this._validationNatural, ..._validationAtencionPreferencial, ..._validationIdentity, ..._validationApoderado, ..._validationNotificacionFisica, ..._validationLlamadasCelular, ..._validationLlamadasFijo, ..._validationTipoEntidad }\r\n }\r\n else {\r\n validations = { ...this._validations, ...this._validationJuridica, ..._validationTipoEntidad }\r\n }\r\n\r\n if (validateObject(this.state.model, validations, this._updateErrors.bind(this))) {\r\n try {\r\n const model = this.state.model;\r\n model.Cargo = void 0;\r\n model.Ciudad = void 0;\r\n model.Departamento = void 0;\r\n model.Pais = void 0;\r\n model.TipoContacto = void 0;\r\n model.TipoIdentificacion = void 0;\r\n\r\n if (this.state.model.IdTipoPersona === TipoPersonaEnum.PersonaNatural && !$_.isNull(this.state.model.FechaNacimiento)) {\r\n const dtNow = DateTime.Now.TruncateDate();\r\n const dtValue = new DateTime(this.state.model.FechaNacimiento).TruncateDate();\r\n const dtOneMonthAgo = new Date(dtNow.getFullYear(), dtNow.getMonth() - 1, dtNow.getDate());\r\n\r\n // Comparar la fecha ingresada con la fecha un mes atrás\r\n if (dtValue > dtOneMonthAgo) {\r\n alert('Debe seleccionar una fecha válida de nacimiento');\r\n return;\r\n }\r\n }\r\n\r\n const resultCaptcha = this._recaptcha.isValid();\r\n if (resultCaptcha.isCaptchaValid === false) {\r\n alert('Debe completar la validación de seguridad');\r\n return;\r\n }\r\n\r\n if (!model.AutorizaNotificacionEmail && !model.AutorizaNotificacionFisica) {\r\n alert('Debe seleccionar algún tipo de notificación, ya sea por correo electrónico o en la dirección registrada')\r\n return;\r\n }\r\n\r\n this.setState({ isSaving: true });\r\n await this._pqrWebService.createContactAsync(model, resultCaptcha.recaptchaToken);\r\n this.setState({ isSaving: false });\r\n alert(`Se ha enviado a su dirección de correo registrado un enlace, por favor ingresar para activar la cuenta`);\r\n window.location.href = '#/home';\r\n } catch (ex) {\r\n alert('Ya existe un contacto con la misma identificación, para obtener la contraseña ingrese a la opción Olvidé mi contraseña');\r\n }\r\n }\r\n }\r\n\r\n private _checkPassword(): ValidationResult {\r\n const result: ValidationResult = new ValidationResult();\r\n if (this.state.model.Password !== this.state.model.Password2) {\r\n result.hasError = true;\r\n result.errorMessage = 'Las constraseñas establecidas no coinciden';\r\n }\r\n return result;\r\n }\r\n\r\n private _checkEmail(): ValidationResult {\r\n const result: ValidationResult = new ValidationResult();\r\n if (this.state.model.Email.toLowerCase() !== this.state.model.Email2.toLowerCase()) {\r\n result.hasError = true;\r\n result.errorMessage = 'Las direcciones de correo electrónico no coinciden';\r\n }\r\n return result;\r\n }\r\n\r\n private async _onChangeComboBox(property: string, option?: IComboBoxOption, index?: number, value?: string, submitPendingValueEvent?: any): Promise {\r\n const state = {\r\n ...this.state,\r\n model: {\r\n ...this.state.model,\r\n [ property ]: Number(option.key)\r\n }\r\n };\r\n\r\n if (property === 'IdTipoPersona') {\r\n let result = await this._pqrWebService.getIdentificationTypesByIdPersonaAsync(Number(option.key));\r\n state.tiposIdentificacionCO = result.map((o: ITipoIdentificacion) => ({ key: o.IdTipoIdentificacion, text: o.Nombre }));\r\n state.tiposIdentificacionCOApoderado = result.filter(o => o.IdTipoIdentificacion !== TipoIdentificacionEnum.TarjetaIdentidad).map((o: ITipoIdentificacion) => ({ key: o.IdTipoIdentificacion, text: o.Nombre }));\r\n\r\n if (state.mostrarTipoSolicitante === true) {\r\n let resultTiposSolicitante = await this._pqrWebService.getAllApplicantTypeAsync();\r\n state.tiposSolicitante = resultTiposSolicitante.filter(o => o.Activo && o.IdTipoPersona === Number(option.key)).map((o: ITipoSolicitante) => ({ key: o.IdTipoSolicitante, text: o.Nombre }))\r\n }\r\n }\r\n\r\n if (property === 'IdTipoIdentificacion') {\r\n if (Number(option.key) === TipoIdentificacionEnum.TarjetaIdentidad) {\r\n let result = await this._pqrWebService.getChildGendersAsync();\r\n state.generos = result.filter(o => o.Activo).map(o => ({ key: o.IdGenero, text: o.Nombre }));\r\n }\r\n else {\r\n let result = await this._pqrWebService.getAllGendersAsync();\r\n state.generos = result.filter(o => o.Activo).map(o => ({ key: o.IdGenero, text: o.Nombre }));\r\n }\r\n }\r\n\r\n if (property === 'IdPais') {\r\n state.departamentosCO = state.departamentos.filter(o => o.countryId === Number(option.key)).map(o => ({ key: o.departmentId, text: o.name }));\r\n state.ciudadesCO = [];\r\n }\r\n\r\n if (property === 'IdDepartamento') {\r\n state.ciudadesCO = state.ciudades.filter(o => o.departmentId === Number(option.key)).map(o => ({ key: o.cityId, text: o.name }));\r\n }\r\n\r\n this.setState(state);\r\n\r\n }\r\n\r\n private _onChangeTextField(property: string, value: string): void {\r\n const state = {\r\n model: {\r\n ...this.state.model,\r\n [ property ]: value\r\n }\r\n };\r\n this.setState(state);\r\n }\r\n\r\n private _onChangeNumberTextField(property: string, value: number): void {\r\n const state = {\r\n model: {\r\n ...this.state.model,\r\n [ property ]: value.toString()\r\n }\r\n };\r\n this.setState(state);\r\n }\r\n\r\n}","import React from 'react';\r\nimport { PqrWebService } from '../../services/services';\r\n\r\nexport interface IDescargaComponentState {\r\n downloadLink: string;\r\n}\r\nexport class DescargaComponent extends React.Component {\r\n\r\n private _pqrWebService: PqrWebService; \r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this._pqrWebService = new PqrWebService();\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n try {\r\n \r\n const search = window.location.hash.split('?');\r\n const queryParams = new URLSearchParams(search[ 1 ]);\r\n\r\n if (queryParams !== undefined) {\r\n\r\n var result = await this._pqrWebService.decryptsAsync(search[ 1 ].replace(\"codigo=\", \"\"));\r\n var campos = result.Nombre.split('-');\r\n \r\n var file = await this._pqrWebService.getDocumentSedeAsAnonymousAsync(parseInt(campos[ 0 ]), campos[ 1 ]);\r\n\r\n console.log(\"file\",file);\r\n }\r\n } catch (err) {\r\n if (err instanceof Error) {\r\n alert(err.message);\r\n }\r\n }\r\n }\r\n\r\n render(): JSX.Element {\r\n return
      \r\n
      \r\n
      \r\n

      \r\n
      \r\n La descarga puede tardar varios minutos dependiendo del tamaño del documento y la velocidad de tu internet.\r\n
      \r\n
      \r\n
      \r\n\r\n
      \r\n }\r\n\r\n}","import { ChoiceGroup, ComboBox, DatePicker, DayOfWeek, DefaultButton, IChoiceGroupOption, IComboBoxOption, Label, PrimaryButton, TextField } from \"@fluentui/react\";\r\nimport { ICountry } from \"@ioip/archivox/lib\";\r\nimport { DateTime } from 'ioip-base/lib/common';\r\nimport React from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { defaultIContactoExtended } from '../../classes/contacto-extended';\r\nimport { Sede } from '../../classes/shared';\r\nimport { AtencionPreferencialEnum } from '../../classes/shared/atencion-preferencias.enum';\r\nimport { $_, DatePickerStrings, INivelEducativo, IProfesion, ITipoIdentificacion, ITipoPersona, ITipoSolicitante, ValidationResult, onFormatDate, validateObject, validator } from '../../ioip/sdk/base';\r\nimport { PqrWebService } from '../../services/services';\r\nimport { TipoIdentificacionEnum } from '../create-contact-component/tipo-identificacion-enum';\r\nimport { TipoPersonaEnum } from '../create-contact-component/tipo-persona-enum';\r\nimport { ReCaptchaComponent } from '../recaptcha/ReCaptchaComponent';\r\nimport { IEditContactComponentProps } from './edit-contact.props';\r\nimport { IEditContactComponentState } from './edit-contact.state';\r\n\r\nexport class EditContactComponent extends React.Component {\r\n\r\n private _recaptcha: ReCaptchaComponent;\r\n private _pqrWebService: PqrWebService;\r\n private _validations: { [ key: string ]: any[] } = {\r\n IdTipoIdentificacion: [ validator.invalid(0, 'Campo requerido') ],\r\n Identificacion: [ validator.required(true), validator.maxLength(128) ],\r\n Nombres: [ validator.required(true), validator.maxLength(128) ],\r\n Apellidos: [ validator.required(true), validator.maxLength(128) ],\r\n Direccion: [ validator.maxLength(128) ],\r\n Barrio: [ validator.maxLength(100) ],\r\n Telefono: [ validator.maxLength(20) ],\r\n Extension: [ validator.maxLength(15) ],\r\n Celular: [ validator.maxLength(20) ],\r\n Email: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.email(),\r\n validator.custom(this._checkEmail.bind(this))\r\n ],\r\n Email2: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.email(),\r\n validator.custom(this._checkEmail.bind(this))\r\n ],\r\n IdCiudad: [ validator.invalid(0, 'Campo requerido') ],\r\n IdDepartamento: [ validator.invalid(0, 'Campo requerido') ],\r\n IdPais: [ validator.invalid(0, 'Campo requerido') ],\r\n };\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n model: defaultIContactoExtended(),\r\n errors: {},\r\n isSaving: false,\r\n autorizaPoliticaPrivacidad: false,\r\n ciudades: [],\r\n ciudadesCO: [],\r\n departamentos: [],\r\n departamentosCO: [],\r\n paises: [],\r\n paisesCO: [],\r\n tiposIdentificacion: [],\r\n tiposIdentificacionCO: [],\r\n tiposIdentificacionCOApoderado: [],\r\n preguntas: [],\r\n generos: [],\r\n gruposEtnicos: [],\r\n discapacidades: [],\r\n atencionPreferencial: [],\r\n tiposPersona: [],\r\n tiposPersonaCO: [],\r\n fechaModificacion: '',\r\n nivelEducativo: [],\r\n profesiones: [],\r\n mostrarProfesion: true,\r\n mostrarTipoSolicitante: true,\r\n tiposSolicitante: [],\r\n opcionesSeleccionGrupo: [\r\n {\r\n key: '0',\r\n text: 'No',\r\n },\r\n {\r\n key: '1',\r\n text: 'Sí',\r\n }\r\n ]\r\n };\r\n\r\n this._pqrWebService = new PqrWebService();\r\n\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n\r\n const result = await Promise.all([\r\n this._pqrWebService.getAllCountriesAsync(),\r\n this._pqrWebService.getAllDepartmentsAsync(),\r\n this._pqrWebService.getAllCitiesAsync(),\r\n this._pqrWebService.getAllIdentificationTypesAsync(),\r\n this._pqrWebService.getAllQuestionsAsync(),\r\n this._pqrWebService.getAllPreferentialCareTypesAsync(),\r\n this._pqrWebService.getAllDisabilitiesAsync(),\r\n this._pqrWebService.getAllGendersAsync(),\r\n this._pqrWebService.getAllEthnicGroupsAsync(),\r\n this._pqrWebService.getAllPersonTypesAsync()\r\n ]) as any;\r\n\r\n const [ educationLevels, professions, applicantTypes ] = await Promise.all([\r\n this._pqrWebService.getAllEducationLevelsAsync(),\r\n this._pqrWebService.getAllProfessionsAsync(),\r\n this._pqrWebService.getAllApplicantTypeAsync()\r\n ]) as any;\r\n\r\n const state = {\r\n model: {\r\n ...this.state.model,\r\n IdContacto: Sede.shared.contactId,\r\n IdTipoContacto: parseInt(sessionStorage.getItem('ioip.pqr-web.session.idtipocontacto')),\r\n Nombres: sessionStorage.getItem('ioip.pqr-web.session.nombres'),\r\n Apellidos: sessionStorage.getItem('ioip.pqr-web.session.apellidos'),\r\n IdTipoIdentificacion: parseInt(sessionStorage.getItem('ioip.pqr-web.session.tipoid')),\r\n Identificacion: sessionStorage.getItem('ioip.pqr-web.session.identificacion'),\r\n Email: sessionStorage.getItem('ioip.pqr-web.session.email'),\r\n Email2: sessionStorage.getItem('ioip.pqr-web.session.email'),\r\n Celular: sessionStorage.getItem('ioip.pqr-web.session.celular'),\r\n Telefono: sessionStorage.getItem('ioip.pqr-web.session.telefono'),\r\n Direccion: sessionStorage.getItem('ioip.pqr-web.session.direccion'),\r\n Barrio: sessionStorage.getItem('ioip.pqr-web.session.barrio'),\r\n Extension: sessionStorage.getItem('ioip.pqr-web.session.extension'),\r\n IdPais: parseInt(sessionStorage.getItem('ioip.pqr-web.session.idpais')),\r\n IdDepartamento: parseInt(sessionStorage.getItem('ioip.pqr-web.session.iddepartamento')),\r\n IdCiudad: parseInt(sessionStorage.getItem('ioip.pqr-web.session.idciudad')),\r\n CodigoPostal: sessionStorage.getItem('ioip.pqr-web.session.codigopostal'),\r\n IdAntencionPreferencial: parseInt(sessionStorage.getItem('ioip.pqr-web.session.idantencionpreferencial')),\r\n IdDiscapacidad: parseInt(sessionStorage.getItem('ioip.pqr-web.session.iddiscapacidad')),\r\n IdGenero: parseInt(sessionStorage.getItem('ioip.pqr-web.session.idgenero')),\r\n IdGrupoEtnico: parseInt(sessionStorage.getItem('ioip.pqr-web.session.idgrupoetnico')),\r\n NombreRepresentante: sessionStorage.getItem('ioip.pqr-web.session.nombrerepresentante'),\r\n EmailRepresentante: sessionStorage.getItem('ioip.pqr-web.session.emailrepresentante'),\r\n CargoRepresentante: sessionStorage.getItem('ioip.pqr-web.session.cargorepresentante'),\r\n TelefonoRepresentante: sessionStorage.getItem('ioip.pqr-web.session.telefonorepresentante'),\r\n IdTipoPersona: parseInt(sessionStorage.getItem('ioip.pqr-web.session.idtipopersona')),\r\n PrimerNombre: sessionStorage.getItem('ioip.pqr-web.session.primernombre'),\r\n SegundoNombre: sessionStorage.getItem('ioip.pqr-web.session.segundonombre'),\r\n PrimerApellido: sessionStorage.getItem('ioip.pqr-web.session.primerapellido'),\r\n SegundoApellido: sessionStorage.getItem('ioip.pqr-web.session.segundoapellido'),\r\n IdNivelEducativo: parseInt(sessionStorage.getItem('ioip.pqr-web.session.idnivelEducativo')),\r\n IdProfesion: parseInt(sessionStorage.getItem('ioip.pqr-web.session.idprofesion')),\r\n IdTipoEntidad: parseInt(sessionStorage.getItem('ioip.pqr-web.session.idtipoentidad')),\r\n\r\n ActuaComoApoderado: sessionStorage.getItem('ioip.pqr-web.session.actuacomoapoderado') === 'true' ? true : false,\r\n IdTipoIdentificacionApoderado: parseInt(sessionStorage.getItem('ioip.pqr-web.session.idtipoidentificacionapoderado')),\r\n IdentificacionApoderado: sessionStorage.getItem('ioip.pqr-web.session.identificacionapoderado'),\r\n NombresApoderado: sessionStorage.getItem('ioip.pqr-web.session.nombresapoderado'),\r\n ApellidosApoderado: sessionStorage.getItem('ioip.pqr-web.session.apellidosapoderado'),\r\n DireccionApoderado: sessionStorage.getItem('ioip.pqr-web.session.direccionapoderado'),\r\n TelefonoApoderado: sessionStorage.getItem('ioip.pqr-web.session.telefonoapoderado'),\r\n EmailApoderado: sessionStorage.getItem('ioip.pqr-web.session.emailapoderado'),\r\n AutorizaNotificacionEmail: JSON.parse(sessionStorage.getItem('ioip.pqr-web.session.autorizanotificacionemail')),\r\n AutorizaNotificacionFisica: JSON.parse(sessionStorage.getItem('ioip.pqr-web.session.autorizanotificacionfisica')),\r\n AutorizaLlamadaFijo: JSON.parse(sessionStorage.getItem('ioip.pqr-web.session.autorizallamadafijo')),\r\n AutorizaLlamadaCelular: JSON.parse(sessionStorage.getItem('ioip.pqr-web.session.autorizallamadacelular')),\r\n AutorizaTratamientoDatos: JSON.parse(sessionStorage.getItem('ioip.pqr-web.session.autorizatratamientodatos'))\r\n },\r\n paises: result[ 0 ],\r\n paisesCO: result[ 0 ].map((o: ICountry) => ({ key: o.countryId, text: o.name })),\r\n departamentos: result[ 1 ],\r\n departamentosCO: result[ 1 ].filter(o => o.countryId === Number(parseInt(sessionStorage.getItem('ioip.pqr-web.session.idpais')))).map(o => ({ key: o.departmentId, text: o.name })),\r\n ciudades: result[ 2 ],\r\n ciudadesCO: result[ 2 ].filter(o => o.departmentId === Number(parseInt(sessionStorage.getItem('ioip.pqr-web.session.iddepartamento')))).map(o => ({ key: o.cityId, text: o.name })),\r\n tiposIdentificacion: result[ 3 ],\r\n tiposIdentificacionCO: result[ 3 ].map((o: ITipoIdentificacion) => ({ key: o.IdTipoIdentificacion, text: o.Nombre })),\r\n tiposIdentificacionCOApoderado: result[ 3 ].map((o: ITipoIdentificacion) => ({ key: o.IdTipoIdentificacion, text: o.Nombre })),\r\n atencionPreferencial: result[ 5 ].filter(o => o.Activo).map(o => ({ key: o.IdAntencionPreferencial, text: o.Nombre })),\r\n discapacidades: result[ 6 ].map(o => ({ key: o.IdDiscapacidad, text: o.Nombre })),\r\n gruposEtnicos: result[ 8 ].map(o => ({ key: o.IdGrupoEtnico, text: o.Nombre })),\r\n tiposPersona: result[ 9 ],\r\n tiposPersonaCO: result[ 9 ].map((o: ITipoPersona) => ({ key: o.IdTipoPersona, text: o.Nombre })),\r\n generos: result[ 7 ].map((o: { IdGenero: any; Nombre: any; }) => ({ key: o.IdGenero, text: o.Nombre })),\r\n fechaModificacion: sessionStorage.getItem('ioip.pqr-web.session.fechaModificacion'),\r\n nivelEducativo: educationLevels.filter(o => o.Activo).map((o: INivelEducativo) => ({ key: o.IdNivelEducativo, text: o.Nombre })),\r\n profesiones: professions.filter(o => o.Activo).map((o: IProfesion) => ({ key: o.IdProfesion, text: o.Nombre })),\r\n mostrarProfesion: Sede.shared.context.EnableContactProfession,\r\n mostrarTipoSolicitante: Sede.shared.context.EnableContactRequesterType,\r\n tiposSolicitante: applicantTypes.filter(o => o.Activo && o.IdTipoPersona === parseInt(sessionStorage.getItem('ioip.pqr-web.session.idtipopersona'))).map((o: ITipoSolicitante) => ({ key: o.IdTipoSolicitante, text: o.Nombre }))\r\n };\r\n\r\n if (sessionStorage.getItem('ioip.pqr-web.session.fechaNacimiento') !== \"\") {\r\n state.model.FechaNacimiento = new Date(sessionStorage.getItem('ioip.pqr-web.session.fechaNacimiento'));\r\n }\r\n\r\n if (parseInt(sessionStorage.getItem('ioip.pqr-web.session.tipoid')) === TipoIdentificacionEnum.TarjetaIdentidad) {\r\n let result = await this._pqrWebService.getChildGendersAsync();\r\n state.generos = result.map(o => ({ key: o.IdGenero, text: o.Nombre }));\r\n }\r\n\r\n if (parseInt(sessionStorage.getItem('ioip.pqr-web.session.idtipopersona')) === TipoPersonaEnum.PersonaNatural) {\r\n let result = await this._pqrWebService.getIdentificationTypesByIdPersonaAsync(TipoPersonaEnum.PersonaNatural);\r\n state.tiposIdentificacionCOApoderado = result.filter(o => o.IdTipoIdentificacion !== TipoIdentificacionEnum.TarjetaIdentidad).map((o: ITipoIdentificacion) => ({ key: o.IdTipoIdentificacion, text: o.Nombre }));\r\n }\r\n\r\n this.setState(state);\r\n }\r\n\r\n private async _onChangeOpcionActuaComoApoderado(ev?: React.FormEvent, option?: IChoiceGroupOption): Promise {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n ActuaComoApoderado: option.key === '0' ? false : true,\r\n IdTipoIdentificacionApoderado: 0,\r\n IdentificacionApoderado: '',\r\n NombresApoderado: '',\r\n ApellidosApoderado: ''\r\n }\r\n });\r\n }\r\n\r\n private _onChangeOpcionAutorizaNotificacionEmail(ev?: React.FormEvent, option?: IChoiceGroupOption): void {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n AutorizaNotificacionEmail: option.key === '0' ? false : true\r\n }\r\n });\r\n }\r\n\r\n private _onChangeOpcionAutorizaLlamadaCelular(ev?: React.FormEvent, option?: IChoiceGroupOption): void {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n AutorizaLlamadaCelular: option.key === '0' ? false : true\r\n }\r\n });\r\n }\r\n\r\n private _onChangeOpcionAutorizaLlamadaFijo(ev?: React.FormEvent, option?: IChoiceGroupOption): void {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n AutorizaLlamadaFijo: option.key === '0' ? false : true\r\n }\r\n });\r\n }\r\n\r\n private _onChangeOpcionAutorizaNotificacionFisica(ev?: React.FormEvent, option?: IChoiceGroupOption): void {\r\n this.setState({\r\n model: {\r\n ...this.state.model,\r\n AutorizaNotificacionFisica: option.key === '0' ? false : true\r\n }\r\n });\r\n }\r\n\r\n render(): JSX.Element {\r\n\r\n const model = this.state.model;\r\n const value = this.state.tiposIdentificacion.find(o => o.IdTipoIdentificacion === model.IdTipoIdentificacion);\r\n const emailLabel = value?.IdTipoPersona === 2 ? 'Correo electrónico para notificaciones' : 'Correo electrónico';\r\n const confirmEmailLabel = value?.IdTipoPersona === 2 ? 'Confirmar correo electrónico para notificaciones' : 'Confirmar correo electrónico';\r\n\r\n if (!this.isAuthenticate) {\r\n return ;\r\n }\r\n return
      \r\n
      \r\n
      \r\n

      Actualizar información

      \r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeComboBox('IdTipoPersona', value)}\r\n options={this.state.tiposPersonaCO}\r\n useComboBoxAsMenuWidth={true}\r\n disabled={true}\r\n errorMessage={this.state.errors[ 'IdTipoPersona' ]} />\r\n
      \r\n
      \r\n\r\n {((model.IdTipoPersona) === TipoPersonaEnum.PersonaNatural) &&\r\n
      \r\n
      \r\n this._onChangeComboBox('IdAntencionPreferencial', value)}\r\n options={this.state.atencionPreferencial}\r\n useComboBoxAsMenuWidth={true}\r\n required={model.IdTipoPersona === TipoPersonaEnum.PersonaNatural}\r\n />\r\n
      \r\n {\r\n model.IdAntencionPreferencial === AtencionPreferencialEnum.GrupoEtnico &&\r\n
      \r\n this._onChangeComboBox('IdGrupoEtnico', value)}\r\n options={this.state.gruposEtnicos}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n
      \r\n }\r\n {model.IdAntencionPreferencial === AtencionPreferencialEnum.Discapacidad &&\r\n
      \r\n this._onChangeComboBox('IdDiscapacidad', value)}\r\n options={this.state.discapacidades}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n
      \r\n }\r\n
      \r\n }\r\n\r\n {\r\n this.state.mostrarTipoSolicitante &&\r\n
      \r\n
      \r\n this._onChangeComboBox('IdTipoEntidad', value)}\r\n options={this.state.tiposSolicitante}\r\n useComboBoxAsMenuWidth={true}\r\n errorMessage={this.state.errors[ 'IdTipoEntidad' ]}\r\n required={this.state.mostrarTipoSolicitante}\r\n />\r\n
      \r\n
      \r\n }\r\n\r\n {model.IdTipoPersona === TipoPersonaEnum.PersonaNatural &&\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n }\r\n\r\n {model.ActuaComoApoderado && model.IdTipoPersona === TipoPersonaEnum.PersonaNatural && <>\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeComboBox('IdTipoIdentificacionApoderado', value)}\r\n options={this.state.tiposIdentificacionCOApoderado}\r\n required={model.ActuaComoApoderado}\r\n selectedKey={model.IdTipoIdentificacionApoderado}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('IdentificacionApoderado', value)}\r\n placeholder={'Número de identificación del apoderado'}\r\n required={model.ActuaComoApoderado}\r\n value={model.IdentificacionApoderado}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('NombresApoderado', value)}\r\n value={model.NombresApoderado}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('ApellidosApoderado', value)}\r\n value={model.ApellidosApoderado}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('EmailApoderado', value)}\r\n value={model.EmailApoderado}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('DireccionApoderado', value)}\r\n value={model.DireccionApoderado}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('TelefonoApoderado', value)}\r\n value={model.TelefonoApoderado}\r\n />\r\n
      \r\n
      \r\n
      \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._onChangeComboBox('IdTipoIdentificacion', value)}\r\n options={this.state.tiposIdentificacionCO}\r\n useComboBoxAsMenuWidth={true}\r\n errorMessage={this.state.errors[ 'IdTipoIdentificacion' ]}\r\n disabled={true}\r\n />\r\n
      \r\n {((model.IdTipoIdentificacion) != TipoIdentificacionEnum.Nit) &&\r\n
      \r\n this._onChangeTextField('Identificacion', value)}\r\n errorMessage={this.state.errors[ 'Identificacion' ]}\r\n value={model.Identificacion}\r\n readOnly={true}\r\n />\r\n
      \r\n }\r\n {((model.IdTipoIdentificacion) === TipoIdentificacionEnum.Nit) &&\r\n
      \r\n this._onChangeTextField('Identificacion', value)}\r\n errorMessage={this.state.errors[ 'Identificacion' ]}\r\n value={model.Identificacion}\r\n />\r\n
      \r\n }\r\n
      \r\n\r\n {((model.IdTipoPersona) === TipoPersonaEnum.PersonaNatural) &&\r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('PrimerNombre', value)}\r\n errorMessage={this.state.errors[ 'PrimerNombre' ]}\r\n value={model.PrimerNombre}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('SegundoNombre', value)}\r\n errorMessage={this.state.errors[ 'SegundoNombre' ]}\r\n value={model.SegundoNombre}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('PrimerApellido', value)}\r\n errorMessage={this.state.errors[ 'PrimerApellido' ]}\r\n value={model.PrimerApellido}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('SegundoApellido', value)}\r\n errorMessage={this.state.errors[ 'SegundoApellido' ]}\r\n value={model.SegundoApellido}\r\n />\r\n
      \r\n
      \r\n
      \r\n }\r\n\r\n {((model.IdTipoPersona) === TipoPersonaEnum.PersonaJuridica) &&\r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('Nombres', value)}\r\n errorMessage={this.state.errors[ 'Nombres' ]}\r\n value={model.Nombres}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('NombreRepresentante', value)}\r\n errorMessage={this.state.errors[ 'NombreRepresentante' ]}\r\n value={model.NombreRepresentante}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('EmailRepresentante', value)}\r\n errorMessage={this.state.errors[ 'EmailRepresentante' ]}\r\n value={model.EmailRepresentante}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this._onChangeTextField('CargoRepresentante', value)}\r\n errorMessage={this.state.errors[ 'CargoRepresentante' ]}\r\n value={model.CargoRepresentante}\r\n />\r\n
      \r\n
      \r\n this._onChangeNumberTextFieldA('TelefonoRepresentante', value)}\r\n errorMessage={this.state.errors[ 'TelefonoRepresentante' ]}\r\n value={model.TelefonoRepresentante} />\r\n
      \r\n
      \r\n
      \r\n }\r\n\r\n
      \r\n
      \r\n this._onChangeTextField('Email', value)}\r\n errorMessage={this.state.errors[ 'Email' ]}\r\n value={model.Email}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('Email2', value)}\r\n errorMessage={this.state.errors[ 'Email2' ]}\r\n value={model.Email2}\r\n />\r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n this._onChangeComboBox('IdPais', value)}\r\n options={this.state.paisesCO}\r\n required={true}\r\n useComboBoxAsMenuWidth={true}\r\n errorMessage={this.state.errors[ 'IdPais' ]}\r\n />\r\n
      \r\n
      \r\n this._onChangeComboBox('IdDepartamento', value)}\r\n options={this.state.departamentosCO}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n errorMessage={this.state.errors[ 'IdDepartamento' ]}\r\n />\r\n
      \r\n
      \r\n this._onChangeComboBox('IdCiudad', value)}\r\n options={this.state.ciudadesCO}\r\n useComboBoxAsMenuWidth={true}\r\n required={true}\r\n errorMessage={this.state.errors[ 'IdCiudad' ]}\r\n />\r\n
      \r\n
      \r\n\r\n {((model.IdTipoPersona) === TipoPersonaEnum.PersonaNatural) &&\r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n this._onChangeComboBox('IdGenero', value)}\r\n options={this.state.generos}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n this._onChangeComboBox('IdNivelEducativo', value)}\r\n options={this.state.nivelEducativo}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n
      \r\n {this.state.mostrarProfesion &&\r\n
      \r\n this._onChangeComboBox('IdProfesion', value)}\r\n options={this.state.profesiones}\r\n useComboBoxAsMenuWidth={true}\r\n />\r\n
      \r\n }\r\n
      \r\n
      \r\n }\r\n\r\n
      \r\n
      \r\n this._onChangeTextField('Direccion', value)}\r\n errorMessage={this.state.errors[ 'Direccion' ]}\r\n value={model.Direccion}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('Barrio', value)}\r\n errorMessage={this.state.errors[ 'Barrio' ]}\r\n value={model.Barrio}\r\n />\r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n this._onChangeNumberTextFieldA('Celular', value)}\r\n errorMessage={this.state.errors[ 'Celular' ]}\r\n value={model.Celular} />\r\n
      \r\n
      \r\n this._onChangeNumberTextFieldA('Telefono', value)}\r\n errorMessage={this.state.errors[ 'Telefono' ]}\r\n value={model.Telefono} />\r\n
      \r\n
      \r\n this._onChangeNumberTextFieldA('Extension', value)}\r\n errorMessage={this.state.errors[ 'Extension' ]}\r\n value={model.Extension} />\r\n
      \r\n
      \r\n\r\n {model.IdTipoPersona === TipoPersonaEnum.PersonaNatural && <>\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n\r\n
      \r\n
      \r\n \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._recaptcha = x} />\r\n {this.state.errors[ 'recaptcha' ]}\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n   \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n Fecha última modificación {this.state.fechaModificacion}\r\n
      \r\n
      \r\n
      \r\n }\r\n\r\n protected _onChangeModel(model: any): void { }\r\n\r\n protected _OnChangeModelDate(property: string, date: Date | null | undefined): void {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n [ property ]: date\r\n }\r\n });\r\n this._onChangeModel({\r\n ...(this.state.model as any),\r\n [ property ]: date\r\n });\r\n };\r\n\r\n private _checkEmail(): ValidationResult {\r\n const result: ValidationResult = new ValidationResult();\r\n if (this.state.model.Email.toLowerCase() != this.state.model.Email2.toLowerCase()) {\r\n result.hasError = true;\r\n result.errorMessage = 'Las direcciones de correo electrónico no coinciden';\r\n }\r\n return result;\r\n }\r\n\r\n private _onChangeTextField(property: string, value: string): void {\r\n const state = {\r\n model: {\r\n ...this.state.model,\r\n [ property ]: value\r\n }\r\n };\r\n this.setState(state);\r\n }\r\n\r\n private _onChangeNumberTextFieldA(property: string, value: string): void {\r\n value = value.split('').filter(o => !isNaN(Number(o))).join('');\r\n const state = {\r\n model: {\r\n ...this.state.model,\r\n [ property ]: value.toString()\r\n }\r\n };\r\n this.setState(state);\r\n }\r\n\r\n private async _onChangeComboBox(property: string, option?: IComboBoxOption, index?: number, value?: string, submitPendingValueEvent?: any): Promise {\r\n const state = {\r\n ...this.state,\r\n model: {\r\n ...this.state.model,\r\n [ property ]: Number(option.key)\r\n }\r\n };\r\n\r\n if (property === 'IdPais') {\r\n state.departamentosCO = state.departamentos.filter(o => o.countryId === Number(option.key)).map(o => ({ key: o.departmentId, text: o.name }));\r\n state.ciudadesCO = [];\r\n state.model.IdCiudad = 0;\r\n }\r\n\r\n if (property === 'IdDepartamento') {\r\n state.ciudadesCO = state.ciudades.filter(o => o.departmentId === Number(option.key)).map(o => ({ key: o.cityId, text: o.name }));\r\n state.model.IdCiudad = 0;\r\n }\r\n\r\n this.setState(state);\r\n\r\n }\r\n\r\n protected _changeModelCheckBox(property: string, ev?: React.FormEvent, checked?: boolean): void {\r\n this.setState({\r\n model: {\r\n ...(this.state.model as any),\r\n [ property ]: checked\r\n }\r\n });\r\n }\r\n\r\n private _updateErrors(errors: { [ key: string ]: string }): void {\r\n this.setState({ errors });\r\n }\r\n\r\n private _validationNatural: { [ key: string ]: any[] } = {\r\n PrimerNombre: [ validator.required(true), validator.maxLength(64), validator.onlyText() ],\r\n PrimerApellido: [ validator.required(true), validator.maxLength(64), validator.onlyText() ],\r\n SegundoNombre: [ validator.onlyText() ],\r\n SegundoApellido: [ validator.onlyText() ]\r\n };\r\n\r\n private _validationJuridica: { [ key: string ]: any[] } = {\r\n NombreRepresentante: [ validator.required(true), validator.maxLength(128) ],\r\n EmailRepresentante: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.email() ],\r\n CargoRepresentante: [ validator.required(true), validator.maxLength(128) ],\r\n Telefono: [ validator.required(true), validator.maxLength(20) ],\r\n TelefonoRepresentante: [ validator.required(true), validator.maxLength(20) ],\r\n };\r\n\r\n private async _saveAsync(): Promise {\r\n const $model = this.state.model;\r\n if ($model.IdTipoPersona === TipoPersonaEnum.PersonaNatural) {\r\n $model.Nombres = $model.PrimerNombre + ' ' + $model.SegundoNombre;\r\n $model.Apellidos = $model.PrimerApellido + ' ' + $model.SegundoApellido;\r\n }\r\n else {\r\n $model.Apellidos = $model.NombreRepresentante;\r\n }\r\n\r\n let validations: { [ key: string ]: any[] };\r\n let _validationTipoEntidad: { [ key: string ]: any[] } = {};\r\n\r\n if (this.state.mostrarTipoSolicitante) {\r\n _validationTipoEntidad = {\r\n IdTipoEntidad: [ validator.invalid(0, 'Campo requerido') ]\r\n }\r\n }\r\n\r\n if ($model.IdTipoPersona === TipoPersonaEnum.PersonaNatural) {\r\n let _validationAtencionPreferencial: { [ key: string ]: any[] } = {};\r\n let _validationIdentity: { [ key: string ]: any[] } = {};\r\n let _validationApoderado: { [ key: string ]: any[] } = {};\r\n let _validationNotificacionFisica: { [ key: string ]: any[] } = {};\r\n let _validationLlamadasFijo: { [ key: string ]: any[] } = {};\r\n let _validationLlamadasCelular: { [ key: string ]: any[] } = {};\r\n\r\n _validationAtencionPreferencial = {\r\n IdAntencionPreferencial: [ validator.invalid(0, 'Campo requerido') ]\r\n };\r\n\r\n if ($model.IdTipoIdentificacion === TipoIdentificacionEnum.CedulaCiudadania) {\r\n _validationIdentity = {\r\n Identificacion: [ validator.required(true), validator.identity(), validator.maxLength(20) ]\r\n };\r\n }\r\n\r\n if ($model.IdAntencionPreferencial === AtencionPreferencialEnum.Discapacidad) {\r\n _validationAtencionPreferencial = {\r\n IdDiscapacidad: [ validator.invalid(0, 'Campo requerido') ]\r\n };\r\n }\r\n else if ($model.IdAntencionPreferencial === AtencionPreferencialEnum.GrupoEtnico) {\r\n _validationAtencionPreferencial = {\r\n IdGrupoEtnico: [ validator.invalid(0, 'Campo requerido') ]\r\n };\r\n }\r\n\r\n if ($model.ActuaComoApoderado) {\r\n _validationApoderado = {\r\n IdentificacionApoderado: [ validator.required(true), validator.identity() ],\r\n IdTipoIdentificacionApoderado: [ validator.invalid(0, 'Campo requerido') ],\r\n NombresApoderado: [ validator.required(true) ],\r\n ApellidosApoderado: [ validator.required(true) ],\r\n EmailApoderado: [ validator.required(true) ]\r\n };\r\n }\r\n\r\n if ($model.AutorizaLlamadaCelular) {\r\n _validationLlamadasCelular = {\r\n Celular: [ validator.invalid(0, 'Campo requerido') ]\r\n };\r\n }\r\n\r\n if ($model.AutorizaLlamadaFijo) {\r\n _validationLlamadasFijo = {\r\n Telefono: [ validator.invalid(0, 'Campo requerido') ]\r\n };\r\n }\r\n\r\n if ($model.AutorizaNotificacionFisica) {\r\n _validationNotificacionFisica = {\r\n Direccion: [ validator.required(true) ]\r\n };\r\n }\r\n\r\n validations = { ...this._validations, ...this._validationNatural, ..._validationAtencionPreferencial, ..._validationIdentity, ..._validationApoderado, ..._validationNotificacionFisica, ..._validationLlamadasCelular, ..._validationLlamadasFijo, ..._validationTipoEntidad }\r\n }\r\n else {\r\n validations = { ...this._validations, ...this._validationJuridica, ..._validationTipoEntidad }\r\n }\r\n\r\n if (validateObject($model, validations, this._updateErrors.bind(this))) {\r\n try {\r\n\r\n if ($model.IdTipoPersona === TipoPersonaEnum.PersonaNatural && !$_.isNull($model.FechaNacimiento)) {\r\n const dtNow = DateTime.Now.TruncateDate();\r\n const dtValue = new DateTime($model.FechaNacimiento).TruncateDate();\r\n const dtOneMonthAgo = new Date(dtNow.getFullYear(), dtNow.getMonth() - 1, dtNow.getDate());\r\n\r\n // Comparar la fecha ingresada con la fecha un mes atrás\r\n if (dtValue > dtOneMonthAgo) {\r\n alert('Debe seleccionar una fecha válida de nacimiento');\r\n return;\r\n }\r\n }\r\n\r\n const resultCaptcha = this._recaptcha.isValid();\r\n if (resultCaptcha.isCaptchaValid === false) {\r\n alert('Debe completar la validación de seguridad.');\r\n return;\r\n }\r\n this.setState({ isSaving: true });\r\n await this._pqrWebService.updateContactAsync($model, resultCaptcha.recaptchaToken);\r\n this.setState({ isSaving: false });\r\n\r\n sessionStorage.setItem('ioip.pqr-web.session.idtipocontacto', $model.IdTipoContacto.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.nombres', $model.Nombres.toUpperCase());\r\n sessionStorage.setItem('ioip.pqr-web.session.apellidos', $model.Apellidos.toUpperCase());\r\n sessionStorage.setItem('ioip.pqr-web.session.tipoid', $model.IdTipoContacto.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.email', $model.Email);\r\n sessionStorage.setItem('ioip.pqr-web.session.celular', $model.Celular);\r\n sessionStorage.setItem('ioip.pqr-web.session.telefono', $model.Telefono);\r\n sessionStorage.setItem('ioip.pqr-web.session.direccion', $model.Direccion);\r\n sessionStorage.setItem('ioip.pqr-web.session.barrio', $model.Barrio);\r\n sessionStorage.setItem('ioip.pqr-web.session.extension', $model.Extension);\r\n sessionStorage.setItem('ioip.pqr-web.session.idpais', $model.IdPais.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.iddepartamento', $model.IdDepartamento.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.idciudad', $model.IdCiudad.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.codigopostal', $model.CodigoPostal);\r\n sessionStorage.setItem('ioip.pqr-web.session.idantencionpreferencial', $model.IdAntencionPreferencial.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.iddiscapacidad', $model.IdDiscapacidad.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.idgenero', $model.IdGenero.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.idgrupoetnico', $model.IdGrupoEtnico.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.nombrerepresentante', $model.NombreRepresentante);\r\n sessionStorage.setItem('ioip.pqr-web.session.emailrepresentante', $model.EmailRepresentante);\r\n sessionStorage.setItem('ioip.pqr-web.session.cargorepresentante', $model.CargoRepresentante);\r\n sessionStorage.setItem('ioip.pqr-web.session.telefonorepresentante', $model.TelefonoRepresentante);\r\n sessionStorage.setItem('ioip.pqr-web.session.idtipopersona', $model.IdTipoPersona.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.primernombre', $model.PrimerNombre);\r\n sessionStorage.setItem('ioip.pqr-web.session.segundonombre', $model.SegundoNombre);\r\n sessionStorage.setItem('ioip.pqr-web.session.primerapellido', $model.PrimerApellido);\r\n sessionStorage.setItem('ioip.pqr-web.session.segundoapellido', $model.SegundoApellido);\r\n sessionStorage.setItem('ioip.pqr-web.session.idprofesion', $model.IdProfesion.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.idnivelEducativo', $model.IdNivelEducativo.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.fechaNacimiento', $model.FechaNacimiento ? $model.FechaNacimiento.toString() : '');\r\n sessionStorage.setItem('ioip.pqr-web.session.idtipoentidad', $model.IdTipoEntidad.toString());\r\n\r\n sessionStorage.setItem('ioip.pqr-web.session.autorizatratamientodatos', $model.AutorizaTratamientoDatos.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.autorizallamadacelular', $model.AutorizaLlamadaCelular.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.autorizallamadafijo', $model.AutorizaLlamadaFijo.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.autorizanotificacionemail', $model.AutorizaNotificacionEmail.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.autorizanotificacionfisica', $model.AutorizaNotificacionFisica.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.actuacomoapoderado', $model.ActuaComoApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.idtipoidentificacionapoderado', $model.IdTipoIdentificacionApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.identificacionapoderado', $model.IdentificacionApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.nombresapoderado', $model.NombresApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.apellidosapoderado', $model.ApellidosApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.telefonoapoderado', $model.TelefonoApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.direccionapoderado', $model.DireccionApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.emailapoderado', $model.EmailApoderado.toString());\r\n\r\n alert('Los datos fueron actualizados correctamente.');\r\n window.location.href = '#/home';\r\n\r\n } catch (ex) {\r\n alert((ex as any).exceptionMessage);\r\n }\r\n }\r\n }\r\n\r\n private get isAuthenticate(): boolean {\r\n const token = sessionStorage.getItem('ioip.pqr-web.session.token');\r\n if (token === null || token === undefined) {\r\n return false;\r\n }\r\n const date = sessionStorage.getItem('ioip.pqr-web.session.expiracion');\r\n return true;\r\n }\r\n\r\n\r\n}","export enum MyPendingWorksComponentMode {\r\n MyPendingWorksComponentMode = 1,\r\n\r\n}","import { ChoiceGroup, ComboBox, DatePicker, DayOfWeek, DefaultButton, IChoiceGroupOption, IComboBoxOption, IContextualMenuItem, Panel, PanelType, Pivot, PivotItem, PrimaryButton, SelectionMode, TextField } from \"@fluentui/react\";\r\nimport { isNullOrEmpty } from '@ioip/core/lib';\r\nimport { GenericDataTableComponent } from 'ioip-base/lib/common';\r\nimport React from 'react';\r\nimport { IAnswerEntidadAdscrita, defaultAnswerEntidadAdscrita } from '../../../classes/entidades-adscritas/answer-entidad-adscrita';\r\nimport { ICloserEntidadAdscrita, defaultCloserEntidadAdscrita } from '../../../classes/entidades-adscritas/closer-entidad-adscrita';\r\nimport { IRadicadoEntradaExtended } from '../../../classes/radicado-entrada-extended';\r\nimport { Sede } from '../../../classes/shared';\r\nimport { DatePickerStrings, IDocumento, fileToBase64, onFormatDate, showConfirmation, showError } from '../../../ioip/sdk/base';\r\nimport { DropZoneComponent } from '../../../ioip/sdk/components';\r\nimport { PqrWebService } from '../../../services/services';\r\nimport { MyPendingWorksComponentMode } from './my-pending-works-mode.enum';\r\nimport { IMyPendingWorksComponentProps } from './my-pending-works.props';\r\nimport { IMyPendingWorksComponentState, defaultMyPendingWorksComponentState } from './my-pending-works.state';\r\n\r\nexport class MyPendingWorksComponent extends React.Component {\r\n\r\n private _pqrWebService: PqrWebService;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = defaultMyPendingWorksComponentState();\r\n this._pqrWebService = new PqrWebService();\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n try {\r\n const parameter = Sede.shared.context.FechaConsultaSolicitudes;\r\n\r\n if (!isNullOrEmpty(parameter) && parameter !== '-') {\r\n const fecha: string = parameter.split(',', 2)[ 0 ];\r\n const url: string = parameter.split(',', 2)[ 1 ];\r\n this.setState({\r\n ...this.state,\r\n redirectConsultRequest: {\r\n fecha,\r\n url,\r\n show: true\r\n },\r\n });\r\n }\r\n\r\n let camposParametrizable = await this._pqrWebService.getParameterAsync('Sede_Electronica', 'EstadoLineaHonor');\r\n let habilitarEstadoEntidadAdscita = await this._pqrWebService.getParameterAsync('Sede_Electronica', 'EstadoHonorEntidadAdscrita');\r\n let idUsuario = await this._pqrWebService.getParameterAsync('Sede_Electronica', 'SuperUsuarioEntidadAdscrita');\r\n\r\n const result = 184000000;\r\n\r\n this.setState({\r\n ...this.state,\r\n maxLengthFile: result,\r\n EstadoLineaHonor: camposParametrizable,\r\n HabilitarEstadoEntidadAdscita: habilitarEstadoEntidadAdscita,\r\n userId: Number(idUsuario.Value)\r\n });\r\n } catch (error) {\r\n alert(error.toString());\r\n }\r\n }\r\n render(): JSX.Element {\r\n return (\r\n
      \r\n
      \r\n \r\n {this.state.ShowPanelEnviarRespuesta &&\r\n \r\n
      \r\n
      \r\n
      \r\n \r\n   \r\n \r\n
      \r\n
      \r\n
      }\r\n closeButtonAriaLabel='Cerrar'>\r\n
      \r\n
      \r\n \r\n
      \r\n\r\n
      \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.procesarCampoParametrizable()\r\n }\r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n\r\n
      \r\n \r\n
      \r\n
      \r\n\r\n
      \r\n \r\n \r\n item.IdDocumentoRadicadoEntrada <= 0}\r\n items={this.state.DocumentoPrincipal}\r\n maxLength={this.state.maxLengthFile}\r\n multiple={false}\r\n useDefaultExtensions={false}\r\n onRemove={this._onRemoveDocumentoPrincipal.bind(this)}\r\n onChange={this._onChangeDocumentoPrincipal.bind(this)}\r\n allowedExtensions={Sede.shared.context.AllowedExtensions}\r\n />\r\n \r\n \r\n
      \r\n {this.state.errors[ 'DocumentoPrincipal' ]}\r\n\r\n
      \r\n \r\n \r\n item.IdDocumentoRadicadoEntrada <= 0}\r\n items={this.state.Anexos}\r\n maxLength={this.state.maxLengthFile}\r\n multiple={true}\r\n useDefaultExtensions={false}\r\n onRemove={this._onRemoveAnexo.bind(this)}\r\n onChange={this._onChangeAnexos.bind(this)}\r\n allowedExtensions={Sede.shared.context.AllowedExtensions}\r\n />\r\n \r\n \r\n
      \r\n
      \r\n \r\n }\r\n {this.state.ShowPanelDevolverPqr &&\r\n \r\n
      \r\n
      \r\n
      \r\n \r\n   \r\n \r\n
      \r\n
      \r\n
      }\r\n closeButtonAriaLabel='Cerrar'>\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n \r\n }\r\n {this.state.ShowPanelCerrarRespuestas &&\r\n \r\n
      \r\n
      \r\n
      \r\n \r\n   \r\n \r\n
      \r\n
      \r\n
      }\r\n closeButtonAriaLabel='Cerrar'>\r\n
      \r\n
      \r\n \r\n
      \r\n\r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n\r\n
      \r\n \r\n
      \r\n
      \r\n\r\n
      \r\n \r\n \r\n item.IdDocumentoRadicadoEntrada <= 0}\r\n items={this.state.DocumentoPrincipal}\r\n maxLength={this.state.maxLengthFile}\r\n multiple={false}\r\n useDefaultExtensions={false}\r\n onRemove={this._onRemoveDocumentoPrincipal.bind(this)}\r\n onChange={this._onChangeDocumentoPrincipal.bind(this)}\r\n allowedExtensions={Sede.shared.context.AllowedExtensions}\r\n />\r\n \r\n \r\n
      \r\n\r\n {this.state.errors[ 'DocumentoPrincipal' ]}\r\n\r\n
      \r\n \r\n \r\n item.IdDocumentoRadicadoEntrada <= 0}\r\n items={this.state.Anexos}\r\n maxLength={this.state.maxLengthFile}\r\n multiple={true}\r\n useDefaultExtensions={false}\r\n onRemove={this._onRemoveAnexo.bind(this)}\r\n onChange={this._onChangeAnexos.bind(this)}\r\n allowedExtensions={Sede.shared.context.AllowedExtensions}\r\n />\r\n \r\n \r\n
      \r\n\r\n
      \r\n \r\n }\r\n
      \r\n\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n );\r\n }\r\n\r\n private getMethod(): string {\r\n var method: string;\r\n\r\n if (this.props.mode === MyPendingWorksComponentMode.MyPendingWorksComponentMode) {\r\n method = 'getPaginatePending';\r\n }\r\n\r\n return method;\r\n }\r\n\r\n private async _onSelectedRow(rows: IRadicadoEntradaExtended[]) {\r\n\r\n if (rows.length > 0) {\r\n\r\n if (rows.length >= 1) {\r\n this.setState({\r\n commandBar: await this._buildCommandBar(rows),\r\n IdRadicadoEntradaSelected: rows[ 0 ].IdRadicadoEntrada,\r\n SelectedItems: rows,\r\n });\r\n }\r\n } else {\r\n this.setState({\r\n commandBar: await this._buildCommandBar([]),\r\n IdRadicadoEntradaSelected: 0,\r\n SelectedItems: []\r\n });\r\n }\r\n }\r\n\r\n private async _buildCommandBar(selectedItems: IRadicadoEntradaExtended[]): Promise {\r\n const commandBar: IContextualMenuItem[] = [];\r\n commandBar.push(\r\n {\r\n key: 'Exportar a Excel',\r\n name: 'Exportar a Excel',\r\n iconProps: { iconName: 'MergeDuplicate' },\r\n onClick: () => {\r\n new Promise(async (resolve) => {\r\n resolve(await this._exportToExcel())\r\n })\r\n }\r\n }\r\n );\r\n\r\n if (selectedItems.length == 1) {\r\n if (sessionStorage.getItem('ioip.pqr-web.session.email').toLowerCase() == selectedItems[ 0 ].CorreoElectronicoContacto.toLowerCase()) {\r\n commandBar.push(\r\n {\r\n key: 'EnviarRespuesta',\r\n name: 'Enviar Respuesta',\r\n iconProps: { iconName: 'send' },\r\n onClick: () => {\r\n this.setState({\r\n ShowPanelEnviarRespuesta: true\r\n });\r\n }\r\n }\r\n );\r\n commandBar.push(\r\n {\r\n key: 'DevolverPqr',\r\n name: 'Devolver PQR',\r\n iconProps: { iconName: 'NavigateBack' },\r\n onClick: () => {\r\n this.setState({\r\n ShowPanelDevolverPqr: true\r\n });\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n if (selectedItems.length >= 1) {\r\n if (this.state.userId == Sede.shared.contactId) {\r\n commandBar.push(\r\n {\r\n key: 'Cerrar Registro',\r\n name: 'Cerrar Registro',\r\n iconProps: { iconName: 'ClosePaneMirrored' },\r\n onClick: () => {\r\n this.setState({\r\n ShowPanelCerrarRespuestas: true\r\n });\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n return commandBar;\r\n }\r\n\r\n private async _exportToExcel(): Promise {\r\n try {\r\n this._pqrWebService.exportMyPendingWorksAsync();\r\n } catch (error) {\r\n console.log(error);\r\n alert(error);\r\n }\r\n }\r\n\r\n\r\n private async _clean(): Promise {\r\n this.setState({\r\n ShowPanelEnviarRespuesta: false,\r\n ShowPanelCerrarRespuestas: false,\r\n IdRadicadoEntradaSelected: 0,\r\n Anexos: [],\r\n DocumentoPrincipal: [],\r\n Observaciones: '',\r\n ObservacionesCierre: '',\r\n ObservacionesDevolver: '',\r\n RespuestaDefinitiva: false,\r\n errors: {}\r\n }, () => {\r\n this.setState({\r\n ShowPanelEnviarRespuesta: false,\r\n ShowPanelCerrarRespuestas: false,\r\n ShowPanelDevolverPqr: false,\r\n });\r\n });\r\n }\r\n\r\n\r\n protected _changeModelCheckBox(property: string, ev?: React.FormEvent, checked?: boolean): void {\r\n this.setState({\r\n ...(this.state as any),\r\n [ property ]: checked\r\n });\r\n }\r\n\r\n private async _onRemoveAnexo(item: any): Promise {\r\n const items = this.state.DocumentoPrincipal.filter(o => o.NombreArchivo !== item.Name);\r\n this.setState({\r\n ...this.state,\r\n Anexos: items\r\n\r\n });\r\n }\r\n\r\n private async _onChangeAnexos(documents: IDocumento[]): Promise {\r\n this.setState({\r\n ...this.state,\r\n Anexos: documents,\r\n\r\n });\r\n }\r\n\r\n\r\n private async _onRemoveDocumentoPrincipal(item: any): Promise {\r\n const items = this.state.DocumentoPrincipal.filter(o => o.NombreArchivo !== item.Name);\r\n this.setState({\r\n ...this.state,\r\n DocumentoPrincipal: items\r\n\r\n });\r\n }\r\n\r\n private async _onChangeDocumentoPrincipal(documents: IDocumento[]): Promise {\r\n this.setState({\r\n ...this.state,\r\n DocumentoPrincipal: documents\r\n });\r\n }\r\n\r\n private async _onChangeLineaHonorComboBox(property: string, event: any, option?: IComboBoxOption, index?: number, value?: string, submitPendingValueEvent?: any): Promise {\r\n this.setState({\r\n ...this.state,\r\n IdEstadoLineaHonor: Number(option.key),\r\n [ property ]: option.text\r\n });\r\n }\r\n\r\n public validateFields(tipo: string): boolean {\r\n\r\n try {\r\n let errors = {};\r\n let hasError = false;\r\n\r\n if (tipo == \"Responder\") {\r\n if (this.state.Observaciones.trim().length <= 0) {\r\n errors[ 'Observaciones' ] = 'Campo requerido';\r\n hasError = true;\r\n }\r\n else {\r\n errors[ 'Observaciones' ] = '';\r\n }\r\n\r\n if (this.state.DocumentoPrincipal === undefined || this.state.DocumentoPrincipal === null) {\r\n errors[ 'DocumentoPrincipal' ] = 'El documento principal es obligatorio';\r\n hasError = true;\r\n showError('El documento principal es requerido.');\r\n }\r\n else {\r\n if (this.state.DocumentoPrincipal.length <= 0) {\r\n errors[ 'DocumentoPrincipal' ] = 'El documento principal es obligatorio';\r\n hasError = true;\r\n showError('El documento principal es requerido.');\r\n }\r\n else {\r\n errors[ 'DocumentoPrincipal' ] = '';\r\n }\r\n }\r\n\r\n if (this.state.NumeroDocumento.trim().length <= 0) {\r\n errors[ 'NumeroDocumento' ] = 'Campo requerido';\r\n hasError = true;\r\n }\r\n else {\r\n errors[ 'NumeroDocumento' ] = '';\r\n }\r\n\r\n let idContacto = Sede.shared.contactId;\r\n let entidades = this.state.HabilitarEstadoEntidadAdscita.Value.split(',');\r\n\r\n if (entidades.filter(name => name.includes(idContacto.toString())).length > 0) {\r\n if (this.state.IdEstadoLineaHonor == 0) {\r\n errors[ 'NombreEstadoLineaHonor' ] = 'Campo requerido';\r\n hasError = true;\r\n }\r\n }\r\n }\r\n else {\r\n if (tipo == \"Devolver\") {\r\n if (this.state.ObservacionesDevolver.trim().length <= 0) {\r\n errors[ 'ObservacionesDevolver' ] = 'Campo requerido';\r\n hasError = true;\r\n }\r\n else {\r\n errors[ 'ObservacionesDevolver' ] = '';\r\n }\r\n }\r\n else {\r\n if (this.state.ObservacionesCierre.trim().length <= 0) {\r\n errors[ 'ObservacionesCierre' ] = 'Campo requerido';\r\n hasError = true;\r\n }\r\n else {\r\n errors[ 'ObservacionesCierre' ] = '';\r\n }\r\n\r\n if (this.state.DocumentoPrincipal === undefined || this.state.DocumentoPrincipal === null) {\r\n errors[ 'DocumentoPrincipal' ] = 'El documento principal es obligatorio';\r\n hasError = true;\r\n showError('El documento principal es requerido.');\r\n }\r\n else {\r\n if (this.state.DocumentoPrincipal.length <= 0) {\r\n errors[ 'DocumentoPrincipal' ] = 'El documento principal es obligatorio';\r\n hasError = true;\r\n showError('El documento principal es requerido.');\r\n }\r\n else {\r\n errors[ 'DocumentoPrincipal' ] = '';\r\n }\r\n }\r\n }\r\n }\r\n this.setState({\r\n errors\r\n }, () => { });\r\n\r\n return hasError;\r\n\r\n }\r\n catch (error) {\r\n showError(error.toString());\r\n return true;\r\n }\r\n }\r\n\r\n private async _EnviarRespuesta() {\r\n\r\n if (this.validateFields(\"Responder\") === false) {\r\n showConfirmation('Enviar respuesta', '¿Está seguro que desea enviar la respuesta?', async () => {\r\n try {\r\n let respuesta: IAnswerEntidadAdscrita = defaultAnswerEntidadAdscrita();\r\n respuesta.IdRadicadoEntrada = this.state.SelectedItems[ 0 ].IdRadicadoEntrada;\r\n respuesta.Observaciones = this.state.Observaciones;\r\n respuesta.RespuestaDefinitiva = this.state.RespuestaDefinitiva;\r\n respuesta.DocumentoPrincipal = await fileToBase64(this.state.DocumentoPrincipal[ 0 ].Archivo);\r\n\r\n respuesta.Autor = this.state.SelectedItems[ 0 ].CorreoElectronicoContacto;\r\n respuesta.EstadoLineaHonor = this.state.NombreEstadoLineaHonor;\r\n respuesta.NumeroDocumento = this.state.NumeroDocumento;\r\n respuesta.FechaEnvio = this.state.FechaEnvio;\r\n\r\n for (let i = 0; i < this.state.Anexos.length; i++) {\r\n const element = this.state.Anexos[ i ];\r\n element.Archivo64 = await fileToBase64(element.Archivo);\r\n respuesta.Anexos.push(element.Archivo64);\r\n element.Archivo = undefined;\r\n }\r\n\r\n let result = await this._pqrWebService.SaveAnswerFromEntidadAdscritaAsync(respuesta);\r\n\r\n this.setState({\r\n ...this.state,\r\n ShowPanelEnviarRespuesta: false\r\n\r\n }, () => { window.location.href = '#/sign-in/answer-rs' });\r\n\r\n\r\n\r\n if (result) {\r\n alert('Respuesta enviada correctamente.');\r\n }\r\n else {\r\n alert('Error guardando la respuesta.');\r\n }\r\n\r\n } catch (exexption) {\r\n const ex: any = exexption;\r\n alert(ex.exceptionMessage || ex.ExceptionMessage);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private async _DevolverPqr() {\r\n if (this.validateFields(\"Devolver\") === false) {\r\n showConfirmation('Enviar respuesta', '¿Está seguro que desea devolver el PQR?', async () => {\r\n try {\r\n let result = await this._pqrWebService.devolverPqrAsync(this.state.SelectedItems.map(o => o.IdRadicadoSalida),\r\n this.state.ObservacionesDevolver);\r\n\r\n this.setState({\r\n ...this.state,\r\n ShowPanelDevolverPqr: false\r\n }, () => { window.location.href = '#/sign-in/answer-rs' });\r\n\r\n\r\n if (result) {\r\n alert('PQR devuelto correctamente.');\r\n }\r\n else {\r\n alert('Error devolviendo PQR.');\r\n }\r\n\r\n } catch (ex) {\r\n alert(ex.toString());\r\n }\r\n });\r\n }\r\n }\r\n\r\n private async _CerrarRespuesta() {\r\n if (this.validateFields(\"Cerrar\") === false) {\r\n showConfirmation('Enviar respuesta', '¿Está seguro que desea cerrar las respuestas?', async () => {\r\n try {\r\n\r\n let respuesta: ICloserEntidadAdscrita = defaultCloserEntidadAdscrita();\r\n respuesta.IdRadicados = this.state.SelectedItems.map(o => o.IdRadicadoEntrada);\r\n respuesta.Observaciones = this.state.ObservacionesCierre;\r\n respuesta.RespuestaDefinitiva = this.state.RespuestaDefinitiva;\r\n respuesta.DocumentoPrincipal = await fileToBase64(this.state.DocumentoPrincipal[ 0 ].Archivo);\r\n\r\n respuesta.Autor = this.state.SelectedItems[ 0 ].CorreoElectronicoContacto;\r\n respuesta.EstadoLineaHonor = this.state.NombreEstadoLineaHonor;\r\n respuesta.NumeroDocumento = this.state.NumeroDocumento;\r\n respuesta.FechaEnvio = this.state.FechaEnvio;\r\n\r\n for (let i = 0; i < this.state.Anexos.length; i++) {\r\n const element = this.state.Anexos[ i ];\r\n element.Archivo64 = await fileToBase64(element.Archivo);\r\n respuesta.Anexos.push(element.Archivo64);\r\n element.Archivo = undefined;\r\n }\r\n\r\n let result = await this._pqrWebService.closeEntidadAdscritaBySuperUserAsync(respuesta);\r\n\r\n this.setState({\r\n ...this.state,\r\n ShowPanelCerrarRespuestas: false\r\n }, () => { window.location.href = '#/sign-in/answer-rs' });\r\n\r\n\r\n if (result == 'true') {\r\n alert('Peticiones cerradas correctamente.');\r\n }\r\n else {\r\n alert('Error cerrando alguna solicitud.');\r\n }\r\n\r\n } catch (ex) {\r\n alert(ex.toString());\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected _changeModelTextField(property: string, _: any, value: string) {\r\n this.setState({\r\n ...(this.state as any),\r\n [ property ]: value\r\n\r\n });\r\n }\r\n\r\n\r\n private _onChangeOpcionPreferenciaRespuesta(ev?: React.FormEvent, option?: IChoiceGroupOption): void {\r\n this.setState({\r\n\r\n ...this.state,\r\n RespuestaDefinitiva: option.key === '0' ? false : true\r\n\r\n\r\n });\r\n }\r\n\r\n protected _OnChangeModelDate(property: string, date: Date | null | undefined): void {\r\n this.setState({\r\n ...(this.state as any),\r\n [ property ]: date\r\n });\r\n };\r\n\r\n private procesarCampoParametrizable(): JSX.Element {\r\n\r\n let idContacto = Sede.shared.contactId;\r\n let entidades = this.state.HabilitarEstadoEntidadAdscita.Value.split(',');\r\n\r\n if (entidades.filter(name => name.includes(idContacto.toString())).length > 0) {\r\n if (this.state.EstadoLineaHonor != undefined) {\r\n\r\n const tmp = JSON.stringify(this.state.EstadoLineaHonor.Value);\r\n const tmp2 = JSON.parse(tmp);\r\n const tmp3 = JSON.parse(tmp2);\r\n\r\n const option: IComboBoxOption[] = tmp3.Option.map(o => ({ key: o.Key, text: o.Name }));\r\n\r\n if (tmp3.TipoCampo == \"ComboBox\") {\r\n\r\n if (tmp3.Requerido == \"true\")\r\n this.setState({ IdEstadoLineaHonor: 0 });\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}","import { IChoiceGroupOption, IColumn, IContextualMenuItem } from \"@fluentui/react\";\r\nimport { ISuscriptionParameter, defaultISuscriptionParameter } from \"../../../classes/iparametro\";\r\nimport { IRadicadoEntradaExtended } from \"../../../classes/radicado-entrada-extended\";\r\nimport { IDocumento } from \"../../../ioip/sdk/base\";\r\n\r\nexport interface IMyPendingWorksComponentState {\r\n items: IRadicadoEntradaExtended[];\r\n errors: { [ key: string ]: string };\r\n Identificacion: string;\r\n IdTipoIdentificacion: string;\r\n showAclaracion: boolean;\r\n IdRadicadoEntradaSelected: number;\r\n NombreEstadoLineaHonor: string;\r\n IdEstadoLineaHonor: number,\r\n EstadoLineaHonor: ISuscriptionParameter,\r\n HabilitarEstadoEntidadAdscita: ISuscriptionParameter,\r\n userId: number,\r\n\r\n data: {\r\n extensionesPermitiras: string;\r\n },\r\n commandBar: IContextualMenuItem[];\r\n redirectConsultRequest: {\r\n show: boolean;\r\n fecha: string;\r\n url: string;\r\n },\r\n\r\n ShowPanelEnviarRespuesta: boolean;\r\n ShowPanelDevolverPqr: boolean;\r\n ShowPanelCerrarRespuestas: boolean;\r\n Observaciones: string;\r\n ObservacionesCierre: string;\r\n RespuestaDefinitiva: boolean;\r\n\r\n DocumentoPrincipal: IDocumento[];\r\n Anexos: IDocumento[];\r\n\r\n SelectedItems: IRadicadoEntradaExtended[];\r\n opcionesRespuestaDefinitiva: IChoiceGroupOption[];\r\n maxLengthFile: number;\r\n columns: IColumn[];\r\n\r\n NumeroDocumento: string;\r\n FechaEnvio?: Date;\r\n\r\n ObservacionesDevolver: string;\r\n}\r\n\r\nexport function defaultMyPendingWorksComponentState(): IMyPendingWorksComponentState {\r\n return {\r\n items: [],\r\n Identificacion: '',\r\n IdTipoIdentificacion: '',\r\n errors: {},\r\n showAclaracion: false,\r\n IdRadicadoEntradaSelected: 0,\r\n NombreEstadoLineaHonor: '',\r\n IdEstadoLineaHonor: 0,\r\n EstadoLineaHonor: defaultISuscriptionParameter(),\r\n HabilitarEstadoEntidadAdscita: defaultISuscriptionParameter(),\r\n userId: 0,\r\n data: {\r\n extensionesPermitiras: 'pdf docx txt xls'\r\n },\r\n commandBar: [],\r\n redirectConsultRequest: {\r\n show: false,\r\n fecha: null,\r\n url: ''\r\n },\r\n ShowPanelEnviarRespuesta: false,\r\n ShowPanelDevolverPqr: false,\r\n ShowPanelCerrarRespuestas: false,\r\n Anexos: [],\r\n DocumentoPrincipal: undefined,\r\n Observaciones: '',\r\n ObservacionesCierre: '',\r\n ObservacionesDevolver: '',\r\n RespuestaDefinitiva: false,\r\n SelectedItems: [],\r\n opcionesRespuestaDefinitiva: [\r\n {\r\n key: '0',\r\n text: 'Respuesta parcial',\r\n },\r\n {\r\n key: '1',\r\n text: 'Respuesta definitiva',\r\n }\r\n ],\r\n maxLengthFile: 0,\r\n columns: [\r\n {\r\n key: 'Número',\r\n name: 'Número',\r\n fieldName: 'NumeroRadicado',\r\n minWidth: 120,\r\n maxWidth: 120,\r\n isResizable: true\r\n },\r\n {\r\n key: 'Tramite',\r\n name: 'Trámite',\r\n fieldName: 'Tramite',\r\n minWidth: 80,\r\n maxWidth: 100,\r\n isResizable: true\r\n },\r\n {\r\n key: 'Clasificación',\r\n name: 'Clasificación',\r\n fieldName: 'ClasificacionPQRS',\r\n minWidth: 100,\r\n maxWidth: 110,\r\n isResizable: true,\r\n isSorted: false\r\n },\r\n {\r\n key: 'FechaCreacionString2',\r\n name: 'Fecha de creación',\r\n fieldName: 'FechaCreacionString2',\r\n minWidth: 120,\r\n maxWidth: 120,\r\n isSorted: false,\r\n isResizable: true\r\n },\r\n {\r\n key: 'Asunto',\r\n name: 'Asunto',\r\n fieldName: 'Asunto',\r\n isMultiline: true,\r\n maxWidth: 150,\r\n minWidth: 130,\r\n isResizable: true\r\n },\r\n {\r\n key: 'NombreEntidadAdscrita',\r\n name: 'Entidad',\r\n fieldName: 'NombreEntidadAdscrita',\r\n maxWidth: 150,\r\n minWidth: 120,\r\n isResizable: true\r\n },\r\n {\r\n key: 'CorreoElectronicoContacto',\r\n name: 'Correo contacto',\r\n fieldName: 'CorreoElectronicoContacto',\r\n maxWidth: 250,\r\n minWidth: 200,\r\n isResizable: true\r\n },\r\n {\r\n key: 'TiempoMaximoRespuestaString',\r\n name: 'Fecha maxima de respuesta',\r\n fieldName: 'TiempoMaximoRespuestaString',\r\n maxWidth: 170,\r\n minWidth: 150,\r\n isResizable: true\r\n }\r\n ],\r\n NumeroDocumento: '',\r\n FechaEnvio: null\r\n };\r\n}","export interface ISuscriptionParameter {\r\n ID: number;\r\n Name: string;\r\n Description: string;\r\n Group: string;\r\n Value: string;\r\n Encrypt: boolean;\r\n Editable: boolean;\r\n Visible: boolean;\r\n}\r\n\r\nexport function defaultISuscriptionParameter(): ISuscriptionParameter {\r\n return {\r\n ID: 0,\r\n Name: '',\r\n Group: '',\r\n Value: '',\r\n Description: '',\r\n Encrypt: false,\r\n Editable: true,\r\n Visible: true\r\n }\r\n}","import { IDocumento } from \"../../ioip/sdk/base\";\r\n\r\nexport interface IAnswerEntidadAdscrita {\r\n IdRadicadoEntrada: number;\r\n Observaciones: string;\r\n RespuestaDefinitiva: boolean;\r\n DocumentoPrincipal: string;\r\n Anexos: string[];\r\n Autor: string;\r\n NumeroDocumento: string;\r\n FechaEnvio?: Date;\r\n EstadoLineaHonor:string,\r\n}\r\n\r\nexport function defaultAnswerEntidadAdscrita(): IAnswerEntidadAdscrita {\r\n return {\r\n Anexos: [],\r\n DocumentoPrincipal: '',\r\n IdRadicadoEntrada: 0,\r\n Observaciones: '',\r\n RespuestaDefinitiva: false,\r\n Autor: '',\r\n NumeroDocumento: '',\r\n FechaEnvio: null,\r\n EstadoLineaHonor: '',\r\n };\r\n}","import { IDocumento } from \"../../ioip/sdk/base\";\r\n\r\nexport interface ICloserEntidadAdscrita {\r\n IdRadicados: number[];\r\n Observaciones: string;\r\n RespuestaDefinitiva: boolean;\r\n DocumentoPrincipal: string;\r\n Anexos: string[];\r\n Autor: string;\r\n NumeroDocumento: string;\r\n FechaEnvio?: Date;\r\n EstadoLineaHonor:string,\r\n }\r\n \r\n export function defaultCloserEntidadAdscrita(): ICloserEntidadAdscrita {\r\n return {\r\n Anexos: [],\r\n DocumentoPrincipal: '',\r\n IdRadicados: [],\r\n Observaciones: '',\r\n RespuestaDefinitiva: false,\r\n Autor: '',\r\n NumeroDocumento: '',\r\n FechaEnvio: null,\r\n EstadoLineaHonor: '',\r\n };\r\n }","export enum MyRequestsComponentMode {\r\n MyRequests = 1,\r\n MyRequestsAnonymous = 2\r\n}","import React from 'react';\r\nimport { IMyRequestsComponentProps } from './my-requests.props';\r\nimport { defaultMyRequestsComponentState, IMyRequestsComponentState } from './my-requests.state';\r\nimport { MyRequestsComponentMode } from './my-requests-mode.enum';\r\nimport { PqrWebService } from '../../services/services';\r\nimport { IRadicadoEntradaExtended } from '../../classes/radicado-entrada-extended';\r\nimport { EstadoRadicado, EstadoRadicadoSalida } from '../../ioip/sdk/base';\r\nimport { DefaultButton, SelectionMode, IContextualMenuItem } from \"@fluentui/react\";\r\nimport { MsalAuthProvider, LoginType, AuthenticationState } from \"react-aad-msal\";\r\nimport { GenericDataTableComponent } from 'ioip-base/lib/common';\r\n\r\nexport class MyRequestsComponent extends React.Component {\r\n\r\n private _pqrWebService: PqrWebService;\r\n private _authProvider: MsalAuthProvider;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = defaultMyRequestsComponentState();\r\n this._pqrWebService = new PqrWebService();\r\n\r\n this._authProvider = new MsalAuthProvider(\r\n {\r\n auth: {\r\n authority: sessionStorage[ 'Authority' ],\r\n clientId: sessionStorage[ 'ClientId' ],\r\n postLogoutRedirectUri: window.location.origin + '/sede.html',\r\n redirectUri: window.location.origin + '/sede.html',\r\n validateAuthority: false,\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: true\r\n }\r\n },\r\n {\r\n scopes: [ sessionStorage[ 'Scopes' ] ]\r\n },\r\n {\r\n loginType: LoginType.Popup,\r\n tokenRefreshUri: window.location.origin\r\n }\r\n );\r\n\r\n }\r\n\r\n\r\n render(): JSX.Element {\r\n return (\r\n
      \r\n
      \r\n {\r\n if (item.IdEstadoActual !== EstadoRadicado.EnTramite) {\r\n return item.Estado;\r\n } else {\r\n return 'En trámite';\r\n //}\r\n }\r\n }\r\n }\r\n ]}\r\n title={'Mis solicitudes'}\r\n searchTooltip='Buscar solicitudes filtrando por el número de radicado'\r\n commandBarItems={this.state.commandBar}\r\n onSelectedRow={this._onSelectedRow.bind(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 private getMethod(): string {\r\n var method: string;\r\n if (this.props.mode === MyRequestsComponentMode.MyRequests) {\r\n method = 'getMyRequestsAsync';\r\n }\r\n else {\r\n method = 'getAnonymousRequestsAsync'\r\n }\r\n return method;\r\n }\r\n\r\n private async _onSelectedRow(rows: IRadicadoEntradaExtended[]) {\r\n if (rows.length > 0) {\r\n this.setState({\r\n commandBar: await this._buildCommandBar(rows[ 0 ]),\r\n IdRadicadoEntradaSelected: rows[ 0 ].IdRadicadoEntrada\r\n });\r\n }\r\n }\r\n\r\n private async _buildCommandBar(selectedItem: IRadicadoEntradaExtended): Promise {\r\n const commandBar: IContextualMenuItem[] = [];\r\n if (selectedItem) {\r\n commandBar.push(\r\n {\r\n key: 'Descargar solicitud',\r\n name: 'Descargar solicitud',\r\n iconProps: { iconName: 'Download' },\r\n onClick: () => {\r\n this._downloadRadicadoEntrada(selectedItem.IdRadicadoEntrada);\r\n }\r\n },\r\n {\r\n key: 'Descargar anexos',\r\n name: 'Descargar anexos',\r\n iconProps: { iconName: 'Download' },\r\n onClick: () => {\r\n this._downloadAnexosRadicadoEntrada(selectedItem.IdRadicadoEntrada);\r\n }\r\n }\r\n );\r\n if (selectedItem.IdRadicadoSalida != null && selectedItem.IdEstadoActualRadicadoSalida === EstadoRadicadoSalida.Aprobado) {\r\n commandBar.push(\r\n {\r\n key: 'Descargar respuesta',\r\n name: 'Descargar respuesta',\r\n iconProps: { iconName: 'Download' },\r\n onClick: () => {\r\n this._downloadRadicadoSalida(selectedItem.IdRadicadoSalida);\r\n }\r\n }\r\n );\r\n if (await this._verifyAttachmentsRadicadoSalida(selectedItem.IdRadicadoSalida)) {\r\n commandBar.push(\r\n {\r\n key: 'Descargar anexos respuesta',\r\n name: 'Descargar anexos respuesta',\r\n iconProps: { iconName: 'Download' },\r\n onClick: () => {\r\n this._pqrWebService.downloadAttactmentsRadicadoSalida(selectedItem.IdRadicadoSalida);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n return commandBar;\r\n }\r\n\r\n private async _getTokenB2C() {\r\n\r\n if (this._authProvider !== undefined) {\r\n if (this._authProvider.authenticationState == AuthenticationState.Authenticated) {\r\n const token = await this._authProvider.getIdToken();\r\n if (token !== undefined)\r\n sessionStorage.setItem('ioip.pqr-web.session.token', token.idToken.rawIdToken);\r\n }\r\n }\r\n }\r\n\r\n private async _downloadRadicadoEntrada(IdRadicadoEntrada: number) {\r\n this._getTokenB2C();\r\n this._pqrWebService.downloadRadicadoEntrada(IdRadicadoEntrada);\r\n }\r\n\r\n private async _downloadAnexosRadicadoEntrada(IdRadicadoEntrada: number) {\r\n this._getTokenB2C();\r\n this._pqrWebService.downloadAnexosRadicadoEntrada(IdRadicadoEntrada);\r\n }\r\n\r\n private async _downloadRadicadoSalida(IdRadicadoSalida: number) {\r\n this._getTokenB2C();\r\n this._pqrWebService.downloadRadicadoSalida(IdRadicadoSalida);\r\n }\r\n\r\n private async _verifyAttachmentsRadicadoSalida(idRadicadoSalida: number): Promise {\r\n const result: boolean = await this._pqrWebService.verifyAttachmentsRadicadoSalidaAsync(idRadicadoSalida);\r\n return result;\r\n }\r\n\r\n}","import { IRadicadoEntradaExtended } from \"../../classes/radicado-entrada-extended\";\r\nimport { IDocumento } from \"../../ioip/sdk/base\";\r\nimport { IContextualMenuItem } from \"@fluentui/react\";\r\n\r\nexport interface IMyRequestsComponentState {\r\n items: IRadicadoEntradaExtended[];\r\n errors: { [ key: string ]: string };\r\n Identificacion: string;\r\n IdTipoIdentificacion: string;\r\n IdRadicadoEntradaSelected: number;\r\n data: {\r\n extensionesPermitiras: string;\r\n },\r\n commandBar: IContextualMenuItem[];\r\n}\r\n\r\nexport function defaultMyRequestsComponentState(): IMyRequestsComponentState {\r\n return {\r\n items: [],\r\n Identificacion: '',\r\n IdTipoIdentificacion: '',\r\n errors: {},\r\n IdRadicadoEntradaSelected: 0,\r\n data: {\r\n extensionesPermitiras: 'pdf docx txt xls'\r\n },\r\n commandBar: []\r\n };\r\n}","import { useProcesox } from \"@ioip/procesox/lib\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { ReactRenderer } from '@ioip/procesox/lib/portal/forms/components/ReactRenderer';\r\nimport MainButton from \"../HomeComponent/MainButton\";\r\nimport { CReactComponent } from \"@ioip/procesox/lib/forms/ReactComponent/CReactComponent\";\r\n\r\nexport const CustomComponent = (): JSX.Element => {\r\n\r\n const procesox = useProcesox();\r\n const [ component, setComponent ] = useState();\r\n const { id } = useParams<{ id: string }>();\r\n\r\n useEffect(() => {\r\n const loadForm = async () => {\r\n const component = await procesox.getReactComponentAsync(id);\r\n setComponent(component);\r\n };\r\n loadForm();\r\n }, []);\r\n\r\n if (component == null)\r\n return
      Loading...
      ;\r\n\r\n return \r\n\r\n}","import React from 'react';\r\nimport { IRecoverPasswordComponentProps } from './recover-password.props';\r\nimport { IRecoverPasswordComponentState } from './recover-password.state';\r\nimport { validator, ValidationResult, validateObject } from '../../ioip/sdk/base';\r\nimport { PqrWebService } from '../../services/services';\r\nimport { ComboBox, TextField, IComboBoxOption, PrimaryButton, DefaultButton, Label } from \"@fluentui/react\";\r\n\r\nexport class RecoverPasswordComponent extends React.Component {\r\n\r\n private _pqrWebService: PqrWebService;\r\n\r\n private _validationsStep1: { [ key: string ]: any[] } = {\r\n IdTipoIdentificacion: [\r\n validator.invalid(0, 'Campo requerido')\r\n ],\r\n Identificacion: [\r\n validator.required(true),\r\n validator.maxLength(128)\r\n ],\r\n Email: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.email(),\r\n validator.custom(this._checkEmail.bind(this))\r\n ],\r\n Email2: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.email(),\r\n validator.custom(this._checkEmail.bind(this))\r\n ],\r\n // IdPreguntaSecreta: [ validator.invalid(0, 'Campo requerido') ],\r\n // RespuestaSecreta: [ validator.required(true), validator.maxLength(128) ]\r\n };\r\n private _validationsStep2: { [ key: string ]: any[] } = {\r\n Password: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.custom(this._checkPassword.bind(this))\r\n ],\r\n Password2: [\r\n validator.required(true),\r\n validator.maxLength(128),\r\n validator.custom(this._checkPassword.bind(this))\r\n ],\r\n CodigoVerificacion: [\r\n validator.required(true),\r\n validator.maxLength(256),\r\n ]\r\n };\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n model: {\r\n Email: '',\r\n Email2: '',\r\n RespuestaSecreta: '',\r\n IdPreguntaSecreta: 0,\r\n IdTipoIdentificacion: 0,\r\n Identificacion: '',\r\n Password: '',\r\n Password2: '',\r\n CodigoVerificacion: ''\r\n },\r\n errors: {},\r\n preguntasCO: [],\r\n showValidationCodeField: false,\r\n tiposIdentificacionCO: []\r\n }\r\n this._pqrWebService = new PqrWebService();\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n const result = await Promise.all([\r\n this._pqrWebService.getAllQuestionsAsync(),\r\n this._pqrWebService.getAllIdentificationTypesAsync()\r\n ]);\r\n this.setState({\r\n preguntasCO: result[ 0 ].map(o => ({ key: o.IdPreguntaSecreta, text: o.Nombre })),\r\n tiposIdentificacionCO: result[ 1 ].map(o => ({ key: o.IdTipoIdentificacion, text: o.Nombre }))\r\n });\r\n }\r\n\r\n render(): JSX.Element {\r\n return
      \r\n
      \r\n
      \r\n

      Olvidé mi contraseña

      \r\n
      \r\n
      \r\n {\r\n this.state.showValidationCodeField === false &&
      \r\n
      \r\n this._onChangeComboBox('IdTipoIdentificacion', value)}\r\n options={this.state.tiposIdentificacionCO}\r\n useComboBoxAsMenuWidth={true}\r\n errorMessage={this.state.errors[ 'IdTipoIdentificacion' ]}\r\n required={true}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('Identificacion', value)}\r\n errorMessage={this.state.errors[ 'Identificacion' ]}\r\n value={this.state.model.Identificacion}\r\n />\r\n
      \r\n
      \r\n }\r\n {\r\n this.state.showValidationCodeField === false &&
      \r\n
      \r\n this._onChangeTextField('Email', value)}\r\n errorMessage={this.state.errors[ 'Email' ]}\r\n value={this.state.model.Email}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('Email2', value)}\r\n errorMessage={this.state.errors[ 'Email2' ]}\r\n value={this.state.model.Email2}\r\n />\r\n
      \r\n
      \r\n }\r\n {/* {\r\n this.state.showValidationCodeField === false &&
      \r\n
      \r\n this._onChangeComboBox('IdPreguntaSecreta', value)}\r\n options={this.state.preguntasCO}\r\n useComboBoxAsMenuWidth={true}\r\n errorMessage={this.state.errors[ 'IdPreguntaSecreta' ]}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('RespuestaSecreta', value)}\r\n errorMessage={this.state.errors[ 'RespuestaSecreta' ]}\r\n value={this.state.model.RespuestaSecreta}\r\n />\r\n
      \r\n
      \r\n } */}\r\n {\r\n this.state.showValidationCodeField === false &&
      \r\n
      \r\n
      \r\n {this.state.errors[ 'error-paso1' ]}\r\n
      \r\n
      \r\n
      \r\n }\r\n {\r\n this.state.showValidationCodeField === true &&
      \r\n
      \r\n \r\n
      \r\n
      \r\n }\r\n {\r\n this.state.showValidationCodeField === true &&
      \r\n
      \r\n this._onChangeTextField('CodigoVerificacion', value)}\r\n errorMessage={this.state.errors[ 'CodigoVerificacion' ]}\r\n value={this.state.model.CodigoVerificacion}\r\n />\r\n
      \r\n
      \r\n }\r\n {\r\n this.state.showValidationCodeField === true &&
      \r\n
      \r\n this._onChangeTextField('Password', value)}\r\n errorMessage={this.state.errors[ 'Password' ]}\r\n value={this.state.model.Password}\r\n />\r\n
      \r\n
      \r\n this._onChangeTextField('Password2', value)}\r\n errorMessage={this.state.errors[ 'Password2' ]}\r\n value={this.state.model.Password2}\r\n />\r\n
      \r\n
      \r\n }\r\n {\r\n this.state.showValidationCodeField === true &&
      \r\n
      \r\n
      \r\n {this.state.errors[ 'error-paso2' ]}\r\n
      \r\n
      \r\n
      \r\n }\r\n {\r\n this.state.showValidationCodeField === false &&
      \r\n
      \r\n \r\n   \r\n \r\n
      \r\n
      \r\n }\r\n {/* {\r\n this.state.showValidationCodeField === false &&
      \r\n \r\n
      \r\n } */}\r\n {\r\n this.state.showValidationCodeField === true &&
      \r\n
      \r\n \r\n   \r\n \r\n
      \r\n
      \r\n }\r\n
      \r\n }\r\n\r\n private _checkPassword(): ValidationResult {\r\n const result: ValidationResult = new ValidationResult();\r\n if (this.state.model.Password != this.state.model.Password2) {\r\n result.hasError = true;\r\n result.errorMessage = 'Las constraseñas establecidas no coinciden';\r\n }\r\n return result;\r\n }\r\n\r\n private _checkEmail(): ValidationResult {\r\n const result: ValidationResult = new ValidationResult();\r\n if (this.state.model.Email.toLowerCase() != this.state.model.Email2.toLowerCase()) {\r\n result.hasError = true;\r\n result.errorMessage = 'Las direcciones de correo electrónico no coinciden';\r\n }\r\n return result;\r\n }\r\n\r\n private _updateErrors(errors: { [ key: string ]: string }): void {\r\n this.setState({ errors });\r\n }\r\n\r\n private async _recoverPasswordAsync(): Promise {\r\n if (validateObject(this.state.model, this._validationsStep1, this._updateErrors.bind(this))) {\r\n try {\r\n const result = await this._pqrWebService.recoverPasswordAsync(this.state.model);\r\n if (result === true) {\r\n this.setState({\r\n showValidationCodeField: true\r\n });\r\n }\r\n } catch (ex) {\r\n this.setState({\r\n errors: {\r\n 'error-paso1': 'Ocurrió un error al recuperar la contraseña, por favor verifique que sus datos sean correctos.'\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private async _changePasswordAsync(): Promise {\r\n if (validateObject(this.state.model, this._validationsStep2, this._updateErrors.bind(this))) {\r\n try {\r\n const result = await this._pqrWebService.changePasswordAsync(this.state.model);\r\n if (result === true) {\r\n window.location.href = '#home';\r\n }\r\n } catch (ex) {\r\n const error = `Ocurrió un error : ${(ex as any).exceptionMessage}`;\r\n this.setState({\r\n errors: {\r\n 'error-paso2': error//'El código de verificación es incorrecto.'\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private _onChangeComboBox(property: string, option?: IComboBoxOption, index?: number, value?: string, submitPendingValueEvent?: any): void {\r\n const state = {\r\n ...this.state,\r\n model: {\r\n ...this.state.model,\r\n [ property ]: Number(option.key)\r\n }\r\n };\r\n this.setState(state);\r\n }\r\n\r\n private _onChangeTextField(property: string, value: string): void {\r\n const state = {\r\n model: {\r\n ...this.state.model,\r\n [ property ]: value\r\n }\r\n };\r\n this.setState(state);\r\n }\r\n\r\n\r\n}","import { ChoiceGroup, IChoiceGroupOption, PrimaryButton } from \"@fluentui/react\";\r\nimport React from 'react';\r\nimport { IPreguntaEncuestaSatisfaccion } from '../../classes/satisfaction-survey/pregunta-encuesta';\r\nimport { IRespuestaEncuestaSatisfaccion } from '../../classes/satisfaction-survey/respuesta-encuesta';\r\nimport { showConfirmation } from '../../ioip/sdk/base';\r\nimport { PqrWebService } from '../../services/services';\r\nimport { ISatisfactionSurveyComponentProps } from './satisfaction-survey.props';\r\nimport { ISatisfactionSurveyComponentState } from './satisfaction-survey.state';\r\n\r\nexport class SatisfactionSurveyComponent extends React.Component {\r\n\r\n private _pqrWebService: PqrWebService;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n errors: {},\r\n idRadicadoEntrada64: decodeURI(window.location.hash.replace('#/satisfaction-survey/:', '')),\r\n isSurveyCompleted: false,\r\n itemsRender: [],\r\n respuestasSeleccionadas: []\r\n }\r\n this._pqrWebService = new PqrWebService();\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n const isSurveyCompleted = await this._pqrWebService.isSurveyCompletedAsync(this.state.idRadicadoEntrada64);\r\n if (isSurveyCompleted) {\r\n this.setState({\r\n isSurveyCompleted\r\n });\r\n }\r\n else {\r\n const preguntas: IPreguntaEncuestaSatisfaccion[] = await this._pqrWebService.getPreguntasEncuestaAsync();\r\n let preguntasRespuestas = []\r\n let i = 0;\r\n while (i < preguntas.length) {\r\n let respuestas: IRespuestaEncuestaSatisfaccion[] = await this._pqrWebService.getRespuestasByIdPreguntaAsync(preguntas[ i ].IdPreguntaEncuestaSatisfaccion);\r\n preguntasRespuestas.push({\r\n IdPreguntaEncuestaSatisfaccion: preguntas[ i ].IdPreguntaEncuestaSatisfaccion,\r\n Nombre: preguntas[ i ].Nombre,\r\n respuestas: respuestas.map(o => ({ key: o.IdRespuestaEncuestaSatisfaccion.toString(), text: o.Nombre }))\r\n })\r\n i++;\r\n }\r\n let itemsRender = preguntasRespuestas.map(o =>\r\n
      \r\n \r\n
      \r\n
      )\r\n this.setState({\r\n itemsRender,\r\n isSurveyCompleted: false\r\n });\r\n }\r\n }\r\n\r\n render(): JSX.Element {\r\n if (this.state.isSurveyCompleted) {\r\n return this.renderError();\r\n }\r\n else {\r\n return this.renderEncuesta();\r\n }\r\n }\r\n\r\n renderError(): JSX.Element {\r\n return
      \r\n
      \r\n
      \r\n

      Encuesta de satisfacción de usuario

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

      Esta encuesta ya fue diligenciada.

      \r\n
      \r\n
      \r\n
      \r\n\r\n }\r\n\r\n renderEncuesta(): JSX.Element {\r\n return
      \r\n
      \r\n
      \r\n

      Encuesta de satisfacción de usuario

      \r\n
      \r\n
      \r\n {this.state.itemsRender}\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n }\r\n\r\n private _onChangeOpcionRespuesta(IdPregunta: number, ev?: React.FormEvent, option?: IChoiceGroupOption): void {\r\n let respuestasSeleccionadas: IRespuestaEncuestaSatisfaccion[] = this.state.respuestasSeleccionadas;\r\n if (respuestasSeleccionadas.length > 0) {\r\n respuestasSeleccionadas = respuestasSeleccionadas.filter(o => o.IdPreguntaEncuestaSatisfaccion != IdPregunta)\r\n }\r\n let respuesta: IRespuestaEncuestaSatisfaccion = {\r\n IdPreguntaEncuestaSatisfaccion: IdPregunta,\r\n IdRespuestaEncuestaSatisfaccion: Number(option.key)\r\n }\r\n respuestasSeleccionadas.push(respuesta);\r\n this.setState({\r\n ...this.state,\r\n respuestasSeleccionadas\r\n });\r\n }\r\n\r\n private async _sendSurveyResponsesAsync(): Promise {\r\n try {\r\n if (this.state.respuestasSeleccionadas.length <= 2) {\r\n alert('Por favor seleccione una respuesta para todas las preguntas.');\r\n return;\r\n }\r\n showConfirmation('Enviar solicitud', '¿Está seguro que desea enviar la encuesta? Una vez registrada no se podrá realizar ninguna modificación.', async () => {\r\n await this._pqrWebService.sendSurveyResponsesAsync(this.state.respuestasSeleccionadas, this.state.idRadicadoEntrada64);\r\n alert('Gracias por darnos su opinion, seguiremos mejorando para ofrecer un mejor servicio cada día.');\r\n window.location.href = '#/home';\r\n })\r\n\r\n } catch (ex) {\r\n this.setState({\r\n errors: {\r\n 'error-general': ex.toString()\r\n }\r\n });\r\n alert(ex);\r\n }\r\n }\r\n\r\n}","import { createStore, Reducer, compose } from \"redux\";\r\nimport { AuthenticationActions, AuthenticationState } from \"react-aad-msal\";\r\n\r\n// add redux devtools extension as a property/method in window\r\ndeclare global {\r\n interface Window {\r\n __REDUX_DEVTOOLS_EXTENSION__?: typeof compose;\r\n }\r\n}\r\n\r\nconst initialState = {\r\n initializing: false,\r\n initialized: false,\r\n idToken: null,\r\n accessToken: null,\r\n state: AuthenticationState.Unauthenticated\r\n};\r\n\r\nconst rootReducer: Reducer = (\r\n state = initialState,\r\n action: { type: any; payload: { account: any } }\r\n) => {\r\n switch (action.type) {\r\n case AuthenticationActions.Initializing:\r\n return {\r\n ...state,\r\n initializing: true,\r\n initialized: false\r\n };\r\n case AuthenticationActions.Initialized:\r\n return {\r\n ...state,\r\n initializing: false,\r\n initialized: true\r\n };\r\n case AuthenticationActions.AcquiredIdTokenSuccess:\r\n return {\r\n ...state,\r\n idToken: action.payload\r\n };\r\n case AuthenticationActions.AcquiredAccessTokenSuccess:\r\n return {\r\n ...state,\r\n accessToken: action.payload\r\n };\r\n case AuthenticationActions.AcquiredAccessTokenError:\r\n return {\r\n ...state,\r\n accessToken: null\r\n };\r\n case AuthenticationActions.LoginSuccess:\r\n return {\r\n ...state,\r\n account: action.payload.account\r\n };\r\n case AuthenticationActions.LoginError:\r\n case AuthenticationActions.AcquiredIdTokenError:\r\n case AuthenticationActions.LogoutSuccess:\r\n return { ...state, idToken: null, accessToken: null, account: null };\r\n case AuthenticationActions.AuthenticatedStateChanged:\r\n return {\r\n ...state,\r\n state: action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport const basicReduxStore = createStore(\r\n rootReducer,\r\n // Enable the Redux DevTools extension if available\r\n /// See more: https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfiblj\r\n window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()\r\n);\r\n","import { ComboBox, DefaultButton, IComboBoxOption, PrimaryButton, TextField } from \"@fluentui/react\";\r\nimport { Column, Grid, Row, isNullOrEmpty } from '@ioip/core/lib';\r\nimport React from 'react';\r\nimport { AuthenticationState, AzureAD, IAzureADFunctionProps, LoginType, MsalAuthProvider } from \"react-aad-msal\";\r\nimport { Sede } from '../../classes/shared';\r\nimport { ISignInResponse } from '../../classes/sign-in-response';\r\nimport { validateObject, validator } from '../../ioip/sdk/base';\r\nimport { basicReduxStore } from \"../../reduxStore\";\r\nimport { PqrWebService } from '../../services/services';\r\nimport { ISignInComponentProps } from './sign-in.props';\r\nimport { ISignInComponentState } from './sign-in.state';\r\n\r\nexport class SignInComponent extends React.Component {\r\n\r\n private _pqrWebService: PqrWebService;\r\n private _authProvider: MsalAuthProvider;\r\n\r\n private _validations: { [ key: string ]: any[] } = {\r\n IdTipoIdentificacion: [ validator.invalid(0, 'Campo requerido') ],\r\n Identificacion: [ validator.required(true), validator.maxLength(128) ],\r\n Password: [ validator.required(true), validator.maxLength(128) ]\r\n };\r\n\r\n constructor(props: ISignInComponentProps) {\r\n super(props);\r\n this.state = {\r\n errors: {},\r\n model: {\r\n IdTipoIdentificacion: 0,\r\n Identificacion: '',\r\n Password: '',\r\n Dominio: (window as any).domain\r\n },\r\n tiposIdentificacion: [],\r\n redirectConsultRequest: {\r\n show: false,\r\n fecha: null,\r\n url: ''\r\n },\r\n leyHabeasData: {\r\n texto: '',\r\n url: ''\r\n }\r\n };\r\n\r\n this._authProvider = new MsalAuthProvider(\r\n {\r\n auth: {\r\n authority: Sede.shared.context.B2C.Authority,\r\n clientId: Sede.shared.context.B2C.ClientId,\r\n postLogoutRedirectUri: window.location.origin + '/sede.html',\r\n redirectUri: window.location.origin + '/sede.html',\r\n validateAuthority: false,\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: true\r\n }\r\n },\r\n {\r\n scopes: [ Sede.shared.context.B2C.Scopes ]\r\n },\r\n {\r\n loginType: LoginType.Popup,\r\n tokenRefreshUri: window.location.origin\r\n }\r\n );\r\n\r\n this._pqrWebService = new PqrWebService();\r\n this._loadDataAsync();\r\n }\r\n\r\n private get isAuthenticate(): boolean {\r\n const token = sessionStorage.getItem('ioip.pqr-web.session.token');\r\n if (token === null || token === undefined) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private get defaultTramiteId(): number {\r\n const props: any = this.props;\r\n const tramiteId: string = props.match?.params?.tramiteId;\r\n return (isNullOrEmpty(tramiteId) ? 0 : Number(tramiteId)) || 0;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n\r\n const tramiteId = this.defaultTramiteId;\r\n if (this.isAuthenticate) {\r\n window.location.href = this.props.ulrForm + (tramiteId > 0 ? `/${tramiteId}` : '');\r\n return;\r\n }\r\n\r\n try {\r\n let redirectConsultRequest = sessionStorage[ 'redirectConsultRequest_show' ];\r\n if (redirectConsultRequest == null) {\r\n const parameter = Sede.shared.context.FechaConsultaSolicitudes;\r\n if (!isNullOrEmpty(parameter) && parameter !== '-') {\r\n const fecha: string = parameter.split(',', 2)[ 0 ];\r\n const url: string = parameter.split(',', 2)[ 1 ];\r\n sessionStorage[ 'redirectConsultRequest_fecha' ] = fecha;\r\n sessionStorage[ 'redirectConsultRequest_url' ] = url;\r\n sessionStorage[ 'redirectConsultRequest_show' ] = true;\r\n }\r\n else {\r\n sessionStorage[ 'redirectConsultRequest_fecha' ] = '';\r\n sessionStorage[ 'redirectConsultRequest_url' ] = '';\r\n sessionStorage[ 'redirectConsultRequest_show' ] = false;\r\n }\r\n }\r\n\r\n let texto = '';\r\n let url = '';\r\n if (!isNullOrEmpty(Sede.shared.context.LeyHabeasData)) {\r\n texto = Sede.shared.context.LeyHabeasData.split('|', 2)[ 0 ];\r\n url = Sede.shared.context.LeyHabeasData.split('|', 2)[ 1 ];\r\n }\r\n\r\n this.setState({\r\n leyHabeasData: { texto: texto, url: url },\r\n redirectConsultRequest: {\r\n fecha: sessionStorage[ 'redirectConsultRequest_fecha' ],\r\n url: sessionStorage[ 'redirectConsultRequest_url' ],\r\n show: sessionStorage[ 'redirectConsultRequest_show' ] == 'true'\r\n }\r\n });\r\n\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n alert(error.message);\r\n }\r\n console.log(error);\r\n }\r\n }\r\n\r\n render(): JSX.Element {\r\n\r\n return \r\n
      \r\n
      \r\n

      Identificación

      \r\n
      \r\n
      \r\n \r\n \r\n this._onChangeComboBox('IdTipoIdentificacion', value)}\r\n options={this.state.tiposIdentificacion}\r\n useComboBoxAsMenuWidth={true}\r\n errorMessage={this.state.errors[ 'IdTipoIdentificacion' ]}\r\n required={true}\r\n />\r\n \r\n \r\n this._onChangeTextField('Identificacion', value)}\r\n errorMessage={this.state.errors[ 'Identificacion' ]}\r\n value={this.state.model.Identificacion}\r\n />\r\n \r\n \r\n \r\n \r\n this._onChangeTextField('Password', value)}\r\n errorMessage={this.state.errors[ 'Password' ]}\r\n value={this.state.model.Password}\r\n />\r\n \r\n \r\n
      \r\n
      \r\n {this.state.errors[ 'error' ]}\r\n
      \r\n
      \r\n
      \r\n
      \r\n {\r\n Sede.shared.context.B2C.IsEnabled &&\r\n \r\n {({ accountInfo, authenticationState, error }: IAzureADFunctionProps) => {\r\n return (\r\n <>\r\n {(\r\n \r\n {({ login, logout, authenticationState }: IAzureADFunctionProps) => {\r\n const isInProgress = authenticationState === AuthenticationState.InProgress;\r\n const isAuthenticated = authenticationState === AuthenticationState.Authenticated;\r\n const isUnauthenticated = authenticationState === AuthenticationState.Unauthenticated;\r\n if (isUnauthenticated || isInProgress) {\r\n return (\r\n \r\n );\r\n }\r\n else {\r\n if (isAuthenticated) {\r\n sessionStorage.setItem('ioip.pqr-web.session.token', accountInfo.jwtIdToken);\r\n\r\n const response = this._validarUsuario(accountInfo.jwtIdToken);\r\n\r\n response.then(value => {\r\n if (!value) {\r\n alert('Imposible autenticar el usuario');\r\n sessionStorage.clear();\r\n logout();\r\n }\r\n });\r\n\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 \r\n   \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n window.location.href = '#/create-contact'}\r\n />\r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n
      \r\n {this.state.leyHabeasData.texto}\r\n {this.state.leyHabeasData.url}\r\n
      \r\n
      \r\n {/*Texto para la consulta de solicitudes que no estén en la base de datos de ioip pero sí en un sistema anterior*/}\r\n {this.state.redirectConsultRequest.show &&\r\n
      \r\n
      \r\n
      \r\n Si requiere consultar una solicitud anterior a la fecha {this.state.redirectConsultRequest.fecha}, por favor de clic aquí.\r\n
      \r\n
      \r\n
      \r\n }\r\n
      \r\n }\r\n\r\n private async _loadDataAsync(): Promise {\r\n try {\r\n let result = await this._pqrWebService.getAllIdentificationTypesAsync();\r\n this.setState({\r\n tiposIdentificacion: result.map(o => ({ key: o.IdTipoIdentificacion, text: o.Nombre })),\r\n model: {\r\n ...this.state.model,\r\n IdTipoIdentificacion: result && result.length > 0 ? result[ 0 ].IdTipoIdentificacion : 0\r\n }\r\n });\r\n } catch (ex) {\r\n alert('Se ha producido un error al obtener los tipos de identificación');\r\n }\r\n }\r\n\r\n private async _validarUsuario(token: string): Promise {\r\n try {\r\n if (sessionStorage.getItem('ioip.pqr-web.session.autenticacion') != \"true\") {\r\n sessionStorage.setItem('ioip.pqr-web.session.token', token);\r\n sessionStorage.setItem('ioip.pqr-web.session.autenticacion', \"true\");\r\n var response: ISignInResponse = await this._pqrWebService.getDataUserAsync();\r\n if (response.IdContacto > 0) {\r\n await this._sesion(response);\r\n window.location.href = this.props.ulrForm;\r\n return true;\r\n }\r\n else\r\n if (response.IdContacto == -1 && sessionStorage[ 'b2c' ] != \"true\") {\r\n response = await this._pqrWebService.createDataUserAsync();\r\n await this._sesion(response);\r\n window.location.href = this.props.ulrForm;\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n catch (ex) {\r\n sessionStorage.clear();\r\n return false;\r\n }\r\n }\r\n\r\n private _onChangeComboBox(property: string, option?: IComboBoxOption, index?: number, value?: string, submitPendingValueEvent?: any): void {\r\n const state = {\r\n model: {\r\n ...this.state.model,\r\n [ property ]: Number(option.key)\r\n }\r\n };\r\n this.setState(state);\r\n }\r\n\r\n private _onChangeTextField(property: string, value: string): void {\r\n const state = {\r\n model: {\r\n ...this.state.model,\r\n [ property ]: value\r\n }\r\n };\r\n this.setState(state);\r\n }\r\n\r\n private _updateErrors(errors: { [ key: string ]: string }): void {\r\n this.setState({ errors });\r\n }\r\n\r\n private async _signInAsync(): Promise {\r\n if (validateObject(this.state.model, this._validations, this._updateErrors.bind(this))) {\r\n try {\r\n const response: ISignInResponse = await this._pqrWebService.sigInAsync(this.state.model);\r\n if (response) {\r\n if (!response.CorreoVerificado) {\r\n var resendUrl: boolean = window.confirm(\"Este usuario no está verificado, ¿desea reenviar el link de verificación de cuenta al correo registrado?\");\r\n if (resendUrl) {\r\n await this._pqrWebService.resendAccountVerificationUrlAsync(response.IdContacto);\r\n alert(`Se ha enviado a su dirección de correo registrado un enlace, por favor ingresar para activar la cuenta`);\r\n window.location.href = '#/home';\r\n }\r\n }\r\n else {\r\n await this._sesion(response);\r\n const tramiteId = this.defaultTramiteId;\r\n window.location.href = this.props.ulrForm + (tramiteId > 0 ? `/${tramiteId}` : '');\r\n }\r\n }\r\n else {\r\n alert(\"El usuario no existe o no ha activado su cuenta.\");\r\n }\r\n } catch (ex) {\r\n this.setState({\r\n errors: {\r\n 'error': 'Ocurrió un error al iniciar sesión, por favor verifique que sus datos sean correctos.'\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n private async _sesion(response: ISignInResponse) {\r\n Sede.shared.contactId = response.IdContacto;\r\n sessionStorage.setItem('ioip.pqr-web.session.idtipocontacto', response.IdTipoContacto.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.nombres', response.Nombres);\r\n sessionStorage.setItem('ioip.pqr-web.session.apellidos', response.Apellidos);\r\n sessionStorage.setItem('ioip.pqr-web.session.tipoid', response.TipoId.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.identificacion', response.Identificacion);\r\n sessionStorage.setItem('ioip.pqr-web.session.email', response.Email);\r\n sessionStorage.setItem('ioip.pqr-web.session.celular', response.Celular);\r\n sessionStorage.setItem('ioip.pqr-web.session.telefono', response.Telefono);\r\n sessionStorage.setItem('ioip.pqr-web.session.direccion', response.Direccion);\r\n sessionStorage.setItem('ioip.pqr-web.session.barrio', response.Barrio);\r\n sessionStorage.setItem('ioip.pqr-web.session.extension', response.Extension);\r\n sessionStorage.setItem('ioip.pqr-web.session.idpais', response.IdPais.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.iddepartamento', response.IdDepartamento.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.idciudad', response.IdCiudad.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.codigopostal', response.CodigoPostal);\r\n sessionStorage.setItem('ioip.pqr-web.session.token', response.Token);\r\n sessionStorage.setItem('ioip.pqr-web.session.expiracion', response.FechaExpiracion);\r\n sessionStorage.setItem('ioip.pqr-web.session.idantencionpreferencial', response.IdAntencionPreferencial.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.iddiscapacidad', response.IdDiscapacidad.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.idgenero', response.IdGenero.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.idgrupoetnico', response.IdGrupoEtnico.toString());\r\n\r\n sessionStorage.setItem('ioip.pqr-web.session.nombrerepresentante', response.NombreRepresentante.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.emailrepresentante', response.EmailRepresentante.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.cargorepresentante', response.CargoRepresentante.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.telefonorepresentante', response.TelefonoRepresentante.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.idtipopersona', response.IdTipoPersona.toString());\r\n\r\n sessionStorage.setItem('ioip.pqr-web.session.primernombre', response.PrimerNombre.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.segundonombre', response.SegundoNombre.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.primerapellido', response.PrimerApellido.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.segundoapellido', response.SegundoApellido.toString());\r\n\r\n sessionStorage.setItem('ioip.pqr-web.session.fechaModificacion', response.FechaModificacion.toString());\r\n\r\n sessionStorage.setItem('ioip.pqr-web.session.idprofesion', response.IdProfesion.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.idnivelEducativo', response.IdNivelEducativo.toString());\r\n\r\n sessionStorage.setItem('ioip.pqr-web.session.fechaNacimiento', response.FechaNacimientoString.toString());\r\n\r\n sessionStorage.setItem('ioip.pqr-web.session.idtipoentidad', response.IdTipoEntidad.toString());\r\n\r\n sessionStorage.setItem('ioip.pqr-web.session.autorizatratamientodatos', response.AutorizaTratamientoDatos.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.autorizallamadacelular', response.AutorizaLlamadaCelular.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.autorizallamadafijo', response.AutorizaLlamadaFijo.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.autorizanotificacionemail', response.AutorizaNotificacionEmail.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.autorizanotificacionfisica', response.AutorizaNotificacionFisica.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.actuacomoapoderado', response.ActuaComoApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.idtipoidentificacionapoderado', response.IdTipoIdentificacionApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.identificacionapoderado', response.IdentificacionApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.nombresapoderado', response.NombresApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.apellidosapoderado', response.ApellidosApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.telefonoapoderado', response.TelefonoApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.direccionapoderado', response.DireccionApoderado.toString());\r\n sessionStorage.setItem('ioip.pqr-web.session.emailapoderado', response.EmailApoderado.toString());\r\n }\r\n}","import { DefaultButton, PrimaryButton, TextField } from \"@fluentui/react\";\r\nimport React from 'react';\r\nimport { $_ } from '../../ioip/sdk/base';\r\nimport { PqrWebService } from '../../services/services';\r\nimport { ReCaptchaComponent } from '../recaptcha/ReCaptchaComponent';\r\nimport { IVerifiDocumentComponentProps } from './verify-document.props';\r\nimport { IVerifiDocumentComponentState } from './verify-document.state';\r\n\r\nexport class VerifiDocumentComponent extends React.Component {\r\n\r\n private _ref: any;\r\n #service: PqrWebService = new PqrWebService();\r\n #recaptcha: ReCaptchaComponent;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n const match = (this.props as any).match;\r\n const documentId = match.params.documentId;\r\n let part1 = '', part2 = '', part3 = '', part4 = '', part5 = '';\r\n if (!$_.isNullOrEmpty(documentId)) {\r\n const parts = documentId.split('-');\r\n if (parts.length === 5) {\r\n part1 = parts[ 0 ];\r\n part2 = parts[ 1 ];\r\n part3 = parts[ 2 ];\r\n part4 = parts[ 3 ];\r\n part5 = parts[ 4 ];\r\n }\r\n\r\n }\r\n this.state = {\r\n documentId: documentId || '',\r\n documentError: '',\r\n part1,\r\n part2,\r\n part3,\r\n part4,\r\n part5,\r\n reCaptchaToken: '',\r\n documentLoaded: false\r\n };\r\n\r\n this.verifyDocumentId = this.verifyDocumentId.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n }\r\n\r\n render(): JSX.Element {\r\n return
      \r\n
      \r\n
      \r\n

      Verificación de documentos

      \r\n
      \r\n
      \r\n
      \r\n
      \r\n this.setState({ part1 })}\r\n />\r\n
      \r\n
      \r\n this.setState({ part2 })}\r\n />\r\n
      \r\n
      \r\n this.setState({ part3 })}\r\n />\r\n
      \r\n
      \r\n this.setState({ part4 })}\r\n />\r\n
      \r\n
      \r\n this.setState({ part5 })}\r\n />\r\n
      \r\n
      \r\n
      \r\n
      \r\n this.#recaptcha = x} />\r\n
      \r\n
      \r\n
      \r\n
      \r\n {this.state.documentError}\r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n this._ref = e}\r\n >\r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n }\r\n\r\n private async verifyDocumentId() {\r\n const resultCaptcha = this.#recaptcha.isValid();\r\n if (resultCaptcha.isCaptchaValid === false) {\r\n this.setState({\r\n documentError: 'Debe completar la validación de seguridad'\r\n });\r\n return;\r\n }\r\n else {\r\n let documentId = this.state.documentId;\r\n if ($_.isNullOrEmpty(documentId)) {\r\n documentId = this.state.part1 + '-' + this.state.part2 + '-' + this.state.part3 + '-' + this.state.part4 + '-' + this.state.part5\r\n }\r\n try {\r\n const result = await this.#service.getSignaxServerDocumentById(documentId, resultCaptcha.recaptchaToken);\r\n var file = new Blob([ result ], { type: 'application/pdf' });\r\n let blobUrl = URL.createObjectURL(file);\r\n this._ref.src = blobUrl;\r\n window.URL.revokeObjectURL(blobUrl);\r\n this.setState({\r\n documentError: '',\r\n documentLoaded: true\r\n });\r\n }\r\n catch (error) {\r\n alert('Se ha producido un error al obtener el documento, por favor verifique que el token sea correcto o recargue la página para diligenciar nuevamente el reCAPTCHA.' + error);\r\n }\r\n }\r\n }\r\n\r\n}","import { ArchivoxProvider } from \"@ioip/archivox/lib\";\r\nimport { IArchivoxOverrideApi } from \"@ioip/archivox/lib/providers/IArchivoxOverrideApi\";\r\nimport { IHostProviderProps, RootApp, confirmationSlice, languageSlice, layoutSlice, pluginEditorSlice } from '@ioip/core/lib';\r\nimport { ProcesoxProvider } from '@ioip/procesox/lib';\r\nimport { ITramitexApi, TramitexProvider, } from '@ioip/tramitex/lib';\r\nimport { configureStore } from \"@reduxjs/toolkit\";\r\nimport React from 'react';\r\nimport { Provider } from \"react-redux\";\r\nimport { HashRouter, Redirect, Route, Switch } from 'react-router-dom';\r\nimport './App.css';\r\nimport { Sede } from './classes/shared';\r\nimport HomeComponent from './components/HomeComponent/HomeComponent';\r\nimport ArchivosComponent from \"./components/archivos-component/archivos.component\";\r\nimport { CheckAccountErrorComponent } from './components/check-account-error/check-account-error.component';\r\nimport { CheckAnonymousRequestComponent } from './components/check-anonymous-request/check-anonymous-request.component';\r\nimport CrearSolicitudComponent from './components/crear-solicitud/crear-solicitud.component';\r\nimport { CreatePqrComponentMode } from './components/crear-solicitud/create-pqr-mode.enum';\r\nimport { CreateContactNewUserComponent } from './components/create-contact-component/create-contact-new-user.component';\r\nimport { CreateContactComponent } from './components/create-contact-component/create-contact.component';\r\nimport { DescargaComponent } from './components/descarga-component/descarga.component';\r\nimport { EditContactComponent } from './components/edit-contact/edit-contact.component';\r\nimport { MyPendingWorksComponentMode } from './components/entidades-adscritas/my-pending-works/my-pending-works-mode.enum';\r\nimport { MyPendingWorksComponent } from './components/entidades-adscritas/my-pending-works/my-pending-works.component';\r\nimport { MyRequestsComponentMode } from './components/my-requests/my-requests-mode.enum';\r\nimport { MyRequestsComponent } from './components/my-requests/my-requests.component';\r\nimport { CustomComponent } from \"./components/procesox/CustomComponent\";\r\nimport { RecoverPasswordComponent } from './components/recover-password/recover-password.component';\r\nimport { SatisfactionSurveyComponent } from './components/satisfaction-survey/satisfaction-survey.component';\r\nimport { SignInComponent } from './components/sign-in/sign-in.component';\r\nimport { VerifiDocumentComponent } from './components/verify-document/verify-document.component';\r\nimport { initSdk, showConfirmation, showError, successToast } from './ioip/sdk/base';\r\nimport { PqrWebService } from './services/services';\r\n\r\ninterface IAppState {\r\n isLoading: boolean;\r\n}\r\n\r\nexport const store = configureStore({\r\n reducer: {\r\n\r\n // @ioip\\core\r\n [ confirmationSlice.name ]: confirmationSlice.reducer,\r\n [ layoutSlice.name ]: layoutSlice.reducer,\r\n [ pluginEditorSlice.name ]: pluginEditorSlice.reducer,\r\n [ languageSlice.name ]: languageSlice.reducer,\r\n },\r\n middleware: getDefaultMiddleware => getDefaultMiddleware().concat([\r\n\r\n ]),\r\n devTools: {\r\n name: 'Archivox/Tramitex/Processox',\r\n trace: process.env.NODE_ENV !== 'production',\r\n traceLimit: 2500\r\n }\r\n});\r\n\r\nexport class App extends React.Component {\r\n\r\n constructor(props: IAppState) {\r\n super(props);\r\n initSdk();\r\n this.state = {\r\n isLoading: true\r\n };\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n const service = new PqrWebService();\r\n Sede.shared.context = await service.getContextAsync();\r\n this.setState({ isLoading: false });\r\n }\r\n\r\n render(): JSX.Element {\r\n\r\n if (this.state.isLoading)\r\n return
      Cargando...
      \r\n\r\n const hostProviderProps: IHostProviderProps = {\r\n baseUrl: \"\",\r\n onOpenFile: options => { },\r\n onShowConfirmAsync: async (title, text) => {\r\n return new Promise((resolve) => {\r\n showConfirmation(title, text, () => resolve(true));\r\n });\r\n },\r\n onShowError: (text) => showError(text),\r\n onShowMessage: (title, text, callback) => showError(text, title),\r\n onSuccessToast: (text) => successToast(text.description),\r\n onOpenFileViewer: async (options) => { },\r\n useMsal: false,\r\n onGetAccessToken: async () => '',\r\n onGetApimKey: () => '',\r\n onGetHeaders: async () => ({}),\r\n onGetUserPreferencesAsync: async () => null,\r\n onUpdateUserPreferences(httpClient, model) {\r\n return new Promise((resolve, reject) => {\r\n resolve();\r\n });\r\n },\r\n onGetAppContext: async () => ({\r\n UserId: 1,\r\n LoginName: 'user',\r\n Name: 'user',\r\n })\r\n };\r\n\r\n const archivoxApis: IArchivoxOverrideApi = {\r\n getCitiesAsync: async () => {\r\n console.log('getCitiesAsync');\r\n return [];\r\n },\r\n getCountriesAsync: async () => {\r\n return [];\r\n },\r\n getDepartmentsAsync: async () => {\r\n console.log('getDepartmentsAsync');\r\n return [];\r\n },\r\n getProfilesAsync: async () => {\r\n return [];\r\n },\r\n getRoles: async () => {\r\n return [];\r\n },\r\n getSectionsAsync: async () => {\r\n return [];\r\n },\r\n getSeriesAsync: async () => {\r\n return [];\r\n },\r\n getSubseriesAsync: async () => {\r\n return [];\r\n },\r\n getTrdVersionsAsync: async () => {\r\n return [];\r\n },\r\n getUsersAsync: async () => {\r\n return [];\r\n }\r\n }\r\n\r\n const tramitexApis: ITramitexApi = {\r\n getAgeRangesAsync: async () => {\r\n return [];\r\n },\r\n getCompanyTypesAsync: async () => {\r\n return [];\r\n },\r\n getContactTypesAsync: async () => {\r\n return [];\r\n },\r\n getDisabilitiesAsync: async () => {\r\n return [];\r\n },\r\n getEducationLevelsAsync: async () => {\r\n return [];\r\n },\r\n getEthnicGroupsAsync: async () => {\r\n return [];\r\n },\r\n getGendersAsync: async () => {\r\n return [];\r\n },\r\n getIdentificationTypesAsync: async () => {\r\n return [];\r\n },\r\n getOrientationSectorsAsync: async () => {\r\n return [];\r\n },\r\n getPreferentialTreatmentsAsync: async () => {\r\n return [];\r\n },\r\n getProceduresAsync: async () => {\r\n return [];\r\n },\r\n getProfessionsAsync: async () => {\r\n return [];\r\n }\r\n }\r\n\r\n let procesoxBaseUrtl = Sede.shared.procesoxUrl;\r\n if (procesoxBaseUrtl.endsWith('/'))\r\n procesoxBaseUrtl = procesoxBaseUrtl.substring(0, procesoxBaseUrtl.length - 1);\r\n //procesoxBaseUrtl = 'https://localhost:44398/mindefensa.gov.co'\r\n\r\n return \r\n \r\n
      \r\n
      \r\n
      \r\n
      \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n } />\r\n } />\r\n \r\n } />\r\n } />\r\n } />\r\n } />\r\n \r\n {/* */}\r\n \r\n {/* */}\r\n \r\n } />\r\n \r\n } />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
      \r\n
      \r\n

      Tramitex Virtual Office
      COPYRIGHT © {new Date().getFullYear()} IOIP SAS - 2.1.24.3

      \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","import type {\r\n Reducer,\r\n ReducersMapObject,\r\n Middleware,\r\n Action,\r\n AnyAction,\r\n StoreEnhancer,\r\n Store,\r\n Dispatch,\r\n PreloadedState,\r\n CombinedState,\r\n} from 'redux'\r\nimport { createStore, compose, applyMiddleware, combineReducers } from 'redux'\r\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension'\r\nimport { composeWithDevTools } from './devtoolsExtension'\r\n\r\nimport isPlainObject from './isPlainObject'\r\nimport type {\r\n ThunkMiddlewareFor,\r\n CurriedGetDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nimport { curryGetDefaultMiddleware } from './getDefaultMiddleware'\r\nimport type {\r\n NoInfer,\r\n ExtractDispatchExtensions,\r\n ExtractStoreExtensions,\r\n ExtractStateExtensions,\r\n} from './tsHelpers'\r\nimport { EnhancerArray } from './utils'\r\n\r\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production'\r\n\r\n/**\r\n * Callback function type, to be used in `ConfigureStoreOptions.enhancers`\r\n *\r\n * @public\r\n */\r\nexport type ConfigureEnhancersCallback = (\r\n defaultEnhancers: EnhancerArray<[StoreEnhancer<{}, {}>]>\r\n) => E\r\n\r\n/**\r\n * Options for `configureStore()`.\r\n *\r\n * @public\r\n */\r\nexport interface ConfigureStoreOptions<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares,\r\n E extends Enhancers = Enhancers\r\n> {\r\n /**\r\n * A single reducer function that will be used as the root reducer, or an\r\n * object of slice reducers that will be passed to `combineReducers()`.\r\n */\r\n reducer: Reducer | ReducersMapObject\r\n\r\n /**\r\n * An array of Redux middleware to install. If not supplied, defaults to\r\n * the set of middleware returned by `getDefaultMiddleware()`.\r\n *\r\n * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\r\n * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\r\n */\r\n middleware?: ((getDefaultMiddleware: CurriedGetDefaultMiddleware) => M) | M\r\n\r\n /**\r\n * Whether to enable Redux DevTools integration. Defaults to `true`.\r\n *\r\n * Additional configuration can be done by passing Redux DevTools options\r\n */\r\n devTools?: boolean | DevToolsOptions\r\n\r\n /**\r\n * The initial state, same as Redux's createStore.\r\n * You may optionally specify it to hydrate the state\r\n * from the server in universal apps, or to restore a previously serialized\r\n * user session. If you use `combineReducers()` to produce the root reducer\r\n * function (either directly or indirectly by passing an object as `reducer`),\r\n * this must be an object with the same shape as the reducer map keys.\r\n */\r\n /*\r\n Not 100% correct but the best approximation we can get:\r\n - if S is a `CombinedState` applying a second `CombinedState` on it does not change anything.\r\n - if it is not, there could be two cases:\r\n - `ReducersMapObject` is being passed in. In this case, we will call `combineReducers` on it and `CombinedState` is correct\r\n - `Reducer` is being passed in. In this case, actually `CombinedState` is wrong and `S` would be correct.\r\n As we cannot distinguish between those two cases without adding another generic parameter,\r\n we just make the pragmatic assumption that the latter almost never happens.\r\n */\r\n preloadedState?: PreloadedState>>\r\n\r\n /**\r\n * The store enhancers to apply. See Redux's `createStore()`.\r\n * All enhancers will be included before the DevTools Extension enhancer.\r\n * If you need to customize the order of enhancers, supply a callback\r\n * function that will receive the original array (ie, `[applyMiddleware]`),\r\n * and should return a new array (such as `[applyMiddleware, offline]`).\r\n * If you only need to add middleware, you can use the `middleware` parameter instead.\r\n */\r\n enhancers?: E | ConfigureEnhancersCallback\r\n}\r\n\r\ntype Middlewares = ReadonlyArray>\r\n\r\ntype Enhancers = ReadonlyArray\r\n\r\nexport interface ToolkitStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares\r\n> extends Store {\r\n /**\r\n * The `dispatch` method of your store, enhanced by all its middlewares.\r\n *\r\n * @inheritdoc\r\n */\r\n dispatch: ExtractDispatchExtensions & Dispatch\r\n}\r\n\r\n/**\r\n * A Redux store returned by `configureStore()`. Supports dispatching\r\n * side-effectful _thunks_ in addition to plain actions.\r\n *\r\n * @public\r\n */\r\nexport type EnhancedStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares,\r\n E extends Enhancers = Enhancers\r\n> = ToolkitStore, A, M> &\r\n ExtractStoreExtensions\r\n\r\n/**\r\n * A friendly abstraction over the standard Redux `createStore()` function.\r\n *\r\n * @param options The store configuration.\r\n * @returns A configured Redux store.\r\n *\r\n * @public\r\n */\r\nexport function configureStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = [ThunkMiddlewareFor],\r\n E extends Enhancers = [StoreEnhancer]\r\n>(options: ConfigureStoreOptions): EnhancedStore {\r\n const curriedGetDefaultMiddleware = curryGetDefaultMiddleware()\r\n\r\n const {\r\n reducer = undefined,\r\n middleware = curriedGetDefaultMiddleware(),\r\n devTools = true,\r\n preloadedState = undefined,\r\n enhancers = undefined,\r\n } = options || {}\r\n\r\n let rootReducer: Reducer\r\n\r\n if (typeof reducer === 'function') {\r\n rootReducer = reducer\r\n } else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer) as unknown as Reducer\r\n } else {\r\n throw new Error(\r\n '\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'\r\n )\r\n }\r\n\r\n let finalMiddleware = middleware\r\n if (typeof finalMiddleware === 'function') {\r\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware)\r\n\r\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n throw new Error(\r\n 'when using a middleware builder function, an array of middleware must be returned'\r\n )\r\n }\r\n }\r\n if (\r\n !IS_PRODUCTION &&\r\n finalMiddleware.some((item: any) => typeof item !== 'function')\r\n ) {\r\n throw new Error(\r\n 'each middleware provided to configureStore must be a function'\r\n )\r\n }\r\n\r\n const middlewareEnhancer: StoreEnhancer = applyMiddleware(...finalMiddleware)\r\n\r\n let finalCompose = compose\r\n\r\n if (devTools) {\r\n finalCompose = composeWithDevTools({\r\n // Enable capture of stack traces for dispatched Redux actions\r\n trace: !IS_PRODUCTION,\r\n ...(typeof devTools === 'object' && devTools),\r\n })\r\n }\r\n\r\n const defaultEnhancers = new EnhancerArray(middlewareEnhancer)\r\n let storeEnhancers: Enhancers = defaultEnhancers\r\n\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = [middlewareEnhancer, ...enhancers]\r\n } else if (typeof enhancers === 'function') {\r\n storeEnhancers = enhancers(defaultEnhancers)\r\n }\r\n\r\n const composedEnhancer = finalCompose(...storeEnhancers) as StoreEnhancer\r\n\r\n return createStore(rootReducer, preloadedState, composedEnhancer)\r\n}\r\n","// Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport { IIconOptions, IIconSubset, registerIcons } from '@fluentui/style-utilities';\n\nexport function initializeIcons(baseUrl: string = '', options?: IIconOptions): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none',\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons\"`,\n src: `url('${baseUrl}fabric-icons-a13498cf.woff') format('woff')`,\n },\n icons: {\n GlobalNavButton: '\\uE700',\n ChevronDown: '\\uE70D',\n ChevronUp: '\\uE70E',\n Edit: '\\uE70F',\n Add: '\\uE710',\n Cancel: '\\uE711',\n More: '\\uE712',\n Settings: '\\uE713',\n Mail: '\\uE715',\n Filter: '\\uE71C',\n Search: '\\uE721',\n Share: '\\uE72D',\n BlockedSite: '\\uE72F',\n FavoriteStar: '\\uE734',\n FavoriteStarFill: '\\uE735',\n CheckMark: '\\uE73E',\n Delete: '\\uE74D',\n ChevronLeft: '\\uE76B',\n ChevronRight: '\\uE76C',\n Calendar: '\\uE787',\n Megaphone: '\\uE789',\n Undo: '\\uE7A7',\n Flag: '\\uE7C1',\n Page: '\\uE7C3',\n Pinned: '\\uE840',\n View: '\\uE890',\n Clear: '\\uE894',\n Download: '\\uE896',\n Upload: '\\uE898',\n Folder: '\\uE8B7',\n Sort: '\\uE8CB',\n AlignRight: '\\uE8E2',\n AlignLeft: '\\uE8E4',\n Tag: '\\uE8EC',\n AddFriend: '\\uE8FA',\n Info: '\\uE946',\n SortLines: '\\uE9D0',\n List: '\\uEA37',\n CircleRing: '\\uEA3A',\n Heart: '\\uEB51',\n HeartFill: '\\uEB52',\n Tiles: '\\uECA5',\n Embed: '\\uECCE',\n Glimmer: '\\uECF4',\n Ascending: '\\uEDC0',\n Descending: '\\uEDC1',\n SortUp: '\\uEE68',\n SortDown: '\\uEE69',\n SyncToPC: '\\uEE6E',\n LargeGrid: '\\uEECB',\n SkypeCheck: '\\uEF80',\n SkypeClock: '\\uEF81',\n SkypeMinus: '\\uEF82',\n ClearFilter: '\\uEF8F',\n Flow: '\\uEF90',\n StatusCircleCheckmark: '\\uF13E',\n MoreVertical: '\\uF2BC',\n },\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-0\"`,\n src: `url('${baseUrl}fabric-icons-0-467ee27f.woff') format('woff')`\n },\n icons: {\n 'PageLink': '\\uE302',\n 'CommentSolid': '\\uE30E',\n 'ChangeEntitlements': '\\uE310',\n 'Installation': '\\uE311',\n 'WebAppBuilderModule': '\\uE313',\n 'WebAppBuilderFragment': '\\uE314',\n 'WebAppBuilderSlot': '\\uE315',\n 'BullseyeTargetEdit': '\\uE319',\n 'WebAppBuilderFragmentCreate': '\\uE31B',\n 'PageData': '\\uE31C',\n 'PageHeaderEdit': '\\uE31D',\n 'ProductList': '\\uE31E',\n 'UnpublishContent': '\\uE31F',\n 'DependencyAdd': '\\uE344',\n 'DependencyRemove': '\\uE345',\n 'EntitlementPolicy': '\\uE346',\n 'EntitlementRedemption': '\\uE347',\n 'SchoolDataSyncLogo': '\\uE34C',\n 'PinSolid12': '\\uE352',\n 'PinSolidOff12': '\\uE353',\n 'AddLink': '\\uE35E',\n 'SharepointAppIcon16': '\\uE365',\n 'DataflowsLink': '\\uE366',\n 'TimePicker': '\\uE367',\n 'UserWarning': '\\uE368',\n 'ComplianceAudit': '\\uE369',\n 'InternetSharing': '\\uE704',\n 'Brightness': '\\uE706',\n 'MapPin': '\\uE707',\n 'Airplane': '\\uE709',\n 'Tablet': '\\uE70A',\n 'QuickNote': '\\uE70B',\n 'Video': '\\uE714',\n 'People': '\\uE716',\n 'Phone': '\\uE717',\n 'Pin': '\\uE718',\n 'Shop': '\\uE719',\n 'Stop': '\\uE71A',\n 'Link': '\\uE71B',\n 'AllApps': '\\uE71D',\n 'Zoom': '\\uE71E',\n 'ZoomOut': '\\uE71F',\n 'Microphone': '\\uE720',\n 'Camera': '\\uE722',\n 'Attach': '\\uE723',\n 'Send': '\\uE724',\n 'FavoriteList': '\\uE728',\n 'PageSolid': '\\uE729',\n 'Forward': '\\uE72A',\n 'Back': '\\uE72B',\n 'Refresh': '\\uE72C',\n 'Lock': '\\uE72E',\n 'ReportHacked': '\\uE730',\n 'EMI': '\\uE731',\n 'MiniLink': '\\uE732',\n 'Blocked': '\\uE733',\n 'ReadingMode': '\\uE736',\n 'Favicon': '\\uE737',\n 'Remove': '\\uE738',\n 'Checkbox': '\\uE739',\n 'CheckboxComposite': '\\uE73A',\n 'CheckboxFill': '\\uE73B',\n 'CheckboxIndeterminate': '\\uE73C',\n 'CheckboxCompositeReversed': '\\uE73D',\n 'BackToWindow': '\\uE73F',\n 'FullScreen': '\\uE740',\n 'Print': '\\uE749',\n 'Up': '\\uE74A',\n 'Down': '\\uE74B',\n 'OEM': '\\uE74C',\n 'Save': '\\uE74E',\n 'ReturnKey': '\\uE751',\n 'Cloud': '\\uE753',\n 'Flashlight': '\\uE754',\n 'CommandPrompt': '\\uE756',\n 'Sad': '\\uE757',\n 'RealEstate': '\\uE758',\n 'SIPMove': '\\uE759',\n 'EraseTool': '\\uE75C',\n 'GripperTool': '\\uE75E',\n 'Dialpad': '\\uE75F',\n 'PageLeft': '\\uE760',\n 'PageRight': '\\uE761',\n 'MultiSelect': '\\uE762',\n 'KeyboardClassic': '\\uE765',\n 'Play': '\\uE768',\n 'Pause': '\\uE769',\n 'InkingTool': '\\uE76D',\n 'Emoji2': '\\uE76E',\n 'GripperBarHorizontal': '\\uE76F',\n 'System': '\\uE770',\n 'Personalize': '\\uE771',\n 'SearchAndApps': '\\uE773',\n 'Globe': '\\uE774',\n 'EaseOfAccess': '\\uE776',\n 'ContactInfo': '\\uE779',\n 'Unpin': '\\uE77A',\n 'Contact': '\\uE77B',\n 'Memo': '\\uE77C',\n 'IncomingCall': '\\uE77E'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-1\"`,\n src: `url('${baseUrl}fabric-icons-1-4d521695.woff') format('woff')`\n },\n icons: {\n 'Paste': '\\uE77F',\n 'WindowsLogo': '\\uE782',\n 'Error': '\\uE783',\n 'GripperBarVertical': '\\uE784',\n 'Unlock': '\\uE785',\n 'Slideshow': '\\uE786',\n 'Trim': '\\uE78A',\n 'AutoEnhanceOn': '\\uE78D',\n 'AutoEnhanceOff': '\\uE78E',\n 'Color': '\\uE790',\n 'SaveAs': '\\uE792',\n 'Light': '\\uE793',\n 'Filters': '\\uE795',\n 'AspectRatio': '\\uE799',\n 'Contrast': '\\uE7A1',\n 'Redo': '\\uE7A6',\n 'Crop': '\\uE7A8',\n 'PhotoCollection': '\\uE7AA',\n 'Album': '\\uE7AB',\n 'Rotate': '\\uE7AD',\n 'PanoIndicator': '\\uE7B0',\n 'Translate': '\\uE7B2',\n 'RedEye': '\\uE7B3',\n 'ViewOriginal': '\\uE7B4',\n 'ThumbnailView': '\\uE7B6',\n 'Package': '\\uE7B8',\n 'Telemarketer': '\\uE7B9',\n 'Warning': '\\uE7BA',\n 'Financial': '\\uE7BB',\n 'Education': '\\uE7BE',\n 'ShoppingCart': '\\uE7BF',\n 'Train': '\\uE7C0',\n 'Move': '\\uE7C2',\n 'TouchPointer': '\\uE7C9',\n 'Merge': '\\uE7D5',\n 'TurnRight': '\\uE7DB',\n 'Ferry': '\\uE7E3',\n 'Highlight': '\\uE7E6',\n 'PowerButton': '\\uE7E8',\n 'Tab': '\\uE7E9',\n 'Admin': '\\uE7EF',\n 'TVMonitor': '\\uE7F4',\n 'Speakers': '\\uE7F5',\n 'Game': '\\uE7FC',\n 'HorizontalTabKey': '\\uE7FD',\n 'UnstackSelected': '\\uE7FE',\n 'StackIndicator': '\\uE7FF',\n 'Nav2DMapView': '\\uE800',\n 'StreetsideSplitMinimize': '\\uE802',\n 'Car': '\\uE804',\n 'Bus': '\\uE806',\n 'EatDrink': '\\uE807',\n 'SeeDo': '\\uE808',\n 'LocationCircle': '\\uE80E',\n 'Home': '\\uE80F',\n 'SwitcherStartEnd': '\\uE810',\n 'ParkingLocation': '\\uE811',\n 'IncidentTriangle': '\\uE814',\n 'Touch': '\\uE815',\n 'MapDirections': '\\uE816',\n 'CaretHollow': '\\uE817',\n 'CaretSolid': '\\uE818',\n 'History': '\\uE81C',\n 'Location': '\\uE81D',\n 'MapLayers': '\\uE81E',\n 'SearchNearby': '\\uE820',\n 'Work': '\\uE821',\n 'Recent': '\\uE823',\n 'Hotel': '\\uE824',\n 'Bank': '\\uE825',\n 'LocationDot': '\\uE827',\n 'Dictionary': '\\uE82D',\n 'ChromeBack': '\\uE830',\n 'FolderOpen': '\\uE838',\n 'PinnedFill': '\\uE842',\n 'RevToggleKey': '\\uE845',\n 'USB': '\\uE88E',\n 'Previous': '\\uE892',\n 'Next': '\\uE893',\n 'Sync': '\\uE895',\n 'Help': '\\uE897',\n 'Emoji': '\\uE899',\n 'MailForward': '\\uE89C',\n 'ClosePane': '\\uE89F',\n 'OpenPane': '\\uE8A0',\n 'PreviewLink': '\\uE8A1',\n 'ZoomIn': '\\uE8A3',\n 'Bookmarks': '\\uE8A4',\n 'Document': '\\uE8A5',\n 'ProtectedDocument': '\\uE8A6',\n 'OpenInNewWindow': '\\uE8A7',\n 'MailFill': '\\uE8A8',\n 'ViewAll': '\\uE8A9',\n 'Switch': '\\uE8AB',\n 'Rename': '\\uE8AC',\n 'Go': '\\uE8AD',\n 'Remote': '\\uE8AF',\n 'SelectAll': '\\uE8B3',\n 'Orientation': '\\uE8B4',\n 'Import': '\\uE8B5'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-2\"`,\n src: `url('${baseUrl}fabric-icons-2-63c99abf.woff') format('woff')`\n },\n icons: {\n 'Picture': '\\uE8B9',\n 'ChromeClose': '\\uE8BB',\n 'ShowResults': '\\uE8BC',\n 'Message': '\\uE8BD',\n 'CalendarDay': '\\uE8BF',\n 'CalendarWeek': '\\uE8C0',\n 'MailReplyAll': '\\uE8C2',\n 'Read': '\\uE8C3',\n 'Cut': '\\uE8C6',\n 'PaymentCard': '\\uE8C7',\n 'Copy': '\\uE8C8',\n 'Important': '\\uE8C9',\n 'MailReply': '\\uE8CA',\n 'GotoToday': '\\uE8D1',\n 'Font': '\\uE8D2',\n 'FontColor': '\\uE8D3',\n 'FolderFill': '\\uE8D5',\n 'Permissions': '\\uE8D7',\n 'DisableUpdates': '\\uE8D8',\n 'Unfavorite': '\\uE8D9',\n 'Italic': '\\uE8DB',\n 'Underline': '\\uE8DC',\n 'Bold': '\\uE8DD',\n 'MoveToFolder': '\\uE8DE',\n 'Dislike': '\\uE8E0',\n 'Like': '\\uE8E1',\n 'AlignCenter': '\\uE8E3',\n 'OpenFile': '\\uE8E5',\n 'ClearSelection': '\\uE8E6',\n 'FontDecrease': '\\uE8E7',\n 'FontIncrease': '\\uE8E8',\n 'FontSize': '\\uE8E9',\n 'CellPhone': '\\uE8EA',\n 'RepeatOne': '\\uE8ED',\n 'RepeatAll': '\\uE8EE',\n 'Calculator': '\\uE8EF',\n 'Library': '\\uE8F1',\n 'PostUpdate': '\\uE8F3',\n 'NewFolder': '\\uE8F4',\n 'CalendarReply': '\\uE8F5',\n 'UnsyncFolder': '\\uE8F6',\n 'SyncFolder': '\\uE8F7',\n 'BlockContact': '\\uE8F8',\n 'Accept': '\\uE8FB',\n 'BulletedList': '\\uE8FD',\n 'Preview': '\\uE8FF',\n 'News': '\\uE900',\n 'Chat': '\\uE901',\n 'Group': '\\uE902',\n 'World': '\\uE909',\n 'Comment': '\\uE90A',\n 'DockLeft': '\\uE90C',\n 'DockRight': '\\uE90D',\n 'Repair': '\\uE90F',\n 'Accounts': '\\uE910',\n 'Street': '\\uE913',\n 'RadioBullet': '\\uE915',\n 'Stopwatch': '\\uE916',\n 'Clock': '\\uE917',\n 'WorldClock': '\\uE918',\n 'AlarmClock': '\\uE919',\n 'Photo': '\\uE91B',\n 'ActionCenter': '\\uE91C',\n 'Hospital': '\\uE91D',\n 'Timer': '\\uE91E',\n 'FullCircleMask': '\\uE91F',\n 'LocationFill': '\\uE920',\n 'ChromeMinimize': '\\uE921',\n 'ChromeRestore': '\\uE923',\n 'Annotation': '\\uE924',\n 'Fingerprint': '\\uE928',\n 'Handwriting': '\\uE929',\n 'ChromeFullScreen': '\\uE92D',\n 'Completed': '\\uE930',\n 'Label': '\\uE932',\n 'FlickDown': '\\uE935',\n 'FlickUp': '\\uE936',\n 'FlickLeft': '\\uE937',\n 'FlickRight': '\\uE938',\n 'MiniExpand': '\\uE93A',\n 'MiniContract': '\\uE93B',\n 'Streaming': '\\uE93E',\n 'MusicInCollection': '\\uE940',\n 'OneDriveLogo': '\\uE941',\n 'CompassNW': '\\uE942',\n 'Code': '\\uE943',\n 'LightningBolt': '\\uE945',\n 'CalculatorMultiply': '\\uE947',\n 'CalculatorAddition': '\\uE948',\n 'CalculatorSubtract': '\\uE949',\n 'CalculatorPercentage': '\\uE94C',\n 'CalculatorEqualTo': '\\uE94E',\n 'PrintfaxPrinterFile': '\\uE956',\n 'StorageOptical': '\\uE958',\n 'Communications': '\\uE95A',\n 'Headset': '\\uE95B',\n 'Health': '\\uE95E',\n 'Webcam2': '\\uE960',\n 'FrontCamera': '\\uE96B',\n 'ChevronUpSmall': '\\uE96D'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-3\"`,\n src: `url('${baseUrl}fabric-icons-3-089e217a.woff') format('woff')`\n },\n icons: {\n 'ChevronDownSmall': '\\uE96E',\n 'ChevronLeftSmall': '\\uE96F',\n 'ChevronRightSmall': '\\uE970',\n 'ChevronUpMed': '\\uE971',\n 'ChevronDownMed': '\\uE972',\n 'ChevronLeftMed': '\\uE973',\n 'ChevronRightMed': '\\uE974',\n 'Devices2': '\\uE975',\n 'PC1': '\\uE977',\n 'PresenceChickletVideo': '\\uE979',\n 'Reply': '\\uE97A',\n 'HalfAlpha': '\\uE97E',\n 'ConstructionCone': '\\uE98F',\n 'DoubleChevronLeftMed': '\\uE991',\n 'Volume0': '\\uE992',\n 'Volume1': '\\uE993',\n 'Volume2': '\\uE994',\n 'Volume3': '\\uE995',\n 'Chart': '\\uE999',\n 'Robot': '\\uE99A',\n 'Manufacturing': '\\uE99C',\n 'LockSolid': '\\uE9A2',\n 'FitPage': '\\uE9A6',\n 'FitWidth': '\\uE9A7',\n 'BidiLtr': '\\uE9AA',\n 'BidiRtl': '\\uE9AB',\n 'RightDoubleQuote': '\\uE9B1',\n 'Sunny': '\\uE9BD',\n 'CloudWeather': '\\uE9BE',\n 'Cloudy': '\\uE9BF',\n 'PartlyCloudyDay': '\\uE9C0',\n 'PartlyCloudyNight': '\\uE9C1',\n 'ClearNight': '\\uE9C2',\n 'RainShowersDay': '\\uE9C3',\n 'Rain': '\\uE9C4',\n 'Thunderstorms': '\\uE9C6',\n 'RainSnow': '\\uE9C7',\n 'Snow': '\\uE9C8',\n 'BlowingSnow': '\\uE9C9',\n 'Frigid': '\\uE9CA',\n 'Fog': '\\uE9CB',\n 'Squalls': '\\uE9CC',\n 'Duststorm': '\\uE9CD',\n 'Unknown': '\\uE9CE',\n 'Precipitation': '\\uE9CF',\n 'Ribbon': '\\uE9D1',\n 'AreaChart': '\\uE9D2',\n 'Assign': '\\uE9D3',\n 'FlowChart': '\\uE9D4',\n 'CheckList': '\\uE9D5',\n 'Diagnostic': '\\uE9D9',\n 'Generate': '\\uE9DA',\n 'LineChart': '\\uE9E6',\n 'Equalizer': '\\uE9E9',\n 'BarChartHorizontal': '\\uE9EB',\n 'BarChartVertical': '\\uE9EC',\n 'Freezing': '\\uE9EF',\n 'FunnelChart': '\\uE9F1',\n 'Processing': '\\uE9F5',\n 'Quantity': '\\uE9F8',\n 'ReportDocument': '\\uE9F9',\n 'StackColumnChart': '\\uE9FC',\n 'SnowShowerDay': '\\uE9FD',\n 'HailDay': '\\uEA00',\n 'WorkFlow': '\\uEA01',\n 'HourGlass': '\\uEA03',\n 'StoreLogoMed20': '\\uEA04',\n 'TimeSheet': '\\uEA05',\n 'TriangleSolid': '\\uEA08',\n 'UpgradeAnalysis': '\\uEA0B',\n 'VideoSolid': '\\uEA0C',\n 'RainShowersNight': '\\uEA0F',\n 'SnowShowerNight': '\\uEA11',\n 'Teamwork': '\\uEA12',\n 'HailNight': '\\uEA13',\n 'PeopleAdd': '\\uEA15',\n 'Glasses': '\\uEA16',\n 'DateTime2': '\\uEA17',\n 'Shield': '\\uEA18',\n 'Header1': '\\uEA19',\n 'PageAdd': '\\uEA1A',\n 'NumberedList': '\\uEA1C',\n 'PowerBILogo': '\\uEA1E',\n 'Info2': '\\uEA1F',\n 'MusicInCollectionFill': '\\uEA36',\n 'Asterisk': '\\uEA38',\n 'ErrorBadge': '\\uEA39',\n 'CircleFill': '\\uEA3B',\n 'Record2': '\\uEA3F',\n 'AllAppsMirrored': '\\uEA40',\n 'BookmarksMirrored': '\\uEA41',\n 'BulletedListMirrored': '\\uEA42',\n 'CaretHollowMirrored': '\\uEA45',\n 'CaretSolidMirrored': '\\uEA46',\n 'ChromeBackMirrored': '\\uEA47',\n 'ClearSelectionMirrored': '\\uEA48',\n 'ClosePaneMirrored': '\\uEA49',\n 'DockLeftMirrored': '\\uEA4C',\n 'DoubleChevronLeftMedMirrored': '\\uEA4D',\n 'GoMirrored': '\\uEA4F'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-4\"`,\n src: `url('${baseUrl}fabric-icons-4-a656cc0a.woff') format('woff')`\n },\n icons: {\n 'HelpMirrored': '\\uEA51',\n 'ImportMirrored': '\\uEA52',\n 'ImportAllMirrored': '\\uEA53',\n 'ListMirrored': '\\uEA55',\n 'MailForwardMirrored': '\\uEA56',\n 'MailReplyMirrored': '\\uEA57',\n 'MailReplyAllMirrored': '\\uEA58',\n 'MiniContractMirrored': '\\uEA59',\n 'MiniExpandMirrored': '\\uEA5A',\n 'OpenPaneMirrored': '\\uEA5B',\n 'ParkingLocationMirrored': '\\uEA5E',\n 'SendMirrored': '\\uEA63',\n 'ShowResultsMirrored': '\\uEA65',\n 'ThumbnailViewMirrored': '\\uEA67',\n 'Media': '\\uEA69',\n 'Devices3': '\\uEA6C',\n 'Focus': '\\uEA6F',\n 'VideoLightOff': '\\uEA74',\n 'Lightbulb': '\\uEA80',\n 'StatusTriangle': '\\uEA82',\n 'VolumeDisabled': '\\uEA85',\n 'Puzzle': '\\uEA86',\n 'EmojiNeutral': '\\uEA87',\n 'EmojiDisappointed': '\\uEA88',\n 'HomeSolid': '\\uEA8A',\n 'Ringer': '\\uEA8F',\n 'PDF': '\\uEA90',\n 'HeartBroken': '\\uEA92',\n 'StoreLogo16': '\\uEA96',\n 'MultiSelectMirrored': '\\uEA98',\n 'Broom': '\\uEA99',\n 'AddToShoppingList': '\\uEA9A',\n 'Cocktails': '\\uEA9D',\n 'Wines': '\\uEABF',\n 'Articles': '\\uEAC1',\n 'Cycling': '\\uEAC7',\n 'DietPlanNotebook': '\\uEAC8',\n 'Pill': '\\uEACB',\n 'ExerciseTracker': '\\uEACC',\n 'HandsFree': '\\uEAD0',\n 'Medical': '\\uEAD4',\n 'Running': '\\uEADA',\n 'Weights': '\\uEADB',\n 'Trackers': '\\uEADF',\n 'AddNotes': '\\uEAE3',\n 'AllCurrency': '\\uEAE4',\n 'BarChart4': '\\uEAE7',\n 'CirclePlus': '\\uEAEE',\n 'Coffee': '\\uEAEF',\n 'Cotton': '\\uEAF3',\n 'Market': '\\uEAFC',\n 'Money': '\\uEAFD',\n 'PieDouble': '\\uEB04',\n 'PieSingle': '\\uEB05',\n 'RemoveFilter': '\\uEB08',\n 'Savings': '\\uEB0B',\n 'Sell': '\\uEB0C',\n 'StockDown': '\\uEB0F',\n 'StockUp': '\\uEB11',\n 'Lamp': '\\uEB19',\n 'Source': '\\uEB1B',\n 'MSNVideos': '\\uEB1C',\n 'Cricket': '\\uEB1E',\n 'Golf': '\\uEB1F',\n 'Baseball': '\\uEB20',\n 'Soccer': '\\uEB21',\n 'MoreSports': '\\uEB22',\n 'AutoRacing': '\\uEB24',\n 'CollegeHoops': '\\uEB25',\n 'CollegeFootball': '\\uEB26',\n 'ProFootball': '\\uEB27',\n 'ProHockey': '\\uEB28',\n 'Rugby': '\\uEB2D',\n 'SubstitutionsIn': '\\uEB31',\n 'Tennis': '\\uEB33',\n 'Arrivals': '\\uEB34',\n 'Design': '\\uEB3C',\n 'Website': '\\uEB41',\n 'Drop': '\\uEB42',\n 'HistoricalWeather': '\\uEB43',\n 'SkiResorts': '\\uEB45',\n 'Snowflake': '\\uEB46',\n 'BusSolid': '\\uEB47',\n 'FerrySolid': '\\uEB48',\n 'AirplaneSolid': '\\uEB4C',\n 'TrainSolid': '\\uEB4D',\n 'Ticket': '\\uEB54',\n 'WifiWarning4': '\\uEB63',\n 'Devices4': '\\uEB66',\n 'AzureLogo': '\\uEB6A',\n 'BingLogo': '\\uEB6B',\n 'MSNLogo': '\\uEB6C',\n 'OutlookLogoInverse': '\\uEB6D',\n 'OfficeLogo': '\\uEB6E',\n 'SkypeLogo': '\\uEB6F',\n 'Door': '\\uEB75',\n 'EditMirrored': '\\uEB7E',\n 'GiftCard': '\\uEB8E',\n 'DoubleBookmark': '\\uEB8F',\n 'StatusErrorFull': '\\uEB90'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-5\"`,\n src: `url('${baseUrl}fabric-icons-5-f95ba260.woff') format('woff')`\n },\n icons: {\n 'Certificate': '\\uEB95',\n 'FastForward': '\\uEB9D',\n 'Rewind': '\\uEB9E',\n 'Photo2': '\\uEB9F',\n 'OpenSource': '\\uEBC2',\n 'Movers': '\\uEBCD',\n 'CloudDownload': '\\uEBD3',\n 'Family': '\\uEBDA',\n 'WindDirection': '\\uEBE6',\n 'Bug': '\\uEBE8',\n 'SiteScan': '\\uEBEC',\n 'BrowserScreenShot': '\\uEBED',\n 'F12DevTools': '\\uEBEE',\n 'CSS': '\\uEBEF',\n 'JS': '\\uEBF0',\n 'DeliveryTruck': '\\uEBF4',\n 'ReminderPerson': '\\uEBF7',\n 'ReminderGroup': '\\uEBF8',\n 'ReminderTime': '\\uEBF9',\n 'TabletMode': '\\uEBFC',\n 'Umbrella': '\\uEC04',\n 'NetworkTower': '\\uEC05',\n 'CityNext': '\\uEC06',\n 'CityNext2': '\\uEC07',\n 'Section': '\\uEC0C',\n 'OneNoteLogoInverse': '\\uEC0D',\n 'ToggleFilled': '\\uEC11',\n 'ToggleBorder': '\\uEC12',\n 'SliderThumb': '\\uEC13',\n 'ToggleThumb': '\\uEC14',\n 'Documentation': '\\uEC17',\n 'Badge': '\\uEC1B',\n 'Giftbox': '\\uEC1F',\n 'VisualStudioLogo': '\\uEC22',\n 'HomeGroup': '\\uEC26',\n 'ExcelLogoInverse': '\\uEC28',\n 'WordLogoInverse': '\\uEC29',\n 'PowerPointLogoInverse': '\\uEC2A',\n 'Cafe': '\\uEC32',\n 'SpeedHigh': '\\uEC4A',\n 'Commitments': '\\uEC4D',\n 'ThisPC': '\\uEC4E',\n 'MusicNote': '\\uEC4F',\n 'MicOff': '\\uEC54',\n 'PlaybackRate1x': '\\uEC57',\n 'EdgeLogo': '\\uEC60',\n 'CompletedSolid': '\\uEC61',\n 'AlbumRemove': '\\uEC62',\n 'MessageFill': '\\uEC70',\n 'TabletSelected': '\\uEC74',\n 'MobileSelected': '\\uEC75',\n 'LaptopSelected': '\\uEC76',\n 'TVMonitorSelected': '\\uEC77',\n 'DeveloperTools': '\\uEC7A',\n 'Shapes': '\\uEC7C',\n 'InsertTextBox': '\\uEC7D',\n 'LowerBrightness': '\\uEC8A',\n 'WebComponents': '\\uEC8B',\n 'OfflineStorage': '\\uEC8C',\n 'DOM': '\\uEC8D',\n 'CloudUpload': '\\uEC8E',\n 'ScrollUpDown': '\\uEC8F',\n 'DateTime': '\\uEC92',\n 'Event': '\\uECA3',\n 'Cake': '\\uECA4',\n 'Org': '\\uECA6',\n 'PartyLeader': '\\uECA7',\n 'DRM': '\\uECA8',\n 'CloudAdd': '\\uECA9',\n 'AppIconDefault': '\\uECAA',\n 'Photo2Add': '\\uECAB',\n 'Photo2Remove': '\\uECAC',\n 'Calories': '\\uECAD',\n 'POI': '\\uECAF',\n 'AddTo': '\\uECC8',\n 'RadioBtnOff': '\\uECCA',\n 'RadioBtnOn': '\\uECCB',\n 'ExploreContent': '\\uECCD',\n 'Product': '\\uECDC',\n 'ProgressLoopInner': '\\uECDE',\n 'ProgressLoopOuter': '\\uECDF',\n 'Blocked2': '\\uECE4',\n 'FangBody': '\\uECEB',\n 'Toolbox': '\\uECED',\n 'PageHeader': '\\uECEE',\n 'ChatInviteFriend': '\\uECFE',\n 'Brush': '\\uECFF',\n 'Shirt': '\\uED00',\n 'Crown': '\\uED01',\n 'Diamond': '\\uED02',\n 'ScaleUp': '\\uED09',\n 'QRCode': '\\uED14',\n 'Feedback': '\\uED15',\n 'SharepointLogoInverse': '\\uED18',\n 'YammerLogo': '\\uED19',\n 'Hide': '\\uED1A',\n 'Uneditable': '\\uED1D',\n 'ReturnToSession': '\\uED24',\n 'OpenFolderHorizontal': '\\uED25',\n 'CalendarMirrored': '\\uED28'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-6\"`,\n src: `url('${baseUrl}fabric-icons-6-ef6fd590.woff') format('woff')`\n },\n icons: {\n 'SwayLogoInverse': '\\uED29',\n 'OutOfOffice': '\\uED34',\n 'Trophy': '\\uED3F',\n 'ReopenPages': '\\uED50',\n 'EmojiTabSymbols': '\\uED58',\n 'AADLogo': '\\uED68',\n 'AccessLogo': '\\uED69',\n 'AdminALogoInverse32': '\\uED6A',\n 'AdminCLogoInverse32': '\\uED6B',\n 'AdminDLogoInverse32': '\\uED6C',\n 'AdminELogoInverse32': '\\uED6D',\n 'AdminLLogoInverse32': '\\uED6E',\n 'AdminMLogoInverse32': '\\uED6F',\n 'AdminOLogoInverse32': '\\uED70',\n 'AdminPLogoInverse32': '\\uED71',\n 'AdminSLogoInverse32': '\\uED72',\n 'AdminYLogoInverse32': '\\uED73',\n 'DelveLogoInverse': '\\uED76',\n 'ExchangeLogoInverse': '\\uED78',\n 'LyncLogo': '\\uED79',\n 'OfficeVideoLogoInverse': '\\uED7A',\n 'SocialListeningLogo': '\\uED7C',\n 'VisioLogoInverse': '\\uED7D',\n 'Balloons': '\\uED7E',\n 'Cat': '\\uED7F',\n 'MailAlert': '\\uED80',\n 'MailCheck': '\\uED81',\n 'MailLowImportance': '\\uED82',\n 'MailPause': '\\uED83',\n 'MailRepeat': '\\uED84',\n 'SecurityGroup': '\\uED85',\n 'Table': '\\uED86',\n 'VoicemailForward': '\\uED87',\n 'VoicemailReply': '\\uED88',\n 'Waffle': '\\uED89',\n 'RemoveEvent': '\\uED8A',\n 'EventInfo': '\\uED8B',\n 'ForwardEvent': '\\uED8C',\n 'WipePhone': '\\uED8D',\n 'AddOnlineMeeting': '\\uED8E',\n 'JoinOnlineMeeting': '\\uED8F',\n 'RemoveLink': '\\uED90',\n 'PeopleBlock': '\\uED91',\n 'PeopleRepeat': '\\uED92',\n 'PeopleAlert': '\\uED93',\n 'PeoplePause': '\\uED94',\n 'TransferCall': '\\uED95',\n 'AddPhone': '\\uED96',\n 'UnknownCall': '\\uED97',\n 'NoteReply': '\\uED98',\n 'NoteForward': '\\uED99',\n 'NotePinned': '\\uED9A',\n 'RemoveOccurrence': '\\uED9B',\n 'Timeline': '\\uED9C',\n 'EditNote': '\\uED9D',\n 'CircleHalfFull': '\\uED9E',\n 'Room': '\\uED9F',\n 'Unsubscribe': '\\uEDA0',\n 'Subscribe': '\\uEDA1',\n 'HardDrive': '\\uEDA2',\n 'RecurringTask': '\\uEDB2',\n 'TaskManager': '\\uEDB7',\n 'TaskManagerMirrored': '\\uEDB8',\n 'Combine': '\\uEDBB',\n 'Split': '\\uEDBC',\n 'DoubleChevronUp': '\\uEDBD',\n 'DoubleChevronLeft': '\\uEDBE',\n 'DoubleChevronRight': '\\uEDBF',\n 'TextBox': '\\uEDC2',\n 'TextField': '\\uEDC3',\n 'NumberField': '\\uEDC4',\n 'Dropdown': '\\uEDC5',\n 'PenWorkspace': '\\uEDC6',\n 'BookingsLogo': '\\uEDC7',\n 'ClassNotebookLogoInverse': '\\uEDC8',\n 'DelveAnalyticsLogo': '\\uEDCA',\n 'DocsLogoInverse': '\\uEDCB',\n 'Dynamics365Logo': '\\uEDCC',\n 'DynamicSMBLogo': '\\uEDCD',\n 'OfficeAssistantLogo': '\\uEDCE',\n 'OfficeStoreLogo': '\\uEDCF',\n 'OneNoteEduLogoInverse': '\\uEDD0',\n 'PlannerLogo': '\\uEDD1',\n 'PowerApps': '\\uEDD2',\n 'Suitcase': '\\uEDD3',\n 'ProjectLogoInverse': '\\uEDD4',\n 'CaretLeft8': '\\uEDD5',\n 'CaretRight8': '\\uEDD6',\n 'CaretUp8': '\\uEDD7',\n 'CaretDown8': '\\uEDD8',\n 'CaretLeftSolid8': '\\uEDD9',\n 'CaretRightSolid8': '\\uEDDA',\n 'CaretUpSolid8': '\\uEDDB',\n 'CaretDownSolid8': '\\uEDDC',\n 'ClearFormatting': '\\uEDDD',\n 'Superscript': '\\uEDDE',\n 'Subscript': '\\uEDDF',\n 'Strikethrough': '\\uEDE0',\n 'Export': '\\uEDE1',\n 'ExportMirrored': '\\uEDE2'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-7\"`,\n src: `url('${baseUrl}fabric-icons-7-2b97bb99.woff') format('woff')`\n },\n icons: {\n 'SingleBookmark': '\\uEDFF',\n 'SingleBookmarkSolid': '\\uEE00',\n 'DoubleChevronDown': '\\uEE04',\n 'FollowUser': '\\uEE05',\n 'ReplyAll': '\\uEE0A',\n 'WorkforceManagement': '\\uEE0F',\n 'RecruitmentManagement': '\\uEE12',\n 'Questionnaire': '\\uEE19',\n 'ManagerSelfService': '\\uEE23',\n 'ProductionFloorManagement': '\\uEE29',\n 'ProductRelease': '\\uEE2E',\n 'ProductVariant': '\\uEE30',\n 'ReplyMirrored': '\\uEE35',\n 'ReplyAllMirrored': '\\uEE36',\n 'Medal': '\\uEE38',\n 'AddGroup': '\\uEE3D',\n 'QuestionnaireMirrored': '\\uEE4B',\n 'CloudImportExport': '\\uEE55',\n 'TemporaryUser': '\\uEE58',\n 'CaretSolid16': '\\uEE62',\n 'GroupedDescending': '\\uEE66',\n 'GroupedAscending': '\\uEE67',\n 'AwayStatus': '\\uEE6A',\n 'MyMoviesTV': '\\uEE6C',\n 'GenericScan': '\\uEE6F',\n 'AustralianRules': '\\uEE70',\n 'WifiEthernet': '\\uEE77',\n 'TrackersMirrored': '\\uEE92',\n 'DateTimeMirrored': '\\uEE93',\n 'StopSolid': '\\uEE95',\n 'DoubleChevronUp12': '\\uEE96',\n 'DoubleChevronDown12': '\\uEE97',\n 'DoubleChevronLeft12': '\\uEE98',\n 'DoubleChevronRight12': '\\uEE99',\n 'CalendarAgenda': '\\uEE9A',\n 'ConnectVirtualMachine': '\\uEE9D',\n 'AddEvent': '\\uEEB5',\n 'AssetLibrary': '\\uEEB6',\n 'DataConnectionLibrary': '\\uEEB7',\n 'DocLibrary': '\\uEEB8',\n 'FormLibrary': '\\uEEB9',\n 'FormLibraryMirrored': '\\uEEBA',\n 'ReportLibrary': '\\uEEBB',\n 'ReportLibraryMirrored': '\\uEEBC',\n 'ContactCard': '\\uEEBD',\n 'CustomList': '\\uEEBE',\n 'CustomListMirrored': '\\uEEBF',\n 'IssueTracking': '\\uEEC0',\n 'IssueTrackingMirrored': '\\uEEC1',\n 'PictureLibrary': '\\uEEC2',\n 'OfficeAddinsLogo': '\\uEEC7',\n 'OfflineOneDriveParachute': '\\uEEC8',\n 'OfflineOneDriveParachuteDisabled': '\\uEEC9',\n 'TriangleSolidUp12': '\\uEECC',\n 'TriangleSolidDown12': '\\uEECD',\n 'TriangleSolidLeft12': '\\uEECE',\n 'TriangleSolidRight12': '\\uEECF',\n 'TriangleUp12': '\\uEED0',\n 'TriangleDown12': '\\uEED1',\n 'TriangleLeft12': '\\uEED2',\n 'TriangleRight12': '\\uEED3',\n 'ArrowUpRight8': '\\uEED4',\n 'ArrowDownRight8': '\\uEED5',\n 'DocumentSet': '\\uEED6',\n 'GoToDashboard': '\\uEEED',\n 'DelveAnalytics': '\\uEEEE',\n 'ArrowUpRightMirrored8': '\\uEEEF',\n 'ArrowDownRightMirrored8': '\\uEEF0',\n 'CompanyDirectory': '\\uEF0D',\n 'OpenEnrollment': '\\uEF1C',\n 'CompanyDirectoryMirrored': '\\uEF2B',\n 'OneDriveAdd': '\\uEF32',\n 'ProfileSearch': '\\uEF35',\n 'Header2': '\\uEF36',\n 'Header3': '\\uEF37',\n 'Header4': '\\uEF38',\n 'RingerSolid': '\\uEF3A',\n 'Eyedropper': '\\uEF3C',\n 'MarketDown': '\\uEF42',\n 'CalendarWorkWeek': '\\uEF51',\n 'SidePanel': '\\uEF52',\n 'GlobeFavorite': '\\uEF53',\n 'CaretTopLeftSolid8': '\\uEF54',\n 'CaretTopRightSolid8': '\\uEF55',\n 'ViewAll2': '\\uEF56',\n 'DocumentReply': '\\uEF57',\n 'PlayerSettings': '\\uEF58',\n 'ReceiptForward': '\\uEF59',\n 'ReceiptReply': '\\uEF5A',\n 'ReceiptCheck': '\\uEF5B',\n 'Fax': '\\uEF5C',\n 'RecurringEvent': '\\uEF5D',\n 'ReplyAlt': '\\uEF5E',\n 'ReplyAllAlt': '\\uEF5F',\n 'EditStyle': '\\uEF60',\n 'EditMail': '\\uEF61',\n 'Lifesaver': '\\uEF62',\n 'LifesaverLock': '\\uEF63',\n 'InboxCheck': '\\uEF64',\n 'FolderSearch': '\\uEF65'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-8\"`,\n src: `url('${baseUrl}fabric-icons-8-6fdf1528.woff') format('woff')`\n },\n icons: {\n 'CollapseMenu': '\\uEF66',\n 'ExpandMenu': '\\uEF67',\n 'Boards': '\\uEF68',\n 'SunAdd': '\\uEF69',\n 'SunQuestionMark': '\\uEF6A',\n 'LandscapeOrientation': '\\uEF6B',\n 'DocumentSearch': '\\uEF6C',\n 'PublicCalendar': '\\uEF6D',\n 'PublicContactCard': '\\uEF6E',\n 'PublicEmail': '\\uEF6F',\n 'PublicFolder': '\\uEF70',\n 'WordDocument': '\\uEF71',\n 'PowerPointDocument': '\\uEF72',\n 'ExcelDocument': '\\uEF73',\n 'GroupedList': '\\uEF74',\n 'ClassroomLogo': '\\uEF75',\n 'Sections': '\\uEF76',\n 'EditPhoto': '\\uEF77',\n 'Starburst': '\\uEF78',\n 'ShareiOS': '\\uEF79',\n 'AirTickets': '\\uEF7A',\n 'PencilReply': '\\uEF7B',\n 'Tiles2': '\\uEF7C',\n 'SkypeCircleCheck': '\\uEF7D',\n 'SkypeCircleClock': '\\uEF7E',\n 'SkypeCircleMinus': '\\uEF7F',\n 'SkypeMessage': '\\uEF83',\n 'ClosedCaption': '\\uEF84',\n 'ATPLogo': '\\uEF85',\n 'OfficeFormsLogoInverse': '\\uEF86',\n 'RecycleBin': '\\uEF87',\n 'EmptyRecycleBin': '\\uEF88',\n 'Hide2': '\\uEF89',\n 'Breadcrumb': '\\uEF8C',\n 'BirthdayCake': '\\uEF8D',\n 'TimeEntry': '\\uEF95',\n 'CRMProcesses': '\\uEFB1',\n 'PageEdit': '\\uEFB6',\n 'PageArrowRight': '\\uEFB8',\n 'PageRemove': '\\uEFBA',\n 'Database': '\\uEFC7',\n 'DataManagementSettings': '\\uEFC8',\n 'CRMServices': '\\uEFD2',\n 'EditContact': '\\uEFD3',\n 'ConnectContacts': '\\uEFD4',\n 'AppIconDefaultAdd': '\\uEFDA',\n 'AppIconDefaultList': '\\uEFDE',\n 'ActivateOrders': '\\uEFE0',\n 'DeactivateOrders': '\\uEFE1',\n 'ProductCatalog': '\\uEFE8',\n 'ScatterChart': '\\uEFEB',\n 'AccountActivity': '\\uEFF4',\n 'DocumentManagement': '\\uEFFC',\n 'CRMReport': '\\uEFFE',\n 'KnowledgeArticle': '\\uF000',\n 'Relationship': '\\uF003',\n 'HomeVerify': '\\uF00E',\n 'ZipFolder': '\\uF012',\n 'SurveyQuestions': '\\uF01B',\n 'TextDocument': '\\uF029',\n 'TextDocumentShared': '\\uF02B',\n 'PageCheckedOut': '\\uF02C',\n 'PageShared': '\\uF02D',\n 'SaveAndClose': '\\uF038',\n 'Script': '\\uF03A',\n 'Archive': '\\uF03F',\n 'ActivityFeed': '\\uF056',\n 'Compare': '\\uF057',\n 'EventDate': '\\uF059',\n 'ArrowUpRight': '\\uF069',\n 'CaretRight': '\\uF06B',\n 'SetAction': '\\uF071',\n 'ChatBot': '\\uF08B',\n 'CaretSolidLeft': '\\uF08D',\n 'CaretSolidDown': '\\uF08E',\n 'CaretSolidRight': '\\uF08F',\n 'CaretSolidUp': '\\uF090',\n 'PowerAppsLogo': '\\uF091',\n 'PowerApps2Logo': '\\uF092',\n 'SearchIssue': '\\uF09A',\n 'SearchIssueMirrored': '\\uF09B',\n 'FabricAssetLibrary': '\\uF09C',\n 'FabricDataConnectionLibrary': '\\uF09D',\n 'FabricDocLibrary': '\\uF09E',\n 'FabricFormLibrary': '\\uF09F',\n 'FabricFormLibraryMirrored': '\\uF0A0',\n 'FabricReportLibrary': '\\uF0A1',\n 'FabricReportLibraryMirrored': '\\uF0A2',\n 'FabricPublicFolder': '\\uF0A3',\n 'FabricFolderSearch': '\\uF0A4',\n 'FabricMovetoFolder': '\\uF0A5',\n 'FabricUnsyncFolder': '\\uF0A6',\n 'FabricSyncFolder': '\\uF0A7',\n 'FabricOpenFolderHorizontal': '\\uF0A8',\n 'FabricFolder': '\\uF0A9',\n 'FabricFolderFill': '\\uF0AA',\n 'FabricNewFolder': '\\uF0AB',\n 'FabricPictureLibrary': '\\uF0AC',\n 'PhotoVideoMedia': '\\uF0B1',\n 'AddFavorite': '\\uF0C8'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-9\"`,\n src: `url('${baseUrl}fabric-icons-9-c6162b42.woff') format('woff')`\n },\n icons: {\n 'AddFavoriteFill': '\\uF0C9',\n 'BufferTimeBefore': '\\uF0CF',\n 'BufferTimeAfter': '\\uF0D0',\n 'BufferTimeBoth': '\\uF0D1',\n 'PublishContent': '\\uF0D4',\n 'ClipboardList': '\\uF0E3',\n 'ClipboardListMirrored': '\\uF0E4',\n 'CannedChat': '\\uF0F2',\n 'SkypeForBusinessLogo': '\\uF0FC',\n 'TabCenter': '\\uF100',\n 'PageCheckedin': '\\uF104',\n 'PageList': '\\uF106',\n 'ReadOutLoud': '\\uF112',\n 'CaretBottomLeftSolid8': '\\uF121',\n 'CaretBottomRightSolid8': '\\uF122',\n 'FolderHorizontal': '\\uF12B',\n 'MicrosoftStaffhubLogo': '\\uF130',\n 'GiftboxOpen': '\\uF133',\n 'StatusCircleOuter': '\\uF136',\n 'StatusCircleInner': '\\uF137',\n 'StatusCircleRing': '\\uF138',\n 'StatusTriangleOuter': '\\uF139',\n 'StatusTriangleInner': '\\uF13A',\n 'StatusTriangleExclamation': '\\uF13B',\n 'StatusCircleExclamation': '\\uF13C',\n 'StatusCircleErrorX': '\\uF13D',\n 'StatusCircleInfo': '\\uF13F',\n 'StatusCircleBlock': '\\uF140',\n 'StatusCircleBlock2': '\\uF141',\n 'StatusCircleQuestionMark': '\\uF142',\n 'StatusCircleSync': '\\uF143',\n 'Toll': '\\uF160',\n 'ExploreContentSingle': '\\uF164',\n 'CollapseContent': '\\uF165',\n 'CollapseContentSingle': '\\uF166',\n 'InfoSolid': '\\uF167',\n 'GroupList': '\\uF168',\n 'ProgressRingDots': '\\uF16A',\n 'CaloriesAdd': '\\uF172',\n 'BranchFork': '\\uF173',\n 'MuteChat': '\\uF17A',\n 'AddHome': '\\uF17B',\n 'AddWork': '\\uF17C',\n 'MobileReport': '\\uF18A',\n 'ScaleVolume': '\\uF18C',\n 'HardDriveGroup': '\\uF18F',\n 'FastMode': '\\uF19A',\n 'ToggleLeft': '\\uF19E',\n 'ToggleRight': '\\uF19F',\n 'TriangleShape': '\\uF1A7',\n 'RectangleShape': '\\uF1A9',\n 'CubeShape': '\\uF1AA',\n 'Trophy2': '\\uF1AE',\n 'BucketColor': '\\uF1B6',\n 'BucketColorFill': '\\uF1B7',\n 'Taskboard': '\\uF1C2',\n 'SingleColumn': '\\uF1D3',\n 'DoubleColumn': '\\uF1D4',\n 'TripleColumn': '\\uF1D5',\n 'ColumnLeftTwoThirds': '\\uF1D6',\n 'ColumnRightTwoThirds': '\\uF1D7',\n 'AccessLogoFill': '\\uF1DB',\n 'AnalyticsLogo': '\\uF1DE',\n 'AnalyticsQuery': '\\uF1DF',\n 'NewAnalyticsQuery': '\\uF1E0',\n 'AnalyticsReport': '\\uF1E1',\n 'WordLogo': '\\uF1E3',\n 'WordLogoFill': '\\uF1E4',\n 'ExcelLogo': '\\uF1E5',\n 'ExcelLogoFill': '\\uF1E6',\n 'OneNoteLogo': '\\uF1E7',\n 'OneNoteLogoFill': '\\uF1E8',\n 'OutlookLogo': '\\uF1E9',\n 'OutlookLogoFill': '\\uF1EA',\n 'PowerPointLogo': '\\uF1EB',\n 'PowerPointLogoFill': '\\uF1EC',\n 'PublisherLogo': '\\uF1ED',\n 'PublisherLogoFill': '\\uF1EE',\n 'ScheduleEventAction': '\\uF1EF',\n 'FlameSolid': '\\uF1F3',\n 'ServerProcesses': '\\uF1FE',\n 'Server': '\\uF201',\n 'SaveAll': '\\uF203',\n 'LinkedInLogo': '\\uF20A',\n 'Decimals': '\\uF218',\n 'SidePanelMirrored': '\\uF221',\n 'ProtectRestrict': '\\uF22A',\n 'Blog': '\\uF22B',\n 'UnknownMirrored': '\\uF22E',\n 'PublicContactCardMirrored': '\\uF230',\n 'GridViewSmall': '\\uF232',\n 'GridViewMedium': '\\uF233',\n 'GridViewLarge': '\\uF234',\n 'Step': '\\uF241',\n 'StepInsert': '\\uF242',\n 'StepShared': '\\uF243',\n 'StepSharedAdd': '\\uF244',\n 'StepSharedInsert': '\\uF245',\n 'ViewDashboard': '\\uF246',\n 'ViewList': '\\uF247'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-10\"`,\n src: `url('${baseUrl}fabric-icons-10-c4ded8e4.woff') format('woff')`\n },\n icons: {\n 'ViewListGroup': '\\uF248',\n 'ViewListTree': '\\uF249',\n 'TriggerAuto': '\\uF24A',\n 'TriggerUser': '\\uF24B',\n 'PivotChart': '\\uF24C',\n 'StackedBarChart': '\\uF24D',\n 'StackedLineChart': '\\uF24E',\n 'BuildQueue': '\\uF24F',\n 'BuildQueueNew': '\\uF250',\n 'UserFollowed': '\\uF25C',\n 'ContactLink': '\\uF25F',\n 'Stack': '\\uF26F',\n 'Bullseye': '\\uF272',\n 'VennDiagram': '\\uF273',\n 'FiveTileGrid': '\\uF274',\n 'FocalPoint': '\\uF277',\n 'Insert': '\\uF278',\n 'RingerRemove': '\\uF279',\n 'TeamsLogoInverse': '\\uF27A',\n 'TeamsLogo': '\\uF27B',\n 'TeamsLogoFill': '\\uF27C',\n 'SkypeForBusinessLogoFill': '\\uF27D',\n 'SharepointLogo': '\\uF27E',\n 'SharepointLogoFill': '\\uF27F',\n 'DelveLogo': '\\uF280',\n 'DelveLogoFill': '\\uF281',\n 'OfficeVideoLogo': '\\uF282',\n 'OfficeVideoLogoFill': '\\uF283',\n 'ExchangeLogo': '\\uF284',\n 'ExchangeLogoFill': '\\uF285',\n 'Signin': '\\uF286',\n 'DocumentApproval': '\\uF28B',\n 'CloneToDesktop': '\\uF28C',\n 'InstallToDrive': '\\uF28D',\n 'Blur': '\\uF28E',\n 'Build': '\\uF28F',\n 'ProcessMetaTask': '\\uF290',\n 'BranchFork2': '\\uF291',\n 'BranchLocked': '\\uF292',\n 'BranchCommit': '\\uF293',\n 'BranchCompare': '\\uF294',\n 'BranchMerge': '\\uF295',\n 'BranchPullRequest': '\\uF296',\n 'BranchSearch': '\\uF297',\n 'BranchShelveset': '\\uF298',\n 'RawSource': '\\uF299',\n 'MergeDuplicate': '\\uF29A',\n 'RowsGroup': '\\uF29B',\n 'RowsChild': '\\uF29C',\n 'Deploy': '\\uF29D',\n 'Redeploy': '\\uF29E',\n 'ServerEnviroment': '\\uF29F',\n 'VisioDiagram': '\\uF2A0',\n 'HighlightMappedShapes': '\\uF2A1',\n 'TextCallout': '\\uF2A2',\n 'IconSetsFlag': '\\uF2A4',\n 'VisioLogo': '\\uF2A7',\n 'VisioLogoFill': '\\uF2A8',\n 'VisioDocument': '\\uF2A9',\n 'TimelineProgress': '\\uF2AA',\n 'TimelineDelivery': '\\uF2AB',\n 'Backlog': '\\uF2AC',\n 'TeamFavorite': '\\uF2AD',\n 'TaskGroup': '\\uF2AE',\n 'TaskGroupMirrored': '\\uF2AF',\n 'ScopeTemplate': '\\uF2B0',\n 'AssessmentGroupTemplate': '\\uF2B1',\n 'NewTeamProject': '\\uF2B2',\n 'CommentAdd': '\\uF2B3',\n 'CommentNext': '\\uF2B4',\n 'CommentPrevious': '\\uF2B5',\n 'ShopServer': '\\uF2B6',\n 'LocaleLanguage': '\\uF2B7',\n 'QueryList': '\\uF2B8',\n 'UserSync': '\\uF2B9',\n 'UserPause': '\\uF2BA',\n 'StreamingOff': '\\uF2BB',\n 'ArrowTallUpLeft': '\\uF2BD',\n 'ArrowTallUpRight': '\\uF2BE',\n 'ArrowTallDownLeft': '\\uF2BF',\n 'ArrowTallDownRight': '\\uF2C0',\n 'FieldEmpty': '\\uF2C1',\n 'FieldFilled': '\\uF2C2',\n 'FieldChanged': '\\uF2C3',\n 'FieldNotChanged': '\\uF2C4',\n 'RingerOff': '\\uF2C5',\n 'PlayResume': '\\uF2C6',\n 'BulletedList2': '\\uF2C7',\n 'BulletedList2Mirrored': '\\uF2C8',\n 'ImageCrosshair': '\\uF2C9',\n 'GitGraph': '\\uF2CA',\n 'Repo': '\\uF2CB',\n 'RepoSolid': '\\uF2CC',\n 'FolderQuery': '\\uF2CD',\n 'FolderList': '\\uF2CE',\n 'FolderListMirrored': '\\uF2CF',\n 'LocationOutline': '\\uF2D0',\n 'POISolid': '\\uF2D1',\n 'CalculatorNotEqualTo': '\\uF2D2',\n 'BoxSubtractSolid': '\\uF2D3'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-11\"`,\n src: `url('${baseUrl}fabric-icons-11-2a8393d6.woff') format('woff')`\n },\n icons: {\n 'BoxAdditionSolid': '\\uF2D4',\n 'BoxMultiplySolid': '\\uF2D5',\n 'BoxPlaySolid': '\\uF2D6',\n 'BoxCheckmarkSolid': '\\uF2D7',\n 'CirclePauseSolid': '\\uF2D8',\n 'CirclePause': '\\uF2D9',\n 'MSNVideosSolid': '\\uF2DA',\n 'CircleStopSolid': '\\uF2DB',\n 'CircleStop': '\\uF2DC',\n 'NavigateBack': '\\uF2DD',\n 'NavigateBackMirrored': '\\uF2DE',\n 'NavigateForward': '\\uF2DF',\n 'NavigateForwardMirrored': '\\uF2E0',\n 'UnknownSolid': '\\uF2E1',\n 'UnknownMirroredSolid': '\\uF2E2',\n 'CircleAddition': '\\uF2E3',\n 'CircleAdditionSolid': '\\uF2E4',\n 'FilePDB': '\\uF2E5',\n 'FileTemplate': '\\uF2E6',\n 'FileSQL': '\\uF2E7',\n 'FileJAVA': '\\uF2E8',\n 'FileASPX': '\\uF2E9',\n 'FileCSS': '\\uF2EA',\n 'FileSass': '\\uF2EB',\n 'FileLess': '\\uF2EC',\n 'FileHTML': '\\uF2ED',\n 'JavaScriptLanguage': '\\uF2EE',\n 'CSharpLanguage': '\\uF2EF',\n 'CSharp': '\\uF2F0',\n 'VisualBasicLanguage': '\\uF2F1',\n 'VB': '\\uF2F2',\n 'CPlusPlusLanguage': '\\uF2F3',\n 'CPlusPlus': '\\uF2F4',\n 'FSharpLanguage': '\\uF2F5',\n 'FSharp': '\\uF2F6',\n 'TypeScriptLanguage': '\\uF2F7',\n 'PythonLanguage': '\\uF2F8',\n 'PY': '\\uF2F9',\n 'CoffeeScript': '\\uF2FA',\n 'MarkDownLanguage': '\\uF2FB',\n 'FullWidth': '\\uF2FE',\n 'FullWidthEdit': '\\uF2FF',\n 'Plug': '\\uF300',\n 'PlugSolid': '\\uF301',\n 'PlugConnected': '\\uF302',\n 'PlugDisconnected': '\\uF303',\n 'UnlockSolid': '\\uF304',\n 'Variable': '\\uF305',\n 'Parameter': '\\uF306',\n 'CommentUrgent': '\\uF307',\n 'Storyboard': '\\uF308',\n 'DiffInline': '\\uF309',\n 'DiffSideBySide': '\\uF30A',\n 'ImageDiff': '\\uF30B',\n 'ImagePixel': '\\uF30C',\n 'FileBug': '\\uF30D',\n 'FileCode': '\\uF30E',\n 'FileComment': '\\uF30F',\n 'BusinessHoursSign': '\\uF310',\n 'FileImage': '\\uF311',\n 'FileSymlink': '\\uF312',\n 'AutoFillTemplate': '\\uF313',\n 'WorkItem': '\\uF314',\n 'WorkItemBug': '\\uF315',\n 'LogRemove': '\\uF316',\n 'ColumnOptions': '\\uF317',\n 'Packages': '\\uF318',\n 'BuildIssue': '\\uF319',\n 'AssessmentGroup': '\\uF31A',\n 'VariableGroup': '\\uF31B',\n 'FullHistory': '\\uF31C',\n 'Wheelchair': '\\uF31F',\n 'SingleColumnEdit': '\\uF321',\n 'DoubleColumnEdit': '\\uF322',\n 'TripleColumnEdit': '\\uF323',\n 'ColumnLeftTwoThirdsEdit': '\\uF324',\n 'ColumnRightTwoThirdsEdit': '\\uF325',\n 'StreamLogo': '\\uF329',\n 'PassiveAuthentication': '\\uF32A',\n 'AlertSolid': '\\uF331',\n 'MegaphoneSolid': '\\uF332',\n 'TaskSolid': '\\uF333',\n 'ConfigurationSolid': '\\uF334',\n 'BugSolid': '\\uF335',\n 'CrownSolid': '\\uF336',\n 'Trophy2Solid': '\\uF337',\n 'QuickNoteSolid': '\\uF338',\n 'ConstructionConeSolid': '\\uF339',\n 'PageListSolid': '\\uF33A',\n 'PageListMirroredSolid': '\\uF33B',\n 'StarburstSolid': '\\uF33C',\n 'ReadingModeSolid': '\\uF33D',\n 'SadSolid': '\\uF33E',\n 'HealthSolid': '\\uF33F',\n 'ShieldSolid': '\\uF340',\n 'GiftBoxSolid': '\\uF341',\n 'ShoppingCartSolid': '\\uF342',\n 'MailSolid': '\\uF343',\n 'ChatSolid': '\\uF344',\n 'RibbonSolid': '\\uF345'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-12\"`,\n src: `url('${baseUrl}fabric-icons-12-7e945a1e.woff') format('woff')`\n },\n icons: {\n 'FinancialSolid': '\\uF346',\n 'FinancialMirroredSolid': '\\uF347',\n 'HeadsetSolid': '\\uF348',\n 'PermissionsSolid': '\\uF349',\n 'ParkingSolid': '\\uF34A',\n 'ParkingMirroredSolid': '\\uF34B',\n 'DiamondSolid': '\\uF34C',\n 'AsteriskSolid': '\\uF34D',\n 'OfflineStorageSolid': '\\uF34E',\n 'BankSolid': '\\uF34F',\n 'DecisionSolid': '\\uF350',\n 'Parachute': '\\uF351',\n 'ParachuteSolid': '\\uF352',\n 'FiltersSolid': '\\uF353',\n 'ColorSolid': '\\uF354',\n 'ReviewSolid': '\\uF355',\n 'ReviewRequestSolid': '\\uF356',\n 'ReviewRequestMirroredSolid': '\\uF357',\n 'ReviewResponseSolid': '\\uF358',\n 'FeedbackRequestSolid': '\\uF359',\n 'FeedbackRequestMirroredSolid': '\\uF35A',\n 'FeedbackResponseSolid': '\\uF35B',\n 'WorkItemBar': '\\uF35C',\n 'WorkItemBarSolid': '\\uF35D',\n 'Separator': '\\uF35E',\n 'NavigateExternalInline': '\\uF35F',\n 'PlanView': '\\uF360',\n 'TimelineMatrixView': '\\uF361',\n 'EngineeringGroup': '\\uF362',\n 'ProjectCollection': '\\uF363',\n 'CaretBottomRightCenter8': '\\uF364',\n 'CaretBottomLeftCenter8': '\\uF365',\n 'CaretTopRightCenter8': '\\uF366',\n 'CaretTopLeftCenter8': '\\uF367',\n 'DonutChart': '\\uF368',\n 'ChevronUnfold10': '\\uF369',\n 'ChevronFold10': '\\uF36A',\n 'DoubleChevronDown8': '\\uF36B',\n 'DoubleChevronUp8': '\\uF36C',\n 'DoubleChevronLeft8': '\\uF36D',\n 'DoubleChevronRight8': '\\uF36E',\n 'ChevronDownEnd6': '\\uF36F',\n 'ChevronUpEnd6': '\\uF370',\n 'ChevronLeftEnd6': '\\uF371',\n 'ChevronRightEnd6': '\\uF372',\n 'ContextMenu': '\\uF37C',\n 'AzureAPIManagement': '\\uF37F',\n 'AzureServiceEndpoint': '\\uF380',\n 'VSTSLogo': '\\uF381',\n 'VSTSAltLogo1': '\\uF382',\n 'VSTSAltLogo2': '\\uF383',\n 'FileTypeSolution': '\\uF387',\n 'WordLogoInverse16': '\\uF390',\n 'WordLogo16': '\\uF391',\n 'WordLogoFill16': '\\uF392',\n 'PowerPointLogoInverse16': '\\uF393',\n 'PowerPointLogo16': '\\uF394',\n 'PowerPointLogoFill16': '\\uF395',\n 'ExcelLogoInverse16': '\\uF396',\n 'ExcelLogo16': '\\uF397',\n 'ExcelLogoFill16': '\\uF398',\n 'OneNoteLogoInverse16': '\\uF399',\n 'OneNoteLogo16': '\\uF39A',\n 'OneNoteLogoFill16': '\\uF39B',\n 'OutlookLogoInverse16': '\\uF39C',\n 'OutlookLogo16': '\\uF39D',\n 'OutlookLogoFill16': '\\uF39E',\n 'PublisherLogoInverse16': '\\uF39F',\n 'PublisherLogo16': '\\uF3A0',\n 'PublisherLogoFill16': '\\uF3A1',\n 'VisioLogoInverse16': '\\uF3A2',\n 'VisioLogo16': '\\uF3A3',\n 'VisioLogoFill16': '\\uF3A4',\n 'TestBeaker': '\\uF3A5',\n 'TestBeakerSolid': '\\uF3A6',\n 'TestExploreSolid': '\\uF3A7',\n 'TestAutoSolid': '\\uF3A8',\n 'TestUserSolid': '\\uF3A9',\n 'TestImpactSolid': '\\uF3AA',\n 'TestPlan': '\\uF3AB',\n 'TestStep': '\\uF3AC',\n 'TestParameter': '\\uF3AD',\n 'TestSuite': '\\uF3AE',\n 'TestCase': '\\uF3AF',\n 'Sprint': '\\uF3B0',\n 'SignOut': '\\uF3B1',\n 'TriggerApproval': '\\uF3B2',\n 'Rocket': '\\uF3B3',\n 'AzureKeyVault': '\\uF3B4',\n 'Onboarding': '\\uF3BA',\n 'Transition': '\\uF3BC',\n 'LikeSolid': '\\uF3BF',\n 'DislikeSolid': '\\uF3C0',\n 'CRMCustomerInsightsApp': '\\uF3C8',\n 'EditCreate': '\\uF3C9',\n 'PlayReverseResume': '\\uF3E4',\n 'PlayReverse': '\\uF3E5',\n 'SearchData': '\\uF3F1',\n 'UnSetColor': '\\uF3F9',\n 'DeclineCall': '\\uF405'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-13\"`,\n src: `url('${baseUrl}fabric-icons-13-c3989a02.woff') format('woff')`\n },\n icons: {\n 'RectangularClipping': '\\uF407',\n 'TeamsLogo16': '\\uF40A',\n 'TeamsLogoFill16': '\\uF40B',\n 'Spacer': '\\uF40D',\n 'SkypeLogo16': '\\uF40E',\n 'SkypeForBusinessLogo16': '\\uF40F',\n 'SkypeForBusinessLogoFill16': '\\uF410',\n 'FilterSolid': '\\uF412',\n 'MailUndelivered': '\\uF415',\n 'MailTentative': '\\uF416',\n 'MailTentativeMirrored': '\\uF417',\n 'MailReminder': '\\uF418',\n 'ReceiptUndelivered': '\\uF419',\n 'ReceiptTentative': '\\uF41A',\n 'ReceiptTentativeMirrored': '\\uF41B',\n 'Inbox': '\\uF41C',\n 'IRMReply': '\\uF41D',\n 'IRMReplyMirrored': '\\uF41E',\n 'IRMForward': '\\uF41F',\n 'IRMForwardMirrored': '\\uF420',\n 'VoicemailIRM': '\\uF421',\n 'EventAccepted': '\\uF422',\n 'EventTentative': '\\uF423',\n 'EventTentativeMirrored': '\\uF424',\n 'EventDeclined': '\\uF425',\n 'IDBadge': '\\uF427',\n 'BackgroundColor': '\\uF42B',\n 'OfficeFormsLogoInverse16': '\\uF433',\n 'OfficeFormsLogo': '\\uF434',\n 'OfficeFormsLogoFill': '\\uF435',\n 'OfficeFormsLogo16': '\\uF436',\n 'OfficeFormsLogoFill16': '\\uF437',\n 'OfficeFormsLogoInverse24': '\\uF43A',\n 'OfficeFormsLogo24': '\\uF43B',\n 'OfficeFormsLogoFill24': '\\uF43C',\n 'PageLock': '\\uF43F',\n 'NotExecuted': '\\uF440',\n 'NotImpactedSolid': '\\uF441',\n 'FieldReadOnly': '\\uF442',\n 'FieldRequired': '\\uF443',\n 'BacklogBoard': '\\uF444',\n 'ExternalBuild': '\\uF445',\n 'ExternalTFVC': '\\uF446',\n 'ExternalXAML': '\\uF447',\n 'IssueSolid': '\\uF448',\n 'DefectSolid': '\\uF449',\n 'LadybugSolid': '\\uF44A',\n 'NugetLogo': '\\uF44C',\n 'TFVCLogo': '\\uF44D',\n 'ProjectLogo32': '\\uF47E',\n 'ProjectLogoFill32': '\\uF47F',\n 'ProjectLogo16': '\\uF480',\n 'ProjectLogoFill16': '\\uF481',\n 'SwayLogo32': '\\uF482',\n 'SwayLogoFill32': '\\uF483',\n 'SwayLogo16': '\\uF484',\n 'SwayLogoFill16': '\\uF485',\n 'ClassNotebookLogo32': '\\uF486',\n 'ClassNotebookLogoFill32': '\\uF487',\n 'ClassNotebookLogo16': '\\uF488',\n 'ClassNotebookLogoFill16': '\\uF489',\n 'ClassNotebookLogoInverse32': '\\uF48A',\n 'ClassNotebookLogoInverse16': '\\uF48B',\n 'StaffNotebookLogo32': '\\uF48C',\n 'StaffNotebookLogoFill32': '\\uF48D',\n 'StaffNotebookLogo16': '\\uF48E',\n 'StaffNotebookLogoFill16': '\\uF48F',\n 'StaffNotebookLogoInverted32': '\\uF490',\n 'StaffNotebookLogoInverted16': '\\uF491',\n 'KaizalaLogo': '\\uF492',\n 'TaskLogo': '\\uF493',\n 'ProtectionCenterLogo32': '\\uF494',\n 'GallatinLogo': '\\uF496',\n 'Globe2': '\\uF49A',\n 'Guitar': '\\uF49B',\n 'Breakfast': '\\uF49C',\n 'Brunch': '\\uF49D',\n 'BeerMug': '\\uF49E',\n 'Vacation': '\\uF49F',\n 'Teeth': '\\uF4A0',\n 'Taxi': '\\uF4A1',\n 'Chopsticks': '\\uF4A2',\n 'SyncOccurence': '\\uF4A3',\n 'UnsyncOccurence': '\\uF4A4',\n 'GIF': '\\uF4A9',\n 'PrimaryCalendar': '\\uF4AE',\n 'SearchCalendar': '\\uF4AF',\n 'VideoOff': '\\uF4B0',\n 'MicrosoftFlowLogo': '\\uF4B1',\n 'BusinessCenterLogo': '\\uF4B2',\n 'ToDoLogoBottom': '\\uF4B3',\n 'ToDoLogoTop': '\\uF4B4',\n 'EditSolid12': '\\uF4B5',\n 'EditSolidMirrored12': '\\uF4B6',\n 'UneditableSolid12': '\\uF4B7',\n 'UneditableSolidMirrored12': '\\uF4B8',\n 'UneditableMirrored': '\\uF4B9',\n 'AdminALogo32': '\\uF4BA',\n 'AdminALogoFill32': '\\uF4BB',\n 'ToDoLogoInverse': '\\uF4BC'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-14\"`,\n src: `url('${baseUrl}fabric-icons-14-5cf58db8.woff') format('woff')`\n },\n icons: {\n 'Snooze': '\\uF4BD',\n 'WaffleOffice365': '\\uF4E0',\n 'ImageSearch': '\\uF4E8',\n 'NewsSearch': '\\uF4E9',\n 'VideoSearch': '\\uF4EA',\n 'R': '\\uF4EB',\n 'FontColorA': '\\uF4EC',\n 'FontColorSwatch': '\\uF4ED',\n 'LightWeight': '\\uF4EE',\n 'NormalWeight': '\\uF4EF',\n 'SemiboldWeight': '\\uF4F0',\n 'GroupObject': '\\uF4F1',\n 'UngroupObject': '\\uF4F2',\n 'AlignHorizontalLeft': '\\uF4F3',\n 'AlignHorizontalCenter': '\\uF4F4',\n 'AlignHorizontalRight': '\\uF4F5',\n 'AlignVerticalTop': '\\uF4F6',\n 'AlignVerticalCenter': '\\uF4F7',\n 'AlignVerticalBottom': '\\uF4F8',\n 'HorizontalDistributeCenter': '\\uF4F9',\n 'VerticalDistributeCenter': '\\uF4FA',\n 'Ellipse': '\\uF4FB',\n 'Line': '\\uF4FC',\n 'Octagon': '\\uF4FD',\n 'Hexagon': '\\uF4FE',\n 'Pentagon': '\\uF4FF',\n 'RightTriangle': '\\uF500',\n 'HalfCircle': '\\uF501',\n 'QuarterCircle': '\\uF502',\n 'ThreeQuarterCircle': '\\uF503',\n '6PointStar': '\\uF504',\n '12PointStar': '\\uF505',\n 'ArrangeBringToFront': '\\uF506',\n 'ArrangeSendToBack': '\\uF507',\n 'ArrangeSendBackward': '\\uF508',\n 'ArrangeBringForward': '\\uF509',\n 'BorderDash': '\\uF50A',\n 'BorderDot': '\\uF50B',\n 'LineStyle': '\\uF50C',\n 'LineThickness': '\\uF50D',\n 'WindowEdit': '\\uF50E',\n 'HintText': '\\uF50F',\n 'MediaAdd': '\\uF510',\n 'AnchorLock': '\\uF511',\n 'AutoHeight': '\\uF512',\n 'ChartSeries': '\\uF513',\n 'ChartXAngle': '\\uF514',\n 'ChartYAngle': '\\uF515',\n 'Combobox': '\\uF516',\n 'LineSpacing': '\\uF517',\n 'Padding': '\\uF518',\n 'PaddingTop': '\\uF519',\n 'PaddingBottom': '\\uF51A',\n 'PaddingLeft': '\\uF51B',\n 'PaddingRight': '\\uF51C',\n 'NavigationFlipper': '\\uF51D',\n 'AlignJustify': '\\uF51E',\n 'TextOverflow': '\\uF51F',\n 'VisualsFolder': '\\uF520',\n 'VisualsStore': '\\uF521',\n 'PictureCenter': '\\uF522',\n 'PictureFill': '\\uF523',\n 'PicturePosition': '\\uF524',\n 'PictureStretch': '\\uF525',\n 'PictureTile': '\\uF526',\n 'Slider': '\\uF527',\n 'SliderHandleSize': '\\uF528',\n 'DefaultRatio': '\\uF529',\n 'NumberSequence': '\\uF52A',\n 'GUID': '\\uF52B',\n 'ReportAdd': '\\uF52C',\n 'DashboardAdd': '\\uF52D',\n 'MapPinSolid': '\\uF52E',\n 'WebPublish': '\\uF52F',\n 'PieSingleSolid': '\\uF530',\n 'BlockedSolid': '\\uF531',\n 'DrillDown': '\\uF532',\n 'DrillDownSolid': '\\uF533',\n 'DrillExpand': '\\uF534',\n 'DrillShow': '\\uF535',\n 'SpecialEvent': '\\uF536',\n 'OneDriveFolder16': '\\uF53B',\n 'FunctionalManagerDashboard': '\\uF542',\n 'BIDashboard': '\\uF543',\n 'CodeEdit': '\\uF544',\n 'RenewalCurrent': '\\uF545',\n 'RenewalFuture': '\\uF546',\n 'SplitObject': '\\uF547',\n 'BulkUpload': '\\uF548',\n 'DownloadDocument': '\\uF549',\n 'GreetingCard': '\\uF54B',\n 'Flower': '\\uF54E',\n 'WaitlistConfirm': '\\uF550',\n 'WaitlistConfirmMirrored': '\\uF551',\n 'LaptopSecure': '\\uF552',\n 'DragObject': '\\uF553',\n 'EntryView': '\\uF554',\n 'EntryDecline': '\\uF555',\n 'ContactCardSettings': '\\uF556',\n 'ContactCardSettingsMirrored': '\\uF557'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-15\"`,\n src: `url('${baseUrl}fabric-icons-15-3807251b.woff') format('woff')`\n },\n icons: {\n 'CalendarSettings': '\\uF558',\n 'CalendarSettingsMirrored': '\\uF559',\n 'HardDriveLock': '\\uF55A',\n 'HardDriveUnlock': '\\uF55B',\n 'AccountManagement': '\\uF55C',\n 'ReportWarning': '\\uF569',\n 'TransitionPop': '\\uF5B2',\n 'TransitionPush': '\\uF5B3',\n 'TransitionEffect': '\\uF5B4',\n 'LookupEntities': '\\uF5B5',\n 'ExploreData': '\\uF5B6',\n 'AddBookmark': '\\uF5B7',\n 'SearchBookmark': '\\uF5B8',\n 'DrillThrough': '\\uF5B9',\n 'MasterDatabase': '\\uF5BA',\n 'CertifiedDatabase': '\\uF5BB',\n 'MaximumValue': '\\uF5BC',\n 'MinimumValue': '\\uF5BD',\n 'VisualStudioIDELogo32': '\\uF5D0',\n 'PasteAsText': '\\uF5D5',\n 'PasteAsCode': '\\uF5D6',\n 'BrowserTab': '\\uF5D7',\n 'BrowserTabScreenshot': '\\uF5D8',\n 'DesktopScreenshot': '\\uF5D9',\n 'FileYML': '\\uF5DA',\n 'ClipboardSolid': '\\uF5DC',\n 'FabricUserFolder': '\\uF5E5',\n 'FabricNetworkFolder': '\\uF5E6',\n 'BullseyeTarget': '\\uF5F0',\n 'AnalyticsView': '\\uF5F1',\n 'Video360Generic': '\\uF609',\n 'Untag': '\\uF60B',\n 'Leave': '\\uF627',\n 'Trending12': '\\uF62D',\n 'Blocked12': '\\uF62E',\n 'Warning12': '\\uF62F',\n 'CheckedOutByOther12': '\\uF630',\n 'CheckedOutByYou12': '\\uF631',\n 'CircleShapeSolid': '\\uF63C',\n 'SquareShapeSolid': '\\uF63D',\n 'TriangleShapeSolid': '\\uF63E',\n 'DropShapeSolid': '\\uF63F',\n 'RectangleShapeSolid': '\\uF640',\n 'ZoomToFit': '\\uF649',\n 'InsertColumnsLeft': '\\uF64A',\n 'InsertColumnsRight': '\\uF64B',\n 'InsertRowsAbove': '\\uF64C',\n 'InsertRowsBelow': '\\uF64D',\n 'DeleteColumns': '\\uF64E',\n 'DeleteRows': '\\uF64F',\n 'DeleteRowsMirrored': '\\uF650',\n 'DeleteTable': '\\uF651',\n 'AccountBrowser': '\\uF652',\n 'VersionControlPush': '\\uF664',\n 'StackedColumnChart2': '\\uF666',\n 'TripleColumnWide': '\\uF66E',\n 'QuadColumn': '\\uF66F',\n 'WhiteBoardApp16': '\\uF673',\n 'WhiteBoardApp32': '\\uF674',\n 'PinnedSolid': '\\uF676',\n 'InsertSignatureLine': '\\uF677',\n 'ArrangeByFrom': '\\uF678',\n 'Phishing': '\\uF679',\n 'CreateMailRule': '\\uF67A',\n 'PublishCourse': '\\uF699',\n 'DictionaryRemove': '\\uF69A',\n 'UserRemove': '\\uF69B',\n 'UserEvent': '\\uF69C',\n 'Encryption': '\\uF69D',\n 'PasswordField': '\\uF6AA',\n 'OpenInNewTab': '\\uF6AB',\n 'Hide3': '\\uF6AC',\n 'VerifiedBrandSolid': '\\uF6AD',\n 'MarkAsProtected': '\\uF6AE',\n 'AuthenticatorApp': '\\uF6B1',\n 'WebTemplate': '\\uF6B2',\n 'DefenderTVM': '\\uF6B3',\n 'MedalSolid': '\\uF6B9',\n 'D365TalentLearn': '\\uF6BB',\n 'D365TalentInsight': '\\uF6BC',\n 'D365TalentHRCore': '\\uF6BD',\n 'BacklogList': '\\uF6BF',\n 'ButtonControl': '\\uF6C0',\n 'TableGroup': '\\uF6D9',\n 'MountainClimbing': '\\uF6DB',\n 'TagUnknown': '\\uF6DF',\n 'TagUnknownMirror': '\\uF6E0',\n 'TagUnknown12': '\\uF6E1',\n 'TagUnknown12Mirror': '\\uF6E2',\n 'Link12': '\\uF6E3',\n 'Presentation': '\\uF6E4',\n 'Presentation12': '\\uF6E5',\n 'Lock12': '\\uF6E6',\n 'BuildDefinition': '\\uF6E9',\n 'ReleaseDefinition': '\\uF6EA',\n 'SaveTemplate': '\\uF6EC',\n 'UserGauge': '\\uF6ED',\n 'BlockedSiteSolid12': '\\uF70A',\n 'TagSolid': '\\uF70E',\n 'OfficeChat': '\\uF70F'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-16\"`,\n src: `url('${baseUrl}fabric-icons-16-9cf93f3b.woff') format('woff')`\n },\n icons: {\n 'OfficeChatSolid': '\\uF710',\n 'MailSchedule': '\\uF72E',\n 'WarningSolid': '\\uF736',\n 'Blocked2Solid': '\\uF737',\n 'SkypeCircleArrow': '\\uF747',\n 'SkypeArrow': '\\uF748',\n 'SyncStatus': '\\uF751',\n 'SyncStatusSolid': '\\uF752',\n 'ProjectDocument': '\\uF759',\n 'ToDoLogoOutline': '\\uF75B',\n 'VisioOnlineLogoFill32': '\\uF75F',\n 'VisioOnlineLogo32': '\\uF760',\n 'VisioOnlineLogoCloud32': '\\uF761',\n 'VisioDiagramSync': '\\uF762',\n 'Event12': '\\uF763',\n 'EventDateMissed12': '\\uF764',\n 'UserOptional': '\\uF767',\n 'ResponsesMenu': '\\uF768',\n 'DoubleDownArrow': '\\uF769',\n 'DistributeDown': '\\uF76A',\n 'BookmarkReport': '\\uF76B',\n 'FilterSettings': '\\uF76C',\n 'GripperDotsVertical': '\\uF772',\n 'MailAttached': '\\uF774',\n 'AddIn': '\\uF775',\n 'LinkedDatabase': '\\uF779',\n 'TableLink': '\\uF77A',\n 'PromotedDatabase': '\\uF77D',\n 'BarChartVerticalFilter': '\\uF77E',\n 'BarChartVerticalFilterSolid': '\\uF77F',\n 'MicOff2': '\\uF781',\n 'MicrosoftTranslatorLogo': '\\uF782',\n 'ShowTimeAs': '\\uF787',\n 'FileRequest': '\\uF789',\n 'WorkItemAlert': '\\uF78F',\n 'PowerBILogo16': '\\uF790',\n 'PowerBILogoBackplate16': '\\uF791',\n 'BulletedListText': '\\uF792',\n 'BulletedListBullet': '\\uF793',\n 'BulletedListTextMirrored': '\\uF794',\n 'BulletedListBulletMirrored': '\\uF795',\n 'NumberedListText': '\\uF796',\n 'NumberedListNumber': '\\uF797',\n 'NumberedListTextMirrored': '\\uF798',\n 'NumberedListNumberMirrored': '\\uF799',\n 'RemoveLinkChain': '\\uF79A',\n 'RemoveLinkX': '\\uF79B',\n 'FabricTextHighlight': '\\uF79C',\n 'ClearFormattingA': '\\uF79D',\n 'ClearFormattingEraser': '\\uF79E',\n 'Photo2Fill': '\\uF79F',\n 'IncreaseIndentText': '\\uF7A0',\n 'IncreaseIndentArrow': '\\uF7A1',\n 'DecreaseIndentText': '\\uF7A2',\n 'DecreaseIndentArrow': '\\uF7A3',\n 'IncreaseIndentTextMirrored': '\\uF7A4',\n 'IncreaseIndentArrowMirrored': '\\uF7A5',\n 'DecreaseIndentTextMirrored': '\\uF7A6',\n 'DecreaseIndentArrowMirrored': '\\uF7A7',\n 'CheckListText': '\\uF7A8',\n 'CheckListCheck': '\\uF7A9',\n 'CheckListTextMirrored': '\\uF7AA',\n 'CheckListCheckMirrored': '\\uF7AB',\n 'NumberSymbol': '\\uF7AC',\n 'Coupon': '\\uF7BC',\n 'VerifiedBrand': '\\uF7BD',\n 'ReleaseGate': '\\uF7BE',\n 'ReleaseGateCheck': '\\uF7BF',\n 'ReleaseGateError': '\\uF7C0',\n 'M365InvoicingLogo': '\\uF7C1',\n 'RemoveFromShoppingList': '\\uF7D5',\n 'ShieldAlert': '\\uF7D7',\n 'FabricTextHighlightComposite': '\\uF7DA',\n 'Dataflows': '\\uF7DD',\n 'GenericScanFilled': '\\uF7DE',\n 'DiagnosticDataBarTooltip': '\\uF7DF',\n 'SaveToMobile': '\\uF7E0',\n 'Orientation2': '\\uF7E1',\n 'ScreenCast': '\\uF7E2',\n 'ShowGrid': '\\uF7E3',\n 'SnapToGrid': '\\uF7E4',\n 'ContactList': '\\uF7E5',\n 'NewMail': '\\uF7EA',\n 'EyeShadow': '\\uF7EB',\n 'FabricFolderConfirm': '\\uF7FF',\n 'InformationBarriers': '\\uF803',\n 'CommentActive': '\\uF804',\n 'ColumnVerticalSectionEdit': '\\uF806',\n 'WavingHand': '\\uF807',\n 'ShakeDevice': '\\uF80A',\n 'SmartGlassRemote': '\\uF80B',\n 'Rotate90Clockwise': '\\uF80D',\n 'Rotate90CounterClockwise': '\\uF80E',\n 'CampaignTemplate': '\\uF811',\n 'ChartTemplate': '\\uF812',\n 'PageListFilter': '\\uF813',\n 'SecondaryNav': '\\uF814',\n 'ColumnVerticalSection': '\\uF81E',\n 'SkypeCircleSlash': '\\uF825',\n 'SkypeSlash': '\\uF826'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@fluentui/style-utilities';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-17\"`,\n src: `url('${baseUrl}fabric-icons-17-0c4ed701.woff') format('woff')`\n },\n icons: {\n 'CustomizeToolbar': '\\uF828',\n 'DuplicateRow': '\\uF82A',\n 'RemoveFromTrash': '\\uF82B',\n 'MailOptions': '\\uF82C',\n 'Childof': '\\uF82D',\n 'Footer': '\\uF82E',\n 'Header': '\\uF82F',\n 'BarChartVerticalFill': '\\uF830',\n 'StackedColumnChart2Fill': '\\uF831',\n 'PlainText': '\\uF834',\n 'AccessibiltyChecker': '\\uF835',\n 'DatabaseSync': '\\uF842',\n 'ReservationOrders': '\\uF845',\n 'TabOneColumn': '\\uF849',\n 'TabTwoColumn': '\\uF84A',\n 'TabThreeColumn': '\\uF84B',\n 'BulletedTreeList': '\\uF84C',\n 'MicrosoftTranslatorLogoGreen': '\\uF852',\n 'MicrosoftTranslatorLogoBlue': '\\uF853',\n 'InternalInvestigation': '\\uF854',\n 'AddReaction': '\\uF85D',\n 'ContactHeart': '\\uF862',\n 'VisuallyImpaired': '\\uF866',\n 'EventToDoLogo': '\\uF869',\n 'Variable2': '\\uF86D',\n 'ModelingView': '\\uF871',\n 'DisconnectVirtualMachine': '\\uF873',\n 'ReportLock': '\\uF875',\n 'Uneditable2': '\\uF876',\n 'Uneditable2Mirrored': '\\uF877',\n 'BarChartVerticalEdit': '\\uF89D',\n 'GlobalNavButtonActive': '\\uF89F',\n 'PollResults': '\\uF8A0',\n 'Rerun': '\\uF8A1',\n 'QandA': '\\uF8A2',\n 'QandAMirror': '\\uF8A3',\n 'BookAnswers': '\\uF8A4',\n 'AlertSettings': '\\uF8B6',\n 'TrimStart': '\\uF8BB',\n 'TrimEnd': '\\uF8BC',\n 'TableComputed': '\\uF8F5',\n 'DecreaseIndentLegacy': '\\uE290',\n 'IncreaseIndentLegacy': '\\uE291',\n 'SizeLegacy': '\\uE2B2'\n }\n };\n\n registerIcons(subset, options);\n}\n","import { registerIconAlias } from '@fluentui/style-utilities';\n\nexport const registerIconAliases = () => {\n registerIconAlias('trash', 'delete');\n registerIconAlias('onedrive', 'onedrivelogo');\n registerIconAlias('alertsolid12', 'eventdatemissed12');\n registerIconAlias('sixpointstar', '6pointstar');\n registerIconAlias('twelvepointstar', '12pointstar');\n registerIconAlias('toggleon', 'toggleleft');\n registerIconAlias('toggleoff', 'toggleright');\n};\n\nexport default registerIconAliases;\n","// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@fluentui/set-version';\nsetVersion('@fluentui/font-icons-mdl2', '8.5.23');","import { initializeIcons as i } from './fabric-icons';\nimport { initializeIcons as i0 } from './fabric-icons-0';\nimport { initializeIcons as i1 } from './fabric-icons-1';\nimport { initializeIcons as i2 } from './fabric-icons-2';\nimport { initializeIcons as i3 } from './fabric-icons-3';\nimport { initializeIcons as i4 } from './fabric-icons-4';\nimport { initializeIcons as i5 } from './fabric-icons-5';\nimport { initializeIcons as i6 } from './fabric-icons-6';\nimport { initializeIcons as i7 } from './fabric-icons-7';\nimport { initializeIcons as i8 } from './fabric-icons-8';\nimport { initializeIcons as i9 } from './fabric-icons-9';\nimport { initializeIcons as i10 } from './fabric-icons-10';\nimport { initializeIcons as i11 } from './fabric-icons-11';\nimport { initializeIcons as i12 } from './fabric-icons-12';\nimport { initializeIcons as i13 } from './fabric-icons-13';\nimport { initializeIcons as i14 } from './fabric-icons-14';\nimport { initializeIcons as i15 } from './fabric-icons-15';\nimport { initializeIcons as i16 } from './fabric-icons-16';\nimport { initializeIcons as i17 } from './fabric-icons-17';\nimport { IIconOptions, FLUENT_CDN_BASE_URL } from '@fluentui/style-utilities';\nimport { registerIconAliases } from './iconAliases';\nimport { getWindow } from '@fluentui/utilities';\n\nconst DEFAULT_BASE_URL = `${FLUENT_CDN_BASE_URL}/assets/icons/`;\n\n/*\n * The Window variable has the iconBaseUrl prop in order to allow for users to redirect icon font downloads to a new\n * URL. The config can be burned on the page to ensure there are no race conditions which might load resources on\n * script load.\n */\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Window {\n /**\n * The FabricConfig options can be burned on the page prior to script load to provide\n * alternative defaults at script load time. This helps avoid race conditions by calling\n * `initializeIcons` too late, or in cases where you can't control the `initializeIcons` call,\n * such as using the pre-created Fluent bundle.\n */\n FabricConfig?: {\n /**\n * Controls the base url of the font files. This is useful for scenarios where the fonts\n * are stored on a private CDN other than the default SharePoint CDN.\n */\n fontBaseUrl?: string;\n\n /**\n * Controls the base url of the icon font files. This is useful for scenarios where the icons\n * are stored on a private CDN other than the default SharePoint CDN. Note that in prior\n * iterations, `fontBaseUrl` was used to control both font and icon base urls. While you can\n * still use `fontBaseUrl` to provide a single base url for both, the `iconBaseUrl` will be\n * used first if available.\n */\n iconBaseUrl?: string;\n };\n }\n}\n\nconst win = getWindow();\n\nexport function initializeIcons(\n baseUrl: string = win?.FabricConfig?.iconBaseUrl || win?.FabricConfig?.fontBaseUrl || DEFAULT_BASE_URL,\n options?: IIconOptions,\n): void {\n [i, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17].forEach(\n (initialize: (url: string, options?: IIconOptions) => void) => initialize(baseUrl, options),\n );\n\n registerIconAliases();\n}\n\n/* eslint-disable deprecation/deprecation */\nexport type { IconNamesInput } from './IconNames';\nexport { IconNames } from './IconNames';\n/* eslint-enable deprecation/deprecation */\n\nimport './version';\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n process.env.PUBLIC_URL,\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './fabric.css'\r\nimport './index.css';\r\nimport App from './App';\r\nimport { initializeIcons } from \"@fluentui/react\";\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\ninitializeIcons();\r\n\r\nReactDOM.render(, document.getElementById('root'));\r\nserviceWorker.unregister();\r\n"],"names":["t","e","i","Object","keys","getOwnPropertySymbols","a","filter","getOwnPropertyDescriptor","enumerable","push","apply","arguments","length","forEach","o","getOwnPropertyDescriptors","defineProperties","defineProperty","Symbol","iterator","constructor","prototype","TypeError","s","configurable","writable","key","r","value","n","create","h","l","setPrototypeOf","getPrototypeOf","__proto__","c","ReferenceError","d","Reflect","construct","sham","Proxy","Boolean","valueOf","call","this","g","Array","isArray","next","done","return","p","u","f","from","toString","slice","name","test","x","split","parseInt","Math","round","isColorHex","shadeHexColor","shadeRGBColor","assign","hasOwnProperty","isObject","extend","map","is","clone","log","LN10","pow","floor","log10","parseFloat","Number","isInteger","toPrecision","random","substring","String","replace","getComputedStyle","clientHeight","clientWidth","paddingTop","paddingBottom","paddingLeft","paddingRight","getBoundingClientRect","top","right","bottom","left","width","height","y","reduce","match","RegExp","join","PI","sin","cos","splice","parentElement","classList","contains","style","isNaN","navigator","userAgent","toLowerCase","indexOf","window","appVersion","max","abs","b","ctx","w","setEasingFunctions","globals","easing","config","chart","animations","attr","animate","afterAll","cx","cy","el","realIndex","j","fill","pathFrom","pathTo","speed","delay","animateGradually","enabled","dynamicAnimation","dataChanged","type","morphSVG","comboCharts","delayedElements","remove","add","animationEnded","showDelayedElements","events","animationEnd","concat","gridHeight","shouldAnimate","plot","isNumber","series","maxValsInArrayIndex","animationCompleted","v","unfilter","SVG","Filter","size","states","normal","applyFilter","dropShadow","node","intensity","addShadow","componentTransfer","rgb","slope","intercept","filterer","setAttribute","_scaleFilterSize","addNormalFilter","addLightenFilter","addDarkenFilter","blur","color","opacity","enabledOnSeries","flood","composite","sourceAlpha","offset","gaussianBlur","merge","source","blend","noUserSpaceOnUse","isIE","isSafari","isFirefox","selectedDataPoints","active","m","sqrt","min","origPoint","k","dom","Paper","line","x1","y1","x2","y2","stroke","rect","rx","ry","polygon","circle","strokeWidth","fillOpacity","strokeOpacity","classes","strokeLinecap","strokeDashArray","lineCap","path","class","group","animationDelay","initialSpeed","dataChangeSpeed","className","shouldClipToGrid","bindEventsOnPaths","drawShadow","A","S","C","L","P","M","resized","T","I","dashArray","z","drawPath","cuid","getDefaultFilter","X","addEventListener","pathMouseEnter","bind","pathMouseLeave","pathMouseDown","E","animatePathsGradually","pattern","hexToRgba","gradient","at","gridWidth","gradientUnits","fx","fy","to","text","maxWidth","fontSize","fontFamily","getTextRects","textAnchor","fontWeight","foreColor","cssClass","isPlainText","dominantBaseline","getTextBasedOnMaxWidth","tspan","newLine","plain","drawLine","pointStrokeColor","pointStrokeDashArray","pointStrokeWidth","pointStrokeLineCap","createGroupWithAttributes","pSize","shape","drawX","drawPlus","pRadius","drawRect","pointFillColor","pointFillOpacity","pointStrokeOpacity","drawCircle","getAttribute","dataPointMouseEnter","seriesIndex","dataPointIndex","fireEvent","hover","isTouchDevice","dataPointMouseLeave","allowMultipleDataPointsSelection","select","members","dataPointSelection","getBBox","drawText","bbox","getComputedTextLength","textContent","getSubStringLength","seriesGroups","seriesNames","getStackedSeriesTotals","data","every","xaxis","convertedCatToNumeric","labels","formatter","minX","markers","discrete","sizeOffset","largestSize","seriesTotals","seriesX","seriesPercent","stackedSeriesTotals","yRange","isMultipleYAxis","minYArr","maxYArr","minY","maxY","xRange","maxX","zRange","maxZ","minZ","MIN_VALUE","hasNegs","seriesYAxisReverseMap","yaxis","logarithmic","getBaseLog","logBase","yRatio","invertedYRatio","zRatio","xRatio","invertedXRatio","baseLineInvertedY","baseLineY","baseLineX","seriesLog","getLogVal","invalidLogScale","yLogRatio","logYRange","MAX_VALUE","comboBarCount","extendYAxis","annotations","extendYAxisAnnotations","extendXAxisAnnotations","points","extendPointAnnotations","annoCtx","label","orientation","baseEl","querySelector","position","graphics","rotateAroundCenter","trim","padding","barPadForNumericAxis","borderRadius","background","borderWidth","borderColor","id","parentNode","addBackgroundToAnno","insertBefore","mouseEnter","mouseLeave","click","invertAxis","categoryLabels","barHeight","seriesYAxisMap","yAxisIndex","marker","reversed","yP","clipped","inversedReversedAxis","dataFormatXNumeric","sparkline","getStringX","barWidth","helpers","getX1X2","offsetX","offsetY","appendChild","fillColor","rel","setOrientations","addXaxisAnnotation","months31","months30","daysCntOfYear","parseDate","Date","parse","datetimeUTC","toISOString","substr","getTime","toUTCString","getTimeStamp","locale","months","shortMonths","days","shortDays","getUTCFullYear","getFullYear","getUTCMonth","getMonth","getUTCDate","getDate","getUTCHours","getHours","getUTCMinutes","getMinutes","getUTCSeconds","getSeconds","getUTCMilliseconds","getMilliseconds","charAt","getTimezoneOffset","getUTCDay","getDay","formatDate","minMillisecond","maxMillisecond","minSecond","maxSecond","minMinute","maxMinute","minHour","maxHour","minDate","maxDate","minMonth","maxMonth","minYear","maxYear","determineDaysOfMonths","isLeapYear","monthMod","tooltipKeyFormat","tooltip","format","yValueDecimal","toFixed","decimalsInFloat","xaxisTooltipFormatter","defaultGeneralFormatter","ttKeyFormatter","ttZFormatter","legendFormatter","xLabelFormatter","isBarHorizontal","ttVal","legend","yLabelFormatters","xyCharts","defaultYFormatter","yAxisScale","result","niceMax","niceMin","xLabelFormat","dateFormatter","unit","rotateXLabels","rotate","showDuplicates","timeScale","textRect","isBold","tickAmount","skipFirstTimelinelabel","skipLastTimelinelabel","hideOverlappingLabels","reverse","some","collapsedSeriesIndices","seriesName","show","yAxisAllSeriesCollapsed","showForNullSeries","isSeriesNull","theme","pushExtraColors","translateY","opposite","axesUtils","getY1Y2","_getYAxisAnnotationWidth","translateYAxisIndex","isYAxisHidden","addYaxisAnnotation","strokeColor","radius","drawMarker","customSVG","transform","innerHTML","image","addImage","appendTo","addPointAnnotation","options","toolbar","exportToSVG","exportToPNG","exportToCSV","menu","selection","selectionZoom","zoomIn","zoomOut","pan","reset","yAxis","showAlways","stepSize","forceNiceScale","floating","minWidth","align","colors","axisBorder","axisTicks","title","crosshairs","pointAnnotation","yAxisAnnotation","xAxisAnnotation","backgroundColor","texts","images","shapes","locales","defaultLocale","beforeMount","mounted","updated","mouseMove","xAxisLabelClick","legendClick","markerClick","beforeZoom","beforeResetZoom","zoomed","scrolled","brushScrolled","parentHeightOffset","redrawOnParentResize","redrawOnWindowResize","nonce","brush","autoScaleYaxis","target","targets","stacked","stackOnlyBar","stackType","tools","download","zoom","zoomin","zoomout","customIcons","export","csv","filename","columnDelimiter","headerCategory","headerValue","toDateString","png","svg","autoSelected","zoomedArea","plotOptions","area","fillTo","bar","horizontal","columnWidth","distributed","borderRadiusApplication","borderRadiusWhenStacked","rangeBarOverlap","rangeBarGroupRows","hideZeroBarsWhenGrouped","isDumbbell","dumbbellColors","isFunnel","isFunnel3d","ranges","backgroundBarColors","backgroundBarOpacity","backgroundBarRadius","dataLabels","maxItems","hideOverflowingLabels","total","bubble","zScaling","minBubbleRadius","maxBubbleRadius","candlestick","upward","downward","wick","useFillColor","boxPlot","upper","lower","heatmap","enableShades","shadeIntensity","reverseNegativeShade","useFillColorAsStroke","colorScale","inverse","treemap","radialBar","inverseOrder","startAngle","endAngle","hollow","margin","imageWidth","imageHeight","imageOffsetX","imageOffsetY","imageClipped","track","barLabels","useSeriesColors","onClick","pie","customScale","expandOnClick","minAngleToShowLabel","donut","polarArea","rings","spokes","connectorColors","radar","polygons","strokeColors","shade","gradientToColors","inverseColors","opacityFrom","opacityTo","stops","colorStops","src","forecastDataPoints","count","grid","lines","row","column","showForSingleSeries","showForZeroSeries","horizontalAlign","tooltipHoverFormatter","customLegendItems","fillColors","customHTML","itemMargin","vertical","onItemClick","toggleDataSeries","onItemHover","highlightDataSeries","onDblClick","showNullDataPoints","noData","verticalAlign","responsive","subtitle","curve","shared","hideEmptySeries","followCursor","intersect","custom","fillSeriesColor","onDatasetHover","items","display","fixed","categories","overwriteCategories","rotateAlways","minHeight","maxHeight","datetimeFormatter","year","month","day","hour","minute","second","groups","tickPlacement","range","colorFrom","colorTo","mode","palette","monochrome","shadeTo","xAxisAnnotations","yAxisAnnotations","pointsAnnotations","xDivision","dataPoints","axisCharts","drawYAxisAnnotations","drawXAxisAnnotations","drawPointAnnotations","elGraphical","index","annotationsBackground","addText","move","addAnnotationExternal","params","pushToMemory","context","contextMethod","childNodes","memory","methodsToExec","randomId","method","querySelectorAll","listToArray","firstChild","removeChild","isTimeline","seriesRangeStart","seriesRangeEnd","start","end","isFinite","startVal","endVal","ylabel","tooltipLabels","getFormatters","yLbFormatter","opts","hideYAxis","_getBoxTooltip","seriesCandleO","seriesCandleH","seriesCandleM","seriesCandleL","seriesCandleC","Y","responsiveOverride","chartType","extendAnnotations","init","funnel","stackedBars","stacked100","dumbbell","checkForDarkTheme","Apex","checkForCatToNumericXAxis","handleUserInputErrors","convertCatToNumeric","extendArray","console","warn","Error","F","seriesRange","seriesGoals","seriesZ","seriesColors","seriesXvalues","seriesYvalues","hasXaxisGroups","barGroups","hasSeriesGroups","timescaleLabels","noLabelsProvided","resizeTimer","selectionResizeTimer","pointsArray","dataLabelsRects","isXNumeric","isDataXYZ","isMultiLineX","initialMaxX","initialMinX","minXDiff","xAxisScale","xAxisTicksPositions","yLabelsCoords","yTitleCoords","padHorizontal","xTickAmount","multiAxisTickAmount","chartID","clicked","clientX","clientY","radarPolygons","msMaxTouchPoints","isDirty","isExecCalled","initialConfig","initialSeries","lastXAxis","lastYAxis","columnSeries","allSeriesCollapsed","collapsedSeries","ancillaryCollapsedSeries","ancillaryCollapsedSeriesIndices","risingSeries","capturedSeriesIndex","capturedDataPointIndex","goldenPadding","ignoreYAxisIndexes","radialSize","zoomEnabled","panEnabled","selectionEnabled","mousedown","lastClientPosition","visibleXRange","SVGNS","svgWidth","svgHeight","previousPaths","allSeriesHasEqualX","lastDrawnDataLabelsIndexes","hasNullValues","defaultLabels","LINE_HEIGHT_RATIO","xAxisLabelsHeight","xAxisGroupLabelsHeight","xAxisLabelsWidth","yAxisLabelsWidth","scaleX","scaleY","translateX","translateYAxisX","yAxisWidths","translateXAxisY","translateXAxisX","niceScaleAllowedMagMsd","niceScaleDefaultTicks","globalVars","initGlobalVars","R","H","document","createElementNS","setAttrs","patternID","patternUnits","setAttributeNS","xlink","preserveAspectRatio","elDefs","seriesNumber","getSeriesIndex","getFillColors","fillType","getFillType","getOpacityFromRGBA","handlePatternFill","fillConfig","patternFill","defaultColor","handleGradientFill","clippedImgArea","solid","drawPattern","shadeColor","rgb2hex","gradientFrom","gradientTo","drawGradient","D","getMarkerConfig","setSelectionFilter","addEvents","finishRadius","getMarkerStyle","pointShape","passive","O","initialAnim","dynamicAnim","pointsPos","elParent","drawPoint","fillPath","animateMarker","setTimeout","animateCircle","N","textRects","drawnextLabel","pos","isRangeStart","centerTextInBubble","plotDataLabelsText","parent","offsetCorrection","dataLabelsConfig","alwaysDrawDataLabel","dataLabelsCorrection","addBackgroundToDataLabel","nextSibling","W","legendInactiveClass","getElementsByClassName","escapeString","getSeriesByName","isHidden","isSeriesHidden","legendHelpers","emptyCollapsedSeries","updateHelpers","revertDefaultAxisMinMax","_updateSeries","paths","hasAttribute","handlePrevBubbleScatterPaths","filteredSeriesX","B","twoDSeries","threeDSeries","twoDSeriesX","coreUtils","isFormatXY","isFormat2DArray","activeSeriesIndex","getActiveConfigSeriesIndex","parseNumber","goals","isValidDate","isRangeData","fallbackToCategory","handleRangeDataFormat","rangeUniques","overlaps","rangeName","handleCandleStickBoxDataFormat","findIndex","isRangeBar","Set","error","handleRangeData","isMultiFormat","handleFormat2DArray","handleFormatXY","handleCandleStickBoxData","JSON","stringify","convertCatToNumericXaxis","_generateExternalLabels","excludeCollapsedSeriesInYAxis","core","resetGlobals","isMultipleY","parseDataAxisCharts","getLargestSeries","parseDataNonAxisCharts","setNullSeriesToZeroValues","getSeriesTotals","stackedSeriesTotalsByGroups","getStackedSeriesTotalsByGroups","getPercentSeries","handleExternalLabelsData","getCategoryLabels","G","getAttributeNS","isIE11","cloneNode","scaleSvgNode","XMLSerializer","serializeToString","fixSvgStringForIe11","cleanup","getSvgString","Blob","URL","createObjectURL","Promise","scale","createElement","elWrap","getContext","fillStyle","fillRect","canvg","Canvg","fromString","ignoreClear","ignoreDimensions","msToBlob","stop","blob","encodeURIComponent","Image","crossOrigin","onload","drawImage","toDataURL","imgURI","triggerDownload","svgUrl","dataURI","then","msSaveOrOpenBlob","fileName","lineDelimiter","getLabel","pop","sort","href","body","V","elgrid","xaxisLabels","drawnLabels","drawnLabelsRects","offY","isCategoryBarHorizontal","xaxisFontSize","xaxisFontFamily","xaxisForeColors","xaxisBorderWidth","xaxisBorderHeight","drawXAxisLabelAndGroup","cols","elGridBorders","checkLabelBasedOnTickamount","checkForOverflowingLabels","xAxisHeight","on","labelIndex","getYAxisForeColor","drawYAxisTicks","placeTextWithEllipsis","renderGrid","drawGridArea","elGridRectMask","elGridRectMarkerMask","elForecastMask","elNonForecastMask","elGridRect","elGridRectMarker","xCount","_drawGridLine","drawXaxisTicks","elg","xC","_drawGridLines","elgridLinesV","elgridLinesH","hide","_drawXYLines","_drawInvertedXYLines","drawGridBands","xAxisTickWidth","_drawGridBandRect","_","ceil","mod","getGCD","getPrimeFactors","stripNumber","_adjustTicksForSmallRange","logarithmicScaleNice","logarithmicScale","niceScale","linearScale","shift","setSeriesYAxisMappings","setYScaleForIndex","U","scales","setYRange","setXRange","setZRange","brushSource","isFloat","noExponents","lowestY","highestY","getMinYMaxY","_setStackedMinMax","scaleMultipleYAxes","setXScale","_handleSingleDataPoint","_getMinXDiff","setUTCDate","setDate","entries","q","axisFontFamily","xAxisoffX","checkForReversedLabels","inversedYAxisTitleText","inversedYAxisBorder","xPaddingForYAxisTitle","xPos","padd","multipleYs","Z","documentEvent","chartClass","eventList","which","capture","setupBrushHandler","touches","$","J","drawYaxisInversed","drawXaxisInversed","drawXaxis","drawYaxis","children","Q","K","breakpoint","innerWidth","screen","extendArrayProps","overrideResponsiveOptions","tt","isColorFn","isHeatmapDistributed","isBarDistributed","setDefaultColors","predefined","et","drawTitleSubtitle","it","dCtx","elLegendWrap","lgRect","getxAxisTimeScaleLabelsCoords","lgWidthForSideLegends","getLargestStringFromArr","dimHelpers","getLargestStringFromMultiArr","yAxisWidth","gridPad","overlappingXLabels","yAxisWidthRight","yAxisWidthLeft","xPadRight","xPadLeft","st","rt","isSparkline","getTitleSubtitleCoords","ot","dimYAxis","dimXAxis","dimGrid","getLegendsRect","setDimensionsForAxisCharts","setDimensionsForNonAxisCharts","gridPadFortitleSubtitle","gridPadForColumnsInNumericAxis","getyAxisLabelsCoords","getyAxisTitleCoords","getTotalYAxisWidth","getxAxisLabelsCoords","getxAxisGroupLabelsCoords","getxAxisTitleCoords","conditionalChecksForAxisCoords","xAxisWidth","additionalPaddingXLabels","setGridXPosForDualYAxis","setYAxisXPosition","nt","lgCtx","createTextNode","clwh","clww","elLegendForeign","getLegendStyles","cs","csi","riseCollapsedSeries","hideSeries","seriesEl","printDataLabelsInner","fire","baseVal","_getSeriesBasedOnCollapsedState","lt","onLegendClick","onLegendHovered","isBarsDistributed","drawLegends","getElementsByTagName","appendToForeignObject","legendAlignHorizontal","legendAlignVertical","setProperty","getSeriesTotalByIndex","seriesHaveSameValues","getLegendBBox","setLegendWrapXY","highlightRangeInSeries","toggleSeriesOnHover","ht","ev","selectedClass","localeValues","elZoom","elZoomIn","elZoomOut","elPan","elSelection","elZoomReset","elMenuIcon","elMenu","elCustomIcons","icon","moveIndexInArray","_createHamburgerMenu","addToolbarEventListeners","elMenuItems","handleZoomReset","toggleZoomSelection","handleZoomIn","handleZoomOut","togglePanning","toggleMenu","handleDownload","getSyncedCharts","toggleOtherControls","getToolbarIconsReference","_getNewMinXMaxX","disableZoomIn","zoomUpdateOptions","disableZoomOut","getBeforeZoomRange","_updateOptions","zoomCallback","exportToPng","ct","dragged","startX","endX","dragX","startY","endY","dragY","moveDirection","xyRatios","zoomRect","selectionRect","gridRect","slDraggableRect","draggable","selectionDragging","preselectedSelection","hoverArea","svgMouseEvents","off","shiftKey","shiftWasPressed","enableZoomPanFromToolbar","changedTouches","panDragging","zoomtype","selectionDrawing","selectionDrawn","delayedPanScrolled","hideSelectionRect","makeSelectionRectDraggable","selectize","pointSize","pointType","resize","constraint","drawSelectionRect","clearTimeout","panScrolled","updateScrolledChart","dt","ttCtx","elGrid","hasBars","getElGrid","closestInMultiArray","closestInArray","capturedSeries","hoverX","hoverY","getFirstActiveXArray","getElMarkers","getElBars","allTooltipSeriesGroups","gt","tooltipUtil","ttItems","handleCustomTooltip","toggleActiveInactiveSeries","getValuesToPrint","printLabels","values","getElTooltip","tooltipRect","ttWidth","ttHeight","xVal","zVal","xAxisTTVal","getSeriesName","fn","yLbTitleFormatter","attrs","val","DOMHandling","goalVals","pColor","showTooltipTitle","tooltipTitle","isXAxisTooltipEnabled","xaxisTooltipText","toggleAllTooltipSeriesGroups","ut","getElXCrosshairs","xcrosshairsWidth","moveXAxisTooltip","ycrosshairs","ycrosshairsHidden","xaxisTooltip","xaxisOffY","yaxisTTEls","resetPointsSize","enlargeCurrentPoint","moveDynamicPointOnHover","getHoverMarkerSize","moveXCrosshairs","fixedTooltip","moveTooltip","getAllMarkers","dataPointsDividedWidth","pt","tooltipPosition","newPointSize","oldPointSize","lastChild","ft","isVerticalGroupedRangeBar","opt","getAttr","drawSeriesTexts","findAncestor","showOnIntersect","getBarTooltipXY","dataPointsDividedHeight","xt","yaxisOffX","yaxisTooltip","yaxisTooltipText","yaxisTooltips","moveYCrosshairs","moveYAxisTooltip","bt","tConfig","axesTooltip","isBarShared","lastHoverTime","now","drawXaxisTooltip","drawYaxisTooltip","setXCrosshairWidth","handleYCrosshair","getXAxisTicksPositions","drawDynamicPoints","legendLabels","createTTElements","addSVGEvents","order","seriesBound","tooltipEl","tooltipY","tooltipX","addPathsEventListeners","addDatapointEventsListeners","onSeriesHover","seriesHover","seriesHoverTimeout","getGroupedCharts","seriesHoverByContext","chartCtx","drawFixedTooltipRect","axisChartsTooltips","nonAxisChartsTooltips","handleMouseOut","handleStickyTooltip","handleHeatTreeTooltip","handleBarTooltip","hasMarkers","handleMarkerTooltip","drawYaxisTooltipText","decodeURIComponent","getNearestValues","includes","handleStickyCapturedSeries","isXoverlap","isInitialSeriesSameLen","deactivateHoverFilter","enlargePoints","moveDynamicPointsOnHover","barSeriesHeight","getBarsHeight","moveStickyTooltipOverBars","moveMarkers","vt","barCtx","totalFormatter","groupIndex","barXPosition","barYPosition","visibleSeries","renderedPath","barOptions","bcx","bcy","dataLabelsX","dataLabelsY","barDataLabelsConfig","barTotalDataLabelsConfig","offX","isHorizontal","calculateBarsDataLabelsPosition","calculateColumnsDataLabelsPosition","drawCalculatedDataLabels","drawTotalDataLabels","totalDataLabelsX","totalDataLabelsY","totalDataLabelsAnchor","getStackedTotalDataLabel","totalDataLabels","barHelpers","getZeroValueEncounters","zeroEncounters","isReversed","lastActiveBarSerieIndex","mt","totalItems","seriesLen","visibleI","visibleItems","zeroSerieses","checkZeroSeries","translationsIndex","yDivision","zeroH","zeroW","prevY","prevX","prevYF","prevXF","prevYVal","prevXVal","xArrj","xArrjF","xArrjVal","yArrj","yArrjF","yArrjVal","isNullValue","elSeries","seriesGroup","columnWidthOffset","getPreviousPath","shouldApplyRadius","roundPathCorners","barHeightOffset","getXForValue","getYForValue","strokeHeight","strokeLineCap","goalX","goalY","prevPaths","currPaths","nonZeroColumns","yt","yaxisIndex","pathArr","getBarSeriesIndices","getLogSeries","getLogYRatios","initVariables","addCollapsedClassToSeries","initialPositions","getStrokeWidth","indexes","bc","drawBarPaths","drawColumnPaths","getPathFillColor","drawBarShadow","drawGoalLine","renderSeries","pathFill","elDataLabelsWrap","elGoalsMarkers","elBarShadows","lineFill","renderPaths","handleBarDataLabels","getBarpaths","barBackground","getGoalValues","getBarXForNumericXAxis","getColumnPaths","wt","initializeStackedPrevVars","groupCtx","initializeStackedXYVars","drawStackedBarPaths","drawStackedColumnPaths","kt","candlestickOptions","boxOptions","isBoxPlot","drawHorizontalBoxPaths","drawVerticalBoxPaths","getOHLCValue","At","determineColor","percent","colorProps","St","rectRadius","negRange","checkColorRange","getShadeColor","addListeners","animateHeatMap","animateHeatColor","calculateDataLabels","unshift","animateRect","Ct","Lt","animBeginArr","animDur","donutDataLabels","lineColorArr","defaultSize","centerY","centerX","fullAngle","initialAngle","donutSize","sliceLabels","sliceSizes","prevSectorAngleArr","ret","negToZero","drawPolarElements","drawArcs","renderInnerDataLabels","hollowSize","getChangedPath","polarToCartesian","animatePaths","prevStartAngle","prevEndAngle","animateStartingPos","shouldSetPrevPaths","dur","pieClicked","revertDataLabelsInner","animateArc","getPiePath","me","angle","during","isTrack","drawYAxisTexts","drawSpokes","printInnerLabels","makeSliceOut","printLabel","Pt","isLog","maxValue","minValue","dataRadiusOfPercent","dataRadius","angleArr","yaxisLabelsTextsPos","dataPointsLen","disAngle","yaxisLabels","getDataPointsPos","createPaths","linePathsTo","linePathsFrom","areaPathsFrom","areaPathsTo","drawPolygons","drawXAxisTexts","getPolygonPos","drawPolygon","getTextPos","newX","newY","Mt","totalAngle","trackStartAngle","trackEndAngle","radialDataLabels","onBarLabelClick","drawTracks","colorArr","elHollow","drawHollowImage","drawHollow","loaded","It","rangeBarOptions","rangeBar","detectOverlappingBars","srty","initPositions","drawRangeBarPaths","srtx","drawRangeColumnPaths","getRangeValue","Tt","lineCtx","categoryAxisCorrection","pathFromLine","pathFromArea","appendPathFrom","lineYPosition","prevSeriesY","zeroY","Xt","Yt","zt","Et","Ft","pointsChart","scatter","noNegatives","lineHelpers","sameValueSeriesFix","_initSerieVariables","determineFirstPrevY","_calculatePathsFrom","prevY2","pX","pY","pathsFrom","linePaths","areaPaths","y2Arrj","_iterateOverDataPoints","iterations","_handlePaths","elPointsMain","zIndex","areaBottomY","checkPreviousPaths","linePath","areaPath","calculatePoints","_createPaths","pathState","segmentStartX","handleNullDataPoints","_handleMarkersAndLabels","draw","plotChartMarkers","drawDataLabel","TreemapSquared","generate","xoffset","yoffset","shortestEdge","getCoordinates","cutArea","Rt","Ht","Dt","animateTreemap","getFontSize","truncateLabels","rotateToFitLabel","Nt","timeScaleArray","utc","determineInterval","getTimeUnitsfromTimestamp","firstVal","currentMillisecond","currentSecond","currentMinute","currentHour","currentMonthDate","currentDate","currentMonth","currentYear","daysWidthOnXAxis","hoursWidthOnXAxis","minutesWidthOnXAxis","secondsWidthOnXAxis","numberOfSeconds","numberOfMinutes","numberOfHours","numberOfDays","numberOfMonths","numberOfYears","tickInterval","generateYearScale","generateMonthScale","generateDayScale","generateHourScale","generateMinuteScale","generateSecondScale","formatDates","removeOverlappingTS","plotCoords","determineRemainingDaysOfYear","determineDaysOfYear","_getYear","date","createRawDateString","parseDateWithTimezone","dateString","Wt","Doc","setSVGDimensions","defs","getDimensions","drawXCrosshairs","drawYCrosshairs","calculateTimeScaleTicks","recalcDimensionsBasedOnFormat","getCalculatedRatios","ApexCharts","getChartByID","updateSourceChart","Bt","getPreviousPaths","update","_extendSeries","supported","parser","prepare","ns","xmlns","svgjs","did","eid","inherit","invent","Container","adopt","instance","nodeName","SVGElement","Nested","Gradient","Element","namespace","setData","documentElement","nested","poly","polyline","native","regex","numberAndUnit","hex","reference","transforms","whitespace","isHex","isRgb","isCss","isBlank","isPercent","isImage","delimiter","hyphen","pathLetters","isPathLetter","numbersWithDots","dots","utils","filterSVGElements","defaults","Color","exec","toHex","toRgb","brightness","morph","destination","isColor","PointArray","toUpperCase","PathArray","Point","toJSON","plus","minus","times","divide","relative","_stroke","_event","center","writeDataToDom","after","removeElement","addTo","put","putIn","visible","hasClass","addClass","removeClass","toggleClass","get","matches","doc","parents","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","Parent","each","removeAttribute","MorphObj","Situation","reversing","duration","finish","ease","loop","loops","styles","once","FX","_target","situations","situation","paused","lastPos","absPos","_speed","queue","timeToAbsPos","absPosToTime","startAnimFrame","stopAnimFrame","animationFrame","requestAnimationFrame","step","cancelAnimationFrame","startCurrent","initAnimations","dequeue","initialTransformation","matrixify","clearQueue","clearCurrent","atEnd","last","detail","_callStart","eased","eachAt","Matrix","multiply","undo","extract","matrix","Box","BBox","Shape","clientLeft","clientTop","atan2","transformedX","transformedY","rotation","translate","createSVGMatrix","ctm","getCTM","screenCTM","getScreenCTM","point","attributes","nodeValue","leading","rebuild","untransform","toParent","toDoc","Transformation","inversed","Translate","cssText","has","first","clear","hasChildNodes","_defs","ungroup","Defs","flatten","ViewBox","listeners","handlerMap","listenerId","_svgjsListenerId","removeEventListener","Event","dispatchEvent","CustomEvent","cancelable","event","getElementById","version","Stop","Pattern","symbol","Use","element","use","Rect","Circle","Ellipse","ellipse","Line","array","toLine","Polyline","Polygon","_array","morphArray","Path","load","_loaded","ratio","url","_error","Text","_rebuild","_build","nodeType","newLined","build","textPath","Tspan","dx","dy","TextPath","prefix","getTotalLength","pointAt","getPointAtLength","set","remember","forget","_memory","bubbles","createEvent","initCustomEvent","define","backgroundAlpha","autoSetIn","BlendEffect","colorMatrix","ColorMatrixEffect","convolveMatrix","ConvolveMatrixEffect","ComponentTransferEffect","CompositeEffect","FloodEffect","OffsetEffect","ImageEffect","MergeEffect","GaussianBlurEffect","morphology","MorphologyEffect","diffuseLighting","DiffuseLightingEffect","displacementMap","DisplacementMapEffect","specularLighting","SpecularLightingEffect","tile","TileEffect","turbulence","TurbulenceEffect","Effect","in","ParentEffect","ChildEffect","in2","kernelMatrix","operator","xChannelSelector","yChannelSelector","numOctaves","seed","stitchTiles","baseFrequency","MergeNode","surfaceScale","diffuseConstant","kernelUnitLength","specularExponent","distantLight","azimuth","elevation","pointLight","spotLight","pointsAtX","pointsAtY","pointsAtZ","mergeNode","sepiatone","dest","reflection","acos","tan","transformPoint","matrixTransform","rbox","buttons","handler","defaultPrevented","preventDefault","stopPropagation","createSVGPoint","startPoints","box","drag","snapToGrid","pointSelection","isSelected","rectSelection","pointsList","rb","lb","pointCoord","pointCoords","pointsExclude","deepSelect","selectPoints","selectRect","observe","drawPoints","getPointArray","returnValue","pageX","pageY","classPoints","updatePointSelection","updateRectSelection","rotationPoint","classRect","MutationObserver","observerInst","disconnect","parameters","lastUpdateCall","pageXOffset","pageYOffset","_extractPosition","calc","checkAspectRatio","snapToAngle","constraintToBox","saveAspectRatio","Gt","publicMethods","axes","exports","localization","formatters","titleSubtitle","dimensions","zoomPanSelection","Vt","isUpdating","destroy","clearDomElements","killSVG","jt","WeakMap","_t","initModules","windowResizeHandler","_windowResizeHandler","parentResizeHandler","_parentResizeCallback","_chartInstances","setLocale","Node","DOCUMENT_FRAGMENT_NODE","ResizeObserver","getRootNode","ownerDocument","prepend","head","mount","catch","checkResponsiveConfig","setupElements","checkComboSeries","handleNoData","setupEventHandlers","parseData","setGlobalMarkerSize","setLabelFormatters","hasAllSeriesEqualX","coreCalculations","heatmapLabelFormatters","getLargestMarkerSize","xySettings","createGridMask","plotChartType","bringForward","dataLabelsBackground","shiftGraphPosition","elGraph","drawGrid","drawImageAnnos","drawTextAnnos","drawAxis","xAxisLabelCorrections","setYAxisTextAlignments","yAxisTitleRotate","drawAxesAnnotations","drawTooltip","createToolbar","resizeNonAxisCharts","delete","resetSeries","forceXAxisUpdate","forceYAxisUpdate","clearPreviousPaths","updateThemeOptions","toggleSeries","showSeries","addXaxisAnnotationExternal","addYaxisAnnotationExternal","addPointAnnotationExternal","clearAnnotations","removeAnnotation","getSeriesTotalsXRange","toggleDataPointSelection","setCurrentLocaleValues","_windowResize","render","module","file","acceptedFiles","acceptedFilesArray","mimeType","baseMimeType","validType","endsWith","moment","createCommonjsModule","getCjsExportFromNamespace","colorName","conversions","reverseKeywords","convert","channels","hsl","hsv","hwb","cmyk","xyz","lab","lch","keyword","ansi16","ansi256","hcg","apple","gray","model","comparativeDistance","delta","rdif","gdif","bdif","diff","diffc","currentClosestKeyword","currentClosestDistance","Infinity","distance","t1","t2","t3","smin","lmin","hi","sl","vmin","wh","bl","z2","hr","args","ansi","mult","rem","string","colorString","char","integer","hue","chroma","pure","mg","buildGraph","graph","models","len","deriveBFS","fromModel","current","adjacents","adjacent","link","wrapConversion","toModel","cur","conversion","route","wrapRaw","wrappedFn","undefined","wrapRounded","routes","raw","colorConvert","colorName$1","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","abbr","rgba","per","hexAlpha","alpha","hsla","vals","hexDouble","reverseNames","num","str","obj","valid","setValues","red","lightness","whiteness","cyan","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","degrees","mix","mixinColor","weight","color1","w1","w2","prop","spaces","maxes","getValues","space","capped","chans","sname","svalues","chartjsColor","isValidKey","noop","uid","isNullOrUndef","_isFinite","_x","valueOrDefault","defaultValue","valueAtIndexOrDefault","callback","thisArg","loopable","arrayEquals","a0","a1","ilen","v0","v1","klen","_merger","tval","sval","_mergerIf","mergeIf","sources","merger","dst","inherits","extensions","ChartElement","Surrogate","__super__","_deprecated","scope","previous","helpers_core","callCallback","item","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","clearRect","roundedRect","moveTo","arc","closePath","xOffset","yOffset","cornerRadius","rad","save","restore","beginPath","lineTo","SQRT1_2","_isPointInArea","epsilon","clipArea","clip","unclipArea","flip","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","_set","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","toFontString","font","family","helpers_options","toLineHeight","toPadding","_parseFont","globalDefaults","global","lineHeight","fontStyle","resolve","inputs","info","cacheable","exports$2","_factorize","exponent","LOG10E","powerOf10","helpers_math","getRtlAdapter","rectX","setWidth","textAlign","xPlus","leftForLtr","itemWidth","getLtrAdapter","_itemWidth","helpers$1","canvas","math","rtl","overrideTextDirection","direction","original","getPropertyValue","getPropertyPriority","prevTextDirection","restoreTextDirection","interpolate","view","actual","origin","c0","c1","configuration","initialize","_type","hidden","pivot","_view","_model","_start","transition","hasValue","core_element","exports$3","currentStep","numSteps","onAnimationProgress","onAnimationComplete","core_animation","animation","onProgress","onComplete","core_animations","request","addAnimation","lazy","startTime","animating","cancelAnimation","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","listenArrayEvents","listener","_chartjs","base","res","object","unlistenArrayEvents","stub","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","meta","dataset","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","_update","_data","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","updateElement","buildOrUpdateElements","isExtensible","resyncElements","_configure","_config","_cachedDataOpts","easingValue","elements","getStyle","_resolveDatasetElementOptions","_resolveDataElementOptions","readKey","datasetOpts","elementOptions","cached","dataIndex","freeze","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","prev","numMeta","numData","insertElements","onDataPush","onDataPop","onDataShift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","pixelMargin","angleMargin","outerRadius","innerRadius","drawFullCircleBorders","vm","inner","fullCircles","drawBorder","borderAlign","lineWidth","lineJoin","element_arc","inLabelRange","mouseX","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","circumference","strokeStyle","valueOrDefault$1","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","_children","globalOptionLineElements","lastDrawnIndex","_loop","previousItem","skip","setLineDash","lineDashOffset","valueOrDefault$2","defaultColor$1","hitRadius","mouseY","pointStyle","element_point","inXRange","inYRange","chartArea","defaultColor$2","isVertical","getBarBounds","half","swap","orig","v2","parseBorderSkipped","edge","borderSkipped","parseBorderWidth","maxW","maxH","boundingRects","bounds","border","outer","skipX","skipY","rectangle","element_rectangle","rects","Arc","Rectangle","deprecated","valueOrDefault$3","computeMinSampleSize","pixels","curr","_length","getTicks","getPixelForTick","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","categoryPercentage","barPercentage","chunk","computeFlexCategoryTraits","gridLines","offsetGridLines","controller_bar","scaleOpts","stack","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","vscale","getBasePixel","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","_getStacks","metasets","_getMatchingVisibleMetas","stacks","getStackCount","getStackIndex","getPixelForValue","_startPixel","_endPixel","imeta","ivalue","stackLength","_parseValue","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","tooltips","callbacks","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","NaN","_options","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","listItem","list","outerHTML","generateLabels","controller","legendItem","cutoutPercentage","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","isDatasetVisible","ratioX","ratioY","arcs","cutout","chartWeight","_getRingWeight","contains0","contains90","contains270","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animationOpts","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","ticks","defaultClip","toClip","controller_line","showLine","_showLine","lineTension","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","ds","dsMeta","stackedRightValue","rightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","minSize","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","controllers","getRelativePosition","parseVisibleItems","metadata","jlen","getIntersectItems","getNearestItems","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","core_interaction","modes","single","nearest","intersectsItem","filterByPosition","where","sortByWeight","wrapBoxes","boxes","layoutBoxes","setLayoutDims","layouts","layout","fullWidth","availableWidth","vBoxMaxWidth","hBoxMaxHeight","buildLayoutBoxes","leftAndTop","rightAndBottom","getCombinedMax","maxPadding","updateDims","newWidth","newHeight","getPadding","boxPadding","outerWidth","outerHeight","sizes","handleMaxPadding","updatePos","change","getMargins","marginForPositions","positions","fitBoxes","refit","changed","refitBoxes","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutItem","configure","props","layoutOptions","availableHeight","verticalBoxes","horizontalBoxes","platform_basic","acquireContext","platform_dom","stylesheet","EXPANDO_KEY","CSS_PREFIX","CSS_SIZE_MONITOR","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","property","initCanvas","renderHeight","renderWidth","initial","displayWidth","aspectRatio","displayHeight","eventListenerOptions","supports","addListener","removeListener","nativeEvent","fromNativeEvent","throttled","ticking","createDiv","cls","createResizer","maxSize","resizer","expand","shrink","_reset","scrollLeft","scrollTop","onScroll","watchForRender","expando","proxy","renderProxy","animationName","reflow","offsetParent","unwatchForRender","addResizeListener","container","maintainAspectRatio","removeResizeListener","injectCSS","rootNode","css","containsStyles","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","root","host","releaseContext","proxies","addEvent","removeEvent","implementation","platform","plugins","core_plugins","_plugins","_cacheId","register","plugin","unregister","idx","getAll","notify","hook","descriptor","descriptors","cache","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","indexScale","valueScale","getLabelForIndex","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getTooltipSize","combinedBodyLength","bodyItem","before","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","determineAlignment","lf","rf","olf","orf","yf","midX","midY","getBackgroundPoint","alignment","paddingAndSize","radiusAndPadding","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getTitle","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","existingModel","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","rtlHelper","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","handleEvent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","mergeConfig","initConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","hasId","positionIsHorizontal","compare2Level","l1","l2","onHover","animationDuration","responsiveAnimationDuration","Chart","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","initToolTip","silent","getMaximumWidth","getMaximumHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","layers","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","core_controller","Controller","types","configMerge","scaleMerge","core_helpers","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","constrainedContainer","hasCNode","hasCContainer","infinity","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","almostWhole","rounded","NEGATIVE_INFINITY","sign","toRadians","toDegrees","radians","_decimalPlaces","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","niceNum","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","evt","originalEvent","srcElement","boundingRect","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","ch","currentStyle","forceRatio","pixelRatio","pixelSize","longestText","arrayOfThings","gc","garbageCollect","thing","nestedThing","longest","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","abstract","DateAdapter","formats","startOf","endOf","_create","override","core_adapters","_date","core_ticks","tickValue","logDelta","tickString","logTick","numExponential","toExponential","numDecimal","remain","valueOrDefault$a","sample","arr","numItems","increment","getPixelForGridLine","validIndex","lineValue","caches","computeLabelSizes","tickFonts","tickFont","nestedLabel","widest","highest","widths","heights","offsets","widestLabelSize","highestLabelSize","major","minor","valueAt","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","fontColor","parseTickFontOptions","nonSkipped","ticksToFilter","getEvenSpacing","calculateSpacing","majorIndices","axisLength","ticksLimit","factors","factor","evenMajorSpacing","spacing","getMajorIndices","skipMajors","tick","majorStart","majorEnd","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","Scale","zeroLineIndex","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","margins","samplingEnabled","sampleSize","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","tickWidth","maxLabelDiagonal","numTicks","labelRotation","_isVisible","_getLabelSizes","scaleLabelOpts","gridLineOpts","isBottom","firstLabelSize","lastLabelSize","lineSpace","tickPadding","isRotated","angleRadians","cosRotation","sinRotation","labelHeight","offsetLeft","offsetRight","labelWidth","handleMargins","isFullWidth","rawValue","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","avgMajorSpacing","maxTicksLimit","_tickSize","numMajorIndices","optionTicks","rot","_computeGridLineItems","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","ticksLength","tl","axisWidth","axisHalfWidth","alignPixel","alignBorderValue","_computeLabelItems","lineCount","textOffset","isMirrored","fonts","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","isLeft","tz","gz","_draw","core_scale","isNullOrUndef$1","defaultConfig","scale_category","ticksOpts","minIndex","maxIndex","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","generateTicks","generationOptions","dataRange","numSpaces","MIN_SPACING","maxNumSpaces","maxTicks","precision","rmin","rmax","scale_linearbase","handleTickRangeOptions","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","fixedStepSize","ticksAsNumbers","_endValue","defaultConfig$1","DEFAULT_MIN","DEFAULT_MAX","getOrCreateStack","neg","stackData","relativePoints","updateMinMax","scale_linear","hasStacks","stackValues","_defaults$1","valueOrDefault$b","generateTicks$1","exp","significand","tickVal","endExp","endSignificand","minNotZero","lastTick","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","valuesPerStack","valuesForType","minVal","maxVal","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","textSize","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","drawingArea","getIndexAngle","hLimits","vLimits","setReductions","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","pointLabelOpts","tickBackdropHeight","outerDistance","extra","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","param","scale_radialLinear","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","week","quarter","UNITS","sorter","arrayUnique","hash","out","getMin","time","getMax","buildLookupTable","timestamps","distribution","table","lookup","mid","i0","i1","lo","interpolate$1","skey","tkey","span","toTimestamp","input","adapter","_adapter","determineUnitForAutoTicks","minUnit","capacity","interval","determineUnitForFormatting","determineMajorUnit","timeOpts","unitStepSize","weekday","isoWeekday","computeOffsets","setMajorTicks","majorUnit","ticksFromTimestamps","defaultConfig$4","adapters","displayFormat","displayFormats","scale_time","timestamp","labelsAdded","_table","_timestamps","getLabelCapacity","_unit","_majorUnit","_offsets","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","category","radialLinear","FORMATS","_id","amount","filler","propagate","mappers","boundary","decodeFill","computeLinearBoundary","scaleBottom","scaleTop","scaleZero","computeCircularBoundary","computeBoundary","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","p1","d0","d1","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","onLeave","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","legendHeight","legendWidth","cursor","drawLegendBox","SQRT2","halfFontSize","xLeft","yMiddle","alignmentOffset","dimension","blockSize","itemHeight","realX","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","_element","beforeInit","afterEvent","noop$2","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","_adapters","Animation","animationService","Interaction","scaleService","Ticks","Tooltip","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","factory","require","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getKeys","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","mergeObject","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","all","deepmerge_1","code","fs","exists","true","false","workbook","worksheet","_regeneratorRuntime","mark","wrap","sent","createReadStream","read","close","abrupt","addWorksheet","sheetName","dateFormats","parserOptions","addRow","emit","pipe","getWorksheet","sheetId","formatterOptions","dateFormat","dateUTC","hyperlink","formula","includeEmptyRows","eachRow","write","encoding","createWriteStream","dayjs","decodeAddress","nativeCol","col","nativeColOff","nativeRow","nativeRowOff","colWidth","rowHeight","getColumn","isCustomWidth","getRow","slideFormula","_row","_column","validateAddress","_address","_value","Types","Null","_mergeStyle","_mergeCount","numFmt","protection","toCsvString","release","Merge","isMergedTo","Hyperlink","definedNames","addEx","fullAddress","removeEx","removeAllNames","number","letter","effectiveType","master","getType","_comment","note","escapeHtml","formulaType","address","names","getNamesEx","dataValidations","_dataValidations","find","comment","ValueType","richText","RichText","_master","addMergeRef","releaseMergeRef","cell","Formula","shareType","ref","sharedFormula","_translatedFormula","findCell","_copyModel","cells","_getTranslatedFormula","FormulaType","Master","Shared","None","SharedString","sharedString","_worksheet","_number","defn","equivalentTo","outlineLevel","collapsed","headers","isEqual","getCell","eachCell","n2l","header","_header","_hidden","_key","getColumnKey","deleteColumnKey","setColumnKey","_outlineLevel","properties","outlineLevelCol","_applyStyle","matrixMap","decodeEx","getMatrix","addCellEx","removeCellEx","findCellEx","findCellAt","_explore","$shortRange","forEachInSheet","spliceRows","normaliseMatrix","spliceColumns","getRanges","addCell","RelationshipType","OfficeDocument","Worksheet","CalcChain","SharedStrings","Styles","Theme","DocumentType","Xlsx","ReadingOrder","LeftToRight","RightToLeft","ErrorValue","NotApplicable","Ref","Name","DivZero","Value","Num","imageId","hyperlinks","br","ext","editAs","decode","deepMerge","DEFAULT_CONFIGS","insetmode","inset","locked","lockText","setTLBR","containsEx","encodeAddress","_serialisedSheetName","$t$l","$b$r","$range","_cells","_commitRow","l2n","getCellEx","includeEmpty","man","rowBreaks","eachColumnKey","outlineLevelRow","$col$row","cacheState","filterButton","totalsRowLabel","totalsRowFunction","totalsRowResult","totalsRowFormula","validate","store","columns","rows","filterHeight","tableHeight","autoFilterRef","encode","tableRef","getFormula","headerRow","totalsRow","_cache","_assign","displyName","displayName","showFirstColumn","showLastColumn","showRowStripes","showColumnStripes","company","created","description","keywords","manager","modified","calcProperties","_worksheets","subject","views","media","_definedNames","nextId","trace","tabColor","argb","indexed","orderNo","worksheets","_themes","_xlsx","_csv","creator","lastModifiedBy","lastPrinted","sheets","language","revision","contentStatus","themes","state","_rows","_columns","_keys","_merges","_workbook","defaultRowHeight","dyDescent","pageSetup","horizontalDpi","verticalDpi","fitToPage","fitToWidth","fitToHeight","pageOrder","blackAndWhite","draft","cellComments","errors","paperSize","showRowColHeaders","showGridLines","firstPageNumber","horizontalCentered","verticalCentered","colBreaks","headerFooter","differentFirst","differentOddEven","oddHeader","oddFooter","evenHeader","evenFooter","firstHeader","firstFooter","autoFilter","_media","sheetProtection","tables","conditionalFormattings","removeWorksheetEx","_nextRow","_setStyleOption","findRow","_copyStyle","getRows","hasValues","getAddress","_mergeCellsInternal","intersects","unmerge","_unMergeMaster","sheet","spinCount","algorithmName","saltValue","randomBytes","hashValue","convertPasswordToHash","Function","mergeCells","mergeCellsWithoutStyle","_headerRowCount","columnCount","cellCount","_lastRowNumber","merges","_parseRows","_parseMergeCells","Workbook","TextDecoder","bufferToString","TextEncoder","Buffer","stringToBuffer","buffer","template","getCellAt","findSheet","findSheetRow","findRowCell","_dictionary","_l2nFill","_l2n","_n2l","_level","_fill","_hash","charCodeAt","startsWith","createHash","digest","getHashes","alloc","writeUInt32LE","crypto","wrapped","reject","arg","_invoke","asyncIterator","throw","SaxesParser","PassThrough","eventType","t0","saxes","_encoding","toBuffer","copy","_buffer","_buf","iRead","iWrite","bufSize","buffers","batch","corked","inPos","outPos","pipes","Duplex","_getWritableBuffer","full","_pipe","_writeToBuffers","nop","ArrayBuffer","nextTick","cork","_flush","uncork","eod","setEncoding","pause","resume","isPaused","unpipe","_process","_inPos","_grow","keyBy","strcmp","isUndefined","promiseImmediate","setImmediate","super_","dateToExcel","excelToDate","parsePath","lastIndexOf","getRelsPath","xmlEncode","xmlDecode","validInt","isDateFmt","access","constants","F_OK","toIsoDateString","toIsoString","subsstr","self","timers","_xml","_stack","_rollbacks","tos","open","leaf","openNode","writeText","closeNode","xml","closeAll","StdDocAttributes","standalone","compression","zip","stream","base64","browser","generateAsync","EventEmitter","ZipWriter","jszip","CoreProperties","ExtenderProperties","Comments","VmlDrawing","Table","xform","parseOpen","parseText","parseClose","toXml","toAttribute","localSheetId","_parsedName","_parsedLocalSheetId","_parsedText","leafNode","rId","calcId","fullCalcOnLoad","date1904","defaultThemeVersion","filterPrivacy","xWindow","yWindow","windowWidth","windowHeight","firstSheet","activeTab","visibility","fileVersion","STATIC_XFORMS","workbookPr","bookViews","tag","childXform","calcPr","printArea","printTitlesRow","printTitlesColumn","openXml","WORKBOOK_ATTRIBUTES","workbookRels","Id","worksheetHash","Target","appName","lastEdited","lowestEdited","rupBuild","richTextXform","_richTextXform","authorId","COMMENTS_ATTRIBUTES","comments","anchor","getAnchorRect","getDefaultRect","refAddress","ObjectType","normalizeModel","DRAWING_ATTRIBUTES","coordsize","joinstyle","gradientshapeok","anchors","reconcile","V_SHAPE_ATTRIBUTES","obscured","fillcolor","strokecolor","conversionUnit","reverseConversionUnit","createNewModel","onParserClose","baseType","Company","Manager","HeadingPairs","TitleOfParts","PROPERTY_ATTRIBUTES","DateFormat","DateAttrs","extension","Extension","ContentType","PartName","sharedStrings","drawings","commentRefs","commentName","CORE_PROPERTY_ATTRIBUTES","identifier","contentType","Relationship","_values","RELATIONSHIPS_ATTRIBUTES","rels","mediaIndex","cstate","noChangeAspect","zero","anchorType","uri","addAttribute","picture","medium","reconcilePicture","mergeModel","prst","always","empty","$count","richTextXForm","addStyleModel","styleId","ssId","si","siFormulae","formulae","expandToAddress","renderFormula","currentNode","getStyleModel","getString","hyperlinkMap","commentsMap","iconSet","iconId","toIntValue","v4","databarXform","iconSetXform","isExt","x14Id","renderDataBar","renderIconSet","priority","uuid","fExtXform","sqRef","cfRule","rules","cfXform","hasExtContent","hasContent","cfvoXform","borderColorXform","negativeBorderColorXform","negativeFillColorXform","axisColorXform","minLength","toIntAttribute","maxLength","toBoolAttribute","negativeBarColorSameAsPositive","negativeBarBorderColorSameAsPositive","axisPosition","cfvo","negativeBorderColor","negativeFillColor","axisColor","toBoolValue","toStringValue","cfIconXform","toStringAttribute","showValue","icons","dataBar","extLst","extLstRefXform","formulaXform","colorScaleXform","renderExpression","renderCellIs","renderTop10","renderAboveAverage","renderColorScale","renderText","renderTimePeriod","dxfId","rank","aboveAverage","isPrimitive","timePeriod","toFloatValue","colorXform","sqref","addDxfStyle","getDxfStyle","idXform","bestFit","dataValidation","marked","allowBlank","showInputMessage","promptTitle","prompt","showErrorMessage","errorStyle","errorTitle","_dataValidation","_formula","forEachAddress","addRollback","commit","rollback","summaryBelow","summaryRight","useFirstPageNumber","usePrinterDefaults","copies","headings","numRowsSeen","spans","defaultColWidth","customHeight","pageSetUpPr","outlinePr","outlineProperties","selectLockedCells","selectUnlockedCells","formatCells","formatColumns","formatRows","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","pivotTables","objects","scenarios","frozen","frozenSplit","workbookViewId","rightToLeft","tabSelected","showRuler","zoomScale","zoomScaleNormal","xSplit","ySplit","topLeftCell","activePane","pane","activeCell","sheetView","selections","topLeft","maxRows","maxCols","sheetPr","sheetViews","sheetFormatPr","sheetData","pageMargins","printOptions","drawing","tableParts","conditionalFormatting","Type","TargetMode","vmlDrawing","drawingsCount","preImageId","WORKSHEET_ATTRIBUTES","relationships","vmlDrawings","_format","_parse","addAttributes","writeXml","sb","eb","fontXform","textXform","_textXform","_fontXform","FONT_OPTIONS","tagName","fontNameTag","rPh","rich","addRichText","sharedStringXform","uniqueCount","_sharedStringXform","_text","fromCharCode","horizontalValues","verticalValues","wrapText","shrinkToFit","textRotation","indent","readingOrder","validStyleValues","diagonal","up","down","diagonalUp","diagonalDown","tint","fgColor","bgColor","patternType","degree","gradientFill","validPatternValues","StopXform","PatternFillXform","GradientFillXform","OPTIONS","charset","condense","outline","vertAlign","scheme","shadow","strike","sz","formatCode","numFmtId","getDefaultFmtId","getDefaultFmtCode","xfId","fontId","fillId","borderId","numFmts","fills","borders","cellStyleXfs","cellXfs","dxfs","cellStyles","tableStyles","numFmtNextId","initIndex","_addBorder","_addStyle","_addFill","weakMap","STYLESHEET_ATTRIBUTES","_addFont","_addNumFmtStr","builtinId","defaultTableStyle","defaultPivotStyle","defaultSlicerStyle","defaultTimelineStyle","autodrain","dateStyleId","_dateStyleId","Mock","Attributes","double","singleAccounting","doubleAccounting","filterColumn","colId","hiddenButton","tableColumns","tableStyleInfo","TABLE_ATTRIBUTES","totalsRowCount","totalsRowShown","headerRowCount","readFile","parseStream","drawingRels","worksheetRels","sheetNo","globalRels","sheetDefs","loadAsync","files","dir","async","writableObjectMode","readableObjectMode","t4","parseRels","parseWorkbook","_processWorksheetEntry","_processWorksheetRelsEntry","_processThemeEntry","_processMediaEntry","_processDrawingEntry","_processCommentEntry","_processTableEntry","_processDrawingRelsEntry","_processVmlDrawingEntry","append","theme1","RelType","finalize","useSharedStrings","useStyles","prepareModel","addContentTypes","addOfficeRels","addWorkbookRels","addWorksheets","addSharedStrings","addDrawings","addTables","addThemes","addStyles","addMedia","addApp","addCore","addWorkbook","_finalize","CsvFormatterStream","objectMode","hasWrittenBOM","rowFormatter","RowFormatter","writeBOM","rowTransform","BOM","Transform","FormatterOptions","rowDelimiter","quote","escape","quoteColumns","quoteHeaders","includeEndRowDelimiter","alwaysWriteHeaders","shouldWriteHeaders","writeHeaders","escapedQuote","__esModule","default","FieldFormatter","_headers","REPLACE_REGEXP","ESCAPE_REGEXP","quoteField","search","shouldQuote","rowCount","fieldFormatter","hasWrittenHeaders","isHashArray","isSyncTransform","callTransformer","checkHeaders","shouldFormatColumns","gatherColumns","gatherHeaders","_rowTransform","createTransform","writeToPath","writeToString","writeToBuffer","writeToStream","promisify","Writable","util","CsvParserStream","parsedRowCount","parsedLineCount","endEmitted","headersEmitted","Parser","headerTransformer","HeaderTransformer","decoder","StringDecoder","rowTransformerValidator","RowTransformerValidator","rowValidator","hasHitRowLimit","processRows","checkAndEmitHeaders","shouldSkipLine","transformRow","pushRow","reason","shouldEmitRows","transformAndValidate","skipRow","limitRows","skipRows","skipLines","string_decoder","ParserOptions","ignoreEmpty","escapeChar","supportsComments","ltrim","rtrim","renameHeaders","strictColumnHandling","discardUnmappedColumns","carriageReturn","escapedDelimiter","NEXT_TOKEN_REGEXP","parseString","parseFile","Readable","rowParser","RowParser","Scanner","removeBOM","hasMoreData","parseWithComments","parseWithoutComments","parseRow","nextCharacterToken","Token","isTokenComment","advancePastLine","lineFromCursor","hasMoreCharacters","truncateToCursor","nextNonSpaceToken","isTokenRowDelimiter","isTokenCarriageReturn","isTokenDelimiter","columnParser","ColumnParser","getStartToken","advancePastToken","shouldSkipColumnParse","lineLength","startCursor","endCursor","token","ColumnFormatter","trimLeft","trimRight","quotedColumnParser","QuotedColumnParser","nonQuotedColumnParser","NonQuotedColumnParser","isTokenQuote","advanceToToken","columnFormatter","isTokenEscapeCharacter","gatherDataBetweenQuotes","foundClosingQuote","advanceTo","checkForMalformedColumn","receivedHeaders","shouldUseFirstRow","processedFirstRow","headersLength","setHeaders","headersTransform","shouldMapRow","processRow","mapHeaders","_rowValidator","isSyncValidate","callValidator","createValidator","bignum","decoders","encoders","_createNamed","_initNamed","_getDecoder","_getEncoder","Reporter","isBuffer","isEncoderBuffer","byteLength","DecoderBuffer","isDecoderBuffer","isEmpty","readUInt8","reporter","_reporterState","EncoderBuffer","_baseState","enc","reverseArgs","choice","optional","any","useDecoder","explicit","implicit","_wrap","_init","equal","_useArgs","def","_decode","wrapResult","enterKey","_peekTag","isError","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","_use","_createEncoderBuffer","_encode","_encodeValue","_skipDefault","_encodeChoice","_encodePrimitive","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","rethrow","pathLen","message","partial","captureStackTrace","tagClass","tagClassByName","tagByName","_reverse","der","entity","tree","primitive","tagStr","_skipUntilEnd","unused","readUInt16BE","UTC","pem","writeUInt16BE","toArray","defaultBuffer","isBN","negative","words","BN","wordSize","cmp","_initNumber","_initArray","_parseHex","_parseBase","strip","imuln","_iaddn","_expand","_normSign","inspect","isZero","modn","idivn","toNumber","toArrayLike","andln","iushrn","clz32","_countBits","_zeroBits","bitLength","zeroBits","toTwos","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","setn","iadd","isub","sub","imul","Ot","mulp","mulTo","makeRBT","revBin","permute","guessLen13b","conjugate","normalize13b","convert13b","mul","mulf","muln","sqr","isqr","iushln","ishln","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","div","divmod","divn","umod","divRound","egcd","isEven","isOdd","gcd","_invmp","cmpn","invm","bincn","ucmp","gtn","gten","gte","ltn","lten","lte","eqn","eq","toRed","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","redInvm","redNeg","redPow","k256","p224","p192","p25519","_tmp","_prime","prime","r2","imod","rinv","minv","ireduce","imulK","_strip","mont","toByteArray","fromByteArray","Uint8Array","_move","modrn","allocUnsafe","_toArrayLikeLE","_toArrayLikeBE","rand","Rand","_rand","getBytes","getByte","getRandomValues","msCrypto","readUInt32BE","SBOX","INV_SBOX","SUB_MIX","INV_SUB_MIX","keySize","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","writeUInt32BE","decryptBlock","scrub","AES","_cipher","_ghash","_finID","writeUIntBE","_prev","_secCache","_decrypt","_alen","_len","_mode","_authTag","_called","encrypt","_final","final","getAuthTag","setAuthTag","setAAD","createCipher","Cipher","createCipheriv","Cipheriv","createDecipher","Decipher","createDecipheriv","Decipheriv","listCiphers","getCiphers","_last","_autopadding","iv","decrypt","flush","setAutoPadding","evp_bytestokey","equals","writeUInt8","ghash","_multiply","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","cipher","aes128","aes192","aes256","instantiate","EDE","DES","_des","des","des3","blinder","modulus","publicExponent","unblinder","prime1","prime2","coefficient","exponent1","exponent2","getr","randombytes","dup","sha224WithRSAEncryption","sha256WithRSAEncryption","sha384WithRSAEncryption","sha512WithRSAEncryption","sha256","sha224","sha384","sha512","DSA","ripemd160WithRSA","md5WithRSAEncryption","_hashType","_tag","_signType","_write","verify","Sign","Verify","createSign","createVerify","ec","keyFromPrivate","privateKey","toDER","priv_key","getKey","makeKey","elliptic","algorithm","subjectPrivateKey","pub_key","signature","allocUnsafeSlow","SlowBuffer","RangeError","isEncoding","isView","toPrimitive","INSPECT_MAX_BYTES","kMaxLength","TYPED_ARRAY_SUPPORT","foo","byteOffset","species","poolSize","_isBuffer","compare","swap16","swap32","swap64","toLocaleString","_arr","subarray","readUIntLE","readUIntBE","readUInt16LE","readUInt32LE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUInt16LE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","copyWithin","ieee754","hashMode","_finalOrDigest","__final","_decoder","_toString","_transform","ACCESSORS","callee","IteratorPrototype","BUGGY_SAFARI_ITERATORS","proto","forced","process","versions","v8","stat","noTargetGet","globalThis","inspectSource","enforce","getterFor","normalize","NATIVE","POLYFILL","stopped","WebKitMutationObserver","domain","exit","enter","characterData","promise","ActiveXObject","parentWindow","contentWindow","getOwnPropertyNames","unsafe","copyright","location","clearImmediate","MessageChannel","Dispatch","postMessage","protocol","port2","port1","onmessage","importScripts","onreadystatechange","withoutSetter","kind","Arguments","PromiseRejectionEvent","finally","notified","reactions","ok","fail","rejection","initEvent","fetch","race","fromCodePoint","QObject","findChild","keyFor","useSetter","useSimple","isBoolean","isNull","isNullOrUndefined","isString","isSymbol","isRegExp","isDate","isFunction","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","generateKeys","genKeyPair","getPublicKey","computeSecret","keyFromPublic","getPublic","getPrivate","getX","getPrivateKey","setPublicKey","_importPublic","setPrivateKey","_importPrivate","ripemd160","_alg","_ipad","_opad","rng","pseudoRandomBytes","prng","Hash","createHmac","Hmac","pbkdf2","pbkdf2Sync","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","randomFill","randomFillSync","createCredentials","DH_CHECK_P_NOT_SAFE_PRIME","DH_CHECK_P_NOT_PRIME","DH_UNABLE_TO_CHECK_GENERATOR","DH_NOT_SUITABLE_GENERATOR","NPN_ENABLED","ALPN_ENABLED","RSA_PKCS1_PADDING","RSA_SSLV23_PADDING","RSA_NO_PADDING","RSA_PKCS1_OAEP_PADDING","RSA_X931_PADDING","RSA_PKCS1_PSS_PADDING","POINT_CONVERSION_COMPRESSED","POINT_CONVERSION_UNCOMPRESSED","POINT_CONVERSION_HYBRID","randomfill","utcOffset","ms","weekdays","$L","$u","$offset","$d","$y","$M","$D","$W","$H","$m","$s","$ms","$utils","isSame","isAfter","isBefore","$g","unix","toDate","$locale","weekStart","$set","daysInMonth","subtract","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","HH","hh","mm","ss","SSS","isDayjs","en","Ls","zone","afternoon","milliseconds","SS","Do","ordinal","ZZ","hours","minutes","seconds","dayjs_plugin_customParseFormat","local","isUTC","dayjs_plugin_utc","_cbcInit","_cbcState","bufferOff","_updateDecrypt","_updateEncrypt","_flushBuffer","_finalEncrypt","_finalDecrypt","_pad","_unpad","_desState","deriveKeys","pc1","r28shl","pc2","ip","_encrypt","substitute","rip","ciphers","_edeState","padSplit","binary","gen","_pub","_priv","setGenerator","__prime","_primeLen","_primeCode","simpleSieve","fermatTest","__gen","_gen","getPrime","getGenerator","modp1","modp2","modp5","modp14","modp15","modp16","modp17","modp18","curves","eddsa","brorand","getNAF","getJSF","assert","one","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","redN","_maxwellTrick","precomputed","_fixedNafMul","_getDoubles","jpoint","mixedAdd","toP","_wnafMul","_getNAFPoints","wnd","dblp","_wnafMulAdd","toJ","BasePoint","decodePoint","pointFromX","encodeCompressed","getY","precompute","doubles","naf","beta","_getBeta","_hasDoubles","dbl","twisted","mOneA","extended","c2","oneC","zOne","_mulA","_mulC","pointFromY","isInfinity","fromJSON","_extDbl","_projDbl","_extAdd","_projAdd","mulAdd","jmulAdd","eqXToP","short","edwards","i4","a24","diffAdd","jumlAdd","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","inf","_getEndoRoots","lambda","basis","_getEndoBasis","_endoSplit","k1","k2","_endoWnafMulAdd","_zeroDbl","_threeDbl","_dbl","trpl","PresetCurve","nh","keyPair","fromPrivate","fromPublic","pers","persEnc","entropy","hmacStrength","entropyEnc","_truncateToN","canonical","recoveryParam","recoverPubKey","getKeyRecoveryParam","priv","pub","privEnc","pubEnc","derive","_importDER","place","LN2","parseBytes","pointClass","encodingLength","keyFromSecret","hashInt","messagePrefix","encodePoint","pubBytes","makeSignature","Rencoded","intFromLE","fromSecret","encodeInt","decodeInt","isPoint","cachedProperty","_secret","secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","zero2","_from","_inBundle","_integrity","_location","_phantomChildren","_requested","registry","escapedName","rawSpec","saveSpec","fetchSpec","_requiredBy","_resolved","_shasum","_spec","_where","author","email","bugs","bundleDependencies","dependencies","devDependencies","brfs","coveralls","grunt","istanbul","jscs","jshint","mocha","homepage","license","main","repository","scripts","lint","_events","_eventsCount","_maxListeners","defaultMaxListeners","newListener","warned","emitter","fired","wrapFn","setMaxListeners","getMaxListeners","prependListener","prependOnceListener","removeAllListeners","rawListeners","listenerCount","eventNames","ownKeys","_block","_blockSize","_blockOffset","_finalized","_digest","sha","ripemd","hmac","sha1","pending","pendingTotal","outSize","padLength","endian","_delta8","_delta32","BlockHash","join32","rotl32","sum32","sum32_3","sum32_4","toHex32","split32","sum32_5","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","_prepareBlock","rotr32","p32","htonl","zero8","predResist","outLen","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","reseed","getTypeOf","uint8array","compressedSize","uncompressedSize","crc32","compressedContent","getContentWorker","uncompressWorker","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","createFolders","compressionOptions","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","processChunk","_createPako","transformTo","cleanUp","onData","pako","utf8encode","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","DATA_DESCRIPTOR","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","openedSource","closedSource","CENTRAL_DIRECTORY_END","prepareNextSource","registerPrevious","generatedError","lock","generateWorker","_compressWorker","support","external","decompressed","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","fileNameStr","fileCommentStr","_upstreamEnded","_bindStream","_stream","_helper","_read","newBufferFrom","allocBuffer","folder","generateInternalStream","checkSupport","generateNodeStream","toNodejsStream","byteAt","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","checkIndex","setIndex","readInt","readString","readDate","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","_tickScheduled","_tickAndRepeat","isFinished","_tick","extraStreamInfo","isLocked","mergeStreamInfo","nodestream","_internalType","_outputType","_mimeType","newBlob","_worker","arraybuffer","nodebuffer","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","FileReader","onerror","readAsArrayBuffer","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_dataBinary","internalStream","_decompressWorker","nodeStream","outcome","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","status","immediate","binding","isTypedArray","IE_PROTO","__data__","Ut","$t","Zt","qt","Kt","Cache","toStringTag","_a","_b","_c","_d","_randbelow","_randrange","getDivisor","chunkSize","windowBits","memLevel","strategy","gzip","err","msg","ended","chunks","strm","avail_out","deflateInit2","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","inflateSetDictionary","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","pending_buf","pending_out","total_out","_tr_flush_block","block_start","strstart","max_chain_length","prev_length","nice_match","w_size","w_mask","good_match","lookahead","match_start","window_size","hash_size","adler","total_in","insert","ins_h","hash_shift","hash_mask","match_length","_tr_tally","max_lazy_match","last_lit","prev_match","match_available","good_length","max_lazy","nice_length","max_chain","func","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","data_type","_tr_init","deflateInit","deflateReset","deflateResetKeep","hcrc","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","havedict","flags","check","wbits","ncode","nlen","ndist","have","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","certificate","seq","int","RSAPrivateKey","RSAPublicKey","bitstr","PublicKey","objid","null_","octstr","PrivateKey","EncryptedPrivateKey","DSAPrivateKey","DSAparam","ECPrivateKey","namedCurve","utcTime","utctime","generalTime","gentime","setof","seqof","rdnSequence","bool","passphrase","tbsCertificate","subjectPublicKeyInfo","subjectPublicKey","kde","kdeparams","salt","iters","algo","subtle","importKey","deriveBits","md5","rmd160","ipad1","ipad2","opad","alg","blocksize","run","fun","env","argv","cwd","chdir","umask","codes","allowHalfOpen","readable","_writableState","highWaterMark","getBuffer","_readableState","destroyed","ReadableState","debuglog","getHighWaterMark","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","pipesCount","flowing","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","consume","finished","_undestroy","undestroy","stdout","stderr","hasUnpiped","needDrain","_fromList","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","_transformState","transforming","writecb","writechunk","afterTransform","needTransform","writeencoding","entry","pendingcb","corkedRequestsFree","WritableState","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","finalCalled","ending","decodeStrings","writing","bufferProcessing","onwrite","writelen","errorEmitted","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","isBuf","allBuffers","hasInstance","setDefaultEncoding","tail","_getString","_getBuffer","customInspect","ERR_STREAM_PREMATURE_CLOSE","req","setHeader","abort","ERR_MISSING_ARGS","ERR_INVALID_OPT_VALUE","Stream","pipeline","delegate","_sent","dispatchException","__await","resultName","nextLoc","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","completion","isGeneratorFunction","awrap","AsyncIterator","rval","complete","delegateYield","regeneratorRuntime","_e","kStringMaxLength","MAX_LENGTH","MAX_STRING_LENGTH","isS","isChar","isNameStartChar","isNameChar","S_LIST","NAME_RE","isNCNameStartChar","isNCNameChar","NC_NAME_RE","amp","quot","apos","EVENTS","xmldecl","processinginstruction","doctype","opentagstart","attribute","opentag","closetag","cdata","ready","fragmentOpt","fragment","xmlnsOpt","trackPosition","nameStartCheck","nameCheck","isName","processAttribs","processAttribsNS","pushAttrib","pushAttribNS","additionalNamespaces","processAttribsPlain","pushAttribPlain","stateTable","sBegin","sBeginWhitespace","sDoctype","sDoctypeQuote","sDTD","sDTDQuoted","sDTDOpenWaka","sDTDOpenWakaBang","sDTDComment","sDTDCommentEnding","sDTDCommentEnded","sDTDPI","sDTDPIEnding","sText","sEntity","sOpenWaka","sOpenWakaBang","sComment","sCommentEnding","sCommentEnded","sCData","sCDataEnding","sCDataEnding2","sPIFirstChar","sPIRest","sPIBody","sPIEnding","sXMLDeclNameStart","sXMLDeclName","sXMLDeclEq","sXMLDeclValueStart","sXMLDeclValue","sXMLDeclSeparator","sXMLDeclEnding","sOpenTag","sOpenTagSlash","sAttrib","sAttribName","sAttribNameSawWhite","sAttribValue","sAttribValueQuoted","sAttribValueClosed","sAttribValueUnquoted","sCloseTag","sCloseTagSawWhite","openWakaBang","piTarget","tags","topNS","chunkPosition","prevI","carriedFromPrevious","forbiddenState","attribList","reportedTextBeforeRoot","reportedTextAfterRoot","closedRoot","sawRoot","xmlDeclPossible","xmlDeclExpects","entityReturnState","defaultXMLVersion","forceXMLVersion","setXMLVersion","positionAtNewLine","_closed","xmlDecl","ENTITIES","readyHandler","makeError","errorHandler","closed","getCode","getCodeNorm","currentXMLVersion","getCode10","getCode11","skipSpaces","unget","captureTo","doctypeHandler","captureToChar","handleTextInRoot","handleTextOutsideRoot","parseEntity","textHandler","commentHandler","cdataHandler","piHandler","xmldeclHandler","captureNameChars","openTagStartHandler","openTag","openSelfClosingTag","closeTag","qname","attributeHandler","endHandler","resolvePrefix","isSelfClosing","openTagHandler","closeTagHandler","_finalSize","_w","_f","_g","_h","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","_isStdio","readableHighWaterMark","isarray","writableHighWaterMark","fillLast","lastNeed","lastTotal","lastChar","_clearFn","setInterval","clearInterval","unref","enroll","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","localStorage","noDeprecation","throwDeprecation","traceDeprecation","seen","stylize","showHidden","_extend","NODE_DEBUG","pid","bold","italic","underline","white","grey","special","boolean","null","regexp","unescape","clockseq","msecs","nsecs","DNS","CHAR","NAME_START_CHAR","NAME_CHAR","CHAR_RE","S_RE","NAME_START_CHAR_RE","NAME_CHAR_RE","NMTOKEN_RE","RESTRICTED_CHAR","RESTRICTED_CHAR_RE","isRestrictedChar","isCharAndNotRestricted","NC_NAME_START_CHAR","NC_NAME_CHAR","NC_NAME_START_CHAR_RE","NC_NAME_CHAR_RE","autoBom","XMLHttpRequest","responseType","response","send","MouseEvent","initMouseEvent","saveAs","HTMLAnchorElement","webkitURL","revokeObjectURL","innerText","HTMLElement","safari","onloadend","readAsDataURL","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","toJalaali","gy","gm","gd","d2j","g2d","toGregorian","isValidJalaaliDate","jy","jm","jd","jalaaliMonthLength","isLeapJalaaliYear","jalCal","j2d","d2g","jalaaliToDateObject","jalaaliWeek","dayOfWeek","startDayDifference","endDayDifference","saturday","friday","breaks","jump","leap","jp","jalCalLeap","withoutLeap","march","leapJ","jdn","gregorianCalenderDate","_inherits","_createSuper","_toConsumableArray","_classCallCheck","_createClass","_this","isObj","List","_elements","_this$_elements","accumulator","initialValue","predicate","Sum","Count","ToArray","Where","iter","_equal","keySelector","GroupBy","Add","ElementAt","Contains","First","action","grouper","Aggregate","ac","key1","key2","Select","SelectMany","Last","typeName","Cast","OrderedList","ComparerHelper","ComparerForKey","OrderBy","OrderByDescending","IndexOf","RemoveAt","selector","_this2","AddRange","Single","_this3","Skip","_this4","Take","_this5","elementSelector","Concat","Distinct","_this6","_keySelector","descending","Compare","sortKeyA","sortKeyB","previousComparer","currentComparer","resultOfPreviousComparer","_List","_super","_comparer","_this7","ComposeComparers","Enumerable","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","setCacheAdd","setCacheHas","SetCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","setter","iteratee","resIndex","baseTimes","isArguments","isIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseEach","baseForOwn","createBaseEach","baseFor","createBaseFor","castPath","toKey","arrayPush","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","other","bitmask","customizer","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","isPrototype","nativeKeys","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","baseGet","arrayMap","symbolProto","symbolToString","baseToString","stringToPath","coreJsData","arrayAggregator","baseAggregator","baseIteratee","initializer","isArrayLike","eachFunc","fromRight","iterable","arraySome","cacheHas","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","mapToArray","setToArray","symbolValueOf","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","freeGlobal","baseGetAllKeys","getSymbols","isKeyable","baseIsNative","getValue","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","Ctor","ctorString","hasFunc","nativeCreate","reIsUint","reIsDeepProp","reIsPlainProp","maskSrcKey","assocIndexOf","getMapData","memoize","overArg","freeExports","freeModule","freeProcess","nodeUtil","freeSelf","pairs","LARGE_ARRAY_SIZE","memoizeCapped","rePropName","reEscapeChar","subString","baseHasIn","hasPath","baseIsArguments","stubFalse","baseIsTypedArray","baseUnary","nodeIsTypedArray","baseAssignValue","createAggregator","arrayLikeKeys","baseKeys","resolver","memoized","baseProperty","basePropertyDeep","cachedGuess","zones","links","countries","guesses","logError","momentVersion","charCodeToInt","charCode","unpackBase60","parts","whole","fractional","multiplier","arrayToInt","mapIndices","indices","unpack","untils","intToUntil","abbrs","population","Zone","packedString","Country","country_name","zone_names","OffsetAt","timeString","toTimeString","ZoneScore","offsetScore","abbrScore","findChange","low","high","sortZoneScores","localeCompare","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","Intl","DateTimeFormat","resolvedOptions","timeZone","normalizeName","zoneScore","startYear","userOffsets","zoneScores","getZone","scoreOffsetAt","addZone","packed","normalized","addLink","aliases","alias","normal0","normal1","needsOffset","isUnixTimestamp","_tzm","isMoment","unpacked","zone_name","country_code","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","mom","offsetAt","dataVersion","_zones","_links","_names","_countries","country_zones","addCountries","zoneExists","didShowError","guess","ignoreCache","zonesForCountry","country","with_offset","old","abbrWrap","_z","resetZoneWrap","defaultZone","updateOffset","keepTime","_isUTC","zoneName","zoneAbbr","setDefault","momentProperties","hookCallback","hooks","setHookCallback","hasOwnProp","isObjectEmpty","arrLen","createUTC","strict","createLocalOrUTC","defaultParsingFlags","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_i","_l","_offset","_locale","Moment","suppressDeprecationWarnings","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ww","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","set$1","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","setFullYear","createUTCDate","setUTCFullYear","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","weeks","isoWeek","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","offsetFromString","chunkOffset","matcher","cloneWithOffset","setTime","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","createAdder","period","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","calendarFormat","localInput","isBetween","inclusivity","localFrom","localTo","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","keepOffset","suffix","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","dates","isDSTShifted","proto$1","get$1","field","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","extendStatics","__extends","__","__assign","__awaiter","_arguments","generator","fulfilled","rejected","__generator","trys","ops","verb","op","__spreadArrays","il","jl","ServerHashParamKeys","CryptoUtils","createNewGuid","cryptoObj","decimalToHex","guidHolder","guidResponse","isGuid","guid","base64Encode","btoa","base64Decode","encodedString","atob","deserialize","query","pl","Constants","_popUpWidth","_popUpHeight","openidScope","profileScope","TemporaryCacheKeys","PersistentCacheKeys","ErrorCacheKeys","ResponseTypes","SSOTypes","WELL_KNOWN_SUFFIX","AuthorityType","DisallowedEQParams","SID","LOGIN_HINT","NetworkRequestType","PromptState","LOGIN","SELECT_ACCOUNT","CONSENT","NONE","FramePrefix","AuthErrorMessage","desc","AuthError","errorCode","errorMessage","createUnexpectedError","errDesc","createNoWindowObjectError","StringUtils","validateAndParseJsonCacheKey","parsedKey","ClientAuthErrorMessage","ClientAuthError","createEndpointResolutionError","errDetail","createPopupWindowError","createTokenRenewalTimeoutError","createInvalidIdTokenError","idToken","createInvalidStateError","invalidState","actualState","createNonceMismatchError","invalidNonce","actualNonce","createLoginInProgressError","createAcquireTokenInProgressError","createUserCancelledError","createErrorInCallbackFunction","errorDesc","createUserLoginRequiredError","createUserDoesNotExistError","createClientInfoDecodingError","caughtError","createClientInfoNotPopulatedError","createIdTokenNullOrEmptyError","invalidRawTokenString","createIdTokenParsingError","caughtParsingError","createTokenEncodingError","incorrectlyEncodedToken","createInvalidInteractionTypeError","createCacheParseError","createBlockTokenRequestsInHiddenIframeError","ClientConfigurationErrorMessage","ClientConfigurationError","createNoSetConfigurationError","createStorageNotSupportedError","givenCacheLocation","createRedirectCallbacksNotSetError","createInvalidCallbackObjectError","callbackObject","createEmptyScopesArrayError","scopesValue","createScopesNonArrayError","createScopesRequiredError","createInvalidPromptError","promptValue","createClaimsRequestParsingError","claimsRequestParseError","createEmptyRequestError","createInvalidCorrelationIdError","createKnownAuthoritiesNotSetError","createInvalidAuthorityTypeError","createUntrustedAuthorityError","createTelemetryConfigError","requiredKeys","applicationName","applicationVersion","telemetryEmitter","createSsoSilentError","createInvalidAuthorityMetadataError","ScopeSet","isIntersectingScopes","cachedScopes","scopes","convertedCachedScopes","trimAndConvertArrayToLowerCase","requestScopes","containsScope","trimAndConvertToLowerCase","trimScopes","scopeVal","parseScope","scopeList","validateInputScope","scopesRequired","getScopeFromState","splitIndex","resourceDelimiter","appendScopes","reqScopes","reqExtraScopesToConsent","convertedExtraScopes","convertedReqScopes","onlyContainsOidcScopes","scopesCount","oidcScopesFound","containsAnyOidcScopes","containsOpenIdScope","containsProfileScope","onlyContainsClientId","clientId","appendDefaultScopes","extendedScopes","removeDefaultScopes","translateClientIdIfSingleScope","oidcScopes","UrlUtils","createNavigateUrl","serverRequestParams","createNavigationUrlString","authEndpoint","authorityInstance","AuthorizationEndpoint","redirectUri","xClientSku","xClientVer","claimsValue","queryParameters","extraQueryParameters","correlationId","getCurrentUrl","removeHashFromUrl","replaceTenantPath","tenantId","lowerCaseUrl","urlObject","GetUrlComponents","pathArray","PathSegments","ORGANIZATIONS","CONSUMERS","constructAuthorityUriFromObject","CanonicalizeUri","Protocol","HostNameAndPort","isCommonAuthority","authority","isOrganizationsAuthority","isConsumersAuthority","regEx","urlComponents","AbsolutePath","pathSegments","Search","urlRemoveQueryStringParameter","getHashFromUrl","urlStringOrFragment","hashIndex1","hashIndex2","urlContainsHash","urlString","deserializeHash","ERROR_DESCRIPTION","ERROR","ACCESS_TOKEN","ID_TOKEN","urlFragment","getHostFromUri","extractedUri","AccessTokenKey","utid","homeAccountIdentifier","AccessTokenValue","accessToken","expiresIn","ServerRequestParameters","libraryVersion","CanonicalAuthority","populateQueryParams","account","adalIdTokenObject","silentCall","claimsRequest","isSSOParam","constructUnifiedCacheQueryParameter","addHintParameters","eQParams","generateQueryParametersString","idTokenObject","ssoType","ssoData","idTokenClaims","login_hint","sid","userName","loginHint","upn","addSSOParameter","qParams","ssoParam","paramsString","domain_hint","determineResponseType","accountsMatch","responseTypeForMatchingAccounts","XhrClient","sendRequestAsync","enableCaching","xhr","jsonResponse","handleError","responseText","statusCode","TrustedAuthority","setTrustedAuthoritiesFromConfig","validateAuthority","knownAuthorities","getTrustedHostList","TrustedHostList","getAliases","authorityToVerify","telemetryManager","client","httpMethod","instanceDiscoveryEndpoint","DEFAULT_AUTHORITY","httpEvent","createAndStartHttpEvent","httpResponseStatus","stopEvent","serverErrorCode","setTrustedAuthoritiesFromNetwork","IsInTrustedHostList","LogLevel","Authority","authorityMetadata","IsValidationEnabled","validateAsUri","tenantDiscoveryResponse","isAdfs","authorityUrl","ADFS","canonicalAuthority","Adfs","Default","CanonicalAuthorityUrlComponents","validateResolved","Tenant","EndSessionEndpoint","Issuer","hasCachedMetadata","canonicalAuthorityUrlComponents","components","DiscoverEndpoints","openIdConfigurationEndpoint","resolveEndpointsAsync","openIdConfigurationEndpointResponse","GetOpenIdConfigurationEndpoint","DefaultOpenIdConfigurationEndpoint","ClientInfo","rawClientInfo","decodedClientInfo","clientInfo","stripPolicyFromUid","_uid","_utid","createClientInfoFromIdToken","uidSegments","urlSegments","policy","encodeClientInfo","TimeUtils","parseExpiresIn","relativeNowMs","performance","TokenUtils","decodeJwt","jwtToken","JWSPayload","JWSSig","validateExpirationIsWithinOffset","expiration","tokenRenewalOffsetSeconds","extractIdToken","encodedIdToken","decodedToken","base64IdToken","base64Decoded","IdToken","rawIdToken","claims","issuer","objectId","preferredName","homeObjectId","cloudInstance","AccessTokenCacheItem","BrowserStorage","cacheLocation","setItem","enableCookieStorage","setItemCookie","getItem","getItemCookie","removeItem","cName","cValue","expires","cookieStr","getCookieExpirationTime","cookie","ca","clearItemCookie","cookieLifeDays","today","RequestUtils","validateRequest","isLoginCall","interactionType","extraScopesToConsent","validatePromptParameter","validateEQParameters","validateClaimsRequest","validateAndGenerateState","validateAndGenerateCorrelationId","userState","generateLibraryState","stateObject","ts","stateString","parseLibraryState","libraryState","interactionTypeRedirect","createRequestSignature","AuthCache","storeAuthStateInCookie","temporaryCache","rollbackEnabled","migrateCacheEntries","idTokenKey","cachePrefix","IDTOKEN","clientInfoKey","CLIENT_INFO","errorKey","errorDescKey","ERROR_DESC","idTokenValue","aud","values_1","cacheKey","duplicateCacheEntry","newKey","generateCacheKey","addInstanceId","adalIdToken","matchKeyForType","tokenType","accountMatches","tokenTypeMatches","setTemporaryItem","getTemporaryItem","resetCacheItems","storage","resetTempCacheItems","stateId","isTokenRenewalInProgress","tokenRenewalInProgress","setInteractionInProgress","REDIRECT_REQUEST","getAllTokensByType","matchedTokenKey","newAccessTokenCacheItem","getAllAccessTokens","getAllIdTokens","getAllTokens","isInteractionInProgress","matchClientId","getInteractionInProgress","INTERACTION_STATUS","newInProgressValue","stateValue","renewStatus","generateTemporaryCacheKey","RENEW_STATUS","inProgress","clearMsalCookie","NONCE_IDTOKEN","STATE_LOGIN","LOGIN_REQUEST","STATE_ACQ_TOKEN","cookieString","cookieName","generateAcquireTokenAccountKey","accountId","ACQUIRE_TOKEN_ACCOUNT","generateAuthorityKey","AUTHORITY","tempCacheKey","Account","accountIdentifier","environment","createAccount","compareAccounts","a2","WindowUtils","isInIframe","isInPopup","opener","generateFrameName","requestSignature","monitorIframeForHash","timeout","urlNavigate","logger","timeoutMark","verbose","intervalId","errorPii","POLLING_INTERVAL_MS","monitorPopupForHash","clearUrlFragment","loadFrame","frameName","timeoutMs","infoPii","frameHandle","loadFrameSync","addHiddenIFrame","iframeId","adalFrame","ifr","removeHiddenIframe","iframe","getIframeWithHash","iframes","getPopups","openedWindows","getPopUpWithHash","popup","trackPopup","closePopups","blockReloadInHiddenIframes","checkIfBackButtonIsPressed","cacheStorage","redirectCache","splitCache","history","replaceState","pathname","ResponseUtils","setResponseIdToken","originalResponse","idTokenObj","expiresOn","uniqueId","buildAuthResponse","authResponse","serverAuthenticationRequest","accountState","idTokenResponse","idTokeTokenResponse","AuthorityFactory","saveMetadataFromNetwork","metadataMap","getMetadata","saveMetadataFromConfig","authorityMetadataJson","parsedMetadata","authorization_endpoint","end_session_endpoint","CreateInstance","Logger","localCallback","Info","piiLoggingEnabled","logMessage","logLevel","containsPii","executeCallback","warning","Warning","warningPii","Verbose","verbosePii","isPiiLoggingEnabled","DEFAULT_AUTH_OPTIONS","postLogoutRedirectUri","navigateToLoginRequestUrl","DEFAULT_CACHE_OPTIONS","DEFAULT_SYSTEM_OPTIONS","loadFrameTimeout","navigateFrameWait","DEFAULT_FRAMEWORK_OPTIONS","isAngular","unprotectedResources","protectedResourceMap","ServerErrorMessage","ServerError","createServerUnavailableError","createUnknownServerError","InteractionRequiredAuthErrorMessage","InteractionRequiredAuthError","isInteractionRequiredError","errorString","interactionRequiredCodes","createLoginRequiredAuthError","createInteractionRequiredAuthError","createConsentRequiredAuthError","buildResponseStateOnly","fromCache","API_CODE","API_EVENT_IDENTIFIER","EVENT_NAME_KEY","ELAPSED_TIME_KEY","TELEMETRY_BLOB_EVENT_NAMES","scrubTenantFromUri","pathParams","tenantPosition","hashPersonalIdentifier","valueToHash","prependEventNamePrefix","supportsBrowserPerformance","measure","TelemetryEvent","eventName","eventLabel","eventId","setElapsedTime","measureName","startMark","endMark","startTimestamp","perfStartMark","perfEndMark","clearMeasures","clearMarks","telemetryCorrelationId","DefaultEvent","eventCount","sdk","sdkVersion","networkInformation","connectionSpeed","getEventCount","EVENT_KEYS","mapEventIdentiferToCode","AcquireTokenSilent","AcquireTokenPopup","AcquireTokenRedirect","LoginPopup","LoginRedirect","Logout","ApiEvent","piiEnabled","apiEventIdentifier","apiCode","wasSuccessful","authorityType","promptType","HttpEvent","scrubbedUri","httpPath","queryParams","apiVersion","requestIdHeader","speInfo","subErrorCode","TelemetryManager","completedEvents","inProgressEvents","eventCountByCorrelationId","onlySendFailureTelemetry","telemetryPlatform","libraryName","connection","getTelemetrymanagerStub","startEvent","incrementEventCount","orphanedEvents","getOrphanedEvents","eventsToFlush","eventCountsToFlush","eventsWithDefaultEvent","createAndStartApiEvent","apiEvent","stopAndFlushApiEvent","apiErrorCode","correlation","memo","eventKey","event_1","AuthCacheUtils","filterTokenCacheItemsByScope","tokenCacheItems","cacheItem","searchScopes","filterTokenCacheItemsByAuthority","filterTokenCacheItemsByDomain","requestDomain","UserAgentApplication","authResponseCallback","tokenReceivedCallback","errorReceivedCallback","auth","system","framework","buildConfiguration","inCookie","getTelemetryManagerFromConfig","telemetry","activeRenewals","renewStates","callbackMappedToRenewStates","promiseMappedToRenewStates","msal","urlHash","getResponseState","handleRedirectAuthenticationResponse","getAuthorityInstance","handleRedirectCallback","authOrTokenCallback","redirectError","authErrorHandler","redirectResponse","authResponseHandler","interactionTypePopup","authErr","loginRedirect","userRequest","acquireTokenInteractive","acquireTokenRedirect","loginPopup","resp","acquireTokenPopup","thrownError","stateOnlyResponse","getAccountState","getAccount","acquireTokenHelper","extractADALIdToken","tokenRequest","buildIDTokenRequest","silentLogin","acquireTokenSilent","acquireTokenAuthority","getTokenType","loginStartPage","redirectStartPage","getRedirectUri","updateCacheEntries","response_mode_fragment","requestType","login","renewToken","registerCallback","popUpWindow","openPopup","popUpWidth","popUpHeight","handleAuthenticationResponse","broadcast","error_1","onRedirectNavigate","navigateWindow","err_1","ssoSilent","interactionTypeSilent","userContainedClaims","forceRefresh","cacheResultResponse","getCachedToken","renewIdToken","err_2","winLeft","screenLeft","screenX","winTop","screenTop","screenY","innerHeight","top_1","popupWindow","focus","loadIframeTimeout","expectedState","error_2","logout","logoutAsync","requestCorrelationId","clearCache","correlationIdParam","postLogoutQueryParam","getPostLogoutRedirectUri","error_3","clearCacheForScope","accessTokenItems","isCallback","processCallBack","respStateInfo","parentCallback","stateInfo","saveTokenFromHash","locationHash","tokenResponseCallback","loginRequestUrl","currentUrl","finalRedirectUrl","loginRequestUrlComponents","stateResponse","STATE","parsedState","unknown","stateMatch","silentAuthenticationState","statesInParentContext","getCachedIdToken","getCachedAccessToken","getTokenCacheItemByAuthority","filteredAuthorityItems","accessTokenCacheItem","idTokenCacheItems","matchAuthority","idTokenCacheItem","evaluateTokenExpiration","scopeFilteredTokenCacheItems","responseAccount","aState","tokenCacheItem","prompt_none","saveToken","accessTokenKey","accessTokenValue","saveIdToken","saveAccessToken","accessTokenResponse","SCOPE","consentedScopes","accessTokenCacheItems","EXPIRES_IN","hashParams","authorityKey","acquireTokenAccountKey","LOGIN_ERROR","no_account","hashErr","hashErrDesc","SESSION_STATE","populateAuthority","accountKey","acquireTokenAccountKey_noaccount","cachedAccount","acquireTokenAccount","cachedNonce","cachedAuthority","getAllAccounts","accounts","getUniqueAccounts","uniqueAccounts","getCachedTokenInternal","accountObject","newAuthority","getScopesForEndpoint","endpoint","getLoginInProgress","setloginInProgress","loginInProgress","getAcquireTokenInProgress","setAcquireTokenInProgress","acquireTokenInProgress","getLogger","setLogger","reqRedirectUri","getCurrentConfiguration","setAccountCache","getAccountId","setAuthorityCache","propIsEnumerable","test1","test2","test3","shouldUseNative","symbols","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","getShim","isRequired","ReactPropTypes","bigint","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","_enums","AccessTokenResponse","_defineProperty","TokenType","AccessToken","AuthenticationActionCreators","AuthenticationActions","Initializing","Initialized","payload","LoginSuccess","LoginFailed","LoginError","ClearError","LogoutSuccess","AcquiredIdTokenSuccess","AcquiredIdTokenError","AcquiredAccessTokenSuccess","AcquiredAccessTokenError","AuthenticatedStateChanged","IdTokenResponse","_console","optionalParams","_console2","_len2","_key2","_console3","_len3","_key3","_console4","_len4","_key4","_msal","_AccessTokenResponse","_AuthenticationActionCreators","_IdTokenResponse","_Logger","MsalAuthProvider","_parameters","loginType","LoginType","Popup","tokenRefreshUri","_possibleConstructorReturn","_getPrototypeOf","_assertThisInitialized","_ref","_asyncToGenerator","_callee","providerOptions","_context","getAuthenticationParameters","getError","setError","getProviderOptions","Redirect","setAuthenticationState","AuthenticationState","InProgress","Unauthenticated","processLogin","_get","dispatchAction","logoutSuccessful","_accountInfo","_objectSpread","_ref2","_callee2","refreshParams","loginParams","_response","_context2","handleAcquireTokenSuccess","Authenticated","acquireAccessTokenError","loginToRefreshToken","_x2","_ref3","_callee3","_response2","_context3","acquireIdTokenError","_x3","authenticationRedirectCallback","_reduxStore","_actionQueue","_onAuthenticationStateHandlers","authenticationState","_onAccountInfoHandlers","_onErrorHandlers","loginError","_ref4","_callee4","_context4","_x4","_x5","_callee5","_context5","initializing","initialized","_callee6","_context6","handleLoginFailed","getIdToken","handleLoginSuccess","authenticatedStateChanged","accountInfo","getAccountInfo","jwtIdToken","jwtAccessToken","dispatch","setAccountInfo","acquireIdTokenSuccess","_token","acquireAccessTokenSuccess","loginFailed","loginSuccessful","setAuthenticationParameters","setProviderOptions","initializeProvider","_react","AzureAD","authenticatedFunction","unauthenticatedFunction","provider","forceLogin","accountInfoCallback","_useState2","_slicedToArray","useState","_setAccountInfo","_useState4","_setAuthenticationState","_useState6","_setError","useEffect","registerAuthenticationStateHandler","registerAcountInfoHandler","onAccountInfoChanged","registerErrorHandler","reduxStore","registerReduxStore","unregisterAuthenticationStateHandler","unregisterAccountInfoHandler","unregisterErrorHandler","useCallback","newState","newError","newAccountInfo","childrenFunctionProps","useMemo","getChildrenOrFunction","childrenProps","isChildrenFunction","authFunctionResult","React","_interopRequireWildcard","_AzureAD","WrappedComponent","withAuthentication","propParams","_AuthenticationActions","_AuthenticationState","_LoginType","_TokenType","_interfaces","_MsalAuthProvider","_exportNames","_withAuthentication","_IAccountInfo","_IAuthProvider","_IMsalAuthProviderConfig","_typeof","_extends","_apexcharts2","_interopRequireDefault","_react2","_propTypes2","Charts","createRef","chartRef","setRef","Component","_objectWithoutProperties","getConfig","updateSeries","updateOptions","_propTypes","_isEqual","_keyBy","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","enumerableOnly","sym","Constructor","_defineProperties","protoProps","staticProps","subClass","superClass","_setPrototypeOf","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","NewTarget","NODE_ENV","ChartComponent","_React$Component","chartInstance","_this$props","onElementsClick","renderChart","redraw","destroyChart","updateChart","nextProps","_this$props2","nextData","transformDataProp","shadowDataProp","saveCurrentDatasets","isDev","usingCustomKeyProvider","datasetKeyProvider","getLabelAsKey","multipleDatasets","shouldWarn","getCurrentDatasets","memoizeDataProps","currentDatasets","nextDatasets","checkDatasets","currentDatasetsIndexed","otherProps","rest","_this$props3","_this$props4","handleOnClick","Doughnut","_React$Component2","_super2","Pie","_React$Component3","_super3","_React$Component4","_super4","Bar","_React$Component5","_super5","HorizontalBar","_React$Component6","_super6","_this8","_ref5","Radar","_React$Component7","_super7","_this9","_ref6","Polar","_React$Component8","_super8","_this10","_ref7","Bubble","_React$Component9","_super9","_this11","_ref8","Scatter","_React$Component10","_super10","_this12","_ref9","_utils","thousandSeparator","thousandSpacing","decimalSeparator","decimalScale","fixedDecimalScale","displayType","removeFormatting","mask","isNumericString","customInput","allowNegative","onValueChange","onKeyDown","onMouseUp","onChange","onFocus","onBlur","isAllowed","returnTrue","CurrencyFormat","validateProps","formattedValue","formatValueProp","numAsString","prevProps","updateValueIfRequired","lastNumStr","formatNumString","setState","getSeparators","numRegex","getNumberRegex","hasNegation","firstDecimalIndex","escapeRegExp","ignoreDecimalSeparator","_props","_props2","_props$mask","_getSeparators3","numStr","hasNagation","addNegation","beforeDecimal","afterDecimal","caretPos","currentValue","setCaretPosition","_props3","charIsNumber","firstHashPosition","lastHashPosition","nextPos","caretLeftBound","caretRightBoud","inputValue","inputNumber","formattedNumber","currentInputChar","currentFormatChar","correctCaretPosition","_props4","isNegative","suffixLastIndex","formatArray","ln","part","_props5","removePatternFormatting","removePrefixAndSuffix","getFloatString","hashCount","formattedNumberAry","getMaskAtIndex","digitalGroup","thousandGroupSpacing","twoScaled","four","_props6","_getSeparators4","hasDecimalSeparator","_splitDecimal","splitDecimal","limitToScale","formatThousand","formatWithPattern","formatAsNumber","_props7","_props8","roundToPrecision","formatInput","negationRegex","doubleNegationRegex","removeNegation","formatNegation","_props9","isCharacterAFormat","lastValue","lastValueParts","splitString","newValueParts","deletedIndex","checkIfFormatGotDeleted","numericString","_splitDecimal2","persist","currentCaretPosition","selectionStart","selectionEnd","correctInputValue","valueObj","floatValue","setPatchedCaretPosition","fixLeadingZero","expectedCaretPosition","_props10","negativeRegex","isPatternFormat","newCaretPosition","leftBound","rightBound","isUnitTestRun","caretPostion","_props11","omit","inputProps","CustomInput","numberParts","roundedDecimalParts","intPart","roundedStr","decimalPart","keyMaps","filteredObj","createTextRange","setSelectionRange","three","aa","ba","da","ea","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Qa","_render","Ra","_payload","Sa","Ta","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","$a","ab","bb","cb","Children","db","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","html","mathml","mb","nb","ob","namespaceURI","MSApp","execUnsafeLocalFunction","pb","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","tb","ub","menuitem","embed","img","keygen","wbr","vb","wb","xb","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","$b","memoizedState","dehydrated","cc","child","sibling","dc","fc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","targetContainers","sc","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","bd","cd","unstable_UserBlockingPriority","ed","fd","hd","uc","kd","ld","md","nd","od","keyCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","isPropagationStopped","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","timeStamp","isTrusted","td","ud","vd","Ad","ctrlKey","altKey","metaKey","getModifierState","zd","button","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","elapsedTime","pseudoElement","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","targetTouches","Xd","Yd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","password","tel","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","Me","compareDocumentPosition","Ne","HTMLIFrameElement","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","cf","df","Nb","ef","ff","gf","hf","je","ke","jf","kf","mf","autoFocus","nf","__html","of","pf","qf","sf","previousSibling","tf","vf","wf","xf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","refs","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","Wg","Xg","Yg","Zg","ah","bh","dh","eh","fh","gh","ih","memoizedProps","revealOrder","jh","kh","mh","oh","pendingProps","ph","qh","rh","sh","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","subscribe","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","di","readContext","useContext","useImperativeHandle","useLayoutEffect","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","ri","pendingContext","Bi","Ci","Di","Ei","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","kk","hk","_calculateChangedBits","unstable_observedBits","unmount","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","modifier","asterisk","escapeGroup","encodeURIComponentPretty","encodeURI","segment","attachKeys","sensitive","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","__self","__source","jsx","jsxs","forceUpdate","_status","_result","IsSomeRendererActing","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","forwardRef","isValidElement","unstable_forceFrameRate","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","arrayLikeToArray","toPropertyKey","isNativeReflectConstruct","possibleConstructorReturn","assertThisInitialized","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","PromiseImpl","invoke","record","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegateResult","maybeInvokeDelegate","methodName","pushTryEntry","locs","resetTryEntry","iteratorMethod","genFun","ctor","skipTempReset","rootRecord","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","hint","prim","minLen","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","leafPrototypes","definition","nmd","_toPropertyKey","_objectSpread2","asyncGeneratorStep","_next","_throw","__rest","__decorate","decorators","decorate","__spreadArray","pack","ar","concatStyleSets","styleSets","subComponentStyles","mergedSet","workingSubcomponentStyles","styleSets_1","currentSet","currentComponentStyles","subCompProp","mergedValue","mergedSubStyles","workingSet_1","styleProps","styleFunctionOrObject","concatStyleSetsWithProps","allStyles","allStyles_1","canUseDOM","_window","getWindow","rootElement","GLOBAL_SETTINGS_PROP_NAME","CALLBACK_STATE_PROP_NAME","_counter","GlobalSettings","globalSettings","_getGlobalSettings","oldValue","changeDescription","addChangeListener","__id__","_getCallbacks","removeChangeListener","globalObj","NO_CUSTOMIZATIONS","settings","scopedSettings","inCustomizerContext","_allSettings","Customizations","applySettings","_raiseChange","applyScopedSettings","scopeName","getSettings","localSettings","localScopedSettings","globalScopedSettings","properties_1","applyBatchedUpdates","suppressUpdate","_suppressUpdates","unobserve","CustomizerContext","customizations","useCustomizationSettings","useForceUpdate","DefaultFields","styled","baseStyles","getProps","customizable","fields","Wrapped","forwardedRef","customizedStyles","additionalProps","__cachedInputs__","propStyles","concatenatedStyles","__noStyleOverride__","pureComponent","_stylesheet","InjectionMode","STYLESHEET_SETTING","REUSE_STYLE_NODE","_global","_rtl","Stylesheet","serializedStylesheet","_rules","_preservedRules","_keyToClassName","_onInsertRuleCallbacks","_onResetCallbacks","_classNameToArgs","injectionMode","defaultPrefix","cspSettings","classNameToArgs","counter","classNameCache","keyToClassName","preservedRules","getInstance","_lastStyleElement","fabricConfig","FabricConfig","mergeStyles","serialize","setConfig","onReset","onInsertRule","getClassName","cacheClassName","classNameFromKey","getClassNameCache","argsFromClassName","insertedRulesFromClassName","insertRule","rule","preserve","_getStyleElement","cssRules","getRules","includePreservedRules","resetKeys","_styleElement","_createStyleElement","styleElement","nodeToInsertBefore","nextElementSibling","placeholderStyleTag","_findPlaceholderStyleTag","extractStyleParts","_processArgs","argsList","argsList_1","translatedArgs","setRTL","isRTL","getRTL","getStyleOptions","_vendorSettings","kebabRules","rulePairs","autoPrefixNames","prefixRules","vendorSettings","nav","isWebkit","isMoz","isOpera","isMs","getVendorSettings","NON_PIXEL_NUMBER_PROPS","provideUnits","isNonPixelProp","isVariableOrPrefixed","LEFT","RIGHT","NO_FLIP","NAME_REPLACEMENTS","VALUE_REPLACEMENTS","rtlifyRules","name_1","flipQuad","partIndex","numberVal","negateNum","DISPLAY_NAME","globalSelectorRegExp","expandSelector","newSelector","currentSelector","extractSelector","__order","extractRules","selectorWithGlobals","replacementInfo","findGlobal","matchIndex","matchEndIndex","replacement","expandCommaSeparatedGlobals","separatedSelector","currentRules","args_1","expandedRules","propValue","selectors","expandQuads","partStart","parens","tokenizeWithParentheses","repeatString","serializeRuleEntries","ruleEntries","allEntries","styleToRegistration","serialized","hasProps","rulesForSelector","getKeyForRules","registration","rootStyle","getDisplayName","rulesToInsert","applyRegistration","specificityMultiplier","processedRule","mergeCss","styleToClassName","keyframes","timeline","rulesArray","EASING_FUNCTION_1","EASING_FUNCTION_2","DURATION_1","DURATION_2","DURATION_3","DURATION_4","FADE_IN","FADE_OUT","SLIDE_RIGHT_IN10","_createSlideInX","SLIDE_RIGHT_IN20","SLIDE_RIGHT_IN40","SLIDE_RIGHT_IN400","SLIDE_LEFT_IN10","SLIDE_LEFT_IN20","SLIDE_LEFT_IN40","SLIDE_LEFT_IN400","SLIDE_UP_IN10","_createSlideInY","SLIDE_UP_IN20","SLIDE_DOWN_IN10","SLIDE_DOWN_IN20","SLIDE_RIGHT_OUT10","_createSlideOutX","SLIDE_RIGHT_OUT20","SLIDE_RIGHT_OUT40","SLIDE_RIGHT_OUT400","SLIDE_LEFT_OUT10","SLIDE_LEFT_OUT20","SLIDE_LEFT_OUT40","SLIDE_LEFT_OUT400","SLIDE_UP_OUT10","_createSlideOutY","SLIDE_UP_OUT20","SLIDE_DOWN_OUT10","SLIDE_DOWN_OUT20","SCALE_UP100","SCALE_DOWN98","SCALE_DOWN100","SCALE_UP103","ROTATE90","ROTATE_N90","AnimationVariables","AnimationStyles","slideRightIn10","_createAnimation","slideRightIn20","slideRightIn40","slideRightIn400","slideLeftIn10","slideLeftIn20","slideLeftIn40","slideLeftIn400","slideUpIn10","slideUpIn20","slideDownIn10","slideDownIn20","slideRightOut10","slideRightOut20","slideRightOut40","slideRightOut400","slideLeftOut10","slideLeftOut20","slideLeftOut40","slideLeftOut400","slideUpOut10","slideUpOut20","slideDownOut10","slideDownOut20","scaleUpIn100","scaleDownIn100","scaleUpOut103","scaleDownOut98","fadeIn100","fadeIn200","fadeIn400","fadeIn500","fadeOut100","fadeOut200","fadeOut400","fadeOut500","rotate90deg","rotateN90deg","animationTimingFunction","animationFillMode","fromX","pointerEvents","fromY","toX","toY","LocalizedFontNames","LocalizedFontFamilies","FontSizes","FontWeights","IconFontSizes","AnimationClassNames","styleName","className_1","buildClassMap","Arabic","Cyrillic","EastEuropean","Greek","Hebrew","Thai","Vietnamese","WestEuropean","Selawik","Armenian","Georgian","ChineseSimplified","ChineseTraditional","Hindi","Japanese","Korean","size10","size12","size14","size16","size18","size20","size24","size28","size32","size42","size68","mini","xSmall","small","smallPlus","mediumPlus","large","xLarge","xLargePlus","xxLarge","xxLargePlus","superLarge","mega","semilight","regular","semibold","HighContrastSelector","ScreenWidthMinMedium","getScreenSelector","minSelector","maxSelector","ZIndexes","IsFocusVisibleClassName","IsFocusHiddenClassName","updateClassList","setFocusVisibility","registeredProviders","getFocusStyle","insetOrOptions","highContrastStyle","outlineColor","isFocusedOnly","_getFocusStyleInternal","neutralSecondary","content","FocusStyle","Nav","ScrollablePane","Coachmark","Layer","KeytipLayer","getInputFocusStyle","borderType","borderPosition","isBorderBottom","hiddenContentStyle","whiteSpace","_initializedStylesheetResets","_resetCounter","_emptyObject","_weakMap","resetMemoizations","memoizeFunction","maxCacheSize","ignoreNullOrUndefinedResult","cacheSize","localResetCounter","_createNode","_normalizeArg","createMemoizer","_getGlobalClassNames","classNames","disableGlobalClassNames","styleSheet","acc","getGlobalClassNames","_root","_styleNonce","CSPSettings","_themeState","__themeState__","lastStyleElement","registeredStyles","runState","perf","flushTimer","registeredThemableStyles","initializeThemeState","_themeTokenRegex","loadStyles","styleParts","splitStyles","styleArrays","mergedStyleArray","applyThemableStyles","stylesArray","styleRecord","resolveThemableArray","styleString","styleArray","themable","newStyle","themableStyle","registerStyles","loadTheme","themableStyles","option","clearStylesInternal","clearStyles","reloadStyles","records","splitStyleArray","themeSlot","themedValue","DEBUG","rawString","tokenMatch","Depths","DefaultPalette","themeDarker","themeDark","themeDarkAlt","themePrimary","themeSecondary","themeTertiary","themeLight","themeLighter","themeLighterAlt","blackTranslucent40","neutralDark","neutralPrimary","neutralPrimaryAlt","neutralSecondaryAlt","neutralTertiary","neutralTertiaryAlt","neutralQuaternary","neutralQuaternaryAlt","neutralLight","neutralLighter","neutralLighterAlt","accent","whiteTranslucent40","yellowDark","yellowLight","orange","orangeLight","orangeLighter","redDark","magentaDark","magentaLight","purpleDark","purple","purpleLight","blueDark","blueMid","blueLight","tealDark","teal","tealLight","greenDark","greenLight","depth0","depth4","depth8","depth16","depth64","DefaultEffects","elevation4","elevation8","elevation16","elevation64","roundedCorner2","roundedCorner4","roundedCorner6","fontFace","_language","FontFamilyFallbacks","LanguageToFontMap","hu","ko","lv","ru","tr","hy","_createFont","MozOsxFontSmoothing","WebkitFontSmoothing","getDocument","win","sessionStorage","STORAGE_KEY","DefaultFontStyles","localeCode","fontFamilyWithFallback","_fontFamilyWithFallbacks","_getLocalizedFontFamily","tiny","createFontStyles","persistenceType","savedLanguage","getLanguage","_registerFontFace","localFontName","fontDisplay","_registerFontFaceSet","baseUrl","cdnFolder","cdnFontName","urlBase","_merge","circularReferences","isCircularReference","makeSemanticColors","isInverted","depComments","dep","listTextColor","listText","menuItemBackgroundChecked","warningHighlight","warningText","messageText","successText","_fixDeprecatedSlots","getSemanticColors","primaryButtonBorder","errorText","messageLink","messageLinkHovered","infoIcon","errorIcon","blockingIcon","warningIcon","severeWarningIcon","successIcon","infoBackground","errorBackground","blockingBackground","warningBackground","severeWarningBackground","successBackground","bodyBackground","bodyFrameBackground","accentButtonText","buttonBackground","primaryButtonText","primaryButtonTextHovered","primaryButtonTextPressed","inputBackground","inputForegroundChecked","listBackground","menuBackground","cardStandoutBackground","bodyTextChecked","buttonTextCheckedHovered","primaryButtonBackground","inputBackgroundChecked","inputIcon","inputFocusBorderAlt","menuIcon","menuHeader","accentButtonBackground","primaryButtonBackgroundPressed","inputBackgroundCheckedHovered","inputIconHovered","linkHovered","primaryButtonBackgroundHovered","inputPlaceholderBackgroundChecked","bodyBackgroundChecked","bodyFrameDivider","bodyDivider","variantBorder","buttonBackgroundCheckedHovered","buttonBackgroundPressed","listItemBackgroundChecked","listHeaderBackgroundPressed","menuItemBackgroundPressed","bodyBackgroundHovered","buttonBackgroundHovered","buttonBackgroundDisabled","buttonBorderDisabled","primaryButtonBackgroundDisabled","disabledBackground","listItemBackgroundHovered","listHeaderBackgroundHovered","menuItemBackgroundHovered","primaryButtonTextDisabled","disabledSubtext","listItemBackgroundCheckedHovered","disabledBodyText","variantBorderHovered","buttonTextDisabled","inputIconDisabled","disabledText","bodyText","actionLink","buttonText","inputBorderHovered","inputText","menuItemText","bodyStandoutBackground","defaultStateBackground","actionLinkHovered","buttonTextHovered","buttonTextChecked","buttonTextPressed","inputTextHovered","menuItemTextHovered","bodySubtext","focusBorder","inputBorder","smallInputBorder","inputPlaceholderText","buttonBorder","disabledBodySubtext","disabledBorder","buttonBackgroundChecked","menuDivider","cardShadow","cardShadowHovered","fontUrl","registerDefaultFontFaces","fontBaseUrl","_getFontBaseUrl","DefaultSpacing","s2","s1","createTheme","partialTheme","mergedTheme","semanticColors","mergeThemes","_theme","_onThemeChangeCallbacks","ThemeSettingName","initializeThemeInCustomizations","legacyTheme","legacyLoadTheme","fontName","_loadFonts","boxShadow","boxSizing","noWrap","textOverflow","getPlaceholderStyles","_iconSettings","__options","disableWarnings","warnOnMissingIcons","__remapped","subset","normalizeIconName","registerIcons","iconSubset","isRegistered","iconName","normalizedIconName","_warnDuplicateIcon","registerIconAlias","mappedToName","_missingIcons","_missingIconsTimer","mergeStyleSets","mergeCssSets","classNameSet","concatenatedStyleSet","registrations","styleSetArea","registrations_1","packagesCache","_win","setVersion","packageName","packageVersion","packages","__packages__","_isRTL","KeyCodes","backspace","tab","ctrl","alt","pauseBreak","capslock","pageUp","pageDown","home","del","five","six","seven","eight","nine","colon","leftWindow","rightWindow","zero_numpad","one_numpad","two_numpad","three_numpad","four_numpad","five_numpad","six_numpad","seven_numpad","eight_numpad","nine_numpad","decimalPoint","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","numlock","scrollLock","semicolon","equalSign","comma","dash","forwardSlash","graveAccent","openBracket","backSlash","closeBracket","singleQuote","RTL_LOCAL_STORAGE_KEY","savedRTL","persistSetting","mergeStylesSetRTL","getRTLSafeKeyCode","_memoizedClassNames","retVal","classNamesFunction","styleCalcCount","getClassNamesCount","currentMemoizedClassNames","useStaticStyles","disableCaching","_traverseMap","enableClassNameCacheFullWarning","_traverseEdge","_normalizeValue","CURRENT_ID_PROPERTY","DEFAULT_ID_STRING","getId","resetIds","isVirtualElement","_virtual","getParent","allowVirtualParents","getVirtualParent","findElementRecursive","matchFunction","DATA_PORTAL_ATTRIBUTE","portalContainsElement","elementMatch","testElement","appendFunction","functions","extendComponent","methods","initializeComponentRef","_onMount","_onUpdate","_onUnmount","_setComponentRef","componentRef","Async","_timeoutIds","_immediateIds","_intervalIds","_animationFrameIds","_isDisposed","_parent","_onErrorHandler","_noop","dispose","timeoutId","_logError","targetElement","immediateId","throttle","wait","lastResult","lastArgs","waitMS","trailing","lastExecuteTime","userCall","waitLength","debounce","noOpFunction","cancel","maxWait","lastCallTime","markExecuted","invokeFunction","executeImmediately","maxWaitDelta","maxWaitExpired","resultFunction","animationFrameId","animationFrameCallback","shallowCompare","filteredAssign","sourceObject","TooltipOverflowMode","toObjectMap","items_1","keys_1","baseElementEvents","baseElementProperties","htmlElementProperties","labelProperties","audioProperties","videoProperties","olProperties","liProperties","anchorProperties","buttonProperties","inputProperties","textAreaProperties","selectProperties","optionProperties","tableProperties","trProperties","thProperties","tdProperties","colGroupProperties","colProperties","formProperties","iframeProperties","imgProperties","divProperties","getNativeProps","allowedPropNames","excludedPropNames","keys_2","DirectionalHint","topLeftEdge","topCenter","topRightEdge","topAutoEdge","bottomLeftEdge","bottomCenter","bottomRightEdge","bottomAutoEdge","leftTopEdge","leftCenter","leftBottomEdge","rightTopEdge","rightCenter","rightBottomEdge","elementContains","isContained","nextParent","IS_FOCUSABLE_ATTRIBUTE","IS_VISIBLE_ATTRIBUTE","FOCUSZONE_ID_ATTRIBUTE","FOCUSZONE_SUB_ATTRIBUTE","getFirstFocusable","currentElement","includeElementsInFocusZones","getNextElement","getLastFocusable","getPreviousElement","focusFirstChild","bypassHiddenElements","focusAsync","checkNode","suppressParentTraversal","traverseChildren","allowFocusRoot","tabbable","isCurrentElementVisible","isElementVisible","isElementFocusZone","isElementFocusSubZone","childMatch","lastElementChild","isElementTabbable","childMatchSiblingMatch","previousElementSibling","childMatchParent","childMatchParentMatch","siblingMatch","suppressChildTraversal","isElementVisibleAndNotHidden","firstElementChild","visibilityAttribute","offsetHeight","isVisible","checkTabIndex","tabIndex","tabIndexAttributeValue","isFocusableAttribute","isTabIndexSet","shouldWrapFocus","noWrapDataAttribute","elementContainsAttribute","RectangleEdge","Position","_scrollbarWidth","targetToFocusOnNextRepaint","getPropsWithDefaults","propsWithoutDefaults","_bodyScrollDisabledCount","DisabledScrollClassName","DATA_IS_SCROLLABLE_ATTRIBUTE","_disableIosBodyScroll","findScrollableParent","startingElement","computedStyles","overflowY","_createPositionData","targetEdge","alignmentEdge","isAuto","DirectionalDictionary","_isRectangleWithinBounds","_getOutOfBoundsEdges","outOfBounds","_getEdgeValue","_setEdgeValue","_getCenterValue","edges","_getFlankingEdges","positiveEdge","negativeEdge","_getRelativeEdgeValue","_getRelativeRectEdgeValue","_getRelativeEdgeDifference","hostRect","_moveEdge","newValue","maintainSize","difference","returnRect","_alignEdges","gap","_isEdgeInBounds","_getOutOfBoundsDegree","breakingEdges_1","_adjustFitWithinBounds","bounding","positionData","directionalHintFixed","coverTarget","alignTargetEdge","elementEstimate","elementRectangle","directions","oobDegree","currentEstimate","currentEdge","currentAlignment","bestEdge","bestAlignment","currentOOBDegree","_estimatePosition","_flipToFit","fixedEdge","flippedElementEstimate","oppositeEdge","_flipAlignmentEdge","_alignOutOfBoundsEdges","outOfBoundsEdges","preserveEdge","outOfBoundsEdges_1","edgeAttempt","forcedInBounds","_centerEdgeToPoint","elementToPosition","estimatedElementPosition","elementEdge","adjustedGap","_alignOppositeEdges","_finalizeReturnEdge","returnEdge","_finalizeElementPosition","hostElement","doNotFinalizeReturnEdge","forceWithinBounds","_getRectangleFromElement","_isEdgeOnBounds","_calculateActualBeakWidthInPixels","beakWidth","_getPositionData","directionalHint","directionalHintForRTL","previousPositions","positionInformation","getClosestEdge","targetCenter","boundingCenter","_positionElementWithinBounds","_finalizeBeakPosition","elementPosition","positionedBeak","actualElement","showBeak","targetRectangle","closestEdge","hideBeak","_positionBeak","beakTargetPoint","elementBounds","beakPosition","clientRect","_getRectangleFromIRect","_positionElementRelative","gapSpace","targetRect","rectOrPoint","outOfBounds_1","_getTargetRect","_getAlignmentData","positionedElement","_finalizePositionData","_positionCallout","callout","isBeakVisible","positionProps","scrollDiv","offsetWidth","getScrollbarWidth","finalizedBeakPosition","positionCard","_positionCard","tagsToIgnore","modalize","targetDocument","affectedNodes","ariaHidden","originalValue","unmodalize","useAsync","asyncRef","useOnEvent","useCapture","callbackRef","useMergedRefs","mergedCallback","refs_1","WindowContext","useWindow","useDocument","defaultFocusRestorer","originalElement","containsFocus","useRestoreFocus","onRestoreFocus","originalFocusedElement","currentActiveElement","doesElementContainFocus","documentContainsFocus","hasFocus","shouldRestoreFocus","enableAriaHiddenSiblings","mergedRootRef","shouldHideSiblings","useHideSiblingNodes","role","ariaLabel","ariaLabelledBy","ariaDescribedBy","onDismiss","needsVerticalScrollBar","needsVerticalScrollBarState","setNeedsVerticalScrollBar","rootHeight","firstChildHeight","useScrollbarAsync","useConst","useTarget","previousTargetProp","targetRef","targetWindow","currentDoc","ANIMATIONS","BEAK_ORIGIN_POSITION","OFF_SCREEN_STYLE","ARIA_ROLE_ATTRIBUTES","DEFAULT_PROPS","preventDismissOnLostFocus","preventDismissOnScroll","preventDismissOnResize","minPagePadding","getClassNames","usePositions","calloutElement","getBounds","setPositions","positionAttempts","previousTarget","finalHeight","calloutMaxHeight","onPositioned","timerId_1","prevElementPositions","newElementPosition","currentProps","dupeCalloutElement","newPositions","positionCallout","comparePositions","CalloutContentBase","calloutWidth","calloutMaxWidth","calloutMinWidth","doNotLayer","hideOverflow","onLayerMounted","popupProps","setCalloutElement","calloutCallback","calloutEl","rootRef","targetWindowResized","setTargetWindowResized","cachedBounds","currentBounds","segments","getWindowSegments","segments_1","_getBoundsFromTargetWindow","getBoundsFromTargetWindow","useBounds","setMaxHeight","topBounds","bottomBounds","useMaxHeight","dismissOnTargetClick","shouldDismissOnWindowFocus","preventDismissOnEvent","isMouseDownOnPopup","mouseDownHandlers","positionsExists","dismissOnScroll","dismissOnClickOrScroll","dismissOnResize","dismissOnLostFocus","eventPaths","composedPath","isEventTargetOutsideCallout","dismissOnTargetWindowBlur","disposablesPromise","disposables_1","useDismissHandlers","mouseDownOnPopup","mouseUpOnPopup","isForcedInBounds","cssPositions","setInitialFocus","hasPositions","timerId_2","useAutoFocus","overflowYHidden","beakVisible","overflowStyle","visibilityStyle","beak","getBeakPosition","beakCurtain","calloutMain","onMouseDown","previousProps","shouldUpdateWhenHidden","beakPositionStyle","newElementPositions","oldPositionEdge","newPositionEdge","getBeakStyle","GlobalClassNames","CalloutContent","borderStyle","overflowX","PortalCompatContext","portalCompatContextDefaultValue","DirectionalKeyCodes","isDirectionalKeyCode","mountCounters","callbackMap","setMountCounters","currValue","setCallbackMap","_onMouseDown","onPointerDown","_onPointerDown","_onKeyDown","onKeyUp","_onKeyUp","FocusRectsContext","useFocusRects","disableFocusRects","providerRef","FocusRects","FocusRectsProvider","layerRoot","parentContext","inheritParentContext","registerProvider","unregisterProvider","mergeSettings","oldSettings","newSettings","mergeSettingsWith","_isSettingsFunction","_settingsMergeWith","mergeScopedSettings","scopedSettingsFromProps","oldScopedSettings","newScopedSettings","_scopedSettingsMergeWith","Customizer","_onCustomizationChange","contextTransform","newContext","mergeCustomizations","getFabricTheme","FabricBase","applyTheme","applyThemeToBody","bodyThemed","currentDoc_1","useApplyThemeToBody","Root","divProps","contextDir","pageDir","componentDir","rootDir","needsTheme","getDir","renderedContent","useRenderedContent","inheritFont","Fabric","preventBlanketFontInheritance","_layersByHostId","_layerHostsById","defaultHostId","_defaultHostSelector","filteredEventProps","useIsomorphicLayoutEffect","LayerBase","registerPortalEl","_React_useContext","usePortalCompat","mergedRef","layerRef","fabricElementRef","needRaiseLayerMount","setNeedRaiseLayerMount","eventBubblingEnabled","fabricProps","hostId","insertFirst","onLayerDidMount","onLayerWillUnmount","fabricRef","isNotHost","getHost","layerHost","layerHosts","getLayerHost","defaultHostSelector","createDefaultLayerHost","removeLayerElement","elem","createLayerElement","virtualChild","virtualParent","oldParent","setVirtualParent","layerHosts_1","notifyLayersChanged","registerLayer","unregisterPortalEl","layerHosts_2","unregisterLayer","ReactDOM","onFilterEvent","getFilteredEvents","BUBBLING_PHASE","rootNoHost","Callout","layerProps","TooltipDelay","TooltipBase","_onRenderContent","_classNames","subText","calloutProps","onRenderContent","onMouseEnter","onMouseLeave","tooltipGapSpace","wordWrap","overflowWrap","HttpStatusCode","TooltipHostBase","_tooltipHost","_defaultTooltipId","_toggleTooltip","dismiss","_hideTooltip","_getTargetElement","overflowMode","Self","_onTooltipFocus","_ignoreNextFocusEvent","_onTooltipMouseEnter","_onTooltipContentFocus","_currentVisibleTooltip","_clearDismissTimer","_clearOpenTimer","_onTooltipBlur","_dismissTimerId","_async","overflowElement","scrollWidth","hasHorizontalOverflow","scrollHeight","hasVerticalOverflow","delayTime","_getDelayTime","_openTimerId","_onTooltipMouseLeave","closeDelay","_onTooltipKeyDown","isTooltipVisible","onTooltipToggle","long","isAriaPlaceholderRendered","hostClassName","setAriaDescribedBy","tooltipProps","tooltipId","tooltipRenderProps","tooltipContent","showTooltip","onFocusCapture","onBlurCapture","ariaPlaceholder","TooltipHost","isNullOrEmpty","_AppContext_user","cdnUrl","Icons","Column","Contact","Database","DisabledContact","DisabledDocumentaryType","DisabledEnterpriseApplication","DisabledExternalUser","DisabledGroup","DisabledOffice","DisabledProfile","DisabledSerie","DisabledSerieSimple","DisabledSystemTable","DisabledTrd","DisabledUser","DocumentaryType","Docx","DropDown","EnterpriseApplication","ExternalUser","File","Flow","Folder","Form","GanttChart","Group","Link","Mail","Office","Outlook","Pdf","Picture","Pptx","Profile","Script","Section","Serie","SerieSimple","SystemTable","Time","Trd","Txt","User","UserFolder","getGridVisibility","appendStartSpace","hiddenSm","hiddenMd","hiddenMdDown","hiddenMdUp","hiddenLg","hiddenLgDown","hiddenLgUp","hiddenXl","hiddenXlDown","hiddenXlUp","hiddenXxl","hiddenXxlDown","hiddenXxlUp","hiddenXxxl","__classPrivateFieldSet","receiver","__classPrivateFieldGet","AppContext","user","Email","Enabled","LoginName","OfficeId","ProfileId","SectionBaseId","SectionId","UserId","imageUrl","Roles","DataSourceType","Entity","FormServerExtension","ProcesoX","ProjectDataSource","SharePoint","Sql","_Host_args","_Host_context","Host","appContext","onShowError","onShowMessage","notification","onSuccessToast","onShowConfirmAsync","onOpenFile","onOpenFileViewer","onShowPrompt","onUpdateUserPreferences","httpClient","onGetUserPreferencesAsync","onGetAccessToken","onGetHeaders","onGetApimKey","_arrayLikeToArray","_unsupportedIterableToArray","_ReadonlyCollection_list","ReadonlyCollection","All","Any","Average","_list","DefaultIfEmpty","DistinctBy","ElementAtOrDefault","Except","FirstOrDefault","ForEach","GroupJoin","Intersect","Join","LastOrDefault","Max","Min","ThenBy","ThenByDescending","Reverse","SequenceEqual","SingleOrDefault","SkipWhile","TakeWhile","ToDictionary","ToLookup","Union","XColor","ValueOf","XFontSize","XFontWeight","_GuidLegacy_value","_Guid_value","_Guid_empty","uuidv4","GuidLegacy","Empty","IsValid","IsEmpty","Guid","tryParse","_DataTableRequest_request","DataTableRequest","orderColumn","sortDirection","filters","apiUrl","paginateDataAsync","paginateData","toJson","onSearch","onSort","recordsFiltered","ValidationResult","validationType","hasError","expectedValue","validator","required","formValue","customMessageError","lenght","domainUser","validateProperty","propertyValue","validations","validation","validateObject","validationResult","sm","xl","xxl","xxxl","onClickCapture","onDoubleClick","onDoubleClickCapture","onDragStart","onDragEnd","onDragEnter","onDrop","onDragLeave","onKeyDownCapture","onKeyUpCapture","onDragOver","EventGroup","_uniqueId","_eventRecords","raise","eventArgs","bubbleEvent","_isElement","createEventObject","evObj","__events__","eventRecords","eventRecordList","listIndex","objectCallback","isObserved","isDeclared","declaredEvents","__declaredEvents","onAll","parent_1","eventRecord","processElementEvent","elementCallback","targetArrayLookup","targetArray","declare","BaseComponent","methodNames","_makeSafe","_makeAllSafe","prevState","_updateComponentRef","__disposables","_disposables","disposable","__className","results","__async","__events","_resolveRef","refName","__resolves","newProps","_warnDeprecations","deprecationMap","_warnMutuallyExclusive","mutuallyExclusiveMap","_warnConditionallyRequiredProps","requiredProps","conditionalPropName","condition","_skipComponentRefResolution","classMethod","prototypeMethod","nullRender","componentAsMemoizer","Outer","Inner","innerMemoizer","defaultRender","innerProps","outerProps","composeComponentAs","KeytipEvents","KTP_PREFIX","KTP_SEPARATOR","KTP_LAYER_ID","KEYTIP_ADDED","KEYTIP_REMOVED","KEYTIP_UPDATED","PERSISTED_KEYTIP_ADDED","PERSISTED_KEYTIP_REMOVED","PERSISTED_KEYTIP_EXECUTE","ENTER_KEYTIP_MODE","EXIT_KEYTIP_MODE","KeytipManager","keytips","persistedKeytips","sequenceMapping","inKeytipMode","shouldEnterKeytipMode","delayUpdatingKeytipChange","_instance","keytipProps","persisted","addParentOverflow","keySequences","uniqueKeytip","_getUniqueKtp","uniqueID","keytip","newKeytipProps","oldKeyTip","keytipToRemove","enterKeytipMode","exitKeytipMode","getKeytips","fullSequence","parentKeytip","overflowSetSequence","menuExecute","overflowButtonSequences","keytipSequences","usePrevious","registerPersistedKeytips","keytipsToRegister","keytipManager","registeredPersistedKeytips","keytipsToRegister_1","unregisterPersistedKeytips","OverflowButton","overflowItems","itemSubMenuProvider","onRenderOverflowButton","getSubMenuForItem","subMenuProps","newKeytipsToRegister","newOverflowItems","overflowItem","persistedKeytip","hasDynamicChildren","hasMenu","onExecute","hasOverflowSubMenu","newOverflowItem","modifiedOverflowItems","prevPersistedKeytips","useKeytipRegistrations","OverflowSetBase","divContainer","_forceIntoFirstElement","focusSucceeded","focusElement","childElement","useComponentRef","overflowSide","onRenderItem","showOverflow","overflowButton","ResizeGroupDirection","overflowItemStyle","OverflowSet","flexWrap","flexDirection","getNextResizeGroupStateProvider","measurementCache","measurementsCache","getCachedMeasurement","addMeasurementToCache","measurement","getMeasurementCache","_containerDimension","_measurementCache","_getMeasuredDimension","measuredData","getElementToMeasureDimension","cachedDimension","measuredDimension","_shrinkContentsUntilTheyFit","onReduceData","dataToMeasure","nextMeasuredData","renderedData","resizeDirection","getNextState","currentState","newContainerDimension","newDimension","fullDimensionData","onGrowData","nextState","measureContainer","_updateContainerDimension","_growDataUntilItDoesNotFit","shouldRenderDataForMeasurement","getInitialResizeGroupState","MeasuredContext","isMeasured","hiddenDivStyles","hiddenParentStyles","resizeDataReducer","useResizingBehavior","nextResizeGroupStateProvider","initialHiddenDiv","updateHiddenDiv","hasRenderedContent","initialStateData","resizeData","dispatchResizeDataAction","stateRef","useResizeState","updateResizeState","remeasure","dataDidRender","containerDimension","refToMeasure","measuredBoundingRect","dataNeedsMeasuring","isInitialMeasure","measuredContextValue","ResizeGroupBase","onRenderData","FocusZoneDirection","ResizeGroup","FocusZoneTabbableElements","focusZoneStyles","createMergedRef","newRefs","arraysEqual","createResolver","TABINDEX","NO_VERTICAL_WRAP","NO_HORIZONTAL_WRAP","LARGE_DISTANCE_FROM_CENTER","LARGE_NEGATIVE_DISTANCE_FROM_CENTER","raiseClickFromKeyboardEvent","IconType","ImageFit","ImageCoverStyle","ImageLoadState","_allInstances","_outerZones","ALLOWED_INPUT_TYPES","ALLOW_VIRTUAL_ELEMENTS","FocusZone","_mergedRef","_onFocus","_portalContainsElement","newActiveElement","onActiveElementChanged","doNotAllowFocusEventToPropagate","stopFocusPropagation","onFocusNotification","shouldFocusInnerElementWhenReceivedFocus","defaultTabbableElement","isImmediateDescendant","_isImmediateDescendantOfZone","maybeElementToFocus","_activeElement","initialElementFocused","_setFocusAlignment","_updateTabIndexes","_onBlur","_setParkedFocus","_setActiveElement","isInnerZoneKeystroke","pagingSupportDisabled","shouldEnterInnerZone","_getDocument","_isInnerZone","innerZone","_getFirstInnerZone","_shouldRaiseClicksOnSpace","_tryInvokeClickForFocusable","_preventDefaultWhenHandled","_moveFocusLeft","_moveFocusRight","_moveFocusUp","_moveFocusDown","_moveFocusPaging","allowTabKey","handleTabKey","_isElementInput","focusChanged","_processingTabKey","_shouldWrapFocus","shouldResetActiveElementWhenTabFromZone","_isContentEditableElement","_shouldInputLoseFocus","_shouldRaiseClicksOnEnter","_getHorizontalDistanceFromCenter","isForward","activeRect","leftAlignment","_focusAlignment","targetRectTop","activeRectBottom","targetRectBottom","activeRectTop","shouldRaiseClicksFallback","shouldRaiseClicks","shouldRaiseClicksOnEnter","shouldRaiseClicksOnSpace","getOuterZones","_onKeyDownCapture","defaultActiveElement","shouldFocusOnMount","_defaultFocusElement","preventFocusRestoration","_lastIndexPath","elementToFocus","path_1","nextChild","getFocusableByIndexPath","rootProps","Tag","_evaluateFocusBeforeRender","elementRef","onMouseDownCapture","forceIntoFirstElement","ownerZoneElement","_getOwnerZone","ownerZone","focusLast","forceAlignment","onBeforeFocus","shouldReceiveFocus","setFocusAlignment","focusedElement","getElementIndexPath","isParked","_isParked","_parkedTabIndex","previousActiveElement","preventDefaultWhenHandled","_moveFocus","getDistanceFromCenter","useDefaultWrap","candidateDistance","candidateElement","changedFocus","isBidirectional","bidirectional","elementDistance","isCircularNavigation","targetTop","shouldWrap","scrollableParent","targetBottom","pagesize","childIndex","isRangeSelected","isReadonly","readOnly","shouldInputLoseFocusOnArrowKey","checkForNoWrap","mergeAriaAttributeValues","ariaAttributes","mergedAttribute","SVG_REGEX","ImageBase","frameElement","imageElement","onLoadingStateChange","onLoad","notLoaded","loadState","setLoadState","naturalWidth","naturalHeight","onImageLoaded","onImageError","useLoadState","imageProps","shouldFadeIn","shouldStartVisible","imageFit","maximizeFrame","loading","coverStyle","previousLoadState","cover","contain","centerContain","centerCover","desiredRatio","landscape","portrait","computeCoverStyle","useCoverStyle","isLoaded","isLandscape","isCenter","isCenterContain","isCenterCover","isContain","isCover","isNone","none","isNotImageFit","rootMaximizeFrame","imageCenter","imageContain","imageCover","imageCenterContain","imageCenterCover","imageNone","imageLandscape","imagePortrait","ImageFitStyles","supportsObjectFit","fallbackObjectFitStyles","objectFit","placeholder","MS_ICON","getIconContent","getIcon","iconClassName","mergeImageProps","FontIcon","iconContent","nativeProps","accessibleName","containerProps","finalChildren","IconBase","_onImageLoadingStateChange","imageLoadError","imageErrorAs","isPlaceholder","iconType","iconContentChildren","RootType","ImageType","finalIconContentChildren","Icon","imageContainer","ImageIcon","altText","hasName","imageNameProps","ContextualMenuItemType","isMacResult","memoizer","composeRenderFunction","isMac","isIOS","getIsChecked","canCheck","isChecked","hasSubmenu","isItemDisabled","getMenuItemAriaRole","defaultIconRenderer","iconProps","renderItemIcon","hasIcons","onRenderIcon","renderCheckMarkIcon","onCheckmarkClick","isItemChecked","checkmarkIcon","renderItemName","renderSecondaryText","secondaryText","renderSubMenuIcon","submenuIconProps","subMenuIcon","ContextualMenuItemBase","openSubMenu","getSubmenuTarget","submenuTarget","dismissSubMenu","dismissMenu","dismissAll","renderContent","_renderLayout","linkContentMenu","linkContent","defaultRenders","getDividerClassNames","wrapper","alignItems","divider","CONTEXTUAL_MENU_ITEM_HEIGHT","MediumScreenSelector","ScreenWidthMinLarge","getMenuItemStyles","ContextualMenuItemBackgroundHoverColor","ContextualMenuItemTextHoverColor","ContextualMenuItemBackgroundSelectedColor","ContextualMenuItemDividerColor","rootDisabled","rootHovered","rootFocused","rootChecked","rootPressed","rootExpanded","forcedColorAdjust","MsHighContrastAdjust","anchorLink","textRendering","letterSpacing","wordSpacing","textTransform","textIndent","textShadow","textDecoration","iconColor","iconDisabled","splitButtonFlexContainer","justifyContent","CONTEXTUAL_SPLIT_MENU_MINWIDTH","getSplitButtonVerticalDividerClassNames","isExpanded","splitMenu","screenReaderText","getItemClassNames","expanded","isAnchorLink","knownIcon","itemClassName","dividerClassName","subMenuClassName","primaryDisabled","splitPrimary","flexBasis","splitContainer","getItemStyles","ContextualMenuItem","ContextualMenuItemWrapper","_onItemMouseEnter","onItemMouseEnter","_onItemClick","onItemClickBase","_onItemMouseLeave","onItemMouseLeave","_onItemKeyDown","onItemKeyDown","_onItemMouseMove","onItemMouseMove","_getSubmenuTarget","sequencesToID","prevValue","keySequence","useKeytipData","prevOptions","nativeKeytipProps","keytipId","describedByPrepend","describedby","getAriaDescribedBy","overflowKeySequences","overflowSequenceLen","overflowSequence","itemToAdd","addElementAtIndex","mergeOverflows","getKeytipData","KeytipData","ContextualMenuAnchor","_anchor","_getMemoizedMenuButtonKeytipProps","_renderAriaDescription","ariaDescription","_ariaDescriptionId","focusableElementIndex","totalItemCount","hasCheckmarks","contextualMenuItemAs","ChildrenRenderer","expandedMenuItemKey","anchorRel","itemHasSubmenu","itemProps","ariaDescribedByIds","additionalItemProperties","keytipAttributes","onMouseMove","VerticalDividerBase","deprecatedGetClassNames","VerticalDivider","ContextualMenuSplitButton","_executeItemClick","_splitButton","_onItemMouseEnterPrimary","_onItemMouseEnterIcon","_onItemMouseMovePrimary","_onItemMouseMoveIcon","_onIconItemClick","executeItemClick","_processingTouch","_onTouchStart","_handleTouchAndPointerEvent","stopImmediatePropagation","splitButton","onTouchStart","_renderSplitPrimaryButton","_renderSplitDivider","_renderSplitIconButton","itemComponentProps","onItemMouseDown","buttonProps","onTap","_lastTouchTimeoutId","ContextualMenuButton","_btn","defaultRole","buttonNativeProperties","itemRole","itemButtonProperties","useId","providedId","ResponsiveMode","_defaultMode","_lastMode","RESPONSIVE_MAX_CONSTRAINT","getInitialResponsiveMode","getWidthOfCurrentWindow","currentWindow","getResponsiveMode","responsiveMode","useResponsiveMode","overrideResponsiveMode","lastResponsiveMode","setLastResponsiveMode","newResponsiveMode","MenuContext","getContextualMenuItemClassNames","getSubmenuItems","overrideItems","subItem","preferMenuTargetAsEventTarget","contextItem","getOnClickWithOverrideTarget","COMPONENT_NAME","_getMenuItemStylesFunction","useSubMenuState","menuTarget","setExpandedMenuItemKey","setSubmenuTarget","shouldFocusOnContainer","setShouldFocusOnContainer","subMenuId","closeSubMenu","focusContainer","submenuItemKey","onSubMenuDismiss","isMountedRef","useOnSubmenuDismiss","findItemByKeyFromItems","submenuProps","isSubMenu","useKeyHandlers","focusZoneProps","focusZoneDirection","lastKeyDownWasAltOrMeta","keyHandler","shouldHandleKey","dismissAllMenus","handled","shouldHandleKeyDown","submenuCloseKey","shouldCloseSubMenu","isAltOrMeta","shouldHandleKeyUp","keyPressIsAltOrMetaAlone","hasModifier","isUp","isDown","openKey","ContextualMenuBase","asyncTracker","menuId","tryFocusPreviousActiveElement","newElement","usePreviousActiveElement","getSubmenuProps","delayUpdateFocusOnHover","shouldUpdateFocusOnMouseEvent","gotMouseMove","onMenuFocusCapture","useShouldUpdateFocusOnMouseMove","isScrollIdle","scrollIdleTimeoutId","useScrollHandler","subMenuHoverDelay","enterTimerRef","cancelSubMenuTimer","onTimerExpired","useSubmenuEnterTimer","startSubmenuTimer","subMenuEntryTimer","onMenuDismissed","onMenuOpened","previousHidden","onMenuOpenedRef","onMenuClosedRef","propsRef","useVisibility","onMenuKeyDown","_j","shouldIgnoreMouseEvent","updateFocusOnMouseEvent","overrideTarget","shouldDismiss","setActive","useMouseHandlers","onItemMouseEnterBase","onItemMouseMoveBase","onMouseItemLeave","onAnchorClick","onDefaultRenderMenuList","menuListProps","menuClassNames","indexCorrection","menuItem","renderMenuItem","itemType","Divider","Header","indexIncrease","customOnRenderListLength","itemClassNames","renderedItems","subMenuIconClassName","itemStyleProps","renderSeparator","headerItem","renderHeaderMenuItem","renderListItem","renderSectionItem","defaultRenderNormalItem","renderNormalItem","onRenderContextualMenuItem","sectionItem","sectionProps","groupProps","headerContextualMenuItem","ariaLabelledby","id_1","id_2","topDivider","contextualMenuItem","itemsIndex","bottomDivider","fromSection","onRender","commonProps","divHtmlProperties","labelElementId","useTargetWidth","useTargetAsMinWidth","_k","onRenderSubMenu","onDefaultRenderSubMenu","onRenderMenuList","getMenuClassNames","itemsHaveIcons","contextualMenuItems","contextualMenuItems_1","contextMenuStyle","adjustedFocusZoneProps","submenuItem","canAnyMenuItemsCheck","targetAsHtmlElement","targetWidth","totalItemCount_1","items_2","itemCount","calloutStyles_1","menuContext","focusZoneAs","renderFocusZone","defaultMenuItemRenderer","items_3","isopen","LocalContextualMenu","listStyleType","userSelect","ContextualMenu","ButtonGlobalClassNames","msButton","msButtonHasMenu","msButtonIcon","msButtonMenuIcon","msButtonLabel","msButtonDescription","msButtonScreenReaderText","msButtonFlexContainer","msButtonTextContainer","getBaseButtonClassNames","variantClassName","menuIconClassName","isSplit","iconExpandedHovered","menuIconExpandedHovered","rootExpandedHovered","rootHasMenu","labelHovered","iconHovered","descriptionHovered","menuIconHovered","iconPressed","descriptionPressed","menuIconPressed","rootCheckedDisabled","rootCheckedHovered","rootCheckedPressed","flexContainer","textContainer","iconExpanded","iconChecked","labelChecked","labelDisabled","menuIconChecked","menuIconDisabled","menuIconExpanded","descriptionChecked","descriptionDisabled","getSplitButtonClassNames","splitButtonMenuButton","splitButtonMenuButtonExpanded","splitButtonMenuButtonDisabled","splitButtonMenuButtonChecked","splitButtonMenuFocused","splitButtonContainer","splitButtonContainerChecked","splitButtonContainerCheckedHovered","splitButtonContainerHovered","splitButtonContainerFocused","splitButtonContainerDisabled","splitButtonMenuIcon","splitButtonMenuIconDisabled","splitButtonDivider","splitButtonDividerDisabled","BaseButton","_buttonElement","_splitButtonContainer","_renderedVisibleMenu","_onRenderIcon","_onRenderTextContents","onRenderText","_onRenderText","onRenderDescription","_onRenderDescription","_hasText","_labelId","_onRenderChildren","_descriptionId","_onRenderAriaDescription","_onRenderMenuIcon","menuIconProps","_onRenderMenu","menuProps","MenuType","menuAs","_onDismissMenu","_dismissMenu","_menuShouldFocusOnMount","_menuShouldFocusOnContainer","menuHidden","_openMenu","_onToggleMenu","_onSplitContainerFocusCapture","_onSplitButtonPrimaryClick","_onMenuClick","_onMenuKeyDown","_onKeyPress","onKeyPress","_onMouseUp","_onClick","_onSplitButtonContainerKeyDown","_isValidMenuOpenKey","onMenuClick","_isSplitButton","allowDisabledFocus","toggle","isPrimaryButtonDisabled","renderAsAnchor","resolvedAriaLabel","dataIsFocusable","isCheckboxTypeRole","checkedOrPressedValue","_onRenderSplitButtonContent","onPointerUp","onAfterMenuDismiss","openMenu","onRenderAriaDescription","onRenderChildren","onRenderMenu","onRenderMenuIcon","Button","_shouldRenderMenu","_getMenuProps","Content","persistMenu","renderPersistedMenuHiddenOnMount","primaryActionButtonProps","getBaseSplitButtonClassNames","SplitButton","_onRenderSplitButtonMenuButton","_onRenderSplitButtonDivider","splitButtonMenuProps","splitButtonAriaLabel","splitButtonProps","menuTriggerKeyCode","baseClassName","concatStyles","ComposedComponent","resultClass","ComponentWithInjectedProps","_styleCache","_onSettingChanged","componentProps","mergedStyles","merged","hoistStatics","ColumnActionsMode","ConstrainMode","ColumnDragEndLocation","DetailsListLayoutMode","CheckboxVisibility","noOutline","iconStyle","getStyles","buttonHighContrastFocus","customStyles","splitButtonDividerBaseStyles","borderTopRightRadius","borderBottomRightRadius","borderRight","borderRightWidth","borderLeftWidth","borderLeft","marginLeft","marginTop","marginRight","marginBottom","_m","_o","focusInset","focusColor","baseButtonStyles","getBaseButtonStyles","baseSplitButtonStyles","getSplitButtonStyles","_p","CommandBarButton","getCommandButtonStyles","rootStyles","labelStyles","restCustomStyles","CommandBarBase","_overflowSet","_resizeGroup","_onRenderData","primaryGroupAriaLabel","farItemsGroupAriaLabel","hasSecondSet","farItems","primarySet","primaryItems","_onRenderItem","_onRenderOverflowButton","secondarySet","itemText","commandButtonProps","buttonStyles","iconOnly","_onButtonClick","tooltipHostProps","_commandButton","ButtonAs","buttonAs","CommandBarButtonAs","commandBarButtonAs","overflowButtonProps","combinedOverflowItems","overflowProps","OverflowButtonType","overflowButtonAs","_onReduceData","shiftOnReduce","onDataReduced","movedItem","renderedInOverflow","newData","_computeCacheKey","_onGrowData","onDataGrown","minimumOverflowItems","resizeGroupAs","ResizeGroupAs","commandBarData","overflowSet","inactive","returnKey","CommandBar","SelectionMode","SelectionDirection","SELECTION_CHANGE","Selection","onSelectionChanged","onItemsChanged","canSelectItem","selectionMode","_getKey","defaultGetKey","_changeEventSuppressionCount","_exemptedCount","_anchoredIndex","_unselectableCount","_onSelectionChanged","_onItemsChanged","_canSelectItem","_keyToIndexMap","_isModal","setItems","getSelectedCount","setChangeEvents","isEnabled","suppressChange","_hasChanged","_change","isModal","setModal","setAllSelected","shouldClear","newKeyToIndexMap","newUnselectableIndices","hasSelectionChanged","haveItemsChanged","_setAllSelected","newExemptedIndicies","newExemptedCount","indexProperty","_exemptedIndices","exemptKey","_items","newIndex","_isAllSelected","_unselectableIndices","_selectedItems","_updateCount","getItems","isIndexSelected","getSelectedIndices","_selectedIndices","getItemIndex","endIndex","isAllSelected","selectableCount","isKeySelected","setKeySelected","shouldAnchor","setIndexSelected","isExempt","setRangeSelected","newAnchorIndex","selectToKey","clearSelection","selectToIndex","selectToRange","anchorIndex","toggleAllSelected","toggleKeySelected","toggleIndexSelected","toggleRangeSelected","preserveModalState","CollapseAllVisibility","GroupSpacer","indentWidth","nativeElementMap","audio","video","ol","textarea","colGroup","CheckBase","useFastIcons","IconComponent","CheckGlobalClassNames","checkHost","Check","checkBoxHeight","sharedCircleCheck","DetailsRowGlobalClassNames","compact","cellAnimation","cellCheck","cellMeasurer","listCellFirstChild","isContentUnselectable","isCheckVisible","isRowHeader","DEFAULT_CELL_STYLE_PROPS","cellLeftPadding","cellRightPadding","cellExtraRightPadding","DEFAULT_ROW_HEIGHTS","compactRowHeight","rowVerticalPadding","compactRowVerticalPadding","tooltipHost","cellIsCheck","collapseButton","isCollapsed","isSelectAllHidden","isResizingColumn","cellSizer","isResizing","dropHintCircleStyle","dropHintCaretStyle","dropHintLineStyle","cellTitle","cellName","filterChevron","gripperBarVertical","checkTooltip","getCellStyles","cellStyleProps","isHeader","FastCheck","_defaultCheckboxRender","checkboxProps","_fastDefaultCheckboxRender","SelectAllVisibility","DetailsRowCheck","canSelect","anySelected","checkClassName","onRenderDetailsCheckbox","defaultCheckboxRender","onRenderCheckbox","detailsCheckboxProps","getNativeElementProps","checkRole","DragDropHelper","_selection","_dragEnterCounts","_activeTargets","_lastId","_initialized","dragDropOptions","_onDocumentMouseUp","isDraggable","isDroppable","activeTarget","handlers","eventMap","updateDropState_1","updateDropState","dragDropTarget","_isDraggable","_isDroppable","eventMap_1","isHandled","_onDragEnd","_isDragging","handlers_1","unsubscribe","_dragData","dropTarget","_onMouseMove","_isChild","_onMouseLeave","eventTarget","dragTarget","canDrag","dragContext","canDrop","defaultOnRenderHeader","isIconOnly","accessibleLabel","DetailsColumnBase","_onRenderFilterIcon","columnProps","_onRenderColumnHeaderTooltip","_onColumnClick","onColumnClick","columnActionsMode","_onDragStart","itemIndex","selectedItems","_updateHeaderDragInfo","borderWhileDragging","noBorderWhileDragging","setDraggedItemIndex","updateDragInfo","_onColumnContextMenu","onColumnContextMenu","_onRootMouseDown","parentId","onRenderColumnHeaderTooltip","headerClassName","isActionable","isIconVisible","isSorted","isGrouped","isFiltered","isPadded","transitionDurationDrag","transitionDurationDrop","onRenderFilterIcon","onRenderHeader","hasInnerButton","accNameDescription","_hasAccessibleDescription","isSortedDescending","calculatedWidth","gripperBarVerticalStyle","cellTooltip","onContextMenu","hasDropdown","isMenuOpen","nearIcon","showSortIconWhenUnsorted","sortIcon","_renderAccessibleDescription","dragDropHelper","_addDragDropHandling","isDropped","borderAfterDropping","noBorderAfterDropping","TRANSITION_DURATION_DROP","_dragDropSubscription","_getColumnDragDropOptions","columnIndex","selectionIndex","filterAriaLabel","sortAscendingAriaLabel","sortDescendingAriaLabel","groupAriaLabel","sortableAriaLabel","DetailsColumn","iconForegroundColor","headerForegroundColor","headerBackgroundColor","dropdownChevronForegroundColor","resizerColor","nearIconStyle","borderAfterDragOrDrop","alignContent","NO_COLUMNS","DetailsHeaderBase","_rootElement","_rootComponent","_draggedColumnIndex","_dropHintDetails","_updateDroppingState","_resetDropHints","_onDragOver","_computeDropHintToBeShown","_onDrop","columnReorderProps","_getColumnReorderProps","targetIndex","_currentDropHintIndex","isValidDrop","_isValidCurrentDropHintIndex","_onDropIndexInfo","sourceIndex","onColumnDrop","dragDropDetails","draggedIndex","handleColumnReorder","_computeColumnIndexOffset","showCheckbox","groupNestingDepth","_updateDragInfo","_isCheckboxColumnHidden","_getDropHintPositions","onColumnDragStart","onColumnDragEnd","columnDragEndLocation","_isEventOnHeader","dropLocation","prevRef","prevMid","frozenColumnCountFromStart","frozenColumnCountFromEnd","dropHintElement","newMid","originX","dropHintElementRef","isRtl","eventXRelativePosition","currentDropHintIndex","_liesBetween","currentIndex","lastValidColumn","indexToUpdate","_isBefore","_isAfter","middleIndex","_updateDropHintElement","_renderColumnSizer","columnResizeDetails","isResizable","_stopPropagation","_onSizerBlur","cellSizerStart","cellSizerEnd","cellIsResizing","_onSizerDoubleClick","_onSelectAllClicked","columnIndexAttr","columnMinWidth","_onRootMouseMove","isSizing","_onRootKeyDown","onColumnResized","_onSizerMouseMove","onColumnIsSizingChanged","movement","_onSizerMouseUp","_onToggleCollapseAll","onToggleCollapseAll","newCollapsed","isAllCollapsed","_dragDropHelper","minimumPixelsForDrag","_subscriptionObject","_getHeaderDragDropOptions","previousColumns","ariaLabelForToggleAllGroupsButton","ariaLabelForSelectAllCheckbox","selectAllVisibility","ariaLabelForSelectionColumn","checkboxVisibility","isCheckboxHidden","isCheckboxAlwaysVisible","hasGroupExpander","showGroupExpander","collapseAllVisibility","columnIndexOffset","cellIsGroupExpander","_renderDropHint","_renderColumnDivider","sizingOverlay","columnReorderOptions","displayProperty","onRenderDivider","dropHintIndex","dropHintStyle","onColumnAutoResized","DetailsHeader","cellSizerFadeInStyles","borderBottom","cellWrapperPadded","cellIsActionable","cellIsEmpty","transformOrigin","DetailsRowFields","rowClassNames","onRenderItemColumn","getCellValueKey","propsOnRenderField","onRenderField","cellsByColumn","enableUpdateAnimations","rowHeaderId","cellValueKeysRef","cellValueKeys","defaultOnRenderField","fieldProps","cellValueKey","fieldItem","fieldItemIndex","isMultiline","cellPadded","cellUnpadded","getValueKey","defaultOnRender","previousValueKey","showAnimation","fieldName","getCellText","DetailsRowBase","_cellMeasurer","_focusZone","selectionState","getSelectionState","isDropping","dragDropEvents","_droppingClassNames","columnMeasureInfo","previousState","onDidMount","_getRowDragDropOptions","_onDidMountCalled","onMeasureDone","onWillUnmount","useReducedRowRenderer","newSelectionState","flatIndexOffset","onRenderCheck","_onRenderCheck","getRowAriaLabel","getRowAriaDescription","getRowAriaDescribedBy","isGridRow","checkButtonAriaLabel","checkboxCellClassName","rowFieldsAs","isSelectionModal","droppingClassName","ariaRowDescription","ariaSelected","ariaPositionInSet","ariaSetSize","_rowClassNames","RowFields","rowFields","columnStartIndex","_ariaRowDescriptionId","groupedListRowProps","checkCell","measureCell","eventsToRegister","SpinnerSize","SpinnerType","DetailsRow","_q","_r","focusedLinkColor","defaultHeaderText","defaultMetaText","defaultBackground","defaultHoverHeaderText","defaultHoverMetaText","defaultHoverBackground","selectedHeaderText","selectedMetaText","selectedBackground","selectedHoverHeaderText","selectedHoverMetaText","selectedHoverBackground","focusHeaderText","focusMetaText","focusBackground","focusHoverBackground","selectedStyles","borderTop","LinkGlobalClassNames","cannotSelectStyles","rootCompactStyles","cellCompactStyles","defaultCellStyles","wordBreak","SELECTION_INDEX_ATTRIBUTE_NAME","SELECTION_TOGGLE_ATTRIBUTE_NAME","SELECTION_INVOKE_ATTRIBUTE_NAME","SELECTALL_TOGGLE_ALL_ATTRIBUTE_NAME","SelectionZone","ignoreNextFocus","_handleNextFocus","_onSelectionChange","_onMouseDownCapture","_hasAttribute","isToggleModifierPressed","_isCtrlPressed","_isMetaPressed","_getSelectionMode","_shouldHandleFocus","isToggle","itemRoot","_findItemRoot","_getItemIndex","_getItemSpan","enterModalOnTouch","_isTouch","_setIsTouch","isSelectedOnFocus","_onItemSurfaceClick","_updateModifiers","toggleWithoutModifierPressed","_isSelectionDisabled","_shouldAutoSelect","_isShiftPressed","_onInvokeMouseDown","disableAutoSelectOnInputElements","_onTouchStartCapture","enableTouchInvocationTarget","isSelectionDisabled","_onToggleAllClick","_onToggleClick","_onInvokeClick","_onContextMenu","onItemContextMenu","_onDoubleClick","onItemInvoked","_isInputElement","selectionClearedOnEscapePress","isSelectAllKey","isClearSelectionKey","_findScrollParentAndTryClearOnEmptyClick","_isTabPressed","_clearAndSelectIndex","scrollParent","_tryClearOnEmptyClick","selectionPreservedOnEmptyClick","_isNonHandledClick","selectionClearedOnSurfaceClick","indexValue","spanValue","handleFocus","_shouldHandleFocusTimeoutId","isTouch","_isTouchTimeoutId","listCell","beziers","dropIcon","iconTag","DelayedRender","isRendered","_timeoutId","SpinnerBase","ariaLive","labelPosition","statusMessage","styleSize","spinAnimation","Spinner","borderTopColor","GroupHeaderBase","_toggleCollapse","onToggleCollapse","isGroupLoading","newLoadingVisible","isLoadingVisible","onGroupHeaderKeyUp","shouldOpen","_onHeaderClick","onGroupHeaderClick","_onRenderTitle","onRenderName","_onRenderName","ariaColSpan","headerCount","groupLevel","viewport","loadingText","onRenderGroupHeaderCheckbox","isCollapsedGroupSelectVisible","expandButtonProps","expandButtonIcon","selectAllButtonProps","ariaLevel","ariaPosInSet","ariaRowIndex","onRenderTitle","canSelectGroup","isSelectionCheckVisible","currentlySelected","groupHeaderContainer","expandIsCollapsed","GroupHeader","finalRowHeight","checkExpandResetStyles","transitionDelay","adjustPropsForRootType","restProps","LinkBase","mergedRootRefs","isButton","isUnderlined","rootType","slots","slotProps","useLink","linkColor","linkInteractedColor","linkDisabledColor","focusBorderColor","GroupShowAll","showAllLinkText","onToggleSummarize","memoizedOnClick","GroupFooter","footerText","ScrollToMode","getScrollYPosition","scrollPos","scrollY","setScrollYPosition","scrollTo","scrollX","SPACER_KEY_PREFIX","EMPTY_RECT","_measurePageRect","_measureSurfaceRect","_measureScrollRect","_surface","_pageRefs","_getDerivedStateFromProps","renderCount","hasMounted","renderEarly","_resetRequiredWindows","_requiredRect","_measureVersion","_invalidatePageCache","_updatePages","_onRenderRoot","surfaceElement","_onRenderSurface","surfaceRef","pageElements","_onRenderPage","pageProps","onRenderCell","onRenderCellConditional","page","cellRole","itemKey","renderCell","ignoreScrollingState","isScrolling","pages","_estimatedPageHeight","_totalEstimates","_requiredWindowsAhead","_requiredWindowsBehind","_onAsyncScroll","_onAsyncIdle","_onAsyncResize","_onScrollingDone","_cachedPageHeights","_focusedIndex","_pageCache","scrollToIndex","measureItem","scrollToMode","_getRenderCount","allowedRect","_allowedRect","itemsPerPage","pageSpecification","_getPageSpecification","pageHeight","_scrollElement","scrollRect","scrollPosition","scrollWindow","itemPositionWithinPage","itemIndexInPage","scrollBottom","getStartItemIndexInView","pages_1","isSpacer","_scrollTop","totalRowHeight","_onScroll","finalProps","finalState","pagesVersion","getPageHeight","_updatePageMeasurements","_materializedRect","_hasCompletedFirstRender","onPagesUpdated","oldPages","newPages","oldPage","newPage","_updateRenderRects","getTotalListHeight","_surfaceRect","onRenderSurface","onRenderRoot","pages_2","_renderPage","finalOnRenderSurface","_shouldVirtualize","onShouldVirtualize","cachedPage","usePageCache","pageElement","pageStyle","_getPageStyle","onRenderPage","newRef","getPageStyle","indexString","innerRect","outerRect","renderedWindowsAhead","renderedWindowsBehind","requiredWindowsAhead","requiredWindowsBehind","windowsAhead","windowsBehind","newListState","_buildPages","oldListPages","_notifyPageChanges","onPageAdded","onPageRemoved","renderedIndexes","oldPages_1","newPages_1","_onPageAdded","_onPageRemoved","heightChanged","_measurePage","hasChangedHeight","cachedHeight","measureVersion","newClientRect","materializedRect","pageTop","currentSpacer","focusedIndex","shouldVirtualize","isFirstRender","this_1","pageData","newRect","pageBottom","isPageRendered","isPageInAllowedRange","isPageInRequiredRange","itemsInPage","_createPage","_visibleRect","visibleRect","getPageSpecification","_getItemCountForPage","_getPageHeight","visibileRect","getItemCountForPage","pageKey","surfaceRect","getScrollHeight","_scrollHeight","visibleTop","_expandRect","pagesBefore","pagesAfter","GroupedListSection","_subGroupRefs","_droppingClassName","_onRenderGroupHeader","_onRenderGroupShowAll","_onRenderGroupFooter","_renderSubGroup","subGroup","subGroupIndex","getGroupItemLimit","headerProps","showAllProps","footerProps","listProps","onRenderGroupHeader","onRenderGroupShowAll","onRenderGroupFooter","nestingDepth","showEmptyGroups","_getGroupKey","_getGroupDragDropOptions","isGroup","newIsDropping","groupedListClassNames","isShowAllVisible","isShowingAll","hasNestedGroups","dividerProps","ariaControlsProps","groupedListId","groupHeaderProps","groupShowAllProps","groupFooterProps","canDragGroups","_getDroppingClassName","_returnOne","_onRenderGroup","forceListUpdate","subGroupCount","pageRefs","_onRenderGroupCell","groupIsDropping","ROW_HEIGHT","COMPACT_ROW_HEIGHT","GroupedListBase","_renderGroup","onToggleSelectGroup","_onToggleSelectGroup","_onToggleCollapse","_onToggleSummarize","_getGroupNestingDepth","finalListProps","onRenderShowAll","onRenderFooter","_getDefaultGroupItemLimit","_getGroupItemLimit","_getGroupHeight","getGroupHeight","pageGroup","_updateIsSomeGroupExpanded","_isInnerZoneKeystroke","_isSomeGroupExpanded","_computeIsSomeGroupExpanded","listVersion","shouldForceUpdates","isAllGroupsCollapsed","_setGroupsCollapsedState","rootListProps","_forceListUpdates","toggleCollapseAll","allCollapsed","groupsInLevel","onGroupExpandStateChanged","newIsSomeGroupExpanded","isHeaderVisible","GroupedList","REACT_LIFECYCLE_EXCLUSIONS","BaseDecorator","_updateComposedComponentRef","composedComponentInstance","_composedComponentInstance","_hoisted","exclusions","hoisted","hoistMethods","getRect","withViewport","WithViewportComponent","_registerResizeObserver","_viewportResizeObserver","_unregisterResizeObserver","_updateViewport","withForceUpdate","viewportElement","_resizeAttempts","delayFirstMeasure","disableResizeObserver","skipViewportMeasures","_isResizeObserverAvailable","previousSkipViewportMeasures","newViewport","MIN_COLUMN_WIDTH","rowFocusZoneAddTabIndexProps","rowFocusZoneNoTabIndexProps","DetailsListInner","ariaLabelForListHeader","constrainMode","isPlaceholderData","layoutMode","onColumnHeaderClick","onColumnHeaderContextMenu","selectionZoneProps","ariaLabelForGrid","rowElementEventMap","shouldApplyApplicationRole","adjustedColumns","isSomeGroupExpanded","listRef","focusZoneRef","groupedListRef","headerRef","onRowDidMount","onRowWillUnmount","disableSelectionZone","onActiveRowChanged","onRenderMissingItem","checkButtonGroupAriaLabel","enterModalSelectionOnTouch","onRenderDefaultRow","selectionZoneRef","rowId","getGroupNestingDepth","groupedDetailsListIndexMap","indexMap","numGroupHeaders","groups_1","numOfGroupHeadersBeforeItem","totalRowCount","useGroupedDetailsListIndexMap","additionalListProps","defaultOnRenderDetailsHeader","detailsHeaderProps","defaultOnRenderDetailsFooter","propsOnRenderDetailsHeader","onRenderDetailsHeader","propsOnRenderDetailsFooter","onRenderDetailsFooter","detailsFooterProps","columnReorderOnDragEnd","finalDropLocation","outside","surface","remainingGroups","currentGroup","GetGroupCount","colCount","isFixed","fixedColumns","isHorizontalConstrained","horizontalConstrained","onRenderDetailsGroupFooter","finalOnRenderDetailsGroupFooter","onRenderDetailsGroupHeader","finalOnRenderDetailsGroupHeader","groupKey","ariaRowCount","finalGroupProps","sumColumnWidths","rowWidth","finalOnRenderRow","onRenderRow","rowProps","onRenderListCell","isRightArrow","focusZoneInnerProps","focusZone","FinalGroupedList","groupedListAs","onHeaderKeyDown","onContentKeyDown","headerWrapper","contentWrapper","DetailsListBase","_groupedList","_selectionZone","_onRenderRow","setKey","newViewportWidth","oldViewportWidth","shouldResetSelection","_initialFocusedIndex","initialFocusedIndex","focusedItemIndex","_adjustColumns","_onGroupExpandStateChanged","_onColumnIsSizingChanged","_onRowDidMount","_getItemKey","_activeRows","_setFocusToRowIfPending","_onRowWillUnmount","_onColumnResized","resizingColumn","resizingColumnIndex","newCalculatedWidth","onColumnResize","_rememberCalculatedWidth","_onColumnAutoResized","totalCount","_onActiveRowChanged","onActiveItemChanged","_columnOverrides","lastWidth","_getAdjustedColumns","focusIndex","_setFocusToRow","updateColumn","newColumnIndex","isCheckboxColumnHidden","_notifyColumnsResized","onDidUpdate","currentWidth","viewportWidth","newItems","newColumns","lastSelectionMode","canResizeColumns","sortedColumnKey","groupedColumnKey","firstItem","isCollapsible","clickable","buildColumns","_getFixedColumns","_getJustifiedColumns","_getColumnOverride","flexMargin","remainingWidth","sumProportionalWidth","getPaddedWidth","rowCheckWidth","groupExpandWidth","widthFraction","newColumn","shrinkWidth","baseColumn","overflowWidth","isCollapsable","originalWidth","isLast","overrides","spaceLeft","justified","paddingOnly","ShimmerElementType","ShimmerElementsDefaultHeights","DetailsList","WebkitOverflowScrolling","shimmerWrapper","shimmerGradient","dataWrapper","shimmerAnimation","shimmerAnimationRTL","topLeftCorner","topRightCorner","bottomLeftCorner","bottomRightCorner","ShimmerLine","globalClassNames","borderStyles","sharedCornerStyles","borderTopStyle","borderBottomStyle","ShimmerGap","ShimmerCircle","viewBox","getElementStyles","elementHeight","dif","borderBottomWidth","borderTopWidth","ShimmerElementsGroup","shimmerElements","shimmerElementsDefaulted","findMaxElementHeight","renderedElements","filteredElem","getRenderedElements","useSetTimeout","timeoutIds","_setTimeout","_clearTimeout","ShimmerBase","customElementsGroup","shimmerColors","isDataLoaded","improveCSSPerformance","transitionAnimationInterval","shimmerColor","shimmer","shimmerWaveColor","shimmerWave","internalState","lastTimeoutId","contentLoaded","setContentLoaded","divStyleProp","Shimmer","animationDirection","ShimmeredDetailsListBase","_onRenderShimmerPlaceholder","onRenderCustomPlaceholder","placeholderElements","_renderDefaultShimmerPlaceholder","gapHeight","shimmerElementsRow","columnIdx","groupWidth","_shimmerItems","shimmerLines","detailsListStyles","enableShimmer","removeFadingOverlay","ariaLabelForShimmer","listClassName","newListProps","ShimmeredDetailsList","backgroundImage","LabelBase","Label","labelFontWeight","labelDisabledColor","labelRequiredStarColor","__browserNeedsRevealButton","TextFieldBase","_textElement","isFocused","validateOnFocusIn","_validate","validateOnFocusOut","_onRenderLabel","htmlFor","_onRevealButtonClick","isRevealingPassword","_onInputChange","previousValue","_getValue","_lastChangeValue","_isControlled","uncontrolledValue","_fallbackId","_prefixId","_suffixId","_warnControlledUsage","_delayedValidate","deferredValidationTime","_lastValidation","_adjustInputHeight","validateOnLoad","snapshot","multiline","_shouldValidateAllChanges","borderless","inputClassName","underlined","resizable","autoAdjustHeight","canRevealPassword","revealPasswordAriaLabel","onRenderPrefix","_onRenderPrefix","onRenderSuffix","_onRenderSuffix","onRenderLabel","_errorMessage","isInvalid","hasRevealButton","isEdge","_browserNeedsRevealButton","focused","hasLabel","hasErrorMessage","hasIcon","fieldGroup","_renderTextArea","_renderInput","revealButton","revealSpan","revealIcon","_isDescriptionAvailable","_renderErrorMessage","setSelectionStart","setSelectionEnd","_hasWarnedNullValue","valueProp","textAreaProps","onInput","labelIds","updatedInputProps","onRenderInput","_latestValidateValue","onGetErrorMessage","currentValidation_1","_notifyAfterValidate","onNotifyValidationResult","textField","unresizable","getLabelStyles","TextField","fieldPrefixSuffix","placeholderStyles","disabledPlaceholderStyles","borderBottomColor","_s","_n","withSlots","slotType","isSlot","DefaultComponent","defaultProp","userProps","userSlotOptions","defaultStyles","flattenedUserProps","transformedProps","_translateShorthand","allProps","allProps_1","_constructFinalProps","UserComponent","defaultFactory","getSlots","mixedProps","slot","ComponentType","slotOptions","_renderSlot","_defaultStyles","createComponent","factoryOptions","ResultComponent","_getCustomizations","stateReducer","_resolveTokens","_resolveStyles","viewProps","statics","allTokens","allTokens_1","currentTokens","alignMap","_getThemedSpacing","_getValueUnitGap","numericalPart","numericalValue","numericalString","parsePadding","paddingValues","padding1","padding2","nameMap","StackItem","grow","disableShrink","verticalFill","alignSelf","_processStackChildren","enableScopedSelectors","childrenArray","childAsReactElement","defaultItemProps","childClassName","StackGlobalClassNames","stackChildren","Slots","childrenGap","rowGap","columnGap","splitGap","calculatedGap","parseGap","horizontalMargin","verticalMargin","childStyles","childSelector","disableShrinkStyles","StackItemGlobalClassNames","Item","primary","splitButtonStyles","primaryStyles","standardStyles","DefaultButton","PrimaryButton","Paginator","getPages","currentPage","totalPages","pageNumber","index2","mapState","onChangePage","Row","dataRole","ThemeContext","useTheme","Subtitle","DataTable","onSelectedRow","buildCommandBarFarItems","externalCommandBarFarItems","farItem","onChangePaginationLength","commandBarFarItems","refreshTable","allowSearch","allowSortColumns","commandBarItems","emptyImageUrl","errorLoading","errorLoadingMessage","isLoading","lastItem","initialOrderColumn","initialSortDirection","searchText","buildCommandBar","searchClassName","showTitle","showCommandBar","hideHeaders","showData","searchTooltip","_refreshTable","onDownloadServerData","hideRefreshButton","DataTableIcon","Grid","IoipIcons","_construct","Class","IconButton","OverlayBase","allowTouchBodyScroll","_allowTouchBodyScroll","disableBodyScroll","enableBodyScroll","isDark","isDarkThemed","rootDark","Overlay","useEventCallback","PanelType","disableFirstFocus","forceFocusInsideTrap","isClickableOutsideFocusTrap","FocusTrapZone","firstBumper","lastBumper","focusStackId","focusPreviouslyFocusedInnerElement","firstFocusableSelector","firstFocusableTarget","disableRestoreFocus","ignoreExternalFocusing","bumperProps","focusElementAsync","focusFTZ","previouslyFocusedElementInTrapZone","firstFocusableChild","focusSelector","focusBumper","isFirstBumper","nextFocusable","getFirstTabbable","returnFocusToInitiator","elementToFocusOnDismiss","focusStack","forceFocusOrClickInTrap","disposables","unmountRef","useUnmount","previouslyFocusedElement","PanelVisibilityState","DayOfWeek","MonthOfYear","FirstWeekOfYear","DateRangeType","PanelBase","_panel","_animationCallback","_hasCustomNavigation","onRenderNavigation","onRenderNavigationContent","isActive","_allowScrollOnPanel","elt","_previousClientY","allowScrollOnElement","_scrollableContent","_onRenderNavigation","hasCloseButton","_onRenderNavigationContent","navigation","closeButtonAriaLabel","_onRenderHeader","iconButtonStyles","closeButton","_headerTextId","_onPanelClick","headerTextId","headerText","headerTextProps","_onRenderBody","_onRenderFooter","onRenderFooterContent","footerInner","_animateTo","newVisibilityState","onOpen","_onTransitionComplete","_clearExistingAnimationTimer","_updateFooterPosition","onOpened","onDismissed","isFooterSticky","isOpen","animatingClosed","animatingOpen","_shouldListenForOuterClick","_dismissOnOuterClick","shouldListenOnOuterClick","previousShouldListenOnOuterClick","focusTrapZoneProps","isBlocking","isFooterAtBottom","isLightDismiss","isHiddenOnDismiss","overlayProps","customWidth","onLightDismissClick","onRenderBody","smallFixedNear","customNear","isOnRightSide","customWidthStyles","isAnimating","focusTrapZoneClassName","hasCustomNavigation","overlay","hiddenPanel","contentInner","scrollableContent","commands","innerHeight_1","panel","onOuterClick","smallFixedFar","smallFluid","largeFixed","extraLarge","panelWidth","panelMargin","smallPanelSelectors","mediumPanelSelectors","largePanelSelectors","largeFixedPanelSelectors","extraLargePanelSelectors","getPanelBreakpoints","sharedPaddingStyles","Panel","isCustomPanel","hyphens","FORMAT_ARGS_REGEX","FORMAT_REGEX","DEFAULT_DATE_FORMATTING","formatDay","formatMonth","strings","formatYear","formatMonthDayYear","formatMonthYear","DEFAULT_CALENDAR_STRINGS","goToToday","weekNumberFormatString","prevMonthAriaLabel","nextMonthAriaLabel","prevYearAriaLabel","nextYearAriaLabel","prevYearRangeAriaLabel","nextYearRangeAriaLabel","selectedDateFormatString","todayDateFormatString","monthPickerHeaderAriaLabel","yearPickerHeaderAriaLabel","dayMarkedAriaLabel","TimeConstants","MillisecondsInOneDay","MillisecondsIn1Sec","MillisecondsIn1Min","MillisecondsIn30Mins","MillisecondsIn1Hour","MinutesInOneDay","MinutesInOneHour","DaysInOneWeek","MonthInOneYear","HoursInOneDay","SecondsInOneMinute","OffsetTo24HourFormat","TimeFormatRegex","addDays","addWeeks","addMonths","newMonth","addYears","getMonthStart","getMonthEnd","compareDates","date1","date2","compareDatePart","getDatePartHashValue","getDateRangeArray","dateRangeType","workWeekDays","daysToSelectInDayView","startDate","datesArray","endDate","Monday","Tuesday","Wednesday","Thursday","Friday","Day","getDatePart","Week","WorkWeek","daysOffset","getStartDateOfWeek","Month","nextDate","isInDateRangeArray","dateRange","dateRange_1","getWeekNumbersInMonth","weeksInMonth","firstWeekOfYear","navigatedDate","selectedYear","selectedMonth","fistDayOfMonth","endOfFirstWeek","dateWeekDay","Sunday","adjustWeekDay","endOfWeekRange","weeksArray","getWeekNumber","FirstFullWeek","getWeekOfYearFullDays","FirstFourDayWeek","getDayOfYear","num2","num3","getFirstDayWeekOfYear","numberOfFullDays","December","daysUntilDate","getDateRangeTypeToUse","isSingleWeek","daySet","amountOfNoNeighbors","days_1","isContiguous","getBoundedDateRange","boundedDateRange","isBeforeMinDate","isAfterMaxDate","isRestrictedDate","restrictedDates","CalendarMonthHeaderRow","showWeekNumbers","allFocusable","weeksToShow","dayLabels","firstOfMonthIndex","originalDate","dayCell","weekDayLabelCell","findAvailableDate","targetDate","initialDate","restrictedDateOptions","availableDate","CalendarGridDayCell","dateTimeFormatter","activeDescendantId","navigatedDayRef","calculateRoundedStyles","dayIndex","weekIndex","weekCorners","customDayCellRef","onSelectDate","onNavigateDate","getDayInfosInRangeOfDay","getRefsFromDayInfos","cornerStyle","isNavigatedDate","isMarked","daySelected","isInBounds","dayOutsideBounds","isInMonth","dayOutsideNavigatedMonth","onSelected","onMouseOver","dayInfos","dayRefs","dayRef","bottomLeftCornerDate","bottomRightCornerDate","topLeftCornerDate","topRightCornerDate","classNamesToAdd","onMouseOut","findAvailableDateOptions","dayToCompare","navigateMonthEdge","isToday","dayButton","dayIsToday","dayMarker","CalendarGridRow","rowClassName","ariaRole","weekNumbers","titleString","weekNumberCell","useWeeks","getSetRefCallback","weeksGrid","selectedDate","markedDays","todaysDate","isAllDaysOfWeekOutOfMonth","selectedDateRangeType","selectedDates","shouldGetWeeks","dayInfo","markedDay","getDayGrid","firstVisibleDay","lastVisibleDay","getMarkedDays","AnimationDirection","CalendarDayGridBase","daysRef","dayKey","useDayRefs","restrictedDatesOptions","animateBackwards","previousNavigatedDate","useAnimateBackwards","above","below","roundedTopRight","roundedBottomLeft","roundedBottomRight","calculateBorderStyles","datesAbove","datesBelow","datesRight","datesLeft","isInSameHoverRange","date1Selected","date2Selected","initialWeeks","weekCornersStyled","useWeekCornerStyles","getWeekCornerStyles","labelledBy","lightenDaysOutsideNavigatedMonth","partialWeekProps","dateRangeHoverType","sortedWWDays","dayInfosInRange","accumulatedValue","currentWeek","weekDay","firstTransitionWeek","weekRow","lastTransitionWeek","hoverStyle","pressedStyle","dayIsTodayStyle","daySelectedStyle","transitionRowDisappearance","CalendarDayGrid","rowAnimationStyle","Horizontal","firstTransitionRowAnimationStyle","lastTransitionRowAnimationStyle","disabledStyle","borderCollapse","borderSpacing","tableLayout","borderTopLeftRadius","borderBottomLeftRadius","CalendarDayBase","dayGrid","onHeaderSelect","showSixWeeksByDefault","monthAndYearId","headerIsClickable","monthAndYear","HeaderButtonComponentType","headerAriaLabel","onButtonKeyDown","CalendarDayNavigationButtons","navigationIcons","showCloseButton","onSelectNextMonth","onSelectPrevMonth","leftNavigationIcon","leftNavigation","rightNavigationIcon","rightNavigation","closeNavigationIcon","closeIcon","prevMonthInBounds","nextMonthInBounds","monthComponents","headerIconButton","CalendarDay","hasHeaderClickCallback","highlightCurrent","highlightSelected","animationStyle","headerAnimationStyle","headerContainer","currentItemButton","navigationButtonsContainer","navigationButton","gridContainer","buttonRow","itemButton","getPickerStyles","defaultCalendarStrings","defaultCalendarNavigationIcons","CELL_COUNT","DefaultCalendarYearStrings","prevRangeAriaLabel","nextRangeAriaLabel","CalendarYearGridCell","highlightCurrentYear","highlightSelectedYear","onSelectYear","onRenderYear","buttonRef","CalendarYearNavDirection","CalendarYearGrid","fromYear","toYear","selectedCellRef","currentCellRef","yearToRender","gridAriaLabel","cellRow","CalendarYearNavArrow","onSelectPrev","onSelectNext","Previous","newRangeOffset","ariaLabelString","onNavigate","isLeftNavigation","Next","CalendarYearNav","CalendarYearTitle","rangeAriaLabel","headerAriaLabelFormatString","currentDateRange","NavigationDirection","CalendarYearHeader","CalendarYearBase","navigatedYear","rangeYear","previousFromYear","navigate","useYearRangeState","onNavNext","onNavPrevious","gridRef","CalendarYear","yearPickerHidden","CalendarMonthBase","navigatedMonthRef","calendarYearRef","focusOnUpdate","useFocusLogic","focusOnNextUpdate","isYearPickerVisible","setIsYearPickerVisible","previousYear","highlightCurrentMonth","highlightSelectedMonth","selectMonthCallback","onSelectMonth","onSelectNextYear","onSelectPrevYear","isPrevYearInBounds","isNextYearInBounds","getYearEnd","yearToString","yearFormattingDate","yearRangeToString","yearRange","yearRangeToNextDecadeLabel","yearRangeToPrevDecadeLabel","getYearStrings","yearStrings","newNavigationDate","rowIndexes","yearString","rowNum","monthsForRow","monthIndex","indexedMonth","isNavigatedMonth","isSelectedMonth","isSelectedYear","isCurrentMonth","CalendarMonth","useControllableValue","controlledValue","defaultUncontrolledValue","isControlled","valueRef","onChangeRef","setValueOrCallOnChange","MIN_SIZE_FORCE_OVERLAY","defaultWorkWeekDays","isMonthPickerVisible","isDayPickerVisible","showMonthPickerAsOverlay","showGoToToday","FirstDay","CalendarBase","setSelectedDate","navigatedDay","setNavigatedDay","navigatedMonth","setNavigatedMonth","lastSelectedDate","setLastSelectedDate","selectedDateRangeArray","useDateState","onDateSelected","navigateDay","navigateMonth","getShowMonthPickerAsOverlay","setIsMonthPickerVisible","setIsDayPickerVisible","useVisibilityState","toggleDayMonthPickerVisibility","dayPicker","monthPicker","renderGoToTodayButton","goTodayEnabled","goTodayButton","onGotoToday","calendarDayProps","calendarMonthProps","monthPickerOnly","overlaidWithButton","overlayedWithButton","todayDateString","selectedDateString","selectionAndTodayString","liveRegion","focusOnNavigatedDay","monthPickerWrapper","Calendar","defaultDatePickerStrings","isRequiredErrorMessage","invalidInputErrorMessage","isResetStatusMessage","allowTextInput","parseDateFromString","dateStr","initialPickerDate","pickerAriaLabel","DatePickerBase","calendarProps","textFieldProps","calendarAs","CalendarType","disableAutoFocus","calloutId","datePickerDiv","textFieldRef","preventFocusOpeningPicker","preventNextFocusOpeningPicker","isCalendarShown","setIsCalendarShown","useCalendarVisibility","setSelectedDateState","formattedDate","setFormattedDate","newDate","useSelectedDate","setErrorMessage","setStatusMessage","isFirstLoadRef","isDateOutOfBounds","isOutOfBoundsErrorMessage","selectedText","statusText","useErrorMessage","validateTextInput","showDatePickerPopup","dismissDatePickerPopup","newlySelectedDate","calendarDismissed","handleEscKey","isDatePickerShown","textFieldId","openOnClick","readOnlyTextField","readOnlyPlaceholder","shouldFocus","withLabel","withoutLabel","DatePicker","DatePickerIcon","TEXTFIELD_HEIGHT","_wrapNativeSuper","Wrapper","_Exception_message","_Exception_innerException","Exception","_Error","innerException","ArgumentNullException","_Exception","argumentName","InvalidArgumentTypeException","expectedType","DateTime","ToString","DatePickerStrings","onFormatDate","XDatePicker","ToJsDate","SELECTION_BACKWARD","Autofill","_inputElement","_autoFillEnabled","_onCompositionStart","isComposing","_onCompositionUpdate","_updateValue","_getCurrentInputValue","_onCompositionEnd","_tryEnableAutofill","suggestedDisplayValue","enableAutofillOnKeyPress","_onInputChanged","nativeEventComposing","_onChanged","composing","onInputChange","onInputValueChange","defaultVisibleValue","updateValueInWillReceiveProps","updatedInputValue","inputElement","selectionDirection","_getControlledValue","_1","shouldSelectFullInputValueInComponentDidUpdate","differenceIndex","preventValueSelection","_doesTextStartWith","shouldSelectFullRange","autoCapitalize","autoComplete","_getDisplayValue","onCompositionStart","onCompositionUpdate","onCompositionEnd","inel","isComposed","displayValue","startWith","CheckboxBase","checkmarkIconProps","boxSide","inputRef","setIsChecked","indeterminate","defaultIndeterminate","isIndeterminate","setIsIndeterminate","isUsingCustomLabelRender","defaultLabelRenderer","setNativeIndeterminate","setIndeterminate","checkBoxRef","ariaChecked","mergedInputProps","checkbox","checkmark","SelectableOptionMenuItemType","MS_CHECKBOX_LABEL_SIZE","MS_CHECKBOX_TRANSITION_DURATION","MS_CHECKBOX_TRANSITION_TIMING","Checkbox","checkmarkFontColor","checkmarkFontColorHovered","checkboxBorderColor","checkboxBorderIndeterminateColor","checkboxBorderColorChecked","checkboxBorderColorDisabled","checkboxBorderHoveredColor","checkboxBorderIndeterminateHoveredColor","checkboxBackgroundChecked","checkboxBackgroundCheckedHovered","checkboxBorderColorCheckedHovered","checkboxHoveredTextColor","checkboxBackgroundDisabledChecked","checkboxTextColor","checkboxTextColorDisabled","indeterminateDotStyles","transitionProperty","transitionDuration","transitionTimingFunction","outlineOffset","getDisabledStyles","listOptionHighContrastStyles","inputHighContrastStyles","getOptionStyles","customStylesForAllOptions","customOptionStylesForCurrentOption","isPending","textHoveredColor","textSelectedColor","textDisabledColor","backgroundHoveredColor","backgroundPressedColor","optionText","optionTextWrapper","getCaretDownButtonStyles","caret","buttonTextColor","buttonTextHoveredCheckedColor","buttonBackgroundHoveredColor","buttonBackgroundCheckedColor","buttonBackgroundCheckedHoveredColor","buttonHighContrastStyles","comboBoxOptionWidth","borderHoveredColor","borderPressedColor","borderFocusedColor","erroredColor","headerTextColor","dividerBorderColor","placeholderHighContrastStyles","placeholderStylesHovered","ComboBoxRootHighContrastFocused","focusBorderStyles","rootError","rootDisallowFreeForm","inputDisabled","optionsContainerWrapper","optionsContainer","allowFreeForm","getComboBoxOptionClassNames","getAllSelectedOptions","selectedIndices","selectedOptions","selectedIndices_1","SearchDirection","HoverStatus","ActionButton","CommandButton","ComboBoxOptionWrapper","oldProps","allowFreeform","buttonIconProps","useOptionsState","defaultSelectedKey","selectedKey","selectedKeys","buildSelectedKeys","buildDefaultSelectedKeys","setSelectedIndices","currentOptions","setCurrentOptions","setSuggestedDisplayValue","ComboBox","ComboBoxInternal","findFirstDescendant","allowVirtualChildren","getChildren","candidate","_autofill","_comboBoxWrapper","_comboBoxMenu","_selectedElement","shouldOpenOnFocus","useFocusAsync","_hasFocus","focusState","_onUpdateValueInAutofillWillReceiveProps","comboBox","normalizeToString","_currentVisibleValue","_renderComboBoxWrapper","multiselectAccessibleText","errorMessageId","isButtonAriaHidden","placeholderProp","autofill","iconButtonProps","ariaActiveDescendantValue","multiSelect","labelProps","_onInputKeyDown","_onInputKeyUp","_onAutofillClick","_getAriaAutoCompleteValue","spellCheck","_onShouldSelectFullInputValueInAutofillComponentDidUpdate","_getCaretButtonStyles","_onComboBoxClick","_getVisibleValue","allowFreeInput","currentPendingValueValidIndex","currentPendingValue","currentPendingIndexValid","indexWithinBounds","_getPendingString","_getMultiselectDisplayString","_getFirstSelectedIndex","getPreviewText","updatedValue","_handleInputWhenDisabled","_processInputChangeWithFreeform","_processInputChangeWithoutFreeform","_onResolveOptions","onResolveOptions","newOptions_1","_currentPromise","newOptionsFromPromise","isBlurFromComboBoxTitle","isBlurFromComboBoxMenu","isBlurFromComboBoxMenuAncestor","_submitPendingValue","_onRenderContainer","onRenderList","dropdownWidth","dropdownMaxWidth","onRenderUpperContent","_onRenderUpperContent","onRenderLowerContent","_onRenderLowerContent","useComboBoxAsMenuWidth","comboBoxMenuWidth","_onLayerMounted","_onDismiss","_onCalloutMouseDown","_onRenderList","_onCalloutLayerMounted","_scrollIntoView","onRenderLabelProps","renderedList","emptyQueue","newGroup","placeRenderedOptionIntoQueue","_renderSeparator","_renderHeader","_renderOption","onRenderOption","_onRenderOptionContent","_isOptionSelected","_isOptionChecked","_isOptionIndeterminate","optionStyles","_getCurrentOptionStyles","optionClassNames","_renderCheckboxLabel","_onOptionMouseEnter","_onOptionMouseMove","_onOptionMouseLeave","_isScrollIdle","_scrollIdleTimeoutId","_onRenderMultiselectOptionContent","onMenuDismiss","_setOpenStateAndFocusOnClose","_resetSelectedIndex","_onAfterClearPendingInfo","_processingClearPendingInfo","currentPendingValueValidIndexOnHover","_lastKeyDownWasAltOrMeta","_getPendingSelectedIndex","clearAll","_setPendingInfoFromIndexAndDirection","backward","forward","directionToSearch","openOnKeyboardFocus","_shouldIgnoreMouseEvent","_gotMouseMove","onMenuOpen","_focusInputAfterClose","_notifyPendingValueChanged","newCurrentPendingValueValidIndex","_updateAutocompleteIndexWithoutFreeform","descendantText","onRenderContainer","comboBoxWrapper","displayValues","SelectAll","multiSelectDelimiter","isNormalOption","_setPendingInfo","originalUpdatedValue","newSuggestedDisplayValue","_autoCompleteTimeout","matchingIndex","_setPendingInfoFromIndex","_getNextSelectableIndex","searchDirection","isSelectableOption","_setSelectedIndex","submitPendingValueEvent","onPendingValueChanged","initialIndices","changedOptions","currentOption","selectAllOption","selectAllState","_isSelectAllChecked","selectAllIndex_1","_hasPendingValue","_clearPendingInfo","pendingOptionText","isValueSelected","newOption","_isOptionHighlighted","testIndices","selectAllIndex","compareSelectedIndices","selectableOptions","includeCurrentPendingValue","onScrollToItem","scrollSelectedToTop","currentPendingSelectedIndex","scrollToElement","alignToTop","offsetTop","parentOffsetHeight","isBelow","scrollIntoView","selectedIndex","indexUpdate","newPendingIndex","newPendingValue","focusInputAfterClose","customCaretDownButtonStyles","caretDownButtonStyles","comboBoxOptionStyles","customStylesForCurrentOption","_isPendingOption","selectedKeys_1","useAriaLabelAsText","XComboBox","readonly","TeachingBubbleContentBase","imageContent","headerContent","bodyContent","footerContent","rootElementRef","documentRef","ariaDescribedById","ariaLabelledById","illustrationImage","primaryButtonProps","secondaryButtonProps","headline","hasCondensedHeadline","hasCloseIcon","hasSmallHeadline","isWide","customFooterContent","hasHeadline","primaryButtonClassName","secondaryButtonClassName","HeaderWrapperAs","BodyContentWrapperAs","primaryButton","secondaryButton","headerIsCondensed","headerIsSmall","headerIsLarge","buttonLabel","opacityFadeIn","headerStyle","hasLargeHeadline","hideDefaultFocusRing","TeachingBubbleContent","defaultCalloutProps","TeachingBubbleBase","setCalloutProps","calloutStyles","CaseType","TeachingBubble","XTextField","showHelp","setShowHelp","caseType","upperCase","help","EmptyColumn","i18nInstance","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","ReportNamespaces","usedNamespaces","namespaces","getI18n","alreadyWarned","warnOnce","loadNamespaces","i18n","isInitialized","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","defaultNS","reportNamespaces","notReadyT","retNotReady","react","i18nOptions","keyPrefix","addUsedNamespaces","initializedStoreOnce","languages","lng","fallbackLng","lastLng","loadNotPending","services","backendConnector","backend","isLanguageChangingTo","hasResourceBundle","hasLoadedNamespace","getT","getFixedT","nsMode","setT","boundReset","isInitial","StandarPanel","showAcceptButton","hideAcceptButton","acceptButtonText","onAccept","closeButtonText","onClose","StandarDataTableItem","setErrors","panelType","onValidate","onChanged","rowSymbol","StandarDataTable","dtRef","setCommandBarItems","setSelectedItems","selectedItem","tableTitle","titleClassName","setPartial","setModel","onRenderItemPanel","panelTitle","onValidateItem","colLg","colMd","colSm","_len5","_key5","combobox","__props__","datatable","rowKey","defaultButton","_len6","_key6","promiseAll","promises","datePicker","FunctionHost","setIsLoading","variables","variableNames","variableValues","createFunction","FunctionHostInternal","Page","ROOT_STYLES","HEADER_STYLE","BODY_STYLE","FOOTER_STYLES","SearchableComboBox","newGuid","setSearch","fluentOptions","setFluentOptions","cbxOptions","keyBinding","onRenderSelectedText","filteredItems","onFilter","nSearch","defaultItem","filterOptions","txt","gridTemplateRows","isBlazorPlatform","createInstance","classFunction","arrayParam","unbind","combineArray","messageHandler","nameSpace","splits","fromObj","deleteObject","containerObject","getEnumValue","enumObject","enumValue","temrObj","tempProp","copied","deep","_loop_1","arguments_1","obj1","isArrayChanged","blazorEventExtend","isBlazor","getUniqueID","definedName","eventFunction","compareElementParent","throwError","print","printWindow","blinks","formatUnit","getElement","xPath","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","inst","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","getNumberingSystem","numberingSystems","reverseObject","propKeys_1","getSymbolRegex","regexStr","getSymbolMatch","matchKeys_1","constructRegex","convertValueParts","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","digits","numericPair","regExp","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","dateCorrection","getHijriDate","gDate","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","cyc","iy","im","tempDay","iln","hYear","hmonth","hDate","julianDate","gDay","gMonth","gYear","abbreviateRegexGlobal","weekdayKey","timeSetter","datePartMatcher","culture","cldr","dependable","getDependables","numObject","dateObject","formatOptions","isIslamic","islamicRegex","isServerRendered","compareBlazorDateFormats","resPattern","getResultantPattern","skeleton","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","numMapper","parserObject","patternMatch_1","designator","eText","intDateFormatter","dateParseRegex","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","curlength","desig","dec","retu","timezone","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","curPattern","no","ishour","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","getCurrencySymbol","currency","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","formatRegex","customFormat","getProperNumericSkeleton","isCurrency","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","useGrouping","defaultCurrency","nData","pData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minimumFraction","mval","maximumFraction","mfrac","lfrac","intNumberFormatter","negativeDataRegex","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","isCustomFormat","customPivotFormat","groupNumbers","nlead","nend","level1","sep","decimalSymbol","level2","flag","lead","latnRegex","DateParser","dateParser","numOptions","parseOptions","hourOnly","regexString","evalposition","patternMatch","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","weekData","weekObject","monthData","hour12","periodValur","tzone","hpattern","parseTimeZoneRegx","parserRegex","internalDateParse","dobj","tDate","ystrig","is2DigitYear","getDateObject","setMilliseconds","tKeys_1","tValue","pDate","lDate","setHours","tzValue","setMinutes","retOptions","props_1","curObject","matchString","internalNumberParser","tmatch","getZoneValue","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","symbolpattern","symbolRegex","getParsedNumber","tempValue","convertMaxFracDigits","decimalSplitValue","Observer","ranArray","boundedEvents","cntxt","notExist","isHandlerPresent","indexLocation","argument","successHandler","blazorCallback","curObject_1","objs","isTrigger","obj_1","isJson","dateReviver","offIntlEvents","eventsArr","curContext","detectFunction","boundedEvents_1","onIntlChange","cldrData","defaultCulture","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","getDatePattern","isExcelFormat","IntlBase","getActualDateTimeFormat","getNumberPattern","isExcel","getActualNumberFormat","getFirstDayOfWeek","getWeekData","getNumericObject","numSystem","symbPattern","getDefaultDateObject","blazorCultureFormats","customRegex","fractionRegex","patternRegex","dateConverterMapper","firstDayMapper","currencyFormatRegex","curWithoutNumberRegex","typeMapper","blazorCulture","iType","basicPatterns","dPattern","tPattern","calendartype","blazorDefaultObject","defaultObject","convertMapper","tempString","curFormatMapper","patternMatcher","needFraction","cSymbol","fractionOnly","changeCurrencySymbol","groupPattern","fmatch","currencyCode","customNumberFormat","integerPart","spaceCapture","spaceGrouping","fractionPart","isCurrencyPercent","fractionDigitsPattern","minDigits","maxDigits","minimumIntegerPattern","groupingPattern","formatSplit","dateObj","actualPattern","tLength","timeZonePattern","options_1","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","cPattern","processSymbol","firstDay","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","nday","headerRegex","Ajax","emitError","httpRequest","stateChange","onprogress","onAbort","onabort","onUploadProgress","upload","setRequestHeader","beforeSend","onSuccess","failureHandler","onFailure","dataType","readyState","getResponseHeader","responseHeaders","getAllResponseHeaders","Fetch","isNOU","contentTypes","fetchRequest","Request","triggerEvent","fetchResponse","returnVal","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","Browser","extractBrowserDetail","browserInfo","getEvent","isPointer","isDevice","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","isIos","regX","maxTouchPoints","uA","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","bindTo","intDebounce","debounceListener","eventData","clearEvents","copyData","parseValue","trigger","eventProp","eventData_1","SVG_REG","getClassList","ele","classList_1","curClass","classList_2","classArr","fromElements","isEval","docFrag","createDocumentFragment","executeScript","NodeList","script","detach","iKey","needsVDOM","querySelectId","selectAll","charRegex","idList","splitId","setId","closest","setStyleAttribute","addClasses","removeClasses","proxyToRaw","isColEName","Base","isComplexArraySetter","allowServerDataBinding","isProtectedOnChange","changedProperties","oldProperties","bulkChanges","refreshing","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","setProperties","isDestroyed","muteOnChange","prevDetection","dataBind","serverDataBind","callChildDataBind","clearChanges","newChanges","oldChanges","onPropertyChanged","sfBlazor","updateModel","saveChanges","moduleClass","getModuleName","ej2_instances","getComponent","comp","getObject","curKey","getObjectArray","isSetter","isFactory","curType","propertyGetter","propertySetter","oldVal","complexGetter","complexSetter","complexArrayGetter","defCollection","ignore","controlParent","extendFunc","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","getParentKey","newValueParse","model_1","getArrayModel","ejsAction","isControlParent","arrayFunction","modelObject","Property","propertyDescriptor","addPropertyCollection","Complex","Collection","eventDescriptor","finalContext","getParentContext","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","curText","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","getModel","elements_1","element_1","delayAnimation","animationId","frameId","animationMode","GlobalAnimationMode","Disable","begin","applyAnimation","timerId","prevTimeStamp","startAnimation","avg","timingFunction","progress","newProp","oldProp","rippleEffect","rippleOptions","rippleModel","rippleFlag","isCenterRipple","getRippleModel","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","diameter","rippleElement","removeRipple","rippleElements","accountURL","ModuleLoader","loadedModules","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","modules","getNonInjectedModules","usedModules","removableModule_1","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","curIndex","restrictServerDataBind","isSaveChanges","parentKey","complexKeys","isFinal","valueLength","componentList","bypassKey","LicenseValidator","isValidated","isLicensed","noLicense","trailExpired","versionMismatched","platformMismatched","invalidKey","licKey","npxManager","convertToChar","validateMsg","validateURL","getInfoFromKey","result_1","invalidPlatform","expiryDate","expDate","currDate","licenseContent","errorDiv","getDecryptedData","pkey","decryptedStr","resultArray","isNpxKey","licKeySplit","licKeySplit_1","lKey","decodeStr","buffr","decryptedKey","licenseValidator","cArr","cArr_1","registerLicense","lastPageID","componentCount","lastHistoryLen","instancecount","isvalid","isBannerAdded","versionBasedStatePersistence","isStringTemplate","needsID","isReactHybrid","enableRtl","moduleLoader","localObserver","validateLicense","enablePersistence","setPersistData","detachUnloadEvent","refresh","preRender","injectModules","accessMount","getRootElement","getLocalData","eleId","ej2StatePersistenceVersion","attachUnloadEvent","handleUnload","mergePersistData","ignoredComponents","schedule","diagram","PdfViewer","richtexteditor","treegrid","gantt","accumulationchart","modulesRequired","moduleName","bannerTemplate","createLicenseOverlay","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","currentContext","calls","getPersistData","renderReactTemplates","clearTemplate","templateName","isHistoryChanged","pageID","addOnPersist","persistObj","getActualProperties","ignoreOnPersist","iterateJsonProperties","ignoreList","newObj","newList","defaultPosition","isDraggedObject","isDragged","Draggable","dragLimit","Draggable_1","getDefaultPosition","diffX","prevLeft","prevTop","dragProcessStarted","eleTop","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","isUnWire","enableTapHold","mobileInitialize","removeTapholdTimer","tapHoldThreshold","getScrollableParent","tempScrollHeight","tempScrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abortSelectors","intCoord","initialPosition","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","getMousePosition","isDragScroll","getHelperElement","dragTargetElement","helperElement","parentClientRect","dragStart","getProperTargetElement","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","enableScrollHandler","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","queryPositionInfo","docHeight","getDocumentWidthHeight","docWidth","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","helper","tLeft","tTop","pagex","pagey","dLeft","dTop","enableAutoScroll","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","isDialogEle","tempDraEleTop","dragValue","getPathElements","getScrollParent","getScrollPosition","hasScroll","nodeEl","scrollingElement","nodeEle","docScrollTop","helperClientHeight","elementTop","elementLeft","elementsFromPoint","intOut","docBody","docEle","dragStop","dragStopCalled","intDrop","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","elementFromPoint","oldEle","isdragscroll","dragEle","isOffsetParent","isVerticalScroll","cursorAt","sender","draggedElement","dropIns","getDropInstance","drop","eleInst","eleInst_1","Droppable","mouseOver","wireEvents","accept","isDrag","isDropArea","droppedElement","coord","KeyboardEvents","keyPressHandler","isAltKey","isCtrlKey","isShiftKey","curkeyCode","keyConfigs","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","configCache","keyData","getKeyCode","keyVal","L10n","controlName","localeStrings","intLocale","intGetControlConstant","currentLocale","localeObject","getConstant","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","startEvents","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","endPoint","calcPoints","swipeArgs","swipeDirection","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","eTapArgs","pnt","newT","xDist","yDist","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","ignorePrefix","argName","evalExpResult","varCOunt","localKeys","isClass","singleSpace","insideBraces","outputString","cnt","matchStr","SPECIAL_CHAR","rlStr","addNameSpace","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","splRegexp","arrObj","SlashReplace","NameSpaceForspecialChar","evalExp","addNS","tempStr","nameSpaceNew","quotes","NameSpaceArrObj","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","templateString","compiler","engineObj","templateId","blazorTemplateId","blazorId","updateBlazorTemplate","callBack","updateTemplate","resetBlazorTemplate","templateDiv","innerTemplates","tempId","tempElement","initializeCSPTemplate","boundFunc","CSPTemplate","Engine","removeTags","removeAttrs","jsEvents","SanitizeHtmlHelper","beforeSanitize","sanitize","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","nodes","localName","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","RTL","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","Splitter","setSplitterSize","setCssClass","setReversePane","setSeparatorSize","separatorSize","changeOrientation","paneSettings","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","paneCounts","isPaneContentChanged","isReact","cPaneCount","changedPropsCount","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsedOnchange","newValSize","updatePaneSize","staticPaneWidth","flexPaneIndexes","flexCount","avgDiffWidth","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","onReportWindowSize","reportWindowSize","onMouseMoveHandler","onMouseUpHandler","onTouchMoveHandler","onTouchEndHandler","wrapperParent","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","onDocumentClick","onMove","currentSeparator","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","convertPercentageToPixel","getMinInPixel","nextPaneIndex","prevPaneIndex","addStaticPaneClass","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","triggerResizing","collapsible","collapse","paneMinRange","convertPixelToNumber","sanitizeHelper","enableHtmlSanitizer","api","removeDataPrefix","paneIndex","dataAttr","paneAPI","restoreElem","childCount","paneCollection","paneValue","checkArrow","targetArrow","hideResizer","showResizer","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","updateIsCollapsed","lastBarArrow","lastBarIndex","targetArrows","beforeAction","beforeCollapseArgs","collapsedindex","collapseEventArgs","afterAction","splitterProperty","sizeValue","splitBar","resizeBar","checkSplitPane","currentBar","elementIndex","collectPanes","getPrevPane","getOrderPane","getNextPane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","updateIconClass","leftArrow","rightArrow","createSeparator","addMouseActions","getPaneDetails","clonedEle","wireClickEvents","allBar","sepSize","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","updateCursorPosition","changeCoordinates","coordinates","paneCount","updateSplitterSize","iswindowResize","updatePane","flexPane","sizeDiff","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","unwireResizeEvents","clickHandler","hoverBars","splitterDetails","expandAction","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","removeStaticPanes","collapseCount","flexStatus","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","otherPrevPaneIndex","otherNextPaneIndex","collapsecount","getCollapseCount","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","showCurrentBarIcons","checkResizableProp","showIcon","getPrevBar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","resizeStartArgs","removePercentageUnit","convertedValue","percentage","offsetValue","calcDragPosition","rectValue","getSeparatorPosition","rectBound","offSet","getMinMax","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","calculateCurrentDimensions","flexPaneCount","allFlexiblePanes","middlePaneIndex","isStaticPanes","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","draggedPos","prevPaneHeightWidth","separatorTopLeft","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","panesDimension","sizeFlag","templateCompile","tempEle","compileElement","childEle","templateFn","templateFUN","eleVal","removeProperty","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","removePane","elementClass","defaulthtmlkeys","delayUpdate","ComponentBase","mountingState","attrKeys","cachedTimeOut","isAppendCalled","initRenderCalled","isReactForeceUpdate","isshouldComponentUpdateCalled","isCreated","refreshChild","canDelayUpdate","renderReactComponent","portals","updateProperties","reactElement","dProps","statelessTemplates","propkey","isClassName","htmlattributes","compareValues","clsName","propsClsName","dpropsClsName","refreshProperties","processComplexTemplate","compTemplate","complexTemplate","PropVal","getDefaultAttributes","propKeys","ignoreProps","controlAttributes","reactUid","clsList","syntheticEvent","value1","value2","tempVal","tempVal2","compareObjects","lenSimilarity","diffArray","templateProps","checkInjectedModules","prevModule","curModule_1","getInjectedServices","directivekeys","changedProps","directiveValue","validateChildren","skipRefresh","prevProperties","dKeys","compareOutput","_c1","allColumns","propInstance","changedProps_1","changes","hasModule","appendReactElement","portal","templateNames","tempPortal","propIndexCount","childCache","childs_1","ifield","getChildType","childProps","getChildProps","isDirective","subChild","subChild_1","accessProp","cacheVal","cachedValue","childs_2","isService","applyMixins","derivedClass","baseClass","classObj","ComplexBase","stringCompiler","cEle","actTemplate","actData","rele","SplitterComponent","statelessTemplateProps","immediateRender","PaneDirective","PanesDirective","ReactReduxContext","getBatch","nullListeners","createSubscription","parentSub","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","isSubscribed","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","contextValue","getState","useReduxContext","createStoreHook","useDefaultReduxContext","useStore","createDispatchHook","useDefaultStore","useDispatch","refEquality","createSelectorHook","equalityFn","_useReduxContext","selectedState","contextSub","_useReducer","forceRender","latestSubscriptionCallbackError","latestSelector","latestStoreState","latestSelectedState","storeState","newSelectedState","checkForUpdates","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","newBatch","useSelector","getMatches","matchMedia","setMatches","handleChange","useType","nn","rn","tn","revocable","revoke","deleteProperty","un","produce","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","an","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","createStore","reducer","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observer","observeState","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","compose","funcs","applyMiddleware","middlewares","_dispatch","middlewareAPI","chain","middleware","createThunkMiddleware","extraArgument","thunk","withExtraArgument","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","baseProto","MiddlewareArray","EnhancerArray","freezeDraftable","isDraftable","createNextState","curryGetDefaultMiddleware","middlewareArray","immutableCheck","serializableCheck","thunkMiddleware","getDefaultMiddleware","createAction","prepareAction","actionCreator","prepared","__spreadValues","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","builder","addCase","typeOrActionCreator","addMatcher","addDefaultCase","createSlice","_reducer","initialState","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","buildReducer","extraReducers","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","isStateFunction","frozenInitialState_1","caseReducers","cr","caseReducer","isDraft2","isDraftable2","createNextState2","createReducer","actionMatchers_1","reducerName","prepareCallback","maybeReducerWithPrepare","actions","nanoid","commonProperties","RejectWithValue","FulfillWithMeta","miniSerializeError","simpleError","commonProperties_1","createAsyncThunk2","typePrefix","payloadCreator","requestId","__spreadProps","requestStatus","serializeError","rejectedWithValue","aborted","AC","AbortController","class_1","signal","throwIfAborted","abortReason","idGenerator","abortController","promise2","isThenable","conditionResult","abortedPromise","getPendingMeta","rejectWithValue","fulfillWithValue","finalAction","dispatchConditionRejection","unwrap","unwrapResult","withTypes","alm","queueMicrotask","createQueueWithTimer","enableES5","onCancelCallback","onAcceptCallback","confirmationSlice","_action$payload","loadingDevelpmentPage","variable","variableName","versionCreatedSuccessfully","versionGeneratedOn","versionSuccessfullySetAsCurrent","versionTRD","versionTVD","viewAll","viewDocument","viewElectronicHeadquartersButton","viewFile","viewRecord","voBoRequestSentSuccessfully","voucherUploadedSuccessfully","wasTheServiceProvidedInATimelyManner","webhooks","webRegistration","west","withoutVoucher","word","yes","youMustSelectAMetadata","youMustSelectSomeTypeOfNotificationEitherByEmailOrAtTheRegisteredAddress","youResideIn","zoneSavedSuccessfully","darkMode","english","itemUpdatedSuccessfully","languagePreference","logIn","previewFeatures","secondaryTransfer","secondCall","section","sectionCode","sectionCreated","sectionResponsibleForProcessingTheIncomingCorrespondence","sections","sectionStoredSuccessfully","sectionUpdated","sector","secureMethod","security","securityLevel","securityLevelUpdatedToReserved","securityUpdate","securityUpdatedSuccessfully","selectADate","selectADocumentType","selectAnItem","selectContact","selectDocuments","selectFiles","sendingDocuments","sendSurveyDevice","sendSurveyEmail","sigla","spanish","startScreenCapture","tutorials","userPreferencesSavedSuccessfully","currentLanguage","languageSlice","setLanguage","layoutSlice","breadcrumbItems","isNavCollapsed","navItems","notifications","searchBoxPlaceholder","showBreadcrumb","showSearchBox","tenantUrl","uiVersion","userMenuItems","themeName","setBreadcrumbItemItems","setNavItems","setNavItem","navItem","findInLevel","setNotifications","toggleNavCollapsed","setAppName","setTutorials","setTenantUrl","setUserMenuItems","setCommandBarFarItems","setUiVersion","setApiVersion","setShowBreadcrumb","setShowSearchBox","setSearchBoxPlaceholder","setMessage","setThemeName","showPrompt","closePrompt","setPromptErrorMessage","setPromptComments","pluginEditorSlice","dependences","setReferences","breadcrumbCallbacks","useBreadcrumb","processedItems","clearItems","useLayout","commandBar","useCommandBar","breadcrumb","maxLegth","acceptPrompt","setComments","usePrompt","clearCommandBarFarItems","clearFarItems","clearCommandBarItems","hideSearchBox","resetSearchBox","setFarItems","setSearchBoxValue","setTheme","clearBreadcrumbItemItems","TreeNode","__children","__visible","__onChanged","__props","onRenderTooltip","allNodes","hasVisibleChildren","rootNodeId","commandBarCallbacks","removeEvents","HeaderNames","AADAuthorityConstants","AADServerParamKeys","ClaimsRequestKeys","LIBRARY_NAME","SKU","CACHE_PREFIX","DEFAULT_AUTHORITY_HOST","DEFAULT_COMMON_TENANT","DSTS","AAD_INSTANCE_DISCOVERY_ENDPT","CIAM_AUTH_URL","AAD_TENANT_DOMAIN_SUFFIX","RESOURCE_DELIM","NO_ACCOUNT","CLAIMS","CONSUMER_UTID","OPENID_SCOPE","PROFILE_SCOPE","OFFLINE_ACCESS_SCOPE","EMAIL_SCOPE","CODE_RESPONSE_TYPE","CODE_GRANT_TYPE","RT_GRANT_TYPE","FRAGMENT_RESPONSE_MODE","S256_CODE_CHALLENGE_METHOD","URL_FORM_CONTENT_TYPE","AUTHORIZATION_PENDING","NOT_DEFINED","EMPTY_STRING","NOT_APPLICABLE","FORWARD_SLASH","IMDS_ENDPOINT","IMDS_VERSION","IMDS_TIMEOUT","AZURE_REGION_AUTO_DISCOVER_FLAG","REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX","REGIONAL_AUTH_NON_MSI_QUERY_STRING","KNOWN_PUBLIC_CLOUDS","TOKEN_RESPONSE_TYPE","ID_TOKEN_RESPONSE_TYPE","SHR_NONCE_VALIDITY","INVALID_INSTANCE","OIDC_DEFAULT_SCOPES","OIDC_SCOPES","PromptValue","CREATE","NO_SESSION","ResponseMode","GrantType","CacheAccountType","Separators","CredentialType","CacheType","CodeChallengeMethodValues","PLAIN","S256","AuthorityMetadataSource","APP_METADATA","THE_FAMILY_ID","AUTHORITY_METADATA_CONSTANTS","AuthenticationScheme","SERVER_TELEM_CONSTANTS","SCHEMA_VERSION","MAX_CUR_HEADER_BYTES","MAX_LAST_HEADER_BYTES","MAX_CACHED_ERRORS","CACHE_KEY","CATEGORY_SEPARATOR","VALUE_SEPARATOR","OVERFLOW_TRUE","OVERFLOW_FALSE","UNKNOWN_ERROR","PasswordGrantConstants","ResponseCodes","RegionDiscoverySources","RegionDiscoveryOutcomes","CacheOutcome","JsonTypes","ThrottlingConstants","Errors","NativeExtensionMethod","BrowserCacheLocation","HTTP_REQUEST_TYPE","StaticCacheKeys","InMemoryCacheKeys","ApiId","InteractionType","InteractionStatus","suberror","subError","setCorrelationId","createPostRequestFailed","BrowserConfigurationAuthErrorMessage","BrowserConfigurationAuthError","createRedirectUriEmptyError","createPostLogoutRedirectUriEmptyError","givenStorageLocation","createStubPcaInstanceCalledError","createInMemoryRedirectUnavailableError","createEntropyNotProvided","stubbedPublicClientApplication","acquireTokenByCode","getAccountByHomeId","getAccountByUsername","getAccountByLocalId","handleRedirectPromise","logoutRedirect","logoutPopup","addEventCallback","removeEventCallback","addPerformanceCallback","removePerformanceCallback","enableAccountStorageEvents","disableAccountStorageEvents","getTokenCache","setActiveAccount","getActiveAccount","initializeWrapperLibrary","setNavigationClient","getConfiguration","BrowserConstants","NativeConstants","WrapperSKU","DEFAULT_REQUEST","KEY_FORMAT_JWK","CacheLookupPolicy","DB_NAME","DB_TABLE_NAME","createClientInfoEmptyError","createTokenParsingError","caughtExtractionError","createTokenNullOrEmptyError","createEndpointDiscoveryIncompleteError","createNetworkError","createUnableToGetOpenidConfigError","createHashNotDeserializedError","hashParamObj","createStateMismatchError","createStateNotFoundError","missingState","createAuthTimeNotFoundError","createMaxAgeTranspiredError","createNonceNotFoundError","missingNonce","createMultipleMatchingTokensInCacheError","createMultipleMatchingAccountsInCacheError","createMultipleMatchingAppMetadataInCacheError","createTokenRequestCannotBeMadeError","createAppendEmptyScopeToSetError","givenScope","createRemoveEmptyScopeFromSetError","createAppendScopeSetError","appendError","createEmptyInputScopeSetError","createDeviceCodeCancelledError","createDeviceCodeExpiredError","createDeviceCodeUnknownError","createNoAccountInSilentRequestError","createNullOrUndefinedCacheRecord","createInvalidCacheEnvironmentError","createNoAccountFoundError","createCachePluginError","createNoCryptoObjectError","operationName","createInvalidCacheTypeError","createUnexpectedAccountTypeError","createUnexpectedCredentialTypeError","createInvalidAssertionError","createInvalidCredentialError","createRefreshRequiredError","createUserTimeoutReachedError","createTokenClaimsRequiredError","createNoAuthCodeInServerResponseError","createBindingKeyNotRemovedError","createLogoutNotSupportedError","createKeyIdMissingError","createNoNetworkConnectivityError","createUserCanceledError","decodeAuthToken","authToken","isEmptyObj","strObj","queryStringToObject","pair","trimArrayEntries","removeEmptyStringsFromArray","jsonParseHelper","matchPattern","EventType","loggerOptions","setLoggerOptions","createDefaultLoggerOptions","loggerCallback","Trace","tracePii","EventMessageUtils","getInteractionStatusFromEvent","currentStatus","LOGIN_START","Login","SSO_SILENT_START","SsoSilent","ACQUIRE_TOKEN_START","AcquireToken","HANDLE_REDIRECT_START","HandleRedirect","LOGOUT_START","SSO_SILENT_SUCCESS","SSO_SILENT_FAILURE","LOGOUT_END","HANDLE_REDIRECT_END","LOGIN_SUCCESS","LOGIN_FAILURE","ACQUIRE_TOKEN_SUCCESS","ACQUIRE_TOKEN_FAILURE","RESTORE_FROM_BFCACHE","defaultMsalContext","MsalContext","accountArraysAreEqual","arrayA","arrayB","comparisonArray","elementA","elementB","homeAccountId","localAccountId","username","getAccountByIdentifiers","allAccounts","accountIdentifiers","accountObj","MsalProviderActionType","newInProgress","UNBLOCK_INPROGRESS","Startup","EVENT","currentAccounts","MsalProvider","_useReducer2","updateState","callbackId","React__default","useMsal","isAuthenticated","matchAccount","useIsAuthenticated","_useMsal","hasAuthenticated","setHasAuthenticated","PerformanceEvents","PerformanceEventStatus","CryptoKeyStoreNames","IntFields","InteractionRequiredServerErrorMessage","InteractionRequiredAuthSubErrorMessage","traceId","isInteractionRequiredErrorCode","isInteractionRequiredSubError","isInteractionRequiredErrorDesc","irErrorCode","createNoTokensFoundError","createNativeAccountUnavailableError","JoseHeaderErrorMessage","JoseHeaderError","createMissingKidError","createMissingAlgError","JoseHeader","typ","kid","getShrHeaderString","shrHeaderOptions","shrHeader","Pop","MathUtils","GuidGenerator","generateGuid","BrowserStringUtils","stringToUtf8Arr","sDOMStr","nChr","nArrLen","nStrLen","nMapIdx","aBytes","nIdx","nChrIdx","stringToArrayBuffer","dataString","dataView","utf8ArrToString","sView","nPart","nLen","getSortedObjectString","Base64Encode","urlEncode","urlEncodeArr","inputArr","base64EncArr","inputUtf8Arr","eqLen","sB64Enc","nMod3","nUint24","uint6ToB64","nUint6","Base64Decode","base64DecToArr","base64String","nBlockSize","nInLen","nOutLen","nMod4","nOutIdx","nInIdx","b64ToUint6","charNum","BrowserAuthErrorMessage","BrowserAuthError","createPkceNotGeneratedError","createCryptoNotAvailableError","createHttpMethodNotImplementedError","createEmptyNavigationUriError","createEmptyHashError","createHashDoesNotContainStateError","createHashDoesNotContainKnownPropertiesError","createUnableToParseStateError","createStateInteractionTypeMismatchError","createInteractionInProgressError","createEmptyWindowCreatedError","createMonitorPopupTimeoutError","createMonitorIframeTimeoutError","createRedirectInIframeError","windowParentCheck","createBlockReloadInHiddenIframeError","createBlockAcquireTokenInPopupsError","createIframeClosedPrematurelyError","createSilentLogoutUnsupportedError","createNoAccountError","createSilentPromptValueError","givenPrompt","createUnableToParseTokenRequestCacheError","createNoTokenRequestCacheError","createAuthRequestNotSetError","createNoCachedAuthorityError","createNonBrowserEnvironmentError","createDatabaseNotOpenError","createPostRequestFailedError","createGetRequestFailedError","createFailedToParseNetworkResponseError","createUnableToLoadTokenError","errorDetail","createSigningKeyNotFoundInStorageError","keyId","createAuthCodeRequiredError","createAuthCodeOrNativeAccountIdRequiredError","createSpaCodeAndNativeAccountIdPresentError","createDatabaseUnavailableError","createUnableToAcquireTokenFromNativePlatformError","createNativeHandshakeTimeoutError","createNativeExtensionNotInstalledError","createNativeConnectionNotEstablishedError","createNativeBrokerCalledBeforeInitialize","createNativePromptParameterNotSupportedError","PkceGenerator","generateCodes","codeVerifier","generateCodeVerifier","generateCodeChallengeFromVerifier","codeChallenge","verifier","challenge","pkceCodeVerifier","sha256Digest","pkceHashedCodeVerifier","e_1","ModernBrowserCrypto","dataBuffer","generateKey","extractable","keyUsages","exportKey","MsrBrowserCrypto","initPrng","msrCrypto","__spread","MsBrowserCrypto","msGenerateKey","msExportKey","resultBuffer","resultString","keyBuffer","msImportKey","msSign","digestOperation","S256_HASH_ALG","PUBLIC_EXPONENT","BrowserCrypto","cryptoOptions","hasBrowserCrypto","subtleCrypto","hasIECrypto","hasMsrCrypto","useMsrCrypto","keygenAlgorithmOptions","modulusLength","generateKeyPair","usages","exportJwk","importJwk","DatabaseStorage","dbName","tableName","dbOpen","openDB","indexedDB","createObjectStore","closeConnection","validateDbIsOpen","dbGet","transaction","objectStore","dbPut","dbDelete","dbGetKeys","containsKey","dbContainsKey","deleteDatabase","deleteDbRequest","MemoryStorage","cacheKeys","AsyncMemoryStorage","storeName","inMemoryCache","indexedDBCache","handleDatabaseAccessError","e_2","e_3","e_4","e_5","clearInMemory","clearPersistent","dbDeleted","e_6","CryptoKeyStore","asymmetricKeys","symmetricKeys","CryptoOps","performanceClient","cryptoConfig","browserCrypto","b64Encode","b64Decode","guidGenerator","pkceGenerator","generatePkceCodes","getPublicKeyThumbprint","publicKeyThumbMeasurement","startMeasurement","CryptoOptsGetPublicKeyThumbprint","EXTRACTABLE","POP_KEY_USAGES","publicKey","publicKeyJwk","pubKeyThumprintObj","kty","publicJwkString","hashString","publicJwkHash","privateKeyJwk","unextractablePrivateKey","requestMethod","resourceRequestMethod","requestUri","resourceRequestUri","endMeasurement","success","removeTokenBindingKey","clearKeystore","signJwt","signJwtMeasurement","CryptoOptsSignJwt","cachedKeyPair","publicKeyJwkString","encodedKeyIdThumbprint","encodedShrHeader","cnf","jwk","encodedPayload","tokenString","tokenBuffer","signatureBuffer","encodedSignature","signedJwt","plainText","hashBuffer","hashBytes","PerformanceClient","applicationTelemetry","eventsByCorrelationId","queueMeasurements","preQueueTimeByCorrelationId","startPerformanceMeasurement","startPerformanceMeasuremeant","getIntFields","getPreQueueTime","preQueueEvent","calculateQueuedTime","preQueueTime","currentTime","addQueueMeasurement","queueTime","manuallyCompleted","queueMeasurement","existingMeasurements","measurementArray","eventCorrelationId","generateId","performanceMeasurement","inProgressEvent","startTimeMs","cacheEventByCorrelationId","discardMeasurement","discardMeasurements","addStaticFields","counters","rootEvent","isRoot","queueInfo","totalQueueTime","totalQueueCount","manuallyCompletedCount","getQueueInfo","discardCache","incompleteSubMeasurements","durationMs","flushMeasurement","finalEvent","incompleteSubsCount","subMeasurement","queuedTimeMs","queuedCount","queuedManuallyCompletedCount","Completed","truncateIntegralFields","emitEvents","queueMeasurementForCorrelationId","intFields","StubPerformanceMeasurement","StubPerformanceClient","setPreQueueTime","DEFAULT_CRYPTO_IMPLEMENTATION","CredentialEntity","generateAccountId","generateAccountIdForCacheKey","generateCredentialId","generateCredentialIdForCacheKey","credentialType","realm","familyId","generateTarget","generateTargetForCacheKey","generateCredentialKey","generateCredentialCacheKey","requestedClaimsHash","generateType","ACCESS_TOKEN_WITH_AUTH_SCHEME","REFRESH_TOKEN","generateClaimsHashForCacheKey","generateSchemeForCacheKey","CACHE_KEY_SEPARATOR","BEARER","IdTokenEntity","createIdTokenEntity","idTokenEntity","isIdTokenEntity","createInsecureAuthorityUriError","createUrlParseError","urlParseError","createUrlEmptyError","createClientIdSingleScopeError","inputScopes","createInvalidClaimsRequestError","createEmptyLogoutRequestError","createEmptyTokenRequestError","createInvalidCodeChallengeMethodError","createInvalidCodeChallengeParamsError","createInvalidCloudDiscoveryMetadataError","createInvalidAzureCloudInstanceError","createMissingSshJwkError","createMissingSshKidError","createMissingNonceAuthenticationHeadersError","createInvalidAuthenticationHeaderError","invalidHeaderName","details","createAuthorityMismatchError","scopeArr","filteredInput","validateInputScopes","inputScopeString","createSearchScopes","scopeSet","containsOnlyOIDCScopes","removeScope","removeOIDCScopes","lowerCaseScopesSet","printScopesLowerCase","containsScopeSet","asArray","defaultScopeCount","defaultScope","appendScope","newScope","newScopes","unionScopeSets","otherScopes","unionScopes","intersectingScopeSets","sizeOtherScopes","getScopeCount","sizeThisScopes","printScopes","buildClientInfo","buildClientInfoFromHomeAccountId","clientInfoParts","CLIENT_INFO_SEPARATOR","CcsCredentialType","AccountEntity","generateAccountKey","generateAccountCacheKey","ADFS_ACCOUNT_TYPE","MSAV1_ACCOUNT_TYPE","MSA","MSSTS_ACCOUNT_TYPE","MSSTS","GENERIC_ACCOUNT_TYPE","GENERIC","nativeAccountId","accountInterface","cloudGraphHostName","msGraphHost","getPreferredCache","tid","oid","preferredUsername","preferred_username","emails","createGenericAccount","generateHomeAccountId","serverClientInfo","authType","Dsts","isAccountEntity","accountInfoIsEqual","accountA","accountB","compareClaims","claimsMatch","accountAClaims","accountBClaims","iat","AuthToken","rawToken","extractTokenClaims","encodedToken","base64TokenPayload","checkMaxAge","authTime","maxAge","CacheManager","cryptoImpl","commonLogger","allAccountKeys","getAccountKeys","accountEntities","accountEntity","getAccountInfoFromEntity","getAccountInfoFilteredBy","accountFilter","getAccountsFilteredBy","saveCacheRecord","cacheRecord","setAccount","setIdTokenCredential","refreshToken","setRefreshTokenCredential","appMetadata","setAppMetadata","credential","accessTokenFilter","tokenKeys","getTokenKeys","currentScopes","removedAccessTokens","accessTokenKeyMatchesFilter","tokenEntity","getAccessTokenCredential","credentialMatchesFilter","removeAccessToken","setAccessTokenCredential","matchingAccounts","isAccountKey","matchHomeAccountId","matchLocalAccountId","matchUsername","matchEnvironment","matchRealm","matchNativeAccountId","isCredentialKey","lowerCaseKey","clientIdValidation","familyIdValidation","userAssertionHash","matchUserAssertionHash","matchCredentialType","matchFamilyId","matchTarget","matchTokenType","SSH","matchKeyId","getAppMetadataFilteredBy","getAppMetadataFilteredByInternal","allCacheKeys","matchingAppMetadata","isAppMetadata","getAppMetadata","getAuthorityMetadataByAlias","getAuthorityMetadataKeys","matchedEntity","isAuthorityMetadata","getAuthorityMetadata","removeAllAccounts","removedAccounts","removeAccount","removeAccountContext","allTokenKeys","removedCredentials","removeIdToken","removeRefreshToken","POP","removeAppMetadata","readCacheRecord","readAccountFromCache","cachedIdToken","cachedAccessToken","getAccessToken","cachedRefreshToken","getRefreshToken","cachedAppMetadata","readAppMetadataFromCache","idTokenFilter","idTokens","getIdTokensByFilter","numIdTokens","idTokenKeys","idTokenKeyMatchesFilter","getIdTokenCredential","inputKey","authScheme","authenticationScheme","sshKid","accessTokenKeys","accessTokens","numAccessTokens","keyMustContainAllScopes","getAccessTokensByFilter","familyRT","refreshTokenFilter","refreshTokenKeys","refreshTokens","refreshTokenKeyMatchesFilter","getRefreshTokenCredential","appMetadataFilter","appMetadataEntries","numAppMetadata","isAppMetadataFOCI","cloudMetadata","generateAuthorityMetadataCacheKey","json","DefaultStorageClass","setServerTelemetry","getServerTelemetry","setAuthorityMetadata","setThrottlingCache","getThrottlingCache","updateCredentialCacheKey","nowSeconds","isTokenExpired","expirationSec","wasClockTurnedBack","cachedAt","AccessTokenEntity","createAccessTokenEntity","extExpiresOn","cryptoUtils","refreshOn","requestedClaims","atEntity","extendedExpiresOn","tokenClaims","isAccessTokenEntity","RefreshTokenEntity","createRefreshTokenEntity","rtEntity","isRefreshTokenEntity","AppMetadataEntity","generateAppMetadataKey","generateAppMetadataCacheKey","createAppMetadataEntity","isAppMetadataEntity","ServerTelemetryEntity","failedRequests","cacheHits","isServerTelemetryEntity","validateKey","validateEntity","AuthorityMetadataEntity","expiresAt","updateCloudDiscoveryMetadata","fromNetwork","preferred_cache","preferred_network","aliasesFromNetwork","updateEndpointMetadata","token_endpoint","endpointsFromNetwork","jwks_uri","updateCanonicalAuthority","canonical_authority","resetExpiresAt","isExpired","isAuthorityMetadataEntity","ThrottlingEntity","isThrottlingEntity","ProtocolUtils","setRequestState","stateObj","parseRequestState","splitState","libraryStateString","libraryStateObj","userRequestState","ProtocolMode","AzureCloudInstance","validateWindowStorage","windowStorage","LocalStorage","SessionStorage","UrlString","_urlString","getHash","canonicalizeUri","getUrlComponents","appendQueryString","queryString","COMMON","parseHash","QueryString","getDomainFromUrl","getAbsoluteUrl","relativeUrl","baseComponents","parseQueryString","queryIndex1","queryIndex2","getDeserializedHash","parsedHash","deserializedHash","getDeserializedQueryString","parsedQueryString","deserializedQueryString","hashContainsKnownProperties","error_description","BrowserProtocolUtils","extractBrowserRequestState","parseServerResponseFromHash","hashUrlString","BrowserCacheManager","cacheConfig","COOKIE_LIFE_MULTIPLIER","internalStorage","browserStorage","setupBrowserStorage","temporaryCacheStorage","setupTemporaryCacheStorage","temporaryCacheLocation","cacheMigrationEnabled","createKeyMaps","migrateCacheEntry","setTemporaryCache","accountKeys","ACCOUNT_KEYS","TOKEN_KEYS","credObj","validateAndParseJson","addTokenKey","accessTokenEntity","refreshTokenEntity","addAccountKeyToMap","jsonValue","parsedJson","removeAccountKeyFromMap","parsedAccount","removalIndex","removeTokenKey","idRemoval","accessRemoval","refreshRemoval","parsedIdToken","parsedAccessToken","refreshTokenKey","parsedRefreshToken","appMetadataKey","serverTelemetryKey","serverTelemetry","setWrapperMetadata","wrapperSKU","wrapperVersion","WRAPPER_SKU","WRAPPER_VER","getWrapperMetadata","activeAccountKeyFilters","ACTIVE_ACCOUNT_FILTERS","activeAccountValueFilters","activeAccountKeyLocal","ACTIVE_ACCOUNT","activeAccountValueLocal","activeAccount","getAccountInfoByFilter","activeAccountValueObj","activeAccountKey","activeAccountValue","getAccountInfoByHints","accountSid","throttlingCacheKey","parsedThrottlingCache","throttlingCache","getTemporaryCache","itemCookie","cookieValue","secureCookies","cookieList","clearMsalCookies","cookiePrefix","cookieKey","getCache","setCache","ADAL_ID_TOKEN","generateNonceKey","generateStateKey","REQUEST_STATE","getCachedAuthority","cachedState","stateCacheKey","authorityCacheKey","nonceCacheKey","ccsCredential","HOME_ACCOUNT_ID","CCS_CREDENTIAL","UPN","resetRequestCache","REQUEST_PARAMS","ORIGIN_URI","URL_HASH","CORRELATION_ID","NATIVE_REQUEST","cleanRequestByState","stateKey","cleanRequestByInteractionType","cacheCodeRequest","authCodeRequest","encodedValue","getCachedRequest","encodedTokenRequest","parsedRequest","getCachedNativeRequest","cachedRequest","INTERACTION_STATUS_KEY","getLegacyLoginHint","adalIdTokenString","msalIdTokenString","cachedIdTokenString","currentCacheKey","updatedCacheKey","getRedirectRequestContext","REDIRECT_CONTEXT","setRedirectRequestContext","preventCorsPreflight","DEFAULT_LOGGER_IMPLEMENTATION","claimsBasedCachingEnabled","DEFAULT_NETWORK_IMPLEMENTATION","sendGetRequestAsync","sendPostRequestAsync","DEFAULT_LIBRARY_INFO","sku","cpu","DEFAULT_CLIENT_CREDENTIALS","clientSecret","clientAssertion","DEFAULT_AZURE_CLOUD_OPTIONS","azureCloudInstance","tenant","DEFAULT_TELEMETRY_OPTIONS","application","StubbedNetworkModule","FetchClient","GET","getFetchHeaders","onLine","getHeaderDict","reqBody","POST","Headers","optionsHeaders","headerDict","setXhrHeaders","networkResponse","headers_1","headerArr","headerName","headerVal","BrowserUtils","clearHash","replaceHash","urlParts","getCurrentUri","getHomepage","getBrowserNetworkClient","blockRedirectInIframe","allowRedirectInIframe","isIframedApp","blockAcquireTokenInPopups","blockNonBrowserEnvironment","isBrowserEnvironment","blockNativeBrokerCalledBeforeInitialized","allowNativeBroker","detectIEOrEdge","msie","msie11","msedge","NavigationClient","navigateInternal","defaultNavigateWindow","navigateExternal","noHistory","DEFAULT_IFRAME_TIMEOUT_MS","KeyLocation","eventCallbacks","listeningToStorageEvents","handleAccountCacheChange","emitEvent","message_1","cacheValue","parsedValue","ACCOUNT_ADDED","ACCOUNT_REMOVED","ThrottlingUtils","generateThrottlingStorageKey","thumbprint","preProcess","cacheManager","throttleTime","errorCodes","postProcess","checkResponseStatus","checkResponseForRetryAfter","thumbprintValue","calculateThrottleTime","RETRY_AFTER","error_codes","currentSeconds","removeThrottle","shrClaims","NetworkManager","networkClient","sendPostRequest","tokenEndpoint","RequestValidator","validateRedirectUri","validatePrompt","promptValues","validateClaims","validateCodeChallengeParams","codeChallengeMethod","validateCodeChallengeMethod","sanitizeEQParams","fromEntries","RequestParameterBuilder","addResponseTypeCode","RESPONSE_TYPE","addResponseTypeForTokenAndIdToken","addResponseMode","responseMode","RESPONSE_MODE","QUERY","addNativeBroker","NATIVE_BROKER","addScopes","addOidcScopes","addClientId","CLIENT_ID","addRedirectUri","REDIRECT_URI","addPostLogoutRedirectUri","POST_LOGOUT_URI","addIdTokenHint","idTokenHint","ID_TOKEN_HINT","addDomainHint","domainHint","DOMAIN_HINT","addLoginHint","addCcsUpn","CCS_HEADER","addCcsOid","addSid","addClaims","clientCapabilities","mergedClaims","addClientCapabilitiesToClaims","addCorrelationId","CLIENT_REQUEST_ID","addLibraryInfo","libraryInfo","X_CLIENT_SKU","X_CLIENT_VER","X_CLIENT_OS","X_CLIENT_CPU","addApplicationTelemetry","appTelemetry","X_APP_NAME","X_APP_VER","addPrompt","PROMPT","addState","addNonce","NONCE","addCodeChallengeParams","CODE_CHALLENGE","CODE_CHALLENGE_METHOD","addAuthorizationCode","CODE","addDeviceCode","DEVICE_CODE","addRefreshToken","addCodeVerifier","CODE_VERIFIER","addClientSecret","CLIENT_SECRET","addClientAssertion","CLIENT_ASSERTION","addClientAssertionType","clientAssertionType","CLIENT_ASSERTION_TYPE","addOboAssertion","oboAssertion","OBO_ASSERTION","addRequestTokenUse","tokenUse","REQUESTED_TOKEN_USE","addGrantType","grantType","GRANT_TYPE","addClientInfo","addExtraQueryParameters","sanitizedEQParams","XMS_CC","addUsername","addPassword","addPopToken","cnfString","TOKEN_TYPE","REQ_CNF","addSshJwk","sshJwkString","addServerTelemetry","serverTelemetryManager","X_CLIENT_CURR_TELEM","generateCurrentRequestHeaderValue","X_CLIENT_LAST_TELEM","generateLastRequestHeaderValue","addThrottling","X_MS_LIB_CAPABILITY","addLogoutHint","logoutHint","LOGOUT_HINT","createQueryString","queryParameterArray","BaseClient","authOptions","userAuthOptions","userSystemOptions","systemOptions","userLoggerOption","userCacheOptions","cacheOptions","storageImplementation","storageInterface","networkImplementation","networkInterface","cryptoImplementation","cryptoInterface","clientCredentials","persistencePlugin","serializableCache","azureCloudOptions","skipAuthorityMetadataCache","buildClientConfiguration","networkManager","createTokenRequestHeaders","ccsCred","CONTENT_TYPE","executePostToTokenEndpoint","clearTelemetryCache","updateAuthority","updatedAuthority","discoveryComplete","createTokenQueryParameters","parameterBuilder","tokenQueryParameters","CacheRecord","appMetadataEntity","PopTokenGenerator","generateCnf","PopTokenGenerateCnf","PopTokenGenerateKid","generateKid","reqCnf","reqCnfString","reqCnfHash","xms_ksl","SW","signPopToken","signPayload","shrNonce","resourceUrlString","resourceUrlComponents","client_claims","TokenCacheContext","tokenCache","ResponseHandler","validateServerAuthorizationCodeResponse","serverResponseHash","trace_id","correlation_id","client_info","validateTokenResponse","serverResponse","errString","handleServerTokenResponse","serverTokenResponse","reqTimestamp","authCodePayload","handlingRefreshTokenResponse","forceCacheRefreshTokenResponse","serverRequestId","HandleServerTokenResponse","id_token","auth_time","requestStateObj","key_id","generateCacheRecord","cacheContext","beforeCacheAccess","generateAuthenticationResult","afterCacheAccess","generateAccountEntity","access_token","responseScopes","expires_in","extExpiresIn","ext_expires_in","refreshIn","refresh_in","tokenExpirationSeconds","extendedTokenExpirationSeconds","refreshOnSeconds","token_type","refresh_token","foci","cloud_graph_host_name","msGraphhost","msgraph_host","protocolMode","fromTokenCache","requestState","popTokenGenerator","spa_accountid","spa_code","fromNativeBroker","AuthorizationCodeClient","includeRedirectUri","getAuthCodeUrl","GetAuthCodeUrl","AuthClientCreateQueryString","createAuthCodeUrlQueryString","authorizationEndpoint","acquireToken","AuthClientAcquireToken","atsMeasurement","AuthClientExecuteTokenRequest","executeTokenRequest","X_MS_REQUEST_ID","httpVerAuthority","X_MS_HTTP_VERSION","responseHandler","handleFragmentResponse","hashFragment","serverParams","getLogoutUri","logoutRequest","createLogoutUrlQueryString","endSessionEndpoint","AuthClientCreateTokenRequestBody","queryParametersString","createTokenRequestBody","requestBody","assertion","assertionType","AUTHORIZATION_CODE_GRANT","reqCnfData","sshJwk","tokenBodyParameters","enableSpaAuthorizationCode","RETURN_SPA_CODE","extractAccountSid","accountLoginHintClaim","extractLoginHint","nativeBroker","isOpenIdConfigResponse","EndpointMetadata","InstanceDiscoveryMetadata","NativeStatusCode","RegionDiscovery","detectRegion","environmentRegion","regionDiscoveryMetadata","RegionDiscoveryDetectRegion","autodetectedRegionName","IMDS_OPTIONS","RegionDiscoveryGetRegionFromIMDS","getRegionFromIMDS","localIMDSVersionResponse","httpSuccess","region_source","IMDS","httpBadRequest","RegionDiscoveryGetCurrentVersion","getCurrentVersion","currentIMDSVersion","FAILED_AUTO_DETECTION","currentIMDSVersionResponse","ENVIRONMENT_VARIABLE","Metadata","authorityOptions","_canonicalAuthority","region_used","region_outcome","regionDiscovery","getAuthorityType","authorityUri","Ciam","_canonicalAuthorityUrlComponents","replacePath","canReplaceTenant","reservedTenantDomains","AAD","replaceTenant","cachedAuthorityUrlComponents","cachedAuthorityParts","currentPart","cachedPart","OIDC","AuthorityResolveEndpointsAsync","metadataEntity","hostnameAndPort","AuthorityUpdateCloudDiscoveryMetadata","cloudDiscoverySource","AuthorityUpdateEndpointMetadata","endpointSource","CACHE","getEndpointMetadataFromConfig","CONFIG","isAuthoritySameType","AuthorityGetEndpointMetadataFromNetwork","getEndpointMetadataFromNetwork","azureRegionConfiguration","azureRegion","AuthorityUpdateMetadataWithRegionalInformation","updateMetadataWithRegionalInformation","NETWORK","harcodedMetadata","getEndpointMetadataFromHardcodedValues","HARDCODED_VALUES","defaultOpenIdConfigurationEndpoint","userConfiguredAzureRegion","CONFIGURED_NO_AUTO_DETECTION","replaceWithRegionalInformation","AUTO_DETECTION_REQUESTED_SUCCESSFUL","AUTO_DETECTION_REQUESTED_FAILED","getCloudDiscoveryMetadataFromConfig","metadataEntityExpired","AuthorityGetCloudDiscoveryMetadataFromNetwork","getCloudDiscoveryMetadataFromNetwork","getCloudDiscoveryMetadataFromHarcodedValues","createCloudDiscoveryMetadataFromHost","cloudDiscoveryMetadata","parsedResponse","getCloudDiscoveryMetadataFromNetworkResponse","isInKnownAuthorities","typedResponseBody","isCloudInstanceDiscoveryResponse","tenant_discovery_endpoint","isCloudInstanceDiscoveryErrorResponse","typedError","generateAuthority","authorityString","authorityAzureCloudInstance","isAlias","isPublicCloudAuthority","buildRegionalAuthorityString","region","authorityUrlInstance","authorityUrlParts","hostNameAndPort","transformCIAMAuthority","ciamAuthority","authorityUrlComponents","createDiscoveredInstance","AuthorityFactoryCreateDiscoveredInstance","authorityUriFinal","ServerTelemetryManager","telemetryRequest","cacheOutcome","NO_CACHE_HIT","apiId","wrapperVer","telemetryCacheKey","platformFields","requestWithRegionDiscoveryFields","getRegionDiscoveryFields","lastRequests","getLastRequests","maxErrors","maxErrorsToSend","errorCount","cacheFailedRequest","incrementCacheHits","numErrorsFlushed","serverTelemEntity","serverTelemetryEntity","dataSize","regionDiscoveryFields","regionUsed","regionSource","regionOutcome","updateRegionDiscoveryMetadata","setCacheOutcome","BaseInteractionClient","storageImpl","navigationClient","nativeMessageHandler","clearCacheOnLogout","initializeBaseRequest","InitializeBaseRequest","validateRequestAuthority","validatedRequest","requestRedirectUri","getDiscoveredAuthority","initializeServerTelemetryManager","telemetryPayload","requestAuthority","StandardInteractionClient","initializeAuthorizationCodeRequest","StandardInteractionClientInitializeAuthorizationCodeRequest","generatedPkceParams","initializeLogoutRequest","validLogoutRequest","getLogoutHintFromIdTokenClaims","createAuthCodeClient","requestAzureCloudOptions","StandardInteractionClientCreateAuthCodeClient","StandardInteractionClientGetClientConfiguration","getClientConfiguration","clientConfig","StandardInteractionClientGetDiscoveredAuthority","discoveredAuthority","validateAndExtractStateFromHash","platformStateObj","getAuthorityMeasurement","userAuthority","builtAuthority","initializeAuthorizationRequest","StandardInteractionClientInitializeAuthorizationRequest","browserState","FRAGMENT","legacyLoginHint","_AuthenticationManager_instance","_AuthenticationManager_props","_AuthenticationManager_acquireDefaultTokenSilent","_AuthenticationManager_acquireTokenSilent","NativeAuthErrorMessage","NativeAuthError","isFatal","PERSISTENT_ERROR","createError","ACCOUNT_UNAVAILABLE","USER_INTERACTION_REQUIRED","USER_CANCEL","NO_NETWORK","createUserSwitchError","createTokensNotFoundInCacheError","RefreshTokenClient","RefreshTokenClientAcquireToken","RefreshTokenClientExecuteTokenRequest","httpVerToken","refreshTokenSize","forceCache","acquireTokenByRefreshToken","RefreshTokenClientAcquireTokenByRefreshToken","RefreshTokenClientAcquireTokenWithCachedRefreshToken","acquireTokenWithCachedRefreshToken","noFamilyRTInCache","clientMismatchErrorWithFamilyRT","refreshTokenRequest","acquireTokenMeasurement","RefreshTokenClientCreateTokenRequestBody","BaseClientCreateTokenRequestHeaders","REFRESH_TOKEN_GRANT","SilentFlowClient","acquireCachedToken","FORCE_REFRESH","CLAIMS_REQUESTED_CACHE_SKIPPED","NO_CACHED_ACCESS_TOKEN","CACHED_ACCESS_TOKEN_EXPIRED","REFRESH_CACHED_ACCESS_TOKEN","generateResultFromCacheRecord","SilentCacheClient","silentRequest","SilentCacheClientAcquireToken","acquireTokenSilent_silentFlow","createSilentFlowClient","silentAuthClient","cachedToken","initializeSilentRequest","InitializeSilentRequest","NativeInteractionClient","nativeStorageImpl","nativeStorageManager","silentCacheClient","nativeATMeasurement","NativeInteractionClientAcquireToken","initializeNativeRequest","nativeRequest","acquireTokensFromCache","isNativeBroker","messageBody","GetToken","sendMessage","validatedResponse","validateNativeResponse","handleNativeResponse","createSilentCacheRequest","navigationOptions","redirectNavigationTimeout","authorityPreferredCache","createIdTokenObj","createHomeAccountIdentifier","createAccountEntity","cacheAccount","cacheNativeTokens","generateScopes","generatePopAccessToken","shr","shrParameters","mats","addTelemetryFromNativeResponse","accountProperties","responseAccessToken","isResponseFromCache","nativeCacheRecord","getMATSFromResponse","extensionId","getExtensionId","extensionVersion","getExtensionVersion","matsBrokerVersion","broker_version","matsAccountJoinOnStart","account_join_on_start","matsAccountJoinOnEnd","account_join_on_end","matsDeviceJoin","device_join","matsPromptBehavior","prompt_behavior","matsApiErrorCode","api_error_code","matsUiVisible","ui_visible","matsSilentCode","silent_code","matsSilentBiSubCode","silent_bi_sub_code","matsSilentMessage","silent_message","matsSilentStatus","silent_status","matsHttpStatus","http_status","matsHttpEventCount","http_event_count","MATS","is_cached","remainingProperties","getPrompt","windowTitleSubstring","extraParameters","extendedExpiryToken","NativeMessageHandler","handshakeTimeoutMs","resolvers","handshakeResolvers","responseId","messageChannel","windowListener","onWindowMessage","handshakeEvent","NativeMessageHandlerHandshake","channel","createProvider","preferredProvider","sendHandshakeRequest","backupProvider","HandshakeRequest","extensionHandshakeTimeoutMs","onChannelMessage","extensionHandshakeTimedOut","handshakeResolver","extensionInstalled","Response","HandshakeResponse","isNativeAvailable","nativeExtensionProvider","InteractionHandler","authCodeModule","authModule","handleCodeResponseFromHash","networkModule","HandleCodeResponseFromHash","authCodeResponse","HandleCodeResponseFromServer","handleCodeResponseFromServer","validateNonce","nonceKey","cloud_instance_host_name","UpdateTokenEndpointAuthority","updateTokenEndpointAuthority","cachedCcsCred","checkCcsCredentials","tokenResponse","cloudInstanceHostname","cloudInstanceAuthorityUri","cloudInstanceAuthority","PopupClient","unloadWindow","nativeStorage","popupName","generatePopupName","popupWindowAttributes","asyncPopups","acquireTokenPopupAsync","openSizedPopup","generateLogoutPopupName","mainWindowRedirectUri","logoutPopupAsync","validRequest","authClient","fetchNativeAccountIdMeasurement","FetchAccountIdWithNativeBroker","navigateUrl","interactionHandler","popupParameters","initiateAuthRequest","POPUP_OPENED","state_1","nativeInteractionClient","logoutUri","LOGOUT_SUCCESS","waitForLogoutPopup","absoluteUrl","LOGOUT_FAILURE","requestUrl","windowHashTimeout","pollIntervalMilliseconds","cleanPopup","popupParams","winWidth","winHeight","popupSize","popupPosition","RedirectHandler","redirectTimeout","RedirectClient","handleBackButton","getRedirectStartPage","responseHash","getRedirectResponseHash","loginRequestUrlNormalized","currentUrlNormalized","handleHash","handleHashResult","processHashOnRedirect","cachedHash","currentAuthority","requestStartPage","SilentHandler","SilentHandlerInitiateAuthRequest","SilentHandlerLoadFrame","SilentHandlerMonitorIframeForHash","contentHash","createHiddenIframe","authFrame","SilentIframeClient","SilentIframeClientAcquireToken","Silent","SilentIframeClientTokenHelper","silentTokenHelper","silentHandler","msalFrame","iframeHashTimeout","SilentRefreshClient","SilentRefreshClientAcquireToken","createRefreshTokenClient","refreshTokenClient","TokenCache","loadExternalTokens","cacheRecordAccount","loadAccount","loadIdToken","loadAccessToken","loadRefreshToken","requestHomeAccountId","HybridSpaAuthorizationCodeClient","SilentAuthCodeClient","cloudInstanceHostName","BrowserPerformanceMeasurement","makeMeasureName","makeStartMark","makeEndMark","getEntriesByName","flushMeasurements","measurements","entriesForMeasurement","BrowserPerformanceClient","getPageVisibility","visibilityState","deleteIncompleteSubMeasurements","isRootEvent","incompleteMeasurements","supportsBrowserPerformanceNow","startPageVisibility","endPageVisibility","resQueueTime","ClientApplication","userInputAuth","userInputCache","userInputSystem","userInputTelemetry","DEFAULT_LOGGER_OPTIONS","DEFAULT_BROWSER_SYSTEM_OPTIONS","nativeBrokerHandshakeTimeout","providedSystemOptions","hybridAuthCodeResponses","DEFAULT_BROWSER_CACHE_MANAGER","nativeCacheOptions","nativeInternalStorage","trackPageVisibilityWithMeasurement","initMeasurement","InitializeClientApplication","INITIALIZE_START","INITIALIZE_END","loggedInAccounts","redirectResponseKey","nativeClient","redirectClient","createRedirectClient","getRequestCorrelationId","preflightBrowserEnvironmentCheck","isLoggedIn","canUseNative","getNativeAccountId","atPopupMeasurement","acquireTokenNative","createPopupClient","accessTokenSize","idTokenSize","ssoSilentMeasurement","acquireTokenByCodeAsyncMeasurement","visibilityChangeCount","createSilentIframeClient","silentIframeClient","ACQUIRE_TOKEN_BY_CODE_START","atbcMeasurement","AcquireTokenByCode","hybridAuthCode_1","acquireTokenByCodeAsync","ACQUIRE_TOKEN_BY_CODE_SUCCESS","ACQUIRE_TOKEN_BY_CODE_FAILURE","AcquireTokenByCodeAsync","createSilentAuthCodeClient","tokenRenewalError","acquireTokenFromCache","commonRequest","AcquireTokenFromCache","cacheLookupPolicy","AccessTokenAndRefreshToken","AcquireTokenByRefreshToken","RefreshToken","RefreshTokenAndNetwork","silentRefreshClient","createSilentRefreshClient","acquireTokenBySilentIframe","AcquireTokenBySilentIframe","preflightInteractiveRequest","createSilentCacheClient","PublicClientApplication","astsAsyncMeasurement","activeSilentTokenRequests","trackPageVisibility","silentRequestKey","cachedResponse","AcquireTokenSilentAsync","acquireTokenSilentAsync","silentRequest_1","requestWithCLP_1","cacheError","ACQUIRE_TOKEN_NETWORK_START","refreshTokenError","isServerError","isInvalidGrantError","AuthenticationManager","enableDebug","_HttpClient_instances","_HttpClient_props","_HttpClient_createRequest","_HttpClient_createFormDataRequest","_HttpClient_getAadHttpClient","HttpClient","usePut","setResult","setIsError","processRequestAsync","_yield$__classPrivate","_yield$__classPrivate2","post","_post","_put","_x6","_x7","_delete2","_x8","_x9","_aadGetJson","_callee7","_yield$__classPrivate3","_yield$__classPrivate4","_context7","ExceptionMessage","_writeException","_x10","_aadGetArrayBuffer","_callee9","_yield$__classPrivate5","_yield$__classPrivate6","_context9","_callee8","_context8","_x12","_x13","_x11","_aadGetText","_callee10","_yield$__classPrivate7","_yield$__classPrivate8","_context10","_x14","_aadPostAsync","_callee12","_yield$__classPrivate9","_yield$__classPrivate10","_context12","_callee11","_context11","_processResponse","_x17","_x18","_x15","_x16","_aadPostFormDataAsync","_callee13","_yield$__classPrivate11","_yield$__classPrivate12","_context13","_x19","_x20","_aadPostArrayBuffer","_callee15","_yield$__classPrivate13","_yield$__classPrivate14","_context15","_callee14","_context14","_x23","_x24","_x21","_x22","_aadPut","_callee16","_yield$__classPrivate15","_yield$__classPrivate16","_context16","_x25","_x26","_aadDelete","_callee18","_yield$__classPrivate17","_yield$__classPrivate18","_context18","_callee17","_context17","_x28","_x29","_x27","processedFilters","Message","ExceptionType","exceptionMessage","StackTrace","OK","Created","processOK","NoContent","PartialContent","apimKey","getApimKey","customHeaders","getHeaders","_authenticationManager","$RootContext","_isProviderConfigured","RootAppProvider","useHttpClient","setAppContext","onGetAppContext","RootApp","EntraIdProvider","useHost","useSearch","searchValue","ACDataTablePage","_u","_v","isSidebarVisible","useMediaQuery","setColumns","foldersNode","setFoldersNode","_useState8","_useType2","setRequest","_useState10","totalRecords","setResponseStatus","_useState11","_useState12","visibleColumns","setVisibleColumns","_useState14","setCompact","_useState16","showSettings","setShowSettings","rootNodeText","folders","parentPath","fullPath","onFolderSelected","createRootNode","showFilters","useSiteCommandBar","downloadServerDataAsync","refreshRef","onDownloadServerDataAsync","renderTable","XDataTable","_onDownloadServerData","onFiltersChange","backdropFilter","subComponents","showFolders","XTreeView","useIcons","XCheckbox","onRenderFilters","ModernDataTableItem","StandarDataTablePage","setSelectedItem","_XDataTable_sortDirection","NumberExtensions","XCurrencyField","formatValue","setCurrentValue","localCurrentDecimalSeparator","removeInvalidCharacters","removeFormat","regexThousand","regexDecimal","mapColumns","sColumn","_TimeOnly_value","_TimeOnly_format","TimeOnly","padStart","_value$split$map2","otherTime","newTime","setSeconds","timeInput","XTimePicker","XDateTimePicker","XNumberField","numberValue","_DateTime_value","_DateTime_format","layerX","layerY","onExpandNodeClick","TREE_NODE_STYLE","allowSelect","CitySelector","department","CountrySelector","includeName","includeCode","dateTime","_value$split2","datePart","timePart","_datePart$split$map2","_timePart$split$map2","DateOnly","otherDateTime","newDateTime","dateOnlyString","timeOnlyString","dateTimeInput","_DateOnly_value","_DateOnly_format","toDateOnly","otherDate","dateTimeString","dateInput","_City_props","DepartmentSelector","RoleSelector","roleId","UserSelector","enterpriseApplication","externalUser","currentSection","userId","includeLoginName","loginName","includeEmail","includeSection","City","schema","cityId","departmentId","archivox","departments","firstOrDefault","_Country_props","countryId","telephoneCode","cities","_Department_props","Department","_Profile_props","_Role_props","Role","_Section_props","_Section_manager","_Section_responsible","sectionId","Code","BaseId","users","sectionBaseId","baseId","TrdVersionId","trdVersionId","trdVersions","relatedItems","ResponsibleUser","_Serie_props","_Serie_subseries","_Serie_trdVersion","IdSerie","IdSerieBase","serieId","subseries","SerieId","_Subserie_props","_Subserie_serie","Subserie","subserieId","trdVersion","SubserieId","_TrdVersion_props","TrdVersion","_User_props","_User_currentSection","currentTrdVersion","_ArchivoxEngine_args","_ArchivoX_args","_ArchivoX_cities","_ArchivoX_countries","_ArchivoX_departments","_ArchivoX_profiles","_ArchivoX_roles","_ArchivoX_sections","_ArchivoX_series","_ArchivoX_subseries","_ArchivoX_trdVersions","_ArchivoX_users","$Context","ArchivoxEngine","_getCitiesAsync","getCitiesAsync","_getCountriesAsync","getCountriesAsync","_getDepartmentsAsync","getDepartmentsAsync","_getProfilesAsync","getProfilesAsync","_getSectionsAsync","getSectionsAsync","_getSeriesAsync","getSeriesAsync","_getSubseriesAsync","getSubseriesAsync","_getTrdVersionsAsync","getTrdVersionsAsync","_getUsersAsync","getUsersAsync","_getRolesAsync","getRoles","_searchCaseFilesAsync","searchCaseFilesAsync","ArchivoxProvider","useArchivox","profiles","roles","getRolesAsync","ArchivoX","archivoxEngine","_searchCaseFilesAsync2","EntityViewColumnFormat","ActionType","CaseFileFinder","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","setPartialRequest","_useArchivox2","isArchivoxLoading","setHeight","onSearchAsync","closeOnAccept","serie","subserie","seccion","responsibleUser","_superPropBase","PermissionAssignmentType","PermissionLevel","GetPermissionAssignmentString","assignmentType","allAuthenticatedUsers","anonymousUsers","contact","profile","PermissionAssignmentTypeDataSource","DataType","GetPermissionLevelString","permissionLevel","owner","contributor","PermissionLevelDataSource","ControlType","EntityType","documentRepository","NativeEntitySchemas","uniqueIdentifier","NativeType","Holiday","Gender","EthnicGroup","ArchivoxDocument","Expediente","InputFile","OutputFile","InternalComunication","IdentificacionType","ApplicationDocument","IsNativeType","_CField_schema","_CField_id","CField","controlType","_CControl_instances","_CControl_attributeId","_CControl_attributeCode","_CControl_errorMessage","_CControl_parentId","_CControl_visibleRule","_CControl_requiredRule","_CControl_onRenderLabel","_CControl_valideRule","_CControl_subscribers","_CControl_initializeComponent","CControl","_CField","____args","attributeId","attributeCode","colXl","colXxl","colXxxl","ignoreChanges","runtime","isRuntime","onReadValue","onWriteValue","engine","createLoginEngine","currentForm","visibleRule","requiredRule","validationRule","_CComboBox_args","_CComboBox_datasource","CComboBox","_CControl","getDataSources","datasource","getText","textBinding","dataSource","JSRuleErrorType","_CRuleError_message","_CRuleError_type","CRuleError","Reference","_Attribute_args","_Attribute_relatedEntity","Attribute","defaultAttributeNames","isPrimaryKey","relatedEntityId","project","findEntity","_EntityViewColumn_args","EntityViewColumn","_EntityView_args","_EntityView_columns","EntityView","entityId","viewId","paginateEntityViewAsync","primaryKey","_Entity_args","_Entity_attributes","_Entity_view","_Entity_buildViews","foreignKeys","isNative","isParametric","_CalculatedField_args","_CalculatedField_valueRule","_CalculatedField_onInit","FormNotFoundException","formVersionId","CalculatedField","calculatedValueRule","_CCard_args","CCard","previewImageSrc","iconSrc","activity","showAsSecondaryTitle","_CCaseFileSelector_args","CCaseFileSelector","_CComboBox","_CCheckBox_args","CCheckBox","_CCitySelector_args","CCitySelector","departmentFilterId","_CColorSelector_args","CColorSelector","showOnlyActiveItems","_CCountrySelector_args","CCountrySelector","_CNumberField_args","CNumberField","_CCurrencyField_args","CCurrencyField","_CNumberField","AuthenticationType","noAuth","bearerToken","basicAuth","entraIdBearerToken","procesoxEntity","procesoxQuery","webService","sharepointList","inlineData","sqlQuery","_CDatePicker_args","_CDatePicker_minValue","_CDatePicker_maxValue","_CDatePicker_value","ArgumentTypeException","expected","CDatePicker","isNotEmpty","maxValueFieldId","getField","minValueFieldId","maxValueField","greaterThan","minValueField","lessThan","_DataTableRow_args","DataTableRow","throwIfNull","_CDataTableColumn_args","_CDataTableColumn_fluent","ItemEditorLayout","XDataTableColumn","customValue","entityDataTable","fieldId","createFormInstance","isUpdate","CDataTableColumn","_CListControl_args","_CListControl_columns","_CListControl_formId","CListControl","formId","minItems","itemEditorLayout","hasCustomQuery","dataTable","getForm","connectors","findForm","CommandBarItemVisibilityMode","alwaysVisible","singleItemSelected","oneOrMoreItemsSelected","noSelection","_CCommandBarItem_args","_CCommandBarItem_visibleRule","_CCommandBarItem_executeVisibleRule","CCommandBarItem","ruleResult","visibilityMode","_CDataSource_schema","_CDataSource_items","CommandBarAction","CDataSource","createItem","editItem","deleteItem","openPanel","_DataTableRowCollection_table","_DataTableRowCollection_data","DataTableRowCollection","_CDataTable_args","_CDataTable_commandBarItems","_CDataTable_datasource","_CDataTable_filterDatasources","_CDataTable_selectedItems","_CDataTable_jsxConnection","_CDataTable_formInstance","CDataTable","_CListControl","executeOnOpenPanelEvent","onOpenPanel","createLogixInstance","dsSchemas","runtimeDataSources","dsSchema","dataSourceType","dataSourceEntityId","dataSourceEntityViewId","initializeFormInstance","onRefresh","executeEntityDataTableAsync","onAddItem","onOpenSubForm","disposeFormInstance","onEditItem","allowAddItems","orderBy","commandBarItem","getAsContextualMenuItem","customEvent","eventRule","onShowSuccessToast","showSuccessToast","onCreateHttpClient","onCloseCallback","showMessage","onOpenDialog","openDialog","_CDateTimePicker_args","_CDateTimePicker_minValue","_CDateTimePicker_maxValue","CDateTimePicker","_CDepartmentSelector_args","CDepartmentSelector","countryFilterId","_FileUploaderItem_props","_FileUploaderItem_percentage","_FileUploaderItem_maxChunkSize","_FileUploaderItem_retryCount","_FileUploaderItem_loading","_FileUploaderItem_startFileCreationResponse","_FileUploaderItem_appendContentResponse","_FileUploaderItem_pending","_FileUploaderItem_uploadContentAsync","_FileUploaderItem_retryUploadContent","FileUploaderItem","startChunk","nextChunk","endRead","lengthRead","onAppendContent","onContentUploadCompleted","onItemCreated","onchange","onRetryAppendContent","retryResult","startAsync","onStartCreation","onItemCanceled","documentId","_FileUploader_props","_FileUploader_newFiles","_FileUploader_onChanged","FileUploader","fileEntry","onStartCreationAsync","onMessage","onCompletedAync","onAppendContentAsync","_saveChangesAsync","_CFileManager_files","_CFileManager_fileManager","_CFileManager_onCompletedCallback","_CFileManager_args","_CFileManager_initializeComponent","CFileManager","prx","itemId","createChunkDocumentAsync","DocumentId","appendChunkContentAsync","Complete","NextChunk","allowedExtensions","saveChangesAsync","_CGanttDataSource_args","_CGanttDataSource_start","_CGanttDataSource_end","GanttDiagramGridLineType","CGanttDataSource","projectStartDate","projectEndDate","resources","holidays","both","_CGanttDiagram_args","gridLineTypeToString","CGanttDiagram","gridLineType","allowFiltering","allowResizing","allowSorting","showColumnMenu","_CImage_args","CImage","_CLabel_args","CLabel","_CRow_args","_CRow_children","CRow","cast","_CTextField_args","_CLabel","CSubtitle","CTextField","_CTimePicker_args","_CTimePicker_minValue","_CTimePicker_maxValue","CTimePicker","FormLayout","CTitle","dataTablePage","_CUserSelector_args","CUserSelector","DocumentCardType","XCalculatedField","_ReactComponent_args","DocumentCardContext","DocumentCardBase","_onAction","onClickHref","onClickTarget","accentColor","actionable","documentCardContextValue","DocumentCardPreviewGlobalClassNames","iconContainer","DocumentCardActivityGlobalClassNames","multiplePeople","avatars","avatar","DocumentCardTitleGlobalClassNames","DocumentCardLocationGlobalClassNames","rootActionable","rootCompact","DocumentCard","locationClassNames","titleClassNames","previewClassNames","activityClassNames","DocumentCardPreviewBase","_renderPreviewList","previewImages","getOverflowDocumentCountText","maxDisplayCount","overflowDocumentCount","overflowText","fileListItems","fileIndex","fileListIcon","fileListLink","linkProps","fileList","fileListOverflowText","preview","isFileList","_renderPreviewImage","previewImage","previewIconProps","previewIconContainerClass","previewIcon","DocumentCardPreview","DocumentCardTitleBase","_titleElement","_truncateTitle","_needMeasurement","_truncateWhenInAnimation","originalTitle","_clientWidth","overFlowRate","truncatedLength","truncatedTitleFirstPiece","truncatedTitleSecondPiece","_shrinkTitle","titleElement","shouldTruncate","_updateTruncation","_timerId","DocumentCardTitle","CardComponent","UXCheckBox","onUpdated","UICitySelector","setOptions","departmentField","ComboBoxComponent","asFluentUI","CountrySelectorComponent","CurrencyFieldComponent","ChildFormComponent","showAccept","isSaving","setIsSaving","onSaved","onBeforeSave","onSavingError","validateForm","invokeOnClick","XForm","activityInstance","defaultIFieldSchema","ReactComponent","_DataTableColumn_args","DataTableColumn","_Field_args","Field","_DataTableLegacy_columns","DataTableLegacy","_Field","_FormLegacy_args","_FormLegacy_fields","_FormLegacy_objectId","FormLegacy","__rebuidFields","selectedFieldId","_CProject_args","_CProject_entities","_CProject_nativeEntities","_CProject_reactComponents","_CProject_forms","_project","CProject","entities","reactComponents","forms","CForm","selectMany","codeOrId","guidValue","_DialogRef_args","getFlowEditorTabKey","identifiers","commandBarItemId","formEditorSlice","wizardPageData","tabPageState","flows","currentTab","setFormSchema","setPartialFormSchema","_action$payload2","addFormField","_action$payload3","setPartialForm","_action$payload4","removeField","_action$payload5","setFormFields","_action$payload6","setPartialFieldSchema","_action$payload7","setPartialCommandBarItem","_action$payload8","setProject","setWizardPageState","_action$payload9","tabId","removeWizardPage","setTabPageState","_action$payload10","removeTabState","removeForm","setPropertyEditor","propertyEditor","setCurrentTabId","currentTabId","setReactFlow","_action$payload11","setPartialReactFlow","_action$payload12","setReactFlowNode","_action$payload13","nodeId","setPartialReactFlowNode","_action$payload14","mountFlowEditor","flow","selectNode","clearNodeSelecion","XDevelopDataTable","devProps","ide","_useSelector2","formEditor","pageState","addField","maxRowOrder","getCurrentForm","getFormEntity","onEditEntity","onEditForm","onEditReactComponent","insertRowAfter","referenceFieldId","parta","partb","newFields","insertRowBefore","Project","setPartialField","setWizardPageData","updateRowOrder","useTabState","setPartialState","useWizardPage","setCurrentStep","setPartialData","setPartialErrors","getProjectSchema","getPropertyEditor","setFieldValue","setCurrentFieldValue","getCurrentField","objectType","setCommandBarItemValue","useProcesoxEditor","editor","rawCommandBarItems","reqeust","DataTableComponent","dtRefresh","childForm","setChildForm","connect","__dev","fluentStandarDataTableColumn","buildCommandBarItems","isStandarPanel","onCancel","updateRow","DatePickerComponent","DateTimePickerComponent","XDepartmentSelector","countryField","CaseFileSelectorComponent","showPanel","setshowPanel","allowCreate","caseFile","expedienteId","searchType","FileManagerComponent","processes","setIsDropping","fileManager","enqueueFileEntry","allowDelete","onGetFileName","showConfirmAsync","onDeleteFiles","onShowFoldersChanged","pendingFiles","showError","autoStartUpload","onGetExtension","comnnadBarItems","allowDragAndDrop","DialogRef","_PanelRef_args","PanelRef","_FlowConnection_engine","_FlowConnection_schema","UIDialogForm","FlowConnection","sourceHandle","targetHandle","_InputHandle_args","InputHandle","_FlowNode_engine","_FlowNode_schema","FlowNode","_FlowNodeBase","targetHandleId","findEdge","getSourceNode","findEdges","getInputNode","sourceHandleId","getTargetNode","handleId","targetNode","getConnectionEdges","_this$getInputNode4","preprocessors","isSafeType","findPreprocessor","execute","preprocessor","_this$getOutputNode2","getOutputNode","connector","_this$getInputNode6","FlowNodeBase","metadataSymbol","BooleanNode","_FlowNode","outputHandle","_FormBaseNode_options","createPreprocessor","FormBaseNode","onGetFormId","$form","allowedTypes","checkBox","numberField","timePicker","dateTimePicker","citySelector","userSelector","sectionSelector","countrySelector","departmentSelector","$fields","getDataType","createHandle","_CurrentFormNode_ref","_CurrentFormNode_executed","CurrentFormNode","_FormBaseNode","formHandle","executeOnClient","executeOnServer","_FormSelectorNode_formRef","NodeColors","Long","fieldSelector","formSelector","dataTableColumn","notEquals","sum","FormSelectorNode","writeLog","formIdHandleId","_ComboBoxNode_ref","ComboBoxNode","inputEdge","formIdHandle","inputNode","cbx","fieldHandle","selectedItemHandle","selectedTextHandle","selectedValueHandle","getFormId","_DataTableNode_datatableRef","ComparisonOperator","DataTableNode","fieldHandleId","selectedItemHandleId","selectedItemsHandleId","LogicEngineNodeType","lessThanOrEquals","greaterThanOrEquals","notContains","notStartsWith","notEndsWith","_DataTableFieldSelectorNode_table","_DataTableFieldSelectorNode_fields","_DataTableFieldSelectorNode_row","_DataTableFieldSelectorNode_rows","_DataTableFieldSelectorNode_parseRow","LogicEngineNodeTypes","aggregate","and3","and4","and6","conditionalAction","conditionalRule","containsRole","countItems","dataTableColumnSelector","divisionRule","entityAttribute","filterItems","multiplicationRule","or3","or4","or6","dataTableFieldSelector","sum3","uxContainer","uxLabel","uxLink","uxLinkPanel","consoleLog","saveForm","closePanel","refreshDataTable","buttonNode","sendEmail","updateForm","loadForm","createProcessInstanceVariable","updateInputFile","closeDialog","redirect","navigateTo","inputFile","contactString","setFormValues","setCurrentFormValues","not","readParameter","currentUser","codeAction","sqlAction","sqlRule","dataTableRequest","dataTableResponse","setDataTableFormValues","createSingleEntityItem","updateSingleEntityItem","deleteSingleEntityItem","dataTableRequestFilter","loadSingleEntityItem","loadEntityItem","createCaseFileDocument","fieldDataSource","formDataSource","DataTableFieldSelectorNode","formData","dtForm","executeInput","inputDataTable","__table","sourceNodeType","NumberNode","inputValue1","StringNode","outputHandleId","FilterItemsNode","getList","comparison","comparisonId","inputList","_FieldSelectorNode_controlRef","CountItemsNode","FieldSelectorNode","_PXConnector_args","PXConnector","onValuesChange","onReadObject","_InputFileNode_instances","_InputFileNode_connector","_InputFileNode_readProperty","InputFileConnector","_PXConnector","InputFileNode","getConnector","readObject","$subject","$administrativeProcedureId","administrativeProcedureId","$pqrsClassificationId","pqrsClassificationId","$contactId","contactId","$contactFirstName","contactFirstName","$contactLastName","contactLastName","$contactEmail","contactEmail","$contactPhoneNumber","contactPhoneNumber","$contactAddress","contactAddress","$contactIdentificationTypeId","contactIdentificationType","$contactIdentificationNumber","contactIdentificationNumber","$contactProfessionId","contactProfessionId","$contactTypeId","contactTypeId","$statusId","statusId","ParameterConnector","ReadParameterNode","ScopeNode","EqualsNode","getInputValue","$input1","$input2","ComparisonNode","_this$getInputNode2","input1HandleId","input2HandleId","_LessThanNode_instances","_LessThanNode_getInputValue","GreaterThanNode","_ComparisonNode","LessThanNode","NotEqualsNode","inputEdge1","inputNode1","inputEdge2","inputNode2","inputValue2","NotNode","_ButtonRef_args","_ButtonRef_onChanged","Or2Node","input1","input2","Or3Node","_FlowNode2","input3","value3","Or4Node","_FlowNode3","input4","value4","Or6Node","_FlowNode4","input5","input6","value5","value6","And2Node","And3Node","And4Node","And6Node","ButtonRef","_ButtonNode_ref","ButtonNode","textValue","textHandle","_this$executeInput2","visibleHandle","formRef","$___onVisibleChanged","visibleEdge","visibleValue","_this$executeInput3","disabledHandle","$___onDisabledChanged","disabledEdge","disabledValue","_this$executeInput4","enabledHandle","$___onEnabledChanged","enabledEdge","enabledValue","executeOutput","nextHandle","refHandle","_LoadFormNode_ref","_LoadFormNode_data","LoadFormNode","$formId","$itemId","$readonly","argumentsAccetedTypes","paramA","$paramA","paramB","$paramB","paramC","$paramC","paramD","$paramD","onLoadPageDataArgs","getPageDataV2Async","keyField","$next","inputFormNode","$trigger","$ref","_OpenDialogNode_ref","_OpenDialogNode_button1","_OpenDialogNode_button2","_CloseDialogNode_form","OpenDialogNode","button1","button1Handle","button2","button2Handle","triggerHandle","formRefHandle","CloseDialogNode","_this$executeInput","inputPanelHandle","PanelTypeNode","_OpenPanelNode_instances","_OpenPanelNode_formRef","_OpenPanelNode_panelRef","_OpenPanelNode_panelType","_OpenPanelNode_title","_OpenPanelNode_showAcceptButton","_OpenPanelNode_customButton1","_OpenPanelNode_customButton2","_OpenPanelNode_customButton3","_OpenPanelNode_mapFields","_OpenPanelNode_mapButtons","_ClosePanelNode_form","OpenPanelNode","inputFormIdHandle","panelTypeHandle","titleHandle","showAcceptButtonHandle","onAcceptHandle","onCloseHandle","formNode","findNode","$getInputNode","__form","nodeProps","__getInputForm","connectableControlTypes","currencyField","_this$executeInput5","mappingValue","customButton1","customButton1Handle","customButton2","customButton2Handle","customButton3","customButton3Handle","outputFormHandle","_FetchNode_controlRef","ClosePanelNode","panelRefNode","$inputPanel","FetchNode","createHttpClient","CodeRuleNode","inputA","getInput","inputB","inputC","inputD","inputE","$paramE","inputF","$paramF","inputG","$paramG","inputH","$paramH","inputI","$paramI","inputJ","$paramJ","$paramK","$paramL","$paramM","$paramN","$paramO","$paramP","$output","CodeActionNode","_CodeRuleNode","ConcatStringNode","ConditionalActionNode","conditionHandle","trueHandle","falseHandle","ConditionalRuleNode","conditionHandleId","conditionEdge","conditionNode","trueHandleId","trueEdge","trueNode","falseHandleId","falseEdge","falseNode","ConsoleLogNode","inputHandleId","input1Edge","input1Node","nextHandleId","nextEdge","nextNode","CreateCaseFileDocument","$name","showConfirmationDialogAsync","saveV2Async","$caseFile","$author","$documentDate","$transmisionDate","$receptionDate","$documentTypeId","$documentalTypeId","$folderId","$keywords","$description","$initialPage","$finalPage","$fileName","$url","$externalDocument","$physicalLocation","$physicalShelf","$physicalSide","$physicalTier","$physicalBox","$physicalFolder","$physicalCustodianCompany","$physicalPages","$physicalStartDate","$physicalEndDate","_CurrentUserNode_instances","_CurrentUserNode_connector","_CurrentUserNode_readProperty","CurrentUserConnector","CurrentUserNode","outputHandles","loginname","profileId","identificationNumber","DataTableRequestFilterNode","DataTableRequestNode","$orderColumn","$page","$search","$length","$sortDirection","DataTableResponseNode","$items","$totalItems","DateTimeNode","$now","$year","$month","$date","$hour","$minute","$second","$dateonly","$timeonly","MathOperationBaseRule","inputId","inputHandle","DivisionRuleNode","_MathOperationBaseRul","num1","processArrayArray","processArrayNumber","DataSourceNode","$datasource","$fieldId","FieldDataSourceNode","_DataSourceNode","FormDataSourceNode","InitNode","initHandle","initNode","$init","LoadEntityItemNode","$entityId","MultiplicationRuleNode","NavigateToNode","urlHandle","PercentageNode","getCountInputNode","QueryStringNode","URLSearchParams","_RefreshDataTableNode_ref","RefreshDataTableNode","dataTableRefHandle","dataTableRefNode","_SaveFormNode_form","ResultNode","SaveFormNode","inputFormIdNode","processOpenPanelNode","onSavedHandle","onErrorHandle","triggerHandleId","SetCurrentFormValuesNode","inputIds","getInputNodes","_getInputValue","_SetDataTableFormValuesNode_tableRef","_SetDataTableFormValuesNode_formRef","SetDataTableFormValuesNode","dataTableRef","$dataTableRef","formInstance","control","_SetFieldValueNode_ref","SetFieldValueNode","_getInputField","fieldRefHandle","valueHandle","_SetFormValuesNode_ref","SetFormValuesNode","ShowMessageNode","inputTitleEdge","inputTitleNode","inputTextEdge","inputTextNode","ShowSuccessToastNode","SqlQueryActionNode","SqlQueryRuleNode","_Sum2Node_instances","_Sum2Node_getInputValue","Sum2Node","outputs","LabelNode","UpdateEntityItemNode","UpdateFormNode","inputTriggerHandle","itemIdHandle","UpdateInputFileNode","setting","subjectEdge","administrativeProcedure","procedureEdge","procedure","createDescriptor","displayText","pqrsClassification","_LogicEngine_nodes","_LogicEngine_edges","_LogicEngine_form","_LogicEngine_type","_LogicEngine_args","allowMultipleInputs","LogicEngineSetttings","clientRuntimeTypes","LogicEngine","resultNode","_CDataSourceCollection_dataSources","_CDataSourceCollection_archivox","CDataSourceCollection","pageDataSources","pageDataSource","_CPage_args","_CPage_entryPoint","_CPage_isLoading","_CPage_dataSourceCollection","CPage","dataSources","entryPoint","initialValues","loadItems","getPageDataV1Async","loadItem","getFieldDataSource","procesoxEngine","_CReactComponent_args","CReactComponent","_ProcesoxEngine_args","_ProcesoxEngine_pages","_ProcesoxEngine_projectsV1","_ProcesoxEngine_parseDictionaryToQueryParams","ProcesoxEngine","projectId","aadPostArrayBuffer","zipContent","FormData","aadPostFormDataAsync","aadPostAsync","aadPut","rootFormId","_page","_page2","jsPage","getPageV1Async","aadGetJson","_page3","_page4","getPageV2Async","_result2","toQeryString","Items","KeyBinding","TextBinding","_callee19","_context19","_callee20","_context20","_callee21","_context21","_callee22","_context22","_callee23","_context23","_callee24","_context24","aadDelete","_callee25","_context25","_callee26","_context26","_callee27","_context27","_callee28","_context28","_callee29","_context29","_callee30","_context30","objectTypeId","_callee31","_context31","_callee32","_context32","_callee33","_context33","_callee34","_context34","_callee35","_context35","_callee36","_context36","_callee37","_context37","_callee38","_context38","_callee39","_context39","_callee40","_context40","_callee41","_context41","_callee42","_context42","_callee43","_context43","_callee44","_context44","_callee45","_context45","_callee46","_context46","_callee47","_context47","decisionId","_callee48","_context48","_callee49","_context49","ruleName","$ProcesoxContext","_procesoxContext","DialogProvider","panels","setPanels","dialogs","setDialogs","onInit","nextPanels","dialog","nextDialogs","ProcesoxProvider","dialogProviderSettingsRef","registerStandarComponent","registerCustomComponent","useProcesox","engineRef","elementRect","popupRect","parentDocument","XFileManager","procesox","originalItemId","onCompletedCallback","Filename","Length","CreatedBy","CreationDate","paginateFieldDocumentsAsync","getDocumentViewerUrlAsync","showFileViewer","globalTimeOut","DEFT_MAT_WIDTH","DEFT_MAT3_WIDTH","DEFT_FAB_WIDTH","DEFT_FLUENT_WIDTH","DEFT_BOOT_WIDTH","DEFT_BOOT4_WIDTH","DEFT_BOOT5_WIDTH","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_MATERIAL3SPIN","CLS_FABRICSPIN","CLS_FLUENTSPIN","CLS_TAILWINDSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_BOOT5SPIN","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINARC","CLS_SPINLABEL","CLS_SPINTEMPLATE","spinTemplate","spinCSSClass","createSpinner","internalCreateElement","makeElement","spinnerContainer","spinnerInnerContainer","inner_wrap","create_spinner_container","getTheme","calculateRadius","labelEle","createLabel","replaceContent","innerContainer","random_generator","timeOut","create_material_element","mat_calculate_attributes","createMaterialSpinner","createMaterial3Spinner","create_fabric_element","fb_calculate_attributes","createFabricSpinner","createFluentSinner","svgBoot","viewBoxValue","trans","defaultRadius","bootCircle","create_bootstrap_element","startArc","defineArcPoints","circleEle","boot_calculate_attributes","createBootstrapSpinner","createHighContrastSpinner","createBootstrap4Spinner","createBootstrap5Spinner","createTailwindSpinner","generateSeries","formSeries","combine","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","svgMaterial","matCirclePath","animateMaterial","spinnerInfo","globalInfo","previousId","parsed","getSize","strokeSize","getStrokeSize","mat_animation","updatePath","getDashOffset","createCircle","easeAnimation","drawArc","timecount","innerConainer","trgClass","defineCircle","endArc","defineArc","showSpinner","showHideSpinner","isHide","spinnerWrap","spinWrapCollection","svgEle","isAnimate","globalObject","globalVariables","timeOutVar","startMatAnimate","boot_animate","animateBootstrap","hideSpinner","targetContainer","fixedParent","calculateRelativeBasedPosition","fixedElement","anchorPos","tempAnchor","calculatePosition","positionX","positionY","targetValues","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","updatePosition","getBodyScrollTop","getBodyScrollLeft","popupWidth","viewPortElement","elemData","containerWidth","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","elemOffset","topCollideCheck","xAxis","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","updateElementData","setPosition","leftFlip","topFlip","transformStyle","DOMMatrix","setPopup","eStatus","deepCheck","collideSide","getTargetContainerLeft","getTargetContainerTop","documentReact","PositionData","CLASSNAMES","setEnableRtl","refreshPosition","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","resolveCollision","checkCollision","relateTo","collisionDestroy","orientationOnChange","getRelateToElement","scrollRefresh","parent_2","relateToElement","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","parent_3","checkGetBoundingClientRect","windowView","elementView","parent_4","reposition","relateToElem","collision","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","targetType","callFlip","callFit","viewPortRect","horz","vert","relativeElement","fmDialogContainer","zIndexElement","getZindexPartial","hideAnimation","parentStyle","overflowRegex","parentZindex","childrenZindex","isEqualNode","siblingsZindex","finalValue","currentZindexValue","Input","containerAttributes","TEXTBOX_FOCUS","isBindClearAction","bindInitialEvent","checkInputValue","floatLabelType","focusHandler","getParentNode","calculateWidth","bindFocusEventHandler","blurHandler","bindBlurEventHandler","inputHandler","bindInputEventHandler","__eventHandlers","inputParent","grandParent","_focusFn","_blurFn","wireFloatingEvents","unwireFloatingEvents","createFloatingInput","createInputContainer","customTag","floatLinelement","floatLabelElement","encodePlaceHolder","inputWrap","updateLabelState","inputFloatHandler","validateLabel","inputEventHandler","blurFloatHandler","blurEventHandler","unWireFloatLabelEvents","checkFloatLabelType","updateIconState","wireClearBtnEvents","clickHandlerEvent","inputHandlerEvent","focusHandlerEvent","blurHandlerEvent","spanEle","oldClass","elementWidth","setPlaceholder","setReadonly","setEnabled","isEnable","inputContainer","disabledAttrs","considerWrapper","removeAttributes","setClearButton","isClear","clearButton","insertAdjacentElement","createClearButton","createSpanElement","labelSpanElement","_internalRipple","isRipple","argsButton","_onMouseDownRipple","_onMouseUpRipple","parentEle","createIconEle","iconClass","prependSpan","innerWrapper","appendSpan","validateInputType","containerElement","getInputValidClassList","createInput","bindClearAction","showClearButton","setPropertyValue","focusHandler_1","blurHandler_1","inputHandler_1","unbindInitialEvent","unWireClearBtnEvents","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","setRipple","addIcon","internalCreate","result_2","updateHTMLAttributesToElement","htmlAttributes","updateCssClass","newClass","updateHTMLAttributesToWrapper","updatedClassValues","setStyle","prevString","tempQueryString","prevElementId","incrementalSearch","ignoreCase","elementId","queryStringUpdated","isVirtual","listItems","strLength","indexUpdated","i_1","inputVal","itemData","queryStr","escapeCharRegExp","itemsData","filterValue","checkField_1","fieldValue_1","ListBase","Query","subQuery","isChild","distincts","queries","fKey","fromTable","lookups","expands","sortedColumns","groupedColumns","lazyLoad","using","dataManager","executeQuery","DataUtil","executeLocal","cloned","subQuerySelector","isCountRequired","addParams","distinct","ignoreAccent","matchCase","Predicate","searchKey","fieldNames","comparer","fnOperators","sortBy","isFromGroup","sortByForeignKey","sorts","fnSort","filterQueries","sortByDesc","pageIndex","pageSize","take","nos","hierarchy","selectorFn","foreignKey","requiresCount","filterQueryLists","singles","isComplex","processOperator","predicates","combinePredicates","ornot","andnot","fromJson","fromJSONData","pred","isAnd","preds","consts","GroupGuid","Adaptor","aggregates","pvt","processResponse","JsonAdaptor","processQuery","countFlg","keyCount","agg","lazyLoadData","lazyLoadGroup","getAggregate","onDemandGroupInfo","onPage","formGroupResult","onWhere","childLevel","aggQuery","batchRequest","dm","deletedRecordsLen","deletedRecords","addedRecords","changedRecords","onAggregates","getFieldList","onSortBy","fnCompare","onGroup","onRange","onTake","onSkip","onSelect","UrlAdaptor","hierarchyFilters","getQueryRequest","searches","callAdaptorFunction","getFiltersFrom","getRequestQuery","reqParams","jsonDateReplacer","pvtData","convertToQueryString","request1","selects","handleTimeZone","timeZoneHandling","parseJson","requests","groupDs","isExpand","formRemoteGroupedData","getAggregateResult","getGroupedRecords","hasRecords","childGroupedRecords","batchUrl","crudUrl","removeUrl","added","deleted","getAddParams","insertUrl","keyColumn","updateUrl","pKey","predicats","aggregateData","isServerGrouping","groupQuery","ODataAdaptor","multipartAccept","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","requiresCast","replacer","odBiOperator","odUniOperator","odv4UniOperator","splittedStringValue","splittedValue","onComplexPredicate","onEachWhere","onEachSearch","onEachSort","onCount","metaCheck","rootUrl","dataUrls","resourceTableName","dataCopy","emptyAndBatch","processBatchResponse","versionCheck","oDataCount","requiresFormat","keys_4","localTimeReplacer","convertObj","dateParse","toLocalTime","localTime","compareAndRemove","initialGuid","getGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","generateBodyContent","org","cIdx","jsonObj","exVal","changeGuid","ODataV4Adaptor","onExpand","exArr","sel","close_1","combineVal","expandQueryIndex","ex","onDistinct","distinctFields","metaName","metaV4Name","dataUrl","dataCount","dataV4Count","WebApiAdaptor","_loop_2","_loop_3","WebMethodAdaptor","RemoteSaveAdaptor","updateKey","CustomDataAdaptor","getData","addRecord","updateRecord","deleteRecord","batchUpdate","CacheAdaptor","GraphQLAdaptor","getVariables","getQuery","datamanager","urlQuery","vars","resData","inserted","generateCrudData","bData","crudData","getMutation","adaptor","isCrudAction","isInsertAction","cacheAdaptor","guidId","forDel","requestTime","currentFilter","newQuery","cachedItems","crossDomain","DataManager","persistQuery","isInitialLoad","offline","timeTillExpiration","cachingPageSize","jsonp","isCors","defaultQuery","isDataAvailable","getPersistedData","persistedData","persistData","setPersistQuery","persistedQuery","allPredicates","predicateObj","nestedPredicates","nestedPredicate","setDefaultQuery","buildHierarchy","makeRequest","deffered","Deferred","isCustomDataAdaptor","getDeferedArgs","extendRequest","fnSuccess","fnFail","processData","isSelector","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","subUrl","childReq","subData","isGraphQLAdaptor","fetchReqOption","virtualRecords","fetch_1","pResult","cResult","dofetchRequest","deff_1","fetch_2","successFunc","failureFunc","fetchDeffered","fetchFunc","fetch_3","clearPersistence","wildCard","asteriskSplit","optionalSplit","like","fnAscending","fnDescending","extractFields","jsonArray","isLazyLoad","jsonData","indx","childLevels","grouped","groupedArray","this_2","getVal","tempObj","aggs","grp","fKeyData","copyObj","lowerCaseNameSpace","upperCaseNameSpace","casing","middle","ignoreDiacritics","diacritics","fnName","param1","param2","adp","getItemFromComparer","castRequired","requiresCompleteRecord","prepareQuery","sampledata","requiresCounts","predicateList","getPredicate","sorted","mainPred","childPred","cpre","serverTimezoneOffset","truecount","falsecount","operatorSymbols","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","doesnotcontain","isnotnull","isnull","startswith","doesnotstartwith","isempty","isnotempty","wildcard","endswith","doesnotendwith","processSymbols","jsonText","iterateAndReviveArray","iterateAndReviveJson","jsonReviver","toTimeZone","secondsMs","utcFormat","hrs","mins","addSelfOffset","jsonReplacer","arrayReplacer","keys_3","toUTC","datefn","differenceString","localtimefn","norm","ul","hasChild","iconWrapper","anchorWrap","navigable","getFieldValues","dataItem","fieldData","dataField","compileTemplate","defaultMappedFields","iconCss","hasChildren","urlAttributes","imageAttributes","groupBy","defaultAriaAttributes","listRole","groupItemRole","wrapperRole","defaultListBaseOptions","showCheckBox","expandCollapse","listClass","itemClass","processSubChild","sortOrder","groupTemplate","headerTemplate","expandIconClass","expandIconPosition","itemNavigable","createListFromArray","isSingleLevel","componentInstance","generateUL","createListItemFromArray","curOpt","getModuleClass","itemCreating","generateSingleLevelLI","generateLI","itemCreated","createListItemFromJson","checkboxElement","anchorElement","typeofData","curItem","innerEle","tooltipText","tooltipTextElement","imageElemnt","iconElement","createListFromJson","elementArray","addSorting","getDataSource","typeof","elementAttributes","getAllAttributes","subDS","subLi","innerElements","grpLI","elementID","anchorTag","isFullNavigation","anchorWrapper","uID","compiledString","compiledElement","groupTemplateID","templateID","innerDiv","liElement","ulElement","createList","getSiblingLI","isPrevious","siblingLI","liIndex","liCollections","groupDataSource","curFields","cusQuery","itemObj","grpItem","newtext","createJsonFromElement","curEle","jsonAr","childs","attributes_1","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","headerItems_1","headerData","generateIcon","SkeletonType","ShimmerEffect","cssClassName","TEXTSHAPE","CIRCLESHAPE","SQUARESHAPE","RECTANGLESHAPE","WAVEEFFECT","PULSEEFFECT","FADEEFFECT","VISIBLENONE","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","Skeleton","updateDimension","updateShape","updateEffect","updateVisibility","shapeCss","removeCss","shimmerEffect","FieldSettings","dropDownBaseClasses","DropDownBase","preventChange","isPreventChange","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isRequesting","isVirtualizationEnabled","isCustomDataUpdated","isAllowFiltering","virtualizedItemsCount","isCheckBoxSelection","remoteDataCount","isRemoteDataUpdated","isIncrementalRequest","virtualListHeight","isVirtualScrolling","isPreventScrollAction","scrollPreStartIndex","isScrollActionTriggered","previousStartIndex","isMouseScrollAction","isKeyBoardAction","isScrollChanged","isUpwardScrolling","currentPageNumber","pageCount","isPreventKeyAction","generatedDataObject","skeletonCount","isVirtualTrackHeight","virtualSelectAll","incrementalQueryString","incrementalEndIndex","incrementalStartIndex","incrementalPreQueryString","isObjectCustomValue","appendUncheckList","getInitialData","preventPopupOpen","virtualListInfo","sentinelInfo","viewPortInfo","selectedValueInfo","getPropObject","newProperty","oldProperty","getValueByText","listData","checkValueCase","isTextByValue","typeOfData","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","compareValue_1","itemValue","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","l10nUpdate","actionFailure","noRecordsTemplate","actionFailureTemplate","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","noDataElement","liElem","componentLocale","getLocaleName","l10n","checkAndResetCache","virtualItemStartIndex","virtualItemEndIndex","updateIncrementalInfo","updateVirtualItemIndex","resetList","updateIncrementalView","UpdateSkeleton","getFilteringSkeletonCount","currentSkeletonCount","getSkeletonCount","skeletonUpdated","GetVirtualTrackHeight","virualElement","getTransformValues","retainSkeleton","listContainerHeight","actualCount","listItemHeight","virtualItemCount","heightDimension","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","itemTemplate","getTextByValue","allowCustomValue","enableRtlElements","bindEvent","jsonElement","setListData","renderItemsBySelect","updateDataAttribute","invalidAttr","getJSONfromOption","optionGroup","updateFields","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","isWhereExist_1","emptyDataRequest","isReOrder","queryElements","renderItems","onActionComplete","bindChildItems","setCurrentView","keyboardEvent","handleVirtualKeyboardActions","onActionFailure","virtualGroupDataSource","localDataArgs","childElementCount","updateDataList","updatePopupState","updateRemoteData","remainingItems","sortedData","updateListValues","raiseDataBound","isObjectInArray","objectToFind","findListElement","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","listOption","fixedHeaderElement","postRender","listElement","focusItem","updateVirtualizationProperties","filtering","isCheckbox","listEle","groupcheck","groupValue","tempHeaders","isGroupChecking","createListItems","getSortedDataSource","fieldValues","setFloatingHeader","setFixedHeader","scrollStop","isDownkey","liHeight","getValidLi","topIndex","virtualListCount","isCount","updateGroupHeader","getPageCount","returnExactCount","updateGroupFixedHeader","isCheckBoxUpdate","oldUlElement","virtualUlElement","replaceChild","reOrderList","updateListElements","createVirtualContent","virtualSelectAllData","incrementalLiCollections","incrementalUlElement","incrementalListData","itemcheck","liWidth","firstLi","getIndexByValue","getIndexByValueFilter","selectData","setFields","updateSelectElementData","isFiltering","updateSelection","renderList","updateDataSource","setUpdateInitial","updateData","setZIndex","isEmptyData","rippleFun","removeScrollEvent","addItem","itemsCount","isListboxEmpty","selectedItemValue","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","validationAttribute","getDataByValue","dropDownListClasses","disable","inputFocus","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","filterParent","mobileFilter","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","virtualList","DropDownList","isListSearched","isTouched","IsScrollerAtEnd","valueTempElement","initializeData","activeIndex","isPopupOpen","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initialRemoteRender","isNotSearchList","isTyped","preventFocus","preventAutoFill","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","keyConfigure","popupObj","enableVirtualization","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","previousEndIndex","resetFocusElement","removeHover","removeSelection","removeFocus","previousItemData","resetSelection","getItemData","allowObjectBinding","allowCustom","onChangeEvent","updateInitialData","selectedLI","setSelection","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","setEnable","defaultAttr","getAriaAttributes","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","onBlurHandler","isFilterLayout","focusOutAction","focusOut","onFocusOut","resetValueHandler","formElement","wireEvent","dropDownClick","focusIn","windowResize","bindCommonEvent","keyboardModule","mobileKeyActionHandler","keyActionHandler","bindClearEvent","unBindCommonEvent","onMouseClick","searchKeyEvent","onServerIncrementalSearch","isValidLI","closePopup","currentLi","setHover","updateIncrementalItemIndex","updatingincrementalindex","setScrollPosition","selectedLiOffsetTop","spinnerElement","filterInputObj","preventAction","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isVirtualKeyAction","value_1","filterIndex","focusEle","isSelectFocusItem","virtualIndex","value_2","selectedData","value_3","focusAtFirstElement","value_4","findLi","PageUpDownSelection","unWireEvent","checkSelector","activeStateChange","proxy_1","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","focusedItem","activeItem","valueTemplate","setValueTemplate","clearElement","previousSelectedLI","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","dataValue","dataText","eve","isCustomValue","datas","foundIndex","detachChangeEvent","preItems","selectedElement","onFilterUp","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","filterQuery","filterType","customFilterQuery","takeValue","getTakeValue","alreadySkipAdded","queryTakeValue","querySkipValue","queryElements_1","queryElements_2","queryElements_3","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","isNoData","popupContentElement","focusIndexItem","setSearchBox","popupElement","filterBarPlaceholder","clearIconElement","clearText","searchKeyModule","pasteHandler","renderPopup","updateActionCompleteDataValues","tempItemCount","value_5","checkVal","setInputValue","isValueInList","addNewItem","valueToFind","fieldValue","checkField","value_6","isExist","actionCompleteDataUpdate","updateSelectionList","findEle","highlightedItem","refreshPopup","popupEle","searchBox","popupHeight","setHeaderTemplate","footerTemplate","setFooterTemplate","listitems","searchBoxHeight","getOffsetValue","isEmptyList","createPopup","getFocusElement","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","scrollHandler","selectedElementID","enable","destroyPopup","popupStyles","setPopupPosition","actionList","targetExitViewport","isElementInViewport","popupOffset","listHeight","isInitialSelection","lastElementValue","currentOffset","nextBottom","nextOffset","isScrollerCHanged","boxRange","currentElementValue","liCount","firstElementValue","isPageUpKeyAction","isPopupButton","setEleWidth","isFilterValue","scrollableParentElements_1","dataSourceCount","animModel","fixedHeader","currentData","preselectedIndex","updatedCssClassValues","setReadOnly","getListHeight","selectElement","onselect","listParent","listParentHeight","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","listLength_1","listLength_2","value_7","ddlProps","invokeRenderPopup","proxy_2","onpopstate","pushState","renderHightSearch","isSelectVal","attrArray","ValueFormatter","intl","getFormatFunction","getParserFunction","fromView","toView","setCulture","disableHtmlEncode","allowGrouping","allowReordering","enableGroupByFormat","allowEditing","showInColumnChooser","edit","allowSearching","autoFit","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","getUid","valueFormatter","setFormatter","setParser","commandsTemplate","headerTemplateFn","fltrTemplateFn","editTemplate","filterTemplate","isForeignColumn","ddEditedData","foreignKeyField","foreignKeyValue","sortComparer","a_1","xObj","yObj","getForeignData","getSortDirection","setSortDirection","getFreezeTableName","freezeTable","cols_1","refreshReactColumnTemplateByUid","refreshReactHeaderTemplateByUid","getFormatter","formatFn","getParser","parserFn","getColumnTemplate","getHeaderTemplate","getFilterItemTemplate","getDomSetter","GridColumn","CommandColumnModel","StackedColumn","ICON","CLOSE","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","POPUP_CONTAINER","effect","mouseMoveEvent","mouseMoveTarget","isBodyContainer","formatPosition","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","tipClass","tooltipEle","elePos","mouseTrail","getTooltipPosition","openPopupHandler","closePopupHandler","getScalingFactor","scalingFactors","elementsWithTransform","matrixValues","parentWithZoomStyle","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","findTarget","needTemplateReposition","tooltipEventArgs","opensOn","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","showTipPointer","updateTipPosition","selEle","adjustArrow","leftValue","topValue","tipPosExclude","tooltipWidth","tooltipHeight","arrowInnerELe","tipPointerPosition","POINTER_ADJUST","enableHtmlParse","tempArr","tempFunction","templateFunction","renderCloseIcon","isSticky","tipClose","onStickyClose","existingCloseIcon","addDescribedBy","removeDescribedBy","orgdescribedby","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","targetClick","hideTooltip","targetList_1","ctrlId","target_1","restoreElement","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showTimer","hideTimer","openDelay","beforeRenderArgs","beforeRenderCallback","tooltipBeforeRender","tooltipAfterRender","PopupAnimation","appendContainer","ctrlObj","observedArgs","beforeOpenCallback","openAnimation_1","wireMouseEvents","viewContainerRef","affectedPos","checkCollideTarget","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","eleOffset","windowCollision","arrowleft","positionString","newPos","offsetType","isTooltipOpen","tooltipHide","popupHide","closeAnimation","unwireMouseEvents","tooltipHover","tooltipMouseOut","enteredElement","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","keyDown","touchEnd","triggerList_1","getTriggerList","wireFocusEvents","touchModule","tapHold","targetList","targetsList","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","currentTarget_1","rowDataBound","queryCellInfo","headerCellInfo","actionBegin","actionComplete","dataBound","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDragStart","columnDrag","columnDrop","beforePrint","printComplete","detailDataBound","toolbarClick","batchAdd","batchCancel","batchDelete","cellSaved","beforeDataBound","beforeOpenAdaptiveDialog","resizeStop","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","exportGroupCaption","initialLoad","initialEnd","dataReady","contentReady","uiUpdate","onEmpty","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","sortComplete","filterComplete","searchComplete","reorderComplete","rowDragAndDropComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","refreshAggregates","destroyAutoFillElements","beforeCellFocused","cellFocused","keyPressed","columnVisibilityChanged","scroll","columnWidthChanged","columnPositionChanged","rowsAdded","rowsRemoved","columnDragStop","headerDrop","dataSourceModified","refreshVirtualBlock","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","preventBatch","dialogDestroy","crudAction","addDeleteAction","destroyForm","doubleTap","exportDetailDataBound","exportDetailTemplate","pdfExportComplete","freezeRender","filterOpen","filterDialogCreated","filterMenuClose","initForeignKeyColumn","getForeignKeyData","generateQuery","showEmptyGrid","foreignKeyData","dataStateChange","dataSourceChanged","rtlUpdated","beforeFragAppend","textWrapRefresh","recordAdded","cancelBegin","editNextValCell","hierarchyPrint","expandChildGrid","exportRowDataBound","rowPositionChanged","partialRefresh","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","restoreFocus","detailStateChange","detailIndentCellInfo","virtaulCellFocus","virtualScrollEditActionBegin","virtualScrollEditSuccess","virtualScrollEditCancel","virtualScrollEdit","refreshVirtualCache","editReset","virtualScrollAddActionBegin","getVirtualData","infiniteEditHandler","closeFilterDialog","resetColumns","groupCollapse","refreshHandlers","beforeRefreshOnDataChange","filterDialogClose","refreshCustomFilterOkBtn","refreshCustomFilterClearBtn","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","setFullScreenDialog","refreshExpandandCollapse","rowModeChange","enterKeyHandler","refreshVirtualMaxPage","setVirtualPageQuery","selectRowOnContextOpen","pagerRefresh","closeEdit","resetVirtualFocus","refreshVirtualEditFormCells","scrollToEdit","createVirtualValidationForm","validateVirtualForm","destroyChildGrid","refreshInfinitePersistSelection","afterFilterColumnMenuClose","refreshFrozenPosition","refreshResizePosition","refreshSplitFrozenColumn","renderResponsiveChangeAction","renderResponsiveColumnChooserDiv","showAddNewRowFocus","wrapperInitialize","WRAPPER","ejInstance","getTextNode","childnode","createCheckBox","enableRipple","rippleSpan","frameSpan","labelSpan","rippleMouseHandler","IconPosition","selectedHandler","resizeWestWidth","removeRippleEffect","tempContent","setIconCss","controlStatus","iconPosition","btnClickHandler","unWireEvents","RESIZE_HANDLER","FOCUSED_HANDLER","DIALOG_RESIZABLE","RESTRICT_LEFT","RESIZE_WITHIN_VIEWPORT","dialogBorderResize","originalHeight","originalX","originalY","originalMouseX","originalMouseY","resizeStart","resizeEnd","setLeft","previousWidth","setBorderResizeElm","calculateValues","getDOMElement","domElement","resizers","borderResizers","targetEle","dialogResizeElement","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","topWithoutborder","calculatedTop","boundaryRectValues","currentHeight","rectValues","documentWidth","left_1","removeResize","DialogUtility","ButtonProps","AnimationSettings","DLG_HEADER_CONTENT","DLG_HEADER","DLG_FOOTER_CONTENT","MODAL_DLG","DLG_CLOSE_ICON","DLG_TARGET","SCROLL_DISABLED","DEVICE","FULLSCREEN","DLG_CLOSE_ICON_BTN","DLG_SHOW","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","DLG_RESIZABLE","DLG_RESTRICT_LEFT_VALUE","DLG_RESTRICT_WIDTH_VALUE","DLG_USER_ACTION_CLOSED","Dialog","initRender","enableResize","setResize","animationSettings","getMinHeight","initializeValue","dlgClosedBy","allowMaxHeight","preventVisibility","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","focusContent","checkPositionData","prevOnChange","updatePersistData","dragObj","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","minimumHeight","headerHeight","footerHeight","onResizeStart","dialogObj","onResizing","onResizeComplete","isBlazorServerRender","computedHeight","computedWidth","resizeHandles","directionValue","resizeBegin","resizing","resizeComplete","resizeHandler","createResize","wireWindowResizeEvent","unWireWindowResizeEvent","buttonObj","btnObj","ftrTemplateContent","focusableElements","isTagName","isContentEdit","closeOnEscape","primaryButtonEle","buttonIndex_1","firstPrimary","buttonModel","setCSSClass","initialRender","setzIndex","calculatezIndex","setTargetContent","setButton","allowDragging","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","refElement","resetResizeIcon","openEventArgs","unBindEvent","closeArgs","activeEle","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","getTargetContainer","targetValue","dialogConHeight","resizeIcon","zIndexValue","handleContent","dragEventArgs","buttonContent","buttonType","btn","footerBtn","buttonClickHandler","isFlat","headerEle","innerContentElement","templateValue","isVue","dialogItem","isContent","createHeaderContent","showCloseIcon","closeIconBtnObj","closeIconTitle","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","msGetRegionContent","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","currentzIndex","setMaxWidth","removeAllChildren","classArray","boundWindowResizeHandler","getDimension","isFullScreen","fullScreen","beforeOpenArgs","openAnimation","dialogOpen","closedBy","beforeCloseArgs","getButtons","createDialog","dialogObject","formOptions","formButtonModel","buttonPropModel","alert","alertDialogObj","dialogElement","alertButtonModel","okButton","setAlertButtonModel","alertOptions","confirm","confirmDialogObj","okButtonModel","cancelButtonModel","cancelButton","setConfirmButtonModel","confirmOptions","CheckBoxFilterBase","isExecuteLocal","existingPredicate","foreignKeyQuery","filterState","renderEmpty","isCheckboxFilterTemplate","infiniteRenderMod","infiniteInitialLoad","infiniteSearchValChange","infinitePermenantLocalData","infiniteQueryExecutionPending","infiniteSkipCnt","infiniteScrollAppendDiff","prevInfiniteScrollDirection","infiniteLoadedElem","infiniteDataCount","infiniteLocalSelectAll","localInfiniteSelectAllClicked","localInfiniteSelectionInteracted","infiniteManualSelectMaintainPred","cBoxTrue","cBoxFalse","dlg","keyupHandler","searchHandler","searchBoxKeyUp","foreignKeyFilter","fColl","mPredicate","fPredicate","filterCollection","columnData","ejpredicate","fpred","foreignFilter","isRemote","initalPredicate","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","loadingIndicator","indicatorType","showMaskRow","sIcon","localeObj","getLocalizedLabel","actualPredicate","filteredColumns","filterSettings","allowCaseSensitive","enableInfiniteScrolling","infiniteUnloadParentExistPred","getAndSetChkElem","sBox","hideSearchbox","inputargs","spinner","cBox","showDialog","columnName","columnType","parentsUntil","btnClick","dialogCreated","renderResponsiveFilter","dialogLabel","isResponsiveFilter","showMask","getAllData","getFilterMenuPostion","isBlanks","filterTemplateCol","registeredTemplate","filterItemTemplate","destroyTemplate","clearReactVueTemplates","clearFilter","fltrBtnHandler","appendChildren","searchInput","optr","ddlValue","isMenuNotEqual","fObj","caseSen","isNotEqual","itemsCnt","coll","infiniteFltrBtnHandler","generateNullValuePredicates","notifyFilterPrevEvent","addCurrSelection","existingPredicate_1","initiateFilter","isClearFilter","dummyDefaults","parentCurrentViewDataCount","infiniteSearchPred","arg1","arg2","arg3","arg4","arg5","arg6","foreignQuery","predicte","padZero","addDistinct","filterModel","filterChoiceCount","filterargs","filterObj","getDatePredicate","emptyValPredicte","generatePredicate","fullData","makeInfiniteScrollRequest","filterEvent","processSearch","getPredicateFromCols","isGrid","getForeignKeyColumns","foreignColumn","getColumnByField","getColumnByForeignKeyValue","customQuery","queryGenerate","processDataOperation","filteredColumn","parentFilteredLocalRecords","defObj","eventPromise","dataSuccess","infiniteScrollMouseKeyDownHandler","infiniteScrollHandler","infiniteScrollMouseKeyUpHandler","Global","timer","listDiv","getShimmerTemplate","maskItemHeight","maskRowCount","maskList","wrapperElem","removeMask","computedStyle","maskTemplate","maskSpan","maskLists","infiniteRemoveElements","infiniteAppendElements","removeElem","appendElem","infiniteQuery","existQuery","allPromise","runArray","colData","executeQueryOperations","args1","filteredData","getDistinct","processDataSource","searchSettings","getDataModule","searchQuery","sSettings","updateResult","createFilterItems","updateAllCBoxes","toogleCheckbox","updateInfiniteManualSelectPred","parentTotalDataCount","updateIndeterminatenBtn","setFocus","predmdl","focusNextOrPrev","nextIndex","nextElement","prevElem","cBoxes_1","removeAddCboxClasses","setChecked","createCheckbox","dummyData","extendObjWithFn","checkboxUid","isReactCompiler","isReactChild","parentDetails","parentInstObj","renderTemplates","cBoxes","nullCounter","selectAllValue","createCboxWithWrap","isColFiltered","predicateCheckBox","predicateElement","checkBoxListElem","reduceHeight","increaseHeight","isRndere","updateInfiniteUnLoadedCheckboxExistPred","getCheckedState","selectAllParent","addCurrSelectionParent","updatePredArr","checkState","checkboxFilter","isForeignKey","currentFilterValue","enableCaseSensitivity","foreignDataObj","updateDateFilter","getCaseValue","Data","serviceLocator","dataState","foreignKeyDataState","initDataManager","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","toIndex","gObj","isQueryInvokedFromData","skipPage","isAutoCompleteCall","columnQueryMode","getColumns","selectQueryFields","aggregateQuery","sortQuery","isGroupAdaptive","virtualGroupPageQuery","pageQuery","allowPaging","pageSettings","infiniteScrollModule","pagerModule","pagerObj","isAllPage","isManualRefresh","groupSettings","enableLazyLoading","isGrpFmt","formatGroupColumn","sortSettings","sortGrp","fcolumn","getSearchColumnFieldNames","needForeignKeySearch","fGeneratePredicate","predList","skipFoerign","foreignColEmpty","actualFilter","colType","foreignCols","defaultFltrCols","columns_1","getColumnByUid","grabColumnByFieldFromAllCols","excelPredicate","foreignCols_1","column_1","grabColumnByUidFromAllCols","getPrimaryKeyFieldNames","crud","deferred_1","pr","previousData","deff","endEdit","columnModel","getForeignKeyDataState","setForeignKeyDataState","getStateEventArgument","adaptr","dataArgs","disablePageWiseAggregates","isDataChanged","editArgs_1","cancelEdit","colFieldNames","columns_2","filteredCols","enableColumnVirtualization","getColumnModelByFieldName","refreshFilteredColsUid","setRowValue","setRowData","setCellValue","pKeyField","makechanges","Cell","isSpanned","isRowSpanned","CellMergeRender","cellArgs","spannedCell","cellRenderer","getService","getCellRenderer","cellType","colSpan","cellSpan","rowSpan","rowsObject","getRowsObject","isDataRow","targetCell_1","colSpanLen","colSpanRange","rowSpanRange","spanText","backupMergeCells","fName","setMergeCells","generteKey","fname","splitKey","getMergeCells","updateVirtualCells","mCells","getIndexFromAllColumns","vColumnIndices","getColumnIndexesInView","rows_1","iterateArrayOrObject","getVisibleColumns","rowCell","gridHeader","gridContent","gridFooter","movableContent","movableHeader","gridChkBox","editedRow","addedRow","leftRight","frozenRight","dataColIndex","ariaColIndex","dataRowIndex","tbody","beforeOpen","initialFrozenColumnIndex","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","tempCells","cells_1","isEdit","rowArgs","chekBoxEnable","isFrozenGrid","selIndex","getSelectedRowIndexes","checkAllRows","buildAttributeFromRow","setStyleAndAttributes","cellRendererFact","isColumnSelected","DetailExpand","isPrinting","CommandColumn","requireTemplateRef","isTemplate","thisRef_1","ariaAttr","requestTypeAction","prevRowCells","prevRowCell","resetrowSpanvalue","frozenRows","currentViewData","getFrozenRightColumnsCount","getFrozenLeftCount","movableCount","cellIdx","cellMerge","resetColandRowSpanStickyPosition","nextRowCell","emptyColspan","getFrozenLeftColumnsCount","freezeCells","groupCaptionRowLeftRightPos","applyStickyLeftRightPosition","oldColspan","colspan","resetColspanGroupCaption","tabindex","eventArg_1","isSelectable","cellTemplate","thisRef_2","disableRowSelection","isRowDragable","selectionSettings","persistSelection","primaryKey_1","pKey_1","SelectedRecords","partialSelectedRecords","disableSelectedRecords","childGrid","detailTemplate","lazyLoadCssClass","rowRenderingMode","allowTextWrap","textWrapSettings","wrapMode","summarycell","rowIndex","thisRef","eventArg","selectionModule","isPartialSelection","selRowIndex","chkBox","isDetail","literals","isAltRow","isCaptionRow","isAggregateRow","parentUid","RowModelGenerator","generateRows","getInfiniteIndex","enableImmutableMode","generateRow","ensureColumns","generateCell","RowDragIcon","tIndex","parentGid","hierarchyPrintMode","expandedRows","enableAltRow","refreshForeignKeyRow","getFrozenMode","generateCells","foreignKeyColumns","dummies","oIndex","isDataCell","refreshRows","SummaryModelGenerator","groupFooterTemplate","groupCaptionTemplate","columnSelector","buildSummaryData","getGeneratedRow","summaryRow","indents","getIndentByLevel","isDetailGridAlone","indentLength","getIndentCount","allowRowDragAndDrop","getGeneratedCell","getCellType","DetailFooterIntent","Indent","scolumn","dummy","summaryRows","disp","calculateAggregate","Summary","GroupSummaryModelGenerator","GroupSummary","CaptionSummaryModelGenerator","CaptionSummary","GroupModelGenerator","infiniteChildCount","renderInfiniteAgg","summaryModelGen","captionModelGen","isInfiniteScroll","isCollapseStateEnabled","ensureRowVisibility","parentid","childId","generateDataRows","preCaption","captionRow","generateCaptionRow","getPreCaption","isRenderAggregate","rowCnt","aggregatesCount","setInfiniteRowVisibility","preCap","rowObj","getCaptionRowCells","visibles","groupedLen","generateIndentCell","Expand","captionCells","cIndex_1","wFlag","tmpFlag","GroupCaption","GroupCaptionEmpty","parentID","childID","childGid","gSummary","valueAccessor","cRow","caption","childRow","ContentRender","freezeRows","movableRows","freezeRowElements","currentInfo","prevCurrentView","infiniteCache","visibleRows","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","tempFreezeRows","rafCallback","ariaService","setBusy","getPanel","setRowsInLazyGroup","prevPage","infiniteScrollSettings","enableCache","maxBlock","maxBlocks","rowIdx","rowElements","editSettings","showAddNewRow","addNewRowFocus","preventAdjustColumns","focusModule","setFirstFocusableTabIndex","case","getContentTable","getContent","scrollModule","setPadding","removePadding","widthService","enableDeepCompare","getModelGenerator","setVisible","enableAfterRender","refreshContentRows","droppableDestroy","byKey","keyArgs","pressedKey","renderPanel","busy","setPanel","renderHorizontalScrollbar","scrollbarHeight","getScrollBarWidth","setScrollbarHeight","contentDiv","virtualTable","virtualTrack","createContentTable","setTable","multiselectable","initializeContentDrop","getHeaderContent","getTable","cellspacing","setColGroup","getHeaderTable","getColGroup","editModule","formObj","showConfirmDialog","currentMovableRows","frag","initialPageRecords","refFrag","refHdrfrag","hdrfrag","hdrTbody","trElement","isColumnVirtualInfiniteProcess","isInfiniteColumnvirtualization","modelData","isGroupFrozenHdr","emptyVcRows","checkCache","setGroupCache","registeredTemplates","templatetoclear","rootNodes","templates","blockLoad","vcRows","virtualInfo","offsets_1","vGroupOffsets","bSize","contentModule","isEndBlock","blockIndexes","contentPanel","rowObject","isVFFrozenOnly","bIndex","mhdrData","vgenerator","addFixedColumnBorder","virtualFrozenHdrRefresh","lazyLoadRender","refRowsObj","setInfiniteVisibleRows","getBlockSize","rowTemplateID","getRowTemplate","colcount","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","isVue3","removeMaskRow","parentTable","getUpdateUsingRaf","resetStickyLeftPos","refreshFrozenScrollbar","appendContent","newRow","startAdd","isAddNewRow","getVisibleFrozenRightCount","getScrollWidth","enableCacheOnInfiniteColumnVirtual","vRows","headerCellHeight","getVisibleFrozenLeftCount","maintainRows","getGroupCache","initialGroupRows","getCurrentBlockInfiniteRecords","getReorderedRows","getReorderedFrozenRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","contentTable","infiniteRows","getRowElements","setRowElements","colgroup","testRow","needFullRefresh","getDataRows","infiniteData","infiniteRowVisibility","contentrows","isDetailRow","clen","getNormalizedColumnIndex","colIdx","getColumnIndexByUid","displayVal","setDisplayNone","invokedFromMedia","hideAtMedia","updateMediaColumns","trs","actualIndex","cellIndex","setDisplayValue","isFreeze","getHeaderColGroup","droppable","canSkip","getRowByIndex","getInfiniteRowIndex","fRows","firstRowIndex","getVirtualRowIndex","setRowObjects","immutableModeRendering","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","prevLen","currentLen","oldIndex","refreshImmutableContent","objectEqualityChecker","getBatchChanges","newRowPosition","updateCellIndex","rowEle","HeaderRender","frzIdx","notfrzIdx","isFirstCol","visualElement","headercelldiv","getStackedHeaderColumnByHeaderText","lockColumn","colIndex","getColumnIndexByField","getClosest","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","toggleStackClass","headerDiv","createHeaderTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","headerTable","tHead","createTable","createHeader","tableEle","findHeaderRow","thead","bodyCell","rowBody","len_1","updateColGroup","colHeader","rowRenderer","colDepth","measureColumnDepth","getHeaderCells","RowDragHIcon","len_2","HeaderIndent","DetailHeader","lockcolPositionCount","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","isStackLastCol","lastCol","isLockColumn","getCellCnt","stackedLockColsCount","getStackedLockColsCount","StackedHeader","getColSpan","isFirstCol_1","isLaststackedCol","frozenColumns","lockColsCount","refreshUI","freezeReorder","setWidthToColumns","updateDefaultCursor","gCells","isXaxis","firstHeaderCell","showDropArea","toolbarItems","toolbarLeft","toolbarItem","showResponsiveCustomSort","showResponsiveCustomFilter","enableAdaptiveUI","resToolbar","CellRenderer","locator","localizer","rowChkBox","getGui","fData","literals_1","invokeFormatter","checkFor","refreshCell","refreshTD","parentRow","newTD","cloneAttributes","arialabelText","innerHtml","displayAsCheckBox","localeStr","fromFormatter","appendHtml","checkWrap","rowID","setAttributes","addStickyColumnPosition","buildAttributeFromCell","customAttributes","clipMode","isCheckBoxType","AriaService","setStateAndProperties","setExpand","setSort","isBusy","setGrabbed","isGrabbed","grabbed","setDropTarget","isTarget","dropeffect","datarole","haspopup","rowcount","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","fltrMenuEle","prepareHeader","hValueAccer","elementDesc","innerDIV","headerValueAccessor","checkAllWrap","matchFlColumns","extendPrepareHeader","gridObj","headerTempID","isReactChild_1","headerTextAlign","titleElem","matchFilteredColumns","StackedHeaderCellRenderer","toolTip","frozenDirection","isChildColumn","IndentCellRenderer","GroupCaptionCellRenderer","cellUid","fKeyValue","gTemplateValue","domSetter","gCaptionTemp","getTemplate","tempValue_1","captionTemplate","tempID","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","renderer","headerRenderer","getRenderer","contentRenderer","isLayoutRendered","emptyRow","refreshDataManager","filterModule","filterObjIndex","prevFilterObject","flIcon","checkboxPrevFilterObject","Columns","headerCell","getColumnHeaderByField","allowSelection","searchString","pageSizes","checkAll","dataLength","totalRecordsCount","getCurrentViewRecords","prevPageMoving","resetTemplates","gridColumns","detailTemplateID","toolbarTemplate","refreshComplete","maskRow","enableVirtualMaskRow","isCaptionCollapse","isFActon","isNeedForeignAction","getFData","deffered_1","validateGroupRecords","dataManagerSuccess","dataManagerFailure","deferred","fbool","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","spanCount","rowDropSettings","targetID","emptyRecordTemplate","emptyRecordTemplateID","getEmptyRecordTemplate","dynamicColumnChange","updateColumnType","cFormat","equalTo","fmtr","validationRules","isColTypeDef","actionArgs","isInfiniteDelete","isInfiniteEnd","totalDataRecordsCount","updatesOnInitialRender","setRowCount","dataRowCount","isEmptyCol","prepareColumns","isAutoGen","iterateComplexColumns","complexCols","instantiateRenderer","addRenderer","cellrender","addCellRenderer","group0","groupN","addWhere","curFilter","rPredicate","updateGroupInfo","untouched","updatedGroup","itemGroup","updatedGroupItem","data_1","customAggregate","CellRendererFactory","cellRenderMap","ResponsiveDialogRenderer","sortedCols","sortPredicate","isCustomDialog","evtHandlers","closeCustomDialog","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","addRemoveEventListener","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","saveBtn","backBtn","customExcelFilterParent","isFilter","filterClearBtn","getHeaderTitle","columnChooserModule","responsiveDialogRenderer","columnMenuResponsiveContent","cDiv","customColumnDiv","renderResponsiveContent","isColumnChooser","isColMenu","sortColumns","showColumnChooser","sortBtnParent","isSort","getSortedFieldsAndDirections","buttonInnerText","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","allowMultiSorting","isSortApplied","resetSortButtons","directionTxt","setSortedCols","getCurrentSortedFields","menuCol","filteredCol","autoFitColumns","closeCustomFilter","groupColumn","ungroupColumn","sortColumn","showResponsiveCustomColumnChooser","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","renderCustomFilterDialog","renderResponsiveDialog","setFilterModel","createOptions","setTopToChildDialog","dialogEle","colMenu","outerDiv","customFilterDlg","getDialogOptions","adaptiveDlgTarget","beforeDialogClose","renderResponsiveHeader","addBiggerDialog","sortField","closeResponsiveDialog","clearSorting","primaryKeyValue","isAdd","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","clearBtn","clearFiltering","filterClear","removeCustomFilterElement","custommenu","applyCustomFilter","destroyCustomFilterDialog","customEle","ServiceLocator","registerAdaptiveService","isAdaptiveUI","RendererFactory","rendererMap","rName","ColumnWidthService","totalColumnsWidth","setColumnWidth","getTableWidth","setMinwidthBycalculation","tWidth","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","tgridWidth","getFrozenColumns","setWidthToTable","ispercentageWidth","fWidth","headerCol","contentCol","editTableCol","movableScrollbar","movableWidth","placeHolder","getSiblingsHeight","getHeightFromDirection","isWidUndefCount","isAutoResize","resizeSettings","FocusStrategy","oneTime","skipFocus","focusByClick","firstHeaderCellClick","prevIndexes","refMatrix","refreshMatrix","isVirtualScroll","groupedFrozenRow","rowModelGen","focusCheck","enableHeaderFocus","passiveFocus","firstHeaderCellIndex","findCellIndex","skipAction","isGantt","setLastContentCellTabIndex","groupModule","focusableGroupedItems","getFocusableGroupedItems","toolbarElement","toolbarModule","focusableToolbarItems","getFocusableToolbarItems","force","beforeArgs","byClick","clickArgs","clearOutline","handleFilterNavigation","inputSelector","buttonSelector","pagerElement","focusablePagerElements","getFocusablePagerElements","allowToPaging","checkPagerHasFocus","lastHeaderCellIndex","isValidBatchEditCell","findBatchEditCell","getDropDownPage","changePagerFocus","parentCell","setPagerFocus","checkFirstPagerFocus","lastRow","lastColumn","skipOn","lastCell","setLastContentCellActive","focusOutFromChildGrid","focusFirstHeaderCell","activeKey","bValue","prevBatchValue","swapInfo","toHeader","getNextCurrent","setActiveByKey","lastIdxCell","nextHeaderCellIndex","firstContentCellIndex","previousCellIndex","focusOutFromHeader","addBatchRow","clearIndicator","setPagerContainerFocus","cellColIndex","cellCol","currentCellIndex","limitRow","tempCellIndex","cellIndexObtain","prevTempCellIndex","lastContentCellIndex","parentGrid","parentRows","parentRowIndex","nextFocusCell","rowCells","allowAdding","inputTarget","addNewRow","filterCell","inputElements","firstEditCell","lastEditCell","focusVirtualElement","virtualData","isCancel","isKeyFocus","selectedRowIndex","preventScroll","getFocusedElement","setFocusedElement","addFocus","getFocusInfo","cellElem","getCellFromIndex","addOutline","focusHeader","resetFocus","isJump","getInfo","focusedColumnUid","getColumnByIndex","ContentFocus","HeaderFocus","cFocus","frozenRow","batchLen","isRowTemplate","matrixcs","hdrLen","headerModule","isScroll","tempMatrix","lastRowHeaderIdx","refreshAddNewRowMatrix","handlerInstance","index_1","cellPosition","gridPosition","passiveHandler","filterfocus","restoreFocusWithAction","internalCellFocus","startIdx","startCellIdx","headrIdx","findNextCellFocus","addedrow","groupSortFocus","groupTextFocus","showGroupedColumn","groupCancelFocus","getPrevIndexes","forgetPrevious","toFrozen","getFocusable","allow","emptyTable","inValid","vector","incrementNumber","columnsCount","rowColumns","currentColumnCount","keyActions","indexesByKey","navigators","getCurrentFromAction","editNextRow","allowNextRowEdit","isLastCellPrimaryKey","visibleIndex","isPresent","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","previousRowFocusValidate","firstIndex","enterFrozen","headerSwap","isHeaderFocus","optionals","defaultLen","rIndex","cIndex","isData","isCellWidth","getGridSeletion","allowColumnSelection","isLastCell","current1","checkFilterColumn","getHeaderType","SearchBox","searchFocus","searchBlur","PageSettings","ColumnChooserSettings","selectedRowIndexes","selectedRowCellIndexes","selectedRecords","selectedColumnsIndexes","checkBoxState","isMultiShiftRequest","isMultiCtrlRequest","isMultiCtrlRequestCell","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","unSelectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","deSelectedData","isHdrSelectAllClicked","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isMultiSelection","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","isKeyAction","isRowDragSelected","rmtHdrChkbxClicked","isCheckboxReset","autoFillRLselection","right_bottom","bottom_left","top_right","top_left","top_bottom","top_right_bottom","top_bottom_left","top_right_left","right_bottom_left","all_border","initializeSelection","onActionBegin","fDataUpdate","getRowObj","gridElement","hidePopUp","mouseDownHandler","isEditing","isPersistSelection","getCurrentBatchRecordChanges","currentRecords","iterateExtend","selectedGroupedData","selectRow","enableSimpleMultiRowSelection","addRowsToSelection","selectedRow","getRowObjectFromUID","isAvailable","getSelectedRecords","clearRowSelection","isRowType","isRowSelected","can","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","actualTarget","isHeaderCheckboxClicked","isRemoved","removed","checkboxMode","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","selectRowsByRange","selectRows","getCollectionFromIndexes","selectedDataUpdate","selectedRows","selectableRowIndex","currentRow","isSingleSel","prevRow","selectRowFn","selectableRowIndex_1","checkboxOnly","checkboxColumn","rowIndexes_1","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","clearRowCallBack","selectedEle","updatePersistCollection","updateCheckBoxes","getPkValue","pkField","isComplexField","chkState","ensureCheckboxFieldSelection","updatePersistDelete","checkedTarget","setCheckAllState","contextMenuModule","mouseButton","checkSelectAllClicked","clearCellSelection","clearColumnSelection","prevCIdxs","prevECIdxs","row_1","rowIndex_1","foreignKeyData_1","isRowClicked","getCheckAllStatus","updatePersistSelectedData","mRow","rowDeselectCallBack","frozenRightRow","isSingleDeSel","rowDeselectObj","rowInString","rowidxex","dataTxt","selectCell","isCellType","selectedCell","getColIndex","isCellSelected","successCallBack","previousRowCell","getCellIndex","cellSelectingArgs","currentCell","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","rIdx","selectCellsByRange","cellIndexes","getCellFromRow","stIndex","edIndex","cellSelectionMode","getLastColIndex","cellSelectedArgs","selectCells","rowCellIndexes","cellSelectArgs","cellLen","addRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","prvRowCellIndex","selectedCellIdx","cellDeselect","getCellsByTableName","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","cLen","bdrElement","showHideBorders","mouseMoveHandler","stopTimer","gBRect","getPosition","isCellDrag","startAFCell","startCell","endAFCell","selectLikeExcel","startDIndex","updateScrollPosition","mouseEvent","timer1","getRowHeight","timer2","isAutoFillSel","nextElement_1","findNextCell","positionAFBorders","mouseEvent_1","siblingEles","nextEleInd","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","setFrozenBorders","bdrStr","fixedCells","firstRowIdx","firstColIdx","lastRowIdx","lastColIdx","preCell","nextCell","refreshFrozenBorders","frcBdrElement","fhBdrElement","frhBdrElement","createBorders","positionBorders","isLastRow","isFirstRow","isFirstCell","setBorders","stOff","endOff","parentOff","leftOffset","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","mhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","sLeft","getFooterContent","scrolloffSet","borderAFRightValue","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","updateValue","createBeforeAutoFill","updateCell","getAutoFillCells","isApply","startrowIdx","endrowIdx","endCellIdx","rowLen","colLen","endCell","startCellIndex","trIdx","mouseUpHandler","mUPTarget","closeRowCell","updateAutoFillPosition","updateStartCellsIndex","enableAutoFill","rindex","isFrozenRow","isFrozenRight","enableDrag","postion","clearSelAfterRefresh","pkValue","onCellFocused","refreshHeader","actionBeginFunction","actionCompleteFunction","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","keyDownHandler","keyUpHandler","allowKeyboard","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","gobj","chkField","refreshPersistSelection","setRowSelection","selectedStateKeys","unSelectedRowStateKeys","rowData_1","rowObj_1","selectedData_1","getAvailableSelectedData","filteredSearchedSelectedData","editChkBox","onDataBound","getSelectedRows","checkSelectAllAction","cRenderer","editForm","checkSelectAll","stateStr","updateSelectedRowIndexes","triggerChkChangeEvent","checkSelect","rowCellSelectionHandler","moveIntoUncheckCollection","rowObj_2","rowObj_3","updateSelectedRowIndex","selectedVal","isSelectAllRowCount","someDataSelected","isInteraction","checkToSelectAll","checkedLen","getRecord","targetHeadCell","targetRowCell","popUpClickHandler","chkSelect","headerSelectionHandler","setCssInGridPopUp","checkboxColumnIndexCheck","headerAction","hdrLength","getKeyColIndex","targetLabel","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","clipboardModule","ctrlPlusA","applySpaceSelection","stackedHeader","innerColumn","getstackedColumns","applyUpDown","selectColumn","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","addRemoveActiveClasses","selectedCol","getColumnHeaderByUid","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","columnIndexes","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","columnDeselect","selectedHeader","getSelectedColumnCells","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteFunc","actionCompleteHandler","resizeEndFn","checkAllBox","isInfinitecroll","isSelectedRowIndexUpdating","isActionPrevent","refreshSearch","onSearchComplete","cancelBeginEvent","ShowHide","colName","isShowHide","batchChanges","resetColumnState","changedCol","showBy","getToggleFields","hideBy","getKeyBy","batchActionPrevent","changedStateColumns","showHideArgs","currentViewCols","col1","col2","isModeChg","previousValues","oneTimeReady","uiupdate","tlbrElement","tlbrLeftElement","tlbrCenterElement","tlbrRightElement","tlbrItems","tlbrLeftWidth","tlbrCenterWidth","tlbrRightWidth","tlbrItemsWidth","tlbrWidth","refreshOverflow","mHdrHeight","ensureOverflow","getThreshold","cssProps","getCssProperties","hDiv","footerDiv","setScrollLeft","setPageXY","onTouchScroll","mScrollBar","onCustomScrollbarScroll","contentScrollHandler","headerScrollHandler","onContentScroll","scrollTarget","isPreventScrollEvent","errorFreeze","errorFixed","scrollDown","isFooter","cont","hdr","pageXY","getPointXY","mHdr","mCont","getScrollbleParent","addStickyListener","eventElement","makeStickyHeader","resizeFrozenRowBorder","frzCols","enableStickyHeader","sHeight","setLastRowCell","contentRect","getClientRects","toolbarEle","groupHeaderEle","parentTop","colMenuEle","elemTop","setSticky","ccDlg","topStyle","AggregateColumn","setPropertiesSilent","AggregateRow","Clipboard","copyContent","isSelect","isMacLike","getSelectedRowCellIndexes","clipBoardTextArea","x_1","y_1","paste","setCopyData","withHeader","selectedIndexes","headerTextArray","getCopyData","leftCols","checkBoxSelection","colIndexes","getColumnHeaderByIndex","isCell","queryCommandSupported","execCommand","rowCellIndxes","BASE_DOC_URL","DOC_URL","WARNING","INFO","patchadaptor","detailLists","cOp","logType","generateMessage","module_missing","injected","promise_enabled","primary_column_missing","selection_key_missing","actionfailure","formatError","formatErrorHandler","ajaxError","ajaxErrorHandler","locale_missing","lObj","limitation","check_datasource_columns","virtual_height","grid_remote_edit","grid_sort_comparer","resize_min_max","action_disabled_column","destColumn","exporting_begin","exporting_complete","foreign_key_failure","initial_action","frozen_rows_columns","column_type_missing","datasource_syntax_mismatch","jsonResult","responseURL","SortDescriptor","SortSettings","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","LoadingIndicator","_this_1","inViewIndexes","keyA","frozenRightCount","freezeColumnRefresh","rightcount","frozenLeftCount","leftcount","tablesCount","movablecount","fixedcount","fixedCount","visibleFrozenLeft","visibleFrozenFixed","isPreparedFrozenColumns","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","stackedLeft","stackedRight","stackedFixed","stackedMovable","stackedarrayLeft","stackedarrayRight","stackedarrayFixed","stackedarrayMovable","autoFitColumnsResize","tableIndex","componentRefresh","isChangeDataSourceCall","mergedColumns","isVirtualAdaptive","rowUid","isAutoFitColumns","islazyloadRequest","pageTemplateChange","isAutoGenerateColumns","mediaBindInstance","commandDelIndex","asyncTimeOut","isExportGrid","enableLogger","Grid_1","mergePersistGridData","keyEntity","currentObject","pagerTemplate","setFrozenCount","enableInfiniteAggrgate","allowExcelExport","allowPdfExport","resizeCheck","isCommandColumn","allowDeleting","extendRequiredModules","contextMenuItems","isForeignKeyEnabled","columnMenu","columnMenuItems","contextMenu","initProperties","initializeServices","mediaCol","filterOperators","greaterThanOrEqual","lessThanOrEqual","notEqual","notNull","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Edit","Cancel","Update","Delete","Print","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Save","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","ColumnMenu","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","NotStartsWith","Like","EndsWith","NotEndsWith","NotContains","IsNull","NotNull","IsNotEmpty","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Ungroup","GroupButton","UnGroupAria","GroupSeperator","UnGroupIcon","GroupedSortIcon","GroupedDrag","CheckBoxLabel","SelectAllCheckbox","SelectRow","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","AddCurrentSelection","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","ToolbarMenuDialogARIA","FilterMenuDialogARIA","ExcelFilterDialogARIA","CheckBoxFilterDialogARIA","DialogEditARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","Sort","FilterDescription","SortDescription","ColumnMenuDescription","GroupDescription","ColumnHeader","TemplateCell","CommandColumnAria","DialogEdit","ClipBoard","AscendingText","DescendingText","NoneText","Expanded","Collapsed","downArrow","upArrow","shiftDown","shiftUp","shiftRight","shiftLeft","ctrlHome","ctrlEnd","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","altDownArrow","altUpArrow","ctrlDownArrow","ctrlUpArrow","ctrlPlusP","ctrlEnter","shiftEnter","shiftTab","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","renderModule","searchModule","updateColumnModel","getMediaColumns","setColumnIndex","setInitialFrozenColumnIndex","checkLockColumns","processModel","gridRender","updateStackedFilter","refreshMaskRow","axisDirection","dialogHolder","contentHeight","maskTableHeight","contentRowCount","headerMaskTable","createEmptyMaskTable","contentMaskTable","maskRowContentScroll","createMaskTable","getContentMaskColumns","gridFooterContent","footerContentMaskTable","translateMaskRow","maskElement","gridContentScrollHeight","maskTable","maskColgroup","createMaskRow","frzTd","valueX","maskTHead","maskTBody","rowCountElement","altRow","addEditRow","addEditRowIndex","applyMaskRow","addEditMaskRow","tfoot","maskTFoot","minScrollTop","maskCells","maskCell","displayAsCheckBoxCell","refColgroup","refColumns","localTD","addShimmerEffect","maskTables","refreshMaskRowColgroupWidth","gcol","getShowHideService","pushMediaColumn","updateFrozenColumnsWidth","mediaQueryUpdate","mediaColumn","showHider","refreshMediaCol","enableHover","removeMediaListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","printModule","enableBoxSelection","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","childGridParent","parentInstance","isEllipsisTooltip","updateColumnObject","rowTemplateFn","emptyRecordTemplateFn","detailTemplateFn","childGridObject","currentParent","currentParentInstance","currentChildObject","restoreAdjustColumns","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","updateResizeLines","updateGridLines","applyTextWrap","removeTextWrap","pending_1","deepWatch","gResult","enableVerticalRendering","fn_1","refreshFilter","getTablesCount","headerCells","stdHdrCell","isRecursion","updateLockableColumns","frozenName","frozenCount","leftrightColumnWidth","getFrozenLeftColumns","getFrozenRightColumns","isRefresh","inview","vLen","movable","isLeftRightFrozen","individualColumn","stackedColumn","getLocaleConstants","setColumnIndexesInView","getCurrentVisibleColumns","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getMovableRowByIndex","getFrozenRowByIndex","getFrozenRightRowByIndex","getRowInfo","rowData","row_2","getMovableRows","getFrozenRightRows","getAllDataRows","includeAdd","addMovableRows","mrows","includAdd","dRows","getMovableDataRows","getAllMovableDataRows","getFrozenDataRows","getAllFrozenDataRows","getFrozenRightDataRows","getAllFrozenRightDataRows","pkName","fieldIdx","sRow","columnUid","isChildGrid","refreshReactTemplateTD","childIndent","isChildRow","rowsObj","refreshGroupCaptionFooterTemplate","dataUid","headerCellRenderer","filterElement","rowObjects","selectRowEle","fRowTr","setFrozenRowData","fTr","refreshForeignData","getCellByColAndRowIndex","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getFrozenLeftColumnHeaderByIndex","getMovableRowsObject","getFrozenRightRowsObject","getStackedColumns","getUidByColumnField","getColumnFieldNames","columnNames","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedColumnsUid","showColumns","hideColumns","getFrozenCount","getMovableColumnsCount","isAutoWidth","autoCol_1","difference_1","autoWidth_1","tWidth_1","gWidth","isPercentageWidthGrid","splitFrozenCount","getVisibleMovableCount","getMovableColumns","splitStackedColumns","pushStackedColumns","stackedcol","stockCol","pushallcol","text1","isTrue","resetStackedColumns","headercol","gridcolumns","tempHead","firstcol","removeBorder","frozenLeftBorderColumns","lastVisibleLeftCol","frozenRightBorderColumns","firstVisibleRightCol","isVisibleColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","goToPage","pageNo","updateExternalMessage","isMultiSort","sortModule","changeDataSource","removeSortColumn","clearGridActions","filterByColumn","filterOperator","actualFilterValue","actualOperator","removeFilteredColsByField","isClearFilterBar","fieldname","startEdit","deleteRow","editCell","saveCell","enableToolbarItems","enableItems","recalcIndentWidth","perPixel","parentOffset","applyWidth","resetIndentWidth","reorderColumns","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","headerRows","disValue","startRowIndex","endRowIndex","resizeModule","tableWidth","percentageWidth","widthUnit","defaultIndentWidth","indentWidthUnitFormat","headerIndentCol","contentIndentCol","tableWidthUnitFormat","indentWidthUnitFormat_1","createColumnchooser","renderColumnChooser","valueFormatterService","gCols","sCols","sLen","this_3","parentKeyFieldValue","initForeignColumn","rendererFactory","createGridPopUpElement","createTooltip","getTooltipStatus","headerDivTag","htable","ctable","prevElement","innerElement","myTableDiv","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","focusOutHandler","dblClickHandler","tapEvent","dataBoundFunction","checkEdit","dataRow","ariaOwns","keyPress","editFormValidate","isShowAddedRowValidate","dataObj","mergeColumns","storedColumn","storedColumns","_loop_4","localCol","tCol","this_4","presskey","setInjectedModules","refreshColumns","excelExport","excelExportProperties","isMultipleExport","isBlob","exportGrids","gridIds","exportMultipleExcelGrids","excelExportModule","csvExport","pdfExport","pdfExportProperties","pdfDoc","exportMultiplePdfGrids","pdfExportModule","currentGridId","currentGridInstance","exportedGridResults","groupExpandAll","expandAll","groupCollapseAll","collapseAll","clearGrouping","openColumnChooser","detailCollapseAll","detailRowModule","detailExpandAll","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","applyBiggerTheme","getPreviousRowData","hideScroll","getRowIndexByPrimaryKey","pKvalue","performComplexDataOperation","getFilteredRecords","getUserAgent","getRowUid","getRowElementByUID","cntRows","rows_2","getHiddenColumns","calculatePageSizeByParentHeight","getNoncontentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","serverCsvExport","gridModel","setHeaderText","gridInput","submit","include","getFormat","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","processRowChanges","batchAsyncUpdate","processBulkRowChanges","dataToBeUpdated","loopstring","compareChanges","setNewData","oldValues","bulkRefresh","deleteRowElement","out_i_1","_loop_5","this_5","_loop_6","isRowExist","this_6","renderRowElement","resetRowIndex","addRowObject","updateVisibleExpandCollapseRows","getFrozenRightContent","getFrozenRightHeader","getMovableHeaderTbody","getMovableContentTbody","getFrozenHeaderTbody","getFrozenLeftContentTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","isCustom","showCustomFilter","showCustomSort","showCustomColumnChooser","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols_1","isAsyncPrint","defered","isContentReady","isPrintGrid","removeColGroup","printGridObj","renderPrintGrid","printGrid","getPrintGridModel","injectedModues","printgrid","waitingPop","printGridElement","printWind","resizeTo","availWidth","availHeight","groupCaption","colGroups","contentColGroups","footerColGroups","hideColGroup","printGridProp","updateFunction","isExportColumns","exportProperties","updateColumnTypeForExportColumns","exportColumns","getCollapsedRowsCount","gLen","dataRowCnt","agrCnt","gLevel","recursive","nLevel","baseExtend","validSelector","baseTemplateComplier","copyAttr","exclude","ind","autoWidth","popUp","popUpSpan","targetPosition","isBottomTail","getPopupLeftPosition","isID","getElementIndex","inArray","getActualPropFromColl","divNode","getComplexFieldID","getParsedFieldID","setComplexFieldID","isEditable","isOldRow","isIdentity","clName","elementVisible","dlgWidth","leftPos","getZIndexCalcualtion","lValue","fField","fdata","filterObject","datePredicate","prevDate","prevObj","nextObj","predicateSt","predicateEnd","newCase","getCustomDateFormat","printGridModel","printMode","getExpandedState","getPrototypesOfObj","cpy","cln","checkDepth","replacedTv","scrollElem","newColspan","uid_1","getEditedDataIndex","percentageCol","undefinedWidthCol","rowElms","resetCachedRowIndex","rowElement","resetInfiniteCache","groupReorderRowObject","dropRObj","rowObjectDropIndex","orderChangeRowObjects","dropRowObject","orderChangeRowObject","dropIndex","newArray","uids","pushuid","setValidationRuels","mRules","frRules","numberFormat","mtch_1","mapObject","returnObj","duplicateMap","isOn","evt_1","createEditElement","complexFieldName","getColumnModelByUid","registerEventHandlers","evts","eventHandlers","removeEventHandlers","checkActiveMatrix","checkCellIndex","activeMatrix","currentCellIndexPass","isScheduledTask","ganttProp","isRemoteData","getTaskData","isNotExtend","taskData","updateDates","ganttProperties","taskFields","dateValidationModule","baselineEndDate","baselineStartDate","getIndex","DateProcessor","isValidateNonWorkDays","isAutoSchedule","includeWeekend","totalHolidayDates","checkStartDate","validateAsMilestone","isLoad","tStartDate","cloneStartDate","getSecondsInDecimal","isMilestone","defaultStartTime","defaultEndTime","workingTimeRanges","autoCalculateDateScheduling","holidayLength","tempDate","getNextWorkingDay","holidayFrom","getDateFromFormat","holidayTo","checkEndDate","tempCheckDate","cloneEndDate","taskfields","getPreviousWorkingDay","tempHoliday","checkBaselineStartDate","cloneDate","checkBaselineEndDate","calculateStartDate","ganttData","tempStartDate","getStartDate","durationUnit","setRecordValue","dataOperation","updateMappingData","calculateEndDate","tempEndDate","calculateDuration","totalDuration","getEndDate","offsetDuration","tDuration","taskbarEditModule","sumOfDuration","milestone","getDuration","columnByField","columnMapping","cellEditModule","isCellEdit","dialogModule","textBox","getNonworkingTime","sDate","eDate","isCheckTimeZone","weekendCount","getWeekendCount","totalHours","getNumberOfSeconds","holidaysCount","getHolidaysCount","totWorkDays","nonWorkHours","getNonWorkingSecondsOnDate","secondsPerDay","durationValue","durationHours","getTimeDifference","getFormatedDate","getDurationAsSeconds","tempStart","secondDuration","fromValidation","tempEnd","getProjectStartDate","cloneProjectStartDate","flatData","minStartDate","getValidStartDate","autoStartDate","autoEndDate","autoDuration","getValidEndDate","getSecondsPerDay","dayWorkingTime","totalSeconds","nonWorkingHours","nonWorkingTimeRanges","currentRange","startHour","endHour","timeDiff","sdSeconds","edSeconds","isWorking","getDurationValue","isFromDialog","durationUnitEditText","nonWorkingDayIndex","currentHoliday","getHolidayDates","holidayDates","isOnHolidayOrWeekEnd","checkWeekEnd","sHour","eHour","startRangeIndex","endRangeIndex","totNonWrkSecs","startOnHoliday","endOnHoliday","previousIndex","getNonWorkingDayIndex","weekDayLength","workWeek","sec","updateDateWithTimeZone","uTZ","uDate","sTZ","eTZ","standardTZ","tzDiff","localOffset","convertedDate","fromOffset","toOffset","fromLocalOffset","toLocalOffset","toConvert","updatedDate","globalize","getDurationString","plural","getWorkString","workUnit","calculateProjectDatesForValidatedTasks","editArgs","maxEndDate","sortedStartDate","sortedEndDate","cloneProjectEndDate","calculateProjectDates","timelineModule","isZooming","taskRange","addDateToList","sortDates","isZoomToFit","treeGrid","filteredResult","task","renderBaseline","indicators","eventMarkers","holiday","prevProjectStartDate","splitTasksDuration","bottomTier","TaskProcessor","recordIndex","taskIds","hierarchyData","checkDataBinding","isChange","updatedRecords","dataArray","ids","predecessorsCollection","parentData","processTimeline","renderGantt","initDataSource","ganttdata","cloneDataSource","enableValidation","validateTimelineProp","queryManager","loadChildOnDemand","hasChildMapping","constructDataSource","mappingData","rootData","dataReorder","taskIdMapping","parentIdMapping","hierarchicalData","tempData","segmentId","segmentCollection","segmentData","viewType","unassignedTasks","constructResourceViewDataSource","resourceName","resourceFields","prepareDataSource","resourceData","resourceInfo","resourceIdMapping","isResourceString","resource","prepareRecordCollection","initialLoadData","calculateSharedTaskUniqueIds","dependency","predecessorModule","ensurePredecessorCollection","getTaskIds","sharedRecords_1","ids_1","taskId","rowUniqueID","sharedTaskUniqueIds","parentItem","createRecord","updateTaskLeftWidth","setTaskIds","childData","parentProp","updateWorkWithDuration","parentWork","calculateAutoDuration","updateAutoWidthLeft","allowParentDependency","resetDependency","updateWidthLeft","updateTaskData","addCustomFieldValue","ganttRecord","ganttColumns","taskSettings","notes","predecessors","autoSchedule","taskMode","manual","predecessor","undoRedoModule","addTaskData","setResourceInfo","updateResourceName","calculateScheduledValues","toLocaleDateString","predecessorsName","getCloneParent","parentUniqId","hasChildRecords","collapseAllParentTasks","updateExpandStateMappingValue","calculateLeft","getProgressWidth","calculateBaselineLeft","calculateBaselineWidth","childRecords","allowUnscheduledTasks","setSegmentsInfo","sortSegmentsData","ganttSegments","remainingDuration","segmentIndex","setSegmentTaskData","segmenttaskData","resourcesLength","resourceUnit","actualOneDayWork","durationInDay","getDurationInDay","isOnEdit","childCompletedWorks","cloneParent","reUpdateResources","tempData_1","segmentDataCollection","updatableValue","expandStateMapping","expandState","setValidatedDates","updateDurationValue","isMileStone","durationMapping","validateDurationUnitMapping","validateWorkUnitMapping","taskTypeMapping","tType","validateTaskTypeMapping","calculateDateFromStartDate","calculateDateFromEndDate","taskType","updateUnitWithWork","updateDurationWithWork","totalResourceOneDayWork","updatedDuration","getWorkInHour","totalUnitInPercentage","individualUnit","isTreeGridRendered","parentWidth","getTaskWidth","getTaskbarHeight","taskBarHeight","taskbarHeight","getTaskLeft","calculateAutoLeft","calculateAutoWidth","tierMode","topTier","modifiedsDate","dateDiff","perDayWidth","isFromTimelineVirtulization","leftValueForStartDate","taskBarEditAction","ganttChartModule","scrollObject","enableTimelineVirtualization","getTimelineLeft","timelineStartDate","isInDst","timelineSettings","timelineUnitSize","getSplitTaskWidth","getSplitTaskLeft","segmentTaskStartDate","stDate","resourceSettings","resourcesId","resourcesName","resName","updateTaskDataResource","setRecordDate","setRecordDuration","segmentTaskData","preTaskResources","isAdded","mapping","isDynamicData","setDataSource","createData","setStartDate","dataMapping","taskName","resourceIdCollection","isAddNewResource","ganttResources","resourceIDMapping","resourceUnitMapping","resourceGroup","resource_1","ganttDataResource","updateResourceUnit","taskMapping","resourceLength","stringResourceName","taskResources","flatCollection","rootCollection","tempDuration","reUpdateGanttData","updateGanttData","_isInStartDateRange","isInRange","_isInEndDateRange","updateOverlappingValues","resourceTask","currentTask","tasks","workTimelineRanges","setSortedChildTasks","updateOverlappingIndex","cStartDate","cEndDate","tEndDate","rangeObj_1","mergeRangeCollections","calculateRangeLeftWidth","eOverlapIndex","finalRange","currentTopRange","cCompareRange","sortedRanges","splitRangeCollection","rangeCollection","fromField","toField","isSingleTier","getRangeWithWeek","getRangeWithDay","splitArray","splitRangeForDayMode","rangeObject","nStart","nEndDate","nextAvailDuration","splitRangeForWeekMode","isInSplit","rangeObj","getParentTask","updateParentItems","reUpdateGanttDataPosition","isPdfExport","exportProps","fitToWidthSettings","isFitToWidth","beforeSinglePageExport","totalSegmentsProgressWidth","chartRowsModule","incrementSegments","showProgress","progressWidth","pStartDate","setProgress","getParentProgress","childGanttRecord","progressValues","totalProgress","recordProp","isParent","deleteUpdate","numericValue","previousStartDate","previousEndDate","childRecords_1","childLength","milestoneCount","isOnDelete","isDelete","taskCount","parentProgress","taskbarEditedArgs","chartBodyContainer","chartBodyContent","adaptive","focusCell","timelineHeaderContainer","timelineHeaderTableContainer","timelineHeaderTableBody","timelineSingleHeaderOuterDiv","leftLabelContainer","leftLabelInnerDiv","rightLabelContainer","rightLabelInnerDiv","taskBarMainContainer","taskLabel","childTaskBarInnerDiv","childProgressBarInnerDiv","baselineBar","baselineMilestoneContainer","chartRowCell","chartRow","taskBarLeftResizer","taskBarRightResizer","childProgressResizer","progressBarHandler","progressHandlerElement","progressBarHandlerAfter","traceMilestone","traceChildTaskBar","traceChildProgressBar","manualParentMainContainer","manualParentTaskBar","manualParentMilestone","manualChildTaskBar","manualParentRightResizer","traceParentTaskBar","traceParentProgressBar","traceUnscheduledTask","leftResizeGripper","rightResizeGripper","progressResizeGripper","holidayLabel","unscheduledTaskbarLeft","unscheduledTaskbarRight","connectorLineContainer","connectorLineSVG","criticalConnectorLineSVG","criticalConnectorArrowSVG","connectorLineArrow","connectorLineZIndex","connectorPointLeft","connectorPointRight","connectorPointLeftHover","connectorPointRightHover","rightConnectorPointOuterDiv","connectorPointAllowBlock","ganttTooltip","activeParentTask","activeChildTask","activeConnectedTask","touchMode","rangeContainer","rangeChildContainer","ChartScroll","previousCount","isSetScrollLeft","previousScroll","addEventListeners","gridScrollHandler","updateShimmer","removeShimmer","removeEventListeners","isFromTreeGrid","updateContent","ganttElement","currentCount","deleteTableElements","createTimelineSeries","dayMarkersModule","renderEventMarkers","nonworkingDayRender","renderWeekends","renderHolidays","updateChartElementStyles","chartTimelineContainer","resultantWidth","wholeTimelineWidth","isBackwardScrolled","tableContainer","translateXValue","dependencyViewer","connectorLineModule","dependencyViewContainer","taskTable","updateTopPosition","contentScrollTop","virtualScrollModule","getTopPosition","holidayContainer","weekendContainer","eventMarkersContainer","chartVerticalLineContainer","hideMaskRow","allowTaskbarOverlap","showOverAllocation","ganttChartTableBody","isExpandAll","isCollapseAll","updateSpinner","scrollArgs","previousScrollTop","previousScrollLeft","totalTimelineWidth","updateWidthAndHeight","isToolBarClick","showIndicator","setScrollTop","leftSign","VirtualContentRenderer","renderWrapper","appendChildElements","adjustTable","treegridVirtualHeight","translateYValue","virtualRender","isExpandCollapseFromChart","isGanttElement","rangeViewContainer","renderChartContainer","renderChartElements","renderInitialContents","renderChartContents","chartElement","chartPane","renderTimelineContainer","renderBodyContainers","renderOverAllocationContainer","renderRangeContainer","isFromOnPropertyChange","updateProjectDates","isTimelineRoundOff","renderChartRows","connectorLineIds","updatedConnectorLineCollection","createConnectorLinesCollection","renderConnectorLines","criticalModule","criticalPathModule","enableCriticalPath","criticalPathCollection","criticalConnectorLine","detailPredecessorCollection","predecessorCollectionTaskIds","processZoomToFit","recordLength","renderRange","getTopValue","currentRecord","getExpandedRecords","nestedParent","getRecordByID","getRangeHeight","enableMultiTaskbar","sameIDElement","parentDiv","leftDiv","rightDiv","toolbarHeight","ganttHeight","emptyHeight","contentElement","setVirtualHeight","updateGridLineContainerHeight","updateLastRowBottomWidth","wrapper1","expandedRecords","lastExpandedRow","lastExpandedRowIndex","ganttChartMouseDown","allowTaskbarDragAndDrop","allowTaskbarEditing","editAction","getRecordByTaskBar","isTaskbarEdited","ganttChartMouseClick","autoFocusTasks","scrollToTarget","ganttChartMouseUp","removeFalseLine","isOnTaskbarElement","chartExpandCollapseRequest","dateObjLeft","updateScrollLeft","mouseUp","ganttDragElemet","documentMouseUp","showActiveElement","onTaskbarClick","taskbarElement","getRecordByTarget","ganttChartLeave","ganttChartMove","getOffsetRect","connectorLineEditModule","updateConnectorLineEditElement","contextClick","closeFilterOnContextClick","columnElement","indicator","tooltipModule","getPredecessorTooltipData","getMarkerTooltipData","doubleClickHandler","recordDoubleClick","getChartRows","collapseGanttRow","expandGanttRow","reRenderConnectorLines","collapsedGanttRow","expandCollapseChartRows","idField_1","gridRec","collapseRow","renderMultiTaskbar","updateContentHeight","expandedGanttRow","idField_2","expandRow","isExpandCollapseLevelMethod","refreshRecords","chartRows","expandCollapseAll","treeGridContentHeight","expandAtLevel","collapseAtLevel","isIE11Pointer","mouseDown","isAdaptive","getIndexByTaskBar","onTabAction","isInEditedState","$target","setActiveElement","focusedRowIndex","isTab","tempNextElement","childrenIndex","nextElementIndex","isEditableElement","manageFocus","editedColumn","fmodule","validateNextElement","getNextRowElement","getChildElement","isChartRow","expandedRecordIndex","nextRecord","nextRowIndex","elementByClass","isChartElement","Timeline","ganttObj","isZoomIn","topTierCollection","bottomTierCollection","pdfExportTopTierCollection","pdfExportBottomTierCollection","restrictRender","performedTimeSpanAction","isZoomedToFit","timelineEndDate","customTimelineSettings","currentZoomingLevel","roundOffDays","processTimelineProperty","timelineWidthCalculation","refreshTimeline","processTimelineUnit","timelineContainer","refreshTimelineByTimeSpan","updateChartByNewTimeline","refreshChartByTimeline","currentScrollLeft","processZooming","previousTimeline","zoomingProjectStartDate","zoomingProjectEndDate","currentLevel","checkCurrentZoomingLevel","foundLevel","zoomingLevels","tempLevel","controlId","newTimeline","changeTimelineSettings","skipProperty","assignValue","tier","calculateWidthBetweenTwoDate","zoomingLevel","firstValue","secondValue","totalDays","chartWidth","sortedCollectons","roundOffDateToZoom","numberOfCells","calculateNumberOfTimelineCells","emptySpace","bottomTierCellWidthCalc","zoomLevel","convertedMilliSeconds","isStartDate","roundOffTime","tierUnits","extendFunction","timelineViewMode","previousIsSingleTier","validateCount","validateFormat","weekStartDay","calculateZoomingLevelsPerDayWidth","collections","getPerDayWidth","getCurrentZoomingLevel","currentZoomCollection","checkSameCountLevels","getZoomingLevels","sameUnitLevels","closestUnit_1","getClosestUnit","sortedUnitLevels","checkCollectionsWidth","closetUnit","isCont","bottomTierUnits","checkSameLevels","zoomLevels","sortedZoomLevels","updateTimelineHeaderHeight","dateByLeftValue","milliSecondsPerPixel","virtualTableDiv","virtualTrackDiv","loopCount","createTimelineTemplate","timelineVirtualizationStyles","trackWidth","contentVirtualTrack","virtualTableStylesT","virtualTableStylesB","virtualTrackStylesT","virtualTrackStylesB","svgObject","tierCount","timeDifference","timelineRoundOffEndDate","validateBottomTierCount","tierFormat","cloneObj","propertyCollection","innerProperty","formatDateHeader","dayFormat","parentTh","parentTr","scheduleDateCollection","WidthForVirtualTable","timelineCell","getHeaterTemplateString","calculateQuarterEndDate","getIncrement","tierCollection","weekendEndDate","updateTimelineAfterZooming","totWidth","contentWidth","widthDiff","getTimelineRoundOffEndDate","dayIntervel","checkDate","diffCount","isWeekendHeaderCell","scheduleWeeks","thWidth","cellWidth","isWeekendCell","textClassName","weekendBackground","isWeekend","bottomTierCount","topTierCount","bottomTierCellWidth","topTierCellWidth","roundOffStartDate","updateScheduleDatesByToolBar","updateTimeLineOnEditing","tempArray","filteredStartDateRecord","pdc","filteredEndDateRecord","validStartDate","validEndDate","maxStartLeft","maxEndLeft","validStartLeft","validEndLeft","taskbarModule","performTimeSpanAction","isFrom","timeSpanActionEvent","ProjectEndDate","TreeGridColumn","IsRowDDEnabled","GridLogger","gridurl","treeGridObj","treeLog","treeGridDetails","mapping_fields_missing","idMapping","childMapping","checkboxChange","expanding","collapsing","remoteExpand","localPagedExpandCollapse","pagingActions","printGridInit","contextMenuOpen","contextMenuClick","beginEdit","beginAdd","cellSave","cellEdit","beforeBatchDelete","beforeBatchAdd","beforeBatchSave","batchSave","virtualActionArgs","dataListener","indexModifier","beforeStartEdit","beforeBatchCancel","rowDrop","rowsAdd","rowsRemove","rowdraging","rowDropped","TreeClipboard","treeCopyContent","copiedUniqueIdCollection","treeGridParent","uniqueid","copyHierarchyMode","parentContentData","childContentData","treeLevel","GridClipboard","isFilterChildHierarchy","hierarchyMode","getExpandStatus","childParent","parentRecord","getParentData","findChildrenRecords","isSummaryRow","isOffline","objArr","getPlainData","requireFilter","ContextMenuItems","filteredList","searchingRecords","headerCheckbox","columnCheckbox","updateGridActions","checkboxSelection","selectCheckboxes","autoCheckHierarchy","checkBoxvalue","headerSelection","getCheckedRecords","getCheckboxcolumnIndex","mappingUid","headerCelllength","headerElement","renderColumnCheckbox","checkboxState","containerELe","divEle","flatRecord","traverSelection","ischildItem","updateSelectedItems","updateParentSelection","getFilteredChildRecords","filteredChildRecords","indeter","checkChildRecords","checkBoxRecord","hasFilteredChildRecords","multiFilterCheckState","filterResult","rec","checkedRecord","checkboxRecord","movableTr","checkedIndex","checkBoxclass","isCheckboxcolumn","updatedData","getCheckedrecords","getCheckedRowIndexes","GridPrint","printTreeGrid","templateResult","columnTemplateResult","reactTemplateRender","RowModifier","pageSizeMode","enableCollapseAll","parentrec","getVisibleRecords","cellRender","cellElement","pad","filterLevel","totalIconsWidth","treeColumnIndex","emptyExpandIcon","iconRequired","expandIcon","updateTreeCell","freezerightColumns","freezeLeftColumns","treeColumn","colindex","thisRef_3","treecell","DataManipulation","parentItems","storedIndex","isSortAction","dataResults","isSelfReference","updateParentRemoteData","beginSorting","collectExpandingRecs","dataProcessor","convertToFlatData","filterKey","qry","zerothLevelData","convertJSONData","selfData","selfReferenceUpdate","createRecords","referenceData","isExpandCollapse","summaryQuery","summaryModule","calculateSummaryValue","rowDetails","childRecord","gridRows","childRows","expandingTd","fetchRemoteChildData","clonequries","expandDetail","filterqry","inx","remoteExpandedData","remoteCollapsedData","haveChild","resultChildData","parentUniqueID","gridQuery","virtualArgs","remoteVirtualAction","notifyArgs","prevInfo","loadNext","nextInfo","parentRecords","treeGridData","isExport","expresults","exportType","actionAddArgs","primaryKeyColumnName","isLocalData","updateAction","fltrQuery","srchQuery","gridQuery_1","srtQry","srt","compFun","modifiedData","dragdIndex","dropdIndex","sortArgs","paging","actArgs","isCollapsedStatePersist","actualResults","dataResult","addRowIndex","addRowRecord","treeData","originalData","isSkip","addAct","currentViewRecords","primaryKeys","currentdata","internalProperty","addAction","editedData","updateParentRow","currentData_1","removeChildRecords","isChildAll","editRowIndex","updateCurrentViewData","updatedParent","movableRow","index_2","TreeGrid","uniqueIDCollection","uniqueIDFilterCollection","indentOutdentAction","modifiedRecords","excludeKeys","TreeGrid_1","TreeGridSelection","TreeLogger","mergePersistTreeGridData","exportTreeGrid","treeGridModel","treeGridInput","TreeGridLocale","Above","Below","Child","AddRow","ExpandAll","CollapseAll","RowIndent","RowOutdent","sortByColumn","gridLocale","treeGridkeyActionHandler","parentTarget","summaryElement","expandCollapseRequest","findnextRowElement","cellIndex_1","findPreviousRowElement","summaryRowElement","infiniteScrollData","ctrlShiftUpArrow","ctrlShiftDownArrow","freezePresent","IsRowDDInjected","isIndentEnabled","vueInstance","dataModule","autoGenerateColumns","convertTreeData","loadGrid","gridRequiredModules","refreshToolbarItems","destroyTemplateFn","indentID","outdentID","indentElement","outdentElement","afterGridRender","griddata","bindGridProperties","bindedDataSource","getGridColumns","getGridToolbar","getGridEditSettings","templateInstance","triggerEvents","IsExpandCollapseClicked","bindGridEvents","excelQueryCellInfo","pdfQueryCellInfo","checkBoxChange","excelExportComplete","excelHeaderQueryCellInfo","pdfHeaderQueryCellInfo","columnMenuOpen","columnMenuClick","beforeCopy","beforePaste","extendedGridDataBoundEvent","extendedGridEvents","extendedGridActionEvents","extendedGridEditEvents","bindGridDragEvents","bindCallBackEvents","lastRowBorder","visiblerow","isAddBorder","isPixelHeight","updateRowTemplate","updateAltRow","totalRows","callBackPromise_1","beforeDataBoundArgs","callBackPromise","toolbarargs","cellselectingArgs","begineditArgs","isExpandRefresh","contextitems","cellsaveArgs","treeColumnRowTemplate","datacount","callBackPromise_2","updateTreeGridModel","showChildSummary","selectedItem_1","dropPosition","currentPageItem","frozenContent","rowDragStartHelper","rowDragStart","rowDrag","allowEditOnDblClick","showDeleteConfirmDialog","prefixIcon","isEmptyColumnModel","treeGridColumn","gridColumnCollection","treeColumnTextAlign","treeColumnField","isDataSourceChanged","eventListener","updateTreeColumnTextAlign","treeGridElement","hasTreeGridChild","ignoreInArrays","ignoreOnColumn","ignoreInColumn","isEditCollapse","visibleRecords","getVirtualColIndexByUid","updateColumnsWidth","currentColumn","rowInfo","rowInfo_1","parentRec","getCollapseExpandRecords","pagerValuePresent","pagerdropdownModule","isExpandingEventTriggered","expandAllPrevent","expandRows","expandingArgs","expandCollapseAllChildren","expandArgs","updateExpandStateMapping","isExpandedEventTriggered","isCollapsingEventTriggered","collapseAllPrevent","collapseRows","collapsingArgs","collapseArgs","isCollapsedEventTriggered","scrollBy","getRecordDetails","expandByKey","expandCollapseActionByKey","isPaging","puniqueID_1","collapseByKey","primaryKeyField","isExpandCollapseall","updateChildOnDemand","displayAction","detailrows","localExpand","lastrowIdx","flatDataRecords","scrollHeightBeforeRefresh","collapseRemoteChild","freezeRightRows","gridRowsObject","visibleRowCount","rcell","movablerows","rightrows","collapsingTd","expandElement","eRows","updateRowAndCellElements","updateResultModel","returnResult","baseModule","treeModule","outdent","GanttTreeGrid","filPopOptions","filOptions","filterMenuElement","treeGridColumns","isLocaleChanged","previousGanttColumns","validateGanttColumns","createContainer","updateScrollTop","renderReactTemplate","tempHeader","treeGridPane","renderTreeGrid","composeProperties","getContentDiv","getHeaderDiv","msOverflowStyle","scrollbarWidth","ensureScrollBar","isMobile","treeActionComplete","treeDataBound","createExpandCollapseArgs","collapsedArgs","expandedArgs","updateKeyConfigSettings","record_1","updatedArgs","getTaskByUniqueID","initiateCellEdit","currentEditRow","isCancelled","addDeleteRecord","indexvalue","currentSelection","addedRecord","updateDragDropRecords","treeGridClickHandler","customColumns","tasksMapping","bindTreeGridColumnProperties","createTreeGridColumn","composeUniqueIDColumn","isDefined","previousColumn","prevcolumn","composeIDColumn","renderWorkingDayCell","renderDayCell","durationValueAccessor","composeProgressColumn","composeResourceColumn","showInlineNotes","workValueAccessor","taskTypeValueAccessor","modeValueAccessor","resourceValueAccessor","getResourceIds","taskIDName","isProjectView","lengthDataSource","idValueAccessor","newGanttColumn","ganttColumn","GanttColumn","resourceNames","newScrollTop","DayWorkingTime","EventMarker","TaskFields","TimelineTierSettings","TimelineSettings","LabelSettings","TooltipSettings","SplitterSettings","ResourceFields","ChartRows","milestoneHeight","milesStoneRadius","baselineTop","baselineHeight","touchLeftConnectorpoint","touchRightConnectorpoint","dropSplit","refreshedTr","refreshedData","taskBaselineTemplateNode","initPublicProp","createChartTable","initiateTemplates","refreshGanttRows","initChartHelperPrivateVariable","initializeChartTemplate","createTaskbarTemplate","isGanttChartRendered","getIndicatorNode","getIndicatorleft","createDivElement","getChildTaskbarNode","childTaskbarNode","templateData","childTaskbarTemplateFunction","getTemplateID","taskbarInnerDiv","progressDiv","getBorderRadius","tempDiv","taskLabelTemplateFunction","taskLabelTemplateNode","labelSettings","getTaskLabel","splitTaskbar","childLabel","splitTasks","progressBarVisible","segmentPosition","generateSpiltTaskAriaLabel","getSplitTaskbarLeftResizerNode","getSplitTaskBorderRadius","getSplitTaskbarRightResizerNode","getSplitProgressResizerNode","lResizerLeft","rResizerLeft","getSegmentIndex","splitStartDate","mergeTask","segmentIndexes","mergeArrayLength","mergeData","firstSegmentIndex","arrayLength","firstSegment","secondSegment","secondSegmentIndex","insertIndex","segmentFields","modifiedSegments","refreshChartAfterSegment","updatedRecordsDateByPredecessor","removePreviousConnectorLines","refreshEditedRecordConnectorLine","isInPredecessorValidation","triggerQueryTaskbarInfoByIndex","splitTask","splitDates","splitDate","splitRecord","segmentDuration","splitSegmentedTaskbar","constructSegments","segmentsArray","checkClickState","endDateState","segmentEndDate","mode_1","timeIncrement","getMilestoneNode","milestoneNode","milestoneTemplateFunction","getTaskBaselineNode","baselineLeft","baselineWidth","baselineColor","updateTaskBaselineNode","getMilestoneBaselineNode","baselineMilestoneHeight","milestoneMarginTop","getLeftLabelNode","leftLabelNode","generateTaskLabelAriaLabel","leftLabelTemplateNode","leftTaskLabelTemplateFunction","leftLabel","getLableText","labelDiv","leftLabelHeight","taskBarMarginTop","spanElem","getRightLabelNode","rightLabelNode","rightLabelTemplateNode","rightTaskLabelTemplateFunction","rightLabel","getManualTaskbar","autoLeft","milestoneTemplate","getParentTaskbarNode","parentTaskbarNode","parentTaskbarTemplateFunction","tHeight","getExpandClass","progressBarInnerDiv","parentTaskLabelNode","labelElement","parentLabel","getTableTrNode","activecls","getRowClassName","getExpandDisplayProp","parentTaskbarTemplate","taskbarTemplate","taskNameWidth","taskbarContainer","manualParent","getUnscheduledTaskClass","getRightLabelLeft","childTaskbarLeftResizer","childTaskbarRightResizer","childTaskbarProgressResizer","getLeftPointNode","mileStoneLeftValue","pointerLeft","connectorPointWidth","mileStoneLeft","pointerTop","connectorPointMargin","getRightPointNode","pointerRight","getResourceName","getFieldValue","rowClass","length_2","taskbarHeightValue","taskBarMarginTopValue","milestoneHeightValue","collapsedResourceRecord","treeGridModule","modifiedRecIndex","isFromRenderBaseline","tRow","getGanttChartRow","dupChartBody","tempTemplateData","maintainSelectedRecords","replaceChildren","initialChartRowElements","triggerQueryTaskbarInfo","updateOverlapped","connectorLineLeftNode","connectorLineRightNode","parentTrNode","taskbarContainerNode","generateAriaLabel","parentTaskbarTemplateNode","taskbarContainerNode1","appendChildTaskbars","manualTaskbar","connectorLineRightNode_1","milestoneTemplateNode","collapseParent","appendIndicators","setAriaRowIndex","visualData","queryTaskbarInfo","segmentLength","segmentElement","taskIndicatorNode","taskIndicatorTextNode","indicatorIndex","taskIndicatorTextFunction","taskbarCollection","scheduledTask","childTaskbarProgressResizeNode","childTaskbarRightResizeNode","childTaskbarLeftResizeNode","childTaskbarTemplateNode","segmentConnector","length_3","segmentRowElement","taskbarType","classCollections","milestoneColor","childTask","progressTask","taskbarBgColor","taskbarBorderColor","progressBarBgColor","taskLabelColor","rightLabelColor","leftLabelColor","taskbarArgs","updateQueryTaskbarInfoArgs","triggerTaskbarElement","taskBarElement","classCollection","eOverlapped","rowIDs","rowCounts","rowuniqueid","draggedRecordMarginTop","isValidateRange","isUndoRedo","previousFlatData","getResourceParent","replaceWith","dataId","nextEditableElement","updateResourceTaskbarElement","segmentedTasks","mainTaskbar","cloneChildElement","nameConstant","startDateConstant","endDateConstant","durationConstant","taskNameVal","startDateVal","endDateVal","durationVal","generateBaselineAriaLabel","Dependency","parentIds","parentPredecessors","validatedParentIds","storeId","dateValidateModule","predecessorTasks","ensurePredecessorCollectionHelper","predecessorVal","preValues","predecessorItem","preValue","offsetUnits","offsetUnit","tempOffsetUnits","getOffsetDurationUnit","checkIsParent","calculatePredecessor","getPredecessorStringValue","updateUnscheduledDependency","prdList","predId","predData","updateRecordByID","fromId","boolValue","predecessorValue","predecessorText","firstPart","predecessorName","isGUId","isAlpha","elSplit","lastPart","lengthToSlice","indexFS","spliceLength","tempOffset","isDrawn","isOwnParent","fromData","toData","validateParentPredecessor","temp1","durationUnitTexts","durationUnitLabels","updatePredecessors","updatePredecessorHelper","successorGanttRecord","connectorsCollection","connectorCount","predecessorCollection","totLength","validatePredecessorDates","validateRecord","updateChildItems","recordId","updateParentPredecessor","enablePredecessorValidation","parentGanttRecord","currentTaskId_1","previousIds","validateManualTasksOnLinking","validateChildGanttRecord","editedTaskBarItem","childRecordProperty","currentTaskId_2","childPredecessor","getPredecessorDate","maxStartDate","validatedPredecessor","getValidatedStartDate","ganttProperty","parentRecordProperty","returnStartDate","updateDateByOffset","resultDate","ganttRecords","deletedTaskDetails","addPredecessorsCollection","predecessorsLength","predecessorCount","updateConnectorLineObject","connectorObj","createConnectorLineObject","isCritical","connectorLineId","validatePredecessor","validationOn","taskBarModule","taskBarEditRecord","successor","currentTaskId_3","successors","isValidationEnabled","isValidatedParentTaskID","UpdateOffsetOnTaskbarEdit","isFirstCall","validUpdate","childRec","previousRecords","calcEndDate","isRightMove","durationDiff","currentStartDate","getUpdatableChildRecords","calculateDateByRoundOffDuration","validatedChildItems","childLists","newStartDate","getValidPredecessor","validPredecessor","recPredecessor","SvgRenderer","rootID","svgLink","rootId","getOptionValue","createSvg","svgObj","setElementAttributes","setSVGSize","drawRectangle","drawPolyline","drawEllipse","createText","createTSpan","tSpan","createTitle","createDefs","createClipPath","clipPath","createForeignObject","foreignObject","createGroup","createPattern","createRadialGradient","colorStop","createLinearGradient","gradientType","stop_1","drawClipPath","drawCircularClipPath","createCanvas","CanvasRenderer","canvasObj","setCanvasSize","dashArrayString","canvasTranslate","canvasCtx","drawCornerRadius","arcTo","dataSplit","innerR","q1","q2","c3","c4","counterClockWise","transX","transY","isTSpan","baseline","txtlngth","imageObj","myGradient","setGradientValues","newColorStop","stopColor","addColorStop","updateCanvasAttributes","img_1","canvasClip","canvasRestore","themeFontStyle","breakText","htmlObject","textArray","Size","withInAreaBounds","areaBounds","Side","isRight","CustomizeOption","TextOption","baseLine","drawSymbol","functionName","locX","locY","xValue","yValue","renderOption","calculateShapes","PathOption","TooltipLocation","TextStyle","TooltipBorder","AreaBounds","ToolLocation","ConnectorLine","initPrivateVariable","isCanvas","removeSVG","createTooltipElement","themeStyle","tooltipFill","tooltipBoldLabel","tooltipLightLabel","tooltipHeaderLine","textStyle","getTooltipThemeColor","formattedText","highlightPadding","areaMargin","isFirst","markerPoint","templateObject","blazorTemplate","fadeOuted","updateTemplateFn","createTemplate","argsData","markerSide","renderTooltipElement","markerSize","textElements","enableRTL","groupElement","pathElement","shapeOption","markerGroup","elementSize","marginX","arrowPadding","tooltipDiv","arrowLocation","tipLocation","isTop","marginY","sharedTooltipLocation","tooltipLocation","inverted","clipBounds","allowHighlight","wrapPadding","wrapHeader","isWrap","wrappedText","headerSize","pathElement_1","pointRect","enableAnimation","crosshair","updateDiv","animateTooltipDiv","tooltipPlacement","rX","rY","tipX","tipY","findDirection","enableShadow","shadowId","defElement","changeText","revert","findFormattedText","isRender","tspanElement","textCollection","tspanOption","subWidth","tspanStyle","leftSpace","rightSpace","isBoldTag","headerWidth","isLeftSpace","isRightSpace","headerSpace","isRow","isColumn","subStringLength","markerPadding","textHeight","renderOptions","textElement","withoutHeader","pointsLength","isTextWrap","isRTLText","textFont","getTooltipTextContent","width_1","renderContentRTL","contentWidthIndex","characterCollection","isRtlText","isValidHTMLElement","firstElement","sharedTemplateElement","controlInstance","tooltipRendered","rect1","thisObject_1","tooltipRect1","getCurrentPosition","symbolLocation","clipX","clipY","markerHeight","boundsX","boundsY","currenDiff","templateComplier","fadeOut","tooltipElement","tooltipGroup_1","ELEMENT_NODE","opacity_1","progressAnimation","endAnimation","tooltipGroup","connectorLinePath","arrowPath","taskLineValue","getconnectorLineGap","milestoneChild","connectorLineBackground","lineStroke","connectorLineWidth","createConnectorLineTooltipTable","getTaskbarMidpoint","parentGanttData","childGanttData","parentIndex","parentIndexInCurrentView","childIndexInCurrentView","parentLeft","childLeft","childWidth","milestoneParent","parentEndPoint","childEndPoint","connectorLinesCollection","connectorLine","ariaConnector","getConnectorLineTemplate","innerChild","ariaString","getParentPosition","getHeightValue","getInnerElementWidthSSType2","getInnerElementLeftSSType2","getInnerChildWidthSSType2","getBorderStyles","cssType","setInnerChildWidthSSType2","setInnerElementWidthSSType2","setInnerElementLeftSSType2","isMilestoneParent","rowPositionHeight","isMilestoneValue","heightValue","addTop","parentOverlapTopValue","childOverlapTopValue","fromRecordIsParent","toRecordIsParent","fromRecordIsManual","toRecordIsManual","connectorId","groupObject","connectorPath","arrowlinePath","y4","point1","point2","topPosition","midPointParent","midPoint","isParentIndex","isChildIndex","lastRowIndex","tooltipTable","tooltipBody","getConnectorLineTooltipInnerTd","fromTaskName","fromPredecessorText","toTaskName","toPredecessorText","innerTd","fromName","toName","isObjectType","pre","lineId","removeConnectorLineById","renderSplitter","splitterPosition","calculateSplitterPosition","splitterSettings","splitterElement","splitterObject","SplitterLayout","ganttWidth","getSpliterPositionInPercentage","minimum","leftPane","rightPane","splitterPreviousPositionGrid","splitterPreviousPositionChart","splitterResizedArgs","splitterLeftPane","ariaValueNow","splitter","getTotalColumnWidthByIndex","widthAsString","intValue","updateSplitterPosition","triggerCustomResizedEvent","pane1","pane2","TooltipComponent","afterOpen","updateTooltipPosition","beforeRender","afterClose","tooltipCloseHandler","getTooltipContent","tooltipSettings","taskbar","taskbarTemplateNode","tooltipTemplate","baseLineTemplateNode","baselineTemplate","dependencyLineTemplateNode","predecessorTooltipData","argData","tooltipMouseEvent","getPointorPosition","containerPosition","topEnd","leftEnd","taskNameValue","milestoneStartDate","sDateValue","sDate_1","startDateValue","endDateValue","progressValue","startDate_1","endDate_1","duration_1","progress_1","baselineStartDateValue_1","baselineEndDateValue_1","markerTooltipElement","markerTooltipElementValue_1","markerLabel_1","fromNameValue_1","fromIdValue_1","toNameValue_1","toIdValue_1","toId","linkTextValue_1","linkText","offsetStringValue_1","offsetString","titleValue_1","timlineTitleValue_1","autoStartDateValue","autoEndDateValue","durationUnitValue","manualStartDateValue","manualEndDateValue","autoStartDate_1","autoEndDate_1","durationValue_1","manualStartDate_1","manualEndDate_1","autoStartValue","autoEndValue","dateValue","autoStart_1","autoEnd_1","date_1","markerTooltipId","predeceesorParent","fromTask","toTask","linkType","getPredecessorTextValue","tooltipFunction","FocusModule","getActiveElement","isPreviousActiveElement","currentSelectingRecord","searchElement","upDownKeyNavigate","expandCollapseKey","editedRecords","openAddDialog","openToolbarEditDialog","touchEdit","startDeleteAction","selectedId","selectCellIndex","scrollToTask","redo","keyEvent","focussedElement","selectingRowIndex","selectedCellItem","cellInfo","expandByIndex","collapseByIndex","Gantt","singleTier","totalUndoAction","isOnAdded","isConnectorLineUpdate","staticSelectedRowIndex","eventMarkerColloction","mergePersistGanttData","getDefaultLocale","isMileStoneEdited","validationDialogElement","currentEditedArgs","dialogValidateMode","respectLink","removeLink","preserveLinkWithEditing","splitterModule","keyConfig","saveRequest","cancelRequest","addRowDialog","editRowDialog","focusTask","indentLevel","outdentLevel","focusSearch","resourceFieldsMapping","isUndoRedoItemPresent","undoRedoActions","getDefaultTZOffset","janMonth","julMonth","resourceNameMapping","validateDimentionValue","calculateDimensions","settingsHeight","settingsWidth","elementStyleHeight","elementStyleWidth","renderToolbar","isTablePresent","ganttHeader","scrollLeftValue","ganttContent","renderBackGround","renderHeaderBackground","timelineHeight","backgroundLines","shimmerContainerHeight","createEmptyTimeLineTable","duplicateRow","topBottomHeader","applyTimelineMaskRow","innerMaskCells","htmlInner","columnLoop","enableContextMenu","renderChartVerticalLines","removeCriticalPathStyles","ganttChartElement","updateRowHeightInConnectorLine","firstMenuItem","getRecordFromFlatdata","updatedRecord","_WeekStartDay","updateTimescaleView","displayHalfValue","displayQuarterValue","updateTreeColumns","scrollContainer","createGanttPopUpElement","getCurrentRecords","showCriticalPath","renderChartGridLines","updateSearchTextBox","processDialogFields","reUpdateDimention","reUpdateEditModules","selectRowByIndex","closeGanttActions","updateOverAllocationCotainer","enableUndoRedo","highlightWeekends","verticalLines","chartRowsTD","getContentHeight","thElements","thLength","containerDiv","divElement","emptyRecord","criticalPath","changeScheduleMode","subTasksStartDate","subTasksEndDate","scheduleStartDate","scheduleEndDate","auto","resourceID","generalTab","customTab","writeNotes","addDialogTitle","editDialogTitle","zoomToFit","nextTimeSpan","prevTimeSpan","saveButton","taskBeforePredecessorFS","taskAfterPredecessorFS","taskBeforePredecessorSS","taskAfterPredecessorSS","taskBeforePredecessorFF","taskAfterPredecessorFF","taskBeforePredecessorSF","taskAfterPredecessorSF","okText","confirmDelete","taskLink","lag","enterValue","taskInformation","deleteTask","deleteDependency","toMilestone","leftTaskLabel","rightTaskLabel","confirmPredecessorDelete","unassignedTask","actionBeginTask","scrollToDate","updateChartScrollOffset","getRootParent","pageOrientation","nonWorkingDays","previousTimeSpan","timeSpan","initiateEditAction","isStart","isTaskData","makeCloneData","task_1","currentAction","oldRecord","cloneData","clonedValue","isObjectArray","dialogClose","setSplitterPosition","tempSplitterSettings","contructExpandCollapseArgs","expandByID","collapseByID","rowPosition","addRowPosition","parentTask","dropChildRecord","updateTaskId","currentId","newId","getUndoActions","getRedoActions","clearUndoCollection","clearRedoCollection","getCriticalTasks","fitToProject","updateRecordByIndex","addPredecessor","predecessorString","removePredecessor","updatePredecessor","openEditDialog","getRowByID","isUnscheduledTask","getGanttColumns","showColumn","hideColumn","taskDetail","updateDataArgs","customData","convertToMilestone","changeTaskMode","updateTaskScheduleModes","initiateUpdateAction","GanttComponent","ErrorOption","ColumnDirective","ColumnsDirective","EventMarkerDirective","EventMarkersDirective","HolidayDirective","HolidaysDirective","InlineEditRender","addNew","getEditElement","checkLastRow","tdElement","isCustomFormValidation","td_1","editTemplateID","BatchEditRender","columnObject","newTd","DialogEditRender","setLocaleObj","createDialogHeader","responsiveDlgRenderer","getDialogEditTemplateElement","dialogEditTemplates","dialogTemp","checkColumnIsGrouped","dataCell","EditRender","getEditElements","convertWidget","isFocus","cellValue","tArgs","isInput","CHECK","FRAME","INDETERMINATE","LABEL","RIPPLE","RIPPLECHECK","RIPPLEINDETERMINATE","containerAttr","CheckBox","isMouseClick","clickTriggered","validCheck","changeState","isInitialize","getWrapper","changeEventArgs","updateVueArrayModel","initialCheckedValue","setDisabled","initWrapper","setHiddenInput","setText","labelMouseDownHandler","labelMouseLeaveHandler","labelMouseUpHandler","rippleElem","labelWrap","updateHtmlAttributeToWrapper","changeHandler","formResetHandler","formElem","EditCellBase","removeEventHandler","BooleanEditCell","activeClasses","selectChkBox","editRow","cbChange","DropDownEditCell","isInline","dropDownClose","editCellDialogClose","ddCreated","dropdownCreated","ddOpen","dropDownOpen","ddBeforeOpen","dropdownBeforeOpen","ddComplete","ddActionComplete","dlgElement","dlgObj","SPINICON","SPINUP","INCREMENT","DECREMENT","INTREGEXP","NUMERIC_FOCUS","wrapperAttributes","selectionTimeOut","NumericTextBox","isDynamicChange","numericOptions","isPrevFocused","intRegExp","isCalled","angularTagName","formEle","localeText","incrementTitle","decrementTitle","isValidState","inputStyle","inputName","cultureInfo","initCultureInfo","initCultureFunc","updateHTMLAttrToElement","checkAttributes","inputEleValue","validateMinMax","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","setElementWidth","changeValue","strictMode","trimValue","decimals","roundNumber","hiddenInput","elementPrevValue","isDynamic","setNumber","stepValue","updatedCssClassValue","getNumericValidClassList","updateHTMLAttrToWrapper","pro","numericClassName","numericStyle","spinDown","spinUp","wireSpinBtnEvents","operation","isInteract","performAction","raiseChangeEvent","checkErrorClass","setElementValue","keyupEvent","resetFormHandler","setSpinButton","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveOnSpinner","unwireSpinBtnEvents","preventHandler","iOS","currentPos","prevPos","valArray","ignoreKeyCode","prevVal","nextEle","cursorPosChanged","validateDecimalOnType","localChange","correctRounding","floatExp","floatStep","stepCount","roundValue","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","validateState","elementValue","serverDecimalSeparator","EXPREGEXP","valueString","result1","result2","currentChar","isAlterNumPadDecimalChar","fractionRule","mouseWheel","rawEvent","focusEventArgs","formatValue_1","blurEventArgs","ele_1","focusEvent","getElementData","mouseUpClick","touchEvent","floatLabelTypeUpdate","decrement","updateSpinButton","updateClearButton","NumericEditCell","keyEventHandler","TextBox","isHiddenInput","isForm","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","autocomplete","apiAttributes","attrs_1","autoCompleteTxt","setInitialValue","keydownHandler","resetForm","animationHandler","resetValue","interaction","resetInputHandler","DefaultEditCell","NormalEdit","currentVirtualData","editComplete","getEditArgs","primaryKeyValues","rObj","inlineEditHandler","prevData","argsCreator","begineditargs","editargs","disabledShowAddRow","prevent","applyFormValidation","edFail","validationArgs","editIdx","addIdx","addedRowIndex","isDlg","dlgWrapper","dlgForm","getCurrentEditedData","eleLength","endEditArgs","destroyElements","destroyWidgets","editHandler","edSucc","editSuccess","editFailure","requestSuccess","stopEditStatus","dragRow","dragRowUid","dragRowObject_1","groupedColumn","comparer1","comparer2","aggregateModule","groupedRowReorder","getGroupAggregateTemplates","closeForm","cloneRow","originalRow","cloneFrozen","needRefresh","leftrightCells","closeEditArgs","inlineAddHandler","addArgs","dataLen","tmpRecord","contained","editElements","InlineEdit","BatchEdit","cellDetails","originalCell","cloneCell","editNext","preventSaveCell","validationColObj","prevEditedBatchCell","onBeforeCellFocused","batchCancelFunction","mouseDownElement","setCellIdx","isAddRow","validateFormObj","prevEditedBatchCellMatrix","crtRowIndex","editCellFromIndex","isInsert","removeBatchElementChanges","refreshRowIdx","isInstertedRemoved","bulkDelete","bulkAddRow","removeSelectedData","beforeBatchSaveArgs","removeRowObjectFromUID","rowClone","deleteRowUid","beforeBatchDeleteArgs","dataObjects","defaultData","getDefaultData","beforeBatchAddArgs","btmIdx","getBottomIndex","findNextEditableCell","isValOnly","dValues","editCellExtend","getDataByIndex","getCellIdx","cellEditArgs","isColored","newReactTd_1","newReactTd","setChanges","rowcell","insertedRows","isSingleInsert","escapeCellEdit","generateCellArgs","cloneEditedData","isForceSave","cellSaveArgs","isEscapeCellEdit","editedBatchCellMatrix","editedBatchCell","addCancelWhilePaging","EMAIL","DATE_ISO","DIGITS","PHONE","CREDITCARD","TimePickerBase","FormValidator","validated","errorRules","allowSubmit","infoElement","selectQuery","localyMessage","defaultMessages","dateIso","creditcard","rangeLength","localeFunc","afterLocalization","createHTML5Rules","FormValidator_1","addRules","removeRules","validateRules","rules_1","clearForm","getInputElement","errorClass","validClass","elements_2","getErrorElement","hideMessage","defRules","acceptedTypes","allRule","defRules_1","defRule","annotationRule","ruleCon","rulesList","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","annotationMessage","getErrorMessage","isCheckable","submitHandler","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorRule","removeErrorRules","createErrorElement","errorElement","optionalValidationStatus","refer","currentRule","checkValidator","ruleValue","errorOption","errorContainer","customPlacement","checkRequired","inputType","dateOptions","uNum","compareTo","OTHERMONTH","OTHERDECADE","CONTENTTABLE","DECADE","OVERLAY","WEEKNUMBER","SELECTED","FOCUSEDDATE","FOCUSEDCELL","OTHERMONTHROW","TODAY","LINK","CELL","ZOOMIN","DAYHEADERLONG","dayMilliSeconds","isPopupClicked","isDateSelected","isTodayClicked","previousDates","rangeValidation","calendarEleCopy","calendarMode","todayDisabled","todayDate","calendarElement","createContent","getDefaultKeyConfig","defaultKeyConfigs","controlUp","controlDown","moveDown","moveUp","moveLeft","moveRight","shiftPageUp","shiftPageDown","controlHome","controlEnd","spacebar","altRightArrow","altLeftArrow","validateDate","checkDateValue","checkValue","setOverlayIndex","popupWrapper","modal","minMaxUpdate","tabIndexAttr","previousIcon","nextIcon","headerTitleElement","adjustLongHeaderSize","createContentHeader","createContentBody","showTodayButton","createContentFooter","addContentFocus","removeContentFocus","focusedDate","tableBodyElement","getCultureValues","cldrObj","culShortNames","dayHeaderFormat","getCultureObjects","toCapitalize","tableHeadElement","weekNumber","shortNames","shiftArray","renderYears","renderDecades","renderMonths","updateFooter","todayElement","l10","maximum","todayButtonClick","navigateTitle","keyActionHandle","dateWireEvents","serverModuleName","isCustomDate","currentView","getViewNumber","resetCalendar","renderDayCellArgs","multiSelection","depthValue","levelRestrict","keyboardNavigate","navigatePrevious","navigateNext","selectDate","contentClick","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigateNextHandler","navigateHandler","triggerNavigate","minMaxDate","localDate","tdEles","numCells","renderDays","islamicModule","islamicRenderDays","renderTemplate","islamicRenderTemplate","isTodayDate","titleUpdate","weekEle","weekAnchor","weekRule","finalDate","getWeek","dateFormatOptions","tdEle","dayLink","isOutOfRange","renderDayCellEvent","argsDate","otherMnthBool","disabledCls","getDateVal","copyValues","formatOptions_1","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","yr","curYrs","minYr","maxYr","localMonth","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","rowIterator","lastDate","timeOffset","findLastDay","classNm","trEle","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","getIdValue","islamicPreviousHeader","islamicDate","getIslamicDate","switchView","validateValues","checkView","skipIndex","tempValueString","minFormatOption","minString","maxFormatOption","maxString","setValueUpdate","dayFormatOptions","monthFormatOptions","setActiveDescendant","focusedEle","previousIconHandler","compareMonth","nextIconHandler","compareYear","compareDecade","todayButtonEvent","stringVal","islamicPrevious","islamicNext","gregorianFormat","islamicFormat","tzOffset","tzOffsetDiff","getMaxDays","setDateDecade","setDateYear","checkPresentDate","checkPrevious","navigatedEvent","navigatedArgs","findNextTD","rangeValue","tmpDate","inValue","tempValues","copyDate","setClass","setTimeZone","newCssClass","oldCssClass","isDayLightSaving","secondOffset","firstOffset","timeZoneDiff","changedArgs","generateTodayVal","triggerChange","previousDate","previousDateTime","isMultiSelect","tempDays","islamicRenderYears","islamicRenderDecade","storeView","addDate","tempDates","removeDate","setTodayDate","changeEvent","POPUPWRAPPER","INPUTFOCUS","ACTIVE","OVERFLOW","NONEDIT","isDateIconClicked","isAltKeyPressed","invalidValueString","checkPreviousValue","maskedDateValue","isIconClicked","isDynamicValueChanged","isBlur","datepickerOptions","updateInput","setAllowEdit","allowEdit","checkInvalidValue","enableMask","updateInputValue","previousElementValue","inputValueCopy","ariaAttrs","l10nLocale","fullScreenMode","INPUTWRAPPER","isCalendar","disabledDates","minMaxUpdates","tempFormat","formatString","dateTimeFormat","checkStringValue","returnDate","formatDateTime","valueDate","basicISOString","bindInputEvent","dateIconHandler","inputFocusHandler","inputBlurHandler","inputChangeHandler","keyboardModules","inputKeyActionHandle","unBindEvents","restoreValue","clearedArgs","popupUpdate","preventEventBubbling","interopAdaptor","invokeMethodAsync","updateHtmlAttributeToElement","calendarKeyActionHandle","focusArguments","openOnFocus","strictModeUpdate","changeTrigger","blurArguments","calendarKeyboardModules","documentHandler","clickedView","defaultAction","targetdate","modifiedValue","toLocaleUpperCase","createCalendar","modelHeader","iconRight","swipe","CalendarSwipeHandler","TouchStartHandler","preventArgs","setAriaAttributes","touchStart","setAriaDisabled","yearHeading","h2","daySpan","monthSpan","modelCloseIcon","modelCloseHandler","modelTodayButton","selectCalendar","prevent_1","outOfRange","mobilePopupWrapper","prevent_2","closeEventCallback","inputElementCopy","ensureInputAttribute","ngTag","checkHtmlAttributes","nameAttribute","checkFormat","skeletonString","dynamic","valueCopy","previousValCopy","dateIdString","isDisabledDate","dayOfTheWeek","ARROWLEFT","ARROWDOWN","SHIFTTAB","END","HOME","MaskedDateTime","defaultConstant","hiddenMask","validCharacters","isDayPart","isMonthPart","isYearPart","isHourPart","isMinutePart","isSecondsPart","isMilliSecondsPart","monthCharacter","periodCharacter","isHiddenMask","isComplete","isNavigate","navigated","isDeletion","isShortYear","isDeleteKey","isDateZero","isMonthZero","isYearZero","isLeadingZero","dayTypeCount","monthTypeCount","hourTypeCount","minuteTypeCount","secondTypeCount","dateformat","getCulturedFormat","maskDateValue","createMask","validCharacterCheck","maskInputHandler","maskKeydownHandler","clearHandler","maskPlaceholder","getCUltureMaskFormat","formatCheck","previousHiddenMask","setDynamicValue","objectString","validChar","navigateSelection","formatText","dateAlteration","isPersist","differenceCheck","previousVal","newDateValue","handleDeletion","monthString","getCulturedValue","monthValue","monthValue_1","previousMaxDate","currentMaxDate","yearValue","periodString","periodkeys","formattext","daysAbbreviated","dayKeyAbbreviated","daysWide","dayKeyWide","daysNarrow","dayKeyNarrow","monthAbbreviated","monthWide","zeroCheck","roundOff","hiddenChar","isbackward","formatIndex","valueText","resultValue","isSegment","isDecrement","incrementValue","cldrTimeFormat","POPUPDIMENSION","DAY","HOVER","NAVIGATION","FOCUS","LISTCLASS","EDITABLE","createdEl","timeCollections","TimeMaskPlaceholder","TimePicker","disableItemCollection","timeOptions","angularTag","openPopupEventArgs","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","checkErrorState","clientTimeZoneDiff","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","checkTimeFormat","checkInValue","isTextSelected","valueWithMinutes","updatedCssClassesValue","getCldrDateTimeFormat","cldrFormat","valueExp","valueExpression","setCurrentDate","getCultureTimeObject","enableElement","rippleFn","listTag","propertyList","generateList","listWrapper","addSelection","getPopupHeight","containerStyle","setPopupWidth","modelTitleSpan","timePopupCloseHandler","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","disableTimeIcon","selectInputText","setCursorToEnd","getMeridianText","meridian","getCursorSelection","setScrollTo","findScrollTop","initialTime","scrollTime","cldrDateFormat","getCultureDateObject","dateToNumeric","getExactDateTime","compareFormatChange","updatePlaceHolder","popupHandler","curPos","cursorDetails","focusSelection","objToString","documentClickHandler","mobileTimePopupWrap","disposeServerPopup","checkValueChange","valueProcess","dateVal","strictOperation","inputEvent","timeValue","raiseClearedEvent","getTextFormat","strArray","validateValue","newval","findNextElement","textVal","timeVal","selectNextItem","validLiElement","isCheck","getHoverItem","setActiveClass","timeParse","listBaseOptions","getProperty","popupAlignment","timePopupElement","formatValues","DATETIMEPOPUPWRAPPER","POPUP","ICONANIMATION","DateTimePicker","scrollInvoked","dateFormatString","dateTimeOptions","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timeIcon","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","isDisable","renderTimeIcon","timeHandler","dateHandler","inputKeyAction","getCldrFormat","isDatePopupOpen","listCreation","TimePopupFormat","endTime","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","timeModal","timeKeyActionHandle","unWireTimeListEvents","modelWrapper","dateTimeCloseHandler","timeContent","setTimeHover","removeTimeHover","getFullDateTime","combineDateTime","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","tempStartValue","tempMin","formatCount","tempEndValue","tempMax","dateTimeCloseEventCallback","maskedDateModule","getTimeActiveElement","status_1","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","DatePickerEditCell","dateanddatetimerender","datePickerEditCell","datePickerClose","TemplateEditCell","updateEditObj","createAlertDlg","createConfirmDlg","updateColTypeObj","editCellType","alertDObj","lastTr","refreshToolbar","destroyToolTip","endEditing","form1","form2","mFormObj","form3","frFormObj","getCurrentEditCellData","getValueFromType","dlgWidget","dlgOk","dlgCancel","alertClick","btnOptions","isForceCancel","executeAction","destroyEditComponents","eventDetails","col_1","isRestrict","isDestroyVirtualForm","instanceElement","formObjects","virtualFormObj","curretRowFocus","focusableEditCells","commandColCell","preventObj","arg7","arg8","newRule","createFormObj","validationComplete","valErrorPlacement","getElemTable","isFrozenHdr","resetElemPosition","tdRight","elemRight","customForm","isFHdr","validationForBottomRowPos","gcontent","isFHdrLastRow","isBatchModeLastRow","viewPortRowCount","fHearderRows","insertRow","inputClient","gHeight","rowsHeight","AddEditors","editors","batchChildCount","batchAddedRecords","batchDeletedRecords","batchAddRowRecord","batchRecords","batchPageAction","batchCancelAction","immutableBatchAction","nextCellIndex","getBatchRecords","getAddRowIndex","getSelectedIndex","getBatchChildCount","currentDataIndex","rowObjectIndex","getActualRowObjectIndex","newBatchRowAdded","batchIndex","primaryParent","childRecordCount","isTabLastRow","updateChildCount","updateRowIndex","newlyAddedRecords","primarykey","changeRecords","deleterecords","deleteUniqueID","positionIndex","primarykey_1","addRecords","i_2","prevAriaRowIndex","isAddedRowByMethod","isAddedRowByContextMenu","GridEdit","previousNewRowPosition","internalProperties","batchEditModule","lastCellTab","contentready","editActionEvents","gridDblClick","customCellSave","savePreviousRowPosition","resetIsOnBatch","getRowPosition","doubleClickTarget","treeObj","paramsLength","infiniteAddAction","newRowObject","newRowObjectIndex","newRecord","updateInfiniteCurrentViewData","movableRowsObject","isCache","newRowIndex","infiniteCurrentViewData","isOnBatch","updateGridEditMode","prom","celleditArgs","toolbarID","treeCell","afterCellSave","primaryKeys_1","excelSearchOperator","saveArgs","data1","treeColIndex","data2","firstAriaIndex","lastAriaIndex","withinRange","isVirtualization","newlyAddedRecord","seletedRow","beginAddEdit","primaryKeys_2","childRecordCount1","currentDataIndex1","deletedValues","previousEditMode","previousGridEditMode","CellEdit","isResourceCellEdited","bindTreeGridProperties","ensureEditCell","parentReference_1","openNotesEditor","columnTypes","updatedEditFields","isValueChange","editedValue","editedObj","editedArgs","endEditAction","taskNameEdited","startDateEdited","endDateEdited","durationEdited","resourceEdited","progressEdited","baselineEdited","dependencyEdited","notedEdited","workEdited","taskmodeEdited","initiateSaveAction","typeEdited","updateEditedRecord","ganttProb","validateEndDateWithSegments","compareDatesFromRecord","revertCellEdit","updateResourceRelatedFields","durationString","currentDuration","updateSegmentProgress","baseLineStartDate","baseLineEndDate","editedResourceId","editedResouceLength","previousResource","editedResources","previousResourceLength","isResourceUpdate","workValue","EditTooltip","taskbarEdit","showHideTaskbarEditTooltip","updateTooltip","connectorSecondAction","connectorSecondElement","taskBarEditElement","taskWidth","getTooltipText","tooltipString","editRecord","editing","templateNode","TaskbarEdit","previousLeftValue","isMouseDragged","dependencyCancel","editElement","elementOffsetLeft","elementOffsetTop","elementOffsetWidth","elementOffsetHeight","currentItemTop","currentItemPrevTop","isClonedElement","tooltipValue","editTooltip","mouseLeaveHandler","mouseMoveAction","connectorSecondRecord","highlightedSecondElement","finalPredecessor","drawPredecessor","roundOffDuration","dragMouseLeave","previousItemProperty","tapPointOnFocus","getElementByPosition","updateTaskBarEditElement","validateConnectorPoint","taskBarEditingAction","showHideActivePredecessors","multipleSelectionEnabled","showHideTaskBarEditingElements","applyActiveColor","chartContent","$tr","$taskbar","$connectorElement","predecessorIndex","renderPredecessorDeleteConfirmDialog","realTaskbarElement","getTaskBarAction","ganttprop","parentleft","resizeElement","currentindex","resizeTable","resizetableBody","cloneTaskBar","taskbarPosition","tableBody","cloneTaskbarElement","taskbarResizer","updateMouseDownProperties","prevZIndex","secondElement","fadeConnectorLine","isShowProgressResizer","isShowConnectorPoints","progressElement","connectorElement","getCoordinate","zoom1","mouseDownX","mouseDownY","dragMoveY","isMouseDragCheck","mouseMoveX","mouseMoveY","removeFirstBorder","canremove","removeLastBorder","islastRowIndex","isEmptyRow","removetopOrBottomBorder","addRemoveClasses","topOrBottomBorder","removeChildBorder","borderElem","addErrorElem","dragelem","removeErrorElem","errorelem","ensurePosition","draggedRecords","draggedRecord","ganttRowElement","chartRowElement_1","draggedTreeGridRowElement","draggedTreeGridRowHeight","droppedTreeGridRowElement","tObj","rowTop","toolHeight","positionOffSet","topRowSegment","middleRowSegment","bottomRowSegment","posy","isTopSegment","isMiddleRowSegment","isBottomRowSegment","droppedTreeGridRecord","editingFields","updateMouseMoveProperties","oldData","performProgressResize","enableLeftResizing","enableRightResizing","enableDragging","updateConnectorLineSecondProperties","triggerDependencyEvent","drawFalseLine","setItemPosition","updateEditedItem","taskBarEditedAction","isConnectorLineEdit","timerCount","startScrollTimer","stopScrollTimer","timelineWidth","differenceWidth","previousMouseMove","previousSegment","nextSegment","diffrenceWidth","widthValue","progressBorderRadius","enableSplitTaskLeftResize","updateEditPosition","segment_1","segment_2","segment_3","updateIsMilestone","segmentWidth","getProgressPercent","getRoundOffStartLeft","getDateByLeft","updateSplitLeftResize","getRoundOffEndLeft","tempdate","updateSplitRightResizing","updateChildDrag","setSplitTaskDrag","segmentOffsetDuration","segmentOffset","isRoundOff","totalLeft","remainingContribution","remainingLeft","positionValue","inHour","inMinutes","remainDays","remainDaysInDecimal","rightResizer","segmentedTaskBarContainer","traceConnectorPointRight","segmentConnectorPointRight","manualParentTaskbar","manualParentRight","manualParentLeft","resizeLine","segment_4","width_2","resizeValue","mouseDragged","cancelTaskbarEditActionInMouseLeave","resMouseY","taskbarEdited","reUpdatePreviousRecords","fixedWidth","totalTaskWidth","totalProgressWidth","draggedRecIndex","flatRecordCol","droppedRecord","droppedTarget","droppedParentRecordIndex","draggedParentRecordIndex","dropRecord","droppedRecordIndex","updateParentProgress","segmentIndexes_1","segmentIndexes_2","segment_5","eDate_1","parentwidth","progresswidth","falseLine","isRemoveConnectorPointDisplay","isBigger","zoomedPageY","fromItem","toItem","isValidLink","validatePredecessorRelation","predecessorArray","newPredecessorString","CLS_RTL","CLS_DISABLE","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","HScroll","browserCheck","customStep","ieCheck","touchHandler","swipeHandler","scrollEle","createOverlay","createNavIcon","setScrollState","scrollStep","innerEle_1","scrollItems","navEles","rightOverlayEle","clsRight","rightEle","leftEle","eventBinding","rightAttributes","clsLeft","leftAttributes","navEle","navLeftItem","keyTimer","keyTimeout","eleScrolling","tabHoldHandler","repeatScroll","clickEventHandler","trgt","scrollDis","isContinuous","rootEle","frameScrollRequest","swipeEle","scrollUpdating","scrollVal","scrollValue","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","buildTag","scrollBar","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","swipeElement","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLBAR","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDEDPOPOPEN","Toolbar","resizeContext","orientationChangeContext","orientationChange","popupOpen","popupClose","btnItems","destroyItems","trgtEle","ctrlTem","popObj","tbarAlign","tbarItemsCol","attrb","enableCollision","isExtendedOpen","popupPriCount","wireKeyboardEvent","keyModule","docKeyDown","updateTabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","destroyScroll","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","sib","tbrItems","isPopupElement","popupNav","popupClickHandler","observers","clickedArgs","getToolbarPopupWidth","getElementOffsetY","eleStyles","renderControl","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","showAlwaysInPopup","initScroll","innerItems","itemWidthCal","getScrollCntEle","eleWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerNav","createPopupIcon","innerNavDom","checkPriority","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","popupInit","tbarPopupHandler","toolEle","popupElePos","popIcon","overflowHeight","tbEleData","inEle","popPriority","eleWid","sepCheck","itemPopCount","checkClass","rVal","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","sepEle","popedEle","tbarPriRef","sepPri","elWid","wid","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","isVer","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","eleSplice","inlineStyles","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItems","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","getDataTabindex","buttonRendering","iconPos","textStr","btnTxt","suffixIcon","tempDom","itemClick","showTextOn","sTxt","previousEle","multirowele","updateHideEleTabIndex","eleIndex","templateEle","closestItem","tEle","changedProb","popupPriCheck","booleanCheck","itemCol","hideItem","CLS_TAB","CLS_HEADER","CLS_CONTENT","CLS_NEST","CLS_ACTIVE","CLS_FOCUS","CLS_ICONS","CLS_ICON","CLS_ICON_TAB","CLS_ICON_CLOSE","CLS_CLOSE_SHOW","CLS_TEXT","CLS_INDICATOR","CLS_WRAP","CLS_TEXT_WRAP","CLS_TAB_ICON","CLS_TB_ITEMS","CLS_TB_ITEM","CLS_TB_POP","CLS_TB_POPUP","CLS_PROGRESS","CLS_VTAB","CLS_VLEFT","CLS_VRIGHT","CLS_HBOTTOM","CLS_FILL","TABITEMPREFIX","CLS_REORDER_ACTIVE_ITEM","TabActionSettings","TabAnimationSettings","TabItem","Tab","isIconAlone","draggableItems","refreshActiveTabBorder","tbObj","expTemplateContent","cntEle","btnCls","hdrEle","tbItems","tbItem","tbPop","prevItem","bdrLine","dragItem","draggingItems","prevIndex","isNested","isPopup","isSwiped","itemIndexArray","updatePopAnimationConfig","renderContainer","refreshActiveBorder","setOrientation","headerPlacement","renderHeader","scrCnt","scrCntClass","setContentHeight","hdrPlace","tabItems","getTabHeader","addVerticalClass","hdrItems","tabItems_1","parseObject","setCloseButton","toolbarHeader","hdrItem","contents","reRenderItems","maxId","isReplace","idList_1","getIndexFromEle","txtWrapEle","tItems","spliceArray","tbId","tHtml","txtEmpty","headerTextCompile","tCont","wrapAttrs","tItem","spliceItemIndex","removeActiveClass","tabHeader","checkPopupOverflow","isOverflow","ripEle","actEleId","prevEle","trg","prevCtnAnimation","triggerPrevAnimation","oldCnt","animateObj","triggerAnimation","prevActiveEle","newCnt","getTrgContent","extIndex","idNo","isPrevent","openEff","clsEff","setActiveBorder","trgParent","trgIndex","getEleIndex","selectTab","eleStr","callType","tbPos","changeToolbarOrientation","curActItem","headerPos","contentPos","heightAdjustMode","trgHdrEle","reorderActiveTab","tbWidth","skipDataBind","trg_1","eleTrg","refreshItemVisibility","selectedContent","selectingID","selectEventArgs","tbPopObj","bindDraggable","initializeDrag","hoverHandler","spaceKeyDown","tabKeyModule","removeTab","nestedTab","actEle","nxtSib","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","closeButtonTitle","evalOnPropertyChangeItems","changedProp","cntItem","clearTabTemplate","isHiddenEle","addTab","hideTab","enableTab","clearTemplates","itemDragStart","dropItem","dragIndex","dragArgs","draggedItem","droppedItem","clonedElement","scrollRightNavEle","scrollLeftNavEle","hscrollBar","scrollContentWidth","isSameNode","dragAction","droppedIndex","itemDragStop","tabItemDragArgs","dragsIndex","popupContainer","lastEle","dragStopArgs","tabItemDropArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","tabItems_2","textValue_1","removeArgs","removedItem","removedIndex","tabRemovingArgs","targetEleIndex","cntTrg","selectedID","selectingItem","selectingIndex","selectingContent","selectArgs","tabItemId","refreshActiveTab","detachContent","mainContents","txtString","conte","crElem","txtWrap","tConts","wrapAtt","wraper","FilterCellRenderer","fltrData","filterBarTemplate","clearIconElem","operatorIconRender","templateWrite","operators","fbicon","dropOptr","internalEvent","customOperators","spanElmt","FlMenuOptrUI","customFltrOperators","customFilterOperators","destroyDropDownList","renderOperatorUI","dlgConetntEle","optrData","customOptr","dropDatasource","selectedValue","dropSelectedVal","optrDiv","optrInput","valInput","renderResponsiveDropDownList","selValue","selectedField","optrLen","getFlOperator","SPINNER_CLASS","preventBlur","targetFocus","valueMuteChange","doesItemExist","currentValue_1","setHoverList","inlineSearch","fixedHead","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","prevEnd","curEnd","prevStart","curStart","isKeyNavigate","previousValue_1","updateCustomValueCallback","emptyObject","changeData","comboProps","isEscape","searchItem","highlightSearch","ignoreRegex","findTextNode","revertHighlightSearch","AutoComplete","searchList","suggestionCount","filterAction","isNoDataElement","postBackAction","fieldsSettings","highlight","itemCreated_1","showPopupButton","checkFields_1_1","_this_2","atcProps","isHighlight","StringFilterUI","serLocator","getAutoCompleteOptions","foreignColumnQuery","localizeText","acFocus","acComplete","acOpen","actObj","afterRenderFilterUI","filteredValue","filterOptr","actuiObj","getOptrInstance","mapObj","NumberFilterUI","numericTxtObj","numberuiObj","BooleanFilterUI","dropInstance","drpuiObj","DateFilterUI","dpOpen","fltrSettings","inputElem","datePickerObj","FilterMenuRenderer","fltrObj","isDialogOpen","isMenuCheck","colTypes","flMuiObj","menuFilterBase","clearBtnClick","filterBtnClick","renderDlgContent","mainDiv","dlgDiv","currentDialogCreatedColumn","renderFilterUI","writeMethod","renderFlValueUI","menuOperator","valueDiv","instanceofFilterUI","dlgContentEle","flValue","targ","flOptrValue","fltrValue","eControl","renderCheckBoxMenu","CheckBoxFilter","isresetFocus","checkBoxBase","actionPrevent","ATTRIBUTES","RadioButton","RadioButton_1","radioGrp","getRadioGroup","angularValue","radioWrap","getSelectedValue","updateHtmlAttribute","formControlName","textLabel","rippleLabel","addScrolling","scrollType","containerOffset","contentOffset","parentElem","createScrollbar","scrollObj","skipEle","ENTER","ESCAPE","FOCUSED","HEADER","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","TAB","CARET","ITEM","HIDE","ICONS","MenuItem","MenuAnimationSettings","MenuBase","navIdx","isTapHold","tempItem","showSubMenuOn","isMenu","ejInst","refEle","enableScrolling","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","removeChildElement","createItems","setBlankIconStyle","targetElems","menuHeaderClickHandler","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","delegateClickHandler","downarrow","uparrow","leftarrow","rightarrow","keyBoardHandler","closeMenu","actionName","actionNeeded","removeLIStateByClass","upDownKeyHandler","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","defaultIdx","fliIdx","fli","getLIByClass","getIdx","cli","navIdxLen","popups_1","keyType","aEle","sli","isCMenu","canOpen","ulIndex","isIterated","isMenuVisible","item_1","wrapper_1","popups","isClose","ul_1","liElem_1","getLI","observedCloseArgs","trgtliId","closedLi","trgtLi","popupId","unWireKeyboardEvent","toggleAnimation","showSubMenu","updateReactTemplate","trgtpopUp","submenus","afterCloseMenu","isMenusClosed","sli_1","cliIdx","item_2","removeStateWrapper","getMenuItemModel","getFields","lItem","elemId","uList","hdata","hli","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","targetEvent","copyObject","liStyle","liIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","triggerOpen","tempTitle","spanTitle","spanIcon","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","menuType","observedOpenArgs","checkScrollOffset","collide","offWidth","blankIconList","iconLi","cssProp","iconCssProps","iconSize","offsetEle","px","toggleVisiblity","newTop","xCollision","hasField","liTrgt","hdrWrapper","isDifferentElem","isClosed","cliWrapper","isInstLI","cliWrapperId","setLISelected","culIdx","classname","isUniqueId","isText","newItem","skipHdr","updateItemsByNavIdx","updateItem","ul_2","ul_3","getChangedItemIndex","insertAfter","ul1","popStr","uls","targetSelctor","pUlHeight","pElement","nIndex","isCallBack","skipItem","showItems","showHideItems","hideItems","ishide","validUl","iitems","insertItems","ContextMenu","ExcelFilterBase","childRefs","focusedMenuItem","getCMenuDS","dateonly","unwireExEvents","menuObj","destroyCMenu","removeDialog","createMenu","isCheckIcon","eleOptions","hdrele","colIsSort","isAsc","isDesc","ascName","descName","createMenuElem","ensureTextFilter","wireExEvents","clickExHandler","keyUp","focusNextOrPrevElement","focusClassName","focusClass","excelSetFocus","isCMenuOpen","contextKeyDownHandler","cmenu","submenu","selectedMenu","menuOptions","selectHandler","beforeClose","preventClose","contextRect","getContextBounds","getCMenuYPosition","isFilterBack","contextWidth","targetBorder","filterLength","renderDialogue","overlayClick","dropDownList","templateField_1","createdDialog","rowResponsiveDlg","removeObjects","renderCustomFilter","dlgFields","fieldSet","checkBoxValue","colValue","fOperator","sValue","sOperator","firstOperator","secondOperator","fieldElement","xlfloptr","menuText","dropDownValueChange","removeHandlersFromComponent","getSelectedText","renderRadioButton","radioDiv","frstpredicate","secndpredicate","renderMatchCase","andRadio","orRadio","isFilteredCol","fltrPredicates","columnObj","getExcelFilterData","valueInput","renderAutoComplete","renderNumericTextBox","renderDate","renderDateTime","predIndex","matchCaseDiv","matchCaseInput","completeAction","distinctStringValues","numericTextBox","colObj","acActionComplete","columnvalue","ExcelFilter","excelFilterBase","contentRefresh","filterByMethod","cellText","nextFlMenuOpen","fltrDlgDetails","skipNumberInput","skipStringInput","getLocalizedCustomOperators","fltrElem","rowdrag","updateFilterMsg","dropdownlist","filterBarElement","getFilteredColsIndexByField","arrayVal","currentFilterObject","isRemove","currentFilteringColumn","keyUpHandlerImmediate","refreshFilterValue","refreshFilterValueFn","docClickHandler","refreshClearIcon","columnMenuFilter","filterIconClickHandler","targetText","getOperatorName","checkForSkipInput","filterStatusMsg","applyColumnFormat","predObj","fColumn","checkAlreadyColFiltered","getFlvalue","setFormatForFlColumn","skipUid","actualData","checkboxFilterObject","filterIconElement","updateFilterIcon","refreshFilterSettings","updateFilter","getFilterBarElement","fltrIconElement","colUid","filteredcols","fltrElement","filterDialogOpen","filterHandler","localizedStrings","fCell","filteredColsUid","currentPred","currentFilterColumn","closeHeaderEle","dropDownListInput","processFilter","openMenuByField","updateCrossIcon","getFormatFlValue","showFilterBarStatus","startTimer","onTimerTick","immediateModeDelay","templateRead","validateFilterValue","skipInput","getOperator","singleOp","multipleOp","numOptr","stringOperator","numberOperator","dateOperator","datetimeOperator","dateonlyOperator","booleanOperator","filterOperatorElement","datepickerEle","hasDialog","hasDialogClosed","refreshFilterIcon","addFilteredClass","renderCheckboxOnFilterMenu","isModelChanged","aria","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","refreshSortIcons","initiateSort","showPopUp","enableSortMultiTouch","allowUnsort","updateAriaAttr","NumericContainer","renderNumericContainer","refreshNumericLinks","updateTotalPages","updateLinksHtml","refreshAriaAttrLabel","updateStyles","auxiliaryClickHandler","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","previousPageNo","currentPageSet","isLastSet","isPagerResized","focusedorTarget","prevFocused","nextFocused","firstFocused","lastFocused","numItemFocused","npFocused","ppFocused","isPageAvailable","customText","ppIndex","avgNumItems","NPIndex","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","currentPageIndex","firstPage","firstPageDisabled","prevPageDisabled","lastPage","lastPageDisabled","nextPage","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","regx","Pager","hasParent","pageRefresh","firstPagerFocus","enableExternalMessage","checkpagesizes","defaultConstants","currentPageInfo","totalItemsInfo","totalItemInfo","firstPageTooltip","lastPageTooltip","nextPageTooltip","previousPageTooltip","nextPagerTooltip","previousPagerTooltip","pagerDropDown","pagerAllDropDown","CurrentPageInfo","TotalItemsInfo","FirstPageTooltip","LastPageTooltip","NextPageTooltip","PreviousPageTooltip","NextPagerTooltip","PreviousPagerTooltip","PagerDropDown","PagerAllDropDown","Information","ExternalMsg","Pages","containerModule","pagerMessageModule","initLocalization","isReactTemplate","renderFirstPrevDivForDevice","enablePagerMessage","renderNextLastDivForDevice","addAriaLabel","externalMessageModule","checkGoToPage","currentPageChanged","setDropDownValue","resizePager","onFocusIn","getFocusedTabindexElement","dropDownPage","setTabIndexForFocusLastElement","setPagerFocusForActiveElement","currentActivePage","changeFocusByShiftTab","changeFocusByTab","navigateToPageByEnterOrSpace","navigateToPageByKey","focusedTabIndexElement","tabindexElements","currentItemPagerFocus","decrementNumber","getClass","classElement","getElementByClass","checkFocusInAdaptiveMode","changeFocusInAdaptiveMode","actionClass","pagingItem","removeTabindexLastElements","tabIndexElements","dropDownPageHolder","currentClass","previousElements","targetChildrens","pagerElements","tabindexElement","addFocusClass","removeFocusClass","setPageSize","newPageNo","oldPageNo","enableQueryString","updateQueryString","getPagerTemplate","updatedUrl","getUpdatedURL","calculateActualWidth","actualWidth","isStyleApplied","pagerWidth","hiddenNumItems","hideFrom","bufferWidth","detailItems","totDetailWidth_1","averageDetailWidth","numericItemWidth","numToHide","hideIndex","pagerDetailItemsWidth","detailtoHide","hiddenDetailItems","numToShow","lesserIndexItems","greaterIndexItems","showItem","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","dropDownListObject","isPageSizeAll","beforeValueChange","pageSizeValue","isbeforeAll","ExternalMessage","externalMessage","isInitialRender","pagerDestroy","gridExtend","dropDownChanged","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainer","numericContainerDiv","previousPage","appendToElement","inboundChange","sortRequired","isAppliedGroup","isAppliedUnGroup","isAppliedCaptionRowBorder","reorderingColumns","animateDropper","draggableType","preventDrop","rearrangeGroup","dragField","dropField","addColToGroupDrop","addLabel","removeColFromGroupDrop","groupGenerator","dragLabel","dropArea","onGroupAggregates","updateExpand","grpRow","expandCollapseRows","applySortFromTarget","unGroupFromTarget","focusableGroupedHeaderItems","auxilaryclickHandler","addOrRemoveFocus","toogleGroupFromHeader","showToggleButton","gHeader","rowNodes","updateVirtualRows","captionExpand","captionCollapse","rowObjs","rowsState","cacheStartIdx","lastCaptionRowBorder","isCollapse","borderCells","nRows","actualRows","updatecloneRow","renderGroupDropArea","initDragAndDrop","refreshToggleBtn","groupElem","updateGroupDropArea","initializeGHeaderDrop","initializeGHeaderDrag","groupAddSortingQuery","animator","childDiv","showUngroupButton","getGHeaderCell","updateGroupedColumn","updateButtonVisibility","updateLazyLoadGroupAggregates","iterateGroupAggregates","updateSummaryRows","remoteResult","groupCaptionTemplates","groupFooterTemplates","groupedCols","groupLazyLoadRenderer","currentPageGroupCache","groupField","groupCaptionRowObject","getGroupCaptionRowObject","prevGroupField","prevGroupKey_1","updateLazyLoadGroupAggregatesRow","currentLevelCaptionRowObjects","filterCols","generateExpandPredicates","getPredicates","destroyRefreshGroupCaptionFooterTemplate","updatedGroupCaptionData","updateLazyLoadGroupAggregatesCell","groupFooterRowObject","captionFooterRowObject","captionFooterTemplates","prevCaptionFooterData","updatedGroupCaptionDataAggregates","groupCaptionIndex","parentCaptionRowObject","aggregateRows","aggr","fromRowObj","toRowObj","dropRow","dropArgs","groupReorderHandler","dragRowObject","dragRowObjectData","dropRowObjectData","groupAggregateTemplate","dropParentRowObject","dragParentRowObject","dropRootParentRowObjects","dragRootParentRowObjects","groupColumns","updatedCurrentViewData","dragRowObjects","dropRowObjects","updatedDragCurrentViewData","updatedDropCurrentViewData","updatedRowObject","dragRootParentAggregateRowObject","dropRootParentAggregateRowObject","getGroupParentFooterAggregateRowObject","updatedRowObjChange","groupReorderRefreshHandler","rootParentRowObjects","updatedRowObjects","isDraggedRow","virtualCacheRowObjects","keyPresent","parentRowObject","isParentKeyPresent","nextParentObject","groupedData","vIndex","evaluateGroupAggregateValueChange","vcIndex","parentRowObjects","parentFooterAggregates","gettingVirtualData","parentRowObjs","curViewRec","pK","draggedData_1","initData","dragParentRowObjects","dropParentRowObjects","dropRootKey","dragRootKey","isInfiniteGroup","deletedCols","changeds","pKeyVal","cItem","eData","aggrds","lastGroupKey","predicate_1","updatedGroupData","closestParent","FooterRenderer","gridModule","modelGenerator","tFoot","renderSummaryContent","cStart","cEnd","summaries","rowrenderer","srow","refreshCol","mheaderCol","onWidthChange","getColFromIndex","updateFooterTableWidth","getIndexByKey","isModified","gridData","idVal","agrVal","SummaryCellRenderer","refreshWithAggregate","gColumn","cellNode","curCell","initiateRender","cellFac","footerRenderer","prepareSummaryInfo","summaryIterator","cModel","ColumnChooser","changedColumns","unchangedColumns","isDlgOpen","initialOpenDlg","stateChangeColumns","isInitialOpen","isCustomizeOpenCC","searchOperator","prevShowedCols","hideDialogFunction","hideDialog","rtlUpdate","enableAfterRenderEle","onResetColumns","clearActions","refreshCheckboxState","columnChooserSearch","removeCancelIcon","refreshCheckboxButton","targetdlg","hideOpenedDialog","addcancelIcon","beforeOpenColumnChooserEvent","mOpenDlg","renderChooserList","updateIntermediateBtn","customDialogOpen","customDialogClose","columnChooserManualSearch","confirmDlgBtnClick","responsiveCnt","searchDiv","ccsearchele","ccsearchicon","conDiv","searchBoxObj","innerDivContent","refreshCheckboxList","searchBoxDiv","changedColumnState","uncheckedLength","columnStateChange","currentCol","stateColumns","checkstatecolumn","coluid","searchVal","fltrCol","clearSearch","buttonEle","selectedCbox","columnChooserSettings","nMatchele","checkBoxClickHandler","checkstate","updateSelectAll","cBoxInput","visibleCols","columnUID","srchShowCols","searchData","itemsLen","hideCols","gdCol","cclist","renderCheckbox","gridObject","currentCheckBoxColls","itemLen","uncheck","cbox","cboxLabel","inputcbox","hideColState","showColState","cccheckboxlist","openCC","dlgEle","dlgLen","resizeClassList","Resize","tapped","isDblClk","resizeProcess","isCancelAutoFit","findColumn","newarray","getCellElementsByColumnIndex","resizeColumn","footerTable","footerTextClone","contentDivTag","footerDivTag","headerTextClone","contentTextClone","columnIndexByField","indentWidthClone","detailsElement","contentText","wHeader","wFooter","wContent","columnbyindex","colMaxWidth","calcTableWidth","refreshResizefrzCols","adaptiveClass","offsetWidthValue","refreshHeight","setHandlerHeight","getResizeHandlers","touchResizeStart","callAutoFit","getTargetColumn","cancelResizeAction","refreshColumnWidth","refreshStackedColumnWidth","parentElementWidth","appendHelper","getPointX","minMove","removeHelper","updateCursor","updateResizeEleHeight","getColData","mousemove","refreshResizeFixedCols","colSpanwidth","calculateColspanWidth","isAutoFitCol","frzHdrRefresh","columnsRight","refreshGroupCaptionRow","capRow","getParticularCol","setHelperHeight","finalColumns","getSubColumns","calulateColumnsWidth","finalColumns_1","updateHelper","subColumns","cTable","isFrozenColResized","doubleTapEvent","columns_3","getStackedWidth","headerRows_1","calcPos","timeoutHandler","defaultItems","setLocaleKey","disableItems","hiddenItems","GROUP","UNGROUP","ASCENDING","DESCENDING","FILTER","WRAP","COL_POP","CHOOSER","gridID","getColumnMenuHandlers","columnMenuHandlerDown","unwireFilterEvents","columnMenuHandlerClick","getHeaderCell","openColumnMenu","openColumnMenuByField","headerElemCliRect","enableAfterRenderMenu","isFilterItemAdded","filterPosition","columnMenuItemClick","columnMenuBeforeOpen","columnMenuOnOpen","columnMenuOnClose","beforeItemRender","beforeMenuItemRender","columnMenuBeforeClose","wireFilterEvents","appendFilter","isChooserItem","field_1","getKeyFromId","colChooser","targetColumn","dItem","getDefaultItems","ensureDisabledStatus","getFilter","isFilterPopupOpen","defultItems_1","getDefault","getDefaultItem","createChooserItems","getLocaleText","generateID","filterPopup","getFilterPop","gridPos","liPos","PdfWriter","streamWriter","pdfDocument","overload","tempOverload","defaultToString","ObjectStatus","Dictionary","toStringFunction","nElements","toStr","previousElement","keysArray","namesOfKeys","index1","pair1","valuesArray","namesOfValues","pair2","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","isNew","objInfo","ObjectInfo","Registered","lookFor","getReference","wasNew","trySetReference","found","setReference","pdfObject","objectCollectionIndex","pdfReference","Encoding","includeBom","emitBOM","encodingType","initBOM","getByteCount","chars","validateNullOrUndefined","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","bytes","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint","uint16","byteUni","byte16","InternalEnum","getMimeType","isMicrosoftBrowser","msSaveBlob","downloadLink","saveInternal","hasDownloadAttribute","dataUrl_1","reader_1","StreamWriter","bufferBlob","bufferText","setBomByte","arrayUnicode","uint8","arrayUtf8","utf8","bufferArray","writeLine","PdfDocumentBase","isStreamCopied","PdfDocument","pdfCrossTable","currentSavingObject","pdfCatalog","viewerPreferences","setMainObjectCollection","setCrossTable","setCatalog","catalog","encoding_1","SW_1","blobData","docSave","PdfName","stringStartMark","internalValue","isSaving6","position6","normalizeValue","status6","index6","writer","crossTable","newName","delimiters","replacements","Operators","forTest","endObj","slash","endStream","xref","trailer","startxref","eof","beginText","endText","appendLineSegment","fillEvenOdd","fillStroke","fillStrokeEvenOdd","appendbeziercurve","appendRectangle","saveState","restoreState","paintXObject","modifyCtm","modifyTM","setLineWidth","setLineCapStyle","setLineJoinStyle","setDashPattern","setFlatnessTolerance","closeStrokePath","closeFillStrokePath","setCharacterSpace","setWordSpace","setHorizontalScaling","setTextLeading","setFont","setRenderingMode","setTextRise","setTextScaling","setCoords","goToNextLine","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPathEvenOdd","endPath","setGraphicsState","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","DictionaryProperties","kids","mediaBox","decodeParms","type1","baseFont","subtype","procset","colorSpace","extGState","xObject","bitsPerComponent","dctdecode","blackIs1","predictor","deviceRgb","annot","annots","CA","BM","flatedecode","bBox","cIDFontType2","cIDToGIDMap","dw","fontDescriptor","cIDSystemInfo","fontBBox","missingWidth","stemV","italicAngle","capHeight","ascent","descent","avgWidth","fontFile2","xHeight","stemH","supplement","type0","identityH","toUnicode","descendantFonts","shading","antiAlias","function","shadingType","coords","functionType","bitsPerSample","paintType","tilingType","xStep","yStep","centerWindow","displayTitle","fitWindow","hideMenuBar","hideToolBar","hideWindowUI","pageMode","pageLayout","duplex","printScaling","PdfDictionary","position7","primitiveItems","archive","isResource","dictionaryProperties","freezeChanges","status7","isSaving7","index7","getArchive","setArchive","setEncrypt","modify","getEncrypt","freezer","bChanged","onBeginSave","beginSave","onFontDictionaryBeginSave","fontDictionaryBeginSave","onDescendantFontBeginSave","descendantFontBeginSave","onTemplateBeginSave","pageBeginDrawTemplate","pageBeginSave","onBeginAnnotationSave","annotationBeginSave","onSectionBeginSave","saveEvent","sectionBeginSave","bRaiseEvent","saveItems","SaveSectionCollectionEventHandler","SaveDescendantFontEventHandler","SaveFontDictionaryEventHandler","SaveAnnotationEventHandler","SaveSectionEventHandler","SaveTemplateEventHandler","PdfNumber","position5","status5","isSaving5","index5","floatToString","returnString","PdfArray","position9","clonedObject9","isFont","internalElements","tempNumberArray","pdfNumber","status9","isSaving9","index9","markedChange","fromRectangle","tempElements","markChanged","removeAt","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","arrLiterals","dataWindow","hashHead","hashPrevious","writeZLibHeader","compressedString","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","fillWindow","canFlush","compressSlow","lookAheadCompleted","slideWindow","prevMatch","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","updateHash","chainLen","niceLen","scan","bestEnd","bestLength","stringEnd","scanEnd1","scanEnd","literal","codeFrequencies","dist","huffmanLengthCode","huffmanDistanceCode","stored","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","huffCodeLengthOrders","getEncodedLength","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","buildCodes","treeLength","writeTree","literalLen","writeCodeToStream","pendingBufferFlushBits","bitReverse","elementCount","minCodes","codeMinCount","codeFrequency","lengthCount","codeCount","codeLength","lengths","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","freq","pPos","nodesCount","iIndex","constructHuffmanTree","buildLength","lastVal","minDepth","numNodes","numLeafs","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","checksum","checksum_uint","checkSumBitOffset","checksumIterationCount","checksumBase","PdfStream","dicPrefix","dicSuffix","clonedObject2","bCompress","dataStream2","bCompress2","clearStream","writeBytes","onCmapBeginSave","cmapBeginSave","onFontProgramBeginSave","fontProgramBeginSave","compressContent","byteArray","sw","getCompressedString","addFilter","filterName","PdfReferenceHolder","bytesToString","SaveCmapEventHandler","SaveFontProgramEventHandler","SourceType","ForceEncoding","PdfString","bHex","position1","clonedObject1","bDecrypted","isParentDecrypted","isPacked","isFormField","isColorSpace","isHexString","status1","isSaving1","bConverted","bForceEncoding","bytesToHex","Ascii","pdfEncode","stringMark","escapeSymbols","CrossTable","newString","toUnicodeArray","bAddPrefix","byteToString","hexStringMark","hexFormatPattern","PdfReference","objNumber","genNumber","index3","position3","status3","isSaving3","obj2","index4","position4","objectIndex","status4","isSaving4","primitiveObject","PdfPageMode","PdfPageLayout","DuplexMode","PageScalingMode","PdfBoolean","currentPosition","objectStatus","saving","boolToStr","PdfViewerPreferences","_dictionaryProperties","_centerWindow","_fitWindow","_displayTitle","_splitWindow","_hideMenuBar","_hideToolBar","_hideWindowUI","_pageMode","UseNone","_pageLayout","SinglePage","_duplex","_catalog","_mapPageMode","_mapDuplexMode","_mapPageLayout","_pageScaling","AppDefault","Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","UseOutlines","UseThumbs","FullScreen","UseOC","UseAttachments","OneColumn","TwoColumnLeft","TwoColumnRight","TwoPageLeft","TwoPageRight","PdfPageOrientation","PdfPageRotateAngle","PdfNumberStyle","PdfDockStyle","PdfAlignmentStyle","TemplateType","PdfCatalog","tempDictionaryProperties","_viewerPreferences","PdfCrossTable","maxGenNumIndex","objectCount","merging","internalTrailer","pdfObjects","saveHead","mappedReferences","markTrailerReferences","saveObjects","saveCount","xrefPos","registerObject","saveSections","saveTrailer","saveTheEndess","objectCollection","prevXRef","objectNum","prepareSubsection","saveSubsection","Free","generation","isFree","addOffsetLength","addGenNumberLength","generateFileVersion","bNew","getSubReference","objnumber","nextObjNumber","tempIndex","tempkey","tempvalue","bForceNew","saveIndirectObject","currentSavingObj","doSaveObject","free","RegisteredObject","dereference","offsetNumber","tempReference","Normal","PointF","SizeF","RectangleF","pointf","sizef","PdfPageSize","legal","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","archE","archD","archC","archB","archA","flsa","halfLetter","letter11x17","ledger","PdfHorizontalAlignment","PdfVerticalAlignment","PdfTextAlignment","TextRenderingMode","PdfLineJoin","PdfLineCap","PdfDashStyle","PdfFillMode","PdfColorSpace","PdfBlendMode","PdfGraphicsUnit","PdfGridImagePosition","PdfTextDirection","PdfFontStyle","PdfFontFamily","PdfFontType","PdfWordWrapType","PdfSubSuperScript","FontEncoding","TtfCmapFormat","TtfCmapEncoding","TtfPlatformID","TtfMicrosoftEncodingID","TtfMacintoshEncodingID","FontDescriptorFlags","TtfCompositeGlyphFlags","PdfMargins","pdfMargin","setMargins","leftMargin","topMargin","rightMargin","bottomMargin","margin1","margin2","margin3","margin4","PdfPageSettings","rotateAngle","RotateAngle0","Portrait","pageOrigin","isRotation","setSize","updateSize","Landscape","getActualSize","LineType","PdfStreamWriter","dictionaryName","writeOperator","executeObject","useEvenOddRule","fillStrokePath","closeFillPath","textScaling","strokePath","restoreGraphicsState","saveGraphicsState","startNextLine","writePoint","showText","checkTextParam","setLeading","setTextRenderingMode","renderingMode","setCharacterSpacing","charSpacing","setWordSpacing","showNextLineText","setColorSpace","temparg1","temparg2","opcode","updateY","writeComment","setColorAndSpace","forStroking","setLineDashPattern","patternOffset","setLineDashPatternHelper","tempPattern","miterLimit","setLineCap","lineCapStyle","setLineJoin","lineJoinStyle","appendBezierSegment","setColourWithPattern","colours","patternName","PdfColor","color3","color4","assignRGB","filled","redColor","greenColor","blueColor","grayColor","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","Rgb","rgbToString","GrayScale","grayScaleToString","Cmyk","cmykToString","ifStroking","colour","grayStringsSroke","grayStringsFill","rgbStrings","PdfBrush","PdfSolidBrush","pdfColor","monitorChanges","getResources","currentColorSpace","resetChanges","PdfPen","dashOffsetValue","penDashPattern","pdfDashStyle","Solid","pdfLineCap","pdfLineJoin","penWidth","internalMiterLimit","setBrush","Custom","Dash","Dot","DashDot","DashDotDot","sBrush","pdfBrush","currentPen","dashControl","pen","getPattern","dashOffset","dashPattern","PdfStringFormat","wordWrapType","Word","internalLineLimit","textAlignment","verticalAlignment","Top","isRightToLeft","internalCharacterSpacing","internalWordSpacing","pdfSubSuperScript","internalParagraphIndent","firstLineIndent","trailingSpaces","isNoClip","initialLineIndent","StringTokenizer","getCharsCount","numSymbols","readLine","text2","peekLine","readWord","peekWord","peek","readToEnd","whiteSpacePattern","PdfStringLayouter","isOverloadWithPosition","clientSize","doLayout","rectSize","PdfStringLayoutResult","lineResult","lineIndent","getLineIndent","layoutLine","numSymbolsInserted","returnedValue","copyToResult","numInserted","finalizeResult","firstLine","paragraphIndent","getLineHeight","lineSpacing","getLineWidth","layoutLineHeight","lineType","FirstParagraphLine","addToLineResult","NewLineBreak","curLine","curIndent","curLineWidth","getWrapType","WordOnly","textRemainder","Character","LayoutBreak","LastParagraphLine","layoutLines","breakType","LineInfo","actualSize","allowPartialLines","lineLimit","expHeight","trimLine","size1","PdfLayoutType","PdfLayoutBreakType","PathPointType","PdfFont","Regular","metrics","Bold","Italic","Strikeout","Underline","fontMetrics","pdfFontInternals","measureString","layoutArea","temparg3","equalsTo","equalsToFont","getInternals","setInternals","internals","applyFormatSettings","realWidth","characterSpacing","charSizeMultiplier","syncObject","PdfTransformationMatrix","radDegFactor","transformationMatrix","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","metrixElements","ProcedureSets","pdf","imageB","imageC","imageI","TemporaryDictionary","mKeys","mValues","PdfTransparency","PdfAutomaticFieldInfoCollection","automaticFieldsInformation","fieldInfo","automaticFields","PdfGraphicsElement","drawHelper","bNeedSave","gState","translateTransform","drawInternal","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","scalingX","scalingY","getFont","stringFormat","location_1","PdfAutomaticFieldInfo","getBrush","defaultFont","getPageFromGraphics","pageNumberFieldLocation","pageNumberField","ByteArray","mPosition","readByte","writeFromBase64String","chr1","chr2","chr3","enc2","enc3","keyStr","resultIndex","totalLength","readNextTwoBytes","TtfTableInfo","TtfNameTable","TtfNameRecord","TtfHeadTable","TtfMetrics","macStyle","TtfHorizontalHeaderTable","TtfOS2Table","TtfPostTable","TtfLongHorMetric","TtfCmapSubTable","TtfCmapTable","TtfGlyphInfo","glyph","TtfLocaTable","TtfAppleCmapSubTable","TtfMicrosoftCmapSubTable","TtfTrimmedCmapSubTable","TtfGlyphHeader","BigEndianWriter","int32Size","int16Size","int64Size","bufferLength","internalPosition","writeShort","writeInt","i2","i3","writeUInt","buff","writeString","TtfReader","fontData","isTtcFont","isMacTtf","metricsName","isMacTTF","missedGlyphs","tableNames","entrySelectors","macintoshDictionary","microsoftDictionary","internalMacintoshGlyphs","internalMicrosoftGlyphs","readFontDictionary","nameTable","readNameTable","headTable","readHeadTable","initializeFontName","checkPreambula","numTables","readInt16","tableDirectory","tableKey","readInt32","lowestPosition","fixOffsets","minOffset","tableKeys","tableInfo","formatSelector","readUInt16","recordsCount","nameRecords","platformID","encodingID","languageID","nameID","unicode","readFixed","fontRevision","checkSumAdjustment","readUInt32","magicNumber","unitsPerEm","readInt64","xMin","yMin","xMax","yMax","lowestReadableSize","fontDirectionHint","indexToLocalFormat","glyphDataFormat","readHorizontalHeaderTable","ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","metricDataFormat","numberOfHMetrics","readOS2Table","xAvgCharWidth","usWeightClass","usWidthClass","fsType","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","sFamilyClass","panose","readBytes","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","vendorIdentifier","fsSelection","usFirstCharIndex","usLastCharIndex","sTypoAscender","sTypoDescender","sTypoLineGap","usWinAscent","usWinDescent","ulCodePageRange1","ulCodePageRange2","sxHeight","sCapHeight","usDefaultChar","usBreakChar","usMaxContext","readPostTable","formatType","underlinePosition","underlineThickness","isFixedPitch","minType42","maxType42","minType1","maxType1","readWidthTable","glyphCount","advanceWidth","lsb","glyphWidth","readCmapTable","subTables","subTable","readCmapSubTable","getCmapEncoding","Macintosh","Microsoft","Unknown","Apple","readAppleCmapTable","readMicrosoftCmapTable","Trimmed","readTrimmedCmapTable","maxMacIndex","glyphInfo","macintosh","addGlyph","Unicode","microsoft","segCountX2","searchRange","entrySelector","rangeShift","segCount","endCount","readUshortArray","reservedPad","startCount","idDelta","idRangeOffset","glyphID","codeOffset","firstCode","entryCount","postScriptName","glyphCode","Undefined","Roman","microsoftGlyphs","macintoshGlyphs","initializeMetrics","horizontalHeadTable","os2Table","postTable","cmapTables","bSymbol","winAscent","macAscent","winDescent","macDescent","fontBox","widthTable","updateWidth","subScriptSizeFactor","superscriptSizeFactor","getGlyph","byteToProcess","getDefaultGlyph","readLocaTable","bShort","updateGlyphChars","glyphChars","locaTable","glyphCharKeys","nextKey","processCompositeGlyph","glyphOffset","glyphHeader","numberOfContours","skipBytes","glyphIndex","MoreComponents","Arg1And2AreWords","WeHaveScale","WeHaveAnXyScale","WeHaveTwoByTwo","generateGlyphTable","newLocaTable","newGlyphTable","activeGlyphs","glyphSize","glyphSizeAligned","nextGlyphOffset","nextGlyphIndex","oldGlyphOffset","oldNextGlyphOffset","glyphTableSize","updateLocaTable","bLocaIsShort","newLocaTableOut","newLocaUpdated","newLocaSize","getFontProgram","locaTableSize","getFontProgramLength","fontProgramLength","writeCheckSums","writeGlyphs","usedTablesSize","nextTableSize","calculateCheckSum","byte1","byte2","byte3","byte4","setOffset","createInternals","bIsLocaShort","isFontPresent","getGlyphChars","charKeys","getAllGlyphs","allGlyphInfo","readFontProgram","convertString","getCharWidth","isUnicode","written","PdfFontMetrics","getAscent","getDescent","getLineGap","clearTypeFonts","clearTypeFontCollection","subSuperScript","SubScript","SuperScript","WidthTable","internalWidthTable","StandardWidthTable","UnicodeTrueTypeFont","nameString","isCompress","isEmbedFont","cmapPrefix","cmapEndCodespaceRange","cmapBeginRange","cmapEndRange","cmapSuffix","Initialize","ttfReader","internalBuffer","ttfMetrics","fontDictionary","fontProgram","cmap","descendantFont","subsetName","getFontName","createDescendantFont","createCmap","createFontDictionary","createFontProgram","formatName","createFontDescriptor","systemInfo","createSystemInfo","getDescriptorFlags","getBoundBox","descFonts","usedChars","getDescendantWidth","generateCmap","generateFontProgram","chLen","firstGlyphIndex","lastGlyphIndex","firstGlyphIndexWasSet","widthDetails","middlePart","toHexString","nextRange","FixedPitch","Symbolic","Nonsymbolic","isItalic","ForceBold","isCaseChange","setSymbols","ArabicShapeRenderer","arabicCharTable","alef","alefHamza","alefHamzaBelow","alefMadda","lam","hamza","zeroWidthJoiner","hamzaAbove","hamzaBelow","wawHamza","yehHamza","waw","alefMaksura","yeh","farsiYeh","shadda","madda","lwa","lwawh","lwawhb","lwawm","bwhb","fathatan","superScriptalef","vowel","arabicMapTable","getCharacterShape","doShape","ArabicShape","present","ligature","shapeCount","getShapeCount","Shapes","Ligature","shapeValue","shapeType","shapeVowel","shapeLigature","shapeShapes","Bidi","indexLevels","mirroringShapeCharacters","doMirrorShaping","getLogicalToVisualString","rtlCharacters","RtlCharacters","getVisualOrder","setDefaultIndexLevel","doOrder","resultBuilder","sIndex","eIndex","odd","even","pstart","pend","reArrange","textOrder","rtlCharacterTypes","LRE","LRO","AL","RLE","RLO","PDF","EN","ES","ET","AN","CS","NSM","WS","ON","charTypes","getCharacterCode","doVisualOrder","levels","characterCodes","setDefaultLevels","setLevels","updateLevels","getEmbeddedCharactersLength","preType","checkNSM","checkEmbeddedCharacters","startType","endType","charType","checkEuropeanDigits","checkArabicCharacters","checkEuropeanNumberSeparator","checkEuropeanNumberTerminator","getLength","checkOtherNeutrals","checkOtherCharacters","pst","checkCommanCharacters","validSet","byte","RtlRenderer","wordSpace","customLayout","splitLayout","customSplitLayout","getGlyphIndex","glyphs","fontInternal","layouted","addChars","ImageFormat","PdfGradientBrush","mbackground","mbStroking","mfunction","mpatternDictionary","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","getName","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","PdfTemplate","writeTransformation","tempSize","templateSize","pdfGraphics","gr","GetResourceEventHandler","PdfGraphics","initializeCoordinates","PdfResources","addType","addSubType","PdfBorderOverlapStyle","ImageDecoder","sof1Marker","sof2Marker","sof3Marker","sof5Marker","sof6Marker","sof7Marker","sof9Marker","sof10Marker","sof11Marker","sof13Marker","sof14Marker","sof15Marker","mFormat","mbitsPerComponent","mStream","mHeight","mWidth","mImageData","checkIfJpeg","Jpeg","parseJpegImage","imgData","isLengthExceed","readExceededJPGImage","mJpegHeader","getImageDictionary","imageData","imageStream","decodedString","imageDataAsNumberArray","compress","getColorSpace","getDecodeParams","decodeParams","isContinueReading","getMarker","skipStream","noOfBytes","markerLength","mPngHeader","GIF_HEADER","BMP_HEADER","PdfUnitConverter","dpi","updateProportionsHelper","convertUnits","convertFromPixels","convertToPixels","proportions","pixelPerInch","horizontalResolution","verticalResolution","PdfImage","imagePhysicalDimension","getPointSize","dpiX","dpiY","ucX","ucY","ptWidth","Pixel","ptHeight","PdfBitmap","imageStatus","loadImage","initializeAsync","baseDictionary","getNames","sName","generateName","PdfTilingBrush","pdfNames","requireProcedureSet","procedureSetName","procSets","removeFont","getNewGuidString","xobjects","savable","transDic","parentXObjects","hasSameImageStream","oldReference","mStroking","mLocation","mDictionaryProperties","PdfPage","mPage","brushStream","mResources","setBox","setObligatoryFields","mTransformationMatrix","tempBrushStream","tempResource","mBox","tileTransform","mGraphics","name1","previousTextRenderingMode","Fill","previousCharacterSpacing","previousWordSpacing","previousTextScaling","procedureSets","isNormalRender","isUseFontSize","isEmfTextScaled","isEmf","isEmfPlus","isBaselineFormat","emfScalingFactor","colorSpaceChanged","isPointOverload","currentColorSpaces","isImageOptimized","graphicsState","istransparencySet","internalAutomaticFields","startCutIndex","canvasSize","pdfStreamWriter","pdfStringLayoutResult","internalMediaBoxUpperRightBound","pageLayer","bStateSaved","currentBrush","currentFont","bCSInitialized","currentStringFormat","drawPdfTemplate","bNeedScale","getTranslateTransform","getScaleTransform","newLocation","drawString","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","stateControl","layer","drawPathHelper","_pathPoints","_pathTypes","startFigure","_addArc","CloseSubpath","_drawPath","Alternate","sweepAngle","_getBezierArcPoints","_addArcPoints","Bezier3","_addPoint","Start","_getLastPoint","lastPoint","e1","fragAngle","numFragments","xcen","ycen","halfAng","kappa","pointList","theta0","theta1","cos0","cos1","sin0","sin1","Winding","isPen","isBrush","isEvenOdd","physicalDimension","name_2","setResources","getLineBounds","lineIndex","layoutRectangle","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","shouldJustify","layoutedRectangle","Center","lineAlignment","Middle","Bottom","setLayer","pageSave","performDraw","applyStringSettings","horizontalScalingFactor","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","setClip","tm","getTextRenderingMode","boundsHeight","vAlignShift","ttfFont","lineInfo","hAlignShift","drawUnicodeLine","drawAsciiLine","justifyLine","useWordSpace","Justify","rtlRender","blocks","rightAlign","drawUnicodeBlocks","breakUnicodeLine","convertToUnicode","getUnicodeString","xShift","spaceWidth","tokenWidth","converted","boundsWidth","hasWordSpacing","whitespacesCount","justifyStyle","goodWidth","hasSpaces","goodLineBreakStyle","strikeout","linePen","createUnderlineStikeoutPen","vShift","underlineYOffset","strikeoutYOffset","FillStroke","Stroke","ClipFlag","layoutBounds","firstParagraphLine","lastDocumentCS","lastGraphicsCS","initCurrentColorSpace","penControl","brushControl","fontControl","colorspace","lgb","curSubSuper","prevSubSuper","setTransparency","trasparencies","transp","TransparencyData","name_3","clipTranslateMargins","scaleTransform","rotateTransform","getRotateTransform","mediaBoxUpperRightBound","cropBox","PdfGraphicsState","textRenderingMode","doRestoreState","pathPoints","pathTypes","fillMode","buildUpPath","constructArcPath","typeValue","pathTypesValuesMask","getBezierPoints","checkFlags","startAng","getBezierArc","numX1","numY1","numX2","numY2","fragAngle1","thetaValue0","thetaValue1","transparencyObject","internalTextRenderingMode","internalTextScaling","pdfColorSpace","pdfPen","pdfFont","alphaPen","alphaBrush","blendMode","PdfPageLayer","streamClipPageTemplates","sublayer","contentLength","pdfPage","clipPageTemplates","layerid","layerName","initializeGraphics","PdfPageLayerCollection","oPage","clipRect","getActualBounds","PdfCollection","parentLayerCount","optionalContent","PdfPageBase","lPage","parseLayers","firstArgument","secondArgument","addLayer","insertLayer","loadedPage","saveStream","restoreStream","saveData","defLayerIndex","pageDictionary","pdfSection","defaultLayerIndex","layerCollection","PdfAnnotationCollection","alreadyExistsAnnotationError","missingAnnotationException","internalAnnotations","lists","annotation","doAdd","setPage","layoutResult","lastPosition","setColor","annotationCollection","defaultLayer","setSection","resetProgress","isProgressOn","getClientSize","drawPageTemplates","containsTemplates","backLayer","drawTemplates","frontLayer","PageAddedEventArgs","PdfSectionPageCollection","PdfDocumentTemplate","leftTemplate","checkElement","topTemplate","rightTemplate","bottomTemplate","evenLeft","evenTop","evenRight","evenBottom","oddLeft","oddTop","oddRight","oddBottom","getLeft","EvenLeft","OddLeft","getTop","EvenTop","OddTop","getRight","EvenRight","OddRight","getBottom","EvenBottom","OddBottom","pageCollectionIndex","PdfSectionTemplate","bottomValue","stampValue","PdfSection","pageAdded","pdfPages","initialSettings","sectionCollection","pagesReferences","pageTemplate","pagesCollection","pointToNativePdf","setPageSettings","PageSettingsState","foreground","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","page_1","checkPresence","pageAddedMethod","document_1","getLeftIndentWidth","getTopIndentHeight","getRightIndentWidth","getBottomIndentHeight","includeMargins","templateWidth","docTemplateWidth","templateHeight","docTemplateHeight","temproaryPages","applyPageSettings","parentSettings","PdfSectionCollection","rotateFactor","sectionHeaders","drawTemplatesHelper","pageRotate","sectionCount","pdfSectionCollection","section_1","checkSection","countPages","PdfDocumentPageCollection","pdfPageCollectionIndex","getLastSection","getPageByIndex","getPage","sectionStartIndex","numPages","PdfCacheCollection","referenceObjects","pdfFontCollection","getGroup","createNewGroup","tGroup","representative","removeGroup","PdfStandardFontMetricsFactory","getMetrics","Helvetica","getHelveticaMetrics","Courier","getCourierMetrics","TimesRoman","getTimesMetrics","getSymbolMetrics","ZapfDingbats","getZapfDingbatsMetrics","subSuperScriptFactor","helveticaBoldItalicAscent","helveticaBoldItalicDescent","helveticaBoldItalicName","arialBoldWidth","helveticaBoldAscent","helveticaBoldDescent","helveticaBoldName","helveticaItalicAscent","helveticaItalicDescent","helveticaItalicName","arialWidth","helveticaAscent","helveticaDescent","helveticaName","courierBoldItalicAscent","courierBoldItalicDescent","courierBoldItalicName","courierBoldAscent","courierBoldDescent","courierBoldName","courierItalicAscent","courierItalicDescent","courierItalicName","courierAscent","courierDescent","courierName","timesBoldItalicAscent","timesBoldItalicDescent","timesBoldItalicName","timesRomanBoldItalicWidths","timesBoldAscent","timesBoldDescent","timesBoldName","timesRomanBoldWidth","timesItalicAscent","timesItalicDescent","timesItalicName","timesRomanItalicWidth","timesAscent","timesDescent","timesName","timesRomanWidth","symbolAscent","symbolDescent","symbolName","symbolWidth","zapfDingbatsAscent","zapfDingbatsDescent","zapfDingbatsName","zapfDingbatsWidth","PdfStandardFont","fontFamilyPrototype","encodings","pdfFontFamily","checkStyle","initializeInternals","getCharWidthInternal","stFont","fontFamilyEqual","lineReducer","styleEqual","WinAnsiEncoding","charOffset","isMerging","defaultMargin","isMerge","cacheCollection","documentPageCollection","defaultStandardFont","isCacheEnabled","checkPagesPresence","PdfBorders","defaultBorderPenLeft","dashStyle","defaultBorderPenRight","defaultBorderPenTop","defaultBorderPenBottom","leftPen","rightPen","topPen","bottomPen","PdfPaddings","hasLeftPad","hasRightPad","hasTopPad","hasBottomPad","leftPad","rightPad","bottomPad","topPad","PdfHorizontalOverflowType","PdfGridStyleBase","gridBackgroundBrush","gridTextBrush","gridTextPen","gridFont","gridBackgroundImage","PdfGridStyle","gridBorderOverlapStyle","Overlap","bAllowHorizontalOverflow","gridHorizontalOverflowType","gridCellSpacing","gridCellPadding","PdfGridCellStyle","gridCellBorders","PdfGridRowStyle","gridRowBackgroundBrush","setBackgroundBrush","backgroundBrush","gridRowTextBrush","setTextBrush","textBrush","gridRowTextPen","setTextPen","textPen","gridRowFont","gridRowBorder","setBorder","setParent","gridRowBackgroundImage","setBackgroundImage","ToolbarType","DialogType","UploadRequest","ElementLayouter","layoutElement","layoutInternal","Layouter","getPaginateBounds","usePaginateBounds","paginateBounds","PdfLayoutFormat","baseFormat","break","boundsSet","layoutType","layoutPaginateBounds","PdfLayoutParams","layoutFormat","PdfLayoutResult","PdfLayoutElement","beginPageLayout","endPageLayout","onBeginPageLayout","onEndPageLayout","bEmbedFonts","newBound","TextLayouter","pageResult","TextPageLayoutResult","remainder","layoutOnPage","getLayoutResult","PdfTextLayoutResult","lastLineBounds","checkCorrectBounds","stringResult","textFinished","FitElement","PdfTextWebLink","getTextPageBounds","verticalShift","remainderText","lastLineTextBounds","PdfTextElement","hasPointOverload","isPdfTextElement","stringLayoutResult","previousPosition","calculateResultBounds","lineSize","maximumWidth","startPosition","PdfAnnotation","pdfDictionary","internalColor","darkness","nativeRectangle","initialHeight","tempLoacation","PdfLinkAnnotation","PdfActionLinkAnnotation","pdfAction","getSetAction","PdfAction","PdfUriAction","uniformResourceIdentifier","PdfUriAnnotation","pdfUriAction","uriAction","uniformResourceLocator","uriAnnotation","recalculateBounds","defaultBorder","previousFontStyle","calculateBounds","drawMultipleLineWithPoint","drawMultipleLineWithBounds","PdfGridCell","cellHeight","tempval","fontSpilt","finsh","rowSpanRemainingHeight","hasRowSpan","hasColSpan","isFinish","internalIsCellMergeContinue","internalIsRowMergeContinue","internalIsCellMergeStart","internalIsRowMergeStart","remaining","objectValue","PdfGrid","isSingleGrid","ParentCell","rowSpanExists","hasRowSpanSpan","cellStyle","measureHeight","columnSpanExists","measureWidth","layouter","getTextFont","webLink","cellPadding","cellSpacing","drawCellBackground","getBackgroundBrush","getBackgroundImage","adjustContentLayoutArea","returnBounds","cancelSubsequentSpans","allowHorizontalOverflow","rowOverflowIndex","adjustOuterLayoutArea","getTextPen","getTextBrush","strFormat","getStringFormat","innerLayoutArea","allowRowBreakAcrossPages","_rowHeight","splitChildRowIndex","rowFontSplit","repeatFlag","layoutRect","PdfGridLayouter","PdfGridLayoutFormat","LayoutFormat","Paginate","setSpan","checkSpan","childGridResult","rowBreakHeightValue","rowBreakHeight","NestedGridLayoutResult","imageBounds","drawCellBorders","borderOverlapStyle","Inside","Square","currentColIndex","columnSpan","isCellMergeContinue","compWidth","currentRowIndex","rowCollection","getHeader","rowMergeComplete","internalWidth","tempWidth","PdfGridCellCollection","tempcell","PdfGridColumn","PdfGridColumnCollection","internalColumns","measureColumnsWidth","initialWidth","isPageWidth","getDefaultWidths","subFactor","PdfGridRow","gridRowOverflowIndex","isrowFinish","isRowSpanRowHeightSet","noOfPageCount","isRowHeightSet","isPageBreakRowSpanApplied","isRowMergeComplete","isHeaderRow","pdfGrid","bRowSpanExists","gridCells","rowStyle","gridRowBreakHeight","gridResult","bColumnSpanExists","cellIn","rowin","rowWid","PdfGridRowCollection","temprow","PdfGridHeaderCollection","gridSize","isGridSplit","isRearranged","pageBounds","listOfNavigatePages","parentCellIndex","breakRow","hasColumnSpan","beginCellDraw","endCellDraw","bRepeatHeader","gridHeaders","gridInitialWidth","gridStyle","ispageWidth","ischildGrid","onBeginCellDraw","raiseBeginCellDraw","onEndCellDraw","raiseEndCellDraw","gridLocation","maxSpan","isRowMergeContinue","isCellMergeStart","isRowMergeStart","maximumRowSpan","cellcolSpan","cellrowSpan","cellmaxSpan","childGridColumnWidth","colCount_1","colCount_2","RowCount","ColCount","childGridColWidth","childheight","columnRanges","currentLocation","slr","isPaginate","gridLayoutFormat","currentPageBounds","currentGraphics","FitColumnsToPage","startLocation","hType","horizontalOverflowType","determineColumnDrawRanges","startColumn","endColumn","cellWidths","subWidths","layoutedPages","startPage","cellBounds","cellStartIndex","cellEndIndex","returnObject","raiseBeforePageLayout","drawHeader","headerResult","drawRow","repeatRowIndex","OnePage","getNextPageformat","repeatRow","rowResult","tempResult","raisePageLayouted","isRowBreaksNextPage","repeatHeader","j_1","headerRepeat","j_2","tempResult1","i_3","checkIsFisished","i_4","i_5","recalHeight","ReCalculateHeight","pageGraphics","location_2","totalwidth","i_6","isPdfGrid","maximumCellBoundsWidth","largeNavigatePage","rowLayoutBoundsWidth","reArrangePages","FinishedDrawingCell","pageindex","CheckIfDefaultFormat","measureTrailingSpaces","noClip","RaiseBeforeCellDraw","PdfGridBeginCellDrawEventArgs","raiseAfterCellDraw","cellstyle","PdfGridEndCellDrawEventArgs","count_1","PdfGridLayoutResult","raiseBeginPageLayout","PdfGridBeginPageLayoutEventArgs","PdfGridEndPageLayoutEventArgs","raiseEndPageLayout","RowLayoutResult","rowHeightWithSpan","currRowIndex","FitPage","drawRowWithBreak","repeatRowNumber","isFit","isFitToCell","location_4","cancelSpans","calculateHeight","gridColumnWidth","cellstyle1","rowBreakPageHeightCellIndex","GridCellEventArgs","gridRowIndex","gridCellIndex","gridBounds","bSkip","PdfCancelEventArgs","BeginPageLayoutEventArgs","EndPageLayoutEventArgs","nextPdfPage","startRow","layoutedBounds","bIsFinished","PdfPageTemplateElement","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","pdfTemplate","templateType","updateDocking","dock","canBeSet","TopLeft","MiddleLeft","BottomLeft","TopCenter","TopRight","MiddleRight","BottomRight","BottomCenter","MiddleCenter","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","convertSign","getSimpleDockBounds","getTemplateDockBounds","PdfNumbersConvertor","intArabic","numberStyle","Numeric","LowerLatin","arabicToLetter","LowerRoman","arabicToRoman","UpperLatin","UpperRoman","retval","retvalM","generateNumber","retvalCM","retvalD","retvalCD","retvalC","retvalXC","retvalL","retvalXL","retvalX","retvalIX","retvalV","retvalIV","retvalI","arabic","convertToLetter","appendChar","magnitude","numberstring","letterLimit","acsiiStartIndex","PdfTemplateValuePair","PdfMultipleValueField","drawLocation","PdfPageNumberField","internalNumberStyle","internalGetValue","PdfCompositeField","internalText","automaticField","PdfSingleValueField","painterGraphics","PdfPageCountField","PdfTrueTypeFont","createFontInternal","getUnicodeLineWidth","codeWidth","calculateStyle","iStyle","equalFont","isEmbed","isUnicodeFont","glyphIndices","resultGlyph","ExportHelper","hideColumnInclude","getGridRowModel","processColumns","childGridLevel","getColumnData","columnPromise","fColumns","isHideColumnInclude","processHeaderCells","generateActualColumns","getConvertedWidth","actualColumns","getCellCount","appendGridCells","isIgnoreFirstCell","checkAndExport","gridPool","globalResolve","childGridObj","createChildGrid","getGridModel","parentPrimaryKeys","parentKeyField","parentRowData","exportId","getGridExportColumns","actualGridColumns","ExportValueFormatter","internationalization","returnFormattedValue","formatCellValue","PdfExport","customDataSource","isGrouping","headerOnPages","drawPosition","xPosition","yPosition","exportValueFormatter","isExporting","pdfPageSettings","exportWithData","returnType","processExport","blobPromise","gridInstance","hierarchyExportMode","headerPageNumbers","gridDrawPosition","allPromise_1","multipleExport","processSectionExportProperties","processGridExport","blankSpace","getPageSize","gridTheme","processExportProperties","headerThemeStyle","getHeaderThemeStyle","headerFont","headerBrush","processGridHeaders","setColumnProperties","captionThemeStyle","getSummaryCaptionThemeStyle","processGroupedRecords","processRecord","summaryModel","sRows","processAggregates","getFontFamily","getFontStyle","penBrushColor","hexToRgb","borderCaption","getBorderStyle","getGridPdfFont","isTrueType","fontFamily_1","captionFont","captionSize","captionStyle","fontFamily_2","recordFont","recordSize","recordStyle","fontFamily_3","dataSourceItems","cArgs","captionText","processCellStyle","captionSummaryModel","eCols","rowNumber","applyTextAndSpan","pdfCell","getHorizontalAlignment","getVerticalAlignment","gridCell","evtArgs","setCellBorder","setCellFont","setHeaderBrush","hyperLink","setHyperLink","recuHeader","spanCnt","cidx","newSpanCnt","fromBottom","drawPageTemplate","includeHiddenColumn","fromTop","headerTemplate_1","processContentValidation","drawPageNumber","getBrushFromContent","textPenColor","penColor","setContentFormat","documentHeader","textBrushColor","brushColor","compositeField","getPageNumberStyle","pageNumberType","getPenFromContent","penSize","getDashStyle","isCaption","isGroupedFooter","isAggregate","sRows_1","leastCaptionSummaryIndex","aggIdx","getTemplateFunction","getSummaryWithoutTemplate","TrueCount","FalseCount","setRecordThemeStyle","borderRecord","cellLength","gridRow_1","startIndexVal","childGridCell","processDetailTemplate","columnHeader","border_1","headerFont_1","headerBrush_1","backColor","pdfTextAlignment","pdfVerticalAlignment","pdfTextPenColor","strikeThrough","pdfBorder","pdfParagraphIndent","pdfCellPadding","textLink","hAlign","vAlign","Worksheets","isSummaryRowBelow","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","mergeCell","mCell","isIntersecting","intersectingCell","Width","Height","CellStyle","Borders","isGlobalStyle","Font","CellXfs","Alignment","CellStyleXfs","CellStyles","NumFmt","Border","mLine","mColor","lineStyle","Rows","Cells","Utils","bitConverterToInt32","bitConverterToInt16","bitConverterToUInt32","bitConverterToUInt16","bitConverterUintToInt32","bitConverterInt32ToUint","bitConverterInt32ToInt16","byteIntToString","arrayCopy","destinationIndex","dataToCopy","mergeArray","arrayOne","arrayTwo","mergedArray","encode2","encode3","encode4","DecompressorHuffmanTree","m_LengthTree","m_DistanceTree","prepareData","blCount","treeSize","MAX_BITLEN","treeFromData","pointer","revcode","subTree","treeLen","m_Tree","unpackSymbol","peekBits","skipBits","subtree","bitlen","availableBits","ChecksumUpdate","checkSumUInt","DEF_CHECKSUM_BIT_OFFSET","DEF_CHECKSUM_ITERATIONSCOUNT","DEF_CHECKSUM_BASE","ChecksumGenerate","CompressedStreamReader","bNoWrap","defaultHuffmanDynamicTree","DEF_HEADER_METHOD_MASK","DEF_HEADER_INFO_MASK","DEF_HEADER_FLAGS_FCHECK","DEF_HEADER_FLAGS_FDICT","DEF_HEADER_FLAGS_FLEVEL","DEF_MAX_WINDOW_SIZE","DEF_HUFFMAN_REPEATE_MAX","DEF_HUFFMAN_END_BLOCK","DEF_HUFFMAN_LENGTH_MINIMUMCODE","DEF_HUFFMAN_LENGTH_MAXIMUMCODE","DEF_HUFFMAN_DISTANCE_MAXIMUMCODE","mCheckSum","tBuffer","mBufferedBits","mTempBuffer","mBlockBuffer","mbNoWrap","mWindowSize","mCurrentPosition","mDataLength","mbCanReadNextBlock","mbCanReadMoreData","mbCheckSumRead","DOMException","mInputStream","readZLibHeader","decodeBlockHeader","fillBuffer","bitMask","mBuffer","bytesRead","readBits","bFinalBlock","blockType","mbReadingUncompressed","skipToBoundary","readInt16Inverted","mUncompressedDataLength","mCurrentLengthTree","mCurrentDistanceTree","lengthTree","distanceTree","trees","decodeDynamicHeader","bLastSymbol","iLengthsCount","iDistancesCount","iCodeLengthsCount","iResultingCodeLengthsCount","arrResultingCodeLengths","arrDecoderCodeLengths","iCurrentCode","treeInternalDecoder","bNeedBreak","miRepSymbol","DEF_HUFFMAN_DYNTREE_REPEAT_BITS","DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS","readHuffman","dataRead","readdata","numDataRead","iRepeatLength","DEF_HUFFMAN_REPEAT_LENGTH_BASE","iRepeatExtraBits","DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION","DEF_HUFFMAN_REPEAT_DISTANCE_BASE","iRepeatDistance","DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION","initialLength","inBlockPosition","oldDataLength","dataToRead","readPackedBytes","DEF_REVERSE_BITS","inputStream","CRC32TABLE","BufferSize","ZipArchive","initCrc32Table","ZipArchiveItem","addDirectory","directoryName","zipByteArray","lCentralDirEndPosition","findValueFromEnd","lCentralDirPosition","ReadInt32","readCentralDirectoryDataAndExtractItems","itemHelper","ZipArchiveItemHelper","readCentralDirectoryData","checkCrc","decompressData","unCompressedStream","zipArchive","saveAsBlob","skipFileSave","zipData","dirLength","getCompressedData","constructZippedObject","isDirectory","writeZippedContent","crc32Value","compressedData","uncompressedDataSize","compressionType","calculateCrc32Value","crc32Table","compressor","subArray","zipParts","extFileAttr","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","writeFooter","externalFileAttribute","centralLength","localLength","modTime","modiDate","lStreamSize","arrBuffer","lLastPos","lCurrentPosition","uiCurValue","bFound","ReadInt16","ReadUInt16","headerSignature","originalSize","iFileNameLength","iExtraFieldLenth","iCommentLength","externalAttributes","m_strItemName","readLocalHeader","readCompressedData","decompressDataOld","decompressedData","compressedStream","iReadBytes","iNameLength","iExtraLength","dataStream","iBytesLeft","iBytesToRead","itemName","decompressedStream","CsvHelper","csvStr","globalStyles","parseWorksheet","parseRows","parseCell","parseCellValue","dwlLink","encodeString","BlobHelper","AutoFilters","saveType","currencyString","sharedStringCount","unitsProportions","hyperlinkStyle","mSaveType","mArchive","mFonts","mBorders","mStyles","printTitles","mNumFmt","mFills","mCellXfs","mCellStyleXfs","drawingCount","imageCount","parserCellStyle","cellStylesIn","tFormat","parserWorksheets","builtInProperties","BuiltInProperties","parserBuiltInProperties","csvHelper","jsonBuiltInProperties","createdDate","modifiedDate","jsonSheet","mergedCellsStyle","mHyperLinks","parserColumns","parserRows","parserFreezePanes","printTitle","parserPrintTitle","parserImages","autoFilters","parseFilters","hyperLinks","mergeOptions","applyProperties","sourceJson","destJson","getCellName","getColumnName","strColumnName","iCurrentDigit","titleRowName","titleColName","printTitleName","fromRow","toRow","fromColumn","toColumn","freezePanes","leftCell","columnsLength","rowsLength","parserRow","insertMergedCellsStyle","rowToInsert","createCell","styleIndex","cellToInsert","grouping","parseGrouping","parseCells","cellsLength","spanMin","spanMax","cellId","jsonCell","getCellValueType","parseCellType","processMergeCells","GetColors","processColor","colorVal","rgbColors","processCellValue","processedVal","startindex","processString","subSplit","subSplit_1","applyGlobalStyle","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","switchNumberFormat","changeNumberFormats","returnFormat","processNumFormatId","compareResult","compareStyle","isNewFont","toCompareStyle","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","sstvalue","imagesLength","parserImage","horizontalFlip","verticalFlip","blobSaveType","proxyUrl","xlsxMatch","csvMatch","saveWorkbook","saveWorksheets","saveSharedString","saveStyles","saveApp","saveCore","saveContentType","saveTopLevelRelation","saveWorkbookRelation","workbookTemp","printTitle_1","addToArchive","saveWorksheet","sheetBlob","sheetString","saveSheetView","colString","pixelsToColumnWidth","rowString","pixelsToRowHeight","hLink","saveDrawings","saveSheetRelations","sheetDrawingString","imgId","pic","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","convertBase64toImage","saveDrawingRelations","iCurHeight","iCurRow","iCurOffset","iRowHeight","iSpaceInCell","rowHiddenHeight","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","byteStr","drawingRelation","dDigitWidth","trunc","fileWidth","relStr","paneString","sstStart","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","applyAlignment","numFmtStyle_1","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","wbRelation","contentTypeString","sheetsOverride","drawingIndex","xmlString","archiveItem","updatedMergedCellStyles","sCell","eCell","dateToTicks","timeToTicks","daysTo1899","ExcelExport","book","workSheet","rowLength","expType","isCsvExport","isElementIdChanged","grpFooterTemplates","footerTemplates","aggIndex","totalAggregates","isCsv","processRecords","exportingSuccess","processInnerRecords","query_1","groupedColLength","blankRows","isExportPropertiesPresent","processExcelHeader","organisedRows","organiseRows","processExcelFooter","enableFilter","headerRowLen","initialIndex","excelRows","gColumns","groupIndent","processHeaderContent","lazyloadData","lazQuery","lazyLoadQuery","processRecordContent","capTemplate","excelRow","processRecordRows","processGroupedRows","getCaptionThemeStyle","groupCaptionSummaryRows","fillAggregates","lIndex","hIndex","tCell","templateRowHeight","gCell","fkData","excelCellArgs","setImage","getColumnStyle","detailCellIndex","processCell_1","getRecordThemeStyle","excelHAlign","excelVAlign","excelRotation","excelBorders","excelNumberFormat","excelType","excelDetailCells","detailCell","excelImage","excelExportProps","gRow","intent","byGroup","groupSummaryRows","customIndex","columnsDetails","getAggreateValue","aggregateStyle","gridCellStyle","dummyGrouping","JSON1","JSON2","attrname","headerRotation","spannedCells","parseStyles","excelHeaderCellArgs","updateThemeStyle","themestyle","noRows","updatedCellIndex","footerRows","spannedCells_1","menuClass","batchEdit","editIcon","pager","excel","fPage","nPage","pPage","ascending","groupHeader","touchPop","getMenuItems","contextMenuItemClick","contextMenuBeforeOpen","contextMenuOnClose","menuItems","exportItems","buildDefaultItems","exportGroup","getLastPage","totalpage","targetRowdata","updateItemStatus","closestGrid","hideSepItems","showSepItems","ensureTarget","ensureFrozenHeader","Reorder","createReorderElement","chkDropPosition","srcElem","destElem","closestElement","targetParentContainerIndex","chkDropAllCols","isFound","findColParent","getColumnsModel","isNotStackedHeader","subCols","uId","destElemUid","sourceUid_1","colMatchIndex_1","destUid_1","moveColumns","destElement","oldIdx","destIndex","reorderByColumn","preventRefresh","getColParent","srcIdx","toColumnUid","refreshColumnIndex","stackedHdrColumn","stackedCols","getAllStackedheaderParentColumns","flatColumns","reorderSingleColumn","reorderMultipleColumns","fromFNames","moveTargetColumn","reorderSingleColumnByTarget","reorderMultipleColumnByTarget","fromCol","setDisplay","toCol","updateScrollPostion","updateArrowPosition","cliRect","cliRectBaseRight","cliRectBaseLeft","cliRectBase","DetailRow","refreshColSpan","destroyChildGrids","toogleExpandcollapse","needToRefresh","nextRow","detailElement","detailRow","detailCell_1","isLegacyTemplate","promiseResolve","gridElem","rowElems","detailrowIdx","lastrowcell","getTDfromIndex","moduleObj","RowDD","isOverflowBorder","selectedRowColls","istargetGrid","startedRow","processArgs","dragelement","removeCell","dropCountEle","dragTrs","indentCells","cloneIndentCell","getParentGrid","spanCssEle","dragStartData","dropElem","isDropGrid","dropElement","getElementFromPosition","hoverState","dragParentElement","moveDragRows","isNewRowAdded","bottomborder","gridcontentEle","groupRowDDIndicator","processDragStop","stRow","rowOrder","targetRow","deleteCell","onDataBoundFn","parentGridObtained","tbodyContent","tbodyHeader","dragstartrow","dropRowUid","refreshData","updateFrozenRowreOrder","tbodyC","tbodyH","refreshRowTarget","targetIdx","targetTR","updateFrozenColumnreOrder","recordobj","currentVdata","fromIdx","saveChange","dropIdx","actualIdx","reorderRow","virtualScrollbtm","scrollPixel_1","setScrollDown","scrollPixel_2","scrollPixel","removeFirstRowBorder","removeLastRowBorder","targetRowIndex","gridheaderEle","getTargetIdx","singleRowDrop","srcControl","startedRowIndex","isSingleRowDragDrop","lastrow","dragIdx","predefinedItems","isSearched","isRightToolbarMenu","excludingItems","preItems_1","itemStr","localeName","isResponsiveToolbarMenuItems","responsiveToolbarItems","responsiveFilter","responsiveSort","responsiveBack","responsiveToolbarMenu","renderResponsiveToolbarpopup","addReactToolbarPortals","bindSearchEvents","updateSearchBox","toolbarCreated","isNormal","tool","toolbarClickHandler","viewStr","ID","renderResponsiveSearch","refreshResponsiveToolbarItems","isSearch","hasData","getItemObject","toolbarItems_1","itemObject","gID","openResponsiveToolbarMenuPopup","newArgs","tarElement","toolbarMenuElement","toolbarItems_2","ResponsiveToolbarMenuItemClick","setFocusToolbarItem","getFocusToolbarElements","getFocusToolbarItems","keyPressedHandler","targetParent","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","ForeignKey","initForeignKeyColumns","generateQueryFormData","eventfPromise","setColumnData","foreignColumns","genarateColumnQuery","genarateQuery","responses","errorMsg","needQuery","queryColumn","destroyEvent","tableclass","contentChanged","iframeMouseDown","refreshBegin","toolbarUpdated","bindOnEnd","renderColorPicker","htmlToolbarClick","markdownToolbarClick","destroyColorPicker","tableModulekeyUp","toolbarRenderComplete","enableFullScreen","disableFullScreen","dropDownSelect","beforeDropDownItemRender","execCommandCallBack","imageToolbarAction","linkToolbarAction","insertLink","unLink","editLink","openLink","updateToolbarItem","insertImage","insertCompleted","imageLink","imageAlt","imageDelete","imageCaption","imageSize","sourceCode","updateSource","beforeDropDownOpen","selectionSave","selectionRestore","expandPopupClick","sourceCodeMouseDown","editAreaClick","contentscroll","colorPickerChanged","tableColorPickerChanged","focusChange","selectRange","getSelectedHtml","renderInlineToolbar","rtlMode","docClick","tableToolbarAction","checkUndo","readOnlyMode","moduleDestroy","enterHandler","clearDialogObj","imageUploading","imageUploadSuccess","imageUploadFailed","afterImageDelete","xhtmlValidation","beforeImageUpload","resizeInitialized","renderFileManager","dynamicModule","updateTbItemsStatus","showLinkDialog","closeLinkDialog","showImageDialog","closeImageDialog","showTableDialog","closeTableDialog","bindCssClass","formatPainterClick","formatPainterDoubleClick","emojiPicker","destroyTooltip","cleanupResizeElements","afterKeyDown","updateValueOnIdle","documentClickClosedBy","showColorPicker","closeTooltip","blockEmptyNodes","inlineEmptyNodes","supportedUnits","conversionFactors","onHandleFontsizeChange","CLS_RTE","CLS_DISABLED","CLS_SCRIPT_SHEET","CLS_STYLE_SHEET","CLS_TOOLBAR","CLS_TB_FIXED","CLS_TB_FLOAT","CLS_INLINE","CLS_RTE_EXPAND_TB","CLS_FULL_SCREEN","CLS_QUICK_TB","CLS_POP","CLS_QUICK_DROPDOWN","CLS_TEXT_POP","CLS_INLINE_POP","CLS_INLINE_DROPDOWN","CLS_DROPDOWN_POPUP","CLS_DROPDOWN_ICONS","CLS_DROPDOWN_ITEMS","CLS_DROPDOWN_BTN","CLS_TB_WRAP","CLS_SHOW","CLS_HIDE","CLS_VISIBLE","CLS_RM_WHITE_SPACE","CLS_IMGRIGHT","CLS_IMGLEFT","CLS_IMGCENTER","CLS_IMGBREAK","CLS_CLICKELEM","CLS_VID_CLICK_ELEM","CLS_AUDIOWRAP","CLS_VIDEOWRAP","CLS_CAPTION","CLS_CAPINLINE","CLS_IMGINLINE","CLS_COUNT","CLS_WARNING","CLS_ERROR","CLS_EXPAND_OPEN","CLS_RTE_ELEMENTS","CLS_TB_BTN","CLS_TB_IOS_FIX","CLS_LIST_PRIMARY_CONTENT","CLS_COLOR_CONTENT","CLS_RTE_READONLY","CLS_TABLE_SEL","CLS_TB_DASH_BOR","CLS_TB_ALT_BOR","CLS_TB_COL_RES","CLS_TB_ROW_RES","CLS_TB_BOX_RES","CLS_RTE_HIDDEN","CLS_RTE_IMAGE","CLS_IMG_FOCUS","CLS_RTE_DRAG_IMAGE","CLS_POPUP_OPEN","CLS_TABLE_BORDER","CLS_RTE_TABLE_RESIZE","CLS_RTE_FIXED_TB_EXPAND","CLS_RTE_TB_ENABLED","CLS_RTE_SOURCE_CODE_TXTAREA","editorMode","getEditPanel","editorManager","nodeSelection","setCursorPoint","KEY_DOWN","ACTION","FORMAT_TYPE","KEY_DOWN_HANDLER","LIST_TYPE","KEY_UP_HANDLER","KEY_UP","MODEL_CHANGED_PLUGIN","MODEL_CHANGED","MS_WORD_CLEANUP_PLUGIN","ON_BEGIN","SPACE_ACTION","FORMAT_PAINTER_ACTIONS","EMOJI_PICKER_ACTIONS","isMetaKey","ViewSource","onInitialEnd","updateSourceCode","CONSTANT","getSourceCode","getCssClass","previewKeyDown","previewElement","wireBaseKeyDown","unWireBaseKeyDown","toolbarSettings","getToolbarElement","firstActiveItem","targetItem","baseToolbar","getBaseToolbarObject","updateValueData","iframeSettings","rteContent","getID","getTextAreaValue","disableToolbarItem","enableToolbarItem","placeHolderWrapper","invokeChangeEvent","saveInterval","autoSaveOnIdle","codeViewTimeInterval","editHTML","enableUndo","addAudioVideoWrapper","getViewPanel","executeGroup","command","subCommand","ExecCommandCallBack","commandCallBack","formatPainterCopy","AjaxSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","columnArray","DetailsViewSettings","NavigationPaneSettings","defaultToolbarItems","ToolbarSettings","UploadSettings","templateItems","alignmentLocale","alignmentItems","imageAlignItems","videoAlignItems","displayLocale","audioLayoutOptionLocale","videoLayoutOptionLocale","imageDisplayItems","audioLayoutOptionItems","videoLayoutOptionItems","tableCellItems","tableRowLocale","tableRowsItems","tableColumnLocale","tableColumnsItems","tableVerticalLocale","TableCellVerticalAlignItems","tableStyleLocale","TableStyleItems","formatItems","numberFormatList","bulletFormatList","localeItems","windowKeys","defaultEmojiIcons","ImageSettings","AudioSettings","VideoSettings","FileManagerSettings","getImageUrl","uploadUrl","FileToolbarSettings","autoUpload","minFileSize","maxFileSize","autoClose","TableSettings","QuickToolbarSettings","FormatPainterSettings","EmojiSettings","PasteCleanupSettings","FontFamily","FontSize","Format","FontColor","BackgroundColor","NumberFormatList","BulletFormatList","Resources","IFrameSettings","InlineMode","toolsLocale","fontNameLocale","formatsLocale","numberFormatListLocale","bulletFormatListLocale","rte","isFrame","setPlaceHolder","valueContainer","showFullScreen","quickToolbarModule","hideQuickToolbars","evenArgs","beginEventArgs","enableFloating","inlineMode","toggleParentOverflow","toolbarObj","removeFixedTBarClass","hideFullScreen","addFixedTBarClass","EnterKeyAction","getRangeNode","getRange","startNode","startContainer","endNode","endContainer","isTableEnter","formatTags","isCursorAtTableEnd","isContentEditable","startOffset","isCursorAtTableStart","handleCursorAtTableSide","curElement","blockElement","isBlockNode","shiftKey_1","actionBeginArgs","getUndoRedoStack","endOffset","deleteContents","focusElem","currentFocusElem","currentLastElem","shiftEnterKey","newElem","createInsertElement","nearBlockNode","blockParentNode","isMediaNode","isFocusedFirst","splitFirstText","removeBRElement","isNearBlockLengthZero","nodeCutter","SplitNode","insertElem","finalFocusElem","audioVideoElem","isBRInserted","lastNode","brElm","audioModule","hideAudioQuickToolbar","videoModule","hideVideoQuickToolbar","startParentElem","isHeadingTag","insertElm","previousNode","currentParentLastChild","isLastNodeLength","isImageElement","focusBRElem","lineBreakBRElem","insertBRElement","outerBRElem","insertFocusContent","isEmptyBrInserted","isFocusTextNode","insertNode","brElm2","previousBlockNode","blockNodes","nextBlockNode","isEnd","shiftKey_2","undoRedoItems","inlineNode","getDropDownValue","isIDevice","getFormattedFontSize","isIFrame","i10n","itemLocale","setToolbarStatus","isPopToolbar","updateDropDownFontFormatLocale","dropDown","dropDownModule","tbElements","formatDropDown","formatContent","alignDropDown","fontNameDropDown","fontNameItems","fontNameContent","fontSizeDropDown","fontSizeItems","fontSizeContent","getCollection","getTBarItemsIndex","updateUndoRedoStatus","undoRedoStatus","trgItems","parseHtml","tempNode","DocumentFragment","createContextualFragment","getTextNodesUnder","docElement","toObjectLowerCase","getEditValue","rteObj","enableHtmlEncode","updateTextNode","resultElm","isPreviousInlineElem","previousParent","emptyBlockElem","allPNodes","emptyInlineElem","imageElm","getDefaultValue","isEditableValueEmpty","convertToBlob","mime","bstr","u8arr","getLocaleFontFormat","DialogRenderer","getDialogPosition","handleEnterKeyDown","outsideClickClosedBy","distanceFromVisibleTop","topHeight","RichTextEditor","quickToolbarSettings","showCharCount","fileManagerSettings","updateEnable","isFocusOut","isRTE","defaultResetValue","isResizeInitialized","onFocusHandler","onResizeHandler","clickPoints","setContainer","rteOuterWrapper","currentClassList","showEmojiPicker","executeCommand","commandName","htmlPurifier","currentInsertContentLength","tempElem","formatPainterSettings","formatPainterAction","htmlEditorModule","tableSettings","imageValue","insertImageSettings","wrapTemp","controls","audioValue","insertVideoSettings","linkValue","addAnchorAriaLabel","sourceCodeModule","RTERender","enableXhtml","getXhtml","audioElm","audioWrapElem","audioInnerWrapElem","videoElm","videoWrapElem","cleanList","currentStartContainer","currentEndContainer","currentStartOffset","isSameContainer","closestLI","isDetached","currentRangeEndOffset","TEXT_NODE","currentLast","setSelectionText","restrict","removeNodeArray","notFormatPainterCopy","FormatPainterEscapeAction","formatPainterModule","previousAction","quickToolbarElem","getRenderedQuickToolbarElem","autoResize","range_1","allowedKeys","formatPainterPaste","onKeyHandler","selfEncloseValidation","sanitizeHtml","triggerEditArea","touch","notifyMouseUp","touchData","prevClientX","prevClientY","showOnRightClick","closestTable","onCopy","onCut","onPaste","pasteArgs","pasteCleanupModule","args_2","htmlValue","getAsFile","isWordPaste","clipboardAction","timeInterval","allClassName","removeHtmlAttributes","undoRedoManager","wrapperElm","selectedHtml","getRangeAt","cloneContents","showInlineToolbar","targetElm","showInlineQTBar","hideInlineToolbar","hideInlineQTBar","nVal","updatePanelValue","countModule","refreshToolbarOverflow","frameSetting","removeSheets","setIframeSettings","wireContextEvent","unWireContextEvent","srcList","getTextArea","updateReadOnly","editPanel","printArgs","printingArgs","fullScreenModule","muteToolbarUpdate","enableTBarItems","removeToolbarItem","removeTBarItems","enterKeyModule","styleSrc","scriptSrc","InjectSheet","scriptSheet","scriptEle","createScriptElement","styleEle","createStyleElement","isPropertyChange","compiledTemplate","displayTempElem","updateResizeFlag","getInsertImgMaxWidth","editEle","editEleMaxWidth","imgPadding","getInsertVidMaxWidth","vidPadding","rteHeightPercent","heightPercent","rteHeight","tbHeight","getToolbarHeight","rzHandle","rzHeight","expandPopHeight","getExpandTBarPopHeight","getHtml","removeResizeElement","showSourceCode","getCharCount","htmlText","InsertLink","InsertImage","InsertAudio","InsertVideo","InsertTable","getBaseToolbar","getInlineBaseToolbar","isSpace","preventDefaultResize","preventImgResize","defaultResize","cloneValue","currentFocus","getCurrentFocus","resetToolbarTabIndex","getUpdatedValue","tableModule","isValueChangeBlurhandler","updateIntervalValue","idleInterval","valueElementWrapper","removeSelectionClassStates","updateStatus","markdown","getUndoStatus","rteElement","hideQuickToolbarChecker","inlineQTBar","iframeElement","documentNode","wireScrollElementsEvents","scrollParentElements","contextHandler","EJ2Touch","unWireScrollElementsEvents","closestElem","onSelection","setAutoHeight","arrayKey","editorKeyDown","onIframeMouseDown","quickToolbars","getQuickToolbarInstance","INPUT_WRAPPER","DROP_AREA","LIST_PARENT","FILE","STATUS","FILE_NAME","FILE_TYPE","FILE_SIZE","REMOVE_ICON","DELETE_ICON","SPINNER_PANE","ABORT_ICON","RETRY_ICON","DRAG_HOVER","PROGRESS_WRAPPER","PROGRESSBAR","PROGRESSBAR_TEXT","UPLOAD_INPROGRESS","UPLOAD_SUCCESS","UPLOAD_FAILED","TEXT_CONTAINER","VALIDATION_FAILS","RTL_CONTAINER","ICON_FOCUSED","PAUSE_UPLOAD","RESUME_UPLOAD","RESTRICT_RETRY","wrapperAttr","FORM_UPLOAD","INVALID_FILE","FilesProp","ButtonsProps","AsyncSettings","Uploader","initialAttr","uploadedFilesData","allTypes","pausedData","uploadMetaData","btnTabIndex","disableKeyboardNavigation","actionCompleteCount","selectedFiles","uploaderName","fileStreams","newFileRef","isFirstFileOnSelection","dragCounter","filesData","uploaderOptions","setExtensions","setControlStatus","setMultipleSelection","reRenderFileList","browse","renderButtonTemplates","unBindDropEvents","updateDropArea","checkHTMLAttributes","renderPreLoadFiles","updateDirectoryAttributes","setLocalizedTexts","preLocaleObj","browseButton","localizedTexts","uploadWrapper","updateFileList","getKeyValue","keyValue","uploadButton","internalCreateFileList","actionButtons","removeActionButtons","renderActionButtons","checkActionButtonStatus","Browse","Upload","invalidFileName","dropFilesHint","invalidMaxFileSize","invalidMinFileSize","invalidFileType","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","readyToUploadMessage","pauseUpload","retry","fileUploadCancel","invalidFileSelection","totalFiles","formRendered","browserName","directoryUpload","renderBrowseButton","initializeUpload","isPreloadFiles","wireActionButtonEvents","serverActionButtonsEventBind","unwireActionButtonEvents","uploadButtonClick","clearButtonClick","uploadText","dropAreaWrapper","setDropArea","clearData","files_1","fileData","rawFile","validationMessages","allowUpload","showFileList","sequentialUpload","dropTextArea","dropZoneElement","enableDropText","createDropTextHint","bindDropEvents","fileDropArea","uploadStyle","newAttr","createAttribute","setAttributeNode","checkAutoUpload","sequenceUpload","isFileListCreated","updatedOldCssClass","browseButtonClick","onSelectFiles","getCurrentMetaData","abortUpload","resumeUpload","chunkUpload","removeFiles","fileInfo","targetMetaData","dragHover","onPasteFile","dropEffect","pasteFile","renderSelectedFiles","getSelectedFiles","allFiles","getFilesData","nameElements","formUpload","isFormUpload","getFilesInArray","spinnerTarget","uploadSequential","checkActionComplete","removeFilesData","customTemplate","getLiElement","removeUploadedFile","removeDirectly","ajax","asyncSettings","currentRequest","removingEventCallback","removeCompleted","removeFailed","postRawFile","updateFormData","customFormData","updateCustomheader","getResponse","statusElement","getFilesFromFolder","filesEntries","checkDirectoryUpload","webkitGetAsEntry","isFile","files_2","fileObj","traverseFileTree","directoryReader","createReader","readFileFromDirectory","readEntries","pushFilesEntries","targetFiles","sortFilesList","sortFileList","getBase64","fileReader","directory","modifiedFilesData","progressInterval","isCanceled","updateInitialFileDetails","sanitizeFile","sanitizeFileName","currentFileName","isUTF8","hasHTMLString","encodedFileName","checkExtension","_internalRenderSelect","fileDetails","getFileType","webkitRelativePath","validatedFileSize","fileSource","dataFiles","updateSortedFileList","allowFormUpload","saveUrl","singleUpload","previousListClone","oldList","createParentUL","dropFiles","extensions_1","fileSize","minSizeError","maxSizeError","isPreLoadFile","isPreload","createCustomfileList","fileData_1","uploadTemplateFn","liTempCompiler","eventsArgs","formFileList","fileContainer","fileData_2","fileNameEle","getFileNameOnly","fileTypeEle","fileType","rtlContainer","truncateName","formValidateFileInfo","setListToFileInfo","infoEle","bytesToSize","getFileSize","createFormInput","mergeFileInfo","addInvalidClass","typeValidationMessage","fileData_3","fileData_4","fileNames","fileData_5","statusForFormUpload","fileData_6","formCustomFileList","createFileList","fileData_7","fileExtension","preventActionComplete","getSlicedName","nameElement","fileData_8","setInitialAttributes","filterfileList","filterFiles","updateLiStatus","createProgressBar","progressbarWrapper","progressBar","progressbarInnerWrapper","progressbarText","updateProgressbar","changeProgressValue","uploadInProgress","customUI","cancelUploadingFile","updateProgressBarClasses","ajax_1","removecanceledFile","renderFailureState","removeProgressbar","deleteIcon","pauseButton","reloadcanceledFile","uploadComplete","raiseSuccessEvent","uploadFailed","withCredentials","spinnerEle","raiseActionComplete","getSelectedFileStatus","matchFiles","matchFilesIndex","selectFileIndex","selectedFileData","fileDataIndex","animateProgressBar","uploadTemplate","isMutiple","chunkIndex","retryCount","sendRequest","totalChunk","chunkUploadComplete","chunkUploadInProgress","currentChunkIndex","uploadingEventCallback","chunkUploadFailed","eventCancelByArgs","checkChunkUpload","requestResponse","updateMetaData","sendNextRequest","removeChunkFile","removeChunkProgressBar","pauseIcon","chunkCount","retryRequest","retryAfterDelay","file_1","failureMessage","checkPausePlayAction","retryUpload","fromcanceledStage","retryElement","progressVal","totalChunks","abortIcon","sortedFilesData","sortedFileNames_1","attributes_2","uploadFiles_1","uploadFiles","serverReadFileBase64","uploadFileCount","getFileRead","fileCount","getFileInfo","uploadFilesRequest","chunkEnabled","name_4","spliceFiles","beforeEventArgs","isLiRemoved","removingFiles_1","validUrl","fileUploadedIndex","removeFiles_1","fileDataFiles","pauseUploading","getFiles","resumeFiles","retryFailedFiles","cancelingFiles","cancelUpload","showHideUploadSpinner","setEditFrameFocus","editableElement","markdownFormatTags","markdownSelectionTags","markdownListsTags","htmlKeyConfig","markdownKeyConfig","selfClosingTags","imageResizeFactor","topRight","botRight","botLeft","isImgUploaded","isAllowedTypes","deletedImg","rteID","dialogRenderObj","onWindowResize","showImageQuickToolbar","onToolbarAction","deleteImg","insertImgLink","insertAltText","editAreaClickHandler","alignmentSelect","afterRender","imagePaste","dragDrop","dragEnter","dragOver","imageClick","undoStack","onCutHandler","updateCss","currentObj","checkBoxObj","widthNum","heightNum","uploadObj","contentElem","resizeBtnInit","imgEle","prevSelectedImgEle","imgResizeDiv","imageResize","getPointY","quickToolObj","imageQTBar","resizeBtnStat","currentResizeHandler","findAspectRatio","imgResizePos","resizeImgDupPos","imgWid","imgHgt","borWid","devWid","elementOffset","setAspectRatio","expectedX","expectedY","sameHeightWidth","resizeByPercent","emptyStyleDimension","setImageWidth","removeImageHeight","setImageHeight","getImageDimension","rootElem","pixToPerc","imgDupMouseMove","resizingArgs","resizeFactor","getResizeFactor","imgDupPos","openImgLink","editImgLink","removeImgLink","selectParent","selectParentEle","linkUpdate","inputDetails","isCapLink","captionEle","insertElement","selectNodeEle","isCursor","getNodeCollection","isCursor_1","checkImageBack","checkImageDel","getParentNodeCollection","removeResizeEle","imageRemovePost","brElem","handleSelectAll","isInternal","markdownSelection","alignImage","inline","imageWithLinkQTBarItemUpdate","addQTBarItem","isNotify","setSelectionContents","hideImageQuickToolbar","imagDialog","linkWrap","linkUrl","linkTarget","inputLink","linkOpenLabel","imageLabel","linkargs_1","selfImage","insertlink","altWrap","altHeader","getAlt","inputAlt","altArgs_1","insertAlt","isUrl","restoreStartElement","firstNode","captionClass","baseURI","removingImgName","triggerPost","contenteditable","imgWrap","imgInner","imgCaption","imgSizeHeader","dialogContent","imgsizeInput","selectObj_1","insertSize","imgDialog","imgInsert","imglinkCancel","imgHeader","selectObj","dialogModel","insertImageUrl","cancelDialog","imgUpload","linkHeader","linkHeaderText","imageUrlPopup","textQTBar","imgUrl","placeUrl","inputUrl","spellcheck","matchUrl","imgHeight","imgWidth","imgSizeWrap","widthVal","changedWidthValue","heightVal","changedHeightValue","inputWidthValue","inputHeightValue","uploadParentEle","deviceImgUpMsg","imgUpMsg","spanMsg","btnEle","autofocus","browserMsg","fileSelect","uploadEle","saveFormat","beforeUpload","uploading","Uploaded","failure","removing","removeEventArgs","effectAllowed","imgElement","isImgOrFileDrop","caretRangeFromPoint","rangeParent","rangeOffset","getDropRange","insertDragImage","startRange","setRange","startCharIndexCharacter","rangeRect","activePopupElement","imgFiles","imgType","imgArgs_1","validFiles","imageTag","uploadMethod","dragEvent","isUploading","canceling","imageUploadingArgs","uploadFailure","uploadSuccess","selectNodeContents","Dropped","reader_2","showPopupToolBar","imageSrc","createQTBar","ImageToolbar","ensureInsideTableList","moveEle","currentColumnResize","resizeEndTime","dropdownSelect","selectionTable","cellSelect","setBGColor","resizeHelper","createTableButton","editdlgObj","numericTextBoxObj","columnTextBox","rowTextBox","tableWidthNum","tableCellPadding","tableCellSpacing","addColumn","removeRowColumn","UpdateCells","hideTableQuickToolbar","createTableToolbarBtn","removeTable","closestTd","tabSelection","tableArrowNavigation","previousTableElement","insertTableDialog","tableHeader","editTable","tableCell","insideList","removeEmptyTextNodes","allHeadBodyTRElements","clsTble","setSelectionNode","selText","curTable","tableQTBar","getAnchorNode","isAnchorEle","tableCellSelect","tblHeader","tableMouseUp","tableMove","tableCellLeave","tableCellClick","tableInsert","selectionObj","tdNode","tableResizeEleCreation","calMaxCol","colReEle","rowReEle","rowPosLeft","tableReBox","isNestedTable","resetResizeHelper","columnEle","cellColl","colGroupEle","rowSpanCells","tableBox","cellKey","maxiumWidth","currentTdElement","paddingSize","rteWidth","widthCompare","currentTd","currentTDPad","currentTableWidth","getCurrentTableWidth","currentColResizableWidth","getCurrentColWidth","firstColumnsCell","findFirstLastColCells","preMarginLeft","widthType","currentMarginLeft","currentColumnCellWidth","lastColumnsCell","actualwid","totalwid","leftColumnWidth","rightColWidth","tableTrElementPixel","currentTableTrElement","tableBoxPosition","resultColumns","rowSpanCellIndexs","spannedCellKey","tableTrPercentage","colHelper","rowHelper","tabkey","cmd","delKey","argsTarget","insertbtn","tableDiv","drawTable","closestEle","rowDiv","editContent","tableDlgContent","editHeader","dlgContent","tableCellDlgContent","customTable","tableColumn","tableRow","tableWrap","tableDialog","tdElm","padVal","brdSpcVal","updateResizeIconPosition","tablePosition","BaseToolbar","renderFactory","itemConfigs","setRtl","getTemplateObject","callback_1","currentContentElem","clonedItem","tbItems_1","shortCutKey","isMacDev","getToolbarOptions","rteToolbarObj","toolbarRenderer","EmojiPicker","onkeyPress","onkeyUp","spanElement","clickEvent","emojiPickerSettings","iconsSet","popDiv","searchFilter","emojiToolBar","pushToolBar","emojiToolbarClick","emojiBtnDiv","popupBorder","inputELe","getComputedStyle_1","emojiGroupDiv","emojiName","emojiBtn","buttoncode","scrollEvent","emojiBtnClick","emojiButtons","toolbarName","cp","emojiSet","firstSetWidth","currentEleName","emojiGroups","emojiGroupsheight","emojiHeight","focusBtn","searchKeyHandler","lastEleLength","previousRowLength","filterKeyHandler","contentELe","trimmedStr","emojipickerAll","toolbarGroup","excludedDiv_1","getComputedStyle_2","inputHeight","filteredButtons","emojis","noEmojiObj","noEMoji","titleLength","emoji","emotePickerTooltips","previousText","cursorPos","prevChar","isPrevSpace","isPrevColon","currentDocument","rteEle","cursorTop","cursorLeft","screenHeight","popupTop","popupLeft","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","splitterResize","pathChanged","beforeRequest","skipUpload","afterRequest","layoutRefresh","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dropPath","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","TOOLBAR_ID","LAYOUT_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","SEARCH_ID","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","LARGE_ICONS","LIST_ITEM","LIST_TEXT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","GRID_HEADER","TREE_VIEW","MENU_ITEM","MENU_ICON","SUBMENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ERROR_CONTENT","DISPLAY_NONE","FULLROW","HEADER_CHECK","VALUE","newText","getPath","pathId","getPathId","pathNames","getParents","getPathNames","isId","CLS","parentText","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","isSearchCut","activeElements","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","activeRecords","breadcrumbbarModule","searchObj","searchWordHandler","isLayoutChange","searchWord","getPathObject","caseSensitive","showHiddenItems","isSortByClicked","oldView","detailsviewModule","largeiconsviewModule","allItems","layoutSelectedItems","getTargetModule","tartgetModule","targetModule","hasReadAccess","createDeniedDialog","openAction","feParent","copyFiles","fileAction","cutFiles","filetype","ajaxSettings","pathUrl","fPath","getFullPath","filePath","getSortedData","currFiles","feFiles","createEmptyElement","addressBarHeight","emptyDiv","emptyFolder","emptyEle","dragFile","eDiv","getDirectories","sortbyClickHandler","getSortField","detailsViewSettings","setNextPath","currfolders","originalPath","newPath","openSearchFolder","selectedNode","isDragDrop","folderPath","validateSubFolder","fileExists","dragPath","subFolder","srcData","dragNodes","tempTarget","oldPath","getDirectoryPath","doPasteUpdate","duplicateItems","pasteNodes","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","readDropPath","dropData","expandedId","navigationpaneModule","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","badge","virtualDragElement","dragStopHandler","treeExpandTimer","removeDropTarget","dragCount","dropHandler","dragStartHandler","dragCancel","removeItemClass","nodeClass","elementData","draggingHandler","updateRenamingData","currentItemText","filterPath","doRename","hasEditAccess","doDownload","hasDownloadAccess","Download","doDeleteFiles","newIds","doDownloadFiles","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","uploadItem","createAjax","readSuccess","createFolder","createSuccess","filterDataVal","filterData","filterSuccess","rename","itemNewName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","beforeSendArgs","triggerAjaxFailure","rootAliasName","generatePath","localeString","setDateObject","dirs","setNodeId","rootName","createdItem","renamedItem","renameText","fileLength","createExtDialog","searchSuccess","downloadUrl","useFormPost","downloadArgs","namedItem","contentDisposition_1","fileName_1","filenameMatch","extractedFilename","blobUrl","replaceItems","formattedString","strArr","dialogName","triggerPopupOpen","triggerPopupClose","multipleFiles","onSubmit","onFolderDialogOpen","onDeleteSubmit","onReSubmit","onRenameDialogOpen","getOptions","keydownAction","triggerPopupBeforeClose","popupTarget","changeOptions","extOptions","duplicateContent","extDialogObj","getDuplicateData","indexval","retryFiles","onRetryOpen","isRetryOpened","retryDlgClose","retryDlgUpdate","isApplySame","getExtOptions","beforeExtOpen","triggerPopupBeforeOpen","dlgModule","popupModule","eventargs","isKeepBoth","retryArgs","onKeepBothAll","onReplaceAll","checkContainer","onkeyup","focusInput","onFocusRenameInput","preventKeydown","dlgName","btnElement","btnCount","onkeydown","onSubmitValidate","renamedId","oldExtension","newExtension","addInvalid","createImageDialog","viewerObj","openImage","updateImage","cssObj","paddingWidth","paddingHeight","LargeIconsView","uploadOperation","isSelectAllCalled","isPasteOperation","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","csEnd","csHome","csDown","csLeft","csRight","csUp","shiftSpace","csSpace","ctrlA","altEnter","esc","ctrlX","ctrlC","ctrlV","shiftdel","ctrlD","visitedItem","startItem","resetMultiSelect","listObj","iconsView","adjustHeight","virtualizationModule","setUIVirtualization","itemList","preventImgDrag","createDragObj","emptyList","selectItems","getItemCount","setUlElementHeight","wireScrollEvent","checkItem","ondragstart","dragHelper","dragCursorPosition","dragLi","onDropInit","dropLi","cwdData","textEle","showItemCheckBoxes","onLayoutChange","getIndexes","checkEle","checkLength","showThumbnail","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","getFirstItem","getLastItem","doSelection","onClearAllInit","onBeforeRequest","onAfterRequest","onLayoutRefresh","onUpdateSelectionData","onPathColumn","onMethodCall","onMenuItemData","splitterResizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","onDetailsInit","onDropPath","currentSelected","allowMultiSelection","wireClickEvent","keyboardDownModule","keydownActionHandler","toBind","clickObj","doTapAction","cList","triggerSelection","addActive","triggerSelect","details_1","fileOpenArgs","fItem","getFocusedItem","navigateItem","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","getActiveItem","isTowards","nItem","getNextItem","perRow","marginValue","liParent","liScrPos","getCurFocusedItem","rItem","uItem","getDataName","preItem","toCheck","eles","visitedData","byId","resultData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","liIdx","selectedLi","DropDownButton","isPopupCreated","openPopUp","createPopupOnClick","getULElement","getTargetElement","popupContent","isColorPicker","appendItems","createAnchor","beforeDisabled","getPopUpElement","blankIcon","appendArrowSpan","setActiveElem","activeElem","popupUnWireEvents","dropDownBtn","delegateMousedownHandler","mousedownHandler","popupWireEvents","closeActionEvents","focusoutHandler","liTarget","popupElem","wrapperWidth","openArgs","arrowSpan","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","allowSearchOnTyping","searchEventBind","onPathChange","addressbarUL","addressbarLI","pathNamesLen","addressATag","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","searchContainer","onShowInput","searchChangeHandler","utext","subMenuLi","subMenuSpan","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","currentPath","triggerFileOpen","treeNodeId","liElementId","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onPasteEnd","onSearchTextChange","liEle","isMenuItemClicked","currentItems","disabledItems","onBeforeItemRender","onBeforeOpen","onBeforeClose","getMenuId","itemKeys_1","_fm_id","treeFolder","targetNodeElement","activeNode","getTargetView","updateActiveModule","setLayoutItem","setFileItem","setFolderItem","pasteEle","pasteIndex","getMenuItemData","menuModule","menuOpenArgs","disableItem","checkValidItem","isTree","contextMenuSettings","selectedTreeNode","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","FileManager","previousPath","nextPath","deleteRecords","isSameAction","isOpened","uploadingCount","uploadedCount","FileManager_1","ensurePath","checkMobile","navigationPaneSettings","addWrapper","altN","ctrlShift1","ctrlShift2","ctrlU","slItems","fileView","splitterObj","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","gridWrap","largeiconWrap","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","toolBarHeight","splitterAdjust","oldOne","newOne","uploadDialogObj","renderUploadBox","onUploading","onRemoving","clearing","onClearing","onUploadSuccess","onUploadFailure","uploadSettings","fileListRendering","onFileListRender","updateUploader","uploadEventArgs","onFileUploadSuccess","setPath","ajaxSettingSetModel","localeSetModelOption","contextmenuModule","disableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","refreshFiles","refreshLayout","InterSectionObserver","movableEle","fromWheel","touchMove","containerRect","entered","onEnterCallback","virtualScrollHandler","debounced100","debounced50","sentinel","setPageHeight","VirtualRowModelGenerator","cOffsets","rowCache","rowModelGenerator","columnInfiniteRows","currentRowStartIndex","getRowIndexFromElement","newResult","loadSelf","getBlockIndexes","loadedBlocks","includePrevPage","dataRows","isBlockAvailable","getStartIndex","median","getGroupVirtualRecordsByIndex","setBlockForManualRefresh","updateGroupRow","renderMovableContent","renderFrozenRightContent","DataRecord_1","block","blk","getColumnIndexes","calWidth","frzLeftWidth","rightCol","iOffset","offsetVal","refreshColOffsets","currentFirst","iterateGroup","oRow","getGroupedTotalBlocks","prevHeight","preStartIndex","preventEvent","tmpOffsets","VirtualElementHandler","offsetKeys","heightChange","requestTypes","isNormaledit","virtualInfiniteData","emptyRowData","isSelectionScroll","validationCheck","widthServices","renderPlaceHolder","debounceEvent","getBlockHeight","blockIndex","colsIndex","recordslength","firstRecords","virtualRows","scrollListener","scrollAfterEdit","viewInfo","getInfoFromView","restoreEdit","isBlockAdded","tempBlocks","infoType","preEndIndex","getPageFromTop","ensureBlocks","newBlock","firstBlock","mIdx","getTotalBlocks","newChild","cBlock","cOffset","getColumnOffset","refreshOffsets","vHeight","reduceWidth","frzLeftWidth_1","getTranslateY","setWrapperWidth","getOffset","restoreAdd","ensureSelectedRowPosition","validationScrollLeft","initialRowTop","gridTop","validationCol","isRowInView","editedRowIndex","getRowObjectByIndex","getVirtualEditedData","editForms","maxPage","onDataReady","resetScrollPosition","virtualHeight","placeHolderBottom","wrapperBottom","cHeight","isOnenter","endTranslate","blockHeight","totalBlocks","onEntered","isWheel","firstOffSetKey","lastOffSetKey","disableShowMaskRow","frzRightWidth","isLastBlockRow","remainHeight","refreshMaxPage","refreshVirtualLazyLoadCache","virtualCellFocus","editActionBegin","addActionBegin","refreshCache","resetIsedit","editCancel","refreshCells","scrollValues","allowScroll","HTMLInputElement","ensureLastRow","ensureFirstRow","getEditedRowObject","editedrow","editRowObject","editRequestTypes","refreshVirtualElement","addForm","createEmptyRowdata","getRowCollection","getMovableVirtualRowByIndex","getFrozenRightVirtualRowByIndex","isRowObject","vGroupedRows","colGrp","selectedRowObjectIndex","VirtualHeaderRenderer","tablewidth","renderFrozenWrapper","renderFrozenPlaceHolder","renderMovableWrapper","movableWrapper","renderMovablePlaceHolder","movablePlaceholder","adjustMovableTable","setMovableWrapperWidth","setMovableVirtualHeight","setFreezeWrapperWidth","VirtualScroll","ensurePageSize","virtualEditFormValidation","errorDomRect","contentLeft","existingErrors","setEditedDataToValidationForm","isRenderer","DetailsView","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isNameWidth","ctrlShiftN","checkNameWidth","onDeSelection","columnResizing","DblClickEvents","onBeforeDataBound","onRowDataBound","onHeaderCellInfo","getGridHeight","emptyArgs","initialColumn","adjustWidth","nameWidth","_fm_modified","template_1","iWidth","_fm_iconClass","renderCheckBox","sizeEle","modifiedSize","sizeFormat","dateEle","sortItem","sortSelectedNodes","nameColumn","selectRecords","hdTable","cnTable","checkEmptyDiv","gridRecords","sRecords","Str2","rData","onSortColumn","onDetailsResize","updatePathColumn","removePathColumn","openContent","onSearchFiles","onPasteInit","onDetailsResizeHandler","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","lastItemIndex","gridSelectNodes","selectSize","getFocusedItemIndex","gridItems","gridLength","focIndex","selRowIndeces","currentField","crtSrlPos","crtFocusIndex","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","shiftSelectedItem","shiftSelectFocusItem","InnerItems","itemArr","fIndex","selRowIndexes","nameFocus","treeFocus","getRecords","hasFilter","dRecords","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","LOAD","PROCESS","TEXTWRAP","INPUT","INPUTGROUP","TREEINPUT","EDITING","INTERACTION","DROPPABLE","DRAGGING","SIBLING","DROPIN","DROPNEXT","DROPOUT","NODROP","EXPANDED","NODECOLLAPSED","DISABLE","CHECKBOXWRAP","CHECKBOXFRAME","IMAGE","ITEM_ANIMATION_ACTIVE","PREVENTSELECT","treeAriaAttr","treeRole","FieldsSettings","ActionSettings","NodeAnimationSettings","TreeView","isRefreshed","preventExpand","checkedElement","disableNode","validArr","validNodes","expandChildren","isFieldChange","hasTemplate","isNodeDropped","isRightClick","mouseDownStatus","TreeView_1","checkActionNodes","parentNodeCheck","dragStartAction","csEnter","listBaseOption","beforeNodeCreate","fullRowNavigable","updateListProp","aniObj","treeList","isInitalExpand","setTouchClass","checkedNodes","expandedNodes","setDataBinding","setDisabledMode","setExpandOnType","wireEditingEvents","setDragAndDrop","setFullRow","fullRowSelect","setTextWrap","nodeTemplateFn","nodeTemplate","iconModel","rippleIconFn","setMultiSelect","isNumberTypeId","setRootData","getGroupedData","rootItems","getChildNodes","isChildObject","loadOnDemand","renderChildNodes","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","updateParentCheckState","resultId","mapper_1","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","childItems","updateChildCheckState","checkNodes","preElement","childCheckedElement","nodeCheck","checkedParent","checkedChild","subChildItems","checkboxEle","touchClass","addCheck","frame","frameMouseHandler","createFullRow","addActionClass","renderNodeTemplate","nodeData","selectable","actionValue","iNodes","sNodes","cNodes","disableExpandAttr","eNodes","updateList","updateCheckedProp","ensureIndeterminate","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkBoxEle","parentUL","checkBoxes","parentCheck","childCheck","checkedState","currentLoadData","isNodeChecked","doCheckBoxAction","doCheck","updateFieldChecked","setValidCheckedNode","dynamicCheckState","updateField","validateCheckNode","currLi","getNodeData","updateIndeterminate","updateChildIndeterminate","indeterminateData","getTreeData","subId","childElementCheck","nodeCheckAction","getCheckEvent","ariaState","removeCheck","ensureStateChange","firstUl","updateIdAttr","updateWrap","hasPid","doExpandAction","ulEle","liList","calculateWrap","eUids","expandGivenNodes","eNode","afterFinalized","expandCallback","eUid","doSelectionAction","sUids","sNode","selectGivenNodes","preventContextMenu","rippleIcons","setFocusElement","checkWrapper","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","expandNode","start_1","end_1","liEle_1","activeElement_1","animateHeight","expandedNode","addExpand","getExpandEvent","colArgs","nodeCollapseAction","collapsedNode","removeExpand","toRemove","parentLi","expandChild","eicon","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","nodeLevel","dataLevel","getChildMapper","getChildGroup","objlen","tempField","cIcons","curLi","unselectNode","getSelectEvent","nodeSelectAction","removeSelectAll","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","liEles","icon_1","inpEle","oldText","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","parentPos","isVisibleInViewport","getNextNode","getPrevNode","nodeCheckingAction","allCheckNode","getChildItems","childStateChange","childIsCheck","newCheck","validateCheck","hierChildId","childId_1","toBeOpened","focusNextNode","getEndNode","fNode","prevNode","preNode","hoveredNode","fromDS","pNode","reRenderNodes","editingHandler","oldInpEle","updateOldText","getEditEvent","style_1","renderTextBox","wireInputEvents","editData","editFields","inputFocusOut","txtEle","crudOperation","appendNewText","updateText","getNode","getChildNodeObject","destroyDrag","dragRoot","dragWrap","cloneEle","DRAGITEM","cNode","getDragEvent","draggedNode","dragCancelAction","removeVirtualEle","dropRoot","preventTargetExpand","dragParent","draggedParentNode","dropObj","over","dropAction","dropWrap","isDescendant","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","dragInstance","liArray","appendNode","dropAsChildNode","dropAsSiblingNode","dropUl","dragParentUl","dragParentLi","moveData","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dragIcon","updateChildAriaLevel","sibEle","dragNode","draggedNodeData","newParent","dragLiParent","dropTar","clonedNode","droppedNode","droppedNodeData","dropLevel","addFullRow","toAdd","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","currId","doGivenAction","toExpand","addGivenNodes","dropEle","updateMapper","refNode","dropIcon1","childObj","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","sleNodes","slelen","enodes","nodelen","cnodes","getMapperProp","touchEditObj","isDoubleTapped","proxy_3","touchClickObj","wireExpandOnEvent","proxy_4","touchExpandObj","secondTap","firstTap","setCheckedNodes","uncheckAll","setChildCheckState","isRefreshChild","childValue","updateChildPosition","currID","dynamicState","newNode","matchedArr","nodesID","editSucess","addSuccess","updatePreviousText","getHierarchicalParentId","parentsID","onLoaded","addNodes","disableNodes","enableNodes","ensureVisible","parentsId","behavior","getAllCheckedNodes","getDisabledNodes","moveNodes","sourceNodes","refreshNode","newNodeData","newliEle","newTextEle","newIcon","fullEle","removeNodes","updateNode","NavigationPane","moveNames","expandTree","isPathDragged","isRenameParent","isSameNodeClicked","isNodeExpandCalled","renameParent","previousSelected","isNodeClickCalled","restrictSelecting","shiftF10","BaseTreeView","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","nodeEditing","onNodeEditing","drawNode","onDrowNode","addDragDrop","getDragPath","getDropPath","addChild","directories","_fm_icon","selecEventArgs","expandNodeTarget","onPathDrag","selectResultNode","onNodeExpanded","updateTree","updateTreeNode","onOpenEnd","sleId","updateItemData","updateActionData","selectedNodeEle","onRenameEndParent","onDownLoadInit","onClearPathInit","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","onDragging","dataobj","toolbarItemData","toolbarCreateArgs","toolbarCreateHandler","onClicked","currItems","toolbarClickArgs","getPupupId","gridSpan_1","largeIconSpan_1","layoutBtnObj","tickIcon","viewText","hideStatus","updateSortByButton","propItem","getItemModel","itemTooltip","mergedItems","itemsToProcess","toHide","EJ2FileManager","fileManagerModule","dlgInsert","dlgHeader","dlgButtons","dlgTarget","fileWrap","getInputUrlElement","destroyComponents","selectedFile","urlLabel","FormatPainter","toolbarDoubleClick","clickargs","actionHandler","isKeyboard","updateToolbarBtn","toolbarBtn","formatPainterEditor","TAGNAME","createPrimaryButton","createSecondaryButton","secondaryBtnObj","setAria","btnModel","primaryBtnObj","btnElem","dropDownBtnModel","primaryBtnClickHandler","btnKeyBoardHandler","altdownarrow","TicksData","ColorRangeData","LimitData","TooltipData","Slider","horDir","verDir","transitionOnMaterialTooltip","customAriaText","isDragComplete","initialTooltip","isElementFocused","tickElementCollection","tooltipFormatInfo","ticksFormatInfo","formChecker","formResetValue","formatInfo","makeRoundNumber","elementVal","fractionalToInteger","noOfDecimals","tens","setZindex","sliderContainer","showOn","sliderTrack","getThemeInitialization","setHandler","createRangeBar","limits","createLimitBar","setOrientClass","showButtons","setButtons","rangeValueUpdate","checkHandleValue","previousChanged","setLimitBar","placement","renderScale","renderTooltip","isMaterial","isMaterial3","isBootstrap","isBootstrap4","isTailwind","isBootstrap5","isFluent","isMaterialTooltip","firstElementClassName","limitBarFirst","limitBarSecond","firstHandle","secondHandle","customValues","createSecondHandle","createFirstHandle","materialHandle","wireFirstHandleEvt","transitionEnd","handleOver","handleLeave","wireSecondHandleEvt","handleStart","handlePos1","getHandle","tooltipToggle","handleFocusOut","focusSliderElement","sliderBarClick","sliderBarMove","sliderBarUp","preDir","setBarColor","setTooltipContent","tooltipObj","addTooltipClass","setAriaAttrValue","setPreviousVal","ariaContent","handle1","handleVal1","handle2","handleVal2","oldCss","newCss","getTooltipTransformProperties","previousTooltipClass","tooltipBeforeOpen","setTooltipTransform","tooltipCollision","tooltipOffsetValue","materialTooltipEventCallBack","wireMaterialTooltipEvent","tooltipPositionCalculation","transformProperties","openMaterialTooltip","refreshTooltip","tooltipContentElement","closeMaterialTooltip","tooltipTarget","checkTooltipPosition","tooltipClass","tooltipCollidedPosition","beforeCollision","tooltipBeforeClose","initializeTooltipProps","tooltipShowOn","firstBtn","secondBtn","buttonTitle","enabledRTL","buttonFocusOut","repeatButton","hVal","handleValueUpdate","getLimitCorrectedValues","changeHandleValue","repeatHandlerMouse","buttonClick","repeatInterval","materialChange","focusHandle","repeatHandlerUp","customTickCounter","bigNum","tickCount","orien","smallStep","showSmallTicks","largeStep","islargeTick","largestep","startValue","createTick","formatTicksValue","decimalPoints","ticksAlignment","ticksWrapper","tickElements","scaleAlignment","tickText","tickElement","tickValuePosition","otherChild","ariaValueText","isTickFormatted","valuenow","activeHandle","getLimitValueAndPosition","minStart","minEnd","maxStart","maxEnd","buttonUp","openTooltip","setRangeBar","handlePos2","checkValidValueAndPos","checkHandlePosition","setLimitBarPositions","fromMinPostion","fromMaxpostion","toMinPostion","toMaxpostion","fromPosition","toPosition","limitBar","preHandlePos1","setHandlePosition","validateRangeValue","setRangeValue","modifyZindex","updateRangeValue","preHandlePos2","tempStartEnd","startHandleFixed","endHandleFixed","xyToPosition","stepValueCalculation","percentStep","addition","positionToValue","handlepos","handleVal","behindElement","eventX","eventY","checkRepeatedValue","handleValueAdjust","handleValue","handleNumber","minDiff","dragRangeBarMove","xPostion","yPostion","rangeBarDragged","secondPartRemain","firstPartRemain","valueAndPostion","dragRangeBarUp","wireButtonEvt","sliderFocusOut","rangeBarMousedown","elementClick","onresize","changeSliderType","changeRtl","limitsPropertyChange","setMinMaxValue","setTooltip","trackClassName","colorRange","startingPosition","endPosition","trackContainer","APPLY","CANCEL","CURRENT","CTRLBTN","CTRLSWITCH","FORMATSWITCH","HANDLER","HEX","HIDEHEX","HIDEOPACITY","HIDERGBA","HIDEVALUE","HIDEVALUESWITCH","HSVAREA","HSVCONTAINER","MODESWITCH","NOCOLOR","OPACITY","PALETTES","PALETTECONTENT","PICKERCONTENT","PREVIEW","PREVIOUS","SHOWVALUE","SELECT","SPLITPREVIEW","TILE","presets","ColorPicker","Apply","ModeSwitcher","createWidget","createSplitBtn","enableOpacity","noColor","slicedValue","initialInputValue","tileRipple","ctrlBtnRipple","createPalette","firstPaletteFocus","createPicker","getDragHandler","createCtrlBtn","toggleDisabled","refreshPopupPos","splitBtn","convertToRgbString","getPopupEle","popupInst","getPopupInst","bindCallBackEvent","observeOpenArgs","onPopupClose","destroyOtherComp","presetColors","paletteGroup","appendElement","appendPalette","modeSwitcher","setNoColor","rgbToHsv","roundedColor","presetName","addTileSelection","noColorEle","insertPos","hsvContainer","dragHandler","setHsvContainerBg","setHandlerPosition","createSlider","createDragTooltip","getHsvContainer","hsvToRgb","hsvArea","sliderPreviewWrapper","createPreview","sliderWrapper","slider","hueSlider","hueChange","createOpacitySlider","opacitySlider","opacityChange","opacityBgTrack","updateOpacitySliderBg","opacityEle","convertToOtherFormat","pValue","rgbToHex","updateOpacityInput","updatePreview","opacityTextBoxInst","previewContainer","isPicker","createNumericInput","numericInput","appendValueSwitchBtn","hexInput","appendOpacityValue","valueSwitchBtn","formatSwitchHandler","btnWrapper","controlBtnWrapper","appendModeSwitchBtn","getTooltipInst","setTooltipOffset","convertToHsvString","updateHsv","removeTileSelection","convertRgbToNumberArray","pickerKeyDown","ctrlBtn","ctrlBtnKeyDown","handlerDown","addCtrlSwitchEvent","previewHandler","paletteClickHandler","paletteKeyDown","ctrlSwitchBtn","triggerChangeEvent","handlerDragPosition","observedcloseArgs","prob","setHsv","handlerMove","handlerEnd","switchToPalette","ctrlBtnClick","refreshImageEditorPopupPos","noColorTile","switchToPicker","grpEle","tiles","prevSelectedEle","tilePosition","keySelectionChanges","newEle","emptyCount","inputValueChange","numericElemColl","tooltipInst","bigInt","changeModeSwitcherProp","ctrlSwitchWrapper","changeShowBtnProps","ctrlBtnWrapper","changeValueProp","setInputEleProps","changeDisabledProp","changeCssClassProps","changeRtlProps","changePaletteProps","changeOpacityProps","IsFormatted","getFormattedNode","getFormatParent","isFormattedNode","isUnderline","isStrikethrough","isSuperscript","isSubscript","isFontColor","isFontName","isFontSize","isBackgroundColor","inlineTags","textDecorationLine","AUDIO","VIDEO","TABLE","INSERT_ROW","INSERT_COLUMN","DELETEROW","DELETECOLUMN","REMOVETABLE","TABLEHEADER","TABLE_VERTICAL_ALIGN","TABLE_MERGE","TABLE_VERTICAL_SPLIT","TABLE_HORIZONTAL_SPLIT","ALIGNMENT_TYPE","INDENT_TYPE","DEFAULT_TAG","BLOCK_TAGS","IGNORE_BLOCK_TAGS","TABLE_BLOCK_TAGS","SELECTION_TYPE","INSERTHTML_TYPE","INSERT_TEXT_TYPE","CLEAR_TYPE","SELF_CLOSING_TAGS","PASTE_SOURCE","NodeSelection","startNodeName","endNodeName","saveInstance","cloneRange","documentFromRange","getNodeArray","isChildNode","nodeCollection","getParentNodes","getSelectionNodeCollection","getSelectionNodes","getSelectionNodeCollectionBr","getSelectionNodesBr","getInsertNodeCollection","getInsertNodes","setRangePoint","constant","getSelectedNodes","insertParentNode","surroundContents","statusCollection","subscript","superscript","strikethrough","orderedlist","unorderedlist","alignments","backgroundcolor","fontcolor","fontname","fontsize","createlink","insertcode","ToolbarStatus","formatNode","formatCollection","nodesLength","isNodeChanged","getImmediateBlockNode","isListUpdated","isComplexListUpdated","isOrderedList","isUnorderedList","isAlignment","isFormats","isLink","isNumberFormatList","isBulletFormatList","ToolbarRenderer","tooltipTargetEle","toolbarBeforeCreate","toolbarClicked","dropDownSelected","selectedEles_1","beforeCreate","renderDropDownButton","trow","alignStyle","closestNode","imageEle","fontName_1","formats_1","toolbarStatus","mouseOutHandler","renderListDropDown","inlineEle","listElem","currentLiElem","currentListStyle","currentDropdown","onmousedown","paletteSelection","dropDownArgs","colorbox","renderColorPickerDropDown","colorPicker","initialBackgroundColor","colorpickerValue","setColorPickerContentWidth","pickerRefresh","colorPickerContent","beforeTileRender","colorPickerArgs","beforeModeSwitch","colorCode","toolbarPanel","DropDownButtons","initializeInstance","dropdownContent","renderDropDowns","containerType","tbElement","formatOLItem","numberFormatListDropDown","formatULItem","bulletFormatListDropDown","formatItem","fontItem","getEditNode","renderAlignmentDropDown","renderDisplayDropDown","rowDropDown","columnDropDown","cellDropDown","verticalAlignDropDown","tableStylesDropDown","getUpdateItems","dropDownItems","fontItems","tableRowsDropDown","tableColumnsDropDown","tableCellDropDown","tableCellVerticalAlignDropDown","displayDropDown","imageAlignDropDown","removeDropDownClasses","destroyDropDowns","dropDownObj","ToolbarAction","renderSelection","listStyle","listImage","isToolbar","isTransformChild","toolbarBindEvent","keyBoardModule","toolBarKeyDown","adjustContentHeight","createToolbarElement","tbWrapper","getToolbarMode","tbMode","Scrollable","checkToolbarResponsive","tBarMode","MultiRow","checkIsTransformChild","transformElements","toggleFloatClass","floatOffset","floatingToolbarOffset","iframeEle","showFixedTBar","hideFixedTBar","addTBarItem","prefixId","updateToolbarStatus","hideScreen","popHeight","expandPopup","isToolbarDestroyed","destroyToolbar","toolbarActionModule","focusChangeHandler","dropDownBeforeOpenHandler","tbFocusHandler","activeElm","isToolbaractive","hasActiveClass","Formatter","saveSelection","newRange","isKeyboardVideoInsert","getAncestorNode","commonAncestorContainer","action_1","itemCollection","isTableModule","enterAction","selectType","quickToolbarAction","callbackArgs","undoRedoStack","quickTBarObj","LISTS_COMMAND","selectionCommand","LINK_COMMAND","CLEAR_COMMAND","MD_TABLE","INSERT_TEXT_COMMAND","MDLists","applyListsHandler","tabKey","textArea","getSelectedParentPoints","addedLength","isNotFirst","isNotFirstLine","listFormat","olListType","getListRegex","getAction","prevLine","getLine","prevLineSplit","tabSpace","tabSpaceLength","splitTab","curTabSpace","getTabSpace","prevTabSpace","splitText","changeTextAreaValue","nextOrderedListValue","prevLineSplit_1","prefixValue","curTabSpaceLength","textAreaLength","getAllParents","changedList","prefixNumber","nestedTabSpace","nestedlistorder","nestedListStart","nextPrefixValue","traversIncreased","nextLineLength","lineBreak","nextLine","nextTabSpace","nextLineSplit","shiftTabTargetList","nextPrefix","previousOrderedListValue","tabs","regexFirstCondition","currentLine","replaceSpecialChar","syntax","UL","previousLine","nestedListOrder","olSyntaxList","OL","startLength","endLength","perfixObj","isStartWith","preLineTabSpaceLength","appliedLine","prefixPattern","preTabSpaceLength","lineSplit","currentPrefix","configKey","MDFormats","applyFormats","isAppliedFormat","applyCodeBlock","cleanFormat","clearRegex","removeLength","removeText","parentLines","firstPrevText","lastNextText","getSelectedInlinePoints","startNo","endNo","repStartText","replaceAt","repEndText","lastLine","checkLine","MDSelectionFormats","applyCommands","isMatch","matchText","InlineCode","StrikeThrough","singleCharRegx","multiCharRegx","isAppliedCommand","splitAt","cmdB","cmdI","beforeText","afterText","startCmd","endCmd","isApplied","textReplace","repStart","repEnd","regxB","repText","regxTemp","regTest","MarkdownSelection","getLineNumber","getSelectedLine","selectedPoints","selectedLine","UndoRedoCommands","undoRedoSteps","undoRedoTimer","onAction","changEle","removedContent","MDLink","createLink","MDTable","textAreaInitial","insertTable","textNonEmpty","headingText","insertLine","colText","convertToLetters","dummyElement","lastLineSplit","syntaxArr","getFormatTag","makeSelection","ensureFormatApply","checkValid","syntaxFormatKey","syntaxTag","Formats","syntaxListKey","formatSplitZero","ensureStartValid","firstLineSplit","ensureEndValid","formatSplitLength","updateValueWithFormat","textApplyFormat","baseChar","letters","emptyText","isCursorBased","isSelectionBased","ClearFormat","replaceRegex","clearSelectionTags","selectionTags","expString","startExp","clearFormatTags","clearFormatLines","listTags","MDInsertText","InsertTextExec","MarkdownParser","formatObj","mdSelectionFormats","linkObj","tableObj","clearObj","insertTextObj","editorKeyUp","exeValue","MarkdownFormatter","updateFormatter","MarkdownToolbarStatus","prevToolbarStatus","uppercase","inlinecode","onRefreshHandler","parentsLines","isListsApplied","currentFormat","tbStatusString","codeFormat","cmdPre","isCode","MarkdownRender","MarkdownEditor","toolbarUpdate","onToolbarClick","onSelectionSave","onSelectionRestore","tableConstant","linkDialog","showLinkQuickToolbar","linkQTBar","linkTop","linkLeft","linkPos","hideLinkQuickToolbar","linkWebAddress","linkDisplayText","linkTooltip","urlPlace","textPlace","linkDialogEle","htmlTextbox","linkTitle","selectText","linkInsert","linkCancel","selfLink","checkUrl","linkEle","linkLabel","enableAutoUrl","argsValue","markerClassName","DOMNode","rawAttributes","rawAttr","orderRawAttr","attrKey","attrValue","clearAttributes","openTagString","closeTagString","createTagString","isList","parseHTMLFragment","referenceNode","wrapInner","unWrap","unWrapNode","getSelectedNode","nodeFinds","existNodes","isEditorArea","getRangePoint","getPreviousNode","saveMarker","startTextNode","endTextNode","setMarker","startChildNodes","isTableStart","isImgOnlySelected","finalNode","getLastTextNode","existNode","textNodes","ensureSelfClosingTag","isTable","markerStart","parNode","createTempNode","getImageTagInSelection","collectionNodes","endParentNode","processedNodes","getPreBlockNodeCollection","wrapWithBlockNode","ignoreTableTag","listNodes","rootChildNode","isContinue","processedStart","getClosestInlineParent","processedEnd","rootFlag","Lists","spaceKeyAction","testList","olListRegex","elementStart","testCurrentList","olListStartRegex","currentContent","spaceList","preElemULStart","nextElemULStart","startElementOLTest","preElementOLTest","nextElementOLTest","brElement","enterList","hasMediaElem","videoElemList","embedVideoElem","startNodeParent","parentOfCurrentOLUL","GetSpliceNode","insertTag","backspaceList","parentList","removeList","firstListBackSpace","fullContent","commonLIParent","currentLIElem","currentElem","commonAncestor","startEle","endEle","ignoreDefault","revertList","revertClean","nestedList","cleanNode","prevSibling","noPreviousElement","firstNodeOL","siblingListOL","siblingListLI","siblingListLIFirst","nestedElement","nestedElementLI","firstNodeLI","lastSelectionNode","listsNodes","setSelectionBRConfig","allSelectedNode","currentFormatNodes","previousCurrentNode","postNode","applyLists","startElem","endElem","isRevert","removeEmptyListElements","checkLists","marginLeftAttribute","elemAtt","newTag","replaceHTML","collectionString","nodesTemp","liParents","toFindtopOlUl","contentNodes","findUnSelected","rightIndent","indentElements","childElements","childLI","viewNode","wrapperclass","listStyleImage","childNode","nodeInnerHtml","emptyUl","emptyLi","InsertMethods","WrapBefore","textNode","AppendBefore","Wrap","NodeCutter","setStartBefore","setEndAfter","extractContents","spliceEmptyNode","isRteElm","GetCursorStart","GetCursorRange","cursorRange","TrimLineBreak","GetCursorNode","endCon","pTag","brNode","getBlockParent","startCon","preElem","endPreElem","blockquoteEle","endBlockquoteEle","deleteContent","removeCodeContent","startParent","paraFocus","lastEmpty","lastBeforeBr","isNotEndCursor","referNode","insertMarker","brTag","previousSib","setCursorPosition","markerElem","mrkParentElem","focusSelectionParent","tempSpanPElem","tempSpan","isSelectAll","formatsNodes","cleanFormats","replaceNode","isToggleBlockquoteList","isToggleBlockquote","replaceTag","tagWrap","preFormatMerge","preNodes","ignoreAttr","InsertHtml","Insert","editNode","isExternal","findFirstTextNode","closestParentNode","insertTableInList","pasteInsertHTML","sibNode","lasNode","emptyLI","nestedListCleanUp","removeEmptyElements","imageFocus","paraElem","isSingleNode","currentBlockNode","containsBlockNode","removingComments","allChildNodes","insertTempNode","isFirstTextNode","paraElm","contentsDeleted","firstParaElm","nearestAnchor","immediateBlockNode","startContainerParent","placeCursorEnd","blockNode","liNode","splitedElm","tableElm","elm","findDetachEmptyElem","removableElement","emptyElements","nonSvgEmptyElements","lineWithDiv","detachableElement","trimEnd","LinkCommand","linkCommand","closestAnchor","domSelection","createAchorNode","modifiedText","createLinkNode","txtArray","inlineNodes","anchorNodes","finalinlineNodes","linkNode","containsNode","Alignments","getTableNode","isTableAlign","alignmentNodes","imageTags","elementNode","imgObj","imageCommand","Indents","indentValue","applyIndents","indentsNodes","parentNodes","marginLeftOrRight","indentsValue","CLASS_IMAGE_RIGHT","CLASS_IMAGE_LEFT","CLASS_IMAGE_CENTER","CLASS_IMAGE_BREAK","CLASS_CAPTION","CLASS_CAPTION_INLINE","CLASS_AUDIO_INLINE","CLASS_CLICK_ELEM","CLASS_VIDEO_CLICK_ELEM","CLASS_AUDIO","CLASS_VIDEO","CLASS_AUDIO_WRAP","CLASS_EMBED_VIDEO_WRAP","CLASS_AUDIO_FOCUS","CLASS_VIDEO_FOCUS","CLASS_VIDEO_INLINE","ImageCommand","createImage","insertImageLink","openImageLink","editImageLink","removeImageLink","removeImage","insertAltTextImage","imageDimension","imageJustifyLeft","imageJustifyCenter","imageJustifyRight","imageInline","imageBreak","isReplaced","imgElm_1","imageInstance_1","onImageLoadEvent_1","imgReplace","alignClassName","alignClass","imgClassList","calculateStyleValue","capImgWrap","AudioCommand","audioCommand","createAudio","audioEle","audElement","sourceElement","clickElement","audioElm_1","VideoCommand","videoCommand","videoWrapNode","videoClickElem","createVideo","videoDimension","cssFloat","vidElement","isEmbedUrl","videoEle","videoElm_1","editAreaVideoClick","TableCommand","insertColumn","deleteColumn","tableVerticalAlign","HorizontalSplit","VerticalSplit","tblBody","tdWid","getSelectedCellMinMaxIndex","minI","maxI","minJ","maxJ","selectedCellIndex","getCorrespondingIndex","minMaxIndex","FindIndex","endRow","allCells","getCorrespondingColumns","isHeaderSelect","curRow","allRows","currentTabElm","thTdElm","oldWidth","colTemplate","tBodyHeadEle","deleteIndex","selectedMinMaxIndex","minCol","maxCol","colSpanVal","rowHeadEle","sContainer","startChildLength","rowSpanVal","getMergedRow","focusTrEle","mergedRow","selectedTable","headerExit","colSpanCount","createTHead","deleteTHead","mergeCellContent","minMaxIndexes","getSelectedMinMaxIndexes","firstCell","rowSelectedCells","updateRowSpanStyle","updateColSpanStyle","colMin","eleArray","updateCellAttribute","rowValue","rowMin","correspondingCells","minRow","maxRow","currentRowCol","targetRowCol","newCell","activeCellIndex","activeCellRowSpan","avgCount","avgRowIndex","newTrEle","correspondingColumns","activeCellcolSpan","getColSizes","activeCellUpdatedWidth","getSplitColWidth","newCellWidth","activeCellWidth","endInex","colEle","colspan_1","nextCol","highlightCells","minRowIndex","maxRowIndex","minColIndex","maxColIndex","minMaxValues","MinMax","activeCellTag","targetCellTag","activeRowIndex","activeColumnIndex","targetColumnIndex","activeCellList","activeIndexes","targetIndexes","SelectionCommands","applyFormat","painterValues","isFormatted","currentAnchorNode","emptyTextNode","endNode_1","preventRestore","isFontStyle","currentFormatNode","cursorNode","insertCursorNode","isSubSup","insertFormat","applySelection","cursorNodes","cursorFormat","getCursorFormat","emptySpaceNode","getInsertNode","bgStyle","splitNode","startText","nodeText","isFullNodeSelected","wholeText","nodeTraverse","GetFormatNode","nodeArray","priorityNode","getPriorityFormatNode","applyStyles","formatNodeStyles","formatNodeTagName","fontNodeStyle","conCatenateTextNode","nodeTraverseCondition","currentNodeElem","curParentElem","liChildContent","isNestedList","nestedListCount","isNestedListItem","num_1","num_2","num_3","concatenateTextExcludingList","liElement_1","insertFormatPainterElem","isSameTextContent","nodeList","getChildNode","fontColorNode","backgroundColorNode","fontNameNode","fontSizeNode","formatPainterCleanup","elemList","lastElement","INVALID_TAGS","childELemList","blockChildNodes","currentChild","formatStr","constVal","colorStyle_1","fontSize_1","SelectionBasedExec","InsertHtmlExec","applyHtml","pastedElements","allPastedElements","imgElements","allImgElm","imgElem","defaultTag","lastText","exactNodes","cloneSelectNodes","clearInlines","reSelection","cloneParentNodes","clearBlocks","selectionNodes","endIndexNode","spliceParent","removeParent","NONVALID_TAGS","NONVALID_PARENT_TAGS","IGNORE_PARENT_TAGS","currentInlineNode","removeInlineParent","ClearFormatExec","applyClear","UndoRedoManager","getTextContentFromFragment","isElementStructureEqual","previousFragment","currentFragment","previousFragmentNode","currentFragmentNode","currentContainer","addedContent","MsWordPaste","olData","ulData","ignorableNodes","upperRomanNumber","lowerRomanNumber","lowerGreekNumber","removableElements","listContents","cropImageDimensions","wordCleanup","wordPasteStyleConfig","allowedStylePropertiesArray","tempHTMLContent","rtfData","addDoubleBr","pattern4","findSource","addListClass","listConverter","imageConversion","styleCorrection","removeUnwantedElements","removeEmptyAnchorTag","breakLineAddition","processMargin","removeClassName","addTableBorderClass","newline","COMMENT_NODE","replacableElem","closestListElem","findClosestListElem","allTableElm","hasTableBorder","checkVShape","imgSrc","base64Src","imgName","linkRegex","hexValue","hexConversion","base64Data","convertToBase64","isCroppedImage","goalWidth","goalHeight","cropLength","cropTop","cropR","cropB","byteArr","conHexStringToBytes","conBytesToBase64","base64Str","byteArrLen","array3","array3length","array4","picHead","fullImg","extractCropValue","crop","elmWithClass","allElements","findDetachElem","styleElm","regExpStartElem","regExpEndElem","hasParentWithClass","currentParentElem","styleClassObject_1","findStyleObject","removeUnwantedStyle","filterStyles","resultElem","fromClass","styleProperty","valueSplit","changedValue","olULElems","classStyle","inlineStyle","elmWithStyles","elemStyleProperty","styleValues","styleClassObject","tempStyle","classNameCollection","stylesCollection","prevflagState","tempCleaner","listFormatOverride","stNode","msoListValue","getListContent","startAttr","styleMarginLeft","getlistStyleType","startString","currentClassName","listType","nestedLevel","listStyleTypeName","makeConversion","elemColl","listContent","currentListClass","prevList","pLevel","lfo","isNormalList","initialNode","getNamedItem","pushContent","listIgnoreTag","listOrder","liChildren","tableChildren","ignoredNode","metaNodes","metaNode","insertText","FormatPainterActions","setDeniedFormats","allowedFormats","deniedFormats","copyCollection","deniedFormatsCollection","newElemLastChild","allowedContext","copyAction","pasteAction","escapeAction","generateElement","lastAppendChild","elemCollection","elemChild","removeDeniedFormats","paintPlainTextFormat","insertFormatNode","deniedPropArray","elementsList","classLength","styleLength","attributeLength","findCurrentContext","allowedRulesArray","getRangeParentElem","rangeParentElem","allAttributes","rangeParentELem","nearBlockParentName","getNearestBlockParentElement","isBlockElement","isInValid","validateELementTag","closestParagraph","closestList","clonedElem","newBlockElem","inlineElement","childElem","isListCopied","insertBlockNode","cloneListParentNode","sameListType","cloneElementNode","cloneParentNode","isSameListType","insertSameList","insertNewList","cleanEmptyLists","detachEmptyBlockNodes","nearestListNode","makeDeniedFormatsCollection","openParenIndex","closeParenIndex","openBracketIndex","closeBracketIndex","openBraceIndex","closeBraceIndex","attributesList","stylesList","openIndexArray","EmojiPickerAction","emojiInsert","prevChar_1","beforeApplyFormat","isBlockFormat","range1","blockNewLine","range2","node2","EditorManager","alignmentObj","indentsObj","audioObj","videoObj","inserthtmlObj","msWordPaste","emojiPickerObj","onWordPaste","onBegin","editorMouseDown","tripleClickSelection","startBlockNode","getParentBlockNode","endBlockNode","getFirstTextNode","treeWalker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","FILTER_ACCEPT","FILTER_SKIP","SHOW_TEXT","lastTextNode","HTMLFormatter","HtmlToolbarStatus","textString","IframeContentRender","iFrameContent","contentDocument","setThemeColor","ColorPickerInput","renderColorPickerInput","suffixID","fontNode","fontColorPicker","fontColorDropDown","backNode","backgroundColorPicker","backgroundColorDropDown","defaultColorPicker","colorPickerObj","XhtmlValidation","enableXhtmlValidation","ImageTags","RemoveUnsupported","arrayValue","valueTemp","valueDupe","valueOriginal","imgRegexp","imgNodes","RemoveElementNode","rmvNode","parentArray","rmvArray","underlineEle","strongEle","boldEle","RemoveAttributeByName","attrName","HtmlEditor","isImageDelete","nodeSelectionObj","colorPickerModule","isTableClassAdded","keyboardArgs","fontSizeValue","actualTxtFontValues","size_1","defaultFontValues","convertedSize_1","convertFontSize","fontIndex","fontValues","roundedSize","originalUnit","targetUnit","isEmptyNode","isRootParent","previousLength_1","previousRange","previousLength","currentLength","tempSpanToRemove","currentChildNode","backSpaceCleanup","deleteCleanup","enableTabKey","textCont","spaceLink","currentRange_1","editorValue","orderedList_1","unOrderedList","isUnOrderedList","rangeElement","oldRangeElement","deleteRangeElement","deleteOldRangeElement","ulListStartRegex","isLiElement","isPreviousNotContentEditable","isSelectedPositionNotStart","getRootBlockNode","getRangeLiNode","getRangeElement","isImgWithEmptyBlockNode","getCaretIndex","preCaretRange","rangeBlockNode","rangeLiNode","httpRegex","wwwRegex","enterSplitText","contentInnerElem","contentWithSpace","spaceBetweenContent","spaceSplit","splitTextContent","resultSplitContent","urlText","urlTextRange","imageDialog","clickTimeout","formatterClass","BaseQuickToolbar","popupRenderer","dropDownButtons","appendPopupContent","popupType","stringItems","targetOffsetTop","imgWrapper","isAligned","targetOffsetLeft","parentOffsetTop","editTop","tBarElementHeight","editHeight","popWidth","viewPort","contentTop","windowY","bodyRightSpace","beforeQuickToolbarArgs","editPanelTop","editPanelHeight","bodyStyle","bodyRight","toolbarAvail","expTBHeight","tBarHeight","showPopupData","viewSourcePanel","dataContent","removeEleFromDOM","removeQTBarItem","PopupRenderer","quickToolbarOpen","popupPanel","QuickToolbar","debounceTimeout","formattedItems","getQTBarOptions","popType","renderType","qTBar","initializeQuickToolbars","selectionChangeHandler","keyUpQT","renderQuickToolbars","audioQTBar","videoQTBar","LinkToolbar","TextToolbar","AudioToolbar","VideoToolbar","TableToolbar","renderInlineQuickToolbar","InlineToolbar","deBounce","deBouncer","isEmbedVidElem","preventHide","inlineQTBarMouseDownHandler","onSelectionChange","wireInlineQTBarEvents","unWireInlineQTBarEvents","baseQTObj","baseQuickToolbarObj","appendCount","charCountBackground","htmlLength","FLOATINPUT","TOPLABEL","BOTTOMLABEL","regularExpressions","splitMask","splitInnerMask","pushIntoRegExpCollec","chkSpace","customRegExpCollec","promptChar","escapeMaskValue","promptMask","customCharacters","escapeNumber","applyMask","setMaskValue","maskInputKeyDownHandler","maskInputKeyPressHandler","maskInputKeyUpHandler","maskInputFocusHandler","maskInputBlurHandler","maskInputPasteHandler","maskInputCutHandler","maskInputDropHandler","maskInputMouseDownHandler","maskInputMouseUpHandler","redoCollec","triggerMaskChangeEvent","initInputValue","unstrippedValue","strippedValue","maskValues","checkMask","maskValue","_callPasteHandler","regExpCollec","isClicked","modelValue","toAllowForward","toAllowBackward","maskedValue","triggerFocus","backSelectionStart","sIndex_1","eIndex_1","oldValue_1","maskKeyPress","preValue_1","sIndex_2","undoCollec","removeMaskInputValues","addedValues","preEleVal","collec","mobileRemoveFunction","autoFillMaskInputValues","oldEventVal","isDeleted","initStartIndex","initEndIndex","curMask","deleteEndIndex","multipleDel","prompt_1","isIosInvalid","removeMaskError","val_1","startIndex_1","preventUnsupportedValues","temp_1","mobileSwipeCheck","mobileValidation","eventOldVal","allowText","prevSupport","isEqualVal","customValArr","applySupportedValues","addMaskErrorClass","changeToLowerUpperCase","sIdx","chkSupport","curVal","caseCount","MASKINPUT_FOCUS","MaskedTextBox","maskOptions","resetMaskedTextBox","setMaskPlaceholder","getValidClassList","maskClassName","maskStyle","setVal","dynamicPlaceholder","strippedValue_1","strippedVal","getMaskedValue","TreeVirtualRowModelGenerator","getDatas","getDataInfo","VirtualTreeContentRenderer","maxiPage","preTranslate","isRemoteExpand","virtualOtherAction","setTop","nextSetResIndex","observes","scrollListeners","onEnteredAction","dataBoundEvent","rowSelectedEvent","toSelectVirtualRow","virtualEditSuccess","resetIseditValue","toSelectRowOnContextOpen","cellFocus","TreeInterSectionObserver","withInRange","restoreEditState","restoreNewRow","upScroll","outBuffer","downScroll","lastInx","remains","rowPt","firsttdinx","isLastBlock","previousInfo","isWheeling","virtualScrollHandlers","movableContainer","scrollbar","prevstartIndex","prevendIndex","TreeVirtual","returnVisualData","collapseExpandVirtualchilds","virtualPageAction","expandCollapseRec","pageingDetails","counts","modifiedStartIndex","resourceCount","instantiateRenderers","GridVirtualScroll","GridFilter","isHierarchyFilter","flatFilteredData","filteredParentRecs","updatedFilteredRecord","clearFilterLevel","dataDetails","addParentRecord","ischild","checkChildExsist","parRecord","updateParentFilteredRecord","updateFilterLevel","uniqueIDValue","fLevel","GridSort","flatSortedData","createdSortedRecords","sortParams","iterateSort","childSort","GridPage","collapseExpandPagedchilds","pageAction","primaryKeyField_1","pageRoot","pagedResults","newResults","updatePageSize","gridPagerModule","propname","dm_1","parents_1","GridAggregate","flatChildRecords","childRecordsLength","findParentRecords","flatRecords","summaryLength","getChildRecordsLength","summaryRowIndex","idx_1","createSummaryItem","summaryParent","summary","displayColumn","summaryColumn","getFormatFromType","summaryKey","sumData","summaryformat","GridResize","GridReorder","getTreeColumn","treeIndex","updatedCols","isDraggedWithChild","hasDropItem","isaddtoBottom","GridDragDrop","getChildrecordsByParentID","Rowdraging","dropRows","orderToIndex","totalRecord","parentrow","selectedItemIndex","selectedRecord","eventTrigger","dragRecords","draggedRecord_1","dragRecords_1","deleteDragRow","refreshGridDataSource","tempDataSource","removeFirstrowBorder","removeLastrowBorder","updateIcon","addFirstrowBorder","addLastRowborder","multiplegrid","errorVal","spanContent","dropItemSpan","dropItemLeft","spanLeft","errorValue","docElem","ensuredropPosition","dragDropGrid","srcControlFlatData","isByMethod","draggedRecord_2","isMultipleGrid","dragLength","correctIndex","newParentIndex","recordIndex1","dropAtTop","getChildCount","updateChildRecordLevel","updateChildRecord","dropMiddle","nonRepeat_1","recordLevel","childItem","deletedRow","removeRecords","flatParentData","removeChildItem","idz","deletedRecordCount","updateModifiedRecords","indentEle","outdentEle","selectedrow","taskFieldColumn","customFieldColumn","updatedAddFields","dialogEditValidationFlag","isValidData","isResourceTabUpdated","getPredecessorType","editedRecord","booleanedit","dropdownedit","datepickeredit","datetimepickeredit","maskededit","numericedit","stringedit","defaultedit","editDialogFields","getDefaultDialogFields","validateDialogFields","addDialogFields","dialogFields","newDialogFields","emptyCustomColumn","getGeneralColumnFields","getCustomColumnFields","composeAddRecord","isFromAddDialog","getMinimumStartDate","getNewTaskId","selectedRowId","numericOrString","isFromEditDialog","dialogMaxWidth","generalTabElement","tabObj","createTab","CustomformObj","storeValidTab","storeDependencyTab","firstOccuringTab","dependencyTab","storeResourceTab","resourceTab","initiateDialogSave","resetValues","destroyDialogInnerElements","tabModel","destroyCustomField","controlObj","getEditFields","tabElement","dialogSettings","dialogField","tabItem","getFieldsModel","getSegmentsModel","getPredecessorModel","getResourcesModel","getNotesModel","renderTabItems","tabSelectedEvent","actionCompleteArgs","changeFormObj","actionCompleteArg","isCustomTab","storeColumn","getFilteredDialogFields","typeOrder","typeA","typeB","validateColumn","firstFieldType","customFieldColumns","taskFieldColumns","validationRulesArray","customColumn","taskColumn","columnValue","existingTooltip","tooltipContainer","labelId","tooltipLabel","errorMessageElement","responsiveTabContent","resourceSelection","dialogContentHeight","toolbar_1","fieldsModel","createInputModel","checkboxModel","validateScheduleFields","numeric","dateTimePickerObj","dropDownListObj","targetId","strViewType","validateSegmentFields","validateScheduleValuesByCurrentField","updateScheduleFields","ganttField","ganttId","taskField","picker","validateDuration","validateStartDate","validateEndDate","segmentInputModel","generalTabString","datePickerModel","columnFields","inputTextModel","getGridColumnByField","updateSegmentField","selectedSegment","inputModel","createFormElement","renderGeneralTab","renderPredecessorTab","renderResourceTab","renderCustomTab","renderNotesTab","renderSegmentsTab","segmentGridActionBegin","getDialogTabIndex","tabName","preData","allProperty","toolbarCollection","columnCollection","additionalParams","GridToolbar","addFields","itemModel","renderInputElements","templateFields","scriptElement","templateContent","isCheckIsDisabled","stringOrNumber","isParentValid","dependencyColumn","taskNameCollection","predecessorEditCollection","updatePredecessorDropDownData","gridActionBegin","idCollection","idInput","isEdit_1","preTableCollection","gridData_1","updateResourceCollection","resourceTreeGridId","resourceTreeGrid","tempRecords","rowResource","rowResourceLength","resourceDataLength","TreeGridFilter","TreeGridSort","TreeGridPage","TreeGridEdit","TreeGridAggregate","TreeGridResize","TreeGridReorder","TreeGridRowDD","toolbars","TreeGridToolbar","resourceColumn","RTEToolbar","notesColumn","preTaskIds","currentFlatData","tempObject","preDataCollection","validSuccessorTasks","fromId_1","idIndex","typeText","rowItems_1","updateGeneralTab","updatePredecessorTab","updateNotesTab","updateResourceTab","updateCustomTab","updateSegmentsData","disableUndo","newRecords","parentRecordIndex","updateSegmentTaskData","segmentForm","generalForm","tasksData","updateScheduleProperties","validateUpdateValues","fromRecord","toRecord","newValues","resourceElement","idArray","notesElement","customElement","FLOATLINE","FLOATTEXT","LABELTOP","LABELBOTTOM","createFloatLabel","overAllWrapper","searchWrapper","encodePlaceholder","updateFloatLabelState","CSSOverFlow","HIDE_LIST","CHIP","CHIP_CLOSE","CHIP_SELECTED","DELIMITER_VIEW_WRAPPER","ZERO_SIZE","CLOSEICON_CLASS","DELIMITER_WRAPPER","RTL_CLASS","CLOSE_ICON_HIDE","DISABLE_ICON","dropdownIcon","TOTAL_COUNT_WRAPPER","CUSTOM_WIDTH","FILTERINPUT","MultiSelect","clearIconWidth","previousFilterText","selectAllEventData","selectAllEventEle","resetMainList","resetFilteredData","preventSetCurrentData","scrollFocusStatus","keyDownStatus","enableGroupCheckBox","enableSelectionOrder","hideSelectedItem","closePopupOnSelect","updateHTMLAttribute","refreshPlaceHolder","updateReadonly","overAllClear","componentWrapper","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","updateListItems","mainList","showDropDownIcon","updateAriaActiveDescendant","isFirstClick","loadTemplate","showSelectAll","updateVirtualReOrderList","getForQuery","selectedListData","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","addListFocus","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","removelastSelection","chipCollectionWrapper","removeValue","removeChipSelection","updateDelimeter","delimiterChar","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","removeSelectedChip","targetInputElement","presentItemValue","addNonPresentItems","updateActionList","isCustomRendered","checkForCustomValue","remoteCustomValue","mainData","mainListCollection","tempQuery","unwireListEvents","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","changeOnBlur","updateValueState","hideGroupItem","checkMaxSelection","element1","groupItemLength","searchCount","searchActiveCount","maximumSelectionLength","openClick","expandTextbox","showOverAllClear","remoteFilterAction","dataUpdater","virtualFilterQuery","backCommand","dataChecks","dataItem_1","emptyObject_1","virtualCustomData","virtualCustomSelectData","tempCount","isRemoteSelection","wrapperClick","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","removeChipFocus","refreshInputHight","floatLabelBlur","downIconWidth","setPlaceholderSize","initStatus","updateTempValue","previousFocusItem","focusInHandler","showDelimWrapper","viewWrapper","floatLabelFocus","delimiterWrapper","hideDelimWrapper","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","arrowDown","arrowUp","selectByKey","spaceKeySelection","keyNavigation","checkBackCommand","moveByList","focuseElem","focusFirstListItem","li_1","moveBy","selectListByKey","hideOverAllClear","selectAllItem","selectAllCheckBox","selectedElem","addChipSelection","currentChip","moveByTop","filterInputClassName","currentFocuedListElement","updateCheck","chipClick","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","indexOfObjectInArray","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","removeIndex","currentText","hideElement","currentValue_2","removeChip","targetEle_1","isSelectAllTarget","clearAllCallback","totalItemsCount","element2","addValue","getOverflowVal","updateWrapperText","textValues","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","chipClose","multiCompiler","multiselectTemplate","encodeHtmlEntities","chip","chipContent","mouseIn","mouseOut","fieldProperty","listCurrentOptions","overAllHeight","selectAllHeight","checkboxFilterInput","onListMouseDown","selectAllItems","delim","hiddenElementContent","valueItem","listValue","isChipRemove","addValidInputClass","textArr","isInitialVirtualData","removeListSelection","isCustomData","indexItem","noDataEle","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","mainlist","addListHover","delimChar","visibleListElements","groupValues","findGroupAttrtibutes","updateCheckBox","unChecked","checkBoxElement","wrapperType","wrapperData","wrapperleng","overAllContainer","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","raminElement","remainCompildTemp","remainSize","checkClearIconWidth","updateRemainTemplate","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","beforeSelectArgs","preventSelectEvent","updatedataValueItems","updateHiddenElement","virtualTrackElement","virtualContentElement","hiddenValue","wrapperText","isRemoveAll","onLoadSelect","updateVal","dropDownIcon","reInitializePoup","msProps","checkvalue","typedValue","mainLiLength","liLength","updatevirtualizationList","SEARCHBOX_WRAPPER","DELIMITER_VIEW","checkInitialValue","optionsElement","valueCol","textCol","optionsLen","listItems_2","checkAutoFocus","placeholderText","placeholderElement","CheckBoxSelection","activeLi","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","checkAllParent","selectAllSpan","checkboxWrapper","boundPreventListSelection","preventListSelection","unSelect","selectAllText","unSelectAllText","activeLiCount","ulEle_1","ConnectorLineEdit","validationPredecessor","confirmPredecessorDialog","initPredecessorValidationDialog","getConnectorLineHoverElement","highlightConnectorLineElements","isOnLine","isArrow","isCriticalLine","isCriticalArrow","connectorLineElement","removeHighlight","addHighlight","criticalElement","getEditedConnectorLineString","lineArray","editedConnectorLineString","lineString","idFromPredecessor","preArray","preIdArray","predecessorValidation","visitedIdArray","currentIdArray","predecessorIdArray","checkParentRelation","tempIdArray","checkArray","countFlag","currentIdIndex","state_3","state_2","tempPredecessorString","editingData","state_4","renderValidationDialog","validationDialog","validationDialogClose","validationDialogOkButton","validationDialogCancelButton","currentArgs","validateMode","applyPredecessorOption","updateEditedTask","editEventArgs","connectedTaskId_1","taskId_1","processPredecessors","removePredecessors","prevPredecessor","validPredecessor_1","isNegativeOffset","preIndex","parentPreIndex","validPredecessor_2","preLength","parentPredecessor","openValidationDialog","contentTemplate","validationDialogTemplate","topContentText","contentdiv","parenttaskData","violationType","recordName","recordNewStartDate","recordArgs","topContent","innerTable","validateTypes","violatedParent","ganttTaskData","violateType","addRemovePredecessor","newPredecessor","prevPredecessor_1","_loop_7","removePredecessorByIndex","confirmOkDeleteButton","confirmCloseDialog","confirmDialog","isFromDeleteMethod","targetedRecords","isNewRecordAdded","isValidatedEditedRecord","createArray","updateParentRecords","taskbarMoved","predecessorUpdated","isBreakLoop","renderDeleteConfirmDialog","updateDefaultColumnEditors","customEditorColumns","updateIDColumnEditParams","updateProgessColumnEditParams","updateResourceColumnEditor","updateTaskTypeColumnEditor","editParam","updateEditParams","getResourceEditor","editObject","getTaskTypeEditor","ganttPropByMapping","getSwapKey","scheduleFieldNames","isScheduleValueUpdated","ganttPropKey","totDuration","sdate","edate","validateScheduleValues","validateScheduleByTwoValues","isTaskbarMoved","isMoved","prevDuration","prevDurationUnit","isPredecessorUpdated","isCheckPredecessor","isValidatePredecessor","updateGanttProperties","childRecordIndex","validateTaskEvent","editedEventArgs","resetValidateArgs","updateParentChildRecord","updateParentItemOnEditing","milesStoneCount","resetEditProperties","isRefreshChart","isRefreshGrid","prevTask","copyTaskData","existing","updateScheduleDatesOnEditing","modifiedTaskData","currentBaselineStart","currentBaselineEnd","currentProgress","dataAdaptor","saveSuccess","eLength","_aLength","updateSharedTask","updateResoures","isTreeGridRefresh","prevResource","currentResource","prevResourceID","addNewRecord","record1","prevLength","taskID","removeChildRecord","checkWithUnassignedTask","unassignTaskObj","beforeEditStatus","cAddedRecord","addRecordAsBottom","updateTreeGridUniqueID","addRecordAsChild","deleteChildRecords","uniqueIDIndex","deleteRecordIDs","removeFromDataSource","flatRecordIndex","spliceIndex","deletedIndexes","draggedParent","saveFailed","confirmDeleteOkButton","closeConfirmDialog","deleteSelectedItems","deleteResourceRecords","resourceParent","getCellSelectedRecords","variableType","updateTargetedRecords","taskDetailArray","rowItems","deleteItems","filteredRecord","canDeletePredecessor","removePredecessorOnDelete","delereArgs","deletedRecordCollection","updatedRecordCollection","initiateDeleteAction","toRecordPredcessor","updatePredecessorValues","fromRecordPredcessor","predcessorArray","cId","nId","thisRecord","currentGanttRecord","updatePredecessorOnUpdateId","dataCollection","modifiedRecord","updatedData_1","deleteCrud","flatIndex","treeGridParentIndex","refreshRecordInImmutableMode","updateUnAssignedResources_1","isDuplicate","newTaskId","prepareNewlyAddedData","newTaskIDmd","taskModel","updateNewlyAddedDataBeforeAjax","pIndex","backUpAndPushNewlyAddedRecord","addRowSelectedItem","getVisibleChildRecordCount","updatePredecessorOnIndentOutdent","parentRecordTaskData","predecessorCollections","prdcList","temppredecessorCollection","predecessorToString","tem","currentItemIndex","updatedCollectionIndex","recordCollectionUpdate","newlyAddedRecordBackup","taskString","constructTaskAddedEventArgs","newTaskData","uniqueTaskID","originalIndex","updateRealDataSource","addDataInRealDataSource","updateClientDataFromServer","serverReturnedValue","tempTaskID","cAddedRecord_1","validateTaskPosition","addData","addIndex","removeAddedRecord","_resetProperties","data_2","updatedData_2","prevID","idsIndex","updateNewRecord","data_3","canDelete","refreshNewlyAddedRecord","tempArray_1","addedRec","createNewRecord","tempRecord","taskSettingsFields","AddRecord","flatRecordsIndex","currentViewDataIndex","getPrevRecordIndex","prevRecord","indentOutdentRow","thisParent","actionArg","reArrangeRows","draggedRec","droppedRec","dLength","refreshRecord","queryValue","indentSuccess","indentFailure","indentOutdentSuccess","rowPos","dragRecord","delRow","updateIndentedChildRecords","indentedRecord","createParentItem","levl","currentRec","flatParent","gridIndx","recordIdx","isSelectionFromChart","multipleIndexes","addRemoveClass","isContains","isPreventFocus","ganttRow","selectedIndexes_1","cellSelectedRecords","highlightSelectedRows","fromChart","getselectedrowsIndex","$popUpElemet","propertyChanged","searchLocalText","NavToolbar","cancelItem","getSearchBarElement","textbox","searchIndex","adaptiveSearchbar","previousGanttRecord","toolbarDefaultItems","isResouceParent","isDeleteSelected","NonWorkingDay","weekendWidthUpdated","nonworkingContainer","createNonworkingContainer","getHolidaysElement","fromDate","viewportHeight","holidayDiv","getWeekendElements","nonWorkingIndex","weekendDiv","updateHolidayLabelHeight","gantttable","updateContainerHeight","removeContainers","getEventMarkersElements","removeContainer","eventMarkerElement","eventMarkerCollection","DayMarkers","eventMarkerRender","refreshMarkers","updateHeight","GridColumnMenu","TreeGridColumnMenu","updateCustomFilters","initiateFiltering","getCustomFilterUi","filterUI","getDurationFilter","getDateTimePickerFilter","getDatePickerFilter","dropDateInstance","filterDateUI","flValInput","filterDateTimeUI","textBoxInstance","durationObj","intVal","dayVal","datePickerElement","dateTimePickerElement","updateFilterMenuPosition","filterValues","instanceObj","parentNodeTop","parentNodeLeft","gridPosTop","gridPosLeft","HTMLDocument","TreeGrdSort","toolbarOptions","UXGanttDiagram","GanttDiagram","HorizontalLineComponent","ImageComponent","TextAlign","XLabel","cssOverflow","NumberFieldComponent","_inheritsLoose","isAbsolute","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","valueEqual","aValue","isProduction","invariant","provided","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","hashIndex","decodeURI","URIError","resolvePathname","createTransitionManager","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","getConfirmation","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props$forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","allKeys","go","revertPop","initialLocation","createHref","checkDOMListeners","isBlocked","nextKeys","goBack","goForward","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","locationsAreEqual$$1","allPaths","baseTag","pushHashPath","nextPaths","clamp","lowerBound","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","changedBits","createEventEmitter","_proto","objectIs","_Component2","onUpdate","_proto2","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","Lifecycle","onMount","onUnmount","cacheLimit","cacheCount","compilePath","computedMatch","_ref$push","locationsAreEqual","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options$exact","_options$strict","_options$sensitive","pathCache","compilePath$1","_compilePath","Route","context$1","isEmptyChildren","createURL","staticHandler","Switch","useParams","ReactRenderer","jsCode","errorMessages","errorInfo","compiledComponent","compileFunction","unathorized_variables","ModernDataTable","componentNames","_Function","XReactComponent","RowComponent","visibleChildren","UXField","XSubtitle","TextFieldComponent","TimePickerComponent","XTitle","UserSelectorComponent","SearchableComboBoxComponent","Disabled","Readonly","Required","DataSourceItems","Visible","GetAsFluentUi","curry","curried","nextArgs","initialIsRequired","initialType","initialContent","handlerType","handlersType","selectorType","changeType","changeField","validators","_handler","extractChanges","causedChanges","didStateUpdate","_handler$field","didUpdate","getChanges","fns","reduceRight","vs","configIsRequired","configType","deprecation","urls","monacoBase","CANCELATION_MESSAGE","hasCanceled_","wrappedPromise","_state$create2","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","config$1","monaco","injectScripts","getMonacoLoaderScript","configureLoader","loaderScript","createScript","storeMonacoInstance","wrapperPromise","loader","globalConfig","_validators$config","makeCancelable","__getMonacoInstance","loadingStyles","MonacoContainer","isEditorReady","wrapperProps","Loading","MonacoContainer$1","applyChanges","isInitialMount","getOrCreateModel","createModelUri","createModel","Uri","DiffEditor","originalLanguage","modifiedLanguage","originalModelPath","modifiedModelPath","keepCurrentOriginalModel","keepCurrentModifiedModel","setIsEditorReady","isMonacoMounting","setIsMonacoMounting","editorRef","monacoRef","containerRef","onMountRef","beforeMountRef","useMount","_models$original","_models$modified","disposeEditor","useUpdate","modifiedEditor","getModifiedEditor","getOption","EditorOption","executeEdits","getFullModelRange","forceMoveMarkers","pushUndoStop","_editorRef$current$ge","setModelLanguage","setModels","originalModel","modifiedModel","createEditor","createDiffEditor","automaticLayout","viewStates","Editor","defaultLanguage","defaultPath","overrideServices","saveViewState","keepCurrentModel","subscriptionRef","preventCreation","_subscriptionRef$curr2","_editorRef$current$ge2","restoreViewState","revealLine","autoCreatedModelPath","defaultModel","_subscriptionRef$curr","_editorRef$current","onDidChangeModelContent","changeMarkersListener","onDidChangeMarkers","uris","editorUri","getModelMarkers","CodeEditor","codeLens","minimap","scrollBeyondLastLine","acceptSuggestionOnEnter","autoClosingBrackets","inlineSuggest","UnknownComponent","showErrorDetails","setShowErrorDetails","MAX_COLOR_SATURATION","MAX_COLOR_VALUE","MAX_COLOR_RGB","MAX_COLOR_ALPHA","HEX_REGEX","RGBA_REGEX","hsv2rgb","_rgbToPaddedHex","getFullColorString","hsv2hex","_rgbaOrHexString","updateSV","ColorRectangleBase","_isAdjustingSaturation","_updateColor","_disposeListeners","newColor","_getNewColor","_onTouchMove","ariaValueFormat","thumb","oldColor","prevColor","lastTouch","sPercentage","vPercentage","ColorRectangle","ColorSliderBase","_maxValue","currentPercentage","overlayColor","overlayStyle","sliderOverlay","sliderThumb","hueStyle","alphaStyle","ColorSlider","useAlphaBackground","cssColor","easyColor","_rgba","_hex6","_hex3","hasAlpha","expectedPartCount","hsl2hsv","hsl2rgb","_hsla","eComputedStyle","computedColor","_browserCompute","getColorFromRGBA","rgb2hsv","getColorFromString","inputColor","updateA","updateT","allColorComponents","errorKeys","ColorPickerBase","_onSVChanged","_onHChanged","updateH","_onATChanged","alphaType","editingColor","isTransparency","correctRGB","_getColorFromProps","_textChangeHandlers","allColorComponents_1","_onTextChange","defaultStrings","_textLabels","redLabel","greenLabel","blueLabel","alphaLabel","hexLabel","transparency","_strings","alphaAriaLabel","transparencyAriaLabel","textLabels","alphaSliderHidden","useTransparency","colorComponents","atValue","atLabel","selectedColorAriaParts","rootAriaLabelFormat","svAriaLabel","svAriaDescription","svAriaValueFormat","colorRectangle","flexSlider","hueAriaLabel","showPreview","flexPreviewBox","colorSquare","tableHexCell","tableAlphaCell","_getTooltipValue","hexError","alphaError","transparencyError","redError","greenError","blueError","_CForm_args","_CForm_fields","_CForm_controls","_CForm_rows","_CForm_disableUpdateCallback","_CForm_readonly","_CForm_onInitEvent","_CForm_onValuesChangedEvent","_CForm_subscribers","_CForm_onBeforeSave","_CForm_onSaved","_CForm_onSavingError","_CForm_values","_CForm_onLoadPageDataArgs","_CForm_insertAsync","_CForm_updateAsync","_CForm_saveFiles","_CForm_initializeComponent","_CForm_onInit","ColorSelectorComponent","setShow","_standarComponents","_customComponents","_projectComponents","registerComponent","caseFileSelector","searchableComboBox","horizontalLine","card","documentUploader","reactComponent","calculatedField","ganttDiagram","colorSelector","ComponentSource","devMode","formValues","insertV2FormDataAsync","updateV2FormDataAsync","fileFields","fileField","startUploadAsync","serializeValues","processFields","onValuesChanged","showSaveConfirmationDialog","saveConfirmationDialogMessage","saveConfirmationDialogTitle","setInitialValues","formLayout","useDataTablePage","keyFieldId","____itemId","permissions","dataGridPercentageFieldId","dataGridDetailsFieldPrefix","dataGridDetailsFieldId","_loop2","nameOrId","subscriber","removeKeys","updateV1FormDataAsync","insertV1FormDataAsync","_TramitexApi_props","XPermission","TramitexApi","_getAgeRangesAsync","getAgeRangesAsync","_getCompanyTypesAsync","getCompanyTypesAsync","_getContactTypesAsync","getContactTypesAsync","_getDisabilitiesAsync","getDisabilitiesAsync","_getEducationLevelsAsync","getEducationLevelsAsync","_getEthnicGroupsAsync","getEthnicGroupsAsync","_getGendersAsync","getGendersAsync","_getIdentificationTypesAsync","getIdentificationTypesAsync","_getPreferentialTreatmentsAsync","getPreferentialTreatmentsAsync","_getProfessionsAsync","getProfessionsAsync","_getOrientationSectorsAsync","getOrientationSectorsAsync","_getProceduresAsync","getProceduresAsync","TramitexProvider","apis","HashRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","innerRef","isModifiedEvent","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","ariaCurrent","_ref$ariaCurrent","activeClassName","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","escapedPath","classnames","joinClassnames","_sede","AllowedExtensions","B2C","ClientId","IsEnabled","Scopes","Domain","EnableContactProfession","EnableContactRequesterType","FechaConsultaSolicitudes","InformacionSolicitudAnonima","IsAffiliatedEntitiesEnabled","IsAnonymousRequestsEnabled","IsDocumentVerificationEnabled","LeyHabeasData","MaxFileSize","MensajeErrorCrearSolicitud","PoliticaPrivacidad","PoliticaTratamientoDatosPersonales","ProcesoxUrl","EnabledSubjectDescription","EnableCommentsField","SubjectMaxLength","Tramites","ReCaptchaSiteKey","InformacionSolicitudAutenticado","EnableRiskField","SubjectRiskField","ConfirmMessage","ToolTipFieldWord","ToolTipFieldType","ShowSectionField","NameSectionField","TextInformation","DownloadDocumentsTextInformacion","currentContact","server","hostname","readSession","writeSession","Sede","_jsxs","_jsx","_Sede$shared$context","authProvider","showEntidadesAdscritas","showVerificarDocumentos","showSolicitudesAnonimas","isAuthenticate","showAnonymous","customButtons","_x$Props","Props","ShowButtonInWeb","MainButton","Nombre","Descripcion","IdTramite","_Fragment","_authProvider$current","signOut","BaseService","serviceUrl","_useLoader","showLoader","logStyle","$_","appId","aadHttpClientFactory","_getAddClient","_getHttpClient","_httpClientOptions","_isAad","credentials","_getClient","getAddClient","getHttpClient","aadGet","_aadGet","isAbsoluteUrl","_url","getClient","_getHttpClientOptions","_url2","_url3","_aadPost","_args13","_url4","_args15","_options2","_url5","_args17","_options3","_url6","_options4","_url7","_aadFormData","_ref10","_options5","AadHttpClient","configurations","_x32","_x33","_x30","_x31","_shpGet","_ref11","spHttpClient","_x35","_x36","_x34","fileToBase64","showConfirmation","confirmationDialog","successToast","errorDialog","showWarnToast","isO365","nombre","cssStyles","headerImage","enablePoxta","svc","const","DescripcionDocumental","OtroTipoAnexo","MimeTypes","Word2007AndAbove","Exce2007AndAbove","PPTX2007AndAbove","Png","Gif","Bmp","Webp","Svg","Midi","Mpeg","Wav","Webm","Ogg","OrigenDocumentoEscritorio","OrigenDocumentoScanner","OrigenDocumentoStrings","TipoDocumentoStrings","TipoIdentificacion","Nit","TiposFirmaComunicadoInterno","Electronica","Digital","Manuscrita","deleteButton","editButton","exportButton","exportExcel","service","downloadService","newButton","bulkLoad","downloadTemplate","editHref","downloadBlob","downloadExcel","downloadPdf","_downloadService","_blob","_x37","_x38","_x39","downloadServiceExcel","_downloadServiceExcel","_blob2","_x40","_x41","truncate","_routes_","BANDEJA_ENTRADA","PERFILES","CREAR_PERFIL","EDITAR_PERFIL","USUARIOS","CREAR_USUARIO","EDITAR_USUARIO","USUARIOS_ASOCIADOS_SECCION","CREAR_ASOCIACION_USUARIO_SECCION","CONSECUTIVOS","CREAR_CONSECUTIVO","EDITAR_CONSECUTIVO","CATEGORIAS_METADATOS","CREAR_CATEGORIA_METADATO","EDITAR_CATEGORIA_METADATO","FONDOS","CREAR_FONDO","EDITAR_FONDO","SUCURSALES","CREAR_SUCURSAL","EDITAR_SUCURSAL","SECCIONES","CREAR_SECCION","EDITAR_SECCION","SERIES","CREAR_SERIE","EDITAR_SERIE","SUBSERIES","CREAR_SUBSERIE","EDITAR_SUBSERIE","TIPOS_DOCUMENTALES","CREAR_TIPO_DOCUMENTAL","EDITAR_TIPO_DOCUMENTAL","CARPETAS","CREAR_CARPETA","EDITAR_CARPETA","TABLAS_RETENCION_DOCUMENTAL","CREAR_TABLA_RETENCION_DOCUMENTAL_PRINCIPAL","EDITAR_TABLA_RETENCION_DOCUMENTAL_PRINCIPAL","VER_TABLA_RETENCION_DOCUMENTAL_HISTORICA","REPORTES_POWER_BI","REDIRECT","GESTIONAR_BANDEJA","TIPOS_PARAMETROS","CREAR_TIPO_PARAMETRO","EDITAR_TIPO_PARAMETRO","PARAMETROS","CREAR_PARAMETRO","EDITAR_PARAMETRO","LIBRERIAS","EXTENSION_RUNTIME","ZONAS","CREAR_ZONA","EDITAR_ZONA","MEDIOS_ENVIO","CREAR_MEDIO_ENVIO","EDITAR_MEDIO_ENVIO","MOTIVOS_DEVOLUCION","CREAR_MOTIVO_DEVOLUCION","EDITAR_MOTIVO_DEVOLUCION","EXPEDIENTES_GESTION","EXPEDIENTES_CENTRAL","EXPEDIENTES_HISTORICO","CREAR_EXPEDIENTE","VER_EXPEDIENTE_GESTION","VER_EXPEDIENTE_CENTRAL","VER_EXPEDIENTE_HISTORICO","TRANSFERENCIAS_RESPONSABLE","BUSQUEDA_EXPEDIENTE_GESTION","BUSQUEDA_EXPEDIENTE_CENTRAL","BUSQUEDA_EXPEDIENTE_HISTORICO","APROBACION_TRANSFERENCIA_PRIMARIA","APROBACION_TRANSFERENCIA_SECUNDARIA","CONTACTOS","CREAR_CONTACTO","EDITAR_CONTACTO","ALERTAS","CREAR_ALERTA","EDITAR_ALERTA","TRAMITES","CREAR_TRAMITE","EDITAR_TRAMITE","FLUJOS","CREAR_FLUJO","CREAR_FLUJO_DOCUMENTAL","EDITAR_FLUJO_DOCUMENTAL","FESTIVOS","CREAR_FESTIVO","EDITAR_FESTIVO","CLASIFICACIONES_PQRS","CLASIFICACION_PQRS","CREAR_RADICADO_ENTRADA_FISICO","CREAR_RADICADO_ENTRADA_DIGITAL","DIGITALIZAR_RADICADO_ENTRADA_DIGITAL","RADICADO_ENTRADA_FISICO_RADICADO","RADICADO_ENTRADA_DIGITAL_RADICADO","RADICADO_ENTRADA_FISICO_ANONIMO_RADICADO","RADICADO_ENTRADA_DIGITAL_ANONIMO_RADICADO","PQR_FISICO_RADICADO","PQR_DIGITAL_RADICADO","PQR_FISICO_ANONIMO_RADICADO","PQR_DIGITAL_ANONIMO_RADICADO","EXTENSION_RADICADO_ENTRADA_FISICO","EXTENSION_RADICADO_ENTRADA_DIGITAL","EXTENSION_RADICADO_ENTRADA_FISICO_ANONIMO","EXTENSION_RADICADO_ENTRADA_DIGITAL_ANONIMO","EXTENSION_PQR_FISICO","EXTENSION_PQR_DIGITAL","EXTENSION_PQR_FISICO_ANONIMO","EXTENSION_PQR_DIGITAL_ANONIMO","RADICADO_ENTRADA_FISICO_EN_TRAMITE","RADICADO_ENTRADA_DIGITAL_EN_TRAMITE","RADICADO_ENTRADA_FISICO_ANONIMO_EN_TRAMITE","RADICADO_ENTRADA_DIGITAL_ANONIMO_EN_TRAMITE","VISTA_VENTANILLA_FISICO","VISTA_VENTANILLA_DIGITAL","COPIA_RADICADO_ENTRADA_FISICO","COPIA_RADICADO_ENTRADA_DIGITAL","INCLUIR_EXPEDIENTE_FLUJO_DOCUMENTAL_FISICO","INCLUIR_EXPEDIENTE_FLUJO_DOCUMENTAL_DIGITAL","APROBACION_FLUJO_DOCUMENTAL_FISICO","APROBACION_FLUJO_DOCUMENTAL_DIGITAL","CREAR_RADICADO_SALIDA_FISICO","CREAR_RADICADO_SALIDA_DIGITAL","EDITAR_RADICADO_SALIDA_FISICO","EDITAR_RADICADO_SALIDA_DIGITAL","RESPONDER_SOLICITUD_VISTO_BUENO_DIGITAL","RESPONDER_SOLICITUD_VISTO_BUENO_FISICO","APROBAR_RADICADO_SALIDA_DIGITAL","APROBAR_RADICADO_SALIDA_FISICO","RADICADO_SALIDA_PQR_DIGITAL","RADICADO_SALIDA_PQR_FISICO","EDITAR_RADICADO_SALIDA_PQR_DIGITAL","EDITAR_RADICADO_SALIDA_PQR_FISICO","RESPONDER_SOLICITUD_CONCEPTO_FISICO","RESPONDER_SOLICITUD_CONCEPTO_DIGITAL","RESPONDER_SOLICITUD_CONCEPTO_FISICO_ANONIMO","RESPONDER_SOLICITUD_CONCEPTO_DIGITAL_ANONIMO","RESPONDER_SOLICITUD_VISTO_BUENO_PQR_DIGITAL","RESPONDER_SOLICITUD_VISTO_BUENO_PQR_FISICO","APROBAR_RADICADO_SALIDA_PQR_DIGITAL","APROBAR_RADICADO_SALIDA_PQR_FISICO","IMPRESION_DOCUMENTOS","DOCUMENTOS_PENDIENTES_RECIBIR","ASIGNACION_ENVIOS","GENERAR_PLANILLA","COMPROBANTE_ENTREGA","RECEPCION_FISICA","CAPTURA_RE","CAPTURA_RS","CREAR_COMUNICADO_INTERNO","EDITAR_COMUNICADO_INTERNO","APROBAR_COMUNICADO_INTERNO","COMUNICADO_INTERNO_RECHAZADO","VER_COMUNICADO_INTERNO_PUBLICADO","RESPONDER_COMUNICADO_INTERNO","RESPONDER_SOLICITUD_VISTO_BUENO_COMUNICADO_INTERNO","MODO_LECTURA_COMUNICADO_INTERNO","BUSQUEDA_AVANZADA_CORRESPONDENCIA","PARAMETRIZACION_CORRESPONDENCIA","APP_CONFIG","defaultUrl","_fetchCount","_background","_loader","addFetch","removeFetch","getFileExtension","getFileName","DATETIME_ERROR_STYLE","onlyText","_validations","TipoColumnaMetadato","TipoAsignacionTramiteEnum","TipoEjecucionGestionTramiteEnum","EstadoRadicado","EstadoRadicadoSalida","defaultIMetadatoAsociado","IdMetadatoSubserie","IdTipoColumnaMetadato","Texto","IdCategoriaMetadato","CategoriaMetadato","IdMetadatoFlujo","IdMetadatoPasoFlujoDocumental","IdMetadato","Asociado","Requerido","Busqueda","Orden","TamanoCompleto","Escritura","Lectura","Reglas","ReglaRequerido","ReglaVisible","ReglaListaDesplegable","Mostrar","RegistroMesaAyuda","RegistroVentanilla","RegistroWeb","NombreCategoriaMetadato","Aplicacion","ClassName","KeyField","Codigo","TipoRespuestaPQRS","TipoContacto","TipoTramite","ArchivoxClient","_BaseService","_getAllDepartmentsAsync","_getAllCountriesAsync","_getAllCitiesAsync","TipoContactoService","_BaseService2","_getAllAsync","TipoIdentificacionService","_BaseService3","_getAllAsync2","ensureFetch","_x42","_x43","_ensureFetch","ProjectService","_BaseService4","_getFormfieldDataSourceAsync","procesoxUrl","initSdk","__ioip__sdk__","__global","ProjectSvc","TipoContactoSvc","TIPO_IDENTIFICACION_SERVICE","textSelector","PqrWebService","getRequestInit","_aadGetBlob","_aadGetFile","getMimeTypeFromExtension","_aadBlob","_aadPostFormData","reCaptcha","_aadPostGetText","_getContextAsync","_serviceUrl","_getTramiteMetadataAsosiationAsync","idTramite","_createContactAsync","contacto","aadPost","_updateContactAsync","_getContactEntitiesAsync","_getCurrentContectAsync","_resendAccountVerificationUrlAsync","idContacto","_sigInAsync","_uploadRadicadoEntradaFilesAsync","pqr","_completeInformationRequestAsync","IdRadicadoEntrada","IdRadicadoSalida","_downloadRadicadoSalida","idRadicadoSalida","_aadDownload","_downloadRadicadoSalidaAsAnonymous","_verifyAttachmentsRadicadoSalidaAsync","_downloadAttactmentsRadicadoSalida","_downloadAttactmentsRadicadoSalidaAsAnonymous","_getDocumentAsAnonymousAsync","idDocumentoExpediente","nombreArchivo","_getDocumentSedeAsAnonymousAsync","aadGetBlob","_gerAclaracionesPendientesRadicadoEntradaAsync","idRadicadoEntrada","_decryptsAsync","frase","_readExternalMetadataAsync","_executeAsync","_x44","_getMetadataCategoryByNameAsync","_x45","_getOptionsByIdMetadatoAsync","_x46","_getAllIdentificationTypesAsync","_getIdentificationTypesByIdPersonaAsync","idTipoPersona","_x47","_getAllQuestionsAsync","_getAllPreferentialCareTypesAsync","_getAllDisabilitiesAsync","_getAllGendersAsync","_getChildGendersAsync","_getAllEthnicGroupsAsync","_getAllPersonTypesAsync","_getAllEducationLevelsAsync","_getAllProfessionsAsync","_getAllApplicantTypeAsync","_paginateContactsAsync","_x48","_recoverPasswordAsync","_callee50","_context50","_x49","_changePasswordAsync","_callee51","_context51","_x50","_recoverSecretQuestionAsync","_callee52","_context52","_x51","_recoverSecretSecretAnswerAsync","_callee53","idPreguntaSecreta","respuestaSecreta","_context53","_x52","_x53","_x54","_verifyLinkRecoverSecretSecretAnswerAsync","_callee54","_context54","_x55","_getAnonymousRequestsAsync","_callee55","dtRequest","_context55","_x56","_getMyRequestsAsync","_callee56","_context56","_x57","_getMyRequestsByNumberAndCodeAsAnonymousAsync","_callee57","numeroRadicado","codigoConsulta","_context57","_x58","_x59","_aadDownload2","_callee58","_context58","aadBlob","_x60","_x61","_x62","_downloadRadicadoEntrada","_callee59","_context59","_x63","_downloadAnexosRadicadoEntrada","_callee60","_context60","_x64","_downloadRadicadoEntradaAsAnonymous","_callee61","_context61","_x65","_downloadAnexosRadicadoEntradaAsAnonymous","_callee62","_context62","_x66","_getTramiteMetadataAsync","_callee63","_context63","_x67","_getProcesoxFunction","_callee64","functionId","_context64","aadGetText","getProcesoxUrlWithDomain","_x68","_getProcesoxRuntimeItemsAsync","_callee65","_context65","_x69","_x70","_executeProcesoxFunctionAsync","_callee66","_context66","_x71","_x72","_getClasificacionPQRSAsync","_callee67","tramiteId","_context67","_x73","_x74","_getDescripcionTramiteAsync","_callee68","_context68","_x75","_getEntidadAdscritaMyPendingWorksAsync","_callee69","_context69","_x76","_getEntidadAdscritaAllPendingWorksAsync","_callee70","_context70","_x77","_exportMyPendingWorksAsync","_callee71","_context71","_SaveAnswerFromEntidadAdscritaAsync","_callee72","respuesta","_context72","_x78","_closeEntidadAdscritaAsync","_callee73","idRadicados","_context73","IdRadicados","Observaciones","_x79","_x80","_devolverPqrAsync","_callee74","_context74","_x81","_x82","_closeEntidadAdscritaBySuperUserAsync","_callee75","_context75","aadPostGetText","_x83","_getPreguntasEncuestaAsync","_callee76","_context76","_getRespuestasByIdPreguntaAsync","_callee77","idPreguntaEncuesta","_context77","_x84","_sendSurveyResponsesAsync","_callee78","respuestas","idRadicadoEntrada64","_context78","_x85","_x86","_isSurveyCompletedAsync","_callee79","_context79","_x87","_getPaginatePending","_callee80","_context80","getParameterAsync","getEntidadAdscritaAllPendingWorksAsync","getEntidadAdscritaMyPendingWorksAsync","_x88","_getSignaxServerDocumentById","_callee81","_context81","_x89","_x90","_getDataUserAsync","_callee82","_context82","_createDataUserAsync","_callee83","_context83","_getParameterAsync","_callee84","_context84","_x91","_x92","_getCurrentDraftAsync","_callee85","_context85","_getSessionDraftAsync","_callee86","sessionId","_context86","_x93","_saveRadicadoEntradaDraftAsync","_callee87","radicado","_context87","_x94","_x95","_saveAnonymousRadicadoEntradaDraftAsync","_callee88","_context88","_x96","_x97","_x98","_completeDraftAsync","_callee89","_context89","_x99","_x100","_deleteDraftAsync","_callee90","_context90","_deleteAnonymousDraftAsync","_callee91","_context91","_x101","_completeAnonymousDraftAsync","_callee92","_context92","_x102","_x103","_x104","_createChunkDocumentAsync","_callee93","_context93","_x105","_createAnonymousChunkDocumentAsync","_callee94","_context94","_x106","_x107","_appendChunkContentAsync","_callee95","_context95","aadPostFormData","_x108","_x109","_appendAnonymousChunkContentAsync","_callee96","_context96","_x110","_x111","_x112","_deleteChunkDocumentAsync","_callee97","_context97","_x113","_deleteAnonymousChunkDocumentAsync","_callee98","_context98","_x114","_x115","_getLastRequest","_callee99","_context99","_getPageV2Async","_callee100","_context100","_x116","_x117","_getDocumentsAsync","_callee101","_context101","_x118","_getAttachmentAsAnonymousAsync","_callee102","idAnexoDocumentoExpediente","_context102","aadGetFile","_x119","_x120","_getDocumentFileAsAnonymousAsync","_callee103","_context103","_x121","_x122","_fileName$split$pop","setFiles","pqrWebService","idAnexo","esOficio","getDocumentFileAsAnonymousAsync","getAttachmentAsAnonymousAsync","fetchFiles","lstParametros","campos","archivoAdicional","decryptsAsync","getDocumentsAsync","IdAnexoDocumentoExpediente","EsOficio","CheckAccountErrorComponent","defaultIRadicadoEntradaExtended","Anexos","Anonima","Apellidos","Asunto","AutorizaRespuestaCorreoElectronicoOSitioWeb","CantidadFolios","Ciudad","ClasificacionPQRS","ComprobanteEntrega","NombreArchivo","ServerRelativeUrl","UniqueId","ODataId","Archivo","Archivo64","Tipo","IdDocumentoExpediente","IdDocumentoRadicadoEntrada","IdDocumentoRadicadoSalida","IdDocumentoComunicadoInterno","IdComunicadoInterno","PreventRemove","IsDropZoneFile","ComprobanteEntregado","CopiasRadicadoEntrada","Departamento","CustomMetadata","Direccion","Distribucion","IdAlerta","IdCiudad","IdClasificacionPQRS","IdContacto","IdDepartamento","Identificacion","IdEstadoActual","IdExpediente","IdOficioRemisorioSharePoint","IdPais","IdRadicadoEntradaVinculado","IdRadicadoSalidaVinculado","IdReferencia","IdSeccion","IdTarea","IdTipoContacto","IdTipoDocumental","IdTipoEjecucionGestionTramite","IdTipoIdentificacion","IdUsuarioResponsable","MedioRecepcionEmpresaMensajeria","MedioRecepcionEsCorreoCertificado","MedioRecepcionNumeroGuiaRecepcion","MetadatosAsociados","Nombres","NumeroAnexos","NumeroExpediente","NumeroPreRadicado","NumeroRadicado","NumeroRadicadoSalida","OficioRemisorio","Pais","PqrWeb","PrefiereRespuestaFisica","ProcesoxData","RadicadoEsDigital","RecepcionFisica","Referencia","Seccion","Telefono","TiempoMaximoRespuesta","TiempoMaximoRespuestaString","Tramite","UrlOficioRemisorioSharePoint","UsuarioResponsable","ValoresMetadatos","RepresentaRiesgo","AutorizaPoliticaPrivacidad","AutorizaTratamientoDatosPersonales","Estado","IdEstadoActualRadicadoSalida","AclaracionCompleta","IdTipoRespuestaPQRS","RadicaRepresentante","DenuncianteAnonimo","SolicitanteConDiscapacidad","NombresApoderado","ApellidosApoderado","IdTipoIdentificacionApoderado","IdentificacionApoderado","EmailApoderado","FechaCreacionString","NombreContactoEntidadAdscrita","CorreoElectronicoContacto","NombreEntidadAdscrita","OtroClasificacionPQR","CheckAnonymousRequestComponent","_pqrWebService","showRequest","CodigoConsulta","solicitud","_search","_buildCommand","downloadRadicadoEntradaAsAnonymous","downloadAnexosRadicadoEntradaAsAnonymous","Respondido","Archivado","downloadRadicadoSalidaAsAnonymous","_verifyAttachmentsRadicadoSalida","downloadAttactmentsRadicadoSalidaAsAnonymous","_verifyAttachmentsRadicadoSalida2","verifyAttachmentsRadicadoSalidaAsync","_search2","setShowRequest","_updateErrors","getMyRequestsByNumberAndCodeAsAnonymousAsync","_classPrivateFieldBase","_classPrivateFieldKey","PropertyDataTypeEnum","ChartType","ProgressIndicatorBase","_onRenderProgress","percentComplete","progressBarStyles","ariaValueMin","ariaValueMax","itemProgress","progressTrack","progressHidden","onRenderProgress","itemDescription","IndeterminateProgress","IndeterminateProgressRTL","ProgressIndicator","progressTrackColor","marginBetweenText","allowArrayLike","normalCompletion","didErr","_e2","pad0","PROPS","CalDate","calDate","_step","_iterator","_createForOfIteratorHelper","_step2","_iterator2","DAYS","_m$map2","splitName","_name","regions","_lang","getLanguages","mlang","majorLang","WEEKDAYS","lowerCaseWeekday","lowerCaseWeekdayWithoutDay","grammar","_islamicMonths","_hebrewMonths","_jalaaliMonths","_direction","_counts","_count_days","_timezone","dateMonth","julian","easter","equinox","hebrew","islamic","jalaali","chineseLunar","chineseSolar","bengaliRevised","rule_year","rule_weekday","rule_date_if_then","rule_day_dir_date","rule_bridge","rule_if_holiday","rule_same_day","rule_active_from","rule_active_to","islamicMonths","hebrewMonths","Adar","AdarII","jalaaliMonths","setup","_tokenize","_reorder","_space","cap0","cap","_shorten","season","cycle","solarterm","leapMonth","if","cardinality","Rule","calEvent","omitWeekdays","isNil","isOmitDay","ruleWeekday","isDirBefore","_lock","_filter","_isLeapYear","CalEvent","thisDate","isEqualDate","_step3","_iterator3","pushIt","cdate","toTimezone","toEndDate","_addSubstitute","PostRule","ruleStr","ruleSet","filterActive","dateFn","tmpEv","inYear","tmpEvType","_findEventInYear","_findDisabled2","_year","isoDateStr","_isoDate4","isoDate","_findDisabled","_findDisabled3","_month","filterDisabled","_num","_isoDate2","EasterDate","_easter","gregorian","_toYear","daysPerMonth","gregorianEaster","julianEaster","orthodoxEaster","Easter","_CalEvent","_fn","J2000","B1900","JulianYear","BesselianYear","Coord","elongation","_ra","_dec","SmallAngle","CosSmallAngle","AU","SOblJ2000","COblJ2000","lightTime","JMod","J1900","B1950","JulianCentury","meanSiderealYear","JulianYearToJDE","JDEToJulianYear","jde","BesselianYearToJDE","by","JDEToBesselianYear","J2000Century","illuminated","limb","equ","appSun","α","δ","α0","δ0","sδ","cδ","sδ0","cδ0","sα0α","cα0α","χ","pmod","horner","floorDiv","sincos","ε","toRad","deg","toDeg","modf","float","errorNot3","errorNot4","errorNot5","errorNoXRange","errorNOutOfRange","errorNoExtremum","errorExtremumOutside","errorZeroOutside","errorNoConverge","Len3","abSum","xSum","xDiff","interpolateN","interpolateNStrict","strong","n0","_iterate2","iterate","n1","Len5","interpCoeff","nCoeff","den","_iterate3","_iterate4","numCoeff","denCoeff","_iterate6","len3ForInterpolateX","xN","nearestX","len4Half","lagrange","prod","lagrangePoly","x01","hypot","Angle","angleOrNeg","setDMS","DMSToDeg","degToDMS","_this$toDMS2","toDMS","_modf2","HourAngle","_Angle","_this$toDMS4","_modf4","_modf6","RA","_HourAngle","negOrTimeInSecs","setHMS","_this$toHMS2","toHMS","_modf8","angleFromDeg","angleFromMin","angleFromSec","degFromAngle","secFromAngle","secFromHourAngle","Ellipsoid","flat","φ","boa","su","atan","cu","hoa","e2","_sincos2","sincos2","lat","s2f","c2f","_sincos4","s2g","c2g","_sincos6","lon","s2λ","c2λ","ω","h1","Ecliptic","_base$sincos2","εsin","εcos","_base$sincos4","sβ","cβ","_base$sincos6","sλ","cλ","Equatorial","_base$sincos8","_base$sincos10","sα","cα","_base$sincos12","sexa","_base$sincos14","sH","cH","_base$sincos16","sφ","cφ","_base$sincos18","altitude","_base$sincos20","galacticNorth1950","sdα","cdα","_base$sincos22","sgδ","cgδ","_base$sincos24","galactic0Lon1950","Galactic","az","_base$sincos26","sA","cA","_base$sincos28","_base$sincos30","_base$sincos32","sdLon","cdLon","_base$sincos34","_base$sincos36","galacticNorth","galacticLon0","nutation","Ω","Δψ","Δε","table22A","s0","meanObliquity","approxNutation","sΩ","cΩ","s2L","c2L","s2N","c2N","s2Ω","c2Ω","meanObliquityLaskar","nutationInRA","_nutation2","ε0","Elements","inc","peri","pode","approxAnnualPrecession","eqFrom","epochFrom","epochTo","_mn2","mn","Δαs","Δδs","ζT","zT","θT","ζt","θt","Precessor","ζCoeff","zCoeff","θCoeff","ζ","θ","sθ","cθ","sαζ","cαζ","eqTo","ηT","πT","pT","ηt","πt","EclipticPrecessor","ηCoeff","πCoeff","pCoeff","π","η","sη","cη","eclFrom","eclTo","eFrom","ψ","snp","cnp","eTo","properMotion","mα","mδ","epoch","ecl","_ecl$toEquatorial","toEquatorial","approxPosition","_approxAnnualPrecessi","precess","eclipticPosition","_properMotion","properMotion3D","mr","mrr","zmδ","xp","yp","zp","coeffs","term","Planet","planet","τ","toFK5","Lp","sLp","cLp","L5","B5","trueLongitude","L0","meanAnomaly","ano","eccentricity","apparentLongitude","_trueLongitude2","trueVSOP87","_planet$position","λp","sλp","cλp","Δβ","aberration","_trueLongitude","true2000","_trueLongitude3","trueEquatorial","_trueLongitude4","sε","cε","apparentEquatorial","λ","apparentVSOP87","_trueVSOP","apparentEquatorialVSOP87","_trueVSOP2","_nutation$nutation2","_coord$Ecliptic$toEqu","historic","firstYM","lastYM","prediction","dyear","interp","interpolateX","monthOfYear","LeapYearGregorian","deltaT","ΔT","deltat","_data$firstYM","fyear","fmonth","_monthOfYear","d3","interpolateData","D2R","mean","snap","newMoon","Mp","nfc","M_","meanLunarMonth","meanNew","meanFirst","meanFull","meanLast","new","flc","GREGORIAN0JD","DAYS_OF_YEAR","_t$toHMS2","_base$modf2","_this$getDate","_this$getTime","isCalendarGregorian","_base$modf4","fhour","_base$modf6","fminute","_base$modf8","fsecond","_base$modf10","fms","_base$modf12","_base$modf14","isGregorian","LeapYearJulian","CalendarToJD","_JDToCalendar","JDToCalendar","isJDCalendarGregorian","fromJD","dT","toJD","DayOfYearGregorian","DayOfYearJulian","CalendarJulian","_Calendar","CalendarJulianToJD","_JDToCalendarJulian","JDToCalendarJulian","CalendarGregorian","_Calendar2","CalendarGregorianToJD","_JDToCalendarGregoria","JDToCalendarGregorian","isJulian","_base$modf16","DayOfYear","DayOfYearToCalendar","JDToDate","DateToJD","JDEToDate","fromJDE","DateToJDE","toJDE","MJDToJD","mjd","JDToMJD","DayOfYearToCalendarGregorian","_DayOfYearToCalendar","DayOfYearToCalendarJulian","_DayOfYearToCalendar2","_I","lunarCoord","M0","M1","Caa","lA","lB","bA","bB","rA","rB","meanRefraction","stdh0","stellar","solar","lunar","lunarMean","refraction","h0","corr","stdh0Stellar","_refraction","stdh0Solar","stdh0LunarMean","R4","γ","Qs","t5","t6","t7","t8","t9","t10","t11","W0","W1","W2","W3","W4","W5","W6","W7","W8","sW0","s3W0","s5W0","sW1","sW2","sW3","cW3","sW4","cW4","sW7","cW7","mimas","enceladus","tethys","dione","rhea","pʹ","spʹ","cpʹ","sN","λʹ","subr","e3","e4","e5","titan","iʹ","Ωʹ","siʹ","ciʹ","sΩʹW8","cΩʹW8","g0","ϖ","s2g0","c2g0","eʹ","qq","sq","hyperion","θʹ","bs","_base$sincos38","_base$sincos40","sζ","cζ","_base$sincos42","s2ζ","c2ζ","_base$sincos44","s3ζ","c3ζ","_base$sincos46","sζpη","cζpη","_base$sincos48","sζmη","cζmη","_base$sincos50","_base$sincos52","sχ","cχ","_base$sincos54","scs","ccs","iapetus","ϖʹ","Φ","ϖ0","μ","g1","ls","gs","lT","gT","u1","u2","u3","u4","u5","_base$sincos56","cl","_base$sincos58","su1","cu1","_base$sincos60","su2","cu2","_base$sincos62","su3","cu3","_base$sincos64","su4","cu4","_base$sincos66","slu2","clu2","_base$sincos68","sg1gT","cg1gT","_base$sincos70","su52g","cu52g","_base$sincos72","su5ψ","cu5ψ","_base$sincos74","su2φ","cu2φ","_base$sincos76","s5","c5","mc0","jc0","sc0","dc0","mc2","jc2","sc2","dc2","terms","J0","Δλ","longitude","eq2","june","september","december","march2","june2","september2","december2","Julian","cal","CalEventMap","firstDays","calYear","_CalEventMap","Hijri","Jalaali","nowruz","_toGregorian","vsop87Bearth","_vsop87Bearth","earth","planetposition","Equinox","_season","solstice","floorDate","lunarOffset","moonphase","banglas","CalendarChinese","_epochY","_epoch","sue","ny","midnight","nm","previousNewMoon","inMajorSolarTerm","isLeapMonth","gyear","yearFromEpochCycle","lm","nextNewMoon","gcal","timeshiftUTC","lonDeg","sue1","sue2","m11n","m12","m13","leapSui","solarTerm","UTC_DATES","CalendarKorean","_CalendarChinese","CalendarVietnamese","Chinese","monthNames","weekDays","seasonNames","digitToBangla","digit","banglaToDigit","bangla","MILLISECONDS_PER_DAY","monthDaysNorm","monthDaysLeap","toEpoch","CalendarBengaliRevised","monthDays","fromGregorian","seasonName","BengaliRevised","CalBengali","CalEventFactory","DateFn","ruleFn","postProc","HolidayRule","ruleObj","_excluded","TYPES","Holidays","_getArgs2","getArgs","__conf","__types","setLanguages","__data","__timezone","getTimezones","setHoliday","langs","typeIndex","ruleIndex","ruleLength","filterMap","_dateByRule","_translate","startSorter","typeSorter","ruleSorter","fromTimezone","hdrule","holidayRule","getRegions","getStates","getCountries","__languages","getDayOff","_rule","odate","getSubstitueNames","AD","es","dayoff","AE","AG","weekend","AI","orthodox","AM","AO","AR","AS","AT","ACT","NSW","NT","QLD","SA","TAS","VIC","WA","AW","pap","nl","AX","sv","AZ","BA","sr","BIH","BRC","SRP","BB","BD","bn","BE","fr","BRU","DE","VLG","WAL","BF","BG","BH","BI","BJ","BO","qu","ay","BQ","SE","AP","CE","DF","MA","MG","MS","MT","PA","PB","PE","RE","PR","CU","RJ","RN","RO","RR","RS","SC","SP","TO","BS","BW","BY","BZ","AB","BC","MB","NB","NL","NS","NU","QC","SK","YT","CC","CD","CF","CG","CH","ZH","LU","UR","SZ","OW","NW","GL","ZG","FR","SO","SH","SG","GR","TG","TI","VD","VS","NE","GE","JU","CI","CK","rar","Aitutaki","Atiu","Mangaia","Manihiki","Mitiaro","Palmerston","Penrhyn","Pukapuka","Rakahanga","Rarotonga","CL","TA","CM","CN","CO","CR","CV","CW","CX","CY","CZ","cz","EVANG","HB","HE","MV","NI","RP","SL","SN","ST","TH","EIC","UH","WAK","DJ","so","DK","DM","DO","DZ","EC","QU","EE","EG","EH","ER","CB","FU","GC","LG","LP","LA","TE","CT","EX","GA","IB","MC","MD","ML","NC","PV","RI","VC","am","FI","FJ","FO","fo","MQ","GP","GF","MF","GB","ALD","ENG","NIR","SCT","WLS","GD","GH","GI","kl","GM","GN","GQ","GT","GU","GW","GY","HK","HN","HR","HT","HU","IC","IE","IL","IM","IR","IS","IT","MI","JE","JM","JP","KE","KM","KN","KR","KY","LC","LI","LR","LS","LV","LY","ro","ME","MK","MR","MW","MX","MY","MZ","NA","NG","NO","NZ","AUK","BOP","CAN","Timaru","CIT","GIS","HKB","MBH","MWT","NSN","NTL","OTA","STL","TKI","WKO","WGN","WTC","Buller","CUS","PH","fil","PL","PM","PT","PY","RU","RW","rw","crs","SD","HL","SI","SJ","SM","wo","WO","SR","srn","SV","SX","TC","TD","TN","TT","TW","TZ","UA","UG","US","AK","DC","FL","HI","IN","IA","KS","MN","MO","NV","NH","NJ","NM","NY","ND","OH","TX","VT","VA","WV","WI","WY","UY","VE","VG","VI","VN","VU","XK","ZA","ZM","ZW","sn","kck","ga","Deepavali","Vesak","Holi","Thaipusam","substitutes","_HolidaysParser","HolidaysParser","isHoliday","TruncateDate","getExtension","NewGuid","PrimaryKey","OrderColumn","SortDirection","RecordsFiltered","_ref3$keepCurrentOrig","_ref3$keepCurrentModi","_ref3$theme","_ref3$loading","_ref3$options","_ref3$height","_ref3$width","_ref3$wrapperProps","_ref3$beforeMount","_ref3$onMount","_rt2","_rt4","_u$current4","_i$original","_i$modified","_u$current5","_u$current","_u$current$getModel","_c$current","_u$current2","_u$current3","_c$current2","getOriginalEditor","_ref4$theme","_ref4$loading","_ref4$options","_ref4$overrideService","_ref4$saveViewState","_ref4$keepCurrentMode","_ref4$width","_ref4$height","_ref4$wrapperProps","_ref4$beforeMount","_ref4$onMount","_ref4$onValidate","_ut2","_ut4","_I$current2","_o$current$getModel2","_o$current","_o$current2","_o$current3","_o$current4","_o$current5","_o$current6","_d$current","_o$current7","_d$current2","_d$current3","_I$current","_o$current8","_o$current$getModel","keybindings","KeyMod","CtrlCmd","KeyCode","F10","chord","KeyK","KeyM","contextMenuGroupId","contextMenuOrder","ColorSelector","ExtendedDatePicker","FileUploadItem","setPercentage","maxChunkSize","_props$file","uploadFileAsync","chunkResult","nativeFile","onAppend","_props$file$nativeFil","onCreate","uploadId","onRetry","_ev$target$files$","useRefEffect","refCallback","createRefCallback","useOverflow","onOverflowItemsChanged","pinnedIndex","updateOverflowRef","containerWidthRef","cleanupObserver","observer_1","onResizeWrapper_1","win_1","animationFrameId_1","observeResize","menuButtonRef","menuButton","minContainerWidth","extraWidth","itemOffsetEnd","setOverflowIndex","prevOverflowIndex","overflowIndex","isOverflowing","PivotItem","getLinkItems","pivotId","keyToIndexMapping","keyToTabIdMapping","isPivotItem","pivotItemProps","getTabId","PivotBase","overflowMenuButtonComponentRef","setSelectedKey","linkSize","linkFormat","overflowBehavior","overflowAriaLabel","nameProps","linkCollection","renderLinkContent","itemIcon","renderPivotLink","renderLinkCollection","renderPivotLinkSelectedKey","headerButtonProps","onRenderItemLink","contentString","itemSemantics","linkIsSelected","onLinkClick","renderedSelectedKey","getSelectedKey","renderedSelectedIndex","overflowMenuProps","overflowMenuButtonRef","linkInMenu","overflowMenuButton","alwaysRender","headersOnly","selectedTabId","itemContainer","renderPivotItem","SuggestionActionType","rootIsLarge","rootIsTabs","getLinkStyles","isLinkInOverflowMenu","Pivot","GenericDataTablePaginator","_getPages","_changePage","GenericDataTableComponent","SelectedRows","AllowDateFilter","allowDateSearch","_processColumns","columnsAllowedToOrder","_buildCommandBar","ErrorLoading","ErrorLoadingMessage","hideTools","IsLoading","refreshOnInit","LastItem","Filters","TotalPages","onRefreshDataTable","customSearch","showFooter","onRenderTools","paginator","principalForm","subtitleClassName","pivotItems","_pivotItemClick","hideEmptyImage","emptyMesssage","InitialDate","EndDate","columnClick","allowed","_processRequest","paginationMethodName","paginateAsync","paginationMethodArgs","_buildCommandBarFarItems","onAfterRefresh","onBeforeSend","_changePaginationLength","onChangePivotItem","acceptText","setAcceptText","JavaScriptEditorPanel","JsonEditorPanel","onValidationError","AnnouncedBase","Announced","suggestionsItem","suggestionsItemIsSuggested","actionButton","buttonSelected","suggestionsTitle","suggestionsContainer","suggestionsNone","suggestionsSpinner","suggestionsAvailable","legacyStyles","stylesImport","SuggestionsItem","suggestionModel","RenderSuggestion","onRemoveItem","isSelectedOverride","removeButtonAriaLabel","removeButtonIconProps","suggested","showRemoveButton","SuggestionsItemGlobalClassNames","isSuggested","StyledSuggestionsItem","Suggestions","suggestionsProps","_forceResolveButton","_searchForMoreButton","_scrollContainer","tryHandleKeyDown","currentSuggestionIndex","isEventHandled","newSelectedActionType","currentSelectedAction","selectedActionType","suggestionLength","suggestions","forceResolve","_refocusOnSuggestions","searchMore","_getAlertText","isSearching","suggestionsAvailableAlertText","noResultsFoundText","isExtendedLoading","_getMoreResults","onGetMoreResults","_forceResolve","createGenericItem","_shouldShowForceResolve","showForceResolve","_onClickTypedSuggestionsItem","onSuggestionClick","refocusSuggestions","_onRemoveTypedSuggestionsItem","onSuggestionRemove","scrollSelected","activeSelectedElement","forceResolveText","mostRecentlyUsedHeaderText","searchForMoreIcon","searchForMoreText","moreSuggestionsAvailable","onRenderNoResultFound","searchingText","isMostRecentlyUsedVisible","resultsMaximumNumber","resultsFooterFull","resultsFooter","isResultsFooterVisible","suggestionsHeaderText","suggestionsClassName","suggestionsListId","suggestionsContainerAriaLabel","forceResolveButtonSelected","searchForMoreButtonSelected","searchForMoreButton","forceResolveButton","noSuggestions","spinnerStyles","spinnerClassNameOrStyles","footerTitle","hasNoSuggestions","forceResolveId","searchForMoreId","noResults","_renderSuggestions","hasSuggestedAction","hasSuggestedActionSelected","executeSelectedAction","focusAboveSuggestions","focusBelowSuggestions","focusSearchForMoreButton","onRenderSuggestion","removeSuggestionAriaLabel","suggestionsItemClassName","showRemoveButtons","StyledTypedSuggestionsItem","suggestion","actionButtonStyles","actionButtonSelectedStyles","ValidationState","SuggestionsController","_isSuggestionModel","_ensureSuggestionModel","primaryText","updateSuggestions","newSuggestions","convertSuggestionsToSuggestionItems","currentSuggestion","nextSuggestion","setSelectedSuggestion","previousSuggestion","getSuggestions","getCurrentItem","getSuggestionAtIndex","hasSelectedSuggestion","removeSuggestion","createGenericSuggestion","itemToConvert","deselectAllSuggestions","pickerText","inputFocused","pickerInput","pickerItems","screenReaderOnly","BasePicker","basePickerProps","suggestionElement","SuggestionOfProperType","_styledSuggestions","suggestionsStyles","dismissSuggestions","selectItemFunction","addItemOnDismiss","suggestionStore","canAddItems","addItemByIndex","currentPromise","suggestionsVisible","onRemoveSuggestion","onInputFocus","_userTriggeredSuggestions","onInputBlur","onWrapperClick","completeSuggestion","_completeGenericSuggestion","onBackspace","onSuggestionSelect","onItemChange","changedItem","_updateSelectedItems","suggestionsArray","suggestionsPromiseLike","completeSelection","processedItem","onItemSelected","processedItemObject","processedItemPromiseLike","resolvedProcessedItem","selectionRemoved","itemsToRemove","_shouldFocusZoneEnterInnerZone","_onResolveSuggestions","onResolveSuggestions","updateSuggestionsList","onValidateInput","onEmptyInputFocus","defaultSelectedItems","_ariaMap","selectedSuggestionAlert","suggestionList","resolveDelay","oldState","currentSelectedIndex","forceComplete","selectionAriaLabel","selectionRole","itemsWrapper","comboLabel","renderCustomAlert","getActiveDescendant","renderSuggestions","itemLimit","StyledTypedSuggestions","pickerCalloutProps","onRenderSuggestionsItem","suggestionsLoading","suggestionsExtendedLoading","pickerSuggestionsProps","newEl","_getTextFromItem","maxSuggestionsCount","emptyResolveSuggestions","onEmptyResolveSuggestions","_updateAndResolveValue","_startLoadTimer","_getShowSuggestions","resolveNewValue","cursorLocation","getSuggestionsAlert","suggestionAlertClassName","enableSelectedSuggestionAlert","selectedSuggestion","selectedSuggestionAlertText","alertClassName","suggestionRemovedText","removedItemText","_onSelectedItemsUpdated","getTextFromItem","BasePickerListBelow","TagItem","enableTagFocusInDisabledPicker","suggestionTextOverflow","TagItemSuggestion","TagPickerBase","TagPicker","disabledOverlayColor","KeyWordField","filterText","currentTags","documentTitleProps","boxStyte","RoleComboBox","_mapProps","rolesCO","_onChange","panelProps","IdRol","ToggleBase","controlledChecked","inlineLabel","offAriaLabel","offText","onAriaLabel","onToggleClick","onText","onOffMissing","badAriaLabel","stateTextId","stateText","toggleNativeProps","labelledById","toggleButton","pill","toggleButtonRef","Toggle","pillUncheckedBackground","pillCheckedBackground","pillCheckedHoveredBackground","thumbUncheckedHoveredBackground","pillCheckedDisabledBackground","thumbBackground","thumbCheckedBackground","thumbDisabledBackground","thumbCheckedDisabledBackground","pillBorderColor","pillBorderHoveredColor","pillBorderDisabledColor","DEFAULT_PILL_HEIGHT","DEFAULT_THUMB_SIZE","RoleManager","onChangedToggle","isAssociated","associateRoles","Seleccionado","isAsociated","TeachingLink","showPrimaryButton","onOpenTeachingBubble","SqlEditorPanel","XmlEditorPanel","helpIconTheme","DropdownSizePosCache","_size","displayOnlyOptionsCache","notSelectableOptionsCache","DropdownMenuItemType","_displayOnlyOptionsCache","_notSelectableOptionsCache","_cachedOptions","positionInSet","DropdownBase","selectedKeyPropToUse","defaultSelectedKeys","oldOptions","didOptionsChange","oldSelectedKeyProp","getAllSelectedIndices","selectedKeyPropToUse_1","getSelectedIndexes","useSelectedItemsState","DropdownInternal","_host","_dropDown","_scrollIdleDelay","_sizePosCache","_requestAnimationFrame","activeTimeouts","safeRequestAnimationFrame","changedOpt","_getPlaceholder","_getTitle","_unused","_onRenderPlaceholder","isSmall","_listId","panelStyles","_renderFocusableList","_onPositioned","_onRenderCaretDown","caretDown","_onRenderOption","isItemSelected","dropdownItemHidden","dropdownItemSelectedAndDisabled","dropdownItemSelected","dropdownItemDisabled","dropdownItem","multiSelectItemStyles","multiSelectItem","_onMouseItemLeave","_onRenderItemLabel","optionSetSize","dropdownOptionText","_onRenderMultiselectOption","_hasBeenPositioned","calloutRenderEdge","setSelectedIndex","_onDropdownBlur","_isDisabled","_onDropdownKeyDown","_isAltOrMeta","containsExpandCollapseModifier","_moveIndex","_onDropdownKeyUp","_shouldHandleKeyUp","_onZoneKeyDown","_onZoneKeyUp","_onDropdownClick","_shouldOpenOnFocus","_isFocusedByClick","_onDropdownMouseDown","_optionId","onRenderCaretDown","onRenderPlaceholder","onRenderPlaceHolder","cachedOptions","isRenderingPlaceholder","panelClassName","calloutClassName","dropdown","caretDownWrapper","notifyOnReselect","_copyArray","array_1","stepCounter","dropdownItemsWrapper","dropdownItems","separatorClassName","dropdownDividerHidden","dropdownDivider","dropdownItemHeaderHidden","dropdownItemHeader","titleIsPlaceHolder","titleHasError","highContrastAdjustMixin","highContrastItemAndTitleStateMixin","highContrastBorderState","MinimumScreenSelector","Dropdown","globalClassnames","rootHoverFocusActiveSelectorNeutralDarkMixin","rootHoverFocusActiveSelectorNeutralPrimaryMixin","borderColorError","dropdownItemStyle","dropdownHeaderStyle","selectedItemBackgroundColor","itemSelectors","titleOpenBorderRadius","calloutOpenBorderRadius","DROPDOWN_HEIGHT","c_div","c_grid","c_row","c_col","c_textField","c_combobox","c_Datatable","c_PrimaryButton","c_DefaultButton","c_panel","c_datePicker","c_checkbox","c_dropdown","ScriptComponent","validateModel","compileClass","_customComponent","isTeachingBubbleVisible","setstate","onPrimaryButtonClick","StringResources","TramiteEnum","EditorMetadatosComponent","tempErrors","metadatos","onInitialize","_group","renderCategory","categoria","renderOnlyItemsMarkAsShow","onCheckRender","nombreCategoria","metadato","idCategoria","searchMode","Nota","_evalRule","SiNo","renderNota","Seleccion","Usuario","renderDropDownList","Fecha","renderBoolean","ExpresionRegular","renderRegularExpression","Numero","renderNumber","Moneda","renderMoney","LongitudMaxima","_setValue","_getComboBoxOptions","_getMetadataValues","_processDropDownListOptions","NumberTextField","ValorMaximo","Valor","_isDropDownListField","Opciones","IdOpcionListaDesplegableMetadato","stringIsNullOrEmpty","idMetadato","metadatoAsociado","IdValorMetadato","onChangeValues","_this13","_sort","_this14","LongitudMinima","ValorMinimo","FechaMaxima","FechaMinima","_this15","DropZoneComponent","_this16","_defaultState","defaultColumns","_componentDidMount","useDefaultExtensions","_openDialog","customItems","_this17","_processFiles","_processFiles2","filesToProcess","_files","_loop3","_this18","_onRenderDeleteIcon","_this19","onAllowRemove","_this20","LayoutEditorComponent","_objectId","_tramites","_contexts","_addButtonStyle","_fieldCss","_selectedContacts","_selectedDates","_editorMetadatosComponent","idObjetoAsUrlParam","idObjeto","_defaultDynamic","metadataCategories","metadataOptions","customOptions","contactsComponents","onSelectedItem","selectedContact","Barrio","Celular","Activo","CodigoPostal","Cargo","IdGenero","IdGrupoEtnico","IdAntencionPreferencial","IdDiscapacidad","NombreRepresentante","EmailRepresentante","CargoRepresentante","TelefonoRepresentante","IdTipoPersona","TipoPersona","FechaNacimiento","FechaNacimientoString","IdNivelEducativo","IdProfesion","IdTipoEntidad","ActuaComoApoderado","TipoIdentificacionApoderado","DireccionApoderado","TelefonoApoderado","AutorizaNotificacionEmail","AutorizaNotificacionFisica","AutorizaLlamadaFijo","AutorizaLlamadaCelular","AutorizaTratamientoDatos","_initAsync","_componentWillReceiveProps","mapCities","codigoMetadato","getObjectId","setPanelMetadataRequired","panelMetadata","matadataCode","_initAsync2","_item2","complexItems","itemsTypeSeleccion","customTypeItems","loadCountries","loadDepartments","loadCities","_i2","_item3","_i3","_item4","_result3","getMetadataColumnTypes","metadataService","_compileDynamicFunction","hasFilterRule","hasRequiredRule","hasShowRule","hasValidateItemRule","hasValidateRequiredRule","onValidateRequired","hasOpenItemEditor","onOpenItemEditor","Metadato","CustomMultiSeleccion","getCountriesService","getDepartmentsService","getCitiesService","complexMetadata","complexItemsTypeSeleccion","complexCustomTypeItems","getCategoryMetadataService","Metadatos","_buildDynamicCommandBar","getMetadataOptionsService","readExternalMetadataService","executeCustomCodeService","Contactos","ContactosEntidades","ContactosPersonas","_renderBody","_processFields","onSaveMetadataService","_renderComplexPanel","_renderContactPanel","onChangeErrors","ContactosComponent","getContactsService","serviceMethodName","_renderEditMultipleField","Col1","Col2","Col3","_renderExecutableText","_renderExecutableDate","_renderExecutableComboBox","_renderExecutableMultiSelect","_renderExecutableBoolean","_renderExecutableMetadata","_renderExecutableContactSearch","_getExecutableComboBoxOptions","_isRequired","panelData","_onValidateItem","___index","subCategory","_onOpenItemEditor","_updateExecutableMetadatoFieldValues","metadatoValues","_option","useDate","stringFecha","onlyId","_isComboBox","selectionOption","countryOption","departmentOption","cityOption","customOption","dateToStr","Parrafo","Titulo","_renderEditFieldControl","_renderExecutableFieldControl","_fieldSelected","_getColumnTypeNane","_moveLeft","_removeField","_moveRigth","_addField","_item","_show","_getNextField","leftItem","rightItem","_renderField","_required","_onValidateRequired","_onSelectedRow","IoipBaseComponent","__read","SuppressedError","COMMON_MIME_TYPES","toFileWithPath","withMimeType","FILES_TO_IGNORE","getInputFiles","fromList","getFsHandleFiles","handles","getFile","getDataTransferFiles","toFilePromises","noIgnoredFiles","fromDataTransferItem","fromDirEntry","fwp","fromEntry","fromFileEntry","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","FILE_INVALID_TYPE","FILE_TOO_LARGE","FILE_TOO_SMALL","TOO_MANY_FILES","getInvalidTypeRejectionErr","messageSuffix","getTooLargeRejectionErr","getTooSmallRejectionErr","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","accepts","fileMatchSize","isEvtWithFiles","onDocumentDragOver","composeEventHandlers","isMIMEType","_excluded2","_excluded3","_excluded4","Dropzone","_useDropzone","useDropzone","getFilesFromEvent","isDataTransfer","isChangeEvt","maxFiles","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","useFsAccessApi","onFileDialogCancel","onFileDialogOpen","onDropAccepted","onDropRejected","isFileDialogActive","isDragActive","isDragAccept","isDragReject","fileRejections","_defaultProps$props","acceptAttr","acceptPropAsAcceptAttr","pickerTypes","pickerOptionsFromAccept","onFileDialogOpenCb","onFileDialogCancelCb","fsAccessApiWorksRef","isSecureContext","onWindowFocus","dragTargetsRef","onDocumentDrop","onErrCb","onDragEnterCb","accepted","sizeMatch","customErrors","allFilesAccepted","onDragOverCb","hasFiles","onDragLeaveCb","_fileAccepted2","acceptError","_fileMatchSize2","sizeError","onDropCb","openFileDialog","showOpenFilePicker","ABORT_ERR","isAbort","SECURITY_ERR","isSecurityError","onKeyDownCb","onFocusCb","onBlurCb","onClickCb","isIe","isIeOrEdge","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","onInputElementClick","getInputProps","_ref3$refKey","acceptStyle","rejectStyle","FileSelectorSede","newFiles","maxPerm","allowDrop","renderFiles","nFile","attachments","creationResult","createAnonymousChunkDocumentAsync","appendAnonymousChunkContentAsync","onAttachmentsChanged","allowRemove","_item$data","deleteAnonymousChunkDocumentAsync","deleteChunkDocumentAsync","_o$data","onRemoveAttachment","isSameFile","CurrentChunk","onRetryCompleted","_file$data","ReCaptchaComponent","grecaptcha","stSiteKey","isCaptchaValid","recaptchaToken","gReponse","CreatePqrComponentMode","_service","_classPrivateFieldLooseKey","_clasificaciones","_scriptComponentRef","_recaptcha","_authProvider","_limiteAsunto","_campoObservacion","_currentContact","_procesoxConnector","_parameterConnector","CrearSolicitudComponentInternal","_IoipBaseComponent","_redirectToHome","homeUrl","containsKeywords","itemKeyWords","Valores","tramitesCO","tiposActuacion","tiposDiscapacidad","tiposIdentificacion","tiposSolicitante","tramite","Componente","Funcion","IdTipoAsignacionTramite","TiposContacto","disclaimer","isPersonalData","labelsDenunciante","apellido","tipoIdentificacion","numeroIdentificacion","show_ActuaEn_Discapacidad","clasificacionesPQRS","showClasificacionPQRS","showDescripcionTramite","descripcionTramite","procesoxFunction","procesoxState","procesoxEntryPoint","functionHostValidator","palabrasClave","keywordsDataSource","showCampoOtro","isProcesoxLoading","_classPrivateFieldLooseBase","_this$state$procesoxE","_this$state$procesoxE2","cm","authenticated","firstName","identificationTypeId","lastName","phoneNumber","professionId","Anonimo","anonymousContactType","_yield$Promise$all","_yield$Promise$all2","identifications","applicantTypes","lastRequest","tramites","numeroVinculado","defaultTramiteId","getCurrentContectAsync","anonymous","getSessionDraftAsync","getCurrentDraftAsync","getAllIdentificationTypesAsync","getAllApplicantTypeAsync","getLastRequest","_o$TiposContacto","ContactTypeId","Congresista","processDocuments","IdTipoSolicitante","_onChangeTramite","_getTokenB2C","_model$Anexos","attachment","Cargado","AporteAclaracion","AporteAmpliacion","AporteInformacion","DerechoPeticion","DenunciaFiscal","ReFileUploader","radicadoId","mainFile","deleteAnonymousDraftAsync","deleteDraftAsync","reload","_saveAsync","_this$state$tramite","_this$state$tramite$P","procesoX","GetEntityItems","getProcesoxRuntimeItemsAsync","ExecuteFunction","calllback","executeProcesoxFunctionAsync","ExecuteFunctionAsync","_ExecuteFunctionAsync","GetEntityItemsAsync","_GetEntityItemsAsync","_Paginate","HideVirtualOfficeDefaultPage","renderProcesoxForm","renderDocumentUploader","renderReCaptcha","renderButtons","entityTypeId","_changeModelComboBox","_onChangeCheckboxRiesgo","PalabrasClave","_onChangeClasificacionPQR","_changeModelTextField","showNumeroRadicadoSalida","showSolicitudDenunciante","_changeActuaEn","_changeModelCheckBox","_changePersonaDiscapacidad","renderMetadata","_this$state$tramite$P2","_this$state$tramite2","_this$state$tramite2$","_this$state$tramite$P3","OnRenderRadicadoEntradaMetadata","getTramiteMetadataAsync","getAllCitiesAsync","getAllDepartmentsAsync","getAllCountriesAsync","readExternalMetadataAsync","executeAsync","getMetadataCategoryByNameAsync","getOptionsByIdMetadatoAsync","paginateContactsAsync","_onChangeMetadata","getEntitiesService","getContactEntitiesAsync","getValidator","_changeActuaEn2","_changePersonaDiscapacidad2","_onChangeTramite2","customMetadata","mostrarPanel","_tramite$Props","_tramite$Props2","_tramite$Props3","isProcesox","_yield$Promise$all3","_yield$Promise$all4","clasificaciones","allKeywords","flatKeywords","renderScript","Clasificacion","getClasificacionPQRSAsync","getProcesoxFunction","ProcesoxProjectId","ProcesoxFormVersionId","loadEntryPointV2Async","_onChangeClasificacionPQR2","clasificacion","SeccionUsuarioResponsable","HabilitarOtraClasificacionPQR","_saveAsync2","_this$state$tramite$P4","vMetadatos","isModelValid","resultCaptcha","AnexosDescripcionDocumental","Proceso","_searchRSVinculadoAsync","recaptcha","Borrador","confirmMessage","completeAnonymousDraftAsync","completeDraftAsync","saveAnonymousRadicadoEntradaDraftAsync","saveRadicadoEntradaDraftAsync","SessionId","_searchRSVinculadoAsync2","advanceSearchAsync","Aclaracion","Ampliacion","Informacion","_getTokenB2C2","AtencionPreferencialEnum","defaultIContactoExtended","IdPreguntaSecreta","Password","Password2","RespuestaSecreta","Email2","PrimerNombre","SegundoNombre","PrimerApellido","SegundoApellido","defaultCreateContactComponentState","autorizaPoliticaPrivacidad","autorizaTratamientoDatosPersonales","ciudades","ciudadesCO","departamentos","departamentosCO","paises","paisesCO","tiposIdentificacionCO","tiposIdentificacionCOApoderado","preguntas","generos","gruposEtnicos","discapacidades","atencionPreferencial","tiposPersona","tiposPersonaCO","nivelEducativo","profesiones","mostrarProfesion","mostrarTipoSolicitante","mostrarPanelPoliticaDatos","opcionesSeleccionGrupo","TipoIdentificacionEnum","TipoPersonaEnum","CreateContactNewUserComponent","_checkEmail","_checkPassword","_validationJuridica","_validationNatural","educationLevels","professions","getAllQuestionsAsync","getAllPreferentialCareTypesAsync","getAllDisabilitiesAsync","getAllGendersAsync","getAllEthnicGroupsAsync","getAllPersonTypesAsync","getAllEducationLevelsAsync","getAllProfessionsAsync","emailLabel","confirmEmailLabel","_onChangeComboBox","_onChangeTextField","PersonaNatural","PersonaJuridica","_onChangeNumberTextField","_OnChangeModelDate","Discapacidad","GrupoEtnico","_onChangeModel","_validationAtencionPreferencial","_validationIdentity","CedulaCiudadania","createContactAsync","_onChangeComboBox2","resultTiposSolicitante","getIdentificationTypesByIdPersonaAsync","TarjetaIdentidad","getChildGendersAsync","ChoiceGroupOptionBase","hasImage","imageIsLarge","defaultOnRenderLabel","selectedImageSrc","innerField","imageWrapper","selectedImageWrapper","labelWrapper","choiceFieldWrapper","choiceFieldTransitionDuration","choiceFieldTransitionTiming","getChoiceGroupFocusStyle","hasIconOrImage","getImageWrapperStyle","isSelectedImageWrapper","ChoiceGroupOption","circleBorderColor","circleHoveredBorderColor","circleCheckedBorderColor","circleCheckedHoveredBorderColor","circleDisabledBorderColor","circleBackgroundColor","dotUncheckedHoveredColor","dotCheckedColor","dotCheckedHoveredColor","dotDisabledColor","labelHoverFocusColor","iconOrImageChoiceBorderUncheckedHoveredColor","iconOrImageChoiceBorderCheckedColor","iconOrImageChoiceBorderCheckedHoveredColor","iconOrImageChoiceBackgroundColor","fieldHoverOrFocusProperties","enabledFieldWithImageHoverOrFocusProperties","circleAreaProperties","dotAreaProperties","choiceFieldSize","radioButtonSpacing","labelWrapperLineHeight","getOptionId","findOption","focusSelectedOption","keyChecked","focusProviders","optionToFocus","ChoiceGroupBase","optionsContainIconOrImage","setKeyChecked","keyFocused","setKeyFocused","focusContext","checkedOption","onOptionChange","onRadioFocus","isFocusTrapZoneBumper","focusFromFocusTrapZone","ChoiceGroup","CreateContactComponent","_onChangeOpcionActuaComoApoderado2","_onChangeOpcionActuaComoApoderado","_onChangeOpcionAutorizaNotificacionFisica","_onChangeOpcionAutorizaLlamadaCelular","_onChangeOpcionAutorizaLlamadaFijo","_onChangeOpcionAutorizaNotificacionEmail","PopupPanelComponent","_validationTipoEntidad","_validationApoderado","_validationNotificacionFisica","_validationLlamadasFijo","_validationLlamadasCelular","dtNow","dtValue","dtOneMonthAgo","Now","DescargaComponent","getDocumentSedeAsAnonymousAsync","EditContactComponent","fechaModificacion","_onChangeNumberTextFieldA","$model","updateContactAsync","MyPendingWorksComponentMode","MyPendingWorksComponent","showAclaracion","IdRadicadoEntradaSelected","NombreEstadoLineaHonor","IdEstadoLineaHonor","EstadoLineaHonor","Description","Encrypt","Editable","HabilitarEstadoEntidadAdscita","extensionesPermitiras","redirectConsultRequest","fecha","ShowPanelEnviarRespuesta","ShowPanelDevolverPqr","ShowPanelCerrarRespuestas","DocumentoPrincipal","ObservacionesCierre","ObservacionesDevolver","RespuestaDefinitiva","SelectedItems","opcionesRespuestaDefinitiva","maxLengthFile","NumeroDocumento","FechaEnvio","parameter","camposParametrizable","habilitarEstadoEntidadAdscita","idUsuario","getMethod","_EnviarRespuesta","_clean","procesarCampoParametrizable","_onChangeOpcionPreferenciaRespuesta","onRemove","_onRemoveDocumentoPrincipal","_onChangeDocumentoPrincipal","_onRemoveAnexo","_onChangeAnexos","_DevolverPqr","_CerrarRespuesta","_onSelectedRow2","_buildCommandBar2","_exportToExcel","_exportToExcel2","exportMyPendingWorksAsync","_clean2","_onRemoveAnexo2","_onChangeAnexos2","documents","_onRemoveDocumentoPrincipal2","_onChangeDocumentoPrincipal2","_onChangeLineaHonorComboBox2","tipo","_EnviarRespuesta2","validateFields","Autor","SaveAnswerFromEntidadAdscritaAsync","_DevolverPqr2","devolverPqrAsync","_CerrarRespuesta2","closeEntidadAdscritaBySuperUserAsync","tmp2","tmp3","Option","Key","TipoCampo","_onChangeLineaHonorComboBox","MyRequestsComponentMode","MyRequestsComponent","EnTramite","MyRequests","Aprobado","downloadAttactmentsRadicadoSalida","_downloadRadicadoEntrada2","downloadRadicadoEntrada","_downloadAnexosRadicadoEntrada2","downloadAnexosRadicadoEntrada","_downloadRadicadoSalida2","downloadRadicadoSalida","CustomComponent","setComponent","getReactComponentAsync","RecoverPasswordComponent","_validationsStep1","_validationsStep2","CodigoVerificacion","preguntasCO","showValidationCodeField","_recoverPasswordAsync2","recoverPasswordAsync","_changePasswordAsync2","changePasswordAsync","SatisfactionSurveyComponent","isSurveyCompleted","itemsRender","respuestasSeleccionadas","preguntasRespuestas","isSurveyCompletedAsync","getPreguntasEncuestaAsync","getRespuestasByIdPreguntaAsync","IdPreguntaEncuestaSatisfaccion","IdRespuestaEncuestaSatisfaccion","_onChangeOpcionRespuesta","renderError","renderEncuesta","IdPregunta","_sendSurveyResponsesAsync2","sendSurveyResponsesAsync","basicReduxStore","SignInComponent","Dominio","leyHabeasData","texto","_loadDataAsync","_props$match","_props$match$params","ulrForm","isInProgress","_validarUsuario","_signInAsync","_loadDataAsync2","_validarUsuario2","getDataUserAsync","_sesion","createDataUserAsync","_signInAsync2","sigInAsync","CorreoVerificado","resendAccountVerificationUrlAsync","_sesion2","TipoId","FechaExpiracion","FechaModificacion","VerifiDocumentComponent","part1","part2","part3","part4","part5","documentError","reCaptchaToken","documentLoaded","verifyDocumentId","_verifyDocumentId","getSignaxServerDocumentById","rootReducer","curriedGetDefaultMiddleware","devTools","enhancers","finalMiddleware","middlewareEnhancer","finalCompose","compose2","defaultEnhancers","storeEnhancers","configureStore","traceLimit","App","getContextAsync","hostProviderProps","_onShowConfirmAsync","_onOpenFileViewer","_onGetAccessToken","_onGetHeaders","_onGetUserPreferencesAsync","_onGetAppContext","archivoxApis","_getRoles","tramitexApis","procesoxBaseUrtl","HomeComponent","ArchivosComponent","CrearSolicitudComponent","MyRequestsAnonymous","initializeIcons","speak","GlobalNavButton","ChevronDown","ChevronUp","More","Settings","Share","BlockedSite","FavoriteStar","FavoriteStarFill","CheckMark","ChevronLeft","ChevronRight","Megaphone","Undo","Flag","Pinned","View","AlignRight","AlignLeft","AddFriend","SortLines","CircleRing","Heart","HeartFill","Tiles","Embed","Glimmer","Ascending","Descending","SortUp","SortDown","SyncToPC","LargeGrid","SkypeCheck","SkypeClock","SkypeMinus","StatusCircleCheckmark","MoreVertical","registerIconAliases","DEFAULT_BASE_URL","iconBaseUrl","i5","i6","i7","i8","i9","i10","i11","i12","i13","i14","i15","i16","i17","serviceWorker"],"sourceRoot":""}

      (\r\n type: T\r\n): PayloadActionCreator\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<\r\n PA extends PrepareAction,\r\n T extends string = string\r\n>(\r\n type: T,\r\n prepareAction: PA\r\n): PayloadActionCreator['payload'], T, PA>\r\n\r\nexport function createAction(type: string, prepareAction?: Function): any {\r\n function actionCreator(...args: any[]) {\r\n if (prepareAction) {\r\n let prepared = prepareAction(...args)\r\n if (!prepared) {\r\n throw new Error('prepareAction did not return an object')\r\n }\r\n\r\n return {\r\n type,\r\n payload: prepared.payload,\r\n ...('meta' in prepared && { meta: prepared.meta }),\r\n ...('error' in prepared && { error: prepared.error }),\r\n }\r\n }\r\n return { type, payload: args[0] }\r\n }\r\n\r\n actionCreator.toString = () => `${type}`\r\n\r\n actionCreator.type = type\r\n\r\n actionCreator.match = (action: Action): action is PayloadAction =>\r\n action.type === type\r\n\r\n return actionCreator\r\n}\r\n\r\n/**\r\n * Returns true if value is a plain object with a `type` property.\r\n */\r\nexport function isAction(action: unknown): action is Action {\r\n return isPlainObject(action) && 'type' in action\r\n}\r\n\r\n/**\r\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\r\n */\r\nexport function isFSA(action: unknown): action is {\r\n type: string\r\n payload?: unknown\r\n error?: unknown\r\n meta?: unknown\r\n} {\r\n return (\r\n isAction(action) &&\r\n typeof action.type === 'string' &&\r\n Object.keys(action).every(isValidKey)\r\n )\r\n}\r\n\r\nfunction isValidKey(key: string) {\r\n return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1\r\n}\r\n\r\n/**\r\n * Returns the action type of the actions created by the passed\r\n * `createAction()`-generated action creator (arbitrary action creators\r\n * are not supported).\r\n *\r\n * @param action The action creator whose action type to get.\r\n * @returns The action type used by the action creator.\r\n *\r\n * @public\r\n */\r\nexport function getType(\r\n actionCreator: PayloadActionCreator\r\n): T {\r\n return `${actionCreator}` as T\r\n}\r\n\r\n// helper types for more readable typings\r\n\r\ntype IfPrepareActionMethodProvided<\r\n PA extends PrepareAction | void,\r\n True,\r\n False\r\n> = PA extends (...args: any[]) => any ? True : False\r\n","import type { Action, AnyAction } from 'redux'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n} from './createReducer'\r\nimport type { TypeGuard } from './tsHelpers'\r\n\r\nexport interface TypedActionCreator {\r\n (...args: any[]): Action\r\n type: Type\r\n}\r\n\r\n/**\r\n * A builder for an action <-> reducer map.\r\n *\r\n * @public\r\n */\r\nexport interface ActionReducerMapBuilder {\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase>(\r\n actionCreator: ActionCreator,\r\n reducer: CaseReducer>\r\n ): ActionReducerMapBuilder\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase>(\r\n type: Type,\r\n reducer: CaseReducer\r\n ): ActionReducerMapBuilder\r\n\r\n /**\r\n * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\r\n * @remarks\r\n * If multiple matcher reducers match, all of them will be executed in the order\r\n * they were defined in - even if a case reducer already matched.\r\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\r\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/advanced-types.html#using-type-predicates)\r\n * function\r\n * @param reducer - The actual case reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AsyncThunk,\r\n AnyAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\ntype GenericAsyncThunk = AsyncThunk;\r\n\r\ntype PendingAction = ReturnType;\r\ntype RejectedAction = ReturnType;\r\ntype FulfilledAction = ReturnType;\r\n\r\nconst initialState: Record = {};\r\nconst resetAction = createAction(\"reset-tracked-loading-state\");\r\n\r\nfunction isPendingAction(action: AnyAction): action is PendingAction {\r\n return action.type.endsWith(\"/pending\");\r\n}\r\n\r\nconst reducer = createReducer(initialState, (builder) => {\r\n builder\r\n .addCase(resetAction, () => initialState)\r\n // matcher can be defined outside as a type predicate function\r\n .addMatcher(isPendingAction, (state, action) => {\r\n state[action.meta.requestId] = \"pending\";\r\n })\r\n .addMatcher(\r\n // matcher can be defined inline as a type predicate function\r\n (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"rejected\";\r\n }\r\n )\r\n // matcher can just return boolean and the matcher can receive a generic argument\r\n .addMatcher(\r\n (action) => action.type.endsWith(\"/fulfilled\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"fulfilled\";\r\n }\r\n );\r\n});\r\n```\r\n */\r\n addMatcher(\r\n matcher: TypeGuard | ((action: any) => boolean),\r\n reducer: CaseReducer\r\n ): Omit, 'addCase'>\r\n\r\n /**\r\n * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n * @param reducer - The fallback \"default case\" reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport { createReducer } from '@reduxjs/toolkit'\r\nconst initialState = { otherActions: 0 }\r\nconst reducer = createReducer(initialState, builder => {\r\n builder\r\n // .addCase(...)\r\n // .addMatcher(...)\r\n .addDefaultCase((state, action) => {\r\n state.otherActions++\r\n })\r\n})\r\n```\r\n */\r\n addDefaultCase(reducer: CaseReducer): {}\r\n}\r\n\r\nexport function executeReducerBuilderCallback(\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): [\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n CaseReducer | undefined\r\n] {\r\n const actionsMap: CaseReducers = {}\r\n const actionMatchers: ActionMatcherDescriptionCollection = []\r\n let defaultCaseReducer: CaseReducer | undefined\r\n const builder = {\r\n addCase(\r\n typeOrActionCreator: string | TypedActionCreator,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n /*\r\n to keep the definition by the user in line with actual behavior, \r\n we enforce `addCase` to always be called before calling `addMatcher`\r\n as matching cases take precedence over matchers\r\n */\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addMatcher`'\r\n )\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n const type =\r\n typeof typeOrActionCreator === 'string'\r\n ? typeOrActionCreator\r\n : typeOrActionCreator.type\r\n if (type in actionsMap) {\r\n throw new Error(\r\n 'addCase cannot be called with two reducers for the same action type'\r\n )\r\n }\r\n actionsMap[type] = reducer\r\n return builder\r\n },\r\n addMatcher(\r\n matcher: TypeGuard,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n actionMatchers.push({ matcher, reducer })\r\n return builder\r\n },\r\n addDefaultCase(reducer: CaseReducer) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error('`builder.addDefaultCase` can only be called once')\r\n }\r\n }\r\n defaultCaseReducer = reducer\r\n return builder\r\n },\r\n }\r\n builderCallback(builder)\r\n return [actionsMap, actionMatchers, defaultCaseReducer]\r\n}\r\n","import type { AnyAction, Reducer } from 'redux'\r\nimport { createNextState } from '.'\r\nimport type {\r\n ActionCreatorWithoutPayload,\r\n PayloadAction,\r\n PayloadActionCreator,\r\n PrepareAction,\r\n _ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ReducerWithInitialState,\r\n} from './createReducer'\r\nimport { createReducer, NotFunction } from './createReducer'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * An action creator attached to a slice.\r\n *\r\n * @deprecated please use PayloadActionCreator directly\r\n *\r\n * @public\r\n */\r\nexport type SliceActionCreator